您的位置:控制工程论坛网论坛 » 仪器仪表 » 基于以太网的嵌入式视觉传感器系统中的应用

yungg

yungg   |   当前状态:离线

总积分:740  2024年可用积分:0

注册时间: 2008-12-05

最后登录时间: 2009-11-06

空间 发短消息加为好友

基于以太网的嵌入式视觉传感器系统中的应用

yungg  发表于 2009/8/21 15:36:15      798 查看 0 回复  [上一主题]  [下一主题]

手机阅读

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

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



图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行数据)。

 


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

 

  以太网的图像传输
  本系统的以太网设计,采用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,可以上传单幅不加任何图像处理的灰度图。

 


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

 

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

 


图4 软件流程图

 

  图像采集和处理程序示例

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

  算法的基本思想是:先对采集的图像进行滤波,再用边缘检测算法检测出圆的边缘,最后再利用圆检测算法算出圆的外径和孔径。
  检测基本过程如下:
  标定
  在能够进行检测之前,系统必须要标定。标定决定图像与物理世界之间的映射关系。因此,把图像中的每个点与一定的物理世界坐标以及反过来建立一一映射。使用一个无畸变的理想二维标定平面来进行标定。首先,可以使用一个标准的网格变换把物理坐标变换到目标平面;然后使用非线性映射把这些中间坐标变换到图像平面。用于变换运算的参数可以通过对一个包含已知位置信息的已知特征标定物成像来获取。非线性变换是通过在确定的测量点之间进行线性插补来实现。
  图像预处理
  图5为采集到的原始图象。由于CMOS传感器本身的噪声或系统的扰动等其它原因,原始图像中会含有噪声,所以要先对原始图像做低通滤波处理,可采用3×3模板的低通滤波器,或选择一些其它的更为复杂的滤波器,如自适应滤波器。

 


图5 原始采集图片

 

  边缘检测
  采用牛顿插值法对图像实现高精度的边缘检测,具体计算步骤如下:
  ·搜索像边缘过渡区计算向量
  根据像边缘的位置沿着灰度值对应的行或列从亮区向暗区搜索,若相邻的两个点的灰度值下降幅度大于阈值(阈值应由实验确定),即认为该点为像边缘过渡区的起始节点,过渡区包含有3~4个节点,把其定义为一维数组,以像边缘过渡区起始节点为首项,沿灰度值矩阵的行或列顺序存放由亮到暗像边缘的灰度值。

更多内容请点击:http://www.chuandong.com/tech/index.htm

1楼 0 0 回复