用matlab高通滤波消除图像噪声,编写的程序如下:
I=imread('D:\Desktop\程序\paris.jpg');
noisy=imnoise(I,'gaussian',0.05);
[M,N]=size(I);
F=fft2(noisy);
fftshift(F);
Dcut=100;D0=150;D1=250;
for u=1:M
for v=1:N
D(u,v)=sqrt(u^2+v^2);
BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/D0)^2);
if D(u,v)<D0
TRAPEH(u,v)=0;
elseif D(u,v)<=D1
TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);
else
TRAPEH(u,v)=1;
end
end
end
BUTTERG=fft(BUTTERH);
f1=ifft2(BUTTERG);
TRAPEG=fft(TRAPEH);
f3=ifft2(TRAPEG);
subplot(3,2,1),imshow(I),title('原图像');
subplot(3,2,5),imshow(noisy),title('含高斯噪声图像');
%subplot(2,3,3),imshow(noisy),title('含椒盐噪声图像');
subplot(3,2,2),imshow(f1),title('巴特沃斯高通滤波');
subplot(3,2,4),imshow(f1),title('高斯高通滤波');
subplot(3,2,6),imshow(f3),title('梯形高通滤波');
执行之后,结果如下,有三个图是黑色的,不知道是什么情况,麻烦大神帮帮忙

I=imread('D:\Desktop\程序\paris.jpg');
noisy=imnoise(I,'gaussian',0.05);
[M,N]=size(I);
F=fft2(noisy);
fftshift(F);
Dcut=100;D0=150;D1=250;
for u=1:M
for v=1:N
D(u,v)=sqrt(u^2+v^2);
BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/D0)^2);
if D(u,v)<D0
TRAPEH(u,v)=0;
elseif D(u,v)<=D1
TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);
else
TRAPEH(u,v)=1;
end
end
end
BUTTERG=fft(BUTTERH);
f1=ifft2(BUTTERG);
TRAPEG=fft(TRAPEH);
f3=ifft2(TRAPEG);
subplot(3,2,1),imshow(I),title('原图像');
subplot(3,2,5),imshow(noisy),title('含高斯噪声图像');
%subplot(2,3,3),imshow(noisy),title('含椒盐噪声图像');
subplot(3,2,2),imshow(f1),title('巴特沃斯高通滤波');
subplot(3,2,4),imshow(f1),title('高斯高通滤波');
subplot(3,2,6),imshow(f3),title('梯形高通滤波');
执行之后,结果如下,有三个图是黑色的,不知道是什么情况,麻烦大神帮帮忙
