《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Zlib和DSP的傳感器數據壓縮方法的研究
基于Zlib和DSP的傳感器數據壓縮方法的研究
來源:電子技術應用2012年第11期
謝小勇,伍瑞卿,陳 偉,顧慶水,樊 豐
電子科技大學 電子工程學院,四川 成都611731
摘要: 針對傳感器數據在分組傳輸環境下的特點和要求,提出改進型的Zlib算法,實現對數據的分包無損壓縮并能夠獨立解壓,同時將優化壓縮程序移植到DSP F2812。以測井傳感器數據進行驗證,實驗結果表明,該方法保持了良好的壓縮效果,而且具有抗誤碼和丟包容錯的能力。
中圖分類號: TN919.3
文獻標識碼: B
文章編號: 0258-7998(2012)11-0041-03
Research of sensor data compression method based on Zlib and DSP
Xie Xiaoyong,Wu Ruiqing,Chen Wei,Gu Qingshui,Fan Feng
School of Electronic Engineering, University of Electronic Science and Technology,Chengdu 611731,China
Abstract: Aiming at characteristics and requirements of the logging sensor data packet transmission environment,this paper presents improved Zlib algorithm,which is able to achieve lossless compression and sub-logging data to be independent decompression.And then optimize the compression program ported to DSP F2812.With logging sensor data to verify,the test results show that the compression is good, and be able to solve the problem of fault-tolerant network errors and packet loss.
Key words : sensor data;Zlib;lossless compression;DSP;fault-tolerant

    在多傳感器測量系統中,為了精確測量,需要對傳感器輸出信號進行高速、高分辨率采樣[1]。這樣勢必會產生大量需要存儲的數據,占用很大的存儲空間,同時也不便于實時傳輸。但在一些嵌入式系統中,由于受到工藝、成本等各種因素的限制,存儲器空間非常有限,以至于經常采取降低采樣率的辦法來達到節省存儲空間的目的。為此,在采樣率和分辨率均不能降低的情況下,為了保證測量精度,對傳感器信號進行壓縮存儲、傳輸是十分必要的。

    目前,有關傳感器數據壓縮傳輸的研究有:(1)參考文獻[2]提出一種存儲有效的漸進小波數據壓縮算法,使得漸進傳送的數據單元能產生大的編碼增益,在存儲有效的同時又能夠節省網絡傳輸耗能;(2)參考文獻[3]提出了一種基于改進的二叉樹算法對原始采樣數據進行實時壓縮,對采樣數據在二維方向上進行去冗余處理,從而達到節省數據存儲空間、提高數據傳輸效率的目的;(3)參考文獻[4]針對測井傳感器數據特征將其分為兩類,第一類采用差分編碼(預處理),再用Huffman編碼壓縮輸出,第二類采用基于統計的預測模型和分段線性預測模型(PLOT)進行處理輸出。
    但以上幾種方法都是有損壓縮,無法完全恢復出原始數據,并且壓縮數據前后都有相關性,沒有提出一旦出現誤碼或丟包情況將如何正確解壓的問題。本文以無損壓縮方法中性能較優的Zlib為基礎,并采取改進措施,在保證壓縮率和實時性的前提下,解決網絡傳輸中誤碼和丟包容錯問題,同時對測井傳感器數據進行了測試實驗。
1 Zlib無損壓縮方法
    無損壓縮就是利用數據的統計冗余進行壓縮,并可完全回復原始數據而不引起任何失真。典型的無損壓縮算法如Shanno-Fano編碼、Huffman(哈夫曼)編碼、算術編碼、游程編碼、LZW編碼、LZ編碼以及應用最廣也是最好的結合LZ和Huffman編碼的DEFLATE編碼,其主要應用在RAR、LZMA、Zlib、Gzip、Bzip等壓縮算法中。
    雖然LZMA具有好的壓縮率,但是消耗資源過大(最小資源消耗在1 MB左右)且壓縮速率很慢,不適合實際嵌入式應用。所以本文選用Zlib壓縮算法,其中SYNC_FLUSH模式下的流程圖如1所示。

    首先初始化程序,然后將待壓縮數據存到處理窗口中,用LZ算法對待壓縮數據進行預處理。一方面通過Hash算法生成并不斷更新當前塊的壓縮字典;另一方面通過查找字典將數據匹配情況存到緩沖區中并統計其頻率。這樣通過未匹配字節、匹配長度和匹配距離描述了原始數據的匹配關系。當處理窗口數據被處理完之后,再利用動態和靜態Huffman算法對其匹配情況進行編碼,并比較選擇壓縮效果好的Huffman算法進行壓縮編碼輸出。但是如果選擇的是動態Huffman算法,還需要在壓縮數據之前用deflate_tree編碼壓縮動態Huffman字典編碼并輸出。當每個壓縮塊完成之后再加上Zlib容錯方式,如果是最后一個壓縮塊,則還需要最后輸出校驗信息,否則需要重新初始化壓縮下一個數據塊。
2 改進的Zlib算法
2.1 基本思想

    源Zlib壓縮算法中,SYNC_FLUSH模式雖然通過添加header信息和Zlib容錯方式字段實現分包壓縮,同時每個壓縮塊都重新生成字典實現相互獨立,但是仍然不能解決容錯問題,原因如下。
    (1)如果壓縮數據在網絡傳輸過程中出現誤碼的情況,并且誤碼之后的數據又能夠通過當前塊的壓縮字典解壓,但是解壓錯誤,而最后輸出錯誤的解壓結果不報錯;
    (2)如果出現丟包的情況,則解壓過程中會報異常且直接終止跳出,導致后面正確的壓縮塊不能正常解壓。
    針對以上兩個問題,本文提出改進并實現獨立分包壓縮并且能夠獨立解壓的方法,以解決因網絡傳輸導致的誤碼和丟包的容錯問題。此外,根據實際程序應用修改滑動窗口大小和內存消耗等級,大大減小了內存資源消耗。
2.2 獨立分包壓縮的算法流程
    每次讀4 KB樣本數據,然后獨立壓縮成一個壓縮塊放到輸出緩沖區,當輸出緩沖區內滿2 KB數據時就寫到輸出文件中。每次把4 B檢錯信息adler寫到壓縮塊最后(Zlib容錯方式0x0000ffff之前),便于解壓檢錯實現容錯機制。這樣就得到如圖2所示的壓縮數據格式。

    獨立分包壓縮要求每次都要初始化字典并重新建立字典,這樣會導致壓縮率(壓縮率=壓縮后數據大小/壓縮前數據大小)提高(即壓縮效果變差)。但是測試表明,壓縮效果較壓縮效果最好的NO_FLUSH模式(其生成的壓縮包之間相互關聯,如果出現誤碼或丟包情況,就會使出錯后的壓縮塊不能解壓)并沒有下降很多,壓縮率只提高了2%;而與源程序的SYNC_FLUSH模式壓縮率幾乎相等,因為雖然每個壓縮包都加了4 B的檢錯信息,但是只有第一個壓縮塊加了2 B的header信息,而源程序中每個壓縮塊都要加header信息且最后一個加了檢錯信息,最終生成的壓縮數據比源程序多(2×N-2)B,其中N表示壓縮塊的個數。由于都是獨立分包壓縮,解壓可以容錯,并且可以極大地減小其程序消耗的資源。因為這時并不需要分配大的滑動字典窗口和字典空間,優化之后總共動態分配空間為96 KB左右,而NO_FLUSH模式下資源消耗在260 KB左右。
2.3 獨立解壓的算法流程
    本文是模擬傳感器數據獨立分包壓縮再整體解壓,因為在實際工程中解壓程序是源源不斷地從輸入緩沖區中讀數據解壓。但是如果讀入的待解壓數據出現誤碼和丟包情況(而解壓程序并不知道),解壓程序必須實現獨立解壓功能,即丟棄出錯的壓縮塊而又不影響后面的正確的壓縮塊解壓,這就要求每個壓縮包必須是獨立壓縮。采用在每個壓縮塊后面寫入檢錯信息adler和Zlib容錯方式就能很好地解決這個問題。具體解壓流程圖如圖3所示。

    為了便于誤碼或丟包的測試,將壓縮數據存放在一個緩沖區中。這就要求預判壓縮數據大小再分配緩沖區空間保證有足夠大,再整體解壓;然后就是模擬誤碼和丟包情況:因為在分包壓縮過程中可以統計每個壓縮塊的大小,再根據壓縮塊的格式就可很容易修改Zlib頭信息、壓縮數據、檢錯信息和Zlib容錯方式來模擬誤碼,并且通過移除一定長度的壓縮數據來模擬丟包情況;最后對測井傳感器數據測試驗證了容錯能力。
2.4 壓縮算法的DSP實現
    首先在CCS3.3編譯環境下,選擇F2812的Device Simulator仿真。其DSP擴展一個256 KB的片外空間,因為程序在F2812中測試程序總空耗(程序執行消耗總資源,包括動態分配heap空間96 KB左右)為140 KB左右,并選擇大寄存器模式;設置heap大小;在調試程序通過之后選擇XDS560 emulator將程序下載到F2812上運行。在運行之前設置一個定時中斷,定時從樣本數據文件中讀數據到輸入緩沖區,而在壓縮程序中每次直接從輸入緩沖區中讀數據進行壓縮。
3 實驗與分析
    在現代傳感器遙測遙傳網絡中,石油測井網絡是極具代表性的。隨著測井技術的發展,尤其是組合測井、成像測井的出現,造成了測井數據的快速膨脹。但是數據傳輸帶寬的限制和實時的要求,不能夠把這些數據實時而可靠地傳到地面,成為阻礙測井技術發展的一大問題,迫切需要解決。而應用無損數據壓縮技術來減小數據傳輸量是最有效途徑之一[5]。
    所以本文以石油測井網絡為例,利用DSP F2812嵌入式平臺對測井數據進行實時壓縮,并把壓縮后的數據實時傳到地面PC機后再由網絡傳輸到控制中心進行實時解壓縮。測試結果如表1所示。其中樣本數據主要由自然伽瑪能譜測井儀、方位測井儀、電纜遙測傳輸儀、總線適配器等儀器采集生成。

 

 

    測試結果表明,不同類型測井數據樣本壓縮率、時延和壓縮速率差異還是很明顯的,主要由于不同樣本文件的數據結構差異很大。而且在滿足獨立分包壓縮前提下,每個包都要重新建立字典,包越小壓縮效果越差,而本方法的包只有4 KB,壓縮率基本上都在60%以下,但實時性也能達標。因為壓縮速率大于測井儀器的采集數據速率(這取決于不同的儀器速率傳輸能力和采集間隔的控制,但最大不超過500 kb/s)。而在沒改進之前,farheap空間占192 KB,heap空間占40 KB,程序總消耗約為260 KB,所以改進后的Zlib算法運行所占資源很少且壓縮效果很好,適合于嵌入式平臺應用。由于壓縮程序的移植優化只是在算法和程序結構上,并沒有進一步在匯編級別上的優化,因此壓縮速率提升空間還很大。
    本文針對傳感器數據在分組傳輸環境下的特點和要求,提出基于Zlib的傳感器數據壓縮方法,并在DSP嵌入式平臺上得到應用驗證。本壓縮方法具有良好的壓縮效果和壓縮速率,并且能夠實現分包壓縮獨立解壓,解決了在網絡傳輸過程中誤碼和丟包的容錯問題,
參考文獻
[1] LEMING S K,STALFORD H L.Bridge weigh-in-motion system development using superposition of dynamic truck/static bridge Interaction[C].IEEE American Control Conference,2003.
[2] 周四望,林亞平,葉松濤,等.傳感器網絡中一種存儲有效的小波漸進數據壓縮算法[J].計算機研究與發展,2009,46(12):2085-2092.
[3] 劉貞,王祁.多傳感器信號數據采集實時壓縮算法[J].傳感技術學報,2006,19(6):2712-2715.
[4] 漢澤西,郭楓,呂飛.測井數據的無損壓縮方法研究[J]. 現代電子技術,2004(22):94-96.
[5] 郭楓,漢澤西.測井數據的無損壓縮方法研究[D].西安:西安石油大學,2005.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩视频一区二区在线观看 | 亚洲少妇诱惑| 亚洲国产精品欧美一二99| 香蕉久久一区二区不卡无毒影院| 亚洲视频电影图片偷拍一区| 亚洲精品国产精品久久清纯直播 | 亚洲伊人第一页| 一区二区三区四区国产| 99riav国产精品| 日韩午夜电影| 夜色激情一区二区| 一本久道久久综合中文字幕| 日韩图片一区| 一本色道婷婷久久欧美| 亚洲深夜福利| 亚洲一级免费视频| 亚洲自拍偷拍麻豆| 午夜在线观看免费一区| 亚欧美中日韩视频| 久久精品国产欧美亚洲人人爽| 欧美一级久久| 亚洲国产成人高清精品| 亚洲欧洲三级| 一区二区三区日韩在线观看| 亚洲一区欧美激情| 欧美一区二区视频观看视频| 久久精品在线观看| 久久综合色综合88| 欧美激情中文字幕在线| 欧美精品一区二区视频| 欧美日韩一区二区视频在线| 国产精品福利久久久| 国产日韩一级二级三级| 精品动漫3d一区二区三区免费 | 亚洲午夜精品福利| 欧美一区二区三区在线视频| 亚洲国产日韩欧美在线99| 亚洲剧情一区二区| 亚洲一区二区三区精品动漫| 欧美亚洲视频在线观看| 久久综合精品国产一区二区三区| 欧美成人免费va影院高清| 欧美日韩一区不卡| 国产日韩精品久久久| 在线播放中文字幕一区| 99精品99| 久久av资源网站| 夜夜爽av福利精品导航| 香蕉久久精品日日躁夜夜躁| 久久天天狠狠| 欧美日韩成人网| 国产伦精品一区二区三区视频孕妇| 韩国精品久久久999| 亚洲精品中文字幕在线观看| 亚洲欧美日韩综合一区| 亚洲精品护士| 午夜精品久久久久久99热| 久久人人爽人人| 欧美日韩一区二区在线播放| 国产人成一区二区三区影院| 亚洲国产婷婷香蕉久久久久久99 | 亚洲综合色婷婷| 亚洲国产日韩美| 午夜久久电影网| 欧美不卡一卡二卡免费版| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 国产偷久久久精品专区| 亚洲国产一区二区视频| 亚洲综合精品四区| 亚洲精品女av网站| 香港成人在线视频| 欧美成人中文| 国产亚洲精品aa| 亚洲免费激情| 亚洲国产精品成人| 欧美一级欧美一级在线播放| 欧美激情第9页| 韩国一区二区在线观看| 一区二区三区不卡视频在线观看 | 在线不卡a资源高清| 亚洲综合欧美日韩| 99国产精品99久久久久久| 久久久久久一区二区三区| 国产精品mv在线观看| 在线国产欧美| 欧美一区二区成人6969| 亚洲欧美日韩精品一区二区 | 欧美日韩在线三区| 在线观看国产精品淫| 亚洲永久免费观看| 99精品热视频只有精品10| 久久人人精品| 国产日产高清欧美一区二区三区| 99视频精品在线| 亚洲日本电影在线| 老司机午夜精品| 国产一区二区成人| 亚洲在线一区二区| 一区二区欧美日韩视频| 欧美波霸影院| 一区二区三区自拍| 性久久久久久| 亚洲欧美日韩国产综合| 欧美午夜视频| 日韩系列欧美系列| 99视频在线观看一区三区| 免费视频久久| 伊人成年综合电影网| 久久精品国产久精国产爱| 久久精品视频在线看| 国产精品视频网| 中文精品99久久国产香蕉| 这里只有精品丝袜| 欧美精品免费播放| 最新中文字幕一区二区三区| 亚洲欧洲午夜| 蜜桃精品久久久久久久免费影院| 国产综合精品一区| 久久国产精品久久国产精品 | 狠色狠色综合久久| 午夜精品一区二区三区四区| 欧美一级久久久久久久大片| 国产美女高潮久久白浆| 午夜精品理论片| 欧美在线网址| 国产视频一区三区| 久久av红桃一区二区小说| 久久久综合网站| 极品尤物av久久免费看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜国产精品影院在线观看| 欧美午夜久久| 在线一区免费观看| 亚洲欧美日韩中文播放| 国产久一道中文一区| 午夜视黄欧洲亚洲| 久久久久久久综合| 在线播放精品| 一本大道久久精品懂色aⅴ| 欧美性猛交xxxx乱大交蜜桃 | 午夜欧美大尺度福利影院在线看| 久久精品国产999大香线蕉| 国内精品免费在线观看| 亚洲青色在线| 欧美色欧美亚洲另类二区| 亚洲四色影视在线观看| 久久精品色图| 91久久线看在观草草青青| 亚洲神马久久| 国产欧美精品在线播放| 久久精品国产亚洲一区二区三区| 免费在线观看日韩欧美| 一区二区高清在线| 欧美伊人影院| **性色生活片久久毛片| 亚洲先锋成人| 国产视频在线观看一区| 91久久夜色精品国产九色| 欧美欧美天天天天操| 亚洲一区二区黄| 另类春色校园亚洲| 夜色激情一区二区| 久久精品亚洲精品| 亚洲激情网站| 香蕉久久一区二区不卡无毒影院| 黄色成人av网| 亚洲图片在区色| 国产真实久久| 一本一本大道香蕉久在线精品| 国产精品试看| 亚洲黄色在线| 国产精品视频不卡| 亚洲人成在线观看| 国产精品久久久久久久久婷婷 | 欧美一区二区三区在线免费观看| 亚洲高清视频一区二区| 亚洲欧美区自拍先锋| 在线精品国产成人综合| 亚洲小视频在线观看| 狠狠综合久久av一区二区老牛| 中文亚洲字幕| 国产专区精品视频| 在线综合亚洲欧美在线视频| 国内精品嫩模av私拍在线观看| 亚洲天堂久久| 樱花yy私人影院亚洲| 亚洲欧美日本另类| 在线成人激情| 午夜精品久久久久久久久| 亚洲精品欧美激情| 久久综合久久久久88| 亚洲自拍都市欧美小说| 欧美人成网站| 亚洲国产精品第一区二区三区| 国产精品久久久久久福利一牛影视| 亚洲黄色在线视频| 国产色爱av资源综合区| 亚洲一区二区免费看| 亚洲黄色成人| 裸体丰满少妇做受久久99精品|