基于中值滤波的脉象信号基线漂移去除系统
项目介绍
本项目是一款专为中医脉象信号预处理设计的软件系统,旨在解决脉象采集过程中因呼吸、肢体微动及传感器压力变化而产生的基线漂移问题。系统采用非线性的中值滤波算法,能够从含有复杂低频干扰和高频噪声的原始信号中精准提取基线趋势,并将其扣除,从而获得平稳、准确的正交脉搏波形。该系统对于保持脉搏波上升沿斜率、主波高度等关键诊断特征具有重要意义,是中医数字化诊疗和生理信号处理领域的基础工具。
功能特性
- 仿真脉象信号生成:系统能够模拟生成包含主波、重搏前波和重搏波三个特征波形的典型脉搏波信号。
- 复杂漂移模拟:内置呼吸引起的低频正弦漂移以及传感器引起的线性趋势漂移模型,用于验证算法的鲁棒性。
- 自定义中值滤波算法:无需依赖特定工具箱,通过手动实现的滑动窗口逻辑,对信号进行非线性平滑,提取底层变化趋势。
- 信号归一化处理:提供幅度归一化功能,将处理后的信号映射至0-1区间,便于后续特征识别。
- 多维度可视化对比:系统生成三阶段时域波形图,直观展示“原始含漂移信号”、“提取基线趋势”、“去除漂移信号”以及“最终效果对比”。
- 性能量化评价:自动计算基线估计的均方误差(MSE),量化评估漂移去除的准确度。
使用方法
- 环境准备:确保计算机中安装了MATLAB软件。
- 运行程序:在MATLAB编辑器中打开代码或直接在命令行调用主函数。
- 结果观察:程序运行后会弹出绘图窗口,展示三个子图:
- 第一幅图对比原始信号与提取的红色基线。
- 第二幅图显示去除漂移后的脉动波形。
- 第三幅图对比经过归一化处理后的最终波形与理论纯净波形的重合度。
- 参数查看:在控制台窗口查看计算出的滤波窗口长度(点数)和基线估计均方误差。
系统要求
- 软件环境:MATLAB R2016a 及以上版本。
- 依赖项:无需安装额外的信号处理工具箱,算法核心逻辑采用原生语法实现。
实现逻辑与细节分析
1. 模拟脉象波形构建
系统通过组合三个指数衰减函数模拟单周期脉搏波形,分别对应中医脉图中的主波、重搏前波和重搏波。通过周期性的相位计算,模拟出心率为72次/分(1.2Hz)的连续生理波形。
2. 干扰环境模拟
为了模拟实际采集环境,系统在纯净脉搏波基础上叠加了多重干扰:
- 呼吸干扰:模拟0.15Hz和0.05Hz的低频波动。
- 线性偏移:模拟0.02倍率的线性增长趋势。
- 随机噪声:使用标准正态分布模拟传感器热噪声。
3. 滑动窗口中值滤波器实现
这是系统的核心逻辑,用于捕捉信号中的低频基线:
- 窗口计算:根据采样率设定约0.8秒(典型心跳周期)的窗口长度,并确保其为奇数以便确定唯一中值点。
- 边界填充策略:为解决信号边缘无法对齐滤波器中心的问题,系统取原始信号的首尾端点值对信号进行补齐填充。
- 非线性平滑:遍历信号,提取每个窗口内的采样值集合,通过内部排序算法选取中间值。由于中值滤波对脉搏波这种高频跳动信号具有“削峰平谷”的作用,最终得到的即为背景基线。
4. 关键内部算法说明
系统内置了自定义的中值计算函数,通过对采样向量进行排序处理:
- 当向量长度为奇数时,直接返回排序序列中间的数值。
- 当向量长度为偶数时,取中间两个数值的算术平均值。
该实现摒弃了对外部库的依赖,极大增强了代码的可移植性。
5. 信号校正与归一化
- 去漂移:通过从原始含噪信号中减去中值滤波提取出的基线序列,实现基线对齐。
- 幅度缩放:采用 Min-Max 归一化算法,将处理后的脉搏信号幅度统一线性映射到 0 到 1 的范围内。
6. 性能度量
系统通过计算“原始不含漂移的信号”与“去除提取基线后的信号”之间的均方误差(MSE)来量化算法性能。这一指标反映了中值滤波捕获基线变化的精准程度,对调优滤波窗口参数具有指导意义。