湯 偉 王 權* 劉 嫣 王玲利
1(陜西科技大學電氣與信息工程學院 陜西 西安 710021)2(陜西科技大學工業(yè)自動化研究所 陜西 西安 710021)
人體心電信號屬于生物微弱電信號,在便攜式心電設備采集心電信號的過程中,極易受到各種復雜環(huán)境的干擾。在設備采集時面臨的首要問題便是降低其信號中含有的噪聲[1]。
在實際心電采集過程中,心電信號的噪聲主要有肌電干擾、工頻干擾與基線漂移等[2],且信號的長度都屬于分鐘級。在心電信號去噪方法上有傳統的FIR數字濾波法、自適應濾波法、小波濾波方法和神經網絡濾波方法等[3-5]。傳統的FIR數字濾波面對復雜的噪聲環(huán)境無法有效地去除干擾[6]。小波變換雖然在局部特性上表現出良好的特性,但面對心電信號不斷方向變換沒有很好的辨識能力。神經網絡濾波方法計算復雜,需要大量實驗數據,且實時性差。目前稀疏分解用于心電信號去噪方面的方法有基追蹤算法(Basis Pursuit,BP)、匹配追蹤(Matching Pursuit,MP)、正交匹配追蹤(Orthogonal Matching Pursuit,OMP)、基追蹤算法以及廣義正交匹配追蹤算法GOMP等[7]?;粉櫵惴ㄖ饕m用線性規(guī)劃的凸優(yōu)化問題,算法迭代次數少,但計算的復雜度高,不能滿足心電信號采集時的實時性要求。相對于BP算法,OMP算法是一種次優(yōu)的算法,在一定程度上降低了計算復雜度。但OMP算法在每次迭代的過程中只能選擇一個原子,因此需要的迭代次數依然十分龐大[8]。GOMP解決了每次迭代只能選擇一個原子的問題,能夠實現在一次迭代中選擇多個原子,有效降低了算法迭代次數[9]。
對信號進行稀疏分解前,需要冗余的字典矩陣作為前提。因此在匹配輸入信號與字典原子時,GOMP算法對字典中相似原子辨識度不高,易出現錯選的原子,導致重構精度不理想的情況,且面對心電信號噪聲的強度與種類不同,算法的重構精度也會受到影響。針對上述出現的問題,提出了改進的GOMP算法,在復雜噪聲環(huán)境的情況下,通過增加特定閾值的方式實現迭代次數依據信噪比自適應匹配,并且在選擇原子時將把Jaccard系數引入導原子匹配過程中加以完善,有效地提高了算法重構精度。
由于信號具有良好的稀疏性,稀疏分解在信號領域得到廣泛的應用。它的本質分為兩個步驟:稀疏與重構。稀疏表示的目的是用超完備字典中最符合待分解信號特點的匹配原子稀疏表示待分解信號。通常情況下分解方法優(yōu)劣取決于選擇字典的種類。在過完備冗余字典中字典的元素遠遠超過完備字典,因此通過設計合適的算法使得字典中原子逼近輸入的心電信號,更能反映出心電信號的結構特點。假設y是長度為N的輸入信號,對于任意的輸入信號y都可以稀疏表示為:
(1)
式中:x為N×1的列向量,即稀疏分解向量(解向量);Φ為字典矩陣(過完備字典)。系數分解的求解過程就是尋找非零元最小的系數向量x,若x中的非零元素個數K遠遠小于N(K?N),說明x是可以稀疏分解。其目的是通過最少的原子來達到最優(yōu)的逼近效果,即信號可以被描述為:
(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算法在其應用上極大地制約了它的發(fā)展。
GOMP算法在每次迭代時選擇與殘差乘積最大的少數幾個原子。相對于OMP算法,GOMP算法減少了其迭代次數并提高重構精度[14]。GOMP算法首先計算字典矩陣中原子與輸入信號的內積,即:
C={ci|ci=yTφi,i=1,2,…,N}
迭代過程中,OMP算法在其選擇最優(yōu)原子時以C中最大系數為標準。而GOMP算法會在C中選擇S個最優(yōu)原子(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) 如果迭代次數大于設定值或殘差小于某設定值時,算法結束。
由此可以看出,廣義正交匹配算法是在每一次迭代時選擇殘差內積最大的幾個最優(yōu)原子,在收斂速度上比OMP算法更快,重構效果也得到有效提升[15]。而采集到的實際心電信號與字典矩陣中原子之間存在一定的相似性導致算法重構精度下降。且在輸入信號含有大量的噪聲情況下,容易出現更多的稀疏信號估計錯誤,從而降低算法的準確性。因此,本文在復雜環(huán)境下重構完整信號與提高算法對相似原子的辨識程度這兩方面對GOMP加以改進。
針對心電信號的噪聲種類與強度,GOMP算法在去噪方面無法廣泛適用問題。算法在匹配Gabor字典矩陣中原子與輸入信號時字典矩陣會出現原子之間的相關性高以及相似原子的存在,進而導致重構信號對原子的辨識度不高的問題,提出了改進GOMP算法。改進之處如下:
1) 在算法迭代中設置閾值,可以實現該閾值隨信噪比的變化而變化。設置為:
(7)
式中:a、b為常數。
2) 在傳統GOMP算法中,在匹配原子和待分解信號時都是采用向量內積的方法。其本質是計算向量內積夾角的余弦值,即:
(8)
當兩個或兩個以上的原子出現相同方向時即向量夾角都為零時,傳統的OMP與GOMP算法都無法識別區(qū)分。因此引入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算法去噪后的心電圖
在不同信噪比的高斯白噪聲中,本文的改進算法對信號的降噪效果優(yōu)于其他兩種算法。且在噪聲嚴重干擾的情況下,本文的算法依然表現出良好的適用性,如圖3所示。
(a) 信噪為10 dB的心電信號
(b) OMP算法的去噪效果
(c) GOMP算法的去噪效果
(d) 本文改進算法的去噪效果圖3 心電信號效果圖
對原始信號分別加入不同程度的噪聲形成新的輸入信號,此時信號的信噪比分別為10、20、30、40、50 dB。以同樣的方式求取信噪比,對每種信號分別采用三種算法對進行去噪,進而得到去噪后的信噪比,如表1所示。
表1 不同信噪比下信號去噪后的信噪比
由表1可知,隨著信噪比的增加,三種算法對信號的去噪效果都呈現逐漸增加的趨勢,而本文改進算法對不同信噪比情況的去噪效果都表現出很好的穩(wěn)定性。
為了驗證算法在去噪效果上,采用誤差測量方法為歸一化均方根誤差(RMSE)來反映幾種算法的估計性能。RMSE的定義為:
(11)
為了驗證不同噪聲強度下對于算法的重構精度的影響,進行了不同信噪比情況下的仿真實驗,如表2所示。選擇信噪比分別為10、20、30、40、50 dB。每種信噪比下,三種算法分別運行200次并取其均方根誤差進而取其均值。易看出,隨著信噪比的增加,三種算法的RMSE數值都呈現穩(wěn)定下降的趨勢。與其他兩種算法相比,無論是在稀疏度K為78還是40時,改進的GOMP算法的RMSE數值更小,且在信噪比為10 dB時其數值下降了16%。隨著信噪比的增加,均方根誤差值的下降比值會略微縮減,當信噪比為50 dB時均方根誤差值下降13.3%,驗證了算法良好的重構精度。這是由于本文改進算法采用Jaccard系數替換了GOMP算法中原子內積求余弦值的標準,在面對相似原子時具有更好的辨識度。
表2 不同信噪比情況下的重構估計誤差
續(xù)表2
由于本文改進算法在迭代次數上設置了閾值,因此在面對不同噪聲干擾程度的輸入信號時,其迭代次數會發(fā)生一定的變化,直接影響到算法的時效性。為了驗證其對算法的影響,仿真實驗:稀疏度設置為78,信噪比分別為10、20、30、40、50 dB。在相同稀疏的情況下,對比三種算法的運算結果如圖4所示。
圖4 不同信噪比下運算時間對比
可以看出,隨著信噪比不斷增加,其運算時間逐漸降低。改進算法與GOMP算法相比于OMP算法,運算時間提高了5%。對于信噪比的變化,本文改進算法的運算靈活性更強。與OMP算法相比,GOMP與本文提出的改進算法都具有優(yōu)良的時間性能??紤]到輸入信號長度的不同會影響算法的重構進度問題,實驗對比了不同輸入信號長度下的均方根,易得出本文算法的重構效果優(yōu)于其他兩種算法。
圖5、圖6是信噪比為10、30 dB時,不同信號長度下的均方根誤差。
圖5 信噪比為10 dB時不同信號長度下的均方根誤差
圖6 信噪比為30 dB時不同信號長度下的均方根誤差
由圖5可知,信噪比為10 dB時信號被明顯干擾,改進算法的均方根誤差相對于OMP算法降低了36%,相對于GOMP算法降低了7%。由圖6可知,信噪比為30 dB時,改進算法相比于其他兩種算法降低了4%。信號的長度不同會產生一定影響,改進算法在噪聲變化上設置閾值會使算法更具適用性,在均方根誤差上具有更大的優(yōu)勢。
本文針對在心電信號采集傳輸過程中出現的噪聲問題,分析了OMP、GOMP算法在原子選取上的非最優(yōu)化以及輸入信號過長而導致重構進度不理想的問題,提出了一種改進的GOMP算法。通過以自適應閾值的方式為終止條件的改進GOMP方法進行迭代,得到信號的稀疏表示結果,進而實現信號的完整重構。與OMP、GOMP相比,改進GOMP算法可以實現根據噪聲情況自適應判斷迭代次數,并在原子選取方面進行了優(yōu)化提高了算法重構精度。由仿真實驗可以得出,本文的算法在提高重構進度和效率方面取得一定優(yōu)化,使得算法能夠更好地適應不同噪聲環(huán)境下的心電采集信號。
在實際采集得到的心電信號中,信號的稀疏性是未知的,且固定的冗余字典中原子相似性發(fā)生的概率是未知的,因此下一步將進一步研究算法如何自主獲取信號的稀疏度以及字典矩陣設計,以提高算法在不同強度噪聲下的適用性與準確性。