王娟, 胡永剛, 吳憲祥
(1. 西安翻譯學院 工程技術學院, 西安 710105;2. 西安電子科技大學 空間科學與技術學院ICIE研究所, 西安 710071)
基于FPGA的CCSDS位平面編碼設計與實現
王娟1,2, 胡永剛2, 吳憲祥2
(1. 西安翻譯學院 工程技術學院, 西安 710105;2. 西安電子科技大學 空間科學與技術學院ICIE研究所, 西安 710071)
針對已有位平面編碼實現掃描效率低、復雜度高等缺點,提出了一種CCSDS圖像壓縮位平面編碼技術的FPGA實現方法。將CCSDS圖像壓縮算法位平面編碼分為預處理、掃描、熵編碼等幾個關鍵模塊,采用流水結構對系統(tǒng)進行設計。最后,用Modelsim進行仿真測試,經檢驗,輸出的編碼結果正確。實驗表明,提出的實現方案編碼效率高,復雜度低,有一定的實用價值。
CCSDS; 圖像壓縮; 位平面編碼; FPGA
隨著航天技術的飛速發(fā)展和人們對空間采集圖像的質量要求越來越高,圖像的分辨率不斷增加,因此,數據的存儲量和傳輸量急劇增長。大數據量的圖像會給星載存儲器的存儲容量,通信信道的帶寬,以及計算機的處理速度帶來很大的壓力,為了有效傳輸數據,圖像的高效壓縮成為必然的解決方法。CCSDS(Consultative Committee for Space Data Systems,空間數據咨詢委員會)2005年正式推出了新一代空間圖像壓縮推薦標準CCSDS122.0-B-1[1],現在,該標準已經被國際航空界廣泛采用,并成為各參與國制定自身應用標準的一個重要參考文件,為實現開放互連的國際空間數據奠定了技術基礎。然而,通常所用的處理器實現CCSDS標準,需要高頻的時鐘,較大的緩存等,對CCSDS的應用有很大的限制[2]。而FPGA具有內部資源多,可并行結構執(zhí)行,具有豐富的內部存儲等優(yōu)點,可以很好的解決以上問題。所以,用FPGA實現CCSDS是一種有效的解決圖像壓縮的方法。
本文用FPGA實現CCSDS算法的位平面編碼,將位平面編碼分為預處理,掃描,熵編碼等關鍵模塊,對這些關鍵模塊采用流水的結構設計,從而提高系統(tǒng)掃描效率,降低系統(tǒng)復雜度。最后,對模塊進行仿真驗證,得出結論。
CCSDS算法的基本結構主要分為兩個部分,離散小波變換和位平面編碼[3],如圖1所示。
圖1 CCSDS圖像壓縮算法的基本結構
輸入圖像經過離散小波變換,進行頻帶分解,對原始圖像去相關。然后對變換后的圖像數據進行掃描以及熵編碼,最后拼接得到所需碼流。
1.1 離散小波變換
離散小波變換主要是去除圖像數據間的相關性,將數據間的相關冗余轉換成小波系數間的統(tǒng)計冗余,從而有利于現有的熵編碼技術進行壓縮編碼。CCSDS推薦了浮點和整數兩種雙正交小波變換的方法,由于整數變換節(jié)省資源,運算量小,有利于硬件實現,且能實現完全重構,所以,整數小波變換具有更大的應用優(yōu)勢。小波變換后,將原始圖像進行三級的二維分解,得到10個子帶,小波變換系數分布,如圖2所示。
圖2 小波變換系數分布
1.2 位平面編碼
位平面編碼主要包括三個部分,段頭編碼,直流系數和AC Depth編碼,以及交流系數位平面編碼[4]。段頭所需的信息在預處理之后都可獲得。直流系數編碼用rice算法[4],對直流系數進行量化后,按照光柵掃描的順序寫入碼流中,從最高位開始,直到BitDepthAC位為止。對于直流系數的低BitDepthAC位,將在交流系數位平面編碼中的stage0中進行編碼。然后,開始交流系數位平面編碼。交流系數位平面編碼可以分為5個部分,stage0~stage4.。stage0是對直流系數編碼中的低BitDepthAC位進行編碼,stage1~stage3對交流系數進行編碼,每個stage分別對應parent,children和grandchildren中的系數,最后,對滿足條件的系數放入stage4中編碼。
經過三級小波變換后的系數分布如圖2所示,在不同的頻帶都有每個家族的成員,為了方便對數據掃描,減少掃描冗余,位平面編碼模塊中,首先將每個家族的成員聚集在一起,按照頻帶由低到高,由左到右的原則排列,放入緩存中,并在放入的同時獲得最大值集合,即獲得相應頻帶的最大值,放入最大值集合緩存中,然后開始掃描。在掃描時,最大值集合和系數集合串行進行,在掃描完最大值集合后,開始掃描系數集合,雖然這樣掃描的時間延長,但是可以減小實現復雜度,減小硬件實現的難度。直流系數和AC Depth按照標準要求,先進行量化,量化后進行rice編碼,本文采用最優(yōu)化的方法進行編碼,即獲得使碼流最少的編碼選項后,進行編碼。交流編碼分為位平面掃描和熵編碼兩部分,位平面編碼按照系數的重要性由高到低依次掃描,得到映射符號,并將這些符號按照5個stage,存儲在緩存中。然后在獲得編碼選項后,進行熵編碼,得到碼流。
2.1 算法實現總體框架
原始圖像經過小波變換后,變換結果送入小波系數緩存。在位平面編碼算法中,首先對小波系數進行預處理,實現小波樹的抽取,從小波系數緩存中讀取待編碼的段的系數,組織成適合位平面編碼的結構,同時完成系數按頻帶加權,掃描系數深度,以及統(tǒng)計Ci,Gi,Hij等各集合系數的最大值的工作以輔助位平面掃描。將預處理的結果送入預處理緩存,DC系數緩存,AC Depth緩存。DC系數編碼和AC Depth編碼的編碼結構相似,都是采用rice算法進行編碼。位平面掃描是小波系數進行預處理后,形成的適合位平面編碼的系數掃描[5],把掃描結果放入掃描緩存中,然后對掃描緩存中的數據進行熵編碼,最后和DC系數和AC Depth編碼結果進行碼字拼接,形成最后的碼流輸出。由于DC系數編碼和AC Depth編碼與交流系數位平面編碼是相互獨立的,將兩部分并行處理,使得壓縮周期減少,提高壓縮效率。算法整體結構,如圖3所示。
圖3 算法實現整體框架
2.2 位平面編碼結構
選取定級因素因子體系和確定其權重是耕地定級關鍵的一步??紤]到耕地的自然、社會、經濟與區(qū)位屬性,需要選取的評價因素因子較多,計算量較大,利用GIS對空間信息強大的采集、存儲、分析、管理能力是耕地定級及對成果進行科學管理的有效途徑[12-16]。
2.2.1 預處理模塊
小波變換后,系數是按子帶進行存放的,如果直接按子帶進行位平面編碼,結構就會變得很復雜,給設計帶來很高的難度。因此,首先對小波變換后的系數進行預處理。預處理將小波系數緩存中的系數,進行加權以及家族進行聚合,形成適合位平面掃描的結構,并將結果放入預處理緩存中。同時對小波系數測量深度,得到DC系數和AC Depth,將得到的結果放入DC系數和AC Depth緩存中。
2.2.2 DC系數編碼與AC Depth編碼模塊
DC系數編碼與AC Depth編碼的核心算法思想是rice算法,因此,可以采用相似的編碼結構。同時,由于預處理后產生的數據可以組成段頭,在本文中,將段頭,DC系數編碼與AC Depth編碼放在這個模塊中實現,如圖4所示。
圖4 DC系數、AC Depth編碼結構
在預處理結束后,給DC系數編碼與AC Depth編碼模塊的start信號有效,開始進行編碼。編碼參數根據DC系數與AC Depth確定量化參數q,量化后DC系數位深度N等參數。編碼控制首先控制模塊對DC系數進行編碼,從DC系數緩存中調入DC系數,經過量化后,得到高BitDepthDC-q位。DC系數經過量化后,送入預處理,然后將經過預處理后的數據送入gaggle buffer中緩存。同時,預處理在進行處理的同時,獲得編碼選項。AC Depth編碼和DC系數編碼的過程是一樣的。獲得編碼數據后,將段頭信息,DC和AC Depth的編碼數據送入熵編碼模塊,然后送入碼流拼接模塊,得到碼流。
本文中的編碼器獲得編碼選項采用的是基于遍歷的選優(yōu)法方法。對每個群的數據在每個編碼選項下統(tǒng)計編碼后的碼流長度,對比統(tǒng)計結果,獲得使碼流長度最短的編碼選項k作為該群的編碼選項。
2.2.3 交流系數位平面編碼模塊
圖5 位平面編碼結構
由于掃描和熵編碼占用了較多的壓縮時間,在這里對掃描和熵編碼采用流水的結構,當一個位平面掃描完成后,將映射符號放入stage_MEM中,然后熵編碼模塊進行編碼,在熵編碼的同時,對下一個位平面進行掃描。
在一個段的AC系數編碼中,stage0~stage4的編碼過程是交叉進行的,即采用廣度優(yōu)先的掃描方式獲得每個stage的信息,然而這樣的掃描方式會導致小波系數的重復掃描,同時也會重復掃描最大值參數(集合最大值存儲器),增加實現的復雜度與實現難度,因此,本文在這里采取深度優(yōu)先的方式,將stage1~stage3的掃描過程串行執(zhí)行,在獲得stage1~stage3信息的時候,同時獲得stage4的信息,如圖6所示。
本文用verilog語言進行電路設計描述,采用256*256像素大小的lena灰度圖像進行測試,時鐘頻率為30 MHz,最后利用Modelsim 6.5e仿真,得到測試結果。
3.1 DC系數編碼與AC Depth編碼仿真結果:
直流系數的編碼,如圖7所示。
圖6 掃描生成編碼信息的順序
圖7 直流系數編碼
從緩存中讀出直流系數進行量化,同時獲得量化步長,經映射后獲得編碼字,對參數k按照最優(yōu)化方法選取,生成所需碼字,然后進行碼流組織,輸出碼流。
3.2 掃描結果仿真:
從緩存中讀出最大值和塊重要信息,按照算法標準生成stage0~stage4的信息,同時,將stage0~stage4的信息存入stage_0 MEM~stage_4 MEM。當數據有效時,存儲地址遞加,write_en有效。在存儲的過程中,計算出編碼選項code_option。如圖8所示。
圖8 掃描結果
3.3 位平面編碼結果仿真:
當一個位平面的的掃描完成時,開始進行熵編碼和碼流拼接。從stage_0 MEM~stage_4 MEM中依次讀出數據,進行由symbol到變長編碼字的映射,并且在第一次出現給定長度的參數碼字之前,插入編碼選項code_option,最后按照8bit長度輸出碼流。將位平面編碼的結果放入緩存中,如圖9所示。
采用CCSDS官方網站上提供的8bit圖像進行測試,圖像格式均為RAW格式,以256*256的Lena圖像為例,本方
圖9 位平面編碼結果
法可以在50 MHz工作時鐘下零殘差實現圖像的三級小波變換,優(yōu)化前編碼任務平均消耗時間為21.42 ms,優(yōu)化后編碼任務平均消耗時間為5.01 ms,是原來未進行流水結構優(yōu)化的23.39%,縮短了BPE編碼時間,完全滿足40 ms/幀的實時性要求。
本文針對CCSDS圖像壓縮算法推薦標準,為提高掃描效率和降低實現復雜度,采用流水結構的方法,對位平面編碼中的各個模塊進行設計。Modelsim中仿真結果表明,系統(tǒng)編碼結果正確,復雜度低,能有效的提高編碼效率,在圖像壓縮領域具有較好的應用前景。
[1] Image Data Compression: recommendation for space data systems standards, CCSDS122,0-B-1, blue book[M]. Washington, DC: CCSDS, 2005.
[2] 濮建福, 裴加軍,張寧等.基于CCSDS的高光譜壓縮空譜聯(lián)合FPGA設計與實現[J]. 上海航天, 2015, 32(6): 53-57.
[3] Lossless data compression: recommendation for space data systems standards, CCSDS121. 0-B-2, blue book[M]. 2nd Ed. Washington DC: CCSDS, 2012.
[4] Pen S Y, Philipper A, Aaron Kiely, et al. The New CCSDS Image Compression Recommendation[C]∥ IEEE Aerospace Conference, 2005. Piscataway, NJ, 2005: 4138-4145.
[5] GU Xiaodong, WANG Huaichao, ZHANG Xuequan. Design and Implementation of Image Compression Core Based on CCSDS Algorithm[C]∥4th International Conference on Computer Science & Education(ICCSE 2009), 2009. Piscataway,NJ, 2009: 1873-1876.
[6] 毛峽, 湛杰. CCSDS中位平面編碼的FPGA優(yōu)化實現[J]. 電視技術, 2011, 35(7): 52-55.
Design and Implementation of Bit-Plane Encoding for CCSDS Based on FPGA
Wang Juan1,2,Hu Yonggang2,Wu Xianxiang2
(1. School of Technology and Engineering,Xi’an Fanyi University,Xi’an 710105,China;2. ICIE Institute,School of Aerospace Science and Technology,Xidian University,Xi’an 710071, China)
Aiming at overcoming the shortcomings of low scan efficiency and high complexity that exist in bit-plane coding, a bit-plane coding module in CCSDS image compression is proposed and implemented on FPGA. Bit-plane coding in CCSDS image compression is composed of several key modules including pretreatment, scan, entropy coding etc. Besides, the architecture in pipeline is adopted to design the system. Finally, the simulation test is carried out on Modelsim and the encoding result is turned out to be correct. The experimental results show that the implementation scheme proposed in this paper has high encoding efficiency, low complexity, thus it has great practical value.
CCSDS; image compression; bit plane encoding; FPGA
國家自然科學基金項目(61105066);中央高?;究蒲袠I(yè)務費專項資金資助項目(JB141305)
王娟(1980-), 女, 山東沂水人, 講師, 碩士, 主要研究領域為圖像處理、模式識別, E-mail: hiwangjuan@163.com; 胡永剛(1985-),男,陜西榆林人,碩士,主要研究領域為FPGA設計應用、圖像處理。 吳憲祥(1980-),男,山東沂水人,博士,碩士生導師,主要研究領域為進化計算、圖像處理; 吳憲祥(1980-),男,沂水人,博士,博士生導師,研究方向:進化計算、圖像處理,西安 710071。
1007-757X(2017)01-0005-04
TP751.1
A
2016.05.05)