朱劍冰,徐 勇,王翠蓮,朱 瑪,陳繼巍,韓慶龍
(1. 北京空間飛行器總體設(shè)計部, 北京 100094;2. 中國空間技術(shù)研究院遙感衛(wèi)星總體部, 北京 100094)
眾所周知,火星距離地球非常遙遠(yuǎn),星地通信距離長,通信路徑損耗大,數(shù)據(jù)傳輸延遲長, 因此數(shù)據(jù)通信具有低碼速率、高增益信道編碼的特點[1]。圖像的大數(shù)據(jù)量對深空通信信道造成極大的傳輸壓力,因此必須采用圖像壓縮方法來降低整體數(shù)據(jù)傳輸量,緩解通信壓力,同時讓用戶及早獲取圖像。
國外方面,1996年美國國家航空航天局(National Aeronautics and Space Administration,NASA)發(fā)射的人類首個火星車“探路者號”(Mars Pathfinder,MPF),其圖像采用了塊截斷編碼(Block Truncation Coding,BTC)算法[2],該算法采用局部二值編碼處理,計算過程簡單,編碼速度快,但容錯性較差。2004年登陸火星的“勇氣號”(Spirit)、“機(jī)遇號”(Opportunity)、“火星探測漫游者”(Mars Exploration Rovers,MERs)均采用了2種圖像壓縮算法[3]:ICER和MLOCO(Modified LOCO)。ICER是專為深空數(shù)據(jù)傳輸而設(shè)計、基于小波變換的漸進(jìn)式有損壓縮方法,具有高效的容錯技術(shù)。MLOCO是將Huffman編碼和上下文模型編碼相結(jié)合,特別適合對色調(diào)連續(xù)的圖像進(jìn)行無損壓縮。
國內(nèi)方面,作者所在的中國首次火星探測圖像處理團(tuán)隊針對星上計算機(jī)處理能力較弱,內(nèi)存容量有限,火星探測輕小型化的高要求強(qiáng)約束,提出了一種“基于首1游程的圖像位面并行編碼算法”[4-5],該算法首先對圖像進(jìn)行小波變換和位面提升,再根據(jù)小波系數(shù)的首1比特位置將數(shù)據(jù)分離為位置數(shù)據(jù)和精細(xì)數(shù)據(jù),位置數(shù)據(jù)能夠反映圖像輪廓和整體,因此數(shù)據(jù)壓縮編碼時位置數(shù)據(jù)編碼在前,精細(xì)數(shù)據(jù)編碼在后,當(dāng)?shù)孛嫦仁盏轿恢脭?shù)據(jù)后,圖像逐漸顯示出整體,隨著精細(xì)數(shù)據(jù)不斷增多,圖像紋理逐步清晰,這種漸進(jìn)式壓縮算法相比ICER和MLOCO,簡化了上下文建模,每個位平面的壓縮不依賴于更高一位面的編碼,位平面間支持并行編碼,該算法具有計算復(fù)雜度低,容錯性強(qiáng),數(shù)據(jù)訪問次數(shù)少,內(nèi)存占用小,適合宇航應(yīng)用等優(yōu)點。但早期算法沒有考慮彩色圖像相鄰像素間相關(guān)性弱和圖像分段編碼等問題。
本文首先分析了火星車圖像管理的特點,歸納出火星車圖像壓縮軟件需具備3項能力(文件統(tǒng)一管理能力、高效壓縮能力、高容錯能力)。針對文件統(tǒng)一管理能力,提出了一種針對多類型圖像數(shù)據(jù)的圖像統(tǒng)一管理文件系統(tǒng)。針對壓縮算法高效性和高容錯性要求,在文獻(xiàn)[4]算法基礎(chǔ)上擴(kuò)展了多載荷圖像統(tǒng)一化處理、彩色圖像預(yù)處理和分段位平面編碼3個重要過程,進(jìn)一步提高圖像壓縮算法的壓縮性能和容錯能力,并形成一整套圖像壓縮軟件設(shè)計方案,使用FPGA(Field Programmable Gate Array)+DSP(Digital Signal Processing)方式實現(xiàn)了整套軟件。最后采用了一套圖像壓縮軟件仿真驗證系統(tǒng),對壓縮效果進(jìn)行了驗證,結(jié)果表明了算法的有效性。目前整套軟件已在“祝融號”火星車中投入使用,在軌使用效果良好。
火星車圖像管理相比傳統(tǒng)型號的圖像管理,具有以下特點。
1)存儲輕小型化和圖像多類型,要求星上具有統(tǒng)一的圖像文件管理能力
相比月球探測器,火星探測器對輕小型化要求更高,傳統(tǒng)的月球探測器各載荷圖像分散管理方式會增加存儲設(shè)備數(shù)量,無法滿足火星探測高度集成化和輕小型化的苛刻要求。并且火星車上帶有避障、導(dǎo)航、多光譜等多種相機(jī),這些相機(jī)采集的圖像數(shù)據(jù)種類多,包括灰度圖像、彩色圖像和多波段圖像等。為了支持多臺相機(jī)、多類圖像數(shù)據(jù)、多個時間標(biāo)簽圖像的隨機(jī)訪問,需要星上具有一套統(tǒng)一的支持多種類圖像,多分區(qū)存儲獨立相機(jī)數(shù)據(jù)、并且支持并行讀寫的圖像文件系統(tǒng)??紤]到星載硬件資源限制,要求文件系統(tǒng)結(jié)構(gòu)開銷小,控制及使用簡單,讀寫速度快。
2)信道資源極其有限,要求星上具備快速圖像壓縮能力
火星距離地球為(0.56~4)×108km,從火星到地球的通信鏈路帶寬受到極大限制,在深空數(shù)據(jù)源端對圖像進(jìn)行在軌壓縮是節(jié)省發(fā)射能量、提高信息回傳效率的必由之路。為了有效提高信道使用效率,要求圖像壓縮算法的壓縮性能越高越好,同時考慮到星載計算機(jī)存儲及計算資源有限,要求圖像壓縮算法的計算資源消耗少,數(shù)據(jù)訪問次數(shù)少,空間復(fù)雜度低。
3)信道誤碼率較高,要求壓縮功能具備較強(qiáng)容錯能力
由于探測器通信信號強(qiáng)度的衰減速度與距離平方成正比,自身硬件噪聲和宇宙背景噪聲的干擾相較而言變得更強(qiáng),因此深空探測的信道誤碼率較高,另外火星與地球通信單次時長近20分鐘,圖像數(shù)據(jù)不能像地面?zhèn)鬏斁W(wǎng)絡(luò)那樣頻繁重傳,所以要求傳輸?shù)膱D像壓縮碼流具有較強(qiáng)容錯性,即使某些位出現(xiàn)干擾或丟失,不會造成大片圖像的毀壞。
傳統(tǒng)的月球探測器各載荷圖像采用分散管理方式,每類圖像管理相對簡單,無需設(shè)計統(tǒng)一的圖像文件系統(tǒng)。而使用傳統(tǒng)的地面計算機(jī)的文件系統(tǒng)(如YAFFS(Yet Another Flash File System)[6]、JFFS(Journalling Flash File System)[7]等)對火星車圖像進(jìn)行統(tǒng)一管理,數(shù)據(jù)結(jié)構(gòu)又過于復(fù)雜,需要大量的CPU計算資源,占用大量內(nèi)存來建立文件系統(tǒng)節(jié)點樹,在星載計算機(jī)系統(tǒng)中,由于CPU內(nèi)存及IO接口速度很低,無法達(dá)到NandFlash的最大讀寫速率。
基于以上原因,本文設(shè)計了一種基于FPGA(Field Programmable Gate Array)的NandFlash多分區(qū)并行圖像文件系統(tǒng),利用圖像文件大小固定的特點,建立了以大尺寸節(jié)點與時間戳組合列表的文件系統(tǒng),解決火星車圖像統(tǒng)一化存儲及訪問的難題。
該文件系統(tǒng)設(shè)計原理如圖1所示。主要包含圖像節(jié)點初始化模塊、圖像接收模塊、圖像隨機(jī)訪問模塊和硬件控制模塊。
圖1 圖像文件系統(tǒng)設(shè)計原理框圖Fig. 1 Image file system design diagram
1)圖像節(jié)點初始化模塊
圖像節(jié)點初始化模塊主要完成圖像節(jié)點存儲結(jié)構(gòu)的初始化工作。首先擦除分區(qū),并更新擦除失敗的塊信息到壞塊表中,然后從分區(qū)起始塊開始地址往后搜索,搜索到連續(xù)M個有效塊(M可根據(jù)文件大小進(jìn)行設(shè)定),建立一個節(jié)點,連續(xù)有效塊的第一個塊地址即為節(jié)點起始地址;以此方法建立N個節(jié)點,并將存儲映射關(guān)系存放到MRAM(Magnetoresistive Random Access Memory)中該分區(qū)的相應(yīng)節(jié)點地址上。這種映射關(guān)系充分利用了圖像文件大小固定的特點,文件存儲結(jié)構(gòu)簡單可靠,整體開銷小,控制及使用簡單,并且讀寫速度也非???。
2)圖像接收模塊
圖像接收模塊主要完成多載荷的圖像統(tǒng)一接收及存儲工作。該模塊接收多個載荷相機(jī)的圖像數(shù)據(jù),根據(jù)相機(jī)標(biāo)識申請對應(yīng)分區(qū)的節(jié)點創(chuàng)建圖像,使用當(dāng)前時間作為圖像時間戳。圖像創(chuàng)建后得到節(jié)點起始物理地址,然后接收圖像數(shù)據(jù),每接收到1頁Flash的數(shù)據(jù)量,根據(jù)物理地址調(diào)用Flash控制模塊,將數(shù)據(jù)寫入Flash中。使用分區(qū)策略和時間戳標(biāo)識方法可以有效支持圖像文件的并行寫入,極大提高系統(tǒng)的速度,也便于圖像文件的隨機(jī)快速訪問。
3)圖像隨機(jī)訪問模塊
DSP圖像訪問模塊主要完成圖像文件的隨機(jī)訪問和DSP操作控制。對于文件訪問,首先在MRAM中獲取需要訪問節(jié)點的物理地址,然后使用物理地址去Flash中連續(xù)訪問多塊數(shù)據(jù)內(nèi)容,獲得完整圖像文件數(shù)據(jù)。這種兩級訪問方式,控制及使用簡單,隨機(jī)訪問速度快,可以有效降低整個圖像壓縮的處理時長。DSP操作控制主要包括DSP圖像寫入控制、DSP圖像讀取控制、DSP圖像下行和DSP圖像數(shù)據(jù)擦除控制。
4)硬件控制模塊
硬件控制模塊包括Flash訪問控制和MRAM控制器。Flash訪問控制模塊主要完成Flash寫入調(diào)度、讀取調(diào)度、擦除調(diào)度和Flash硬件控制接口。MRAM控制器主要完成圖像節(jié)點邏輯地址與物理地址映射關(guān)系的建立以及MRAM的讀寫控制。
針對壓縮算法高效性和高容錯性要求,本文在基于首1游程的圖像位面并行編碼算法基礎(chǔ)上擴(kuò)展了多載荷圖像統(tǒng)一化處理、彩色圖像預(yù)處理和分段位平面編碼3個重要過程,進(jìn)一步提高算法的壓縮性能和容錯性能。
對于單幅1M圖像1 024×1 024×8 bit的漸進(jìn)式壓縮采用的是基于首1游程的圖像位面編碼算法;該編碼算法將小波系數(shù)分離為兩部分:①首1 bit及其以上位面數(shù)據(jù),稱為位置數(shù)據(jù);②首1位面以下數(shù) 據(jù),稱為精細(xì)數(shù)據(jù)。位置數(shù)據(jù)表示了圖像小波變換系數(shù)的符號、坐標(biāo)及首1位面號。其最低位面為1,其以上位面全為0,采用帶符號自適應(yīng)二進(jìn)制游程編碼[4]對該部分?jǐn)?shù)據(jù)進(jìn)行編碼。精細(xì)數(shù)據(jù)為每個系數(shù)中低于首1位面的其余bit,這部分?jǐn)?shù)據(jù)決定了每個小波系數(shù)的細(xì)化值。精細(xì)數(shù)據(jù)沒有統(tǒng)計集中特征,因此直接將其bit連接形成碼流。首1游程位平面編碼算法如圖2及表1所示
圖2 小波系數(shù)的分離及獨立編碼Fig. 2 Splitting and separate coding of DWT coefficients
表1 基于首1游程的位面編碼算法Table 1 Bit-plane coding based on run-length coding of first-1 bit
火星車載荷圖像除了1 M圖像外,還包括8 M多光譜圖像(如多光譜相機(jī)圖像)和8 M彩色圖像(如導(dǎo)航地形相機(jī)圖像)等各類圖像[8],對于這幾類圖像的統(tǒng)一化處理是軟件需考慮的重點。本文設(shè)計了一套統(tǒng)一化處理方法,完成了各類圖像的統(tǒng)一化編碼壓縮過程。具體流程如圖3所示。由于小波變換[9]需要每個像素點的位數(shù)為16位,因此對于1 024×1 024×8 bit圖像擴(kuò)展為1 024×1 024×16 bit圖像,每個像素點的高8位填充0,然后再進(jìn)行位平面編碼。
圖3 圖像漸進(jìn)式壓縮的統(tǒng)一化處理過程Fig. 3 Uniform process of image progressive compression
DSP軟件首先接收用戶的壓縮指令,根據(jù)壓縮指令中的圖像邏輯編號計算圖像的邏輯地址,根據(jù)邏輯地址在MRAM中獲取圖像實際的物理地址,然后根據(jù)物理地址在Flash中讀取圖像數(shù)據(jù)。根據(jù)圖像類型,進(jìn)行不同處理:
1)對于1 M圖像,直接將其擴(kuò)展為1 024×1 024×16 bit的單個數(shù)據(jù)塊,然后對數(shù)據(jù)塊按表1過程進(jìn)行壓縮編碼;
2)對于4 M圖像,將其擴(kuò)展為2 048×2 048×16 bit的數(shù)據(jù)塊,然后將數(shù)據(jù)塊分解為4塊1 024×1 024×16 bit的數(shù)據(jù)塊,然后對每塊按表1過程進(jìn)行壓縮編碼;
3)對于8 M多光譜圖像,直接將數(shù)據(jù)塊分解為4塊1 024×1 024×16 bit的數(shù)據(jù)塊,然后對每塊按表1過程進(jìn)行壓縮編碼;
4)對于8 M彩色圖像,為了提高壓縮性能,首先需要進(jìn)行圖像預(yù)處理(詳細(xì)過程見4.2章節(jié)),將相同分量像素聚集,然后將數(shù)據(jù)塊分解為4塊1 024×1 024×16 bit的數(shù)據(jù)塊,最后對每塊按表1過程進(jìn)行壓縮編碼。
導(dǎo)航地形相機(jī)的圖像為彩色圖像,其格式為應(yīng)用最為廣泛的Bayer格式[10-11],這種格式圖像如圖4左側(cè)所示,其RGB(Red Green Blue)分量是交織存儲的,為了進(jìn)一步利用圖像的像素間相關(guān)性,在進(jìn)行壓縮前需要對Bayer格式圖像進(jìn)行預(yù)處理,其處理過程為將相同分量的像素聚集到一起(如圖4右側(cè)所示),提高像素間相關(guān)性。然后將處理后的圖像進(jìn)行漸進(jìn)式壓縮,相應(yīng)的解壓過程需要執(zhí)行預(yù)處理的逆過程,將相同分量的像素再拆分為GBRG(Green Blue Red Green)交織方式,恢復(fù)出原始的彩色圖像。
圖4 彩色圖像預(yù)處理過程Fig. 4 Pretreatment process of color
為進(jìn)一步防止碼流傳輸錯誤引發(fā)圖像無法解碼問題,本文將圖像進(jìn)行分段編碼,根據(jù)圖像尺寸將圖像均分為N×N個圖像段,形成N2個分段(Seg1,Seg2,···,SegN2),再將空間圖像的分段映射到小波域的分段。一個空間域圖像段對應(yīng)小波域共10個小波子帶段(3級小波變換),如圖5所示。
圖5 3級小波變換Fig. 5 Three level wavelet transform
采用位平面編碼算法對每個位面的每個段編碼(簡稱一個位面段),每個段的每個位面共10個子帶碼流組成一個數(shù)據(jù)包(如表2所示),稱為分段位面碼流包;傳輸碼流組織順序如圖6所示。采用這種分段位平面編碼方式,當(dāng)出現(xiàn)某個高位面的碼流包丟失,僅影響該碼流包對應(yīng)的段,而不會導(dǎo)致整幅圖像無法解碼。
表2 單個數(shù)據(jù)包的數(shù)據(jù)內(nèi)容Table 2 Packet unit contents
圖6 位平面編碼的碼流組織示意圖Fig. 6 Bitstream diagram of bit plane code
圖7為整個圖像壓縮軟件仿真驗證系統(tǒng),包括器上圖像壓縮傳輸驗證設(shè)備和地面解壓驗證設(shè)備。器上壓縮傳輸驗證設(shè)備完成圖像采集、存儲和壓縮等功能,地面解壓顯示設(shè)備完成相機(jī)圖像實時反顯、圖像解壓和系統(tǒng)控制等功能。相機(jī)拍攝圖像后,經(jīng)過分路器,將一路圖像送往地面解壓驗證設(shè)備進(jìn)行反顯,另一路圖像送往相機(jī)接口卡進(jìn)行后續(xù)數(shù)據(jù)處理。相機(jī)采集卡能夠接收從分路器送來的相機(jī)數(shù)據(jù),也能接收從地面解壓顯示驗證設(shè)備送來的相機(jī)模擬卡數(shù)據(jù),相機(jī)采集卡對收到的圖像數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換后送DSP目標(biāo)開發(fā)板。DSP目標(biāo)處理板對收到的圖像數(shù)據(jù)進(jìn)行存儲和壓縮處理,并將處理結(jié)果、設(shè)備狀態(tài)等發(fā)送到地面解壓顯示驗證設(shè)備,同時DSP目標(biāo)處理板也能接收并處理地面解壓顯示驗證設(shè)備發(fā)來的控制信息。UART(Universal Asynchronous Receiver and Transmitter)串口通信卡、專用同步串口通信卡用于接收器上壓縮傳輸驗證設(shè)備發(fā)來的圖像壓縮數(shù)據(jù),然后通過圖像解壓軟件,還原原始圖像送顯示設(shè)備顯示。
1)漸進(jìn)式壓縮效果及算法對比情況
對某深空探測圖片進(jìn)行不同比例的壓縮,圖8~11給出了不同壓縮比圖像顯示效果,從圖中可以看出采用1:8壓縮可以保證圖像較高質(zhì)量,采用1:200壓縮可以看清圖像大致輪廓,因此在軌使用可以考慮使用1:200的大壓縮比快速獲取圖像輪廓信息。如果用戶認(rèn)為圖像中有感興趣區(qū)域,則將壓縮比調(diào)整為1:8,繼續(xù)下行碼流,獲取圖像更多細(xì)節(jié)紋理。如果不感興趣,則終止碼流,進(jìn)行下幅圖像的獲取工作。
圖8 壓縮比1:200的圖像顯示效果Fig. 8 Image of 1:200 compression ratio
圖9 壓縮比1:50的圖像顯示效果Fig. 9 Image of 1:50 compression ratio
圖10 壓縮比1:8的圖像顯示效果Fig. 10 Image of 1:8 compression ratio
圖11 壓縮比1:2的圖像顯示效果Fig. 11 Image of 1:2 compression ratio
同時使用不同壓縮算法對該圖片進(jìn)行壓縮(小波變換過程均采用整數(shù)97小波變換),表3給出實驗對比情況,從實驗數(shù)據(jù)可以看出本文方法優(yōu)于CCSDSIDC(Consultative Committee for Space Data Systemsimage data compression)[12]算法和SPIHT(Set Partitioning in Hierarchical Trees)[13]算法。
表3 整數(shù)97小波有損壓縮性能比較Table 3 Performance in impaired compression by using Int97 DWT
2)算法改進(jìn)效果的驗證
(1)彩色圖像壓縮效果驗證
使用了50幅Bayer格式的彩色圖像,分別使用含預(yù)處理過程的漸進(jìn)式壓縮算法和不含預(yù)處理過程的漸進(jìn)式壓縮算法,按照無損壓縮設(shè)置參數(shù)對原始圖像進(jìn)行壓縮,前者的數(shù)據(jù)壓縮量平均為4.52 MByte,后者的數(shù)據(jù)壓縮量平均為2.66 MByte,由此可見,增加彩色圖像預(yù)處理過程可以有效增加數(shù)據(jù)壓縮量。
(2)分段編碼效果驗證
模擬星地傳輸?shù)臄?shù)據(jù)誤碼過程,在第一段碼流中植入錯誤,導(dǎo)致這段圖像無法使用,采用分段編碼的漸進(jìn)式壓縮,仍然可以解析出3/4的圖像(如圖12所示)。直接使用不分段的編碼算法,則整幅圖像都無法解析。由此可見,增加分段編碼可以有效提供系統(tǒng)的容錯能力。
圖12 采用分段編碼,丟失第一段碼流后的圖像解壓效果Fig. 12 Image based on segment coding which lost first segment bitstream
3)在軌應(yīng)用情況
2021年5月22日10時40分,中國“祝融號”火星車已安全駛離著陸平臺,到達(dá)火星表面,開始巡視探測。圖像壓縮軟件在軌工作良好,可以有效滿足火星探測任務(wù)需求,為超遠(yuǎn)距離帶寬受限條件下的圖像交互傳輸提供有力支撐,表4為圖像壓縮軟件在軌運(yùn)行性能指標(biāo),滿足設(shè)計指標(biāo)要求。
表4 圖像壓縮軟件在軌運(yùn)行性能Table 4 Image compression software on-board performance
本文采用FPGA+DSP方式設(shè)計了“祝融號”火星車圖像壓縮軟件整體結(jié)構(gòu),基于FPGA設(shè)計了多載荷統(tǒng)一存儲處理的圖像文件系統(tǒng),基于此文件系統(tǒng)開展了圖像壓縮軟件的設(shè)計與實現(xiàn),軟件實現(xiàn)了擴(kuò)展的漸進(jìn)式壓縮方法。最后仿真驗證了圖像壓縮的效果,驗證結(jié)果表明了算法的有效性。目前整套壓縮軟件已在“祝融號”火星車中投入使用,在軌使用效果良好。該套算法和軟件具有較強(qiáng)的通用性,對于未來超遠(yuǎn)距離深空探測也有很強(qiáng)的借鑒意義。