FFT示意图
- 格式:doc
- 大小:11.36 MB
- 文档页数:32
图像傅里叶变换冈萨雷斯版<图像处理>里面的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜。
棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决定。
傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。
当我们考虑光时,讨论它的光谱或频率谱。
同样, 傅立叶变换使我们能通过频率成分来分析一个函数。
Fourier theory讲的就是:任何信号(如图像信号)都可以表示成一系列正弦信号的叠加,在图像领域就是将图像brightness variation 作为正弦变量。
比如下图的正弦模式可在单傅里叶中由三个分量编码:频率f、幅值A、相位γ这三个value可以描述正弦图像中的所有信息。
1.frequencyfrequency在空间域上可由亮度调节,例如左图的frequency比右图的frequency 低……2.幅值magnitude(amplitude)sin函数的幅值用于描述对比度,或者说是图像中最明和最暗的峰值之间的差。
(一个负幅值表示一个对比逆转,即明暗交换。
)3.相位表示相对于原始波形,这个波形的偏移量(左or右)。
=================================================================一个傅里叶变换编码是一系列正弦曲线的编码,他们的频率从0开始(即没有调整,相位为0,平均亮度处),到尼奎斯特频率(即数字图像中可被编码的最高频率,它和像素大小、resolution有关)。
傅里叶变换同时将图像中所有频率进行编码:一个只包含一个频率f1的信号在频谱上横坐标f为f1的点处绘制一个单峰值,峰值高度等于对应的振幅amplitude,或者正弦曲线信号的高度。
如下图所示。
DC term直流信号对应于频率为0的点,表示整幅图像的平均亮度,如果直流信号DC=0就表示整幅图像平均亮度的像素点个数=0,可推出灰度图中,正弦曲线在正负值之间交替变化,但是由于灰度图中没有负值,所以所有的真实图像都有一个正的DC term,如上图所示。
离散时间信号的基2快速傅里叶变换FFT (时间抽取)蝶形算法实现一、一维连续信号的傅里叶变换连续函数f(x)满足Dirichlet (狄利克雷)条件下,存在积分变换:正变换:2()()()()j ux F u f x e dx R u jI u π+∞--∞==+⎰ 反变换:2()()j ux f x F u e du π+∞-∞=⎰其中()()cos(2)R u f t ut dt π+∞-∞=⎰,()()sin(2)I u f t ut dt π+∞-∞=-⎰定义幅值、相位和能量如下:幅度:1222()()()F u R u I u ⎡⎤⎡⎤=+⎣⎦⎣⎦ 相位:()arctan(()/())u I u R u ϕ= 能量:22()()(E u R u I u =+)二、一维离散信号的傅里叶变换将连续信号对自变量进行抽样得到离散信号(理想冲击抽样脉冲),利用连续信号的傅里叶变换公式得到离散时间傅里叶变换DTFT ;再利用周期性进行频域抽样,得离散傅里叶变换DFT (详情参考任何一本《数字信号处理》教材)。
DFT 变换如下:正变换:12/0()(),0,1,2,1N j ux Nx F u f x eu N π--===-∑。
反变换:12/01()(),0,1,2,1N j ux Nu f x F u ex N Nπ-===-∑。
DFT 是信号分析与处理中的一种重要变换,因为计算机等数字设备只能存储和处理离散数据(时域、频域)。
因直接计算DFT 的计算量大(与变换区间长度N 的平方成正比,当N 较大时,计算量太大),所以在快速傅里叶变换(简称FFT)出现以前,直接用DFT 算法进行谱分析和信号的实时处理是不切实际的。
直到1965年发现了DFT 的一种快速算法(快速傅里叶变换,即FFT )以后,情况才发生了根本的变化。
FFT 有时间抽取和频率抽取两种,下面介绍时间抽取FFT 。
三、时间抽取的基2快速傅里叶变换FFT令2j NN W eπ-=,则2jkm km NNWeπ-=称为旋转因子,把DFT 正变换改写为:1[][],0,1,1N km N k F m f k W m N -===-∑将函数记作x ,变换后为X ,则为:10[][],0,1,1N kmN k X m x k W m N -===-∑时间抽取的FFT 算法利用了旋转因子的三个性质:周期性、对称性和可约性。
图像处理1--傅⾥叶变换(FourierTransform)楼下⼀个男⼈病得要死,那间壁的⼀家唱着留声机;对⾯是弄孩⼦。
楼上有两⼈狂笑;还有打牌声。
河中的船上有⼥⼈哭着她死去的母亲。
⼈类的悲欢并不相通,我只觉得他们吵闹。
OpenCV是⼀个基于BSD许可(开源)发⾏的跨平台计算机视觉库,可以运⾏在Linux、Windows、Android和Mac OS操作系统上。
它轻量级⽽且⾼效——由⼀系列 C 函数和少量 C++ 类,同时提供了Python、Ruby、MATLAB等语⾔的接⼝,实现了和计算机视觉⽅⾯的很多通⽤算法。
OpenCV⽤C++语⾔编写,它的主要接⼝也是C++语⾔,但是依然保留了⼤量的C语⾔。
该库也有⼤量的Python、Java andMATLAB/OCTAVE(版本2.5)的接⼝。
这些语⾔的API接⼝函数可以通过在线获得。
如今也提供对于C#、Ch、Ruby,GO的⽀持。
所有新的开发和算法都是⽤C++接⼝。
⼀个使⽤CUDA的GPU接⼝也于2010年9⽉开始实现。
图像的空间域滤波:空间域滤波,空间域滤波就是⽤各种模板直接与图像进⾏卷积运算,实现对图像的处理,这种⽅法直接对图像空间操作,操作简单,所以也是空间域滤波。
频域滤波说到底最终可能是和空间域滤波实现相同的功能,⽐如实现图像的轮廓提取,在空间域滤波中我们使⽤⼀个拉普拉斯模板就可以提取,⽽在频域内,我们使⽤⼀个⾼通滤波模板(因为轮廓在频域内属于⾼频信号),可以实现轮廓的提取,后⾯也会把拉普拉斯模板频域化,会发现拉普拉斯其实在频域来讲就是⼀个⾼通滤波器。
既然是频域滤波就涉及到把图像⾸先变到频域内,那么把图像变到频域内的⽅法就是傅⾥叶变换。
关于傅⾥叶变换,感觉真是个伟⼤的发明,尤其是其在信号领域的应⽤。
⾼通滤波器,⼜称低截⽌滤波器、低阻滤波器,允许⾼于某⼀截频的频率通过,⽽⼤⼤衰减较低频率的⼀种滤波器。
它去掉了信号中不必要的低频成分或者说去掉了低频⼲扰。
实验一 FFT变换及其应用一、实验目的和要求1.在理论课学习的基础上,通过本次实验,加深对DFT原理的理解,懂得频域DFT与时域卷积的关系,进一步加深对DFT基本性质的理解;2.研究FFT算法的主要途径和编程思路,掌握FFT算法及其程序的编写过程,掌握最基本的时域基-2FFT算法原理及程序框图;3.熟悉应用FFT实现两个序列的线性卷积的方法,利用FFT进行卷积,通过实验比较出快速卷积优越性,掌握循环卷积和线性卷积两者之间的关系;4.熟悉应用FFT对典型信号进行频谱分析的方法,初步了解用周期图法作随机信号谱分析的方法,了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT;5.掌握使用MATLAB等基本开发工具实现对FFT编程。
二、实验设备和分组1.每人一台PC机;2.Windows 2000/XP以上版本的操作环境;3.MatLab 6.5及以上版本的开发软件。
三、实验内容(一)实验准备1.用FFT进行谱分析涉及的基础知识如下:信号的谱分析就是计算信号的傅里叶变换。
若信号是模拟信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后用FFT来对连续信号进行谱分析。
若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT运算求得X(k),X(k)就代表了序列在[0,2]之间的频谱值。
幅度谱:相位谱:为避免产生混叠现象,采样频率fs 应大于2倍信号的最高频率fc ,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。
用FFT 对模拟信号进行谱分析的方框图如下所示。
图1.1 FFT 对模拟信号进行谱分析的方框图2. 应用FFT 实现快速卷积涉及的基础知识如下: 一个信号序列x(n)与系统的卷积可表示为下式:Y(n)=x(n)*h(n)=∑+∞-∞=-m m n h m x )()(当是一个有限长序列,且0≤n ≤N-1时,有:Y(n)=∑-=-1)()(N n m n x m h此时就可以应用FFT 来快速计算有限长度序列的线性卷积。
fft 原理详解FFT 是离散傅立叶变换的快速算法,可以将一个信号变换到频域。
有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。
这就是很多信号分析采用FFT 变换的原因。
另外,FFT 可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。
一个模拟信号,经过ADC 采样之后,就变成了数字信号。
采样定理告诉我们,采样频率要大于信号频率的两倍。
采样得到的数字信号,就可以做FFT 变换了。
N 个采样点,经过FFT 之后,就可以得到N 个点的FFT 结果。
为了方便进行FFT 运算,通常N 取2 的整数次方。
FFT的点数N:假设采样频率为Fs,信号频率F,采样点数为N。
那么FFT 之后结果就是一个为N 点的复数。
FFT后的幅度:每一个点就对应着一个频率点。
这个点的模值,就是该频率值下的幅度特性。
具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT 的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2 倍。
而第一个点就是直流分量,它的模值就是直流分量的N 倍。
FFT后的频率分辨率:第一个点表示直流分量(即0Hz),而最后一个点N 的再下一个点(实际上这个点是不存在的,这里是假设的第N+1 个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1 个点平均分成N 等份,每个点的频率依次增加。
例如某点n 所表示的频率为:Fn=(n-1)*Fs/N。
由上面的公式可以看出,Fn 所能分辨到频率为为Fs/N,如果采样频率Fs 为1024Hz,采样点数为1024 点,则可以分辨到1Hz。
1024Hz 的采样率采样1024 点,刚好是 1 秒,也就是说,采样1 秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样 2 秒时间的信号并做FFT,则结果可以分析到0.5Hz。
如果要提高频率分辨力,则必须增加采样点数(必须增加有效的采样点数,通过在原来采样数据后补0的方法不能提高频率分辨率,只能使频谱图更加平滑而已),也即采样时间。