1. 程式人生 > >OSEA中QRS波檢測演算法

OSEA中QRS波檢測演算法

 

當訊號經過濾波等預處理後,檢測器開始檢測任何一個峰值,這峰包括訊號中的所有峰值。每次檢測到一個峰值,它被分類為QRS波,或者噪聲,或者為了後來的分類儲存它。演算法利用峰值的高度,相對於上一個QRS波的位置,最大斜率來分類這些峰。以下是關於演算法基本檢測規則的一個概要:

1. 忽略較大峰前後至少200ms內的所有峰值。

2. 若檢測到一個峰值,檢檢視看原始訊號是否包含正反斜率,如果沒有,則表示,這個峰代表基線漂移。

3. 若在上一個檢測結果後的360ms內檢測到一個峰,在原始訊號中檢查當前峰值最大斜率是否至少是上一個檢測峰最大斜率的一半。如果不是,這個峰值被推測為T波。

4. 如果檢測峰值超過閾值,則為QRS波,否則為噪聲。

5. 若在1.5倍的RR間期沒有搜尋到QRS波,則取超過檢測閾值一半的峰值為QRS波,且這個峰值在上一個檢測後至少360ms。

峰值檢測函式 Peak,輸入預處理後的訊號,該訊號與上個訊號,以及最大值比較,若超過,更新最大值,儲存當前訊號值,返回0,否則,若低於最大值的一半,返回最大值,Dly 為0,否則,判定當前訊號位置到最大值距離,超過95ms,返回最大值,Dly = 3,除此之外,返回 0。

意思就是,先找到最大值,然後,當輸入訊號降落到最大值一半時,返回這個最大值,即,峰值。

首次檢測到的峰值,我們儲存為TempPeak,同時設定200間距,然後當下個數據檢測時,若非峰值,則間距縮小1.否則,比較峰值跟TempPeak幅度,若超過,則更新間距為200ms,否則,間距縮小。

之所以200ms間距,是因為我們認為檢測到一個R波後200ms內,不需要檢測。當間距縮小到0時,我們認為TempPeak就可能是新的QRS波。

同時,為了T波的識別,以及基線漂移的驗證,我們儲存原始訊號的斜率。

上面4,5提到的閾值計算,是通過QRS峰值和噪聲估算出來的。每當檢測出一個QRS波,這個QRS波被新增在一個儲存了8個最近QRS波峰值的陣列中。同時,每次檢測出一個非QRS波,這個非QRS波也會被新增在一個儲存了最近8個噪聲的陣列中。檢測閾值是根據噪聲和QRS波之間的中間值或者平均值計算的,依照下面的公式:

Detection_Threshold = Average_Noise_Peak + TH*(Average_QRS_Peak  - Average_Noise_Peak)    TH是閾值係數。

類似的,RR間期的估算,也是根據8個之前的RR間期的平均值或者中間值來估算的

之前,通過最近8個值的中間值來估算QRS峰值平均值,噪聲峰值平均值,RR間期平均值。最近當我們用最近8個值的平均值而非中間值執行一個QRS檢測器時,我們發現用平均值提高了效能。雖然如此,當我們掛鉤在軟體中時,用均值卻輕微降低了效能。

心搏探測器必須以一定的初始閾值估計值開始,為了做初始估算,在開始的8個連續的1秒間隔中,找到每個間隔中的最大峰值,這8個峰值被當作是初始的8個QRS波存放在QRS波陣列中,然後我們設定閾值,同時,設定最近的8個RR間期為1s

有一種可能(但罕見),一串大的心室心搏倒置檢測器的閾值增大太多,以致於,之後低振幅的心搏被忽略。實際中,這種情況只發生一條AHA記錄中,MITBIH不存在這樣的情況,為了避免這種情況,當沒有心搏檢測時,檢測閾值以初始化的方式被重置。

當檢測到一個心搏,探測器返回截至當前QRS波之前的所有樣品數量,這樣做,是因為檢測延遲不同。若按上面4規則檢測,則檢測延遲是濾波器延遲,移動視窗積分寬度,對應規則1中200ms延遲的總和,總計為395ms。如果是通過回查檢測出的QRS波,則對應的延遲是這個延遲,加上一半的RR間期。所以檢測延遲很容易不同,從395ms到1s

許多心電監護儀程式要求比我們的檢測器更短的檢測延遲。相對較長,可變的延遲,在有些地方容易產生問題。例如,一個病人的心率跡象檢測,應該是跟手腕處感覺到的脈衝非常同步的(接近0.25s)。如果回查程式通過不報告檢測結果的方式忽略的話,演算法會產生一個固定延遲。如果這樣做,應該調整檢測閾值,QRS檢測演算法的識別度和敏銳度仍然接近99.7%。

不帶有回查程式的演算法有一個固定的395ms檢測延遲,大多數這種延遲的發生,是因為每檢測到一個峰,演算法等待200ms以確保這個峰不是跟隨在QRS不應期中較大峰後面。

早期版本簡單忽略了QRS峰後面的200ms內的所有峰值,這允許大P波被檢測為QRS波(108檔案),而後來的QRS波被忽略,因為它出現在QRS波後200ms內的不應期。為了復位QRS波後200ms空白延遲,在QRS檢測標頭檔案中定義包含如下:

#define POST_BLANK

忽略了回查,恢復QRS後200ms空白延遲,在降低敏銳度和識別度的情況下減少檢測延遲到195ms

根據檢測閾值的調整,將錯鍵調到最小的情況下,敏銳度下降到99.2%,識別度下降到99.5%。一個更接近短檢測延遲的演算法是用完整檢測演算法來設定閾值,作為一個簡單,短延遲方案。