APP下载

图像处理在胶囊外形缺陷检测中的应用

2012-11-20周永霞徐冰俏王康健

中国计量大学学报 2012年3期
关键词:直方图灰度边缘

王 娟,周永霞,徐冰俏,王康健

(中国计量学院 信息工程学院,浙江 杭州310018)

机器视觉是研究计算机模拟生物宏观视觉功能的科学和技术,即用摄像机和计算机等仪器设备代替人眼对目标进行测量、跟踪和识别,并加以判断.主要用于工业检测、精密控制、自动生产流水线及显微医学等领域.制药与食品行业中,在以往人工检测胶囊质量时,耗费大量的人力、物力.在现代自动化生产过程中,人们通过流水线检查胶囊成品质量,大大提高了效率,降低了成本.视觉缺陷检测系统一般的解决方法为:在流水线上,当药片到达指定位置时,启动触发部件,摄像头开始拍摄,数据经过采集传送到电脑,进行图像处理.这些图像数据可能包含药片的各种缺陷信息,通过图像处理单元中的算法识别分类有缺陷的图像.不合格的胶囊如果被检测出来,机器就会得到一个信号,从而将不合格胶囊剔除.

左奇[1]、史忠科提出了一种基于机器视觉的检测方法来实现胶囊完整性的识别.该文中为避免二值化处理产生的错误分割,采用局部二值化方法,以边缘提取为基础,对投影和形态滤波确定的每个胶囊存在区域进行二值化处理,从而取得良好的分割效果.叶青松[2]在药丸实时检测中经过对药丸检测的详细分析,提出了完整的工作循环模式.在每次工作循环中,首先获取图像,然后依次进行预处理、目标识别、形状检测、尺寸检测、和颜色检测,全部合格后才判定为合格品.形状检测就是判断药丸是否完整光滑,方法是判断药丸图像的边界像素到质心的距离是否超出偏差;尺寸检测的方法是计算药丸图像的面积,并以此判断是否符合尺寸要求;颜色检测的方法是将药丸图像的每个像素的RGB向量与标准进行比较,偏差超出范围的即为不合格品.

在胶囊的特征参数选取中,王军海[3]在残损胶囊图像检测系统的研究与设计中提出合格胶囊与破损胶囊在灰度图的均值与方差二值上有一定差异.徐晓[4]在形状识别的方法中提出融合不变矩、相对矩和基于数学形态学的角点检测方法进行形状识别.吴德[5]提出了适合胶囊图像的滤波和增强算法,完成了图像中的胶囊提取、非均匀多灰度图像的分割和缺陷特征提取.该文通过二值化来提取出图像的缺陷斑点并计算出缺陷斑点像素的大小,从而根据标准设置的阈值来判断是否属于缺陷,当缺陷斑点像素面积大于所设置的阈值则判断为缺陷,否则忽略.

笔者主要研究缺陷检测系统的图像处理部分,图像缺陷识别算法是整个系统的核心部分,也是一个难点.它把摄像头采集来的图像进行分析处理,从而判断其是否合格.我们研究的胶囊图片在机器卡口上,6个为一组.图片如图1.

通过对工业摄像机采集到的胶囊图像依次进行中值滤波、双峰直方图分割、形态学处理、几何特征提取(面积、周长),在Hough直线检测后对胶囊壁两侧直线长度、倾斜度、胶囊两端圆弧近似长度的计算,实现胶囊外形缺陷的检测识别.

图1 采集的图像Figure 1 Collected image

1 图像预处理

图像中不可避免地伴有噪声的影响,这会对图像的定位、识别带来很大的影响.噪声是图像中不应该存在的小污点,它们是在图像的拍摄或者传送过程中产生的.必须在图像处理之前对其进行噪声消除,以最大限度地减少噪声带来的影响.典型的去噪方法有均值滤波器、中值滤波器、多图像平均法、低通滤波器[5].

我们采用中值滤波方法对采集到的图像进行预处理.中值滤波是一种非线性信号处理方法,是在保护边缘细节的同时滤除噪声.中值滤波效果依赖于窗口的大小,太大会使边缘模糊,太小则去噪效果不佳.因为噪声点和边缘点同样是灰度变化较为剧烈的像素,普通中值滤波在改变噪声点灰度时,会一定程度地改变边缘像素灰度值.但是噪声点几乎都是邻域像素的极值,而边缘往往不是,因此可以利用这个特性来限制中值滤波.笔者采用改进的中值滤波,逐行扫描图像,当处理每一个像素时,判断该像素是否是滤波窗口覆盖下邻域像素的极大或者极小值.如果是,则采用正常的中值滤波处理该像素;如果不是,则不进行任何处理.在实践中,这种方法能非常有效地去除突发噪声,且几乎不影响边缘.中值滤波在每个n×n邻域内都会忽略那些相对于邻域内大部分像素更亮或者更暗,并且所占区域小于像素总数的一半(n2/2)的那些像素的影响.改进的中值滤波在窗口移动过程中增加了当前值与邻域像素的比较操作,所以比普通中值滤波费时.经检测,采用普通中值滤波处理图1耗时3 438ms,而改进的耗时3 593ms,相差109ms.改进后比改进前慢了约3%.因为我们要检测外形,所以边缘信息很重要,这里的耗时可以接受.

改进中值滤波效果图如图2.

图2 改进中值滤波效果图Figure 2 Effect chart of improved median filtering

2 图像分割

图像分割的方法和种类非常多.图像分割算法一般基于图像灰度值的不连续性或其相似性.不连续性即基于图像灰度的不连续变化分割图像.如边缘检测、边界跟踪、Hough变换.相似性即依据事先制定的准则将图像分割为相似的区域.如区域分割、区域生长、区域分裂与合并.

在基于灰度值的相似性进行分割时,图像分割效果的好坏直接取决于阈值的选取.直方图法是最佳全局阈值确定的常用方法.在选择阈值时,根据不同的目标,对图像分割往往存在一个最佳的阈值.最佳全局阈值确定有两种常用方法:实验法和直方图法.

如果分割之前知道图像的一些特征,那么阈值确定比较简单,只要试验不同的阈值,然后看是否满足已知特征即可.比如,如果知道前景的平均灰度,那么就可以进行逐一的阈值实验,直到找到合适的阈值.不过这种方法需要知道图像的某些特征,而有的时候这些特征是事先不可知的.

如果前景物体内部灰度值分布比较均匀,背景灰度值的分布也是比较均匀的,这个图像的灰度直方图将有明显的双峰.当一幅图像的直方图具有双峰时,可选择两峰之间的谷点作为门限值.该方法比较简单,但是当两个峰值相差很远时不适用,因为前景和背景很可能有一部分灰度值是共有的.适用于两个峰值相距比较近的、具有明显双峰的图像,是一种比较理想的情况,实际中很难找到这样的图像.随着区域分割研究的不断深入,图像并行分割不但可以有一个阈值,还可以有多个阈值.采用一个阈值的方法比较容易受到噪声的影响,这些影响会在直方图中出现虚极值.

双峰法原理比较简单:它认为图像由前景和背景组成,在双峰直方图上,前后二景都形成高峰,在双峰之间的最低谷处就是图像的阈值所在.因为胶囊前后景对比较强烈,所以分割效果能达到要求.笔者通过得到图2的直方图如图3.

图3 图2直方图Figure 3 Histogram of Fig 2

由该图直方图分析得知,图像有四个明显的峰值,对应三个峰谷.中间的双峰部分为胶囊部分信息,两边部分为背景信息.只观察直方图可知,需要的两个阈值在15到45和95到200之间.所以本程序中根据直方图信息计算所得两个阈值为自动获取经检测发现此阈值对检测的大部分图片均有好的分割效果.针对图3,峰值必是比它两边至少10个像素在直方图中y轴坐标都大的点.经计算得到的六个峰值为2,55,136,173,207,255,我们取第一峰值与第二峰值之间的峰谷,经计算为39,第二峰值与第三峰值之间的峰谷,经计算为138.以这两个峰谷作为分割阈值.分割得到的图像如图4.

图4 图2分割后图像Figure 4 Segmented image of Fig 2

为了去除残留背景,笔者对比了两种方法:

1)对图4进行开运算,使用3×3矩形结构元,区域中比结构元小的部分都会被从区域中去除掉.去除物体间相连部分以分开物体.去除卡口边框.计算结果图中连通区域的面积,去除小面积,得到目标图像如图5.

图5 去除小目标后的目标图Figure 5 Graph of removing small goal

2)对于第一种方法,可以看出固定胶囊的卡壳并不能很好的消除掉.笔者想出了第二种方法,即首先对图2进行灰度开运算.令F表示灰度图像,S为结构元素(3×3),灰度开运算可表示为:F·S.该运算可以消除相对于结构元素S而言较小的高灰度区域.效果图如图6.

图6 图2的开运算处理图像Figure 6 Image of open computing in Fig 2

对图6采用双峰直方图进行分割,并进行灰度膨胀运算得效果图如图7.

图7 图6分割效果图Figure 7 Segmentation effects of Fig 6

为了去除不需要的信息(除胶囊外的部分),对图7进行灰度膨胀运算(图8):

图8 图7经过1次膨胀运算的效果图Figure 8 Effect chart of Fig7after 1time dilation

对图8进行直方图分割(图9):

图9 图8分割效果图Figure 9 Segmentation effects of Fig 8

可以看到胶囊与卡壳的粘连部分得到了较好的分离.为了计算面积,对图9进行二值化处理(图10):

图10 图9的二值化处理图像Figure 10 Two binary processing image of Fig 9

计算图10中连通区域的面积,去除小面积,得到目标图像如图11.

图11 去除小目标后的效果图Figure 11 Graph of removing small goal

经比较发现,第二种方法处理效果更好一些,所以本文采用第二种方法.

3 边缘检测

边缘可以被定义为在局部区域内图像特征的差别,它表现在图像上的不连续性(比如,灰度级的突变和纹理结构的突变等).大范围内的不连续即为边界.边缘检测用边缘点勾画出各个对象的轮廓,从而分析图像是否含有某些需要识别的目标.其目的就是要突出图像的边缘以便获取图像特征.为了得到更多的图像信息,我们把图11中的目标区域复原为原像素.如下图12:

图12 复原目标图Figure 12 Restoration goal graph

笔 者 分 别 采 用 了 Robert,Sobel,Prewitt,Log,Canny算子进行边缘检测,并对边缘检测效果进行了对比.对图12分别采用以上边缘检测算子进行处理.

经过比较结果图,Robert算子利用局部差分算子寻找边缘,边缘定位精度高,但容易丢失一部分边缘.Sobel与Prewitt算子都考虑了邻域信息,相当于对图像先做加权平滑处理,然后再做微分运算,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘.这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度.Log(Laplacian of Gaussian)算子克服了拉普拉斯算子抗噪能力比较差的缺点,但在抑制噪声的同时也可能将原有的比较尖锐的边缘也抑制掉了,造成这些边缘无法检测到.

Robert,Sobel,Prewitt,Log算子都是基于微分方法的边缘检测方法.它们都只有在图像不含噪声或者首先通过平滑去噪前提下才能正常应用.Canny算子在抗噪干扰和精确定位之间具有最佳折衷方案.笔者发现Canny算子只要找到合适的阈值,以高阈值为低阈值的3倍就能很好地检测出胶囊的边缘信息,而且能很好地消除胶囊卡口的粘连部分.因此,经过比较我们选用Canny算子为本文的边缘检测算子.

要在原图中提取出所需区域.在本程序中先在图12中找到胶囊轮廓,根据胶囊轮廓的外接矩形框的大小先排除一部分面积不合格的胶囊.通过实验得出基本合格的胶囊的矩形框大小在38 000和41 000之间.对目标胶囊连通区域进行分割,得到目标分割图像如图13:

图13 胶囊轮廓分割Figure 13 Capsule contour segmentation

4 Hough检测提取直线信息

Hough变换是图像处理中从图像中识别几何形状的基本方法之一.主要利用点线对偶性来进行映射变换.

图14 点-线的对偶性Figure 14 Duality of point-line

人工图像中,大多数物体都是由线或曲线组成的,所以图像处理中对线或曲线的识别和定位就显得十分重要.Hough(霍夫)变换是一种用于区域边界形状描述的方法,经典Hough变换常常被用于直线段、圆和椭圆的检测.其基本思想是将图像的空间域变换到参数空间,用大多数边界点满足的某种参数形式来描述图像中的曲线(区域边界).通过设置累加器进行累加,求得峰值对应的点就是所需要的信息.

笔者用Hough检测出轮廓图像图13中的直线,通过编程计算得到直线的信息:直线距屏幕左下角的距离,直线与垂直方向的夹角,胶囊壁两侧直线的近似长度.

图15 Hough检测胶囊轮廓图像中的直线Figure 15 Straight in capsule contour after Hough detection

计算中间两条直线之间的距离,我们要把这两条线段找出来,把它们的端点坐标保存起来,通过访问它们的坐标,定位出圆心.在图15中,以第4个胶囊为例,直线信息标记为下图:

图16 直线坐标标记Figure 16 Linear coordinate mark

上端半径r1=(x1-x0)/2,下端半径r2=(x′1-x′0)/2.由于本文从图13中得到胶囊的外界轮廓矩形,该胶囊的外界矩形记为rt,则该胶囊上端圆心横坐标为(x0+r1).纵坐标为(rt.top+r1).下端圆心横坐标为(x′0+r2),纵坐标为(rt.bottom-r2).

5 计算两端圆弧近似长度

根据检测到的圆心,可以定位出胶囊两端圆弧的大概位置.从而计算出胶囊两端圆弧的近似长度.有了半径,可以根据圆心来拟合圆弧,为了能识别胶囊两端的变形,提出了更简单的方法.由于胶囊两端圆形部分并不是标准的圆形,所以经过实验我们提取出这样一个特征,即把胶囊两端的圆弧部分的像素点数近似为圆弧的长度.这个特征能很好地对胶囊两端变形与不变形的胶囊进行分类.

1)定位圆弧首先定位圆心.(图17).

图17 定位胶囊两端圆弧圆心Figure 17 Positioning both ends of the arc center in capsule

2)定位出圆心后,根据胶囊两端圆弧的位置,定位出它的外接矩形框.见图18.

图18 定位胶囊两端圆弧部分Figure 18 Positioning both ends of the circular section in capsule

由此经过以上几步,就可以对胶囊外形合格与否做出正确的判断.提取的参数只要与正常胶囊这些参数的误差在可以允许的范围内,即可判定其是否合格.

表1中胶囊提取的特征如下(单位:像素):

6 结 语

对胶囊外形的缺陷进行了检测,采用改进的中值滤波算法对采集的图像进行预处理,与一些已经成熟的药片检测图像处理单元相比,我们用表1中提取的特征参数对胶囊外形进行检测取得了良好的检测效果.在1.86GHz,1G内存的PC机上检测算法的耗时在1 903~1 920ms之间.检验胶囊外形正确率达98%.特别是胶囊两端圆形部分近似长度参数、胶囊壁长参数、半径参数识别对于胶囊外形是否合格具有很高的分类能力.但是,对一些比较细微的缺陷,该方法不能进行识别.这些问题均为笔者下一步要解决的问题.

表1 胶囊外形特征参数(0表示不合格,1表示合格)Table 1 capsule shape characteristic parameters(0is unqualified,1is qualified)

[1]左 奇,史忠科.基于汲取视觉的胶囊完整性检测系统研究[J].西安交通大学学报,2002,36(12):1262-1265.

[2]叶青松.基于机器视觉的工业检测研究[D].无锡:江南大学,2008.

[3]王军海.残损胶囊图像检测系统的研究与设计[D].武汉:武汉理工大学,2008.

[4]徐 晓,翟静梅.基于机器视觉的形状检测尺寸方法研究[J].微计算机信息,2009,25(6):222-223.

[5]易 平,陈福生,邹红艳.图像处理中消除噪声的方法[J].计算机应用于软件,2003,5(1):29-34.

[6]吴 德.基于图像处理的胶囊检测系统的研究[D].广东:广东工业大学,2011.

[7]朱铭煜,周武能.图像处理在药片缺陷检测中的应用[J].计算机工程与设计,2010,31(23):5151-5154.

[8]梁华为.直接从双峰直方图确定二值化阈值[J].模式识别与人工智能,2002,15(2):253-256.

[9]DENNETH R C.Digital Image Processing[M].阮秋琦,阮宇智译.北京:清华大学出版社,1997:58-68.

[10]张 静,王宏刚.一种边缘提取的图像分割方法[J].光学信息,2001,27(5):424-427.

[11]韦 林,胡荣强.基于BP网络的胶囊药片自动检测系统[J].计算机应用研究,2002:1(4):52-53.

猜你喜欢

直方图灰度边缘
符合差分隐私的流数据统计直方图发布
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
基于FPGA的直方图均衡图像增强算法设计及实现
用直方图控制画面影调
基于最大加权投影求解的彩色图像灰度化对比度保留算法
中考频数分布直方图题型展示
一张图看懂边缘计算
基于像素重排比对的灰度图彩色化算法研究
在边缘寻找自我