«上一篇
文章快速检索     高级检索
下一篇»
  应用科技  2018, Vol. 45 Issue (4): 131-136  DOI: 10.11991/yykj.201802005
0

引用本文  

王东, 黎万义, 孙佳, 等. 基于机器视觉的微小零件表面缺陷检测研究[J]. 应用科技, 2018, 45(4): 131-136. DOI: 10.11991/yykj.201802005.
WANG Dong, LI Wanyi, SUN Jia, et al. Research of small parts' surface defects inspection based on machine vision[J]. Applied Science and Technology, 2018, 45(4): 131-136. DOI: 10.11991/yykj.201802005.

基金项目

国家自然科学基金青年基金项目(61401463);国家自然科学基金面上项目(61771471)

通信作者

王东, E-mail:wd_gz@163.com

作者简介

王东(1978-), 男, 教授

文章历史

收稿日期:2018-02-12
网络出版日期:2018-03-22
基于机器视觉的微小零件表面缺陷检测研究
王东1, 黎万义2, 孙佳2, 郝高明2, 王鹏2    
1. 贵州师范学院 数学与计算机科学学院, 贵州 贵阳 550018;
2. 中国科学院 自动化研究所, 北京 100190
摘要:针对人工检测微小零件表面缺陷存在的不足,提出一种基于机器视觉的微小零件表面缺陷检测方法。首先分析微小零件检测内容的特点,通过机器视觉专用软件HALCON提供的图像滤波、阈值分割算子提取缺陷区域,并设计了一种自动选择平滑滤波尺寸与阈值的最优取值算法,再采用改进的边缘检测算法准确提取表面的边缘位置,将图像以边缘为界分割成不同的区域,运用区域形态学方法对候选缺陷进行筛选,最后使用区别特征实现缺陷分类与标记。实验结果表明,该方法能够稳定的进行微小零件表面缺陷的识别与检测,缺陷识别率达到97.05%,达到预期检测目标。
关键词缺陷检测    微小零件    机器视觉    图像处理    图像滤波    中值滤波    阈值分割    边缘检测    
Research of small parts' surface defects inspection based on machine vision
WANG Dong1, LI Wanyi2, SUN Jia2, HAO Gaoming2, WANG Peng2    
1. Institute of Mathematics and Computer Science, Guizhou Normal College, Guiyang 550018, China;
2. Institute of Automation, Chinese Academy of Sciences, Beijing 100190, China
Abstract: Aiming at the shortcomings of manual detection on surface defects of small parts, this paper proposes a method for detecting surface defects of micro parts based on machine vision. Firstly, analyze the characteristics of small parts detection, extract the defect region by the image filtering and threshold segmentation operator provided by the special machine vision software HALCON, and design an optimal value selection algorithm for automatically selecting the smooth filter size and threshold, and then use the improved edge detection algorithm to extract the edge position of the surface accurately. Further, divide the image into different regions by taking edge as boundary, and then filter the candidate defect by region morphology method. Finally, the classification and labeling of defects are realized by the distinguishing features. The experimental results show that the method can stably identify and detect the surface defects of small parts, and the defect recognition rate reaches 97.05%, reaching the expected detection target.
Keywords: defect detection    small parts    machine vision    image processing    image filtering    median filter    threshold segmentation    edge detection    

微小零件具有尺寸和表面质量高精化的显著特征, 在应用上有极高的可靠性要求。由于生产工艺的复杂性、多样性, 零件在生产加工过程中往往会在表面产生划痕、裂纹、凹坑、垫伤等微观缺陷[1-2]。这些缺陷不仅降低了零件的使用性能, 也给使用带来很大的安全隐患, 因此, 在出厂使用前需要通过一些测量手段将带有缺陷的零件检测出来。目前, 微小零件的表面质量检测通常是由检测人员借助显微工具进行, 其检测结果易受检测人员的主观因素影响, 且目测方式也会给检测人员和视力造成极大的危害[3-5]。基于机器视觉[6-9]的微小零件表面质量自动检测具有快速、检测精度高、稳定性好等优点受到广泛关注, 对其进行研究具有重要的实际价值和广泛的应用前景。

本文针对微小零件天面上形成的划痕、凹坑缺陷, 构建了基于图像处理技术[10]的非接触式快速检测方法, 提出一种自动选择平滑滤波尺寸与阈值的最优取值算法, 该算法高效准确, 避免了人为因素的影响。对于零件边缘位置的伪缺陷, 使用了改进的边缘分割算法准确提取边缘位置, 将图像以边缘为界分割成不同的区域, 通过区域形态学方法进一步对缺陷进行筛选, 有效降低了缺陷检测算法的误检率。

1 微小零件检测内容分析

本文的研究对象是尺寸为(8±2 mm)×(8±2 mm) ×(3±1 mm)的微小零件, 根据企业提供的缺陷样品、生产情况及检测需求, 将表面检测缺陷划分为划痕和凹坑。划痕是零件在打磨过程中受到机器碰击出现的刮伤, 划痕没有特定的方向和长度, 表现为线状特征; 凹坑是在加工过程中操作不当或由模具中微小沙子造成零件表面留下的小坑状痕迹。无论是划痕还是凹坑缺陷, 缺陷目标在整个图像中所占的像元很少, 并且信噪比低, 背景区域分布不均匀, 背景与缺陷目标灰度值区分不明显。因此, 为准确检测和识别缺陷, 必须采用有效的算法突出图像中的缺陷特征, 削弱图像的背景特征。图 1为零件样本局部图。

Download:
图 1 零件样本局部图
2 图像处理

使用图像采集机构获取到原始图像数据后, 要通过图像处理算法对其进行处理, 实现微小零件表面缺陷识别分类。检测的主要流程如图 2所示。检测过程主要涉及图像滤波、阈值分割、区域连接与选择、缺陷筛选、缺陷识别与标记几个步骤。图 3是2种缺陷的局部图像。

Download:
图 2 检测流程
Download:
图 3 缺陷类型
2.1 图像滤波

在采集到的原始图像中, 零件表面不同位置明亮程度有所不同, 出现较多随机性干扰纹理, 而且边缘处出现阴影区域, 需要首先对图像噪声进行有效抑制。图像滤波算法能对图像进行平滑, 减少噪声对后续图像处理的影响。均值滤波[11]、中值滤波[12]是常用的2种图像滤波器。均值滤波是用原图中各个像素点的邻域灰度均值替换对应的像素点的灰度, 即遍历图像所有的像素点, 对于当前的像素点(i, j), 灰度表示为f(i, j), 选取1个模板, 计算该像素在模板内的灰度均值g(i, j), 再把这个均值赋给该像素点, 计算公式为

$ g\left( {i, j} \right) = \frac{1}{m}\sum {f\left( {i, j} \right)} $

相比均值滤波, 中值滤波器则是一个非线性滤波器, 把原图像中每一个像素点的灰度值替代为该像素点给定邻域窗口内的所有像素点灰度值的中值。具体实现是从图像中的某个采样窗口取出奇数个像素灰度进行排序, 再用排序后的中值取代要处理的数据即可。在实验中分别使用了2种滤波器, 使用均值滤波对图像平滑后, 对图像进行阈值分割时容易将边缘处的阴影区域也分割出来, 而采用中值滤波去除噪声的效果明显优于均值滤波。

2.2 阈值分割

最简单的阈值分割将ROI内灰度值介于某一指定范围内的全部点作为输出, 这种固定阈值在零件表面灰度值和背景灰度值不变时效果很好。然而在对微小零件的图像采集过程中, 由于照明受环境影响会发生变化, 零件表面的随机纹理使得背景并不均一, 目标体经常表现为比背景局部亮一些或暗一些。并且, 目标缺陷在整幅图像所占的比例较小, 对比度很低, 无法在图像的整体直方图上凸显, 采用固定阈值分割得到的结果较差。本文采用动态阈值分割方法来提取缺陷, 其基本原理是:在目标缺陷的局部区域内, 缺陷依然比背景更亮或更暗, 可以通过指定缺陷比其所处区域的背景亮多少或暗多少来提取目标。该方法通过平滑处理得到整幅图像的背景灰度, 原始图像与背景图像相减大于或小于某个值来提取想要的目标物体, 表达式为

$ B\left( {x, y} \right) = F\left( {x, y} \right)-G\left( {x, y} \right) > T $ (1)
$ B\left( {x, y} \right) = F\left( {x, y} \right)-G\left( {x, y} \right) < T $ (2)

式中:F(x, y)为原始图像, G(x, y)为经过均值滤波或中值滤波平滑后的背景图像, T为指定的阈值, B(x, y)为分割结果。式(1)可以分割出比背景亮的物体, 式(2)可以分割出比背景暗的物体。

可以看出, 影响动态阈值分割算法的2个因素是平滑滤波器的尺寸K和阈值T。一般而言, 平滑滤波器的尺寸与阈值都不宜过大或过小, 平滑滤波器的尺寸宽度应该大于被分割物体的宽度, 阈值T如果较大, 虽可以更好地抑制噪声, 但有可能丢掉目标物体的边缘灰度而造成分割不完整; 若较小, 虽能确保目标物体被完整分割, 但同时可能会带来噪声的影响。实际使用时, 通常手工不断调整参数KT的值, 并观测对样例图像的分割效果, 从而选定最终参数。显然, 这种方式容易顾此失彼, 1组参数对某一特定样例分割效果最优但未必对其他样例的效果同样好, 通过人工观查判断也容易受主观因素影响, 该方式很难从整体上找到最优的参数组合。我们提出了一种自动确定最优参数值的方法, 首先选择1组包含缺陷的样例图像, 依次对每一个样例图像通过人工标记出缺陷区域, 并将缺陷区域保存到文件中。该过程的实现是很容易的, 具体应用时可以将人工标记过程通过交互界面可视化, 操作时可以针对每个样例图像中的每个缺陷区域设定分割参数, 并实时呈现分割结果, 经过多次分割处理可以精确得到1个样例图像中的所有缺陷区域。这样得到的缺陷区域文件就构成自动寻参的对比基准。然后, 对每一个平滑尺寸K与阈值T的取值组合, 计算检测算法的分割结果与人工标记结果的相似度, 对所有样例, 相似度之和最大的一组参数取值为最优参数。为此, 我们构建了自动分割算法与人工标识的缺陷区域相似度计算方法, 公式定义如下:

$ {\rm{sim}}\left( {X, Y} \right) = 0.5 \times \frac{{S\left( {X \cap Y} \right)}}{{S\left( X \right)}} + 0.5 \times \left( {1-\frac{{S\left( {Y-X} \right)}}{{S\left( Y \right)}}} \right) $

式中:X表示检测算法分割的缺陷区域, Y表示人工标记的缺陷区域, 函数S用于计算区域的面积, S(XY)表示区域X与区域Y交集的面积, $\frac{{S\left( {X \cap Y} \right)}}{{S\left( X \right)}}$表示检测算法分割结果与人工标记的重合度, S(Y-X)表示区域Y与区域X差集的面积, ${\frac{{S\left( {Y-X} \right)}}{{S\left( Y \right)}}}$表示检测算法分割结果与人工标记的差异度, 理想的分割结果应该使重合度最大化, 差异度最小化。显然, 相似度取值位于0~1之间, 当XY完全重合时, sim(X, Y)=0.5×1+0.5×(1-0)=1, 当X与完全分离时, sim(X, Y)=0.5×0+0.5×(1-1)=0, 我们的目标是要选择使式(3)最大化的一组参数值:

$ {\rm{max}}\sum\limits_{f = 1}^n {{\rm{sim}}({X_i}, {Y_i})} $ (3)

具体算法实现如下:

输入 样例图像, 样例图像缺陷区域人工标记文件

输出 最优平滑尺寸K, 阈值T

init(max_sim=0, K=imin, T=jmin)//声明变量

for i= imin to imax//平滑尺寸从iminimax

for j=jmin to jmax//阈值从jminjmax

sim=0

for f=1 to n//依次处理样例图像

X←segmentation(f)//检测算法分割缺陷

Y←read_region(f)//读取人工标记缺陷区域

sim=sim+sim(X, Y)//计算相似度之和

endfor

if(sim> max_sim)//当sim大于max_sim时, 更新max_sim、KT的值

update(max_sim, K, T)

endif

endfor

endfor

获得平滑滤波尺寸K和阈值T后, 使用median_image算子平滑图像, 使用dyn_threshold算子实现局部阈值分割。

2.3 区域连接和选择

通过局部阈值分割后的输入图像的所有点都存储在1个区域内, 多个可能的缺陷就位于分割后的区域中, 它们应该被彼此独立出来。使用connection算子可以合并彼此相连的区域。同时, 连接后的区域中也会存在干扰区域, 应该将这些区域从分割结果中剔除, select_shape算子可以根据给定的区域特征选择出我们希望得到的Region, 其调用原型为select_shape(Regions:SelectedRegions:Features, Operation, Min, Max:), 对给定的区域特征Features, 如面积、高度、宽度、圆度等, 依次对联接区域中的每个区域按以下条件:

$ {\rm{Mi}}{{\rm{n}}_i} \le {\rm{Featur}}{{\rm{e}}_i}({\rm{Object}}) \le {\rm{Ma}}{{\rm{x}}_i} $

进行计算, 选择出符合条件的区域集合SelectedRegions作为输出。我们使用面积为特征, 选择面积位于105~10 000之间的区域作为输出, 这些输出区域称为候选缺陷, 还要做进一步处理。

2.4 缺陷筛选

使用select_shape算子对分割结果进行选择后, 结果集中仍然包含一些非缺陷的区域, 这些区域位于零件表面之外的背景中, 常常分布在零件表面的边缘附近。这是由于图像滤波和阈值分割的参数设置要求较高, 阈值分割结果的准确度很大程度上由分割时设置的参数决定, 尤其当光照改变时, 此时要求阈值分割必须非常准确地适应改变后的照明情况。要让阈值分割动态地改变, 做到自适应是比较困难的。由于阈值分割结果中的非缺陷区域通常出现在零件表面外靠近边缘的位置, 我们可以通过准确提取表面的边缘位置, 将图像以边缘为界分割成不同的区域, 通过区域形态学方法进一步对缺陷进行筛选, 将位于背景区域中的非缺陷区域过滤掉。为此, 首先要对图像进行边缘提取, 获取零件表面的边缘位置; 然后对边缘围成的区域进行填充, 分割出内边缘围成的区域(中心区域)以及外边缘围成的区域(方形区域), 对方形区域计算补集就是零件表面的外部区域, 外部区域和中心区域共同构成零件的背景区域; 最后通过区域间的集合运算, 很容易得出缺陷区域的位置信息。如果缺陷区域完全位于背景中, 则应该被过滤掉。若缺陷区域的一部分位于背景区域中, 另一部分位于零件表面区域中, 则当位于零件表面区域中的面积大于预设值时, 该缺陷区域应该被保留。

具体步骤:

1) 使用median_image算子对图像执行中值滤波。

2) 使用边缘检测算子edges_image(Image:ImaAmp, ImaDir:Filter, Alpha, NMS, Low, High:)进行边缘提取, 通过Filter参数设置滤波器, 我们分别使用sobel、canny、lanser滤波器[13-14]及改进的方法进行边缘提取对比。使用sobel对零件图像进行边缘提取, 真实边缘没有被完全提取出来, 存在较严重的漏检, 已提取出的边缘中有较多的多像素边缘, 见图 4(a)。使用canny对零件图像进行边缘提取, 实边缘没有被完全提取出来, 存在较大的间断边缘, 已提取出的边缘中有很多多像素边缘, 并存在干扰的伪边缘, 见图 4(b)。采用lanser对图像进行边缘提取, 可以较完整的提取出零件的边缘轮廓, 但同时仍然存在较为严重的多像素边缘干扰, 见图 4(c)。我们选择lanser对图像进行边缘提取, 并对提取结果进一步处理, 去除干扰, 得到比较理想的边缘提取结果, 见图 4(d)

Download:
图 4 边缘检测

3) 使用dilation_rectangle1算子对检测到的边缘进行膨胀, 合并细小边缘。

4) 使用skeleton算子对膨胀后的边缘提取骨架, 再使用select_shape选择长度大于一定阈值的连通边缘。

5) 使用connection算子合并彼此相连的区域。

6) 使用fill_up算子对边缘围成的区域进行填充。

7) 使用select_shape算子选取面积在440 000~550 000的区域, 获取中心区域, 选取面积在550 000~990 000的区域, 获取方形区域。

8) 使用complement算子计算方形区域的补集, 获取外部区域。

9) 遍历候选缺陷集合, 对每个候选缺陷区域依次进行处理:

a) 使用select_obj算子选择候选缺陷区域。

b) 使用intersection算子计算候选缺陷区域与中心区域交集的面积。

c) 使用intersection算子计算候选缺陷区域与外部区域交集的面积。

d) 若候选缺陷区域位于中心区域或外部区域中, 过滤该区域, 否则, 候选缺陷为真实缺陷。

2.5 缺陷分类识别与标记

对零件表面缺陷进行分类, 需要提取缺陷特征参数, 根据这些参数形成识别不同缺陷的标准。对于文中研究的对象, 直观上看, 要识别的是2类缺陷:划痕和凹坑, 划痕呈现线性形状, 而凹坑则呈现圆型, 形状上有较为明显的差异, 因此, 用圆度特征来区别2类缺陷, 圆度计算为

$ C = F/{\rm{ \mathsf{ π} }}{r^2} $

式中:F为缺陷面积, r为区域外接圆半径。C的取值范围为[0, 1], C越接近1, 表明该区域越接近于圆。实验中使用circularity算子计算缺陷区域的圆度, 取C在[0.19, 1]范围内的缺陷为凹坑, 取C在[0.01, 0.19]范围内的缺陷为划痕。最后, 我们对不同的缺陷进行标记, 先使用dilation_circle算子对缺陷区域进行膨胀, 再使用gen_contour_region_xld算子根据区域创建XLD轮廓, 对轮廓使用不同颜色标记出缺陷位置。最终结果如图 5所示。

Download:
图 5 检测结果
3 实验结果

取30个含有合格和缺陷的零件进行实验测试, 采用HALCON编程实现, 平滑滤波尺寸与分割阈值的取值分别为7和14, 将缺陷检测算法的检测结果与人工检测结果进行了对比。表 1是对不同缺陷类型及其检测准确率的统计结果, 可以看出, 对划痕缺陷, 误检数为1个, 无漏检, 正确率为95%;对凹坑缺陷, 误检数和漏检数均为0, 正确率为100%, 缺陷平均检测准确率为97.05%。而完成1个零件的平均检测时间为0.56 s, 达到预期检测目标。

表 1 缺陷检测结果
4 结论

本文以微小尺寸零件为研究对象, 利用HALCON软件设计零件表面缺陷检测方案, 实现了对微小尺寸零件2种典型缺陷精确有效的分割与提取。

1) 对动态阈值分割算法中平滑滤波器的尺寸和阈值的选择, 设计了能自动选择平滑滤波尺寸与阈值的最优取值算法, 该算法高效准确, 可替代人工确定参数的过程。

2) 进行动态阈值分割后得到的初步分割结果中还包含一些伪缺陷, 根据伪缺陷在零件表面的分布特点, 使用改进的边缘检测算法准确提取表面的边缘位置, 从而将图像以边缘为界分割成不同的区域, 再运用区域形态学方法对区域进一步处理, 实现了对伪缺陷的有效过滤。

3) 通过实验表明, 零件的缺陷漏检率为0, 各缺陷分类平均正确率达到97.05%, 实验验证了缺陷检测算法的可靠性, 可以满足实际应用需求。

参考文献
[1] LAI Xinmin, LI Hongtao, LI Chengfeng, et al. Modelling and analysis of micro scale milling considering size effect, micro cutter edge radius and minimum chip thickness[J]. International journal of machine tools and manufacture, 2008, 48(1): 1-14. DOI:10.1016/j.ijmachtools.2007.08.011 (0)
[2] 于化东. 超精密微机械制造技术研究进展[J]. 长春理工大学学报:自然科学版, 2008, 31(3): 1-8. (0)
[3] LIN H D. Computer-aided visual inspection of surface defects in ceramic capacitor chips[J]. Journal of materials processing technology, 2007, 189(1/2/3): 19-25. (0)
[4] 罗菁, 董婷婷, 宋丹, 等. 表面缺陷检测综述[J]. 计算机科学与探索, 2014, 8(9): 1041-1048. (0)
[5] 赵君爱, 贾民平. 工件表面微小缺陷的检测与识别方法[J]. 东南大学学报:自然科学版, 2014, 44(4): 735-739. (0)
[6] 胡佳成, 陆枫, 陈爱军, 等. ABS齿圈环形表面缺陷检测方法[J]. 电子测量与仪器学报, 2017, 31(3): 408-414. (0)
[7] 胡秀珍, 隋青美. 基于机器视觉的铁芯表面缺陷检测系统研究[J]. 仪器仪表用户, 2017, 24(1): 21-23, 90. DOI:10.3969/j.issn.1671-1041.2017.01.004 (0)
[8] 李晓舟, 于化东, 于占江, 等. 微小尺寸零件表面缺陷光学检测方法[J]. 兵工学报, 2011, 32(7): 872-877. (0)
[9] 李勇, 伍先达, 邢武, 等. 基于机器视觉的零件表面瑕疵自动分拣系统设计[J]. 自动化与仪器仪表, 2010(5): 40-41, 44. DOI:10.3969/j.issn.1001-9227.2010.05.017 (0)
[10] 朱先锋, 潘洪军. 基于Halcon的硒鼓缺陷检测与一维尺寸测量[J]. 吉林大学学报:信息科学版, 2014, 32(3): 308-315. (0)
[11] 王科俊, 熊新炎, 任桢. 高效均值滤波算法[J]. 计算机应用研究, 2010, 27(2): 434-438. DOI:10.3969/j.issn.1001-3695.2010.02.008 (0)
[12] 王福忠, 尹凯凯. 一种基于中值滤波的局部阈值分割算法[J]. 电子测量技术, 2017, 40(4): 162-166. DOI:10.3969/j.issn.1002-7300.2017.04.036 (0)
[13] 王小俊, 刘旭敏, 关永. 基于改进Canny算子的图像边缘检测算法[J]. 计算机工程, 2012, 38(14): 196-198. (0)
[14] 袁春兰, 熊宗龙, 周雪花, 等. 基于Sobel算子的图像边缘检测研究[J]. 激光与红外, 2009, 39(1): 85-87. DOI:10.3969/j.issn.1001-5078.2009.01.023 (0)