本申請總體涉及數(shù)據(jù)壓縮,且具體地涉及用于圖像和視頻編碼中的自適應(yīng)二進制化器選擇的方法和設(shè)備。
背景技術(shù):
在通信和計算機聯(lián)網(wǎng)中使用數(shù)據(jù)壓縮來高效地存儲、發(fā)送和復(fù)制信息。數(shù)據(jù)壓縮在圖像、音頻和視頻的編碼中得到了具體應(yīng)用。常見的圖像壓縮格式包括JPEG、TIFF和PNG。新開發(fā)的視頻編碼標準是ITU-T H.265/HEVC標準。其他視頻編碼格式包括由Google公司開發(fā)的VP8和VP9格式。對所有這些標準和格式的演進正在積極開發(fā)中。
所有這些圖像和視頻編碼標準和格式基于預(yù)測編碼,預(yù)測編碼創(chuàng)建對要編碼的數(shù)據(jù)的預(yù)測,然后對預(yù)測中的誤差(通常稱為殘差)進行編碼以作為比特流發(fā)送給解碼器。然后,解碼器進行相同的預(yù)測,并通過從比特流中解碼出的重構(gòu)誤差來對其進行調(diào)整。編碼器處對誤差的無損數(shù)據(jù)壓縮經(jīng)常包括誤差的頻譜變換以創(chuàng)建變換域系數(shù)的塊。這通常伴隨著有損量化。在解碼器處執(zhí)行相反操作以重構(gòu)誤差/殘差。在許多編碼方案,通常使用二進制算術(shù)編碼(BAC)對該數(shù)據(jù)加上用于做出預(yù)測的邊信息(例如,幀內(nèi)編碼模式或幀間編碼運動矢量)進行編碼。這意味著可能需要對數(shù)據(jù)(這里稱為“符號”)的非二進制部分進行二進制化,以創(chuàng)建用于BAC引擎進行編碼的二進制數(shù)據(jù)流。在一些編碼器/解碼器中,可以使用多級算術(shù)編碼器而不是二進制算術(shù)編碼器,在這種情況下,二進制化器被嵌入在多級算術(shù)編碼器內(nèi)。
在現(xiàn)有的編碼方案中,二進制化器由標準規(guī)定。例如,在H.265/HEVC中,二進制化方案(CABAC)與上下文建模非常緊密地結(jié)合在一起。在VP8/VP9中,使用預(yù)定義的編碼樹來執(zhí)行對“令牌”(對已量化系數(shù)的幅度進行信號通知的符號)的二進制化。
附圖說明
作為示例,參考示出了本發(fā)明的示例實施例的附圖,在附圖中:
圖1A以簡化框圖的形式示出了使用二進制化器和二進制算術(shù)編碼器對視頻進行編碼的編碼器;
圖1B以簡化框圖的形式示出了具有二進制化器選擇器和二進制算術(shù)編碼器的示例編碼器;
圖2A以簡化框圖的形式示出了使用逆二進制化器和二進制算術(shù)解碼器對視頻進行解碼的解碼器;
圖2B以簡化框圖的形式示出了具有二進制化器選擇器和二進制算術(shù)解碼器的示例解碼器;
圖3A以簡化框圖的形式示出了使用二進制化器和多級算術(shù)編碼器對視頻進行編碼的編碼器;
圖3B以簡化框圖的形式示出了具有二進制化器選擇器和多級算術(shù)編碼器的示例編碼器;
圖4A以簡化框圖的形式示出了使用逆二進制化器和多級算術(shù)解碼器對視頻進行解碼的解碼器;
圖4B以簡化框圖的形式示出了具有二進制化器選擇器和多級算術(shù)解碼器的示例解碼器;
圖5以圖表方式示出了用于VP8和VP9中的令牌的示例編碼樹;
圖6以圖表方式示出了用于令牌的已修改編碼樹的示例;
圖7A以流程圖形式示出了使用二進制化器選擇對圖像進行編碼的示例過程;
圖7B以流程圖形式示出了使用二進制化器選擇對比特流進行解碼以重構(gòu)圖像的示例過程;
圖8以框圖形式示出了使用自適應(yīng)二進制化器選擇的編碼器的示例;
圖9以框圖形式示出了使用自適應(yīng)二進制化器選擇的解碼器的示例;
圖10以流程圖形式示出了使用自適應(yīng)二進制化器選擇來對圖像進行編碼的示例過程;
圖11以流程圖形式示出了用于使用自適應(yīng)二進制化器選擇來對比特流進行解碼以重構(gòu)圖像的示例過程;
圖12示出了編碼器的示例實施例的簡化框圖;以及
圖13示出了解碼器的示例實施例的簡化框圖。
在不同的附圖中已使用類似的附圖標記來表示類似的組件。
具體實施方式
本申請描述了用于對圖像和/或視頻進行編碼和解碼的方法和編碼器/解碼器。
在第一方案中,本申請描述了一種在視頻或圖像解碼器中從比特流中解碼出圖像的方法,所述比特流具有針對塊組的首部信息,所述解碼器具有用于將比特流轉(zhuǎn)換為二進制碼(bin)序列的算術(shù)解碼器,所述解碼器具有將二進制碼轉(zhuǎn)換為符號的缺省二進制化器。該方法包括:從比特流中獲得首部信息;根據(jù)所述首部信息確定關(guān)于針對所述塊組的二進制碼序列要使用已修改二進制化器而不是所述缺省二進制化器;以及使用所述已修改二進制化器對所述二進制碼序列進行逆二進制化,以從所述二進制碼序列中重構(gòu)符號序列。
在另一方案中,本申請描述一種在圖像或視頻編碼器內(nèi)對圖像進行編碼以生成編碼數(shù)據(jù)的比特流的方法,所述圖像具有塊組,所述編碼器具有將二進制碼轉(zhuǎn)換為編碼數(shù)據(jù)的比特流的算術(shù)編碼器,所述編碼器具有將符號變換為二進制碼的缺省二進制化器。該方法包括:針對所述塊組,確定要使用已修改二進制化器而不是所述缺省二進制化器來對所述塊組內(nèi)的符號序列進行二進制化;使用所述已修改二進制化器來對所述符號序列進行二進制化以生成二進制碼序列;使用所述算術(shù)編碼器對所述二進制碼序列進行算術(shù)編碼以生成編碼數(shù)據(jù)的比特流;以及在所述比特流中插入對要關(guān)于所述二進制碼序列使用所述已修改二進制化器而不是所述缺省二進制化器進行指示的首部信息。
在又一方案中,本申請描述了一種在視頻或圖像解碼器中從比特流中解碼出圖像的方法,所述解碼器具有用于將比特流轉(zhuǎn)換為二進制碼的算術(shù)解碼器,且所述解碼器具有基于與符號字母表相關(guān)聯(lián)的概率分布來構(gòu)建的二進制化器。該方法包括:使用所述二進制化器對二進制碼序列進行逆二進制化,以產(chǎn)生重構(gòu)符號,所述二進制碼序列是從所述比特流中算術(shù)解碼出的,且對應(yīng)于來自符號字母表的編碼符號;基于所述重構(gòu)符號更新所述概率分布,以產(chǎn)生已更新概率分布;以及基于所述已更新概率分布來確定已更新二進制化器,以用于對第二符號序列進行逆二進制化來產(chǎn)生第二重構(gòu)符號。
在又一方案中,本申請描述了一種在圖像或視頻編碼器內(nèi)對圖像進行編碼以生成編碼數(shù)據(jù)的比特流的方法,所述編碼器具有將二進制碼轉(zhuǎn)換為所述編碼數(shù)據(jù)的比特流的算術(shù)編碼器,且所述編碼器具有基于與符號字母表相關(guān)聯(lián)的概率分布來構(gòu)建的二進制化器。該方法包括:使用所述二進制化器對來自所述圖像的符號進行二進制化,以產(chǎn)生二進制碼序列對所述二進制碼序列進行算術(shù)編碼,以產(chǎn)生所述比特流;基于所述符號更新所述概率分布,以產(chǎn)生已更新概率分布;以及基于所述已更新概率分布來確定已更新二進制化器,所述已更新二進制化器用于在對第二符號進行二進制化時使用以產(chǎn)生第二二進制碼序列。
在又一方案中,本申請描述了配置為實現(xiàn)這種編碼和解碼的方法的編碼器和解碼器。
在又一方案中,本申請描述了存儲計算機可執(zhí)行程序指令的非瞬時計算機可讀介質(zhì),所述計算機可執(zhí)行程序指令在被執(zhí)行時將處理器配置為執(zhí)行所描述的編碼和/或解碼的方法。
本領(lǐng)域普通技術(shù)人員將通過結(jié)合附圖閱讀以下示例的描述,來理解本申請的其他方面和特征。
將會理解,本申請的一些方案不限于圖像或視頻編碼,并且在一些實施例中可以應(yīng)用于一般的數(shù)據(jù)壓縮。
在下面的描述中,參考用于視頻編碼的H.264/AVC標準、H.265/HEVC標準、VP8格式、VP9格式等描述一些示例實施例。本領(lǐng)域的普通技術(shù)人員將理解,本申請不限于那些視頻編碼標準和格式,而是可以應(yīng)用于其它視頻編碼/解碼標準和格式,包括可能的未來標準、多視點編碼標準、可分級視頻編碼標準、3D視頻編碼標準和可重配置視頻編碼標準。類似地,就參考具體圖像編碼標準和格式而言,將理解,所描述的過程和設(shè)備可結(jié)合其他標準(包括未來的標準)來實現(xiàn)。
在隨后的描述中,當(dāng)提到視頻或圖像時,術(shù)語幀、圖片、切片(slice)、分片(tile)、量化組和矩形切片組可以在某種程度上互換使用。本領(lǐng)域技術(shù)人員將理解,圖片或幀可以包含一個或多個切片或片段。在一些情形中,一系列幀/圖片可稱為“序列”。其他術(shù)語可在其他視頻或圖像編碼標準中使用。還將認識到,取決于可應(yīng)用的圖像或視頻編碼標準的具體要求或術(shù)語,某些編碼/解碼操作可以逐幀執(zhí)行,而一些操作逐切片執(zhí)行,一些操作逐圖片執(zhí)行,一些操作逐分片執(zhí)行,還有一些操作逐矩形切片組執(zhí)行等。在任何特定實施例中,適用的圖像或視頻編碼標準可以確定是否關(guān)于幀和/或切片和/或圖片和/或分片和/或矩形切片組等來執(zhí)行以下描述的操作,視情況而定。相應(yīng)地,根據(jù)本公開,本領(lǐng)域普通技術(shù)人員將理解,本文描述的特定操作或過程以及對幀、切片、圖片、分片、矩形切片組的特定引用對于給定實施例是否適用于幀、切片、圖片、分片、矩形切片組、或者其中的一些或全部。其還適用于編碼樹單元、編碼單元、預(yù)測單元、變換單元、量化組等,這些將通過以下描述而變得清楚。
在下面的描述中,描述了涉及來自VP8和VP9的示例二進制化器(特別是用于令牌的編碼樹)的示例實施例。將會理解,VP8和VP9中的令牌是“符號”的一個示例,并且本申請不限于“令牌”。還將理解,盡管本申請的示例實現(xiàn)可以涉及VP8、VP9或該格式的演進,但是其不限于這樣的編碼方案。還將會理解,本申請可以應(yīng)用于除了編碼樹之外且除了本文所描述的特定編碼樹之外的二進制化器。
在本申請中,術(shù)語“和/或”旨在覆蓋列出元素的所有可能組合和子組合,包括列出元素的單獨的任意一個、任意子組合或所有元素,而不是必須排除附加元素。
在本申請中,短語“...或...中的至少一個”旨在覆蓋列出元素的任意一個或多個,包括列出元素的單獨的任意一個、任意子組合或所有元素,而不是必須排除任何附加元素,且不是必須要求所有元素。
現(xiàn)在參考圖1A,圖1A以簡化框圖的形式示出了用于對視頻進行編碼的編碼器10。該示例編碼器涉及上下文建模之前的二進制化。換言之,針對被二進制化的二進制碼而不是針對輸入數(shù)據(jù)序列的預(yù)二進制化符號來確定上下文。
編碼器10包括二進制化器12,二進制化器12將輸入數(shù)據(jù)符號序列(其可包括已經(jīng)通過其它編碼處理(包括頻譜變換、量化、預(yù)測操作等)生成的數(shù)據(jù))轉(zhuǎn)換成二進制碼序列b1,b2,…bj-1,bj…。
編碼器10還包括上下文生成器14。為了編碼二進制碼bj,上下文生成器14根據(jù)編碼歷史(例如,bj-1bj-2…和可用的邊信息,如,bj在變換塊的位置)確定上下文Cj。概率生成器16然后根據(jù)Cj和編碼歷史bj-1bj-2…確定pj,例如,出現(xiàn)在相同上下文下Cj下的已編碼二進制符號。
給定針對bj的上下文Ci,二進制算術(shù)編碼(BAC)編碼器18基于所確定的概率pj對bj進行編碼。BAC編碼器18輸出算術(shù)編碼數(shù)據(jù)的比特流。換言之,BAC編碼器18依賴特定于所確定的針對正被編碼的二進制碼的上下文的概率。在一些實施例中,例如H.265/HEVC,二進制化與上下文模型密切相關(guān)。例如,H.265/HEVC規(guī)定將量化的變換系數(shù)二進制化為符號比特、重要性系數(shù)標記、大于1標記等。這些二進制語法元素中的每一個可具有其自己的定義上下文模型,用于確定上下文,且因此用于確定與由BAC用于編碼的語法元素相關(guān)聯(lián)的概率(在H.265/HEVC的情況下,其是上下文自適應(yīng)的)。
圖2A以簡化框圖的形式示出了對應(yīng)于圖1A的示例編碼器10的示例解碼器50。示例解碼器50包括BAC解碼器52。BAC解碼器52接收用于解碼比特流的概率pj。概率pj由概率生成器56提供,并且特定于由上下文生成器54指定的上下文Cj。將會理解,上下文建模、上下文的確定以及概率確定與在對應(yīng)的編碼器10中執(zhí)行的相同,以使得解碼器50能夠精確地解碼比特流。逆二進制化器58基于由BAC解碼器52輸出的已解碼的二進制碼序列來重構(gòu)符號序列。
本申請還可以適用于多級算術(shù)編碼(MAC)的情況。這種類型的編碼處理由來自字母表的符號形成的序列,該字母表的基數(shù)(cardinality)大于2。在MAC中,使用二叉搜索樹來表示A,其中,A中的每個符號對應(yīng)于二叉搜索樹中獨一的葉子。由此,為了編碼和解碼A中的符號a,對由從根到與a相對應(yīng)的葉子的分支組成的路徑進行編碼和解碼。要注意,可以采用約定來標記左分支“0”和右分支“1”,或采用任何其他約定來用{0,1}中的元素標記分支。觀察到字母表A的二叉搜索樹表示是MAC的一部分。因此,可將MAC與針對原始序列所設(shè)計的上下文模型一起使用。
現(xiàn)在參考圖3A,圖3A以簡化框圖的形式示出了用于對視頻進行編碼的編碼器30。編碼器30包括用于根據(jù)上下文模型確定上下文的上下文生成器32和用于確定與給定上下文相關(guān)聯(lián)的概率的概率生成器34。該示例編碼器30涉及上下文建模之后的二進制化。換言之,針對輸入數(shù)據(jù)序列的預(yù)二進制化符號確定上下文,且然后在MAC編碼器36內(nèi)對該序列進行二進制化,MAC編碼器36包括二進制化器38作為其一部分。在一些實施例中,二進制化器38可以采用二叉搜索樹的形式,該二叉搜索樹用于在給定針對符號確定的上下文的情況下將該符號轉(zhuǎn)換為二進制串。
在圖4A中示出了解碼器70的對應(yīng)簡化框圖。解碼器70包括具有集成的逆二進制化器74的MAC解碼器72,并且從上下文生成器76和概率生成器78接收用于對輸入的編碼數(shù)據(jù)比特流進行解碼的概率信息。
現(xiàn)在將參考圖5,圖5示出了示例系數(shù)編碼樹500。該示例中的樹500是用于編碼“令牌”的編碼樹,該“令牌”表示VP8和VP9中的已量化變換域系數(shù)。VP8和VP9中的令牌是指示已量化變換域系數(shù)的幅度的二進制串。如下對其進行定義:
上面的dct_cat1、...、dct_cat6各自對應(yīng)于有限的值集合。為了確定集合中的精確的值,要對附加比特進行編碼和解碼。例如,在對dct_cat1進行解碼之后,要對附加比特進行解碼以確定該值是5還是6。類似地,在對dct_cat2進行解碼之后,要對兩個附加比特進行解碼以確定{7,8,9,10}中的值。對于dct_cat3到dct_cat5,分別需要3、4和5個附加比特。對于dct_cat6,需要11個附加比特。此外,對于除DCT_0和dct_eob之外的任何令牌,要編碼和解碼符號比特。
為了使用樹500來解碼令牌,解碼器從根節(jié)點(0)開始并且遵循到與令牌相對應(yīng)的葉子節(jié)點的路徑。每個內(nèi)部節(jié)點具有相關(guān)聯(lián)的二元概率分布,該相關(guān)聯(lián)的二元概率分布與是采用左路徑還是采用右路徑相關(guān)聯(lián)。假設(shè)存在11個內(nèi)部節(jié)點,這意味著存在11個二元分布。
基于平面類型、掃描位置和附近系數(shù)來針對令牌確定上下文。在VP8和VP9中有96個上下文,這意味著有1056個二元概率分布(11x96),因為每個上下文都有其自己的概率分布集合。這些概率分布可以存儲在數(shù)組中,該數(shù)組被定義為:
Prob coeff_probs[4][8][3][num_dct_tokens-1];
coeff_probs通常對于幀/圖片或片段而言是固定的??梢杂删幋a器將其信號通知給解碼器。
圖5的示例編碼樹500可以表達如下:
編碼器和解碼器中的二進制算術(shù)編碼引擎將內(nèi)部概率分布用于對令牌(即,二進制化串)的比特進行算術(shù)編碼。將會理解,二進制化器的結(jié)構(gòu)被樹500所固定,并且如果需要的話,隨著時間僅調(diào)整針對給定上下文的內(nèi)部概率。
對熵編碼方法的壓縮性能的理論極限的分析揭示了:在BAC的實際實現(xiàn)中,非歸一化壓縮率(其被定義為以比特為單位的壓縮數(shù)據(jù)序列的長度)關(guān)于二進制序列長度n線性增長。要注意,(歸一化)壓縮率被定義為非歸一化壓縮率與輸入序列長度的比率,即針對每輸入符號的平均比特數(shù)。相應(yīng)地,提高壓縮效率的可能方法之一是改善二進制化的質(zhì)量或功效,以減小二進制序列長度n。如上所述,在現(xiàn)有的編碼標準(如H.265/HEVC和VP8/VP9中的上下文自適應(yīng)BAC(CABAC))中,二進制化器被合并(bake)到上下文建模中。具體地,針對給定的上下文,二進制化器是固定的。二進制化基于規(guī)定如何將非二進制數(shù)據(jù)(例如,已量化系數(shù))劃分為二進制串的固定的樹或固定的語法定義。所發(fā)生的任何二進制化與上下文和變換系數(shù)數(shù)據(jù)本身密切相關(guān),而不與任何可用概率信息密切相關(guān)。
本申請?zhí)嶙h向解碼器發(fā)信號通知要使用已修改二進制化器而不是缺省二進制化器。編碼器可以在以下情況下確定使用已修改二進制化器:其預(yù)期與使用缺省二進制化器的情況相比,已修改二進制化器將導(dǎo)致更短的二進制序列。二進制化器中的這種改變不是必然是上下文的確定函數(shù),這意味著在相同的上下文中(在不同的塊或圖片中),編碼器/解碼器可以根據(jù)編碼器做出的選擇使用不同的二進制化器。
在一些示例實施例中,二進制化器是預(yù)先設(shè)計的,并且編碼器從兩個或更多個預(yù)定義二進制化器之間選擇已修改二進制化器,該兩個或更多個預(yù)定義二進制化器之一是缺省二進制化器。在一些其他示例實施例中,已修改二進制化器可以在編碼器上即時地構(gòu)建。解碼器可以在比特流中接收新構(gòu)建的二進制化器的細節(jié),或者可以使用與編碼器相同的處理來自己構(gòu)建已修改二進制化器。在一些情況下,作為構(gòu)建已修改二進制化器的機制,編碼器信號通知對缺省二進制化器的改變。
二進制化器中的改變可以基于塊、塊系列、切片、圖片或圖像/視頻數(shù)據(jù)的任何其它分組(grouping)來做出,并且可以在與分組相關(guān)聯(lián)的首部中作為首部信息來信號通知。
對使用已修改二進制化器的確定可以基于多個因素。例如,其可以基于數(shù)據(jù)序列的編碼歷史。在一些情況下,其可以基于與上下文相關(guān)聯(lián)的歷史概率或估計概率。在一些情況下,其可涉及確定或估計已量化變換域系數(shù)的編碼分布以及構(gòu)建更好地匹配所確定的編碼分布的新編碼樹。根據(jù)對示例實施例的以下描述,本領(lǐng)域普通技術(shù)人員將理解其它機制。
現(xiàn)在將參考圖1B和2B,其分別示出了使用自適應(yīng)二進制化器選擇的編碼器110和解碼器150的簡化框圖。
編碼器110包括上下文生成器114、概率生成器116和用于從二進制化序列中生成編碼比特流的BAC編碼器118。在編碼器110中,二進制化器選擇器120構(gòu)建或選擇用于二進制化輸入數(shù)據(jù)序列的二進制化器112(例如,可能從預(yù)定義候選二進制化器的有限集合構(gòu)建或選擇)。關(guān)于選擇的信息(標記為選擇信息)可以與用于存儲或發(fā)送的編碼比特流(標記為比特流)組合(例如,復(fù)用)。在一些實施例中,選擇信息被編碼在首部信息字段內(nèi)。
二進制化器選擇器120的構(gòu)建/選擇可以基于數(shù)據(jù)序列的編碼歷史。其可以取決于具體代碼或序列的概率分布,無論是根據(jù)經(jīng)驗確定還是基于先前編碼的數(shù)據(jù)估計。在一些實施例中,上下文信息可以由二進制化器選擇器120接收。
解碼器150包括BAC解碼器152、上下文生成器154和概率生成器156。BAC解碼器對編碼數(shù)據(jù)的輸入(解復(fù)用)比特流進行解碼,以重構(gòu)二進制序列。逆二進制化器158對二進制序列進行逆二進制化,以重構(gòu)符號序列。逆二進制化器158由二進制化器選擇器160至少部分地基于選擇信息流中的信息來選擇/構(gòu)建。如上所述,在一些情況下,可以從編碼數(shù)據(jù)的比特流的首部字段中提取選擇信息。在一些實施例中,該信息可以包括標識多個預(yù)定義二進制化器中的一個預(yù)定義二進制化器的信息、指定逆二進制化器158的結(jié)構(gòu)的信息、指定解碼器150根據(jù)其來構(gòu)建對應(yīng)的逆二進制化器158的概率分布的信息、或使解碼器150能夠選擇或構(gòu)建逆二進制化器158的其他這樣的信息。
現(xiàn)在還參考圖3B和4B,其分別示出了使用自適應(yīng)二進制化器選擇的編碼器130和解碼器170的附加示例的簡化框圖。這些示例還包括二進制化器選擇器以及將關(guān)于二進制化器的選擇/構(gòu)建的信息從編碼器130傳遞給解碼器170。
在下面的示例實施例中,圖5中所示的缺省編碼樹是示例缺省二進制化器。各個實施例詳細說明可如何選擇或構(gòu)建已修改二進制化器,以及解碼器如何確定使用或構(gòu)造哪個二進制化器。
VP8和VP9中缺省編碼樹的結(jié)構(gòu)基于令牌(即,符號)的預(yù)期分布。針對給定塊組的令牌的實際分布可能偏離所假定的分布。要注意,令牌的分布(有時被稱為“令牌的邊緣分布”)不同于在coeff_probs數(shù)組中指定的內(nèi)部節(jié)點概率,其以二元分布的匯集的形式為BAC所使用。令牌的邊緣分布可以由長度為12的向量指定,其中每個元素對應(yīng)于不同令牌的概率,且所有令牌概率之和等于1。對應(yīng)地,塊組(例如,切片/圖片/幀)中令牌的經(jīng)驗分布是如下邊緣分布:其可被定義為長度為12的向量,使得每個元素對應(yīng)于在該塊組中出現(xiàn)令牌的歸一化頻率。具體而言,設(shè)n表示圖片/幀中令牌的總數(shù),并且設(shè)fi表示令牌i,0≤i<12出現(xiàn)在圖片/幀中的次數(shù)。則向量中的第i個元素等于且向量是:
為了方便起見,下面我們還可以使用非歸一化頻率向量
(f0,f1,…,f11)
其有時被稱為非歸一化經(jīng)驗分布。
設(shè)表示用于對在VP8和VP9中定義的缺省系數(shù)編碼樹中的令牌i進行表示的二進制碼的數(shù)量:
因此,如果使用缺省系數(shù)樹,則要編碼和解碼的切片/圖片/幀中的二進制碼的總數(shù)是
設(shè)li表示通過使用所選擇的不同于缺省系數(shù)編碼樹的二進制化器來表示令牌i所使用的二進制碼的數(shù)量。整體而言,(l0,l1,…,l11)被稱為二進制化器的長度函數(shù)。很容易看到,只要
則所選擇的二進制化器減少了二進制碼的總數(shù),且節(jié)省通過來給出。為了找到滿足上述不等式的二進制化器,可以在具有12個葉子節(jié)點的候選樹的集合中執(zhí)行搜索,該具有12個葉子節(jié)點的候選樹是編碼器和解碼器都已知的,例如,定義在如Golomb碼、Gallager-Voorhis碼等的規(guī)范中。通過構(gòu)建來確定二進制化器的備選方法是構(gòu)造針對給定概率分布具有長度函數(shù)(l0,l1,…,l11)的霍夫曼編碼樹,并使用該霍夫曼編碼樹作為二進制化器。
要注意,不是必須顯式地構(gòu)建霍夫曼編碼樹。事實上,二叉碼編碼樹滿足以下條件可能就足夠了:
對于任何i≠j,如果fi>fj,則li≤lj
要注意,霍夫曼編碼樹滿足上述條件,并因此可以作為候選包括。還要注意,一旦信號通知了新的二進制化器,要使用新的二進制化器來解譯概率分布,即,coeff_probs。也就是說,coeff_prob[a][b][c][i]表示新的二進制化器中內(nèi)部節(jié)點i處的二元分布,其中,a、b、c是根據(jù)平面類型、coeff位置和附近系數(shù)導(dǎo)出的上下文。
從預(yù)定義的二進制化器選擇
在一個實施例中,編碼器和解碼器二者都具有在存儲器中定義的兩個或更多個預(yù)定義二進制化器,其中之一是缺省二進制化器。例如,在使用編碼樹的二進制化的情況下,可存在缺省編碼樹和一個或多個備選編碼樹。在一些示例中,可以基于符號(例如,令牌)的不同邊緣分布來開發(fā)備選編碼樹。
編碼器(具體地,二進制化器選擇器)可針對塊組(例如,切片、幀、圖片、圖片組等)確定是使用缺省二進制化器還是使用備選二進制化器中的一個。例如,編碼器可以確定或估計針對該塊組的令牌的分布。為了實際確定分布,編碼器可能需要使用二次(two-pass)編碼。備選地,編碼器可以估計分布,可能是基于來自一個或多個先前塊組的統(tǒng)計來估計分布。編碼器處的二進制化器選擇器確定使用哪個二進制化器來對塊進行編碼,且然后在與該塊組有關(guān)的首部信息中信號通知該選擇。
在一些情況下,向解碼器信號通知二進制化器可包括使用首部信息內(nèi)的標記或碼。在單個備選二進制化器的情況下,編碼器可使用二元標記來指示是否正在使用缺省二進制化器。在多個備選二進制化器的情況下,編碼器可包括用來對要使用哪個二進制化器解碼塊組進行指示的碼。
葉子節(jié)點的重新分布
在一個實施例中,缺省二進制化器的結(jié)構(gòu)保持不變,但編碼器可以信號通知令牌的重新分布,即,針對將哪些符號/令牌指派給哪些葉子節(jié)點的改變。例如,參考VP8和VP9編碼樹,編碼器可以確定指派給具體葉子節(jié)點的令牌應(yīng)該被重新布置以提高具體塊組的二進制化的效率。在這種情況下,可以通過在首部字段中指定令牌的順序來向解碼器信號通知該重新布置。內(nèi)部系數(shù)概率的分布(coeff_prob數(shù)組)保持不變。
例如,在圖5中,存儲dct_eob的葉子節(jié)點和存儲DCT_1的葉子節(jié)點可能被交換,即,在交換后,具有到根節(jié)點的短路徑的前者存儲DCT_1,且具有較長路徑的后者存儲dct_eob。使用現(xiàn)有樹的優(yōu)點之一是對熵編碼的簡單設(shè)計,其也與VP8和VP9中的現(xiàn)有設(shè)計后向兼容。觀察到在這些情況下,BAC解碼邏輯不需要改變,因為:
1.其可以使用現(xiàn)有設(shè)計來確定是否到達葉子節(jié)點,以及
2.存儲在coeff_probs中的概率對應(yīng)于系數(shù)編碼樹中的相同內(nèi)部節(jié)點。
對樹的唯一改變是改變了存儲在葉子節(jié)點中的相應(yīng)令牌。由此,當(dāng)use_new_coeff_coding_tree_flag等于1時,我們可以通過使用數(shù)組T[num_dct_tokens]來指定新的二進制化,其中,T[i](i=0,...,num_dct_tokens-1)指定存儲在第(i+1)個(在圖5中從左數(shù)到右)葉子節(jié)點處的令牌。示例數(shù)組如下:
新的樹結(jié)構(gòu)
代替保持編碼樹的缺省形狀,編碼器可以確定更好地擬合實際或估計的邊緣令牌分布的新的樹結(jié)構(gòu)。然后,編碼器可以在塊組的首部信息中向解碼器信號通知該新結(jié)構(gòu)。作為示例,新的系數(shù)編碼樹可被解析為數(shù)組T[2*(num_dct_tokens-1)],其中應(yīng)用以下約定:
1.如果T[i]在{0,-1,-2,...,-num_dct_token中,則T[i]是葉子節(jié)點,且-T[i]是令牌,即0指示dct_eob,1指示DCT_0等。
2.如果T[i]是偶數(shù)整數(shù),則T[i]是內(nèi)部節(jié)點,其左子節(jié)點在位置T[i]處,且其右子節(jié)點在位置T[i]+1處。注意,如果T[i]是偶數(shù),則通過約定,T[i]不小于i+1,即,子節(jié)點總是出現(xiàn)在它們的父節(jié)點之后。
3.T[0]是根節(jié)點的左子節(jié)點,T[1]是根節(jié)點的右子節(jié)點。
參考圖6,其示出了用于VP8和VP9令牌的備選編碼樹600的一個示例。下面是用于定義和信號通知圖6所示的備選編碼樹600的數(shù)組T的示例:
T的長度函數(shù)可以被驗證為是(2,2,3,3,4,4,5,5,6,6,6,6)。
上述數(shù)組T被構(gòu)建為便于解析和樹表示。為了進行編碼和發(fā)送,T可以被變換到另一個數(shù)組T′以便于熵編碼,其中從T到T′的變換是可逆的,即T可以從T′完全重構(gòu)。例如,如果T[i]是正的,則T[i]≥2且始終是偶數(shù)。因此,代替直接對T[i]進行編碼,編碼器可對T′[i]=(T[i]-2)>>1進行編碼。在解碼器側(cè),在解碼T′[i]之后,可以將T[i]重構(gòu)為T[i]=T′[i]*2+2。
該編碼器可通過首先確定或估計針對塊組的邊緣令牌分布(即,在對塊組編碼時每個令牌出現(xiàn)的歸一化頻率)確定新的樹結(jié)構(gòu)。根據(jù)該信息,編碼器可在然后確定更好地擬合邊緣分布的編碼樹(例如,霍夫曼編碼樹)。在一些實現(xiàn)中,編碼器可以通過使用由令牌的頻率計數(shù)組成的非歸一化經(jīng)驗分布而不是歸一化邊緣分布來確定編碼樹。
在一些實施例中,編碼器可以在確定擬合邊緣分布的編碼樹之前過濾邊緣令牌分布或等效地非歸一化經(jīng)驗分布。例如,小于閾值的頻率計數(shù)可被非歸一化經(jīng)驗分布中的缺省值(例如,0、1或已知正整數(shù))替換。不失一般性,假設(shè)非歸一化經(jīng)驗分布由(f0,f1,…,f11)給出,其中fi表示令牌i(0≤i≤11)的頻率計數(shù)。然后,對于每個i,如果fi<Th(其中Th表示閾值),則否則,然后將所得到的向量用于確定編碼樹。在過濾之后,我們看到頻率計數(shù)小于閾值的令牌被等同地對待,并且將在確定編碼樹的過程中具有確定且有限的影響。因此,通過使用過濾,編碼器避免了在沒有足夠的經(jīng)驗數(shù)據(jù)時在確定編碼樹中的過度擬合。要注意,該閾值可以是先驗確定的常數(shù)或可作為令牌總數(shù)(即,所有頻率計數(shù)的總和)的函數(shù)。
將會理解,在僅實現(xiàn)樹的部分更新的情況下,在一些實施例中可以不信號通知整個樹。這可被用于平衡信號通知新的二進制化器的成本和二進制碼節(jié)省的益處。例如,可能希望基于5中的缺省樹來信號通知新的樹,其中
1.改變限于對應(yīng)于{dct_eob,DCT_0,DCT_1,DCT_2,DCT_3,DCT_4}的子樹;以及
2.以內(nèi)部節(jié)點(12)為根節(jié)點的子樹保持不變。
更新概率
如上所述,VP8和VP9缺省樹的內(nèi)部節(jié)點處的二元概率分布存儲在coeff_probs數(shù)組中。如果使用新的樹,則解碼器可能需要將與現(xiàn)有缺省樹相關(guān)聯(lián)的概率分布(在coeff_probs中)映射到新的樹。
設(shè)T1和T2指示表示具有N個符號的相同字母表A={a0,…aN-1}的兩個二叉樹。假定T1和T2都是滿的,并且因此它們正好具有N-1個內(nèi)部節(jié)點。設(shè)(p1,0,…p1,N-2)表示T1的N-1個內(nèi)部節(jié)點處的二元概率分布:例如,p1,0表示第一內(nèi)部節(jié)點(根)處的概率1(或等效地,采用右側(cè)分支),p1,1表示第二內(nèi)部節(jié)點處的概率1(或等效地,采用右側(cè)分支),等等。要注意,對內(nèi)部節(jié)點進行標記的順序無關(guān)緊要,換言之,任何已知的順序都將適用于本解決方案。類似地,設(shè)(p2,0,…p2,N-2)表示T2的N-1個內(nèi)部節(jié)點處的二元概率分布。假設(shè)(p1,0,…p1,N-2)和(p2,0,…p2,N-2)是從A上的同一邊緣分布學(xué)習(xí)得到的。因而挑戰(zhàn)是將(p1,0,…p1,N-2)映射到(p2,0,…p2,N-2),且反之亦然。
設(shè)(q0,…qN-1)表示A上的該公共邊緣分布,其中qi(0≤i<N),表示ai的概率。從而通過使用以下兩階段過程解決了該挑戰(zhàn):
1.在T1中,根據(jù)(p1,0,…p1,N-2)確定(q0,…qN-1)。
2.在T2中,根據(jù)(q0,…qN-1)確定(p2,0,…p2,N-2)。
上述第一級可通過使用樹遍歷的方法來實現(xiàn)(例如,深度優(yōu)先或廣度優(yōu)先),以從上到下地填入概率(自上而下)。下面是一個深度優(yōu)先迭代法的示意性示例,其中,不失去一般性,假定根節(jié)點被標記為“0”且對應(yīng)于p1,0:
作為另一示例,可將第一階段的廣度優(yōu)先方案描述為:
通過類似的方式,第二階段可以通過遍歷樹來實現(xiàn),以從下到上地填入概率(自下而上)。在以下偽代碼中使用后序深度優(yōu)先橫向法示出了示例方法:
因此,在一些實施例中,可以對更新概率的過程進行以下改變,以減少信令開銷。代替信號通知針對coeff_probs中的條目(例如,1056個)中的每個的更新標記,本解決方案可以如下推斷(未在比特流中存在的)標記。假設(shè)給出二進制化器(或等效地,系數(shù)編碼樹)。要注意,coeff_probs中的每個條目對應(yīng)于系數(shù)編碼樹中的內(nèi)部節(jié)點。如果與在coeff_probs中的條目相關(guān)聯(lián)的更新標記被信號通知為1,且該條目對應(yīng)于節(jié)點a,則關(guān)聯(lián)于與從根節(jié)點到節(jié)點a的路徑中的節(jié)點相對應(yīng)的條目的所有更新標記都被推斷為1,且不需要在比特流中信號通知。例如,如果與圖5中的節(jié)點(8)相關(guān)聯(lián)的更新標記被信號通知為1,則與節(jié)點(6)、(4)、(2)、(0)相關(guān)聯(lián)的更新標記被推斷為1,且不需要在比特流中信號通知。
在另一實施例中,更新標記可以與系數(shù)編碼樹中的級別相關(guān)聯(lián),其中,根節(jié)點處于級別0,其子節(jié)點處于級別1,等等。如果與級別L>=0相關(guān)聯(lián)的更新標記被信號通知為1,則與所有1<L的級別相關(guān)聯(lián)(即更接近根級別)的更新標記被推斷為1。
將會理解,上述樹遍歷方法是示例。可以使用其他遍歷方法(例如,迭代深化深度優(yōu)先搜索)(例如,以滿足如存儲器復(fù)雜度、調(diào)用堆棧限制等的應(yīng)用需求)。還將理解,在一些實施例中,可在上述針對概率的兩階段映射過程中填入概率時使用定點運算。要注意到,可以在中間步驟中使用不同的(更高的)精度或甚至浮點運算,以在最終結(jié)果中獲得更好的精度。
基于概率的解碼器構(gòu)造的二進制化器
在上述實施例中,編碼器確定/選擇二進制化器,然后將選擇信號通知給解碼器。在一個情況下,編碼器傳送其從多個預(yù)定義的二進制化器中的選擇。在另一情況下,編碼器指定二進制化器。例如,其可以發(fā)送對用于構(gòu)建已修改二進制化器的令牌的結(jié)構(gòu)和指派進行指定的數(shù)據(jù)。在另一示例中,其可以信號通知對解碼器可用來創(chuàng)建已修改二進制化器的令牌的缺省結(jié)構(gòu)或指派的改變。
在又一實施例中,編碼器不指定新確定的編碼樹或其他二進制化器的結(jié)構(gòu)或令牌,而是代之以發(fā)送已更新概率信息和對解碼器應(yīng)基于該已更新概率信息來構(gòu)建新二進制化器的指示。
再次使用VP8和VP9編碼樹作為示例,編碼器可傳送內(nèi)部節(jié)點概率分布,例如coeff_probs數(shù)組,或?qū)υ摂?shù)組的改變。編碼器還信號通知解碼器是否應(yīng)構(gòu)造新的樹。編碼器可以基于coeff_probs概率分布與最初設(shè)計缺省編碼樹所針對的概率之間的差異程度來確定新的樹是否有正當(dāng)理由。在一個或多個內(nèi)部節(jié)點概率之間超出閾值偏差可信號通知應(yīng)該使用新的編碼樹。在另一實施例中,編碼器獲得令牌的邊緣分布,并根據(jù)那些概率值確定是否應(yīng)該構(gòu)建新的樹。編碼器可以使用上述樹遍歷技術(shù)之一來根據(jù)內(nèi)部節(jié)點概率獲得令牌的邊緣分布。在令牌的邊緣分布中超出閾值改變可以確定應(yīng)該構(gòu)建新的樹。例如,編碼器可以指示解碼器使用首部中的標記來構(gòu)造新的樹。
解碼器然后可以使用上述樹遍歷技術(shù)來根據(jù)已更新coeff_probs概率分布確定令牌的對應(yīng)邊緣分布。然后,可以使用令牌的邊緣分布來確定合適的編碼樹,該合適的編碼樹導(dǎo)致使用較少二進制碼來編碼數(shù)據(jù)。
在又一實施例中,編碼器不指示解碼器是否應(yīng)該創(chuàng)建新的二進制化器。相反,解碼器自己確定是否應(yīng)該構(gòu)建和使用新的樹。該確定可以基于在已更新coeff_probs數(shù)組中指定的概率分布是否已經(jīng)超出閾值改變。在另一實施例中,每當(dāng)更新coeff_probs數(shù)組時,解碼器計算令牌的邊緣分布,并且根據(jù)令牌的邊緣分布確定是否應(yīng)該構(gòu)建新的樹,例如基于令牌的邊緣分布是否偏離缺省樹(或者,如果使用了已修改編碼樹,則為當(dāng)前樹)所基于的概率超過閾值量。
上下文自適應(yīng)的二進制化器選擇
在一些上述實施例中,選擇單個二進制化器來對塊組(例如幀/圖片)的令牌進行編碼。在另一實施例中,可以在塊組(例如圖片/幀)內(nèi)使用多個可用的二進制化器,并且針對當(dāng)前的非二進制符號,根據(jù)上下文信息(例如,針對該符號導(dǎo)出的上下文)選擇該多個可用的二進制化器中的一個二進制化器。
使用VP8和VP9的元素作為示例來說明該解決方案,其中:
1.針對12個令牌定義了96個上下文。
2.在對令牌進行編碼之前,從已知信息中導(dǎo)出上下文:平面類型、coeff位置和附近系數(shù)。
3.在解碼令牌之前,從已知信息中導(dǎo)出上下文:平面類型、coeff位置和附近系數(shù)。
4.對于每個上下文,可以估計在圖片/幀中的令牌上的經(jīng)驗分布。
在對令牌進行編碼和解碼之前,上下文對于VP8和VP9中的編碼器和解碼器分別是已知的。
在本實施例中,上下文被用作從候選二進制化器的有限集合中選擇二進制化器的基礎(chǔ)。在一個示例中,在圖片/幀首部中,可在比特流中信號通知將96個上下文映射到二進制化器的表;以及當(dāng)這樣的表在比特流中不存在時,可以使用缺省表。設(shè)B={T0,T1,…,TN}(N>1)表示二進制化器的有限集合。該表可被定義為數(shù)組M[4][8][3],其中每個條目是B中的索引,即,針對由(a,b,c)給出的上下文(其中0≤a≤4,0≤b<8,且0≤c<3),B中的TM[a][b][c]是所選擇的二進制化器。
一旦表M被解析,解碼器可在然后根據(jù)導(dǎo)出的上下文來針對要解碼的每個令牌選擇二進制化器。此外,我們注意到,現(xiàn)在應(yīng)該根據(jù)針對由(a,b,c)給出的上下文選擇的二進制化器TM[a][b][c]來解譯coeff_probs[a][b][c][]中的概率分布。
總而言之,示例解碼器可以使用以下過程來解碼令牌v:
D1.確定針對在VP#中定義的令牌的上下文(a,b,c)。
D2.將二進制化器T選擇為TM[a][b][c]。
D3.使用coeff_probs[a][b][c]和T來解碼v。
對應(yīng)地,示例編碼器可以使用以下處理來對令牌v進行編碼:
E1.確定針對在VP#中定義的令牌的上下文(a,b,c)。
E2.將二進制化器T選擇為TM[a][b][c]。
E3.使用T將v二進制化為二進制串T(v)=b0b1…bl(v),其中l(wèi)(v)是二進制碼的數(shù)目,并且T(v)是T中從根到對應(yīng)于v的葉子的路徑。
E4.使用coeff_probs[a][b][c]來編碼T(v)。
現(xiàn)在參考圖7A,其示出了用于對圖像或視頻編碼器中的圖像進行編碼的示例編碼過程700的流程圖。使用包括算術(shù)編碼器的編碼架構(gòu)來實現(xiàn)過程700,該算術(shù)編碼器使用算術(shù)編碼(無論是二進制算術(shù)編碼還是多級算術(shù)編碼)將二進制碼轉(zhuǎn)換為編碼數(shù)據(jù)的比特流。過程700假定圖像已經(jīng)歷圖像或視頻編碼過程以創(chuàng)建符號序列。示例符號可以包括已量化變換域系數(shù)的幅度,或表示已量化變換域系數(shù)的“令牌”。
編碼架構(gòu)還包括缺省二進制化器。缺省二進制化器的一個示例是針對VP8/VP9中的令牌的缺省編碼樹。
過程700包括操作702,確定要使用已修改二進制化器而不是針對符號序列規(guī)定的缺省二進制化器。對使用已修改二進制化器的確定可以基于:例如,對符號在圖像中的歸一化出現(xiàn)頻率的評估(測量出或估計出),以及對這些頻率與缺省二進制化器所基于的這些符號的邊緣概率之間的差的評估。
在一些實施例中,操作702可以包括基于測量或估計出的符號的歸一化出現(xiàn)頻率來構(gòu)建已修改二進制化器。在一些實施例中,操作702可以包括從多個預(yù)構(gòu)建/預(yù)建立的二進制化器中選擇已修改二進制化器。
在操作704中,使用已修改二進制化器來對符號序列進行二進制化,以生成二進制碼序列。然后,在操作706中,使用算術(shù)編碼器對二進制碼序列進行算術(shù)編碼,以產(chǎn)生編碼數(shù)據(jù)的比特流。
為了確保解碼器可以正確地重構(gòu)圖像,過程700還包括將首部信息插入到比特流中的操作708。首部信息指示要使用已修改二進制化器對與符號序列相對應(yīng)的二進制碼序列進行逆二進制化。將會理解,首部信息可以放置在與一系列塊(例如,切片、幀、圖片、圖片組或塊的其他匯集)相對應(yīng)的首部中。首部信息指示:針對該一系列的塊中至少具體符號序列(例如,令牌),解碼器要使用已修改二進制化器而不是缺省二進制化器。
在最簡單的情況下,首部信息包括對要使用已修改二進制化器進行指示的標記。然后,解碼器可以使用邊信息(例如,概率信息)來選擇或構(gòu)建二進制化器。在一些其他情況下,首部信息指定符號到缺省結(jié)構(gòu)的葉子節(jié)點的分配。在又一些其他情況下,首部信息指定編碼樹的新結(jié)構(gòu)或修改結(jié)構(gòu)。在又一些情況下,可以在首部信息中指定二進制化器構(gòu)建的其它細節(jié)。
現(xiàn)在參考圖7B,其示出了示例解碼過程750的流程圖。過程750由用于圖像或視頻的示例解碼器實現(xiàn),示例解碼器包括算術(shù)解碼器,且包括缺省二進制化器(用于將二進制碼逆二進制化為重構(gòu)符號)。示例過程750包括從比特流中提取首部信息,如操作752所示。
首部信息指示是使用已修改二進制化器還是使用缺省二進制化器。相應(yīng)地,在操作754中,解碼器根據(jù)首部信息確定要使用已修改二進制化器而不是缺省二進制化器。要注意,在一些情況下,這可以是首部信息中的顯式指令,例如對要使用已修改二進制化器進行指定的標記,或者對多個預(yù)定二進制化器選項中的具體已修改二進制化器進行指定的索引。在一些其他情況下,首部信息指定已修改二進制化器。例如,其可以指定對缺省二進制化器的改變,例如在編碼樹的葉子節(jié)點之間重新分配符號,或者其可以指定對編碼樹的結(jié)構(gòu)的改變。在又一些其他示例中,首部信息可以指定二進制化器的全部或部分結(jié)構(gòu),例如霍夫曼樹的結(jié)構(gòu)以及符號在其葉子節(jié)點之間的分配。在又一些其它實施例中的任一者中,首部信息可以提供數(shù)據(jù),如概率信息(例如,coeff_probs數(shù)組),解碼器可根據(jù)其來確定要使用已修改二進制化器而不是缺省二進制化器。
在操作756中,已修改二進制化器被用于對二進制碼序列(其已被從比特流中算術(shù)解碼出)進行逆二進制化,以重構(gòu)符號序列。
自適應(yīng)二進制化器選擇
在一些上述實施例中,在比特流中向解碼器信號通知二進制化器選擇。這可以通過以下方式來進行:發(fā)送對選擇預(yù)先設(shè)計的二進制化器進行指定的選擇索引或標記,發(fā)送對構(gòu)建已修改二進制化器進行指定的信息,或發(fā)送與圖像有關(guān)的統(tǒng)計數(shù)據(jù)(例如,概率分布),解碼器可根據(jù)該統(tǒng)計數(shù)據(jù)來構(gòu)造已修改二進制化器。在這些實施例的一些中,為了在最小化要處理的二進制碼的數(shù)量方面實現(xiàn)最佳性能,使用二次編碼:第一遍是收集構(gòu)造最佳二進制化器所需的統(tǒng)計信息,且第二遍是在編碼過程中使用新的二進制化器。在跳過第一遍或用一些啟發(fā)式方法替代第一遍的實施例中,所得到的二進制化器可能不是最佳的。
依賴于一遍編碼的備選方法是“自適應(yīng)二進制化器選擇”,其中,在編碼和解碼過程期間即時地學(xué)習(xí)和更新二進制化器。在該解決方案中,在對數(shù)據(jù)進行編碼時,基于數(shù)據(jù)的不斷演變的概率分布來選擇(例如,構(gòu)造/修改)二進制化器。在一些情況下,這可以被稱為二進制化器“調(diào)諧”。
現(xiàn)在參考圖8,其以框圖形式示出了具有自適應(yīng)二進制化器選擇的編碼器800的一個簡化示例。將會注意到,在符號級的二進制化之前定義該示例實施例中的上下文模型,而在一些上述示例中,上下文建??梢园l(fā)生在二進制化之前或之后。在該示例中,二進制化器和概率分布二者可逐符號改變,且前者至少部分地取決于后者。
編碼器800對來自其基數(shù)大于2的字母表的符號的數(shù)據(jù)序列進行編碼。編碼器800包括確定輸入符號的上下文的上下文生成器814以及將概率向量與所確定的上下文相關(guān)聯(lián)的概率生成器816。概率向量被MAC編碼器818用作編碼分布。編碼器800包括生成由MAC編碼器818使用的二進制化器820的二進制化器生成器822,其中,二進制化器820的生成至少部分地基于概率向量
在一些實施例中,二進制化器生成器822可以基于概率向量構(gòu)建新的二進制化器。在一些實施例中,二進制化器生成器822可以從候選二進制化器的有限集合中選擇新的二進制化器。然后,在由MAC編碼器818進行的MAC編碼期間,在符號的二進制化中使用新的二進制化器820。
然后,基于編碼符號更新概率分布,即概率向量
圖9示出了使用自適應(yīng)二進制化器選擇的示例解碼器900。解碼器900包括上下文生成器914、概率生成器916和MAC解碼器918。編碼數(shù)據(jù)的輸入比特流由MAC解碼器918算術(shù)解碼并逆二進制化,以重構(gòu)符號序列。二進制化器生成器922確定要由MAC解碼器918用于關(guān)于比特流中的編碼符號進行逆二進制化的二進制化器920。二進制化器生成器922將對二進制化器920的確定基于概率生成器916輸出的概率分布(概率向量)。一旦MAC解碼器918解碼了符號,更新概率分布。
將會理解,在一些示例中,符號可以是已量化變換系數(shù)、像素值、幀內(nèi)預(yù)測模式、運動向量或運動向量差,或者任何的非二進制語法元素。
在一些實施例中,確定二進制化器還可以取決于是否滿足某組條件,例如,從上次確定二進制化器開始,使用相同的上下文已經(jīng)解碼了至少T>1個符號。
在一些實施例中,可以不在每次對符號進行編碼/解碼之后更新與上下文相關(guān)聯(lián)的概率分布。在這些情況下,一旦選擇了上下文,便可例如根據(jù)編碼器和解碼器二者可獲得的邊信息確定分布。例如,邊信息可以包括與分別編碼和發(fā)送的上下文相關(guān)聯(lián)的概率分布,或者包括可根據(jù)其來估計概率分布的編碼器和解碼器二者可獲得的訓(xùn)練序列。
在將二進制化作為不可分割的一部分完全集成到算術(shù)編碼中的情況下,所描述的自適應(yīng)二進制化器選擇解決方案可以被認為是多符號算術(shù)編碼的改進設(shè)計,其中可以改變符號的排序以便于在給定的字母表A中搜索符號。要注意到,搜索可以是線性的,如在Whitten等在“Arithmetic coding for data compression”,1987,Commun.ACM 30,520-540中所描述的算術(shù)多符號編碼的所謂“CACM實現(xiàn)”中一樣,其中,CACM是“Commun.ACM”的縮寫。CACM實現(xiàn)搜索可被定義為:
在A中找到i,使得
cum_freq[i]<=(value-low)/(high-low)<cum_freq[i-1]
在以上所述中,cum_freq是存儲累積頻率的數(shù)組,值是接收的比特串,且[low,high]定義用于編碼的當(dāng)前間隔的范圍。要注意到,由于i在編碼器處是已知的,搜索過程在編碼器處不存在。由于該原因,CACM解碼器通常比CACM編碼器更復(fù)雜。在正常CACM實現(xiàn)中,字母表A中符號的排序是固定的。
有效的搜索策略可以使用二叉樹來降低搜索復(fù)雜度,其中,樹可以隨著輸入概率分布改變而改變。在這樣的示例中,二叉樹替換正常CACM實現(xiàn)中的cum_freq。要注意到,線性搜索可以被認為是二分搜索的特殊情況,其中,每個內(nèi)部節(jié)點具有至少一個葉子節(jié)點作為其子節(jié)點。還要注意到,在一些實施例中,樹形可以是固定的,但是給定字母表中的符號與葉子節(jié)點之間的映射可根據(jù)概率分布而改變。例如,本解決方案可以根據(jù)概率對符號排序,以加速線性搜索。
因此,使用自適應(yīng)二進制化器選擇的編碼器和解碼器可通過根據(jù)所確定的概率分布確定/構(gòu)建二叉樹來確定二進制化器。在二叉樹中,每個內(nèi)部節(jié)點可以存儲二元分布(例如,采用左分支的概率),以便于BAC編碼/解碼??梢愿鶕?jù)與上下文相關(guān)聯(lián)的概率分布導(dǎo)出存儲在內(nèi)部節(jié)點處的二元分布。
雖然本文的描述集中于BAC,但是所提出的解決方案同樣適用于其它熵編碼方法,如二進制V2V(可變長度到可變長度)編碼、二進制V2F(可變長度到固定長度)編碼以及二進制F2V(固定長度到可變長度)編碼。這里,二進制V2V編碼將可變長度的二進制輸入串映射到可變長度的二進制輸出串,二進制V2F編碼將可變長度的二進制輸入串映射到固定長度的二進制輸出串,以及二進制F2V編碼將固定長度的二進制輸入串映射到可變長度的二進制輸出串。此外,所提出的解決方案可被擴展到三進制(基-3)、四進制(基-4)或一般的固定基數(shù)D數(shù)字系統(tǒng)(D≥2),其中,三進制、四進制和一般的D進制樹分別可用于代替二叉樹。
現(xiàn)在參考圖10,其以流程圖形式示出了用于在視頻或圖像編碼器中對圖像進行編碼的一個示例過程1000。根據(jù)編碼格式對圖像進行處理,以產(chǎn)生符號序列(例如,在一些實施例中,已量化變換域系數(shù))。編碼器使用多符號算術(shù)編碼并使用自適應(yīng)二進制化器選擇來編碼該符號序列。
過程1000包括確定針對符號序列中的符號的上下文,如操作1002所指示的?;谏舷挛哪P蛠泶_定上下文。在操作1004中,編碼器使用針對符號字母表的上下文來確定概率分布。概率分布可以是與符號在字母表中的出現(xiàn)頻率相關(guān)聯(lián)的所存儲的概率向量或序列。在一些情況下,概率分布特定于所確定的上下文(或在一些情況下,上下文的分組)。
在操作1006中,編碼器基于概率分布確定二進制化器。在一些情況下,這可包括基于概率分布從候選二進制化器的集合中進行選擇。在其他情況下,其可以包括基于概率分布構(gòu)造二進制化器。在一些情況下,構(gòu)造二進制化器可包括修改缺省或現(xiàn)有二進制化器以更好地匹配在操作1004中確定的概率分布。
然后,在操作1008中,使用在操作1006中選擇或構(gòu)建的二進制化器對符號進行二進制化,產(chǎn)生二進制碼序列,然后在操作1010中對二進制碼序列進行算術(shù)編碼,以產(chǎn)生編碼數(shù)據(jù)的比特流。
在操作1012中,在該示例中,在編碼器返回到操作1002以確定針對下一符號的上下文之前,使用編碼符號來更新概率分布。
圖11以流程圖形式示出了視頻或圖像解碼器中用于對編碼數(shù)據(jù)的比特流進行解碼以重構(gòu)圖像的示例過程1100。過程1100包括確定針對比特流中的編碼符號的上下文,如操作1102所示。然后,解碼器在操作1104中確定(在許多情況下,與所確定的上下文相關(guān)聯(lián)的)概率分布。概率分布可以作為概率的向量或數(shù)組存儲在存儲器中,每個分布與符號字母表中的相應(yīng)符號相關(guān)聯(lián),使得操作1104涉及從存儲器檢索所存儲的分布。
在操作1106中,解碼器使用概率分布來確定用于對二進制數(shù)據(jù)進行逆二進制化以重構(gòu)符號的二進制化器。一旦二進制化器已被確定(或選擇),則在操作1108中,解碼器對比特流的一部分進行算術(shù)解碼以重構(gòu)與二進制化符號相對應(yīng)的二進制碼序列,且在然后在操作1110中,使用所確定的二進制化器對該二進制碼序列進行逆二進制化,以重構(gòu)符號。在操作1112中,基于重構(gòu)符號來更新概率分布。
樹構(gòu)建示例
如上所述,可以使用各種樹遍歷方法(例如,深度優(yōu)先或廣度優(yōu)先)來將邊緣分布映射到內(nèi)部節(jié)點概率,反之亦然。在下面的例子中,針對字母表A,根據(jù)A上的給定邊緣分布(q0,…qN-1)構(gòu)建二進制化器,且獲得內(nèi)部節(jié)點處的概率分布(p0,…pN-2)。不失一般性,假設(shè)對(q0,…qN-1)排序,即q0≥q1≥…≥qN-1。要注意到,如果一開始未對(q0,…qN-1)排序,則可以添加排序步驟以確保針對后續(xù)過程的輸入概率分布被排序。為了構(gòu)建針對字母表A的具有邊緣分布(q0,…qN)的二進制化器T,可使用以下示例過程:
1.將計數(shù)器k初始化為0。
2.創(chuàng)建N個具有標簽N-1,…,2N-2的節(jié)點,使得節(jié)點(N-1+i)具有概率qi,0≤i<N,即節(jié)點包含A中與該概率相關(guān)聯(lián)的符號。
3.創(chuàng)建具有標簽(N-2-k)的內(nèi)部節(jié)點,其子節(jié)點是滿足下列條件的兩個現(xiàn)有節(jié)點:
I.該兩個節(jié)點是它們各自子樹的根節(jié)點。換言之,該兩個節(jié)點不是任何其他現(xiàn)有節(jié)點的子節(jié)點。
II.該兩個節(jié)點在滿足上述條件I的所有節(jié)點中具有最小概率。通過和分別表示這兩個概率。
4.然后,節(jié)點(N-2-k)具有概率并在節(jié)點(N-2-k)處的編碼概率pN-2-k由給出。要注意,有可能確保且因此pN-2-k始終低于0.5。
5.將k增加1。
6.重復(fù)步驟3-5,直到k等于N-2。
上述過程生成具有N-1個內(nèi)部節(jié)點的完整二叉樹,該完整二叉樹針對字母表A定義了二進制化器T。內(nèi)部節(jié)點處的二元概率分布由(p0,…pN-2)給出,其中,pj是內(nèi)部節(jié)點j(0≤j<N-1)處的概率1(采用右分支)。
可以觀察到,以上過程與針對給定分布(q0,…qN-1)構(gòu)建霍夫曼編碼樹相同,主要區(qū)別在于步驟4,在步驟4中計算概率pN-2-k,0≤k<N-1。在BAC接受pN-2-k的有限精度表示的實際應(yīng)用中,可在樹構(gòu)建過程中或在構(gòu)建完整的樹T之后量化pN-2-k。要注意到,由于該示例過程可以保證pN-2-k≤0.5,可在存儲pN-2-k時節(jié)省一個比特(最高有效位):如果BAC內(nèi)部使用M比特來表示(0,1)中的概率,可以使用M-1個比特來存儲pN-2-k,其中M是正整數(shù)。
還將會理解,由于在上下文建模中主要使用(q0,…qN-1),且在編碼中主要使用(p0,…pN-2),所提出的解決方案實際可使用以下實現(xiàn):
1.存儲并維護(q0,…qN-1)中的元素以作為頻率計數(shù),即非歸一化,以節(jié)省計算和存儲復(fù)雜度。
2.以作為到BAC的輸入所需的算術(shù)精確度來存儲并維護(p0,…pN-2)中的元素。對于8比特BAC,可以將pi存儲為8比特?zé)o符號整數(shù)(或7比特,如果已知pi是較不可能符號的概率)。
3.上述對的計算可在整數(shù)運算中實現(xiàn)。此外,可以通過使用移位運算來對除法進行近似。
自適應(yīng)二進制化
設(shè)xm=x1x2…xm表示來自字母A的要被壓縮的序列。對于該例子,假定以下概率模型:假設(shè)以A上的未知概率分布從無記憶源發(fā)出xm。以初始邊緣分布(q1,0,…q1,N-1)開始,模型在每個符號被編碼或解碼之后如下更新分布
1.初始化i=1。
2.利用分布(qi,0,…qi,N-1),使用算術(shù)編碼來對xi進行編碼/解碼。
3.通過包括xi來將(qi,0,…qi,N-1)更新為(qi+1,0,…qi+1,N-1)。
4.將i增加1。
5.重復(fù)步驟2-3,直到i等于N。
在上述步驟3中,可以通過使用概率估計器來實現(xiàn)對概率分布進行更新,概率估計器包括例如拉普拉斯估計器、Krichevsky-Trofimov(KT)估計器、有限狀態(tài)模型或它們的變體。
在上面步驟2中,可注意到,可在對每個xi進行編碼或解碼之后改變概率分布(qi,0,…qi,N-1),即(qi,0,…qi,N-1)和(qi+1,0,…qi+1,N-1)可能不同。如果發(fā)生這種變化,則針對xi+1可能需要新的二進制化器。設(shè)Ti表示針對xi的二進制化器。為了適配用于每個xi的二進制化器,可以根據(jù)編碼分布(qi,0,…qi,N-1)(例如通過使用上述樹構(gòu)建方法)來針對xi生成Ti。因此,編碼器側(cè)的上述步驟2可以實現(xiàn)為:
3.Ea.針對字母表A,利用分布(qi,0,…qi,N-1)生成二進制化器Ti,并獲得Ti的內(nèi)部節(jié)點處的二元分布(pi,0,…pi,N-2)。
3.Eb.使用二進制化器Ti將xi轉(zhuǎn)換成二進制串。
3.Ec.利用(pi,0,…pi,N-2),使用BAC編碼二進制串。
在解碼器側(cè),上面的步驟2可以實現(xiàn)如下:
3.Da.針對字母表A,利用分布(qi,0,…qi,N-1)生成二進制化器Ti,并獲得Ti的內(nèi)部節(jié)點處的二元分布(pi,0,…pi,N-2)。
3.Db.利用(pi,0,…pi,N-2),使用BAC來解碼二進制串,使得二進制串是從根節(jié)點去往Ti中的葉子節(jié)點的路徑。
3.Dc.將xi解碼為A中與以上識別出的Ti中的葉子節(jié)點相關(guān)聯(lián)的符號。
在上述的步驟2.Ea/2.Da中,可通過以下方式實現(xiàn)生成Ti:如果(qi,0,…qi,N-1)與(qi-1,0,…qi-1,N-1)之間的差是稀疏的,更新Ti-1。例如,如果Ti-1是針對(qi-1,0,…qi-1,N-1)的霍夫曼樹,則可以針對(qi,0,…qi,N-1)將Ti構(gòu)建為霍夫曼樹。要注意,為了檢查是否不需要更新Ti,可以進行檢查以驗證Ti-1是否針對(qi,0,…qi,N-1)滿足同屬(sibling)特性。如果答案是肯定的,則Ti=Ti-1;否則,可以執(zhí)行更新。
最后,為了減少在生成Ti時涉及的計算復(fù)雜度,一些實施例可僅在每對L>1個符號進行了編碼/解碼時或者在(qi,0,…qi,N-1)與(q*,0,…q*,N-1)有足夠的不同時才更新二進制化器,(q*,0,…q*,N-1)表示A上用于生成Ti-1(即,先前的二進制化器)的邊緣分布。(qi,0,…qi,N-1)和(q*,0,…q*,N-1)之間的差可被測量,例如,通過使用Lp范數(shù)(p的示例包括1、2和∞)、KL散度、漢明距離、或針對(qi,0,…qi,N-1)在其處同屬特性被Ti-1違反的位置的數(shù)量。
簡化
在一些實施例中,針對給定的字母表A,自適應(yīng)二進制化可以被應(yīng)用到較粗集合S,以平衡自適應(yīng)二進制化的計算成本和二進制碼節(jié)省的益處,且給定S,如果有必要,使用缺省靜態(tài)二進制化方案對A的符號進行二進制化。在以上所述中,較粗集合S可具有以下特性:
1.S的基數(shù)小于A的基數(shù),且
2.S中的每個符號對應(yīng)于A中的一個或多個符號。換言之,S中的符號可被視為對A中的一個或多個符號進行合并的結(jié)果。
作為例子,假設(shè)A={0,±1,±2,…,±32767}。S的較粗集合可被定義為S={s0,s1,s2,s3},其中,s0對應(yīng)于A中的0,s1對應(yīng)于A中的±1,s2對應(yīng)于A中的±2,且s3對應(yīng)于A中的所有其它符號。
在另一些情況下,針對給定字母表A={0,1,…,N-1},編碼/解碼過程可通過保持對二進制化器進行定義的樹的形狀并且根據(jù)演變中的分布(qi,0,…qi,N-1)僅改變?nèi)~子節(jié)點與字母表A中的符號之間的映射,來實現(xiàn)自適應(yīng)二進制化。設(shè)lk表示從樹中的根節(jié)點到達葉子節(jié)點k所需的二進制碼的數(shù)量。整體而言,(l0,l1,…,lN-1)被稱為樹的長度函數(shù)。設(shè)π表示排列{0,1,…,N-1},使得π(k)表示存儲A中的符號k的葉子節(jié)點的索引。設(shè)πi表示在時刻i處選擇的排列。因而,給定πi-1、(qi,0,…qi,N-1)和長度函數(shù)(l0,l1,…,lN-1),我們的解決方案試圖尋找映射(排列)π,使得:
如果不存在這樣的πi,則πi=πi-1。如果可能,可通過將符號α與另一符號β,α≠β,交換來實現(xiàn)上述不等式,使得,
如果qi,α<qi,β且則πi(α)=πi-1(β)且πi(β)=πi-1(α)。
備選地,找到針對給定(qi,0,…qi,N-1)和(l0,l1,…,lN-1)最小化的πi。
上下文相關(guān)的自適應(yīng)二進制化
在一些實施例中,動態(tài)二進制化器自適應(yīng)可以是上下文相關(guān)的。設(shè)xm=x1x2…xm表示來自字母A的要被壓縮的序列。假設(shè)具有K個上下文的自適應(yīng)上下文建模方案,針對每個xi,1≤i≤m,該方案從上下文集合中導(dǎo)出上下文Ci,并將每個k,0≤k<K與初始分布(q0,0|k,…q0,N-1|k)相關(guān)聯(lián)。在以上所述中,K是由上下文建模過程定義的正整數(shù)。使用算術(shù)編碼和上述上下文建模方案對xm編碼和解碼的示例過程可描述如下:
1.初始化i=1,且針對所有k=0,1,…K-1,n(k)=0。
2.使用給定的上下文建模過程導(dǎo)出針對xi的上下文Ci。
3.利用分布使用算術(shù)編碼來對xi進行編碼/解碼。
4.通過包括xi來將更新為
5.將i增加1,且將n(Ci)增加1。
6.重復(fù)步驟2-3,直到i等于N。
在上述步驟4中,可以通過使用概率估計器來實現(xiàn)對概率分布進行更新,概率估計器包括例如拉普拉斯估計器、Krichevsky-Trofimov(KT)估計器、有限狀態(tài)模型或它們的變體。
在上述步驟3中,與針對第i個符號xi的上下文Ci相關(guān)聯(lián)的概率分布可不同于且因此可以針對xi使用新的二進制化器。設(shè)表示針對xi的二進制化器。因而可以根據(jù)分布來針對xi生成例如,通過使用上述的樹構(gòu)建方法。因此,編碼器側(cè)的上述步驟3可如下實現(xiàn):
3.Ea.針對字母表A,利用分布生成二進制化器并獲得的內(nèi)部節(jié)點處的二元分布
3.Eb.使用二進制化器將xi轉(zhuǎn)換成二進制串。
3.Ec.利用使用BAC編碼二進制串。
在解碼器側(cè),上面的步驟2可以實現(xiàn)如下:
3.Da.針對字母表A,利用分布生成二進制化器并獲得的內(nèi)部節(jié)點處的二元分布
3.Db.利用使用BAC來解碼二進制串,使得二進制串是從根節(jié)點去往中的葉子節(jié)點的路徑。
3.Dc.將xi解碼為A中與以上識別出的中的葉子節(jié)點相關(guān)聯(lián)的符號。
在上述的步驟2.Ea/2.Da中,可通過以下方式實現(xiàn)生成:如果與之間的差是稀疏的,更新例如,如果是針對的霍夫曼樹,則可以針對將構(gòu)建為霍夫曼樹。要注意到,為了檢查是否不需要更新可以檢查以驗證針對是否滿足同屬特性。如果答案是肯定的,則否則,需要更新。
為了減少生成時涉及的計算復(fù)雜度,上述解決方案可僅在每對上下文Ci之下的L>1個符號進行了編碼/解碼時或者在與有足夠的不同時才更新二進制化器,表示A上用于生成(即,先前的二進制化器)的邊緣分布。和之間的差可被測量,例如,通過使用Lp范數(shù)(p的示例包括1、2和∞)、KL散度、漢明距離、或針對在其處同屬特性被違反的位置的數(shù)量。
自適應(yīng)重排序
在使用多符號算術(shù)編碼的一些實施例中,動態(tài)二進制化器適配可以適于字母表重排序。假設(shè)在算術(shù)解碼器中使用固定搜索策略(例如,CACM解碼器中的線性搜索)來確定符號作為解碼器輸出。設(shè)xm=x1x2…xm表示來自字母表A={a0,…aN-1}的要壓縮的序列,其中A的基數(shù)大于2。對于該例子,假定以下概率模型:假設(shè)以A上的未知概率分布從無記憶源發(fā)出xm。以初始邊緣分布(q1,0,…q1,N-1)開始,模型在每個符號被如上所述地編碼或解碼之后更新分布,以用于自適應(yīng)二進制化。
要注意到,可在對每個xi進行編碼或解碼之后改變概率分布(qi,0,…qi,N-1),即(qi,0,…qi,N-1)和(qi+1,0,…qi+1,N-1)可能不同。如果這樣的改變發(fā)生,可能需要將A的新排序用于xi+1,以提高搜索性能。設(shè)πi表示針對xi確定的排序,其中,πi(j)確定A中的第j個符號aj的索引,j=0,…,N-1。為了適應(yīng)針對每個xi使用的排序,可根據(jù)編碼分布(qi,0,…qi,N-1)來針對xi確定πi,例如,如果qi,j>qi,l,通過在解碼器使用的固定搜索策略中將aj置于al之前,j≠l。因此,編碼器側(cè)的上述步驟2可以實現(xiàn)為:
3.Ea.根據(jù)分布(qi,0,…qi,N-1)確定針對字母表A的排列πi。
3.Eb.使用重排序字母表(即,使用πi來排列的A)來編碼xi。
在解碼器側(cè),上面的步驟2可以實現(xiàn)如下:
3.Da.根據(jù)分布(qi,0,…qi,N-1)確定針對字母表A的排列πi。
3.Db.使用重排序字母表(即,使用πi來排列的A)和分布(qi,0,…qi,N-1)(或等效地,其使用πi的排列)來解碼xi。
在上述的步驟2.Ea/2.Da中,可通過以下方式實現(xiàn)確定πi:如果(qi,0,…qi,N-1)與(qi-1,0,…qi-1,N-1)之間的差是稀疏的,更新πi-1。例如,假設(shè)根據(jù)(qi-1,0,…qi-1,N-1)獲得πi-1,通過檢查符號xi以及πi-1中在其前面的符號是否需要根據(jù)(qi,0,…qi,N-1)來交換,可以獲得πi。
為了減少在確定Ai時涉及的計算復(fù)雜度,一些實施例可僅在每對L>1個符號進行了編碼/解碼時或者在(qi,0,…qi,N-1)與(q*,0,…q*,N-1)有足夠的不同時才更新字母表排序,(q*,0,…q*,N-1)表示A上用于確定Ai-1的邊緣分布。
最后,在一些實施例中,動態(tài)字母表重排序可以是上下文相關(guān)的,其中擴展類似于針對動態(tài)二進制化器適配所描述的擴展。
現(xiàn)在參考圖12,其中示出了編碼器1200的示例性實施例的簡化框圖。編碼器1200包括處理器1202、存儲器1204、和編碼應(yīng)用1206。編碼應(yīng)用1206可以包括存儲在存儲器1204中并包含指令的計算機程序或應(yīng)用,所述指令在執(zhí)行時使處理器1202執(zhí)行諸如本文描述的操作等的操作。例如,編碼應(yīng)用1206可以編碼并輸出根據(jù)本文描述的過程所編碼的比特流。可以理解,編碼應(yīng)用1206可以存儲在非瞬時計算機可讀介質(zhì)上,如致密光盤、閃存設(shè)備、隨機存取存儲器、硬盤等等。當(dāng)執(zhí)行指令時,結(jié)果是將1202處理器配置為使得可創(chuàng)建實現(xiàn)所描述的過程的專用處理器。在一些示例中,這樣的處理器可以被稱為“處理器線路”或“處理器電路”。
現(xiàn)在還參考圖13,其示出了解碼器1300的示例實施例的簡化框圖。解碼器1300包括處理器1302、存儲器1304、以及解碼應(yīng)用1306。解碼應(yīng)用1306可以包括存儲在存儲器1304中并包含指令的計算機程序或應(yīng)用,所述指令在執(zhí)行時使處理器1302執(zhí)行諸如本文描述的操作等的操作。可以理解,解碼應(yīng)用1306可以存儲在計算機可讀介質(zhì)上,如致密光盤、閃存設(shè)備、隨機存取存儲器、硬盤等等。當(dāng)執(zhí)行指令時,結(jié)果是將處理器1302配置為使得可創(chuàng)建實現(xiàn)所描述的過程的專用處理器。在一些示例中,這樣的處理器可以被稱為“處理器線路”或“處理器電路”。
可以認識到,根據(jù)本申請的解碼器和/或編碼器可以在多個計算設(shè)備中實現(xiàn),包括但不限于服務(wù)器、合適編程的通用計算機、音頻/視頻編碼和回放設(shè)備、電視機頂盒、電視廣播設(shè)備和移動設(shè)備。解碼器或編碼器可以通過軟件來實現(xiàn),該軟件包含用于將處理器配置為執(zhí)行本文所述功能的指令。軟件指令可以存儲在任何合適的非瞬時計算機可讀存儲器上,包括CD、RAM、ROM、閃存等。
將理解的是,可以使用標準計算機編程技術(shù)和語言來實現(xiàn)本文描述的解碼器和/或編碼器以及實現(xiàn)所描述的用于配置編碼器的方法/過程的模塊、例程、進程、線程或其他軟件組件。本申請不限于特定處理器、計算機語言、計算機編程慣例、數(shù)據(jù)結(jié)構(gòu)、其他這種實現(xiàn)細節(jié)。本領(lǐng)域技術(shù)人員將認識到,可以將所描述的處理實現(xiàn)為存儲在易失性或非易失性存儲器中的計算機可執(zhí)行代碼的一部分、專用集成芯片(ASIC)的一部分等。
可以對所述實施例進行某種調(diào)整和修改。因此,上文討論的實施例應(yīng)被認識是說明性而非限制性的。