章勇勤 ,蘇貴波 ,吳敏淵 ,黃海波 ,艾 勇
(1.武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430079;2.華北水利水電學(xué)院,河南 鄭州 450011)
隨著衛(wèi)星遙感技術(shù)的飛速發(fā)展,星載相機(jī)的分辨力不斷提高,獲得的圖像數(shù)據(jù)量越來(lái)越大,衛(wèi)星與地面之間通信的帶寬就成為難以克服的瓶頸,導(dǎo)致大量寶貴的原始圖像數(shù)據(jù)無(wú)法被地面接收處理。考慮到星載設(shè)備的空間、重量、功率、成本等限制苛刻,在不影響人們需要的視覺(jué)效果前提下,大多數(shù)衛(wèi)星圖像允許略微失真[1]。因此,采用圖像壓縮技術(shù)來(lái)減小數(shù)據(jù)量,緩解信道傳輸壓力。由于遙感圖像信息量大,壓縮技術(shù)要滿足實(shí)時(shí)性強(qiáng)、重構(gòu)質(zhì)量高、壓縮比大的要求,必須采用高效低復(fù)雜度的編碼算法來(lái)優(yōu)化多媒體通信所需的帶寬。星載設(shè)備對(duì)處理器芯片的抗輻射與耐高溫、穩(wěn)定性、功耗、速度等指標(biāo)要求較高,DSP、微處理器等芯片目前難以滿足實(shí)際需要,而現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)能夠有效解決星載設(shè)備的技術(shù)難題,逐漸成為星載實(shí)時(shí)圖像處理器芯片的主流選擇。
以高效、簡(jiǎn)潔、快速、穩(wěn)定和高保真壓縮編碼算法為目標(biāo),通過(guò)綜合分析國(guó)內(nèi)外已有的視頻壓縮編碼標(biāo)準(zhǔn),本文以具體工程項(xiàng)目為背景,提出了基于JPEG算法框架的壓縮編碼解決方案[2],采用改進(jìn)的離散余弦變換(DCT),以及低功耗設(shè)計(jì)技術(shù),并進(jìn)行了以FPGA為核心硬件平臺(tái)的研究與實(shí)現(xiàn)。
該系統(tǒng)結(jié)構(gòu)框圖如圖1所示,反映系統(tǒng)性能的重要指標(biāo)包括峰值信噪比(PSNR)、功耗、壓縮比等參數(shù)。星載CMOS相機(jī)圖像壓縮系統(tǒng)按照具體功能分為CMOS相機(jī)板卡、FLASH存儲(chǔ)電路、電平轉(zhuǎn)換電路、CMOS相機(jī)控制器模塊、FLASH控制器模塊、圖像分割模塊、DCT變換模塊、量化器模塊、熵編碼器模塊等部分,其主要元器件為CMOS相機(jī)、W78M64V-XSBS、DS26LV31和 Actel公司的APA600芯片。圖像壓縮處理算法流程:首先把圖像幀,如大小為640×512,其量化位數(shù)10 bit,分成8×8像素塊,然后對(duì)每塊做高保真DCT,DCT變模塊把數(shù)據(jù)從空間域變換到頻率域,從而去除數(shù)據(jù)的冗余度;量化器用加權(quán)模塊產(chǎn)生對(duì)人眼優(yōu)化的DCT系數(shù);Z形掃描提取直流和低頻分量有利于圖像壓縮;Huffman編碼將量化的DCT系數(shù)的熵最小化,來(lái)完成圖像的壓縮,從而剔除數(shù)據(jù)冗余,刪除極少視覺(jué)信息,利用空間特征進(jìn)一步壓縮數(shù)據(jù),減少數(shù)字表示的數(shù)據(jù)量。
該系統(tǒng)采用具有CameraLink接口的CMOS相機(jī),工作在其基本模式下。硬件系統(tǒng)上電后,CMOS相機(jī)控制器模塊完成CMOS相機(jī)的幀分辨力、灰度級(jí)和曝光時(shí)間等初始化設(shè)置,若需要改變相機(jī)的參數(shù),可通過(guò)串口命令來(lái)實(shí)現(xiàn),當(dāng)調(diào)節(jié)圖像幀大小時(shí),先設(shè)置窗口原點(diǎn)位置然后設(shè)置窗口寬度和高度。CMOS相機(jī)控制器把從圖像傳感器接收到的序列圖像數(shù)據(jù),根據(jù)緩沖區(qū)片選信號(hào)通過(guò)兵乓操作存入內(nèi)部的雙口RAM中,供下一步DCT處理,CMOS相機(jī)控制電路的原理圖如圖2所示。
圖2 CMOS相機(jī)控制電路的原理圖
2D DCT變換具有可分離特性,可將它分解成一系列一維變換(行、列)進(jìn)行計(jì)算。通常的8點(diǎn)的1D DCT并行運(yùn)算需要22個(gè)乘法器,計(jì)算量較大,其蝶形算法流程如圖3所示。
筆者采用改進(jìn)的DCT變換,引入常數(shù)項(xiàng)k1=c2/c6,k2=c3/c1-1,k3=sqrt(2),對(duì)圖 3 蝶形結(jié)構(gòu)優(yōu)化,把參數(shù) c1,c4,c6提出,與JPEG標(biāo)準(zhǔn)推薦的亮度和色度量化表相結(jié)合制成自定義量化表,以供量化步驟使用[3-5]。
圖3 1D DCT快速算法信號(hào)流圖
改進(jìn)的1D DCT快速算法結(jié)構(gòu)簡(jiǎn)單,保真度高,減小了DCT系數(shù)量化誤差帶來(lái)的影響,能夠?qū)崿F(xiàn)無(wú)損變換,其性能優(yōu)于整數(shù)DCT變換[6],并行運(yùn)算僅需14個(gè)乘法器和24個(gè)加(減)法器,其數(shù)學(xué)關(guān)系表達(dá)式分別為
其硬件具體實(shí)現(xiàn)結(jié)構(gòu)如圖4所示,引入的8×8量化系數(shù)矩陣如表1所示。
圖4 1D DCT改進(jìn)的快速算法結(jié)構(gòu)框圖
表1 量化系數(shù)矩陣
圖像分割模塊把每幀圖像數(shù)據(jù)按照8×8的像素塊格式,通過(guò)乒乓操作從雙口RAM緩沖區(qū)依次讀出,不足部分用0填充,并送入DCT變換模塊中的預(yù)處理8×8大小雙口RAM緩沖區(qū)。對(duì)單色圖像,分割后只有亮度(或灰度)圖像塊序列。而對(duì)彩色圖像的處理,需要把RGB分量分別提取進(jìn)行圖像分割,把各個(gè)分量按照次序排放,分別為R成分圖像塊序列、G成分圖像塊序列和B成分圖像塊序列;或者從RGB轉(zhuǎn)換成YCrCb空間,減少冗余度,提高壓縮效率。對(duì)2D圖像來(lái)說(shuō),DCT變換模塊把接收到的8×8圖像塊通過(guò)2個(gè)1D DCT來(lái)實(shí)現(xiàn),先根據(jù)行地址生成方式把每行8點(diǎn)從前級(jí)雙口RAM緩沖區(qū)中取出送入1D DCT變換子模塊中,待處理完成后將結(jié)果按列地址方式存入相應(yīng)的雙口RAM臨時(shí)緩沖區(qū),等每塊內(nèi)8行變換結(jié)束后,再按照行地址從臨時(shí)緩沖區(qū)取出相應(yīng)內(nèi)容送入1D DCT變換子模塊,待結(jié)束后將2D DCT變換系數(shù)送出,供Z形掃描和量化步驟處理,其具體電路原理圖如圖5所示。如果使用2個(gè)1D DCT變換子模塊,雖然速度幾乎提高1倍,但門數(shù)將迅速上升,同時(shí)還導(dǎo)致用于存放中間結(jié)果的RAM容量增大1倍,資源消耗較大。
圖5 2D DCT、Z形掃描及量化電路原理圖
DCT將8×8圖像塊從空域變換到頻域,低頻分量位于矩陣左上角,高頻分量分布在右下角,F(xiàn)(0,0)代表直流DC系數(shù),其他63個(gè)元素是交流AC系數(shù),其中低頻分量包含了圖像的主要信息(如亮度),因此忽略高頻分量,從而達(dá)到圖像壓縮的目的[9]??紤]用FPGA實(shí)現(xiàn)圖像壓縮算法時(shí),而綜合器一般不能對(duì)“/”和“%”運(yùn)算符直接綜合,故采用乘法運(yùn)算來(lái)取代除法操作。該方案采用定點(diǎn)小數(shù)運(yùn)算規(guī)則,JPEG標(biāo)準(zhǔn)中量化表為Q(u,v),本文選取量化矩陣Q贊(u,v)=round[2nP(u,v)./Q(u,v)],n=16,經(jīng)2D DCT 變換后的系數(shù)為 F(u,v),量化后系數(shù)F贊(u,v)=F(u,v)./Q(u,v)=round[F(u,v).×Q贊(u,v)>>n],實(shí)際設(shè)計(jì)中根據(jù)數(shù)據(jù)要求的精度來(lái)對(duì)量化表修訂。Z形掃描地址映射表如表2所示,量化矩陣如表3所示。如圖5所示,每幀內(nèi)8×8圖像塊的2D DCT變系數(shù)以每次8個(gè)系數(shù)共8次輸出,在Z形掃描和量化模塊中,以表2產(chǎn)生的地址方式和量化矩陣表3對(duì)系數(shù)進(jìn)行掃描和量化,并把結(jié)果按照表2生成的地址方式存入后級(jí)雙口RAM緩存中,同時(shí)糾正了2D DCT系數(shù)輸出的轉(zhuǎn)置格式,從而完成了2D圖像數(shù)據(jù)轉(zhuǎn)換為1D序列,供下級(jí)熵編碼使用。
表2 Z形掃描地址映射表
表3 與地址映射表轉(zhuǎn)置對(duì)應(yīng)的改進(jìn)量化矩陣
在Z形掃描之后,熵編碼器模塊從圖5中后級(jí)雙口RAM緩沖區(qū)中取出系數(shù),對(duì)其進(jìn)行編碼,其熵編碼電路的結(jié)構(gòu)圖如圖6所示。熵編碼器模塊分別完成DC/AC系數(shù)查表,獲得系數(shù)的范圍AMP_SIZE與其反碼AMP_VAL,以及 Huffman碼字 HUFF_WORD和碼長(zhǎng)HUFF_SIZE,其中Huffman碼表中碼字的最大長(zhǎng)度是16。DC系數(shù)有亮度和色度 Huffman碼表各1張,AC系數(shù)同樣有2張Huffman碼表[3]。這4張表存儲(chǔ)在相應(yīng)的查找表中,其地址線10根,由 Y,DC,RUN_LEN和SIZE 4個(gè)端口控制,Y指示是亮度還是色度,DC指示是AC系數(shù)還是DC系數(shù),RUN_LEN和SIZE合起來(lái)既是Huffman碼表中的行程/尺寸。查找表的每個(gè)存儲(chǔ)單元存一個(gè) 21位的信息,高5位指示Huffman編碼后碼字的長(zhǎng)度,與端口HUFF_SIZE_OUT相連;低16位是Huffman編碼的碼字,且從最高為開(kāi)始有效,與 HUFF_WORD_OUT相連。熵編碼輸出為碼長(zhǎng)LinkSIZE和碼字LinkWORD,LinkSIZE的值是HUFF_SIZE與AMP_SIZE之和。而LinkWORD的值是先把AMP_VAL和HUFF_WORD末尾添零擴(kuò)展為27位,然后AMP_VAL右移HUFF_SIZE個(gè)比特,再與 HUFF_WORD相或。這樣就實(shí)現(xiàn)了行程/尺度的 Huffman碼值與系數(shù)的反碼連接。從 LinkWORD最高位起LinkSIZE個(gè)比特是有效位,然后通過(guò)并串轉(zhuǎn)換輸出二進(jìn)制流。
圖6熵編碼電路結(jié)構(gòu)圖
頂層模塊JPEGTOP負(fù)責(zé)將所有低層模塊連接起來(lái)構(gòu)成系統(tǒng),對(duì)外接口模塊設(shè)計(jì)最外圍輸入輸出信號(hào)的時(shí)序控制。串行輸出由幀同步、行同步、位時(shí)鐘同步、門控信號(hào)和串行數(shù)據(jù)流共同協(xié)調(diào)來(lái)實(shí)現(xiàn)。在解碼端,編碼的二進(jìn)制位流被Huffman解碼,量化的DCT系數(shù)的2D數(shù)組被恢復(fù)。把這個(gè)2D數(shù)組乘以對(duì)應(yīng)的量化矩陣,則每個(gè)系數(shù)被反量化。對(duì)反量化的數(shù)組進(jìn)行DCT逆變換,就得到了近似的原始圖像塊,然后重構(gòu)一整幀圖像。重構(gòu)圖像塊的誤差依賴于量化的度量,它受規(guī)格化矩陣控制以及受DCT變換中余弦系數(shù)精度的影響。
在實(shí)驗(yàn)中選取灰度圖像和彩色圖像、檢測(cè)板卡和解壓縮顯示軟件等測(cè)試平臺(tái)對(duì)圖像壓縮系統(tǒng)進(jìn)行仿真,該檢測(cè)系統(tǒng)工作流程:在PC機(jī)上VC應(yīng)用程序?qū)MOS相機(jī)拍攝的圖像通過(guò)USB2.0接口下傳到檢測(cè)板卡,檢測(cè)板卡將圖像碼流轉(zhuǎn)換為預(yù)定義的接口形式,傳送給JPEG圖像壓縮板卡,經(jīng)過(guò)壓縮后的圖像碼流再傳回給檢測(cè)板卡,而檢測(cè)板卡將其轉(zhuǎn)換為USB2.0接口相兼容的形式上傳到PC機(jī),經(jīng)主機(jī)應(yīng)用程序解壓縮后實(shí)現(xiàn)圖像顯示,通過(guò)比較原始圖像和壓縮后恢復(fù)的圖像以及計(jì)算客觀評(píng)價(jià)指標(biāo)來(lái)驗(yàn)證圖像壓縮系統(tǒng)的性能。在實(shí)驗(yàn)仿真中,采用某單位提供的多幀遙感地圖圖像進(jìn)行測(cè)試,選取原始灰度圖像area.bmp和彩色圖像earth.bmp和經(jīng)過(guò)本文方法壓縮后的JPEG圖像的效果對(duì)比,其壓縮比(Compression Ratio,CR)分別為17.81和18.17。采用CMOS相機(jī)對(duì)多種典型場(chǎng)景拍攝的圖像進(jìn)行壓縮,實(shí)際測(cè)量的壓縮比遠(yuǎn)大于10.5,峰值信噪比大于36 dB,滿足設(shè)計(jì)技術(shù)指標(biāo)的要求,抽取部分實(shí)驗(yàn)結(jié)果如表4所示。
筆者對(duì)CMOS相機(jī)圖像壓縮算法原理及實(shí)現(xiàn)進(jìn)行了詳細(xì)的論述,提出了基于FPGA平臺(tái)的設(shè)計(jì)方案,并從軟硬件聯(lián)合優(yōu)化的角度給出了具體解決辦法。采用高保真DCT變換,有效地降低了計(jì)算復(fù)雜度,可實(shí)現(xiàn)圖像高精度的重構(gòu)。由于整型DCT變換的粗略近似性,同時(shí)增加了量化復(fù)雜性,本文中的高保真度快速DCT變換性能優(yōu)于整數(shù)DCT變換,完全可以勝任H.264標(biāo)準(zhǔn)的要求[6]。量化步驟中除法運(yùn)算由乘法和移位操作實(shí)現(xiàn),Z形掃描通過(guò)查找表來(lái)完成。在實(shí)驗(yàn)中,用Verilog HDL語(yǔ)言進(jìn)行RTL級(jí)描述在Actel公司芯片APA600經(jīng)過(guò)測(cè)試驗(yàn)證該系統(tǒng)具有抗輻射、穩(wěn)定性高、功耗低、高壓縮比、效率高、速度快等優(yōu)點(diǎn),滿足實(shí)時(shí)圖像壓縮處理的要求,在保證圖像質(zhì)量的前提下,減少了資源消耗和提高了處理速度。針對(duì)圖像壓縮算法的硬件實(shí)現(xiàn),必須精心考慮邏輯結(jié)構(gòu)和功能時(shí)序,結(jié)合FPGA內(nèi)部資源的特征,設(shè)計(jì)出高性能、高可靠、低功耗的星載設(shè)備,是下一步的研究方向。
表4 CMOS相機(jī)圖像壓縮測(cè)試結(jié)果
:
[1]文濤,黃俊偉.用ARM926EJ-S處理器實(shí)現(xiàn)JPEG圖像軟件解碼[J].電視技術(shù),2008,32(7):31-33.
[2]ISO/IEC10918-1,Informationtechnologydigitalcompressionand coding of continuous-tone still image-requirements and guidelines[S].[S.l.]:CCITT,1993.
[3]AN S,WANG C.Recursive algorithm, architectures and FPGA implementation of the two-dimensional discrete cosine transform[J].IET Image Processing,2008,2(6):286-294.
[4]RIZK M R M,AMMAR M.Low power small area high performance 2D-DCT architecture[C]//International Design and Test Workshop,Cairo,Egypt:[s.n.],2007:120-125.
[5]WAHIDKA,DIMITROVVS,BADAWYW,et al.Error-free arithmetic and architecture for H.264[C]//Asilomar Conference on Signals,Systems and Computers.Pacific Grove,CA:[s.n.], 2005:703-707.
[6]MALVAR S,HALLAPURO A,KARCZEWICZ M,et al.Low-Complexity Transform and Quantization in H.264/AVC[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):598-603.