高 健,夏利霞
(1.湖北工业大学 机械工程学院,武汉 430068;2.湖北省机电研究设计院,武汉 430068)
近年来,图像处理技术被广泛应用于工业生产,以提高生产效率和产品质量。就汽车保险杠生产来说,汽车保险杠型号识别是实现保险杠生产全自动化的关键技术。
目前,汽车保险杠识别的研究也愈发深入,何新龙等[1]根据常用汽车保险杠制作材料聚碳酸酯分子结构对称的特点,拉曼光谱对对称的有机基团振动敏感的特性,借助于聚类分析法实现了对44种不同保险杠的识别,准确率达94.8%。但此方法对检测设施、检测环境要求严苛,不适用于工业现场的使用。
毕程[2]通过kinect获取各保险杠三维点云,以单视角点云的视点特征直方图V F H(Viewpoint Feature Histogram)特征计算结果训练主成分分析SVM(Support Vector Machine)分类器,借助于最小欧氏距离的聚类分割方法对待分类点云数据进行分割,使用已训练的SVM分类器对分割结果的VFH特征进行分类。但该方法需要人工获取各保险杠全视角点云,再模拟单视角采集,对操作员水品要求较高,后期维护难度大。
Kazuya等[3]使用背景差分法滤除背景,通过背景图像与包含保险杠图像的全局平均像素值的差确定二值化阈值,使用最大面积矩形法截取二值化结果区域作为模板,最终通过模板匹配进行型号识别。该方法识别过程简单,但使用最大面积矩形法使得模板中包含了过多的非保险杠像素点,不仅增加了计算量也降低了识别的正确率。
本文借助OpenCV所包含的算法对一组前后保险杠源图进行识别,实现方式简单,后期维护难度小,实施过程如图1所示。
图1 试验过程
其中,在分割阶段对比了均值聚类和区域生长两种分割效果。对聚类分割结果使用了基于类别质心位置的感兴趣区域提取方法,对区域生长分割结果使用目标区域的灰度图叠加方案,这两种提取方案避免了文献[3]中的背景信息干扰。
挑选出图像中保险杠信息可减少计算量,提高处理效率。对图像通常有阈值法、基于区域或边缘的分割方法。阈值法可快速实现图像二值化,其关键在于选取合适阈值。全局阈值分割按指定灰度值进行二值化,在合适的阈值下可得到主要轮廓,如图2(b)所示,但该方法对环境敏感,每幅图像的合适阈值都有差异,需要在处理过程中动态调节。自适应阈值分割能动态调节阈值,体现保险杠的整体样貌,如图2(c)所示,但大量背景信息也被高亮。从保险杠在图像中呈灰度值变化较小的连续块状分布特征来看,采用基于区域的分割方法应该更有效,本文对区域生长和聚类两种分割方法进行了试验。
图2 阈值法分割
区域生长法的分割过程如图3所示,首先对源图像灰度化,将灰度图中灰度值大于235的像素点选为种子点,将种子点以灰度值为255显示在与灰度图同等大小的单通道图中,结果如图4(a)、图4(d)所示。使用八方向的区域生长分割法,依次比较源图中种子点所在位置的灰度值与其相邻八个方向上各像素点位置灰度值,当差值小于生长条件时,将种子分布图中该像素点位置所对应的灰度值置为255。当所有像素点遍历结束或者相对生长结果再无未生长种子时,生长停止,生长结果过程如图4(b)、图4(e)所示。根据连通域大小过滤掉孤立的信息,提取最大轮廓进行填充,得到了图4(d)、图4(f)所示的处理结果。
图3 区域生长法分割过程
图4 区域生长图像分割结果
聚类是将给定数据划分为若干簇,均值聚类是基于代表的聚类方法,采用一种贪心的迭代算法找到使平方差和最小的类簇。在图像处理过程中其实现流程如下:
图5 聚类分割过程
聚类算法需要手动设定期望的聚类数k,程序会在起始步随机分配k个像素点作为k个簇类的质心,然后遍历图像中的像素点,对每一个点分别计算与各簇的海明距离,距离最小的归为同一类。当一个类簇加入新的元素后,计算簇内所有元素均值作为新质心。然后根据新的质心去遍历图像像素点,一直迭代到指定代数,或者两次迭代结果的质心在预设精度范围内,停止聚类计算。本文设定聚类数大小为4,处理结果如图6所示。
图6 区域生长图像分割结果
相比两种分割算法,无监督学习聚类算法只需在处理前指定类簇数,对分割结果影响小。区域生长算法需指定种子和生长条件,两者都需要依赖先验知识且对分割结果影响大。另外,由前保险杠处理结果可知,当孔洞较多时,区域生长法会丢失空洞边缘细小特征,故均值聚类算法分割图像鲁棒性更强、效率更高。
区域生长分割后保留下来的高亮区域对应源图像中保险杠分布区域,在源图像中提取该区域图像即为感兴趣区域(ROI)。图4为文献[3]所使用的边界矩形法,处理结果包含了目标区域但也包含了一部分无用的背景信息。图5为本文所采取的分割图与灰度图作叠加运算的处理结果,这种方法处理过程如下:
图7 区域生长图像分割结果
其中,D(i,j)代表分割结果图中坐标值为(i,j)的像素值,G(i,j)代表灰度图中坐标值为(i,j)的像素值,M(i,j)代表像素值处理得中间值,P(i,j)代表当前像素点像素值。式(1)将分割图与灰度图各像素点灰度值进行加和,再减去255作为像素值计算的中间结果。式(2)对中间结果进行判断,当中间结果小于或者等于零时,将像素点的灰度值设为0;若大于零,将结果设为当前像素点灰度值。
区域生长从种子开始就限定了保险杠的灰度值为有效灰度值,生长结果直接指示出保险杠分布区域。但在聚类中,所有聚类数据会被保存下来,且类别排序也是随机的,即不能按保险杠被分为第几类作为提取依据。
在抓取保险杠图像时,保险杠特征总是会分布在图像的正中间部分,且所占据的图像像素点最多,所以保险杠特征聚类分割结果的簇中心均会稳定的落在图像的某个区域。为了不在人工干预下,将保险杠特征区域高亮化,本文使用了基于簇中心的提取方法。提取步骤如图8示。
通过模板的聚类结果返回值可观察到每类的簇中心分布位置,分别对每类颜色进行高亮显示,即可得到保险杠类簇中心的分布位置。对待处理图像,挑选聚类算法返回值center第一列中合乎要求的簇中心值的所在行,即可得到保险杠特征的所属聚类类别。遍历图像中各个像素点,若像素点所属类别与保险杠类别相同,将该像素点灰度值赋为255,不满足条件的像素点灰度值赋为0,全部经过一次遍历后,保险杠特征类即可被凸显出来,结果如图6(c)、图6(f)所示。
图8 簇中心法提取过程
不同型号保险杠在尾灯、前灯孔的大小和形状上具有一定的差异,根据先验知识选取辨识度最好的轮廓作为保险杠特征轮廓,提高识别结果的准确率。由叠加法生成的ROI区域为灰度图,经过二值化或边缘检测后可提取轮廓;由簇中心法生成的ROI区域为二值图像,可直接进行轮廓提取。轮廓提取函数将所有轮廓将以点向量形式输出,使用迭代器遍历输出数据可计算出轮廓长度,根据包含轮廓的最小矩形可近似出轮廓的面积,通过限定轮廓的周长与面积去除所有非保险杠特征轮廓的其他轮廓。图9、图10为轮廓提取结果。
提取不同型号保险杠特征轮廓Hu矩[4],使用模板匹配识别方法,根据匹配值判定分类结果。对于基于HU矩的模板匹配,通常有以下三种计算方法:
图9 区域生长提取结果
图10 聚类特征提取结果
从表1匹配结果可以看到,后保险杠图像使用公式1时,与后模板匹配范围为0~0.04,与前模板匹配范围为0.23~0.28;使用式(2)时,与后模板匹配范围为0~0.46,与前模板匹配范围为0.69~1.15;使用式(3)时,与后模板匹配范围为0~0.06,与前模板匹配范围为0.12~0.14。
从表2匹配结果可以看到,前保险杠图像使用式(1)时,与后模板匹配范围为0.14~0.26,与前模板匹配范围为0~0.28;使用公式2时,与后模板匹配范围为0.91~1.14,与前模板匹配范围为0~0.37;使用式(3)时,与后模板匹配范围为0.16~0.18,与前模板匹配范围为0~0.07。
根据匹配结果可以总结出,对后保险杠计算模板匹配值时,式(1)对不同模板算出的匹配值距离最大即对不同类别轮廓区分度较大,且相同模板匹配值距离较小即对相同类别轮廓吸纳能力较强,效果最好。而式(2)与之相反,效果最差。式(3)对不同模板算出的匹配值距离等于后模板匹配值分布距离,前模板匹配值距离小,可以对型号做出判别,效果居中。
对前保险杠计算模板匹配值时,式(1)对不同模板算出的匹配值出现了重叠,不能对型号做有效区分。式(2)对不同模板有较好区分度,但同模板匹配值距离较大。式(3)表现出对后保险杠计算模板匹配值时的相同效果。
总体上看,式(1)对后保险杠的小轮廓识别能力强,式(2)对前险杠的大轮廓有一定识别能力,式(3)对前、后保险杠都有识别能力,且性能稳定,但对后保轮廓的吸纳能力较差。综合结果选取式(1)作为后保险杠匹配度计算方法,式(3)作为前保险杠匹配度计算方法。
本文首先对比了基于阈值的全局阈值、自适应阈值分割和基于区域的区域生长、均值聚类的图像分割效果,然后采取叠加法和簇中心法得到比采用最小包围矩形法更优质的感兴趣区域,以轮廓周长和面积筛选区分度大的轮廓作为特征进行形状匹配,最后根据三种匹配度计算公式的匹配计算结果,选定式(1)作为后保险杠匹配计算公式,式(3)作为前保险杠匹配计算公式。
表1 后保险杠图像模板匹配结果
表2 前保险杠模板匹配结果
本识别方案充分利用了对保险杠的先验知识,以提高识别效率,增强识别方案的鲁棒性。通过直接对源图像操作获取分类结果降低了实施难度、减少了后期维护障碍。但在模板匹配时,使用了七阶几何不变矩,计算量偏大,维数偏高,后续应考虑如何降维,用更少的特征更充分的描述轮廓特性,使用新特征训练支持向量机或神经网络,以构建更智能的识别系统。