傅里叶变换常用于缺陷检测项目,对于一些背景偏暗,对比度不明显,有明显周期性背景的场景,傅里叶变换可以起到提升对比度的效果。
傅里叶变换从频域角度来处理,对于一些图像像素尺寸大的图像,算法时间往往时间达到1s以上,对于一些快速检测场景而言,此方法需要进一步改进
算法加速
首先提取ROI区域
- reduce_domian
- crop_domian
复制代码 这样的话ROI区域变成了图像,整体图像尺寸进一步减小
另外,halcon提供了一个针对实值傅里叶变换的算子
- optimize_rft_speed (700,700, 'standard')
复制代码- * 优化实值FFT的运行时间
- optimize_rft_speed (700,700, 'standard')
- *生成高斯滤波器,然后相减得到一个滤波器图像
- Sigma1 := 180.0
- Sigma2 :=0.5
- gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft',680, 680)
- gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft',680, 680)
- sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)
- *将图像傅里叶变换,生成一个复杂矩阵图像,to_freq正向转换
- rft_generic (ImagePart, ImageFFT, 'to_freq', 'none', 'complex', 680)
- *将傅里叶变换图像与滤波器图像卷积
- convol_fft (ImageFFT, Filter, ImageConvol)
- *将卷积后的傅里叶变换图像再次变换,from_freq反向转换
- rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', 680)
- ****将灰度在0-255内拉伸变换
- scale_image_max (ImageFiltered, ImageScaleMax)
复制代码 傅里叶变换后的图像ImageFiltered并不是常用的灰度在0到255的byte型图像,需要使用scale_image_max转换成常用类型图像,以便后续进一步处理。
|