视觉检测之产品瑕疵检测(3)赃污检测


赃污通常是比较浅的痕迹,一般你是无法通过threshold来处理的,否则它就不是什么赃污而是刮伤、疤痕之类的。

处理这种不明显的痕迹,傅立叶变换算子是最常用到的。


素材图:

1.bmp


上面的问题图片你可能并不觉得有什么问题,我们用photoshop来调节一下色阶。结果看到了红圈中我示意的两个缺陷处。

image.png


我们先给出处理代码,后面在分析一下代码:

read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/赃污检测/1.bmp')
get_image_size (Image, Width, Height) 
Sigma1 := 30.0 
Sigma2 := 5.0 
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height) 
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height) 
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0) 
rgb1_to_gray (Image, GrayImage) 
rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width) 
convol_fft (ImageFFT, Filter, ImageConvol) 
rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width) 
* Scale the gray values of an image from the interval [Min,Max] to [0,255] 
scale_image_range (ImageFiltered, ImageScaled, 0, 255) 
threshold (ImageScaled, Region, 1, 255) 
connection (Region, ConnectedRegions) 
* Choose regions having a certain relation to each other.
select_shape_proto (ConnectedRegions, ConnectedRegions, SelectedRegions, 'distance_contour', 1, 999) 
opening_circle (SelectedRegions, RegionOpening, 7.5) 
dev_display (Image) 
dev_display (RegionOpening)


gen_gauss_filter( : ImageGauss : Sigma1, Sigma2, Phi, Norm, Mode, Width, Height : )
构建一个高斯滤波器。高斯滤波器是一种线性平滑滤波器,适用于消除高斯噪声。滤波器的实质是对信号进行滤波,滤除不需要的部分,得到想要的部分。一个低通的滤波器可以滤除高频信号,对于图像来说,噪声和边缘往往集中在高频分量,因此低通能够降噪,但是也能造成图像的模糊。

sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

图像相减,请参考贴子:http://www.skcircle.com/?id=319


rgb1_to_gray(RGBImage : GrayImage : : )

将原图转化为灰度图


rft_generic(Image : ImageFFT : Direction, Norm, ResultType, Width : )

对一幅图片进行快速傅里叶变换


convol_fft(ImageFFT, ImageFilter : ImageConvol : : )

对图片用一个滤波器在频域进行卷积运算


rft_generic(Image : ImageFFT : Direction, Norm, ResultType, Width : )

对滤波后的图片进行傅里叶反变换


select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )

选择彼此有某种关系的区域


本例子的关键是使用两个低通滤波器,进行相减后构造了一个带阻滤波器来提取缺陷分量。这就需要保证在实际的待检测表面中缺陷所处的频率范围要和背景以及噪声有明显的差异,并且带阻的频率选择要合适。通过带阻滤波后获得的频率成分对背景中的纹理要有明显的抑制,并且突出缺陷成分,进行傅里叶反变换后重构的图像就是缺陷图像,经过简单的分割就能很容易得到缺陷了


处理结果:

image.png


--------------------- 

作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864