主要内容

傅里叶变换

傅里叶变换的定义

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

如果fn是两个离散空间变量的函数吗而且n,那么二维傅里叶变换fn是由关系定义的吗

F ω 1 ω 2 n f n e j ω 1 e j ω 2 n

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

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

f n 1 4 π 2 ω 1 π π ω 2 π π F ω 1 ω 2 e j ω 1 e j ω 2 n d ω 1 d ω 2

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

可视化傅里叶变换

为了说明这一点,考虑一个函数fn它在矩形区域内等于1,其他地方等于0。为了简化图表,fn是一个连续函数,即使变量而且n是离散的。

矩形函数

下图作为网格图显示了傅里叶变换的幅值,

| F ω 1 ω 2 |

上图所示的矩形函数。幅值的网格图是可视化傅里叶变换的常用方法。

矩形函数的幅像

在情节中心的山峰是F(0,0)的所有值的和fn.剧情也说明了这一点Fω1ω2在高水平频率比高垂直频率有更多的能量。这反映了横截面的事实fn为窄脉冲,而垂直截面为宽脉冲。窄脉冲的高频含量比宽脉冲高。

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

日志 | F ω 1 ω 2 |

作为图像,如图所示。

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

使用对数可以帮助我们找出傅里叶变换的细节Fω1ω2非常接近于0。

下面是其他简单形状的傅里叶变换的例子。

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

离散傅里叶变换

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

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

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

DFT通常被定义为一个离散函数fn它只在有限区域是非零的 0 1 而且 0 n N 1 .二维——- - - - - -NDFT和逆——- - - - - -NDFT关系由

F p 0 1 n 0 N 1 f n e j 2 π p / e j 2 π n / N p 0 1 ... 1 0 1 ... N 1

而且

f n 1 N p 0 1 0 N 1 F p e j 2 π p / e j 2 π n / N 0 1 ... 1 n 0 1 ... N 1

的值Fp的DFT系数是fn.零频系数,F(0,0),通常被称为“直流分量”。直流是一个电气工程术语,代表直流电。(注意矩阵索引在MATLAB®总是从1开始,而不是0;因此,矩阵元素f(1,1)而且F(1,1)对应数学量f(0,0)而且F(0,0)分别)。

MATLAB函数fftfft2,fftn分别实现了计算一维DFT、二维DFT和n维DFT的快速傅立叶变换算法。的函数传输线ifft2,ifftn计算DFT的逆。

和傅里叶变换的关系

DFT系数Fp是傅里叶变换的样本吗Fω1ω2

F p F ω 1 ω 2 | ω 1 2 π p / ω 2 2 π / N p 0 1 ... 1 0 1 ... N 1

离散傅里叶变换的可视化

  1. 构造一个矩阵f这和函数很相似fn在例子中傅里叶变换的定义.记住,fn在矩形区域内等于1,在其他地方等于0。用二值图像表示fn

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

  2. 的30 × 30 DFT的计算和可视化f这些命令。

    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);F2 = fftshift(F);imshow(日志(abs (F2)), [1 5]);colormap(飞机);colorbar

    得到的图与中所示的图相同可视化傅里叶变换

傅里叶变换的应用

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

线性滤波器的频率响应

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

h = fspecial(“高斯”);freqz2 (h)

高斯滤波器的频率响应

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

使用傅里叶变换实现快速卷积

这个例子展示了如何使用傅里叶变换对两个矩阵进行快速卷积。傅里叶变换的一个关键性质是两个傅里叶变换的乘法对应于相关空间函数的卷积。这个性质,加上快速傅里叶变换,构成了快速卷积算法的基础。

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

创建两个简单的矩阵,一个而且B一个是m × n矩阵B是p × q矩阵。

一个=魔法(3);B = 1 (3);

一个而且B使它们至少是(M+P-1)-by-(N+Q-1)(通常是一个而且B是0填充到2的幂的大小,因为fft2这种尺寸最快。)该示例将矩阵填充为8 × 8。

(8) = 0;8 B(8日)= 0;

的二维DFT一个而且B使用fft2函数。将两个DFT乘在一起并计算结果的二维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 17.0000 30.0000 19.0000 13.0000 15.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.000

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

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

将一个示例图像读入工作区。

bw = imread (“text.png”);

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

= bw (32:45 88:98);

将模板图像旋转180度,然后使用基于fft的卷积技术,计算模板图像与原始图像的相关性。(如果将卷积核旋转180度,卷积就等同于相关。)要将模板与图像匹配,请使用fft2而且ifft2功能。在得到的图像中,明亮的峰值对应着字母的出现。

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

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

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

马克斯(C (:))
ans = 68
打= 60;%使用略小于max的阈值。D = C >阈值;se = strel (“磁盘”5);E = imdilate (D, se);图imshow (E)显示值超过阈值的像素。

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

Baidu
map