一种基于Lempel‑Ziv复杂度的异常心音识别方法与流程

文档序号:11252385阅读:745来源:国知局
一种基于Lempel‑Ziv复杂度的异常心音识别方法与流程

本发明涉及医学测量和信号处理技术领域,尤其涉及一种基于lempel-ziv复杂度的异常心音识别方法。



背景技术:

内科医生通常可根据患者心音诊断心脏疾病。随着移动医疗健康监视设备的不断发展,可开发智能设备实现异常心音的自动识别,实现疑似异常心音初筛查,以缓解日益紧张的医疗资源。另外,仅凭主观感受不容易察觉心脏早期病变,若移动医疗健康监视设备能识别出疑似异常心音并报警,则有助于疾病的早期诊断和治疗。

识别异常心音的常见方法有利用异常心音与正常心音的相关性差异、频率分布差异等,这些方法计算量较大,算法相对复杂,难以满足移动医疗健康监视设备高速运算的要求。

因此,为了能够迅速判断用户的心音是否正常,需要一种简便的识别异常心音的方法。



技术实现要素:

为了克服现有技术存在的缺点与不足,本发明提供一种基于lempel-ziv复杂度的异常心音识别方法,通过分析和处理采集到的心音信号,引入分时间段计算lempel-ziv复杂度(后文简称lz复杂度)来改进传统方法,以识别异常心音。

为解决上述技术问题,本发明提供如下技术方案:一种基于lempel-ziv复杂度的异常心音识别方法,包括如下步骤:

1)随机获取某一心音信号x(k),并对其进行分帧,计算各帧的绝对值均值e(m);

2)对绝对值均值e(m)进行低通滤波处理,得到各帧的包络值en(m);

3)对步骤1)的心音信号x(k)所包含的完整心跳周期,分为第一心音s1、心音间期s1s2和第二心音s2三个阶段,并确定其第一心音s1的起点和第二心音s2的终点,且将第一心音s1、心音间期s1s2以及第二心音s2分别记为xs1、xs1s2以及xs2;获取xs1、xs1s2以及xs2对应包络值en(m)的包络段,分别表示为ens1(m)、ens1s2(m)和ens2(m);

4)在一个正常心音的完整心跳周期内,分为第一心音s1、心音间期s1s2和第二心音s2三个阶段,分别计算各阶段包络值的lz复杂度,且重复计算多组,求出均值,记为向量

5)根据步骤4)正常心音中各阶段包络值的lz复杂度向量[ys1normal,ys1s2normal,ys2normal]与向量的距离lnormal,确定合适的阈值c;

6)计算步骤4)中包络段ens1(m)、ens1s2(m)和ens2(m)的lz复杂度,记为向量[ys1,ys1s2,ys2];

7)计算步骤6)的lz复杂度向量[ys1,ys1s2,ys2]与正常心音均值向量的距离l;

8)对阈值c和距离l进行大小判断,若l>c,就认为测试对象心音出现异常;否则为正常。

进一步地,所述步骤1)的心音信号x(k),其长度为ld点、采样频率为fs,k∈{1,2,...,ld};其中ld是正整数,且ld/fs不小于1s,以保证获取的心音信号x(k)至少有一个完整的心跳周期。

进一步地,所述步骤1)的进行分帧,在对心音信号x(k)进行分帧后,每一帧的帧长为lf、帧移为lm、帧数m=[(ld-lf)/lm]+1;其中,[*]表示对*作四舍五入的取整运算。

进一步地,所述步骤1)中对计算各帧的绝对值均值e(m),第m帧的绝对值均值e(m)计算方式为:

其中,m∈{1,2,...,m}。

进一步地,所述步骤2)对绝对值均值e(m)进行低通滤波处理,低通滤波处理使用的滤波器为数字滤波器,其脉冲传递函数为:

其中,数字滤波器用于滤去e(m)中高频段部分,其截止频率为80~100hz,阶数选择4到6阶;所述脉冲传递函数的参数a0~am和b1~bm,决定于心音信号x(k)的采样频率fs和所述截止频率,并采用巴特沃斯低通滤波器设计算法来确定。

进一步地,所述步骤3),在心音信号x(k)的完整心跳周期内,首先检测第一心音s1的起点,然后根据第一心音s1、第二心音s2以及第一心音和第二心音间期s1s2的持续时间,来定位第一心音s1的终点和第二心音s2的起点;最后定位第二心音s2的终点;定位第一心音s1的起点和第二心音s2的终点的依据是,s1和s2片段分帧计算得到各帧的绝对值均值e(m),要比无心音片段分帧计算得到的绝对值均值e(m)高得多,而跟据这一特点确定心音完整周期中s1和s2的分布区间。

进一步地,所述步骤4)中计算各阶段包络值的lz复杂度,其分成两部分计算:对各阶段包络值信号进行二值化得到和求二值化结果的lz复杂度,其中,二值化公式为:

进一步地,所述步骤5)中计算距离lnormal,其具体公式为:

据距离lnormal范围确定阈值c,其公式为:

其中,是距离lnormal的均值,δnormal是距离lnormal的标准差,cn为阈值参数。

进一步地,所述步骤6)计算包络段ens1(m)、ens1s2(m)和ens2(m)的lz复杂度,其分成两部分计算:对各包络段信号进行二值化得到和求二值化结果的lz复杂度,其中,二值化公式为:

进一步地,所述步骤7)中计算距离l,其公式为:

采用上述技术方案后,本发明至少具有如下有益效果:

1、本发明针对心音信号,通过分三个阶段计算片段lz复杂度,并用这三个lz复杂度判断心音异常与否,其中只利用心音信号就可以实现判断,特别适用于家庭电子听诊辅助诊疗系统中异常心音的识别;

2、本发明的计算方法代码简单且计算量小,对设备的计算能力要求低,在穿戴式设备中也可以实现,且识别速度较快。

附图说明

图1为一种基于lempel-ziv复杂度的异常心音识别方法的步骤流程图;

图2为本发明实施例中获取的一段心音信号示意图;

图3为本发明实施例中获取的一段心音信号分帧计算绝对值均值e(m)的示意图;

图4为本发明实施例中对绝对值均值e(m)做滤波得到各帧包络en(m)的示意图;

图5为本发明实施例中对心音信号s1、s2起止点检测结果示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。

实施例

本实施例提供了一种基于lempel-ziv复杂度的异常心音识别方法,流程如图1所示,包括以下步骤:

第一步、利用录音设备获取心音信号j∈{1,2,...,ns},其中ns为正整数;

由于心音信号的有效频段为1~1200hz。且由于本发明对心音的保真度要求不高,因此可选择采样频率为fs=8.012khz。为了检测心音是否异常,需要选取至少一个完整心跳周期的心音信号。以减小计算量为目的,按心率75次每分钟计算,取心音信号长度为0.8~1秒;若采样频率为fs=8.012khz,并采集1秒的心音信号,则取得心音信号x(k),k∈{1,2,...,ld},其中ld=8012,所获得的心音信号如图2所示。

第二步、对第一步所得心音信号x(k)进行分帧,所分帧的帧长为lf,一帧后移lm点得到新帧,由此获得的帧的总数为m=[(ld-lf)lm]+1,其中,[*]表示对*作四舍五入的取整运算;

第三步、分别计算第二步所得帧的绝对值均值e(m),第m帧的绝对值均值为:

其中,m∈{1,2,...,m}。

计算结果如图3所示。然后对各帧绝对值均值e(m)做低通滤波处理得到包络en(m)。值得说明的是,滤波器参数并不唯一,只要可以实现低通滤波功能即可,滤波器的截止频率选择范围在80~100hz,对应脉冲传递函数阶数一般选择4到6阶。本发明选择某一组参数,并推导出计算包络en(m)的差分方程为:

第m帧包络的包络值为:

其中,m∈{1,2,...,m}。

选择这组参数的原因是可以用移位计算替代乘除计算,极大地减小计算量。计算en(m)的结果如图4所示;

第四步、对第一步所得心音信号x(k)所包含的完整心跳周期确定s1和s2的起止点。首先定位s1的起点,然后根据s1和s1s2间期持续时间来定位s1的终点和s2的起点,最后定位s2的终点,并将三个阶段的心音信号段分别记为xs1、xs1s2和xs2。定位s1起点和s2终点的依据是,s1和s2片段按一定帧长进行分帧计算得到的各帧绝对值均值e(m)比无心音片段分帧计算的各帧绝对值均值e(m)高,借此在心音完整周期定位出s1和s2的时间区间。检测s1和s2起止点结果如图5所示。s1、s1s2间期和s2心音对应的包络段为ens1(m)、ens1s2(m)和ens2(m);

第五步、对一个完整心跳周期的正常心音,分第一心音s1、s1s2心音间期s1s2和第二心音s2三个阶段,分别计算各阶段包络值的lz复杂度(即lempel-ziv复杂度,下述同理)。计算lz复杂度分成两个部分,信号二值化和计算二值化结果的lz复杂度。对所述三个阶段包络值信号,均分别按下述方式做二值化:

然后计算二值化后结果的lz复杂度,如此重复计算多组,求出其均值,记为向量

第六步,结合第五步计算得到的向量以及计算得到的正常心音分阶段心音包络的lz复杂度向量,记为[ys1normal,ys1s2normal,ys2normal],计算它们各自的距离lnormal,其公式为:

根据正常心音的lnormal范围来确定阈值c,表达式为:

其中,是多组正常心音的向量[ys1normal,ys1s2normal,ys2normal]与向量的距离lnormal的均值,δnormal是向量[ys1normal,ys1s2normal,ys2normal]与向量的距离lnormal的标准差,cn为阈值参数,取值范围为cn∈[1.1,3]。

第七步,计算第四步分阶段所得的包络段ens1(m)、ens1s2(m)和ens2(m)的lz复杂度,记为[ys1,ys1s2,ys2]。计算lz复杂度分成两个部分,信号二值化和计算二值化结果的lz复杂度。对ens1(m)、ens1s2(m)和ens2(m)均分别按下述方式做二值化:

然后计算二值化后结果的lz复杂度。

第八步、计算第七步所得的向量[ys1,ys1s2,ys2]与正常心音均值向量的距离l,其公式为:

第九步、若l>c,则认为测试对象心音出现异常。

本实施例识别方法的原理是,心音是周期信号,且正常心音随机程度较低而异常心音随机程度增加,基于心音lempel-ziv复杂度与可以识别异常心音。

正常心音波形是由第一心音(s1)、s1s2心音间期、第二心音(s2)和s2s1心音间期构成。第一心音发生于心脏收缩期,而第二心音发生于心脏舒张期。这两个心音出现时幅值较大。大部分的心脏病变出现时,s1、s1s2心音间期和s2的波形与正常心音的波形相差比较大,正常心音的随机程度较小,比较规律;异常心音通常会存在心脏杂音,s1、s1s2心音间期和s2中出现杂音的概率较大,其随机程度较大。根据这一偏差,基于lempel-ziv复杂度来达到区分异常心音和正常心音的目的。lz复杂度可量化描述信号的随机程度,正常心音s1、s1s2心音间期和s2的lz复杂度较小,而异常心音s1、s1s2心音间期和s2的lz复杂度较大;对于同一测试者,s1、s1s2心音间期和s2的lz复杂度值变化不大,通过计算包络线滤除高频噪声后,s1、s1s2心音间期和s2的lz复杂度三个值所构成的向量分布在一个以为中心,c为半径的空间球内,记该球为l(ys1,ys1s2,ys2)。异常心音s1、s1s2心音间期和s2的lz复杂度向量落于球l(ys1,ys1s2,ys2)之外,可以通过判断心音s1、s1s2心音间期和s2的lz复杂度向量[ys1,ys1s2,ys2]与球中心的距离是否大于c来判断其是否异常心音。

由于要计算心音s1、s1s2心音间期和s2的lz复杂度,所以要定位s1和s2的起止点。确定s1、s1s2心音间期和s2心音起止点的根据是s1、s2心音持续时间以及其分帧计算的绝对值均值e(m)较高。心音整周期出现时,s1和s2段幅值较大,分帧计算的绝对值均值e(m)较大。选取一个门阀值定位s1的起点。s1持续的时间是70~150ms,因此在s1起点后60~120ms定位s1终点。s2持续的时间是60~120ms,此外s2的分帧计算的绝对值均值e(m)较大,据此定位s2起止点。

本发明的区分方法对异常心音的区分度较高,利用了正常心音和异常心音在波形上的区别,并以lz复杂度来表示这方面的区别。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1