Print

发布时间: 2017-01-25
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.20170114
2017 | Volumn 22 | Number 1




    全国第27届CACIS
学术会议专栏    




  <<上一篇 




  下一篇>> 





非合作面部晃动情况下的心率检测
expand article info 戚刚, 杨学志, 吴秀, 霍亮
合肥工业大学计算机与信息学院, 合肥 230009

摘要

目的 心率是直接反映人体健康的重要指标之一,基于视频的非接触式心率检测在医疗健康领域具有广泛的应用前景。然而,现有的基于视频的方法不适用于复杂的现实场景,主要原因是没有考虑视频中目标晃动干扰和空间尺度特征,使得血液容积脉冲信号提取不准确,检测精度不尽人意。为了克服以上缺陷,提出一种抗人脸晃动干扰的非接触式心率检测方法。 方法 本文方法主要包含3个步骤:首先,针对目标晃动干扰人脸区域选择的问题,利用判别响应图拟合检测参考图像的人脸区域及主要器官特征点,在人脸跟踪时首次引入倾斜校正思想,输出晃动干扰抑制后的人脸视频;然后,结合空间尺度的差异,采用颜色放大方法对晃动干扰抑制后的人脸视频进行时空处理,提取干净的血液容积脉冲信号;最后,考虑到小样本问题,通过傅里叶系数迭代插值的频域分析方法估计心率。 结果 在人脸静止的合作情况以及人脸晃动的非合作情况下采集视频,对心率检测结果进行定量分析,本文方法在两种情况下的准确率分别为97.84%和97.30%,与经典和最新的方法相比,合作情况准确率提升大于1%,非合作情况准确率提升大于7%,表现了出色的性能。 结论 提出了一种基于人脸视频处理的心率检测方法,通过有效分析人脸的晃动干扰和尺度特性,提取到干净的血液容积脉冲信号,提高了心率检测的精度和鲁棒性。

关键词

血液容积脉冲; 判别响应图拟合; 倾斜校正; 视频颜色放大; 心率估计

Heart rate detection for non-cooperative shaking face
expand article info Qi Gang, Yang Xuezhi, Wu Xiu, Huo Liang
School of Computer and Information, Hefei University of Technology, Hefei 230009, China
Supported by: National Natural Science Foundation of China (61175033, 61503111);National Natural Science Foundation of Anhui Province, China (1508085SMF222)

Abstract

Objective Heart rate is one of the important indicators that can directly reflect the health of the human body. Heart rate detection has been applied to many aspects of the medical field, such as physical examination, major surgery, and postoperative treatment. Heart rate detection based on face video processing has recently been performed through a noncontact manner without complex operations and sense of restraint. However, the existing methods cannot predict well in complex realistic scenes, including shaking target. If face detection in video processing is accompanied with face shaking, the facial region of interest is selected inaccurately. Such methods also disregard spatial scale features, which are significant to extract blood volume pulse (BVP) signal. The results of current methods are consequently inadequate. To this end, a new non-contact heart rate detection method based on face video processing is proposed to reduce the influence of face shake and improve precision. Method Our method consists of three major steps. First, we deal with video through a robust face detecting and tracking model to obtain a refined face video in which facial shake is eliminated. Considering that the universal Viola-Jones face detection model generates an incorrect face area when a face is tilted along consecutive frames, discriminative response map fitting is used to detect important feature points for tracking the right face area. For the first frame image, we mark 66 landmark points on the facial organ (eyes, nose, mouth, and facial shape) and four vertexes of facial rectangle. These feature points are then entered into the Kanade-Lucas-Tomasi tracking model to calculate the facial rectangle of subsequent frames. According to the oblique angle of each facial rectangle, the corresponding face image is rotated to a vertical position. Second, the modified face video is handled by a space-time processing algorithm for amplifying the video color variations to separate the spatial scale characteristics of the video and intercept the frequency range of blood volume changes. We average the chrominance of skins under the eyes as clean BVP. Finally, for the BVP signal that belongs to a small sample, frequency domain analysis and iterative Fourier coefficient interpolation are combined to estimate heart rate. Iteration is performed 1 000 times for improved accuracy. Result The proposed method is tested on two different types of face video libraries comprising still and shaking face videos. Each video library contains 60 10-second videos from 20 participants, including twelve men and eight women. We conduct a quantitative analysis for the typical method provided by Poh, the up-to-date method provided by Liu, and our method. Statistically, the overall accuracies of our method in still and shaking face videos are 97.84% and 97.30%, respectively. The accuracy is increased by more than 1% in still face videos and more than 7% in shaking face videos. Conclusion Video-based heart rate detection in complex realistic scenes is affected by facial shaking, which leads to significantly reduced accuracy. Neglecting spatial scale characteristics and the small sample affect detection performance. Hence, this study proposes a novel heart rate detection method applied to complex realistic scenes. We detect and track important facial feature points to effectively analyze the state of facial shaking and adjust the facial slope. After space-time processing for selecting a proper spatial scale, a clean BVP signal is extracted to calculate heart rate iteratively. Experimental results indicate that our method has high accuracy and preferable adaptive performance to cases involving facial shaking.

Key words

blood volume pulse (BVP); discriminative response map fitting (DRMF); skew correction; video color magnification; heart rate estimation

0 引言

近几年,视频图像处理开始涉足医疗科学领域,应用于医疗诊断、手术指导和日常健康监测等各个环节,为医学的进步提供了强大的辅助作用。心率能够反映人体的健康状况,更是判断心血管疾病最基本的生理指标之一。基于视频处理的非接触式心率检测技术就是视频图像处理在医学领域的一种典型应用,对心血管疾病的预防和术后康复治疗具有极为重要的意义[1]。传统的心率检测利用专用传感器接触人体的多个部位,操作繁杂,自动化程度不高,且测试者的身体被严格地束缚,舒适度较差,不适用于长时间的监测。而非接触式的心率检测只需处理摄像头采集的人脸视频即可自动地监测心率,既提高了便利性和舒适度,又降低了医疗成本。

光学体积描记术(PPG)是一种新型的光电检测方法,它通过光电设备照射活体组织后测量反射光强度的方式,检测微动脉、毛细血管中血液容积的变化[2]。目前,脉搏血氧仪和部分心率手表已经将PPG应用于心率检测。PPG同样适用于普通的光学摄像头,研究表明从普通摄像头拍摄的人脸视频中能够检测血液容积脉冲(BVP)信号[3-4],分析该信号的频率即可实现非接触式的心率检测。视频成像时,心脏的收缩与舒张使人脸的血液容量周期性地变化,血液吸收和皮肤反射的光强也随之改变,进而导致视频中人脸皮肤位置的颜色发生周期性变化。这种颜色变化信号对应着BVP,但它是极微弱的,无法被人眼所感知。近年的视频放大技术[5]能够对皮肤颜色进行显微,为血液容积脉冲信号的提取工作提供便利。目前的研究仍依赖于利用PPG检测视频中的血液容积变化和提取BVP信号,然而场景中的人脸晃动和噪声等干扰使非接触式心率检测的研究面临挑战。

傅明哲等人[6]最早提出利用普通网络摄像头的非接触式心率检测方法。该方法首先检测视频中每帧图像的人脸感兴趣区域(ROI),计算ROI的像素平均值,得到3个颜色踪迹;然后利用独立成分分析(ICA)将颜色踪迹分离为3个基源信号,选择第2个基源作为PPG信号;最后通过分析该信号的功率谱估计心率。然而,ICA输出的第2个基源并不总能表示PPG信号,2011年傅明哲等人[7]对此不足进行了改进。对颜色踪迹进行去趋势化处理[8],并在ICA之后,选择具有最高功率谱尖峰的基源信号作为PPG信号。刘祎等人[9]最近提出了一种利用小波变换滤波的心率测量方法。该方法先将视频色彩空间转换为CIE LUV,在U空间下计算每帧的ROI像素平均值,提取脉搏原始信号;然后对该原始信号进行小波变换滤波,获得0.52 Hz频率范围内的BVP信号;最后通过能量谱估计心率。尽管这些方法都能相对准确地估计心率,但要求测试者处于合作情况,视频源中的人脸需保持静止。而在人脸晃动的非合作情况下,这些方法很难提取干净的BVP信号,包含多余的噪声干扰,准确率明显下降。本文提出了一种基于人脸视频处理的抗人脸晃动干扰的心率检测方法,通过特征点检测和结合倾斜校正的人脸跟踪削弱人脸晃动的干扰,然后合理选择反映心跳的空间尺度特征和频率范围,提取干净的BVP信号,最后进行迭代的心率估计。本文对心率检测的操作过程进行描述,并通过多组实验验证本文方法的性能。

1 心率检测方法

本文心率检测方法以人脸视频处理为基础抑制视频中人脸晃动和噪声的干扰,从而提取干净BVP信号用于心率估计,心率检测的流程框图如图 1所示。本文方法包括3个核心的步骤:1) 人脸检测与跟踪;2) 视频颜色放大;3) 迭代的心率估计。

图 1 心率检测流程框图
Fig. 1 Heart rate detection workflow

1.1 人脸检测与跟踪

为了消除视频背景信号和人脸晃动的干扰,对采集的视频进行人脸ROI的检测和跟踪,为后续分析提供干净的脸部视频。先针对第1帧图像,利用Viola-Jones人脸检测器[10]和判别响应图拟合(DRMF)方法[11]分别检测人脸区域坐标和主要器官特征点;然后通过Kanade-Lucas-Tomasi (KLT)技术[12]对视频序列中的人脸进行跟踪。人体不由自主地晃动会导致视频中脸部发生倾斜,于是本文方法对KLT跟踪过程进行改进,在跟踪特征点的同时计算脸部倾斜的角度并旋转人脸图像,实现脸部轻微倾斜的校正。

1.1.1 人脸及特征点检测

原始的基于视频处理的心率检测方法仅通过人脸检测器逐帧检测的方式获得人脸序列。这种方式操作简单,但是当测试者调整或着倾斜头部,甚至闭上眼睛时,易发生误检和漏检,鲁棒性较差,并且比较耗时。

为了解决上述问题,本文方法将输入视频的第1帧作为参考图像,先通过OpenCV中的Viola-Jones人脸检测器检测出矩形的人脸区域,获得矩形框4个顶点F1的坐标。然后利用鲁棒的判别响应图拟合(DRMF)方法[11]识别出人脸局部关键器官的位置,包括眉毛、眼睛、鼻子、嘴巴和脸颊部位,并标记出66个面部特征点D1,用于后续的点跟踪处理。DRMF是在约束局部模型(CLMs)下的基于判别回归的新方法[13],它在非刚性物体的拟合与跟踪方面具有优越的性能,对于人脸拟合,优势更为突出。此外,DRMF方法具有实时计算的能力,可以准确而快速地提供人脸跟踪所需要的特征点。人脸检测和拟合的结果如图 1中人脸区域检测与跟踪步骤的顶图所示。

1.1.2 跟踪与倾斜校正

傅明哲[6-7]和刘祎[9]只对视频的所有序列进行人脸检测,没有跟踪处理。对于心率检测,这种处理方式存在两个主要的缺陷:1) 当人脸保持静止时,前后帧被检测出的矩形框可能轻微地偏移;2) 当人脸发生旋转等刚性运动时,易出现检测不到人脸区域或检测的区域没有对应人脸位置的情况。

在KLT框架下跟踪DRMF方法检测的特征点,计算人脸特征点随时间的位移变化,通过矩阵变换更加准确地获取人脸矩形框,有效地克服了上述的缺陷。首先,用第1帧图像及其对应的特征点初始化跟踪过程;然后,对第$ i $($ i $=2, 3, 4…)帧图像,利用KLT算法跟踪特征点的位置,记为$ {\mathit{\boldsymbol{D}}_i} = {\rm{ }}\left[{{\mathit{\boldsymbol{d}}_1}\left( i \right), {\rm{ }}{\mathit{\boldsymbol{d}}_2}\left( i \right), \ldots, {\rm{ }}{\mathit{\boldsymbol{d}}_m}\left( i \right)} \right] $。其中$m $是特征点的数目,取值范围为166;$ {d_m}\left( i \right) $是一个向量,表示第$ i $帧图像第$m $个特征点的坐标。

至此,相邻两帧图像的特征点之间存在一个近似的2维仿射变换,即$ {\mathit{\boldsymbol{D}}_i} = {\mathit{\boldsymbol{T}}_i}{\mathit{\boldsymbol{D}}_{i-1}} $,其中$ {\mathit{\boldsymbol{T}}_i} $是变换矩阵。本文用MLESAC算法估计变换矩阵$ {\mathit{\boldsymbol{T}}_i} $并作用于前一帧人脸边框,更新边框的四个顶点:$ {\mathit{\boldsymbol{F}}_i} = {\mathit{\boldsymbol{T}}_i}{\mathit{\boldsymbol{F}}_{i-1}} $,其中$ {\mathit{\boldsymbol{F}}_i} = \left[{{\mathit{\boldsymbol{f}}_1}\left( i \right), {\rm{ }}{\mathit{\boldsymbol{f}}_2}\left( i \right), {\rm{ }}{\mathit{\boldsymbol{f}}_3}\left( i \right), \mathit{\boldsymbol{ }}{\mathit{\boldsymbol{f}}_4}\left( i \right)} \right] $,是一个1维矩阵,$ {\mathit{\boldsymbol{f}}_1}\left( i \right) \sim {\mathit{\boldsymbol{f}}_4}\left( i \right) $分别表示第$ i $帧图像人脸边框的第14个顶点坐标。

实际上,从参考图像中检测出的人脸矩形框是垂直的正方形,其他帧图像中基于2维仿射变换计算出的人脸边框虽然存在细微的大小差异但是均非常近似于正方形,而且这些边框的倾斜与人脸的倾斜保持同步。尽管已经检测到倾斜的人脸区域,但是不进行倾斜校正就直接裁剪人脸区域的方式是不可取的,会造成:1) 每帧人脸图像的倾斜程度和形状各不相同,前后人脸皮肤的位置存在明显的变化,而且组合成的视频剧烈抖动,对后续空间处理的干扰很大;2) 图像边缘存在难以去除的锯齿。所以应该依据人脸区域的倾斜角度和方向,先将人脸区域旋转至垂直方向,再按照参考图像中垂直正方形边框的大小裁剪出前后规则的人脸图像,实现人脸的倾斜校正。

倾斜校正首先需要计算倾斜角度,借助平面几何演示人脸逆时针倾斜时倾斜角度的计算原理,如图 2所示。这里人脸边框近似为正方形,其中正方形ABCD表示实际检测的人脸边框,正方形ABCD′表示校正后的人脸边框,O为旋转中心。当人脸逆时针倾斜时,边框倾斜角为∠AEF,因为∠OAD=∠OAD′=45°,∠AFE和∠AFO是对顶角,所以倾斜角∠AEF和旋转角∠AOA′相等,记为$ \theta $。跟踪过程已计算出ABCD 4个顶点的坐标,分别为$ {\mathit{\boldsymbol{f}}_1} $$ {\mathit{\boldsymbol{f}}_2} $$ {\mathit{\boldsymbol{f}}_3} $$ {\mathit{\boldsymbol{f}}_4} $,倾斜角度和旋转角度$ \theta $可以通过计算主对角线ACX轴方向的夹角∠OFE间接获得,即

$ \begin{array}{*{20}{c}} {\theta = \angle OFE-{{45}^ \circ } = }\\ {{\rm{arctan}}\left( k \right) \times 180/{\rm{ \mathsf{ π} }}-{{45}^ \circ } = }\\ {{\rm{arctan}}(\frac{{{\mathit{\boldsymbol{f}}_3} \cdot y-{\mathit{\boldsymbol{f}}_1} \cdot y}}{{{\mathit{\boldsymbol{f}}_3} \cdot x - {\mathit{\boldsymbol{f}}_1} \cdot x}}) \times 180/{\rm{ \mathsf{ π} }} - {{45}^ \circ }} \end{array} $ (1)

式中,$ k $表示AC的斜率,${\mathit{\boldsymbol{f}}_i} \cdot x $${\mathit{\boldsymbol{f}}_i} \cdot y $分别表示第$ i $个顶点的横坐标和纵坐标。由于反正切以弧度为单位,公式将弧度转换成了角度。

图 2 人脸逆时针倾斜的几何示意图
Fig. 2 The geometry of facial counter-clockwise tilt

同理,当人脸顺时针倾斜时,$ \theta $的计算公式与式(1)一致,但结果为负值。于是,利用$ \theta $的符号表示倾斜的方向,逆时针为正,顺时针为负。旋转中心O的坐标依据对角线ACBD的交点建立二元一次方程组进行计算,这里不做详细介绍。

然后,以O为中心,根据$ \theta $大小和符号对人脸图像进行与倾斜反向的旋转,当$ \theta $大于零时,顺时针旋转$ \theta $|,当$ \theta $小于零时,逆时针旋转|$ \theta $,实现自适应地倾斜校正。校正过程如图 3所示。图 3第1行中红色边框是实际检测出的倾斜边框,黑点是旋转中心O。为了在旋转之后,能够以O为中心、以参考图像中的人脸边框边长$ l $为当前帧的边框边长完整地裁剪出前后尺寸相同的人脸图像,预裁剪一块尺寸较大且中心为O的垂直正方形人脸扩展图像。图 3第1行中黄色边框标示了预裁剪的边界,第2行表示裁剪出的扩展图像。黄色边框的边长$ a $$ \theta $大小的关系为

$ a = \left\{ {\begin{array}{*{20}{l}} {l + 10}&{\left| \theta \right| < {1^ \circ }}\\ {l + 40}&{{1^ \circ } \le \left| \theta \right| < {5^ \circ }}\\ {\min \left( {OL, OT, OR, OB} \right)}&{\left| \theta \right| \ge {5^ \circ }} \end{array}} \right. $ (2)

式中,$ l $是参考图像中人脸边框的边长,$ OL、OT、OR、OB $分别表示O点到原始图像左、上、右、下边界的距离。图 3第3行示意了第2行中图像以O为旋转中心,按照$ \theta $符号指示进行顺时针和逆时针旋转|$ \theta $|的结果。最后仍以O为中心,以$ l $为边长,设置垂直正方形的边框(见图 3第3行红色边框)并进行裁剪获得图 3第4行所示的校正后人脸图像。

图 3 跟踪过程中的倾斜校正
Fig. 3 Tilt correction during tracking ((a) counter-clockwise; (b) clockwise)

对图像序列重复以上跟踪和倾斜校正操作可输出一段稳定的人脸视频,用于后续的视频时空处理。为了避免眨眼对血液容积脉搏(BVP)信号的破坏,眼睛以下的矩形脸颊区域被标记为脸颊ROI,作为时空处理之后计算血液容积脉冲波的像素选择区域。矩形脸颊ROI的标记规则是:以图像中垂线为左右对称轴,眼部12个特征点中最低点的位置为上边界,自动选取100×50像素的矩形,如图 3第4行中红框标记。

1.2 视频颜色放大

1.1节介绍了本文方法如何解决视频背景和人脸刚性的晃动对心率检测的干扰,本节的重点在于如何提取干净的血液容积脉冲BVP信号用于估计心率。由于噪声的淹没和图像传感器的限制,直接从人脸视频中提炼干净的BVP信号是极为困难的。为了克服这一困难,这里借助欧拉视角视频放大的思想,综合考虑尺度特征和频率特性,从空间和时间两个角度处理人脸视频,以全局的处理方式剔除视频中的噪声,放大脸部皮肤颜色随时间的微弱变化[5, 14],间接地获取BVP信号。如图 1,首先在空间上,利用多尺度的高斯金字塔将视频序列分解为不同空间频率的子带序列;然后在时间上,对子带序列进行滤波、放大和重构操作,获得放大后的人脸颜色变化序列;最后,针对该图像序列,以脸颊ROI的空间均值作为血液容积脉冲波,用于后续的心率估计。

1.2.1 空间分解

为了使图像的亮度信息和色度信息分离,便于亮度和色度的单独处理,将人脸视频的色彩空间由RGB转换为YIQ。YIQ是NTSC (national television standards committee)彩色电视系统使用的色彩空间,其中Y通道存储图像的亮度信息,I和Q通道存储图像的色度信息。I表示从橙色到青色的颜色变化,Q表示从紫色到黄绿色的颜色变化。RGB和YIQ的转换关系为

$ \left[{\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\rm{Y}}\\ {\rm{I}} \end{array}}\\ {\rm{Q}} \end{array}} \right] = \left[{\begin{array}{*{20}{c}} {0.299}&{0.587}&{0.114}\\ {0.596}&{-0.274}&{-0.322}\\ {0.211}&{-0.523}&{0.312} \end{array}} \right]\left[{\begin{array}{*{20}{c}} {\rm{R}}\\ {\rm{G}}\\ {\rm{B}} \end{array}} \right] $ (3)

高斯金字塔是一种多尺度的图像空间分解方法,它对图像进行连续地高斯平滑和降采样,得到多个尺度的子带集合。其中,金字塔的顶层包含更多的图像轮廓信息,底层包含更多的图像细节信息。由于皮肤的血液容积变化信息位于金字塔的中间层,因此对视频的每帧图像都进行指定层数的高斯金字塔分解,即可获得包含BVP的子带序列。本文方法指定金字塔的分解层数为

$ L = round\left( {\frac{{{\rm{lo}}{{\rm{g}}_2}\left( {{\rm{min}}\left( {h, w} \right)} \right)}}{2}} \right) $ (4)

式中,$ h $$ w $是原始图像的高和宽,round表示四舍五入。空间分解的步骤如下:

1) 输入第$ j $($ j $=1, 2, 3…)帧图像作为第0层,计算分解层数L

2) 对前一层图像先进行高斯滤波,经降采样,图像尺寸变为原来的1/4,存为下一层图像,层号加1;

3) 将步骤2)迭代执行L-1次,得到第L层子带图像;

4) $ j{\rm{ = }}j{\rm{ + 1}} $,循环执行以上步骤,直到处理完最后一帧图像,跳至下一步;

5) 将每帧的第L层子带图像按时间顺序组合成子带序列,空间分解结束。

1.2.2 颜色放大与提取

沿着时间维度,空间分解获得的子带序列其实是人脸多个位置的BVP集合。但是其中BVP信号十分微弱,而且掺杂了各种低频和高频噪声。噪声强度较大,淹没了皮肤血液容积的变化。对子带序列进行时间带通滤波、放大和重构,能够去除噪声并获得颜色变化的BVP图像序列,实现由于心跳产生的脸部皮肤颜色变化的放大和可视化。

为了直接截取感兴趣的频段,便于后续的时频心率分析,本文方法利用理想的带通滤波器对子带序列进行时间滤波,通频带为0.832 Hz (对应心率50120 bit/m)。然后针对滤波后的子带序列,将I和Q通道的幅值分别放大100倍,Y通道的幅值变为0,使人脸的皮肤颜色变化信号能够被人眼所感知,同时运动变化信号被衰减。最后,将每一帧子带都扩展为原始人脸图像的尺寸,输出BVP图像序列。

由于波长在540577 nm范围内的黄绿光被血红蛋白吸收的较多[8],且黄绿光处于Q通道的颜色范围,因此皮肤血液容积的变化会导致Q通道发生更大的波动。于是,选定眼睛下方的脸颊ROI,只计算Q通道的空间像素平均值,提取出血液容积脉冲波B, 即

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{B}} = \left\{ {{b_s}\left| {s = 1, 2, 3 \cdots } \right.} \right\} = }\\ {\left\{ {\left( {\sum\limits_{z = 1}^M {{x_s}\left( z \right)} } \right)/M\left| {s = 1, 2, 3 \ldots } \right.} \right\}} \end{array} $ (5)

式中,$ {b_s} $是第$ s $帧图像Q通道的像素平均值,$ {x_s}\left( z \right) $表示放大后的人脸颜色变化序列中第$ s $帧脸颊ROI的第$ z $个像素值,M是脸颊ROI的像素点数目。图 4所示为从300帧(10 s)视频中提取的血液容积脉冲波形,波形的震荡反映心脏跳动时脸部血液容积的变化情况,表征了心脏跳动的规律。

图 4 血液容积脉冲波形
Fig. 4 Blood volume pulse waveform

1.3 迭代的心率估计

心率估计最常用的方法是用快速傅里叶变换(FFT)分析功率谱,最大功率对应的频率即为心率。但是,FFT在大量样本数目的前提下才能取得较高的精度,同时又增加了时间复杂度[15]。本文用一种傅里叶系数迭代插值的心率估计算法对BVP信号进行分析,实现了算法精度与复杂度之间的均衡。

迭代的心率估计算法主要包含两个步骤:

1) 计算样本数N=300的BVP信号B的功率谱$ {P_{{\rm{bvp}}}} $和功率最大值所对应的位置T,即

$ \begin{array}{*{20}{c}} {{P_{{\rm{bvp}}}}\left( t \right) = {{\left| {FFT\left( \mathit{\boldsymbol{B}} \right)} \right|}^2}}\\ {T = {\rm{arg}}\;\begin{array}{*{20}{c}} {{\rm{max}}}\\ t \end{array}\left\{ {{P_{{\rm{bvp}}}}(t)} \right\}}\\ {t = 0, 1, \ldots, N-1} \end{array} $ (6)

2) 针对功率谱,执行迭代的傅里叶系数插值算法(基于文献[16])估计心率,迭代插值过程如下:

(1) 初始化傅里叶系数起始偏差$ {e_0} $=0和迭代次数Q=50。统计发现,迭代50次后傅里叶系数偏差基本保持稳定。

(2) 循环迭代:

$ \begin{array}{l} {\rm{for}}(k = 1;k < = Q;k + + )\\ \;\;\;\left\{ {} \right.\\ \;\;\;\;\;{S_d} = \sum\limits_{n = 0}^{N-1} {B(n)} {e^{\frac{{-j2{\rm{\pi }}n\left( {T + {e_{k-1}} + d} \right)}}{N}}}\\ \;\;\;\;\;{e_k} = {e_{k1}} + r\left( {{e_{k1}}} \right)\\ \left. {\;\;\;\;} \right\} \end{array} $ (7)

式中,$ d $=±0.5, $ {e_k} $为迭代$ k $次后的傅里叶系数偏差,$ r\left( {{e_{k-1}}} \right) = 0.5 \times \frac{{\left| {{S_{ + 0.5}}} \right|-\left| {{S_{-0.5}}} \right|}}{{\left| {{S_{ + 0.5}}} \right| + \left| {{S_{-0.5}}} \right|}} $

(3) 计算最终的心率值

$ H{R_{{\rm{bvp}}}} = 60\frac{{T + {e_Q}}}{N}{f_{\rm{s}}} $ (8)

式中,$ {f_{\rm{s}}} $为视频采样率,N为样本数。

迭代心率估计算法的第1)步选取小样本的信号,降低了时间复杂度,第2)步通过迭代地插值提高了算法的精度。

2 实验与结果

2.1 实验设备及数据

本文方法在笔记本电脑的上方固定一个普通的网络摄像头(罗技C525),用Matlab控制摄像头进行人体上半身视频的采集。要求测试者目视摄像头并与之水平相距约0.5 m,同时确保人脸完全处于视频画面以内,实验设备如图 5所示。采集的视频以640×480像素的分辨率,在RGB彩色空间下保存成AVI格式。

图 5 心率检测设备示意图
Fig. 5 Heart rate detection equipment

20名成年人参与了本次准确性测试,包括12名男性和8名女性,在每次测试中,每位测试者都进行了多次视频采集和心率检测。测试者佩戴“迈欧”接触式心率手表,在拍摄视频的同时测量真实心率值作为参考。

2.2 实验结果

复现了两种非接触式心率检测方法:傅明哲[7]和刘祎[9],分别利用这两种方法和本文方法测试采集到的视频,将3种方法的检测结果进行对比。综合先前论文介绍的性能评价,采用5种指标对心率检测方法进行多方面地定量评价。第1个指标是平均误差,记作Me,其中误差表示心率参考值减去非接触式心率测量值;第2个指标是误差的标准差,记作SDe;第3个指标是误差的均方根误差,记作RMSE;第4个指标是心率结果的平均准确率$ H{R_{{\rm{ac}}}} $,即

$ H{R_{{\rm{ac}}}} = 1-\frac{1}{N}\sum\limits_{i = 1}^N {\frac{{H{R_{{\rm{remote}}}}-H{R_{{\rm{true}}}}}}{{H{R_{{\rm{true}}}}}}} $ (9)

式中,N表示视频的数目,HRremote表示从视频中检测的心率,HRtrue表示通过心率手表得到的参考值。第5个指标是HRremoteHRtrue之间的皮尔森相关系数$ r $,其值越接近1表示正相关性越强。

为了充分验证本文方法的性能,首先在测试者处于脸部静止的合作情况和脸部晃动的非合作情况下分别进行视频心率检测,然后在不同视频时长、不同采样率和不同光照条件下分别验证方法的稳定性,最后进行连续10 min的心率实验。

2.2.1 人脸静止与晃动时心率检测性能比较

为了充分比较,将本文方法分为不含倾斜校正和包含倾斜校正两个版本,分别与傅明哲[7]和刘祎[9]对比。此次实验在视频时间为10 s,采样率为30帧/s,室内稳定白炽灯光照的限定条件下进行。

在测试者保持脸部静止的情况下,心率检测性能的记录如表 1所示。比较发现:4种方法的Me均小于2,$ H{R_{{\rm{ac}}}} $均大于96%,相关系数$ r $均大于0.95。但是,本文方法的指标存在优势,首先无论是否包含倾斜校正,本文方法均比傅明哲[7]和刘祎[9]两种方法更加精确;其次本文方法的校正版本相比未校正版本也有小幅的性能提升。实验数据表明在人脸静止的情况下,4种方法都表现出很好的性能,但是本文提出的心率检测方法具有更优越的性能。人脸静止时,时空处理是本文方法存在优势的主要原因。在从人脸区域视频中分析和提取BVP信号的步骤上,本文方法考虑了空间尺度特征,结合金字塔分解和理想带通滤波时空处理人脸视频,合理选择反映心跳的图像尺度和频率范围,去除了在幅度或频率上与BVP信号不同的信号干扰,使得获取的BVP信号更加准确。而不论是傅明哲[7]使用的独立成分分析,还是刘祎[9]使用的小波滤波,它们都只是从时间维度上对人脸区域中的1维时域信号进行处理,忽视了视频的空间尺度特征,提取的BVP信号不干净。由于实验中测试者的脸部不可能绝对静止,倾斜校正仍然发挥着微弱的作用。

表 1 人脸静止情况下的心率检测性能比较
Table 1 The performances of heart rate detection in still face videos

下载CSV
方法 Me/(bit/m) SDe RMSE $ H{R_{{\rm{ac}}}} $/% $ r $
傅明哲[7] 1.679 6 3.436 0 3.371 7 96.10 0.961 3
刘祎[9] 1.635 2 3.137 4 3.082 4 96.23 0.963 7
本文方法(未校正) 1.136 0 2.008 3 1.922 0 97.62 0.986 9
本文方法(校正) 0.688 6 1.606 3 1.487 2 97.84 0.987 6

在测试者脸部发生晃动的情况下,心率检测性能的记录如表 2所示。对比发现:傅明哲[7]和刘祎[9]两种方法的性能明显偏低,Me大于5,SDe和均方根误差(RMSE)均大于10,与参考心率的相关性显著减小;本文方法不含校正的版本相比经典方法在性能上虽然有所提升,但是Me大于4,SDe和RMSE均大于6,准确率不尽如人意;本文方法含校正的版本在性能上提升明显,MeSDe和RMSE均小于3,特别是准确率$ H{R_{{\rm{ac}}}} $依然大于96%,且相关系数$ r $大于0.95,远超越了傅明哲[7]和刘祎[9]两种方法。这些数据表明在人脸晃动的情况下,本文的心率检测方法能有效地削弱人脸晃动的干扰,保持了较高的准确率,具有良好的性能。本文方法在人脸区域检测与跟踪部分实现了人脸的倾斜校正:首先在DRMF特征点检测和KLT跟踪框架相结合的基础上,利用2维仿射变换计算出与人脸倾斜角近似相同的人脸边框,然后通过计算该边框的倾斜角度和方向标记人脸的倾斜状态,并据此对已检测到的人脸区域进行旋转校正,获得与参考人脸不仅在尺寸上相同而且在ROI上的皮肤位置信息也近似一致的人脸图像序列,从而削弱了人脸晃动的干扰。傅明哲[7]和刘祎[9]两种方法在人脸区域检测部分采取了对每帧图像分别进行常规人脸检测的方式计算人脸区域,没有跟踪过程,也没有进行倾斜校正,导致前后ROI对应的皮肤位置信息存在较大差异。此外,本文方法利用空间和时间多维处理方式提取BVP信号,针对BVP的小样本问题迭代地估计心率;而傅明哲[7]和刘祎[9]在提取BVP信号的过程中仅从时间维度上处理人脸区域中的1维信号,在心率估计部分使用在大样本条件下才较为准确的FFT方法。实验中,本文方法包含倾斜校正的版本相比不含倾斜校正的版本,在准确率提升的幅度上存在明显优势。所以在人脸晃动情况下,倾斜校正是本文方法准确率高的主要原因,而时空处理和迭代的心率估计对准确率的提高发挥了次要的作用。

表 2 人脸晃动情况下的心率检测性能比较
Table 2 The performances of heart rate detection in shaking face videos

下载CSV
方法 Me/(bit/m) SDe RMSE $ H{R_{{\rm{ac}}}} $/% $ r $
傅明哲[7] 6.846 3 13.965 2 13.704 1 89.81 0.685 9
刘祎[9] 7.290 7 13.587 2 13.333 2 90.18 0.761 5
本文方法(未校正) 4.007 7 6.747 6 6.635 9 92.43 0.886 9
本文方法(校正) 1.206 3 2.321 7 2.176 8 97.30 0.970 8

2.2.2 算法稳定性比较

真实场景下的心率检测需要考虑视频时长、采样率和光照条件的影响,在此对不同视频时长、不同采样率和不同光照3种情况分别进行心率检测,验证算法的稳定性。

首先,限定视频采样率为30帧/s,光照条件为室内白炽灯稳定照射,采集5 s、10 s、20 s、40 s和60 s时长的人脸静止和晃动情况的视频,计算每种情况不同时长下的平均准确率,绘制准确率曲线如图 6所示。

图 6 不同视频时长下的准确率曲线
Fig. 6 The accuracy curve for different video time lengths ((a) static face; (b) shaking face)

比较图 6的实验结果发现,无论人脸是否晃动,随着视频时长的缩短,3种方法的准确率整体上都呈现下降趋势,但本文方法对比其他两种方法下降的趋势较缓,稳定性更好;不同时长下本文方法的准确率均高于其他两种方法,并且在人脸晃动情况下本文方法的优势显著。倾斜校正之后,本文方法通过迭代频率分析过程降低了心率估计对样本周期数目的依赖性,在视频时长不是过少(大于等于10 s)的情况下,能保持较为稳定的准确率。但是,5 s时长时样本的周期数目过少,频率特征不显著,准确率不可避免地下降。

结合表 3中不同视频时长下本文方法的运行时间,说明前后实验限定时长为10 s的原因:时长大于等于10 s时,准确率较高而且浮动较小;时长小于等于10 s时,运行时间在20 s以内,检测效率较高。

表 3 本文心率检测方法的平均运行时间
Table 3 The average running time of our method

下载CSV
/s
视频时长
5 10 20 40 60
处理时间 10.80 19.70 43.60 91.80 134.50

然后,限定视频时长为10 s,光照条件为室内白炽灯稳定照射,分别以采样率为5帧/s、10帧/s、20帧/s、30帧/s、45帧/s、60帧/s采集人脸静止和晃动情况的视频,计算每种情况不同采样率下的平均准确率,绘制准确率曲线如图 7所示。

图 7 不同采样率下的准确率曲线
Fig. 7 The accuracy curve for different video sampling rates ((a) static face; (b) shaking face)

比较图 7的实验结果发现,无论人脸是否晃动,当采样率大于等于30帧/s时,3种方法的准确率均保持稳定,但是当人脸晃动时本文方法的准确率明显高于其他两种方法;当采样率小于30帧/s时,随着采样率的降低,本文方法的准确率下降较为缓慢,其他两种方法的准确率明显下滑,刘祎[8]甚至剧烈下滑至方法失效。采样率降低意味着样本稀疏和周期性规律下降,当降低至一定程度时,ICA和小波滤波器无法很好地将稀疏的BVP信号从混合信号中准确地分离出来;本文方法在倾斜校正之后,结合金字塔分解和带通滤波,先分解出BVP所在的空间尺度再进行滤波,从幅度和频率上双重分离稀疏的BVP信号,最后迭代频率估计进一步保证了较高的心率准确率。因此,无论人脸是否晃动,本文方法在采样率下降的情况下具有更好的稳定性。

最后,限定视频时长为10 s,采样率为30帧/s,按照光照强度从大到小的顺序,分别在人脸正对自然光(顺光)、人脸侧向自然光(侧光)、室内白炽灯稳定照射、人脸背对自然光(逆光)和无光源(昏暗)5种光照条件下采集人脸静止和晃动情况的视频,计算每种情况不同光照下的平均准确率,绘制准确率曲线如图 8所示,“顺”、“侧”、“灯”、“逆”和“暗”关键字依次表示5种强度由大变小的光照条件。

图 8 不同光照条件下的准确率曲线
Fig. 8 The accuracy curve for different illumination conditions ((a) static face; (b) shaking face)

比较图 8的实验结果发现,无论人脸晃动与否,随着光照强度的变小,准确率总体呈下降趋势,本文方法相比其他两种方法表现出更加稳定的性能。人脸静止时,由于顺光的强度偏大,导致人脸皮肤偏亮,而实际情况下出现概率最大的侧光强度适中,所以由顺光到侧光时准确率稍有上升,侧光之后的准确率随光强的变小而下降。人脸晃动时,不同光照下的准确率较人脸静止时均下降,本文方法准确率下降的幅度很小,而且在侧光时依然最高,此时其他两种方法均失效。侧光时出现上述差异的原因是:侧光是局部光照,此时人脸晃动会导致脸部皮肤亮度发生局部性的明显变化,这种亮度变化信号的强度远大于干净BVP信号的强度,而且两者具有相近的频率;ICA和小波滤波在原理上无法分离上述的亮度变化信号,傅明哲[7]和刘祎[9]获取的BVP信号其实是该亮度变化和晃动的混合信号,不可能得到准确的心率;而本文方法的倾斜校正消除视频中的晃动信号,空间处理分离了幅度较大的亮度变化信号,只选择了微弱BVP信号所在的空间尺度,有效地抑制局部亮度变化干扰。

通过对比不同视频时长、不同采样率和不同光照3种情况下的实验结果,得出以下结论:由于倾斜校正、时空处理和迭代频率估计的先后配合,本文方法具有更好的稳定性,而且在人脸晃动时本文方法具有明显的准确率优势。但是,在时长过短(5 s)和光照昏暗的极端情况下,本文方法也无法准确地估计心率。此次稳定性对比实验结果还说明了以10 s时长、30帧/s采样率和室内白炽灯稳定光照为限定条件进行心率检测是正确的,该限定条件满足对准确率、处理时间、普通摄像头帧率范围以及白天和夜晚光照一致性的要求。

2.2.3 连续时间的心率结果

为了定性地评价本文方法,实验在30帧/s采样率和室内白炽灯稳定光照的条件下进行了连续时间的心率检测。首先对图 1中的测试者连续拍摄了10 min的人脸视频,要求该测试者的脸部在前4 min保持静止,第5~7 min晃动,第8~10 min恢复静止状态,与此同时,不断记录真实心率,每隔10 s统计一次平均值作为参考;然后利用本文方法以10 s为间隔处理视频,共连续获得60个心率测量值。图 9所示为心率连续检测结果的折线图。

图 9 心率连续检测结果的折线图
Fig. 9 The results graph of continuous heart rate detection

从整体上看,本文方法检测的心率变化规律与真实心率吻合;局部上看,人脸保持静止的前4 min和后3 min,本文方法检测的心率与真实心率的吻合程度较高,而第5~7 min,人脸晃动导致与真实心率的偏差变大,但心率变化的规律相接近。出现这种情况的原因是:合作情况下,本文方法考虑了空间尺度特征,获取的BVP信号比较干净,视频质量和信号长度等次要因素导致了结果存在较小的固有偏差,所以检测的心率与真实心率较为吻合;在非合作情况下,本文方法对人脸晃动进行了校正,削弱了人脸晃动对BVP波形的干扰,使得由人脸晃动导致的心率偏差减小到一个相对稳定的值,最终的心率偏差相当于在固有偏差上增加一个稳定的晃动偏差,所以偏差变大但保持了心率的变化规律。

3 结论

本文提出了一种鲁棒的基于人脸视频处理的心率检测方法,利用DRMF特征点检测和结合倾斜校正的跟踪抑制人脸晃动干扰,经视频颜色放大提取干净的血液容积脉冲信号,再进行迭代的心率估计,提高检测性能,实现了真实场景下的非接触式心率检测。在合作的简单场景和非合作的复杂场景下,均表现出较高的准确性和稳定性。不仅改善了测试者的舒适度,而且操作简单,不受时空的限制,适用于长时间的心率监测和疾病预防。然而,在视频时长过短,光照条件过暗或明暗剧烈变化的情况下,本文方法无法准确地检测心率。在未来的工作中,将针对如何抑制环境光照干扰的问题,进一步提高心率检测的鲁棒性和准确性,扩宽方法的适用场景。

参考文献

  • [1] Ma B, Wang R Y. Resting heart rate and cardiovascular diseases[J]. Advances in Cardiovascular Diseases , 2006, 27 (S1) : 90–92. [ 马斌, 王瑞英. 静息心率与心血管疾病的研究进展[J]. 心血管病学进展 , 2006, 27 (S1) : 90–92. DOI:10.3969/j.issn.1004-3934.2006.z1.029 ]
  • [2] Ma J L, Wang C, Li Z J, et al. Study of measuring heart rate and respiration rate based on PPG[J]. Optical Technique , 2011, 37 (3) : 309–312. [ 马俊领, 王成, 李章俊, 等. 基于PPG的心率和呼吸频率的测量研究[J]. 光学技术 , 2011, 37 (3) : 309–312. DOI:10.13741/j.cnki.11-1879/o4.2011.03.008 ]
  • [3] Verkruysse W, Svaasand L O, Nelson J S. Remote plethysmographic imaging using ambient light[J]. Optics Express , 2008, 16 (26) : 21434–21445. DOI:10.1364/OE.16.021434
  • [4] Lewandowska M, Rumiński J, Kocejko T, et al. Measuring pulse rate with a webcam-a non-contact method for evaluating cardiac activity[C]//Proceedings of 2011 Federated Conference on Computer Science and Information Systems. Szczecin, Poland:IEEE, 2011:405-410.
  • [5] Wu H Y, Rubinstein M, Shih E, et al. Eulerian video magnification for revealing subtle changes in the world[J]. ACM Transactions on Graphics , 2012, 31 (4) : #65. DOI:10.1145/2185520.2185561
  • [6] Poh M Z, McDuff D J, Picard R W. Non-contact, automated cardiac pulse measurements using video imaging and blind source separation[J]. Optics Express , 2010, 18 (10) : 10762–10774. DOI:10.1364/OE.18.010762
  • [7] Poh M Z, McDuff D J, Picard R W. Advancements in noncontact, multiparameter physiological measurements using a webcam[J]. IEEE Transactions on Biomedical Engineering , 2011, 58 (1) : 7–11. DOI:10.1109/TBME.2010.2086456
  • [8] Tarvainen M P, Ranta-Aho P O, Karjalainen P A. An advanced detrending method with application to HRV analysis[J]. IEEE Transactions on Biomedical Engineering , 2002, 49 (2) : 172–175. DOI:10.1109/10.979357
  • [9] Liu Y, Ouyang J F, Yan Y G. Method of measuring heart rate using a Webcam[J]. Computer Engineering and Applications , 2016, 52 (7) : 210–214. [ 刘祎, 欧阳健飞, 闫勇刚. 基于普通摄像头的心率测量方法研究[J]. 计算机工程与应用 , 2016, 52 (7) : 210–214. DOI:10.3778/j.issn.1002-8331.1404-0183 ]
  • [10] Viola P, Jones M. Rapid object detection using a boosted cascade of simple features[C]//Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Kauai, Hawaii, USA:IEEE, 2001:511-518.[DOI:10.1109/CVPR.2001.990517]
  • [11] Asthana A, Zafeiriou S, Cheng S Y, et al. Robust discriminative response map fitting with constrained local models[C]//Proceedings of the 2013 IEEE Conference on Computer Vision and Pattern Recognition. Portland, OR, USA:IEEE, 2013:3444-3451.[DOI:10.1109/CVPR.2013.442]
  • [12] Tomasi C, Kanade T. Shape and motion from image streams under orthography:a factorization method[J]. International Journal of Computer Vision , 1992, 9 (2) : 137–154. DOI:10.1007/BF00129684
  • [13] Li S J, Ji P P, Deng J K, et al. Component-based facial expression recognition[J]. Application Research of Computers , 2015, 32 (3) : 917–921. [ 李淑婧, 嵇朋朋, 邓健康, 等. 基于面部结构的表情识别[J]. 计算机应用研究 , 2015, 32 (3) : 917–921. DOI:10.3969/j.issn.1001-3695.2015.03.064 ]
  • [14] Sarode L, Mandaogade N. Video motion magnification using spatio-temporal algorithm[J]. International Journal of Computer Applications , 2014, 96 (9) : 9–13. DOI:10.5120/16820-6573
  • [15] Thakur R K, Anoop C S. A non-contact capacitance based electrocardiograph and associated heart-rate detection using enhanced Fourier interpolation method[C]//Proceedings of the 37th Annual International Conference of the IEEE Engineering in Medicine and Biology Society. Milan, Italy:IEEE, 2015:849-852.[DOI:10.1109/EMBC.2015.7318495]
  • [16] Aboutanios E, Mulgrew B. Iterative frequency estimation by interpolation on Fourier coefficients[J]. IEEE Transactions on Signal Processing , 2005, 53 (4) : 1237–1242. DOI:10.1109/TSP.2005.843719