微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的嵌入式智能相机的研究

基于DSP的嵌入式智能相机的研究

时间:04-24 来源:互联网 点击:

摘要:智能相机是一种小型的视觉检测系统,主要运用于工况监视,产品检验和质量监控等领域,能够提高生产制造的柔性和自动化程度。与传统的PC式视觉系统相比,它具有易学、易用、易维护、易安装等特点。在此主要是提出了一种嵌入式智能相机的设计方案,它是以ADSP-BF537为系统控制核心,以CMOS传感器为图像采集装置,结合Oscar软件框架和OpenCV进行软件设计。最后通过一个检测条形码的应用来说明研究出来的智能相机的可行性,并且通过实验数据来说明智能相机运行速度和工作效率。
关健词:智能相机;ADSP-BF537;Oscar;OpenCV

0 引言
目前,国内智能相机的开发还是处于起步阶段,但是它却在现实中拥有广泛的应用。典型的机器视觉系统是一般由光源、CCD或CMOS相机、图像采集卡、图像处理软件及一台PC机构成。其中,图像的采集功能由CCD/CMOS相机及图像采集卡完成;图像的处理则是在图像采集/处理卡的支持下,由软件在PC机上完成。由于基于PC机的机器视觉体积庞大、结构复杂,其应用系统的开发周期长、成本高,因此智能相机就应运而生。本文提出了一种基于ADSP-BF537嵌入式智能相机的设计方案,使它能够达到机器视觉检测低成本,高速率,高精度,易操作,小体积的目的。

1 硬件平台设计
嵌入式智能相机是一个微小的视觉检测系统,包含图像采集装置、图像处理算法、图像处理软件和通信控制装置。图像采集装置主要是获取图像数据,使用的是CCD/CMOS传感器。图像处理主要是在DSP中进行,是对图像进行预处理,识别、检测图像特征,分割图像特征,提取图像特征,最后得到图像处理结果。这主要是在数字信号处理器(DSP)中完成。图像通信装置主要是对图像处理过程进行控制,并且实现图像处理结果输出。图1为所设计智能相机的结构框图。

在本设计中,相机采用了ADI公司的ADSP-BF537作为控制核心。ADSP-BF537是具有较高性能的系列成员,拥有容量更大的嵌入式存储器,从而可满足诸如视频安全/监控和基于工业环境的分布式控制/工厂自动化应用等嵌入式应用的较高吞吐量需求。ADSP-BF537提供了卓越的性能,并专为诸如远程监视设备、VoIP、销售点终端以及生物特征识别/安全应用等低成本连接设备而设计。作为整个系统的核心,ADSP-BF537具有接口丰富,性能优良,价格便宜的特点,并具有强大的多媒体数据处理能力。
在图像采集模块中,相机使用了CMOS图像传感器。与CCD图像传感器的高成本相比,CMOS图像触感器具有低功耗,低成本的优势。随着CMOS传感器制造工艺的发展,其性能将会越来越接近CCD传感器。相机通过CMOS图像传感器采集图像数据,并且在DSP通过I2C的控制下,把数据传入DSP。
在通信控制模块中,相机通过以太网、串口RS 232,I/O端口与外部进行连接,从而实现相机的数据输出与控制。以太网用以实现上位机与相机的通信与控制,而I/O端口用来外部触发控制相机或者实现相机向外部输出控制信号。串口RS 232主要是用来不通过仿真器来烧写U_Boot引导程序和uClinux镜像文件。

2 软件设计
相机的软件程序设计使用了一个Oscar(Open source camera)框架平台和OpenCV视觉库,从而使软件设计更加的简单、方便、快捷,图2为Oscar框架与OpenCV的关系图。Oscar为软件的设计提供了简易的应用方法模块,并且隐藏了硬件接口的复杂性,从而使软件设计者不需要关心底层硬件程序的设计。而OpenCV构建了一个简单易用的计算机视觉框架,帮助并发人员更便捷地设计更复杂的计算机视觉相关的应用程序。


2.1 Oscar框架
Oscar软件框架嘲是为硬件平台的应用而抽取出来的。Oscar框架包含17个模块,如表1所示,每个模块都有相应的功能和所需的平台支持。在程序的编译过程中,应用程序只需要加载它需要的应用模块,从而节省了程序空间,提高了运行效率。

下面主要介绍几个重要的模块:
Bitmap模块提供从文件系统中读取/写入bmp图片的函数,支持24位BGR和Greyscale图片。
Cam模块实现了与CMOS传感器的交互。它包含了读/写相机寄存器和捕捉图片的功能,同时也能够对双缓冲器和进行自动管理。在目标板上,Cam模块直接与CMOS传感器的帧捕捉设备驱动相连接。它把API方法传输到IOCTL。在主机上,这个模块保存了传感器的一个寄存器集,并且时刻让它保持更新。由于必须从文件系统中加载,因此Cam模块使用一个文件名来读取得正确的图像文件区,并且通过Bitmap模块来从文件系统中加载图像。
Ipc模块提供了一种在相同应用程序进程间做内部交互的简单方法。这个交互是以客户-服务机的方式进行的。交互通道一面是发送读/写请求到客户端,然后服务端响应这些请求。这个通道使得低优先权的服务端和客户端的人机界面进程之间交互不会阻塞。两个进程都需要在一系列的参数和大小上保持一致。通过参数识别,通信才会执行。Ipc模块在文件系统中通过AF_UNIX套接字发送请求和相应信息。每个这样的套接字代表的是一个全双工接口,被称为一个Ipc通道。通过Ipc通道配置号的注册,从而允许同时与多个进程的交互。图3,图4为Ipc模块的读与写。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top