《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于組點(diǎn)跳躍的JPEG2000位平面掃描方案
基于組點(diǎn)跳躍的JPEG2000位平面掃描方案
曾昭貴, 仁福林
摘要: 針對(duì)超遙感圖像實(shí)時(shí)壓縮的需求,提出了基于組的像素點(diǎn)跳躍(GBPS)EBCOT掃描方案。該方案可以大幅度提高掃描效率。本設(shè)計(jì)用VHDL編寫,目標(biāo)器件為Altera Stratix系列的EP1S25F672C6,模塊穩(wěn)定運(yùn)行在120MHz,平均每個(gè)時(shí)鐘周期可以產(chǎn)生0.95個(gè)上下文信息。
Abstract:
Key words :

  摘 要: 針對(duì)超遙感圖像實(shí)時(shí)壓縮的需求,提出了基于組的像素點(diǎn)跳躍(GBPS)EBCOT" title="EBCOT">EBCOT掃描方案。該方案可以大幅度提高掃描效率。本設(shè)計(jì)用VHDL編寫,目標(biāo)器件為Altera Stratix" title="Stratix">Stratix系列的EP1S25F672C6" title="EP1S25F672C6">EP1S25F672C6,模塊穩(wěn)定運(yùn)行在120MHz,平均每個(gè)時(shí)鐘周期可以產(chǎn)生0.95個(gè)上下文信息。
  關(guān)鍵詞: JPEG2000" title="JPEG2000">JPEG2000 EBCOT 編碼塊" title="編碼塊">編碼塊 上下文


  EBCOT位平面掃描是JPEG2000硬件實(shí)現(xiàn)的瓶頸之一。自從聯(lián)合攝影專家組織發(fā)布JPEG2000標(biāo)準(zhǔn)以來,人們一直在尋找一種高效掃描的硬件實(shí)現(xiàn)方案,如Kuan-fu Chen[4]等人提出的GOCS(Group Of Columns Skipping)查詢掃描方案,將位平面上相鄰八列編成一個(gè)Group,在對(duì)重要傳播通道進(jìn)行完全掃描的同時(shí),建立后兩個(gè)掃描過程的編碼必要性信息表,在進(jìn)行幅值細(xì)化通道和清除通道時(shí)可以直接跳過不需要編碼的Group;而Zhu Yue-xin[1]等人提出了基于多級(jí)查詢表的GOCS改進(jìn)方案,這種優(yōu)化方法進(jìn)一步提高了掃描效率,但是需要額外的存儲(chǔ)單元?;诹?Column-Based)的點(diǎn)跳過(Pixel Skipping)技術(shù)[3]大大減少了掃描冗余,因而被廣泛應(yīng)用 [1~6]。為減少RAM的訪問頻率,提出了多列并行存儲(chǔ)方案[5],但其本質(zhì)是基于列的掃描結(jié)構(gòu)。這種基于列的操作,列與列之間的轉(zhuǎn)移需要消耗時(shí)鐘周期。平面內(nèi)三個(gè)過程并行處理的方案[7],進(jìn)一步減少了掃描的冗余時(shí)間,但這種方法對(duì)Tier-2截?cái)嗟木群痛a流組織影響比較大。
  筆者提出了基于組的像素點(diǎn)跳躍GBPS(Group-Based Pixel Skipping)的EBCOT位平面掃描方案。以四列為一組,在組內(nèi)使用點(diǎn)跳躍(Pixel Skipping)技術(shù)。本方案配合流水設(shè)計(jì),組之間可實(shí)現(xiàn)無縫轉(zhuǎn)移,極大減少了掃描單元之間轉(zhuǎn)移的冗余時(shí)鐘周期,從而提高了掃描效率。同時(shí)亦減少了對(duì)緩存RAM的訪問頻率,降低了系統(tǒng)功耗。
1 JPEG2000標(biāo)準(zhǔn)簡(jiǎn)介
  JPEG2000標(biāo)準(zhǔn)提供比JPEG更高的壓縮率和更好的抗誤碼特性,支持單分量或多分量的有損和無損編碼。支持SNR和分辨率的漸進(jìn)傳輸、感興趣(ROI)編碼、碼流隨機(jī)訪問,提供靈活的文件格式,支持用戶信息加載(如水印等)和動(dòng)態(tài)圖像(Motion JPEG2000),已被廣泛應(yīng)用于各個(gè)領(lǐng)域的圖像處理。如圖1所示,JPEG2000 首先對(duì)原始圖像進(jìn)行離散小波變換,無失真壓縮采用5/3提升小波變換,有失真壓縮采用9/7提升小波變換。如果是有失真壓縮,還要對(duì)小波變換后的系數(shù)進(jìn)行量化。量化后的各個(gè)子帶被劃分成大小相等的編碼塊(Code Block)。最后采用率失真優(yōu)化截取的內(nèi)嵌碼塊編碼算法(EBCOT)對(duì)這些編碼塊進(jìn)行獨(dú)立編碼。EBCOT分為Tier-1和Tier-2兩部分,Tier-1又分為位平面掃描、算術(shù)自適應(yīng)編碼器MQ和失真計(jì)算;Tier-2對(duì)MQ編碼輸出的數(shù)據(jù)采用PCRD算法進(jìn)行碼流的截取,得到最終的壓縮數(shù)據(jù)。解碼是編碼的逆過程,首先對(duì)碼流進(jìn)行EBCOT解碼,然后對(duì)反量化后的數(shù)據(jù)作小波反變換,最后生成重建圖像。


2 JPEG 2000標(biāo)準(zhǔn)定義的EBCOT位平面掃描方法
  如圖2所示,編碼塊中每個(gè)有效位平面列方向上每4個(gè)相鄰的點(diǎn)稱為一個(gè)編碼列(Coding Column),處在同一水平方向上的編碼列構(gòu)成一個(gè)帶(stripe),EBCOT位平面掃描時(shí),列內(nèi)對(duì)點(diǎn)從上到下, 帶內(nèi)對(duì)列從左到右, 編碼塊內(nèi)對(duì)帶從上到下進(jìn)行Z字型遍歷掃描。除了最高有效位平面只需進(jìn)行一次清理通道掃描外,其余的有效位平面均要進(jìn)行三次的掃描通道:有效性傳播通道(PASS1 Significance Propagation)、幅度細(xì)化通道(PASS2 Magnitude Propagation)和清除通道(PASS3 Clearup Pass)。編碼塊的所有點(diǎn)都對(duì)應(yīng)一個(gè)記錄其重要性的標(biāo)志,這個(gè)標(biāo)志在編碼塊開始編碼時(shí)被初始化為‘0’,表示其不重要,該點(diǎn)變?yōu)橹匾院蟊恢脼?lsquo;1’。如果當(dāng)前掃描點(diǎn)本身不重要,但其八鄰域內(nèi)有重要的,則進(jìn)行有效性傳播通道編碼。如果其本身為重要,則進(jìn)行幅度細(xì)化通道編碼;否則進(jìn)行清除過程編碼。有效性傳播通道使用零編碼(ZC)原語,幅度細(xì)化通道使用幅度細(xì)化編碼(MR)原語,清除通道則使用零編碼(ZC)原語或游程編碼(RLC)原語。這些原語產(chǎn)生上下文(CONTEXT)和判決位送給自適應(yīng)編碼器MQ進(jìn)行編碼。


3 基于組的EBCOT位平面掃描方案
3.1基于組的點(diǎn)跳躍掃描上下文產(chǎn)生器

  據(jù)統(tǒng)計(jì),如果按照J(rèn)PEG 2000協(xié)議給出的通道掃描方法,掃描的冗余時(shí)間占總時(shí)間的70%以上[2]?;诹械狞c(diǎn)跳躍(Pixel Skipping)方案[3]與基于啟發(fā)式掃描的組跳躍(GOCS)[3]結(jié)合使用的方案將所需時(shí)鐘下降到原來的40%左右[2]。但是這種方案需要額外的存儲(chǔ)器,并且必須對(duì)三個(gè)掃描通道中的一個(gè)進(jìn)行完全掃描,所以這種方案有其不理想的地方。同一位平面內(nèi)三個(gè)通道并行的方案[6],進(jìn)一步減少了掃描的冗余時(shí)間,但對(duì)Tier-2的動(dòng)態(tài)截?cái)嗟木群痛a流組織影響比較大。筆者提出了如圖3所示的基于組的點(diǎn)跳躍掃描GBPS(Group-Based Pixel Skipping)方案。將四列16個(gè)點(diǎn)(0~F)看成一個(gè)單元,稱之為一組(Group)。其左右白色兩列分別為該組的左鄰域列和右鄰域列,其上下兩行淺色分別為該組的上鄰域行和下鄰域行。組和它的上下鄰域的位平面小波系數(shù)均存在位平面小波系數(shù)緩存RAM的同一個(gè)單元中。在編碼塊非邊界區(qū)域,它的左鄰域列為前一個(gè)組的最右邊一列,右鄰域列為下一組的最左邊一列。左右鄰域分別用一個(gè)6位寄存器緩存。當(dāng)掃描編碼塊左邊界時(shí),左鄰域?yàn)榱悖鴴呙枳訅K右邊界時(shí),右鄰域?yàn)榱?。位平面掃描時(shí)在16個(gè)點(diǎn)中進(jìn)行跳躍掃描,只對(duì)當(dāng)前過程N(yùn)BC[2]為1的點(diǎn)進(jìn)行掃描。
3.2 組間流水操作
  基于組的點(diǎn)跳躍主要是為了減少兩相鄰處理單元之間轉(zhuǎn)移所消耗的時(shí)鐘周期,故在硬件實(shí)現(xiàn)時(shí)組之間采用流水操作。為了實(shí)現(xiàn)流水操作,EBCOT掃描被分解成三個(gè)處理任務(wù):當(dāng)前組的上下文掃描編碼、下一組的預(yù)處理、再下一組的數(shù)據(jù)預(yù)讀取。這三個(gè)處理任務(wù)是并行執(zhí)行的,所以對(duì)于一個(gè)組而言,它的預(yù)讀取過程、預(yù)處理過程和上下文的掃描編碼過程是流水操作的。如果相鄰的兩個(gè)組均有當(dāng)前掃描通道需要編碼的點(diǎn),組之間的轉(zhuǎn)移不需要冗余的時(shí)鐘周期,上下文產(chǎn)生器可以每個(gè)時(shí)鐘周期向算術(shù)編碼器MQ提供一個(gè)數(shù)據(jù)輸出。
  采用GBPS方法的目的,一是跳過當(dāng)前組當(dāng)前過程不需要編碼的點(diǎn),二是減少單元之間轉(zhuǎn)移所花費(fèi)的時(shí)間。同時(shí)亦減少了對(duì)內(nèi)部存儲(chǔ)器的訪問頻率,從而減少系統(tǒng)的功耗。下面將對(duì)三個(gè)處理任務(wù)進(jìn)行逐一的介紹。
3.2.1 數(shù)據(jù)預(yù)讀取
  在掃描過程中需要對(duì)兩種數(shù)據(jù)進(jìn)行預(yù)讀?。何黄矫嫘〔ㄏ禂?shù)和重要性信息(FC表),這兩部分?jǐn)?shù)據(jù)都分別存儲(chǔ)在片內(nèi)RAM中。FC 系數(shù)用于表征當(dāng)前位平面的點(diǎn)是否已變?yōu)橹匾臄?shù)據(jù),其存儲(chǔ)方式與位平面小波系數(shù)的存儲(chǔ)方式相同,如圖3所示。每個(gè)編碼塊開始編碼時(shí)FC系數(shù)的初始值為零,并在編碼過程中進(jìn)行更新。
  預(yù)讀過程的另一個(gè)任務(wù)是在讀取過程中對(duì)組的左右鄰域寄存器更新數(shù)據(jù),使得預(yù)處理模塊面對(duì)一個(gè)帶鄰域的組。


3.2.2 組預(yù)處理
  組預(yù)處理模塊首先根據(jù)組內(nèi)16個(gè)點(diǎn)各自的鄰域信息計(jì)算出其在當(dāng)前掃描過程中的NBC信息,用一個(gè)16位的寄存器進(jìn)行標(biāo)記;然后根據(jù)該寄存器計(jì)算出各點(diǎn)的下一個(gè)需要編碼點(diǎn)的位置,實(shí)現(xiàn)這一功能需要用到14個(gè)四位的位置寄存器np_0~np_D。EBCOT位平面掃描時(shí)根據(jù)這14個(gè)寄存器的信息進(jìn)行跳躍查詢,例如當(dāng)前處理點(diǎn)為0,若np_0的值為0xE,那么處理完0后,跳到E點(diǎn)進(jìn)行處理。極大地提高了掃描的有效性。
3.2.3 上下文編碼掃描模塊
  有效性傳播通道、幅度細(xì)化通道和清除通道三個(gè)上下文掃描通道產(chǎn)生上下文的復(fù)雜度是不一樣的,后兩個(gè)只要進(jìn)行簡(jiǎn)單判斷就可以得出上下文,這兩個(gè)過程采用非流水設(shè)計(jì),以節(jié)省資源。而有效性傳播過程則比較復(fù)雜,有必要采用流水操作,分解成鄰域信息提取、重要性上下文產(chǎn)生、符號(hào)位上下文產(chǎn)生和發(fā)送四個(gè)過程。如果某點(diǎn)進(jìn)行重要性編碼只要一個(gè)周期,若要進(jìn)行符號(hào)位編碼則需兩個(gè)周期。
  在掃描過程中點(diǎn)0和點(diǎn)F是必掃的兩個(gè)點(diǎn),因?yàn)轭A(yù)讀取隔組數(shù)據(jù)和預(yù)處理下一組數(shù)據(jù)需要兩個(gè)時(shí)鐘周期,這是本設(shè)計(jì)唯一會(huì)產(chǎn)生冗余時(shí)鐘周期的地方。1到E點(diǎn)則根據(jù)位置寄存器np_0~np_D的值進(jìn)行跳躍掃描。對(duì)于一個(gè)有效位平面中的一點(diǎn),必然被三個(gè)掃描通道中的一個(gè)掃描(清除通道的RLC有可能是一個(gè)掃描列一起掃描),故一個(gè)有效位平面每個(gè)組的冗余時(shí)鐘周期小于4。
4 硬件設(shè)計(jì)
  這是一個(gè)專門針對(duì)超大幅圖像實(shí)時(shí)壓縮的設(shè)計(jì),采用了四路編碼塊并行處理的方案。為了驗(yàn)證系統(tǒng)的性能筆者采用標(biāo)準(zhǔn)的測(cè)試圖像進(jìn)行測(cè)試。通過C++對(duì)MODELSIM仿真輸出數(shù)據(jù)統(tǒng)計(jì),各圖像掃描花費(fèi)的時(shí)鐘周期數(shù)如表1所示。這里除了“本文系統(tǒng)”以外的數(shù)據(jù)均來自參考文獻(xiàn)[2]
  上下文掃描模塊資源如表2所示,其中LE和本工程其它模塊一起約束綜合時(shí)會(huì)有稍許增加。所用的芯片為ALTERA公司Stratix系列的EP1S25F672C6。它有25660個(gè)LE、224個(gè)M512 RAM、 138個(gè)M4K RAM和80個(gè)乘法器,以及豐富的時(shí)鐘資源。

 


  本文以超大幅圖像的實(shí)時(shí)壓縮為應(yīng)用背景,并根據(jù)FPGA目標(biāo)芯片資源架構(gòu)的狀況,提出了一種新的EBCOT位平面掃描方案——基于組的點(diǎn)跳躍(GBPS)。這個(gè)方案所花的時(shí)鐘周期不到表1中最快方案的三分之一。大量流水操作的應(yīng)用也使本系統(tǒng)邏輯層次降低,因此獲得良好的時(shí)序性能,本模塊具備每秒處理6幅4096×4096的8位灰度遙感圖像的能力。


參考文獻(xiàn)
1 朱悅心.基于多級(jí)查詢表的JPEG2000位平面掃描優(yōu)化方法.電子學(xué)報(bào), 2004;(5)
2 Gangadhar, M.,Bhatia, D.FPGA based EBCOT architecture for JPEG 2000. Field-Programmable Technology (FPT),2003. Proceedings. 2003 IEEE International Conference, 2003;(12):15~17
3 Kuan-Fu Chen. Analysis and architecture design of EBCOT for JPEG-2000.Circuits and Systems, 2001. ISCAS 2001.The 2001 IEEE International Symposium on, 2001;(5)
4 Yun Long. A high-performance parallel mode EBCOT en-coder architecture design for JPEG2000.SOC Conference, 2004. Proceedings. IEEE International,2004;(9):12~15
5 Tien-Wei Hsieh, Youn-Long Lin. A hardware accelerator IP for EBCOT Tier-1 coding in JPEG2000 Standard.Embedded Systems for Real-Time Multimedia, 2004. ESTImedia 2004. 2nd Workshop on,2004;(9):6~7
6 Yijun Li, Aly, R.E,Bayoumi, M.A., Mashali, S.A.Parallel high-speed architecture for EBCOT in JPEG2000.Acoustics, Speech, and Signal Processing, 2003. Proceedings. (ICASSP ’03). 2003 IEEE International Conference on, 2003;(4)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。