图像频域滤波白话解释

一般来说,图像高频分量对应图像细节信息,图像低频分量对应图像轮廓信息。低通滤波能够用来滤除噪声影响,高通滤波则是强调图像的纹理信息。但通过查阅相关资料发现,截止频率的确定却很少进行相关说明。如果我们需要的是图像中某一个频带的信息,如何精确地通过频域滤波获得滤波后的结果?为此做了相关如下实验。

考虑如下图像:


Fig.1

从图中可看出,包括直流成分在内一共有5种频率成分。频谱关于原点对称。分别为:


Fig.2

在频域上分别为:


Fig.3

举个例子来说。如果我们想滤除第二个频率的成分。我们需要构造一个频域滤波器(或称作传递函数),其阻带要包括图3(b)种白点区域。我们通过一个matlab程序构造了如下传递函数。


Fig.4

其中蓝色部分为0,红色部分为1。(可理解为理想滤波器,如果是高斯或者巴特沃兹滤波器不能简单设置阈值决定0和1)。可见,蓝色部分对应图3(b)种白色部分,也就是频域集中位置。

下一步,就是通过求得的传递函数对图像进行滤波。具体步骤是对原图像进行fft变换(matlab函数fft2)。在频域直接与传递函数点乘。然后进行fft逆变换即可。图5为滤波前后的对比结果。可见第二个频率分量被滤除。


fig.5

相关程序代码如下:

生成传递函数矩阵:

function [ H,D ] = lixiang_brfilter(M, N, DL,DH)

% DL=[1,40]; 二维低频截止位置

% DH=[10,50];二维高频截止位置

% M=256;

% N=256;

DL_do=M-DL;

DH_do=M-DH;

H=ones(M,N);

A=[1:1:M];

V=repmat(A,N,1);生成距离网格

U=V';

for i=1:M

    for j=1:N

        if(U(i,j)>DL(1)&U(i,j)<DH(1))&(V(i,j)>DL(2)&V(i,j)<DH(2))

            H(i,j)=0;

        elseif(U(i,j)>DH_do(1)&U(i,j)<DL_do(1))&(V(i,j)>DH_do(2)&V(i,j)<DL_do(2))%对偶延展

            H(i,j)=0;

        end

    end

end

滤波程序:

function g = dftfilt( f,H )

F=fft2(f,size(H,1),size(H,2));

% perform filtering.

g=real (ifft2(H.*F));

% Crop to original size.

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

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值