目录
文章目录
前言
最近一直在研究高纹理图像中Mura类型缺陷的检测,此类缺陷检测属于表面检测的范畴,以下是对Halcon官方例子中一个相似案例的分享学习。
一、Mura是什么?
- Mura概述
Mura类型的缺陷,一般用于在屏幕显示行业中,描述在屏幕显示的测试过程中,形成的团块状坏点区域,在表面检测领域常常用来表述皮革,布料,半导体磨砂面等表面团块且与纹理背景有差异的团块缺陷类型。
2. 检测难点
Mura类型缺陷,最大的难点在于所处的背景过于复杂,使采用普通的阈值+形态学方法在此处常常失灵,还有就是Mura缺陷的灰度范围和背景中复杂纹理处于同一灰阶范围,难以通过常规手段分割提取。但是对应一些背景较浅的情况 mean_image + 动态阈值的方法也可以起到意料之外的效果。
二、Halcon官方detect_mura_defects_texture.hdev例子
1.例子描述
* This example shows how to detect mura defects
* in highly textured images
这个例子展示了如果在高纹理的图像中检测mura类型缺陷
*********************
2.读入第一张图像展示
代码如下(示例):
dev_update_off ()
Path := 'lcd/mura_defects_texture_'
read_image (Image, Path + '01')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('red')
该处使用的url网络请求的数据。
3.核心代码部分
- 读入图像并三通道分离
read_image (Image, Path + F$'.2i')
decompose3 (Image, R, G, B)
2. 提取B通道Mura图像的亮度背景图像
estimate_background_illumination (B, ImageFFT1) // 本地方法
get_image_size (Image, Width, Height)
rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)
gen_gauss_filter (ImageGauss, 50, 50, 0, 'n', 'rft', Width, Height)
convol_fft (ImageFFT, ImageGauss, ImageConvol)
rft_generic (ImageConvol, IlluminationImage, 'from_freq', 'none', 'byte', Width)
return ()
使用高斯滤波器和B通过图像进行卷积,高斯滤波器的核SigmaSize=50 对比 SigmaSize=5 高斯滤波器 , 效果如下:
通过对比左上角和左下角的白色区域,可以看出二者的区别,白色区域越大说明在接下来的卷积处理中原图可以通过的图像内容越多,高斯核越大说明通过的内容越少,高斯模糊的效果越明显。
不同核与原B通道图卷积后从rft中返回的效果对比:
另外需要注意 从频域转回时域图像的时候
rft_generic (ImageConvol, IlluminationImage, 'from_freq', 'none', 'byte', Width)
转回的图像有多种类型,常见的byte/ real/uint2等类型,这个类型的选择对后续的处理和缺陷特征的凸显有着重要的作用,同样的缺陷在不同的图像上的凸显效果差异很大。
3. 图像做差(跟获取的背景图像做差)凸显缺陷特征
sub_image (B, ImageFFT1, ImageSub, 2, 100)
median_image (ImageSub, ImageMedian, 'circle', 9, 'mirrored')
4.缺陷特征提取
此时mura缺陷已经从背景的纹理中凸显出来,此时一般时可以通过阈值分割,面积筛选等方式进行缺陷筛选的,当然也可以再次利用灰度增强处理方式进一步缺陷的对比度
这里Halcon官方为了提高分割筛选的通用性采用了,分水岭+灰度共生矩阵的方式提取缺陷特征
watersheds_threshold (ImageMedian, Basins, 20)
* Dark patches corresponding to defects have a very low energy.
cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)
这里的理论依据我觉得有两个方面:1- 如官方所说Mura缺陷处的缺陷处灰阶均匀性较好,能量较低
2-图像的高频背景被平滑的非常均衡,但是同时拉开了缺陷与背景的灰阶,使分水岭算法分割的效果还算可以
三 总结
例子展示了如何在高纹理背景下,检测混入其中的mrua缺陷,总结方法分为以下常用几步:
通过rft获取背景图像----》》原图与背景图像差分 凸显缺陷---》》中值滤波模糊背景增强缺陷---》》区域分割,利用灰度共生矩阵提取缺陷与背景差异信息进行筛选(一般是 能量&熵)
更多推荐
Halcon 中mura缺陷检测
发布评论