国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      變換塊的高效編碼和解碼的制作方法

      文檔序號(hào):7639061閱讀:425來源:國知局
      專利名稱:變換塊的高效編碼和解碼的制作方法
      專利說明變換塊的高效編碼和解碼 背景 基于塊變換的編碼 變換編碼是在許多音頻、圖像和視頻壓縮系統(tǒng)中使用的一種壓縮技術(shù)。未壓縮數(shù)字圖像和視頻通常被表示或捕捉為以二維(2D)網(wǎng)格排列的圖像或視頻幀中各位置處的圖元或色彩的樣本。這被稱為圖像或視頻的空間域表示。例如,用于圖像的典型格式由被排列為網(wǎng)格的24位彩色圖元流構(gòu)成。每一樣本是表示諸如RGB或YIQ等色彩空間內(nèi)該網(wǎng)格中的一個(gè)像素位置處的色彩分量的數(shù)字。各種圖像和視頻系統(tǒng)可使用各種不同的色彩、空間和時(shí)間分辨率的采樣。類似地,數(shù)字音頻通常被表示為時(shí)間采樣的音頻信號(hào)流。例如,典型的音頻格式由在有規(guī)律的時(shí)間間隔處所取的16位音頻信號(hào)幅度樣本流構(gòu)成。
      未壓縮數(shù)字音頻、圖像和視頻信號(hào)可消耗大量的存儲(chǔ)和傳輸能力。變換編碼通過將信號(hào)的空間域表示變換成頻域(或其它類似的變換域)表示,然后降低該變換域表示的某些一般較不可感知的頻率分量的分辨率,減小了數(shù)字音頻、圖像和視頻的大小。這一般與降低空間域中的圖像或視頻或時(shí)域中的音頻的色彩或空間分辨率相比,產(chǎn)生了較不可感知的數(shù)字信號(hào)劣化。
      更具體而言,

      圖1所示的典型的基于塊變換的編解碼器100將未壓縮的數(shù)字圖像的像素劃分成固定大小的二維塊(X1,...Xn),每一塊可能與其它塊重疊。對每一塊應(yīng)用進(jìn)行空間-頻率分析的線性變換120-121,這將塊內(nèi)彼此隔開的樣本轉(zhuǎn)換成一般表示塊間隔上相應(yīng)的頻帶內(nèi)的數(shù)字信號(hào)的強(qiáng)度的一組頻率(或變換)系數(shù)。作為比較,變換系數(shù)可被選擇性地量化130(即,諸如通過丟棄系數(shù)值的最低有效位或?qū)⑤^高分辨率數(shù)字集中的值映射到較低分辨率來降低分辨率),并且還被熵或可變長度編碼130成壓縮的數(shù)據(jù)流。在解碼時(shí),變換系數(shù)進(jìn)行反變換170-171以便幾乎重構(gòu)原始的色彩/空間采樣圖像/視頻信號(hào)(重構(gòu)塊

      )。
      塊變換120-121可被定義為對大小為N的向量x的數(shù)學(xué)運(yùn)算。最通常的是,該運(yùn)算是線性乘法,從而產(chǎn)生變換域輸出y=Mx,M是變換矩陣。當(dāng)輸入數(shù)據(jù)是任意長時(shí),它被分段成大小為N的向量,并且向每一段應(yīng)用塊變換。出于數(shù)據(jù)壓縮的目的,選擇可逆塊變換。換言之,矩陣M是可逆的。在多個(gè)維度中(例如,對于圖像和視頻),塊變換通常被實(shí)現(xiàn)為可分操作。沿?cái)?shù)據(jù)的每一維(即,行和列)可分地應(yīng)用矩陣乘法。
      對于壓縮,變換系數(shù)(向量y的分量)可被選擇性地量化(即,諸如通過丟棄系數(shù)值的最低有效位或?qū)⑤^高分辨率數(shù)字集中的值映射到較低分辨率來降低分辨率),并還可被熵或可變長度編碼為壓縮的數(shù)據(jù)流。
      在解碼器150中解碼時(shí),如圖1所示,在解碼器150側(cè)應(yīng)用這些操作的反過程(反量化/熵解碼160和反塊變換170-171)。在重構(gòu)數(shù)據(jù)時(shí),將逆矩陣M1(反變換170-171)作為乘數(shù)應(yīng)用于變換域數(shù)據(jù)。當(dāng)應(yīng)用于變換域數(shù)據(jù)時(shí),反變換幾乎重構(gòu)原始時(shí)域或空間域數(shù)字媒體。
      在許多基于塊變換達(dá)到編碼應(yīng)用中,變換理想地是可逆的以取決于量化因子同時(shí)支持有損和無損壓縮兩者。如果例如沒有量化(一般被表示為量化因子1),則利用可逆變換的編解碼器可在解碼時(shí)精確地再現(xiàn)輸入數(shù)據(jù)。然而,這些應(yīng)用中的可逆性的要求約束了對用于設(shè)計(jì)編解碼器的變換的選擇。
      諸如MPEG和Windows Media等許多圖像和視頻壓縮系統(tǒng)利用基于離散余弦變換(DCT)的變換。已知DCT具有得到近乎最優(yōu)的數(shù)據(jù)壓縮的良好能量壓縮特性。在這些壓縮系統(tǒng)中,在壓縮系統(tǒng)的編碼器和解碼器兩者中的重構(gòu)環(huán)路中采用了反DCT(IDCT)來重構(gòu)各個(gè)圖像塊。
      寬范圍變換系數(shù)的熵編碼 寬動(dòng)態(tài)范圍輸入數(shù)據(jù)導(dǎo)致在編碼圖像的過程中生成甚至更寬動(dòng)態(tài)范圍的變換系數(shù)。例如,由N×N DCT運(yùn)算生成的變換系數(shù)具有比原始數(shù)據(jù)的動(dòng)態(tài)范圍大N倍的動(dòng)態(tài)范圍。采用較小或單位量化因子(用于實(shí)現(xiàn)低損或無損壓縮),經(jīng)量化的變換系數(shù)的范圍也很大。在統(tǒng)計(jì)上,這些系數(shù)具有如圖2和3所示的拉普拉斯分布。圖2示出了對于寬動(dòng)態(tài)范圍系數(shù)的拉普拉斯分布。圖3示出了對于典型的窄動(dòng)態(tài)范圍系數(shù)的拉普拉斯分布。
      對于小動(dòng)態(tài)范圍的輸入數(shù)據(jù)(通常為8位)以及相對較大的量化因子(quantizer)(諸如大于等于4的數(shù)值)來調(diào)整常規(guī)的變換編碼。因此,圖3代表了在這一常規(guī)的變換編碼中的變換系數(shù)的分布。此外,用于這種常規(guī)變換編碼的熵編碼可以是行程水平(run-level)編碼的一種變體,其中將一系列的零與一非零碼元一起編碼。這可以是表示零(以高概率出現(xiàn))的行程以及捕捉碼元間相關(guān)的有效手段。
      另一方面,常規(guī)的變換編碼較不適用于壓縮諸如圖2所示的寬動(dòng)態(tài)范圍分布。盡管碼元為零的概率要比任何其它值高得多(即,分布峰值為零),但是系數(shù)精確地為零的概率對于寬動(dòng)態(tài)范圍分布是微乎其微的。因此,零不會(huì)經(jīng)常出現(xiàn),并且基于連續(xù)的非零系數(shù)之間的零的個(gè)數(shù)的行程長度熵編碼技術(shù)對于寬動(dòng)態(tài)范圍輸入數(shù)據(jù)是非常低效的。
      寬動(dòng)態(tài)范圍分布與窄范圍分布相比還具有增加的碼元字母表。由于這一增加的碼元字母表,用于編碼碼元的熵表必須很大。否則,許多碼元將最終被遺漏而未被編碼,這是低效的。更大的表需要更多存儲(chǔ)器,并且還會(huì)導(dǎo)致更高的復(fù)雜度。
      因此,常規(guī)的變換編碼缺少通用性-對于具有窄動(dòng)態(tài)范圍分布的輸入數(shù)據(jù)能起很好的作用,但對寬動(dòng)態(tài)范圍分布卻不如此。
      然而,在窄范圍數(shù)據(jù)上,找到對經(jīng)量化的變換系數(shù)的高效熵編碼是一個(gè)關(guān)鍵過程??稍谶@一步中得到的任何性能增益(壓縮效率和編碼/解碼速度兩方面的增益)轉(zhuǎn)換成總體質(zhì)量增益。
      不同的熵編碼方案按照其成功地利用這些完全不同的效率準(zhǔn)則的能力而被標(biāo)記為對上下文信息的使用、較高壓縮(諸如算術(shù)編碼)、較低計(jì)算要求(諸如哈夫曼(Huffman)編碼技術(shù)中找到的)、以及使用一組簡明的碼表來最小化編碼器/解碼器存儲(chǔ)器開銷。不滿足所有這些特征的常規(guī)熵編碼方法沒有展示出編碼變換系數(shù)的全面效率。
      概述 此處描述的數(shù)字媒體編解碼器中的數(shù)字媒體編碼和解碼技術(shù)以及該技術(shù)的實(shí)現(xiàn)獲得了變換系數(shù)的更高效壓縮。例如,此處所示的一種示例性基于塊變換的數(shù)字媒體編解碼器通過對非零系數(shù)以及后續(xù)的零值系數(shù)的行程進(jìn)行聯(lián)合編碼來更高效地編碼變換系數(shù)。當(dāng)非零系數(shù)是其塊中的最后一個(gè)系數(shù)時(shí),對該系數(shù),用一最后指示符來代替碼元中的行程值。初始非零系數(shù)在將非零系數(shù)與初始和后續(xù)的零行程聯(lián)合編碼的特殊碼元中指示。
      該示例性編解碼器通過識(shí)別非零系數(shù)的行程中的間斷并在這一間斷的任一側(cè)上單獨(dú)地對非零系數(shù)編碼而允許多個(gè)編碼上下文。通過基于內(nèi)部、中間和外部變換的上下文切換、以及基于變換是對應(yīng)于亮度還是色度通道的上下文切換,來提供附加上下文。這允許碼表具有較小的熵,而無需創(chuàng)建如此多的上下文從而使其有用性減弱。
      該示例性編解碼器還通過在每一碼元中指示非零系數(shù)是否具有大于1的絕對值以及零的行程是否具有正值來減小碼表大小,并對碼元外的系數(shù)的水平和行程的長度單獨(dú)編碼。該編解碼器可對這些單獨(dú)編碼的行程和水平充分利用上下文切換。
      可組合或單獨(dú)使用各種技術(shù)和系統(tǒng)。
      提供本概述以用簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
      參考附圖閱讀以下實(shí)施例的詳細(xì)描述,將清楚其它特征和優(yōu)點(diǎn)。
      附圖簡述 圖1是現(xiàn)有技術(shù)中常規(guī)的基于塊變換的編解碼器的框圖。
      圖2是示出具有寬動(dòng)態(tài)范圍的變換系數(shù)的分布的直方圖。
      圖3是示出窄范圍系數(shù)的分布的直方圖。
      圖4是包含寬范圍系數(shù)的自適應(yīng)編碼的代表性編碼器的流程圖。
      圖5是包含自適應(yīng)地編碼的寬范圍系數(shù)的解碼的代表性解碼器的流程圖。
      圖6是示出諸如圖4的編碼器等寬范圍系數(shù)的自適應(yīng)編碼中變換系數(shù)的分組和分層的流程圖。
      圖7是示出圖4的編碼器所執(zhí)行的對槽中選擇的變換系數(shù)分組進(jìn)行變換系數(shù)編碼的過程的流程圖。
      圖8是示出圖5的解碼器所執(zhí)行的對經(jīng)由圖7的過程編碼的變換系數(shù)進(jìn)行重構(gòu)的過程的流程圖。
      圖9是示出用于自適應(yīng)地改變圖6的分組以產(chǎn)生對系數(shù)的熵編碼的更優(yōu)化分布的自適應(yīng)過程的流程圖。
      圖10和11是圖9的自適應(yīng)過程的偽代碼清單。
      圖12示出了現(xiàn)有技術(shù)中的已編碼變換系數(shù)的示例。
      圖13示出了根據(jù)此處所描述的編碼技術(shù)編碼的變換系數(shù)的一個(gè)示例。
      圖14是示出由圖4的編碼器執(zhí)行的對變換系數(shù)進(jìn)行編碼的過程的流程圖。
      圖15示出了用于根據(jù)此處所描述的技術(shù)對變換系數(shù)進(jìn)行編碼的不同碼表上下文的示例。
      圖16是示出由圖4的編碼器執(zhí)行的確定在編碼變換系數(shù)時(shí)要使用的編碼上下文的過程的流程圖。
      圖17示出了根據(jù)此處所描述的技術(shù)編碼的精簡的變換系數(shù)的示例。
      圖18是示出由圖4的編碼器執(zhí)行的編碼和發(fā)送精簡形式的初始變換系數(shù)的過程的流程圖。
      圖19是示出由圖4的編碼器執(zhí)行的編碼和發(fā)送精簡形式的后續(xù)系數(shù)的過程的流程圖。
      圖20是示出由圖5的解碼器執(zhí)行的解碼已編碼變換系數(shù)的過程的流程圖。
      圖21是示出由圖5的解碼器執(zhí)行的填充來自已解碼碼元的變換系數(shù)的過程的流程圖。
      圖22是用于實(shí)現(xiàn)圖6的寬范圍系數(shù)的自適應(yīng)編碼的合適的計(jì)算環(huán)境的框圖。
      詳細(xì)描述 以下描述涉及針對寬范圍變換系數(shù)的更高效熵編碼、以及一般的變換系數(shù)的更高效熵編碼進(jìn)行自適應(yīng)地調(diào)整的編碼和解碼技術(shù)。以下描述在數(shù)字媒體壓縮系統(tǒng)或編解碼器的上下文中描述了該技術(shù)的一個(gè)示例實(shí)現(xiàn)。該數(shù)字媒體系統(tǒng)以壓縮形式對數(shù)字媒體數(shù)據(jù)進(jìn)行編碼以便傳輸或存儲(chǔ),并解碼該數(shù)據(jù)以供回放或其它處理。出于說明的目的,包含這一寬范圍系數(shù)的自適應(yīng)編碼的該示例性壓縮系統(tǒng)是圖像或視頻壓縮系統(tǒng)?;蛘?,該技術(shù)也可被結(jié)合到用于其它2D數(shù)據(jù)的壓縮系統(tǒng)或編解碼器中。寬范圍系數(shù)自適應(yīng)編碼技術(shù)不要求數(shù)字媒體壓縮系統(tǒng)以特定的編碼格式來編碼壓縮的數(shù)字媒體數(shù)據(jù)。
      1.編碼器/解碼器 圖4和5是在代表性2維(2D)數(shù)據(jù)編碼器400和解碼器500中采用的過程的一般化圖示。該圖呈現(xiàn)了結(jié)合了實(shí)現(xiàn)寬范圍系數(shù)自適應(yīng)編碼的2D數(shù)據(jù)編碼器和解碼器的壓縮系統(tǒng)的一般化或簡化的圖示。在使用寬范圍系數(shù)自適應(yīng)編碼的替換壓縮系統(tǒng)中,可使用比本代表性編碼器和解碼器中所示的更多或更少的過程來進(jìn)行2D數(shù)據(jù)壓縮。例如,某些編碼器/解碼器還可包括色彩轉(zhuǎn)換、色彩格式、可縮放編碼、無損編碼、宏塊模式等等。取決于量化,壓縮系統(tǒng)(編碼器和解碼器)可提供2D數(shù)據(jù)的無損和/或有損壓縮,量化可基于從無損到有損變化的量化參數(shù)。
      2D數(shù)據(jù)編碼器400產(chǎn)生壓縮比特流420,它是作為輸入提供給編碼器的2D數(shù)據(jù)410的更緊湊表示(對于典型輸入)。例如,2D數(shù)據(jù)輸入可以是圖像、視頻序列的一幀、或具有兩個(gè)維度的其它數(shù)據(jù)。2D數(shù)據(jù)編碼器將輸入數(shù)據(jù)塊化(tile)430成宏塊,在本代表性編碼器中,宏塊的大小為16×16像素。2D數(shù)據(jù)編碼器還將每一宏塊塊化為4×4的塊。對塊之間的每一邊緣應(yīng)用“前向重疊”算子440,之后使用塊變換450來變換每一4×4的塊。該塊變換450可以是由Srinivasan在2004年12月17日提交的題為“Reversible Transform For Lossy And Lossless 2-DData Compression”(用于有損和無損2D數(shù)據(jù)壓縮的可逆變換)的美國專利申請第11/015,707號(hào)中所描述的可逆的、無縮放的2D變換。重疊算子440可以是由Tu等人在2004年12月17日提交的題為“Reversible Overlap Operator for EfficientLossless Data Compression”(用于高效無損數(shù)據(jù)壓縮的可逆重疊算子)的美國專利申請第11/015,148號(hào);以及Tu等人在2005年1月14日提交的題為“Reversible2-Dimensional Pre-/Post-Filter for Lapped Biorthogonal Transform”(用于重疊雙正交變換的可逆2維預(yù)/后濾波器)的美國專利申請第11/035,991號(hào)中描述的可逆重疊算子?;蛘?,可使用離散余弦變換或其它塊變換和重疊算子。在變換之后,令每一4×4的變換塊的DC系數(shù)460經(jīng)受一類似的處理鏈(塊化、前向重疊、之后是4×4的塊變換)。所得的DC變換系數(shù)和AC變換系數(shù)被量化470、熵編碼480和分組化490。
      解碼器執(zhí)行反過程。在解碼器側(cè),從其各自的分組中提取510變換系數(shù)位,從中系數(shù)本身被解碼520和解量化530。DC系數(shù)540通過應(yīng)用反變換來重新生成,并且DC系數(shù)的平面使用跨DC塊邊緣應(yīng)用的合適的平滑算子來“反重疊”。隨后,通過向DC系數(shù)應(yīng)用4×4的反變換550來重新生成整個(gè)數(shù)據(jù),并從比特流中解碼AC系數(shù)542。最后,對所得圖像平面中的塊邊緣進(jìn)行反重疊濾波560。這產(chǎn)生經(jīng)重構(gòu)的2D數(shù)據(jù)輸出。
      在一個(gè)示例性實(shí)現(xiàn)中,編碼器400(圖4)將輸入圖像壓縮成壓縮比特流420(例如,文件),而解碼器500(圖5)基于是采用無損還是有損編碼來重構(gòu)原始輸入或其近似。編碼過程涉及應(yīng)用以下所討論的前向重疊變換(LT),這是用同樣在以下更全面描述的可逆2維預(yù)/后濾波來實(shí)現(xiàn)的。解碼過程涉及應(yīng)用使用可逆2維預(yù)/后濾波的反重疊變換(ILT)。
      所示的LT和ILT在確切的意義上是彼此的反過程,并且因此可被統(tǒng)稱為可逆重疊變換。作為一種可逆變換,LT/ILT對可用于無損圖像壓縮。
      由所示的編碼器400/解碼器500壓縮的輸入數(shù)據(jù)410可以是各種色彩格式(例如,RGB/YUV 4:4:4、YUV 4:2:2或YUV 4:2:0彩色圖像格式)的圖像。通常,輸入圖像總是具有亮度(Y)分量。如果它是RGB/YUV 4:4:4、YUV 4:2:2或YUV 4:2:0圖像,則該圖像還具有色度分量,諸如U分量和V分量。圖像的這些單獨(dú)的色彩平面或分量可具有不同的空間分辨率。在例如YUV 4:2:0色彩格式的輸入圖像的情況下,U和V分量具有Y分量一半的寬度和高度。
      如上所述,編碼器400將輸入圖像或圖片塊化成宏塊。在一個(gè)示例性實(shí)現(xiàn)中,編碼器400將輸入圖像塊化成Y通道中的16×16的宏塊(取決于色彩格式,可以是U和V通道中的16×16、16×8或8×8區(qū)域)。每一宏塊色彩平面被塊化成4×4的區(qū)域或塊。因此,宏塊按以下對于本示例性編碼器實(shí)現(xiàn)的方式由各種色彩格式組成 1.對于灰度圖像,每一宏塊包含16個(gè)4×4的亮度(Y)塊。
      2.對于YUV 4:2:0格式彩色圖像,每一宏塊包含16個(gè)4×4的Y塊,并且4個(gè)各自為4×4的色度(U和V)塊。
      3.對于YUV 4:2:2格式彩色圖像,每一宏塊包含16個(gè)4×4的Y塊,以及8個(gè)各自為4×4的色度(U和V)塊。
      4.對于RGB或YUV 4:4:4彩色圖像,每一宏塊對Y、U和V通道中的每一個(gè)包含16個(gè)塊。
      2.寬范圍系數(shù)的自適應(yīng)編碼 在寬動(dòng)態(tài)范圍數(shù)據(jù)的情況下,尤其是解相關(guān)的變換數(shù)據(jù)(諸如圖4的編碼器中的系數(shù)460、462),大量的較低順序位是不可預(yù)測且是“有噪聲的”。換言之,在較低順序位中沒有太多可用于高效熵編碼的相關(guān)。位具有較高的熵,大約對每一編碼的位有1位的熵。
      2.1分組 此外,圖3所示的寬范圍變換系數(shù)的拉普拉斯概率分布函數(shù)由下式給出 (為方便起見,對應(yīng)于變換系數(shù)的隨機(jī)變量作為連續(xù)值來對待)。對于寬動(dòng)態(tài)范圍數(shù)據(jù),λ較小,并且絕對均值1/λ較大。這一分布的斜率被界定在±(λ2)內(nèi),這是非常小的。這意味著對于較小的位移ξ,變換系數(shù)等于x的概率非常接近等于x+ξ的概率。在離散域中,這轉(zhuǎn)換成斷言“變換系數(shù)具有相鄰值j和(j+1)的概率幾乎相同?!? 現(xiàn)在參考圖6,寬范圍系數(shù)自適應(yīng)編碼將字母表的連續(xù)碼元分組610成N個(gè)碼元的“槽”(bin)。每一槽的碼元數(shù)可以是任何數(shù)目N。然而,為實(shí)用性起見,數(shù)目N理想地是2的冪(即,N=2k),使得一個(gè)槽內(nèi)的系數(shù)的索引或地址可被高效地編碼為一固定長度碼。例如,碼元可被分組成對,使得一碼元可被標(biāo)識(shí)為該對的索引以及該對內(nèi)碼元的索引。
      該分組具有這樣的好處采用對N的適當(dāng)選擇,對寬范圍系數(shù)的槽索引的概率分布更精確地類似例如圖3所示的窄范圍數(shù)據(jù)的概率分布。分組在數(shù)學(xué)上類似于量化操作。這意味著槽索引可使用對具有窄范圍概率分布的數(shù)據(jù)能起最好作用的可變長度熵編碼技術(shù)來高效地編碼。
      基于將系數(shù)分組成槽,編碼器然后可使用其槽的索引(此處也稱為歸一化系數(shù)620)及其在槽內(nèi)的地址(此處也稱為槽地址625)來對變換系數(shù)615進(jìn)行編碼。歸一化系數(shù)是使用可變長度熵編碼來編碼的,而槽地址是借助固定長度碼來編碼的。
      對N(或等效地,用于槽地址的固定長度編碼的位數(shù)k)的選擇確定了分組的粒度。一般而言,變換系數(shù)的范圍越寬,應(yīng)選擇越大的k值。當(dāng)仔細(xì)選擇k時(shí),歸一化系數(shù)Y有很高的概率為零,這匹配用于Y的熵編碼方案。
      如下所述,值k可在編碼器和解碼器中自適應(yīng)地變化(以后向自適應(yīng)方式)。更具體地,編碼器和解碼器中的k的值僅基于先前編碼/解碼的數(shù)據(jù)來變化。
      在圖7所示的這一編碼的一個(gè)特定示例中,編碼器如下對變換系數(shù)X進(jìn)行編碼。對于初始動(dòng)作710,編碼器計(jì)算用于變換系數(shù)的歸一化系數(shù)Y。在此示例實(shí)現(xiàn)中,對于槽大小的特定選擇N=2k,歸一化系數(shù)Y被定義為Y=sign(X)*floor(abs(X)/N)。編碼器使用熵碼單獨(dú)地或與其它碼元聯(lián)合地對碼元Y進(jìn)行編碼(動(dòng)作720)。接著,在動(dòng)作730處,編碼器確定變換系數(shù)X的槽地址(Z)。在此示例實(shí)現(xiàn)中,槽地址是abs(X)除以槽大小N的整數(shù)除法的余數(shù),即Z=abs(X)%N。編碼器在動(dòng)作740處將該值編碼為k位的固定長度碼。此外,在非零變換系數(shù)的情況下,編碼器也對符號(hào)進(jìn)行編碼。更具體地,如動(dòng)作750-760中所指示的,編碼器在歸一化系數(shù)為非零時(shí)對歸一化系數(shù)(Y)的符號(hào)進(jìn)行編碼。此外,在歸一化系數(shù)為零且變換系數(shù)非零的情況下,編碼器對變換系數(shù)(X)的符號(hào)進(jìn)行編碼。由于歸一化系數(shù)是使用可變長度熵碼來編碼的,因此此處它也被稱為可變長度部分,并且槽地址(Z)也被稱為固定長度部分。在其它替換實(shí)現(xiàn)中,用于變換系數(shù)的歸一化系數(shù)、槽地址和符號(hào)的數(shù)學(xué)定義可以不同。
      繼續(xù)此示例,圖8示出了解碼器500(圖5)執(zhí)行的重構(gòu)通過過程700(圖7)編碼的變換系數(shù)的示例過程800。在動(dòng)作810處,解碼器單獨(dú)地或結(jié)合如在塊編碼過程中定義的其它碼元從壓縮比特流420(圖5)中解碼歸一化系數(shù)(Y)。解碼器還在動(dòng)作820處從壓縮比特流中讀取用于槽地址和符號(hào)(當(dāng)被編碼時(shí))的k位碼字。在動(dòng)作830到870處,解碼器然后如下重構(gòu)變換系數(shù) 1.當(dāng)Y>0(動(dòng)作830),則將變換系數(shù)重構(gòu)為X=Y(jié)*N+Z(動(dòng)作(831))。
      2.當(dāng)Y<0(動(dòng)作840),則將變換系數(shù)重構(gòu)為X=Y(jié)*N-Z(動(dòng)作841)。
      3.當(dāng)Y=0且Z=0(動(dòng)作850),則將變換系數(shù)重構(gòu)為X=0(動(dòng)作851)。
      4.當(dāng)Y=0且Z≠0,則解碼器從壓縮比特流中進(jìn)一步讀取編碼的符號(hào)(S)(動(dòng)作860)。如果符號(hào)為正(S=0)(動(dòng)作870),則將變換系數(shù)重構(gòu)為X=Z(動(dòng)作871)。否則,如果符號(hào)為負(fù)(S=1),則將變換系數(shù)重構(gòu)為X=-Z(動(dòng)作872)。
      2.2分層 再次參考圖6,編碼器和解碼器理想地提取出固定長度編碼的槽地址625和符號(hào)到壓縮比特流420(圖4)中的單獨(dú)編碼的層(此處稱為“靈活位(Flexbits)”層645)中。歸一化系數(shù)620在核心比特流640的一層中編碼。這允許編碼器和/或解碼器具有按需降低編碼的這一靈活位部分的等級(jí)或完全丟棄這一部分以滿足比特率或其它約束的選擇。即使編碼器完全丟棄該靈活位層,壓縮比特流仍解碼,然而是以降級(jí)的質(zhì)量來解碼的。解碼器仍可單獨(dú)從歸一化系數(shù)部分來重構(gòu)該信號(hào)。這實(shí)際上類似于在編碼器中應(yīng)用更大程度的量化470(圖4)。將槽地址和符號(hào)編碼為單獨(dú)的靈活位層還具有這樣的潛在好處在某些編碼器/解碼器實(shí)現(xiàn)中,可向該層中的數(shù)據(jù)應(yīng)用進(jìn)一步的可變長度熵編碼(例如,算術(shù)編碼、Lempel-Aiv、Burrows-Wheeler等)以得到進(jìn)一步改善的壓縮。
      對于分層,包含靈活位部分的壓縮比特流的各部分用單獨(dú)的層報(bào)頭或比特流中的其它指示來表示,使得解碼器可從核心比特流640中標(biāo)識(shí)并分離(即,解析)出靈活位層645(當(dāng)未被省略時(shí))。
      分層對后向自適應(yīng)分組(下節(jié)中描述)的設(shè)計(jì)提出了進(jìn)一步的挑戰(zhàn)。由于靈活位層可以在給定比特流中存在或缺乏,因此后向自適應(yīng)分組模型不能可靠地指示靈活位層中的任何信息。確定固定長度碼位數(shù)k(對應(yīng)于槽大小N=2k)所需的所有信息應(yīng)駐留在因果的核心比特流中。
      2.3自適應(yīng) 編碼器和解碼器還提供了一后向自適應(yīng)過程,以在編碼和解碼期間自適應(yīng)地調(diào)整固定長度碼位數(shù)k以及相應(yīng)的上述分組的槽大小N的選擇。在一個(gè)實(shí)現(xiàn)中,該自適應(yīng)過程可基于將變換系數(shù)建模為拉普拉斯分布,使得k的值從拉普拉斯參數(shù)λ中導(dǎo)出。然而,這一復(fù)雜模型要求解碼器在對將來的塊建模分布之前執(zhí)行圖6中的分組610的反過程(從核心比特流640中的歸一化系數(shù)以及靈活位層645中的槽地址/符號(hào)重構(gòu)變換系數(shù))。這一要求將違反解碼器應(yīng)允許從壓縮比特流420中丟棄靈活位層的分層約束。
      在圖9所示的示例實(shí)現(xiàn)中,自適應(yīng)過程900改為基于當(dāng)約四分之一的系數(shù)為非零時(shí)獲得變換系數(shù)的更優(yōu)化的行程長度編碼的觀察結(jié)果。由此,可用于針對其中大約四分之三的歸一化系數(shù)為零的“最佳點(diǎn)(sweet spot)”情形來調(diào)整分組的自適應(yīng)參數(shù)將提供良好的熵編碼性能。因此,塊中的非零歸一化系數(shù)的個(gè)數(shù)將用作該示例實(shí)現(xiàn)中的自適應(yīng)參數(shù)。該自適應(yīng)參數(shù)具有僅依賴于包含在核心比特流中的信息的優(yōu)點(diǎn),這滿足了變換系數(shù)仍可在省略靈活位層的情況下解碼的分層約束。該過程在當(dāng)編碼/解碼當(dāng)前塊時(shí)應(yīng)用的自適應(yīng)模型基于來自先前的塊的信息的意義上是后向自適應(yīng)的。
      在其自適應(yīng)過程中,示例編碼器/解碼器在后向自適應(yīng)的基礎(chǔ)上執(zhí)行自適應(yīng)。即,自適應(yīng)的當(dāng)前迭代基于先前在編碼或解碼過程,諸如在前一塊或宏塊中看到的信息。在示例編碼器和解碼器中,對給定變換頻帶,自適應(yīng)更新對于每一宏塊發(fā)生一次,這旨在最小化等待時(shí)間和交叉依賴性。替換編解碼器實(shí)現(xiàn)可用不同的間隔,諸如在每一變換塊之后執(zhí)行自適應(yīng)。
      在示例編碼器和解碼器中,自適應(yīng)過程900更新值k。如果非零歸一化系數(shù)的個(gè)數(shù)太大,則增加k使得該數(shù)字在將來的塊中趨向于丟棄。如果非零歸一化系數(shù)的個(gè)數(shù)太小,則減小k,期望將來的塊然后將因槽大小n較小而產(chǎn)生更多非零歸一化系數(shù)。該示例自適應(yīng)過程將值k約束在一組數(shù)字{0,1,...16}內(nèi),但是替換實(shí)現(xiàn)可對k使用其它值范圍。在每次自適應(yīng)更新時(shí),編碼器和解碼器或者對k遞增,或者對k遞減,或者使k保持不變。示例編碼器和解碼器將k遞增或遞減1,但是替換實(shí)現(xiàn)可使用其它步長。
      示例編碼器和解碼器中的自適應(yīng)過程900還使用內(nèi)部模型參數(shù)或狀態(tài)變量(M)來控制具有滯后效果的對分組參數(shù)k的更新。該模型參數(shù)提供了更新分組參數(shù)k之前的滯后,以避免導(dǎo)致分組參數(shù)的迅速波動(dòng)。示例自適應(yīng)過程中的模型參數(shù)具有從-8到8的17個(gè)整數(shù)步長。
      現(xiàn)在參考圖9,示例自適應(yīng)過程900如下進(jìn)行。本示例自適應(yīng)過程在圖10和11中的偽代碼清單中進(jìn)一步詳述。如動(dòng)作910、990處所指示的,示例編碼器和解碼器中的自適應(yīng)過程對在壓縮比特流中表示的每一變換頻帶,包括亮度頻帶和色度頻帶、AC和DC系數(shù)單獨(dú)執(zhí)行。替換編解碼器可在變換頻帶的數(shù)目上不同,并且還可向變換頻帶單獨(dú)或聯(lián)合地應(yīng)用自適應(yīng)。
      在動(dòng)作920處,該自適應(yīng)過程然后對前一編碼/解碼的宏塊內(nèi)的變換頻帶的非零歸一化系數(shù)的個(gè)數(shù)進(jìn)行計(jì)數(shù)。在動(dòng)作930處,將該原始計(jì)數(shù)歸一化以反映常規(guī)大小區(qū)域中非零系數(shù)的整數(shù)化個(gè)數(shù)。該自適應(yīng)過程然后計(jì)算計(jì)數(shù)與期望模型(即,四分之一的系數(shù)為非零的“最佳點(diǎn)”)的偏差(動(dòng)作940)。例如,圖4中所示的示例編碼器中的AC系數(shù)宏塊具有240個(gè)系數(shù)。因此,期望模型是240個(gè)系數(shù)中的70個(gè)為非零。該偏差被進(jìn)一步縮放、閾值化并用于更新內(nèi)部模型參數(shù)。
      在接下來的動(dòng)作960、965、970、975處,該自適應(yīng)過程然后根據(jù)內(nèi)部模型參數(shù)的任何變換來對值k進(jìn)行自適應(yīng)。如果模型參數(shù)小于一負(fù)閾值,則遞減k值(在其允許的界限內(nèi))。該自適應(yīng)應(yīng)當(dāng)產(chǎn)生更多非零系數(shù)。另一方面,如果模型參數(shù)超過一正閾值,則遞增值k(在其允許的界限內(nèi))。這一自適應(yīng)應(yīng)當(dāng)產(chǎn)生更少的非零系數(shù)。否則,保持值k不變。
      再一次,如動(dòng)作910、980處所指示的,對數(shù)據(jù)的每一通道和每一子帶單獨(dú)重復(fù)該自適應(yīng)過程,諸如對色度和亮度通道單獨(dú)重復(fù)。
      示例自適應(yīng)過程900在圖10和11所示的偽代碼清單中進(jìn)一步詳述。
      3.高效熵編碼 3.1現(xiàn)有技術(shù)方法 在各種編碼標(biāo)準(zhǔn)中,變換塊的編碼過程被精簡到對一系數(shù)串的編碼。這一串的一個(gè)示例在圖12中作為變換系數(shù)示例1200給出。在示例1200中,系數(shù)C0、C1、C2、C3和C4表示四個(gè)非零系數(shù)值(要么為正要么為負(fù)),而該系列中的其它系數(shù)具有零值。
      某些屬性傳統(tǒng)上適用于這一變換系數(shù)串 ●系數(shù)總數(shù)通常是確定的,并且由變換大小給出。
      ●概率上,大量系數(shù)為零。
      ●至少一個(gè)系數(shù)非零。在所有系數(shù)為零的情況下,該情況通常通過已編碼的塊模式來表示,如在Srinivasan于2005年8月12日提交的題為“Non-Zero Coefficient Block Pattern Coding”(非零系數(shù)塊模式編碼)的美國申請(待定)中所描述的。
      ●概率上,非零和較大值的系數(shù)在串的開頭出現(xiàn),而零和較小值的系數(shù)在接近末尾處出現(xiàn)。
      ●非零系數(shù)取整數(shù)值,具有已知的最小/最大值。
      各種編碼技術(shù)利用了通常相當(dāng)頻繁出現(xiàn)的零值系數(shù)可用行程長度碼來編碼的這一事實(shí)。然而,當(dāng)所編碼的輸入圖像為高動(dòng)態(tài)范圍數(shù)據(jù)(例如,大于8位)時(shí),或當(dāng)量化參數(shù)是單位或較小時(shí),較少的變換系數(shù)為零,如上所述。在這一情形中,以上描述的自適應(yīng)編碼和解碼技術(shù)可用于調(diào)節(jié)數(shù)據(jù),使得經(jīng)調(diào)節(jié)的數(shù)據(jù)具有這些特性。其它技術(shù)通過諸如設(shè)置高量化水平等其它手段也可產(chǎn)生類似于變換系數(shù)示例1200的變換系數(shù)集。
      圖12還示出了對諸如變換系數(shù)示例1200等變換系數(shù)進(jìn)行編碼的兩種方法。這些方法利用了對零行程以及后續(xù)的非零系數(shù)一起聯(lián)合編碼來提供編碼益處。2D編碼示例1220示出了一種用于這一行程水平編碼方案的技術(shù)。如示例1220所示,在2D編碼中,零值系數(shù)的行程(該行程要么長度為零,要么為正的長度)與變換系數(shù)序列中后續(xù)的非零系數(shù)一起編碼成碼元1225;在所示的情況中,碼元<0,C0>指示在非零系數(shù)C0前面沒有零。稱為“塊結(jié)束”,即EOB的特殊碼元1235用于表示最后一個(gè)零行程。這通常被稱為2D編碼,因?yàn)槊恳淮a元對行程(零值系數(shù)的行程)和水平(非零系數(shù)值)進(jìn)行聯(lián)合編碼,并且因此具有兩個(gè)值,且可被認(rèn)為是對變換系數(shù)數(shù)據(jù)的兩個(gè)維度進(jìn)行編碼。這些碼元然后可使用哈夫曼碼或算術(shù)編碼來進(jìn)行熵編碼并被發(fā)送到圖4的壓縮比特流420。
      另一替換編碼方案是3D編碼,其一個(gè)示例在示例1240中示出。在3D編碼中,如2D編碼中一樣,零的行程通常與后續(xù)的非零系數(shù)一起聯(lián)合編碼。此外,對指示該非零系數(shù)是否是塊中的最后一個(gè)非零系數(shù)的布爾數(shù)據(jù)元素“最后”進(jìn)行編碼。碼元1245因此對行程、水平和最后進(jìn)行聯(lián)合編碼;在所示的情況中,碼元<2,C1,非最后>指示在非零系數(shù)C1前有兩個(gè)零,并且這不是該系列中的最后一個(gè)非零系數(shù)。由于這些元素中的每一個(gè)可自由地取所有值,因此碼元對三個(gè)獨(dú)立的維度進(jìn)行編碼,從而使其命名為“3D編碼”。
      這些技術(shù)中的每一種都具有獨(dú)立的優(yōu)點(diǎn)。2D編碼技術(shù)中的每一碼元具有比3D編碼中使用的碼元小的熵,因?yàn)榍罢邆鬟_(dá)的信息比后者少。由此,給定3D編碼方案中的可能碼元數(shù)將是相應(yīng)2D編碼方案的兩倍。這增大了碼表大小,并且可減慢對于3D編碼方案的編碼和解碼。然而,在2D編碼中,發(fā)送一附加碼元來表示塊結(jié)束,并且需要發(fā)送整個(gè)附加碼元從比特流大小的觀點(diǎn)來看是昂貴的。實(shí)際上,在實(shí)踐中,3D編碼比2D編碼更高效,盡管其碼表大小更大。
      3.2 3D-2D編碼 盡管圖12所示的現(xiàn)有技術(shù)利用了非零系數(shù)水平以及前導(dǎo)的零行程的聯(lián)合編碼,但是可以證明,非零系數(shù)之后的零行程顯示出與非零系數(shù)的幅值的強(qiáng)相關(guān)。這一特性暗示了利用對水平和后續(xù)行程的聯(lián)合編碼。
      圖13示出了一種這樣的替換編碼技術(shù),它改善了圖12概述的2D和3D技術(shù)。圖13示出了利用對后續(xù)零行程進(jìn)行編碼以創(chuàng)建用于示例變換系數(shù)系列1300的碼元的理念的編碼方案。圖13示出系數(shù)被聯(lián)合編碼成碼元1355,該碼元包含非零系數(shù)值以及在非零系數(shù)之后的零行程(如果存在任何零行程)的長度作為一對<水平,行程>。因此,所示的碼元<C1,4>對非零系數(shù)C1以及它之后的四個(gè)零值系數(shù)進(jìn)行了聯(lián)合編碼。
      除了利用非零系數(shù)和后續(xù)零的行程之間的強(qiáng)相關(guān)之外,該方法還通過利用一特殊行程值來表示非零系數(shù)是該系列中的最后一個(gè),在非零系數(shù)是塊中的最后一個(gè)非零系數(shù)時(shí)提供了進(jìn)一步的優(yōu)點(diǎn)。由此,在對碼元進(jìn)行聯(lián)合編碼時(shí),所發(fā)送的信息是水平值以及要么指示零行程的長度,要么指示“最后”值的另一值。這在圖13中由碼元1365<C4,最后>來示出,該碼元包括一水平值以及“最后”值而非行程長度。由于這些不同情形在碼元中的同一處編碼,因此行程和“最后”不是獨(dú)立的;每一碼元僅發(fā)送其中的一個(gè)。由此,碼元的維度既不是2也不是3,而是兩者之間的某一維。將此編碼稱為“2D編碼”。
      2D編碼的這一特征不必是組合水平和后續(xù)行程的聯(lián)合編碼方案所必需的;在替換實(shí)現(xiàn)中,發(fā)送的最后碼元簡單地對最后的零行程的長度進(jìn)行編碼,然而這可能是不合需要的,因?yàn)樗赡軐?shí)質(zhì)上增大了編碼的比特流的大小。在另一替換中,可使用如2D編碼中所使用的EOB碼元。然而,如在3D編碼中那樣,2D編碼對“最后”值的使用具有優(yōu)于2D編碼的優(yōu)點(diǎn),因?yàn)闊o需編碼一額外的碼元來表示塊結(jié)束。另外,2D編碼具有優(yōu)于3D編碼的優(yōu)點(diǎn),因?yàn)?1)前者的每一碼元的熵小于后者的每一碼元的熵,以及(2)前者的碼表設(shè)計(jì)比后者的要簡單。這兩個(gè)優(yōu)點(diǎn)都是具有比3D代碼少的可能性的2D代碼的結(jié)果。
      然而,2D編碼單獨(dú)不能描述整個(gè)變換系數(shù)行程,因?yàn)樗鼪]有提供發(fā)送在第一個(gè)非零系數(shù)之前的行程長度的方式。如圖13所示,為此,使用一特殊碼元1375,該碼元還對第一個(gè)零行程的長度編碼。這使得第一個(gè)碼元是第一個(gè)行程、水平和(行程OR最后)的聯(lián)合編碼。在圖13中,第一個(gè)碼元1375<0,C0,2>發(fā)送第一個(gè)行程(為零)、第一個(gè)非零系數(shù)的水平、以及第二個(gè)行程(為2,并且第一個(gè)非零系數(shù)不是塊中的最后一個(gè)非零系數(shù))。因?yàn)樵摯a元包括一另外的維度,因此對其的編碼被稱為“3D編碼”。
      盡管3D編碼中的額外信息乍一看可能消除了2D編碼的某些優(yōu)點(diǎn),但是對第一個(gè)碼元的不同處理從編碼效率觀點(diǎn)來看實(shí)際上是有利的。3D碼元必然具有與2D碼元不同的字母表,這意味著它與其它碼元分開編碼并且不會(huì)增加2D熵。
      圖14示出了由編碼器400(圖4)執(zhí)行的根據(jù)2D-3D編碼來編碼變換系數(shù)的示例過程1400。在一個(gè)環(huán)境中,過程1400可作為圖7的用于編碼歸一化系數(shù)的過程720的一部分被包括在內(nèi)。在另一環(huán)境中,過程1400可用于對通過傳統(tǒng)技術(shù)量化的變換系數(shù)進(jìn)行編碼。在過程1400的各種實(shí)現(xiàn)中,各動(dòng)作可被移除、組合或分割成子動(dòng)作。
      該過程在動(dòng)作1420處開始,在那里標(biāo)識(shí)第一個(gè)非零變換系數(shù)。然后,在動(dòng)作1430處,使用初始的零行程的長度(要么是長度0,要么是正的長度)和第一個(gè)非零系數(shù)來創(chuàng)建3D碼元。此時(shí),該3D碼元不是完整的。接著,該過程到達(dá)判定動(dòng)作1435,在那里確定當(dāng)前標(biāo)識(shí)的非零系數(shù)是否是變換系數(shù)系列中的最后一個(gè)非零系數(shù)。如果這是最后一個(gè)非零系數(shù),則該過程繼續(xù)到動(dòng)作1480,在那里將“最后”指示符而非后續(xù)零的行程插入到碼元中。該過程然后在動(dòng)作1490處使用熵編碼來對該碼元編碼,并且該過程結(jié)束。編碼碼元的這一過程的一個(gè)示例在以下參考圖16給出。
      然而,如果該過程在判定動(dòng)作1435處確定這不是最后一個(gè)非零系數(shù),則在動(dòng)作1440處將后續(xù)零行程的長度(要么是0,要么是正數(shù))插入到碼元中,并在動(dòng)作1450處編碼該碼元。編碼碼元的這一過程的一個(gè)示例在以下參考圖16給出。該過程然后在動(dòng)作1460處標(biāo)識(shí)下一非零系數(shù),已知該非零系數(shù)存在,因?yàn)榍皩?dǎo)的非零系數(shù)被確定為不是最后一個(gè)。在動(dòng)作1470處,然后使用該非零系數(shù)來創(chuàng)建2D碼元。此時(shí),與以上3D碼元一樣,該碼元尚未完成。然后,在判定動(dòng)作1475處,該過程確定當(dāng)前非零系數(shù)是否為該系列中的最后一個(gè)。如果是,則該過程繼續(xù)到動(dòng)作1480,在那里包括“最后”指示符并編碼該碼元。如果不是,則該過程循環(huán)返回動(dòng)作1400,在那里包括下一零行程,編碼該碼元,并且該過程以下一非零系數(shù)繼續(xù)。
      3.3上下文信息 除了根據(jù)2D和3D編碼來編碼碼元之外,可使用若干條因果信息來為所編碼的碼元生成上下文。該上下文可由編碼器400(圖4)或解碼器(圖5)用于索引到熵編碼表集合之一中以對該碼元進(jìn)行編碼和解碼。增加上下文的數(shù)目給予編解碼器更大的靈活性來自適應(yīng)或使用被修改成適合每一特定上下文的表。然而,定義大量上下文的不利方面在于(1)存在上下文減弱(其中每一上下文僅應(yīng)用于少量碼元,由此降低了自適應(yīng)效率),以及(2)更多碼表意味著更大復(fù)雜性以及存儲(chǔ)器要求。
      考慮了這幾點(diǎn)之后,選擇此處描述的上下文模型來參考三個(gè)因素,以確定對每一碼元選擇哪一上下文。在一個(gè)實(shí)現(xiàn)中,這些因素是(1)變換的等級(jí)-變換是內(nèi)部、中間還是外部變換,(2)系數(shù)是亮度還是色度通道,以及(3)在系數(shù)系列內(nèi)的非零系數(shù)行程中是否有任何間斷。在替換實(shí)現(xiàn)中,可能不使用這些因素中的一個(gè)或多個(gè)來確定編碼上下文,和/或可考慮其它因素。
      由此,按照(1),內(nèi)部變換使用與中間變換不同的一組碼表,中間變換使用與外部變換不同的一組碼表。在其它實(shí)現(xiàn)中,上下文模型可僅在兩級(jí)變換之間區(qū)分。類似地,按照(2),亮度系數(shù)使用與色度系數(shù)不同的一組碼表。這些上下文因素都不會(huì)在給定的一組變換系數(shù)內(nèi)變化。
      然而,因素(3)在一組變換系數(shù)內(nèi)變化。圖15示出了更好地說明這一上下文切換的三個(gè)示例變換系數(shù)系列。在所有三個(gè)系列1500、1520和1540中,非零系數(shù)由字母表示。
      如所有三個(gè)示例所示,塊中的第一個(gè)碼元為3D碼元,它必須用與其它碼元不同的表來編碼,因?yàn)槠渥帜副聿煌谄渌淖帜副?。這形成了用于第一個(gè)碼元的“自然”上下文。由此,作為所有三個(gè)示例的第一個(gè)非零系數(shù)的系數(shù)A用3D碼來編碼。另外,由于3D碼元對第一個(gè)非零系數(shù)周圍的前導(dǎo)和后續(xù)零行程進(jìn)行編碼,因此示例1520的前兩個(gè)系數(shù)(A、0)和示例1540的前兩個(gè)系數(shù)(0、A)在一3D碼元中聯(lián)合編碼。因此,在一個(gè)實(shí)現(xiàn)中,因素(3)不用于確定3D碼元的上下文。
      相反,2D碼元取決于因素(3)不同地編碼。由此,在示例1500中,可以看到由于在系數(shù)D之前的非零系數(shù)的行程中沒有間斷,因此用第一上下文模型來對系數(shù)B、C和D(以及D之后的零)進(jìn)行編碼。然而,D之后的零構(gòu)成了非零系數(shù)行程中的間斷。因此,其余的系數(shù)E、F、G、H(以及之后的任何系數(shù))……使用第二上下文模型來編碼。這意味著盡管除A之外的每一非零系數(shù)是用2D碼元來編碼的,但將對B、C和D(以及任何相關(guān)聯(lián)的零值行程)使用與對系數(shù)E、F、G和H所使用的不同的碼表。
      相反,在示例1520中,在A和B之間有間斷。這構(gòu)成了非零系數(shù)的行程中的間斷,因此系數(shù)B和所有后續(xù)非零系數(shù)用第二上下文模型來編碼。同樣,在示例1540中,在A之前有間斷。由此,如在示例1520中一樣,系數(shù)B、C、D、……用第二上下文模型來編碼。
      圖16示出了由編碼器400(圖3)執(zhí)行的編碼碼元的示例過程1600。在一個(gè)實(shí)現(xiàn)中,過程1600執(zhí)行過程1400(圖14)的動(dòng)作1450和1490的過程。在過程1600的各實(shí)現(xiàn)中,動(dòng)作可被移除、組合或分割成子動(dòng)作。該過程在判定動(dòng)作1605處開始,在那里編碼器確定碼元是否為3D碼元。如果是,則該過程繼續(xù)到動(dòng)作1610,在那里使用3D表來編碼該碼元并且該過程結(jié)束。在各個(gè)實(shí)現(xiàn)中,該碼元可使用諸如哈夫曼編碼或算術(shù)編碼等熵編碼來編碼。或者,可使用其它編碼方案。
      如果該碼元不是3D碼元,則該過程繼續(xù)到判定動(dòng)作1615,在那里編碼器確定在該碼元中聯(lián)合編碼的非零系數(shù)之前是否有至少一個(gè)零。如果不是,則該過程繼續(xù)到動(dòng)作1620,在那里使用來自第一上下文模型的2D碼表來編碼該碼元并且該過程結(jié)束。如果存在間斷,則在動(dòng)作1630處,使用來自第二上下文模型的2D碼表來編碼該碼元并且該過程結(jié)束。
      3.4碼表大小減小 盡管上述技術(shù)帶來了優(yōu)于傳統(tǒng)技術(shù)的效率,但是它們不能獨(dú)立地顯著減小碼表大小。為這些技術(shù)所創(chuàng)建的碼表應(yīng)當(dāng)能夠發(fā)送對于2D碼元的所有(max_level×(max_run+2))個(gè)組合,以及對3D碼元的所有(max_level×(max_run+1)×(max_run+2))個(gè)組合,其中max_level是非零系數(shù)的最大(絕對)值,而max_run是零行程的最大可能長度。值(max_run+1)是對3D碼元的初始行程導(dǎo)出的,因?yàn)閷τ?max_run+1)的總數(shù),對一零行程的可能值從0一直到max_run。類似地,對總共(max_run+2)個(gè)值,每一碼元編碼了0和max_run之間的長度的后續(xù)零行程,以及“最后”碼元。即使采用遺漏編碼(其中很少出現(xiàn)的碼元被分組在一起成一個(gè)或多個(gè)通過遺漏編碼表示的元碼元),碼表大小也是相當(dāng)可怕的。
      為了減小碼表大小,可進(jìn)一步改進(jìn)上述技術(shù)。首先,每一行程和每一水平被分割成一碼元對 行程=nonZero_run(+run1) 水平=nonOne-level(+level1) 在這一碼元對中,碼元nonZero_run和nonOne_level是布爾值,分別指示該行程是否大于零以及絕對水平是否大于1。值run1和level1僅在這些布爾值為真時(shí)才使用,并指示行程(在1和max_run之間)和水平(在2和max_level之間)。然而,由于也必須編碼“最后”的情況,因此聯(lián)合編碼的碼元中的任何后續(xù)零行程的值(行程OR最后)作為三進(jìn)制碼元nonZero_run_last來發(fā)送,它在行程具有零長度時(shí)值為0,在行程具有非零長度是值為1,并且在該碼元的非零系數(shù)是該系列中的最后一個(gè)時(shí)值為2。
      因此,為首先利用這一精簡的編碼,3D碼元采取了<nonZero_run,nonOne_level,nonZero_run_last>的形式。這創(chuàng)建了大小為2×2×3=12的字母表。后續(xù)的2D碼元采取了<nonOne_level,nonZero_run_last>的形式,創(chuàng)建了大小為2×3=6的字母表。在一個(gè)實(shí)現(xiàn)中,這些碼元被稱為“索引(Index)”。在某些實(shí)現(xiàn)中,runl也被稱為非零行程(NonzeroRun),而level1也被稱為有效水平(SignificantLevel)。
      由于索引僅包含關(guān)于水平和行程是否有效的信息,因此可能需要連同碼元一起發(fā)送附加信息來允許解碼器準(zhǔn)確地重新創(chuàng)建變換系數(shù)系列。由此,在來自索引的每一碼元之后,如果水平是有效水平,則該水平的值被單獨(dú)編碼并在該碼元之后發(fā)送。同樣,如果一碼元指示零行程是非零(正)長度,則該長度被單獨(dú)編碼并在該碼元之后發(fā)送。
      圖17示出了精簡的3D-2D編碼1740的一個(gè)示例,它表示變換系數(shù)絕對值的示例系列1700。變換系數(shù)的符號(hào)可在別處編碼。如圖17所示,示例系數(shù)系列1700以“5,0,0”開始。在諸如上述的非精簡3D-2D中,第一碼元?jiǎng)t是<0,5,2>。然而,在精簡編碼中,圖17示出來自索引的第一碼元1745<0,1,1>。該碼元指示在第一個(gè)非零系數(shù)之前沒有零,第一個(gè)非零系數(shù)具有大于1的絕對值,并且在該非零系數(shù)之后有至少一個(gè)零。該碼元后跟指示非零系數(shù)的絕對值是5的有效水平值“l(fā)evel_5”(1755),以及指示在該系數(shù)之后有兩個(gè)零的非零行程值“run_2””(1765)。相反,指示絕對值1的非零系數(shù)后面不跟零的碼元1775<0,0>不需要有其它值跟在其后來提供信息。
      由于某些碼元需要在它們之后發(fā)送附加信息,因此應(yīng)分析來自索引的碼元來確定是否應(yīng)連同它們一起發(fā)送附加信息。圖18示出了由編碼器400(圖4)執(zhí)行的確定在3D索引碼元中包含了什么信息以及在適當(dāng)時(shí)發(fā)送附加信息的示例過程1800。在過程1800的各種實(shí)現(xiàn)中,動(dòng)作可被移除、組合或分割成子動(dòng)作。在對圖18的碼元的描述中,值“x”是占位符,表示對一碼元的該特定部分的任何可能值。該過程在動(dòng)作1810處開始,在那里發(fā)送第一個(gè)編碼的碼元。接著,在判定動(dòng)作1820處,編碼器確定該碼元是否為<x,1,x>的形式。這等效于詢問由該碼元表示的非零系數(shù)是否具有大于1的絕對值。如果編碼器確定情況如此,則在動(dòng)作1830處編碼并發(fā)送該非零系數(shù)的值。重要的是注意,盡管圖18沒有明確討論對非零系數(shù)的符號(hào)的編碼,但是該符號(hào)可在過程1800的若干點(diǎn)處包括。在各個(gè)實(shí)現(xiàn)中,這可涉及緊接在聯(lián)合編碼的碼元之后、在聯(lián)合編碼的碼元內(nèi)、和/或連同水平的絕對值一起發(fā)送符號(hào)。
      不論動(dòng)作1820處的判定如何,在判定動(dòng)作1840處,編碼器確定碼元是否為<1,x,x>的形式。該判定等效于詢問由該碼元表示的非零系數(shù)是否具有任何前導(dǎo)的零。如果是,則在動(dòng)作1850處,編碼器對非零系數(shù)之前的零行程的長度進(jìn)行編碼并發(fā)送該值。
      接著,在判定動(dòng)作1860處,編碼器考慮在碼元為<x,x,t>的情況下的t值。該判定等效于詢問由該碼元表示的非零系數(shù)是否具有跟在其后的任何零。如果t=0,則編碼器知道沒有后續(xù)零,并且繼續(xù)在動(dòng)作1880處發(fā)送更多碼元,且過程1800結(jié)束。在一個(gè)實(shí)現(xiàn)中,圖19的過程1900然后對下一碼元開始。如果t=1,則編碼器在動(dòng)作1870處編碼并發(fā)送在非零系數(shù)之后的零行程的長度,然后繼續(xù)在動(dòng)作1880處發(fā)送碼元,并且過程1800結(jié)束。然而,如果t=2,則編碼器知道由該碼元表示的非零系數(shù)是該系列中的最后(且唯一)一個(gè),且因此由變換系數(shù)表示的塊完成。由此,過程1800結(jié)束,并且在適當(dāng)時(shí)可變換和編碼下一塊。
      圖19示出了由編碼器400(圖4)執(zhí)行的確定2D索引碼元中包含什么信息以及在適當(dāng)時(shí)發(fā)送附加信息的示例過程1900。在過程1900的各個(gè)實(shí)現(xiàn)中,動(dòng)作可被移除、組合或分割成子動(dòng)作。如圖18中一樣,在圖19中,值“x”是占位符,表示對一碼元的該特定部分的任何可能值。該過程在動(dòng)作1910處開始,在那里發(fā)送下一編碼的碼元。接著,在判定動(dòng)作1920處,編碼器確定該碼元是否為<1,x>的形式。這等效于詢問由該碼元表示的非零系數(shù)是否具有大于1的絕對值。如果編碼器確定情況如此,則在動(dòng)作1930處編碼并發(fā)送非零系數(shù)的值。如在過程1800中一樣,重要的是注意,盡管圖19沒有明確討論對非零系數(shù)的符號(hào)的編碼,但是該符號(hào)可在過程1900中的若干點(diǎn)處包括。
      接著,在判定動(dòng)作1940處,編碼器在碼元為<x,t>的情況下考慮t值。該判定等效于詢問由該碼元表示的非零系數(shù)后面是否跟有任何零。如果t=0,則編碼器知道沒有后續(xù)零,并且在動(dòng)作1960處繼續(xù)發(fā)送更多碼元,且過程1900結(jié)束。在一個(gè)實(shí)現(xiàn)中,圖19的過程1900然后對下一碼元重復(fù)。如果t=1,則編碼器在動(dòng)作1950處編碼并發(fā)送跟在非零系數(shù)之后的零行程的長度,然后在動(dòng)作1960處繼續(xù)發(fā)送碼元,并且過程1900結(jié)束。然而,如果t=2,則編碼器知道由該碼元表示的非零系數(shù)是該系列中的最后一個(gè),并且因此由編碼系數(shù)表示的塊完成。由此,過程1900結(jié)束,并且可在適當(dāng)時(shí)變換并編碼下一塊。
      3.5附加系數(shù) 除了以上討論的碼表大小減小之外,分解行程和水平碼元的一個(gè)好處是在發(fā)送了3D聯(lián)合碼元之后,解碼器可確定在該塊中是否有任何前導(dǎo)零。這意味著描述第一或第二上下文是否有效的上下文信息在解碼器側(cè)是已知的,并且構(gòu)成了用于編碼第一個(gè)非零系數(shù)的level1值的有效上下文。這意味著應(yīng)用于2D碼元的level1值的上下文可同樣應(yīng)用于3D碼元的level1值,即使聯(lián)合編碼的索引碼元利用了不同的字母表。
      此外,由于塊中的變換系數(shù)的總數(shù)是常數(shù),因此每一連續(xù)行程由一單調(diào)遞減序列來界定。在一個(gè)較佳實(shí)現(xiàn)中,在編碼行程值時(shí)充分利用了這一信息。例如,一碼表可包括用于在一組系數(shù)的前一半中開始的行程的一組行程值代碼,以及用于在后一半中開始的行程的不同的一組行程值代碼。由于在后一半中開始的任何可能行程的長度必定小于在前一半中開始的行程的可能長度,因此第二組代碼不必如此大,從而減小了熵并改善了編碼性能。
      其它信息可通過仔細(xì)觀察系數(shù)的位置來收集。例如,如果由一碼元表示的非零系數(shù)出現(xiàn)在該系數(shù)系列中的最后一個(gè)位置上,則“最后”總是為真。類似地,如果由一碼元表示的非零系數(shù)出現(xiàn)在數(shù)組的倒數(shù)第二位置,則要么“最后”為真,要么后續(xù)行程為零。這些觀察結(jié)果中的每一個(gè)都允許經(jīng)由更短的表來編碼。
      3.6索引實(shí)現(xiàn)示例 第一索引具有大小為12的字母表。在一個(gè)實(shí)現(xiàn)中,對被定義為第一索引=a+2b+4C的碼元有五個(gè)哈夫曼表可用,其中碼元是<a,b,c>,并且a和b是0或1,c可取值0、1或2。用于每一表的12個(gè)碼元的碼字長度的一種實(shí)現(xiàn)如下給出。在一個(gè)實(shí)現(xiàn)中,標(biāo)準(zhǔn)哈夫曼碼構(gòu)造可用于導(dǎo)出這幾組前綴碼字 表15,6,7,7,5,3,5,1,5,4,5,3 表24,5,6,6,4,3,5,2,3,3,5,3 表32,3,7,7,5,3,7,3,3,3,7,4 表43,2,7,5,5,3,7,3,5,3,6,3 表53,1,7,4,7,3,8,4,7,4,8,5 后續(xù)索引碼元具有大小為6的字母表。在一個(gè)實(shí)現(xiàn)中,索引被定義為索引=a+2b,其中碼元是<a,b>,a是布爾值,b可取值0、1或2。對索引定義四個(gè)哈夫曼表,如下所示 表11,5,3,5,2,4 表22,4,2,4,2,3 表34,4,2,2,2,3 表45,5,2,1,4,3 另外,在一個(gè)實(shí)現(xiàn)中,為了利用以上第3.5節(jié)中所描述的某些信息,當(dāng)系數(shù)位于最后一個(gè)數(shù)組位置上時(shí),使用一位碼(由a定義)(在這一情況中,b唯一地為2)。在一個(gè)實(shí)現(xiàn)中,當(dāng)系數(shù)在倒數(shù)第二的位置上時(shí),使用二位代碼,因?yàn)橐阎猙≠1。
      有效水平的一個(gè)實(shí)現(xiàn)使用將一水平范圍折疊成7個(gè)槽的分槽(binning)過程來編碼水平。一個(gè)槽內(nèi)的水平使用固定長度碼來編碼,并且槽本身使用哈夫曼碼來編碼。在一個(gè)實(shí)現(xiàn)中,這可通過上述分組技術(shù)來完成。類似地,在一個(gè)實(shí)現(xiàn)中,非零行程使用基于當(dāng)前碼元的位置索引到5個(gè)槽的分槽過程來編碼。
      3.7解碼3D-2D碼元 圖20示出了由解碼器500(圖5)執(zhí)行的將一系列碼元解碼成變換系數(shù)的示例過程2000。在過程2000的各個(gè)實(shí)現(xiàn)中,動(dòng)作可被移除、組合或分割成子動(dòng)作。
      此外,動(dòng)作可被定義為處理諸如由被破壞的比特流觸發(fā)的出錯(cuò)條件。該過程在動(dòng)作2010處開始,在那里解碼器接收第一個(gè)聯(lián)合編碼的碼元,并使用3D碼表來解碼該碼元。接著,在動(dòng)作2020處,基于所解碼的碼元(包括同樣存在于壓縮比特流中的任何水平或行程信息)來填充變換系數(shù)。該動(dòng)作的一個(gè)實(shí)現(xiàn)將參考圖21在以下更詳細(xì)描述。該過程然后繼續(xù)到判定動(dòng)作2030,在那里解碼器確定該碼元是否指示它是用于最后一個(gè)非零系數(shù)的。如果是,則該過程繼續(xù)到動(dòng)作2090,在那里用零填充其余的未填充系數(shù),并且過程2000結(jié)束。
      如果該碼元不是用于最后一個(gè)非零系數(shù)的,則該過程繼續(xù)到判定動(dòng)作2040,在那里解碼器確定迄今為止是否有任何碼元指示了任何零系數(shù)。如果否,則該過程繼續(xù)到動(dòng)作2050,在那里接收下一碼元,并使用遵循第一上下文模型的2D碼表來解碼該碼元。如果相反,在判定動(dòng)作2040處指示了零系數(shù),則在過程2060處,解碼器接收下一碼元并使用遵循第二上下文模型的2D碼表來解碼該碼元。不論使用哪一上下文模型,該過程然后都前進(jìn)到動(dòng)作2070,在那里基于解碼的碼元(包括同樣存在于壓縮比特流中的任何水平或行程信息)來填充變換系數(shù)。如在動(dòng)作2020中一樣,這一動(dòng)作的一個(gè)實(shí)現(xiàn)將參考圖21在以下更詳細(xì)描述。該過程然后繼續(xù)到判定動(dòng)作2080,在那里解碼器確定該碼元是否指示它是用于最后一個(gè)非零系數(shù)的。如果不是,則該過程返回到判定動(dòng)作2040并重復(fù)。如果是,則該過程繼續(xù)到動(dòng)作2090,在那里用零填充任何其余未填充系數(shù)并且過程2000結(jié)束。
      圖21示出了由解碼器500(圖5)執(zhí)行的填充變換系數(shù)的示例過程2100。在過程2100的各個(gè)實(shí)現(xiàn)中,動(dòng)作可被移除、組合或分割成子動(dòng)作。盡管過程2100被配置成解碼根據(jù)以上第3.4節(jié)的技術(shù)編碼的碼元,但是在替換實(shí)現(xiàn)中,水平值和行程長度可被包括在2D和3D碼元中,這允許過程2100被簡化。該過程在動(dòng)作2110處開始,在那里解碼器確定該碼元是否為3D碼元。如果不是,則該過程跳轉(zhuǎn)到以下描述的判定動(dòng)作2140。然而,如果該碼元是3D碼元,則解碼器在判定動(dòng)作2120處確定該碼元是否指示正長度的初始零系數(shù)行程。這可通過確定3D碼元中的nonZero_run值是指示正長度的行程的1還是指示零長度行程的0來完成。如果該碼元指示了正長度的零系數(shù)行程,則該過程繼續(xù)到動(dòng)作2130,在那里基于跟隨3D碼元的編碼的level1來解碼行程長度,并且根據(jù)該行程長度用零來填充初始變換系數(shù)。
      接著,該過程繼續(xù)到判定動(dòng)作2140,在那里解碼器確定該碼元是否指示其非零系數(shù)具有大于1的絕對值。這可通過確定碼元中的nonOne_level值是指示該水平具有大于1的絕對值的1還是指示非零系數(shù)要么為-1要么為1的0來完成。如果該碼元沒有指示具有大于1的絕對值的系數(shù),則該過程繼續(xù)到動(dòng)作2150,在那里取決于非零系數(shù)的符號(hào),要么用-1要么用1來填充下一系數(shù)。如果該碼元指示具有大于1的絕對值的系數(shù),則該過程改為繼續(xù)到動(dòng)作2160,在那里解碼系數(shù)的水平并且用該水平值以及其符號(hào)來填充該系數(shù)。如上所述,符號(hào)可用各種方式來指示,因此系數(shù)符號(hào)的解碼沒有在動(dòng)作2150或2160中明確討論。
      接著,在判定動(dòng)作2170處,解碼器確定該碼元是否指示正長度的后續(xù)零系數(shù)行程。這可通過確定碼元中的nonZero_run_last值是指示正長度的行程的1還是指示零長度的行程的0來完成。(nonZero_run_last等于2的情況未示出,因?yàn)樵撉闆r在過程2000中處理。)如果該碼元指示正長度的零系數(shù)行程,則該過程繼續(xù)到動(dòng)作2180,在那里基于跟隨該碼元的編碼的run1來解碼行程長度,并且根據(jù)該行程長度用零來填充后續(xù)的變換系數(shù),且過程2100結(jié)束。
      4.計(jì)算環(huán)境 上述編碼器400(圖4)和解碼器500(圖5)以及用于高效地編碼和解碼變換系數(shù)的技術(shù)可以在其中執(zhí)行數(shù)字媒體信號(hào)處理的各種設(shè)備中的任一種上執(zhí)行,這些設(shè)備包括計(jì)算機(jī);圖像和視頻記錄、傳輸和接收設(shè)備;便攜式視頻播放器;視頻會(huì)議;以及其它示例。數(shù)字媒體編碼技術(shù)可以用硬件電路以及諸如在圖22所示的計(jì)算機(jī)或其它計(jì)算環(huán)境中執(zhí)行的數(shù)字媒體處理軟件來實(shí)現(xiàn)。
      圖22示出了其中可實(shí)現(xiàn)所描述的實(shí)施例的合適的計(jì)算環(huán)境(2200)的一般化的示例。計(jì)算環(huán)境(22500)并不對本發(fā)明使用范圍或功能提出任何局限,因?yàn)楸景l(fā)明可在不同的通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)。
      參考圖22,計(jì)算環(huán)境(2200)包括至少一個(gè)處理單元(2210)和存儲(chǔ)器(2220)。在圖22中,這一最基本的配置(2230)被包括在虛線內(nèi)。處理單元(2210)執(zhí)行計(jì)算機(jī)可執(zhí)行指令,并且可以是真實(shí)或虛擬處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以提高處理能力。存儲(chǔ)器(2220)可以是易失性存儲(chǔ)器(例如,寄存器、高速緩存、RAM)、非易失性存儲(chǔ)器(例如,ROM、EEPROM、閃存等)或兩者的某種組合。存儲(chǔ)器(2220)儲(chǔ)存實(shí)現(xiàn)所描述的編碼器和/或解碼器以及高效變換系數(shù)編碼/解碼技術(shù)的軟件(2280)。
      計(jì)算環(huán)境可具有附加特征。例如,計(jì)算環(huán)境(2200)包括存儲(chǔ)(2240)、一個(gè)或多個(gè)輸入設(shè)備(2250)、一個(gè)或多個(gè)輸出設(shè)備(2260)以及一個(gè)或多個(gè)通信連接(2270)。諸如總線、控制器或網(wǎng)絡(luò)等互連機(jī)制(未示出)將計(jì)算環(huán)境(2200)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計(jì)算環(huán)境(2200)中執(zhí)行的其它軟件提供了操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境(2200)的各組件的活動(dòng)。
      存儲(chǔ)(2240)可以是可移動(dòng)或不可移動(dòng)的,并包括磁盤、磁帶或磁帶盒、CD-ROM、CD-RW、DVD或可用于儲(chǔ)存信息并可在計(jì)算環(huán)境(2200)內(nèi)訪問的任何其它介質(zhì)。存儲(chǔ)(2240)儲(chǔ)存用于實(shí)現(xiàn)所描述的編碼器/解碼器和高效變換系數(shù)編碼/解碼技術(shù)的軟件(2280)的指令。
      輸入設(shè)備(2250)可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等觸摸輸入設(shè)備、語音輸入設(shè)備、掃描設(shè)備或向計(jì)算環(huán)境(2200)提供輸入的另一設(shè)備。對于音頻,輸入設(shè)備(2250)可以是聲卡或接受模擬或數(shù)字形式的音頻輸入的類似設(shè)備、或?qū)⒁纛l樣本提供給計(jì)算環(huán)境的CD-ROM讀取器。輸出設(shè)備(2260)可以是顯示器、打印機(jī)、CD刻錄機(jī)或提供來自計(jì)算環(huán)境(2200)的輸出的另一設(shè)備。
      通信連接(2270)允許通過通信介質(zhì)與另一計(jì)算實(shí)體的通信。通信介質(zhì)在已調(diào)制數(shù)據(jù)信號(hào)中傳達(dá)諸如計(jì)算機(jī)可執(zhí)行指令、壓縮的音頻或視頻信息、或其它數(shù)據(jù)等信息。已調(diào)制數(shù)據(jù)信號(hào)是其一個(gè)或多個(gè)特性以對信號(hào)中的信息編碼的方式來設(shè)定或更改的信號(hào)。作為示例而非局限,通信介質(zhì)包括用電、光、RF、紅外、聲學(xué)或其它載體實(shí)現(xiàn)的有線或無線技術(shù)。
      此處的數(shù)字媒體處理技術(shù)可在計(jì)算機(jī)可讀介質(zhì)的一般上下文中描述。計(jì)算機(jī)可讀介質(zhì)可以是可在計(jì)算環(huán)境內(nèi)訪問的任何可用介質(zhì)。作為示例而非局限,對于計(jì)算環(huán)境(2200),計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)器(2220)、存儲(chǔ)(2240)、通信介質(zhì)和以上任一種的組合。
      此處的數(shù)字媒體處理技術(shù)可在諸如程序模塊中所包括的、在目標(biāo)真實(shí)或虛擬處理器上的計(jì)算環(huán)境中執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可如各種實(shí)施例中所需地被組合或在程序模塊之間拆分。用于程序模塊的計(jì)算機(jī)可執(zhí)行指令可在本地或分布式計(jì)算環(huán)境中執(zhí)行。
      出于表示的目的,詳細(xì)描述使用了如“確定”、“生成”、“調(diào)整”和“應(yīng)用”等術(shù)語來描述計(jì)算環(huán)境中的計(jì)算機(jī)操作。這些術(shù)語是對由計(jì)算機(jī)執(zhí)行的操作的高級(jí)抽象,并且不應(yīng)與人類執(zhí)行的動(dòng)作混淆。對應(yīng)于這些術(shù)語的實(shí)際計(jì)算機(jī)操作可取決于實(shí)現(xiàn)而變化。
      鑒于此處描述的主題的許多可能的變型,要求保護(hù)落入所附權(quán)利要求書及其等效技術(shù)范圍內(nèi)的所有這些實(shí)施例作為本發(fā)明。
      權(quán)利要求
      1.一種編碼表示數(shù)字媒體數(shù)據(jù)的變換系數(shù)系列(1300)的方法,包括
      將所述變換系數(shù)系列表示(1400)為一碼元系列(1340),其中每一碼元(1355)包括來自所述變換系數(shù)系列的非零系數(shù)的指示以及后續(xù)的零值系數(shù)行程的長度的指示;
      對于所述碼元系列中的每一碼元,發(fā)送(1600)所述碼元以便在壓縮比特流(420)中編碼;以及
      其中所述變換系數(shù)系列中的最后一個(gè)非零系數(shù)由一碼元(1365)來表示,其中所述后續(xù)的零值系數(shù)行程的長度的指示包括所述系數(shù)是所述最后一個(gè)非零系數(shù)的指示符。
      2.如權(quán)利要求1所述的方法,其特征在于,所述碼元系列中的第一個(gè)碼元另外包括在所述變換系數(shù)系列中的第一個(gè)非零系數(shù)之前的零值系數(shù)行程的長度的指示。
      3.如權(quán)利要求2所述的方法,其特征在于,所述變換系數(shù)系列從確定一寬范圍變換系數(shù)系列的歸一化部分得到。
      4.如權(quán)利要求2所述的方法,其特征在于,使用一組碼表來編碼所述碼元系列中的第一個(gè)碼元,并且使用一組不同的碼表來編碼所述碼元系列中的其它碼元。
      5.如權(quán)利要求2所述的方法,其特征在于,所述碼元系列中的每一碼元具有一相關(guān)聯(lián)的上下文。
      6.如權(quán)利要求5所述的方法,其特征在于,用于一碼元的上下文至少部分地基于由所述碼元表示的非零系數(shù)是出現(xiàn)在所述系數(shù)系列中的第一個(gè)零值系數(shù)之前還是之后。
      7.如權(quán)利要求5所述的方法,其特征在于,用于一碼元的上下文至少部分地基于所述變換系數(shù)系列是用于亮度還是色度通道。
      8.如權(quán)利要求5所述的方法,其特征在于,用于一碼元的上下文至少部分地基于所述變換系數(shù)系列是用于內(nèi)部變換、中間變換還是外部變換。
      9.如權(quán)利要求2所述的方法,其特征在于,對于每一碼元,所述碼元中所述后續(xù)零值系數(shù)行程的長度的指示包括指示所述碼元上的以下情況之一的三進(jìn)制碼元
      所述零值系數(shù)行程為零長度;
      所述零值系數(shù)行程為正長度;
      由所述碼元指示的系數(shù)是所述變換系數(shù)系列中的最后一個(gè)系數(shù)。
      10.如權(quán)利要求9所述的方法,其特征在于,所述碼元系列中的第一個(gè)碼元中的第一個(gè)非零系數(shù)之前的零值系數(shù)行程的長度的指示包括指示所述第一個(gè)非零系數(shù)之前的零值系數(shù)的行程是零長度還是正長度的布爾值。
      11.如權(quán)利要求9所述的方法,其特征在于,還包括在一碼元包括零值系數(shù)行程為正長度的指示時(shí),發(fā)送所述零值系數(shù)行程的長度以便在所述壓縮比特流中編碼。
      12.如權(quán)利要求1所述的方法,其特征在于,對每一碼元,所述碼元中對來自所述變換系數(shù)系列的非零系數(shù)的指示包括指示所述非零系數(shù)的絕對值是否大于1的布爾值。
      13.如權(quán)利要求12所述的方法,其特征在于,還包括在一碼元包括非零系數(shù)具有大于1的絕對值的指示時(shí),發(fā)送所述非零系數(shù)的絕對值以便在所述壓縮比特流中編碼。
      14.一種數(shù)字媒體解碼器,包括
      用于儲(chǔ)存已編碼的數(shù)字媒體數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)緩沖器(2280);以及
      處理器(2210),它被配置成
      接收描述一變換系數(shù)系列的一組壓縮碼元(420);
      解壓所述碼元(510);以及
      通過分析所述一組解壓縮碼元來重構(gòu)(520)所述變換系數(shù)系列;并且
      其中
      所述一組壓縮碼元包括從根據(jù)一上下文模型的一組碼表編碼(1600)的聯(lián)合編碼碼元(1340);
      每一聯(lián)合編碼碼元(1355)描述了來自所述變換系數(shù)系列的非零水平,以及在所述非零水平之后是否有零值系數(shù)。
      15.如權(quán)利要求14所述的數(shù)字媒體解碼器,其特征在于
      每一聯(lián)合編碼碼元通過指示一非零水平的絕對值是否大于1來描述所述非零水平;
      所述一組壓縮碼元另外包括描述每一非零水平的值以及水平符號(hào)的指示的水平碼元;以及
      所述處理器還被配置成在分析指示其絕對值大于1的非零水平的聯(lián)合編碼碼元時(shí),通過找到描述所述非零水平的值的水平碼元來重構(gòu)所述非零水平。
      16.如權(quán)利要求14所述的數(shù)字媒體解碼器,其特征在于,所述一組壓縮碼元中的第一個(gè)碼元另外描述在所述變換系數(shù)系列中的非零水平之前是否有零值系數(shù)。
      17.如權(quán)利要求14所述的數(shù)字媒體解碼器,其特征在于
      每一聯(lián)合編碼碼元通過指示一零值系數(shù)行程的長度是否大于0來描述所述零值系數(shù)行程;
      所述一組壓縮碼元另外包括描述其長度大于0的每一零值系數(shù)行程的長度的行程碼元。
      18.一種或多種承載指令的計(jì)算機(jī)可讀介質(zhì),所述指令描述了一種用于執(zhí)行解碼壓縮數(shù)字媒體數(shù)據(jù)的方法的數(shù)字媒體解碼程序,所述方法包括
      接收(2000)包括從根據(jù)一上下文模型的一組碼表編碼的壓縮的聯(lián)合編碼碼元(1340)的比特流(420);
      解碼(2000)所述聯(lián)合編碼碼元以對每一碼元確定變換系數(shù)水平和后續(xù)變換系數(shù)零的行程;以及
      從所確定的水平和變換系數(shù)零的行程來重構(gòu)(2100)一組變換系數(shù)。
      19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述比特流還包括初始的聯(lián)合編碼碼元,并且所述方法還包括解碼所述初始的聯(lián)合編碼碼元以確定初始變換系數(shù)零的行程、變換系數(shù)水平、以及后續(xù)變換系數(shù)零的行程。
      20.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其特征在于
      所述聯(lián)合編碼碼元對每一變換系數(shù)水平指示所述水平是否具有大于1的絕對值;
      所述聯(lián)合編碼碼元對每一變換系數(shù)零的行程指示所述行程是否具有大于0的長度;
      所述比特流還包括描述所述變換系數(shù)零的行程的長度、以及所述變換系數(shù)水平的符號(hào)和幅值的壓縮碼元;以及
      解碼所述聯(lián)合編碼碼元包括
      當(dāng)解碼指示變換系數(shù)水平具有大于1的絕對值的聯(lián)合編碼碼元時(shí),通過解碼所述比特流中指示所述變換系數(shù)水平的符號(hào)和值的一個(gè)或多個(gè)碼元來確定該變換系數(shù)水平;以及
      當(dāng)解碼指示變換系數(shù)零的行程大于0的聯(lián)合編碼碼元時(shí),通過解碼所述比特流中指示所述行程的長度的碼元來確定所述變換系數(shù)零的行程的長度。
      全文摘要
      一種基于塊變換的數(shù)字媒體編解碼器通過對非零系數(shù)以及后續(xù)的零值系數(shù)行程進(jìn)行聯(lián)合編碼來更高效地編碼變換系數(shù)。當(dāng)非零系數(shù)是其塊中的最后一個(gè)時(shí),在該系數(shù)的碼元中用最后指示符來替代行程值。在將非零系數(shù)與初始和后續(xù)零行程聯(lián)合編碼的特殊碼元中指示初始非零系數(shù)。該編解碼器通過識(shí)別非零系數(shù)行程中的間斷并在這一間斷的任一側(cè)上單獨(dú)編碼非零系數(shù)來允許多個(gè)編碼上下文。該編解碼器還通過在每一碼元中指示非零系數(shù)是否具有大于1的絕對值以及零行程是否具有正值來減小碼表大小,并在碼元外部單獨(dú)編碼系數(shù)水平和行程長度。
      文檔編號(hào)H04N7/12GK101243611SQ200680029309
      公開日2008年8月13日 申請日期2006年8月3日 優(yōu)先權(quán)日2005年8月12日
      發(fā)明者S·斯里尼瓦杉 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1