編碼和解碼圖像的方法、編碼和解碼設(shè)備、計(jì)算機(jī)程序的制作方法
【專利說明】
[0001] 本申請(qǐng)是申請(qǐng)?zhí)枮?01280021355. 8,申請(qǐng)日為2012年2月23日,題為"編碼和解 碼圖像的方法、編碼和解碼設(shè)備、計(jì)算機(jī)程序"的中國(guó)發(fā)明專利申請(qǐng)的分案申請(qǐng)。
技術(shù)領(lǐng)域
[0002] 本發(fā)明一般屬于圖像處理的領(lǐng)域,更準(zhǔn)確地屬于數(shù)字圖像以及數(shù)字圖像序列的編 碼和解碼。
[0003] 本發(fā)明由此尤其可被用于在目前的視頻編碼器(MPEG、H. 264等)或未來的視頻編 碼器(ITU-T/VCEG(H. 265)或IS0/MPEG(HVC))中實(shí)現(xiàn)的視頻編碼。
【背景技術(shù)】
[0004] 目前的視頻編碼器(MPEG、H264等)使用視頻序列的按塊(block-wise)表示。圖 像被切分為宏塊,每個(gè)宏塊自身被切分為塊,并且每個(gè)塊或宏塊通過圖像內(nèi)或圖像間預(yù)測(cè) 來編碼。于是,特定的圖像通過空間預(yù)測(cè)(幀內(nèi)預(yù)測(cè))來編碼,而其他圖像在本領(lǐng)域技術(shù)人 員已知的運(yùn)動(dòng)補(bǔ)償?shù)妮o助下關(guān)于一個(gè)或多個(gè)編碼-解碼參考圖像通過時(shí)間預(yù)測(cè)(幀間預(yù) 測(cè))來編碼。此外,對(duì)于每個(gè)塊,可以對(duì)殘留塊進(jìn)行編碼,該殘留塊與原始?jí)K減去預(yù)測(cè)相對(duì) 應(yīng)。在可選的變換之后,該塊的系數(shù)可被量化,然后被熵編碼器編碼。
[0005] 幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)需要之前已編碼和解碼的特定塊可用,從而在解碼器或編碼 器中被用于預(yù)測(cè)當(dāng)前塊。圖1A表示這樣的預(yù)測(cè)編碼的示意性示例,其中,圖像IN被分為塊, 該圖像的當(dāng)前塊MBi經(jīng)受與例如由陰影箭頭表示的之前編碼和解碼的預(yù)定數(shù)量的三個(gè)塊 MBr:、MBr2、MBrjg關(guān)的預(yù)測(cè)編碼。上述三個(gè)塊特別包括緊鄰地位于當(dāng)前塊MBi的左邊的塊 MBri、以及分別緊鄰地位于當(dāng)前塊MBi的上方和右上方的兩個(gè)塊MBr2和MBr3。
[0006] 這里更為特別關(guān)心的是熵編碼器。熵編碼器按照到達(dá)的順序來對(duì)信息編碼。典型 地實(shí)現(xiàn)"光柵掃描"類型的塊的逐行遍歷,如圖1A由參考(標(biāo)號(hào))PRS所示,從圖像的左上 角的塊開始。對(duì)于每個(gè)塊,表示該塊所需的各個(gè)信息項(xiàng)(塊類型、預(yù)測(cè)模式、殘留系數(shù)等) 被順序分發(fā)給熵編碼器。
[0007] 已知一種足夠復(fù)雜的有效算術(shù)編碼器,被稱為"CABAC"( "上下文適應(yīng)二進(jìn)制算術(shù) 編碼器"),其被引入到AVC壓縮標(biāo)準(zhǔn)(也被稱為IS0-MPEG4第10部分和ITU-TH. 264)。
[0008] 熵編碼器實(shí)現(xiàn)各種構(gòu)思:
[0009] -算術(shù)編碼:例如最初在文檔J.RissanenandG.G.LangdonJr,"Universal modelingandcoding,',IEEETrans.Inform.Theory,vol.IT-27,pp. 12 - 23,Jan. 1981 ^ 描述的編碼器使用該符號(hào)的出現(xiàn)概率來對(duì)符號(hào)進(jìn)行編碼;
[0010] -上下文適應(yīng):這包括適應(yīng)要編碼的符號(hào)的出現(xiàn)概率。一方面,實(shí)現(xiàn)快速獲悉。另 一方面,根據(jù)之前編碼的信息的狀態(tài),特定的上下文被用于編碼。每個(gè)上下文存在相對(duì)應(yīng)的 固有的符號(hào)出現(xiàn)概率。例如,上下文根據(jù)給定的配置對(duì)應(yīng)于編碼符號(hào)的類型(殘留的系數(shù)、 編碼模式的信令等的表示),或者對(duì)應(yīng)于鄰居的狀態(tài)(例如從鄰居選擇的"幀內(nèi)"模式的數(shù) 量等);
[0011] -二進(jìn)制化:要編碼的符號(hào)被轉(zhuǎn)換為比特串的形式。隨后,該各個(gè)比特被相繼分發(fā) 給二進(jìn)制熵編碼器。
[0012] 于是,該熵編碼器針對(duì)使用的每個(gè)上下文來實(shí)現(xiàn)一種系統(tǒng),用于快速獲悉與之前 針對(duì)考慮的上下文來編碼的符號(hào)相關(guān)的概率。該獲悉基于這些符號(hào)的編碼順序。典型地, 如上所述根據(jù)"光柵掃描"類型的順序來遍歷圖像。
[0013] 在對(duì)可等于0或1的給定符號(hào)b進(jìn)行編碼時(shí),以下列方式針對(duì)當(dāng)前塊MBi來更新 該符號(hào)的出現(xiàn)概率P,的獲悉:
[0014]
[0015] 其中,a是預(yù)定值,例如0.95,且Pii是在該符號(hào)最后出現(xiàn)時(shí)所計(jì)算的符號(hào)出現(xiàn)概 率。
[0016] 圖1A表示這樣的熵編碼的示意性示例,其中,圖像1滿當(dāng)前塊MB顏熵編碼。在 當(dāng)前塊熵編碼開始時(shí),所使用的符號(hào)出現(xiàn)概率是在之前編碼和解碼的塊的編碼之后 獲得的符號(hào)出現(xiàn)概率,根據(jù)上述"光柵掃描"類型的塊的逐行遍歷,該在之前編碼和解碼的 塊緊鄰在當(dāng)前塊MBi的前面。僅為了圖示清楚,圖1A中通過細(xì)線箭頭來表示針對(duì)特定的塊 的基于逐塊依賴性的獲悉。
[0017] 該類型的熵編碼的缺陷在于如下事實(shí),在對(duì)位于行開始的符號(hào)進(jìn)行編碼時(shí),使用 的概率主要對(duì)應(yīng)于位于前一行的末尾的符號(hào)所觀察到的概率,與塊的"光柵掃描"遍歷相 關(guān)?,F(xiàn)在,由于符號(hào)概率的可能空間變化(例如,對(duì)于與運(yùn)動(dòng)信息項(xiàng)相關(guān)的符號(hào),位于圖像 右側(cè)部分的運(yùn)動(dòng)與在左側(cè)部分觀察到的可以不同,且從而對(duì)于由此產(chǎn)生的局部概率來說是 類似的),可以觀察到概率的局部適應(yīng)性的缺失,這在編碼時(shí)具有引起有效性損失的風(fēng)險(xiǎn)。
[0018] 在互聯(lián)網(wǎng)地址http://wftp3.itu.int/av-arch/ictvc-site/2010 04A Dresden/TCTVC-A114-AnnexA.doc(2011 年 2 月 8 日)提供的文檔"AnnexA:CDCMVideo CodecDecoderSpecification"中描述了一種編碼方法,其緩解了上述缺陷。如圖IB所 示,在以上文檔中描述的編碼方法包括:
[0019] _將圖像1#刀分為多個(gè)塊的步驟,
[0020] -結(jié)合例如由陰影箭頭表示的之前編碼和解碼的預(yù)定數(shù)量的三個(gè)塊MBri、MBr2、 MBr3對(duì)該圖像的當(dāng)前塊MBi進(jìn)行預(yù)測(cè)編碼的步驟。上述三個(gè)塊特別包括緊鄰地位于當(dāng)前 塊MBi的左邊的塊MBri、以及分別緊鄰地位于當(dāng)前塊MBi的上方和右上方的兩個(gè)塊MBr2和 MBr3?
[0021] _對(duì)圖像^的塊進(jìn)行熵編碼的步驟,據(jù)此,在這些塊可用時(shí),每塊使用分別針對(duì)緊 鄰地位于當(dāng)前塊上方的已編碼和解碼的塊以及緊鄰地位于當(dāng)前塊的左側(cè)的已編碼和解碼 的塊來計(jì)算的符號(hào)出現(xiàn)概率。為了使后者更為清楚,在圖1B中通過細(xì)線箭頭來部分表示該 符號(hào)出現(xiàn)概率的使用。
[0022] 該熵編碼的好處在于,它利用了由當(dāng)前塊的緊鄰環(huán)境產(chǎn)生的概率,由此使得可能 獲得更高的編碼性能。此外,使用的編碼技術(shù)使得可能對(duì)預(yù)定數(shù)量的成對(duì)的相鄰塊的子集 并行編碼。在圖1B展示的例子中,三個(gè)子集SE1、SE2和SE3被并行編碼,在該例子中每個(gè) 子集由虛線表示的一行塊構(gòu)成。當(dāng)然,該編碼需要分別位于當(dāng)前塊的上方和右上方的塊可 用。
[0023] 該并行編碼技術(shù)的缺陷在于,為了允許訪問針對(duì)緊鄰地位于當(dāng)前塊上方的塊來計(jì) 算的符號(hào)出現(xiàn)概率,需要存儲(chǔ)與一行塊關(guān)聯(lián)的一些概率。如果例如在圖1B中考慮第二行 SE2的塊,通過使用針對(duì)之前的第一行SE1的第一塊來計(jì)算的符號(hào)出現(xiàn)概率,該行的第一塊 被熵編碼。在完成第二行的第一塊的編碼時(shí),出現(xiàn)概率的值VI的狀態(tài)被存儲(chǔ)在緩沖存儲(chǔ)器 MT中。隨后,通過使用同時(shí)針對(duì)第一行SE1的第二塊和第二行SE2的第一塊來計(jì)算的符號(hào) 出現(xiàn)概率,第二行SE2的第二塊被熵編碼。在完成第二行的第二塊的編碼時(shí),出現(xiàn)概率的值 V2的狀態(tài)被存儲(chǔ)在緩沖存儲(chǔ)器MT中。該過程持續(xù),直到第二行SE的最后一塊。由于概率 的數(shù)量非常大(存在與語(yǔ)法元素的數(shù)量和關(guān)聯(lián)上下文的數(shù)量的組合一樣多的概率),整一 行的這些概率的存儲(chǔ)在存儲(chǔ)器資源方面非常昂貴。
【發(fā)明內(nèi)容】
[0024] 本發(fā)明的一個(gè)目標(biāo)是彌補(bǔ)上述現(xiàn)有技術(shù)的缺陷。
[0025] 為此,本發(fā)明的主題涉及一種對(duì)至少一個(gè)圖像進(jìn)行編碼的方法,包括下列步驟:
[0026] -將圖像劃分為多個(gè)塊,
[0027] -將所述塊分組為預(yù)定數(shù)量的塊的子集,
[0028] _對(duì)所述塊的子集中的每個(gè)并行編碼,所考慮的子集中的塊是根據(jù)遍歷的預(yù)定順 序來編碼的,針對(duì)所考慮的子集中的當(dāng)前塊,所述編碼步驟包括下列子步驟:
[0029] ?關(guān)于至少一個(gè)之前編碼和解碼的塊對(duì)所述當(dāng)前塊進(jìn)行預(yù)測(cè)編碼,
[0030] ?通過獲悉至少一個(gè)之前的符號(hào)出現(xiàn)概率對(duì)當(dāng)前塊進(jìn)行熵編碼,
[0031] 根據(jù)本發(fā)明的方法值得關(guān)注之處在于:
[0032] -在當(dāng)前塊是所考慮的子集中要編碼的第一塊的情形下,符號(hào)出現(xiàn)概率是針對(duì)至 少一個(gè)其他子集中的編碼和解碼的預(yù)定塊來計(jì)算的符號(hào)出現(xiàn)概率,
[0033] _在當(dāng)前塊是所考慮的子集中除第一塊以外的塊的情形下,符號(hào)出現(xiàn)概率是針對(duì) 屬于相同子集的至少一個(gè)已編碼和解碼的塊來計(jì)算的符號(hào)出現(xiàn)概率。
[0034] 該布置使得可能在編碼器的緩沖存儲(chǔ)器中存儲(chǔ)較少數(shù)量的符號(hào)出現(xiàn)概率,因?yàn)槌?了塊的子集的第一塊之外的當(dāng)前塊的熵編碼不再必定需要使用關(guān)于之前已編碼和解碼的 塊所計(jì)算的符號(hào)出現(xiàn)概率,該之前已編碼和解碼的塊位于另一子集中并位于當(dāng)前塊上方。
[0035] 該布置還使得可能保持現(xiàn)有的壓縮性能,因?yàn)楫?dāng)前塊的熵編碼使用針對(duì)當(dāng)前塊所 屬的子集中的另一個(gè)之前編碼和解碼的塊來計(jì)算的符號(hào)出現(xiàn)概率,并且最終已經(jīng)通過更新 概率來實(shí)現(xiàn)獲悉,從而后者符合視頻信號(hào)的統(tǒng)計(jì)。
[0036] 在所考慮的塊的子集中的第一當(dāng)前塊熵編碼期間使用針對(duì)所述其他子集的第一 塊來計(jì)算的符號(hào)出現(xiàn)概率的主要好處在于,通過在編碼器的緩沖存儲(chǔ)器中僅存儲(chǔ)所述符號(hào) 出現(xiàn)概率的更新來節(jié)省該緩沖存儲(chǔ)器,而不用考慮所述其他子集的其他連續(xù)塊所獲悉的符 號(hào)出現(xiàn)概率。
[0037] 在所考慮的塊的子集的第一當(dāng)前塊的熵編碼期間使用針對(duì)所述其他子集中除第 一塊以外的塊(例如第二塊)來計(jì)算的符號(hào)出現(xiàn)概率的主要好處在于,獲得對(duì)符號(hào)出現(xiàn)概 率的更精確且因此更好的獲悉,由此帶來更好的視頻壓縮性能。
[0038] 在特定的實(shí)施例