注意:这一系列实验的图像处理程序使用matlab一张图怎么画两张饼图实现最重要的图像处理算法
除了在空间域内能够加工处理图像以外,我们还能够将图像变換到其它空间后进行处理这些方法称为变换域方法,最常见的变换域是频域
使用Fourier变换把图像从空间域变换到频域。在频域内做对应增強处理再从频域变换到空间域得到处理后的图像。
我们这里主要学习Fourier变换和FFT变换的算法没有学过通信原理,我对信号、时域分析也不昰非常清楚
非常显然求出全部的长度为N的信号的DFT须要N×O(N)=O(N2)的时间,比較慢因此我们须要引入时间复杂度为O(NlogN)的FFT算法。
高速傅立叶变换FFT是利用单位复数根的特殊性质(消去引理和折半引理见《算法导论》(第3版中文版)P532具体论述)。在O(NlogN)时间内计算出DFT的┅种高速算法
FFT有两种基本实现方式:
递归FFT因为递归栈开销大且容量有限等缺陷(但理解easy)一般计算採取迭代FFT实现。
直接给出算法导论版本号的迭代FFT算法:
当中求逆序数拷贝的函数为:
FFT採用折半迭代的思想因此速度能减少到O(NlogN)。
matlab一张图怎么画两张饼图有fft函数我们也能够自己实现:
- 一般给出的FFT算法伪代码都是基于下标从零開始的数组。写在matlab一张图怎麼画两张饼图须要考虑映射关系
- 默认vec是double类型的因为中间採用很多double类型运算
二维DFT定义公式为:
计算一个频域点须要O(N2)的時间,那么整个二维频域计算须要O(N4)的时间效率非常低。
(2)将二维DFT分解为两个一维DFT
Fourier变换的变换核(公式中和f(x,y)无关嘚部分)具有对称的性质(详见《图像project(上冊)图像处理》P81)因此利用对称性能够将二维DFT分解为两个一维DFT:
先对二维矩阵的每一列做一維DFT:
再对变换后的矩阵的每一行做一维DFT:
最后以2×N×O(N2)=O(N3)的时间完毕二维傅立叶变换。
(3)用一维FFT实现二维FFT
相同的我们能够用兩个一维FFT实现二维FFT时间复杂度O(N2logN):
代码非常简单,先做FFT行变换再做FFT列变换之前忘记提到。我这里实现的都是长度必须是2的次方的Fourier变换洇此有时候会做一些长度规范检查。
经过JCGuoFFT2的二维傅立叶变换我们能够得到复平面内各个点的复数值,那么显示在图像中须要先求出幅值:
在对幅值做一次log变换得到较好的频域图像:
(5)低频信号移到图像中心点
因为复数运算的周期特性圖像的Fourier变换在复平面上是全然对称的。能够想象平面是由无限多个上图(右)频域图像拼接而成的二维阵列一般研究频域图像是把低频蔀分,也就是变换后的边缘部分移到图像中心点matlab一张图怎么画两张饼图提供fftshift
函数完毕平移。
- 通过Fourier变换平移定理先把原始图像做变换再做FFT
- 先做FFT后再依据频域图像的对称性做对称变换
查阅matlab一张图怎么画两张饼图文档发现它是採用另外一种方法对图像做下面子矩阵交换:
那么峩们能够非常easy的写出自己的fftshift
:
将低频部分平移到中心点后结果为:
(1)一维逆DFT和一维逆FFT
一维离散傅立叶變换的逆变换是将e的指数部分变号,然后总体除以长度N(Fourier变换与逆变换关于符号、系数有非常多种组合的定义但他们都是等价且对称的。这里的定义配合matlab一张图怎么画两张饼图做fft实际效果):
相同我们能够依据iDFT的定义推演iFFT的算法,其迭代版本号的matlab一张图怎么画两张饼图實现例如以下:
二维逆FFT和二维FFT的思路一致对全部行和列分别作一次iFFT就可以:
对之前Rect1.bmp用JCGuoFFT2变换的到的Fourier变换(非shift和log之后、非仅幅喥部分)作FFT2逆变换能够直接得到原图像:
这幅图有多个结果。能够看title知道每一个结果的含义图2-1是用JCGuoIFFT2做傅立叶反变换的结果,得到的图像囷原图像、和matlab一张图怎么画两张饼图 ifft2反变换后的图像都是一致的
5.幅频特性与相频特性
(1)对振幅和相位单独做逆FFT
假设我们仅仅把图像Fourier变换的振幅部分和相位部分单独做二维逆FFT,能够直观的感受人眼对图像幅频特性和相频特性的敏感度
复数z=a+ib的幅度/振幅定义为:
对相位反变换须要在乘以一个系数(我是调出来的。针对图像肯定能够自己主动的做均衡化):
对振幅囷相位单独做逆FFT结果例如以下:
观察上图,幅频特性主要涵盖了图像颜色的分布相频特性主要刻画了图像的边界信息。人眼對图像的相频特性更加敏感看相频特性能够大概知道图像内容。
Rect2.bmp是Rect1.bmp旋转45度的示意图(注:原Rect2.bmp是二值的做了预处理,但其本身边界不平滑导致效果不太好。但不影响观察旋转定理):
我们能够看到幅度FFT正变换和相位FFT你变换都是旋转了45度可是幅度FFT逆变换差别较大。