基于机器视觉的医用瓶盖质检系统设计
2019-11-05武栓虎徐金东
岳 昊,武栓虎,徐金东,郑 强,殷 茹
(1.烟台大学计算机与控制工程学院,山东烟台 264000;2.烟台大有数据系统有限公司,山东烟台 264000)
0 引言
在医用瓶盖生产领域,受生产工艺影响,医用铝塑瓶盖在生成过程中会产生残次品,如脏污、变形、缺口、头发等。此类残次品将影响药品的质量,流入市场会危害使用者的健康。
目前,大量医用瓶盖生产企业仍然依靠传统的人工方式逐个筛选,速度慢,准确率低,成本高,已不能适应当前企业大规模生产需求。虽然国内已开发了几款瓶盖检测系统[1-4],但这些瓶盖检测机主要针对酒类金属瓶盖正面和背面进行检测。文献[1,3-4]采用1个相机对瓶盖的背面进行采集检测,文献[2]采用2个相机对瓶盖的正面和背面进行检测。在图像分割处理、检测和机械设计部分相对简单。医用瓶盖的检测要求较高,需要对瓶盖的全方位进行检测,增加了对侧面的缺陷处理和检测,而且检测内容也不尽相同。瓶盖侧面由于形状的不规则性,图像的分割和处理难度较大。
我们基于机器视觉设计开发了一套高速智能瓶盖检测系统。其中,对传送部分采用抽真空的方法,使得瓶盖的传送更为稳定。图像采集部分采用6个相机对瓶盖进行全方位检测。大量的现场测试表明系统可靠性强,误踢率低,满足瓶盖生产的需求,可代替人工检测,显著提高生产效率。
1 传送系统与图像采集系统设计
系统结构图如图1所示。
理料系统:瓶盖倒入理盖机(参考图1),然后沿理盖机内轨道螺旋上升,并会在理盖机内自动反转至正面朝上,进入下一级传动。
图1 系统结构图
分料系统:瓶盖进入到分度盘,随着盘体的旋转瓶盖被等距离分隔开。
传送系统:由2部分组成,前端皮带输送机和后端皮带输送机。针对传送系统设计,传送带被打下一些细密小孔,并在皮带下方安装了真空泵进行吸附,这样可使瓶盖在传输和图像采集时保持稳定。
首先瓶盖由分度盘进入前端输送机,由于真空的吸附作用,瓶盖与皮带之间没有相对位移,跟随皮带运行到与后端皮带输送机头尾重叠处,此时前端输送线在尾部进入无真空状态,而后端输送线的头部有真空,真空克服瓶盖重力将瓶盖吸起,瓶盖反转进入后端输送机(用于检测背面),后端输送线尾部无真空,瓶盖依靠惯性和重力进入到出料口。
视觉检测单元:瓶盖在前端输送线上传送时会触发相机传感器,传感器触发5个相机分别对侧面和正面进行拍照(4个相机拍侧面,1个相机拍正面)。瓶盖进入后端皮带输送线会反转,这时会触发相机传感器对瓶盖的背面进行图像采集。得到瓶盖的全方位图像后,视觉检测系统对图像进行处理,判断瓶盖是否合格。若瓶盖检测为不合格品,则将剔除信号传给剔除电磁阀,电磁阀会发出相应动作,启动高压吹气机将瓶盖剔除到不合格品收纳箱。合格品会自然流入到合格品收纳箱,并在出料口处对瓶盖进行实时计数。
2 瓶盖定位分割与检测算法
2.1 检测难点与设计策略
瓶盖质量检测部分的难点在于对瓶盖相关检测部位的定位分割。在图像采集部分由6台相机对瓶盖进行全方位图像采集:1台相机对正面拍照,1台相机对背面拍照,4台工业相机对侧面进行全方位覆盖拍照。另外,医用瓶盖塑片有多种颜色,为了使检测系统稳定运行,我们对不同颜色瓶盖分别建模,设置不同参数,存档以备用户后期使用。采集得到的图像有3种,侧面(4幅)图像、正面图像和背面图像。如图2所示。
图2 不同工位的取相结果
瓶盖背面和正面区域分割相对简单,可用传统图像分割方式快速定位[5]。瓶盖侧面区域定位分割相对较难,因为传送带皮带为白色(黑色会吸收光源,采集的图像不如白色),侧面的部分待检区域也为白色(塑片为彩色),无法用阈值[6]或边缘检测[7]等传统的方法进行分割。在设计时我们采用了合理的光源布局,可采用区域预测的方式进行分割定位。
对瓶盖相关检测区域分割完成后,针对不同部位采用不同算法对瑕疵点进行检测,判断瓶盖是否合格。
2.2 瓶盖定位分割算法
2.2.1 侧面图像分割
由于相机设置为触发取像,每次触发的位置固定,因此瓶盖在每张图片的位置基本固定不变,如图3(a)所示。因此为了提高速度,可以划定ROI区域,缩小处理范围,加快处理速度。划定范围后如图3(b)所示。
图3 侧面图像
对瓶盖侧面图像,待定位分割的区域B为瓶盖金属(铝材)部分,其和传送带背景颜色基本一致,因此,传统算法难于定位分割。区域C为瓶盖彩色塑片部分,分割比较容易,可按照传统方法定位分割。为了对区域B定位分割,侧面打光方案采用环形光加遮光片,该打光方案使得区域B(瓶盖内部)为暗区。这样,通过对区域A的定位分割,结合其和区域C的位置关系对区域B预测定位。另外,侧面打光方案也使区域B的污点和瑕疵更加明显[8]。
侧面分割定位具体过程如下:首先,对区域A和区域C定位分割,然后利用A和C的位置关系,对区域B进行预测定位。
区域A的定位相对简单,可以利用灰度阈值分割[9]和椭圆拟合[10]的方法进行定位。
区域C为彩色塑片部分,可以利用彩色图像的分割方法。为此,将图像转换到HSV色域,在图像的色调通道H和饱和度通道S完成分割,分割函数为
(1)
式中:H1、H2、S1、S2分别为图像H,S通道的阈值范围,其值可通过系统的光照条件确定。
分割完成后,可以得到区域A的坐标集A={(xai,yai)|i=1,2,…,n}与区域C的坐标集C={(xci,yci)|i=1,2,…,m},在区域A和C坐标集中分别取满足y值最大的一个坐标点,即取得区域A,C的最低点,计算两个点距离l。如图4所示。
图4 侧面平移距离
将区域A沿图像y轴正方向平移l,如图5(b)所示。垂直向下平移过程会形成一个柱形区域A*,如图5(c)所示。在区域A*中减去区域A、C,即对坐标点集合的相减,就可得到区域B,结果如图5(d)所示。
图5 侧面区域预测定位过程
2.2.2 正面与背面图像分割
对于背面区域,虽然背景单一,但瓶盖种类多,背面塑片颜色多变,所以背面同样采用HSV通道分割方式,分割方法与侧面区域C的分割方法相同。取分割后的背面区域的像素坐标点的中心,可得到背面瓶盖区域的圆心坐标点,同时,也不难得到区域半径。利用圆心坐标和区域半径,再建模制作一个模板存储起来,在瑕疵检测过程可迅速定位整个背面区域。
对于正面区域,情况稍微复杂[参考图2(b)]。为了提高系统的稳定性,我们采集一张正面瓶盖图像,使用正面区域建立模板,定位时采用灰度匹配的方式[11],对其进行定位分割。
2.3 瓶盖检测算法研究设计
2.3.1 脏污检测
瓶盖的脏污多为油污,侧面和正面尤为突出,如图6所示。在实际的应用中,受到生产工艺的影响,在同一批瓶盖中,铝片的颜色深浅不一,因此不可直接设定阈值,判断油污。
图6 油污瓶盖
对于脏污的检测,采用相邻灰度值对比法。
首先,为了提高系统的灵活性和稳定性,在系统设置时,在瓶盖待检测区域设定一定数量和大小的邻域块。在检测时,分别求各个区域内图像的平均灰度值,如图7所示,系统设置为6个邻域块,求1~6号区域内图像的平均灰度值。对比相邻区域平均灰度值的差值,和给定的阈值对比,若大于给定阈值,则记为异常区域。例如,3号块和2号块的平均灰度值之差若大于给定的阈值I,则2号块为异常块。
统计异常区域数量,若异常区域数量大于给定的数量阈值,则该瓶盖图像为异常图像。
图7 邻域对比法
在实际应用中,可事先对正常瓶盖数据进行采集。根据测试,可设定区域块的数量、相邻阈值的差值和异常区域数量。这样,可有效地控制算法的精度,满足各类瓶盖污点检测的需求。另外,如果瓶盖的侧面铝片部分有缺口,图像效果与脏污类似,同样可以检测。
上述检测过程定义的邻域块,可根据正面和侧面的图像特点,对整个检测区域划分得到。
瓶盖正面为圆形,邻域块为拱形,此时每个邻域块内的坐标点p(x,y)需满足:
(2)
式中:r1 瓶盖侧面区域比较规则,因此可根据区域形状划分为规则的邻域块。将上边缘等距离划分成N个段,每个段的长度即为块的宽度和高度,此时取每个段的坐标点集合{(xi,yi)|i=1,2,3,4…},将该坐标集向下平移并依次存储每次得到的每个块坐标集。如图8(b)所示。 (a)正面拱形的划分 (b)侧面单元块划分图8 邻域对比法基本单元块划分 在系统具体实现时,由于同一批次瓶盖大小基本一致,采用事先建立模板的方式,即将每个检测区域划分为邻域块,在系统初始化时提前计算好。在系统运行时,只需利用待检测区域的中心,做一次平移计算,就可得到每个邻域块的模板坐标。这样不仅提高了系统的速度,也提高了稳定性。图9为正面和侧面的污点检测邻域基本单元块实际划分效果图。 (a)正面 (b)侧面图9 实际基本单元块划分 2.3.2 圆度与高度检测 瓶盖圆度的检测,即铝片正面圆度的检测。 在实验环境下,瓶盖正中拍摄,瓶盖铝片部分被塑片部分包围,产生的图像外围会有一圈彩色圆环,通过计算塑片和铝片交界边缘的方式就可获得铝片圆环的边缘,计算其圆度。 但在高速运转的实际生产环境中,每个铝盖在皮带上传输时会有一定的偏移。这样由于瓶盖的铝片部分有一定高度,偏移造成拍摄彩色部分不够突出,如图10所示。此时若以检测铝片和塑片边界点检测铝片边缘的方式则会产生大量误判。 图10 瓶盖正面偏移局部图 因此,我们采用由内向外寻找突变点的方式[12],检测铝片外围的边缘点。首先,在系统设置和建模时,根据不同批次大小的实际瓶盖,会生成一个环形模板,如图11所示,环形模板内径为r1,外径为r2。然后利用径向射线[图11(a)]将其等分。在这些射线的内径r1到外径r2之间检测铝片圆环的突变点。 图11 搜寻突变点范围示意图 为了提高检测精度和鲁棒性,在每条射线上寻找突变点时,首先将射线中的每个像素点沿像素点所在圆的切线方向扩展n个像素点,求其灰度值的平均值,然后求径向相邻像素灰度平均值的差值绝对值。如果检测的差值绝对值超过设定阈值,就可判定为铝片圆环上的边缘点。最后,利用检测到的边缘点坐标到环形模板圆心O的距离,与环形模板中心半径r作比较。若距离差大于设定误差d,则该点为异常点。统计异常点的个数N,若N大于设定异常点个数,则该瓶盖为异常瓶盖。 瓶盖高度的计算可根据前面瓶盖侧面定位分割直接计算,如图4所示,根据得到区域A、C最大y坐标的差值可计算瓶盖高度。同样在系统设置时可设定标准高度与误差范围,对不满足标准的瓶盖进行剔除。 2.3.3 瓶盖六桥检测 正面六桥的局部图如图12所示,六桥检测就是要检测图中的6个白点是否齐全(总共6个),少一个点的瓶盖为不合格品。 图12 正面六桥局部图 六桥的每个点为圆形,利用这个特点可对六桥进行有效的检测[13]。同样的策略,利用建模系统,建立一个径向环形模板,设定内径r1和外径r2,可减少六桥的检测范围,提高系统的稳定性。根据阈值法,在此环形区域内对图像进行灰度阈值分割,通过每个连通区域的面积和形状筛选[14],得到待检测的可行桥点,如图13所示。根据系统设置的圆度阈值,桥点大小以及检测到的桥点个数,可判定瓶盖是否合格。 图13 六桥分割示意图 本系统基于C++编程实现。软件分为2个模块:系统建模和检测模块。 系统建模模块主要针不同批次和颜色的瓶盖,采集图像,建立相应的模板,并设置相应的参数。 检测模块根据系统设置对实际瓶盖进行检测。软件界面运行如图14所示。系统可以实时显示3个工位组成:正面背面各1个工位,各由一个相机采集图像并检测,侧面1个工位,由4个相机对瓶盖全方位覆盖拍照并检测,每个工位会输出相应的瑕疵检测信息,并在界面右侧进行汇总,统计输出瑕疵瓶盖数量,并存档。 图14 软件运行界面示意图 系统经过瓶盖生产厂家实际验证,单个瓶盖的检测时间少于60 ms,速度达15个/s左右,可抵数个人工,每天可以不间断工作20 h以上。整个系统(包括机械设备)启动时间小于5 min,更换产品建模时间小于10 min。在检测精度方面,达到厂家要求的误踢率小于1/1 000,也就是说对于常规瓶盖,缺陷检测准确性可达到99.99%。目前,开发的设备已向俄罗斯和韩国出口,产生了一定的经济效益。 针对目前医用瓶盖检测依然依靠人工的现状,设计了一套基于机器视觉的医用铝塑盖检测系统。该系统有两大特色: (1)机械传送部分采用真空吸附设备,瓶盖的传输和图像采集检测更加稳定; (2)该系统可实现瓶盖360°全方位无盲区检测,可对大多数产品缺陷和污点进行检测,符合行业标准。 本系统也可针对不同的产品快速建模和管理,检测数据存档入库。检测结果、实时图像、运动状态在用户界面上动态显示,操作简单,运行稳定,维护简单。当然,本系统不足之处在所难免,后期会对系统进一步优化。3 软件设计与测试
4 结束语