📄 notch_filter.m
字号:
%function [pic_hat]=Notch_Filter(noise_pic)
clear all
clc
source_pic='Fig4.bmp';
pic=imread(source_pic);
noise_pic=generate_Noise_pic(pic);
noise_pic=double(noise_pic);
[M,N]=size(pic);
u0=M/2;
v0=0;
for u=1:M
for v=1:N
D1(u,v)=sqrt((u-M/2-u0)^2+(v-N/2-v0)^2);
D2(u,v)=sqrt((u-M/2+u0)^2+(v-N/2+v0)^2);
end
end
D0=M/2/(2*pi);
%for u=1:M
% for v=1:N
% Hnr(u,v)=1-exp(-0.5*D1(u,v)*D2(u,v)/D0^2);
% end
%end
for u=1:M
for v=1:N
if (D1(u,v)<=D0 || D2(u,v)<=D0)
Hnr(u,v)=0;
else
Hnr(u,v)=1;
end
end
end
% apply H to noise_pic
for x=1:M
for y=1:N
noise_pic(x,y)=(-1)^(x+y)*noise_pic(x,y);
end
end
noise_pic_fft=fft2(noise_pic);
pic_hat=Hnr.*noise_pic_fft;
pic_hat=ifft2(pic_hat);
for x=1:M
for y=1:N
pic_hat(x,y)=pic_hat(x,y)/(-1)^(x+y);
noise_pic(x,y)=noise_pic(x,y)/(-1)^(x+y);
end
end
pic_hat=real(pic_hat);
pic_hat=255*(pic_hat-min(min(pic_hat)))/(max(max(pic_hat))-min(min(pic_hat)));
pic_hat=uint8(pic_hat);
imwrite(pic_hat,'pic_hat.bmp');
%figure(2);
subplot(2,2,1);imshow(pic);
subplot(2,2,2);imshow(pic_hat);
subplot(2,2,3);imshow(uint8(noise_pic));
% Calculate noise and Pic_noise spectrum
for x=1:M
for y=1:N
H_temp(x,y)=(-1)^(x+y)*Hnr(x,y);
end
end
H_spectrum=log10(abs(fft2(H_temp))+1);
H_spectrum=255*(H_spectrum-min(min(H_spectrum)))/(max(max(H_spectrum))-min(min(H_spectrum)));
subplot(2,2,4);imshow(uint8(H_spectrum));
%figure(3)
%subplot(2,2,1);imhist(pic);
%subplot(2,2,2);imhist(noise_pic);
%subplot(2,2,3);imhist(pic_hat);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -