黃藝格,楊雨丹,賀知明
(電子科技大學廣東電子信息工程研究院,廣東東莞523808)
胎兒心電信號監測是獲取妊娠和分娩期間胎兒狀況信息的常規方法[1]。胎兒心電的特征如心率、波形和動態行為在確定胎兒的生命、胎兒發育、胎兒成熟度、胎兒窘迫或先天性心臟病的存在等方面都有相當重要的意義。
盲源分離(blind source separation,BSS)是一種不知道原始信號,但是卻能通過獲取混合信號恢復出原始信號的方法[2]。其中,獨立成分分析(independent component analysis,ICA)是盲源分離的一個主要方法,分離出的源信號數目在分離之前是確定已知的,由此可以將信號分解成幾個獨立的分量。另外,小波包變換是一種多尺度的時頻分析工具,具有多分辨率的特點[3]。因此可以將小波包變換與ICA 相結合用來提取胎兒心電信號。
本文首先利用小波包變換實現在峰值最大點進行小波包分解以降低母體腹部混合信號重疊度,接著利用精度高、速度快的快速獨立成分分析(fast independent component analysis,fastICA)對處理之后的母體腹部混合信號進行分解得到純凈的胎兒心電信號。實驗結果表明,該方法較好地處理了常規方法因母體心電信號和胎兒心電信號重疊導致的提取算法精度不高的問題。
生物醫學信號是從人體器官中獲得的電信號,它代表一個物理變量,通常被認為是時間的函數,并且可以從它的振幅、頻率和相位來描述[4]。胎兒心電信號是一種生物醫學信號,它提供了胎兒心率的電子表示,胎兒心率包含了胎兒狀況的重要信息,可以提前預知胎兒的健康狀況以及是否出現呼吸窘迫等情況。但是胎兒心電信號是一個相對微弱的信號(小于20%的母體心電信號),并且經常包含50 Hz 的工頻干擾、基線漂移、肌電干擾等。有時候母體心電信號和胎兒心電信號可能是緊密重疊的。胎兒心電信號與成人心電圖相似,包含了相同的基本波形,包括P波、QRS 復合波、T 波和U 波[5]。
小波包變換和fastICA 是目前信號提取最常用也是性能較好的2 種算法,本文中將2 種算法結合起來,利用基于峰值最大化的小波包分解和基于負熵最大化的fastICA 提取胎兒心電信號。
小波包分解是一種時頻分析方法,具有多分辨率分析、表示局部信號特征等特點。離散小波包變換被定義為

其中,d表示小波包變換系數,j表示分辨率,k表示小波基函數ψ 的位移,f表示源信號,2-j和k2-j表示將分辨率進行冪數級離散化,f(2-j,k2-j)為源信號的離散化表達式。小波包分解是一種把第j級的系數dj,k分解為第j-1 級的2 個小波包變換系數aj-1,k和dj-1,k的方法,以此類推,直到分解到指定的多層小波包級數。
非高斯函數是描述信號偏離高斯分布的一個度量,用于測量在BSS 中混合信號之間的獨立程度。非高斯性越強,信號的獨立程度越高[6]。根據小波包分解的性質,只有少數小波包系數是重要的,因為只有很少的點的幅值比0 大,這些幅值比0 大的點的非高斯性比源信號更強。因此,本文選擇了小波包分解處理混合信號。
在BSS 問題中,峰度是第四階累積量,根據隨機變量的峰值k(x)的大小,信號y可以分為以下3類:(1)如果kurt(y)<0,稱y為亞高斯信號;(2)如果kurt(y)>0,稱y為超高斯信號;(3)如果kurt(y)=0,稱y為高斯信號。
本文利用小波包分解和峰度來確定最好的小波包分解節點,這個節點的系數是低重疊度源信號的近似表示[3]。每個節點的小波包系數的峰度可以通過下式計算得到:

其中,c表示每個節點的小波包系數,E表示求解平均值。
將混合信號用小波包變換分解之后,去除了小波包系數小于零的信號點,得到非高斯性比原混合信號高得多的信號,為之后fastICA 提取減少迭代次數。
FastICA 的工作原理是最大化非高斯性,即源信號的獨立性,母體腹部混合信號來源于母體心電信號、胎兒心電信號和環境的干擾信息[7]。FastICA 利用采用高階統計數據的固定點算法來恢復獨立成分。當觀測信號數量少時,fastICA 對于分離信號非常有效。理論上講,母體心電信號、胎兒心電信號和復雜的噪聲相互之間是獨立的。母體心電信號和胎兒心電信號的信號形態相似并且具有幾乎相同的光譜,唯一的區別是胎兒的心率幾乎是母親的1.5~2 倍[8]。
假設已經觀察到的信號x(t)=[x1(t),x2(t),…,xn(t)]T是由一些未知的、相互獨立的信號s(t)=[s1(t),s2(t),…,sn(t)]T混合而成的,混合公式如下:

其中,A=[a1,a2,…,an],是混合矩陣;n(t)表示噪聲信號。FastICA 算法步驟就是求出一個n×n的分離矩陣W,W=A-1,再求出y(t)=Wx(t),求得的y(t)=[y1(t),y2(t),…,yn(t)]T就是對s(t)的估計,其中某一路數據即為胎兒信號[9]。總的來說,ICA 可以被建模為求解一個最優化問題,它可以對一個輸出為獨立信號的函數進行建模。
本文的FastICA 基于負熵最大化,負熵近似由以下目標函數估計:

其中,W 是分離矩陣;V是標準高斯隨機變量,其均值為0,方差為1;函數G(V)為一個非二次函數,表達式如下:

當負熵達到最大時,就表明信號是可以分離的,所以本文算法求得W 需要滿足負熵最大和估計信號y的均值為0 且方差為1,也就是E{G(WTx)2}=1,這樣混合信號中的幾個獨立分量便可以估計出來。
本文中使用的是單位化的fastICA 算法,首先需要注意的是,上文中提到的JG(W)的最大值是在E{G(WTx)}的某些最優值中得到的[10]。被E{G(WTx)2}=||W||2=1 約束的E{G(WTx)}的最優解是在公式(7)成立時得到的。


其中,I 為單位矩陣。為了簡化這個矩陣的求逆,我們決定近似第一項。由于數據已被白化,即E{xxT}=1,所以E{xxTG'(WTx)}≈E{xxT}E{G'(WTx)}=E{G'(WTx)}I,可以用來得出近似值。這樣導數矩陣就變成了對角矩陣,大大簡化了求逆過程。同時用W 的當前值取代W0來求出β 的近似值。因此,我們得到了以下近似的牛頓迭代公式:

其中,W*表示W 的更新值,β=E{WTxG(WTx)},并且標準化提高了穩定性。這個算法可以通過在第一個等式的兩邊同時乘β-E{G'(WTx)}來進一步簡化。因此得到了fastICA 的迭代公式:

在實踐中,fastICA 的期望值將被它們的估計值所取代。理想情況下,所有可用的數據都應該被使用,但這會導致迭代時間太長。所以一般用一部分樣本的均值進行估計,其數目多少可能對最后估計的準確性有相當大的影響。因此,在每次迭代時應該分別選擇取樣點,如果收斂不盡如人意,可以選擇增加樣本數量。
(1)本文算法與現有的fastICA 算法相比,前期增加了小波包變換,在ICA 之前就減少了不相關信號點的數量,使得fastICA 提取的時候樣本數大大減少,從而具有非常快的收斂速度。
(2)小波包變換和fastICA 結合算法與fastICA算法相比,不需要選擇步長參數。改進算法可以使用任何一個非線性函數G得到非高斯分布的獨立分量,這與fastICA 算法形成了對比[11]。
在BSS 方法中,源信號的混合被假定為固定的和線性的[12],但是胎兒心電信號和其他干擾因素總是不固定和線性可分的,因此ICA 并不能把源信號完全分開。在這種情況下,本文算法是基于fastICA的基礎上提出的,信號處理步驟如下:
(1)輸入采集的原始信號。原始信號為包含母體心電信號和胎兒心電信號以及各種噪聲的母體腹部混合信號,將其定義為原始混合心電信號X。
(2)對輸入的原始混合心電信號X進行中心化處理,使其均值為0,再對信號進行白化處理,得到處理后信號Z。
(3)對信號Z進行小波包分解處理,得到混合心電數據矩陣A,即小波包分解后的混合心電信號(混合母體和胎兒的心電信號)。
(4)采用基于負熵最大化的fastICA 對混合心電信號A 進行母體與胎兒心電信號分離處理,獲取含有噪聲的胎兒心電信號。
(5)對含有噪聲的胎兒心電信號進行小波去噪處理,去除其中的噪聲和基線漂移,輸出清晰的胎兒心電信號。
本文使用的臨床實驗信號來自DaISy(Database for the Identification of Systems)數據庫。圖1 為觀測到的胎兒心電信號與母體心電信號的混合信號,通過觀察可以看到該混合信號中包含母體心電信號、胎兒心電信號以及各種噪聲,為了更方便地觀測各路信號,使用MATLAB 將各通道信號分離出來進行分析。

圖2 為DaISy 數據庫中某位孕婦的8 個導聯的母體體表心電信號,(a)~(e)是母體腹部混合信號,(f)~(h)是母體胸部心電信號。5 個母體腹部混合信號中,第1 通道可以明顯地觀察到胎兒心電,可見腹部信號是母親心電和胎兒心電的混合;第4 通道中噪聲多,幾乎不含胎兒心電;第5 通道中的胎兒心電成分很少,不能用來分離胎兒心電。

圖2 8 通道母體心電信號(源信號)
本文采用第1、3、6 通道的信號進行fastICA 處理,首先將這3 個通道的信號混合,在小波包處理階段,選擇db4 多貝西小波函數對混合信號進行兩層小波包分解,從而減少重疊。經過小波包分解,利用峰度極大化進行最優節點選擇,得到2 條清晰的直線,即源信號的非高斯表示,減少了重疊度。圖3(a)為混合心電信號的聯合分布圖,可以看出圖上母體心電信號、胎兒心電信號重疊在一起;圖3(b)為經過小波包分解處理之后的混合心電信號的聯合分布圖,可以明顯地看出信號的重疊程度減少了。
通過fastICA 解混后,可以觀察到由第1、3、6 通道的觀測信號分離出來了4 路信號,如圖4 所示,由于胎兒心電較母體心電頻率快、幅值低,可以判斷出(a)為母體信號,(b)為包含了少量胎兒心電的母體心電,且(b)中含有的母體信號也僅為(a)信號的1/10 左右,(c)為分離出的較清晰的胎兒心電信號,(d)為噪聲信號。

圖3 母體腹部混合信號小波包分解前后的小波包系數的聯合分布圖

圖4 解混后的信號
為方便觀察,本文特意從圖4 中截取了胎兒的心電圖,如圖5 所示,其中仍然包含了少量母體心電信號、噪聲和基線漂移,對于后期觀察會造成一定影響,并且大大降低了信噪比。
由于解混之后的胎兒心電信號包含太多噪聲,我們利用小波包分解重構得到去噪后的心電信號,如圖6 所示。

圖5 本文算法獲得的胎兒心電

圖6 小波去噪之后的胎兒心電
本文提出了一種利用峰度最大化小波包分解結合fastICA 算法進行胎兒心電分離。在小波包分解之后混合心電信號的重疊度大大減弱,之后對信號進行fastICA 處理,最終獲取對源信號的估計。臨床實驗結果表明該算法擁有更好的性能。在進行fastICA分離信號之后,通過小波去噪、對胎兒心電圖信號基線漂移和噪聲的噪聲抑制來重建信號,得到清晰的胎兒心電信號。實驗結果表明,該算法可以將胎兒心電信號與母體心電信號分離開來。在基于負熵的fastICA 中即使只用到負熵一般形式的近似,其收斂速度也是二次化的,算法更簡單可靠,收斂性更好。但是該算法需要使用3 導聯母親體表信號才能進行信號分離,增加了獲取數據的復雜性,如果應用到臨床醫學中實時性還有待改進。