2SR user’s guide¶
This package contains a free-software implementation of IEEE Trans. on Biomedical engineering paper “A Novel Algorithm for Remote Photoplesthymograpy: Spatial Subspace Rotation”, Wang et al [wang-tbe-2015]:
@Article{wang-tbe-2015,
Author = {Wang, W., Stuijk, S. and de Haan, G},
Title = {A Novel Algorithm for Remote Photoplesthymograpy:
Spatial Subspace Rotation}
Journal = {IEEE Trans. On Biomedical Engineering},
Volume = {PP},
Number = {99},
Pages = {},
year = 2015
}
The algorithm to retrieve the pulse signal can be divided into several steps:
- Extracting skin pixels from each frame
- Compute eigenvalues and eigenvectors of the skin color correlation matrix
- Update the pulse signal at each frame using eigenvalues and eigenvectors
Extract the pulse signal from video sequence¶
To extract the pulse signal, we first need the set of skin-colored pixels
from each frame image. Hence, a skin color filter (bob.ip.skincolorfilter
)
is applied to retrieve a mask containing skin pixels.
After having applied the skin color filter, the full algorithm is applied, as described in Algorithm 1 in the paper. To get the pulse signal, do the following:
$ ./bin/ssr_pulse.py cohface
The result of this script will be the pulse signal.
The output of this step normally goes into a directory named pulse
.
Note
The execution of this script is very slow - mainly due to the face detection. You can speed it up using the gridtk (especially, if you’re at Idiap). For example:
$ ./bin/jman sub -t 3490 -- ./bin/ssr_pulse.py cohface
The number of jobs (i.e. 3490) is given by typing:
$ ./bin/ssr_pulse.py cohface --gridcount