主要内容

傅里叶变换

傅里叶变换的定义

傅里叶变换是将图像表示为不同幅度、频率和相位的复指数之和。傅里叶变换在广泛的图像处理应用中起着至关重要的作用,包括增强、分析、恢复和压缩。

如果F(M,N)是两个离散空间变量的函数吗MN,然后二维傅里叶变换F(M,N)是由关系来定义的吗

F ( ω 1. , ω 2. ) = M = N = F ( M , N ) E J ω 1. M E J ω 2. N

的变量ω1.ω2.是频率变量;单位是每个样本的弧度。F(ω1.,ω2.)通常被称为频域代表F(M,N)F(ω1.,ω2.)复值函数是否同时具有周期性ω1.ω2.,以期 2. π .由于其周期性,通常只取范围 π ω 1. , ω 2. π 会显示出来。请注意,F(0,0)是的所有值的总和F(M,N).由于这个原因,F(0,0)通常被称为恒定的组件直流分量傅里叶变换。(DC代表直流电;它是一个电气工程术语,指的是恒压电源,而不是电压呈正弦变化的电源。)

变换的逆是一种操作,当对变换后的图像执行时,会产生原图像。二维傅里叶反变换由

F ( M , N ) = 1. 4. π 2. ω 1. = π π ω 2. = π π F ( ω 1. , ω 2. ) E J ω 1. M E J ω 2. N D ω 1. D ω 2.

粗略地说,这个等式意味着F(M,N)可以表示为具有不同频率的无限多个复指数(正弦)的和。在频率处的贡献的大小和相位(ω1.,ω2.)是由F(ω1.,ω2.)

可视化傅里叶变换

为了说明这一点,考虑一个函数F(M,N)矩形区域内等于1,其他区域等于0。为了简化图表,F(M,N)显示为连续函数,即使变量MN它们是离散的。

矩形函数

下图以网格图的形式显示了傅里叶变换的幅度,

| F ( ω 1. , ω 2. ) | ,

如上图所示的矩形函数的网格图。量级的网格图是显示傅里叶变换的常用方法。

矩形函数的幅值图像

情节中心的顶点是F(0,0),它是所有值的和F(M,N).情节也显示了这一点F(ω1.,ω2.)在高水平频率比在高垂直频率有更多的能量。这反映了横截面F(M,N)是窄脉冲,而垂直截面是宽脉冲。窄脉冲比宽脉冲具有更多的高频成分。

另一种可视化傅里叶变换的常用方法是显示

日志 | F ( ω 1. , ω 2. ) |

如图所示。

矩形函数傅里叶变换的对数

使用对数有助于揭示傅里叶变换在某些区域的细节F(ω1.,ω2.)非常接近于0。

其他简单形状的傅里叶变换示例如下所示。

一些简单形状的傅里叶变换

离散傅里叶变换

在计算机上使用傅里叶变换通常涉及一种称为离散傅里叶变换(DFT)的变换形式。离散变换是一种变换,其输入和输出值为离散样本,便于计算机操作。使用这种形式的转换有两个主要原因:

  • DFT的输入和输出都是离散的,便于计算机操作。

  • 有一种计算DFT的快速算法称为快速傅里叶变换(FFT)。

DFT通常定义为离散函数F(M,N)仅在有限区域上是非零的 0 M M 1. 0 N N 1. .二维M——- - - - - -NDFT和逆M——- - - - - -NDFT关系由

F ( P , Q ) = M = 0 M 1. N = 0 N 1. F ( M , N ) E J 2. π P M / M E J 2. π Q N / N P = 0 , 1. , ... , M 1. Q = 0 , 1. , ... , N 1.

F ( M , N ) = 1. M N P = 0 M 1. Q = 0 N 1. F ( P , Q ) E J 2. π P M / M E J 2. π Q N / N M = 0 , 1. , ... , M 1. N = 0 , 1. , ... , N 1.

的值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 ( P , Q ) = F ( ω 1. , ω 2. ) | ω 1. = 2. π P / M ω 2. = 2. π Q / N P = 0 , 1. , ... , M 1. Q = 0 , 1. , ... , N 1.

离散傅里叶变换的可视化

  1. 构造矩阵F这和函数很相似F(M,N)在例子中傅里叶变换的定义.记住,F(M,N)在矩形区域内等于1,其他区域为0。用二值图像表示F(M,N)

    f = 0(30、30);在《f(5:24福音》里)= 1;imshow (f,‘InitialMagnification’,‘适合’)

  2. 计算并可视化30 × 30的DFTF这些命令。

    F = fft2 (F);F2 =日志(abs (F));imshow (F2, [1 - 5], ' InitialMagnification ', '适应');colormap(飞机);colorbar

    无填充的离散傅里叶变换计算

    这个图与图中显示的傅里叶变换不同可视化傅里叶变换. 首先,傅里叶变换的采样要粗得多。第二,零频率系数显示在左上角,而不是传统的中心位置。

  3. 为获得更精细的傅里叶变换采样,加零填充F计算它的DFT时。使用此命令,零填充和DFT计算可以在单个步骤中执行。

    F = fft2 (256256);

    这个命令是零焊盘F在计算DFT之前为256 × 256。

    imshow(日志(abs (F)), [1 5]);colormap(飞机);colorbar

    用填充计算离散傅里叶变换

  4. 然而,零频率系数仍然显示在左上角而不是中心。你可以通过使用这个函数来解决这个问题fftshift,交换象限F所以零频率系数在中心。

    F = fft2(F,256,256);imshow(日志(abs (F2)), [1 5]);colormap(飞机);colorbar

    结果图与图中所示的是相同的可视化傅里叶变换

傅里叶变换的应用

本节介绍傅里叶变换的许多图像处理相关应用中的一些。

线性滤波器的频率响应

线性滤波器的脉冲响应的傅里叶变换给出了滤波器的频率响应。这个函数freqz2计算并显示滤波器的频率响应。高斯卷积核的频率响应表明,该滤波器通过低频,衰减高频。

h=f特殊(“高斯”);频率Z2(h)

高斯滤波器的频率响应

看见设计频域线性滤波器有关线性滤波、滤波器设计和频率响应的更多信息。

使用傅里叶变换进行快速卷积

此示例演示如何使用傅里叶变换对两个矩阵执行快速卷积。傅里叶变换的一个关键特性是,两个傅里叶变换的乘积对应于相关空间函数的卷积。该特性与快速傅里叶变换一起构成了快速卷积算法的基础。

注:基于FFT的卷积方法最常用于大输入。对于较小的输入,通常使用imfilter函数。

创建两个简单的矩阵,A.BA.是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

基于fft的相关性定位图像特征

这个例子展示了如何使用傅里叶变换来执行相关,这与卷积密切相关。相关性可用于定位图像中的特征。在这种情况下,通常称为相关性模板匹配

将示例图像读入工作区。

bw = imread (“text.png”);

从图像中提取字母“a”,创建一个匹配模板。的交互式语法也可以创建模板imcrop函数。

a=体重(32:45,88:98);

通过将模板图像旋转180度,然后使用基于FFT的卷积技术,计算模板图像与原始图像的相关性。(如果将卷积内核旋转180度,卷积相当于相关性。)要将模板与图像匹配,请使用fft2ifft2功能。在生成的图像中,明亮的峰值对应于字母的出现。

C =实际(ifft2 (fft2 (bw)。* fft2 (rot90 (a, 2), 256256)));图imshow (C, [])%缩放图像到适当的显示范围。

图中包含一个轴对象。axes对象包含类型为image的对象。

要查看模板在图像中的位置,请找到最大像素值,然后定义一个小于此最大值的阈值。阈值图像将这些峰值的位置显示为阈值相关图像中的白点。(为了使此图中的位置更容易看到,该示例放大阈值图像以放大点的大小。)

马克斯(C (:))
ans=68
打= 60;%使用一个略小于最大值的阈值。D=C>thresh;se=strel(“磁盘”,5); E=扩张(D,se);图3(E)%显示像素值超过阈值。

图中包含一个轴对象。axes对象包含类型为image的对象。