数字图像处理实验报告
一、 实验要求
采用imnoise函数对图像添加不同分布、不同强度的随机噪声,比较通过空域平滑、中值滤波处理前后图像的频谱。
二、 实验代码
clc clear warning off
I=imread('pout.tif');
if isrgb(I)%判断是否为彩色图像
I=rgb2gray(I);%彩色图像转黑白,若原图像为黑白的,则不要这一步 end %加噪声
I3=imnoise(I,'salt & pepper',0.03); I12=imnoise(I,'gaussian'); I21=imnoise(I,'speckle'); %原图像求频谱
A=fft2(I); %傅里叶变换 A=fftshift(A); %使图像对称
I1=log(1+abs(A)); %图像幅度谱,加log便于显示 I2=real(120*I1./abs(I1)); %椒盐频谱
C=fft2(I3); %傅里叶变换
I4=log(1+abs(C)); %图像幅度谱,加log便于显示 C=fftshift(C); %使图像对称 I5=real(120*I4./abs(I4)); %椒盐中值 n=3; a=ones(n,n); p=size(I3); x1=double(I3);x2=x1; for i=1:p(1)-n+1 for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)); e=c(1,:); for u=2:n
e=[e,c(u,:)]; end
mm=median(e);
x2(i+(n-1)/2,j+(n-1)/2)=mm;
end end
I9=uint8(x2); %椒盐中值频谱
B=fft2(I9); %傅里叶变换 B=fftshift(B); %使图像对称
I10=log(1+abs(B)); %图像幅度谱,加log便于显示 I11=real(120*I10./abs(I10)); %空域平滑 [m,n]=size(I3); I6=I3; for i=2:m-1 for j=2:n-1
I6(i,j)=(1/4)*(double(I3(i,j-1))+double(I3(i,j+1))+double(I3(i-1,j))+double(I3(i+1,j))); end end
%椒盐空域平滑频谱
D=fft2(I6); %傅里叶变换 D=fftshift(D); %使图像对称
I7=log(1+abs(D)); %图像幅度谱,加log便于显示 I8=real(120*I7./abs(I7)); %高斯频谱
E=fft2(I12); %傅里叶变换
I13=log(1+abs(E)); %图像幅度谱,加log便于显示 E=fftshift(E); %使图像对称 I14=real(120*I13./abs(I13)); %高斯中值 n=3; a=ones(n,n); p=size(I12); x1=double(I3);x2=x1; for i=1:p(1)-n+1 for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)); e=c(1,:); for u=2:n
e=[e,c(u,:)]; end
mm=median(e);
x2(i+(n-1)/2,j+(n-1)/2)=mm; end end
I18=uint8(x2); %高斯中值频谱
F=fft2(I18); %傅里叶变换 F=fftshift(F); %使图像对称
I19=log(1+abs(F)); %图像幅度谱,加log便于显示 I20=real(120*I19./abs(I19)); %高斯空域平滑 [m,n]=size(I12); I15=I12; for i=2:m-1 for j=2:n-1
I15(i,j)=(1/4)*(double(I12(i,j-1))+double(I12(i,j+1))+double(I12(i-1,j))+double(I12(i+1,j))); end end
%高斯空域平滑频谱
D=fft2(I15); %傅里叶变换 D=fftshift(D); %使图像对称
I16=log(1+abs(D)); %图像幅度谱,加log便于显示 I17=real(120*I16./abs(I16)); %乘性频谱
G=fft2(I21); %傅里叶变换
I22=log(1+abs(G)); %图像幅度谱,加log便于显示 G=fftshift(G); %使图像对称 I23=real(120*I22./abs(I22)); %乘性中值 n=3; a=ones(n,n); p=size(I21); x1=double(I21);x2=x1; for i=1:p(1)-n+1 for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)); e=c(1,:); for u=2:n
e=[e,c(u,:)]; end
mm=median(e);
x2(i+(n-1)/2,j+(n-1)/2)=mm; end end
I27=uint8(x2); %乘性中值频谱
H=fft2(I27); %傅里叶变换 H=fftshift(H); %使图像对称
I28=log(1+abs(H)); %图像幅度谱,加log便于显示
I29=real(120*I28./abs(I28)); %乘性空域平滑 [m,n]=size(I21); I24=I21; for i=2:m-1 for j=2:n-1
I24(i,j)=(1/4)*(double(I21(i,j-1))+double(I21(i,j+1))+double(I21(i-1,j))+double(I21(i+1,j))); end end
%乘性空域平滑频谱
Q=fft2(I24); %傅里叶变换 Q=fftshift(Q); %使图像对称
I25=log(1+abs(Q)); %图像幅度谱,加log便于显示 I26=real(120*I25./abs(I25)); figure;
subplot(1,3,1);imshow(I);title('原始图');
subplot(1,3,2);imshow(I1,[]);title('原始图幅度谱'); subplot(1,3,3);imshow(I2,[]);title('原始图相位谱'); figure;
subplot(3,3,1);imshow(I3);title('加椒盐噪声后图'); subplot(3,3,2);imshow(I4,[]);title('加椒盐噪后幅度谱图'); subplot(3,3,3);imshow(I5,[]);title('加椒盐噪后相位谱图'); subplot(3,3,7);imshow(I9);title('中值滤波椒盐噪后图(3x3)'); subplot(3,3,8);imshow(I10,[]);title('中值滤波椒盐噪后幅度谱图像'); subplot(3,3,9);imshow(I11,[]);title('中值滤波椒盐噪后相位谱'); subplot(3,3,4);imshow(uint8(I6));title('空域平滑滤波椒盐噪后图'); subplot(3,3,5);imshow(I7,[]);title('空域平滑滤波椒盐噪后幅度谱图像'); subplot(3,3,6);imshow(I8,[]);title('空域平滑滤波椒盐噪后相位谱图像'); figure;
subplot(3,3,1);imshow(I12);title('加高斯噪声后图');
subplot(3,3,2);imshow(I13,[]);title('加高斯噪声后幅度谱图'); subplot(3,3,3);imshow(I14,[]);title('加高斯噪声后相位谱图'); subplot(3,3,7);imshow(I18);title('中值滤波高斯噪声后图(3x3)'); subplot(3,3,8);imshow(I19,[]);title('中值滤波高斯噪声后幅度谱图像'); subplot(3,3,9);imshow(I20,[]);title('中值滤波高斯噪声后相位谱'); subplot(3,3,4);imshow(uint8(I15));title('空域平滑滤波高斯噪声后图'); subplot(3,3,5);imshow(I16,[]);title('空域平滑滤波高斯噪声后幅度谱图像'); subplot(3,3,6);imshow(I17,[]);title('空域平滑滤波高斯噪声后相位谱图像'); figure;
subplot(3,3,1);imshow(I21);title('加乘性噪声后图');
subplot(3,3,2);imshow(I22,[]);title('加乘性噪声后幅度谱图'); subplot(3,3,3);imshow(I23,[]);title('加乘性噪声后相位谱图'); subplot(3,3,7);imshow(I27);title('中值滤波乘性噪声后图(3x3)');
subplot(3,3,8);imshow(I28,[]);title('中值滤波乘性噪声后幅度谱图像'); subplot(3,3,9);imshow(I29,[]);title('中值滤波乘性噪声后相位谱'); subplot(3,3,4);imshow(uint8(I24));title('空域平滑滤波乘性噪声后图'); subplot(3,3,5);imshow(I25,[]);title('空域平滑滤波乘性噪声后幅度谱图像'); subplot(3,3,6);imshow(I26,[]);title('空域平滑滤波乘性噪声后相位谱图像');
三、 实验结果截图并做分析
实验步骤:
1、审题完毕,采用imnoise函数对图像添加不同分布、不同强度的随机噪声,比较通过空域平滑、中值滤波处理前后图像的频谱。
2、上次试验先了解一下fft2的含义,了解它是fft2函数,用于计算二维快速傅立叶变换,在其之后加上fftshift也是起到很好的作用;此次实验再是imnoise函数,含义是采用函数imnoise来使用噪声污染一幅图像,对图像进行椒盐噪声、高斯噪声和乘性噪声处理;
3、按照题目要求编写程序代码,对加噪声的图像进行噪声处理,并进行绘制图像,即幅度谱和频谱;
4、找一张图片,我是用的是Matlab中自带的图片“pout.tif”进行实验操作的,然后对图像按照题目要求进行变换,并求出相应的结果;
5、运行所编写的程序代码,并分析绘制的图像是否正确; 实验分析: