【项目实战派】图像处理项目的硬件平台选型
一直以来我都对嵌入式系统比较感兴趣,因为感到图像处理最终还是要走向便携式、移动化的。这里讲自己对图像处理项目的硬件平台选型这块的想法进行交流,欢迎交流、批评。
一、典型图像处理系统构建
①相机与镜头——这部分属于成像器件,通常的视觉系统都是由一套或者多套这样的成像系统组成,如果有多路相机,可能由图像卡切换来获取图像数据,也可能由同步控制同时获取多相机通道的数据。根据应用的需要相机可能是输出标准的单色视频(RS-170/CCIR)、复合信号(Y/C)、RGB信号,也可能是非标准的逐行扫描信号、线扫描信号、高分辨率信号等。
②光源——作为辅助成像器件,对成像质量的好坏往往能起到至关重要的作用,各种形状的LED灯、高频荧光灯、光纤卤素灯等都容易得到。
③传感器——通常以光纤开关、接近开关等的形式出现,用以判断被测对象的位置和状态,告知图像传感器进行正确的采集。
④图像采集卡——通常以插入卡的形式安装在PC中,图像采集卡的主要工作是把相机输出的图像输送给电脑主机。它将来自相机的模拟或数字信号转换成一定格式的图像数据流,同时它可以控制相机的一些参数,比如触发信号,曝光/积分时间,快门速度等。图像采集卡通常有不同的硬件结构以针对不同类型的相机,同时也有不同的总线形式,比如PCI、PCI64、Compact PCI,PC104,ISA等。
⑤PC平台——电脑是一个PC式视觉系统的核心,在这里完成图像数据的处理和绝大部分的控制逻辑,对于检测类型的应用,通常都需要较高频率的CPU,这样可以减少处理的时间。同时,为了减少工业现场电磁、振动、灰尘、温度等的干扰,必须选择工业级的电脑。
⑥视觉处理软件——机器视觉软件用来完成输入的图像数据的处理,然后通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。常见的机器视觉软件以C/C++图像库,ActiveX控件,图形式编程环境等形式出现,可以是专用功能的(比如仅仅用于LCD检测,BGA检测,模版对准等),也可以是通用目的的(包括定位、测量、条码/字符识别、斑点检测等)。
⑦控制单元(包含I/O、运动控制、电平转化单元等)——一旦视觉软件完成图像分析(除非仅用于监控),紧接着需要和外部单元进行通信以完成对生产过程的控制。简单的控制可以直接利用部分图像采集卡自带的I/O,相对复杂的逻辑/运动控制则必须依靠附加可编程逻辑控制单元/运动控制卡来实现必要的动作。
二、图像处理项目的硬件平台选型
常见的图像硬件平台和工具链包括
1、pc+mfc+opencv(或类似的商用软件);
2、arm+qt+opencv(或类似软件);
3、dsp+专用算法库;
4、fpga+专用算法库;
值得注意的一点是,opencv作为比较著名的开源算法库,在dsp和fpga(
http://ec.eepw.com.cn/center/shownews/userid/38503/id/160095)上面都有移植的实现。
同时,android作为arm的分枝,随着手机已经成为人们日常生活中不可缺少的一个部分,所以手机方面的图像识别程序/应用程序有着非常巨大的竞争力,
ios也是类似的
。
从价格上来说
x86工控机只需要几百元,小一千的价格就可以得到一个完整的电脑
dsp和fpga开发板,如果要能够用于图像处理的价格一般都比较贵,至少上千元。
三、小结
最终的选择,还是应该根据项目的需要选择平台。所有的硬件最终都是支持需求实现的。对于图像处理来说,一般具有
1、主要功能单一,也就是说不需要丰富的控制资源;
2、算法复杂程度高;
3、实时性有一定程度的要求。
所以,我认为一般来说,选用x86工控机+mfc+opencv或者qt+opencv的形式应该就能够解决许多问题。基于这个平台进行做工作,选择出稳定的方便扩展的平台,能够支持许多未来的工作。