鄒 陽(yáng) 王 將 張昭暉 劉 祎 梁立為
(昆明市氣象局 云南 昆明 650000)
衛(wèi)星云圖在采集、處理、傳輸和存儲(chǔ)過(guò)程中,由于數(shù)據(jù)量較大,云圖數(shù)據(jù)的壓縮方法研究非常重要。傳統(tǒng)的方法有Huffman編碼、預(yù)測(cè)編碼、變換編碼(包括離散余弦變換、小波變換等)、分形壓縮[1-9]等,都存在多種冗余、編碼效率不高和壓縮比較低等問(wèn)題。
元胞自動(dòng)機(jī)[10]是一種離散的時(shí)空動(dòng)力系統(tǒng),每個(gè)單元的狀態(tài)受其領(lǐng)域的狀態(tài)影響,同時(shí)也影響著領(lǐng)域的狀態(tài)。元胞局部之間相互作用,其狀態(tài)通過(guò)一定的相似規(guī)則的轉(zhuǎn)換作同步更新。
可逆元胞自動(dòng)機(jī)[11]的轉(zhuǎn)換規(guī)則是單射且漫射的,可以重建。加權(quán)有限自動(dòng)機(jī)[12]可以定義一個(gè)多分辨率圖像,有限自動(dòng)機(jī)的每一個(gè)狀態(tài)對(duì)應(yīng)整幅圖像的某個(gè)子圖像,也叫狀態(tài)圖像。轉(zhuǎn)換矩陣一般用其狀態(tài)圖像的線(xiàn)性組合表示,即用有限自動(dòng)機(jī)來(lái)近似表示。
本文針對(duì)云圖資料的特征和天氣預(yù)報(bào)中的實(shí)際應(yīng)用情況(無(wú)需十分精確),設(shè)計(jì)可逆細(xì)胞自動(dòng)機(jī)和加權(quán)有限自動(dòng)機(jī)的灰度圖像數(shù)據(jù)有損壓縮算法。通過(guò)實(shí)驗(yàn)驗(yàn)證嘗試得到較好壓縮效果。
方塊編碼算法是把原圖分割成若干個(gè)n×n像素的子方塊。因?yàn)樵茍D子方塊內(nèi)的像素具有很高的相似特征,分配某個(gè)適當(dāng)?shù)谋忍財(cái)?shù)表示該子方塊內(nèi)各個(gè)像素的灰度值。
根據(jù)衛(wèi)星云圖局部范圍內(nèi)有較高的相似特性,以及云圖傳輸、存檔和使用具體實(shí)際要求,簡(jiǎn)化方塊編碼和可逆元胞自動(dòng)機(jī)算法。僅對(duì)子方塊的平均灰度值進(jìn)行量化并編碼傳輸,接收端譯碼后逆量化得到子方塊的平均灰度值,以此作為子方塊內(nèi)各個(gè)像素的灰度值。在衛(wèi)星云圖數(shù)據(jù)能較好地保留圖像信息的基礎(chǔ)上,使壓縮比數(shù)倍提高和壓縮時(shí)間大大縮短。
在此基礎(chǔ)上,對(duì)子方塊更進(jìn)一步采用能較好保持圖像細(xì)節(jié)的元胞自動(dòng)機(jī)的編碼算法,特別是對(duì)非均勻子方塊更加能達(dá)到保留原圖信息的效果??赡嬖詣?dòng)機(jī)實(shí)現(xiàn)方法有分區(qū)元胞自動(dòng)機(jī)(partitioned CA)、二階元胞自動(dòng)機(jī)(second-order CA)、Margolous元胞(Margolous CA)等[13]。本文采用方塊編碼解決子方塊局部平均灰度值的級(jí)別編碼,參照Margolous元胞的二值圖編碼方法標(biāo)志子方塊結(jié)構(gòu)特性,即子方塊像素取值為布爾值(0表示比子方塊局部平均灰度值更白一級(jí),1表示比子方塊局部平均灰度值更黑一級(jí))。
對(duì)一幅云圖數(shù)據(jù)進(jìn)行劃分的方法是以光柵掃描方式從左到右、從上到下以此掃面成2×2的像素塊,即為子方塊,實(shí)際上也是Margolous元胞的一個(gè)2×2元胞塊,可以將其看做一個(gè)有4個(gè)分量的可逆元胞。每個(gè)編碼分兩部分,均值編碼和分類(lèi)編碼,是對(duì)每一圖像子方塊,依據(jù)一定法則,判斷其類(lèi)型。
1.2.1 均值編碼
均值編碼根據(jù)子方塊平均灰度值大小分為16個(gè)區(qū)間,在編碼之前對(duì)云圖數(shù)據(jù)進(jìn)行預(yù)處理,主要是濾掉云的信息以外的部分,包含地域、積雪等固定灰度值信息。這些云以外的固定信息的灰度值通常不同于云的灰度值,便于提取,確定為云信息的臨界灰度值,小于臨界灰度值的標(biāo)志為0(黑色),大于臨界灰度值的重新分類(lèi)。如表1所示,用十六進(jìn)制數(shù)將16種狀態(tài)進(jìn)行了標(biāo)志。
表1 均值編碼狀態(tài)集
元胞自動(dòng)機(jī)由元胞空間、元胞、鄰域及規(guī)則四部分組成,即CCA=(Ld,S,N,f)[14]。
式中:
1) 元胞狀態(tài)S為0或1。
2) 元胞鄰域N為2×2元胞塊。
3) 轉(zhuǎn)換函數(shù)f:S2→S2。
4) 逆轉(zhuǎn)換函數(shù)f-1:S2→S2。
1.2.2 分類(lèi)編碼
Margolous元胞含有4個(gè)分量的元胞。分類(lèi)編碼判斷每個(gè)元胞(子方塊)分量與該元胞平均灰度值大小差值。通過(guò)大量云圖數(shù)據(jù)實(shí)驗(yàn),計(jì)算峰值信噪比(PSNR)與臨界差值關(guān)系曲線(xiàn),選取與PSNR最大值對(duì)應(yīng)的臨界差值(這里臨界差值為-10)。差值大于-10狀態(tài)標(biāo)志為1,否則為0。Margolous元胞可能的狀態(tài)為16個(gè)。如圖1所示,用十六進(jìn)制數(shù)將16種狀態(tài)進(jìn)行了標(biāo)志。
圖1 四子元胞自動(dòng)機(jī)的狀態(tài)集
元胞自動(dòng)機(jī)有如下特點(diǎn):
1)元胞狀態(tài)S如圖1所示。
2)元胞鄰域N為2×2元胞塊。
3)轉(zhuǎn)換函數(shù)f:S4→S4。
4)逆轉(zhuǎn)換函數(shù)f-1:S4→S4。
轉(zhuǎn)化函數(shù)即是轉(zhuǎn)換規(guī)則,可以看作一個(gè)排列,是一一映射。例如f(B)→(1,1,1,0)。解壓時(shí)同樣可以唯一地恢復(fù)原多級(jí)灰度像素圖像素序列。
每個(gè)子方塊也是一個(gè)單位元胞,編碼有兩位,都是十六進(jìn)制的,前位是2×2元胞塊(4個(gè)像素)的均值編碼,標(biāo)志子方塊整體特性,后位是分類(lèi)編碼,描述子方塊局部細(xì)節(jié)。編碼過(guò)程簡(jiǎn)單又不失細(xì)節(jié),可以得到與原圖像十分相似的重建圖像。
整個(gè)圖像數(shù)據(jù)分為2×2子方塊(4個(gè)元胞像素)。用有限自動(dòng)機(jī)的一個(gè)狀態(tài)表示整幅圖像數(shù)據(jù),主要對(duì)子方塊的平均灰度值進(jìn)行量化并編碼,對(duì)某個(gè)狀態(tài)的每個(gè)子方塊的元胞進(jìn)行處理,用已有的狀態(tài)(包括這個(gè)子方塊的狀態(tài)圖像)的線(xiàn)性組合來(lái)近似表示這個(gè)元胞像素狀態(tài)。參考有關(guān)文獻(xiàn)[15-16],簡(jiǎn)化這種線(xiàn)性組合的權(quán)重系數(shù),通過(guò)對(duì)整個(gè)像素圖數(shù)據(jù)的子方塊結(jié)構(gòu)的統(tǒng)計(jì),選擇有代表性的分類(lèi)結(jié)構(gòu)作為權(quán)重系數(shù)。同樣既能較好地保留圖像信息,又使壓縮比數(shù)倍提高和壓縮時(shí)間大大縮小。
本文提出的算法流程如圖2所示。
圖2 方塊編碼和加權(quán)有限元胞自動(dòng)機(jī)算法流程圖
具體步驟如下:
步驟1輸入衛(wèi)星云圖數(shù)據(jù),進(jìn)行預(yù)處理,即分塊處理,塊與塊之間沒(méi)有重疊,初始化群體,生成CA個(gè)體。
步驟2對(duì)CA個(gè)體進(jìn)行統(tǒng)計(jì)分析,根據(jù)衛(wèi)星云圖有鄰域范圍內(nèi)有高度的相似性,歸類(lèi)具有較好代表性的特征塊作為狀態(tài)集。
步驟3根據(jù)轉(zhuǎn)換矩陣進(jìn)行CA變換,通過(guò)調(diào)整方塊單元總的灰度差值,將灰度差值按照轉(zhuǎn)移矩陣的系數(shù)(權(quán)值)分配到2×2元胞塊(4個(gè)像素)。用峰值信噪比(PSNR)作為誤差閾值與原圖進(jìn)行比較。如果小于閾值則輸出編碼,否則調(diào)整灰度差值再次進(jìn)行元胞自動(dòng)機(jī)變換,直至小于閾值或者達(dá)到最大迭代次數(shù),輸出編碼。
同樣對(duì)一幅云圖數(shù)據(jù)分成2×2的像素塊,即為子方塊,實(shí)際上也是分割成元胞塊的四個(gè)象限,可以將多分辨率圖像用加權(quán)有限元胞自動(dòng)機(jī)表示。每個(gè)編碼分兩部分,均值編碼和加權(quán)編碼,是對(duì)每一圖像數(shù)據(jù)子方塊,依據(jù)一定法則,判斷其轉(zhuǎn)移矩陣類(lèi)型(轉(zhuǎn)移矩陣的系數(shù)表示權(quán)值)。
2.3.1 均值編碼
均值編碼根據(jù)子方塊平均灰度值大小分為16個(gè)區(qū)間,在編碼之前對(duì)云圖數(shù)據(jù)進(jìn)行預(yù)處理同上。如表1所示,用十六進(jìn)制數(shù)將16種狀態(tài)進(jìn)行了標(biāo)志。
2.3.2 加權(quán)編碼
下面給出表示多分辨率圖像數(shù)據(jù)的加權(quán)有限元胞自動(dòng)機(jī)[15-16]的定義。最初加權(quán)有限元胞自動(dòng)機(jī)是一個(gè)三元組(Q,N,C),其中Q是理論上子方塊各個(gè)元胞鄰域所有狀態(tài)集合,設(shè)7層權(quán)重級(jí),表示子方塊4個(gè)元胞鄰域,共計(jì)6 666種標(biāo)志。我們對(duì)多個(gè)512×512分辨率的云圖數(shù)據(jù)個(gè)例進(jìn)行統(tǒng)計(jì),發(fā)現(xiàn)Q基本上在360種以下,而子方塊數(shù)量達(dá)到65 536,可見(jiàn)衛(wèi)星云圖數(shù)據(jù)子方塊具有極高的相似性。通過(guò)對(duì)衛(wèi)星云圖的子方塊結(jié)構(gòu)的統(tǒng)計(jì),選取有代表性、能刻畫(huà)云圖細(xì)節(jié)紋理的(主要是云團(tuán)邊緣部分)若干組狀態(tài)集合,這種集合一般不大于64種,所占比例達(dá)到97.2%。此時(shí)加權(quán)有限元胞自動(dòng)機(jī)是(S,N,C),S∈Q:
1) 元胞狀態(tài)S為代表性的元胞鄰域狀態(tài)集合。
2) 元胞鄰域N為2×2元胞塊。
3) 轉(zhuǎn)換矩陣{C|Ci∈S∈Q,i≤64}。
加權(quán)編碼判斷每個(gè)元胞(子方塊)分量與該元胞平均灰度值大小差值,權(quán)值有-1、-2/3、-1/3、0、1/3、2/3和1。選取元胞有代表性的狀態(tài)集合為64個(gè)。如圖3所示,用兩位十六進(jìn)制數(shù)將64種狀態(tài)進(jìn)行了標(biāo)志。
圖3 加權(quán)有限元胞自動(dòng)機(jī)的狀態(tài)集
轉(zhuǎn)化矩陣即是轉(zhuǎn)換規(guī)則,可以看做一個(gè)排列,是一一映射。例如:
f(3B)→(-1/3,1/3,-1/3,1/3)
解壓時(shí)同樣可以唯一地恢復(fù)原多級(jí)灰度像素圖像素序列。每個(gè)子方塊也是一個(gè)單位元胞,編碼有三位,都是十六進(jìn)制的,前一位是2×2元胞塊(4個(gè)像素)的均值編碼,標(biāo)志子方塊整體特性,后兩位是加權(quán)編碼,描述子方塊局部細(xì)節(jié)?;谠茍D結(jié)構(gòu)信息的編碼過(guò)程簡(jiǎn)潔實(shí)用,重建圖像與原圖像比較相似。
采用FY2E紅外圖像作為測(cè)試對(duì)象,圖像數(shù)據(jù)是512×512,8 bpp像素的灰度云圖,數(shù)據(jù)格式為二進(jìn)制,大小為262 144 bit,256級(jí)灰度值,十進(jìn)制數(shù)據(jù)文件大小為1 035 264 bit。
以壓縮比、峰值信噪比(PSNR)和均方差(RMS)為指標(biāo),檢驗(yàn)仿真實(shí)驗(yàn)效果。
實(shí)驗(yàn)環(huán)境,PC 2.0 GHz;內(nèi)存4 GB;Windows 7.0;借助MATLAB仿真平臺(tái)對(duì)本文算法進(jìn)行實(shí)驗(yàn)。
采用2013年10月7日9時(shí)0分FY2E紅外圖像作為測(cè)試對(duì)象。
通過(guò)變換實(shí)驗(yàn),可見(jiàn)該方法在保持云圖細(xì)節(jié)部分和重建質(zhì)量基本不變的情況下,提高了壓縮比,達(dá)到了較好的效果(見(jiàn)圖4)。重建圖像信噪比下降主要是對(duì)子方塊類(lèi)型的粗量化引起的,可以經(jīng)平滑處理后在主觀視覺(jué)上并無(wú)明顯區(qū)別。
圖4 2013年10月7日9時(shí)0分FY2E紅外圖像實(shí)驗(yàn)結(jié)果對(duì)比
測(cè)試2013年10月9日11時(shí)0分FY2E紅外圖像。實(shí)驗(yàn)結(jié)果顯示該方法搜索云圖細(xì)節(jié)結(jié)構(gòu),保證云圖質(zhì)量,減小云圖數(shù)據(jù)中的冗余信息,雖有一些細(xì)小失真,但可以接受,總體效果較好。針對(duì)云圖特點(diǎn)進(jìn)行有效壓縮,在可接受的有損范圍內(nèi)獲得較好的壓縮比。重建的云圖直觀效果明顯(見(jiàn)圖5)。
圖5 2013年10月9日11時(shí)0分FY2E紅外圖像實(shí)驗(yàn)結(jié)果對(duì)比
針對(duì)衛(wèi)星云圖每一像素點(diǎn)與鄰域有良好的相似性特點(diǎn)和云團(tuán)邊界像素點(diǎn)方塊單元的結(jié)構(gòu)重復(fù)概率很大的特征。選用方塊編碼(BTC)與可逆元胞自動(dòng)機(jī)算法(RCA)結(jié)合算法,簡(jiǎn)潔實(shí)用。
本文測(cè)試的十余幅云圖均為FY2E紅外圖像,數(shù)據(jù)格式如前所述。本實(shí)驗(yàn)中分別用方塊編碼(BTC)與多子帶可逆元胞自動(dòng)機(jī)算法(RCA)結(jié)合的RCA-BTC算法和方塊編碼與有限加權(quán)元胞自動(dòng)機(jī)算法(WFCA)結(jié)合的WFCA-BTC算法。分塊大小是2×2和4×4。調(diào)整方塊單元總的灰度差值,用峰值信噪比(PSNR)作為誤差閾值與原圖進(jìn)行比較,得出方塊單元總的灰度差值為10是最佳值。圖6是對(duì)結(jié)果進(jìn)行比對(duì)。
圖6 2017年7月FY2E紅外圖像實(shí)驗(yàn)結(jié)果對(duì)比(上排為原始圖,下排為對(duì)應(yīng)的仿真圖)
從表2可見(jiàn),RCA-BTC算法壓縮效果良好,隨著分塊變大,壓縮效果變好,分塊為4×4的RCA-BTC壓縮率最高。此外,云圖的重建質(zhì)量RCA-BTC(2×2分塊)最高,多幅圖像的峰值信噪比(PSNR)和均方差(RMS)比較滿(mǎn)意。在達(dá)到較好圖像質(zhì)量的條件下壓縮比最好的是RCA-BTC(4×4分塊)。
表2 兩種編碼算法仿真效果比較
這里只對(duì)數(shù)據(jù)格式為二進(jìn)制的大小為262 144 bit,256級(jí)灰度值云圖進(jìn)行實(shí)驗(yàn)對(duì)比。如果采用同樣像素的大小為1 035 264 bit十進(jìn)制的云圖數(shù)據(jù)文件,那么壓縮比可以達(dá)到50∶1。
本文采用方塊編碼與自動(dòng)機(jī)結(jié)合的方法進(jìn)行衛(wèi)星云圖數(shù)據(jù)的壓縮,針對(duì)衛(wèi)星云圖的特性,改進(jìn)算法,使之簡(jiǎn)潔實(shí)用。實(shí)驗(yàn)對(duì)比表明,在盡可能保留云圖質(zhì)量的前提下,達(dá)到了比較滿(mǎn)意的信噪比和壓縮比。
下一步可以根據(jù)衛(wèi)星云圖灰度值分布特征,修正均值編碼規(guī)則等。例如256級(jí)灰度值的150到200級(jí)的區(qū)間劃分得更細(xì)一些,使之更適合云系和云團(tuán)的圖像重建。
[1] Kunt M,Johnsen O.Block coding of graphics:A tutorial review[J].Proceedings of the IEEE,1980,68(7):770-786.
[2] 曹青,吳樂(lè)南.利用JPEG-LS高效無(wú)損壓縮氣象衛(wèi)星云圖數(shù)據(jù)[J].應(yīng)用氣象,2002,13(3):380-382.
[3] 葉紅,安東升.基于小波變換的衛(wèi)星云圖壓縮方法[J].計(jì)算機(jī)工程與科學(xué),2004,26(10):60-65.
[4] 曾黨泉,王員云,賴(lài)培輝.基于九宮格的二值圖像壓縮算法[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(7):259-263.
[5] 張方舟,王徐研,郝慶輝.基于遺傳分形編碼的嵌入式小波圖像編碼算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,25(1):128-132.
[6] 田振川,李冠朋,王蒙蒙,等.基于遺傳算法的分形圖像壓縮技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(4):138-140.
[7] 方翔,王新.小波變換在氣象衛(wèi)星云圖壓縮中的應(yīng)用[J].應(yīng)用氣象學(xué)報(bào),2010,21(4):423-432.
[8] 張愛(ài)華,常康康.結(jié)合DCT補(bǔ)償?shù)姆中螆D像編碼[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(1):61-64.
[9] 張建偉.氣象衛(wèi)星云圖的分形編碼研究[J].南京氣象學(xué)院學(xué)報(bào),1998,21(3):328-334.
[10] 黃鵬濤,陳賢富.基于元胞自動(dòng)機(jī)模型的新型二值圖像壓縮算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(12):75-80.
[11] Kari J.Theory of cellular automata:A survey[J].Theoretical Computer Science,2005,334(1-3):3-33.
[12] Droste M,Kuich W,Vogler H.Handbook weighted automata[M].New York:Springer-Verlag,2009.
[13] Toffoli T,Margolus N.Invertible cellular automata:a review[J].Physica D:Nonlinear Phenomena,1990,45(1-3):229-253.
[14] 吳慧琳,周激流,龔小剛.基于多子帶可逆細(xì)胞自動(dòng)機(jī)的二值圖像壓縮算法[J].計(jì)算機(jī)應(yīng)用研究,2013,30(5):1547-1550.
[15] 劉躍霞,劉耀軍,閻金瑤.數(shù)字圖像的加權(quán)有限自動(dòng)機(jī)表示[J].太原師范學(xué)院學(xué)報(bào),2010,9(2):52-55.
[16] 陳歡青,馬小虎.基于廣義有限自動(dòng)機(jī)的圖像壓縮方法[J].計(jì)算機(jī)應(yīng)用與軟件,2003,26(3):230-233.