基于心动周期分割与卷积神经网络的心音信号分类系统
项目介绍
本系统是一个集成心音信号合成、预处理、自动化周期分割、特征转换及深度学习识别的全流程分析框架。系统旨在解决心音信号(PCG)中病理性杂音识别的自动化问题,通过将一维生理信号转化为二维时频图像,利用卷积神经网络(CNN)提取复杂的非线性特征。该项目特别针对正常心音与伴有收缩期杂音的异常心音进行建模,能够有效识别心跳过程中的异常特征。
功能特性
- 自动化数据集生成:系统内置心音合成模块,能够模拟正常心音(S1和S2)以及带有收缩期杂音的病理心音,支持自定义样本数量和生理参数。
- 精准信号预处理:集成4阶巴特沃斯带通滤波器,有效滤除原始信号中的低频基线漂移和高频环境干扰,仅保留25Hz至400Hz的核心生理频带。
- 生理周期分割:利用改进的香农能量包络(Normalized Shannon Energy)和峰值检测算法,自动定位心动周期中的S1与S2点,实现心音信号的精准切分。
- 时频特征转换:采用短时傅里叶变换(STFT)将时域波形映射为时频能量图,通过重采样和归一化技术,将信号适配为符合深度学习输入要求的图像格式。
- 端到端卷积神经网络:构建包含卷积层、批归一化层、最大池化层及全连接层的多层CNN模型,实现从原始特征图到分类标签的自动映射。
- 多维度评估可视化:提供包含原始信号分割图、时频特征图、混淆矩阵以及核心性能指标(准确率、精确率、召回率)的全方位可视化结果。
实现逻辑与流程
- 环境初始化与参数定义:
设定采样率(2000Hz)、信号时长、带通滤波频段(25-400Hz)以及卷积神经网络所需的图像输入尺寸(64x64)。
- 模拟心音数据集合成:
通过正弦信号模拟心跳中的低频S1和高频S2成分。根据随机生成的心率计算心动周期,并在指定时间点应用汉明窗进行平滑处理。
对于异常样本,在S1与S2之间的收缩期插入由高斯白噪声组成的模拟杂音。
对所有合成信号添加随机环境噪声,并应用带通滤波器完成预处理。
- 周期化分割与样本构建:
计算信号的香农能量,公式为 - (x^2) * log(x^2),利用高斯平滑滤波器提取包络。
通过峰值检测搜寻包络中的极大值点,将其作为分割切入点。
从每个信号中提取固定长度(约0.5秒)的片段,确保每个样本至少包含一个心动周期。
- 二维图像特征提取:
对分割出的时间片段执行短时傅里叶变换。
截取500Hz以下的低频分量,并对幅度谱进行双三次插值缩放,将其调整为64x64像素的单通道图像。
对像素值进行Min-Max归一化处理,增强特征提取的一致性。
- CNN模型训练与推理:
构建两组“卷积-批归一化-激活-池化”的特征提取结构,第一层采用16个卷积核,第二层采用32个卷积核。
通过64单元的非线性全连接层进行降维。
使用交叉熵损失函数和Adam优化器,在划分后的训练集上进行15个周期的训练。
- 性能度量:
在独立测试集上进行分类预测,统计混淆矩阵,计算准确率(Accuracy)、专门针对异常类别的精确率(Precision)和召回率(Recall)。
核心算法与关键技术细节
- 香农能量包络(Shannon Energy Envelope):
相比于普通的绝对值能量,香农能量通过取对数操作增强了低幅度的有用成分,抑制了部分随机噪声及尖峰,使得S1和S2的定位更加稳健。
采用了128点的汉明窗进行滑动分析,重叠长度设为110。这种高重叠度的设置能够保留更多的时域细节,生成的时频图在时间轴上更平滑。
在送入CNN前,将所有FFT幅度值映射回[0, 1]区间。这种线性拉伸消除了个体案例间的振幅差异,使得模型只关注波形形态和频谱分布。
使用了卷积层(convolution2dLayer)进行空间特征捕捉,批归一化层(batchNormalizationLayer)用于加速收敛并防止过拟合。输出层采用了Softmax分类器,能够直接给出所属“正常”或“异常”类别的概率。
通过imresize算法处理频谱图,将原始不规则大小的矩阵统一转化为CNN标准接受的张量格式。
系统要求
- 软件环境:MATLAB R2021a 或更高版本。
- 所需工具箱:
1. Signal Processing Toolbox(信号处理工具箱)
2. Deep Learning Toolbox(深度学习工具箱)
3. Statistics and Machine Learning Toolbox(统计与机器学习工具箱)
4. Image Processing Toolbox(图像处理工具箱)
- 硬件配置:建议具备4GB以上内存,支持GPU加速可显著缩短模型训练时间(系统默认使用CPU推理亦能运行)。