信号处理算法学习笔记一.中值滤波算法

中值滤波算法

中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。

中值滤波是用中值取代了原来要处理的数据,采样长度越长,滤波效果越好,但是也会造成原始数据中过多信息的丢失。需要根据实际应用确定。

按照项目要求定义函数类型即可。
输入参数说明

  1. int* Array为整数指针。传入存储数据的数组地址
  2. FilterLen 滤波器长度 ,传入数组元素个数
int Median_filter(int* Array, unsigned char FilterLen)
{
   unsigned char i,j;
   int temp;
   
   // 用冒泡法对数组进行排序 ,从小到大排序 
   for (j = 0; j < FilterLen - 1; j++)
   {
   	 for(i = 0; i < FilterLen - 1 - j; i++)
   	 {
   	   if(Array[i] > Array[i+1])
   	   {
   	 	  //数据位置互换 
   	 	  temp = Array[i];
   	 	  Array[i] = Array[i+1];
   	 	  Array[i+1] = temp;
	   }   	 	  	 	
	 }
   }
      
   //判断奇偶,返回中值
   if((FilterLen & 1) > 0)
   {
      //数组有奇数个元素,返回中间一个元素
      temp =  Array[(FilterLen + 1) / 2];    	
   } 
   else
   {
      //数组有偶数个元素,返回中间两个元素的平均值
      temp = ( Array[FilterLen / 2] + Array[FilterLen / 2 - 1] ) / 2;
   }
   return  temp; 
}

原文地址:https://www.cnblogs.com/ckk-blog/p/14034430.html