本發(fā)明涉及一種低功耗數(shù)據(jù)壓縮算法。
背景技術(shù):
人體的各項體征數(shù)據(jù)的實時監(jiān)測,對于人體的健康有著重要意義,尤其是對人體心臟數(shù)據(jù)的監(jiān)測?,F(xiàn)有的有效心電監(jiān)測只能在醫(yī)院進行,無法進行日常監(jiān)護,因此不方便人們長時間的實時了解自身身體狀況。
本技術(shù):
人提出要設(shè)計一款便攜式的無線心電監(jiān)測可穿戴設(shè)備,該設(shè)備的要求是:可滿足三天的連續(xù)使用時間,體積小,監(jiān)控準(zhǔn)確。要達到這些要求就需要對數(shù)據(jù)進行壓縮,如何設(shè)計一種功耗低、實時且準(zhǔn)確度較高的壓縮算法尤為關(guān)鍵。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種低功耗的數(shù)據(jù)壓縮算法。
實現(xiàn)本發(fā)明目的的技術(shù)方案是低功耗數(shù)據(jù)壓縮算法,有兩個方案。
第一個方案是采用有損壓縮;所述有損壓縮去除該算法的乘除操作,保留該算法的加減計算;以存儲空間的存儲分區(qū)空間大小為上限,將數(shù)據(jù)實時壓縮為不大于前述上限的數(shù)據(jù)包。
所述有損壓縮采用fan算法,保留fan算法的加減計算,去除fan算法的乘除計算;將fan算法的乘法計算變換為2n的形式。
第二個方案是:采用至少兩個壓縮維度可互補、壓縮比增大的壓縮算法對數(shù)據(jù)進行壓縮,前述壓縮算法中至少包含一個無損壓縮算法;以存儲空間的存儲分區(qū)空間大小為上限,將數(shù)據(jù)實時壓縮為不大于前述上限的數(shù)據(jù)包。
當(dāng)采用的壓縮算法包含有損算法時,先進行有損壓縮,然后進行無損壓縮。
采用有損算法時,去除該算法的乘除操作,保留該算法的加減計算。
所述有損算法只采用一個;所述無損算法包含一個或多個。
選擇的無損算法為只包含加減和移位計算的算法。
作為一種優(yōu)選,包括以下步驟:
s1:有損壓縮:采用fan算法,保留fan算法的加減計算,去除fan算法的乘除計算。
s2:無損壓縮:對s1步中得到的數(shù)據(jù)進行哈夫曼二階差分編碼。
所述s1步中,將fan算法的乘法計算變換為2n的形式。
所述2n的的確定方法為:選擇與原fan算法中的乘數(shù)最接近的數(shù)值。
采用了上述技術(shù)方案,本發(fā)明具有以下的積極的效果:(1)本發(fā)明提供了兩種方案,一種是采用有損壓縮,另一種是采用有損和無損的結(jié)合,由于都是采用實時壓縮,而不是全部數(shù)據(jù)取完再壓縮,這樣能夠降低每次的計算量,由此實現(xiàn)低功耗。
(2)本發(fā)明的有損算法只進行加減計算和移位計算,這樣計算復(fù)雜度低,計算量低,功耗低,非常適合可穿戴設(shè)備數(shù)據(jù)的壓縮。
(3)本發(fā)明可以采用包含無損算法的兩種或兩種以上的維度互補,壓縮比增加的壓縮算法來進行壓縮,由于兩種方法的壓縮原理不同,因此壓縮效果可以有效疊加,從而增加壓縮比,節(jié)約存儲空間,因此可以采用小容量的存儲裝置,降低設(shè)備的功耗。
(4)本發(fā)明采用兩種壓縮算法時,可以有效的為數(shù)據(jù)加密,保護數(shù)據(jù)的私密性,避免數(shù)據(jù)被非法破解。
(5)本發(fā)明優(yōu)選采用去除了乘除,只采用加減和移位(2的倍數(shù)的簡單乘法)的fan算法,信號質(zhì)量由fan算法中進行控制,可以非常方便地根據(jù)需要調(diào)整壓縮比和失真率的關(guān)系,最大程度保證ecg信號質(zhì)量。
(6)由于心電數(shù)據(jù)是一個波形,數(shù)據(jù)變化一般較為緩慢,做二階差則可以提升哈夫曼編碼的效率,運算更快,更實時,更簡單。
具體實施方式
(實施例1)
本實施例詳細介紹算法步驟:
數(shù)據(jù)采集量非常大,采樣頻率達到250hz,即一秒鐘采樣250次。采用實時壓縮,根據(jù)設(shè)備的緩存容量,將緩存空間分隔為比如100-200字節(jié),每次壓縮后的壓縮包的大小小于前述字節(jié),根據(jù)算法得到的壓縮比,就可以確定多少數(shù)據(jù)壓縮一次。
s1:有損壓縮:采用fan算法,保留fan算法的加減計算,去除fan算法的乘除計算,將fan算法的乘法計算變換為2n的形式;fan算法的大概思想是以折線來替代ecg波形曲線,因此是一個有損的壓縮算法。比如一條ecg波形曲線有100個點組成,fan算法以“起始點+長度”的方式來代替記錄這100個點。如果曲線較為平滑,則壓縮比較高。例如按照下表的方式進行原fan算法乘數(shù)的修改:
根據(jù)可以容忍的失真率,可以獲得不同的壓縮比。
s2:無損壓縮:對s1步中得到的數(shù)據(jù)進行哈夫曼二階差分編碼。哈夫曼是無損壓縮,所以解壓后的數(shù)據(jù)可以用來還原fan算法的壓縮。所謂二階差分是指,將多個數(shù)據(jù)做兩次相鄰數(shù)據(jù)的差,對第二次的差進行哈夫曼編碼,比如38、36、35、32、28五個數(shù)字,一階差為2、1、3、4,二階差為1、-2、-1。這里用二階差分編碼的原因是二階差分可以獲得較為平滑的相鄰數(shù)據(jù)點,從而提高壓縮比。
經(jīng)過多次驗證,本實施例的fan算法壓縮比為1:2.2左右,二階差分哈夫曼編碼的壓縮比為1:2.5左右,經(jīng)過兩次壓縮后,壓縮比可以達到1:3.5左右。
以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。