随着计算机处理器速度和内存容量的持续增长,人工智能领域的各项技术也正在快速向前推进,机器视觉日益凸显出其重要性。在智能硬件快速发展的今天,为可移动机器人等自动化设备配备视觉系统变得可能而且必要。视觉系统的主要任务是对图像进行采集,然后根据需求做必要的处理,最后将处理结果反馈给主机或决策者,从而完成智能感知的任务[1-2]。如基于图像的避障导航、基于视觉的无人驾驶以及基于图像学的3-D测绘等,都展示了机器视觉的智能性及其在现实世界中的实用性。
然而,由于不同的设备所针对的目标不同,导致大部分视觉系统都是针对特定目标搭建的专用系统[3],可移植和扩展性受限。此外,由于在一般设备上配备视觉系统的成本极高,且业内并没有对此形成统一标准,使得机器视觉的应用并没有得到普及和推广。针对以上这些问题,本文设计了一种无线视频传输和图像处理平台,该平台可以方便地应用在需要安装视觉系统的机器人和自动化系统中,大大简化了视觉系统的设计流程,降低了开发成本,为机器视觉的应用提供了有利的环境支持。
1 视觉平台的整体框架一般的视觉系统主要由图像信号的采集和图像信号的处理2大模块组成,可以根据应用场景对采集到的图像进行必要处理。本文所设计的无线图传视觉平台主要包括硬件系统、软件系统以及可以进行图像处理的OpenCV开发环境,能够完成图像信号的采集、数据的压缩与无线传输、数据信号的解压还原和图像处理等任务,其整体框架及信号的流向如图 1所示。该平台在Linux环境下开发,可以实现图像的无线传输,且基于OpenCV的图像处理环境可以根据实际需要调用具体的处理方法,完成对远程图像的实时处理,为机器视觉的应用提供了便利的开发平台。
2 视觉平台的设计与实现 2.1 图像信号的采集信号采集模块主要负责采集实时场景,并将图像信号转变为光电信号,从而将物体的可视化图像和特征转化为能被计算机处理的数字化信息[4]。图像采集模块需要满足能够及时、准确地采集清晰图像的要求,并且将图像信息以一定的数据格式输出。本文采用数字相机来实现图像信号的采集,信号采集模块配备高清CMOS摄像头,主要参数见表 1。该摄像头模块具有体积小、接口友好及可调焦等优点,如图 2所示。摄像头模块将采集后的图像数据压缩为MJPEG格式,MJPEG(motion JPEG)是在JPEG基础发展起来的动态图像压缩技术,它只单独地对每一帧图像进行压缩,每一帧都分别使用JPEG格式编码,而基本不考虑视频流中不同帧之间的变化,得到的视频图像清晰度高且较好地保留了图像的有效信息。本文中将拍摄到的连续图像源源不断地发送到信号传输链路中,在接收端就可以获得连续的图像数据,然后根据JPEG格式解压复原,从而实现连续图像的传输。
主要特性 | 参数 |
输出格式 | MJPEG、YUYV |
输出接口 | USB |
视角 | 90度 |
分辨率(30 fps / 60 fps) | 1 280×720 / 640×480 |
传感器类型 | CMOS |
尺寸 | 30 mm×25 mm |
2.2 图像信号的传输
信号传输模块实现将采集到的图像信号通过无线的方式,传送到可以进行图像处理的接收端。本文选用了基于Wi-Fi(wireless-fidelity)的无线传输方式。Wi-Fi网络是由访问节点(access point,AP)和结构站点(station)组成的无线网络,具有传输速度高、通信距离长以及兼容性好等优点。在本文的数字图像传输中,Wi-Fi的传输速度可以保证高清图像的实时性,同时,它作为传统的有线局域网络的延伸,可以方便地将网络中的设备连接起来。因此任何一台连接到此网络上的设备都可以访问该网络上开放的资源,其工作原理相当于一个局域网的拓扑。无线局域网络的拓扑结构如图 3所示。
图像信号的传输链路包括信号发送和信号接收2个部分,传输过程如图 4所示。本文中信号发送部分使用CHD-T5 Wi-Fi模块,模块使用MIPS24KE内核,主控芯片采用雷凌科技的RT5350F,无线速率达到150 Mbps,如图 5(a)所示。集成的发送模块支持UVC标准摄像头,可将USB接口中的数据发送到无线链路中,从而使得网络中的其他设备可以根据需要来访问图像数据。发送模块有2种工作模式:AP模式和STA模式,既可作为热点,也可作为终端连接到路由器。使用AP模式时,模块相当于是一个小型路由器,其他终端接收设备可以通过授权接入到该模块。使用STA模式工作时,模块作为一个终端通过搜索热点信号,授权后连入已经搭建好的无线网络中。在同一个网络中的其他主机和终端设备都可以访问模块的网络数据,从而将图像信号传到其他的设备上。
信号接收部分是插接在图像处理板上的USB无线网卡,经过配置后可以通过无线网络连接图像发送模块,从而实现图像信号的接收。图像接收模块使用的是EDUP的迷你USB无线网卡,该模块采用Realtek 8188cus芯片,使用802.11 n标准无线传输技术,传输速率高达150 Mbps,轻巧隐形工艺设计,模块尺寸只有18 mm×14 mm×6 mm,如图 5(b)所示。
2.3 数字图像的处理 2.3.1 图像处理的平台环境搭建图像信号处理模块主要包括信号处理硬件平台、嵌入式Linux操作系统以及OpenCV开发环境。系统硬件平台的选用原则是:处理器计算能力有适量冗余、系统架构升级方便、集成度高以及接口友好等。本文选用了基于ARM架构的卡片式电脑平台。该平台采用的是的飞思卡尔(Freescale)的四核Cortex-A9架构的i.MX6Quad主控芯片,芯片为1.2 GHz主频,平台具备2GB DDR3内存和8GB EMMC Flash存储空间,视觉系统硬件平台的主要特性见表 2,其功能模块及接口如图 6所示。
主要特性 | 参数 |
尺寸 | 100mm×72mm×20 mm |
CPU | Freescale i.MX6Q(四核) Cortex-A9 |
功耗 | <4W(5V-800mA,开机峰值) |
USB OTG | 1路USB_OTG 2.0下载接口 |
LCD接口 | 接口40P的FPC接口 |
可扩展接口 | 2路USB、15路可中断IO口、1路I2C总线、2路CAN总线、3路串口、1路SPI、1路SDIO、2路PWM |
操作系统的选用原则是:稳定性高、开发方便、易操作以及方便升级等。结合本系统平台的设计要求,选择Linux作为本平台的操作系统。嵌入式Linux系统是对Linux发行版的系统进行适当裁剪后,可以运行在嵌入式处理器上的系统,由一个内核及一些根据需要进行定制的系统模块组成,保留了多任务、多进程的系统特征[5-7]。嵌入式系统的一般开发流程如图 7所示。智能视觉平台选用了Linux发行版的Ubuntu系统,支持×86/×64、ARM和PPC架构。
另外,为了在Linux上使用USB无线网卡,需要在系统上安装相应的驱动程序,从而获得图像传输链路中的图像数据。安装驱动时,进入驱动程序的…/drivers目录下,执行make和make install命令,或者使用驱动目录下的install.sh批处理命令,即可将驱动程序安装到系统中。驱动安装完成后,可以使用ifconfig命令来查看网卡的信息,如图 8所示。
为了在视觉平台上进行图像处理,本文在Linux系统下搭建了OpenCV开发环境。OpenCV计算机视觉库(open source computer vision library)是一个开源的跨平台视觉库,具有轻量级而且高效的特点,实现了计算机视觉方面用于图像处理的大部分算法。OpenCV移植至ARM板上的流程如图 9所示。
本文选用的OpenCV版本为比较新而且稳定的版本2.4.9 ,为了使OpenCV可以在ARM的平台上使用,需要对其源码进行编译,得到可以在相应平台上运行的文件,一般使用Cmake工具进行编译操作。使用Cmake工具配置编译参数,设置C和C++编译器为之前配置好的arm-linux交叉编译链,然后Cmake会自动根据配置生成编译所需要的Makefile[8]。编译完成之后,由于本文中用的是arm工具链编译的,所以生成的OpenCV库可以在对应的arm平台下使用。编译后生成的文件主要有bin、lib和include等目录,其中lib目录下的文件即为OpenCV应用程序调用的动态链接库。在图像处理板上运行OpenCV程序时,将编译好的库拷贝至处理板上的库目录,默认可以放在系统文件中的/usr/local/lib目录或者/usr/lib目录下,配置环境变量LD_LIBRARY_PATH和LIBRARY_PATH,令其包含库文件所在目录。在include目录下存放的是OpenCV库被调用时所需要的头文件,这里将include目录下拷贝至用户include目录,一般也放在/usr/include或者/usr/local/include目录下面。
2.3.2 图像信号的复原图像复原的流程大致如图 10所示,图像信号接收端从无线通信链路中获取的数据是MJPEG视频流,在接收端需要对图像信号进行复原与显示。根据TCP协议编程可从socket中获得数据流,网络数据流的获取主要包括设置服务器IP和对应端口、网络协议选择、网络连接和接收数据。接收到的数据是以MJPEG格式存储的图像,在接收端只需要从数据流中将各副图像分割开来,得到JPEG格式的图像。然后使用OpenCV的imread函数进行解压,将JPEG格式的图像解压成OpenCV内部可使用的Mat矩阵,再使用imshow函数将图像进行显示。
3 视觉系统平台试验无线图传视觉系统平台搭建完成后,可以实现将远程视频通过无线的方式传送到接收端,然后在接收端可以对图像进行相应的处理。为了验证平台的性能,进行了图像接收和处理的开发试验。首先,打开视频采集设备和图像接收设备,让摄像头工作在AP模式。然后在接收终端设置无线网卡连接至摄像头网络,对收到的图像进行复原。
另外,对复原的图像进行图像处理实验,本文使用OpenCV库demo中的Camshift[9-10]例程来做对象跟踪。CamShift (continuously apative meanShift) 算法,即连续自适应MeanShift[11]算法,是一种运动跟踪算法,它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。其基本思想是对视频序列中的所有图像都做MeanShift运算,并将上一帧结果作为下一帧运算初始值。在OpenCV中,Camshift算法的实现可分为BackProjection、MeanShift和CamShift 3个步骤。本文将无线链路中复原的图像作为图像处理帧的来源,根据Camshift算法即可实现对象跟踪。例程运行界面和跟踪结果如图 11所示,在运行界面中定义跟踪对象,此处定义的是水杯盖,图(a)右侧即为该对象的颜色直方图,图(b)为在移动杯盖时,程序对杯盖的跟踪结果。
实验可知,根据本文介绍的方法所搭建的视觉系统可以完成视频的无线传输,视频的实时性和稳定性满足图像处理的要求。同时对象跟踪实验证明该视觉平台能够实现对远程视频的处理,并且结果十分理想。因而,可以在此视觉平台上根据需要开发出对应的视觉功能。
4 结束语本文分析了一般视觉系统的基本组成,针对视觉系统的图像传输和可移植性问题设计一套视觉平台,该视觉平台可以完成对远程视频的实时处理,基于Wi-Fi的图像传输为视频的远程传输和组网拓扑提供了可能,基于OpenCV设计的图像处理环境为视觉平台的二次开发提供了便利。该视觉平台的可移植性能有着广阔的应用空间。
[1] | 桂卫华, 阳春华, 徐德刚, 等. 基于机器视觉的矿物浮选过程监控技术研究进展[J]. 自动化学报 , 2013, 39 (11) : 1879-1888 GUI Weihua, YANG Chunhua, XU Degang, et al. Machine-vision-based online measuring and controlling technologies for mineral flotation-a review[J]. Acta automatica sinica , 2013, 39 (11) : 1879-1888 DOI:10.3724/SP.J.1004.2013.01879 |
[2] | SZABO S, COOMBS D, HERMAN M, et al. A real-time computer vision platform for mobile robot applications[J]. Real-time imaging , 1996, 2 (5) : 315-327 DOI:10.1006/rtim.1996.0032 |
[3] | SCHINDELIN J, ARGANDA-CARRERAS I, FRISE E, et al. Fiji:an open-source platform for biological-image analysis[J]. Nature methods , 2012, 9 (7) : 676-682 DOI:10.1038/nmeth.2019 |
[4] | 刘焕军, 王耀南, 段峰. 机器视觉中的图像采集技术[J]. 电脑与信息技术 , 2003 (1) : 18-21 LIU Huanjun, WANG Yaonan, DUAN Feng. Image capture technology in vision image[J]. Computer and information technology , 2003 (1) : 18-21 |
[5] | 张欢庆. 基于ARM处理器的嵌入式Linux系统关键技术研究[D]. 济南:山东师范大学, 2013:17-23. ZHANG Huanqing. Research of critical technologies in embedded Linux system based on ARM processor[D]. Jinan:Shandong Normal University, 2013:17-23. |
[6] | HU Jie, ZHANG Genbao. Research transplanting method of embedded linux kernel based on ARM platform[C]//Proceedings of the 2010 International Conference of Information Science and Management Engineering. Xi'an, China:IEEE, 2010, 2:35-38. |
[7] | 尤盈盈, 孟利民. 构建嵌入式linux交叉编译环境[J]. 计算机与数字工程 , 2006, 34 (6) : 30-32 YOU Yingying, MENG Limin. Building embedded linux cross-compling environment[J]. Computer & digital engineering , 2006, 34 (6) : 30-32 |
[8] | BRADSKI G, KAEHLER A. Learning OpenCV:computer vision with the OpenCV library[M]. USA: O'Reilly Media Inc, 2008 . |
[9] | 徐琨, 贺昱曜, 王卫亚. 基于CamShift的自适应颜色空间目标跟踪算法[J]. 计算机应用 , 2009, 29 (3) : 757-760 XU Kun, HE Yuyao, WANG Weiya. Object tracking algorithm with adaptive color space based on CamShift[J]. Journal of computer applications , 2009, 29 (3) : 757-760 DOI:10.3724/SP.J.1087.2009.00757 |
[10] | ALLEN J G, XU R Y D, JIN J S. Object tracking using camshift algorithm and multiple quantized feature spaces[C]//Proceedings of the Pan-Sydney Area Workshop on Visual Information Processing. Darlinghurst, Australia:Australian Computer Society, Inc, 2004:3-7. |
[11] | CHENG Yizong. Mean shift, mode seeking, and clustering[J]. IEEE transactions on pattern analysis and machine intelligence , 1995, 17 (8) : 790-799 DOI:10.1109/34.400568 |