本發(fā)明涉及數(shù)據(jù)壓縮技術(shù)領(lǐng)域,尤其涉及一種基于采樣數(shù)據(jù)幅頻特性的壓縮算法。
背景技術(shù):
數(shù)據(jù)采集系統(tǒng)廣泛應(yīng)用于橋梁健康診斷,電能質(zhì)量分析,身體健康監(jiān)測(cè)等領(lǐng)域。通常情況下,前端采集的數(shù)據(jù)量非常大。為實(shí)現(xiàn)對(duì)信號(hào)的實(shí)時(shí)采集與傳輸,對(duì)通信系統(tǒng)來(lái)說(shuō),需要解決帶寬受限下的高效數(shù)據(jù)傳輸問(wèn)題。通過(guò)對(duì)原始采樣數(shù)據(jù)進(jìn)行壓縮處理,最大程度的降低數(shù)據(jù)流的長(zhǎng)度,可減少對(duì)有限帶寬的占用,提高通信系統(tǒng)的傳輸效率。
從實(shí)際應(yīng)用角度進(jìn)行分析,首先,前端的數(shù)據(jù)采集與處理設(shè)備一般采用處理能力有限的嵌入式處理器,復(fù)雜的壓縮算法會(huì)導(dǎo)致處理器的負(fù)荷過(guò)重,無(wú)法保證數(shù)據(jù)處理的實(shí)時(shí)性。其次,增加系統(tǒng)通信帶寬的方案會(huì)帶來(lái)成本以及功耗方面的問(wèn)題。再次,適配無(wú)操作系統(tǒng)嵌入式設(shè)備的壓縮算法很少,多數(shù)的壓縮算法需要較大的字典集以及循環(huán)迭代操作,很難處理大量實(shí)時(shí)性的數(shù)據(jù)。另外,為了減少待傳輸或者存儲(chǔ)的數(shù)據(jù)總量,某些算法采用降低采樣頻率的方法,這樣處理的副作用就是信號(hào)的失真,甚至可能導(dǎo)致信號(hào)無(wú)法正確恢復(fù)。通過(guò)研究發(fā)現(xiàn),感知終端采集的信號(hào)中,包含大量在實(shí)際分析處理過(guò)程中無(wú)用的冗余信息,這些無(wú)效的信息耗費(fèi)了大量的傳輸帶寬與存儲(chǔ)資源。因此,在充分考慮到嵌入式系統(tǒng)的特點(diǎn)與待采集信號(hào)的特征后,本發(fā)明提出了一種基于采樣數(shù)據(jù)幅頻特性的壓縮算法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于提供一種保證原始數(shù)據(jù)信息完整性、提高帶寬利用率、提高網(wǎng)絡(luò)實(shí)時(shí)性的基于采樣數(shù)據(jù)幅頻特性的壓縮算法。
為實(shí)現(xiàn)上述目的,采用了以下技術(shù)方案:本發(fā)明主要包括前端數(shù)據(jù)采集系統(tǒng)、嵌入式處理器,所述算法是原始采樣數(shù)據(jù)進(jìn)行分段數(shù)據(jù)重采樣,并使用可變長(zhǎng)度重新表示的壓縮算法;所述算法從網(wǎng)絡(luò)感知層前端節(jié)點(diǎn)入手,利用信源編碼的方式,對(duì)采樣得到的信號(hào)進(jìn)行時(shí)域上的劃分,實(shí)時(shí)分析各個(gè)時(shí)間段的頻率分布,抽取其中的關(guān)鍵特征點(diǎn),減少采樣點(diǎn);對(duì)于各個(gè)時(shí)間段內(nèi)部的數(shù)據(jù),通過(guò)分析采樣數(shù)據(jù)的數(shù)值,進(jìn)行二進(jìn)制表示,找到可以完全覆蓋此數(shù)據(jù)段內(nèi)數(shù)據(jù)表示的最小數(shù)據(jù)位數(shù),在傳輸?shù)倪^(guò)程當(dāng)中只傳輸去除冗余數(shù)據(jù)的二進(jìn)制數(shù)據(jù)流,減少通信信道的占用。
進(jìn)一步的,所述算法包括以下步驟:
步驟1,確定重采樣頻率,進(jìn)行數(shù)據(jù)點(diǎn)篩選;
步驟2,確定段內(nèi)數(shù)據(jù)表示的位數(shù),進(jìn)行幅值壓縮;
步驟3,對(duì)數(shù)據(jù)幀進(jìn)行規(guī)則定義。
進(jìn)一步的,步驟1中,當(dāng)原始信號(hào)變化不大、較為平坦時(shí),在不影響對(duì)原始信號(hào)的特征分析的前提下,可以采用較低的采樣頻率進(jìn)行數(shù)據(jù)提取,以盡量減少處理器以及帶寬的占用;
步驟1.1,根據(jù)分段數(shù)據(jù)的數(shù)據(jù)特征,計(jì)算相應(yīng)的數(shù)據(jù)變化率的最大值,通過(guò)得出的變化率最大值來(lái)確定重采樣的頻率frs;
步驟1.2,重采樣頻率需≤AD芯片所允許的最大采樣率;
步驟1.3,通過(guò)構(gòu)造重采樣頻率與信號(hào)變化率的關(guān)系,得出實(shí)際執(zhí)行的采樣頻率frs;
其中,重采樣頻率frs和AD芯片所允許正常工作的最大采樣率fas關(guān)系須滿足下式:
frs=fas/2x,x∈N (1)
式中,x為正整數(shù);完成數(shù)據(jù)提取。
進(jìn)一步的,步驟2的具體內(nèi)容為:
步驟2.1,將各段數(shù)據(jù)進(jìn)行二進(jìn)制表示,找出各個(gè)數(shù)據(jù)段中數(shù)據(jù)長(zhǎng)度的最大值;對(duì)采樣信號(hào)的幅值進(jìn)行處理,記H為采樣數(shù)據(jù)集合,將H等數(shù)量分為子集S1,S2……Si,且S1={s0,…,s(N-1)},S2={sN,...,s2N}……Si={s(i-1)N,...,siN},si為采樣信號(hào)值,取0≤ki≤1,i∈N*,當(dāng)數(shù)據(jù)集滿足關(guān)系式且時(shí),則認(rèn)為采樣數(shù)據(jù)可以在該分段集合下分段進(jìn)行壓縮;
步驟2.2,確定本段數(shù)據(jù)的表示集合參數(shù)以及數(shù)據(jù)位數(shù)Ar;
步驟2.3,完成數(shù)據(jù)壓縮。
進(jìn)一步的,步驟3中,在數(shù)據(jù)幀中加入時(shí)間信息,以保證多源數(shù)據(jù)的同步性;引入與壓縮處理相關(guān)的參數(shù)變量,以保證在終端可以正確的恢復(fù)原始數(shù)據(jù);將時(shí)間戳信息和壓縮參數(shù)合并組成參數(shù)標(biāo)記域;
其相關(guān)參數(shù)信息與數(shù)據(jù)位數(shù)的關(guān)系表示如表1:
表1數(shù)據(jù)幀頭與壓縮參數(shù)對(duì)應(yīng)表
所述的參數(shù)標(biāo)記域?yàn)?位變量,高4位用來(lái)表示時(shí)間序列信息,低4位用來(lái)表示與壓縮算法相關(guān)的參數(shù)信息。
進(jìn)一步的,所述算法壓縮率小于1的條件:
式中,Ti表示分段數(shù)據(jù)的采樣時(shí)間信息;m代表待處理的數(shù)據(jù)集合中數(shù)據(jù)段的總數(shù)量;Li代表各個(gè)數(shù)據(jù)段處理后的數(shù)據(jù)位數(shù);Ni為各個(gè)數(shù)據(jù)段集合的采樣數(shù)據(jù)點(diǎn)數(shù)。
進(jìn)一步的,所述算法進(jìn)行相關(guān)數(shù)據(jù)壓縮有效性分析的公式為:
式中,fi為各段數(shù)據(jù)中的重采樣頻率。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明算法的復(fù)雜度適中,可以滿足嵌入式系統(tǒng)的實(shí)際需求??勺畲蟪潭壬侠迷夹盘?hào)的特征,通過(guò)優(yōu)化數(shù)據(jù)結(jié)構(gòu),減少傳輸過(guò)程中的數(shù)據(jù)比特流,能有效減少數(shù)據(jù)傳輸過(guò)程中的網(wǎng)絡(luò)沖突,提高傳輸效率。
附圖說(shuō)明
圖1為本發(fā)明中frs與|ds/dt|的關(guān)系圖。
圖2為幅值壓縮示意圖。
圖3為一個(gè)典型的振動(dòng)信號(hào)圖。
圖4為取不同的采樣點(diǎn)數(shù)時(shí)壓縮率n與斜率k的關(guān)系圖。
圖5為取不同的采樣點(diǎn)數(shù)時(shí)誤差與k的關(guān)系圖。
圖6為取不同的采樣點(diǎn)數(shù)時(shí)消耗時(shí)間與k的關(guān)系圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步說(shuō)明:
步驟1,確定重采樣頻率,進(jìn)行數(shù)據(jù)點(diǎn)篩選。
對(duì)原始數(shù)據(jù)以AD轉(zhuǎn)換芯片所允許的最大采樣頻率進(jìn)行采樣,將采樣的信號(hào)進(jìn)行分段處理,分成不同的數(shù)據(jù)集合。
對(duì)集合內(nèi)部的采樣點(diǎn)進(jìn)行分析,確定重采樣的頻率,最終采用的頻率記為frs。對(duì)于各個(gè)數(shù)據(jù)集合來(lái)說(shuō),通過(guò)構(gòu)造采樣頻率與數(shù)據(jù)變化率的關(guān)系來(lái)確定重采樣頻率。
如圖1所示,當(dāng)選定采樣AD芯片之后,系統(tǒng)的fas為固定值,定義斜率為k,過(guò)原點(diǎn)的直線與fas的交點(diǎn)作為參數(shù)選取的臨界點(diǎn)。當(dāng)數(shù)據(jù)變化率的最大值大于等于ds時(shí),以fas對(duì)該信號(hào)進(jìn)行采樣,即不進(jìn)行數(shù)據(jù)抽取操作。當(dāng)數(shù)據(jù)變化率的最大值小于ds時(shí),根據(jù)對(duì)應(yīng)關(guān)系,得出重采樣頻率frs??芍瑪?shù)據(jù)變化率越大則相應(yīng)的重采樣頻率就越大,得出的數(shù)據(jù)量就越大;反之,則重采樣頻率就越小,得出的數(shù)據(jù)量就越小,壓縮效果越明顯。
考慮到系統(tǒng)的實(shí)際情況,抽取的采樣頻率不能是任意數(shù),fas和frs關(guān)系須滿足下式:
frs=fas/2x,x∈N (1)
步驟2,確定段內(nèi)數(shù)據(jù)的表示位數(shù),進(jìn)行幅值壓縮。
對(duì)采樣信號(hào)的幅值進(jìn)行處理,記H為采樣數(shù)據(jù)集合,將H等數(shù)量分為子集S1,S2……Si,且S1={s0,...,s(N-1)},S2={sN,...,s2N}……Si={s(i-1)N,...,siN},si為采樣信號(hào)值,取0≤ki≤1,i∈N*,當(dāng)數(shù)據(jù)集滿足關(guān)系式且時(shí),則認(rèn)為采樣數(shù)據(jù)可以在該分段集合下分段進(jìn)行壓縮。
示例性的,如圖2所示,該圖表示一個(gè)典型的振動(dòng)信號(hào)波形。從時(shí)域上考慮,將此信號(hào)分為4個(gè)數(shù)據(jù)段segment 1、segment 2、segment 3、segment 4,壓縮處理的過(guò)程中,AD芯片的位數(shù)決定了數(shù)據(jù)范圍(H)的取值大小,由系統(tǒng)采用16位精度的芯片,可得H的兩個(gè)數(shù)據(jù)子集sH和nH,各個(gè)子數(shù)據(jù)集合的Ar通過(guò)相應(yīng)的最大值得到,由上可知,segment 1可以用H域進(jìn)行表示,segment 2可以用nH域進(jìn)行表示,而segment2和segment4則可以用sH表示。當(dāng)s=1/3,n=2/3時(shí),對(duì)小數(shù)位進(jìn)位取整之后,sH和nH分別表示6位數(shù)集和11位數(shù)集,即可以被sH表示的數(shù)據(jù)段可以采用6位二進(jìn)制數(shù)據(jù)進(jìn)行完整表示,可以被nH表示的數(shù)據(jù)段可以采用11位二進(jìn)制數(shù)據(jù)進(jìn)行完整表示。因此,通過(guò)該數(shù)據(jù)壓縮算法對(duì)數(shù)據(jù)處理之后,數(shù)據(jù)壓縮率計(jì)算如下:
步驟3,對(duì)數(shù)據(jù)幀進(jìn)行規(guī)則定義。
在數(shù)據(jù)幀中加入相關(guān)參數(shù),以避免數(shù)據(jù)亂序。所述的相關(guān)參數(shù)包括:時(shí)間戳信息及壓縮參數(shù),用以標(biāo)識(shí)采樣數(shù)據(jù)的時(shí)間序列,恢復(fù)原始數(shù)據(jù)。本發(fā)明中將時(shí)間戳信息和壓縮參數(shù)合并組成參數(shù)標(biāo)記域,所述的參數(shù)標(biāo)記域?yàn)?位變量,其中高4位用來(lái)表示時(shí)間序列信息,低4位用來(lái)表示與壓縮算法相關(guān)的參數(shù)信息。其相關(guān)參數(shù)信息與數(shù)據(jù)位數(shù)的關(guān)系表示如表1。
定義Ti表示分段數(shù)據(jù)的采樣時(shí)間信息,m代表待處理的數(shù)據(jù)集合中數(shù)據(jù)段的總數(shù)量,Li代表各個(gè)數(shù)據(jù)段處理后的數(shù)據(jù)位數(shù),Ni為各個(gè)數(shù)據(jù)段集合的采樣數(shù)據(jù)點(diǎn)數(shù)。對(duì)原始數(shù)據(jù)進(jìn)行壓縮后的數(shù)據(jù)流以及參數(shù)標(biāo)記域位數(shù)之和為:
式中m×8代表參數(shù)標(biāo)記域的位數(shù)總和。
若式(2)成立,則壓縮算法的壓縮率小于1。
考慮到實(shí)際情況,可采用式(3)進(jìn)行相關(guān)數(shù)據(jù)壓縮有效性的分析。
式中,fi為各段數(shù)據(jù)中的重采樣頻率。
為驗(yàn)證本發(fā)明具體的壓縮效果,本發(fā)明對(duì)一組典型的振動(dòng)信號(hào)(圖3)進(jìn)行處理,并對(duì)其壓縮結(jié)果進(jìn)行分析,其中:
圖4為取不同的數(shù)據(jù)段采樣點(diǎn)數(shù)進(jìn)行處理時(shí),數(shù)據(jù)壓縮率和k的關(guān)系,圖5為取不同的數(shù)據(jù)段采樣點(diǎn)數(shù)進(jìn)行處理時(shí),相對(duì)誤差和k的關(guān)系。由圖可知,當(dāng)m的值確定時(shí),隨著斜率k的取值的增大,數(shù)據(jù)的壓縮效果越差,相對(duì)誤差減小。因此,在保證精度的前提下如果要獲得較好的壓縮效果,k的值要滿足一定的條件。例如,當(dāng)m=128時(shí),k的值可以在7~11的范圍內(nèi)選取。通過(guò)對(duì)上述效果圖的分析,系統(tǒng)就可以按照實(shí)際需求選取合適的參數(shù)進(jìn)行壓縮處理。
對(duì)于實(shí)際的嵌入式系統(tǒng),處理器對(duì)算法的復(fù)雜度也提出了一定的要求,需要保證對(duì)采集的數(shù)據(jù)實(shí)時(shí)處理壓縮,以避免數(shù)據(jù)阻塞溢出。系統(tǒng)對(duì)算法的基本要求為,發(fā)送數(shù)據(jù)流所需要的時(shí)間要小于算法處理的時(shí)間,同時(shí)采集新的數(shù)據(jù)集的時(shí)間要大于數(shù)據(jù)處理的時(shí)間消耗。本發(fā)明中處理不同的采樣點(diǎn)數(shù)量所需時(shí)間與斜率k的關(guān)系如圖6所示,從圖中可以看出,當(dāng)m值一定時(shí),隨著k值的逐漸增加,壓縮算法的處理時(shí)間也會(huì)增大,但壓縮數(shù)據(jù)需要的平均處理時(shí)間小于50us,完全可以滿足嵌入式系統(tǒng)的實(shí)際需求。
以上所述的實(shí)施例僅僅是對(duì)本發(fā)明的優(yōu)選實(shí)施方式進(jìn)行描述,并非對(duì)本發(fā)明的范圍進(jìn)行限定,在不脫離本發(fā)明設(shè)計(jì)精神的前提下,本領(lǐng)域普通技術(shù)人員對(duì)本發(fā)明的技術(shù)方案做出的各種變形和改進(jìn),均應(yīng)落入本發(fā)明權(quán)利要求書(shū)確定的保護(hù)范圍內(nèi)。