心跳:使用远程光电容积脉搏波描记法(rPPG)测量心率
新闻:试用 VitalLens,我的新免费 iOS 应用,它实现了基于人工智能的现代 rPPG 模型。我们还提供了一个 API 和一个使用相同人工智能模型的 Python 客户端。在 https://www.rouast.com/vitallens 和 https://www.rouast.com/api 了解更多信息。
这是 rPPG 的一个简单实现,它是一种无需皮肤接触即可测量心率的方法。它使用面部的视频记录或实时反馈来分析皮肤颜色的细微变化。
工作原理如下:
- 检测并持续跟踪面部
- 通过确定每一帧中的面部颜色获得信号序列
- 使用频率分析和序列滤波来估算心率
如果您对具体细节感兴趣,欢迎阅读我在该主题上的出版物:
- [远程光电容积脉搏波描记法:在信息系统环境中评估非接触式心率测量][aitic]
- [使用非接触式心率测量进行情感状态的实时评估][gmunden]
- [使用低成本 RGB 面部视频进行远程心率测量:技术文献综述][fcs]
另请参阅我的最小 JavaScript 实现 和 浏览器演示。
演示
- [实时 rPPG 运行][video1]
- [离线 rPPG 与生理基线测量][video2]
依赖项
运行 Heartbeat 需要以下库:
- [OpenCV]
必须在系统上安装这些库,以便编译器的标准搜索路径能找到头文件和库文件。
安装
提供了适用于 macOS 的 Makefile 用于构建:
$ make
Ubuntu 的替代编译方法。适用于 opencv 3.1:
$ g++ -std=c++11 Heartbeat.cpp opencv.cpp RPPG.cpp `pkg-config --cflags --libs opencv` -o Heartbeat
设置
构建后,可以通过以下方式运行应用:
$ ./Heartbeat
可用的命令行参数如下:
参数 | 选项 | 描述 |
---|---|---|
-i | 输入视频的文件路径 | 省略此标志以使用网络摄像头 |
-rppg | g, pca(默认:g) | 指定 rPPG 算法变体 - 仅绿色通道或带 PCA 的 RGB 通道 |
-facedet | haar, deep(默认:haar) | 指定面部检测分类器 - Haar 级联或深度神经网络 |
-r | 重新检测间隔(默认:1 秒) | 面部重新检测的间隔;帧间使用跟踪 |
-f | 采样频率(默认:1 Hz) | 心率估算的频率 |
-max | 默认:5 | 信号滑动窗口的最大大小 |
-min | 默认:5 | 信号滑动窗口的最小大小 |
-gui | true, false(默认:true) | 显示 GUI |
-log | true, false(默认:false) | 详细日志记录 |
-ds | 默认:1 | 如果使用文件中的视频:通过使用每第 i 帧进行下采样 |
许可证
GPL-3.0