Skip to content

Desktop implementation of Remote Photoplethysmography – Measuring heart rate using facial video.

License

Notifications You must be signed in to change notification settings

prouast/heartbeat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3b02719 · Jun 14, 2024

History

50 Commits
Jul 2, 2018
Apr 5, 2017
Jul 1, 2020
Apr 21, 2018
Sep 16, 2016
Nov 12, 2020
Jun 14, 2024
Jan 23, 2019
Jan 23, 2019
Apr 6, 2016
Sep 4, 2018
Jan 23, 2019
Jan 23, 2019

Repository files navigation

Heartbeat: Measuring heart rate using remote photoplethysmography (rPPG)

News: Try out VitalLens, my new free iOS app implementing a modern rPPG model based on AI. We also have an API with a Python Client which uses the same AI model. Find out more at https://www.rouast.com/vitallens and https://www.rouast.com/api.

This is a simple implementation of rPPG, a way to measure heart rate without skin contact. It uses a video recording or live feed of the face to analyse subtle changes in skin color.

Here's how it works:

  • The face is detected and continuously tracked
  • Signal series is obtained by determining the facial color in every frame
  • Heart rate is estimated using frequency analysis and filtering of the series

If you are interested in the specifics, feel free to have a read of my publications on the topic:

See also my minimal JavaScript implementation and Browser Demo.

Demo

Dependencies

The following libraries are required to run Heartbeat:

They must be installed on the system such that headers and libraries are found on the compiler's standard search path.

Installation

For building a Makefile is available that works on macOS:

$ make

Alternative compilation for Ubuntu. Works with opencv 3.1:

$ g++ -std=c++11 Heartbeat.cpp opencv.cpp RPPG.cpp `pkg-config --cflags --libs opencv` -o Heartbeat

Settings

After building, the app can be run via

$ ./Heartbeat

Several command line arguments are available:

Argument Options Description
-i Filepath to input video Omit flag to use webcam
-rppg g, pca (default: g) Specify rPPG algorithm variant - only green channel or rgb channels with pca
-facedet haar, deep (default: haar) Specify face detection classifier - Haar cascade or deep neural network
-r Re-detection interval (default: 1 s) Interval for face re-detection; tracking is used frame-to-frame
-f Sampling frequency (default: 1 Hz) Frequency for heart rate estimation
-max default: 5 Maximum size of signal sliding window
-min default: 5 Minimum size of signal sliding window
-gui true, false (default: true) Display the GUI
-log true, false (default: false) Detailed logging
-ds default: 1 If using video from file: Downsample by using every ith frame

License

GPL-3.0