蔡 俊,张翔风
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
随着社会的高速发展,人们的医疗健康意识逐渐提高,对心血管疾病的关注日益增多,心电信号中包含了关于诊断心脏疾病的大量医学信息,所以心电信号研究成为现下科研中的一大热门课题。而心电信号去噪则是信号预处理的一个关键步骤。心电信号是一种微弱的、非线性、不平稳的信号,幅度一般在0.01~5mV,频率分布大约在0.05~100Hz[1],其中信号能量主要集中在0.25~35Hz左右[2]。心电信号在采集过程中易受到包括基线漂移、肌电干扰和50Hz工频干扰的噪声影响。这些干扰信号和心电信号的频率接近,会造成心电信号的畸变,对后续心电信号特征波检测、特征提取、分类等处理产生干扰,从而影响心脏疾病的正确诊断。
近年来,有许多学者提出了一些心电信号去噪算法,例如传统滤波法、小波阈值去噪法、经验模态分解(Empirical Mode Decomposition,EMD)、集合经验模态分解(Ensemble Empirical mode Decomposition,EEMD)、互补集合经验模态分解(Complementary Ensemble Empirical Mode Decomposition,CEEMD)。张勇[3]等利用中值滤波器滤除噪声,提高了整体的运算速度,但其幅频特性和过渡带的影响很容易造成波形失真。檀雪等[4]提出一种改进小波阈值函数去噪方法,克服了原有的软、硬阈值函数去噪的缺点,可以更好地保持心电信号的原有特征。然而,其参数选择困难,很有可能导致携带信号信息的小波系数被错误剔除,从而影响了去噪的效果。卢丽蓉等[5]采用基于心动周期和经验模态分解(EMD)的方法来进行心电信号降噪,虽然去噪的结果优于普通经验模态分解法,但无法解决EMD算法存在的模态混叠问题。赵伟等[6]应用MCA-EEMD算法去除心电信号中的工频干扰,EEMD虽然有效抑制了模态混叠,但是迭代次数和白噪声幅值的设置,需要依赖人为经验,如果数值设置不当,那么就无法解决模态混叠问题,同时也会出现重构误差。董立超等[7]应用CEEMD-小波包算法去除心音信号的噪声,CEEMD算法加入噪声集合的次数少,计算效率高,但CEEMD的不足之处分解到的固有模态函数(Intrinsic Mode Function,IMF)分量中仍然会有白噪声残留,而且算法自适应差。因为ECG信号经过经验模态分解后,噪声集中在高频分量中,所以传统的经验模态分解去噪时,会直接丢弃少量高频分量,而这也会将高频分量中包含的有用信息一并丢失,导致重构信号的误差过大,不利于后续的分析处理。
CEEMDAN是在EMD和EEMD基础上提出的一种算法,该方法通过在分解的每一阶段添加自适应的白噪声,计算唯一残差信号,来得到IMF分量[8]。不仅有效地抑制了模态混叠的情况,而且分解之后得到的IMF分量中包含的残余噪声更少,可以降低筛选次数,减少了重构误差,重构能力和完备程度大大增高。
本文针对心电信号的处理中存在的噪声干扰问题,引入一种CEEMDAN-小波包联合去噪办法。通过导入心电信号,对其进行CEEMDAN分解,得到IMF分量之后,绘制频谱图。通过相关系数的变化规律来筛选出包含噪声的高频IMF分量,再根据心电信号的频率分布范围来验证筛选是否正确。包含基线漂移的低频IMF分量,则根据心电信号的特征波形来确定。对包含噪声的高频IMF分量进行小波包分解,将含有基线漂移的低频IMF分量利用中值滤波进行噪声消除,最后,将去除过噪声的IMF分量和不含噪的IMF分量进行再次重构得到高信噪比的ECG信号。通过结合小波包分析和CEEMDAN,可以综合两者的优点,既能更好地处理非线性非平稳信号,噪声信号可以被更精细地去除掉,又能在去噪后较好地保留心电信号的完整性。
1.1 CEEMDAN分解算法
经验模态分解算法是希尔伯特-黄变换(Hilbert-Huang Transform,HHT)的核心算法,可以将含噪信号分解为多个保留局部信号的数据序列,即IMF分量,适用于处理非平稳信号[9]。完全自适应噪声集合经验模态分解(Complete EEMD with Adaptive Noise,CEEMDAN)[10]是TORRES等提出的改进算法。
设δi是满足标准正态分布的高斯白噪声信号,i=1,2,…,n,a为系数,取值为[1,2],λ为幅值,CEEMDAN算法原理如下。
(1)
(2)
(3)用原信号序列Y(t)减去第一个本征模态分量M1(t),构造残差e1(t)如式(3)所示。
e1(t)=Y(t)-M1(t)
(3)
(4)
(5)继续减去第二个本征模态分量M2(t),构造残差e2(t)如式(5)所示。
e2(t)=e1(t)-M2(t)
(5)
(6)重复上述步骤,直到残差信号ek(t)不能再继续分解,最终可以得到K个本征模态分量。最终得到的重构信号Y(t)如式(6)所示。
(6)
1.2 小波包去噪
小波变换是通过挑选快速衰减的小波基,进行伸缩、平移来表示信号的过程,常用于分析非平稳信号[11]。一般的小波变换只对上一层的低频信号进行分解,而高频细节部分则不再分析。在此基础上,发展出了小波包分解,可以对小波变换中未加处理的高频信号进行分解,进一步去除高频分量中包含的信息[12]。
小波包变换的去噪步骤如下。
(1)在确定小波基和分解层数的情况下,分解原始信号。
(2)选择合适的阈值λ,对分解得到的全部小波包系数进行去噪,将小于该阈值的系数当作噪声分量加以去除。
(3)叠加重构去噪过的小波包系数,得到去噪信号。
常见的小波去噪阈值函数主要包括硬阈值函数和软阈值函数[13]。硬阈值函数如式(7)所示。
(7)
软阈值函数如式(8)所示。
(8)
其中sgn(.)是符号函数,x为小波包系数,S为处理之后的小波包系数,λ为选取的阈值。
小波包分解的去噪效果会受到阈值以及阈值函数选取的影响。从均方差数据来考量,硬阈值去噪比软阈值去噪效果好,但会使处理后的信号附加抖动,平滑性不好[14]。软阈值函数处理过的小波包系数,连续性较好,不存在震荡,原始信号的平滑性被很好保留。综合比较,本文选取软阈值函数来对含噪ECG进行处理。
1.3 中值滤波去噪
因为心电信号中包含的基线漂移变化缓慢、幅值较大,实验过程中发现使用小波包阈值去噪算法对其处理效果不好,所以改为用中值滤波器来进行去噪[15]。中值滤波器在处理非平稳信号中效果较为显著,该方法既可以滤除噪声,又可以保留原始信号的边缘特征,能够屏蔽异常值。该算法的原理是,把数字序列中一个点的值,用其所在的一个邻域内所有点的中值来取代,从而来消除噪声点,即选择n个采样点为一个窗口,取中位数,窗口每次移动一个采样点,最后做窗口叠加运算[16]。
1.4 联合去噪流程
联合去噪算法流程如图1所示。结合CEEMDAN和小波包算法,通过导入含噪心电信号,对其进行CEEMDAN分解。得到数个IMF分量后,计算各模态分量与原始心电信号的相关系数,同时通过傅里叶变换,得出各个IMF分量的频率分布范围。之后按照相关系数来筛选含噪IMF分量,并用频谱图加以核验。使用小波包阈值去噪和中值滤波法对包含噪声的IMF分量进行降噪处理,之后重构经过处理的IMF分量与不包含噪声的IMF分量,得到纯净的心电信号。
图1 联合去噪流程图
为了验证本文方法的有效性,生成模拟的洁净心电信号与模拟噪声叠加作为实验对象。该模拟信号结合了心电信号特征波形的特点,幅值不超过2.5mV。
2.1 仿真ECG信号构建
心电图特征波形包括P波、QRS波群、T波、U波。P波的时限为0.12s,高度为0.25mV,正常的P波与R波之间的间期在0.12~0.20s。QRS波群会由年龄不同而导致持续时间不同,但健康的成年人一般不会超过0.11s。S-T段在0.12~0.14s之间,电压在0.05mV到0.1mV之间。T波的幅值范围是0.1~0.8mV,持续时间最长为0.25s。正常U波的持续时间通常为0.16~0.25s,且幅值<0.1mV。Q-T间期在心电信号中持续时间最长,可达0.44s左右。根据上述的信息,模拟计算出心电特征值为0.25mV的P波、0.35mV的T波、0.035mV的U波、1.6mV的R波、R-R间隔为0.83s、PR间隔为0.16s的10s理想心电信号,如图2(a)所示。
肌电干扰的频率分布一般在5~2000Hz,属于高频噪声,基线漂移一般是低频扰动,频率小于1Hz,因此不易与心电信号进行剥离[17]。在此数据基础上,在模拟的纯净心电信号中添加频率为0.15Hz,幅度为模拟信号15%的正弦波信号,作为基线漂移的模拟信号;添加频率为50Hz的正弦信号作为工频干扰的模拟信号;添加20dB的随机噪声作为肌电干扰的模拟信号,以此叠加构成含有噪声的心电信号,如图2(b)所示。
(a)理想ECG信号
2.2 仿真ECG信号降噪处理
通过CEEMDAN分解理想的加噪心电信号,得到一定数量的IMF分量。如果只靠经验和分量图来挑选含噪分量,这种挑选方式较为主观,且后续实验耗时耗力。相关系数表示了两个信号之间的相似程度,数值越大,则相关性越强,所以引入相关系数来挑选含噪分量,可以提高算法效率,更为客观地挑选出含噪的高频分量。模拟心电信号被CEEMDAN分解成9个IMF分量,如图3所示。
图3 加噪模拟信号分解结果
可以计算出各个IMF分量与加噪ECG信号的相关系数pk[18]如式(9)所示。
(9)
ck是分解得到的IMF分量,s是加噪的理想ECG信号。
计算出的各分量的相关系数如表1所示。相关系数小于0.1的分量被定义为伪分量,即含有较少原始信息的分量,在相关系数大于0.1的分量当中,出现的第一个局部极大值之前的IMF分量被定义为噪声主导分量[19]。由表1所示,IMF1的相关系数为0.0451小于0.1,所以是伪分量,IMF4为局部最大值,相关系数为0.7540,在IMF4之前的模态分量即噪声主导分量,包含大量高频噪声,所以可以得出IMF1~IMF3包含高频噪声。由图3可以得出,添加的干扰信号主要集中在IMF1~IMF3分量中,低频分量IMF7~IMF9的频率逐渐减小,看不出明显的心电信号特征波,主要包含基线漂移。
表1 模拟信号各分量的相关系数
心电信号分解所用的小波基,不仅要考虑其正交性、紧支撑性、光滑性,同时也要考虑分解层数。分解层数过多,也会导致信号中的原始信息被滤除。经过多次实验,最终选择coif5小波基对IMF1~IMF3分量进行三层小波包分解,之后对分解得到的小波包系数进行软阈值去噪,信号重构,得到去噪后的高频IMF分量。实验采用中值滤波算法消除IMF7~IMF9的基线漂移,最后重构叠加降噪后的分量与不含噪分量,组成降噪后的心电信号。
图4为加入模拟噪声的理想ECG信号去噪结果。由图2(b)可以看出,原始理想ECG信号中加入噪声干扰之后,图形出现许多毛刺,这些干扰掩盖了理想ECG信号中的有用的生理信息。由图4可知,含噪ECG信号经过CEEMDAN-小波包联合去噪之后,不仅保留了原始的生理特征信息,同时剔除掉了多余的噪声干扰,使得信号曲线更为光滑,具有较好的去噪效果。
图4 理想ECG信号降噪结果
3.1 数据处理
本文通过对MIT-BIH心律异常数据库的118号数据进行分析,来进一步对本文算法进行有效性验证。实验样本采用含有采集过程中的基线漂移、肌电干扰以及工频干扰信号的118号数据,采样点数为3600个,采样频率为360Hz。对118号数据经过CEEMDAN分解得到12个IMF分量。对12个IMF分量进行傅里叶变换得到的频谱图,如图5所示。
图5 118号数据本征模态分量的频谱图
心电118号数据各模态分量的相关系数如表2所示。由表2可以得出,相关系数的变化趋势为先增高再降低,IMF5的相关系数最大,为0.6548。根据上述提到的定义,所以IMF1~IMF4为含噪的高频分量,主要包含肌电干扰和工频干扰,需要进行小波包阈值去噪。
表2 118号ECG数据各分量相关系数
观察图5中的前4个IMF分量可以看出,分量的频率超过35Hz,超出了大部分心电信号的能量分布范围,再次验证IMF1~IMF4是包含噪声的高频分量。IMF9~IMF12分量的心电信号的特征波形不明显,主要是正弦波形的叠加,是包括基线漂移干扰的低频分量,所以对其进行中值滤波处理。
之后对118号ECG数据分别进行小波包去噪、EMD-小波包去噪、EEMD-小波包去噪、CEEMD-小波包去噪这四种不同算法进行去噪。得到结果如图6所示。
(a)118号ECG数据
由图6可以看出五种算法所得到的结果,皆滤除了一部分噪声。但是图6(c)小波包去噪得到的波形存在较大失真,属于过度滤除,很可能会丢失重要的医学信息,例如QRS波群和T、P波的幅值、间隔以及频率信息会因此而改变,整体去噪效果不佳。传统小波包去噪算法在重构时,根据频率分段来选择丢弃几个节点系数,虽然图形效果较好,但是被丢弃的节点系数中可能包含有用的高频信息,这对后续心电信号的处理是不利的。
EMD-小波包算法、EEMD-小波包算法以及CEEMD-小波包算法,在去噪处理之后,局部依然保留了许多毛刺,这会导致有效的生理信息被淹没。而图6(b)所示,经过本文算法所得到的心电信号波形则滤除了更多的噪声,最大限度地保持了信号的原始信息,图形更为明晰,去噪效果更佳。
3.2 去噪算法评估
为了验证本文算法在处理心电信号上的有效性,采用信噪比(Signal-Noise ratio,SNR)和均方根误差(Root Mean Square Error,RMSE)两个指标来进行评估[20]。信噪比是指信号中有效信号和噪声的比值,数值越大越好。均方根误差是用来描述经过去噪重构之后的信号和原信号之间的误差,数值越小越好。信噪比和均方根误差的定义如式(10)和式(11)所示。
(10)
(11)
其中,xi是原始信号,yi是去噪之后的信号。
除了118号数据,本文还引用了MIT-BIH心律失常数据库的105、109号ECG数据,这三组数据都包含着多种噪声干扰。实验分别应用本文算法以及前人应用过的4种算法去噪,对算法之间的指标进行比较。由表3可以看出,处理105号数据时,小波包算法、EMD-小波包算法、EEMD-小波包算法、CEEMD-小波包算法的信噪比分别为22.6010、23.2240、27.4238、27.4305,呈现递增趋势,均方根误差分别为0.0181、0.0163、0.0104、0.0103,呈现递减趋势,证明联合算法的降噪效果要优于小波包算法,EEMD和CEEMD算法优于EMD算法。而本文算法的信噪比达到了31.6446,均方根误差降为了0.0096,将这几组数据进行对比,可以得出,本文算法的信噪比更大,均方根误差更小,有更好的信噪分离效果。
表3 不同信号应用不同算法去噪的指标对比表
针对现有心电信号去噪算法所存在的不足,在CEEMDAN算法的基础上,提出了一种CEEMDAN-小波包联合去噪的算法。为了验证算法的可行性,本文首先根据一个完整心电信号周期所包含的幅值、频率、间隔等信息,生成纯净的模拟心电信号。在此基础上加入噪声信号,得到含噪心电信号,对此仿真信号应用本文算法进行去噪,得到的去噪效果较好。之后引入MIT-BIH心律失常数据库的105、109、118号数据,并使用前人应用过的四种算法和本文算法去噪,来进行算法之间的对比。
该算法利用CEEMDAN算法解决了EMD算法存在的模态混叠、EEMD算法重构误差大、CEEMD算法自适应性差等问题,同时利用小波包去除了心电信号包含的多种噪声干扰。从波形图结果可以得出,通过CEEMDAN-小波包算法可以在消除噪声分量的同时,有效保留了原始信号中的信息。而且该算法与小波包单独降噪、EMD-小波包联合降噪、EEMD-小波包联合降、CEEMD-小波包联合降噪方法相比,得到的信噪比最大,均方根误差最小,证明了本文算法优于其他算法,而且为以后的心电信号预处理提供了新思路,具有比较广阔的应用前景。