摘要:本文主要针对传统机器视觉系统采集存储速率慢,外围电路连接导致系统不稳定等原因,提出一种新型嵌入式机器视觉系统,其芯片选取TI公司生产的的双核嵌入式芯片TMS320DM8168,实现三路不同分辨率的图像信号的高速采集处理、160 MB/s高速固态硬盘写入及Linux操作系统下人机交互,该系统具有良好的实时性和稳定性,可以为机器视觉的研究和应用提供很好的视频采集与处理硬件平台。
0 引言
机器视觉系统,是一种非接触式的光学传感系统。
它同时集成软硬件,能够自动地从所采集到的图像中获取信息或者产生控制动作。自起步发展到现在,机器视觉已有15年的历史,主要经历了数字电路组成、PC机和输出设备组成、嵌入式三个阶段,其中,嵌入式机器视觉系统依托计算机技术,具有实时多任务操作系统、高效压缩芯片和功能强大的微处理器,可将视频压缩、传输与处理工作全部内置到芯片上,通过内部处理后可以直接连入以太网或广域网,完成网络实时远程监控,是目前的研究热点之一。
在国内外研究中,嵌入式机器视觉系统实现方式主要有三种:
(1)基于标准总线,采用DSP作为运算和控制处理器的系统。DSP芯片虽然能够处理大量信息和高速运行,但其I/O接口单一,不易扩展,控制能力较弱,尚存在一定局限性。
(2)基于DSP+FPGA 的机器视觉系统。FPGA 与DSP的结合,可实现宽带信号处理,大大提高信号处理速度,但FPGA 使用的是硬件描述语言,其算法开发具有很大的难度,功能实现由硬件控制,系统受环境影响较大。
(3)采用ARM微处理器或采用ARM+DSP构建方式的机器视觉系统,这种构建方式人机交互功能强大,集成度高、实时性好、支持多任务,但该系统中ARM 与DSP的数据交换方法仍采用外部电路连接,增加了系统的不稳定性。
综合上述技术方案的优点和缺点,本文提出了一种新型机器视觉系统,实现图像信息的高速采集与存储。
其芯片选取TI公司生产的先进的双核嵌入式芯片,将ARM处理器和DSP处理器集成在一个芯片中,通过软件编程即完成ARM与DSP的协调工作。由该芯片构建开发的机器视觉处理系统,凭借植入Linux系统的ARM 处理器的优异的控制性能,配合DSP 的强大运算处理能力将保证系统拥有良好的实时性和稳定性,可以为机器视觉的研究和应用提供很好的视频采集与处理硬件平台。
1 系统功能
本系统为一高速图像数据采集存储系统,通过软硬件设计能够实现:两路分辨率640×480,帧频60 f/s,12 b/pixel;一路分辨率1 024×1 024,帧频60 f/s,12 b/pixel三路输入信号实时采集。实时无压缩存储。
如图1所示,系统通过串口控制图像传感器,使三路图像数据信号、时钟以及各种同步信号按要求输入,系统依次进行图像信号的采集、数据处理、存储。系统利用自带的接口可实现显示、上位机通信、键盘控制等更多的功能,能够实现友好的人机对话。
2 硬件设计
本系统选取TI 公司达芬奇系列的TMS320DM8168 芯片。此芯片集成了1 GHz ARMCortex-A8、1 GHz TI C674x 浮点DSP、若干二代可编程高清视频影像协处理器、一个创新型高清视频处理子系统(HDVPSS)以及综合编解码器,支持包括高清分辨率的H.264、MPEG-4 以及VC1.并且包含千兆以太网、PCI Express、SATA2、DDR2、DDR3、USB 2.0、MMC/SD、HDMI以及DVI等多种接口,可支持更多功能的扩展和复杂应用。
利用该芯片设计并实现两路或三路不同分辨率的图像信号的采集、处理与显示,硬件原理图如图2 所示。实现该系统的开发与设计所涉及的硬件模块有:图像采集接口模块、图像采集模块、图像存储模块、外围接口模块。
2.1 图像采集接口模块
作为图像传感器和高速采集系统的连接模块,该模块可对USB接口相机或Camera Link接口相机进行图像采集与控制。USB 接口连接十分方便,由于系统具有USB 外围接口,按照USB 标准协议连接即可。CameraLink接口具有开放式的接口协议,使得不同厂家既能保持产品的差异性,又能互相兼容,因此系统中的图像采集接口模块采用了Camera Link接口协议。该模块分别使用了DS90CR288A 、DS90LV049、DS90LV047 完成图像传感器的控制、图像信息的采集及图像传感器与图像采集系统的双向通信。
2.2 图像采集模块
TMS320DM8168 的HDVPSS(HD Video ProcessingSubsystem)提供了视频输入接口和视频输出接口。视频输入接口提供了外部图像设备(如图像传感器、视频解码器等)的接入。
HDVPSS可支持高达3 个60 f/s的1080p通道、同时支持16 个通道的CIF 数据流的H.264 高画质D1 编码与8通道D1解码;支持2个独立的视频捕捉输入端口,每个视频输入端口支持缩放、像素格式转换。两个视频输入捕捉端口均能以1个16 b输入通道(带分离的Y和Cb/Cr输入),或2个时钟独立的8 b输入通道操作(带交织的Y/C数据输入)。个视频输入端口能以24 b模式操作以支持RGB捕捉。所有采集模式捕捉时钟高达165 MHz,可满足高速率的图像采集。
高清视频处理子系统(HDVPSS)有两个独立视频捕捉输入端口VIP0与VIP1.VIP0可配置成24 b、16 b、和两个独立的8 b 模式,VIP1 可配置成16 b、和两个独立的8 b.从捕捉频率和各种配置模式可看出,针对不同的流量,可以有多种实现方法。为了存储设计简单,本方案将VIP0配置为24 b进行采集。在此模式下,流量为165M × 24 8 = 495 MB/s,可以满足流量要求。
从捕捉时钟可知,每次采集间隔在1 165M,约为6.1 ns.经计算,也为了设计方便,拟采用三个帧频均为200 f/s的Base配置的Camera Link相机,帧频控制均为外部触发方式,该Camera Link相机输出两个像素,每像素12 b,即2×12 b,刚好可以和VIP0的24 b匹配采集。以三路信号分时采集为例,如图3所示,3路信号的采集方法为3个相机轮流采集,即一个循环内每个相机各采一帧,这就需要实现3路分时采集的时序信号。由定时器产生一个1/200 s的脉宽,经延时环节使帧频高电平分时分路送入三个相机;3路采集信号时序关系为一个相机不进行延时,一个相机延时1/200 s,一个延时2/200 s.
相机通过DS90LV047A收到指令后,将拍摄到的图像数据分为4路LVDS数据信号和1路LVDS时钟信号,通过接口连接器MDR26 传输到DS90CR288A;DS90CR288A 将串行数据转换成28 路并行信号和1 路随路时钟信号,并传送至TMS320DM8168视频捕捉端口VIP0进行采集。
2.3 图像存储模块
从上述设计方案,系统存储速率约为160 MB/s,数据量较大,可选择大容量、高速的固态硬盘,通过其SATA2接口写入。
数据采集结束后,通过配置HDVPSS子系统将数据送入VPDMA,转入DDR 内存,当DDR 内存的数据量达到设定的数据量时产生中断,中断发生后,根据存放地址启动内存和固态硬盘之间的DMA 传输,将采集的图像通过SATA2接口存储在SSD上,实现数据存储。
然后启动定时器产生下一个帧频脉冲,开始下一周期的数据采集。
外部扩展存储器选取系统支持的DDR3(1 600)存储器。按照系统存储控制器位宽32 b 来算,内存速率可达32/8×1 600M=6.4 GB/s.在该模式下,采集和存储可并行处理。缓存所采集的数据移动到DDR3内存,其速率远高于端口采集的每秒数据量。因为该方案的采集方式是每帧轮流采集,并且帧内数据已按顺序紧凑排列,可大幅减少数据的重排工作,仅需去除一些辅助数据。采集系统将其余相关信号全部置成一帧一行的形式,让相机的时钟信号与系统采集端口的时钟信号通信,图像信号前有少量的辅助数据,设置DMA起始地址时直接跳过辅助数据。所以在本系统几乎不运行程序的情况下,固态硬盘可以少有80%的时间占据DMA控制权进行内存图像数据的存储。按所选取的硬盘的持续写入速率250 MB/s 来算,250×0.8=200 MB/s 大于160 MB/s,所以1 s采集的数据可以进行实时存储。数据上传后,可以选择清除原有数据,释放硬盘空间。
2.4 外围接口模块
基于TMS320DM8168芯片丰富的外设接口,本系统能够灵活的进行外部接口设计来控制外围设备,并实现与外部处理器的通信功能。根据需求可供选取的接口有:2 个具有GMII 和MDIO 接口的千兆位以太网MAC(10 Mb/s,100 Mb/s,1 000 Mb/s);2个具有集成2.0 PHY的USB端口;双DDR2/3 SDRAM接口等,可参考图2.
TMS320DM8168 的两个USB 口可满足将采集的图像数据上传给上位机时连接键盘鼠标,LCD、VGA 接口可用来直接显示图像。串口亦可用来同上位机进行通信,且可用来控制本设计方案用到的Camera Link 相机。千兆网接口以其超高的速率可满足图像数据的高速传输。
上述技术的实现主要通过软件编程驱动外设接口来实现,具体方案见软件设计。
3 软件设计
本系统采用Linux操作系统,带有友好的界面,使操作更加灵活自如,能运行多任务。可以通过界面进行相机控制、图像的采集、停止、显示、图像上传等。这部分的开发可由两部分组成,移植和自主开发。软件设计如图4所示。
3.1 移植的程序
移植的程序包括Linux内核、网卡驱动、USB 2.0驱动、LCD驱动、串口驱动、VGA驱动、SATA2驱动。在这个方面,TI 公司提供了很好的支持,有专门针对DM8168的Linux操作系统,版本为Linux 2.6.37,可以通过TI公司提供的Linux EZ 软件开发套件(EZ SDK)进行开发。
3.2 自主开发的程序
3.2.1 驱动程序
为了规范地在Linux操作系统下操作,图像采集的电路部分需要图像采集应用程序相关的驱动程序进行支持。采集电路可分为多个功能模块分别进行驱动程序的编写,其中包括相机采集驱动(相应于VIP0进入数据后的操作);控制驱动(相应于对Timer进行控制);如果要根据外界环境改变相机工作状态,还需该部分驱动支持。采集驱动实现open,close 方法。控制部分实现open,close,ioctl 方法。自适应速率调整要实现open、close、ioctl、read 方法。在/DEV 目录下分别建立设备节点,然后应用程序通过对设备节点进行操作。
3.2.2 应用程序
应用程序的开发拟采用QT开发工具。应用程序拟设计成一个多线程程序,一个主线程,一个自适应调节参数线程,应用程序主要实现采集程序,停止,显示,配置,上传程序,分别对应于相应按钮。
采集按钮相应程序调用设备节点的open方法,open方法中对相应硬件进行配置,注册中断程序,启动Timer开始采集。流程如图5所示。
因为系统已经带有串口驱动,配置程序可以直接对串口编程。自适应环境速率调整程序由主界面程序开启一个新线程,该线程通过相应设备节点读取数据,判断是否调整,如需调整,通过上面所述串口设备节点或者控制设备节点进行重设。
4 结语
本文所构建的机器视觉系统是一个具有操作系统的独立、可控制的小型多功能系统,通过硬件设计和软件设计两部分实现,其功能模块包括视频图像采集与处理、视频图像存储、视频图像通信和视频图像显示等模块。采用先进的双内核嵌入式处理器,将多路图像传感器获取的视频图像信号高速并行采集,并根据需要进行图像无损压缩和图像融合,数据可大容量实时存储,并通过多种接口与上位机通信,具有友好的人机交互界面,可驱动多种显示屏幕完成高清显示和信息回放等功能。
由于该平台具有Linux操作系统,无需上位机即可完成系统参数设置、功能选择等操作。该系统可为机载、弹载、车载光电系统完成高速扫描、快速探测、主动识别、跟踪任务提供所需要的高清目标信息,并有望在平安城市、安防行业、工业控制、医疗教育、物流管理、电网运行、智能家居、智能汽车、食品安全等多领域得到应用。(作者:魏世秀,王烨,周花)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。