魏亞輝
(駐馬店職業技術學院 機械電子工程系,河南 駐馬店 463000)
?
基于FPGA的遙感圖像JPEG-LS壓縮算法的研究與實現
魏亞輝
(駐馬店職業技術學院 機械電子工程系,河南 駐馬店 463000)
為有效利用星地傳輸信道需要研究大幅面衛星圖像的編碼技術。JPEG-LS編碼算法對衛星圖像進行壓縮處理,可以更有效地使用有限的通信頻帶,達到對圖像數據的無失真傳輸。本文研究衛星遙感圖像的壓縮編碼在可編程邏輯中的實現技術。
星載圖像;FPGA;JPEG-LS
隨著信息技術的不斷發展和我國遙感圖像在衛星通信上的迫切需要,衛星圖像的星地傳輸技術成為了一個需要重點研究的領域。衛星遙感圖像與常規靜止圖像相比,具有圖像相關性差,信息熵值高,冗余度小的特點。其圖像數據隨地面背景和氣象狀況的不同而發生巨大的變化,連續性差,可預測性極低,因此要獲得較高壓縮比難度極大,是靜態圖像壓縮領域的難點。JPEG-LS作為一種連續色調靜止圖像無損/近無損壓縮標準,是基于HP(惠普)實驗室Weinberger等人提出的LOCO-I(Low Complexity Lossless Compression for Image:低復雜度無損圖像壓縮)壓縮方法,1998年6月作為ITU-T建議T.87標準(國際標準ISO/ICE14495)正是發布。其核心算法主要包括基于自適應預測、上下文建模和Golomb編碼算法。與JPEG、JPEG2000等流行的圖像壓縮算法相比較,JPEG-LS在無損壓縮領域具有高保真和低復雜度等特點,便于硬件實現。
JPEG-LS基于低復雜度無損圖像壓縮方法的思想,是一般上下文模式的“低復雜度實現”,配合上下文建模和熵編碼。主要包括三個部分:預測、上下文建模、熵編碼。宏觀上,它是建立在對輸入圖像上下文建模基礎上的逐像素處理,針對不同像素其上下文的不同點,JPEG-LS的編碼流程采取兩種模式:常規模式(regular mode)和游程模式(run mode),其原理框圖如圖所示。

圖1 JPEG_LS算法原理框圖

圖2上下文示意圖
用來預測當前像素x的上下文如圖2。編碼器考察上下文像素,決定用常規模式還是游程模式進行編碼。如果預測器模板計算得到的上下文梯度表示當前像素位于平滑區域(當前像素x后面的像素y , z , …可能是相等的),則編碼器選擇游程模式;否則,選擇常規模式。
在常規模式中,編碼器利用上下文像素a,c,b的值預測x,用一個與上下文有關的項修正預測值,來補償在預測中的系統偏差,而后從x中減去預測值得到預測誤差Errval,然后根據上下文分布的統計信息進行Golomb編碼。
在游程模式中,編碼器先統計位于當前像素同一行內的與上下文像素a相等的最長像素游程,游程中所有的像素都等于a并且像素a已進行編碼,因此這里只需要對游程長度編碼就可以了。
考慮到衛星圖像中很少會出現大塊的平滑區域圖像,選擇游程模式的比例很小,體現不了游程編碼的優點,且游程模式會使FPGA設計的難度以及復雜度大大增加并減慢編碼速度,因此現階段的硬件實現上只考慮采用常規模式進行無損圖像壓縮。對紅外兩個波段(4.3mm和2.7mm)的衛星圖片的實驗結果表明(見表1),去掉游程編碼的JPEG-LS對圖像的壓縮比影響不大。

表1 有無游程編碼的兩種JPEG-LS的壓縮比比較

圖3JPEG_LS的編碼流程圖
常規模式下JPEG-LS算法的流程如圖3,其中,JPEG-LS算法流程中核心為上下文建模、預測、熵編碼和參數更新算法。
JPEG_LS算法流程清晰,具備良好的流水線特性,在FPGA實現中采用模塊化思想,可劃分為以下幾個模塊:數據緩存模塊緩存圖像數據并得到當前像素位置和建立上下文模板;梯度計算模塊完成上下文模板梯度值的計算、映射并得出上下文索引值;固定預測器模塊預測當前像素的值,然后自適應修正模塊對預測值進行誤差修正;Golomb編碼模塊進行熵編碼;環境參數模板完成上下文參數的初始化和更新功能。算法的實現既在整體流程上保證了流水線的順暢,又在局部上采用并行設計,降低流水深度。另外,在每個模塊的內部計算也最大可能的并行展開,集中體現了流水與并行互相嵌套的設計思想,提高系統的效率。下面將討論關鍵模塊的FPGA實現過程。
2.1環境參數模塊
環境參數模塊由三個子模塊實現,初始化控制、參數更新和參數存儲,如圖4所示。
初始化控制完成系統參數的初始化,這些系統參數包括:

圖4環境參數模塊實現框圖
MAXVAL:圖像像素可能的最大值,MAXVAL =2p-1;
Range:預測誤差值的范圍,Range = MAXVAL + 1;
qbpp:用來表示映射誤差比特數;
LIMIT:常規模式下可能的最大碼長;
上下文環境參數A[0:364]、B[0:364]、C[0:364]、N[0:364]。
完成這些系統參數的初始化需要366個時鐘周期,只有系統參數初始化完畢后才能開始處理。初始化的上下文環境參數保存在其對應的雙口RAM緩存中。
在具體實現中,如圖5所示,使用參數更新模塊遵從更新過程實現當前上下文索引值對應的上下文環境參數的更新,并將更新后的參數保存到對應的RAM中,寫地址值為當前上下文索引值的延遲,這樣就完成了參數的更新。

圖5上下文參數更新示意圖
在流水線結構中某個像素在進行參數更新步驟時,在相同的時鐘里后面的一個像素可能要根據索引值去索引上下文環境參數用于其它步驟。這兩步驟都在流水線的“傳送帶”上,可以使用FPGA中的RAM資源生成雙口RAM,“傳送帶”上的參數更新的值根據寫地址值寫入RAM,“傳送帶”上的索引參數值根據讀地址值讀出RAM,這樣就能避免參數更新的反饋回路問題,又不影響參數的更新。
2.2Golomb編碼模塊
Golomb熵編碼由誤差映射、K值產生器、編碼模塊三部分組成,框圖如圖6所示。誤差映射模塊和k值產生器實現比較簡單,重點介紹編碼模塊的實現過程。

圖6Golomb編碼原理框圖圖7冗余Golomb編碼示意圖
由于Golomb編碼是變長編碼,如果按照算法的編碼規則直接進行編碼,FPGA的實現復雜度較高,會嚴重惡化流水線特性,使得編碼效率降低,因此我們考慮采用查表的方法來實現編碼。在算法流程中得到映射誤差和參數k值,Golomb編碼便可唯一確定。對于8bit圖像來說,參數k值的取值范圍為0~7,映射誤差的取值范圍為0~255,最大編碼碼長LIMIT為32bit。按不同的參數k得到的Golomb編碼表分別保存在8個ROM中,每個表按映射誤差值大小從0~255依次存放,位寬為40bit,高8bit碼長信息位表示實際編碼長度,后32bit為冗余編碼,如圖7。這樣實現時只需要將參數k作為ROM的片選信號,映射誤差值作為讀取ROM的地址信號,就可以讀取存儲在ROM中的冗余Golomb編碼。這種實現方式簡單,整個編碼過程只需要一個時鐘周期就能完成,不會影響流水線特性,但需要FPGA的RAM資源存儲Golomb編碼表。
將算法合理劃分為若干功能模塊,在每個時鐘的上跳沿處各操作步驟都同步地完成一次對應的處理。系統開始有效運行后經過若干時鐘周期的延遲,就可以在每一個時鐘周期完成一個像素的壓縮編碼,這樣流水線結構的算法就能實現實時壓縮處理。
為了更好的理解JPEG-LS無損壓縮算法的FPGA實現中各操作步驟的時序關系,下面對其進行較詳細的分析。
在流水線上,假定伴隨圖像數據流進入無損壓縮系統的第一個時鐘上跳沿為clk,各操作步驟相對其延遲一個時鐘則表示為clk_r,兩個時鐘則表示為clk_2r,依次類推。
基于上述完整的時序關系分析,我們定義從當前數據輸入到冗余Golomb編碼輸出為固定延時fix_delay,數據聚合模塊的延時為隨機延時ram_delay,到輸出32bit編碼的延時為處理延時Delay,如圖8所示。

圖8 流水線時序圖
fix_delay = (1+9+2+3+5)cycle = 20 cycle ;
Ram_delay = 1 ~ 32 cycle ;
Delay = fix_delay + ram_delay = 21 ~ 52 cycle ;
從時序分析結果可以看出,優化后的JPEG-LS算法運算過程呈現良好的流水線特征,并充分利用FPGA計算資源豐富的優勢,實現了“以空間換時間”的設計理念,使用延時電路來同步下一級運算輸入等設計技巧,實現了算法的完全實時流水操作。
JPEG-LS算法的FPGA移植選用的Xilinx公司生產的Virtex系列中的XC2V2000,ISE綜合工具分析表明,資源使用情況如表2所示。系統穩定的處理速度可達到60MHz。

表2 JPEG-LS算法在FPGA上實現的資源使用情況
根據FPGA的特點,將流水與并行的思想植入算法的實現過程中,為設計硬件實現圖像的無損壓縮提供了解決方案,同時該硬件實現系統,具有很好的穩定性和可靠性,可以適應不同的環境,在其他圖像壓縮的應用場景中同樣適用。
[1]M. Weinberger, G. Seroussi, “The LOCO-I lossless image compression algorithm: Principles and standardization into JPEG-LS,” [J] Trans.Image Process .2000, 1309-1324.
[2]SERIES T. “Information technolog-Lossless and near lossless compression of continuous-tone still images-Baseline” [M] ,Internation Standard,1998.
[3]A. Savakis and M. Pioriun, “Benchmarking and Hardware Implementation of JPEG-LS”, Rochester, NY, [J].2002,102-106.
[4]張天序, 鄒勝, 曾永慧. 基于FPGA的圖像無損壓縮算法的實現[J]. 系統工程與電子技術, 2004,26(10):1340-1343.
[5]沈洪亮, 劉金國. 基于JPEG-LS的遙感圖像無損壓縮技術[J].光電子技術, 2009(9):206-210.
[6]胡棟. 靜止圖像編碼的基本方法與國際標準[M].北京: 北京郵電大學出版社,2003.
[7]夏宇聞. Verilog數字系統設計教程[M]. (2版). 北京: 北京航空航天大學出版社,2004.
(編輯:嚴佩峰)
The Research and Implementation of JPEG-LS Coder In Remote Sensing Images Based on FPGA
WEI Ya-hui
(Dept. of Mechanical and Electronic Eegineering, Zhumadian Vocational and Technical College, Zhumadian 463000,China)
As to efficiently use the transmission channels between satellite and ground, we need to study satellite images of large-format codec skills. Compressing the remote sensing images with JPEG-LS coding algorithm can use limited communication band more effectively, to achieve the image data without distortion transmission. This paper is to study the technology of the compression of the satellite remote sensing image in the programmable logic of encoding.
remote sensing image; FPGA; JPEG-LS
2016-02-10
魏亞輝(1980-),男,河南駐馬店人,講師,研究方向:圖像處理與壓縮技術.
TN386 5
A
2095-8978(2016)02-0107-04