一种基于视频图像的非接触式生命体征检测系统及方法

文档序号:31638123发布日期:2022-09-24 05:51阅读:260来源:国知局
一种基于视频图像的非接触式生命体征检测系统及方法

1.本发明属于图像处理技术领域,具体涉及一种基于视频图像的非接触式生命体征检测系统及方法。


背景技术:

2.基于视频的非接触生命体征检测是一种新兴的生理信号测量技术,旨在从被测人的视频数据中提取与人体生命体征信息相关的信号(如心率、呼吸等),实现人体健康状况的实时监测。相比于其他监测手段,基于视频的非接触生命体征检测技术不需要受试者佩戴专用传感器,能实现无人化自动测试,适用于婴幼儿或老年人的健康监护等应用场景。
3.基于视频的非接触式生命体征检测技术的一般流程如下:1)获取视频数据,采用图像处理算法确定皮肤(通常是面部)感兴趣区域;2)分别计算感兴趣区域中所有像素点三个颜色通道的均值,按视频帧的采集顺序排列成三个均值数据向量,向量长度等于视频帧的数量;3)对三个颜色均值向量进行信号处理,分离出生命体征相关的信号成分;4)采用fft等信号处理算法,计算出生命体征信号的频率等信息,完成人体生命体征信息的检测。步骤1)所涉及的“图像处理算法确定面部感兴趣区域”,一般采用基于滑动窗口的人脸检测算法,或基于颜色模型的皮肤分割算法;步骤3)所涉及的“信号处理算法分离出生命体征相关成分信息”,一般采用基于成像模型的算法、或盲源分离算法。步骤3)的性能,非常依赖于步骤1)面部感兴趣区域的识别准确性。对于滑窗人脸检测算法,其检测准确性较高,但计算量较大,虽然目前有适用于嵌入式环境的优化算法,但受其基本原理的限制,滑窗方法必须反复多次读写内存数据,易出现内存带宽瓶颈,影响最终的计算性能,限制其在嵌入式平台的应用。若采用固定区域的检测方法,虽然可以避免滑动窗口带来的大量复杂计算和内存带宽瓶颈,但需要受试者配合并保持静止,应用场景受限。而基于颜色模型的皮肤分割算法,计算量和内容开销小,适合在嵌入式环境中运行。但是该方法容易受背景环境的干扰,检测效果差,影响生命体征信号的提取,在对检测性能要求较高的应用中无法使用。因此,当前的嵌入式非接触生命体征检测方法受检测算法原理和硬件运行条件的限制,存在检测性能和运行成本的矛盾。
4.目前的非接触式生命体征检测技术,在检测性能与设备成本之间存在矛盾:如要求达到较高的检测精度,则需要复杂的图像和信号处理算法,其计算时间长,算力资源需求高,需要pc机等大型计算设备,体积大、成本高、便携性差,不易携带和使用;若采用简单算法以降低计算复杂度和资源开销,使其能够在低成本、便携式的嵌入式环境中运行,则无法达到满意的检测效果,特别是在家庭康养、运动科学研究等用户配合度低的应用场合,采用简单算法和嵌入式平台的非接触生命体征检测设备的性能更加无法满足实际要求。
5.综上,如何设计高性能、低成本的非接触式生命体征检测方法,是当前亟需解决的技术难题,也是限制非接触式生命体征检测产品在日常健康检测、智能医疗保健、运动状态监控等进行推广的重要因素。
6.本发明阐述一种基于并行异构嵌入式平台的快速非接触式生命体征检测方法,综
合软件设计和集成电路设计两种设计手段,高性能、高效率地实现非接触式生命体征检测所必需的“面部感兴趣区域提取”、“生命体征信号成分分离”等关键算法,使其能在嵌入式平台中有效运行,解决当前相近技术方案存在的性能与成本矛盾,为开发高性能、低成本、便携式的非接触生命体征检测设备提供支持。


技术实现要素:

7.针对现有技术中存在的上述技术问题,本发明提出了一种基于视频图像的非接触式生命体征检测系统及方法,设计合理,克服了现有技术的不足,具有良好的效果。
8.为了实现上述目的,本发明采用如下技术方案:
9.一种基于视频图像的非接触式生命体征检测系统,包括多核异构微处理器,多核异构微处理器包括可编程控制系统和可编程逻辑系统;可编程控制系统由包括arm在内的微处理器构成,可编程逻辑系统由包括fpga在内的可编程逻辑电路构成。
10.此外,本发明还提到一种基于视频图像的非接触式生命体征检测方法,该方法采用如上所述的一种基于视频图像的非接触式生命体征检测系统,具体包括如下步骤:
11.步骤1:采用多核异构微处理器进行视频图像采集;
12.步骤2:像素格式变换;
13.步骤3:图像数据缓存;
14.步骤4:皮肤区域检测;判断是否检测到皮肤区域;
15.若:判断结果是检测到皮肤区域,则执行步骤5;
16.或判断结果是没有检测到皮肤区域,则执行步骤1;
17.步骤5:人脸区域粗检测;
18.步骤6:人脸区域精检测;判断是否检测到人脸区域;
19.若:判断结果是检测到人脸区域,则执行步骤7;
20.或判断结果是没有检测到人脸区域,则执行步骤1;
21.步骤7:获取ppg信号即光电容积脉搏描记信号;
22.步骤8:计算结果并显示。
23.优选地,在步骤2中,在步骤2中,使用可编程逻辑系统,通过公式(1)将每一帧视频的像素数据从16bit的rgb565数据格式变换为24bit的rgb888数据格式;
[0024][0025]
其中,pix
rgb565
表示格式的像素数据,每个像素16bit;pix
r8
、pix
g8
、pix
b8
分别表示变换为rgb888格式后的r、g、b三通道颜色数据,每个通道的颜色数据都为8bit,共计24bit。
[0026]
优选地,在步骤3中,将可编程逻辑系统的片上存储资源分成两个缓存部分,分别命名为mem1、mem2,用于存放转换后的像素数据和检测算法运行过程中的中间结果;
[0027]
mem1是二维缓存,每个缓存有l行,标记为其中r=1,2,
……
,l,代表行序号,缓存的每行包含k2个存储单元,每个存储单元的位宽为24bit,用于存储一个rgb888格式的像素数据,l和k的选取满足l
×
k2=w
×
h;
[0028]
图像数据以分块的方式存储到缓存中,具体过程如下:
[0029]
将输入图像划分为l个k
×
k的方块,依次标记为b
1,1
、b
1,2

……
、b
i,j

……
、b
w/k,h/k
,其中i和j分别为图像块所在的行列序号;
[0030]
将b
1,1
至b
1,w/k
存储到mem1的至中,将b
2,1
至b
2,w/k
存储到mem1的至中;以此类推,直到将b
h/k,1
至b
h/k,w/k
存储到mem1的至m1l中;
[0031]
mem2是二维缓存,存储单元数量为w/k
×
h/k,标记为其中,i=1,2,
……
,w/k,j=1,2,
……
,h/k,代表存储单元序号,每个存储单元的位宽为1,这些存储单元用于存储算法运行过程的中间结果;
[0032]
进行图像数据缓存后,mem1缓存的每个行与原图像每个k
×
k的方块一一对应,mem2缓存的每个单元与原图像每个k
×
k的方块一一对应。
[0033]
优选地,在步骤4中,具体包括如下步骤:
[0034]
步骤4.1:当读取完k行图像数据时,mem1缓存的第1行至第w/k行同时存满,此时启动皮肤区域检测;检测过程以mem1缓存的行为单位进行,先从mem1缓存的第一行即m
1,1
中顺次读取已存储的rgb888格式的像素数据,采用公式(2)将每个图像像素从rgb色彩空间转换到ycrcb色彩空间;
[0035]
步骤4.2:通过可编程逻辑系统,将公式(2)中浮点数乘法操作变换为整数乘法+移位操作,如公式(3)所示;
[0036]
步骤4.3:每个像素转换后,使用可编程逻辑系统的片上触发器资源,构建两个8bit寄存器,将转换得到的cr和cb分量存储起来;
[0037][0038]
y=(306*pix
r8
+601*pix
g8
+117*pix
b8
)>>10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3);
[0039]
步骤4.4:利用公式(4)对转换后的颜色进行阈值比较,处在阈值范围内的像素即为皮肤像素;通过可编程逻辑系统,构建四个数值比较电路,对cr和cb的数值进行判断;同时,通过可编程逻辑系统内的计数器,对满足阈值范围的像素点个数即皮肤像素进行累加,当检测完m
11
行中所有k2个像素时,如果计数器数累加值与像素总数k2的比值超过阈值α,则将mem2缓存中对应的单元置为1,否则将置为0;依此类推,完成mem1缓存中其余所有数据的处理,并将mem2缓存中对应的单元赋值为1;处理后的mem2缓存,将原图像划分为l个k
×
k的区域,其中数值为1的单元,标记了原图像中可能存在皮肤的区域块,作为人脸区域检测的基础;
[0040][0041]
优选地,在步骤5中,具体包括如下步骤:
[0042]
步骤5.1:采用边长为a的正方形窗口对mem2缓存所代表的w/k
×
h/k大小的矩形进行开运算,去除其中的包括微小桥接和孤立点在内的噪声,相当于滤除掉原图像中小范围的、与皮肤颜色相近的区域,留下面积较大的相邻区域,即为人脸候选区域;
[0043]
步骤5.2:采用n个尺寸为w1×
h1、w2×
h2、
……
、wn×hn
的矩形窗口,对mem2所代表的w/k
×
h/k大小的矩形进行滑动求和操作,依次计算窗口滑动过程中所覆盖的矩形区域中存储值为1的单元数量,取其值超过阈值β且数值最大的窗口位置作为最终的粗检测人脸区域。
[0044]
优选地,在步骤5中,人脸区域粗检测的模块,包括数据读取子模块、滑动求和子模块以及结果输出子模块;
[0045]
数据读出子模块,包括w/k个存储器读取电路,每个读取电路在输入时钟信号的作用下的读地址和读有效信号,时钟信号为占空比50%的方波、频率为f
cp
,读地址为随时钟信号依次加一的、位宽为log2(h/k)的二进制信号,读有效信号为1bit的低电平信号;由数据读取子模块并行读出的w/k个数据,送入滑动求和子模块;
[0046]
滑动求和子模块,根据滑窗数量n,滑动求和子模块分为n个组同时进行,每组的工作原理相同,第一组的工作过程如下:
[0047]
对于第一组滑窗求和子模块,其对应的滑窗尺寸为w1×
h1,第一组求和模块首先构建(w/k)-w1+1个树形加法器组,每个加法器组在一个工作时钟周期内可以同时计算w1个行数据的和,每经过h1个工作时钟周期,一个加法器组完成一个滑窗面积内所有数值为1的存储单元数量求和,将(w/k)-w1+1个加法器组的和结果分别存储到(w/k)-w1+1个寄存器中,记为为对应的滑窗位置存储到另一组寄存器中,记为当求和模块完成下一个滑窗面积下所有数值为1的存储单元数量求和之后,将新的求和结果与上一个滑窗求和结果进行比较,用数值较大的结果更新和依此类推,经过h/k-h1个工作时钟周期后,滑窗求和子模块完成mem2中所有面积为w1×
h1区域数值为1的存储单元个数统计,再通过可编程逻辑系统中设计的比较器得到(w/k)-w1+1个结果寄存器中的一个以及其所对应的滑窗位置寄存器完成一组滑窗求和计算;最后,将n组滑窗求和子模块得到的求和数值,送入结果输出子模块;
[0048]
结果输出子模块,通过多次判断进行最终的输出选择:判断第1组求和数值是否大于阈值β;若第1组求和数值大于阈值β,则将该组对应的滑窗位置和窗口大小作为结构输出,否则,继续判断下一组的求和数值,若下一组的求和数值大于阈值,则返回结果;如果所有组的求和结果均小于阈值,则返回最后一组求和结果对应的滑窗位置和窗口大小;
[0049]
结果输出子模块,包括多级比较器、优先编码器和n选1数据选择器;
[0050]
优先编码器接收所有比较器的输出结果,其编码规则如下:
[0051]
如果第一个比较器输出为1,不论后面的比较器输出为何,均产生编码值“1”;如果第一个比较器输出为0,第二个比较器输出为1,无论后面的比较器输出为何,均产生编码值“2”;依此类推,如果只有最后一个比较器输出为1,则产生编码值“n”;
[0052]
n选1数据选择器以优先编码器的输出值作为选通信号,用于选择最终输出n组滑动求和子模块中哪一组的求和寄存器和滑窗位置寄存器。
[0053]
优选地,在步骤6中,具体包括如下步骤:
[0054]
步骤6.1:以粗检测所返回的窗口位置为检测区域,使用人脸检测方法进行人脸区域的精确检测;
[0055]
步骤6.2:通过可编程控制系统,检测输出人脸区域左上、右上、左下、右下四个边
界坐标;
[0056]
步骤6.3:采用固定形状的模板,将包括人脸中眼睛、鼻子、嘴、下巴在内的位置去除,仅保留额头和脸颊部分,作为检测的有效区域。
[0057]
优选地,在步骤7中,具体包括如下步骤:
[0058]
步骤7.1:根据精检测后得到的人脸额头与脸颊区域像素,计算其绿色通道的像素均值,按照视频帧的时间顺序排列,得到一个像素均值向量g
mean
=[g1,g2,

,g
t
],其中t代表视频帧的数量;
[0059]
步骤7.2:采用截止频率为f
l
~fh的带通滤波器对像素均值数据向量g
mean
进行带通滤波,得到滤波后的绿色通道像素均值向量
[0060]
优选地,在步骤8中,具体包括如下步骤:
[0061]
步骤8.1:选取像素均值向量中连续p个元素,使其数量为2的整幂次倍;
[0062]
步骤8.2:对这些像素进行快速傅里叶变换并得到相应的频谱分布,查找频谱中最大幅值分量的序号i
max
,根据公式(5)计算出心率hr;
[0063][0064]
其中,fs代表傅里叶变换的采样频率,即视频的帧率。
[0065]
本发明所带来的有益技术效果:
[0066]
本发明针对目前非接触式生命体征检测技术在检测性能与设备成本之间存在的矛盾,设计一种基于并行异构嵌入式平台的快速非接触式生命体征检测方法,采用多核微处理器,从算法原理和实现方式的角度简化非接触生命体征检测所涉及的图像与信号处理算法及流程,高性能、高效率地实现非接触式生命体征检测,在提高检测准确性同,降低检测方法的复杂度和资源开销,使其能够在低成本的嵌入式平台中快速稳定运行,拓宽非接触式生命体征检测产品的应用场景,预期创造可观的经济价值;
[0067]
与现有的非接触式生命体征检测技术相比,本发明所公开的技术方案采用并行异构嵌入式微处理器,将非接触式生命体征检测所必需的人脸检测等计算复杂度较高的关键算法进行并行化加速,在保持检测效果的前提下,降低算法的算力需求和资源开销,使其能够快速稳定的运行于低成本嵌入式平台中,大幅降低了设备的成本、体积和能耗,且便携程度高,可随身携带,便于用户操作和使用;
[0068]
所公开的非接触式生命体征检测方法,使用可编程逻辑器件和硬件电路加速技术,实现了图像像素格式转换、皮肤区域分割、人脸区域粗检测等关键算法,具有很高的并行性和运行速度,相比于基于软件实现的人脸检测技术,具有更高的实时性和更低的运算开销,有利于在低成本的嵌入式平台中实现非接触生命体征检测;采用了颜色空间变换和阈值分割算法进行皮肤检测,一方面提高了对光照条件的鲁棒性,确保皮肤检测结果的准确和稳定;另一方面,从原理上降低了计算复杂度,便于将算法运行于嵌入式平台中;采用分块处理的思路,将原始高分辨率的图像划分为若干小区域,结合皮肤分割方法进行人脸区域的粗检测,大幅降低了面部感兴趣区域检测的计算复杂度,在此基础上进行限定范围的人脸区域精检测,能够在压缩计算资源的同时保证检测的准确,实现性能和效率的同时提升。
附图说明
[0069]
图1为本发明非接触式生命体征检测方法的流程图;
[0070]
图2为像素数据格式转换电路示意图;
[0071]
图3为数据缓存过程示意图;
[0072]
图4为色彩空间转换的实现电路结构图;
[0073]
图5为皮肤分割算法的实现电路结构图;
[0074]
图6为人脸区域粗检测实现过程图。
具体实施方式
[0075]
下面结合附图以及具体实施方式对本发明作进一步详细说明:
[0076]
实施例1:
[0077]
一种基于视频图像的非接触式生命体征检测系统,包括多核异构微处理器,多核异构微处理器为核心控制器,该处理器包含两个控制核心:可编程控制系统(以下简称为ps部分),和可编程逻辑系统(以下简称为pl部分)。ps部分可由arm等微处理器构成,使用c\c++语言编写软件实现用户功能,pl部分可有fpga等可编程逻辑电路构成,使用verilog等硬件描述语言设计硬件电路实现用户功能。本技术采用硬件描述语言编写pl端硬件设计代码,使用pl端控制小型cmos数字摄像头,视频像素分辨率为w
×
h,帧频为fs。cmos数字摄像头输出像素的数据格式为rgb565,即每个像素中,用5bit表示红色(r)、6bit表示绿色(g)、5bit表示蓝色(b)。
[0078]
实施例2:
[0079]
在上述实施例1的基础上,本发明还提到一种基于视频图像的非接触式生命体征检测方法(其流程如图1所示),具体包括如下步骤:
[0080]
步骤1:视频图像采集;
[0081]
以zynq系列的z7020多核异构微处理器作为核心控制器,该处理器的ps部分是cortex-a9 arm,pl部分是等同于artix-7系列fpga的可编程逻辑器件。视频像素分辨率为640
×
320,帧频fs为30hz。
[0082]
步骤2:像素格式变换;
[0083]
使用pl端,通过公式(1)将每一帧视频的像素数据从16bit的rgb565数据格式变换为24bit的rgb888数据格式。
[0084][0085]
其中,代表pix
rgb565
格式的像素数据(每个像素16bit),pix
r8
、pix
g8
、pix
b8
分别代表变换为rgb888格式后的r、g、b三通道颜色数据,每个通道的颜色数据都为8bit,共计24bit。公式(1)采用硬件方式实现,使用硬件描述语言在pl端进行编程设计。具体电路形式如图2所示。
[0086]
步骤3:图像数据缓存;
[0087]
使用pl部分的片上存储资源构成2个缓存,分别命名为mem1、mem2,用于存放转换后的像素数据和检测算法运行过程中的中间结果。
[0088]
mem1是二维缓存,每个缓存有200行,标记为其中r=1,2,
……
,200,代表行序号,缓存的每行包含32
×
32=1024个存储单元,每个存储单元的位宽为24bit,用于存储一个rgb888格式的像素数据,该缓存的数据量为200
×
1024
×
24bit=640
×
320
×
3byte=600kbyte。图像数据以分块的方式存储到缓存中,具体过程如下:将输入图像划分为200个32
×
32的方块,依次标记为b
1,1
、b
1,2

……
、b
i,j

……
、b
10,20
,其中i和j分别为图像块所在的行列序号,将b
1,1
至b
1,20
存储到mem1的至中,将b
2,1
至b
2,20
存储到mem1的至中,以此类推,直到将b
10,1
至b
10,20
存储到mem1的至中。该过程如图3所示。
[0089]
mem2是一维缓存,存储单元数量为10
×
20,标记为其中,i=1,2,
……
,10,j=1,2,
……
,20,代表存储单元序号,每个存储单元的位宽位1(总容量为200bit),这些存储单元与用于存储算法运行过程的中间结果。
[0090]
进行图像数据缓存后,mem1缓存的每个行与原图像每个32
×
32的方块一一对应,mem2缓存的每个单元与原图像每个32
×
32的方块一一对应。这种处理方式,将输入图像数据按照特殊设计的形式组织起来,便于后续人脸区域检测算法进行快速的数据读取,提高存储访问的效率和算法运行速度。
[0091]
步骤4:皮肤区域检测;
[0092]
当读取完k行图像数据时,mem1缓存的第1行至第w/k行同时存满,此时启动皮肤区域检测操作。检测过程以mem1缓存的行为单位进行,先从mem1缓存的第一行(即m
1,1
)中顺次读取已存储的rgb888格式的像素数据,采用公式(2)将每个图像像素从rgb色彩空间转换到ycrcb色彩空间。公式(2)的转换过程采用硬件方式实现,为了便于使用硬件描述语言在pl端进行编程设计,将公式(2)中浮点数乘法操作变换为整数乘法+移位操作,具体如公式(3)所示;公式(2)中的减法操作使用补码加法器实现。每个像素转换后,使用pl端的片上触发器资源,构建两个8bit寄存器,将转换得到的cr和cb分量存储起来。
[0093]
具体电路形式如图4所示。每个像素转换后,使用pl端的片上触发器资源,构建两个8bit寄存器,将转换得到的cr和cb分量存储起来。
[0094][0095]
y=(306*pix
r8
+601*pix
g8
+117*pix
b8
)>>10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3);
[0096]
之后,利用公式(4)对转换后的颜色进行阈值比较,处在阈值范围内的像素即为皮肤像素。阈值比较采用硬件方式实现,使用硬件描述语言在pl端进行编程设计,通过构建四个数值比较电路,对cr和cb的数值进行判断;具体电路形式如附图5所示。同时,使用一个计数器,对满足阈值范围的像素点个数(即皮肤像素)进行累加,当检测完行中所有322个像素时,如果计数器数累加值与像素总数322的比值超过阈值α=0.5,则将mem2缓存中对应的单元置为1,否则将置为0。依此类推,完成mem1缓存中其余所有数据的处理,并对mem2缓存中相应的单元幅值。处理后的mem2缓存,将原图像划分为200个32
×
32的区域,其中数值为1的单元,标记了原图像中可能存在皮肤的区域块,作为人脸区域检测的基础。
[0097][0098]
上述过程的主要优势有两点,其一,使用pl端的资源设计硬件电路实现皮肤检测功能,具有很高的运行速度,能够在图像读取的过程中同步完成皮肤检测(仅有32行数据读入时间的延迟),可以缩短算法在嵌入式环境中的运行时间。其二,对图像数据进行32
×
32大小的分块存储和处理,相当于对原始图像进行32
×
32倍的降维,能够有效提升后续人脸检测操作的运行速度,进一步提高算法在嵌入式环境中运行的实时性。
[0099]
步骤5:人脸区域粗检测;
[0100]
首先,采用边长为2的正方形窗口对mem2缓存所代表的10
×
20大小的矩形进行开运算,去除其中的微小桥接、孤立点等噪声,相当于滤除掉原图像中小范围的、与皮肤颜色相近的区域,留下面积较大的相邻区域,即为人脸候选区域。
[0101]
之后,采用3个尺寸分别为2
×
2、4
×
4、8
×
8的矩形窗口,对mem2所代表的10
×
20大小的矩形进行滑动求和操作,将滑动过程中窗口所覆盖的区域定义为其中n={1,2,3},对应三个不同的滑动窗口,每个窗口最大范围是依次计算窗口滑动过程中所覆盖的矩形区域中存储值为1的单元数量,取其值超过阈值β=0.7且数值最大的窗口位置作为最终的粗检测人脸区域。
[0102]
上述过程使用硬件描述语言在pl端进行编程设计,如图6所示,人脸区域粗检测硬件模块分为3个部分:数据读取子模块、滑动求和子模块、结果输出子模块。数据读出子模块由10个存储器读取电路构成,每个读取电路在输入时钟信号的作用下的读地址和读有效信号,时钟信号为占空比50%的方波、频率为f
cp
,读地址为随时钟信号依次加一的、位宽为5bit的二进制信号,读有效信号为1bit的低电平信号。由数据读取子模块读出的10个数据(即为mem2缓存的一列),送入滑动求和子模块,滑动求和子模块分为3个组同时进行,每组的工作原理相同,以第一组为例说明工作过程。对于第一组滑窗求和子模块,其对应的滑窗尺寸为2
×
2,第一组求和模块首先构建9个树形加法器组,每个加法器组在一个工作时钟周期内可以同时计算2个行数据的和,每经过2个工作时钟周期,一个加法器组完成一个滑窗面积内(共2
×
2=4各单元)所有数值为1的存储单元数量求和,将9个加法器组的和结果分别存储到9个寄存器中(记为),对应的滑窗位置存储到另一组寄存器中(记为)。当求和模块完成下一个滑窗面积下所有数值为1的存储单元数量求和之后,将新的求和结果与上一个滑窗求和结果进行比较,用数值较大的结果更新和依此类推,经过19个工作时钟周期后,滑窗求和子模块完成mem2中所有面积为2
×
2区域数值为1的存储单元个数统计,再通过比较器得到9个结果寄存器中的一个以及其所对应的滑窗位置寄存器完成一组滑窗求和计算。
[0103]
最后,将3组滑窗求和子模块得到的求和数值,送入结果输出子模块,通过多次判断进行最终的输出选择:首先,判断第1组求和数值是否大于阈值0.7,若大于则将该组对应的滑窗位置和窗口大小作为结构输出,否则,继续判断下一组的求和数值,若大于阈值则返回结果。如果所有组的求和结果均小于阈值,则返回最后一组求和结果对应的滑窗位置和窗口大小。该模块由多级比较器、优先编码器、3选1数据选择器组成。优先编码器接收所有
比较器的输出结果,其编码规则如下:如果第一个比较器输出为1,不论后面的比较器输出为何,均产生编码值“1”,如果第一个比较器输出为0,第二个比较器输出为1,无论后面的比较器输出为何,均产生编码值“2”,依此类推,如果只有最后一个比较器输出为1,则产生编码值“3”。3选1数据选择器以优先编码器的输出值作为选通信号,用于选择最终输出n组滑动求和子模块中哪一组的求和寄存器和滑窗位置寄存器。
[0104]
步骤6:人脸区域精检测;
[0105]
以粗检测所返回的窗口位置为检测区域,可使用经典人脸检测方法进行人脸区域的精确检测。该过程基于ps端的微处理器进行,编写c\c++代码实现haar小波特征等检测方法,检测输出人脸区域左上、右上、左下、右下四个边界坐标。之后,采用固定形状的模板,将人脸中眼睛、鼻子、嘴、下巴等位置去除,仅保留额头和脸颊部分,作为心率检测的有效区域。检测所需要的图像数据是通过pl端和ps端的axi4内部高速总线进行数据传输。
[0106]
采用上述方法实现的人脸区域检测,可以通过人脸粗检测直接在降维后的缩略图中给出人脸的可能存在区域,因而不需要对高分辨率的原始图片进行大规模的滑窗操作,且能够并行地实现多尺度同时检测。在本实施方案中,对于320
×
640的图片,采用32
×
32的比例进行了降维,相比于传统的滑窗检测算法,整体计算时间降低近1000倍(加速的理论最大值为322倍),能够极大提高检测算法的执行效率,适合运行于计算资源有限、实时性要求高的嵌入式设备。
[0107]
步骤7:获取心率信号;
[0108]
首先根据精检测后得到的人脸额头与脸颊区域像素,计算其绿色通道的像素均值,按照视频帧的时间顺序排列,得到一个像素均值向量g
mean
=[g1,g2,

,g
t
],本实现方法中t=150。之后,采用截止频率为0.7hz~4hz的带通滤波器对像素均值数据向量g
mean
进行带通滤波,得到滤波后的绿色通道像素均值向量
[0109]
步骤8:计算心率值;
[0110]
选取像素均值向量中连续的128个元素进行快速傅里叶变换并得到相应的频谱分布,查找频谱中最大幅值分量的序号i
max
,根据公式(5)计算出心率hr。
[0111][0112]
其中,fs代表傅里叶变换的采样频率,本发明中fs=30hz,即视频的帧率。
[0113]
心率检测的结果,可以使用小型液晶触摸屏、或显示器动态地展示。
[0114]
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1