MATLAB学习(1)——ordfilt2

       在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)

原文地址:https://www.cnblogs.com/yehjiao/p/9227502.html