對于胎心率分析和胎兒狀況評估而言,胎心率基線估計十分重要。為了使現有胎心率基線更為準確、更符合胎心率曲線,本文提出了一種胎心率基線修正算法。首先,本算法找出并修正現有胎心率基線中的偏差部分,再對整條基線進行多次平滑,最后得到修正后的基線。為了評估基線修正算法的性能表現,本文將一種胎心率基線估計算法和基線修正算法結合在一起,并與兩種現有的基線估計算法進行了比較。結果表明,包含基線修正算法在內的基線評估算法在分析準確性、運算效率方面均有不錯表現,這也證實基線修正算法的有效性。
引用本文: 李曉東, 陸堯勝. 一種胎心率基線修正算法. 生物醫學工程學雜志, 2015, 32(5): 1106-1112. doi: 10.7507/1001-5515.20150196 復制
引言
從20世紀60年代起,電子胎兒監護(electronic fetal monitoring,EFM)開始應用于臨床胎兒監護[1]。目前,EFM已經廣泛用于產科產前及產時監護。胎心宮縮圖(cardiotocography,CTG)作為一種臨床上最常用的EFM手段,通過記錄、分析胎心率和孕婦宮縮來評估胎兒當前狀況[2-3]。對于CTG曲線的分析和解讀來說,最為重要的是如何準確分析所有CTG參數。其中,胎心率基線估計尤為關鍵。其他的一些參數,如胎心率加速、減速等,都是依靠胎心率基線進行判斷的[4]。因此,如果基線評估出錯,往往會導致隨后一系列參數分析錯誤。為了解決這個問題,很多研究者相繼提出了各自的胎心率基線估計算法。Dawes等[5]先從胎心率曲線中選取一個胎心率值作為峰值,去除曲線中與該峰值偏差大于60 ms的胎心率片段后,利用前向和后向低通濾波器對胎心率曲線進行平滑,得到胎心率基線。Mantel等[6]使用一個低通濾波器對胎心率曲線進行多次平滑處理,然后設計一個“修剪”函數來剔除胎心率曲線中的加速、減速和較大的胎心率變異,進而得到胎心率基線。Ayres-de-Campos等[7]設計了一套判斷規則,其利用5%的伴隨異常細變異的胎心率值來篩選出基線值,該方法得到的基線是一條直線。Jimenez等[8]、Krupa等[9]、Nidhal等[10]和Andersson[11]均對胎心率曲線進行統計學分析后,使用低通濾波器或設置篩選規則來確定胎心率基線。這一類基線估計算法原理簡單,計算效率高,但其所得基線的準確性較低,易受胎心率曲線的影響。此外,隨著人工智能技術的發展,這方面的技術也開始應用于胎心率分析中。Gelmetti等[12]使用一個神經網絡濾波器來獲取胎心率基線,相比于低通濾波器,其所得基線更為準確。Lu等[13]使用經驗模態分解和Kohonen神經網絡尋找胎心率曲線中的處于基線部分的點,進而計算胎心率基線。相較于第一類方法,這類方法所得基線的準確性有所提高,但其計算效率偏低。因此,每種算法都有其不足,均未能在世界范圍內得到廣泛使用[14-15]。
對于一些整體趨勢比較平穩的胎心率曲線,很多已提出的基線估計算法都能取得不錯的效果。但是,對于一些不太平穩或特征不明顯的胎心率曲線,現有算法很難估計出其中的基線,而且任何錯誤都會對隨后的參數分析產生負面影響。尤其是對于一些胎心率加速、減速頻繁出現的胎心率曲線,現有算法得出的基線往往會偏離其曲線的真實基線。
為了解決現有算法在不平穩胎心率曲線中表現不足的問題,本文設計了一種胎心率基線修正算法,來提高現有基線的準確性。經過本修正算法,最后得到的胎心率基線會變得更平滑,而且更加符合胎心率曲線、準確性更高。
1 所用的胎心率基線估計算法
本文提出的胎心率基線修正算法旨在改進已有的胎心率基線,不能直接計算基線。因此,為了測試本文算法,需要使用胎心率基線估計算法作為測試對象。本文選取的測試對象是Andersson[11]提出的胎心率基線估計算法,該算法是在Mantel等[6]的基線算法的基礎上進行改進的。在這個基線估計算法中,首先對胎心率曲線進行直方圖分析,求出胎心率曲線中的峰值,然后根據該值對曲線進行多次平滑,最后得到胎心率基線。該算法的特點是:求出的胎心率基線對曲線的跟隨性較好,因此能較好地處理那些穩定的胎心率曲線。但是如果胎心率曲線中存在一些幅度大或持續時間長的加速或減速,該算法得到的結果就不理想,所求基線往往起伏很大。因此,本文選擇該算法作為修正算法的測試對象。
根據之前的實驗[16],我們發現Lu等[13]的基線估計算法在分析準確性方面明顯優于Andersson的算法。因此,為了評估胎心率基線修正算法的性能,本文選取了Lu的基線估計算法作為結果判斷的對照算法。該算法首先使用經驗模態分解方法對胎心率曲線進行降噪,再從重構的胎心率曲線中選出一些極值點構成一個訓練集,利用Kohonen神經網絡從訓練集中選出處于基線部分的胎心率點,最后進行三次樣條插值得到胎心率基線。
2 胎心率基線的修正
2.1 尋找胎心率基線中的基準值
為了確定胎心率基線中的基準值,首先需要對胎心率基線進行直方圖分析,統計基線中每個胎心率值出現的頻數,選取3個出現頻率最高的胎心率值作為備選組。以備選組中的胎心率值作出對應的胎心率基準線,計算每一條基準線與胎心率曲線的交點數。交點數最多的基準線所對應的胎心率值為這條胎心率基線的基準值。交點越多,意味著該胎心率值屬于胎心率曲線中穩定部分的可能性越大。在交點數相同的情況下,選擇頻率較高的胎心率值作為基線的基準值。
2.2 確定胎心率基線中的偏差部分
從胎心率基線中找出與上述基準值相差大于2次心跳/分鐘(beat/min,以下簡稱為bpm)的基線片段,通過極值差、極值點間斜率、交叉率等3個指標進行驗證,判斷其是否為基線中的偏差部分。極值差是指所選的基線部分中胎心率最大值與胎心率最小值之差;極值點間斜率是指上述極值差除以上述兩個極值點間的水平距離;交叉率是指所選的基線部分與對應的曲線部分之間的交點數除以該段基線部分的長度。每一個指標都設有相應的閾值。如果找到的偏差>2 bpm的基線部分滿足這3個指標,則該基線部分就被確認為基線的偏差部分。而原先基線中,除去偏差部分后的其余基線部分均視為非偏差部分。
對于偏差部分,按式(1)重新計算基線值,而非偏差部分的基線則保持不變。
$ \left\{ {\begin{array}{*{20}{c}} {\overline {FHRb\left( i \right)} = 0.1FHRb\left( i \right) + 0.3B,\;\;\;\;\;i \in 偏差部分}\\ {\overline {FHRb\left( i \right)} = FHRb\left( i \right),\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i\; \in 非偏差部分\;\;\;\;} \end{array}} \right. $ |
式中,FHRb(i)和
經過上述處理,得到的基線會存在明顯的“斷裂”,在這些“斷裂”處,使用多點直線平均進行平滑。而對于整條基線,再利用五點三次平滑法進行平滑。這種平滑方法,實際是一種特殊形式的Savitzky-Golay濾波器[17],它能很好去除混入時域信號中的高頻噪聲。五點三次平滑法的表達式見式(2):
$ \left\{ \begin{array}{l} \overline {FHRb\left( 1 \right)} = \frac{1}{{70}}\left[{69FHRb\left( 1 \right) + 4FHRb\left( 3 \right) + 4FHRb\left( 5 \right)} \right]\\ \overline {FHRb2} = \frac{1}{{35}}\left[{2FHRb\left( 1 \right) + 27FHRb\left( 2 \right) + 12FHRb\left( 3 \right) - 8FHRb\left( 4 \right) + 2FHRb\left( 5 \right)} \right]\\ \overline {FHRb\left( i \right)} = \frac{1}{{35}}\left[{ - 3FHRb\left( {i - 2} \right) + 12FHRb\left( {i - 1} \right) + 17FHRb\left( i \right) + 12FHRb\left( {i + 1} \right) - 3FHRb\left( {i + 2} \right)} \right]\\ \overline {FHRb\left( {N - 1} \right)} = \frac{1}{{35}}\left[{2FHRb\left( {N - 4} \right) - 8FHRb\left( {N - 3} \right) + 12FHRb\left( {N - 2} \right) + 27FHRb\left( {N - 1} \right) + 2FHRb\left( N \right)} \right]\\ \overline {FHRbN} = \frac{1}{{70}}\left[{ - FHRb\left( {N - 4} \right) + 4FHRb\left( {N - 3} \right) - 6FHRb\left( {N - 2} \right) + 4FHRb\left( {N - 1} \right) + 69FHRb\left( N \right)} \right] \end{array} \right. $ |
式(2)中,FHRb(i)和
2.3 胎心率基線的擬合與平滑
對于經過平滑后的胎心率基線,仍可能存在一些不太明顯的偏差。為了修正這些偏差,先根據加權最小二乘法[18]求出當前基線的擬合線,再利用該擬合線進行二次平滑。所求的擬合線的表達式為:
$ \overline {FHRb\left( i \right)} = {a_0} + {a_1}i + \cdots + {a_n}{i^n} $ |
式(3)中,
$\left[{\begin{array}{*{20}{c}} {\sum\limits_{i = 1}^N {w\left( i \right)} }&{\sum\limits_{i = 1}^N {iw\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^n}w\left( i \right)} }\\ {\sum\limits_{i = 1}^N {w\left( i \right)} }&{\sum\limits_{i = 1}^N {^2w\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^{n + 1}}w\left( i \right)} }\\ {\sum\limits_{i = 1}^N {{i^n}w\left( i \right)} }&{\sum\limits_{i = 1}^N {{i^{n + 1}}w\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^{2n}}w\left( i \right)} } \end{array}} \right]\left[{\begin{array}{*{20}{c}} {{a_0}}\\ {{a_1}}\\ \begin{array}{l} \cdots \\ {a_n} \end{array} \end{array}} \right] = \left[\begin{array}{l} \sum\limits_{i = 1}^N {w\left( i \right)FHRb\left( i \right)} \\ \sum\limits_{i = 1}^N {iw\left( i \right)FHRb\left( i \right)} \\ \cdots \\ \sum\limits_{i = 1}^N {{i^n}w\left( i \right)FHRb\left( i \right)} \end{array} \right] $ |
式(4)中,w(i)是第i點的權值。每個胎心率點的權值是根據該點是否屬于胎心率曲線的穩定部分而決定的。在胎心率曲線中,如果相鄰5點間的彼此差值均<5 bpm,這5點則被認為屬于曲線的穩定部分。如果該點處于穩定部分,相應的權值比較大。這是因為,目前基線估計算法所得的基線存在問題主要出現在非穩定部分。根據這個定義,加速和減速都會被歸類為非穩定部分。
最后,利用擬合線、基準值和當前基線,按式(5)求出新的基線:
$ \left\{ \begin{array}{l} \left\{ {\overline {FHRb\left( i \right)} = 0.4FHRb\left( i \right) + 0.6F\left( i \right),\;\;\;\;\left| {FHRb\left( i \right) - F\left( i \right)} \right| \le } \right.\;\left| {FHRb\left( i \right) - B} \right|\\ \overline {FHRb\left( i \right)} = 0.4FHRb\left( i \right) + 0.4b + 0.2F\left( i \right),\;\;\;\;\left| {FHRb\left( i \right) - F\left( i \right)} \right| > \left| {FHRb\left( i \right) - B} \right| \end{array} \right. $ |
式(5)中,FHRb (i)和
總體而言,本文提出的胎心率基線修正算法的工作流程如圖 1所示,修正前的胎心率基線為使用Andersson算法求得的基線,可見該基線在穩定部分求出的基線比較準確,但是處于加速區的基線卻出現了明顯上移。而經過基線修正后,加速區基線的上移現象被修正,而非加速區的基線則基本不變。同時,相比與原先的胎心率基線,修正后的基線更為平滑。

(a)Andersson基線估計算法求出的基線和該基線的基準值;(b)現有基線的正確部分和偏差部分;(c)現有基線和修正后的基線
Figure1. Sequence of signal processing to correct the FHR baseline(a) the baseline estimated by the algorithm of Anderson and its base value; (b) the correct part and deviation of the original baseline; (c) the original baseline and the corrected baseline
3 實驗結果
3.1 實驗說明
在研究期間,我們對70名孕婦進行了無刺激胎心監護(non-stress test,NST),并記錄了相應的胎心率信號。胎心監護前,孕婦被告知相關的監護內容。在征得孕婦的同意后,方可進行胎心監護及信號采集。
實驗將使用三種方法對70例胎心率信號進行分析:Andersson的基線估計算法(記為算法一),Lu算法(記為算法二),Andersson算法與基線修正算法的結合算法(記為算法三)。同時邀請了兩位產科經驗豐富的醫護人員(專家一為產科醫生,專家二為助產士)通過評級的方式對分析結果進行評估,將其分為好、較好、一般、較差和差五個等級:“好”表示計算出的基線和專家心中的理想基線基本一致;“較好”表示所得基線中,雖然出現一些小的波動、但這些波動不會對隨后的參數識別造成影響;“一般”表示基線的大致趨勢正確,但是該基線會對參數識別的準確性產生一些不良影響;“較差”表示得到的基線中,大部分都與專家預想的基線不符;“差”表示得到的基線完全錯誤,與專家的判斷存在10 bpm以上的誤差。
此外,為了避免計算機分析結果對專家判斷造成影響,在結果評級前,專家們先對胎心率曲線的基礎胎心率(基線率)進行測算。根據相關定義,基礎胎心率是指10 min內除去胎心率加速、減速和顯著變異的胎心率平均值,基礎胎心率一般為5 bpm的倍數[19]。
3.2 三種算法分析準確性的比較
三種胎心率基線估計算法的分析結果如圖 2所示,算法一求出的基線在加速區會出現明顯漂移,而算法二和算法三求出的基線則相對比較平穩。如圖 2(a)所示,如果原胎心率基線(算法一)漂移的偏離幅度較大,修正后的基線(算法三)并不能完全消除漂移現象。

對于兩位專家對三種計算機分析方法在70例胎心率曲線中表現的評級結果進行了頻數統計,結果如圖 3所示。總體而言,兩位專家的評判結果中,算法二和算法三的表現大致相同,均優于算法一。在70例信號中,專家一認為算法一中結果為“好”的比例為42.86%,算法二為75.71%,算法三同為75.71%;而在專家二的評定結果中,算法一中有47.14%的結果被評為“好”,算法二中該比例為71.43%,算法三為75.71%。通過比較算法一和算法三的專家評定結果,可以看出,修正后的胎心率基線的準確度明顯提高。在總體的分析準確度上,算法二和算法三基本處于同一水平。

上述的分析僅針對產科專家的視覺評估結果,因此,需要進行進一步的量化分析。我們計算了70例胎心率信號中,三種基線估計算法與兩位專家給出的基礎胎心率之間的平均絕對誤差(mean absolute error,MAE)。由于基礎胎心率是一個數值,而計算機分析的基線是一條曲線,因此平均絕對誤差的計算表達式為:
$ MAE = \frac{1}{N}\sum\limits_{i = 1}^N {\left| {FHRb\left( i \right) - FHRB} \right|} \; $ |
式中,FHRb(i)是計算機分析的基線中第i點的值,FHRB是專家測算出的基礎胎心率值,N是胎心率基線的總點數。
對于每一例胎心率信號,分別求出三種算法分析結果與兩位專家給出的基礎胎心率之間的平均絕對誤差,然后計算70例信號的誤差均值,結果如表 1所示,無論是定性分析還是定量分析,兩位專家給出的意見均較為一致。在三種算法中,算法二和算法三與專家意見之間的差異均小于算法一。

為了進一步分析三種算法結果與專家分析結果之間的差異,我們將兩位專家的意見進行了統一處理,即計算每一例胎心率信號中兩位專家結果與三種算法結果之間誤差的均值。因此,可以對計算機算法與專家標準間的誤差進行方差分析。進行方差分析前,需進行方差齊性檢驗,判斷方差是否齊性。結果顯示,在檢驗水準為0.05的前提下,F=0.912,P=0.403,即通過方差齊性檢驗,滿足方差分析的前提。然后,對三種算法的誤差進行了方差分析,結果為F=3.363,P=0.037<0.05。這表示總體上三種算法求得的結果間存在差異,因此還需要進行兩兩比較。使用最小顯著差數法(least significant difference,LSD)對三種胎心率基線算法的誤差進行兩兩比較(檢驗水準為0.05),結果如表 2所示。可見:算法一與算法二、算法一與算法三之間的差異具有統計學意義,而算法二與算法三之間的差異則不顯著。這也表明,相比于算法一,算法二和算法三的分析結果與專家的分析結果更為接近。

總體而言,算法二和算法三的分析結果準確性相近,均優于算法一。從算法一和算法三的表現可推斷:基線修正算法可明顯提高原基線的準確性。當然,基線修正算法的性能也取決于原有基線的準確性。如果原有基線的偏差較大,則基線修正算法很可能不能完全修正基線的偏離。但在這種情況下,修正算法也小幅提高原有算法結果的準確性。
3.3 三種算法運算效率的比較
在實際應用中,算法的準確性和效率同為重要。在測試過程中,我們記錄了三種胎心率基線估計算法的運算時間。文中所測的70例胎心率信號的平均有效時長是(23.23±3.15) min。對于每一次基線估計,均進行3次測試,最后計算3次運算時間的均值。文中的測試環境為:硬件配置:Intel i5處理器、4GB內存;軟件配置:Windows 7操作系統、MATLAB 7.13平臺。
在計算70例胎心率信號的基線時,三種算法的平均所需時間為:算法一為(0.008±0.001) s,算法二為(8.812±2.256) s,算法三為(0.023±0.003) s。在分析準確性相近的情況下,算法三的計算時間僅為算法二的近1/400,可見算法三的運算效率遠高于算法二。另外,在CTG信號分析中,幾十毫秒的差異往往不易被人為察覺。因此,盡管算法三的運算時間稍稍多于算法一,但就實際效果而言,算法三的運算效率與算法一相差不大。
總體而言,通過比較算法三與算法一、算法二的運算時間,可以得知:基線修正算法所需的分析時間較少,因此修正算法基本不會對基線估計算法的運算效率造成很大影響。
4 結論
本文提出了一種胎心率基線修正算法。利用該算法對現有基線估計算法直接求出的基線進行處理,可以使原基線更為準確、平滑。本文算法中,首先使用直方圖分析的方法找出原有基線中的基準值,然后利用基準值確定并修正原基線中的偏差部分,最后再進行平滑,得到一條新的胎心率基線。
產科專家的視覺評估及相應的量化分析結果,表明了本文提出的算法是有效可行的。實驗證明:使用基線修正算法后,Andersson算法的分析準確性顯著提高,達到Lu算法的水平。同時,基線修正算法在提高基線準確性時,基本不會影響到原有基線估計算法的計算效率。更重要的是,這個基線修正算法并非專門為了Andersson或Mantel的基線估計算法而設計,它能作為任何一個基線估計算法的一部分。當然,本算法的使用前提是基線估計算法所求的基線不是一條直線。
同時,基線修正算法不是萬能的,它僅適用于那些起伏較明顯的胎心率基線。它利用原基線中的正確的部分來修正原基線中的一些局部的錯誤。對于一些完全錯誤的基線,修正算法很難提升最終結果的準確性。因此,基線修正算法只能作為基線評估算法的一個補充。要想從根本上得到準確基線,需要從基線估計算法入手。一個準確而且適用范圍廣的基線估計算法,是相關研究者所追求的共同目標。
引言
從20世紀60年代起,電子胎兒監護(electronic fetal monitoring,EFM)開始應用于臨床胎兒監護[1]。目前,EFM已經廣泛用于產科產前及產時監護。胎心宮縮圖(cardiotocography,CTG)作為一種臨床上最常用的EFM手段,通過記錄、分析胎心率和孕婦宮縮來評估胎兒當前狀況[2-3]。對于CTG曲線的分析和解讀來說,最為重要的是如何準確分析所有CTG參數。其中,胎心率基線估計尤為關鍵。其他的一些參數,如胎心率加速、減速等,都是依靠胎心率基線進行判斷的[4]。因此,如果基線評估出錯,往往會導致隨后一系列參數分析錯誤。為了解決這個問題,很多研究者相繼提出了各自的胎心率基線估計算法。Dawes等[5]先從胎心率曲線中選取一個胎心率值作為峰值,去除曲線中與該峰值偏差大于60 ms的胎心率片段后,利用前向和后向低通濾波器對胎心率曲線進行平滑,得到胎心率基線。Mantel等[6]使用一個低通濾波器對胎心率曲線進行多次平滑處理,然后設計一個“修剪”函數來剔除胎心率曲線中的加速、減速和較大的胎心率變異,進而得到胎心率基線。Ayres-de-Campos等[7]設計了一套判斷規則,其利用5%的伴隨異常細變異的胎心率值來篩選出基線值,該方法得到的基線是一條直線。Jimenez等[8]、Krupa等[9]、Nidhal等[10]和Andersson[11]均對胎心率曲線進行統計學分析后,使用低通濾波器或設置篩選規則來確定胎心率基線。這一類基線估計算法原理簡單,計算效率高,但其所得基線的準確性較低,易受胎心率曲線的影響。此外,隨著人工智能技術的發展,這方面的技術也開始應用于胎心率分析中。Gelmetti等[12]使用一個神經網絡濾波器來獲取胎心率基線,相比于低通濾波器,其所得基線更為準確。Lu等[13]使用經驗模態分解和Kohonen神經網絡尋找胎心率曲線中的處于基線部分的點,進而計算胎心率基線。相較于第一類方法,這類方法所得基線的準確性有所提高,但其計算效率偏低。因此,每種算法都有其不足,均未能在世界范圍內得到廣泛使用[14-15]。
對于一些整體趨勢比較平穩的胎心率曲線,很多已提出的基線估計算法都能取得不錯的效果。但是,對于一些不太平穩或特征不明顯的胎心率曲線,現有算法很難估計出其中的基線,而且任何錯誤都會對隨后的參數分析產生負面影響。尤其是對于一些胎心率加速、減速頻繁出現的胎心率曲線,現有算法得出的基線往往會偏離其曲線的真實基線。
為了解決現有算法在不平穩胎心率曲線中表現不足的問題,本文設計了一種胎心率基線修正算法,來提高現有基線的準確性。經過本修正算法,最后得到的胎心率基線會變得更平滑,而且更加符合胎心率曲線、準確性更高。
1 所用的胎心率基線估計算法
本文提出的胎心率基線修正算法旨在改進已有的胎心率基線,不能直接計算基線。因此,為了測試本文算法,需要使用胎心率基線估計算法作為測試對象。本文選取的測試對象是Andersson[11]提出的胎心率基線估計算法,該算法是在Mantel等[6]的基線算法的基礎上進行改進的。在這個基線估計算法中,首先對胎心率曲線進行直方圖分析,求出胎心率曲線中的峰值,然后根據該值對曲線進行多次平滑,最后得到胎心率基線。該算法的特點是:求出的胎心率基線對曲線的跟隨性較好,因此能較好地處理那些穩定的胎心率曲線。但是如果胎心率曲線中存在一些幅度大或持續時間長的加速或減速,該算法得到的結果就不理想,所求基線往往起伏很大。因此,本文選擇該算法作為修正算法的測試對象。
根據之前的實驗[16],我們發現Lu等[13]的基線估計算法在分析準確性方面明顯優于Andersson的算法。因此,為了評估胎心率基線修正算法的性能,本文選取了Lu的基線估計算法作為結果判斷的對照算法。該算法首先使用經驗模態分解方法對胎心率曲線進行降噪,再從重構的胎心率曲線中選出一些極值點構成一個訓練集,利用Kohonen神經網絡從訓練集中選出處于基線部分的胎心率點,最后進行三次樣條插值得到胎心率基線。
2 胎心率基線的修正
2.1 尋找胎心率基線中的基準值
為了確定胎心率基線中的基準值,首先需要對胎心率基線進行直方圖分析,統計基線中每個胎心率值出現的頻數,選取3個出現頻率最高的胎心率值作為備選組。以備選組中的胎心率值作出對應的胎心率基準線,計算每一條基準線與胎心率曲線的交點數。交點數最多的基準線所對應的胎心率值為這條胎心率基線的基準值。交點越多,意味著該胎心率值屬于胎心率曲線中穩定部分的可能性越大。在交點數相同的情況下,選擇頻率較高的胎心率值作為基線的基準值。
2.2 確定胎心率基線中的偏差部分
從胎心率基線中找出與上述基準值相差大于2次心跳/分鐘(beat/min,以下簡稱為bpm)的基線片段,通過極值差、極值點間斜率、交叉率等3個指標進行驗證,判斷其是否為基線中的偏差部分。極值差是指所選的基線部分中胎心率最大值與胎心率最小值之差;極值點間斜率是指上述極值差除以上述兩個極值點間的水平距離;交叉率是指所選的基線部分與對應的曲線部分之間的交點數除以該段基線部分的長度。每一個指標都設有相應的閾值。如果找到的偏差>2 bpm的基線部分滿足這3個指標,則該基線部分就被確認為基線的偏差部分。而原先基線中,除去偏差部分后的其余基線部分均視為非偏差部分。
對于偏差部分,按式(1)重新計算基線值,而非偏差部分的基線則保持不變。
$ \left\{ {\begin{array}{*{20}{c}} {\overline {FHRb\left( i \right)} = 0.1FHRb\left( i \right) + 0.3B,\;\;\;\;\;i \in 偏差部分}\\ {\overline {FHRb\left( i \right)} = FHRb\left( i \right),\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i\; \in 非偏差部分\;\;\;\;} \end{array}} \right. $ |
式中,FHRb(i)和
經過上述處理,得到的基線會存在明顯的“斷裂”,在這些“斷裂”處,使用多點直線平均進行平滑。而對于整條基線,再利用五點三次平滑法進行平滑。這種平滑方法,實際是一種特殊形式的Savitzky-Golay濾波器[17],它能很好去除混入時域信號中的高頻噪聲。五點三次平滑法的表達式見式(2):
$ \left\{ \begin{array}{l} \overline {FHRb\left( 1 \right)} = \frac{1}{{70}}\left[{69FHRb\left( 1 \right) + 4FHRb\left( 3 \right) + 4FHRb\left( 5 \right)} \right]\\ \overline {FHRb2} = \frac{1}{{35}}\left[{2FHRb\left( 1 \right) + 27FHRb\left( 2 \right) + 12FHRb\left( 3 \right) - 8FHRb\left( 4 \right) + 2FHRb\left( 5 \right)} \right]\\ \overline {FHRb\left( i \right)} = \frac{1}{{35}}\left[{ - 3FHRb\left( {i - 2} \right) + 12FHRb\left( {i - 1} \right) + 17FHRb\left( i \right) + 12FHRb\left( {i + 1} \right) - 3FHRb\left( {i + 2} \right)} \right]\\ \overline {FHRb\left( {N - 1} \right)} = \frac{1}{{35}}\left[{2FHRb\left( {N - 4} \right) - 8FHRb\left( {N - 3} \right) + 12FHRb\left( {N - 2} \right) + 27FHRb\left( {N - 1} \right) + 2FHRb\left( N \right)} \right]\\ \overline {FHRbN} = \frac{1}{{70}}\left[{ - FHRb\left( {N - 4} \right) + 4FHRb\left( {N - 3} \right) - 6FHRb\left( {N - 2} \right) + 4FHRb\left( {N - 1} \right) + 69FHRb\left( N \right)} \right] \end{array} \right. $ |
式(2)中,FHRb(i)和
2.3 胎心率基線的擬合與平滑
對于經過平滑后的胎心率基線,仍可能存在一些不太明顯的偏差。為了修正這些偏差,先根據加權最小二乘法[18]求出當前基線的擬合線,再利用該擬合線進行二次平滑。所求的擬合線的表達式為:
$ \overline {FHRb\left( i \right)} = {a_0} + {a_1}i + \cdots + {a_n}{i^n} $ |
式(3)中,
$\left[{\begin{array}{*{20}{c}} {\sum\limits_{i = 1}^N {w\left( i \right)} }&{\sum\limits_{i = 1}^N {iw\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^n}w\left( i \right)} }\\ {\sum\limits_{i = 1}^N {w\left( i \right)} }&{\sum\limits_{i = 1}^N {^2w\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^{n + 1}}w\left( i \right)} }\\ {\sum\limits_{i = 1}^N {{i^n}w\left( i \right)} }&{\sum\limits_{i = 1}^N {{i^{n + 1}}w\left( i \right)} }& \cdots &{\sum\limits_{i = 1}^N {{i^{2n}}w\left( i \right)} } \end{array}} \right]\left[{\begin{array}{*{20}{c}} {{a_0}}\\ {{a_1}}\\ \begin{array}{l} \cdots \\ {a_n} \end{array} \end{array}} \right] = \left[\begin{array}{l} \sum\limits_{i = 1}^N {w\left( i \right)FHRb\left( i \right)} \\ \sum\limits_{i = 1}^N {iw\left( i \right)FHRb\left( i \right)} \\ \cdots \\ \sum\limits_{i = 1}^N {{i^n}w\left( i \right)FHRb\left( i \right)} \end{array} \right] $ |
式(4)中,w(i)是第i點的權值。每個胎心率點的權值是根據該點是否屬于胎心率曲線的穩定部分而決定的。在胎心率曲線中,如果相鄰5點間的彼此差值均<5 bpm,這5點則被認為屬于曲線的穩定部分。如果該點處于穩定部分,相應的權值比較大。這是因為,目前基線估計算法所得的基線存在問題主要出現在非穩定部分。根據這個定義,加速和減速都會被歸類為非穩定部分。
最后,利用擬合線、基準值和當前基線,按式(5)求出新的基線:
$ \left\{ \begin{array}{l} \left\{ {\overline {FHRb\left( i \right)} = 0.4FHRb\left( i \right) + 0.6F\left( i \right),\;\;\;\;\left| {FHRb\left( i \right) - F\left( i \right)} \right| \le } \right.\;\left| {FHRb\left( i \right) - B} \right|\\ \overline {FHRb\left( i \right)} = 0.4FHRb\left( i \right) + 0.4b + 0.2F\left( i \right),\;\;\;\;\left| {FHRb\left( i \right) - F\left( i \right)} \right| > \left| {FHRb\left( i \right) - B} \right| \end{array} \right. $ |
式(5)中,FHRb (i)和
總體而言,本文提出的胎心率基線修正算法的工作流程如圖 1所示,修正前的胎心率基線為使用Andersson算法求得的基線,可見該基線在穩定部分求出的基線比較準確,但是處于加速區的基線卻出現了明顯上移。而經過基線修正后,加速區基線的上移現象被修正,而非加速區的基線則基本不變。同時,相比與原先的胎心率基線,修正后的基線更為平滑。

(a)Andersson基線估計算法求出的基線和該基線的基準值;(b)現有基線的正確部分和偏差部分;(c)現有基線和修正后的基線
Figure1. Sequence of signal processing to correct the FHR baseline(a) the baseline estimated by the algorithm of Anderson and its base value; (b) the correct part and deviation of the original baseline; (c) the original baseline and the corrected baseline
3 實驗結果
3.1 實驗說明
在研究期間,我們對70名孕婦進行了無刺激胎心監護(non-stress test,NST),并記錄了相應的胎心率信號。胎心監護前,孕婦被告知相關的監護內容。在征得孕婦的同意后,方可進行胎心監護及信號采集。
實驗將使用三種方法對70例胎心率信號進行分析:Andersson的基線估計算法(記為算法一),Lu算法(記為算法二),Andersson算法與基線修正算法的結合算法(記為算法三)。同時邀請了兩位產科經驗豐富的醫護人員(專家一為產科醫生,專家二為助產士)通過評級的方式對分析結果進行評估,將其分為好、較好、一般、較差和差五個等級:“好”表示計算出的基線和專家心中的理想基線基本一致;“較好”表示所得基線中,雖然出現一些小的波動、但這些波動不會對隨后的參數識別造成影響;“一般”表示基線的大致趨勢正確,但是該基線會對參數識別的準確性產生一些不良影響;“較差”表示得到的基線中,大部分都與專家預想的基線不符;“差”表示得到的基線完全錯誤,與專家的判斷存在10 bpm以上的誤差。
此外,為了避免計算機分析結果對專家判斷造成影響,在結果評級前,專家們先對胎心率曲線的基礎胎心率(基線率)進行測算。根據相關定義,基礎胎心率是指10 min內除去胎心率加速、減速和顯著變異的胎心率平均值,基礎胎心率一般為5 bpm的倍數[19]。
3.2 三種算法分析準確性的比較
三種胎心率基線估計算法的分析結果如圖 2所示,算法一求出的基線在加速區會出現明顯漂移,而算法二和算法三求出的基線則相對比較平穩。如圖 2(a)所示,如果原胎心率基線(算法一)漂移的偏離幅度較大,修正后的基線(算法三)并不能完全消除漂移現象。

對于兩位專家對三種計算機分析方法在70例胎心率曲線中表現的評級結果進行了頻數統計,結果如圖 3所示。總體而言,兩位專家的評判結果中,算法二和算法三的表現大致相同,均優于算法一。在70例信號中,專家一認為算法一中結果為“好”的比例為42.86%,算法二為75.71%,算法三同為75.71%;而在專家二的評定結果中,算法一中有47.14%的結果被評為“好”,算法二中該比例為71.43%,算法三為75.71%。通過比較算法一和算法三的專家評定結果,可以看出,修正后的胎心率基線的準確度明顯提高。在總體的分析準確度上,算法二和算法三基本處于同一水平。

上述的分析僅針對產科專家的視覺評估結果,因此,需要進行進一步的量化分析。我們計算了70例胎心率信號中,三種基線估計算法與兩位專家給出的基礎胎心率之間的平均絕對誤差(mean absolute error,MAE)。由于基礎胎心率是一個數值,而計算機分析的基線是一條曲線,因此平均絕對誤差的計算表達式為:
$ MAE = \frac{1}{N}\sum\limits_{i = 1}^N {\left| {FHRb\left( i \right) - FHRB} \right|} \; $ |
式中,FHRb(i)是計算機分析的基線中第i點的值,FHRB是專家測算出的基礎胎心率值,N是胎心率基線的總點數。
對于每一例胎心率信號,分別求出三種算法分析結果與兩位專家給出的基礎胎心率之間的平均絕對誤差,然后計算70例信號的誤差均值,結果如表 1所示,無論是定性分析還是定量分析,兩位專家給出的意見均較為一致。在三種算法中,算法二和算法三與專家意見之間的差異均小于算法一。

為了進一步分析三種算法結果與專家分析結果之間的差異,我們將兩位專家的意見進行了統一處理,即計算每一例胎心率信號中兩位專家結果與三種算法結果之間誤差的均值。因此,可以對計算機算法與專家標準間的誤差進行方差分析。進行方差分析前,需進行方差齊性檢驗,判斷方差是否齊性。結果顯示,在檢驗水準為0.05的前提下,F=0.912,P=0.403,即通過方差齊性檢驗,滿足方差分析的前提。然后,對三種算法的誤差進行了方差分析,結果為F=3.363,P=0.037<0.05。這表示總體上三種算法求得的結果間存在差異,因此還需要進行兩兩比較。使用最小顯著差數法(least significant difference,LSD)對三種胎心率基線算法的誤差進行兩兩比較(檢驗水準為0.05),結果如表 2所示。可見:算法一與算法二、算法一與算法三之間的差異具有統計學意義,而算法二與算法三之間的差異則不顯著。這也表明,相比于算法一,算法二和算法三的分析結果與專家的分析結果更為接近。

總體而言,算法二和算法三的分析結果準確性相近,均優于算法一。從算法一和算法三的表現可推斷:基線修正算法可明顯提高原基線的準確性。當然,基線修正算法的性能也取決于原有基線的準確性。如果原有基線的偏差較大,則基線修正算法很可能不能完全修正基線的偏離。但在這種情況下,修正算法也小幅提高原有算法結果的準確性。
3.3 三種算法運算效率的比較
在實際應用中,算法的準確性和效率同為重要。在測試過程中,我們記錄了三種胎心率基線估計算法的運算時間。文中所測的70例胎心率信號的平均有效時長是(23.23±3.15) min。對于每一次基線估計,均進行3次測試,最后計算3次運算時間的均值。文中的測試環境為:硬件配置:Intel i5處理器、4GB內存;軟件配置:Windows 7操作系統、MATLAB 7.13平臺。
在計算70例胎心率信號的基線時,三種算法的平均所需時間為:算法一為(0.008±0.001) s,算法二為(8.812±2.256) s,算法三為(0.023±0.003) s。在分析準確性相近的情況下,算法三的計算時間僅為算法二的近1/400,可見算法三的運算效率遠高于算法二。另外,在CTG信號分析中,幾十毫秒的差異往往不易被人為察覺。因此,盡管算法三的運算時間稍稍多于算法一,但就實際效果而言,算法三的運算效率與算法一相差不大。
總體而言,通過比較算法三與算法一、算法二的運算時間,可以得知:基線修正算法所需的分析時間較少,因此修正算法基本不會對基線估計算法的運算效率造成很大影響。
4 結論
本文提出了一種胎心率基線修正算法。利用該算法對現有基線估計算法直接求出的基線進行處理,可以使原基線更為準確、平滑。本文算法中,首先使用直方圖分析的方法找出原有基線中的基準值,然后利用基準值確定并修正原基線中的偏差部分,最后再進行平滑,得到一條新的胎心率基線。
產科專家的視覺評估及相應的量化分析結果,表明了本文提出的算法是有效可行的。實驗證明:使用基線修正算法后,Andersson算法的分析準確性顯著提高,達到Lu算法的水平。同時,基線修正算法在提高基線準確性時,基本不會影響到原有基線估計算法的計算效率。更重要的是,這個基線修正算法并非專門為了Andersson或Mantel的基線估計算法而設計,它能作為任何一個基線估計算法的一部分。當然,本算法的使用前提是基線估計算法所求的基線不是一條直線。
同時,基線修正算法不是萬能的,它僅適用于那些起伏較明顯的胎心率基線。它利用原基線中的正確的部分來修正原基線中的一些局部的錯誤。對于一些完全錯誤的基線,修正算法很難提升最終結果的準確性。因此,基線修正算法只能作為基線評估算法的一個補充。要想從根本上得到準確基線,需要從基線估計算法入手。一個準確而且適用范圍廣的基線估計算法,是相關研究者所追求的共同目標。