Download - 04_生醫訊號分析思考與實現
生醫訊號分析思考與實現
台科大醫工所 許昕[email protected]
分析主題 ECG 之時域分析 PPG 之頻域分析 低 SNR 之演練: LDF 之時域分析 待分析數據:由老師提供給大家演練
– ECG+PPG+LDF
都是大學問– 演算法層面:要能作得出來、有效率– 生理層面:要有實質意義
1. ECG 之時域分析
For what purpose?– 抓取 R peak
– 切出每一 heartbeat
– 協尋其他小 peak
– 協助其他訊號抓取特定點• Ex: 血壓脈波之 foot or peak
– Time-averaging 的對齊點• 可提升 SNR
需要做什麼事?
1-1 通道分離 [HWECG-1]
將不同 channel 的數據分開 因為在 AD 的數位檔案中,各 channel 為混雜排列 每隔” channel 數”個,需予以拆解分離 並觀察各頻道訊號的不同特性
1 2 3 4 5 6 7 8 1 2 3 4raw data
channel 1
channel 2
1 1 1 1
2 2 2 2
分離
1-2 數位高低通濾波
Why necessary?– Interference vs noise ?– 一定分得開嗎?什麼狀況會分不開?– 如果分不開,怎麼辦?
HF LF Peak detection 的影響
數位濾波 硬體的麻煩
– 階數少– 元件需挑選– 多級製作需考慮其他因素,如:阻抗匹配、漏電流影響等
數位比硬體濾波好用– 階數更高– 更易設定– 代價:計算時間、 memory 大小
Ex: 截止頻率為 0.1~50Hz– 主要目的為去除訊號的直流成分與市電 60Hz 的雜訊濾除– 使用帶通濾波器為 Cheb -I 型的濾波器,– 由 45Hz 的 11 階 LPF 與 0.1Hz 的 2 階 HPF 所組成
Matlab 實現 [HWECG-2]
Syntax : y = filtfilt(b,a,x) Description:
– y = filtfilt(b,a,x) performs zero-phase digital filtering by processing the input data in both the forward and reverse directions.
– The resulting sequence has precisely zero-phase distortion and double the filter order.
– filtfilt minimizes start-up and ending transients by matching initial conditions, and works for both real and complex inputs.
請以此函數設計出前述之帶通濾波器
Low-pass filter 舉例
wp=50/(sample_rate/2); – %設定 cutoff frequency
ws=55/(sample_rate/2); [N, Wn]=cheb1ord(wp,ws,-6,-40); [B,A]=cheby1(N,0.5,Wn,‘low’);
– %找出 filter係數 tmps1=filtfilt(B,A,ecg_f);
– 執行 filter
1-3 抓取 R peak :如何進行
抓取 R peak :操作流程 [HWECG-3]1. 算出平均 HR
– How? 時域還未知,所以要用?– 演算法為何?
2. 抓 1st R peak– How?
3. 利用平均 RR length ,設定一 searching window ,找下一 peak– Window 該設多長?– 會造成何限制?
4. 週而復始
抓取 R peak :特殊狀況 [HWECG-4]
如果有怪波形,可能造成 R-peak 誤判,怎麼辦?– 拖很長– 每隔數個,有一個怪波– Motion artifact
– 請設想演算法? 手工檢驗的必要性
– 拿數據較辛苦,分析是較輕鬆的– 永遠無法預料會出什麼狀況– 如何執行檢驗?請寫出演算法
抓取 R peak :錯誤處理
有錯誤的 or 無法判定,該怎麼辦? 排除?
– 如何知道是哪一個 RR interval 出錯 容忍?
– 如何是可接受的方式
HRV (heart rate variability) [HWECG-5]
相鄰兩個 QRS 時間的間距代表著心跳週期,將各個 QRS 時間間距組合而成之時間序列即為心率變異訊號。
但是由於每一個 QRS 波觸發的時間間距並不盡相同,因此上述所得到之心率變異訊號為非等時距取樣訊號 (unequal sampling signal)– 然而一般數位訊號處理所採用的分析訊號通常是以等時距取樣訊號
為主– 因此在使用數位訊號處理方法之前必須先將非等時距取樣之心率變異訊號轉變成等時距取樣訊號
將原有之心率變異訊號,以平均心率為單位時間重新取樣,– 每個取樣點的時間間隔為平均心率– 而取樣點的大小值則為相鄰兩個 QRS 波的時間間距 (R-R interval
length)
– 經過重新取樣之後即可得到等時距取樣的心率變異訊號
HRV 頻譜 得到心率變異訊號後,再進行功率頻譜密度的演算 功率頻譜密度圖形分成三個頻域區段1. 極低頻能帶 (VLF) 之頻率介於 0.01~0.04Hz
– 與體溫調節及血管收縮有關。2. 低頻能帶 (LF) 之頻率介於 0.04~0.15Hz
– 能夠反應出交感神經與副交感神經的活動情形– 交感與副交感神經彼此互相影響,是一種拮抗作用,當交感神經處於較興奮的狀態下,低頻能帶能量會有增加的現象,故低頻頻帶之能量變化是交感神經活動情形的指標。
3. 高頻能帶 (HF) 之頻率介於 0.15~0.4Hz– 與呼吸頻率及活動有關– 且呼吸活動會受到副交感神經的調節,所以高頻能帶之變化能反映出副交感神經的活動。
HRV 實際執行 通常需 200-500 個 pulse ,以逼近滿足無窮長數列之假
設– FFT 可採用 256 or 512
頻譜轉換可使用 FFT 得出 積分得到三頻帶 power spectral density 比較方式
– 絕對值– 相對比較: Ex, HF/LF
2. PPG 之頻域分析
時域分析的用途: PTT (pulse transit time)– 高血壓– 動脈硬化
時域的分析帶給我們直觀及訊號變化的流程– 缺點:時域波形易受振幅及雜訊的干擾– 如峰值的估算位置及 Aix(Augmentation index) 的誤判等
在頻域上的訊號與雜訊較易被區隔
Why 執行頻域分析 1
動脈血壓波形各諧波的能量強度分布情形– 可對應至不同血管床之血流推力– 可協助評估各重要器官的生理運作狀態
Why 執行頻域分析 2
PPG 訊號與血壓脈波之頻域諧波成分具有相關性
血壓脈波波形分析之生理意義 處理血壓波形,可反映較多特性
– 98% vs 2%
– 西瓜偎大邊 血壓波長長,量一處即可反映全身
– Global other than local
– 適於非侵入量測診斷– 對干擾之耐受力高
共振之啟示
BP信號近似週期性 週期信號就有 harmonics Harmonics 有其重要生理意義
– 代表推血進入器官的動力 Phase angle 也有其生理意義
– 血管硬化的指標
BP信號之特性
Quasi-periodic 該採用何種信號處理方式?
– traditional
– Modern modeling
– Adaptive
FT+segmentation may be quite good,– and may be the most appropriate.
– Why?
Advantages of FFT
Easy to implement Fast, efficient Suitable for determining harmonic power Phase information are not loss.
頻域 vs 諧波分析之不同
相似:皆是頻率域– 主要 tool 都是 FFT
執行對象之不同– 頻域:整串數據– 諧波:需針對每一 heartbeat 週期,各自執行 FFT ,再予以平
均 特性之不同
– 振幅: Blunt vs sharp
– 相位:哪一個比較清楚、穩定– 哪一種訊號適用諧波分析 rather than 頻域分析
• 心血管、神經、呼吸、語音?
BP量測規格之選擇
Based on “facts”. 取樣頻率
– Amplitude 頻域分佈– Phase angle 解析度
線性度– Amplitude 頻域分佈
AD 位數– min. amplitude / whole span
諧波分析執行流程
原始資料解碼 分離通道 帶通濾波
將 BP 、 PPG 、ECG 進行快速傅利葉轉換
將 BP 、 PPG 、ECG 的最低點挑出
計算 BP 與PPG 各諧坡能量
計算 BP 與PPG 各諧坡相位角
計算各項時域參數 輸出檔案
2-1 切波
可用 ECG 協助 [HW-PPG1] R-peak往後設定一個 searching window 找最低點 (foot)
– Why not peak?
– 如何設定此範圍 [HW-PPG1]• 設定錯會怎樣?
找不到的處理:與前述 ECG類似– 一個個檢查– 內插 or 丟棄
與 R-peak 找尋之不同
Foot 點不像 R-peak那麼清楚易辨識– R-peak 很尖– Foot只是相對低點
使用 minimal ,易發生找點之錯誤– Any better solution?試想演算法 [HWPPG-1]
一些怪現象– 放電過程拖很長– 每隔數個,有一個怪波– Motion artifact
如何確認正確 [HWPPG-1]
若無 ECG 協助:必須自立更生 [HW-PPG2]
類似 ECG 找尋 R-peak
1. 算出平均 HR
2. 抓 1st R peak
3. 利用平均 HR ,設定一 searching window ,找下一peak
4. 週而復始
差異在哪?– Hint: 前頁重點
2-2 各自頻域分析 [HW-PPG3]
需先切好波,標出切波時間點 各 foot 點之間,即為一 PPG 脈波 諧波分析:各脈波皆可執行 FFT 所有脈波之結果,可計算其 mean 與 SD
– Magnitude 與 phase angle皆可執行– 與整串分析的結果會類似
請與整串分析作比較 [HW-PPG3]
會有什麼問題要處理?
DC fluctuation– 表現在脈波的什麼部分?– 如何處理
異常波形怎麼辦?– 與 HW-ECG4類似– 手工檢驗的必要:逃不掉
DC fluctuation 的處理
頻域處理: HP filter [HWPPG-3]– 可將整筆數據拉平– 缺點:個別脈波的異常狀況,有時會被掩蓋
時域處理– 將脈波之前後點拉平– 缺點:若波動太大,拉平動作會造成波形之 distortion
– 缺點即是優點:可得知波形波動的劇烈程度
3. LDF 之時域分析
LDF 之訊號特性
與 ECG, BPW 同樣為 quasi-periodic– 可使用 FFT 等頻域分析技術
擷取頻率低– 最快機器為 40Hz
– 頻譜可用範圍小 波形品質差
– 來自於散射模型– 脈波之間變異大、雜亂無章
碰到困難,如何解決?
難以切波– 可用別人來幫忙– Which parameter is appropriate?
頻域分析意義低– 時域可能較具意義
血流時域波形之生理意義 血流是經由動脈血壓推力,使血液經由小開口噴出至末端
組織 每一 LDF 脈波波形,皆可代表 heartbeat推出血流之特性 Key problem: 要如何得到每一個脈波,才能有效決定這些參數值
執行流程
1. 切波2. 縱軸正規化3. 橫軸對齊平均4. 得到一個平均波形
– 即可計算各參數
1. 切波 [HW LDF-1 for 2 weeks]
需藉助其他訊號的協助– 要有能清楚辨視切點的訊號– Such as?
執行方式:類似 PPG藉助 ECG 協助的方式 (HWPPG-1所述 )
R-peak往後設定一個 searching window 找最低點 (foot)– 如何設定此範圍
2.縱軸正規化
定義各 pulse 的振幅– Max-min
將所有 pulse 的振幅,皆 normalize 至 100%– 消除波形之縱方向差異
3. 橫軸對齊平均
依照對齊點,將所有 pulse 進行平均 Q1 :對齊點是什麼? Q2 :若每個 pulse 不一樣長怎麼辦?
– 後面可補 0
Why適用?– 數學上:不影響後續平均– 生理上:後段 diastolic period 血流通常逐漸下降
最早於 2006年發表,全球首先提出 DCflux :血流直流值 ACflux :血流脈波值 PW :血流脈波寬度 (pulse width)
– 可代表微循環小開口之開啟時間比例 FRT :爬升時間 (flow rising time) FDT :低點延遲時間 (foot delay time)
– 可反映末端阻力
4. 得到一個平均波形:可計算各項參數