clear;clc;
figure;
yt=imread('H:\大学\数字图象处理\课程设计2\dogOriginal.bmp');
yt_noise=imread('H:\大学\数字图象处理\课程设计2\dogDistorted.bmp');
subplot(4,3,1);imshow(yt);title('原图');
subplot(4,3,3);imhist(yt);title('原图');
a=fftshift(fft2(yt));
subplot(4,3,2);imshow(mat2gray(log(abs(a))));title('原图频谱图');
subplot(4,3,4);imshow(yt_noise);title('噪声图');
subplot(4,3,6);imhist(yt_noise);title('噪声图');
a=fftshift(fft2(yt_noise));
subplot(4,3,5);imshow(mat2gray(log(abs(a))));title('噪声图频谱图');
A=fspecial('average');
qsjnoise=filter2(A,yt_noise)/255;
subplot(4,3,7);imshow(qsjnoise);title('去随机噪声');
subplot(4,3,9);imhist(qsjnoise);title('去随机噪声');
a=fftshift(fft2(qsjnoise));
subplot(4,3,8);imshow(mat2gray(log(abs(a))));title('去随机噪声后频谱图');
x=double(qsjnoise);
x1=fftshift(fft2(qsjnoise));
x2=x1;
[m,n]=size(x1);
nn=2;
d0=30;
m0=fix(m/2);
n0=fix(n/2);
for i=1:m
for j=1:n
d=sqrt((i-m0)^2+(j-n0)^2);
h=1*exp(-1/2*(d^2/d0^2));
x2(i,j)=h*x1(i,j);
end
end
qnoise=abs(ifft2(x2));
qnoise=mat2gray(qnoise);
subplot(4,3,10);imshow(qnoise);title('去噪声');
subplot(4,3,12);imhist(qnoise);title('去噪声');
a=fftshift(fft2(qnoise));
subplot(4,3,11);imshow(mat2gray(log(abs(a))));title('去噪声后频谱图');
cha=yt-uint8(qnoise);
he=sum(sum(cha));
avg=he/(m*n);
wucha=cha-avg;
result1=(sum(sum(wucha.^2)))/(m*n);
if result1==0
disp('dog图均方误差');result2=0
else
disp('dog图均方误差');result2=sqrt(result1)
end
figure;
yt=imread('H:\大学\数字图象处理\课程设计2\swanOriginal.bmp');
yt_noise=imread('H:\大学\数字图象处理\课程设计2\swanNoise.bmp');
subplot(4,3,1);imshow(yt);title('原图');
subplot(4,3,3);imhist(yt);title('原图');
a=fftshift(fft2(yt));
subplot(4,3,2);imshow(mat2gray(log(abs(a))));title('原图频谱图');
subplot(4,3,4);imshow(yt_noise);title('噪声图');
subplot(4,3,6);imhist(yt_noise);title('噪声图');
a=fftshift(fft2(yt_noise));
subplot(4,3,5);imshow(mat2gray(log(abs(a))));title('噪声图频谱图');
qjynoise=medfilt2(yt_noise,[3,3]);
subplot(4,3,7);imshow(qjynoise);title('去随机噪声');
subplot(4,3,9);imhist(qjynoise);title('去随机噪声');
a=fftshift(fft2(qjynoise));
subplot(4,3,8);imshow(mat2gray(log(abs(a))));title('去随机噪声后频谱图');
x=double(qjynoise);
x1=fftshift(fft2(qjynoise));
x2=x1;
[m,n]=size(x1);
nn=2;
d0=30;
m0=fix(m/2);
n0=fix(n/2);
for i=1:m
for j=1:n
d=sqrt((i-m0)^2+(j-n0)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
x2(i,j)=h*x1(i,j);
end
end
qnoise=abs(ifft2(x2));
subplot(4,3,10);imshow(qnoise,[]);title('去噪声');
subplot(4,3,12);imhist(mat2gray(qnoise));title('去噪声');
a=fftshift(fft2(qnoise));
subplot(4,3,11);imshow(mat2gray(log(abs(a))));title('去噪声后频谱图');
cha=yt-uint8(qnoise);
he=sum(sum(cha));
avg=he/(m*n);
wucha=cha-avg;
result1=(sum(sum(wucha.^2)))/(m*n);
if result1==0
disp('swan图均方误差');result2=0
else
disp('swan图均方误差');result2=sqrt(result1)
end
%%%%带阻滤波器,线性滤波器