数据格式定义解析
原厂建议使用简单滤波,【中位值平均滤波】
采一组队列去掉最大值和最小值再平均取值,优点是融合了两种滤波的优点。对于偶然出现的脉冲性干扰,可消除有其引起的采样值偏差。对周期干扰有良好的抑制作用,平滑度高,适于高频振荡的系统。
#define NUM 10
uint16_t median_filter(void)
{
uint8_t i = 0, j = 0;
uint16_t buf[NUM], temp = 0;
uint16_t sum = 0;
for(i = 0; i < NUM; i++){
buf[i] = get_Vulaue();
delay();
}
for(j = 0; j < NUM - 1; j++) {
for(i = 0; i < NUM - j; i++) {
if(buf[i] > buf[i + 1]) {
temp = buf[i];
buf[i] = buf[i + 1];
buf[i + 1] = temp;
}
}
}
for(i = 1; i < NUM - 1; i++) {
sum += buf[i];
}
return (uint16_t)(sum / (NUM - 2));
}
均值滤波及中值滤波的区别
均值滤波和和中值滤波都可以起到平滑图像,虑去噪声的功能。
均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。
中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。
参考:https://blog.csdn.net/cjsh_123456/article/details/79261271