基于CCD 技术的生产线自动分选系统软件设计
2014-09-19宋国堃何文馨吴锐
宋国堃,何文馨,吴锐
(四川大学,四川成都610065)
0 引言
图像配准以及图像比对的产品缺陷在线检测方法广泛运用于生产实践,比如印刷品检测,零件表面缺陷检测,PCB检测等。本项目利用COM组件将Matlab与VB混合编程,既利用了Matlab强大的数据分析能力,又利用了VB良好的可视化编程能力,以图像配准和图像比对为产品合格判断方法,实现了全自动的产品合格分选。
1 项目介绍
项目搭建了一个基于CCD传感器的生产线自动分选系统模型,圆柱形产品模型由步进电机带动的送料机构,经光电开关由单片机精确定时后停在CCD摄像头焦平面位置;VB驱动摄像头对产品进行拍照取样,并通过COM组建,调用Matlab对拍摄图像进行处理和分析,得到产品是否合格;之后系统继续运行,VB通过产品合格与否信息,给单片机相关端口相应信号进而控制电磁阀以驱动分选机构做出不同的动作,从而实现对产品的全自动分选。整个系统结构设计简洁,动作流畅,利用VB开发的操作界面人机交互性好,以Matlab2010a作为图像处理和分析核心,系统稳定性好,分选效率高,具有一定分选精度。
2 图像算法设计
经广泛调研,为充分保障系统的推广性,项目检测指标为圆柱形工件端面边缘缺陷。图像处理与分析算法的方法是:首先在工控机中存入一张产品的标准二值图像,标准图像拍摄环境与待检品图像拍摄环境一致;得到待检品图像,将其以与标准图像相同的算法转化为二值图像并与标准图像进行图像减运算得到结果图像;统计结果图像非0像素数,当像素数小于误差容限值则判断产品合格,反之不合格。图1为图像处理流程图。
图1 算法流程
2.1 图像灰度分割和图像预处理操作
为减少数据量提高处理速度,将CCD摄像头所拍摄的彩色待检品图像转化为二值图像。从彩色图像到灰度图像需要确定灰度分割阈值;系统设计时,将光源布置在摄像头上,这样待检端面和背景灰度会有较大的灰度差距,便于分割。图像预处理操作目的是提高图像品质,本算法中图像增强操作采用中值滤波方式;工业现场因机械振动,图像极易产生白噪声,而中值滤波对于白噪声有很好的抑制作用,又不会引起图像边缘的较大失真,所以使用此滤波方式。
2.2 图像配准算法设计
图像配准是将不同时间、不同成像设备或不同条件下获取的两幅或多幅图像进行匹配、叠加的过程,因此需要设法建立两幅图像之间的对应关系,确定相应几何变换参数,对两幅图像中的一幅进行变换后与另一幅进行比对操作。由于标准图像与待检品图像在空间位置上有一定错位,为了保证待检精度,本算法以待检品图像为基准,对标准图像进行图像配准操作。目前国内外常用的配准方法包括基于特征的配准算法,基于SIFT的配准算法,基于相关算法的配准方法等。在诸多方法中,基于特征的配准算法具有计算量小,配准效率高的特点,然而配准精度受图像本身缺陷影响。本项目采用基于质心的特征配准方式,原因在于:1)对于圆柱形图像,其端面为回转对称的几何图形,所以通过质心(即圆心)便能快速配准;2)在配准精度上虽然受到图像表面缺陷的影响但这正好也能反应出待检品存在的缺陷。
Matlab强大的图像分析功能给图像寻找特征点带来了方便。利用Matlab的image processing toolbox提供的regionpros函数以及该函数下的centroid参数可以方便的得到被标记的闭合二值图像的质心。Centroid参数是基于图像的一阶矩对闭合图像求取质心。由图像矩概念可知,对一幅二维连续图像f(x,y),p+q阶矩的定义为:
对于离散化数字图像上式可变为:
通常0阶矩(m00)表示物体的质量,1阶矩(m10,m01)表示物体的质心,2阶矩(m20,m02,m11)表示旋转半径。图像质心坐标可由一阶矩除以零阶矩得到即图像质心的的坐标公式为:
此方法的优点是:1)对噪声不敏感:当有外部噪声干扰时,计算出的质心不会有太大的偏离,因此此方法适用于在线检测环境;2)Matlab将此算法集成为一条指令,其运行速度更快,工作效率能得到保障。其具体处理流程是:首先对得到的待检品二值图像运用bwlabel函数进行标记,然后利用regionpros函数及其centroid参数得到被标记闭合区域的质心;Matlab会自动对被标记的二值闭合区域进行质心计算,并返回各个区域的质心坐标;为保证判断结果的准确性,必须保证待检品图像表面没有因为非本身缺陷因素造成的图像间断点,所以系统设计时在强光源照射下对待检品采样,这样在灰度分割时,待检品检测面既能跟背景很好的分割开又可以避免图像表面产生多余二值区域,这样就可以充分反映待检面的情况,即使出现多个质心坐标也可怀疑是由于产品本身缺陷造成。算法虽然仅对单一特征点进行配准但是具有较高的配准精度,原因除了上述两点外,还在于:1)调整方式上:标准图像的处理环境与待检品处理环境几乎相同。获取标准图像的二值图像及其质心所用方法是将标准件放到送料台与待检品进行一样的流程,重复多次后,根据得到的标准图像情况调整机构使标准图像各指标稳定后才开始进行待检品检测。2)对待检品采样时系统会暂停,即图像本身质量能得到保证,不会出现模糊、拖影等现象。
2.3 图像比对操作
当不需要对产品缺陷进行高精度测量时,可采用图像比对的方法迅速给出产品缺陷判断。算法采用图像相减的方法,将配准好的待检品二值图像图像与标准二值图像进行图像相减操作;Matlab中图像相减函数有imabsdiff和imsubtract两种;进行 imabsdiff处理时,当相减像素为负值时会自动变为其绝对值代替原像素的位置,而imsubtract处理时,当像素小于0均置0;显然,使用imsubtract函数进行处理能避免算法带来的误差。两幅图像相减存在谁被减的问题,在处理时,让两幅图像分别被对方减一次,从而得到两幅结果图像,分别对两幅结果图像进行非0像素统计,取非0像素多的图像作为结果图像,因为其最能反映工件缺陷情况,如图2所示。对结果图像统计非0像素的个数N,并与预先设定的误差容限A进行大小比较:
图2 两种情况的结果图像
3 VB.NET与Matlab2010a混合编程方法
VB.NET与Matlab实现混合编程方法较为成熟。VB.NET能很好的开发操作界面,实现VB.NET与Matlab的混合编程主要通过以下两个步骤:
1)将Matlab的M文件转换为COM组件。在Matlab环境中编写好M函数文件后,在Matlab指令窗口输入deploytool指令,调出Deployment Project对话框,将项目类型设置为Generic COM Component后点击“OK”即可调出创建COM组件的编辑环境。设置类名,并添加相应M文件后编译该工程即可在相应位置得到以静态链接库形式存在的COM组件。
2)VB.NET中添加COM组件。在VB.NET中添加上一步生产的COM组件到项目的“引用”,即可在VB.NET编程环境中调用Matlab编写的函数进行数值运算和图像的处理。
以VB.NET与Matlab混合编程为核心的上位机与下位机通信流程图如图3所示。
图3 上位机与下位机通信流程图
4 实验数据与软件界面
图像处理结果将显示在操作界面的图像显示区如图4所示;部分待检品缺陷处理结果如图5所示。
图4 软件界面
图5 部分检测结果
对系统进行测试,模型工件一共10个(不合格品6个,合格品4个),连续测试。测试 3次的结果如表 1所示。
表1 实验数据
5 结语
通过实验数据看出系统整体稳定性较好,对缺陷分辨力较高,但分选精度上稍有欠缺。本项目提出的算法以及软件实现的方法能在保证一定检测精度的前提下具有较高的检测效率,因此具有很好的推广价值,尤其对于几何形状较为简单的产品在线检测以及检测速度要求较高的场合较为适合,比如活塞缺陷检测、圆柱轴承滚子检测、PCB焊点检测均可使用本文介绍的方法。
[1]钱光耀,崔庆胜,夏二勇,等.基于MMX的太阳能电池板边缘缺陷检测软件系统 [J].测量与设备,2010,07.
[2]马培勇,罗红润,周思柱.基于COM组件的Matlab和VB混编方法在机械可靠性工程中的应用[J].计算机应用与软件,2012,29(7).
[3]李志军,傅蓉浣.应用于机器视觉的图像自动比对算法研究,[J].机电工程,2012 26(7).
[4]Jan Flusser, Barbara Zitova,Tomas Suk.Moments and Moment Invariants in Pattern Recognition.[M]. 2009 John Wiley&Sons Ltd.
[5]冈萨雷斯,等.阮秋琦,等译.数字图像处理(第三版)[M].北京:电子工业出版社,2011.