几种滤波方法MATLAB

1 平滑滤波


clear all; close all;
I=imread('coins.png');
J=imnoise(I, 'salt & pepper', 0.02);%加噪声
h=ones(3,3)/5;
h(1,1)=0;   h(1,3)=0;
h(3,1)=0;   h(1,3)=0;
K=imfilter(J, h);
figure;
subplot(131);
imshow(I);
subplot(132);
imshow(J);
subplot(133);
imshow(K);

2 卷积平滑


clear all; close all;
I=imread('rice.png');
I=im2double(I);
J=imnoise(I, 'gaussian', 0, 0.01);
h=ones(3,3)/9;
K=conv2(J, h);
figure;
subplot(131);
imshow(I);
subplot(132);
imshow(J);
subplot(133);
imshow(K);

3 中值滤波



clear all; close all;
I=imread('coins.png');
I=im2double(I);
J=imnoise(I, 'salt & pepper', 0.03);
K=medfilt2(J);
figure;
subplot(131);
imshow(I);
subplot(132);
imshow(J);
subplot(133);
imshow(K);

4 顺序统计滤波



clear all; close all;
I=imread('coins.png');
I=im2double(I);
J1=ordfilt2(I, 1, true(5));%最小值输出 5x5
J2=ordfilt2(I, 25, true(5));%最大值输出 5x5  明亮
figure;
subplot(131);
imshow(I);
subplot(132);
imshow(J1);
subplot(133);
imshow(J2);

5 自适应滤波



clear all; close all;
I=imread('coins.png');
I=im2double(I);
J=imnoise(I, 'gaussian', 0, 0.01);
K=wiener2(J, [5 5]);
figure;
subplot(131);
imshow(I);
subplot(132);
imshow(J);
subplot(133);
imshow(K);

6 低通滤波



clear all; close all;
I=imread('liftingbody.png');  
I=im2double(I);  		
M=2*size(I,1);
N=2*size(I,2);
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u, v);
D=sqrt(U.^2+V.^2);
D0=50;
n=6;
H=1./(1+(D./D0).^(2*n));
J=fftshift(fft2(I, size(H, 1), size(H, 2))); 
K=J.*H;
L=ifft2(ifftshift(K));
L=L(1:size(I,1), 1:size(I, 2));
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(L);

7高通滤波

巴特沃茨高通滤波



clear all; close all;
I=imread('rice.png');  
I=im2double(I);  		
M=2*size(I,1);
N=2*size(I,2);
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u, v);
D=sqrt(U.^2+V.^2);
D0=30;
n=6;
H=1./(1+(D0./D).^(2*n));
J=fftshift(fft2(I, size(H, 1), size(H, 2))); 
K=J.*H;
L=ifft2(ifftshift(K));
L=L(1:size(I,1), 1:size(I, 2));
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(L);

高斯高通滤波



clear all; close all;
I=imread('coins.png');  
I=im2double(I);  		
M=2*size(I,1);
N=2*size(I,2);
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u, v);
D=sqrt(U.^2+V.^2);
D0=20;
H=1-exp(-(D.^2)./(2*(D0^2)));
J=fftshift(fft2(I, size(H, 1), size(H, 2))); 
K=J.*H;
L=ifft2(ifftshift(K));
L=L(1:size(I,1), 1:size(I, 2));
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(L);

8 带阻滤波器

理想带阻滤波器



clear all; close all;
I=imread('coins.png');
I=imnoise(I, 'gaussian', 0, 0.01);
I=im2double(I);  		
M=2*size(I,1);
N=2*size(I,2);
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u, v);
D=sqrt(U.^2+V.^2);
D0=50;
W=30;
H=double(or(D<(D0-W/2), D>D0+W/2));
J=fftshift(fft2(I, size(H, 1), size(H, 2))); 
K=J.*H;
L=ifft2(ifftshift(K));
L=L(1:size(I,1), 1:size(I, 2));
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(L);

同态滤波



clear all; close all;
I=imread('pout.tif');
J=log(im2double(I)+1);	
K=fft2(J);
n=5;
D0=0.1*pi;
rh=0.7;
rl=0.4;
[row, column]=size(J);
for i=1:row
    for j=1:column
        D1(i,j)=sqrt(i^2+j^2);
        H(i,j)=rl+(rh/(1+(D0/D1(i,j))^(2*n)));
    end
end
L=K.*H;
M=ifft2(L);
N=exp(M)-1;
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(real(N));

 

你可能感兴趣的:(图像)