halcon快速傅里叶变换

说明

  • 高频:噪声、细节和边缘,图像高频分量指图像突变部分,在某些情况下指图像边缘信息,某些情况下指噪声,更多是两者的混合
  • 低频:图像整体轮廓,图像低频分量指图像(亮度/灰度)变化平缓的部分,代表着那是连续渐变的一块区域,这部分就是低频。对于一幅图像来说,除去高频的就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。

高通滤波器 —— 让图像高频分量通过,抑制低频分量。
低通滤波器 —— 与高通相反,让图像低频分量通过,抑制高频分量。
带通滤波器 —— 使图像在某一部分的频率信息通过,其他过低或过高都抑制。
带阻滤波器—— 是带通的反。

加强理解:图像噪声一般是白点或者黑点,因为它与正常的点颜色不一样了,也就是说该像素点灰度值明显不一样了,也就是灰度有快速地变化了,所以是高频部分;图像细节处也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节,也属于高频部分;所以一般会对信号先进行低通滤波处理,即过滤掉图像中的高频部分(噪声/细节/边缘),留下低频(图像轮廓),结果就是图像模糊了。

图像处理中,有书上说低频反应轮廓,高频反应细节;有的文章里面说低频反应的是背景,高频反应的是边缘;低频反应轮廓,这里的轮廓指的不是边缘(很多人会搞混觉得轮廓是指的就是边缘),打个比方,近视眼的人摘了眼镜,人们通常会说:“我什么也看不清,仅仅能看到一个大致轮廓。”就是类似的意思。所以图像的边缘提取仍是提起的边缘的高频信息,这两种说法并不矛盾。(参考链接:https://blog.csdn.net/weixin_43197380/article/details/123285801)

傅里叶变换公式如下:
在这里插入图片描述

滤波后的效果

  • 低通滤波,保留低频分量,实际相当于模糊图像,傅里叶转到时域上后,都是正值
  • 高通滤波,保留高频分量,傅里叶转到时域上后,在边缘部分或缺陷部分会出现正负变换的现象,此时可通过gray_range_rect算子来突出缺陷部分,再进行后续处理!

关键算子

optimize_rft_speed( : : Width, Height, Mode : )

优化当前选择的FFT算法,halcon中有好多FFT算法,在不同的数据规模硬件下有多种不同的选择,调用该方法可自动评估出最合适的算法,显著提升FFT的速度。

rft_genericfft_generic

rft_generic(Image : ImageFFT : Direction, Norm, ResultType, Width)
fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType)
这两个算子的不同点:

1.简单理解,rft_generic算子只计算和存储了复数图像的左半部分(右边是共轭的),而fft_generic算子计算和存储的是复数图像,前者大大提升了运算速率;
2.fft_generic算子可以通过参数Mode设置原点的位置:如果设置的是’dc_edge’,那么原点在左上角(即左上角是低频成分);如果设置的是’dc_center’,那么就会将原点平移到中心位置(中心是低频成分,四角是高频)。fft_generic算子一般会设置为’dc_center’。对于rft_generic算子,因为没有设置项,所以默认原点位置为左上角。

相同点:

1.Direction,分别是’to_freq’ 和’from_freq’
2.Norm,‘none’, ‘sqrt’ and ‘n’,这里其实决定了傅里叶变换公式中前面的系数c,默认值:‘sqrt’(开根号,c=sqrt(MN),转到频域数值最小);也可设置为 ‘n’(图像宽图像高,c=M*N,频域数值中间),‘none’(不使用,c=1,此时频域数值最大)。当正向变换时,一般选择’sqrt’,反向变换时,一般选择’n’(halcon例程)
3.Exponent:对应公式中指数符号,前向变换用-1,一般搭配’to_freq’ 使用,后向变换用1,搭配’from_freq’。
4.ResultType,如果是’to_freq’,那么ResultType一般选择’complex’;如果是’from_freq’,ResultType一般选择’real’(小数图像,需自己按比例转换为灰度)。如果为’byte’,则有可能不准确,全白或全黑。

gen_gauss_filter( : ImageGauss : Sigma1, Sigma2, Phi, Norm, Mode, Width, Height : )

在频率域创建一个高斯滤波器。
Sigma1:主方向的sigma值,越小越平缓,范围越大
Sigma2:垂直主方向的sigma值,这里两个参数相当于高斯滤波中的x方向和y方向分别计算,原理如该公式在这里插入图片描述
传统卷积框如下(核大小为3),计算时复杂度为rowscolsksize*ksize。
在这里插入图片描述
而分开计算核如下只有一维:
在这里插入图片描述

这样先行计算,再列计算,效果是一样的(因为都要归一化,所有前面是有系数的,未分离的系数是1/16,分离的系数是1/4,此时对一个全1的区域进行卷积,两个结果都是1.)。这两个sigma可以是不同的,也就是说x方向和y方向可以不同的卷积计算。sigma越大,高斯图像越平缓,越矮,滤波效果越差。
Phi:在空间域中主轴的方向
Norm:是否归一化。“n”是不进行归一化,和后面的rft_generic参数Norm类似
Mode:“dc_center”, “dc_edge”, “rft”,dc_center是0频在中间(即低频在中间),dc_edge低频在四角,rft是半张图片,低频在左上和左下。
例如:

gen_gauss_filter (ImageGauss2, 2, 2, 0, 'none', 'rft', Width, Height)
* 注意左上角为1,周边逐渐递减

在这里插入图片描述

gen_gauss_filter (ImageGauss1, 10, 10, 0, 'none', 'rft', Width, Height)

在这里插入图片描述

convol_fft(ImageFFT, ImageFilter : ImageConvol : : )

进行卷积,实际是复数图像ImageFFT的像素乘以滤波器ImageFilter的相应像素,因此滤波器中黑色的部分对应到频率图中相应位置的数据被清除。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值