Detecting heart rate with Kinect
When the latest Kinect sensor was unveiled more than a year ago at Build 2014, demos showed how it could determine a user’s heart rate without attaching sensors or wires to his or her body. But that was old news to regular followers of D Goins Insperience, the personal blog of Dwight Goins, a Microsoft Kinect for Windows MVP and founder of Dwight Goins Inc. As Goins revealed in February 2014, he had already devised his own application for detecting a person’s heart rate with the preview version of the latest Kinect sensor.
Goins’ app, which he has subsequently refined, takes advantage of three of the latest sensor’s key features: its time-of-flight infrared data stream, its high-definition-camera color data stream, and face tracking. The infrared stream returns an array of infrared (IR) intensities from zero to 65,536, the color stream returns RGB data pixels, and the face tracking provides real-time location and positioning of a person’s face. He thus knew how to capture a facial image, measure its infrared intensity, and gage the RGB color brightness level in its every pixel. The following video shows Goins' Kinect v2 heart rate detector in action.
Goins’ app uses a blind source separation algorithm on the four sources of light—RGB (red, green, and blue) and IR—to obtain an estimated separation of components that contain a hidden frequency, the blood pulse signal. These color data streams from the Kinect sensor enable Goins’ app to calculate the changes in color brightness at 30 frames per second. And since the amount of color intensity that the face radiates changes when the heart contracts—as more arterial blood is pushed through the facial capillaries—the IR and RGB values will change slightly over time as the heart contracts and relaxes. The frequency of these changes corresponds to the frequency of cardiac contractions—in other words, the pulse. The pulse is then calculated mathematically by separating the pulse frequency from other noise and color signals in the face—providing the user with a calculation of the heart rate.
Want to try it out? Take a look at Goins’ community-release code.
The Kinect for Windows Team