傅里叶变换是将图像表示为不同幅度、频率和相位的复指数之和。傅里叶变换在广泛的图像处理应用中起着至关重要的作用,包括增强、分析、恢复和压缩。
如果F(M,N)是两个离散空间变量的函数吗M和N,然后二维傅里叶变换的F(M,N)是由关系来定义的吗
的变量ω1.和ω2.是频率变量;单位是每个样本的弧度。F(ω1.,ω2.)通常被称为频域代表F(M,N).F(ω1.,ω2.)复值函数是否同时具有周期性ω1.和ω2.,以期 .由于其周期性,通常只取范围 会显示出来。请注意,F(0,0)是的所有值的总和F(M,N).由于这个原因,F(0,0)通常被称为恒定的组件或直流分量傅里叶变换。(DC代表直流电;它是一个电气工程术语,指的是恒压电源,而不是电压呈正弦变化的电源。)
变换的逆是一种操作,当对变换后的图像执行时,会产生原图像。二维傅里叶反变换由
粗略地说,这个等式意味着F(M,N)可以表示为具有不同频率的无限多个复指数(正弦)的和。在频率处的贡献的大小和相位(ω1.,ω2.)是由F(ω1.,ω2.).
为了说明这一点,考虑一个函数F(M,N)矩形区域内等于1,其他区域等于0。为了简化图表,F(M,N)显示为连续函数,即使变量M和N它们是离散的。
矩形函数
下图以网格图的形式显示了傅里叶变换的幅度,
如上图所示的矩形函数的网格图。量级的网格图是显示傅里叶变换的常用方法。
矩形函数的幅值图像
情节中心的顶点是F(0,0),它是所有值的和F(M,N).情节也显示了这一点F(ω1.,ω2.)在高水平频率比在高垂直频率有更多的能量。这反映了横截面F(M,N)是窄脉冲,而垂直截面是宽脉冲。窄脉冲比宽脉冲具有更多的高频成分。
另一种可视化傅里叶变换的常用方法是显示
如图所示。
矩形函数傅里叶变换的对数
使用对数有助于揭示傅里叶变换在某些区域的细节F(ω1.,ω2.)非常接近于0。
其他简单形状的傅里叶变换示例如下所示。
一些简单形状的傅里叶变换
在计算机上使用傅里叶变换通常涉及一种称为离散傅里叶变换(DFT)的变换形式。离散变换是一种变换,其输入和输出值为离散样本,便于计算机操作。使用这种形式的转换有两个主要原因:
DFT的输入和输出都是离散的,便于计算机操作。
有一种计算DFT的快速算法称为快速傅里叶变换(FFT)。
DFT通常定义为离散函数F(M,N)仅在有限区域上是非零的 和 .二维M——- - - - - -NDFT和逆M——- - - - - -NDFT关系由
和
的值F(P,Q)的DFT系数是F(M,N). 零频率系数,F(0,0),通常被称为“直流分量”。直流是电气工程术语,表示直流电。(注意MATLAB中的矩阵指标®总是从1而不是0开始;因此,矩阵元素F(1,1)和F(1,1)对应于数学上的数量F(0,0)和F(0,0)分别为。)
MATLAB函数fft
,fft2
,fftn
实现快速傅里叶变换算法,分别计算一维DFT、二维DFT和N维DFT。功能ifft
,ifft2
,ifftn
计算逆DFT。
DFT系数F(P,Q)是傅里叶变换的样本吗F(ω1.,ω2.).
构造矩阵F
这和函数很相似F(M,N)在例子中傅里叶变换的定义.记住,F(M,N)在矩形区域内等于1,其他区域为0。用二值图像表示F(M,N).
f = 0(30、30);在《f(5:24福音》里)= 1;imshow (f,‘InitialMagnification’,‘适合’)
计算并可视化30 × 30的DFTF
这些命令。
F = fft2 (F);F2 =日志(abs (F));imshow (F2, [1 - 5], ' InitialMagnification ', '适应');colormap(飞机);colorbar
无填充的离散傅里叶变换计算
这个图与图中显示的傅里叶变换不同可视化傅里叶变换. 首先,傅里叶变换的采样要粗得多。第二,零频率系数显示在左上角,而不是传统的中心位置。
为获得更精细的傅里叶变换采样,加零填充F
计算它的DFT时。使用此命令,零填充和DFT计算可以在单个步骤中执行。
F = fft2 (256256);
这个命令是零焊盘F
在计算DFT之前为256 × 256。
imshow(日志(abs (F)), [1 5]);colormap(飞机);colorbar
用填充计算离散傅里叶变换
然而,零频率系数仍然显示在左上角而不是中心。你可以通过使用这个函数来解决这个问题fftshift
,交换象限F
所以零频率系数在中心。
F = fft2(F,256,256);imshow(日志(abs (F2)), [1 5]);colormap(飞机);colorbar
结果图与图中所示的是相同的可视化傅里叶变换.
本节介绍傅里叶变换的许多图像处理相关应用中的一些。
线性滤波器的脉冲响应的傅里叶变换给出了滤波器的频率响应。这个函数freqz2
计算并显示滤波器的频率响应。高斯卷积核的频率响应表明,该滤波器通过低频,衰减高频。
h=f特殊(“高斯”);频率Z2(h)
高斯滤波器的频率响应
看见设计频域线性滤波器有关线性滤波、滤波器设计和频率响应的更多信息。
此示例演示如何使用傅里叶变换对两个矩阵执行快速卷积。傅里叶变换的一个关键特性是,两个傅里叶变换的乘积对应于相关空间函数的卷积。该特性与快速傅里叶变换一起构成了快速卷积算法的基础。
注:基于FFT的卷积方法最常用于大输入。对于较小的输入,通常使用imfilter
函数。
创建两个简单的矩阵,A.
和B
.A.
是M-x-N矩阵,并且B
是一个p × q矩阵。
一个=魔法(3);B = 1 (3);
在A.
和B
所以它们至少是(M+P-1)-(N+Q-1)。(经常A.
和B
是否将0填充为2的幂fft2
是这些尺寸中最快的。)该示例将矩阵填充为8 × 8。
(8) = 0;8 B(8日)= 0;
计算二维离散傅里叶变换A.
和B
使用fft2
功能。将两个DFT相乘,并使用ifft2
函数。
C = ifft2 (fft2 (A)。* fft2 (B));
提取结果的非零部分,去除因舍入误差引起的虚部分。
C = C (1:5, 1:5);C =实际(C)
C =5×58.0000 9.0000 15.0000 7.0000 6.0000 11.0000 17.0000 30.0000 19.0000 13.0000 15.0000 30.0000 45.0000 30.0000 15.0000 7.0000 21.0000 30.0000 23.0000 9.0000 4.0000 13.0000 15.0000 11.0000 2.0000
这个例子展示了如何使用傅里叶变换来执行相关,这与卷积密切相关。相关性可用于定位图像中的特征。在这种情况下,通常称为相关性模板匹配.
将示例图像读入工作区。
bw = imread (“text.png”);
从图像中提取字母“a”,创建一个匹配模板。的交互式语法也可以创建模板imcrop
函数。
a=体重(32:45,88:98);
通过将模板图像旋转180度,然后使用基于FFT的卷积技术,计算模板图像与原始图像的相关性。(如果将卷积内核旋转180度,卷积相当于相关性。)要将模板与图像匹配,请使用fft2
和ifft2
功能。在生成的图像中,明亮的峰值对应于字母的出现。
C =实际(ifft2 (fft2 (bw)。* fft2 (rot90 (a, 2), 256256)));图imshow (C, [])%缩放图像到适当的显示范围。
要查看模板在图像中的位置,请找到最大像素值,然后定义一个小于此最大值的阈值。阈值图像将这些峰值的位置显示为阈值相关图像中的白点。(为了使此图中的位置更容易看到,该示例放大阈值图像以放大点的大小。)
马克斯(C (:))
ans=68
打= 60;%使用一个略小于最大值的阈值。D=C>thresh;se=strel(“磁盘”,5); E=扩张(D,se);图3(E)%显示像素值超过阈值。