宮縮狀態實時識別在分娩鎮痛中具有重要意義,但相關傳統算法和系統無法滿足實時識別宮縮狀態的要求。針對上述情況,本文設計了一套宮縮狀態實時分析算法。該算法包括宮縮信號預處理、基于直方圖和線性迭代的宮縮基線估計以及一種基于有限狀態機原理的實時識別算法,可根據前一點的宮縮狀態以及一系列狀態轉換條件來識別當前的宮縮狀態,并且設置緩沖機制來避免不真實的狀態轉換。為了評估該算法的性能表現,本文將其與現有的一種電子胎兒監護儀的宮縮分析算法進行比較。實驗結果表明,本文算法能夠在宮縮信號實時監測的同時對宮縮狀態進行實時分析,算法敏感度為 0.939 9,陽性預測值為 0.869 3,具有較高的準確度,可達到臨床監測的要求。
引用本文: 劉高超, 陸堯勝, 林梓東, 郭力睿, 李曉東. 宮縮曲線分析及其狀態實時識別算法的研究. 生物醫學工程學雜志, 2017, 34(5): 738-744. doi: 10.7507/1001-5515.201610021 復制
引言
在醫學疼痛指數上,分娩疼痛僅次于燒傷灼痛,排在第二位。分娩疼痛主要是宮縮引起的。宮縮,即有規則的子宮收縮,與產婦能否順利分娩以及與胎兒的安危息息相關[1-2]。子宮收縮有節律性,一般由弱到強,達頂峰后逐漸減弱,抵達宮縮曲線基礎值后經過一段間隙,再開始第二次宮縮[3-4]。每一次宮縮可分為 3 個階段:上升期、峰值期、下降期,宮縮結束后則進入間歇期,如圖 1 所示。臨床發現,孕婦一般只會在宮縮發生期間感覺到疼痛,而在間歇期幾乎不會感覺到疼痛。在宮縮發生期間,孕婦感覺到的疼痛感會隨著上升期的進展而越發明顯,在峰值期孕婦感覺的疼痛感最為強烈,而在下降期,孕婦的疼痛感會逐漸降低。

目前的分娩鎮痛方法和裝置[5-7],對于分娩疼痛程度的判斷一般是基于宮縮活動的強弱。如果只憑測出的宮縮壓力來評定宮縮活動的強弱,進而調節分娩鎮痛儀的輸出,而沒有考慮宮縮的不同階段對孕婦疼痛感的影響,則并不合理甚至可能會造成不良影響。因此,實時監測產婦宮縮信號,實時判斷出宮縮狀態,進而判斷當前分娩疼痛的程度,并調節分娩鎮痛儀的輸出,這種鎮痛方法將更為科學、有效。在另一方面,對于傳統分娩鎮痛儀,醫護人員只能通過詢問孕婦疼痛程度后手動調節鎮痛儀輸出來緩解孕婦疼痛。而通過宮縮狀態的自動實時判別,就能實現分娩鎮痛的自動化。這樣可以減少醫護人員的工作負擔,減少孕婦治療等待時間。因此,宮縮狀態實時識別的研究具有很強的現實意義。
但是,傳統的宮縮算法和系統主要是事后基于宮縮整體曲線對宮縮波進行檢測,無法在實時監測宮縮信號的同時進行實時識別,而且傳統方法不能識別出具體的宮縮狀態,無法滿足分娩鎮痛自動化對宮縮狀態實時識別的需求。曾有相關研究在去除宮縮曲線中的干擾信號后,通過閾值比較方法識別宮縮波[8]。Georgieva 等[9]則通過不斷的參數閾值調整來確定宮縮。楊建平等[10]對宮縮曲線進行小波變換,根據能量值曲線來確定宮縮波的存在區間。上述方法雖然能取得不錯的效果,但屬于非實時的宮縮識別。van de Laar 等[11]提出一種宮縮活動實時分析算法,不過該算法得到的是一段時間內的宮縮特征,并非嚴格意義上的實時識別。Huang 等[12]也注意到了宮縮實時分析在分娩鎮痛中的重要作用,提出一種基于知識輔助分析的宮縮預測算法,不過該方法需要讓機器提前學習孕婦歷史臨床數據才能作出預測,計算效率低,準確率不高,不能滿足臨床需求。目前的電子胎兒監護儀有宮縮檢測的功能,Lu 等[13]也開發出一套成熟的宮縮基線與識別算法,穩定地用于三瑞醫療器械有限公司的 SRF618 型監護儀的計算機輔助分析系統上,并已在眾多醫院投入臨床使用,實用效果得到驗證,不過該系統也是基于整體宮縮曲線的分析,并非實時分析。
為了滿足分娩鎮痛自動化的需求,本文設計了一套宮縮狀態實時識別方法,包括宮縮信號預處理、基于直方圖和線性迭代的宮縮基線估計算法以及一種基于有限狀態機原理的實時識別算法,經過驗證,利用本文算法能夠實時識別當前宮縮點是處于上升期、峰值期、下降期還是間歇期,有望適用于計算機對宮縮曲線的自動分析。
1 宮縮信號提取與預處理
本文研究期間,使用三瑞醫療器械有限公司的 SRF618 系列宮縮壓力探頭對 40 名孕婦進行產時監護,共提取了 40 例宮縮信號,采樣頻率為 1.25 Hz,監護時長 20~60 min 不等。
數據采集的原始信號中包含了宮縮、胎動、產婦用力以及產婦呼吸等引起的干擾信號,需要對采樣數據進行預處理才能用于接下來的宮縮波分析。宮縮壓力數據的能量主要集中在 0.1 Hz 以下,而呼吸等信號頻率較高,采樣數據中的高頻成分比較豐富。因此,本文采用五點三次平滑算法對原始宮縮信號進行濾波,提高曲線的光滑度。五點三次平滑算法利用最小二乘法原理對離散數據進行三次最小二乘多項式平滑[14],其計算公式為:
![]() |
其中:I = 3, 4,
, M — 2。
提取的宮縮實時信號經預處理后,濾去噪聲,保留了有效因子,得到適用于分析的信號結果。
2 宮縮基線估計
宮縮基線,指無宮縮無胎動等情況下產婦子宮腔壓力值。宮縮曲線與宮縮基線的幅值差是判斷宮縮狀態的重要指標。目前,絕大部分宮縮識別算法都需要先估計宮縮基線。準確的宮縮基線估計算法,是本文宮縮實時識別算法的基礎。宮縮基線估計的過程必須要排除宮縮或胎動等模式的干擾。傳統方法在抑除干擾方面都能達到較理想的效果[13],但是存在基線隨強宮縮、連續宮縮的來臨或消失波動較大等問題。為解決這類問題,本文通過參考胎心率基線算法,設計了一種基于直方圖和線性迭代的宮縮基線算法。
本文首先參考了 Dawes 等[15]利用直方圖尋找某個滿足特定條件的點 P,以此做閾值排除不滿足條件的點,再將剩余點做插值,求得胎心率基線的方法。根據實驗,本文發現求取 P 點的方法估計的基線常隨著宮縮波的上升、下降有較大起伏。因此,本文再結合 Mantel 等[16]的研究和宮縮曲線的特點,設計了一種基于直方圖和線性迭代的宮縮基線算法,最終取得理想的效果,算法流程如圖 2 所示。其中 ucorgn 為采集的宮縮數據,ucorgn_mean 為所有非零點的平均值,uc_hist 為存放的數據緩沖區,P 為宮縮曲線的基準值,B0 為前后向濾波起始點。

P 值的獲取需要進行以下步驟:① 選擇(0,ucorgn_mean + 30)中出現頻率最高的 5 個宮縮壓力值作為有效值,在有效值中選擇壓力值最小的作為基值;② 若有效值的個數小于 5,則直接將頻數最大的值作為基值。
濾波前,首先要利用[P — 30, P + 30]范圍內的樣本值對 B0 進行修正,具體方法如下:B0 = k1 · B0 + k2 · P,修正后確保了 P 點的平穩性與全局性。k1 = 0.975,k2 = 0.025,這樣的權重設置基于 Ayres-de-Campos 等[18]的研究成果以及臨床數據分析結果。
接著進行前向濾波迭代和后向濾波迭代,公式分別如下:
![]() |
![]() |
對于前向濾波的起始點 B1 = k1 · B0 + k2 · B1。同時本文設置了一個窗口限制:若樣本值在[P — 30, P + 30]范圍內則利用上述公式進行濾波,否則當前位置用前一點經濾波后的值代替,起始點由 B0 取代。本文通過 B0 的修正和前向濾波都作了窗口限制,以使預測的基線值更集中,能夠克服強宮縮來臨時和在連續宮縮的情況下基線突然抬高或波動的問題。
濾波后的閾值排除,需要設置上下限,然后多次迭代。本文結合宮縮曲線的特點設計了 5 次迭代和兩種迭代閾值,一是將下限值與上限值設置為相同值;二是將下限值設置得比上限值更高。經實驗發現,將下限值比上限值設置得更高時,由于在基線上方的宮縮曲線先于下方的曲線被臨時基線取代,更新后的臨時基線再經濾波后變得更低且更平緩,從而克服了因宮縮曲線突然抬高而導致的基線隨之拉高的問題,因此本文采用下限值比上限值大的迭代閥值,如表 1 所示。

3 宮縮狀態實時識別
臨產前和分娩過程中,要達到宮縮實時識別,就要求準確識別宮縮波的上升期、峰值期、下降期以及間歇期 4 個特征段。由于宮縮檢測本身是一個主觀性很強的過程,所以本文沒有運用復雜的數學方法,而是根據臨床數據和宮縮曲線的特點,參考 Klossner[3]、Ricci 等[4]對宮縮期的定義,從形態學上對標準宮縮 4 個特征段的規律進行歸納,并輔助以統計學中的一些估計方法,對宮縮檢測設計了一種基于有限狀態機原理的實時識別算法[17],即當前宮縮點的狀態識別依賴于前面宮縮點的狀態以及一系列狀態轉換條件。這樣做的原因是:宮縮曲線的實時識別與非實時的整體識別不同,無法得知后面點的情況,必須利用前面的點對當前點的狀態進行判斷,這給宮縮識別增加了難度。同時,在本文實時識別算法中,考慮了產科醫生的意見——要求對宮縮上升期和峰值期識別的靈敏度更高,設置嚴格的判定標準,寧可稍微延長上升期、峰值期的時間,也勿漏檢。
具體而言,本文采用有限狀態機來進行宮縮實時識別,定義了一個狀態集 S,包括宮縮間歇期、上升期、峰值期和下降期。狀態轉換如圖 3 所示。

首先讀取宮縮數據,截取 3 min 的宮縮曲線段作為待分析曲線段,當前宮縮點為曲線段的最末點。然后對取出的宮縮片段先采用本文設計的基于直方圖和線性迭代的宮縮基線算法對基線進行估計,之后再根據一系列狀態轉換條件判斷當前宮縮所處的階段。為方便描述,本文記當前宮縮點為 i,則當前宮縮強度值為 u[i],對應基線值為 b[i],當前宮縮點的切線斜率記為 k[i],r 表示最近的上升點,uk 表示宮縮閾值,該閾值略小于監護儀設置的可監測最大宮縮幅值。
各狀態基本判據如下:
(1)間歇期:若 u[i] — b[i] < 5,則將其判斷為處于間歇期。
(2)上升期:若同時滿足以下條件的點則判斷為上升期起始點并記為最近的上升點。
![]() |
![]() |
![]() |
(5)
。
宮縮曲線上升期起始點的判斷是能否準確識別宮縮的關鍵,若誤判上升期起始點通常會判斷出偽宮縮,因此需要設置層進式判據。
(3)峰值期:若 u[i] > uk,則判斷該點為峰值期起始點同時記為最近的峰值點。
(4)下降期:當(k[i] < 0)&&( u[i] < uk),如果該點與最近峰值點的距離小于 10 個點那么繼續將該點視為峰值點,如果距離大于 10 則判斷該點處于下降期。
除上述基本判據之外,在實際的宮縮中,上升期的宮縮信號由于胎動等影響,常會出現一些小尖峰或者短暫的下降過程,但是按照定義,從宮縮的整體趨勢上判斷它們都屬于上升階段。本文將其稱為偽上升點,記為 uf。因此,本算法設置了一套緩沖機制,避免偽上升點所導致的大量不真實的狀態轉換,具體包括以下步驟:
步驟一:若(k[i] > 0)&&( u[i] > uf),則判斷其處于上升期并更新 r 為當前點。否則執行步驟二。
步驟二:若(i — r < 5)&&( u[i] > max( u[j])),其中 j = i — 10, i — 11, …, i — 20,則判斷其處于上升期,在此結果下,如 k[i — 1] > 0 則把當前點記為 uf,此處即提供了緩沖機制。如不滿足則執行步驟三。
步驟三:若(i — r < 10)&&( u[i] — b[i] > 20),則將當前點判斷為處于上升期,設置該判斷標準即為了防止對上升期中的小尖峰中的下降沿造成誤判。
按照上述方法循環反復,不斷地推移宮縮曲線段,估計基線,判斷出當前宮縮點是處于上升期、峰值期、下降期還是間歇期,即完成了宮縮活動實時識別的整個過程
4 實驗與分析
本文將提出的整套宮縮曲線分析算法應用到采集的 40 例產時監護胎心宮縮圖(cardiotocography,CTG)檔案中進行宮縮識別以測試算法性能,并與現有三瑞醫療器械有限公司 SRF618 型計算機輔助分析系統進行對比研究[13]。下面本文將從宮縮基線算法效果、宮縮實時識別效果和整體識別情況對實驗結果進行分析。
4.1 宮縮基線算法效果評估
為了直觀地評估本文設計的基于直方圖和線性迭代的宮縮基線算法的效果,先將其單獨應用于采集的宮縮曲線,估計的基線為基線 2,并與 SRF618 的宮縮基線算法的效果進行對比,SRF618 的宮縮基線算法估計的基線為基線 1,如圖 4 所示。

可以明顯地看出基線 2 比基線 1 的擬合效果更好,主要體現在以下方面:① 在宮縮曲線起始位置,基線 2 的擬合效果很理想,而基線 1 常出現急劇拉高的問題;② 在出現強宮縮、連續宮縮或者胎動的情況下,基線 2 能夠保持高擬合度,幾乎不會隨之產生波動。在本文中,擬合效果更好的基線算法有利于宮縮識別。
4.2 宮縮狀態實時識別算法的實時識別效果分析
本文為了區分宮縮曲線的上升期、峰值期、下降期和間歇期,設置了一條狀態曲線,把上升期、峰值期、下降期和間隙期對應的宮縮點的狀態值分別設為 70、100、50、0。如圖 5 所示,為其中一例宮縮曲線分別在 3 min、4 min、5 min 以及 24 min(最終時)的識別情況,如圖 6 所示為其中另外一例宮縮曲線的最終識別結果,圖中各點被判斷出的狀態由紅色折線標出。

如圖 5 所示,可以清楚地看到,本文開發的宮縮實時識別算法成功實現了對宮縮上升期、峰值期、下降期和間歇期 4 個時期的判別,而且是隨著宮縮信號的實時檢測,算法同時自動進行實時判別。此外,在 40 例數據分析中,宮縮的上升起始點均做出了有效、準確地判斷。這是因為在間歇期轉入上升期時本文設計了嚴格度依次遞增的轉換條件,防止了因母親呼吸等腹部用力的情況在間隙期產生起伏或尖峰而引起的誤判,這在圖 5 中也可以明確看出。

其次,本算法設計了一套緩沖機制,既減少了上升期中短暫下降過程尖峰造成的誤判又可以檢出連續宮縮,如圖 6 所示。再次,結合圖 6 可以發現,即使峰值期出現不斷振動的情況,該算法仍然有良好性能,這是因為本算法有效地利用了時間判據,避免了峰值期振動可能引起的誤判。
由此可見,本文所提出的宮縮實時識別算法能夠實現對宮縮狀態的實時識別。
4.3 宮縮分析算法的整體識別情況分析
為了更全面地評價本文提出的包含宮縮基線、狀態實時識別算法在內的整套宮縮分析算法性能,本文將其應用于采集到的 40 例產時監護檔案數據中進行宮縮波識別,本文的算法記為算法一,對比研究的對象是 SRF618 設備上的宮縮分析算法[13],記為算法二。以具有 30 年臨床經驗的產科專家檢出的宮縮波為金標準,兩種算法檢出的宮縮波為實驗組,得到的統計結果如表 2 所示。其中,已檢表示實驗組的宮縮數,漏檢表示實驗組與金標準相比沒有檢出的宮縮數,錯檢表示實驗組與金標準相比錯誤識別的宮縮數。

但是這個結果不足以精確衡量兩種算法的性能,所以本文進一步考察了算法的敏感度和陽性預測值,如表 3 所示。所謂敏感度,是指實際患病又按篩檢實驗診斷標準被正確檢測出的百分比,反映篩檢實驗對患者確診的能力,在本文描述的是以兩種算法進行檢測的實驗組正確檢出的宮縮數所占真實宮縮數的比例;而陽性預測值是指篩檢實驗檢出的全部陽性例數中真陽性例數所占的比例,反映篩檢實驗結果陽性者患目標疾病的可能性,在本文描述的是實驗組正確檢出宮縮數占所有檢出的宮縮數的比例。

由實驗結果可見,算法一敏感度高于算法二,高達 0.939 9,滿足產科醫生提出的要求,對宮縮上升期和峰值期識別的靈敏度更高,盡量避免了宮縮漏檢。算法一在陽性預測值方面略遜于算法二,分析其原因,雖然本文設置了一系列機制防止錯檢,但由于算法一是實時識別,只能根據前面宮縮點狀態對當前點進行判斷,不可避免會出現錯檢。例如有時候基線忽然抬高時,實時識別無法得知后面點的情況而不能隨之變更基線,容易將其誤判為上升期,進而引起接下來的錯檢。而算法二是非實時的,無法滿足在宮縮信號實時監測的同時實時識別,而是事后基于整體曲線對宮縮波進行識別,所以錯檢相對會少一點。盡管如此,算法一的陽性預測值也僅比算法二低了 0.014 2,達到 0.869 3,再加上高達 0.939 9 的敏感度,有力地說明算法一具有較高的準確度,能夠滿足臨床檢測的要求。
5 結論
本文設計了一套宮縮自動實時分析算法,包括宮縮信號預處理、基于直方圖和線性迭代的宮縮基線估計以及一種基于有限狀態機原理的實時識別算法,通過從形態學上對宮縮 4 個特征段的規律進行歸納,設置一系列狀態轉換條件來實現當前宮縮狀態的實時識別。同時,設置一套緩沖機制來避免偽上升點所導致的大量不真實的狀態轉換。實驗結果表明,本文算法敏感度為 0.939 9,陽性預測值為 0.869 3,具有較高的準確度,能夠滿足臨床監測的要求。并且,本文實時識別算法摒棄了復雜的數學方法,計算效率高,結合臨床意見和數據對算法進行修正,偏重實際效果,對工程應用具有較高的參考價值。而通過臨床試驗不斷改進分析規則來進一步提高算法的準確度是本課題組未來的研究方向。
致謝 本文信號采集和醫學研究得到廣州市婦女兒童醫院婦產科錢學雅博士、廣州市白云區人民醫院婦產科秦如意醫生的幫助,在此致以衷心的感謝。
引言
在醫學疼痛指數上,分娩疼痛僅次于燒傷灼痛,排在第二位。分娩疼痛主要是宮縮引起的。宮縮,即有規則的子宮收縮,與產婦能否順利分娩以及與胎兒的安危息息相關[1-2]。子宮收縮有節律性,一般由弱到強,達頂峰后逐漸減弱,抵達宮縮曲線基礎值后經過一段間隙,再開始第二次宮縮[3-4]。每一次宮縮可分為 3 個階段:上升期、峰值期、下降期,宮縮結束后則進入間歇期,如圖 1 所示。臨床發現,孕婦一般只會在宮縮發生期間感覺到疼痛,而在間歇期幾乎不會感覺到疼痛。在宮縮發生期間,孕婦感覺到的疼痛感會隨著上升期的進展而越發明顯,在峰值期孕婦感覺的疼痛感最為強烈,而在下降期,孕婦的疼痛感會逐漸降低。

目前的分娩鎮痛方法和裝置[5-7],對于分娩疼痛程度的判斷一般是基于宮縮活動的強弱。如果只憑測出的宮縮壓力來評定宮縮活動的強弱,進而調節分娩鎮痛儀的輸出,而沒有考慮宮縮的不同階段對孕婦疼痛感的影響,則并不合理甚至可能會造成不良影響。因此,實時監測產婦宮縮信號,實時判斷出宮縮狀態,進而判斷當前分娩疼痛的程度,并調節分娩鎮痛儀的輸出,這種鎮痛方法將更為科學、有效。在另一方面,對于傳統分娩鎮痛儀,醫護人員只能通過詢問孕婦疼痛程度后手動調節鎮痛儀輸出來緩解孕婦疼痛。而通過宮縮狀態的自動實時判別,就能實現分娩鎮痛的自動化。這樣可以減少醫護人員的工作負擔,減少孕婦治療等待時間。因此,宮縮狀態實時識別的研究具有很強的現實意義。
但是,傳統的宮縮算法和系統主要是事后基于宮縮整體曲線對宮縮波進行檢測,無法在實時監測宮縮信號的同時進行實時識別,而且傳統方法不能識別出具體的宮縮狀態,無法滿足分娩鎮痛自動化對宮縮狀態實時識別的需求。曾有相關研究在去除宮縮曲線中的干擾信號后,通過閾值比較方法識別宮縮波[8]。Georgieva 等[9]則通過不斷的參數閾值調整來確定宮縮。楊建平等[10]對宮縮曲線進行小波變換,根據能量值曲線來確定宮縮波的存在區間。上述方法雖然能取得不錯的效果,但屬于非實時的宮縮識別。van de Laar 等[11]提出一種宮縮活動實時分析算法,不過該算法得到的是一段時間內的宮縮特征,并非嚴格意義上的實時識別。Huang 等[12]也注意到了宮縮實時分析在分娩鎮痛中的重要作用,提出一種基于知識輔助分析的宮縮預測算法,不過該方法需要讓機器提前學習孕婦歷史臨床數據才能作出預測,計算效率低,準確率不高,不能滿足臨床需求。目前的電子胎兒監護儀有宮縮檢測的功能,Lu 等[13]也開發出一套成熟的宮縮基線與識別算法,穩定地用于三瑞醫療器械有限公司的 SRF618 型監護儀的計算機輔助分析系統上,并已在眾多醫院投入臨床使用,實用效果得到驗證,不過該系統也是基于整體宮縮曲線的分析,并非實時分析。
為了滿足分娩鎮痛自動化的需求,本文設計了一套宮縮狀態實時識別方法,包括宮縮信號預處理、基于直方圖和線性迭代的宮縮基線估計算法以及一種基于有限狀態機原理的實時識別算法,經過驗證,利用本文算法能夠實時識別當前宮縮點是處于上升期、峰值期、下降期還是間歇期,有望適用于計算機對宮縮曲線的自動分析。
1 宮縮信號提取與預處理
本文研究期間,使用三瑞醫療器械有限公司的 SRF618 系列宮縮壓力探頭對 40 名孕婦進行產時監護,共提取了 40 例宮縮信號,采樣頻率為 1.25 Hz,監護時長 20~60 min 不等。
數據采集的原始信號中包含了宮縮、胎動、產婦用力以及產婦呼吸等引起的干擾信號,需要對采樣數據進行預處理才能用于接下來的宮縮波分析。宮縮壓力數據的能量主要集中在 0.1 Hz 以下,而呼吸等信號頻率較高,采樣數據中的高頻成分比較豐富。因此,本文采用五點三次平滑算法對原始宮縮信號進行濾波,提高曲線的光滑度。五點三次平滑算法利用最小二乘法原理對離散數據進行三次最小二乘多項式平滑[14],其計算公式為:
![]() |
其中:I = 3, 4,
, M — 2。
提取的宮縮實時信號經預處理后,濾去噪聲,保留了有效因子,得到適用于分析的信號結果。
2 宮縮基線估計
宮縮基線,指無宮縮無胎動等情況下產婦子宮腔壓力值。宮縮曲線與宮縮基線的幅值差是判斷宮縮狀態的重要指標。目前,絕大部分宮縮識別算法都需要先估計宮縮基線。準確的宮縮基線估計算法,是本文宮縮實時識別算法的基礎。宮縮基線估計的過程必須要排除宮縮或胎動等模式的干擾。傳統方法在抑除干擾方面都能達到較理想的效果[13],但是存在基線隨強宮縮、連續宮縮的來臨或消失波動較大等問題。為解決這類問題,本文通過參考胎心率基線算法,設計了一種基于直方圖和線性迭代的宮縮基線算法。
本文首先參考了 Dawes 等[15]利用直方圖尋找某個滿足特定條件的點 P,以此做閾值排除不滿足條件的點,再將剩余點做插值,求得胎心率基線的方法。根據實驗,本文發現求取 P 點的方法估計的基線常隨著宮縮波的上升、下降有較大起伏。因此,本文再結合 Mantel 等[16]的研究和宮縮曲線的特點,設計了一種基于直方圖和線性迭代的宮縮基線算法,最終取得理想的效果,算法流程如圖 2 所示。其中 ucorgn 為采集的宮縮數據,ucorgn_mean 為所有非零點的平均值,uc_hist 為存放的數據緩沖區,P 為宮縮曲線的基準值,B0 為前后向濾波起始點。

P 值的獲取需要進行以下步驟:① 選擇(0,ucorgn_mean + 30)中出現頻率最高的 5 個宮縮壓力值作為有效值,在有效值中選擇壓力值最小的作為基值;② 若有效值的個數小于 5,則直接將頻數最大的值作為基值。
濾波前,首先要利用[P — 30, P + 30]范圍內的樣本值對 B0 進行修正,具體方法如下:B0 = k1 · B0 + k2 · P,修正后確保了 P 點的平穩性與全局性。k1 = 0.975,k2 = 0.025,這樣的權重設置基于 Ayres-de-Campos 等[18]的研究成果以及臨床數據分析結果。
接著進行前向濾波迭代和后向濾波迭代,公式分別如下:
![]() |
![]() |
對于前向濾波的起始點 B1 = k1 · B0 + k2 · B1。同時本文設置了一個窗口限制:若樣本值在[P — 30, P + 30]范圍內則利用上述公式進行濾波,否則當前位置用前一點經濾波后的值代替,起始點由 B0 取代。本文通過 B0 的修正和前向濾波都作了窗口限制,以使預測的基線值更集中,能夠克服強宮縮來臨時和在連續宮縮的情況下基線突然抬高或波動的問題。
濾波后的閾值排除,需要設置上下限,然后多次迭代。本文結合宮縮曲線的特點設計了 5 次迭代和兩種迭代閾值,一是將下限值與上限值設置為相同值;二是將下限值設置得比上限值更高。經實驗發現,將下限值比上限值設置得更高時,由于在基線上方的宮縮曲線先于下方的曲線被臨時基線取代,更新后的臨時基線再經濾波后變得更低且更平緩,從而克服了因宮縮曲線突然抬高而導致的基線隨之拉高的問題,因此本文采用下限值比上限值大的迭代閥值,如表 1 所示。

3 宮縮狀態實時識別
臨產前和分娩過程中,要達到宮縮實時識別,就要求準確識別宮縮波的上升期、峰值期、下降期以及間歇期 4 個特征段。由于宮縮檢測本身是一個主觀性很強的過程,所以本文沒有運用復雜的數學方法,而是根據臨床數據和宮縮曲線的特點,參考 Klossner[3]、Ricci 等[4]對宮縮期的定義,從形態學上對標準宮縮 4 個特征段的規律進行歸納,并輔助以統計學中的一些估計方法,對宮縮檢測設計了一種基于有限狀態機原理的實時識別算法[17],即當前宮縮點的狀態識別依賴于前面宮縮點的狀態以及一系列狀態轉換條件。這樣做的原因是:宮縮曲線的實時識別與非實時的整體識別不同,無法得知后面點的情況,必須利用前面的點對當前點的狀態進行判斷,這給宮縮識別增加了難度。同時,在本文實時識別算法中,考慮了產科醫生的意見——要求對宮縮上升期和峰值期識別的靈敏度更高,設置嚴格的判定標準,寧可稍微延長上升期、峰值期的時間,也勿漏檢。
具體而言,本文采用有限狀態機來進行宮縮實時識別,定義了一個狀態集 S,包括宮縮間歇期、上升期、峰值期和下降期。狀態轉換如圖 3 所示。

首先讀取宮縮數據,截取 3 min 的宮縮曲線段作為待分析曲線段,當前宮縮點為曲線段的最末點。然后對取出的宮縮片段先采用本文設計的基于直方圖和線性迭代的宮縮基線算法對基線進行估計,之后再根據一系列狀態轉換條件判斷當前宮縮所處的階段。為方便描述,本文記當前宮縮點為 i,則當前宮縮強度值為 u[i],對應基線值為 b[i],當前宮縮點的切線斜率記為 k[i],r 表示最近的上升點,uk 表示宮縮閾值,該閾值略小于監護儀設置的可監測最大宮縮幅值。
各狀態基本判據如下:
(1)間歇期:若 u[i] — b[i] < 5,則將其判斷為處于間歇期。
(2)上升期:若同時滿足以下條件的點則判斷為上升期起始點并記為最近的上升點。
![]() |
![]() |
![]() |
(5)
。
宮縮曲線上升期起始點的判斷是能否準確識別宮縮的關鍵,若誤判上升期起始點通常會判斷出偽宮縮,因此需要設置層進式判據。
(3)峰值期:若 u[i] > uk,則判斷該點為峰值期起始點同時記為最近的峰值點。
(4)下降期:當(k[i] < 0)&&( u[i] < uk),如果該點與最近峰值點的距離小于 10 個點那么繼續將該點視為峰值點,如果距離大于 10 則判斷該點處于下降期。
除上述基本判據之外,在實際的宮縮中,上升期的宮縮信號由于胎動等影響,常會出現一些小尖峰或者短暫的下降過程,但是按照定義,從宮縮的整體趨勢上判斷它們都屬于上升階段。本文將其稱為偽上升點,記為 uf。因此,本算法設置了一套緩沖機制,避免偽上升點所導致的大量不真實的狀態轉換,具體包括以下步驟:
步驟一:若(k[i] > 0)&&( u[i] > uf),則判斷其處于上升期并更新 r 為當前點。否則執行步驟二。
步驟二:若(i — r < 5)&&( u[i] > max( u[j])),其中 j = i — 10, i — 11, …, i — 20,則判斷其處于上升期,在此結果下,如 k[i — 1] > 0 則把當前點記為 uf,此處即提供了緩沖機制。如不滿足則執行步驟三。
步驟三:若(i — r < 10)&&( u[i] — b[i] > 20),則將當前點判斷為處于上升期,設置該判斷標準即為了防止對上升期中的小尖峰中的下降沿造成誤判。
按照上述方法循環反復,不斷地推移宮縮曲線段,估計基線,判斷出當前宮縮點是處于上升期、峰值期、下降期還是間歇期,即完成了宮縮活動實時識別的整個過程
4 實驗與分析
本文將提出的整套宮縮曲線分析算法應用到采集的 40 例產時監護胎心宮縮圖(cardiotocography,CTG)檔案中進行宮縮識別以測試算法性能,并與現有三瑞醫療器械有限公司 SRF618 型計算機輔助分析系統進行對比研究[13]。下面本文將從宮縮基線算法效果、宮縮實時識別效果和整體識別情況對實驗結果進行分析。
4.1 宮縮基線算法效果評估
為了直觀地評估本文設計的基于直方圖和線性迭代的宮縮基線算法的效果,先將其單獨應用于采集的宮縮曲線,估計的基線為基線 2,并與 SRF618 的宮縮基線算法的效果進行對比,SRF618 的宮縮基線算法估計的基線為基線 1,如圖 4 所示。

可以明顯地看出基線 2 比基線 1 的擬合效果更好,主要體現在以下方面:① 在宮縮曲線起始位置,基線 2 的擬合效果很理想,而基線 1 常出現急劇拉高的問題;② 在出現強宮縮、連續宮縮或者胎動的情況下,基線 2 能夠保持高擬合度,幾乎不會隨之產生波動。在本文中,擬合效果更好的基線算法有利于宮縮識別。
4.2 宮縮狀態實時識別算法的實時識別效果分析
本文為了區分宮縮曲線的上升期、峰值期、下降期和間歇期,設置了一條狀態曲線,把上升期、峰值期、下降期和間隙期對應的宮縮點的狀態值分別設為 70、100、50、0。如圖 5 所示,為其中一例宮縮曲線分別在 3 min、4 min、5 min 以及 24 min(最終時)的識別情況,如圖 6 所示為其中另外一例宮縮曲線的最終識別結果,圖中各點被判斷出的狀態由紅色折線標出。

如圖 5 所示,可以清楚地看到,本文開發的宮縮實時識別算法成功實現了對宮縮上升期、峰值期、下降期和間歇期 4 個時期的判別,而且是隨著宮縮信號的實時檢測,算法同時自動進行實時判別。此外,在 40 例數據分析中,宮縮的上升起始點均做出了有效、準確地判斷。這是因為在間歇期轉入上升期時本文設計了嚴格度依次遞增的轉換條件,防止了因母親呼吸等腹部用力的情況在間隙期產生起伏或尖峰而引起的誤判,這在圖 5 中也可以明確看出。

其次,本算法設計了一套緩沖機制,既減少了上升期中短暫下降過程尖峰造成的誤判又可以檢出連續宮縮,如圖 6 所示。再次,結合圖 6 可以發現,即使峰值期出現不斷振動的情況,該算法仍然有良好性能,這是因為本算法有效地利用了時間判據,避免了峰值期振動可能引起的誤判。
由此可見,本文所提出的宮縮實時識別算法能夠實現對宮縮狀態的實時識別。
4.3 宮縮分析算法的整體識別情況分析
為了更全面地評價本文提出的包含宮縮基線、狀態實時識別算法在內的整套宮縮分析算法性能,本文將其應用于采集到的 40 例產時監護檔案數據中進行宮縮波識別,本文的算法記為算法一,對比研究的對象是 SRF618 設備上的宮縮分析算法[13],記為算法二。以具有 30 年臨床經驗的產科專家檢出的宮縮波為金標準,兩種算法檢出的宮縮波為實驗組,得到的統計結果如表 2 所示。其中,已檢表示實驗組的宮縮數,漏檢表示實驗組與金標準相比沒有檢出的宮縮數,錯檢表示實驗組與金標準相比錯誤識別的宮縮數。

但是這個結果不足以精確衡量兩種算法的性能,所以本文進一步考察了算法的敏感度和陽性預測值,如表 3 所示。所謂敏感度,是指實際患病又按篩檢實驗診斷標準被正確檢測出的百分比,反映篩檢實驗對患者確診的能力,在本文描述的是以兩種算法進行檢測的實驗組正確檢出的宮縮數所占真實宮縮數的比例;而陽性預測值是指篩檢實驗檢出的全部陽性例數中真陽性例數所占的比例,反映篩檢實驗結果陽性者患目標疾病的可能性,在本文描述的是實驗組正確檢出宮縮數占所有檢出的宮縮數的比例。

由實驗結果可見,算法一敏感度高于算法二,高達 0.939 9,滿足產科醫生提出的要求,對宮縮上升期和峰值期識別的靈敏度更高,盡量避免了宮縮漏檢。算法一在陽性預測值方面略遜于算法二,分析其原因,雖然本文設置了一系列機制防止錯檢,但由于算法一是實時識別,只能根據前面宮縮點狀態對當前點進行判斷,不可避免會出現錯檢。例如有時候基線忽然抬高時,實時識別無法得知后面點的情況而不能隨之變更基線,容易將其誤判為上升期,進而引起接下來的錯檢。而算法二是非實時的,無法滿足在宮縮信號實時監測的同時實時識別,而是事后基于整體曲線對宮縮波進行識別,所以錯檢相對會少一點。盡管如此,算法一的陽性預測值也僅比算法二低了 0.014 2,達到 0.869 3,再加上高達 0.939 9 的敏感度,有力地說明算法一具有較高的準確度,能夠滿足臨床檢測的要求。
5 結論
本文設計了一套宮縮自動實時分析算法,包括宮縮信號預處理、基于直方圖和線性迭代的宮縮基線估計以及一種基于有限狀態機原理的實時識別算法,通過從形態學上對宮縮 4 個特征段的規律進行歸納,設置一系列狀態轉換條件來實現當前宮縮狀態的實時識別。同時,設置一套緩沖機制來避免偽上升點所導致的大量不真實的狀態轉換。實驗結果表明,本文算法敏感度為 0.939 9,陽性預測值為 0.869 3,具有較高的準確度,能夠滿足臨床監測的要求。并且,本文實時識別算法摒棄了復雜的數學方法,計算效率高,結合臨床意見和數據對算法進行修正,偏重實際效果,對工程應用具有較高的參考價值。而通過臨床試驗不斷改進分析規則來進一步提高算法的準確度是本課題組未來的研究方向。
致謝 本文信號采集和醫學研究得到廣州市婦女兒童醫院婦產科錢學雅博士、廣州市白云區人民醫院婦產科秦如意醫生的幫助,在此致以衷心的感謝。