魏亞輝
(駐馬店職業(yè)技術學院 機械電子工程系,河南 駐馬店 463000)
?
基于FPGA的遙感圖像JPEG-LS壓縮算法的研究與實現(xiàn)
魏亞輝
(駐馬店職業(yè)技術學院 機械電子工程系,河南 駐馬店 463000)
為有效利用星地傳輸信道需要研究大幅面衛(wèi)星圖像的編碼技術。JPEG-LS編碼算法對衛(wèi)星圖像進行壓縮處理,可以更有效地使用有限的通信頻帶,達到對圖像數(shù)據(jù)的無失真?zhèn)鬏?。本文研究衛(wèi)星遙感圖像的壓縮編碼在可編程邏輯中的實現(xiàn)技術。
星載圖像;FPGA;JPEG-LS
隨著信息技術的不斷發(fā)展和我國遙感圖像在衛(wèi)星通信上的迫切需要,衛(wèi)星圖像的星地傳輸技術成為了一個需要重點研究的領域。衛(wèi)星遙感圖像與常規(guī)靜止圖像相比,具有圖像相關性差,信息熵值高,冗余度小的特點。其圖像數(shù)據(jù)隨地面背景和氣象狀況的不同而發(fā)生巨大的變化,連續(xù)性差,可預測性極低,因此要獲得較高壓縮比難度極大,是靜態(tài)圖像壓縮領域的難點。JPEG-LS作為一種連續(xù)色調靜止圖像無損/近無損壓縮標準,是基于HP(惠普)實驗室Weinberger等人提出的LOCO-I(Low Complexity Lossless Compression for Image:低復雜度無損圖像壓縮)壓縮方法,1998年6月作為ITU-T建議T.87標準(國際標準ISO/ICE14495)正是發(fā)布。其核心算法主要包括基于自適應預測、上下文建模和Golomb編碼算法。與JPEG、JPEG2000等流行的圖像壓縮算法相比較,JPEG-LS在無損壓縮領域具有高保真和低復雜度等特點,便于硬件實現(xiàn)。
JPEG-LS基于低復雜度無損圖像壓縮方法的思想,是一般上下文模式的“低復雜度實現(xiàn)”,配合上下文建模和熵編碼。主要包括三個部分:預測、上下文建模、熵編碼。宏觀上,它是建立在對輸入圖像上下文建?;A上的逐像素處理,針對不同像素其上下文的不同點,JPEG-LS的編碼流程采取兩種模式:常規(guī)模式(regular mode)和游程模式(run mode),其原理框圖如圖所示。
圖1 JPEG_LS算法原理框圖
圖2上下文示意圖
用來預測當前像素x的上下文如圖2。編碼器考察上下文像素,決定用常規(guī)模式還是游程模式進行編碼。如果預測器模板計算得到的上下文梯度表示當前像素位于平滑區(qū)域(當前像素x后面的像素y , z , …可能是相等的),則編碼器選擇游程模式;否則,選擇常規(guī)模式。
在常規(guī)模式中,編碼器利用上下文像素a,c,b的值預測x,用一個與上下文有關的項修正預測值,來補償在預測中的系統(tǒng)偏差,而后從x中減去預測值得到預測誤差Errval,然后根據(jù)上下文分布的統(tǒng)計信息進行Golomb編碼。
在游程模式中,編碼器先統(tǒng)計位于當前像素同一行內的與上下文像素a相等的最長像素游程,游程中所有的像素都等于a并且像素a已進行編碼,因此這里只需要對游程長度編碼就可以了。
考慮到衛(wèi)星圖像中很少會出現(xiàn)大塊的平滑區(qū)域圖像,選擇游程模式的比例很小,體現(xiàn)不了游程編碼的優(yōu)點,且游程模式會使FPGA設計的難度以及復雜度大大增加并減慢編碼速度,因此現(xiàn)階段的硬件實現(xiàn)上只考慮采用常規(guī)模式進行無損圖像壓縮。對紅外兩個波段(4.3mm和2.7mm)的衛(wèi)星圖片的實驗結果表明(見表1),去掉游程編碼的JPEG-LS對圖像的壓縮比影響不大。
表1 有無游程編碼的兩種JPEG-LS的壓縮比比較
圖3JPEG_LS的編碼流程圖
常規(guī)模式下JPEG-LS算法的流程如圖3,其中,JPEG-LS算法流程中核心為上下文建模、預測、熵編碼和參數(shù)更新算法。
JPEG_LS算法流程清晰,具備良好的流水線特性,在FPGA實現(xiàn)中采用模塊化思想,可劃分為以下幾個模塊:數(shù)據(jù)緩存模塊緩存圖像數(shù)據(jù)并得到當前像素位置和建立上下文模板;梯度計算模塊完成上下文模板梯度值的計算、映射并得出上下文索引值;固定預測器模塊預測當前像素的值,然后自適應修正模塊對預測值進行誤差修正;Golomb編碼模塊進行熵編碼;環(huán)境參數(shù)模板完成上下文參數(shù)的初始化和更新功能。算法的實現(xiàn)既在整體流程上保證了流水線的順暢,又在局部上采用并行設計,降低流水深度。另外,在每個模塊的內部計算也最大可能的并行展開,集中體現(xiàn)了流水與并行互相嵌套的設計思想,提高系統(tǒng)的效率。下面將討論關鍵模塊的FPGA實現(xiàn)過程。
2.1環(huán)境參數(shù)模塊
環(huán)境參數(shù)模塊由三個子模塊實現(xiàn),初始化控制、參數(shù)更新和參數(shù)存儲,如圖4所示。
初始化控制完成系統(tǒng)參數(shù)的初始化,這些系統(tǒng)參數(shù)包括:
圖4環(huán)境參數(shù)模塊實現(xiàn)框圖
MAXVAL:圖像像素可能的最大值,MAXVAL =2p-1;
Range:預測誤差值的范圍,Range = MAXVAL + 1;
qbpp:用來表示映射誤差比特數(shù);
LIMIT:常規(guī)模式下可能的最大碼長;
上下文環(huán)境參數(shù)A[0:364]、B[0:364]、C[0:364]、N[0:364]。
完成這些系統(tǒng)參數(shù)的初始化需要366個時鐘周期,只有系統(tǒng)參數(shù)初始化完畢后才能開始處理。初始化的上下文環(huán)境參數(shù)保存在其對應的雙口RAM緩存中。
在具體實現(xiàn)中,如圖5所示,使用參數(shù)更新模塊遵從更新過程實現(xiàn)當前上下文索引值對應的上下文環(huán)境參數(shù)的更新,并將更新后的參數(shù)保存到對應的RAM中,寫地址值為當前上下文索引值的延遲,這樣就完成了參數(shù)的更新。
圖5上下文參數(shù)更新示意圖
在流水線結構中某個像素在進行參數(shù)更新步驟時,在相同的時鐘里后面的一個像素可能要根據(jù)索引值去索引上下文環(huán)境參數(shù)用于其它步驟。這兩步驟都在流水線的“傳送帶”上,可以使用FPGA中的RAM資源生成雙口RAM,“傳送帶”上的參數(shù)更新的值根據(jù)寫地址值寫入RAM,“傳送帶”上的索引參數(shù)值根據(jù)讀地址值讀出RAM,這樣就能避免參數(shù)更新的反饋回路問題,又不影響參數(shù)的更新。
2.2Golomb編碼模塊
Golomb熵編碼由誤差映射、K值產生器、編碼模塊三部分組成,框圖如圖6所示。誤差映射模塊和k值產生器實現(xiàn)比較簡單,重點介紹編碼模塊的實現(xiàn)過程。
圖6Golomb編碼原理框圖圖7冗余Golomb編碼示意圖
由于Golomb編碼是變長編碼,如果按照算法的編碼規(guī)則直接進行編碼,F(xiàn)PGA的實現(xiàn)復雜度較高,會嚴重惡化流水線特性,使得編碼效率降低,因此我們考慮采用查表的方法來實現(xiàn)編碼。在算法流程中得到映射誤差和參數(shù)k值,Golomb編碼便可唯一確定。對于8bit圖像來說,參數(shù)k值的取值范圍為0~7,映射誤差的取值范圍為0~255,最大編碼碼長LIMIT為32bit。按不同的參數(shù)k得到的Golomb編碼表分別保存在8個ROM中,每個表按映射誤差值大小從0~255依次存放,位寬為40bit,高8bit碼長信息位表示實際編碼長度,后32bit為冗余編碼,如圖7。這樣實現(xiàn)時只需要將參數(shù)k作為ROM的片選信號,映射誤差值作為讀取ROM的地址信號,就可以讀取存儲在ROM中的冗余Golomb編碼。這種實現(xiàn)方式簡單,整個編碼過程只需要一個時鐘周期就能完成,不會影響流水線特性,但需要FPGA的RAM資源存儲Golomb編碼表。
將算法合理劃分為若干功能模塊,在每個時鐘的上跳沿處各操作步驟都同步地完成一次對應的處理。系統(tǒng)開始有效運行后經過若干時鐘周期的延遲,就可以在每一個時鐘周期完成一個像素的壓縮編碼,這樣流水線結構的算法就能實現(xiàn)實時壓縮處理。
為了更好的理解JPEG-LS無損壓縮算法的FPGA實現(xiàn)中各操作步驟的時序關系,下面對其進行較詳細的分析。
在流水線上,假定伴隨圖像數(shù)據(jù)流進入無損壓縮系統(tǒng)的第一個時鐘上跳沿為clk,各操作步驟相對其延遲一個時鐘則表示為clk_r,兩個時鐘則表示為clk_2r,依次類推。
基于上述完整的時序關系分析,我們定義從當前數(shù)據(jù)輸入到冗余Golomb編碼輸出為固定延時fix_delay,數(shù)據(jù)聚合模塊的延時為隨機延時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 ;
從時序分析結果可以看出,優(yōu)化后的JPEG-LS算法運算過程呈現(xiàn)良好的流水線特征,并充分利用FPGA計算資源豐富的優(yōu)勢,實現(xiàn)了“以空間換時間”的設計理念,使用延時電路來同步下一級運算輸入等設計技巧,實現(xiàn)了算法的完全實時流水操作。
JPEG-LS算法的FPGA移植選用的Xilinx公司生產的Virtex系列中的XC2V2000,ISE綜合工具分析表明,資源使用情況如表2所示。系統(tǒng)穩(wěn)定的處理速度可達到60MHz。
表2 JPEG-LS算法在FPGA上實現(xiàn)的資源使用情況
根據(jù)FPGA的特點,將流水與并行的思想植入算法的實現(xiàn)過程中,為設計硬件實現(xiàn)圖像的無損壓縮提供了解決方案,同時該硬件實現(xiàn)系統(tǒng),具有很好的穩(wěn)定性和可靠性,可以適應不同的環(huán)境,在其他圖像壓縮的應用場景中同樣適用。
[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]張?zhí)煨? 鄒勝, 曾永慧. 基于FPGA的圖像無損壓縮算法的實現(xiàn)[J]. 系統(tǒng)工程與電子技術, 2004,26(10):1340-1343.
[5]沈洪亮, 劉金國. 基于JPEG-LS的遙感圖像無損壓縮技術[J].光電子技術, 2009(9):206-210.
[6]胡棟. 靜止圖像編碼的基本方法與國際標準[M].北京: 北京郵電大學出版社,2003.
[7]夏宇聞. Verilog數(shù)字系統(tǒng)設計教程[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