About
Blood volume changes with each heartbeat, and that changes how much light your skin absorbs. The change is far too small to see, but a camera can measure it. This is remote photoplethysmography.
The pipeline
1. Face and region detection
MediaPipe FaceLandmarker locates the forehead and both cheeks each frame.
2. Skin sampling
Non-skin and clipped pixels are rejected; the remainder is averaged to one RGB triple.
3. POS projection
Plane-Orthogonal-to-Skin combines the three channels into a pulse waveform that is robust to illumination change.
4. Detrend and band-pass
A moving-average baseline is removed, then a zero-phase second-order Butterworth filter keeps 0.7–3.5 Hz.
5. Spectral estimate
Hann window, 1024-point FFT, parabolic interpolation around the peak — sub-bin resolution matters, as one bin is 1.8 BPM at 30 FPS.
What has been checked
- · Heart rate recovers 48.1, 72.3, 101.0 and 150.3 BPM against synthetic ground truth of 48, 72, 101 and 150.
- · A skin-tone bias in the quality gate was measured and removed; the worst-case group needed 3.7× less light afterwards.
- · Respiration is correct on synthetic input and unreliable on live subjects. It is not fixed and is marked accordingly in the console.
- · Nothing has been validated against a reference medical device, and no clinical study has been run.
Read the privacy notes before opening the console.