呂德遠,黃浩文,曾 珉,曾 旭,趙志剛,*
(1.深圳技術(shù)大學(xué) 新材料與新能源學(xué)院,廣東 深圳 518118;2.深圳大學(xué) 物理與光電工程學(xué)院,廣東 深圳 518052)
高光譜成像技術(shù)結(jié)合了數(shù)字成像和光譜學(xué)的優(yōu)勢[1],可以用更高的精度和細節(jié)表征場景中的對象,能夠應(yīng)用于遙感[2]、工業(yè)制造[3]、醫(yī)學(xué)[4]等領(lǐng)域。近年來,歐洲微電子研究中心(IMEC)推出的新一代快照馬賽克高光譜成像技術(shù),通過在CMOS感光面表面沉積不同波段的濾光膜,可同時獲取25個不同光譜波段的高光譜數(shù)據(jù)[5,6],使得高光譜技術(shù)在手持設(shè)備或小型無人機遙感領(lǐng)域的應(yīng)用成為了可能[7]。
由于包含了多通道的光譜數(shù)據(jù)信息,高光譜圖像通常數(shù)據(jù)量巨大[8],對數(shù)據(jù)傳輸帶寬要求非常高。國際空間數(shù)據(jù)系統(tǒng)咨詢委員會(The Consultative Committee for Space Data Systems,CCSDS)于2012年5月推出了多光譜/高光譜無損壓縮標準CCSDS-123.0-B-1[9,10],并于2019年2月升級到CCSDS 123.0-B-2標準[11]。新標準增加了對近無損壓縮的支持并向下兼容,拓展了適用范圍[11],在減少數(shù)據(jù)帶寬、減少緩存和存儲的需求以及減少數(shù)據(jù)傳輸時間等方面進行了優(yōu)化[12],適合在衛(wèi)星、無人機或微型無線高光譜采集設(shè)備上應(yīng)用[13]。
但是CCSDS 123.0-B-2標準新引入的近無損壓縮功能會導(dǎo)致算法在FPGA硬件實現(xiàn)時無法有效使用流水線化和并行化技術(shù)[14,15],降低了數(shù)據(jù)吞吐率,限制了其在快照馬賽克高光譜圖像壓縮中的應(yīng)用。本文通過改進BIP(Band-Interleaved Pixels)排序算法,嘗試在CCSDS 123.0-B-2標準近無損壓縮的FPGA硬件實現(xiàn)中引入流水線化和并行化技術(shù),以提高系統(tǒng)的壓縮效率。
CCSDS 123.0-B-2標準適用于由多光譜和高光譜成像光譜儀采集的三維光譜數(shù)據(jù)集的無損/近無損壓縮,支持從2位到32位整數(shù)樣本值sz,y,x所構(gòu)成的三維矩陣(Nx,Ny,Nz)數(shù)據(jù)集。該標準由預(yù)測器和編碼器兩部分組成,原理圖如圖1所示。
圖1 CCSDS 123.0-B-2標準的原理圖Fig.1 Schematic diagram of CCSDS 123.0-B-2 standard
預(yù)測器(Predictor)使用FLEX(Fast Lossless Extended)算法,通過待測樣本的三維鄰域獲得對應(yīng)的預(yù)測值,計算數(shù)據(jù)殘差以達到減少數(shù)據(jù)量的目的。預(yù)測器典型鄰域如圖2所示,圖中P為取值范圍為[0,15]的用戶自定義整數(shù)。
圖2 預(yù)測器典型鄰域Fig.2 T ypical neighborhood of the predictor
預(yù)測器的預(yù)測過程如下:首先計算同一光譜通道z內(nèi)與樣本sz,y,x相鄰的樣本代表值s″z,y,x的局部和σz,y,x,然后通過局部和獲得當前光譜通道的方向局部差和及先前光譜通道的P個中央局部差dz,y,x。上述四種局部差共同組成局部差向量Uz(t)的各個分量。局部差向量Uz(t)使用與其具有相同維度的權(quán)重向量Wz(t)加權(quán)和來計算對應(yīng)的預(yù)測樣本值,權(quán)重向量會隨著高光譜圖像的特點自適應(yīng)更新。預(yù)測樣本值與實際樣本值做差得到的預(yù)測殘差Δz(t)使用步長為2mz(t)+1的均勻量化器進行量化,計算有符號整數(shù)量化器索引qz(t),使得近無損重建高光譜圖像時,可以獲得誤差不超過mz(t)的樣本sz(t)。當mz(t)=0時,預(yù)測器為無損壓縮。最后,有符號量化索引qz(t)被映射為D位無符號映射量化索引δz(t)作為預(yù)測器的輸出。
編碼器(Encoder)將δz(t)編碼為一種可變長二進制比特流文件,該文件在圖像重建時可完整恢復(fù)δz(t)。文件由可變長文件頭和文件主體組成,可變長文件頭包含壓縮算法和被壓縮圖像的相關(guān)參數(shù),文件主體則是映射量化索引的編碼。
CCSDS 123.0-B-2標準推薦了三種編碼器實現(xiàn)方式[11],其中樣本自適應(yīng)編碼器的泛用性更強。該編碼器是基于指數(shù)哥倫布(Golomb-Power-Of-2,GPO2)編碼的改進編碼算法。編碼算法的原理是使用k階長度限制GPO2編碼對非負整數(shù)δz(t)進行編碼,可以將δz(t)表示為:
對δz(t)的編碼實際上就是對u和r的計算,其中u=(向下取整),r=δmod2k(取余)。編碼器通過對各光譜通道都設(shè)置了單獨的累加器∑z(t)和計數(shù)器Γz(t)獲得k值進而實現(xiàn)對δz(t)的編碼。
CCSDS 123.0-B-2標準最重要的優(yōu)勢在于支持近無損壓縮,即一種能夠控制重建圖像和原始圖像之間的最大誤差的有損壓縮??紤]到新加入的近無損壓縮功能會使得圖像重建時無法使用原始值恢復(fù)高光譜圖像,該標準引入了樣本代表值的計算,在每個樣本量化后計算出樣本代表值s″z,y,x用于下一個樣本的預(yù) 測。但是引入樣本代表值后,在FPGA實現(xiàn)的預(yù)處理階段使用推薦的樣本輸入排序方式時,會因為反饋環(huán)路過長、數(shù)據(jù)依賴不滿足等原因,導(dǎo)致對快照馬賽克高光譜圖像的壓縮吞吐率降低。本文將在CCSDS 123.0-B-2標準的FPGA實現(xiàn)中對推薦的樣本輸入排序算法進行改進,以克服這一不足。
在使用FPGA對高光譜圖像進行壓縮實現(xiàn)前,首先需要確定各光譜通道數(shù)據(jù)的樣品輸入順序。CCSDS 123.0-B-2標準推薦了BI(Band Interleaved)和BSQ(Band Sequential)兩種樣本輸入排序方式,其中BI排序又可分為BIP(Band-Interleaved Pixels)排序和BIL(Band-Interleaved Lines)排序兩類。圖3為三種推薦樣本輸入排序方式的原理示意圖。
圖3 三種推薦的樣本輸入排序方式原理示意圖Fig.3 Schematic diagram of three recommended sample input sequencing methods
由于CCSDS 123.0-B-2標準包含了“樣本代表值反饋”閉環(huán)反饋環(huán)路,在使用BSQ排序和BIL排序進行硬件實現(xiàn)時,會有如圖4所示的時序。從圖中可以看到,只有在完成整個反饋回路得到Sample1的樣本代表值s″z(t)后,才能開始Sample2的壓縮。這就導(dǎo)致吞吐率受限于處理“樣本代表值反饋”環(huán)路所需時鐘周期,使得平均需要十幾個時鐘才能完成對一個樣本的壓縮,大幅降低了壓縮器的吞吐率。
圖4 BSQ和BIL排序的局部時序圖Fig.4 Partial timing diagram of BSQ and BIL sequencing
BIP排序的優(yōu)勢在于硬件實現(xiàn)時不需要等待整個反饋回路完成,就能開始下一個樣本的壓縮,可以克服BIL和BSQ排序造成的吞吐率低的問題。但是,CCSDS 123.0-B-2標準對樣本sz,y,x的預(yù)測需要使用如公式(2)所示的局部差向量Uz(t),而Uz(t)的計算用到了樣本sz-1,y,x的代表值s″z-1,y,x。由于BIP排序應(yīng)用在快照馬賽克高光譜圖像的流水線壓縮時,sz-1,y,x必須在sz,y,x前一個時鐘的開始時刻計算。如圖5所示,這也就意味著在對樣本sz,y,x預(yù)測時,無法得到樣本代表值s″z-1,y,x,根據(jù)數(shù)據(jù)的因果關(guān)系,將導(dǎo)致無法進行并行化壓縮處理。
圖5 sz,y,x在BIP排序下的時序示意圖Fig.5 Timing diagram of sz,y,x under BIP sequencing
本文通過改進的BIP排序方式,將BIP排序在x和z方向上的掃描方式由順序掃描改為交錯掃描,可以有效解決上述問題。如圖6所示,交錯掃描方式通過分離各個光譜通道的壓縮順序,將不同光譜通道相同空間位置樣本的處理時間間隔由1個時鐘周期改為Nz+1個時鐘周期,克服了推薦BIP排序存在的數(shù)據(jù)依賴問題,同時保留了BIP易于流水線處理、吞吐率高的特點,使得基于新標準實現(xiàn)的FPGA壓縮器平均一個時鐘可以動態(tài)處理一個像素樣本。
圖6 改進的BIP排序Fig.6 Improved BIP sequencing
CCSDS 123.0-B-2標準的硬件實現(xiàn)架構(gòu)如圖7所示,架構(gòu)主要由預(yù)測器和編碼器兩部分組成,使用了多個緩沖器和存儲器對數(shù)據(jù)進行暫存和同步。
圖7 壓縮標準的硬件實現(xiàn)架構(gòu)Fig.7 Hardware implementation framework for compression standards
在典型的快照馬賽克高光譜圖像采集系統(tǒng)中,樣本會以幀的形式逐個輸入到FPGA上部署的壓縮器,每個時鐘周期都會有一個高光譜圖像樣本被傳輸?shù)捷斎刖彺嬷小nA(yù)測器按照改進的BIP排序讀取樣本并開始流水線處理,包含局部和與局部差計算、點乘、預(yù)測、量化、映射、權(quán)重更新和樣本代表計算等一系列操作。預(yù)測器還會構(gòu)建多個存儲器,用于儲存計算過程中所用到的權(quán)重向量、樣本代表值和局部差向量等中間數(shù)據(jù)。編碼器則負責(zé)樣本自適應(yīng)熵編碼。系統(tǒng)的輸出緩存將二進制編碼重新組織為標準BIP排序,使得通用的解壓縮器能夠無損或近無損重建原有高光譜圖像。圖8為本文FPGA硬件實現(xiàn)方案對應(yīng)的流水線時序。
圖8 流水線時序圖Fig.8 Timing diagram of the pipeline
使用Verilog語言將上述壓縮器的硬件設(shè)計在Vivado2019.2集成開發(fā)工具中綜合實現(xiàn),使用Xilinx xc7z020clg400-2 FPGA實現(xiàn)的壓縮器頂層結(jié)構(gòu)如圖9所示。本設(shè)計不依賴外部存儲資源,共使用了6 731個六輸入LUT,2 711個觸發(fā)器,9.5個4 KB BRAM,以及11個DSP48,占用xz7020邏輯資源少于10%,總的邏輯資源使用情況如表1所示。
圖9 壓縮器的頂層結(jié)構(gòu)圖Fig.9 Top-level structure diagram of compressor
表1 硬件設(shè)計的資源利用率Tab.1 Resource utilization for hardware design
快照馬賽克高光譜圖像由歐洲微電子研究中心(IMEC)推出的新一代的快照馬賽克高光譜傳感器采集,它通過在CMOS感光面表面沉積不同的濾光片實現(xiàn)快照馬賽克高光譜圖像的獲取。如圖10所示,由相鄰的25個像素構(gòu)成一個“成像單元”,可同時獲取到25個不同光譜波段的8位光譜數(shù)據(jù),傳感器像素尺寸為1 088×2 048。
圖10 快照馬賽克高光譜圖像特點Fig.10 Characteristics of snapshot mosaic hyperspectral image
受限于上述獨特的“成像單元”,針對普通光譜數(shù)據(jù)立方體提出的CCSDS 123.0-B-2標準應(yīng)用于快照馬賽克高光譜圖像的壓縮時有一定限制。因此本文不再使用快照馬賽克高光譜圖像內(nèi)相鄰像素作為上下文鄰域計算局部和與局部差,而是利用“成像單元”每5個像素規(guī)律排布的特點的調(diào)整鄰域,改進鄰域后的局部和和局部差計算方式如式(3)所示:
為了計算改進后的局部和與局部差,CCSDS 123.0-B-2標準在FPGA實現(xiàn)過程時使用輸入緩存模塊獲取改進后的上下文鄰域。如圖11所示,該模塊使用BRAM開辟了一個深度為2×NZ×NX的雙端口RAM對樣本代表值進行暫存和讀出,當壓縮開始時,寫數(shù)據(jù)寫地址先使能,當寫入數(shù)據(jù)量達到NZ×NX時,讀數(shù)據(jù)和讀地址開始使能。從RAM讀出的樣本代表值經(jīng)過FIFO0緩存后得到s″z,y,x-5,s″z,y,x-5被傳入深度為達NZ×(NX-2)的FIFO1得到s″z,y-5,x+5;同理使用NZ的FIFO2、FIFO3依次獲得s″z,y-5,x和s″z,y-5,x-5。
圖11 輸入緩存模塊結(jié)構(gòu)Fig.11 Structure diagram of Input cache module
輸入緩存模塊通過四級流水線提高處理帶寬,第一級流水線用來生成改進的BIP排序的(z,y,x)序列,它會隨著每個時鐘更新;第二級流水線通過計數(shù)器生成雙端口RAM的寫地址,將(z,y,x)坐標映射為對應(yīng)位置樣本在雙端口RAM內(nèi)的地址;第三級流水線用來對RAM進行寫入和讀取數(shù)據(jù);第四級流水線結(jié)合馬賽克面陣高光譜圖像的特點,獲得(z,y,x)處樣本的上下文鄰域,輸出給局部和與局部差計算模塊。
目前快照馬賽克高光譜圖像沒有類似AVIRIS、AIRS等的國際通用高光譜遙感圖像測試數(shù)據(jù)集,因此本文使用課題組自行研制的快照馬賽克微型高光譜儀進行了測試數(shù)據(jù)的采集。圖12為四種不同場景下所采集的快照馬賽克高光譜圖像。
圖12 四種場景下的快照馬賽克高光譜圖像Fig.12 Snapshot mosaic hyperspectral images in four scenarios
使用Vivado集成的仿真工具Simulator對FPGA設(shè)計進行功能仿真和時序仿真,圖13為激勵模塊設(shè)計。
圖13 激勵模塊設(shè)計Fig.13 Design of testbench module
其中sys_clk和sys_rst_n為系統(tǒng)時鐘信號和系統(tǒng)復(fù)位信號。復(fù)位信號拉高后,Testbench在每個時鐘的上升沿都會向壓縮器發(fā)送一個高光譜樣本值。當壓縮器獲得第一個樣本的壓縮編碼后,二進制編碼寫入信號code_write會拉高,通過code_string_o信號和code_length_o信號將編碼值寫入壓縮碼流文件,所有編碼完成后,code_write將拉低以停止碼流寫入。
以River1的測試結(jié)果為例,圖14是使用CCSDS 123.0-B-2標準推薦的BSQ排序壓縮器的時序,圖15是使用改進BIP排序壓縮器的時序。
圖14 基于BSQ排序壓縮器的時序圖Fig.14 Timing diagram based on BSQ sequencing compressor
圖15 基于改進BIP排序壓縮器的時序圖Fig.15 Timing diagram based on improved BIP sequencing compressor
從時序圖可以看到,基于改進BIP排序的壓縮器平均一個時鐘周期就可以完成一個樣本的壓縮編碼,這是改進排序算法易于流水線和并行化處理的特點所帶來的好處。表2列出了兩種排序方式下壓縮器在100 MHz時鐘下的性能對比。結(jié)果表明,雖然這種改進的排序方式不會改善壓縮性能,但是會大大提高壓縮吞吐率,壓縮一張快照馬賽克高光譜圖像所需時間僅為22.2 ms,遠小于原BSQ排序壓縮器所需的242.9 ms,數(shù)據(jù)吞吐率約提高至11倍。
表2 壓縮器性能對比Tab.2 Compressor performance comparison
表3列出了本文所實現(xiàn)的壓縮器對四種場景下的快照馬賽克高光譜圖像的無損壓縮性能。壓縮性能通過bits/sample定義,即壓縮后二進制碼流長度除以原始圖像中的樣本數(shù)NX·NY·NZ,其數(shù)值越小表明壓縮效果越好。實驗結(jié)果顯示,最終的壓縮性能在2.66~4.30 bits/sample之間,優(yōu)于原CCSDS 123.0-B-1標準下2.68~4.32 bits/sample的壓縮性能。
表3 無損壓縮性能Tab.3 Lossless compression performance(bits/sample)
近無損壓縮是一種能夠控制重建圖像和原始圖像之間的最大誤差的有損壓縮。接下來將介紹壓縮器近無損壓縮性能,峰值信噪比(PSNR)和光譜角(SA)測試結(jié)果。
4.3.1 近無損壓縮性能
表4為當絕對誤差極限az=16,各場景下快照馬賽克高光譜圖像的近無損壓縮性能。
表4 當az=16時,壓縮器的近無損壓縮性能Tab.4 When az=16,the near-lossless compression performance of the compressor(bits/sample)
從表中可以看出壓縮器的近無損壓縮性能約在1~3.70 bits/sample之間,遠高于無損壓縮性能。但是,近無損壓縮性能的提高是以犧牲圖像的保真度而獲得的。圖16顯示了不同壓縮設(shè)置下圖像細節(jié)的損失。
圖16 不同設(shè)置下細節(jié)的損失Fig.16 Loss of detail under different settings
4.3.2 PSNR測試
PSNR是衡量有損壓縮圖像失真程度的最常用指標,通常來講PSNR值越小壓縮后的圖像質(zhì)量越差。它的計算方式如公式(4)所示,其中MSE為均方誤差,L為量化等級。
表5給出了3幅快照馬賽克高光譜圖像在不同的相對誤差極限r(nóng)z下壓縮處理后的PSNR值。隨著相對誤差極限r(nóng)z的增加,PSNR值逐漸減小,表明CCSDS 123.0-B-2標準近無損壓縮性能的提高是以圖像失真為代價。
表5 當az=16時,不同壓縮設(shè)置下的PSNR值Tab.5 When az=16,PSNR under different compression settings
4.3.3 SA測試
SA用來表征兩個高光譜數(shù)據(jù)之間光譜的相似性,兩光譜向量間的夾角越小,兩光譜越相似。定義如公式(5)所示。
圖17給出了快照馬賽克高光譜圖像SA的變化。由圖17可知,隨著相對誤差極限r(nóng)z的增大,SA增大,壓縮圖像與原始圖像的光譜相似程度越差,表明近無損壓縮會破壞快照馬賽克高光譜圖像包含的光譜信息,并且隨著壓縮性能的提升,這種破壞效果愈加顯著。
圖17 光譜角測試結(jié)果Fig.17 Test results of spectral angle
基于多光譜/高光譜無損和近無損壓縮標準CCSDS 123.0-B-2,對馬賽克高光譜數(shù)據(jù)的壓縮進行了FPGA硬件實現(xiàn)。通過對該標準推薦的BIP排序方式的改進,大幅提高了壓縮器的吞吐率,100 MHz的時鐘下約22 ms即可完成一幀快照馬賽克高光譜圖像的壓縮。所實現(xiàn)的壓縮器的無損壓縮性能在2.66~4.30 bits/samples之間,近無損壓縮性能可達1.01~3.70 bits/samples,能夠滿足快照馬賽克高光譜成像技術(shù)在無線手持及無人機載領(lǐng)域的應(yīng)用需求。