图像的傅里叶变换
图像傅里叶变换
图像傅里叶变换
傅里叶变换(Fourier Transformation)是一种重要的数学工具,用于分析正弦波、矩形波和其他不同类型的函数。
最初,傅里叶变换
是用来解决热力学方程的,但是后来发展成多种多样的应用,其中之
一就是图像处理。
图像傅里叶变换是把图像中的所有信息转换为一组与波频成正比
的数字。
它通过傅里叶公式,把一副图像分割成它的频率和振幅组成
的多个部分,每一部分都表示图像中的一个特征。
图像傅里叶变换的
最重要的应用之一就是进行图像压缩,在这种压缩技术中,可以利用
傅里叶变换将某些低频成分合并,而抛弃某些高频成分,进而减小图
像的数据量,而且没有太多损失。
另外,图像傅里叶变换还可以用来
识别图像中的不同特征,可以用于图像检索、图像处理、图像分类等。
图像傅里叶变换是解决图像处理问题的一种重要手段,它能够使
我们提取图像像素、压缩图像数据和检测图像特征的能力大大提高,
已成为当今图像处理的重要工具。
图像处理之傅里叶变换
图像处理之傅⾥叶变换图像处理之傅⾥叶变换⼀、傅⾥叶变换傅⾥叶变换的作⽤:⾼频:变化剧烈的灰度分量,例如边界低频:变化缓慢的灰度分量,例如⼀⽚⼤海滤波:低通滤波器:只保留低频,会使得图像模糊⾼通滤波器:只保留⾼频,会使得图像细节增强OpenCV:opencv中主要就是cv2.dft()和cv2.idft(),输⼊图像需要先转换成np.float32 格式。
得到的结果中频率为0的部分会在左上⾓,通常要转换到中⼼位置,可以通过shift变换来实现。
cv2.dft()返回的结果是双通道的(实部,虚部),通常还需要转换成图像格式才能展⽰(0,255)。
import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('lena.jpg',0)img_float32 = np.float32(img)dft = cv2.dft(img_float32, flags = cv2.DFT_COMPLEX_OUTPUT)dft_shift = np.fft.fftshift(dft)# 得到灰度图能表⽰的形式magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))plt.subplot(121),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.show()import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('lena.jpg',0)img_float32 = np.float32(img)dft = cv2.dft(img_float32, flags = cv2.DFT_COMPLEX_OUTPUT) #时域转换到频域dft_shift = np.fft.fftshift(dft) #将低频部分拉到中⼼处rows, cols = img.shapecrow, ccol = int(rows/2) , int(cols/2) #确定掩膜的中⼼位置坐标# 低通滤波mask = np.zeros((rows, cols, 2), np.uint8)mask[crow-30:crow+30, ccol-30:ccol+30] = 1# IDFTfshift = dft_shift*mask #去掉⾼频部分,只显⽰低频部分f_ishift = np.fft.ifftshift(fshift) #将低频部分从中⼼点处还原img_back = cv2.idft(f_ishift) #从频域逆变换到时域img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) #该函数通过实部和虚部⽤来计算⼆维⽮量的幅值plt.subplot(121),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(122),plt.imshow(img_back, cmap = 'gray')plt.title('Result'), plt.xticks([]), plt.yticks([])plt.show()img = cv2.imread('lena.jpg',0)img_float32 = np.float32(img)dft = cv2.dft(img_float32, flags = cv2.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft)rows, cols = img.shapecrow, ccol = int(rows/2) , int(cols/2) # 中⼼位置# ⾼通滤波mask = np.ones((rows, cols, 2), np.uint8)mask[crow-30:crow+30, ccol-30:ccol+30] = 0# IDFTfshift = dft_shift*maskf_ishift = np.fft.ifftshift(fshift)img_back = cv2.idft(f_ishift)img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) plt.subplot(121),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(122),plt.imshow(img_back, cmap = 'gray')plt.title('Result'), plt.xticks([]), plt.yticks([])plt.show()。
图像的二维傅里叶变换
图像傅立叶变换(二维傅立叶变换fourier, 二维DFT, 2d-fft)的原理和物理意义图像傅立叶变换图像的傅立叶变换,原始图像由N行N列构成,N必须是基2的,把这个N*N个包含图像的点称为实部,另外还需要N*N个点称为虚部,因为FFT是基于复数的,如下图所示:计算图像傅立叶变换的过程很简单:首先对每一行做一维FFT,然后对每一列做一维FFT。
具体来说,先对第0行的N个点做FFT(实部有值,虚部为0),将FFT输出的实部放回原来第0行的实部,FFT输出的虚部放回第0行的虚部,这样计算完全部行之后,图像的实部和虚部包含的是中间数据,然后用相同的办法进行列方向上的FFT变换,这样N*N的图像经过FFT得到一个N*N的频谱。
下面展示了一副图像的二维FFT变换:频域中可以包含负值,图像中灰色表示0,黑色表示负值,白色表示正值。
可以看到4个角上的黑色更黑,白色更白,表示其幅度更大,其实4个角上的系数表示的是图像的低频组成部分,而中心则是图像的高频组成部分。
除此以外,FFT的系数显得杂乱无章,基本看不出什么。
将上述直角坐标转换为极坐标的形式,稍微比较容易理解一点,幅度中4个角上白色的区域表示幅度较大,而相位中高频和低频基本看不出什么区别来。
上述以一种不同的方法展示了图像频谱,它将低频部分平移到了频谱的中心。
这个其实很好理解,因为经2D-FFT的信号是离散图像,其2D-FFT的输出就是周期信号,也就是将前面一张图周期性平铺,取了一张以低频为中心的图。
将原点放在中心有很多好处,比如更加直观更符合周期性的原理,但在这节中还是以未平移之前的图来解释。
行N/2和列N/2将频域分成四块。
对实部和幅度来说,右上角和左下角成镜像关系,左上角和右下角也是镜像关系;对虚部和相位来说,也是类似的,只是符号要取反,这种对称性和1维傅立叶变换是类似的,你可以往前看看。
为简单起见,先考虑4*4的像素,右边是其灰度值,对这些灰度值进行2维fft变换。
【数字图像处理】傅里叶变换在图像处理中的应用
【数字图像处理】傅⾥叶变换在图像处理中的应⽤1.理解⼆维傅⾥叶变换的定义1.1⼆维傅⾥叶变换1.2⼆维离散傅⾥叶变换1.3⽤FFT计算⼆维离散傅⾥叶变换1.3图像傅⾥叶变换的物理意义2.⼆维傅⾥叶变换有哪些性质?2.1⼆维离散傅⾥叶变换的性质2.2⼆维离散傅⾥叶变换图像性质3.任给⼀幅图像,对其进⾏⼆维傅⾥叶变换和逆变换4.附录 94.1matlab代码4.2参考⽂献⽬录1.理解⼆维傅⾥叶变换的定义1.1⼆维傅⾥叶变换⼆维Fourier变换:逆变换:1.2⼆维离散傅⾥叶变换⼀个图像尺⼨为M×N的函数的离散傅⾥叶变换由以下等式给出:其中和。
其中变量u和v⽤于确定它们的频率,频域系统是由所张成的坐标系,其中和⽤做(频率)变量。
空间域是由f(x,y)所张成的坐标系。
可以得到频谱系统在频谱图四⾓处沿和⽅向的频谱分量均为0。
离散傅⾥叶逆变换由下式给出:令R和I分别表⽰F的实部和需部,则傅⾥叶频谱,相位⾓,功率谱(幅度)定义如下:1.3⽤FFT计算⼆维离散傅⾥叶变换⼆维离散傅⾥叶变换的定义为:⼆维离散傅⾥叶变换可通过两次⼀维离散傅⾥叶变换来实现:1)作⼀维N点DFT(对每个m做⼀次,共M次)2)作M点的DFT(对每个k做⼀次,共N次)这两次离散傅⾥叶变换都可以⽤快速算法求得,若M和N都是2的幂,则可使⽤基⼆FFT算法,所需要乘法次数为⽽直接计算⼆维离散傅⾥叶变换所需的乘法次数为(M+N)MN,当M和N⽐较⼤时⽤⽤FFT运算,可节约很多运算量。
1.3图像傅⾥叶变换的物理意义图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平⾯空间上的梯度。
如:⼤⾯积的沙漠在图像中是⼀⽚灰度变化缓慢的区域,对应的频率值很低;⽽对于地表属性变换剧烈的边缘区域在图像中是⼀⽚灰度变化剧烈的区域,对应的频率值较⾼。
傅⾥叶变换在实际中有⾮常明显的物理意义,设f是⼀个能量有限的模拟信号,则其傅⾥叶变换就表⽰f的频谱。
从纯粹的数学意义上看,傅⾥叶变换是将⼀个函数转换为⼀系列周期函数来处理的。
傅里叶变换在数字图像处理中的应用课件
• 由欧拉公 式
f (t)
F (n1 )e jn1t
• 其中 n
F (0) a0
F (n1 )
1 2
(an
jbn )
引入了负频率
F (n1 )
1 2
(an
jbn )
10
非周期信号的频谱分析
当周期信号的周期T1无限大时,就演变成 了非周期信号的单脉冲信号
T1
频率也变成连续变量
1
2
T1
0 d
n1
11
非周期函数傅立叶变换分析式
F (w) f (t )e jwt dt f(t) Nhomakorabea1
2
F ().e jtd
频谱演变的定性观察
1
2
T1
F (n1)
-T/2
T/2
F (n1) 1
F (n1 )
-T/2
T/2
1
2
2
13
三.从物理意义来讨论FT
(a) F(ω)是一个密度函数的概念 (b) F(ω)是一个连续谱 (c) F(ω)包含了从零到无限高
傅里叶变换
连续时间信号 的傅里叶变换
号周 期 性 信
信非 号周
期 性
离散时间信号 的傅里叶变换
号周 期 性 信
信非 号周
期
性
连续函数的 傅立叶变换
一、三角函数的傅里叶级数:
f1(t) a0 (an cos n1t bn sin n1t) n1
直流 分量
基波分量 n =1
谐波分量 n>1
N 1
j 2 mn
X (m) x(n)e N , m 0,1, 2,3, 4,...N 1
图像处理中的傅里叶变换
FFT是DFT的一种高效实现,它广 泛应用于信号处理、图像处理等 领域。
频域和时域的关系
频域
频域是描述信号频率特性的区域,通过傅里叶变换可以将 时域信号转换为频域信号。在频域中,信号的频率成分可 以被分析和处理。
时域
时域是描述信号时间变化的区域,即信号随时间的变化情 况。在时域中,信号的幅度和时间信息可以被分析和处理。
其中n和k都是整数。
计算公式
X(k) = ∑_{n=0}^{N-1} x(n) * W_N^k * n,其中W_N=exp(-
2πi/N)是N次单位根。
性质
DFT是可逆的,即可以通过DFT 的反变换将频域信号转换回时域
信号。
快速傅里叶变换(FFT)
定义
快速傅里叶变换(FFT)是一种高 效计算DFT的算法,它可以将DFT 的计算复杂度从O(N^2)降低到 O(NlogN)。
通过傅里叶变换,我们可以方便地实现图像的滤波操作,去除噪声或突出某些特 征。同时,傅里叶变换还可以用于图像压缩,通过去除高频成分来减小图像数据 量。此外,傅里叶变换还可以用于图像增强和图像识别,提高图像质量和识别准 确率。
PART 02
傅里叶变换的基本原理
离散傅里叶变换(DFT)
定义
离散傅里叶变换(DFT)是一种 将时域信号转换为频域信号的方 法。它将一个有限长度的离散信 号x(n)转换为一个复数序列X(k),
傅里叶变换的物理意义是将图像中的每个像素点的灰度值表 示为一系列正弦波和余弦波的叠加。这些正弦波和余弦波的 频率和幅度可以通过傅里叶变换得到。
通过傅里叶变换,我们可以将图像中的边缘、纹理等高频成 分和背景、平滑区域等低频成分分离出来,从而更好地理解 和处理图像。
6.图像的傅立叶变换 - 数字图像处理实验报告
计算机与信息工程学院验证性实验报告一、实验目的1了解图像变换的意义和手段;2熟悉傅立叶变换的基本性质; 3熟练掌握FFT 变换方法及应用; 4通过实验了解二维频谱的分布特点;5通过本实验掌握利用MATLAB 编程实现数字图像的傅立叶变换。
6评价人眼对图像幅频特性和相频特性的敏感度。
二、实验原理1 应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2 傅立叶(Fourier )变换的定义对于二维信号,二维Fourier 变换定义为:2()(,)(,)j ux uy F u v f x y e dxdy π∞∞-+-∞-∞=⎰⎰逆变换:2()(,)(,)j ux uy f x y F u v e dudv π∞∞+-∞-∞=⎰⎰二维离散傅立叶变换为:112()001(,)(,)i k N N j mn N Ni k F m n f i k eNπ---+===∑∑逆变换:112()001(,)(,)i k N N j mn N Nm n f i k F m n eNπ--+===∑∑图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。
实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
3利用MATLAB软件实现数字图像傅立叶变换的程序:I=imread(‘原图像名.gif’);%读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sfftI); %取傅立叶变换的虚部A=sqrt(RR.^2+II.^2); %计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225 %归一化figure; %设定窗口imshow(A); %显示原图像的频谱三、实验步骤1.将图像内容读入内存;2.用Fourier变换算法,对图像作二维Fourier变换;3.将其幅度谱进行搬移,在图像中心显示;4.用Fourier系数的幅度进行Fourier反变换;5.用Fourier系数的相位进行Fourier反变换;6.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。
图像处理与傅里叶变换原理与运用
图像处理与傅里叶变换1背景傅里叶变换是一个非常复杂的理论,我们在图像处理中集中关注于其傅里叶离散变换离散傅立叶变换(Discre t e Fourie r Transf o rm) 。
1.1离散傅立叶变换图象是由灰度(R GB )组成的二维离散数据矩阵,则对它进行傅立叶变换是离散的傅立叶变换。
对图像数据f (x,y)(x=0,1,… ,M-1; y=0,1,… ,N-1)。
则其离散傅立叶变换定义可表示为:式中,u=0,1,…, M-1;v= 0,1,…, N-1其逆变换为式中,x=0,1,…, M-1;y= 0,1,…, N-1在图象处理中,一般总是选择方形数据,即M=N影像f(x,y)的振幅谱或傅立叶频谱: 相位谱: 能量谱(功率谱) )1(2exp ),(1),(1010∑∑-=-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛+-=M x N y N vy M ux i y x f MN v u F π)2(2exp ),(1),(1010∑∑-=-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛+=M u N v N vy M ux i v u F MN y x f π),(),(),(22v u I v u R v u F +=[]),(/),(),(v u R v u I arctg v u =ϕ),(),(),(),(222v u I v u R v u F v u E +==1.2快速傅里叶变化可分离性的优点是二维的傅立叶变换或逆变换由两个连续的一维傅立叶变换变换来实现,对于一个影像f (x,y),可以先沿着其每一列求一维傅立叶变换,再对其每一行再求一维变换正变化逆变换 由于二维的傅立叶变换具有可分离性,故只讨论一维快速傅立叶变换。
正变换逆变换由于计算机进行运算的时间主要取决于所用的乘法的次数。
按照上式进行一维离散由空间域向频率域傅立叶变换时,对于N 个F ∑∑∑∑-=-=-=-=⎥⎦⎤⎢⎣⎡⨯⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+=10101010)(2exp ),(1)(2exp ),(1)(2exp ),(1),(N v N u N u N v N vy i v u F N N ux i v u F N N vy ux i v u F NN y x f πππ∑-=⎥⎦⎤⎢⎣⎡-=102exp )(1)(N x N ux i x f N u F π∑∑∑∑-=-=-=-=⎥⎦⎤⎢⎣⎡-⨯⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡+-=10101010)(2exp ),(1)(2exp ),(1)(2exp ),(1),(N y N x N x N y N vy i y x f N N ux i y x f NN vy ux i y x f NN v u F πππ∑-=⎥⎦⎤⎢⎣⎡=102exp )(1)(N u N ux i u F N x f π(u)值,中的每一个都要进行N 次运算,运算时间与N 2成正比。
图像的傅里叶变换
图像的傅里叶变换
图像的傅里叶变换是将图像的像素用时间或频率的形式表示的一种变换方式。
一般来说,图像的每个像素点都可以用其周围的邻居来描述,而傅里叶变换可以对图像中所有的邻居进行变换,有效地减少图像的深度和宽度,使图像更轻巧。
傅里叶变换的一个重要用途便是图像分析和处理,它可以将复杂的信息减缩到更小的空间中,从而使图像变得更容易理解。
比如,使用傅里叶变换可以有效地抽取图像中最重要的特征,例如颜色、对比度、形状等。
此外,傅里叶变换还可以用于图像压缩,通过傅里叶变换可以把复杂的信息转换为高频信号和低频信号,通过减少低频信号可以压缩图像的体积,但这样做不会影响图像的整体清晰度,而是减少了细节的某些程度上。
总而言之,傅里叶变换是一种对图像进行分析和处理的非常有效的方法,可以有效地提取图像中最重要的特征,可以大大减少图像的深度和宽度,并且可以用于图像压缩以及图像处理等任务中,从而大大改善图像的处理效果。
图像傅里叶变换
fx, yhx, y 1 M1N1 fm,nhxm, yn MN m0 n0
卷积定理
fx,yhx,yFu,vHu,v
fx,yhx,yFu,vHu,v
A
51
傅里叶变换
9. 相关性理论
大小为M×N的两个函数f(x,y)和h(x,y)的相关
性定义为
A
56
快速傅里叶变换(FFT)
为什么需要快速傅里叶变换?
F u 1 M1 f x ej2ux/M M x0
u 0,1,2,...,M 1
✓ 对u的M个值中的每一个都需进行M次复数乘法(将f(x)
与ej2ux/M相乘)和M-1次加法,即复数乘法和加法的次
数都正比于M2
✓ 快速傅里叶变换(FFT)则只需要Mlog2M次运算
为什么要在频率域研究图像增强
✓ 可以利用频率成分和图像外表之间的对应关系。一 些在空间域表述困难的增强任务,在频率域中变得非 常普通
✓ 滤波在频率域更为直观,它可以解释空间域滤波的 某些性质
✓ 可以在频率域指定滤波器,做反变换,然后在空间 域使用结果滤波器作为空间域滤波器的指导
✓一旦通过频率域试验选择了空间滤波,通常实施都在
A
46
一幅二维图像的傅里叶频谱 中心化的傅里叶频谱
傅里叶变换
6. 分离性
F u,v
1 M 1 j2ux/M e
1 N1
f x, y e j2vy/ N
M
x 0
N y 0
1 M
M 1 j2ux/M
x 0e
F x,v
F(x,v)是沿着f(x,y)的一行所进行的傅里叶变 换。当x=0,1,…,M-1,沿着f(x,y)的所有行计 算傅里叶变换。
图像傅里叶变换的意义是什么?
图像傅里叶变换的意义是什么?前言前面转载过一篇关于傅里叶变换原理的文章《一篇难得的关于傅里叶分析的好文》。
那篇文章写得非常棒,浅显易懂,可以说稍有基础的人都能看懂那篇博文。
但是那篇博文更多的是从信号处理的角度以及原理的角度讲述傅里叶变换。
那么在数字图像处理中,傅里叶变换之后得到的频谱图又有怎样的运用呢?这篇博客就是为了简单讲讲傅里叶变换在数字图像处理中的意义和基本应用,如有错误请各位指出。
数字图像的傅里叶变换通过前面的博文已经知道傅里叶变换是得到信号在频域的分布,数字图像也是一种信号,对它进行傅里叶变换得到的也是它的频谱数据。
对于数字图像这种离散的信号,频率大小表示信号变化的剧烈程度或者说是信号变化的快慢。
频率越大,变化越剧烈,频率越小,信号越平缓,对应到图像中,高频信号往往是图像中的边缘信号和噪声信号,而低频信号包含图像变化频繁的图像轮廓及背景等信号。
需要说明的是,傅里叶变换得到的频谱图上的点与原图像上的点之间不存在一一对应的关系。
频域数据的应用1. 图像去噪根据上面说到的关系,我们可以根据需要获得在频域对图像进行处理,比如在需要除去图像中的噪声时,我们可以设计一个低通滤波器,去掉图像中的高频噪声,但是往往也会抑制图像的边缘信号,这就是造成图像模糊的原因。
以均值滤波为例,用均值模板与图像做卷积,大家都知道,在空间域做卷积,相当于在频域做乘积,而均值模板在频域是没有高频信号的,只有一个常量的分量,所以均值模板是对图像局部做低通滤波。
除此之外,常见的高斯滤波也是一种低通滤波器,因为高斯函数经过傅里叶变换后,在频域的分布依然服从高斯分布,如下图所示。
所以它对高频信号有很好的滤除效果。
高斯函数在频域的分布图像2. 图像增强及锐化图像增强需要增强图像的细节,而图像的细节往往就是图像中高频的部分,所以增强图像中的高频信号能够达到图像增强的目的。
同样的图像锐化的目的是使模糊的图像变得更加清晰,其主要方式是增强图像的边缘部分,其实就是增强图像中灰度变化剧烈的部分,所以通过增强图像中的高频信号能够增强图像边缘,从而达到图像锐化的目的。
图像的傅里叶变换-第5讲
F (u ) = ∑ f ( x)e 1 f ( x) = N
N −1
− j 2π
u=0,1,…,N-1
∑ F (u )e
u =0
j 2π
ux N
x=0,1,…,N-1
9
Use Euler Formula
F(u) can be described as follows:
N −1 x=0 ux N N −1 x=0
F (u) = ∑ f ( x)e
− j 2π
= ∑ f ( x)[cos(2πux / N ) − j sin(2πux / N )]
− jφ ( u )
F (u ) = R(u ) + jI (u ) = F (u ) e
polar coordinates
R (F) + jI (F)
36
F(u,v) is a complex number, with real and imaginary parts. We can thus define the magnitude and phase of F(u,v):
∑∑
x =0 y =0
ux vy f ( x, y ) sin 2π + M N
– Real part
1 Fr (u , v) = MN
M −1 N −1
∑∑
x =0 y =0
ux vy f ( x, y ) cos 2π + M N
33
•Inverse Fourier Transfo ∞
− ∞− ∞ ∞ ∞
∫∫
f ( x, y )e − j 2π (ux + vy ) dxdy =
图像处理与傅里叶变换原理与运用
图像处理与傅里叶变换1背景傅里叶变换是一个非常复杂的理论,我们在图像处理中集中关注于其傅里叶离散变换离散傅立叶变换(Discrete Fourier Transform) 。
1.1离散傅立叶变换图象是由灰度(RGB )组成的二维离散数据矩阵,则对它进行傅立叶变换是离散的傅立叶变换。
对图像数据f(x,y)(x=0,1,… ,M-1; y=0,1,… ,N-1)。
则其离散傅立叶变换定义可表示为:式中,u=0,1,…, M-1;v= 0,1,…, N-1 其逆变换为式中,x=0,1,…, M-1;y= 0,1,…, N-1在图象处理中,一般总是选择方形数据,即M=N影像f(x,y)的振幅谱或傅立叶频谱: 相位谱:能量谱(功率谱) )1(2exp ),(1),(101∑∑-=-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛+-=M x N y N vy M uxi y x f MNv u F π)2(2exp ),(1),(101∑∑-=-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛+=M u N v N vy M uxi v u F MNy x f π),(),(),(22v u I v u R v u F +=[]),(/),(),(v u R v u I arctg v u =ϕ),(),(),(),(222v u I v u R v u F v u E +==1.2快速傅里叶变化可分离性的优点是二维的傅立叶变换或逆变换由两个连续的一维傅立叶变换变换来实现,对于一个影像f(x,y),可以先沿着其每一列求一维傅立叶变换,再对其每一行再求一维变换正变化逆变换由于二维的傅立叶变换具有可分离性,故只讨论一维快速傅立叶变换。
正变换 逆变换由于计算机进行运算的时间主要取决于所用的乘法的次数。
按照上式进行一维离散由空间域向频率域傅立叶变换时,对于N 个F∑∑∑∑-=-=-=-=⎥⎦⎤⎢⎣⎡⨯⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+=110101)(2exp ),(1)(2exp ),(1)(2exp ),(1),(N v N u N u N v N vy i v u F NN ux i v u F N N vy ux i v u F NNy x f πππ∑-=⎥⎦⎤⎢⎣⎡-=12exp )(1)(N x N ux i x f Nu F π∑∑∑∑-=-=-=-=⎥⎦⎤⎢⎣⎡-⨯⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡+-=11101)(2exp ),(1)(2exp ),(1)(2exp ),(1),(N y N x N x N y N vy i y x f NN ux i y x f NN vy ux i y x f NNv u F πππ∑-=⎥⎦⎤⎢⎣⎡=12exp )(1)(N u N ux i u F Nx f π(u)值,中的每一个都要进行N 次运算,运算时间与N 2成正比。
5.图像的频域增强及傅里叶变换
5.图像的频域增强及傅里叶变换傅立叶变换在图像处理中有非常非常的作用。
因为不仅傅立叶分析涉及图像处理的很多方而,傅立叶的改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量。
印象中,傅立叶变换在图像处理以下几个话题都有重要作用:1.图像增强与图像去噪绝大部分噪音都是图像的高频分呈:,通过低通滤波器来滤除髙频一一噪声;边缘也是图像的髙频分量,可以通过添加髙频分量来增强原始图像的边缘;2•图像分割Z边缘检测提取图像高频分量3.图像特征提取:形状特征:傅里叶描述子纹理特征:直接通过傅里叶系数来汁算纹理特征英他特征:将提取的特征值进行傅里叶变换来使特征具有平移、伸缩、旋转不变性4.图像压缩可以直接通过傅里叶系数来压缩数据:常用的离散余弦变换是傅立叶变换的实变换:傅立叶变换傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦函数叠加之和。
连续情况下要求原始信号在一个周期内满足绝对可积条件。
离散情况下,傅里叶变换一左存在。
冈萨雷斯版<图像处理>里而的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜。
棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决泄。
傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。
当我们考虑光时, 讨论它的光谱或频率谱。
同样,傅立叶变换使我们能通过频率成分来分析一个函数。
傅立叶变换有很多优良的性质。
比如线性,对称性(可以用在计算信号的傅里叶变换里而);时移性:函数在时域中的时移,对应于其在频率域中附加产生的相移,而幅度频谱则保持不变;频移性:函数在时域中乘以』wt,可以使整个频谱搬移W U这个也叫调制左理,通讯里而信号的频分复用需要用到这个特性(将不同的信号调制到不同的频段上同时传输): 卷积泄理:时域卷积等于频域乘枳:时域乘积等于频域卷积(附加一个系数)。
(图像处理里而这个是个重点)信号在频率域的表现在频域中,频率越大说明原始信号变化速度越快:频率越小说明原始信号越平缓。
基于Python实现图像的傅里叶变换
基于Python实现图像的傅⾥叶变换⽬录前⾔(1)基本概念(2)读取图像信息1. 傅⾥叶变换(1)基本概念(2)numpy实现(3)OpevCV实现2. 傅⾥叶逆变换(1)基本概念(2)代码实现前⾔⾸先是本⽂总体代码,改⼀下图像的读取路径就可以运⾏了,但我还是建议⼤家先看后⾯的步骤⼀⾏⾏敲代码,这样效果更好:"""Author:XiaoMadate:2021/11/7"""import cv2import matplotlib.pyplot as pltimport numpy as np#读取图像信息from numpy.fft import ifftshiftimg0 = cv2.imread("E:\From Zhihu\For the desk\cvthirteen2.jpg")img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5)img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) #转化为灰度图h, w = img1.shape[:2]print(h, w)dWindow("W0")cv2.imshow("W0", img2)cv2.waitKey(delay = 0)#将图像转化到频域内并绘制频谱图##numpy实现plt.rcParams['font.family'] = 'SimHei' #将全局中⽂字体改为⿊体f = np.fft.fft2(img2)fshift = np.fft.fftshift(f) #将0频率分量移动到图像的中⼼magnitude_spectrum0 = 20*np.log(np.abs(fshift))#傅⾥叶逆变换#Numpy实现ifshift = np.fft.ifftshift(fshift)# 将复数转为浮点数进⾏傅⾥叶频谱图显⽰ifimg = np.log(np.abs(ifshift))if_img = np.fft.ifft2(ifshift)origin_img = np.abs(if_img)imggroup = [img2, magnitude_spectrum0, ifimg, origin_img]titles0 = ['原始图像', '经过移动后的频谱图', '逆变换得到的频谱图', '逆变换得到的原图']for i in range(4):plt.subplot(2, 2, i + 1)plt.xticks([]) #除去刻度线plt.yticks([])plt.title(titles0[i])plt.imshow(imggroup[i], cmap = 'gray')plt.show()##OpenCV实现dft = cv2.dft(np.float32(img2), flags = cv2.DFT_COMPLEX_OUTPUT)dft_shift = np.fft.fftshift(dft)magnitude_spectrum1 = 20*np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))plt.subplot(121), plt.imshow(img2, cmap = 'gray')plt.title('原图'), plt.xticks([]), plt.yticks([])plt.subplot(122), plt.imshow(magnitude_spectrum1, cmap = 'gray')plt.title('频谱图'), plt.xticks([]), plt.yticks([])plt.show()(1)基本概念⼀般我们观察信号是直接在时域内(声⾳信号)或者空间内(图像)对其进⾏分析,这样虽然符合常理,但信号中的⼀些有⽤的条件就不会被我们考虑进去,从⽽达不到分析的效果,所以我们要将信号转化到其他的⼀些变换域中进⾏分析。
数字图像处理及MATLAB实现实验四——图像变换
数字图像处理及MATLAB实现实验四——图像变换1.图像的傅⾥叶变换⼀(平移性质)傅⾥叶变换的平移性质表明了函数与⼀个指数项相乘等于将变换后的空域中⼼移到新的位置,并且平移不改变频谱的幅值。
I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('2.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('3.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));实验结果符合傅⾥叶变换平移性质2.图像的傅⾥叶变换⼆(旋转性质)%构造原始图像I=zeros(256,256);I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐imshow(I)%求原始图像的傅⾥叶频谱J=fft2(I);F=abs(J);J1=fftshift(F);figureimshow(J1,[550])%对原始图像进⾏旋转J=imrotate(I,90,'bilinear','crop');figureimshow(J)%求旋转后图像的傅⾥叶频谱J=fft2(I);F=abs(J);J2=fftshift(F);figureimshow(J2,[550])3.图像的离散余弦变换⼀%对cameraman.tif⽂件计算⼆维DCT变换RGB=imread('cameraman.tif');figure(1)imshow(RGB)I=rgb2gray(RGB);%真彩⾊图像转换成灰度图像J=dct2(I);%计算⼆维DCT变换figure(2)imshow(log(abs(J)),[])%图像⼤部分能量集中在左上⾓处figure(3);J(abs(J)<10)=0;%把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像K=idct2(J)/255;imshow(K)4.图像的离散余弦变换⼆% I=imread('1.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('2.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('3.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% %构造原始图像% I=zeros(256,256);% I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐% imshow(I)% %求原始图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J1=fftshift(F);figure% imshow(J1,[550])% %对原始图像进⾏旋转% J=imrotate(I,90,'bilinear','crop');% figure% imshow(J)% %求旋转后图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J2=fftshift(F);figure% imshow(J2,[550])% %对cameraman.tif⽂件计算⼆维DCT变换% RGB=imread('cameraman.tif');% figure(1)% imshow(RGB)% I=rgb2gray(RGB);% %真彩⾊图像转换成灰度图像% J=dct2(I);% %计算⼆维DCT变换% figure(2)% imshow(log(abs(J)),[])% %图像⼤部分能量集中在左上⾓处% figure(3);% J(abs(J)<10)=0;% %把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像% K=idct2(J)/255;% imshow(K)RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000110000001000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000100000000000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);5.图像的哈达玛变换cr=0.5;I=imread('cameraman.tif');I=im2double(I)/255; %将读⼊的unit8类型的RGB图像I转换为double类型的数据figure(1),imshow(I);%显⽰%求图像⼤⼩[m_I,n_I]=size(I); %提取矩阵I的⾏列数,m_I为I的⾏数,n_I为I的列数sizi=8;snum=64;%分块处理t=hadamard(sizi) %⽣成8*8的哈达码矩阵hdcoe=blkproc(I,[sizi sizi],'P1*x*P2',t,t');%将图⽚分成8*8像素块进⾏哈达码变换%重新排列系数CE=im2col(hdcoe,[sizi,sizi],'distinct');%将矩阵hdcode分为8*8互不重叠的⼦矩阵,再将每个⼦矩阵作为CE的⼀列[Y Ind]=sort(CE); %对CE进⾏升序排序%舍去⽅差较⼩的系数,保留原系数的⼆分之⼀,即32个系数[m,n]=size(CE);%提取矩阵CE的⾏列数,m为CE的⾏数,n为CE的列数snum=snum-snum*cr;for i=1:nCE(Ind(1:snum),i)=0;end%重建图像re_hdcoe=col2im(CE,[sizi,sizi],[m_I,n_I],'distinct');%将矩阵的列重新组织到块中re_I=blkproc(re_hdcoe,[sizi sizi],'P1*x*P2',t',t);%进⾏反哈达码变换,得到压缩后的图像re_I=double(re_I)/64; %转换为double类型的数据figure(2);imshow(re_I);%计算原始图像和压缩后图像的误差error=I.^2-re_I.^2;MSE=sum(error(:))/prod(size(re_I));。
傅里叶变换
傅里叶变换图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。
对图像而言,图像的边缘部分是突变部分,变化较快,因此反应在频域上是高频分量;图像的噪声大部分情况下是高频部分;图像平缓变化部分则为低频分量;也就是说,傅里叶变换提供另外一个角度来观察图像,可以将图像从灰度分布转化到频率分布上来观察图像的特征。
图像进行二维傅里叶变换得到频谱图,就是图像梯度的分布图。
一般来讲,梯度大则该点的亮度强,否则该点亮度弱。
傅里叶变换的作用:(1)图像增强与图像去噪绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频—噪音;边缘也是图像的高频分量,可以通过添加高频分量来增强图像的边缘;(2)图像分割之边缘检测提取图像高频分量(3)图像特征提取形状特征:傅里叶描述子纹理特征:直接通过傅里叶系数来计算纹理特征其他特征:将提取的特征值进行傅里叶变换使特征具有平移,伸缩、旋转不变形(4)图像压缩可以直接通过傅里叶系数来压缩数据;常用的离散余弦变换是傅里叶变换的实变换。
频域中的重要概念:图像高频分量:图像突变部分;在某些情况下指图像边缘信息,某些情况下指噪音更多是两者的混合;低频分量:图像变换平缓部分,也就是图像轮廓信息高通滤波器:让图像使低频分量抑制,高频分量通过低通滤波器:带通滤波器:使图像在某一部分的频率信息通过,其他过低或过高的都抑制。
模板运算与卷积公式:在时域内做模板运算,实际上就是对图像进行卷积。
模板运算是图像处理一个很重要的处理过程,很多图像处理过程中,比如增强/去噪,边缘检测中普遍用到。
根据卷积定理,时域卷积等价于频域乘积。
因此,在时域内对图像做模板运算就等效于在频域内对图像做滤波处理。
比如说一个均值模板,其频域响应为一个低通滤波器;在时域内对图像作均值滤波就等效于在频域内对图像用均值模板的频域响应对图像的频域响应做一个低通滤波。
为什么我们要用正弦曲线来代替原来的曲线呢?分解信号的目的是为了更加简单地处理原来的信号。
图像傅里叶变换
图像傅⾥叶变换1. 通俗理解傅⾥叶变换可参考:[1](图⽚摘⾃)2. 通俗理解数字图像傅⾥叶变换傅⾥叶定理指出,任何信号都可以表⽰成⼀系列正弦信号的叠加。
在⼀维领域,信号是⼀维正弦波的叠加,那么在⼆维领域,就是⽆数⼆维平⾯波的叠加。
⽐如⼀帧图像,不同点处的灰度值⾼低起伏变化,傅⾥叶变换就是⽤⽆数⼆维正弦波来拟合这种灰度值的起伏变化,灰度值的起伏变化平缓的地⽅,很低频的⼆维正弦波即可拟合,灰度值的起伏变化很⼤的地⽅(⽐如图像边缘、噪点等),则需要⾼频⼆维正弦波才能拟合。
刻画⼀维正弦波只需要⼀个频率值u,刻画⼆维正弦波则需要两个频率值(u,v)。
例如:数字图像傅⾥叶变换可参考:[1] MOOC课程[2] 数字图像处理,冈萨雷斯,第⼆版,第四章[3][4]下图摘⾃[1],在FFT功率谱图中,⾼亮度表明该频率特征明显。
3. 从数学公式的⾓度理解傅⾥叶变换本节的公式摘⾃冈萨雷斯的《数字图像处理》第四章3.1 1-Dimensional Fourier transform1-D Fourier transform and inverse Fourier transfrom:Using Euler's formula, Fourier transform can be expressed as所以,当我们看到傅⾥叶变换公式中的e−j2πµt时,我们应该想到的是⼀系列不同频率的正弦波。
傅⾥叶变换公式可这样理解:所谓傅⾥叶变换在其数学本质上⽆⾮是信号与正弦函数在时间轴上的卷积操作。
根据⼀般的惯例,我们将信号与之作卷积操作的部分称之为卷积核或核函数,因此我们可以从频率分解以外的视⾓来审视傅⾥叶变换,可以将其认为是信号与⼀个参数可变的核函数的卷积操作,其可变的核函数的参数就是频率。
(这段话摘⾃)1-D discrete Fourier transform:x is integers, M is the number of samples of µ.1-D inverse discrete Fourier transform:3.2 2-Dimensional Fourier transform2-D Fourier transform and inverse Fourier transfrom:2-D discrete Fourier transform:4. ⽤matlab实现傅⾥叶变换傅⾥叶变换函数:function F = FT_peng(I)[m,n] = size(I);F = zeros(m,n);for u = 1:mfor v = 1:nfor x = 1:mfor y = 1:nF(u,v) = F(u,v) + double(I(x,y)) * exp(-2*pi*1i*(u*x/m+v*y/n)); endendendendend傅⾥叶逆变换函数:function f = IFT_peng(I)[m,n] = size(I);f = zeros(m,n);for x = 1:mfor y = 1:nfor u = 1:mfor v = 1:nf(x,y) = f(x,y) + double(I(u,v)) * exp(2*pi*1i*(u*x/m+v*y/n)); endendendendf = f/(m*n);end主程序代码:clear;I = imread('test_img.png');I = imresize(I, [100,100]);I = rgb2gray(I);% using fft2 directlyI_fft2 = fft2(I);I_fft2 = abs(I_fft2); % abs将负实数和虚数部分调整为正实数I_fft2shift = fftshift(I_fft2); % 把四个⾓的⾼频信息移动到最中间I_fft2shift = uint8(I_fft2shift/256); % 除以256是为了缩⼩数值,能更好的显⽰% using function defined by usI_FT = FT_peng(I);I_FT2 = abs(I_FT);I_FTshift = fftshift(I_FT2);I_FTshift = uint8(I_FTshift/256);% recover the image by inverse Fourier function defined by usI_inv = IFT_peng(I_FT);I_inv = uint8(I_inv);% plotsubplot(221);imshow(I); title('Original image');subplot(222);imshow(I_fft2shift); title('fft2 frequency image');subplot(223);imshow(I_FTshift); title('FT frequency image');subplot(224);imshow(I_inv); title('Recovered image');运⾏结果:注:程序参考了博客Processing math: 100%。
图像傅里叶变换的作用
图像傅里叶变换的作用
图像傅里叶变换(IFFT)是一种分析和处理图像信号的工具,主
要用于图像分割、信号处理、图像降噪等。
它是一种原始信号的变换,能够将某个图像的空间域表示进行转换,从而获得一种特定的频域表示。
几乎所有的图像处理都基于一种不同的傅立叶变换。
它能解释图
像中不同频率分量之间的相互关系,并据此对图像进行相应处理。
此外,图像傅里叶变换也可以用于图像识别和检测,以确定图像中所包
含的特征。
另外,图像傅里叶变换也可以用于图像滤波和降噪。
滤波在图像
处理中起着重要作用,能有效地减少图像中的噪声,改善图像的质量。
傅立叶变换能根据噪声的频率来确定噪声的位置,从而将其从图像中
去除。
图像傅里叶变换不仅用于图像处理,而且也可以应用于图像识别、视觉检测、图像场景理解等任务中。
它对于大规模的图像特征机器学
习任务具有重要作用,在深度学习中也可以被成功应用。
总之,图像傅里叶变换可以通过能够表征图像特征的频域特征,
来发现图像内容,从而实现图像处理,图像识别,图像场景理解等任务,也可以用于滤波和降噪,从而改善图像质量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 实验目的
1.了解图像变换的意义和手段;
2.掌握FFT 变换方法及应用;
3.通过实验了解二维频谱的分布特点;
4.通过本实验掌握利用MATLAB 编程实现数字图像的傅立叶变换。
二、 实验原理
1 应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、
电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决
大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在
学习和掌握博里叶变换上是很有必要的。
2 傅立叶(Fourier )变换的定义
对于二维信号,二维Fourier 变换定义为:
2()(,)(,)j ux uy F u v f x y e dxdy π∞∞
-+-∞-∞=
⎰⎰
逆变换: 2()(,)(,)j ux uy f x y F u v e dudv π∞∞
+-∞-∞=
⎰⎰
二维离散傅立叶变换为: 11
2()00
1(,)(,)i k N N j m n N N i k F m n f i k e N π---+===∑∑ 逆变换:
11
2()00
1(,)(,)i k N N j m n N N m n f i k F m n e N π--+===∑∑
三、 实验步骤及结果
步骤:
1将图像内容读入内存;
2用Fourier 变换算法,对图像作二维Fourier 变换;
3将其幅度谱进行搬移,在图像中心显示;
4用Fourier 系数的幅度进行Fourier 反变换;
5用Fourier 系数的相位进行Fourier 反变换;
6比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。
7记录和整理实验报告。
结果:
四、程序源代码
clear;
I=imread('');
I=rgb2gray(I);
subplot(3,3,1);
imshow(I);
title('');
E=fft2(double(I));
sfftI=fftshift(E); %正半轴部分和负半轴部分的图像分别关于各自的中心对称RR=real(sfftI);
II=imag(sfftI);
A=sqrt(RR.^2+II.^2);
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225 ;
subplot(3,3,2);
imshow(A);
title('原图频谱');
FE=abs(fftshift(E));
subplot(3,3,3);
imshow(log(FE+1),[]);%自然对数title('幅度谱');
PE=angle(E); %向量E的相角subplot(3,3,4);
imshow(PE);
title('图像相位谱');
IFE=ifft2(FE);
subplot(3,3,5);
imshow(log(1+abs(IFE)),[]); title('幅度谱的反变换');
IPE=ifft2(exp(j*PE));
subplot(3,3,6);
imshow(abs(IPE),[]);
title('相位谱的反变换');
IE=ifft2(E)/225;
subplot(3,3,7);
imshow(IE);
title('原图频谱反变换');。