我昨天还是前天来着看见 FDA 给一个新设备授权了,我仔细一看,居然有了差异化,至于是什么,之后说:
image-20250807234952674
是一个很小巧的设备,就贴在胸口就好了,下面还有一个充电和传输数据的基站。
除了常见的 ECG 和 PPG
居然有个 SCG,这个也比较形象,叫做心震图,马上发给我的好基友:
锐评一个捆绑,我在说技术,他在说政策
好,什么是 SCG:
可以看到在时域上面也是这样的波形图
时间序列数据
地震心动图(SCG)相对小众一些,它主要测量与心脏机械活动相关的胸壁微小振动,这些振动中蕴含着心脏收缩和舒张的力学信息。
他们的论文比较好,我就先写一个(在下面的文章),有和硬件相关的内容:
image-20250807232620502
SCG Sensor 放置于胸骨中部,即胸骨上切迹与剑突之间。
显示两个关键物理量:
𝑎⃗_scg
:加速度信号(矢量形式),是由于心脏搏动和血液加速产生的胸壁振动;
𝐹_h
:心脏产生的反作用力,使胸腔产生震动(可通过加速度测出);
这体现了 SCG 是 心脏机械活动的非侵入式反映。
心脏搏动时会引起血液加速、心肌收缩、瓣膜打开关闭,这些活动都会传递到胸壁形成微小振动;SCG 捕捉的是这些“机械震动”,可以间接推断出心脏的泵血功能、瓣膜活动情况等。
三个方向定义:
Head-to-Foot(HF):从头部到脚部方向;
Dorso-Ventral(DV):背腹方向(胸部前后);
Lateral(LAT):左右侧向。
使用三轴加速度计可以:捕捉复杂立体的震动轨迹;提高数据的完整性与鲁棒性;后续可融合为 SCG3D(平均波形),降低运动伪迹与呼吸干扰。
圆形结构:直径约 7cm,厚度 1cm,重量仅 40g,便于佩戴;
可见:电池模块;主控板;加速度传感器;三个电极接点(通过导线连接到贴片背面);采用三片 Ag/AgCl 胶贴电极(Red Dot 2560)贴在胸前皮肤上,既可进行 ECG 采集,又可提供良好机械耦合收集 SCG 信号;
数据本地存储:microSD 卡中,采样率为 500 Hz;
续航时间:≥50 小时,支持睡眠状态下的连续监测;
使用 BMA280 三轴 MEMS 加速度计(Bosch):具有超低噪声、高分辨率的特点,适合捕捉微小震动信号。
我就放个框图
不过他们的文章我的都不记得哪篇里面是使用了 ADI 的一个,200 一颗的加速度计。
这很经典了
这篇论文《Novel Wearable Seismocardiography and Machine Learning Algorithms Can Assess Clinical Status of Heart Failure Patients》聚焦于 Seismocardiography(SCG) 技术在慢性心力衰竭(HF)患者状态评估中的应用。
SCG 的作用(Seismocardiography)
SCG 是一种记录 胸壁在心脏搏动时产生的微小振动 的技术。这些振动反映了:血液射入主动脉 造成的机械冲击;心脏在胸腔内运动;与 主动脉瓣开启/关闭、心室收缩等机械事件 密切相关。
它的本质是一种机械振动信号,相较于 ECG(电信号)提供的是 心脏机械功能状态 的信息。
在 健康或补偿期 HF(Compensated HF) 患者中:运动(如 6 分钟步行测试,6MWT)后,心脏收缩加强;SCG 波形会表现出高频成分增强、时域特征改变(如更短的等容收缩期);表明心脏具备良好的 心血管储备(cardiovascular reserve)。
在 失代偿期 HF(Decompensated HF) 患者中:由于交感神经调节能力差、β 受体下调;SCG 信号运动前后变化很小;表明缺乏心血管储备,提示疾病恶化。
SCG 信号被提取出频域特征后构建成图(Graph),再对比运动前后图结构的相似性(共边数):
GSS 高 → 运动前后 SCG 图结构相似 → 心脏状态变化小 → 失代偿 HF
GSS 低 → SCG 有明显变化 → 补偿期 HF 或康复状态
现在也没有数据给我看,自己仿真一下!
用 Python 构建一套仿真流程,来模拟 补偿期(Compensated) 与 失代偿期(Decompensated) 心力衰竭(HF)状态下的 SCG(Seismocardiogram)信号差异。
类似于一个“颤动的波”,每个心动周期中包含几个关键机械事件:
IM (isovolumic contraction)
AO (aortic valve opening)
RE (rapid ejection)
AC (aortic valve closure)
状态 | 波形变化特征 |
---|---|
补偿期 | - 更强的心肌收缩 → 高频成分多 - 波形间隔更短,幅度更明显 |
失代偿期 | - 收缩无力 → 高频成分弱化 - 时域更“钝化”,波形变化不大 |
补偿期患者运动后波形变化显著;失代偿期几乎无明显变化;构建两种状态下的“运动前后”SCG 波形,展示其时域与频域差异。
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
# 基础参数
fs = 500 # 采样率(Hz)
t = np.linspace(0, 5, 5 * fs) # 模拟 5 秒
# 波形构造函数
def generate_scg_signal(state="compensated", after_exercise=False):
scg = np.zeros_like(t)
bpm = 80 if not after_exercise else 110 # 心率
# 每个心动周期的长度
beat_period = 60 / bpm
# 模拟 5 秒内多个周期
times = np.arange(0, t[-1], beat_period)
for ti intimes:
if state == "compensated":
A = 1.0 if not after_exercise else 1.2 # 振幅增强
f1 = 12 if not after_exercise else 18 # 高频成分增加
elif state == "decompensated":
A = 0.8
f1 = 8 # 高频减少
# 模拟单个 SCG 波形周期(类似振铃 + 阻尼)
pulse = A * np.exp(-20 * (t - ti)) * np.sin(2 * np.pi * f1 * (t - ti))
pulse[t < ti] = 0 # 零前置
scg += pulse
# 加入低频运动伪迹
scg += 0.05 * np.sin(2 * np.pi * 0.5 * t)
# 滤波(模拟硬件带宽限制)
b, a = butter(2, [0.8 / (fs / 2), 35 / (fs / 2)], btype='band')
scg = filtfilt(b, a, scg)
return scg
# 生成信号
scg_c_before = generate_scg_signal("compensated", after_exercise=False)
scg_c_after = generate_scg_signal("compensated", after_exercise=True)
scg_d_before = generate_scg_signal("decompensated", after_exercise=False)
scg_d_after = generate_scg_signal("decompensated", after_exercise=True)
# 可视化
plt.figure(figsize=(12, 8))
plt.subplot(2, 1, 1)
plt.title("Compensated HF - SCG Before vs After Exercise")
plt.plot(t, scg_c_before, label="Before")
plt.plot(t, scg_c_after, label="After", alpha=0.7)
plt.legend(); plt.ylabel("Amplitude"); plt.grid()
plt.subplot(2, 1, 2)
plt.title("Decompensated HF - SCG Before vs After Exercise")
plt.plot(t, scg_d_before, label="Before")
plt.plot(t, scg_d_after, label="After", alpha=0.7)
plt.legend(); plt.xlabel("Time (s)"); plt.ylabel("Amplitude"); plt.grid()
plt.tight_layout()
plt.show()
结果
明显的振铃波形;运动后波形压缩,频率增加,反映心脏增强的收缩功能。
整体波形较钝化;运动前后几乎没有变化,反映储备能力缺失。
频谱分析
展示了补偿期(Compensated)与失代偿期(Decompensated)心力衰竭患者在运动前后 SCG3D 信号的频谱差异(使用 Welch 方法估计 PSD):
运动后(橙线) 显著增加了高频分量(约 10–30 Hz 区间 PSD 上升);说明心脏搏动加强,收缩力增加,SCG 信号更加尖锐与快速;这是典型的“心脏储备能力”表现,能在运动后迅速增强机械输出。
运动前后频谱几乎重合;没有显著高频增强;表明患者的心脏功能无法响应运动刺激,缺乏储备能力。
因为传感器是三轴的,也模拟一下呗~
image-20250807234510010
以上三幅图展示了补偿期 HF 患者在运动前后,SCG 信号三个轴向(HF、DV、LAT)的频谱变化:
表现出最显著的高频提升(10–25 Hz 区域);对应心脏纵向收缩/伸展方向,可能与主动脉血流喷射直接相关;是 SCG 中最敏感的轴向,最常用于心脏事件检测。
同样有频率提升,但程度略低;受胸壁运动影响较多;可捕捉与心室收缩后背部方向撞击相关的信号。
频谱变化相对平缓;多反映左右心室膨胀或轻微偏心运动;对运动响应的表现最不敏感。
方向 | 特征变化 | 心理解剖意义 | 实际建议 |
---|---|---|---|
HF | 高频增强明显 | 与纵向喷血、主动脉瓣打开密切相关 | 首选主通道 |
DV | 中度变化 | 胸壁起伏、右心室收缩传导 | 可作为辅助轴融合 |
LAT | 最弱响应 | 偏心运动、心脏旋转 | 信噪比较低,可选用 |
在最后的最后,把三个轴的数据合成一个完整的数据:
image-20250807234642429
上图展示了一个三维特征点云图,用于表示补偿期 HF 患者运动后三轴 SCG 信号在不同频带上的能量分布:
X轴(Head-to-Foot):纵向震动能量(主动脉方向);
Y轴(Dorso-Ventral):背腹方向震动能量;
Z轴(Lateral):左右方向能量(较弱);
每一个点表示某个频带区间(0–2Hz,2–4Hz,…,38–40Hz)在三轴上对应的能量大小。
整体分布显示:在 HF 与 DV 方向能量分布较宽,说明这些轴对运动后心脏反应更敏感;LAT 轴(Z轴)点集中在较小区域,说明该方向贡献有限;类似的点云可作为后续 kNN 图构建的输入特征向量;在不同 HF 状态下点云形状将显著不同,可用于训练分类器或计算 GSS。
传感器我已经买了,等我星期天写个 demo 给自己看看。
绝美心脏图
https://www.jacc.org/doi/10.1016/j.jchf.2025.102513
https://pmc.ncbi.nlm.nih.gov/articles/PMC5769154/