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