快速傅里叶变换是非常重要的数学分析工具,同时也是一种非常重要的信号处理方法。
下面借助Halcon商业图像处理库,介绍些工业应用案例,我们可以通过案例理解图像快速傅里叶变换的一些应用场景。
案例1:图像自相关性确定芯片间距
下图示意的晶圆图像中有芯片周期性的排列,而自相关函数计算纹理周期具有很好的效果。
wafer
为提升计算效率,我们可以应用快速傅里叶变换将晶圆图像转换到频域中去计算自相关图像。
频域方法计算晶圆图像的自相关图像
* 代码片段选自Halcon例程文件: determine_die_pitch_fft_correlation.hdev
rft_generic (Wafer, ImageFFT, 'to_freq', 'n', 'complex', Width)
correlation_fft (ImageFFT, ImageFFT, ImageCorrelation)
rft_generic (ImageCorrelation, ImageFFTInv, 'from_freq', 'n', 'real', Width)
wafer image auto-correlation
自相关图像上 点的灰度值是将图像水平移动 、垂直移动 后与原始图像做相关运算得到的相关值。
上图示意的是自相关图像计算结果中,自相关图像原点的灰度值很高,因为这点代表没有移动的图像与其自身的相关性。如果原图像上有周期性宽度 和高度 的矩形结构,在自相关图像的 位置上也会得到高的相关值。通过在相关图像上找到与原点最近的局部极大值,直接得到周期结构的尺寸。
应用 local_max_sub_pix 图像局部极大值的亚像素精确检测函数,提取自相关图像中的局部极值点。亚像素精度局部极大值可以通过如下代码得到:
local_max_sub_pix (ImageFFTInv, 'gauss', 3, 0.0001, Row, Column)
确定芯片周期间距后,可以进一步应用基于形状的模板匹配准确的定位芯片位置,并从晶圆图片中分割出每个芯片。
案例2:去除背景纹理
如何通过频域过滤将前景信息从干扰的背景纹理中分离出来?
首先,对图像进行傅里叶变换,以获得其频谱。然后,我们检测频谱中与干扰性背景纹理相对应的频率峰值。之后,建立一个消除这些频率的滤波器,并将其应用于频谱。通过对过滤后的频谱进行反傅立叶变换,我们得到一个过滤后的图像,其中的干扰性背景纹理将被去除。
remove_texture_fft
背景纹理在频谱图中对应的是高频信号,频谱图像中间区域为低频信号。
频谱图
我们通过阈值分割提取信号显著的低频区域。
低频区域
以低频区域的以两倍的频率构建高频波段ROI区域,在高频波段ROI区域中,阈值分割提取显著的高频分量,如下图中红色圈注为高频分量区域。
高频分量区域
将频谱图中的高频分量区域置为0,以此过滤高频分量。
将过滤后的频谱图反傅里叶变换即可得到去除背景纹理的图像。
案例3:对栅格图像进行旋转校正
快速傅里叶变换将图像从时域转换到频域,定义0度栅格图像,并以0度栅格为基础创建基准信息。下图为0度栅格图像
0°栅格图像
统计基准图像的边缘梯度方向
使用边缘检测的算子(如Roberts,Sobel,Scharr等)来计算图像中的水平、垂直和对角方向的梯度。得到水平和垂直方向的一阶导数值,由此便可以确定像素点的梯度的大小和方向。Halcon中提供了edges_image算子计算边缘梯度方向图,该算子输出的梯度方向图的灰度值范围为[0,179],即0°~179°.
边缘梯度方向图
以0°~179°范围统计梯度方向直方图。即每个角度在图像中的像素总数。灰度边缘方向统计直方图如下图所示
边缘梯度方向统计直方图
对于栅格图像,当图像旋转时,其梯度方向直方图也会同步水平平移,因此计算与标准梯度直方图最佳相关性可以得到相对的旋转角度,频谱图上计算相关性图基本原理是待检图直方图和标准图直方图的FFT 频域乘积再转换回时域,其相当于时域卷积结果。
确定要处理的图像的旋转角度
-
计算待处理图像的边缘方向统计直方图(该直方图用图像表示,其行列为1*180)。待处理图像的边缘方向直方图与基准图像的边缘方向直方图如下图所示
-
计算旋转物体边缘方向统计直方图的FFT图像与基准边缘方向统计直方图FFT图像
-
找到目标和参考FFT之间的最佳相关性,该最佳相关性对应于两个图像之间的相对角度。最佳相关性需要在相关性图的局部极值中筛选。
案例4:检测划痕缺陷
通过频域滤波检测非均匀照明表面中的缺陷(划痕)。待处理图像如下图所示:
划痕图像
-
首先,反转图像
划痕图像反转
-
创建合适的带通滤波器。然后,在频域对输入图像进行傅里叶变换和滤波,从而增强高频信息。
* Enhance the scratches by filtering in the frequency domain
gen_sin_bandpass (ImageBandpass, 0.4, 'none', 'rft', Width, Height)
rft_generic (ImageInverted, ImageFFT, 'to_freq', 'none', 'complex', Width)
convol_fft (ImageFFT, ImageBandpass, ImageConvol)
rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width)
gen_sin_bandpass 产生旋转不变带通滤波器,其响应为频域中的正弦函数,频域带通滤波器图像如下图
convol_fft 在频域中用正弦带通滤波器对待检测图的FFT图像进行卷积。从而滤除低频,增强高频信息。最后,将其转换回空间域,并对增强后的缺陷进行形态学后处理。*rft_generic (ImageInverted, ImageFFT, 'to_freq', 'none', 'complex', Width)*计算待检测图的FFT图像rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width) 将频域卷积图像变换回时域。滤波后且增强高频信息的图像如下所示:
-
阈值分割、形态学处理及缺陷筛选
形态学分析与划痕筛选