## 2 Background
### PyVHR
\begin{table}
\begin{tabular}{c c c} \hline \hline
**Name of Subprocess** & **Description in _PyVHR_ Documentation [3]** & **Implementation in _PyVHR_ Demo Workbook [2]** \\ \hline Skin extraction & “The goal of this first step is to perform a face skin segmentation in order to extract PPG-related areas; the latter are subsequently collected in either a single patch (holistic approach) or a bunch of “sparse” patches covering the whole face (patch-wise approach).” & A set of 100 equidistant patches are selected across the face. Alternatively, code is provided for the selection of 6 patches: 3 on the forehead, 1 on the nose, and 1 on each cheek. \\ \hline RGB signal processing & “The patches, either one or more, are coherently tracked and are used to compute the average colour intensities along overlapping windows, thus providing multiple time-varying RGB signals for each temporal window” & The RGB signals are obtained by taking the mean value of each patch across cascading 8-s windows, with a stride of 1-s. \\ \hline Pre-filtering & “Optionally, the raw RGB traces are pre-processed via canonical filtering, normalization or de-trending; the outcome signals provide the inputs to any subsequent rPPG method.” & Pixel values below 0 or above 230 are removed from patches. Then a sixth-order Butterworth bandpass filter with a passband between 0.75 Hz and 4 Hz is applied. \\ \hline BVP extraction & “The rPPG method(s) at hand is applied to the time-windowed signals, thus producing a collection of heart rate pulse signals (BVP estimates), one for each patch.” & The CHROM method is applied [31]. \\ \hline Post-filtering & “The pulse signals are optionally passed through a narrow-band filter in order to remove unwanted out-of-band frequency components.” & A sixth-order Butterworth bandpass filter with a passband between 0.75 Hz and 4 Hz is applied. \\ \hline BPM estimation & “A BPM estimate is eventually obtained through simple statistics relying on the apical points of the BVP power spectral densities.” & The power spectral density (PSD) of each window of each patch of the filtered BVP estimate is calculated. Then, the median of the PSD peak frequency for all patches for that window is converted into a BPM value. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Description of each sub-process used to estimate heart rate from a video signal within the _PyVHR_ pipeline. Note that the demo workbook implementation was used to obtain heart rate data in the study described later in this manuscript, with the 6-patch approach rather than the 100-patch approach for skin extraction. tone category in their dataset performance was poor, with an average error of 13.58 BPM compared to all other skin tones for which the average error was between 2.14 BPM and 4.09 BPM [34]. There are also many other interpersonal factors which still have an unclear influence on performance, such as age and wearing make-up. In a study assessing responses to screen-based media with a large sample of participants, many of these influencing factors are likely to be relevant. Illumination has also been investigated. [PERSON] et al. suggested that a drop from a medium to dark condition causes a drop in average error from 1.04 BPM to 3.60 BPM for their best-performing algorithm--a CHROM-based solution [39]. Moreover, [PERSON] et al. explored how unstable room illumination may influence CHROM performance, finding an average error of 1.04 BPM under stable lighting compared to an average error of 2.45 BPM under varying lighting [40]. [PERSON] et al. suggested that a bright and stable light greater than 500 lux should be cast on the subject's face, when studying the influence of illumination on the measurement of heart rate variability from a video signal [41]. Moreover, they suggest that subjects should remain static while measurements are being taken. [PERSON] et al.