关于心电算法(转)

《转》关于心电算法谈谈(Discuss of ECG Analysis Algorithm)

谈到心电算法(ECG Analysis Algorithm),许多生物工程技术人员就会关联到如下这篇文章:

 

Hamilton, Tompkins, W. J., "Quantitative investigation of QRS detection rules using the

MIT/BIH arrhythmia database", IEEE Trans. Biomed. Eng., BME-33,  pp.  1158-1165,

1987.

 

包括现今的许多心电图分析(ECG Analysis)以及与心电图相关产品的新技术和方法如小波方法、模式匹配、人工神经网络等都是以此为参考或以此来佐证更优良的性能。

 

我们这里也是以此来作为参照,一个E.P. Limited机构也是作者Patrick S. Hamilton以开放源代码的形式阐述并实现了上述方法。可以访问其网站

http://www.eplimited.com

下载源代码和说明文档《Open Source ECG Analysis Software Documentation》或详见我们对其作部分翻译。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=1

 

这份代码历经几个版本,2002年完成并发行最近的版本,该机构是属于美国卫生研究院(NIH)下美国心肺与血液研究所(NHLBI),作者初衷也是希望避免许多企业和研究机构重复的在心拍检测上面耗费精力,转而投向新的ECG诊断技术上面。该算法基于MIT/BIH心律失常数据库(MIT/BIH Arrhythmia Database)用C实现,并在PIC16F877单片机上测试通过了美国医疗仪器促进协会(AAMI)制定的EC13标准要求,达到了较好的敏感度、预测度以及实时性等性能。

 

因此,这套算法也被许多技术人员引用,对其进行的修改版本也在许多心电图相关产品上可见踪影。

 

我们这里将其进行参照是作技术探讨,不针对任何企业和团体机构,涉及敏感词汇也不必对号入座。总体来说,一个算法的确立是需要满足一些假设条件,而该算法中有几条假设是不够合理的,当然这也受当时的技术水平所局限,该算法主要分为心拍检测和心拍分类两个部分,下面我们来分析几个问题并作一一详解:

 

一、该算法文档中声明了这个算法没有在噪声环境下测试,对噪声也只是作一些如节律或R-R间期正常的松散假设(详见原文或参考如下)。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=2

由于MIT/BIH心律失常数据库是采集两导联ECG信号,并且其中受噪声水平影响较小,因此也提供给许多心电图相关技术人员和临床医生用以算法测试和数据分析(详见我们的另一篇文字)。

   

做信号处理的同志大多知道,但凡涉及电子器件总是不可避免的要和噪声打交道,人们和噪声斗争了许多年,信号处理的主旨也是消噪以提取重要信息,衡量一个信号处理工程师水平也是以消噪能力来评判。

 

由于这套算法是以心脏监护为原型来设计方案的,而与心电信号有关的干扰有很多(也可详见我们的另外一篇文字),虽然该算法文档中也对PDA式心电产品也作了展望,但在现今医疗设备越来越便携化趋势的今天,便携式医疗设备的电生理信号显然与医院中专业医疗设备所采集的信号是不同的,可以说是前者的信号处理分析起来更加具有挑战性。

 

这也是许多做医疗电子的企业所忽视的问题,一般都是盲目的追求医学准确水平或临床参考价值,而忽视了最基本的信号分析。因为便携化医疗设备主要针对家庭以及个人用户而非医院或医疗机构,而家庭或个人用户又不具备医学或工程技术等专业知识,所以设备的使用环境也多样化,从而导致抗干扰能力较弱,也难以受顾客青睐。

 

虽然该算法用MIT/BIH心律失常数据库均为半小时记录作测试有百分之九十七以上的敏感度和预测度,我们具体测试也的确如此,只有少数记录的假阳性和假阴性检测结果较多(如105、108、116、201、203、208、210等),但是我们并不用此为主要依据,我们用一些含噪水平不同的信号通过该算法检测,检测结果就表现较差,尤其在遇到电极接触性干扰简称脉冲干扰时最为明显,有的心拍检测就缺乏科学依据,当然这也与检测规则有关,我们后面再作阐述。

 

便携式医疗设备显然与专业医疗设备的信号采集环境是不同的,例如上述的电极接触性干扰具有持续时间短、振幅变化大、能量强的特点,虽不影响整体信号,但凌乱的数据会对算法检测造成较大影响甚至有的导致数据异常,所以还是会影响算法的性能,诸如上述测试的结果均不佳。

 

因该算法本身是是时域算法,也是与受当时技术局限性有关。同时,家庭或个人用户在使用便携设备时也不太可能自行涂抹电极膏,因此抗干扰性能必须是我们要考虑的,同时一些医疗标准也要求了经模数转换的信号其共模抑制比达到89分贝以上。

 

我们用我们自己的算法,对一些噪声来源进行模型估计,并从谱和统计模型的角度去区分ECG信号和噪声(这些都是现代信号处理的重要内容,在处理器芯片日新月异的今天,处理这些计算真是绰绰有余),并得到了较好的表现。

 

二、该算法中只是用数字滤波器来完成消噪的:

首先,经采集到的信号数据通过一个强高通滤波器滤除基线位移等干扰,接着是一个强低通滤波器滤除一些高频噪声,这样余下成分主要包含是在心电信号中能量最为集中和明显的QRS波群,也就是R波,对于室性期前收缩(PVC)等异位性心拍也与之相同。

 

这里强高通和强低通数字滤波器都会对心电信号波形造成失真,对于心拍检测来说这个是可以接受的,因为主成分是QRS波,而波形失真对于作心律失常分析来说也就丧失了分析价值,这个算法只作心拍检测和分类,因此我们这里不对心律失常分析进行讨论。

 

接下来,会将滤波之后的数据通过一个一阶差分并求其绝对值,然后用一个移动窗口进行积分求平均。这里所有操作在其PIC版本中均作了优化并予以实现。(详见源代码或可从我们主页下载,并且他这个PIC版本可单独实现心拍检测功能)

picqrs.c下载:

http://798.fc21.faidns.com/728798/0/ABUIABAAGAAgr-m4hAUo1PPn0Qc?f=picqrs.c&v=1351498929

该算法这里有一条假设是不合理的,他们认为在移动窗口积分后,所得到数据呈一个一个峰状,他们称为块(lump),问题是他们认为一般T波所产生的块要比QRS波产生的块要小(详见原文或参考如下)。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=4

 

在一般或主导节律为正常的心电图中的确是这样的,也就是说R波振幅是高于T波的,但的确有R波振幅低于T波一半水平的,而且T波还在QRS不应期之外,我就见过一例心电信号,这个人就只是身体瘦弱些,但节律都正常,用该算法检测就会得出两个心拍,也就是不但检测到R波也检测到之后的T波,活蹦乱跳的正常人总不能说成是心动过速,这是不应该的。

 

PIC16F877是16位单片机,工作频率为3.6864MHz,原文说是板载有368字节RAM。综上所述,在单片机处理芯片日新月异的今天,我们完全可以用新的技术和新的方法来取代这个10年前基于有限的技术手段和局限的消噪方法,而且原文也作了此类反问延伸,如果处理器能力不是问题,是否有更好的滤波器和滤波系数,当然这还是局限在了数字滤波器的范围之内。

 

显而易见,作者本人也是没有预见到10年后的技术发展程度,但相信目前很大一部分心电设备中的心拍检测解决方案采用的正是该算法。同时,每年也有很多与ECG相关的学术文章都在论述着新的方法,二进小波、最佳估计、EMD、主成分分析、形态分类、神经网络等等,但把学术探讨用以实现科技创新却又有很长的发展之路,也是我们这个国家提高生产力发展科技水平所面临的趋势,需要与此有关的技术人员和研究人员的不断努力。

 

三、心拍检测规则设置简易,不够合理:

该算法中,用移动窗口积分后得到的数据,然后检测峰高和峰到峰的间隔时间,以此来作为检测依据,(详见原文或参考如下)。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=5

 

可以看到,该算法认为可以通过设置类似于高低杠的阈值,来作为判定QRS波、噪声或其它的依据,另外在检测到的候选QRS波中再用R-R间隔来判定真正的QRS波。

 

显然,这是不合理的。如果单纯假设为节律正常的心电信号,这样做是问题不大的,但是心电图信号因人而异,而且更不用说需要考虑心律失常或心脏性疾病所引起的异常心电图,虽然便携式医疗设备不是专业医疗设备,但也是需要起到一定参考意义的,在关注健康和预防疾病方面能起到一定作用。

 

虽然该算法测试的MIT/BIH心律失常数据库统计的是整体敏感度和预测度,统计结果总体都超过百分之九十七以上的水平,但是具体到每一拍,还是在测试有些数据记录上出现明显的漏拍或错判,如室速漏拍、含有切迹的QRS波被判定成了噪声等等现象。

 

因为异常心电图本身有时并不容易发觉,所以这也正是用动态心电图(Holter)设备来记录更长时间段的心电信号并加以分析。MIT/BIH心律失常数据库中多有异常形态的心电图,但对每一条记录来说,都有其主导节律,也就是说主导节律大多是正常形态,那么病变异常就是形态发生改变的心电信号,那些漏拍和错判的也均是指这些异常心电图波形。

 

因此,在算法检测所错漏的心拍中,并不都是不需要我们提请用户需要注意的信息。

四、该算法也声明了不能识别室颤和室扑。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=2

 

的确,室颤和室扑也并不是容易检测的,因为这些形态有些类似于凌乱的正弦波。许多文献也提出了一些方法,他们的网站上好像就有一篇文章就是说这个的,具体我们没有看,扫了一眼,仿佛是有的。

 

但这种波形还有房颤的检测却并没有引起我们国内该行业领域内的重视,而是大家把重点精力花在比肩前沿的,如何寻找P波等等上面。这个又说到前面那个问题上面,例如大家盲目的要求ST分析水平达到多少多少,鉴于ST分析在临床诊断上面有重要依据作用,这个不假。

 

因为毕竟国内专业临床心电图机是被国外技术垄断,国内的技术水平显然是不足以与其抗衡,况且现阶段,先进的计算机诊断技术也是远没有达到临床医生满足的要求,自动诊断技术在目前还是不能替代医生判读。

 

所以,基本功没有夯实,赶超先进技术水平,也是没有多大实际意义的。

 

我们这里讲便携式医疗设备,因此,我们也应把着眼点放在尽可能的发挥出便携式设备的优势,并在性能上做到能提供医学参考价值,预防控制疾病的作用上面。

 

五、该算法的阈值检测方法,对弱信号是失效的。

文档中也说明了,为了避免在只有噪声而没有病人心跳而ECG监护报告心拍检测结果的情况,该算法作了一些阈值的调整,(详见原文或参考如下)。

http://www.math86a.icoc.cc/nd.jsp?id=12&fromColId=4&moduleId=3&m12pageno=9

 

但是实际情况中,便携式设备采集信号环境和采集方式与ECG监护以及心电图机的采集环境和采集方式是明显不同的,也就是说,便携式设备的确会采集到这种只有噪声而没有心拍的信号。

 

这还不算什么,与此同时,心电信号因人而异,也的确能采集到小于0.5mV的淹没在随机噪声中的心电信号,这种心拍很难与噪声区分开来,专业上讲,需要作噪声估计、假设检验,也就是这种情况下即使检测到的心拍也是需要作统计检验的(关于弱信号淹没在随机噪声中可以详见我们的另外一篇文字)。

 

该算法在检测这种弱信号时,检测结果表现很不好。若我们假设一般正常人的主导节律为正常,但是该算法却会检测为过速的结果,而且的确是有女人的I导联心电信号是微弱的。

 

六、关于心拍分类。

该算法的心拍分类,只作了三种分类,正常、室早(PVC)、未知,而且几乎也是用峰高、阈值以及R-R间期来作的判定规则,(详见原文,我们还未将其翻译,后续会添加)。

 

显然这也是不够的,在MIT/BIH心律失常数据库中,有大量的心拍分类注释类型,上述三种分类是远远不够的。

 

当然,考虑到当时的技术局限性,这套算法做的也是出类拔萃的。

 

我们的算法最近也在做分类工作,由于心律失常分类的内容太过庞杂,我们搞工程技术的人员也欠缺医学专业知识等因素,所以我们也欢迎与此有关的团体机构或企业组织和相关人员一起来做好心电算法的技术工作。

 

另外,因为我们的关注重点为便携式心电产品,所以我们的算法也会在后续不断完善。由于知识水平有限,文中错误之处,欢迎大家批评指正。

 

详情请登录我们的主页:

http://www.math86a.icoc.cc/

posted @ 2017-05-31 00:04  AijunHe  阅读(6350)  评论(2编辑  收藏  举报