中位值滤波_中位值滤波算法 - CSDN
精华内容
参与话题
  • 中位值滤波

    千次阅读 2019-06-10 20:48:00
    中位值滤波法能有效克服偶然因素引起的波动或采样不稳定引起的误码等脉冲干扰; 对温度、液位等缓慢变化的被测参数用此法能收到良好的滤波效果 ,但是对于流量压力等快速变化的参数一般不宜采用中位值滤波法; 基本...

            中位值滤波法能有效克服偶然因素引起的波动或采样不稳定引起的误码等脉冲干扰;
            对温度、液位等缓慢变化的被测参数用此法能收到良好的滤波效果 ,但是对于流量压力等快速变化的参数一般不宜采用中位值滤波法;
            基本方法:对某一被测参数连续采样 n次(一般 n 取奇数) ,然后再把采样值按大小排列 ,取中间值为本次采样值。


    下面是中位值滤波程序:

    #include <stdio.h>
    
    // 定义滤波数据类型
    typedef	int filter_type;
    // 函数声明
    filter_type filter(filter_type value_buf[], int num);
    // 中位值滤波函数
    filter_type filter(filter_type value_buf[], int num)
    {
    	int i,j;
    
    	// 冒泡排序
    	for (j=0; j<num-1; j++)
    	{
    		for (i=0; i<num-1-j; i++)
    		{
    			// 异或交换数
    			if (value_buf[i] > value_buf[i+1])
    			{
    				value_buf[i]   ^= value_buf[i+1];
    				value_buf[i+1] ^= value_buf[i];
    				value_buf[i]   ^= value_buf[i+1];
    			}
    		}
    	}
    	return value_buf[(num-1)/2];
    }
    //打印测试
    void main()
    {
    	filter_type mid;
    	filter_type a[5]= {55, 44, 88, 99, 11};
    
    	mid = filter(a, sizeof(a)/sizeof(filter_type));
    	printf("%d", mid);
    }
    

    运行结果: 

     

    展开全文
  • 中位值平均滤波

    千次阅读 2018-09-02 01:50:01
    中值平均滤波就是在采集的N个数据去掉一个最大和一个最小值,然后对剩下的数据求平均。所以这个算法**不需要对数据排序**,关键是计算最大,最小值,和。算法实现如下: unsigned short AD_Filter(un

    最近用stm32单片机检测外部8路电压。STM32内部包含12位的ADC,一次检测一路AD最快只要1us。为了防止偶尔外对AD采样的干扰,单片机对采集数据进行中值平均滤波。

    中值平均滤波就是在采集的N个数据中去掉一个最大值和一个最小值,然后对剩下的数据求平均值。所以这个算法不需要对数据排序,关键是计算最大值,最小值,求和,然后计算平均值。算法实现如下:

    /**
    *  中位值平均滤波
    * @param pData:没有滤波的数据 
    * @param nSize:数据大小 
    * @return:滤波数值
    */
    unsigned short MedianFilter(unsigned short* pData,int nSize)
    {
        unsigned short max,min;
        int sum;
        if(nSize>2)
        {
            max = pData[0];
            min = max;
            sum = 0;
            for(int i=0;i<nSize;i++)
            {
                sum += pData[i];            
                if(pData[i]>max)
                {
                    max = pData[i];   //一个循环之后max就是最大的值
                }
    
                if(pData[i]<min)
                {
                    min = pData[i];   //一个循环之后min就是最小的值
                }
            }
    
            sum = sum-max-min;       //去掉最大的值和最小的值
            return sum/(nSize-2); //对N-2个数求平均值          
        }
    
        return 0;
    }
    展开全文
  •  相当于“中位值滤波法”+“算术平均滤波法”  连续采样N个数据,去掉一个最大值和一个最小值  然后计算N-2个数据的算术平均值  N值的选取:3~14 B、优点:  融合了两种滤波法的优点  对于偶然出现的脉冲性...
  • 中位值滤波算法的实现方法是采集N个周期的数据,去掉N个周期数据中的最大值和最小值,取剩下的数据的平均值。中位值滤波算法特别适用于会偶然出现异常值的系统。中位值滤波算法应用比较广泛,比如用于一些比赛的...

    1、算法介绍

            中位值滤波算法的实现方法是采集N个周期的数据,去掉N个周期数据中的最大值和最小值,取剩下的数据的平均值。中位值滤波算法特别适用于会偶然出现异常值的系统。中位值滤波算法应用比较广泛,比如用于一些比赛的评分,经常是去掉一个最高分去掉一个最低分,将其他评分取平均值作为选手的最终得分。

    优点:相比于平均值滤波算法,中位值滤波算法能够有效滤除偶然的脉冲干扰。

    缺点:与平均值滤波算法相同,中位值滤波算法也存在反应速度慢、滞后的问题。

    2、实现代码

            下面的代码是中位值滤波的示例代码。

    float data[10];
    
    float middleFilter(float in_data)
    {
    	float sum = 0;
    	float temp[10];
    	float change;
    	int i,j;
    	//记录数据
    	for(i=0; i<9; i++)
    	{
    		data[i]=data[i+1];
    	}
    	data[9] = in_data;
    	//复制数据
    	for(i=0; i<10; i++)
    		temp[i] = data[i];
    	//冒泡法排序
    	for(i=1; i<10; i++)
    		for(j=0; j<10-i; j++)
    		{
    			if(temp[i] > temp[i+1])
    			{
    				change = temp[i];
    				temp[i] = temp[i+1];
    				temp[i+1] = change;
    			}
    		}
    	//求和
    	for(i=1; i<9; i++)
    		sum = sum + temp[i];
    	//返回平均值
    	return(sum/8);
    
    }
    

            在上面的代码中,分为几个步骤:

    步骤1:读取新数据,并更新数据数组;

    步骤2:复制数据到临时数组,以便保持原始数据的顺序不变;

    步骤3:对临时数组进行排序;

    步骤4:计算中位平均值。

    3、示例

            下面我们通过一个示例来体会中位值滤波的作用,滤波对象为车速信号,滤波效果如下图所示。图中,横轴为时间,单位:秒,纵轴为速度,单位km/h。其中,蓝色为滤波前的数据,红色为滤波后的数据。有图中可以看出,原始数据存在两个异常值,可能是采集过程的数据干扰或数据处理时的异常等原因造成的。采用中位值滤波算法可以有效滤波这种异常值造成的影响。

    相对于中位值滤波算法,平均值滤波算法则无法解决这个问题,如下图所示,为采用平均值滤波算法对相同的原始数据进行处理的效果,可以看到平均值滤波无法滤波异常值,而且异常值影响的时间比较长。

     

    展开全文
  • 简单的C语言滤波之中位值滤波

    千次阅读 2018-10-25 18:10:13
    中位值滤波法 A、方法:  连续采样N次(N取奇数)  把N次采样值按大小排列  取中间值为本次有效值 B、优点:  能有效克服因偶然因素引起的波动干扰  对温度、液位的变化缓慢的被测参数有良好的滤波效果 ...

    /*************************************************
    中位值滤波法

    A、方法:

         连续采样N次(N取奇数)

        把N次采样值按大小排列

        取中间值为本次有效值

    B、优点:

        能有效克服因偶然因素引起的波动干扰

        对温度、液位的变化缓慢的被测参数有良好的滤波效果

    C、缺点:

        对流量、速度等快速变化的参数不宜
    *************************************************/

    #include<stdio.h>


    /*   N值可根据实际情况调整    */
    #define N   5

    int filter_func()
    {

        int value_buf[N] = {1,9,3,2,1};
        int count,i,j,temp;
        
        /*    排序采用冒泡法    */
        for (j=0;j<=N;j++){
               for (i=0;i<=N-j;i++){
                   if (value_buf[i] > value_buf[i+1]){
                    temp = value_buf[i];
                    value_buf[i] = value_buf[i+1];
                    value_buf[i+1] = temp;
                }
            }
        }
        
        printf("---%d---\n",value_buf[(N-1)/2]);
        return value_buf[(N-1)/2];


    int main(){
        
        filter_func();
        
        return 0;
    }

    展开全文
  • 各种滤波算法的比较

    万次阅读 2016-06-20 15:43:49
    数字滤波(digital filtering):数字滤波(digital filtering):用数字设备,通过一定的算法,对信号进行处理,将某个频段的信号进行滤除,得到新的信号的这一过程叫做数字滤波。数字滤波器可以分为两大部分:即经典...
  • 10种常用ADC滤波算法

    万次阅读 2016-03-09 11:02:37
    1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差,则本次值有效 ...2、中位值滤波法 A、方法: 连续采
  • 值滤波是用每个像素和它周围像素计算出来的平均值替换图像每个像素。采样Kernel数 据通常是3X3的矩阵,如下表示: 从左到右从上到下计算图像的每个像素,最终得到处理后的图像。均值滤波可以加上两个 参数...
  • 十种滤波算法的Python实现

    万次阅读 多人点赞 2018-08-06 17:30:59
    2、中位值滤波法 3、算术平均滤波法 4、递推平均滤波法(又称滑动平均滤波法) 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) 6、限幅平均滤波法 7、一阶滞后滤波法 8、加权递推平均滤波法 9、消抖滤波法 10、...
  • 中值滤波与椒盐噪声

    万次阅读 2014-08-06 18:54:42
    盐噪声也称为脉冲噪声,是图像经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈...
  • 各种滤波算法介绍及比较

    千次阅读 2018-04-03 11:21:32
    1、克服大脉冲干扰的数字滤波法(一). 限幅滤波法; (二).中值滤波法2、抑制小幅度高频噪声的平均滤波法(一).算数平均;(二).滑动平均;(三).加权滑动平均;(四)一阶滞后滤波法3、复合滤波法下面介绍...
  • 几种常用的滤波方法

    千次阅读 2017-08-08 10:44:17
    几种软件滤波算法的原理和比较 第1种方法:限幅滤波法(又称程序判断滤波法) A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果...第2种方法:中位值滤波法 A方
  • 十一种通用滤波算法及优缺点

    千次阅读 2017-02-06 20:34:31
    一.十一种通用滤波算法(转) 1、限幅滤波法(又称程序判断滤波法) ... 如果本次与上次之差>A,则本次无效,放弃本次,用上次代替本次 B、优点:  能有效克服因偶然因素引起的脉冲干扰 C、缺
  • 几种滤波的简单总结

    千次阅读 2018-01-30 09:51:56
    根据网上的相关材料,简单的对几种滤波方法进行总结如下。 1. 限幅滤波(程序判断滤波法) ...如果本次与上次之差大于A,则本次无效,放弃本次,用上次代替本次。 B.有点:能有效克服
  • 而基于接收信号强度指示(RSSI)应用的无线传感器网络,需要对网络接收到同一个节点的多个RSSI进行滤波。为了对RSSI滤波有一个全面的认识,介绍了几种滤波方法,详细综述了每种滤波方法的原理和特点,最后指出应...
  • 常用数字滤波算法

    万次阅读 2017-05-25 16:19:49
    常用数字滤波算法 第1种方法:限幅滤波法(又称程序判断滤波法)  A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果本次...第2种方法:中位值滤波法  A方法: 连
  • 几种时域滤波的比较

    千次阅读 2013-05-02 18:34:37
    1 平均值滤波  1)算术平均滤波  方法:连续取N个采样值进行算术平均运算。N值较大时,信号平滑度较高,但灵敏度较低;N值较小时,信号平滑度较低,但灵敏度较高。N值的选取一般规则为:流量N取12;...
  • 常用的滤波算法与经验分享

    千次阅读 2018-07-06 19:39:28
    软件滤波算法1,中位值滤波法原理:连续采样N次(N为奇数),对N次采样值进行大小排序,去中间值为本次采样值。优点:能有效克服因偶然因素引起的波动干扰;缺点:对温度、液位的变化缓慢的被测参数有良好...
  • 【Python学习笔记】25:scipy中值滤波

    万次阅读 2019-11-30 11:14:45
    中值滤波技术能有效抑制噪声,通过把数字图像中一点的用该点周围的各点中位数来代替,让这些接近,以消除原图像中的噪声。 模拟中值滤波 >>> import random >>> import numpy as np >&...
  • 转载自这里 目录 均值滤波 中值滤波 最大最小值滤波 scipy模拟中值滤波 ...值滤波是用每个像素和它周围像素计算出来的平均值替换图像每个像素。采样Kernel数 据通常是3X3的矩阵,如下表示: 从...
1 2 3 4 5 ... 20
收藏数 16,253
精华内容 6,501
关键字:

中位值滤波