matlab对图片加入噪声.docx
《matlab对图片加入噪声.docx》由会员分享,可在线阅读,更多相关《matlab对图片加入噪声.docx(11页珍藏版)》请在冰豆网上搜索。
matlab对图片加入噪声
图片去噪:
对一幅图像加入不同的噪声(随机点噪声、椒盐噪声等),选取不同的方法去噪,比如说邻域平均、中值滤波、图像迭加等,比较对于不同的噪声,不同的方法哪种更好。
A.加入随机点噪声进行邻域平均、中值滤波、图像迭加
邻域平均
>>I=imread('D:
\gem.bmp');
>>snoise=0.1*randn(size(I));
>>J1=imadd(I,im2uint8(snoise));%受随机噪声干扰
>>M4=[010;101;010];
>>M4=M4/4;%4邻域平均滤波
>>I_filter1=filter2(M4,J1);
>>M8=[111;101;111];%8邻域平均滤波
>>M8=M8/8;
>>I_filter2=filter2(M8,J1);
>>subplot(2,2,1),imshow(I);title('原始图像Gem');
>>subplot(2,2,2),imshow(J1);title('加随机噪声后图像');
>>subplot(2,2,3),imshow(I_filter1,map);title('4邻域平均滤波');
>>subplot(2,2,4),imshow(I_filter2,map);title('8邻域平均滤波');
均值滤波
>>G=imread('D:
\gem.bmp');
>>I=rgb2gray(G);
>>snoise=0.1*randn(size(I));
>>A=imadd(I,im2uint8(snoise));
>>B1=filter2(fspecial('average',3),A)/255;
>>B2=filter2(fspecial('average',5),A)/255;
>>B3=filter2(fspecial('average',10),A)/255;
>>subplot(2,2,1),imshow(A);title('加随机噪声后图像');
>>subplot(2,2,2),imshow(B1);title('平均3后图像');
>>subplot(2,2,3),imshow(B2);title('平均5后图像');
>>subplot(2,2,4),imshow(B3);title('平均10后图像');
原图
B.加入椒盐噪声进行邻域平均、中值滤波、图像迭加
邻域平均
>>I=imread('moon.tif');
>>J=imnoise(I,'salt&pepper',0.02);
>>subplot(1,2,1),imshow(I);title('原图');
>>subplot(1,2,2),imshow(J);title('加噪');
>>K1=filter2(fspecial('average',7),J);
>>K2=filter2(fspecial('average',9),J);
>>figure,subplot(1,2,1),imshow(uint8(K1));title('3x3');
>>subplot(1,2,2),imshow(uint8(K1));title('5x5')
>>subplot(1,2,1),imshow(uint8(K1));title('7x7');
>>subplot(1,2,2),imshow(uint8(K1));title('9x9')
中值滤波
>>I=imread('moon.tif');
>>J=imnoise(I,'salt&pepper',0.02);
>>K1=medfilt2(J);
>>K2=medfilt2(J,[55]);
>>K3=medfilt2(J,[77]);
>>K4=medfilt2(J,[99]);
>>subplot(1,2,1),imshow(K1);title('3x3');
>>subplot(1,2,2),imshow(K2);title('5x5');
>>subplot(1,2,1),imshow(K3);title('7x7');
>>subplot(1,2,2),imshow(K4);title('9x9');
C.加入高斯噪声进行邻域平均、中值滤波、图像迭加
邻域平均
>>G=imread('D:
\gem.bmp');
>>I=rgb2gray(G);
>>J1=imnoise(I,'gaussian',0,0.02);%受高斯噪声干扰
>>M4=[010;101;010];
>>M4=M4/4;%4邻域平均滤波
>>I_filter1=filter2(M4,J1);
>>M8=[111;101;111];%8邻域平均滤波
>>M8=M8/8;
>>I_filter2=filter2(M8,J1);
>>subplot(2,2,1),imshow(I);title('原始图像Gem');
>>subplot(2,2,2),imshow(J1);title('加高斯噪声后图像');
>>subplot(2,2,3),imshow(I_filter1,map);title('4邻域平均滤波');
>>subplot(2,2,4),imshow(I_filter2,map);title('8邻域平均滤波');
>>subplot(2,2,3),imshow(B2);title('平均5后图像');
>>subplot(2,2,4),imshow(B3);title('平均7后图像');
均值滤波
>>I=imread('D:
\gem.bmp');
>>A=imnoise(I,'gaussian',0.01);
>>B1=filter2(fspecial('average',3),A)/255;
>>B2=filter2(fspecial('average',5),A)/255;
>>B3=filter2(fspecial('average',7),A)/255;
>>subplot(2,2,1),imshow(A);title('加高斯噪声后图像');
>>subplot(2,2,2),imshow(B1);title('平均3后图像');
>>subplot(2,2,3),imshow(B2);title('平均5后图像');
>>subplot(2,2,4),imshow(B3);title('平均7后图像');
D.图像迭加滤波
>>I=imread('pout.tif');
>>[mn]=size(I);
>>J1(m,n)=0;J2(m,n)=0;J3(m,n)=0;
>>fori=1:
10
temp=imnoise(I,'gaussian',0,0.01);
J1=J1+double(temp)/10;
end
>>fori=1:
20
temp=imnoise(I,'gaussian',0,0.01);
J2=J2+double(temp)/20;
end
>>fori=1:
50
temp=imnoise(I,'gaussian',0,0.01);
J3=J3+double(temp)/50;
end
>>figure;subplot(2,2,1),imshow(I),title('原图象');
>>;subplot(2,2,2),imshow(mat2gray(J1)),title('10次迭加滤波');
>>subplot(2,2,3),imshow(mat2gray(J2)),title('20次迭加滤波');
>>subplot(2,2,4),imshow(mat2gray(J3)),title('50次迭加滤波')