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