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