Recently MIT CSAIL researchers invented a way to tune into the small changes in a video that are missed by human perception. Now the same team has a new way of seeing the human pulse by detecting the movements it induces in the head.
The idea is simple enough - point a camera at a person's face and detect the rhythmic movements caused by the regular flow of blood. The problem is difficult because the movements are so small. It isn't even entirely clear that would be possible to detect them without making a lot of effort to isolate the head from other influences.
Ballistocardiography, for example, is used to measure the vibration caused by the heart pumping large quantities of blood through the whole body, but in most arrangements for making the measurement the subject has to lie down, keep still, hold their breath and it is still difficult to avoid noise that swamps the signal. In this case all that is necessary is to point a video camera at the subject.
The algorithm is based on the use of some well known image processing techniques. First face recognition is used to locate the subjects face and then between 500 to 1000 points identifiable by easy to compute landmarks in the face - nose, lips etc. The eyes are not included in the sample because of the problem of blinking. Next a bandpass filter is applied which removes vibrations in outside of the range of a normal heart beat. Finally principle components analysis is used to find the directions of largest movements and the signal is projected onto this to provide a pulse rate and a measurement of pulse intervals.
The video not only shows you the result of "magnifying" the head movement, but why the head moves at all:
In tests the method gave results that are within a few beats per minute as measured by an ECG. At the moment the system is a proof of concept, but it is clear that it could be used to replace wired heart rate monitors.
More intriguingly, the team suggests that it might be possible to detect some of the heart problems that ballistocardiography and other more complex measurement techniques do. The technique has already proved that it can provide a measurement of the variability in the time of the pulse, which is an indicator of some types of heart problem - but it could do more. For example, by detecting an asymmetrical vibration it could suggest that a obstruction in the blood flow is located on one side. Similarly it might be possible to work out the volume of blood pumped and other diagnostic measures.
An updated version of the Google Dart SDK brings performance of the Dart VM to that of Node.js. It is claimed new version is twice as fast as its predecessor for asynchronous Dart code combined with s [ ... ]