韓宇 袁素春 張建華 鄭小松 劉聰聰 師勇 張朗 武小棟
(西安空間無線電技術研究所,西安 710071)
隨著衛星通信技術的不斷發展,為了能給用戶提供更寬的拍攝范圍和更高的圖像質量,星載相機的分辨率和處理速度都在不斷提高。高分七號衛星是一顆高精度民用測繪衛星,衛星軌道高度約500 km,用于實現1∶10 000比例尺測繪。星上裝載了雙線陣測繪相機(包括前視相機和后視相機),通過對同一地區不同角度的觀測,獲得地區的平面、高程、地物屬性等信息,用于測繪行業的立體測圖、資源及環境遙感應用。衛星上裝載的載荷較多,輸入原始碼數據率高,圖像數據保真度要求高,同時具備靈活的成像和數據傳輸能力,是目前對地觀測衛星數據率最高的衛星之一。解決原始碼數據率與星地下傳通道速率的矛盾,是衛星在軌應用的重要技術之一。出色的原始圖像壓縮能力及較小的圖像質量損失,也是衡量衛星性能的重要技術指標。
JPEG-LS算法主要是對靜態連續色調圖像進行無損或近無損壓縮,于1998年正式公布,其核心算法是LOCO-I(Low Complexity Lossless Compression for Images)算法。憑借優越的壓縮性能和較小的硬件實現復雜度,JPEG-LS無損壓縮取得了廣泛的應用。然而現有文獻中對JPEG-LS近無損壓縮模式的硬件實現研究并不多,在工程應用中也仍然主要采用JPEG-LS無損壓縮模式,其主要原因是JPEG-LS在近無損壓縮模式下硬件實現復雜度增加。在文獻[1]中,需要在編碼過程中對輸入圖像進行片外緩存,不僅增加了系統功耗,而且占用較大的板級空間,增加成本;在文獻[2]中,作者提出使用一種新的重建值計算方法,能夠在一個時鐘周期內計算得到像素重建值,但是這種方法改變了JPEG-LS算法標準,給編碼性能帶來下降,而且會增加解碼的難度;在文獻[3]中提出的硬件結構中前后兩個相鄰像素的處理相差9個時鐘周期,這樣使得編碼效率大大降低。
針對當前研究現狀,文章提出并設計了一種多路并行圖像實時壓縮系統,該系統基于JPEG-LS算法,FPGA作為邏輯控制核心,可以靈活選擇圖像緩存,并結合算法和硬件特點,降低了編碼器的邏輯資源開銷,實現了一種全新的JPEG-LS無損及近無損壓縮編碼器硬件結構,提出了一種新的JPEG-LS動態碼率控制算法,與現有技術相比,具有編碼效率高,資源占用少,系統功耗低,使用靈活等優點。
高分七號衛星配置1臺數據處理器實現星上圖像壓縮功能,壓縮算法選用靜態圖像壓縮標準JPEG-LS。
數據處理器包含4塊圖像處理單元,完成3片后視CCD與4片前視CCD圖像的壓縮功能。其中,3塊圖像處理單元完成后視全色與后視多光譜圖像壓縮,1塊圖像處理單元完成前視全色圖像壓縮。其中,后視多光譜從圖像處理單元右路FPGA經過板內互連線送至圖像處理單元左路FPGA進行處理。
數據處理器與相機接口關系見如圖1所示。

圖1 數據處理器與相機連接關系示意圖Fig.1 Diagram of connection with camera equipment
圖像處理單元的功能有:接收前視相機、后視相機輸出的原始圖像數據,包括相機輔助數據和圖像數據,其中相機輔助數據不壓縮,僅對圖像數據進行壓縮,將壓縮后的碼流與相應的輔助數據進行復接,并進行壓縮碼流一級協議編排。
本文中壓縮系統由Xilinx公司的FPGA作為圖像分塊處理、圖像壓縮、多路并行輪循調度的核心處理器,外掛存儲器作為壓縮碼流的緩存器(使用外掛存儲器作為存儲單元片內乒乓緩存壓縮碼流數據,以達到實時緩存壓縮碼流的目的),及多個JPEG-LS壓縮核組成。以后視全色為例,系統的原理框圖見圖2。該系統可以實現對單路或多路寬幅圖像的實時無損或近無損壓縮。

圖2 后視全色壓縮系統FPGA實現示意圖Fig.2 Diagrammatic sketch of compression system with FPGA
JPEG-LS標準[4-5]是基于HP實驗室提出的LOCO-I算法,該算法具有實現復雜度低,保真度高的優點,易于硬件實現。而且不需要外部存儲器,有效節約了成本,因而廣泛應用于航空航天、數字相機、無線通訊以及醫學成像等領域。JPEG-LS的主要特點是:不對圖像進行變換,只利用預測與Golomb編碼。
JPEG-LS靜態圖像壓縮標準規定的無損和近無損編碼處理基于差分預測編碼技術,采用Golomb編碼對預測值與實際值的誤差進行編碼,同時建立了上下文模型對編碼參數進行修正,具體的算法實現過程如圖3所示。

圖3 JPEG-LS算法流程圖Fig.3 Algorithm flowchart of JPEG-LS
在JPEG-LS標準中,編碼模型基于所謂“上下文”的概念。在上下文建模時,對每一個采樣值都要以其相鄰的一小部分采樣為條件。如圖4是當前采樣x及其相鄰采樣位置的關系示意圖。根據在a、b、c和d采樣的重建值,該上下文首先決定采樣x是否采用正常模式或游長模式進行編碼:
根據上下文關系預計,abs(Di)=0(在無損編碼時),或者abs(Di)<= Near(在近無損編碼時),那么就選擇游長模式,反之則選擇正常模式。Near參數是JPEG-LS算法標準中的失真量化參數。

圖4 JPEG-LS的上下文模型Fig.4 Context model of JPEG-LS
在正常模式下,如圖5所示,當上下文決定后就緊接著一個預測過程,當前采樣點的實際值與預測值之差即為預測誤差,得到預測誤差之后被一個由Golomb編碼算法推導的過程進行自適應分類編碼。

圖5 正常模式編碼Fig.5 Normal mode coding
如圖6,在游長模式下,編碼器從x開始搜索與a的重建值具有相同值的連續采樣序列(在近無損編碼時,與a的誤差在指定的界限內)。該游長無論是遇到一個具有不同值的采樣(在近無損編碼時,與a的誤差超出指定的界限),或者遇到當前行的結尾都將終止,此時要接著進行游長終止采樣編碼,對于前一種結束方式,先進行差值處理,再對所得的誤差進行誤差自適應編碼;后一種結束方式編碼更加簡單,直接對游長進行結束編碼即可。

圖6 游長編碼Fig.6 Length coding
由于FPGA內部邏輯與緩存資源有限,JPEG-LS壓縮核對輸入圖像的最大尺寸有著嚴格的限制。相機后視全色幅寬為6144像元,前視全色幅寬8192像元,多光譜幅寬12 288像元,均大于單個壓縮核所能處理的極限。而文章所介紹的多個JPEG-LS壓縮核并行聯合處理的工作方式可解決寬幅輸入圖像的壓縮問題。
對于單路寬幅輸入圖像,一般按照圖像行等分、塊最大的原則進行輸入圖像的分塊處理,將分出的小塊圖像分別送給多個JPEG-LS壓縮核進行壓縮處理,再將壓縮后的碼流按照一定的協議順序進行排列依次送給固存、星地通道、解壓縮設備,解壓縮設備根據協議順序便可將不同JPEG-LS壓縮核壓縮的碼流進行拼接,從而恢復出解壓縮的寬幅圖。
圖像分塊處理的方式是靈活可變的,對于多路圖像同時輸入的情況,根據圖像路數以及單路圖像的輸入數據率可以計算出輸入的總數據率,只要輸入的總數據率滿足多個JPEG-LS壓縮核的總處理能力要求,本系統可以實時壓縮處理同時輸入的多路圖像數據。
以后視全色的輸入圖像為例,一幅圖像單元圖像行寬為6144像素,高為64行,按每幀圖像768×64進行分塊,一幅圖像可以被分為8塊進行壓縮。前視全色與后視多光譜分塊方式與后視全色類似,本系統所采用的圖像分塊處理方式如圖7所示。
壓縮系統具備支持多路CCD獨立工作的能力,相機不同的CCD進行合路壓縮軟件設計的關鍵在于圖像緩存功能前增加了同步化處理模塊,如圖8所示。同步處理模塊采用FPGA內部FIFO資源,分別對圖像數據進行緩存處理,CCD的時鐘、門控、數據分別作為FIFO_CCD的輸入時鐘、寫使能、數據。FIFO的讀時鐘采用同一個本地時鐘,通過對2片CCD的門控到來時機進行比較選擇產生的使能信號,作為兩個FIFO的共同的讀使能信號。經過同步處理之后,異步的多路CCD輸入實現完全同步,輸送給下一級進行處理。
當不同路的CCD圖像某一路出現沒有輸入時,同步處理模塊可以自動識別出該狀態,根據多路間最大延遲進行判斷,當超出最大延遲時,判斷為該路無輸入,此時同步處理模塊自動產生相關驅動信號,保證正常輸入的一路可以正常工作,提高了軟件的容錯性。

圖7 圖像緩存及分幀示意圖Fig. 7 Diagrammatic sketch of image partitioning

圖8 圖像同步處理功能框圖Fig.8 Functional diagram of image synchronization process
本文介紹的基于JPEG-LS算法的圖像壓縮系統,為了保證系統的實時處理能力,必須調度多個JPEG-LS壓縮核并行工作。由于JPEG-LS是基于像素的圖像壓縮算法,當圖像數據到來時以行為周期,在進行壓縮前需要對行進行分割處理,把相機一行分為多個圖像塊行并進入FPGA內部緩存,再采用統一的判讀條件進行緩存讀取,保證進入多個壓縮核的圖像數據完全同步。該方法靈活可變,可以適用于任意不同幅寬的圖像,僅需要通過輸入像素速率調整參數即可。
由于多個并行的壓縮核同時工作,壓縮碼流會以并行輸出的方式進入緩存芯片,為了保證碼流格式完整性及協議編排,需要對多個壓縮核的輸出碼流進行輪循調度存入雙倍速率同步動態隨機存儲器(DDR)緩存芯片。以后視全色為例,每個CCD采用8路并行的JPEG-LS壓縮核進行壓縮,由于圖像不同圖像塊的紋理不同,各壓縮核輸出壓縮碼流的時機也完全不同,壓縮碼流輸出后進入FPGA內部緩存進行格式轉換,當某一路的壓縮碼流滿足寫入DDR緩存芯片條件時,產生DDR寫請求信號,先入先出(FIFO)收到寫請求信號時,輸出數據至DDR,即進行DDR寫操作。由于FPGA的實時計算特性,保證在任意時刻均對8路壓縮核的碼流進行實時自適應判決。該自適應輪循的方法相較于順序輪循,可以適用同一幅圖中不同圖像塊紋理差異過大的情況,且可以更高效的利用DDR接口帶寬,提高系統處理能力。
圖9是多路并行輪循調度示意圖,所示意的是8個JPEG-LS壓縮核作為一組進行并行輪循調度的應用情況。

圖9 并行輪循調度示意圖Fig.9 Parallel round robin scheduling diagram
JPEG-LS動態碼率控制算法一般采用的算法是將圖像分為若干個小碼塊,每壓縮完一個碼塊,就會統計實際碼率和目標碼率之間的偏差,并根據碼率偏差來調節下一個碼塊所對應的失真量化參數Near的值,各并行的壓縮核獨立進行運算,使實際碼率不斷逼近目標碼率。
文章壓縮系統采用了一種改進的JPEG-LS碼率控制算法:將圖像按壓縮核個數進行分塊,多路并行的壓縮核每壓縮完一個碼塊,根據當前碼率偏差統一調整失真量化參數Near值,來控制下一個碼塊的輸出碼率。本算法的核心有兩點:①連續調整失真量化參數Near,每1024行對碼塊基準逼近值進行更新;②多路并行壓縮核參數Near統一更新;
對于一般圖像,壓縮比控制函數可近似為線性函數,設當前壓縮比為Ccr,壓縮比控制因子為Q,k、b為控制系數,則
Ccr=k×Q+b
(1)
其中,為了使Ccr接近目標壓縮比Ocr,我們需要對Q進行動態調整,i時刻Q的值為
Q(i)=Q(i-1)+ΔQ(i)
(2)
根據最陡下降法,ΔQ(i)的模型為
(3)
式中:Lr為學習率,為正數;E為當前壓縮比Lr與目標壓縮比Ocr的偏差量,可以表示為
E=(Ocr-Ccr)2
(4)
將E的函數代入式(4),可得
(5)
由式(1)可知,Ccr是Q的線性函數,故(5)為
ΔQ(i)=α×(Ocr-Ccr),α>0
(6)
將式(6)代入式(2),可得
Q(i)=Q(i-1)+α×(Ocr-Ccr),α>0
(7)
式(7)即為最終的碼率控制的數學模型,在JPEG-LS的碼率控制算法中,控制因子為Nnear,α為步長系數,因此Near值調整的數學模型為
Nnear(i)=Nnear(i-1)+α×(Ocr-Ccr),α>0
(8)
由式(8)可知,當當前壓縮比Ccr大于目標壓縮比Ocr時,即Ccr-Ocr<0時,Nnear的取值要減小一個步長α,反之,當當前壓縮比Ccr小于目標壓縮比Ocr時,即Ccr-Ocr>0時,Nnear的取值要增大一個步長α,這一點與實際意義相符。
一般情況下,對于連續掃描的圖像,相鄰的圖像塊之間的紋理具有很強的相關性,也就是說,圖像特征很相近,如果要求輸出固定的目標碼率,那么對應的調整因子Near值也必定很相近,因此,碼率調整的過程,即是跟蹤搜索與圖像特征相匹配的調整因子的過程,當算法收斂之后,調整因子應該是在一個恒定的均值附近上下抖動,進行微小的調整,相反,如果調整算法中Near值跳動幅值很大,說明該算法并沒有跟蹤上圖像內容的變化,即沒有收斂。因此,從理論上講,碼率控制的調整步長不宜太大。
碼率控制算法收斂后,Near值將在很小的范圍內進行波動,輸出的碼率也相應趨于穩定,但是當遇到圖像中有紋理突變時,比如一片海域之后出現的海岸城市,由于城市的圖像紋理信息量遠遠大于海域,因此對于紋理處于突變區的圖像塊,其參數Near值處于過渡調整時期,導致當前圖像塊的輸出壓縮比不能滿足要求值,為了解決這個問題,我們提出了連續調整碼率的策略,當實時壓縮比出現欠調或過調狀態時,通過后續圖像塊的反相補償,使得一段時間之內的平均輸出碼率快速收斂于要求值。
本文所采用的圖像壓縮系統具備多項技術特點,可以適用不同衛星不同載荷類型。
當相機圖像輸入速率匹配JPEG-LS壓縮核處理能力,但圖像路數較多或幅寬較寬時,可以采用增加圖像緩存芯片的方案,緩存芯片進行圖像塊數據緩存及調度,如圖10(a)所示,該方案以圖像塊為單元送至JPEG-LS壓縮核。
當相機圖像輸入速率匹配JPEG-LS壓縮核處理能力,圖像路數為單路或圖像幅寬較小時,可以采用FPGA內部緩存,節省器件資源,這是因為JPEG-LS是基于像素的壓縮算法,內部緩存僅需緩存一行圖像即可向壓縮核輸入數據,如圖10(b)所示,該方案以圖像行為單元送至JPEG-LS壓縮核。

圖10 圖像緩存機制Fig.10 Mechanism of image cache storage
該方法靈活可變,適用不同的應用場景,可以節約硬件成本。片內緩存機制邏輯控制簡單,采用FPGA內部資源即可完成圖像緩存功能,去掉了外部芯片控制邏輯,系統資源占用率降低約10%,資源占用對比情況見表1。

表1 資源占用率對比Table 1 Resource utilization comparison
JPEG-LS碼率控制問題,國內外諸多學者進行了相應的研究,并提出了一系列碼率控制算法。其中比較典型的有文獻[6]提出的基于視覺感知與內容自適應的碼率控制算法;文獻[7]提出的基于段的碼率控制算法;文獻[8]提出的開環碼率控制算法;文獻[9]提出的高比特率下的JPEG-LS碼率控制算法;文獻[10]提出的JPEG-LS動態碼率控制方法等。這些碼率控制算法,主要是根據碼率和失真量化參數Near的關系進行碼率控制。在壓縮過程中,根據當前碼率偏差實時調節Near值,從而形成了一種負反饋的調節方式,使得碼率最終趨于收斂。但是這些算法大多沒有深入分析JPEG-LS圖像壓縮標準中碼率和Near的精確關系,只是根據一種近似的線性關系來通過碼率偏差調節Near值,導致碼率收斂速度不夠迅速,且沒有考慮實際應用中多路并行壓縮時的碼率控制。
本文碼率控制算法,可以根據當前碼率偏差統一調整失真量化參數Near值,來控制下一個碼塊的輸出碼率,使得更快的逼近目標碼率,多路并行壓縮核統一進行參數更新,相較其它算法可以提高圖像視覺的整體主觀感受,提高整體的圖像質量。
圖11是對一幅11比特遙感圖像進行壓縮后的結果,圖中的紅色曲線表示從開始到當前行的平均輸出碼率,藍色曲線表示當前塊的在線輸出碼率,從圖11中可以看出,Current CR在算法收斂后在4倍壓縮曲線附近有微小的上下浮動,但Average CR逼近于4倍壓縮碼率,且輸出穩定。
選取不同場景的5幅遙感衛星圖像,大小2048×2048,位寬11bit,如圖12所示。分別采用傳統算法與本文改進算法進行4∶1的目標壓縮比測試,結果見表2。

圖11 圖像4倍壓縮下的碼率控制結果Fig.11 Result of rate control under Image 4× Compression


圖12 選取的測試圖像Fig.12 Selected test image

表2 與傳統算法比較Table 2 Comparison with traditional algorithm
由測試結果可見,采用本文改進的碼率控制算法,在整幅圖紋理復雜程度不均勻時,提升效果較大,在紋理復雜程度比較均勻時,提升效果較小。相較于傳統碼率控制算法,相同壓縮比下,恢復圖像的PSNR提高0.5 dB以上。
本文設計的圖像壓縮系統,描述了采用多個JPEG-LS壓縮核并行工作的壓縮編碼系統的設計思路和設計方法,利用FPGA實現了基于圖像分塊處理技術及多路并行輪循調度技術的壓縮系統設計,采用了一種先進的碼率控制策略。對壓縮系統的功能和性能在高分七號衛星上進行了測試,結果表明:壓縮系統可以很好地解決相機原始碼數據率與星地下傳通道速率不匹配的矛盾,滿足高分七號衛星的實時無損或近無損壓縮處理的需求,且近無損壓縮下圖像質量客觀參數PSNR值相較傳統算法提升至少0.5 dB。
壓縮系統的研究是通過降低數據總量解決海量高分遙感數據傳輸能力制約的有效途徑,本文提出使用在高分七號衛星上的無損及近無損圖像壓縮系統,為未來衛星構建能滿足寬幅、高分辨率、全色多光譜、多遙感器、海量數據的星上高速數據傳輸系統打下了堅實的基礎。該系統使用靈活、資源占用小,進一步研究的價值大,在軍事、地質、農業、林業、海洋、環境監測等領域將會得到廣泛的應用。