本公開涉及熵編碼和熵解碼,更具體地,涉及在基于上下文的二進(jìn)制算術(shù)編碼和解碼中使用的概率模型更新方法和設(shè)備。
背景技術(shù):
在h.264和mpeg-4中,視頻信號分層次地分成序列、幀、片、宏塊和塊。塊成為最小的處理單元。就編碼而言,通過幀內(nèi)預(yù)測或幀間預(yù)測來獲得塊的殘留數(shù)據(jù)。此外,通過變換、量化、掃描、行程長度編碼和熵編碼來壓縮殘留數(shù)據(jù)。作為熵編碼技術(shù),存在基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(在下文中稱為cabac)。根據(jù)cabac,使用上下文索引ctxldx來確定一個上下文模型;確定所確定的上下文模型的最小可能符號(lps)或最大可能符號(mps)的發(fā)生概率以及關(guān)于0和1之間的哪個二進(jìn)制值對應(yīng)于mps的信息valmps;以及基于valmps和lps的概率執(zhí)行二進(jìn)制算術(shù)編碼。
技術(shù)實(shí)現(xiàn)要素:
本公開要解決的技術(shù)問題是:通過改進(jìn)在基于上下文的二進(jìn)制算術(shù)編碼/解碼處理期間執(zhí)行的概率更新過程,來提高圖像壓縮效率。
技術(shù)問題
根據(jù)本公開實(shí)施方式,基于二進(jìn)制位的自相關(guān)值或二進(jìn)制位的熵值來確定縮放因子,并且通過使用確定的縮放因子來更新在二進(jìn)制算術(shù)編碼和解碼中使用的概率。
本發(fā)明的有益效果
根據(jù)本公開實(shí)施方式,可通過最小化二進(jìn)制位值和二進(jìn)制位預(yù)測概率之間的誤差值來減少由算術(shù)編碼引起的位發(fā)生量(bitoccurrenceamount)。
附圖說明
圖1是根據(jù)本公開實(shí)施方式的視頻編碼設(shè)備的框圖;
圖2是根據(jù)本公開實(shí)施方式的視頻解碼設(shè)備的框圖;
圖3是根據(jù)本公開實(shí)施方式用于描述編碼單元的概念的圖;
圖4是根據(jù)本公開實(shí)施方式基于編碼單元的圖像編碼器的框圖;
圖5是根據(jù)本公開實(shí)施方式基于編碼單元的圖像編碼器的框圖;
圖6是示出根據(jù)本公開實(shí)施方式基于深度的較深層編碼單元和分區(qū)的圖;
圖7是根據(jù)本公開實(shí)施方式用于描述編碼單元和變換單元之間的關(guān)系的圖;
圖8示出根據(jù)本公開實(shí)施方式的根據(jù)深度的多條編碼信息;
圖9是根據(jù)本公開實(shí)施方式的根據(jù)深度的較深層編碼單元的圖;
圖10、圖11和圖12是根據(jù)本公開實(shí)施方式描述編碼單元、預(yù)測單元和頻率變換單元之間關(guān)系的圖;
圖13是根據(jù)表格1的編碼模式信息描述編碼單元、預(yù)測單元和變換單元之間關(guān)系的圖;
圖14是根據(jù)本公開實(shí)施方式的熵編碼設(shè)備的框圖;
圖15a和圖15b示出在基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(cabac)中使用的概率更新過程;
圖16是根據(jù)本公開實(shí)施方式的概率更新過程的流程圖;
圖17a和圖17b是用于說明自相關(guān)值的參考圖;
圖18是根據(jù)本公開實(shí)施方式用于二進(jìn)制算術(shù)編碼的概率更新方法的流程圖;
圖19是根據(jù)本公開的另一實(shí)施方式在cabac中使用的概率更新方法的流程圖;
圖20a和圖20b示出基于cabac執(zhí)行二進(jìn)制算術(shù)編碼的過程;
圖21是根據(jù)縮放因子的數(shù)量基于自相關(guān)值rk確定的縮放因子α的變化的圖;
圖22是根據(jù)縮放因子的數(shù)量的均方誤差(mse)的變化的圖;
圖23是根據(jù)本公開實(shí)施方式的熵解碼設(shè)備的框圖;
圖24是根據(jù)本公開實(shí)施方式用于二進(jìn)制算術(shù)解碼的概率更新方法的流程圖;
圖25是根據(jù)本公開的另一實(shí)施方式用于二進(jìn)制算術(shù)解碼的概率更新方法的流程圖。
具體實(shí)施方式
根據(jù)本公開實(shí)施方式,用于二進(jìn)制算術(shù)解碼的概率更新方法包括:接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位(bin);通過使用接收到的預(yù)定數(shù)量的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值;基于所述自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子;通過使用所確定的至少一個縮放因子來更新在基于上下文的自適應(yīng)二進(jìn)制算術(shù)解碼中使用的概率;以及通過使用更新的概率對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)解碼。
根據(jù)本公開實(shí)施方式,用于二進(jìn)制算術(shù)編碼的概率更新方法包括:接收要進(jìn)行二進(jìn)制算術(shù)編碼的預(yù)定數(shù)量的二進(jìn)制位;通過使用接收到的預(yù)定數(shù)量的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值;基于所述自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子;通過使用所確定的至少一個縮放因子來更新在基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼中使用的概率;以及通過使用更新的概率對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)編碼。
根據(jù)本公開實(shí)施方式,用于二進(jìn)制算術(shù)解碼的概率更新方法包括:接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位;通過使用具有不同縮放因子的多個概率模型來獲得指示二進(jìn)制位的平均位值的熵值;確定用于在多個概率模型中獲得最小熵值的概率模型的縮放因子;以及對二進(jìn)制位執(zhí)行基于上下文的自適應(yīng)二進(jìn)制算術(shù)解碼,其中所述自適應(yīng)二進(jìn)制算術(shù)解碼包括利用所確定的縮放因子執(zhí)行概率更新過程。
根據(jù)本公開實(shí)施方式,用于二進(jìn)制算術(shù)編碼的概率更新方法包括:接收要進(jìn)行二進(jìn)制算術(shù)編碼的預(yù)定數(shù)量的二進(jìn)制位;通過使用具有不同縮放因子的多個概率模型來獲得指示二進(jìn)制位的平均位值的熵值;確定用于在多個概率模型中獲得最小熵值的概率模型的縮放因子;以及對二進(jìn)制位執(zhí)行基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼,其中所述自適應(yīng)二進(jìn)制算術(shù)編碼包括使用所確定的縮放因子執(zhí)行概率更新過程。
根據(jù)本公開實(shí)施方式,熵解碼設(shè)備包括逆二值化器、上下文建模器和常規(guī)解碼器,其中,逆二值化器配置成將預(yù)定語法元素的值映射到二進(jìn)制值的二進(jìn)制位;上下文建模器配置成:接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位,通過使用接收到的預(yù)定數(shù)量的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值,基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子,并通過使用確定的至少一個縮放因子更新在基于上下文的自適應(yīng)二進(jìn)制算術(shù)解碼中使用的概率;以及常規(guī)解碼器配置成通過使用更新的概率對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)解碼。
根據(jù)本公開實(shí)施方式,熵編碼設(shè)備包括二值化器、上下文建模器和常規(guī)編碼器,其中,二值化器配置成將預(yù)定語法元素的值映射到二進(jìn)制值的二進(jìn)制位;上下文建模器配置成:接收要進(jìn)行二進(jìn)制算術(shù)編碼的預(yù)定數(shù)量的二進(jìn)制位,通過使用接收到的預(yù)定數(shù)量的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值,基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子,并通過使用確定的至少一個縮放因子來更新在基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼中使用的概率;以及常規(guī)編碼器配置成通過使用更新的概率對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)編碼。
根據(jù)本公開實(shí)施方式,熵解碼設(shè)備包括逆二值化器、上下文建模器和常規(guī)解碼器,其中,逆二值化器配置成將二進(jìn)制值的二進(jìn)制位映射到預(yù)定語法元素的值;上下文建模器配置成:接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位,通過使用具有不同縮放因子的多個概率模型來獲得指示二進(jìn)制位的平均位值的熵值,確定用于在多個概率模型中獲得最小熵值的概率模型的縮放因子,并使用所確定的縮放因子執(zhí)行概率更新過程;以及常規(guī)解碼器配置成通過使用更新的概率對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)解碼。
本發(fā)明的詳細(xì)描述
將參照附圖對本公開的優(yōu)選示例進(jìn)行詳細(xì)描述。
圖1是根據(jù)本公開實(shí)施方式的視頻編碼設(shè)備的框圖。
根據(jù)實(shí)施方式的視頻編碼設(shè)備100包括最大編碼單元(lcu)分割器110、編碼單元確定器120和輸出器130。
lcu分割器110可基于lcu分割當(dāng)前畫面,其中l(wèi)cu是圖像當(dāng)前畫面所具有的最大尺寸的編碼單元。如果當(dāng)前畫面大于lcu,則當(dāng)前畫面的圖像數(shù)據(jù)可被分割成至少一個lcu。根據(jù)實(shí)施方式的lcu可以是具有32×32、64×64、128×128、256×256等尺寸的數(shù)據(jù)單元,其中數(shù)據(jù)單元的形狀是具有寬度和長度均為2的倍數(shù)并大于8的正方形。圖像數(shù)據(jù)可根據(jù)至少一個lcu輸出至編碼單元確定器120。
根據(jù)實(shí)施方式的編碼單元可由最大尺寸和深度來表征。深度表示編碼單元在空間上從最大編碼單元開始被分割的次數(shù),且隨著深度加深,根據(jù)深度的較深層編碼單元可以從最大編碼單元被分割到最小編碼單元。最大編碼單元的深度是最上層深度,最小編碼單元的深度是最下層深度。由于與每個深度對應(yīng)的編碼單元的尺寸隨著最大編碼單元的深度加深而減小,因而與較上層深度對應(yīng)的編碼單元可包括與更下層深度對應(yīng)的多個編碼單元。
如上所述,根據(jù)編碼單元的最大尺寸,將當(dāng)前畫面的圖像數(shù)據(jù)分割成最大編碼單元,且最大編碼單元中的每一個可包括根據(jù)深度分割的較深層編碼單元。由于根據(jù)實(shí)施方式的最大編碼單元根據(jù)深度分割,因而最大編碼單元中所包括的空間域的圖像數(shù)據(jù)可根據(jù)深度被分層地分類。
可預(yù)先確定編碼單元的、限制最大編碼單元的高度和寬度被分層分割的總次數(shù)的最大深度和最大尺寸。
編碼單元確定器120對通過根據(jù)深度分割最大編碼單元的區(qū)域而獲得的至少一個分割區(qū)域進(jìn)行編碼,并且根據(jù)所述至少一個分割區(qū)域確定輸出最終編碼圖像數(shù)據(jù)的深度。換句話說,通過對根據(jù)當(dāng)前畫面的最大編碼單元、基于深度的較深層編碼單元中的圖像數(shù)據(jù)進(jìn)行編碼、以及選擇具有最小編碼誤差的深度,編碼單元確定器120確定編碼深度。將確定的編碼深度和每個lcu的圖像數(shù)據(jù)輸出至輸出器130。
基于與等于或低于最大深度的至少一個深度對應(yīng)的較深層編碼單元對最大編碼單元中的圖像數(shù)據(jù)進(jìn)行編碼,并且對基于較深層編碼單元中的每個編碼圖像數(shù)據(jù)的結(jié)果進(jìn)行比較。可在對比較深層編碼單元的編碼誤差之后選擇具有最小編碼誤差的深度??蔀槊總€最大編碼單元選擇至少一個編碼深度。
隨著編碼單元根據(jù)深度被分層分割以及隨著編碼單元的數(shù)量增加,最大編碼單元的尺寸被分割。此外,即使各編碼單元對應(yīng)于一個最大編碼單元中的同一深度,依然通過分別測量每個編碼單元的圖像數(shù)據(jù)的編碼誤差來確定是否將對應(yīng)于同一深度的編碼單元中每一個分割到更下層深度。因此,即使當(dāng)圖像數(shù)據(jù)包含在一個最大編碼單元中時(shí),圖像數(shù)據(jù)仍將根據(jù)深度被分割成各區(qū)域,且在一個最大編碼單元中編碼誤差可能根據(jù)區(qū)域而不同,因而在圖像數(shù)據(jù)中編碼深度可根據(jù)區(qū)域而不同。因此,可在一個最大編碼單元中設(shè)置一個或多個編碼深度,并且可以根據(jù)至少一個編碼深度的編碼單元將最大編碼單元的圖像數(shù)據(jù)劃分開。
因此,根據(jù)實(shí)施方式的編碼單元確定器120可確定在當(dāng)前最大編碼單元中所包括的具有樹結(jié)構(gòu)的編碼單元。根據(jù)實(shí)施方式的“具有樹結(jié)構(gòu)的編碼單元”包括:最大編碼單元中所包括的所有較深層編碼單元之中、與確定為編碼深度的深度相對應(yīng)的編碼單元。在最大編碼單元的同一區(qū)域中,可根據(jù)深度分層確定具有編碼深度的編碼單元;以及在不同的區(qū)域中,可獨(dú)立確定具有編碼深度的編碼單元。同樣地,可獨(dú)立于另一個區(qū)域中的編碼深度,確定當(dāng)前區(qū)域中的編碼深度。
根據(jù)實(shí)施方式的最大深度是與從最大編碼單元到最小編碼單元的分割次數(shù)相關(guān)的索引。根據(jù)實(shí)施方式的第一最大深度可表示從最大編碼單元到最小編碼單元的分割次數(shù)的總數(shù)。根據(jù)實(shí)施方式的第二最大深度可表示從最大編碼單元到最小編碼單元的深度層級的總數(shù)。例如,當(dāng)最大編碼單元的深度是0時(shí),最大編碼單元進(jìn)行一次分割的編碼單元的深度可設(shè)置為1,而最大編碼單元進(jìn)行兩次分割的編碼單元的深度可設(shè)置為2。這里,如果最小編碼單元是其中最大編碼單元被分割四次的編碼單元,則存在深度0、1、2、3和4的深度層級,因此第一最大深度可設(shè)置為4,第二最大深度可設(shè)置為5。
可根據(jù)最大編碼單元執(zhí)行預(yù)測編碼和頻率變換。還根據(jù)最大編碼單元、基于深度等于或小于最大深度的較深層編碼單元,執(zhí)行預(yù)測編碼和頻率變換。
由于不論何時(shí)根據(jù)深度分割最大編碼單元,較深層編碼單元的數(shù)量均增大,因此對深度加深時(shí)所生成的所有較深層編碼單元執(zhí)行編碼(包括預(yù)測編碼和頻率變換)。為描述的方便,現(xiàn)在將基于最大編碼單元中的當(dāng)前深度編碼單元對預(yù)測編碼和頻率變換進(jìn)行描述。
根據(jù)實(shí)施方式的視頻編碼設(shè)備100可選擇用于圖像數(shù)據(jù)編碼的不同尺寸或形狀的數(shù)據(jù)單元。為了對圖像數(shù)據(jù)進(jìn)行編碼,可執(zhí)行諸如預(yù)測編碼、頻率變換和熵編碼等操作,此時(shí)對所有操作可使用相同的數(shù)據(jù)單元或者對每一個操作可使用不同的數(shù)據(jù)單元。
例如,視頻編碼設(shè)備100不僅可選擇用于對圖像數(shù)據(jù)編碼的編碼單元,還可選擇與編碼單元不同的數(shù)據(jù)單元,以對編碼單元中的圖像數(shù)據(jù)執(zhí)行預(yù)測編碼。
為了在最大編碼單元中執(zhí)行預(yù)測編碼,可基于與編碼深度相對應(yīng)的編碼單元(即基于不再分割為與更下層深度相對應(yīng)的編碼單元的編碼單元)執(zhí)行預(yù)測編碼。在下文中,現(xiàn)將不再進(jìn)行分割并成為預(yù)測編碼的基礎(chǔ)單元的編碼單元稱為“預(yù)測單元”。通過分割預(yù)測單元獲得的分區(qū)可包括通過分割預(yù)測單元的高度和寬度中的至少一個獲得的預(yù)測單元或數(shù)據(jù)單元。
例如,當(dāng)2n×2n(其中n是正整數(shù))的編碼單元不再進(jìn)行分割并且成為2n×2n的預(yù)測單元時(shí),則分區(qū)的尺寸可為2n×2n、2n×n、n×2n或n×n。分區(qū)類型的示例可包括通過對稱地分割預(yù)測單元的高度或?qū)挾全@得的對稱分區(qū),并且可選擇性地包括通過對預(yù)測單元的高度或?qū)挾冗M(jìn)行不對稱分割(諸如1:n或n:1)獲得的分區(qū)、通過對預(yù)測單元進(jìn)行幾何分割獲得的分區(qū)、具有任意形狀的分區(qū)等。
預(yù)測單元的預(yù)測模式可以是幀內(nèi)模式、幀間模式和跳過模式中的至少一者。例如,可對2n×2n、2n×n、n×2n或n×n的分區(qū)執(zhí)行幀內(nèi)模式和幀間模式。此外,可僅對2n×2n的分區(qū)執(zhí)行跳過模式。對編碼單元中的一個預(yù)測單元獨(dú)立地執(zhí)行編碼,由此選擇具有最小編碼誤差的預(yù)測模式。
根據(jù)實(shí)施方式的視頻編碼設(shè)備100不僅可基于用于對圖像數(shù)據(jù)進(jìn)行編碼的編碼單元來對編碼單元中的圖像數(shù)據(jù)執(zhí)行頻率變換,還可基于與編碼單元不同的數(shù)據(jù)單元對圖像數(shù)據(jù)執(zhí)行頻率變換。
為了在編碼單元中執(zhí)行頻率變換,可基于具有等于或小于編碼單元的尺寸的數(shù)據(jù)單元執(zhí)行頻率變換。例如,用于頻率變換的數(shù)據(jù)單元可包括幀內(nèi)模式的數(shù)據(jù)單元和幀間模式的數(shù)據(jù)單元。
用作頻率變換的基礎(chǔ)的數(shù)據(jù)單元稱為“變換單元”。類似于編碼單元,可將編碼單元中的變換單元遞歸地分割為更小尺寸的區(qū)域,從而可以區(qū)域?yàn)閱挝华?dú)立確定變換單元。因此,可基于根據(jù)變換深度的、具有樹結(jié)構(gòu)的變換單元對編碼單元中的殘差數(shù)據(jù)進(jìn)行分割。
還可以在根據(jù)實(shí)施方式的變換單元中設(shè)置指示通過對編碼單元的高度和寬度進(jìn)行分割來達(dá)到變換單元的分割次數(shù)的變換深度。例如,在2n×2n的當(dāng)前編碼單元中,當(dāng)變換單元的尺寸為2n×2n時(shí),變換深度可以為0,當(dāng)變換單元的尺寸為n×n時(shí),變換深度可以為1,并且當(dāng)變換單元的尺寸為n/2×n/2時(shí),變換深度可以為2。換句話說,可根據(jù)變換深度設(shè)置具有樹結(jié)構(gòu)的變換單元。
根據(jù)與編碼深度對應(yīng)的編碼單元的編碼信息不僅需要關(guān)于編碼深度的信息,還需要關(guān)于與預(yù)測編碼和變換有關(guān)的信息。因此,編碼單元確定器120不僅確定具有最小編碼誤差的編碼深度,還確定將預(yù)測單元分割成分區(qū)的分區(qū)類型、根據(jù)預(yù)測單元的預(yù)測模式以及用于頻率變換的變換單元的尺寸。
下面將參考圖3至圖12詳細(xì)描述根據(jù)實(shí)施方式、基于最大編碼單元中的樹結(jié)構(gòu)的編碼單元和確定分區(qū)的方法。
編碼單元確定器120可通過使用基于拉格朗日乘數(shù)的速率失真優(yōu)化來測量根據(jù)深度的較深層編碼單元的編碼誤差。
輸出單元130以比特流輸出最大編碼單元的圖像數(shù)據(jù)和根據(jù)深度的編碼模式信息,其中所述圖像數(shù)據(jù)基于由編碼單元確定器120確定的至少一個編碼深度被編碼。
可通過對圖像的殘差數(shù)據(jù)進(jìn)行編碼來獲得編碼圖像數(shù)據(jù)。
根據(jù)深度的編碼模式信息可包括編碼深度信息、預(yù)測單元的分區(qū)類型信息、預(yù)測模式信息和變換單元尺寸信息。
可通過使用根據(jù)深度的分割信息來定義指定是否對更下層深度而不是當(dāng)前深度的編碼單元執(zhí)行編碼的編碼深度信息。如果當(dāng)前編碼單元的當(dāng)前深度是編碼深度,則對當(dāng)前編碼單元進(jìn)行編碼,因此分割信息可被定義為不將當(dāng)前編碼單元分割至更下層深度。在之相反,如果當(dāng)前編碼單元的當(dāng)前深度不是編碼深度,則必須對更下層深度的編碼單元執(zhí)行編碼,因此當(dāng)前深度的分割信息可被定義為將當(dāng)前編碼單元分割至更下層深度的編碼單元。
如果當(dāng)前深度不是編碼深度,則對被分割為更下層深度的編碼單元的編碼單元來執(zhí)行編碼。由于在當(dāng)前深度的一個編碼單元中存在更下層深度的至少一個編碼單元,因此對更下層深度的每個編碼單元重復(fù)執(zhí)行編碼,因此,可針對具有相同深度的編碼單元遞歸地執(zhí)行編碼。
由于對一個最大編碼單元確定具有樹結(jié)構(gòu)的編碼單元,并且對編碼深度的編碼單元確定與至少一個編碼模式有關(guān)的信息,因此可對一個最大編碼單元確定與至少一個編碼模式有關(guān)的信息。此外,由于圖像數(shù)據(jù)根據(jù)深度進(jìn)行分層分割,因此最大編碼單元的圖像數(shù)據(jù)的編碼深度可根據(jù)位置而不同,因此,可針對圖像數(shù)據(jù)設(shè)置與編碼深度和編碼模式有關(guān)的信息。
因此,根據(jù)實(shí)施方式的輸出單元130可將與相應(yīng)編碼深度和編碼模式有關(guān)的編碼信息分配給最大編碼單元中所包括的編碼單元、預(yù)測單元和最小單元中的至少一個。
根據(jù)實(shí)施方式的最小單元是通過將構(gòu)成最低深度的最小編碼單元分割4次所獲得的矩形數(shù)據(jù)單元??商娲兀钚卧梢允亲畲缶匦螖?shù)據(jù)單元,該數(shù)據(jù)單元可包括最大編碼單元中所包括的所有的編碼單元、預(yù)測單元、分區(qū)單元和變換單元中。
例如,由輸出單元130輸出的編碼信息可被分類為根據(jù)較深層編碼單元的編碼信息和根據(jù)預(yù)測單元的編碼信息。根據(jù)較深層編碼單元的編碼信息可包括預(yù)測模式信息和分區(qū)尺寸信息。根據(jù)預(yù)測單元的編碼信息可包括關(guān)于幀間模式期間的估計(jì)方向的信息、關(guān)于幀間模式的參考圖像索引的信息、關(guān)于運(yùn)動矢量的信息、關(guān)于幀內(nèi)模式的色度分量的信息和關(guān)于幀內(nèi)模式的插值方法的信息。此外,與根據(jù)畫面、切片或gop定義的編碼單元的最大尺寸有關(guān)的信息以及與最大深度有關(guān)的信息可插入到比特流的頭部中。
根據(jù)視頻編碼設(shè)備100的最簡單的實(shí)施方式,較深層編碼單元可以是通過將上一層的上層深度編碼單元的高度或?qū)挾确指?次所獲得的編碼單元。也就是說,在當(dāng)前深度的編碼單元的尺寸為2n×2n時(shí),更下層深度編碼單元的尺寸為n×n。此外,具有2n×2n的尺寸的當(dāng)前編碼單元最多可包括具有n×n的尺寸的四個更下層深度的編碼單元。
因此,視頻編碼設(shè)備100可通過基于考慮當(dāng)前畫面的特性所確定的最大編碼單元的尺寸和最大深度,對每個最大編碼單元確定具有最佳形狀和最佳尺寸的編碼單元,來形成具有樹結(jié)構(gòu)的編碼單元。此外,由于可通過使用各種預(yù)測模式和頻率變換中的任一者來對每個最大編碼單元執(zhí)行編碼,因此可通過考慮各種圖像尺寸的編碼單元的特性來確定最佳編碼模式。
因此,如果以傳統(tǒng)的宏塊對具有高分辨率或大數(shù)據(jù)量的圖像進(jìn)行編碼,則每個畫面的宏塊數(shù)量過度增加。因此,針對每個宏塊所生成的壓縮信息的條數(shù)增加,因此難以發(fā)送壓縮信息并且降低數(shù)據(jù)壓縮效率。然而,通過使用根據(jù)實(shí)施方式的視頻編碼設(shè)備,由于在考慮圖像尺寸的情況下增加編碼單元的最大尺寸,并且在考慮圖像特性的情況下調(diào)整編碼單元,因此可提高圖像壓縮效率。
圖2是根據(jù)本公開實(shí)施方式的視頻解碼設(shè)備的框圖。
根據(jù)實(shí)施方式的視頻解碼設(shè)備200包括接收器210、圖像數(shù)據(jù)和編碼信息提取器220以及圖像數(shù)據(jù)解碼器230。用于視頻解碼設(shè)備200的各種處理的各種術(shù)語(諸如編碼單元、深度、預(yù)測單元、變換單元和關(guān)于各種編碼模式的信息)的定義與參照圖1和視頻編碼設(shè)備100描述的那些術(shù)語相同。
接收器210接收并解析編碼視頻的比特流。圖像數(shù)據(jù)和編碼信息提取器220從解析的比特流中提取每個編碼單元的編碼圖像數(shù)據(jù),并將提取的圖像數(shù)據(jù)輸出到圖像數(shù)據(jù)解碼器230,其中編碼單元根據(jù)每個最大編碼單元具有樹結(jié)構(gòu)。圖像數(shù)據(jù)和編碼信息提取器220可從關(guān)于當(dāng)前畫面的頭部中提取關(guān)于當(dāng)前畫面的編碼單元的最大尺寸信息。
此外,圖像數(shù)據(jù)和編碼信息提取器220從解析的比特流中提取與根據(jù)每個最大編碼單元具有樹結(jié)構(gòu)的編碼單元有關(guān)的編碼深度和編碼模式信息。提取的編碼深度和編碼模式信息輸出到圖像數(shù)據(jù)解碼器230。換句話說,比特流中的圖像數(shù)據(jù)被分割為最大編碼單元,使得圖像數(shù)據(jù)解碼器230對每個最大編碼單元的圖像數(shù)據(jù)進(jìn)行解碼。
可針對一條或多條編碼深度信息來設(shè)置與每個最大編碼單元的編碼深度和編碼模式有關(guān)的信息。與每個編碼深度的編碼模式有關(guān)的信息可包括編碼單元的分區(qū)類型信息、預(yù)測模式信息、變換單元的尺寸信息等。此外,可提取根據(jù)深度的分割信息作為與編碼深度有關(guān)的信息。
與根據(jù)實(shí)施方式的視頻編碼設(shè)備100類似,由圖像數(shù)據(jù)和編碼信息提取器220提取的、與每個最大編碼單元的編碼深度和編碼模式有關(guān)的信息是與這樣的編碼深度和編碼模式有關(guān)的信息,其中所述編碼深度和編碼模式被確定為在編碼結(jié)束時(shí)通過根據(jù)每個最大編碼單元、對每一深度的每個編碼單元重復(fù)執(zhí)行編碼來生成最小編碼誤差。因此,視頻解碼設(shè)備200可通過根據(jù)生成最小編碼誤差的編碼模式對數(shù)據(jù)進(jìn)行解碼來恢復(fù)圖像。
根據(jù)實(shí)施方式的與編碼深度和編碼模式有關(guān)的編碼信息可分配至編碼單元、預(yù)測單元和最小單元中的預(yù)定數(shù)據(jù)單元,因此圖像數(shù)據(jù)和編碼信息提取器220可根據(jù)預(yù)定數(shù)據(jù)單元提取與編碼深度和編碼模式有關(guān)的信息。當(dāng)將相應(yīng)的最大編碼單元的編碼深度和編碼模式信息分配給預(yù)定數(shù)據(jù)單元中的每一個時(shí),分配有相同編碼深度和編碼模式信息的預(yù)定數(shù)據(jù)單元可推斷為包括在同一最大編碼單元中的數(shù)據(jù)單元。
圖像數(shù)據(jù)解碼器230通過基于與根據(jù)每個最大編碼單元的編碼深度和編碼模式有關(guān)的信息對每個最大編碼單元中的圖像數(shù)據(jù)進(jìn)行解碼,來恢復(fù)當(dāng)前畫面。也就是說,圖像數(shù)據(jù)解碼器230可基于包括在每個最大編碼單元中的、具有樹結(jié)構(gòu)的編碼單元中每個編碼單元的讀取分區(qū)類型、預(yù)測模式和變換單元,來對編碼圖像數(shù)據(jù)進(jìn)行解碼。解碼操作可包括預(yù)測(包括幀內(nèi)預(yù)測和運(yùn)動補(bǔ)償)和逆變換。
圖像數(shù)據(jù)解碼器230可基于與根據(jù)編碼深度的編碼單元的預(yù)測單元有關(guān)的分區(qū)模式信息和預(yù)測類型信息,根據(jù)每個編碼單元的分區(qū)和預(yù)測模式執(zhí)行幀內(nèi)預(yù)測或運(yùn)動補(bǔ)償。
此外,圖像數(shù)據(jù)解碼器230可基于與每個編碼深度有關(guān)的編碼單元的變換單元的尺寸信息,根據(jù)每個編碼單元中的每個變換單元執(zhí)行逆變換,從而根據(jù)每個最大編碼單元執(zhí)行頻率逆變換。
圖像數(shù)據(jù)解碼器230可通過使用根據(jù)深度的分割信息來確定當(dāng)前最大編碼單元的編碼深度。如果分割信息指示圖像數(shù)據(jù)在當(dāng)前深度下不再被分割,則當(dāng)前深度是編碼深度。因此,圖像數(shù)據(jù)解碼器230可通過使用與當(dāng)前深度相對應(yīng)的每個編碼單元的、與預(yù)測單元的分區(qū)模式、預(yù)測類型和變換單元尺寸有關(guān)的信息,對當(dāng)前最大編碼單元的圖像數(shù)據(jù)進(jìn)行解碼。換句話說,可通過觀察為編碼單元、預(yù)測單元和最小單位之中的預(yù)定數(shù)據(jù)單元分配的編碼信息集來收集包括編碼信息(包括相同分割信息)的數(shù)據(jù)單元,且收集的數(shù)據(jù)單元可被視為將由圖像數(shù)據(jù)解碼器230以相同的編碼模式進(jìn)行解碼的一個數(shù)據(jù)單元。
視頻解碼設(shè)備200可獲得與當(dāng)對每個最大編碼單元遞歸地執(zhí)行編碼時(shí)生成最小編碼誤差的至少一個編碼單元有關(guān)的信息,并且可使用該信息來對當(dāng)前畫面進(jìn)行解碼。也就是說,可對被確定為每個最大編碼單元中被確定為最佳編碼單元的具有樹結(jié)構(gòu)的編碼單元進(jìn)行解碼。
因此,即使圖像具有高分辨率或具有過大的數(shù)據(jù)量,也可通過使用編碼單元的尺寸和編碼模式有效地對圖像進(jìn)行解碼和恢復(fù),其中通過使用從編碼器接收的最佳編碼模式信息根據(jù)圖像的特性適應(yīng)性地確定所述編碼單元的尺寸和編碼模式。
現(xiàn)在將參照圖3至圖13描述根據(jù)本公開實(shí)施方式的確定具有樹結(jié)構(gòu)的編碼單元、預(yù)測單元和變換單元的方法。
圖3示出分層編碼單元的概念。
編碼單元的尺寸可由寬×高來表示,可以是64×64、32×32、16×16和8×8。64×64的編碼單元可被分割為64×64、64×32、32×64或32×32的分區(qū),32×32的編碼單元可被分割為32×32、32×16、16×32或16×16的分區(qū),16×16的編碼單元可被分割為16×16、16×8、8×16或8×8的分區(qū),8×8的編碼單元可被分割為8×8、8×4、4×8或4×4的分區(qū)。
在視頻數(shù)據(jù)310中,分辨率為1920×1080,編碼單元的最大尺寸為64,最大深度為2。在視頻數(shù)據(jù)320中,分辨率為1920×1080,編碼單元的最大尺寸為64,最大深度為3。在視頻數(shù)據(jù)330中,分辨率為1920×1080,編碼單元的最大尺寸為16,最大深度為1。圖3中所示的最大深度表示從最大編碼單元到最小編碼單元的分割總數(shù)。
如果分辨率高或數(shù)據(jù)量大,則編碼單元的最大尺寸可能較大,從而不僅提高了編碼效率,還精確地反映出圖像的特性。因此,分辨率高于視頻數(shù)據(jù)330的視頻數(shù)據(jù)310和320的編碼單元的最大尺寸可選擇為64。
由于視頻數(shù)據(jù)310的最大深度為2,因此,由于通過將最大編碼單元分割兩次,深度加深到兩層,因此視頻數(shù)據(jù)310的編碼單元315可包括具有長軸尺寸為64的最大編碼單元,以及具有長軸尺寸為32和16的編碼單元。由于視頻數(shù)據(jù)330的最大深度為1,因此,由于通過將最大編碼單元分割一次,深度加深到一層,因此視頻數(shù)據(jù)330的編碼單元335可包括具有長軸尺寸為16的最大編碼單元,以及具有長軸尺寸為8的編碼單元。
由于視頻數(shù)據(jù)320的最大深度為3,因此,由于通過將最大的編碼單元分割三次,深度加深到3層,因此視頻數(shù)據(jù)320的編碼單元325可包括具有長軸尺寸為64的最大編碼單元和具有長軸尺寸為32、16和8的編碼單元,。隨著深度加深,可提高對于細(xì)節(jié)信息的表達(dá)能力。
圖4是根據(jù)本公開實(shí)施方式基于編碼單元的圖像編碼器的框圖。
根據(jù)實(shí)施方式的圖像編碼器400包括視頻編碼設(shè)備100的編碼單元確定器120的操作,以對圖像數(shù)據(jù)進(jìn)行編碼。也就是說,幀內(nèi)預(yù)測器410在幀內(nèi)模式下對當(dāng)前幀405中的編碼單元執(zhí)行幀內(nèi)預(yù)測,運(yùn)動估計(jì)器420和運(yùn)動補(bǔ)償器425在幀間模式下通過使用當(dāng)前幀405和參考幀495,對編碼單元分別執(zhí)行幀間估計(jì)和運(yùn)動補(bǔ)償。
從幀內(nèi)預(yù)測器410、運(yùn)動估計(jì)器420和運(yùn)動補(bǔ)償器425輸出的數(shù)據(jù)通過變換器430和量化器440被輸出作為量化的變換系數(shù)。量化的變換系數(shù)通過逆量化器460和逆變換器470恢復(fù)為空間域中的數(shù)據(jù),并且,恢復(fù)的空間域中的數(shù)據(jù)在通過去塊濾波器480和環(huán)路濾波器490進(jìn)行后處理之后被輸出為參考幀495。量化的變換系數(shù)可通過熵編碼器450被輸出為比特流455。
為了將視頻編碼器400應(yīng)用于視頻編碼設(shè)備100中,視頻編碼器400的所有元件(即幀內(nèi)預(yù)測器410、運(yùn)動估計(jì)器420、運(yùn)動補(bǔ)償器425、頻率變換器430、量化器440、熵編碼器450、逆量化器460、頻率逆變換器470、去塊濾波器480和環(huán)路濾波器490)必須在考慮每個最大編碼單元的最大深度時(shí),基于具有樹結(jié)構(gòu)的編碼單元中的每個編碼單元執(zhí)行操作。
具體地,幀內(nèi)預(yù)測器410、運(yùn)動估計(jì)器420和運(yùn)動補(bǔ)償器425在考慮了當(dāng)前最大編碼單元的最大尺寸和最大深度的情況下,確定具有樹結(jié)構(gòu)的編碼單元之中每個編碼單元的分區(qū)和預(yù)測模式,并且頻率變換器430確定具有樹結(jié)構(gòu)的編碼單元之中每個編碼單元中的變換單元的尺寸。
圖5是根據(jù)本公開實(shí)施方式基于編碼單元的圖像解碼器的框圖。
解析器510從比特流505中解析出作為解碼目標(biāo)的編碼圖像數(shù)據(jù)和解碼所需的與編碼有關(guān)的信息。編碼圖像數(shù)據(jù)通過熵解碼器520和逆量化器530輸出為逆量化的數(shù)據(jù),逆量化的數(shù)據(jù)通過頻率逆變換器540被恢復(fù)為空間區(qū)域中的圖像數(shù)據(jù)。
幀內(nèi)預(yù)測器550針對空間域中的圖像數(shù)據(jù)在幀內(nèi)模式下對編碼單元執(zhí)行幀內(nèi)預(yù)測,運(yùn)動補(bǔ)償器560通過使用參考幀585在幀間模式下對編碼單元進(jìn)行運(yùn)動補(bǔ)償。
通過幀內(nèi)預(yù)測器550和運(yùn)動補(bǔ)償器560的空間域中的圖像數(shù)據(jù)可在通過去塊濾波器570和環(huán)路濾波器580進(jìn)行后處理之后輸出為恢復(fù)幀595。此外,通過去塊濾波器570和環(huán)路濾波器580進(jìn)行后處理的圖像數(shù)據(jù)可輸出為參考幀585。
為了視頻解碼設(shè)備200的圖像數(shù)據(jù)解碼器230對圖像數(shù)據(jù)進(jìn)行解碼,根據(jù)實(shí)施方式的圖像解碼器500可執(zhí)行在解析器510之后執(zhí)行的操作。
為了將視頻解碼器500應(yīng)用于視頻解碼設(shè)備200中,視頻解碼器500的所有元件(即解析器510、熵解碼器520、逆量化器530、頻率逆變換器540、幀內(nèi)預(yù)測器550、運(yùn)動補(bǔ)償器560、去塊濾波器570和環(huán)路濾波器580)針對每個最大編碼單元基于具有樹結(jié)構(gòu)的編碼單元執(zhí)行操作。
具體地,幀內(nèi)預(yù)測器550和運(yùn)動補(bǔ)償器560確定對于具有樹結(jié)構(gòu)的每個編碼單元的分區(qū)和預(yù)測模式,并且頻率逆變換器540必須確定對于每個編碼單元的變換單元的尺寸。
圖6是示出根據(jù)本公開實(shí)施方式基于深度的較深層編碼單元和分區(qū)的圖。
根據(jù)實(shí)施方式的視頻編碼設(shè)備100和根據(jù)實(shí)施方式的視頻解碼設(shè)備200使用分層編碼單元以考慮圖像的特征??筛鶕?jù)圖像的特性自適應(yīng)地確定編碼單元的最大高度、最大寬度和最大深度,或者可以根據(jù)用戶要求進(jìn)行各種設(shè)置??筛鶕?jù)編碼單元的預(yù)定最大尺寸確定根據(jù)深度的較深層編碼單元的尺寸。
在根據(jù)實(shí)施方式的編碼單元的層次結(jié)構(gòu)600中,編碼單元的最大高度和最大寬度均為64,最大深度為4。由于深度沿著編碼單元的層次結(jié)構(gòu)600的縱軸加深,因此較深層編碼單元的高度和寬度均被分割。另外,沿著層次結(jié)構(gòu)600的橫軸示出作為每個較深層編碼單元的預(yù)測編碼的基礎(chǔ)的預(yù)測單元和分區(qū)。
換句話說,編碼單元610是層次結(jié)構(gòu)600中的最大編碼單元,其中深度為0,尺寸(即寬度乘高度)為64×64。深度沿縱軸加深,從而存在具有尺寸32×32且深度1的編碼單元620、尺寸16×16且深度2的編碼單元630、尺寸8×8且深度3的編碼單元640,以及具有尺寸4×4且深度4的編碼單元650。具有尺寸4×4且深度4的編碼單元650是最小編碼單元。
編碼單元的預(yù)測單元和分區(qū)根據(jù)每個深度沿橫軸布置。換句話說,如果具有尺寸64×64和深度0的編碼單元610是預(yù)測單元,則預(yù)測單元可被分割成包括在具有尺寸64×64的編碼單元610中的分區(qū),即具有尺寸64×64的分區(qū)610、具有尺寸64×32的分區(qū)612、具有尺寸32×64的分區(qū)614或具有尺寸32×32的分區(qū)616。
同樣,具有尺寸32×32且深度1的編碼單元620的預(yù)測單元可分割成包括在具有尺寸32×32的編碼單元620中的分區(qū),即具有尺寸32×32的分區(qū)620、具有尺寸32×16的分區(qū)622、具有尺寸16×32的分區(qū)624和具有尺寸16×16的分區(qū)626。
同樣,具有尺寸16×16且深度2的編碼單元630的預(yù)測單元可分割成包括在具有尺寸為16×16的編碼單元630中的分區(qū),即具有尺寸16×16的分區(qū)630、具有尺寸16×8的分區(qū)632、具有尺寸8×16的分區(qū)634和具有尺寸8×8的分區(qū)636。
同樣地,具有尺寸8×8且深度3的編碼單元640的預(yù)測單元可分割成包括在具有尺寸為8×8的編碼單元640中的分區(qū),即具有尺寸8×8的分區(qū)640、具有尺寸8×4的分區(qū)642、具有尺寸4×8的分區(qū)644以及具有尺寸4×4的分區(qū)646。
具有尺寸4×4且深度4的編碼單元650是最小編碼單元和最下層深度的編碼單元。編碼單元650的預(yù)測單元僅分配給具有尺寸4×4的分區(qū)。
為了確定最大編碼單元610的編碼深度,視頻編碼設(shè)備100的編碼單元確定器120必須對包括在最大編碼單元610中的、分別對應(yīng)于各深度的編碼單元執(zhí)行編碼。
隨著深度加深,包括處于相同范圍和相同尺寸的數(shù)據(jù)的、根據(jù)深度的較深層編碼單元的數(shù)量增加。例如,需要四個與深度2對應(yīng)的編碼單元以覆蓋包括在與深度1對應(yīng)的一個編碼單元中的數(shù)據(jù)。因此,為了比較相同數(shù)據(jù)根據(jù)深度的編碼結(jié)果,對與深度1對應(yīng)的編碼單元和四個與深度2對應(yīng)的編碼單元各自進(jìn)行編碼。
為了根據(jù)每個深度執(zhí)行編碼,可通過沿編碼單元的層次結(jié)構(gòu)600的橫軸,對根據(jù)深度的編碼單元的預(yù)測單元中每個執(zhí)行編碼,來選擇作為相應(yīng)深度的代表性編碼誤差的最小編碼誤差??商娲?,可通過隨著深度沿層次結(jié)構(gòu)600的縱軸加深對每個深度執(zhí)行編碼來比較根據(jù)深度的最小編碼誤差,從而搜索最小編碼誤差。在最大編碼單元610中具有最小編碼誤差的深度和分區(qū)可被選為最大編碼單元610的編碼深度和分區(qū)類型。
圖7是根據(jù)本公開實(shí)施方式用于描述編碼單元與變換單元之間的關(guān)系的圖。
根據(jù)實(shí)施方式的視頻編碼設(shè)備100或根據(jù)實(shí)施方式的視頻解碼設(shè)備200針對每個最大編碼單元、根據(jù)具有小于或等于最大編碼單元的尺寸的編碼單元來對圖像進(jìn)行編碼或解碼??苫诓淮笥谙鄳?yīng)編碼單元的數(shù)據(jù)單元來選擇編碼期間用于頻率變換的變換單元的尺寸。
例如,在視頻編碼設(shè)備100或視頻解碼設(shè)備200中,當(dāng)編碼單元710的尺寸為64×64時(shí),可通過使用具有尺寸32×32的變換單元720來執(zhí)行頻率變換。
此外,可通過對小于64×64的尺寸為32×32、16×16、8×8和4×4的變換單元中的每一個執(zhí)行頻率變換來對具有尺寸64×64的編碼單元710的數(shù)據(jù)進(jìn)行編碼,然后可選擇相對于原始圖像具有最小編碼誤差的變換單元。
圖8示出根據(jù)本公開實(shí)施方式的多條編碼信息。
視頻編碼設(shè)備100的輸出單元130可對與編碼深度對應(yīng)的每個編碼單元的分區(qū)類型信息800、預(yù)測模式信息810和變換單元尺寸信息820進(jìn)行編碼,并作為編碼模式信息發(fā)送這些信息。
分區(qū)類型信息800指示與通過對當(dāng)前編碼單元的預(yù)測單元進(jìn)行分割而獲得的分區(qū)的形狀有關(guān)的信息,其中所述分區(qū)是用于對當(dāng)前編碼單元進(jìn)行預(yù)測編碼的數(shù)據(jù)單元。例如,具有尺寸2n×2n的當(dāng)前編碼單元cu_0可被分割成具有尺寸2n×2n的分區(qū)802、具有尺寸2n×n的分區(qū)804、具有尺寸n×2n的分區(qū)806和具有尺寸n×n的分區(qū)808中的任意一個。在這種情況下,關(guān)于當(dāng)前編碼單元的分區(qū)類型信息800被設(shè)置為指示具有尺寸2n×2n的分區(qū)802、具有尺寸2n×n的分區(qū)804、具有尺寸n×2n的分區(qū)806和具有尺寸n×n的分區(qū)808中的一個。
預(yù)測模式信息810指示每個分區(qū)的預(yù)測模式。例如,預(yù)測模式信息810可指示對由分區(qū)模式信息800指示的分區(qū)執(zhí)行的預(yù)測編碼的模式,即幀內(nèi)模式812、幀間模式814或跳過模式816。
變換單元尺寸信息820代表當(dāng)對當(dāng)前編碼單元執(zhí)行頻率變換時(shí)所基于的變換單元。例如,變換單元可以是第一幀內(nèi)變換單元822、第二幀內(nèi)變換單元824、第一幀間變換單元826或第二幀間變換單元828。
視頻解碼設(shè)備200的圖像數(shù)據(jù)和編碼信息提取器220可針對每個較深編碼單元提取和使用分區(qū)類型信息800、預(yù)測模式信息810和變換單元尺寸信息820。
圖9是根據(jù)本公開實(shí)施方式基于深度的較深層編碼單元的圖。
分割信息可用于指示深度的改變。分割信息指示當(dāng)前深度的編碼單元是否被分割為更下層深度的編碼單元。
用于對具有深度0和尺寸2n_0×2n_0的編碼單元900進(jìn)行預(yù)測編碼的預(yù)測單元910可包括以下分區(qū)類型的分區(qū):具有尺寸2n_0×2n_0的分區(qū)類型912、具有尺寸2n_0×n_0的分區(qū)類型914、具有尺寸n_0×2n_0的分區(qū)類型916和具有尺寸n_0×n_0的分區(qū)類型918。僅示出通過對預(yù)測單元對稱地分割而獲得的分區(qū)912、914、916和918,但是如上所述,分區(qū)類型不限于此,并且可包括不對稱分區(qū)、具有預(yù)定形狀的分區(qū)和具有幾何形狀的分區(qū)。
根據(jù)每個分區(qū)類型,對一個具有尺寸2n_0×2n_0的分區(qū),兩個具有尺寸2n_0×n_0的分區(qū),兩個具有尺寸為n_0×2n_0的分區(qū)和四個具有尺寸n_0×n_0的分區(qū)重復(fù)執(zhí)行預(yù)測編碼。可對具有尺寸2n_0×2n_0、n_0×2n_0、2n_0×n_0和n_0×n_0的分區(qū)執(zhí)行幀內(nèi)模式和幀間模式下的預(yù)測編碼。可以僅對具有尺寸2n_0×2n_0的分區(qū)執(zhí)行跳過模式下的預(yù)測編碼。
如果在具有尺寸2n_0×2n_0、2n_0×n_0和n_0×2n_0的912、914和916的分區(qū)類型之一中編碼誤差最小,則可不將預(yù)測單元910分割至更下層的深度。
如果在具有尺寸n_0×n_0的分區(qū)類型918中編碼誤差最小,則將深度從0改變?yōu)?并執(zhí)行分割(操作920),并且可對具有深度2且尺寸n_0×n_0的分區(qū)類型的編碼單元930重復(fù)執(zhí)行編碼,以搜索最小編碼誤差。
用于對具有深度1和尺寸2n_1×2n_1(=n_0×n_0)的編碼單元930執(zhí)行預(yù)測編碼的預(yù)測單元940可包括以下分區(qū)類型的分區(qū):尺寸2n_1×2n_1的分區(qū)類型942,尺寸2n_1×n_1的分區(qū)類型944,尺寸n_1×2n_1的分區(qū)類型946和尺寸n_1×n_1的分區(qū)類型948。
如果在具有尺寸n_1×n_1的分區(qū)類型948中編碼誤差最小,則將深度從1改變?yōu)?并執(zhí)行分割(在操作950中),并且對具有深度2和尺寸n_2×n_2的編碼單元960重復(fù)執(zhí)行編碼,以搜索最小編碼誤差。
當(dāng)最大深度為d時(shí),可設(shè)置根據(jù)深度的分割信息,知道深度對應(yīng)于d-1,并且可設(shè)置分割信息,直到深度對應(yīng)于d-2。也就是說,當(dāng)對與d-2的深度對應(yīng)的編碼單元被分割之后執(zhí)行到深度為d-1時(shí)的編碼(在操作970中)時(shí),用于對具有深度d-1和尺寸2n_(d-1)×2n(d-1)的編碼單元980進(jìn)行預(yù)測編碼的預(yù)測單元990可包括以下分區(qū)類型的分區(qū):尺寸2n_(d-1)×2n(d-1)的分區(qū)類型992、尺寸2n_(d-1)×n_(d-1)的分區(qū)類型994,尺寸n_(d-1)×2n(d-1)的分區(qū)類型996,以及尺寸n_(d-1)×n_(d-1)的分區(qū)類型998。
可對分區(qū)類型之中的一個具有尺寸2n_(d-1)×2n(d-1)的一個分區(qū)、兩個具有尺寸2n_(d-1)×n_(d-1)的分區(qū)、兩個具有尺寸n_(d-1)×2n(d-1)的分區(qū)、四個具有尺寸n_(d-1)×n_(d-1)的分區(qū)重復(fù)執(zhí)行預(yù)測編碼,以搜索生成最小編碼誤差的分區(qū)類型。
即使當(dāng)具有尺寸n_(d-1)×n_(d-1)的分區(qū)類型998有最小編碼誤差時(shí),但由于最大深度為d,因此具有深度d-1的編碼單元cu_(d-1)不再被分割到更下層深度,并且構(gòu)成當(dāng)前最大編碼單元900的編碼單元的編碼深度被確定為d-1,可將當(dāng)前最大編碼單元900的分區(qū)類型確定為n_(d-1)×n_(d-1)。此外,由于最大深度為d,因此不設(shè)置對具有深度d-1的編碼單元952的分割信息。
數(shù)據(jù)單元999可以是當(dāng)前最大編碼單元的“最小單元”。根據(jù)實(shí)施方式的最小單元可以是通過將具有最下層編碼深度的最小編碼單元分割4次而獲得的矩形數(shù)據(jù)單元。通過重復(fù)執(zhí)行編碼,根據(jù)實(shí)施方式的視頻編碼設(shè)備100可通過比較根據(jù)編碼單元900的深度的編碼誤差選擇具有最小編碼誤差的編碼深度來確定深度,并且將相應(yīng)的分區(qū)類型和預(yù)測模式設(shè)置為編碼深度的編碼模式。
這樣,在0,1,...,d-1,d的所有深度中比較根據(jù)深度的最小編碼誤差,且可將具有最小編碼誤差的深度確定為編碼深度。編碼深度、預(yù)測單元的分區(qū)類型和預(yù)測模式可作為關(guān)于編碼模式的信息被編碼和發(fā)送。由于編碼單元從深度0分割到編碼深度,所以僅編碼深度的分割信息設(shè)定為“0”,而排除編碼深度之外的深度的分割信息設(shè)定為“1”。
根據(jù)實(shí)施方式的視頻解碼設(shè)備200的圖像數(shù)據(jù)和編碼信息提取器220可提取并使用關(guān)于編碼單元900的編碼深度和預(yù)測單元信息,以對編碼單元912進(jìn)行解碼。視頻解碼設(shè)備200可通過使用根據(jù)深度的分割信息確定分割信息為0的深度為編碼深度,并且使用關(guān)于相應(yīng)深度的編碼模式的信息進(jìn)行解碼。
圖10、圖11和圖12是根據(jù)本公開實(shí)施方式描述編碼單元、預(yù)測單元和頻率變換單元之間關(guān)系的圖。
編碼單元1010是最大編碼單元之中、由視頻編碼設(shè)備100確定的根據(jù)編碼深度的較深層編碼單元。預(yù)測單元1060是根據(jù)編碼深度的編碼單元1010中每一個的預(yù)測單元的分區(qū),變換單元1070是根據(jù)編碼深度的編碼單元中每一個的變換單元。
當(dāng)編碼單元1010中的最大編碼單元的深度為0時(shí),編碼單元1012和1054的深度為1,編碼單元1014、1016、1018、1028、1050和1052的深度為2,編碼單元1020、1022、1024、1026、1030、1032和1048的深度為3,編碼單元1040、1042、1044和1046的深度為4。
在預(yù)測單元1060中,通過對編碼單元1010中的編碼單元進(jìn)行分割來獲得一些編碼單元1014、1016、1022、1032、1048、1050、1052和1054。也就是說,分區(qū)1014、1022、1050和1054是具有尺寸2n×n的分區(qū)類型,分區(qū)1016、1048和1052是具有尺寸n×2n的分區(qū)類型,并且分區(qū)1032是具有尺寸n×n的分區(qū)類型。編碼單元1010的預(yù)測單元和分區(qū)小于或等于每個編碼單元。
在變換單元1070中,以小于編碼單元1052的數(shù)據(jù)單位對編碼單元1052的圖像數(shù)據(jù)執(zhí)行頻率變換或頻率逆變換。此外,變換單元1760中的編碼單元1014、1016、1022、1032、1048、1050、1052和1054在尺寸和形狀方面與預(yù)測單元1060中的編碼單元1014、1016、1022、1032、1048、1050、1052和1054不同。也就是說,根據(jù)實(shí)施方式的視頻編碼設(shè)備100和視頻解碼設(shè)備200可對相同編碼單元中的各個數(shù)據(jù)單元執(zhí)行幀內(nèi)預(yù)測/運(yùn)動估計(jì)/運(yùn)動補(bǔ)償/以及頻率變換/逆變換。
因此,對最大編碼單元的每個區(qū)域中具有層次結(jié)構(gòu)的編碼單元中的每一個遞歸地執(zhí)行編碼,以確定最佳編碼單元,從而可獲得具有遞歸樹結(jié)構(gòu)的編碼單元。編碼信息可包括關(guān)于編碼單元的分割信息、分割類型信息、預(yù)測模式信息和變換單元尺寸信息。下表1示出可由根據(jù)實(shí)施方式的視頻編碼設(shè)備100和視頻解碼設(shè)備200設(shè)置的編碼信息。
表1
根據(jù)實(shí)施方式的視頻編碼設(shè)備100的輸出單元130可輸出與具有樹結(jié)構(gòu)的編碼單元有關(guān)的編碼信息,根據(jù)實(shí)施方式的視頻解碼設(shè)備200的圖像數(shù)據(jù)和編碼信息提取器220可從接收的比特流中提取與具有樹結(jié)構(gòu)的編碼單元有關(guān)的編碼信息。
分割信息指示當(dāng)前編碼單元是否被分割成更下層深度的編碼單元。如果當(dāng)前深度d的分割信息為0,則當(dāng)前編碼單元不再被分割為更下層深度的深度是編碼深度,因此可針對編碼深度定義分區(qū)類型信息、預(yù)測模式信息和變換單元尺寸信息。如果當(dāng)前編碼單元根據(jù)分割信息被進(jìn)一步分割,則編碼必須對更下層深度的四個分割編碼單元獨(dú)立執(zhí)行編碼。
預(yù)測模式可以是幀內(nèi)模式、幀間模式和跳過模式中的至少一個。可以在所有分區(qū)類型中定義幀內(nèi)模式和幀間模式,并且僅在具有尺寸2n×2n的分區(qū)類型中定義跳過模式。
分區(qū)類型信息可指示通過對預(yù)測單元的高度或?qū)挾冗M(jìn)行對稱分割而獲得的具有尺寸2n×2n、2n×n、n×2n和n×n的對稱分區(qū)類型,以及通過對預(yù)測單元的高度或?qū)挾冗M(jìn)行不對稱分割而獲得的具有尺寸2n×nu、2n×nd、nl×2n和nr×2n的不對稱分區(qū)類型??赏ㄟ^按照1:3和3:1對預(yù)測單元的高進(jìn)行分割而分別獲得具有尺寸2n×nu和2n×nd的不對稱分區(qū)類型,并且可通過按照1:3和3:1對預(yù)測單元的寬進(jìn)行分割而分別獲得具有尺寸nl×2n和nr×2n的不對稱分區(qū)類型。
變換單元的尺寸可設(shè)置成幀內(nèi)模式下的兩種類型和幀間模式下的兩種類型。也就是說,如果變換單元的分割信息為0,則變換單元的尺寸可以為2n×2n,這是當(dāng)前編碼單元的尺寸。如果變換單元的分割信息為1,則可通過對當(dāng)前編碼單元進(jìn)行分割來獲得變換單元。此外,如果具有尺寸2n×2n的當(dāng)前編碼單元的分區(qū)類型是對稱分區(qū)類型,則變換單元的尺寸可以是n×n,且如果當(dāng)前編碼單元的分區(qū)類型是不對稱分區(qū)類型,則變換單元的尺寸可以是n/2×n/2。
根據(jù)實(shí)施方式與具有樹結(jié)構(gòu)的編碼單元有關(guān)的編碼信息可分配給與編碼深度、預(yù)測單元和最小單元相對應(yīng)的編碼單元中的至少一個。對應(yīng)于編碼深度的編碼單元可包括具有相同編碼信息的預(yù)測單元和最小單元中的至少一個。
因此,通過比較鄰近數(shù)據(jù)單元的多條編碼信息,來確定鄰近數(shù)據(jù)單元是否包括在對應(yīng)于相同編碼深度的編碼單元中。此外,通過使用數(shù)據(jù)單元的編碼信息來確定與編碼深度相對應(yīng)的相應(yīng)編碼單元,從而可推斷最大編碼單元中的編碼深度的分布。
因此,如果基于鄰近數(shù)據(jù)單元的編碼信息來預(yù)測當(dāng)前編碼單元,則可直接進(jìn)行參考和使用與當(dāng)前編碼單元鄰近的較深層編碼單元中的數(shù)據(jù)單元的編碼信息。
在另一實(shí)施方式中,如果基于鄰近數(shù)據(jù)單元的編碼信息來預(yù)測當(dāng)前編碼單元,則可通過使用數(shù)據(jù)單元的編碼信息來搜索與當(dāng)前編碼單元鄰近的數(shù)據(jù)單元,并且可參考所搜索到的鄰近編碼單元來預(yù)測當(dāng)前編碼單元。
圖13根據(jù)表格1的編碼模式信息示出編碼單元、預(yù)測單元和變換單元之間的關(guān)系。
最大編碼單元1300包括多個編碼深度的編碼單元1302、1304、1306、1312、1314、1316和1318。這里,由于編碼單元1318是編碼深度的編碼單元,因此分割信息可設(shè)置成0。具有尺寸2n×2n的編碼單元1318的分區(qū)類型信息可設(shè)置成包括2n×2n1322、2n×n1324、n×2n1326、n×n1328、2n×nu1332、2n×nd1334、nl×2n1336和nr×2n1338的分區(qū)類型之一。
當(dāng)分區(qū)類型信息被設(shè)置成對稱分區(qū)類型2n×2n1322、2n×n1324、n×2n1326和n×n1328中的一個時(shí),如果變換單元分割信息(tu尺寸標(biāo)志(tusizeflag))為0,則可以設(shè)置具有尺寸2n×2n的變換單元1342,如果變換單元分割信息為1,則可以設(shè)置具有尺寸n×n的變換單元1344。
當(dāng)分區(qū)類型信息被設(shè)置成不對稱分區(qū)類型2n×nu1332、2n×nd1334、nl×2n1336和nr×2n1338中的一個時(shí),如果變換單元分割信息(tu尺寸標(biāo)志)為0,則可以設(shè)置具有尺寸2n×2n的變換單元1352,并且如果變換單元分割信息為1,則可以設(shè)置具有尺寸n/2×n/2的變換單元1354。
在下文中,將對由根據(jù)圖4的實(shí)施方式的圖像編碼設(shè)備400的熵編碼器450和圖5的圖像解碼設(shè)備500的熵解碼器520所執(zhí)行的熵編碼和解碼過程進(jìn)行詳細(xì)描述。
如上所述,根據(jù)本公開實(shí)施方式的圖像編碼設(shè)備400通過使用從最大編碼單元分層分割的編碼單元來執(zhí)行編碼。熵編碼器450對編碼過程期間生成的多條編碼信息進(jìn)行編碼,例如,諸如量化的變換系數(shù)、預(yù)測單元的預(yù)測模式、量化參數(shù)、運(yùn)動矢量等語法元素。作為熵編碼技術(shù),可使用基于上下文的二進(jìn)制算術(shù)編碼(在下文中稱為“cabac”)。
表2是在高效率視頻編碼(hevc)和h.264/avc下通過cabac進(jìn)行熵編碼的語法元素的示例。以hevc和h.264/avc對語法元素中每一個的語義進(jìn)行描述,因此將省略其詳細(xì)描述。
表2
圖14是根據(jù)本公開實(shí)施方式的熵編碼設(shè)備的框圖。
參照圖14,熵編碼設(shè)備1400包括二值化器1410、上下文建模器1420和二進(jìn)制算術(shù)編碼器1430。此外,二進(jìn)制算術(shù)編碼器1430包括常規(guī)編碼引擎1432和旁路編碼引擎1434。
二值化器1410將輸入的語法元素映射到二進(jìn)制符號的二進(jìn)制位。一個二進(jìn)制位表示一個具有值0或1的位并通過執(zhí)行cabac進(jìn)行編碼。一組二進(jìn)制位可稱為二進(jìn)制位字符串。二值化器1410可根據(jù)語法元素的類型應(yīng)用固定長度二值化、截?cái)嗳R斯二值化、第k次指數(shù)哥倫布(exp-golomb)二值化和哥倫布-萊斯(golomb-rice)二值化之一,并且將語法元素的值映射和輸出為0和1的二進(jìn)制位。
常規(guī)編碼引擎1432或旁路編碼引擎1434對二值化器1410輸出的二進(jìn)制位進(jìn)行算術(shù)編碼。當(dāng)自語法元素二進(jìn)制化的二進(jìn)制位均勻分布時(shí),即當(dāng)數(shù)據(jù)具有相同頻率的0和1時(shí),通過將二進(jìn)制化的二進(jìn)制位輸出到不使用概率值的旁路編碼引擎1434,來對二進(jìn)制化的二進(jìn)制位進(jìn)行編碼。可根據(jù)語法元素的類型預(yù)先確定是否通過使用常規(guī)編碼引擎1432和旁路編碼引擎1434之中的編碼引擎來對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)編碼。
常規(guī)編碼引擎1432可基于由上下文建模器1420確定的概率模型對二進(jìn)制位執(zhí)行算術(shù)編碼。上下文建模器1420向常規(guī)編碼引擎1432提供關(guān)于二進(jìn)制位的概率模型。具體地,上下文建模器1420基于先前編碼的二進(jìn)制位確定預(yù)先確定的二進(jìn)制值的概率,更新用于對先前二進(jìn)制位的二進(jìn)制值編碼的概率,以及向常規(guī)編碼引擎1432輸出更新的概率。傳統(tǒng)地,通過使用上下文索引ctxldx確定一個上下文模型,并且確定所確定的上下文模型的最小可能符號(lps)或最大可能符號(mps)的發(fā)生概率以及關(guān)于0和1之間的哪個二進(jìn)制值對應(yīng)于mps的信息。另一方面,根據(jù)本公開實(shí)施方式的上下文建模器1420確定先前確定的二進(jìn)制值(例如在不區(qū)分mps和lps的情況下,基于先前編碼的二進(jìn)制位指示“1”的發(fā)生概率的p(1)),并向常規(guī)編碼引擎1432提供已確定的預(yù)定二進(jìn)制值的概率。
根據(jù)本公開實(shí)施方式的上下文建模器1420可通過使用所接收的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值,基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子值,以及通過使用所確定的至少一個縮放因子來更新二進(jìn)制值的概率。
此外,根據(jù)本公開另一實(shí)施方式的上下文建模器1420可通過應(yīng)用具有不同縮放因子的多個概率模型來獲得指示二進(jìn)制位的平均位值的熵值,確定用以獲得多個概率模型中的最小熵值的概率模型的縮放因子,并且通過使用所確定的縮放因子來更新二進(jìn)制值的概率。
常規(guī)編碼引擎1432基于上下文建模器1420提供的預(yù)定二進(jìn)制值的概率和當(dāng)前二進(jìn)制位的二進(jìn)制值來執(zhí)行二進(jìn)制算術(shù)編碼。換句話說,常規(guī)編碼引擎1432可基于上下文建模器1420提供的預(yù)定二進(jìn)制值的概率來確定“1”的發(fā)生概率p(1)和“0”的發(fā)生概率p(0),根據(jù)當(dāng)前二進(jìn)制值分割所確定的0和1的發(fā)生概率p(0)和p(1)和指示概率區(qū)間的范圍,并輸出代表值屬于分割范圍的二進(jìn)制值,從而執(zhí)行二進(jìn)制算術(shù)編碼。
圖15a和圖15b示出在cabac中使用的概率更新過程。
參照圖15a,將在hevc中使用的上下文模型等定義為64個先前確定的概率狀態(tài)。每個概率狀態(tài)可表征為狀態(tài)索引iplps和mps的值vmps。當(dāng)通過使用先前確定的狀態(tài)轉(zhuǎn)換表對概率進(jìn)行更新時(shí),可以呈現(xiàn)要從當(dāng)前概率狀態(tài)轉(zhuǎn)移的概率狀態(tài)??筛鶕?jù)當(dāng)前算術(shù)編碼二進(jìn)制位的值是否為mps或lps來改變概率狀態(tài)進(jìn)行。例如,如果當(dāng)前二進(jìn)制位的值是mps,則概率狀態(tài)從當(dāng)前概率狀態(tài)iplps改變?yōu)槠渲衛(wèi)ps概率降低的前向狀態(tài)iplps+1,并且如果當(dāng)前二進(jìn)制位的值為lps,將概率狀態(tài)從當(dāng)前概率狀態(tài)iplps改變?yōu)閘ps概率增加的后向狀態(tài)iplps-1。在圖15a中,trmps{}指示mps處理后的概率狀態(tài)轉(zhuǎn)移方向,而trlps{}指示lps處理后的概率狀態(tài)轉(zhuǎn)移方向。
在mps或lps處理期間改變的概率具有如圖15a中所示的指數(shù)下降的形式。n個上下文模型的概率pn可表示為以下等式:pn=0.5(1-α)n,其中(1-α)=(0.01875/0.5)1/63。
參照圖15b,lps的接近0的概率分布是致密的,并且lps的接近1/2的概率分布是稀疏的。因此,當(dāng)二進(jìn)制值0和1的發(fā)生概率相似時(shí),即當(dāng)二進(jìn)制值0和1的發(fā)生概率接近1/2時(shí),由于概率稀疏分布,概率預(yù)測誤差可能增加。此外,當(dāng)使用取冪形式的概率函數(shù)時(shí),由于接近0的概率值需要進(jìn)行詳細(xì)地表達(dá),因此可能增加呈現(xiàn)概率值的比特深度。因此,可能增加用于存儲具有取冪形式的概率函數(shù)的概率模型的查找表大小。此外,當(dāng)使用密集概率值來更新概率或分割概率區(qū)間時(shí),乘法運(yùn)算量增加,這在硬件上可能是繁重的。因此,通過將圖15a中所示的概率plps映射到經(jīng)過舍入算術(shù)運(yùn)算的預(yù)定值,可以使用其中的概率值不是指數(shù)級而是分層級縮小的概率。
將在下文詳細(xì)描述由上下文建模器1420執(zhí)行的更新概率模型的過程。
可以根據(jù)下面的等式1來執(zhí)行cabac中使用的概率更新過程。
[等式1]
pi(t)=αiy+(1-αi)pi(t-1)
在上面的等式1中,pi(t)表示更新的概率,pi(t-1)表示前一個二進(jìn)制位的概率,αi(0≤αi≤1,αi是實(shí)數(shù))表示縮放因子,而y表示輸入的當(dāng)前二進(jìn)制位的值。i是指示縮放因子的編號的整數(shù)。隨著使用的縮放因子的數(shù)量增加,預(yù)測概率的精度可以增加,然而算術(shù)復(fù)雜度也會增加。因此,下面將描述i為1或2的情況,即通過使用一個縮放因子或兩個縮放因子來更新概率。然而,根據(jù)本公開的概率更新方法也可應(yīng)用于通過使用兩個或更多縮放因子來概率更新的情況。
在二進(jìn)制算術(shù)編碼器中,可處理具有值0和1的任意序列的二進(jìn)制位。如果將0和1中任一個的二進(jìn)制位的概率確定為a(0≤a≤1,a是實(shí)數(shù)),則可將另一二進(jìn)制位的概率確定為(1-a)。在上面的等式1中,當(dāng)二進(jìn)制位的輸入值為1時(shí),即當(dāng)y=1時(shí),由于pi(t)的值增加,所以等式1中的pi(t)指示“1”的概率,即下一個二進(jìn)制位是“1”的概率??煽紤]概率值的范圍,以確定0和1中的哪一個是mps或lps。例如,如果指示1的概率的pi(t)具有[1/2;1],即(1/2)和1之間的值,則mps為1,如果pi(t)具有[0;1/2],即0和(1/2)之間的值,則0對應(yīng)于mps??蓪abac中使用的lps的可能值確定為pi(t)和(1-pi(t))之間的小值。
基于等式1更新概率的重要參數(shù)是縮放因子αi。根據(jù)縮放因子αi的值,可確定指示cabac中使用的概率被多么敏感地更新的敏感度和關(guān)于cabac中使用的概率是否有誤差地反應(yīng)的魯棒性。
根據(jù)本公開實(shí)施方式的上下文建模器1420可通過使用一個或多個縮放因子αi來生成一個或多個更新的概率,并且可最終將一個或多個更新的概率的加權(quán)平均值確定為更新的概率。
具體地,如果通過將多個縮放因子αi應(yīng)用于等式1來獲得多個概率pi(t),則上下文建模器1420通過根據(jù)以下等式2計(jì)算多個概率pi(t)的加權(quán)平均值來獲得最終的更新概率p(t)。
[等式2]
ωi表示應(yīng)用到多個概率pi(t)的權(quán)重??煽紤]縮放因子的數(shù)量確定ωi。如果所使用的縮放因子的數(shù)量是n(n是整數(shù)),則ωi=(1/n)。例如,當(dāng)使用兩個縮放因子α1和α2時(shí),基于以上等式1得到p1(t)=α1y+(1-α1)p1(t-1)和p2(t)=α2y+(1-α2)p2(t-1)。在這種情況下,將作為兩個概率p1(t)和p2(t)的平均值的(p1(t)+p2(t))/2確定為更新概率p(t)。
另一方面,為了在更新概率上省略乘法處理,縮放因子可具有像1/2p這樣的分母為2的冪的值。也就是說,多個縮放因子αi可具有像下面的等式αi=1/(2^mi)(mi是整數(shù))的值。在這種情況下,可用包括在上述等式1中的乘法算術(shù)運(yùn)算來代替如下述等式3所示的移位算術(shù)運(yùn)算。在等式3中,“>>”是寫入移位算術(shù)運(yùn)算符。
[等式3]
pi(t)=(y>>mi)+pi(t-1)-(pi(t-1)>>mi)
在描述的示例中,當(dāng)設(shè)定α1=1/16=1/24且α2=1/128=1/27時(shí),可以通過像p1(t)=(y>>4)+p1(t-1)-(p1(t-1)>>4)的僅包括移位算術(shù)運(yùn)算和加法和減法算術(shù)運(yùn)算的等式獲得p1(t)=α1y+(1-α1)p1(t-1)。同樣,p2(t)=α2y+(1-α2)p2(t-1)可被替換為p2(t)=(y>>7)+p2(t-1)-(p2(t-1)>>7)。在硬件或軟件中移位算術(shù)運(yùn)算比乘法或除法運(yùn)算操作可更容易實(shí)現(xiàn),因此縮放因子可確定為2的冪的預(yù)定值作為分母。
圖16是根據(jù)本公開實(shí)施方式的概率更新過程的流程圖。
參照圖16,在操作1610中,上下文建模器1420通過應(yīng)用多個縮放因子來獲得多個更新的概率。如以上示例中所述,當(dāng)使用兩個縮放因子α1=1/16=1/24和α2=1/128=1/27時(shí),上下文建模器1420通過p1(t)=(y>>4)+p1(t-1)-(p1(t-1)>>4)和p2(t)=(y>>7)+p2(t-1)-(p2(t-1)>>7)獲得兩個更新概率p1(t)和p2(t),并確定p1(t)和p2(t)的平均值的(p1(t)+p2(t))/2為最終更新概率p(t)。可通過像(p1(t)+p2(t))>>1的移位算術(shù)運(yùn)算來實(shí)現(xiàn)(p1(t)+p2(t))/2。
在cabac編碼和解碼過程中,在預(yù)定數(shù)據(jù)單元中執(zhí)行熵復(fù)位。例如,可以在切片單元和編碼單元中執(zhí)行熵復(fù)位。熵復(fù)位意思是舍棄當(dāng)前概率值并基于預(yù)定概率值來重新執(zhí)行cabac。在這樣的復(fù)位處理之后執(zhí)行的概率更新過程中,設(shè)置為初始值的概率值不是最優(yōu)值,而是通過多次更新處理收斂至某個概率值。當(dāng)通過使用一個縮放因子更新概率時(shí),概率更新使得概率中的快速變化并因此更新的概率快速的收斂至適當(dāng)?shù)闹?,而重?fù)更新容易產(chǎn)生波動。當(dāng)通過使用多個縮放因子更新概率時(shí),雖然概率變化不快,但是當(dāng)更新的概率收斂到適當(dāng)值附近時(shí),由于波動發(fā)生得較不頻繁,所以更新的概率不會敏感地對錯誤或噪音起反應(yīng)并穩(wěn)定地操作。因此,在操作1620中,上下文建模器1420每次概率更新增加一個計(jì)數(shù)器,并且在操作1630中,基于計(jì)數(shù)器值確定當(dāng)前更新的概率是否與初始二進(jìn)制位相關(guān)??紤]到初始二進(jìn)制位小于預(yù)定數(shù)字,例如,50或更少的初始二進(jìn)制位,在操作1640中,可通過使用單個縮放因子來執(zhí)行概率更新??紤]到在初始二進(jìn)制位之后輸入二進(jìn)制位,例如第50個二進(jìn)制位,在操作1650中,可執(zhí)行通過使用兩個縮放因子而確定的概率更新過程。
在上述概率更新過程期間,通過使用具有預(yù)定值的縮放因子,例如將2的冪的值作為分母,來執(zhí)行概率更新。
根據(jù)本公開實(shí)施方式的上下文建模器1420通過使用接收到的二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值,基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子,然后通過使用所確定的至少一個縮放因子來更新二進(jìn)制值的概率。
圖17a和17b是用于說明自相關(guān)值的參考圖。
使用間隔預(yù)定距離k(k是整數(shù))的二進(jìn)制位的值、二進(jìn)制位的平均值m和二進(jìn)制位的方差σ來根據(jù)預(yù)定距離k來獲得自相關(guān)值rk,如下面等式4中所示。
[等式4]
在上面的等式4中,二進(jìn)制位的數(shù)量是(n+1)(n是整數(shù))且(n+1)個二進(jìn)制位的值是yj(j是從0到n的整數(shù))。
參考圖17a和圖17b,{y0,y1,y2,...,y7}指示8個二進(jìn)制位,且yi值為0或1。如果假設(shè)二進(jìn)制位的值如圖17a和17b所示分布,則二進(jìn)制位的平均值m具有圖17a和17b中值的1/2。
方差σ是在每個二進(jìn)制位的值yi和平均值m之間的均方誤差的平均值,并且具有圖17a和圖17b中值的(1/2)^2*8*(1/8)=1/4。
當(dāng)預(yù)定距離k為1時(shí),即如果通過使用鄰近二進(jìn)制位的值來計(jì)算自相關(guān)值,則當(dāng)鄰近二進(jìn)制位的值類似圖17a中所示分布時(shí)的自相關(guān)值大于當(dāng)鄰近二進(jìn)制位的值類似圖17b中所示不均勻分布時(shí)的自相關(guān)值。
圖18是根據(jù)本公開實(shí)施方式用于二進(jìn)制算術(shù)編碼的概率更新方法的流程圖。
如上所述,根據(jù)本公開實(shí)施方式的概率更新方法通過使用輸入的二進(jìn)制位來計(jì)算自相關(guān)值,并使用基于自相關(guān)值確定的每個二進(jìn)制位的概率與每個二進(jìn)制位的值之間的均方誤差最小的值作為縮放因子。
在操作1810中,上下文建模器1420通過cabac接收將要進(jìn)行二進(jìn)制算術(shù)編碼的預(yù)定數(shù)量的二進(jìn)制位。在操作1820中,上下文建模器1420基于上面的等式3獲得每個二進(jìn)制位的自相關(guān)值。
在操作1830中,上下文建模器1420基于自相關(guān)值rk確定用于更新二進(jìn)制值的概率的至少一個縮放因子。
具體地,假定{yi}表示具有值0和1之一的n個二進(jìn)制位。也就是說,j具有從0到(n-1)的值。
根據(jù)上面的等式1,使用先前二進(jìn)制位的概率、先前二進(jìn)制位的值和縮放因子α來表示在第j個二進(jìn)制位的算術(shù)編碼之后更新的概率pj,如下面的等式5所示。
[等式5]
pj=α*yj+(1-α)*pj-1=α*yj+(1-α)*(α*yj-1+(1-α)*pj-2)
=α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-2+(1-α)*pj-3)))
=α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-2+(1-α)*(α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-3+(1-α)*pj-4))))))
=........
等式5概括為下面等式6中所示。
[等式6]
每個二進(jìn)制位的概率和值之間的均方誤差(“mse”)如下面的等式中7所示。
[等式7]
如等式7中所示,mse具有相對于縮放因子α變化的值。為了確定縮放因子α,確定產(chǎn)生mse的值α。為此,等式7的mse相對于α進(jìn)行偏微分,并且確定產(chǎn)生mse具有0的值。
也就是說,確定產(chǎn)生
[等式8]
如上所述,使用兩個縮放因子α1和α2來獲得p1,j=α1y+(1-α1)p1,j-1和p2,j=α2y+(1-α2)p2,(j-1),并且當(dāng)兩個概率p1,j和p2,j的平均值(p1,j+p2,j)/2確定為更新概率pj時(shí),如下面的等式9中所示,通過代入(p1,j+p2,j)/2代替等式7的pj來計(jì)算每個二進(jìn)制位的概率與值之間的mse。
[等式9]
在等式9中,βi=1-αi。也就是說,β1=1-α1,并且β2=1-α2。
通過將等式9相對于α1和α2進(jìn)行偏微分根據(jù)自相關(guān)值的范圍來獲得最小值,如下所示。
當(dāng)rk∈[-1,1/7],α1=0,α2=0;
當(dāng)rk∈[1/7,1/2]時(shí),
當(dāng)rk∈[1/2,5/7]時(shí),α1=1,α2=0;
當(dāng)rk∈[5/7,1]時(shí),α1=1,
如上所述,如果通過使用二進(jìn)制位的自相關(guān)值確定了一個或多個縮放因子,則在操作1840中,上下文建模器1420通過使用所確定的縮放因子來更新先前的概率值,并將更新的概率值提供給常規(guī)編碼引擎1432。在操作1850中,常規(guī)編碼引擎1432通過使用更新的概率值對下一個二進(jìn)制位執(zhí)行二進(jìn)制算術(shù)編碼。
圖19是根據(jù)本公開的另一實(shí)施方式在cabac中使用概率更新方法的流程圖。
根據(jù)本公開的另一實(shí)施方式的上下文建模器1420可獲得指示通過應(yīng)用具有不同縮放因子的多個概率模型對一個二進(jìn)制位進(jìn)行編碼所需的平均位值的熵值,確定具有用以獲得最小熵值的概率模型的縮放因子,并且通過使用確定的縮放因子來執(zhí)行概率更新。
參考圖19,在操作1910中,上下文建模器1420接收要進(jìn)行二進(jìn)制算術(shù)編碼的預(yù)定數(shù)量的二進(jìn)制位。
在操作1920中,上下文建模器1420通過將具有不同縮放因子的多個概率模型應(yīng)用于所接收的二進(jìn)制位中的一個來獲得熵值。
定義m概率模型是pmi(i是從0到(m-1)的整數(shù)),并且概率模型pmi的縮放因子是αi。上下文建模器1420通過使用概率模型pmi的縮放因子αi來對當(dāng)前二進(jìn)制位執(zhí)行概率更新。如上面的等式1中所示,上下文建模器1420根據(jù)pi(t)=αiyi+(1-αi)pi(t-1)執(zhí)行概率更新。
上下文建模器1420通過在位單元中應(yīng)用多個概率模型來計(jì)算熵。具體地,如下面的等式10中所示,上下文建模器1420根據(jù)當(dāng)前二進(jìn)制位y的值獲得參數(shù)biti。
[等式10]
biti=(y==1)?-log2pi(t):-log2(1-pi(t))
參照等式10,在當(dāng)前二進(jìn)制位y的值為1時(shí),參數(shù)biti具有值log2pi(t);在當(dāng)前二進(jìn)制位的y的值為0時(shí),參數(shù)biti具有值-log2(1-pi(t))。
如下面的等式11中所示,通過使用參數(shù)biti來獲得當(dāng)前二進(jìn)制位的熵si(t)。
[等式11]
si(t)=biti*αi+(1-αi)*si(t-1)
在等式11中,si(t-1)是相對于當(dāng)前二進(jìn)制位的先前二進(jìn)制位而獲得的熵值?;诘仁?1,如果獲得相對于當(dāng)前二進(jìn)制位的多個熵值,則上下文建模器1420將熵si(t)中最小熵值中使用的縮放因子αi確定為最終縮放因子。
例如,對于當(dāng)前二進(jìn)制位y,假設(shè)通過應(yīng)用縮放因子α1獲得的熵值是s1(t),并且通過應(yīng)用縮放因子α2獲得的熵值是s2(t)。在s1(t)<s2(t)的情況下,將用于獲得具有較小熵值的s1(t)的縮放因子α1確定為用于概率更新的縮放因子,并且根據(jù)p1(t)=α1y+(1-α1)p1(t-1)更新概率。在s1(t)>s2(t)的情況下,將用于獲得具有較小熵值的s2(t)的縮放因子α2確定為概率更新的縮放因子,并且根據(jù)p2(t)=α2y+(1-α2)p2(t-1)更新概率。
圖20a和圖20b示出基于cabac執(zhí)行二進(jìn)制算術(shù)編碼的過程。
參照圖20a,上下文建模器1420向常規(guī)編碼引擎1432提供預(yù)定二進(jìn)制值,例如“1”的發(fā)生概率p(1)。常規(guī)編碼引擎1432考慮輸入的二進(jìn)制位是否為1來分割概率區(qū)間并執(zhí)行二進(jìn)制算術(shù)編碼。在圖20a中,假設(shè)“1”的發(fā)生概率為p(1)=0.8,并且“0”的發(fā)生概率為p(0)=0.2。雖然為了描述的緣故所述的p(1)和p(0)是不變的,但是如上所述,每當(dāng)對一個二進(jìn)制位編碼時(shí),可以更新p(1)和p(0)的值。常規(guī)編碼引擎1432由于先前輸入的二進(jìn)制位s1具有值1而在(0,1)區(qū)間中選擇值“1”的概率區(qū)間(0,0.8),由于隨后輸入的二進(jìn)制位s2具有值0而選擇與(0,0.8)區(qū)間的上側(cè)的0.2相對應(yīng)的概率區(qū)間(0.64,0.8),并且由于最終輸入的二進(jìn)制位s3具有值1而最后確定接近(0.64,0.8)的0.8的區(qū)間(0.64,0.7768)。常規(guī)編碼引擎1432選擇0.75作為指示(0.64,0.788)區(qū)間的代表值,并輸出對應(yīng)于0.75的二進(jìn)制值0.11中的小數(shù)位“11”作為比特流。也就是說,輸入的二進(jìn)制位“101”被映射到“11”并輸出。
參照圖20b,通過更新當(dāng)前可用范圍rs和范圍rs的下邊界值rlb來執(zhí)行根據(jù)cabac的二進(jìn)制算術(shù)編碼過程。當(dāng)二進(jìn)制算術(shù)編碼開始時(shí),設(shè)置rs=510,rlb=0。在當(dāng)前二進(jìn)制位的值vbin為mps時(shí),范圍rs變?yōu)閞mps。在當(dāng)前二進(jìn)制位的值vbin為lps時(shí),將范圍rs改變?yōu)閞lps,并且對下邊界值rlb進(jìn)行更新以指示rlps。如上面圖20a中的示例所示,在二進(jìn)制算術(shù)編碼處理期間根據(jù)當(dāng)前二進(jìn)制位的值是mps還是lps來更新預(yù)定區(qū)間rs,并且輸出指示更新區(qū)間的二進(jìn)制值。
圖21是根據(jù)縮放因子的數(shù)量基于自相關(guān)值rk確定的縮放因子α的變化的圖。
在圖21中,x軸指示自相關(guān)值(rk=ρ),而y軸指示縮放因子。當(dāng)相對于輸入的二進(jìn)制位確定最優(yōu)縮放因子時(shí),如果使用一個縮放因子α1或α2(2120),則縮放因子值可能會太慢或太快地收斂到預(yù)定值。因此,可優(yōu)先使用兩個縮放因子(2110)而不是一個縮放因子。
圖22是根據(jù)縮放因子的數(shù)量的mse的變化的圖。
在圖22中,參考標(biāo)記2210表示當(dāng)使用一個縮放因子時(shí)的mse,并且參考標(biāo)記2220表示當(dāng)使用兩個縮放因子時(shí)的mse。在圖22中,x軸指示自相關(guān)值(rk=ρ),而y軸指示mse。參照圖22,使用兩個縮放因子時(shí)的mse(2220)小于使用一個縮放因子時(shí)的mse(2210)。也就是說,通過使用當(dāng)使用兩個比例因子時(shí)的自相關(guān)值rk概率可以比通過使用一個比例因子時(shí)的自相關(guān)值rk更精確地更新概率。
圖23是根據(jù)本公開實(shí)施方式的熵解碼設(shè)備2300的框圖。
參照圖23,熵解碼設(shè)備2300包括上下文建模器2310、常規(guī)解碼器2320、旁路解碼器2330和逆二值化器2340。熵解碼設(shè)備2300執(zhí)行由上述熵編碼設(shè)備1400執(zhí)行的熵編碼過程的逆過程。
通過旁路編碼進(jìn)行編碼的二進(jìn)制位由旁路解碼器2330輸出和解碼。由常規(guī)編碼進(jìn)行編碼的二進(jìn)制位由常規(guī)解碼器2320進(jìn)行解碼。常規(guī)解碼器2320通過使用基于在由上下文建模器2310提供的當(dāng)前二進(jìn)制位之前解碼的先前二進(jìn)制位確定的二進(jìn)制值的概率,對當(dāng)前二進(jìn)制位進(jìn)行算術(shù)解碼。
上下文建模器2310向常規(guī)解碼器2320提供對應(yīng)于二進(jìn)制位的概率模型。具體地,上下文建模器2310基于先前解碼的二進(jìn)制位確定預(yù)定二進(jìn)制值的概率,更新用于解碼先前二進(jìn)制位的二進(jìn)制值的概率,并將更新的概率輸出到常規(guī)解碼器2320。根據(jù)本公開實(shí)施方式的上下文建模器2310可通過使用二進(jìn)制位的值來獲得每個二進(jìn)制位的自相關(guān)值,基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子,然后通過使用所確定的至少一個縮放因子來更新二進(jìn)制值的概率。
此外,根據(jù)本公開的另一實(shí)施方式的上下文建模器2310可通過應(yīng)用具有不同縮放因子的多個概率模型獲得指示二進(jìn)制位的平均位值的熵值,確定具有用于在多個概率模型中獲得最小熵值的概率模型的縮放因子,并且對通過使用所確定的縮放因子更新二進(jìn)制值的概率。由上下文建模器2310執(zhí)行的概率更新過程與包括在上述編碼過程中的概率更新過程相同,因此在此省略其詳細(xì)說明。
逆二值化器2340通過將二進(jìn)制位字符串再次映射到語法元素來恢復(fù)由常規(guī)解碼器2320或旁路解碼器2330恢復(fù)的二進(jìn)制位字符串。
圖24是根據(jù)本公開實(shí)施方式用于二進(jìn)制算術(shù)解碼的概率更新方法的流程圖。
在操作2410中,上下文建模器2310接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位。
在操作2420中,上下文建模器2310通過使用所接收的預(yù)定數(shù)量的二進(jìn)制位的值來獲得二進(jìn)制位的自相關(guān)值。如上面等式3中所示,通過使用間隔預(yù)定距離k(k為整數(shù))的二進(jìn)制位的值、二進(jìn)制位的平均值m和二進(jìn)制位的方差σ來獲得自相關(guān)值rk。
在操作2430中,上下文建模器2310基于自相關(guān)值確定用于更新二進(jìn)制值的概率的至少一個縮放因子。如上所述,根據(jù)本公開實(shí)施方式的概率更新方法使用在基于自相關(guān)值確定的每個二進(jìn)制位的概率與每個二進(jìn)制位的值之間具有最小mse的值作為縮放因子。當(dāng)使用一個縮放因子時(shí),可像上述等式8
如果通過使用二進(jìn)制位的自相關(guān)值來確定一個或多個縮放因子,在操作2440中,上下文建模器2310通過使用所確定的一個或多個縮放因子來更新在基于上下文的自適應(yīng)二進(jìn)制算術(shù)解碼中使用的概率,并且向常規(guī)解碼器2320提供更新的概率。在操作2450中,常規(guī)解碼器2320通過使用更新的概率對下一個二進(jìn)制位進(jìn)行二進(jìn)制算術(shù)解碼。
圖25是根據(jù)本公開的另一實(shí)施方式用于二進(jìn)制算術(shù)解碼的概率更新方法的流程圖。
在操作2510中,上下文建模器2310接收要進(jìn)行二進(jìn)制算術(shù)解碼的預(yù)定數(shù)量的二進(jìn)制位。
在操作2520中,上下文建模器2310通過應(yīng)用具有不同縮放因子的多個概率模型來獲得指示二進(jìn)制位的平均位值的熵值。
與上述二進(jìn)制算術(shù)編碼過程類似,上下文建模器2310通過在二進(jìn)制位單元中應(yīng)用多個概率模型來計(jì)算熵。換句話說,上下文建模器2310根據(jù)當(dāng)前二進(jìn)制位y的值獲得類似等式10的參數(shù)biti,并且通過使用根據(jù)等式11的參數(shù)biti來獲得當(dāng)前二進(jìn)制位的熵si(t)。
在操作2530中,上下文建模器2310將通過應(yīng)用多個縮放因子獲得的在多個熵值中的最小熵值中使用的縮放因子αi確定為最終縮放因子。
在操作2540中,上下文建模器2310通過使用確定的縮放因子來更新先前二進(jìn)制值的概率,并將概率輸出到常規(guī)解碼器2320,并且常規(guī)解碼器2320通過使用更新的概率對下一個二進(jìn)制位執(zhí)行基于上下文的自適應(yīng)二進(jìn)制算術(shù)解碼。
本公開還可實(shí)施為在非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì)上的計(jì)算機(jī)可讀代碼。非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì)是可以存儲數(shù)據(jù)隨后可由計(jì)算機(jī)系統(tǒng)讀取的任意數(shù)據(jù)存儲設(shè)備。非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì)的示例包括rom、ram、cd-rom、磁帶、軟盤、光學(xué)數(shù)據(jù)存儲設(shè)備等。非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì)也可以分布在網(wǎng)絡(luò)聯(lián)接的計(jì)算機(jī)系統(tǒng),使得計(jì)算機(jī)可讀代碼以分布式的方式被存儲和執(zhí)行。
雖然已經(jīng)參考附圖描述了實(shí)施方式,但是本領(lǐng)域普通技術(shù)人員將會理解,在沒有背離由所附權(quán)利要求限定的精神和范圍的情況下,可以在形式和細(xì)節(jié)上進(jìn)行各種改變。因此,本公開的范圍不由本公開的詳細(xì)描述限定而是由所附權(quán)利要求限定,并且該范圍內(nèi)的所有差異將解釋為包括在本公開中。