1.理论
图像的频率是表征图像中灰度变化剧烈程度的指标。频域图像的每一点都来自于整个原图像,频谱图上的各点与图像上各点并不存在一一对应的关系
在进行图像处理时,很多时候需要获得图像中灰度变化剧烈的地方,或者灰度变化相对缓慢的区域,灰度变化剧烈的地方就是那些灰度值变化大的地方,或梯度大的地方,该地方频率高;灰度变化缓慢的地方,就是梯度小的地方,频率低;
傅立叶变换(FT, Fourier Transform)的作用是将一个信号由时域变换到频域。其实就是把数据由横坐标时间、纵坐标采样值的波形图格式,转换为横坐标频率、纵坐标振幅(或相位)的频谱格式。变换后可以很明显地看出一些原先不易察觉的特征。
离散傅立叶变换(DFT)的算法属于线性变换。由于对每个采样点,都要做一次全部点的加权求和的运算,因此当采样点比较多时,运算速度会很慢。
快速傅立叶变换(FFT)是DFT的快速算法,运算结果和DFT是相等的。其原理是利用权值的对称性与周期性,把采样点分解成两份,每份的点数是原来的一半,这样运算量也会减半。然后可以继续分解为4份、8份、16份……以此不断提升效率。
波形公式:
采样植(y) - 纵坐标轴代表采样点的值
时间(t) - 横坐标轴代表时间,或者代表当前是第几个采样点
振幅(A) - 也叫幅度,代表波的高度(峰值)
圆频率(ω) - ω=2πf,f代表频率
**相位(ωt)** - 是个角度,一般用弧度制表示,弧度制的0~2π,代表0度到360度
其中,f(x,y)图像矩阵,x/y图像的行列,F(x,y)为f(x,y)的频谱。
傅里叶变换通常是个复数,简化为
傅里叶变换性质:
1)傅里叶变换及其逆变换均为N周期;
2)对称共轭性;
3)可分离性;可分别沿着行和列做一维傅里叶变换;
4)分配性和比例性。
傅里叶变换在图像处理中作用:
1)图像增强与去噪,绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声;
2)图像分割之边缘检测,提取图像高频分量;
3)图像压缩可以直接通过傅里叶系数来压缩数据。
2.算子
1)快速傅里叶变换空间域图到频域图
fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )
对应算子
fft_generic(Image,ImageFFT, ‘to_freq’, -1, ‘sqrt’, ‘dc_center’, ‘complex’)
频域中心对应低频
2)快速傅里叶逆变换,从频域图到空间域图
fft_image_inv(Image : ImageFFTInv : : )
3)快速傅里叶变换,该算子可实现正/逆向变换
fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )
其中:
Direction:‘from_freq’从频域到空间域(前向变换);‘to_freq’从空间域到频域(后向变换)
Exponent:对应公式中指数符号s,前向变换用-1,后向变换用1
Norm:对应公示中c,为归一化系数。‘none’不做归一化,c=1;‘sqrt’表示c=宽高乘积开方;‘n’表示c=宽高乘积。
Mode:‘dc_center’频域图中心频率为0,‘dc_edge’频域图边角点频率为0
ResultType:变换后图像类型,前向变换图像类型为‘complex’
4)返回复图像的功率谱
power_real(Image : ImageResult : : )
5)优化FFT变换运行时间
optimize_fft_speed( : : Width, Height, Mode : )
For Mode = ‘standard’ a fast search is used, which typically takes a few seconds. The method thus determined results in very good runtimes, which are not always optimal. For Mode = ‘patient’ a more thorough search is performed, which typically takes several seconds and in most cases leads to optimum runtimes. For Mode = ‘exhaustive’ an exhaustive search is performed, which typically takes several minutes and always results in the optimum runtime. In most applications, Mode = ‘standard’ results in the best compromise between the runtime of the FFT and the time required for the search of the optimum runtime.