• 沒有找到結果。

在 訊 號 前 處 理 的 部 分 , 本 研 究 將 針 對 電 力 線 干 擾 (Power line interference/Mains hum)與電極接觸雜訊(Electrode contact noise)作討論。原因 如 1-2 節所述,電力線干擾處理的部分已有許多演算法被提出來,但本研究 的重點在於偵測電力線干擾的頻率;而電極接觸雜訊則是因為在訊號處理領 域幾乎沒有相關的研究發表,所以本研究提出一套演算法來處理,且可以配 合後續特徵偵測的演算法使用。

2-1 電力線干擾頻率偵測

電力線干擾是生醫訊號處理(Biomedical signal processing)中的一個重要 議題。在現代的都市生活模式下,許多測量設備都是電氣化的,而且受測者 通常也都處在有電力線佈置的空間中,所以透過設備擷取的訊號通常都會受 到電力線的干擾。因此,標準的訊號擷取設備都會加上處理這種干擾的電路 與屏蔽設計,以免強度過大的干擾蓋過我們所要擷取的訊號。

但在實際測量時,仍可能會有其他外在的因素,造成電力線干擾在經過 訊號擷取設備的處理後,依然在擷取的訊號中佔有不小的成份。因此,通常 要對生醫訊號的原始資料(Raw data)進行分析前,都會進行數位濾波,讓電 力線造成的干擾降到最低,以利後續處理。

要處理電力線干擾,可以使用陷波濾波器(Notch filter)來針對特定的窄頻 寬進行濾波,但前提是必須知道干擾的頻率為何。以一般居家環境來說,電 力線干擾的頻率主要有 50Hz 與 60Hz 兩種,其與各個國家或地區的發電機 組運轉的頻率有關。

而要判斷訊號所受的干擾頻率為何,通常我們可以使用快速傅立葉轉換

透過 FFT 分析的有效頻率項是從 0Hz 到fs/2Hz。但我們所關注的只有 50Hz 與 60Hz 這兩項,在這樣的目的下,使用 FFT 來分辨電力線干擾頻率並不符 合效益。

圖 2-1. 電力線干擾

2-1-1 Goertzel 演算法

針對這樣的議題,我們可以使用 Goertzel 演算法[17]來分析,這個演算 法在只需要求出少數離散傅立葉轉換(Discrete Fourier Transform, DFT)項時 特別有效率。

以 DFT 的概念來說,要對一訊號作頻率分析,就是求出訊號在各種不同 頻率的基底上的投影量。若訊號 x[n]長度為 N,則以數學式表示 DFT 的結果 X[k]為

-1 0

2

] [ ]

[

N

n

N nk i

e n x k

X

, k 0 ,1 ,2...fs (2-1) 將(2-1)式改寫為摺積(Convolution)的形式[18]:

]

由上方(2-2)式可以看出,DFT 即為訊號 x[n]與一個線性非時變的(Linear time-invariant, LTI)濾波器WNnku[n]的摺積。而若將這個 LTI 濾波器以 z 轉換

] 過尤拉公式(Euler’s equation)將(2-4)式改寫如下

)

2

並且利用連鎖規則(Chain rule)引入暫時的變數 S(z)來重新表示輸入與輸 出的關係 其設為 0,使這個濾波器的響應為零態響應(Zero state response)。

綜合上述結論與數學式,我們便能實作 Goertzel 演算法,以下為虛擬程 式碼(Pseudocode):

表 2-1. Goertzel 演算法的虛擬程式碼 1 // --- definition ---

2 sig: signal series 3 n: signal length

4 fs: sampling frequency 5 ft: target frequency 6

7 k = (int)(0.5+n*ft/fs) 8 omega = 2*pi*k/N 9 cosine = cos(omega) 10 sine = sin(omega) 11 coeff = 2*cosine

12 s0, s1, s2 = 0 // temporary space for saving previous data 13

14 for i from 0 to n

15 s0 = coeff*s1-s2+sig[i]

16 s2 = s1 17 s1 = s0 18

19 real = (s1-s2*cosine) 20 imag = s2*sine

21 mag = sqrt(real*real+imag*imag) // result

至於計算複雜度方面,在給定 K 項欲求得的 DFT 項,對於一長度為 N 的訊號的情況下,根據(2-9)式,Goertzel 演算法的複雜度為O

KNM

,其中

M 表示(2-9-1)式每一次迭代所花費的運算量。而 FFT 則必須視使用的演算法 而定,若以 2 基底-快速傅立葉轉換(radix-2 FFT)來說,則 FFT 的計算複雜度 為O

MNlog2N

回到本節一開始提到「使用 FFT 來分辨電力線干擾頻率並不符合效益」

這點敘述。在不考慮上段所述 M 項的前提下,比較推得的 Goertzel 演算法 與 radix-2 FFT 的計算複雜度;若 Goertzel 演算法要比 FFT 更有效率,則須 滿足以下條件

N 因此,根據(2-10)式,在理論上只要使用 Goertzel 演算法時欲求得的 DFT 項數小於訊號長度取 2 的對數,計算速度就會比直接使用 FFT 來的快。

2-1-2 短時 Goertzel 演算法(Short-time Goertzel algorithm)

然而,在實際處理訊號時,直接使用 Goertzel 演算法來分辨電力線干擾 的頻率會遇到兩個問題:

1. 頻率漂移(Frequency drift):

電力線的頻率並非固定不變的,通常會隨著電廠供電與外界用電之

被分割成越多項,而頻率解析度就越高。

由於存在頻率飄移的問題,而 Goertzel 演算法一次只能算出一項 DFT 項,若指定 50Hz 與 60Hz 作為 Goertzel 演算法要分析的頻率,則算出的數 值將可能不是實際的電力線干擾的成份。如圖 2-3,在大尺度的觀察下,電 力線的干擾頻率約在 60Hz;但是再更進一步檢視時,發現實際上電力線干 擾頻率最強的分佈並不是準確的落在 60Hz 上。

(a)

(b)

圖 2-3. 電力線干擾在頻譜上的分佈

(a) 檢視範圍:0~100Hz;(b) 檢視範圍:56~640Hz

對於此問題,有一個簡易的解法是:用 Goertzel 演算法在 50Hz 與 60Hz 附近多分析數個點,再以個別區域的最大值當作分析結果。雖然電力線的漂 移範圍小,不過當訊號長度變長,頻率解析度就隨之增高,而在同樣的頻率 範圍內需要算出的 DFT 項數就越多,使用 Goertzel 演算法花費的時間就越 多。

(1) 欲求的 DFT 項數的多寡會影響計算時間的長短。在一固定的範圍 內,DFT 各項間距越小,須求的 DFT 項數就越多,而 DFT 的各項 間距即為 DFT 的頻率解析度。

(2) 對於現今大部分生理訊號擷取設備的取樣頻率來說,頻率漂移的範 圍不大(根據美國心臟學會(American Heart Association, AHA)的建 議,以監測為主要用途的心電訊號量測設備,取樣頻率應在 150Hz 以上[21];因此,以±0.5Hz 的頻率漂移範圍來說,在取樣頻率 150Hz 時,造成的誤差約 0.3%)。

因此只要能降低頻率解析度,便能降低 Goertzel 演算法耗費的時間。但 是,直接對訊號降取樣(Downsampling)很容易受混疊現象(Aliasing)影響。所 以,為了達到此目的,應以調整分析的訊號長度為手段。

而本研究根據短時傅立葉轉換(Short-time Fourier Transform)的概念,提 出短時 Goertzel 演算法(Short-time Goertzel algorithm)。此演算法的流程為:

(1) 將訊號以每秒取樣的點數為單位分割,若最後的片段不足一單位,

可以選擇補足至一單位或是捨棄。

(2) 用 Goertzel 演算法分析每單位長度的訊號片段。

(3) 將每一段的分析結果加總。

在流程(1)中,因為是以取樣頻率(1000Hz)的值為單位作分割,所以每一 段訊號頻譜的頻率解析度會固定為 1Hz。也因為此解析度完全涵蓋了頻率漂 移的範圍(±0.5Hz),因此分析的結果不會受頻率漂移影響,而且 Goertzel 演 算法也只需分析 50Hz 與 60Hz 這兩個目標頻率即可。

表 2-2. 短時 Goertzel 演算法的虛擬程式碼 1 // --- definition ---

2 sig: signal series 3 n: signal length

4 fs: sampling frequency 5 ft: target frequency

6 w: desired length of a signal segment

7 goertzel(sig, fs, ft, w): a function implementing Goertzel algorithm 8

9 rem = n%w // remaining 10 dlen = n-rem

11 val = 0 12 cnt = 0

13 for i from 0 to dlen

14 val += goertzel(sig[i:i+width], fs, ft, w) 15 cnt += 1

16 i += width 17

18 val /= cnt // result

2-2 電極接觸雜訊處理

電極接觸雜訊是指因電極與皮膚接觸不良而造成的雜訊。由於目前生醫 訊號的擷取設備多採用接觸式電極,因此訊號的品質難免會受到電極與皮膚 接面耦合穩定度的影響。

要降低電極接觸雜訊的影響,在硬體方面,主要是以改良電極的材質、

幾何形狀為主。過去用於量測心電訊號的電極多採用溼式電極,是於皮膚與 電極之間加入導電膠的方式,降低膚電阻抗(Skin-electrode impedance)與增加 接觸面積,以減少電極與皮膚接觸不穩而造成影響。但由於導電膠的導電性 會隨著時間增加而流失[22],無法長時間維持良好的訊號品質,因此近年十 來逐漸有乾式電極的應用。

穩定度,在使用上確實比濕式電極較方便,也除去了上述的困擾。但也因為 沒有導電膠的關係,不僅膚電阻抗大為提高,接面的穩定度也容易受皮膚上 毛髮的影響而降低[23]。

為維持訊號品質的良好,首要仍為電極的改良。但是在長時間的監控需 求下,要確保訊號不受到電極接觸雜訊的影響仍是個難題。因此在軟體方面,

也需有對應的措施來處理電極接觸雜訊。

2-2-1 電極接觸雜訊的特徵

觀 察 未 經 濾 波 處 理 的 心 電 圖 , 電 極 接 觸 雜 訊 以 突 波 (Spike) 或 斷 點 (Breakpoint)為起始,在其後通常會接著一段平坦線(Flat line)。從實際電極與 皮膚接觸的情況來解釋,突波的出現代表該瞬間電極鬆脫,原因是電極導線 受拉扯或者其他外力因素影響到電極與皮膚的耦合狀況;平坦線則代表電極 與皮膚耦合未穩定,其持續時間與干擾的強弱和訊號擷取電路的穩定時間 (Settling time)有關[23],且電壓數值通常為訊號擷取設備的訊號飽和值;而 斷點的成因與突波類似,只是時間點通常發生於訊號擷取設備正處於要恢復 正常交流耦合(AC coupling)時,或是電極完全脫離皮膚接觸的那一瞬間開始,

所以從圖上可觀察到斷點處即為訊號振幅有極大落差的時間點(如圖 2-3 所 示)。為方便描述,後文對於突波與斷點的情況將只以突波兩字來代表。

而因為電極接觸雜訊的干擾模式不固定,而突波又代表極高頻的干擾,

若使用一般的線性濾波器來處理,會造成嚴重的失真(Distortion),影響後續 的處理。因此,為了避免濾波造成的訊號失真,本研究採用的策略為:找出 沒有受到電極接觸雜訊干擾的訊號片段,提供其兩端點位置給後續的特徵偵 測演算法使用。

圖 2-4. 電極接觸雜訊的特徵

2-2-2 前處理

由於正常的心電訊號特徵在頻域上分佈各有不同,因此要達到上述的策 略,必須改為利用電極接觸雜訊的突波特徵來反向操作。然而訊號可能同時 受到多種不同的干擾影響,因此第一步必須先設法讓區隔電極接觸雜訊與其 他的干擾。所以,訊號會先經過截止頻率為 0.8Hz 與 50Hz 的 4 階 Butterworth 帶通濾波器(Bandpass filter)處理,藉此濾除低頻的基準線漂移干擾與電力線 干擾等高頻的干擾。

經過帶通濾波器的處理後,電極接觸雜訊的特徵會稍作改變(如圖 2-5 所示),而我們後續將根據下述的兩種情況來做處理:

 情況 1:暫態峰

暫態峰(Transient peak)為線性濾波器對於突波與斷點此類變化極快的訊 號所產生的暫態響應。而暫態峰的持續時間與突波的高低和濾波器本身的響 應速度有關。

未經處理訊號中,平坦線的電壓數值通常為於訊號飽和的數值,可 以視為一段單純的直流偏壓(DC bias)訊號。而因為經過低頻截止頻率為 0.8Hz 的帶通濾波器,直流訊號的直流成份會被濾除,因此平坦線的電 壓值會被拉近至 0。

注意,電壓值只是接近 0,並不能保證準確為 0。這是因為心電訊號 中各個特徵波的起伏高低不同,而經過濾除直流的處理後,只能確定整

注意,電壓值只是接近 0,並不能保證準確為 0。這是因為心電訊號 中各個特徵波的起伏高低不同,而經過濾除直流的處理後,只能確定整

相關文件