一种生理参数的监测方法、装置和手持设备与流程

文档序号:18752811发布日期:2019-09-24 21:23阅读:140来源:国知局
一种生理参数的监测方法、装置和手持设备与流程
本发明涉及生理参数监测研究领域,特别涉及一种生理参数的监测方法、装置和手持设备。
背景技术
:人体生理参数监测包括对心电、血压、心率、血氧饱和度、呼吸频率、体温、呼吸中的二氧化碳浓度等参数的监测,目前广泛应用于临床医学、可穿戴设备、移动终端等领域。例如,目前成熟的心率无创测量手段有脉搏测量法、心电信号法、光电容积脉搏波描记法(PhotoPlethysmoGraphy,PPG)。其中:一、脉搏测量法:这其实是最古老的方法,就是中医的诊脉。在手腕或者颈部两侧,都可以经皮肤摸到动脉的压力有规律地涨落。通过压力传感器可以将这个信号变成心率。这个方案也是目前商用最不成熟的,原因一是压力传感器需要长期对穿戴者的动脉半压迫,有不适感。二是压力传感器难以以合适的方式固定在皮肤表面:固定的太紧会导致血流不畅,固定的太松又无法实现测量。这个问题在运动腕表设计中表现得格外明显。所以该方法一般只在医院中对手术中手术后的静息病人使用。通常情况下,脉搏和心率是一致的,有一次心脏收缩就会产生一次脉搏,但在血压极低的情况下,心脏收缩推送的血液不足以能够在血管上感知到搏动,于是出现脉搏低于心率的情况。二、心电信号法:窦房结有节律地控制心脏收缩舒张从而向躯干泵血。这个控制信号是一个电信号(人体神经信号在神经上都表现为电信号),会逐渐扩散到体表,可以在皮肤通过电极测量。目前医院使用的心电仪就是采用这个原理。这个节奏就是心率,除此之外,心电信号还可以为医生诊断提供很多参考信息。目前市面上最精确的可穿戴心率测量仪器、心率带,也是采用这个方法。但是由于心电信号的波长非常长,为了测得足够精度的信号,信号电极和参考电极就必须在躯干空间上隔得足够远。一般是胸上比较远得两点,或者左手和右手,或者手和脚等。腕表就比较难采用这个方案,除非有人愿意同时带两个表。三、光电容积脉搏波描记法:这是一种简单无损的测量心跳成分和评定体表循环的方法。根据组织光学中对光在生物组织中的传播、分布及光与组织的相互作用的描述和研究,当某个波长的光通过(射入)生物体组织中时,生物体组织(皮肤、脂肪、血液、肌肉等)将对光产生散射和吸收,使检测到的光强度衰减。其中皮肤、肌肉和骨骼等其他组织对光的吸收几乎是不变的,但当透光区域存在动脉血管搏动或者静脉血管的充盈时,随着血流量的增减,血液中主要吸光成分血红蛋白含量也相应增减,血液对光的吸收量将随之变化。血管充盈时,光吸收量最大,检测到的光强度最小,利用光电传感器将检测到的光强度变化信号转换成电信号检出,即可描记出血管内容积的变化得到脉搏波信号。目前,PPG的实现方案可以分为接触式和非接触式。接触式PPG实现需要光电传感器来进行数据采集,比如常见的那种夹在食指尖/耳垂的心率测试仪、各种可穿戴设备、运动腕表等。三星的S5/S6,联想的ZukZ2Pro等一些手机也在手机背部集成了红外心率传感器,只需要把手指按在传感器上就可以采集到心率。由于需要有发射光源和接收端,所以该方法也可以在手机上实现。目前也有不少App利用这种原理,只需要把手指按在摄像头上,开启闪光灯,通过采集摄像头的图像明暗变化来得到心率的数值(可以看成是光电信号转换的一种形式)。不过目前的方案普遍存在下述缺陷:1、会磨损镜头,影响摄像头镜头成像效果;2、开启闪光灯,可能会烫伤手指;3、天气较冷时候或者身体异常的情况下,血液可能无法流经手指,导致检测不到心率;4、手指的通透性必须好,如果有污渍或者有覆盖物,会影响测量结果;5、没有闪光灯或者闪光灯距离摄像头比较远的设备无法进行心率采集(其中3和4也是红外传感器的缺陷之一)。在可穿戴设备(这里主要指手环、手表)上,通常至少有一个绿光Led光源(一般情况下,通过测量绿光的吸收状况能获得更精确的数据,在高温环境,比如健身房里挥汗如雨时,皮肤表面水分增加,由于更多的绿光已经被吸收掉,所以需要切换到其他光源,比如白光或者红外光源),有些手环采用了绿光和白光两种光源,AppleWatch则是采用绿光和红外光。除了光源,还需要有个光电传感器来感应反射光。虽然这种方法只能得到心率信号,不过相对来说对运动带来的噪声抵抗力比较强,所以很适合目前的运动腕表。因此各厂商只要在各自的SOC(System-on-a-Chip集成整合芯片,通常是蓝牙SOC)上集成光电传感器(除了AppleWatch是自己研发,大部分都是用的第三方的,比如Philips,Kionix等厂商提供的),通过各自研发的心率算法,利用加速度仪去补偿运动噪声的影响,来计算心率。由于是接触式PPG,在保证平稳,贴合皮肤紧密的前提下,受到的干扰较少,所以数值应该都差不多。不过即便是在理想条件下,AppleWatch和其他手环/手表也不能保证所有用户每次都能得到准确的心率数据。造成不稳定因素的原因主要也是:1、比如在寒冷的环境下,手腕上的皮肤血流量可能过低,导致心率传感器无法读取数据;2、传感器覆盖的区域有干扰,比如刺青,胎记等;3、运动造成的影响,比如手臂的屈伸都会造成血液流量的变化。这时,则需要考虑借助第三方的蓝牙胸带等心率检测器来获取到准确的心率。非接触式的PPG测量方法在实际应用中,可以给使用者的生活带来极大的便利,其优势在于能够监测较大皮肤区域的血流信息,使得计算结果更加准确。此外,相对于接触式PPG技术而言,非接触式PPG技术具有更加广泛的应用领域,例如,用于一些皮肤破损/受伤的人群,不方便在身体上有设备接触的人群等等。目前的实现方法大概如下:1、利用光电传感器(通常是摄像头)对人体某处血管集中区域(任何区域皆可,手腕或者面部没有衣服覆盖比较方便)进行视频数据采集;采集过程中通常需要辅助光源或者专门的光源发射器;2、从视频数据的每一帧图像中分离出ROI(感兴趣,即对光线吸收变化反应明显的区域)区域,对该区域图像进行RGB原色通道分离,并对各通道所有像素取均值,将其作为该帧图像在该颜色通道的特征值,生成三个新的信号Xr,Xg,Xb,对这三个信号进行标准化,得到标准化的信号Yr,Yg,Yb;3、对标准化后的信号进行盲源分离(ICAIndependentComponentCorrelationAlgorithm,独立成分分析)。由于分离后的独立信号源是无序的,无法直接选取信号,这时就需要进行信号筛选,通过与绿通道Xb进行相关性分析,选取得到最终的信号Zi;4、对所选取的信号进行带滤波等信号处理,最后对滤波后的信号做周期分析(频谱分析),即进行DFT变换,得到频谱图,选取最大峰值频率作为心跳频率,即可得到心率。不过上述方案存在以下几个问题:1、需要先拍摄一段视频,然后才能对视频进行分析,一般拍摄的视频长度需要30秒左右,同时拍摄过程对环境光线有较高要求;2、需要对视频每一帧进行ROI区域分离,同时被测人员应该尽量避免位移,以免影响计算结果;3、需要同时计算Red/Green/Blue3个通道数据均值;4、需要利用ICA进行盲源分离混合信号,需要较多运算时间;5、需要对最终信号进行频谱分析(DFT计算),同样耗时较多,且转换后得到的频谱图对数据源要求较高,若有较多干扰会直接导致计算数值不正确。以上方案最大的缺陷就是硬件要求高,运算量大,于是人们提出了很多改进方法比如:1、用fastICA或者jade算法来代替ICA,加快运算速度;2、用FFT来代替DFT,减少运算量,加快运算速度;3、减少ROI区域的检测次数,避免过多的运算消耗;4、增加高、低频滤波器来减少噪音,使计算结果趋于准确。不过效果依然不甚理想。因此,寻求一种测量准确度高、对系统硬件要求低、可实时得到结果的生理参数(特别是心率、呼吸频率)的监测方法和装置具有重要实用价值。技术实现要素:本发明的主要目的在于克服现有技术的缺点与不足,提供一种生理参数的监测方法,该方法具有计算量低、准确度高、对硬件要求低的优点。本发明的另一目的在于提供一种生理参数的监测装置,该装置具有计算量低、准确度高、对硬件要求低的优点。本发明的另一目的在于提供一种包括上述生理参数的监测装置的手持设备,这里的手持设备可以是一个独立的、仅用于进行心率监测的设备,也可以是一个不仅仅进行心率监测,也进行其他参数监测的生理参数监测仪,当然,也可以是集成有上述生理参数的监测装置的移动终端,例如手机、移动电脑等等。本发明的目的通过以下的技术方案实现:一种生理参数的监测方法,包括步骤:采集当前人脸图像;提取人脸图像中的脸颊部分图像;对脸颊部分图像计算Green通道的均值,得到均值序列;对均值序列进行滑动平均值滤波,通过调整其滤波区间得到生理变化曲线;对生理变化曲线进行特征提取得到生理参数。优选的,针对采集的人脸图像,先进行缩小处理,然后对缩小后的图像通过OpenCV提供的人脸检测算法来检测人脸,定出人脸所在位置后,再进行等比例的放大,得到人脸区域。从而可以提高方法的速度。优选的,脸颊部分图像的位置确定方法是:设人脸区域宽度为w,高度为h,起始位置为(x,y),两个脸颊所在区域的宽度范围分别为1/8w~3/8w以及5/8w~7/8w,高度范围1/2h~3/4h。通过上述区域限定大概略去了鼻子的区域,仅保留两个脸颊区域,减少了数据干扰。优选的,对脸颊部分图像计算Green通道的均值,即累加每个像素点中的Green通道分量,再除以图像的像素点数量得到,在计算过程中采取间隔取样的方式,从而可以提高处理速度,且保证取到整体的变化情况。优选的,设定当前的采集数据的帧率为m,则通过设置均值序列的滤波区间为3m/2~2m,可以得到呼吸频率变化曲线;设定均值序列的滤波区间为m/3~2m/3,可以得到心率变化曲线。这里滤波区间的设定范围和最小计算周期相仿即可得到相应的变化曲线。更进一步的,如果生理变化曲线为心率变化曲线,则采用如下的第一特征提取算法进行特征提取:优先找到第一个波峰的位置;从前一个波峰的位置开始,搜索其后R范围内值最高的第一波峰;然后从第一波峰的位置开始,搜索其后R范围内值最高的第二波峰;判断第一波峰峰值是否大于等于第二波峰峰值,如果是,确定第一波峰为当前波峰,然后从第一波峰开始继续搜索;如果不是,则确定第二波峰为当前波峰,然后从第二波峰开始继续搜索;搜索完整个心率变化曲线后,得到一波峰序列,所述的波峰序列包括每个波峰的峰值和位置,位置也就是心跳间隔;将首尾2个波峰的时间间隔除以波峰的个数,得到心率值。更进一步的,将心率30~220划分为n个区间,对应设定n个R值,分别采用每个R值求取波峰序列;针对每一个波峰序列,采用下述公式计算f值:fi=sdi*sdi/avgi;其中,i=1,……,n;sdi为心跳间隔的标准差,avgi为计算心跳间隔的平均间隔,取Minfi对应的i作为当前选择的序列,采用该序列数据计算心率值。更进一步的,如果生理变化曲线为呼吸频率变化曲线,则采用如下的第二特征提取算法进行特征提取:Step1、根据呼吸频率变化曲线中的数据序列,寻找第一个波峰点O点;Step2、从O点出发,找到下一个波形向上的拐点,得到第一个波谷,标记1;Step3、从标记1点出发,不断的寻找波形向下的拐点,并标记为波峰,于是得出波峰序列O、A、B、C、D、E、……,和波谷序列1、2、3、4、5、……,得出信号的波形特征;Step4、根据波形特征,得到首尾峰间隔时差和波峰间隔数量,通过公式:呼吸频率br=首尾峰间隔时差/波峰间隔数量;得出当前的呼吸频率。呼吸频率有滞后性,滞后时间为前一次呼吸时长的一半时间。正常情况下,一次完整的波形即可判断出呼吸的大概频率。更进一步的,由于血液中的氧气整体含量变化必然是一个相对缓慢的过程,所以通过选取一个实时变化的r来对寻找到的波峰点进行判断。在寻找波峰的过程中采用如下去噪方法:设最近两次的峰峰间隔分别为d和d1,计算r=(d+d1)/2;判断当前寻找的波峰所在时间是不是大于上次波峰时间+r,如果是,则判断为新的波峰,如果不是,则判断为噪声点。当然,计算期间也会出现一些情况,比如每次取到的最小值对应的序号不断变,当前的数值存在异常,心率的数值不稳定等,为了提高数据的准确性,对生理变化曲线数据先进行如下的筛选操作,方法如下:由于之前的实验已经证明了计算时间的长短不会对心率的具体数值有影响,这里取L秒的时间长度作为心率计算区间,并增加一个最后L1秒内的心率数值作为对比参考,其中心率的数值记做hbr,最后L1秒计算的心率数值记做hbrL1,hbrL1也可以看作是心率变化的趋势,若出现突然的波动或者外界影响,hbrL1和hbr会有明显的数值差异。Step0、初始化上一次选择的心率波形序号lastchoice,取到心率的累计次数count,当前心率波形序号作为心率的累计次数e(e是在做长时间心率监测时,抵抗外界干扰用的参数,用于避免由于干扰导致选择到其他心率序列),重新计算次数retrytime,赋值为0;这里的count是用来累加取到心率的次数的,在没有取到p1次心率之前,都是用Minfi对应的序列作为待定心率序列,后面才用平均波动最小的作为待定心率序列;Step1、根据设置的n个不同滤波间隔R,计算心率hbr、hbrL1和波动情况f(如果波动过大说明当前监测情况下的外界条件不理想,需要放弃当前的采样),并记录存储,同时累加count;Step2、若count>=p1,则计算作为平均波动;Step3、取g=Mingi(i=1~n),并记录对应的i作为当前最适合的心率的备选如果lastchoice=0(即第一次没有记录),则令lastchoice=i,e=1;如果lastchoice=i,则令e=e+1,e不大于p2;如果lastchoice不等于i,则令e=e-1,e不小于0;Step4、计算hbr和hbrL1的差值d,心率稳定时,d的数值不会超过p4;Step5、若当前心率f>p3(大量实验得出的经验数值),则说明当前受到外界干扰比较大,或者采集的心率有异常情况;这时判断:如果f>g并且f>p3,说明影响越来越大,需要抛弃一些异常数据重新进行计算,执行Step6;如果f<=g或者f<=p3,执行Step7;Step6、抛弃当前计算序列前一半的数据,令lastchoice、count、e为0,retrytime=retrytime+1;如果retrytime=2,则抛弃全部数据,令lastchoice、count、e为0;如果retrytime=3,则给出提示,当前测试环境不理想,监测失败,执行Step8;Step7、如果连续L2次计算的差值d<p4,说明心率计算数值趋于稳定,这时判断呼吸的数值是否已经计算出来(心率的数值最快7秒可以趋于稳定,呼吸的频率则由于周期较长,通常至少需要一个呼吸周期的时间才能看出波形变化),并且趋于稳定(由于心率和呼吸是同时计算,所以二者放在一起考虑),如果呼吸的数值也稳定,则输出心率和呼吸频率数值,执行Step8;Step8、停止数据采集,结束监测过程。同样,可以通过这个方法,来进行活体识别(比如图片或者人偶等),因为外界的光线反射基本是无规律的,所以若得出的波动情况过大(f>p3,正常情况下f<=p3/2),则可以判断当前光线环境不理想,或者被测不能提供正常的规律心率。一种生理参数的监测装置,包括:图像采集模块,用于采集当前人脸图像;图像截取模块,用于提取人脸图像中的脸颊部分图像;均值序列计算模块,用于对脸颊部分图像计算Green通道的均值,得到均值序列;滤波模块,用于对均值序列进行滑动平均值滤波,通过调整其滤波区间得到生理变化曲线;分析处理模块,用于对生理变化曲线进行特征提取得到生理参数。优选的,所述图像采集模块包括缩放模块和人脸检测模块,缩放模块用于将采集的人脸图像进行缩小处理,然后将缩小后的图像发送到人脸检测模块,以及用于在人脸检测模块定位出人脸所在位置后,再进行等比例的放大,得到人脸区域;人脸检测模块用于定位出人脸所在位置。优选的,图像截取模块具体为:设人脸区域宽度为w,高度为h,起始位置为(x,y),两个脸颊所在区域的宽度范围分别为1/8w~3/8w以及5/8w~7/8w,高度范围1/2h~3/4h。作为一种优选,所述滤波模块调整滤波区间为m/3~2m/3,m为当前的采集数据的帧率,得到心率变化曲线;所述分析处理模块包括第一特征提取模块,第一特征提取模块包括:第一数据读取模块,用于找到第一个波峰的位置;第一波峰搜索模块,用于从前一个波峰的位置开始,搜索其后R范围内值最高的第一波峰;第二波峰搜索模块,用于从第一波峰的位置开始,搜索其后R范围内值最高的第二波峰;第一判断模块,用于判断第一波峰是否大于等于第二波峰,如果是,确定第一波峰为当前波峰,然后从第一波峰开始继续搜索;如果不是,则确定第二波峰为当前波峰,然后从第二波峰开始继续搜索;第一波峰序列保存模块,用于搜索完整个心率变化曲线后,得到一波峰序列,所述的波峰序列包括每个波峰的峰值和位置,位置也就是心跳间隔;心率值计算模块,用于将首尾2个波峰的时间间隔除以波峰的个数,得到心率值。更进一步的,波峰序列保存模块包括若干个波峰序列子保存模块,将心率30~220划分为n个区间,对应设定n个R值,分别采用每个R值求取波峰序列,分别保存在一个波峰序列子保存模块中;针对每一个波峰序列,采用下述公式计算f值:fi=sdi*sdi/avgi;其中,i=1,……,n;sdi为心跳间隔的标准差,avgi为计算心跳间隔的平均间隔,取Minfi对应的i作为当前选择的序列,采用该序列数据计算心率值。作为另一种优选,所述滤波模块调整滤波区间为3m/2~2m,m为当前的采集数据的帧率,得到呼吸频率变化曲线;所述分析处理模块包括第二特征提取模块,第二特征提取模块包括:第一个波峰寻找模块,用于根据呼吸频率变化曲线中的数据序列,寻找第一个波峰点O点;第一个波谷寻找模块,用于从O点出发,找到下一个波形向上的拐点,得到第一个波谷,标记1;波形特征确定模块,用于从标记1点出发,不断的寻找波形向下的拐点,并标记为波峰,于是得出波峰序列O、A、B、C、D、E、……,和波谷序列1、2、3、4、5、……,得出信号的波形特征;呼吸频率计算模块,用于根据波形特征,得到首尾峰间隔时差和波峰间隔数量,通过公式:呼吸频率br=首尾峰间隔时差/波峰间隔数量;得出当前的呼吸频率。更进一步的,所述第二特征提取模块还包括去噪模块,去噪模块包括:搜索步长设定模块,设最近两次的峰峰间隔分别为d和d1,计算搜索步长r=(d+d1)/2;判断模块,用于判断当前寻找的波峰所在时间是不是大于上次波峰时间+r,如果是,则判断为新的波峰,如果不是,则判断为噪声点。更进一步的,所述监测装置包括数据筛选模块,该数据筛选模块包括:初始化模块,用于初始化上一次选择的心率波形序号lastchoice,取到心率的累计次数count,当前心率波形序号作为心率的累计次数e,重新计算次数retrytime,赋值为0;根据设置的n个不同滤波间隔R,计算心率hbr、hbrL1和波动情况f,并记录存储,同时累加count;平均波动计算模块,用于count>=p1时,计算作为平均波动;备选数据模块,取g=Mingi,并记录对应的i作为当前最适合的心率的备选;如果lastchoice=0,则令lastchoice=i,e=1;如果lastchoice=i,则令e=e+1,e不大于p2;如果lastchoice不等于i,则令e=e-1,e不小于0;差值计算模块,用于计算hbr和hbrL1的差值d;第二判断模块,用于判断f<=g或者f<=p3是否成立,如果成立,则执行第三判断模块,否则,执行数据删除模块;数据删除模块,用于抛弃当前计算序列前一半的数据,初始化lastchoice、count、e为0,令retrytime=retrytime+1;如果retrytime=2,则抛弃全部数据,初始化lastchoice、count、e为0;如果retrytime==3,则给出提示,当前测试环境不理想,监测失败,执行结束模块;第三判断模块,用于判断连续L2次计算的差值d是否小于p4,如果是说明心率计算数值趋于稳定,则继续判断呼吸的数值是否已经计算出来并且趋于稳定,如果是,则输出心率和呼吸频率数值,执行结束模块;结束模块,用于停止数据采集,结束监测过程。本发明与现有技术相比,具有如下优点和有益效果:1、本发明计算复杂度低、可以实时地得到当前采集者的心率、呼吸频率等生理参数,准确度高。通过与现有医疗设备所得结果进行比对,发现算法稳定性很强,且不容易受到外部各种条件的干扰,具有极强的适用性。2、本发明通过提取脸颊部分图像、去噪等,可以减少图像中的环境干扰因素,进一步提高检测的准确度。附图说明图1是本实施例1方法的流程图。图2是本实施例1第一特征提取算法的流程图。图3是本实施例1第二特征提取算法的流程图。图4是实施例1中实际采集的一条原始序列曲线。图5是对图3进行平滑滤波后得到的心率曲线。图6是通过时域法计算心率的示意图。图7是理想状态的心率曲线。图8是对图3进行平滑滤波后得到的呼吸频率曲线。图9是通过时域法计算呼吸频率的示意图。具体实施方式下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例1如图1所示,本实施例一种生理参数的监测方法,包括步骤:一、采集当前人脸图像由于人脸是最常暴露在外的皮肤区域并且具有极高的辨识度,很容易定位,所以非接触采集系统通常选取人脸区域作为数据采集区域。采集脸部也是由于心脏对人体的供血是会优先保证大脑和重要的内脏器官,然后才是四肢,所以采集脸部可以比采集四肢获得到更可靠和准确的数值,因为四肢在身体末梢,尤其在冬天新陈代谢缓慢,低气温使血管收缩,血液回流能力减弱,使得手脚,尤其是指尖,脚尖等部位血液循环不畅,同样的,有些人在剧烈运动后会呈现脸色苍白,四肢冰凉的情况,这也是由于心脏供血能力不足导致血液循环不畅。而PPG是用于检测血液含氧量变化的,若血液循环不畅,是无法检测到准确的数值的。本实施例仅通过自然光或者仅通过稳定的环境光即可实现PPG的采集需求,由于是实时计算,只需要保存ROI区域的G通道均值作为PPG信号,同时不需要计算R通道和B通道的数值来分离噪音。二、提取人脸图像中的脸颊部分图像由于需要获取的是血液流过的皮肤区域的部分,所以需要尽量减少其他区域造成的干扰,比如眼睛、鼻子、嘴巴,由于额头部分可能会被刘海覆盖,所以本实施例提出只取脸颊部分的区域相比取整个脸部可以获取到更加准确的变化数值。关于人脸识别模块,并不是本发明讨论的重点,因此可以采用各种不同的现有的人脸识别模块来实现。在移动平台,IOS和Android都有各自的人脸识别模块,当然也可以采用任何的第三方库,比如OpenCV,Face++等等。本文的例子是在PC端实现的,采用的是开源的OpenCV库,版本是2.48。OpenCV库是通过综合AdaBoost和Cascade算法的人脸检测方法(又被称为Harr-Cascade人脸探测器)来进行人脸检测,通过OpenCV调用训练好的cascade(分类器)进行模式匹配来实现人脸识别。OpenCV目前支持HAAR、LBP(LocalBinaryPatterns)和HOG3种训练器,与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。在实际测试中,调用不同的特征库的检测人脸耗时不同,但检测结果没有差异,差异如下表。本文选取的是默认的haarcascade_frontalface_default。本实施例实验环境机器配置:CPU:i3-4010u1.7G,内存:8GB,系统:win7旗舰版64位,开发环境:Java8.0,OpenCV:2.48,开发工具:Eclipse,摄像头分辨率:640×480。本实施例在进行人脸识别过程中,为了提高检测效率可以先对待检测的图像进行缩小处理,对缩小后的图像进行人脸检测,这里假设初始采集的图像大小是640*480,进行人脸检测耗时需要0.12秒,缩小1/4后的图像大小是320*240,这时进行人脸检测只需要0.03秒,按视频30帧每秒来计算,也能基本可以保证每一帧图像都取到准确的人脸所在位置,(0.03秒×30帧=0.9秒,图像的缩放所需的运算量是320×240×30=2304000,运算时间基本可以忽略不计)只需进行等比例缩放,就可以得到原图像中人脸所在的区域,不过实际操作中,对每一帧图像都进行ROI区域分离是没有必要的,每秒1~5次的人脸检测操作即可满足实时监测的需求,本例中每秒进行2次人脸检测。本实施例中,脸颊部分图像的位置确定方法是:设人脸所在区域的宽度为w,高度为h,则脸颊所在区域的宽度范围为1/8w~3/8w,5/8w~7/8w,高度范围1/2h~3/4h,该区域大概略去了鼻子的区域,仅保留两个脸颊区域,减少了数据干扰。三、对脸颊部分图像计算Green通道的均值,得到均值序列,均值序列的数据图参见图4。计算脸颊区域图像中Green通道分量的均值,即累加每个像素点中的Green通道分量,再除以图像的像素点数量即可得到。为了提高处理速度,可以采取间隔取样的方式,即奇数行取偶数列数据,偶数行取奇数列的数据,保证覆盖的同时,取到整体的变化情况。在处理数据的时候,为了减少基线漂移带来的影响,对当前需要处理的数据都进行归一化处理,采取零均值的处理方法,即所有的数据都减去数据均值作为待处理数据。由于不同的滤波区间可以分别得到心率变化曲线和呼吸频率变化曲线,下面对两个变化曲线的具体过程分别进行详细描述。四、对均值序列进行滑动平均值滤波,通过调整其滤波区间为4~6,得到心率变化曲线。如图5所示。关于数字滤波,有很多种方法,比如算术均值滤波、加权均值滤波、中值滤波等等。本文采用滑动平均值滤波法,因为相比其他均值滤波算法,每计算一次有效采样值必须连续采样N次,对于采样速度较慢或者要求数据计算速率较高的实时系统,这些方法是无法使用的。而滑动平均值滤波方法只需要考虑连续的N个数据,就可以得到新的滤波值。滑动平均值滤波方法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但是对偶然出现的脉冲性干扰的抑制作用差,不易消除脉冲干扰引起的采样值的偏差。因此不适用于脉冲干扰比较严重的场合。五、对心率变化曲线进行特征提取得到心率值。在常见的非接触PPG方法中,在采集到PPG信号后,需要通过放大电路对PPG信号进行放大,然后依次利用低通滤波电路和高通滤波电路进行滤波操作,然后利用50hz的陷波电路消除工频干扰,然后才对最终得到的信号进行功率频谱分析运算(方法见频谱分析方法)。原本的PPG信号中就包含着比较清晰的心率、呼吸信号,为何常见方法却没有采用最直接的时域分析法(即直接检测最大值,计算波峰间隔时间的方法),而要采用频域计算方法,主要是由于时域方法不太容易识别噪音和真正的心率信号,所以才需要通过多次滤波再进行频谱分析。而本实施例所述方法通过时域分析法即可以实现判断噪音,因此不再需要进行多次的滤波和复杂的频谱转换,从而提升心率计算的准确度和运行效率。参见图2,并结合图6,本实施例采用如下的第一特征提取算法进行特征提取:由于采集到的信号就是以时间轴为坐标的数据Yi,因此要先找出信号的波形特征,比如波峰/波谷/峰间距等。步骤如下:Step1、根据待计算序列,从第一个点出发,找到第一个波形向下的拐点作为出发点,即Yi>Yi+1(Y为序列数值,i=1,2,3…),若Y1>Y2(第一个点可能不是最高点),则先找到波形向上的拐点,即Yi<Yi+1(i=1,2,3…),之后再继续找第一个波形向下的拐点作为出发点,即图6中的O点,标记O点为第一个波峰。Step2、从O点出发,找到下一个波形向上的拐点,即Yi<Yi+1(i=1,2,3…),即图6中的1点,标记1点为第一个波谷。Step3、从1点出发,不断的寻找波形向下的拐点,并标记为波峰,于是得出波峰序列O、A、B、C、D、E……,和波谷序列1、2、3、4、5……(如图6所示),这时即得出了信号的波形特征,可以根据公式进行特征计算:心率hbr=首尾峰间隔时差/波峰间隔数量。在寻找波峰序列的过程中会遇到一些噪音点,比如C和D两个波峰之间,J和K两个波峰之间,都会出现疑似波峰的噪音,需要过滤掉。这时可以通过寻找范围R内的最高点来滤除掉伪波峰,当找到一个波峰时,假设C和D点之间的伪波峰为C1,从C1往后寻找R以内的最大值,如果R范围内没有比C1高的峰值,则C1作为真实的波峰,继续下一个波峰的搜寻;如果找到了比C1高的峰值D,则D作为真实的波峰,继续下一个波峰的搜寻。这里设J和K之间的伪波峰为J1,当找到波峰J时,继续往后在R范围内搜索到了J1,所以J1被认为是伪波峰,需要继续寻找真实的波峰K。为了得到最适合的R值来过滤掉噪音数据,得到准确的心率。这里通过医疗设备进行对比,经过大量数据分析,通过循环计算设置不同的R值,得到了与医疗设备相同心率时R的范围,具体数值如表1:表1心率范围与R取值区间的关系心率范围30~6060~8080~110110~150150~220R取值区间R1R1~R2R2~R3R3~R4R4由表1中,得到4个数值R1-R4,通过设置R的区间从R1~R4,基本可以覆盖人体正常心率的范围区间。该方法也可以用在其他任何波形的去噪上。通过该方法,直接滤掉很多噪音数据,减少计算误差。当波形如图7时,由于基本没有噪音,R的改变不会影响计算结果,但如果监测的数值含有较多的噪点(伪波峰),就会得到不同的4个心率数据,因此需要通过其他方法来确定准确的心率。由于正常人的心率是窦性规律心率,因此每次心跳间隔的变化幅度不会出现太大的变化,而如果加入或者漏掉了伪波峰,必然会导致这个变化幅度异常,为此,我们引入函数:f=sd*sd/avg;来计算当前心率的波动情况,其中sd为计算区间每一次心跳间隔(波峰间距)的标准差,avg为计算区间心跳的平均间隔(波峰间距均值),平均波动情况最小的则是最接近真实的心率数值。当然,计算期间也会出现一些情况,比如每次取到的最小值对应的序号不断变化,如何判断当前的数值是否异常,如何判断心率的数值已经稳定等,具体处理方法如下:取10秒的时间长度作为心率计算区间,并增加一个最后5秒内的心率数值作为对比参考,其中心率的数值记做hbr,最后5秒计算的心率数值记做hbr5,hbr5也可以看作是心率变化的趋势,若出现突然的波动或者外界影响,hbr5和hbr会有明显的数值差异。Step0、初始化lastchoice(上一次选择的心率波形序号),count(取到心率的累计次数),e(当前心率波形序号作为心率的累计次数),retrytime(重新计算次数)为0;Step1、根据设置的4个不同滤波间隔R(R1~R4),计算心率hbr,hrv5和波动情况f,并记录存储,同时累加count(在count<5时,都是取Minfi对应的序列数据计算心率值);Step2、若count>=5,则计算作为平均波动;Step3、取g=Mingi(i=1~n),并记录对应的i作为当前最适合的心率的备选如果lastchoice=0(第一次没有记录),则令lastchoice=i,e=1;如果lastchoice=i,则令e=e+1,e不大于5;如果lastchoice不等于i,则令e=e-1,e不小于0;Step4、计算hbr和hbr5的差值d,心率稳定时,d的数值不会超过3。Step5、若当前心率的f>10(大量实验得出的经验数值),则说明当前受到外界干扰比较大,或者采集的心率有异常情况。这时判断:如果f<=g或者f<=10,则执行Step7;否则执行Step6;;Step6、抛弃当前计算序列前一半的数据,令lastchoice、count、e为0,令retrytime=retrytime+1;如果retrytime=2,则抛弃全部数据,令lastchoice、count、e为0;如果retrytime=3,则给出提示,当前测试环境不理想,监测失败,执行Step8;Step7、如果连续5次的差值d<3,说明心率计算数值趋于稳定,这时判断呼吸的数值是否已经计算出来(心率的数值最快7秒可以趋于稳定,呼吸的频率则由于周期较长,通常至少需要一个呼吸周期的时间才能看出波形变化),并且趋于稳定(由于心率和呼吸是同时计算,所以二者放在一起考虑),如果呼吸的数值也稳定,则输出心率和呼吸频率数值,执行Step8。Step8、停止数据采集,结束监测过程。同样,可以通过这个方法,来进行活体识别(比如图片或者人偶等),因为外界的光线反射基本是无规律的,所以若得出的波动情况过大(f>10,正常情况下f<=5),则可以判断当前光线环境不理想,或者被测不能提供正常的规律心率。在实验室环境下,该方法计算得出的心率数值基本和医疗设备得出的设备相同。下面对呼吸频率计算过程进行说明。六、对均值序列进行滑动平均值滤波,通过调整其滤波区间为28~32,得到呼吸频率变化曲线。如图8所示。五、对呼吸频率变化曲线进行特征提取得到呼吸频率值。参见图3,并结合图9,本实施例计算呼吸频率的方法和计算心率的方法相同,不过由于呼吸频率和心率特征不同,所以这里r的设置是实时变化的。第二特征提取算法的步骤如下:Step1、根据待计算序列,从第一个点出发,找到第一个波形向下的拐点作为出发点,即Yi>Yi+1(Y为序列数值,i=1,2,3…),若Y1>Y2(第一个点可能不是最高点),则先找到波形向上的拐点,即Yi<Yi+1(i=1,2,3…),之后再继续找第一个波形向下的拐点作为出发点,即图9中的O点,标记O点为第一个波峰。Step2、从O点出发,找到下一个波形向上的拐点,即Yi<Yi+1(i=1,2,3…),即图9中的1点,标记1点为第一个波谷。Step3、从1点出发,不断的寻找波形向下的拐点,并标记为波峰,于是得出波峰序列O、A、B、C、D、E……,和波谷序列1、2、3、4、5……(如图9所示),这时即得出了信号的波形特征,可以进行特征计算,比如峰峰间隔等。Step4、在寻找波峰的过程中会遇到一些噪音点,比如A和B之间伪波峰A1,这时需要根据之前得出的呼吸间隔,即O和A之间的时间间隔d来设定r,r的范围为d/2。由于血液中的氧气整体含量变化必然是一个相对缓慢的过程,所以r的取值应该根据前两次的呼吸间隔d和d1来做实时调整。r=(d+d1)/2Step5、由于呼吸频率的特殊性,在过滤掉噪音数据后,可以直接通过公式:呼吸频率br=首尾峰间隔时差/波峰间隔数量计算得出当前的呼吸频率,呼吸频率有滞后性,滞后时间为前一次呼吸时长的一半时间。正常情况下,一次完整的波形即可判断出呼吸的大概频率。在实验室环境下,该方法计算得出的呼吸数值和实际数值的误差在正负2以内,基本符合被试实际情况。本实施例算法稳定性强,通过对不同光照强度、脸部采集区域、采集距离的测试,与现有医院医疗设备计算结果相比,不容易受到外部各种条件的干扰,具有极强的适用性。通过采集大量的数据样本进行统计分析,得出如下结果:(一)本发明算法的准确性——与医疗设备对比(相关分析与回归分析)[数据为不同时间(15s、60s)不同光线强度(高、中、低)下医疗设备测试与本发明算法的所有数据]表2本发明与医疗设备的相关性对比皮尔逊积差相关结果:相关在0.01双侧水平上显著。相关系数为0.906。表3以本发明为因变量,常量、医疗为预测变量建立的模型表4回归分析结果回归分析结果:回归显著,回归系数为0.906。由以上两个结果标准估计的误差2.92393和回归系数0.906可知,本发明算法结果与权威医疗设备测试结果相近,可见其准确性。(二)时间与光线强度对本发明测定的影响(两因素方差分析)表5主体间效应的检验因变量:本发明a.R方=.019(调整R方=-.033)表6多重比较结果因变量:本发明基于观测到的均值。误差项为均值方(错误)=43.948。通过上述方差分析,主效应分析与多重比较结果显示,结果非常不显著,说明不同取值时间和不同光线强度对测定结果没有影响。实施例2本实施例所述的生理参数的监测装置,对应于实施例1所述的各个方法步骤,每个模块的具体工作参见实施例1所述。这里不再赘述。一种生理参数的监测装置,包括图像采集模块,用于采集当前人脸图像;图像截取模块,用于提取人脸图像中的脸颊部分图像;均值序列计算模块,用于对脸颊部分图像计算Green通道的均值,得到均值序列;滤波模块,用于对均值序列进行滑动平均值滤波,通过调整其滤波区间得到生理变化曲线;分析处理模块,用于对生理变化曲线进行特征提取得到生理参数。所述滤波模块调整滤波区间为m/3~2m/3,m为当前的采集数据的帧率,得到心率变化曲线;所述分析处理模块包括第一特征提取模块,第一特征提取模块包括:第一数据读取模块,用于找到第一个波峰的位置;第一波峰搜索模块,用于从前一个波峰的位置开始,搜索其后R范围内值最高的第一波峰;第二波峰搜索模块,用于从第一波峰的位置开始,搜索其后R范围内值最高的第二波峰;第一判断模块,用于判断第一波峰是否大于等于第二波峰,如果是,确定第一波峰为当前波峰,然后从第一波峰开始继续搜索;如果不是,则确定第二波峰为当前波峰,然后从第二波峰开始继续搜索;第一波峰序列保存模块,用于搜索完整个心率变化曲线后,得到一波峰序列,所述的波峰序列包括每个波峰的峰值和位置,位置也就是心跳间隔;心率值计算模块,用于将首尾2个波峰的时间间隔除以波峰的个数,得到心率值。波峰序列保存模块包括若干个波峰序列子保存模块,将心率30~220划分为n个区间,对应设定n个R值,分别采用每个R值求取波峰序列,分别保存在一个波峰序列子保存模块中;针对每一个波峰序列,采用下述公式计算f值:fi=sdi*sdi/avgi;其中,i=1,……,n;sdi为心跳间隔的标准差,avgi为计算心跳间隔的平均间隔,取Minfi对应的i作为当前选择的序列,采用该序列数据计算心率值。所述监测装置包括数据筛选模块,该数据筛选模块包括:初始化模块,用于初始化上一次选择的心率波形序号lastchoice,取到心率的累计次数count,当前心率波形序号作为心率的累计次数e,重新计算次数retrytime,赋值为0;根据设置的n个不同滤波间隔R(R1~Rn),计算心率hbr、hbrL1和波动情况f,并记录存储,同时累加count(在count<5时,取Minfi对应的序列数据计算心率值);平均波动计算模块,用于count>=5,计算作为平均波动;备选数据模块,取g=Mingi(i=1~n),并记录对应的i作为当前最适合的心率的备选。如果lastchoice=0(第一次没有记录),则令lastchoice=i,e=1;如果lastchoice=i,则令e=e+1,e不大于5;如果lastchoice不等于i,则令e=e-1,e不小于0;差值计算模块,用于计算hbr和hbrL1的差值d,心率稳定时,d的数值不会超过3;第二判断模块,用于判断f>g并且f>10是否成立,如果成立,则执行数据删除模块,否则,执行第二判断模块;也相当于,判断f<=g或者f<=10是否成立,如果成立,则执行第三判断模块,否则,执行数据删除模块;数据删除模块,用于抛弃当前计算序列前一半的数据,令lastchoice、count、e为0,令retrytime=retrytime+1;如果retrytime=2,则抛弃全部数据,令lastchoice、count、e为0;如果retrytime=3,则给出提示,当前测试环境不理想,监测失败,执行结束模块;第三判断模块,用于判断连续L2次计算的差值d是否小于3,如果是,则继续判断呼吸的数值是否已经计算出来并且趋于稳定,如果是,则输出心率和呼吸频率数值,执行结束模块;结束模块,用于停止数据采集,结束监测过程。所述滤波模块调整滤波区间为3m/2~2m,m为当前的采集数据的帧率,得到呼吸频率变化曲线;所述分析处理模块包括第二特征提取模块,第二特征提取模块包括:第一个波峰寻找模块,用于根据呼吸频率变化曲线中的数据序列,寻找第一个波峰点O点;第一个波谷寻找模块,用于从O点出发,找到下一个波形向上的拐点,得到第一个波谷,标记1;波形特征确定模块,用于从标记1点出发,不断的寻找波形向下的拐点,并标记为波峰,于是得出波峰序列O、A、B、C、D、E、……,和波谷序列1、2、3、4、5、……,得出信号的波形特征;呼吸频率计算模块,用于根据波形特征,得到首尾峰间隔时差和波峰间隔数量,通过公式:呼吸频率br=首尾峰间隔时差/波峰间隔数量;得出当前的呼吸频率。更进一步的,所述第二特征提取模块还包括去噪模块,去噪模块包括:搜索步长设定模块,设最近两次的峰峰间隔分别为d和d1,计算搜索步长r=(d+d1)/2;判断模块,用于判断当前寻找的波峰所在时间是不是大于上次波峰时间+r,如果是,则判断为新的波峰,如果不是,则判断为噪声点。可通过各种手段实施本发明描述的技术。举例来说,这些技术可实施在硬件、固件、软件或其组合中。对于硬件实施方案,处理模块可实施在一个或一个以上专用集成电路(ASIC)、数字信号处理器(DSP)、可编程逻辑装置(PLD)、现场可编辑逻辑门阵列(FPGA)、处理器、控制器、微控制器、电子装置、其他经设计以执行本发明所描述的功能的电子单元或其组合内。对于固件和/或软件实施方案,可用执行本文描述的功能的模块(例如,过程、步骤、流程等)来实施所述技术。固件和/或软件代码可存储在存储器中并由处理器执行。存储器可实施在处理器内或处理器外部。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1