例子:利用函式medfilt2進行中值濾波
我們開始編寫的程式是這樣的:
i = imread('1.png');
figure, imshow(i)
j = imnoise(i,'salt & pepper',0.02); %生成噪影象
figure;imshow(j);
k = medfilt2(j,[3,3]); %中指濾波
figure;
imshowpair(k)
執行之後程式報錯了,那麼問題出在哪兒呢?
1.問題:中值濾波medfilt2,用法是b = medfilt2(a, [m n]),輸入影象a應是二維矩陣,程式中輸入影象h是由imread得到的i加上雜訊得到的,而imread讀到的影象i通常是3維rgb圖,是三維矩陣,因此才出現問題,顯示a應該為二維的。
2.解決辦法:先用rgb2gray(i)將h先將i影象轉換為灰度矩陣影象,再用medfilt2
3.具體程式
非線性空間濾波colfilt
工具箱提供了兩個函式來執行常見的非線性濾波 nlfilter和colfilt。前者直接執行二維操作,而colfilt按列的形式組織資料。儘管colfilt需要占用更多的記憶體,但執行起來要比nlfilter快得多。在大多數影象處理應用中,速度是最重要的因素,因此在實現非線性空間濾波時,更多的採用co...
線性濾波 非線性濾波區別
數字影象處理線性濾波 輸出影象fo x,y t fi x,y t是線性運算元,即 輸出影象上每個畫素點的值都是由輸入影象各畫素點值加權求和的結果。非線性濾波的運算元中包含了取絕對值 置零等非線性運算。線性濾波器的原始資料與濾波結果是一種算術運算,即用加減乘除等運算實現,如均值濾波器 模板內畫素灰度值...
非線性濾波 中值濾波 雙邊濾波
線性濾波是兩個訊號之和的響應等於它們響應的和,也就是每個畫素的輸出值是由其周邊的畫素加權得到的。所以當雜訊的分布不符合高斯分布或者某種線性分布時,而是散粒雜訊時,使用線性濾波只能使雜訊變得柔和或者模糊,不能真正的消除雜訊,這時候就需要非雜訊濾波來處理。取待處理畫素及其鄰域畫素的灰度值按大小的順序排列...