專利名稱:用于自適應(yīng)塊變換的基于上下文的自適應(yīng)可變長(zhǎng)度編碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及視頻編碼和壓縮領(lǐng)域,尤其涉及基于上下文的 自適應(yīng)可變長(zhǎng)度編碼的方法和系統(tǒng)。
背景技術(shù):
典型的視頻編碼器將原始視頻序列的每個(gè)幀劃分成連續(xù)的矩形區(qū) 域,這種矩形區(qū)域稱為"塊"。這些塊以"幀內(nèi)模式"U模式),或 者"幀間模式"(P模式)編碼。對(duì)于P模式,編碼器首先在先前發(fā)送 的"基準(zhǔn)幀"中搜索與正在被編碼的塊相似的塊,所述的"基準(zhǔn)幀" 由Fw表示。搜索一般限制到不超過距將被編碼的塊某個(gè)空間移位。在 最佳匹配或"預(yù)測(cè)"已經(jīng)被識(shí)別時(shí),它以兩維(2D)運(yùn)動(dòng)矢量(Ax,Ay) 的形式表達(dá),其中Ax是水平移位,而Ay是垂直移位。用該運(yùn)動(dòng)矢量 連同基準(zhǔn)幀一起構(gòu)成一個(gè)預(yù)測(cè)塊FPr":Fpred (x, y) =Fref (x+Ax, y+Ay) 像素在幀中的位置由(x,y)表示。對(duì)于以I模式編碼的塊,用空間預(yù)測(cè)從同一幀中先前編碼的相鄰 塊來形成預(yù)測(cè)塊。對(duì)于I模式和P模式,預(yù)測(cè)誤差,也就是正在編碼 的塊和預(yù)測(cè)塊之間的差,被表示成一些離散變換的一組加權(quán)基函數(shù)。 變換一般基于8x8或4x4的塊執(zhí)行。加權(quán)變換系數(shù)隨后被量化。量化 引入了信息丟失,因此量化系數(shù)的精度比原始系數(shù)精度低。量化變換系數(shù)和運(yùn)動(dòng)矢量為"語(yǔ)法元素"的例子。這些加上一些 控制信息形成視頻序列的完整的編碼表示。在從編碼器傳送到解碼器 之前,對(duì)所有的語(yǔ)法元素進(jìn)行熵編碼,從而進(jìn)一步減少表示它們所需
的比特?cái)?shù)目。熵編碼是一種無損耗運(yùn)算,其目的在于通過利用碼元的 分布特性(一些碼元比其它碼元更頻繁地出現(xiàn)),將需要用來表示發(fā) 送或存儲(chǔ)碼元(在此情況下為語(yǔ)法元素)的比特?cái)?shù)最小化。視頻編碼器使用的一種熵編碼方法為可變長(zhǎng)度碼(VLC) 。 VLC碼 字是一個(gè)比特(0和1 )序列,它被分配給每個(gè)碼元。該VLC被這樣構(gòu) 造使得碼字長(zhǎng)度和由碼字表示的碼元出現(xiàn)的頻繁程度相對(duì)應(yīng),例如, 越頻繁出現(xiàn)的碼元由越短的VLC碼字表示。此外,VLC應(yīng)該如此構(gòu)造,以使碼字可唯一地被解碼,即,如果解碼器接收一個(gè)有限長(zhǎng)度的有效 比特序列,則必須只有一種可能的輸入碼元序列,它在編碼時(shí)產(chǎn)生收 到的比特序列。為了正確地解碼比特流,編碼器和解碼器必須使用同一組VLC碼 字和同樣的碼元分配。如上所述,為了使壓縮最大化,應(yīng)當(dāng)將最短的 VLC碼字分配給最頻繁出現(xiàn)的碼元。然而,不同碼元的頻率(概率)取 決于所編碼的實(shí)際幀。在使用單組VLC碼字并且碼元恒定地分配給那 些碼字的情況下,碼元在給定幀中的概率分布很可能與VLC所假設(shè)的 概率不同,甚至貫穿整個(gè)序列的平均碼元概率也不同。因此,使用單 組VLC碼字以及碼元到那些碼字的單一分配降低了編碼效率。為了克服這種困難使用了不同的適配方法。現(xiàn)在描述一種方法, 它提供了合理的計(jì)算復(fù)雜度和良好的壓縮和效率的折衷,并且它當(dāng)前 被用在現(xiàn)有技術(shù)的視頻編碼器中。對(duì)于一組碼元,向編碼器和解碼器 提供了多個(gè)規(guī)定VLC碼字(VLC)的表來使用。選擇用來對(duì)特定碼元進(jìn) 行編碼的表則取決于編碼器和解碼器都已知的信息,比如編碼塊的類 型(I或P類型塊)、被編碼的分量(亮度或色度)、或量化參數(shù)(QP ) 值。所述性能取決于用于在VLC之間切換的參數(shù)表征碼元統(tǒng)計(jì)特性的 表現(xiàn)。在解碼器中,通過首先以與在編碼器中同樣的方式來構(gòu)造預(yù)測(cè), 并且將壓縮的預(yù)測(cè)誤差加到預(yù)測(cè)中從而獲得當(dāng)前幀中的塊。通過使用 量化系數(shù)來加權(quán)變換基函數(shù)從而找到壓縮的預(yù)測(cè)誤差。重構(gòu)幀和原始 幀之間的差叫做重構(gòu)誤差??梢酝ㄟ^調(diào)整在量化變換系數(shù)時(shí)使用的量化參數(shù)(QP)值來控制 壓縮比,即用來表示原始序列的比特?cái)?shù)和用于表示壓縮序列的比特?cái)?shù) 之比。壓縮比還取決于所采用的熵編碼方法。
在給定塊中的系數(shù)用z字形掃描來排序(掃描),從而得出一個(gè) 一維排序系數(shù)矢量。用于4x4塊的一個(gè)示范性Z字形掃描在圖1中示 出。Z字形掃描假設(shè)在運(yùn)用2維(2D)變換之后,具有大多數(shù)能量(即 較高值系數(shù))的變換系數(shù)對(duì)應(yīng)于低頻變換函數(shù)并且處于塊的左上邊, 如圖1所示。因此,在通過Z字形掃描產(chǎn)生的系數(shù)矢量中,較大的系 數(shù)極可能在矢量開始時(shí)出現(xiàn)。在量化之后,大多數(shù)低能量系數(shù)變得等 于0之后。能夠進(jìn)一步處理系數(shù)矢量以便每個(gè)非零系數(shù)由2個(gè)值來表示游 程(run)(矢量中非零值前面的連續(xù)零系數(shù)的數(shù)目),和等級(jí)(level) (系數(shù)值)。CAVLC (基于上下文的自適應(yīng)VLC)是在JVT編碼器中使用的編碼 變換系數(shù)的方法("Joint Final Committee Draft (JFCD) of Joint Video Specification ( ITU-T Rec. H. 2641IS0/IEC 14496-10 AVC,,))。簡(jiǎn)言之,使用CAVLC對(duì)單個(gè)的4x4塊編碼包括5個(gè)步驟1. 與"拖尾1 (trailing ones)"相結(jié)合,對(duì)塊中非零系數(shù)的總 數(shù)進(jìn)行編碼。將拖尾l的數(shù)目定義成當(dāng)以倒序(即,圖1中的15, 14, 13, 12, 11,......)讀出系數(shù)矢量時(shí),在遇到幅度大于1的系數(shù)之前遇到的幅度為1的系數(shù)的數(shù)目。用于編碼該信息的VLC基于預(yù)測(cè)的非零系數(shù)數(shù) 目,其中預(yù)測(cè)基于在先前編碼的相鄰塊(左上塊)中的非零系數(shù)數(shù)目。2. 對(duì)任意拖尾1的符號(hào)進(jìn)行編碼。3. 對(duì)拖尾l之外的非零系數(shù)的等級(jí)(幅度)進(jìn)行編碼。4. 對(duì)系數(shù)矢量中對(duì)處在最后一個(gè)非零系數(shù)前面的零值的數(shù)目進(jìn)行 編碼,即對(duì)所有"游程"的總和進(jìn)行編碼。在編碼該值時(shí)所使用的VLC 取決于塊中非零系數(shù)的總數(shù),因?yàn)檫@兩個(gè)值之間存在一定的關(guān)系。5. 從系數(shù)矢量中的最后一個(gè)非零值開始,對(duì)在每個(gè)非零系數(shù)之前 出現(xiàn)的游程進(jìn)行編碼。用于編碼游程值的VLC是基于來自步驟(4)的游程總和選擇的, 并且游程的總數(shù)如此程度地編碼。例如,如果一個(gè)塊的"游程總和" 為8,并且所編碼的第一游程為6,那么所有的剩余游程必須為0, 1, 或2。因?yàn)榭赡艿挠纬涕L(zhǎng)度漸漸變短,所以選擇更高效的VLC碼來最小
化表示游程所需的比特?cái)?shù)目。
圖2示出了一種典型的基于塊的視頻編碼器。如圖2中所示,視 頻服務(wù)器100包括一個(gè)前端單元10,它從視頻源接收視頻信號(hào)110, 還包括一個(gè)視頻多路復(fù)用編碼器40。從視頻源提供給輸入110的每個(gè) 未經(jīng)壓縮的視頻幀以光柵掃描的順序逐個(gè)宏塊地被接收和處理。前端 單元10包括一個(gè)編碼控制管理器12在I模式和P模式之間切換,并 且經(jīng)由控制信號(hào)120和多路復(fù)用編碼器40來執(zhí)行定時(shí)協(xié)調(diào),還包括一 個(gè)DCT (離散余弦變換)變換模塊16和量化器14,以提供量化的DCT 系數(shù)。將量化的DCT系數(shù)122轉(zhuǎn)送到多路復(fù)用編碼器40。前端單元10 還包括一個(gè)逆向量化器18和一個(gè)逆向變換單元20,以執(zhí)行基于塊的逆 向離散余弦變換(IDCT),前端單元10包括一個(gè)運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)和估計(jì) 模塊22,以減少視頻序列中的時(shí)間冗余,并且為了誤差預(yù)測(cè)和補(bǔ)償?shù)?目的,提供預(yù)測(cè)差錯(cuò)幀。運(yùn)動(dòng)估計(jì)模塊22還向到多路復(fù)用編碼器40 提供每個(gè)宏塊的運(yùn)動(dòng)矢量124。多路復(fù)用編碼器40典型地包括一個(gè)掃 描模塊42來執(zhí)Z字形描述,以便為圖像數(shù)據(jù)的每個(gè)塊形成順序矢量, 還包括一個(gè)熵編碼模塊來用游程和等級(jí)參數(shù)指定非零量化DCT系數(shù)。 游程和等級(jí)值進(jìn)一步映射到二進(jìn)制序列,每個(gè)二進(jìn)制序列由上下文分 配模塊分配到所謂的"上下文"。上下文連同運(yùn)動(dòng)矢量一起被格式化 成比特流140?;谏舷挛牡木幋a器為本領(lǐng)域所公知。此外,變換模塊 116也可能是FFT (快速傅立葉變換)模塊或DFT (離散傅立葉變換) 模塊,并且那個(gè)DCT有可能是DCT的近似。
圖3示出了一個(gè)典型的解碼器。如圖所示,客戶機(jī)200包括視頻 多路復(fù)用解碼器60,它從編碼器40接收編碼的視頻比特流140。解碼 器60在逐個(gè)宏塊的基礎(chǔ)上解碼I模式幀?;诎ㄔ诒忍亓?40中的 VLC碼字,解碼器60中的系數(shù)提取模塊62恢復(fù)游程和等級(jí)值,然后為 宏塊的每個(gè)塊重構(gòu)量化DCT系數(shù)陣列162。從編碼的視頻比特流140 中提取與宏塊相關(guān)聯(lián)的已編碼運(yùn)動(dòng)矢量信息。提取的運(yùn)動(dòng)矢量166和 重構(gòu)的量化DCT系數(shù)一起供給后端單元80。逆向量化器84為宏塊的每 個(gè)塊逆向量化表示預(yù)測(cè)誤差信息的量化DCT系數(shù)162,并將結(jié)果供給逆 向變換器86。為了產(chǎn)生視頻信號(hào)180,用編碼控制管理器82提供的控 制信息,得到宏塊的每個(gè)塊的重構(gòu)預(yù)測(cè)誤差值陣列。
當(dāng)前,視頻和靜止圖像通常在以塊為單位的變換的幫助下編碼到
頻域。這樣的編碼方法由聯(lián)合視頻工作組(JVT)在H.26L(或?qū)淼?H.264)標(biāo)準(zhǔn)中使用。在該方法中,圖像首先被細(xì)分成規(guī)格為4x4像素 的塊,并且該塊被變換成4x4矩陣變換系數(shù)。接著該系數(shù)通過沿Z字 形路徑掃描來排列,其中為了形成變換系數(shù)的排序(一個(gè)一維矢量), 低頻系數(shù)在掃描中放在首位。圖1的4x4變換系數(shù)矩陣將導(dǎo)致一個(gè)一 維陣列或1, 2, 5, 9, 6, 3, 4, 7, 10, 13, 14, 11, 8, 12, 15, 16序列。這是有利的,因?yàn)橄铝胁襟E是通過游程長(zhǎng)度編碼來對(duì)DCT系 數(shù)量化值進(jìn)行編碼,其中概率更大的游程由短碼(哈夫曼(Huffman) 編碼或算術(shù)編碼)表示。以這種方式排列,在掃描結(jié)尾的許多系數(shù)通 常以零結(jié)束。因此系數(shù)被高效地編碼。已經(jīng)知道可變長(zhǎng)度編碼意味著 不是所有的碼元都具有相同的長(zhǎng)度(以比特計(jì))。哈夫曼編碼為可變 長(zhǎng)度編碼的一種實(shí)例。算術(shù)編碼稍微地不同,不同之處在于其包括一 系列碼元。因此,通常不可能描述一個(gè)碼元的長(zhǎng)度,如要求X比特。 相反,特定碼元系列將要求Y比特。為此"熵編碼"或許是比"可變 長(zhǎng)度編碼"更通用的術(shù)語(yǔ)。上述的編碼方案用來產(chǎn)生一個(gè)4x4像素的塊變換。然而,在將變 換系數(shù)劃分成比4x4更大的塊時(shí),可包括基于上下文的自適應(yīng)VLC (CAVLC)。例如,JVT編碼器包括叫作"自適應(yīng)塊變換"(ABT)的 特征,它對(duì)4x8, 8x4和8x8的塊執(zhí)行變換。因此,不再能夠使用為 4x4塊設(shè)計(jì)的編碼方案。此問題的一種解決方案是將較大的塊分裂成 4x4規(guī)格的子塊。已經(jīng)建議了現(xiàn)有的解決方案,其中系數(shù)的ABT塊在空間域上被分 成4x4塊。8x8塊作為例子示于圖4,在JVT編碼器中對(duì)該塊使用掃描 順序之一。圖5a —5c中示出同一個(gè)被劃分成4個(gè)塊的塊。隨后用4x4 掃描對(duì)每個(gè)4x4塊進(jìn)行Z字形掃描,得到多個(gè)長(zhǎng)度為16的矢量。接著 這些長(zhǎng)為16的矢量被傳送到標(biāo)準(zhǔn)的4x4 CAVLC算法。當(dāng)示于圖1的 4x4掃描用于圖5a-5c的4x4塊時(shí),得到如在圖6a-6c中給出的矢量。該現(xiàn)有的CAVLC算法關(guān)于系數(shù)矢量的內(nèi)容做出某種假設(shè)。當(dāng)違背 這些假設(shè)時(shí),CAVLC所使用的編碼表(即,規(guī)定哪個(gè)碼字用來描述哪個(gè) 碼元的表)就會(huì)"誤配"。這意味著表中碼字的長(zhǎng)度不再準(zhǔn)確地反映 碼元的概率,因此CAVLC的效率比校低。作為現(xiàn)有方法的結(jié)果,在ABT塊劃分之后生成的每個(gè)4x4塊具有
與ABT變換中不同的頻率相對(duì)應(yīng)的系數(shù)。例如,圖5a的4x4塊包括低 頻信息(無論是水平的還是垂直的)并且因此包含大多數(shù)高幅度的系 數(shù)。同樣地,圖5d的4x4塊包括高頻信息和低幅度系數(shù)。CAVLC算法 假設(shè)較高幅度通常出現(xiàn)在矢量的開始,并且苛刻地假設(shè)較長(zhǎng)的零游程 通常在矢量的結(jié)尾出現(xiàn)。圖5d的4x4塊在統(tǒng)計(jì)上不象在圖5a的4x4 塊中包括許多值,并且"遠(yuǎn)離中心(outlying)"的值可能具有與之相 關(guān)聯(lián)的長(zhǎng)零游程。雖然圖5d的4x4塊可包括一個(gè)或兩個(gè)非零系數(shù),那 些系數(shù)的位置與CAVLC所期望的位置不相匹配,并且隨后那個(gè)塊的編 碼需要不成比例的大數(shù)目比特。CAVLC方法還假設(shè)相鄰塊具有相似數(shù)目的非零系數(shù)。對(duì)于具有相應(yīng) 于變換函數(shù)不同頻率的系數(shù)的塊,非零系數(shù)數(shù)目徹底改變。由于VLC 表選擇是基于其相鄰塊的非零系數(shù)的數(shù)目,這能夠?qū)е洛e(cuò)誤地選擇用 來編碼給定塊的非零系數(shù)數(shù)目的VLC表。因此,就編碼效率和量化精度而言,現(xiàn)有的塊劃分方案不是最佳 的解決方案。提供一種用于視頻和圖像編碼的更有效的方法和系統(tǒng)是有利的并 且合乎需要,這可以運(yùn)用到具有一般規(guī)格為(4n)x(4m)的ABT塊,其中 n和m為大于或等于1的正整數(shù)。發(fā)明內(nèi)容本發(fā)明的主要目的在于減少表示量化系數(shù)所需的比特?cái)?shù)目,所述 的量化系數(shù)是在應(yīng)用大于4M的塊變換之后得到的。更準(zhǔn)確地,本發(fā) 明目的在于減少用來表示從4x8, 8x4,或8x8變換之后得到系數(shù)所需 的比特?cái)?shù)目。此外,為了簡(jiǎn)化JVT編碼器的設(shè)計(jì)并且使實(shí)現(xiàn)JVT的碼 所需要的存儲(chǔ)器最小化,希望用為4x4塊開發(fā)的CAVLC方法不作改變 或者以最小的修改以用于編碼4x8, 8x4,或8x8塊。通過使用原始矢量以交織方式將大于4x4的塊劃分成多個(gè)4x4規(guī) 格的子塊,可以實(shí)現(xiàn)本發(fā)明目的。因此,根據(jù)本發(fā)明的第一個(gè)方面,圖像編碼方法的特征在于從圖像數(shù)據(jù)中形成至少一個(gè)變換系數(shù)塊,掃描變換系數(shù)塊來提供 變換系數(shù)序列,以交織的方式在序列中對(duì)變換系數(shù)進(jìn)行子抽樣來提供 多個(gè)變換系數(shù)子抽樣序列,以及使用熵編碼器對(duì)變換系數(shù)子抽樣序列
進(jìn)行編碼。有利地,所述子抽樣在所述編碼之前或之后執(zhí)行。優(yōu)選地,變換系數(shù)序列長(zhǎng)度為16nxm,其中n和m為大于或等于l 的正整數(shù)并且變換系數(shù)的每個(gè)子抽樣序列長(zhǎng)度為16。根據(jù)本發(fā)明的第二個(gè)方面,提供一種用于圖像編碼的計(jì)算機(jī)程 序,其中編碼過程包括步驟從圖像數(shù)據(jù)中形成至少一個(gè)變換系數(shù)塊,和掃描變換系數(shù)塊來提供變換系數(shù)序列。該計(jì)算機(jī)程序的特征在于一種用于以交織方式對(duì)序列中的變換系數(shù)進(jìn)行子抽樣來提供多個(gè) 變換系數(shù)子抽樣序列的算法。有利地,編碼過程還包括使用熵編碼器對(duì)變換系數(shù)子抽樣序列進(jìn) 行編碼的步驟。可替換地,編碼過程進(jìn)一步包括在所述子抽樣之前使用熵編碼器 對(duì)變換系數(shù)進(jìn)行編碼的步驟。根據(jù)本發(fā)明的第三個(gè)方面,提供了一種用于接收?qǐng)D像數(shù)據(jù)并提供 表示圖像數(shù)據(jù)的比特流的圖像編碼器。該圖像編碼器的特征在于用于從該圖像數(shù)據(jù)中形成至少一個(gè)變換系數(shù)塊的裝置,用于掃描該變換系數(shù)塊以從該塊中形成排序的變換系數(shù)序列的裝置,為了形成變換系數(shù)的多個(gè)子抽樣序列,對(duì)排序的變換系數(shù)序列進(jìn) 行子抽樣的軟件程序,對(duì)變換系數(shù)子抽樣序列進(jìn)行熵編碼以提供表示已編碼變換系數(shù)的 信號(hào)的裝置,和用于基于該信號(hào)提供比特流的裝置。根據(jù)本發(fā)明的第四個(gè)方面,提供了一種圖像編碼系統(tǒng),包括一個(gè) 服務(wù)器,用來指供表示圖像數(shù)據(jù)的比特流,和一個(gè)客戶機(jī),用來基于 該比特流重構(gòu)圖像數(shù)據(jù),其中服務(wù)器的特征在于 用來接收表示圖像數(shù)據(jù)的信號(hào)接收機(jī), 用來從該信號(hào)中形成至少 一個(gè)變換系數(shù)塊的裝置, 用于掃描該變換系數(shù)塊以從該塊中形成排序的變換系數(shù)序列的裝置, 為了形成變換系數(shù)的多個(gè)子抽樣序列,對(duì)排序的變換系數(shù)序列進(jìn) 行子抽樣的軟件程序,對(duì)變換系數(shù)子抽樣序列進(jìn)行熵編碼以提供表示已編碼變換系數(shù)的 另外的信號(hào)的裝置,和用于基于該另外的信號(hào)提供比特流的裝置。
圖l是用于4x4塊的示范性Z字形掃描。圖2是示出典型視頻服務(wù)器的框圖,其利用基于塊的變換編碼和 運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。圖3是示出對(duì)應(yīng)于圖2的編碼器的典型視頻客戶機(jī)的框圖。圖4是8x8塊的示范性Z字形掃描。圖5a是來自圖4的8x8塊的4x4子塊。圖5b是來自圖4的8x8塊的另一個(gè)4x4子塊。圖5c是來自圖4的8x8塊的又一個(gè)4x4子塊。圖5d是來自圖4的8x8塊的第四個(gè)4x4子塊。圖6a是根據(jù)圖5a的4x4塊,將被傳送到4x4 CAVLC算法的表示 矢量的一維陣列。圖6b是根據(jù)圖5b的4x4塊,將被傳送到4x4 CAVLC算法的表示 矢量的一維陣列。圖6c是根據(jù)圖5c的4x4塊,將被傳送到4x4 CAVLC算法的表示 矢量的一維系數(shù)陣列。圖6d是根據(jù)圖5d的4x4塊,將被傳送到4x4 CAVLC算法的表示 矢量的一維陣列。圖7是表示8x8塊的排序系數(shù)序列的一維矢量。圖8a是根據(jù)本發(fā)明表示來自原始矢量的第一分段矢量的一維系數(shù) 陣列。圖8b是根據(jù)本發(fā)明表示來自原始矢量的第二分段矢量的一維系數(shù) 陣列。圖8c是根據(jù)本發(fā)明表示來自原始矢量的第三分段矢量的一維系數(shù) 陣列。圖8d是根據(jù)本發(fā)明表示來自原始矢量的第四分段矢量的一維系數(shù) 陣列。圖9是示出根據(jù)本發(fā)明的一個(gè)示范視頻服務(wù)器的框圖。 圖IO是示出根據(jù)本發(fā)明的對(duì)應(yīng)于圖9的視頻編碼器的視頻客戶機(jī) 的框圖。圖lla是從8x8塊變換系數(shù)子抽樣的4x4塊。 圖lib是從8x8塊變換系數(shù)子抽樣的另 一個(gè)4x4塊。 圖lie是從8x8塊變換系數(shù)子抽樣的又一個(gè)4x4塊。 圖lid是從8x8塊變換系數(shù)子抽樣的第四個(gè)4x4塊。
具體實(shí)施方式
根據(jù)本發(fā)明的塊分段方法將變換系數(shù)ABT塊(8x8塊,4x8塊或 8x4塊)分成4x4塊,使用標(biāo)準(zhǔn)的4x4 CAVLC算法對(duì)其進(jìn)行編碼。在 4x4塊之中的系數(shù)劃分是根據(jù)系數(shù)的能量以確保在每個(gè)4x4塊中的系 數(shù)統(tǒng)計(jì)分布相似。系數(shù)的能量取決于它所對(duì)應(yīng)的變換函數(shù)的頻率,比 如,能夠由它在ABT塊的Z字形掃描中的位置指示。這樣劃分的結(jié)果, 不是所有選擇到給定4x4塊的系數(shù)在ABT塊中都在空間上互相鄰近。本發(fā)明提出的方法對(duì)使用8x8、 4x8或8x4變換產(chǎn)生的系數(shù)塊操 作,其已經(jīng)以Z字形的模式(或任何其它模式)被掃描以產(chǎn)生排序的系 數(shù)矢量。如上所述,Z字形掃描的目的在于向系數(shù)矢量的起點(diǎn)裝填非零系 數(shù)。有效地,目的在于根據(jù)遞減的能量(變化)來排列系數(shù)。如果能 量通常遞減,用于實(shí)現(xiàn)該目的的實(shí)際掃描對(duì)本發(fā)明而言是不重要的。在Z字形掃描從而產(chǎn)生長(zhǎng)度為N的排序的系數(shù)矢量(對(duì)于8x8塊N 為64,對(duì)于4x8或8x4塊N為32)之后,本發(fā)明的算法將該矢量分段 為N/16個(gè)較小矢量,每個(gè)長(zhǎng)為16。通過在子抽樣過程中,從長(zhǎng)為N 的系數(shù)矢量中每(N/16)個(gè)系數(shù)提取一個(gè)來形成各個(gè)這樣的矢量。例 如,如果排序的矢量包括了標(biāo)記為c0, cl, c2,…,c63的系數(shù),則 長(zhǎng)為16的第一分段矢量包括cO, c4, c8, c12,…,c60。長(zhǎng)為16的 第二分段矢量包括cl, c5, c9, c13,…,c61,對(duì)于第三和第四矢量 依此類推。例如,如果排序的矢量由圖7所示的64個(gè)系數(shù)的一維陣列 表示,則長(zhǎng)為16的第一、第二、第三和第四分段矢量分別在圖8a-8d 中示出。
在以所述方式獲得長(zhǎng)為16的子抽樣矢量之后,使用標(biāo)準(zhǔn)4x4 CAVLC 算法對(duì)其進(jìn)行編碼。正如在CAVLC中所描述,對(duì)非零系數(shù)的編碼依賴 于相鄰左上頂點(diǎn)4x4塊(參見圖8a到8d)的非零系數(shù)的數(shù)目。因此 通過拆分ABT塊生成的每個(gè)矢量被分配到通過空間上劃分ABT塊而生 成的4x4塊的一個(gè)空間位置。例如在本發(fā)明的方法對(duì)8x4塊操作時(shí), 將第一矢量分配給較上面的4x4塊,而將第二矢量被分配給靠下面的 塊。在該方法中,根據(jù)本發(fā)明,每四個(gè)系數(shù)選擇一個(gè),如圖8a-8d所 示。最前面("最顯著的,,)編號(hào)為0-4的四個(gè)系數(shù)中的一個(gè)系數(shù)被 分配給每個(gè)4x4塊。下一組4個(gè)系數(shù)(編號(hào)為4-7)中的一個(gè)系數(shù)被 分配給每個(gè)4x4塊。對(duì)剩下的四系數(shù)組重復(fù)同一模式。這具有"平衡" 所得的每個(gè)4x4塊中的能量總量的效果。根據(jù)我們的實(shí)驗(yàn),與現(xiàn)有解 決方案相比,該算法需要平均少3-5%的比特來表示給定的視頻序列。根據(jù)本發(fā)明,為了使用矢量分段方法來簡(jiǎn)化視頻編碼,能夠使用 圖9所示的視頻服務(wù)器102和圖10所示的視頻客戶機(jī)202。根據(jù)本發(fā) 明的編碼器242和一般的編碼器40 (圖2)之間的主要區(qū)別在于,多 路復(fù)用編碼器242包括交織分段單元48,用來以交織的方式將ABT塊 (一個(gè)4nx4m塊,其中n,m為大于或等于1的正整數(shù))分段成nxm個(gè) 塊,如圖8a-8d所示。根據(jù)本發(fā)明,在掃描單元42產(chǎn)生長(zhǎng)為N (N=16nxm)的排序系數(shù)矢量之后,交織分段單元48中的具有算法的 計(jì)算機(jī)軟件用來將該排序矢量分段成nxm個(gè)較小的矢量,每個(gè)矢量的 長(zhǎng)度為16。每個(gè)這樣的矢量通過從長(zhǎng)度為N的排序系數(shù)矢量中每nxm 個(gè)系數(shù)取一個(gè)系數(shù)而形成。因此,比特流142指示nxm個(gè)分段矢量的 上下文。同樣,在客戶機(jī)202的解碼器262中有一個(gè)矢量裝配單元66,其 具有這樣的計(jì)算機(jī)程序,該計(jì)算機(jī)程序帶有用來將nxm個(gè)分段矢量中 的系數(shù)重組成長(zhǎng)度為N的排序矢量的算法。應(yīng)當(dāng)指出,結(jié)合圖8a-10所描述的算法是更為一般原理的特定實(shí) 施例。有可能分配一個(gè)數(shù)字到長(zhǎng)度為N的矢量中的每個(gè)位置,用來表 示它與矢量中DC (或第一)項(xiàng)之間的"距離"。該值應(yīng)當(dāng)反映出在那 個(gè)位置的系數(shù)的相對(duì)重要性。例如,在圖1中,是先編碼位置1還是 位置2的選擇幾乎是任意的,因此,有可能給它們分配相同的"距離" 或"成本(cost)"值。然后,確保所有的塊擁有相似特征(即,適于CAVLC編碼器)就 是一個(gè)最小化的問題。對(duì)于每個(gè)可能的分配模式,能夠計(jì)算在每個(gè)4x4 塊中的系數(shù)的總"成本",并且能夠取出貫穿4x4塊中的方差 (variance)。使該方差最小化的分配模式將致使塊具有最相似的統(tǒng) 計(jì)特性。算術(shù)上,如果P是分配模式集合,則我們想計(jì)算P的值,以便尸 p其中c7;-var(IX,, |>線,},并且《是在笫j個(gè)分段矢量中的第i個(gè)系數(shù)的"成本"。如上所述,在此描述的分配模式是嘗試使分段的 塊之間的"成本方差"最小化的一個(gè)實(shí)例。應(yīng)當(dāng)理解,如果自適應(yīng)地 選擇分配模式,需要將關(guān)于編碼器上使用的分配模式信息發(fā)送到解碼 器??商鎿Q地,可以從在編碼圖像時(shí)所使用的其它參數(shù)中確定分配模 式。在此,編碼器和解碼器必須使用相同的分配模式,因?yàn)槿绻贿@ 樣就不能正確地解碼已編碼圖象。應(yīng)當(dāng)指出,DC系數(shù)能夠不同地編碼和分別被編碼。然而,為了確 ?,F(xiàn)有的4x4 CAVLC不變,該DC系數(shù)不會(huì)比3個(gè)最低頻率的AC值處 置得有任何不同。當(dāng)在塊中存在很少的系數(shù)時(shí)(例如,對(duì)于8x8塊,4 個(gè)4x4塊中的三個(gè)為空),分開處置DC系數(shù)最有可能帶來好處。在此 情況下,可能希望從非零值數(shù)目的預(yù)測(cè)中排除DC項(xiàng)。然而,益處通常 不顯著。在掃描中,系數(shù)位置固有的距離/成本量度可以用來確定該系數(shù)被 分配到哪個(gè)4x4塊。例如,成本模式"0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3..."能夠用于這樣的確定??商鎿Q地,可以使用諸如"0111.42..." 之類的笛卡爾距離。分配算法的效果在于以相等或近似相等的總成本 建立塊。同樣,每個(gè)塊的總成本的方差認(rèn)為是相似性的量度。在掃描 中選擇用于下一個(gè)系數(shù)的塊為具有目前為止分配給它的的系數(shù)的最低 累積成本的塊。也有可能,在Z字形掃描之前,預(yù)定的子抽樣過程用于將如圖4 所示的8x8塊子抽樣為如圖lla-lld所示的四個(gè)"交織"子塊。為了 產(chǎn)生4個(gè)長(zhǎng)度為16的排序矢量,則對(duì)那些子塊施加Z字形掃描。同樣, 結(jié)果等同于圖8a-8d所示的結(jié)果。因此,有可能提供一種圖像編碼方 法,其包括步驟1. 為圖像數(shù)據(jù)形成至少一個(gè)變換系數(shù)塊;2. 以預(yù)定的方式對(duì)該塊中的變換系數(shù)進(jìn)行子抽樣,以提供多個(gè) 變換系數(shù)子抽樣塊;3. 掃描該變換系數(shù)子抽樣塊,來提供多個(gè)變換系數(shù)子抽樣序 列,和4. 使用熵編碼器對(duì)變換系數(shù)子抽樣序列編碼。 上文中描述的本發(fā)明的方法將對(duì)應(yīng)于4x4塊中的ABT變換的不同頻率的系數(shù)分得更加均等。因此生成的4x4塊具有與CAVLC編碼器所 期望的特性統(tǒng)計(jì)相似的特性,這導(dǎo)致編碼效率增加。因此,雖然已經(jīng)參考其優(yōu)選實(shí)施例描述了本發(fā)明,但是本領(lǐng)域普 通技術(shù)人員應(yīng)當(dāng)理解,可以做出上述的以及其它各種形式上或者細(xì)節(jié) 上的改變、省略和偏離,而不脫離本發(fā)明的范圍。
權(quán)利要求
1.一種使用表示圖像的圖像數(shù)據(jù)進(jìn)行圖像編碼的方法,其中從圖像數(shù)據(jù)形成至少一個(gè)變換系數(shù)塊,并且變換系數(shù)塊被掃描以便提供位于該序列中多個(gè)位置的變換系數(shù)序列,其中該位置包括基準(zhǔn)位置,以便所述多個(gè)位置中的每個(gè)位置相對(duì)于基準(zhǔn)位置定義一個(gè)距離,所述方法的特征在于給每個(gè)距離分配一個(gè)成本值,基于該成本值將該序列中的變換系數(shù)排列成多個(gè)子序列,以及使用熵編碼器對(duì)變換系數(shù)子序列進(jìn)行編碼。
2. 根據(jù)權(quán)利要求l的方法,其中,每個(gè)子序列具有表示與所述每 個(gè)子序列中的變換系數(shù)相關(guān)聯(lián)的成本值之和的總成本,所述方法的特 征在于,所述排列適于使所述每個(gè)子序列的總成本和每個(gè)其它子序列的總 成本之間的差達(dá)到最小。
全文摘要
使用基于上下文的自適應(yīng)VLC來對(duì)圖像進(jìn)行編碼的方法和系統(tǒng),其中變換系數(shù)被劃分成具有4n×4m(其中n和m為大于或等于1的正整數(shù))維度的塊。以Z字形方式掃描每個(gè)塊以產(chǎn)生長(zhǎng)度為16n×m的排序系數(shù)矢量。在使用熵編碼器對(duì)變換系數(shù)編碼之前,以交織的方式對(duì)該排序的矢量進(jìn)行子抽樣以產(chǎn)生n×m個(gè)變換系數(shù)子抽樣序列。
文檔編號(hào)G06T9/00GK101132534SQ20071015368
公開日2008年2月27日 申請(qǐng)日期2003年8月19日 優(yōu)先權(quán)日2002年10月3日
發(fā)明者J·里奇, M·卡策維茨 申請(qǐng)人:諾基亞有限公司