中位值平均滤波法
说明:采一组队列去掉最大值和最小值
优点:
融合了两种滤波的优点。对于偶然出现的脉冲性干扰,可消除有其引起的采样值偏差。
对周期干扰有良好的抑制作用,平滑度高,适于高频振荡的系统。
#define N 12
char filter(void) {
char i = 0, j = 0, temp = 0;
char value_buf;
int sum = 0;
for(i = 0; i < N; i++){
value_buf = get_ad();
delay();
}
for(j = 0; j < N - 1; j++) {
for(i = 0; i < N - j; i++) {
if(value_buf > value_buf) {
temp = value_buf;
value_buf = value_buf;
value_buf = temp;
}
}
}
for(i = 1; i < N - 1; i++) {
sum += value_buf;
}
return (char)(sum / (N - 2));
}
中位值平均滤波法(又称防脉冲干扰平均滤波法),融合了“中位值滤波法”+“算术平均滤波法”两种滤波法的优点。 对于偶然出现的脉冲性干扰,可消除由其所引起的采样值偏差。对周期干扰有良好的抑制作用 中值平均滤波就是在采集的N个数据中去掉一个最大值和一个最小值,然后对剩下的数据求平均值。所以这个算法不需要对数据排序,关键是计算最大值,最小值,求和,然后计算平均值。 中位值平均滤波适于高频振荡的系统。但是计算速度较慢,和算术平均滤波法一样,也比较浪费RAM。
typedef unsigned short filter_type;
filter_type MedianFilter(filter_type* data,int size)
{
filter_type max,min;
int sum;
if(size>2)
{
max = data;
min = max;
sum = 0;
for(int i=0;i<size;i++)
{
sum += data;
if(data>max)
{
max = data; //一个循环之后max就是最大的值
}
if(data<min)
{
min = data; //一个循环之后min就是最小的值
}
}
sum = sum-max-min; //去掉最大的值和最小的值
return sum/(size-2); //对N-2个数求平均值
}
return 0;
}
中值滤波的基本工作原理是基于排序统计理论,把数字图像或数字序列中某一点的值用该点的一个邻域中各点值的中值代替,从而使周围的像素值更接近真实值,达到消除孤立噪声点的目的 如何进行软件滤波? 中位值平均滤波法是一种常用的数字滤波算法,通过去除信号中的异常点和噪声,得到更加平稳和准确的测量结果。 数字滤波常用方法有几种 最基本的应用算法如高通滤波,低通滤波,维纳滤波,相位相关等等 中位值平均滤波法虽然能够有效地去除噪声和干扰 利用中位值平均滤波方法处理 原始数据 较小的窗口大小可能无法去除大量的噪声,而较大的窗口大小则可能会丢失部分信号信息。 可以在保留重要信息的同时去除极端值和噪声,提高信号的可靠性和稳定性。 信号处理过程中的平均方式有哪几种 滤波效果也会受到所选取的采样窗口大小的影响。 通过中位值平均滤波法,我们可以得到比简单平均滤波更好的滤波效果。 中位值滤波技术,其算法有哪些 中位值平均滤波法适用于一些信号较为平稳但又容易受到噪声干扰的实时采集场合
页:
[1]
2