湯 偉 王 權(quán)* 劉 嫣 王玲利
1(陜西科技大學(xué)電氣與信息工程學(xué)院 陜西 西安 710021)2(陜西科技大學(xué)工業(yè)自動(dòng)化研究所 陜西 西安 710021)
人體心電信號(hào)屬于生物微弱電信號(hào),在便攜式心電設(shè)備采集心電信號(hào)的過程中,極易受到各種復(fù)雜環(huán)境的干擾。在設(shè)備采集時(shí)面臨的首要問題便是降低其信號(hào)中含有的噪聲[1]。
在實(shí)際心電采集過程中,心電信號(hào)的噪聲主要有肌電干擾、工頻干擾與基線漂移等[2],且信號(hào)的長(zhǎng)度都屬于分鐘級(jí)。在心電信號(hào)去噪方法上有傳統(tǒng)的FIR數(shù)字濾波法、自適應(yīng)濾波法、小波濾波方法和神經(jīng)網(wǎng)絡(luò)濾波方法等[3-5]。傳統(tǒng)的FIR數(shù)字濾波面對(duì)復(fù)雜的噪聲環(huán)境無法有效地去除干擾[6]。小波變換雖然在局部特性上表現(xiàn)出良好的特性,但面對(duì)心電信號(hào)不斷方向變換沒有很好的辨識(shí)能力。神經(jīng)網(wǎng)絡(luò)濾波方法計(jì)算復(fù)雜,需要大量實(shí)驗(yàn)數(shù)據(jù),且實(shí)時(shí)性差。目前稀疏分解用于心電信號(hào)去噪方面的方法有基追蹤算法(Basis Pursuit,BP)、匹配追蹤(Matching Pursuit,MP)、正交匹配追蹤(Orthogonal Matching Pursuit,OMP)、基追蹤算法以及廣義正交匹配追蹤算法GOMP等[7]?;粉櫵惴ㄖ饕m用線性規(guī)劃的凸優(yōu)化問題,算法迭代次數(shù)少,但計(jì)算的復(fù)雜度高,不能滿足心電信號(hào)采集時(shí)的實(shí)時(shí)性要求。相對(duì)于BP算法,OMP算法是一種次優(yōu)的算法,在一定程度上降低了計(jì)算復(fù)雜度。但OMP算法在每次迭代的過程中只能選擇一個(gè)原子,因此需要的迭代次數(shù)依然十分龐大[8]。GOMP解決了每次迭代只能選擇一個(gè)原子的問題,能夠?qū)崿F(xiàn)在一次迭代中選擇多個(gè)原子,有效降低了算法迭代次數(shù)[9]。
對(duì)信號(hào)進(jìn)行稀疏分解前,需要冗余的字典矩陣作為前提。因此在匹配輸入信號(hào)與字典原子時(shí),GOMP算法對(duì)字典中相似原子辨識(shí)度不高,易出現(xiàn)錯(cuò)選的原子,導(dǎo)致重構(gòu)精度不理想的情況,且面對(duì)心電信號(hào)噪聲的強(qiáng)度與種類不同,算法的重構(gòu)精度也會(huì)受到影響。針對(duì)上述出現(xiàn)的問題,提出了改進(jìn)的GOMP算法,在復(fù)雜噪聲環(huán)境的情況下,通過增加特定閾值的方式實(shí)現(xiàn)迭代次數(shù)依據(jù)信噪比自適應(yīng)匹配,并且在選擇原子時(shí)將把Jaccard系數(shù)引入導(dǎo)原子匹配過程中加以完善,有效地提高了算法重構(gòu)精度。
由于信號(hào)具有良好的稀疏性,稀疏分解在信號(hào)領(lǐng)域得到廣泛的應(yīng)用。它的本質(zhì)分為兩個(gè)步驟:稀疏與重構(gòu)。稀疏表示的目的是用超完備字典中最符合待分解信號(hào)特點(diǎn)的匹配原子稀疏表示待分解信號(hào)。通常情況下分解方法優(yōu)劣取決于選擇字典的種類。在過完備冗余字典中字典的元素遠(yuǎn)遠(yuǎn)超過完備字典,因此通過設(shè)計(jì)合適的算法使得字典中原子逼近輸入的心電信號(hào),更能反映出心電信號(hào)的結(jié)構(gòu)特點(diǎn)。假設(shè)y是長(zhǎng)度為N的輸入信號(hào),對(duì)于任意的輸入信號(hào)y都可以稀疏表示為:
(1)
式中:x為N×1的列向量,即稀疏分解向量(解向量);Φ為字典矩陣(過完備字典)。系數(shù)分解的求解過程就是尋找非零元最小的系數(shù)向量x,若x中的非零元素個(gè)數(shù)K遠(yuǎn)遠(yuǎn)小于N(K?N),說明x是可以稀疏分解。其目的是通過最少的原子來達(dá)到最優(yōu)的逼近效果,即信號(hào)可以被描述為:
(2)
在稀疏分解前,字典矩陣Φ采用Gobar函數(shù)[10]來生成,其函數(shù)表達(dá)式為:
(3)
式中:g(t)為高斯窗函數(shù);γ是由s、u、v、w四種參數(shù)決定的時(shí)頻參數(shù);s為尺度因子,決定了函數(shù)能量分布率;v為頻率調(diào)制因子,決定了函數(shù)主頻;u為平移因子,決定了函數(shù)波形的位置;w為相位因子,決定了函數(shù)的相位。通過此函數(shù)便可以生成Gabor字典。
因此,關(guān)注的主要問題是怎樣通過字典Φ來重構(gòu)輸入信號(hào)y。本文主要通過在固定的冗余字典基礎(chǔ)上,進(jìn)而通過利用改進(jìn)GOMP算法來對(duì)原始信號(hào)進(jìn)行稀疏分解與重構(gòu)。
(4)
(5)
雖然OMP算法能夠?qū)π盘?hào)做到較高精度的重構(gòu),但隨著輸入信號(hào)以及字典矩陣的不斷復(fù)雜,算法在迭代方面每次只能選擇一個(gè)原子,導(dǎo)致其運(yùn)算時(shí)效性變差且重構(gòu)精度降低,使得信號(hào)出現(xiàn)失真現(xiàn)象。因此,在求解非線性簡(jiǎn)單信號(hào)并且在稀疏度K較小的情況下,OMP是一種高效的算法[12-13]。在實(shí)際的心電信號(hào)去噪過程中,由于數(shù)據(jù)的龐大,導(dǎo)致OMP算法在其應(yīng)用上極大地制約了它的發(fā)展。
GOMP算法在每次迭代時(shí)選擇與殘差乘積最大的少數(shù)幾個(gè)原子。相對(duì)于OMP算法,GOMP算法減少了其迭代次數(shù)并提高重構(gòu)精度[14]。GOMP算法首先計(jì)算字典矩陣中原子與輸入信號(hào)的內(nèi)積,即:
C={ci|ci=yTφi,i=1,2,…,N}
迭代過程中,OMP算法在其選擇最優(yōu)原子時(shí)以C中最大系數(shù)為標(biāo)準(zhǔn)。而GOMP算法會(huì)在C中選擇S個(gè)最優(yōu)原子(ci1,ci2,…,cin)。再利用最小二乘方法獲得輸入信號(hào)y的近似值,并更新殘差:
(6)
式中:ΦA(chǔ)為選自于Φ的原子所組成的子矩陣。
GOMP算法的具體步驟如下:
輸入:M的輸入信號(hào)y,M×N的字典矩陣Φ,稀疏度K。
輸出:信號(hào)的矢量估計(jì)X。
1) 進(jìn)行初始化:殘差矢量r0=y,索引集合:H=?;迭代計(jì)數(shù):t=0;集合Q=?。
2)t=t+1。求取相關(guān)系數(shù):
Ct=ΦTrt-1
從相關(guān)系數(shù)Ct中選擇最大的S個(gè)原子,將這些原子添加到集合Q中。
3) 更新索引集合:H=H∪Q。
4) 稀疏信號(hào)估計(jì):
6) 如果迭代次數(shù)大于設(shè)定值或殘差小于某設(shè)定值時(shí),算法結(jié)束。
由此可以看出,廣義正交匹配算法是在每一次迭代時(shí)選擇殘差內(nèi)積最大的幾個(gè)最優(yōu)原子,在收斂速度上比OMP算法更快,重構(gòu)效果也得到有效提升[15]。而采集到的實(shí)際心電信號(hào)與字典矩陣中原子之間存在一定的相似性導(dǎo)致算法重構(gòu)精度下降。且在輸入信號(hào)含有大量的噪聲情況下,容易出現(xiàn)更多的稀疏信號(hào)估計(jì)錯(cuò)誤,從而降低算法的準(zhǔn)確性。因此,本文在復(fù)雜環(huán)境下重構(gòu)完整信號(hào)與提高算法對(duì)相似原子的辨識(shí)程度這兩方面對(duì)GOMP加以改進(jìn)。
針對(duì)心電信號(hào)的噪聲種類與強(qiáng)度,GOMP算法在去噪方面無法廣泛適用問題。算法在匹配Gabor字典矩陣中原子與輸入信號(hào)時(shí)字典矩陣會(huì)出現(xiàn)原子之間的相關(guān)性高以及相似原子的存在,進(jìn)而導(dǎo)致重構(gòu)信號(hào)對(duì)原子的辨識(shí)度不高的問題,提出了改進(jìn)GOMP算法。改進(jìn)之處如下:
1) 在算法迭代中設(shè)置閾值,可以實(shí)現(xiàn)該閾值隨信噪比的變化而變化。設(shè)置為:
(7)
式中:a、b為常數(shù)。
2) 在傳統(tǒng)GOMP算法中,在匹配原子和待分解信號(hào)時(shí)都是采用向量?jī)?nèi)積的方法。其本質(zhì)是計(jì)算向量?jī)?nèi)積夾角的余弦值,即:
(8)
當(dāng)兩個(gè)或兩個(gè)以上的原子出現(xiàn)相同方向時(shí)即向量夾角都為零時(shí),傳統(tǒng)的OMP與GOMP算法都無法識(shí)別區(qū)分。因此引入Jaccard系數(shù)替換原有的內(nèi)積余弦值。Jaccard系數(shù)定義如下:
(9)
向量余弦值主要求取兩個(gè)向量平方和的幾何均值,而Jaccard系數(shù)則是求算術(shù)平方。針對(duì)兩個(gè)或多個(gè)向量方向相同的情況下,算術(shù)平方在由模值引起的結(jié)果上具有更明顯的效果。因此利用Jaccard系數(shù)能夠讓算法在匹配原子時(shí)具有更好的辨識(shí)能力。
改進(jìn)GOMP算法步驟如下:
輸入:M×1的輸入信號(hào)y,M×N的字典矩陣Φ,稀疏度K。
輸出:信號(hào)的估計(jì)矢量X。
1) 初始化殘差r0=y索引集H=?,迭代次數(shù)t=0,集合Q=φ。
2)t=t+1。計(jì)算相關(guān)系數(shù):Ct=ΦTrt-1,在此引入Jaccard系數(shù)來替代向量余弦值計(jì)算。即將〈rt-1,φi〉內(nèi)積中的余弦替換為J(α,β),選取C中最大的S個(gè)值,將這些值的索引組成新的集合Q。
3) 更新索引集:H=H∪Q。
4) 稀疏信號(hào)矩陣估計(jì):
7) 輸出信號(hào)的估計(jì)矢量X。
改進(jìn)GOMP算法通過設(shè)定閾值來實(shí)現(xiàn)算法迭代次數(shù)根據(jù)待分解信號(hào)的信噪比而改變,有效提高了算法的時(shí)效性,與通過替換內(nèi)積向量的余弦值使得算法的重構(gòu)精度得到有效提升。
為了驗(yàn)證算法在心電信號(hào)去噪上的性能,本文通過以下的仿真實(shí)驗(yàn)進(jìn)行對(duì)比論述。實(shí)驗(yàn)硬件為Intel(R) Core(TM)i5-7300HQ CPU,主頻為2.6 GHz,內(nèi)存為8 GB,Windows 10操作系統(tǒng),仿真軟件平臺(tái)為MATLAB 2018a。實(shí)驗(yàn)數(shù)據(jù)來源于MIT-BIH心率失常數(shù)據(jù)庫(kù),其數(shù)據(jù)的采用頻率為360 Hz。圖1為MIT-BIH數(shù)據(jù)庫(kù)中103.dat的原始心電信號(hào)波形圖,其中包含1 200個(gè)采樣點(diǎn),時(shí)長(zhǎng)約為3分22秒。利用信噪比公式:
(10)
式中:x(n)為原始含有噪聲信號(hào);y(n)為去噪后信號(hào)。通過重復(fù)30次計(jì)算取其均值得到原始心電信號(hào)信噪比(SNR)為28 dB。將此心電信號(hào)作為實(shí)驗(yàn)的輸入信號(hào),利用改進(jìn)的GOMP算法來實(shí)現(xiàn)對(duì)信號(hào)的去噪,如圖2所示,結(jié)果經(jīng)過30次計(jì)算求取均值得到其信噪比為53 dB。
圖1 103.dat文件心電數(shù)據(jù)圖
圖2 改進(jìn)GOMP算法去噪后的心電圖
在不同信噪比的高斯白噪聲中,本文的改進(jìn)算法對(duì)信號(hào)的降噪效果優(yōu)于其他兩種算法。且在噪聲嚴(yán)重干擾的情況下,本文的算法依然表現(xiàn)出良好的適用性,如圖3所示。
(a) 信噪為10 dB的心電信號(hào)
(b) OMP算法的去噪效果
(c) GOMP算法的去噪效果
(d) 本文改進(jìn)算法的去噪效果圖3 心電信號(hào)效果圖
對(duì)原始信號(hào)分別加入不同程度的噪聲形成新的輸入信號(hào),此時(shí)信號(hào)的信噪比分別為10、20、30、40、50 dB。以同樣的方式求取信噪比,對(duì)每種信號(hào)分別采用三種算法對(duì)進(jìn)行去噪,進(jìn)而得到去噪后的信噪比,如表1所示。
表1 不同信噪比下信號(hào)去噪后的信噪比
由表1可知,隨著信噪比的增加,三種算法對(duì)信號(hào)的去噪效果都呈現(xiàn)逐漸增加的趨勢(shì),而本文改進(jìn)算法對(duì)不同信噪比情況的去噪效果都表現(xiàn)出很好的穩(wěn)定性。
為了驗(yàn)證算法在去噪效果上,采用誤差測(cè)量方法為歸一化均方根誤差(RMSE)來反映幾種算法的估計(jì)性能。RMSE的定義為:
(11)
為了驗(yàn)證不同噪聲強(qiáng)度下對(duì)于算法的重構(gòu)精度的影響,進(jìn)行了不同信噪比情況下的仿真實(shí)驗(yàn),如表2所示。選擇信噪比分別為10、20、30、40、50 dB。每種信噪比下,三種算法分別運(yùn)行200次并取其均方根誤差進(jìn)而取其均值。易看出,隨著信噪比的增加,三種算法的RMSE數(shù)值都呈現(xiàn)穩(wěn)定下降的趨勢(shì)。與其他兩種算法相比,無論是在稀疏度K為78還是40時(shí),改進(jìn)的GOMP算法的RMSE數(shù)值更小,且在信噪比為10 dB時(shí)其數(shù)值下降了16%。隨著信噪比的增加,均方根誤差值的下降比值會(huì)略微縮減,當(dāng)信噪比為50 dB時(shí)均方根誤差值下降13.3%,驗(yàn)證了算法良好的重構(gòu)精度。這是由于本文改進(jìn)算法采用Jaccard系數(shù)替換了GOMP算法中原子內(nèi)積求余弦值的標(biāo)準(zhǔn),在面對(duì)相似原子時(shí)具有更好的辨識(shí)度。
表2 不同信噪比情況下的重構(gòu)估計(jì)誤差
續(xù)表2
由于本文改進(jìn)算法在迭代次數(shù)上設(shè)置了閾值,因此在面對(duì)不同噪聲干擾程度的輸入信號(hào)時(shí),其迭代次數(shù)會(huì)發(fā)生一定的變化,直接影響到算法的時(shí)效性。為了驗(yàn)證其對(duì)算法的影響,仿真實(shí)驗(yàn):稀疏度設(shè)置為78,信噪比分別為10、20、30、40、50 dB。在相同稀疏的情況下,對(duì)比三種算法的運(yùn)算結(jié)果如圖4所示。
圖4 不同信噪比下運(yùn)算時(shí)間對(duì)比
可以看出,隨著信噪比不斷增加,其運(yùn)算時(shí)間逐漸降低。改進(jìn)算法與GOMP算法相比于OMP算法,運(yùn)算時(shí)間提高了5%。對(duì)于信噪比的變化,本文改進(jìn)算法的運(yùn)算靈活性更強(qiáng)。與OMP算法相比,GOMP與本文提出的改進(jìn)算法都具有優(yōu)良的時(shí)間性能??紤]到輸入信號(hào)長(zhǎng)度的不同會(huì)影響算法的重構(gòu)進(jìn)度問題,實(shí)驗(yàn)對(duì)比了不同輸入信號(hào)長(zhǎng)度下的均方根,易得出本文算法的重構(gòu)效果優(yōu)于其他兩種算法。
圖5、圖6是信噪比為10、30 dB時(shí),不同信號(hào)長(zhǎng)度下的均方根誤差。
圖5 信噪比為10 dB時(shí)不同信號(hào)長(zhǎng)度下的均方根誤差
圖6 信噪比為30 dB時(shí)不同信號(hào)長(zhǎng)度下的均方根誤差
由圖5可知,信噪比為10 dB時(shí)信號(hào)被明顯干擾,改進(jìn)算法的均方根誤差相對(duì)于OMP算法降低了36%,相對(duì)于GOMP算法降低了7%。由圖6可知,信噪比為30 dB時(shí),改進(jìn)算法相比于其他兩種算法降低了4%。信號(hào)的長(zhǎng)度不同會(huì)產(chǎn)生一定影響,改進(jìn)算法在噪聲變化上設(shè)置閾值會(huì)使算法更具適用性,在均方根誤差上具有更大的優(yōu)勢(shì)。
本文針對(duì)在心電信號(hào)采集傳輸過程中出現(xiàn)的噪聲問題,分析了OMP、GOMP算法在原子選取上的非最優(yōu)化以及輸入信號(hào)過長(zhǎng)而導(dǎo)致重構(gòu)進(jìn)度不理想的問題,提出了一種改進(jìn)的GOMP算法。通過以自適應(yīng)閾值的方式為終止條件的改進(jìn)GOMP方法進(jìn)行迭代,得到信號(hào)的稀疏表示結(jié)果,進(jìn)而實(shí)現(xiàn)信號(hào)的完整重構(gòu)。與OMP、GOMP相比,改進(jìn)GOMP算法可以實(shí)現(xiàn)根據(jù)噪聲情況自適應(yīng)判斷迭代次數(shù),并在原子選取方面進(jìn)行了優(yōu)化提高了算法重構(gòu)精度。由仿真實(shí)驗(yàn)可以得出,本文的算法在提高重構(gòu)進(jìn)度和效率方面取得一定優(yōu)化,使得算法能夠更好地適應(yīng)不同噪聲環(huán)境下的心電采集信號(hào)。
在實(shí)際采集得到的心電信號(hào)中,信號(hào)的稀疏性是未知的,且固定的冗余字典中原子相似性發(fā)生的概率是未知的,因此下一步將進(jìn)一步研究算法如何自主獲取信號(hào)的稀疏度以及字典矩陣設(shè)計(jì),以提高算法在不同強(qiáng)度噪聲下的適用性與準(zhǔn)確性。