具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”/“若”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参阅图1,图1为本申请第一实施例提供的心冲击图信号的提取方法的流程示意图,所述方法包括如下步骤:
S1:获取用户的生命体征信号,根据所述生命体征信号以及预设的采样时间,构建生命体征信号时间段集,其中,所述生命体征信号时间段集包括若干个生命体征信号时间段。
所述心冲击图信号的提取方法的执行主体为心冲击图信号的提取方法的提取设备(以下简称提取设备),在一个可选的实施例中,提取设备可以是一台计算机设备,可以是服务器,或多台计算机设备联合而成的服务器机群。
在一个可选的实施例中,提取设备可以通过在预设的数据库中进行查询,获取用户当晚的生命体征信号,在另一个可选的实施例中,提取设备可以采用无扰式传感器信号获取用户当晚的人体微振信号,患者由于心脏活动、呼吸活动等使身体产生微振,重心发生偏移,产生力信号。信号采集模块可将力信号转换为模拟电信号,随后通过内置的滤波电路、放大电路以及A/D转换电路,对模拟电信号进行滤波、放大、A/D转换变为采样率为1000Hz的数字信号,作为本申请的生命体征信号。
所述无扰式传感器可以放在平躺位置心脏的下方,也可以放在枕头下方,来获取用户的人体微振信号。
所述信号采集模块可以采用DSP(Digital Signal Processing)或者ARM(Advanced RISC Machines)处理器,将力信号转换为模拟电信号。
所述A/D转换电路可以采用外置芯片,也可以采用相应的内置模数转换接口来将模拟电信号转换为数字信号。
在本实施例中,提取设备将所述生命体征信号通过一个截止频率为2~20Hz的二阶巴特沃斯带通滤波器,获得滤波后的生命体征信号Signal1。
在一个可选的实施例中,所述采样时间设置为2s,根据所述采样时间,将Signal1切分成N个长度为2s的生命体征信号时间段,获得构建生命体征信号时间段集X(n),其中,所述生命体征信号时间段集为:
X(n)= [X0,X1,…,XN-1],其中n = 0,1,...,N-1。
S2:对所述生命体征信号时间段进行状态标记,根据所述状态标记后的生命体征信号时间段,构建心冲击图信号段集,其中,所述心冲击图信号段集包括若干个心冲击图信号段。
所述心冲击图信号BCG(ballistocardiogram)用于心率检测、心率变异性监测、心脏收缩性以及心输出量变化监测等方面。
为了提高心搏定位的精准性,提取设备对所述生命体征信号时间段进行状态标记,获取状态标记后的生命体征信号时间段,其中,所述状态包括体动状态、离床状态以及睡眠状态;根据所述状态标记后的生命体征信号,构建心冲击图信号段集。
提取设备对所述生命体征信号时间段进行状态标记,并在后续只针对睡眠状态对应的生命体征信号做定位处理操作,而对体动(离床)状态对应的生命体征的信号不做定位处理,缩短了运行时间且减少了定位误差。
请参阅图2,图2为本申请第一实施例提供的心冲击图信号的提取方法中S2的流程示意图,包括步骤S201~S205,具体如下:
S201:计算所述生命体征信号时间段集内各个生命体征信号时间段的幅值标准差,构建生命体征信号标准差集,其中,所述生命体征信号标准差集包括若干个生命体征信号时间段对应的生命体征信号标准差。
在本实施例中,提取设备计算所述生命体征信号时间段集内各个生命体征信号时间段的幅值标准差,构建生命体征信号标准差集SD(n),其中,所述生命体征信号标准差集为:
SD(n)=[SD0,SD1,…,SDN-1],其中n = 0,1,...,N-1。
S202:获取所述生命体征信号标准差集的中位数,根据所述若干个生命体征信号时间段对应的生命体征信号标准差、生命体征信号标准差集的中位数以及预设的状态标记阈值,对所述获取所述若干个生命体征信号时间段的第一状态标记结果。
在本实施例中,提取设备计算生命体征信号标准差集SD(n)的中位数Median_SD,根据所述若干个生命体征信号时间段对应的生命体征信号标准差、生命体征信号标准差集的中位数以及预设的状态标记阈值,所述状态标记阈值包括上界阈值threshold1和下界阈值threshold2,对所述生命体征信号标准差集中的每个SDi作判断,具体如下:
若SDi的值大于(Median_SD×threshold1),则判断该SDi对应的生命体征信号时间段SD_Statei 的状态为体动状态Movement,即SD_Statei = “Movement”;
若SDi的值小于(Median_SD×threshold2),则判断该SDi对应的生命体征信号时间段的状态SD_Statei 为离床状态,由于体动和离床状态在后续操作都不做处理,为了简便因此将离床状态也设置为Movement,即SD_Statei = “Movement”;
若SDi的值大于等于(Median_SD×threshold2)且小于等于(Median_SD×threshold1),则判断该SDi对应的生命体征信号时间段SD_Statei 的状态为睡眠状态Sleep,即SD_Statei = “Sleep”。
获取状态标记后的所述若干个生命体征信号时间段集SD_State(n),作为第一状态标记结果,具体如下:
SD_State(n) = [SD_State0,SD_State1,…,SD_StateN-1,其中n = 0,1,...,N-1;
S203:计算所述生命体征信号时间段集内各个生命体征信号时间段的幅值最大值,构建生命体征信号最大值集,其中,所述生命体征信号标准差集包括若干个生命体征信号时间段对应的生命体征信号最大值。
在本实施例中,提取设备计算所述生命体征信号时间段集内各个生命体征信号时间段的幅值最大值,构建生命体征信号最大值集Max(n),其中,所述生命体征信号最大值集为:
Max(n)=[Max0,Max1,…,MaxN-1],其中n = 0,1,...,N-1。
S204:从所述生命体征信号最大值集中提取若干个的最大值采样集,获取所述若干个的最大值采样集对应的四分位数,根据所述若干个的最大值采样集对应的四分位数以及预设的状态标记阈值,获取所述若干个生命体征信号时间段的第二状态标记结果。
提取设备从所述生命体征信号最大值集中提取若干个的最大值采样集,在一个可选的实施例中,提取设备提取包括当前生命体征信号时间段的幅值最大值及之后的15个、30个、60个、120个最大值集合(即包括当前2s生命体征信号时间段及之后的30s、60s、120s、240s的生命体征信号时间段),可获得四个最大值采样集,具体如下:
Max_30s(k) = [Maxk,Maxk+1,...,Maxk+14];
Max_60s(l) = [Maxl,Maxl+1,...,Maxl+29];
Max_120s(m) = [Maxm,Maxm+1...,Maxm+59];
Max_240s(n) = [Maxn,Maxn+1,...,Maxn+119];
如果i+n的范围超出了N,则集合只提取到N-1,具体如下:
Max_30s(k) = [Maxk,Maxk+1...,MaxN-1];
Max_60s(l) = [Maxl,Maxl+1,...,MaxN-1];
Max_120s(m) = [Maxm,Maxm+1,...,MaxN-1];
Max_240s(n) = [Maxn,Maxn+1,...,MaxN-1];
获取所述四最大值采样集对应的四分位数,记为Q1、Q2、Q3、Q4。
根据所述状态标记阈值的上界阈值threshold1和下界阈值threshold2,获得所述四分位数对应的上界阈值Up_Q1、Up_Q2、Up_Q3、Up_Q4和所述四分数对应的下界阈值Down_Q1、Down_Q2、Down_Q3、Down_Q4,具体如下:
Up_Qn = Qn × up_threshold;n=1,2,3,4
Down_Q1 = Qn / down_threshold;n=1,2,3,4
初始化计数值Count = 0;对各个最大值采样集中的Max(i)与Up_Q1、Up_Q2、Up_Q3、Up_Q4、Down_Q1、Down_Q2、Down_Q3、Down_Q4进行数值大小比较,并根据比较结果对计数值Count递增。比较规则:若Max(i)的值大于Up_Qn或小于Down_Qn,则Count加1;其中n=1,2,3,4。
统计Count的值,根据Count值的大小对每个长度为2s的生命体征信号时间段进行状态判定,判定规则如下:
若Count的值大于等于2,则判断该Max(i)对应的生命体征信号时间段Max_State(i)的状态为体动(离床)状态即Max_State(i)= “Movement”;
若Count的值小于2,则判断该Max(i)对应的生命体征信号时间段Max_State(i)的状态为睡眠状态即Max_State(i) = “Sleep”;
获取状态标记后的所述若干个生命体征信号时间段集Max_State(n),作为第二状态标记结果,具体如下:
Max_State(n)= [Max_State0,Max_State1,Max_State2 ,…,Max_StateN-1],其中n= 0,1,...,N-1。
S205:根据所述第一状态标记结果以及第二状态标记结果,从所述状态标记后的生命体征信号时间段中获取若干个心冲击图信号段,构建用户的心冲击图信号段集。
提取设备根据所述第一状态标记结果以及第二状态标记结果,从所述状态标记后的生命体征信号时间段中获取若干个心冲击图信号段,构建用户的心冲击图信号段集。
在一个可选的实施例中,提取设备可以从根据所述第一状态标记结果,即状态标记后的所述若干个生命体征信号时间段集SD_State(n),以所述SD_State(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
在另一个可选的实施例中,提取设备可以从所述第二状态标记结果,即状态标记后的所述若干个生命体征信号时间段集Max_State(n),以所述Max_State(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
在另一个可选的实施例中,提取设备可以将所述SD_State(n)对应的若干个生命体征信号时间段SD_state(i)以及Max_State(n)对应的若干个生命体征信号时间段Max_State(i)进行合并,具体如下:
若SD_state(i)等于“Movement”或Max_State(i)等于“Movement”,则状态合并为“Movement”即Corr_State(i) = “Movement”;
若SD_state(i)和Max_State(i)均不等于“Movement”,则状态合并为“Sleep”即Corr_State(i) = “Sleep”;
构建所述生命体征信号Signal1对应的合并集Corr_State(n),具体如下:
Corr_State(n) = [Corr_State0,Corr_State1,...,Corr_StateN-1];
以所述Corr_State(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
在另一个可选的实施例中,提取设备对Corr_State(n)进行状态设置,获取状态设置后的Corr_State’(n),具体地,获取Corr_State(n)中体动状态对应的Corr_State(i),将该Corr_State(i)前后一个状态均设置为体动状态,即:
Corr_State(i-1) = “Movement”且Corr_State(i+1)= “Movement”;
以所述Corr_State’(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
请参阅图3,图3为本申请第二实施例提供的心冲击图信号的提取方法中S2的流程示意图,还包括步骤S206~S207,具体如下:
S206:获取时序倒置后的所述生命体征信号,根据所述时序倒置后的生命体征信号以及预设的对比阈值,获取第三状态标记结果。
提取设备将所述生命体征信号Signal1进行时序倒置,获取时序倒置后的所述生命体征信号Signal2,并对所述生命体征信号Signal2进行状态标记,获取所述生命体征信号Signal2对应的SD_State(n)以及Max_State(n),并进行合并,获取所述生命体征信号Signal2对应的合并集Back_State(n),具体如下:
Back_State(n) = [Back_StateN-1,Back_StateN-2,...Back_State0]
对所述生命体征信号Signal2对应的合并集Back_State(n)进行时序倒置,获取时序倒置后所述生命体征信号Signal2对应的合并集Back_State’(n),具体如下:
Back_State’(n) = [Back_StateN-1,Back_StateN-2,...Back_State0];
将Back_State’(n)中对应的若干个生命体征信号时间段与Corr_State(n)中对应的若干个生命体征信号时间段进行合并,获取两个信号合并后的生命体征信号对应的合并集Pre_State(n),作为第三状态标记结果。
S207:根据所述第三状态标记结果,从所述状态标记后的生命体征信号时间段中获取若干个心冲击图信号段,构建用户的心冲击图信号段集。
在一个可选的实施例中,提取设备从所述第三状态标记结果,即合并集Pre_State(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
请参阅图4,图4为本申请第二实施例提供的心冲击图信号的提取方法中S207的流程示意图,包括步骤S2071~S2072,具体如下:
S2071:根据所述第三状态标记结果,获取所述生命体征信号对应的差分集。
在本实施例中,提取设备对所述第三状态标记结果Pre_State(n)中体动状态以及离床状态对应的生命体征信号时间段的位置进行标记,获取索引集合Index(h),具体为:
Index(h) = [b0,b1,...bh-1];
对所述索引集合Index(h)进行前向差分处理,获取所述生命体征信号对应的差分集Sub(h),具体为:
Sub(h) = [c0,c1,...ch-2]。
S2072:根据所述生命体征信号对应的差分集以及预设的对比阈值,获取第四状态标记结果,根据所述第四状态标记结果,从所述状态标记后的生命体征信号时间段中获取若干个心冲击图信号段,构建用户的心冲击图信号段集。
在本实施例中,提取设备根据所述生命体征信号对应的差分集Sub(h)以及预设的对比阈值,获取对比结果,根据对比结果,对所述第三状态标记结果Pre_State(n)进行修正,将修正后的Pre_State(n)作为第四状态标记结果,具体如下:
分析所述生命体征信号对应的差分集Sub(h)中ci的数值大小,若ci大于1且小于等于5,则将Pre_State(n)中,i至i+1的对应的生命体征信号时间段的状态修改为“Movement”,获取修正后的Pre_State(n)。
根据所述第四状态标记结果,即从所述修正后的Pre_State(n)中体动(离床)状态对应的生命体征信号时间段为分割点,将生命体征信号切分成m段连续的睡眠状态的生命体征信号时间段,作为用户的心冲击图信号段集。
请参阅图5,图5为本申请第三实施例提供的心冲击图信号的提取方法的流程示意图,包括步骤S7,所述步骤S7在步骤S3之前,具体如下:
S7:对所述若干个心冲击图信号段进行噪声滤除以及呼吸基线滤除处理,获取处理后的心冲击图信号段。
在本实施例中,提取设备通过截止频率为20Hz的四阶巴特沃斯带通滤波器,对所述若干个心冲击图信号段进行噪声滤除,去除工频干扰及高斯加性噪声,得到噪声滤波后若干个心冲击图信号段,对所述噪声滤波后若干个心冲击图信号段作先腐蚀后膨胀的开运算,获取信号Output1,对所述噪声滤波后若干个心冲击图信号段作先膨胀后腐蚀的闭运算,获得信号Output2。
将信号Output1和信号Output2以及算数平均算法得到呼吸基线Breath,具体为:
Breath = (Output1 + Output2) / 2;
将所述噪声滤波后若干个心冲击图信号段减去呼吸基线Breath,获取处理后的心冲击图信号段。
S3:获取与所述若干个心冲击图信号段对应的第一J峰定位数据,根据所述第一J峰定位数据以及预设的模板长度,获取若干个心冲击图模板信号段。
所述J峰为心冲击图信号的波群特征的一种,由生理机制可知,心脏泵血时刻,心脏收缩血液从右心室快速泵出并冲击血管,其显示的特征为心冲击图信号的波群特征,所述波群特征中,J峰特征体现为单位时间内的能量是最大的,反应在所述心冲击图信号段波形的特征是峰值最大。所述J峰定位数据用于体现所述心冲击图信号段中在单位时间内的能量最大的位置。
在本实施例中,提取设备获取与所述若干个心冲击图信号段对应的第一J峰定位数据,
具体地,提取设备设置所述模板长度为
,根据所述心冲击图信号段对应的J峰定位数据中J峰的位置,从所述心冲击图信号段中索引提取N个心冲击图信号段的片段集合,对所述N个心冲击图信号段的片段集合进行算数平均处理,获取一个长度为
的处理后的心冲击图信号段,作为所述心冲击图信号段对应的心冲击图模板信号段。
请参阅图6,图6为本申请第一实施例提供的心冲击图信号的提取方法中S3的流程示意图,包括步骤S301~S303,具体如下:
S301:获取所述心冲击图信号段的极值点位置数据集,其中,所述极值点位置数据集包括极大值点位置数据集以及极小值点位置数据集。
在本实施例中,提取设备对所述心冲击图信号段的极大值点的位置进行标记,获取所述极大值点位置数据集,记为Peak(n);
对所述心冲击图信号段的极小值点的位置进行标记,获取所述极小值点位置数据集,记为Valley(m)。
S302:根据所述极值点位置数据集以及预设的信号长度,获取谷值数据集,根据所述极大值点位置数据集中各个点的幅值以及谷值数据集中每个谷的幅值,获取最大值位置数据集。
在本实施例中,提取设备从所述极大值点位置数据集Peak(n)选取定位点Peak(i),根据预设的信号长度len,设定范围为[Peak(i),Peak(i)+len],遍历所述极小值点位置数据集Valley(m),获取在所述设定范围内的极小值点,将所述定位点Peak(i)的值分别减去所述设定范围内的极小值点的值,获取若干个差值,从所述差值中获取最大值,作为谷值,提取设备重复上述步骤,获取所述极大值点位置数据集中各个点对应的设定范围的对应的若干个谷,构建谷值数据集,标记为ChooseV(k)。
将Peak(i)的幅值大小分别减去ChooseV中每个谷的幅值大小,获取该Peak(i)对应的最大值的位置。对Peak(n)的每个点进行遍历,获得最大值位置数据集Amp_JK(n)。
本申请能够在前向-后向互相关信号和欧式距离信号定位点不同的情况下,通过统计学分析各定位点之间的差值,根据不同的情况选定定位点作为J峰的定位点,提高信号定位结果的准确性。
S303:根据所述最大值位置数据集以及预设的搜索框,获取所述心冲击图信号段对应的第一J峰定位数据。
在本实施例中,提取设备将所述搜索框的起始位置设置为i,终止位置设置为i+1500,
根据长度为1500的所述搜索框以及最大值位置数据集Amp_JK,获取Amp_JK[i:i+1500]的最大值,并标记其位置为1beati,根据1beati,将所述搜索框的起始位置修改为1beati+500,终止位置为1beati+1500,获取Amp_JK[1beati:1beati+1500]的最大值,重复上述步骤,对所述最大值位置数据集进行遍历,获取位置集合Initpeak(L),作为所述心冲击图信号段对应的第一J峰定位数据。
本申请能够在心冲击图信号段发生畸变如出现双峰或是谐波次峰幅值大于主峰幅值的情况下,有效定位出J峰的位置。
S4:根据所述若干个心冲击图模板信号段,构建与所述心冲击图信号段集相关联的心冲击图模板。
由于理想的心冲击图信号是种伪周期信号,而心冲击图模板信号由心冲击图信号在时间域上不断周期性出现而构成。
在本实施例中,提取设备根据所述第一J峰定位数据中的Initpeak(L)以及预设的模板长度
,获取若干个心冲击图模板信号段
,构建心冲击图模板信号集
,根据所述若干个心冲击图模板信号段
,构建与所述心冲击图信号段集相关联的心冲击图模板。
请参阅图7,图7为本申请第一实施例提供的心冲击图信号的提取方法中S4的流程示意图,包括步骤S401~S402,具体如下:
S401:根据所述若干个心冲击图模板信号段以及算数平均算法,构建与所述心冲击图信号段集相关联的第一心冲击图模板。
所述算数平均算法为:
式中,
为所述第一心冲击图模板,
为所述模板长度,
为所述心冲击图模板信号段;
在本实施例中,提取设备根据所述若干个心冲击图模板信号段以及算数平均算法,构建与所述心冲击图信号段集相关联的第一心冲击图模板。
S402:根据所述若干个心冲击图模板信号段、第一心冲击图模板以及欧式距离算法,获取心冲击图模板信号段距离集。
所述欧式距离算法为:
在本实施例中,提取设备根据所述若干个心冲击图模板信号段、第一心冲击图模板以及欧式距离算法,获取心冲击图模板信号段距离集
。
S403:根据所述心冲击图模板信号段距离集,从所述若干个心冲击图模板信号段中提取目标心冲击图模板信号段,根据所述目标心冲击图模板信号段以及算数平均算法,构建与所述心冲击图信号段集相关联的第二心冲击图模板。
在本实施例中,提取设备获取所述心冲击图模板信号段距离集
中数值最小的若干个心冲击图模板信号段,根据所述心冲击图模板信号段距离集
中数值最小的若干个心冲击图模板信号段,从所述心冲击图模板信号集
中提取相应位置的心冲击图模板信号段
,作为目标心冲击图模板信号段,根据所述目标心冲击图模板信号段以及算数平均算法,构建与所述心冲击图信号段集相关联的第二心冲击图模板。
S5:根据所述心冲击图信号段集以及心冲击图模板,获取与所述若干个心冲击图信号段对应的第二J峰定位数据。
在本实施例中,提取设备根据所述心冲击图信号段集以及心冲击图模板,获取与所述若干个心冲击图信号段对应的第二J峰定位数据。
请参阅图8,图8为本申请第一实施例提供的心冲击图信号的提取方法中S5的流程示意图,包括步骤S501~S503,具体如下:
S501:根据所述心冲击图信号段集、心冲击图模板以及互相关函数算法,获取心冲击图模板信号段互相关函数集。
所述互相关函数算法为:
式中,
为所述心冲击图模板信号段互相关函数集,
为所述模板长度,
为由所述若干个心冲击图模板信号段
构建的模板信号集,
为所述心冲击图信号段集,
为所述模板信号集中的心冲击图模板信号段与所述心冲击图信号段集中对应的心冲击图信号段之间的时间间隔;
在本实施例中,提取设备根据所述心冲击图信号段集、心冲击图模板以及互相关函数算法,获取心冲击图模板信号段互相关函数集。
S502:根据所述心冲击图信号段集、心冲击图模板以及形态距函数算法,获取心冲击图模板信号段形态距函数集。
所述形态距函数算法为:
在本实施例中,提取设备根据所述心冲击图信号段集、心冲击图模板以及形态距函数算法,获取心冲击图模板信号段形态距函数集。
S503:根据所述心冲击图模板信号段互相关函数集以及心冲击图模板信号段形态距函数集,获取与所述若干个心冲击图信号段对应的第二J峰定位数据。
在本实施例中,提取设备分别获取与所述心冲击图模板信号段互相关函数集对应的最大值位置数据集,并将所述搜索框的起始位置设置为i,终止位置设置为i+1500。
根据长度为1500的所述搜索框,对所述心冲击图模板信号段互相关函数集对应的最大值位置数据Amp_JK’,获取Amp_JK’[i:i+1500]的最大值,并标记其位置为2beati,根据2beati,将所述搜索框的起始位置修改为2beati+500,终止位置为2beati+1500,获取Amp_JK’[2beati:2beati+1500]的最大值,重复上述步骤,对所述心冲击图模板信号段互相关函数集对应的最大值位置数据集进行遍历,获取位置集合2beat(I),其中,所述位置集合2beat(I)的长度为I。
对所述位置集合2beat(I)作前向差分处理,获取长度为I-1的间期集合JJI(n),获取所述间期集合JJI(n)的均值MeanJJ,并对所述位置集合2beat(I)的最后一个数进行标记,记为2beati-1。
将搜索框起始位置修改为2beati-1+500,终止位置为2beati-1+1500。在长度为1500的搜索框内寻找Amp_JK’[i:i+1500]的最大值,并标记其位置为2beati。计算2beati与上一点2beati-1的差值suc。
根据预设的阈值threshold5将sub与MeanJJ×threshold5和MeanJJ/threshold5作大小对比,具体如下:
若suc大于MeanJJ×threshold5,则将搜索框起始位置修改为2beati-1+500,终止位置设置为2beati,重新搜索Amp_JK’[2beati-1+500:2beati]的最大值,并标记其位置为新的2beati;
若suc小于MeanJJ/threshold5,则将搜索框起始位置修改为2beati,终止位置设置为2beati-1+1500,重新搜索Amp_JK’[2beati:2beati-1+1500]的最大值,并标记其位置为新的2beati;
若suc大于等于MeanJJ/threshold5且小于等于MeanJJ×threshold5,则保留当前2beati;
获取对比后提取的2beati,构建与所述心冲击图模板信号段互相关函数集相关联的定位点集合Beatcor_f;
将所述心冲击图模板信号段互相关函数集的时序倒置,获取后向心冲击图模板信号段互相关函数集BCGcor_backward,根据所述后向心冲击图模板信号段互相关函数集BCGcor_backward,构建与所述后向心冲击图模板信号段互相关函数集BCGcor_backward相关联的定位点集合Beatcor_b;
获取所述心冲击图模板信号段形态距函数集的绝对值BCGdit_abs,获取BCGdit_abs的最大值Max,将所述心冲击图模板信号段形态距函数集减去最大值,获取幅值翻转的心冲击图模板信号段形态距函数集BCGdit_r。
根据幅值翻转的心冲击图模板信号段形态距函数集BCGdit_r,获取与所述BCGdit_r相关联的定位点集合Beatdit_f,以及获取与所述BCGdit_r相关联的定位点集合Beatdit_b;
根据定位点集合Beatcor_f、Beatcor_b、Beatdit_f以及Beatdit_b,进行定位决策,获取决策定位点,具体如下:
初始化空集合beat_choose = [];计数值num0 = num1 = num2 = num3 = 0;设置误差允许最大范围th1。
将定位点集合Beatcor_f、Beatcor_b、Beatdit_f以及Beatdit_b的对应值加入集合beat_choose,beat_choose的表达式为:
beat_choose=[Beatcor_f(num0),Beatcor_b(num1),Beatdit_f(num2),Beatdit_b(num3)]。beat_choose(0)对应Beatcor_f(num0),beat_choose(1)对应Beatcor_b(num1),beat_choose(2)对应Beatdit_f(num2),beat_choose(3)对应Beatdit_b(num3),
设置前向-后向互相关函数定位一致性判断结果为case1,前向-后向形态距函数定位一致性判断结果为case2;
设置case1设为不相同(False),即case1 = False;case2设为不相同(False),即case2 = False;根据判断条件改变case1和case2的值,所述判断条件具体如下:
若Beatcor_f(num0)减去Beatcor_b(num1)的结果值小于等于th1,则将case1修改为True,即说明Beatcor_f中的定位点和Beatcor_b中的定位点相同。
若Beatdit_f(num2)减去Beatdit_b(num3)的结果值小于等于th1,则将case2修改为True,即说明Beatdit_f中的定位点和Beatdit_b的定位点相同。
初始化误差允许最大范围,将误差允许最大范围设置为th2,根据case1和case2的值,对beat_choose作出决策,获取最终定位结果,决策规则如下:
若case1和case2同时为True时,计算Beatcor_f(num0)减去Beatdit_f(num2)的数值大小,根据结果出以下决策:
若Beatcor_f(num0)减去Beatdit_f(num2)的结果值小于等于th2,则将最终定位结果设定为beat_choose中beat_choose(0)、beat_choose(1)、beat_choose(2)以及beat_choose(3)的均值,记为pos。
若Beatcor_f(num0)减去Beatdit_f(num2)的结果值大于th2,则将最终定位结果设定为前向互相关函数的定位结果以及后向互相关函数的定位结果的均值,即beat_choose中beat_choose(0)以及beat_choose(1)的均值,记为pos。
若case1为True,case2为False时,则将定位结果设定为前向互相关函数的定位结果以及后向互相关函数的定位结果的均值,即beat_choose中beat_choose(0)以及beat_choose(1)的均值,记为pos。
若case1为False,case2为True时,则将定位结果设定为前向形态距函数的定位结果以及后向形态距函数的定位结果的均值,即beat_choose中beat_choose(2)以及beat_choose(3)的均值,记为pos。
若case1和case2均为False时,初始化新的集合sub[n],其中,sub[n]的表达式为:
sub[n] = [sub0,sub1,sub2,sub3,sub4,sub5],sub0 = beat_choose(0)- beat_choose(1);sub1 = beat_choose(0)- beat_choose(2);sub2 = beat_choose(0)- beat_choose(3);sub3 = beat_choose(1)- beat_choose(2);sub4 = beat_choose(1)- beat_choose(3);sub5 = beat_choose(2)- beat_choose(3);
求集合sub[n]的最小值,并标记最小值的索引min_index。
根据索引min_index的值,决策出不同的定位结果pos。决策规则如下:
若min_index等于0,则pos = (beat_choose(0)+beat_choose(1))/2;
若min_index等于1,则pos = (beat_choose(0)+beat_choose(2))/2;
若min_index等于2,则pos = (beat_choose(0)+beat_choose(3))/2;
若min_index等于3,则pos = (beat_choose(1)+beat_choose(2))/2;
若min_index等于4,则pos = (beat_choose(1)+beat_choose(3))/2;
若min_index等于5,则pos = (beat_choose(2)+beat_choose(3))/2;
计数值num0、num1、num2、num3各加1。
重复上述定位决策步骤,直至num0的值大于集合Beatcor_f的长度且num1的值大于集合Beatcor_b的长度且num2的值大于集合 Beatdit_f的长度且num3的值大于集合Beatdit_b的长度。
输出决策定位点,Beat(n)=pos(n),即根据上述定位决策步骤,获取位置集合Beat(n)=pos(n)=[pos0,pos1,...,posN-1]=[Beat0,Beat1,...,BeatN-1],即第二J峰定位数据。
请参阅图9,图9为本申请第四实施例提供的心冲击图信号的提取方法中S5的流程示意图,还包括步骤S504,具体如下:
S504:对所述第二J峰定位数据进行校准处理,获取校准后的第二J峰定位数据。
在本实施例中,提取设备根据位置集合Beat(n),在所述心冲击图信号中获取所述据位置集合Beat(n)中各个点对应的心冲击图信号的峰值,根据预设的搜索长度th3,在各个峰值的前后范围[Beatj-th3,Beatj+th3]中获取各个峰值对应的极大值点,其中,0<j<N;
根据所述峰值对应的极大值点,替换所述位置集合Beat(n)对应的点,获取替换处理后的位置集合Beat’(n),实现对所述第二J峰定位数据进行J峰微调,其中,Beat’(n)=[Beat’0,Beat’1,...,Beat’N-1]
对所述替换处理后的位置集合Beat’(n)作差分处理,获取间期集合JJI2(n),其中,JJI2(n)=[JJI20,JJI21,...,JJI2N-2]。其中n=0,1,...,N-2。且JJI2n = Beat’i+1 -Beat’i,其中,0<i<n。
根据预设的Interval参数,标记所述间期集合JJI2(n)中,小于所述Interval参数的位置索引,记为集合Diff_index(m),其中,所述Interval参数为不应期缓冲时间,由于在生命体征信号中,一次心搏跳动结束到下一次心搏跳动开始是有一个缓冲时间的,理想情况下这个缓冲时间内,是不会出现心冲击图信号波群特征。
根据所述集合Diff_index(m),对所述替换处理后的位置集合Beat’(n)的点进行分析,具体如下:
提取Diff_index第i个值Diff_indexi。同时提取第i-1个和第i+1个值Diff_indexi-1和Diff_indexi+1。
将Diff_indexi减去Diff_indexi-1,记为sud,根据所述sud的结果作以下决策:
若sud小于1,说明出现连续多检,则修改Beat’i-1= Beat’i-1+ Beat’i。并将Beat’i删除。
若sud大于1,说明不是连续多检,则提取所述替换处理后的位置集合Beat’(n)中与Diff_indexi-11对应的Beat’i-1,Diff_indexi对应的Beat’i和Diff_indexi+1对应的Beat’i+1。计算间期值Last_interval =Beat’i- Beat’i-1及间期值Next_interval =Beat’i+1 - Beat’i。并判断Last_interval与Next_interval的大小关系,根据大小关系作以下判决:
若Last_interval小于Next_interval,说明Beat’i和Beat’i-1其中有一个点是多检的点,比较Beat’i和Beat’i-1在BCG信号中的幅值大小,保留幅值大的,删去幅值小的。
若Last_interval大于Next_interval,说明Beat’i+1和Beat’i其中有一个点是多检的点,比较Beat’i+1和Beat’i在心冲击图信号中的幅值大小,保留幅值大的,删去幅值小的。
根据上述步骤,遍历所述集合Diff_index(m),对所述替换处理后的位置集合Beat’(n)的点进行删减处理,获取删减处理后的位置集合,作为校准后的第二J峰定位数据。
S6:根据所述第二J峰定位数据,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集。
在本实施例中,提取设备根据所述第二J峰定位数据以及相关的信号质量系数计算算法,获取与所述若干个心冲击图信号段对应的信号质量系数,并根据所述信号质量系数以及与所述信号质量系数相关联的心冲击图信号质量判断条件,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集,其中,所述信号质量系数包括心跳相关系数、心跳间期稳定系数以及心跳面积差系数。
请参阅图10,图10为本申请第一实施例提供的心冲击图信号的提取方法中S6的流程示意图,包括步骤S601~S604,具体如下:
S601:根据所述心冲击图信号段以及预设的心跳相关系数计算算法,获取所述心冲击图信号段对应的心跳相关系数。
所述心跳相关系数计算算法为:
式中,
为所述心跳相关系数,
为第
个心冲击图信号段和第
个心冲击图信号段对应的互相关系数,
为所述心冲击图信号段的数目;
在本实施例中,提取设备根据所述心冲击图信号段以及预设的心跳相关系数计算算法,获取所述心冲击图信号段对应的心跳相关系数。
S602:获取所述第二J峰定位数据对应的第一间期集合以及第二间期集合,根据所述第二J峰定位数据对应的第一间期集合、第二间期集合以及心跳间期稳定系数计算算法,获取所述心冲击图信号段对应的心跳间期稳定系数。
所述心跳间期稳定系数计算算法为:
式中,
为所述心跳间期稳定系数,
为所述第二J峰定位数据对应的第一间期集合,
为所述第二J峰定位数据对应的第二间期集合;
在本实施例中,提取设备根据所述第二J峰定位数据对应的位置集合Beat(n)=pos(n)=[pos0,pos1,...,posN-1]=[Beat0,Beat1,...,BeatN-1],获取所述第二J峰定位数据对应的位置集合的间期集合JJI3(n),其中,JJI3(n)=[JJI30,JJI31,...,JJI3N-2];
根据值的大小对JJI3(n)进行由小到大的排序,得到排列后的集合New_JJI3(n),并记录集合New_JJI3(n)中第L*0.15个值,其中,L为所述间期集合JJI3(n)的长度,定义为JJI_15,作为第一间期集合;记录集合New_JJ3I(n)中第L*0.85个值,定义为JJI_85,作为第二间期集合;
根据所述第二J峰定位数据对应的第一间期集合、第二间期集合以及心跳间期稳定系数计算算法,获取所述心冲击图信号段对应的心跳间期稳定系数。
S603:获取所述第二J峰定位数据对应的心冲击图信号段的曲线线下面积数据,根据所述曲线线下面积数据以及心跳面积差系数计算算法,获取所述心冲击图信号段对应的心跳面积差系数。
所述心跳面积差系数计算算法为:
式中,
为所述心跳面积差系数,
为所述面积集合中第
个心冲击图信号段的曲线线下面积,
为所述面积集合中第
个心冲击图信号段的曲线线下面积;
在本实施例中,提取设备获取所述第二J峰定位数据对应的心冲击图信号段的曲线线下面积数据,根据所述曲线线下面积数据以及心跳面积差系数计算算法,获取所述心冲击图信号段对应的心跳面积差系数。
S604:根据所述心跳相关系数、心跳间期稳定系数、心跳面积差系数,获取所述心冲击图信号段的质量评估结果,根据所述心冲击图信号段的质量评估结果以及预设的质量评估阈值,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集。
质量较好的心冲击图信号段中,每个心跳间具有高度的相似性,每个心跳周期趋于稳定,每个心跳的形态趋于一致。因此质量好的心冲击图信号段的
较大、
较大、
较小。
在本实施例中,提取设备通过设置所述信号质量系数的上下限,包括
的上界t_up,
的下界t_down;
的上界i_up,
的下界i_down;
的上界a_up,
的下界a_down;根据质量评估判定条件,对所述心冲击图信号段进行质量评估,获取所述心冲击图信号段的质量评估结果,其中,所述质量评估结果包括A级(高质量)、B级(中质量)、C级(低质量),所述质量评估判定条件如下:
若所述心冲击图信号段的
大于t_up且
大于i_up且
大于a_up时,将所述心冲击图信号段判定为A级(高质量)。
若所述心冲击图信号段的
小于t_down且
小于i_down且
小于a_down时,将所述心冲击图信号段判定为C级(低质量)。
若所述心冲击图信号段的
、
以及
不满足上述所述质量评估判定条件时,将所述心冲击图信号段判定为B级(中质量)。
根据所述心冲击图信号段的质量评估结果以及预设的质量评估阈值,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集,在一个可选的实施例中,所述质量评估阈值可以设置为C级,若所述心冲击图信号段为C级,则对所述心冲击图信号段丢弃不保存;若所述心冲击图信号段为A级或B级,则保存当前BCG信号作输出。
请参考图11,图11为本申请第五实施例提供的心冲击图信号的提取装置的结构示意图,该装置可以通过软件、硬件或两者的结合实现心冲击图信号的提取装置的全部或一部分,该装置11包括:
生命体征信号获取模块111,用于获取用户的生命体征信号,根据所述生命体征信号以及预设的采样时间,构建生命体征信号时间段集,其中,所述生命体征信号时间段集包括若干个生命体征信号时间段;
心冲击图信号获取模块112,用于对所述生命体征信号时间段进行状态标记,根据所述状态标记后的生命体征信号时间段,构建心冲击图信号段集,其中,所述心冲击图信号段集包括若干个心冲击图信号段;
心冲击图模板信号获取模块113,用于获取与所述若干个心冲击图信号段对应的第一J峰定位数据,根据所述第一J峰定位数据以及预设的模板长度,获取若干个心冲击图模板信号段;
心冲击图模板构建模块114,用于根据所述若干个心冲击图模板信号段,构建与所述心冲击图信号段集相关联的心冲击图模板;
J峰定位数据获取模块115,用于根据所述心冲击图信号段集以及心冲击图模板,获取与所述若干个心冲击图信号段对应的第二J峰定位数据;
目标心冲击图信号段集构建模块116,用于根据所述第二J峰定位数据,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集。
在本申请实施例中,通过生命体征信号获取模块,获取用户的生命体征信号,根据所述生命体征信号以及预设的采样时间,构建生命体征信号时间段集,其中,所述生命体征信号时间段集包括若干个生命体征信号时间段;通过心冲击图信号获取模块,对所述生命体征信号时间段进行状态标记,根据所述状态标记后的生命体征信号时间段,构建心冲击图信号段集,其中,所述心冲击图信号段集包括若干个心冲击图信号段;通过心冲击图模板信号获取模块,获取与所述若干个心冲击图信号段对应的第一J峰定位数据,根据所述第一J峰定位数据以及预设的模板长度,获取若干个心冲击图模板信号段;通过心冲击图模板构建模块,根据所述若干个心冲击图模板信号段,构建与所述心冲击图信号段集相关联的心冲击图模板;通过J峰定位数据获取模块,根据所述心冲击图信号段集以及心冲击图模板,获取与所述若干个心冲击图信号段对应的第二J峰定位数据;通过目标心冲击图信号段集构建模块,根据所述第二J峰定位数据,从所述若干个心冲击图信号段中提取目标心冲击图信号段,构建目标心冲击图信号段集;
本申请对用户的生命体征信号进行状态标记,能够有效、精准地获取用户的心冲击图信号段,其次,有效定位出初始峰值的位置,设计与所述心冲击图信号段集相关联的心冲击图模板;其次通过模板优化阶段,构建第二模板,能够减少由于心冲击图信号的突变性造成的负面影响,进一步提高模板的准确性。对用户的心冲击图信号进行模板匹配,能够有效、精准地获取用户的心冲击图信号段,从而构建形态更加稳定的用户的目标心冲击图信号段集。
请参考图12,图12为本申请第六实施例提供的计算机设备的结构示意图,计算机设备12包括:处理器121、存储器122以及存储在存储器122上并可在处理器121上运行的计算机程序123;计算机设备可以存储有多条指令,指令适用于由处理器121加载并执行上述图1至图10所示实施例的方法步骤,具体执行过程可以参见图1至图10所示实施例的具体说明,在此不进行赘述。
其中,处理器121可以包括一个或多个处理核心。处理器121利用各种接口和线路连接服务器内的各个部分,通过运行或执行存储在存储器122内的指令、程序、代码集或指令集,以及调用存储器122内的数据,执行心冲击图信号的提取装置11的各种功能和处理数据,可选的,处理器121可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrambleLogic Array,PLA)中的至少一个硬件形式来实现。处理器121可集成中央处理器121(Central Processing Unit,CPU)、图像处理器121(Graphics Processing Unit,GPU)和调制解调器等中的一个或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责触摸显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器121中,单独通过一块芯片进行实现。
其中,存储器122可以包括随机存储器122(Random Access Memory,RAM),也可以包括只读存储器122(Read-Only Memory)。可选的,该存储器122包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器122可用于存储指令、程序、代码、代码集或指令集。存储器122可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于至少一个功能的指令(比如触控指令等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器122可选的还可以是至少一个位于远离前述处理器121的存储装置。
本申请实施例还提供了一种存储介质,所述存储介质可以存储有多条指令,所述指令适用于由处理器加载并执行上述图1至图10所示实施例的方法步骤,具体执行过程可以参见图1至图10所示实施例的具体说明,在此不进行赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束算法。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。
本发明并不局限于上述实施方式,如果对本发明的各种改动或变形不脱离本发明的精神和范围,倘若这些改动和变形属于本发明的权利要求和等同技术范围之内,则本发明也意图包含这些改动和变形。