使用摄像头测量心率
摘要
- 心率是最重要的生理参数之一,也是人体生理状态的重要指标
- 一种基于非接触式的系统来测量心率:使用摄像头的实时应用
- 原理:从血液循环引起的面部皮肤颜色变化中提取心率信息
- 应用:监测驾驶员的生理状态
方法
- 使用面部特征点检测人脸,对齐并获取感兴趣区域(ROI)
- 应用带通滤波器,低频为0.8 Hz,高频为3 Hz,分别对应48和180次/分钟
- 计算每帧ROI的平均颜色值,并将其推入长度为150的数据缓冲区
- 对数据缓冲区进行快速傅里叶变换(FFT)。最高峰值即为心率
- 放大颜色使颜色变化可见
要求
pip install -r requirements.txt
实现
python GUI.py
- 如需绘制图表,运行"graph_plot.py"
- 对于欧拉视频放大实现,运行"amplify_color.py"
结果
- 使用专业设备Compact 5 medical Econet的数据作为基准。在某些情况下,使用该应用程序和设备测量的心率值是相同的
参考文献
- H. Rahman, M.U. Ahmed, S. Begum, P. Funk的《使用网络摄像头从面部RGB彩色视频实时监测心率》
- Michael Kellman Carnegie(梅隆大学)、Sophia Zikanova(卡内基梅隆大学)和Bryan Phipps(卡内基梅隆大学)在2015年春季18-551课程第2组的《使用多光谱成像远程监测心率》
- Ming-Zher Poh, Daniel J. McDuff和Rosalind W. Picard的《使用视频成像和盲源分离的非接触式自动心脏脉搏测量》
- Janus Nørtoft Jensen和Morten Hannemose的《基于摄像头的心率监测》
- 图表绘制基于https://github.com/thearn/webcam-pulse-detector
- https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/
注意事项
- 应用程序一次只能检测一个人的心率
- 突然变化可能导致心率计算错误。在大多数情况下,在摄像头前保持稳定10秒后可以正确检测心率
- 本GitHub项目仅供学习使用。如需用于其他目的,请联系我:khanhhanguyen2310@gmail.com