Matlab - 中值滤波(转)

 

  1. 中值滤波的原理:对于一串连续输入的信号(量化后是一组数据)。如下图所示,是输入的原信号。中值滤波的原理为,重新计算每一个x的输出值(y),新的输出值。相当于 y = new(x),new的操作是,从在以x为中心,长度为2k的原信号中(区间为[x-k+1,x+k]),提取出这段区间内中间的那个值,作为 y=new(x)的结果。

     

  2.  举例来说,输入:Y[1-10]:1,2,3,4,5,6,7,8,9,10. 取区间2k = 4,所以k=2;

    执行中值滤波 K=中值滤波(Y)

    由x-k+1>=1,所以当k=2时,x>=2

    滤波时:

    K[1]=Y[1]

    K[2]=(Y[1]、Y[2]、Y[3]、Y[4])的中间值,即为2或3

  3.  matlab的中值滤波实现方式:

    调用函数:A = medfilt1(B,n)

    B为输入信号,A为滤波后的信号,即结果。

    n为控制滤波区间的参数。具体定义如下:

    1、若n为基数,区间为[k-(n-1)/2,k+(n-1)/2],

    2、若n为偶数,区间为[k-n/2,k+n/2+1],中值滤波表示用这个区间内的中间值代替这一点的值。

  4.  对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。

     

     
     
posted @ 2017-11-16 19:02  Super_Jian  阅读(884)  评论(0)    收藏  举报