亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法及熵解碼裝置的制作方法

文檔序號(hào):7971923閱讀:190來源:國(guó)知局

專利名稱::用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法及熵解碼裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種圖像/視頻編解碼技術(shù),特別是一種用于在圖像/視頻壓縮、數(shù)字音—見頻編解碼4支術(shù)中,針對(duì)用于視頻預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法,提供的一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法和熵解碼裝置,屬于數(shù)字A某體處理
技術(shù)領(lǐng)域
。
背景技術(shù)
:視頻編解碼技術(shù)是數(shù)字媒體存儲(chǔ)與傳輸?shù)葢?yīng)用的關(guān)鍵技術(shù)之一。為了實(shí)現(xiàn)高效率的視頻編解碼,現(xiàn)有編碼技術(shù)中采用了幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、變換、量化和熵編碼等技術(shù),其中幀間預(yù)測(cè)使用基于塊的運(yùn)動(dòng)矢量來消除圖像間的冗余,幀內(nèi)預(yù)測(cè)使用空間預(yù)測(cè)模式來消除圖像內(nèi)的冗余,通過對(duì)預(yù)測(cè)殘差進(jìn)行變換和量化消除圖像內(nèi)的視覺冗余,并通過熵編碼對(duì)運(yùn)動(dòng)矢量、預(yù)測(cè)模式、量化參數(shù)和變換系數(shù)等進(jìn)行編碼以去除數(shù)據(jù)冗余;相應(yīng)的,采用了熵解碼、反量化和反變換來實(shí)現(xiàn)解碼,保證存儲(chǔ)或者傳輸后的正常觀看。專利號(hào)為ZL03157189.1的中國(guó)專利"用于視頻預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法"公開了一種視頻編碼技術(shù)中熵編碼的方法,在2D-VLC(VariableLengthCoding)編碼器中引入了自適應(yīng)機(jī)制,為不同類型宏塊和不同level值區(qū)域設(shè)定了不同的局部統(tǒng)計(jì)分布最優(yōu)的碼表,編碼時(shí)通過碼表切換,找到最匹配當(dāng)前局部概率特性的碼表進(jìn)行編碼,充分考慮了視頻塊殘差系數(shù)的上下文環(huán)境和統(tǒng)計(jì)規(guī)律,同時(shí)對(duì)計(jì)算實(shí)現(xiàn)復(fù)雜度沒有影響,進(jìn)一步提高了編碼效率。但是如何針對(duì)該用于視頻預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法進(jìn)行有效、準(zhǔn)確的熵解碼,現(xiàn)有技術(shù)中并未提供相應(yīng)的技術(shù)方案。
發(fā)明內(nèi)容本發(fā)明的目的是針對(duì)視頻預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法,利用多碼表切換確定(level,run)數(shù)對(duì),實(shí)現(xiàn)針對(duì)性的并且有效的熵解碼方法和熵解碼裝置。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,解碼端讀取當(dāng)前宏塊的輔助信息,確定宏塊類型和圖像塊類型,依次對(duì)所述當(dāng)前宏塊的全部非零圖像塊執(zhí)行以下步驟步驟1、根據(jù)所述宏塊類型以及當(dāng)前圖像塊類型選擇用于解碼當(dāng)前圖像塊的碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;步驟2、依次通過碼表切換,解碼當(dāng)前圖像塊的Exp-Golomb碼,獲得當(dāng)前圖像塊的每一(level,run)系數(shù)數(shù)對(duì)。其中,所述步驟2可具體為步驟21、根據(jù)當(dāng)前碼表類型,選擇預(yù)設(shè)的固定碼表作為當(dāng)前碼表;步驟22、根據(jù)所述當(dāng)前碼表,截取碼流中的當(dāng)前Exp-Golomb碼并進(jìn)行解碼操作,獲得碼字;步驟23、判斷所述碼字是否為EOB,是則結(jié)束當(dāng)前圖像塊解碼,否則執(zhí)行步驟24;步驟24、根據(jù)所述碼字獲取(level,run)數(shù)對(duì);步驟25、根據(jù)所述解碼獲得的系數(shù)數(shù)對(duì)的level值,進(jìn)行碼表切換,所述切換后的碼表用于對(duì)碼流中后續(xù)的Exp-Golomb碼進(jìn)行解碼,并將切換后的碼表作為當(dāng)前碼表,重復(fù)執(zhí)行步驟22。步驟22可具體為步驟221、根據(jù)所述當(dāng)前碼表確定碼流中待解碼的當(dāng)前Exp-Golomb碼階數(shù);步驟222、根據(jù)所述階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字。其中,截取碼流中當(dāng)前Exp-Golomb碼的信息比特具體為從碼流當(dāng)前位置起尋找第一個(gè)非零比特,并記錄找到的零比特個(gè)數(shù);根據(jù)所述階數(shù)以及零比特個(gè)數(shù),計(jì)算并截取碼流中當(dāng)前Exp-Golomb碼的信息比特。所述步驟24包括步驟241、檢查所述碼字是否為溢出碼,不是則執(zhí)行步驟242,是則執(zhí)行步驟243;步驟242、在所述當(dāng)前碼表中,根據(jù)所述碼字查找碼表中的對(duì)應(yīng)項(xiàng),得到一(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束;步驟243、根據(jù)所述當(dāng)前宏塊類型,分別確定level和run的Exp-Golomb碼階數(shù);步驟244、根據(jù)所述level的階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟245、根據(jù)所述碼字確定當(dāng)前的level系數(shù);步驟246、根據(jù)所述run的階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟247、根據(jù)所述碼字確定當(dāng)前的run系數(shù);步驟248、將所述level、run的系數(shù)組合為當(dāng)前的(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束。本發(fā)明還提供了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼裝置,包括碼流接收單元、碼表提供單元和解碼單元;其中所述碼流接收單元,用于接收并轉(zhuǎn)發(fā)Exp-Golomb碼流,同時(shí)確定并發(fā)送每一宏塊類型及所述宏塊中圖像塊類型;所述碼表提供單元,用于根據(jù)從所述碼流接收單元接收到的宏塊類型和圖像塊類型,確定當(dāng)前碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;還用于根據(jù)解碼單元的反饋指令進(jìn)行碼表切換,對(duì)當(dāng)前碼表進(jìn)行確定;所述解碼單元,用于接收所述碼流接收模塊發(fā)送的Exp-Golomb碼流和碼表提供單元的當(dāng)前碼表,解碼當(dāng)前非零圖像塊的Exp-Golomb碼,并根據(jù)解碼結(jié)果向所述碼表提供單元反饋指令。所述碼表提供單元可包括切換模塊及存儲(chǔ)模塊;所述切換模塊用于確定當(dāng)前碼表類型及進(jìn)行碼表切換;所述存儲(chǔ)模塊用于存儲(chǔ)碼表類型及對(duì)應(yīng)的碼表,所述碼表類型包括用于解碼內(nèi)部型宏塊的亮度塊的內(nèi)部型碼表;用于解碼外部型宏塊的亮度塊或者色度塊的外部型碼表;用于解碼色度塊的色度塊自身的碼表;任一碼表類型對(duì)應(yīng)多個(gè)不同的碼表,包括預(yù)設(shè)的固定碼表。所述解碼單元可包括碼字截^Mt塊和碼字解碼模塊,其中所述碼字截取坤莫塊用于接收所述碼流接收單元發(fā)送的Exp-Golomb碼流和碼表提供單元指示的當(dāng)前碼表,根據(jù)Exp-Golomb碼流第一個(gè)非零比特之前的零比特個(gè)數(shù)以及當(dāng)前碼表所確定的當(dāng)前Exp-Golomb碼階數(shù)來截取當(dāng)前Exp-Golomb碼;還用于接收所述碼字解碼模塊發(fā)送的溢出指令分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截取調(diào)整;所述碼字解碼才莫塊,用于根據(jù)接收到的當(dāng)前Exp-Golomb碼和當(dāng)前碼表查找當(dāng)前碼字;對(duì)于當(dāng)前碼字為EOB的情況,結(jié)束當(dāng)前圖像塊的解碼,對(duì)于當(dāng)前碼字為非溢出碼的情況,直接獲取對(duì)應(yīng)的(level,run)系數(shù)數(shù)對(duì),對(duì)于當(dāng)前碼字為溢出碼的情況,指令所述碼字截取模塊分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截取調(diào)整;還用于向所述碼表提供單元發(fā)送level系數(shù)作為反饋指令。由上述技術(shù)方案可知,本發(fā)明通過碼表切換,采用選擇不同的局部統(tǒng)計(jì)分布最優(yōu)的碼表分別為不同類型宏塊和不同level值區(qū)域的碼流進(jìn)行解碼,具有以下有益效果1、充分考慮了視頻塊殘差系數(shù)的上下文環(huán)境和統(tǒng)計(jì)規(guī)律,不影響計(jì)算實(shí)現(xiàn)復(fù)雜度;2、提高了編解碼效率。下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。圖1為本發(fā)明相應(yīng)的熵編碼實(shí)施例中進(jìn)行掃描的結(jié)構(gòu)示意圖;圖2為對(duì)圖1所示掃描結(jié)構(gòu)進(jìn)行編碼的示意圖;圖3A為本發(fā)明中4:2:0宏塊格式的一個(gè)實(shí)施例的示意圖;圖3B為本發(fā)明中4:2:2宏塊格式的一個(gè)實(shí)施例的示意圖;圖3C為本發(fā)明中4:4:4宏塊格式的一個(gè)實(shí)施例的示意圖;圖4為本發(fā)明提供的一個(gè)完整宏塊的熵解碼方法的流程圖;圖5為本發(fā)明提供的依次通過碼表切換解碼的實(shí)施例的流程圖;圖6為本發(fā)明提供的熵解碼裝置的原理結(jié)構(gòu)示意圖;圖7為本發(fā)明提供的熵解碼裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施例方式本發(fā)明所提供的用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,是為匹配專利號(hào)為ZL03157189.1的中國(guó)專利"用于視頻預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法"所提供的,在對(duì)圖像的宏塊進(jìn)行視頻預(yù)測(cè)殘差解碼后,對(duì)熵解碼之后獲得的數(shù)據(jù)再依次進(jìn)行反量化和反變換,從而保證用戶的正常收看。為了更好的理解本發(fā)明所提供的用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,首先通過一個(gè)編碼的實(shí)施例來加以說明,參見圖1和圖2,以4*4圖像塊為例。在該編碼方案中,為了提高編碼效率,針對(duì)不同的類型建立不同類型的碼表,使得每種類型下,被編碼符號(hào)的碼字長(zhǎng)度和被編碼符號(hào)的出現(xiàn)概率能夠更好的匹配,從而取得更好的編碼效果。在圖1中,通過zig-zag掃描("之,,字掃描),從左上到右下,依次得到(level,run)數(shù)對(duì);然后采用逆序的方式從后向前對(duì)(level,run)進(jìn)行編碼,如圖2所示。相應(yīng)的,由于對(duì)其進(jìn)行解碼時(shí),是4艮據(jù)其碼流的排列順序依次解碼,因此,對(duì)于某一個(gè)圖像塊而言,同樣是逆序的方式進(jìn)行解碼。但為了描述方便,以其在碼流中的順序加以描述,比如,"下一待解碼(level,run)系數(shù)數(shù)對(duì)"所指為碼流中當(dāng)前系數(shù)數(shù)對(duì)之后讀取的數(shù)據(jù),雖然從圖像塊本身而言,其對(duì)應(yīng)的熵編碼之前的順序?yàn)橄取榱伺浜仙鲜鲇糜谝曨l預(yù)測(cè)殘差系數(shù)編碼的熵編碼方法,本發(fā)明提供了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,解碼端讀取當(dāng)前宏塊的輔助信息,確定宏塊類型和圖像塊類型;其中,輔助信息包括圖像頭信息(picture—code—type)和宏塊信息,該宏塊信息包括MB—code—type字段以及宏塊編碼模板(cbp)字段;其中,圖像頭信息在讀取本幀內(nèi)各個(gè)宏塊之前讀取,而宏塊信息則是在讀取各個(gè)宏塊的同時(shí)分別讀取。對(duì)于不同的幀,所需讀取的輔助信息也不相同;比如,對(duì)于I幀來說,由于采用幀內(nèi)預(yù)測(cè),因此一幀內(nèi)的宏塊類型相同,僅需讀取圖像頭信息即可確定該幀內(nèi)的宏塊類型,圖像塊類型以及亮度塊和色度塊是否包含編碼數(shù)據(jù)等信息由cbp字段確定;而對(duì)于P幀和B幀來說,由于同時(shí)采用幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè),因此必須再讀取宏塊信息中的MB一code—type字段來確定宏塊類型。以一個(gè)圖像頭的解碼過程為例,如果當(dāng)前圖像起始碼是0x00001B3,并且picture—codejype等于'00,則表示圖像是I幀;如果當(dāng)前圖像起始碼是0x00001B6,并且picture—code—type等于'01,,則表示圖像是P幀;如果當(dāng)前圖像起始碼是0x00001B6,并且picture—code一type等于'10',則表示圖像是B幀;則對(duì)于P幀和B幀來說,每一宏塊還需要讀取MB—code—type字段的值,確定宏塊采用的是幀內(nèi)預(yù)測(cè)還是幀間預(yù)測(cè);然后,對(duì)于每一宏塊讀取cbp字段,按照該cbp解析得到的比特位確定對(duì)應(yīng)比特位的圖像塊是否含有編碼數(shù)據(jù)即非零系數(shù),從而確定當(dāng)前解碼的非零圖像塊是亮度塊還是色度塊。對(duì)于不包含編碼數(shù)據(jù)的情況,該圖像塊為零,無需繼續(xù)進(jìn)行解碼。確定了宏塊類型和圖像塊類型后,依次對(duì)所述當(dāng)前宏塊的全部非零圖像塊執(zhí)行以下步驟步驟1、根據(jù)所述宏塊類型以及當(dāng)前圖像塊類型選擇用于解碼當(dāng)前圖像塊的碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;步驟2、依次通過碼表切換,解碼當(dāng)前圖像塊的Exp-Golomb碼,獲得當(dāng)前圖像塊的每一(level,run)系數(shù)數(shù)對(duì)。由于在視頻圖像編碼中,宏塊是編碼的基本單位,所以對(duì)視頻圖像的解碼能夠分解為對(duì)每一宏塊的解碼。具體到每一個(gè)宏塊,又存在著格式、大小、類型的諸多不同。格式大小不同,比如,在4:2:0格式下,一個(gè)宏塊包括4個(gè)8*8亮度塊(Y)和2個(gè)8*8色度塊(1個(gè)Cb,1個(gè)Cr),如圖3A所示;在4:2:2格式下,一個(gè)宏塊包括4個(gè)8*8亮度塊(Y)和4個(gè)8*8色度塊(2個(gè)Cb,2個(gè)Cr),如圖3B所示;在4:4:4格式下,一個(gè)宏塊包括4個(gè)8*8亮度塊(Y)和8個(gè)8*8色度塊(4個(gè)Cb,4個(gè)Cr),如圖3C所示。在圖3A-3C中,還標(biāo)示了三種宏塊中圖像塊的順序號(hào),該順序號(hào)代表了宏塊劃分后運(yùn)動(dòng)矢量和參考索引在碼流中的順序。在對(duì)預(yù)測(cè)殘差系數(shù)的熵編/解碼中,圖像塊的每一點(diǎn)為一個(gè)系數(shù),這個(gè)系數(shù)表示經(jīng)過熵編碼之前的編碼步驟,包括變換、量化之后得到的視頻預(yù)測(cè)殘差,亦即為熵解碼之后所得到的數(shù)據(jù)。類型不同。宏塊類型分為兩種,一種是intra(內(nèi)部)型,采用幀內(nèi)相鄰的圖像塊對(duì)待編碼圖像塊進(jìn)行幀內(nèi)預(yù)測(cè)的方法進(jìn)行編碼;另一種是inter(外部)型,采用相鄰幀的圖像塊對(duì)待編碼圖像塊進(jìn)行幀間預(yù)測(cè)的方法進(jìn)行編碼。這兩種不同的預(yù)測(cè)編碼方法使得所得到的塊殘差系數(shù)的特性不同,在掃描后形成的相同(level,run)數(shù)對(duì)出現(xiàn)的概率不同。比如某一(level,run)數(shù)對(duì)(3,0),可能在所有intra型圖像塊中出現(xiàn)的概率為10%,而在所有inter型圖像塊中出現(xiàn)的概率只有7%。為了區(qū)分識(shí)別宏塊的結(jié)構(gòu)類型,以便實(shí)現(xiàn)有效的解碼,解碼端從比特流中讀取當(dāng)前宏塊的輔助信息,確定宏塊類型和圖像塊類型,依次對(duì)所述當(dāng)前宏塊的全部非零圖像塊執(zhí)行熵解碼獲得視頻預(yù)測(cè)殘差。圖4為一個(gè)完整宏塊進(jìn)行熵解碼的實(shí)施例的流程圖。在獲得視頻預(yù)測(cè)殘差后,采用與編碼相應(yīng)的反量化、反變換,從而實(shí)現(xiàn)視頻的完全解碼。全部宏塊的解碼完成后,即可實(shí)現(xiàn)用戶的正常收看。依次對(duì)所述當(dāng)前宏塊的全部非零圖像塊執(zhí)行熵解碼的過程進(jìn)行具體分析。步驟1中根據(jù)所述宏塊類型以及當(dāng)前圖像塊的類型選擇用于解碼當(dāng)前圖像塊的碼表類型具體為當(dāng)前宏塊類型為intra型且當(dāng)前圖像塊類型為亮度塊時(shí),選擇intra型碼表解碼當(dāng)前圖像塊的Exp-Golomb碼;當(dāng)前宏塊類型為inter型且當(dāng)前圖像塊類型為亮度塊時(shí),選擇inter型碼表解碼當(dāng)前圖像塊的Exp-Golomb碼;當(dāng)前圖像塊類型為色度塊時(shí),選擇inter型碼表或者色度塊自身的碼表解碼當(dāng)前圖像塊Exp-Golomb碼。對(duì)于色度塊而言,選擇inter型碼表還是色度塊自身的碼表進(jìn)行解碼取決于編碼所采用的碼表,由于inter型碼表編解碼色度塊的效果基本可以滿足要求,因此也可不采用色度塊自己?jiǎn)为?dú)的碼表。對(duì)于步驟2,由于本發(fā)明所對(duì)應(yīng)的編碼過程中,對(duì)于確定的圖像塊,采用了多個(gè)不同的碼表來分配Exp-Golomb碼碼字,每一個(gè)碼表都是根據(jù)碼表本身的level值對(duì)下一個(gè)將要編碼的(level,run)數(shù)對(duì)的出現(xiàn)概率進(jìn)行統(tǒng)計(jì)后制成的,按下一個(gè)將要編碼的(level,mn)數(shù)對(duì)的出現(xiàn)概率由高到低分配由小到大的碼字,充分的利用了上下文環(huán)境和統(tǒng)計(jì)規(guī)律,比只有一個(gè)統(tǒng)一的碼表,不考慮上下文環(huán)境,只考慮總的統(tǒng)計(jì)規(guī)律效率提高了很多,因此,必然要求解碼過程中進(jìn)行相應(yīng)的切換碼表操作,以實(shí)現(xiàn)準(zhǔn)確解碼。由于本發(fā)明主要配合基于上下文的2D-VLC編碼器進(jìn)行解碼,因此,所舉實(shí)施例中的碼表為2D-VLC結(jié)構(gòu),包括(level,run)數(shù)對(duì)以及EOB與Exp-Golomb碼碼字的映射關(guān)系。表1給出了編解碼Inter型亮度圖像塊所用的Exp-Golomb碼碼字分配碼表VLCO—Inter及VLC1—Inter示例。VLCO—Inter作為預(yù)設(shè)碼表編解碼第一個(gè)(level,run)數(shù)對(duì)。VLC1—Inter表示Inter型亮度圖像塊level為1的碼表,用來對(duì)MaxAbsLevel為1時(shí)的(level,run)數(shù)對(duì)編解碼,其中MaxAbsLevel表示已經(jīng)編解碼的(level,run)數(shù)對(duì)中所出現(xiàn)的最大level絕對(duì)值(MaxAbsLevel的初始值為0)。其他的碼表結(jié)構(gòu)與這兩個(gè)碼表類似。其中,本實(shí)施例中的inter型亮度圖像塊相應(yīng)于編解碼,共對(duì)應(yīng)7個(gè)碼表,其中的固定碼表用于第一個(gè)(level,run)系數(shù)數(shù)對(duì)的編解碼,其余6個(gè)碼表將level的可能取值分成了6個(gè)區(qū)域,1、2、3、4-6、7-9和9以上,這6個(gè)碼表分別用于MaxAbsLevel為1、2、3、4-6、7-9和9以上時(shí)(level,run)系數(shù)數(shù)對(duì)的編解碼。本領(lǐng)域:技術(shù)人員可以根據(jù)實(shí)際情況,靈活劃分。表l:<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>參見圖5,依次通過碼表切換解碼的一個(gè)具體實(shí)施例為步驟21、根據(jù)當(dāng)前碼表類型選擇預(yù)設(shè)的固定碼表作為當(dāng)前碼表;在本實(shí)施例中,當(dāng)前碼表類型為inter型時(shí),選擇VLCO一inter碼表;當(dāng)前碼表類型為intra型時(shí),選擇VLCO—intra碼表;當(dāng)前碼表類型為色度塊自身碼表時(shí),選擇VLCO—chroma碼表。步驟22、根據(jù)所述當(dāng)前碼表,截取碼流中的當(dāng)前Exp-Golomb碼并進(jìn)行解碼操作,獲得碼字;步驟23、判斷所述碼字是否為EOB,是則結(jié)束當(dāng)前圖像塊解碼,否則執(zhí)行步驟24;在本實(shí)施例中,EOB表示一個(gè)圖像塊的解碼結(jié)束。步驟24、根據(jù)所述碼字獲取(level,run)數(shù)對(duì);步驟25、根據(jù)所述解碼獲得的系數(shù)數(shù)對(duì)的level值,進(jìn)行碼表切換,所述切換后的碼表用于對(duì)碼流中后續(xù)的Exp-Golomb碼進(jìn)行解碼,并將切換后的碼表作為當(dāng)前碼表,重復(fù)執(zhí)行步驟22。在本實(shí)施例中,用所述解碼獲得的系數(shù)數(shù)對(duì)的level值對(duì)MaxAbsLevel進(jìn)行更新,之后根據(jù)MaxAbsLevel選擇相應(yīng)碼表確定為當(dāng)前碼表。在本實(shí)施例中,步驟22通過計(jì)算非零比特位來實(shí)現(xiàn)對(duì)當(dāng)前Exp-Golomb碼的長(zhǎng)度的計(jì)算,下面對(duì)該方法進(jìn)行具體說明所述步驟22具體的解碼過程為步驟221、根據(jù)當(dāng)前碼表確定碼流中待解碼的當(dāng)前Exp-Golomb碼階數(shù);比如,對(duì)于非色度塊自身的碼表,判斷當(dāng)前碼表是否為VLCO—Inter,是則確定碼流中待解碼的當(dāng)前Exp-Golomb碼為3階;否則確定碼流中待解碼的當(dāng)前Exp-Golomb碼為2階。對(duì)于色度塊自身的碼表,則無需進(jìn)行判斷。步驟222a、從碼流當(dāng)前位置起尋找第一個(gè)非零比特,并記錄找到的零比特個(gè)數(shù);在本實(shí)施例中,找到的零比特個(gè)數(shù)記為leadingZeroBits;步驟222b、根據(jù)所述階數(shù)以及零比特個(gè)數(shù),計(jì)算并截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字。其中,Exp-Golomb碼由前綴和后綴組成,前綴碼為leadingZeroBits個(gè)0以及一個(gè)1構(gòu)成的比特串,后綴碼為leadingZeroBits+階數(shù)個(gè)信息比特構(gòu)成。本發(fā)明所提供的計(jì)算碼字的方法有如下兩種第一,從Exp-Golomb碼表中讀取。參見表2,為Exp-Golomb碼表的一種簡(jiǎn)寫形式,表中的Xj為0或l。所述的INFO,是一個(gè)信息量,用如下公式計(jì)算/7VFO=Z:。x,.2'。表2<table>complextableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>根據(jù)表2中提供的公式,可以計(jì)算得出Exp-Golomb碼對(duì)應(yīng)的碼字。比如,Exp-Golomb碼00111依據(jù)上面公式進(jìn)行計(jì)算,INFO=3,L=5,則L/2=2(取整數(shù)部分),依據(jù)碼字公式,獲得碼字為6。通過計(jì)算容易得出,Exp-Golomb碼表中每一階的碼字,都是從0開始遞增,參見表3,為0階、1階、2階和3階Exp-Golomb碼的計(jì)算結(jié)果實(shí)例,其中,k代表階數(shù),CodeNum代表碼字。表3<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table>第二,根據(jù)leadingZeroBits直接計(jì)算碼字,其記算方法也可以用按偽代碼描述如下leadingZeroBits=-1;for(b=0;!b;leadingZeroBits++)b=read—bits(l)CodeNum=21eadingZeroBits+k-2k+read—bits(leadingZeroBits+k)。這樣,即使不采用Exp-Golomb碼表,同樣能夠獲取^L頻殘差系數(shù)的碼字。所述步驟24具體包括步驟241、檢查所述碼字是否為溢出碼,不是則執(zhí)行步驟242,是則執(zhí)行步驟243;這是由于統(tǒng)計(jì)預(yù)測(cè)的結(jié)果一般集中在一個(gè)區(qū)域,這是圖像的漸進(jìn)變化所決定的,所以設(shè)計(jì)碼表時(shí),碼表中不包括那些出現(xiàn)幾率非常小的,超出設(shè)定的區(qū)域的(level,run)數(shù)對(duì)。從碼表VLCO—Inter及VLCl—Inter就可以看到,碼表只包含了部分(level,mn)數(shù)對(duì)的碼字,因此需要對(duì)超出碼表范圍的(levd,mn)數(shù)對(duì),進(jìn)行例外的處理,即編碼時(shí)根據(jù)當(dāng)前碼表,即超出范圍的碼表,確定此碼表所采用的Exp-Golomb碼的階數(shù),然后,編碼一個(gè)escape—code,再將超出碼表的level和run分別轉(zhuǎn)換成Exp-Golomb碼。因此,解碼時(shí)就分成了直接求取(level,run)系數(shù)數(shù)對(duì),以及分別求取level和run合成(level,run)系數(shù)數(shù)對(duì)兩種情況。步驟242、在所述當(dāng)前碼表中,根據(jù)所述碼字查找碼表中的對(duì)應(yīng)項(xiàng),得到一(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束;步驟243、根據(jù)所述當(dāng)前宏塊類型,分別確定level和run的Exp-Golomb碼階數(shù);其中,當(dāng)前宏塊為inter型時(shí),確定level系數(shù)的Exp-Golomb碼為2階,run系數(shù)的Exp-Golomb碼為3階;當(dāng)前宏塊為intra型時(shí),確定level系數(shù)和run系數(shù)的Exp-Golomb碼皆為3階。步驟244a、從碼流當(dāng)前位置起尋找第一個(gè)非零比特,并記錄找到的零比特個(gè)數(shù);步驟244b、根據(jù)所述level的階數(shù)以及零比特個(gè)數(shù),計(jì)算并截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟245、根據(jù)所述碼字確定當(dāng)前的level系數(shù);具體的,碼字和level系數(shù)存在著——對(duì)應(yīng)的關(guān)系,由于碼字的取值范圍是0到無窮,而level的取值范圍是正負(fù)整數(shù),因此可以采用一定的規(guī)則對(duì)應(yīng)解碼荻得。比如,對(duì)于level的取值是-N到N,則統(tǒng)一設(shè)置碼字0-N-1對(duì)應(yīng)于level系數(shù)的l-N,設(shè)置碼字N對(duì)應(yīng)level值的-1,依次類推。但由于level系數(shù)值越小,其出現(xiàn)機(jī)率越大,因此,較佳的技術(shù)方案是碼字0對(duì)應(yīng)level值1,碼字1對(duì)應(yīng)level值的-1,碼字2對(duì)應(yīng)level值2,碼字3對(duì)應(yīng)level值的-2,依次類推。步驟246a、從碼流當(dāng)前位置起尋找第一個(gè)非零比特,并記錄找到的零比特個(gè)數(shù);步驟M6b、根據(jù)所述run的階數(shù)以及零比特個(gè)數(shù),計(jì)算并截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟247、根據(jù)所述碼字確定當(dāng)前的run系數(shù);類似的,碼字和run系數(shù)也存在著--對(duì)應(yīng)的關(guān)系,由于碼字的取值范圍是0到無窮,而run的取值范圍是0到N,因此可以采用——對(duì)應(yīng)的規(guī)則對(duì)應(yīng)解碼獲得。比如,對(duì)于8*8圖像塊,run的取值是0-63,則統(tǒng)一設(shè)置碼字0-63對(duì)應(yīng)于run系數(shù)的0-63即可。步驟248、將所述level、run的系數(shù)組合為當(dāng)前的(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束。上述步驟也可采用以固定的數(shù)據(jù)位為尋址地址查表獲知碼流中當(dāng)前Exp-Golomb碼的長(zhǎng)度來實(shí)現(xiàn)截取,則步驟222a與步驟222b,步驟244a與步驟244b,步驟246a與步驟246b都替換為讀取固定的數(shù)據(jù)位,獲得當(dāng)前Exp-Golomb碼并截取進(jìn)行解碼操作的步驟。這種替換不影響本發(fā)明的整體技術(shù)方案。本發(fā)明還提供了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼裝置,參見圖6,為原理結(jié)構(gòu)示意圖,包括碼流接收單元A、碼表提供單元B和解碼單元C;其中碼流接收單元A,用于接收并轉(zhuǎn)發(fā)Exp-Golomb碼流,通過解析圖像頭信息及宏塊信息,確定每一宏塊類型及所述宏塊中圖像塊類型,并將該類型信息發(fā)送給解碼單元C;碼表提供單元B,用于根據(jù)從所述碼流接收單元A接收到的宏塊類型和圖像塊類型,確定當(dāng)前碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;還用于根據(jù)解碼單元C發(fā)送的反饋指令進(jìn)行碼表切換,確定當(dāng)前碼表,用于提供給解碼單元C;所述解碼單元C,用于接收所述碼流接收模塊A發(fā)送的Exp-Golomb碼流和碼表提供單元C的當(dāng)前碼表,解碼當(dāng)前非零圖像塊的Exp-Golomb碼,并根據(jù)解碼結(jié)果向所述碼表提供單元B反饋指令。參見圖7,為本發(fā)明所提供熵解碼裝置的一個(gè)實(shí)施例的結(jié)構(gòu)圖,具體為所述碼表提供單元B包括切換模塊Bl及存儲(chǔ)模塊B2;所述切換模塊Bl用于根據(jù)從所述碼流接收單元A接收到的宏塊類型和圖像塊類型,確定當(dāng)前碼表類型,以及根據(jù)解碼單元C發(fā)送的反饋指令進(jìn)行碼表切換,確定當(dāng)前碼表,并告知解碼單元C當(dāng)前碼表已更新;所述存儲(chǔ)模塊B2用于存儲(chǔ)碼表類型及對(duì)應(yīng)的碼表,并提供給切換模塊Bl。所述碼表類型包括用于解碼intra型宏塊的亮度塊的intra型碼表;用于解碼inter型宏塊的亮度塊或者色度塊的inter型碼表;用于解碼色度塊的色度塊自身的碼表;任一碼表類型對(duì)應(yīng)多個(gè)不同的碼表,包括預(yù)設(shè)的固定碼表。解碼單元C包括碼字截取模塊CI和碼字解碼模塊C2,其中和碼表提供單元B指示的當(dāng)前碼表,根據(jù)Exp-Golomb碼流第一個(gè)非零比特之前的零比特個(gè)數(shù)及當(dāng)前碼表,確定當(dāng)前Exp-Golomb碼階數(shù)并截取當(dāng)前Exp-Golomb碼;還用于接收所述碼字解碼模塊C2發(fā)送的溢出指令分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截?。豢梢钥闯?,碼字截取模塊CI需要設(shè)置緩存(圖中未示),將接收到的Exp-Golomb碼流分批提供給碼字解碼模塊C2進(jìn)行解碼操作。碼字解碼模塊C2,從碼字截取模塊CI接收當(dāng)前Exp-Golomb碼,從碼表提供單元B得知當(dāng)前碼表,并根據(jù)當(dāng)前碼表進(jìn)行當(dāng)前Exp-Golomb碼的解碼,獲取碼字;對(duì)于當(dāng)前碼字為EOB的情況,結(jié)束當(dāng)前圖像塊的解碼,對(duì)于當(dāng)前碼字為非溢出碼的情況,根據(jù)當(dāng)前碼表直接獲取對(duì)應(yīng)的(level,run)系數(shù)數(shù)對(duì),對(duì)于當(dāng)前碼字為溢出碼的情況,指令所述碼字截^^莫塊C1分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截??;還用于向所述碼表提供單元發(fā)送level系數(shù)作為反饋指令。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這些修改或者等同替換亦不能使修改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的4青神和范圍。權(quán)利要求1、一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,其特征在于解碼端讀取當(dāng)前宏塊的輔助信息,確定宏塊類型和圖像塊類型,依次對(duì)所述當(dāng)前宏塊的全部非零圖像塊執(zhí)行以下步驟步驟1、根據(jù)所述宏塊類型以及當(dāng)前圖像塊類型選擇用于解碼當(dāng)前圖像塊的碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;步驟2、依次通過碼表切換,解碼當(dāng)前圖像塊的Exp-Golomb碼,獲得當(dāng)前圖像塊的每一(level,run)系數(shù)數(shù)對(duì)。2、根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟1中根據(jù)所述宏塊類型以及當(dāng)前圖像塊的類型選擇用于解碼當(dāng)前圖像塊的碼表類型具體為當(dāng)前宏塊類型為內(nèi)部型時(shí)且當(dāng)前圖像塊類型為亮度塊時(shí),選擇內(nèi)部型碼表解碼當(dāng)前圖像塊的Exp-Golomb碼;當(dāng)前宏塊類型為外部型且當(dāng)前圖像塊類型為亮度塊時(shí),選擇外部型碼表解碼當(dāng)前圖像塊的Exp-Golomb碼;當(dāng)前圖像塊類型為色度塊時(shí),選擇外部型碼表或者色度塊自身的碼表解碼當(dāng)前圖像塊的Exp-Golomb碼。3、根據(jù)權(quán)利要求1所述的方法,其特征在于所述碼表為2D-VLC結(jié)構(gòu),包括(level,run)數(shù)對(duì)以及EOB與Exp-Golomb碼碼字的映射關(guān)系。4、根據(jù)權(quán)利要求l-3任一所述的方法,其特征在于所述步驟2具體為步驟21、根據(jù)當(dāng)前碼表類型,選擇預(yù)設(shè)的固定碼表作為當(dāng)前碼表;步驟22、根據(jù)所述當(dāng)前碼表,截取碼流中的當(dāng)前Exp-Golomb碼并進(jìn)行解碼操作,獲得碼字;步驟23、判斷所述碼字是否為EOB,是則結(jié)束當(dāng)前圖像塊解碼,否則執(zhí)行步驟24;步驟24、根據(jù)所述碼字獲取(level,run)數(shù)對(duì);步驟25、根據(jù)所述解碼獲得的系數(shù)數(shù)對(duì)的level值,進(jìn)行碼表切換,所述切換后的碼表用于對(duì)碼流中后續(xù)的Exp-Golomb碼進(jìn)行解碼,并將切換后的碼表作為當(dāng)前碼表,重復(fù)執(zhí)行步驟22。5、根據(jù)權(quán)利要求4所述的方法,其特征在于所述步驟21中根據(jù)所述當(dāng)前碼表類型選擇預(yù)設(shè)的固定碼表具體為當(dāng)前碼表類型為外部型時(shí),選擇VLC0—inter碼表;當(dāng)前碼表類型為內(nèi)部型時(shí),選擇VLCO—intra碼表;當(dāng)前碼表類型為色度塊自身碼表時(shí),選擇VLC0_chroma碼表。6、根據(jù)權(quán)利要求4所述的方法,其特征在于所述步驟22具體為步驟221、根據(jù)所述當(dāng)前碼表確定碼流中待解碼的當(dāng)前Exp-Golomb碼階數(shù);步驟222、根據(jù)所述階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字。7、根據(jù)權(quán)利要求6所述的方法,其特征在于所述步驟221具體為對(duì)于非色度塊自身的碼表,判斷當(dāng)前碼表是否為VLCO—Inter,是則確定碼流中待解碼的當(dāng)前Exp-Golomb碼為3階;否則確定碼流中待解碼的當(dāng)前Exp-Golomb碼為2階。8、根據(jù)權(quán)利要求6所述的方法,其特征在于截取碼流中當(dāng)前Exp-Golomb碼的信息比特具體為從碼流當(dāng)前位置起尋找第一個(gè)非零比特,并記錄找到的零比特個(gè)數(shù);根據(jù)所述階數(shù)以及零比特個(gè)數(shù),計(jì)算并截取碼流中當(dāng)前Exp-Golomb碼的信息比特。9、根據(jù)權(quán)利要求4所述的方法,其特征在于所述步驟24包括步驟241、檢查所述碼字是否為溢出碼,不是則執(zhí)行步驟242,是則執(zhí)行步驟243;步驟242、在所述當(dāng)前碼表中,根據(jù)所述碼字查找碼表中的對(duì)應(yīng)項(xiàng),得到一(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束;步驟243、根據(jù)所述當(dāng)前宏塊類型,分別確定level和run的Exp-Golomb碼階數(shù);步驟244、根據(jù)所述level的階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟245、根據(jù)所述碼字確定當(dāng)前的level系數(shù);步驟246、根據(jù)所述run的階數(shù),截取碼流中當(dāng)前Exp-Golomb碼的信息比特,計(jì)算碼字;步驟247、根據(jù)所述碼字確定當(dāng)前的run系數(shù);步驟248、將所述level、run的系數(shù)組合為當(dāng)前的(level,run)系數(shù)數(shù)對(duì),步驟24結(jié)束。10、根據(jù)權(quán)利要求9所述的方法,其特征在于所述步驟243具體為當(dāng)前宏塊為外部型時(shí),確定level系數(shù)的Exp-Golomb碼為2階,run系數(shù)的Exp-Golomb碼為3階;當(dāng)前宏塊為內(nèi)部型時(shí),確定level系數(shù)和run系數(shù)的Exp-Golomb碼皆為3階。11、一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼裝置,其特征在于包括碼流接收單元、碼表提供單元和解碼單元;其中所述碼流接收單元,用于接收并轉(zhuǎn)發(fā)Exp-Golomb碼流,同時(shí)確定并發(fā)送每一宏塊類型及所述宏塊中圖像塊類型;所述碼表提供單元,用于根據(jù)從所述碼流接收單元接收到的宏塊類型和圖像塊類型,確定當(dāng)前碼表類型,其中,所述當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;還用于根據(jù)解碼單元的反饋指令進(jìn)行碼表切換,對(duì)當(dāng)前碼表進(jìn)行確定;所述解碼單元,用于接收所述碼流接收模塊發(fā)送的Exp-Golomb碼流和碼表提供單元的當(dāng)前碼表,解碼當(dāng)前非零圖像塊的Exp-Golomb碼,并根據(jù)解碼結(jié)果向所述碼表提供單元反饋指令。12、根據(jù)權(quán)利要求11所述的熵解碼裝置,其特征在于所述碼表提供單元包括切換模塊及存儲(chǔ)模塊;所述切換模塊用于確定當(dāng)前碼表類型及進(jìn)行碼表切換;所述存儲(chǔ)模塊用于存儲(chǔ)碼表類型及對(duì)應(yīng)的碼表,所述碼表類型包括用于解碼內(nèi)部型宏塊的亮度塊的內(nèi)部型碼表;用于解碼外部型宏塊的亮度塊或者色度塊的外部型碼表;用于解碼色度塊的色度塊自身的碼表;任一碼表類型對(duì)應(yīng)多個(gè)不同的碼表,包括預(yù)設(shè)的固定碼表。13、根據(jù)權(quán)利要求11所述的熵解碼裝置,其特征在于所述解碼單元包括碼字截取^f莫塊和碼字解碼模塊,其中所述碼字截取模塊用于接收所述碼流接收單元發(fā)送的Exp-Golomb碼流和碼表提供單元指示的當(dāng)前碼表,根據(jù)Exp-Golomb碼流第一個(gè)非零比特之前的零比特個(gè)數(shù)以及當(dāng)前碼表所確定的當(dāng)前Exp-Golomb碼階數(shù)來截取當(dāng)前Exp-Golomb碼;還用于接收所述碼字解碼模塊發(fā)送的溢出指令分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截取調(diào)整;所述碼字解碼模塊,用于根據(jù)接收到的當(dāng)前Exp-Golomb碼和當(dāng)前碼表查找當(dāng)前碼字;對(duì)于當(dāng)前碼字為EOB的情況,結(jié)束當(dāng)前圖像塊的解碼,對(duì)于當(dāng)前碼字為非溢出碼的情況,直接獲取對(duì)應(yīng)的(level,run)系數(shù)數(shù)對(duì),對(duì)于當(dāng)前碼字為溢出碼的情況,指令所述碼字截取模塊分別進(jìn)行l(wèi)evel系數(shù)和run系數(shù)的截取調(diào)整;還用于向所述碼表提供單元發(fā)送level系數(shù)作為反饋指令。全文摘要本發(fā)明公開了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼方法,解碼端讀取當(dāng)前宏塊的輔助信息,確定宏塊類型和圖像塊類型,依次對(duì)當(dāng)前宏塊的全部非零圖像塊執(zhí)行根據(jù)宏塊類型以及當(dāng)前圖像塊類型選擇用于解碼當(dāng)前圖像塊的碼表類型,當(dāng)前圖像塊的碼表類型對(duì)應(yīng)多個(gè)不同的碼表;依次通過碼表切換,解碼當(dāng)前圖像塊的Exp-Golomb碼,獲得當(dāng)前圖像塊的每一(level,run)系數(shù)數(shù)對(duì)。本發(fā)明還公開了一種用于視頻預(yù)測(cè)殘差系數(shù)解碼的熵解碼裝置,包括碼流接收單元、碼表提供單元和解碼單元。通過本發(fā)明公開的方法和裝置,充分考慮了視頻塊殘差系數(shù)的上下文環(huán)境和統(tǒng)計(jì)規(guī)律,不影響計(jì)算實(shí)現(xiàn)復(fù)雜度;提高了編解碼效率。文檔編號(hào)H04N7/32GK101175210SQ200610150390公開日2008年5月7日申請(qǐng)日期2006年10月30日優(yōu)先權(quán)日2006年10月30日發(fā)明者巖呂,強(qiáng)王,趙德斌,陳熙霖,馬思偉,文高申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1