ordfilt2函数举例

  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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值