抗相机运动干扰的心率检测算法研究

2023-10-30 13:00杨学志李龙伟刘雪南
关键词:测试者人脸心率

王 阳, 杨学志, 方 帅, 李龙伟, 刘雪南

(1.合肥工业大学 计算机与信息学院,安徽 合肥 230601; 2.工业安全与应急技术安徽省重点实验室,安徽 合肥 230601; 3.中国科学技术大学附属第一医院(安徽省立医院) 心血管内科,安徽 合肥 230001)

0 引 言

心率是指心脏每分钟跳动的次数,它是评估人体心血管系统功能的最基本参数之一,是反映人体生理状态的重要指标[1]。近几年,视频图像处理技术与医学领域相结合,不断应用于医疗诊断、人体的健康监测和疾病的预防等多个方面,对医学的进步和疾病的诊疗有极大的推动作用。心率作为人体最基本也是最重要的生命特征,它不仅可以反映人体健康水平,更是与人的心脏疾病密切相关,因此心率检测成为了解人体健康的重要手段[2]。

目前对心率的主要检测方法可以分为接触式和非接触式2种。心电信号等接触式检测设备比较昂贵且操作相对复杂,虽然可以得到比较准确的心率值,但会给皮肤有创口或者皮烧伤等患者造成不便,因此难以实现普通人日常生理信号的监测。基于光电容积描记术(photoelectric plethysmography,PPG)的生理信号检测系统虽以其低成本、操作便利等优点已在临床及日常检测方面得到广泛推广和应用,但其主要采用需与人体接触的传感器来获取信息,需要检测设备与人体紧密贴合,具有较大的局限性。成像式光电容积描记(image photoplethysmography,IPPG)技术是在PPG 基础上发展起来的一种非接触生理参数检测技术,该技术通过对人脸视频图像的处理提取脉搏波信号实现心率信号的提取,是一种利用成像设备采集皮肤颜色变化从而实现心率估计的方法。IPPG技术具有非接触、成本低、安全、操作简单等多种优势,具有重要的临床价值和生理价值[3],为远程医疗监控的研究提供了一种全新的方向和解决方案。

文献[4]和文献[5]最先根据人体血液中相对于RGB三色光中血红蛋白对绿色光的吸收率更高的原理,提出选择使用绿色通道的信号作为心率信号,验证了IPPG技术的可行性;文献[6]为消除运动伪迹,提出基于盲源分离的独立分量分析法,从原始的RGB信号中分离出3个独立分量,并根据频率谱分布挑选出最合适的分量作为最终的心率信号;文献[7]提出一种基于色度的IPPG 算法,将原始RGB信号映射到假设的白光下的标准肤色,再将映射信号投影到正交于白光的平面,消除镜面反射的影响,该方法对运动伪影有较强的鲁棒性;文献[8]提出一种利用归一化最小均方误差自适应滤波器的方法,通过背景光照的变化校正脸部光照的变化,同时剔除了一些受到非刚性运动影响的信号段,以获得较纯净的PPG信号;文献[9]通过将人脸划分为众多小的网格,并通过计算功率谱密度分布来获得每个网格的权重,获得加权融合的PPG信号;文献[10]提出从人脸视频中提取原始脉搏波并对其进行小波分解得到不同的尺度成分,然后根据心跳所在的频率范围挑选出满足要求的尺度成分,最后对尺度成分进行小波重构得到所需的脉搏信号;文献[11]提出可以通过将获得的人脸视频进行空间分解,得到不同频率的视频成分,再利用泰勒级数挑选,经过颜色放大和小范围的人脸校正来实现非合作的面部检测;文献[12]提出基于光照矫正的面部局部区域心率检测,利用归一化最小均方自适应滤波算法进行光照矫正来去除环境光照干扰的心率信号,进行时域滤波和频谱分析得到心率;文献[13]提出利用分解算法将由人脸视频中获取的血容量脉冲信号分解为频率由高频到低频,且具有一定带宽的模态分量,分别计算各分量的噪声,选取低噪声部分重构脉搏波信号。以上这些算法均只适用于心率检测时使用的相机是稳定的情况下,然而在实际使用过程中因手部重力等外部原因导致相机产生的晃动会给视频人脸检测带来较为强烈的运动干扰,在相机晃动的场景下的心率检测结果并不理想。

为解决以上问题,本文提出一种基于人脸视频处理的抗干扰心率检测方法,目的是尽可能地减轻相机运动干扰的影响,提高脉搏信号的质量,从而提高心率检测的鲁棒性。

1 本文算法

本文提出一种抗相机晃动干扰的心率检测算法,该算法以面部视频为基础,通过对晃动视频的运动估计和倾斜校正,得到稳定的人脸面部视频。针对存在相机晃动的人脸面部视频导致心率检测不准的问题,首先通过加速稳健特征(speeded up robust features,SURF)算法选取特征点,进行特征匹配并求解运动估计矩阵,再通过相机运动估计矩阵对图像进行校正,从而去除相机运动造成的噪声干扰,最后通过使用快速傅里叶变换(fast Fourier transform,FFT)分析幅频特性,最大幅值对应的频率即为心率的原理进行心率检测。其中核心模块分为2个部分:① 运动视频特征匹配与倾斜校正;② 脉搏信号提取与FFT心率检测。算法流程如图1所示。

图1 本文算法流程

1.1 全局运动估计

本文提出的算法核心在于对由相机晃动产生视频的相邻两帧间的运动进行校正,得到稳定的视频序列,从而保证心率的准确检测。而视频帧的倾斜校正首先要做到准确的运动估计。所谓运动估计,是在特定的相机运动模型下确定相机运动向量的过程[14-15]。这些运动向量是描述连续视频帧之间运动转换的量。常见的运动估计算法有块匹配法[16]、灰度投影法[17]和特征点匹配法[18]等。

块匹配法基于对块内运动一致性的假设,容易陷入局部最优的误区,同时由于只能估计平移运动,限制了其在实际中的应用。灰度投影法运算速度相对块匹配法更快,但对图像本身质量要求较高,易受局部运动影响并且对太过复杂的运动形式无法进行准确估计。特征点匹配法是目前使用率极高且估计相对准确的运动估计算法,由于针对实际场景的手机心率检测需要尽量减少检测时间,本文在进行对比后,选取了基于SURF的特征匹配算法。

1.1.1 特征点提取

计算相关Hessian矩阵,当Hessian矩阵的判别式取得局部极大值时,确定特征点的位置。给定图像J中任意一点X(x,y),在该点处尺度为σ的Hessian矩阵定义为:

(1)

1.1.2 特征点方向分配

在获取的特征点圆形邻域内,统计特征点所在每个扇形区域内全部水平和垂直2个方向Harr小波特征总和,其中统计向量幅值最大区域所对应方向即为所求特征点主方向。

1.1.3 特征点描述子生成

为了实现图像旋转不变性,为每个特征点设置一个具有可重复性的方向。以每个特征点为中心建立圆形邻域,计算内部像素的Haar响应值,并进行高斯加权,统计滑动扇形窗口内的响应和,其中向量幅值最大区域对应的方向为特征点主方向,沿特征点的主方向在特征点周围取一个4×4的矩形区域块。在每个子区域里得到4维特征向量,将分成的16个子区域进行累加得到最终的64维特征向量描述子。

1.1.4 特征点匹配

特征匹配主要是计算所有相邻视频帧对应的两特征点之间欧式距离值的大小,用于代表特征匹配度。距离越小,认为匹配度越高,匹配结果如图2所示。

图2 特征匹配结果

1.1.5 相机运动矩阵估计与图像校正

完成视频帧的特征选取和特征匹配后,使用随机抽样一致(random sample consensus,RANSAC)算法[19]估计视频相邻帧间的仿射变换矩阵,该算法可以自动判断出正确的匹配点对,并计算出第1幅图像的所有特征点映射到第2幅图像的运动模型。其基本数学模型为:

(2)

(3)

其中:H表示仿射矩阵,包含6个自由度;a11、a12、a21、a22表示相邻帧图像间的旋转和缩放的部分;a13、a23表示相邻帧图像间的平移部分。

输入原始抖动视频相邻的两帧图像I和图像J,分别设定为第t帧和第t+1帧。通过该仿射变换矩阵依赖第t帧将第t+1帧修正成稳定的视频帧,对检测视频中的每一帧进行处理,具体处理计算公式如下:

It+1=ItH

(4)

重复此步骤即可得到稳定的面部视频。

1.2 FFT心率检测

随心脏跳动,人体皮肤下的血液在流动过程中会导致人脸面部有肉眼难以看到的明暗变化。在RGB三色光中,绿色光的反射强度变化最大,对血液流动的变化最敏感,因此皮肤血液容积的变化会导致 G通道发生更大的波动,对应RGB颜色模型下G通道像素值变化最大[20]。同时为避免眨眼等动作带来的噪声干扰,直接选取眼部以下面颊位置作为人脸感兴趣区域(region of interest,ROI),并对视频每一帧图像的ROI区域进行RGB三基色分离。只计算G通道像素平均值,提取出血液容积脉冲波B,即:

B={bn|n=1,2,3,…}

(5)

其中,bn为第n帧图像G通道的像素平均值。

心率估计中最常用的方法是使用FFT来分析幅频特性。短时间的血液容积脉搏(blood volume pulse,BVP)波信号可以近似看作是周期信号,因此使用FFT对BVP进行幅度谱分析,BVP波幅度图谱如图3所示,频率范围内的幅度最高点为峰值对应的横坐标,即为心跳频率fh。心率Hr的计算公式为:

图3 脉搏波幅度图谱

Hr=60fh

(6)

2 实验结果

2.1 实验设备及数据

本文算法是针对抗摄像头运动干扰的心率检测方法,因此本实验将检测方法移植到手机端(MI 10)进行实际场景测试。具体过程是控制手机摄像头进行人脸视频采集的同时进行实时心率的检测。要求测试者目视手机摄像头,并与之水平相距约0.5 m,同时确保人脸完全处于视频画面以内,每次检测10 s,现场检测示意图如图4所示。

图4 现场检测示意图

20名成年人参与了本次准确性测试,包括10名男性和10名女性,在每次测试中,每位测试者都进行了多次视频采集和心率检测。测试者佩戴接触式脉搏血氧仪,在手持植入本文算法的手机设备进行心率检测的同时测量真实心率值作为参考。

2.2 实验结果

为了检验算法的去噪效果,每名测试者均需参加静态实验和动态实验2项实验。在静态实验中,每名测试者都需要端正地坐在双手持有测试机并录制1组10 s长的视频进行心率检测。在检测过程中,测试者的头部不能出现左右晃动或者前后移动,面部也不能有任何的肌肉运动;在动态实验场景中,每名测试者在保证脸部不超出手机摄像头录制范围的条件下手部进行一定程度的晃动,双手持有测试机并录制1组10 s长的视频进行心率检测。

本文还复现了文献[9-11]提出的3种非接触式心率检测算法,分别利用这3种算法和本文算法测试采集到的视频,将4种算法的检测结果进行对比。将实验结果采用5种指标对本文的心率检测方法进行全方面的定量评价。

(7)

(8)

第2个指标为误差的标准差,记作Sde:

(9)

第3个指标为误差的均方根误差,记作RMSE:

(10)

第4个指标为心率结果的平均准确率Hrac:

(11)

第 5 个指标为心率真实值与论文中使用算法的测量值之间的皮尔森相关系数r,其值越接近1,表明正相关性越强。

(12)

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

在静态实验中,测试者双手保持静止状态测得心率性能数据见表1所列。从表1可以看出,这4种算法的Sde都小于2,Hrac的值都超过了97%,相关系数r的值也都大于0.960,实验数据表明,在手部静止的情况下,4 种算法都表现出很好的性能,但是本文提出算法具有更优越的性能。本文算法的Me、Sde、RMSE、Hrac4个参数的值都低于其他3种算法,参数r的值都高于其他算法。由上述数据可以看出,当测试者的手部保持静止时,这4种算法都可以有效地从视频中提取出实时心率值,并且准确率都在95%以上,但本文提出的算法相比其他3种方法更有优势,其原因可能是:在手持设备检测过程中,测试者虽然尽量保持手部静止,但是仍有微弱的手部抖动,这些抖动虽然不易被人眼看到,但是却能够干扰到BVP波信号质量,进而影响到心率的准确估计。而本文复现的其余3种心率检测算法中,文献[11]算法由于采用了小幅度的人脸校正方法,结果比文献[9]和文献[10]稍好。

表1 静态实验中不同算法的性能对比

在测试者手部进行晃动的动态实验中,心率测试性能的结果见表2所列。从表2可以看出:文献[9-11]算法的性能相比静态场景测试性能明显降低;文献[11]算法的Me都大于 6,Hrac都大于7,均方误差都超过6,Sde都小于91%;文献[9]算法的Hrac甚至只达到 82%,r的值都没有达到0.800,而本文算法的Me、Sde等3个参数值明显低于其他2种算法,并且都小于4,Hrac达到了94.52%,r的值更是接近0.960。由上述数据可以看出,当测试者的相机出现运动时,其他3种算法检测心率的准确率均明显降低,其中文献[11]算法虽用小范围的角度改变来进行人脸校正去除运动干扰,但是在环境和面部同时发生晃动时,其算法只对人脸跟踪进行简单校正,算法性能会有明显降低,无法进行准确心率检测,而本文算法采用对图像的整体进行倾斜校正,表现出强大的抗相机运动干扰能力,因此仍然能够保持良好的性能。

表2 动态实验中不同算法的性能对比

2.2.2 算法稳定性比较

真实场景下的心率检测需要考虑检测时间的长短,基于该问题设计了以下实验来验证算法的性能。首先,设置相机帧数为30帧/s,普通室内光源下,分别对5、10、20、40、60 s时长的相机相对静止的视频和相机晃动的视频进行心率检测,计算不同视频时长下的心率准确率,结果如图5和图6所示。

图5 静止场景中不同时长下的准确率

图6 运动场景中不同时长下的准确率

由图5、图6可知,2种场景中,随着检测时间的减少,4种算法的心率准确率都呈现出下降的趋势,检测时间减少到5 s时,平均准确率下降最严重,原因是在5 s时长下样本的周期数目太少,频率分辨率太差,心率检测的准确率不可避免地会有所下降。从图6可以看出,在相机晃动场景中其余3种算法的平均准确率不到90%,虽然本文算法也呈现下降趋势,但下降曲线相对更平缓,稳定性更好,在晃动场景中本文算法的优势更为显著。同时可以发现,检测时长大于10 s时,采样点足够多,频率分辨率较好,准确率较高且上下浮动不大,是心率检测比较好的时间段。

2.2.3 连续时间的心率监测结果

长时间的心率监测在反映心脏功能状态的变化具有重要的意义。本文设计了一个对测试者进行连续10 min的心率监测。要求测试者在前5 min保持静止,5~10 min晃动手部,最后使用本文算法以10 s为间隔,连续获取60个心率测量值,同时在此过程中不断记录真实心率,获得心率连续检测结果如图7所示。

图7 心率连续检测结果

从整体来看,本文心率检测算法的心率值虽部分与真实值有偏移,但变化规律与真实心率的变化相吻合。从局部来看,在保持相机静止的前5 min,与真实心率的差值明显较小,而在进行有意手部晃动的后5 min,心率偏移明显增大,但仍在可接受范围以内,符合变化规律,这正是由于本文算法削弱了相机晃动的干扰,使得心率偏差在相对稳定的范围,即使偏差较大,但仍然保持了心率的变化规律。

3 结 论

本文提出了一种抗相机运动干扰的心率检测算法,利用SURF特征点检测进行运动估计,利用RANSC算法进行仿射变换,从而得到稳定的人脸面部视频,最后进行FFT心率检测,实现了准确的心率估计。本文还复现了其他3种心率检测算法,对比发现,无论是在静态还是动态情境下本文算法都有良好的表现,是一种稳定的抗相机干扰的心率检测算法。

在实际检测过程中,相机晃动可能会导致视频模糊乃至严重失真,这会严重影响到本文算法的检测性能,在未来的研究中将继续针对大幅度的晃动,如车载心率检测等方向深入研究,不断提升算法鲁棒性。

猜你喜欢
测试者人脸心率
心率多少才健康
有特点的人脸
离心率
离心率相关问题
搜救犬幼犬挑选测试
三国漫——人脸解锁
指纹收集器
探索圆锥曲线离心率的求解
可监测脑电波的智能灯
马面部与人脸相似度惊人