伍漢青,周 偉,楊群慧,3,季福武,3
(1.同濟大學(xué)海洋地質(zhì)國家重點實驗室/海洋與地球科學(xué)學(xué)院,上海 200092;2.同濟大學(xué)電子與信息工程學(xué)院,上海 201804;3.同濟大學(xué)國家海底科學(xué)觀測系統(tǒng)項目辦公室,上海 200092)
海洋潛標(biāo)通過錨泊系留系統(tǒng)固定于特定海域和水深,通過搭載各種觀測設(shè)備實現(xiàn)海面以下的海洋環(huán)境要素的長期觀測,布放回收機動靈活,被認(rèn)為是海洋環(huán)境監(jiān)測中最可靠、最準(zhǔn)確的手段之一,得到了廣泛的應(yīng)用[1-2]。長期以來,海洋潛標(biāo)多以自帶電源的自容式模式工作,觀測周期短則數(shù)月、長則可達一年以上。自容式潛標(biāo)搭載各種傳感器采集的海洋環(huán)境觀測數(shù)據(jù),早期主要通過回收潛標(biāo)后導(dǎo)出數(shù)據(jù);近年來,伴隨水聲通信技術(shù)、感應(yīng)耦合式數(shù)據(jù)傳輸技術(shù)的發(fā)展,潛標(biāo)數(shù)據(jù)實現(xiàn)了準(zhǔn)實時的傳輸,定期傳輸?shù)胶C?,再通過衛(wèi)星傳輸?shù)桨痘鵞3]。但是水聲通信和感應(yīng)耦合式數(shù)據(jù)傳輸能力極其有限,水聲通信的數(shù)據(jù)率和通信距離成反比,通信距離超過10 km時,數(shù)據(jù)傳輸速率不超過10 kbps[4];感應(yīng)耦合式數(shù)據(jù)傳輸速率最高僅為9.6 kbps[5]。綜合考慮海洋無線通信的物理局限性與海洋環(huán)境的高復(fù)雜度,海洋潛標(biāo)原始觀測數(shù)據(jù)的存儲和實時傳輸面臨挑戰(zhàn),而將觀測數(shù)據(jù)壓縮處理好之后再存儲和傳輸,不僅可以有效節(jié)省存儲空間,提高無線數(shù)據(jù)傳輸能力,而且可以降低系統(tǒng)功耗,進而延長潛標(biāo)自主工作時間,增強系統(tǒng)性能。
常用的海洋傳感器數(shù)據(jù)無損壓縮算法可分為基于統(tǒng)計模型的算法和基于字典模型的算法兩大類,比較具有代表性的分別為動態(tài)Huffman算法、LZW算法(Lempel-Ziv-Welch Encoding)和Mini-LZO算法(Mini-Lempel-Ziv-Oberhumer)。動態(tài)Huffman算法的核心思想是通過動態(tài)地調(diào)整Huffman樹,用前面n-1個字符出現(xiàn)的頻率對第n個出現(xiàn)的字符進行編碼,使原數(shù)據(jù)變成一個以0、1為形式的新的數(shù)據(jù)串,從而有效地實現(xiàn)數(shù)據(jù)壓縮[6]。動態(tài)Huffman編碼的特點是任何一個編碼絕不會是其他編碼的前綴,保證了對編碼解碼時的唯一性。LZW算法的核心思想是在原始數(shù)據(jù)中不同字符的基礎(chǔ)上建立字典,然后用字典中字符的編碼索引來替代原始數(shù)據(jù)中相應(yīng)的字符,從而實現(xiàn)數(shù)據(jù)壓縮[7]。LZW算法的特點是壓縮后的編碼是自解釋的,解壓縮時可以通過編碼后的數(shù)據(jù)生成字典。Mini-LZO算法是為嵌入式系統(tǒng)中僅需要簡單壓縮和解壓縮功能的程序而設(shè)計的,它的特點是犧牲了壓縮效率換來了較快的壓縮速度[8]。
上述無損壓縮算法主要利用字符出現(xiàn)頻率的冗余度對數(shù)據(jù)進行壓縮,且編碼可實時進行,提高了數(shù)據(jù)處理時效。但是這些算法的壓縮率受統(tǒng)計冗余度的理論限制,而且當(dāng)數(shù)據(jù)中各字段出現(xiàn)頻率不高時,無法有效處理冗余的字符串信息,導(dǎo)致整體壓縮效果大打折扣。若想要以更高效的方式將這些算法用于海洋傳感器的數(shù)據(jù)壓縮,可以利用數(shù)據(jù)特點對數(shù)據(jù)進行預(yù)處理,從而突破壓縮率的理論限制[9]。本文根據(jù)海洋潛標(biāo)經(jīng)常搭載的溫鹽深(Conductivity-Temperature-Depth,CTD)傳感器、溶解氧(Dissolved Oxygen,DO)傳感器、甲烷傳感器、單點海流計等傳感器的數(shù)據(jù)格式特點,設(shè)計了一種通用的數(shù)據(jù)預(yù)處理算法,該算法通過數(shù)據(jù)篩選、數(shù)據(jù)差分計算、數(shù)據(jù)去重等步驟對傳感器數(shù)據(jù)進行預(yù)處理,可以大幅提高壓縮算法的數(shù)據(jù)壓縮效率。
表1展現(xiàn)了潛標(biāo)上最常搭載的美國海鳥公司生產(chǎn)的含溶解氧的溫鹽深(CTD-DO)傳感器SBE 37-SMP-ODO MicroCAT和德國Frantech公司生產(chǎn)的METS甲烷傳感器的數(shù)據(jù)格式??梢钥闯?,CTD-DO傳感器的數(shù)據(jù)特點為:各參數(shù)數(shù)據(jù)均為美國信息交換標(biāo)準(zhǔn)代碼(American Standard Code for Information Interchange,ASCII)表示的十進制數(shù)據(jù),數(shù)據(jù)高位無有效數(shù)據(jù)時用空格補充,小數(shù)點前一位及低位無有效數(shù)據(jù)時用“0”補充;所有數(shù)據(jù)通過逗號隔開,日期和時間前面有一個空格,每條數(shù)據(jù)以回車、換行符作為結(jié)束標(biāo)志。METS甲烷傳感器數(shù)據(jù)的特點為:前兩個數(shù)據(jù)為有效數(shù)據(jù),均為ASCII碼表示的十六進制數(shù)據(jù);后六個數(shù)據(jù)為預(yù)留位,無實際意義;所有數(shù)據(jù)通過空格隔開,每條數(shù)據(jù)以回車符作為結(jié)束標(biāo)志。單點海流計的原始數(shù)據(jù)格式由于篇幅較長,未在表1中展示,其數(shù)據(jù)格式特點為:各參數(shù)數(shù)據(jù)均以ASCII碼表示(包括數(shù)字、字母和符號),每條數(shù)據(jù)有固定的起始位和結(jié)束位,數(shù)據(jù)文件以可擴展標(biāo)記語言(Extensible Markup Language,XML)格式傳輸。
表1 SBE 37-SMP-ODO MicroCAT傳感器及METS甲烷傳感器數(shù)據(jù)格式
綜上所述,海洋潛標(biāo)搭載的傳感器所采集的數(shù)據(jù)通常以ASCII碼表示的數(shù)字、英文字符和控制字符為主,且每個字符均有概率出現(xiàn)。
從海洋潛標(biāo)通常搭載的傳感器的數(shù)據(jù)格式特征可知,傳感器輸出的原始數(shù)據(jù),除觀測要素數(shù)值外,還有不少表示采集參數(shù)或傳感器配置的英文字符及個別控制字符,省略這些字符并不影響觀測數(shù)據(jù)的研究[10]。另外,傳感器長期處于固定水域工作,采集的數(shù)據(jù)往往具有時間或空間的相關(guān)性[11]。
根據(jù)海洋傳感器的上述數(shù)據(jù)特點,本文提出了一種數(shù)據(jù)預(yù)處理算法,其實現(xiàn)流程如圖1所示。首先對海洋傳感器數(shù)據(jù)進行數(shù)據(jù)篩選,去除冗余數(shù)據(jù),篩選出重要的傳感器數(shù)據(jù);然后再進行數(shù)據(jù)差分運算,利用觀測數(shù)據(jù)的相關(guān)性實現(xiàn)數(shù)據(jù)壓縮;最后通過數(shù)據(jù)去重運算進一步降低數(shù)據(jù)冗余,完成傳感器觀測數(shù)據(jù)的預(yù)處理。利用無損壓縮算法對預(yù)處理后的傳感器數(shù)據(jù)進一步壓縮,從而大幅提高數(shù)據(jù)壓縮效率。在海洋傳感器數(shù)據(jù)預(yù)處理過程中,由于數(shù)據(jù)篩選算法為有損壓縮算法,因此將同步建立解壓縮協(xié)議,以確保解壓縮后測量數(shù)據(jù)的無損還原。
圖1 數(shù)據(jù)預(yù)處理算法實現(xiàn)流程
針對潛標(biāo)搭載的海洋傳感器輸出的原始觀測數(shù)據(jù)特點,通過刪除數(shù)據(jù)中冗余的格式化字符,篩選出有意義的數(shù)值,隨后對數(shù)據(jù)進行重組變換等處理,從而實現(xiàn)數(shù)據(jù)篩選,該算法實現(xiàn)的具體步驟如下。
(1)對觀測時間數(shù)據(jù)進行壓縮。以按天為單位采集與存儲的傳感器為例,只記錄起始時間和停止時間的年、月、日信息;期間采集數(shù)據(jù)的時間信息則用十六進制數(shù)序號1、2、3……代替,表示距離起始時間之后的第一天、第二天、第三天……;通過數(shù)字間隔表示數(shù)據(jù)采集時間。
(2)保留傳感器直接觀測量,刪除觀測數(shù)據(jù)參數(shù)中的冗余值。
(3)更換數(shù)據(jù)表示方式,如負(fù)數(shù)表示方法,降低數(shù)據(jù)占有量。
(4)將浮點數(shù)運算改為整數(shù)運算。將各浮點數(shù)測量值的整數(shù)位部分與小數(shù)位部分分離,分別進行運算,從而將浮點數(shù)的運算轉(zhuǎn)換為整數(shù)運算,具體計算方法見式(1)和式(2);同時省略非字母數(shù)字字符(如小數(shù)點和分隔符)。最后按各參數(shù)的傳輸順序先排列整數(shù)部分、再排列各參數(shù)小數(shù)部分,形成一串新的數(shù)據(jù)流。
式中,A為某參數(shù)的原始數(shù)據(jù);Int為該數(shù)據(jù)的整數(shù)部分;Dec為該數(shù)據(jù)的小數(shù)部分;n為該參數(shù)小數(shù)部分的位數(shù)。
篩選出傳感器原始數(shù)據(jù)中的關(guān)鍵數(shù)值、刪除數(shù)據(jù)冗余部分不僅可以節(jié)省存儲空間,還能在一定程度上簡化計算過程、提高計算精度。
海洋潛標(biāo)布放于特定海域開展海洋環(huán)境參數(shù)的長期連續(xù)監(jiān)測,當(dāng)采集的數(shù)據(jù)變化較小時,可使用差分壓縮算法降低數(shù)據(jù)量,實現(xiàn)數(shù)據(jù)壓縮。差分壓縮算法通過采用采樣數(shù)據(jù)間的變化量代替原有數(shù)據(jù)實現(xiàn)數(shù)據(jù)壓縮。
差分壓縮算法的主要步驟如下。
(1)設(shè)原始數(shù)據(jù)序列X0,X1,…,Xn,首先對數(shù)據(jù)進行差分計算,見式(3)至式(5)。
式(5)中,當(dāng)Xn-Xn-1>0時,Sn=01;Xn-Xn-1<0時,Sn=00。
經(jīng)差分處理后得到的編碼為:A0,S1+A1,…,Sn+An。
(2)為了避免差分算法產(chǎn)生累積誤差并且適應(yīng)觀測點數(shù)據(jù)變化,每隔若干個采樣數(shù)據(jù),參考點An變化1次。將新的采樣數(shù)據(jù)作為新的參考數(shù)據(jù)進行差分計算。圖2為每隔20個采樣點更換新的參考數(shù)據(jù)進行差分壓縮的算法流程圖。
圖2 差分壓縮算法流程圖
由于差分壓縮算法只涉及減法、不涉及乘除法,因此計算過程簡單、執(zhí)行效率高,有利于減少嵌入式系統(tǒng)的工作負(fù)擔(dān)和工作時間、降低系統(tǒng)功耗。
海洋傳感器輸出的原始觀測數(shù)據(jù)經(jīng)過數(shù)據(jù)篩選和差分處理后得到的編碼會存在較多重復(fù)0值,去重算法對數(shù)據(jù)序列中重復(fù)的0進行編碼進一步降低數(shù)據(jù)長度。
去重算法的主要步驟如下。
(1)設(shè)原始數(shù)據(jù)序列X1,X2,X3,…,Xn。
(2)如果該序列中有一段數(shù)據(jù):Xi=Xi+1=…=Xi+N=0,其中N≤15,則將這段數(shù)據(jù)編碼記錄為“0N”,表示有N個重復(fù)的0,N為十六進制表示的數(shù)字。
(3)此時原始數(shù)據(jù)序列變?yōu)椋篨1,X2,…,0N,…,Xn
(4)重復(fù)上述步驟,就可以得到對原數(shù)據(jù)序列去重處理后的編碼。
在對數(shù)據(jù)預(yù)處理算法得到的原數(shù)據(jù)文件進行解壓縮時,按照程序逆推運行的思想進行處理。首先對壓縮數(shù)據(jù)進行去重算法的解壓縮處理,將編碼中的“0N”還原為N個連續(xù)的0;隨后進行差分壓縮算法的解壓縮處理,根據(jù)標(biāo)志位進行相鄰數(shù)據(jù)的加和處理,即可得到經(jīng)數(shù)據(jù)篩選算法處理后的傳感器數(shù)據(jù)編碼。由于去重算法和差分算法均屬于無損壓縮算法,因此數(shù)據(jù)可以完整復(fù)原;雖然數(shù)據(jù)篩選算法部分屬于有損壓縮,但是刪除的數(shù)據(jù)都是格式化字符和冗余字符,結(jié)合壓縮過程中同步建立的解壓縮協(xié)議仍可以完整恢復(fù)。最終將壓縮后的傳感器數(shù)據(jù)恢復(fù)為包含完整測量信息的數(shù)據(jù),保證海洋觀測數(shù)據(jù)的完整性。
算法復(fù)雜度是指算法在編寫成可執(zhí)行程序后,運行時所需要的資源,衡量一個算法復(fù)雜度的標(biāo)準(zhǔn)包括時間復(fù)雜度和空間復(fù)雜度。算法中程序重復(fù)執(zhí)行的次數(shù)T(n)是問題規(guī)模n的某個函數(shù),記作T(n)=O(f(n))。一般情況下,主要用算法時間復(fù)雜度的數(shù)量級評價一個算法的時間性能,算法的時間復(fù)雜度越大,算法的執(zhí)行效率越低。算法的空間復(fù)雜度同樣是問題規(guī)模n的某個函數(shù),記作S(n)=O(f(n))。算法的空間復(fù)雜度只考慮運行過程中為局部變量分配的臨時空間的大小,空間復(fù)雜度越大,運算時需要的內(nèi)存資源越多。
數(shù)據(jù)篩選算法涉及數(shù)據(jù)的解析與重構(gòu),該算法會順序讀取原始數(shù)據(jù),并按位進行判斷與處理,代碼運行的次數(shù)隨數(shù)據(jù)長度n的變化而變化,數(shù)據(jù)篩選算法的時間復(fù)雜度屬于線性階量級,記為式(6)。
數(shù)據(jù)篩選算法在進行數(shù)據(jù)讀取和解析的同時會把相關(guān)的冗余信息刪除,執(zhí)行期間幾乎不需要臨時空間,因此,其空間復(fù)雜度可以記為式(7)。
數(shù)據(jù)差分算法的計算過程只涉及加減法,不涉及乘除法等復(fù)雜運算,其代碼運行的次數(shù)隨數(shù)據(jù)長度n的變化而變化,因此,其時間復(fù)雜度屬于線性階量級,記為式(8)。
數(shù)據(jù)差分算法執(zhí)行期間,需要定義臨時存儲單元來存放差分運算中的被減數(shù)與減數(shù),因此所需的臨時空間與數(shù)據(jù)長度n無關(guān),其空間復(fù)雜度屬于常數(shù)階量級,記為式(9)。
去重算法首先讀取待壓縮數(shù)據(jù),隨后通過判斷原始數(shù)據(jù)序列中重復(fù)0的個數(shù)來完成壓縮,該算法代碼的總執(zhí)行次數(shù)隨數(shù)據(jù)長度n的變化而變化,因此,其時間復(fù)雜度屬于線性階量級,記為式(10)。
由于去重算法只針對數(shù)據(jù)中重復(fù)的0進行處理,不處理其他數(shù)據(jù),因此執(zhí)行去重算法時所需的臨時空間只與待壓縮數(shù)據(jù)中重復(fù)0的個數(shù)有關(guān),而與數(shù)據(jù)長度n無關(guān),其空間復(fù)雜度屬于常數(shù)階量級,記為式(11)。
將式(6)、(8)、(10)加和,即可得到數(shù)據(jù)預(yù)處理算法的時間復(fù)雜度,記為式(12)。
將式(7)、(9)、(11)加和,即可得到數(shù)據(jù)預(yù)處理算法的空間復(fù)雜度,記為式(13)。
由式(12)、(13)可知,數(shù)據(jù)預(yù)處理算法的時間復(fù)雜度為線性階、空間復(fù)雜度為常數(shù)階。對于嵌入式系統(tǒng)的微控制器而言,經(jīng)過預(yù)處理后的數(shù)據(jù)再利用無損壓縮算法進行壓縮,既可以降低臨時內(nèi)存資源的占用消耗,又可以減少算法整體的運算量,提升計算速度。
海洋潛標(biāo)最常搭載的美國海鳥公司生產(chǎn)的CTD-DO傳感器SBE 37-SMP-ODO MicroCAT輸出的數(shù)據(jù)示例如下,參數(shù)從左到右分別代表溫度、電導(dǎo)率、壓力、鹽度、聲速和時間信息(數(shù)據(jù)格式見表1)。
在Matlab平臺按數(shù)據(jù)預(yù)處理算法的步驟對示例數(shù)據(jù)依次進行壓縮,分析數(shù)據(jù)預(yù)處理算法對傳感器原始數(shù)據(jù)的壓縮能力,圖3所示為實驗結(jié)果。
圖3 數(shù)據(jù)預(yù)處理算法壓縮效果
數(shù)據(jù)表明:對長度為146 B的傳感器原始數(shù)據(jù)進行數(shù)據(jù)篩選處理,得到長度為51 B的編碼,數(shù)據(jù)長度壓縮為原始數(shù)據(jù)的35%,這一結(jié)果說明數(shù)據(jù)篩選算法通過刪除冗余數(shù)據(jù)、保留關(guān)鍵數(shù)據(jù)能夠大幅降低原始數(shù)據(jù)長度。經(jīng)數(shù)據(jù)篩選后的編碼再通過差分和去重復(fù)處理后,得到長度為38 B的編碼,數(shù)據(jù)長度壓縮為原始數(shù)據(jù)的26%,這一結(jié)果說明差分算法和去重算法可以進一步壓縮數(shù)據(jù)長度。該實驗證明了數(shù)據(jù)預(yù)處理算法可以逐步降低原始數(shù)據(jù)的數(shù)據(jù)量,為后續(xù)應(yīng)用其他無損壓縮算法更快速、高效地壓縮數(shù)據(jù)打下基礎(chǔ)。
選取10組長度不同的SBE 37-SMP-ODO MicroCAT傳感器數(shù)據(jù),在Matlab平臺分別使用動態(tài)Huffman算法、LZW算法和Mini-LZO算法對其進行壓縮;隨后同樣的數(shù)據(jù)先經(jīng)過本文設(shè)計的數(shù)據(jù)預(yù)處理算法進行處理,再利用上述三種壓縮算法進行壓縮,對比這兩種情況下的壓縮表現(xiàn)和壓縮率(壓縮后的數(shù)據(jù)長度/原始數(shù)據(jù)長度×100%[12])并進行對比,結(jié)果如圖4至圖6所示。
對圖4至圖6進行分析可知:
圖4 動態(tài)Huffman算法有無數(shù)據(jù)預(yù)處理的壓縮效果對比
圖6 Mini-LZO算法有無數(shù)據(jù)預(yù)處理的壓縮效果對比
(1)未使用數(shù)據(jù)預(yù)處理算法時,動態(tài)Huffman算法對傳感器數(shù)據(jù)的壓縮率在45%左右,并沒有隨原始數(shù)據(jù)量的增加而發(fā)生波動,均保持在相對穩(wěn)定的狀態(tài),最大差值不超過2%;LZW算法對傳感器數(shù)據(jù)的壓縮率在50%~70%范圍內(nèi),壓縮率隨原始數(shù)據(jù)量的增長而小幅下降;Mini-LZO算法對傳感器數(shù)據(jù)的壓縮率在10%~90%范圍內(nèi),壓縮率隨原始數(shù)據(jù)量的增長而大幅下降。數(shù)據(jù)經(jīng)預(yù)處理后,三種壓縮算法中,動態(tài)Huffman算法的壓縮效果最好。其中,動態(tài)Huffman算法對傳感器數(shù)據(jù)的壓縮率穩(wěn)定在6.5%左右,相較于不使用數(shù)據(jù)預(yù)處理算法時的壓縮效果提升了86%左右;LZW算法對傳感器數(shù)據(jù)的壓縮率較為穩(wěn)定,保持在15%左右,相較于不使用數(shù)據(jù)預(yù)處理算法時的壓縮效果提升了72%左右;Mini-LZO算法對傳感器數(shù)據(jù)的壓縮率相較于不使用數(shù)據(jù)預(yù)處理算法時改善不明顯,但壓縮效果仍有小幅度提升,最高提升了約25%。
圖5 LZW算法有無數(shù)據(jù)預(yù)處理的壓縮效果對比
(2)對動態(tài)Huffman算法而言,數(shù)據(jù)預(yù)處理算法有效降低了原始數(shù)據(jù)的冗余度,在保持原算法穩(wěn)定性的同時降低了壓縮率,提升了壓縮效果。對LZW算法而言,單個字符的重復(fù)次數(shù)隨著數(shù)據(jù)量增大而提升,使得壓縮率隨著測試數(shù)據(jù)量的增大而減小最后趨于穩(wěn)定;數(shù)據(jù)預(yù)處理算法可以有效降低原始數(shù)據(jù)冗余度,同時還能將數(shù)據(jù)轉(zhuǎn)化為由固定字符組成的編碼,既提升了LZW算法的壓縮效果,又增強了算法的穩(wěn)定性。Mini-LZO算法需要對數(shù)據(jù)進行分塊壓縮,每次壓縮都會構(gòu)建新的字典,相當(dāng)于丟掉了數(shù)據(jù)之間的關(guān)聯(lián)性信息,因此壓縮率穩(wěn)定性較差;數(shù)據(jù)預(yù)處理算法可以基于數(shù)據(jù)之間的關(guān)聯(lián)性信息進行壓縮,從而小幅度提升算法的壓縮效率。
Matlab仿真實驗結(jié)果證明了數(shù)據(jù)預(yù)處理算法的價值,即它可以有效對傳感器原始數(shù)據(jù)進行壓縮且適用于多種無損壓縮算法。數(shù)據(jù)經(jīng)過預(yù)處理后,各無損壓縮算法的壓縮效率和壓縮穩(wěn)定性均有不同程度的提升,有利于增強通信網(wǎng)絡(luò)在單位時間內(nèi)的吞吐傳輸能力,從而提高潛標(biāo)的無線傳輸能力。對于同一組觀測數(shù)據(jù)而言,由于數(shù)據(jù)中包含冗余信息,直接使用壓縮算法進行壓縮,耗費的工作量大、工作時間長;數(shù)據(jù)預(yù)處理算法剔除觀測數(shù)據(jù)中的冗余信息后,再利用壓縮算法進行壓縮,可以減少壓縮算法的工作量和計算時間,從而提升了算法的計算速度。
為了驗證數(shù)據(jù)預(yù)處理算法應(yīng)用于其他海洋傳感器觀測數(shù)據(jù)壓縮是否具備通用性,本文還分別對潛標(biāo)通常搭載的挪威安德拉公司的單點海流計和德國Franatech公司的METS甲烷傳感器的原始數(shù)據(jù),使用動態(tài)Huffman算法和結(jié)合數(shù)據(jù)預(yù)處理的動態(tài)Huffman算法進行壓縮,壓縮結(jié)果見表2、表3。
由表2、表3可知,長度為350 B的METS甲烷傳感器原始數(shù)據(jù)經(jīng)動態(tài)Huffman算法壓縮后得到的編碼長度為164 B,壓縮率約為46.85%;經(jīng)數(shù)據(jù)預(yù)處理后再使用動態(tài)Huffman算法壓縮后得到的編碼長度為28 B,壓縮率約為8%,壓縮效果提升了約82.9%。長度為4818 B的單點海流計原始數(shù)據(jù)經(jīng)動態(tài)Huffman算法壓縮后得到的編碼長度為2199 B,壓縮率約為45.64%;經(jīng)數(shù)據(jù)預(yù)處理后再使用動態(tài)Huffman算法壓縮后得到的編碼長度為307 B,壓縮率約為6.37%,壓縮效果提升了約86%。實驗數(shù)據(jù)表明,針對單點海流計和METS甲烷傳感器的原始觀測數(shù)據(jù),數(shù)據(jù)預(yù)處理算法對無損壓縮算法的壓縮效果也有明顯的提升,具備傳感器觀測數(shù)據(jù)的通用性。
表2 METS甲烷傳感器數(shù)據(jù)壓縮結(jié)果對比
表3 單點海流計數(shù)據(jù)壓縮結(jié)果對比
本文根據(jù)海洋潛標(biāo)搭載的海洋傳感器所輸出的觀測數(shù)據(jù)特點,提出了一種數(shù)據(jù)預(yù)處理算法,通過數(shù)據(jù)篩選、差分和數(shù)據(jù)去重,去除原始數(shù)據(jù)中的冗余信息,完成對傳感器數(shù)據(jù)的預(yù)處理。從算法復(fù)雜度方面來看:數(shù)據(jù)預(yù)處理算法通過將浮點數(shù)運算轉(zhuǎn)換成整數(shù)運算、只進行減法運算而不進行乘除運算等操作,降低微控制器的運算量,提升運算速度,而且執(zhí)行時所需的臨時內(nèi)存資源較少,適用于海洋潛標(biāo)嵌入式系統(tǒng)。從Matlab仿真試驗結(jié)果中的壓縮率表現(xiàn)來看:結(jié)合數(shù)據(jù)預(yù)處理算法,動態(tài)Huffman算法對于CTD-DO傳感器觀測數(shù)據(jù)的壓縮率在所有算法中最低,可達6.5%左右,壓縮效率較之前提高了約86%;LZW算法對于CTD-DO傳感器觀測數(shù)據(jù)的壓縮率可達15%左右,壓縮效率較之前提高了約72%;Mini-LZO算法對于CTD-DO傳感器觀測數(shù)據(jù)的壓縮率較之前最多提高了約25%。針對海流計和甲烷傳感器數(shù)據(jù)的壓縮實驗證明,對于輸出以ASCII碼表示的數(shù)字、英文字符和控制字符為主的海洋傳感器數(shù)據(jù),數(shù)據(jù)預(yù)處理算法具備通用性。
綜上所述,數(shù)據(jù)預(yù)處理算法不僅能夠大幅提高無損壓縮算法對于常用海洋傳感器觀測數(shù)據(jù)的壓縮效率,從而有效節(jié)省數(shù)據(jù)存儲空間、提高通信網(wǎng)絡(luò)在單位時間內(nèi)的吞吐傳輸能力;而且有利于提高海洋潛標(biāo)嵌入式系統(tǒng)的計算速度,降低系統(tǒng)功耗,進而延長潛標(biāo)系統(tǒng)工作周期,具有廣闊的應(yīng)用前景。