(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、添付された図面を参照し、本発明の望ましい実施形態による映像のイントラ予測符号化、イントラ予測復号化の装置及びその方法について説明する。
【0015】
図1は、本発明の一実施形態による映像符号化装置のブロック図を示したものである。
図1を参照すれば、映像符号化装置100は、イントラ予測部110、動き推定部120、動き補償部125、周波数変換部130、量子化部140、エントロピ符号化部150、逆量子化部160、周波数逆変換部170、デブロッキング部180及びループ・フィルタリング部190を具備する。
【0016】
動き推定部120及び動き補償部125は、現在ピクチャを分割した所定サイズのブロックの予測値を、参照ピクチャで探索するインター予測を行う。
【0017】
イントラ予測部110は、現在ブロックの予測値を、現在ピクチャの周辺ブロックのピクセルを利用して求めるイントラ予測を行う。特に、本発明の一実施形態によるイントラ予測部110は、従来技術によるイントラ予測モード以外に、(dx,dy)パラメタを利用した多様な方向性を有するイントラ予測モードを付加的に遂行する。本発明の一実施形態によって、付加するイントラ予測モードについては後述する。
【0018】
イントラ予測部110、動き補償部125から出力された予測値に基づいて、現在ブロックの残差値が生成され、生成された残差値は、周波数変換部130及び量子化部140を経て、量子化された変換係数として出力される。
【0019】
量子化された変換係数は、逆量子化部160、周波数逆変換部170を介して、再び残差値に復元され、復元された残差値は、デブロッキング部180及びループ・フィルタリング部190を経て後処理され、参照フレーム195として出力される。量子化された変換係数は、エントロピ符号化部150を経て、ビットストリーム155として出力される。
【0020】
以下、
図1のイントラ予測部110で行われるイントラ予測について具体的に説明する。本発明について説明するにおいて、16x16サイズのマクロブロックを基準に符号化を行うH.264のような従来技術によるコーデックに限定されるものではなく、16x16サイズより大きいか、あるいは小さいブロック単位を符号化単位にして圧縮符号化を行うことができるコーデックを仮定し、映像の圧縮効率を向上させるためのイントラ予測方法を記述する。
【0021】
図2は、本発明の一実施形態による現在ブロックの大きさによるイントラ予測モードの個数を図示する。
【0022】
本発明の一実施形態によれば、ブロックの大きさによってブロックに適用するイントラ予測モードの個数を多様に設定することができる。一例として、
図2を参照すれば、イントラ予測されるブロックの大きさをNxNとするとき、2x2,4x4,8x8,16x16,32x32,64x64,128x128サイズのブロックそれぞれについて実際遂行されるイントラ予測モードの個数は、それぞれ5,9,9,17,33,5,5個(Example 2の場合)に設定される。このように、ブロックの大きさによって、実際遂行されるイントラ予測モードの個数を差別化する理由は、ブロックの大きさによって、予測モード情報を符号化するためのオーバーヘッドが異なるからである。換言すれば、小サイズブロックの場合、全体映像で占める部分が小さいにもかかわらず、このような小ブロックの予測モードなどの付加情報を伝送するためのオーバーヘッドが増加することがある。従って、小ブロックを過度に多くの予測モードで符号化する場合、ビット量が増加し、圧縮効率が低下することがある。また、大サイズを有するブロック、例えば、64x64以上の大きさを有するブロックは、一般的に、映像の平坦な領域で選択される場合が多いので、このような平坦な領域を符号化するのに多く選択される大サイズのブロックを過度に多くの予測モードで符号化することも、圧縮効率側面で非効率的である。
【0023】
従って、本発明の一実施形態によれば、ブロックがN1xN1(2≦N1≦8、N1は整数)、N2xN2(16≦N2≦32、N2は整数)、N3xN3(64≦N3、N3は整数)の少なくとも3種の大きさに大別され、N1xN1サイズを有するブロックごとに遂行されるイントラ予測モードの個数をA1(A1は、正の整数)、N2xN2サイズを有するブロックごとに遂行されるイントラ予測モードの個数をA2(A2は、正の整数)、N3xN3サイズを有するブロックごとに遂行されるイントラ予測モードの個数をA3(A3は正の整数)とするとき、A3≦A1≦A2の関係を満足するように、各ブロックの大きさによって遂行されるイントラ予測モードの個数を設定することが望ましい。すなわち、現在ピクチャが、小サイズのブロック、中間サイズのブロック、大サイズのブロックに大別されるとき、中間サイズの符号化単位が最も多数の予測モードを有し、小サイズのブロック及び大サイズのブロックは、相対的にさらに少ない数の予測モードを有するように設定することが望ましい。ただし、ここに限定されるものではなく、小サイズ及び大サイズのブロックについても、さらに多数の予測モードを有するように設定することもできるであろう。
図2に図示された各ブロックの大きさによる予測モードの個数は、一実施形態に過ぎず、各ブロックの大きさによる予測モードの個数は、変更されるものである。
【0024】
図3は、本発明の一実施形態による所定サイズのブロックに適用されるイントラ予測モードの一例について説明するための図面である。
【0025】
図2及び
図3を参照すれば、一例として、4×4サイズを有するブロックのイントラ予測時に、垂直(vertical)モード(モード0)、水平(horizontal)モード(モード1)、DC(direct current)モード(モード2)、対角線左側(diagonal down-left)モード(モード3)、対角線右側(diagonal down-right)モード(モード4)、垂直右側(vertical−right)モード(モード5)、水平下側(horizontal−down)モード(モード6)、垂直左側(vertical−left)モード(モード7)及び水平上側(horizontal−up)モード(モード8)を有することができる。
【0026】
図4は、
図3のイントラ予測モードの方向を示す図面である。
図4で、矢印の先端にある数字は、その方向に予測を行う場合の当該モード値を示す。ここで、モード2は、方向性のないDC予測モードであって、図示されていない。
【0027】
図5は、
図3に図示されたブロックに係わるイントラ予測方法を図示した図面である。
図5を参照すれば、ブロックの大きさによって決定された利用可能なイントラ予測モードによって、現在ブロックの周辺ピクセルであるA〜Mを利用して予測ブロックを生成する。例えば、
図3のモード0、すなわち、垂直モードによって、4×4サイズの現在ブロックを予測符号化する動作について説明する。まず、4×4サイズの現在ブロックの上側に隣接したピクセルAないしDのピクセル値を、4×4現在ブロックのピクセル値と予測する。すなわち、ピクセルAの値を、4×4現在ブロックの最初の列に含まれた4個のピクセル値、ピクセルBの値を、4×4現在ブロックの2列目に含まれた4個のピクセル値、ピクセルCの値を、4×4現在ブロックの3列目に含まれた4個のピクセル値、ピクセルDの値を、4×4現在ブロックの4列目に含まれた4個のピクセル値と予測する。次に、ピクセルAないしDを利用して予測された4×4現在ブロックと、本来の4×4現在ブロックとに含まれたピクセル値とを減算して残差を求めた後、その残差を符号化する。
【0028】
図6は、本発明の一実施形態による所定サイズのブロックに適用されるイントラ予測モードの他の例について説明するための図面である。
【0029】
図2及び
図6を参照すれば、一例として、2×2サイズまたは128x128サイズを有するブロックのイントラ予測時に、垂直(vertical)モード、水平(horizontal)モード、DC(direct current)モード、プレーン(plane)モード及び対角線右側(diagonal down−right)モードの全5個のモードが利用される。
【0030】
一方、
図2に図示されたように、32x32サイズを有する符号化単位が、33個のイントラ予測モードを有するとするとき、33個のイントラ予測モードの方向を設定する必要がある。本発明の一実施形態では、
図4及び
図6に図示されたようなイントラ予測モード以外に、多様な方向のイントラ予測モードを設定するために、ブロック内の各ピクセルを中心に、参照ピクセルとして利用される周辺ピクセルを選択するための予測方向を、dx,dyパラメータを利用して設定する。一例として、33個の予測モードをそれぞれmode N(Nは、0から32までの整数)と定義するとき、mode 0は、垂直モード、mode 1は、水平モード、mode 2は、DCモード、mode 3は、プレーンモードに設定し、mode 4〜mode 31それぞれは、次の表1に表記したような(1,−1)、(1,1)、(1,2)、(2,1)、(1,−2)、(2,1)、(1,−2)、(2,−1)、(2,−11)、(5,−7)、(10,−7)、(11,3)、(4,3)、(1,11)、(1,−1)、(12,−3)、(1,−11)、(1,−7)、(3,−10)、(5,−6)、(7,−6)、(7,−4)、(11,1)、(6,1)、(8,3)、(5,3)、(5,7)、(2,7)、(5,−7)、(4,−3)のうち1つの値に表現される(dx,dy)を利用し、tan
−1(dy/dx)の方向性を有する延長性を利用した予測モードで定義する。
【0031】
【表1】
最後のmode 32は、
図10を利用して説明するように、双線形(bilinear)補間を利用する双線形モードに設定される。
【0032】
図7ないし
図9は、本発明の一実施形態による多様な方向性を有するイントラ予測モードについて説明するための参照図である。
【0033】
表1を参照して説明したように、本発明の一実施形態によるイントラ予測モードは、複数個の(dx,dy)パラメータを利用し、tan
−1(dy/dx)の多様な方向性を有することができる。
【0034】
図7を参照すれば、現在ブロック内部の予測しようとする現在ピクセルPを中心に、表1に表記したモード別(dx,dy)の値によって決まるtan
−1(dy/dx)の勾配を有する延長線700上に位置した周辺ピクセルA,Bを、現在ピクセルPの予測子として利用する。このとき、予測子として利用される周辺ピクセルは、以前に符号化されて復元された、現在ブロックの上側、左側、右上側及び左下側に位置した周辺ブロックのピクセルであることが望ましい。また、延長線700が、整数位置の周辺ピクセルではない整数位置周辺ピクセル間を通過する場合、延長線700に近い周辺ピクセルのうち、現在ピクセルPにさらに近い周辺ピクセルを予測子として利用したり、あるいは、延長線700に近い周辺ピクセルを利用して、予測を行うことができる。例えば、延長線700に近い周辺ピクセルの平均値、または延長線700の交差点間の距離を考慮した加重平均値を、現在ピクセルPの予測子として利用することができる。また、
図7に図示されたように、周辺ピクセルA,Bのように、予測方向に沿って利用可能なx軸上の周辺ピクセル、及びy軸上の周辺ピクセルのうち、いずれのピクセルを利用するかということは、ブロック単位別にシグナリングすることができる。
【0035】
図8は、本発明の一実施形態による所定の勾配を有する延長線が、整数位置の周辺ピクセルではない整数位置周辺ピクセル間を通過する場合、予測子を生成する過程について説明するための参照図である。
【0036】
図8を参照すれば、モード別(dx,dy)の値によって定められるtan
−1(dy/dx)の角度を有する延長線800が、整数ピクセル位置の周辺ピクセルA 810及びB 820間を通過する場合、前述のように、延長線800に近い周辺ピクセルA 810及びB 820と延長線800の交差点までの距離を考慮した加重平均値を、現在ピクセルPの予測子として利用することができる。例えば、tan
−1(dy/dx)の角度を有する延長線800の交差点と、周辺ピクセルA 810との距離をf、交差点と、周辺ピクセルB 820との距離をgとすれば、現在ピクセルPの予測子は、(A*g+B*f)/(f+g)のように獲得される。ここで、f及びgは、整数に正規化された距離であることが望ましい。実際、ソフトウェアやハードウェアで具現するときに、現在ピクセルPの予測子は、(g*A+f*B+2)>>2のように、シフト演算を介して具現される。
図8に図示されたように、延長線800が、整数ピクセル位置の周辺ピクセルA 810と、周辺ピクセルB 820との間を4等分した地点のうち、周辺ピクセルA 810と近い1/4位置を通る場合、現在ピクセルPの予測子は、(3*A+B)/4のように獲得される。かような演算は、(3*A+B+2)>>2のように、四捨五入過程を考慮したシフト演算を介して具現されるのである。
【0037】
図9は、本発明の一実施形態によって、所定の勾配を有する延長線が、整数位置周辺ピクセル間を通過する場合、予測子を生成する実施形態について説明するための他の参照図である。
【0038】
図9を参照すれば、モード別(dx,dy)の値によって決まるtan
−1(dy/dx)の角度を有する延長線が、整数ピクセル位置の周辺ピクセルA 910及びB 920間を通過する場合、周辺ピクセルA 910及び周辺ピクセルB 920間の区間を所定個数で分割し、各分割された領域別に、周辺ピクセルA 910及び周辺ピクセルB 920と交差点との距離を考慮した加重平均値を予測値として利用することができる。例えば、周辺ピクセルA 910及び周辺ピクセルB 920間の区間を、図示されたように、5個の区間P1ないしP5に分離し、各区間別に、周辺ピクセルA 910及び周辺ピクセルB 920と交差地点との距離を考慮した代表加重平均値を決定し、かような代表加重平均値を、現在ピクセルPの予測子として利用することができる。具体的には、延長線が区間P1を通過する場合、現在ピクセルPの予測子として、周辺ピクセルA 910の値を決定することができる。延長線が区間P2を通過する場合、区間P2の中間地点と、周辺ピクセルA 910及び周辺ピクセルB 920との距離を考慮した加重平均値である(3*A+1*B+2)>>2を、現在ピクセルの予測子として決定することができる。延長線が区間P3を通過する場合、区間P3の中間地点と、周辺ピクセルA 910及び周辺ピクセルB 920との距離を考慮した加重平均値である(2*A+2*B+2)>>2を、現在ピクセルの予測子として決定することができる。延長線が区間P4を通過する場、合区間P4の中間地点と、周辺ピクセルA 910及び周辺ピクセルB 920との距離を考慮した加重平均値である(1*A+3*B+2)>>2を現在ピクセルの予測子として決定することができる。延長線が区間P5を通過する場合、現在ピクセルの予測子として、周辺ピクセルB 920の値を決定することができる。
【0039】
また、前述の
図7に図示されたように、延長線と出合う上側の周辺ピクセルA及び左側の周辺ピクセルBの2つの周辺ピクセルが存在する場合、上側の周辺ピクセルA及び左側の周辺ピクセルBの平均値を、現在ピクセルPの予測子として利用したり、またはdx*dy値が正の数である場合には、上側の周辺ピクセルAを利用し、dx*dy値が負数である場合には、左側の周辺ピクセルBを利用することができる。
【0040】
表1に表記したような多様な方向性を有するイントラ予測モードは、符号化端と復号化端とであらかじめ設定され、各ブロックごとに設定されたイントラ予測モードの当該インデックスだけが伝送されるようにすることが望ましい。
【0041】
図10は、本発明の一実施形態による双線形モードについて説明するための参照図である。
図10を参照すれば、双線形(bilinear)モードは、現在ブロック内部の予測しようとする現在ピクセルPを中心に、現在ピクセルP及びその上下左右境界のピクセル値、現在ピクセルPの上下左右境界までの距離を考慮した幾何平均値を計算し、その結果値を現在ピクセルPの予測子として利用するものである。すなわち、双線形モードでは、現在ピクセルPの予測子として、現在ピクセルPの上下左右境界に位置したピクセルA 1061、ピクセルB 1002、ピクセルD 1006及びピクセルE 1007から、現在ピクセルPの上下左右境界までの距離の幾何平均値を利用する。このとき、双線形モードも、イントラ予測モードのうち一つであるので、予測時の参照ピクセルとして、以前に符号化された後で復元された上側と左側との周辺ピクセルを利用しなければならない。従って、ピクセルA 1061及びピクセルB 1002として、現在ブロック内部の当該ピクセル値をそのまま利用するのではなく、上側及び左側の周辺ピクセルを利用して生成された仮想のピクセル値を利用する。
【0042】
具体的には、まず、次の数式(1)のように、現在ブロックに隣接した上側最右側の周辺ピクセル(RightupPixel)1004及び左側最下側の周辺ピクセル(LeftDownPixel)1005の平均値を計算することにより、現在ブロックの右側最下端位置の仮想のピクセルC 1003を計算する。
【0043】
【数1】
数式(1)は、シフト演算を利用して、次の数式C=0.5(LeftDownPixel+RightupPixel+1)>>1のように計算される。
【0044】
次に、現在ピクセルPの左側境界までの距離(W1)及び右側境界までの距離(W2)を考慮し、現在ピクセルPを下端に延長させたとき、最下側境目に位置する仮想のピクセルA 1061の値は、距離(W1,W2)を考慮し、左側最下側の周辺ピクセル(LeftDownPixel)1005と、ピクセルC 1003との平均値を利用して設定される。一例として、ピクセルA 1061の値は、次の数式(2)のうちいずれか一つに計算される。
【0045】
【数2】
数式(2)で、(W1+W2)が2^nのように、2の指数乗の値を有する場合、A=(C*W1+LeftDownPixel*W2+((W1+W2)/2))/(W1+W2)は、A=(C*W1+LeftDownPixel*W2+2^(n−1))>>nのようにシフト演算を介して、除法演算なしに計算される。
【0046】
同様に、現在ピクセルPの上側境界までの距離(h1)、及び下側境界までの距離(h2)を考慮し、現在ピクセルPを右側に延長させたとき、最右側境目に位置する仮想のピクセルB 1002の値は、距離(h1,h2)を考慮し、上側最右側の周辺ピクセル(RightupPixel)1004と、ピクセルC 1003との平均値を利用して設定される。一例として、ピクセルB 1002の値は、次の数式(3)のうちいずれか一つに計算される。
【0047】
【数3】
数式(3)で、(h1+h2)が、2^mのように、2の指数乗の値を有する場合、B=(C*h1+RightupPixel*h2+((h1+h2)/2))/(h1+h2)は、B=(C*h1+RightupPixel*h2+2^(m−1))>>mのように、シフト演算を介して除法演算なしに計算される。
【0048】
数式(1)ないし(3)を利用して、現在ピクセルP 1060の下側境界線上の仮想のピクセルA 1061及び右側境界線上の仮想のピクセルB 1002の値が決定されれば、(A+B+D+E)の平均値を利用して、現在ピクセルP 1060の予測子を決定することができる。具体的には、現在ピクセルP 1060の予測子として、前述の(A+B+D+E)の平均値を利用したり、あるいは現在ピクセルP 1060と、仮想のピクセルA 1061、仮想のピクセルB 1002、ピクセルD 1006及びピクセルE 1007との距離を考慮した加重平均値を利用することができる。例えば、
図10で、ブロックサイズが16x16であるというとき、加重平均値を利用する場合、現在ピクセルPの予測子は、(h1*A+h2*D+W1*B+W2*E+16)>>5のように獲得される。かような双線形予測過程は、現在ブロック内部の全てのピクセルについて適用され、双線形予測モードによる現在ブロックの予測ブロックが生成される。
【0049】
本発明の一実施形態によれば、ブロックの大きさによって多様に設定されたイントラ予測モードによって予測符号化を行うことにより、映像の特性によって、さらに効率的な圧縮が可能になる。
【0050】
一方、本発明の一実施形態によれば、従来コーデックで利用されるイントラ予測モードの個数に比べ、多い個数のイントラ予測モードを利用するから、従来コーデックと互換性が問題になることがある。従って、本発明の一実施形態によって、利用可能な多様な方向のイントラ予測モードを、さらに少数のイントラ予測モードのうち一つとマッピングさせる必要がある。すなわち、現在ブロックの利用可能なイントラ予測モードの個数を、N1(N1は整数)とするとき、現在ブロックの利用可能なイントラ予測モードと異なるN2(N2は整数)個のイントラ予測モードを有するブロックとのイントラ予測モードの互換のために、現在ブロックのイントラ予測モードを、N2個のイントラ予測モードのうち、最も類似した方向のイントラ予測モードにマッピングすることができる。例えば、現在ブロックについて説明した表1のように、全33個のイントラ予測モードが利用可能であり、現在ブロックに最終的に適用されたイントラ予測モードは、mode 14、すなわち、(dx,dy)=(4,3)の場合であり、tan
−1(3/4)≒36.87(°)の方向性を有すると仮定する。この場合、現在ブロックに適用されたイントラ予測モードを、
図4に図示されたような9個のイントラ予測モードのうち一つにマッチングさせるために、36.87(°)の方向性と最も類似した方向を有するmode 4(down_right)モードが選択される。すなわち、表1のmode 14は、
図4に図示されたmode 4にマッピングされる。同様に、現在ブロックに適用されたイントラ予測モードが、表1の全33個の利用可能なイントラ予測モードのうち、mode 15、すなわち、(dx,dy)=(1,11)である場合に選択されれば、現在ブロックに適用されたイントラ予測モードの方向性は、tan
−1(11)≒84。80(°)を有するので、かような方向性と最も類似した
図4のmode 0(vertical)モードにマッピングされる。
【0051】
一方、イントラ予測を介して符号化されたブロックを復号化するためには、現在ブロックがいかなるイントラ予測モードを介して符号化されたに係わる予測モード情報が必要である。従って、映像の符号化時に、現在ブロックのイントラ予測モードについての情報をビットストリームに付加するが、各ブロックごとに、イントラ予測モード情報をそのままビットストリームに付加する場合、オーバーヘッドが増加して圧縮効率が低下してしまう。従って、現在ブロックの符号化の結果として決定されたイントラ予測モードについての情報がそのまま伝送されるのではなく、周辺ブロックから予測されたイントラ予測モードの予測値と、実際イントラ予測モード値との差値だけが伝送される。
【0052】
本発明の一実施形態によって、多様な方向のイントラ予測モードを利用する場合、ブロックの大きさによって利用可能なイントラ予測モードの個数に違いがある。従って、現在ブロックのイントラ予測モードを予測するためには、まず、周辺ブロックのイントラ予測モードを代表イントラ予測モードにマッピングさせる必要がある。ここで、代表イントラ予測モードは、利用可能な周辺ブロックのイントラ予測モードのうち、さらに少ない個数のイントラ予測モードであるか、
図14に図示される9個のイントラ予測モードであることが望ましい。
【0053】
図11は、本発明の一実施形態によって、現在ブロックのイントラ予測モードの予測値を生成する過程について説明するための図面である。
図11を参照すれば、現在ブロックをA 110とするとき、現在ブロックA110のイントラ予測モードは、周辺ブロックで決定されたイントラ予測モードから予測される。例えば、現在ブロックA 110の左側ブロックB 111の決定されたイントラ予測モードがmode 3であり、上側ブロックC 112のイントラ予測モードがmode 4とすれば、現在ブロックA110のイントラ予測モードは、上側ブロックC 112及び左側ブロックB 111の予測モードのうち、小さい値を有するmode 3で予測される。もし現在ブロックA110に係わる実際イントラ予測符号化の結果として決定されたイントラ予測モードがmode 4であるならば、イントラ予測モード情報として、周辺ブロックB,Cから予測されたイントラ予測モードの値であるmode 3との差である1のみを伝送し、復号化時に、前述のところと同一な方法で、現在ブロックのイントラ予測モードの予測値を生成し、ビットストリームを介して伝送されたモード差値を、イントラ予測モードの予測値に加算し、現在ブロックに実際適用されたイントラ予測モード情報を獲得することができる。前述の説明では、現在ブロックの上側及び左側に位置した周辺ブロックのみを利用することを中心に説明したが、それ以外にも、
図11のE及びDのような他の周辺ブロックを利用して、現在ブロックA 110のイントラ予測モードを予測することができるであろう。
【0054】
一方、ブロックの大きさによって実際遂行されるイントラ予測モードが異なるために、周辺ブロックから予測されたイントラ予測モードは、現在ブロックのイントラ予測モードとマッチングされないこともある。従って、互いに異なる大きさを有する周辺ブロックから、現在ブロックのイントラ予測モードを予測するためには、互いに異なるイントラ予測モードを有するブロック間のイントラ予測モードを統一させるマッピング(mapping)過程が必要である。
【0055】
図12及び
図13は、本発明の一実施形態によって、互いに異なる大きさを有するブロック間のイントラ予測モードのマッピング過程について説明するための参照図である。
【0056】
図12を参照すれば、現在ブロックA 120は、16x16サイズ、左側ブロックB 121は、8x8サイズ、上側ブロックC 122は、4x4の大きさを有すると仮定する。また、前述の
図2の第1例のように、4x4,8x8,16x16サイズのブロックとして利用可能なイントラ予測モードの個数が、それぞれ9,9,33個と差があると仮定する。この場合、左側ブロックB 121及び上側ブロックC 122として利用可能なイントラ予測モードと、現在ブロックA 120として利用可能なイントラ予測モードは異なるので、左側ブロックB 121及び上側ブロックC 122から予測されたイントラ予測モードは、現在ブロックA 120のイントラ予測モードの予測値として利用するのに適していない。従って、本発明の一実施形態によれば、周辺ブロックB 121及び周辺ブロックC 122のイントラ予測モードを、
図14に図示されたような所定個数の代表イントラ予測モードのうち、最も類似した方向の第1代表イントラ予測モード及び第2代表イントラ予測モードにそれぞれ変更し、第1代表イントラ予測モード及び第2代表イントラ予測モードのうち、さらに小さいモード値を有するものを最終的な代表イントラ予測モードとして選択する。そして、現在ブロックA 120の大きさによって利用可能なイントラ予測モードのうち選択された最終代表イントラ予測モードと最も類似した方向を有するイントラ予測モードを、現在ブロックA 120のイントラ予測モードとして予測する。
【0057】
他の例として、
図13を参照すれば、現在ブロックA130は、16x16サイズ、左側ブロックB 133は、32x32サイズ、上側ブロックC 132は、8x8サイズを有すると仮定する。また、前述の
図2の第1例のように、8x8,16x16,32x32サイズのブロックとして利用可能なイントラ予測モードの個数が、それぞれ9,9,33個と差があると仮定する。また、左側ブロックB 133のイントラ予測モードをmode 4、上側ブロックC 132のイントラ予測モードをmode 31と仮定する。この場合、左側ブロックB 133と、上側ブロックC 132のイントラ予測モードは、互換されないので、左側ブロックB 133と上側ブロックC 132とのイントラ予測モードを、それぞれ
図14に図示されたような代表イントラ予測モードのうち一つにマッピングする。表1に記載したように、左側ブロックB 133のイントラ予測モードであるmode 31は、(dx,dy)=(4,−3)の方向性を有するので、左側ブロックB 133のイントラ予測モードmode 31は、
図14の代表イントラ予測モードのうち、tan
−1(−3/4)と最も類似した方向性を有するmode 5にマッピングされ、上側ブロックC 132のイントラ予測モードであるmode 4は、
図14の代表イントラ予測モードのうち、mode 4と同一の方向性を有するので、そのままmode 4にマッピングされる。
【0058】
次に、左側ブロックB 133のマッピングされたイントラ予測モードmode 5と、上側ブロックC 132のマッピングされたイントラ予測モードmode 4とのうち、さらに小さいモード値を有するmode 4が、現在ブロックA130のイントラ予測モードの予測値として決定され、現在ブロックA130の実際イントラ予測モードと、予測されたイントラ予測モードとのモード差値だけが、現在ブロックA130の予測モード情報として符号化される。
【0059】
図14は、本発明の一実施形態によって、周辺ブロックのイントラ予測モードを代表イントラ予測モードのうち一つにマッピングする過程について説明するための参照図である。
図14では、代表イントラ予測モードとして、垂直モード、水平モード、DC(direct current)モード、対角線左側モード、対角線右側モード、垂直右側モード、垂直左側モード、水平上側モード及び水平下側モードが設定された場合を図示している。しかし、代表イントラ予測モードは、図示されたところに限定されるものではなく、多様な個数の方向性を有するように設定される。
【0060】
図14を参照すれば、あらかじめ所定個数の代表イントラ予測モードを設定し、周辺ブロックのイントラ予測モードを最も類似した方向の代表イントラ予測モードにマッピングする。例えば、周辺ブロックの決定されたイントラ予測モードが、MODE_A 140と図示された方向性を有せば、周辺ブロックのイントラ予測モードMODE_A 140は、9個のあらかじめ設定された代表イントラ予測モード1ないし9のうち、最も類似した方向を有するMODE 1にマッピングされる。もし周辺ブロックの決定されたイントラ予測モードが、MODE_B 141と図示された方向性を有せば、周辺ブロックのイントラ予測モードMODE_B 141は、9個のあらかじめ設定された代表イントラ予測モード1ないし9のうち、最も類似した方向を有するMODE 5にマッピングされる。
【0061】
このように、周辺ブロックの利用可能なイントラ予測モードが一致しない場合、周辺ブロックの各イントラ予測モードを代表イントラ予測モードにマッピングした後、周辺ブロックのマッピングされたイントラ予測モードのうち、最も小さいモード値を有するイントラ予測モードが、最終的な周辺ブロックの代表イントラ予測モードとして選択される。このように、さらに小さいモード値を有する代表イントラ予測モードを選択する理由は、一般的にさらに頻繁に発生するイントラ予測モードで、さらに小さいモード値が設定されているからである。すなわち、周辺ブロックから、互いに異なるイントラ予測モードが予測された場合、さらに小さいモード値を有するイントラ予測モードがさらに発生確率が高い予測モードであるので、互いに異なる予測モードが競合する場合、現在ブロックの予測モードの予測子として、さらに小さいモード値を有する予測モードを選択することが望ましい。
【0062】
周辺ブロックから、代表イントラ予測モードが選択されても、代表イントラ予測モードを、現在ブロックのイントラ予測モードの予測子としてそのまま利用することができない場合がある。例えば、前述の
図12のように、現在ブロックA 120が、33個のイントラ予測モードを有し、代表イントラ予測モードが、ただ9個のイントラ予測モードを有するならば、代表イントラ予測モードに対応する現在ブロックA 120のイントラ予測モードは存在しない。かような場合、前述の周辺ブロックのイントラ予測モードを代表イントラ予測モードにマッピングするところと同様に、現在ブロックの大きさによる利用可能なイントラ予測モードのうち、周辺ブロックから決定された代表イントラ予測モードと最も類似した方向を有するイントラ予測モードを、現在ブロックのイントラ予測モード予測子として最終的に選択することができる。例えば、
図14で、周辺ブロックから最終的に選択された代表イントラ予測モードがmode 6であるとするなら、現在ブロックの大きさによって利用可能なイントラ予測モードのうち、mode 6と最も類似した方向性を有するイントラ予測モードが、現在ブロックのイントラ予測モードの予測子として最終選択される。
【0063】
一方、前述の
図7を参照して説明したように、延長線700に位置したり、あるいは延長線700に近い周辺ピクセルを利用して、現在ピクセルPの予測子を生成する場合、延長線700は、実際にtan
−1(dy/dx)の方向性を有するが、かような方向性を計算するためには、(dy/dx)の除法演算が必要であるために、ハードウェアやソフトウェアで具現するとき、小数点演算を含むことがあり、演算量を増加させる要因になる。従って、本発明の一実施形態によれば、前述の表1に記載したところと同様に、参照ピクセルとして利用される周辺ピクセルを選択するための予測方向を、dx,dyパラメータを利用して設定するとき、演算量を減少させることができるように、dx,dyの値を設定することが望ましい。
【0064】
図15は、本発明の一実施形態によって、(dx,dy)の方向性を有する延長線上に位置した周辺ピクセルと、現在ピクセルとの関係について説明するための図面である。
【0065】
図15を参照すれば、現在ブロックの上側境界を基準に、i(iは整数)番目、左側境界を基準に、j(jは整数)番目の現在ピクセルP 1510の位置を、P(j,i)、現在ピクセルP 1510を通過するtan
−1(dy/dx)の方向性、すなわち、勾配を有する延長線上に位置した上側周辺ピクセルをA 1520、左側周辺ピクセルをB 1530と定義する。また、上側周辺ピクセルの位置を、座標平面上のx軸に該当させ、左側周辺ピクセルの位置を、座標平面上のy軸に該当させると仮定するとき、三角比を利用して、延長線と出合う上側周辺ピクセルA 1520は、(j+i*dx/dy,0)上、左側周辺ピクセルB 1530は、(0,i+j*dy/dx)上に位置するということが分かる。従って、現在ピクセルP 1510の予測のための上側周辺ピクセルA 1520または左側周辺ピクセルB 1530のうち、いずれか一つを決定するためには、dx/dyまたはdy/dxのような除法演算が必要である。前述のように、かような除法演算は、演算複雑度が高いから、ソフトウェアまたはハードウェアでの具現時に、演算速度の低下をもたらすことがある。
【0066】
従って、本発明の一実施形態では、イントラ予測に利用される周辺ピクセルを決定するための予測モードの方向性を示すdx及びdyのうち、少なくとも1つの値を2の指数乗でもって決定することができる。すなわち、n、mをそれぞれ整数とするとき、dx及びdyは、それぞれ2^n、2^mである。
【0067】
図15を参照すれば、現在ピクセルP 1510の予測子として、左側周辺ピクセルB 1530が利用されて、dxが2^nの値を有する場合、左側周辺ピクセルB 1530の位置である(0,i+j*dy/dx)を決定するために必要なj*dy/dx演算は、(i*dy)/(2^n)であり、かような2の指数乗で除法を遂行する演算は、(i*dy)>>nのように、シフト演算を介して具現されるので、演算量が減少する。
【0068】
同様に、現在ピクセルP 1510の予測子として、上側周辺ピクセルA 1520が利用されて、dyが2^mの値を有する場合、上側周辺ピクセルA 1520の位置である(j+i*dx/dy,0)を決定するために必要なi*dx/dy演算は、(i*dx)/(2^m)であり、かような2の指数乗で除法を遂行する演算は、(i*dx)>>mのように、シフト演算を介して具現される。
【0069】
図16は、本発明の一実施形態によって、現在ピクセルの位置によって、(dx,dy)の方向性を有する延長線上に位置した周辺ピクセルの変化について説明するための図面である。
【0070】
現在ピクセルの位置及び延長線の勾配によって、現在ピクセルを通過する延長線上に位置した周辺ピクセルは、上側周辺ピクセルまたは左側周辺ピクセルのうち一つが選択される。
【0071】
図16を参照すれば、現在ピクセルを、図面符号1610に図示されたP(j,i)であり、図示されたような勾配を有する延長線に位置した周辺ピクセルを利用して、現在ピクセルP 1610が予測されるとするとき、現在ピクセルP 1610の予測時に、上側ピクセルAが利用され、現在ピクセルを図面符号1620に図示されたQ(b,a)とする場合、現在ピクセルQ 1620の予測時に、左側ピクセルBが利用される。
【0072】
もし予測方向を示す(dx,dy)において、y軸方向のdy成分だけが2^m形態の2の指数乗値を有しているのであるなら、
図16で、上側ピクセルAは、(j+(i*dx)>>m,0)のように、除法演算なしにシフト演算などで決定されるが、左側ピクセルBは(、0,a+b*2^m/dx)のように除法演算が必要になる。従って、現在ブロックの全てのピクセルについて予測子を生成させるとき、除法演算を除外させるため、dx,dyいずれも2の指数乗形態を有することができる。
【0073】
図17及び
図18は、本発明の他の実施形態によって、イントラ予測モード方向を決定する方法について説明するための図面である。
【0074】
一般的には、映像やビデオ信号で示される直線パターンは、垂直方向や水平方向の場合が多い。従って、(dx,dy)のパラメータを利用して、多様な方向性を有するイントラ予測モードを定義するとき、次のように、dx,dyの値を定義することにより、映像のコーディング効率を向上させることができる。例えば、dx及びdyの絶対値は、水平方向に近い予測モード間の距離、または垂直方向に近い予測方向間の距離は、狭くなるように設定され、対角線方向に近い予測モード間の距離は、広くなるように設定される。
【0075】
具体的には、
図17を参照すれば、dyが2^mの値に固定された値を有する場合、dxの絶対値は、垂直方向に近い予測方向間の間隔は、狭いように設定され、水平方向に近い予測方向であればあるほど、予測モード間の間隔が広くなるように設定される。換言すれば、dxの絶対値は、垂直方向に近い予測方向間の距離は狭く、対角線(+45°または−45°)方向に近いほど、予測モード間の距離が広くなるように設定される。すなわち、dyは、2の指数乗の固定された値を有する場合、延長線の方向が垂直方向に近いほど間隔が狭く設定されるように、dxの絶対値は、0に近いほど間隔が狭く設定され、延長線の方向が水平方向に近いほど間隔が広く設定されるように、dxの絶対値は、0より大きくなるほど間隔が増大するように設定される。例えば、
図17に図示されたように、dyが2^4、すなわち、16の値を有する場合、dxの値を1、2、3、4、6、9、12、16、0,−1,−2,−3,−4,−6,−9,−12,−16のように設定することにより、垂直方向に近い延長線の間隔は狭く設定され、水平方向に近い延長線の間隔は広くなるように設定される。
【0076】
同様に、dxが2^nの値に固定された値を有する場合、dyの絶対値は、水平方向に近い予測方向間の間隔は狭く設定され、垂直方向に近い予測方向であればあるほど、予測モード間の間隔が広く設定される。換言すれば、dyの絶対値は、水平方向に近い予測方向間の距離は狭く、対角線(+45°または−45°)方向に近いほど予測モード間の距離が広くなるように設定される。すなわち、dxは、2の指数乗の固定された値を有する場合、延長線の方向が水平方向に近いほど間隔が狭く設定されるように、dyの絶対値は、0に近いほど間隔が狭く設定され、延長線の方向が水平方向に近いほど、間隔が広く設定されるように、dyの絶対値は、0より大きくなるほど、間隔が増大するように設定される。例えば、
図18に図示されたように、dxが2^4、すなわち、16の値を有する場合、dyの値を1、2、3、4、6、9、12、16、0,−1,−2,−3,−4,−6,−9,−12,−16のように設定することにより、水平方向に近い延長線間の間隔は狭く設定され、垂直方向に近い延長線間の間隔が広く設定される。
【0077】
また、dx及びdyのうちいずれか1つの値が固定されたとき、固定されていない残りの値は、予測モード別に増大するように設定される。具体的には、dyが固定された場合、dx間の間隔が所定値ほど増大するように設定される。例えば、dyの値が、16の固定された値を有する場合、dxは、予測モードによって、0、1、3、6、8のように、互いに異なるdx間の絶対値差が1ずつ増加されるように設定される。また、かような増加幅は、水平方向と垂直方向との角度を所定単位に区分し、区分された角度別に設定されもする。例えば、dyが固定された場合、dxの値は、延長線と垂直軸との角度が15°以内である区間では、互いに異なるdx間の絶対値差がaという増加幅を有し、15°と30°との間では、bという増加幅を有し、30°以上では、cという増加幅を有するように設定される。この場合、前述の
図17のような形態を有するためには、a<b<cになるように設定するのである。
【0078】
前述の
図15ないし
図18を介して説明した本発明の他の実施形態による予測モードは、次の表2ないし表4に表記したような(dx,dy)を利用して、tan
−1(dy/dx)の方向性を有する予測モードと定義することができる。
【0079】
【表2】
前述の
図15に図示されたように、現在ブロックの上側境界を基準にi番目、左側境界を基準にj番目の現在ピクセルPの位置をP(j,i)とし、現在ピクセルPを通過するtan
−1(dy/dx)の勾配を有する延長線上に位置した上側周辺ピクセルAは、(j+i*dx/dy,0)上に、左側周辺ピクセルBは、(0,i+j*dy/dx)上に位置する。従って、ソフトウェアやハードウェアでイントラ予測を具現するためには、i*dx/dy及びj*dy/dxのような演算が必要である。
【0080】
i*dx/dyのような演算が必要な場合、あらかじめdx/dy、または所定の整数Cが乗じられたC*dx/dyの可能な値をテーブルに保存し、実際イントラ予測時に、あらかじめ設けたテーブルの保存値を利用して、現在ピクセルのイントラ予測に利用される周辺ピクセルの位置を決定することができる。すなわち、前述の表1のように、予測モードによって決まる多様な(dx,dy)の値と、ブロックサイズによって決定されるi値とを考慮し、可能なi*dx/dyの値をテーブル化してあらかじめ保存し、イントラ予測に利用することができる。具体的には、C*dx/dyが、N(Nは整数)個の互いに異なる値を有するとするとき、互いに異なるN個のC*dx/dyの値を、dyval_table[n](n=0,…,N−1までの整数)に保存することができる。
【0081】
同様に、j*dy/dxのような演算が必要な場合、あらかじめdy/dx、または所定の整数Cが乗じられたC*dy/dxの可能な値をテーブルに保存し、実際イントラ予測時に、あらかじめ設けたテーブルの保存値を利用して、現在ピクセルのイントラ予測に利用される周辺ピクセルの位置を決定することができる。すなわち、前述の表1のように、予測モードによって決定される多様な(dx,dy)の値と、ブロックサイズによって決定されるj値とを考慮し、可能なj*dy/dxの値をテーブル化してあらかじめ保存し、イントラ予測に利用することができる。具体的には、C*dy/dxが、N個の互いに異なる値を有するとするとき、互いに異なるN個のC*dy/dxの値を、dxval_table[n](n=0,…,N−1までの整数)に保存することができる。
【0082】
このようにテーブル化され、あらかじめC*dx/dyまたはC*dy/dxの値が保存されれば、i*dx/dy及びj*dy/dxに対応するテーブルに保存された値を利用して、別途の演算なしに、現在ピクセルの予測に利用する周辺ブロックのピクセル位置を決定することができる。
【0083】
例えば、
図17に図示されたところと類似した形態に予測モードが形成されるように、dyが32であり、dxが、{0,2,5,9,13,17,21,26,32}のうち一つであり、定数Cが32である場合を仮定する。その場合、C*dy/dxは、32*32/dxであり、dxの値によって、{0,512,205,114,79,60,49,39,32}のような値のうち1つの値を有することになるので、かような{0,512,205,114,79,60,49,39,32}の値をテーブル化して保存し、イントラ予測に利用することができる。
【0084】
図19は、本発明の一実施形態による映像のイントラ予測符号化方法を示したフローチャートである。
図19を参照すれば、段階1910で、現在ピクチャを、所定サイズの少なくとも1つのブロックに分割する。前述のように、本発明の実施形態によれば、現在ピクチャは、16x16サイズのマクロブロックに限定されるものではなく、2x2,4x4,8x8,16x16,32x32,64x64,128x128サイズのブロック、またはそれ以上の大きさを有するブロックに分割される。
【0085】
段階1920で、現在ブロック内部の各ピクセルを中心に、所定の勾配を有する延長線を利用し、以前に復号化された周辺ブロックのピクセルのうち、現在ブロック内部の各ピクセルの予測に利用される周辺ブロックのピクセルを決定する。前述のように、現在ブロックの上側境界を基準にi番目、左側境界を基準にj番目の現在ピクセルPの位置をP(j,i)とし、現在ピクセルPを通過するtan
−1(dy/dx)の勾配を有する延長線上に位置した上側周辺ピクセルは、(j+i*dx/dy,0)上、左側周辺ピクセルは、(0,i+j*dy/dx)上に位置する。かような周辺ピクセルの位置を決定するために必要なdx/dy,dy/dxの演算量を減少させるために、dx及びdyのうち、少なくとも1つの値を2の指数乗形態に設定することが望ましい。また、可能なdx/dy及びdy/dxの値ま、たはdx/dy及びdy/dxの値に、所定の整数が乗じられた値をテーブル化してあらかじめ保存する場合、別途の演算なしに、テーブルで該当する値を検索することにより、周辺ブロックのピクセルを決定することができる。
【0086】
段階1930で、決定された周辺ブロックのピクセルを利用して、現在ブロック内部の各ピクセルを予測する。すなわち、周辺ブロックのピクセル値を、現在ブロックのピクセル値と予測し、現在ブロック内の各ピクセルについて、かような過程を反復することにより、現在ブロックの予測ブロックを生成する。
【0087】
図20は、本発明の一実施形態による映像復号化装置を示したブロック図である。
図20を参照すれば映像復号化装置2000は、パージング部2010、エントロピ復号化部2020、逆量子化部2030、周波数逆変換部2040、イントラ予測部2050、動き補償部2060、デブロッキング部2070及びループ・フィルタリング部2080を具備する。ここで、イントラ予測部2050は、本発明によるイントラ予測復号化装置に対応する。
【0088】
ビットストリーム2005がパージング部2010を経て復号化対象である現在ブロックの映像データ、及び復号化のために必要な符号化情報が抽出される。符号化された映像データは、エントロピ復号化部2020及び逆量子化部2030を経て逆量子化されたデータとして出力され、周波数逆変換部2040を経て、残差値に復元される。
【0089】
動き補償部2060及びイントラ予測部2050では、パージングされた現在ブロックの符号化情報を使用して、現在ブロックの予測ブロックを生成する。特に、本発明による前記イントラ予測部2050は、ビットストリームに具備されたイントラ予測モードによって決定された所定の勾配を有する延長線を利用し、以前に復号化された周辺ブロックのピクセルのうち、現在ブロック内部の各ピクセルの予測に利用される周辺ブロックのピクセルを決定する。前述のように、周辺ピクセルの位置を決定するために必要なdx/dy,dy/dxの演算量を減少させるために、dx及びdyのうち、少なくとも1つの値が2の指数乗形態に設定されていることが望ましい。また、イントラ予測部2050は、可能なdx/dy及びdy/dxの値、またはdx/dy及びdy/dxの値に所定の整数が乗じられた値をテーブル化してあらかじめ保存し、テーブルで該当する値を検索することにより、周辺ブロックのピクセルを決定し、決定された周辺ブロックのピクセルを利用して、イントラ予測を行うことができる。
【0090】
動き補償部2060またはイントラ予測部2050で生成された予測ブロックと、残差値とが加算され、現在ブロックが復元される。復元された現在ブロックは、デブロッキング部2070及びループ・フィルタリング部2080を経て、次のブロックの参照データに利用される。
【0091】
図21は、本発明の一実施形態による映像のイントラ予測復号化方法を示したフローチャートである。
図21を参照すれば、段階2110で、現在ピクチャを、所定サイズの少なくとも1つのブロックに分割する。
【0092】
段階2120で、ビットストリームから、復号化される現在ブロックに適用されたイントラ予測モード情報を抽出する。イントラ予測モード情報は、前述のように、(dx,dy)パラメータを利用して定義される多様な方向性を有するイントラ予測モードのモード値、または周辺ブロックから予測された予測イントラ予測モードと、実際現在ブロックのイントラ予測モードとのモード差値である。もしモード差値が、予測モード情報として伝送された場合、イントラ予測部2050は、以前に復号化された周辺ブロックのイントラ予測モードから、現在ブロックのイントラ予測モードを予測して予測イントラ予測モードを決定し、ビットストリームから抽出されたモード差値と、予測イントラ予測モードのモード値とを加え、現在ブロックのイントラ予測モードを決定する。
【0093】
段階2130で、イントラ予測部2050は、抽出された予測モードによる所定の勾配を有する延長線を利用し、以前に復号化された周辺ブロックのピクセルのうち、現在ブロック内部の各ピクセルの予測に利用される周辺ブロックのピクセルを決定する。前述のように、現在ブロックの上側境界を基準にi番目、左側境界を基準にj番目の現在ピクセルPの位置をP(j,i)とし、現在ピクセルPを通過するtan
−1(dy/dx)の勾配を有する延長線上に位置した上側周辺ピクセルは、(j+i*dx/dy,0)上、左側周辺ピクセルは、(0,i+j*dy/dx)上に位置する。周辺ピクセルの位置を決定するために必要なdx/dy,dy/dxの演算量を減少させるために、dx及びdyのうち少なくとも1つの値は、2の指数乗形態を有することが望ましい。また、可能なdx/dy及びdy/dxの値、またはdx/dy及びdy/dxの値に所定の整数が乗じられた値をテーブル化してあらかじめ保存し、テーブルで該当する値を検索することにより、周辺ブロックのピクセルを決定することができる。そして、イントラ予測部2050は、決定された周辺ブロックのピクセル値を、現在ブロックのピクセル値と予測し、現在ブロック内の各ピクセルについて、かような過程を反復することにより、現在ブロックの予測ブロックを生成する。
【0094】
一方、前述の本発明の実施形態は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用し、前記プログラムを動作させる汎用デジタルコンピュータで具現される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM(read-only memory)、フロッピー(登録商標)ディスク、ハードディスクなど)である。
【0095】
例示的な実施形態の装置、エンコーダ及びデコーダは、装置のあらゆるユニットと結合されたバス、前述の機能を実行する装置のオペレーションを制御し、命令を行う少なくとも1つのプロセッサ(例えば、中央処理装置、マイクロプロセッサなど)、及びバスに接続され、命令を保存し、かつメッセージを受け取って発生させるメモリを含んでもよい。
【0096】
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野で当業者であるならば、本発明が本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないものである。