當進入緊急模式時,可重置區將把監測模組置換成壓縮模組;壓縮模組的功 能就是將心電圖訊號作壓縮的動作,以此減小對儲存裝置的需求或是傳送的可靠 度與接收端的負荷。我們選用以離散小波轉換(Wavelet Transform Discrete)為基礎 的訊號壓縮架構,小波轉換可以用於原始數據(例如圖像),然後將轉換後的數據編 碼,得到有效的壓縮,如圖 3.3.1 所示。此架構也被廣泛使用在一些生理訊號的處 理上[27]。
圖 3.3.1 離散小波轉換壓縮架構[27]
壓縮模組的主要功能有兩個 : 小波轉換與 Run-Length 編碼,以下子節將先說 明這兩個方法,然後再介紹模組的設計。
51
離散小波轉換 3.3.1
離散小波轉換(Discrete Wavelet Transform, DWT)是一種具多重解析度的演 算法,它能將資料或訊號分解成不同的頻帶,並針對資料的重要性進行分解。離 散小波轉換可視為把信號經一組濾波器之後的輸出,如圖 3.3.2 所示。
圖 3.3.2 一階離散小波轉換示意圖
[ ]
g n 和 [ ]h n 分別代表離散小波轉換在分解時的一組高通與低通濾波器,↓2 代
表的是降階取樣,經過降階取樣之後,信號長度變為原來的一半。訊號經過小波 轉換後,訊號會被分解成兩個頻帶,分別是高頻 與低頻 兩個部分。以 影像為例,高頻部分通常是影像中較為細微的部份,而低頻成份則是屬於影像中 比較平滑、沒有太大的像素變化的部份,但對於人類的視覺而言,低頻反而是辯 識影像的重點,例如圖 3.3.3 是影像經一階二維小波轉換後的原圖與結果,可以發 現小波轉換後的圖片其最低頻的部份與原圖幾乎相同。
52
圖 3.3.3 圖片經過一階二維小波轉換的處理結果
同樣的,我們將小波轉換運用在心電圖訊號上,如圖 3.3.4 所示,圖 3.3.4 (a) 為原始心電圖訊號,圖 3.3.4 (b)是經過二階一維小波轉換後最低頻部份的資訊,可 以從圖上觀察到,雖然細節的小突波不見了,但波形的趨勢起伏依舊非常清楚,
並不會影響到心律不整的判別。
圖 3.3.4 (a)心電圖原始訊號;(b)心電圖經小波轉換後的低頻訊號
53
傳統離散小波轉換的運算量大,且需要使用不少的硬體資源去實現,為了解 決這樣的問題,1996 年 Sweldens 提出上提式離散小波轉換[28],其主要優點是使 用較少的硬體;以 5/3 濾波器為例,乘法器只需要 2 個,加法器為 4 個,均是傳統 DWT 硬體的一半,且大幅降低計算複雜度。5/3 濾波器上提式小波轉換架構如圖 3.3.5,主要包含三個部分,分別為 Splitting 模組、Lifting 模組、以及 Scaling 模組。
圖 3.3.5 5/3 濾波器上提式小波轉換架構
其中 P(z)與 U(z)由公式 (3.3.1)與 (3.3.2)表示 :
1 1
( ) (1 )
P z 4 z (3.3.1)
( ) 1(1 )
U z 2 z (3.3.2)
54
上提式離散小波的動作步驟,主要是先將輸入 Splitting 模組分解成奇數項及 偶數項,然後將偶數項送入 Lifting 模組的運算單元 P(z),並與奇數項相加得到高 頻係數,之後把得到的高頻係數送入運算單元 U(z),並與偶數項相加得到低頻係 數;最後則是高低頻係數通過 Scaling 模組乘上常數後輸出。
由於一般離散小波轉換是以迴旋積的方式進行計算,所以結果會以實數的資 料型態出現;然而浮點數有一定的精準度,對硬體的實現上也會有其困擾,基於 此 Sweldens 於 1998 年提出了所謂的上提式整數對整數小波轉換[29],在原本的架 構上加入高斯函數(取整函數),將浮點數轉換成整數;如圖 3.3.6 所示,為 5/3 濾 波器上提式整數對整數小波轉換的架構。
圖 3.3.6 5/3 濾波器上提式整數對整數小波轉換架構
55
其轉換公式如公式 (3.3.3)、 (3.3.4) :
Run-Length 編碼 3.3.2
Run-Length 編碼(Run Length Encoding, RLE)是一種簡單的壓縮方法。由於其 方法簡易,因此在壓縮以及解壓縮方面速度都非常快,所以被使用在很多的實際
56
心電圖經小波轉換後能量將會將會集中在低頻,如圖 3.3.8 所示;若再通過閥值的 篩選後,大多數的小波係數都會是零,這恰符合 Run-Length 編碼的要求。
圖 3.3.8 心電圖訊號的小波轉換係數
模組設計 3.3.3
圖 3.3.9 為壓縮模組的設計架構,主要由四個子模組組成,每個子模組負責不 同的功能,由左而右分別是:資料擷取與位移、5/3 整數對整數小波轉換、閥值篩選、
Run-Length 編碼。
57 系統即時(Real-time)處理的設計考量,我們的小波轉換長度取 512 點為一個區 段;我們使用深度為 1K 容量的 FIFO(先進先出資料儲存器)儲存輸入訊號,當 它存滿一半即 512 點資料時,控制電路會至 FIFO 依序取走 512 點資料進行後 續處理。
2. MIT-BIH 提供的心電圖一筆資料是以 12 位元表示,但實際用到的位元只有 11 位元,所以可以表示的範圍是[0, 2047];但這個範圍的值在計算方根誤差百分 比(Percent root-mean-square Difference, PRD)時,可能會獲得過低且不夠客觀的
58
評估,為了解決這樣的疑慮,而我們必須將所有值都減去 1024,將數值範圍 平移至[-1024, 1023]。另外,經過平移後的數值範圍在處理上也可以減少硬體 的資源。
圖 3.3.10 所示為實際設計的電路圖。圖 3.3.11(a)為原始的心電圖訊號,圖 3.3.11(b)為經過平移後的心電圖訊號。
圖 3.3.10 資料擷取與位移模組設計圖
圖 3.3.11(a)原始心電圖訊號;(b)平移後的心電圖訊號
59
5/3 整數對整數小波轉換 3.3.3.2
我們壓縮模組的核心是四階的 5/3 整數對整數小波轉換,它具備一般離散小波 轉換的優點,且適合被實現在硬體架構上;選擇四階是配合我們選取的資料長度 512 點而定,經過模擬的結果顯示,四階的小波轉換擁有較高的處理效率。我們先 說明一階的 5/3 小波轉換的設計,如圖 3.3.12 所示為一階的硬體架構。
圖 3.3.12 一階 5/3 整數對整數小波轉換硬體架構
輸入訊號X n[ ]經降低取樣後取得偶數點X n 與奇數點e[ ] X n ,為了對準訊號o[ ] 點的位置,兩訊號同時經過一個單位的延遲;之後X n 與延遲一個單位的e[ ] X n 相e[ ] 加(即X[2 ]n 與X[2 +2]n 相加),將結果乘上常數( 1/ 2 )並通過高斯函數取整數,再 把輸出加上經過一個單位延遲的X n (即o[ ] X[2n1]),相加的結果即為公式 (3.3.3) 描述的高頻係數X [n]。接下來H X [n]與延遲一個單位的H X [n] 相加,然後加上常H
60
數(2)並乘上常數(1/4)後通過高斯函數取整數,其輸出與X[2 ]n 相加即是公式 (3.3.4) 所描述的低頻係數 X [n]L 。圖 3.3.13 為一階 5/3 整數對整數小波轉換的實際設計 圖。
圖 3.3.13 一階 5/3 整數對整數小波轉換設計圖
在完成一階 5/3 小波轉換的設計後,我們將其規劃成子模組,如圖 3.3.14 所 示為子模組的接腳圖;X[n]為上一級子模組的輸出低頻係數,En 為其有效信號,
X [n]L 與 X [n]H 是此模組的低頻係數與高頻係數,En_L 與 En_H 分別為其有效訊號。
接下來我們只需將 4 個一階 5/3 小波轉換做適當的連結,即可完成四階 5/3 小波轉 換的設計。
圖 3.3.14 一階 5/3 小波轉換模組接腳圖
61
圖 3.3.15 所示為四階 5/3 整數對整數小波轉換的設計圖,每個一階 5/3 小波轉 換(黃色方塊)輸出低頻係數與其有效信號,作為下一階的輸入;另外為了整併所有 子模組輸出的小波係數,我們將所有有效的小波係數的輸出連結到同一個多工器 (Mulitplexer)(橘色方框),並將小波係數輸出的有效信號依子模組的階序進行編號 (紅色方框),以此作為多工器的選擇線。整併完小波係數,由於子模組的小波係數 輸出在時間上並不會重疊產生,所以我們將子模組所有有效信號連結到同一個或 邏輯模組上,以此作為完整的小波係數的有效信號。
圖 3.3.15 四階 5/3 整數對整數小波轉換設計圖
圖 3.3.16 為小波係數的結果,由上而下分別是 256 點的X [n]H1 、128 點的 XH2[n]、64 點X [n]H3 、及 32 點的XH4[n]和X [n]L4 。
62
圖 3.3.16 四階 5/3 整數對整數小波轉換係數
閥值篩選 3.3.3.3
為了減少小波係數傳送的個數,以此提高壓縮比率,所以我們要藉由訂定閥 值的方式,去篩選出能量高的小波係數進行傳送,並兼顧高的訊號重建率。經過 模擬不斷的測試,我們訂定了符合上述需求的閥值公式,如公式 (3.3.5)所示。
其中 X 為小波係數,L 為小波轉換的階數, 為取整函數。原本在公式 (3.3.5) 中存在的對數運算(log),對硬體的設計上會稍嫌複雜,但由於其最終經過一個取 整運算,也就是說我們並不需要求出對數運算(log)的精確值,這在設計上將精簡
(max( ) ( 1))
log 2
2
X L
(3.3.5)
63
許多。所以我們僅需設計一個查找表,然後視取整函數內的數值範圍,輸出一個 預先定義的值即可。圖 3.3.17(a)為未經閥值篩選的小波係數,圖 3.3.17(b)為經過 閥值篩選的小波係數,可以發現一些能量比較小的係數都已經被過濾掉了。圖 3.3.18 為閥值篩選模組設計電路圖。
圖 3.3.17(a)原始的小波係數;(b)經過閥值篩選的小波係數
圖 3.3.18 閥值篩選模組設計圖
64
Run-Length 編碼 3.3.3.4
在小波係數經過篩值後,我們要進入最後的階段 Run-Length 編碼,此步驟是 真正的降低需要傳送的小波係數個數。由於我們在篩值階段將能量低的小波係數 都設定成零,這將讓我們的編碼效果更好。圖 3.3.19 為 Run-Length 編碼的 ASM 圖,概念其實很簡單,就是當輸入為非零時,由於無須編碼所以將值直接輸出;
而當輸入為零時,必須啟動計數器的功能,只要接下來的輸入仍為零,則計數器 持續進行計數,直接接收到非零的值時,模組依序輸出計數器的值、零、與當下 的值,最後回到初始狀態並將計數器歸零。由於系統在設計上是以即時(Real-Time) 處理為考量,所以事實上上述描述僅說明了模組設計的概要,實際上還要考量一 些關於時間的細節問題。詳細設計可以參考圖 3.3.20 所示的 Run-Length 編碼完整 的設計圖。
65
圖 3.3.19 Run-Length 編碼 ASM 圖
圖 3.3.20 Run-Length 編碼模組設計圖
66