工具箱提供了兩個函式來執行常見的非線性濾波:nlfilter和colfilt。前者直接執行二維操作,而colfilt按列的形式組織資料。儘管colfilt需要占用更多的記憶體,但執行起來要比nlfilter快得多。在大多數影象處理應用中,速度是最重要的因素,因此在實現非線性空間濾波時,更多的採用colfilt而不是nolfilt。
給定一幅大小為m*n的輸入影象f,鄰域大小為m*n,函式colfilt生成乙個最大尺寸為mn*mn的矩陣,成為a(a總有mn行,但列數可變,具體取決於輸入尺寸)。
函式colfilt的語法為
g = colfilt(f, [m,n], 'sliding', fun)
其中,m和n表示濾波區域的維數,『sliding』,表明處理過程是m*n區域在輸入影象f中逐畫素滑動,fun是乙個函式控制代碼。
基於a的組織方式,函式必須分別對a的每一列進行操作,並返回乙個行向量v,v的第k個元素即是對a中的第k列進行fun操作後的結果。因為a中最多有mn列,所以a的最大維數為1*mn。
在使用colfilt時,濾波前必須顯式地填充影象。為此,使用二維函式padarray,其語法為
fp = padarray(f, [r c], method, direction)
其中f為輸入影象,fp為填充後的影象,[r c]表示填充的行數和列數,method和direction為影象尺寸擴充套件方法和填充方向。
空間濾波 非線性空間濾波例項解析
例子 利用函式medfilt2進行中值濾波 我們開始編寫的程式是這樣的 i imread 1.png figure,imshow i j imnoise i,salt pepper 0.02 生成噪影象 figure imshow j k medfilt2 j,3,3 中指濾波 figure ims...
線性濾波 非線性濾波區別
數字影象處理線性濾波 輸出影象fo x,y t fi x,y t是線性運算元,即 輸出影象上每個畫素點的值都是由輸入影象各畫素點值加權求和的結果。非線性濾波的運算元中包含了取絕對值 置零等非線性運算。線性濾波器的原始資料與濾波結果是一種算術運算,即用加減乘除等運算實現,如均值濾波器 模板內畫素灰度值...
什麼是線性濾波 非線性濾波
數字影象處理線性濾波 輸出影象fo x,y t fi x,y t是線性運算元,即 輸出影象上每個畫素點的值都是由輸入影象各畫素點值加權求和的結果。非線性濾波的運算元中包含了取絕對值 置零等非線性運算。線性濾波器的原始資料與濾波結果是一種算術運算,即用加減乘除等運算實現,如均值濾波器 模板內畫素灰度值...