基于小波变换的QRS波检测算法
2010-03-13高振斌
刘 媛 , 高振斌
(河北工业大学 天 津 3 00401)
心电信号是人类最早研究并应用于医学临床的生物电信号之一,与其他生物电信号相比,它更易于检测并具有较直观的规律性。心电图的QRS波的准确检测一直是心电信号分析检测的难点,而提取有效的模式特征更是其关键所在。QRS波的检测算法已有多种[1],而且理论研究也比较成熟,其中以小波变换为核心,利用小波变换对奇异值的阈值检测特性识别QRS波的算法检测率较高[2]。但是由于小波变换计算量大且有多次重复运算,不利于硬件的实时实现,因此对于算法的硬件实现的研究则相对比较少。如今,FPGA正处于革命性的数字信号处理技术的前沿。现在的FPGA系列都提供了以低系统开销、低成本实现高速乘-累超前进位链的DSP算法[3]。所有这些的发展使的心电信号的处理的FPGA实现成为可能[4]。因此本文利用FPGA实现了基于小波变换的QRS波群的检测。
1 检测算法原理及实现方案
1.1 基于小波变换的QRS波检测算法
近年来发展的小波变换技术,可同时进行时域和频域分析,具有时频局部化和多分辨率特性,特别适于处理非平稳信号,而心电信号多是时变信号,因而小波变换在提高QRS波检测算法方面取得了较好的结果。由于小波变换能代表信号不同频道上的分量,QRS波群的能量大多集中在23尺度和24尺度上,而运动伪迹、基线漂移等能量大都集中在大于25的尺度上。因此在处理心电信号时,通常取21到24尺度上的小波变换结果进行分析[4-5]。文献[6]利用二次样条小波作为小波基对心电信号对信号按Mallat算法[7]进行四级小波变换,然后确定出小波变换的模极大值对,它将收敛于信号的奇异点[8],即QRS波群,过零点就是R波波峰位置。算法采用MIT/BIH标准[9]心律失常数据库进行测试,取得较好的效果。但小波变换法计算量很大,实时应用较难,随着FPGA的发展,这种方法有了长远的发展前景,同时使其成为了可能。
1.2 实现方案
基于小波变换的QRS波检测算法给出其具体实现方案。根据以上分析,在硬件平台上实现基于小波变换的QRS波检测算法主要分为小波变换部分与QRS波检测部分2部分实现[10]。具体算法的实现主要分如下4个步骤:1)对心电数据进行小波变换得到各级小波系数;2)取第四级小波变换的小波系数确定其模正极大值与负极大值的阈值;3)确定第四级小波系数的正模极大值及负模极大值,如果在正模极大值的附近存在负模极大值则确定出QRS波群,否则删除该极值点。4)产生代表QRS波群的信号。这样就完成了整个小波变换及检测。
2 基于小波变换的QRS波检测的FPGA实现
选用Altera公司的FPGA CycloneⅡEP2C20F484C7完成整个设计,基于系统硬件,需要充分考虑小波变换的结构和检测算法的结构。下面主要对小波变换结构和检测算法结构进行讨论,并详细论述各部分的FPGA实现。
2.1 小波变换的FPGA实现
采用B-样条小波作为小波基函数,对心电信号进行四级小波变换。因此小波变换过程的流程分4步骤,而且整个数据处理都是单流向的,即每一级小波变换的低频输出作为下一级小波变换的输入,因此采用流水线的设计方法可提高系统工作效率。小波变换模块的实现框图如图1所示。
图1 小波变换模块的实现框图
信号通过高通滤波器和低通滤波器后分别得到高频信号和低频信号,来表示信号的细节部分和概貌部分。由于通过滤波器后的输出带宽减半,所以为了防止信息的丢失,采样频率也减半,因此在滤波后加入的二抽取的模块,每一级小波变换后的低频部分作为后一级的输入数据继续进行下一层的分解。每一级的小波变换模块由小波变换子模块transform组成。小波变换子模块中利用乘法器与累加器来模拟滤波器结构对心电数据进行二进小波变换。小波变换子模块的实现框图如图2所示。
图2 小波变换子模块的实现框图
图2中,心电数据与滤波器系数放入2个RAM中,RAM利用Altera公司提供的RAM:1-PORT core,由于2个RAM中的数据同时取出,因此共用地址信号。乘法器采用ALTERA公司的LPM_MULT CORE完成心电数据与滤波器系数的相乘,大大节约了LE资源,而且获得了很好的性能,乘法器采用一级流水线结构。累加器利用ALTERA公司提供的ALTACCUMULATE实现在滤波中对乘法器生成的乘积结果进行累加,将生成的结果通过寄存器输出,并在一组数据处理完毕后接收到累加器清零信号清零,为下一组数据处理做准备。二抽取模块的功能是对滤波器的输出数据进行抽取,即每两个数据只取后一个数据,组成长度缩短一半的输出数据。控制单元主要用来生成对输入数据RAM与系数RAM进行访问时所需的地址addr、乘法器的使能控制信号mult_en、累加器的使能addr_en、清零控制信号addr_clear和寄存器与抽取模块的使能信号d_en。小波变换子模块的功能仿真结果如图3所示。
图3 小波变换子模块仿真结果
图3中的dataout为小波变换子模块的输出,可以看到在信号输入小波子模块后,经过子模块内部的抽取,每输入两个数据,在模块的输出端才会输出一个小波变换的结果,由于对乘法器的输出结果进行了截取以节省片内资源,因此乘法器的输出mult_q有一定的运算量化误差。
2.2 QRS波检测的FPGA实现
根据小波变换的理论,信号的奇异点对应于其小波变换的一个正模极大值和一个负模极大值对,其位置对应于正、负模极大值的过零点。具体算法是先判断出正模极大值与负模极大值的阈值,若小波变换后的结果大于或小于阈值则判断为正模极大值与负模极大值,找出对应的模极值对,判断为QRS波群。检测模块的框图如图4所示。
图4 检测模块的实现框图
首先设置寄存器的初始值为0,把输入的小波分解后的数据存入存储器中。输入的小波分解后的数据与寄存器的值相比,如果大于寄存器的值就更新该寄存器,当检测信号有效时,即en=1时,停止更新,把寄存器中的数据的1/3做为阈值[10]存入阈值寄存器中,同时把存储器中的数据输出与该阈值相比,如果大于该阈值则判断为正模极大值。同理在寻找负模极大值时的原理同上,只不过小波变换后的数据小于寄存器数据时才更新该寄存器,如果存储器数据小于阈值寄存器中的值就判断为负模极大值。正模极大值与负模极大值的过零点就是R波位置。存储器和比较器分别采用ALTERA的RAM:1-PORT CORE和LPM_COMPARE CORE,这样在综合时能够节约大量的逻辑单元,而且实现了较优的性能。
3 实验结果
对信号在QuartusⅡ8.0下进行仿真分别得到小波变换模块及检测模块的仿真波形图。四级小波变换的功能仿真如图5所示。图5中dataout1_H,dataout1_L,dataout2_H,dataout2_L,dataout3_H,dataout3_L,data_out和dataout4_L分别为各级小波变换的高频和低频信息。
图5 小波变换模块的仿真结果
检测模块的仿真波形如图6所示。由于QuartusⅡ存储器不支持小数数据的存储,因此ecg_q为原始的心电数据扩大1 000倍,保证原始比例不变的待处理的心电数据,r为检测出的QRS波群。
图6 检测模块的仿真波形
选用Altera公司的FPGA CycloneⅡ的EP2C20F484C7得到整个小波变换模块和检测模块的资源占用情况如图7所示。
图7 系统资源占用率
判断出QRS波群对后续的心电诊断有着重要意义,QRS波群是心电失常诊断的重要的依据,只有在QRS波群确定后才有可能进一步检测和分析心电的其他细节信息。因此,后续的心电诊断的研究是以QRS波群为依据的。
4 结论
由仿真结果可以得出,所设计的以FPGA为核心的心电检测系统,利用FPGA内部丰富的硬件资源,把心电数据信号的小波变换及检测都放在FPGA内来实现,不但提高了系统整体的性能,而且对于心电仪的便携化发展具有重要意义。
[1]王立传,陈裕泉,潘敏.QRS波检测技术的进展[J].航天医学与医学工程,2006,19(3):231-234.
[2]杨秀增.基于FPGA的心电信号处理研究与实现[D].桂林:广西师范大学,2007.
[3]陈郁韩.FPGA在医疗设备中的应用研究[J].医疗卫生装备,2007,28(1):122-124.
[4]王文,孙世双,周勇.基于小波变换的心电图QRS波群检测方法研究[J].北京生物医学工程,2002,4(21):241-247.
[5]张和君,张跃.基于小波变换的心电信号综合检测算法研究[J].计算机工程与设计,2006,27(20):245-247.
[6]邱雅竹,冯俊.基于小波变换的心电信号检测新方法[J].四川师范大学学报:自然科学版,2005,28(3):270-272.
[7]林薇,吴效明,朱维宗,等.应用小波变换模极大值检测ECG特征点[J].医疗卫生装备,2004.10(10):149-151.
[8]李立策,郭兴明,王景灿,等.基于DSP的心电信号R波检测新算法[J].微计算机信息,2008,24(11):3831-3834.
[9]唐雅青.心电信号的自动检测与分析[D].上海:上海交通大学,2007.
[10]孙长江.基于小波变换的心电检测系统及其FPGA实现[D].哈尔滨:哈尔滨工程大学,2007.