采用高速DSP和CPLD器件实现嵌入式视觉系统的设计

描述

引言

随着计算机科学和自动控制技术的发展,视觉系统被广泛用于工业检测、生物医学、军事侦察等领域。嵌入式视觉系统,是将图像的采集、处理与通信功能集成于单一相机内,从而提供了具有多功能、模块化、高可靠性、易于实现的机器视觉解决方案。同时,视觉传感器需要通过网络化设计完成控制信息、图像数据的通信任务,网络通信装置是视觉传感器的重要组成部分。采用DSP和CPLD作为核心芯片来控制图像采集处理和传输,采集的图像经DSP的处理后,可经以太网传输至微机进一步处理,或与其他视觉系统、自动化检测装置通信,组成分布式监测网络。本系统的设计优点为:

·使用CMOS为图像传感器直接采集数字图像,采用高速DSP和CPLD作为核心芯片来控制图像采集和处理,简化了电路的复杂度,提高了系统的集成度,降低了成本。 在DSP内对采集到的图像实现快速图像的预处理,提高了系统的智能化。

·通过以太网将图像数据传输到联网计算机,利于图像的传输、保存和与其他视觉传感器通信交换数据,组成视觉网络。并可与PLC、机器人和其他自动化装置通信。

系统设计

图1为系统框图,系统通过DSP给CPLD发出一个采集命令,由CPLD控制CMOS图像传感器向FIFO写入图像数据,同时DSP通过DMA将图像转移至SDRAM中并进行图像处理,在处理结束后,将处理的结果通过以太网传给微机或其他设备,对其I/O接口经扩展后,可与PLC等执行装置相连,被外部执行器触发,完成图像的采集处理,达到控制检测目的。

cpld

图1 系统框图

图像采集过程

图像采集过程主要通过DSP给CPLD(ALTERA的MAX II系列 EPM240)发送命令字,包括单帧采集、连续采集等控制命令。每次采集的图像时都先复位FIFO,防止上一次采集过程出错有数据滞留而导致本次采集的图像出错。CPLD采集程序的仿真波形如图2所示,可以看出当采集单帧数据时,CPLD通过控制连续两个VSYNC(帧同步信号)间的FIFO( CYPRESS的CYCY7C4291V)的/WE(写使能信号)低有效来达到图像采集的目的。OV7640每帧图像的时间为33ms(30f/s),工作在黑白模式下,每幅图像数据有300K(640×480),即9.3MByte/s,而DSP读取的速度可以到66.7Mbyte/s,若采用16Bit总线宽度的FIFO,则可达到133Mbyte/s。本系统中由CPLD对图像的行进行计数,为保证图像数据不溢出FIFO(FIFO为128K字节),选取每80行图像数据触发一次DMA传输(DMA选择为外触发模式),每幅图像分成6次传输(共480行数据)。

cpld

图2 CPLD采集程序的仿真波形

图3 带有命令选项的图像接受软件

以太网的图像传输

本系统的以太网设计,采用Wiznet公司全功能硬件协议栈芯片W5100。W5100内有16K的发送/接收缓存,支持TCP、UDP、ICMP、IPV4 ARP、IGMP等协议,本系统中采用TCP/IP协议,接收上位机的命令并执行相应的图像采集和处理任务。Wiznet公司提供了完整的Socket API函数,其工作方式类似于Windows的Socket API,程序在TI公司的CCS集成开发环境下,非常方便用C语言编写。图3是利用VC编写的基于异步Socket的系统软件。在不同的命令代码下上传图像。如果所示输入命令1,可以上传单幅不加任何图像处理的灰度图。

软件流程

系统的软件流程如图4所示。系统初始化后配置网络设置,建立命令Socket,Socket连接成功后处在TCP连接状态中。当接收到命令时,通过中断触发使DSP从W5100读取命令字,根据命令字做出相应的操作,添加图像预处理程序。然后关闭命令Socket,启动数据Socket进行数据传输,发送处理后的图像数据以便上位机进行更高级的图像处理,最终得到用户想要的结果和数据。

cpld

图4 软件流程图

图像采集和处理程序示例

本系统可以应用于视觉系统的多个领域,通过开发标准的软件处理模块,如几何边缘提取、Blob、灰度直方图、OCV/OCR、简单的定位和搜索等,由用户根据实际的测量需求选择相应的处理模块,由上位机编译成相应的固件并下载到系统中,从而实现特定功能的视觉检测。目前系统开发,只能完成特定的几种功能,以下以圆盘的直径检测为例,介绍系统的处理效果。

算法的基本思想是:先对采集的图像进行滤波,再用边缘检测算法检测出圆的边缘,最后再利用圆检测算法算出圆的外径和孔径。

检测基本过程如下:

标定

在能够进行检测之前,系统必须要标定。标定决定图像与物理世界之间的映射关系。因此,把图像中的每个点与一定的物理世界坐标以及反过来建立一一映射。使用一个无畸变的理想二维标定平面来进行标定。首先,可以使用一个标准的网格变换把物理坐标变换到目标平面;然后使用非线性映射把这些中间坐标变换到图像平面。用于变换运算的参数可以通过对一个包含已知位置信息的已知特征标定物成像来获取。非线性变换是通过在确定的测量点之间进行线性插补来实现。

图像预处理

图5为采集到的原始图象。由于CMOS传感器本身的噪声或系统的扰动等其它原因,原始图像中会含有噪声,所以要先对原始图像做低通滤波处理,可采用3×3模板的低通滤波器,或选择一些其它的更为复杂的滤波器,如自适应滤波器。

边缘检测

采用牛顿插值法对图像实现高精度的边缘检测,具体计算步骤如下:

·搜索像边缘过渡区计算向量

根据像边缘的位置沿着灰度值对应的行或列从亮区向暗区搜索,若相邻的两个点的灰度值下降幅度大于阈值(阈值应由实验确定),即认为该点为像边缘过渡区的起始节点,过渡区包含有3~4个节点,把其定义为一维数组,以像边缘过渡区起始节点为首项,沿灰度值矩阵的行或列顺序存放由亮到暗像边缘的灰度值。

·使用牛顿插值函数实现像边缘光强函数软件解调设向量u[m]={u1,u2,。..。..un},m=0,1,。..。...n。

在基点m=0处向前5阶差分为:

D1u0=u1-u0

D2u0=u2-u1+u0

D3u0=u3-3u2+u1-u0 (1)

D4u0=u4-4u3+6u2-4u1+u0

D5u0=u5-5u4+10u3-10u2+5u1-u0

设t为[0.5]内的连续变量,则五阶牛顿向前插值函数为:

v(t)=u0+tD1u0+(t-1)D2u0/2+t(t-1)(t-2)D3u0/6+t(t-1)(t-2)(t-3)D4u0/24+t(t-1)(t-2)(t-3)(t-4)D5u0/120 (2)

·确定像边缘特征点的坐标

式(2)给出了表征象边缘位置的连续函数,对其求二阶导数,即,

d2u/dt2=D2u0+(t-1)D3u0+(12t2-36t+22)D4u0/24+(20t3-120t2+210t-100)D5u0/120 (3)

其零交叉点(d2u/dt2=0)即为特征点。图6为边缘检测的效果图。

直径的计算

通过圆检测算法,计算出圆的外径和内径。限于篇幅,具体算法在此不作详细介绍。

在实验中,使用的f=35mm的镜头,采用LED环形光源从底部同轴照明,图像分辨率为640×480,相面尺寸为3.6mm×2.7mm。系统标定在XY方向上每像素为0.0375mm。对标称外径为15mm,内径为9mm的元件做了10次检测,检测直径的平均外径值为401.6像素即15.06mm,内径为241.3像素即9.049mm。

实验结果

图7为我们设计的视觉传感器样机的系统实物图。其由三部分组成,分别为主板、电源板和CMOS电路板。采用抓包程序Ethereal对数据传输速度进行了测试。我们分别对发送数据量为100kbyte,200kbyte和300kbyte进行了测试,实验结果如表1所示,对于本系统可以达到10f/s的图像传输速度。

图7 系统实物图

cpld

表1 传输数据速度实验结果

结语

本文介绍的的视觉系统,在硬件系统,采用CMOS图像传感器,CPLD时序控制,以及高速DSP和以太网高速数据传输,构成了一个典型嵌入式视觉系统。通过以太网接口可组成分布式视觉检测网络。对于简单的视觉检测任务,系统可满足在线检测的要求。当然,要想最终脱离微机高速的完成复杂的图像处理任务,单DSP还不能满足要求。今后改进是添加FPGA实现FPGA与DSP融合的处理系统以及多DSP并行处理系统,实现高速嵌入式视觉系统。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分