江晨晓,张 桦,张 贺,孙志海
(杭州电子科技大学计算机应用技术研究所,浙江杭州310018)
机器视觉技术由于其精度高、无需人工控制等优点,已经被应用于车牌定位、矿物检测、金属箔检测、塑料制品检测等方面[1-4]。本文提出了一种基于形态学的瓶盖缺陷检测算法,并在TI公司的DaVinci[5]系列DSP处理器TMS320DM6467上实现。算法首先对原始图像进行消除隔行、噪声去除、瓶盖分割、边缘检测等预处理,提取瓶盖轮廓;然后测量关键位置高度,利用先验知识判断是否存在缺陷;最后利用Ping Pong双缓存和流水线优化等技术,极大的提高算法效率,实现了瓶盖缺陷的实时快速检测。
系统由采集模块、处理模块和剔除、显示模块组成,其系统结构框图如图1所示。
系统采用TMS320DM6467作为算法实现的平台。TMS320DM6467是针对高端视频多媒体系统的需求而设计的高度集成的数字媒体处理器,该处理器为ARM+DSP双核架构处理器,其中ARM子系统采用ARM926EJ-S核,DSP子系统采用TI的高端DSP核C64x+,钟频率高达729MHz。ARM核用于图像的采集、显示,DSP核负责对图像进行处理。
图2 算法流程图
本算法对于原始图像有较高的要求,首先对原始图像进行线性插值消除隔行、均值滤波去除噪声、直方图均衡化增强图像对比度等预处理,提高瓶盖边缘检测的准确度;然后采用OTSU自适应阈值对图像进行自动分割,并选取Sobel算子检测边缘;最后测量关键位置高度,根据测量值进行缺陷判断。其具体流程如图2所示。
缺陷检测示意如图3所示,算法步骤。
定位瓶盖位置并测量关键位置高度:
(1)寻找瓶盖顶部。如图3(a)所示,A为边缘搜索的初始点,A点一直向下扫描,直到找到瓶盖的上边界A1和瓶盖中点A2;
(2)寻找瓶盖的左右边缘。以瓶盖中心点A2点开始,分别向左右两边寻找瓶盖左右边缘B点、C点;
(3)通过设定向内偏移量n,可以得到B1点的坐标B1和C1点的坐标C1。以B1和C1作为初始点,向下扫描到瓶盖下边缘的左右上边缘点D点、E点,得到高度h1、h2;
(4)以B点、C点为初始点,向下扫描至瓶肩得到D1点、E1点,扫描得到的高度记为d1、d2;
(5)由B点、C点分别向外偏移一定量,向下扫描并计算图3(d)中g1和g2的值。
从步骤(1)至(5),总共得到3 组关键位置高度值:(h1,h2)、(d1,d2)、(g1,g2)。
缺陷判断:
(1)计算图3(b)中h1和h2差h,若差超过设定误差阈值hT,则判定为歪盖;否则,计算倾角a=arccos((w2+d2-h2)/2wd),若a超过允许角度aT,则判定为歪盖或瓶盖下边缘破损;
(2)计算图3(c)中d1和d2差d,误差率b=d2/(d21♂+d22♂),若b大于允许误差bT,则判定为歪盖或饮料瓶有破损;否则,将d1和d2与给定允许高度dT比较,若有任意一个超过dT,则认为瓶盖高度过低或瓶盖有破损;
(3)计算图3(d)中g1和g2差g,并求误差率c=g/(g1+g2),若c大于允许误差cT,则判定为饮料瓶破损;
(4)若在以上步骤中没有检测出缺陷,则认定该瓶盖为合格产品。
图3 缺陷检测示意图
Ping-Pong双缓存技术是解决多批数据同时传输和处理的一种EDMA传输方式,两个数据缓冲区可以单独用于数据传输和处理。如图4(a)所示,该系统将片外存储器中的瓶盖灰度图像G(i,j)分成9块,如图4(b),64KB一级数据Cache分成2个存储块,每个存储块分为2个区,分别为PingBuf、PingOut-Buf和 PongBuf、PongOutBuf。
图4 Ping-Pong双缓存技术
系统在对每一块数据做处理之前,先要启动EDMA将这一块图像数据搬运到PingBuf或者PongBuf中,并等待搬完后才开始处理。图4显示了启用Ping-Pong双缓存后,系统进行相关处理的过程(假设未处理数据G1已经搬运到PingBuf中,PongBuf中存放着已经处理的数据B0):DSP首先对PingBuf中的G1进行处理,同时开启EDMA将处理完成的数据B0搬入片外存储器中,将未处理的数据G2搬运到PongBuf中;等待DSP处理完数据和EDMA完成搬运,DSP对PongBuf中的数据G2进行处理,并将结果B2存入PongOutBuf中;Ping-Pong指针相互交换,依次循环。在均值插值消除隔行、灰度化、边缘检测和Otsu阈值化处理上,运用Ping-Pong双缓存技术来提高算法效率。
C60000内核的执行流水线有8个阶段,理想情况下有8条指令同时执行,分别处在流水线的不同阶段。但是由于不同阶段的两条指令,同时对某个硬件资源有需求,会导致冲突,产生了流水线延时。
对寄存器访问的竞争是影像流水线保护和延迟的主要原因,因此需要仔细安排指令的顺序,避免寄存器访问的竞争,必要时采用加mmap()的方式。另外,为了减少流水线的刷新,要尽可能的用条件执行指令来代替条件跳转指令,用单指令重复和本地循环来代替块循环。
实验采用TMS320DM6467 HD 11080P EVM开发板、SEED-XDS560PLUS仿真器,原始图像大小为1 280×960,颜色空间为YUV4∶2∶0。实验结果如图5所示,图5(a)、(d)、(g)、(j)是饮料瓶的原始图像,图5(b)、(e)、(h)、(k)是预处理后的结果,图5(c)是正常瓶盖检测的结果,图5(f)、(i)、(l)是缺陷瓶盖检测的结果,方框标识了检测出的瓶盖位置。
图5 瓶盖缺陷检测结果
关键部位长度Z不大于4的产品为合格产品,大于4的产品为不合格产品,系统通过测试10 000个合格样品和10 000个不合格样品,得到的统计结果如表1所示。
从表1得出,在10 000个合格样品的检测结果中,0≤Z≤4的样本占总数的98.27%,在10 000个不合格样品的检测结果中,Z>4的样本占不合格总数的97.08%,得出系统检测瓶盖缺陷的检出率约为97.68%,误检率为2.32%。
表1 样品检测结果
实验分别对原始算法,使用二级Cache配置,开启CCS的文件级(-o3)优化,Ping-Pong双缓存优化,以及流水线优化这5种情况下的算法进行性能测试,结果如表2所示:
表2 瓶盖缺陷检测快速算法性能比较
在使用Ping-Pong双缓存优化时,考虑到图像输入函数和消除隔行函数能并行处理,将这两个函数进行合并提高效率。由表2可知,优化后的算法处理速度比原始算法提高45倍,缺陷检测时间从437.14Mcycles减少到9.72Mcycles,在DSP的CPU主频为729MHz的SEED-DVS6467开发板上,每秒最大能处理75帧图像,达到了机器视觉对实时性的要求。
本系统结合智能相机和计算机视觉技术实现了基于形态学的瓶盖缺陷快速检测系统。系统采用视觉技术处理图像后,利用瓶盖的先验知识实现缺陷瓶盖检测,在经过代码优化后,该系统具有良好的检测效果和实时性。在系统实现过程中,相机采集过程中产生了噪声,瓶盖在传送带上产生了震动,都对检测效果有明显的影响,导致准确性降低。因此,在今后的研究中,将重点研究如何降低外界因素对瓶盖检测的影响,以达到更高的检测准确率。
[1]Su JunRen,Ma Zhang.Car license plate location based on the density and projection[C].Wuhan:Computational Intelligence and Natural Computing,2009:409 -412.
[2]阳春华,任会峰,桂伟华,等.基于机器视觉的矿物浮选PH软测量方法[J].计算机工程与应用,2011,47(1):228-230.
[3]王燕,付萍,李阳.机器视觉在金属箔缺陷检测系统中的应用[J].中国科技信息,2010,23(1):42-44.
[4]刘斌,吴盛金,皱什放.基于机器视觉的塑料制品表面缺陷自动检测技术[J].塑料工业,2009,37(12):5-9.
[5]李楠,刘源,韩东方,等.基于DM642开发的嵌入式图像系统硬件实现[J].工业控制计算机,2005,18(8):25-26.