自适应人脸多区域分析的视频心率检测①
2022-11-07杨学志李龙伟王定良
陈 宇,杨学志,方 帅,李龙伟,王定良
1(合肥工业大学 计算机与信息学院,合肥 230009)
2(工业安全与应急技术安徽省重点实验室,合肥 230009)
3(合肥工业大学 软件学院,合肥 230009)
4(中国科学技术大学附属第一医院,合肥 230036)
心率作为人的基本生命体征,不仅可以反应人体的健康状态,也是评估人体心脑血管疾病最重要和有效的参数之一.其在心脑血管疾病、高血压、心理和精神疾病等领域都被证实是一种有效的诊断手段[1].
临床上传统的心率监测技术主要是利用心电图机(electrocardiogram,ECG),其通过设备上的十二导联绑定在体表不同的裸露部位获取精确的心电数据进行分析处理[2].这种方式可以得到较为精准的心率,但是其存在成本高昂、操作繁杂、专业要求高,普通家庭无法独立使用.除此以外,家用的脉搏血氧仪也被广泛用来测量受试者心率,其是利用光电传感器夹在受试者指尖、耳垂等体表末梢通过接收反射或透射的光信号进行心率测量.该方法需要测试部位和设备紧密贴合且不能够有相对运动,使用不便,舒适度较差不利于长时间实时检测.针对传统方法的在实际应用中的局限性,研究一种使用方便的非接触式的心率检测技术就显得十分重要.
基于视频的光电容积描记术(video photoplethysmography,VPPG),是一种非接触式心率检测技术.其可以利用普通彩色相机采集面部或指尖等区域表皮视频,通过检测皮下毛细血管由于心脏周期泵血使得血液血红蛋白浓度变化产生的微弱颜色变化,提取血液容积脉冲信号(blood volume pulse,BVP).通过分析该信号的频率即可进行心率估计.Verkruysse 等人[3]最早使用普通彩色摄像头,在可见光作为光源的条件下证明了使用VPPG 技术进行非接触式心率检测的可行性.随后,Poh 等人[4]提出对视频帧进行人脸感兴趣区域检测并计算RGB 三通道像素均值,然后使用独立成分分析(ICA)进行BVP 信号提取和心率估计.尽管这些算法都可以比较好的进行心率估计,但需要测试者全程保持静止或人脸和环境背景的稳定才能保证良好的实验结果,这不仅会给测试者带来不便,而且会限制算法的使用场景.由于人脸运动(如说话、表情变化)、头部晃动和光照不均匀等干扰因素的存在,会影响VPPG技术BVP 信号的提取以及心率估计的准确性.因此,如何保证在真实的生活场景中提升心率检测算法的稳定性和准确性,已经成为国内外学者研究的重点.
研究者们主要做出的改进,有如下几个方面: 其一,是根据皮肤光照反射特点采用不同的颜色空间进行BVP 信号提取,通过不同颜色通道信号的差异性和互补性来增强原始BVP 信号.如de Haan 等人[5]利用不同颜色通道信号之间的互补性,提出了基于色度的颜色空间投影分解算法(chrominance-based rPPG,CHROM)以减轻头部晃动产生的影响.其二,是根据BVP 信号特性以及先验知识等进行噪声滤除和信号增强等操作.如Wang 等人[6]通过分析BVP 信号频域上心动信号和噪声信号的区别,采取频域修正的方式来去除非心率范围内的干扰.Tasli 等人[7]通过估计头部运动频率并进行剔除,取得了更鲁棒的心率估计.
除此以外,近年来研究表明通过同步分析多个不同的面部感兴趣区域的信号可以用来提升原始BVP信号的提取效果.如Kumar 等人[8]使用信噪比来对不同的感兴趣区域信号进行加权.Feng 等人[9]将ROI 区域分块后设计并提取了两种特征,最后使用K均值算法自适应选择有效的感兴趣区域.Li 等人[10]使用人脸特征点裁剪获得固定的人脸皮肤区域.Favilla 等人[11]使用ICA 算法分析面部3 个区域的多通道信息进行心率检测.周双等人[12]采用矩阵低秩分解来对不同感兴趣区域的信号进行降噪处理.然而,由于以上的多区域分析的划分均是在人脸检测框的基础上进行简单的矩形分割,此方式虽然操作简单,但实际上并没有考虑到分块内人脸轮廓、阴影和皮肤纹理等信息,以及视频帧之间分块区域位于人脸位置的一致性,ROI 分块划分存在一定的不合理之处.
为了解决上述ROI 分块划分和挑选中存在的问题,本文受传统的超像素分割算法的启发,提出一种基于人脸视频的自适应超像素分割和ROI 优选方法.使得分块区域拥有相同或近似的特征集,一方面提升子块划分质量,从源头提升了BVP 信号提取的质量,另一方面通过优选算法寻找面部信号最佳区域.增强了面部运动干扰以及环境光分布不均时算法的抗干扰能力.
1 心率检测方法
本文心率检测算法是以ROI 超像素分割和脉搏矩阵信号优选为基础.通过裁切视频帧内面部ROI,随后根据轮廓、皮肤纹理和阴影等特征将面部ROI 通过超像素聚类分割成互不重叠的子块,再对分块结果进行色度BVP 矩阵提取,最后进行多指标综合分析优选出最佳面部子区域进行信号处理与心率估计.
本方法的核心步骤包括以下几个部分: 1)人脸与特征点检测; 2)人脸自适应超像素分割; 3)色度BVP矩阵提取; 4)脉搏信号评估优选与心率估计.具体算法框图如图1 所示.
图1 算法流程及示意图
1.1 人脸与特征点检测
在真实生活场景中,由于检测过程中头部晃动以及表情变化等会影响摄像头对面部颜色周期性变化的提取效果,进而导致BVP 信号提取质量的大幅降低.因此对原始视频进行人脸与特征点检测算法,来获取稳定的人脸ROI 区域(图像帧).首先根据视频第1 帧图像,使用Viola 等人[13]的人脸检测器输出视频中人脸检测矩形区域的顶点坐标; 然后采用鲁棒判别响应图拟合 (DRMF)[14]方法对人脸坐标区域内主要器官进行特征点定位,记录人脸66 个特征点位置C1,包含眼睛、鼻子、眉毛、脸颊和嘴巴等区域.之后对后续的视频帧进行KLT 跟踪特征点的位置,获取连续帧面部特征点矩阵C,记作:
其中,i为视频帧数,m为特征点个数,范围为1-66.
1.2 人脸自适应超像素分割
传统的ROI 分割算法均是将人脸检测框内区域简单的分割成m行n列的矩形.如图2 所示.这样分割,首先并没有考虑到头部运动导致分块对应人脸位置的变化,其次也没有考虑到分块内像素间的特征联系,ROI 分割存在不合理之处.例如: 平面内头部偏转会造成检测框改变,分块对应面部位置变化,导致连续帧之间分块不连续; 光照分布不均时阴影区域和正常亮度区域若被随机划分为一个子块,会导致子块内像素均值增大,颜色变化幅度减小进一步降低BVP 信号提取质量.
图2 传统ROI 分割效果演示
超像素分割算法是通过像素间共享特征(如亮度、纹理、阴影、轮廓等)将图像分割为包含特定图像结构的子区域[15].该算法可用于对面部区域进行分割,但是传统的超像素分割仅对图像进行处理,未考虑连续帧之间的分块个数及位置的连续性.故针对心率检测场景对传统方法进行改进提出人脸自适应超像素分割算法.
方法首先针对视频图像中人脸位置运动做出位置自适应处理,再结合简单的线性迭代聚类(simple linear iterative clustering,SLIC)[16]实现连续帧间人脸区域分块的一致性.能够很好地应对视频中人脸位置移动、远近距离变化和平面内旋转等情况下人脸分块的稳定性,保证子块BVP 信号提取区域对应人脸位置的稳定性和连续性.具体步骤为:
(1)视频人脸获取.根据第1.1 节获取的视频人脸位置对原始图形进行裁切获取原始人脸区域图像帧序列F.
(2)自适应处理.倾斜校正: 如图3 所示根据获取的图像帧序列F以及第1.1 节获取的人脸特征点位置C使用戚刚[17]的倾斜校正方法校正视频中旋转的人脸获得校正人脸序列F1.
图3 人脸倾斜校正
人脸尺寸一致处理: 由于头部运动会影响图像中面部像素区域大小[18],若采用固定的分割个数可能会使得分割子块像素区域过小,导致BVP 信号提取质量的急速下降[19].因此通过设置初始化超像素分块尺寸,根据视频初始帧人脸像素尺寸自适应决定分块个数.由于人脸五官位置在不同尺寸图片中比例保持相对稳定,因此根据面部特征点C对倾斜校正序列F1进行对比缩放,获得尺寸一致的人脸图像序列F2,以确保分块个数一致.
(3)初始化种子点.设序列F2中图像像素个数为K,为了确保分块BVP 提取质量,设置初始超像素大小为S=50×50的矩形区域,则超像素个数M=K/S,超像素种子点间的距离L=sqrt(K/S).
(4)相似度衡量.针对序列F2图像帧中的每个像素,分别计算与距离最近的种子点间的相似程度,为该像素点赋予最相似种子点标签.相似度衡量公式如下所示:
其中,dlab为像素点之间的颜色差异,dxy是像素点间的空间距离.Di用来衡量两像素间的相似程度;L为种子点的间距,e为平衡参数,用来反应颜色差异与空间距离在相似度衡量中的比重.Di越大,表明两像素之间相似度越高.
自适应超像素分割迭代过程如图4,通过不断迭代上述过程直至达到收敛,分块之间充分考虑到面部像素之间距离和颜色特征等联系,并且经过了面部倾斜校正和一致性处理,可以确保连续帧之间分块位置的一致性,获得最终自适应分割结果标签Label,范围1-M.
图4 自适应超像素分割迭代过程
1.3 分块色度脉搏矩阵提取
对获取的连续帧人脸自适应分块结果,根据Label标记区域进行BVP 信号提取.研究表明[20],HSV 颜色空间H通道色度特征对面部运动具有良好的鲁棒性,可以抵抗面部运动光线反射角度变化造成的皮肤亮度和颜色变化.因此采用H通道进行色度脉搏提取.首先根据分块Label 结果,分别计算M个ROI 分割子区域像素均值,记为bm(N)其中m表示第m个分块区域,N表示的视频总帧数.随后将计算得到的M个区域的像素均值矩阵B通过颜色空间转换到H通道获得H通道色度BVP 信号矩阵,记为:
其中,hm(N)表示第m个分块区域色度脉搏提取信号.
H通道颜色转换方法在以下公式中进行描述.使用以下公式对RGB 值进行标准化与颜色空间转换:
其中,R′,G′,B′为RGB三通道的归一化值,范围0-1;Cmax和Cmin分别为归一化RGB通道的最大值和最小值,以及归一化RGB通道的差值Δ;H即为HSV 颜色空间的色度分量.
1.4 脉搏信号筛选与心率估计
获取到面部M个子块色度BVP 信号后,对各子块的原始脉搏信号质量进行评估与优选.在进行脉搏波质量评估的特征选取时,必须要符合以下准则.首先,因为真实场景下无心率参考真值,质量评估指标不依赖真值对比; 其次,特征数值大小需体现信号质量优劣; 最后,特征值应方便从简短的波形获得,确保特征及时更新实现ROI 优选的时效性.考虑到上述条件,因此选取幅度、频域和非线性3 个方面指标综合评判脉搏波质量.
(1)幅度特征: 分块区域亮度变化标准差(light std),表示分块内像素亮度与均值之间的偏离程度,可以体现分块内亮度变化程度.公式如式(8):
其中,light(m)表示的是第m个分块的亮度变化程度指标,lvaluemi代表第m分块中第i帧的亮度值,μ代表分块中所有帧的亮度均值,N为视频帧总数.
(2)频域特征: 分块脉搏波信噪比(signal noise ratio,SNR),表示脉搏信号平均功率与噪声平均功率的比值.可以反应心率信号能量占正常心率区间内的总能量大小,公式如式(9):
其中,SNR(m)表示的是第m个分块的信噪比指标,fHR表示信号频谱峰值频率,fs表示信号采样率,函数S表示频谱密度函数.
(3)非线性特征: 分块内样本熵.熵值作为一种非线性特征,可以体现随机变量不确定性的程度,反应信号的规则与不规则性.近来已经被越来越多人应用于对生理信号分析上[21],样本熵(sample entropy,SampEn)对心率信号的高斯噪声尤其敏感,故选取作为波形质量评估特征.
以上3 种指标由于评价尺度不一无法直接对比数值大小使用,现分别对指标进行有效性归一化处理,公式如下:
其中,min 和max 分别为各分块区域中对应指标的最小值和最大值.Lightnorm(m)、SNRnorm(m)、SampEnnorm(m)分别为第m块有效性归一化后的指标,数值越大表明分块内BVP 信号质量越好.
综合有效性归一化后的指标,得到分数Score值,公式如下:
其中,Score(m)为第m块分区BVP 质量最终分数,分数越高说明综合质量越好.
如图5 所示,对Score(m)数值排序后选取最佳分块区域对应BVP 信号,对BVP 信号进行带通滤波,选取在0.8-3.5 Hz区间最大功率对应的信号频率fHR得到受试者心率.其中对应关系如下:
图5 优选BVP 信号及功率谱密度
2 实验与结果
2.1 实验设备及数据
本文实验和数据采集是在白色LED 照明环境中进行.使用普通彩色摄像头(罗技C920)连接微软Surface 笔记本(Windows 10 ,16 GB 内存,512 GB 硬盘)进行面部视频采集,同步使用指夹式脉搏传感器(紫金电子 PWS-20D )采集左手食指指尖ppg 信号.摄像头设置采集分辨率为1080 P、帧率30 fps,每次采集受试者30 s 的人脸视频,并以RGB 颜色空间保存成mp4 格式.脉搏传感器设置采样率为200 Hz,采样精度为10 位作为脉搏真值保存.共有20 名受试者参与本次实验,其中男性12 名、女性8 名,年龄分别为20-43 岁、19-35 岁.数据采集方式和采集界面如图6 所示,受试者需正对摄像头并且保持距离40-60 cm 左右而坐,同时采集面部视频与指尖ppg 信号.
图6 采集场景演示
2.2 实验结果
本文针对算法的效果复现了文献[10-12] 中的3 种心率检测算法作为对比,主要从实际场景下对算法进行评估.其中采用了5 种误差指标对准确性进行比较.第1 个指标为平均绝对误差,代表心率检测值与真实值之间误差的绝对平均值,记为Me; 第2 个指标为误差标准差SDe,用来反映误差之间相互离散的程度;第3 个指标为误差均方根记作RMSE,用来评估面部测量值和指尖ppg 参考值之间的偏离程度; 第4 个指标为心率平均准确率HRac,主要是反映心率检测结果的平均准确性,具体公式如式(15):
其中,T为实验样本总数,为第t组面部心率检测的心率测量值,为第t组脉搏传感器心率测量的参考值; 第5 个参数是皮尔森相关系数记作r,是用来反应心率测量值和真实值之间线性相关性的统计量.r值通常范围在-1 至1 之间,且绝对值越大说明两变量之间的相关程度越高.
为了全面验证本文方法在实际场景下的性能,设计了3 个典型场景验证算法的准确性.首先分析受试者保持面部静止场景,其次是受试者在镜头内存在头部运动和表情变化等动态干扰场景.随后使用不同光照场景下视频验证算法的稳定性,最后对受试者进行10 min 的连续心率检测.
2.2.1 静止状态下心率检测
在本次实验中,为检验静止状态下本文算法心率检测的准确性,受试者需端坐在采集摄像头前50 cm左右位置,保持环境光照稳定及受试者头部静止采集2 组人脸视频.每组视频时长为30 s,实验样本总数为40 组.实验结果如表1 所示,其中单位为bpm (beat per minute)即心脏每分钟跳动次数.
表1 静态场景下算法准确性分析
如表1 所示,展示了4 种方法在受试者保持静止时的准确性情况.可以发现4 种方法都可以很好的应对静态场景下的心率检测,其中,Me均低于1.6 bpm,SDe和RMSE低于2 bpm,HRac可以达到98% ,r接近1.通过观察可以发现,本文方法中的Me最低、r最高,分析原因可能是: 在视频采集中,受试者虽然身体保持静止但是由于呼吸动作的存在会引入轻微的起伏干扰,其次眨眼等动作的存在也会导致面部某些区域存在轻微的干扰.而本文采用的人脸自适应超像素分割和综合指标ROI 优选方法可以从面部区域中自动寻找最佳区域进行心率检测,表现出来更好的准确性.
2.2.2 动态干扰场景下心率检测
由于检测过程中,头部的晃动和表情变化等,会使得镜头内人脸位置和背景发生变化造成皮肤与光源反射角度的变化,最终导致BVP 信号的失真进一步影响心率检测的准确性.因此本文特地设计一组头部移动和表情变化干扰场景.在这次的实验中,运动干扰包括在镜头内以一定的速率水平或竖直移动头部以及进行平面内旋转等操作; 表情变化为视频采集时受试者随机朗读1-9 号数字.在本组实验中,每名受试者采集3 组数据,样本总数为60 组.具体的实验结果如表2 所示.为了直观展示实验结果,实验数据通过散点图和Bland-Altman 图进行展示,如图7 所示.
图7 运动结果散点和Bland-Altman
由表2 结果可以得知,由于运动干扰和表情变化的引入导致4 种方法的准确性均表现出不同程度的降低.经过对比发现,文献[10-11]方法的性能明显偏低,其中,Me、SDe、RMSE均大于 7 bpm,HRac下降至90% 以下,相比较静止状态下最差下降幅度高达11.2%,与心率的相关性明显降低; 文献[12]的效果虽然有稍许提升,但是Me依然大于5 bpm 超过实际场景下心率检测的误差上限.而本文的方法,在4 种方法中受到运动干扰和表情变化的干扰幅度最小,尤其是心率准确性指标HRac达到了95.34%相关系数r高达0.956.上述数据表明本文的人脸自适应超像素分割方法可以有效地从运动的人脸中提取信号最佳的区域进行心率估计,具有良好的性能表现.
表2 动态干扰场景下算法准确性分析
通过对比图7 第1 行中4 种方法的散点图可以看出文献[10-12]的方法存在较多的数据误差较大明显偏离线性回归线,而本文方法的数据集中在线性回归线附近,且线性回归线的斜率接近于1,表明本文方法的测量值与心率参考值的相关最强.
图7 第2 行是运动结果的Bland-Altman 图,其在医学领域经常被用来分析新方法与标准方法测量结果的一致程度.虚线内的区域是95%置信区间,中心实线代表心率测量值与参考值之间的相对平均误差.从图中可知,本文方法的虚区域远远窄于其他3 种方法且中心实线最接近于0,表明本文方法较其他3 种方法的测量值与标准参考值有着更好的一致性.进一步分析原因可能如下:
1)文献[10]采用的自适应滤波算法,能够较好地处理高斯白噪声干扰.但由于使用的是整张人脸作为ROI,而运动时人脸引起的尖锐干扰并不能被自适应滤波器很好地滤除.因此该方法无法提取到纯净的BVP 信号,进而无法在运动干扰条件下进行准确的心率估计.
2)文献[11]采用的多区域分析方法,主要选取额头和两颊3 个独立区域作为心率检测的ROI.该方法从一定程度上可以从运动干扰中提取优质BVP 信号进行心率估计.但是由于选取的是固定区域,固定区域无法确保不受到偶然干扰影响,并且额头部位在女性中容易受到刘海覆盖干扰,影响实际应用场景下的表现.
3)文献[12]也是通过将面部进行分割提取不同区块的色度特征信号进行心率估计.但是,首先其对人脸区域仅进行简单的矩形分割没有考虑区域内像素间关系; 其次由于固定了分割矩形块大小为20×20 的像素区域,并没有对不同帧内人脸图像尺寸进行一致性处理,无法确保运动中分块个数的稳定; 最后由于没有对人脸旋转进行校正,难以保证倾斜状态下分块位置的连续性.
4)本文方法与文献[12]采取的方法类似,都是通过将脸部区域分割成不同的子块通过对子块信号的分析进行心率估计.不同的是,本文在简单矩形分割的基础上引入了自适应超像素聚类算法,确保区域内像素间的特征相关性.同时本文算法针对人脸视频分割后分块位置的一致性和连续性进行了人脸校正操作.一方面提升原始BVP 信号的提取质量,另一方面通过综合指标优选ROI 方法进一步提升了算法在实际场景中的抗干扰能力.
2.2.3 不同光照场景下心率检测
考虑到真实场景中视频采集环境的复杂性,位于不同光照条件下心率检测的准确性会受到影响.因此本次实验分别采集了受试者静止状态4 种光照场景下的视频进行对比实验,具体为面向光源(正)、侧面对光源(侧)、逆向光源(逆)、以及暗光条件(暗).在本次实验中,每名受试者均在特定场景下采集2 组视频,视频时长30 s,样本总数为160 组.实验的结果如图8 所示.
图8 不同光照场景下的心率准确性变化
由图8 可知,在正面向光源的场景中4 种方法的准确率均可以达到97%以上,表明在光照条件良好的状态下4 种方法均可以准确地进行心率检测.但是针对侧光和逆光这类光照分布不均匀的场景,文献[10-12]方法的准确性均有较大幅度的下降,其中文献[10]更是分别下降了7.8%、12.4%.本文方法展示出较高的准确性优势,其中侧光准确率达到94.3%,逆光准确率达到92.1%,对比最差方法提升了5.2%与8.2%,但是针对暗光环境4 种方法均表现不佳.分析原因为侧光、逆光时光照分布不均匀,本文方法可以根据光照分布的情况从面部选取像素特征相近区块进行分析并挑选质量最佳子块进行心率估计.面对暗光这样的光照场景,由于射入皮肤的光照强度变低导致面部反射的光强变低,无法从ROI 挑选上对光照进行增强,故以上方法在暗光场景中均表现欠佳.
2.2.4 连续时间心率检测
长时间连续的心率检测,可以用来评估用户的心率变化趋势以及对一些心血管疾病的产生进行早期预警.为了最终评价本算法的准确性,设计一组连续10 min的心率检测实验.受试者正坐在摄像机前50 cm 的位置,保持10 min 内面部一直处于视频采集画面内,期间不限制受试者头部移动和表情等变化.并同时使用脉搏血传感器每10 s 记录一次实时心率值做对比分析,实验结果如图9 所示.
图9 心率变化折线图
在图9 中的红线和蓝线分别代表指尖PPG 传感器采集的心率参考值和面部心率检测的测量值.从整体上看,蓝线的变化趋势随着红线有着相似的起伏波动,说明测量值和参考值之间有着良好的一致性(r=0.9558).综上所述,本文的算法可以有效地进行心率长期检测,提升真实场景下算法的鲁棒性.
3 结论与展望
近年来由于视频图像处理技术的快速发展,基于视频的非接触心率检测技术发展迅速,但在实际场景应用仍有诸多挑战.本文针对面部运动和光照变化干扰问题,提出一种人脸自适应分割和多区域多指标综合评价算法,提升脉搏波质量,提高心率检测可靠性,增强实际场景鲁棒性.主要由以下几部分组成: 面部区域自适应超像素分割为互不重叠的子块; 提取色度特征构建脉搏信号矩阵; 根据综合指标评估各分块质量,最后对最优子块进行心率估计.实验结果表明,相比传统ROI 分割方法,本文算法分割后脉搏矩阵信号质量有显著提升.在面部运动和光照不均匀场景下心率检测准确性和稳定性均有明显提升.然而,在暗光和环境光照变化剧烈等场景下,本文心率检测算法性能出现比较明显的下降.在以后的工作中,将对环境光照变化造成的干扰问题进行研究,进一步提升复杂光照场景下的心率检测鲁棒性.