halcon软件自带了关于金属表面划痕缺陷检测的例程find_scratches_bandpass_fft.hdev
先附上代码截图并作了初步注释,本篇博客将讲解一下该例程的过程各个算子的使用是为了啥
/*首先*/
有趣的是,前面写了invert_image (Image, ImageInverted),后面做变换时都用转换后的图像,估计人们也是尝试发现Invert一下的图像更适合rft变换?
检测不均匀表面光照的表面缺陷思路就是:生成一个带通滤波器(卷积核),然后用它对在频域中的图像进行滤波[1](卷积,将卷积后的傅里叶图像还原为空间域图像,可见图像的突变部分得到了增强)以加强高频部分[2],然后变回时域做形态学处理。那么生成一个合适的滤波器和空间域⇿频域之间的变换成了关键步骤!
- 卷积(convolution): 两个信号的卷积的傅里叶变换等于它们的傅里叶变换的乘积。
频域结合空间,其实频域就是用波动观点看世界,看问题角度变了,光经过镜头其实发生的是傅立叶变换,此思想在傅立叶光学上有所阐述,就像光经棱镜分光,而光进入计算机内部,进行了采样和量化,然后我们用函数f(x,y)来表示这些数据描述。图像处理应用傅里叶变换就是将空间域(图像本身)转换至频率域。傅里叶变换可以将一个信号函数,分解一个一个三角函数的线性组合。由于任何周期函数都可以由多个正弦函数构成,那么按照这个思想,图像由f(x,y)来表示,那么这时你就可以拆成多个正弦函数构成,这样每个正弦函数都有一个自己的频率。
那什么时候需要使用傅里叶变换进行频域分析?
- 具有一定纹理特征的图像,纹理可以理解为条纹,如布匹、木板、纸张等材质容易出现。
- 需要提取对比度低或者信噪比低的特征。
- 图像尺寸较大或者需要与大尺寸滤波器进行计算,此时转换至频域计算,具有速度优势。因为空间域滤波为卷积过程(加权求和),频域计算直接相乘。
///***而图像在空间域和频域之间的转换主要有以下两个关键算子:
- rft_generic
- fft_generic
这两个算子的异同点:
- 都是对图像进行快速