圖像編碼、解碼方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字視頻壓縮編碼及解碼,具體而言,涉及一種圖像編碼、解碼方法及
目.0
【背景技術(shù)】
[0002]圖像的數(shù)字視頻信號(hào)的自然形式是圖像的序列。一幅圖像通常是由若干像素組成的矩形區(qū)域,如果一個(gè)數(shù)字視頻信號(hào)每秒有50幅圖像,那么一段30分鐘的數(shù)字視頻信號(hào)就是個(gè)由30x60x50 = 90000幅圖像組成的視頻圖像序列,有時(shí)也fg]稱為視頻序列或序列。對(duì)數(shù)字視頻信號(hào)進(jìn)行編碼就是對(duì)一幅一幅圖像進(jìn)行編碼。
[0003]最新國(guó)際視頻壓縮標(biāo)準(zhǔn)HEVC(High Efficiency Video Coding)中,對(duì)一幅圖像進(jìn)行編碼時(shí),把一幅圖像劃分成若干塊MxM像素的子圖像,稱為“編碼單元(Coding Unit,簡(jiǎn)稱為⑶)”,以⑶為基本編碼單位,對(duì)子圖像一塊一塊進(jìn)行編碼。常用的M的大小是4,8,16,32,64。因此,對(duì)一個(gè)視頻圖像序列進(jìn)行編碼就是對(duì)各幀的各個(gè)編碼單元依次進(jìn)行編碼。同樣,解碼時(shí)也是對(duì)各幀的各個(gè)編碼單元按照同樣的順序依次進(jìn)行解碼,最終重構(gòu)出整個(gè)視頻圖像序列。HEVC采用預(yù)測(cè)編碼的方式對(duì)圖像進(jìn)行編碼。首先,根據(jù)已編碼圖像信息構(gòu)造輸入視頻圖像中像素的預(yù)測(cè)值,然后對(duì)輸入視頻圖像中像素的原始值與上述預(yù)測(cè)值之間的差值進(jìn)行編碼,同時(shí)需要編碼構(gòu)造預(yù)測(cè)值所需的參數(shù)。在解碼過程中,首先根據(jù)碼流中獲得的參數(shù)和已解碼圖像信息構(gòu)造待解碼圖像中像素的預(yù)測(cè)值,然后將經(jīng)過濾波處理的上述預(yù)測(cè)值與碼流中獲取的差值的和值作為當(dāng)前待解碼圖像中像素的恢復(fù)值。需要說明的是,編碼過程本身也需要使用與解碼過程相似的方法,構(gòu)造輸入視頻圖像的本地解碼恢復(fù)值,用于構(gòu)造后續(xù)輸入視頻圖像中像素預(yù)測(cè)值的預(yù)測(cè)參考。
[0004]為適應(yīng)一幅圖像內(nèi)各部分圖像內(nèi)容與性質(zhì)的不同,有針對(duì)性地進(jìn)行最有效的編碼,一幅圖像內(nèi)各CU的大小可以是不同的,有的是8x8,有的是64x64,等等。為了使不同大小的CU能夠無縫拼接起來,一幅圖像總是先劃分成大小完全相同具有NxN像素的“最大編碼單元(Largest Coding Unit簡(jiǎn)稱IXU) ”,然后每個(gè)IXU再進(jìn)一步劃分成多個(gè)大小不一定相同的CU。例如,一幅圖像先劃分成大小完全相同的64x64像素的LCU(N = 64)。其中某個(gè)IXU由3個(gè)32x32像素的⑶和4個(gè)16x16像素的⑶構(gòu)成。而另一個(gè)IXU由2個(gè)32x32像素的⑶、3個(gè)16x16像素的⑶和20個(gè)8x8像素的⑶構(gòu)成。對(duì)一幅圖像進(jìn)行編碼,就是依次對(duì)一個(gè)一個(gè)IXU中的一個(gè)一個(gè)⑶進(jìn)行編碼。在任一時(shí)刻,正在編碼中的⑶稱為當(dāng)前編碼CU。同樣,對(duì)一幀圖像進(jìn)行解碼,也是按照同樣的順序依次對(duì)一個(gè)一個(gè)LCU中的一個(gè)一個(gè)CU進(jìn)行解碼。在任一時(shí)刻,正在解碼中的CU稱為當(dāng)前解碼CU。當(dāng)前編碼CU或當(dāng)前解碼⑶都統(tǒng)稱為當(dāng)前⑶。
[0005]—個(gè)彩色像素有3個(gè)分量(component)組成。最常用的兩種像素色彩格式(pixelcolor format)是由綠色分量、藍(lán)色分量、紅色分量組成的GBR色彩格式和由一個(gè)亮度(Iuma)分量及兩個(gè)色度(chroma)分量組成的通稱YUV色彩格式如YCbCr色彩格式。因此,對(duì)一個(gè)CU進(jìn)行編碼時(shí),可以把一個(gè)CU分成3個(gè)分量平面(G平面、B平面、R平面或Y平面、U平面、V平面),對(duì)3個(gè)分量平面分別進(jìn)行編碼;也可以把一個(gè)像素的3個(gè)分量捆綁組合成一個(gè)3元組,對(duì)由這些3元組組成的⑶整體進(jìn)行編碼。前一種像素及其分量的排列方式稱為圖像(及其CU)的平面格式(planar format),而后一種像素及其分量的排列方式稱為圖像(及其⑶)的疊包格式(packed format)。
[0006]YUV色彩格式又可根據(jù)是否對(duì)色度分量進(jìn)行下采樣再細(xì)分成若干種子格式:1個(gè)像素由I個(gè)Y分量、I個(gè)U分量、I個(gè)V分量組成的YUV4:4:4像素色彩格式;左右相鄰的2個(gè)像素由2個(gè)Y分量、I個(gè)U分量、I個(gè)V分量組成的YUV4:2:2像素色彩格式;左右上下相鄰按2x2空間位置排列的4個(gè)像素由4個(gè)Y分量、I個(gè)U分量、I個(gè)V分量組成的YUV4:2:0像素色彩格式。一個(gè)分量一般用I個(gè)8?16比特的數(shù)字來表示。YUV4:2:2像素色彩格式和YUV4:2:0像素色彩格式都是對(duì)YUV4:4:4像素色彩格式施行色度分量的下采樣得到。一個(gè)像素分量也稱為一個(gè)像素樣值(pixel sample)或簡(jiǎn)單地稱為一個(gè)樣值(sample)。
[0007]在本發(fā)明專利申請(qǐng)中,像素和像素樣值統(tǒng)稱為像素值,即“像素值”既指“像素”也指“像素樣值”。
[0008]在對(duì)任一個(gè)⑶進(jìn)行編碼或解碼時(shí),都會(huì)產(chǎn)生重構(gòu)像素值,又分為編碼或解碼過程之中產(chǎn)生的不同程度的部分重構(gòu)像素值和編碼或解碼過程全部完成后產(chǎn)生的完全重構(gòu)像素值。如果完全重構(gòu)像素值與編碼之前的原始輸入像素值有相等的數(shù)值,則所經(jīng)歷的編碼和解碼過程稱為無損編碼和解碼。如果完全重構(gòu)像素值與編碼之前的原始輸入像素值有不相等的數(shù)值,則所經(jīng)歷的編碼和解碼過程稱為有損編碼和解碼。在對(duì)一個(gè)一個(gè)CU依次進(jìn)行編碼或解碼時(shí),所產(chǎn)生的重構(gòu)像素值通常都作為歷史數(shù)據(jù)保存起來,用作后續(xù)CU編碼或解碼時(shí)的參考像素值。保存重構(gòu)像素歷史數(shù)據(jù)的存儲(chǔ)空間稱為參考像素值暫存空間,也稱為參考像素值集。參考像素值暫存空間都是有限的,只能保存一部分歷史數(shù)據(jù)。參考像素值暫存空間中的歷史數(shù)據(jù)也可以包括當(dāng)前CU的重構(gòu)像素值。
[0009]隨著以遠(yuǎn)程桌面為典型表現(xiàn)形式的新一代云計(jì)算與信息處理模式及平臺(tái)的發(fā)展和普及,多臺(tái)計(jì)算機(jī)之間、計(jì)算機(jī)主機(jī)與智能電視、智能手機(jī)、平板電腦等其他數(shù)字設(shè)備之間及各種各類數(shù)字設(shè)備之間的互聯(lián)已經(jīng)成為現(xiàn)實(shí)并日趨成為一種主流趨勢(shì)。這使得服務(wù)器端(云)到用戶端的實(shí)時(shí)屏幕傳輸成為當(dāng)前的迫切需求。由于需要傳輸?shù)钠聊灰曨l數(shù)據(jù)量巨大,對(duì)計(jì)算機(jī)屏幕圖像必須進(jìn)行高效高質(zhì)量的數(shù)據(jù)壓縮。
[0010]充分利用計(jì)算機(jī)屏幕圖像的特點(diǎn),對(duì)計(jì)算機(jī)屏幕圖像進(jìn)行超高效率的壓縮,也是最新國(guó)際視頻壓縮標(biāo)準(zhǔn)HEVC的一個(gè)主要目標(biāo)。
[0011]計(jì)算機(jī)屏幕圖像的一個(gè)顯著特點(diǎn)是同一幀圖像內(nèi)通常會(huì)有很多相似甚至完全相同的像素圖樣(Pixel pattern) 0例如,計(jì)算機(jī)屏幕圖像中常出現(xiàn)的中文或外文文字,都是由少數(shù)幾種基本筆劃所構(gòu)成,同一幀圖像內(nèi)可以找到很多相似或相同的筆劃。計(jì)算機(jī)屏幕圖像中常見的菜單、圖標(biāo)等,也具有很多相似或相同的圖樣?,F(xiàn)有的圖像和視頻壓縮技術(shù)中采用的幀內(nèi)預(yù)測(cè)(intra predict1n)方式,僅參考相鄰的像素值,無法利用一幀圖像中的相似性或相同性來提高壓縮效率。因此,HEVC工作委員會(huì)正在研究和準(zhǔn)備采納若干種匹配方式,充分發(fā)掘和利用計(jì)算機(jī)屏幕圖像中存在的相似或相同圖樣,以大幅度提高壓縮效果。這若干種匹配方式包括幀內(nèi)塊匹配(intra block matching)方式(也稱為幀內(nèi)塊復(fù)制intra block copy),微塊匹配方式、精細(xì)劃分匹配方式、串匹配(string matching)方式、微塊串匹配方式、調(diào)色板-索引匹配方式、2維保形匹配方式、4叉樹(也稱4分樹)匹配方式、任意形狀區(qū)域復(fù)制匹配方式等。不管是哪種匹配方式,都是用若干最基本的匹配關(guān)系參數(shù),例如匹配位置和匹配大小,來表示匹配關(guān)系。其中匹配位置表示與當(dāng)前編碼(或解碼)中像素值(統(tǒng)稱為匹配當(dāng)前像素值)相匹配的匹配參考像素值在由已重構(gòu)像素構(gòu)成的參考像素值集內(nèi)的什么位置,而匹配大小則用來表示匹配當(dāng)前像素值的數(shù)目。顯然,匹配當(dāng)前像素值的數(shù)目等于匹配參考像素值的數(shù)目。
[0012]匹配位置是匹配參考像素值與匹配當(dāng)前像素值之間的相對(duì)位置。在一幀圖像中,匹配參考像素值的位置既可用一個(gè)2維坐標(biāo)也可用一個(gè)線性地址來表示,匹配當(dāng)前像素值的位置也是既可用一個(gè)2維坐標(biāo)也可用一個(gè)線性地址來表示。因此,匹配位置既可用匹配參考像素值的2維坐標(biāo)與匹配當(dāng)前像素值的2維坐標(biāo)之差也可用匹配參考像素值的線性地址與匹配當(dāng)前像素值的線性地址之差,也稱為位移矢量來表示。在2維坐標(biāo)的情形,匹配位置即位移矢量用兩個(gè)匹配關(guān)系參數(shù)即兩個(gè)矢量分量如一個(gè)水平分量和一個(gè)垂直分量來表示。在線性地址的情形,匹配位置即位移矢量用一個(gè)匹配關(guān)系參數(shù)即線性地址之差來表示,通常也稱為匹配距離。
[0013]匹配大小表示具有同一匹配位置的匹配當(dāng)前像素值一共有多少。因?yàn)槠ヅ洚?dāng)前像素值的數(shù)目與匹配參考像素值的數(shù)目是相等的,匹配大小也表示了具有同一匹配位置的匹配參考像素值一共有多少。在某些匹配方式中,匹配大小是一個(gè)匹配關(guān)系參數(shù),如匹配串的長(zhǎng)度,若干種預(yù)先規(guī)定的匹配形狀和尺寸(如4x4像素值的方塊、4x8像素值的塊、8x8像素值的方塊、16x16像素值的方塊等)的編號(hào)等。在某些匹配方式中,匹配大小是幾個(gè)匹配關(guān)系參數(shù),如匹配矩形的高度和寬度這兩個(gè)匹配關(guān)系參數(shù),匹配直角梯形的高度及上底和下底寬度或者與這三者等價(jià)的三個(gè)匹配關(guān)系參數(shù),由I條水平線段組成的一個(gè)匹配區(qū)域的表示這I條水平線段各自的長(zhǎng)度的I個(gè)匹配關(guān)系參數(shù)。
[0014]—個(gè)匹配關(guān)系參數(shù)的取值范圍是一個(gè)預(yù)先規(guī)定的按一定順序排列的數(shù)的有限元素集合,最常見的是由小到大排列的若干整數(shù)的集合。如表示作為匹配位置的線性地址之差(通常稱為匹配距離)的匹配關(guān)系參數(shù)的取值范圍是I到D= 1048576,其中D是可能的匹配距離的最大值。又如表示匹配串長(zhǎng)度的匹配關(guān)系參數(shù)的取值范圍是I到L= 12288,其中L是可能的匹配串長(zhǎng)度的最大值。
[0015]兩個(gè)或三個(gè)或更多個(gè)匹配關(guān)系參數(shù)也可以經(jīng)過某些運(yùn)算合并成一個(gè)匹配關(guān)系參數(shù)。合并后的匹配關(guān)系參數(shù)有更大的取值范圍。
[0016]對(duì)匹配關(guān)系參數(shù)必須施行熵編碼來進(jìn)行數(shù)據(jù)壓縮。熵編碼的輸入是具有預(yù)先規(guī)定的取值范圍的整數(shù)。熵編碼分為兩個(gè)步驟:1)對(duì)輸入的整數(shù)施行2值化,即把整數(shù)轉(zhuǎn)換成一串比特?cái)?shù),每個(gè)比特?cái)?shù)可以取值O或I這兩個(gè)值中的一個(gè);2)對(duì)每個(gè)比特?cái)?shù)施行基于上下文的自適應(yīng)2值算術(shù)編碼。
[0017]相關(guān)技術(shù)中采用的2值化方法都有一個(gè)特性,就是取值較小的整數(shù),2值化后轉(zhuǎn)換成較短的一串比特?cái)?shù),因而熵編碼后產(chǎn)生較少的數(shù)據(jù)被寫入壓縮碼流,而取值較大的整數(shù),2值化后轉(zhuǎn)換成較長(zhǎng)的一串比特?cái)?shù),因而熵編碼后產(chǎn)生較多的數(shù)據(jù)被寫入壓縮碼流。
[0018]由于2值化方法的這個(gè)特性,一個(gè)匹配關(guān)系參數(shù),在取值范圍內(nèi)取的某個(gè)整數(shù)值的大小與該整數(shù)值在整個(gè)編碼過程中出現(xiàn)的頻度之間,如果具有隨著整數(shù)值變大其頻度變低的整體趨勢(shì)的特性,那么熵編碼就會(huì)有比較好的數(shù)據(jù)壓縮效果。反之,如果具有隨著整數(shù)值變大其頻度呈有大有小持續(xù)反復(fù)振蕩的特性,那么熵編碼的數(shù)據(jù)壓縮效果就會(huì)受到負(fù)面影響。
[0019]在不少情況下,匹配關(guān)系參數(shù)的取值范圍內(nèi)的任一個(gè)整數(shù),其在整個(gè)編碼過程中出現(xiàn)的頻度,并不總是隨著其值的增大而降低,某個(gè)特定的整數(shù)A,其出現(xiàn)的頻度p(A),可能比另