缺陷检测之——detect_indent_fft

该博客介绍了如何利用快速傅里叶变换(FFT)和高斯滤波器检测塑料制品表面的缺陷。通过构建合适的滤波器,对图像进行高斯滤波、FFT和形态学操作,从而识别出缺陷部分。
摘要由CSDN通过智能技术生成
  • 例程:detect_indent_fft.hdev

    1. 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:
    1. 首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);
    1. 然后,将原图和构造的滤波器进行快速傅里叶变换;
    1. 最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。

算法讲解:在实际的表面缺陷检测系统中,针对的检测表面很多是具有一定纹理的比如:布匹、皮革、塑料等,

  •     针对这一类表面的检测就不能单纯依靠帧差或者背景差来完成,因为背景的纹理不可能和当前图像的
    
  •     纹理完全相同。因此,本例程的算法通过将图像变换到频域进行处理,提取缺陷分量后反变换到时域,
    
  •     获得缺陷的具体位置。
    

高斯滤波器:在本算法中,在一开始就构造了两个高斯滤波器,高斯滤波器是一种线性平滑滤波器,适用于消除高斯噪声。

  •      滤波器的实质是对信号进行滤波,滤除不需要的部分,得到想要的部分。一个低通的滤波器可以滤除高频信号,
    
  •      对于图像来说,噪声和边缘往往集中在高频分量,因此低通能够降噪,但是也能造成图像的模糊。
    

本文关键:本文的关键就是使用两个低通滤波器,进行相减后构造了一个带阻滤波器来提取缺陷分量。这就需要保证在实际

  •     的待检测表面中缺陷所处的频率范围要和背景以及噪声有明显的差异,并且带阻的频率选择要合适。通过带阻滤
    
  •     波后获得的频率成分对背景中的纹理要有明显的抑制,并且突出缺陷成分,进行傅里叶反变换后重构的图像就是
    
  •     缺陷图像,经过简单的分割就能很容易得到缺陷了。
    

完整程序:
dev_update_off ()
dev_close_window ()
read_image (Image, ‘D:/木勺子缺陷检测/压痕/Image_01.bmp’)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, ‘black’, WindowHandle)
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
dev_set_draw (‘margin’)
dev_set_line_width (3)
dev_set_color (‘red’)
*

  • Optimize the fft speed for the specific image size
    optimize_rft_speed (Width, Height, ‘standard’)
  • Construct a suitable filter by combining two gaussian
  • filters
    Sigma1 := 10.0
    Sigma2 := 3.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)
  • Process the images iteratively
    NumImages := 11
    for Index := 1 to NumImages by 1
    *
    • Read an image and convert it to gray values
      read_image (Image, ‘D:/木勺子缺陷检测/压痕/Image_’ + Index$‘02’)
      rgb1_to_gray (Image, Image)
    • Perform the convolution in the frequency domain
      rft_generic (Image, ImageFFT, ‘to_freq’, ‘none’, ‘complex’, Width)
      convol_fft (ImageFFT, Filter, ImageConvol)
      rft_generic (ImageConvol, ImageFiltered, ‘from_freq’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值