Health Indices
The Vitals SDK estimates multiple wellness indicators from camera-based measurements. Each metric is derived through computational analysis of optical signal patterns.
Heart Rate (BPM)
Heart rate is the number of times the heart beats per minute (BPM), measured by detecting the cardiac pulse in the facial blood flow.
Measurement Method
- FFT-based frequency domain analysis of rPPG signal
- Peak detection in time-domain signal for validation
- SNR gating to ensure reliable detection
- Window-averaged for stability (default 45 seconds)
Typical Values
- Resting Adults: 60-100 BPM
- Athletes: 40-60 BPM
- During Activity: Can exceed 150 BPM
Accuracy Factors
- Good lighting and camera quality
- Minimal subject movement
- Proper face positioning
- Stable signal quality (SNR > 10)
Example Output
{
"heartRate": 72.5,
"confidence": 0.85,
"unit": "BPM",
"timestamp": "2024-02-23T10:30:00Z"
}HRV (RMSSD)
Heart Rate Variability (HRV) measures the variation in time between successive heartbeats, calculated using the Root Mean Square of Successive Differences (RMSSD) method.
Measurement Method
- Detect R-peaks in cardiac signal
- Calculate R-R intervals (time between beats)
- Compute RMSSD: √(Σ(RRᵢ - RRᵢ₊₁)² / (N-1))
- Window-averaged over measurement period
Typical Values
- Young Adults: 50-100 ms
- Adults 30-50: 30-60 ms
- Adults 50+: 20-40 ms
Interpretation
- Higher HRV: Generally associated with better cardiovascular health and stress resilience
- Lower HRV: May indicate stress, fatigue, or cardiovascular issues
- Varies significantly between individuals
Example Output
{
"hrv": 45.2,
"method": "RMSSD",
"confidence": 0.78,
"unit": "ms",
"timestamp": "2024-02-23T10:30:00Z"
}Respiratory Rate (RPM)
Respiratory rate estimates the number of breaths per minute by analyzing respiratory-induced variations in the rPPG signal.
Measurement Method
- Frequency band isolation (0.1-0.5 Hz, 6-30 breaths/minute)
- FFT analysis in respiratory frequency range
- Peak detection for breath-to-breath intervals
- Window-averaged for stability
Typical Values
- Resting Adults: 12-20 breaths/minute
- During Sleep: 12-16 breaths/minute
- During Exercise: Can exceed 40 breaths/minute
Example Output
{
"respiratoryRate": 16.3,
"confidence": 0.72,
"unit": "RPM",
"timestamp": "2024-02-23T10:30:00Z"
}Stress Index
The Stress Index is a composite metric derived from heart rate and HRV patterns, indicating the current stress level.
Calculation Method
- Combines heart rate and HRV measurements
- Uses established stress assessment algorithms
- Accounts for individual baselines
- Scales 0-100 (higher = more stressed)
Interpretation
- 0-30: Relaxed, low stress
- 31-60: Normal, moderate stress
- 61-80: Elevated stress
- 81-100: High stress
Example Output
{
"stressIndex": 45,
"level": "moderate",
"confidence": 0.80,
"timestamp": "2024-02-23T10:30:00Z"
}SpO₂ (Oxygen Saturation)
SpO₂ estimates blood oxygen saturation by analyzing the ratio of red to green channel absorption in the rPPG signal.
Measurement Method
- Analyzes red and green channel AC/DC ratios
- Compares pulsatile components between channels
- Applies calibration curves for estimation
- Requires good lighting and skin exposure
Typical Values
- Normal: 95-100%
- Mild Hypoxemia: 90-94%
- Moderate Hypoxemia: 85-89%
- Severe Hypoxemia: Below 85%
Example Output
{
"spo2": 97.2,
"confidence": 0.65,
"unit": "%",
"timestamp": "2024-02-23T10:30:00Z"
}Blood Pressure (AI-Estimated)
Blood pressure is estimated using a combination of classical linear estimation and machine learning refinement with RandomForestRegressor.
Measurement Method
- Linear estimation from PTT-derived features
- ML refinement using RandomForestRegressor
- Features include heart rate, HRV, and signal characteristics
- Requires individual calibration for best accuracy
Typical Values
- Normal Systolic: 90-120 mmHg
- Normal Diastolic: 60-80 mmHg
- Elevated: 120–129 / < 80 mmHg
- High: ≥130 / ≥80 mmHg
Example Output
{
"bloodPressure": {
"systolic": 118,
"diastolic": 76,
"confidence": 0.55,
"unit": "mmHg",
"estimated": true,
"timestamp": "2024-02-23T10:30:00Z"
}
}Blood Sugar (AI-Estimated Wellness Metric)
Blood sugar (glucose) is estimated using machine learning models that analyze optical signal patterns and their correlation with glucose levels.
Measurement Method
- ML-based estimation using RandomForestRegressor
- Features from rPPG signal characteristics
- Requires individual calibration and baseline
- Highly experimental and research-grade
Typical Values (Fasting)
- Normal: 70-99 mg/dL
- Prediabetes: 100-125 mg/dL
- Diabetes: ≥126 mg/dL
Example Output
{
"bloodSugar": {
"value": 95,
"unit": "mg/dL",
"confidence": 0.40,
"estimated": true,
"experimental": true,
"timestamp": "2024-02-23T10:30:00Z"
}
}Signal Quality
Signal quality is a composite metric indicating the reliability of the current measurements.
Quality Factors
- Signal-to-Noise Ratio (SNR)
- Usable Frame Ratio
- Lighting conditions
- Motion levels
- Face detection stability
Quality Scale
- Excellent (0.8-1.0): Highly reliable measurements
- Good (0.6-0.79): Reliable measurements
- Fair (0.4-0.59): Acceptable with some uncertainty
- Poor (<0.4): Low reliability, use with caution
Example Output
{
"signalQuality": 0.78,
"level": "good",
"factors": {
"snr": 12.5,
"usableFrameRatio": 0.85,
"lighting": "good",
"motion": "minimal"
}
}Usable Frame Ratio
The ratio of frames that passed quality assessment to total frames processed.
Calculation
usableFrameRatio = usableFrames / totalFramesTarget Values
- Excellent: > 0.85
- Good: 0.70-0.85
- Adequate: 0.50-0.70
- Poor: < 0.50
Window Quality Status
Overall assessment of the measurement window quality.
Status Levels
- Complete: Full window with high quality
- Partial: Partial window with good quality
- Insufficient: Not enough usable frames
- Poor Quality: Low signal quality
Summary Example
{
"sessionId": "session-12345",
"timestamp": "2024-02-23T10:30:00Z",
"windowDuration": 45,
"results": {
"heartRate": {
"value": 72.5,
"unit": "BPM",
"confidence": 0.85
},
"hrv": {
"value": 45.2,
"unit": "ms",
"confidence": 0.78
},
"respiratoryRate": {
"value": 16.3,
"unit": "RPM",
"confidence": 0.72
},
"stressIndex": {
"value": 45,
"level": "moderate",
"confidence": 0.80
},
"spo2": {
"value": 97.2,
"unit": "%",
"confidence": 0.65
},
"bloodPressure": {
"systolic": 118,
"diastolic": 76,
"unit": "mmHg",
"confidence": 0.55,
"estimated": true
},
"bloodSugar": {
"value": 95,
"unit": "mg/dL",
"confidence": 0.40,
"estimated": true,
"experimental": true
}
},
"quality": {
"signalQuality": 0.78,
"usableFrameRatio": 0.85,
"windowStatus": "complete",
"factors": {
"snr": 12.5,
"lighting": "good",
"motion": "minimal"
}
}
}Next Steps
- Learn about remote configuration options
- Explore PDF reports for data visualization
- Check the Admin API for data management