This is part of my undergrad graduation project for the Electrical Engineering Project 2102499 course. This is a CHROM rPPG implementation to estimate heart rate with finite state machine to validate.
❗️DISCLAIMER:❗️ I didn't develop the entire code myself. I have given credit to other Githubs in the last part of this README (BIG THANKS!!)
- Clone/download SkinDetector at: https://github.com/pavisj/rppg-pos/tree/master/SkinDetector and place the SkinDetector folder in a place where it's compatible with your path.
- Install all the required libraries.
- The main code to execute is
FSM_x_CHROM.py
. - To validate the estimated HR, you can take a look at the
.csv
files and runbland_altman.py
to plot all the graphs.
The study collected data from two groups of subjects, one with normal skin color and one with darker skin color. The normal skin group had 484 samples and the darker skin group had 207 samples. The mean absolute difference (MAD) and standard deviation (SD) were calculated for both groups. The results showed that the MAD and SD were slightly higher for the darker skin group.
MAD (mean absolute difference) | SD (standard deviation) | |
---|---|---|
Normal Skin | 2.20 | 2.98 |
Tanned Skin | 2.71 | 3.60 |
To visualize the data, scatter plots, Bland-Altman plots, and density histograms were used. These graphs showed the distribution of the data and how close the estimated heart rate was to the actual heart rate.
You can find these graphs in Figures 1-3.
BIG THANKS TO THESE GITHUBS!!: 💖💖