2.3 KiB
2.3 KiB
Video-based Heart Rate Monitoring
这个项目是一个基于视频的心率监测系统。它使用计算机视觉技术从人脸视频中提取心率信息。主要功能包括:
- 检测人脸区域
- 从人脸区域提取RGB彩色通道信号
- 使用独立分量分析(ICA)从RGB信号中提取心率相关信号
- 使用FFT对信号进行频率分析,找出相应的心率值
- 计算心率变异性(HRV)指标,如SDNN、RMSSD和CV R-R
文件结构
HeartRateMonitor.py
: 实现心率监测算法的核心逻辑,以及算法演示程序。
使用方法
- 确保已安装所需的Python库,包括
opencv-python
、dlib
、numpy
、scipy
和scikit-learn
- 运行
HeartRateMonitor.py
脚本 - 脚本将打开默认摄像头,检测人脸区域
- 从人脸区域提取RGB彩色通道信号,使用ICA分离出心率信号
- 使用FFT分析心率信号,计算当前心率值
- 同时计算心率变异性指标SDNN、RMSSD和CV R-R
- 在视频画面上显示心率值和HRV指标
算法原理
心率信号提取
- 从人脸ROI区域提取RGB三个通道的平均值和标准差
- 将RGB三个通道作为特征矩阵的三行输入ICA算法
- ICA算法将特征矩阵分解为3个独立分量
- 选择其中一个独立分量作为心率信号
心率计算
- 对心率信号进行FFT变换得到频率域表示
- 根据设定的有效心率频率范围过滤FFT结果
- 在过滤后的FFT结果中找到最大值对应的频率,即为当前心率值(bpm)
心率变异性指标
- 使用滑动窗口从最近的心率值序列中提取一段心率数据
- 计算该段数据的SDNN(标准差)、RMSSD(连续差分平方根值的均值)和CV R-R(R-R间期变异系数)
- 以上三个指标反映了心率的变异程度
参数说明
freqs_min
: 有效心率频率的下限(Hz)freqs_max
: 有效心率频率的上限(Hz)camera_code
: 使用的摄像头编号,0为默认摄像头
注意事项
- 算法依赖人脸检测,如果人脸被遮挡或角度过大,将影响心率测量的准确性
- 在光照条件较差的环境下,也可能影响测量精度
- 目前只支持单个人脸的心率检测,多人情况下需要进一步改进
- 算法的鲁棒性还有待提高,在特殊情况下可能会出现失效或测量偏差