姜佳敏 俞俊强 陈向东 曾 胜
(1.浙江大学化工机械研究所 杭州 310027;2.杭州集智机电股份有限公司 杭州 311113)
利用扫码枪识别条形码的技术,已广泛应用于生活的方方面面,给大众的生活带来便利。然而人工操作的扫码枪视野和适用距离有限,仍然有许多场合不适用,其中自动化流水线的条形码定位和识别就是典型。近年来,数字图像处理技术逐步发展成熟并广泛应用于条形码的定位和识别领域[1-4]。陈璇、雷海军[5]利用人工神经网络实现了大角度条形码图像自动定位和识别,对三个标准的一维条形码数据集进行了测试,准确率为 80%左右。Luping Fang[6]提出一种基于数字图像模板匹配的定位算法,虽然实现简单,但条形码的放置角度导致模板选择困难,增加了计算复杂度。Kaur S[7]提出了一种结合 Bottom-Hat滤波和形态学运算的条形码定位方法,能够检测出一定程度模糊变形的条形码,但当数字图像背景内容较复杂时容易发生错判。Orazio G 和 Roberto M[8]提出了基于差分的条形码定位方法,此方法易于实现,在条形码处于垂直或水平的状态下具有较好的定位效果,但在复杂背景下效果不够理想。
轮胎生产过程中,为实现过程参数的记录和追溯,会在轮胎端面上贴上条形码。当轮胎动平衡检测时,条形码位置需要作为不平衡量周向位置的零点。因此,在动平衡检测前,要确定条形码相对于轮胎圆心的周向位置。这个工作的难点在于:不同型号轮胎是混在一起进行动平衡检测的,轮胎直径、轴向高度等尺寸参数不同,因此条形码的径向、周向和高度位置不定;轮胎所处工作站内有各类电气元件,轮胎图像具有较复杂的背景;条形码面积仅占总图像面积的0.7‰左右。
本文根据轮胎和条形码的特征,归纳出了一系列的轮胎内圆和圆心特征判据,以及条形码形状位置特征判据,按照设定的迭代流程,对工业相机采集的轮胎灰度图像进行了识别处理,实现了条形码的定位和截取。
工业摄像头安装在轮胎平衡机检测工位入口的正上方,对每只流过的轮胎进行图像采集。条形码所在平面与摄像头轴线基本垂直,因此不会出现文献[5]中的大角度透视变形。由于摄像头无法对微小面积的条形码自动对焦,所以将轮胎作为对焦样件。图1(a)为某一轮胎原始图像。在进行轮胎圆心和条形码的定位前,图像还需经过降低分辨率、高斯滤波等处理。
图1 轮胎图像
在轮胎图像中,条形码的面积占比很小,为保证其清晰度满足后续条形码识别的要求,图像的原始分辨率为 5472×3648,这导致了图像在处理过程中计算量较大。而基于拓扑轮廓查找的定位方法是根据像素灰度以及物体轮廓的形状特征进行定位,不需较高的分辨率。为减少计算量,提高程序的运行效率,通过仿射变以及双三次插值算法[9]将图像分辨率降低至原图1/16。仿射变换计算方法如式(1):
式中:x,y为变换前坐标;u,v为变换后坐标;θ旋转角度,此处为0;m、n—x、y方向放大倍数,此处均为0.25。
图像滤波是对图像噪声进行抑制,是图像预处理中不可缺少的操作,其效果的好坏将直接影响后续图像处理和分析的可靠性。常用的图像滤波方法有均值滤波、高斯滤波、中值滤波和双边滤波等。此处采用高斯滤波。
高斯滤波是一种线性平滑滤波,广泛应用于图像处理中。其滤波方式是以一个滤波框遍历图像中所有像素,将滤波框中心点的像素值替换为滤波框内所有像素点加权平均后得到的值,能够有效去除图像中的噪声。滤波框通常为方形,且长宽为大于1的奇数,本文滤波框的长宽取值均为5。图1(b)为轮胎图像预处理结果。可以看出,图像在预处理后条形码图像变得模糊,但外形轮廓没有受到影响。
为确定轮胎圆心位置,首先要确定一个轮胎上特征最明显的特征圆,根据特征圆来计算出圆心。经过分析,轮胎的上端面的内侧圆最合适。查找内侧圆和条形码的本质是特征查找,有多种方法,例如canny边缘检测[10],基于霍夫变换的圆、直线检测[11-12]和拓扑轮廓查找[13]等。canny边缘检测是基于灰度梯度来检测物体边缘点。然而在轮胎图像中物体边缘点往往并不连续,这使得轮胎内圆和条形码边缘断裂为多个独立的边缘,不利于后续筛选。基于霍夫变换的圆、直线检测方法因为轮胎图像中复杂的背景而难以取得理想效果。本文选择的是拓扑轮廓查找方法,具体算法流程如图2所示。流程中先预设一个阈值对图像进行二值化处理,在二值图中进行拓扑轮廓查找,按照特征参数对得到的轮廓进行筛选,如果找到轮胎内圆和条形码的轮廓则结束,未找到则改变阈值。需要指出的是查找轮胎圆心和条形码不是同时进行的,而是分别执行图 2所示的流程。其原因在于:轮胎本体的灰度较低,条形码表面的灰度较高,在一个二值图上无法用同一个阈值,同时保留二者的轮廓;筛选轮胎内圆、条形码轮廓用的特征参数不同,且筛选条形码轮廓用的特征参数中有一项与轮胎圆心有关。
图2 轮胎圆心及条形码定位算法流程
二值化是一种将图像分割成黑白区域的方法[14],图像中灰度值高于设定阈值的像素点,灰度变为255,反之则变为0。二值化处理后的图像中像素灰度只有255和0两种,称为二值图。图3 (a)、(b)分别为对图1(b)进行阈值为17和108的二值化处理后的图像,在图3(a)中轮胎内圆的轮廓很清晰但条形码的轮廓信息已经丢失,而图3(b)则刚好相反,只保留了条形码的轮廓信息。
图3 图像阈值化
轮廓查找能够获取二值图中黑色连通区域的边界轮廓,主要包括边界点提取和边界跟踪两个步骤。为便于说明,将二值图中黑色像素点称为1像素,白色像素点称为0像素。边界点指的是四或八邻域内有0像素的1像素点,图4(a)中灰色方块为1像素的四邻域和八邻域。而边界跟踪算法的思想是:找到一个起始边界点B0,例如最左侧的边界点。按照图 4(b)所示沿顺时针方向按八邻域法寻找下一个边界点B1,并将其设置为当前边界点,然后原路返回到先前到达的最后一个0像素,以顺时针方向搜索八邻域内的每一个像素,直到找到下一个边界点。重复这个过程,当起始边界点 B0被第二次访问时终止,在整个运行过程走过的1像素就是目标的边界轮廓。图5(a)、(b)分别为对图 3(a)、(b)进行轮廓查找后获得的结果,可以看出图中有许多形状、大小不同的轮廓,还需要分别进行筛选才能获得轮胎内圆和条形码轮廓。
图4 轮廓查找
图5 轮廓查找结果
在图 5(a)中进行轮胎内圆轮廓的筛选和定位时,用到了以下几个特征及参数:轮廓包围面积S;轮廓外部边界矩形的长宽比C1;轮廓外部边界矩形面积与轮廓包围面积的比值C2。以图6为例,说明这些参数。在图6(a)中,轮廓包围面积可根据式(2)计算:
图6 轮廓参数
式中:S为轮廓包围面积;pix、piy为p1点的x、y坐标值。
轮廓的外部边界矩形如图6(b)所示,它是一个有一条边与x轴平行且将轮廓上所有点包含在其内部的矩形。通过对轮廓上各个点x、y坐标值进行排序,找到最大、最小的x、y坐标即可确定轮廓的外部边界矩形的四个顶点坐标。
对于标准的圆形轮廓,其外部边界矩形为正方形,因此,C1应为 1,C2应为 4/π。给定 C1和C2一定的误差范围,就能利用C1和C2来排除非圆形轮廓。而给定面积S一定的范围,则可以排除较小的圆形轮廓,从而找到轮胎内圆轮廓。根据该圆轮廓即可计算出轮胎圆心的位置以及轮胎内圆的半径。
通过对不同型号轮胎图像的计算测试和比较,以上三个参数的取值范围如下:100000像素
图7 轮胎内圆轮廓筛选和圆心定位结果
在图5(b)中进行条形码轮廓的筛选和定位时,要用到以下几个特征参数:(1)轮廓包围面积S;(2)轮廓最小面积外接矩形(以下简称最小外接矩形)的长宽比D1;(3)轮廓最小外接矩形的面积与轮廓包围面积的比值D2;(4)条形码轮廓中心与轮胎内圆圆心距离,和轮胎内圆半径的比值L1。以上参数中,面积 S按照式(2)计算,而其他参数都与轮廓的最小外接矩形相关。轮廓最小外接矩形可按照以下两个步骤得到:(1)用Graham算法[15]获取轮廓点集的凸包;(2)利用旋转卡壳算法求凸包的最小外接矩形[16-17]。图8为条形码的轮廓、凸包以及最小外接矩形。如此,所有的特征参数都可以计算得到。条形码为圆角矩形,其长宽比约为5,因此D1的值应为5左右;D2的值接近但小于1;由最小外接矩形中心位置可以计算得到L1。
图8 轮廓、凸包以及最小外接矩形
接下来,利用S排除包围面积较大和较小的轮廓,利用D1和D2排除非长条形的轮廓以及矩形轮廓,利用 L1排除距离圆心过近或过远的轮廓,从而筛选出最终的条形码轮廓。在完成筛选后,根据条形码的中心坐标,可以确定其与轮胎内圆圆心的距离以及相对于轮胎内圆圆心的周向位置。通过对不同型号轮胎图像的综合测试,以上四个参数的取值范围:400像素
图9 条形码轮廓筛选
在完成条形码的定位后,根据其中心坐标和之前降低分辨率的倍数可以确定原始图像中条形码的位置,从而截取出条形码所在区域,如图 10(a)所示。采用图2中流程在图10中再进行一次条形码定位。此时选取的特征参数为:(1)轮廓凸包面积 S,6000像素
图10 条形码裁剪及倾角校正
拍摄了不同高度不同大小的轮胎在不同随机周向位置的图像共56幅。分别在i5-10210处理器、8G内存64位WIN10的PC机平台和4GB的32位树莓派4Pi平台上,按照上述处理方法、选定的特征参数和筛选条件,用标准C/C++编写程序并进行测试。56幅轮胎图像均成功地定位和截取出了条形码。表1列出其中的30幅条形码图像、条形码相对圆心的周向位置和两种平台的处理耗时。以1号条形码的“-89°/391/1173”为例,-89°是条形码相对轮胎圆心的周向位置,391是PC机上的程序处理时间,而1173是树莓派上的程序的处理时间,单位是毫秒(ms)。统计结果是,在 PC机上的定位截取的耗时在240~670 ms之间,平均耗时为428 ms,在树莓派上的定位截取的耗时在 1360~2720 ms之间,平均耗时为1921 ms。轮胎平衡机的测试工作节拍是25 s/只以上,远大于PC机所耗的时间,所以可以把程序移植到机组的其他工控机上运行。对于树莓派平台,虽然相比PC机耗时较长,但相比平衡机的工作节拍,可以接受。两个平台的单个条形码的定位和截取耗时值不成严格比例,是因为两者的处理位数不同,编译器不同。
表1 测试结果
树莓派平台是一个独立的模块,具有系统简洁和低成本的特点,后续可在树莓派平台上进行算法优化,进一步降低处理时间,提高实用性。
轮胎条形码的自动定位和截取有助于提高轮胎生产的自动化和信息化程度。通过对图像的处理和特点分析,选定了合适的特征参数和筛选条件,在具有复杂背景且条形码面积仅占总图像面积 0.7‰的条件下,用拓扑轮廓查找的方法,确定了轮胎圆心以及条形码的中心坐标,实现了条形码的自动定位和截取,具有一定的实际应用价值。测试表明,在PC机上条形码定位截取平均耗时428ms,在树莓派上平均耗时为1921ms,而轮胎平衡机的测试节拍为 25s/只,两者的耗时都可以接受,但相比 PC机树莓派的成本低得多,优势明显。本文仅讨论了条形码的定位和截取方法,有些条形码受对焦、轮胎生产环境颗粒表面黏附和温度导致的塑面泛黄等因素的影响,比较模糊,后续还要对条形码的识别方法进行研究。