Ballistocardiography (BCG) is a non-invasive technique of measuring body motion generated by cardiac contractions during each cardiac cycle. In recent times BCG has caught the attention of many researchers. Several studies have attempted to leverage BCG as a non-invasive and unobtrusive method to obtain heart rate of a subject. Due to the noisy nature of BCG, most of them attempt to compute heart rate averaged over 30 second epochs. While average heart rate is an important parameter, it is not sufficient to obtain several crucial fine-grained parameters derived in time and frequency domain, such as Heart Rate Variability (HRV) which is extensively used for a deeper analysis of physiological state of the cardiovascular and autonomic nervous system. In this paper we propose a novel algorithm to detect individual heart beats from BCG data with a higher detection rate as well as accuracy better than previously proposed techniques. The proposed algorithm is able to achieve an accuracy of 93.81% for individual heart beats with a detection rate of 92.59%, and an accuracy of 98.39% for 30 second epochs with a detection rate of 99.46% compared to a standard ECG machine.


Long-term daily cardiac data acquisition finds use in several applications -- home-based remote patient monitoring, wellness tracking, early deterioration warning systems among others. The efficacy of these systems is determined as well as limited by the detection rate and the accuracy of cardiac measurements. A system with high detection rate and accuracy can enable advanced and complex use cases including physical recovery analysis based on detecting parasympathetic nervous system dominance through Heart Rate Variability (HRV) parameters [1], arrhythmia monitoring [2] and management and so on. HRV parameters have also been used for sleep stage classification as an approximation to polysomnography [3], and are also important to track high-risk patients. This work is partly funded by the Department of Biotechnology, Ministry of Science and Technology, Government of India under the BIRAC-BIG Scheme.

Electrocardiography (ECG) is the golden standard for any sort of cardiac measurement and works on the principle of measuring the electrical activity in the cardiovascular system. This, however, require external electrodes to be physically connected to a subject at suitable locations over the skin, making them unsuitable for long-term continuous data acquisition. Ballistic forces resulting from the heart beat can be measured with the phenomenon of ballistocardiography (BCG). The first known work published on BCG dates back to 1877 by Gordon [4], seeding the idea of monitoring and measuring cardiac activity. However, with the invention of the first practical electrocardiogram (ECG) in 1903 by Willem Einthoven [5], for which he later won the Nobel Prize in Medicine, BCG failed to compete with it in a clinical setting. Although BCG lost relevance for most of the 20th century, its use has seen a revived interest by several researchers in recent times. The ability to measure the cardiac activity of a subject without electrodes or even direct contact in some cases makes BCG an attractive proposition for long-term continuous cardiac data acquisition and monitoring.

Even with its advantages, practical adoption of BCG has been hindered thus far owing to two major challenges -- (a) along with the ballistic forces from the cardiovascular system, it also captures other forces produced by the human body such as movements, respiration and snoring which affect the detection rate as well as the accuracy of cardiac measurements, and, (b) the measurements can vary with the setup and placement of the sensors, and body postures. In this paper, we propose a novel algorithm that tackles both of these challenges:

(i) we propose an unsupervised clustering algorithm that is effectively able to isolate cardiac contractions from an unconstrained BCG signal,

(ii) improve upon the best known accuracy and detection rate for individual heart beats while being agnostic to the setup and body posture.


The cardiac contraction follows the sinus rhythm to the heart. Figure 1 shows the representation of a sinus rhythm as captured by an ECG machine. A BCG sensor, when placed under a subject’s chest, captures the ballistic forces resulting from cardiac contraction and expansion, as shown in Figure 1 -- an R peak in the ECG sinus corresponds to a J peak in the BCG signal. In the last decade alone there have been several proposals to use BCG for measuring cardiac activity. The most crucial step involved is extracting cardiac events from the raw BCG data, which is mostly vibrations captured through electronic data acquisition systems followed by suitable processing in software. While some techniques presented in previous studies simply determine the average heart rate for each 30 second epoch, others identify individual heart beats [6] - [15]. Heart rate averaged over a time period cannot yield finer granularity cardiac parameters such as heart rate variability and abnormal cardiac contractions or irregular heart beats like arrhythmia -- accurately determining the occurrence of each cardiac contraction is necessary for such applications. Brüser et al [16] reviewed several algorithms developed for processing BCG data in detail. Most of them work by detecting the largest deflection or other fiducial points in the BCG signal. The algorithms that rely on fiducial points lack robustness on general BCG data, as often dominant deflections are missing from the BCG or change their position with respect to the heart beat. In a couple of studies, a template of a single heart beat signal is used to detect subsequent beats by calculating the cross-correlation between the template and the BCG signal. In both of the methods the templates are selected manually, which makes this approach unsuitable for a fully automatic monitoring system. Although the BEAT algorithm developed in [16] shows a very high beat to beat accuracy, it was validated on subjects for 30 minutes each in a controlled environment; the subjects were made to lie still in different postures eliminating the effects of movements and artifacts. This setup is far from the real use case of tracking vitals while the subject is sleeping and free to move or lie in any intermediate posture apart from the standard ones. Moreover, the algorithm trains on the first 30 seconds of the BCG signal after every body movement. Since, there is no heart beat detection for the training period, this results in loss of detection rate with every body movement.

Another method presented in [6] is based on clustering short signal segments centered around minima and maxima of the BCG signal. However, the authors report that their algorithm was not able to find more than 49.2% of all heart beats. The algorithm presented in this paper works on a similar proposition. It is an attempt to solve for two major problems with the analysis of BCG signal: noise and standardization. Any BCG sensor sensitive enough to detect cardiac contractions from under the mattress is susceptible to background noise in the form of vibrations from nearby movement and loud sounds. Digital signal processing filters help to increase the signal to noise ratio but the benefits are marginal in most cases. Secondly, the cardiac activity representation in BCG does not follow a constant pattern even for the same subject in a long duration recording (such as an overnight recording) -- it changes with breathing patterns as well as postures. Figure 2 shows two patterns obtained for the cardiac contractions of the same subject in a single overnight recording.

Read the complete document here: