三、中值滤波
基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。
中值滤波对同时含有高斯和椒盐噪声的图像的处理: I=imread('Miss.bmp'); subplot(2,2,1);
imshow(I);title('原图');
k1=imnoise(I,'salt & pepper',0.01); K=imnoise(k1,'gaussian',0.01); subplot(2,2,2) imshow(K);
title('加入高斯和椒盐噪声以后'); [a,b]=size(K); for i=1:a
for j=1:b
if(i==1|i==a|j==1|j==b) G(i,j)=K(i,j); else
J=[K(i-1,j-1),K(i-1,j),K(i-1,j+1),K(i,j-1),K(i,j),K(i,j+1),K(i+1,j-1),K(i+1,j),K(i+1,j+1)];
J=sort(J); G3(i,j)=J(5); end end end
subplot(2,2,3);
第 5 页 共 12 页
imshow(G3);
title('3*3中值滤波以后'); for i=1:a
for j=1:b
if(i==1|i==2|i==a-1|i==a|j==1|j==2|j==b-1|j==b) G5(i,j)=K(i,j); else
J=[K(i-2,j-2),K(i-2,j-1),K(i-2,j),K(i-2,j+1),K(i-2,j+2),K(i-1,j-2),K(i-1,j-1),K(i-1,j),K(i-1,j+1),K(i-1,j+2),K(i,j-2),K(i,j-1),K(i,j),K(i,j+1),K(i,j+2),K(i+1,j-2),K(i+1,j-1),K(i+1,j),K(i+1,j+1),K(i+1,j+2),K(i+2,j-2),K(i+2,j-1),K(i+2,j),K(i+2,j+1),K(i+2,j+2)]; J=sort(J);
G5(i,j)=J(13); end end end
subplot(2,2,4) imshow(G5);
title('5*5中值滤波以后');
第 6 页 共 12 页
运行效果图:
原图加入高斯和椒盐噪声以后3*3中值滤波以后5*5中值滤波以后
中值滤波对同时含高斯和椒盐噪声的图像滤波效果分析:
通过上图我们可得出结论,即中值滤波对于去除椒盐噪声效果最好,而对高斯噪声不是很理想。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。对点、线和尖顶较多的图像不宜采用中值滤波,因为一些细节点可能被当成噪声点。
第 7 页 共 12 页
四、中值和均值综合滤波
根据以上对图像的处理可以发现,均值滤波和中值滤波对两种噪声的去除各有侧重,单独使用时对同时含有高斯和椒盐噪声的图像的处理并不理想。因此可以对污染图像先进行一次中值滤波,对椒盐噪声进行一次处理,然后再用均值滤波对高斯噪声进行处理。
均值和中值滤波对污染图像进行处理: I=imread('Miss.bmp'); subplot(2,2,1);
imshow(I);title('原图');
k1=imnoise(I,'salt & pepper',0.01); K=imnoise(k1,'gaussian',0.01); subplot(2,2,2)
imshow(K);
title('加入高斯和椒盐噪声以后'); [a,b]=size(K); for i=1:a
for j=1:b
if(i==1|i==a|j==1|j==b) G(i,j)=K(i,j); else
J=[K(i-1,j-1),K(i-1,j),K(i-1,j+1),K(i,j-1),K(i,j),K(i,j+1),K(i+1,j-1),K(i+1,j),K(i+1,j+1)];
J=sort(J); L(i,j)=J(5); end end end
subplot(2,2,3); imshow(L);
title('3*3?中值滤波以后'); [x,y]=size(L)
I2=zeros(x+2,y+2);
第 8 页 共 12 页
I3=zeros(x,y); for n=1:x
for m=1:y
I2(n+1,m+1)=L(n,m); end; end;
for n=2:x for m=2:y
I3(n-1,m-1)=[I2(n-1,m-1)+I2(n-1,m)+I2(n-1,m+1)+I2(n,m-1)+I2(n,m)+I2(n,m+1)+I2(n+1,m-1)+I2(n+1,m)+I2(n+1,m+1)]/9; end;
end;
subplot(2,2,4); imshow(uint8(I3)); title('3*3均值滤波以后');
运行效果图:
原图加入高斯和椒盐噪声以后3*3中值滤波以后3*3均值滤波以后
第 9 页 共 12 页