tjy/HeartRate
PEAandDA ff11a09b8b 代码迁移 2024-06-20 18:22:33 +08:00
..
HeartRateMonitor.py 代码迁移 2024-06-20 18:22:33 +08:00
README.md 代码迁移 2024-06-20 18:22:33 +08:00

README.md

Video-based Heart Rate Monitoring

这个项目是一个基于视频的心率监测系统。它使用计算机视觉技术从人脸视频中提取心率信息。主要功能包括:

  1. 检测人脸区域
  2. 从人脸区域提取RGB彩色通道信号
  3. 使用独立分量分析(ICA)从RGB信号中提取心率相关信号
  4. 使用FFT对信号进行频率分析,找出相应的心率值
  5. 计算心率变异性(HRV)指标,如SDNN、RMSSD和CV R-R

文件结构

  • HeartRateMonitor.py: 实现心率监测算法的核心逻辑,以及算法演示程序。

使用方法

  1. 确保已安装所需的Python库,包括opencv-pythondlibnumpyscipyscikit-learn
  2. 运行HeartRateMonitor.py脚本
  3. 脚本将打开默认摄像头,检测人脸区域
  4. 从人脸区域提取RGB彩色通道信号,使用ICA分离出心率信号
  5. 使用FFT分析心率信号,计算当前心率值
  6. 同时计算心率变异性指标SDNN、RMSSD和CV R-R
  7. 在视频画面上显示心率值和HRV指标

算法原理

心率信号提取

  1. 从人脸ROI区域提取RGB三个通道的平均值和标准差
  2. 将RGB三个通道作为特征矩阵的三行输入ICA算法
  3. ICA算法将特征矩阵分解为3个独立分量
  4. 选择其中一个独立分量作为心率信号

心率计算

  1. 对心率信号进行FFT变换得到频率域表示
  2. 根据设定的有效心率频率范围过滤FFT结果
  3. 在过滤后的FFT结果中找到最大值对应的频率,即为当前心率值(bpm)

心率变异性指标

  1. 使用滑动窗口从最近的心率值序列中提取一段心率数据
  2. 计算该段数据的SDNN(标准差)、RMSSD(连续差分平方根值的均值)和CV R-R(R-R间期变异系数)
  3. 以上三个指标反映了心率的变异程度

参数说明

  • freqs_min: 有效心率频率的下限(Hz)
  • freqs_max: 有效心率频率的上限(Hz)
  • camera_code: 使用的摄像头编号,0为默认摄像头

注意事项

  • 算法依赖人脸检测,如果人脸被遮挡或角度过大,将影响心率测量的准确性
  • 在光照条件较差的环境下,也可能影响测量精度
  • 目前只支持单个人脸的心率检测,多人情况下需要进一步改进
  • 算法的鲁棒性还有待提高,在特殊情况下可能会出现失效或测量偏差