4. 频域处理(上)

mac2024-03-29  36

文章目录:

4.1 傅里叶变换4.1.1 连续傅里叶变换4.1.2 离散傅里叶变换4.1.3 二维离散傅里叶变换的性质4.1.4 Matlab中的二维离散傅里叶变换 4.2 频域滤波4.2.1 频域滤波介绍4.2.2 离散傅立叶变换频域滤波的基本步骤

4.1 傅里叶变换

1)傅立叶级数: 任何周期性函数可以表示为不同频率的正弦或余弦的总和,每个乘以不同的系数。 2)傅里叶变换: 即使是不是周期性(但是其曲线下面积是有限的)的函数也可以表示为正弦和或余弦与数相乘的加权和函数形式。将一个信号表示成各种不同频率正弦或余弦信号的累加。 3)频域:是指将一个信号经过傅立叶变换后所得到的信号表示形式。 4)傅里叶变换的目的是将信号表示为各种频率正余弦信号的线性组合。 5)傅里叶变换后的 F(u) 用来描述一个信号分解成频率为u的成分,它是一个复数,其中实部表示频率为u的信号的幅值,虚部表示u频率的相位。 6)对于图像来说,经过傅里叶变换后,高频就表示边缘信息,低频就表示平滑的信息,所以在频域进行处理就是过滤掉某些频率的信息,留下的信息就是我们想要的。 7)那离散傅里叶变换就是将N个离散的信号表示成 0-2兀 固定频率间隔的信号累加,信号间隔大小为2兀/N,N表示离散信号的个数,从0 - N-1 。

8)一维离散信号傅里叶变换举例: 对于一个信号 [ 1 2 4 4],经过傅里叶变换就可以表示为: 原信号:1 2 4 4 傅里叶变换后:11.0000 + 0.0000i -3.0000 + 2.0000i -1.0000 + 0.0000i -3.0000 - 2.0000i 原信号就可以表示为傅里叶变换后的四个离散信号的累加

9)傅里叶变换的理解: 一个信号可以分解成无数个正弦信号叠加,可以看成无数个大小不同的圆上的点从一开始的初相位就位,随着时间的推移,这些圆上的点以他们的加速度移动,这些点加在一起就是这个信号,那么从频域上看,这个信号就是素数个不同频率的正弦信号叠加,这些频率组成一个坐标轴,就是频域。

4.1.1 连续傅里叶变换

1)一维傅立叶变换及其逆变换 (1)傅里叶变换:

(2)傅里叶逆变换: (3)欧拉公式: 2)二维傅里叶变换及其逆变换 (1)傅里叶变换: (2)傅里叶逆变换:

4.1.2 离散傅里叶变换

1)一维离散傅立叶变换(DFT)及其逆变换 (1)傅里叶变换: (2)傅立叶逆变换: 根据欧拉公式 , 那么离散傅立叶变换可重新定义为: (3)频域:函数 F ( u )的自变量 u 所在的定义域的范围, u 描述变换中对应的频率分量的频率。 (4)频率分量: F ( u )的 M 项中的每一项。 (5)F ( u ) 可以用极坐标来表示 : 其中: 为幅度频谱。

为相位谱。 功率谱 :

2)二维离散傅里叶变换及其逆变换 (1)傅立叶变换 : (2)傅立叶反变换 : u , v : 频率变量 x , y : 空间变量 我们定义傅立叶频谱,相位角和功率谱如下: 频谱: 相位角: 功率谱:

4.1.3 二维离散傅里叶变换的性质

1)空域平移性质: 2)频域平移性质: 3)平均和对称性质: 4)可分离性质: F(u,v)的二维离散傅立叶变换可通过以下计算方式获得: (1)对图像 每一行计算其一维傅立叶变换得到 (2)对图像 再进行一维离散傅立叶变换 。 5)旋转性质: 6)周期性: 7)线性: 8)微分性质: [外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imxD6Ablog.csdnimg.cn/1-157031112554470.png#pic_center=501x6330)(https://imgblog.csdnimg.cn/20191031112654473.png#pic_center)] 9)卷积定理:

10)相关定理:

11) 伸缩性质: 12)一些有用的傅立叶变换对

4.1.4 Matlab中的二维离散傅里叶变换

1)在工程实践中使用快速傅里叶变换(FFT)算法来计算离散傅立叶变换及其反变换。可以利用matlab中的函数fft2计算获得 M × N 图像阵列 f 的FFT,其具有简单的语法如下:

F=fft2(f)

此函数返回的傅里叶变换也具有大小 M × N ,数据的原点位于左上角,四个四分之一周期在频率矩形的中心相交。 可通过使用函数abs获得傅里叶幅度谱:

S=abs(F)

使用fftshift的最终结果与在计算变换之前输入图像乘以(-1)x+y相同。

2)我们可以利用图像工具箱中的函数ifft2来计算一幅图像的傅里叶反变换,它的基本的语法:

f=ifft2(F)

在实践中ifft2的输出通常具有由舍入误差引起的非常小的虚部。因此,提取结果的实部是一种好方法。

f=real(ifft2(F))

3)程序演示:

f = imread('Fig0424(a)(rectangle).tif'); subplot(2,2,1);imshow(f,[]); %傅里叶变换 F = fft2(f); subplot(2,2,2);imshow(F,[]); %平移 Fc = fftshift(F); %取幅值谱 压缩动态范围 S = log(1 + abs(Fc)); subplot(2,2,3);imshow(S,[]); %傅里叶反变换 取实部 f = ifft2(F); f = real(f); subplot(2,2,4);imshow(f,[]);

4.2 频域滤波

4.2.1 频域滤波介绍

1)空间域和频域中线性滤波的基础是卷积定理,它可以写成: 频域相乘相当于空域卷积 2)频域滤波的基本想法就是选择一个特定的滤波器传递函数来修改输入图像的傅立叶变换 。例如,图中的低通滤波器: 3)基于卷积定理,我们知道为了在空间域中获得相应的滤波图像,我们只需简单地计算乘积输入图像与滤波器乘积 的逆傅里叶变换。 4)如果周期相对于函数的非零部分的长度非常接近,则周期函数的卷积可能带来相邻周期内的非零部分信号的干扰。这种干扰称为混叠误差,它可以用零填充这种技术手段来消除。 5)例如,我们采用上图中的低通滤波器对下图中的图像进行频域内的滤波

4.2.2 离散傅立叶变换频域滤波的基本步骤

) 1)使用paddedsize函数获取填充参数 :

PQ=paddedsize(size(f));

2)使用填充获取傅里叶变换:

F=fft2(f,PQ(1),PQ(2))

3)使用本章其余部分讨论的任何方法生成大小为PQ(1)×PQ(2)的滤波函数 H . 4)过滤器必须采用图没有移动格式。如果它居中,在使用滤波器之前让 H = fftshift(H) 。 5)乘以滤波器的变换:

G = H.* F;

6) 获得G的傅立叶反变换的实部

g = real(ifft2(G))

7)将滤波处理后图像按输入图像的尺寸剪裁出左上角矩形作输出图像:

g = g(1:size(f,1),1:size(f,2));

8)示例:

f = imread('Fig0432(a)(square_original).tif'); subplot(1,3,1);imshow(f,[]);title('原图'); [m n]=size(f) F=fft2(f); H=lpfilter('gaussian',m,n,30); G=H.*F; g = real(ifft2(G)); subplot(1,3,2);imshow(g,[]);title('未填充图'); %计算填充大小 PQ = paddedsize(size(f)); F = fft2(f,PQ(1),PQ(2)); H = lpfilter('gaussian',PQ(1),PQ(2),10); G = H .*F; g = real(ifft2(G)); g = g(1:size(f,1),1:size(f,2)); subplot(1,3,3);imshow(g,[]);title('填充图');

最新回复(0)