关于中值滤波算法的几点注意事项:
1.根据相关文献报道[1],滤波窗口宽度设置在采样率的80~90%[2],是为合理宽度;
2.中值滤波之后的基线数据(滤波过程中,笔者初始化窗口值为0),应左移半窗口宽度后,与原数据对应相减,所得数据为去基线漂移后的数据;
3.对于原数据,在进行中值滤波前,需要进行尾部延拓半窗口宽度(与中值滤波延时对应),笔者将延拓部分取值0;
4.对应相减时,取基线数据从半窗口宽度处始,至结尾止,并按此顺序与原数据(延拓前)对应相减。
实验结果对比:
通过对比
origin_data[i] - med_data[i],
origin_data[i] - med_data[i + half_win_width]以及
origin_data[i + half_win_width] - med_data[i]三者图像,
发现中值滤波效果最佳者
为origin_data[i] - med_data[i + half_win_width],
origin_data[i] - med_data[i]次之,
origin_data[i + half_win_width] - med_data[i]最差。
此对比从一定程度上证明了上述的中值滤波延时结论。
顺序中值滤波代码:
中值获取:
#ifndef __MEDIAN_H__
#define __MEDIAN_H__
class