【基于人脸特征的心率检测研究】非接触式光电容积图和红外人脸视频瞬时心率估计

(Ps:需要实现源码的请私戳我)

(一)论文地址:

《Non-contact photoplethysmogram and instantaneous heart rate estimation from infrared face video》

(二)核心思想:

通过视频中的人脸检测心率是一个很新颖的话题,博主最近看了这一篇,数据很不错,就在这里分享一下;

监测心率一般用的是 ECG 或者 PPG:

ECG 是通过获取体表的生物电来进行测量,这些生物电产生的一些了的电位改变被记录下来形成心电图;PPG是采用光的反射测量,血液中的血红蛋白的浓度会随着脉搏的跳动发生变化,光通过皮肤穿过血液时,不断变化的血容量对光的吸收量相应的在不停变化,通过这种变化提取心率值;

由于环境或运动等因素的干扰,光信号的灵敏度会降低,导致结果不准,并且这两种方法一般都需要与皮肤直接接触,在车载电脑上并不适用(比如车载电脑最常用的是摄像头,而一般不会伸出来两个穿戴式设备);因此有人开始研究通过人脸视频检测心率;

一般视频人脸的心率检测的方法是,通过测量血流造成的面部颜色变化并放大,来检测心率;这种方法一个局限性就是,需要提供光源并且不同环境光条件对其有所限制;

一个办法就是使用红外摄像机来检测,作者在这里就提出了一个新方法,即通过红外相机跟踪人脸,并提取人脸特定区域的 PPG 信号从而计算心率;

算法如下:

  1. 检测视频中的人脸并将其分割成 n r n_r 个中不相交的空间区域;
    在这里插入图片描述

  2. 取每个区域的平均活动,对其进行去噪,并将其分解为更小的源子集;在这里插入图片描述

  3. 引入一个信号质量指标来选择感兴趣的信号,并将它们结合起来构成需要的非接触PPG信号;在这里插入图片描述

(三)输入的红外视频:

对于每个受试者,我们假设一个映射:

V : R R n × m V:R\rightarrow R^{n×m}

V ( t ) V(t) 代表某个受试者在 t t 时刻截取的大小为 n × m n×m 的视频的某一帧;

那么我们假设每 τ \tau 时间取一次样,频率为 1 / τ 1/\tau ,在 T T 时间内共取得 n t = [ T / τ ] n_t=[T/\tau] 帧;

实验中帧率 τ = 58 H z \tau=58Hz ,并假设主体的头部是固定的,所以画面之间的主要运动被忽略;

(四)处理红外视频:

这里使用了 Dlib 库检测人脸关键点,并以此对人脸进行分区;

由于之前假设头部固定(开车一般没有人摇头晃脑,,,),所以 T T 时刻内只需要检测一次;

假设每个分区为 R i , i = 1 , , n r R_i,i=1,…,n_r ,对于每一帧 V j : = V ( j τ ) R n × m , j = 1 , , n t V_j:=V(j\tau)\in R^{n×m},j=1,…,n_t ,计算每个 m I R mIR (平均红外值) 方法为:

y i , j : = 1 R i ( x , y ) R i V j ( x , y ) y_{i,j}:=\frac{1}{\mid R_i\mid}\sum_{(x,y)\in R_i}V_j(x,y)

这样就得到了一个原始的数据矩阵,每个值代表相应时间点和相应区域的平均红外值:

Y 0 R n r × n t Y_0\in R^{n_r×n_t}

即矩阵的第 i i 行代表了第 i i 个区域 R i R_i 的平均红外值随时间的变化序列;

在研究中,作者使用了不相互重叠的 5×5 像素大小的区域分割:
在这里插入图片描述

为了对时间序列去噪,作者对数据矩阵 Y 0 Y_0 中的每个通道应用一个阶数为 5 的巴特沃斯带通滤波,截止频率为24和300次/分钟,这个范围可以很好地适应大多数正常心率;

得到的经过滤波去噪的数据矩阵为 Y Y

其中巴特沃斯带通滤波的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零;

在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐渐减少,趋向负无穷大;

定义为:
在这里插入图片描述
1 n n 为阶数;
2. ω c \omega_c 为截止频率;
3. ω p \omega_p 为通频带边缘频率;

频率响应曲线为:
在这里插入图片描述

(五)低秩时空模型:

假设红外视频捕捉了不同的生理动态,如呼吸、身体运动和血流动力学等,并称这些生理特征为:

X i R n t , i = 1 , , n s X_i\in R^{n_t},i=1,…,n_s , 并且 n s m i n { n r , n t } n_s\leq min\lbrace n_r,n_t\rbrace (假设 n s n_s 是固定的)

注意即使 i j i\neq j X i X_i X j X_j 也有可能不是正交的,例如,呼吸窦性心律失常可能导致血流动力学和呼吸动力学的耦合(不是专业的,,,我也解释不了,大概是指特征之间并不是相互独立的);

那么我们就可以将数据矩阵 Y Y 建模为这些 n s n_s 个源信号与附加噪声和不相关噪声的混合:

Y = A X + σ Z Y=AX+\sigma Z

其中:

  1. X R n s × n t X\in R^{n_s×n_t} ,表示特征源的信号随时间的变化序列;
  2. A R n r × n s A\in R^{n_r×n_s} ,表示特征混合矩阵;
  3. Z Z 是一个与零均值、单位方差的有限四阶矩阵独立同分布的噪声矩阵;
  4. σ 2 > 0 \sigma^2>0 ,是一个描述噪声方差的标量常数;

换句话说, Y i Y_i 就是某一区域经过矩阵 A A 混合生理特征并加噪得到的矩阵;

(六)选取有效特征:

由于时空模型的低秩性和高维性,我们将 SVD(奇异值分解)应用于数据矩阵 Y Y

Y = U Λ V Y = UΛV ,其中 U O ( n r ) U∈O(n_r) 由左奇异向量组成, V O ( n t ) V∈O(n_t) 由右奇异向量组成, Λ R n r × n t Λ ∈R^{n_r×n_t} 由奇异值 σ 1 σ 2 . . . σ m i n { n r , n t } 0 σ1 ≥ σ2 ≥ . . . σ_{min\lbrace n_r,n_t\rbrace} ≥ 0 组成;

假设 β : = n t / n s β := n_t/n_s n s n^∗_s 是奇异值的数目,这样就有: η ( σ i / σ ) > 0 \eta(\sigma_i/\sigma)>0

并且由于噪声量级 σ \sigma 是未知的,我们通过如下方式估计:
在这里插入图片描述

其中 μ b \mu_b 是 Marcenko-Pastur 分布的均值;

通过这样的处理,就能够将矩阵 Y Y 中的非零奇异值减小 80% 左右;

(七)重构非接触 PPG 信号:

由于生理源的非正交性,常规的盲源分离技术不能直接从 Y Y 中提取 X X

因此作者提出了一种重构 PPG 信号的算法;

首先作者=为长度为 n t n_t 的信号 x 定义一个信号质量指数(SQI):

在这里插入图片描述

其中:

  1. x ^ \hat x 是时间序列 x x 的傅里叶变换;
  2. f p f_p 是预期的心率;

那么 Q ( x ) Q(x) 就量化了时间序列 x x 在频域内围绕 f p f_p 的集中程度;

再把所有的时间信号 v i v_i 按照 SQI(即 Q ( v i ) Q(v_i) )排序, i = 1 , . . . , n s i = 1, . . . , n^∗_s ,得到了重新排序排列的映射:

q : { 1 , 2 , , n s } { 1 , 2 , , n s } q:\lbrace 1,2,…,n_s^*\rbrace\rightarrow\lbrace 1,2,…,n_s^*\rbrace

满足 Q q ( 1 ) Q q ( 2 ) Q q ( n s ) Q_{q(1)}\geq Q_{q(2)}\geq…\geq Q_{q(n_s^*)}

并且将红外 PPG 信号定义为:
在这里插入图片描述

这里通过贪心积累信号源来确定 J J ,直到达到最大的质量:
在这里插入图片描述

(八)瞬时心率的估计:

假设构造的非接触式 PPG 信号的快速傅里叶变换为:

在这里插入图片描述

使用曲线提取器从快速傅里叶变换中提取优势曲线:

在这里插入图片描述
其中 λ > 0 λ> 0 是一个正规化常数;

那么心率 i H R iHR 就可以表示为:
在这里插入图片描述

(九)实验结果:

在这里插入图片描述
在这里插入图片描述

发布了100 篇原创文章 · 获赞 142 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44936889/article/details/104529640