張仙偉,王何慶+,魏建軍,王振愿
(1.西安石油大學 計算機學院,陜西 西安 710065; 2.西安電子科技大學 綜合業(yè)務網(wǎng)理論及關(guān)鍵技術(shù)國家重點實驗室,陜西 西安 710071)
從胎心音中獲取胎心率并長期監(jiān)測成為了產(chǎn)前檢查中的一個重要部分,而胎心率是評判孕婦腹中胎兒狀況的一個重要因素,準確獲取胎心率對獲取胎兒的狀況是至關(guān)重要的[1-3]。傳統(tǒng)胎心音聽診法強烈依靠醫(yī)生經(jīng)驗,存在著聽數(shù)遺漏、聽數(shù)錯誤,并且受到周圍干擾的影響非常大,而且不能連續(xù)、動態(tài)地監(jiān)測胎心率等缺點。廣泛使用的多普勒胎心監(jiān)護儀基于超聲波原理,診斷準確,結(jié)果可靠,但其對胚胎和胎兒的潛在危害也是不容置疑的。為了長時間動態(tài)監(jiān)測胎兒的發(fā)育狀態(tài),并且可隨時隨地監(jiān)測,孕婦迫切需要胎心音監(jiān)測設備,在不影響正常工作、生活的前提下,長時間連續(xù)地監(jiān)測胎心率,對產(chǎn)科醫(yī)生的診斷提供可靠參考,現(xiàn)在更傾向于從胎心音信號中提取胎心率[4-6]。從孕婦腹部通過傳感器獲取的胎心音信號,是一種被動式接收的,安全可靠的信號。胎心率需要通過胎心率提取算法從胎心音信號中計算獲取,通過計算比較直接計算法、時間加窗法以及基于加權(quán)平均的計算方法,對比這3種方法獲取的胎心率,由胎心率的結(jié)果準確獲取胎兒的狀態(tài)[7-9]。
胎心音信號本身比較弱,此外,信號需要通過母體,然后到達腹部的信號采集范圍區(qū)域,由于在多層障礙物的阻礙下信號衰減到極弱的狀態(tài)。與此同時,母體自身和外界對其存在相對比較大的干擾。經(jīng)過降噪和放大后,仍然不可能是完美的圖形,給胎心率提取造成了很大的困難[10,11]。
目前應用較多的胎心率提取算法是直接計算法和時間加窗法。直接計算法是計算兩個連續(xù)波峰的時差,時差為ts,則胎心率FHR為
(1)
直接計算法的不足之處在于計算誤差比較大,優(yōu)勢在于計算簡單。時間加窗法是先取一個時間長度固定的時間窗tw,進而計算時間窗內(nèi)波峰的個數(shù)N,則對應的胎心率FHR為
(2)
一般情況下tw的設定值為6 s,每個時間窗口至少包含12個波峰。時間加窗法的優(yōu)勢在于引入了一個時間窗,使噪聲平滑,從而減少了噪聲的影響,更適合于心率實時計算的情況。在同樣的情況下,tw的值越大,具有的優(yōu)勢就越明顯,時間加窗法的不足之處是時間窗過長就會導致時延長,效率繼而降低。
針對胎心率提取的問題,不少學者進行了研究,提出了比較有效的算法。Romano所運用的方法運算速度較快[12,13],然而,出現(xiàn)在分數(shù)分母上的是兩個波峰的距離,進而,微小的噪聲改變就會使胎心率的值發(fā)生較大的變化,因此,這種方法不適合實時的情況,而且對噪聲很敏感。Zahorian提出的算法削弱了噪聲的干擾[14],但帶來的影響是存在較大的時延。
使用直接計算法計算胎心率的結(jié)果是計算的值不斷的跳變,因此,直接計算法不適合實時系統(tǒng)中的應用。而使用時間加窗法就會讓計算的結(jié)果,胎心率的值最小的變化大于1,當某個時間窗中波峰的峰值偏小而又被漏掉,此時計算的結(jié)果值就會被縮小,并且會誤使噪聲干擾得到的峰值當成胎心音的波峰進而結(jié)果值就會變大,就會使系統(tǒng)得到的結(jié)果不穩(wěn)定。根據(jù)胎心率的時間相關(guān)性,提出基于加權(quán)平均的胎心率提取,窗內(nèi)自動加權(quán)平均且窗外指數(shù)加權(quán)平均修正,使得實時系統(tǒng)輸出結(jié)果更穩(wěn)定,自動加權(quán)平均算法見表1。
表1 自動加權(quán)平均提取胎心率
算法中的步驟(1),降低采樣率的目的是為減小數(shù)據(jù)量,進而降低了算法耗時。算法中的步驟(3)計算結(jié)果是相鄰波峰的間隔。但是,在錯檢或是漏檢波峰的情況下,波峰間隔都具有相同權(quán)值,由此使得這種方法存在著問題?;诖耍肓俗詣蛹訖?quán)平均的方法,找到最集中的波峰間隔并且求平均,具體方法為表1中算法步驟(3)~步驟(7)。將峰間距從小到大排序,運算相鄰峰間距的時間差。一般情況下,矩陣Q中的全部的元素近似相等,在漏檢波峰情況下,一個較大的波峰間隔會出現(xiàn)在Q的靠右位置,在波峰錯檢的情況下,較小的波峰間隔會出現(xiàn)在Q的靠左位置,由此可得,中間點為正常數(shù)據(jù),兩側(cè)可能是噪點[15]。在矩陣F中,值越小,即Q中相鄰波峰之間的間隔越近,這意味著在計算胎心率的時候,這兩個值應具有更大的權(quán)值。當矩陣F中的元素大于閾值ε時,意味著在Q中的兩個對應峰中最少存在一個噪點,即其中的一個為邊緣點,其中的另一個為噪點。在此條件下,應減少甚至從計算中排除相應的權(quán)重值。在峰間隔矩陣G中,邊緣數(shù)據(jù)點將會出現(xiàn)一次,中心峰間隔點將會出現(xiàn)兩次,權(quán)重值是原來的二倍,并且權(quán)重將保持不變。權(quán)值為零,是由于噪點沒有在矩陣中出現(xiàn)。由此消除了噪點的干擾,使計算的胎心率更加準確。下面示例給出自動加權(quán)平均算法提取胎心率的具體說明,設定閾值是0.1,如圖1所示。
圖1 自動加權(quán)平均胎心率提取算法
從圖1可以看出,在此實例中,同時存在漏檢和錯誤檢測的情況,圖中的第一個波峰的值是胎心音前一個周期的第二波峰,這是錯誤檢測的情況。因為振幅偏低的緣故,并沒有檢測到第4個波峰,屬于漏檢波峰。將峰值間隔排序以后,漏檢的情況出現(xiàn)在最右端,錯檢出現(xiàn)在最左端。當從峰間隔差對應的矩陣F來計算峰間隔矩陣G,首先找的值為0.0030,將其所對應的值為0.7030和0.7000存入矩陣G中,同時操作波峰間隔差F中的值0.0040,將其所對應的0.6960和0.7000存入矩陣G中。對于波峰間隔差F中的0.6580以及0.2740對應的值都比閾值大,同時也不參加胎心率的運算。因此,從波峰間隔矩陣G中可以推出,當計算峰的平均間隔時,中心數(shù)據(jù)的權(quán)重0.7000加倍,除去兩個噪點,而且邊緣數(shù)據(jù)的權(quán)重值不改變,基于這種算法的思想即為自動加權(quán)平均算法的思想。
以上的算法是胎心率在時間窗內(nèi)的提取方法。以上算法的時間窗口是以每秒8000個數(shù)據(jù)的速度進行移動,這就相當于每一秒可以得到一個胎心率。當時間窗口內(nèi)出現(xiàn)更多噪點的時候,對于自動加權(quán)算法來說,消除噪點干擾的能力就會很大減弱,尤其在極端的情況下,噪點就會完全掩蓋掉正常的數(shù)據(jù),使得結(jié)果出現(xiàn)極大的變化。由此,必須限制每個時間點的胎心率數(shù)據(jù)不會比前一時刻的胎心率數(shù)據(jù)出現(xiàn)很大的變化,由此,在時間窗口之間使用指數(shù)加權(quán)平均算法進行修正
v0=0,
v1=β·v0+(1-β)·θ1,
v2=β·v1+(1-β)·θ2,
?
vt=β·vt-1+(1-β)·θt.
(3)
式中:θt表示t時刻的數(shù)據(jù),vt表示t時刻指數(shù)加權(quán)平均算法優(yōu)化后的值。β為長度因子,其值大于0而小于1。vt大約是1/(1-β) 個數(shù)據(jù)的平均,例如β=0.9代表著vt是10次數(shù)據(jù)的平均數(shù)值。因為設定的初始值v0=0,對于前面計算的結(jié)果值是有影響的,因此,為修正這種影響,進行偏差的修正。也就是
(4)
當t很小時,分子發(fā)揮作用,隨著t的增大,1-βt≈1,分子的影響可以忽略。在特定情況下是不需要進行偏差修正的,原因在于是在1/(1-β) 個數(shù)據(jù)的后面。在需要觀測胎心率實時變化的時候,需要一種偏差校正方法。在時間窗口內(nèi)進行運算并且在時間窗口外對數(shù)據(jù)進行指數(shù)加權(quán)平均算法修正,由此,胎心率的數(shù)據(jù)將會更穩(wěn)定。
為獲得胎心率提取算法的真實效果,下面進行兩部分的真實測試。測試的開始需要在一個時間窗口內(nèi)完成,需要3種胎心率的提取算法進行比較,然后在此基礎上,在多個窗口中測試指數(shù)加權(quán)平均算法的實際效果。3種算法的比較結(jié)果如圖2所示。
圖2 3種胎心率提取算法結(jié)果對比
在圖2中可以看出,所提出自動加權(quán)平均算法相比較另外兩種算法,在性能上有所提升,但是,就其自身算法結(jié)果而言,在噪點大量存在時,結(jié)果還是會發(fā)生較大的變化。比如在第16次到第18次范圍內(nèi)可知,胎心率的數(shù)值出現(xiàn)了跳躍式的改變,這種變化是不允許在實際使用系統(tǒng)中出現(xiàn)的。由此,需要考慮時間窗與時間窗之間的情況,正常情況下,胎心率是一個平滑的、穩(wěn)定的、連續(xù)變化的數(shù)據(jù)值,而且在較短時間的條件下胎心率的值是沒有跳躍式的變化,發(fā)生這種情況的原因是受到了噪音的干擾。利用胎心率的這一特征,使用指數(shù)加權(quán)平均算法對胎心率數(shù)值進一步處理。給定值β=0.9,對于使用偏差修正的指數(shù)加權(quán)平均算法,計算的胎心率數(shù)值如圖3所示。
圖3 胎心率提取算法比較
從圖3可知,指數(shù)加權(quán)平均算法基于胎心率窗內(nèi)加權(quán)平均提取算法,然后通過指數(shù)加權(quán)對結(jié)果進行校正。在第2個至第14個數(shù)據(jù)范圍內(nèi),發(fā)生的輕微抖動被消除,在第14個至第20個數(shù)據(jù)范圍內(nèi),自動加權(quán)平均算法條件下是階躍式的變化,而指數(shù)加權(quán)平均算法條件下是削弱了階躍式的變化,使得曲線是平滑上升的趨勢,與實際的情況一致。
胎心音信號極其微弱且伴有噪聲和干擾,針對直接計算法和時間加窗法中噪聲和耗時兩方面的問題,提出了對胎心率自動加權(quán)平均提取的算法,自動加權(quán)平均提取的算法可以消除時間窗內(nèi)的錯檢和漏檢。與此同時,胎心率具有時間相關(guān)性,由此引入了帶有偏差修正的指數(shù)加權(quán)平均算法,帶有偏差修正的指數(shù)加權(quán)平均算法對時間窗內(nèi)的操作所獲得的胎心率加以限制,使得最終系統(tǒng)滿足實時穩(wěn)定輸出的要求。在實際系統(tǒng)測試中,本文方法比前兩種算法的輸出更穩(wěn)定,與實際結(jié)果一致。