1.本发明涉及信号处理技术领域,尤其涉及一种心冲击图信号的特征波提取方法及系统。
背景技术:
2.心冲击图(ballistocardiogram,bcg)是一种无创、非接触式的技术,它是通过高灵敏度传感器来拾取心脏跳动周期中心脏泵血引起的身体相应的运动信号,并将其描记成波形得到的,它能够间接地反映出人体心脏的动力情况以及运动状态。从一个心跳周期的心冲击图信号波形可以看出,由于相对波动幅度较大,而且比较清晰,i-波和j-波是目前研究的主要兴趣点。有研究表明,通过心冲击图信号的i-j波间期以及j-k波振幅可用于监测血压,这两个特征有可能实现方便的无袖带血压监测。除此之外,在一些基于心冲击图信号的心血管疾病研究中,研究人员主要把工作围绕心冲击图信号的i-波和j-波幅值大小与相关疾病的关联程度展开。
3.目前,针对心冲击图信号的特征波提取主要聚焦于对j-波的提取,并基于此对人体的基本生命体征(如心率、心率变异性等)进行计算。这类方法忽略了j-波与其他特征波之间的关联,当心冲击图信号的其它特征波幅值接近j-波时会造成误判,这时就需要有其它特征波作为参照来确定真正的j-波。这类方法还容易受到信号本身长度以及心率范围的影响,从而造成最终j-波提取精确度的损失。除此之外,心冲击图信号的其它特征波在不同领域的应用前景也是不容忽视的。
技术实现要素:
4.针对上述先有技术的缺陷,本发明的目的在于提供一种心冲击图信号的特征波提取方法及系统,在特征波提取过程中建立它们相互间的联系以提高提取精度,同时使方法不易受信号本身长度与心率范围的影响。
5.一种心冲击图信号的特征波提取方法,采用的技术方案包括如下步骤:
6.(1)使用心冲击传感器采集人体的心冲击图信号,并由微控制单元对心冲击图信号进行模数转换并上传至云服务器,以获取信号四种特征波的坐标信息。
7.(2)在云服务器端对模数转换后的心冲击图信号进行带通滤波以及标准化,得到经过预处理的长度为n的心冲击图信号x:
8.x={x1,x2,
…
,xk,
…
,x
n-1
,xn},
9.其中,xk表示的是心冲击图信号x中第k个数据点。
10.(3)将经过预处理的心冲击图信号x输入至预先构建的神经网络模型中,输出为与x等长的概率向量p:
11.p={p1,p2,
…
,pn,
…
,p
n-1
,pn},
12.其中,pk表示的是神经网络判断心冲击图信号x中第k个点xk是i-波或者j-波的概率,k代表了它的坐标信息,它为后续步骤中初步确定所有i-波与j-波的坐标提供了依据。
13.(4)通过预先设定的阈值t对神经网络的输出进行筛选,倘若p中元素pk满足:
14.pk》t,
15.则保存其坐标信息k,然后根据k对应数据点xk判断它是i-波还是j-波,如果是i-波则将k存入初步确定的i-波坐标信息集合i
′
中,如果是j-波则将k存入初步确定的j-波坐标信息集合j
′
中。
16.(5)由上述步骤初步获得的坐标信息可能是不够准确的,通过i-波与j-波的联合校正算法对初步得到的i-波坐标信息集合i
′
以及j-波坐标信息集合j
′
进行校正,将最终确认的坐标信息分别存入i-波坐标信息集合i以及j-波坐标信息集合j中。
17.(6)以最终确认的i-波坐标信息集合i以及j-波坐标信息集合j为基准,采用寻峰算法依次找出心冲击图信号每一个心跳周期的h-波与k-波所对应的坐标信息,并分别存至集合h以及集合k中。
18.(7)云服务器对上述方法所提取出的h-波、i-波、j-波、k-波坐标信息进行整合并存储,作为最终提取出的信号特征波信息。
19.优选的,所述(2)中的带通滤波通过巴特沃斯带通滤波器来实现;所述的数据标准化方法采用z-score标准化。
20.优选的,所述(3)中的神经网络模型可以分为特征提取模块、特征融合模块以及输出模块;所述特征提取模块可以分为两路,特征提取模块1与特征提取模块2;所述特征提取模块1由全卷积神经网络构成,能够提取时间序列多粒度的空间特征,并输出与输入时间序列等长的多维特征向量;所述特征提取模块2由双向长短期记忆神经网络以及全连接层构成,双向长短期记忆神经网络能够提取时间序列的时序特征,并经由全连接层输出与输入时间序列等长的多维特征向量;所述特征融合模块包括concat层和一个双向长短期记忆神经网络,concat层将由特征提取模块1与特征提取模块2所提取出的特征向量拼接起来,并输入至双向长短期记忆神经网络中进行最终的特征融合;所述输出模块包括全连接层与分类层,它对输入的心冲击图信号进行逐点的概率预测。
21.优选的,所述(4)中,遍历由神经网络输出的概率向量,记录概率向量中大于设定阈值元素所对应x中数据点的坐标信息;再从输入的心冲击图信号中找到这些坐标信息所对应的幅值,将不同幅值的数据点映射至集合i
′
或j
′
的条件如下:
[0022][0023]
其中,bk表示坐标信息对应的幅值,i
′k表示初步确定的i-波坐标信息集合中第k个元素,j
′
l
表示初步确定的j-波坐标信息集合中第l个元素,ilength和jlength分别表示两个集合的长度。
[0024]
优选的,所述(5)中i-波与j-波联合校正算法包括(51)至(52),具体如下:
[0025]
(51):分别遍历j-波集合j
′
与i-波集合i
′
,计算相邻坐标信息的间隔,从而计算出逐搏心率hj与hi:
[0026][0027]
其中,h
jl
表示由j
′
中第l 1个坐标与第l坐标的间隔计算出的心率值;h
ik
表示由i
′
中第k 1个坐标与第k个坐标的间隔计算出的心率值。
[0028]
采用顺序聚类法,将集合hj和hi中所有的心率值根据它们之间不同的差异程度存入至不同集合中,得到:
[0029][0030]
其中,l为集合的数量,h
kx
和h
ky
分别表示第k个集合hk当中第x个和第y个元素;对于上述的任意一个集合来说,其内部的任意两个元素之间的差异程度均在所设定的范围之内;而对于两个不同的集合,它们元素之间的差异程度则超出设定的范围。在这里以集合hk为例,该集合中不同元素之间的差异程度用来量化。其中,min(h
kx
,h
ky
)表示h
kx
和h
ky
之间更小的那个数。
[0031]
若存在一个集合hk,它的元素是所有集合中最多的,则计算集合hk中元素的平均值得出心冲击图信号的心率预估值hb,将集合hk中涉及的i-波与j-波的坐标信息存入集合i与集合j中,并将剩余集合中的心率值所涉及的坐标信息组存入至异常坐标信息集合i
err
与j
err
:
[0032]
其中,{i
ek
,i
′
ek
}与{j
ek
,j
′
ek
}分别表示i-波与j-波中存在异常的一组坐标信息。若不存在元素最多的集合,则将正常心率范围的i-波与j-波坐标信息存入集合i与集合j中,找出其中偏离人体正常心率范围的坐标信息组存至异常坐标信息集合i
err
与j
err
。优选的,人体正常心率的范围被设定在40至150次/分钟。
[0033]
(52):以j-波为例,若异常坐标信息组{j
ek
,j
′
ek
}对应的心率值小于hb,则到集合j
′
中找出位于j
ek
与j
′
ek
之间的坐标信息集合ib:
[0034]
ib={i
b1
,i
b2
,
…
,j
bk
,
…
},j
ek
《i
bk
《j
′
bk
,
[0035]
其中,i
bk
是ib中第k个元素,它表示x在坐标区间[j
ek
,j
′
ek
]内的第k个i-波的坐标信息。若ib中的元素均不属于i-波异常坐标信息集合i
err
,则以ib中的每一个元素为基准,在心冲击图信号x中找到对应坐标的数据点,并在x中从该数据点向后遍历直至找到一个极大值点j0,为保证不受到x中毛刺的影响,选择时间τ,若j0正负τ内的数据点均小于其幅值x
j0
,则将其视为j-波的坐标信息存至j中;若不满足则继续向后遍历直至找到真正的j-波坐标信息。
[0036]
若ib中存在元素属于集合i
err
,则根据(51)中得到的hb计算出缺失的j-波数量jnum:
[0037][0038]
其中,fs是心冲击图信号的采样频率,round()表示四舍五入。得到jnum之后,找出所述(3)的概率向量p中,所对应数据点坐标在区间[j
ek
,j
′
ek
]内,并且数据点幅值大于0的最大的jnum个坐标信息,并将其存入j中。
[0039]
若异常坐标信息组{j
ek
,j
′
ek
}对应的心率值大于hb,则到i中找是否存在处于区间[j
ek
,j
′
ek
]的坐标信息,如果有则舍弃坐标信息j
ek
并将j
′
ek
存至j中,如果没有则执行相反操作。
[0040]
寻找i-波的过程与上述步骤同理,存入至集合i中。
[0041]
优选的,寻峰算法包括步骤(61)至(62),具体如下:
[0042]
(61):依次遍历集合j中的每一个元素,找出心冲击图信号中在其对应坐标之后的极小值点,保存其坐标信息至k-波集合k当中。
[0043]
(62):依次遍历集合i中的每一个元素,找出心冲击图信号中在其对应坐标之前的极大值点,保存其坐标至h-波集合当中。
[0044]
其中,每找出一个极大值或极小值点,均需采用(52)中的方法去除x中可能存在的毛刺的影响。
[0045]
一种心冲击图信号的特征波提取系统,包括信号采集与上传模块、信号预处理模块、i-波与j-波提取模块、i-j波联合校正模块、h-波与k-波提取模块和存储模块。
[0046]
所述信号采集与上传模块用于采集人体的心冲击图信号,并将其输入至信号预处理模块中。
[0047]
所述信号预处理模块用于将采集与上传模块输出的心冲击图信号进行预处理,消除由人体本身或采集设备、环境等对心冲击图信号带来的影响。
[0048]
所述i-波与j-波提取模块通过将预处理模块输出的预处理后的心冲击图信号输入构建的神经网络模型,初步确定的心冲击图信号的i-波与j-波坐标信息。
[0049]
所述i-j波联合校正模块使用i-波与j-波联合校正算法,对i-波与j-波提取模块获得的初步确定的心冲击图信号的i-波与j-波坐标信息进行进一步的校正,并将最终确定的i-波与j-波的坐标信息输入至h-波与k-波提取模块中。
[0050]
所述h-波与k-波提取模块以i-j波联合校正模块输出的i-波与j-波坐标信息为基准,采用寻峰算法,提取h-波与k-波的坐标信息。
[0051]
所述存储模块将h-波与k-波提取模块和i-j波联合校正模块输出的的h-波、i-波、j-波、k-波的坐标信息进行整合并存储至数据库中。
[0052]
本发明有益效果:
[0053]
与现有技术相比,本发明提供了一套较完整的心冲击图信号特征波提取方法,并在特征波提取过程中建立它们相互间的联系以获取更高的提取精度,也使得本发明具有更好的泛化能力,同时所构建的神经网络模型使本发明不易受信号本身长度与心率范围的影响。
附图说明
[0054]
图1是本发明方法的实现总流程图;
[0055]
图2是本发明方法中所构建的神经网络模块图;
[0056]
图3是本发明方法中提出的联合校正算法程序框图;
[0057]
图4是本发明方法所实现的特征波提取效果图;
[0058]
图5是本发明一种心冲击图信号的特征波提取系统结构框图。
具体实施方式
[0059]
下面结合附图对本发明的具体实施例做进一步详细描述。
[0060]
本实例的操作步骤包括如下:
[0061]
步骤1:使用心冲击传感器采集人体的心冲击图信号,并由微控制单元对心冲击图信号进行模数转换并上传至云服务器,以获取信号四种特征波的坐标信息。
[0062]
步骤2:在云服务器端对模数转换后的心冲击图信号进行带通滤波以及标准化,得到经过预处理的长度为n的心冲击图信号x:
[0063]
x={x1,x2,
…
,xk,
…
,x
n-1
,xn},
[0064]
其中,xk表示的是心冲击图信号x中第k个数据点。
[0065]
步骤3:将经过预处理的心冲击图信号x输入至预先构建的神经网络模型中,输出为与x等长的概率向量p:
[0066]
p={p1,p2,
…
,pk,
…
,p
n-1
,pn},
[0067]
其中,pk表示的是神经网络判断心冲击图信号x中第k个点xk是i-波或者j-波的概率,k代表了它的坐标信息,它为后续步骤中初步确定所有i-波与j-波的坐标提供了依据。
[0068]
步骤4:通过预先设定的阈值t对神经网络的输出进行筛选,倘若p中元素pk满足:
[0069]
pk》t,
[0070]
则保存其坐标信息k,然后根据k对应数据点xk判断它是i-波还是j-波,如果是i-波则将k存入初步确定的i-波坐标信息集合i
′
中,如果是j-波则将k存入初步确定的j-波坐标信息集合j
′
中。
[0071]
步骤5:由上述步骤初步获得的坐标信息可能是不够准确的,通过设计的i-波与j-波的联合校正算法对初步得到的i-波坐标信息i
′
以及j-波坐标信息j
′
进行校正,将最终确认的坐标信息分别存入i-波坐标信息集合i以及j-波坐标信息集合j中。
[0072]
步骤6:以最终得到的i-波坐标信息与j-波坐标信息为基准,采用寻峰算法依次找出心冲击图信号每一个心跳周期的h-波与k-波所对应的坐标信息,并分别存至集合h以及集合k中。
[0073]
步骤7:云服务器对上述方法所提取出的h-波、i-波、j-波、k-波坐标信息进行整合并存储,作为最终提取出的信号特征波信息。
[0074]
1.关于步骤1:
[0075]
在本实例中,微控制单元选取为esp32,心冲击图信号的采样频率设置为100hz。在信号采集过程中,esp32通过adc模块对信号进行模数转换,并通过其wi-fi模块将数据上传至云服务器。在上传这一过程中,所采用的通讯协议为mqtt协议,上传的数据经过在云端所搭建的mqtt服务器处理,储存至mysql数据库中。通过对云服务器发送http请求,可以获取在某一时间段的心冲击图信号,并由在云端所部署的后端服务将原始心冲击图信号送至后续方法中以获取心冲击图信号的特征波信息,后续方法可参照图1。
[0076]
2.关于步骤2:
[0077]
在本实例中,带通滤波通过三阶巴特沃斯带通滤波器来实现,它的通频带选取为1-10hz;所述的数据标准化方法采用z-score标准化,其计算公式如下:
[0078]
[0079]
其中,xk为预处理后,心冲击图信号中第k个数据点,sk是原始心冲击图信号的第k个数据点,μ为原始心冲击图信号总体数据的平均值,σ为所原始心冲击图信号总体数据的标准差。
[0080]
3.关于步骤3:
[0081]
参照图2,神经网络模型可以分为特征提取模块、特征融合模块以及输出模块;所述特征提取模块可以分为两路,特征提取模块1与特征提取模块2;所述特征提取模块1由全卷积神经网络构成,能够提取时间序列多粒度的空间特征,并输出与输入时间序列等长的多维特征向量;所述特征提取模块2由双向长短期记忆神经网络以及全连接层构成,双向长短期记忆神经网络能够提取时间序列的时序特征,并经由全连接层输出与输入时间序列等长的多维特征向量;所述特征融合模块包括concat层和一个双向长短期记忆神经网络,concat层将由特征提取模块1与特征提取模块2所提取出的特征向量拼接起来,并输入至双向长短期记忆神经网络中进行最终的特征融合;所述输出模块包括全连接层与分类层,它对输入的心冲击图信号进行逐点的概率预测。
[0082]
在本实例中,所述的全卷积神经网络将vgg16作为模型结构的backbone,模型所包含的卷积层均为一维卷积,并设置1-5层的通道数为[64,128,256,512,512]。除卷积层外,模型的基本单元还包含批正则层bn和relu层。批正则层bn用于加快网络的训练和收敛速度、控制梯度爆炸,防止过拟合;relu层用于增加网络各层之间的非线性关系。
[0083]
所述的双向长短期记忆神经网络由两层双向长短期记忆网络基本单元堆叠组成,它能够通过门结构保存长时记忆特征。
[0084]
4.关于步骤4:
[0085]
在本实例中,阈值t设定为0.2,遍历由神经网络输出的概率向量,记录概率向量中大于设定阈值元素所对应x中数据点的坐标信息;再从输入的心冲击图信号中找到这些坐标信息所对应的幅值,在本实例中,将不同幅值的数据点映射至集合i
′
或j
′
的条件如下:
[0086][0087]
其中,bk表示坐标信息对应的幅值,i
′k表示初步确定的i-波坐标信息集合中第k个元素,j
′
l
表示初步确定的j-波坐标信息集合中第l个元素,ilength和jlength分别表示两个集合的长度。
[0088]
做出此判决的依据是:由于在步骤1中心冲击图信号已经被标准化处理,因此在一个心跳周期中i-波与j-波的幅值必然满足上述关系。
[0089]
5.关于步骤5:
[0090]
参照图3,在本实例中,设计的i-波与j-波联合校正算法包括步骤51至步骤52,具体如下:
[0091]
步骤51:分别遍历j-波集合与i-波集合,计算相邻坐标信息的间隔,从而计算出逐搏心率hj与hi:
[0092][0093]
其中,h
jl
表示由j
′
中第l 1个坐标与第l坐标的间隔计算出的心率值;h
ik
表示由i
′
中第k 1个坐标与第k个坐标的间隔计算出的心率值。
[0094]
采用顺序聚类法,将集合hj和hi中所有的心率值根据它们之间不同的差异程度存入至不同集合中,得到:
[0095][0096]
其中,l为集合的数量,h
kx
和h
ky
分别表示第k个集合当中第x个和第y个元素;对于上述的任意一个集合来说,其内部任意两个元素之间的差异程度均在所设定的范围之内;而对于两个不同的集合,它们元素之间的差异程度则超出设定的范围。在这里以集合hk为例,该集合中不同元素之间的差异程度用来量化。其中,min(h
kx
,h
ky
)表示h
kx
和h
ky
之间更小的那个数。当某一心率值与hk中所有元素的差异程度均小于所设定的0.5时,则将其归入hk内,这表示集合中任意两个元素的差值都不能超过较小元素的50%。
[0097]
若存在一个集合hk,它的元素是所有集合中最多的,则计算集合hk中元素的平均值得出心冲击图信号的心率预估值hb,将集合hk中涉及的i-波与j-波的坐标信息存入集合i与集合j中,并将剩余集合中的心率值所涉及的坐标信息组存入至异常坐标信息集合i
err
与j
err
:
[0098][0099]
其中,{i
ek
,i
′
ek
}与{j
ek
,j
′
ek
}分别表示i-波与j-波中存在异常的一组坐标信息。若不存在元素最多的集合,则将正常心率范围的i-波与j-波坐标信息存入集合i与集合j中,找出其中偏离人体正常心率范围的坐标信息组存至异常坐标信息集合i
err
与j
err
;为了使算法具有更好的泛化能力,应将心率范围设置得较为宽松,在本实例中,人体正常心率的范围被设定在40至150次/分钟。
[0100]
步骤52:以j-波为例,若异常坐标信息组{j
ek
,j
′
ek
}对应的心率值小于hb,即间隔过大,则到集合j
′
中找出位于j
ek
与j
′
ek
之间的坐标信息集合ib:
[0101]
ib={i
b1
,i
b2
,
…
,i
bk
,
…
},j
ek
《i
bk
《j
′
ek
,
[0102]
其中,i
bk
是ib中第k个元素,它表示x在坐标区间[j
ek
,j
′
ek
]内的第k个i-波的坐标信息。若ib中的元素均不属于i-波异常坐标信息集合i
err
,则以ib中的每一个元素为基准,在心冲击图信号x中找到对应坐标的数据点,并在x中从该数据点向后遍历直至找到一个极大值点j0,为保证不受到x中毛刺的影响,选择时间τ,若j0正负τ内的数据点均小于其幅值x
j0
,则将其视为j-波的坐标信息存至j中;若不满足则继续向后遍历直至找到真正的j-波坐标信息;在本实例中,选取时间τ=30ms。
[0103]
若ib中存在元素属于集合i
err
,则根据步骤51中得到的hb计算出缺失的j-波数量jnum:
[0104]
[0105]
其中,fs是心冲击图信号的采样频率,round()表示四舍五入。得到jnum之后,找出步骤3的概率向量p中,所对应数据点坐标在区间[j
ek
,j
′
ek
]内并且数据点幅值大于0的最大的jnum个坐标信息,并将其存入j中。
[0106]
若异常坐标信息组{j
ek
,j
′
ek
}对应的心率值大于hb,即间隔过小,则到i中找是否存在处于区间[j
ek
,j
′
ek
]的坐标信息,如果有则舍弃坐标信息j
ek
并将j
′
ek
存至j中,如果没有则执行相反操作。
[0107]
寻找i-波的过程与上述步骤同理,存入至集合i中。
[0108]
6.关于步骤6:
[0109]
在本实例中,寻峰算法包括步骤51至52,具体如下:
[0110]
步骤61:依次遍历集合j中的每一个元素,找出心冲击图信号中在其对应坐标之后的极小值点,保存其坐标信息至k-波集合k当中。
[0111]
步骤62:依次遍历集合i中的每一个元素,找出心冲击图信号中在其对应坐标之前的极大值点,保存其坐标信息至h-波集合当中。
[0112]
其中,每找出一个极大值或极小值点,均需采用步骤52中的方法去除x中可能存在的毛刺对结果的影响。
[0113]
7.关于步骤7:
[0114]
在本实例中,在云服务器上部署的后端服务将由上述方法所提取的四种特征波坐标信息以及心冲击图信号x存储至mysql数据库,以供后续查询与调用。
[0115]
在本实例中,查询一段长度为150的心冲击图信号与其特征波坐标信息,参照图4,将心冲击图信号绘制出来,并根据提取出的四种特征波坐标信息在信号对应坐标中将其标注出来。其中,在每一个心跳周期内,不同的特征波均使用不同的标志来进行标注。从图中可以直观地看出,上述方法对心冲击图特征波提取的准确性。
[0116]
为实现所述心冲击图信号的特征波提取方法,本实例采用一种心冲击图信号的特征波提取系统,如图5所示,包括信号采集与上传模块、信号预处理模块、i-波与j-波提取模块、i-j波联合校正模块、h-波与k-波提取模块、存储模块。
[0117]
所述信号采集与上传模块用于采集人体的心冲击图信号,并将其输入至信号预处理模块中。
[0118]
所述信号预处理模块用于将采集与上传模块输出的心冲击图信号进行预处理,消除由人体本身或采集设备、环境等对心冲击图信号带来的影响,尽可能保证输入至i-波与j-波提取模块中神经网络的信号更加均匀、平滑,为特征提取提供更为优质的参数。
[0119]
所述i-波与j-波提取模块通过将预处理模块输出的预处理后的心冲击图信号输入构建的神经网络模型,初步确定的心冲击图信号的i-波与j-波坐标信息。
[0120]
所述i-j波联合校正模块使用i-波与j-波联合校正算法,对i-波与j-波提取模块获得的初步确定的心冲击图信号的i-波与j-波坐标信息进行进一步的校正,从而提高信号特征波提取的精度,并将最终确定的i-波与j-波的坐标信息输入至h-波与k-波提取模块中,作为该模块提取特征波的依据。
[0121]
所述h-波与k-波提取模块以i-j波联合校正模块输出的i-波与j-波坐标信息为基准,采用寻峰算法,提取h-波与k-波的坐标信息。
[0122]
所述存储模块将h-波与k-波提取模块和i-j波联合校正模块输出的的h-波、i-波、
j-波、k-波的坐标信息进行整合并存储至数据库中。
[0123]
以上为本发明的较佳实施例,但本发明的保护范围并不局限于此实例,任何熟悉该领域的技术人员在本发明揭露的技术范围内,通过简单的更换和替代所做出的其它实例,都应涵盖在本发明的保护范围之内。本发明的保护范围以权利要求书所界定的保护范围为准。