[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

TWI407797B - 幀內預測方法及其裝置 - Google Patents

幀內預測方法及其裝置 Download PDF

Info

Publication number
TWI407797B
TWI407797B TW98110238A TW98110238A TWI407797B TW I407797 B TWI407797 B TW I407797B TW 98110238 A TW98110238 A TW 98110238A TW 98110238 A TW98110238 A TW 98110238A TW I407797 B TWI407797 B TW I407797B
Authority
TW
Taiwan
Prior art keywords
unit
mode
output
selection control
intra prediction
Prior art date
Application number
TW98110238A
Other languages
English (en)
Other versions
TW201036448A (en
Inventor
xin-yang Yu
Hussain Zahid
Wang Wei
Jiang-Ming Xu
Min-Jie Huang
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Priority to TW98110238A priority Critical patent/TWI407797B/zh
Publication of TW201036448A publication Critical patent/TW201036448A/zh
Application granted granted Critical
Publication of TWI407797B publication Critical patent/TWI407797B/zh

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

幀內預測方法及其裝置
本發明是有關於一種視訊(video)處理,且特別是有關於可以實現各種視訊幀內預測演算法的一種幀內預測方法及其裝置。
幀內預測是最近的視訊編解碼標準H.264與AVS所採用的一種技術。幀內預測技術是用被預測塊周圍的像素值來預測該被預測塊內的各個像素值,因此它的出現提高了編碼效率。一般而言,在實現H.264或AVS的高解析(1920×1088)應用中,對於幀內預測這種技術,一般都需要專門的硬體加速電路來實現之。
以H.264視訊編解碼標準為例,其幀內預測分為亮度預測和色度預測。亮度預測依據被預測塊的大小分為4×4、8×8、16×16三類,其中4×4包括9種預測模式,8×8亦包括9種預測模式,而16×16則包括4種預測模式。4×4的9種預測模式的預測原理相似於8×8的9種預測模式,不同的是8×8的預測模式會用到更多的周圍像素值。4×4的預測模式可以一次預測16個像素,且8×8的預測模式可以一次預測更多個(64個)像素。另外,H.264視訊編解碼標準的幀內預測技術中,色度預測是基於4×4被預測塊所進行的,其有4種預測模式。對於AVS視訊編解碼標準而言,其被預測塊的大小只有8×8一類,其中亮度預測有5種模式,而色度預測有4種模式。
在實現H.264或AVS的高解析應用中,先前技術是使用專門的電路來實現相對應的幀內預測模式。例如,先前技術需要9種不同的運算電路來各自實現H.264標準中4×4的9種預測模式。因此,若要實現H.264標準的所有預測模式,則至少要配置22種不同的運算電路。若要同時支援H.264標準與AVS標準,則可能要配置31種不同的運算電路。先前技術將這些演算法實現在硬體電路上,需要耗費很多的硬體資源,有些先前技術甚至不能達到即時解碼的要求。
本發明提供一種幀內預測方法及其裝置,可以實現各種視訊幀內預測演算法。在實現各演算法功能的基礎上,本發明更可以大量節省硬體資源。
本發明提出一種幀內預測裝置,包括輸入資料單元、選擇控制單元、輸入資料選擇單元、處理單元以及輸出資料選擇單元。輸入資料單元提供被預測塊的部份或全部周圍像素的像素值。選擇控制單元提供輸入選擇控制信號、運算參數信號、以及輸出選擇控制信號。輸入資料選擇單元耦接至輸入資料單元與選擇控制單元。輸入資料選擇單元依據輸入選擇控制信號而選擇所述像素值。處理單元耦接至輸入資料選擇單元。處理單元依據運算參數信號而運算輸入資料選擇單元所選擇的像素值,以產生多個運算結果。輸出資料選擇單元耦接至處理單元與選擇控制單元。輸出資料選擇單元依據輸出選擇控制信號而選擇輸出部份或全部所述運算結果。
本發明提出一種幀內預測方法,包括下述步驟。首先提供被預測塊的部份或全部周圍像素的像素值,以及提供輸入選擇控制信號、運算參數信號、輸出選擇控制信號。依據輸入選擇控制信號而選擇所述像素值,做為被選擇像素值。依據運算參數信號而運算所述被選擇像素值,以產生多個運算結果。依據輸出選擇控制信號而選擇輸出部份或全部所述運算結果。
在本發明之一實施例中,上述之選擇控制單元依據選擇預測模式查找輸入選擇控制表、運算參數表、以及輸出選擇控制表,以分別獲得並提供輸入選擇控制信號、運算參數信號、以及輸出選擇控制信號。
在本發明之一實施例中,上述處理單元之第一運算單元依據運算參數信號S,計算等式Tn=(Src0+Src1<<C+Src2+R)>>S,以獲得運算結果Tn。其中,Src0、Src1與Src2分別為該輸入資料選擇單元所選擇的像素值,Src1<<C表示像素值Src1向左位移C個位元,(Src0+...+R)>>S表示像素值(Src0+...+R)向右位移S個位元,R=S,且C=R>>1。若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且該被預測塊周圍像素的像素值都可用,則R=0。
在本發明之一實施例中,若所述選擇預測模式所需使用最多8個周圍像素,則上述處理單元之第二運算單元依據運算參數信號S,計算等式Tn’=(T0+T1+T2+R’)>>S’,以獲得運算結果Tn’。若所述選擇預測模式所需使用超過8個周圍像素,則上述處理單元之第二運算單元依據該運算參數信號S,計算等式Tn’=((T0+T1+T2)+(T0’+T1’+T2’)+R’)>>S’,以獲得運算結果Tn’。其中(T0、T1、T2)與(T0’、T1’、T2’)分別為該些第一運算單元先後輸出的運算結果,S’=S+1,且R=1<<S。
本發明因將各種幀內預測演算法歸納為統一的公式,因此配合提供適當的輸入選擇控制信號、運算參數信號、以及輸出選擇控制信號,可以實現各種視訊幀內預測演算法。由於本發明之幀內預測裝置可以同時適用於各種幀內預測演算法,而以簡單電路實現各演算法功能,因此本發明更可以大量節省硬體資源。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式,作詳細說明如下。
最近的視訊編解碼標準(例如H.264與AVS等)紛紛採用幀內預測技術來提高編碼效率,尤其在實現H.264或AVS的高解析(1920×1088)應用中,其效果更是顯著。以下實施例將以H.264與AVS視訊編解碼標準為應用例。H.264視訊編解碼標準的幀內預測技術中,4×4亮度預測有9種預測模式,8×8亮度預測有9種預測模式,而4×4色度預測有4種預測模式。對於AVS視訊編解碼標準而言,其8×8亮度預測有5種模式,而8×8色度預測有4種模式。
幀內預測技術使用「被預測塊」周圍的像素值來預測該被預測塊內的各個像素值。圖1是依照本發明實施例說明4×4亮度預測與4×4色度預測相關之被預測塊像素與被使用到的周圍像素。圖1中方塊110表示一個4×4「被預測塊」。為了預測被預測塊110內的各個像素值,幀內預測技術會使用被預測塊110部份或全部的周圍像素(像素A~H、像素I~P與像素X)資料來預測方塊110內的各個像素值。圖2是依照本發明實施例說明8×8亮度預測與8×8色度預測相關之被預測塊像素與被使用到的周圍像素。圖2中方塊210表示一個8×8「被預測塊」。為了預測被預測塊210內的各個像素值,幀內預測技術會使用被預測塊210部份或全部的周圍像素(像素A~H、像素a1~h1、像素I~P與像素X)資料來預測方塊210內的各個像素值。圖1與圖2所示之座標值不代表在顯示裝置的實際座標。
本實施例只針對4×4與8×8被預測塊的預測標準進行說明,但熟知此技藝者可因此推導出其他,例如:16×16,之預測方法。
圖1描述了4×4被預測塊與預測時會用到的周圍像素。其中,像素X的值描述為P[-1,-1];像素A、B、C、D、E、F、G、H的值分別為P[x,-1],x=0~7中的一個;像素1、J、K、L、M、N、O、P的值分別為P[-1,y],y=0~7中的一個。H.264視訊編解碼標準的4×4幀內預測,就是:已知P[-1,-1]、P[x,-1]、P[-1,y](x與y為0~7)這17個像素值,來求4×4被預測塊110的像素值(描述為P[x,y],x與y為0~3)。
依據H.264標準的定義,4×4亮度幀內預測具有模式0~模式8等9種預測模式。對於不同的亮度預測模式,有不同的計算公式。下面進行逐一介紹,並請參照圖1。其中,x與y為0~3,且「>>」與「<<」分別表示「向右位移」與「向左位移」之運算。例如,U<<V表示數值U向左位移V個位元,而U>>V表示數值U向右位移V個位元。
模式0(H.264的Intra_4x4_Yertica1模式)
P[x,y]=P[x,-1]
模式1(H.264的Intra_4x4_Horizonta1模式)
P[x,y]=P[-1,y]
模式2(H.264的Intra_4x4_DC模式)
情況一 (LT=3):當像素值P[x,-1]、P[-1,y](x與y為0~7)都可用時
P[x,y]=(P[0,-1]+P[1,-1]+P[2,-1]+P[3,-1]+P[-1,0]+P[-1,1]+P[-1,2]+P[-1,3]+4)>>3
情況二 (LT=1):當左邊像素值P[-1,y](y為0~7)可用時
P[x,y]=(P[-1,0]+P[-1,1]+P[-1,2]+P[-1,3]+2)>>2
情況三 (LT=2):當上面像素值P[x,-1](x為0~7)可用時
P[x,y]=(P[0,-1]+P[1,-1]+P[2,-1]+P[3,-1]+2)>>2
情況四 (LT=0):否則
P[x,y]=128
模式3(H.264的Intra_4x4_Diagonal_Down_Left模式)
如果x=3且y=3
P[x,y]=(P[6,-1]+3*P[7,-1]+2)>>2
否則
P[x,y]=(P[x+y,-1]+2*P[x+y+1,-1]+P[x+y+2,-1]+2)>>2
模式4(H.264的Intra_4x4_Diagonal_Down_Right模式)
如果x>y
P[x,y]=(P[x-y-2,-1]+2*P[x-y-1,-1]+P[x-y,-1]+2)>>2
如果x<y
P[x,y]=(P[-1,y-x-2]+2*P[-1,y-x-1]+P[-1,y-x]+2)>>2
否則
P[x,y]=(P[0,-1]+2*P[-1,-1]+P[-1,0]+2)>>2
模式5(H.264的Intra_4x4_Vertical_Right模式)
如果2*xy=0,2,4,6
P[x,y]=(P[x-(y>>1)-1,-1]+P[x-(y>>1),-1]+1)>>1
如果2*x-y=1,3,5
P[x,y]=(P[x-(y>>1)-2,-1]+2*P[x-(y>>1)-1,-1]+P[x-(y>>1),-1]+2)>>2
如果2*x-y=-1
P[x,y]=(P[-1,0]+2*P[-1,-1]+P[0,-1]+2)>>2否則
P[x,y]=(P[-1,y-1]+2*P[-1,y-2]+P[-1,y-3]+2)>>2
模式6(H.264的Intra_4x4_Horizontal_Down模式)
如果2*y-x=0,2,4,6
P[x,y]=(P[-1,y-(x>>1)-1]+P[-1,y-(x>>1)]+1)>>1
如果2*y-x=1,3,5
P[x,y]=(P[-1,y-(x>>1)-2]+2*P[-1,y-(x>>1)-1]+P[-1,y-(x>>1)]+2)>>2
如果2*y-x=-1
P[x,y]=(P[-1,0]+2*P[-1,-1]+P[0,-1]+2)>>2
否則
P[x,y]=(P[x-1,-1]+2*P[x-2,-1]+P[x-3,-1]+2)>>2
模式7(H.264的Intra_4x4_Vertical_Left模式)
如果y=0,2
P[x,y]=(P[x+(y>>1),-1]+P[x+(y>>1)+1,-1]+1)>>1
否則(即y=1,3)
P[x,y]=(P[x+(y>>1),-1]+2*P[x+(y>>1)+1,-1]+P[x+(y>>1)+2,-1]+2)>>2
模式8(H.264的Intra_4x4_Horizontal_Up模式)
如果x+2*y=0,2,4
P[x,y]=(P[-1,y+(x>>1)]+P[-1,y+(x>>1)+1]+1)>>1
如果x+2*y=1,3
P[x,y]=(P[-1,y+(x>>1)]+2*P[-1,y+(x>>1)+1]+P[-1,y+(x>>1)+2]+2)>>2
如果x+2*y=5
P[x,y]=(P[-1,2]+3*P[-1,3]+2)>>2
否則(即x+2*y>5)
P[x,y]=P[-1,3]
圖2描述了8×8被預測塊與預測亮度時會用到的周圍像素。其中,像素a1、b1、c1、d1、e1、f1、g1、h1的值分別為P[x,-1],x=8~15中的一個。H.264視訊編解碼標準的8×8幀內預測,就是根據X、A~H、a1~h1、I~P這25個像素的值,來預測8×8被預測塊210的像素值(描述為P[x,y],x與y為0~7)。
依據H.264標準的定義,8×8亮度幀內預測具有模式0~模式8等9種預測模式。對於所有的模式,計算過程可以劃分為二步。第一步是根據像素X、像素A~H、像素a1~h1、像素I~P的值得到值P’[-1,-1]、P’[x,-1]、與P’[-1,y],其中x=0~15,y=0~7。對於不同的位置有不同的計算公式,例舉如下:
計算P’[0,-1]
如果P[-1,-1]可用,則
P’[0,-1]=(P[-1,-1]+2*P[0,-1]+P[1,-1]+2)>>2
否則
P’[0,-1]=(3*P[0,-1]+P[1,-1]+2)>>2
計算P’[x,-1],x=1~14
P’[x,-1]=(P[x-1,-1]+2*P[x,-1]+P[x+1,-1]+2)>>2
計算P’[15,-1]
P’[15,-1]=(P[14,-1]+3*P[15,-1]+2)>>2
計算P’[-1,-1]
如果P[0,-1]與P[-1,0]皆可用,則
P’[-1,-1]=(P[0,-1]+2*P[-1,-1]+P[-1,0]+2)>>2
如果P[0,-1]可用,則
P’[-1,-1]=(3*P[-1,-1]+P[0,-1]+2)>>2
否則
P’[-1,-1]=(3*P[-1,-1]+P[-1,0]+2)>>2
計算P’[-1,0]
如果P[-1,-1]可用,則
P’[-1,0]=(P[-1,-1]+2*P[-1,0]+P[-1,1]+2)>>2
否則
P’[-1,0]=(3*P[-1,0]+P[1,-1]+2)>>2
計算P’[-1,y],y=1~6
P’[-1,y]=(P[-1,y-1]+2*P[-1,y]+P[-1,y+1]+2)>>2
計算P’[-1,7]
P’[-1,7]=(P[-1,6]+3*P[-1,0]+2)>>2
第二步是根據得到的值P’[-1,-1]、P’[x,-1](x=0~15)、與P’[-1,y](y=0~7)來計算8×8被預測塊210的像素值P[x,y](x與y為0~7)。對於不同的預測模式,有不同的計算公式。下面進行逐一介紹,並請參照圖2。其中,x與y為0~7。
模式0(H.264的Intra_8×8_Vertical模式)
P[x,y]=P’[x,-1]
模式1(H.264的Intra_8×8_Horizontal模式)
P[x,y]=P’[-1,y]
模式2(H.264的Intra_8×8_DC模式)
情況一 (LT=3):當像素值P[x,-1]、P[-1,y]都可用時
P[x,y]=(P’[0,-1]+P’[1,-1]+P’[2,-1]+P’[3,-1]+P’[4,-1]+P’[5,-1]+P’[6,-1]+P’[7,-1]+P’[-1,0]+P’[-1,1]+P’[-1,2]+P’[-1,3]+P’[-1,4]+P’[-1,5]+P’[-1,6]+P’[-1,7]+8)>>4
情況二 (LT=1):當左邊像素值P[-1,y]可用時
P[x,y]=(P’[-1,0]+P’[-1,1]+P’[-1,2]+P’[-1,3]+P’[-1,4]+P’[-1,5]+P’[-1,6]+P’[-1,7]+4)>>3
情況三 (LT=2):當上面像素值P[x,-1](x為0~7)可用時
P[x,y]=(P’[0,-1]+P’[1,-1]+P’[2,-1]+P’[3,-1]+P’[4,-1]+P’[5,-1]+P’[6,-1]+P’[7,-1]+4)>>3
情況四 (LT=0):否則
P[x,y]=128
模式3(H.264的Intra_8×8_Diagonal_Down_Left模式)
如果x=7且y=7
P[x,y]=(P’[14,-11+3*P’[15,-1]+2)>>2
否則
P[x,y]=(P’[x+y,-1]+2*P’[x+y+1,-1]+P’[x+y+2,-1]+2)>>2
模式4(H.264的Intra_8×8_Diagonal_Down_Right模式)
如果x>y
P[x,y]=(P’[x-y-2,-1]+2*P’[x-y-1,-1]+P’[x-y,-1]+2)>>2
如果x<y
P[x,y]=(P’[-1,y-x-2]+2*P’[-1,y-x-1]+P’[-1,y-x]+2)>>2
否則
P[x,y]=(P’[0,-1]+2*P’[-1,-1]+P’[-1,0]+2)>>2
模式5(H.264的Intra_8×8_Vertical_Right模式)
如果2*x-y=0,2,4,6,8,10,12,14
P[x,y]=(P’[x-(y>>1)-1,-1]+P’[x-(y>>1),-1]+1)>>1
如果2*x-y=1,3,5,7,9,11,13
P[x,y]=(P’[x-(y>>1)-2,-1]+2*P’[x-(y>>1)-1,-1]+P’[x-(y>>1),-1]+2)>>2
如果2*x-y=-1
P[x,y]=(P’[-1,0]+2*P’[-1,-1]+P’[0,-1]+2)>>2
否則(即2*x-y=-2,-3,-4,-5,-6,-7)
P[x,y]=(P’[-1,y-2*x-1]+2*P’[-1,y-2*x-2]+P’[-1,y-2*x-3]+2)>>2
模式6(H,264的Intra_8×8_Horizontal_Down模式)
如果2*y-x=0,2,4,6,8,10,12,14
P[x,y]=(P’[-1,y-(x>>1)-1]+P’[-1,y-(x>>1)]+1)>>1
如果2*y-x=1,3,5,7,9,11,13
P[x,y]=(P’[-1,y-(x>>1)-2]+2*P’[-1,y-(x>>1)-1]+P’[-1,y-(x>>1)]+2)>>2
如果2*y-x=-1
P[x,y]=(P’[-1,0]+2*P’[-1,-1]+P’[0,-1]+2)>>2
否則(即2*x-y=-2,-3,-4,-5,-6,-7)
P[x,y]=(P’[x-2*y-1,-1]+2*P’[x-2*y-2,-1]+P’[x-2*y-3,-1]+2)>>2
模式7(H.264的Intra_8×8_Vertical_Left模式)
如果y=0,2,4,6
P[x,y]=(P’[x+(y>>1),-1]+P’[x+(y>>1)+1,-1]+1)>>1
否則(即y=1,3,5,7)
P[x,y]=(P’[x+(y>>1),-1]+2*P’[x+(y>>1)+1,-1]+P’[x+(y>>1)+2,-1]+2)>>2
模式8(H.264的Intra_8×8_Horizontal_Up模式)
如果x+2*y=0,2,4,6,8,10,12
P[x,y]=(P’[-1,y+(x>>1)]+P’[-1,y+(x>>1)+1]+1)>>1
如果x+2*y=1,3,5,7,9,11
P[x,y]=(P’[-1,y+(x>>1)]+2*P’[-1,y+(x>>1)+1]+P’[-1,y+(x>>1)+2]+2)>>2
如果x+2*y=13
P[x,y]=(P’[-1,6]+3*P’[-1,7]+2)>>2
否則(即x+2*y>13)
P[x,y]=P’[-1,7]
依據H.264標準的定義,色度幀內預測具有模式0~模式3等4種預測模式。不管一個色度塊的大小是8×8、4×8還是4×4,他們的算法都是基於4×4的,並且4×4與4×8只是8×8的一種特殊情況。因此,以下僅針對8×8進行討論。被預測像素與參考像素的位置關係可以參照圖2。對於不同的色度預測模式,有不同的計算公式。下面列舉了本實施例用到的預測模式。
模式0(H.264的Intra_Chroma_DC模式)
情況一 :對於像素值P[x,y](其中x,y=0~3)與像素值P[x,y](其中x,y=4~7)
若像素值P[x,-1]、P[-1,y](其中x,y=0~7)都可用時(LT=3)
P[x,y]=(P[0,-1]+P[1,-1]+P[2,-1]+P[3,-1]+P[-1,0]+P[-1,1]+P[-1,2]+P[-1,3]+4)>>3 (x,y=0~3)
P[x,y]=(P[4,-1]+P[5,-1]+P[6,-1]+P[7,-1]+P[-1,4]+P[-1,5]+P[-1,6]+P[-1,7]+4)>>3 (x,y=4~7)
若左邊像素值P[-1,y](其中y=0~7)可用時(LT=1)
P[x,y]=(P[-1,0]+P[-1,1]+P[-1,2]+P[-1,3]+2)>>2(其中x,y=0~3)
P[x,y]=(P[-1,4]+P[-1,5]+P[-1,6]+P[-1,7]+2)>>2(其中x,y=4~7)
若上面像素值P[x,-1](x為0~7)可用時(LT=2)
P[x,y]=(P[0,-1]+P[1,-1]+P[2,-1]+P[3,-1]+2)>>2(其中x,y=0~3)
P[x,y]=(P[4,-1]+P[5,-1]+P[6,-1]+P[7,-1]+2)>>2(其中x,y=4~7)
否則(LT=0)
P[x,y]=128 (其中x,y=0~3或x,y=4~7)
情況二 :對於像素值P[x,y](其中x=4~7,y=0~3)
若上邊的像素值P[x,-1](其中x=4~7)都可用時(LT=2)
P[x,y]=(P[4,-1]+P[5,-1]+P[6,-1]+P[7,-1]+2)>>2(其中x=4~7,y=0~3)
若左邊像素值P[-1,y](其中y=0~3)都可用時(LT=1)
P[x,y]=(P[-1,0]+P[-1,1]+P[-1,2]+P[-1,3]+2)>>2(其中x=4~7,y=0~3)
否則
P[x,y]=128(其中x=4~7,y=0~3)
情況三 :對於像素值P[x,y](其中x=0~3,y=4~7)
若左邊像素值P[-1,y](其中y=4~7)可用時(LT=1)
P[x,y]=(P[-1,4]+P[-1,5]+P[-1,6]+P[-1,7]+2)>>2(其中x=0~3,y=4~7)
若上面像素值P[x,-1](x為0~3)可用時(LT=2)
P[x,y]=(P[0,-1]+P[1,-1]+P[2,-1]+P[3,-1]+2)>>2(其中x=0~3,y=4~7)
否則
P[x,y]=128(其中x=0~3或y=4~7)
模式1(H.264的Intra_Chroma_Horizontal模式)
P[x,y]=P’[-1,y](其中x,y=0~7)
模式2(H.264的Intra_Chroma_Vertical模式)
P[x,y]=P’[x,-1](其中x,y=0~7)
模式3(H.264的Intra_Chroma_Plane模式)
由於這個模式的計算公式與其他模式很不一樣,本實施例並不支持此一模式。在實際應用中可以把此模式當成特殊情況來進行特殊處理。
另外,依據AVS標準的定義,幀內預測的基本單位是8×8。AVS標準的亮度幀內預測具有模式0~模式4等5種預測模式。被預測像素與參考像素的位置關係可以參照圖2。對於不同的亮度預測模式,有不同的計算公式。下面列舉了AVS標準的亮度幀內預測模式。
模式0(AYS的Intra_8×8_Yertical模式)
P[x,y]=P’[x,-1] (其中x,y=0~7)
模式1(AVS的Intra_8×8_Horizontal模式)
P[x,y]=P’[-1,y] (其中x,y=0~7)
模式2(AVS的Intra_8×8_DC模式)
此模式的處理情形分為二步:
第一步:與H.264處理8×8時的第一步完全一致。
第二步:
情況一 (LT=3):當P[x,-1]、P[-1,y]都可用時P[x,y]=(P’[x,-1]+P’[-1,y])>>1 (其中x,y=0~7)
情況二 (LT=1):當左邊像素值P[-1,y]可用時P[x,y]=P’[-1,y] (其中x,y=0~7)
情況三 (LT=2):當上面像素值P[x,-1]可用時P[x,y]=P’[x,-1] (其中x,y=0~7)
情況四 (LT=0):否則P[x,y]=128 (其中x,y=0~3)
模式3(AVS的Intra_8×8_Down_Left模式)
此模式的處理情形分為二步:
第一步:與H.264處理8×8時的第一步完全一致。
第二步:P[x,y]=(P’[x+y+1,-1]+P’[-1,x+y+1])>>1
模式4(AVS的Intra_8×8_Down_Right模式)
如果x=y
P[x,y]=(P[-1,0]+2*P[-1,-1]+P[0,-1]+2)>>2
如果x>y
P[x,y]=(P[x-y,-1]+2*P[x-y-1,-1]+P[x-y,-2]+2)>>2
否則(即x<y)
P[x,y]=(P[-1,y-x]+2*P[-1,y-x-1]+P[-1,y-x-2]+2)>>2
依據AVS標準的定義,色度幀內預測具有模式0~模式3等4種預測模式。AVS的色度幀內預測的基本單位是8×8。被預測像素與參考像素的位置關係可以參照圖2。對於不同的色度預測模式,有不同的計算公式。下面列舉了本實施例用到的預測模式。
模式0(AVS的Intra_Chroma_DC模式)
與AVS的亮度幀內預測Intra_8x8_DC模式相同
模式1(AVS的Intra_Chroma_Horizontal模式)
P[x,y]=P[-1,y] (其中x,y=0~7)
模式2(AVS的Intra_Chroma_Vertical模式)
P[x,y]=P[x,-1] (其中x,y=0~7)
模式3(AVS的Intra_Chroma_Plane模式)
與H.264的色度幀內預測Intra_Chroma_Plane模式類似,需要做特殊的處理。於本實施例中,暫不予支持。
在本實施例中,上述所有模式將被劃分為二類,一類是非DC模式,另一類是DC模式。針對上述非DC模式,其每一個像素的計算過程可以歸納為一個統一的公式。
P[x,y]=(Src0+Src1<<C+Src2+R)>>S (等式1)
其中,Src0、Src1與Src2分別為預先擇定的周圍像素值,C、R、S為運算參數。也就是說,本實施例可以通過給定每像素對應的運算參數C、R、S值,並且選擇好周圍像素值Src0、Src1與Src2,就能得到被預測塊中某一像素的預測值P[x,y]。
舉個例子,在H.264標準中的Intra_4x4_Diagona1_Down_Left模式下,根據前述H.264之公式,對於被預測塊中像素P[3,3]而言,取C=1、R=2、S=2,然後取Src0=P[6,-1]、Src1=P[7,-1]、Src2=P[7,-1];對於被預測塊中像素P[3,2]而言,取C=1、R=2、S=2,然後取Src0=P[5,-1]、Src1=P[6,-1]、Src2=P[7,-1]。從這裡可以看出,整個計算過程可以描述為:得到周圍的參考像素直P[-1,-1]、P[x,-1]、P[-1,y],x=0~15且y=0~7以及所有的運算參數C、R、S值,然後根據具體的模式在這些值中挑選合適的控制信號就可以了。
經過進一步研究,運算參數C、R、S值有如下的對應關係:
若S=0,則R=0,則C=0
若S=1,則R=1,則C=0
若S=2,則R=2,則C=1
唯一不符合的情況是AVS的Intra_8x8_DC模式,且周圍像素都可用時,它的運算參數C、R、S值分別是0、0、1。因此,如果知道運算參數S值,就可以通過等式2與等式3得到運算參數C與R值。
若為Intra_8x8_DC模式則R=0,否則R=S (等式2)
C=R>>1 (等式3)
針對上述各種DC模式,為了盡量與非DC模式的情況保持一致,本實施例可以將其計算公式歸納為:
P[x,y]=(ADD0+ADD1+ADD2+R’)>>S’ (等式4)
P[x,y]=((ADD0+ADD1+ADD2)+(ADD0’+ADD1’+ADD2’)+R’)>>S’ (等式5)
等式4適用於最多需要8個周圍像素的情況,等式5適用於需要超過8個周圍像素的情況。其中,ADD0、ADD1與ADD2分別為等式1在DC模式下的三個運算結果。ADD0’、ADD1’與ADD2’亦為等式1在DC模式下的運算結果,並分別為ADD0、ADD1與ADD2在時間上的下一個運算結果。在DC模式下,等式1的運算參數C、R、S值均為0。R’、S’為運算參數。經過進一步研究,運算參數R’、S’值有如下的對應關係:
若S’=2,則R’=2
若S’=3,則R’=4
若S’=4,則R’=8
因此,如果知道運算參數S值,就可以通過等式6與等式7得到運算參數S’與R’值。
S’=S+1 (等式6)
R’=1<<S (等式7)
圖3是依照本發明說明一種幀內預測裝置300實施例。幀內預測裝置300包括輸入資料單元310、選擇控制單元320、輸入資料選擇單元330、處理單元340、輸出資料選擇單元350。輸入資料單元310提供被預測塊的部份或全部周圍像素的像素值。以圖1為例(即4×4被預測塊),輸入資料單元310可以提供被預測塊110的周圍像素A~H、I~P與X的像素值。若以圖2為例(即8×8被預測塊),輸入資料單元310可以提供被預測塊210的周圍像素A~H、a1~h1、I~P與X的像素值。
輸入資料單元310可以任何手段實現之,例如記憶體、拴鎖器等。本實施例中將以多個暫存器來實現輸入資料單元310。輸入資料單元310內的暫存器數量須視所支持的幀內預測模式而決定。例如,若幀內預測裝置300只需支持H.264的Intra_4x4_DC模式,則輸入資料單元310內只需配置8個暫存器,就足夠存放該模式所需的8個周圍像素A、B、C、D、I、J、K、L的像素值。於本實施例中,為了能夠支持H.264與AVS標準的各種幀內預測模式,因此配置了26個暫存器,分別存放周圍像素A~H、a1~h1、I~P與X的像素值,如圖3所示。其中儲存Z值(即0值)的暫存器可以是需求而省略(需配合輸入資料選擇單元330的設計而決定之)。
選擇控制單元320提供輸入選擇控制信號Sin0~Sin23、運算參數信號S、以及輸出選擇控制信號Sout0~Sout7。輸入資料選擇單元330耦接至輸入資料單元310與選擇控制單元320,用以依據輸入選擇控制信號Sin0~Sin23而選擇所述像素值。處理單元340耦接至輸入資料選擇單元330,用以依據運算參數信號S而運算輸入資料選擇單元330所選擇的像素值,以產生多個運算結果。圖3所示的運算參數信號S是由選擇控制單元320提供,經由輸入資料選擇單元330而傳送給處理單元340。在其他實施例中,選擇控制單元320亦可以將運算參數信號S直接提供給處理單元340,而不需經過輸入資料選擇單元330。輸出資料選擇單元350耦接至處理單元340與選擇控制單元320,用以依據輸出選擇控制信號Sout0~Sout7而選擇輸出處理單元340的部份或全部運算結果。
綜合資源與速度二方面的考慮,本實施例設計了一次計算8個像素的電路。對於一個4×4的被預測塊,需要分2次來計算其上半部與下半部之像素預測值。以圖1為例,被預測塊110需要分二次來計算其上半部(即P[0,0]、P[1,0]、P[2,0]、P[3,0]、P[0,1]、P[1,1]、P[2,1]、P[3,1])與下半部(即P[0,2]、P[1,2]、P[2,2]、P[3,2]、P[0,3]、P[1,3]、P[2,3]、P[3,3])之像素預測值。對於一個8×8的被預測塊,需要分8次來計算其像素預測值。以圖2為例,被預測塊210需要分8次來計算其子塊000、001、010、011、100、101、110、111之像素預測值。前述子塊000包含P[0,0]、P[1,0]、P[2,0]、P[3,0]、P[0,1]、P[1,1]、P[2,1]、P[3,1],子塊001包含P[0,2]、P[1,2]、P[2,2]、P[3,2]、P[0,3]、P[1,3]、P[2,3]、P[3,3]。前述子塊010包含P[4,0]、P[5,0]、P[6,0]、P[7,0]、P[4,1]、P[5,1]、P[6,1]、P[7,1],子塊011包含P[4,2]、P[5,2]、P[6,2]、P[7,2]、P[4,3]、P[5,3]、P[6,3]、P[7,3]。前述子塊100包含P[0,4]、P[1,4]、P[2,4]、P[3,4]、P[0,5]、P[1,5]、P[2,5]、P[3,5],子塊101包含P[0,6]、P[1,6]、P[2,6]、P[3,6]、P[0,7]、P[1,7]、P[2,7]、P[3,7]。前述子塊110包含P[4,4]、P[5,4]、P[6,4]、P[7,4]、P[4,5]、P[5,5]、P[6,5]、P[7,5],子塊111包含P[4,6]、P[5,6]、P[6,6]、P[7,6]、P[4,7]、P[5,7]、P[6,7]、P[7,7]。
因此,處理單元340需要配置8個第一運算單元OU1-0、OU1-1、OU1-2、OU1-3、OU1-4、OU1-5、OU1-6、OU1-7,以及第二運算單元OU2,以分別計算被預測塊當中的8個像素值。若想要讓幀內預測裝置300一次計算16個像素(即一次計算4×4像素塊),便需在處理單元340配置16個第一運算單元,以及1個第二運算單元OU2。以此類推,若想要讓幀內預測裝置300一次計算64個像素(即一次計算8×8像素塊),便需在處理單元340配置64個第一運算單元,以及1個第二運算單元OU2。
輸入資料選擇單元330可以第一選擇單元、第二選擇單元、與第三選擇單元來提供8個第一運算單元OU1-0~OU1-7運算所需要的周圍像素值Src0、Src1與Src2。表1是說明輸入資料選擇單元330中,輸入選擇控制信號Sin0~Sin23與被選擇的周圍像素之對應表。依據選擇控制單元320所提供的輸入選擇控制信號Sin0~Sin23,輸入資料選擇單元330可以使用表1而選擇對應的周圍像素。例如,若選擇控制單元320所發出的輸入選擇控制信號Sin0~Sin23為[0,1,3,1,2,4,5,7,0,0,0,0,1,0,0,0,4,0,0,1,0,0,0,0],表示第一選擇單元的輸出P0~P7分別為A、F、O、H、I、X、X、f1,第二選擇單元的輸出P8~P15分別為B、C、D、H、F、D、A、C,而第三選擇單元的輸出P16~P23分別為Z、D、B、G、A、A、B、B。也就是說,處理單元340中的第一運算單元OU1-0~OU1-7所接收到的周圍像素值Src0、Src1與Src2分別為[A,B,0]、[F,C,D]、[O,D,B]、[H,H,G]、[I,F,A]、[X,D,A]、[X,A,B]、[f1,C,B]。於本實施例中,輸入資料選擇單元330之輸出P0~P23均是由對應的資料選擇器(或多工器)。以第一選擇單元為例,圖4是依照本發明說明圖3之輸入資料選擇單元330中,第一選擇單元的實施例。第一選擇單元具有8個「8選1」的多工器。這些多工器耦接於輸入資料單元310與處理單元340之間。這些多工器分別受控於輸入選擇控制信號Sin0~Sin7其中之一。依據選擇控制單元320所提供的輸入選擇控制信號Sin0~Sin7,各多工器選擇其中一個周圍像素,以將所選擇的像素值提供給處理單元340進行運算。
如上所述,處理單元340包括8個第一運算單元OU1-0~OU1-7。第一運算單元OU1-0~OU1-7各自依據選擇控制單元320所提供的運算參數信號S,計算Tn=(Src0+Src1<<C+Src2+R)>>S(即前述等式1),以獲得運算結果Tn(即圖3中的T0、T1、T2、T3、T4、T5、T6、T7)。其中Src0、Src1與Src2分別為輸入資料選擇單元330所選擇的像素值。其中若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且被預測塊周圍像素的像素值都可用,則R=0,否則R=S(即前述等式2)。另外,C=R>>1(即前述等式3),因此,選擇控制單元320只需提供運算參數信號S,第一運算單元OU1-0~OU1-7便可以算出運算參數信號R與C。需注意的是,在同一時間中第一運算單元OU1-0~OU1-7所收到的運算參數信號S不一定相同。第一運算單元OU1-0~OU1-7所需之運算參數信號S,須由選擇控制單元320決定。例如,若選擇控制單元320提供的運算參數信號S為[2,2,1,1,2,1,2,1,0],表示在同一時間中第一運算單元OU1-0所收到的運算參數信號S為2,第一運算單元OU1-1所收到的運算參數信號S為2,第一運算單元OU1-2所收到的運算參數信號S為1。以此類推,第一運算單元OU1-7所收到的運算參數信號S為1,第二運算單元OU2所收到的運算參數信號S則為0。
圖5是依照本發明說明圖3中第一運算單元OU1-0的實施範例。其它第一運算單元OU1-1~OU1-7的實施方式,亦可比照圖5與相關說明。第一運算單元OU1-0包括第一切換器510、第一右位移器520、第一左位移器530、第一加法器540以及第二右位移器550。第一切換器510接收運算參數信號S。若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且該被預測塊周圍像素的像素值都可用,則第一切換器510依據選擇控制單元320之控制信號INTRA_8x8_DC,選擇輸出「0」值作為參數R;否則,第一切換器510選擇輸出運算參數信號S作為參數R。第一右位移器520耦接至第一切換器510,用以將參數R向右位移1個位元,以作為參數C。第一左位移器530耦接至輸入資料選擇單元330與第一右位移器520,用以將輸入資料選擇單元330內的第二選擇單元所選擇的像素值Src1向左位移C個位元。於第一運算單元OU1-0中,第一左位移器530將輸入資料選擇單元330的第二選擇單元的輸出P8向左位移C個位元。
第一加法器540耦接至輸入資料選擇單元330、第一切換器510與第一左位移器530。第一加法器540加總輸入資料選擇單元330所選擇的像素值Src0與Src2、第一左位移器530之輸出(即像素值Src1<<C)、以及切換器510輸出之參數R。於第一運算單元OU1-0中,輸入資料選擇單元330之輸出P0與P16作為像素值Src0與Src2。
第二右位移器550耦接至第一加法器540,用以將第一加法器540之輸出向右位移S個位元,以作為運算結果Tn。於第一運算單元OU1-0中,以T0表示前述運算結果Tn。因此,運算單元OU1-0可以完成前述等式1~等式3的運算作業。
視所支持的幀內預測模式,可以決定是否省略圖3中處理單元340的第二運算單元OU2。例如,若幀內預測裝置300不需支持DC模式(例如H.264的Intra_8×8_DC模式等),則不需要第二運算單元OU2。
若目前所進行的幀內預測模式最多需要8個周圍像素,則藉由選擇控制單元320的控制,第二運算單元OU2依據選擇控制單元320所提供的運算參數信號S,計算等式Tn’=(T0+T1+T2+R’)>>S’(即前述等式4),以獲得運算結果Tn’(在圖3中標示為T8)。若目前所進行的幀內預測模式需要超過8個周圍像素,則藉由選擇控制單元320的控制,第二運算單元OU2依據選擇控制單元320所提供的運算參數信號S,計算等式Tn’=((T0+T1+T2)+(T0’+T1’+T2’)+R’)>>S’(即前述等式5),以獲得運算結果Tn’。其中T0、T1與T2分別為第一運算單元OU1-0、OU1-1與OU1-2所輸出的運算結果,而(T0’、T1’、T2’)分別為第一運算單元OU1-0、OU1-1與OU1-2下一次輸出的運算結果。第二運算單元OU2可以依據選擇控制單元320所提供的運算參數信號S,計算等式4與等式5所需的S’與R’,其中S’=S+1(即前述等式6),且R’=1<<S(即前述等式7)。
圖6是依照本發明說明圖3中第二運算單元OU2的實施範例。第二運算單元包括第二加法器610、第二左位移器620、暫存器630、第二切換器640、第三加法器650、第三右位移器660以及第三切換器670。第二加法器610加總「1」值與選擇控制單元320所提供的運算參數信號S,並將加總結果作為參數S’。第二左位移器620將「1」值向左位移S個位元,以作為參數R’。暫存器630暫存第三加法器650所輸出之目前加總值,並提供第三加法器650先前輸出之先前加總值。第二切換器640耦接至第二左位移器620與暫存器630。選擇控制單元320藉由輸出控制信號cALU_1,可以控制切換器640選擇輸出參數R’,或者選擇輸出暫存器630所輸出之先前加總值。
第三加法器650加總第一運算單元OU1-0、OU1-1與OU1-2輸出的運算結果T0、T1、T2與第二切換器640之輸出,以作為目前加總值。若第二切換器640選擇輸出參數R’,則第三加法器650輸出的目前加總值相當於(T0+T1+T2+R’)。若第二切換器640選擇輸出所述先前加總值,相當於將第三加法器650先前之計算結果(T0+T1+T2+R’)回授給第三加法器650,則第三加法器650輸出的目前加總值相當於((T0+T1+T2+R’)+T0’+T1’+T2’)。
第三右位移器660耦接至第三加法器650與第二加法器610,用以將第三加法器650所輸出的目前加總值向右位移S’個位元。第三切換器670耦接至第三右位移器660。選擇控制單元320藉由輸出控制信號cALU_0,可以控制第三切換器670選擇輸出「128」值作為運算結果Tn’,或者選擇第三右位移器660的輸出作為運算結果Tn’(圖3與圖6中記為T8)。
上述控制信號cALU_1與控制信號cALU_0都是由選擇控制單元320所決定。如果目前所進行的幀內預測模式最多需要8個周圍像素來完成等式4的運算,則控制信號cALU_1=0;控制信號cALU_0則須視前述各個DC模式的情況(LT=0,1,2,3)而定;若LT=0則cALU_0=0,否則cALU_0=1。如果目前所進行的幀內預測模式需要超過8個周圍像素來完成等式5的運算,由於要計算二次,所以控制信號cALU_1與cALU_0要有二組值。在第一次計算時,控制信號cALU_1=0,而控制信號cALU_0無所謂。在第二次計算時,控制信號cALU_1=1,而控制信號cALU_0則須視前述各個DC模式的情況(LT=0,1,2,3)而定;若LT=0則cALU_0=0,否則cALU_0=1。
請繼續參照圖3,輸出資料選擇單元350接收選擇控制單元320所提供的輸出選擇控制信號Sout0~Sout7。依據輸出選擇控制信號Sout0~Sout7,輸出資料選擇單元350可以選擇前述處理單元340所輸出的運算結果T0~T8其中之部份,並將所選擇的運算結果輸出做為幀內預測裝置300的輸出S0、S1、S2、S3、S4、S5、S6、S7。輸出S0~S7便是被預測塊中8個像素的預測值。例如,若輸出選擇控制信號Sout0~Sout7為[0,1,2,3,4,5,6,7],則輸出資料選擇單元350選擇前述運算結果T0~T7,並分別作為輸出S0~S7。若輸出選擇控制信號Sout0~Sout7為[8,8,8,8,8,8,8,8],則輸出資料選擇單元350選擇前述運算結果T8作為輸出S0~S7。
輸出資料選擇單元350可以任何手段實現之。例如,使用8個「9選1」的選擇器(或多工器)來實現輸出資料選擇單元350,其中輸出選擇控制信號Sout0~Sout7各自控制1個選擇器,而每一個選擇器依據對應的輸出選擇控制信號各自選擇運算結果T0~T7其中一個。因此,這8個「9選1」選擇器可以選擇前述運算結果T0~T8,並分別作為輸出S0~S7。
選擇控制單元320依據目前所進行的選擇預測模式(例如H.264的Intra_4x4_Vertical模式)查找「輸入選擇控制表」、「運算參數表」、以及「輸出選擇控制表」,以分別獲得並提供輸入選擇控制信號Sin0~Sin23、運算參數信號S、以及輸出選擇控制信號Sout0~Sout7。前述三種表格可能內建於選擇控制單元320,也可以建置在外部記憶體(未繪示)中,而供選擇控制單元320存取。依據所欲支持的幀內預測模式的不同,所屬技術領域之技術人員可以自行安排前述三種表格的內容。
以H.264中4×4亮度幀內預測的模式0~模式8為例。表2、表3與表4分別是H.264中4×4亮度幀內預測模式0~模式8的輸入選擇控制表、運算參數表、以及輸出選擇控制表。由於圖3所示之幀內預測裝置300只配置8個第一運算單元,也就是一次只能計算8個像素資料,因此一個4×4被預測塊需要分為上半部與下半部,分二次計算獲得4×4被預測塊中全部16個像素值。表2~4中,「模式」欄位記載「0U」與「0L」分別表示在H.264的模式0(即Intra_4x4_Vertical模式)中,計算4×4被預測塊(例如圖1的被預測塊110)的上半部與下半部。表2~4中「模式」欄位的其他記載以此類推。另外,「模式」欄位記載「2LT3」、「2LT3」與「2LT3」分別表示H.264的模式2(即Intra_4x4_DC模式)中,情況1、情況2與情況3。
以下將以H.264的4×4亮度預測的模式0為例,說明上述表2~4如何使用。如前所述,H.264的4×4亮度預測模式0(即Intra_4x4_Vertical模式)的計算公式為:
P[x,y]=P[x,-1](其中x與y為0~3)
因此,由圖1可知,被預測塊110的上半部:
P[0,0]=P[0,1]=A=P[0,-1]
P[1,0]=P[1,1]=B=P[1,-1]
P[2,0]=P[2,1]=C=P[2,-1]
P[3,0]=P[3,1]=D=P[3,-1]
這是依據H.264的4×4亮度預測的模式0的計算公式所求得的。以下將使用上述本發明實施例所揭露的幀內預測方法與裝置來計算被預測塊110的上半部像素預測值。
因為是模式0,且是被預測塊110的上半部,所以在表4中「模式」欄位查找「0U」,進而獲得輸出選擇控制信號Sout0~Sout7分別為0、1、2、3、0、1、2、3。選擇控制單元320提供給輸出資料選擇單元350的輸出選擇控制信號Sout0~Sout7為0、1、2、3、0、1、2、3,其表示,輸出資料選擇單元350會選擇運算結果T0~T3分別做為其輸出S0~S3,並且選擇運算結果T0~T3分別做為其輸出S4~S7。也就是說:
P[0,0]=P[0,1]=運算單元OU1-0的運算結果T0
P[1,0]=P[1,1]=運算單元OU1-1的運算結果T1
P[2,0]=P[2,1]=運算單元OU1-2的運算結果T2
P[3,0]=P[3,1]=運算單元OU1-3的運算結果T3
在此同時,選擇控制單元320在表2中「模式」欄位查找「0U」,進而獲得輸入選擇控制信號Sin0~Sin23分別為0、0、0、0、0、0、0、0、3、3、5、4、0、0、0、0、4、5、5、4、0、0、0、0。輸入資料選擇單元330依此輸入選擇控制信號Sin0~Sin23於表1中查找,決定第一選擇單元的輸出P0~P3分別是周圍像素值A、B、C、D,而第二選擇單元的輸出P8~P11分別是像素值Z、Z、Z、Z(也就是輸出P8~P11之值均為0),且第三選擇單元的輸出P16~P19分別是像素值Z、Z、Z、Z。
選擇控制單元320另外在表3中「模式」欄位查找「0U」,進而獲得運算參數信號S為0、0、0、0、0、0、0、0、0。因此,運算單元OU1-0~OU1-3的運算式P[x,y]=(Src0+Src1<<C+Src2+R)>>S分別為:
T0=(A+Z<<0+Z+0)>>0=A
T1=(B+Z<<0+Z+0)>>0=B
T2=(C+Z<<0+Z+0)>>0=C
T3=(D+Z<<0+Z+0)>>0=D
由於輸出選擇控制信號Sout0~Sout7分別為0、1、2、3、0、1、2、3,因此輸出資料選擇單元350的輸出S0~S7分別為運算結果T0、T1、T2、T3、T0、T1、T2、T3。也就是說,輸出資料選擇單元350的輸出S0~S7分別為A、B、C、D、A、B、C、D。其中,對於被預測塊110的上半部而言,輸出資料選擇單元350的輸出S0~S7便是P[0,0]、P[1,0]、P[2,0]、P[3,0]、P[0,1]、P[1,1]、P[2,1]、P[3,1]。因此,上述本發明實施例所揭露的幀內預測方法與裝置計算被預測塊110的上半部像素預測值,與依據H.264的4×4亮度預測的模式0的計算公式所求得的像素預測值,二者是一致的。
當然,上述實施例所揭露的幀內預測方法與裝置並不限應用在H.264的4×4亮度預測模式。以下再以H.264的8×8亮度預測的模式0(即Intra_8x8_Vertical模式)為例。表5、表6與表7分別是H.264中8×8亮度幀內預測模式0的輸入選擇控制表、運算參數表、以及輸出選擇控制表。對一個8×8被預測塊(例如圖2的被預測塊210),上述幀內預測裝置300需要計算8次。也就是說,將被預測塊210分為子塊000、001、010、011、100、101、110、111,分為8次來計算8×8被預測塊的全部像素預測值。表5、表6與表7之「位置」欄位用3位元的二進制數值表示被預測塊210的子塊位置,其中X表示此值無所謂。例如,若「位置」欄位記載X0X,其表示000、001、100、或101。表5、表6與表7的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式1(即Intra_8×8_Horizontal模式)為例。表8、表9與表10分別是H.264中8×8亮度幀內預測模式1的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表8、表9與表10的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
表8:H.264中8×8亮度預測模式1的輸入選擇控制表
以下再以H.264的8×8亮度預測的模式2(即Intra_8×8_DC模式)為例。表11、表12與表13分別是H.264中8×8亮度幀內預測模式2的輸入選擇控制表、運算參數表、以及輸出選擇控制表。其中,「位置」欄位記載LT3表示屬於情況一,也就是左邊的周圍像數P[-1,y]與上面的周圍像數P[x,-1]都可用的情況;LT2表示屬於情況三,也就是上面的周圍像數P[x,-1]為可用的情況;LT1表示屬於情況二,也就是左邊的周圍像數P[-1,y]為可用的情況。
在H.264的8×8亮度預測的模式2的LT3情況下,此時需要計算二次,先輸入LT2的控制信息,然後再輸入LT1的控制信息。表11、表12與表13的其他使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式3(即Intra_8×8_Diagonal_Down_Left模式)為例。表14、表15與表16分別是H.264中8×8亮度幀內預測模式3的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表14、表15與表16的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式4(即Intra_8×8_Diagonal_Down_Right模式)為例。表17、表18與表19分別是H.264中8×8亮度幀內預測模式4的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表17、表18與表19的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式5(即Intra_8×8_Vertical_Right模式)為例。表20、表21與表22分別是H.264中8×8亮度幀內預測模式5的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表20、表21與表22的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式6(即Intra_8×8_Horizontal_Down模式)為例。表23、表24與表25分別是H.264中8×8亮度幀內預測模式6的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表23、表24與表25的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式7(即Intra_8×8_Vertical_Left模式)為例。表26、表27與表28分別是H.264中8×8亮度幀內預測模式7的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表26、表27與表28的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8亮度預測的模式8(即Intra_8×8_Horizontal_Up模式)為例。表29、表30與表31分別是H.264中8×8亮度幀內預測模式8的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表29、表30與表31的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以H.264的8×8色度預測的模式0(即Intra_Chroma_DC模式)為例。表32、表33與表34分別是H.264中8×8色度預測的模式0的輸入選擇控制表、運算參數表、以及輸出選擇控制表。其中,「Q」欄位表示在8×8被預測塊中第幾個4×4子塊;「LT」表示上面周圍像素與左邊周圍像素是否可用。另外,由於是DC模式,第一運算單元OU1-0~OU1-7的運算參數S值均為0。表32、表33與表34的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
以下再以AVS的8×8亮度預測的模式2(即Intra_8×8_DC模式)為例。表35、表36與表37分別是AVS中8×8亮度幀內預測模式2並且LT=3時的輸入選擇控制表、運算參數表、以及輸出選擇控制表。表35、表36與表37的使用方式可以參照表2、表3與表4及相關說明,在此不再贅述。
綜上所述,本發明之上述實施例因將各種幀內預測演算法歸納為統一的公式,因此配合提供適當的輸入選擇控制信號、運算參數信號、以及輸出選擇控制信號,可以實現各種視訊幀內預測演算法。依照所欲計算的預測模式,上述輸入選擇控制信號、運算參數信號、以及輸出選擇控制信號可以用查詢表(look-up table)的方式,預先建立在幀內預測裝置中。由於本發明之幀內預測裝置與方法可以同時適用於各種幀內預測演算法,而以簡單電路實現各演算法功能,因此本發明更可以大量節省硬體資源。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
110、210...被預測塊
300...幀內預測裝置
310...輸入資料單元
320...選擇控制單元
330...輸入資料選擇單元
340...處理單元
350...輸出資料選擇單元
510...第一切換器
520...第一右位移器
530...第一左位移器
540...第一加法器
550...第二右位移器
610...第二加法器
620...第二左位移器
630...暫存器
640...第二切換器
650...第三加法器
660...第三右位移器
670...第三切換器
OU1-0~OU1-7...第一運算單元
OU2...第二運算單元
圖1是依照本發明實施例說明4×4亮度預測與4×4色度預測相關之被預測塊像素與被使用到的周圍像素。
圖2是依照本發明實施例說明8×8亮度預測與8×8色度預測相關之被預測塊像素與被使用到的周圍像素。
圖3是依照本發明說明一種幀內預測裝置的實施例。
圖4是依照本發明說明圖3之輸入資料選擇單元中,第一選擇單元的實施例。
圖5是依照本發明說明圖3中第一運算單元的實施範例。
圖6是依照本發明說明圖3中第二運算單元的實施範例。
300...幀內預測裝置
310...輸入資料單元
320...選擇控制單元
330...輸入資料選擇單元
340...處理單元
350...輸出資料選擇單元

Claims (13)

  1. 一種幀內預測裝置,包括:一輸入資料單元,用以提供一被預測塊的部份或全部周圍像素的像素值;一選擇控制單元,用以提供一輸入選擇控制信號、一運算參數信號、以及一輸出選擇控制信號;一輸入資料選擇單元,耦接至該輸入資料單元與該選擇控制單元,用以依據該輸入選擇控制信號而選擇所述像素值;一處理單元,耦接至該輸入資料選擇單元,用以依據該運算參數信號而運算該輸入資料選擇單元所選擇的像素值,以產生多個運算結果;以及一輸出資料選擇單元,耦接至該處理單元與該選擇控制單元,用以依據該輸出選擇控制信號而選擇輸出部份或全部所述運算結果;其中該處理單元包括多個第一運算單元,該些第一運算單元其中一者依據該運算參數信號計算下述等式,以獲得運算結果Tn:Tn=(Src0+Src1<<C+Src2+R)>>S,其中S為該運算參數信號,Src0、Src1與Src2分別為該輸入資料選擇單元所選擇的像素值,Src1<<C表示像素值Src1向左位移C個位元,(Src0+...+R)>>S表示像素值(Src0+...+R)向右位移S個位元,R為S或0,且C=R>>1。
  2. 如申請專利範圍第1項所述之幀內預測裝置,其中該輸入資料選擇單元包括:多個多工器,耦接於該輸入資料單元與該處理單元之間,用以依據該輸入選擇控制信號而選擇所述像素值之部分,以將所選擇的像素值提供給該處理單元進行運算。
  3. 如申請專利範圍第1項所述之幀內預測裝置,其中若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且該被預測塊周圍像素的像素值都可用,則R=0。
  4. 如申請專利範圍第3項所述之幀內預測裝置,其中該些第一運算單元其中一者包括:一第一切換器,用以接收該運算參數信號S,並且若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且該被預測塊周圍像素的像素值都可用,則輸出「0」值作為參數R,否則輸出該運算參數信號S作為參數R;一第一右位移器,耦接至該第一切換器,用以將參數R向右位移1個位元,以作為參數C;一第一左位移器,耦接至該輸入資料選擇單元與該第一右位移器,用以將該輸入資料選擇單元所選擇的像素值Src1向左位移C個位元;一第一加法器,耦接至該輸入資料選擇單元、該第一切換器與該第一左位移器,用以加總該輸入資料選擇單元所選擇的像素值Src0與Src2、該第一左位移器之輸出(Src1<<C)、以及參數R;以及 一第二右位移器,耦接至該第一加法器,用以將該第一加法器之輸出向右位移S個位元,以作為運算結果Tn。
  5. 如申請專利範圍第3項所述之幀內預測裝置,其中該處理單元更包括:一第二運算單元,其依據該運算參數信號S,計算下述等式,以獲得運算結果Tn’:Tn’=(T0+T1+T2+R’)>>S’其中T0、T1與T2分別為該些第一運算單元所輸出的運算結果,S’=S+1,且R’=1<<S。
  6. 如申請專利範圍第3項所述之幀內預測裝置,其中該處理單元更包括:一第二運算單元,其依據該運算參數信號S,計算下述等式,以獲得運算結果Tn’:Tn’=((T0+T1+T2)+(T0’+T1’+T2’)+R’)>>S’其中(T0、T1、T2)與(T0’、T1’、T2’)分別為該些第一運算單元先後輸出的運算結果,S’=S+1,且R’=1<<S。
  7. 如申請專利範圍第6項所述之幀內預測裝置,其中該第二運算單元包括:一第二加法器,用以加總「1」值與該運算參數信號S,以作為參數S’;一第二左位移器,用以將「1」值向左位移S個位元,以作為參數R’;一暫存器,用以暫存一目前加總值並提供一先前加總值; 一第二切換器,耦接至該第二左位移器與該暫存器,用以選擇輸出該參數R’與該先前加總值二者之一;一第三加法器,用以加總該些第一運算單元輸出的運算結果T0、T1、T2與該第二切換器之輸出,以作為該目前加總值;一第三右位移器,耦接至該第三加法器與該第二加法器,用以將該目前加總值向右位移S’個位元;以及一第三切換器,耦接至該第三右位移器,用以選擇輸出「128」值作為運算結果Tn’,或者選擇該第三右位移器的輸出作為運算結果Tn’。
  8. 如申請專利範圍第1項所述之幀內預測裝置,其中該選擇控制單元依據一選擇預測模式查找一輸入選擇控制表、一運算參數表、以及一輸出選擇控制表,以分別獲得並提供該輸入選擇控制信號、該運算參數信號、以及該輸出選擇控制信號。
  9. 一種幀內預測方法,包括:提供一被預測塊的部份或全部周圍像素的像素值;提供一輸入選擇控制信號、一運算參數信號、以及一輸出選擇控制信號;依據該輸入選擇控制信號而選擇所述像素值,做為被選擇像素值;依據該運算參數信號而運算所述被選擇像素值,以產生多個運算結果;以及 依據該輸出選擇控制信號而選擇輸出部份或全部所述運算結果;其中運算所述被選擇像素值之步驟包括:依據該運算參數信號,計算等式Tn=(Src0+Src1<<C+Src2+R)>>S,以獲得運算結果Tn;其中S為該運算參數信號,Src0、Src1與Src2分別為選擇所述像素值步驟所選擇的像素值,Src1<<C表示像素值Src1向左位移C個位元,(Src0+...+R)>>S表示像素值(Src0+...+R)向右位移S個位元,R為S或0,且C=R>>1。
  10. 如申請專利範圍第9項所述之幀內預測方法,其中若幀內預測運算模式為AVS的INTRA_8*8_DC模式,且該被預測塊周圍像素的像素值都可用,則R=0。
  11. 如申請專利範圍第10項所述之幀內預測方法,其中運算所述被選擇像素值之步驟更包括:依據該運算參數信號S,計算等式Tn’=(T0+T1+T2+R’)>>S’,以獲得運算結果Tn’;其中T0、T1與T2分別為該些運算結果Tn中n為0、1與2的運算結果,S’=S+1,且R’=1<<S。
  12. 如申請專利範圍第10項所述之幀內預測方法,其中運算所述被選擇像素值之步驟更包括:依據該運算參數信號S,計算等式Tn’=((T0+T1+T2)+(T0’+T1’+T2’)+R’)>>S’,以獲得運算結果Tn’; 其中(T0、T1、T2)與(T0’、T1’、T2’)分別為該些運算結果Tn中n為0、1與2先後的運算結果,S’=S+1,且R’=1<<S。
  13. 如申請專利範圍第9項所述之幀內預測方法,更包括:依據一選擇預測模式查找一輸入選擇控制表,以獲得並提供該輸入選擇控制信號;依據一選擇預測模式查找一運算參數表,以獲得並提供該運算參數信號;以及依據一選擇預測模式查找一輸出選擇控制表,以獲得並提供該輸出選擇控制信號。
TW98110238A 2009-03-27 2009-03-27 幀內預測方法及其裝置 TWI407797B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW98110238A TWI407797B (zh) 2009-03-27 2009-03-27 幀內預測方法及其裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW98110238A TWI407797B (zh) 2009-03-27 2009-03-27 幀內預測方法及其裝置

Publications (2)

Publication Number Publication Date
TW201036448A TW201036448A (en) 2010-10-01
TWI407797B true TWI407797B (zh) 2013-09-01

Family

ID=44856257

Family Applications (1)

Application Number Title Priority Date Filing Date
TW98110238A TWI407797B (zh) 2009-03-27 2009-03-27 幀內預測方法及其裝置

Country Status (1)

Country Link
TW (1) TWI407797B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030223645A1 (en) * 2002-05-28 2003-12-04 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode estimation
WO2003105070A1 (en) * 2002-06-01 2003-12-18 Nokia Corporation Spatial prediction based intra coding
US20060088103A1 (en) * 2004-10-26 2006-04-27 Nec Corporation Image encoder and method thereof, computer program of image encoder, and mobile terminal
JP2008118607A (ja) * 2006-10-11 2008-05-22 Victor Co Of Japan Ltd ネットワークデコーダ装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030223645A1 (en) * 2002-05-28 2003-12-04 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode estimation
WO2003105070A1 (en) * 2002-06-01 2003-12-18 Nokia Corporation Spatial prediction based intra coding
US20060088103A1 (en) * 2004-10-26 2006-04-27 Nec Corporation Image encoder and method thereof, computer program of image encoder, and mobile terminal
JP2008118607A (ja) * 2006-10-11 2008-05-22 Victor Co Of Japan Ltd ネットワークデコーダ装置

Also Published As

Publication number Publication date
TW201036448A (en) 2010-10-01

Similar Documents

Publication Publication Date Title
JP5006390B2 (ja) 算術および初等関数ユニットを有する図形プロセッサ
JP6388865B2 (ja) 相互関係のある二次元データセットを効率的かつ高速に処理するプロセッサ、システム、および方法
US8509567B2 (en) Half pixel interpolator for video motion estimation accelerator
JPH04128982A (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
US5896307A (en) Method for handling an underflow condition in a processor
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
CN107563951A (zh) 在二维图像处理器上的统计操作
WO2022110386A1 (zh) 数据处理方法及人工智能处理器
US5905661A (en) Method for handling an overflow condition in a processor
WO2019041264A1 (zh) 图像处理装置、方法及相关电路
US20130222413A1 (en) Buffer-free chroma downsampling
TWI407797B (zh) 幀內預測方法及其裝置
Lo et al. Improved SIMD architecture for high performance video processors
KR20180039078A (ko) Simd 명령들을 사용하는 테이블 룩업
US6380987B1 (en) Motion vector detection circuit enabling high-speed search of motion vector
US7783861B2 (en) Data reallocation among PEs connected in both directions to respective PEs in adjacent blocks by selecting from inter-block and intra block transfers
CN102291584B (zh) 帧内图像亮度块预测装置及方法
US7996657B2 (en) Reconfigurable computing circuit
CN113253972A (zh) 一种lac中稀疏多项式乘法加速器的fpga实现方法
US10545328B2 (en) Method and apparatus for processing image
TWI493476B (zh) 影像處理電路與方法
JPWO2009095959A1 (ja) 直交変換装置および集積回路
JP4290608B2 (ja) 画像処理回路,及び画像処理方法
US20100202518A1 (en) Method and apparatus for computing a sliding sum of absolute differences
JP2006201914A (ja) 画像フィルタ装置、方法およびコンピュータプログラム