Halcon 中mura缺陷检测

编程入门 行业动态 更新时间:2024-10-28 08:22:57

目录

文章目录


前言

       最近一直在研究高纹理图像中Mura类型缺陷的检测,此类缺陷检测属于表面检测的范畴,以下是对Halcon官方例子中一个相似案例的分享学习。


一、Mura是什么?

  1. 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.核心代码部分

  1. 读入图像并三通道分离
  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 高斯滤波器 , 效果如下:

50Sigma高斯滤波器
5sigma高斯滤波器

       通过对比左上角和左下角的白色区域,可以看出二者的区别,白色区域越大说明在接下来的卷积处理中原图可以通过的图像内容越多,高斯核越大说明通过的内容越少,高斯模糊的效果越明显。

不同核与原B通道图卷积后从rft中返回的效果对比:

50Sigma卷积结果
5sigma卷积结果

 另外需要注意  从频域转回时域图像的时候

         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缺陷检测

本文发布于:2023-06-14 05:54:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1445256.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:缺陷   Halcon   mura

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!