郭建方,曹麗娜,朱方娥,(石家莊鐵道大學(xué)四方學(xué)院,河北 石家莊 051132)
數(shù)據(jù)壓縮理論始于上世紀(jì)40年代,數(shù)據(jù)壓縮是指在數(shù)據(jù)儲(chǔ)存空間的要求之下,重組龐大的原始數(shù)據(jù),從而滿足一定儲(chǔ)存空間的數(shù)據(jù)集合,使得該數(shù)據(jù)集合中被恢復(fù)出來(lái)的數(shù)據(jù)能夠完全符合原始數(shù)據(jù)[1]。信息技術(shù)的發(fā)展,擴(kuò)大了各個(gè)系統(tǒng)的數(shù)據(jù)量,嚴(yán)重阻礙了數(shù)據(jù)的傳輸與儲(chǔ)存,因此,數(shù)據(jù)壓縮技術(shù)的研究越來(lái)越廣泛。國(guó)內(nèi)學(xué)者對(duì)數(shù)據(jù)壓縮的研究中,雖然指出了負(fù)載均衡對(duì)數(shù)據(jù)壓縮的重要性,但是在壓縮過(guò)程中,仍然采用傳統(tǒng)的評(píng)估準(zhǔn)則,以壓縮率為指標(biāo),很少涉及到數(shù)據(jù)壓縮理論[2];國(guó)外學(xué)者對(duì)數(shù)據(jù)壓縮的研究?jī)H僅考慮到了壓縮算法在層次上的改進(jìn),主要對(duì)原始數(shù)據(jù)進(jìn)行相應(yīng)改造和裁剪,缺少壓縮算法在執(zhí)行效率上的優(yōu)化研究[3]。
任秀江等人[4]從減少網(wǎng)絡(luò)注入數(shù)據(jù)量的角度出發(fā),對(duì)網(wǎng)絡(luò)通信實(shí)時(shí)壓縮技術(shù)進(jìn)行了研究,給出了一種面向網(wǎng)絡(luò)通信的硬件實(shí)時(shí)壓縮引擎RTCE的設(shè)計(jì),在網(wǎng)絡(luò)通信過(guò)程中,硬件自動(dòng)實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)包的壓縮傳輸,采用SPEC2006,Graph500,CFD算法測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,壓縮后的網(wǎng)絡(luò)包數(shù)據(jù)量平均減少32.8%~48.7%。但是該方法的實(shí)時(shí)數(shù)據(jù)壓縮比較大;楊理踐[5]提出一種管道漏磁檢測(cè)實(shí)時(shí)數(shù)據(jù)壓縮算法,在實(shí)時(shí)壓縮和提升小波編碼的基礎(chǔ)上,利用雙緩沖區(qū)模型對(duì)數(shù)據(jù)進(jìn)行采集,并根據(jù)管道漏磁數(shù)據(jù)的特征,通過(guò)自適應(yīng)算術(shù)編碼完成數(shù)據(jù)無(wú)損壓縮,無(wú)損壓縮比可達(dá)9.166:1。但是該方法的實(shí)時(shí)數(shù)據(jù)的通信能耗較大。
針對(duì)上述方法存在的問(wèn)題,本文在負(fù)載均衡策略下,提出了一種實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法,減少實(shí)時(shí)數(shù)據(jù)的儲(chǔ)存空間、提高數(shù)據(jù)傳輸速度,從而提升實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮性能。
由于實(shí)時(shí)數(shù)據(jù)在樣本采集過(guò)程中,采集頻率過(guò)高、樣本數(shù)量較大,導(dǎo)致實(shí)時(shí)數(shù)據(jù)處理起來(lái)較麻煩[6],因此,需要先分塊處理實(shí)時(shí)數(shù)據(jù),以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的自適應(yīng)量化。由于實(shí)時(shí)數(shù)據(jù)在漸進(jìn)式處理時(shí)具有周期性,因此對(duì)實(shí)時(shí)數(shù)據(jù)采用分塊處理的方式,將數(shù)據(jù)間聯(lián)系起來(lái)[7],這種聯(lián)系可以提高實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮性能。
在負(fù)載均衡策略下,DCT變換和離散小波變換都具有良好的負(fù)載均衡特性,但是離散小波變換更適用于強(qiáng)烈且非平穩(wěn)的數(shù)據(jù),DCT變換在處理變化不大的實(shí)時(shí)數(shù)據(jù)時(shí)具有更優(yōu)的負(fù)載均衡特性[8]。考慮到網(wǎng)絡(luò)節(jié)點(diǎn)硬件平臺(tái)的支持,在負(fù)載均衡策略下,采用DCT變換的IV變換為
(1)
其中,k的取值為k=1,2,…,N,N表示實(shí)時(shí)數(shù)據(jù)的分塊大小,mn表示原始實(shí)時(shí)數(shù)據(jù)。
經(jīng)過(guò)分塊處理后,0得到
(2)
實(shí)時(shí)數(shù)據(jù)自適應(yīng)量化的好壞時(shí)刻影響實(shí)時(shí)數(shù)據(jù)的失真大小,根據(jù)自適應(yīng)量化原則,能夠提高負(fù)載均衡較大的子帶分配的位數(shù),設(shè)定每一個(gè)實(shí)時(shí)數(shù)據(jù)塊所期望的總位數(shù)R,子帶負(fù)載自適應(yīng)量化的步驟如下:
Step2:設(shè)置每一個(gè)子帶對(duì)應(yīng)的初始位數(shù)nj為0,求解得到每一個(gè)子帶的最大絕對(duì)值大小A=[a1,a2,…,aN],計(jì)算出每一個(gè)子帶所需要的最大位數(shù);
(3)
Step3:計(jì)算實(shí)時(shí)數(shù)據(jù)子帶j的負(fù)載總和
(4)
其中,j的取值為j=1,2,…,N。
Step4:將實(shí)時(shí)數(shù)據(jù)子帶的負(fù)載總和從大到小進(jìn)行排序,假設(shè)第r個(gè)實(shí)時(shí)能量子帶的負(fù)載最大,將實(shí)時(shí)數(shù)據(jù)子帶r的分配位數(shù)加1,即nr=nr+1,,如果實(shí)時(shí)數(shù)據(jù)子帶的分配位數(shù)大于最大位數(shù)br,那么就使nr=br;
Step5:將實(shí)時(shí)能量子帶的負(fù)載與4作商,并使實(shí)時(shí)數(shù)據(jù)總位數(shù)減1;
Step6:重復(fù)Step4和Step5,直到實(shí)時(shí)數(shù)據(jù)總位數(shù)等于0,將得到的實(shí)時(shí)數(shù)據(jù)子帶分配位數(shù)Nb=[n1,n2,…,nN]作為實(shí)時(shí)數(shù)據(jù)邊帶信息進(jìn)行保存。
在完成實(shí)時(shí)數(shù)據(jù)各個(gè)子帶的位數(shù)分配之后,對(duì)均勻量化處理分配位數(shù)進(jìn)行計(jì)算,將實(shí)時(shí)數(shù)據(jù)子帶設(shè)置為大于0并且小于最大位數(shù),即
(5)
利用離散余弦變換的負(fù)載均衡特性,對(duì)原始實(shí)時(shí)數(shù)據(jù)進(jìn)行了分塊處理和DCT變換,使實(shí)時(shí)數(shù)據(jù)中DCT變換系數(shù)的負(fù)載均衡儲(chǔ)存在少量子帶中,根據(jù)實(shí)時(shí)數(shù)據(jù)各個(gè)子帶的負(fù)載均衡大小自適應(yīng)分配量化位數(shù),完成實(shí)時(shí)數(shù)據(jù)的自適應(yīng)量化處理,接下來(lái)通過(guò)設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法,來(lái)簡(jiǎn)化實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮的程序。
實(shí)時(shí)數(shù)據(jù)在漸進(jìn)式壓縮過(guò)程中會(huì)面臨兩個(gè)比較關(guān)鍵的問(wèn)題,首先,實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法必須可以為系統(tǒng)提供比較高的實(shí)時(shí)數(shù)據(jù)壓縮率,從而來(lái)支持實(shí)時(shí)數(shù)據(jù)的儲(chǔ)存特點(diǎn);其二,實(shí)時(shí)數(shù)據(jù)的記錄功能和查詢功能需要漸進(jìn)式壓縮算法在數(shù)據(jù)壓縮和解壓兩項(xiàng)都具有一定的速度性能。
實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法在運(yùn)行原理和實(shí)現(xiàn)方面都比較容易,代碼實(shí)現(xiàn)過(guò)程中也沒(méi)有相對(duì)復(fù)雜的運(yùn)算過(guò)程,需要消耗更短的數(shù)據(jù)壓縮和解壓時(shí)間。尤其在實(shí)時(shí)數(shù)據(jù)的解壓過(guò)程中,具有更高的加壓效率,但是實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法也存在很多缺點(diǎn)和不足,因此,在負(fù)載均衡策略下,設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法。
對(duì)于實(shí)時(shí)數(shù)據(jù)而言,如果直接采用漸進(jìn)式壓縮算法會(huì)因?yàn)閷?shí)時(shí)數(shù)據(jù)的波動(dòng)浮動(dòng)較大、規(guī)律性不強(qiáng)等特點(diǎn),導(dǎo)致實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮速度和效率不理想,通過(guò)在負(fù)載均衡策略下設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法,從而提高壓縮算法的執(zhí)行速度。
實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮以測(cè)點(diǎn)為單元,讀取單位時(shí)間內(nèi)的實(shí)時(shí)數(shù)據(jù),分別對(duì)其進(jìn)行壓縮處理,實(shí)時(shí)數(shù)據(jù)的壓縮過(guò)程是一個(gè)以字節(jié)為單位的字符串,根據(jù)讀入的字符依次添加到表項(xiàng)中,記錄一段時(shí)間后就要將其清空,保留一個(gè)標(biāo)識(shí)項(xiàng)。實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮流程如圖1所示。
圖1 實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮流程
根據(jù)上述流程可知:
Step1:初等變換原始實(shí)時(shí)數(shù)據(jù),并將變換處理后的實(shí)時(shí)數(shù)據(jù)采用字節(jié)為單位進(jìn)行讀??;
Step2:對(duì)字典進(jìn)行初始化處理,使字典中包含單字符實(shí)時(shí)數(shù)據(jù);
Step3:對(duì)代碼進(jìn)行清零處理,使字符串為空集;
Step4:對(duì)于輸入實(shí)時(shí)數(shù)據(jù)字符流中的每一個(gè)字符重復(fù)操作Step5~ Step9;
Step5:抽取實(shí)時(shí)數(shù)據(jù)字符保存在字符串中;
Step6:如果實(shí)時(shí)數(shù)據(jù)字符串S+String在字典中,那么S=S+String,轉(zhuǎn)到Step5;
Step7:在字典中編寫(xiě)與S對(duì)應(yīng)的代碼,將其輸出為字符流;
Step8:將實(shí)時(shí)數(shù)據(jù)字符串S+String寫(xiě)在字典中,并在字典中添加一項(xiàng);
Step9:S=String,再一次轉(zhuǎn)到Step5;
Step10:在字典中編寫(xiě)與S對(duì)應(yīng)的代碼,將其輸出為字符流;
Step11:編寫(xiě)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法的結(jié)束碼。
針對(duì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮面臨的問(wèn)題,依據(jù)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法的原理,設(shè)計(jì)了實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法流程,利用實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法的實(shí)現(xiàn)步驟,完成實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法設(shè)計(jì),接下來(lái)通過(guò)設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮程序,來(lái)實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮。
在對(duì)實(shí)時(shí)數(shù)據(jù)沒(méi)有先驗(yàn)了解的情況下,選取第一個(gè)周期內(nèi)的實(shí)時(shí)數(shù)據(jù)樣本作為基準(zhǔn),利用距離測(cè)度來(lái)判斷實(shí)時(shí)數(shù)據(jù)出現(xiàn)的時(shí)刻,并再一次重新選擇基準(zhǔn)數(shù)據(jù)。采用歸一化距離測(cè)度的計(jì)算方法,如下式
(6)
其中,a表示實(shí)時(shí)數(shù)據(jù)向量,b表示基準(zhǔn)向量,d(a,b)表示實(shí)時(shí)數(shù)據(jù)向量和基準(zhǔn)向量的歸一化距離測(cè)度。
由于實(shí)時(shí)數(shù)據(jù)的信號(hào)頻率會(huì)出現(xiàn)一個(gè)比較小的波動(dòng),在確定實(shí)時(shí)數(shù)據(jù)周期的起止點(diǎn)時(shí)還會(huì)產(chǎn)生誤差,為了消除外界因素對(duì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮的影響,需要建立一個(gè)數(shù)據(jù)組,來(lái)保存各個(gè)周期實(shí)時(shí)數(shù)據(jù)的起點(diǎn)和終點(diǎn)。實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮流程如圖2所示。
圖2 實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮流程
根據(jù)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮流程,得到實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮步驟,如下:
Step1:獲取第一個(gè)采樣周期內(nèi)實(shí)時(shí)數(shù)據(jù)樣本作為初始的基準(zhǔn)向量Db,并將基準(zhǔn)向量Db賦值給實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮過(guò)程中的運(yùn)算基準(zhǔn)向量Dt;
Step2:按照一定順序?qū)⒁粋€(gè)采樣周期內(nèi)的實(shí)時(shí)數(shù)據(jù)樣本保存至中間向量Do中,將表征該數(shù)據(jù)起點(diǎn)和終點(diǎn)的參數(shù)保存在數(shù)組中,將Do與Dt做差值處理,并將計(jì)算得到的差值向量De保存到數(shù)據(jù)文件中;
Step3:通過(guò)與事先設(shè)定好的判決門(mén)限進(jìn)行對(duì)比,觀察實(shí)時(shí)數(shù)據(jù)樣本的歸一化測(cè)度值是否在連續(xù)兩個(gè)周期內(nèi)超過(guò)了該限值,從而來(lái)判斷實(shí)時(shí)數(shù)據(jù)樣本在連續(xù)兩個(gè)周期內(nèi)是否發(fā)生了畸變,如果實(shí)時(shí)數(shù)據(jù)樣本發(fā)生了較大畸變,將數(shù)組中表征該采樣周期內(nèi)截止點(diǎn)的實(shí)時(shí)數(shù)據(jù)后面添加一個(gè)標(biāo)記0,此時(shí)令該周期數(shù)據(jù)等于實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮過(guò)程中的運(yùn)算基準(zhǔn)向量Dt;如果實(shí)時(shí)數(shù)據(jù)樣本沒(méi)有發(fā)生了較大畸變,將數(shù)組中表征該采樣周期內(nèi)截止點(diǎn)的實(shí)時(shí)數(shù)據(jù)后面添加一個(gè)標(biāo)記-1,且實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮過(guò)程中的運(yùn)算基準(zhǔn)向量Dt保持不變;
Step4:如果仍然存在待處理的實(shí)時(shí)數(shù)據(jù),那么就跳轉(zhuǎn)到Step2繼續(xù)處理,否則就要跳轉(zhuǎn)到Step5;
Step5:對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行閾值處理,如下式
(7)
綜上所述,在負(fù)載均衡策略下,對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行了自適應(yīng)量化處理,通過(guò)設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法,簡(jiǎn)化了實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮的程序,結(jié)合實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮程序設(shè)計(jì),實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮。
為了驗(yàn)證負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法在實(shí)際應(yīng)用中的性能,通過(guò)MATLAB平臺(tái)進(jìn)行仿真分析。在仿真軟件中50m*50m的區(qū)域內(nèi)部署100個(gè)實(shí)時(shí)數(shù)據(jù)節(jié)點(diǎn)。仿真分析過(guò)程中采用1024*4個(gè)具有光強(qiáng)、溫度、濕度和節(jié)點(diǎn)電壓的實(shí)時(shí)數(shù)據(jù),擬合多項(xiàng)式的次數(shù)為1,2,3,相關(guān)性閾值為0.7,0.8,0.9,1.0時(shí),將負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法與文獻(xiàn)[4]提出的面向網(wǎng)絡(luò)通信的高實(shí)時(shí)壓縮方法、文獻(xiàn)[5]提出的管道漏磁檢測(cè)實(shí)時(shí)數(shù)據(jù)壓縮方法進(jìn)行對(duì)比,分別從壓縮比和通信能耗兩個(gè)指標(biāo)進(jìn)行對(duì)比實(shí)驗(yàn)分析。
三種方法的實(shí)時(shí)數(shù)據(jù)壓縮比測(cè)試結(jié)果如圖3所示。
圖3 實(shí)時(shí)數(shù)據(jù)壓縮比測(cè)試結(jié)果
從圖3中的測(cè)試結(jié)果可以看出,隨著相關(guān)性閾值的增大,三種數(shù)據(jù)壓縮方法的實(shí)時(shí)數(shù)據(jù)壓縮比也在逐漸增大,但是負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法始終小于文獻(xiàn)[4]提出的面向網(wǎng)絡(luò)通信的高實(shí)時(shí)壓縮方法和文獻(xiàn)[5]提出的管道漏磁檢測(cè)實(shí)時(shí)數(shù)據(jù)壓縮方法。原因是相關(guān)性閾值越大,實(shí)時(shí)數(shù)據(jù)序列之間的相關(guān)性就比較弱,需要設(shè)置更多的參數(shù)來(lái)進(jìn)行描述,當(dāng)相關(guān)性閾值為1時(shí),不需要考慮實(shí)時(shí)數(shù)據(jù)的相關(guān)性,此時(shí)實(shí)時(shí)數(shù)據(jù)的壓縮比達(dá)到了最大值;在相關(guān)性閾值相同的情況下,擬合次數(shù)越大,負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法對(duì)實(shí)時(shí)數(shù)據(jù)序列的分段個(gè)數(shù)就越少,因此,本文提出的負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法可以縮小實(shí)時(shí)數(shù)據(jù)的壓縮比。
對(duì)本文提出的負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法、文獻(xiàn)[4]提出的面向網(wǎng)絡(luò)通信的高實(shí)時(shí)壓縮方法和文獻(xiàn)[5]提出的管道漏磁檢測(cè)實(shí)時(shí)數(shù)據(jù)壓縮方法的實(shí)時(shí)數(shù)據(jù)通信能耗進(jìn)行測(cè)試對(duì)比,對(duì)比結(jié)果如圖4所示。
圖4 實(shí)時(shí)數(shù)據(jù)的通信能耗測(cè)試結(jié)果
從圖4的測(cè)試結(jié)果可以看出,隨著相關(guān)性閾值的增大,負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法的實(shí)時(shí)數(shù)據(jù)通信能耗逐漸降低,說(shuō)明負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法的壓縮效果越來(lái)越好,而隨著相關(guān)性閾值的增大,文獻(xiàn)[4]提出的面向網(wǎng)絡(luò)通信的高實(shí)時(shí)壓縮方法和文獻(xiàn)[5]提出的管道漏磁檢測(cè)實(shí)時(shí)數(shù)據(jù)壓縮方法的實(shí)時(shí)數(shù)據(jù)通信能耗逐漸上升。說(shuō)明本文提出的負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法的通信能耗始終小于其它兩種壓縮方法。
針對(duì)實(shí)時(shí)數(shù)據(jù)在漸進(jìn)式壓縮過(guò)程中受到數(shù)據(jù)特征的影響,降低了實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮性能,本文提出了負(fù)載均衡策略下實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮方法,在負(fù)載均衡策略下,對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行了自適應(yīng)量化處理,通過(guò)設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮算法,實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)的漸進(jìn)式壓縮。仿真結(jié)果顯示,該數(shù)據(jù)壓縮方法具有較高的實(shí)時(shí)數(shù)據(jù)漸進(jìn)式壓縮能力。