Results
The SDK produces final results once the required success conditions have been met for the chosen measurement duration. By default (if you don’t change any settings), the SDK uses a 1-minute measurement. However, you can configure shorter or custom durations (see Measurement Preset).
Success conditions
Regardless of measurement length, two key conditions must be met for a successful result:
- The extracted photoplethysmographic signal must remain above a required quality threshold.
- The user’s face must be stable and properly positioned within the camera frame.
If these conditions aren’t consistently satisfied, the measurement may take longer (for example, if the user moves out of view or is in a dark environment).
Final metrics
Below are the metrics the SDK computes from the detected heart cycles once the measurement finishes:
HR (Heart Rate)
HR is the number of heartbeats per minute (bpm), reflecting the heart’s activity and overall cardiovascular function. It is a fundamental physiological parameter influenced by various factors, including age, fitness level, stress, medications, and overall health.
We estimate heart rate by analyzing changes in light reflection from the skin, which are caused by blood volume variations with each heartbeat.
In adults, a normal resting heart rate typically ranges between 60–100 bpm, with lower values generally indicating better cardiovascular efficiency. However, a resting HR above 80 bpm has been associated with an increased risk of cardiovascular diseases.
HR can fluctuate throughout the day due to physical activity, emotions, or autonomic nervous system regulation. While a consistently low or high HR may be normal for some individuals, significant deviations from typical ranges can signal potential health concerns and should be evaluated in a clinical context.
Heart Rate Variability (HRV)
HRV measures the variation in time intervals between consecutive heartbeats, reflecting the current state of the heart and the autonomic nervous system. Here, we assess HRV using the SDNN index (Standard Deviation of Normal-to-Normal Interbeat Intervals), a widely recognized indicator of autonomic regulation.
In general, higher HRV is associated with better adaptability and cardiovascular health, while lower HRV suggests reduced autonomic flexibility and is considered an independent risk factor for cardiovascular events and mortality.
High HRV in populations is related to good health, low stress levels, and low risk of sudden death and it is a useful measure of positive adaptation, performance, and outcomes (Kubota et al., 2017). On the contrary, low HRV is associated with decreased physical fitness, high stress levels, increased risk of cardiovascular and neurodegenerative diseases, and poor adaptations (Souza et al., 2021).
However, HRV is influenced by several factors, including age, gender, time of day, lifestyle, and fitness level, meaning there is no universal “normal” range for HRV values, including SDNN.
In general, HRV is influenced by several factors and frequently shows very high inter- and intraindividual variability, thus limiting its large use in clinical practice as a diagnostic and or prognostic biomarker. The broad diffusion of HRV into the clinical practice is hindered by the absence of standardized cutoff values for HRV measures. Establishing clinical decision limits requires a thorough understanding of the biological variability of HRV, which is notably high due to a wide number of physiological, such as food intake, exercise, body position (supine or standing), and time of the day (Hayano et al., 2001, Hayano et al., 1990), and pathological conditions, even at subclinical stages.
It’s also important to note that SDNN values depend on the duration of measurement. The HRV results obtained from this 1-minute measurement should not be directly compared with results from longer or shorter recordings, as measurement duration significantly impacts the outcome.
To track HRV trends effectively, it’s best to compare readings taken at the same time of day. HRV typically peaks in the early morning (around 6–7 AM) and reaches its lowest levels in the early evening. A drop in HRV compared to your usual values may indicate fatigue, stress, poor fitness, or overtraining. You can work on improving your HRV by focusing on better sleep, recovery, and regular physical activity.
Resource:
- Olivieri F, Biscetti L, Pimpini L, Pelliccioni G, Sabbatinelli J, Giunta S. Heart rate variability and autonomic nervous system imbalance: Potential biomarkers and detectable hallmarks of aging and inflammaging. Ageing Res Rev. 2024 Nov;101:102521. doi: 10.1016/j.arr.2024.102521. Epub 2024 Sep 27. PMID: 39341508.
Breathing Rate (BR)
BR is the frequency of respiratory cycles, expressed in breaths per minute (bpm). Respiration is monitored by detecting chest or upper body movements during breathing, or by analyzing subtle variations in skin color associated with oxygenation and blood flow. Breathing rate is estimated using spectral analysis by selecting the signal with the most distinct peak within the 0.1–0.5 Hz range (6–30 breaths per minute), ensuring it represents a true peak rather than a slight variation from neighboring values.
Normal ranges for breathing rate:
- Adults: 12–20 bpm
- Adults over 65 years: 12–28 bpm
- Adults over 80 years: 10–30 bpm
Stress Index (SI)
SI is a metric derived from heart rate variability (HRV) analysis, reflecting the overall state and functional reserve of cardiovascular regulatory systems, particularly the balance between the sympathetic and parasympathetic branches of the autonomic nervous system.
SI is calculated using a modified version of Baevsky’s method, which analyzes the distribution of heartbeat intervals rather than relying solely on traditional statistical measures. This approach incorporates quartile-based dispersion measures and the overall shape of the histogram of interbeat intervals.
The Stress Index is scaled from 0 to 10, with values between 0 and 4 considered normal. Mild emotional or physical stress may cause a moderate increase, while significant stress can lead to much higher values:
- Values above 5 may indicate a high level of stress, often linked to severe psycho-emotional strain, overwork, or cardiovascular dysfunction.
- Values above 9 may suggest a critical state, potentially indicating a preinfarction condition.
It’s important to note that both the Stress Index and the subjectively perceived level of stress are highly individual, varying based on personal physiological and psychological factors.
Parasympathetic Activity (PA)
PA is a measure of parasympathetic nervous system activity based on spectral analysis of heart rate variability (HRV).
It is calculated as follows:
- Signal Processing – The RR interval tachogram is low-pass filtered (up to 0.4 Hz) to remove high-frequency noise.
- Spectral Analysis – Power spectral density (PSD) is computed, and power is extracted from two frequency bands:
- Low Frequency (LF): 0.04–0.15 Hz
- High Frequency (HF): 0.1–0.4 Hz
- PA Calculation – The relative contribution of HF power (associated with parasympathetic activity) to the total power in both bands: HF / (LF + HF) × 100%
PA reflects the dominance of parasympathetic modulation in heart rate control, with higher values indicating greater parasympathetic influence.
Several studies demonstrated age- and gender-related variations in long-term HRV, assessed by means of a 24-hour ECG, reporting that autonomic activities diminish with age in both genders and that gender-related variation in parasympathetic regulation decreases during aging (Porta et al., 2001, Voss et al., 2015).
(…) the aging process appears to dramatically influence the autonomic nervous system activity. Indeed, heart rate (HR), HRV, and ANS modulation are all profoundly affected by age, even in the absence of disease, consistent with the idea that aging itself is a disease (Lakatta, 2015).
Resource:
- Olivieri F, Biscetti L, Pimpini L, Pelliccioni G, Sabbatinelli J, Giunta S. Heart rate variability and autonomic nervous system imbalance: Potential biomarkers and detectable hallmarks of aging and inflammaging. Ageing Res Rev. 2024 Nov;101:102521. doi: 10.1016/j.arr.2024.102521. Epub 2024 Sep 27. PMID: 39341508.
Cardiac workload
Cardiac workload is calculated as the product of heart rate and systolic blood pressure (measured in mmHg/s), also known as the rate-pressure product (RPP)—a key indicator of cardiac oxygen consumption. The higher the systolic arterial blood pressure, the harder the heart must work to eject a given amount of blood with each heartbeat. Similarly, at higher heart rates, cardiac oxygen demand increases, even if the work performed per heartbeat remains unchanged, as the cardiac muscles consume more oxygen during their excitation-contraction processes.
A lower heart rate and systolic blood pressure reduce the overall stress on the heart, while higher values indicate increased cardiac demand. The normal range for cardiac workload is 90–216 mmHg/s, derived from standard reference values for heart rate and systolic blood pressure.
Resources:
- Hetzenecker A, Buchner S, Greimel T, Satzl A, Luchner A, Debl K, et al. Cardiac workload in patients with sleep-disordered breathing early after acute myocardial infarction. Chest. 2013;143:1294-301.
- Westerhof N. Cardiac work and efficiency. Cardiovasc Res. 2000;48:4-7.
- Baller D, Bretschneider HJ, Hellige G. Validity of myocardial oxygen consumption parameters. Clin Cardiol. 1979;2:317-27.
- Kitamura K, Jorgensen CR, Gobel FL, Taylor HL, Wang Y. Hemodynamic correlates of myocardial oxygen consumption during upright exercise. J Appl Physiol. 1972;32:516-22.
Blood Pressure (BP)
BP is the force per unit area exerted by circulating blood on the walls of arteries, expressed in millimeters of mercury (mmHg). It is defined by two values: systolic blood pressure (SBP), which represents the maximum arterial pressure during left ventricular systole, and diastolic blood pressure (DBP), which corresponds to the minimum arterial pressure during diastole, when the heart relaxes and refills with blood. BP is a critical parameter in cardiovascular health, influenced by factors such as vascular resistance, cardiac output, autonomic regulation, and individual health conditions.
We estimate blood pressure by analyzing pulse wave velocity (PWV) derived from facial video data. The method utilizes pulse transit time (PTT) or pulse arrival time (PAT), which refers to the time it takes for the arterial pulse to travel between two points in the body. This is indirectly measured using facial scans. Changes in facial skin color, heart rate, and pulse are analyzed to compute systolic and diastolic BP values without the need for traditional cuff measurements. Shen.AI’s approach leverages Multi-Tonal Sensing (MTS) technology, making it possible to measure BP accurately across various lighting conditions, minor head movements, and skin tones, ensuring a non-invasive, camera-based solution for BP monitoring.
2024 ESC Guidelines on BP Classification
The 2024 ESC guidelines have updated the BP classification to support more accurate diagnosis and management:
- Normal BP (Non-elevated): SBP 90–120 mmHg, DBP 60–70 mmHg
- Elevated BP: SBP 121–135 mmHg, DBP 71–85 mmHg
- Hypertension: SBP ≥135 mmHg, DBP ≥85 mmHg
These values are used to guide treatment decisions and monitor patient outcomes, with an emphasis on Home Blood Pressure Monitoring (HBPM) for a more reliable assessment.
Resource:
- McEvoy JW, McCarthy CP, Bruno RM, Brouwers S, Canavan MD, Ceconi C, Christodorescu RM, Daskalopoulou SS, Ferro CJ, Gerdts E, Hanssen H, Harris J, Lauder L, McManus RJ, Molloy GJ, Rahimi K, Regitz-Zagrosek V, Rossi GP, Sandset EC, Scheenaerts B, Staessen JA, Uchmanowicz I, Volterrani M, Touyz RM; ESC Scientific Document Group. 2024 ESC Guidelines for the management of elevated blood pressure and hypertension. Eur Heart J. 2024 Oct 7;45(38):3912-4018. doi: 10.1093/eurheartj/ehae178. PMID: 39210715.
Body Mass Index (BMI) classification
Body Mass Index (BMI) is a widely used method for assessing an individual’s body weight in relation to their height. It is calculated by dividing a person’s weight in kilograms by the square of their height in meters (kg/m²). BMI provides a simple and effective way to classify individuals by weight, helping identify potential health risks associated with being underweight or overweight, including cardiovascular diseases, diabetes, and metabolic disorders.
We now classify BMI based on the extended WHO-defined classes, which offer a more precise understanding of health risk levels:
- Underweight (Severe thinness): BMI < 16
- Underweight (Moderate thinness): BMI 16.0–16.9
- Underweight (Mild thinness): BMI 17.0–18.4
- Normal range: BMI 18.5–24.9
- Overweight (Pre-obese): BMI 25.0–29.9
- Obese (Class I): BMI 30.0–34.9
- Obese (Class II): BMI 35.0–39.9
- Obese (Class III): BMI ≥ 40
BMI is estimated using facial scans, applying advanced image processing algorithms that analyze facial features and proportions correlated with body mass index.
Resources:
- World Health Organization. (2000). Obesity: Preventing and managing the global epidemic (WHO Technical Report Series No. 894). https://apps.who.int/iris/handle/10665/42330
- World Health Organization. (2005). The SuRF Report 2: The Surveillance of Risk Factors Report Series. World Health Organization. p. 22.https://iris.who.int/handle/10665/43190
Accessing the results
Call getMeasurementResults()
to retrieve final metrics from the most recently completed measurement. If no measurement has finished successfully yet, a null value will be returned. Below is a summary of the returned structure:
class MeasurementResults {
double heart_rate_bpm; // Heart rate, rounded to 1 BPM
double? hrv_sdnn_ms; // HRV, SDNN metric, rounded to 1 ms
double? hrv_lnrmssd_ms; // HRV, lnRMSSD metric, rounded to 0.1 ms
double? stress_index; // Stress Index, rounded to 0.1
double? parasympathetic_activity; // Parasympathetic activity, rounded to 1%
double? breathing_rate_bpm; // Breathing rate, rounded to 1 BPM
double? systolic_blood_pressure_mmhg; // Systolic blood pressure, rounded to 1 mmHg
double? diastolic_blood_pressure_mmhg; // Diastolic blood pressure, rounded to 1 mmHg
double? cardiac_workload_mmhg_per_sec; // Cardiac workload, rounded to 1 mmHg/s
double? age_years; // Estimated age, rounded to 1 year
double? bmi_kg_per_m2; // Estimated BMI, rounded to 0.01
BmiCategory? bmi_Category; // Estimated BMI category
List<Heartbeat?> heartbeats; // List of detected heartbeats
double average_signal_quality; // Average signal quality metric
}
class Heartbeat {
double start_location_sec; // exact start time in seconds
double end_location_sec; // exact end time in seconds
double duration_ms; // heartbeat duration, rounded to 1 ms
}
enum BmiCategory {
underweightSevere,
underweightModerate,
underweightMild,
normal,
overweight,
obeseClassI,
obeseClassII,
obeseClassIII,
}
var results = await ShenaiSDK.getMeasurementResults();
Additional outputs
Some additional outputs are provided, which may be used to better instruct the user about how the measurement process works. Note that the outputs will only be available after a successful measurement.
rPPG signal
You can access the final rPPG signal from the measurement by calling the getFullPpgSignal()
method:
var ppgSignal = await ShenaiSDK.getFullPpgSignal();
The signal will be returned as a list of floating point values, where each value represents the intensity of the signal at a given point in time. The signal is sampled at the camera frame rate, which is usually 30 FPS.
Facial regions visualizations
You can access an image of the region of the face which was used to extract the rPPG signal, as well as the signal intensity map.
var faceImage = await ShenaiSDK.getFaceTexturePng();
var signalImage = await ShenaiSDK.getSignalQualityMapPng();
The images will be returned as PNG-encoded byte arrays which you can decode and display as you wish, for example along with explaining the measurement results.
The facial texture image may be personally identifiable, so you should not save/upload it without permission from the user. No personally identifiable data leaves the SDK by itself as all processing is done locally on the device.