一種方向信息語法元素的熵編解碼方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種方向信息語法元素的編碼方法、解碼方法及其對應的裝置。編碼方法包括將方向信息語法元素表示的方向序號二值化為bin串,以及為所述二值化后的bin串的每一個bin,選擇上下文模型并進行熵編碼。解碼方法包括:獲取方向信息的最大數(shù)量,并為每一個bin選擇上下文模型并進行熵解碼得到1個bin串;將所述bin串反二值化,得到所述方向信息語法元素的值。本發(fā)明解決了現(xiàn)有技術(shù)中由于二值化后的bin概率不集中導致的編解碼效率較低的技術(shù)問題,達到了提高編解碼效率的效果。
【專利說明】一種方向信息語法元素的熵編解碼方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種方向信息的熵編碼技術(shù),尤其涉及一種基于上下文的自適應的方 向信息語法元素的二進制算術(shù)編碼方法和裝置。
【背景技術(shù)】
[0002] 以下是對于視頻編碼技術(shù)分層結(jié)構(gòu)的介紹:
[0003] 采用H. 264/AVC以及最新的HEVC等編碼標準時,一幀圖像可以劃分為多個條帶 (slice),對每個條帶分別進行編碼和解碼。編碼條帶產(chǎn)生條帶碼流,條帶碼流中同時包含 了這個條帶的一些編碼參數(shù),如該條帶所引用的參數(shù)集序號等。在H.264/AVC中的分層結(jié) 構(gòu)中,使用了圖像參數(shù)集和序列參數(shù)集兩級參數(shù)集來描述視頻序列的一些參數(shù)。序列參數(shù) 集可以被圖像參數(shù)集引用,圖像參數(shù)集可以被條帶引用,通過此機制,條帶可以根據(jù)其含有 的圖像參數(shù)集序號,找到對應序號的圖像參數(shù)集,進而找到其對應的圖像參數(shù)集對應的序 列參數(shù)集,從圖像參數(shù)集或者序列參數(shù)集中獲取參數(shù)。例如,條帶能夠根據(jù)其含有的圖像 參數(shù)集序號,在對應序號的圖像參數(shù)集中獲取該條帶的幀序號等信息;條帶能夠根據(jù)其對 應的圖像參數(shù)集所含有的序列參數(shù)集序號,在對應序號的序列參數(shù)集中獲取該條帶所使用 的編碼檔次(Profile)和編碼級別(Level)等參數(shù)。在HEVC編碼標準中,新加入了視頻參 數(shù)集的概念,視頻參數(shù)集可以被序列參數(shù)集引用,序列參數(shù)集可以被圖像參數(shù)集引用,圖像 參數(shù)集可以被條帶引用,通過此機制,條帶可以根據(jù)其含有的圖像參數(shù)集序號,逐層向上引 用,從圖像參數(shù)集、序列參數(shù)集或者視頻參數(shù)集中獲取參數(shù)。
[0004] 以下是對于熵編碼的介紹:
[0005] 熵編碼是用在視頻編碼的最后一個階段的一種無損壓縮方法,其輸入是轉(zhuǎn)變?yōu)橐?系列語法元素的視頻數(shù)據(jù)。這些語法元素可以在解碼端被解析出來并進一步重建出視頻序 列。語法元素大致分為兩類:預測方法和預測誤差。熵編碼的作用是將這些語法元素無損 的編碼入碼流中。
[0006] 基于上下文的自適應二進制算術(shù)編碼(CABAC)是一種廣泛用于視頻編碼的熵編 碼方法,首次出現(xiàn)于H. 264/AVC中,現(xiàn)在也在AVS1,AVS2, HEVC等標準中使用,其中包括三個 主要功能單元,二值化、上下文建模和算術(shù)編碼。二值化將語法元素映射為二進制符號,上 下文建模為每個bin估計一個概率值。最后算術(shù)編碼依據(jù)估計的概率值將bin壓縮為bit。
[0007] 二值化的方法有很多,常見的有一元碼,截斷一元碼,指數(shù)哥倫布碼和定長碼等二 值化方法。二值化指的是將每個非二進制的語法元素值映射成一個bin串,bin串由兩種 符號構(gòu)成,一般可以表示成〇和1,所有的bin串都不全相同。bin串中的每個bin都會按 照其寫入碼流的順序擁有一個從〇開始的二進制序列序號。反二值化的過程即為一個查表 的過程,每個bin串都唯一對應一個語法元素值,通過查二值化的表可以找出要解析的bin 串對應的語法元素值。解析bin串的過程是一個尋找一個可以反二值化的bin串的過程, 即如果當前已解析的bin串可以反二值化為一個語法元素,解析bin串完畢;否則,繼續(xù)解 析下一個bin,直到bin串可以反二值化為一個語法元素。
[0008] 下面介紹一下截斷一元碼:截斷一元碼是相對簡單的一種碼字,其主要用于處理 在值域有上限的數(shù)據(jù)。設(shè)值域上限為K,即截斷值為K,待編碼數(shù)據(jù)為S,其中S,K均為非負 整數(shù),且S = 0,1,2…K,共有K+1個取值,如果S < K,則S的二進制化結(jié)果為S個前綴比 特b0,然后以一個bl比特作為結(jié)束,其中b0、bl e {〇,1},且b0關(guān)bl ;如果S = K,則S的 二進制化結(jié)果為K個前綴比特bo。這樣的截斷一元碼稱為截斷值為K的截斷一元碼。例: 對于截斷值為5的截斷一元碼,0至5的編碼結(jié)果為分別為bl,bObl,bObObl,bObObObl, bObObObObl, bObObObObO。
[0009] 截斷值為K的截斷一元碼的反二值化過程為:若bin串中的前K個bin中包含 bl,則反二值化后的值為前K個bin中第一個bl之前的b0的數(shù)量,否則反二值化后的值為 K。根據(jù)此規(guī)則,對于截斷值為5的截斷一元碼,bl,bObl,bObObl,bObObObl,bObObObObl, bObObObObO分別被反二值化為0至5。截斷一元碼需要分析一定的bin才能完成反二值化 的過程,需要分析的bin的數(shù)量至少為1個,至多為K個,當收到的bin的個數(shù)少于需要分 析的bin的個數(shù)的時候,反二值化就無法完成:如對于截斷值為5的截斷一元碼,若只收到 了 3個bin :b0b0b0,則無法根據(jù)反二值化規(guī)則確定反二值化的值,此時可以說這樣的bin 串不可以用截斷值為5的截斷一元碼反二值化。同樣是對于截斷值為5的截斷一元碼,若 收到的3個bin是:bOblbO,則只需要分析前兩個bin就可以得到反二值化結(jié)果1,此時可 以說這樣的bin串可以用被截斷值為5的截斷一元碼反二值化。
[0010] 上下文建模是為了提供比較精確的概率估計而建立一系列概率模型。有相似的概 率分布的bin往往共用相同的上下文模型。上下文模型中存儲兩個值,一個是概率狀態(tài),一 個是最有可能出現(xiàn)的bin的值(MPS),上下文模型的概率狀態(tài)是依據(jù)已編碼bin的值進行更 新過的,每編完一個bin都會對所用的上下文模型中的概率狀態(tài)和MPS造成影響。上下文 模型的選擇主要依據(jù)是每個bin的語法元素類型,在bin串中的位置,色度還是亮度,相鄰 信息等。
[0011] 算術(shù)編碼是基于迭代的區(qū)間劃分的編碼方法。解析bin的過程為:初值為0到1 的區(qū)間根據(jù)bin的概率值,被劃分為兩子區(qū)間。編碼的bit流提供了一個以二進制小數(shù)表示 的偏移值,依據(jù)該偏移值可以從兩個子區(qū)間中選擇一個,該區(qū)間就代表解碼出來的bin的 值。在解析bin之后,區(qū)間的寬度值都被更新為所選的子區(qū)間的寬度,然后不斷重復這個區(qū) 間的劃分過程。編碼bin過程與之相反,區(qū)間根據(jù)bin的概率值,被劃分為兩子區(qū)間,在編 碼的bin所對應出的區(qū)間內(nèi)找一個一個以二進制小數(shù)表示的偏移值作為編碼的bin。在編 碼完一個bin后,區(qū)間的寬度值都被更新為所選的子區(qū)間的寬度,然后不斷重復這個區(qū)間 的劃分過程。算術(shù)編碼的概率估計可以用一個估計得到的概率值進行,一般稱為上下文編 碼,也可以假設(shè)一個等概率值進行,一般稱為旁路編碼,旁路編碼選擇的上下文模型一般稱 為旁路模型。
[0012] 以下是對于鏈碼的介紹:
[0013] 鏈碼是一種描述由輪廓構(gòu)成的二進制圖像的有效手段,其被廣泛應用到基于形狀 的模式識別、形狀分析、輪廓及二進制圖像的壓縮與重建等領(lǐng)域,也可以被應用在視頻編 碼中,用于輪廓表達等。鏈碼的基本思想是識別和存儲輪廓上每一個像素到其近鄰像素 的方向碼,常用的鏈碼有:Freeman鏈碼、頂點鏈碼、角度差Freeman鏈碼、基于頂點鏈碼及 Huffman編碼思想的壓縮頂點鏈碼等。
[0014] 一般而言,鏈碼由起始點和方向信息兩部分構(gòu)成,其中起始點表示該輪廓的起 始位置,而方向信息則表示該輪廓自起始位置開始,輪廓中的下一個像素到其上一個像 素的方向。該方向可以是絕對方向,也可以是相對方向。以經(jīng)典的角度差Freeman鏈碼 為例,該鏈碼包含八個碼值,分別表不八個相對方向,自0-7分別表不0°、45°、-45°、 90°、_90°、135°、_135°、180° ,利用Freeman鏈碼,可以無損表達任意輪廓信息。
[0015] 在圖像和視頻壓縮技術(shù)中,鏈碼的起始點和方向信息都需要被編碼入碼流中,這 給壓縮效率帶來了很大的挑戰(zhàn),尤其是方向信息,當輪廓很長的時候,需要很多方向信息才 可以表達輪廓。一般而言,相對方向的概率更加集中,自然圖像輪廓的相對方向概率分布一 般是以0°為中心的對稱分布,且相對方向越大,出現(xiàn)的概率越小,更容易壓縮。因此,圖像 和視頻壓縮技術(shù)中較多使用相對方向鏈碼。即使這樣,如何更有效的壓縮方向信息,依然是 一個很值得研究的問題。
[0016] 利用上文提到的熵編碼技術(shù)來編碼方向信息是一個提高方向信息壓縮效率的方 法,目前常見方向信息熵編碼中,多使用一元碼,截斷一元碼,指數(shù)哥倫布碼等方法對方向 信息進行二值化,進而選擇相應的上下文模型進行熵編碼。然而,使用以上二值化方法得到 的bin串,其中的很多bin都存在著概率不集中的問題,即這個bin取值為0或者為1的概 率相差不大,而在熵編碼的過程中,bin取值的概率越集中,編碼效率越高,因此以上方法都 非常不利于發(fā)揮熵編碼的特點,達到更好的壓縮效率。
【發(fā)明內(nèi)容】
[0017] 針對現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種方向信息語法元素的熵編解碼方法及其 裝直。
[0018] 本發(fā)明的主要思想是根據(jù)方向信息的特點,為方向信息設(shè)計新的二值化方式,使 二值化之后的每個bin的概率分布最為集中,進而為其選擇合適的上下文模型進行熵編解 碼。
[0019] 本發(fā)明提出的方法和裝置,可以適用于任意N(N = 2K+1,K為大于1的正整數(shù))方 向信息語法元素的編碼和解碼,既可以是相對方向,也可以是絕對方向。
[0020] 本發(fā)明的第一目的在于提供一種方向信息語法元素的熵編碼方法,其包括以下步 驟:
[0021] 步驟1、將方向信息語法元素表示的方向序號S二值化為bin串,其中3=1,2,3··· N,N = 2K+1,K為大于1的正整數(shù),且所述bin串具有以下特征:
[0022] (a)所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為 K的截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶 數(shù),則B部分為cl,若S為奇數(shù),則B部分為cO ;
[0023] (b)當S>1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是 bin串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù), 且 1 < Imax < K+1 ;
[0024] 其中,13〇、131£{〇,1},且13〇尹131,(3〇、(31£{〇,1},且。0尹(31,;1^1〇〇1'(3/2)表不 對S/2進行向下取整;
[0025] 步驟2、為所述二值化后的bin串的每一個bin,選擇上下文模型并進行熵編碼。
[0026] 進一步的,所述步驟2中,為所述bin串中的每一個bin選擇上下文模型的方法 為:若該bin屬于所述A部分,則根據(jù)該bin在所述A部分的位置的不同,選擇不同的上下 文模型進行編碼。
[0027] 進一步的,所述步驟2中,為所述bin串中的每一個bin選擇上下文模型的方法 為:若該bin屬于所述B部分,則使用旁路模型進行編碼。
[0028] 進一步的,表示方向信息的最大數(shù)量N的方法包括以下情況之一:
[0029] (1)N的值為事先約定好的一個正整數(shù);
[0030] (2)在碼流中傳輸N的信息。
[0031] 本發(fā)明的第二目的在于提供一種方向信息語法元素的熵解碼方法,其包括以下步 驟:
[0032] 步驟1、獲取方向信息的最大數(shù)量N,并為每一個bin選擇上下文模型并進行熵解 碼得到1個bin串,N = 2K+1,K為大于1的正整數(shù);
[0033] 步驟2、將所述bin串按照如下規(guī)則反二值化,得到所述方向信息語法元素的值S, 其中 S = 1,2,3...N :
[0034] (a)若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化, 且反二值化的值為〇,則S = 1 ;
[0035] (b)若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化, 且反二值化的值不為〇,則s = 2A+B,其中,A為所述截斷一元碼反二值化后的值,且A為正 整數(shù),若所述bin串的第L+1個bin為cl,則B = 0,否則B = 1,其中L為所述截斷一元碼 的長度,L為正整數(shù);
[0036] (c)若所述bin串的前Imax-1個bin不可以用截斷值為K的截斷一元碼反二值 化,則S = 2C+D,其中,C為則將所述bin串的第Imax個取出后剩余的bin用截斷值為K的 截斷一元碼反二值化后的值,且C為正整數(shù),若所述bin串的第Imax個bin為cl,則D = 0,否則D = 1。
[0037] 其中,b0、bl e {〇, 1},且 b0 尹 bl,c0、cl e {〇, 1},且 c0 尹 cl, Imax 為事先約定 好的正整數(shù),且1 < Imax彡K+l。
[0038] 進一步的,所述步驟1中,所述為每一個bin選擇上下文模型的方法為:若該bin 是所述bin串的截斷值為K的截斷一元碼部分,則根據(jù)該bin在所述截斷一元碼bin串的 位置的不同,選擇不同的上下文模型進行解碼。
[0039] 進一步的,所述步驟1中,所述為每一個bin選擇上下文上下文模型的方法為:若 該bin不是所述bin串的截斷值為K的截斷一元碼部分,則使用旁路模型進行解碼。
[0040] 進一步的,獲取方向信息的最大數(shù)量N的方法包括以下情況之一:
[0041] (1)N的值為事先約定好的一個正整數(shù);
[0042] (2)在碼流中獲取N的信息,由所述N的信息獲取N的值。
[0043] 本發(fā)明的第三目的在于提供一種含有方向信息語法元素的碼流,其包括:
[0044] (1)方向信息語法元素表示的方向序號為S,其中S = 1,2,3…N,N = 2K+1,K為 大于1的正整數(shù),方向信息語法元素二值化之后的bin串具有以下特征:
[0045] (a)所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為 K的截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶 數(shù),則B部分為cl,若S為奇數(shù),則B部分為cO ;
[0046] (b)當S > 1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是 bin串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù), 且 1 < Imax < K+1 ;
[0047] 其中,13〇、131£{〇,1},且13〇尹131,(3〇、(31£{〇,1},且。0尹(31,;1^1〇〇1'(3/2)表不 對S/2進行向下取整;
[0048] (2)所述bin串中的每一個bin均使用經(jīng)過選擇的上下文上下文模型進行熵編碼。
[0049] 進一步的,對于所述的bin串中的每一個bin,若該bin屬于所述A部分,則根據(jù)該 bin在所述A部分的位置的不同,選擇不同的上下文模型進行編碼。。
[0050] 進一步的,對于所述的bin串中的每一個bin,若該bin屬于所述B部分,則使用旁 路模型進行編碼。
[0051] 進一步的,所述碼流中還包括方向信息的最大數(shù)量N的信息。
[0052] 本發(fā)明的第四目的在于提供一種方向信息語法元素的熵編碼裝置,其包括:
[0053] 方向信息語法元素二值化模塊:將方向信息語法元素表示的方向序號S二值化為 bin串,其中S = 1,2,3···Ν,N = 2K+1,且所述bin串具有以下特征:
[0054] (a)所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為 K的截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶 數(shù),則B部分為cl,若S為奇數(shù),則B部分為cO ;
[0055] (b)當S>1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是 bin串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù), 且 1 < Imax < K+1 ;
[0056] 其中,13〇、131£{〇,1},且13〇尹131,(3〇、(31£{〇,1},且。0尹(31,;1^1〇〇1'(3/2)表不 對S/2進行向下取整;
[0057] 模型選擇模塊:對于二值化后的bin串,為每一個bin選擇一個上下文上下文模型 并進行熵編碼;
[0058] 碼流寫入模塊:將熵編碼后的比特串寫入碼流。
[0059] 進一步的,所述模型選擇模塊中為每一個bin選擇上下文模型的實施方式為:若 該bin屬于所述A部分,則根據(jù)該bin在所述A部分的位置的不同,選擇不同的上下文模型 進行編碼。
[0060] 進一步的,所述模型選擇模塊中為每一個bin選擇上下文模型的實施方式為:若 該bin屬于所述B部分,則使用旁路模型進行編碼。
[0061] 進一步的,所述碼流寫入模塊的功能還包括將方向信息的最大數(shù)量N的信息寫入 碼流。
[0062] 本發(fā)明的第五目的在于提供一種方向信息語法元素的熵解碼裝置,其包括:
[0063] 方向信息最大數(shù)量獲取模塊:獲取方向信息的最大數(shù)量N的信息,N = 2K+1,K為 大于1的正整數(shù);
[0064] 模型選擇模塊:根據(jù)根據(jù)方向信息的最大數(shù)量N以及已經(jīng)解碼的bin,為每一個 bin選擇一個上下文模型進行熵解碼,最終形成bin串;
[0065] 反二值化模塊:將所述bin串反二值化,得到所述方向信息語法元素的值S,其中S =1,2, 3…N,且所述反二值化的實施方式為:
[0066] (a)若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化, 且反二值化的值為〇,則S = 1 ;
[0067] (b)若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化, 且反二值化的值不為〇,則S = 2A+B,其中,A為所述截斷一元碼反二值化后的值,且A為正 整數(shù),若所述bin串的第L+1個bin為cl,則B = 0,否則B = 1,其中L為所述截斷一元碼 的長度,L為正整數(shù);
[0068] (c)若所述bin串的前Imax-1個bin不可以用截斷值為K的截斷一元碼反二值 化,則S = 2C+D,其中,C為則將所述bin串的第Imax個取出后剩余的bin用截斷一元碼反 二值化后的值,且C為正整數(shù),若所述bin串的第Imax個bin為cl,則D = 0,否則D = 1。
[0069] 其中,b0、bl e {〇, 1},且 b0 尹 bl,c0、cl e {〇, 1},且 c0 尹 cl, Imax 為事先約定 好的正整數(shù),且1 < Imax彡K+l。
[0070] 進一步的,所述模型選擇模塊中為每一個bin選擇上下文模型的實施方式為:若 該bin是所述bin串的截斷值為K的截斷一元碼部分,則根據(jù)該bin在所述截斷一元碼bin 串的位置的不同,選擇不同的上下文模型進行解碼。
[0071] 進一步的,所述模型選擇模塊中為每一個bin選擇上下文模型的實施方式為:若 該bin不是所述bin串的截斷值為K的截斷一元碼部分,則使用旁路模型進行解碼。
[0072] 進一步的,所述方向信息最大數(shù)量獲取模塊中,獲取方向信息的最大值N的實施 方式包括以下之一:
[0073] (1)將事先約定好的一個正整數(shù)作為N的值;
[0074] (2)在碼流中獲取N的信息,并根據(jù)所述N的信息獲取方向信息的最大數(shù)量N的信 肩、。
[0075] 本發(fā)明的有益效果在于:通過本發(fā)明中的二值化方法,可以使得二值化之后的 bin串中的bin的概率更加集中,通過為每個bin選擇合適的模型,可以達到更好的熵編碼 效率,進而提1?視頻編碼的效率。
【專利附圖】
【附圖說明】
[0076] 圖1是本發(fā)明一種方向信息語法元素的熵編碼裝置實施例的結(jié)構(gòu)框圖;
[0077] 圖2是本發(fā)明另一種方向信息語法元素的熵編碼裝置實施例的結(jié)構(gòu)框圖;
[0078] 圖3是本發(fā)明一種方向信息語法元素的熵解碼裝置實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0079] 本發(fā)明中所述的第S方向表示所有N個方向的中的第S個方向,其中S為小于等 于N的正整數(shù)。也即是說,S是方向的標號,而不是方向表示的角度本身。例如在7方向碼 中,可以用序號1-7分別代表0°、45°、-45°、90°、-90°、135°、-135°,也可以分別代 表0°、-135°、135°、-45°、45°、90°、-90°,序號和角度之間可以建立任意對應關(guān)系, 所述對應關(guān)系可以在編解碼端事先約定好,也可以在碼流中進行傳輸,如在參數(shù)集或者條 帶頭中進行傳輸。
[0080] 為了敘述方便,在本發(fā)明的敘述中,將bin串中的兩種符號分別表示為b0和bl,其 中 bO、ble {0,l},c0、cle {〇,1},且 cO 尹 cl,且 bO 尹 bl。
[0081] 下面根據(jù)附圖和實施例詳細描述本發(fā)明,本發(fā)明的目的和效果將變得更加明顯。
[0082] 此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。
[0083] 實施例1
[0084] 本發(fā)明實施例提供了一種優(yōu)選的N方向信息語法元素的編碼方法,N = 2K+1,K為 大于1的正整數(shù)。
[0085] 本實施例中,Ν舉例為5,且5個方向為相對方向0°、45°、-45°、90°、-90°。 根據(jù)編解碼端事先約定好的方法為5個相對方向指定序號,如可以使第1方向至第5方向 分別為0°、45°、-45°、90°、-90°,也可以使用其他方法指定序號。本實施例中,Κ = 2。
[0086] 本發(fā)明實施例提供的5方向信息語法元素的編碼方法包括以下步驟:
[0087] 步驟1、將方向信息語法表示的方向序號S二值化為bin串,其中S = 1,2, 3…Ν, 且所述bin串具有以下特征:
[0088] (a)所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷一元 碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶數(shù),則B部分 為cl,若S為奇數(shù),則B部分為cO ;
[0089] (b)當S>1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是 bin串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù), 且1 < Imax彡K+1。若S大于N-2且S為偶數(shù),則二值化后的bin串由以下兩部分拼接而 成:floor(S/2)個 bl,2 個 b0 ;
[0090] 其中,13〇、131£{〇,1},且13〇尹131,(3〇、(31£{〇,1},且。0尹(31,;1^1〇〇1'(3/2)表不 對S/2進行向下取整;
[0091] 步驟2、為所述二值化后的bin串的每一個bin,選擇上下文模型并進行熵編碼。
[0092] 經(jīng)過以上步驟,各個方向首先會被二值化為bin串,根據(jù)事先約定的Imax的不同, 二值化的結(jié)果也不同,本實施例中,K = 2,根據(jù)1 < Imax彡K+1的限制,Imax的取值范圍 為{2,3}。下表為Imax為不同數(shù)值的時候,各個方向的二值化結(jié)果,在" {}"內(nèi)的bin為所 述B部分," "外的bin為所述A部分。
[0093]
【權(quán)利要求】
1. 一種方向信息語法元素的熵編碼方法,其特征在于,包括以下步驟: 步驟1、將方向信息語法元素表示的方向序號S二值化為bin串,其中S = 1,2, 3…N, N = 2K+1,K為大于1的正整數(shù),且所述bin串具有以下特征: (a) 所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為K的 截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶數(shù), 則B部分為cl,若S為奇數(shù),則B部分為cO ; (b) 當S > 1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是bin 串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù),且 1 < Imax ^ K+1 ; 其中,13〇、131£{〇,1},且13〇關(guān)131,(3〇、(31£{〇,1},且(;〇關(guān)( ;1,打0〇1'(5/2)表示對5/2 進行向下取整; 步驟2、為所述二值化后的bin串的每一個bin,選擇上下文模型并進行熵編碼。
2. 根據(jù)權(quán)利要求1所述的熵編碼方法,其特征在于,所述步驟2中,為所述bin串中的 每一個bin選擇上下文模型的方法為:若該bin屬于所述A部分,則根據(jù)該bin在所述A部 分的位置的不同,選擇不同的上下文模型進行編碼。
3. 根據(jù)權(quán)利要求1所述的熵編碼方法,其特征在于,所述步驟2中,為所述bin串中的 每一個bin選擇上下文模型的方法為:若該bin屬于所述B部分,則使用旁路模型進行編 碼。
4. 根據(jù)權(quán)利要求1所述的熵編碼方法,其特征在于,表示方向信息的最大數(shù)量N的方法 包括以下情況之一: (1) N的值為事先約定好的一個正整數(shù); (2) 在碼流中傳輸N的信息。
5. -種方向信息語法元素的熵解碼方法,其特征在于,包括以下步驟: 步驟1、獲取方向信息的最大數(shù)量N,并為每一個bin選擇上下文模型并進行熵解碼得 至lj 1個bin串,N = 2K+1,K為大于1的正整數(shù); 步驟2、將所述bin串按照如下規(guī)則反二值化,得到所述方向信息語法元素的值S,其中 S = 1,2,3-N : (a) 若所述bin串的前Imax-Ι個bin可以用截斷值為K的截斷一元碼反二值化,且反 二值化的值為〇,則S = 1 ; (b) 若所述bin串的前Imax-Ι個bin可以用截斷值為K的截斷一元碼反二值化,且反 二值化的值不為〇,則S = 2A+B,其中,A為所述截斷一元碼反二值化后的值,且A為正整數(shù), 若所述bin串的第L+1個bin為cl,則B = 0,否則B = 1,其中L為所述截斷一元碼的長 度,L為正整數(shù); (c) 若所述bin串的前Imax-Ι個bin不可以用截斷值為K的截斷一元碼反二值化,則 S = 2C+D,其中,C為則將所述bin串的第Imax個取出后剩余的bin用截斷值為K的截斷 一元碼反二值化后的值,且C為正整數(shù),若所述bin串的第Imax個bin為cl,則D = 0,否 則D = 1。 其中,13〇、131£{〇,1},且13〇尹131,(3〇、(31£{〇,1},且(3〇尹(31,11]^1為事先約定好的 正整數(shù),且1 < Imax彡K+1。
6. 根據(jù)權(quán)利要求5所述的熵解碼方法,其特征在于,所述步驟1中,所述為每一個bin 選擇上下文模型的方法為:若該bin是所述bin串的截斷值為K的截斷一元碼部分,則根據(jù) 該bin在所述截斷一元碼bin串的位置的不同,選擇不同的上下文模型進行解碼。
7. 根據(jù)權(quán)利要求5所述的熵解碼方法,其特征在于,所述步驟1中,所述為每一個bin 選擇上下文上下文模型的方法為:若該bin不是所述bin串的截斷值為K的截斷一元碼部 分,則使用旁路模型進行解碼。
8. 根據(jù)權(quán)利要求5所述的熵解碼方法,其特征在于,獲取方向信息的最大數(shù)量N的方法 包括以下情況之一: (1) N的值為事先約定好的一個正整數(shù); (2) 在碼流中獲取N的信息,由所述N的信息獲取N的值。
9. 一種含有方向信息語法元素的碼流,其特征在于: (1) 方向信息語法元素表示的方向序號為S,其中S = 1,2,3···Ν,Ν = 2K+1,K為大于1 的正整數(shù),方向信息語法元素二值化之后的bin串具有以下特征: (a) 所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為K的 截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶數(shù), 則B部分為cl,若S為奇數(shù),則B部分為cO ; (b) 當S > 1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是bin 串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù),且 1 < Imax ^ K+1 ; 其中,bO、bl e {〇,1},且 bO 關(guān) bl,cO、cl e {〇,1},且 c〇 關(guān) cl,fl〇〇r(S/2)表示對 S/2 進行向下取整; (2) 所述bin串中的每一個bin均使用經(jīng)過選擇的上下文上下文模型進行熵編碼。
10. 根據(jù)權(quán)利要求9所述的碼流,其特征在于,對于所述的bin串中的每一個bin,若該 bin屬于所述A部分,則根據(jù)該bin在所述A部分的位置的不同,選擇不同的上下文模型進 行編碼。。
11. 根據(jù)權(quán)利要求9所述的碼流,其特征在于,對于所述的bin串中的每一個bin,若該 bin屬于所述B部分,則使用旁路模型進行編碼。
12. 根據(jù)權(quán)利要求9所述的碼流,其特征在于,所述碼流中還包括方向信息的最大數(shù)量 N的/[目息。
13. -種方向信息語法元素的熵編碼裝置,其特征在于,它包括: 方向信息語法兀素二值化模塊:將方向信息語法兀素表不的方向序號S二值化為bin 串,其中S = 1,2,3···Ν,Ν = 2K+1,且所述bin串具有以下特征: (a) 所述bin串由A和B兩部分組成,其中A部分為值為floor (S/2)的截斷值為K的 截斷一元碼,若S = 1,則B部分不存在,否則,B部分為長度為1的bin串,且若S為偶數(shù), 則B部分為cl,若S為奇數(shù),則B部分為cO ; (b) 當S > 1時,若L彡Imax,則B部分是bin串的第Imax個bin,否則B部分是bin 串的第L+1個bin,其中L為A部分的長度且L為正整數(shù),Imax為事先約定好的正整數(shù),且 1 < Imax ^ K+1 ; 其中,b0、bl e {〇,1},且 b0 關(guān) bl,c0、cl e {〇,1},且 c〇 關(guān) cl,fl〇〇r(S/2)表示對 S/2 進行向下取整; 模型選擇模塊:對于二值化后的bin串,為每一個bin選擇一個上下文上下文模型并進 行熵編碼; 碼流寫入模塊:將熵編碼后的比特串寫入碼流。
14. 根據(jù)權(quán)利要求13所述的熵編碼裝置,其特征在于,所述模型選擇模塊中為每一個 bin選擇上下文模型的實施方式為:若該bin屬于所述A部分,則根據(jù)該bin在所述A部分 的位置的不同,選擇不同的上下文模型進行編碼。
15. 根據(jù)權(quán)利要求13所述的熵編碼裝置,其特征在于,所述模型選擇模塊中為每一個 bin選擇上下文模型的實施方式為:若該bin屬于所述B部分,則使用旁路模型進行編碼。
16. 根據(jù)權(quán)利要求13所述的熵編碼裝置,其特征在于,所述碼流寫入模塊的功能還包 括將方向信息的最大數(shù)量N的信息寫入碼流。
17. -種方向信息語法元素的熵解碼裝置,其特征在于,它包括: 方向信息最大數(shù)量獲取模塊:獲取方向信息的最大數(shù)量N的信息,N = 2K+1,K為大于 1的正整數(shù); 模型選擇模塊:根據(jù)根據(jù)方向信息的最大數(shù)量N以及已經(jīng)解碼的bin,為每一個bin選 擇一個上下文模型進行熵解碼,最終形成bin串; 反二值化模塊:將所述bin串反二值化,得到所述方向信息語法元素的值S,其中S = 1,2,3…N,且所述反二值化的實施方式為: (a) 若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化,且反 二值化的值為〇,則S = 1 ; (b) 若所述bin串的前Imax-1個bin可以用截斷值為K的截斷一元碼反二值化,且反 二值化的值不為〇,則S = 2A+B,其中,A為所述截斷一元碼反二值化后的值,且A為正整數(shù), 若所述bin串的第L+1個bin為cl,則B = 0,否則B = 1,其中L為所述截斷一元碼的長 度,L為正整數(shù); (c) 若所述bin串的前Imax-1個bin不可以用截斷值為K的截斷一元碼反二值化,則 S = 2C+D,其中,C為則將所述bin串的第Imax個取出后剩余的bin用截斷一元碼反二值 化后的值,且C為正整數(shù),若所述bin串的第Imax個bin為cl,則D = 0,否則D = 1。 其中,b0、bl e {〇, 1},且b0尹bl,c0、cl e {〇, 1},且c0尹cl, Imax為事先約定好的 正整數(shù),且1 < Imax彡K+l。
18. 根據(jù)權(quán)利要求17所述的熵解碼裝置,其特征在于,所述模型選擇模塊中為每一個 bin選擇上下文模型的實施方式為:若該bin是所述bin串的截斷值為Κ的截斷一元碼部 分,則根據(jù)該bin在所述截斷一元碼bin串的位置的不同,選擇不同的上下文模型進行解 碼。
19. 根據(jù)權(quán)利要求17所述的熵解碼裝置,其特征在于,所述模型選擇模塊中為每一個 bin選擇上下文模型的實施方式為:若該bin不是所述bin串的截斷值為K的截斷一元碼 部分,則使用旁路模型進行解碼。
20. 根據(jù)權(quán)利要求17所述的熵編碼裝置,其特征在于,所述方向信息最大數(shù)量獲取模 塊中,獲取方向信息的最大值N的實施方式包括以下之一: (1)將事先約定好的一個正整數(shù)作為N的值;
【文檔編號】H04N19/13GK104104949SQ201310130271
【公開日】2014年10月15日 申請日期:2013年4月12日 優(yōu)先權(quán)日:2013年4月12日
【發(fā)明者】虞露, 呂鵬 申請人:浙江大學