本明細書で使用される用語は本発明における機能を考慮しながらできるだけ現在広く使用されている一般的な用語を選択したが、これは当分野に携わる技術者の意図、慣例または新たな技術の出現などによって異なり得る。また、特定の場合は出願人が任意に選定した用語もあるが、この場合、該当の発明を実施する形態の部分においてその意味を記載する。よって、本明細書で使用される用語は、単なる用語の名称ではなく、その用語の有する実質的な意味と本明細書全般にわたる内容に基づいて解釈すべきであることを明らかにする。
本明細書において、一部用語は以下のように解釈される。コーディングは、場合によってはエンコーディングまたはでコーディングに解釈される。本明細書において、ビデオ信号のエンコーディング(符号化)を行ってビデオ信号のビットストリームを生成する装置はエンコーディング装置またはエンコーダと称され、ビデオ信号ビットストリームのデコーディング(復号化)を行ってビデオ信号を復元する装置はデコーディング装置またはデコーダと称される。また、本明細書において、ビデオ信号処理装置はエンコーダ及びデコーダをいずれも含む概念の用語として使用される。情報(information)は値(values)、パラメータ(parameter)、係数(coefficients)、成分(elements)などをいずれも含む用語であって、場合によっては意味が異なるように解釈されることがあるため、本発明はこれに限らない。「ユニット」は映像処理の基本単位またはピクチャの特定位置を指す意味で使用され、輝度(luma)成分と色差(chroma)成分のうち少なくとも一つを含むイメージ領域を指す。また、「ブロック」は輝度成分及び色差成分(つまり、Cb及びCr)のうち特定成分を含むイメージ領域を指す。但し、実施例によって「ユニット」、「ブロック」、「パーティション」、及び「領域」などの用語は互いに混合して使用されてもよい。また、本明細書において、ユニットはコーディングユニット、予測ユニット、変換ユニットをいずれも含む概念として使用される。ピクチャはフィールドまたはフレームを指し、実施例によって前記用語は互いに混用して使用される。
図1は、本発明の一実施例によるビデオ信号エンコーディング装置100の概略的なブロック図である。図1を参照すると、本明細書のエンコーディング装置100は、変換部110、量子化部115、逆量子化部120、逆変換部125、フィルタリング部130、予測部150、及びエントロピーコーディング部160を含む。
変換部110は、入力されたビデオ信号と予測部150で生成された予測信号の差であるレジデュアル信号を変換して変換係数値を獲得する。例えば、離散コサイン変換(Discrete Cosine Transform、DCT)、離散サイン変換(Discrete Sine Transform、DST)、またはウェーブレット変換(Wavelet Transform)などが使用される。離散コサイン変換及び離散サイン変換は、入力されたピクチャ信号をブロックの形態に分けて変換を行うようになる。変換において、変換領域内の値の分布と特性によってコーディング効率が異なり得る。量子化部115は、変換部110内で出力された変換係数の値を量子化する。
コーディング効率を上げるために、ピクチャ信号をそのままコーディングするのではなく、予測部150を介して予めコーディングされた領域を利用してピクチャを予測し、予測されたピクチャに原本ピクチャと予測ピクチャの間のレジデュアル値を足して復元ピクチャを獲得する方法が使用される。エンコーダとデコーダでミスマッチが発生しないように、エンコーダで予測を行う際にはデコーダでも使用可能な情報を使用すべきである。そのために、エンコーダでは符号化した現在ブロックを更に復元する過程を行う。逆量子化部120では変換係数値を逆量子化し、逆変換部125では逆量子化された変換係数値を利用してレジデュアル値を復元する。一方、フィルタリング部130は、復元されたピクチャの品質改善及び符号化効率の向上のためのフィルタリング演算を行う。例えば、デブロッキングフィルタ、サンプル適応的オフセット(Sample Adpative Offset、SAO)、及び適応的ループフィルタなどが含まれてもよい。フィルタリングを経たピクチャは、出力されるか参照ピクチャとして利用するために復号ピクチャバッファ(Decoded Picture Buffer、DPB)156に貯蔵される。
予測部150は、イントラ予測部152とインター予測部154を含む。イントラ予測部152は現在ピクチャ内でイントラ(intra)予測を行い、インター予測部154は復号ピクチャバッファ156に貯蔵された参照バッファを利用して現在ピクチャを予測するインター(inter)予測を行う。イントラ予測部152は、現在ピクチャ内の復元されたサンプルからイントラ予測を行い、イントラ符号化情報をエントロピーコーディング部160に伝達する。イントラ符号化情報は、イントラ予測モード、MPM(Most Probable Mode)フラッグ、MPMインデックスのうち少なくとも一つを含む。イントラ符号化情報は参照サンプルに関する情報を含む。インター予測部154は、モーション推定部154a及びモーション補償部154bを含んで構成される。モーション推定部154aは、復元された参照信号ピクチャの特定領域を参照して現在領域のモーションベクトル値を獲得する。モーション推定部154aは、参照領域に対するモーション情報セット(参照ピクチャインデックス、モーションベクトル情報)をエントロピーコーディング部160に伝達する。モーション補償部154bは、モーション補償部154aから伝達されたモーションベクトル値を利用してモーション補償を行う。インター予測部154は参照領域に対する動き情報セットを含むインター符号化情報をエントロピーコーディング部160に伝達する。
更なる実施例によって、予測部150はイントラブロックコピー(block copy、BC)予測部(図示せず)を含む。イントラBC予測部は、現在ピクチャ内の復元されたサンプルからイントラBC予測を行い、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC予測部は、現在ピクチャ内の特定領域を参照して現在領域の予測に利用される参照領域を示すブロックベクトル値を獲得する。イントラBC予測部は、獲得されたブロックベクトル値を利用してイントラBC予測を行う。イントラBC予測部は、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC予測部はブロックベクトル情報を含む。
上述したピクチャ予測が行われれば、変換部110は原本ピクチャと予測ピクチャの間のレジデュアル値を変換して変換係数値を獲得する。この際、変換はピクチャ内で特定ブロック単位で行われるが、特定ブロックのサイズは予め設定された範囲内で可変する。量子化部115は、変換部110で生成された変換係数の値を量子化してエントロピーコーディング部160に伝達する。
エントロピーコーディング部160は量子化された変換係数、イントラ符号化情報、及びインター符号化情報などをエントロピーコーディングしてビデオ信号ビットストリームを生成する。エントロピーコーディング部160では、可変長コーディング(Variable Length Codeing、VLC)方式と算術コーディング(arithmetic coding)方式などが使用される。可変長コーディング(VLC)方式は入力されるシンボルを連続したコードワードに変換するが、コードワードの長さは可変的である。例えば、よく発生するシンボルは短いコードワードで、よく発生しないシンボルは長いコードワードで表現する。可変長コーディング方式として、コンテキスト基盤適応型可変長コーディング(Context−based Adaptive Variable Length Coding、CAVLC)方式が使用される。算術コーディングは連続したデータシンボルを一つの素数に変換するが、算術コーディングは各シンボルを表現するために必要な最適の素数ビットを得る。算術コーディングとして、コンテキスト基盤適合型算術符号化(Context−based Adaptive Binary Arithmetic Coding、CABAC)方式が使用される。
前記生成されたビットストリームは、NAL(Network Abstraction Layer)ユニットを基本単位にカプセル化される。NALユニットは、符号化された整数個のコーディングツリーユニット(coding tree unit)を含む。ビデオデコーダでビットストリームを復号化するためには、まずビットストリームをNALユニット単位に分離した後、分離されたそれぞれのNALユニットを復号化すべきである。一方、ビデオ信号ビットストリームの復号化のために必要な情報は、ピクチャパラメータセット(Picture Parameter Set、PPS)、シーケンスパラメータセット(Sequence Parameter Set、SPS)、ビデオパラメータセット(Video Parameter Set、VPS)などのような上位レベルセットのRBSP(Raw Byte Sequence Payload)を介して伝送される。
一方、図1のブロック図は本発明の一実施例によるエンコーディング装置100を示し、分離して示したブロックはエンコーディング装置100のエレメントを論理的に区別して示している。よって、上述したエンコーディング装置100のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施例によると、上述したエンコーディング装置100の各エレメントの動作はプロセッサ(図示せず)によって行われる。
図2は、本発明の実施例によるビデオ信号デコーディング装置の200概略的なブロック図である。図2を参照すると、本明細書のデコーディング装置200は、エントロピーデコーディング部210、逆量子化部220、逆変換部225、フィルタリング部230、及び予測部250を含む。
エントロピーデコーディング部210はビデオ信号ビットストリームをエントロピーデコーディングして、各領域に対する変換係数、イントラ符号化情報、インター符号化情報などを抽出する。逆量子化部220はエントロピーデコーディングされた変換係数を逆量子化し、逆変換部225は逆量子化された変換係数を用いてレジデュアル値を復元する。ビデオ信号処理装置200は逆変換部225から獲得されたレジデュアル値を予測部250から獲得された予測子(predictor)と合算して元の画素値を復元する。
一方、フィルタリング部230は、ピクチャに対するフィルタリングを行って画質を向上させる。ここには、ブロック歪曲現象を減少させるためのデブロッキングフィルタ及び/またはピクチャ全体の歪曲を除去するための適応的ループフィルタなどが含まれる。フィルタリングを経たピクチャは出力されるか、次のピクチャに対する参照ピクチャとして利用するために復号ピクチャバッファ(DPB)256に貯蔵される。
予測部250は、イントラ予測部252及びインター予測部254を含む。予測部250は、前述したエントロピーデコーディング部210を通じて復号化された符号化タイプ、各領域に対する変換係数、イントラ/インター符号化情報などを活用して予測ピクチャを生成する。復号化が遂行される現在ブロックを復元するために、現在ブロックが含まれた現在ピクチャまたは他のピクチャの復号化された領域が利用できる。復元に現在ピクチャのみを用いる、即ちイントラ予測またはイントラBC予測のみを遂行するピクチャ(または、タイル/スライス)をイントラピクチャまたはIピクチャ(または、タイル/スライス)、イントラ予測、インター予測及びイントラBC予測を全て遂行することができるピクチャ(または、タイル/スライス)をインターピクチャ(または、タイル/スライス)という。インターピクチャ(または、タイル/スライス)のうち、各ブロックのサンプル値を予測するために最大1つの動きベクトル及び参照ピクチャインデックスを用いるピクチャ(または、タイル/スライス)を予測ピクチャ(predictive picture)またはPピクチャ(または、タイル/スライス)といい、最大2つの動きベクトル及び参照ピクチャインデックスを用いるピクチャ(または、タイル/スライス)を双予測ピクチャ(Bi-predictive picture)またはBピクチャ(または、タイル/スライス)という。言い換えると、Pピクチャ(または、タイル/スライス)は各ブロックを予測するために最大1つの動き情報セットを用いて、Bピクチャ(または、タイル/スライス)は各ブロックを予測するために最大2つの動き情報セットを用いる。ここで、動き情報セットは1つ以上の動きベクトルと1つの参照ピクチャインデックスを含む。
イントラ予測部252は、イントラ符号化情報及び現在ピクチャ内の復元されたサンプルを利用して予測ブロックを生成する。上述したように、イントラ符号化情報は、イントラ予測モード、MPM(MOST Probable Mode)フラッグ、MPMインデックスのうち少なくとも一つを含む。イントラ予測部252は、現在ブロックの左側及び/または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。本開示において、復元されたサンプル、参照サンプル、及び現在ブロックのサンプルはピクセルを示す。また、サンプル値(sample value)はピクセル値を示す。
一実施例において、参照サンプルは現在ブロックの周辺ブロックに含まれたサンプルである。例えば、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び/または上側境界に隣接したサンプルである。また、参照サンプルは現在ブロックの周辺ブロックのサンプルのうち、現在ブロックの左側境界から予め設定された距離以内のライン上に位置するサンプル及び/または現在ブロックの上側境界から予め設定された距離以内のライン上に位置するサンプルである。この際、現在ブロックの周辺ブロックは、現在ブロックに隣接した左側(L)ブロック、上側(A)ブロック、下左側(Below Left、BL)ブロック、右上側(Above Right、AR)ブロック、または左上側(Above Left、AL)ブロックのうち少なくとも一つを含む。
インター予測部254は、復号ピクチャバッファ256に貯蔵された参照ピクチャ及びインター符号化情報を利用して予測ブロックを生成する。インター符号化情報は、参照ブロックに対する現在ブロックのモーション情報セット(参照ピクチャインデックス、モーションベクトルなど)を含む。インター予測には、L0予測、L1予測、及び双予測(Bi−prediction)がある。L0予測はL0ピクチャリストに含まれた一つの参照ピクチャを利用した予測であり、L1予測はL1ピクチャリストに含まれた一つの参照ピクチャを利用した予測を意味する。そのためには、1セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が必要である。双予測方式では最大2つの参照領域を利用するが、この2つの参照領域は同じ参照ピクチャに存在してもよく、互いに異なるピクチャにそれぞれ存在してもよい。つまり、双予測方式では最大2セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が利用されるが、2つのモーションベクトルが同じ参照ピクチャインデックスに対応してもよく、互いに異なる参照ピクチャインデックスに対応してもよい。この際、参照ピクチャは時間的に現在ピクチャの以前や以降のいずれにも表示(または出力)される。
インター予測部254は、モーションベクトル及び参照ピクチャインデックスを利用して現在の参照ブロックを獲得する。前記参照ブロックは、参照ピクチャインデックスに対応する参照ピクチャ内に存在する。また、モーションベクトルによって特定されたブロックのサンプル値またはこれの補間(interpolation)された値が現在ブロックの予測子(predictor)として利用される。サブペル(sub−pel)単位のピクセル正確度を有するモーション予測のために、例えば、輝度信号に対して8−タブ補間フィルタが、色差信号に対して4−タブ補間フィルタが使用される。但し、サブペル単位のモーション予測のための補間フィルタはこれに限らない。このように、インター予測部254は、以前復元されたピクチャから現在ユニットのテクスチャを予測するモーション補償(motion compensation)を行う。この際、インター予測部はモーション情報セットを利用する。
追加的な実施形態に従って、予測部250はイントラBC予測部(図示せず)を含むことができる。イントラBC予測部は現在ピクチャ内の復元されたサンプルからイントラBC予測を遂行して、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC予測部は、現在ピクチャ内の特定領域を指示する現在領域のブロックベクトル値を獲得する。イントラBC予測部は獲得されたブロックベクトル値を用いてイントラBC予測を遂行することができる。イントラBC予測部は、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC符号化情報は、ブロックベクトル情報を含むことができる。
前記イントラ予測部252またはインター予測部254から出力された予測子、及び逆変換部225から出力されたレジデュアル値が加えられて復元されたビデオピクチャが生成される。即ち、ビデオ信号デコーディング装置200は、予測部250で生成された予測ブロックと逆変換部225から獲得されたレジデュアルを用いて現在ブロックを復元する。
一方、図2のブロック図は本発明の一実施例によるデコーディング装置200を示し、分離して示したブロックはデコーディング装置200のエレメントを論理的に区別して示している。よって、上述したデコーディング装置200のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施例によると、上述したデコーディング装置200の各エレメントの動作はプロセッサ(図示せず)によって行われる。
図3は、ピクチャ内でコーディングツリーユニット(Coding Tree Unit、CTU)がコーディングユニット(Coding Units、CUs)に分割される実施例を示している。ビデオ信号のコーディング過程において、ピクチャはコーディングツリーユニット(CTU)のシーケンスに分割される。コーディングツリーユニットは、輝度サンプルのNXNブロックと、それに対応する色差サンプルの2つのブロックからなる。コーディングツリーユニットは、複数のコーディングユニットに分割される。コーディングツリーユニットは分割されずにリーフノードになってもよい。この場合、コーディングツリーユニット自体がコーディングユニットになり得る。コーディングユニットは上述したビデオ信号の処理過程、つまり、イントラ/インター予測、変換、量子化及び/またはエントロピーコーディングなどの過程でピクチャを処理するための基本単位を指す。一つのピクチャ内において、コーディングユニットのサイズ及び模様は一定ではない。コーディングユニットは正方形または長方形の模様を有する。長方形コーディングユニット(または、長方形ブロック)は垂直コーディングユニット(または、垂直ブロック)と水平コーディングユニット(または、水平ブロック)を含む。本明細書において、垂直ブロックは高さが幅より大きいブロックであり、水平ブロックは幅が高さより大きいブロックである。また、本明細書において、正方形ではない(non−square)ブロックは長方形ブロックを指すが、本発明はこれに限らない。
図3を参照すると、コーディングツリーユニットは、まずクォードツリー(Quad Tree、QT)構造に分割される。つまり、クォードツリー構造において、2N×2Nのサイズを有する一つのノードはN×Nのサイズを有する4つのノードに分割される。本明細書において、クォードツリーは4進(quaternary)ツリーとも称される。クォードツリー分割は再帰的に行われ、全てのノードが同じ深さに分割される必要はない。
一方、上述したクォードツリーのリーフノード(leaf node)は、マルチ−タイプツリー(Multi−Type Tree、MTT)構造に更に分割される。本発明の実施例によると、マルチタイプツリー構造では一つのノードが水平または垂直分割の2進(binary、バイナリー)または3進(ternary、ターナリー)ツリー構造に分割される。つまり、マルチ−タイプツリー構造には、垂直バイナリー分割、水平バイナリー分割、垂直ターナリー分割、及び水平ターナリー分割の4つの分割構造が存在する。本発明の実施例によると、前記各ツリー構造において、ノードの幅及び高さはいずれも2の累乗値を有する。例えば、バイナリーツリー(binary Tree、BT)構造において、2N×2Nのサイズのノードは垂直バイナリー分割によって2つのN×2Nノードに分割され、水平バイナリー分割によって2つの2N×Nノードに分割される。また、ターナリーツリー(Ternary Tree、TT)構造において、2N×2Nのサイズのノードは垂直ターナリー分割によって(N/2)×2N、N×2N及び(N/2)×2Nのノードに分割され、水平ターナリー分割によって2N×(N/2)、2N×N及び2N×(N/2)のノードに分割される。このようなマルチ−タイプツリー分割は再帰的に行われる。
マルチ−タイプツリーのリーフノードはコーディングユニットできる。コーディングユニットに対する分割が指示されないか、またはコーディングユニットが最大変換長さに比べて大きくない場合、該当コーディングユニットはこれ以上の分割無しで予測及び変換の単位に使われる。一方、上述したクォードツリー及びマルチ−タイプツリーにおいて、次のパラメータのうち少なくとも一つが事前に定義されるか、PPS、SPS、VPSなどのような上位レベルセットのRBSPを介して伝送される。1)CTUサイズ:クォードツリーのルートノード(root node)のサイズ、2)最小QTサイズ(MinQtSize):許容された最小QTリーフノードのサイズ、3)最大BTサイズ(MaxBtSize):許容された最大BTルートノードのサイズ、4)最大TTサイズ(MaxTtSize):許容された最大TTルートノードのサイズ、5)最大MTT深さ(MaxMttDepth):QTのリーフノードからのMTT分割の最大許容深さ、6)最小BTサイズ(MinBtSize):許容された最小BTリーフノードのサイズ、7)最小TTサイズ:許容された最小TTリーフノードのサイズ。
図4は、クワッドツリー及びマルチ−タイプツリーの分割をシグナリングする方法の一実施形態を図示する。前述したクワッドツリー及びマルチ−タイプツリーの分割をシグナリングするために既設定されたフラグが使われることができる。図4を参照すると、クワッドツリーノードの分割するか否かを指示するフラグ‘qt_split_flag’、マルチ−タイプツリーノードの分割するか否かを指示するフラグ‘mtt_split_flag’、マルチ−タイプツリーノードの分割方向を指示するフラグ‘mtt_split_vertical_flag’またはマルチ−タイプツリーノードの分割形態を指示するフラグ‘mtt_split_binary_flag’のうち、少なくとも1つが使われることができる。
本発明の実施形態によれば、コーディングツリーユニットはクワッドツリーのルートノードであり、クワッドツリー構造に先に分割できる。クワッドツリー構造では各々のノード‘QT_node’別に‘qt_split_flag’がシグナリングされる。‘qt_split_flag’の値が1の場合、該当ノードは4個の正四角形ノードに分割され、‘qt_split_flag’の値が0の場合、該当ノードはクワッドツリーのリーフノード‘QT_leaf_node’となる。
各々のクワッドツリーリーフノード‘QT_leaf_node’はマルチ−タイプツリー構造にさらに分割できる。マルチ−タイプツリー構造では、各々のノード‘MTT_node’別に‘mtt_split_flag’がシグナリングされる。‘mtt_split_flag’の値が1の場合、該当ノードは複数の矩形ノードに分割され、‘mtt_split_flag’の値が0の場合、該当ノードはマルチ−タイプツリーのリーフノード‘MTT_leaf_node’となる。マルチ−タイプツリーノード‘MTT_node’が複数の矩形ノードに分割される場合(即ち、‘mtt_split_flag’の値が1の場合)、ノード‘MTT_node’のための‘mtt_split_vertical_flag’及び‘mtt_split_binary_flag’が追加でシグナリングできる。‘mtt_split_vertical_flag’の値が1の場合、ノード‘MTT_node’の垂直分割が指示され、‘mtt_split_vertical_flag’の値が0の場合、ノード‘MTT_node’の水平分割が指示される。また、‘mtt_split_binary_flag’の値が1の場合、ノード‘MTT_node’は2つの矩形ノードに分割され、‘mtt_split_binary_flag’の値が0の場合、ノード‘MTT_node’は3個の矩形ノードに分割される。
コーティングのためのピクチャ予測(モーション補償)はそれ以上分けられないコーディングユニット(つまり、コーディングユニットツリーのリーフノード)を対象に行われる。このような予測を行う基本単位を、以下では予測ユニット(prediction unit)または予測ブロック(prediction block)という。
以下、本明細書で使用されるユニットという用語は、予測を行う基本単位である前記予測ユニットを代替する用語として使用される。但し、本発明はこれに限らず、より広い意味では、前記コーディングユニットを含む概念として理解される。
図5及び図6は、本発明の実施例によるイントラ予測方法をより詳しく示す図である。上述したように、イントラ予測部は、現在ブロックの左側及び/または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。
まず、図5はイントラ予測モードで現在ブロックを予測するために使用される参照サンプルの一実施例を示す。一実施例によると、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び/または上側境界に隣接したサンプルである。図5に示したように、現在ブロックのサイズがW×Hで現在ブロックに隣接した単一参照ライン(line)のサンプルがイントラ予測に使用されれば、現在ブロックの左側及び/または上側に位置した最大2W+2H+1個の周辺サンプルを使用して参照サンプルが設定される。
本発明の追加的な実施形態によれば、現在ブロックのイントラ予測のために複数の参照ライン上のサンプルが使われることができる。複数の参照ラインは、現在ブロックの境界から既設定された距離以内に位置したn個のラインから構成できる。この場合、現在ブロックのイントラ予測のために使われる少なくとも1つの参照ラインを指示する別途の参照ライン情報がシグナリングできる。具体的に、参照ライン情報は複数の参照ラインのうち、いずれか1つを指示するインデックスを含むことができる。
また、参照サンプルとして使用される少なくとも一部のサンプルがまだ復元されていなければ、イントラ予測部は参照サンプルパッディング過程を行って参照サンプルを獲得する。また、イントラ予測部は、イントラ予測の誤差を減らすために参照サンプルフィルタリング過程を行う。つまり、周辺サンプル及び/または参照サンプルパッディング過程によって獲得された参照サンプルにフィルタリングを行って、フィルタリングされた参照サンプルを獲得する。イントラ予測部は、フィルタリングされていない参照サンプル、またはフィルタリングされた参照サンプルを利用して現在ブロックのサンプルを予測する。本開示において、周辺サンプルは少なくとも一つの参照ライン上のサンプルを含む。例えば、周辺サンプルは現在ブロックの境界に隣接したライン上の隣接サンプルを含んでもよい。
次に、図6はイントラ予測に使われる予測モードの一実施形態を図示する。イントラ予測のために、イントラ予測方向を指示するイントラ予測モード情報がシグナリングできる。イントラ予測モード情報は、イントラ予測モードセットを構成する複数のイントラ予測モードのうち、いずれか1つを指示する。現在ブロックがイントラ予測されたブロックである場合、デコーダはビットストリームから現在ブロックのイントラ予測モード情報を受信する。デコーダのイントラ予測部は、抽出されたイントラ予測モード情報に基づいて現在ブロックに対するイントラ予測を遂行する。
本発明の実施例によると、イントラ予測モードセットは、イントラ予測に使用される全てのイントラ予測モード(例えば、総67個のイントラ予測モード)を含む。より詳しくは、イントラ予測モードセットは、平面モード、DCモード、及び複数の(例えば、65個の)角度モード(つまり、方向モード)を含む。一部の実施形態で、イントラ予測モードセットは全てのイントラ予測モードのうちの一部で構成されることもできる。それぞれのイントラ予測モードは、予め設定されたインデックス(つまり、イントラ予測モードインデックス)を介して指示される。例えば、図6に示したように、イントラ予測モードインデックス0は平面(planar)モードを指示し、イントラ予測モードインデックス1はDCモードを指示する。また、イントラ予測モードインデックス2乃至66は、互いに異なる角度モードをそれぞれ指示する。この際、イントラ予測モードインデックス2は水平対角(Horizontal Diagonal、HDIA)モードを指示し、イントラ予測モードインデックス18は水平(Horizontal、HOR)モードを指示し、イントラ予測モードインデックス34は対角(Diagonal、DIA)モードを指示し、イントラ予測モードインデックス50は水直(Vertical、VER)モードを指示し、イントラ予測モードインデックス66は垂直対角(Vertical Diagonal、VDIA)モードを指示する。
以下、図7を参照して本発明の一実施形態に従うインター予測方法について説明する。本開示で、インター予測方法は並進運動(translation motion)に最適化された一般インター予測方法及び図31乃至図52を通じて後述するアフィン(affine)モデル基盤のインター予測方法を含むことができる。また、動きベクトルは一般インター予測方法に従う動き補償のための一般動きベクトル及びアフィン動き補償のためのコントロールポイント動きベクトル(control point motion vector)のうち、少なくとも1つを含むことができる。
図7は、本発明の一実施形態に従うインター予測方法を図示する。前述したように、デコーダは復号化された他のピクチャの復元されたサンプルを参照して現在ブロックを予測することができる。図7を参照すると、デコーダは現在ブロック701の動き情報セットに基づいて参照ピクチャ720内の参照ブロック702を獲得する。この際、動き情報セットは参照ピクチャインデックス及び動きベクトル703を含むことができる。参照ピクチャインデックスは、参照ピクチャリストで現在ブロックのインター予測のための参照ブロックが含まれた参照ピクチャ720を指示する。一実施形態に従って、参照ピクチャリストは前述したL0ピクチャリストまたはL1ピクチャリストのうち、少なくとも1つを含むことができる。動きベクトル703は現在ピクチャ710内で現在ブロック701の座標値と参照ピクチャ720内で参照ブロック702の座標値との間のオフセットを示す。デコーダは、参照ブロック702のサンプル値に基づいて現在ブロック701の予測子を獲得し、前記予測子を用いて現在ブロック701を復元する。
具体的に、インコーダーは復元順序が早いピクチャで現在ブロックと類似のブロックを探索して前述した参照ブロックを獲得することができる。例えば、エンコーダは既設定された探索領域内で現在ブロックとサンプル値との差の和が最小となる参照ブロックを探索することができる。この際、現在ブロックと参照ブロックのサンプルとの間の類似度を測定するために、SAD(Sum Of Absolute Difference)またはSATD(Sum of Hadamard Transformed Difference)のうち、少なくとも1つが使われることができる。ここで、SADは2つのブロックに含まれたサンプル値の差の各々の絶対値を全て足した値でありうる。また、SATDは2つのブロックに含まれたサンプル値の差をアダマール変換(Hadamard Transform)して獲得されたアダマール変換係数の絶対値を全て足した値でありうる。
一方、現在ブロックは1つ以上の参照領域を用いて予測されることもできる。前述したように、現在ブロックは2つ以上の参照領域を用いる双予測方式によりインター予測できる。一実施形態に従って、デコーダは現在ブロックの2つの動き情報セットに基づいて2つの参照ブロックを獲得することができる。また、デコーダは獲得された2つの参照ブロックの各々のサンプル値に基づいて現在ブロックの第1予測子及び第2予測子を獲得することができる。また、デコーダは第1予測子及び第2予測子を用いて現在ブロックを復元することができる。例えば、デコーダは第1予測子及び第2予測子のサンプル別平均に基づいて現在ブロックを復元することができる。
前述したように、現在ブロックの動き補償のために、1つ以上の動き情報セットがシグナリングできる。この際、複数のブロックの各々の動き補償のための動き情報セットの間の類似性が利用できる。例えば、現在ブロックの予測に使われる動き情報セットは既復元された他のサンプルのうち、いずれか1つの予測に使われた動き情報セットから誘導できる。これを通じて、エンコーダ及びデコーダはシグナリングオーバーヘッドを減少させることができる。以下では、現在ブロックの動き情報セットがシグナリングされる多様な実施形態に対して説明する。
図8は、本発明の一実施形態に従って、現在ブロックの動きベクトルがシグナリングされる方法を示す図である。本発明の一実施形態に従って、現在ブロックの動きベクトルは現在ブロックの動きベクトル予測子(motion vector predictor、MVP)から誘導できる。一実施形態に従って、現在ブロックの動きベクトルを誘導するために参照される動きベクトル予測子は、動きベクトル予測子(motion vector predictor、MVP)候補リストを用いて獲得できる。MVP候補リストは既設定された個数のMVP候補(Candidate 1,Candidate 2,...,Candidate N)を含むことができる。
一実施形態に従って、MVP候補リストは空間的候補または時間的候補のうち、少なくとも1つを含むことができる。空間的候補は、現在ピクチャ内で現在ブロックから一定の範囲の以内の周辺ブロックの予測に使われた動き情報セットでありうる。空間的候補は、現在ブロックの周辺ブロックのうち、利用可能な周辺ブロックに基づいて構成できる。また、時間的候補は現在ピクチャと他のピクチャ内のブロックの予測に使われた動き情報セットでありうる。例えば、時間的候補は特定参照ピクチャ内で現在ブロックの位置に対応する特定ブロックに基づいて構成できる。この際、特定ブロックの位置は前記参照ピクチャ内で特定ブロックの左上段(top-left)サンプルの位置を示す。追加的な実施形態に従って、MVP候補リストはゼロ動きベクトルを含むことができる。追加的な実施形態に従って、現在ブロックのMVP候補リストが含むMVP候補に対するラウンディング(rounding)プロセスが遂行できる。この際、後述する現在ブロックの動きベクトル差分値の解像度が利用できる。例えば、現在ブロックのMVP候補は各々現在ブロックの動きベクトル差分値の解像度に基づいてラウンディングできる。
本開示で、MVP候補リストは改善された時間的動きベクトル候補(advanced temporal motion vector prediction、ATMVP)リスト、マージインター予測のためのマージ候補リスト、アフィン動き補償のためのコントロールポイント動きベクトル候補リスト、サブブロック基盤の動き補償のための時間的動きベクトル候補(subblock-based temporal motion vector prediction、STMVP)リスト、及びこれらの組合せを含むことができる。
一実施形態に従って、エンコーダ810及びデコーダ820は、現在ブロックの動き補償のためのMVP候補リストを構成することができる。例えば、現在ブロックより先に復元されたサンプルのうち、現在ブロックの動き情報セットと同一または類似の動き情報セットに基づいて予測されている可能性のあるサンプルに対応する候補が存在することができる。エンコーダ810及びデコーダ820は、該当複数の候補ブロックに基づいて現在ブロックのMVP候補リストを構成することができる。この際、エンコーダ810及びデコーダ820はエンコーダ810とデコーダ820との間に予め定義された規則によってMVP候補リストを構成することができる。即ち、エンコーダ810とデコーダ820の各々で構成されたMVP候補リストは互いに同一でありうる。
また、予め定義された規則は現在ブロックの予測モードによって変わることができる。例えば、現在ブロックの予測モードがアフィンモデル基盤のアフィン予測モードである場合、エンコーダ及びデコーダはアフィンモデルに基づいた第1方法を用いて現在ブロックのMVP候補リストを構成することができる。第1方法は、コントロールポイント動きベクトル候補リストを獲得する方法でありうる。これに対しては図31乃至図52を通じて具体的に説明する。一方、現在ブロックの予測モードがアフィンモデルに基づかない一般インター予測モードである場合、エンコーダ及びデコーダはアフィンモデルに基づかない第2方法を用いて現在ブロックのMVP候補リストを構成することができる。この際、第1方法と第2方法は互いに異なる方法でありうる。
デコーダ820は、現在ブロックのMVP候補リストが含む少なくとも1つのMVP候補のうち、いずれか1つに基づいて現在ブロックの動きベクトルを誘導することができる。例えば、エンコーダ810は現在ブロックの動きベクトルを誘導するために参照される動きベクトル予測子を指示するMVPインデックス(index)をシグナリングすることができる。デコーダ820は、シグナリングされたMVPインデックスに基づいて現在ブロックの動きベクトル予測子を獲得することができる。デコーダ820は、動きベクトル予測子を用いて現在ブロックの動きベクトルを誘導することができる。一実施形態に従って、デコーダ820はMVP候補リストから獲得された動きベクトル予測子を別途の動きベクトル差分値無しで、現在ブロックの動きベクトルに使用することができる。デコーダ820は、現在ブロックの動きベクトルに基づいて現在ブロックを復元することができる。MVP候補リストから獲得された動きベクトル予測子が別途の動きベクトル差分値無しで現在ブロックの動きベクトルに使われるインター予測モードは、マージモードと称されることができる。
他の一実施形態に従って、デコーダ820は現在ブロックの動きベクトルのための別途の動きベクトル差分値(motion vector difference)を獲得することができる。デコーダ820は、MVP候補リストから獲得された動きベクトル予測子と現在ブロックの動きベクトル差分値を合算して現在ブロックの動きベクトルを獲得することができる。この場合、エンコーダ810は現在ブロックの動きベクトルと動きベクトル予測子との間の差を示す動きベクトル差分値(MV difference)をシグナリングすることができる。動きベクトル差分値がシグナリングされる方法については図9を通じて具体的に説明する。デコーダ820は動きベクトル差分値(MV difference)に基づいて現在ブロックの動きベクトルを獲得することができる。デコーダ820は、現在ブロックの動きベクトルに基づいて現在ブロックを復元することができる。
追加的に、現在ブロックの動き補償のための参照ピクチャインデックスがシグナリングできる。現在ブロックの予測モードがエンコーダ810は参照ブロックを含む参照ピクチャを指示する参照ピクチャインデックスをシグナリングすることができる。デコーダ820は、シグナリングされた参照ピクチャインデックスに基づいて現在ブロックの復元に参照される参照ピクチャのPOCを獲得することができる。この際、参照ピクチャのPOCが現在ブロックの動きベクトルを誘導するために参照されるMVPに対応する参照ピクチャのPOCと互いに異なることがある。この場合、デコーダ820は動きベクトルスケーリングを遂行することができる。即ち、デコーダ820はMVPをスケーリングしてMVP′を獲得することができる。この際、動きベクトルスケーリングは、現在ピクチャのPOC、現在ブロックのシグナリングされた参照ピクチャのPOC、及びMVPに対応する参照ピクチャのPOCに基づいて遂行できる。また、デコーダ820はMVP′を現在ブロックの動きベクトル予測子に使用することができる。
前述したように、現在ブロックの動きベクトルは現在ブロックの動きベクトル予測子と動きベクトル差分値を合算して獲得できる。この際、動きベクトル差分値はエンコーダからシグナリングできる。エンコーダは動きベクトル差分値をエンコーディングして動きベクトル差分値を示す情報を生成し、シグナリングすることができる。以下では、本発明の一実施形態に従って動きベクトル差分値がシグナリングされる方法について説明する。
図9は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値がシグナリングされる方法を示す図である。一実施形態に従って、動きベクトル差分値を示す情報は動きベクトル差分値の絶対値情報または動きベクトル差分値の符号情報のうち、少なくとも1つを含むことができる。動きベクトル差分値の絶対値と符号は別途にエンコーディングできる。
一実施形態に従って、動きベクトル差分値の絶対値は値自体でシグナリングされないこともある。エンコーダは、動きベクトル差分値の絶対値の特性を示す少なくとも1つのフラグを用いてシグナリングされる値のサイズを縮めることができる。デコーダは、シグナリングされた値から少なくとも1つのフラグを用いて動きベクトル差分値の絶対値を誘導することができる。
例えば、少なくとも1つのフラグは動きベクトル差分値の絶対値がNより大きいかを示す第1フラグを含むことができる。この際、Nは整数でありうる。動きベクトル差分値の絶対値のサイズがNより大きい場合、活性化された第1フラグと共に(動きベクトル差分値の絶対値−N)値がシグナリングできる。この際、活性化されたフラグは動きベクトル差分値の絶対値のサイズがNより大きい場合を示すことができる。デコーダは、活性化された第1フラグ及びシグナリングされた値に基づいて動きベクトル差分値の絶対値を獲得することができる。
図9を参照すると、動きベクトル差分値の絶対値が‘0’より大きいかを示す第2フラグ(abs_mvd_greater0_flag)がシグナリングできる。第2フラグ(abs_mvd_greater0_flag[])が動きベクトル差分値の絶対値が‘0’より大きくないことを示す場合、動きベクトル差分値の絶対値は‘0’でありうる。また、第2フラグ(abs_mvd_greater0_flag)が動きベクトル差分値の絶対値が‘0’より大きいことを示す場合、デコーダは動きベクトル差分値に対する他の情報を用いて動きベクトル差分値の絶対値を獲得することができる。
一実施形態に従って、動きベクトル差分値の絶対値が‘1’より大きいかを示す第3フラグ(abs_mvd_greater1_flag)がシグナリングできる。第3フラグ(abs_mvd_greater1_flag)が動きベクトル差分値の絶対値が‘1’より大きくないことを示す場合、デコーダは動きベクトル差分値の絶対値が‘1’であると判断することができる。
反対に、第3フラグ(abs_mvd_greater1_flag)が動きベクトル差分値の絶対値が‘1’より大きいことを示す場合、デコーダは動きベクトル差分値に対する更に他の情報を用いて動きベクトル差分値の絶対値を獲得することができる。例えば、(動きベクトル差分値の絶対値−2)値(abs_mvd_minus2)がシグナリングできる。動きベクトル差分値の絶対値が‘1’より大きい場合、動きベクトル差分値の絶対値は2以上の値でありうるためである。
前述したように、現在ブロックの動きベクトル差分値の絶対値は少なくとも1つのフラグに変形できる。例えば、動きベクトル差分値の変形された絶対値は動きベクトル差分値のサイズによって(動きベクトル差分値の絶対値−N)を示すことができる。一実施形態に従って、動きベクトル差分値の変形された絶対値は少なくとも1つのビットを通じてシグナリングできる。この際、動きベクトル差分値の変形された絶対値を指示するためにシグナリングされるビットの個数は可変的でありうる。エンコーダは、動きベクトル差分値の変形された絶対値を可変長さ2進化方法を使用してエンコーディングすることができる。例えば、エンコーダは可変長さ2進化方法は、切削単項(truncated unary)2進化、単項(unary)2進化、切削ライス(truncated rice)、または指数ゴロム(exp-Golomb)2進化のうち、少なくとも1つを使用することができる。
また、動きベクトル差分値の符号は符号フラグ(mvd_sign_flag)を通じてシグナリングできる。一方、動きベクトル差分値の符号は符号ビットハイディング(sign-bit-hiding)により暗黙的にシグナリングされることもできる。これに対しては図23乃至図28を通じて説明する。
一方、前述した現在ブロックの動きベクトル差分値は特定解像度単位でシグナリングできる。本開示で、動きベクトル差分値の解像度は動きベクトル差分値がシグナリングされる単位を示すことができる。即ち、本開示で、ピクチャの解像度を除外した解像度は動きベクトル差分値がシグナリングされる精度(precision)乃至粒度(granularity)を示すことができる。動きベクトル差分値の解像度は、サンプルまたはピクセルの単位で表現できる。例えば、動きベクトル差分値の解像度は1/4(quarter)、1/2(half)、1(integer)、2、4サンプル単位のように、サンプルの単位を使用して表現できる。また、現在ブロックの動きベクトル差分値の解像度が小さいほど、現在ブロックの動きベクトル差分値の精度は増加することができる。
本発明の一実施形態によれば、動きベクトル差分値は多様な解像度に基づいてシグナリングできる。一実施形態に従って、動きベクトル差分値の絶対値または変形された絶対値は整数サンプル単位の値でシグナリングできる。または、動きベクトル差分値の絶対値は1/2−サブペル単位の値でシグナリングされることもできる。即ち、動きベクトル差分値の解像度は状況によって異なるように設定できる。本発明の一実施形態に従うエンコーダ及びデコーダは、動きベクトル差分値のための多様な解像度を適切に活用して現在ブロックの動きベクトル差分値を効率よくシグナリングすることができる。
一実施形態に従って、動きベクトル差分値の解像度は、ブロック、コーディングユニット、スライス、またはタイルのうち、少なくとも1つの単位毎に異なる値に設定できる。例えば、第1ブロックの動きベクトル差分値の第1解像度は1/4サンプル単位でありうる。この場合、動きベクトル差分値の絶対値‘16’を第1解像度で割った値である‘64’がシグナリングできる。また、第2ブロックの動きベクトル差分値の第2解像度は整数サンプル単位でありうる。この場合、第2動きベクトル差分値の絶対値‘16’を第2解像度で割った値である‘16’がシグナリングできる。このように、動きベクトル差分値の絶対値が同一の場合にも、解像度によって異なる値がシグナリングできる。この際、動きベクトル差分値の絶対値を解像度で割った値が少数点以下を含む場合、該当値にラウンディング関数が適用できる。
エンコーダは、動きベクトル差分値の解像度に基づいて動きベクトル差分値を示す情報をシグナリングすることができる。デコーダは、シグナリングされた動きベクトル差分値から修正された動きベクトル差分値を獲得することができる。デコーダは、解像度差分値の解像度に基づいて動きベクトル差分値を修正することができる。現在ブロックのシグナリングされた動きベクトル差分値(valuePerResoultion)と修正された動きベクトル差分値(valueDetermined)との間の関係は以下の[数式1]の通りである。以下、本開示で、特別な言及のない限り、動きベクトル差分値は修正された動きベクトル差分値(valueDetermined)を示す。また、シグナリングされた動きベクトル差分値は解像度により修正される以前の値を示す。
[数式1]で、resoultionは現在ブロックの動きベクトル差分値の解像度を示す。即ち、デコーダは現在ブロックのシグナリングされた動きベクトル差分値と解像度を掛けて修正された動きベクトル差分値を獲得することができる。次に、デコーダは修正された動きベクトル差分値に基づいて現在ブロックの動きベクトルを獲得することができる。また、デコーダは現在ブロックの動きベクトルに基づいて現在ブロックを復元することができる。
現在ブロックの動きベクトル差分値の解像度に相対的に小さい値が使われる場合(即ち、精度の高い場合)、現在ブロックの動きベクトル差分値をより細密に示すことが有利でありうる。しかしながら、この場合、シグナリングされる値自体が大きくなって現在ブロックの動きベクトル差分値のためのシグナリングオーバーヘッドが増加することができる。反対に、現在ブロックの動きベクトル差分値の解像度に相対的に大きい値が使われる場合(即ち、精度の低い場合)、シグナリングされる値のサイズを縮めて動きベクトル差分値のためのシグナリングオーバーヘッドを減少させることができる。即ち、動きベクトル差分値の解像度が大きい場合、現在ブロックの動きベクトル差分値は現在ブロックの動きベクトル差分値の解像度が小さい場合に比べて少ない個数のビットを通じてシグナリングできる。しかしながら、この場合、現在ブロックの動きベクトル差分値を細密に表し難いことがある。
これによって、エンコーダ及びデコーダは複数の解像度のうち、状況によって動きベクトル差分値をシグナリングするために有利な解像度を選択することができる。例えば、エンコーダは状況に基づいて選択された解像度をシグナリングすることができる。また、デコーダはシグナリングされた解像度に基づいて現在ブロックの動きベクトル差分値を獲得することができる。以下では、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度がシグナリングされる方法について叙述する。本発明の一実施形態に従って、現在ブロックの動きベクトル差分値の解像度は解像度セットが含む複数の可用解像度のうち、いずれか1つでありうる。ここで、複数の可用解像度は特定状況で使用可能な解像度を示すことができる。また、解像度セットが含む可用解像度の種類及び個数は状況によって変わることができる。
図10は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度がシグナリングされる方法を示す図である。一実施形態に従って、複数の可用解像度のうち、現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子がシグナリングできる。エンコーダは、動きベクトル差分値を示す情報と共に解像度指示子をシグナリングすることができる。デコーダは、現在ブロックの解像度セットが含む複数の可用解像度のうち、いずれか1つを指示する解像度指示子に基づいて現在ブロックの動きベクトル差分値の解像度を獲得することができる。デコーダは、獲得された動きベクトル差分値の解像度に基づいて現在ブロックの動きベクトル差分値を獲得することができる。
一実施形態に従って、解像度指示子は可変長さのビットで表現できる。例えば、解像度指示子は現在ブロックの解像度セットで複数の可用解像度の各々を指示する解像度インデックスのうち、いずれか1つを示すことができる。この際、解像度インデックスは既設定された最大長さを有する可変長さのビットで表現できる。例えば、解像度指示子は各々1つのビットで表現される2つ以上のフラグを含むことができる。既設定された最大長さは、複数の可用解像度の個数によって決定された長さでありうる。例えば、可用解像度セットが3個の可用解像度を含む場合、既設定された最大長さは‘2’でありうる。本開示で、解像度インデックスは解像度指示子の値と称されることもできる。図10を参照すると、解像度指示子の値は0、10、または11のうち、いずれか1つでありうる。
図10の実施形態で、現在ブロックの動き補償のための解像度セットは1/4、1、4サンプル単位の可用解像度を含むことができる。この際、現在ブロックの動きベクトル差分値の解像度は図10に図示された可用解像度(1/4、1、4)のうち、いずれか1つでありうる。一実施形態に従って、複数の可用解像度のうち、最も小さい可用解像度(即ち、精度の最も大きい解像度)が最も短い長さのビットを使用する指示子値によりシグナリングできる。例えば、1/4、1、4サンプル単位の可用解像度のうち、最も小さい値である1/4サンプル単位の可用解像度が最も短い長さのビットを使用する指示子値である‘0’により指示できる。また、残りの可用解像度は各々‘10’、‘11’と表現される指示子値により指示できる。
一方、解像度指示子が可変長さのビットで表現される場合、最も短い長さのビットを使用して指示される可用解像度が現在ブロックの動きベクトル差分値の解像度に使われる時、シグナリングオーバーヘッドが減少できる。これによって、複数の可用解像度のうち、現在ブロックの動きベクトル差分値の解像度に選択される確率の高い可用解像度を最も短い長さのビットを使用してシグナリングされるように設定することができる。即ち、同一の指示子値の解像度指示子が指示する可用解像度は状況によって変わることができる。これに対しては図11乃至図12を通じて具体的に説明する。また、現在ブロックの解像度セットは状況によって有利な可用解像度で構成できる。即ち、現在ブロックの解像度セットが含む複数の可用解像度の構成は状況によって変わることができる。これに対しては図13を通じて具体的に説明する。
図11及び図12は、本発明の他の一実施形態に従って現在ブロックの動きベクトル差分値の解像度がシグナリングされる方法を示す図である。図11では解像度セットが3個の可用解像度を含むものとして図示しているが、本開示がこれに制限されるのではない。図11の実施形態で、解像度セットは第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、及び第3可用解像度(Resolution 3)を含むことができる。また、解像度セットが含む複数の可用解像度の各々を指示する解像度指示子の値は0、10、11のうち、いずれか1つでありうる。
この際、同一の指示子値の解像度指示子が指示する可用解像度は状況によって変わることができる。例えば、解像度指示子の値のうち、最も短い長さのビットを使用する指示子値は第1状況(case1)で第1可用解像度を指示し、第2状況(case2)では第2可用解像度を指示することができる。第1可用解像度と第2可用解像度は互いに異なることがある。
図11の‘case 1’を参照すると、第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、及び第3可用解像度(Resolution 3)は各々解像度指示子の値が0、10、11の場合に指示される可用解像度でありうる。これとは異なり、図11の‘case 2’を参照すると、第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、及び第3可用解像度(Resolution 3)は各々解像度指示子の値が10、0、11の場合に指示される可用解像度でありうる。
図12は、図11の実施形態をより具体的に図示する。状況によって現在ブロックの動きベクトル差分値の解像度は、図12(a)の方法または図12(b)の方法によりシグナリングできる。図12の実施形態で、解像度セットは1/4、1、及び4サンプル単位の可用解像度を含むことができる。また、各々の可用解像度は状況によって異なる指示子値により指示できる。例えば、図12(a)を参照すると、1/4、1、及び4サンプル単位の可用解像度は各々10、0、11によりシグナリングできる。即ち、複数の可用解像度のうち、最も小さい可用解像度が最も短い長さのビットを使用する指示子値により指示できる。このようなシグナリング方法は、複数の可用解像度のうち、最も小さい可用解像度に基づいて現在ブロックの動きベクトル差分値をシグナリングすることが有利な状況で使われることができる。
また、図12(b)を参照すると、1/4、1、及び4サンプル単位の可用解像度は、各々10、11、0によりシグナリングできる。即ち、本発明の一実施形態によれば、状況によって複数の可用解像度のうち、最も小さい可用解像度でない可用解像度に基づいて現在ブロックの動きベクトル差分値をシグナリングすることが有利でありうる。この場合、複数の可用解像度のうち、最も小さい可用解像度でない可用解像度が、最も短い長さのビットを使用する指示子値により指示できる。例えば、複数の可用解像度のうち、最も大きい可用解像度が最も短い長さのビットを使用する指示子値により指示できる。
また、解像度セットが含む複数の可用解像度の構成は状況によって変わることができる。図13は、解像度セットが含む可用解像度の構成が変わる一実施形態を示す図である。本発明の一実施形態に従って、第1状況(case 1)で動きベクトル差分値の解像度は第1状況解像度セットから獲得され、第2状況(case 2)で動きベクトル差分値の解像度は第2状況解像度セットから獲得できる。
一実施形態に従って、第1状況解像度セットは第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、及び第3可用解像度(Resolution 3)を含むことができる。また、第2状況解像度セットは第4可用解像度(Resolution A)、第5可用解像度(Resolution B)、及び第6可用解像度(Resolution C)を含むことができる。この際、第1状況解像度セットが含む可用解像度のうちの一部と、第2状況解像度セットが含む可用解像度のうちの一部は互いに同一でありうる。即ち、特定可用解像度は第1状況解像度セット及び第2状況解像度セット全てに含まれることもできる。
具体的な実施形態に従って、第1状況解像度セットは1/4、1、4サンプル単位の可用解像度で構成できる。また、第2状況解像度セットは1/4、1/2、1サンプル単位の可用解像度で構成できる。即ち、第2状況解像度セットは第1状況解像度セットが含む複数の可用解像度のうち、最も大きい可用解像度の代わりに他の可用解像度を含むことができる。この際、他の可用解像度は前記最も大きい可用解像度より小さい可用解像度でありうる。また、第2状況解像度セットが含む可用解像度のうち、最も大きい可用解像度は第1状況解像度セットが含む可用解像度のうち、最も大きい可用解像度より小さいことがある。一実施形態に従って、第1状況解像度セットは動きベクトル差分値の精度を増加させなければならない状況に比べてシグナリングオーバーヘッドの減少が必要な状況で有利でありうる。反対に、第2状況解像度セットはシグナリングオーバーヘッドの減少が必要な状況に比べて動きベクトル差分値の精度を増加させなければならない状況で有利でありうる。
一方、現在ブロックの予測モードによって要求される動きベクトル差分値の精度が変わることができる。例えば、アフィンモデルに基づいた動き補償は並進運動(translation motion)外の不規則的な運動に対する動き予測でありうる。これによって、現在ブロックの予測モードがアフィンモデルに基づいた動き補償モードである場合、既存の一般インター予測モードに比べて動きベクトル差分値を細密にシグナリングすることが必要でありうる。現在ブロックのMVP候補リストは現在ブロックの予測モードによって異なる方法により構成できる。これによって、現在ブロックの解像度セットが含む複数の可用解像度の構成は現在ブロックの動き補償のためのMVP候補リストが構成される方法によって変わることができる。
また、現在ブロックの動きベクトル差分値の解像度が大きいほど、シグナリングされる動きベクトル差分値のサイズが小さくなることができる。これによって、現在ブロックの動きベクトル差分値の絶対値が相対的に大きい場合、現在ブロックの動きベクトル差分値が小さい場合に比べて、動きベクトル差分値を大きい解像度単位でシグナリングすることが好ましいことがある。この際、動きベクトル差分値は動きベクトルと動きベクトル予測子との間の差を示す値である。したがって、現在ブロックの動きベクトル予測子が現在ブロックの動きベクトルと類似するほど、現在ブロックの動きベクトル差分値の絶対値が小さくなることができる。一方、現在ブロックの動きベクトルと動きベクトル予測子との間の類似度が高い確率は、現在ブロックの動き補償のためのMVP候補リストが構成される方法によって変わることができる。これによって、現在ブロックの解像度セットが含む複数の可用解像度の構成は現在ブロックの動き補償のためのMVP候補リストが構成される方法によって変わることができる。
一実施形態に従って、図10乃至図13を通じて前述した実施形態で言及された状況は現在ブロックのMVP候補リストが構成された方法を意味することができる。図8を通じて前述したように、現在ブロックの動き補償のためのMVP候補リストは、複数の方法のうち、いずれか1つに基づいて構成できる。現在ブロックのMVP候補リストは、現在ブロックの予測モードによって異なる方法により構成できる。即ち、前述した実施形態で言及された状況は、現在ブロックの動き補償のためのMVP候補リストが複数の方法のうち、どの方法を使用して構成されたかによることと定義できる。
本発明の一実施形態に従って、現在ブロックの解像度セットが含む複数の可用解像度の構成は、現在ブロックのMVP候補リストを構成する方法によって変わることができる。例えば、エンコーダ及びデコーダは前述した第1方法及び第2方法のうち、いずれか1つを使用して、現在ブロックの動き補償のためのMVP候補リストを構成することができる。この場合、現在ブロックの解像度セットが含む複数の可用解像度の構成は、前述した第1方法及び第2方法のうち、どの方法を使用して現在ブロックのMVP候補リストが構成されるかによって変わることができる。
一実施形態に従って、現在ブロックの動き補償のためのMVP候補リストが第1方法を使用して構成された場合、現在ブロックの動きベクトル差分値の解像度は第1解像度セットから獲得できる。現在ブロックの動き補償のためのMVP候補リストが第2方法を使用して構成された場合、現在ブロックの動きベクトル差分値の解像度は第2解像度セットから獲得できる。この際、第1解像度セットを構成する複数の可用解像度と第2解像度セットを構成する複数の可用解像度のうちの一部は互いに異なることがある。例えば、第2解像度セットは第1解像度セットが含む複数の可用解像度でない他の可用解像度を少なくとも1つ含むことができる。
前述したように、第1方法はアフィンモデルに基づいてMVP候補リストを構成する方法であり、第2方法はアフィンモデルに基づかないでMVP候補リストを構成する方法でありうる。アフィンモデルに基づいた動き補償は並進運動(translation motion)外の不規則的な運動に対する動き予測でありうる。これによって、既存の一般インター予測方法に比べて動きベクトル差分値を細密にシグナリングすることが必要でありうる。
これによって、第1解像度セットは第2解像度セットが含む複数の可用解像度のうち、最も大きい可用解像度の代わりに他の可用解像度を含むことができる。この際、他の可用解像度は前記最も大きい可用解像度より小さい可用解像度でありうる。また、第1解像度セットが含む可用解像度のうち、最も大きい可用解像度は第2解像度セットが含む可用解像度のうち、最も大きい可用解像度より小さいことがある。例えば、第1解像度セットが含む可用解像度のうち、最も大きい可用解像度は、1サンプル単位の解像度でありうる。この際、第2解像度セットが含む可用解像度のうち、最も大きい可用解像度は、4サンプル単位の解像度でありうる。
具体的な実施形態に従って、第1解像度セットは1/4、1/2、1サンプル単位の可用解像度で構成できる。この際、第2解像度セットは1/4、1、4サンプル単位の可用解像度で構成できる。他の具体的な実施形態に従って、第1解像度セットは1/16、1/4、1サンプル単位の可用解像度で構成できる。この際、第2解像度セットは1/4、1、4サンプル単位の可用解像度で構成できる。
前述したように、デコーダはシグナリングされた解像度指示子を用いて現在ブロックの動きベクトル差分値の解像度を決定することができる。例えば、デコーダは第1解像度セット及び第2解像度セットのうちのいずれか1つが含む複数の可用解像度のうち、現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子を獲得することができる。また、デコーダは解像度指示子に基づいて現在ブロックの修正された動きベクトル差分値を獲得することができる。デコーダは、修正された動きベクトル差分値に基づいて現在ブロックを復元することができる。
本発明の一実施形態に従って、解像度指示子値のうちの特定値により指示される可用解像度は、MVP候補リストが第1方法及び第2方法のうち、どの方法を使用して構成されるかによって変わることができる。一実施形態に従って、デコーダは第1値を有する解像度指示子を獲得することができる。現在ブロックの動き補償のためのMVP候補リストが第1方法を使用して構成された場合、第1値により指示される可用解像度は第7可用解像度でありうる。現在ブロックの動き補償のためのMVP候補リストが第2方法を使用して構成された場合、第1値により指示される可用解像度は第8可用解像度でありうる。この際、第7可用解像度と第8可用解像度は互いに異なる解像度でありうる。
一実施形態に従って、第7可用解像度は第1解像度セット及び第2解像度セット全てが含む可用解像度でありうる。現在ブロックの動き補償のためのMVP候補リストが第2方法を使用して構成された場合、第7可用解像度は第1値と異なる第2値により指示できる。例えば、第1値は‘10、11’のうちのいずれか1つであるか、または‘00、01’のうちのいずれか1つでありうる。この際、第2値は‘10、11’のうちの第1値と異なるいずれか1つであるか、または‘00、01’のうちの第1値と異なるいずれか1つでありうる。
一方、前述したように、複数の可用解像度のうち、現在ブロックの動きベクトル差分値の解像度に選択される確率が最も高い可用解像度を最も短い長さのビットを使用してシグナリングすることが有利でありうる。一実施形態に従って、第1解像度セットが含む可用解像度のうちの最も小さい可用解像度は、第2解像度セットが含む可用解像度のうち、最も小さい可用解像度より小さいことがある。
即ち、第2解像度セットが含む可用解像度は相対的に大きい解像度でありうる。これによって、現在ブロックの動き補償のためのMVP候補リストが第2方法を使用して構成された場合、動きベクトル差分値の精度を増加させる必要がありえる。前述したように、動きベクトル差分値の精度を増加させる必要がある場合、複数の可用解像度のうち、最も小さい可用解像度を最も短い長さのビットを使用してシグナリングすることが有利でありうる。一実施形態に従って、第3値は解像度指示子の値のうち、最も短い長さのビットを使用して表現される値でありうる。
一実施形態に従って、現在ブロックの動き補償のためのMVP候補リストが第2方法を使用して構成された場合、第3値は第2解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度を指示することができる。一実施形態に従って、第2解像度セットが含む可用解像度のうち、最も小さい可用解像度は1/4でありうる。
また、第1解像度セットが含む可用解像度は相対的に小さい解像度でありうる。これによって、現在ブロックの動き補償のためのMVP候補リストが第1方法を使用して構成された場合、動きベクトル差分値のためのシグナリングオーバーヘッドを減少させる必要がありえる。したがって、現在ブロックの動き補償のためのMVP候補リストが第1方法を使用して構成された場合、第3値は第1解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度の以外の他の可用解像度を指示することができる。一実施形態に従って、第3値は第1解像度セットが含む可用解像度のうち、最も大きい可用解像度、2番目に小さい可用解像度、または2番目に大きい可用解像度を指示することができる。例えば、第1解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度の以外の他の可用解像度は1/4、1/2、1、4のうち、いずれか1つでありうる。
一方、本発明の他の一実施形態に従って、現在ブロックの解像度セットが含む可用解像度の構成は現在ブロックの動きベクトル予測子を指示するMVPインデックスによって変わることができる。MVPインデックスは、現在ブロックの動きベクトルを誘導するために参照される動きベクトル予測子が現在ブロックのMVP候補リストで何番目の候補であるかを示すことができる。
図14は、現在ブロックの動きベクトル予測子によって現在ブロックの動きベクトル差分値の解像度がシグナリングされる方法の一実施形態を示す図である。例えば、デコーダは現在ブロックの動き補償のためのMVP候補リストのうち、現在ブロックの動き補償のために参照される動きベクトル予測子を指示するMVPインデックスを獲得することができる。この際、現在ブロックの解像度指示子の特定値により指示される可用解像度はMVPインデックスが既設定されたインデックスより大きいか小さいかによって変わることができる。
現在ブロックのMVP候補リスト内で、小さいMVPインデックスに対応する動きベクトル予測子候補であるほど、現在ブロックの動きベクトルと類似する確率が高いことがある。また、現在ブロックの動きベクトル予測子が現在ブロックの動きベクトルと類似するほど現在ブロックの動きベクトル差分値の絶対値が小さくなることがある。これによって、現在ブロックの動きベクトル予測子に対応するMVPインデックスが既設定されたMVPインデックスより小さい場合、現在ブロックの解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度は、解像度指示子の値のうち、最も短い長さのビットを使用して表現される値により指示できる。
反対に、現在ブロックの動きベクトル予測子に対応するMVPインデックスが既設定されたMVPインデックスより大きい場合、現在ブロックの解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度でない特定可用解像度が解像度指示子の値のうち、最も短い長さのビットを使用して表現される値により指示できる。この際、特定可用解像度は複数の可用解像度のうち、最も大きい解像度でありうる。または、特定可用解像度は複数の可用解像度のうち、2番目に大きいか、または2番目に小さい解像度でありうる。
図14を参照すると、現在ブロックの解像度セットは1/4、1、4サンプル単位の可用解像度を含むことができる。また、現在ブロックの動き補償のためのMVPインデックスが既設定されたMVPインデックスより小さい(Candidate 1、Candidate 2)場合、1/4、1、4のうち、最も小さい可用解像度である1/4単位の解像度が最も短いビットを使用してシグナリングできる。一方、現在ブロックの動き補償のためのMVPインデックスが既設定されたMVPインデックスより大きい(Candidate N)場合、1/4、1、4のうち、1または4単位の解像度が最も少ない個数のビットを使用してシグナリングできる。
図15は、現在ブロックの動きベクトル予測子によって動きベクトル差分値の解像度がシグナリングされる方法の他の一実施形態を示す図である。図14を通じて前述したように、現在ブロックの動き補償のためのMVPインデックスによって、現在ブロックの動きベクトル差分値の解像度がシグナリングされる方法が変わることができる。
前述したように、現在ブロックの動き補償のためのMVP候補リストは多様な方法により獲得された候補を含むことができる。一実施形態に従って、現在ブロックの動き補償のためのMVP候補リストは、空間的候補、時間的候補、またはゼロ動きベクトルのうち、少なくとも1つを含むことができる。この際、現在ブロックの動きベクトル予測子がどんな方式により獲得された候補でありかによって現在ブロックの解像度セットが含む複数の可用解像度の構成が変わることができる。動きベクトル予測子候補によって推定される現在ブロックとの類似度が異なることができるためである。例えば、空間的候補の場合、現在ブロックと類似する確率が大きいことと推定できる。また、時間的候補、ゼロ動きベクトルのような動きベクトル予測子候補は空間的候補に比べて現在ブロックと類似する確率が小さいものと推定できる。
例えば、現在ブロックの動きベクトル予測子が空間的候補のうちのいずれか1つである場合、現在ブロックの解像度セットが含む複数の可用解像度のうちの最も小さい可用解像度は、解像度指示子の値のうちの最も短い長さのビットを使用して表現される値により指示できる。
また、現在ブロックの動きベクトル予測子が空間的候補のうちのいずれか1つでない場合、現在ブロックの解像度セットが含む複数の可用解像度のうちの最も小さい可用解像度でない特定可用解像度が解像度指示子の値のうちの最も短い長さのビットを使用して表現される値により指示できる。この際、特定可用解像度は複数の可用解像度のうちの最も大きい解像度でありうる。または、特定可用解像度は複数の可用解像度のうちの2番目に大きいか、または2番目に小さい解像度でありうる。
一方、図13乃至図15では互いに異なる解像度セットの各々が同一の個数の可用解像度を含むものとして図示されているが、本開示がこれに制限されるのではない。本発明の一実施形態に従って、解像度セット別に互いに異なる個数の可用解像度を含むこともできる。例えば、第1解像度セットは3個の可用解像度を含むことができる。一方、第3状況で使われる第3解像度セットは2つの可用解像度を含むことができる。エンコーダ及びデコーダは状況によって互いに異なる個数の可用解像度を含む解像度セットを構成することができる。
前述したように、動き情報セットは現在ブロックの参照ピクチャを示す参照ピクチャインデックスを含むことができる。デコーダは、シグナリングされた参照ピクチャインデックスから現在ブロックの参照ピクチャのPOCを獲得することができる。本発明の一実施形態に従って、現在ブロックの解像度セットが含む複数の可用解像度の構成は、現在ピクチャのPOC及び参照ピクチャのPOCによって変わることができる。一実施形態に従って、現在ピクチャのPOC及び参照ピクチャのPOCに基づいて、現在ブロックの解像度セットを構成する可用解像度のうちの一部が除外できる。
例えば、参照ピクチャのPOCが現在ピクチャのPOCと同一な場合、現在ブロックの動きベクトル差分値の解像度は第4解像度セットから獲得できる。また、参照ピクチャのPOCが現在ピクチャのPOCと同一でない場合、現在ブロックの動きベクトル差分値の解像度は第5解像度セットから獲得できる。この際、第4解像度セットは第5解像度セットが含む可用解像度のうち、最も小さい可用解像度を除外した残りの可用解像度で構成できる。即ち、現在ピクチャのPOC及び参照ピクチャのPOCによって、現在ブロックの解像度セットを構成する可用解像度の個数が変わることができる。
本発明の他の一実施形態をよれば、現在ブロックの動きベクトル差分値の解像度は量子化パラメータ(quantization parameter、QP)によって異なる方法によりシグナリングできる。例えば、現在ブロックのQPによって図11乃至図15を通じて前述したシグナリング方法のうち、いずれか1つが決定できる。また、現在ブロックの動きベクトル差分値の解像度は決定されたシグナリング方法を使用してシグナリングできる。一実施形態に従って、現在ブロックのQPが小さいほど、現在ブロックの動きベクトル差分値の解像度が小さくなることができる。
本発明の更に他の一実施形態をよれば、現在ブロックの動きベクトル差分値の解像度はフレームレート(framerate)によって異なる方法によりシグナリングできる。例えば、現在ブロックを含むビデオ信号のフレームレートによって図11乃至図15を通じて前述したシグナリング方法のうち、いずれか1つが決定できる。また、現在ブロックの動きベクトル差分値の解像度は決定されたシグナリング方法を使用してシグナリングできる。一実施形態に従って、ビデオ信号のフレームレートが高いほど、フレーム間の時間間隔が短くて動きベクトルが小さい確率が高まることができる。これによって、現在ブロックのフレームレートが高いほど、現在ブロックの動きベクトル差分値の解像度が小さくなることができる。
本発明の更に他の一実施形態をよれば、現在ブロックの動きベクトル差分値の解像度は、現在ブロックと現在ブロックの周辺ブロックとの間のサイズ比率またはサイズ差によって異なる方法によりシグナリングできる。例えば、現在ブロックと現在ブロックの周辺ブロックとの間のサイズ比率またはサイズ差によって、図11乃至図15を通じて前述したシグナリング方法のうち、いずれか1つが決定できる。前述した実施形態は動きベクトル差分値でない動きベクトルが直接的にシグナリングされる場合にも同一または相応する方法により適用できる。
一方、本発明の追加的な実施形態に従って、エンコーダ及びデコーダは動きベクトル差分値を足す前に動きベクトル予測子を修正することができる。これを通じて、現在ブロックの動きベクトルを獲得するために使われる動きベクトル差分値のサイズを減少させることができる。この際、現在ブロックのMVP候補リストが含む動きベクトル予測子候補のうちの一部が現在ブロックの動きベクトル予測子に選択された場合のみに動きベクトル予測子に対する修正が遂行できる。例えば、現在ブロックのMVP候補リストが含む動きベクトル予測子候補のうち、既設定されたMVPインデックスより小さいMVPインデックスに対応する動きベクトル予測子候補が現在ブロックの動きベクトル予測子に使われる場合、該当動きベクトル予測子に対する修正が遂行できる。
一実施形態に従って、動きベクトル予測子に対する修正が遂行されるかによって解像度セットが含む複数の可用解像度をシグナリングする方法が変わることができる。例えば、現在ブロックの動きベクトル予測子が修正された場合、解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度が最も少ない個数のビットを使用してシグナリングできる。また、現在ブロックの動きベクトル予測子が修正されていない場合、解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度でない他の解像度のうち、いずれか1つが最も少ない個数のビットを使用してシグナリングできる。
他の一実施形態に従って、動きベクトル予測子は動きベクトル差分値を足した後に修正されることもできる。この場合、現在ブロックの動きベクトル差分値の解像度が動きベクトル予測子が動きベクトル差分値を足す前に修正される場合と異なる方法によりシグナリングできる。動きベクトル予測子が動きベクトル差分値が加えられた後に修正される場合、動きベクトル差分値の精度が低くても動きベクトル修正過程を通じて予測誤差を減らすことができる。これによって、現在ブロックの動きベクトル予測子が動きベクトル差分値を足す前に修正される場合、解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度でない他の解像度のうち、いずれか1つが最も少ない個数のビットを使用してシグナリングできる。反対に、現在ブロックの動きベクトル予測子が動きベクトル差分値を足す前に修正されない場合、解像度セットが含む複数の可用解像度のうち、最も小さい可用解像度が最も少ない個数のビットを使用してシグナリングできる。
追加的な実施形態に従って、現在ブロックの動きベクトルまたは動きベクトル予測子がどんな候補であるかによって、後に遂行される動きベクトル修正過程が変わることができる。動きベクトルを修正する過程はより正確な動きベクトルを探索するための過程を含むことができる。例えば、デコーダは基準点から既定義された方法によって現在ブロックとマッチングされるブロックを探索することができる。基準点は決定された動きベクトルまたは動きベクトル予測子に該当する位置でありうる。動きベクトル探索は、多様な方法により遂行できる。例えば、探索にはテンプレートマッチング(templete matching)または両側マッチング(bilateral matching)が使われることができる。この際、既定義された方法によって基準点から動く程度が変わることができる。動きベクトル修正過程を異なるようにするということは、基準点から動く程度を異なるようにすることでありうる。
例えば、正確な動きベクトル予測子候補に対しては詳細な修正過程から始めることができ、不正確な動きベクトル予測子候補に対してはあまり詳細でない修正過程から始めることができる。本開示で、正確な動きベクトル予測子候補及び不正確な動きベクトル予測子候補はMVP候補リスト内での位置によって決定できる。また、正確な動きベクトル予測子候補及び不正確な動きベクトル予測子候補は動きベクトル予測子候補の各々がいかなる方法により生成されたかによって決定できる。いかなる方法により動きベクトル予測子候補が生成されたかは、現在ブロックの空間的候補のうち、どの位置に対応する候補であるかを示すことができる。また、詳しい、あまり詳しくない修正は、ブロックを基準点から少しずつ動きながら探索するのか、たくさん動きながら探索するのかでありうる。また、たくさん動きながら探索する場合、たくさん動きながら探した最もよくマッチングされるブロックから追加的に少しずつ動きながら探索する過程を追加することができる。
前述したテンプレートマッチング方法は、現在ブロックのテンプレートと比較しようとする比較対象ブロックのテンプレートの間の値の差に基づいて現在ブロックのテンプレートと最も差の少ない比較対象ブロックを獲得する方法でありうる。特定ブロックのテンプレートは、特定ブロックの周辺サンプルに基づいて獲得できる。図16は、本発明の一実施形態に従ってテンプレートマッチング方法に基づいて動きベクトル差分値の解像度が獲得される方法を示す図である。本発明の一実施形態に従って、現在ブロックの動きベクトル差分値の解像度はシグナリングされないこともある。一実施形態に従って、デコーダはテンプレートマッチング方法と同一のコスト(cost)計算に基づいて現在ブロックの解像度を獲得することができる。前述したように、参照ブロックは動きベクトル予測子及び動きベクトル差分値に基づいて獲得できる。この際、動きベクトル差分値は現在ブロックの動きベクトル差分値の解像度により修正された動きベクトル差分値でありうる。これによって、現在ブロックの動きベクトル差分値の解像度によって参照ピクチャ内で参照ブロックの位置が変わることができる。
一実施形態に従って、現在ブロックの動き補償のための解像度セットは既設定された可用解像度で構成できる。図16を参照すると、現在ブロックの解像度セットは、第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、及び第3可用解像度(Resolution 3)を含むことができる。現在ブロックの動きベクトル予測子により指示される基準点1601に基づいて現在ブロックの解像度セットが含む可用解像度の各々に対応する複数の参照ブロック候補が獲得できる。解像度セットが含む可用解像度個数の参照ブロック候補が獲得できる。具体的な実施形態に従って、複数の参照ブロック候補は第1可用解像度に対応する第1参照ブロック候補1602、第2可用解像度に対応する第2参照ブロック候補1603、及び第3可用解像度に対応する第3参照ブロック候補1604を含むことができる。デコーダは、複数の参照ブロック候補のうち、いずれか1つを現在ブロックの参照ブロックに使用することができる。例えば、デコーダは複数の参照ブロック候補の各々と現在ブロックをテンプレートマッチング結果に基づいてコストの最も低い参照ブロック候補を現在ブロックの参照ブロックに選択することができる。また、デコーダは該当参照ブロックに基づいて現在ブロックを復元することができる。
他の一実施形態に従って、前述した参照ブロック候補の各々と現在ブロックとの間のテンプレートマッチング結果に基づいて現在ブロックの動きベクトル差分値の解像度がシグナリングされることもできる。例えば、前述したテンプレートマッチング動作はデコーダと同様にエンコーダで同一に遂行できる。また、エンコーダはテンプレートマッチング結果に基づいてコストの最も低い参照ブロック候補に対応する可用解像度を最も少ない個数のビットを使用してシグナリングできる。
この場合、エンコーダ及びデコーダは複数の参照ブロック候補のうち、一部に対してのみテンプレートマッチングを遂行することもできる。例えば、図16の第1参照ブロック候補1602、第2参照ブロック候補1603、及び第3参照ブロック候補1604のうち、第1参照ブロック候補1602、第2参照ブロック候補1603に対してのみ現在ブロックとのテンプレートマッチングが遂行できる。また、第1参照ブロック候補1602及び第2参照ブロック候補1603の各々と現在ブロックとの間のテンプレートマッチング結果に基づいて、現在ブロックの解像度セットが含む可用解像度のうち、最も短い長さのビットを使用してシグナリングされる可用解像度が決定できる。第1可用解像度及び第2可用解像度のうち、いずれか1つが最も短い長さのビットを使用してシグナリングできる。また、第1可用解像度及び第2可用解像度のうち、残りの1つとテンプレートマッチングを遂行しない参照ブロック候補に対応する第3可用解像度は追加的なビットを使用してシグナリングできる。これを通じて、エンコーダ及びデコーダはテンプレートマッチング方法に必要な演算量を減少させることができる。
一実施形態に従って図16を通じて説明された実施形態は、シグナリングされた動きベクトル差分値のサイズによって適用するか否かが決定されることもできる。例えば、シグナリングされた動きベクトル差分値が既設定された値より大きい場合のみにテンプレートマッチング方法が使われることもできる。シグナリングされた動きベクトル差分値が既設定された値より小さい場合、解像度に従う参照ブロック候補間のテンプレートマッチングコスト差が明らかでない場合もあるためである。
図17は、本発明の一実施形態に従って両側マッチング方法に基づいて動きベクトル差分値の解像度が獲得される方法を示す図である。本発明の一実施形態に従って、図16を通じて説明したテンプレートマッチング方法に代わって両側マッチング方法が使われることができる。両側マッチング方法は動き軌跡に沿って2つ以上の参照ピクチャの各々の参照ブロックに基づいて現在ブロックを復元する方法を示す。両側マッチング方法は2つ以上の参照ピクチャの各々の参照ブロックの間の差に基づいて差の最も小さいセットを獲得するものでありうる。
前述したように、現在ブロックが双予測ブロックである場合、現在ブロックは互いに異なる2つ以上の参照ピクチャの2つ以上の参照ブロックに基づいて復元できる。図17を参照すると、第1参照ピクチャ(Reference picture 1)及び第2参照ピクチャ(Reference picture 2)別に特定可用解像度に対応する参照ブロック候補が構成できる。エンコーダ及びデコーダは第1参照ピクチャ(Reference picture 1)内の参照ブロック候補と第2参照ピクチャ(Reference picture 2)内の参照ブロック候補の間の両側マッチング結果に基づいて、第1参照ピクチャ(Reference picture 1)内の参照ブロック及び第2参照ピクチャ(Reference picture 2)内の参照ブロックを獲得することができる。図17の実施形態には、図16を通じて前述した実施形態が同一または相応する方法により適用できる。
一実施形態に従って、現在ブロックが互いに異なる参照リストに対応する2つの動き情報セットに基づいてインター予測される場合、2つの動きベクトル差分値が別途にシグナリングできる。この場合、2つの動きベクトル差分値の各々に適用される解像度は互いに同一または異なることがある。以下では、現在ブロックの参照ピクチャリスト別解像度がシグナリングされる多様な方法について説明する。
本発明の一実施形態に従って、参照ピクチャリスト別動きベクトル差分値の解像度は前述した両側マッチング方法に基づいて決定できる。一実施形態に従って、2つの参照ピクチャリストの各々に対応する解像度セットは互いに独立的に構成できる。例えば、第1参照ピクチャリストL0に対応する解像度セットは、m個の可用解像度を含むことができる。また、第2参照ピクチャリストL1に対応する解像度セットはn個の可用解像度を含むことができる。この場合、エンコーダ及びデコーダは第1参照ピクチャリストに対応するn個の参照ブロック候補及び第2参照ピクチャリストに対応するm個の参照ブロック候補の間の両側マッチング結果に基づいて参照ピクチャリストの各々の動きベクトル差分値の解像度を獲得することができる。この場合、エンコーダ及びデコーダは(nxm)回の両側マッチングを遂行しなければならない。
または、動きベクトル差分値の解像度は複数の参照ピクチャリストに対して共通的な解像度セットが使われることもできる。例えば、第1参照ピクチャリストL0及び第2参照ピクチャリストL1に対して共通的に使われる解像度セットはn個の可用解像度を含むことができる。一実施形態に従って、第1参照ピクチャリストL0及び第2参照ピクチャリストL1の各々に対応する動きベクトル差分値に対して互いに同一の解像度が適用されるように設定できる。この場合、エンコーダ及びデコーダはn回の両側マッチング結果に基づいて第1参照ピクチャリストL0及び第2参照ピクチャリストL1の各々の動きベクトル差分値の解像度を獲得することができる。
一方、特定参照ピクチャリストに対応する動きベクトル予測子と動きベクトルとの間の差と他の参照ピクチャリストに対応する動きベクトル予測子と動きベクトルとの間の差が類似することができる。この場合、特定参照ピクチャリストに対応する動きベクトル差分値の解像度は他の参照ピクチャリストに対応する動きベクトル差分値の解像度と同一の可能性が高いことができる。したがって、本発明の一実施形態によれば、現在ブロックの特定参照ピクチャリストに対応する動きベクトル差分値の解像度は、現在ブロックの他の参照ピクチャリストに対応する動きベクトル差分値の解像度と同一でありうる。
図18は、本発明の一実施形態に従って現在ブロックの参照ピクチャリスト別に動きベクトル差分値の解像度がシグナリングされる方法を示す図である。図18を参照すると、第1参照ピクチャリストL0に対応する第1リスト解像度セット(L0 MVD resolution signaling)と第2参照ピクチャリストL1に対応する第2リスト解像度セット(L1 MVD resolution signaling)が各々構成できる。また、第1参照ピクチャリストL0に対応する動きベクトル差分値の解像度を指示する第1リスト解像度指示子と第2参照ピクチャリストL1に対応する動きベクトル差分値の解像度を指示する第2リスト解像度指示子が各々シグナリングできる。
例えば、デコーダは第1リスト解像度セット及び第1リスト解像度指示子に基づいて第1参照ピクチャリストに対応する動きベクトル差分値の解像度を獲得することができる。次に、デコーダは第2リスト解像度セット及び第2リスト解像度指示子に基づいて第2参照ピクチャリストに対応する動きベクトル差分値の解像度を獲得することができる。この際、第2リスト解像度セットが含む可用解像度のうち、いずれか1つは第1参照ピクチャリストに対応する動きベクトル差分値の解像度に依存する解像度(L0 resolution)でありうる。
具体的な実施形態に従って、第2リスト解像度指示子が既設定された値(0)である場合、デコーダは第1参照ピクチャリストに対応する動きベクトル差分値の解像度に基づいて第2参照ピクチャリストに対応する動きベクトル差分値の解像度を決定することができる。この場合、デコーダは第1参照ピクチャリストに対応する動きベクトル差分値の解像度と同一の解像度を第2参照ピクチャリストに対応する動きベクトル差分値の解像度に使用することができる。この際、既設定された値は第2リスト解像度指示子の値のうち、最も少ない個数のビットを使用して表現される値でありうる。また、第2リスト解像度指示子の他の値は各々残りの可用解像度(Remaining resolution 1、Remaining resolution 2)を指示する指示子値に使われることができる。
図18の実施形態で、第1参照ピクチャリストL0に対応する動きベクトル差分値の解像度が第2参照ピクチャリストL1に対応する動きベクトル差分値の解像度より先に決定されると説明しているが、本開示がこれに制限されるのではない。例えば、第1リスト解像度セットは第2参照ピクチャリストL1に対応する動きベクトル差分値の解像度に依存する解像度を含むことができる。
図19は、現在ブロックの動きベクトル差分値の解像度がピクチャの解像度によってシグナリングされる方法の一実施形態を示す図である。本発明の一実施形態に従って、現在ブロックの動きベクトル差分値の解像度はピクチャの解像度またはサイズのうち、少なくとも1つによって異なる方法によりシグナリングできる。ピクチャの解像度またはサイズに関する情報はエンコーダからシグナリングできる。デコーダは、シグナリングされたピクチャの解像度またはサイズに関する情報を獲得することができる。一実施形態に従って、低解像度ピクチャ(Low resolution picture)と高解像度ピクチャ(high resolution picture)の各々で特定ブロックの動きベクトル差分値の解像度がシグナリングされる方法は互いに異なることがある。図19を参照すると、低解像度ピクチャ(Low resolution picture)と高解像度ピクチャ(high resolution picture)の各々で動きベクトル予測子が指示する基準点から参照ブロックの位置までの相対的な距離が同一の場合でも、高解像度ピクチャで該当距離を示すための値は低解像度ピクチャで該当距離は示す値に比べて大きいことがある。
これによって、現在ブロックの動きベクトル差分値の解像度は、現在ブロックを含む現在ピクチャに比べてピクチャの解像度が落ちる他のピクチャの動きベクトル差分値の解像度より大きい値に設定される確率が高いことがある。したがって、現在ピクチャが高解像度ピクチャである場合、複数の可用解像度のうち、最も小さい可用解像度が最も短い長さのビットを使用して表現される値により指示されないことがある。例えば、現在ピクチャが高解像度ピクチャである場合、複数の可用解像度のうち、最も小さい可用解像度でない可用解像度が最も短い長さのビットを使用して表現される値により指示できる。前述した実施形態はスケーラブルビデオコーディング(scalable video coding)のようにビデオ信号が含むピクチャの解像度やサイズが変化する場合に適用されることもできる。
図20は、本発明の一実施形態に従って現在ブロックの参照ピクチャのサイズに基づいて動きベクトル差分値の解像度がシグナリングされる方法を示す図である。一実施形態に従って、動きベクトル差分値の解像度は現在ブロックの参照ピクチャのサイズに基づいてシグナリングできる。図20は、現在ブロックの動きベクトル予測子により指示される基準点2001に基づいて現在ブロックの解像度セットが含む可用解像度の各々に対応する参照ブロック候補を示す。図20で、第3可用解像度(Resolution 3)に対応する第3参照ブロック候補は参照ピクチャ外に位置する。このように、特定可用解像度に基づいて構成された参照ブロック候補の少なくとも一部が参照ピクチャの境界外の場合、該当可用解像度はシグナリング対象から除外できる。即ち、基準点2001を基準に特定可用解像度に基づいて修正された動きベクトル差分値により指示される地点が現在ピクチャの境界外の場合、該当可用解像度はシグナリングされないことがある。
例えば、解像度セットがN個の可用解像度を含むことができる。この場合、N個の可用解像度のうち、M個の可用解像度を除外した(N−M)のうち、いずれか1つを指示する解像度指示子がシグナリングできる。この際、M個の可用解像度の各々に対応する参照ブロック候補は参照ピクチャの境界から外れる参照ブロック候補でありうる。これを通じて、エンコーダ及びデコーダは不必要な可用解像度を除外して現在ブロックの動きベクトル差分値の解像度のためのシグナリングオーバーヘッドを減少させることができる。具体的な例によって、第1可用解像度(Resolution 1)、第2可用解像度(Resolution 2)、第3可用解像度(Resolution 3)のうち、いずれか1つをシグナリングする場合、最大2ビットが使われることができる。一方、第1可用解像度(Resolution 1)及び第2可用解像度(Resolution 2)のうち、いずれか1つをシグナリングする場合、最大1ビットが使われることができる。
図20を参照すると、解像度セットは第1可用解像度、第2可用解像度、及び第3可用解像度を含むことができる。この際、現在ブロックのシグナリングされた動きベクトル差分値が第3可用解像度に基づいて修正される場合、現在ブロックの動きベクトルは参照ブロックの境界外の地点を指示するようになる。これによって、エンコーダは第3可用解像度を除外した第1可用解像度及び第2可用解像度のうち、いずれか1つを指示する解像度指示子をシグナリングすることができる。具体的な実施形態に従って、エンコーダは1つのビットを使用して第1可用解像度及び第2可用解像度のうち、いずれか1つを指示する解像度指示子をシグナリングすることができる。
また、デコーダは現在ブロックの参照ピクチャのサイズ及びシグナリングされた動きベクトル差分値に基づいてシグナリング対象から除外される可用解像度を判断することができる。図20の実施形態で、デコーダは第3可用解像度がシグナリングされないことを認知することができる。デコーダは、1つのビットを通じてシグナリングされる解像度指示子に基づいて現在ブロックの動きベクトル差分値の解像度を獲得することができる。
本発明の追加的な実施形態に従って、動きベクトル予測子により指示される基準点の位置に基づいて図20を通じて前述した方法の使用有無が決定できる。例えば、基準点の位置が参照ピクチャの境界から既設定された距離以内の場合、図20を通じて説明された方法が使われることができる。
一実施形態に従って図20を通じて説明された実施形態は、シグナリングされた動きベクトル差分値のサイズによって適用するか否かが決定できる。例えば、シグナリングされた動きベクトル差分値が既設定された値より大きい場合のみに、エンコーダ及びデコーダは参照ピクチャから外れる参照ブロック候補を生成する可用解像度が存在するかを検討することができる。シグナリングされた動きベクトル差分値が既設定された値より小さい場合、エンコーダ及びデコーダは図20を通じて説明した方法を使用しないことがある。
追加的な実施形態に従って、シグナリング対象から除外された可用解像度に代わって新たな可用解像度が使われることができる。例えば、特定可用解像度に基づいて修正された動きベクトル差分値に対応する参照ブロック候補が参照ピクチャの境界を外に位置する場合、特定可用解像度を指示する指示子値は特定可用解像度と異なる可用解像度を指示することができる。例えば、異なる可用解像度は特定可用解像度より小さい値でありうる。具体的な実施形態に従って、現在ブロックの解像度セットは1/4、1、4サンプル単位の可用解像度で構成できる。4サンプル単位の可用解像度に対応する参照ブロック候補の少なくとも一部が現在ブロックの参照ピクチャの境界外に位置することができる。この場合、4サンプル単位の可用解像度を指示する解像度指示子値は、2サンプル単位の可用解像度を指示することができる。
図21は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度が獲得される方法を示すフローチャートである。図21では、現在ブロックの解像度セットが1/4、1、4サンプル単位の可用解像度を含むものとして図示しているが、本開示がこれに制限されるのではない。例えば、1/4、1、4サンプル単位の可用解像度のうち、少なくとも一部は1/2、2、1/8、1/16サンプル単位の可用解像度のうち、一部により代替できる。
図21を参照すると、デコーダはビットストリームをパーシング(parsing)して現在ブロックのシグナリングされた動きベクトル差分値を獲得することができる(S2101)。この際、シグナリングされた動きベクトル差分値は、動きベクトル差分値の解像度単位で表現された値でありうる。
また、デコーダは現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子を獲得することができる。一実施形態に従って、解像度指示子は可変長さのビットで表現される複数の値のうち、いずれか1つを示すことができる。デコーダは解像度指示子の最初のビットをパーシングすることができる(S2103)。次に、デコーダは解像度指示子の最初のビットが‘0’であるかを判断することができる(S2105)。最初のビットが‘0’の場合、1/4単位の可用解像度が現在ブロックの動きベクトル差分値の解像度に使われることができる。この場合、解像度指示子は後述する2番目のビットを含まないことがある。
最初のビットが‘0’でない場合、デコーダは4−サンプル単位の可用解像度に対応する参照ブロック候補が参照ピクチャの境界内に位置するかを判断することができる(S2107)。ここで、4サンプル単位の可用解像度に対応する参照ブロック候補は4サンプル単位の可用解像度に基づいて獲得された動きベクトル候補が指示する参照ブロック候補でありうる。具体的に、前記動きベクトル候補はステップS2101のシグナリングされた動きベクトル差分値から4サンプル単位の可用解像度に基づいて修正された動きベクトル差分値を、現在ブロックの動きベクトル予測子に足した値でありうる。一実施形態に従って、4サンプル単位の可用解像度に対応する参照ブロック候補が参照ピクチャの境界内に位置しない場合、1サンプル単位の可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。この場合、解像度指示子は後述する2番目のビットを含まないことがある。
4サンプル単位の可用解像度に対応する参照ブロック候補が参照ピクチャの境界内に位置する場合、デコーダは解像度指示子の2番目のビットをパーシングすることができる(S2109)。次に、デコーダは解像度指示子の2番目のビットに基づいて現在ブロックの動きベクトル差分値の解像度を決定することができる(S2111)。例えば、1サンプル単位の可用解像度を指示する指示子値は‘10’であり、4サンプル単位の可用解像度を指示する指示子値は‘11’でありうる。解像度指示子の2番目のビットが‘0’の場合、デコーダは1サンプル単位の可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。反対に、解像度指示子の2番目のビットが‘1’の場合、デコーダは4サンプル単位の可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。
図21で、シグナリングされた動きベクトル差分値を獲得するステップ(S2101)は、解像度指示子の最初のビットをパーシングするステップ(S2103)より先行するものとして図示されているが、本開示がこれに制限されるのではない。例えば、ステップS2101は、ステップS2103に後続することができる。一実施形態に従って、解像度指示子が複数のビットで表現される場合、各々のビットはビデオ信号処理のためのシンタックス(syntax)上で別途のインデックスまたはフラグ(flag)を通じて具現できる。
追加的な実施形態に従って、解像度指示子の2番目のビットをパーシングするステップ(S2109)は少なくとも現在ブロックの動きベクトル予測子を獲得するステップの以後に遂行できる。解像度指示子の2番目のビットは現在ブロックの動きベクトル予測子が指示する位置によってパーシングするか否かが決定できる。前述したように、特定可用解像度に対応する参照ブロック候補が参照ピクチャの境界外に位置する場合、該当可用解像度のためのシグナリングが省略できるためである。即ち、ビデオ信号がエンコーディングまたはデコーディングされるシンタックス上で解像度指示子の2番目のビットは現在ブロックの動きベクトル予測子情報より以後にパーシングできる。
また、解像度指示子の2番目のビットをパーシングするステップ(S2109)は、少なくとも現在ブロックのシグナリングされた動きベクトル差分値を獲得するステップの以後に遂行できる。解像度指示子の2番目のビットは現在ブロックのシグナリングされた動きベクトル差分値によってパーシングするか否かが決定できる。即ち、ビデオ信号がエンコーディングまたはデコーディングされるシンタックス(syntax)上で解像度指示子の2番目のビットは現在ブロックの動きベクトル差分値を示す情報より以後にパーシングできる。
図22は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度が獲得される方法を示すフローチャートである。図22を参照すると、デコーダはビットストリームをパーシングして現在ブロックのシグナリングされた動きベクトル差分値を獲得することができる(2001)。この際、シグナリングされた動きベクトル差分値は、動きベクトル差分値の解像度単位で表現された値でありうる。また、デコーダは現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子を獲得することができる。デコーダは、解像度指示子のn番目のビットをパーシングすることができる(S2205)。ここで、nは1からNまでの整数でありうる。nは1からNまでループ演算によって順次に増加する値でありうる。解像度指示子のn番目のビットが‘0’の場合、デコーダはn番目の可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。この際、n番目の可用解像度は現在ブロックの解像度セットが含む可用解像度のうち、n番目の指示子値により指示される可用解像度でありうる。
解像度指示子のn番目のビットが‘0’でない場合、デコーダは以前解像度セットからn番目の可用解像度を除外することができる(S2207)。デコーダは、以前解像度セットからn番目の可用解像度を除外して第1現在解像度セットを獲得することができる(S2207)。一実施形態に従って、nが1の場合、デコーダは初期解像度セット(initial resolution set)からn番目の可用解像度を除外して第1現在解像度セットを獲得することができる。次に、デコーダは第1現在解像度セットが含む可用解像度の個数が1つであるかを判断することができる(S2209)。第1現在解像度セットが含む可用解像度の個数が1つの場合、デコーダは第1現在解像度セットが含む可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。
第1現在解像度セットが含む可用解像度の個数が1つでない場合、デコーダは第1現在解像度セットで参照ピクチャの境界外に位置する参照ブロック候補に対応する可用解像度を除外することができる(S2211)。デコーダは、第1現在解像度セットで参照ピクチャの境界外に位置する参照ブロック候補に対応する可用解像度を除外して第2現在解像度セットを獲得することができる。
次に、デコーダは第2現在解像度セットが含む可用解像度の個数が1つであるかを判断することができる(S2213)。第2現在解像度セットが含む可用解像度の個数が1つの場合、デコーダは第2現在解像度セットが含む可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。第1現在解像度セットが含む可用解像度の個数が1つでない場合、デコーダはステップS2203乃至ステップ2013をまた遂行することができる。また、デコーダはnを1増加させることができる。この際、デコーダは次のループ演算のステップS2207で第2現在解像度セットを以前解像度セットに使用することができる。
図23は、本発明の一実施形態に従って現在ブロックの動きベクトルが獲得される方法を示すフローチャートである。本発明の一実施形態に従って、現在ブロックの動きベクトル差分値を示す情報は動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報を含むことができる。この際、第1情報及び第2情報は、各々動きベクトル差分値に対する互いに異なる情報でありうる。図23を参照すると、デコーダは動きベクトル差分値に対する第1情報をパーシングすることができる。また、デコーダは動きベクトル差分値に対する第2情報をパーシングすることができる。次に、デコーダは動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報に基づいて現在ブロックの動きベクトルを獲得することができる。本発明の一実施形態に従って、図23で、動きベクトル差分値に対する第1情報または第2情報をパーシングするステップのうち、いずれか1つは省略できる。以下、現在ブロックの動きベクトル差分値に対する第1情報または第2情報がパーシングされる条件について説明する。
図24は、本発明の一実施形態に従って現在ブロックの動きベクトルが獲得される方法を示すフローチャートである。本発明の一実施形態に従って、現在ブロックの動きベクトル差分値を示す情報は動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報を含むことができる。特定の状況で、動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報のうち、いずれか1つを通じて現在ブロックの動きベクトルが決定できる。一方、他の状況では、動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報のうち、いずれか1つだけでは1つの動きベクトルが決定され難いこともある。
図24を参照すると、デコーダは動きベクトル差分値に対する第1情報をパーシングすることができる。次に、デコーダは動きベクトル差分値に対する第1情報を使用して複数の参照ブロック候補を獲得することができる。デコーダは、複数の参照ブロック候補の全部が参照ピクチャの境界内に位置するかを判断することができる。複数の参照ブロック候補のうちの一部が参照ピクチャの境界外に位置する場合、デコーダは動きベクトル差分値に対する第1情報に基づいて現在ブロックの動きベクトルを獲得することができる。複数の参照ブロック候補の全部が参照ピクチャの境界内に位置する場合、デコーダは動きベクトル差分値に対する第2情報をパーシングすることができる。次に、デコーダは動きベクトル差分値に対する第1情報及び動きベクトル差分値に対する第2情報に基づいて現在ブロックの動きベクトルを獲得することができる。
一実施形態に従って、現在ブロックの動きベクトル差分値に対する第1情報は動きベクトル差分値の符号情報を除外した情報でありうる。例えば、現在ブロックの動きベクトル差分値に対する第1情報は現在ブロックの動きベクトル差分値の絶対値を示すことができる。また、現在ブロックの動きベクトル差分値に対する第2情報は、現在ブロックの動きベクトル差分値の符号を示すことができる。前述した実施形態に従って、特定ブロックの動きベクトル差分値は第2情報に対するパーシング無しで獲得できる。これによって、エンコーダ及びデコーダは動きベクトル差分値のためのシグナリングオーバーヘッドを減少させることができる。以下では、現在ブロックの動きベクトル差分値の符号情報が暗黙的にシグナリングされる方法について具体的に説明する。
図25は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の符号ビットが暗黙的にシグナリングされる方法を示す図である。図9を通じて前述したように、動きベクトル差分値を示す情報は、動きベクトル差分値の絶対値情報と動きベクトル差分値の符号情報のうち、少なくとも1つを含むことができる。動きベクトル差分値の符号情報は負の符号(−)または正の符号(+)のうち、いずれか1つでありうる。また、動きベクトル差分値を示す情報は、成分別絶対値情報及び符号情報を含むことができる。例えば、現在ブロックの動きベクトル差分値はx軸成分及びy軸成分で構成できる。動きベクトル差分値のx軸成分は、現在ブロックの動きベクトル予測子により指示される基準点と参照ブロックの位置との間のx軸上の距離(絶対値)及び方向(符号)を含むことができる。また、動きベクトル差分値のy軸成分は、現在ブロックの動きベクトル予測子により指示される基準点と参照ブロックの位置との間のy軸上の距離(絶対値)及び方向(符号)を含むことができる。この際、現在ブロックの動きベクトル差分値のx軸成分の符号情報またはy軸成分の符号情報のうち、少なくとも1つは暗黙的にシグナリングできる。即ち、動きベクトル差分値のx軸成分及びy軸成分の各々に対して前述した符号ビットハイディング動作が遂行できる。
図25を参照すると、負の符号(−)が適用された現在ブロックの動きベクトル差分値のx軸成分及び正の符号(+)が適用された現在ブロックの動きベクトル差分値のy軸成分に基づいて、第4参照ブロック候補(Candidate reference block 1)が獲得できる。また、正の符号(+)が適用された現在ブロックの動きベクトル差分値のx軸成分及び正の符号(−)が適用された現在ブロックの動きベクトル差分値のy軸成分に基づいて、第5参照ブロック候補(Candidate reference block 2)が獲得できる。
一実施形態に従って、第4参照ブロック候補(Candidate reference block 1)及び第5参照ブロック候補(Candidate reference block 2)のうち、いずれか1つが参照ピクチャ(Reference picture)の境界外に位置する場合、現在ブロックの動きベクトル差分値のx軸成分の符号情報はハイディングできる。この場合、エンコーダはハイディングされた符号情報をエンコーディングしないことがある。また、デコーダはハイディングされた符号情報に対応する動きベクトル差分値の符号を該当符号情報に対するパーシング過程を遂行しないで決定することができる。
図25で、第4参照ブロック候補(Candidate reference block 1)は参照ピクチャの境界外に位置することができる。この場合、現在ブロックの動きベクトル差分値のx軸成分の符号情報はハイディングできる。デコーダは、動きベクトル差分値のx軸成分の符号情報をパーシングする動作無しで、動きベクトル差分値のx軸成分の符号情報を獲得することができる。デコーダは動きベクトル差分値のx軸成分の符号に正の符号を使用することができる。
図26は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の符号ビットが暗黙的にシグナリングされる方法を示す図である。一実施形態に従って、現在ブロックの動きベクトル差分値の符号が決定される前まで現在ブロックの動きベクトル予測子が決定されないことがある。例えば、ビデオ信号処理のためのシンタックス上で現在ブロックのMVPを指示するMVPインデックスがパーシングされる前に現在ブロックの動きベクトル差分値の符号が決定できる。この場合、デコーダは複数のMVP候補(MVP candidate A, MVP candidate B)の各々に対して負の符号または正の符号が適用された動きベクトル差分値を足して複数の参照ブロック候補(Candidate reference block A-1, Candidate reference block A-2, Candidate reference block B-1, Candidate reference block B-2)を獲得することができる。
次に、デコーダは負の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補(Candidate reference block A-1, Candidate reference block B-1)の全部が参照ピクチャの境界外に位置するかを判断することができる。負の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の全部が参照ピクチャの境界外に位置する場合、デコーダは特定成分の符号情報をパーシングする動作無しで現在ブロックの動きベクトル差分値の特定成分の符号を決定することができる。この場合、デコーダは正の符号を現在ブロックの動きベクトル差分値の特定成分の符号に使用することができる。
また、デコーダは正の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補(Candidate reference block A-2, Candidate reference block B-2)の全部が参照ピクチャの境界外に位置するかを判断することもできる。正の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の全部が参照ピクチャの境界外に位置する場合、デコーダは特定成分の符号情報をパーシングする動作無しで現在ブロックの動きベクトル差分値の特定成分の符号を決定することができる。この場合、デコーダは負の符号を現在ブロックの動きベクトル差分値の特定成分の符号に使用することができる。
図27は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の符号ビットが暗黙的にシグナリングされる方法を示す図である。一実施形態に従って、現在ブロックの動きベクトル差分値の符号が決定される前まで現在ブロックの動きベクトル差分値の解像度が決定されないことがある。例えば、ビデオ信号処理のためのシンタックス上で現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子がパーシングされる前に現在ブロックの動きベクトル差分値の符号が決定できる。この場合、デコーダは複数の可用解像度(res 1、res 2)のうちのいずれか1つが掛けられて、負の符号及び正の符号のうちのいずれか1つが適用された動きベクトル差分値を現在ブロックの動きベクトル予測子に足して複数の参照ブロック候補(Candidate reference block 1-1, Candidate reference block 1-2, Candidate reference block 2-1, Candidate reference block 2-2)を獲得することができる。
次に、デコーダは負の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補(Candidate reference block 2-1, Candidate reference block 1-1)の全部が参照ピクチャの境界外に位置するかを判断することができる。この際、負の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の各々を構成するために動きベクトル差分値に適用された可用解像度は互いに異なることがある。負の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の全部が参照ピクチャの境界外に位置する場合、デコーダは特定成分の符号情報をパーシングする動作無しで現在ブロックの動きベクトル差分値の特定成分の符号を決定することができる。この場合、デコーダは正の符号を現在ブロックの動きベクトル差分値の特定成分の符号に使用することができる。
また、デコーダは正の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補(Candidate reference block 1-2, Candidate reference block 2-2)の全部が参照ピクチャの境界外に位置するかを判断することもできる。この際、正の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の各々を構成するために動きベクトル差分値に適用された可用解像度は互いに異なることがある。正の符号が適用された動きベクトル差分値の特定成分に基づいた複数の参照ブロック候補の全部が参照ピクチャの境界外に位置する場合、デコーダは特定成分の符号情報をパーシングする動作無しで現在ブロックの動きベクトル差分値の特定成分の符号を決定することができる。この場合、デコーダは負の符号を現在ブロックの動きベクトル差分値の特定成分の符号に使用することができる。
図25乃至図27では、説明の便宜のために動きベクトル差分値のx軸成分を例に挙げて説明しているが、本開示がこれに制限されるのではない。例えば、前述した実施形態は動きベクトル差分値のy軸成分に対して同一または相応する方法により適用できる。
図28は、図25乃至図27の実施形態に対するシンタックスの例示を示す図である。図28の第1シンタックスオーダー(syntax order)2801を参照すると、デコーダは動きベクトル差分値の絶対値(|MVD|)に基づいて動きベクトル差分値の符号情報に対するパーシングするか否かを決定することができる。図28の第2シンタックスオーダー2802を参照すると、デコーダは動きベクトル差分値の絶対値(|MVD|)及び動きベクトル差分値の解像度(MVD resolution)に基づいて動きベクトル差分値の符号情報に対するパーシングするか否かを決定することができる。図28の第3シンタックスオーダー2803を参照すると、デコーダは動きベクトル差分値の絶対値(|MVD|)、動きベクトル差分値の解像度(MVD resolution)及びMVPフラグ(MVP flag)に基づいて動きベクトル差分値の符号情報に対するパーシングするか否かを決定することができる。
図29は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度及びMVPがシグナリングされる方法を示す図である。本発明の一実施形態に従って、1つの統合指示子に基づいて動きベクトルと関連した2つ以上の情報がシグナリングできる。例えば、現在ブロックの動きベクトル差分値の解像度と現在ブロックのMVPは1つの統合指示子(MVR Index)によりシグナリングできる。
図29のように、MVPインデックスの各々にマッピングされる可用解像度が事前に設定できる。エンコーダ及びデコーダはMVPインデックスの各々と可用解像度が互いにマッピングされたテーブルを共有することができる。また、エンコーダ及びデコーダは共有されたテーブル及び統合指示子(MVR Index)に基づいて現在ブロックのMVP及び現在ブロックの動きベクトル差分値の解像度を獲得することができる。
一方、動きベクトル差分値の修正に使われた解像度によって動きベクトルの正確度が変わることができる。例えば、動きベクトル差分値の修正に使われた解像度が大きいほど、動きベクトルの正確度が低くなることがある。これによって、特定可用解像度が現在ブロックの動きベクトル差分値の解像度に使われる場合、現在ブロックの追加的な動きベクトル差分値がシグナリングできる。以下、追加的な動きベクトル差分値は第2乃至第n動きベクトル差分値と称されることができる。また、追加的な動きベクトル差分値を除外した既存の動きベクトル差分値は第1動きベクトル差分値と称されることもできる。
図30は、本発明の一実施形態に従って複数の動きベクトル差分値に基づいて現在ブロックの動きベクトルが誘導される方法を示す図である。本発明の一実施形態に従って、複数の動きベクトル差分値及び各々に対応する解像度を用いて現在ブロックの動きベクトルが獲得できる。例えば、現在ブロックの動きベクトル差分値の解像度が既設定された解像度より大きい場合、追加的な動きベクトル差分値がシグナリングできる。具体的な実施形態に従って、現在ブロックの解像度セットが1/4、1、4サンプル単位の可用解像度を含むことができる。この際、現在ブロックの動きベクトル差分値の解像度が‘4’の場合、追加的な動きベクトル差分値がシグナリングできる。また、追加的な動きベクトル差分値は既存の動きベクトル差分値がシグナリングされた解像度に一層小さい解像度に基づいてシグナリングできる。これを通じて、エンコーダ及びデコーダは動きベクトルの正確度を高めて、予測誤差を減少させることができる。
図30を参照すると、R1は第1動きベクトル差分値の解像度を示し、R2は第2動きベクトル差分値の解像度を示す。また、MVDval1はR1単位でシグナリングされた第1動きベクトル差分値を示し、MVDval2はR2単位でシグナリングされた第2動きベクトル差分値を示す。例えば、第1動きベクトル差分値の解像度(R1)が既設定された解像度より大きい場合、デコーダは追加的にシグナリングされた第2動きベクトル差分値(MVDval2)を獲得することができる。この際、第2動きベクトル差分値の解像度(R2)は現在ブロックの第1動きベクトル差分値の解像度(R1)より小さいことがある。
一方、本発明の一実施形態に従って現在ブロックのためのインター予測方法または動き補償方法は、アフィン(affine)モデル基盤の動き補償(以下、アフィン動き補償)を含むことができる。既存のインター予測方法によれば、現在ブロックに対するL0予測及びL1予測別にただ1つの動きベクトルを使用してインター予測が遂行される。これによって、既存の一般インター予測方法は、並進運動(translation motion)の予測に最適化されている。しかしながら、ズームイン/アウト、回転及びその他の不規則的な運動に対する動き補償を効率よく遂行するためには多様な形態とサイズの参照ブロックが使われる必要がある。以下では、本発明の一実施形態に従ってアフィン動き補償が遂行される方法について説明する。
図31は、本発明の一実施形態に従ってアフィンモデルに基づく動き補償を示す図である。図31を参照すると、アフィン動き補償では現在ブロック3101と異なるサイズ、形態及び/または方向を有する参照ブロック3102を用いて現在ブロック3101の予測が遂行できる。即ち、参照ブロック3102は非−矩形形態を有することができ、現在ブロック3101よりサイズが大きいか小さいことがある。参照ブロック3102は、現在ブロック3101にアフィン変換を遂行して獲得できる。アフィン変換を通じて現在ブロックに対するスケーリング、ローテーション、シアリング(shearing)、反転(reflection)、または直角投影(orthogonal projection)が遂行できる。一実施形態に従って、アフィン変換は複数のコントロールポイント動きベクトル(Control Point Motion Vector、CPMV)を用いて遂行できる。例えば、アフィン変換は3個のコントロールポイント動きベクトルを用いる6−パラメータアフィン変換と、2つのコントロールポイント動きベクトルを用いる4−パラメータアフィン変換を含むことができる。これに対する具体的な実施形態は後述する。
図32は、4−パラメータアフィン動き補償方法の一実施形態を図示する。アフィン変換の演算量及びシグナリングオーバーヘッドを減らすために、既設定された個数のコントロールポイント動きベクトル(CPMV)を使用してアフィン動き補償が遂行できる。コントロールポイント動きベクトル(CPMV)は現在ブロックの特定コントロールポイント(または、サンプル位置)に対応する動きベクトルである。特定コントロールポイントは、現在ブロックの隅のうち、少なくとも1つを含むことができる。本発明の実施形態では、現在ブロックの上左側隅に対応するCPMVをv0(または、第1のCPMV)と、現在ブロックの上右側隅に対応するCPMVをv1(または、第2のCPMV)と、現在ブロックの下左側隅に対応するCPMVをv2(または、第3のCPMV)と各々称する。アフィン動き補償のために少なくとも2つのCPMVを含むCPMVセットが使われることができる。
図32の実施形態によれば、v0とv1を使用して4−パラメータアフィン動き補償が遂行できる。実線で表示された現在ブロック3201は点線で表示された位置の参照ブロック3202を用いて予測できる。現在ブロック3201の各サンプルはアフィン変換を通じて互いに異なる参照サンプルにマッピングできる。より具体的に、現在ブロック3201のサンプル位置(x、y)での動きベクトル(vx、vy)は以下の[数式2]により誘導できる。本開示で、サンプル位置は現在ブロック内で相対的な座標を示すことができる。例えば、サンプル位置(x、y)は現在ブロックの左上段サンプルの位置を原点(0、0)にする座標でありうる。
ここで、(v0x、v0y)は現在ブロック3201の上左側隅に対応する第1のCPMVであり、(v1x、v1y)は現在ブロックの上右側隅に対応する第2のCPMVである。また、wは現在ブロック3201の幅である。
図33は、6−パラメータアフィン動き補償方法の一実施形態を図示する。より複雑な動きに対する正確な予測のために、3個以上のCPMVを使用したアフィン動き補償が遂行できる。図33を参照すると、6−パラメータアフィン動き補償は3個のCPMV、即ち、v0、v1、及びv2を用いて遂行できる。ここで、v0は現在ブロックの上左側隅に対応するCPMVであり、v1は現在ブロックの上右側隅に対応するCPMVであり、v2は現在ブロックの下左側隅に対応するCPMVである。現在ブロックの各サブブロックの動きベクトルは、前記v0、v1、及びv2に基づいて計算できる。図33の実施形態によれば、実線で表示された現在ブロック3301は点線で表示された位置の参照ブロック3302を用いて予測できる。現在ブロック3301の各サンプルはアフィン変換を通じて互いに異なる参照サンプルにマッピングできる。より具体的に、現在ブロック3301のサンプル位置(x、y)での動きベクトル(mvx、mvy)は以下の[数式3]により誘導できる。
ここで、(mv0 x、mv0 y)は現在ブロック3301の上左側隅に対応する第1のCPMVであり、(mv1 x、mv1 y)は上右側隅に対応する第2のCPMVであり、(mv2 x、mv2 y)は下左側隅に対応する第3のCPMVである。また、wは現在ブロック3301の幅であり、hは現在ブロック3301の高さである。
図34は、サブブロック基盤のアフィン動き補償方法の一実施形態を図示する。アフィン動き変換を利用すれば、現在ブロックの各サンプル位置での動きベクトル(即ち、動きベクトルフィールド)が誘導できる。しかしながら、演算量を減らすために、図34のようにサブブロック基盤のアフィン動き補償が遂行できる。図34を参照すると、現在ブロックは複数のサブブロックを含むことができる。また、各サブブロックの代表動きベクトルがCPMVセット(v0、v1、及びv2)に基づいて獲得できる。一実施形態に従って、各サブブロックの代表動きベクトルは該当サブブロックの中間のサンプル位置に対応する動きベクトルでありうる。追加的な実施形態によれば、サブブロックの動きベクトルには一般的な動きベクトルより正確度の高い動きベクトルが使われることができる。このために、動き補償補間フィルタが適用できる。
アフィン動き補償が遂行されるサブブロックのサイズは、多様な方法により設定できる。本発明の一実施形態によれば、サブブロックは4×4または8×8のように既設定されたサイズを有することができる。本発明の他の実施形態によれば、サブブロックのサイズM×Nは以下の[数式4]により決定できる。
ここで、wは現在ブロックの幅であり、MvPreは動きベクトルの分数単位正確度である。(v2x、v2y)は現在ブロックの下左側隅に対応する第3のCPMVである。一実施形態に従って、第3のCPMVは前述した[数式2]により計算できる。max(a、b)はaとbのうち、より大きい値を返還する関数であり、abs(x)はxの絶対値を返還する関数である。また、clip3(x、y、z)はz<xの場合、xを返還し、z>yの場合、yを返還し、その他の場合、zを返還する関数である。
デコーダは、CPMVセットのCPMVを用いて現在ブロックの各サブブロックの動きベクトルを獲得する。また、デコーダは各サブブロックの代表動きベクトルを用いて現在ブロックの各サブブロックの予測子を獲得することができる。各サブブロックの予測子を組合せて現在ブロックの予測子が獲得されることができ、デコーダはこのように獲得された現在ブロックの予測子を用いて現在ブロックを復元することができる。
図35、図36、図37、及び図38は、現在ブロックの予測のためのコントロールポイント動きベクトルセットを獲得する方法の実施形態を図示する。本発明の一実施形態に従って、現在ブロックのアフィン動き補償のためのCPMVセットは多様な方法により獲得できる。より具体的に、現在ブロックの予測のためのCPMVセットは1つ以上の周辺ブロックの動きベクトル情報セットを参照して獲得できる。また、動きベクトル情報セットは1つ以上のブロックの動きベクトル情報の集合を示す。周辺ブロックは、現在ブロックの既設定された周辺位置を含むブロックを示すことができる。この際、周辺ブロックは既設定された周辺位置を含むコーディングユニット、または前記周辺位置を含む既設定された単位(例、4×4、8×8)の領域でありうる。
現在ブロックのCPMVを誘導するために参照できる複数の候補が存在することができる。したがって、現在ブロックのCPMVを誘導するために参照する周辺ブロックに対する情報が別途にシグナリングできる。本発明の一実施形態によれば、現在ブロックの各サブブロックの動きベクトルを誘導するために参照する動きベクトル情報セットを指示するCPMV指示子がシグナリングできる。エンコーダはCPMV指示子をシグナリングすることができる。CPMV指示子は現在ブロックの各サブブロックの動きベクトルを誘導するために参照する周辺ブロックの動きベクトル情報セットを指示することができる。デコーダは前記指示子を獲得し、指示子が指示する周辺ブロックの動きベクトル情報セットを参照して現在ブロックのためのCPMVセットの各CPMVを獲得することができる。
より具体的な実施形態によれば、エンコーダ及びデコーダは1つ以上の動きベクトル情報セット候補で構成されたCPMV候補リストを生成することができる。CPMV候補リストを構成する各々の動きベクトル情報セット候補は、現在ブロックの動きベクトルを誘導するために使用可能な周辺ブロックの動きベクトルセットである。この際、CPMV指示子はCPMV候補リストのうち、いずれか1つの動きベクトル情報セットを指示するインデックスでありうる。現在ブロックのCPMVはCPMV候補リストのうち、CPMV指示子(即ち、インデックス)に基づいて選択された動きベクトル情報セットを参照して獲得できる。以下、現在ブロックの動きベクトル情報(または、CPMVセット)の誘導のためのCPMV候補リストに含まれることができる動きベクトル情報セット候補の多様な実施形態について叙述する。
図35は、現在ブロックのCPMVセットを獲得する一実施形態を図示する。図35の実施形態では現在ブロックのCPMVセットが2つのCPMV、即ち、v0とv1を含むことと仮定する。本発明の一実施形態によれば、現在ブロックのCPMVは該当ポイントに隣接した周辺ブロックの動きベクトルから誘導できる。図35を参照すると、v0は該当ポイントに隣接した周辺ブロックA、B、及びCのうち、いずれか1つの動きベクトルから誘導されることができ、v1は該当ポイントに隣接した周辺ブロックD及びEのうち、いずれか1つの動きベクトルから誘導できる。周辺ブロックA、B、C、D、及びEの動きベクトルを各々vA、vB、vC、vD、及びvEとする時、CPMV候補リストに含まれることができる動きベクトル情報セットは、以下の[数式5]のように誘導できる。
即ち、vA、vB、vCのうちから選択されたv0と、vD、vEのうちから選択されたv1で構成された(v0、v1)対が獲得できる。この際、v0は現在ブロックの上左側隅に隣接したブロックの動きベクトルから誘導され、v1は現在ブロックの上右側隅に隣接したブロックの動きベクトルから誘導される。追加的な実施形態によれば、現在ブロックのPOC(Picture Order Count)、周辺ブロックの参照ピクチャのPOC、及び現在ブロックの参照ピクチャのPOCに基づいて動きベクトルスケーリングが遂行できる。
このように獲得された動きベクトル情報セット候補を含むCPMV候補リストが生成されることができ、CPMV候補リストのうち、いずれか1つの動きベクトル情報セットを指示するCPMV指示子がシグナリングできる。本発明の追加的な実施形態によれば、CPMV候補リストには他の方式のインター予測のための動きベクトル情報セット候補が含まれることもできる。例えば、CPMV候補リストは既存のインター予測のためのMVP候補に基づいて獲得された動きベクトル情報セット候補を含むことができる。
デコーダは、候補リストから獲得された動きベクトル情報セットに基づいて現在ブロックのCPMVを誘導することができる。一実施形態によれば、デコーダは候補リストから獲得された動きベクトル情報セットの動きベクトルを別途の動きベクトル差分値無しで、現在ブロックのCPMVに使用するので、アフィンマージ(merge)予測を遂行することができる。このようなアフィン動き補償方法はアフィンマージ予測モードと称されることができる。
他の実施形態によれば、デコーダは現在ブロックのCPMVのための別途の動きベクトル差分値を獲得することができる。デコーダは、CPMV候補リストから獲得された動きベクトル情報セットの動きベクトルを前記動きベクトル差分値と合算して現在ブロックのCPMVを獲得することができる。このようなアフィン動き補償方法はアフィンインター予測モードと称されることができる。デコーダが現在ブロックのアフィン動き補償のために別途の動きベクトル差分値を使用するか否かを指示するフラグまたはインデックスが別途にシグナリングできる。追加的な実施形態に従って、現在ブロックのアフィン動き補償のために別途の動きベクトル差分値が使われるかは現在ブロックのサイズ(例、CUサイズ)に基づいて決定できる。例えば、現在ブロックのサイズが既設定されたサイズ以上である場合、エンコーダ及びデコーダが現在ブロックのアフィン動き補償のために別途の動きベクトル差分値を使用するように設定できる。
図36は、現在ブロックのCPMVセットを獲得する他の実施形態を図示する。本発明の他の実施形態によれば、現在ブロックのCPMVはアフィン動き補償が遂行された周辺ブロックの動きベクトル情報から誘導できる。即ち、現在ブロックのCPMVは周辺ブロックのCPMVまたは動きベクトルから誘導できる。この際、周辺ブロックは現在ブロックの左側周辺ブロックと現在ブロックの上側周辺ブロックを含むことができる。図36(a)を参照すると、左側周辺ブロックは現在ブロックの下左側隅に隣接したブロック、即ち、左側ブロックA及び下左側ブロックDを含む。また、上側周辺ブロックは現在ブロックの上左側隅に隣接したブロック、即ち、上左側ブロックEと、現在ブロックの上右側隅に隣接したブロック、即ち、上側ブロックB及び上右側ブロックCを含む。デコーダは、既設定された順に周辺ブロックがアフィン動き補償が遂行されたかを確認する。一実施形態に従って、既設定された順序はA、B、C、D、Eでありうる。アフィン動き補償が遂行された周辺ブロックが発見されれば、デコーダは該当周辺ブロックのCPMVセット(または、動きベクトル)を用いて現在ブロックのCPMVセットを獲得する。図36(b)の実施形態を参照すると、左側ブロックAのCPMVセットが現在ブロックのCPMVセットを誘導することに使われることができる。即ち、左側ブロックAのCPMVセット(v2、v3、v4)に基づいて現在ブロックのCPMVセット(v0、v1)が獲得できる。
本発明の実施形態によれば、現在ブロックのCPMVを誘導するために参照する周辺ブロックに対する情報が別途にシグナリングできる。この際、現在ブロックの周辺ブロックのCPMVセットの各々は既設定された順序に従って前述したCPMV候補リストを構成する動きベクトル情報セット候補になることができる。より具体的に、動きベクトル情報セット候補は現在ブロックの左側周辺ブロックのCPMV(または、動きベクトル)から誘導された第1候補と、現在ブロックの上側周辺ブロックのCPMV(または、動きベクトル)から誘導された第2候補を含むことができる。この際、左側周辺ブロックは現在ブロックの下左側隅に隣接したブロックであり、上側周辺ブロックは現在ブロックの上左側隅に隣接したブロックまたは現在ブロックの上右側隅に隣接したブロックである。このように獲得された動きベクトル情報セット候補を含むCPMV候補リストが生成されることができ、CPMV候補リストのうち、いずれか1つの動きベクトル情報セットを指示するCPMV指示子がシグナリングできる。一実施形態によれば、CPMV指示子は現在ブロックの各サブブロックの動きベクトルを誘導するために参照される周辺ブロックの位置情報を示すことができる。デコーダは、CPMV指示子が指示する周辺ブロックのCPMVセット(または、動きベクトル)を参照して現在ブロックのCPMVセットを獲得することができる。
本発明の追加的な実施形態によれば、現在ブロックのCPMVは該当ポイントから近い周辺ブロックのCPMVに基づいて誘導できる。例えば、v0は左側周辺ブロックのCPMVを参照して獲得され、v1は上側周辺ブロックのCPMVを参照して獲得できる。または、v0は周辺ブロックA、D、またはEのCPMVを参照して獲得され、v1は周辺ブロックBまたはCのCPMVを参照して獲得できる。
現在ブロックのCPMVセットを獲得する他の実施形態を図示する。一実施形態に従って、現在ブロックのCPMVはアフィン動き補償が遂行されたブロックのCPMVまたは動きベクトルから誘導できる。例えば、現在ブロックを基準に既設定された位置に対応するブロックがアフィン動き補償された場合、該当ブロックのCPMVセットまたは少なくとも1つの動きベクトルから現在ブロックのCPMVが誘導できる。図37を参照すると、既設定された位置は現在ブロックの下左側隅に隣接したA0及びA1、上右側隅に隣接したB0及びB1、上左側B2位置でありうる。本実施形態で、既設定された位置は現在ブロックに隣接しない位置を含むことができる。例えば、既設定された位置は現在ピクチャでない他のピクチャ内で現在ブロックの位置に対応する位置を含むことができる。即ち、現在ブロックのCPMVセットは既設定された位置に対応する空間的候補または時間的候補から誘導できる。図37を通じて説明した方法により獲得された動き情報セット候補は、内在的候補(inherited candidate)またはアフィンマージ候補と称されることができる。
図36及び図37を通じて説明したように、アフィン動き補償が遂行された周辺ブロックの動きベクトル情報から現在ブロックのCPMVが誘導できる。具体的な実施形態に従って、現在ブロックに対する4−パラメータアフィン動き補償のためのCPMVセット((v_0x、v_0y)、(v_1x、v_1y))は[数式6]のように誘導できる。
ここで、(v_E0x、v_E0y)は現在ブロックの上左側ブロックのアフィン動き補償に使われた動きベクトルを示し、(v_E1x、v_E1y)は現在ブロックの上右側ブロックのアフィン動き補償に使われた動きベクトルを示し、(v_E2x、v_E2y)は現在ブロックの下左側ブロックのアフィン動き補償に使われた動きベクトルを示すことができる。
図38は、本発明の他の一実施形態に従って現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す図である。一実施形態に従って、現在ブロックのCPMVは現在ブロック周辺の1つ以上の動きベクトルを参照して獲得できる。この際、現在ブロック周辺の1つ以上の動きベクトルはアフィン動き補償に使われた動きベクトルでない動きベクトルを含むことができる。例えば、現在ブロックのCPMVは該当ポイントを基準に既設定された位置の動きベクトルから誘導できる。例えば、既設定された位置は誘導しようとするCPMVに対応するポイントから一定の距離以内のブロックに含まれる位置でありうる。
図38を参照すると、現在ブロックのアフィン動き補償のための第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)は、前述した既設定された位置の動きベクトルから誘導できる。例えば、第1のCPMV(mv0)は上左側隅の周辺の位置A、B、Cの各々の動きベクトル情報から誘導できる。第2のCPMV(mv1)は上右側隅周辺の位置D、Eの各々の動きベクトル情報から誘導できる。第3のCPMV(mv2)は下左側隅の周辺の位置F、Gの各々の動きベクトル情報から誘導できる。
一実施形態に従って、デコーダは既設定された順にCPMV周辺位置の動きベクトルに対する使用可能性を確認することができる。使用可能な動きベクトルが発見されれば、デコーダは該当動きベクトルを用いて前記CPMVを獲得することができる。また、現在ブロックのポイント別にCPMVを誘導するために参照される周辺位置に対する既設定された組合せが使われることもできる。図38を通じて説明した方法により獲得された動き情報セット候補はコンストラクテッド候補(constructed candidate)またはアフィンインター候補(inter candidate)と称されることができる。図35乃至図38で説明された動きベクトル情報セットは既設定された順序に従ってCPMV候補リストを構成する動きベクトル情報セット候補になることができる。
図39は、本発明の他の一実施形態に従って現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す図である。前述したように、現在ブロックのアフィン動き補償のために複数のCPMVが使われることができる。本発明の一実施形態に従って、現在ブロックの動き補償のためのCPMVセットが含む複数のCPMVのうちの一部は、他の一部に基づいて誘導できる。例えば、エンコーダ及びデコーダは前述した方法により現在ブロックの2つのポイントの各々に対応するCPMVを獲得することができる。次に、エンコーダ及びデコーダは既獲得したCPMVから現在ブロックの異なるポイントに対応するCPMVを誘導することができる。
図39を参照すると、第1のCPMV(mv0 x、mv0 y)、第2のCPMV(mv1 x、mv1 y)から第3のCPMV(mv2 x、mv2 y)が誘導されるか、または第1のCPMV(mv0 x、mv0 y)、第3のCPMV(mv2 x、mv2 y)から第2のCPMV(mv1 x、mv1 y)が誘導できる。図39の数式で、w及びhは各々現在ブロックの幅及び高さでありうる。
図40は、本発明の一実施形態に従って現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す。前述したように、現在ブロックのCPMVセットは複数のCPMVで構成できる。また、複数のCPMV別にCPMV予測子と動きベクトル差分値に基づいて獲得できる。CPMVの動きベクトル差分値はエンコーダからデコーダにシグナリングできる。即ち、現在ブロックのアフィン動き補償のためのCPMV別にCPMVを誘導するために用いられる動きベクトル差分値がシグナリングできる。以下、CPMVの動きベクトル差分値はCPMV差分値と称されることができる。図40で、上段バー(bar)表示されたmv0、mv1、及びmv2は、各々第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)の各々のCPMV予測子を示すことができる。
図40(a)は、4−パラメータアフィン動き補償が遂行される場合、現在ブロックの第1のCPMV(mv0)及び第2のCPMV(mv1)が獲得される方法を示す。第1のCPMV(mv0)及び第2のCPMV(mv1)の各々に対する第1のCPMV差分値(mvd0)及び第2のCPMV差分値(mvd1)が各々シグナリングできる。
図40(b)は、6−パラメータアフィン動き補償が遂行される場合、現在ブロックの第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)が獲得される方法を示す。第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)の各々に対する第1のCPMV差分値(mvd0)、第2のCPMV差分値(mvd1)、及び第3のCPMV差分値(mvd2)が各々シグナリングできる。
図41は、本発明の一実施形態に従って現在ブロックのコントロールポイント動きベクトル差分値がシグナリングされる方法を示す。現在ブロックのCPMV差分値は図9を通じて前述したシンタックスによってシグナリングできる。また、デコーダはシグナリングされた動きベクトル差分値に対する少なくとも1つの情報に基づいて現在ブロックのCPMV差分値(IMVD)を獲得することができる。図41で、compldxは動きベクトル差分値の成分を示すインデックスで、0または1でありうる。例えば、compldxは動きベクトル差分値のx軸成分またはy軸成分のうち、いずれか1つを指示することができる。また、現在ブロックのCPMV差分値は参照ピクチャリスト別に異なることがある。図41で、L0は第1参照ピクチャリストを示し、L1は第2参照ピクチャリストを示す。
一方、現在ブロックの特定ポイントに対応するCPMV差分値は現在ブロックの異なるポイントに対応するCPMV差分値と類似することができる。これによって、現在ブロックの特定ポイントに対応するCPMV差分値は現在ブロックの異なるポイントに対応するCPMV差分値に基づいて獲得できる。これを通じて、エンコーダ及びデコーダはCPMV差分値に対するシグナリングオーバーヘッドを減少させることができる。
図42は、本発明の他の一実施形態に従って現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す。図42を参照すると、現在ブロックのアフィン動き補償のためのCPMVセットは、少なくとも1つの共通したCPMV差分値に基づいて誘導できる。例えば、現在ブロックの特定ポイントに対応するCPMVは現在ブロックの異なるポイントに対応するCPMV差分値に基づいて獲得できる。
エンコーダは、現在ブロックのアフィン動き補償のための1つの共通CPMV差分値及び少なくとも1つの追加差分値をシグナリングすることができる。また、デコーダは、1つの共通CPMV差分値及び少なくとも1つの追加差分値を用いてブロックのアフィン動き補償のためのCPMVセットを獲得することができる。図42で、上段バー(bar)表示されたmv0、mv1、及びmv2は、各々第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)の各々のCPMV予測子を示すことができる。
図42(a)は、4−パラメータアフィン動き補償が遂行される場合、現在ブロックの第1のCPMV(mv0)及び第2のCPMV(mv1)が獲得される方法を示す。第1のCPMV(mv0)に対する第1のCPMV差分値(mvd0)がシグナリングできる。また、第2のCPMV差分値を獲得するために使われる第1追加差分値(mvd1′)がシグナリングできる。具体的に、第2のCPMV差分値は第1のCPMV差分値(mvd0)に第1追加差分値(mvd1′)を足した値で表現できる。即ち、第2のCPMV(mv1)は第2のCPMV予測子、第1のCPMV差分値(mvd0)、及び第1追加差分値(mvd1′)に基づいて獲得できる。第1のCPMV差分値と第2のCPMV差分値が類似する場合、第2のCPMV差分値に比べて第1追加差分値(mvd1′)が少ないことがある。これによって、エンコーダ及びデコーダは図40を通じて説明された方法に比べて、CPMV差分値に対するシグナリングオーバーヘッドを減少させることができる。
図42(b)は、6−パラメータアフィン動き補償が遂行される場合、現在ブロックの第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)が獲得される方法を示す。第1のCPMV(mv0)に対する第1のCPMV差分値(mvd0)がシグナリングできる。また、第2のCPMV差分値及び第3のCPMV差分値の各々を獲得するために使われる第1追加差分値(mvd1′)及び第2追加差分値(mvd2′)がシグナリングできる。具体的に、第2のCPMV差分値は第1のCPMV差分値(mvd0)に第1追加差分値(mvd1′)を足した値で表現できる。また、第3のCPMV差分値は第1のCPMV差分値(mvd0)に第2追加差分値(mvd2′)を足した値で表現できる。
図43は、図42を通じて説明された実施形態に従って現在ブロックのコントロールポイント動きベクトルが獲得される場合、コントロールポイント動きベクトル差分値がシグナリングされる方法を示す。前述したように、現在ブロックのアフィン動き補償のためのCPMVセットは、複数のCPMVを含むことができる。この際、複数のCPMVのうち、一部のCPMV差分値(mvdLK)は他のCPMVの差分値及び追加差分値に基づいて獲得できる。図43で、lmvdは既設定されたCPMVの差分値または少なくとも1つの追加差分値のうち、いずれか1つでありうる。
図43で、cpIdxは現在ブロックのコントロールポイントインデックスを示すことができる。例えば、現在ブロックに対して4−パラメータアフィン動き補償が遂行される場合、cpIdxは0または1でありうる。現在ブロックに対して6−パラメータアフィン動き補償が遂行される場合、cpIdxは0、1、または2でありうる。一実施形態に従って、CPMV差分値(MvdLx)はcpIdxによって異なる方式により決定できる。例えば、cpIdxが既設定された値(例、‘0’)である場合、MvdLxは既設定されたCPMVの差分値(lMvd[0][compIdx])でありうる。cpIdxが既設定された値(例、‘0’)でない場合、MvdLxは既設定されたCPMVの差分値(lMvd[0][compIdx])に該当インデックスに対応する追加差分値を足した値でありうる。ここで、MvdLxはCPMVとCPMV予測子との間の差を示すことができる。即ち、MvdLxは(CPMV−CPMV予測子)でありうる。
また、compIdxは動きベクトル差分値の成分を示すインデックスで、0または1でありうる。例えば、compIdxは動きベクトル差分値のx軸成分またはy軸成分のうち、いずれか1つを指示することができる。また、現在ブロックのCPMV差分値は参照ピクチャリスト別に異なることがある。図41で、L0は第1参照ピクチャリストを示し、L1は第2参照ピクチャリストを示す。
図44は、本発明の一実施形態に従う現在ブロックのコントロールポイント動きベクトル差分値がシグナリングされる方法を示す図である。図44を参照すると、図9を通じて前述した動きベクトル差分値のシグナリング方法と類似の方法によりCPMV差分値がエンコーディングできる。例えば、エンコーダは前述したコントロールポイントインデックス(cpIdx)によって別途にCPMV差分値をエンコーディングしてCPMV差分値に対する少なくとも1つの情報を生成することができる。また、エンコーダはエンコーディングされたCPMV差分値に対する少なくとも1つの情報をシグナリングすることができる。デコーダはCPMV差分値に対する少なくとも1つの情報に基づいて、コントロールポイントインデックス(cpIdx)別にCPMV差分値を獲得することができる。
前述した動きベクトル差分値の解像度と関連した実施形態は、図9、図43、及び図44の実施形態を通じて説明されたCPMV差分値に対しても同一または相応する方法により適用できる。例えば、現在ブロックのCPMV差分値の解像度がRの場合、シグナリングされたCPMV差分値はRに基づいて修正できる。この際、デコーダはシグナリングされたCPMV差分値に解像度(R)を掛けて修正されたCPMV差分値を獲得することができる。
図45は、本発明の一実施形態に従って現在ブロックのコントロールポイント動きベクトル差分値に対する差分予測子を用いて動きベクトルが獲得される方法を示す図である。図45を参照すると、現在ブロックのCPMVとCPMV予測子との間の差を示すCPMV差分値は差分予測子(mvdp)に基づいて決定できる。ここで、差分予測子(mvdp)はCPMVとCPMV予測子との間の差に対する予測値を示すことができる。具体的に、CPMV差分値は差分予測子(mvdp)及び追加差分値(mvd0″、mvd1″、mvd2″)に基づいて獲得できる。
例えば、差分予測子(mvdp)及び追加差分値(mvd0″、mvd1″、mvd2″)はエンコーダからデコーダにシグナリングできる。mvdp、mvd0″、mvd1″、及びmvd2″(6−パラメータアフィン動き補償が遂行される場合)の各々は図9または図44を通じて前述した方法によりエンコーディングまたはデコーディングできる。図45で、上段バー(bar)表示されたmv0、mv1、及びmv2は、各々第1のCPMV(mv0)、第2のCPMV(mv1)、及び第3のCPMV(mv2)の各々のCPMV予測子を示すことができる。エンコーダ及びデコーダは差分予測子(mvdp)を用いてCPMV差分値のためのシグナリングオーバーヘッドを減少させることができる。
一方、本発明の一実施形態に従って、差分予測子は現在ブロックのCPMVセットが含む複数のCPMVのうち、少なくとも1つに基づいて獲得できる。例えば、差分予測子は現在ブロックのCPMVセットが含む複数のCPMVのうち、いずれか1つのCPMV差分値でありうる。以下では、現在ブロックのCPMVセットを誘導するために使われる差分予測子が獲得される方法について叙述する。
図46は、本発明の一実施形態に従って差分予測子を用いて現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す図である。本発明の一実施形態に従って、エンコーダ及びデコーダは現在ブロックのmvd0、mvd1、及びmvd2(以下、mvdx)のうち、少なくとも1つを用いて現在ブロックの差分予測子(mvdp)を獲得することができる。一実施形態に従って、差分予測子(mvdp)はmvdxのうち、絶対値の最も小さいmvdxの絶対値より小さい値に設定できる。または、差分予測子(mvdp)はmvdxのうち、絶対値が最も大きいmvdxの絶対値より大きい値に設定できる。この場合、現在ブロックのCPMVセットが含む複数のCPMVの各々を誘導するために使われる追加差分値(図45のmvd0″、mvd1″、mvd2″)の符号が一致できる。本実施形態で、追加差分値はmvdxと差分予測子(mvdp)との間の差を示すことができる。
例えば、差分予測子(mvdp)はmvdxのうち、絶対値の最も小さいmvdxの絶対値より小さい値に設定された場合、追加差分値(図45のmvd0″、mvd1″、mvd2″)の符号は正の符号(+)に一致できる。また、差分予測子(mvdp)は、mvdxのうち、絶対値の最も大きいmvdxの絶対値より大きい値に設定された場合、追加差分値(図45のmvd0″、mvd1″、mvd2″)の符号は負の符号(−)に一致できる。
図46を参照すると、差分予測子(mvdp)は、mvdxのうち、絶対値の最も小さいmvdxの絶対値より小さい値に設定できる。図46で、水平破砕線はmvdxの各々のx軸成分の絶対値のうちの最も小さい値を示し、垂直破砕線はmvdxの各々のy軸成分の絶対値のうちの最も小さい値を示す。x軸座標は右側であるほど値が大きくなり、y軸座標は上側であるほど値が大きくなることができる。この際、差分予測子(mvdp)は破砕線により区画された四分面のうち、第3四分面(mvdp area)内の値でありうる。
この場合、現在ブロックの追加差分値の符号は全て正の符号(+)になることができる。これによって、追加差分値に対する符号を示す情報が別途にシグナリングされないことがある。具体的に、現在ブロックの差分予測子(mvdp)及び追加差分値(mvdx″)の各々は[数式7]のように誘導できる。
[数式7]を参照すると、差分予測子(mvdp)の符号を示す情報(mvd_sign_flag)がシグナリングできる。エンコーダは差分予測子の符号情報をシグナリングすることができる。また、デコーダは差分予測子の符号情報(mvd_sign_flag)に基づいて現在ブロックのCPMVセットを獲得することができる。一方、追加差分値(mvdx″)の各々の符号を示す情報はシグナリングされないことがある。追加的な実施形態に従って、差分予測子(mvdp)を決定する方法を示すmvdp指示子がシグナリングされることもできる。例えば、mvdp指示子は差分予測子(mvdp)をmvdxのうち、最小値より小さい値に決定するのか、または最大値より大きい値に決定するのかを示すフラグでありうる。
図47は、本発明の他の一実施形態に従って差分予測子を用いて現在ブロックのコントロールポイント動きベクトルが獲得される方法を示す図である。本発明の一実施形態に従って、現在ブロックの差分予測子は現在ブロックのCPMVセットが含む複数のCPMVのうち、いずれか1つのCPMV差分値でありうる。図46を参照すると、Method 0、Method 1、Method 2によって差分予測子が変わることができる。例えば、Method 0で差分予測子はmvd0でありうる。また、Method 1で差分予測子はmvd1でありうる。Method 2で差分予測子はmvd2でありうる。
一実施形態に従って、複数の方法のうち、どの方法により差分予測子が決定されるかを示すmvdp指示子(cpIdxPred)がシグナリングできる。ここで、複数の方法は図47のMethod 0、Method 1、Method 2、及び図46を通じて説明した方法のうち、少なくとも1つを含むことができる。図47の実施形態で、エンコーダはMethod 0、Method 1、Method 2のうち、いずれか1つを指示するmvdp指示子(cpIdxPred)をシグナリングすることができる。また、デコーダはmvdp指示子(cpIdxPred)に基づいてMethod 0、Method 1、Method 2のうち、いずれか1つを決定することができる。また、デコーダは決定された方法によって現在ブロックの差分予測子を獲得することができる。また、デコーダは獲得された差分予測子に基づいて現在ブロックのCPMVセットを獲得することができる。
他の実施例に従って、mvdp指示子(cpIdxPred)は暗黙的にシグナリングされることもできる。即ち、エンコーダ及びデコーダはmvdp指示子(cpIdxPred)に対するシグナリング無しで現在ブロックの差分予測子を決定することもできる。これに対しては、図49乃至図50を通じて具体的に説明する。
図48は、本発明の一実施形態に従って差分予測子が獲得される方法を示す図である。本発明の一実施形態に従って、コントロールポイントインデックス(cpIdx)がmvdp指示子(cpIdxPred)と同一の場合、差分予測子が該当CPMVの差分値に使われることができる。コントロールポイントインデックス(cpIdx)がmvdp指示子(cpIdxPred)と同一でない場合、cpIdxに対応する追加差分値及び差分予測子に基づいて該当CPMVの差分値が獲得できる。動きベクトル差分値に対するコーディング効率の高い方法を指示するmvdp指示子(cpIdxPred)がシグナリングできる。図48で、lmvdは差分予測子または追加差分値のうち、いずれか1つを示すことができる。また、MvdLKはCPMV差分値を示すことができる。
図48で、LXは参照ピクチャリストL0またはL1を示すことができる。また、mvdp指示子は可変長さのビットで表現できる。例えば、mvdp指示子は切削単項(truncated unary)方法によりシグナリングできる。また、図46乃至図48で前述した実施形態は動きベクトル差分値の成分別に遂行できる。前述した動きベクトル差分値の解像度と関連した実施形態は図46乃至48の実施形態を通じて説明されたCPMV差分値に対しても同一または相応する方法により適用できる。例えば、現在ブロックのCPMV差分値の解像度がRの場合、シグナリングされたCPMV差分値はRに基づいて修正できる。この際、デコーダはシグナリングされたCPMV差分値に解像度(R)を掛けて修正されたCPMV差分値を獲得することができる。
本発明の一実施形態をよれば、mvdp指示子(cpIdxPred)でないコントロールポイントインデックスに対するIMvdのシグナリングを減らす方式によりmvdp指示子をシグナリングまたは決定することが可能である。例えば、mvdp指示子でないコントロールポイントインデックスに対するIMvdの符号が一致するようにmvdp指示子をシグナリングすることができる。または、明示的なシグナリング無しで差分予測子が決定されることもできる。これに対しては図49乃至図51を通じて後述する。
前述したように、現在ブロックの差分予測子が現在ブロックのCPMV差分値の絶対値のうち、最小値または最大値に決定される場合、コントロールポイントインデックスに対するlmvdの間の符号が一致できる。この際、コントロールポイントインデックスがmvdp指示子と異なる場合、符号情報をシグナリングしないことがある。ここで、CPMV差分値の絶対値が最小または最大ということは、特定成分の絶対値が最小または最大であることを意味することができる。例えば、mvdp指示子が3個の値のうち、いずれか1つを示す場合、切削単項方法によりmvdp指示子のうち、1つは1ビット、2つは2ビットを使用してシグナリングできる。
本発明の他の一実施形態に従って、mvdp指示子はCPMV差分値の絶対値のうち、中央または中間値に該当するCPMV差分値でありうる。この場合、lmvdの符号は、1つは(+)であり、1つは(−)でありうる。これによって、1ビットを使用して2つのCPMV差分値の各々の符号情報をシグナリングすることができる。これを通じて、エンコーダ及びデコーダはCPMV差分値の符号情報のためのシグナリングオーバーヘッドを減少させることができる。
本発明の更に他の一実施形態に従って、現在ブロックの差分予測子を決定する方法を指示するmvdp指示子(cpIdxPred)は暗黙的にシグナリングできる。例えば、現在ブロックの差分予測子を決定する方法は他の情報に基づいて決定できる。より具体的に、エンコーダ及びデコーダは現在ブロックのCPMV差分値のうち、絶対値の最も大きいCPMVの差分値を差分予測子に決定することができる。動きベクトル差分値がシグナリングされる場合、複数のCPMVを誘導する使われる差分予測子の絶対値が大きいほど有利でありうるためである。
図49は、本発明の一実施形態に従って現在ブロックの差分ベクトル予測子が決定される方法を示す図である。図49を参照すると、3個のCPMVが現在ブロックのアフィン動き補償のために使われることができる。以下では、説明の便宜のためにx軸成分を例に挙げて説明するが、本開示がこれに制限されるのではない。後述する実施形態はy軸成分に対しても同一または相応する方法により適用できる。一実施形態に従って、現在ブロックのCPMVの各々のCPMV差分値であるmvd0、mvd1、及びmvd2のうち、x軸成分の絶対値が最小であるCPMVを指示するコントロールポイントインデックスは‘1’でありうる。
図49で、破砕線は参照予測子のx軸成分の値を示す。図49のように、CPMV差分値の絶対値が最小であるCPMV差分値が差分予測子に使われる場合、差分予測子に選択されない残りのCPMV差分値の各々の符号は正の符号(+)に一致できる。これによって、エンコーダはmvdp指示子に対するシグナリングを省略することができる。また、デコーダはmvdp指示子無しで現在ブロックのCPMVセットを誘導することができる。
図50は、現在ブロックのコントロールポイント動きベクトル差分値がシグナリングされる方法を示す図である。図48乃至図49を通じて前述したように、符号ビットハイディング方法を使用する場合、コントロールポイントインデックスとmvdp指示子が相異する場合の符号情報に対するシグナリングが省略できる。図50を参照すると、動きベクトル差分値の符号情報(mvd_sign_flag)はコントロールポイントインデックスとmvdp指示子が同一の場合、パーシングできる。反対に、コントロールポイントインデックスとmvdp指示子が相異する場合、遂行されないことがある。図50で、[0]と[1]で、0、1は成分インデックスを示し、各々x軸成分及びy軸成分を示すことができる。
本発明の一実施形態に従って、動きベクトル差分値に対する情報は既設定された順序に従って順次にパーシングできる。この際、既設定された順序はコントロールポイントインデックスに基づいて設定された順序でありうる。一実施形態に従って、既設定された順序はmvdp指示子に基づいて決定された順序でありうる。
本発明の一実施形態によれば、動きベクトル差分値をコーディングする関数が存在できる。また、動きベクトル差分値をコーディングする関数の例は、図50のmvd_codingシンタックスでありうる。一実施形態に従って、デコーダはコントロールポイントインデックスによって、動きベクトル差分値に対する情報をパーシングすることができる。例えば、図50のmvd_codingシンタックスはコントロールポイントインデックス別に遂行されることもできる。この際、既設定された順序は以下の[数式8]のように遂行できる。[数式8]によれば、常に同一の順にパーシングが遂行できる。
他の一実施形態に従って、mvdp指示子に対応するCPMV差分値に対する情報は、mvdp指示子に対応しない他のCPMVの差分値に対する情報より先にパーシングできる。この場合、特定コントロールポイントインデックスに対応する追加差分値をデコーディングした後、直ちに該当コントロールポイントインデックスに対応するCPMV差分値を算出することができる。本実施形態とは異なり、mvdp指示子に対応するCPMV差分値に対する情報がmvdp指示子に対応しない他のCPMVの差分値に対する情報より先にパーシングされないことがある。この場合、特定コントロールポイントインデックスに対応する追加差分値をデコーディングした後にも該当コントロールポイントインデックスに対応するCPMV差分値を算出するまで待機時間がかかることがある。具体的な例に、mvdp指示子が‘1’の場合、mvd_codingシンタックスは以下の[数式9]の通りである。
他の具体的な例として、mvdp指示子が‘2’の場合、mvd_codingシンタックスは以下の[数式10]の通りである。
図51は、本発明の他の一実施形態に従って、現在ブロックのコントロールポイント動きベクトルが誘導される方法を示す図である。図51で、lmvdは差分予測子または追加差分値を示すことができる。図51を参照すると、特定コントロールポイントインデックスがmvdp指示子と同一の場合、符号情報に基づいて差分予測子が算出できる。これとは異なり、特定コントロールポイントインデックスがmvdp指示子と相異する場合、追加差分値を算出するに当たって符号情報を使用しないことがある。
一方、本発明の一実施形態に従って、前述した動きベクトル差分値の解像度は現在ブロックの動き補償のための複数のCPMV別に各々異なる値が使われることができる。例えば、コントロールポイントインデックス別にCPMV差分値がシグナリングされる解像度が異なることがある。一実施形態に従って、図42、図45、及び図47のように差分予測子が用いられる場合、動きベクトル差分値の解像度は現在ブロックの複数のCPMV別に各々異なる値が使われることができる。
一実施形態に従って、特定コントロールポイントインデックスのCPMV差分値が現在ブロックの差分予測子に使われることができる。この場合、該当コントロールポイントインデックスに対応するCPMV差分値のための解像度がシグナリングできる。また、該当コントロールポイントインデックスに対応するCPMV差分値は、該当解像度に基づいてシグナリングできる。一方、該当コントロールポイントインデックスを除外した残りのコントロールポイントインデックスに対応するCPMV差分値は既設定された解像度に基づいてシグナリングできる。この際、該当コントロールポイントインデックスを除外した残りのコントロールポイントインデックスに対応するCPMV差分値がシグナリングされる単位を示す解像度はシグナリングされないことがある。また、既設定された解像度はデフォルト値でありうる。
他の一実施形態に従って、現在ブロックの差分予測子に使われるCPMV差分値は相対的に小さい単位の解像度に基づいてシグナリングできる。また、現在ブロックの差分予測子に使われるCPMV差分値の以外の他のコントロールポイントのCPMV差分値は相対的に大きい単位の解像度に基づいてシグナリングされることもできる。
一方、本発明の一実施形態に従って、現在ブロックのアフィン動き補償のための複数のCPMVは単一のCPMV予測子から獲得されることもできる。この場合、複数のCPMVは単一のCPMV及び複数のCPMV差分値を用いて誘導できる。これを通じて、エンコーダ及びデコーダはCPMV差分値のコーディング効率を増加させることができる。また、エンコーダ及びデコーダはCPMV差分値のシグナリングオーバーヘッドを減少させることができる。
図52は、本発明の一実施形態に従って現在ブロックのアフィン動き補償のための複数のコントロールポイント動きベクトルが誘導される方法を示す図である。図52を参照すると、第1のCPMV差分値(mvd0)及び第2のCPMV差分値(mvd1)を共通差分予測子(mvdp)及び単一の差分絶対値(mvdd)に基づいて獲得することができる。例えば、第1のCPMV差分値(Mvd0)はmvdpとmvddの合算に基づいて獲得できる。また、第1のCPMV差分値(mvd1)はmvdpと−mvddの合算に基づいて獲得できる。
例えば、エンコーダは共通差分予測子(mvdp)及び差分絶対値(mvdd)をシグナリングすることができる。デコーダは共通差分予測子(mvdp)及び差分絶対値(mvdd)に基づいて現在ブロックの複数のコントロールポイントの各々に対応するCPMV差分値を獲得することができる。図52は、4−パラメータアフィン動き補償に対して示したが、本開示がこれに制限されるのではない。例えば、6−パラメータアフィン動き補償が遂行される場合、現在ブロックのCPMVセットが含むCPMVのうちの一部は、他のCPMVのCPMV予測子とCPMV差分値を用いて誘導できる。
本発明の一実施形態に従って、現在ブロックは現在ブロックの予測モードによって追加的に分割できる。例えば、現在ブロックの予測モードがイントラ予測モードである場合、エンコーダ及びデコーダは現在ブロックを複数のサブブロックに分割して各々のサブブロックに対してイントラ予測を遂行することができる。デコーダは、ビットストリームから前述したイントラ予測モード情報を受信することができる。デコーダは、イントラ予測モード情報に基づいて現在ブロックを複数のサブブロックに分割するかを決定することができる。この際、現在ブロックが複数のサブブロックに分割される方法に対する情報が追加的にシグナリングできる。または、エンコーダ及びデコーダはイントラ予測モード情報によってエンコーダ及びデコーダの間に既設定された方法を用いて現在ブロックを分割することもできる。次に、デコーダは現在ブロックのイントラ予測モード情報に基づいて現在ブロックまたは複数のサブブロックの各々に対するイントラ予測を遂行することができる。以下、図53乃至図60の実施形態で現在ブロックはコーディングユニットを示す用語に使われることができる。また、図53乃至図60のSCU(Sub-CU)は、現在ブロックから分割された複数のサブブロックを示す。以下では、現在ブロックが複数のサブブロックに分割される方法について具体的に説明する。
図53は、現在ブロックが複数のサブブロックに分割される形態の多様な実施形態を図示したものである。図53(a)と図53(b)は、現在ブロックから正方形に分割されたサブブロックを図示したものである。例えば、現在ブロックは既設定されたサイズのサブブロックに分割できる。この際、既設定されたサイズはエンコーダとデコーダとの間に事前協議されたサイズでありうる。一実施形態に従って、既設定されたサイズは高さと幅が互いに同一のN×Nサイズでありうる。例えば、既設定されたサイズは4×4でありうる。一実施形態に従って、既設定されたサイズは変換カーネル(transform kernel)のサイズに基づいて設定された値でありうる。既設定されたサイズは変換ユニットに基づいて設定された値でありうる。既設定されたサイズは変換ユニットのサイズでありうる。
一実施形態に従って、現在ブロックは現在ブロックのサイズによって決定されたサイズのサブブロックに分割されることもできる。例えば、現在ブロックのサイズが第1しきい値より大きい場合、現在ブロックは第1しきい値よりサイズの小さいブロックに比べて大きいサイズのサブブロックに分割できる。また、現在ブロックのサイズによってサブブロックに分割される動作が制限されることもできる。例えば、現在ブロックのサイズが第2しきい値より小さい場合、エンコーダ及びデコーダは現在ブロックを複数のブロックに分割しないことがある。現在ブロックのサイズが相対的に小さい場合、現在ブロックのサイズが相対的に大きい場合に比べて現在ブロックを分割してイントラ予測を遂行する方法に従う性能利得が大きくないことがあるためである。
一実施形態に従って、サブブロックが分割される形態は現在ブロックの形態と独立的に決定できる。例えば、現在ブロックが正方形である場合にも、現在ブロックから分割された複数のサブブロックの形態は非正方形でありうる。図53(c)及び53(d)は、現在ブロックから非正方形に分割されたサブブロックを図示したものである。一実施形態に従って、現在ブロックは既設定されたサイズの非正方形のサブブロックに分割できる。この際、前述した既設定されたサイズの高さと幅が互いに異なることがある。例えば、既設定されたサイズは4×8または8×4でありうる。前述したように、既設定されたサイズは現在ブロックのサイズによって設定された値でありうる。一実施形態に従って、エンコーダ及びデコーダが4×8または8×4サイズの非正方形変換カーネルを支援することができる。また、現在ブロックが非正方形のサブブロックに分割される必要がある場合、既設定されたサイズは非正方形変換ユニットに基づいて設定された値でありうる。
他の一実施形態に従って、現在ブロックは現在ブロックの形態と類似の形態の複数のサブブロックに分割できる。図53(e)及び53(f)は現在ブロックが非正方形ブロックである場合、現在ブロックから分割されたサブブロックを図示したものである。例えば、現在ブロックが非正方形である場合、現在ブロックは現在ブロックの形態と類似の非正方形のサブブロックに分割できる。図53(e)のように、現在ブロックの高さが幅より長い場合、現在ブロックは高さが幅より長い形態の複数のサブブロックに分割できる。図53(f)のように、現在ブロックの幅が高さより長い場合、現在ブロックは幅が高さより長い形態の複数のサブブロックに分割できる。
本発明の一実施形態に従って、現在ブロックが分割される形態は現在ブロックの予測モードに基づいて決定できる。例えば、現在ブロックが分割されるサイズまたは方向のうち、少なくとも1つは現在ブロックのイントラ予測モード(角度モード、DCモード、または平面モード)によって変わることができる。図54は、現在ブロックのイントラ予測モードによって現在ブロックが分割される方法を図示したものである。図54(a)を参照すると、複数のイントラ予測モードは平面モードまたはDCモードのような無方向性モードとイントラ予測モードインデックス2乃至66の各々に対応する角度モードに分類できる。
一実施形態に従って、現在ブロックがイントラ予測される場合、現在ブロックから分割されたサブブロックのうち、現在ブロックの参照サンプルと遠い位置のサブブロックのレジデュアル信号が相対的に大きいことがある。これによって、現在ブロックの参照サンプルから距離が類似のサンプル同士が同一のサブブロックに属するように分割できる。
一実施形態に従って、現在ブロックのイントラ予測モードが無方向性モードである場合、現在ブロックは図54(b)のように正方形の複数のサブブロックに分割できる。また、現在ブロックのイントラ予測モードが前述した水平対角モード、対角モード、及び垂直対角モードのうち、いずれか1つである場合、現在ブロックは正方形の複数のサブブロックに分割できる。また、現在ブロックのイントラ予測モードが水平対角モード、対角モード、及び垂直対角モードのうち、いずれか1つの周辺の角度モードである場合、現在ブロックは正方形の複数のサブブロックに分割できる。
一方、現在ブロックのイントラ予測モードが水平モードまたは垂直モードである場合、現在ブロックは現在ブロックのイントラ予測モードによって図54(c)または54(d)のように非正方形の複数のサブブロックに分割できる。また、現在ブロックのイントラ予測モードが水平モード及び垂直モードのうち、いずれか1つの周辺の角度モードである場合、現在ブロックは非正方形の複数のサブブロックに分割できる。これを通じて、現在ブロックは現在ブロックの参照サンプルから距離が類似のサンプル同士が同一のサブブロックに属するように分割できる。
例えば、現在ブロックの予測モードが水平モードまたは水平モード周辺の角度モードのうちのいずれか1つである場合、現在ブロックは図54(c)のように分割できる。現在ブロックの予測モードが垂直モードまたは垂直モード周辺の角度モードのうちのいずれか1つである場合、現在ブロックは図54(d)のように分割できる。現在ブロックの参照サンプルから遠い位置のサブブロックに対して異なる予測方法を適用することもできる。
図55は、本発明の一実施形態に従って現在ブロックの参照サンプルのサンプル値に基づいて現在ブロックが複数のサブブロックに分割される方法を図示したものである。本発明の一実施形態に従って、現在ブロックは現在ブロックの参照サンプルのサンプル値に基づいて分割できる。一実施形態に従って、エンコーダ及びデコーダは現在ブロックの参照サンプルのサンプル値に基づいて参照サンプルエッジ(edge)を決定することができる。例えば、参照サンプルエッジは参照サンプルのサンプル値がしきい値以上変わる領域を分割する基準地点でありうる。また、参照サンプルエッジは互いに隣接した参照サンプル間のサンプル値差がしきい値以上である地点を示すこともできる。
図55(a)を参照すると、エンコーダ及びデコーダは現在ブロックの参照サンプルのサンプル値を比較して現在ブロックの参照サンプルエッジを決定することができる。例えば、特定参照サンプルの周辺の既設定された個数の参照サンプルの平均値との差がしきい値以上である参照サンプルの位置を参照サンプルエッジに決定することができる。また、エンコーダ及びデコーダは上側参照サンプルセット及び左側参照サンプルセット別に1つ以上の参照サンプルエッジを決定することができる。ここで、現在ブロックの上側参照サンプルセットは現在ブロックの上側ラインに位置した参照サンプルを含むセットでありうる。また、現在ブロックの左側参照サンプルセットは現在ブロックの左側ラインに位置した参照サンプルを含むセットでありうる。
次に、エンコーダ及びデコーダは上側参照サンプルセットの参照サンプルエッジと左側参照サンプルセットの参照サンプルエッジを連結する線分を基準に現在ブロックを分割することができる。例えば、上側参照サンプルセット及び左側参照サンプルセット別に各々1つの参照サンプルエッジが検出される場合、現在ブロックは総2つのサブブロック(SCU1、SCU2)に分割できる。また、上側参照サンプルセット及び左側参照サンプルセット別に各々2つ以上の参照サンプルエッジが検出される場合、現在ブロックは複数のサブブロックに分割できる。
一方、前述したように、現在ブロックのイントラ予測のための参照サンプルは複数の参照ライン上のサンプルを含むことができる。図55(b)及び図55(c)を参照すると、複数の参照ライン上の参照サンプルをサンプル値に基づいて現在ブロックが分割できる。例えば、複数の参照ライン上の参照サンプルをサンプル値に基づいて現在ブロックの参照サンプルエッジが決定できる。複数の参照ライン上の参照サンプルが使われる場合、周辺ブロックで構成されたイメージ客体の形態が把握できる。
本発明の一実施形態に従って、エンコーダ及びデコーダは参照ライン別に1つ以上の参照サンプルエッジを決定することができる。図55(b)を参照すると、エンコーダ及びデコーダは上側参照ライン別参照サンプルエッジを連結する線分を延長して現在ブロックを第1分割することができる。第1分割により2つのサブブロック(SCU1、SCU2)が獲得できる。また、エンコーダ及びデコーダは左側参照ライン別参照サンプルエッジを連結する線分を延長して現在ブロックを第2分割することができる。第2分割により2つのサブブロック(SCU2、SCU3)が獲得できる。これによって、上側参照ライン別参照サンプルエッジまたは左側参照ライン別参照サンプルエッジのうち、いずれか1つが検出されない場合にも現在ブロックは分割できる。
図55(c)は、上側参照ライン別参照サンプルエッジまたは左側参照ライン別参照サンプルエッジのうち、いずれか1つが検出されないか、または参照サンプルエッジが1つの直線に配列されない場合の現在ブロックが分割される方法を示す。図55(c)の左側参照ラインのように、左側参照ラインのうち、一部参照ラインで参照サンプルエッジが検出されないことがある。少なくとも2つの参照ラインで参照サンプルエッジが検出された場合、エンコーダ及びデコーダは該当参照サンプルエッジに基づいて現在ブロックを分割することができる。また、前述した実施形態は上側参照ラインのうち、一部の参照ラインで参照サンプルエッジが検出されない場合にも適用できる。
また、図55(c)の上側参照ラインのように、上側参照ライン別参照サンプルエッジが1つの直線で配列されないことがある。この場合、現在ブロックに隣接しないライン上の参照サンプルエッジの中間値及び現在ブロックと隣接したライン上の参照サンプルエッジを過ぎる線分に基づいて現在ブロックが分割できる。図55(b)及び図55(c)では、3個の参照ラインが使われる実施形態を図示しているが、本開示がこれに制限されるのではない。
本発明の一実施形態に従って、現在ブロックから分割された複数のサブブロックは現在ブロックのイントラ予測モードによって優先的に予測される1次的サブブロック(primary sub-block、PSB)と以後に予測される2次的サブブロック(Secondary sub-block、SSB)に分類できる。また、PSBで構成されたサブブロックグループは1次的サブブロックグループ(以下、PSBグループ)と、SSBで構成されたサブブロックグループは2次的サブブロックグループ(以下、SSBグループ)と称されることができる。
図56は、本発明の一実施形態に従って1次的サブブロックグループと2次的サブブロックグループが決定される方法を図示したものである。一実施形態に従って、PSBグループは現在ブロックから分割された複数のサブブロックのうち、現在ブロックのイントラ予測に参照される参照サンプルから既設定された距離以内のサブブロックで構成できる。また、SSBグループは複数のサブブロックのうち、現在ブロックのイントラ予測に参照される参照サンプルから既設定された距離の外のサブブロックで構成できる。
図56を参照すると、現在ブロックは総16個のサブブロックに分割できる。現在ブロックのイントラ予測モードが水平対角モード、垂直対角モード、及び水平対角モードと垂直対角モードの周辺の角度モードのうち、いずれか1つである場合、現在ブロックのPSBグループとSSBグループは図56(a)のように決定できる。即ち、現在ブロックから分割された16個のサブブロックのうち、右上側4個のサブブロックがSSBであり、これを除外した残りのサブブロックはPSBでありうる。
図56(a)乃至図56(e)の各々は、現在ブロックのイントラ予測モードがHDIA、HOR、DIA、VER、VDIA、及び各々の周辺の角度モードのうち、いずれか1つである場合、PSBグループとSSBグループが決定される方法を図示する。各々の予測モードで使われる参照サンプルとの相対的な距離を考慮してPSBとSSBが区分できる。しかしながら、本開示がこれに制限されるのではなく、図56で記述した例示と類似の形態の他の分割も可能である。
一実施形態に従って、エンコーダ及びデコーダは現在ブロックのイントラ予測モードに基づいてPSBに対して先にイントラ予測を遂行することができる。次に、エンコーダ及びデコーダはSSBに対するイントラ予測を遂行することができる。以下では、現在ブロックのSSBに対する多様なイントラ予測方法について具体的に説明する。
一実施形態に従って、エンコーダ及びデコーダは現在ブロックのPSBの復元されたサンプル値に基づいて現在ブロックのSSBに対する予測を遂行することができる。例えば、エンコーダ及びデコーダは現在ブロックのイントラ予測モード及び参照サンプルに基づいて現在ブロックのPSBを先に復元することができる。次に、エンコーダ及びデコーダは現在ブロックのSSBの各々に隣接し、既復元されたサンプルを参照して現在ブロックのSSBに対するイントラ予測を遂行することができる。エンコーダ及びデコーダは、現在ブロックのイントラ予測モードに基づいて現在ブロックのSSBに対するイントラ予測を遂行することができる。この際、既復元されたサンプルはPSBの各々が含むサンプルでありうる。前記PSBの各々が含むサンプルは現在ブロックの参照サンプルに比べて現在ブロックのSSBとの距離が近いサンプルでありうる。これによって、現在ブロックのSSBに対して同一の予測モードが使われる場合にも、既存の方法に比べてSSBに対する予測正確度が高まることができる。
一実施形態に従って、エンコーダ及びデコーダは現在ブロックのPSBグループとSSBグループの各々に対して互いに異なるイントラ予測モードを用いて予測することができる。例えば、現在ブロックのPSBは現在ブロックのイントラ予測モードである1次的モード(primary mode、PM)に基づいて予測できる。現在ブロックのSSBは可変的な2次的モード(secondary mode、SM)に基づいて予測できる。例えば、SMは現在ブロックの複数のサブブロックのうち、SSBに対してのみ適用されるイントラ予測モードでありうる。この際、SMは別途にシグナリングできる。一実施形態に従って、SMはPMを基準にするオフセット形態にシグナリングできる。例えば、SMはPMを基準にオフセットだけ加えられたイントラ予測モードインデックスに対応するイントラ予測モードでありうる。この際、オフセットは既設定された最大値以内の値でありうる。これを通じて、エンコーダが特定オフセットを選択するための演算量を減少させることができる。
また、現在ブロックのPMが角度モードであり、PMの反対角度モードが存在する場合、現在ブロックのSSBはPMの反対角度モードに基づいて予測できる。例えば、PMがイントラ予測モードインデックス2の水平対角モードである場合、SMはイントラ予測モードインデックス66に該当する垂直対角モードでありうる。反対に、PMがイントラ予測モードインデックス66の垂直対角モードである場合、SMはイントラ予測モードインデックス2に該当する水平対角モードでありうる。
他の一実施形態に従って、SMは既設定された予測モードでありうる。例えば、現在ブロックのSSBは既設定された予測モードに基づいて予測されることもできる。前述したように、現在ブロックのSSBは現在ブロックの参照サンプルから既設定された距離の外のサブブロックでありうる。これによって、現在ブロックのSSBを無方向性モードに基づいて予測することがレジデュアル信号面で有利でありうる。即ち、既設定されたSMは平面モードまたはDCモードのうち、いずれか1つでありうる。
追加的な実施形態に従って、現在ブロックのSSBの最終予測ブロックは現在ブロックのPMに基づいて予測された第1予測SSB、及び前述した無方向性モードに基づいて予測された第2予測SSBに基づいて獲得できる。例えば、エンコーダ及びデコーダは現在ブロックの第1予測SSB及び第2予測SSBの間の平均に基づいてSSBに対応する最終予測ブロックを獲得することができる。また、エンコーダ及びデコーダはSSBに対応する最終予測ブロックとレジデュアル信号を合算してSSBを復元することができる。
図57は、本発明の一実施形態に従って、1次的サブブロックグループと2次的サブブロックグループが予測される方法を図示したものである。図57を参照すると、現在ブロックは総4個のサブブロックに分割できる。一実施形態に従って、現在ブロックの予測モードが対角モード及び対角モード周辺の角度モードのうち、いずれか1つである場合、現在ブロックのPSBグループとSSBグループは図57(a)のように決定できる。即ち、現在ブロックから分割された4個のサブブロックのうち、右下側サブブロック(SCU4)が現在ブロックのSSBであり、これを除外した残りのサブブロック(SCU1、SCU2、SCU3)は現在ブロックのPSBでありうる。
この場合、現在ブロックのSSBは現在ブロックのPSBの各々が含むサンプルを参照して復元できる。例えば、エンコーダ及びデコーダは現在ブロックのイントラ予測モード及び参照サンプルに基づいて現在ブロックのPSBを先に復元することができる。次に、エンコーダ及びデコーダは現在ブロックのPSBの既復元されたサンプルのうち、SSBに隣接したサンプルのサンプル値を用いてSSBに対するイントラ予測を遂行することができる。例えば、現在ブロックのSSB(SCU4)はPSB(SCU1、SCU2、SCU3)の既復元されたサンプルのサンプル値及びレジデュアル信号に基づいて復元できる。
一実施形態に従って、現在ブロックの予測モードが水平対角モード及び水平対角モード周辺の角度モードのうち、いずれか1つである場合、現在ブロックのPSBグループとSSBグループは、図57(b)のように決定できる。即ち、現在ブロックから分割された4個のサブブロックのうち、右上側サブブロック(SCU2)が現在ブロックのSSBであり、これを除外した残りのサブブロック(SCU1、SCU3、SCU4)は現在ブロックのPSBでありうる。この場合、前述したように、現在ブロックのSSB(SCU2)は現在ブロックのPSB(SCU1、SCU3、SCU4)の既復元されたサンプルのうち、SSB(SCU2)に隣接したサンプルのサンプル値に基づいて復元できる。
追加的な実施形態に従って、現在ブロックの参照サンプルのうちの一部が現在ブロックのSSBに隣接することができる。この際、現在ブロックの参照サンプルのうち、一部の現在ブロックのイントラ予測に使われない参照サンプルでありうる。この場合、現在ブロックのSSBは現在ブロックのPMと異なる予測モードであるSMに基づいて予測できる。例えば、現在ブロックのPMが角度モードである場合、現在ブロックのSMはPMの反対角度モードでありうる。図57(b)のように、現在ブロックのPMが水平対角モードである場合、SMは垂直対角モードでありうる。
また、現在ブロックのPMが角度モードである場合、現在ブロックのSSBの最終予測ブロックは現在ブロックのPMに基づいて予測された第1予測SSB、及びPMの反対角度モードに基づいて予測された第2予測SSBに基づいて獲得できる。図56(a)及び(e)のようにPMモードと反対方向の角度モードを使用することが可能であり、SSBの境界に隣接した参照サンプルが存在する場合、前述した実施形態が適用できる。
前述したように、ビデオ信号のコーディング過程で、ピクチャはコーディングツリーユニット(CTU)のシーケンスに分割できる。以下では、ピクチャ、スライス、またはタイル内でCTUが処理される順序について説明する。図58は、本発明の一実施形態に従ってコーディングツリーユニットが処理される順序を図示したものである。
エンコーダ及びデコーダは、現在ブロックを含む現在ピクチャまたは現在ピクチャから分割されたスライス/タイル内でCTU別にエンコーディングまたはデコーディングすることができる。この際、エンコーダ及びデコーダは既定義された処理順序に従って複数のCTUをエンコーディングまたはデコーディングすることができる。既定義された処理順序と異なる順にCTUが処理される場合、エンコーダはデコーダに該当順序をシグナリングすることができる。
図58(a)は、ピクチャ、スライス、またはタイルの最上段左側のCTUから横方向処理を遂行した後、次の行のCTUを処理するラスタースキャン(raster scan)順序を示す。図58(b)は、ピクチャ、スライス、またはタイルで最初に処理される第1のCTU(Block A)の位置が明示的にシグナリングされる実施形態を示す。例えば、エンコーダは第1のCTUの位置をシグナリングすることができる。デコーダは、シグナリングされた第1のCTUの位置に基づいて該当CTUを最優先的に処理することができる。デコーダは、第1のCTUの位置を基準にラスタースキャン順序上に以前位置に該当するCTUを逆−ラスター(inverse-raster)スキャン順序に従ってデコーディングすることができる。また、第1のCTUの位置を基準にラスタースキャン順序上に以後の位置に該当するCTUは前述したラスタースキャン順序に従ってデコーディングすることができる。この際、逆−ラスタースキャン順序に従って処理されるCTUとラスタースキャン順序に従って処理されるCTUは、各々1つのCTUずつ交差する順序に従って処理されるか、または2つのうちのどの一方向のCTUが優先的に処理できる。
図58(c)及び図58(d)は、ピクチャ、スライス、またはタイルで優先的に処理される複数のCTUの位置が明示的にシグナリングされる実施形態を示す。例えば、複数のCTUは第2のCTU(Block B)及び第3のCTU(Block C)を含むことができる。エンコーダは第2のCTU(Block B)及び第3のCTU(Block C)の各々の位置をシグナリングすることができる。また、優先的に処理される複数のCTUのうち、最初に処理される第2のCTUの位置が追加的にシグナリングできる。
図58(d)を参照すると、デコーダはシグナリングされた第2のCTUの位置に基づいて第2のCTU(Block B)を最優先的にデコーディングすることができる。次に、デコーダは第3のCTU(Block C)をデコーディングすることができる。次に、第2のCTUの位置と第3のCTUの位置の間のCTUがデコーディングできる。例えば、デコーダはラスタースキャン順序上に、第2のCTUの次のCTUから第3のCTUの以前CTUまでのCTUをラスタースキャン順序または逆ラスタースキャン順序に従ってデコーディングすることができる。また、デコーダは第2のCTU(Block B)の位置を基準にラスタースキャン順序上に以前の位置に該当するCTUを逆−ラスター(inverse-raster)スキャン順序に従ってデコーディングすることができる。また、第3のCTU(Block C)の位置を基準にラスタースキャン順序上に以後の位置に該当するCTUは前述したラスタースキャン順序に従ってデコーディングすることができる。
図58(c)は、図58(d)と類似の形態にピクチャ、スライス、またはタイルで優先的に処理される複数のCTUの位置が明示的にシグナリングされる更に他の実施形態を示す。
図59は、本発明の一実施形態に従う両方向イントラ予測方法を図示したものである。本発明の一実施形態に従って、現在ブロックは現在ブロックの使用可能な参照サンプルの分布によって両方向イントラ予測方法を使用して予測できる。図56及び図58のように、現在ブロックまたは現在ブロックから分割された複数のサブブロックがエンコーディングまたはデコーディングされる場合、該当ブロックの左側及び上側の既復元されたサンプルだけでなく、該当ブロックの下側及び右側の既復元されたサンプルが該当ブロックの参照サンプルに利用できる。これによって、特定ブロックは該当ブロックの周辺の右側及び下側の既復元されたサンプルを用いる両方向イントラ予測方法によって予測できる。以下、特定ブロックは現在ブロックまたは現在ブロックから分割された複数のサブブロックを示す。
図59(a)及び図59(b)は、特定ブロックの4面全てに既復元されたサンプルが存在する場合、現在ブロックが予測される方法の一実施形態を図示したものである。図59(a)を参照すると、特定ブロックは現在ブロックの予測モードに基づいて2等分できる。例えば、現在ブロックの予測モードが角度モードである場合、特定ブロックは現在ブロックの予測モードと直角である線分を基準に2等分できる。また、2等分された特定ブロックの第1部分は現在ブロックの予測モード及び第1参照サンプルに基づいて復元できる。この際、第1部分は特定ブロックの上側及び左側辺を含む部分でありうる。また、第1参照サンプルは特定ブロックの左側及び上側ラインの参照サンプルでありうる。2等分された特定ブロックの第2部分は2次的予測モード及び第2参照サンプルに基づいて復元できる。この際、第2部分は特定ブロックの右側及び下側辺を含む部分でありうる。また、第2参照サンプルは特定ブロックの右側及び下側ラインの参照サンプルでありうる。一実施形態に従って、2次的予測モードは図56及び図57を通じて説明したSMでありうる。
図59(b)を参照すると、特定ブロックは追加的に分割されないことがある。例えば、特定ブロックは第1予測ブロック及び第2予測ブロックに基づいて復元できる。この際、第1予測ブロックは現在ブロックの予測モード及び第1参照サンプルに基づいて予測された予測ブロックでありうる。また、第2予測ブロックは2次的予測モード及び第1参照サンプルに基づいて予測された予測ブロックでありうる。デコーダは、第1予測ブロックと第2予測ブロックを加重合して特定ブロックを復元することができる。
図59(c)及び図59(d)は、特定ブロックの4面のうち、3面のみに既復元されたサンプルが存在する場合、現在ブロックが予測される方法の一実施形態を図示したものである。この場合、特定ブロックは現在ブロックの予測モードに基づいて2等分できる。例えば、特定ブロックの領域のうち、既復元されたサンプルが存在しない辺に対応する領域は他の辺から予測モードを拡張して予測できる。また、図59(c)と図59(d)の実施形態でも、図59(b)のように、特定ブロックを追加的に分割せず、特定ブロックに対する複数の予測ブロックに基づいて特定ブロックを復元する実施形態が適用できる。
図60は、本発明の一実施形態に従って現在ブロックから分割された複数のサブブロックの各々が予測される方法を図示したものである。本発明の一実施形態に従って、現在ブロックから分割された複数のサブブロックは現在ブロックの周辺ブロックの予測に使われたイントラ予測モードに基づいて各々予測できる。
図60(a)は、現在ブロックの複数の周辺ブロックの各々の位置(AL、A、AR、R、L、BL)を図示する。この際、周辺ブロックの各々の位置に対応するイントラ予測モードが存在しないことがある。例えば、該当位置のブロックがインター予測されるか、またはラスタースキャン順序またはCU処理順序に従って該当位置のブロックに対するデコーディングが遂行されない状態でありうる。
図60(b)は、現在ブロックが総4個のサブブロックに分割された場合、各々のサブブロックが予測される方法を示す。例えば、第1サブブロックSCU1は第1サブブロックSCU1に最も隣接した左上側位置(AL)に対応するイントラ予測モードを使用して予測できる。また、第2サブブロックSCU2は第2サブブロックSCU2に隣接した上側位置(A)に対応するイントラ予測モードを使用して予測できる。また、上側位置(A)に対応するイントラ予測モードが存在しない場合、第2サブブロックSCU2は他の周辺位置(例えば、右上側位置)に対応するイントラ予測モードを使用して予測できる。また、第4サブブロックSCU4のように、上側辺及び左側辺が全て現在ブロック内の場合、該当ブロックは遠隔直線上に位置した周辺ブロックのイントラ予測モードを使用して予測できる。
図60(c)は、現在ブロックが総4個のサブブロックに分割された場合、各々のサブブロックが予測される更に他の方法を示す。図60(c)で、第1サブブロックSCU1、第2サブブロックSCU2、及び第3サブブロックSCU3は、現在ブロックのイントラ予測モードに基づいて予測できる。この際、第1サブブロックSCU1、第2サブブロックSCU2、及び第3サブブロックSCU3は、図56及び図57を通じて前述した1次的サブブロックでありうる。一実施形態に従って、第4サブブロックSCU4は現在ブロックのイントラ予測モードと異なるイントラ予測モードに基づいて予測できる。例えば、第4サブブロックSCU4は、右側位置(R)に対応するイントラ予測モードを使用して予測できる。または、第4サブブロックSCU4は遠隔に直線上に位置した周辺ブロックのイントラ予測モードを使用して予測できる。
上述した本発明の実施例は多様な手段を介して具現される。例えば、本発明の実施例は、ハードウェア、ファームウェア(firmware)、ソフトフェアまたはそれらの組み合わせによって具現される。
ハードウェアによる具現の場合、本発明の実施例による方法は、一つまたはそれ以上のASICs(Application Specific Integrated Circuits)、DSPs(Digital Signal Processors)、DSDPs(Digital Signal Processing Devices)、PDLs(Programmable Logic Devices)、FPGAs(Field Programmable Gate Arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって具現される。
ファームフェアやソフトウェアによる具現の場合、本発明の実施例による方法は、上述した機能または動作を行うモジュール、手順または関数などの形態で具現される。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって具現される。前記メモリはプロセッサの内部または外部に位置し、既に公知の多様な手段によってプロセッサとデータを交換する。
一部の実施例はコンピュータによって実行されるプログラムモジュールのようなコンピュータで実行可能な命令語を含む記録媒体の形態にも具現される。コンピュータで判読可能な媒体は、コンピュータでアクセスされ得る任意の利用可能な媒体であり、揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。また、コンピュータ読取可能媒体は貯蔵媒体及び通信媒体をいずれも含む。コンピュータ貯蔵媒体は、コンピュータ判読可能な命令語、データ構造、プログラムモジュール、またはその他のデータのような情報の貯蔵のための任意の方法または技術で具現された揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。通信媒体は、典型的にコンピュータ読取可能な命令語、データ構造、またはプログラムモジュールのような変調されたデータ信号のその他のデータ、またはその他の伝送メカニズムを含み、任意の情報伝達媒体を含む。
上述した本発明の説明は例示のためのものであって、本発明が属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須的特徴を変更せずも他の具体的な形態に容易に変更可能であることを理解できるはずである。よって、上述した実施例は全ての面で例示的なものであり、限定的なものではないと理解すべきである。例えば、単一型として説明されている各構成要素は分散されて実施されてもよく、同じく分散されていると説明されている構成要素も結合された形態で実施されてもよい。
本発明の範囲は、上述した詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、そしてその均等概念から導き出される全ての変更または変形された形態が本発明の範囲に含まれると解釈すべきである。
図22は、本発明の一実施形態に従って現在ブロックの動きベクトル差分値の解像度が獲得される方法を示すフローチャートである。図22を参照すると、デコーダはビットストリームをパーシングして現在ブロックのシグナリングされた動きベクトル差分値を獲得することができる(S2201)。この際、シグナリングされた動きベクトル差分値は、動きベクトル差分値の解像度単位で表現された値でありうる。また、デコーダは現在ブロックの動きベクトル差分値の解像度を指示する解像度指示子を獲得することができる。デコーダは、解像度指示子のn番目のビットをパーシングすることができる(S2205)。ここで、nは1からNまでの整数でありうる。nは1からNまでループ演算によって順次に増加する値でありうる。解像度指示子のn番目のビットが‘0’の場合、デコーダはn番目の可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。この際、n番目の可用解像度は現在ブロックの解像度セットが含む可用解像度のうち、n番目の指示子値により指示される可用解像度でありうる。
次に、デコーダは第2現在解像度セットが含む可用解像度の個数が1つであるかを判断することができる(S2213)。第2現在解像度セットが含む可用解像度の個数が1つの場合、デコーダは第2現在解像度セットが含む可用解像度を現在ブロックの動きベクトル差分値の解像度に使用することができる。第1現在解像度セットが含む可用解像度の個数が1つでない場合、デコーダはステップS2203乃至ステップS2213をまた遂行することができる。また、デコーダはnを1増加させることができる。この際、デコーダは次のループ演算のステップS2207で第2現在解像度セットを以前解像度セットに使用することができる。
図25を参照すると、負の符号(−)が適用された現在ブロックの動きベクトル差分値のx軸成分及び正の符号(+)が適用された現在ブロックの動きベクトル差分値のy軸成分に基づいて、第4参照ブロック候補(Candidate reference block 1)が獲得できる。また、正の符号(+)が適用された現在ブロックの動きベクトル差分値のx軸成分及び正の符号(+)が適用された現在ブロックの動きベクトル差分値のy軸成分に基づいて、第5参照ブロック候補(Candidate reference block 2)が獲得できる。
図52は、本発明の一実施形態に従って現在ブロックのアフィン動き補償のための複数のコントロールポイント動きベクトルが誘導される方法を示す図である。図52を参照すると、第1のCPMV差分値(mvd0)及び第2のCPMV差分値(mvd1)を共通差分予測子(mvdp)及び単一の差分絶対値(mvdd)に基づいて獲得することができる。例えば、第1のCPMV差分値(Mvd0)はmvdpとmvddの合算に基づいて獲得できる。また、第2のCPMV差分値(mvd1)はmvdpと−mvddの合算に基づいて獲得できる。