入驻PP论坛 登录
 找回密码
 入驻PP论坛

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索

基于PVDC薄膜缺陷图像检测的一种自适应动态阈值算法

1 2287
[size=24.0000pt]基于PVDC薄膜缺陷图像检测的一种
[size=24.0000pt]自适应动态阈值算法
[size=11.0000pt]邹逸,无锡赛默斐视科技有限公司
[size=9.0000pt] [size=9.0000pt]Abstract[size=9.0000pt]—[size=9.0000pt]Thresholding is one of the key steps in image processing. There are various thresholding algorithms applied in industries. In this study, a self-adapt dynamic threshold method is proposed, aimed at preciously finding the contours of defects with different gray gradients. This algorithm is also compared with Otsu method.
[size=11.0000pt]
[size=11.0000pt]关键词:薄膜,瑕疵检测系统,缺陷检测,图像分割,动态阈值
[size=10.0000pt]I. [size=10.0000pt]简介[size=10.0000pt]薄膜在线瑕疵检测系统中,缺陷的检出率以及检出缺陷分类的准确率是整个系统性能指标的关键因素之一。一般的图像处理步骤如下:
[size=10.0000pt]
[size=8.0000pt]图1. 一般图像处理步骤
[size=10.0000pt]
[size=10.0000pt]在薄膜图像缺陷的检出到缺陷的分类过程中,缺陷的分割显然是非常关键的过程。在实际项目应用中,缺陷分割的过程大致分为两步,第一次进行较为粗略的分割,获得缺陷的可疑区域,第二次进行细致分割,得到每个区域对应缺陷的精确轮廓。本文主要研究二次分割的过程,并以PVDC薄膜图像为例,提出了一种自适应动态阈值法,并于常用的最大类间方差法(OTSU[1][2] 作对比。
[size=10.0000pt]
[size=10.0000pt]II. [size=10.0000pt]问题描述[size=10.0000pt]A. [size=10.0000pt]缺陷说明[size=10.0000pt]PVDC食品包装膜的常见缺陷有碳点、色皱、纤维皱等。而这些缺陷又因其深陷、面积大小不同,所导致的质量问题也不同。通常这些缺陷是由于生产工艺中掺入了杂质而产生的,在图像上,因杂质体积与打光角度的关系,除了自身的面积外,周围会有阴影产生,阴影并非缺陷的真实轮廓,但却会显著影响分割算法的结果。如何准确评判缺陷的大小,对缺陷图像的分割算法显得尤为重要。找出缺陷的真实轮廓,排除阴影部分的干扰,可以方便计算出缺陷的各种特征值,为其后续的分类算法打下基础,[size=10.0000pt]提[size=10.0000pt]高整个系统的准确率与实用性。
[size=8.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps42F.tmp.png[size=8.0000pt]
[size=8.0000pt]纤维皱
[size=8.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps430.tmp.png[size=8.0000pt]
[size=8.0000pt]色皱
[size=8.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps431.tmp.png[size=8.0000pt]
[size=8.0000pt]大碳点
[size=8.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps432.tmp.png[size=8.0000pt]
[size=8.0000pt]小碳点
[size=8.0000pt]图2. 典型的PVDC薄膜缺陷图像
[size=8.0000pt]
[size=10.0000pt]在实际项目中,[size=10.0000pt]首先[size=10.0000pt]将采集到的产品图像进行初步缺陷分割,[size=10.0000pt]得到[size=10.0000pt]所有可能是缺陷的异常区域,[size=10.0000pt]然后[size=10.0000pt]根据第一次初步分割的结果,选择周围100*100的区域,依次进行第二次分割,得到准确的缺陷区域,[size=10.0000pt]随后[size=10.0000pt]再对这些区域进行特征计算,根据计算的特征值,[size=10.0000pt]进行[size=10.0000pt]分类,程序自动统计当前所有缺陷,与预先由用户输入的产品质量标准进行对比,[size=10.0000pt]然后[size=10.0000pt]对产品质量做出评判。显然,[size=10.0000pt]二次[size=10.0000pt]分割的准确性会影响到后续的步骤,是整个系统图像分析模块的关键,所以此时算法的精准性要求非常高。
[size=10.0000pt]本文介绍两种精确分割算法,[size=10.0000pt]一种[size=10.0000pt]是最大类间方差法,[size=10.0000pt]是[size=10.0000pt]一种计算最佳固定阈值很常用的方法;[size=10.0000pt]另一种[size=10.0000pt]是我公司研发人员发明的动态阈值算法,[size=10.0000pt]自动[size=10.0000pt]寻找最佳动态阈值。[size=10.0000pt]最后[size=10.0000pt]会对两种算法在实际应用中做出效果上的对比。
[size=10.0000pt]B. [size=10.0000pt]假设前提[size=10.0000pt]在薄膜生产过程中,会有很多系统误差产生,如操作不当引起的薄膜抖动,平场校正误差,以及信号干扰等情况。对于此类误差,有相关的方法来避免[3][4],在本文中不做讨论。
[size=10.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps433.tmp.png[size=10.0000pt]
[size=8.0000pt]行频信号丢失
[size=10.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps434.tmp.png[size=10.0000pt]
[size=8.0000pt]平场校正误差
[size=10.0000pt]file:///C:\DOCUME~1\ww\LOCALS~1\Temp\ksohtml\wps435.tmp.png[size=10.0000pt]
[size=8.0000pt]抖动
[size=8.0000pt]图3. 系统误差
[size=8.0000pt]
[size=10.0000pt]此外,两种不同的缺陷也有较小的可能性粘连在一起,导致分割时发生混乱,这类情况发生概率极小,不在本文讨论范围内。
[size=10.0000pt]


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
分享 支持 反对
发表于 2014-12-10 15:33:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 使用道具 举报

该帖共收到 1 条回复!
III. 算法实现
A. 最大类间方差法(OTSU)
最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大律法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两个部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
OTSU在性能上可以做进一步优化[5][6],在本例中,我们不考虑时间复杂度上的优化,仅仅关注分割效果。假设要分割的缺陷相对背景为深色,则此处提供一个可行的OTSU算法,其值计算方式如下:


t:当前分割的阈值,取值范围[2,255]
AD:满足灰度值在[1,t-1]的暗部区域的面积
AL:满足灰度值在[t,255]的亮部区域的面积
MD:暗部区域的灰度均值
ML:亮部区域的灰度均值
DevD:暗部区域的灰度方差
Area:整个图像的面积

算法伪码如下:
Input:    Image
Output:   Best_Thresh

OTSU( Image )
1 Best_Thresh ← 1
2 Max_Variance ← 0
3 Area_Image ←计算Image的面积
4 for Test_Thresh ← 2 to 255
5 Region_Dark ←计算灰度值在[1, Test_Thresh-1]的  区域
6     Region_Light ←计算灰度值在[Test_Thresh, 255]的区域
7 Area_Dark ←计算Region_Dark的面积
8     Area_Light ←计算Region_Light的面积
9 ifArea_Dark>0 and Area_Light>0
10 then
11             Mean_Dark ←计算Region_Dark的灰度均值
12             Mean_Light ←计算Region_Light的灰度均值
13             Dev_Dark ←计算Region_Dark的灰度方差
14             Dev_Light ←计算Region_Light的灰度方差
15             Ratio_Dark ← Area_Dark / Area_Image
16             Ratio_Light ← Area_Light / Area_Image
17 MSE ← pow( Mean_Light – Mean_Dark, 2 )
18             Otsu ← Ratio_Dark * Ratio_Light * MSE / Dev_Dark
19 if Otsu > Max_Variance
20 then
21 Max_Variance ← Otsu
22                 Best_Thresh ← Test_Thresh
23 return Best_Thresh

注:若分割缺陷为亮区域,则18行的Dev_Dark替换为Dev_Light
B. 自适应动态阈值法
此方法是我公司研究人员在项目实施过程中发现的缺陷分割算法,不同于普通的动态阈值分割方法,本算法在初步的阈值分割后,对所有可疑区域进行二次动态阈值分割,算法的核心在于找到二次分割时最适合的动态阈值。也就是说,每个缺陷都会由不同的动态阈值来分割,由此避免深浅不一而引起的漏检或轮廓与实际偏差较大的问题。
在实际操作中,对全图进行一次动态阈值分割,此时阈值较小,防止遗漏较浅的缺陷区域,然后将可疑区域的周边图像逐个生成小图,算法通过循环的方式,从大图的阈值开始逐次增加,对小图进行动态阈值分割,同时计算当前区域的特征向量,直到其满足某个特定条件为止。在PVDC薄膜检测项目中,我们发现当分割区域的灰度方差介于7 - 8时,分割效果满足用户对缺陷大小的评判标准。
在实际项目运用时,计算最佳动态阈值的算法的性能已得到很多优化,这里为了简便起见,不做任何优化,阈值每次递增1。

算法伪码如下:
Input:    Image
Output:   Best_Thresh

AUTODYNTHRESH( Image )
1 MeanImage1 ←对Image做模版尺寸为(3,3)的均值滤波
2 MeanImage2 ←对Image做模版尺寸为(49,49)的均值滤波
3 Best_Thresh ← TestThresh ← 5   //这里根据要检出的最浅缺陷取值
4 RegionDark ← DynThreshDark( TestThresh )  
//以MeanImage1为原图,MeanImage2为滤波图,做动态阈值分割暗部
5 AreaRegion ←计算RegionDark的面积
6 DevRegion ←计算RegionDark的方差
7 while  AreaRegion > 0  and  DevRegion > 8
8     TestThresh ← TestThresh + 1
9     RegionDark ← DynThreshDark( TestThresh )
10     AreaRegion ←计算RegionDark的面积
11     DevRegion ←计算RegionDark的方差
12 if  AreaRegion > 0
13 then  Best_Thresh ← TestThresh
return  Best_Thresh

IV. 算法比较与评估
最大类间方差法与自适应动态阈值法的分割效果对比:
A. 纤维皱
方法
最大类间方差法
自适应动态阈值法
结果


面积
1149
559
阈值
133
28
均值
118.909
111.358
方差
9.6224
7.72845

B. 色皱
方法
最大类间方差法
自适应动态阈值法
结果


面积
497
461
阈值
124
18
均值
113.31
112.9
方差
6.57204
7.07953

C. 大碳点
方法
最大类间方差法
自适应动态阈值法
结果


面积
91
140
阈值
15
71
均值
8.63736
13.45
方差
3.19174
7.59918

D. 小碳点
方法
最大类间方差法
自适应动态阈值法
结果


面积
25
33
阈值
73
71
均值
65.72
69.0606
方差
4.1233
7.08365

1号纤维皱缺陷,是由于生产过程中有纤维混入,导致薄膜在纤维周围形成褶皱。OTSU分割的结果明显比实际纤维的范围要大,尤其在中间区域,纤维因弯曲而形成的阴影区域被算法识别为缺陷区域,且在左右侧有离散的点,事实上这些点是由阴影或CCD成像不均匀引起的干扰点,与实际缺陷无关。自适应动态阈值法所分割的缺陷,算法自动找到最佳动态阈值28,分割区域基本完全贴合了纤维的轮廓,仔细观察可以发现,在较深的部位,区域的宽度明显更宽,在较浅的部位,分割区域明显变窄,很好的体现了缺陷的深浅变化。
2号色皱缺陷,相比纤维皱与碳点更浅,且边缘比较模糊,没有明显的边界,显然无论取值为多少,固定阈值分割的方式无法满足此类缺陷的分割,可以看到分割效果图中,缺陷区域边缘毛刺较多,且周边有很多离散的杂点,这种分割效果会因此很大的数据误差,对后续处理产生较大的影响。而自适应动态阈值法,找到最佳分割阈值18,可以得到一个相对平滑、完整的轮廓,且基本贴合缺陷的核心区域,周围的阴影部分完全没有产生干扰。
3号4号为典型的碳点缺陷,此类缺陷颜色较深,且会在周围形成大面积的阴影,实际区域通常只在最核心的位置。对于此类缺陷的分割,OTSU与我们的方法并没有太大差距,只是OTSU所分割的区域面积通常更小一些。
通过上述对比不难发现,在分割碳点这类较深的缺陷时,两种方法的区别并不明显,都能相对准确的找到缺陷的轮廓,OTSU方法分割得到的区域比实际肉眼观察的稍小,自适应动态阈值方法分割的缺陷轮廓与肉眼观察的形状更接近一些。
而在分割色皱、纤维皱这类较浅且形状复杂的缺陷时,OTSU方法并不理想,边缘不清晰导致其结果有很多干扰,且边缘与实际肉眼观察的形状差距非常大;相比之下,自适应的动态阈值法所分割的区域,轮廓非常贴合实际缺陷,边缘十分平滑。

V. 结论
对PVDC薄膜常见的缺陷图像,我们通过两种分割算法的对比,发现在边缘模糊的情况下,自适应动态阈值算法有着非常明显的优势,可以准确的分割出缺陷区域,便于计算缺陷的特征值。
此例中所使用的OTSU是经过初步优化的,也许并不代表OTSU的最佳性能,但是在模糊边界的把握上,固定阈值的局限性是显而易见的[7]。而自适应动态阈值的思想来源于OTSU,旨在寻找最佳阈值。本例中,其寻找阈值的条件仅是根据缺陷的特点量身定制,通用性还有待提高。在今后的研究中,我们可以尝试分割不同产品的缺陷,研究不同缺陷的最佳动态阈值的条件,把算法的应用范围从PVDC薄膜扩展到其他种类的薄膜,甚至是钢板、玻璃、纸张等等材料上,使其成为真正实用的优秀算法。


参考文献
[1] 肖超云, 朱伟兴. 基于Otsu准则及图像熵的阈值分割算法. 计算机工程, 2007, ..(14), pp.188-189, 209.
[2] NOBUYUKI OTSU. A Threshold Selection Method from Gray-Level Histograms. IEEE Transactions on systems, man, and cybernetics, VOL.SMC-9, NO.1, January 1979.
[3] 钟球盛, 李静蓉, 胡广华. 用于光学薄膜缺陷检测的快速图像分割算法. 机电工程, 第28卷第10期, 2011年10月.
[4] 徐树兴, 王宝光, 郑义忠. 线阵CCD平场校正及FPGA实现的研究. 宇航计测技术, 第27卷第6期, 2007.
[5] 郝颖明, 朱枫. 2维Otsu自适应阈值的快速算法. 中国图象图形学报:A辑. 2005年第4期.
[6] 胡敏, 李梅, 汪荣贵. 改进的Otsu算法在图像分割中的应用. 电子测量与仪器学报. 2010年05期.
[7] Carsten Steger, Markus Ulrich, Christian Wiedemann. Machine Vision Algorithms and Applications; 杨少荣等译. 清华大学出版社, 2001.11. ISBN 978-7-302-18196-5. pp.144-155.

发表于 2014-12-10 15:34:05 | 只看该作者

回复 | 支持 | 反对 使用道具 举报

您需要登录后才可以回帖 登录 | 入驻PP论坛

本版积分规则

推荐板块

美图秀

热门活动

热门推荐

关闭

站长推荐上一条 /1 下一条

QQ|手机版|小黑屋|Archiver|联系我们 ( 鲁ICP备17027311号-3

GMT+8, 2024-5-6 09:05 , Processed in 0.076921 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表