, ,,
(1.中國科學(xué)院微電子研究所,北京 100029; 2.江蘇物聯(lián)網(wǎng)研究發(fā)展中心,江蘇 無錫 214028;3.中國科學(xué)院大學(xué),北京 100864; 4.新一代通信射頻芯片技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100029)
心血管疾病正嚴(yán)重威脅人類身體健康,根據(jù)世界衛(wèi)生組織統(tǒng)計(jì):在2015年全球范圍內(nèi)的死亡病例中,有31%死于心血管疾病[1]。由于缺乏明確的預(yù)警信息,很多心血管患者在到達(dá)醫(yī)院之前就已經(jīng)失去生命體征。如果有適當(dāng)?shù)闹委熀途o急護(hù)理,這種病例的發(fā)生頻率將大大降低[2]。
動態(tài)心電監(jiān)測技術(shù)可以在不影響病人正常生活的情況下,長時(shí)間地對其心臟進(jìn)行實(shí)時(shí)監(jiān)測,從而能夠發(fā)現(xiàn)心臟的異?;顒?、隱性威脅。目前,動態(tài)心電監(jiān)測已經(jīng)成為心電監(jiān)測新的發(fā)展趨勢之一[3]。動態(tài)心電監(jiān)測必然會產(chǎn)生大量數(shù)據(jù),目前主流的遠(yuǎn)程動態(tài)心電記錄儀采樣率能達(dá)到1 000 Hz、分辨率高達(dá)24位[4]。若在8通道下對病人心臟24小時(shí)不間斷檢測的采樣數(shù)據(jù)大約為1.93 GB,可見心電數(shù)據(jù)壓縮對于動態(tài)心電記錄儀是必不可少,如果將采集到的心電數(shù)據(jù)先進(jìn)行壓縮再傳輸,可以降低傳輸功耗,還可減少所需存儲空間。
壓縮感知(CS,compression sensing)的提出解決了傳統(tǒng)奈奎斯特采樣技術(shù)的高能量損失問題[5]。 將CS引入心電壓縮后,可以通過減少對存儲空間、數(shù)據(jù)吞吐量和信道傳輸帶寬的需求。然而,與最先進(jìn)的有損壓縮算法相比,它的壓縮比是有限的。直接差分位壓縮算法是一種無損壓縮算法[6],不會影響基于CS算法的重構(gòu)精度,為了充分利用二進(jìn)制表示,對大數(shù)移位進(jìn)行操作,將該算法命名為移位差分位壓縮算法(SDCA, shift difference bit compression algorithm)。將基于壓縮感知理論的壓縮與移位差分位壓縮結(jié)合的算法稱為CS-SDCA。 CS-SDCA的壓縮比等于CS算法的壓縮比乘以SDCA的壓縮比,大大提高了壓縮比,降低了采集前端的能耗。
圖1給出了遠(yuǎn)程動態(tài)心電記錄儀的基本結(jié)構(gòu),它也是實(shí)驗(yàn)的主要數(shù)據(jù)來源。記錄儀由心電采集前端、數(shù)據(jù)傳輸網(wǎng)和后端解壓模塊組成。由于數(shù)字采集系統(tǒng)根據(jù)奈奎斯特-香農(nóng)采樣率通過模數(shù)轉(zhuǎn)換器完成心電數(shù)據(jù)的采集,所采集的信號具有離散樣本。然后壓縮模塊采用壓縮算法在嵌入式操作系統(tǒng)或單片機(jī)中對心電信號進(jìn)行壓縮。壓縮后的心電信號通過藍(lán)牙傳輸?shù)竭h(yuǎn)程解壓縮端。解壓縮端將暫時(shí)存放壓縮后的心電數(shù)據(jù),若需要心電數(shù)據(jù)時(shí),通過解壓縮算法獲得重構(gòu)心電信號。
圖1 遠(yuǎn)程動態(tài)心電監(jiān)測系統(tǒng)
圖2給出了心電數(shù)據(jù)壓縮和重構(gòu)算法的流程圖,其中包括心電信號預(yù)處理模塊、心電信號壓縮模塊和重建模塊。在模數(shù)轉(zhuǎn)換后通過濾波網(wǎng)絡(luò)對心電數(shù)據(jù)進(jìn)行濾波。濾波模塊濾除運(yùn)行噪聲、工頻噪聲、呼吸波噪聲、人體噪聲等噪聲干擾信號。使用所提出的算法對數(shù)據(jù)進(jìn)行壓縮,然后傳輸。最后,壓縮后的心電數(shù)據(jù)在服務(wù)器端重建。在采集的前端,壓縮算法需要計(jì)算并且可集成到芯片上,所以需要關(guān)注壓縮算法的功耗問題。解壓縮端具有強(qiáng)大的數(shù)據(jù)計(jì)算能力,因此只需要考慮信號重構(gòu)的準(zhǔn)確性,而不必特別注意重構(gòu)算法的計(jì)算復(fù)雜度。
圖2 壓縮算法流程圖
1.2.1 預(yù)處理
很多有關(guān)心電信號壓縮重構(gòu)的研究并未提到原始信號的預(yù)處理,僅在重構(gòu)過程中估計(jì)了噪聲的分布,而通過仿真發(fā)現(xiàn)針對心電信號的特點(diǎn)對其進(jìn)行相應(yīng)的濾波處理后,可以提高重構(gòu)算法的精度。考慮到重構(gòu)精度的需求,意味著該濾波模塊不能影響心電信號的空間結(jié)構(gòu)信息和時(shí)序結(jié)構(gòu)信息。
濾波模塊加入了低通濾波器、帶陷濾波器、中值濾波器,它們用于濾除心電信號中主要噪聲。其中低通濾波器采用截止頻率為75 Hz的巴特沃斯濾波器來濾除肌電干擾;帶阻濾波器采用上限頻率為51 Hz、下限頻率為49 Hz的巴特沃斯濾波器來濾除工頻干擾;中值濾波器用于糾正呼吸產(chǎn)生的漂移。
1.2.2 CS和BSBL-BO
CS是一種新的信號壓縮方法,它依賴于信號的稀疏性來壓縮和重構(gòu)?;镜脑肼暷P涂梢员硎緸閇7]:
Y=ΦX+V
(1)
式(1)中X∈RN×1,Φ∈RM×N;感知矩陣Φ的列之間線性無關(guān);V是在壓縮過程中產(chǎn)生的噪聲向量。
心電信號在時(shí)域是非稀疏的信號,很多壓縮算法只考慮重構(gòu)心電數(shù)據(jù)中遠(yuǎn)非零的數(shù)據(jù),但是一些接近于零的值往往是一些疾病的重要診斷指標(biāo)。這要求重構(gòu)算法能以極高質(zhì)量重構(gòu)出心電信號,目前僅有基于邊界優(yōu)化的塊稀疏貝葉斯模型(block sparse bayesian learning,BSBL-BO)重構(gòu)算法[8]能做到這一點(diǎn)。
自然界信號廣泛具有的結(jié)構(gòu)是塊結(jié)構(gòu),具有這種結(jié)構(gòu)的信號被視為多個(gè)塊的級聯(lián),例如:
(2)
基于這個(gè)塊劃分的壓縮感知模型稱為塊稀疏模型。在塊稀疏 CS 模型中,假設(shè)每γi個(gè)塊xi都滿足多元高斯分布,且其中每塊相互獨(dú)立[9]:
p(xi;γi,Bi)~N(0,γiBi)
(3)
(4)
1.2.3 SDCA
為了進(jìn)一步提高壓縮比,降低傳輸壓力,本文提出一種簡單有效的自適應(yīng)無失真編碼算法。根據(jù)心電數(shù)據(jù)分辨率不同,算法自動選用不同碼長的差分位壓縮編碼算法,相比于哈夫曼碼的不等長編碼給存儲帶來的不變,該編碼算法簡單、運(yùn)算量小,非常適合于前端電路的實(shí)時(shí)實(shí)現(xiàn)。
心電數(shù)據(jù)經(jīng)過式(1)的運(yùn)算后得到初步壓縮后的數(shù)據(jù)Y,感知矩陣為0/1簡單矩陣。利用式(5),得到差分量H,位壓縮即對此量進(jìn)行重新編碼傳輸,其中n根據(jù)不同的分辨率取不同的值,取2的整數(shù)次冪,用右移運(yùn)算代替除法操作。
(5)
若選用a-b-c差分壓縮編碼,即采用a/b/c位長度分別表示相應(yīng)的差分值,其中b位中包含a個(gè)1作為標(biāo)志段,c包含b個(gè)1作為標(biāo)志段。令α=2α-1,β=2b-1,μ=2c-1。
直接差分位壓縮會導(dǎo)致某些二進(jìn)制表達(dá)沒有被用到,b位長的二進(jìn)制表達(dá)數(shù)據(jù)不包括a位長二進(jìn)制表示過的數(shù)據(jù),即該算法中未使用b位長二進(jìn)制表示的一部分。c位長度二進(jìn)制數(shù)也是如此。因此,如式(6)所示,通過對h(i)進(jìn)行移位操作來進(jìn)一步改進(jìn)算法,得到Hs,將Hs傳輸?shù)浇鈮嚎s端。
(6)
移位差分位壓縮的基本原理是將心電信號差值編碼為可對應(yīng)的碼長,根據(jù)不同的分辨率選擇不同的編碼方式,只需要保存差值Δy(n)、y(0),就能重構(gòu)出原始信號Y。a/b/c三種位長的方式也可以是兩種位長或者四種位長,根據(jù)數(shù)據(jù)分布不同具體而定。對編碼后數(shù)據(jù)的解碼過程即是編碼算法的逆運(yùn)算。
本文將MIT-BIH心律失常數(shù)據(jù)庫中48 組心電信號、MPS450心電模擬儀模擬不同心率的數(shù)據(jù)以及人體實(shí)測數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)集。為了與本文中的設(shè)備以1 000 Hz采樣率采集心電信號的特征符合,對采樣率為360 Hz的心電信號重采樣為1 000 Hz的心電信號,即將原本一個(gè)通道650 000個(gè)點(diǎn)的數(shù)據(jù)重采樣為1 805 554個(gè)點(diǎn)。
為了量化壓縮性能,同時(shí)評估心電信號的重構(gòu)質(zhì)量,本文采用了最廣泛使用的性能指標(biāo),即壓縮比和百分比均方根差(PRD)[10]。 CR的定義是:
(7)
(8)
PRD<9%的重構(gòu)信號可用于醫(yī)學(xué)診斷。
2.1.1 SDCA實(shí)驗(yàn)結(jié)果
經(jīng)過CS算法后得到的初步壓縮數(shù)據(jù)Y,利用式(5)、(6)得到待壓縮量Hs,其中n=8。當(dāng)心電信號的分辨率為12位時(shí),有三種編碼算法備選,分別是4-8-12、2-4-8-12和8-12差分壓縮編碼。
4-8-12差分壓縮編碼的壓縮比更優(yōu),96包數(shù)據(jù)的平均壓縮比為1.648 5?;?-4-8-12差分壓縮編碼、8-12差分壓縮編碼的平均壓縮比分別為1.515、1.48。綜上在對MIT-BIH數(shù)據(jù)庫位壓縮算法選擇4-8-12差分壓縮算法,即在分辨率為12位的時(shí)候采用SDCA4-8-12的移位差分位壓縮算法。8位長的二進(jìn)制需要添加1 111作為標(biāo)志,12位長的二進(jìn)制添加111 111 111 111作為標(biāo)志。
表1給出了MIT-BIH數(shù)據(jù)庫中直接差分壓縮算法和移位差分壓縮算法的壓縮比。直接壓縮算法包括[-7,7]、[-127,127]、[-2 047,2 047]區(qū)間。SDCA包括[-7, 7], [-134,135], [-2 181, 2 183]區(qū)間。 可以看出,SDCA的壓縮比比直接壓縮算法高約1%。由于心電信號被CS壓縮后再通過SDCA壓縮,差分壓縮對壓縮比的影響會更加明顯。
表1 一階差分值統(tǒng)計(jì)結(jié)果
SDCA 4.8.12的解碼過程是編碼過程的反過程,其它不同位數(shù)的位壓縮算法原理與此相似。位壓縮屬于無損壓縮,所以經(jīng)過該算法在沒有任何損失的情況下提供了1.648 5左右的壓縮比。
2.1.2 BSBL-BO 算法實(shí)驗(yàn)結(jié)果
本文采用離散余弦變換對心電信號進(jìn)行稀疏變換。本文中感知矩陣的非零量d取1,矩陣維度為,每列選取隨機(jī)15個(gè)位置設(shè)為1,其他位置均為0,并以20個(gè)點(diǎn)長均勻分塊重構(gòu)。在這個(gè)基礎(chǔ)上此壓縮階段僅做加減運(yùn)算大大節(jié)約了采集前端功耗,編碼過程采用滑動窗口的方法分段編碼ECG,每段250個(gè)點(diǎn)可以等分每秒采集的1 000個(gè)點(diǎn),方便了算法對心電信號的分塊處理。
如圖3所示,算法對壓縮后心電信號的重構(gòu)效果非常好,PRD值均遠(yuǎn)遠(yuǎn)低于9%,可用于心電專家的后期診斷。
圖3 BSBL-BO在MIT-BIH數(shù)據(jù)庫的PRD
利用圖1的動態(tài)心電記錄儀采集實(shí)際數(shù)據(jù),該心電記錄儀采樣率為1000 Hz,分辨率為24位,一次性采集8小時(shí)病人心電信號,分別在一個(gè)月內(nèi)對該病人每隔5天采集了6組數(shù)據(jù)。采集時(shí)間是在病人夜間睡眠期間,環(huán)境是病人家內(nèi),該病人73歲,性別男,做過心臟搭橋手術(shù),有心肌缺血癥狀。采集得到前兩分鐘的心電數(shù)據(jù)由于設(shè)備穩(wěn)定問題已舍棄。當(dāng)分辨率為24位時(shí),n取128,使用SDCA8.12.16.24算法。
表2給出了心電模擬儀模擬不同心率心電信號的位壓縮壓縮比,CR平均值為2.36。CS-SDCA壓縮算法得到的壓縮比隨著心率的增加有所降低,但仍然滿足設(shè)備需求。此外,采用SDCA8.12.16.24對遠(yuǎn)程動態(tài)心電記錄儀連續(xù)8小時(shí)間實(shí)際采集的心電數(shù)據(jù)壓縮,平均壓縮比為1.97。
表2 SDCA8.12.16.24的壓縮比
對不同HR的心電信號重構(gòu)的PRD值均小于9%,均可滿足后期心電醫(yī)師診斷的需求。另外遠(yuǎn)程動態(tài)心電記錄儀采集的數(shù)據(jù)平均PRD為4.811 9%。也就是說本文設(shè)計(jì)的算法對實(shí)際采集數(shù)據(jù)的壓縮重構(gòu)效果很好。
論文中采用兩種壓縮算法結(jié)合的方法,提高了系統(tǒng)壓縮比。壓縮感知的壓縮算法感知矩陣維度固定為,也就是說,當(dāng)再提高這部分的壓縮比時(shí)會導(dǎo)致重構(gòu)效果變差。信號的重構(gòu)質(zhì)量是優(yōu)先于壓縮倍數(shù)考慮的,所以本文令感知矩陣維度為,以保證重構(gòu)質(zhì)量。移位差分位壓縮的壓縮比不固定,在本文的測試數(shù)據(jù)中最大壓縮比為2.824 6,此時(shí)系統(tǒng)的,最小值為1.07,系統(tǒng)壓縮比為4.18。
本文比較了CS-SDCA與BSBL-BO,BSBL-FM[11]和SDCA的功耗和重構(gòu)精度,實(shí)驗(yàn)數(shù)據(jù)為 MIT-BIH心律失常數(shù)據(jù)庫,重復(fù)20次實(shí)驗(yàn)求平均。算法測試階段仿真條件均是MATLAB 2013A,Intel Core i7-6700 CPU,4 GB RAM。結(jié)果如圖4,在實(shí)驗(yàn)中感知矩陣均是維度,可以看出在相同壓縮比的前提下BSBL-BO算法比BSBL-FM算法重構(gòu)效果好很多,而解壓縮部分是在服務(wù)器端完成,運(yùn)算能力較強(qiáng),所以BSBL-BO更適合本文算法,由圖也可看出SDCA算法運(yùn)算速度很快,所以CS-SDCA算法在提高了壓縮比的同時(shí)沒有過多的增加功耗。
圖4 不同算法平均PRD和CPU運(yùn)行時(shí)間對比
綜上所述,CS算法保證了近四倍的壓縮比,SDCA算法進(jìn)一步提高了系統(tǒng)壓縮比。
本文針對遠(yuǎn)程動態(tài)心電記錄儀設(shè)計(jì)了心電壓縮算法,從計(jì)算復(fù)雜度角度考慮,壓縮端包括CS和SDCA算法兩個(gè)模塊。例如,當(dāng)壓縮250個(gè)點(diǎn)的信號時(shí),使用感知矩陣僅需要1024個(gè)加法,其中感知矩陣中每列隨機(jī)有16個(gè)1, 若對功耗還有進(jìn)一步的減低,可以減少感知矩陣中1的個(gè)數(shù)。對于移位壓縮算法250個(gè)點(diǎn)需要250次加法,大約500次以4字節(jié)為單位的移位操作,即算法對每塊250個(gè)數(shù)據(jù)一共需要1 274個(gè)加法和500次移位操作,編碼端計(jì)算復(fù)雜度為O(N)。
動態(tài)心電記錄儀采用nRF51822低功耗藍(lán)牙芯片,工作電壓3.3 V,工作電流為0.6 mA,完整工作電流為2.5 mA,藍(lán)牙傳輸占了系統(tǒng)功耗的76%,所以減少數(shù)據(jù)量繼而降低藍(lán)牙傳輸功耗對整個(gè)動態(tài)心電記錄儀降低功耗具有十分顯著的效果。以壓縮算法O(N)的計(jì)算代價(jià),當(dāng)只經(jīng)過CS壓縮時(shí)大約減輕了藍(lán)牙傳輸50%的功耗,隨著壓縮比的提高,會更進(jìn)一步降低系統(tǒng)功耗,延長設(shè)備使用壽命。
數(shù)據(jù)量龐大是遠(yuǎn)程動態(tài)心電記錄儀的難點(diǎn)所在,而壓縮感知的壓縮算法壓縮比有限,本文是針對該問題所設(shè)計(jì)的心電信號壓縮重構(gòu)算法,將無損壓縮算法移位差分位壓縮算法與壓縮感知結(jié)合,將壓縮倍數(shù)提高的同時(shí),保證了心電重構(gòu)質(zhì)量滿足后期醫(yī)師診斷的需求。雖然本文提出的算法應(yīng)用于遠(yuǎn)程動態(tài)心電記錄儀,但因?yàn)樗惴▔嚎s端功耗極低,也可應(yīng)用到無線體域網(wǎng)中。