数字图像处理,读懂频域处理的“傅里叶变换”

如下部分文字资料整合于网络,本文仅供本身学习用!算法

这是一幅很绝的一维傅里叶变换动态图网络



一,读懂傅里叶变换

一个信号能表示成傅里叶级数的形式是有条件的,首先它必须是周期信号,第二必须是知足狄里赫利条件的周期信号。
dom

1,关于两大域:时域与频域

(1),频域(frequency domain)是指在对函数或信号进行分析时,

分析其和频率有关部份,而不是和时间有关的部份,和时域一词相对。函数

(2),时域是描述数学函数或物理信号对时间的关系。工具

例如一个信号的时域波形能够表达信号随着时间的变化。
若考虑离散时间,时域中的函数或信号,在各个离散时间点的数值均为已知。
若考虑连续时间,则函数或信号在任意时间的数值均为已知。在研究时域的信号时,常会用示波器将信号转换为其时域的波形。
学习

(3),二者相互间的变换
时域(信号对时间的函数)和频域(信号对频率的函数)的变换在数学上是经过积分变换实现。
对周期信号能够直接使用傅立叶变换,对非周期信号则要进行周期扩展,使用拉普拉斯变换。
ui



2,傅立叶变换

(1),什么是傅里叶变换?
也称做傅立叶变换,表示能将知足必定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不一样的研究领域,傅立叶变换具备多种不一样的变体形式,如连续傅立叶变换和离散傅立叶变换。最初傅立叶分析是做为热过程的解析分析的工具被提出的。傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可做为信号的成分,好比正弦波、方波、锯齿波等,傅里叶变换用正弦波做为信号的成分。
傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来讲,每一个信号的加权应该都是零——但有密度上的差异,你能够对比几率论中的几率密度来思考一下——落到每个点的几率都是无限小,但这些无限小是有差异的因此,傅里叶变换以后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度
(2),傅里叶变换有什么用呢?
举例说明:傅里叶变换能够将一个时域信号转换成在不一样频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换能够将频谱再转换回时域的信号。最简单最直接的应用就是时频域转换,好比在移动通讯的LTE系统中,要把接收的信号从时域变成频域,就须要使用FFT。又例如对一个采集到的声音作傅立叶变化就能分出好几个频率的信号。好比南非世界杯时,南非人吹的呜呜主拉的声音太吵了,那么对现场的音频作傅立叶变化(固然是对声音的数据作),会获得一个展开式,而后找出呜呜主拉的特征频率,去掉展开式中的那个频率的sin函数,再还原数据,就获得了没有呜呜主拉的嗡嗡声的现场声音。而对图片的数据作傅立叶,而后增大高频信号的系数就能够提升图像的对比度。一样,相机自动对焦就是经过找图像的高频份量最大的时候,就是对好了。



3,快速傅里叶变换

(1),什么是快速傅里叶变换?
计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所须要的乘法次数大为减小,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。


(2),快速傅里叶变换有什么用?
函数或信号能够透过一对数学的运算子在时域及频域之间转换。和傅里叶变换做用同样!
spa


(3),为何要提出快速傅里叶变换?
人们想让计算机能处理信号 但因为信号都是连续的、无限的,计算机不能处理,因而就有了傅里叶级数、傅里叶变换,将信号由时域变到频域,把一个信号变为有不少个不一样频率不一样幅度的正弦信号组成,这样计算机就能处理了,但又因为傅里叶变换中要用到卷积计算,计算量很大,计算机也算不过来,因而就有了快速傅里叶变换,大大下降了运算量,使得让计算机处理信号成为可能。快速傅里叶变换是傅里叶变换的快速算法而已,主要是能减小运算量和存储开销,对于硬件实现特别有利。

.net

4,图像中傅立叶变换的物理意义

(1),图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有很是明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数


(2),傅立叶变换之前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样获得一系列点的集合,咱们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。因为空间是三维的,图像是二维的,所以空间中物体在另外一个维度上的关系就由梯度来表示,这样咱们能够经过观察图像得知物体在三维空间中的对应关系。为何要提梯度?由于实际上对图像进行二维傅立叶变换获得频谱图,就是图像梯度的分布图,固然频谱图上的各点与图像上各点并不存在一一对应的关系,即便在不移频的状况下也是没有。傅立叶频谱图上咱们看到的明暗不一的亮点,实际上图像上某一点与邻域点差别的强弱,即梯度的大小,也即该点的频率的大小(能够这么理解,图像中的低频部分指低梯度的点,高频部分相反)。通常来说,梯度大则该点的亮度强,不然该点亮度弱。这样经过观察傅立叶变换后的频谱图,也叫功率图,咱们首先就能够看出,图像的能量分布,若是频谱图中暗的点数更多,那么实际图像是比较柔和的(由于各点与邻域差别都不大,梯度相对较小),反之,若是频谱图中亮的点数多,那么实际图像必定是尖锐的,边界分明且边界两边像素差别较大的。对频谱移频到原点之后,能够看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了能够清晰地看出图像频率分布之外,还有一个好处,它能够分离出有周期性规律的干扰信号,好比正弦干扰,一副带有正弦干扰,移频到原点的频谱图上能够看出除了中心之外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时能够很直观的经过在该位置放置带阻滤波器消除干扰
code


二,理性认识傅里叶变换

1,二维傅里叶fft2对简单矩阵的操做

(能够把s想象成一幅图像,傅里叶变换过程以下)

s=magic(2);%magic矩阵有一个神奇的特色:每行或者每列加起来都相等
f=fft2(s);
a=abs(f)

a =

    10     0
     2     4

>> f

f =

    10     0
    -2    -4

>> s

s =

     1     3
     4     2

%3*3的矩阵的操做结果
s=magic(3);
f=fft2(s);
a=abs(f)


a =

   45.0000         0         0
    0.0000   15.5885    5.1962
    0.0000    5.1962   15.5885

>> f

f =

  45.0000                  0                  0          
        0 + 0.0000i  13.5000 + 7.7942i   0.0000 - 5.1962i
        0 - 0.0000i   0.0000 + 5.1962i  13.5000 - 7.7942i

>> s

s =

     8     1     6
     3     5     7
     4     9     2

%4*4的矩阵操做结果
s=magic(4);%magic矩阵有一个神奇的特色:每行或者每列加起来都相等
f=fft2(s);
a=abs(f)

a =

  136.0000         0         0         0
         0   20.0000   11.3137   12.0000
         0   45.2548         0   45.2548
         0   12.0000   11.3137   20.0000

>> f

f =

   1.0e+02 *

   1.3600                  0                  0                  0          
        0             0.2000             0.0800 + 0.0800i        0 - 0.1200i
        0             0.3200 + 0.3200i        0             0.3200 - 0.3200i
        0                  0 + 0.1200i   0.0800 - 0.0800i   0.2000          

>> s

s =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

2,二维快速傅里叶fft2对灰度图的操做

<span style="font-size:12px;">clear all; 
close all;
I=imread('peppers.png');%读入图像
J=rgb2gray(I);%将图像转换为灰度图
K=fft2(J);%对图像进行二维快速傅里叶变换
K=fftshift(K);%将频谱转移到中心,其实就是在傅里叶变换时乘以了某个因子
L=abs(K/256);%取模
%显示图片
figure;
subplot(131);
imshow(I);title('原图像')
subplot(132);
imshow(J);title('被转换为灰度图后')
subplot(133);
imshow(uint8(L));title('二维傅里叶变换后的频谱图')</span>


clear all; close all;
I=imread('peppers.png');%读入图像
J=rgb2gray(I);%转换为灰度图
J=imrotate(J,45,'bilinear');	%将图像旋转45度角	
K=fft2(J);%对图像进行二维傅里叶比变换
K=fftshift(K);%转移频谱中心
L=abs(K/256);%取模
figure;
subplot(121);
imshow(J);title('原图像被旋转45度角')
subplot(122);
imshow(uint8(L));title('傅里叶变换后的图像')


clear all; close all;
I=imread('peppers.png');
J=rgb2gray(I);
J=imnoise(J, 'gaussian', 0, 0.01);%加入高斯噪声
K=fft2(J);
K=fftshift(K);
L=abs(K/256);
figure;
subplot(131);
imshow(I);title('原图像')
subplot(132);
imshow(J);title('高斯噪声污染')
subplot(133);
imshow(uint8(L));title('污染后进行福利叶变换')


clear all; close all;
I=imread('onion.png');
J=rgb2gray(I);
K=fft2(J);%傅里叶变换
L=fftshift(K);%转移频谱中心
L=abs(L/256);%取模
M=ifft2(K);%二维傅里叶反变换
figure;
subplot(131);
imshow(J);title('原灰度图像')
subplot(132);
imshow(uint8(L));title('傅里叶变换后的图像')
subplot(133);
imshow(uint8(M));title('反变换后的图像')


参考资源:

【1】http://blog.csdn.net/struggle_for_m/article/details/51207370

【2】动态图来源于“维基百科”

【3】https://zhuanlan.zhihu.com/p/19763358?columnSlug=wille