本明細書で使用される用語は本発明における機能を考慮しながらできるだけ現在広く使用されている一般的な用語を選択したが、これは当分野に携わる技術者の意図、慣例または新たな技術の出現などによって異なり得る。また、特定の場合は出願人が任意に選定した用語もあるが、この場合、該当する発明を実施する形態の部分にその意味を記載する。よって、本明細書で使用される用語は、単なる用語の名称ではなく、その用語の有する実質的な意味と本明細書全般にわたる内容に基づいて解釈すべきであることを明らかにする。
本明細書において、一部の用語は以下のように解釈される。コーディングは、場合によってはエンコーディングまたはでコーディングと解釈される。本明細書において、ビデオ信号のエンコーディング(符号化)を行ってビデオ信号のビットストリームを生成する装置はエンコーディング装置またはエンコーダと称され、ビデオ信号ビットストリームのデコーディング(復号化)を行ってビデオ信号を復元する装置はデコーディング装置またはデコーダと称される。また、本明細書において、ビデオ信号処理装置はエンコーダ及びデコーダをいずれも含む概念の用語として使用される。情報(information)は値(values)、パラメータ(parameter)、係数(coefficients)、成分(elements)などをいずれも含む用語であって、場合によっては意味が異なるように解釈されることがあるため、本発明はこれに限らない。「ユニット」は映像処理の基本単位またはピクチャの特定位置を指す意味で移用され、ルマ(luma)成分とクロマ(chroma)成分をいずれも含むイメージ領域を指す。また、「ブロック」はルマ成分及びクロマ成分(つまり、Cb及びCr)のうち特定成分を含むイメージ領域を指す。但し、実施例によって「ユニット」、「ブロック」、「パーティション」、及び「領域」などの用語は互いに混合して使用されてもよい。また、本明細書において、ユニットはコーディングユニット、予測ユニット、変換ユニットをいずれも含む概念として使用される。ピクチャはフィールドまたはフレームを指し、実施例よっては前記用語は互いに混用して使用される。
図1は、本発明の一実施例によるビデオ信号エンコーディング装置の概略的なブロック図である。図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では、復号ピクチャバッファ156に保存された参照ピクチャを用いて現在ピクチャを予測する。イントラ予測部152は、現在ピクチャ内の復元された領域から画面内予測を行い、画面内符号化情報をエントロピーコーディング部160に伝達する。インター予測部154はさらに、モーション推定部154a及びモーション補償部154bを含んで構成されてよい。モーション推定部154aでは、復元された特定領域を参照して現在領域のモーションベクトル値を取得する。モーション推定部154aでは、参照領域の位置情報(参照フレーム、モーションベクトルなど)などをエントロピーコーディング部160に伝達してビットストリームに含まれ得るようにする。モーション推定部154aから伝達されたモーションベクトル値を用いて、モーション補償部154bでは画面間モーション補償を行う。
予測部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)方式が使用される。例えば、エントロピーコーディング部160は、量子化された変換係数を示す情報を二進化することができる。また、エントロピーコーディング部160は、二進化された情報を算術コーディングしてビットストリームを生成することができる。
前記生成されたビットストリームは、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は、ビデオ信号ビットストリームをエントロピーデコードし、各領域に対する変換係数情報、イントラ符号化情報、インター符号化情報などを抽出する。例えば、エントロピーデコーディング部210は、ビデオ信号ビットストリームから特定領域の変換係数情報に対する二進化コードを取得することができる。また、エントロピーデコーディング部210は二進化コードを逆二進化し、量子化された変換係数を取得する。逆量子化部220は量子化された変換係数を逆量子化し、逆変換部225は、逆量子化された変換係数を用いてレジデュアル値を復元する。ビデオ信号処理装置200は、逆変換部225から取得したレジデュアル値を、予測部250から取得した予測値と合算して、元来の画素値を復元する。
一方、フィルタリング部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つのモーションベクトルが同じ参照ピクチャインデックスに対応してもよく、互いに異なる参照ピクチャインデックスに対応してもよい。この際、参照ピクチャは時間的に現在ピクチャの以前や以降のいずれにも表示(または出力)される。一実施例によって、双予測方式では、使用される2個の参照領域は、L0ピクチャリスト及びL1ピクチャリストのそれぞれから選択された領域であってよい。
インター予測部254は、モーションベクトル及び参照ピクチャインデックスを利用して現在の参照ブロックを獲得する。前記参照ブロックは、参照ピクチャインデックスに対応する参照ピクチャ内に存在する。また、モーションベクトルによって特定されたブロックのサンプル値またはこれの補間(interpolation)された値が現在ブロックの予測子(predictor)として利用される。サブペル(sub-pel)単位のピクセル正確度を有するモーション予測のために、例えば、輝度信号に対して8-タブ補間フィルタが、色差信号に対して4-タブ補間フィルタが使用される。但し、サブペル単位のモーション予測のための補間フィルタはこれに限らない。このように、インター予測部254は、以前復元されたピクチャから現在ユニットのテクスチャを予測するモーション補償(motion compensation)を行う。この際、インター予測部はモーション情報セットを利用する。
更なる実施例によって、予測部250は、イントラBC予測部(図示せず)を含むことができる。イントラBC予測部は、現在ピクチャ内の復元されたサンプルを含む特定領域を参照して現在領域を復元することができる。イントラBC予測部は、エントロピーデコーディング部210から、現在領域に対するイントラBC符号化情報を取得する。イントラBC予測部は、現在ピクチャ内の特定領域を指示する現在領域のブロックベクトル値を取得する。イントラBC予測部は、取得されたブロックベクトル値を用いてイントラBC予測を行うことができる。イントラBC符号化情報は、ブロックベクトル情報を含むことができる。
更なる実施例によって、予測部250は、イントラBC予測部(図示せず)を含むことができる。イントラBC予測部は、現在ピクチャ内の復元されたサンプルを含む特定領域を参照して現在領域を復元することができる。イントラBC予測部は、エントロピーデコーディング部210から、現在領域に対するイントラBC符号化情報を取得する。イントラBC予測部は、現在ピクチャ内の特定領域を指示する現在領域のブロックベクトル値を取得する。イントラBC予測部は、取得されたブロックベクトル値を用いてイントラBC予測を行うことができる。イントラBC符号化情報は、ブロックベクトル情報を含むことができる。
一方、図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には、本発明の実施例に係るインター予測を図示する。前述したように、デコーダは、復号化された他のピクチャの復元されたサンプルを参照して現在ブロックを予測する。図5を参照すると、デコーダは、現在ブロック32のモーション情報に基づいて参照ピクチャ内の参照ブロック42を取得する。この時、モーション情報は、参照ピクチャインデックス及びモーションベクトル50を含むことができる。参照ピクチャインデックスは、参照ピクチャリストにおいて現在ブロックの参照ピクチャを指示する。また、モーションベクトル50は、現在ピクチャ内における現在ブロック32の座標値と参照ピクチャ内における参照ブロック42の座標値間のオフセットを表す。デコーダは、参照ブロック42のサンプル値に基づいて現在ブロック32の予測子を取得し、前記予測子を用いて現在ブロック32を復元する。
一方、本発明の実施例によれば、サブブロックベースのモーション補償が用いられてよい。すなわち、現在ブロック32は複数のサブブロックに分割され、各サブブロック別に独立したモーションベクトルが用いられてよい。したがって、現在ブロック32内で各サブブロックは異なる参照ブロックを用いて予測されてよい。一実施例によれば、サブブロックは、4X4又は8X8のように既に設定されたサイズを有することができる。デコーダは、各サブブロックのモーションベクトルを用いて現在ブロック32の各サブブロックの予測子を取得する。各サブブロックの予測子を組み合わせて現在ブロック32の予測子が取得でき、デコーダは、このように取得された現在ブロック32の予測子を用いて現在ブロック32を復元することができる。
本発明の実施例によれば、様々な方法のサブブロックベースのモーション補償が行われてよい。サブブロックベースのモーション補償は、アフィン(affine)モデルベースのモーション補償(以下、アフィンモーション補償又はアフィンモーション予測)と、サブブロックベースの時間的モーションベクトル予測(Subblock-based Temporal Motion Vector Prediction,SbTMVP)を含むことができる。以下、各図を参照して、アフィンモーション補償とSbTMVPの様々な実施例について述べる。
図6は、本発明の一実施例に係るモーションベクトルシグナリング方法を例示する図である。本発明の一実施例によれば、モーションベクトル(motion vector,MV)は、モーションベクトル予測(又は、予測子)(motion vector prediction(or predictor)、MVP)に基づいて生成されてよい。一例として、次の数学式1のように、MVはMVPと決定されてよい。言い換えると、MVはMVPと同じ値に決定(又は、設定、誘導)されてよい。
他の例として、次の数学式2のように、MVは、MVP及びモーションベクトル差分(motion vector difference,MVD)に基づいて決定されてもよい。エンコーダは、より正確なMVを表すためにMVD情報をデコーダにシグナルすることができ、デコーダは、取得したMVDをMVPに加算することによってMVを誘導することができる。
本発明の一実施例によれば、エンコーダは、決定されたモーション情報をデコーダに伝送し、デコーダは、受信したモーション情報からMVを生成(又は、誘導)し、これに基づいて予測ブロックを生成することができる。例えば、前記モーション情報は、MVP情報、MVD情報を含むことができる。このとき、インター予測モードによって前記モーション情報の構成要素が異なってよい。一例として、マージモードにおいて、前記モーション情報はMVP情報を含み、MVD情報を含まなくてもよい。他の例として、AMVP(advanced motion vector prediction)モードにおいて、前記モーション情報はMVP情報及びMVD情報を含むことができる。
MVPに関する情報を決定、送信、受信するために、エンコーダとデコーダは同一の方法でMVP候補(又は、MVP候補リスト)を生成することができる。例えば、エンコーダとデコーダは、同一の順序で同一のMVP候補を生成することができる。そして、エンコーダは、生成されたMVP候補の中から決定された(又は、選択された)MVPを示す(又は、指示する)インデックスをデコーダに伝送し、デコーダは、受信したインデックスに基づいて、決定されたMVP及び/又はMVを誘導することができる。
本発明の一実施例によれば、MVP候補は空間候補(spatial candidate)、時間候補(temporal candidate)などを含むことができる。前記MVP候補は、マージモードが適用される場合、マージ候補と呼ぶことができ、AMVPモードが適用される場合、AMVP候補と呼ぶことができる。空間候補は、現在ブロックを基準に特定位置にあるブロックに対するMV(又は、モーション情報)であってよい。例えば、前記空間候補は、現在ブロックと隣接したり又は隣接していない位置のブロックのMVであってよい。時間候補は、現在ピクチャと異なるピクチャ内のブロックに該当するMVであってよい。また、例えば、MVP候補は、アフィン(affine)MV、ATMVP、STMVP、前述したMV(又は、候補)の組合せ、前述したMV(又は、候補)の平均MV、ゼロMVなどを含むことができる。
一実施例において、エンコーダは、参照ピクチャを示す情報をデコーダにシグナルすることができる。実施例として、MVP候補の参照ピクチャと現在ブロック(又は、現在処理ブロック)の参照ピクチャとが異なる場合、エンコーダ/デコーダは、MVP候補のMVスケーリング(motion vector scaling)を行うことができる。この時、MVスケーリングは、現在ピクチャのピクチャ順序カウント(picture order count,POC)、現在ブロックの参照ピクチャのPOC、MVP候補の参照ピクチャのPOCに基づいて行われてよい。
以下に、MVDシグナリング方法に関する具体的な実施例を説明する。下表1には、MVDシグナリングのためのシンタックス構造を例示する。
表1を参照すると、本発明の一実施例によれば、MVDは、MVDの符号(sign)及び絶対値(absolute value)が分けられてコードされてよい。すなわち、MVDの符号及び絶対値はそれぞれ異なるシンタックス(又は、シンタックスエレメント)であってよい。また、MVDの絶対値は、その値が直接コードされてもよく、表1のように、絶対値がNよりも大きいか否かを示すフラグに基づいて段階的にコードされてもよい。仮に、絶対値がNよりも大きい場合、(絶対値-N)の値が共にシグナルされてよい。具体的に、表1の例示において絶対値が0よりも大きいか否かを示すabs_mvd_greater0_flagが伝送されてよい。仮に、絶対値が0よりも大きくないことをabs_mvd_greater0_flagが示す(又は、指示する)場合、MVDの絶対値は0と決定されてよい。また、仮に絶対値が0よりも大きいことをabs_mvd_greater0_flagが示す場合、追加シンタックス(又は、シンタックスエレメント)が存在してよい。
例えば、絶対値が1よりも大きいか否かを示すabs_mvd_greater1_flagが伝送されてよい。仮に、絶対値が1よりも大きくないことをabs_mvd_greater1_flagが示す(又は、指示する)場合、MVDの絶対値は1と決定されてよい。仮に、絶対値が1よりも大きいことをabs_mvd_greater1_flagが示す場合、追加シンタックスが存在してよい。例えば、abs_mvd_minus2が存在してよい。abs_mvd_minus2は、(絶対値-2)の値であってよい。abs_mvd_greater0_flag、abs_mvd_greater1_flag値によって絶対値が1よりも大きい(すなわち、2以上である)と決定されたので、(絶対値-2)値がシグナルされてよい。このように、絶対値に関する情報を階層的にシンタックスシグナルすることによって、絶対値をそのまま二進化(binarization)してシグナリングする場合に比べてより少ないビットが用いられて済む。
一実施例において、上述した絶対値に関連したシンタックスは、指数ゴロム(Exponential-Golomb)、切削型単項(truncated unary)、切削型ライス(truncated Rice)などの変数長(variable length)である二進化方法を適用してコードされてよい。また、MVDの符号を示すフラグは、mvd_sign_flagでシグナルされてよい。
上述した実施例において、MVDに対するコーディング方法を説明したが、MVD以外の情報も符号及び絶対値を分けてシグナリングすることができる。そして、絶対値は、前記絶対値があらかじめ定義された特定値よりも大きいか否かを示すフラグ及び絶対値から前記特定値を引いた値にコードされてよい。前記表1において、[0]と[1]は、コンポーネントインデックス(component index)を表すことができる。例えば、x-コンポーネント(すなわち、水平成分)、y-コンポーネント(すなわち、垂直成分)を表すことができる。
図7は、本発明の一実施例に係る適応的なモーションベクトル解像度(adaptive motion vector resolution)情報のシグナリング方法を例示する図である。本発明の一実施例によれば、MV又はMVDを示すための解像度は多様であり得る。例えば、解像度は、ピクセル(pixel)(又は、ペル(pel))に基づいて表現されてよい。例えば、MV又はMVDは、1/4(quarter)、1/2(half)、1(integer)、2、4ピクセルなどの単位でシグナルされてよい。そして、エンコーダは、MV又はMVDの解像度情報をデコーダにシグナリングすることができる。また、例えば、16は、1/4単位のとき、64にコードされ(1/4*64=16)、1単位のとき、16にコードされ(1*16=16)、4単位のとき、4にコードされてよい(4*.4=16)。すなわち、MV又はMVD値は、次の数学式3によって決定されてよい。
数学式3において、valueDeterminedは、MV又はMVD値を表す。また、valuePerResolutionは、決定された解像度に基づいてシグナリングされる値を表す。このとき、MV又はMVDでシグナリングする値が決定された解像度で割り切れない場合、ラウンディング(rounding)プロセスなどが適用されてよい。高い解像度を使用すれば正確度が向上し得るが、コードされる値が大きいため多くのビットが使用されることがあり、低い解像度を使用すれば正確度が低くなることがあるが、コードされる値が小さいため少ないビットが使用されて済む。一実施例として、上述した解像度は、シーケンス、ピクチャ、スライス、コーディングツリーユニット(coding tree unit,CTU)、コーディングユニット(coding unit,CU)などの単位で個別に設定されてよい。すなわち、エンコーダ/デコーダは、上述した単位のうち、あらかじめ定義された単位によって適応的に解像度を決定/適用することができる。
本明細書の一実施例によれば、上述した解像度情報は、エンコーダからデコーダにシグナリングされてよい。この時、解像度に関する情報は、前述した変数長に基づいて二進化してシグナルされてよい。このような場合、最小の値(すなわち、最も前にある値)に該当するインデックスに基づいてシグナリングされる場合、シグナリングオーバーヘッドが減ることができる。一実施例として、高い解像度から低い解像度の順にシグナリングインデックスにマップされてもよい。
本明細書の一実施例によれば、図7は、様々な複数の解像度のうち、3つの解像度が用いられる場合を仮定してシグナリング方法を示す。この場合、3つのシグナリングビットは、0、10、11でよく、前記3つのシグナリングインデックスはそれぞれ、第1解像度、第2解像度、第3解像度を表すことができる。第1解像度をシグナリングするために1ビットが要求され、残りの解像度をシグナルするために2ビットが要求されるため、第1解像度をシグナルする場合、シグナリングオーバーヘッドを相対的に減らすことができる。図7の例示において、第1解像度、第2解像度、第3解像度はそれぞれ、1/4、1、4ピクセル解像度と定義されてよい。以下の実施例において、MV解像度はMVDの解像度を意味できる。
図8には、本発明の一実施例に係るアフィンモーション補償を示す。既存のインター予測方法によれば、現在ブロックに対するL0予測及びL1予測別に単一のモーションベクトルを用いてインター予測が行われるので、並進運動(translation motion)の予測に最適化されている。しかし、ズームイン/アウト、回転及びその他不規則的な運動に対するモーション補償を効率的に行うためには、様々な形状とサイズの参照ブロック44が用いられる必要がある。
図8を参照すると、アフィンモーション補償では、現在ブロック34と異なるサイズ、形状及び/又は方向を有する参照ブロック44を用いて現在ブロック34の予測が行われてよい。すなわち、参照ブロック44は、非-長方形の形態を有することができ、現在ブロック34に比べてサイズが大きいか小さくてよい。参照ブロック44は、現在ブロック34にアフィン変換を行って取得できる。アフィン変換は、3個のコントロールポイントモーションベクトル(Control Point Motion Vector,CPMV)を用いる6-パラメータアフィン変換と、2個のコントロールポイントモーションベクトルを用いる4-パラメータアフィン変換を含むことができる。これに関する具体的な実施例は後述する。
図9には、4-パラメータアフィンモーション補償方法の一実施例を示す。アフィン変換の演算量及びシグナリングオーバーヘッドを減らすために、既に設定された個数のコントロールポイントモーションベクトル(CPMV)を用いてアフィンモーション予測を行うことができる。コントロールポイントモーションベクトル(CPMV)は、現在ブロックの特定コントロールポイント(又は、サンプル位置)に対応するモーションベクトルである。特定コントロールポイントは、現在ブロックの頂点のうち少なくとも一つを含むことができる。本発明の実施例では、現在ブロックの上左頂点に対応するCPMVをv0(又は、第1CPMV)と、現在ブロックの上右頂点に対応するCPMVをv1(又は、第2CPMV)と、現在ブロックの下左頂点に対応するCPMVをv2(又は、第3CPMV)とそれぞれ呼ぶ。アフィンモーション予測のために、少なくとも2個のCPMVを含むCPMVセットを用いることができる。
図9の実施例によれば、v0とv1を用いて4-パラメータアフィンモーション予測を行うことができる。実線で表示された現在ブロック36は、点線で表示された位置の参照ブロック46を用いて予測することができる。現在ブロック36の各サンプルは、アフィン変換によってそれぞれ異なる参照サンプルにマッピングされてよい。より具体的に、現在ブロック36のサンプル位置(x,y)におけるモーションベクトル(vx,vy)は下記の数学式4によって誘導されてよい。
ここで、(v0x,v0y)は、現在ブロック36の上左頂点に対応する第1CPMVであり、(v1x,v1y)は、現在ブロックの上右頂点に対応する第2CPMVである。また、wは現在ブロック36の幅である。
図10は、本発明の一実施例に係るアフィンモーション予測方法を説明するための図である。本発明の一実施例によれば、アフィンモーションは、多数のCPMV又は多数のパラメータ(parameter)を用いて表すことができる。
図10を参照すると、エンコーダ/デコーダは、v0、v1、v2のCPMVを用いてアフィンモーション予測を行うことができる。6個のパラメータが用いられる場合、v0、v1、v2の3個のコントロールポイントモーションベクトル(CPMV)がアフィンモーション予測に用いられてよい。前記v0、v1、v2の3個のベクトル又は前記6個のパラメータに基づいて、現在ブロック36がいかなる形状の参照ブロックから予測するかを示すことができる。図10を参照すると、実線で表した現在ブロック36は、参照ピクチャにおいて図10の点線で表した参照ブロック46から予測されてよい。すなわち、アフィン変換(affine transformation)によって現在ブロック36の各コントロールポイント(又は、当該位置のピクセル)が他のポイント(又は、ピクセル)にマッブされてよい。次の数学式5は、本発明の一実施例に係るモーションベクトルフィールド(motion vector field)を表す式である。
数学式5において、図10における左上端(top-left)コーナーコントロールポイントのモーションベクトルを表すCPMV v0は、(mv_0^x,mv_0^y)と表現されてよい。右上端(top-right)コーナーコントロールポイントのモーションベクトルを表すCPMV v1は、(mv_1^x,mv_1^y)と表現されてよい。左下端(bottom-left)コーナーコントロールポイントのモーションベクトルを表すCPMV v2が(mv_2^x,mv_2^y)と表現されてよい。このとき、(x,y)位置のモーションベクトル(mv^x,mv^y)は、数学式5を用いて誘導(又は、計算)することができる。したがって、各ピクセルの位置又は特定位置に対するモーションベクトルは、コントロールポイントモーションベクトルv0、v1、v2に基づいて数学式5によって誘導されてよい。
また、数学式5において(x,y)は、ブロック内における相対的座標であってよい。例えば、(x,y)は、ブロックの左上端位置が(0,0)である場合、前記左上端位置を基準とする位置であってよい。したがって、仮にv0の位置を(x0,y0)、v1の位置を(x1,y1)、v2の位置を(x2,y2)と仮定し、(x,y)をv0、v1、v2の位置と同じ座標を使用すれば、数学式5においてxとyはそれぞれ、(x-x0)、(y-y0)と示すことができる。また、この場合、ブロックの幅を表すwは(x1-x0)であり、ブロックの高さを表すhは(y2-y0)であってよい。
図11には、サブブロックベースのアフィンモーション補償方法の一実施例を示す。前述したように、アフィンモーション変換を用いると、現在ブロックの各サンプル位置におけるモーションベクトル(すなわち、モーションベクトルフィールド)を誘導することができる。しかし、演算量を減らすために、本発明の実施例によれば、サブブロックベースのアフィンモーション補償を行うことができる。図8に示すように、現在ブロックは複数のサブブロックを含むことができ、各サブブロックの代表モーションベクトルがCPMVセットに基づいて取得される。一実施例によれば、各サブブロックの代表モーションベクトルは、当該サブブロックの中央のサンプル位置に対応するモーションベクトルであってよい。追加の実施例によれば、サブブロックのモーションベクトルには、一般のモーションベクトルに比べて正確度が高いモーションベクトルが用いられてもよい。このために、モーション補償補間フィルターが適用されてよい。
アフィンモーション補償が行われるサブブロックのサイズは、様々な方法で設定されてよい。本発明の一実施例によれば、サブブロックは4X4又は8X8のように既に設定されたサイズを有することができる。本発明の他の実施例によれば、サブブロックのサイズMXNは、下記の数学式6によって決定されてよい。
ここで、wは現在ブロックの幅であり、MvPreは、モーションベクトルの分数単位正確度である。(v2x,v2y)は、現在ブロックの下左頂点に対応する第3CPMVであり、一実施例によれば、数学式5によって計算されてよい。max(a,b)は、aとbのうち、相対的に大きい値を返還する関数であり、abs(x)は、xの絶対値を返還する関数である。また、clip3(x,y,z)は、z<xの場合にxを返還し、z>yの場合にyを返還し、その他の場合にzを返還する関数である。
デコーダはCPMVセットのCPMVを用いて現在ブロックにおける各サブブロックのモーションベクトルを取得する。また、デコーダは、各サブブロックのモーションベクトルを用いて各サブブロックの予測子を取得し、各サブブロックの予測子を組み合わせて現在ブロックの予測子を取得する。デコーダは、このように取得された現在ブロックの予測子を用いて現在ブロックを復元することができる。
図12及び図13は、現在ブロックの予測のためのコントロールポイントモーションベクトルセットを取得する本発明の実施例を示す。本発明の実施例によれば、現在ブロックの予測のためのCPMVセットは様々な方法で取得されてよい。より具体的に、現在ブロックの予測のためのCPMVセットは、一つ以上の周辺ブロックのモーションベクトル情報セットを参照して取得されてよい。本発明の実施例において、モーションベクトル情報は、該当のブロックのモーションベクトルを表すか、或いは該当のブロックのCPMVを表すことができる。また、モーションベクトル情報セットは、一つ以上のブロックのモーションベクトル情報の集合を表す。周辺ブロックは、現在ブロックの既に設定された周辺位置を含むブロックを表すことができる。このとき、周辺ブロックは、既に設定された周辺位置を含むコーディングユニットであるか、前記周辺位置を含む既に設定された単位(例えば、4X4、8X8)の領域であってよい。
現在ブロックのCPMVを誘導するために参照可能な複数の候補が存在してよい。したがって、現在ブロックのCPMVを誘導するために参照する周辺ブロックに関する情報が別個にシグナルされてよい。本発明の一実施例によれば、現在ブロックにおける各サブブロックのモーションベクトルを誘導するために参照するモーションベクトル情報セットを示す指示子がシグナルされてよい。前記指示子は、現在ブロックにおける各サブブロックのモーションベクトルを誘導するために参照する周辺ブロックのモーションベクトル情報セットを示すことができる。デコーダは、前記指示子を取得し、指示子が示す周辺ブロックのモーションベクトル情報セットを参照して現在ブロックのためのCPMVセットの各CPMVを取得することができる。より具体的な実施例によれば、デコーダは、一つ以上のモーションベクトル情報セット候補で構成された候補リストを生成することができる。候補リストを構成するそれぞれのモーションベクトル情報セット候補は、現在ブロックのモーションベクトル情報を誘導するために使用可能な周辺ブロックのモーションベクトルセットである。このとき、指示子は、候補リスト中のいずれか一つのモーションベクトル情報セットを示すインデックスであってよい。現在ブロックのCPMVは、候補リストの中から前記指示子(すなわち、インデックス)に基づいて選択されたモーションベクトル情報セットを参照して取得することができる。以下、現在ブロックのモーションベクトル情報(又は、CPMVセット)誘導のための候補リストに含み得るモーションベクトル情報セット候補の様々な実施例について述べる。
図12には、現在ブロックのCPMVセットを取得する一実施例を示す。図12の実施例では、現在ブロックのCPMVセットが2個のCPMV、すなわち、v0とv1を含むと仮定する。本発明の一実施例によれば、現在ブロックのCPMVは、該当のポイントに隣接した周辺ブロックのモーションベクトルから誘導されてよい。図12を参照すると、v0は、該当のポイントに隣接した周辺ブロックA、B及びCのいずれか一つのモーションベクトルから誘導されてよく、v1は、該当のポイントに隣接した周辺ブロックD及びEのいずれか一つのモーションベクトルから誘導されてよい。周辺ブロックA、B、C、D及びEのモーションベクトルをそれぞれvA、vB、vC、vD及びvEとするとき、候補リストに含み得るモーションベクトル情報セットは、次の数学式7のように誘導されてよい。
すなわち、vA、vB、vCの中から選択されたv0と、vD、vEの中から選択されたv1で構成された(v0,v1)対が取得されてよい。このとき、v0は、現在ブロックの上左頂点に隣接したブロックのモーションベクトルから誘導され、v1は、現在ブロックの上右頂点に隣接したブロックのモーションベクトルから誘導される。追加の実施例によれば、現在ブロックのPOC(Picture Order Count)、周辺ブロックの参照ピクチャのPOC、及び現在ブロックの参照ピクチャのPOCに基づいてモーションベクトルスケーリングが行われてよい。
このように取得されたモーションベクトル情報セット候補を含む候補リストが生成されてよく、候補リストにおけるいずれか一つのモーションベクトル情報セットを示す指示子がシグナルされてよい。本発明の追加の実施例によれば、候補リストには、他の方式のインター予測のためのモーションベクトル情報セット候補が含まれてもよい。例えば、候補リストは、サブブロックベースの時間的モーションベクトル予測(SbTMVP)のためのモーションベクトル情報セット候補を含むことができる。
デコーダは、候補リストから取得されたモーションベクトル情報セットに基づいて現在ブロックのCPMVを誘導することができる。一実施例によれば、デコーダは、候補リストから取得されたモーションベクトル情報セットのモーションベクトルを、別個のモーションベクトル差分値無しで現在ブロックのCPMVとして用いることによって、アフィン併合予測を行うことができる。他の実施例によれば、デコーダは、現在ブロックのCPMVのための別個のモーションベクトル差分値を取得することができる。デコーダは、候補リストから取得されたモーションベクトル情報セットのモーションベクトルを前記モーションベクトル差分値と合算して現在ブロックのCPMVを取得することができる。デコーダが現在ブロックのアフィンモーション補償のために別個のモーションベクトル差分値を使用するか否かを示すフラグ又はインデックスが別個にシグナルされてよい。
図13には、現在ブロックのCPMVセットを取得する他の実施例を示す。本発明の他の実施例によれば、現在ブロックのCPMVは、アフィンモーション補償が行われた周辺ブロックのモーションベクトル情報、すなわち、周辺ブロックのCPMV又はモーションベクトルから誘導されてよい。このとき、周辺ブロックは、現在ブロックの左側周辺ブロックと現在ブロックの上側周辺ブロックを含むことができる。図13(a)を参照すると、左側周辺ブロックは現在ブロックの下左頂点に隣接したブロック、すなわち、左側ブロックA及び下左側ブロックDを含む。また、上側周辺ブロックは、現在ブロックの上左頂点に隣接したブロック、すなわち、上左側ブロックEと、現在ブロックの上右頂点に隣接したブロック、すなわち、上側ブロックB及び上右側ブロックCを含む。デコーダは、既に設定された順に周辺ブロックがアフィンモーション補償されるか否か確認する。アフィンモーション補償が行われた周辺ブロックが発見されると、デコーダは、当該周辺ブロックのCPMVセット(又は、モーションベクトル)を用いて現在ブロックのCPMVセットを取得する。図13(b)の実施例を参照すると、左側ブロックAのCPMVセットが現在ブロックのCPMVセットを誘導するのに用いられてよい。すなわち、左側ブロックAのCPMVセット(v2,v3,v4)に基づいて現在ブロックのCPMVセット(v0,v1)が取得されてよい。
本発明の実施例によれば、現在ブロックのCPMVを誘導するために参照する周辺ブロックに関する情報が別個にシグナルされてよい。このとき、現在ブロックの周辺ブロックのCPMVセットは、既に設定された順序に従って前述の候補リストを構成するモーションベクトル情報セット候補になってよい。より具体的に、モーションベクトル情報セット候補は、現在ブロックの左側周辺ブロックのCPMV(又は、モーションベクトル)から誘導された第1候補と、現在ブロックの上側周辺ブロックのCPMV(又は、モーションベクトル)から誘導された第2候補を含むことができる。このとき、左側周辺ブロックは、現在ブロックの下左頂点に隣接したブロックであり、上側周辺ブロックは、現在ブロックの上左頂点に隣接したブロック又は現在ブロックの上右頂点に隣接したブロックである。このように取得されたモーションベクトル情報セット候補を含む候補リストが生成されてよく、候補リストにおけるいずれか一つのモーションベクトル情報セットを示す指示子がシグナルされてよい。一実施例によれば、前記指示子は、現在ブロックにおける各サブブロックのモーションベクトルを誘導するために参照される周辺ブロックの位置情報を示すことができる。デコーダは、指示子が示す周辺ブロックのCPMVセット(又は、モーションベクトル)を参照して現在ブロックのCPMVセットを取得することができる。
本発明の追加の実施例によれば、現在ブロックのCPMVは、該当のポイントから近い周辺ブロックのCPMVに基づいて誘導されてよい。例えば、v0は左側周辺ブロックのCPMVを参照して取得され、v1は上側周辺ブロックのCPMVを参照して取得されてよい。又は、v0は周辺ブロックA、D又はEのCPMVを参照して取得され、v1は周辺ブロックB又はCのCPMVを参照して取得されてよい。
図14は、本発明の一実施例に係るアフィンモーション補償方法を説明するための図である。本発明の一実施例によれば、アフィンモーション予測のためにCPMVが必要でよく、前記CPMVに基づいてモーションベクトルフィールド、すなわち、サブブロック又はある位置(又は、ピクセル)に対するモーションベクトルが計算されてよい。本明細書において、前記CPMVは、シードベクトル(seed vector)と呼ぶことができる。このとき、CPMVは予測子に基づいて誘導されてよい。例えば、予測子がCPMVと決定されてよい。他の例として、予測子及び差分(difference)に基づいてCPMVが計算されてもよい。具体的に、予測子に差分を足したり引くことによってCPMVを計算することができる。
本発明の一実施例によれば、CPMVの予測子は、周辺のアフィンモーション補償(affine motion compensation(MC))ブロック(すなわち、アフィンモードと符号化された周辺ブロック)のCPMV又はMVから誘導されてよい。例えば、既に設定された位置のブロックがアフィンモーション予測された場合、エンコーダ/デコーダは、当該ブロックのCPMV又はMVから現在ブロックのアフィンモーション補償のための予測子が誘導できる。一実施例において、既に設定された位置は、図14に示すA0、A1、B0、B1、B2位置であってよい。又は、既に設定された位置は、現在ブロックに隣接した位置及び/又は隣接していない位置を含むことができる。また、エンコーダ/デコーダは、空間的に隣り合う既に設定された位置のCPMV又はMVを参照することもでき、時間的に隣り合う既に設定された位置のCPMV又はMVを参照することもできる。本明細書において、上述したアフィンMCブロックに基づく候補は、相続候補(inherited candidate)と呼ぶことができる。又は、上述したアフィンMCブロックに基づく候補は、マージ候補と呼ぶことができる。また、一実施例において、エンコーダ/デコーダは、既に設定された位置を参照するとき、既に設定された順序に従って参照することができる。
図15は、本発明の一実施例に係るアフィンモーション補償方法を説明するための図である。アフィンモーション予測のためにCPMVが必要でよく、前記CPMVに基づいてモーションベクトルフィールド、すなわち、サブブロック又はある位置に対するモーションベクトルが計算されてよい。本明細書において、前記CPMVは、シードベクトル(seed vector)と呼ぶことができる。このとき、CPMVは、予測子に基づいて誘導されてよい。例えば、予測子がCPMVと決定されてよい。さらに他の例として、予測子及び差分(difference)に基づいてCPMVが計算されてもよい。具体的に、予測子に差分を足したり引くことによってCPMVを計算することができる。
本発明の一実施例によれば、エンコーダ/デコーダは、周辺ブロックのMVを用いてCPMVの予測子を誘導することができる。この時、周辺ブロックのMVは、アフィンMCされたブロックのMVでない場合のMVも含むことができる。例えば、エンコーダ/デコーダは、現在ブロックの各CPMVを誘導するとき、各CPMVに対して既に設定された位置のMVをCPMVの予測子として使用することができる。例えば、既に設定された位置は、その部分と隣接したブロックに含まれた部分であってよい。
図15を参照すると、エンコーダ/デコーダは、CPMV mv0、mv1、mv2を決定することができる。ここで、mv0は左上側CPMVを表し、mv1は右上側CPMVを表し、mv2は左下側CPMVを表す。本発明の一実施例によれば、エンコーダ/デコーダは、既に設定された位置A、B、Cに該当するMVを、mv0に対する予測子として使用することができる。また、エンコーダ/デコーダは、既に設定された位置D、Eに該当するMVを、mv1に対する予測子として使用することができる。また、エンコーダ/デコーダは、既に設定された位置F、Gに該当するMVを、mv2に対する予測子として使用することができる。
図15の一実施例によってCPMV mv0、mv1、mv2の各予測子を決定するとき、各コントロールポイント位置に対する既に設定された位置を参照する順序があらかじめ定義されてよい。一例として、CPMVの予測子として参照する既に設定された位置が各コントロールポイント位置に対して多数存在してよく、可能な既に設定された位置の組合せがあらかじめ定義されてよい。図15の実施例のような方法によって、アフィンMCのための候補(又は、予測子)を誘導でき、このような候補は、構成された候補(constructed candidate)と呼ぶことができる。又は、このような候補は、インター候補又は仮想候補(virtual candidate)と呼ぶこともできる。また、図15の方法において、エンコーダ/デコーダは、既に設定された位置を参照するとき、既に設定された順序に従って参照することができる。
本発明の一実施例によれば、エンコーダ/デコーダは、図12~図15で説明した実施例又はそれらの組合せでアフィンMCの候補リスト又はアフィンMCのCPMV候補リストを生成することができる。次の数学式8は、本発明の一実施例に係るアフィンモーション予測子誘導方法を例示する。
前述したように、周辺のアフィンモーション予測されたブロックから現在ブロックのアフィンモーション予測のためのCPMVを誘導することができる。このとき、前記数学式8が用いられてよい。数学式8において、周辺のアフィンモーション予測されたブロックの左上端(top-left)、右上端(top-right)、左下端(bottom-left)のコントロールポイントのMVはそれぞれ、(v_E0x,v_E0y)、(v_E1x,v_E1y)、(v_E2x,v_E2y)と表現されてよい。また、周辺のアフィンモーション予測されたブロックの左上端(top-left)、右上端(top-right)、左下端(bottom-left)の座標はそれぞれ、(x_E0,y_E0)、(x_E1,y_E1)、(x_E2,y_E2)と表現されてよい。このとき、エンコーダ/デコーダは、数学式8によって現在ブロックのCPMVの予測子又はCPMVである(v_0x,v_0y)、(v_1x,v_1y)を計算することができる。下の数学式9及び10は、本発明の一実施例に係るアフィンモーション予測子誘導方法を例示する。
前述したように、アフィンモーション補償のために多数のCPMV又は多数のCPMV予測子が用いられてよい。このとき、エンコーダ/デコーダは、あるCPMV又はCPMV予測子から他のCPMV又はCPMV予測子を誘導することができる。例えば、エンコーダ/デコーダは、前述した方法によって2個のCPMV又は2個のCPMV予測子を誘導(又は、生成)し、これに基づいて他のCPMV又は他のCPMV予測子を誘導することができる。
本発明の一実施例によれば、エンコーダ/デコーダは、数学式9及び10を用いて左上端、右上端、左下端のCPMV予測子又はCPMVであるmv0、mv1、mv2を誘導(又は、生成)することができる。数学式9及び10で、x、yはそれぞれ、x-コンポーネント(component)、y-コンポーネントを表し、現在ブロックのサイズはw*hであってよい。エンコーダ/デコーダは、現在ブロックをアフィンMCするためにCPMVに対する予測子を作り、これに差分を足してCPMVを決定することができる。一実施例によれば、図14及び図15で説明した方法によってCPMVの予測子が生成でき、CPMVの差分はエンコーダからデコーダにシグナルされてよい。
また、一実施例において、各CPMVに対する差分が存在してよい。また、各CPMVに対する差分がそれぞれシグナルされてよい。4-パラメータモデルにおいて2個のCPMVが用いられてよく、各CPMVのMVは、各CMPVの予測子にmvd0、mvd1をそれぞれ足すことによって誘導されてよい。6-パラメータモデルの場合、3個のCPMVが用いられてよく、各CPMVのMVは、各CMPVの予測子にmvd0、mvd1、mvd2を足すことによってそれぞれ誘導されてよい。
本発明の一実施例によれば、エンコーダ/デコーダは、次の数学式11に基づいてモーションベクトル差分を決定することができる。
数学式11において、仮に参照リストが0であれば、MvdL0[x0][y0][compIdx]は、lMvd[compIdx]に設定されてよい。このとき、compIdxはコンポーネントインデックスを表し、0、1の値を有することができる。仮に参照リストが1であれば、MvdL1[x0][y0][compIdx]は、lMvd[compIdx]に設定されてよい。
一実施例において、上記の表1で説明した方法によってモーションベクトル差分がシグナルされてよく、前記モーションベクトル差分は、前記数学式11のlMvdであってよい。前述したように、エンコーダ/デコーダは、シグナルされたmvdをCPMVの予測子に対する差分と決定でき、前記決定された差分は、数学式11のMvdL0及びMvdL1であってよい。数学式11において、L0は参照リスト0を、L1は参照リスト1を表す。
また、本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロックに対するアフィンMCを行うために、CPMVに対する予測子を誘導し、これに差分を足してCPMVを決定することができる。一実施例として、エンコーダ/デコーダは、図14及び図15で説明した方法によってCPMVの予測子を生成することができる。前記CPMVの差分はエンコーダからデコーダにシグナルされてよい。一実施例において、エンコーダ/デコーダは、次の数学式12及び13に基づいてCPMVを誘導することができる。
数学式12及び13を参照すると、各CPMVに対する差分に対する予測子が存在してよい。一実施例において、あるCPMVの差分に基づいて他のCPMVの差分が決定されてよい。これは、CPMVに対する差分間の類似性に基づくものでよい。すなわち、CPMVに対する差分同士が類似するので、一つのCPMVに対する予測子を決定すれば、相対的に少ない情報を用いてCPMVに対する予測子を決定することができる。一例として、CPMVに対する差分予測子がシグナルされ、CPMVに対する差分予測子との差分がエンコーダからデコーダにシグナルされてよい。数学式12は、4-パラメータモデルが用いられる場合を仮定し、数学式13は、6-パラメータモデルが用いられる場合を仮定する。
数学式12及び13を参照すると、エンコーダ/デコーダは、CPMV 0であるmv0の差分(mvd0)に基づいて各CPMVに対する差分及びCPMVを決定することができる。数学式12及び13のmvd0、mvd1、mvd2は、エンコーダからデコーダにシグナルされてよい。上の図15で説明した方法と比較すれば、数学式12及び13の方法は、上の図15で説明した方法と同じ予測子を使用するにもかかわらず、シグナルされるmvd1とmvd2の値が異なってよい。CPMV mv0、mv1、mv2の予測子との差分が類似していると、数学式12及び13の方法を用いる場合、上の図15で説明した方法を用いた場合に比べてmvd1及びmvd2の絶対値が少ない可能性があり、これによってmvd1とmvd2のシグナリングオーバーヘッドを効果的に減らすことができる。エンコーダ/デコーダは、mv1の予測子との差分を(mvd1+mvd0)と決定し、mv2の予測子との差分を(mvd2+mvd0)と決定できる。数学式12及び13において、上にバー(bar)で表示された文字は、CPMVの予測子を表す。
本発明の一実施例によれば、エンコーダ/デコーダは、次の数学式14に基づいてモーションベクトル差分を決定することができる。このとき、上述した数学式12及び13が適用されてよい。
一実施例において、前述した表1又は後述する表2によってモーションベクトル差分がシグナルされてよい。そして、前記シグナルされるモーションベクトル差分は、数学式14のlMvdであってよい。また、数学式12及び13でシグナルされるmvd、すなわち、mvd0、mvd1、mvd2は、数学式14のlMvdであってよい。数学式14において、MvdLXは、各CPMVの予測子との差を表してよい。すなわち、(mv-mvp)であってよい。このとき、数学式12及び13で説明したように、CPMV 0に対しては、シグナルされたモーションベクトル差分をCPMVに対する差分(MvdLX)として直接使用することができ、他のCPMVに対しては、シグナルされたモーションベクトル差分(数学式12及び13においてmvd1、mvd2)とCPMV 0に対してシグナルされたモーションベクトル差分(数学式12及び13においてmvd0)に基づいて、CPMVの差分であるMvdLXとして使用することができる。
数学式14において、LXは参照リストXを表すことができる。compIdxはコンポーネントインデックスを表し、x、yコンポーネントを示すことができる。cpIdxは、コントロールポイントインデックスを表すことができる。cpIdxは、数学式12及び13で表す0、1又は0、1、2を意味できる。一実施例において、前述した表1、数学式14、表2において、エンコーダ/デコーダは、モーションベクトル差分の解像度(resolution)を考慮することができる。例えば、解像度がRであるとき、数学式14のlMvdとしてlMvd*Rの値が用いられてよい。次の表2に、本発明の一実施例に係るモーションベクトル差分シンタックス構造を例示する。
表2を参照すると、上記の表1で説明したのと実質的に同じ方法でモーションベクトル差分がコードされてよい。このとき、cpIdx及び/又はコントロールポイントインデックスによってそれぞれ個別にモーションベクトル差分に対するコーディングが行われてよい。
図16は、本発明の一実施例に係るサブブロックベースの時間(subblock-based temporal)MVP(SbTMVP)を示す図である。本発明の一実施例によれば、エンコーダ/デコーダは、時間(temporal)隣ブロックのモーションベクトルをサブブロック単位で取り入れる(又は、誘導する)ことができる。例えば、エンコーダ/デコーダは、現在ブロックのサブブロックに該当するモーションベクトルを、他のピクチャから取り入れることができる。ここで、ブロックはCU、サブブロックはsub-CUであってよい。また、他のピクチャはコロケーテッドピクチャ(collocated picture)であってよい。本発明において、前記SbTMVPは、サブブロックベースの時間マージ候補、ATMVP(alternative temporal motion vector prediction)と呼ばれてもよい。
本発明の一実施例によれば、SbTMVPモードが適用される場合、エンコーダ/デコーダは、現在ブロックに対応するブロック(対応ブロック、参照ブロックと呼ぶことができる。)を他のピクチャから探索できる。このとき、前記対応ブロックは、コロケーテッドブロック(collocated block)と呼ぶことができる。一実施例として、コロケーテッドブロックは、現在ブロックの右下端又は中央位置などの既に設定された位置に該当する他のピクチャのブロックと決定されてよい。SbTMVPにおいてコロケーテッドブロックは、モーション補償されたブロックであってよい。例えば、エンコーダ/デコーダは、現在ブロック周辺のモーションベクトルを参照してコロケーテッドブロックを探すことができる。
図16を参照すると、コロケーテッドブロックは、現在ブロックの周辺ブロックのうちA1位置のモーションベクトル分だけ他のピクチャ内で現在ブロック位置から移動した位置のブロックがコロケーテッドブロックとして決定(又は、誘導)されてよい。一実施例として、このとき、コロケーテッドブロックを指示する(又は、向かう)モーションベクトルは、現在ブロック周辺の既に設定された位置を既に設定された順序に従ってスキャンし、探索した候補のモーションベクトルに基づいて誘導されてよい。さらに他の実施例として、コロケーテッドブロックを指示するモーションベクトルは、マージ候補リストの一部に基づいて決定されてよい。例えば、エンコーダ/デコーダは、マージ候補リストにおける最初のマージ候補を用いてコロケーテッドブロックを決定することができる。
また、本発明の一実施例によれば、エンコーダ/デコーダは、コロケーテッドブロックのサブブロックのモーション情報から現在ブロックのサブブロックのモーション情報を決定(又は、誘導)することができる。本明細書において、モーションベクトルは、その表現にもかかわらず、モーションベクトル、参照インデックス、参照リストの用いられるか否かの情報などを含むモーション情報を意味できる。また、現在ブロックのサブブロックのモーション情報のベースとなるコロケーテッドブロックのサブブロックは、互いに、ブロック(CU)内における相対的な位置が同一であってよい。すなわち、両サブブロックはブロック内で同じ相対位置を有することができる。
また、本発明の一実施例によれば、SbTMVPが用いられる場合、サブブロックサイズは、あらかじめ定義されたサイズと固定されてよい。例えば、8×8サイズと固定されてよい。他の実施例として、サブブロックサイズは可変的であってもよい。このとき、可変的なサブブロックサイズを決定するために、シーケンス、ピクチャ、スライス、CTU又はCU単位シグナリングが存在してよい。例えば、サブブロックサイズは、4×4又は8×8サイズと可変的に決定されてよい。
図17は、本発明の一実施例に係るプレーナMVPを例示する図である。本発明の一実施例によれば、エンコーダ/デコーダは、プレーナMVP方法を用いて現在ブロックのサブブロック単位のモーションベクトルフィールドを生成することができる。また、エンコーダ/デコーダは、プレーナMVP方法を用いて周辺のモーションベクトルを参照することができる。また、プレーナMVP方法において、エンコーダ/デコーダは、一つ以上の周辺モーションベクトルを用いて線形加重和(linear weighted summation)に基づいてサブブロックモーションベクトルを決定することができる。このとき、周辺モーションベクトルは、隣接したブロックのモーションベクトルから外挿(extrapolation)したモーション情報を含むことができる。例えば、エンコーダ/デコーダは、現在ブロックの下側又は右側位置のモーションベクトルを、隣接したブロックのモーションベクトルを用いて外挿プロセスを行うことができる。
図17を参照すると、現在ブロックのサブブロックに該当するモーションベクトルP(x,y)は、P_h(x,y)又はP_v(x,y)に基づいて決定されてよい。図17において、W、Hはそれぞれ、現在ブロックの幅、高さを表す。このとき、P_h(x,y)は、L(-1,y)又はR(W,y)に基づいて決定されてよい。L(-1,y)は、現在サブブロックの左側における現在ブロックに隣接した位置のサブブロックに該当するモーションベクトルであってよい。また、R(W,y)は、現在ブロックの右上側の位置に該当するモーションベクトルと現在ブロックの右下側の位置に該当する時間モーションベクトルに基づく値であってよい。P_v(x,y)は、A(x,-1)又はB(x,H)に基づいて決定されてよい。A(x,-1)は、現在サブブロックの上側における現在ブロックと隣接したサブブロックに該当するモーションベクトルであってよい。また、B(x,H)は、現在ブロックの左下端の位置に該当するモーションベクトルと現在ブロックの右下端の位置に該当する右上側モーションベクトルに基づいて加重和された値であってよい。
次の表3に、本発明の一実施例に係るインター予測関連シンタックス構造を例示する。
本発明の一実施例によれば、インター予測方法は、スキップモード、マージモード、インターモードなどを含むことができる。一実施例として、スキップモードでは残差信号が伝送されなくてもよい。また、スキップモードでマージモードと同じMV決定方法が適用されてよい。一例として、スキップモード使用の有無はスキップフラグ(skip flag)(又は、シンタックス要素)によって決定されてよい。表3を参照すると、cu_skip_flag値によってスキップモードの使用されるか否かが決定されてよい。前記cu_skip_flagは、現在CUにスキップモードが適用されるか否かを示す。
一実施例において、マージモードが適用される場合、モーションベクトル差分を使用しなくてもよい。このとき、エンコーダ/デコーダは、モーション候補インデックス(Motion candidate index)に基づいてモーションベクトルを決定することができる。一例として、マージモード使用の有無は、マージフラグ(merge flag)(又は、シンタックス要素)によって決定されてよい。表3を参照すると、マージフラグ(すなわち、merge_flag)値によって、マージモードの適用されるか否かが決定されてよい。また、スキップモードを使用しない場合にマージモードが用いられてよい。
本発明の一実施例によれば、エンコーダ/デコーダは、スキップモード又はマージモードにおいて、一つ以上の候補リストセット中のいずれかを選択的に使用することができる。例えば、前記候補リストセットは、マージ候補を用いた候補リスト及び/又はサブブロックベースのマージ候補を用いた候補リストを含むことができる。また、マージ候補は、空間隣候補(spatial neighboring candidate)、時間隣候補(temporal neighboring candidate)などを含むことができる。また、マージ候補は、現在ブロック(CU)全体に対するモーションベクトルを使用する候補を含むことができる。すなわち、現在ブロックに属する各サブブロックのモーションベクトルが同一である候補を含むことができる。また、サブブロックマージ候補は、サブブロックベースの時間モーションベクトル(subblock-based temporal MV)、アフィンマージ候補などを含むことができる。また、一実施例において、サブブロックマージ候補は、現在ブロック(CU)のサブブロック別に異なるモーションベクトルを使用する候補を含むことができる。一実施例において、アフィンマージ候補は、モーションベクトル差分無しでアフィンモーション予測のCPMVを決定するマージ候補を表すことができる。また、サブブロックマージ候補は、現在ブロックにおいてサブブロック単位でモーションベクトルを決定する方法を含むことができる。例えば、サブブロックマージ候補は、先に言及したサブブロックベースの時間MVとアフィンマージ候補の他にも、プレーナMV、回帰ベースの(regression based)MV、STMVPなどを含むことができる。
本発明の一実施例によれば、インターモードにおいて、エンコーダ/デコーダはモーションベクトル差分を用いることができる。モーション候補インデックスに基づいてモーションベクトル予測子を決定し、前記モーションベクトル予測子とモーションベクトル差分に基づいてモーションベクトルを決定することができる。インターモード使用の有無は、他のモードの使用の有無によって決定されてよい。さらに他の実施例として、インターモード使用の有無は、フラグ(又は、シンタックス要素)によって決定されてよい。表3では、他のモードであるスキップモードとマージモードを使用しない場合にインターモードを使用する例を仮定する。一実施例において、インターモードは、AMVPモード、アフィンインターモードなどを含むことができる。インターモードは、モーションベクトル予測子とモーションベクトル差分に基づいてモーションベクトルを決定するモードでよい。アフィンインターモードにおいて、エンコーダ/デコーダは、アフィンモーション予測のCPMVを決定するとき、モーションベクトル差分を用いることができる。
表3を参照すると、エンコーダ/デコーダは、スキップモード又はマージモードと決定した後、サブブロックマージ候補を使用するか又はマージ候補を使用するかを決定することができる。例えば、デコーダは、特定条件を満たす場合、サブブロックマージ候補を使用するか否かを示すmerge_subblock_flagをパースすることができる。このとき、前記特定条件はブロックサイズと関連した条件であってよい。例えば、幅、高さ、領域などに関する条件であってよく、これらの条件が組み合わせられた条件であってもよい。
表3を参照すると、例えば、前記特定条件は、現在ブロック(CU)の幅及び高さが特定値以上であるか否かであってよい。merge_subblock_flagをパースしない場合、エンコーダ/デコーダはその値を0と推論(infer)できる。エンコーダ/デコーダは、仮にmerge_subblock_flagが1である場合、サブブロックマージ候補を使用し、0である場合、マージ候補を使用することができる。サブブロックマージ候補を使用する場合、候補リスト(サブブロックマージ候補リスト)内の特定候補を示すインデックス(又は、シンタックス要素)を表すmerge_subblock_idxをパースすることができ、マージ候補を使用する場合に、候補リスト(マージ候補リスト)内の特定候補を示すインデックスを表すマージインデックスをパースすることができる。エンコーダ/デコーダは、この時、候補リストの最大個数が1である場合にはパースしなくてもよい。すなわち、エンコーダ/デコーダは、候補リストの最大個数が1よりも大きい場合にインデックスをパースすることができる。merge_subblock_idx又はマージインデックスをパースしない場合には、エンコーダ/デコーダは、その値を0と推論することができる。
上述の表3は、コーディングユニット関数を例示し、イントラ予測(intra prediction)関連内容は省略されたものであってよい。表3は、インター予測が適用されると決定された場合の例示であってよい。
以下に、本発明の一実施例に係るサブブロックマージ候補リスト構成方法を説明する。上述の表3でサブブロックマージ候補について説明しており、以下ではサブブロックマージ候補リスト構成方法を説明する。本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロックのサイズ又はサブブロックサイズを考慮して、候補を候補リストに追加するか否かを決定することができる。上述したサイズは、ブロック又はサブブロックの幅又は高さ又は領域などに基づいて定義されてよい。
一実施例において、サブブロックマージ候補に属し得る多数の候補があり、前記多数の候補のサブブロックサイズが異なる場合、現在ブロックのサイズを考慮して候補リストに追加されるか否かを決定することができる。また、ある候補に対して現在ブロックのサイズを考慮する条件は、前記ある候補のサブブロックサイズに基づくことができる。ここで(候補リスト追加前の)候補は、いずれかのMVP方法、モードなどを表すことができ、MVP又はMVを作る方法のいずれをも含むことが可能であり、候補リストに追加される候補は、現在ブロックに対して使用可能な候補、MVP方法、モードなどを表すことができる。
本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロックのブロックサイズ条件によって、ある候補を候補リストに追加するか否かを決定することができる。例えば、エンコーダ/デコーダは、現在ブロックのサイズがあるブロックサイズの臨界値(threshold)以上であるか否かによって、候補を候補リストに追加するか否かを決定することができる。また、前記ブロックサイズ条件又は臨界値は、前記ある候補のサブブロックサイズによって決定されてよい。これは、サブブロックベースの予測方法は、サブブロックサイズよりも大きいか、サブブロックサイズよりも十分に大きいブロックにおいてサブブロックベースの予測を用いて圧縮効率を上げることができるためである。例えば、サブブロックサイズと同一であるか或いはサブブロックサイズよりも小さいブロックの場合、サブブロックベースの予測を適用するとしてもサブブロック単位のモーション情報が取得できず、結果的に圧縮効率に寄与できないことがある。
一実施例において、現在ブロックのサイズが既に設定されたサイズであるか又は既に設定されたサイズ未満であるとき、エンコーダ/デコーダは第1候補リストを構成し、現在ブロックが前記既に設定されたサイズ以上のとき、第2候補リストを構成することができる。また、候補リスト2に属する候補種類は、候補リスト1に属する候補種類を含むことができる。例えば、第1モードのサブブロックサイズは第1サブブロックサイズに設定され、第2モードのサブブロックサイズは第2サブブロックサイズに設定された場合、エンコーダ/デコーダは、現在ブロックが既に設定されたサイズであるとき、第2モードだけを候補リストに追加でき、現在ブロックが既に設定されたサイズよりも大きいとき、第1モードと第2モードの両方を候補リストに追加することができる。例えば、前記第1サブブロックサイズは8×8であり、前記第2サブブロックサイズは4×4であってよい。また、前記既に設定されたサイズは8×8であってよい。又は、前記既に設定されたサイズは、幅(又は、高さ)が8であってよい。また、一例として、前記第1モードはSbTMVPであり、第2モードはアフィンマージモードであってよい。
一実施例において、サブブロックベースのマージ候補リストは、下記のような方法で構成(又は、生成)されてよい。以下において、まず、i=0に設定されてよい。
- 仮に、(availableFlagSbCol && blockSizeCondition)値が真であれば、subblockMergeCandList[i++]は、SbColに設定される。すなわち、SbColが候補リストに追加されてよい。ここで、subblockMergeCandList[i++]は、サブブロックマージ候補リスト内でi++番目のサブブロックマージ候補を表し、SbColは、サブブロックベースの時間マージ候補(又は、SbTMVP)を表す。
- 仮に、(availableFlagA && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Aに設定される。すなわち、A候補(又は、A位置の候補)が次の候補として追加されてよい。
- 仮に、(availableFlagB && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Bに設定される。すなわち、B候補が次の候補として追加されてよい。
- 仮に、(availableFlagConst1 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const1に設定される。すなわち、Const1候補が次の候補として追加されてよい。Const1は、前述した構成された候補のうち一番目の候補を表す。
- 仮に、(availableFlagConst2 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const2に設定される。すなわち、Const2候補が次の候補として追加されてよい。Const2は、前述した構成された候補のうち二番目の候補を表す。
- 仮に、(availableFlagConst3 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const3に設定される。すなわち、Const3候補が次の候補として追加されてよい。Const3は、前述した構成された候補のうち三番目の候補を表す。
- 仮に、(availableFlagConst4 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const4に設定される。すなわち、Const4候補が次の候補として追加されてよい。Const4は、前述した構成された候補のうち四番目の候補を表す。
- 仮に、(availableFlagConst5 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const5に設定される。すなわち、Const5候補が次の候補として追加されてよい。Const5は、前述した構成された候補のうち五番目の候補を表す。
- 仮に、(availableFlagConst6 && i<MaxNumSubblockMergeCand)値が真であれば、subblockMergeCandList[i++]は、Const6に設定される。すなわち、Const6候補が次の候補として追加されてよい。Const6は、前述した構成された候補のうち六番目の候補を表す。
本発明の一実施例によれば、エンコーダ/デコーダは、あらかじめ定義されたブロックサイズ条件を満たす場合にのみ、SbCol候補を、候補リストであるsubblockMergeCandListに追加している。一実施例において、SbTMVPを候補リストに追加するか否かを決定するブロックサイズ条件は、SbTMVPのサブブロックサイズによって決定されてよい。例えば、具体的に、ブロックサイズ条件は、(cbWidth>=16 && cbHeight>=16)であってよい。ここで、cbWidthは現在コーディングブロックの幅、cbHeightは現在コーディングブロックの高さを表す。また、A、B、Const1、Const2、Const3、Const4、Const5、Const6は、アフィンマージ候補であってよい。A、Bは、アフィン相続候補であり、ConstX(Xは1~6のいずれか一つ)は、アフィン構成された候補であってよい。
他の実施例において、エンコーダ/デコーダは、現在ブロックのブロックサイズ条件によって、候補インデックスをパースするか否かを決定することができる。例えば、多数の候補が存在するとき、前記多数の候補のうち1個を除いて全ての候補がブロックサイズ条件及び他の条件によって候補リストに追加されない場合、エンコーダ/デコーダは、候補インデックスをパースしなくてもよい。例えば、候補リストに追加できる候補が2個である場合、エンコーダ/デコーダは、ブロックサイズ条件によって候補インデックスをパースするか否かを決定することができる。例えば、候補リストに追加できる候補2個のうちの1個がブロックサイズ条件を満たさない場合、エンコーダ/デコーダは、候補インデックスをパースしなくてもよい。
次の表4には、本発明の一実施例に係るインター予測関連シンタックスを例示する。
本発明の一実施例によれば、現在ブロックのサイズがサブブロックサイズよりも大きい場合にサブブロックモードを使用することができる。例えば、サブブロックマージ候補リストに追加できる候補が多数あり、その多数の候補のサブブロックサイズが等しいとき、現在ブロックのサイズがサブブロックサイズよりも大きいとサブブロックマージモードを使用することができる。具体的な例として、サブブロックサイズが8×8であり、時現在ブロックサイズが16×16以上である場合(又は、幅又は高さが16以上である場合)、サブブロックモードを使用することができる。サブブロックモードを使用することは、サブブロックモードに該当するモードの使用有無を示すフラグパーシングの有無を示すことができる。また、サブブロックモードに該当するモードの使用有無を示すフラグは、merge_subblock_flag、inter_affine_flagなどであってよい。表4で、上記の表3と重複する説明は省略する。
本発明の一実施例によれば、表4を参照すると、デコーダは、merge_subblock_flag及びinter_affine_flagを、cbWidth>=16、cbHeight>=16を満たす場合にのみパースすることができる。他の実施例として、エンコーダ/デコーダは、現在ブロックサイズがサブブロックサイズよりも大きい場合の他、サブブロックサイズと等しい場合にも、サブブロックモードを使用することができる。これは、サブブロックモードのモーション補償方法がサブブロック以外のモードとは異なることがあるためである。本明細書において、サブブロックベースのマージモードは、サブブロックモードと呼ぶことができる。
次の表5には、本発明の一実施例に係るインター予測関連シンタックスを例示する。
本発明の一実施例によれば、現在ブロックの幅が特定条件を満たすか或いは現在ブロックの高さが特定条件を満たす場合に、サブブロックモードを使用することができる。例えば、現在ブロックの幅又は高さが、サブブロックサイズの一辺のサイズと等しくても、等しくない幅や高さがサブブロックサイズの一辺のサイズ(又は、他の一辺のサイズ)よりも大きければ、現在ブロック内に多数のサブブロックが存在し得るためである。したがって、現在ブロックの幅がサブブロックの幅よりも大きいか、或いは現在ブロックの高さがサブブロックの高さよりも大きい場合に、サブブロックモードを使用することができる。又は、現在ブロックの幅がサブブロックの幅よりも大きいか等しい場合、又は現在ブロックの高さがサブブロックの高さよりも大きいか等しい場合に、サブブロックモードを使用することができる。表5において、上記の表3及び表4と重複する説明は省略する。表5を参照すると、現在ブロックの幅が8以上であるか、或いは現在ブロックの高さが8以上である場合、エンコーダ/デコーダは、サブブロックマージモードを使用することができる。また、現在ブロックの幅が16以上であるか、或いは現在ブロックの高さが16以上であるとき、デコーダはアフィンインターモードを使用することができる。
次の表6及び表7には、本発明の一実施例に係るサブブロックマージ関連シンタックスを例示する。
本発明の一実施例によれば、第1単位において特定モードの使用されるか否かがシグナルされてよい。また、使用されると前記シグナリングが指示した場合、エンコーダは、第1単位に属する第2単位において前記どのモードを実際に使用するかをデコーダにシグナルすることができる。この場合、第1単位におけるシグナリング値によって、第2単位においてシンタックス要素に対するパーシングの有無が決定されてよい。例えば、前記第1単位は、シーケンス、ピクチャ、スライス、タイルなどでよく、前記第2単位は、CTU、CUなどでよい。一実施例において、前記特定モードは、サブブロックモードであってよい。また、第1単位は上位単位と、第2単位は下位単位と呼ぶことができる。
表6は、サブブロックモードに属するモードのサブブロックサイズがいずれも同一であるか或いはサブブロックサイズの差異を考慮しない場合の、サブブロックモード使用の有無に対するシグナリングパーシングプロセスを表す。本発明の一実施例によれば、サブブロックモードに属するモードが多数存在し、サブブロックモードに該当するモードの上位単位の使用可否シグナリングも多数存在する場合、前記多数の上位単位の使用可否シグナリングのうち少なくとも一つが、使用可能であると指示すると、下位単位においてサブブロックモードを使用することができる。また、上位単位の使用可否シグナリングは、多数のモードに該当し得る。例えば、参照する隣ブロックの位置によって異なるモードが存在するとき、これらのモードの多数に対する上位単位の使用可能か否かがシグナルされてよい。また、このとき、ブロックサイズ条件などの条件と組み合わせて適用されてよい。本明細書において、サブブロックモードが使用可能であることは、サブブロックモード使用の有無を示すシグナリングをパースすることを意味でき、これについては、上の実施例を参照できる。
表6を参照すると、デコーダは、サブブロックマージモードに属するアフィンマージモードとSbTMVPの使用可能か否かを示すsps_affine_enabled_flagとsps_sbtmvp_enabled_flagのうち少なくとも一つが1である場合にのみ、merge_subblock_flagをパースすることができる。
表7を参照すると、サブブロックモードに属するモードのサブブロックサイズがそれぞれ異なってもよい場合、デコーダは、それを考慮して、サブブロックモードの使用されるか否かを示すシンタックス要素をパースすることができる。本発明の一実施例によれば、サブブロックモードに属するあるモードの上位単位の使用可否シグナリングと前記モードのブロックサイズ条件を全て満たす場合、エンコーダ/デコーダはサブブロックモードを使用することができる。例えば、サブブロックモードに属する第1モード及び第2モードが存在し、第1モードに該当する上位単位の使用可能か否かを示す第1シグナリング及び第2モードに該当する上位単位の使用可能か否かを示す第2シグナリングが使用され、第1モードの第1ブロックサイズ条件と第2モードの第2ブロックサイズ条件があるとき、上位単位の使用可能か否かを示す第1シグナリングが、使用可能であることを指示し、第1ブロックサイズ条件を満たすと、エンコーダ/デコーダは、サブブロックモードを使用することができる。そして、上位単位の使用可能か否かを示す第2シグナリングが、使用可能であることを指示し、第2ブロックサイズ条件を満たすと、エンコーダ/デコーダはサブブロックモードを使用することができる。
一実施例として、表7を参照すると、サブブロックマージモードに含まれるアフィンマージモード及びSbTMVPの使用可能か否かをそれぞれ示すシンタックス要素であるsps_affine_enabled_flagとsps_sbtmvp_enabled_flagが、エンコーダからデコーダにシグナルされてよい。この時、デコーダは、次の数学式15の条件を満たす場合、merge_subblock_flagをパースするようになっている。同様に、エンコーダは、次の数学式15を満たす場合、merge_subblock_flagをシンタックスシグナルすることができる。
また、表7では、アフィンマージモードのブロックサイズ条件が(cbWidth>=8 && cbHeight>=8)であり、SbTMVPのブロックサイズ条件が(cbWidth>=16 && cbHeight>=16)である場合を例示する。
次の表8は、表7の条件が用いられる他の例を表すシンタックスである。
サブブロックモードに属する第1モード及び第2モードがあり、第1モードに該当する上位単位の使用可能か否かを示す第1シグナリングと第2モードに該当する上位単位の使用可能か否か示す第2シグナリングがあり、第1モードの第1ブロックサイズ条件1と第2モードのブロックサイズ条件2があるとき、仮に第1ブロックサイズ条件が第2ブロックサイズ条件に含まれる場合(すなわち、第1ブロックサイズ条件を満たすと第2ブロックサイズ条件を満たす場合)、次の数学式16のように、エンコーダ/デコーダはサブブロックモードを使用することができる。
他の実施例において、全てのサブブロックモードに該当する上位単位使用可否シグナリングが存在してよい。又は、全てのサブブロックマージモードに該当する上位単位使用可否シグナリングが存在してもよい。この場合、デコーダは、上位単位使用可否シグナリングが、使用可能であると指示する場合にのみ、下位単位シグナリングをパースすることができる。本発明の一実施例によれば、エンコーダ/デコーダは、サブブロックサイズによってサブブロックモードを使用するブロックサイズ条件を設定することができる。このとき、仮にサブブロックサイズが可変的である場合、エンコーダ/デコーダは、可能なサブブロックサイズのうち、大きいサイズに基づいてブロックサイズ条件を設定することができる。
次の表9及び表10には、本発明の一実施例に係るサブブロックマージ関連シンタックスを示す。
本発明の一実施例によれば、第1単位において特定モードの使用可能か否かがシグナルされてよい。また、前記シグナリングによって使用可能であると指示した場合、エンコーダは、第1単位に属する第2単位において前記どのモードを実際に使用するかをデコーダにシグナルすることができる。この場合、第1単位におけるシグナリング値によって第2単位においてシンタックス要素に対するパーシングの有無が決定されてよい。例えば、前記第1単位は、シーケンス、ピクチャ、スライス、タイルなどでよく、前記第2単位は、CTU、CUなどでよい。一実施例において、前記特定モードは、サブブロックモードであってよい。また、第1単位は上位単位と、第2単位は下位単位と呼ぶことができる。また、上位単位使用可否シグナリングは、モード多数に該当し得る。例えば、参照する隣ブロック位置によってそれぞれ異なるモードが存在するとき、これらのモードの多数に対する上位単位使用可否シグナリングが存在してよい。
本発明の一実施例によれば、上位単位使用可否シグナリングを参照して、候補インデックスパーシングの有無を決定することができる。例えば、多数の上位単位使用可否シグナリングのうち一つ以上が、使用可能であると指示する場合、候補インデックスをパースすることができる。一実施例として、多数のモード(このとき、前記モードは、候補リスト内の候補として含まれる単位を表すことができる。)に該当する上位単位使用可否シグナリングが存在してよい。本明細書において、前記多数のモードに該当する上位単位使用可否シグナリングは、第1フラグ、第2フラグ、第3フラグなどで示すことができる。また、一つのモード(候補;候補リストの一つの位置を占め得る単位)に該当する上位単位使用可否シグナリングが存在してよい。本明細書において、前記一つのモードに該当する上位単位使用可否シグナリングをAフラグ、Bフラグ、Cフラグと呼ぶことができる。
本発明の一実施例によれば、多数のモードに該当する上位単位使用可否シグナリングのうち少なくとも一つが、使用可能であると指示する場合、エンコーダ/デコーダは、候補インデックスをパースすることができる。すなわち(第1フラグ||第2フラグ||第3フラグ、…)のとき(すなわち、フラグ値1が、使用可能を示す場合)、エンコーダ/デコーダは、候補インデックスをパースすることができる。
また、仮に一つのモードに該当する上位単位使用可否シグナリングが0個又は1個存在する場合、又は上位単位使用可否シグナリングがないモードが0個又は1個存在する場合に、多数のモードに該当する上位単位使用可否シグナリングのうち少なくとも一つが、使用可能であると指示すると、エンコーダ/デコーダは、候補インデックスをパースすることができる。すなわち、(第1フラグ||第2フラグ||第3フラグ、…)のとき(フラグ値1が、使用可能を示す場合)、エンコーダ/デコーダは候補インデックスをパースすることができる。
仮に、一つのモードに該当する上位単位使用可否シグナリングが1個存在し、上位単位使用可否シグナリングがないモードが1個存在する場合には、前記一つのモードに該当する上位単位使用可否シグナリングが、使用可能であることを指示すると、エンコーダ/デコーダは、候補インデックスをパースすることができる。この時、多数のモードに該当する上位単位使用可否シグナリングの値と関係しなくてよい。したがって、このような場合、多数のモードに該当する上位単位使用可否シグナリングの多数と一つのモードに該当する上位単位使用可否シグナリングのうち少なくとも一方が、使用可能であることを指示すると、エンコーダ/デコーダは、候補インデックスをパースすることができる。すなわち、(第1フラグ||第2フラグ||第3フラグ、…||Aフラグ)のとき(フラグ値1が使用可能を示す場合)、エンコーダ/デコーダは候補インデックスをパースすることができる。
仮に候補インデックスをパースしない場合、エンコーダ/デコーダは、候補リストの唯一の候補を使用することができる。又は、候補インデックスをパースしない場合、エンコーダ/デコーダは、候補インデックスを0と推論することができる。
表9を参照すると、アフィンマージモードとSbTMVPがサブブロックマージモードに該当してよく、アフィンマージモードはこの方法から多数の候補として構成されてよい。また、アフィンマージモードに該当する上位単位の使用可能か否かは、sps_affine_enabled_flagシンタックス要素によってシグナルされてよい。このような場合、sps_affine_enabled_flagが、使用可能であると指示する場合、エンコーダ/デコーダは、候補インデックスであるmerge_subblock_idxをパースすることができる。
本発明の一実施例によれば、仮に一つのモードに該当する上位単位使用可否シグナリングが2個以上存在する場合、一つのモードに該当する上位単位使用可否シグナリングの多数のうち少なくとも2個が、使用可能であると指示すると、エンコーダ/デコーダは、候補インデックスをパースすることができる。すなわち(Aフラグ+Bフラグ+Cフラグ+…>=2)のとき(フラグ値1が使用可能を指示する場合)、エンコーダ/デコーダは候補インデックスをパースすることができる。この場合、上位単位使用可否シグナリングがないモードが存在しなくてもよい。
仮に、一つのモードに該当する上位単位使用可否シグナリングが2個以上存在し、多数のモードに該当する上位単位使用可否シグナリングが存在する場合、一つのモードに該当する上位単位使用可否シグナリングの多数のうち少なくとも2個が、使用可能であると指示するか、或いは多数のモードに該当する上位単位使用可否シグナリングの多数のうち少なくとも1個が使用可能であると指示すると、エンコーダ/デコーダは候補インデックスをパースすることができる。すなわち((第1フラグ||第2フラグ||第3フラグ…)||(Aフラグ+Bフラグ+Cフラグ+…>=2))のとき(フラグ値1が使用可能を示す場合)、エンコーダ/デコーダは候補インデックスをパースすることができる。この場合、上位単位使用可否シグナリングがないモードが存在しなくてもよい。
上位単位使用可否シグナリングがないモードが1個存在する場合、上記において、一つのモードに該当する上位単位使用可否シグナリングの多数のうち少なくとも2個が使用可能であることを指示するときではなく、少なくとも1個が使用可能であることを指示するとき、候補インデックスをパースすることができる。すなわち(Aフラグ+Bフラグ+Cフラグ+…>=2))ではなく(Aフラグ||Bフラグ||Cフラグ+…)のとき、エンコーダ/デコーダは候補インデックスをパースすることができる。
表10を参照すると、サブブロックマージモードは、アフィンマージモードとSbTMVP、プレーナMVPを含むことができる。アフィンマージモードは多数の候補として構成されてよい。SbTMVPは、1個の候補として構成されてよい。プレーナMVPは、1個の候補として構成されてよい。また、それぞれ、sps_affine_enabled_flag、sps_sbtmvp_enabled_flag、sps_planar_enabled_flagシンタックス要素を用いて、アフィンマージモード、SbTMVP、プレーナMVPに該当する上位単位の使用可能か否かがシグナルされてよい。この場合、sps_affine_enabled_flagが使用可能であると指示したり、或いはsps_sbtmvp_enabled_flagとsps_planar_enabled_flagの両方が使用可能である(又は、sps_sbtmvp_enabled_flagとsps_planar_enabled_flagのうち2個以上が使用可能である)と指示する場合、エンコーダ/デコーダは、候補インデックスであるmerge_subblock_idxをパースすることができる。本発明において、sps_sbtmvp_enabled_flagとsps_planar_enabled_flagがいずれも使用可能を示すことは、(sps_sbtmvp_enabled_flag+sps_planar_enabled_flag>=2)と表現されてもよい。
本発明の一実施例に係るSbTMVP使用可能条件は、次のような方法によって誘導されてよい。以下、availableFlagSbColは、SbTMVPの使用可能か否かを示すパラメータ(又は、フラグ)を表す。
- 仮に、一つ以上の次の条件が真であれば、availableFlagSbColは0に設定されてよい。
1)tile_group_temporal_mvp_enable_flagが0の場合。
2)sps_sbtmvp_flagが0の場合。
3)cbWidthが8よりも小さい場合。
4)cbHeightが8よりも小さい場合。
本発明の一実施例によれば、SbTMVPが使用可能か否かは、利用可能性フラグ(availability flag)によって表現されてよい。SbTMVPが使用可能か否かを示す利用可能性フラグは、availableFlagSbColであってよい。また、SbTMVPは、SbColと呼ぶこともできる。また、利用可能性フラグが1である場合、使用可能であることを指示し、利用可能性フラグが0である場合、使用できないことを指示する。
本発明の一実施例によれば、SbTMVPを使用できない条件が存在してよい。一実施例として、前述した上位単位シグナリングに基づいてSbTMVPを使用不可能であってもよい。現在ブロック又はCU又はPUに対する上位単位は、スライス、タイル、タイルグループ、シーケンス、ピクチャ、CTUなどであってよい。前記上位単位シグナリングは、tile_group_temporal_mvp_enable_flagを含むことができる。例えば、tile_group_temporal_mvp_enable_flagは、時間モーションベクトル(又は、時間モーションベクトルprediction)が使用可能か否かを示すフラグを表す。SbTMVPは、時間モーションベクトルを使用する技術であり得るので、時間MV使用が使用可能として設定されていないと、SbTMVPが使用不可能であってもよい。また、上位単位シグナリングは、sps_sbtmvp_flagを含むことができる。例えば、sps_sbtmvp_flagは、SbTMVPを使用できるか否かを示すフラグであってよい。
他の実施例において、ブロックサイズに基づいてSbTMVPが使用不可能であってもよい。前記ブロックサイズは、ブロックの幅、ブロックの高さ、又はブロックの幅や高さに基づく値などを含むことができる。また、ブロックの幅又は高さに基づく値は、ブロックの領域などを含むことができる。ブロックの幅又は高さが臨界値よりも小さい場合、SbTMVPが使用不可能であってもよい。一実施例として、前記臨界値はサブブロックの幅又は高さであってよい。例えば、前記臨界値は8に設定されてよい。
前述したSbTMVPを使用できない条件を満たすと、エンコーダ/デコーダは、SbTMVPに該当する利用可能性フラグを0に設定できる。また、そうでない場合、追加の動作を行って利用可能性フラグを決定することができる。
図18は、本発明の一実施例に係る臨時モーションベクトルの決定方法を示す図である。本明細書において、前述したコロケーテッドブロックを表すモーションベクトルを臨時モーションベクトルと呼ぶ。前記臨時モーションベクトルは、その名称に制限されず、初期モーションベクトル、時間モーションベクトル、サブブロックベースのマージベースモーションベクトル(subblock-based temporal merging base MV)又はベースモーションベクトルと呼ぶことができる。すなわち、エンコーダ/デコーダは、初期モーションベクトル、時間モーションベクトル、サブブロックベースのマージベースモーションベクトル又はベースモーションベクトルに基づいて前述したコロケーテッドブロックを特定するモーションベクトルを決定することができる。
本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロック周辺の位置のモーション情報に基づいて臨時モーションベクトルを決定することができる。また、前記現在ブロック周辺の位置は、既に設定された位置であってよい。また、前記現在ブロック周辺の位置は、マージ候補の空間候補位置を含むことができる。又は、前記現在ブロック周辺の位置は、AMVP候補の空間候補位置を含むことができる。
図18を参照すると、A0、A1、B0、B1、B2に該当する位置は、既に設定されていてよい。また、ここでの位置は、輝度位置を意味できる。現在ブロックの左上端位置を(xCb,yCb)とするとき、A0、A1、B0、B1、B2はそれぞれ、(xCb-1,yCb+cbHeight)、(xCb-1,yCb+cbHeight-1)、(xCb+cbWidth,yCb-1)、(xCb+cbWidth-1,yCb-1)、(xCb-1,yCb-1)でよい。このとき、cbWidth、cbHeightはそれぞれ、現在ブロックの幅と高さであってよい。また(xCb,yCb)は、共有マージリスト領域の左上端位置であってよい。多数のブロックが同一のマージ候補リストを使用するとき、その多数のブロック領域が共有マージリスト領域であってよい。また、既に設定された位置に該当する既に設定された参照順序が存在してよい。次の表11に、前記既に設定された参照順序を例示する。
表11を参照すると、既に設定された位置は、predefinedPosition1、predefinedPosition2、...、predefinedPositionNなどであってよい。また、predefinedPosition1、predefinedPosition2、...、predefinedPositionNの順に参照順序が既に設定されていてよい。前記参照順序は、マージ候補リストコンストラクション(construction)の参照順序の順方向又は逆方向であってよい。又は、前記参照順序は、AMVP候補リストコンストラクションの参照順序の順方向又は逆方向であってよい。例えば、参照位置及び参照順序は、A1、B1、B0、A0であってよい。又は、predefinedPosition1、predefinedPosition2、...、predefinedPositionNは、既に設定された位置に該当するモーション情報を表すものでよい。
表11で、臨時モーションベクトルはゼロモーションベクトルに設定されてよい。また、仮に既に設定された位置のモーション情報を使用できない場合、エンコーダ/デコーダは、臨時モーションベクトルをゼロモーションベクトルに設定できる。また、既に設定された位置のモーション情報が使用可能である場合、前記既に設定された位置のモーション情報を臨時モーションベクトルに設定できる。また、使用可能であるとの意味は、該当の位置がイントラ予測でない場合を含むことができる。又は、使用可能であるとの意味は、該当の位置がインター予測である場合を含むことができる。又は、使用可能であるとの意味は、該当の位置のモーション情報の参照ピクチャが現在ブロックに該当するコロケーテッドピクチャと同一であることを含むことができる。又は、使用可能であるとの意味は、該当の位置のモーション情報の参照ピクチャが現在ブロックに該当する参照ピクチャと同一であることを含むことができる。
表11で、既に設定された位置のうち、第1使用可能条件1を満たす一番目の該当の位置のモーション情報に対して第2使用可能条件を満たすか否か確認し、第2使用可能条件を満たす場合、エンコーダ/デコーダは、該当の位置のモーション情報を臨時モーションベクトルに設定できる。その他の場合は、エンコーダ/デコーダは、臨時モーションベクトルをゼロモーションベクトルに設定できる。これを、擬似コード(pseudo code)で表すると、次の表12の通りでよい。
前記実施例において、第1使用可能条件を満たす既に設定された位置のうち一番目の位置だけを臨時モーションベクトルとして使用可能にするためには、上の表12でelse if構文が用いられてよい。また、第1使用可能条件、第2使用可能条件は、上述した使用可能であることの意味であってよい。例えば、第1使用可能条件は、該当の位置がインター予測を使用したことを意味できる。また、第2使用可能条件は、該当の位置のモーション情報の参照ピクチャが現在ブロックに該当するコロケーテッドピクチャと同一であることを意味できる。前記実施例では、仮にある位置が第1使用可能条件を満たし、第2使用可能条件を満たさない場合、前記ある位置よりも後に参照する位置を確認しなくてもよい。
他の実施例において、エンコーダ/デコーダは、既に設定された位置のうち、第1使用可能条件と第2使用可能条件をいずれも満たす一番目の該当の位置のモーション情報を臨時モーションベクトルに設定できる。それ以外の場合、エンコーダ/デコーダは、臨時モーションベクトルをゼロモーションベクトルに設定できる。これを、擬似コードで表すと、次の表13の通りでよい。
表13において、仮に、ある位置が第1使用可能条件を満たし、第2使用可能条件を満たさない場合、エンコーダ/デコーダは、前記ある位置よりも後に参照する位置も確認することができる。
また、本発明の一実施例によれば、既に設定された位置は、一つのみ存在してよい。このような場合を擬似コードで表すと、次の表14の通りでよい。
すなわち、エンコーダ/デコーダは、一つの既に設定された位置に該当するモーション情報が使用可能である場合、臨時モーションベクトルを当該モーション情報に設定し、そうでない場合、臨時モーションベクトルをゼロモーションベクトルに設定できる。一実施例として、前記一つの既に設定された位置は、現在ブロックの左側位置でよい。すなわち、前記一つの既に設定された位置のx座標は、現在ブロック内部の左側座標よりも小さくてよい。例えば、前記一つの既に設定された位置は、A1位置であってよい。
上述した実施例では、使用可能条件を第1使用可能条件及び第2使用可能条件の2種類を使用する例を示したが、本発明はこれに限定されず、より多くの使用可能条件が存在する場合を含むことができる。また、モーション情報は、モーションベクトル(mvLX)、参照インデックス(refIdxLX)、予測使用フラグ(prediction utilization flag)(predFlagLX)などを含むことができる。
また、一実施例において、第2使用可能条件を確認し、臨時モーションベクトルを設定する過程は、次のように行われてよい。すなわち、availableFlagNが真であれば、次のようなプロセスが適用されてよい。
A.仮に、下の全ての条件が真であれば、臨時モーションベクトルはmvL1Nに設定されてよい。
a.predFlagL1Nが1の場合
b.DiffPicOrderCnt(ColPic,RefPicList1[refIdxL1N])が0の場合
c.DiffPicOrderCnt(aPic,currPic)が0よりも小さいか等しい場合、aPicはスライス(又は、タイルグループ)の全参照ピクチャリスト内の全ピクチャを表す
d.tile_group_typeがBと等しい場合
e.collocated_from_l0_flagが0と等しい場合
B.そうでない場合、次の条件がいずれも真であれば、臨時モーションベクトルはmvL0Nに設定されてよい。
a.predFlagL0Nが1の場合
b.DiffPicOrderCnt(ColPic,RefPicList0[refIdxL0N])が0の場合
ここで、availableFlagNが真であることは、第1使用可能条件を満たすことを示すことができる。仮に、上に説明した一つの既に設定された位置だけを使用する実施例では、availableFlagNになり得るパラメータが、前記既に設定された位置に該当するavailableFlagであってよい。例えば、A1位置だけを使用する場合、availableFlagNはavailableFlagA1であってよく、これは、A1位置のモーション情報を使用可能か否かを示す値であってよい。
図19は、本発明の一実施例に係るSbTMVP使用の有無を例示する図である。本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロック1901の位置に基づいて特定モードを使用するか否かを決定することができる。本発明のさらに他の実施例によれば、エンコーダ/デコーダは、現在ブロック1901の属したマージリスト共有領域の位置に基づいて、特定モードを使用するか否かを決定することができる。
本発明の一実施例によれば、エンコーダ/デコーダは、現在ブロック1901の位置に基づいて、SbTMVPを使用するか否かを決定することができる。本発明のさらに他の実施例によれば、現在ブロック1901の属したマージリスト共有領域の位置に基づいて、SbTMVPを使用するか否かを決定することができる。一実施例として、現在ブロック1901の位置又は現在ブロックの属したマージリスト共有領域の位置は、左上端座標であるか、左上端座標を基準に表現されてよい。また、現在ブロック1901の位置又は現在ブロック1901の属したマージリスト共有領域の位置は、上位グループ内における相対的な位置であってよい。上位グループは、ピクチャ、タイル、タイルグループ、CTU、スライスなどを含むことができる。また、上位グループは、現在ブロックの属したグループであってもよい。すなわち、例えば、エンコーダ/デコーダは、現在ブロック1901のピクチャ1902内における位置に基づいて、SbTMVPを使用するか否かを決定することができる。本明細書において、現在ブロック又は現在ブロックのマージリスト共有領域を現在領域と呼ぶことができる。
本発明の一実施例によれば、エンコーダ/デコーダは、現在領域が上位グループの境界に接したか否かに基づいて、SbTMVPを使用するか否かを決定することができる。例えば、現在領域が上位グループの境界に接した場合、SbTMVPを使用しないと判断、決定することができる。又は、図19で説明した現在領域に該当する臨時モーションベクトルを決定するために参照する既に設定された位置が上位グループを外れるかどうかに基づいて、SbTMVPを使用するか否かを決定することができる。例えば、現在領域に該当する臨時モーションベクトルを決定するために参照する既に設定された位置がいずれも上位グループを外れた場合、エンコーダ/デコーダは、SbTMVPを使用しないと判断、決定することができる。また、現在領域に該当する臨時モーションベクトルを決定するために参照する既に設定された位置がいずれも上位グループを外れるかどうかは、現在領域の座標に基づいて決定されてよい。これは、前述した実施例によれば、現在領域に該当する臨時モーションベクトルを決定するために参照する既に設定された位置がいずれも上位グループを外れる場合には、臨時モーションベクトルとしてゼロモーションベクトルが使用され、このため、SbTMVPの予測性能が低下することがあるためである。また、一実施例において、この場合、SbTMVPを使用できないと決定することによって、SbTMVPと同じシンタックス要素でシグナリングする他のモードを、より少ないビット数を用いてシグナルすることができる。例えば、前述したように、SbTMVPとアフィンマージモードは、サブブロックマージモードに含まれてよく、SbTMVPを使用できないと決める場合、アフィンマージモードをより少ないインデックスを用いてシグナルすることができる。したがって、このような場合、インデックス0は常にアフィンマージモードを示すことができる。
図19を参照すると、前述したように、現在領域の臨時モーションベクトルを決定するためにA1位置1903だけを参照することができる。仮に、A1位置1903のモーション情報が使用できない場合、ゼロモーションベクトルを臨時モーションベクトルとして使用することができる。仮に、現在領域がピクチャ1902の左側境界に接した場合、臨時モーションベクトルは常にゼロモーションベクトルであってよい。したがって、現在領域がピクチャ1902の左側境界に接した場合、SbTMVPを使用しないものとすることができる。また、ピクチャ1902の左側境界の他、並列処理可能な単位の左側境界にも接した場合、SbTMVPを使用しないものとすることができる。並列処理可能な単位は、タイル、タイルグループ、スライスなどがあり得る。したがって、現在領域の左上端座標が(xCb,yCb)である場合、xCbが0であれば、エンコーダ/デコーダは、ピクチャ1902の左側境界に接したものでよく、この場合、SbTMVPを使用しないと決定できる。又は、(xCb-(並列処理可能な単位の左側座標))が0である場合、SbTMVPを使用しないとすることができる。
また、一実施例において、仮に、現在領域の臨時モーションベクトルを決定するために現在領域の上端だけを参照する場合、現在領域がピクチャ1902又は並列処理可能な単位の上側境界に接したとき、エンコーダ/デコーダは、SbTMVPを使用しないと設定することができる。
他の追加の実施例において、SbTMVPを使用しないと決定、判断する条件を説明したが、この条件に加えて、ブロックサイズと関連した条件を満たす場合にのみ、SbTMVPを使用しないとしてもよい。すなわち、例えば、現在領域の座標が既に設定された条件を満たし、ブロックサイズと関連した条件を満たす場合に、SbTMVPを使用しないとすることができる。一実施例として、前記ブロックサイズと関連した条件は、現在ブロックのブロックサイズがサブブロックサイズ以下である場合であってよい。現在ブロックサイズがサブブロックサイズ以下である場合、現在ブロックのサブブロックは1個だけであり、この場合、SbTMVPの長所及び性能が減ることがあるためである。例えば、サブブロックサイズは8×8であってよい。したがって、説明した実施例において、次のような実施例が導かれてよい。仮に、現在領域がピクチャの左側境界に接しており、現在ブロックが8×8以下である場合、エンコーダ/デコーダは、SbTMVPを使用しないと決定、判断することができる。ところが、サブブロックマージモードを8×8以上のブロックでのみ使用可能な実施例が存在し得る。この場合、現在領域がピクチャ1902の左側境界に接しており、現在ブロック1901が8×8である場合、SbTMVPを使用しないと決定、判断することができる。
また、本発明の他の実施例において、SbTMVP使用可能条件を示す利用可能性フラグは、前述した条件の他にも、xCbが0であり、現在ブロックの幅及び高さが8であるか否か、が含まれてよい。すなわち、xCbが0であり、現在ブロックの幅及び高さが8である場合、利用可能性フラグは0に設定されてよい。前記条件及び前述した条件をいずれも満たす場合、又はいずれか一つ以上を満たす場合、エンコーダ/デコーダは、利用可能性フラグを0に設定できる。前述したように、SbTMVPが使用可能か否かが、利用可能性フラグによって示されてよい。また、ある条件を満たすとき、SbTMVPが利用不可能であると示すことができる。すなわち、ある条件を満たすとき、エンコーダ/デコーダは、avilableFlagSbColを0に設定できる。したがって、図19で説明した実施例によれば、現在領域の位置に基づいて、エンコーダ/デコーダはavailableFlagSbColを設定することができる。すなわち、エンコーダ/デコーダは、現在領域を表す座標(xCb,yCb)に基づいてavailableFlagSbColを設定することができる。例えば、(xCb,yCb)は現在領域の左上端座標であってよい。
図19で説明したように、現在領域又は現在ブロックがピクチャの左側境界に接している場合、SbTMVPが利用不可能であってよい。したがって、仮にxCbが0の場合、エンコーダ/デコーダは、avilableFlagSbColを0に設定できる。例えば、仮に、現在領域又は現在ブロックがピクチャの左側境界に接しており、現在ブロックが8×8である場合、SbTMVPが利用不可能であってよい。したがって、仮に、xCbが0であり、現在ブロックの幅と高さがいずれも8である場合、エンコーダ/デコーダは、avilableFlagSbColを0に設定できる。
次の表15に、本発明の一実施例に係るサブブロックマージモードシンタックス構造を例示する。
前述したように、サブブロックマージモード(又は、サブブロックベースのマージモード)は、SbTMVP及び/又はアフィンマージモードを含むことができる。また、アフィンモードが使用可能か否かを示すシンタックス要素(又は、フラグ)sps_affine_enabled_flagは、上位レベルのシンタックスを用いてエンコーダからデコーダにシグナルされてよい。一実施例として、前記上位レベルは、シーケンス、ピクチャ、スライス又はCTUレベルのうち少なくとも一つであってよい。また、一実施例において、上の図19で説明したように、SbTMVPが使用(又は、適用)不可能条件があらかじめ定義されてよい。
本発明の一実施例によれば、SbTMVP使用不可能条件を満たし、アフィンモードが使用可能でない場合、エンコーダ/デコーダは、merge_subblock_flagをパースしなくてもよい。例えば、merge_subblock_flagは、サブブロックマージモードを使用することを示すシグナリングであってよい。仮に、merge_subblock_flagが存在しない場合、エンコーダ/デコーダは、その値を0と推論することができる。アフィンモードが使用可能でない場合は、sps_affine_enabled_flagが0である場合であってよい。したがって、SbTMVPを使用可能な場合又はアフィンモードが使用可能な場合にmerge_subblock_flagをパースすることができる。また、merge_subblock_flagをパースする条件は、上述した条件の他に、更なる条件を含むことができる。例えば、表15を参照すると、merge_subblock_flagのパーシングを決定するために、サブブロックマージ候補の最大個数を示すMaxNumSubblockMergeCandと関連した条件、ブロックサイズと関連した条件が共に考慮されてよい。
表15を参照すると、現在ブロックの左上端座標のx値であるx0が0であり、アフィンモードが使用可能か否かを示すsps_affine_enabled_flagが0である場合、merge_subblock_flagをパースしなくてもよい。また、x0が0でないか、sps_affine_enabled_flagが1である場合、merge_subblock_flagをパースすることができる。
また、上述した実施例において、サブブロックマージモードにSbTMVP及びアフィンマージモードが含まれる場合を仮定して説明したが、本発明はこれに限定されず、サブブロックマージモードにさらに他のモードが含まれてもよい。例えば、サブブロックマージモードは、SbTMVPに加えて第1モード、第2モードを含むことができる。また、第1モード、第2モードがそれぞれ使用可能か否かを示すシンタックス要素sps_mode1_enabled_flag、sps_mode2_enabled_flagがシグナルされてよい。この場合、SbTMVP使用不可能条件を満たしながら、第1モード及び第2モードがいずれも使用可能でない場合、エンコーダ/デコーダは、merge_subblock_flagをパースしなくてもよい。この場合、エンコーダ/デコーダは、merge_subblock_flagを0と推論することができる。一実施例として、仮に、SbTMVP使用不可能条件を満たさないか、第1モードが使用可能であるか、又は第2モードが使用可能である場合、エンコーダ/デコーダは、merge_subblock_flagをパースすることができる。また、merge_subblock_flagをパースする条件は、上述した条件に加え、他の条件を含むことができる。表15を参照すると、merge_subblock_flagのパーシングを決定するために、サブブロックマージ候補の最大個数を示すMaxNumSubblockMergeCandと関連した条件、ブロックサイズと関連した条件が共に考慮されてもよい。
また、本発明の一実施例によれば、アフィンモードが使用可能なように設定されていない場合、エンコーダ/デコーダは、MaxNumSubblockMergeCandを1に設定できる。又は、エンコーダ/デコーダは、アフィンモードが使用可能なように設定されておらず、SbTMVPが使用可能なように設定されている場合、MaxNumSubblockMergeCandを1に設定できる。また、アフィンモードが使用可能なように設定されておらず、SbTMVPが使用可能なように設定されていない場合、エンコーダ/デコーダは、MaxNumSubblockMergeCandを0に設定できる。
図20は、本発明の一実施例に係るSbTMVP誘導方法を例示する図である。本発明の一実施例によれば、臨時モーションベクトルを決定するために参照する既に設定された位置は、可変的であってよい。又は、特定ブロックに対する臨時モーションベクトルを決定するために参照する既に設定された位置は、一つに設定されてよく、その位置は可変的であってよい。
一実施例において、現在ブロック2001又は現在領域の位置に基づいて臨時モーションベクトルを決定するための参照位置は可変的に決定されてよい。前記現在領域は、上の図19で説明した領域を表す。例えば、現在領域がピクチャ2002の境界に接しているか、並列処理可能な単位の境界に接している場合、特定位置のモーション情報は常に利用不可能であってよい。したがって、エンコーダ/デコーダは、常に利用不可能な位置以外の位置を、臨時モーションベクトルを決定するために参照する既に設定された位置として設定できる。すなわち、臨時モーションベクトルを決定するために参照する既に設定された位置は、現在領域の位置に基づいて、常に利用不可能でない位置に設定されてよい。前記常に利用不可能な位置は、ピクチャ2002又は並列処理が可能な範囲を外れる位置であってよい。
上の図18で説明した実施例によれば、臨時モーションベクトルを決定するために参照する既に設定された位置は、現在ブロック2001又は現在領域の左側位置と定義されてよい。この場合、上の図19で説明したように、現在ブロック2001又は現在領域が特定位置にある場合、前記既に設定された位置のモーション情報は利用不可能なため、このような既に設定された位置は、左側位置以外の位置に設定(又は、決定)できる。例えば、既に設定された位置は、現在ブロック2001又は現在領域の上側位置2003に設定されてよい。例えば、既に設定された位置は、図18(a)のB1位置であってよい。
また、一実施例において、図20を参照すると、現在ブロック2001又は現在領域がピクチャ2002の左側境界に接しているか、並列処理可能な単位の左側境界に接している場合、臨時モーションベクトルを決定するために参照する既に設定された位置は、現在ブロック2001又は現在領域の上側位置と決定されてよい。現在領域の上側位置は、現在領域のy座標(すなわち、垂直方向座標)よりもy座標が相対的に小さい位置を意味できる。例えば、現在ブロック2001又は現在領域がピクチャ2002の左側境界に接しているか、並列処理可能な単位の左側境界に接している場合、臨時モーションベクトルを決定するために参照する既に設定された位置は、図18(a)のB1位置であってよい。
又は、一実施例において、現在ブロック2001又は現在領域がピクチャ2002の上側境界に接しているか、並列処理可能な単位の上側境界に接している場合、臨時モーションベクトルを決定するために参照する既に設定された位置は、現在ブロック2001又は現在領域の左側位置と決定されてよい。現在領域の左側位置は、現在領域のx座標(すなわち、水平方向座標)よりもx座標が相対的に小さい位置を意味できる。例えば、現在ブロック2001又は現在領域がピクチャ2002の上側境界に接しているか、並列処理可能な単位の上側境界に接している場合、臨時モーションベクトルを決定するために参照する既に設定された位置は、図18(a)のA1位置であってよい。
以上では、サブブロックベースのモーション補償方法を説明した。以下では、モーションベクトル差分を用いるマージモード(merge mode with MVD,MMVD)(又は、マージMVD)に基づくモーション補償方法及び上述したサブブロックベースのモーション補償に関する実施例との組合せ適用方法を説明する。
図21は、本発明の一実施例に係るMMVD適用方法を例示する図である。本発明の一実施例によれば、エンコーダ/デコーダは、モーションベクトル予測子(motion vector predictor,MVP)及びモーションベクトル差分(motion vector difference,MVD)に基づいてモーションベクトル(motion vector,MV)を決定することができる。本明細書において、前記MVPは、ベースモーションベクトル(baseMV)と呼ぶことができる。すなわち、エンコーダ/デコーダは、ベースモーションベクトルにモーションベクトル差分を合算することによってモーションベクトル(すなわち、最終モーションベクトル)を誘導することができる。ただし、本発明がこのような名称に制限されるものではなく、前記MVPは、ベースモーションベクトル、臨時モーションベクトル、初期モーションベクトル、MMVD候補モーションベクトルなどと呼ぶこともできる。前記MVDは、MVPを改善(refine)する値と表現でき、改善モーションベクトル(refineMV)、マージモーションベクトル差分と呼ぶことができる。
本発明の一実施例によれば、MMVDが適用される場合、すなわち、MMVDモードにおいて、MVはベースモーションベクトル、距離(distance)パラメータ(又は、変数)、方向(direction)パラメータ(又は、変数)に基づいて決定されてよい。また、本発明の一実施例によれば、ベースモーションベクトルは候補リストから決定されてよい。例えば、ベースモーションベクトルはマージ候補リストから決定されてよい。また、エンコーダ/デコーダは、他の候補リストの一部からベースモーションベクトルを決定することができる。また、前記候補リストの一部は、前記候補リストの前部の一部(インデックスが小さい方)であってよい。例えば、エンコーダ/デコーダは、マージ候補リストの候補のうち、一番目及び二番目の候補を用いてベースモーションベクトルを決定することができる。そのために、前記2個の候補のうち特定候補を指示する候補インデックスがエンコーダからデコーダにシグナルされてよい。図21を参照すると、ベースモーションベクトルをシグナリングするインデックスであるベース候補インデックスが定義されてよい。エンコーダ/デコーダは、前記ベース候補インデックスによって、候補リストの候補の中から現在ブロックに適用される候補を決定し、決定された候補のモーションベクトルをベースモーションベクトルと決定できる。本発明において、前記ベース候補インデックスはその名称に制限されず、前記ベース候補インデックスは、ベース候補フラグ、候補インデックス、候補フラグ、MMVDインデックス、MMVD候補インデックス、MMVD候補フラグなどと呼ぶことができる。
また、本発明の一実施例によれば、図6及び図7で説明したMVDと異なるMVDが存在してよい。例えば、MMVDにおけるMVDは、図6及び図7で説明したMVDと異なるように定義されてよい。本明細書において、MMVDは、モーションベクトル差分を用いるマージモード(すなわち、モーション補償モード、方法)を表してもよく、MMVDが適用される場合のモーションベクトル差分を表してもよい。例えば、エンコーダ/デコーダは、MMVD適用の有無(又は、使用の有無)を決定することができる。仮に、MMVDが適用される場合、エンコーダ/デコーダは、マージ候補リストから現在ブロックのインター予測に用いられるマージ候補を誘導し、MMVDを誘導して前記マージ候補のモーションベクトルに適用(又は、加算)することによって現在ブロックのモーションベクトルを決定することができる。
一実施例において、前記他のMVDは、簡略化されたMVD、他の(又は、小さい)解像度を有するMVD、利用可能な数が少ないMVD、シグナリング方法が異なるMVDなどを意味できる。例えば、図6及び図7で説明した既存AMVP、アフィンインターモードなどで使用するMVDは、特定シグナリング単位(例えば、x-ペル(pel))に対してx、y軸(すなわち、水平、垂直方向)における全ての領域、例えば、ピクチャに基づく領域(例えば、ピクチャ領域又はピクチャと周辺領域を含む領域)を均等な間隔で全て表すことができるのに対し、MMVDは、特定シグナリング単位を表現する単位が相対的に制限されてよい。また、MMVDをシグナリングする領域(又は、単位)が均等な間隔を持たなくてもよい。また、MMVDは、特定シグナリング単位に対して特定方向だけを示すことができる。
また、本発明の一実施例によれば、MMVDは、距離と方向に基づいて決定されてよい。図21を参照すると、MMVDの距離を示す距離インデックス及びMMVDの方向を示す方向インデックスによるMMVDの距離及び方向が既に設定されてよい。一実施例において、距離は、特定画素単位のMMVDサイズ(例えば、絶対値)を示すことができ、方向は、MMVDの方向を示すことができる。また、エンコーダ/デコーダは、相対的に小さい距離を相対的に小さいインデックスでシグナルすることができる。すなわち、固定長(fixed length)二進化を用いるシグナリングでない場合、エンコーダ/デコーダは、相対的に小さい距離を相対的に少ないビットでシグナルすることができる。
また、本発明の一実施例によれば、MVDは、シグナルされたMV又はシグナルされたMVに基づくMVを使用することができる。例えば、前記シグナルされたMVに基づくMVは、前記シグナルされたMVの符号を反対にしたものでよい。例えば、MVDシグナリングが、ある参照リストに該当する値に基づいてなり、前記ある参照リストと異なる参照リストに該当する値は、前記ある参照リストに該当する値(すなわち、シグナルされたMVD)をそのまま用いたり或いは符号を変えて用いることができる。そのまま用いるか或いは符号を変えて用いるかは、現在ピクチャとある参照リストにおける参照ピクチャ間のピクチャ順序カウント(picture order count,POC)関係、及び現在ピクチャと前記ある参照リストと異なる参照リストにおける参照ピクチャ間のPOC関係によって決定されてよい。より具体的に、参照リストL0とL1を全て使用する場合にもMVDは1個だけシグナルされてよい。例えば、L0に該当するMVDがシグナルされてよい。そして、L1に該当するMVDは、L0に該当するMVDに基づいて決定されてよい。
例えば、L1に該当するMVDは、L0に該当するMVDのままであるか、或いはL0に該当するMVDの符号を変えた値であってよい。また、これは、現在ピクチャとL0参照ピクチャ間のPOC関係及び現在ピクチャとL1参照ピクチャ間のPOC関係によって決定されてよい。例えば、DiffPicOrderCnt(RefPicList0[refIdxLN0],currPic)*DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1])値が0よりも大きいか小さいかによって、L0に該当するMVDをL1にそのまま用いるか或いは変形して用いるかを決定できる。また、DiffPicOrderCnt(RefPicList0[refIdxLN0],currPic)*DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1])が0よりも大きいということは、L0参照ピクチャとL1参照ピクチャがいずれも現在ピクチャよりも時間的に前にあるか或いはいずれも現在ピクチャよりも時間的に後にある意味でよい。
したがって、この場合、L0MVDとL1MVDの符号が同一でよい。また、DiffPicOrderCnt(RefPicList0[refIdxLN0]、currPic)*DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1])が0よりも小さいということは、L0参照ピクチャとL1参照ピクチャのうち一つは、現在ピクチャよりも時間的に前にあり、残りの一つは現在ピクチャよりも時間的に後にある意味でよい。したがって、この場合、L0MVDとL1MVDの符号が異なってよい。また、時間的に前にあることはPOCが小さいこと、時間的に後にあることはPOCが大きいこと、でよい。また、上に説明した実施例において、MVスケーリングプロセスが追加されてよい。すなわち、シグナルされたMV又はシグナルされたMVを変形したMV(例えば、符号を反対にしたMV)をMVスケーリングする過程が追加されてよい。
次の表16は、本発明の一実施例に係るMMVDシンタックス構造を例示する。
本発明の一実施例によれば、上の図21で説明したMMVD使用の有無(又は、適用の有無)を示すシグナリングが存在してよい。表16を参照すると、MMVDフラグ(すなわち、mmvd_flag)は、MMVD使用の有無を示すシンタックス要素を表す。一例として、MMVDは、スキップモード又はマージモードに適用されてよい。一実施例において、MMVDを使用する場合に、デコーダは、MMVD関連シンタックスをパースすることができる。MMVDを使用する場合、MMVD関連情報はMMVDインデックスコーディング(すなわち、mmvd_idx_coding)シンタックスからさらにパースされてよい。
一実施例として、MMVDを使用しない場合、デコーダはマージインデックスをパースすることができる。表16を参照すると、マージインデックス(すなわち、merge_idx)は、マージ候補リストで特定マージ候補を指示するシンタックス要素を表す。また、スキップモード以外のマージモードである場合、マージフラグ(すなわち、マージフラグ)をパースした後に、マージフラグが1である場合、MMVDフラグをパースすることができる。マージフラグは、マージモード又はサブブロックマージモードの使用の有無(又は、適用の有無)を指示することができる。また、マージフラグは、AMVP、インターモード、アフィンインターモードなどを使用しないことを指示することができる。本実施例において、マージインデックスは、上の図21で説明したベース候補インデックスと異なるインデックスであってよい。
また、本発明の一実施例によれば、マージ候補の最大個数を示すシグナリングが存在してよい。また、前記マージ候補の最大個数を示すシグナリングは、CU、予測ユニットよりも大きい単位において行われてよい。例えば、スライス又はタイル単位において前記マージ候補の最大個数を示すシグナリングがあってよい。また、マージ候補の最大個数を示すシグナリングに基づく条件を満たす場合、デコーダは、マージインデックスをパースすることができる。一実施例として、マージ候補の最大個数を示すシンタックス要素の値が、マージ候補の最大個数が1であることを示す場合、エンコーダ/デコーダは、マージインデックスを0と推論することができる。すなわち、マージ候補の最大個数を示すシグナリングが、マージ候補の最大個数が1であると示す場合、マージインデックスのパーシング無しで候補が決定されてよい。
また、表16を参照すると、マージ候補の最大個数を表すシグナリングに基づく値(変数、パラメータ)であるMaxNumMergeCandが定義されてよい。MaxNumMergeCandは、マージ候補の最大個数を意味することができる。MaxNumMergeCandは、1以上の値を有することができる。また、支援可能なマージ候補の最大個数とマージ候補の最大個数を示すシグナリングに基づいて、前記マージ候補の最大個数を示すシグナリング単位に対するマージ候補の最大個数を決定することができる。例えば、支援可能なマージ候補の最大個数からマージ候補の最大個数を示すシグナリング値を減算することによって、エンコーダ/デコーダは、前記マージ候補の最大個数を示すシグナリング単位に対するマージ候補の最大個数を決定することができる。また、マージ候補の最大個数を説明したが、実質的に同一に、サブブロックマージ候補の最大個数及び最大個数シグナリングが存在してよい。
また、一実施例において、マージインデックスは、スキップモード又はマージモードを使用する場合にパースされてよい。デコーダは、スキップモード又はマージモードを使用する条件を満たす場合にマージインデックスをパースすることができる。例えば、サブブロックマージモードを使用しない場合、エンコーダ/デコーダは、スキップモード又はマージモードを使用することができる。上記の表16で、MMVDフラグパーシング後に、マージインデックスがパースされてよい。これは、MMVDを既存のスキップモード又はマージモードよりも優先的に考慮することであり得る。また、サブブロックマージモードを使用するか否かを示すサブブロックマージフラグ(すなわち、subblock_merge_flag)(又は、マージサブブロックフラグ(すなわち、merge_subblock_flag)シンタックス要素がシグナルされてよい。
図22は、本発明の一実施例に係るMMVD関連シンタックス構造を例示する図である。上記の表16で説明した実施例が図22にも同一に適用されてよく、関連して重複する説明は省略する。図22に示すシンタックスは、表16に加えて、サブブロックマージに関連したプロセスをさらに含む。図22及び以下に後述する図面(すなわち、図23~図31)において、イントラ予測プロセス、インター予測のうちインターモード、AMVPモード、アフィンインターモードなどに関する部分が省略されてよい。図22では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
本発明の一実施例によれば、デコーダは、サブブロックマージフラグをMMVDフラグ及び/又はマージインデックスよりも前にパースすることができる。これは、サブブロックマージモードをスキップモード、マージモード及び/又はMMVDのうち少なくとも一つよりも優先的に考慮するための目的である。デコーダは、サブブロックマージモードを使用しない場合に、MMVDフラグ及び/又はマージインデックスなどをパースすることができる。一例として、デコーダは、サブブロックマージフラグをMMVDフラグよりも前にパースすることができ、サブブロックマージモードが適用されない場合、MMVDフラグをパースすることができる。サブブロックマージモードは、相対的にサイズの小さいサブブロック単位でモーション補償が行われるため、モーション予測の正確度が高くなり得、サブブロックに基づくモーション補償の特性のため、一つのMVDを用いたMVの改善は効果的でないことがある。したがって、本発明の実施例によれば、サブブロックマージモードが適用されない場合に限ってMMVD適用の有無を確認することによって圧縮効率を上げることができ、シンタックス(又は、シンタックス要素)のパーシング順序を設定することによって(すなわち、サブブロックマージフラグをMMVDフラグよりも前にパースすることによって)、このような目的を達成することができる。
図23は、本発明の一実施例に係るMMVD関連シンタックス構造を例示する図である。図23に示すシンタックス(又は、関数)は、前述した表16、図22、及び以下に後述するMMVD関連シンタックスで示すMMVD情報をパースするシンタックスを表すことができる。上の図21で説明したように、MMVDは、ベースモーションベクトル、距離、方向に基づいて決定されてよい。そして、このような情報をシグナリングするインデックス(又は、シンタックス要素)が定義されてよい。図23を参照すると、ベースモーションベクトル、距離、方向をシグナリングするためのシンタックス要素が、base_mv_idx、distance_idx、direction_idxと定義されてよい。表16、図22で説明したように、MMVDを使用すると決定された場合、具体的なMMVD値を示す図23のシンタックス要素がエンコーダからデコーダにシグナルされてよい。図23では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
図24は、本発明の一実施例に係るMMVD関連シンタックス構造を例示する図である。図24に示すシンタックス(又は、関数)は、前述した表16、図22、及び以下に後述するMMVD関連シンタックスで示すMMVD情報をパースするシンタックスを表すことができる。本発明の一実施例によれば、MMVD関連シンタックスのうち一部シンタックスは、あらかじめ定義された特定条件を満たす場合にパースすることができる。例えば、MMVDを使用すると決定された後に、前記あらかじめ定義された特定条件を満たす場合、デコーダはMMVD関連シンタックスのうちの一部をパースすることができる。一実施例において、前記MMVD関連シンタックスのうちの一部は、ベースモーションベクトル関連シグナリングであってよい。MMVDを使用すると決定されることは、MMVDフラグ値によることでよい。MMVDフラグをパーシングするか或いはMMVDフラグが推論されて特定値(例えば、1)を示す場合、MMVDを使用すると決定されてよい。図24では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
また、本発明の一実施例によれば、前記特定条件は、ベースモーションベクトル候補として可能な最大個数に関するものであってよい。例えば、デコーダは、ベースモーションベクトル候補として可能な最大個数が2以上である場合、ベースモーションベクトル関連シンタックスをパースし、ベースモーションベクトル候補として可能な最大個数が1である場合に、ベースモーションベクトル関連シンタックスをパースしなくてもよい。ベースモーションベクトル関連シンタックスが存在しないとき、デコーダはその値を推論することができる。このとき、ベースモーションベクトル関連シンタックスは0と推論されてよい。仮にベースモーションベクトル候補がマージ候補である場合、デコーダは、マージ候補として可能な最大個数に基づく条件によって、ベースモーションベクトル関連シンタックスをパースするか否かを決定することができる。
前述したように、ベースモーションベクトル候補として可能な最大個数は、表16で説明したマージ候補の最大個数を示すシグナリングが指示する値でよく、その値は、MaxNumMergeCandと表現されてよい。
図24を参照すると、デコーダは、マージ候補の最大個数を表すMaxNumMergeCandが1よりも大きい場合に限ってベースモーションベクトルインデックスをパースすることができる。仮に、ベースモーションベクトルインデックスが存在しない場合、例えば、パースしていないため存在しない場合、デコーダは、その値を0と推論することができる。可能な最大候補の個数が1である場合、インデックスをシグナリングしなくても決定できるわけである。
図25は、本発明の一実施例に係るMMVDシンタックスを例示する図である。図22で説明したシンタックス構造の場合、MMVDを使用せず、スキップモード又はマージモードを使用する場合にも、常にMMVDフラグがパースされる。また、MMVDを使用する場合及び使用しない場合の両方とも、ベースモーションベクトルインデックス又はマージインデックスがパースされる。一方、図25の実施例では、MMVDを使用せず、スキップモード又はマージモードを使用する場合にも、MMVDフラグをパースしない場合があり得る。図25では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
本発明の一実施例によれば、ベースモーションベクトル関連シンタックスとマージインデックスは同一の値と定義されてよい。例えば、ベースモーションベクトルインデックスとマージインデックスは同一でよい。すなわち、一つのシンタックス要素で該当の候補を指示するためのシグナリングが行われてよい。また、本発明の一実施例によれば、デコーダは、ベースモーションベクトル関連シンタックスパーシングをし、条件によってMMVDフラグをパースすることができる。そして、MMVDフラグがMMVD使用を指示する場合に、ベースモーションベクトル関連シンタックス以外のMMVD関連シンタックスをパースすることができる。
例えば、マージインデックスをパースした後に、該当する候補がMMVDに利用可能な候補か否かを区別することができる。そして、MMVDに利用可能な候補である場合、MMVDフラグをパースし、MMVDに利用不可能な候補である場合、MMVDフラグをパースしなくてもよい。また、MMVDフラグが存在しない場合、MMVDを使用しないと推論されてよい。例えば、MMVDのベースモーションベクトルがマージ候補リストの前側(インデックスの小さい方)のnum_mmvd_baseCand個までに該当し得るとき、パースしたインデックスがnum_mmvd_baseCandよりも小さいとMMVDフラグをパースし、そうでないと、MMVDフラグをパーシングせず、MMVDを使用しないと決定できる。この場合、num_mmvd_baseCand以上の候補インデックスを使用する場合、MMVDフラグに対するビットを節約できるという長所がある。
図25を参照すると、マージインデックスをパースした後、マージインデックスがnum_mmvd_baseCandよりも小さい場合、MMVDフラグをパースしている。num_mmvd_baseCandは、MMVDのベースモーションベクトルとして可能な候補の個数であってよい。また、MMVDのベースモーションベクトルインデックスは、マージインデックスに基づいて決定されてよい。
図26は、本発明の一実施例に係るMMVDシンタックスを例示する図である。図26を参照すると、シンタックス構造上、MMVDフラグはマージフラグよりも上位にあってよい。例えば、デコーダは、MMVDフラグに基づいて、マージフラグをパースするか否かを決定することができる。一例として、これは、スキップモードでない場合に適用できる。図26では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
本発明の一実施例によれば、MMVDフラグがMMVDを使用すると指示する場合、マージフラグをパースしなくてもよい。例えば、MMVDのベースモーションベクトル候補がマージ候補の中から決められ、MMVDフラグがMMVDを使用すると指示する場合、デコーダはマージフラグをパースしなくてもよい。MMVDを使用する場合(MMVDフラグが1である場合)、マージフラグをマージモードを使用するものと推論できる。図26を参照すると、スキップモードを使用する場合、すなわち、cu_skip_flagが1である場合、デコーダは、MMVD使用の有無に関係なく、マージフラグを1と推論することができる。また、マージフラグが存在せず、スキップモードを使用しないと、MMVDを使用する場合、マージフラグを1と推論し、MMVDを使用しない場合、マージフラグを0と推論することができる。又は、一実施例において、デコーダは、マージフラグが存在せず、スキップモードを使用しないと、マージフラグを1と推論することができる。また、図26を参照すると、スキップモードでない場合、デコーダは、MMVDフラグが1であれば、MMVD関連シンタックスをパースし、MMVDフラグが0でなければ、マージフラグをパースしている。
本発明の一実施例によれば、サブブロックマージフラグがマージフラグよりも上位にある場合、サブブロックマージフラグが1である場合、マージフラグをパースしなくてもよく、マージフラグを1と推論することができる。また、サブブロックマージフラグがMMVDフラグよりも上位にある場合、サブブロックマージフラグが1であれば、MMVDフラグをパースしなくてもよく、MMVDフラグを0と推論することができる。また、本明細書において、modeX_flagが1であることは、modeXを使用することを意味し、modeX_flagが0であることは、modeXを使用しないことを意味できる。
図27は、本発明の一実施例に係るMMVDシンタックスを例示する図である。本発明の一実施例によれば、MMVDのベースモーションベクトル候補として使用する候補リストにおいて、一部の候補に対して常にMMVDを使用することができる。例えば、MMVDのベースモーションベクトル候補がマージ候補リストから定められるとき、マージ候補リストの一部に対して常にMMVDを使用することができる。例えば、定められた候補インデックスに対して常にMMVDを使用することができる。例えば、候補インデックスが既に設定された値よりも小さいとき、常にMMVDを使用することができる。この場合、候補インデックスからMMVD使用の有無を決定することができる。また、MMVDフラグパーシングが存在しなくてもよい。
例えば、マージインデックスをパースした後、マージインデックスがMMVDを使用するものと定められた値に該当する場合、MMVDを使用すると決定できる。また、このような場合、MMVD関連シンタックス(例えば、距離、方向シグナリングなど)をパースすることができる。図27では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。図27を参照すると、マージ候補リストの前側のnum_mmvd_baseCand個までに該当するまでは常にMMVDを使用することができる。このような場合、候補インデックスがnum_mmvd_baseCandよりも小さいと、MMVDを使用すると決定でき、MMVD関連シンタックスをパースすることができる。
図28は、本発明の一実施例に係るMMVDシンタックスを例示する図である。本発明の一実施例によれば、デコーダは、MMVDのベースモーションベクトル候補として使用する候補リストにおいて一部の候補に対して常にMMVDを使用することができる。例えば、MMVDのベースモーションベクトル候補がマージ候補リストから定められるとき、デコーダは、マージ候補リストの一部に対して常にMMVDを使用することができる。例えば、デコーダは、定められた候補インデックスに対して常にMMVDを使用することができる。例えば、候補インデックスが既に設定された値よりも小さいとき、常にMMVDを使用することができる。図27では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
本発明の一実施例によれば、シンタックス構造上(又は、シンタックスパーシング順序上)、MMVDフラグがマージフラグよりも上位にあってよい。この場合、デコーダは、MMVDフラグが1である場合、MMVD関連シンタックスをパースすることができる。また、MMVDフラグが1である場合、マージフラグを1と推論することができる。またMMVDフラグが0である場合、デコーダはマージフラグをパースすることができる。デコーダは、マージフラグが1である場合、マージインデックスをパースすることができる。このとき、マージインデックスをパースするための追加条件が存在してよい。このとき、一実施例として、デコーダは、実際に使用するマージインデックスは、パースしたマージインデックスに基づいて変形して決定することができる。例えば、実際に使用するマージインデックスは、パースしたマージインデックスに、パースしたマージインデックスよりも小さい値のうち、MMVDを常に使用するように定められた候補の個数を加算したものと決定できる。例えば、候補リストの前側のnum_mmvd_baseCand個に対してMMVDを常に使用するように定められた場合、パースしたマージインデックスにnum_mmvd_baseCandを加算した値をマージインデックスとして使用することができる。MMVDフラグがマージフラグよりも前にある場合、MMVDフラグが0であれば、MMVDを使用する候補を候補リストから除外させることができるわけである。
図27を参照すると、MMVDフラグがマージフラグよりも前に存在する。また、MMVDフラグが1である場合、デコーダは、MMVD関連シンタックスをパースすることができる。また、MMVDフラグが0である場合、デコーダは、マージフラグをパースすることができる。また、MMVDフラグが0であり、マージフラグが1である場合、デコーダはマージインデックスをパースすることができる。この時、マージインデックスをパースするための追加条件が存在してよい。また、MMVDのベースモーションベクトルとして使用可能な候補個数であるnum_mmvd_baseCandを、パースしたマージインデックスに加算し、実際に使用するマージインデックスを決定することができる。
図28は、本発明の一実施例に係るMMVDシンタックスを例示する図である。本発明の一実施例によれば、候補インデックスが、モード使用の有無を示すフラグよりも前に存在してよい。例えば、候補インデックスがMMVDフラグ又はマージフラグよりも前に存在してよい。このような場合、候補インデックスをパースした後に、パースしたインデックスがMMVDを使用できる候補か否かによって、MMVDフラグをパースするか否かを決定することができる。例えば、パースした候補インデックスがMMVDを使用できる候補である場合、MMVDフラグをパースし、MMVDを使用できない候補である場合、MMVDフラグをパースせず、0と推論することができる。また、MMVDフラグが0である場合、マージフラグをパースすることができる。マージフラグによって、マージモード又はサブブロックマージモードが用いられるか、インターモード又はAMVPモード又はアフィンインターモードが用いられるかを決定できる。図28では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
例えば、第1モードとして可能な候補個数がnum1であり、第2モードとして可能な候補個数がnum2であり、num1<num2である場合、候補インデックスをパースしたとき、パースしたインデックスがnum1以上であれば、第1モード及び第2モードの中から決定するシンタックス(例えば、第1モードを使用するか否かを示すシンタックス)をパースしなくてもよく、第1モードを使用しないと推論できる。そして、パースしたインデックスがnum1よりも小さい場合、第1モード及び第2モードの中から決定するシンタックスをパースすることができる。
図28を参照すると、マージインデックスをパースした後、マージインデックスがMMVDを使用可能な候補個数であるnum_mmvd_baseCandよりも小さい場合、MMVDフラグをパースすることができる。また、マージインデックスがnum_mmvd_baseCand以上である場合、MMVDフラグをパースしなくてもよく、この時、MMVDフラグを0と推論することができる。また、MMVDフラグが1である場合、MMVD関連シンタックス要素を表す距離インデックス(distance_idx)、方向インデックス(direction_idx)をパースすることができる。また、MMVDフラグが0である場合、マージフラグをパースし、これによって、マージモード又はサブブロックマージモードであるか、それともインターモード又はAMVPモード又はアフィンモードであるか区分できる。
図29は、本発明の一実施例に係るコーディングユニットシンタックス構造を例示する図である。図29に示すように、マージフラグが1である場合、マージデータ(すなわち、merge_data)パーシングプロセスを行うことができる。図29では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。一実施例において、マージデータはマージ関連シンタックスの一部を含むことができる。また、マージデータは、マージデータシンタックスと呼ぶことができる。例えば、マージデータは、前述した図21~図28においてマージフラグが1のときに行うシンタックスパーシングプロセスを含むことができる。また、マージフラグが1であることは、マージモードを使用することを意味できる。また、マージフラグが1であることは、上の図6及び表1に表したmvd_codingを使用しないインター予測を使用することを意味できる。
図30は、本発明の一実施例に係るマージデータシンタックス構造を例示する図である。図29で説明したように、マージフラグが1である場合、デコーダはマージデータシンタックスをパース(又は、呼び出し)することができる。図30では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。また、前述したように、マージモード又はスキップモードを使用する場合、マージフラグは1に設定されてよい。
図30を参照すると、マージデータシンタックスにおいて、シンタックス要素のうちMMVDフラグが最初にパースされてよい。MMVDフラグは、マージフラグが1であることを確認した後、最初にパースできるシンタックスであってよい。また、MMVDフラグが、マージフラグを1に設定する他の予測モードの使用有無を示すシグナリングよりも前にパースされてよい。また、MMVDフラグは、MMVDを使用するか否かを示すシグナリングであってよい。また、表16、図22~図29で説明した実施例と同じ方法が適用されてよい。図30に示すように、マージデータシンタックスは、サブブロックマージモード、多重仮定予測(multi-hypothesis prediction)(又は、イントラ及びインター組合せ予測(intra and inter combined prediction))、トライアングル予測などに対するデコーディングプロセスを含むことができる。
本発明の一実施例によれば、多重仮定予測は、予測ブロックを生成するとき、2つ以上の予測ブロックを生成して結合する方法であってよい。又は、多重仮定予測は、予測ブロックを生成するとき、インター予測とイントラ予測を全て使用する方法であってよい。またインター予測とイントラ予測はそれぞれ、予測を行う際、現在ブロックが含まれたピクチャと同じピクチャ、異なるピクチャを使用する方法であってよい。図30を参照すると、多重仮定予測フラグは、多重仮定予測を使用するか否かを示すシンタックス要素を表す。
また、本発明の一実施例によれば、サブブロックマージモードは、現在ブロック(例えば、コーディングユニット又は予測ユニット)を予測するとき、サブブロック単位でモーション補償を行う(すなわち、サブブロック単位でモーションベクトルが決定される)方法であってよい。一実施例において、サブブロックマージモードは、サブブロックベースの時間MVP、アフィンモーション予測などの方法を含むことができる。図30を参照すると、マージサブブロックフラグは、サブブロックマージモードを使用するか否かを示すシンタックス要素を表す。
また、本発明の一実施例によれば、トライアングル予測は、現在ブロック内で四角形以外の領域に対してモーション補償をする方法を表す。すなわち、トライアングル予測において、現在ブロック内でモーションベクトルが同一である単位が四角形でなくてもよい。図30を参照すると、トライアングル予測フラグ(すなわち、merge_triangle_flag)は、トライアングル予測を使用するか否かを示すシンタックス要素を表す。
また、本発明の一実施例によれば、MMVDフラグは、MMVDでない他のマージモードを使用することを示すシグナリング(又は、シンタックス要素)よりも前にパースされてよい。前記MMVD以外のあるマージモードを使用することを示すシグナリングは、多重仮定予測フラグ、マージサブブロックフラグ、マージトライアングルフラグなどを含むことができる。
図30を参照すると、MMVDマージインデックス(すなわち、mmvd_merge_idx)(又は、MMVDインデックス)は、MMVDのベースモーションベクトルとしていずれのものを使用するかを示すシンタックス要素を表す。仮に、MMVDを使用する場合、マージインデックスは、MMVDマージフラグ(すなわち、mmvd_merge_flag)(又は、MMVDフラグ)と推論されてよい。
図31は、本発明の一実施例に係るマージデータシンタックス構造を例示する図である。図31の実施例は、図29でマージフラグが1の場合に行われるマージデータシンタックスの一部であってよい。図31では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。本発明の一実施例によれば、MMVDフラグはマージインデックスよりも後にパースされてよい。例えば、MMVDフラグは、マージインデックスの直後にパースされてよい。例えば、MMVDフラグは、マージデータシンタックスにおいて最前方以外の位置でパースされなくてもよい。すなわち、マージフラグが1であることを確認した後、MMVDフラグではなく他のシンタックスをパースした後にMMVDフラグをパースすることができる。
また、本発明の一実施例によれば、図21で説明したように、MMVDのベースモーションベクトルは他の候補リストから決定されてよく、一実施例として、前記他の候補リストの一部からベースモーションベクトルが決定されてよい。したがって、図25で説明したように、本実施例をよれば、MMVDのベースモーションベクトルとして使用可能な他の候補リストと関連したインデックスに基づいて、MMVDフラグをパースするか否かを決定することができる。例えば、MMVDのベースモーションベクトルとして使用可能な他の候補リストと関連したインデックスを、MMVDフラグよりも前にパースすることができる。そして、前記他の候補リストと関連したインデックスがMMVDのベースモーションベクトルとして使用可能であることを示す場合にMMVDフラグをパースし、そうでない場合、MMVDフラグをパースしないことが可能である。
図31を参照すると、MMVDのベースモーションベクトルはマージ候補から決定されてよい。したがって、一実施例として、マージインデックスがMMVDのベースモーションベクトルとして使用可能であることを示す場合にMMVDフラグをパースし、そうでない場合、MMVDフラグをパースしなくてもよい。又は、MMVDのベースモーションベクトルがマージ候補リストの前部のn個の中から選択されてよい場合に、マージインデックスがnよりも小さい場合(マージインデックスは0から始まってよい。)、MMVDフラグをパースし、マージインデックスがnよりも小さくない場合、MMVDフラグをパースしなくてもよい。より具体的に、MMVDのベースモーションベクトルは、マージ候補リストの一番目又は二番目の候補であることが可能であり、図31を参照すると、マージインデックスが2よりも小さい場合、すなわち、0又は1である場合、MMVDフラグをパースすることができる。マージインデックスは、マージ候補インデックスを表すことができる。これによって、マージモードであるが、マージインデックスがMMVDを使用できないことを示す場合、MMVDフラグをパースしなくてもよく、これによって、コーディング効率を向上させることができる。
また、MMVDのベースモーションベクトルは、あるモードの候補リストから決定されてよい。したがって、本発明の一実施例によれば、各種モードの使用の有無を示すシグナリングが多数存在するとき、前記あるモードを使用すると決定された後にMMVDフラグをパースすることができる。例えば、第1モード、第2モード、第3モードが存在すると仮定し、MMVDは第3モードに基づいて決定される場合、又はMMVDのベースモーションベクトルが第3モードの候補から決定される場合、第3モードを使用すると決定された後にMMVDフラグをパースすることができる。例えば、第3モードを使用するか否かを示すシグナリングによって第3モードを使用すると決定されてよい。又は、例えば、第3モード以外に可能なモード、例えば、第1モード及び第2モードが使用されないと決定された場合、第3モードを使用すると決定されてよい。例えば、サブブロックマージモード、多重仮定予測、トライアングル予測、コンベンショナル(conventional)マージモードなどが存在するとき、またMMVDをコンベンショナルマージモードに適用できる場合、列挙したモードのうちコンベンショナルマージモード又はMMVDを使用すると決定された後にMMVDフラグをパースすることができる。前記コンベンショナルマージモードは、周辺イントラコードされたブロックのモーション情報を用いてインター予測を行うモードであり、従来の映像圧縮技術(例えば、HEVC(high efficiency video coing))のマージモードを意味できる。
また、MMVDのベースモーションベクトルとして使用可能な他の候補リストと関連したインデックスに基づいてMMVDフラグをパースする場合、MMVDのベースモーションベクトルを示すシグナリングが別に存在する必要がない。例えば、図23又は図24などでは、ベースモーションベクトルインデックスのようなシグナリングがマージインデックスと別に存在している。また、図30を参照すると、MMVDマージフラグは、MMVDのベースモーションベクトルを示すシグナリングであってよい。本発明の一実施例によれば、図31に示すように、MMVDマージフラグが存在しなくてもよい。例えば、MMVD関連シンタックスは、MMVDフラグ、MMVD距離を示すシグナリング(図30及び図31においてmmvd_distance_idx)、MMVD方向を示すシグナリング(図30及び図31においてmmvd_direction_idx)だけを含むことができる。また、MMVDのベースモーションベクトルは、マージインデックスによって決定されてよい。これによって、図30のMMVDのベースモーションベクトルを示すシグナリング及びそのコンテクストモデルが図31の実施例では存在しなくてもよい。
また、本発明の一実施例によれば、MMVDフラグは、前述したMMVD以外のあるマージモードを使用することを示すシグナリングよりも後にパースされてよい。。図31を参照すると、MMVDフラグは、マージサブブロックフラグ、多重仮定予測フラグ(すなわち、mh_intra_flag)、マージトライアングルフラグ(すなわち、merge_triangle_flag)よりも後にパースされてよい。また、特定マージモードは、MMVDと共に使用されなくてもよい。その場合、前記あるマージモードを使用するか否かを示すフラグが、使用しないことを示す場合、MMVDフラグをパースすることができる。図31を参照すると、MMVDは、トライアングル予測と共に使用不可能であってよく、マージトライアングルフラグが0である場合にMMVDフラグがパースされてよい。又は、MMVDはMH intraと共に使用不可能であってよく、mh_intra_flagが0である場合にMMVDフラグがパースされてよい。又は、MMVDは、サブブロックマージモードと共に使用不可能であってよく、マージサブブロックフラグが0である場合にMMVDフラグがパースされてよい。
図32は、本発明の一実施例に係るマージデータシンタックス構造を例示する図である。図32の実施例は、図29でマージフラグが1である場合に行われるマージデータシンタックスの一部であってよい。図32では説明の便宜のためにデコーダを中心に説明するが、本実施例に係るコーディングプロセスは、エンコーダにも実質的に同じ方法で適用されてよい。
本発明の一実施例によれば、MMVDフラグは、他のモードを使用するか否かを示すシグナリングよりも後にパースされてよい。又は、MMVDフラグは、マージフラグが1に設定されるMMVD以外の他のモードを使用するか否かを示すシグナリングよりも後にパースされてよい。例えば、MMVDフラグは、マージサブブロックフラグ、多重仮定予測フラグ(すなわち、mh_intra_flag)、マージトライアングルフラグ(すなわち、merge_triangle_flag)よりも後にパースされてよい。
また、一実施例において、MMVDフラグは、MMVD以外の他のモードを使用しない場合にパースされてよい。例えば、マージサブブロックフラグが0である場合、MMVDフラグがパースされてよい。また、多重仮定予測フラグが0である場合、MMVDフラグがパースされてよい。また、マージトライアングルフラグが0である場合、MMVDフラグがパースされてよい。あるモードを使用するか否かを示すフラグが0であることは、前記あるモードを使用しないということを示すことができる。また、MMVDをコンベンショナルマージモードに適用できる場合、MMVDフラグをコンベンショナルマージモード又はMMVDが用いられると決定された後にパースすることができる。
また、一実施例において、MMVDを使用する場合、MMVD関連シンタックスをパースし、MMVDを使用しない場合、マージインデックスをパースすることができる。又は、MMVDを使用する場合、デコーダは、MMVDマージフラグ(すなわち、mmvd_merge_flag)、MMVD距離インデックス(mmvd_distance_idx)、MMVD方向インデックス(mmvd_direction_idx)をパースし、MMVDを使用しない場合、マージインデックスをパースすることができる。また、図32に示すように、MMVDフラグを、他のモードを使用するか否かを示すフラグよりも後にパースする場合、MMVDのベースモーションベクトルを示すシグナリングがマージインデックスとは別個のシンタックス要素として存在してよい。図32を参照すると、MMVDのベースモーションベクトルを示すシグナリングは、MMVDマージフラグであってよい。例えば、コンベンショナルマージモード又はMMVDを使用すると決定された後にMMVDフラグをパースすることができる。
本発明の一実施例によれば、MMVDのベースモーションベクトルが、ある候補リストから決定され、前記ある候補リストの最大候補個数は可変的であってよい。例えば、上位レベルシンタックスから最大候補個数が決定されてよい。上位レベルシンタックスは、現在コーディングユニットよりも上位レベルのシンタックスであってよい。例えば、上位レベルシンタックスは、シーケンス、ピクチャ、スライス、タイルレベルのシンタックスであってよい。一実施例をよれば、このような場合、MMVDのベースモーションベクトルの最大候補個数は、MMVDのベースモーションベクトルになり得る候補リストの最大候補個数に追従してよい。したがって、MMVDのベースモーションベクトルになり得る候補リストの最大候補個数が減る場合、MMVDのベースモーションベクトルになり得る候補の最大候補個数も減り得る。
一実施例において、MMVDのベースモーションベクトルがマージ候補リストから決定され、最大マージ候補個数がMaxNumMergeCandであってよい。また、MaxNumMergeCandは上位レベルシンタックスから決定されてよい。このような場合、MMVDのベースモーションベクトルになり得る最大マージ候補個数は、MaxNumMergeCand以下であってよい。したがって、図32に示すように、MaxNumMergeCandによって、MMVDのベースモーションベクトルを示すシグナリングをパースするか否かが決定されてよい。例えば、MaxNumMergeCandが1である場合、MMVDのベースモーションベクトルを示すシグナリングをパースしなくてもよく、MMVDのベースモーションベクトルを示すシグナリングが存在しない場合、0と推論できる。
他の実施例において、MaxNumMergeCandが1である場合、MMVDを使用しなくてもよい。これは、MMVD関連シンタックスに対するシグナリングオーバーヘッドを減らすためであってよい。したがって、MaxNumMergeCandが1である場合、MMVDフラグをパースしなくてもよい。また、MMVDフラグが存在しない場合、0と推論できる。また、図32を参照すると、マージトライアングルフラグは、多重仮定イントラ予測を使用しない場合にのみパースすることができる。仮に、マージトライアングルフラグが存在しない場合、0と推論できる。
本発明の一実施例によれば、共に使用できないモードが多数存在することがある。例えば、サブブロックマージモード、トライアングル予測、多重仮定イントラ予測、MMVDを共に使用できないことがある。また、共に使用できない多数のモードのそれぞれを使用するか否かを示すシグナリングが、既に設定された順序に従ってパースされてよい。このような場合、前記多数のモードのうち、あるモードを使用するか否かを示すシグナリングは、それよりも前にパースされた前記多数のモードのうち、他のあるモードを使用するか否かを示すシグナリングがいずれも、使用しないことを示す場合にのみ、パースすることができる。
図33は、本発明が適用される一実施例に係るビデオ信号処理方法を例示する図である。図33を参照すると、説明の便宜のためにデコーダを中心に説明するが、本発明がこれに制限されるものではなく、本実施例に係る多重仮定予測ベースのビデオ信号処理方法は、エンコーダにも実質的に同じ方法で適用されてよい。
デコーダは、現在ブロックにサブブロックベースのマージモードが適用されるか否かを示す第1シンタックス要素を取得する(S3301)。前述したように、一実施例として、前記第1シンタックス要素はサブブロックマージフラグ(又は、マージサブブロックフラグ)であってよい。
デコーダは、前記第1シンタックス要素が、前記現在ブロックにサブブロックベースのマージモードが適用されないことを示す場合、前記現在ブロックにモーションベクトル差分を用いるマージモードが適用されるか否かを示す第2シンタックス要素を取得する(S3302)。前述したように、一実施例として、前記第2シンタックス要素はMMVDフラグ(又は、MMVDマージフラグ)であってよい。
デコーダは、前記第2シンタックス要素が、前記現在ブロックに前記モーションベクトル差分を用いるマージモードが適用されることを示す場合、前記現在ブロックのマージ候補リストに含まれた候補の中で前記現在ブロックのインター予測に用いられる候補を示す第3シンタックス要素を取得する(S3303)。前述したように、一実施例として、前記第3シンタックス要素はMMVDインデックス(又は、MMVD候補インデックス、MMVD候補フラグ)であってよい。
デコーダは、前記モーションベクトル差分に関連した情報を取得する(S3304)。前述したように、実施例として、前記モーションベクトル差分に関連した情報を取得する段階は、前記モーションベクトル差分の距離を示す第4シンタックス要素を取得する段階;及び前記モーションベクトル差分の方向を示す第5シンタックス要素を取得できる。前述したように、一実施例として、前記第4シンタックス要素は距離インデックス(又は、MMVD距離インデックス)でよく、前記第5シンタックス要素は方向インデックス(又は、MMVD方向インデックス)でよい。
デコーダは、前記第3シンタックス要素によって示される候補のモーションベクトルに前記モーションベクトル差分を加算することによって、前記現在ブロックのモーションベクトルを誘導する(S3305)。
デコーダは、前記現在ブロックのモーションベクトルを用いて前記現在ブロックの予測ブロックを生成する(S3306)
前述したように、実施例として、前記第3シンタックス要素は、前記現在ブロックのマージ候補リストにおける一番目の候補及び二番目の候補の中で前記現在ブロックのインター予測に用いられる候補を示すことができる。
前述したように、実施例として、前記第3シンタックス要素は、マージ候補の最大個数が1よりも大きい場合、ビットストリームからパースされ、前記マージ候補の最大個数が1よりも大きくない場合、0と推論されてよい。
前述したように、実施例として、前記第1シンタックス要素が、前記現在ブロックにサブブロックベースのマージモードが適用されることを示す場合、前記現在ブロックのサブブロックマージ候補リストに含まれた候補の中で前記現在ブロックのインター予測に用いられる候補を示す第6シンタックス要素を取得する段階をさらに含み、前記第1シンタックス要素が、前記現在ブロックにサブブロックベースのマージモードが適用されることを示す場合、前記現在ブロックのモーションベクトルは、前記第6シンタックス要素によって示される候補のモーションベクトルに基づいて、前記現在ブロックに含まれた少なくとも一つのサブブロック単位で誘導されてよい。前述したように、一実施例として、前記第6シンタックス要素はサブブロックマージインデックス(又は、マージサブブロックインデックス)であってよい。
前述したように、実施例として、前記第1シンタックス要素が、前記現在ブロックにサブブロックベースのマージモードが適用されることを示す場合、前記第2シンタックス要素は0と推論されてよい。
前述したように、実施例として、前記第6シンタックス要素は、サブブロックマージ候補の最大個数が1よりも大きい場合、ビットストリームからパースされ、前記サブブロックマージ候補の最大個数が1よりも大きくない場合、0と推論されてよい。
上述した本発明の実施例は様々な手段によって具現されてよい。例えば、本発明の実施例は、ハードウェア、ファームウェア(firmware)、ソフトウェア又はそれらの結合などによって具現されてよい。
ハードウェアによる具現の場合、本発明の実施例に係る方法は、一つ又はそれ以上のASIC(Application Specific Integrated Circuit)、DSP(Digital Signal Processor)、DSPD(Digital Signal Processing Device)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって具現されてよい。
ファームウェア又はソフトウェアによる具現の場合、本発明の実施例に係る方法は、以上で説明された機能又は動作を実行するモジュール、手順又は関数などの形態で具現されてよい。ソフトウェアコードはメモリに格納され、プロセッサによって駆動されてよい。前記メモリはプロセッサの内部又は外部に位置してよく、既に公知の様々な手段によってプロセッサとデータを授受することができる。
一部の実施例は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態で具現されてもよい。コンピュータ可読媒体は、コンピュータによってアクセス可能な任意の可用媒体でよく、揮発性及び不揮発性の媒体、分離型及び非分離型のいかなる媒体も含む。また、コンピュータ可読媒体は、いかなるコンピュータ記憶媒体及び通信媒体も含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令語、データ構造、プログラムモジュール又はその他データのような情報の記憶のための任意の方法又は技術で具現された揮発性及び不揮発性、分離型及び非分離型のいかなる媒体も含む。通信媒体は、典型的に、コンピュータ可読命令語、データ構造又はプログラムモジュールのような変調されたデータ信号のその他データ、又はその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
前述した本発明の説明は例示のためのものであり、本発明の属する技術分野における通常の知識を有する者には、本発明の技術的思想又は必須の特徴を変更することなく他の具体的な形態に容易に変形可能であるということが理解できよう。したがって、以上で記述した実施例はいずれの面においても例示的なものであり、限定的でないものと解釈されるべきである。例えば、単一型として説明されている各構成要素は、分散して実施されてもよく、同様に、分散していると説明されている構成要素も結合した形態で実施されてもよい。
本発明の範囲は前記詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲そしてその均等概念から導出される変更又は変形された形態はいずれも本発明の範囲に含まれるものと解釈されるべきである。