OSEA中QRS波检测算法

 

当信号经过滤波等预处理后,检测器开始检测任何一个峰值,这峰包括信号中的所有峰值。每次检测到一个峰值,它被分类为QRS波,或者噪声,或者为了后来的分类保存它。算法利用峰值的高度,相对于上一个QRS波的位置,最大斜率来分类这些峰。以下是关于算法基本检测规则的一个概要:

1. 忽略较大峰前后至少200ms内的所有峰值。

2. 若检测到一个峰值,检查看看原始信号是否包含正反斜率,如果没有,则表示,这个峰代表基线漂移。

3. 若在上一个检测结果后的360ms内检测到一个峰,在原始信号中检查当前峰值最大斜率是否至少是上一个检测峰最大斜率的一半。如果不是,这个峰值被推测为T波。

4. 如果检测峰值超过阈值,则为QRS波,否则为噪声。

5. 若在1.5倍的RR间期没有搜索到QRS波,则取超过检测阈值一半的峰值为QRS波,且这个峰值在上一个检测后至少360ms。

 

峰值检测函数 Peak,输入预处理后的信号,该信号与上个信号,以及最大值比较,若超过,更新最大值,保存当前信号值,返回0,否则,若低于最大值的一半,返回最大值,Dly 为0,否则,判定当前信号位置到最大值距离,超过95ms,返回最大值,Dly = 3,除此之外,返回 0。

意思就是,先找到最大值,然后,当输入信号降落到最大值一半时,返回这个最大值,即,峰值。

首次检测到的峰值,我们保存为TempPeak,同时设定200间距,然后当下个数据检测时,若非峰值,则间距缩小1.否则,比较峰值跟TempPeak幅度,若超过,则更新间距为200ms,否则,间距缩小。

之所以200ms间距,是因为我们认为检测到一个R波后200ms内,不需要检测。当间距缩小到0时,我们认为TempPeak就可能是新的QRS波。

同时,为了T波的识别,以及基线漂移的验证,我们保存原始信号的斜率。

 

上面4,5提到的阈值计算,是通过QRS峰值和噪声估算出来的。每当检测出一个QRS波,这个QRS波被添加在一个保存了8个最近QRS波峰值的数组中。同时,每次检测出一个非QRS波,这个非QRS波也会被添加在一个保存了最近8个噪声的数组中。检测阈值是根据噪声和QRS波之间的中间值或者平均值计算的,依照下面的公式:

Detection_Threshold = Average_Noise_Peak + TH*(Average_QRS_Peak  - Average_Noise_Peak)    TH是阈值系数。

类似的,RR间期的估算,也是根据8个之前的RR间期的平均值或者中间值来估算的

之前,通过最近8个值的中间值来估算QRS峰值平均值,噪声峰值平均值,RR间期平均值。最近当我们用最近8个值的平均值而非中间值执行一个QRS检测器时,我们发现用平均值提高了性能。虽然如此,当我们挂钩在软件中时,用均值却轻微降低了性能。

 

心搏探测器必须以一定的初始阈值估计值开始,为了做初始估算,在开始的8个连续的1秒间隔中,找到每个间隔中的最大峰值,这8个峰值被当作是初始的8个QRS波存放在QRS波数组中,然后我们设定阈值,同时,设定最近的8个RR间期为1s

有一种可能(但罕见),一串大的心室心搏倒置检测器的阈值增大太多,以致于,之后低振幅的心搏被忽略。实际中,这种情况只发生一条AHA记录中,MITBIH不存在这样的情况,为了避免这种情况,当没有心搏检测时,检测阈值以初始化的方式被重置。

 

当检测到一个心搏,探测器返回截至当前QRS波之前的所有样品数量,这样做,是因为检测延迟不同。若按上面4规则检测,则检测延迟是滤波器延迟,移动窗口积分宽度,对应规则1中200ms延迟的总和,总计为395ms。如果是通过回查检测出的QRS波,则对应的延迟是这个延迟,加上一半的RR间期。所以检测延迟很容易不同,从395ms到1s

 

许多心电监护仪程序要求比我们的检测器更短的检测延迟。相对较长,可变的延迟,在有些地方容易产生问题。例如,一个病人的心率迹象检测,应该是跟手腕处感觉到的脉冲非常同步的(接近0.25s)。如果回查程序通过不报告检测结果的方式忽略的话,算法会产生一个固定延迟。如果这样做,应该调整检测阈值,QRS检测算法的识别度和敏锐度仍然接近99.7%。

不带有回查程序的算法有一个固定的395ms检测延迟,大多数这种延迟的发生,是因为每检测到一个峰,算法等待200ms以确保这个峰不是跟随在QRS不应期中较大峰后面。

早期版本简单忽略了QRS峰后面的200ms内的所有峰值,这允许大P波被检测为QRS波(108文件),而后来的QRS波被忽略,因为它出现在QRS波后200ms内的不应期。为了复位QRS波后200ms空白延迟,在QRS检测头文件中定义包含如下:

#define POST_BLANK

 

忽略了回查,恢复QRS后200ms空白延迟,在降低敏锐度和识别度的情况下减少检测延迟到195ms

 

根据检测阈值的调整,将错键调到最小的情况下,敏锐度下降到99.2%,识别度下降到99.5%。一个更接近短检测延迟的算法是用完整检测算法来设定阈值,作为一个简单,短延迟方案。

 

你可能感兴趣的:(算法,360)