1. 程式人生 > >matlab影象預處理中值濾波y與雙邊濾波

matlab影象預處理中值濾波y與雙邊濾波

中值濾波

前面所說的高斯平滑和均值濾波也是預處理的一種,不過他們用犧牲影象細節為代價來換取平滑影象,他們對處理小的噪聲點比較好,但是處理較大的噪聲點比較無力。 平滑線性濾波器的工作原理可以比喻為用水沖洗桌面上的汙點,沖洗的結果是汙點並沒有消失,只是被淡化,如果汙點較大,較密集,則沖洗的結果是整個桌面都被汙點所影響。而中值濾波的做法就是不去 採用沖洗沖淡的方式,直接將汙點剔除。 在Matlab中可以使用函式medfilt2()實現中值濾波,但是這個函式僅僅智慧用於處理灰度影象。

I2=medfilt2(I1,[m,n])

其中I1是待處理影象的畫素矩陣,引數m,n給出了中值濾波處理模板的大小,預設為3*3。 下面的程式碼是同時對比了均值濾波,高斯濾波和中值濾波三種對於椒鹽噪聲的去除效果。

i=rgb2gray(imread('songshu.jpg'));
inoise=imnoise(i,'salt & pepper');
w1=[1 2 1;2 4 2;1 2 1]/16;
output1=imfilter(inoise,w1,'conv','replicate');
w2=[1 1 1;1 1 1;1 1 1]/9;
output2=imfilter(inoise,w2,'conv','replicate');
output3=medfilt2(inoise,[3,3]);
%高斯濾波
subplot(131),imshow(output1);
%均值濾波
subplot(132),imshow(output2);
%中值濾波
subplot(133),imshow(output3);

雙邊濾波