• 沒有找到結果。

心電圖特徵描繪演算法的目標是找出 QRS 波群(QRS complex)、P 波與 T 波。由於這些特徵波分別代表心臟的電生理活動資訊(如圖 1-1 所示),因 此藉由判斷特徵波的異常與否便能快速檢測心臟的健康狀況。

P 波為心臟電生理活動的起始,表示心房去極化(Depolarization),也就是 組織收縮。QRS 波群代表心室的去極化,此時左右兩個心室分別要將血液輸 出至肺部與全身。而因心室的纖維較粗、收縮力道較大,因此在心電圖上是 最明顯的特徵。T 波代表心室的再極化(Repolarization),即心室的舒張,其波 形的振幅通常較 P 波來的大。

其中 QRS 波群中的 R 波持續時間短,振幅通常是所有特徵波中最大的。

因此許多心電圖的特徵描繪演算法都會以先找到 R 波為基礎,再從各個 R-R 區間內找其他的特徵波。而本研究所提出的特徵描繪演算法也是如此,且 分析的訊號是屬於第二導程(Lead II),但分析的訊號片段是由第二章所提到 的電極接觸雜訊處理演算法所決定。

3-1 QRS 波群偵測

本研究在 R 波偵測的部分,是以 Jiapu Pan 與 Willis J. Tompkins 於 1985 年所提出的演算法[12]為基礎(以下稱其為 Pan-Tompkins 演算法),並校正 R 波波峰的定位與閥值過濾,且透過 k-means 分群演算法來區別異常的 R 波 或偵測錯誤的點。而 Q 波與 S 波則是在找到 R 波波峰後,從其左右兩側向 外搜尋最低點。QRS 波群完整的偵測流程如下圖 3-1 所示

圖 3-1. QRS 波群偵測的流程圖

3-1-1 R 波偵測

Pan-Tompkins 演算法的架構可分為三個階段:線性濾波(Linear filtering)、

非線性轉換(Nonlinear transformation)、決策演算法(Decision rule algorithm)。

在經過線性濾波後,可以降低心電訊號受到的干擾與相對的凸顯出 QRS 波 群的特徵;而非線性轉換的部分則是為了定出 QRS 波群的位置;最後再透 過決策演算法來尋找正確的 R 波波峰。而由於決策的部分採用迭代的方式 處理,因此更容易實現為即時(Real time)處理的演算法而 Pan-Tompkins 演算 法的處理流程圖如下圖 3-2 所示

圖 3-2. Pan-Tompkins 演算法的流程圖

接下來本論文將更詳細的說明 Pan-Tompkins 的處理流程與本論文在實 作上修改的部分。然而 Pan-Tompkins 的論文並沒有提供原始碼,為方便比 對,本論文是以 Hooman Sedghamiz 所寫的 Matlab 程式碼[27]為基礎,改由 Python 語言實作出自己的版本。而圖 3-2 中的流程從 Filtering 至 Fiducial mark 可以與圖 3-3 的處理結果對照。

(a)

(b)

(c)

(d)

圖 3-3. Pan-Tompkins 演算法各步驟的處理結果

(a) 原始訊號;(b) 經濾波處理;(c) 經微分處理;(d) 經平方處理

(e)

(f)

(g)

(h)

圖 3-3(續). Pan-Tompkins 演算法各步驟的處理結果

(e) 經移動平均處理;(f) 對位標記;(g) 決策流程;(h) 偵測結果

 線性濾波:

波器使此頻帶的訊號凸顯出來。而原論文為了利用微處理機實現即時處理的 演算法,需要將浮點數運算(Floating-point arithmetic)轉為整數運算(Integer arithmetic),因此採用了透過在 z 平面上作極零對消(Pole-zero cancellation)設 計而成的遞迴式濾波器。但由於原論文使用 200Hz 的取樣頻率,無法直接設 遲(Zero-phase)的結果。(見圖 3-3(b))

 非線性轉換:

而這裡的微分方式是五點差分(Five-point derivative),其轉移函式為 )

圖 3-4. 五點差分濾波器的頻率響應 2. 平方(Squaring)

平方的作用不僅是將所有負數轉為正數,也使得訊號被非線性的放大。

由於訊號經過微分後,高頻的成份會被放大,使得我們能夠從斜率變化去分 辨出高頻與低頻成份的差異。而經過平方後,則是能直接強化振幅方面的差 異,使得 QRS 波群與其他特徵更容易分辨。(見圖 3-3(d))

3. 移動平均(Moving average)

經過上述的微分與平方的處理後,QRS 波群的位置已經凸顯出來。然而,

因為後續需要作極值的搜索,為減少區域極值造成搜索的困難,此時還須透 過移動平均濾波器將經上述幾項步驟處理過的訊號作平滑化。

但是移動平均濾波器的窗口大小必須適當,理想的結果是在訊號經過移 動平均濾波器後只有 QRS 波群的位置會被圈選出來。如果窗口太大,有可 能使得兩個 QRS 波群被圈選在同一個區塊,使得後續偵測的流程無法辨識;

若窗口太小,則無法良好地做到平滑化的效果,使得做極值搜索時可能錯誤 地找到區域極值。在原論文中,作者在取樣頻率為 200Hz 的情況下,使用的

(American Heart Association, AHA)上發表的文章[28]判斷,健康成人的平均 QRS 波群的最大寬度可達 110ms 以上,因此也將移動平均濾波器的窗口大 小設為 150ms。處理結果請見圖 3-3(e)。

 決策演算法:

1. 對位標記(Fiducial mark)

觀察圖 3-3(b)與(e),可以發現訊號經過移動平均濾波器處理後產生的輪 廓確實能夠將 QRS 波群圈選出來。然而,我們還需要從這些輪廓裡找到實 際的 R 波波峰。由於訊號在經過平方的處理後,所有數值皆大於或等於 0,

因此使用移動平均濾波器時,只要其窗口內涵蓋 QRS 波群的範圍增加,移 動平均濾波器的輸出便有增加的趨勢;反之,則輸出結果會有下降的趨勢;

而當窗口完全涵蓋 QRS 波群但沒有觸及其他非 QRS 波群的訊號,則移動平 均的輸出會保持固定。這樣的現象如下圖 3-5 所示

圖 3-5. QRS 波群與移動平均濾波器窗口的位置關係[12]

因此,我們可以確定 QRS 波群會位於移動平均濾波器輸出結果的上升 邊緣至平坦區之間。所以,要找到 R 波波峰,可以先尋找經過移動平均濾波 器處理後的結果的最大值,再進一步做定位即可。

要找到各個 QRS 波群外框(即圖 3-3(e)中各個凸起的波形)的最大值,

並不能直接搜索整段訊號。因為這項步驟要處理的問題為:在一個具有多個 數值接近但不盡相同的最大值的數列中,找出所有最大值的位置。在 Pan-Tompkins 的論文中沒有詳細敘述此步驟的實作;Hooman Sedghamiz 則是利 用 Matlab 中的 findpeaks 函數來逐步搜索;而本論文的實作架構與 Hooman Sedghamiz 的版本類似,僅有修部份處理流程。

findpeaks 函數的原理是:逐步比對資料點,當資料點數值比前一個小時,

表示找到極值。但由於訊號有許多起伏,直接利用這種概念處理的話,會找 到非常多不是我們要找的結果。因此還需配合其他手段來處理,在 findpeaks 中有兩個主要的處理方式:

1. 僅搜尋數值大於給定閥值以上的資料

2. 搜索到一個極值後,此點位置至少和上一個被搜索到的極值有一定 的距離,否則不計

而本論文採用的方式與 Hooman Sedghamiz 相同,由於每個人心室收縮 的力道不盡相同,使得 R 波振幅也不一樣,所以僅使用上述的第二個方法來 處理。但考慮到心臟有異常活動的心率(Heart rate)範圍,目前以房室結迴旋 性 頻 脈 (AV nodal re-entry tachycardia, AVNRT) 的 情 況 最 高 可 能 達 到 280bpm(Beats per minutes)的速率,因此設定以 300bpm 為可能偵測到心率的 最高上限,也就是每個被搜索到的最大值之間距離至少要大於 200ms。(如 下式所示)

(bpm)

300

f  300/60(beat/sec)5(beat/sec)

(3-3) f

T 1/  1/5(sec/beat)200(ms/beat)

如此,便能大幅減少搜尋到非 QRS 波群外框的最大值。(見圖 3-3(f))

但後續仍要過濾此步驟找到的結果,才能找到真正對應 R 波波峰的標記。

此處理流程是將上一步驟所找到的標記一個個地依序處理,每一次的處 理迴圈內容如下方圖 3-6 所示。由於 Pan-Tompkins 原文僅有流程介紹,所以 實作方面會因人而異。而本論文在這部分的演算法是前述 Hooman Sedghamiz 所著的程式碼改良的版本,圖 3-6 的流程即分析自其程式。接下來會說明各 個步驟與本論文修改的部份,其中符號與對應的意義如下表所示

表 3-1. Pan-Tompkins 決策演算法中各符號之意義

符號 意義

SIG_BPF 經過帶通濾波器處理的訊號(圖 3-3(b))

SIG_MAI 經過帶通濾波、微分、平方與移動平均處理的訊號(圖 3-3(e)) PKF SIG_BPF 中可能為 R 波的標記,位置與振幅表示為(tf , yf)

PKF’ 同 PKF,但是在往回搜索階段才需找的值

SPKF 當 PKF 被標記為 R 波時的訊號準位估計值 NPKF 當 PKF 被標記為雜訊時的訊號準位估計值

PKI SIG_MAI 中可能為 R 波的標記,位置與振幅表示為(ti , yi) PKI’ 同 PKI,但是在往回搜索(Search-back)階段才需找的值 SPKI 當 PKI 被標記為 R 波時的訊號準位估計值

NPKI 當 PKI 被標記為雜訊時的訊號準位估計值

RRn 距離當前處理迴圈的最近的 RR 區間(由先前的 PKF 算得)

RRnew 目前處理迴圈的 RR 區間 RRavg1 最近的 8 個 RR 區間之平均

RRavg2 同上,但作為暫存空間,用於往回搜索階段 PKI_ARY 儲存 PKI 的陣列,可被用來算 RRavg1

PKIprev PKI_ARY 中最新的點

THR_I1 用於判斷 PKI 是否為 R 波的第一閥值 THR_I2 用於判斷 PKI 是否為 R 波的第二閥值 THR_F1 用於判斷 PKF 是否為 R 波的第一閥值 THR_F2 用於判斷 PKF 是否為 R 波的第二閥值

在 Pan-Tompkins 原論文中,此閥值過濾演算法有三個階段,分為:學習 階段 1、學習階段 2 與偵測階段。 學習階段 1 會利用到訊號前兩秒的片段作 論文沒有詳細說明初始化的數值設定,因此本論文使用與 Hooman Sedghamiz 版本相同的初始化設定,細節如下:

THR_I1 max(SIG_MAI2sec)/3

(3-4) THR_I2 mean(SIG_MAI2sec)/2

THR_F1 max(SIG_BPF2sec)/3 THR_F2 mean(SIG_BPF2sec)/2

其中 SIG_MAI2sec為 SIG_MAI 的前兩秒片段,而 SIG_BPF2sec為 SIG_BPF 前 兩秒片段。但此設定在遇到前兩秒訊號的起伏不大時,可能使得閥值設定的 結果不合理,詳細情形將在第四章說明。然而根據圖 3-1 所示,由於本研究 在偵測 R 波前,會先由電極接觸雜訊處理流程決定要分析的訊號片段。而此 問題的情況與其處理流程中的描述平坦線類似,因此本研究的實作可以避免 此問題的影響。

而學習階段 2 則是初始化用來判斷 RR 區間長度的閥值 RRavg1與 RRavg2。 但因為未行偵測前並無法確定哪些標記為實際的 R 波,因此在初期會先配 合振幅高度的閥值過濾來逐步地記錄可能為 R 波的標記,直到數量大於 8 個 後才會用來計算 RRavg1與 RRavg2

接下來的偵測流程會利用 SIG_BPF 與 SIG_MAI 兩種訊號來判斷輸入點 是否為 R 波。因為移動平均濾波器的遮罩寬度為 150ms,雖然能適當的把各 個 QRS 波群獨立地框選出來,但如果訊號受到較高頻的干擾,可能使得濾 波器的行為無法如圖 3-5 那樣正常地表現。以下配合圖 3-6 說明:

(1) 新的待評估資料輸入:由於可能為 QRS 波群的訊號位置已如圖

相關文件