一種管道毫秒級(jí)在線數(shù)據(jù)的復(fù)合壓縮/解壓縮方法
【專利說(shuō)明】一種管道毫秒級(jí)在線數(shù)據(jù)的復(fù)合壓縮/解壓縮方法 所屬技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于數(shù)據(jù)壓縮領(lǐng)域,具體涉及一種管道毫秒級(jí)在線數(shù)據(jù)的復(fù)合壓縮/解壓 縮方法。
【背景技術(shù)】
[0002] 隨著國(guó)內(nèi)外油氣管道鋪設(shè)越來(lái)越長(zhǎng)、輸送量逐步加大,油氣管道的輸送安全及高 效得到了更大的重視。在油氣管線的多年使用中,難免會(huì)受到外界環(huán)境、內(nèi)部環(huán)境的腐蝕和 磨損,以及其他意想不到的損傷,這些都會(huì)造成油氣在輸送過(guò)程中發(fā)生泄漏。一旦發(fā)生泄 漏,不但會(huì)造成經(jīng)濟(jì)的巨大損失、能源的巨大浪費(fèi),更會(huì)污染環(huán)境甚至危及人類自身安全。 由于管道泄漏檢測(cè)都采用在線檢測(cè)系統(tǒng),被檢測(cè)的管道長(zhǎng)度可達(dá)數(shù)十公里之長(zhǎng),并且管道 內(nèi)檢測(cè)設(shè)備較多,因此泄漏檢測(cè)過(guò)程中所采集到的原始毫秒級(jí)數(shù)據(jù)量較大,然而用于存儲(chǔ) 數(shù)據(jù)的空間有限且存儲(chǔ)設(shè)備體積較小。因此,無(wú)論是進(jìn)行數(shù)據(jù)存儲(chǔ)還是將采集到的數(shù)據(jù)進(jìn) 行傳輸,都需要進(jìn)行數(shù)據(jù)壓縮處理。無(wú)損壓縮方法中主要有霍夫曼編碼、算術(shù)編碼、行程編 碼以及字典編碼等可以實(shí)現(xiàn)數(shù)據(jù)完全無(wú)損地壓縮,但壓縮比很高;有損壓縮方法主要有小 波變換壓縮算法,但是有損壓縮帶來(lái)的重要信息的大量丟失是無(wú)法接受的。
【發(fā)明內(nèi)容】
[0003] 針對(duì)現(xiàn)有方法存在的不足,本發(fā)明提出一種管道毫秒級(jí)在線數(shù)據(jù)的復(fù)合壓縮/解 壓縮方法。
[0004] 本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0005] -種管道毫秒級(jí)在線數(shù)據(jù)的復(fù)合壓縮方法,包括如下步驟:
[0006] 步驟1 :采集管道實(shí)時(shí)毫秒級(jí)運(yùn)行信號(hào),并將其轉(zhuǎn)換為數(shù)字電信號(hào);
[0007] 步驟2 :對(duì)步驟1的管道運(yùn)行數(shù)字電信號(hào)進(jìn)行多小波變換,得到具有高頻小波系數(shù) 部分和低頻小波系數(shù)部分的小波系數(shù)矩陣;方法為:
[0008] 選擇CL4多小波作為多小波變換的小波基,利用CL4多小波對(duì)管道運(yùn)行數(shù)字電信 號(hào)進(jìn)行多小波分解,得到具有高頻小波系數(shù)部分和低頻小波系數(shù)部分的小波系數(shù)矩陣;
[0009] 對(duì)小波系數(shù)矩陣設(shè)置閾值n,,并利用閾值n,將小波系數(shù)矩陣中數(shù)值較小的小波 系數(shù)舍棄,某一尺度j下閾值1的設(shè)置公式如下:
[0010] n.j=入Xmax{|d.j(p) |},p = 1,2, ...,N
[0011] 其中j為尺度因子;N為數(shù)據(jù)長(zhǎng)度;d^p)是小波分解后的高頻小波系數(shù)部分;p為 采集時(shí)刻;A為比例系數(shù);
[0012] 步驟3 :針對(duì)高頻小波系數(shù)部分對(duì)應(yīng)的數(shù)字電信號(hào),采用改進(jìn)的SPIHT算法進(jìn)行有 損壓縮;具體包括如下步驟:
[0013] 步驟3-1 :初始化過(guò)程;
[0014] 包括:建立三個(gè)有序表:不重要系數(shù)表LIP、重要系數(shù)表LSP和不重要集合表LIS;
[0015] 對(duì)高頻小波系數(shù)部分對(duì)應(yīng)的數(shù)字電信號(hào)進(jìn)行逐層小波分解,共進(jìn)行M次,其中第 二層至第M層小波分解得到的數(shù)據(jù)可以看做是第一層小波分解得到的后代;
[0016] 將分解得到的第一層所有數(shù)據(jù)同時(shí)放入不重要系數(shù)表LIP和不重要集合表LIS 中;
[0017] 將重要系數(shù)表LSP置為空集;
[0018] 初始量化閾值T= 2n,其中n為閾值指數(shù),《 = [_10匕max扣(/}1丨」,0彡i彡m-l,m為 經(jīng)過(guò)M層小波分解后得到的小波系數(shù)的總個(gè)數(shù),c(i)為逐層分解過(guò)程中得到的小波系數(shù);
[0019] 步驟3-2 :采用排序掃描的方法,找到重要的高頻小波系數(shù);
[0020] 方法為:1)利用重要性判斷方法分別判斷不重要系數(shù)表LIP中每個(gè)小波系數(shù)是否 重要,是,則向排序位流Sn輸入重要性判斷結(jié)果" 1"和符號(hào)位,然后將該小波系數(shù)添加到重 要系數(shù)表LSP的尾部,從不重要系數(shù)表LIP中將該小波系數(shù)刪除;否,則向排序位流Sn輸入 重要性判斷結(jié)果"〇",表明該系數(shù)不重要;
[0021] 所述排序位流Sn是記錄小波系數(shù)重要性和符號(hào)位的隊(duì)列;
[0022] 2)以D(i)表示不重要集合表LIS中小波系數(shù)的后代的集合,其中i為小波系數(shù)的 序號(hào);分別判斷不重要集合表LIS中每個(gè)小波系數(shù)對(duì)應(yīng)后代的重要性,方法為:首先利用重 要性判斷方法判斷D(i)的重要性,若不重要,則向排序位流Sn輸入重要性判斷結(jié)果"0";若 重要,向排序位流Sn輸入重要性判斷結(jié)果" 1",并且將集合D(i)分裂為直接后代0 (i)(與 該層直接相連的)和間接后代L(i);
[0023] 然后,再次利用重要性判斷方法對(duì)直接后代0(i)的兩個(gè)系數(shù)分別進(jìn)行重要性判 斷,并向排序位流Sn輸入重要性判斷結(jié)果和符號(hào)位,將重要小波系數(shù)的后代集合添加到重 要系數(shù)表LSP的尾部,不重要的小波系數(shù)添加到不重要系數(shù)表LIP的尾部;
[0024] 再然后,檢查間接后代L(i)是否為空集,若非空,則將間接后代L(i)添加到不重 要集合表LIS的尾部,若間接后代L(i)為空集,則將L(i)從不重要集合表LIS中刪除;
[0025] 又然后,利用重要性判斷方法判斷不重要集合表LIS中間接后代L(i)的重要性, 若不重要,則向排序位流Sn輸入表示不重要的符號(hào)"0",若重要,則向排序位流Sn輸入表示 重要性的符號(hào)"1";將間接后代L(i)的直接后代添加到不重要集合表LIS的尾部,將間接 后代L(i)從不重要集合表LIS中刪除;
[0026] 所述重要性判斷方法為:如果小波系數(shù)大于等于閾值T,則該小波系數(shù)關(guān)于閾值T 是重要的,否則是不重要的;
[0027] 步驟3-3 :精細(xì)掃描得到本級(jí)壓縮結(jié)果:將重要系數(shù)表LSP中的每個(gè)系數(shù),除最近 一次排序掃描新加入到LSP的小波系數(shù)外,計(jì)算重要系數(shù)表LSP中的每個(gè)小波系數(shù)的壓縮 值,即對(duì)應(yīng)的二進(jìn)制數(shù),并且將該二進(jìn)制數(shù)對(duì)應(yīng)于2~n權(quán)位處的符號(hào)'1'或'0'送到精細(xì)位 流Rn;所述精細(xì)位流Rn用于記錄壓縮的二進(jìn)制的值;
[0028] 步驟3-4 :將閾值指數(shù)減1,且在排序位流Sn和精細(xì)位流Rn中插入除0和1外的 任何數(shù)字作為特殊值用來(lái)區(qū)分每級(jí)壓縮的標(biāo)志,轉(zhuǎn)至步驟3-2 ;
[0029] 步驟3-5 :重復(fù)執(zhí)行步驟3-2至步驟3-4,直到n= 0時(shí),壓縮結(jié)束,得到最終的高 頻小波系數(shù)部分對(duì)應(yīng)的毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果;
[0030] 步驟4 :針對(duì)低頻小波系數(shù)部分對(duì)應(yīng)的數(shù)字電信號(hào),基于LZ77編碼方法進(jìn)行無(wú)損 壓縮;
[0031] 步驟4-1 :根據(jù)數(shù)據(jù)規(guī)模,確定滑動(dòng)窗口的大小及預(yù)置區(qū)的大??;
[0032] 步驟4-2 :將低頻小波系數(shù)部分對(duì)應(yīng)的數(shù)字電信號(hào)按順序放入預(yù)置區(qū)中,此狀態(tài) 為壓縮開(kāi)始前的狀態(tài);
[0033] 步驟4-3 :對(duì)于壓縮開(kāi)始前的狀態(tài),由于此時(shí)滑動(dòng)窗口中暫無(wú)數(shù)據(jù),因此滑動(dòng)窗口 中沒(méi)有可供與預(yù)置區(qū)匹配的字符串,故將低頻小波系數(shù)部分對(duì)應(yīng)的數(shù)字電信號(hào)的第一個(gè)元 素作為壓縮結(jié)果;
[0034] 步驟4-4:將預(yù)置區(qū)里的所有數(shù)據(jù)向前移動(dòng)一個(gè)字符,滑動(dòng)窗口向前移動(dòng)一個(gè)字 符;
[0035] 步驟4-5 :從當(dāng)前壓縮位置開(kāi)始,在滑動(dòng)窗口中查找最大匹配字符串,如找到,則 輸出編碼三元組(off,len,c),其中off為最大匹配字符串相對(duì)滑動(dòng)窗口邊界的偏移量, len為最大匹配字符串的長(zhǎng)度,c為滑動(dòng)窗口區(qū)中最后一個(gè)字符的下一個(gè)字符;否則,輸出 編碼二兀組(0, 0,c);
[0036] 步驟4-6 :將預(yù)置區(qū)里的所有數(shù)據(jù)向前滑動(dòng)len+1個(gè)字符及滑動(dòng)窗口向前移動(dòng) len+1個(gè)字符,轉(zhuǎn)至步驟4-5 ;
[0037] 步驟4-7 :重復(fù)執(zhí)行步驟4-5至步驟4-6,直至預(yù)置區(qū)中沒(méi)有數(shù)據(jù),壓縮結(jié)束,得到 最終的低頻小波系數(shù)部分對(duì)應(yīng)的毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果;
[0038] 與所述的毫秒級(jí)管道數(shù)據(jù)的復(fù)合壓縮方法對(duì)應(yīng)的毫秒級(jí)管道數(shù)據(jù)的解壓縮方法, 包括如下步驟:
[0039] 步驟J1 :讀取毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果,包括:低頻小波系數(shù)部分對(duì)應(yīng)的毫秒級(jí) 管道數(shù)據(jù)壓縮結(jié)果和高頻小波系數(shù)部分對(duì)應(yīng)的毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果;
[0040] 步驟J2 :針對(duì)毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果進(jìn)行解壓縮,得到原始管道毫秒級(jí)在線數(shù) 據(jù),包括如下步驟:
[0041] 步驟J2. 1 :針對(duì)高頻小波系數(shù)部分對(duì)應(yīng)的毫秒級(jí)管道數(shù)據(jù)壓縮結(jié)果,采用dSPIHT 算法進(jìn)行有損解壓縮;
[0042] 步驟J2. 1. 1 :初始化過(guò)程;
[0043] 輸入高頻數(shù)據(jù)壓縮時(shí)的初始閾值T,初始有序表LSP、LIP和LIS,閾值指數(shù)n= l〇g2 (T),步驟3-5結(jié)束后得到的排序位流Sn和精細(xì)位流Rn;
[0044] 設(shè)定解壓縮級(jí)數(shù)K,且初始化解壓縮小波系數(shù)列矩陣;所述解壓縮小波系數(shù)列 矩陣是一個(gè)m列的隨機(jī)列矩陣,m為小波系數(shù)的總個(gè)數(shù),其