專利名稱:適用于Jpeg2000標(biāo)準(zhǔn)的高速比特平面解碼方法及電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明提出了一種針對(duì)JPEG2000標(biāo)準(zhǔn)的位平面解碼方法及電路實(shí)現(xiàn),該電路是高速 EBCOT解碼器的一部分,廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用、數(shù)碼相機(jī)、攝像機(jī)等領(lǐng)域。
背景技術(shù):
隨著多媒體技術(shù)的發(fā)展,現(xiàn)在的圖像壓縮技術(shù)不僅要求具有較高的壓縮性能,而且還要 求有新的特征來(lái)滿足一些特殊的需求,如在達(dá)到較低比特率的同時(shí)保留較高的壓縮品質(zhì),能 夠同時(shí)具備有損和無(wú)損壓縮方式,能夠支持圖像局部編解碼處理,支持圖像質(zhì)量漸進(jìn)傳輸?shù)龋?這些需求使得JPEG2000標(biāo)準(zhǔn)應(yīng)運(yùn)而生。JPEG2000是以離散小波變換為主的多解析編碼方式。
自JPEG2000標(biāo)準(zhǔn)公布以來(lái),諸多文獻(xiàn)對(duì)其編碼原理及其電路實(shí)現(xiàn)進(jìn)行了分析,尤其體 現(xiàn)在EBCOT (Embedded Block Coding Optimized Truncation)方面。EBCOT,即所謂具有優(yōu) 化截?cái)嗵匦缘那度胧綁K編碼,是JPEG2000編碼最關(guān)鍵的技術(shù),也是硬件實(shí)現(xiàn)最復(fù)雜的部分, 它的主要思想是將重要的信息優(yōu)先編碼、傳輸,為MQ算術(shù)編碼器提供上下文CX,實(shí)現(xiàn)碼 流的"按質(zhì)量漸進(jìn)傳輸"和"斷點(diǎn)優(yōu)化階段"。這種算法使得JPEG2000在碼流控制上不僅可 以輸出具有豐富特性的碼流,而且還可以生成高壓縮比的碼流。
由于EBCOT的運(yùn)算對(duì)象是各個(gè)子帶內(nèi)的編碼塊,每個(gè)編碼塊又是由若干比特平面構(gòu)成, 每個(gè)編碼平面又是由若干個(gè)條帶(stripe),若干列(column)和若干象素(pixel)構(gòu)成,JPEG2000 編解碼的數(shù)據(jù)處理都是基于這種比特平面進(jìn)行的,如圖1所示,由于每個(gè)比特平面需要進(jìn)行 三個(gè)編碼過(guò)程(pass)的掃描和算術(shù)編碼,大大降低了 EBCOT的運(yùn)算速度,使得EBCOT解 碼與小波變換之間出現(xiàn)瓶頸。許多文獻(xiàn)提出了加速EBCOT運(yùn)算的VLSI結(jié)構(gòu),提出了基于象 素跳躍(Pixel Skipping),列組跳躍(Group of Column Skipping)甚至平面跳躍(Plane Skipping) 的加速方法。然而,這些方法一般只適用在JPEG2000編碼電路中,因?yàn)榫幋a時(shí),每個(gè)象素 的每個(gè)比特是透明的,也就是說(shuō)對(duì)于編碼器,這些系數(shù)是已知的,因而只要存儲(chǔ)器足夠大, 只要緩存足夠大,可以將原先串行的三個(gè)編碼過(guò)程改為并行執(zhí)行,這樣就提高了編碼效率。 但是對(duì)于解碼電路,對(duì)解碼器透明的只有壓縮的比特流,解碼器需要重新構(gòu)建各個(gè)系數(shù)平面, 要想提高解碼效率需要綜合考慮JPEG2000的碼流特點(diǎn),以及外部存儲(chǔ)器的組織。
JPEG2000標(biāo)準(zhǔn)中的位平面解碼屬于EBCOT解碼的一部分,它的解碼原理如圖2所示。
一個(gè)"圖像片"(tile)經(jīng)過(guò)小波變換后分為四個(gè)子帶(LL,LH,HL,HH),每個(gè)子帶的系數(shù)
分為若"T個(gè)解碼塊,每個(gè)解碼塊又分為若干個(gè)位平面,每個(gè)位平面按照三個(gè)解碼過(guò)程依次逐 列解碼,如圖3所示。同編碼過(guò)程一樣,解碼也是從系數(shù)的最高位(MSB)的位平面開(kāi)始解 碼,直到最后一個(gè)pass解完,完成所有比特平面的解碼。解碼時(shí),碼塊的每個(gè)系數(shù)分別對(duì)應(yīng) 一個(gè)4位的狀態(tài)寄存器,分別記錄符號(hào)、重要性、幅度特性及該系數(shù)是否被訪問(wèn)這四個(gè)系數(shù) 特征。解碼起始時(shí)所有系數(shù)均被初始化為"不重要的"(insignificant),遇到非零比特時(shí),該 系數(shù)變?yōu)橹匾?significant),接著接收該系數(shù)的符號(hào)位,并根據(jù)標(biāo)準(zhǔn)中規(guī)定的符號(hào)計(jì)算公 式解出該系數(shù)的符號(hào),并存入狀態(tài)寄存器。之后,該系數(shù)的其他(在后續(xù)比特平面中處理的) 比特位即進(jìn)行"幅度精練"解碼,直到整個(gè)系數(shù)所有比特平面解完。由于在編碼時(shí),小波變 換將圖像的大部分能量都集中到低頻的子帶,即LL子帶,因此從系數(shù)構(gòu)成看,初始的幾個(gè) 位平面為全"零"的平面,這些平面對(duì)整個(gè)碼塊信息量貢獻(xiàn)很小,因此在開(kāi)始解碼時(shí),需要 從包頭中獲取從MSB開(kāi)始零平面?zhèn)€數(shù)的信息,最后根據(jù)解得的系數(shù)合成最終需要進(jìn)行反量化 的系數(shù),然后再進(jìn)行離散小波逆變換。
在每個(gè)pass進(jìn)行解碼時(shí),位平面解碼器為算術(shù)解碼器提供系數(shù)上下文(context, CX),上 下文可以理解為對(duì)碼塊系數(shù)及其周?chē)禂?shù)特性的一個(gè)代數(shù)描述,為19個(gè)不同的代碼,用數(shù)字 0到18來(lái)表示。算術(shù)解碼器根據(jù)CX查找概率估計(jì)表并進(jìn)行相應(yīng)的比較計(jì)算,輸出系數(shù)值D, 然后比特平面解碼器根據(jù)接收的D,產(chǎn)生下一個(gè)系數(shù)的CX,再輸出給算術(shù)解碼器。上下文的 產(chǎn)生是由當(dāng)前解碼系數(shù)周?chē)?個(gè)系數(shù)的狀態(tài)信息決定的,如圖4所示。處理碼塊邊界系數(shù)時(shí), 一律視碼塊之外系數(shù)為非重要的,即重要性狀態(tài)為"零"。JPEG2000的嵌入式編碼算法對(duì)每 個(gè)編碼通道提供了一個(gè)可能的斷點(diǎn),這樣可以對(duì)碼流進(jìn)行失真度和碼率的平衡處理,解碼時(shí) 根據(jù)編碼的模式設(shè)置,提供對(duì)斷點(diǎn)的支持。此外,本BPD還提供對(duì)算術(shù)解碼起初始化的控制, 根據(jù)編碼碼流的模式特性決定如何對(duì)算術(shù)解碼器進(jìn)行查找表和移位寄存器的初始化工作。
由于解碼時(shí),輸入給解碼器的碼流是具有一定pass順序的,即按照重要性擴(kuò)展通道,幅 度細(xì)化通道和清除通道的順序,因此,解碼時(shí)解得的系數(shù)位不是按每個(gè)編碼塊每個(gè)比特平面 的條帶(Stripe)順序的,因此要想實(shí)現(xiàn)編碼通道并行處理的機(jī)制十分困難,而且硬件復(fù)雜度 非常高,串行解碼使得解碼效率十分低下,解碼引擎不斷的產(chǎn)生CX,總是按照三個(gè)pass的 解碼順序掃描已解的系數(shù),并不斷地判決下一個(gè)系數(shù)位屬于哪個(gè)pass,是否具備可解條件, 這樣就浪費(fèi)許多時(shí)鐘周期。由于同一級(jí)各個(gè)子帶反量化系數(shù)都準(zhǔn)備好了才能進(jìn)行小波逆變換 的處理,因此, 一個(gè)僅用BPD模塊完成整個(gè)tile的解碼必將出現(xiàn)瓶頸。而在多個(gè)BPD并行 處理時(shí),各個(gè)BPD的處理速度是不一致的,這樣會(huì)出現(xiàn)解碼快的BPD等待解碼慢的BPD的 情況,而不能啟動(dòng)已完成解碼的BPD開(kāi)始下一個(gè)碼塊的解碼,這樣就降低了工作效率。 為了避免BPD解碼瓶頸的出現(xiàn),最大限度提高整個(gè)tile的解碼效率,并且減少后續(xù)小波 逆變換時(shí)RAM地址訪問(wèn)的硬件開(kāi)銷,本發(fā)明采用的優(yōu)化方法主要有-
(1) 采用與片內(nèi)RAM位寬對(duì)應(yīng)檢測(cè)窗口對(duì)待解的系數(shù)位進(jìn)行掃描,加速"判決過(guò)程"。
(2) 對(duì)存儲(chǔ)器進(jìn)行合理組織,在地址產(chǎn)生時(shí)減小硬件開(kāi)銷。
(3) 并行實(shí)列化3個(gè)BPD,分別對(duì)LL和LH, HL, HH子帶的碼塊進(jìn)行解碼。
(4) 將解碼完"無(wú)序"的系數(shù)按照碼塊各行列順序?qū)懭胪獠看鎯?chǔ)器。
在整個(gè)JPEG2000解碼器層,采用并行的BPD結(jié)構(gòu),對(duì)多個(gè)碼塊并行解碼,提高了BPD 和算術(shù)解碼器、小波逆變換模塊的數(shù)據(jù)吞吐量。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種適用于JPEG2000標(biāo)準(zhǔn)的,解碼效率高,硬件開(kāi)銷小的EBCOT 比特平面解碼器。
本發(fā)明基于現(xiàn)有的JPEG2000標(biāo)準(zhǔn)的EBCOT編碼器原理,并將其進(jìn)行改進(jìn)提出的。BPD 解碼器內(nèi)部包含象素解析部分,和存儲(chǔ)器操作部分,電路結(jié)構(gòu)如圖5所示。象素解析部分主 要采用一個(gè)象素檢測(cè)窗口,該窗口大小視片內(nèi)存儲(chǔ)器的位寬決定,位寬越大,意味著一次讀 入的系數(shù)越多,窗口就可以設(shè)置的越大, 一次掃描的信息量就越大,存儲(chǔ)器分為多個(gè)bank, 分別存放每個(gè)條帶中各個(gè)行的系數(shù),如圖6所示。如本發(fā)明中采用的存儲(chǔ)器位寬為64bit, BPD 解碼的系數(shù)為16位,這樣一次可以讀取兩列系數(shù)到內(nèi)部寄存器。這樣構(gòu)成4X6的掃描窗口, 只需一個(gè)時(shí)鐘周期可以完成窗口內(nèi)待解系數(shù)的定位或者發(fā)生skip的判決。如果窗口中含有待 解的系數(shù)位,則根據(jù)"bitindex"指向在一個(gè)周期內(nèi)產(chǎn)生相應(yīng)的上下文CX,并通過(guò)兩根握手 信號(hào)與MQD在兩個(gè)時(shí)鐘周期內(nèi)共同完成一個(gè)或四個(gè)(ran-length下為四個(gè))系數(shù)位的解碼。 系數(shù)從RAM的讀取到電路內(nèi)部進(jìn)行判決(處理過(guò)程)、解碼結(jié)果的更新是按照流水的方式進(jìn) 行操作的,如圖7所示。
在掃描窗口中采用一下兩種加速策略的結(jié)合,分別為
(1) 跳過(guò)非待解系數(shù)位,即Pixel Skipping, PS。
(2) 跳過(guò)不包含解碼系數(shù)位的窗口 (4X2個(gè)系數(shù)),即Window Skiping。
由于每個(gè)碼塊解出來(lái)可能包含不同數(shù)量的全"零"平面,位平面的解碼是按照從MSB到 LSB的順序解的,而同步RAM又不能按位讀取,這樣需設(shè)置一個(gè)24X16位通用的寄存器, 用來(lái)存儲(chǔ)當(dāng)前解碼的系數(shù),當(dāng)系數(shù)的狀態(tài)寄存器更新時(shí),系數(shù)寄存器同步更新,當(dāng)最后一個(gè)
Pass解完,即完成了整個(gè)碼塊的解碼,再將系數(shù)寄存器的系數(shù)倒序排列,輸出到外部存儲(chǔ)器 中,自動(dòng)完成"零"補(bǔ)齊的工作。
與編碼過(guò)程不同,解碼時(shí)每個(gè)位平面的三個(gè)解碼過(guò)程需要按照順序進(jìn)行,硬件電路實(shí)現(xiàn) 并行解碼比較閑難,除非將傳輸?shù)拇a流進(jìn)行緩存控制,并予以相應(yīng)截?cái)?,這樣會(huì)很大程度上 增加硬件復(fù)雜度。因此,為了不過(guò)多增加硬件復(fù)雜度,本BPD采用在每個(gè)解碼過(guò)程中進(jìn)行加 速。由于系數(shù)RAM的位寬為64位,每個(gè)單元最多存儲(chǔ)4個(gè)系數(shù)(每個(gè)系數(shù)為16位),系數(shù) 狀態(tài)RAM的位寬為16位,每個(gè)單元同樣存儲(chǔ)4個(gè)系數(shù)的狀態(tài),系數(shù)RAM和系數(shù)狀態(tài)RAM 地址共享,這樣對(duì)系數(shù)狀態(tài)進(jìn)行更新的同時(shí)對(duì)系數(shù)也進(jìn)行了更新。另外,為了降低解碼引擎 對(duì)片內(nèi)RAM的訪問(wèn)次數(shù),本BPD內(nèi)部RAM分別采用3個(gè)bank存儲(chǔ)系數(shù)和系數(shù)狀態(tài),如圖 6所示,將每個(gè)條帶的不同行系數(shù)分布到不同的bank,也就是說(shuō),在讀取和存入系數(shù)及系數(shù) 狀態(tài)時(shí),對(duì)RAM的操作是按照"123", "321", "123"……的順序進(jìn)行,這樣做的好處是降 低處理每個(gè)條帶時(shí)硬件對(duì)RAM的訪問(wèn)次數(shù),平均每個(gè)條帶每個(gè)窗口 1次,從而降低了功耗。
JPEG2000標(biāo)準(zhǔn)中規(guī)定了 Vertically causal mode,這種模式主要針對(duì)CX形成規(guī)則,當(dāng)窗 口掃描到條帶邊界時(shí),視條帶外的象素的significant狀態(tài)為"零"。解碼時(shí)為了支持該模式, 同時(shí)減少硬件復(fù)雜度,本BPD通過(guò)占用了少量?jī)?nèi)部存儲(chǔ)器資源,采用將原碼塊邊緣擴(kuò)展虛擬 象素的方法,將"新的"碼塊存入內(nèi)部RAM,對(duì)于最后一個(gè)條帶無(wú)法構(gòu)成完成窗口的碼塊, 將條帶補(bǔ)齊,使得上述掃描窗口可以一致的從碼塊頭到碼塊尾掃描完畢,而無(wú)需增加非完整 條帶的判斷過(guò)程及相應(yīng)硬件。
由于后續(xù)的小波逆變處理?yè)Q需要等同一級(jí)中整個(gè)"圖像片"(tile)反量化后的系數(shù)都準(zhǔn) 備好,而B(niǎo)PD僅是針對(duì)碼塊級(jí)的解碼,若將整個(gè)"圖像片"的解碼系數(shù)存儲(chǔ)起來(lái)必將浪費(fèi)大 量片內(nèi)RAM,而且還要增加小波逆變換模塊的訪問(wèn)端口,從而增加RAM成本,因此木BPD 釆用將碼塊系數(shù)寫(xiě)到外部RAM的方法,解決以上問(wèn)題。在解碼到最后一個(gè)平面時(shí),將解得 的系數(shù)不在存放到片內(nèi)RAM,而是通過(guò)一個(gè)34位接口 (18位地址和16位數(shù)據(jù))將系數(shù)寫(xiě) 到外部RAM中。在掃描窗口中解碼與寫(xiě)外部RAM操作是流水的方式進(jìn)行,由于解碼時(shí)系數(shù) 不是按照每條帶每列的順序重構(gòu)的,而是按照三個(gè)解碼過(guò)程重構(gòu)的,因此從解碼器特點(diǎn)角度 考慮也應(yīng)該采用這種流水方式,在解碼過(guò)程中將系數(shù)輸出,既提高了工作效率又重用了地址 產(chǎn)生單元,禾H bit index引擎。
為了加速每個(gè)"圖像片"的解碼,在JPEG2000硬件解碼器中采用并行BPD,即將LL 和HL、 LH、 LL分別采用三個(gè)不同BPD模塊并行解碼,提高解碼效率。如圖8所示。
圖1 JPEG2000壓縮標(biāo)準(zhǔn)中的碼塊及位平面、條帶、歹U、象素 圖2比特平面解碼器原理圖 圖3比特平面的解碼順序
圖4系數(shù)的CX, "X"為當(dāng)前解碼的系數(shù),"H"、 "V"、 "D"分別表示與該系數(shù)相鄰對(duì) 水平、垂直和角線方向的系數(shù),這九個(gè)系數(shù)的狀態(tài)信息共同構(gòu)成X系數(shù)的19個(gè)CX值。
圖5BPD的電路結(jié)構(gòu)。
圖6系數(shù)在片內(nèi)RAM中的存儲(chǔ)方式。
圖7系數(shù)從RAM的讀取,電路內(nèi)部的處理與寄存器更新的流水線操作過(guò)程。 圖8BPD的并行結(jié)構(gòu)。
圖9掃描窗口解碼時(shí)序圖。a為發(fā)生一次skip情況,b為發(fā)生多次skip情況。 圖10比特引導(dǎo)電路原理圖
具體實(shí)施例方式
下面結(jié)合三個(gè)解碼過(guò)程進(jìn)一步詳細(xì)描述本發(fā)明。
整個(gè)EBCOT的解碼是在BPD與MQD配合下完成的,兩者通過(guò)兩條握手信號(hào)bpd—ready 和mqdj"eady信號(hào)完成通訊,CX和D的產(chǎn)生均是在一個(gè)時(shí)鐘周期完成,即每產(chǎn)生一個(gè)解碼 系數(shù)位需要兩個(gè)時(shí)鐘周期。時(shí)序圖如圖9所示,這樣需要在一個(gè)時(shí)鐘周期內(nèi)完成"象素引導(dǎo)" 的工作,即找到當(dāng)前窗口內(nèi)待解的系數(shù)位,當(dāng)該系數(shù)解完后,完成寄存器的更新,bit—index 的相應(yīng)位變?yōu)?零",于是引導(dǎo)解碼引擎進(jìn)行下一位的解碼,即bit—index從高位起的第一個(gè) 非零位,若bit一index為全零,表明當(dāng)前窗口的所有系數(shù)解碼完畢,則發(fā)生RAM的讀取和寫(xiě) 操作,寄存器窗口向左移動(dòng)兩列,此時(shí),新的系數(shù)及系數(shù)狀態(tài)進(jìn)入掃描窗口,新的bitjndex 產(chǎn)生,依次,進(jìn)行新的窗口的系數(shù)引導(dǎo)與解碼。本發(fā)明釆用的窗口大小為6X4,有效處理象 素為8個(gè),構(gòu)成8個(gè)比特ID,該8個(gè)ID的有效性由Pixel ID generator產(chǎn)生,根據(jù)JPEG2000 標(biāo)準(zhǔn)規(guī)定的CX形成規(guī)則,分別產(chǎn)生這8個(gè)ID的使能電路,再由pixel state generator產(chǎn)生這 八個(gè)系數(shù)的狀態(tài)信息,根據(jù)當(dāng)前的解碼過(guò)程判定好的8個(gè)ID有效狀態(tài),產(chǎn)生bitjndex信號(hào), 通過(guò)選擇最終產(chǎn)生待解系數(shù)的狀態(tài)信息——由兩個(gè)字節(jié)表示的唯一數(shù)值,輸出到CX査找表, 最終生成該系數(shù)的CX,輸出給算術(shù)解碼器。電路結(jié)構(gòu)如圖IO所示。
當(dāng)bit—index為"零"時(shí),表示沒(méi)有待解碼的系數(shù),則輸出skip信號(hào),這時(shí)進(jìn)行一次RAM
的讀寫(xiě)操作,并且窗口左移兩列,將新的系數(shù)狀態(tài)和系數(shù)讀入寄存器中,這樣構(gòu)成了新的"引 導(dǎo)窗口",若此時(shí)該窗口仍不含待解的系數(shù),則繼續(xù)"跳躍"兩列,讀入新的系數(shù)進(jìn)行判斷, 若包含待解的系數(shù),則根據(jù)是否需要pixel skip選擇正確的待解系數(shù),解碼引擎根據(jù)引導(dǎo)的系 數(shù)地址及當(dāng)前的解碼過(guò)程產(chǎn)生需要的系數(shù)狀態(tài),根據(jù)這個(gè)系數(shù)狀態(tài)產(chǎn)生當(dāng)前系數(shù)的CX,輸出 給MQD,并產(chǎn)生cx—ready有效信號(hào)。無(wú)論是pixel skip還是window skip都是在一個(gè)時(shí)鐘周 期內(nèi)完成的。特別地,當(dāng)解最后一個(gè)比特平面時(shí),由于本發(fā)明將寫(xiě)外部RAM的過(guò)程集成到 模塊內(nèi)部,因此在解碼同時(shí)還要寫(xiě)RAM的信號(hào)以及相應(yīng)系數(shù)的地址,在一個(gè)窗口內(nèi),系數(shù) 解碼和寫(xiě)外部RAM是按流水方式進(jìn)行的,即若內(nèi)存控制器沒(méi)有相應(yīng),不會(huì)耽誤解碼的繼續(xù) 進(jìn)行。
解碼過(guò)程中,當(dāng)Vertically causal mode為無(wú)效時(shí),表示在解碼本條帶邊界系數(shù)比特時(shí)需要 考慮相鄰條帶系數(shù)狀態(tài)的影響,也就是說(shuō),在產(chǎn)生某些系數(shù)位的CX時(shí)需要考慮相鄰條帶系 數(shù)狀態(tài)值(significant狀態(tài)和符號(hào)狀態(tài))。這就需要合理構(gòu)造RAM結(jié)構(gòu),如果安排不合理必 然造成RAM的重復(fù)訪問(wèn),從而增加電路的功耗。為了解決此問(wèn)題,本BPD首先將原有碼塊 進(jìn)行虛擬系數(shù)擴(kuò)充,可以形象的表示為將原有碼塊"包了一層",若最后一個(gè)條帶為非完整條 帶時(shí),為了保證硬件處理的一致性,將其擴(kuò)充為完整條帶,這樣"新"的條帶可以認(rèn)為由6 行系數(shù)構(gòu)成,然后采用三個(gè)bank分別存儲(chǔ)每個(gè)條帶的1、 2行,3、 4行和5、 6行。處理第 一個(gè)真實(shí)條帶時(shí),分別讀取和寫(xiě)入bankl、 bank2、 bank3中的數(shù)據(jù),當(dāng)處理第二個(gè)真實(shí)條帶 時(shí),相當(dāng)于bankl和bank3發(fā)生了調(diào)換,即讀取和寫(xiě)入bank3、 bank2、 bankl中的數(shù)據(jù),因 此,設(shè)置一個(gè)swap信號(hào),根據(jù)條帶序號(hào)swap信號(hào)進(jìn)行翻轉(zhuǎn),控制bank的翻轉(zhuǎn)狀況。
本BPD中在進(jìn)行最后一個(gè)比特平面解碼時(shí),將系數(shù)寫(xiě)入外部存儲(chǔ)器,供反量化和小波逆 變換時(shí)訪問(wèn)。解碼器根據(jù)當(dāng)前pass的計(jì)數(shù)判斷是否解到最后一個(gè)比特平面,若為最后一個(gè)平 面,則每解完一個(gè)系數(shù)立即將該系數(shù)寫(xiě)到外部RAM,寫(xiě)外部RAM和解當(dāng)前窗口的系數(shù)以流 水線方式進(jìn)行。如圖9所示。
在JPEG2000解碼中,最重要的部分為EBCOT解碼、反量化和小波逆變換,反量化過(guò)程 相對(duì)簡(jiǎn)單,占用時(shí)鐘周期較少,小波逆變換過(guò)程需要整個(gè)子帶的系數(shù)全部準(zhǔn)備好,因此整個(gè) 解碼瓶頸會(huì)出現(xiàn)在EBCOT解碼,因?yàn)镋BCOT解碼是基于碼塊的,而一個(gè)BPD和MQD只 能同時(shí)處理一個(gè)碼塊,為了減小這種瓶頸的影響,提高整個(gè)圖像的解碼效率,本發(fā)明采用并 行結(jié)構(gòu)配置三路BPD分別對(duì)LL和LH, HL, HH子帶的碼塊進(jìn)行解碼。
本發(fā)明完成Verilog RTL設(shè)計(jì),并采用Xilinx Vertex II FPGA,利用Xilinx ISE進(jìn)行綜合 并下載,在50MHz的時(shí)鐘頻率下可以達(dá)到12Mbits/S的比特率。
權(quán)利要求
1.一種適用于JPEG2000標(biāo)準(zhǔn)的比特平面解碼器(Bit-Plane Decoder),是對(duì)已實(shí)現(xiàn)的JPEG2000位平面解碼器的改進(jìn),其特征在于該解碼器與算術(shù)解碼器(MQ Decoder)協(xié)同工作,完成JPEG2000解碼器中的EBCOT解碼,對(duì)原有碼塊進(jìn)行初始化,擴(kuò)充虛擬系數(shù),形成一個(gè)新的碼塊,BPD采用一個(gè)4×6的檢測(cè)與解碼窗口對(duì)新碼塊的系數(shù)進(jìn)行重構(gòu),每個(gè)pass解碼時(shí)采用“窗口跳躍”方法,并采用流水的方式處理解碼、寄存器更新、寫(xiě)外部RAM的過(guò)程,以提高解碼效率,最終將解得的系數(shù)存入外部RAM中;BPD解碼電路訪問(wèn)片內(nèi)RAM采用多bank方式,減小存儲(chǔ)器訪問(wèn)次數(shù)。并在整個(gè)JPEG2000解碼器實(shí)例化多個(gè)BPD模塊并行解碼,以提高解碼效率;所述的協(xié)同工作是指BPD和MQD通過(guò)兩個(gè)握手信號(hào),即bpd_ready和mqd_ready,僅在兩個(gè)時(shí)鐘周期以內(nèi)完成一次比特平面上下文(Context,CX)和解碼比特(D)的傳輸;所述的對(duì)圖像系數(shù)重構(gòu)是指在三個(gè)pass(重要性通道,幅度細(xì)化通道和清除通道)解碼時(shí)通過(guò)輸入的比特位重建整個(gè)系數(shù);所述的窗口跳躍方法是對(duì)于每個(gè)比特平面,在三個(gè)通道解碼過(guò)程中,跳過(guò)窗口內(nèi)無(wú)需解碼的2×4個(gè)系數(shù)位;所述的流水方式處理系數(shù)包括三個(gè)過(guò)程(1)對(duì)讀入窗口的系數(shù)位進(jìn)行通道解析,篩選出待解的系數(shù),即處理過(guò)程;(2)對(duì)系數(shù)位寄存器的更新過(guò)程,即將新的系數(shù)值及狀態(tài)值進(jìn)行更新;(3)將解得的系數(shù)寫(xiě)到對(duì)外部存儲(chǔ)器的過(guò)程。
2. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,其特征在于解碼時(shí)采用一個(gè)可變的檢測(cè) 與解碼窗口,窗口大小由系數(shù)存儲(chǔ)器位寬決定,本發(fā)明中存儲(chǔ)器位寬為64位,故采用4X6 的檢測(cè)與解碼窗口,該窗口鎖定當(dāng)前待解碼的8個(gè)系數(shù)位,并產(chǎn)生引導(dǎo)信號(hào)(bitjndex)引 導(dǎo)解碼器產(chǎn)生相應(yīng)位的CX,寄存器更新地址以及寫(xiě)外部存儲(chǔ)器的地址;當(dāng)bit—index為沒(méi)有 指向任何地址時(shí)則說(shuō)明本窗口沒(méi)有待解的系數(shù),發(fā)生"窗口跳躍",輸出skip信號(hào);解碼與 更新過(guò)程完畢產(chǎn)生一次讀寫(xiě)RAM操作,將左邊兩列數(shù)據(jù)與狀態(tài)信息寫(xiě)入RAM,同時(shí)窗口左 移兩列,并讀入兩列新值,構(gòu)成新的系數(shù)"引導(dǎo)"窗口。
3. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,對(duì)象素系數(shù)的讀取、處理、寄存器更新 按照流水的方式進(jìn)行操作。
4. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,其特征在于將位平面的"四周"各擴(kuò)展 一行(列)系數(shù)位,構(gòu)成"新"的碼塊,解碼時(shí)對(duì)"新"的碼塊進(jìn)行操作,便于每個(gè)條帶的 條帶邊緣系數(shù)的pass解析。
5. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,其特征在于存儲(chǔ)中間態(tài)數(shù)據(jù)的存儲(chǔ)器分 為3X2個(gè)bank,即每?jī)尚袨橐粋€(gè)bank,分別存儲(chǔ)系數(shù)數(shù)據(jù)和系數(shù)的狀態(tài),讀取ram時(shí)bank 按照"123", "321"……的順序進(jìn)行,對(duì)于每個(gè)位平面的每個(gè)通道解碼時(shí),每個(gè)條帶加"1", bankl和bank3發(fā)生一次交換(swap)。
6. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,其特征在于在解碼到最后一個(gè)位平面時(shí), 解碼同時(shí)將結(jié)果輸出到外部RAM,提前進(jìn)行反量化處理,并重用bitjndex地址產(chǎn)生系數(shù)在 整個(gè)編碼塊(codeblock, CB)中的地址,方便后續(xù)小波逆變換處理,省去反量化、小波逆變 換重新讀取位平面解碼系數(shù)的電路。
7. 根據(jù)權(quán)利要求1所述的JPEG2000位平面解碼器,其特征在于解碼每個(gè)CB時(shí),采用三路 并行的BPD,分別并行處理四個(gè)子代的系數(shù),即LL和LH, HL, HH,以提高解碼效率。
全文摘要
本發(fā)明公開(kāi)了一種針對(duì)ISO/IEC JPEG2000圖像壓縮編解碼標(biāo)準(zhǔn)中EBCOT系數(shù)比特平面快速解碼的實(shí)現(xiàn)方法及其電路結(jié)構(gòu),以提高JPEG2000 EBCOT解碼效率。本發(fā)明提出的位平面解碼電路將原碼塊擴(kuò)展虛擬象素構(gòu)成新的碼塊,分三個(gè)bank存儲(chǔ)系數(shù)及系數(shù)的狀態(tài)信息,減小了存儲(chǔ)器的訪問(wèn)量。并且采用6×4的窗口對(duì)系數(shù)進(jìn)行掃描,加速了解碼過(guò)程;同時(shí)利用并行技術(shù)進(jìn)一步提高了總的EBCOT解碼吞吐量。本發(fā)明可以提高JPEG2000圖像解碼效率,可以廣泛應(yīng)用于數(shù)碼影像產(chǎn)品中。
文檔編號(hào)G06T9/00GK101192303SQ20061014404
公開(kāi)日2008年6月4日 申請(qǐng)日期2006年11月24日 優(yōu)先權(quán)日2006年11月24日
發(fā)明者蒙卡娜, 陳波濤, 馬依迪, 魏春峰 申請(qǐng)人:北京中電華大電子設(shè)計(jì)有限責(zé)任公司