📄 lena_corrupt_lp_hp.m
字号:
%调用图像
I1=imread('f:\lena\lena_corrupt.bmp');
figure,imshow(I1)
title('hello,i am Lena')
%巴特沃思低通滤波消噪,图像模糊;理想滤波可以解决,见LenaW.M
f=double(I1);
g=fft2(f);
g=fftshift(g);
[N1,N2]=size(g);
n=2;
d0=60;
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j= 1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
figure,imshow(X3)
title('hello,low pass filter')
%在低通基础上,进行巴特沃思高通滤波,需要图像标定,没有解决
g2=fft2(X3);
g2=fftshift(g2);
[M1,M2]=size(g2);
d1=400;
m1=fix(M1/2);
m2=fix(M2/2);
for i=1:M1
for j=1:M2
d2=sqrt((i-m1)^2+(j-m2)^2);
if d2==0
h2==0;
else
h2=0.5+(1/(1+(d1/d)^(2*n)));
end
result2(i,j)=h2*g2(i,j);
end
end
%标定图像
%[f1,f2]=freqspace(512,'meshgrid');
for I = M1:M2,
for J = M1:M2,
if result2(I,J)<0
result2(I,J)=0;
end
end
end
Y2=ifft2(result2);
Y3=uint8(real(Y2));
figure,imshow(Y3)
title('hello,high pass filter')
%直接将高通于低通图像相加,效果不理想//标定也许可以解决
X3=double(X3);
Y3=double(Y3);
Z3=X3+Y3;
Z=uint8(real(Z3));
figure,imshow(Z)
title('hello,clean clear now')
figure,imhist(Z)
%未标定的图像,直方图均衡化湿效果更差
I=histeq(Z,0:256);
figure,imshow(I)
title('hello,clean clear now,too ')
figure,imhist(I)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -