本发明涉及医学电子信息领域,具体涉及一种基于心电信号的心率计算方法。
背景技术:
心电图是临床最常用的检查之一,应用广泛,包括帮助诊断心律失常、心肌缺血、心肌梗死等。心电图记录的是随心动周期变化的体表特定位置的电位差。心电信号是典型的人体电信号,人体电信号本质是两点的电位差信号。直接加电压于身体并通过一定的导联方式就可以观察到心电信号。导联方式即输入导线与电极放置在机体特定的测试部位(正输入端)、参比部位(负输入端)和接地部位的连接方式。在心电图学中,双极肢体导联又称标准i、ii、iii导联,它是以两肢体间的电位差作为所获取的体表心电。由于双极肢体导联系统获取的心电图中有较大的r波,因此利用双极肢体导联就能够可靠地识别每次心跳并进行节律分析。
如果能够从某一导联的心电信号中准确识别出所有r波,那么根据相邻r波的时间间隔就可以很容易得到心率值。显然利用双极肢体导联(如i导联)获取的心电信号r波幅值较大的特点,可以方便快捷识别其中的r波。
由于心电信号容易因呼吸、肢体运动等产生基线漂移,以及易受肌电信号干扰,因此现有技术直接在原始心电信号上自动准确寻找r波有较大难度。
技术实现要素:
本发明的目的是针对上述现有技术中不足,提出基于心电信号的差分信号搜寻r波的心率计算方法,用于解决上述问题。
为了达到上述的技术效果,本发明采取以下技术方案:一种基于心电信号的心率计算方法,包括以下步骤:
第一步:获取心电信号的差分绝对值信号
给定一段时长l秒的肢体导联i导联心电信号x1(n),其中n=1,1、2、…、f*l,f为信号采样频率;计算其差分信号d_x1(n)=x1(n+k)–x1(n),其中n=1、2、…、f*l–k,k为小于n的一个正整数;对差分信号d_x1(n)中各个元素取绝对值,得到差分绝对值信号abs_d_x1(n);
第二步:搜索峰值点
对差分绝对值信号abs_d_x1从起始位置点开始搜索,当遇到幅值大于thres1的点p1,则在区间[p1,p2]上搜索幅值大于thres1的点的数量cnt1,其中p2、p1为点的索引值,且p2与p1的时长间距为0.1秒,如果cnt1/(p2–p1)大于阈值thres2,thres2=0.5,则将[p1,p2]区间上幅值最大点定义为一个峰值点;然后,从p2+1点继续采用上述方法向前搜索,如此循环直到差分绝对值信号abs_d_x1结束位置时停止搜索;此过程将获得若干个峰值点的集合a={a1,a2,…},a1、a2……分别表示各峰值点;
第三步:定位r波
在心电信号x1(n)上以集合a中各峰值点为中心的邻域,即区间[ai–d,ai+d]上搜索最大幅值点,这些点即为r波顶点;其中ai表示集合a={a1,a2,…}中任意一峰值点的相应索引值,d为正整数;
第四步:计算心率
计算相邻两r波顶点的时间间隔t,由t可以换算得到一个瞬时心率;对所有瞬时心率求平均,即可得到该时长l秒内的平均心率;其中t的单位为秒。
进一步的技术方案是:在第一步中,l≥2。
进一步的技术方案是:第二步中,令阈值thres1=4*m,其中m为差分绝对值信号abs_d_x1的均值。
进一步的技术方案是:第三步中,d为0.1*f向下取整的结果,f为信号采样频率。
进一步的技术方案是:第四步中,瞬时心率为60/t。
进一步的技术方案是:第一步中,k为0.01*f向下取整的结果,f为信号采样频率。
本发明与现有技术相比,具有以下的有益效果:本发明提供的方法从采集的一段连续心电信号序列中提取特征点(如r波顶点),并计算出相邻特征点间的时间间隔,再计算这些时间间隔的均值,利用该均值即可换算得到一定时间长度内的平均心率。该方法可以快速准确地从心电信号中自动计算得到心率值。
附图说明
图1是本发明实施例心电信号x1(n)的示意图;
图2是本发明实施例差分绝对值信号abs_d_x1(n)的示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
一种基于心电信号的心率计算方法,第一步是获取心电信号的差分绝对值信号。如图1所示,已知一段长度l=3秒的人体肢体导联i导联心电信号x1(n),n=1、2、…、f*l,其中信号采样频率f=512。其差分信号d_x1(n)=x(n+k)–x(n),n=1、2、…、f*l–k,k为0.01*f向下取整的结果即5。对d_x1(n)中各个元素取绝对,得到差分绝对值信号abs_d_x1(n),如图2所示。
第二步,搜索峰值点。首先计算abs_d_x1(n)的均值m为161,取阈值thres1=4*m,即644。阈值thres2取0.5。其次,如图2所示,对信号abs_d_x1(n)从起始位置点abs_d_x1(1)开始搜索,当遇到幅值大于thres1的点p1时,则在区间[p1,p2]上搜索幅值大于thres1的点的数量cnt1,其中p2、p1为点的索引,且p2与p1的时长间距为0.1秒,如果cnt1/(p2–p1)大于阈值thres2,则将[p1,p2]区间上幅值最大点定义为一个峰值点。然后,从p2+1点继续采用上述方法向前搜索,如此循环直到信号abs_d_x1(n)结束位置时停止搜索。此过程将获得若干个峰值点的集合a={a1,a2,…},a1、a2等表示各个峰值点。
第三步,定位r波。在心电信号x1(n)上的以集合a中各峰值点为中心的邻域即区间[ai–d,ai+d]上搜索最大幅值点,这些点即为r波顶点,如图1所示。其中,d为0.1*f向下取整的结果即51,ai表示集合a={a1,a2,…}中任意一峰值点的相应索引值。
第四步,计算心率。计算相邻两r波顶点的时间间隔t,即0.84和0.86,依据瞬时心率r=60/t,可得对应的瞬时心率71.4和70.6;对所有瞬时心率求平均,即可得到该时长l内的平均心率即70。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。