Objective: Recent research indicates that facial epidermis color varies with the rhythm of heat beats. It can be captured by consumer-level cameras and, astonishingly, be adopted to estimate heart rate (HR). The HR estimated remains not as precise as required in a practical environment where illumination interference, facial expressions, or motion artifacts are involved, although numerous methods have been proposed in the last few years. A novel algorithm is proposed to make non-contact HR estimation technique more robust. Approach: First, the face of the subject is detected and tracked to follow the head movement. The facial region then falls into several blocks, and the chrominance feature of each block is extracted to establish a raw HR sub-signal. Self-adaptive signal separation is performed to separate the noiseless HR sub-signals from raw sub-signals. On that basis, the noiseless sub-signals full of HR information are selected using a weight-based scheme to establish the holistic HR signal, from which the average HR is computed adopting wavelet transform and data filtering. Main results: Forty subjects took part in our experiments, whose facial videos were recorded by a normal webcam with the frame rate of 30 fps under ambient lighting conditions. The average HR estimated by our method correlates strongly with ground truth measurements, as indicated in experimental results measured in a static scenario with the Pearson correlation r = 0.980 and a dynamic scenario with the Pearson correlation r = 0.897. In addition, our method, compared to the newest method, decreases the error rate by 38.63% and increases the Pearson correlation by 15.59%. Significance: This work proposes a robust method for non-contact HR measurement in a realistic environment. Results of comparative experiments indicate that our method out-performs state-of-the-art non-contact HR estimation methods in realistic environments.