【转载】原文出处:http://blog.csdn.net/fengbingchun/article/details/5951629
ordfilt2函数
在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,an},将它们按大小顺序排列,将处于第k个位置的元素作为图像滤波输出,即序号为k的二维统计滤波。ordfilt2函数语法格式为:
Y=ordfilt2(X,order,domain)
Y=ordfilt2(X,order,domain,S)
其功能是:对图像X作顺序统计滤波,order为滤波器输出的顺序值,domain为滤波窗口。S是与domain大小相同的矩阵,它是对应domain中非零值位置的输出偏置,这在图形形态学中是很有用的。例如:
Y=ordfilt2(X,5,ones(3,3)),相当于3×3的中值滤波
Y=ordfilt2(X,1,ones(3,3)),相当于3×3的最小值滤波
Y=ordfilt2(X,9,ones(3,3)),相当于3×3的最大值滤波
Y=ordfilt2(X,1,[0 1 0;1 0 1;0 1 0]),输出的是每个像素的东、西、南、北四个方向相邻像素灰度的最小值。
个人备注:
这里,因为模板是3*3,那么邻域内的数据就按1-9由小到大排序,所以函数的第二个参数:5、1、9就分别对应的是中值、最小值、最大值,所以这种参数的设置也就是中值滤波、最小值滤波、最大值滤波。第二个参数的作用取决于模板的大小。