matlab影象預處理中值濾波y與雙邊濾波
阿新 • • 發佈:2018-12-12
中值濾波
前面所說的高斯平滑和均值濾波也是預處理的一種,不過他們用犧牲影象細節為代價來換取平滑影象,他們對處理小的噪聲點比較好,但是處理較大的噪聲點比較無力。 平滑線性濾波器的工作原理可以比喻為用水沖洗桌面上的汙點,沖洗的結果是汙點並沒有消失,只是被淡化,如果汙點較大,較密集,則沖洗的結果是整個桌面都被汙點所影響。而中值濾波的做法就是不去 採用沖洗沖淡的方式,直接將汙點剔除。 在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);