AI源码
AI源码AI 精选 · 优质源码 · 助力学习

基于图像的指尖 PPG(iPPG)心率测量算法设计

本项目不接入实时摄像头,使用离线采集的指尖遮挡镜头视频/图像数据完成算法验证与演示(“基于图像”输入不变,仅把采集环节离线化,便于复现与对比测试)。

评分:4.8/5.0
销量:95
发布:2026/3/18
难度:L2 进阶级
💬 联系咨询观看视频介绍
永久使用权限
免费更新维护
技术支持服务

项目封面

截图 1

项目说明

基于图像的指尖 PPG(iPPG)心率测量算法设计

本项目不接入实时摄像头,使用离线采集的指尖遮挡镜头视频/图像数据完成算法验证与演示(“基于图像”输入不变,仅把采集环节离线化,便于复现与对比测试)。

目标(全流程)

导入指尖遮挡镜头视频 → 选取 ROI → 提取 iPPG 序列(ROI 内 RGB 统计/通道组合)→ 预处理(去趋势 + 带通 + 标准化)→ 心率估计(频域 PSD 主结果 + 时域峰值对照)→ 评估(有/无真值两套口径)→ 导出结果(CSV/参数 JSON/图表)。

数据与采集建议(默认条件)

  • 数据形式mp4/avi/mov 等常见视频文件(手机拍摄均可)
  • 拍摄方式:指尖完全覆盖镜头与补光灯(优先“闪光灯常开”),尽量保持稳定
  • 帧率:优先 30 fps 或更高;程序会自动读取视频 FPS,读取失败则默认 30 fps
  • 注意:若环境光强烈变化/移动明显,会导致 iPPG 质量下降(可通过 ROI 选择更稳、缩短移动、提高光照稳定性改善)

默认实验条件

  • 采样率(FPS):视频自带 FPS 优先;失败则 30 fps
  • 心率频段:0.7–4 Hz(42–240 bpm)
  • 滤波:Butterworth 带通 3 阶 + filtfilt 零相位
  • 滑窗:10 s;步长 1 s
  • 通道组合(可做对比)g / g-r / gnorm

功能清单(对应“技术路线”)

  • 视频导入:读取离线视频、展示首帧、记录 FPS/时长
  • ROI 交互选取:在首帧拖拽矩形 ROI(指尖区域)
  • iPPG 提取:逐帧计算 ROI 内 RGB 均值,构造时间序列并做通道组合
  • 预处理:去趋势、带通滤波、标准化(输出“原始 vs 预处理后”对比)
  • 心率估计
    • 频域法(主结果):Welch PSD,取心率频段内主峰频率 (f*{max}),(HR=60f*{max})
    • 时域法(对照):峰值检测得到 RR 间期,(HR=60/\overline{RR})
    • 置信度:频域主峰能量占比、时域 RR 稳定性(用于“质量/可信度”展示)
  • 评估与分析(两套口径)
    • 有真值:对齐 ECG/脉搏氧仪心率,计算 MAE、RMSE、MAPE、相关系数、Bland–Altman
    • 无真值(默认口径):PSD 与 Peaks 的一致性(平均绝对差)、心率序列稳定性(标准差)、有效窗占比/置信度分布
  • 导出与复现:导出信号与心率 CSV、运行配置 JSON(便于复现与对比测试)

算法实现说明

1) 从图像生成 iPPG 信号

  1. 对视频逐帧读取图像 (I_t),在 ROI 区域计算 RGB 均值:
    • (r[t]=mean(R_{ROI})), (g[t]=mean(G_{ROI})), (b[t]=mean(B_{ROI}))
  2. 选择通道组合得到原始 iPPG 序列 (x[t]):
    • g:(x[t]=g[t])
    • g-r:(x[t]=g[t]-r[t])
    • gnorm:(x[t]=g[t]/(r[t]+g[t]+b[t]))

2) 预处理

  • 去趋势(线性 detrend)抑制缓慢漂移
  • 0.7–4 Hz 带通滤波保留脉搏主频成分
  • z-score 标准化增强跨视频/跨光照可比性

3) 心率估计

  • 频域法(Welch PSD):在 0.7–4 Hz 内取主峰频率 (f*{max}),输出 (HR=60f*{max})
  • 时域法(峰值检测):在带通后信号中检测峰值并约束最小峰距,计算 RR 间期平均得到 HR
  • 置信度
    • 频域:(\text{conf}=\frac{P(f*{max})}{\sum*{f \in band} P(f)})
    • 时域:RR 变异系数 (CV=\sigma*{RR}/\mu*{RR}),(\text{conf}=1-CV)(截断到 0–1)

项目结构

.
├─ main.py
├─ requirements.txt
├─ README.md
├─ core/
│  ├─ pipeline.py          # 端到端流水线:视频→PPG→预处理→心率
│  ├─ ppg_extract.py       # ROI 提取、RGB 均值、通道组合
│  ├─ preprocess.py        # 去趋势/带通/z-score
│  ├─ hr_estimate.py       # PSD 与峰值两类心率估计
│  └─ signal_quality.py    # 饱和/亮度/运动等质量特征(用于展示/扩展门控)
└─ ui/
   └─ main_window.py       # Qt 界面、绘图、导出

如何运行

安装依赖:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

启动界面:

python main.py

使用步骤

  1. 点击“打开视频…”
  2. 在“视频首帧/ROI”页拖拽黄色矩形框到指尖区域
  3. 点击“确认ROI”
  4. 点击“运行全流程”
  5. 在“信号/心率”页查看曲线与对比结果
  6. 点击“导出结果…”

导出文件说明

导出目录下默认生成:

  • ppg_signals.csvt_sec, r, g, b, ppg_raw, ppg_filt
  • hr_psd.csvt_sec, bpm_psd, conf_psd
  • hr_peaks.csvt_sec, bpm_peaks, conf_peaks
  • run_config.json:视频路径、FPS、ROI、滤波/窗口/通道组合等参数(用于复现)

评估口径建议

  • 若你最终能采到真值(脉搏氧仪或 ECG,同步时间戳):把真值序列导入后,按滑窗对齐计算 MAE/RMSE/MAPE,并给出 Bland–Altman 图与相关系数
  • 若只有离线视频:用“PSD vs Peaks 一致性(MAD)+ 稳定性(STD)+ 有效窗占比/置信度分布”作为主要评估指标,并明确属于“无真值一致性评估”

常见问题

  • 为什么心率曲线有 NaN/断点?
    • 该时间窗内信号太短、峰值不足或 PSD 频段内能量不明显,属于正常现象;可尝试更稳定的 ROI、更强的补光、或增大滑窗长度
  • 视频 FPS 读取为 0 怎么办?
    • 程序会自动回退到 30 fps;建议换一个编码更标准的视频或转码后再测试

技术分类

包含内容

完整源码
项目说明文档
演示材料

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 95+ 位用户
立即咨询

相关推荐

查看全部 →
城市交通流量预测与拥堵成因分析系统
Python
进阶

城市交通流量预测与拥堵成因分析系统

是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

PythonHTMLSQLite
4.820
电商用户行为漏斗与CRO转化率优化分析
Python
NEW
进阶

电商用户行为漏斗与CRO转化率优化分析

电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

PythonHTMLSQLite
4.866
多组学癌症预后预测分析系统
Python
进阶

多组学癌症预后预测分析系统

基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

PythonHTMLSQLite
4.834
基于 Apriori 算法的中药配伍审查系统
Python
NEW
进阶

基于 Apriori 算法的中药配伍审查系统

本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

PythonHTMLSQLite
4.840
基于 Python 的城市共享单车骑行需求时空分析系统
Python
NEW
进阶

基于 Python 的城市共享单车骑行需求时空分析系统

本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

PythonHTMLSQLite
4.857
基于 Python 的短视频用户行为分析系统
Python
NEW
进阶

基于 Python 的短视频用户行为分析系统

基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。

PythonHTMLSQLite
4.875