← cs
$ cat projects/HydRation.md

PPG-Based Heart Rate & Hydration Monitor

Non-invasive physiological monitoring using photoplethysmography signal analysis from video recordings.

2024-02-15
PythonOpenCVSciPyFirebaseNumPy

PPG-Based Heart Rate & Hydration Monitor

Analyzes photoplethysmography (PPG) signals from video to extract heart rate and assess hydration status using the CHROM method.

What I Built

Signal Extraction (CHROM Method):

  • RGB channel processing to detect blood volume changes in skin
  • Exploits differential absorption across color channels
  • Processes video at 30 FPS

Heart Rate Detection:

  • Bandpass filtering (0.7–4.0 Hz) for physiological range
  • Derivative-based peak detection
  • ±3 BPM accuracy vs. reference devices

Hydration Classification (TPA/VPA Ratio):

  • TPA (Total Pulse Area): Area under pulse cycle
  • VPA (Valley-to-Peak Area): Vascular compliance measure
  • Thresholds: < 0.559 severe, 0.559-0.815 mild, 0.815-1.326 normal, > 1.326 overhydration

Firebase Integration:

  • Video uploads to Firebase Storage
  • Automatic processing on upload
  • Results stored in Firestore with timestamps

Technical Details

CHROM Algorithm

Combines RGB channels to cancel motion artifacts:

  1. Normalize R, G, B channels
  2. Compute chrominance: Xs = 3R - 2G, Ys = 1.5R + G - 1.5B
  3. Temporal filtering to remove DC
  4. Isolate pulse: S = Xs - (σ(Xs)/σ(Ys)) × Ys

Pipeline

Video → Frame Extract → ROI (center) → RGB Extract → CHROM
  → Bandpass (0.7-4.0 Hz) → Peak Detect → HR + TPA/VPA → Classify

Optimizations

  • Skip first/last 3 seconds (initialization artifacts)
  • Vectorized NumPy operations
  • Memory-efficient streaming (no full video load)
  • GPU acceleration option for real-time

CLI

# Single video
python -m src.main video.mov --save-trace trace.png

# Batch processing
python -m src.main *.mov --output results.json

# Live visualization
python -m src.main video.mov --show-plot

Results

Performance:

  • Heart rate: ±3 BPM accuracy
  • Processing: ~10s for 30s video (M1 MacBook Pro)
  • TPA/VPA correlates with urine specific gravity (validation pending)

Key Insights:

  • Lighting critical: consistent, diffuse lighting improves signal
  • Skin tone requires calibrated CHROM coefficients
  • Motion > 5mm degrades signal—face tracking would help
  • TPA/VPA ratio novel (not in commercial devices)—potential publication

Contactless Advantage:

  • Remote patient monitoring without contact
  • Mass screening via webcam
  • Low-cost alternative to wearables

Future Work

  • Face tracking for motion compensation
  • ML model to predict hydration from waveform features
  • SpO2 estimation via R/IR ratio
  • Web interface for upload/analysis
  • Clinical validation study