周克良,郭春燕
(江西理工大學 電氣工程與自動化學院,贛州 341000)
心臟是維持人體生命的重要器官,負責給身體提供血液。心臟由心房和心室組成,推動血液向身體的各個器官流動,維持人體正常代謝和功能。心臟收縮舒張時產生的聲音即為心音,可分為第一心音(S1)、第二心音(S2)、第三心音(S3)、第四心音(S4),其中S1、S2正常情況下就可以聽到,S3、S4僅在兒童及青少年可微弱聽到[1]。心音信號在采集過程中難免會摻雜噪聲,要想通過心音信號準確判斷患者的身體狀況,就必須要對其進行降噪處理。
目前對心音信號的降噪主要有經驗模態(tài)分解(EMD)[2],小波分析[3,4]等方法。EMD可以有效去除固有模態(tài)函數,通過對模態(tài)臨界點的判斷,將前面的IMF分量去除,保留高頻部分IMF分量,但倘若去除的IMF分量包含有用信息,則會造成心音信號的缺失[5]。文獻[6]采用了EMD和MFCC相結合的方法,但依舊無法避免選取的IMF分量造成心音信號損失。文獻[7]提出總經驗模態(tài)分解(ensemble empirical mode decomposition,EEMD)方法,該方法使不同比例的信號在由二元濾波器組規(guī)定的適當固有模式函數(IMF)中進行校對,并添加了白噪聲的信號,以迫使集成體在篩選過程中耗盡所有可能的解。這種方法具有較好的效果,但由于添加了白噪聲,容易導致噪聲殘留。小波分析方法是采用小波包算法對提取的心音信號進行分解,建立適當的閾值函數進行自適應處理,達到降噪的目的[3,4];但存在閾值選擇的困難,閾值過大,會造成心音信號中一些有用的信號丟失;閾值過小,會使心音中的噪音信號消除不完全。文獻[8]提出基于自適應閾值函數的小波去噪,通過使用歸一化香農能量來提取心音包絡進行降噪;文獻[9]提出一種新閾值函數,通過對閾值參數進行調整,有效的確定了各級心音的細節(jié)系數;文獻[10]通過確定小波的峰值比,提出自適應小波閾值去噪。以上對小波閾值去噪都進行了一定程度的改進,但心音信號產生的失真現(xiàn)象以及去噪不完全仍然存在。
針對以上問題,本文提出一種聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪方法。首先,采用CEEMD算法對心音信號進行分解,再用AFSA算法選取最佳閾值進行小波閾值去噪,該方法可以有效避免IMF選取不當引起的信號損失問題以及閾值選取引起的心音信號失真現(xiàn)象。
EMD可以將不同頻率范圍的心音信號分解成一系列的固有模態(tài)函數(IMF)單信號,每個信號都有不同的頻率,IMF包含從高到低的各種頻率信號[11]。基本的EMD分解原理如下:
1)原始信號為s(t),用插值法對極小值點形成下包絡hmint(t),對極大值形成上包絡hmaxt(t),計算均值線函數I(t);
2)抽離細節(jié)信號M(t)=s(t)-I(t);重復上訴步驟,直到M(t)滿足IMF的兩個條件,得到IMF分量imfi(t);
3)用原始心音信號減去IMF作為新的待處理信號:
其中r(t)為殘余項,s(t)為原始信號,imfi(t)為不同頻率的第一個IMF分量;
4)重復上述步驟,當r(t)單調時,結束分解。
最后得到的原始信號表示為:
其中S(t)為分解后的信號。
EEMD在原始信號中加入了高斯白噪聲,根據白噪聲頻率分布的特征,不同尺度的信號根據特征不同分布到對應的參考尺度上,在一定程度上提高了EMD分解的精度,降低了模態(tài)混合程度[12]。具體步驟如下:
1)在原始信號中加入高斯白噪聲g(t),則信號表示為x(t):
其中x(t)為添加噪聲后的信號,y(t)為原始信號,g(t)為高斯白噪聲信號;
2)對目標信號進行上面的EMD分解,得到rn(t)和imfi(t);
3)重復上述步驟,直到消除加入的高斯白噪聲對IMF的影響;
其中imfi(t)為加入噪聲分解的IMF分量,imfi(t)為IMF分量的均值;
4)EEMD分解得到的信號為:
其中rn(t)為殘余項,X(t)為分解后的原始信號。
EEMD在一定程度上提高了EMD分解的精度,不過完備性依舊不強,處理后的信號存在部分噪聲殘留現(xiàn)象,使得重構后的信號不完善。CEEMD是基于EMD和總體經驗模式分解(General Empirical Model Decomposition,EEMD)提出的一種改進算法,可以有效解決上訴存在的問題[13]。CEEMD是在EEMD的基礎上加入了兩倍的高斯白噪聲,使得分解具有更好的噪聲消除效果,具體步驟如下:
1)在原始噪聲中加入正負的高斯白噪聲G(t);
其中si1(t)和si2(t)是添加正負噪聲后的信號,s(t)是原始信號,G(t)是白噪聲信號;
2)對添加后的正負信號進行EMD分解,得到一系列獨立的IMF;
3)重復上述步驟得到對應的IMF分量,計算所有IMF分量的平均值;
其中IMFi1和IMFi1為加入正負噪聲分解的IMF分量,IMFi為IMF分量的均值;
4)CEEMD分解得到的信號為:
其中Rn(t)為殘余項,S(t)為分解后的原始信號。
含噪信號f(n)的數學模型一般為:
其中f(n)為含噪信號,x(n)為原始信號,g(n)為白噪聲信號;
信號f(n)去噪的目的就是為了消除噪聲信號g(n),從而恢復原始信號x(n)。
小波閾值去噪的原理是:使用小波分解將采集到的信號分解到各個尺度中,再通過選擇適應的閾值和閾值函數對信號進行處理,達到去噪效果[14]。小波閾值去噪基本步驟:
1)確定合適的小波基函數以及分解尺度,進行小波分解,得到個尺度分解系數;
式中,aj(n)為近似系數,dj(n)為細節(jié)系數,h為低通濾波器系數,g為高通濾波器系數,j為分解層數,n為采樣點數目,k=1,2,3,...,n-1。
2)通過選擇合適的閾值和閾值函數對小波分解系數進行閾值處理,得到估計小波系數;閾值和閾值函數的選取是去噪性能好壞的關鍵,閾值函數的選取可以使得不連續(xù)的信號變得連續(xù)。傳統(tǒng)閾值函數包括硬、軟閾值函數,其表達式如式(13)所示:
硬閾值函數表達式為:
軟閾值函數表達式為:
由上述式子可以看出傳統(tǒng)的閾值函數都存在一定的缺陷,硬閾值函數不連續(xù)容易將有用信息濾除,從而導致信號失真;軟閾值函數相對于硬閾值更加平滑,但若分解的小波系數絕對值偏大,則容易使其減小造成高頻點信號偏差較大。
為了彌補傳統(tǒng)軟硬閾值函數的不足,本文提出一種改進的閾值函數:
其一階、二階導數如下:
閾值選取不當將會使信號去噪不完全甚至出現(xiàn)失真現(xiàn)象,小波閾值的選擇有很多,根據文獻[15]進行梯度迭代優(yōu)化:第n+1次迭代的閾值等于前一次迭代的閾值減去均方誤差,即:
式中,s為步長,Δλ(n)為函數梯度值,gj=Ψ(dj(n),λ)-dj(n)。
3)利用估計小波系數進行信號重構,得到重構信號y(n),即為去噪后信號。重構公式為:
根據式(20)得到的即為去噪后的心音信號。
人工魚群算法(Artificial Fish-Swarm Algorithm,AFSA)是李曉磊等人于2002年提出的一類基于動物行為的群體智能優(yōu)化算法[16]。主要是通過模擬魚類的覓食、聚群、追尾、隨機等行為,通過魚群中各個體的局部尋優(yōu),從而達到全局尋優(yōu)的目的。主要行為描述如下:
1)覓食行為
式(22)中,r表示視覺半徑,x表示人工魚當前位置,S表示步長,Y表示食物濃度。當人工魚在視線半徑r內發(fā)現(xiàn)食物濃度更高的位置Xu時,人工魚將向Xu移動一步。若新位置的食物濃度低于當前位置濃度,人工魚將隨機移動步長。
2)聚群行為
式中,σ為擁擠度因子,Xc為中心位置。在視覺范圍r內,找到食物濃度高的魚群,并計算中心位置Xc,若擁擠度因子σ正確,則人工魚向新位置移動一步;否則執(zhí)行覓食行為。
3)追尾行為
在附近的魚群找到食物濃度較高的個體后,若擁擠度因子σ滿足,則人工魚向該位置移動。
閾值的選取是小波閾值去噪的關鍵之一,閾值選擇過小,心音中的噪聲信號消除不完全;閾值過大,容易導致有用信號消除,使得心音信號失真。文獻[15]提出的梯度下降法對閾值進行尋優(yōu),容易出現(xiàn)收斂速度慢以及計算時間長等問題,文獻[17]提出的遺傳算法進行尋優(yōu),容易出現(xiàn)過早收斂,尋優(yōu)效率低等問題。為此,本文提出搜索能力強,搜索速度快具有全局尋優(yōu)能力的人工魚群算法(Artificial Fish-Swarm Algorithm,AFSA)對式(18)(19)進行迭代尋優(yōu),找到最佳的閾值。具體思路如下:
1)相關參數初始化。即設定魚群總數N、每條人工魚初始位置λ(n)以及視野范圍Visual、移動步長S、擁擠度因子σ、最大迭代次數MAXGEN;
2)計算初始個體的適應度值Δλ(n),當Δλ(n)最小時,Δλ(n)達到最優(yōu),取最優(yōu)人工魚的值賦予給公告板;
3)根據式(22)、式(24)、式(25)更新魚群位置λ(n),并且與公告板進行比較,取兩者的最優(yōu)值賦予公告板;
4)當公告板上的最優(yōu)值達到滿意值或者達到最大迭代次數時迭代結束,輸出最優(yōu)閾值λbest,否則轉至步驟2:
5)由式(15)再根據得到的最優(yōu)閾值進行小波閾值去噪。
其中AFSA算法的參數設定如下:魚群總數N=50,最大迭代次數MAXGEN=200,視野范圍Visual=12,移動步長S=0.2,擁擠度因子σ=0.5。人工魚群算法優(yōu)化小波閾值流程圖如圖1所示。
圖1 人工魚群算法優(yōu)化小波閾值去噪流程圖
簡單的運用CEEMD去噪容易造成有效信息的丟失,單獨的小波閾值去噪不能較好的體現(xiàn)原始信號的自適應性且去噪不完全。為此提出CEEMD及AFSA優(yōu)化小波閾值聯(lián)合去噪算法對心音信號進行去噪。聯(lián)合算法既可以結合CEEMD分解去噪的優(yōu)勢,又可以克服小波閾值去噪的不足,能有效去除噪聲,保存心音信號中的有效信號。圖2所示為聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪算法過程,具體實現(xiàn)步驟如下:
圖2 聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪算法流程圖
1)對信號進行CEEMD分解,得到若干個IMF分量;
2)采用AFSA算法對改進小波閾值去噪方法選定一個最優(yōu)閾值;
3)選擇高頻IMF分量采用(2)選定的閾值進行小波閾值去噪;
4)將去噪后的IMF分量與其他IMF分量進行信號重構,得到去噪后的信號。
為了分析聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪算法的有效性,本文用贛南醫(yī)學院第一附屬醫(yī)院以及丁香園采集的數據進行試驗。其采樣頻率為11025Hz,量化值為16bit,采集的心音信號以.wav格式保存,再用matlab2019進行仿真,如圖3所示為采集到的二尖瓣關閉不全信號。
將采集的心音信號進行CEEMD分解后得到12個IMF分量如圖4所示,由圖3可知二尖瓣關閉不全信號頻率主要集中在0~5kHz之間,而IMF1分量頻率主要集中在5kHz以上,且幅值較低,主要是一些干擾的背景噪聲,故將其忽略。對分解的高頻信號IMF2、IMF3和IMF4分量進行小波閾值去噪處理。
圖3 原始心音信號及其頻譜圖
圖4 CEEMD分解的各IMF分量及其頻譜圖
本文選取對心音信號有良好分析性能的db6作為小波基函數對IMF分量進行5層分解如圖5所示,然后采用AFSA對改進的閾值函數進行閾值尋優(yōu)去噪,最后將去噪后的分量與其他IMF分量進行重構,得到去噪后的信號如圖6所示。
圖5 小波5層分解圖
圖6 聯(lián)合算法去噪圖
為了體現(xiàn)聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪算法的優(yōu)越性,將含噪心音信號分別用CEEMD算法、小波閾值算法以及聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪算法進行去噪,得到的去噪對比圖如圖7所示,從圖中可以明顯的看出CEEMD去噪算法造成了信號的大量丟失,小波閾值去噪相對CEEMD去噪效果較好,但去噪不完全,而聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪彌補了前面兩個算法的不足,去噪效果更佳。
圖7 三種去噪方法對比圖
信噪比是評估去噪性能最常用的指標,信噪比(SNR)越高,說明去噪效果越好。從表1中的數據可以看出,聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪相比于CEEMD去噪方法,信噪比提高了25.98%,均方根誤差降低了34.68%;相比于小波閾值去噪方法,信噪比提高了22.65%,均方根誤差降低了31.52%。
表1 三種方法去噪結果對比
綜合以上不同的對比形式可得,聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪方法效果優(yōu)于CEEMD去噪和小波閾值去噪,且較好的展現(xiàn)了心音信號的特征,心音信號去噪效果得到了較大的改善。
由于心音信號具有非平穩(wěn)特性,單獨的CEEMD去噪和小波閾值去噪都難以使信號在不失真的情況下達到較好的去噪效果。本文不僅將兩種算法進行了結合,而且對小波的閾值函數進行了改進,改進的閾值函數克服了傳統(tǒng)的軟、硬閾值函數不連續(xù)和偏差大的問題,并且采用了搜索能力強,搜索速度快具有全局搜索能力的人工魚群算法對閾值進行優(yōu)化,解決了閾值選取不當造成的信號失真問題。與CEEMD去噪和小波閾值去噪進行對比可以看出,聯(lián)合CEEMD及AFSA優(yōu)化小波閾值去噪取得的去噪效果最好,同時減少了信號的失真。