一種結(jié)合塊匹配和串匹配的圖像壓縮方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)字視頻壓縮編碼及解碼系統(tǒng),特別是計算機(jī)屏幕圖像和視頻的編碼及解碼的方法和裝置。
【背景技術(shù)】
[0002]隨著以遠(yuǎn)程桌面為典型表現(xiàn)形式的新一代云計算與信息處理模式及平臺的發(fā)展和普及,多臺計算機(jī)之間、計算機(jī)主機(jī)與智能電視、智能手機(jī)、平板電腦等其他數(shù)字設(shè)備之間及各種各類數(shù)字設(shè)備之間的互聯(lián)已經(jīng)成為現(xiàn)實并日趨成為一種主流趨勢。這使得服務(wù)器端(云)到用戶端的實時屏幕傳輸成為當(dāng)前的迫切需求。由于需要傳輸?shù)钠聊灰曨l數(shù)據(jù)量很大,以平板電腦2048x1536像素分辨率且60幀/秒刷新率的24位真彩色屏幕圖像為例,需要傳輸?shù)臄?shù)據(jù)達(dá)每秒2048x1536x60x24=4320兆比特,如此多的數(shù)據(jù)要想在現(xiàn)實的網(wǎng)絡(luò)條件下實現(xiàn)實時傳輸是不可能的,因此對于計算機(jī)屏幕圖像的有效的數(shù)據(jù)壓縮必不可少。
[0003]充分利用計算機(jī)屏幕圖像的特點,對計算機(jī)屏幕圖像進(jìn)行超高效率的壓縮,也是最新國際視頻壓縮標(biāo)準(zhǔn)HEVC (High Efficiency Video Coding)的一個主要目標(biāo)。
[0004]計算機(jī)屏幕圖像的一個顯著特點是同一幀圖像內(nèi)通常會有很多相似甚至完全相同的像素圖樣(pixel pattern)。例如,計算機(jī)屏幕圖像中常出現(xiàn)的中文或外文文字,都是由少數(shù)幾種基本筆劃所構(gòu)成,同一幀圖像內(nèi)可以找到很多相似或相同的筆劃。計算機(jī)屏幕圖像中常見的菜單、圖標(biāo)等,也具有很多相似或相同的圖樣?,F(xiàn)有的圖像和視頻壓縮技術(shù)中采用的幀內(nèi)預(yù)測(intra predict1n)方式,僅參考相鄰的像素樣值,無法利用一幀圖像中的相似性或相同性來提高壓縮效率?,F(xiàn)有技術(shù)中的巾貞內(nèi)運動補(bǔ)償(intra mot1ncompensat1n)方式也稱為巾貞內(nèi)塊復(fù)制(intra block copy)方式,用幾種固定大小(如4x4,8x8,16x16, 32x32,64x64像素)的塊來進(jìn)行巾貞內(nèi)塊匹配(intra block matching)編碼,也不能找到各種不同大小和形狀的匹配。而另一種現(xiàn)有技術(shù)中的串匹配(string matching)方式,雖然能有效找到各種不同大小和形狀的匹配,但卻存在復(fù)雜度、計算量、存儲器讀寫帶寬都較大等問題。因此,必須尋求新的編碼工具,既能充分發(fā)掘和利用計算機(jī)屏幕圖像中存在的相似或相同圖樣,以大幅度提高壓縮效果,又把復(fù)雜度、計算量、存儲器讀寫帶寬等都控制在較小的范圍內(nèi)。
[0005]屏幕圖像的數(shù)字視頻信號的自然形式是圖像的序列。一幅圖像通常是由若干像素組成的矩形區(qū)域,如果一個數(shù)字視頻信號每秒有50幅圖像,那么一段30分鐘的數(shù)字視頻信號就是個由30x60x50 = 90000幅圖像組成的視頻圖像序列,有時也簡稱為視頻序列或序列。對數(shù)字視頻信號進(jìn)行編碼就是對一幅一幅圖像進(jìn)行編碼。
[0006]最新國際視頻壓縮標(biāo)準(zhǔn)HEVC中,對一幅圖像進(jìn)行編碼時,把一幅圖像劃分成若干塊MxM像素的子圖像,稱為“編碼單元(Coding Unit簡稱⑶)”,以⑶為基本編碼單位,對子圖像一塊一塊進(jìn)行編碼。常用的M的大小是4,8,16,32,64。因此,對一個視頻圖像序列進(jìn)行編碼就是對各個編碼單元依次進(jìn)行編碼。同樣,解碼時也是對各個編碼單元依次進(jìn)行解碼,最終重構(gòu)出整個視頻圖像序列。
[0007]為適應(yīng)一幅圖像內(nèi)各部分圖像內(nèi)容與性質(zhì)的不同,有針對性地進(jìn)行最有效的編碼,一幅圖像內(nèi)各CU的大小可以是不同的,有的是8x8,有的是64x64,等等。為了使不同大小的CU能夠無縫拼接起來,一幅圖像總是先劃分成大小完全相同具有AW像素的“最大編碼單元(Largest Coding Unit簡稱IXU)”,然后每個IXU再進(jìn)一步劃分成多個大小不一定相同的⑶。例如,一幅圖像先劃分成大小完全相同的64x64像素的IXU GV= 64)。其中某個IXU由3個32x32像素的⑶和4個16x16像素的⑶構(gòu)成。而另一個IXU由2個32x32像素的⑶、3個16x16像素的⑶和20個8x8像素的⑶構(gòu)成。對一幅圖像進(jìn)行編碼,就是依次對一個一個⑶進(jìn)行編碼。
[0008]—個彩色像素有3個分量(component)組成。最常用的兩種像素色彩格式(pixelcolor format)是由綠色分量、藍(lán)色分量、紅色分量組成的GBR色彩格式和由一個亮度(luma)分量及兩個色度(chroma)分量組成的YUV色彩格式也稱YCbCr色彩格式。因此,對一個⑶進(jìn)行編碼時,可以把一個⑶分成3個分量平面(G平面、B平面、R平面或Y平面、U平面、V平面),對3個分量平面分別進(jìn)行編碼;也可以把一個像素的3個分量捆綁組合成一個3元組,對由這些3元組組成的⑶整體進(jìn)行編碼。前一種像素及其分量的排列方式稱為圖像(及其⑶)的平面格式(planar format),而后一種像素及其分量的排列方式稱為圖像(及其⑶)的疊包格式(packed format)。
[0009]YUV色彩格式又可根據(jù)是否對色度分量進(jìn)行下采樣再細(xì)分成若干種子格式:1個像素由I個Y分量、I個U分量、I個V分量組成的YUV4:4:4像素色彩格式;左右相鄰的2個像素由2個Y分量、I個U分量、I個V分量組成的YUV4:2:2像素色彩格式;左右上下相鄰按2x2空間位置排列的4個像素由4個Y分量、I個U分量、I個V分量組成的YUV4:2:0像素色彩格式。一個分量一般用I個8?16比特的數(shù)字來表示。YUV4:2:2像素色彩格式和YUV4:2:0像素色彩格式都是對YUV4:4:4像素色彩格式施行色度分量的下采樣得到。一個像素分量也稱為一個像素樣值(pixel sample)或簡單地稱為一個樣值(sample)。
[0010]巾貞內(nèi)塊匹配(intrablock matching,也稱巾貞內(nèi)運動補(bǔ)償intra mot1ncompensat1n或稱巾貞內(nèi)塊復(fù)制intra block copy)編碼就是在對一個⑶進(jìn)行編碼時,在同一幀內(nèi)的已重構(gòu)參考像素樣值集之中的某個預(yù)定的搜索范圍(search range)內(nèi)搜索與所述CU (即被匹配塊)之間匹配誤差最小的一個匹配塊(稱為最優(yōu)匹配塊),然后把被匹配塊與最優(yōu)匹配塊之間的相對位置(稱為移動矢量即mot1n vector簡稱MV)寫入視頻壓縮碼流中。
[0011]幀內(nèi)塊匹配解碼就是在對一個CU進(jìn)行解碼時,根據(jù)從視頻壓縮碼流中解析出來的一個MV,來確定同一幀內(nèi)的已重構(gòu)參考像素樣值集之中的匹配塊的位置,然后把所述匹配塊復(fù)制和粘貼到所述⑶(即被匹配塊)的位置。
[0012]巾貞內(nèi)串匹配(intrastring matching)編碼就是在對一個⑶進(jìn)行編碼時,在同一幀內(nèi)的已重構(gòu)參考像素樣值集之中的某個預(yù)定的搜索范圍(search range)內(nèi)搜索得到一個或多個最優(yōu)的可變長度的像素樣值匹配串,每個匹配串用一