⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notch_filter.m

📁 an implementation of Notch_Filter in matlab for image processing
💻 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 + -