1k likes | 2.29k Views
生醫訊號處理概論 光體積變化描記圖 (PPG). 組長 : 王宥程 組員 : 石正邦 曾志翔 李育賢. 大綱. PPG 訊號之簡介 PPG 訊號測量的方法 PPG 訊號處理的目的 PPG 訊號處理的流程 PPG 訊號處理的方法 PPG 訊號處理的結果 結論 心得. PPG 訊號之簡介.
E N D
生醫訊號處理概論光體積變化描記圖(PPG) 組長:王宥程 組員:石正邦 曾志翔 李育賢
大綱 • PPG訊號之簡介 • PPG訊號測量的方法 • PPG訊號處理的目的 • PPG訊號處理的流程 • PPG訊號處理的方法 • PPG訊號處理的結果 • 結論 • 心得
PPG訊號之簡介 光體積變化描記圖(Photoplethysmography,PPG)信號能夠幫助瞭解人體末稍血液循環情況,以及提供一個更簡單的非侵入式生理信號量測方式,PPG信號除了有著容易取得與較不受人體型態限制之優點外,本身也蘊藏著 豐富的生理資訊,但是與PPG波形相似的脈波(pulse)信號兩信號間之相互關係,一直以來卻都未有深入之研究。
PPG訊號處理的目的 • PPG產生雜訊原因:人為雜訊(手亂動) • 頻率範圍:0~30HZ • fs(取樣頻率):1024Hz
頻譜分析 • 始射點U (UP Stroke) :血液流入動脈的開始點,反映出心臟舒張末期血管內的壓力與容積,代表心室快速射血。 • 主波峰P (percussion wave) :主要由心臟收縮時期,心室釋放大量血液所造成最大振幅波。此波上升速度受心輸出量、心室射血速度、動脈阻力和管壁彈性影響。 • 潮波T (tidal wave) : 此波為左心室停止射血,動脈擴張造成壓降,動脈內血液流動逆向反射波。 而此波受外週血管阻力、血管彈性及降支下降等變化程度的影響有關。 • 降中波V (valley):表示主動脈靜壓排空時間,為心臟收縮與舒張的分界點,波形影響受血管阻力和降主動脈下降速度有關。 • 重搏波D (dicrotic wave):主要是由主動脈瓣在心室舒張早期突然閉合,血液逆流撞擊到主動脈上,並回彈導致主動脈壓再度上升所形成的波,受血管彈性與主動脈瓣關閉狀態影響較大。
PPG訊號處理的方法 • MATLAB程式碼 clc clear all close all signalPPG = csvread('ch3.csv'); fs=1024; N2=length(signalPPG); t = (1:N2)/fs; figure(1) plot(t,signalPPG) xlabel('Time (sec)'); ylabel('Amplitude') title('Original Signal') xlim([-inf inf]);
PPG訊號處理的結果 基線飄移 fs=1024; signalPPG_detrend = detrend(signalPPG) N2=length(signalPPG_detrend); tc = (1:N2)/fs; T=1/fs; fd=1/(N2*T); m=0:N2-1; fy=m.*fd; fy_1=fy(1:(length(fy)/2));
快速傅立葉轉換 -FFT y_fft=fft(signalPPG_detrend); % figure (2) subplot(211) plot(fy,abs(y_fft)) title ('Magnitude spectrum of signals') xlabel('Frepuency(hz)') ylabel('Magnitude') % subplot(212) plot(fy,angle(y_fft)) title('Phase spectrum of signals') xlabel('Frepuency(hz)') ylabel('phase')
窗函數(window) hamming window PPG_detrend2 = length(signalPPG_detrend) PPG_hamming1 = hamming(PPG_detrend2) PPG_hamming2 = signalPPG_detrend.*(PPG_hamming1) figure (5) subplot(211) plot(PPG_hamming1) subplot(212) plot(PPG_hamming2) figure (6) freqz(PPG_hamming2,1,1024)
hanning window PPG_detrend3 = length(signalPPG_detrend) PPG_hanning1 = hann(PPG_detrend3) PPG_hanning2 = signalPPG_detrend.*(PPG_hanning1) figure (7) subplot(211) plot(abs(PPG_hanning1)) subplot(212) plot(PPG_hanning2) figure (8) freqz(PPG_hanning2,1,1024)
blackman window PPG_detrend4 = length(signalPPG_detrend) PPG_blackmanharris1 = blackmanharris(PPG_detrend4) PPG_blackmanharris2 = signalPPG_detrend.*(PPG_blackmanharris1) figure (9) subplot(211) plot(abs(PPG_blackmanharris1)) subplot(212) plot(PPG_blackmanharris2) figure (10) freqz(PPG_blackmanharris2,1,1024)
triangular window PPG_detrend5 = length(signalPPG_detrend) PPG_triangular1 = triang(PPG_detrend5) PPG_triangular2 = signalPPG_detrend.*(PPG_triangular1) figure (11) subplot(211) plot(abs(PPG_triangular1)) subplot(212) plot(PPG_triangular2) figure (12) freqz(PPG_triangular2,1,1024)
濾波 開檔 加入市電60Hz 基線飄移 FFT 加窗 慮波 波德圖
加入市電60Hz fs=1024; N2=length(signalPPG); tc = (1:N2)/fs; signalPPGe=signalPPG+sin(2*pi*60+tc)';
基線飄移 fs=1024; signalPPG_detrend = detrend(signalPPGe) N2=length(signalPPG_detrend); tc = (1:N2)/fs; T=1/fs; fd=1/(N2*T); m=0:N2-1; fy=m.*fd; fy_1=fy(1:(length(fy)/2));
巴德沃斯濾波 [n,Wn]=buttord(30/(fs/2),60/(fs/2),1,60) [n1,Wn1]=buttord([1 30]./(fs/2),[0.5 55]./(fs/2),1,10) [n2,Wn2]=buttord(1/(fs/2),0.1/(fs/2),1,60) [b1,a1]=butter(n,Wn); [b2,a2]=butter(n1,Wn1); [b3,a3]=butter(n2,Wn2,'high'); yt1=filtfilt(b1,a1,signalPPG_detrend); yt2=filtfilt(b2,a2,signalPPG_detrend); yt3=filtfilt(b3,a3,yt1);
Cheby1sev 型 I 濾波 [n,Wn]=cheb1ord(30/(fs/2),60/(fs/2),1,60) [n1,Wn1]=cheb1ord([1 30]./(fs/2),[0.5 55]./(fs/2),1,10) [n2,Wn2]=cheb1ord(1/(fs/2),0.1/(fs/2),1,60) [b1,a1]=cheby1(n,1,Wn); [b2,a2]=cheby1(n1,1,Wn1); [b3,a3]=cheby1(n2,1,Wn2,'high'); yci1=filtfilt(b1,a1,signalPPG_detrend); yci2=filtfilt(b2,a2,signalPPG_detrend); yci3=filtfilt(b3,a3,yci1);
Cheby1sev 型 II 濾波 [n,Wn]=cheb2ord(30/(fs/2),60/(fs/2),1,60) [n1,Wn1]=cheb2ord([1 30]./(fs/2),[0.5 55]./(fs/2),1,10) [n2,Wn2]=cheb2ord(1/(fs/2),0.1/(fs/2),1,60) [b1,a1]=cheby2(n,60,Wn); [b2,a2]=cheby2(n1,60,Wn1); [b3,a3]=cheby2(n2,60,Wn2,'high'); ycii1=filtfilt(b1,a1,signalPPG_detrend); ycii2=filtfilt(b2,a2,signalPPG_detrend); ycii3=filtfilt(b3,a3,ycii1);