时间:2024-05-04
汤 伟 王 权* 刘 嫣 王玲利
1(陕西科技大学电气与信息工程学院 陕西 西安 710021)2(陕西科技大学工业自动化研究所 陕西 西安 710021)
人体心电信号属于生物微弱电信号,在便携式心电设备采集心电信号的过程中,极易受到各种复杂环境的干扰。在设备采集时面临的首要问题便是降低其信号中含有的噪声[1]。
在实际心电采集过程中,心电信号的噪声主要有肌电干扰、工频干扰与基线漂移等[2],且信号的长度都属于分钟级。在心电信号去噪方法上有传统的FIR数字滤波法、自适应滤波法、小波滤波方法和神经网络滤波方法等[3-5]。传统的FIR数字滤波面对复杂的噪声环境无法有效地去除干扰[6]。小波变换虽然在局部特性上表现出良好的特性,但面对心电信号不断方向变换没有很好的辨识能力。神经网络滤波方法计算复杂,需要大量实验数据,且实时性差。目前稀疏分解用于心电信号去噪方面的方法有基追踪算法(Basis Pursuit,BP)、匹配追踪(Matching Pursuit,MP)、正交匹配追踪(Orthogonal Matching Pursuit,OMP)、基追踪算法以及广义正交匹配追踪算法GOMP等[7]。基追踪算法主要适用线性规划的凸优化问题,算法迭代次数少,但计算的复杂度高,不能满足心电信号采集时的实时性要求。相对于BP算法,OMP算法是一种次优的算法,在一定程度上降低了计算复杂度。但OMP算法在每次迭代的过程中只能选择一个原子,因此需要的迭代次数依然十分庞大[8]。GOMP解决了每次迭代只能选择一个原子的问题,能够实现在一次迭代中选择多个原子,有效降低了算法迭代次数[9]。
对信号进行稀疏分解前,需要冗余的字典矩阵作为前提。因此在匹配输入信号与字典原子时,GOMP算法对字典中相似原子辨识度不高,易出现错选的原子,导致重构精度不理想的情况,且面对心电信号噪声的强度与种类不同,算法的重构精度也会受到影响。针对上述出现的问题,提出了改进的GOMP算法,在复杂噪声环境的情况下,通过增加特定阈值的方式实现迭代次数依据信噪比自适应匹配,并且在选择原子时将把Jaccard系数引入导原子匹配过程中加以完善,有效地提高了算法重构精度。
由于信号具有良好的稀疏性,稀疏分解在信号领域得到广泛的应用。它的本质分为两个步骤:稀疏与重构。稀疏表示的目的是用超完备字典中最符合待分解信号特点的匹配原子稀疏表示待分解信号。通常情况下分解方法优劣取决于选择字典的种类。在过完备冗余字典中字典的元素远远超过完备字典,因此通过设计合适的算法使得字典中原子逼近输入的心电信号,更能反映出心电信号的结构特点。假设y是长度为N的输入信号,对于任意的输入信号y都可以稀疏表示为:
(1)
式中:x为N×1的列向量,即稀疏分解向量(解向量);Φ为字典矩阵(过完备字典)。系数分解的求解过程就是寻找非零元最小的系数向量x,若x中的非零元素个数K远远小于N(K≪N),说明x是可以稀疏分解。其目的是通过最少的原子来达到最优的逼近效果,即信号可以被描述为:
(2)
在稀疏分解前,字典矩阵Φ采用Gobar函数[10]来生成,其函数表达式为:
(3)
式中:g(t)为高斯窗函数;γ是由s、u、v、w四种参数决定的时频参数;s为尺度因子,决定了函数能量分布率;v为频率调制因子,决定了函数主频;u为平移因子,决定了函数波形的位置;w为相位因子,决定了函数的相位。通过此函数便可以生成Gabor字典。
因此,关注的主要问题是怎样通过字典Φ来重构输入信号y。本文主要通过在固定的冗余字典基础上,进而通过利用改进GOMP算法来对原始信号进行稀疏分解与重构。
(4)
(5)
虽然OMP算法能够对信号做到较高精度的重构,但随着输入信号以及字典矩阵的不断复杂,算法在迭代方面每次只能选择一个原子,导致其运算时效性变差且重构精度降低,使得信号出现失真现象。因此,在求解非线性简单信号并且在稀疏度K较小的情况下,OMP是一种高效的算法[12-13]。在实际的心电信号去噪过程中,由于数据的庞大,导致OMP算法在其应用上极大地制约了它的发展。
GOMP算法在每次迭代时选择与残差乘积最大的少数几个原子。相对于OMP算法,GOMP算法减少了其迭代次数并提高重构精度[14]。GOMP算法首先计算字典矩阵中原子与输入信号的内积,即:
C={ci|ci=yTφi,i=1,2,…,N}
迭代过程中,OMP算法在其选择最优原子时以C中最大系数为标准。而GOMP算法会在C中选择S个最优原子(ci1,ci2,…,cin)。再利用最小二乘方法获得输入信号y的近似值,并更新残差:
(6)
式中:ΦA为选自于Φ的原子所组成的子矩阵。
GOMP算法的具体步骤如下:
输入:M的输入信号y,M×N的字典矩阵Φ,稀疏度K。
输出:信号的矢量估计X。
1) 进行初始化:残差矢量r0=y,索引集合:H=∅;迭代计数:t=0;集合Q=∅。
2)t=t+1。求取相关系数:
Ct=ΦTrt-1
从相关系数Ct中选择最大的S个原子,将这些原子添加到集合Q中。
3) 更新索引集合:H=H∪Q。
4) 稀疏信号估计:
6) 如果迭代次数大于设定值或残差小于某设定值时,算法结束。
由此可以看出,广义正交匹配算法是在每一次迭代时选择残差内积最大的几个最优原子,在收敛速度上比OMP算法更快,重构效果也得到有效提升[15]。而采集到的实际心电信号与字典矩阵中原子之间存在一定的相似性导致算法重构精度下降。且在输入信号含有大量的噪声情况下,容易出现更多的稀疏信号估计错误,从而降低算法的准确性。因此,本文在复杂环境下重构完整信号与提高算法对相似原子的辨识程度这两方面对GOMP加以改进。
针对心电信号的噪声种类与强度,GOMP算法在去噪方面无法广泛适用问题。算法在匹配Gabor字典矩阵中原子与输入信号时字典矩阵会出现原子之间的相关性高以及相似原子的存在,进而导致重构信号对原子的辨识度不高的问题,提出了改进GOMP算法。改进之处如下:
1) 在算法迭代中设置阈值,可以实现该阈值随信噪比的变化而变化。设置为:
(7)
式中:a、b为常数。
2) 在传统GOMP算法中,在匹配原子和待分解信号时都是采用向量内积的方法。其本质是计算向量内积夹角的余弦值,即:
(8)
当两个或两个以上的原子出现相同方向时即向量夹角都为零时,传统的OMP与GOMP算法都无法识别区分。因此引入Jaccard系数替换原有的内积余弦值。Jaccard系数定义如下:
(9)
向量余弦值主要求取两个向量平方和的几何均值,而Jaccard系数则是求算术平方。针对两个或多个向量方向相同的情况下,算术平方在由模值引起的结果上具有更明显的效果。因此利用Jaccard系数能够让算法在匹配原子时具有更好的辨识能力。
改进GOMP算法步骤如下:
输入:M×1的输入信号y,M×N的字典矩阵Φ,稀疏度K。
输出:信号的估计矢量X。
1) 初始化残差r0=y索引集H=∅,迭代次数t=0,集合Q=φ。
2)t=t+1。计算相关系数:Ct=ΦTrt-1,在此引入Jaccard系数来替代向量余弦值计算。即将〈rt-1,φi〉内积中的余弦替换为J(α,β),选取C中最大的S个值,将这些值的索引组成新的集合Q。
3) 更新索引集:H=H∪Q。
4) 稀疏信号矩阵估计:
7) 输出信号的估计矢量X。
改进GOMP算法通过设定阈值来实现算法迭代次数根据待分解信号的信噪比而改变,有效提高了算法的时效性,与通过替换内积向量的余弦值使得算法的重构精度得到有效提升。
为了验证算法在心电信号去噪上的性能,本文通过以下的仿真实验进行对比论述。实验硬件为Intel(R) Core(TM)i5-7300HQ CPU,主频为2.6 GHz,内存为8 GB,Windows 10操作系统,仿真软件平台为MATLAB 2018a。实验数据来源于MIT-BIH心率失常数据库,其数据的采用频率为360 Hz。图1为MIT-BIH数据库中103.dat的原始心电信号波形图,其中包含1 200个采样点,时长约为3分22秒。利用信噪比公式:
(10)
式中:x(n)为原始含有噪声信号;y(n)为去噪后信号。通过重复30次计算取其均值得到原始心电信号信噪比(SNR)为28 dB。将此心电信号作为实验的输入信号,利用改进的GOMP算法来实现对信号的去噪,如图2所示,结果经过30次计算求取均值得到其信噪比为53 dB。
图1 103.dat文件心电数据图
图2 改进GOMP算法去噪后的心电图
在不同信噪比的高斯白噪声中,本文的改进算法对信号的降噪效果优于其他两种算法。且在噪声严重干扰的情况下,本文的算法依然表现出良好的适用性,如图3所示。
(a) 信噪为10 dB的心电信号
(b) OMP算法的去噪效果
(c) GOMP算法的去噪效果
(d) 本文改进算法的去噪效果图3 心电信号效果图
对原始信号分别加入不同程度的噪声形成新的输入信号,此时信号的信噪比分别为10、20、30、40、50 dB。以同样的方式求取信噪比,对每种信号分别采用三种算法对进行去噪,进而得到去噪后的信噪比,如表1所示。
表1 不同信噪比下信号去噪后的信噪比
由表1可知,随着信噪比的增加,三种算法对信号的去噪效果都呈现逐渐增加的趋势,而本文改进算法对不同信噪比情况的去噪效果都表现出很好的稳定性。
为了验证算法在去噪效果上,采用误差测量方法为归一化均方根误差(RMSE)来反映几种算法的估计性能。RMSE的定义为:
(11)
为了验证不同噪声强度下对于算法的重构精度的影响,进行了不同信噪比情况下的仿真实验,如表2所示。选择信噪比分别为10、20、30、40、50 dB。每种信噪比下,三种算法分别运行200次并取其均方根误差进而取其均值。易看出,随着信噪比的增加,三种算法的RMSE数值都呈现稳定下降的趋势。与其他两种算法相比,无论是在稀疏度K为78还是40时,改进的GOMP算法的RMSE数值更小,且在信噪比为10 dB时其数值下降了16%。随着信噪比的增加,均方根误差值的下降比值会略微缩减,当信噪比为50 dB时均方根误差值下降13.3%,验证了算法良好的重构精度。这是由于本文改进算法采用Jaccard系数替换了GOMP算法中原子内积求余弦值的标准,在面对相似原子时具有更好的辨识度。
表2 不同信噪比情况下的重构估计误差
续表2
由于本文改进算法在迭代次数上设置了阈值,因此在面对不同噪声干扰程度的输入信号时,其迭代次数会发生一定的变化,直接影响到算法的时效性。为了验证其对算法的影响,仿真实验:稀疏度设置为78,信噪比分别为10、20、30、40、50 dB。在相同稀疏的情况下,对比三种算法的运算结果如图4所示。
图4 不同信噪比下运算时间对比
可以看出,随着信噪比不断增加,其运算时间逐渐降低。改进算法与GOMP算法相比于OMP算法,运算时间提高了5%。对于信噪比的变化,本文改进算法的运算灵活性更强。与OMP算法相比,GOMP与本文提出的改进算法都具有优良的时间性能。考虑到输入信号长度的不同会影响算法的重构进度问题,实验对比了不同输入信号长度下的均方根,易得出本文算法的重构效果优于其他两种算法。
图5、图6是信噪比为10、30 dB时,不同信号长度下的均方根误差。
图5 信噪比为10 dB时不同信号长度下的均方根误差
图6 信噪比为30 dB时不同信号长度下的均方根误差
由图5可知,信噪比为10 dB时信号被明显干扰,改进算法的均方根误差相对于OMP算法降低了36%,相对于GOMP算法降低了7%。由图6可知,信噪比为30 dB时,改进算法相比于其他两种算法降低了4%。信号的长度不同会产生一定影响,改进算法在噪声变化上设置阈值会使算法更具适用性,在均方根误差上具有更大的优势。
本文针对在心电信号采集传输过程中出现的噪声问题,分析了OMP、GOMP算法在原子选取上的非最优化以及输入信号过长而导致重构进度不理想的问题,提出了一种改进的GOMP算法。通过以自适应阈值的方式为终止条件的改进GOMP方法进行迭代,得到信号的稀疏表示结果,进而实现信号的完整重构。与OMP、GOMP相比,改进GOMP算法可以实现根据噪声情况自适应判断迭代次数,并在原子选取方面进行了优化提高了算法重构精度。由仿真实验可以得出,本文的算法在提高重构进度和效率方面取得一定优化,使得算法能够更好地适应不同噪声环境下的心电采集信号。
在实际采集得到的心电信号中,信号的稀疏性是未知的,且固定的冗余字典中原子相似性发生的概率是未知的,因此下一步将进一步研究算法如何自主获取信号的稀疏度以及字典矩阵设计,以提高算法在不同强度噪声下的适用性与准确性。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!