ordfilt2函数举例

来源:互联网 发布:云计算入门书籍 编辑:程序博客网 时间:2024/05/22 09:00

  B  = ordfilt2(A,order,domain)

     这种形式中,A为被滤波的矩阵,order表示选取由domain确定的邻域中第order个元素替换A中的元素,存入B中。示例如下:

Y=ordfilt2(X,5,ones(3, 3)) ;  %相当于3*3窗口的中值滤波,

或者

Y=ordfilt2(X,median(1:3*3),ones(3, 3)) ;  %相当于3*3窗口的中值滤波,

Y=ordfilt2(X,1,ones(3, 3));   %相当于3*3窗口的最小值滤波

Y=ordfilt2(X,9,ones(3, 3));   %相当于3*3窗口的最大值滤波

需要注意的是,domain矩阵中可能会有某些位置为零(不为零的位置为1),这种为零的位置不算在顺序统计的领域之中。

例子:

>> f=[1 2 3 ;4 5 6;7 8 9]

f =

     1     2     3
     4     5     6
     7     8     9

>> g=ordfilt2(f,median(1:9),ones(3,3))

g =

     0     2     0
     2     5     3
     0     5     0

>> g=ordfilt2(f,1,ones(3,3))

g =

     0     0     0
     0     1     0
     0     0     0

>> g=ordfilt2(f,9,ones(3,3))

g =

     5     6     6
     8     9     9
     8     9     9

    通过上面的例子可以看出滤波结果。具体的滤波过程,根据个人的理解是这样的:

1. 先进性原矩阵的扩充,即:

     0     0     0     0     0
     0     1     2     3     0
     0     4     5     6     0
     0     7     8     9     0
     0     0     0     0     0

     在使用g=ordfilt2(f,1,ones(3,3))滤波时,ones(3, 3)生成的矩阵的中心和上面扩充后的矩阵中红色1位置重合,此时ones(3, 3)生成的矩阵覆盖的范围为:

     0     0     0     
     0     1     2     
     0     4     5    

这个矩阵经过排序,结果为0 0 0 0 0 1 2 4 5,最小值为0,此时,用生成的0来代替扩充矩阵红色1位置,以此类推,生成的最终结果为:

     0     0     0
     0     1     0
     0     0     0

其他的滤波过程也是这样进行。

0 0
原创粉丝点击