使用動態(tài)排列重組的參考像素樣值集的圖像壓縮方法
【專利說明】使用動態(tài)排列重組的參考像素樣值集的圖像壓縮方法
[0001]
技術領域
[0002]本發(fā)明涉及一種數(shù)字視頻壓縮編碼及解碼系統(tǒng),特別是計算機屏幕圖像和視頻的編碼及解碼的方法。
[0003]
【背景技術】
[0004]圖像的數(shù)字視頻信號的自然形式是圖像的序列。一幀圖像通常是由若干像素組成的矩形區(qū)域,而數(shù)字視頻信號就是由幾十幀至成千上萬幀圖像組成的視頻圖像序列,有時也簡稱為視頻序列或序列。對數(shù)字視頻信號進行編碼就是按照一定順序對一幀一幀圖像進行編碼。在任一時刻,正在編碼中的那一幀稱為當前編碼幀。同樣,對壓縮的數(shù)字視頻信號的視頻碼流進行解碼就是按照同樣順序對一幀一幀圖像的視頻碼流進行解碼。在任一時亥IJ,正在解碼中的那一幀稱為當前解碼幀。當前編碼幀或當前解碼幀都通常為當前幀。
[0005]在幾乎所有視頻圖像編碼的國際標準如MPEG-1/2/4,H.264/AVC以及最新國際視頻壓縮標準HEVC (High Efficiency Video Coding)中,對一巾貞圖像進行編碼(以及相應的解碼)時,把一幀圖像劃分成若干塊MxM像素的子圖像,稱為“編碼單元(Coding Unit簡稱⑶)”,以⑶為基本編碼單位,對子圖像一塊一塊進行編碼。常用的M的大小是8,16,32,64。因此,對一個視頻圖像序列進行編碼就是對各幀的各個編碼單元依次進行編碼。同樣,解碼時也是對各幀的各個編碼單元按照同樣的順序依次進行解碼,最終重構出整個視頻圖像序列。
[0006]為適應一幀圖像內各部分圖像內容與性質的不同,有針對性地進行最有效的編碼,一幀圖像內各CU的大小可以是不同的,有的是8x8,有的是64x64,等等。為了使不同大小的CU能夠無縫拼接起來,一幀圖像總是先劃分成大小完全相同具有NxN像素的“最大編碼單元(Largest Coding Unit簡稱IXU)”,然后每個IXU再進一步劃分成樹狀結構的多個大小不一定相同的⑶。因此,IXU也稱為“編碼樹單元(Coding Tree Unit簡稱CTU)”。與CTU同樣大小的⑶稱為深度D為O (D=O)的⑶。把一個D=O的⑶四等分得到的四分之一大小的⑶稱為深度D為I (D=I)的⑶。把一個D=I的⑶再四等分得到的大小更小的⑶稱為深度D為2 (D=2)的CU。把一個D=2的CU再四等分得到的大小更小的CU稱為深度D為3 (D=3)的⑶。把一個D=3的⑶再四等分得到的大小更小的⑶稱為深度D為4 (D=4)的⑶。例如,一幀圖像先劃分成大小完全相同的64x64像素的IXU (N = 64)。一個IXU可以如圖1所示由2個32x32像素的D=I的⑶(圖1中編號為O和15的⑶)、6個16x16像素的D=2的⑶(圖1中編號為1、2、3、4、9和10的⑶)和8個8x8像素的D=3的⑶(圖1中編號為5、6、7、8、11、12、13和14的⑶)構成。這樣16個成樹狀結構的⑶構成一個CTU。一個IXU也可以如圖2所示由3個32x32像素的D=I的⑶(圖2中編號為0、5和6的⑶)和4個16x16像素的D=2的⑶(圖2中編號為1、2、3和4的⑶)構成,這樣7個成樹狀結構的⑶也構成一個CTU。對一幀圖像進行編碼,就是依次對一個一個CTU中的一個一個⑶進行編碼。在任一時刻,正在編碼中的⑶稱為當前編碼⑶。對一幀圖像進行解碼,也是按照同樣的順序依次對一個一個CTU中的一個一個CU進行解碼。在任一時刻,正在解碼中的⑶稱為當前解碼⑶。當前編碼⑶或當前解碼⑶都通常為當前⑶。
[0007]一個CTU內的所有⑶,都有一個深度D和一個序號。如圖3所示,深度D=O的⑶只有一個,其序號為O。如圖4所示,深度D=I的⑶有4個,其序號為0~3。如圖5所示,深度D=2的⑶有16個,其序號為0~15。如圖6所示,深度D=3的⑶有64個,其序號為0~63。如圖7所示,深度D=4的⑶有256個,其序號為0~255。
[0008]更一般地來說,圖3~7也表示了對CTU的樹狀分割。圖3是對CTU的深度D=O的分割,只有一個分割,其序號為O。圖4是對CTU的深度D=I的分割,共有4個分割,其序號為0~3。圖5是對CTU的深度D=2的分割,共有16個分割,其序號為0~15。圖6是對CTU的深度D=3的分割,共有64個分割,其序號為0~63。圖7是對CTU的深度D=4的分割,共有256個分割,其序號為0~255。
[0009]在以MPEG-1/2/4,H.264/AVC以及HEVC等為代表的現(xiàn)有技術中,為了提高編碼效率,通常還將一個CU進一步劃分成更小的子區(qū)域。所述子區(qū)域包括但不限于:預測單元(ro),變換單元(TU),不對稱劃分(AMP)的區(qū)域,宏塊,塊,微塊,條(寬度或高度為一個像素或一個像素分量的區(qū)域),可變大小的矩形區(qū)域,可變大小的像素串(段)或像素分量串(段)或像素索引串(段)。對一個CU進行編碼(以及相應的解碼)就是對一個一個子區(qū)域進行編碼(以及相應的解碼)。在編碼中,子區(qū)域稱為編碼子區(qū)域,而在解碼中,子區(qū)域稱為解碼子區(qū)域。編碼子區(qū)域和解碼子區(qū)域統(tǒng)稱為編解碼子區(qū)域。在現(xiàn)有技術中,所述子區(qū)域(特別是預測單元,變換單元,不對稱劃分的區(qū)域,宏塊,塊,微塊,條的情形)常稱為“塊”。所以,編碼子區(qū)域和解碼子區(qū)域在很多情況下常分別稱為編碼塊和解碼塊,統(tǒng)稱為編解碼塊。
[0010]—個彩色像素有3個分量(component)組成。最常用的兩種像素色彩格式(pixelcolor format)是由綠色分量、藍色分量、紅色分量組成的GBR色彩格式和由一個亮度(luma)分量及兩個色度(chroma)分量組成的通稱YUV色彩格式如YCbCr色彩格式。因此,對一個CU進行編碼時,可以把一個CU分成3個分量平面(G平面、B平面、R平面或Y平面、U平面、V平面),對3個分量平面分別進行編碼;也可以把一個像素的3個分量捆綁組合成一個3元組,對由這些3元組組成的⑶整體進行編碼。前一種像素及其分量的排列方式稱為圖像(及其⑶)的平面格式(planar format),而后一種像素及其分量的排列方式稱為圖像(及其⑶)的疊包格式(packed format)。
[0011]以像素的GBR 色彩格式 p[x] [y] = {g[x] [y], b[x] [y], r [x] [y]}為例,一種平面格式的排列方式是先排列寬度為W個像素高度為H個像素的一幀圖像(或者一個CU)的所有WxH個G分量,然后排列所有WxH個B分量,最后排列所有WxH個R分量:
g[l] [l],g[2] [I],...,g[W_l] [l],g[ff] [I], g[l] [2],g[2] [2],...,g[W_l] [2],g[ff] [2],
g[l] [H],g[2] [H],...,g[W_l] [H],g[ff] [H], b[l] [l],b[2] [I],...,b[W-l] [l],b[ff] [I],b [I] [2],b [2] [2],…,b [ff-1] [2],b [ff] [2],
b [I] [Η],b [2] [H],…,b [ff-1] [Η],b [ff] [Η], r[l] [l],r[2] [I], - ,r[ff-l] [l],r[ff] [I], r[l] [2],r[2] [2],…,r[ff-1] [2],r[ff] [2],
r[l] [H],r[2] [H], - ,r[ff-l] [H],r[ff] [H]。
[0012]而一種疊包格式的排列方式是先排列第一個像素的G分量,然后排列其B分量和R分量,接著排列第二個像素的G分量、B分量和R分量,等等,最后排列最后一個(第WxH個)像素的G分量、B分量和R分量:
g[l] [l],b[l] [l],r[l] [I], g[2] [l],b[2] [l],r[2] [I],............,g[ff] [l],b[ff]
[1],r[ff][I],
g[l] [2],b[l] [2],r[l] [2], g[2] [2],b[2] [2],r[2] [2],............,g[ff] [2],b[ff]
[2],r[ff][2],
g[l] [H],b[l] [H],r[l] [H], g[2] [H],b [2] [H],r [2] [H],.........,g[ff] [H],b[ff]
[H],r[ff] [H]。
[0013]這種疊包格式的排列方式也可以簡化地表示為: p[l] [l],p[2] [I],……,P[ff-ι] [l],p[ff] [I],
P [I] [2],P [2] [2],……,P [ff-1] [2],P [ff] [2],
P [I] [η], P [2] [Η],……,P [ff-1] [Η],p [ff] [H]。
[0014]除了以上的平面格式的排列方式和疊包格式的排列方式外,按照三個分量的不同順序,還可以有其他多種平面格式的排列方式和疊包格式的排列方式。
[0015]YUV色彩格式又可根據(jù)是否對色度分量進行下采樣再細分成若干種子格式: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)。一個樣值可以是一個8比特的數(shù)即一個樣值占用一個字節(jié)。一個樣值也可以是一個10比特的數(shù)或一個12比特的數(shù)或一個14比特的數(shù)或一個16比特的數(shù)。
[0016]在對任一個⑶進行編碼或解碼時,都會產生重構像素,又分為編碼或解碼過程之中產生的不同程度的部分重構像素和編碼或解碼過程全部完成后產生的完全重構像素。如果完全重構像素樣值與編碼之前的原始輸入像素樣值有相等的數(shù)值,則所經歷的編碼和解碼過程稱為無損編碼和解碼。如果完全重構像素樣值與編碼之前的原始輸入像素樣值有不相等的數(shù)值,則所經歷的編碼和解碼過程稱為有損編碼和解碼。在對一個一個CU依次進行編碼或解碼時,所產生的重構像素樣值通常都作為歷史數(shù)據(jù)保存起來,用作后續(xù)CU編碼或解碼時的參考像素樣值。保存重構像素歷史數(shù)據(jù)作為參考像素樣值的存儲空間稱為參考像素樣值存儲空間或參考像素樣值集或簡稱可參考區(qū)域。參考像素樣值存