https://github.com/prouast/heartbeat-js
JavaScript implementation of Remote Photoplethysmography – Measuring pulse rate using facial video.
https://github.com/prouast/heartbeat-js
face heart-rate heart-rate-measurement javascript opencv-js pulse remote-photoplethysmography remote-sensing rppg video-processing vital-signs
Last synced: 5 days ago
JSON representation
JavaScript implementation of Remote Photoplethysmography – Measuring pulse rate using facial video.
- Host: GitHub
- URL: https://github.com/prouast/heartbeat-js
- Owner: prouast
- License: gpl-3.0
- Created: 2019-07-20T02:50:48.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-04T06:25:27.000Z (7 months ago)
- Last Synced: 2025-06-01T23:10:40.011Z (4 months ago)
- Topics: face, heart-rate, heart-rate-measurement, javascript, opencv-js, pulse, remote-photoplethysmography, remote-sensing, rppg, video-processing, vital-signs
- Language: JavaScript
- Homepage: https://prouast.github.io/heartbeat-js/
- Size: 139 KB
- Stars: 96
- Watchers: 3
- Forks: 34
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# heartbeat-js: Video-based pulse rate monitoring in JavaScript
Looking for more powerful and up-to-date rPPG tools?
Check out our latest libraries and apps!| 📌 Tool | ⚡ Features | 🔗 Get Started |
|---------|-----------|---------------|
| **[Python Library](https://github.com/Rouast-Labs/vitallens-python)** | G, POS, CHROM, VitalLens API | [GitHub](https://github.com/Rouast-Labs/vitallens-python) |
| **[JavaScript Library](https://github.com/Rouast-Labs/vitallens.js)** | G, POS, CHROM, VitalLens API | [GitHub](https://github.com/Rouast-Labs/vitallens.js) |
| **[iOS App](https://apps.apple.com/us/app/vitallens/id6472757649)** | Live HR + RR Estimation | [App Store](https://apps.apple.com/us/app/vitallens/id6472757649) |
| **[Rouast Labs](https://rouast.com/api)** | More about our research & tech | [Website](https://rouast.com) |This is a simple JavaScript implementation of rPPG, a way to measure the pulse rate without skin contact.
It uses a 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 seriesIf you are interested in the specifics, feel free to have a read of my publications on the topic:
- [Remote Photoplethysmography: Evaluation of Contactless Heart Rate Measurement in an Information Systems Setting](http://air.newcastle.edu.au/AITIC_files/Paper_40.pdf)
- [Using Contactless Heart Rate Measurements for Real-Time Assessment of Affective States](http://link.springer.com/chapter/10.1007/978-3-319-41402-7_20)
- [Remote heart rate measurement using low-cost RGB face video: A technical literature review](https://www.researchgate.net/profile/Raymond_Chiong/publication/306285292_Remote_heart_rate_measurement_using_low-cost_RGB_face_video_A_technical_literature_review/links/58098ac808ae1c98c252637d.pdf)## Demo
Test the live demo directly in your browser: [Demo](https://prouast.github.io/heartbeat-js/)
Currently, tracking is disabled.
Works best if there is no subject motion.See also my [C++ implementation](https://github.com/prouast/heartbeat) and [YouTube Demo](https://www.youtube.com/watch?v=D_KYv7pXAvQ&t=1s).
License
----GPL-3.0