小白学冈萨雷斯数字图像处理——第四章:频域处理

4.1 二维离散傅里叶变换

定义与一维DFT相同,此处不再赘述。

在计算二维傅里叶变换之前,可将f(x,y)*(-1)^(x+y)次,可将原点的变换值移到频谱中心。
在这里插入图片描述

4.2 在MATLAB中计算并可视化二维DFT

下列函数返回M*N的傅里叶变换;数据原点在左上角,而两个四分之一周期交汇于频率矩形的中心。

F = fft2(f)

若需要进行0填充:

F = fft2(f,P,Q)

生成的矩阵大小为P*Q,多余的用0填充。

我们可以使用fftshift函数将变换的原点移到频率矩形的中心,也可用ifftshift将其复原:

Fc = fftshift(F)
F = ifftshift(Fc)

我们可以使用对数变换来使频谱的视觉增强:

S2 = log(1+abs(Fc));

在这里插入图片描述
可用如下函数计算频率矩形的中心点可不必考虑M,N的奇偶性:

[floor(M/2) + 1 , floor(N/2) + 1]

由于浮点计算的舍入误差,傅里叶逆变换的输出会有很小的虚数分量,因此需要计算后取实部:

f = real(ifft2(F));

4.3 频域滤波

4.3.1 基本概念

空间域和频域线性滤波的基础均为卷积定理

频域滤波的目的是选择一个滤波器传递函数,以便按照指定的方式修改F(u,v)。例如,当乘一个低通滤波器时,高频分量会被衰减,而低频分量保持不变,此结果会出现模糊现象(平滑)。

注意:当我们使用DFT进行滤波时,图像及其变换都被看作是具有周期性的。若周期关于函数的非零部分的持续时间很近,则对周期函数执行卷积运算会导致相邻周期之间的干扰,称为折叠误差的干扰。我们可以通过使用0填充函数的方法来避免。
若函数f和h的大小分别为AB和CD,通过选择P>=A+C-1,Q>=B+D-1即可避免折叠误差。

paddedsize函数可计算满足P,Q的最小偶数值(加快FFT速度),还可填充输入图像,使其等于最接近的2的整数次幂。

function PQ = paddedsize(AB, CD, nargin)
% 计算填充尺寸以供基于FFT的滤波器
% nargin = 1   PQ = PADDEDSIZE(AB),AB = [A B], PQ = 2 * AB
%
% nargin = 2   PQ = PADDEDSIZE(AB, 'PWR2'), PQ(1= PQ(2= 2 ^ nextpow2(2 * m), m =
% MAX(AB).
% 
% nargin = 3   PQ = PADDEDSIZE(AB, CD),AB = [A B], CD = [C D]
%
% nargin = 其它 PQ = PADDEDSIZE(AB, CD, 'PWR2'), PQ(1= PQ(2= 2 ^ nextpow2(2 * m), m =
% MAX([AB CD]).

if nargin == 1
    PQ = 2 * AB;
else if nargin == 2 & ~ischar(CD)
    PQ = AB + CD -1;
    PQ = 2 * ceil(PQ / 2);
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值