赃污通常是比较浅的痕迹,一般你是无法通过threshold来处理的,否则它就不是什么赃污而是刮伤、疤痕之类的。
处理这种不明显的痕迹,傅立叶变换算子是最常用到的。
素材图:
上面的问题图片你可能并不觉得有什么问题,我们用photoshop来调节一下色阶。结果看到了红圈中我示意的两个缺陷处。
我们先给出处理代码,后面在分析一下代码:
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://47.98.154.65/?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 : )
选择彼此有某种关系的区域
本例子的关键是使用两个低通滤波器,进行相减后构造了一个带阻滤波器来提取缺陷分量。这就需要保证在实际的待检测表面中缺陷所处的频率范围要和背景以及噪声有明显的差异,并且带阻的频率选择要合适。通过带阻滤波后获得的频率成分对背景中的纹理要有明显的抑制,并且突出缺陷成分,进行傅里叶反变换后重构的图像就是缺陷图像,经过简单的分割就能很容易得到缺陷了
处理结果:
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

