劉 倩,徐 彥,梁春燕,袁玉英
(1. 山東理工大學計算機科學與技術學院,山東 淄博 255049;2. 山東省淄博市中醫醫院心內科,山東 淄博255300)
心音是血液在心血管內運動的狀態反映,其包含著心臟的生理和病理信息,因此,正確識別心音信號對于心血管系統疾病的診斷具有重要的作用。心音信號是在強噪聲背景下采集的生物電信號,噪聲對心音信號的正確診斷和識別帶來干擾,因而去噪效果將直接影響后續心血管疾病的診療。
近年來,小波閾值去噪算法[1-2]和經驗模態分解(Empirical Mode Decomposition,EMD)去噪算法[3]已廣泛地應用于心音信號的噪聲處理。由于小波變換對于信號在時域和頻域上都有良好的局部分析特性,選取適當的閾值,能夠較好的實現心音信號的去噪處理。但傳統閾值的非自適應選取導致在剔除噪聲的同時易損失心音信息。經驗模態分解算法將心音信號分解成一組由高頻到低頻排列的模態函數,舍棄前幾階高頻噪聲的模態分量,并重構剩余的模態分量,最終得到去噪后的心音信號。但簡單的舍棄分量、重構分量會導致心音信息的丟失,影響去噪效果。文獻[4]提出結合小波變換和EMD的算法優點,利用小波變換濾除掉高頻分量中的噪聲并保留其中信號成分,從而提高了去噪效果。但EMD在分解過程中存在模態混疊問題,Wu和Huang[5]在EMD的基礎上提出集合經驗模態分解(Ensemble Empirical Mode Decomposition,EEMD)算法,EEMD算法[6-8]在信號中混入白噪聲,使各階本征模態函數均值化,以此解決模態混疊問題。而對于信號和噪聲分量如何來界定,EMD和EEMD都缺少相關標準,導致最終去噪效果不佳。
結合上述分析,本文提出基于CEEMDAN和小波熵的心音信號去噪方法。算法首先對心音信號CEEMDAN分解;根據噪聲能量和信號能量在各階分量中的區別,利用能量分析界定需去噪的IMF分量范圍;采用小波變換將需去噪的IMF分量分解,通過小波熵值自適應地確定每一尺度上的閾值,并完成噪聲IMF分量的去噪;最后重構去噪后的IMF分量與信號IMF分量,獲得去噪后的心音信號。
CEEMDAN 方法是基于 EMD 和EEMD的一種算法,該算法在EEMD基礎上,通過對信號添加自適應白噪聲來克服模態混疊問題。算法的基本步驟如下:
1)在含噪的心音信號x(n)中添加N個不同的高斯白噪聲wi(n),構造新的信號
xi(n)=x(n)+σiwi(n)
(1)
式中σi為噪聲的標準差,wi(n)是服從正態分布的白噪聲。
2)利用EMD對xi(n)進行分解,得到第一個IMF分量,計算它們的平均值

(2)
計算第一個剩余分量

(3)
3)第二個IMF分量如下式(4)計算:

(4)
其中,Mj(·)是信號進行EMD分解操作后的第j個IMF分量。
4)計算第L個剩余分量

(5)
計算第L+1個模態分量

(6)
5)重復執行步驟4),直到剩余分量不再分解為止,即不滿足EMD的分解條件,分解結束。
6)原始信號x(n)最終被分解為:

(7)
其中,R(n)為最終的剩余分量。
小波閾值的選取[9-11]往往決定小波變換的去噪效果,根據小波變換理論可知,信號經小波變換后,信號信息和噪聲信息在不同尺度上的分布有較大的區別,而熵衡量信息量的大小,因而通過小波熵值[12-15]自適應地確定每個尺度上的閾值,實現有效濾除噪聲的目的。
具體方法:將心音信號經過小波變換后,對尺度j上的高頻系數|wj,k|等分為多個子區間,取子區間中熵值最大區間的小波系數絕對值的中值,作為尺度j的噪聲估計方差,即

(8)
經前人研究[16-17]及筆者多次仿真,本文采用如式(15)所示閾值[18]計算公式

(9)

基于CEEMDAN算法的心音信號分解,能有效改善模態混疊問題,充分利用噪聲和心音信號的能量區別,實現IMFs分量的信噪分離,通過自適應小波熵閾值完成信號去噪,提高了心音信號的信噪比。
CEEMDAN算法將心音信號分解成從高頻到低頻的不同模態分量。仿真發現,在低階分量處,噪聲能量很大,隨著分解層次增加,噪聲能量越來越小,信號能量越來越大。基于信號和噪聲的能量在各階模態分量中表現不同,能量急速上升表明噪聲能量減弱而信號能量開始增強;同理,在高階處能量急速下降表明信號能量從最強開始減弱,因此,在高階能量急速下降前一階標記為信噪分界點。
圖1是正常心音信號,其信噪比為8dB。圖2是帶噪心音信號CEEMDAN的分解圖。圖3是分解后各階IMF分量的能量圖。從圖3中分析IMF1的噪聲能量最強,IMF2~IMF5噪聲能量減小,從IMF5開始,信號能量開始增強,IMF7的信號能量最強,之后能量逐漸降低,所以確定高階能量急劇下降前一階,即k=6階為信號和噪聲的分界點。

圖1 心音信號

圖2 CEEMDAN分解圖

圖3 各階分量能量圖
為驗證該方法的合理有效性,對8dB的心音信號從IMF2開始疊加IMF分量,分別計算其信噪比SNR和均方根誤差RMSE,結果如表1所示。

表1 各階IMF的SNR和RMSE
其中,SNR的數學表達式如下

(10)
RMSE的數學表達式如下:

(11)

從表1中可以看出,從IMF2~IMF4合并分量,信噪比逐漸提高,說明噪聲成分逐漸減少,心音成分逐漸加強;從IMF5、IMF6開始合并分量,其SNR和RMSE的結果比較接近,達到17dB左右,說明從第五階開始,信號成分開始增強;而從IMF7合并的信噪比突然降低,說明從第七階開始合并會丟失部分心音成分,故保留IMF1~IMF6的信號作為待去噪的心音信號分量,進行后續的去噪分析,IMF7之后的分量作為純凈的信號加以保留,與前面分析保持一致。
綜上所述,算法步驟設計如下:
Step1:對心音信號進行CEEMDAN分解,獲得一系列IMF分量;
Step2:基于IMFs分量的能量分析判定信號和噪聲的分界點K;
Step3:將Step2界定的高頻分量作為待去噪IMFs;
Step4:選擇合適的小波基對需去噪的IMFs分量小波分解,根據式(8)計算尺度j的噪聲方差;
Step5:根據式(9)計算尺度j上的自適應閾值,對Step3界定的IMF分量進行小波熵閾值去噪;
Step6:重構經Step5處理后的IMF分量與剩余的IMFs分量,獲得去噪后的心音信號。
具體流程如圖4所示。

圖4 算法流程圖
本文在MATLAB 2016a仿真環境下,分別采用本文算法與CEEMDAN、EEMD、EMD、小波軟閾值4種傳統去噪算法分析比較不同信噪比條件下的心音信號的去噪效果。
對8dB條件下的正常心音信號分別采用上述5種算法進行去噪處理。算法1采用基于CEEMDAN和小波熵結合的去噪方法;算法2采用CEEMDAN和小波閾值結合的方法;算法3采用EEMD和小波閾值結合的方法;算法4采用EMD和小波閾值結合的方法;算法5采用小波軟閾值去噪方法。根據多次仿真結果,本文小波基采用‘db10’,小波分解層次5層,小波熵自適應閾值中參數α取1.25,最終仿真結果如圖5所示。

圖5 不同算法的去噪效果圖(8dB)
從圖5中可以看出,5種算法都能很好地保留心音信號的特征,但相較于其它算法,本文算法在S1S2間隙去噪效果更為突出,噪聲濾除更加干凈。在同一信噪比下,對正常心音信號重復運行多次實驗后,分別求取其輸出信噪比及均方根誤差的平均值。其仿真結果如表2所示,本文相較于直接去掉前幾階分量的方法,信噪比提高了4dB左右,比直接小波閾值去噪,信噪比提高了3dB左右,對于其它經驗模態分解方法,信噪比有了不同程度的提高,同時RMSE明顯減小。

表2 不同算法的SNR和RMSE
S4信號特別微弱,信號特征相較于S1和S2不明顯,但對于心血管疾病的臨床判斷具有重要的作用。同樣,采用上述5種算法對3dB噪聲條件下含S4的心音信號進行去噪分析。圖6是去噪效果圖。

圖6 不同算法的去噪效果圖(3dB)
從圖6中可以看出,經EEMD、EMD和小波軟閾值這3種算法去噪之后,S1的波形特征有些失真,說明部分心音信息丟失。由于S4在9000-10000采樣點處幅值很小,加入噪聲之后,S4已基本被噪聲淹沒,因此,去噪算法的關鍵在于濾除掉間隙期(S4S1、S1S2和S2S4間)的噪聲且能保留S4的特征。對于本文算法在間隙期噪聲基本濾除掉,而其它算法間隙期的噪聲去除的不夠干凈,導致9000-10000處的S4信號特征不明顯,為后續心音信號的識別及心血管疾病的判斷造成影響。

圖7 信噪比曲線(正常心音信號)
為驗證不同去噪算法的效果,本文采用正常心音信號和含S4的心音信號作為實驗對象,在不同噪聲環境下多次運算求取信噪比和均方根誤差的平均值,輸出結果如圖7-圖10所示,在相同的噪聲環境下,小波軟閾值的去噪效果最差,EEMD和EMD算法去噪效果在低信噪比下比較接近,隨著信噪比的增加,EEMD去噪效果更為明顯,相較于與小波閾值結合的CEEMDAN算法,與小波熵結合的本文算法信噪比提高更加顯著,更能保留心音信號的特征。

圖8 RMSE曲線(正常心音信號)

圖9 信噪比曲線(含S4心音信號)

圖10 RMSE曲線(含S4心音信號)
1)本文通過CEEMDAN算法對心音信號分解為多個模態分量,針對噪聲能量和信號能量在模態分量中的區別,判定信噪分界的拐點;根據小波分解后每一尺度上的信號和噪聲的熵值差別,利用小波熵確定每一尺度上的噪聲方差,通過閾值算法確定閾值,進行去噪處理。
2)實驗部分,分別比較本文算法與其它4種傳統去噪算法在不同心音和不同信噪比條件下的去噪效果。通過分析,本文算法去噪后的信噪比較高,均方根誤差較小,具有良好的噪聲抑制能力,能較好地保留心音信號的特征。
本文算法實現了噪聲的有效濾除,為后續心音的識別和心血管的判斷提供良好的數據基礎,也為今后信號去噪方法提供了一種思路。