專利名稱:基于cabac的編碼方法和設(shè)備及解碼方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
與本發(fā)明一致的方法和設(shè)備涉及基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC),更具體地講,涉及使用改善的上下文模型選擇以獲得高壓縮率的基于CABAC的解碼或編碼。
背景技術(shù):
CABAC是用于壓縮運(yùn)動(dòng)圖像的算法。CABAC包括基于先前輸入的數(shù)據(jù)選擇上下文,執(zhí)行二進(jìn)制算術(shù)編碼,以及更新統(tǒng)計(jì)信息。上下文是收集由先前已出現(xiàn)的數(shù)據(jù)符號(hào)定義的統(tǒng)計(jì)信息的環(huán)境,并且用于出現(xiàn)數(shù)據(jù)符號(hào)的出現(xiàn)概率的精確預(yù)測(cè)。
CABAC的壓縮率取決于對(duì)上下文建模的方法。如果上下文模型的小概率符號(hào)(LPS)的出現(xiàn)概率變低,則有利于具有高壓縮。然而,雖然當(dāng)輸入的符號(hào)具有在上下文模型中預(yù)測(cè)的值時(shí)編碼效率較高,但是當(dāng)輸入的符號(hào)具有在上下文模型中不可預(yù)測(cè)的值時(shí),采用傳統(tǒng)技術(shù)存在由編碼的低壓縮率引起的低效率的問題。
發(fā)明內(nèi)容
本發(fā)明提供了一種通過根據(jù)輸入的符號(hào)選擇上下文模型而具有改善的壓縮率的基于CABAC的編碼方法和設(shè)備,以及一種存儲(chǔ)有執(zhí)行所述方法的計(jì)算機(jī)程序的計(jì)算機(jī)可讀記錄介質(zhì)。
本發(fā)明還提供了一種可對(duì)通過基于CABAC的編碼而編碼的符號(hào)解碼的基于CABAC的解碼方法和設(shè)備,以及存儲(chǔ)有執(zhí)行所述方法的計(jì)算機(jī)程序的計(jì)算機(jī)可讀記錄介質(zhì)。
根據(jù)本發(fā)明的一方面,提供了一種基于CABAC的編碼方法,所述方法包括基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)(MPS)值不同的MPS值的第二上下文模型;在當(dāng)前輸入的符號(hào)具有與第一上下文模型的MPS值相同的值時(shí),或者在不能選擇第二上下文模型時(shí),使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和在當(dāng)前輸入的符號(hào)具有與第一上下文模型的MPS值不同的值并且能夠選擇第二上下文模型時(shí),使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
根據(jù)本發(fā)明的另一方面,提供了一種基于CABAC的編碼設(shè)備,所述設(shè)備包括上下文模型選擇單元,基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的MPS值不同的MPS值的第二上下文模型;第一編碼單元,在當(dāng)前輸入的符號(hào)具有與第一上下文模型的MPS值相同的值時(shí),或者在不能選擇第二上下文模型時(shí),使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和第二編碼單元,在當(dāng)前輸入的符號(hào)具有與第一上下文模型的MPS值不同的值并且能夠選擇第二上下文模型時(shí),使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
根據(jù)本發(fā)明的另一方面,提供了一種基于CABAC的解碼方法,所述方法包括基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的MPS值不同的MPS值的第二上下文模型;通過使用第一上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第一解碼的符號(hào);當(dāng)?shù)谝唤獯a的符號(hào)具有與第一上下文模型的MPS值相同的值時(shí),將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和當(dāng)?shù)谝唤獯a的符號(hào)具有與第一上下文模型的MPS值不同的值時(shí),通過使用第二上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第二解碼的符號(hào)。
根據(jù)本發(fā)明的另一方面,提供了一種基于CABAC的解碼設(shè)備,所述設(shè)備包括上下文模型選擇單元,基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)(MPS)值不同的MPS值的第二上下文模型;第一解碼單元,通過使用第一上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第一解碼的符號(hào);第一結(jié)果值選擇單元,當(dāng)?shù)谝唤獯a的符號(hào)具有與第一上下文模型的MPS值相同的值時(shí),將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和第二解碼單元,當(dāng)?shù)谝唤獯a的符號(hào)具有與第一上下文模型的MPS值不同的值時(shí),通過使用第二上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第二解碼的符號(hào)。
通過參照附圖對(duì)本發(fā)明的示例性實(shí)施例進(jìn)行的詳細(xì)描述,本發(fā)明的以上和其他方面將會(huì)變得更加清楚,其中圖1是根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼方法的流程圖;圖2是根據(jù)本發(fā)明另一示例性實(shí)施例的基于CABAC的解碼方法的流程圖;圖3是根據(jù)本發(fā)明另一示例性實(shí)施例的基于CABAC的編碼設(shè)備的框圖;圖4示出了根據(jù)本發(fā)明示例性實(shí)施例的二進(jìn)制算術(shù)編碼算法;圖5A到圖5C是示出H.264中宏塊的運(yùn)動(dòng)向量差值(MVD)的示圖;圖6A到圖6C是示出在對(duì)H.264中宏塊的MVD編碼中的上下文模型的示例的示圖;圖7是示出根據(jù)LPS值的出現(xiàn)概率的壓縮效率的理想曲線圖;圖8是比較傳統(tǒng)的上下文模型和根據(jù)本發(fā)明示例性實(shí)施例的上下文模型的示圖;和圖9是根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼方法的示圖。
具體實(shí)施例方式
現(xiàn)在將參照附圖對(duì)根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼或基于CABAC的解碼方法和設(shè)備進(jìn)行詳細(xì)的描述。
圖1是根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼方法的流程圖。首先,將xk輸入為當(dāng)前的輸入符號(hào)(S100)。然后,基于函數(shù)F(z)的結(jié)果選擇第一上下文模型Cm,并基于大概率符號(hào)(MPS)值和作為小概率符號(hào)(LPS)的出現(xiàn)概率的P_lps值選擇第二上下文模型Ca(S110)。這里,函數(shù)F(z)是用于基于對(duì)先前輸入的符號(hào)的統(tǒng)計(jì)來確定上下文模型的建模函數(shù)。
現(xiàn)在將描述選擇第二上下文模型Ca的方法。首先Ca和Cm應(yīng)該具有不同的MPS值。例如,當(dāng)Cm的MPS值是0時(shí),具有MPS值1的一個(gè)上下文模型被選擇為Ca。當(dāng)存在多個(gè)具有不同的MPS值的上下文模型時(shí),選擇具有P_lps的最小值的上下文模型。當(dāng)存在多個(gè)具有P_lps的最小值的上下文模型時(shí),可選擇在上下文模型中按順序首先出現(xiàn)的上下文模型。上下文模型的順序基于指示上下文的上下文索引值來確定。
當(dāng)符號(hào)xk具有與Cm的MPS值相同的值時(shí),或者當(dāng)不能選擇第二上下文模型Ca時(shí)(S120的“是”),根據(jù)傳統(tǒng)方法使用Cm對(duì)輸入的符號(hào)編碼(S140)。
不能選擇第二上下文模型Ca的情況的示例是,所有可選擇的上下文模型都具有與Cm的MPS值相同的MPS值。
當(dāng)輸入的符號(hào)xk具有與第一上下文模型Cm的MPS值不同的值,并且能夠選擇第二上下文模型Ca時(shí)(S120的“否”),如果使用Cm對(duì)輸入的符號(hào)編碼,則將降低壓縮效率。因此,使用Ca對(duì)輸入的符號(hào)編碼(S130)。
如上所述,當(dāng)輸入的符號(hào)值與Cm的MPS值相同時(shí)使用Cm編碼,而當(dāng)輸入的符號(hào)值與Cm的MPS值不同時(shí)使用Ca編碼。因此,通過使用該方法,可改善壓縮效率。
然而,根據(jù)所述方法,在解碼處理中哪個(gè)上下文模型應(yīng)該被用于解碼是不確定的。在本發(fā)明的實(shí)施例中,這種情況被稱為模糊現(xiàn)象的發(fā)生。
為了防止模糊現(xiàn)象的發(fā)生,在本發(fā)明示例性實(shí)施例中,通過在CABAC編碼單元中執(zhí)行測(cè)試解碼來檢查模糊現(xiàn)象的發(fā)生,并且當(dāng)在通過S130的編碼步驟的編碼的值中確定模糊現(xiàn)象的發(fā)生時(shí),通過使用第一上下文模型Cm對(duì)輸入的符號(hào)編碼來去除模糊現(xiàn)象。
為了檢查模糊現(xiàn)象的發(fā)生,首先,通過使用第一上下文模型Cm對(duì)編碼的輸入符號(hào)解碼,獲得xk′(S150)。
當(dāng)使用Ca對(duì)編碼的輸入符號(hào)編碼,并且xk′具有與Cm的MPS值相同的值時(shí)(S160的“是”),存在模糊現(xiàn)象的發(fā)生。換句話說,當(dāng)在解碼處理中對(duì)編碼的輸入符號(hào)解碼時(shí),獲得Cm的MPS值,從而存在將輸入的符號(hào)識(shí)別為已經(jīng)使用Cm編碼的可能性。因此,盡管降低了壓縮效率,仍應(yīng)該使用Cm對(duì)輸入的符號(hào)重新編碼(S180)。
當(dāng)使用Cm解碼的值與Cm的MPS值不同時(shí)(S160中的“否”),則沒有發(fā)生模糊現(xiàn)象。因此,執(zhí)行對(duì)下一輸入的符號(hào)Xk+1編碼(S170)。
圖2是根據(jù)本發(fā)明另一示例性實(shí)施例的基于CABAC的解碼方法的流程圖。
最初,根據(jù)建模函數(shù)F(z)基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型Cm,并選擇具有與Cm的MPS值不同的MPS值的第二上下文模型Ca(S200)。這時(shí),當(dāng)存在多個(gè)具有與Cm的MPS值不同的MPS值的上下文模型時(shí),選擇具有P_lps的最小值的上下文模型。
接下來,使用第一上下文模型Cm對(duì)輸入的符號(hào)解碼(S210)。以下,在步驟S210中解碼的符號(hào)被稱為第一解碼符號(hào)。
將第一解碼符號(hào)與Cm的MPS值進(jìn)行比較(S220)。當(dāng)?shù)谝唤獯a符號(hào)具有與Cm的MPS值相同的值時(shí),應(yīng)該使用第一上下文模型Cm對(duì)輸入的符號(hào)編碼。因此,將第一解碼符號(hào)選擇為解碼的結(jié)果值,并執(zhí)行對(duì)下一符號(hào)的解碼(S270)。
當(dāng)?shù)谝唤獯a符號(hào)具有與Cm的MPS值不同的值時(shí),使用第二上下文模型Ca對(duì)編碼的輸入符號(hào)解碼。以下,步驟S230中解碼的值被稱為第二解碼符號(hào)。
將第二解碼符號(hào)與Ca的MPS值進(jìn)行比較(S240)。當(dāng)?shù)诙獯a符號(hào)具有與第二上下文模型Ca的MPS值不同的值時(shí),應(yīng)該已經(jīng)使用第一上下文模型Cm對(duì)輸入的符號(hào)解碼。因此,將作為使用Cm解碼的值的第一解碼符號(hào)選擇為解碼的結(jié)果值,并執(zhí)行對(duì)下一輸入符號(hào)的解碼(S270)。
當(dāng)?shù)诙獯a符號(hào)具有與Ca的MPS值相同的值時(shí),使用Ca對(duì)第二解碼符號(hào)重新編碼,并使用Cm對(duì)重新編碼的第二解碼符號(hào)解碼(S250)。以下,步驟S250中解碼的值被稱為第三解碼符號(hào)。
將第三解碼符號(hào)與Ca的MPS值進(jìn)行比較(S260)。當(dāng)?shù)谌獯a符號(hào)具有與Ca的MPS值相同的值時(shí),應(yīng)該已經(jīng)使用第二上下文模型Ca對(duì)輸入的符號(hào)編碼。因此,將第二解碼符號(hào)選擇為解碼的結(jié)果值,并執(zhí)行對(duì)下一輸入符號(hào)的解碼(S280)。
當(dāng)?shù)谌獯a符號(hào)具有與Ca的MPS值不同的值時(shí),應(yīng)該已經(jīng)使用第一上下文模型Cm對(duì)輸入的符號(hào)解碼。因此,將第一解碼符號(hào)選擇為解碼的結(jié)果值,并執(zhí)行對(duì)下一輸入符號(hào)的解碼(S270)。
根據(jù)圖1和圖2分別示出的基于CABAC的編碼和解碼方法,可在沒有模糊現(xiàn)象的發(fā)生的情況下改善壓縮效率。
以下,將描述本發(fā)明示例性實(shí)施例的原理以及如何防止模糊現(xiàn)象的發(fā)生。主要為了便于描述,將描述使用H.264標(biāo)準(zhǔn)的方法的示例性實(shí)施例。
在二進(jìn)制算術(shù)編碼(BAC)中,執(zhí)行二進(jìn)制輸入符號(hào)的算術(shù)編碼(AC)。AC是具有比眾所周知的霍夫曼編碼更高效率的熵編碼的方法。在使用p比特的p比特BAC中,將數(shù)字的初始區(qū)間設(shè)置為[0,2p),并且基于輸入符號(hào)的概率將區(qū)間分別劃分為輸入的符號(hào)的多個(gè)子區(qū)間。使用表示區(qū)間的起始值的下界L和表示區(qū)間長度的范圍R來表示區(qū)間。在初始區(qū)間的情況下,L為0,R為2p-1。輸入的符號(hào)被劃分為作為具有最高出現(xiàn)概率的符號(hào)的MPS和作為具有最低出現(xiàn)概率的符號(hào)的LPS。將MPS和LPS的值分別表示為valMPS和valLPS。
在BAC中,管理輸入的符號(hào)的概率以用于選擇區(qū)間。為了計(jì)算MPS的出現(xiàn)概率P_mps和LPS的出現(xiàn)概率P_lps,使用先前輸入的符號(hào)的統(tǒng)計(jì)。例如,當(dāng)二進(jìn)制0輸入出現(xiàn)20次且二進(jìn)制1輸入出現(xiàn)80次時(shí),MPS的值是1并且P_lps是0.2。在完成新的符號(hào)的編碼之后,調(diào)整出現(xiàn)概率的值以反映用于下一編碼的新的符號(hào)的出現(xiàn)。對(duì)于第一輸入的符號(hào),沒有先前輸入的符號(hào)的統(tǒng)計(jì),因此使用預(yù)定的初始值。通常,將LPS的出現(xiàn)概率P_lps設(shè)置為0.5。在H.264中,通過預(yù)先分析運(yùn)動(dòng)圖像數(shù)據(jù)獲得統(tǒng)計(jì),并基于該統(tǒng)計(jì)設(shè)置初始值。只管理P_lps,這是因?yàn)?,可通過使用等式P_mps=1-P_lps,使用已知的LPS的出現(xiàn)概率來簡單地計(jì)算MPS的出現(xiàn)概率。
圖7是示出根據(jù)LPS值的出現(xiàn)概率的壓縮效率的理想曲線圖。在理想情況下,根據(jù)以下的等式1來計(jì)算表示1比特所需的比特?cái)?shù)量,圖7是示出根據(jù)P_lps的值的最小比特?cái)?shù)量的曲線圖。
等式1最小比特?cái)?shù)量=P_lps*log2(1/P_lps)+P_mps*log2(1/P_mps)根據(jù)等式1,在BAC中,壓縮效率隨著P_lps值的減小而增大,這是因?yàn)?,在具有相同長度的數(shù)據(jù)的熵編碼中,壓縮效率隨著相同符號(hào)的比率的增大而增大。例如,串“1111011110”比串“1010100110”被更大地壓縮,盡管數(shù)據(jù)串具有10比特的相同長度。在CABAC中,將二進(jìn)制輸入流劃分為具有相同值的符號(hào)組,以增大壓縮效率。因?yàn)樵诮y(tǒng)計(jì)上,當(dāng)前輸入的符號(hào)與先前出現(xiàn)的輸入符號(hào)的值具有較強(qiáng)的關(guān)系,所以根據(jù)先前出現(xiàn)的符號(hào)的值來劃分組。這里,將每個(gè)組稱為上下文,并對(duì)每個(gè)上下文管理P_lps和valMPS。
先前出現(xiàn)的符號(hào)的值是上下文確定因素,因此被稱為上下文參數(shù)。作為上下文的示例,當(dāng)對(duì)1010101010壓縮產(chǎn)生兩個(gè)上下文時(shí),可產(chǎn)生包括奇數(shù)比特的上下文和包括偶數(shù)比特的上下文。在這種情況下,因?yàn)樗械钠鏀?shù)比特是1,而所有的偶數(shù)比特是0,所以獲得高的壓縮效率。
圖3是根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼設(shè)備的框圖,該框圖示出所述設(shè)備的結(jié)構(gòu)。在CABAC中,通過對(duì)每個(gè)二進(jìn)制輸入值重復(fù)以下步驟來執(zhí)行壓縮。
當(dāng)輸入的數(shù)據(jù)10不是二進(jìn)制時(shí),通過使用適當(dāng)?shù)姆椒▽⑤斎氲臄?shù)據(jù)10轉(zhuǎn)換為二進(jìn)制碼(300)。接下來,為輸入的數(shù)據(jù)10的每個(gè)比特選擇上下文(310)通過使用從選擇的上下文和輸入的比特檢索的P_lps和valMPS來執(zhí)行BAC(320)。
最后,通過反映當(dāng)前編碼的比特來更新選擇的上下文的概率值(330)。
圖4是根據(jù)本發(fā)明的二進(jìn)制算術(shù)編碼算法的示例性實(shí)施例。
當(dāng)前的區(qū)間[L,L+R)、一比特的輸入值以及具有valMPS和P_lps值的輸入值的上下文被用作BAC的輸入?;谳斎氲谋忍刂凳荕PS還是LPS,將所述區(qū)間分別改變?yōu)閇L,L+R*R*P_mps)和[L+R*P_mps,L+R)。
執(zhí)行重新正規(guī)化以防止在重復(fù)地改變區(qū)間之后不能進(jìn)一步劃分區(qū)間的情況。重新正規(guī)化是擴(kuò)展當(dāng)前區(qū)間并將擴(kuò)展所需的信息存儲(chǔ)在存儲(chǔ)器中的處理。
在完成編碼之后,更新選擇的上下文的P_lps和valMPS以反映當(dāng)前編碼的比特?;谝呀?jīng)輸入的符號(hào)的頻率來設(shè)置這些P_lps和valMPS的值。例如,當(dāng)輸入的符號(hào)中二進(jìn)制0被輸入20次且二進(jìn)制1被輸入80次時(shí),valMPS是1,P_lps是0.2。
對(duì)于第一輸入的符號(hào),沒有先前輸入的符號(hào)的統(tǒng)計(jì),因此使用預(yù)定的初始值。通常,將P_lps設(shè)置為0.5。在H.264標(biāo)準(zhǔn)中,通過預(yù)先分析運(yùn)動(dòng)圖像數(shù)據(jù)獲得統(tǒng)計(jì),并基于從所述分析獲得的統(tǒng)計(jì)設(shè)置初始值。可通過除了計(jì)算輸入的符號(hào)的出現(xiàn)以外的不同方法來計(jì)算概率。
在BAC中,因?yàn)楫?dāng)相同的符號(hào)出現(xiàn)多次時(shí),在具有相同長度的數(shù)據(jù)的壓縮中壓縮效率增大,所以提供了將具有相同值的輸入的符號(hào)劃分為一組(即,上下文)的方法。
圖5A到圖5C是H.264中宏塊的運(yùn)動(dòng)向量差值(mvd)的示圖,圖6A到圖6C是對(duì)H.264中宏塊的mvd的二進(jìn)制值的第一比特編碼的上下文模型的示例。參照?qǐng)D5A到圖5C和圖6A到圖6C,將描述在對(duì)H.264中mvd的二進(jìn)制的第一比特編碼中使用的分組的方法。
參照?qǐng)D5A,如果宏塊B的mvd是當(dāng)前將被編碼的,則上下文基于左宏塊A和上宏塊C的mvd被確定。上下文參數(shù)z根據(jù)宏塊A和B的mvd值被確定。如果F(z)被確定為從上下文參數(shù)z到上下文集合C的映射,則F(z)如以下的等式2被計(jì)算,在本示例中,上下文集合C為(0,l,2)。
等式2F(0,0)=0,F(xiàn)(0,1)=0, F(0,2)=0, F(0,3)=1F(1,0)=0,F(xiàn)(1,1)=0, F(1,2)=1, F(1,3)=l解碼器和編碼器共享初始的R、確定上下文的映射F、上下文參數(shù)的值不存在時(shí)使用的上下文、以及每個(gè)上下文的初始的P_lps和valMPS。當(dāng)輸入編碼的數(shù)據(jù)時(shí),檢索到P比特的編碼的數(shù)據(jù)以設(shè)置為值L,并使用P_lps、valMPS、L和R執(zhí)行AC解碼。在AC解碼處理中,重新調(diào)整L和R。在完成解碼之后,更新選擇的上下文的P_lps和valMPS以反映解碼的符號(hào)。
在上下文模型中,通過分析輸入的比特流的模式來執(zhí)行具有相同值的比特的分組。
這時(shí),因?yàn)榻y(tǒng)計(jì)上特定情況下的上下文與先前的值相關(guān),所以使用先前的值確定上下文。在圖6A到圖6C所示的示例中,從塊A和C的值確定當(dāng)前將被編碼的塊B的mvd值的第一比特的上下文。如圖6B所示,當(dāng)塊A和C的mvd值是2時(shí),將塊B的mvd值的第一比特的上下文設(shè)置為1。在這種情況下,因?yàn)榉?hào)的值大約為1的概率較高,所以可使用上下文1來增大壓縮效率。這是因?yàn)?,壓縮效率隨著具有相同值的符號(hào)的出現(xiàn)的增加而增大。
然而,如果如圖5C,塊B的mvd是0,則因?yàn)閙vd的第一比特的值不是1,所以根據(jù)壓縮,選擇不同的上下文是有利的。
根據(jù)本發(fā)明的示例性實(shí)施例,提供了一種通過基于情況選擇上下文來改善具有不期望模式的輸入的編碼效率的方法。
圖8是示出用于比較的傳統(tǒng)的上下文模型和根據(jù)本發(fā)明示例性實(shí)施例的上下文模型的示圖。參照?qǐng)D8,上下文模型使用剛好在當(dāng)前符號(hào)之前出現(xiàn)的符號(hào)的值,在這種情況下,上下文0 ctx0和上下文1 ctxl的P_lps分別是1/5和1/4?;?和1相繼出現(xiàn)的假設(shè)來創(chuàng)建所述模型。然而,在圖8的示例中,輸入的x6和x8不同于預(yù)測(cè)的模式被輸入。在這種情況下,x6和x8的上下文應(yīng)該被改變?yōu)椴煌纳舷挛囊栽龃缶幋a的效率。
在根據(jù)本發(fā)明實(shí)施例的基于CABAC的解碼方法中,提供了一種能夠保持P_lps值為低值的建模方法,當(dāng)選擇上下文模型時(shí),所述建模方法將作為包括在每個(gè)上下文模型中的提示的P_lps和valMPS的值使用為上下文參數(shù)。Ca是變?yōu)檫x擇的候選以增大編碼的效率的上下文模型。
在根據(jù)本發(fā)明實(shí)施例的基于CABAC的編碼方法中,在當(dāng)前輸入與選擇的第一上下文的MPS相同時(shí),使用選擇的第一上下文模型來執(zhí)行編碼,并且在當(dāng)前輸入與選擇的第一上下文的MPS不同時(shí),使用第二上下文模型來執(zhí)行編碼,在第二上下文模型中MPS值是當(dāng)前輸入的值。
在圖8所示的示例中,對(duì)于輸入的符號(hào)x1到x5、x7和x9,使用先前已經(jīng)選擇的第一上下文模型Cm,對(duì)于輸入的符號(hào)x6和x8,當(dāng)在解碼中沒有出現(xiàn)模糊現(xiàn)象的發(fā)生時(shí),使用增大編碼效率的不同的上下文模型。因此,使用valMPS與輸入的符號(hào)值相同且P_lps具有最低值的上下文模型。當(dāng)沒有匹配這種條件的上下文模型時(shí),使用先前已經(jīng)選擇的上下文模型,并且當(dāng)存在n個(gè)匹配條件的上下文模型時(shí),選擇在上下文模型中按順序首先出現(xiàn)的上下文模型。因?yàn)槭褂镁哂休斎氲姆?hào)的出現(xiàn)概率高的上下文模型來對(duì)輸入的符號(hào)編碼,所以使用新選擇的上下文模型Ca的編碼增大了編碼效率。然而,可能存在由于解碼中模糊現(xiàn)象的發(fā)生而導(dǎo)致不能對(duì)編碼的符號(hào)解碼的情況。因此,應(yīng)該防止模糊現(xiàn)象的發(fā)生。為此,編碼器在執(zhí)行測(cè)試解碼時(shí)檢查模糊現(xiàn)象的發(fā)生,并且當(dāng)確定模糊現(xiàn)象的發(fā)生時(shí),編碼器使用先前已經(jīng)選擇的上下文模型來對(duì)輸入的符號(hào)編碼。
圖9是根據(jù)本發(fā)明示例性實(shí)施例的基于CABAC的編碼方法的示圖,示出了根據(jù)輸入的符號(hào)的前進(jìn)執(zhí)行的步驟。在圖9中,情況1是xi和Cmi的valMPS具有相同值的情況,情況2是xi和Cmi的valMPS具有不同值的情況。
首先,當(dāng)xi是Cmi的LPS時(shí),執(zhí)行使用Cai的編碼(402)。當(dāng)對(duì)編碼的數(shù)據(jù)解碼的同時(shí)發(fā)現(xiàn)已經(jīng)使用Cai編碼的xi時(shí),編碼器檢查是否可進(jìn)行唯一編碼(404)。當(dāng)可進(jìn)行唯一解碼時(shí)執(zhí)行下一步驟(407)。當(dāng)不可進(jìn)行唯一編碼時(shí),執(zhí)行不可進(jìn)行唯一編碼時(shí)的xi的重新編碼。在重新編碼中應(yīng)該使用Cmi來代替Cai。換句話說,通過在編碼處理期間使用預(yù)測(cè)解碼處理中的情況的規(guī)則來防止模糊現(xiàn)象的發(fā)生,并且當(dāng)預(yù)測(cè)到模糊現(xiàn)象的發(fā)生時(shí),選擇傳統(tǒng)方法中選擇的上下文。
現(xiàn)在將描述防止模糊現(xiàn)象的發(fā)生。
編碼器每次都在編碼處理期間對(duì)編碼的數(shù)據(jù)α執(zhí)行測(cè)試解碼,以檢查模糊現(xiàn)象的發(fā)生。只有當(dāng)確定沒有模糊現(xiàn)象的發(fā)生時(shí),才執(zhí)行使用新的上下文模型的編碼。
以下是編碼算法的上下文模型選擇方法。
Encode(xi)e1. 確定Cmi,Caie2. E(Cmi,xi)e3. if(xi==mps(Cm)or Cai不存在)e4. Encode(xi+1)e5. else(xi是Cm的LPS AND存在具有作為MPS的xi的另一上下文模型)e6. E(Cai,xi)e7. if(當(dāng)前解碼的xi是在對(duì)α解碼之后使用Ca編碼的符號(hào))e8. if(Di(Cmi,α==mps(Cmi))e9. 從xi對(duì)串重新編碼,此時(shí)使用Cmea. elseeb. next Encode()(在使用Ca的編碼的情況下沒有模糊現(xiàn)象的發(fā)生)在該編碼算法中根據(jù)步驟e8和e9,保證使用Cm編碼的x的解碼的結(jié)果總是mps(Ca)。
如下執(zhí)行解碼器的上下文模型的選擇。
Decode(α,i)(對(duì)第i符號(hào)xi解碼)d1. 確定Cmi,Caid2. if(Di(Cm,α)==mps(Cm))d3. Decode(α,i+1)(使用Cm解碼并進(jìn)行到下一符號(hào))d4. else if((Di(Ca,α==mps(Ca))(在這種情況下,使用Cm的解碼的結(jié)果也是mps(Ca))d5. if(Di(Cm,E(Ca,mps(Ca)))==mps(Ca))d6. Di(Ca,α,Decode(α,i+1)(使用Ca解碼并進(jìn)行到下一符號(hào))d7. Di(Cm,α,Decode(α,i+1)(使用Cm解碼并進(jìn)行到下一符號(hào))為了顯示可進(jìn)行唯一編碼,可以顯示用于對(duì)xi編碼的上下文模型總是與用于對(duì)編碼的xi解碼的上下文模型相同。因?yàn)橐韵嗤姆绞皆诰幋a器和解碼器中保持P_lps和valMPS,所以在對(duì)xi解碼之前解碼器中的P_lps和valMPS與在對(duì)xi編碼之前編碼器中的P_lps和valMPS相同。因此,在這種情況下,在編碼器和在解碼器中選擇相同的Cmi或Cai。當(dāng)不存在Ca時(shí),只有Cm用于編碼和解碼,從而沒有模糊現(xiàn)象的發(fā)生的問題。因此,可僅考慮存在Ca的情況。
根據(jù)編碼算法,當(dāng)輸入的符號(hào)x是mps(Cm)時(shí),執(zhí)行E(Cm,x)。當(dāng)輸入的符號(hào)x不是mps(Cm)時(shí),執(zhí)行E(Cm,x)或E(Ca,x)。當(dāng)編碼的數(shù)據(jù)被表示為a1、a2和a3時(shí),所述情況可分別表示為以下的等式3到5。
等式3a1=E(Cm,mps(Cm))等式4a2=E(Ca,mps(Ca))等式5a3=E(Cm,mps(Ca))在等式3的情況下,因?yàn)镈i(Cm,a1)==mps(Cm),所以步驟d2的結(jié)果為真,從而執(zhí)行使用相同的上下文模型的解碼。
在等式4的情況下,根據(jù)步驟e8和e9,步驟d2的結(jié)果為假并且步驟d4的結(jié)果為真。
在等式5的情況下,當(dāng)使用Ca或Cm解碼時(shí),結(jié)果總是mps(Ca)。因此,步驟d2的結(jié)果為假并且步驟d4的結(jié)果為真。在等式4和等式5中,因?yàn)橥ㄟ^在編碼中應(yīng)用步驟e8和e9而使得上下文模型不同,所以當(dāng)在步驟d5中應(yīng)用步驟e7和e8時(shí),無論是等式4還是等式5的情況,都可以根據(jù)應(yīng)用的結(jié)果來確定。如上所述,因?yàn)樵诰幋a器和解碼器中,總是將相同的上下文模型用于特定的輸入符號(hào),所以可通過解碼處理恢復(fù)原始輸入的數(shù)據(jù)。
根據(jù)本發(fā)明的示例性實(shí)施例,增大了壓縮效率。在本發(fā)明中,因?yàn)镃ABAC通常用于多媒體數(shù)據(jù)的壓縮(如H.264),所以可改善運(yùn)動(dòng)圖像的壓縮性能。雖然為了實(shí)施根據(jù)本發(fā)明實(shí)施例的方法,在某種程度上增加了編碼器和解碼器的復(fù)雜性,但是因?yàn)橛布阅懿粩喔纳?,所以可忽略這一點(diǎn)。
本發(fā)明也可實(shí)現(xiàn)為計(jì)算機(jī)可讀記錄介質(zhì)上的計(jì)算機(jī)可讀代碼。所述計(jì)算機(jī)可讀記錄介質(zhì)為任何可存儲(chǔ)其后能由計(jì)算機(jī)系統(tǒng)讀取的數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)裝置,所述計(jì)算機(jī)系統(tǒng)包括具有信息處理功能的設(shè)備。所述計(jì)算機(jī)可讀記錄介質(zhì)的例子包括只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤、光學(xué)數(shù)據(jù)存儲(chǔ)裝置等。
根據(jù)基于CABAC的編碼或解碼方法和設(shè)備,通過使用當(dāng)前輸入的符號(hào)另外選擇上下文模型以及基于先前輸入的符號(hào)一般地選擇上下文,可改善編碼的壓縮率。此外,因?yàn)橥ㄟ^在編碼處理期間執(zhí)行測(cè)試解碼防止了模糊現(xiàn)象的發(fā)生,所以可在沒有模糊現(xiàn)象的發(fā)生的情況下正確地恢復(fù)原始輸入的數(shù)據(jù)。
雖然已經(jīng)參照本發(fā)明的示例性實(shí)施例具體顯示和描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該理解,在不脫離由權(quán)利要求限定的本發(fā)明的精神和范圍的情況下,可以在形式和細(xì)節(jié)上對(duì)其進(jìn)行各種變動(dòng)。應(yīng)該僅將示例性實(shí)施例理解為描述性的意義,而非限制性的目的。因此,本發(fā)明的范圍不是由示例性實(shí)施例的詳細(xì)描述限定,而是由權(quán)利要求限定,并且所述范圍內(nèi)的所有不同應(yīng)該被解釋為包括在本發(fā)明內(nèi)。
權(quán)利要求
1.一種基于CABAC的編碼方法,所述方法包括基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,或者如果不能選擇第二上下文模型,則使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值并且能夠選擇第二上下文模型,則使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
2.如權(quán)利要求1所述的方法,還包括使用第一上下文模型對(duì)已經(jīng)使用第一上下文模型或第二上下文模型編碼的編碼的輸入的符號(hào)解碼;和如果已經(jīng)通過使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼來產(chǎn)生編碼的輸入的符號(hào),并且編碼的輸入的符號(hào)的解碼值與第一上下文模型的大概率符號(hào)值相同,則使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
3.如權(quán)利要求1所述的方法,其中,選擇第一上下文模型和第二上下文模型的步驟包括在每個(gè)具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的一個(gè)或多個(gè)上下文模型中,選擇具有小概率符號(hào)值的出現(xiàn)概率的最小值的上下文模型作為第二上下文模型。
4.一種基于CABAC的編碼設(shè)備,所述設(shè)備包括上下文模型選擇單元,基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;第一編碼單元,如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,或者如果不能選擇第二上下文模型,則使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和第二編碼單元,如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值并且能夠選擇第二上下文模型,則使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
5.如權(quán)利要求4所述的設(shè)備,還包括符號(hào)解碼單元,使用第一上下文模型對(duì)已經(jīng)使用第一上下文模型或第二上下文模型編碼的編碼的輸入的符號(hào)解碼;和第三編碼單元,如果已經(jīng)通過使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼來產(chǎn)生編碼的輸入的符號(hào),并且編碼的輸入的符號(hào)的解碼值與第一上下文模型的大概率符號(hào)值相同,則使用第一上下文模型對(duì)輸入的符號(hào)編碼。
6.如權(quán)利要求4所述的設(shè)備,其中,上下文模型選擇單元在每個(gè)具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的一個(gè)或多個(gè)上下文模型中,選擇具有小概率符號(hào)值的出現(xiàn)概率的最小值的上下文模型作為第二上下文模型。
7.一種基于CABAC的解碼方法,所述方法包括基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;通過使用第一上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第一解碼的符號(hào);如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值,則通過使用第二上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第二解碼的符號(hào)。
8.如權(quán)利要求7所述的方法,還包括如果第二解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值不同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;如果第二解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值相同的值,則使用第二上下文模型對(duì)第二解碼的符號(hào)編碼,從而通過使用第一上下文模型對(duì)第二解碼的符號(hào)的編碼的結(jié)果解碼,產(chǎn)生第三解碼的符號(hào);如果第三解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值相同的值,則將第二解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和如果第三解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值不同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值。
9.如權(quán)利要求7所述的方法,其中,選擇第一上下文模型和第二上下文模型的步驟包括在每個(gè)具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的一個(gè)或多個(gè)上下文模型中,選擇具有小概率符號(hào)值的出現(xiàn)概率的最小值的上下文模型作為第二上下文模型。
10.一種基于CABAC的解碼設(shè)備,所述設(shè)備包括上下文模型選擇單元,基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;第一解碼單元,通過使用第一上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第一解碼的符號(hào);第一結(jié)果值選擇單元,如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和第二解碼單元,如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值,則通過使用第二上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第二解碼的符號(hào)。
11.如權(quán)利要求10所述的設(shè)備,還包括第二結(jié)果值選擇單元,如果第二解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值不同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;第三解碼單元,如果第二解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值相同的值,則使用第二上下文模型對(duì)第二解碼的符號(hào)編碼,從而通過使用第一上下文模型對(duì)第二解碼的符號(hào)的編碼的結(jié)果解碼,產(chǎn)生第三解碼的符號(hào);第三結(jié)果值選擇單元,如果第三解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值相同的值,則將第二解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和第四結(jié)果值選擇單元,如果第三解碼的符號(hào)具有與第二上下文模型的大概率符號(hào)值不同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值。
12.如權(quán)利要求10所述的設(shè)備,其中,上下文模型選擇單元在每個(gè)具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的一個(gè)或多個(gè)上下文模型中,選擇具有小概率符號(hào)值的出現(xiàn)概率的最小值的上下文模型作為第二上下文模型。
13.一種其上記錄有執(zhí)行基于CABAC的編碼方法的程序的計(jì)算機(jī)可讀記錄介質(zhì),所述方法包括基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,或者如果不能選擇第二上下文模型,則使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值并且能夠選擇第二上下文模型,則使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
14.一種其上記錄有執(zhí)行基于CABAC的解碼方法的程序的計(jì)算機(jī)可讀記錄介質(zhì),所述方法包括基于先前解碼的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)值不同的大概率符號(hào)值的第二上下文模型;通過使用第一上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第一解碼的符號(hào);如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,則將第一解碼的符號(hào)選擇為基于CABAC的解碼的結(jié)果值;和如果第一解碼的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值,則通過使用第二上下文模型對(duì)編碼的輸入的符號(hào)解碼,產(chǎn)生第二解碼的符號(hào)。
全文摘要
提供了一種使用改善的上下文模型選擇以獲得高壓縮率的基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)的編碼或解碼方法和設(shè)備。所述基于CABAC的編碼方法包括基于先前輸入的符號(hào)的統(tǒng)計(jì)選擇第一上下文模型,并選擇具有與第一上下文模型的大概率符號(hào)(MPS)值不同的大概率符號(hào)值的第二上下文模型;如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值相同的值,或者如果不能選擇第二上下文模型,則使用第一上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼;和如果當(dāng)前輸入的符號(hào)具有與第一上下文模型的大概率符號(hào)值不同的值并且如果能夠選擇第二上下文模型,則使用第二上下文模型對(duì)當(dāng)前輸入的符號(hào)編碼。
文檔編號(hào)H03M7/38GK101034891SQ200710078880
公開日2007年9月12日 申請(qǐng)日期2007年2月16日 優(yōu)先權(quán)日2006年2月22日
發(fā)明者曹榮佑 申請(qǐng)人:三星電子株式會(huì)社