在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]) ,输出的是每个像素的东、西、南、北四个方向相邻像素灰度的最小值。