ordfilt2函数
在MATLAB图像处理工具箱中提供的二维顺序统计量滤波函数。它的滤波概念是中值滤波的推广,中值滤波是对于给定的n个数值{al ,a2,...,an},将它们按大小顺序排列,取中间的那个值作为滤波器的输出。而在ordfilt2函数中的二维顺序统计量滤波将n个非零数值按小到大排序后处于第k个位置的元素作为滤波器的输出。
ordfilt2函数语法格式为:
B=ordfilt2(A,order,domain)
B=ordfilt2(A,order,domain,S)
B=ordfilt2(...,padopt)
第一种格式的功能是:对图像A作顺序统计滤波。参数A为输入图像矩阵,order为序号,domain为滤波窗口。即对图像A中大小为domain矩阵大小内的非零像素值进行升序排序,取第order个值作为输出像素值。
第二种格式的功能是:对图像A作顺序统计滤波,前面3个参数与第一种格式相同。S是与domain大小相同的矩阵,它的每一个元素值对应domain中非零值位置的加性偏置输出。
第三种格式的功能是:对图像A作顺序统计滤波,前面省略号代表上面二种格式的一种参数形式。padopt是控制图像A矩阵边界填充的形式,padopt默认设置为'zeros',边界被填充为0像素值,设置为'symmetric'时,A对称地扩展边界。
例如:
B=ordfilt2(A,13,ones(5,5)),在模板内的像素值都为非零时,相当于模板为5×5的中值滤波
B=ordfilt2(A,1,ones(5,5)),在模板内的像素值都为非零时,相当于5×5的最小值滤波
B=ordfilt2(A,25,ones(5,5)),在模板内的像素值都为非零时,相当于5×5的最大值滤波
因为模板是5*5,那么邻域内的数据就按1-25由小到大排序,所以函数的第二个参数:13、1、25就分别对应的是中值、最小值、最大值,所以这种参数的设置也就是中值滤波、最小值滤波、最大值滤波。第二个参数的作用取决于模板的大小。