基于小波變換的ECG信號壓縮及其FPGA實(shí)現(xiàn)
醫(yī)生在判斷心臟方面的疾病時(shí),心電圖ECG(Electrocardiogram)通常是一個(gè)最直接且最有效的判斷依據(jù)。心電圖是利用一維波形來描述心臟搏動時(shí)的電位變化。因此,ECG信號在心血管疾病的診斷和研究中具有重要的參考價(jià)值。醫(yī)生希望能夠?qū)⒉∪说男碾姅?shù)據(jù)全部保存下來,以便對病人不同時(shí)期的心電圖進(jìn)行比較和科學(xué)研究之用。但是心電數(shù)據(jù)的備份和存儲將占用非常巨大的資源,尤其是在便攜式醫(yī)療監(jiān)護(hù)系統(tǒng)中,將直接影響到系統(tǒng)的成本。為此,如何有效地對ECG信號進(jìn)行壓縮和解壓縮,以最大程度地保留原有的信號特征,并達(dá)到盡可能大的壓縮效率是目前研究的重點(diǎn)。本文重點(diǎn)研究了基于小波變換的ECG信號壓縮算法及其FPGA實(shí)現(xiàn)方法,為ECG信號的實(shí)時(shí)壓縮和處理提供一種解決方案。
本文引用地址:http://www.ex-cimer.com/article/201706/349202.htm1 小波變換及其提升模式
自1988年起離散小波變換DWT逐漸成為信號處理中極為重要且強(qiáng)大的工具,原因是其具有以下幾個(gè)顯著的特性:
空間-頻率的位置相似性;能量集中;子頻帶間的相對數(shù)值相似性;易于設(shè)計(jì)反變換。
在數(shù)據(jù)壓縮領(lǐng)域中,DWT已經(jīng)大量且成功的被應(yīng)用在一維信號、視頻壓縮中,而且在近幾年被采納為JPEG2000及MPEG4等視頻的世界壓縮標(biāo)準(zhǔn)。
DWT在應(yīng)用上主要是利用以卷積(Convolution)為基礎(chǔ)的FIR濾波器實(shí)現(xiàn),包括以一對高通與低通FIR濾波器所構(gòu)成的小波分解及合成。以FIR濾波器所建構(gòu)的DWT通常被稱為傳統(tǒng)小波轉(zhuǎn)換,為了讓DWT運(yùn)算更有效率,仍有許多文獻(xiàn)著重于改良其架構(gòu),其中由Sweldens在1996年提出的上提式小波轉(zhuǎn)換是至今較優(yōu)異的一個(gè)。Sweldens已經(jīng)證明了在提升的基礎(chǔ)上可以進(jìn)行整數(shù)集到整數(shù)集的小波變換, 這是提升小波實(shí)現(xiàn)無損壓縮的理論基礎(chǔ)。小波提升算法的基本思想是通過由基本小波逐步構(gòu)建出一個(gè)具有更加良好性質(zhì)的新小波。該方法視DWT為一個(gè)預(yù)測-失真的系統(tǒng),并分別利用分解、預(yù)測及更新三個(gè)部分來完成:將數(shù)據(jù)分為偶數(shù)序列和奇數(shù)序列兩部分;用分解的偶數(shù)序列預(yù)測奇數(shù)序列,得到的預(yù)測誤差為變換的高頻分量;由預(yù)測誤差來更新偶數(shù)序列,得到變換的低頻分量。提升方案如圖1所示。
相較于傳統(tǒng)的DWT,它具有較低的運(yùn)算復(fù)雜度,因此更有利于硬件實(shí)現(xiàn)。
本文采用的是(5,3)提升小波變換,其算法為:
2 小波變換應(yīng)用于ECG數(shù)據(jù)壓縮原理
小波變換的一個(gè)非常吸引人的特征是由粗到精的多分辨分析,即可將信號按不同的分辨率進(jìn)行分解后,再分別進(jìn)行分析處理。將小波變換運(yùn)用于壓縮,是基于小波多分辨分析技術(shù)的。在壓縮時(shí),ECG在不同的尺度下被分解成不同的信號,然后對這些信號分別進(jìn)行壓縮編碼;恢復(fù)時(shí)將這些編碼結(jié)果進(jìn)行解碼,進(jìn)行反變換后形成恢復(fù)信號。編碼方式有很多種,本文選擇的是基于碼本的編碼方式,通過從輸入的數(shù)據(jù)中建立碼書來對信號進(jìn)行編碼,為提高壓縮比率,在建立碼書的過程中會引入量化。本文采取的ECG小波變換壓縮原理如圖2所示。
3 FPGA實(shí)現(xiàn)
基于診斷上的特殊需求,一個(gè)好的ECG壓縮演算法不僅需具有高壓縮率的特性,且必須盡量在被壓縮后的信號中保存有醫(yī)生用來判別病癥的診斷資訊。此外,為了廣泛的應(yīng)用需求,所發(fā)展出來的ECG壓縮演算法應(yīng)具有即時(shí)壓縮的特性。因此,本設(shè)計(jì)研究了該壓縮算法的FPGA實(shí)現(xiàn),以使ECG信號能夠得到實(shí)時(shí)的壓縮和處理。
本文研究了提升小波的硬件實(shí)現(xiàn)方法,根據(jù)FPGA器件具有快速邏輯處理能力的特點(diǎn),采用流水線的加法及數(shù)據(jù)移位操作等,設(shè)計(jì)了一種適合FPGA實(shí)現(xiàn)的快速小波變換硬件結(jié)構(gòu)。采用基于Matlab的設(shè)計(jì)工具DSP Builder,在Altera CYCLONE器件EP2C35F672C6上實(shí)現(xiàn)5/3小波變換及逆變換的功能,并在Quartus軟件下進(jìn)行綜合、仿真及下載。
Altera DSP Builder是一套完整的基于FPGA的DSP開發(fā)工具,在Simulink中作為一個(gè)獨(dú)立的Blockse工具箱,包含數(shù)學(xué)運(yùn)算(arithmetic)、存儲單元(storage)及MATLAB文件(mdl)/VHDL文件轉(zhuǎn)換模塊等功能庫。利用這些功能單元及Simulink中的其他工具箱可以進(jìn)行FPGA的設(shè)計(jì)、仿真及生成VHDL代碼。
由于原始數(shù)據(jù)在進(jìn)行了一次運(yùn)算產(chǎn)生新數(shù)據(jù)之后不再參與進(jìn)一步的運(yùn)算,因而新數(shù)據(jù)可以覆蓋原始數(shù)據(jù),不必另開存儲單元,節(jié)省了資源。該提升算法不需要額外的數(shù)據(jù)延拓,由于采用的是對稱鏡像延拓,在處理邊界問題時(shí),只要在適當(dāng)?shù)奈恢眠M(jìn)行兩次操作以保持?jǐn)?shù)據(jù)就可以了。從算式可知,提升算法的正變換的每一個(gè)高頻分量都是將其前后連續(xù)的數(shù)據(jù)加權(quán)求和得到的,可以通過流水線式操作實(shí)現(xiàn),這不僅有利于提升小波變換的速度,更簡化和節(jié)約了硬件資源的使用。這也是本文采用的小波變換算法的硬件實(shí)現(xiàn)原理。圖3為基于DSP Builder的一維小波變換核的FPGA算法實(shí)現(xiàn)。
通過對輸入ECG信號的仿真分析以及信號在MATLAB中使用wavedec函數(shù)進(jìn)行分解得到的結(jié)果與基于本設(shè)計(jì)的變換核的1D-DWT變換的仿真結(jié)果的比較(如圖4),可以了解本變換核的性能。由于采用了流水線操作原理以及采用了流水線架構(gòu)的乘加邏輯,系統(tǒng)的變換速度得到了很大的提高。該變換核在輸入3個(gè)數(shù)據(jù)后得到第一個(gè)低頻變換系數(shù),在輸入5個(gè)數(shù)據(jù)后即開始得到第二個(gè)低頻變換系數(shù)和第一個(gè)高頻變換系數(shù),之后每輸入2個(gè)數(shù)據(jù)就各得到一個(gè)高頻和低頻分量。通過控制邏輯將這些分量在適當(dāng)?shù)臅r(shí)候輸出并存儲起來就可以完成本次小波變換。
逆變換的設(shè)計(jì)方法與正變換的方法相似,根據(jù)式(3)和式(4),首先由輸入的高通、低通濾波系數(shù)序列計(jì)算出偶序列,再根據(jù)偶序列的數(shù)值計(jì)算出奇數(shù)列的數(shù)值,對于邊界問題也采用“補(bǔ)零”的方法。逆變換設(shè)計(jì)的方法是在圖3中將變換輸入單元改為變換后的序數(shù),通過逐個(gè)將數(shù)據(jù)輸入并經(jīng)過依據(jù)式(3)和式(4)重新設(shè)置權(quán)重,即可實(shí)現(xiàn)該小波的反變換核。同時(shí)通過計(jì)算單元,利用偶序列的計(jì)算結(jié)果計(jì)算出奇序列的數(shù)值,最終實(shí)現(xiàn)原始信號的重建過程。
由于本設(shè)計(jì)旨在使用DWT變換實(shí)現(xiàn)對ECG信號的壓縮,因此,采用了5級小波變換的措施以減小數(shù)據(jù)量,實(shí)現(xiàn)最大程度的低失真壓縮,其原理圖如圖5所示。
該模塊首先將ECG信號分成1 024點(diǎn)的幀,然后逐個(gè)送入5級小波變換模塊。在該模塊中的控制將選通輸入信號為外部送入的ECG信號作為輸入1D-DWT的變換對象,變換后的對象存儲在C5、D5、D4、D3、D2、D1中。D1的大小為512 B,存放的是第一次變換后的高頻分量,低頻分量依次存儲于C5D5D4D3D2。接著控制邏輯將選通低頻分量C5D5D4D3D2作為1D-DWT的變換對象,變換后的高頻分量存儲于D2,低頻分量存儲于C5D5D4D3,即實(shí)現(xiàn)了對于ECG信號的2-level DWT變換。這樣經(jīng)過5次變換后得到的變換結(jié)果為C5:32 B、D5:32 B、D4:64 B、D3:128 B、D2:256 B、D1:512 B。通過設(shè)定閾值可以實(shí)現(xiàn)噪聲可控的量化,并建立段數(shù)據(jù)的碼書,以實(shí)現(xiàn)數(shù)據(jù)與編碼之間的對應(yīng)。對于ECG信號的重建,可以理解為小波分解壓縮的逆過程。首先將壓縮后的信號解碼后按序送入C5D5D4D3D2D1,控制邏輯電路將逐層對信號進(jìn)行反變換,從而得到重建后的信號。當(dāng)閾值設(shè)置大于零時(shí),重建的信號將會存在一些失真,即為有損壓縮,若要實(shí)現(xiàn)無損壓縮,則只需將閾值設(shè)為零即可,但壓縮率會有所降低。
4 實(shí)驗(yàn)數(shù)據(jù)及結(jié)果
本設(shè)計(jì)的5級小波變換模塊在quatus中采用EP2C35F672C6編譯后占用的資源及性能情況如表1所示。
利用該模塊分別對采集的不同ECG信號和經(jīng)過放大和取整處理之后的MIT的ECG信號進(jìn)行壓縮實(shí)驗(yàn),使用兩個(gè)指標(biāo)來衡量本壓縮算法的性能。一個(gè)是壓縮比CR(Compression ratio),另一個(gè)是均方根誤差PRD(percent root mean square difference)。具體的計(jì)算公式為:
其中Xo(i)、Xr(i)分別代表原始心電信號數(shù)據(jù)和重建后的心電信號數(shù)據(jù)。得到的壓縮率與閾值及信號的對應(yīng)數(shù)據(jù)如表2所示。
從表中可以看出,本算法能在一定的PRD范圍內(nèi)獲得較大的壓縮比,在閾值D等于零時(shí),依靠碼本編碼算法依然獲得了一定得壓縮比,但由于小波變換核在運(yùn)算過程中具有右移位操作,還是造成了很小的失真,即在D=0時(shí)僅能做到準(zhǔn)無損壓縮。圖6為閾值等于5時(shí),對MIT-100.dat信號重建的結(jié)果。
通過對5/3小波變換的研究,設(shè)計(jì)實(shí)現(xiàn)了5層小波變換及其反變換的FPGA硬件實(shí)現(xiàn),并對結(jié)果進(jìn)行了仿真及實(shí)例驗(yàn)證,得到了很好的效果。采用Altera的DSP Builder進(jìn)行開發(fā),具有使用靈活、開發(fā)周期短的特點(diǎn)。采用 FPGA實(shí)現(xiàn)小波變換與用 DSP處理器的方法相比,具有速度快、數(shù)據(jù)寬度可任意設(shè)置的特點(diǎn),并且硬件語言具有可移植性的特點(diǎn),具有更強(qiáng)的通用性。由于在現(xiàn)代信號處理中的大量應(yīng)用,可以將小波變換核設(shè)計(jì)成可重用的IP。
在完成小波變換的FPGA實(shí)現(xiàn)后,本文將其應(yīng)用于ECG信號的壓縮,通過多層小波變換與編碼的結(jié)合,實(shí)現(xiàn)了ECG信號實(shí)時(shí)有效的壓縮和重建。
評論