在MATLAB圖像處理工具箱中提供了二維統計順序濾波函數ordfilt2函數。二維統計順序濾波是中值濾波的推廣,對於給定的n個數值{al ,a2,...,an},將它們按大小順序排列,將處於第k個位置的元素作為圖像濾波輸出,即序號為k的二維統計濾波。ordfilt2函數語法格式為:
句法
B = ordfilt2(A,order,domain)
%將A中的每個元素替換為由域中非零元素指定的有序鄰居集合中的orderth元素
B = ordfilt2(A,order,domain,S)
%過濾器A,其中ordfilt2使用對應於域的非零值的S值作為附加偏移量。您可以使用此語法來實現灰度形態學操作,包括灰度擴張和侵蝕。
B = ordfilt2(___,padopt)
%過濾器A,其中padopt指定ordfilt2如何填充矩陣邊界。
其中,(1)A是輸入矩陣,指定為2-D,實數,非稀疏,數字或邏輯數組。
(2)order是用於替換目標像素的元素,指定為類double的實數標量整數。
(3)domain是鄰域,指定為數字或邏輯矩陣,包含1和0。域相當於用於二值圖像操作的結構元素。 1值元素定義了過濾操作的鄰域。下表給出了一些常 見過濾器的例子:
其功能是:對圖像X作順序統計濾波,order為濾波器輸出的順序值,domain為濾波窗口。S是與domain大小相同的矩陣,它是對應domain中非零值位置 的輸出偏置,這在圖形形態學中是很有用的。例如:
B=ordfilt2(X,5,ones(3,3)),相當於3×3的中值濾波
B=ordfilt2(X,1,ones(3,3)),相當於3×3的最小值濾波
B=ordfilt2(X,9,ones(3,3)),相當於3×3的最大值濾波
B=ordfilt2(X,1,[0 1 0;1 0 1;0 1 0]),輸出的是每個像素的東、西、南、北四個方向相鄰像素灰度的最小值。
(4)S是附加偏移量,指定為與域大小相同的矩陣。
(5)padopt是填充選項,指定為以下任一值:
Option | Description |
'zeros' | Pad array boundaries with 0's (用0填充數組邊界) |
'symmetric' | Pad array with mirror refiections of itself (對稱填充) |
Examples
%Read image into workspace and display it.
A = imread('snowflakes.png'); figure imshow(A)
%Filter the image and display the result. B = ordfilt2(A,25,true(5)); figure imshow(B)