频率域滤波之带阻滤波器matlab代码

代码主要实现了两点功能

1、增加频率域噪声

2、用带阻滤波器去掉频率域噪声

效果:

原图像   和    加噪声后的图像(多了很多波纹)

          

频率域图像

带阻滤波器

    

最后的图像

上代码:

clear;
close all;
clc;

I=imread('m.tif');
I=im2double(I);
[m,n]=size(I);

r = 0:m-1;%Row coordinates.
c = 0:n-1;%Column coordinates.
[C, R] = meshgrid(c, r);
A=0.01;
%半径2
r=2;
%划区域10个
nn=10;
f = zeros(m, n);
for i=1:nn
    temp=(i-0.5)*pi/nn;
    u0=r*sin(temp);
    v0=r*cos(temp);
    f = f+A*sin(u0*R + v0*C); 
end
J=I+f;
figure;
imshow(J);

%傅里叶变换
IF=fftshift(fft2(I));
JF=fftshift(fft2(J));
%对数变换将高频细节扩展出来
IF=log(1+abs(IF));
JF=log(1+abs(JF));
figure;
subplot(1,2,1), imshow(IF,[]), title('原图像');
subplot(1,2,2), imshow(JF,[]), title('周期噪声图像');

%% %%%%%%%%%%%%%%%%%%%%%%%%%%
%处理J
k=fft2(J);
g=fftshift(k);
imshow(log(abs(g)+1),[]);

[N1,N2]=size(g);

W=10;
n=2;
d0=148;
n1=round(N1/2);
n2=round(N2/2);
Homo = zeros(N1, N2);
for i=1:N1 
    for j=1:N2
        d=sqrt(((i-n1)*N2/N1)^2+((j-n2))^2);
        Home(i,j)=1/(1+((d*W)/(d^2-d0^2))^(2*n));
    end
end
figure;
mesh(abs(Home(1:10:N1,1:10:N2)));
figure;
imshow(Home,[]);

%y=g.*Home;
y=g.*Home;
figure;
imshow(log(abs(y)+1),[]);

y=ifftshift(y);
E1=ifft2(y);
E2=real(E1);

subplot(1,3,1), imshow(I,[]), title('原图像');
subplot(1,3,2), imshow(J,[]), title('周期噪声图像');
subplot(1,3,3), imshow(E2,[]), title('处理后图像');

问题:

为什么加噪声以后频率域会出现十字形状,为什么对周围造成了影响?

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值