基于IPPG的非接触式血氧饱和度检测技术研究
2021-12-22柴荣轩赵津发张文昌
柴荣轩,赵津发,吴 航,张文昌,张 广,陈 炜*
(1.天津理工大学机械工程学院先进机电系统设计与智能控制重点实验室,天津 300384;2.天津理工大学机械工程学院机电工程国家级实验教学示范中心,天津 300384;3.军事科学院系统工程研究院卫勤保障技术研究所,天津 300161)
0 引言
血氧饱和度是人体重要的生理体征参数之一,可以通过检测其数值的大小,诊断与预防多种疾病,判断人体的生理健康状况[1]。测量血氧饱和度的传统方法是先进行人体采血,再利用血气分析仪进行电化学分析,最终得出血氧饱和度的数值[2]。传统的测量方法虽然精确,但操作复杂,需要被测者高度配合,并且属于有创伤测量,不便于日常使用。目前,基于光电容积描记(photoplethysmography,PPG)技术的接触式检测设备(如指夹式血氧仪、血氧监测手环等)获得了广泛应用,可在众多场合进行血氧饱和度测量[3]。虽然接触式检测设备能够连续无创伤地测量血氧饱和度,但是接触式技术属性限定了其应用场景。例如,其在战场和自然灾害中的人员搜救和新生儿监护等场景中的应用有很大局限性,但非接触式检测不受限制[4]。同时,在疫情防控中,接触式生理体征检测也有交叉感染的风险,给医护人员的生理和心理带来沉重负担。因此,基于成像式光电容积描记(imaging photoplethysmography,IPPG)的非接触式检测方法得到广泛关注,并且随着成像设备和图像处理算法的更新换代,该方法具有非常大的应用潜力,有无干扰、非侵入、通量大等优势,是未来血氧饱和度检测重要的发展方向之一。
基于IPPG的非接触式检测方法比其他非接触式检测方法(如电磁式、激光式等)的实用性更强[5]。首先,基于IPPG的非接触式检测设备造价低;其次,在检测过程中不会产生高能辐射,对人体无害;最后,其操作简单、灵活,易于使用和推广。目前,在IPPG技术的基础上,众多学者已经实现对心率[6-8]、呼吸率[8-10]、血氧饱和度[11-21]等生理参数的非接触式检测,但对血氧饱和度的检测相对来说不够成熟,检测精度不能达到预期要求。
本研究提出一种新的血氧饱和度检测方法,采用基于Tensor RT加速的多任务卷积神经网络(multi-task convolutional neural network,MTCNN)人脸检测算法、欧拉运动放大和颜色放大相结合的欧拉视频放大(Eulerian video magnification,EVM)算法、集合经验模态分解(ensemble empirical mode decomposition,EEMD)和小波变换(wavelet transform,WT)联合滤波算法等,提高血氧饱和度的检测精度。
1 检测原理
IPPG技术是在朗伯-比尔定律和散射理论的基础上发展形成的[22]。当光照射人体皮肤后,光照强度会随着血管中血液容积的变化而变化,反射光中就包含了生理特征的信息[23]。因此,在视频中图像灰度值的变化隐含了生理特征的信息。基于IPPG的血氧饱和度检测原理是对录制的人脸视频进行图像处理,提取包含生理特征信息的信号,再从信号中提取特征参数(如波峰值、波谷值、平均值、标准方差等),最终通过相关参数计算出血氧饱和度的数值[24]。
2 检测方法
本文提出一种新的检测方法——MTCNN-EVMEVM-EEMD-WT方法,其流程图如图1所示。
图1 MTCNN-EVM-EVM-EEMD-WT方法流程图
2.1 MTCNN算法
MTCNN算法是采用基于Tensor RT加速的人脸检测算法[25]。Tensor RT是一个高性能的深度学习推理优化器[26],拥有多种优化方式,可以为深度学习提供低延迟、高吞吐率的部署推理,用于对NVIDIA的图形处理器(graphic processing unit,GPU)进行高性能推理加速,加快MTCNN算法的运行速度。MTCNN算法主要采用3个级联的网络,采用候选框加上分类器的方法进行快速高效的人脸检测。实现MTCNN算法需要完成以下4个步骤:
(1)生成图像金字塔:以适应不同大小的人脸,方便对其进行检测。
(2)P-Net:生成人脸候选框。通过非极大值抑制去除重合度高的人脸图片,对回归向量进行校正。
(3)R-Net:判断人脸候选框中的人脸,并对原有的人脸候选框进行修正。
(4)O-Net:使用更复杂的网络对模型性能进行优化,输出人脸框和关键点。
2.2 EVM算法
由于心脏的搏动和血液循环,脸部血液容积发生变化,其吸收的光照强度也会随之发生变化,从而导致脸部皮肤产生细微的变化,这些变化虽然不易被肉眼察觉,但是包含了丰富的生理特征信息。EVM算法分为颜色放大和运动放大,可以分别放大视频中的颜色和运动变化,使肉眼可以观察到微小的变化。EVM算法相比以前基于拉格朗日视角的放大技术,复杂度更低,需要的计算资源更少,放大效果更好。
EVM算法包括空间滤波、时域滤波、放大合成三部分[27]。空间滤波是通过建立图像金字塔实现的,如图2所示,颜色放大时建立高斯金字塔图像序列,运动放大时建立拉普拉斯金字塔图像序列。时域滤波通过带通滤波器完成,如巴特沃斯滤波器、理想带通滤波器等。放大合成部分是选择合适的放大倍数并与原视频合成,得到放大后的视频。本文创新地采用了EVM算法运动放大和颜色放大相结合的方法,先进行运动放大再进行颜色放大,对微弱的生理特征信息进行充分放大,使其更加明显。
图2 空间滤波图像金字塔建立过程
2.3 EEMD-WT联合滤波算法
对放大后的视频进行通道分离,选取红(R)、蓝(B)2个通道图像,按时间序列对2个通道取每帧图像灰度值均值,得到2组含有生理特征信息的信号,本文称之为IPPG信号。
信号滤波阶段采用EEMD-WT联合滤波算法。首先,进行EEMD,采样频率取100 Hz,为了方便后面进行平稳WT,每组IPPG信号取1 024个数据。EEMD算法可以选出代表基线漂移伪迹的几个本征模态分量,将其置零后叠加剩余的所有本征模态分量生成处理后的信号,利用EEMD算法消除基线漂移。然后,利用WT算法去除高频噪声,设置小波分解层数为4层。最后,去掉前3层小波系数,重构,得到平滑的信号。EEMD-WT联合滤波过程如图3所示。
图3 EEMD-WT联合滤波过程示意图
2.4 血氧饱和度计算
进行血氧饱和度计算时,一般采用经验公式[28-29],即
式中,SpO2为血氧饱和度;A、B、C为经验参数,最终根据“金标准”(指夹式血氧仪检测结果)和R值数据拟合得到。系数R值可以从信号中计算出来,计算公式为
式中,IAC为交流分量,其值为滤波后IPPG信号的标准方差;IDC为直流分量,其值为滤波后IPPG信号的平均值。下角标1和2分别表示第1组信号的变量和第2组信号的变量。
最终通过曲线拟合得到血氧饱和度计算公式(3)和(4),通过后续实验选取最合适的计算公式。
3 实验及分析
3.1 实验设计
实验条件:招募7名志愿者,年龄20~30岁,没有服用药物且身体健康。在不同时间段的自然光照下,志愿者距离网络摄像头1 m左右,静息状态下录制多组视频,视频时长1 min左右,分辨力为1 920×1 080。参考多篇文献[12-14,18,21],图像帧率选取30帧/s能够满足检测要求。
实验设置示意图如图4所示。实验时,志愿者同时采用指夹式血氧仪检测血氧饱和度,其结果作为“金标准”使用,与本算法得到的结果进行对比。为保证血氧饱和度在时间上的同步,在录制视频时,同时将指夹式血氧仪的显示界面录入其中,因此每一秒视频都有指夹式血氧仪数值与之对应。使用NVIDIA Jetson Xavier NX开发板代替传统便携式计算机作为数据处理单元,其体积小、质量轻、迁移性强,计算能力不弱于普通便携式计算机,且图像处理能力更强,能够提高检测效率。
图4 实验设置示意图
本次实验设计为算法参数选取实验和“金标准”对比实验。算法参数选取实验包括EVM算法和滤波算法的对比选取;“金标准”对比实验是先完成本文方法检测结果与指夹式血氧仪检测结果之间的对比,然后再将本文方法与其他方法的检测精度进行比较。
3.2 算法参数选取实验
3.2.1 EVM算法选取实验
本次实验共选取20个视频,标号为1~20,进行4组血氧饱和度检测实验。第1组采用先颜色放大、后运动放大的算法,第2组采用先运动放大、后颜色放大的算法,第3组只采用颜色放大算法,第4组只采用运动放大算法。每组结果与指夹式血氧仪检测结果进行对比,计算出平均误差,最终选出最合适的EVM算法。本次实验血氧饱和度检测结果如图5所示。
图5 EVM算法选取实验血氧饱和度检测结果
根据指夹式血氧仪检测结果,对每组检测结果求平均误差,得出先颜色放大、后运动放大的平均误差为1.0%,先运动放大、后颜色放大的平均误差为0.9%,只进行颜色放大的平均误差为1.0%,只进行运动放大的平均误差为1.0%。由此可知,EVM的各种算法对本次实验血氧饱和度检测精度的影响较小,其中,先运动放大后颜色放大的算法平均误差最小。因此,本文选用先进行运动放大再进行颜色放大的EVM算法。
3.2.2 滤波算法选取实验
本实验进行3次2种不同的滤波算法对比实验,一种为EEMD-WT联合滤波算法,另一种为较为常用的巴特沃斯滤波算法。每次实验选用21个视频进行血氧饱和度检测,依次标号1~21,将实验结果与指夹式血氧仪检测结果进行对比,并求出平均误差。滤波算法选取实验的3次血氧饱和度检测结果如图6所示。对各检测结果与指夹式血氧仪检测结果进行对比,求平均误差,详见表1。
由图6和表1可知,EEMD-WT联合滤波算法滤波效果要比巴特沃斯滤波算法效果好,EEMD-WT联合滤波算法的平均误差为0.952%、1.333%、1.000%,小于巴特沃斯滤波算法的平均误差(1.524%、1.952%、1.667%)。因此,综合3次实验的平均误差,选用EEMD-WT联合滤波算法。
表1 血氧饱和度检测结果的平均误差单位:%
图6 滤波算法选取实验的血氧饱和度检测结果
3.3 “金标准”对比实验
为了验证本文检测方法的准确性,扩大血氧饱和度的检测范围,设计了憋气实验。实验过程如下:为志愿者录制一段2 min左右的视频,期间志愿者进行2次憋气,使血氧饱和度降低;对整段视频的每256帧(约8.5 s)检测一次,与指夹式血氧仪检测结果对比,验证血氧饱和度的检测精度和变化趋势。并且分别对2个待选的血氧饱和度计算公式(3)和公式(4)进行对比实验。“金标准”对比实验的血氧饱和度检测结果如图7所示。
图7 “金标准”对比实验的血氧饱和度检测结果
图7中绿色曲线为指夹式血氧仪的检测结果,实验期间该曲线有2次较大的波动,是2次憋气造成的血氧饱和度数值变化。本文方法的检测结果曲线与其有相似的变化趋势,且经过计算,公式(3)的平均误差为1.568 2%,公式(4)的平均误差为1.659 1%,因此,选择公式(3)作为血氧饱和度的计算公式。再对公式(3)检测结果进行Bland-Altman一致性分析[30],结果如图8所示。
图8 血氧饱和度的Bland-Altman一致性分析
在Bland-Altman一致性分析中,没有点落在95%的置信区间之外,只有一个点落在区间边界上,其余点全部在区间之内,表明本文方法的检测结果与指夹式血氧仪的检测结果具有较好的一致性。
经过上述试验,算出最终的平均误差,并与其他文献的检测结果误差进行对比。文献[31]的血氧饱和度检测误差为0.25%~1.5%,文献[32]和文献[33]的检测误差均不超过±3%,文献[34]的检测误差不超过±2%,而本文方法的平均误差为1.1506%,与其他文献的检测误差相比,本文检测误差较小,检测精度虽然不能完全超过,但也超过了绝大多数的方法,达到了预期要求。其中,文献[31]有特定检测对象——老年人,且血氧饱和度样本范围集中在97%~99%,范围较小,所以精度有时可能较高。而本文血氧饱和度样本范围为92%~99%,且无特定对象,普适性更强。
4 结语
非接触式血氧饱和度检测方法具有很大的应用潜力,是血氧饱和度检测的重要发展方向之一。本文综合人脸检测算法、EVM算法和滤波算法,创新地提出了MTCNN-EVM-EVM-EEMD-WT方法。该方法可以很好地完成血氧饱和度的非接触式检测,且误差较小,平均误差不到2%,能够达到预期要求。通过“金标准”对比实验,得出该方法检测结果与接触式血氧仪检测结果具有较好的一致性。未来的工作重点是进一步扩大低血氧饱和度的样本,完善检测方法和优化算法,扩大非接触式血氧饱和度检测方法的应用领域。