本発明は、様々な変更を加えることができ、様々な実施形態を有することができるので、特定の実施形態を図面に例示し、詳細な説明に詳細に説明する。ところが、これは本発明を特定の実施形態について限定するものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物ないし代替物を含むものと理解されるべきである。図面において類似する参照符号は、様々な側面にわたって同一又は類似の機能を指し示す。図面における要素の形状及び大きさなどは、より明確な説明のために誇張することがある。後述する例示的実施形態についての詳細な説明は、特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が実施形態を実施し得る程度に十分に詳細に説明される。様々な実施形態は、互いに異なるが、相互に排他的である必要はないことが理解されるべきである。例えば、ここに記載されている特定の形状、構造及び特性は、一実施形態に関連して本発明の精神及び範囲を逸脱することなく、様々な実施形態に実現できる。また、それぞれの開示された実施形態内の個別構成要素の位置又は配置は、実施形態の精神及び範囲を逸脱することなく変更可能であることが理解されるべきである。したがって、後述する詳細な説明は、限定的な意味として取るものではなく、例示的な実施形態の範囲は、適切に説明されるならば、それらの請求項が主張するのと均等なすべての範囲及び添付の請求項によってのみ限定される。
本発明において、用語「第1」、「第2」などは多様な構成要素の説明に使用できるが、これらの構成要素は上記の用語により限定されてはならない。これらの用語は、一つの構成要素を他の構成要素から区別する目的にのみ使われる。例えば、本発明の権利範囲を外れない限り、第1構成要素は第2構成要素と命名することができ、同様に、第2構成要素も第1構成要素と命名することができる。用語「及び/又は」は、複数の関連した記載項目の組み合わせ又は複数の関連した記載項目のいずれかを含む。
本発明のある構成要素が他の構成要素に「連結されて」いる或いは「接続されて」いるとした場合には、その他の構成要素に直接連結されている或いは接続されていることもあるが、それらの間に別の構成要素が介在することもあると理解されるべきである。これに対し、ある構成要素が他の構成要素に「直接連結されて」いる或いは「直接接続されて」いるとした場合には、それらの間に別の構成要素が介在しないと理解されるべきである。
本発明の実施形態に示す構成部は、互いに異なる特徴的な機能を示すために独立に図示されるもので、各構成部が分離されたハードウェア又は一つのソフトウェア構成単位からなることを意味しない。すなわち、各構成部は、説明の便宜上、それぞれの構成部に羅列して含むもので、各構成部のうちの少なくとも2つの構成部が合わせられて一つの構成部をなすか、或いは一つの各構成部が複数の構成部に分けられて機能を行うことができ、このような各構成部の統合された実施形態及び分離された実施形態も、本発明の本質から外れない限り、本発明の権利範囲に含まれる。
本発明で使用した用語は、単に特定の実施形態を説明するために使われたものであり、本発明を限定するものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本発明において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はこれらの組み合わせが存在することを指定するものであり、一つ又はそれ以上の他の特徴、数字、ステップ、動作、構成要素、部品又はこれらの組み合わせの存在又は付加可能性を予め排除しないと理解されるべきである。つまり、本発明において、特定の構成を「含む」と記述する内容は、該当構成以外の構成を排除するものではなく、追加の構成が本発明の実施又は本発明の技術的思想の範囲に含まれ得ることを意味する。
本発明の一部の構成要素は、本発明において本質的な機能を行う不可欠の構成要素ではなく、単に性能を向上させるための選択的構成要素であり得る。本発明は、単に性能向上のために使用される構成要素を除く、本発明の本質の実現に必要不可欠な構成部のみを含んで実現でき、単に性能向上のために使用される選択的構成要素を除く必須構成要素のみを含む構造も本発明の権利範囲に含まれる。
以下、図面を参照して、本発明の実施形態について具体的に説明する。本明細書の実施形態を説明するにあたり、関連した公知の構成又は機能についての具体的な説明が本明細書の要旨を曖昧にするおそれがあると判断された場合、その詳細な説明は省略し、図面上の同一の構成要素については同一の参照符号を使用し、同一の構成要素についての重複説明は省略する。
以下において、画像は、動画像(video)を構成する1つのピクチャ(picture)を意味することもあり、動画像自体を意味することもある。例えば、「画像の符号化及び/又は復号化」は、「動画像の符号化及び/又は復号化」を意味することもあり、「動画像を構成する画像のうちのいずれかの画像の符号化及び/又は復号化」を意味することもある。
以下において、用語「動画像」及び「ビデオ」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、対象画像は、符号化の対象である符号化対象画像、及び/又は復号化の対象である復号化対象画像であり得る。また、対象画像は、符号化装置に入力された入力画像であってもよく、復号化装置に入力された入力画像であってもよい。ここで、対象画像は、現在の画像と同じ意味を持つことができる。
以下において、用語「画像」、「ピクチャ」、「フレーム(frame)」及び「スクリーン(screen)」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、対象ブロックは、符号化の対象である符号化対象ブロック、及び/又は復号化の対象である復号化対象ブロックであり得る。また、対象ブロックは、現在符号化及び/又は復号化の対象である現在ブロックであってもよい。例えば、用語「対象ブロック」及び「現在ブロック」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、用語「ブロック」及び「ユニット」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。又は、「ブロック」は特定のユニットを示すことができる。
以下において、用語「領域(region)」及び「セグメント(segment)」は、入れ替わって使用されることもある。
以下において、特定の信号は、特定のブロックを示す信号であり得る。例えば、原(original)信号は、対象ブロックを示す信号であり得る。予測(prediction)信号は、予測ブロックを示す信号であり得る。残余(residual)信号は、残余ブロック(residual block)を示す信号であり得る。
実施形態において、特定の情報、データ、フラグ(flag)、インデックス(index)及び要素(element)、属性(attribute)などのそれぞれは、値を持つことができる。情報、データ、フラグ、インデックス及び要素、属性などの値「0」は、論理偽(logical false)又は第1の予め定義された(predefined)値を示すことができる。いわば、値「0」、偽、論理偽及び第1の予め定義された値は、入れ替わって使用されることもある。情報、データ、フラグ、インデックス及び要素、属性などの値「1」は、論理真(logical true)又は第2の予め定義された値を示すことができる。いわば、値「1」、真、論理真及び第2の予め定義された値は、入れ替わって使用されることもある。
行、列、又はインデックス(index)を示すためにi又はjなどの変数が使用されるとき、iの値は0以上の整数であってもよく、1以上の整数であってもよい。いわば、実施形態において、行、列、及びインデックスは0からカウントされることもあり、1からカウントされることもある。
用語説明
符号化器(Encoder):符号化(Encoding)を行う装置を意味する。すなわち、符号化装置を意味することができる。
復号化器(Decoder):復号化(Decodng)を行う装置を意味する。すなわち、復号化装置を意味することができる。
ブロック(Block):サンプル(Sample)のM×N配列である。ここで、MとNは正の整数値を意味することができ、ブロックは一般に2次元形状のサンプル配列を意味することができる。ブロックはユニットを意味することができる。現在ブロックは、符号化時に符号化の対象となる符号化対象ブロック、復号化時に復号化の対象となる復号化対象ブロックを意味することができる。また、現在ブロックは符号化ブロック、予測ブロック、残予ブロック及び変換ブロックのうちの少なくとも一つであり得る。
サンプル(Sample):ブロックを構成する基本単位である。ビット深度(bit depth、Bd)に応じて0から2Bd-1までの値で表現できる。本発明において、サンプルは画素又はピクセルと同じ意味で使用できる。すなわち、サンプル、画素、ピクセルは互いに同じ意味を持つことができる。
ユニット(Unit):画像符号化及び復号化の単位を意味することができる。画像の符号化及び復号化において、ユニットは、一つの画像を分割した領域であり得る。また、ユニットは、一つの画像を細分化されたユニットに分割して符号化或いは復号化するとき、その分割された単位を意味することができる。すなわち、一つの画像は複数のユニットに分割できる。画像の符号化及び復号化において、ユニット別に、予め定義された処理が行われ得る。一つのユニットは、ユニットに比べてより小さい大きさを持つサブユニットにさらに分割できる。機能に応じて、ユニットは、ブロック(Block)、マクロブロック(Macroblock)、符号化ツリーユニット(Coding Tree Unit)、符号化ツリーブロック(Coding Tree Block)、符号化ユニット(Coding Unit)、符号化ブロック(Coding Block)、予測ユニット(Prediction Unit)、予測ブロック(Prediction Block)、残予ユニット(Residual Unit)、残予ブロック(Residual Block)、変換ユニット(Transform Unit)、変換ブロック(Transform Block)などを意味することができる。また、ユニットは、ブロックと区分して指し示すために、輝度(Luma)成分ブロック、それに対応する色差(Chroma)成分ブロック、及び各ブロックに対する構文要素を含むことを意味することができる。ユニットは、様々なサイズと形状を持つことができ、特に、ユニットの形状は、正方形だけでなく、長方形、台形、三角形、五角形など、2次元的に表現できる幾何学的図形を含むことができる。また、ユニット情報は、符号化ユニット、予測ユニット、残予ユニット、変換ユニットなどを指し示すユニットのタイプ、ユニットの大きさ、ユニットの深さ、ユニットの符号化及び復号化順序などのうちの少なくとも一つを含むことができる。
符号化ツリーユニット(Coding Tree Unit):一つの輝度成分(Y)符号化ツリーブロックに関連した2つの色差成分(Cb,Cr)符号化ツリーブロックから構成される。また、前記ブロックと各ブロックに対する構文要素を含むことを意味することもできる。各符号化ツリーユニットは、符号化ユニット、予測ユニット、変換ユニットなどのサブユニットを構成するために、四分木(quad tree)、二分木(binary tree)、三分木(ternary tree)などの一つ以上の分割方式を用いて分割できる。入力画像の分割の如く画像の復号化/符号化過程で処理単位となるサンプルブロックを指し示すための用語として使用できる。ここで、四分木は、4分割ツリー(quarternary tree)を意味することができる。
符号化ツリーブロック(Coding Tree Block):Y符号化ツリーブロック、Cb符号化ツリーブロック及びCr符号化ツリーブロックのうちのいずれかを示すための用語として使用できる。
周辺ブロック(Neighbor block):現在ブロックに隣接するブロックを意味することができる。現在ブロックに隣接するブロックは、現在ブロックと境界が接しているブロック、又は現在ブロックから所定の距離内に位置するブロックを意味することができる。周辺ブロックは、現在ブロックの頂点に隣接するブロックを意味することができる。ここで、現在ブロックの頂点に隣接するブロックとは、現在ブロックの横に隣接する隣接ブロックと縦に隣接するブロック、又は現在ブロックの縦に隣接する隣接ブロックと横に隣接するブロックであり得る。周辺ブロックは、復元された周辺ブロックを意味することもある。
復元された周辺ブロック(Reconstructed Neighbor Block):現在ブロックの周辺に空間的(Spatial)/時間的(Temporal)に既に符号化或いは復号化された周辺ブロックを意味することができる。このとき、復元された周辺ブロックは、復元された周辺ユニットを意味することができる。復元された空間的周辺ブロックは、現在ピクチャ内のブロックでありながら符号化及び/又は復号化を介して既に復元されたブロックであり得る。復元された時間的周辺ブロックは、参照画像内で現在ピクチャの現在ブロックと対応する位置の復元されたブロック又はその周辺ブロックであり得る。
ユニット深さ(Depth):ユニットが分割された程度を意味することができる。ツリー構造(Tree Structure)における最上位ノード(Root Node)は、分割されていない最初のユニットに対応することができる。最上位ノードは、ルートノードと呼ばれることもある。また、最上位ノードは、最小の深さ値を持つことができる。このとき、最上位ノードは、レベル(Level)0の深さを持つことができる。レベル1の深さを持つノードは、最初のユニットが一度分割されることにより生成されたユニットを示すことができる。レベル2の深さを持つノードは、最初のユニットが二回分割されることにより生成されたユニットを示すことができる。レベルnの深さを持つノードは、最初のユニットがn回分割されることにより生成されたユニットを示すことができる。リーフノード(Leaf Node)は、最下位ノードであり、それ以上分割できないノードであり得る。リーフノードの深さは最大レベルであり得る。例えば、最大レベルの予め定義された値は3であり得る。ルートノードは深さが最も浅く、リーフノードは深さが最も深いといえる。また、ユニットをツリー構造で表現したとき、ユニットが存在するレベルがユニット深さを意味することができる。
ビットストリーム(Bitstream):符号化された画像情報を含むビットの列を意味することができる。
パラメータセット(Parameter Set):ビットストリーム内の構造のうちのヘッダー(header)情報に該当する。ビデオパラメータセット(video parameter set)、シーケンスパラメータセット(sequence parameter set)、ピクチャパラメータセット(picture parameter set)、適応パラメータセット(adaptation parameter set)のうちの少なくとも一つがパラメータセットに含まれ得る。また、パラメータセットはスライス(slice)ヘッダー及びタイル(tile)ヘッダー情報を含むこともできる。
パーシング(Parsing):ビットストリームをエントロピー復号化して構文要素(Syntax Element)の値を決定することを意味するか、或いはエントロピー復号化自体を意味することができる。
シンボル(Symbol):符号化/復号化対象ユニットの構文要素、符号化パラメータ(coding parameter)、変換係数(Transform Coefficient)の値などのうちの少なくとも一つを意味することができる。また、シンボルは、エントロピー符号化の対象或いはエントロピー復号化の結果を意味することができる。
予測モード(Prediction Mode):画面内予測で符号化/復号化されるモード、又は画面間予測で符号化/復号化されるモードを指し示す情報であり得る。
予測ユニット(Prediction Unit):画面間予測、画面内予測、画面間補償、画面内補償、動き補償など、予測を行うときの基本単位を意味することができる。一つの予測ユニットは、より小さいサイズを有する複数のパーティション(Partition)又は複数のサブ予測ユニットに分割されてもよい。複数のパーティションも予測又は補償の実行における基本単位であり得る。予測ユニットの分割によって生成されたパーティションも予測ユニットであり得る。
予測ユニットパーティション(Prediction Unit Partition):予測ユニットが分割された形態を意味することができる。
参照画像リスト(Reference Picture List):画面間予測或いは動き補償に使用される一つ以上の参照画像を含むリストを意味することができる。参照画像リストの種類は、LC(List Combined)、L0(List 0)、L1(List 1)、L2(List 2)、L3(List 3)などが挙げられる。画面間予測には、一つ以上の参照画像リストが使用できる。
画面間予測インジケータ(Inter Prediction Indicator): 現在ブロックの画面間予測方向(一方向予測、双方向/双予測/両方向予測など)を意味することができる。又は、現在ブロックの予測ブロックを生成するときに使用される参照画像の個数を意味することができる。又は、現在ブロックに対して画面間予測或いは動き補償を行うときに使用される予測ブロックの個数を意味することができる。
予測リスト活用フラグ(prediction list utilization flag):特定の参照画像リスト内の少なくとも一つの参照画像を用いて予測ブロックを生成するか否かを示す。予測リスト活用フラグを用いて画面間予測インジケータを導出することができ、逆に画面間予測インジケータを用いて予測リスト活用フラグを導出することができる。たとえば、予測リスト活用フラグが第1の値「0」を指示する場合には、当該参照画像リスト内の参照画像を用いて予測ブロックを生成しないことを示すことができ、第2の値「1」を指示する場合には、当該参照画像リストを用いて予測ブロックを生成することができることを示すことができる。
参照画像インデックス(Reference Picture Index):参照画像リストにおいて特定の参照画像を指し示すインデックスを意味することができる。
参照画像(Reference Picture):画面間予測或いは動き補償のために特定のブロックが参照する画像を意味することができる。又は、参照画像は、画面間予測又は動き補償のために現在ブロックが参照する参照ブロックを含む画像であり得る。以下、用語「参照ピクチャ」及び「参照画像」は、同一の意味で使用されることもあり、入れ替わって使用されることもある。
動きベクトル(Motion Vector):画面間予測或いは動き補償に使用される2次元ベクトルであり得る。動きベクトルは、符号化/復号化対象ブロックと参照ブロックとの間のオフセットを意味することができる。例えば、(mvX,mvY)は動きベクトルを示すことができる。mvXは水平(horizontal)成分、mvYは垂直(vertical)成分を示すことができる。
探索領域(Search Range):探索領域は、画面間予測のうち、動きベクトルに対する探索が行われる2次元の領域であり得る。例えば、探索領域のサイズはMxNであり得る。M及びNはそれぞれ正の整数であり得る。
動きベクトル候補(Motion Vector Candidate):動きベクトルを予測するときに予測候補となるブロック、或いはそのブロックの動きベクトルを意味することができる。また、動きベクトル候補は、動きベクトル候補リストに含まれてもよい。
動きベクトル候補リスト(Motion Vector Candidate List):一つ以上の動きベクトル候補を用いて構成されたリストを意味することができる。
動きベクトル候補インデックス(Motion Vector Candidate Index):動きベクトル候補リスト内の動きベクトル候補を示すインジケータを意味することができる。動きベクトル予測器(Motion Vector Predictor)のインデックス(index)であってもよい。
動き情報(Motion Information):動きベクトル、参照画像インデックス、画面間予測インジケータだけでなく、予測リスト活用フラグ、参照画像リスト情報、参照画像、動きベクトル候補、動きベクトル候補インデックス、マージ候補、マージンインデックスなどのうちの少なくとも一つを含む情報を意味することができる。
マージ候補リスト(Merge Candidate List):一つ以上のマージ候補を用いて構成されたリストを意味することができる。
マージ候補(Merge Candidate):空間マージ候補、時間マージ候補、組み合わせマージ候補、組み合わせ双予測マージ候補、ゼロマージ候補などを意味することができる。マージ候補は、画面間予測インジケータ、各リストに対する参照画像インデックス、動きベクトル、予測リスト活用フラグ、画面間予測インジケータなどの動き情報を含むことができる。
マージインデックス(Merge Index):マージ候補リスト内のマージ候補を指し示すインジケータを意味することができる。また、マージインデックスは、空間的/時間的に現在ブロックと隣接するように復元されたブロックのうち、マージ候補を誘導したブロックを示すことができる。また、マージインデックスは、マージ候補が持つ動き情報のうちの少なくとも一つを示すことができる。
変換ユニット(Transform Unit):変換、逆変換、量子化、逆量子化、変換係数符号化/復号化のように残余信号(residual signal)符号化/復号化を行うときの基本単位を意味することができる。一つの変換ユニットは、分割されてサイズがさらに小さい複数のサブ変換ユニットに分割できる。ここで、変換/逆変換は、1次変換/逆変換及び2次変換/逆変換のうちの少なくとも一つを含むことができる。
スケーリング(Scaling):量子化されたレベルに因数を掛ける過程を意味することができる。量子化されたレベルに対するスケーリングの結果として変換係数を生成することができる。スケーリングを逆量子化(dequantization)とも呼ぶことができる。
量子化パラメータ(Quantization Parameter):量子化において変換係数を用いて量子化されたレベル(quantized level)を生成するときに使用する値を意味することができる。又は、逆量子化において量子化されたレベルをスケーリング(scaling)して変換係数を生成するときに使用する値を意味することもできる。量子化パラメータは、量子化ステップサイズ(step size)にマッピングされた値であり得る。
デルタ量子化パラメータ(Delta Quantization Parameter):予測された量子化パラメータと符号化/復号化対象ユニットの量子化パラメータとの差分(difference)値を意味することができる。
スキャン(Scan):ユニット、ブロック或いは行列内係数の順序をソートする方法を意味することができる。例えば、2次元配列を1次元配列にソートすることをスキャンという。又は、1次元配列を2次元配列にソートすることもスキャン或いは逆スキャン(Inverse Scan)と呼ぶことができる。
変換係数(Transform Coefficient):符号化器で変換を行ってから生成された係数値を意味することができる。復号化器でエントロピー復号化及び逆量子化のうちの少なくとも一つを行ってから生成された係数値を意味することもできる。変換係数又は残予信号に量子化を適用した量子化レベル又は量子化変換係数レベルも変換係数の意味に含まれ得る。
量子化レベル(Quantized Level):符号化器で変換係数又は残余信号に量子化を行って生成された値を意味することができる。又は、復号化器で逆量子化を行う前に逆量子化の対象となる値を意味することもできる。同様に、変換及び量子化の結果である量子化変換係数レベルも量子化レベルの意味に含まれ得る。
ノンゼロ変換係数(Non-zero Transform Coefficient):値の大きさが0ではない変換係数、或いは値の大きさが0ではない変換係数レベル、或いは量子化されたレベルを意味することができる。
量子化行列(Quantization Matrix):画像の主観的画質或いは客観的画質を向上させるために量子化或いは逆量子化過程で利用する行列を意味することができる。量子化行列をスケーリングリスト(scaling list)とも呼ぶことができる。
量子化行列係数(Quantization Matrix Coefficient):量子化行列内の各元素(element)を意味することができる。量子化行列係数を行列係数(matrix coefficient)とも呼ぶことができる。
基本行列(Default Matrix):符号化器と復号化器で予め定義されている所定の量子化行列を意味することができる。
非基本行列(Non-default Matrix):符号化器と復号化器で予め定義されず、ユーザによってシグナリングされる量子化行列を意味することができる。
統計値(statistic value):演算可能な特定の値を有する変数、符号化パラメータ、定数などの少なくとも一つに対する統計値は、当該特定値の平均値、重み付け平均値、重み付け和値、最小値、最大値、最頻値、中央値及び補間値のうちの少なくとも一つであり得る。
図1は本発明が適用される符号化装置の一実施形態による構成を示すブロック図である。
符号化装置100は、エンコーダ、ビデオ符号化装置又は画像符号化装置であり得る。ビデオは、一つ以上の画像を含むことができる。符号化装置100は、一つ以上の画像を順次符号化することができる。
図1を参照すると、符号化装置100は、動き予測部111、動き補償部112、イントラ予測部120、スイッチ115、減算器125、変換部130、量子化部140、エントロピー符号化部150、逆量子化部160、逆変換部170、加算器175、フィルタ部180、及び参照ピクチャバッファ190を含むことができる。
符号化装置100は、入力画像に対してイントラモード及び/又はインターモードで符号化を行うことができる。また、符号化装置100は、入力画像に対する符号化を介して符号化された情報を含むビットストリームを生成することができ、生成されたビットストリームを出力することができる。生成されたビットストリームは、コンピュータ可読記録媒体に保存できるか、或いは有線/無線伝送媒体を介してストリミングできる。予測モードとしてイントラモードが使用される場合、スイッチ115はイントラに転換でき、予測モードとしてインターモードが使用される場合、スイッチ115はインターに転換できる。ここで、イントラモードは画面内予測モードを意味することができ、インターモードは画面間予測モードを意味することができる。符号化装置100は、入力画像の入力ブロックに対する予測ブロックを生成することができる。また、符号化装置100は、予測ブロックが生成された後、入力ブロック及び予測ブロックの差分(residual)を用いて残余ブロックを符号化することができる。入力画像は、現在符号化の対象である現在画像と称されることもある。入力ブロックは、現在符号化の対象である現在ブロック或いは符号化対象ブロックと称されることもある。
予測モードがイントラモードである場合、イントラ予測部120は、現在ブロックの周辺に既に符号化/復号化されたブロックのサンプルを参照サンプルとしても用いることができる。イントラ予測部120は、参照サンプルを用いて現在ブロックに対する空間的予測を行うことができ、空間的予測を介して入力ブロックに対する予測サンプルを生成することができる。ここで、イントラ予測は画面内予測を意味することができる。
予測モードがインターモードである場合には、動き予測部111は、動き予測過程で参照画像から入力ブロックと最もよくマッチする領域を検索することができ、検索された領域を用いて動きベクトルを導出することができる。この際、前記領域として探索領域を使用することができる。参照画像は、参照ピクチャバッファ190に保存できる。ここで、参照画像に対する符号化/復号化が処理されたとき、参照ピクチャバッファ190に保存できる。
動き補償部112は、動きベクトルを用いる動き補償を行うことにより、現在ブロックに対する予測ブロックを生成することができる。ここで、インター予測は画面間予測或いは動き補償を意味することができる。
前記動き予測部111と動き補償部112は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタ(Interpolation Filter)を適用して予測ブロックを生成することができる。画面間予測或いは動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き予測及び動き補償方法がスキップモード(Skip Mode)、マージモード(Merge mode)、向上した動きベクトル予測(Advanced Motion Vector Prediction、AMVP)モード、及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて、画面間予測或いは動き補償を行うことができる。
減算器125は、入力ブロック及び予測ブロックの差分を用いて残余ブロックを生成することができる。残余ブロックは残余信号とも称される。残余信号は、原信号と予測信号との差(difference)を意味することができる。又は、残余信号は、原信号と予測信号との差を変換(transform)するか、量子化するか、又は変換及び量子化することにより生成された信号であり得る。残余ブロックはブロック単位の残余信号であり得る。
変換部130は、残余ブロックに対して変換(transform)を行って変換係数(transform coefficient)を生成することができ、生成された変換係数を出力することができる。ここで、変換係数は、残余ブロックに対する変換を行うことにより生成された係数値であり得る。変換省略(transform skip)モードが適用される場合、変換部130は残余ブロックに対する変換を省略することもできる。
変換係数又は残余信号に量子化を適用することにより、量子化レベル(quantized level)が生成できる。以下、実施形態では、量子化レベルも変換係数と称されることがある。
量子化部140は、変換係数又は残余信号を量子化パラメータに基づいて量子化することにより量子化レベルを生成することができ、生成された量子化レベルを出力することができる。このとき、量子化部140では、量子化行列を用いて変換係数を量子化することができる。
エントロピー符号化部150は、量子化部140で算出された値、又は符号化過程で算出された符号化パラメータ(Coding Parameter)値などに対して確率分布によるエントロピー符号化を行うことにより、ビットストリーム(bitstream)を生成することができ、ビットストリームを出力することができる。エントロピー符号化部150は、画像のサンプルに関する情報及び画像の復号化のための情報に対するエントロピー符号化を行うことができる。例えば、画像の復号化のための情報は構文要素(syntax element)などを含むことができる。
エントロピー符号化が適用される場合、高い発生確率を有するシンボル(symbol)に少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることにより、符号化対象シンボルに対するビット列のサイズが減少できる。エントロピー符号化部150は、エントロピー符号化のために指数ゴロム(exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)などの符号化方法を使用することができる。例えば、エントロピー符号化部150は、可変長符号化(Variable Length Coding/Code;VLC)テーブルを用いてエントロピー符号化を行うことができる。また、エントロピー符号化部150は、対象シンボルの2値化(binarization)方法及び対象シンボル/ビン(bin)の確率モデル(probability model)を導出した後、導出された2値化方法、確率モデル、コンテキストモデル(Context Model)を用いて算術符号化を行うこともできる。
エントロピー符号化部150は、変換係数レベル(量子化レベル)を符号化するために、変換係数スキャニング(Transform Coefficient Scanning)方法を介して2次元のブロック形態(form)係数を1次元のベクトルに変更することができる。
符号化パラメータ(Coding Parameter)は、構文要素のように符号化器で符号化されて復号化器へシグナリングされる情報(フラグ、インデックスなど)だけでなく、符号化過程或いは復号化過程で誘導される情報を含むことができ、画像を符号化又は復号化するときに必要な情報を意味することができる。例えば、ユニット/ブロックサイズ、ユニット/ブロック深さ、ユニット/ブロック分割情報、ユニット/ブロック形態、ユニット/ブロック分割構造、四分木分割か否か、二分木分割か否か、二分木分割の方向(横方向或いは縦方向)、二分木分割の形態(対称分割或いは非対称分割)、三分木分割か否か、三分木分割の方向(横方向或いは縦方向)、三分木分割の形態(対称分割或いは非対称分割)、複合型ツリー分割か否か、複合型ツリー分割の方向(横方向或いは縦方向)、複合型ツリー分割の形態(対称分割或いは非対称分割)、複合型ツリーの分割ツリー(二分木或いは三分木)、予測モード(画面内予測又は画面間予測)、画面内輝度予測モード/方向、画面内色差予測モード/方向、画面内分割情報、画面間分割情報、符号化ブロック分割フラグ、予測ブロック分割フラグ、変換ブロック分割フラグ、参照サンプルフィルタリング方法、参照サンプルフィルタタップ、参照サンプルフィルタ係数、予測ブロックフィルタリング方法、予測ブロックフィルタタップ、予測ブロックフィルタ係数、予測ブロック境界フィルタリング方法、予測ブロック境界フィルタタップ、予測ブロック境界フィルタ係数、画面内予測モード、画面間予測モード、動き情報、動きベクトル、動きベクトル差分、参照画像インデックス、画面間予測方向、画面間予測インジケータ、予測リスト活用フラグ、参照画像リスト、参照画像、動きベクトル予測インデックス、動きベクトル予測候補、動きベクトル候補リスト、マージモードの使用有無、マージインデックス、マージ候補、マージ候補リスト、スキップ(skip)モードの使用有無、補間フィルタの種類、補間フィルタタップ、補間フィルタ係数、動きベクトルのサイズ、動きベクトルの表現精度、変換種類、変換サイズ、1次変換の使用有無情報、2次変換の使用有無情報、1次変換インデックス、2次変換インデックス、残予信号有無情報、符号化ブロックパターン(Coded Block Pattern)、符号化ブロックフラグ(Coded Block Flag)、量子化パラメータ、残余量子化パラメータ、量子化行列、画面内ループフィルタの適用か否か、画面内ループフィルタ係数、画面内ループフィルタタップ、画面内ループフィルタの形状/形態、デブロッキングフィルタの適用か否か、デブロッキングフィルタ係数、デブロッキングフィルタタップ、デブロッキングフィルタの強度、デブロッキングフィルタの形状/形態、適応的サンプルオフセットの適用か否か、適応的サンプルオフセット値、適応的サンプルオフセットのカテゴリー、適応的サンプルオフセットの種類、適応的ループフィルタの適用か否か、適応的ループフィルタ係数、適応的ループフィルタタップ、適応的ループフィルタの形状/形態、二値化/逆二値化方法、コンテキストモデル決定方法、コンテキストモデルアップデート方法、レギュラーモードの実行有無、バイパスモードの実行有無、コンテキストビン、バイパスビン、重要係数、フラグ、最後の重要係数フラグ、係数グループ単位符号化フラグ、最後の重要係数位置、係数値が1よりも大きいかに対するフラグ、係数値が2よりも大きいかに対するフラグ、係数値が3よりも大きいかに対するフラグ、残りの係数値情報、符号(sign)情報、復元された輝度サンプル、復元された色差サンプル、残余輝度サンプル、残余色差サンプル、輝度変換係数、色差変換係数、輝度量子化レベル、色差量子化レベル、変換係数レベルスキャニング方法、復号化器側面動きベクトル探索領域の大きさ、復号化器側面動きベクトル探索領域の形態、復号化器側面動きベクトル探索回数、CTUのサイズ情報、最小ブロックのサイズ情報、最大ブロックのサイズ情報、最大ブロックの深さ情報、最小ブロックの深さ情報、画像ディスプレイ/出力順序、スライス識別情報、スライスタイプ、スライス分割情報、タイル識別情報、タイルタイプ、タイル分割情報、ピクチャタイプ、入力サンプルビット深度、復元サンプルビット深度、残余サンプルビット深度、変換係数ビット深度、量子化レベルビット深度、輝度信号に対する情報、色差信号に対する情報のうちの少なくとも一つの値又は組み合わせ形態が符号化パラメータに含まれ得る。
ここで、フラグ或いはインデックスをシグナリング(signaling)するというのは、エンコーダでは該当フラグ或いはインデックスをエントロピー符号化(Entropy Encoding)してビットストリーム(Bitstream)に含むことを意味することができ、デコーダではビットストリームから当該フラグ或いはインデックスをエントロピー復号化(Entropy Decoding)することを意味することができる。
符号化装置100がインター予測を用いた符号化を行う場合、符号化された現在画像は、後で処理される他の画像に対する参照画像として使用できる。よって、符号化装置100は、符号化された現在画像をさらに復元又は復号化することができ、復元又は復号化された画像を参照画像として参照ピクチャバッファ190に保存することができる。
量子化レベルは、逆量子化部160で逆量子化(dequantization)でき、逆変換部170で逆変換(inverse transform)できる。逆量子化及び/又は逆変換された係数は、加算器175を介して予測ブロックと合わせられ得る。逆量子化及び/又は逆変換された係数と予測ブロックとを合わせることにより、復元ブロック(reconstructed block)が生成できる。ここで、逆量子化及び/又は逆変換された係数は、逆量子化及び逆変換のうちの少なくとも一つが行われた係数を意味し、復元された残余ブロックを意味することができる。
復元ブロックはフィルタ部180を経ることができる。フィルタ部180は、デブロッキングフィルタ(deblocking filter)、サンプル適応的オフセット(Sample Adaptive Offset;SAO)、適応的ループフィルタ(Adaptive Loop Filter;ALF)などの少なくとも一つを復元サンプル、復元ブロック又は復元画像に適用することができる。フィルタ部180はループ内フィルタ(in-loop filter)とも称される。
デブロッキングフィルタは、ブロック間の境界から生じたブロック歪みを除去することができる。デブロッキングフィルタを行うか否かを判断するために、ブロックに含まれている幾つかの列又は行に含まれているサンプルに基づいて、現在ブロックにデブロッキングフィルタを適用するか否かを判断することができる。ブロックにデブロッキングフィルタを適用する場合、必要なデブロッキングフィルタリング強度に応じて、互いに異なるフィルタを適用することができる。
サンプル適応的オフセットを用いて符号化エラーを補償するために、サンプル値に適正オフセット(offset)値を加えることができる。サンプル適応的オフセットは、デブロッキングを行った画像に対してサンプル単位で原本画像とのオフセットを補正することができる。画像に含まれているサンプルを一定数の領域に区分した後、オフセットを行うべき領域を決定し、該当領域にオフセットを適用する方法、又は各サンプルのエッジ情報を考慮してオフセットを適用する方法を使用することができる。
適応的ループフィルタは、復元画像と原画像とを比較した値に基づいてフィルタリングを行うことができる。画像に含まれているサンプルを所定のグループに分けた後、当該グループに適用されるべきフィルタを決定してグループごとに差別的にフィルタリングを行うことができる。適応的ループフィルタを適用するか否かに関連した情報は、符号化ユニット(Coding Unit、CU)別にシグナリングでき、それぞれのブロックに応じて、適用される適応的ループフィルタの形状及びフィルタ係数は異なり得る。
フィルタ部180を経た復元ブロック又は復元画像は、参照ピクチャバッファ190に保存できる。フィルタ部180を経た復元ブロックは、参照画像の一部であり得る。いわば、参照画像は、フィルタ180を経た復元ブロックからなる復元画像であり得る。保存された参照画像は、以後、画面間予測或いは動き補償に使用できる。
図2は本発明が適用される復号化装置の一実施形態による構成を示すブロック図である。
復号化装置200はデコーダ、ビデオ復号化装置又は画像復号化装置であり得る。
図2を参照すると、復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、加算器255、フィルタ部260、及び参照ピクチャバッファ270を含むことができる。
復号化装置200は、符号化装置100から出力されたビットストリームを受信することができる。復号化装置200は、コンピュータ可読記録媒体に保存されたビットストリームを受信するか、或いは有線/無線伝送媒体を介してストリミングされるビットストリームを受信することができる。復号化装置200は、ビットストリームに対してイントラモード又はインターモードで復号化を行うことができる。また、復号化装置200は、復号化を介して復元された画像又は復号化された画像を生成することができ、復元された画像又は復号化された画像を出力することができる。
復号化に使用される予測モードがイントラモードである場合、スイッチがイントラに転換できる。復号化に使用される予測モードがインターモードである場合、スイッチがインターに転換できる。
復号化装置200は、入力されたビットストリームを復号化し、復元された残余ブロック(reconstructed residual block)を取得することができ、予測ブロックを生成することができる。復元された残余ブロック及び予測ブロックが取得されると、復号化装置200は、復元された残余ブロックと予測ブロックとを加算することにより、復号化の対象となる復元ブロックを生成することができる。復号化対象ブロックは現在ブロックと称されることもある。
エントロピー復号化部210は、ビットストリームに対する確率分布に基づくエントロピー復号化を行うことにより、シンボルを生成することができる。生成されたシンボルは、量子化レベル形態のシンボルを含むことができる。ここで、エントロピー復号化方法は、上述したエントロピー符号化方法の逆過程であり得る。
エントロピー復号化部210は、変換係数レベル(量子化レベル)を復号化するために、変換係数のスキャニング方法によって1次元のベクトル形態係数を2次元のブロック形態に変更することができる。
量子化レベルは、逆量子化部220で逆量子化でき、逆変換部230で逆変換できる。量子化レベルは、逆量子化及び/又は逆変換が行われた結果であって、復元された残余ブロックとして生成できる。このとき、逆量子化部220は、量子化レベルに量子化行列を適用することができる。
イントラモードが使用される場合、イントラ予測部240は、復号化対象ブロック周辺の、既に復号化されたブロックのサンプル値を用いる空間的予測を現在ブロックに対して行うことにより、予測ブロックを生成することができる。
インターモードが使用される場合、動き補償部250は、動きベクトル及び参照ピクチャバッファ270に保存されている参照画像を用いる動き補償を現在ブロックに対して行うことにより、予測ブロックを生成することができる。前記動き補償部250は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタを適用して予測ブロックを生成することができる。動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き補償方法がスキップモード、マージモード、AMVPモード、及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて動き補償を行うことができる。
加算器225は、復元された残余ブロック及び予測ブロックを加算して復元ブロックを生成することができる。フィルタ部260は、デブロッキングフィルタ、サンプル適応的オフセット及び適応的ループフィルタのうちの少なくとも一つを復元ブロック又は復元画像に適用することができる。フィルタ部260は復元画像を出力することができる。復元ブロック又は復元画像は、参照ピクチャバッファ270に保存されてインター予測に使用できる。フィルタ部260を経た復元ブロックは、参照画像の一部であり得る。いわば、参照画像は、フィルタ部260を経た復元ブロックからなる復元画像であり得る。保存された参照画像は、以後、画面間予測或いは動き補償に使用できる。
図3は画像を符号化及び復号化するときの画像の分割構造を示す概略図である。図3は一つのユニットが複数のサブユニットに分割される実施形態を概略的に示す。
画像を効率よく分割するために、符号化及び復号化において、符号化ユニット(Coding Unit;CU)が使用できる。画像符号化/復号化の基本単位として符号化ユニットが使用できる。また、画像符号化/復号化の際に、画面内予測モード及び画面間予測モードが区分される単位で符号化ユニットを使用することができる。符号化ユニットは、予測、変換、量子化、逆変換、逆量子化、又は変換係数の符号化/復号化の過程のために使用される基本単位であり得る。
図3を参照すると、画像300は、最大符号化ユニット(Largest Coding Unit;LCU)単位で順次分割され、LCU単位で分割構造が決定される。ここで、LCUは、符号化ツリーユニット(Coding Tree Unit;CTU)と同一の意味で使用できる。ユニットの分割は、ユニットに該当するブロックの分割を意味することができる。ブロック分割情報には、ユニットの深さ(depth)に関する情報が含まれ得る。深さ情報は、ユニットが分割される回数及び/又は程度を示すことができる。一つのユニットは、ツリー構造(tree structure)に基づいて深さ情報をもって階層的に複数のサブユニットに分割できる。いわば、ユニット及び該ユニットの分割によって生成されたサブユニットは、ノード及び該ノードの子ノードにそれぞれ対応することができる。それぞれの分割されたサブユニットは、深さ情報を持つことができる。深さ情報は、CUの大きさを示す情報であり、各CUごとに保存できる。ユニット深さは、ユニットが分割された回数及び/又は程度を示すので、サブユニットの分割情報は、サブユニットの大きさに関する情報を含むこともできる。
分割構造は、CTU310内での符号化ユニット(Coding Unit;CU)の分布を意味することができる。このような分布は、一つのCUを複数(2、4、8、16などを含む2以上の正の整数)のCUに分割するか否かによって決定することができる。分割により生成されたCUの横幅と縦幅は、それぞれ分割前のCUの横幅の半分及び縦幅の半分であるか、分割された個数に応じて分割前のCUの横幅よりも小さいサイズ及び縦幅よりも小さいサイズを持つことができる。CUは複数のCUに再帰的に分割できる。再帰的分割によって、分割されたCUの横幅及び縦幅のうちの少なくとも一つのサイズが分割前のCUの横幅及び縦幅のうちの少なくとも一つに比べて減少できる。CUの分割は、予め定義された深さ又は予め定義されたサイズまで再帰的に行われ得る。例えば、CTUの深さは0であり、最小符号化ユニット(Smallest Coding Unit;SCU)の深さは予め定義された最大深さであり得る。ここで、CTUは、上述したように、最大の符号化ユニットサイズを持つ符号化ユニットであり、SCUは、最小の符号化ユニットのサイズを持つ符号化ユニットであり得る。CTU310から分割が始まり、分割によってCUの横幅及び/又は縦幅が減少するたびに、CUの深さは1ずつ増加する。例えば、それぞれの深さ別に、分割されないCUは2N×2Nサイズを有することができる。また、分割されるCUの場合、2N×2NサイズのCUが、N×Nサイズを有する4つのCUに分割できる。Nのサイズは深さが1ずつ増加するたびに半分に減少することができる。
また、CUが分割されるか否かに対する情報は、CUの分割情報を介して表現できる。分割情報は1ビットの情報であり得る。SCUを除いた全てのCUは、分割情報を含むことができる。例えば、分割情報の値が第1の値であれば、CUが分割されなくてもよく、分割情報の値が第2の値であれば、CUが分割されてもよい。
図3を参照すると、深さ0のCTUは64×64ブロックであり得る。0は最小深さであり得る。深さ3のSCUは8×8ブロックであり得る。3は最大深さであり得る。32×32ブロック及び16×16ブロックのCUはそれぞれ深さ1及び深さ2で表現できる。
例えば、一つの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットの横幅及び縦幅は、分割される前の符号化ユニットの横幅及び縦幅と比較してそれぞれの半分のサイズを持つことができる。一例として、32×32サイズの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットはそれぞれ16×16のサイズを持つことができる。一つの符号化ユニットが4つの符号化ユニットに分割される場合、符号化ユニットは四分木(quad-tree)状に分割(四分木分割、quad-tree partition)されたといえる。
例えば、一つの符号化ユニットが2つの符号化ユニットに分割される場合、分割された2つの符号化ユニットの横幅或いは縦幅は、分割される前の符号化ユニットの横幅或いは縦幅と比較して半分のサイズを持つことができる。一例として、32×32サイズの符号化ユニットが2つの符号化ユニットに縦分割される場合、分割された2つの符号化ユニットは、それぞれ16×32のサイズを有することができる。一例として、8×32サイズの符号化ユニットが2つの符号化ユニットに横分割される場合、分割された2つの符号化ユニットは、それぞれ8×16のサイズを有することができる。一つの符号化ユニットが2つの符号化ユニットに分割される場合、符号化ユニットは二分木(binary-tree)状に分割(二分木分割、binary-tree partition)されたといえる。
例えば、一つの符号化ユニットが3つの符号化ユニットに分割される場合、分割される前に符号化ユニットの横幅或いは縦幅を1:2:1の比率で分割することにより、3つの符号化ユニットに分割することができる。一例として、16x32サイズの符号化ユニットが3つの符号化ユニットに横分割される場合、分割された3つの符号化ユニットは、上側からそれぞれ16x8、16x16及び16x8のサイズを有することができる。一例として、32x32サイズの符号化ユニットが3つの符号化ユニットに縦分割される場合、分割された3つの符号化ユニットは、左側からそれぞれ8x32、16x32及び8x32のサイズを有することができる。一つの符号化ユニットが3つの符号化ユニットに分割される場合、符号化ユニットは、三分木(ternary-tree)状に分割(三分木分割、ternary-tree partition)されたといえる。
図3のCTU320は、四分木分割、二分木分割及び三分木分割がすべて適用されたCTUの一例である。
前述したように、CTUを分割するために、四分木分割、二分木分割及び三分木分割のうちの少なくとも一つが適用できる。それぞれの分割は、所定の優先順位に基づいて適用できる。例えば、CTUに対して四分木分割が優先的に適用できる。それ以上四分木分割できない符号化ユニットは、四分木のリーフノードに該当することができる。四分木のリーフノードに該当する符号化ユニットは、二分木及び/又は三分木のルートノードになることができる。つまり、四分木のリーフノードに該当する符号化ユニットは、二分木分割されるか、三分木分割されるか、或いはそれ以上分割できない。このとき、四分木のリーフノードに該当する符号化ユニットを二分木分割又は三分木分割して生成された符号化ユニットに対しては、再び四分木分割が行われないようにすることにより、ブロックの分割及び/又は分割情報のシグナリングを効果的に行うことができる。
四分木の各ノードに該当する符号化ユニットの分割は、クワッド分割情報を用いてシグナリングできる。第1の値(例えば、「1」)を有するクワッド分割情報は、該当符号化ユニットが四分木分割されることを指示することができる。第2の値(例えば、「0」)を有するクワッド分割情報は、当該符号化ユニットが四分木分割されないことを指示することができる。クワッド分割情報は、所定の長さ(例えば、1ビット)を有するフラグであり得る。
二分木分割と三分木分割との間には、優先順位が存在しないこともある。つまり、四分木のリーフノードに該当する符号化ユニットは、二分木分割又は三分木分割できる。また、二分木分割又は三分木分割により生成された符号化ユニットは、再び二分木分割又は三分木分割されるか、或いはそれ以上分割できない。
二分木分割と三分木分割との間に優先順位が存在しない場合の分割は、複合型ツリー分割(multi-type tree partition)と呼ぶことがある。すなわち、四分木のリーフノードに該当する符号化ユニットは、複合型ツリー(multi-type tree)のルートノードになることができる。複合型ツリーの各ノードに該当する符号化ユニットの分割は、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つを用いてシグナリングできる。前記複合型ツリーの各ノードに該当する符号化ユニットの分割のために、分割か否かの情報、分割方向情報及び分割ツリー情報が順次シグナリングされてもよい。
第1の値(例えば、「1」)を有する複合型ツリーの分割か否かの情報は、当該符号化ユニットが複合型ツリー分割されることを指示することができる。第2の値(例えば、「0」)を有する複合型ツリーの分割か否かの情報は、該当符号化ユニットが複合型ツリー分割されないことを指示することができる。
複合型ツリーの各ノードに該当する符号化ユニットが複合型ツリー分割される場合、当該符号化ユニットは、分割方向情報をさらに含むことができる。分割方向情報は、複合型ツリー分割の分割方向を指示することができる。第1の値(例えば、「1」)を有する分割方向情報は、当該符号化ユニットが縦方向に分割されることを指示することができる。第2の値(例えば、「0」)を有する分割方向情報は、当該符号化ユニットが横方向に分割されることを指示することができる。
複合型ツリーの各ノードに該当する符号化ユニットが複合型ツリー分割される場合、当該符号化ユニットは、分割ツリー情報をさらに含むことができる。分割ツリー情報は、複合型ツリー分割のために使用されたツリーを指示することができる。第1の値(例えば、「1」)を有する分割ツリー情報は、当該符号化ユニットが二分木分割されることを指示することができる。第2の値(例えば、「0」)を有する分割ツリー情報は、当該符号化ユニットが三分木分割されることを指示することができる。
分割か否かの情報、分割ツリー情報及び分割方向情報は、それぞれ所定の長さ(例えば、1ビット)を有するフラグであり得る。
クワッド分割情報、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つは、エントロピー符号化/復号化できる。前記情報のエントロピー符号化/復号化のために、現在符号化ユニットに隣接する周辺符号化ユニットの情報が利用できる。例えば、左側符号化ユニット及び/又は上側符号化ユニットの分割形態(分割か否か、分割ツリー及び/又は分割方向)は、現在符号化ユニットの分割形態に類似する確率が高い。よって、周辺符号化ユニットの情報に基づいて、現在符号化ユニットの情報のエントロピー符号化/復号化のためのコンテキスト情報を誘導することができる。このとき、周辺符号化ユニットの情報には、当該符号化ユニットのクワッド分割情報、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つが含まれ得る。
他の実施形態として、二分木分割と三分木分割のうち、二分木分割が優先的に実行できる。すなち、二分木分割が先に適用され、二分木のリーフノードに該当する符号化ユニットを三分木のルートノードとして設定することもできる。この場合、三分割木のノードに該当する符号化ユニットに対しては、四分木分割及び二分木分割が行われないことがある。
四分木分割、二分木分割及び/又は三分木分割によってそれ以上分割されない符号化ユニットは、符号化、予測及び/又は変換の単位になることができる。すなわち、予測及び/又は変換のために符号化ユニットがそれ以上分割されないことがある。したがって、符号化ユニットを予測ユニット及び/又は変換ユニットに分割するための分割構造、分割情報などがビットストリームに存在しないことがある。
ただし、分割の単位となる符号化ユニットのサイズが最大変換ブロックのサイズよりも大きい場合、該当符号化ユニットは、最大変換ブロックのサイズと同じか或いは小さいサイズになるまで再帰的に分割できる。例えば、符号化ユニットのサイズが64x64であり、最大変換ブロックのサイズが32x32である場合、前記符号化ユニットは、変換のために、4つの32x32ブロックに分割できる。例えば、符号化ユニットのサイズが32x64であり、最大変換ブロックのサイズが32x32である場合、前記符号化ユニットは、変換のために、2つの32x32ブロックに分割できる。この場合には、変換のための符号化ユニットの分割か否かは、別にシグナリングされず、前記符号化ユニットの横又は縦と最大変換ブロックの横又は縦との比較によって決定できる。例えば、符号化ユニットの横が最大変換ブロックの横よりも大きい場合、符号化ユニットは、縦に2等分できる。また、符号化ユニットの縦が最大変換ブロックの縦よりも大きい場合、符号化ユニットは横方向に2等分できる。
符号化ユニットの最大及び/又は最小サイズに関する情報、変換ブロックの最大及び/又は最小サイズに関する情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。例えば、符号化ユニットの最小サイズは4x4と決定されてもよい。例えば、変換ブロックの最大サイズは64x64と決定されてもよい。例えば、変換ブロックの最小サイズは4x4と決定されてもよい。
四分木のリーフノードに該当する符号化ユニットの最小サイズ(四分木の最小サイズ)に関する情報、及び/又は複合型ツリーのルートノードからリーフノードに至る最大深さ(複合型ツリーの最大深さ)に関する情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。前記四分木の最小サイズに関する情報、及び/又は前記複合型ツリーの最大深さに関する情報は、画面内スライスと画面間スライスのそれぞれに対してシグナリング又は決定できる。
CTUのサイズと変換ブロックの最大サイズに関する差分情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。二分木の各ノードに該当する符号化ユニットの最大サイズ(二分木の最大サイズ)に関する情報は、符号化ツリーユニットの大きさと前記差分情報に基づいて決定できる。三分木の各ノードに該当する符号化ユニットの最大サイズ(三分木の最大サイズ)は、スライスのタイプによって異なる値を持つことができる。例えば、画面内スライスである場合には、三分木の最大サイズは32x32であってもよい。また、例えば、画面間スライスである場合には、三分木の最大サイズは128x128であってもよい。例えば、二分木の各ノードに該当する符号化ユニットの最小サイズ(二分木の最小サイズ)及び/又は三分木の各ノードに該当する符号化ユニットの最小サイズ(三分木の最小サイズ)は、符号化ブロックの最小サイズとして設定できる。
別の例として、二分木の最大サイズ及び/又は三分木の最大サイズは、スライスレベルでシグナリング又は決定できる。また、二分木の最小サイズ及び/又は三分木の最小サイズは、スライスレベルでシグナリング又は決定できる。
前述した様々なブロックのサイズ及び深さ情報に基づいて、クワッド分割情報、複合型ツリーの分割か否かの情報、分割ツリー情報及び/又は分割方向情報などがビットストリームに存在しても存在しなくてもよい。
例えば、符号化ユニットのサイズが四分木の最小サイズよりも大きくなければ、前記符号化ユニットはクワッド分割情報を含まず、当該クワッド分割情報は第2の値に推論できる。
例えば、複合型ツリーのノードに該当する符号化ユニットのサイズ(横及び縦)が二分木の最大サイズ(横及び縦)、及び/又は三分木の最大サイズ(横及び縦)よりも大きい場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットのサイズ(横及び縦)が二分木の最小サイズ(横及び縦)と同じであるか、或いは符号化ユニットのサイズ(横及び縦)が三分木の最小サイズ(横及び縦)の二倍と同じである場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。なぜなら、前記符号化ユニットを二分木分割及び/又は三分木分割する場合は、二分木の最小サイズ及び/又は三分木の最小サイズよりも小さい符号化ユニットが生成されるためである。
又は、複合型ツリーのノードに該当する符号化ユニットの複合型ツリー内の深さが複合型ツリーの最大深さと同じである場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割、水平方向の二分木分割、垂直方向の三分木分割及び水平方向の三分木分割のうちの少なくとも一つが可能である場合にのみ、前記複合型ツリーの分割か否かの情報をシグナリングすることができる。そうでない場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割と水平方向の二分木分割がすべて可能であるか、或いは垂直方向の三分木分割と水平方向の三分木分割がすべて可能である場合にのみ、前記分割方向の情報をシグナリングすることができる。そうでない場合、前記分割方向情報は、シグナリングされず、分割が可能な方向を指示する値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割と垂直方向の三分木分割がすべて可能であるか、或いは水平方向の二分木分割と水平方向の三分木分割がすべて可能である場合にのみ、前記分割ツリー情報をシグナリングすることができる。そうでない場合、前記分割ツリー情報は、シグナリングされず、分割が可能なツリーを指示する値に推論できる。
図4は画面間予測過程の実施形態を説明するための図である。
図4に示された四角形は画像を示すことができる。また、図4における矢印は、予測方向を示すことができる。各画像は、符号化タイプによってIピクチャ(Intra Picture)、Pピクチャ(Predictive Picture)、Bピクチャ(Bi-predictive Picture)などに分類できる。
Iピクチャは、画面間予測なしに、画面内予測を介して符号化/復号化できる。Pピクチャは、一方向(例えば、順方向又は逆方向)に存在する参照画像のみを利用する画面間予測を介して符号化/復号化できる。Bピクチャは、双方向(例えば、順方向及び逆方向)に存在する参照画像を利用する画面間予測を介して符号化/復号化できる。また、Bピクチャの場合、双方向に存在する参照画像を利用する画面間予測、又は順方向及び逆方向のうちの一方向に存在する参照画像を利用する画面間予測を介して符号化/復号化できる。ここで、双方向は順方向及び逆方向であり得る。ここで、画面間予測が使用される場合、符号化器では画面間予測或いは動き補償を行うことができ、復号化器ではそれに対応する動き補償を行うことができる。
以下、実施形態による画面間予測について具体的に説明される。
画面間予測或いは動き補償は、参照画像及び動き情報を用いて行われ得る。
現在ブロックに対する動き情報は、符号化装置100及び復号化装置200のそれぞれによって画面間予測中に導出できる。動き情報は、復元された周辺ブロックの動き情報、コロケーテッドブロック(collocated block;col block)の動き情報及び/又はコロケーテッドブロックに隣接するブロックを用いて導出できる。コロケーテッドブロックは、既に復元されたコロケーテッドピクチャ(collocated picture;col picture)内で現在ブロックの空間的位置に対応するブロックであり得る。ここで、コロケーテッドピクチャは参照画像リストに含まれている少なくとも一つの参照画像のうちの一つのピクチャであり得る。
動き情報の導出方式は、現在ブロックの予測モードによって異なり得る。例えば、画面間予測のために適用される予測モードとして、AMVPモード、マージモード、スキップモード、現在ピクチャ参照モードなどがあり得る。ここで、マージモードを動き併合モード(motion merge mode)と呼ぶこともある。
例えば、予測モードとしてAMVPが適用される場合、復元された周辺ブロックの動きベクトル、コロケーテッドブロックの動きベクトル、コロケーテッドブロックに隣接するブロックの動きベクトル、及び(0,0)動きベクトルのうちの少なくとも一つを動きベクトル候補として決定して、動きベクトル候補リスト(motion vector candidate list)を生成することができる。生成された動きベクトル候補リストを用いて動きベクトル候補を誘導することができる。誘導された動きベクトル候補に基づいて、現在ブロックの動き情報を決定することができる。ここで、コロケーテッドブロックの動きベクトル又はコロケーテッドブロックに隣接するブロックの動きベクトルを時間動きベクトル候補(temporal motion vector candidate)と呼ぶことがあり、復元された周辺ブロックの動きベクトルを空間動きベクトル候補(spatial motion vector candidate )と呼ぶことがある。
符号化装置100は、現在ブロックの動きベクトルと動きベクトル候補との動きベクトル差分(MVD:Motion Vector Difference)を計算することができ、MVDをエントロピー符号化することができる。また、符号化装置100は、動きベクトル候補インデックスをエントロピー符号化してビットストリームを生成することができる。動きベクトル候補インデックスは、動きベクトル候補リストに含まれている動きベクトル候補の中から選択された最適な動きベクトル候補を指示することができる。復号化装置200は、動きベクトル候補インデックスをビットストリームからエントロピー復号化し、エントロピー復号化された動きベクトル候補インデックスを用いて、動きベクトル候補リストに含まれている動きベクトル候補の中から復号化対象ブロックの動きベクトル候補を選択することができる。また、復号化装置200は、エントロピー復号化されたMVDと動きベクトル候補との和を用いて復号化対象ブロックの動きベクトルを導出することができる。
ビットストリームは、参照画像を指示する参照画像インデックスなどを含むことができる。参照画像インデックスは、エントロピー符号化されてビットストリームを介して符号化装置100から復号化装置200へシグナリングできる。復号化装置200は、誘導された動きベクトルと参照画像インデックス情報に基づいて復号化対象ブロックに対する予測ブロックを生成することができる。
動き情報の導出方式の他の例として、マージモードがある。マージモードとは、複数のブロックに対する動きの併合を意味することができる。マージモードは、現在ブロックの動き情報を周辺ブロックの動き情報から誘導するモードを意味することができる。マージモードが適用される場合、復元された周辺ブロックの動き情報及び/又はコロケーテッドブロックの動き情報を用いて、マージ候補リスト(merge candidate list)を生成することができる。動き情報は、1)動きベクトル、2)参照画像インデックス、及び3)画面間予測インジケータのうちの少なくとも一つを含むことができる。予測インジケータは、一方向(L0予測、L1予測)又は双方向であり得る。
マージ候補リストは、動き情報が保存されたリストを示すことができる。マージ候補リストに保存される動き情報は、現在ブロックに隣接する周辺ブロックの動き情報(空間マージ候補(spatial merge candidate))、参照画像における、現在ブロックに対応する(collocated)ブロックの動き情報(時間マージ候補(temporal merge candidate))、既にマージ候補リストに存在する動き情報の組み合わせによって生成された新しい動き情報及びゼロマージ候補のうちの少なくとも一つであり得る。
符号化装置100は、マージフラグ(merge flag)及びマージインデックス(merge index)のうちの少なくとも一つをエントロピー符号化してビットストリームを生成した後、復号化装置200へシグナリングすることができる。マージフラグは、ブロック別にマージモードを行うか否かを示す情報であり、マージインデックスは、現在ブロックに隣接する周辺ブロックのうちのどのブロックとマージを行うかについての情報であり得る。例えば、現在ブロックの周辺ブロックは、現在ブロックの左側隣接ブロック、上側隣接ブロック及び時間的隣接ブロックのうちの少なくとも一つを含むことができる。
スキップモードは、周辺ブロックの動き情報をそのまま現在ブロックに適用するモードであり得る。スキップモードが使用される場合、符号化装置100は、どのブロックの動き情報を現在ブロックの動き情報として用いるかについての情報をエントロピー符号化してビットストリームを介して復号化装置200へシグナリングすることができる。このとき、符号化装置100は、動きベクトル差分情報、符号化ブロックフラグ及び変換係数レベル(量子化レベル)のうちの少なくとも一つに関する構文要素を復号化装置200へシグナリングしなくてもよい。
現在ピクチャ参照モードは、現在ブロックが属する現在ピクチャ内の既に復元された領域を用いた予測モードを意味することができる。この際、前記既に復元された領域を特定するために、ベクトルが定義できる。現在ブロックが現在ピクチャ参照モードで符号化されるか否かは、現在ブロックの参照画像インデックスを用いて符号化できる。現在ブロックが現在ピクチャ参照モードで符号化されたブロックであるか否かを示すフラグ或いはインデックスがシグナリングされてもよく、現在ブロックの参照画像インデックスを用いて類推されてもよい。現在ブロックが現在ピクチャ参照モードで符号化された場合、現在ピクチャは、現在ブロックのための参照画像リスト内で固定位置又は任意の位置に追加できる。前記固定位置は、例えば、参照画像インデックスが0である位置又は最後の位置であり得る。現在ピクチャが参照画像リスト内で任意の位置に追加される場合、前記任意の位置を示す別途の参照画像インデックスがシグナリングされてもよい。
上述した内容に基づいて、本発明に係る画像符号化/復号化方法について詳細に説明する。
図5は本発明の一実施形態による画像符号化方法を示すフローチャートであり、図6は本発明の一実施形態による画像復号化方法を示すフローチャートである。
図5を参照すると、符号化装置は、動きベクトル候補を誘導し(S501)、誘導された動きベクトル候補に基づいて、動きベクトル候補リストを生成することができる(S502)。動きベクトル候補リストが生成されると、生成された動きベクトル候補リストを用いて動きベクトルを決定し(S503)、動きベクトルを用いて動き補償を行うことができる(S504)。その後、符号化装置は、動き補償に関する情報をエントロピー符号化することができる(S505)。
図6を参照すると、復号化装置は、符号化装置から受信した動き補償に関する情報をエントロピー復号化し(S601)、動きベクトル候補を誘導することができる(S602)。そして、復号化装置は、誘導された動きベクトル候補に基づいて動きベクトル候補リストを生成し(S603)、生成された動きベクトル候補リストを用いて動きベクトルを決定することができる(S604)。その後、復号化装置は、動きベクトルを用いて動き補償を行うことができる(S605)。
図7は本発明の他の実施形態による画像符号化方法を示すフローチャートであり、図8は本発明の他の実施形態による画像復号化方法を示すフローチャートである。
図7を参照すると、符号化装置は、マージ候補を誘導し(S701)、誘導されたマージ候補に基づいてマージ候補リストを生成することができる。マージ候補リストが生成されると、生成されたマージ候補リストを用いて動き情報を決定し(S702)、決定された動き情報を用いて現在ロックの動き補償を行うことができる(S703)。その後、符号化装置は、動き補償に関する情報をエントロピー符号化することができる(S704)。
図8を参照すると、復号化装置は、符号化装置から受信した動き補償に関する情報をエントロピー復号化し(S801)、マージ候補を誘導し(S802)、誘導されたマージ候補に基づいてマージ候補リストを生成することができる。マージ候補リストが生成されると、生成されたマージ候補リストを用いて現在ブロックの動き情報を決定することができる(S803)。その後、復号化装置は、動き情報を用いて動き補償を行うことができる(S804)。
ここで、図5及び図6は図4で説明したAMVPモードが適用された一例であり、図7及び図8は図4で説明したマージモードが適用された一例であり得る。
以下、図5及び図6で示された各ステップを説明した後、図7及び図8で示された各ステップについて説明する。但し、動き補償実行ステップ(S504、S605、S703、S804)及びエントロピー符号化/復号化ステップ(S505、S601、S704、S801)についての説明は統合して述べることにする。
以下、図5及び図6に示された各ステップについて詳細に説明する。
まず、動きベクトルを誘導するステップについて具体的に説明する(S501、S602)。
現在ブロックに対する動きベクトル候補は、空間動きベクトル候補又は時間動きベクトル候補のうちの少なくとも一つを含むことができる。
現在ブロックの空間動きベクトルは、現在ブロック周辺の復元ブロックから誘導できる。一例として、現在ブロック周辺の復元ブロックの動きベクトルが現在ブロックに対する空間動きベクトル候補として決定できる。
図9は現在ブロックの空間動きベクトル候補を誘導する例を説明するための図である。
図9を参照すると、現在ブロックの空間動きベクトル候補は、現在ブロックXに隣接する周辺ブロックから誘導できる。ここで、現在ブロックに隣接する周辺ブロックは、現在ブロックの上側に隣接するブロックB1、現在ブロックの左側に隣接するブロックA1、現在ブロックの右上隅に隣接するブロックB0、現在ブロックの左上隅に隣接するブロックB2、及び現在ブロックの左下隅に隣接するブロックA0のうちの少なくとも一つを含むことができる。一方、現在ブロックに隣接する周辺ブロックは、正方形(square)又は非正方形(non-square)の形状であり得る。現在ブロックに隣接する周辺ブロックに動きベクトルが存在する場合、周辺ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として決定することができる。周辺ブロックの動きベクトルが存在するか否か、又は周辺ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として利用可能であるか否かは、周辺ブロックが存在するか否か又は周辺ブロックが画面間予測を介して符号化されたか否かなどに基づいて判断できる。この際、周辺ブロックの動きベクトルが存在するか否か、又は周辺ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として利用可能であるか否かは、所定の優先順位に基づいて決定できる。一例として、図9に示された例において、A0、A1、B0、B1及びB2位置のブロックの順に動きベクトルの可用性が判断できる。
現在ブロックの参照画像と動きベクトルを有する周辺ブロックの参照画像とが異なる場合、周辺ブロックの動きベクトルをスケーリング(scaling)したものを、現在ブロックの空間動きベクトル候補として決定することができる。ここで、スケーリングは、現在画像と現在ブロックが参照する参照画像との距離、及び現在画像と周辺ブロックが参照する参照画像との距離のうちの少なくとも一つに基づいて行われ得る。一例として、現在画像と現在ブロックが参照する参照画像との距離と、現在の画像と周辺ブロックが参照する参照画像との距離との比率に応じて周辺ブロックの動きベクトルをスケーリングすることにより、現在ブロックの空間動きベクトル候補が誘導できる。
一方、現在ブロックの参照画像インデックスと動きベクトルを有する周辺ブロックの参照画像インデックスとが異なる場合、周辺ブロックの動きベクトルをスケーリングしたものを、現在ブロックの空間動きベクトル候補として決定することができる。この場合にも、スケーリングは、現在画像と現在ブロックが参照する参照画像との距離、及び現在画像と周辺ブロックが参照する参照画像との距離のうちの少なくとも一つに基づいて行われ得る。
スケーリングに関連して、周辺ブロックの動きベクトルを、予め定義された値を有する参照画像インデックスによって指示される参照画像に基づいてスケーリングして空間動きベクトル候補として決定することができる。このとき、予め定義された値は、0を含む正の整数であり得る。一例として、現在画像と予め定義された値を有する参照画像インデックスによって指示される現在ブロックの参照画像との距離と、現在画像と予め定義された値を有する周辺ブロックの参照画像との距離との比率に応じて周辺ブロックの動きベクトルをスケーリングすることにより、現在ブロックの空間動きベクトル候補が誘導できる。
また、現在ブロックの符号化パラメータのうちの少なくとも一つに基づいて、現在ブロックの空間動きベクトル候補を誘導することができる。
現在ブロックの時間動きベクトル候補は、現在画像の対応位置画像(Co-located picture)に含まれている復元ブロックから誘導できる。ここで、対応位置画像は、現在画像の以前に符号化/復号化が完了した画像であって、現在画像とは異なる時間的順序を持つ画像であり得る。
図10は現在ブロックの時間動きベクトル候補を誘導する例を説明するための図である。
図10を参照すると、現在画像の対応位置画像(collocated picture)において、現在ブロックXと空間的に同じ位置に対応するブロックの外部位置を含むブロック、又は現在ブロックXと空間的に同じ位置に対応するブロックの内部位置を含むブロックから現在ブロックの時間動きベクトル候補を誘導することができる。ここで、時間動きベクトル候補は、対応位置ブロックの動きベクトルを意味することができる。一例として、現在ブロックXの時間動きベクトル候補は、現在ブロックと空間的に同じ位置に対応するブロックCの左下隅に隣接するブロックH、又はブロックCの中心点を含むブロックC3から誘導できる。現在ブロックの時間動きベクトル候補を誘導するために使用されるブロックH又はブロックC3などを「対応位置ブロック(collocated block)」と呼ぶことができる。
また、符号化パラメータのうちの少なくとも一つに基づいて、時間動きベクトル候補、対応位置画像、対応位置ブロック、予測リスト活用フラグ及び参照画像インデックスのうちの少なくとも一つを誘導することもできる。
現在ブロックが含まれている現在画像と現在ブロックの参照画像との距離が、対応位置ブロックの含まれている対応位置画像と対応位置ブロックの参照画像との距離とは異なる場合には、現在ブロックの時間動きベクトル候補は、対応位置ブロックの動きベクトルをスケーリングすることにより取得できる。ここで、スケーリングは、現在画像と現在ブロックが参照する参照画像との距離、及び対応位置画像と対応位置ブロックが参照する参照画像との距離のうちの少なくとも一つに基づいて行われ得る。一例として、現在画像と現在ブロックが参照する参照画像との距離と、対応位置画像と対応位置ブロックが参照する参照画像との距離との比率に応じて対応位置ブロックの動きベクトルをスケーリングすることにより、現在ブロックの時間動きベクトル候補が誘導できる。
次に、誘導された動きベクトル候補に基づいて、動きベクトル候補リストを生成するステップについて説明する(S502、S503)。
動きベクトル候補リストを生成するステップは、動きベクトル候補を動きベクトル候補リストに対して追加或いは除去するステップ、及び組み合わせられた動きベクトル候補を動きベクトル候補リストに追加するステップを含むことができる。
誘導された動きベクトル候補を動きベクトル候補リストに対して追加或いは除去するステップから考察すると、符号化装置及び復号化装置は、動きベクトル候補の誘導順に、誘導された動きベクトル候補を動きベクトル候補リストに追加することができる。
動きベクトル候補リストmvpListLXは、参照画像リストL0、L1、L2及びL3に対応する動きベクトル候補リストを意味するものと仮定する。例えば、参照画像リストL0に対応する動きベクトル候補リストは、mvpListL0と呼ぶことができる。
空間動きベクトル候補及び時間動きベクトル候補以外の所定の値を有する動きベクトルが動きベクトル候補リストに追加されることも可能である。一例として、動きベクトルリストに含まれている動きベクトル候補の数が最大動きベクトル候補の数よりも小さい場合、値が0である動きベクトルを動きベクトル候補リストに追加することができる。
次に、組み合わせられた動きベクトル候補を動きベクトル候補リストに追加するステップについて説明する。
動きベクトル候補リストに含まれている動きベクトル候補の数が最大動きベクトル候補の数よりも小さい場合、動きベクトル候補リストに含まれている動きベクトル候補のうちの少なくとも一つを用いて、組み合わせられた動きベクトル候補を動きベクトル候補リストに追加することができる。一例として、動きベクトル候補リストに含まれている空間動きベクトル候補、時間動きベクトル候補及びゼロ動きベクトル候補のうちの少なくとも1つを用いて、組み合わせられた動きベクトル候補を生成し、この組み合わせられた動きベクトル候補を動きベクトル候補リストに含むことができる。
又は、符号化パラメータのうちの少なくとも一つに基づいて、組み合わせられた動きベクトル候補を生成するか、或いは符号化パラメータのうちの少なくとも一つに基づいて、組み合わせられた動きベクトル候補を動きベクトル候補リストに追加することもできる。
次に、動きベクトル候補リストから予測された動きベクトルを決定するステップについて説明する(S503、S604)。
動きベクトル候補リストに含まれている動きベクトル候補のうち、動きベクトル候補インデックスが指し示す動きベクトル候補を、現在ブロックに対する予測された動きベクトルとして決定することができる。
符号化装置は、動きベクトルと予測された動きベクトルとの差分を計算して、動きベクトル差分値を算出することができる。復号化装置は、予測された動きベクトルと動きベクトル差分値を合わせて動きベクトルを算出することができる。
ここで、動きベクトル候補リストに含まれている動きベクトル候補、予測された動きベクトル、又は予測された動きベクトルと動きベクトル差分値を合わせて算出された動きベクトルのうちのいずれかに、動き情報補正(motion information refinement)を適用することができる。動き情報補正についての具体的な説明は後述する。
一方、図5及び図6の動き補償を行うステップ(S504、S605)、動き補償に関する情報をエントロピー符号化/復号化するステップ(S505、S601)は、図7及び図8の動き補償実行ステップ(S703、S804)及びエントロピー符号化/復号化ステップ(S704、S801)と統合して後述することにする。
以下、図7及び図8に示された各ステップについて詳細に説明する。
まず、マージ候補を誘導するステップについて具体的に説明する(S701、802)。
現在ブロックに対するマージ候補は、空間マージ候補、時間マージ候補又は追加マージ候補のうちの少なくとも一つを含むことができる。ここで、空間マージ候補を誘導するというのは、空間マージ候補を誘導してマージ候補リストに追加することを意味することができる。
図9を参照すると、現在ブロックの空間マージ候補は、現在ブロックXに隣接する周辺ブロックから誘導できる。現在ブロックに隣接する周辺ブロックは、現在ブロックの上側に隣接するブロックB1、現在ブロックの左側に隣接するブロックA1、現在ブロックの右上隅に隣接するブロックB0、現在ブロックの左上隅に隣接するブロック(B2)、及び現在ブロックの左下隅に隣接ブロック(A0)のうちの少なくとも一つを含むことができる。
現在ブロックの空間マージ候補を誘導するために、現在ブロックに隣接する周辺ブロックが現在ブロックの空間マージ候補の誘導に使用できるかどうかを判断することができる。この際、現在ブロックに隣接する周辺ブロックが現在ブロックの空間マージ候補の誘導に使用できるかどうかは、所定の優先順位に基づいて決定できる。一例として、図9に示された例において、A1、B1、B0、A0及びB2位置のブロックの順に空間マージ候補誘導可用性が判断できる。前記可用性判断順序に基づいて決定された空間マージ候補を、現在ブロックのマージ候補リストに順次追加することができる。
図11は空間マージ候補がマージ候補リストに追加される例を説明するための図である。
図11を参照すると、A1、B0、A0、B2位置の周辺ブロックから4つの空間マージ候補が誘導された場合には、マージ候補リストに誘導された空間マージ候補が順次追加できる。
また、符号化パラメータのうちの少なくとも一つに基づいて、前記空間マージ候補を誘導することができる。
ここで、空間マージ候補の動き情報は、L0及びL1の動き情報だけでなく、L2、L3などの3つ以上の動き情報を持つことができる。ここで、参照画像リストは、L0、L1、L2、L3などの少なくとも一つを含むことができる。
次に、現在ブロックの時間マージ候補を誘導する方法について説明する。
現在ブロックの時間マージ候補は、現在画像の対応位置画像(Co-located picture)に含まれている復元ブロックから誘導できる。ここで、対応位置画像は、現在画像の前に符号化/復号化が完了した画像であって、現在画像とは異なる時間的順序を持つ画像であり得る。
時間マージ候補を誘導するというのは、時間マージ候補を誘導してマージ候補リストに追加することを意味することができる。
図10を参照すると、現在画像の対応位置画像(collocated picture)において、現在ブロックXと空間的に同じ位置に対応するブロックの外部位置を含むブロック、又は現在ブロックXと空間的に同じ位置に対応するブロックの内部位置を含むブロックから、現在ブロックの時間マージ候補を誘導することができる。ここで、時間マージ候補は、対応位置ブロックの動き情報を意味することができる。一例として、現在ブロックXの時間マージ候補は、現在ブロックと空間的に同じ位置に対応するブロックCの左下隅に隣接するブロックH、又はブロックCの中心点を含むブロックC3から誘導できる。現在ブロックの時間マージ候補を誘導するために使用されるブロックH又はブロックC3などを、「対応位置ブロック(collocated block)」と呼ぶことができる。
ブロックCの外部位置を含むブロックHから現在ブロックの時間マージ候補を誘導することができる場合、ブロックHが現在ブロックの対応位置ブロックとして設定できる。この場合、現在ブロックの時間マージ候補は、ブロックHの動き情報に基づいて誘導できる。これに対し、ブロックHから現在ブロックの時間マージ候補を誘導することができない場合には、ブロックCの内部位置を含むブロックC3が、現在ブロックの対応位置ブロックとして設定できる。この場合、現在ブロックの時間マージ候補は、ブロックC3の動き情報に基づいて誘導できる。もし、ブロックH及びブロックC3から現在ブロックの時間マージを誘導することができない場合には(例えば、ブロックH及びブロックC3の両方が画面内符号化された場合)、現在ブロックに対する時間マージ候補は誘導されないか、或いはブロックH及びブロックC3とは異なる位置のブロックから誘導され得るだろう。
他の例として、現在ブロックの時間マージ候補は、対応位置画像内の複数のブロックから誘導されてもよい。一例として、ブロックH及びブロックC3から現在ブロックに対する複数の時間マージ候補を誘導することもできる。
図12は時間マージ候補がマージ候補リストに追加される例を説明するための図である。
図12を参照すると、H1位置の対応位置ブロックから1つの時間マージ候補が誘導された場合、マージ候補リストに誘導された時間マージ候補を追加することができる。
現在ブロックが含まれている現在画像と現在ブロックの参照画像との距離が、対応位置ブロックの含まれている対応位置画像と対応位置ブロックの参照画像との距離とは異なる場合には、現在ブロックの時間マージ候補の動きベクトルは、対応位置ブロックの動きベクトルをスケーリングすることにより取得できる。ここで、スケーリングは、現在画像と現在ブロックが参照する参照画像との距離、及び対応位置画像と対応位置ブロックが参照する参照画像との距離のうちの少なくとも一つに基づいて行われ得る。一例として、現在画像と現在ブロックが参照する参照画像との距離と、対応位置画像と対応位置ブロックが参照する参照画像との距離との比率に応じて対応位置ブロックの動きベクトルをスケーリングすることにより、現在ブロックの時間マージ候補の動きベクトルが誘導できる。
また、現在ブロック、周辺ブロック又は対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、時間マージ候補、対応位置画像、対応位置ブロック、予測リスト活用フラグ、及び参照画像インデックスのうちの少なくとも一つを誘導することもできる。
空間マージ候補及び時間マージ候補のうちの少なくとも一つを誘導した後、誘導されたマージ候補順にマージ候補リストに追加してマージ候補リストを生成することができる。
次に、現在ブロックの追加マージ候補を誘導する方法について説明する。
追加マージ候補は、変更された空間マージ候補(modified spatial merge candidate)、変更された時間マージ候補(modified temporal merge candidate)、組み合わせられたマージ候補(combined merge candidate)、及び所定の動き情報値を持つマージ候補のうちの少なくとも一つを意味することができる。ここで、追加マージ候補を誘導することは、追加マージ候補を誘導してマージ候補リストに追加することを意味することができる。
変更された空間マージ候補は、誘導された空間マージ候補の動き情報のうちの少なくとも一つを変更したマージ候補を意味することができる。
変更された時間マージ候補は、誘導された時間マージ候補の動き情報のうちの少なくとも一つを変更したマージ候補を意味することができる。
組み合わせられたマージ候補は、マージ候補リストに存在する空間マージ候補、時間マージ候補、変更された空間マージ候補、変更された時間マージ候補、組み合わせられたマージ候補、及び所定の動き情報値を持つマージ候補の動き情報のうちの少なくとも一つの動き情報を組み合わせて誘導されるマージ候補を意味することができる。
又は、組み合わせられたマージ候補は、マージ候補リストに存在しないが、空間マージ候補及び時間マージ候補のうちの少なくとも一つを誘導することができるブロックから誘導された空間マージ候補及び誘導された時間マージ候補と、これらに基づいて生成された、変更された空間マージ候補、変更された時間マージ候補、組み合わせられたマージ候補、及び所定の動き情報値を持つマージ候補のうちの少なくとも一つの動き情報を組み合わせて誘導されるマージ候補を意味することができる。
又は、復号化器でビットストリームからエントロピー復号化した動き情報を用いて組み合わせられたマージ候補を誘導することができる。このとき、符号化器で組み合わせられたマージ候補の誘導に使用された動き情報は、ビットストリームにエントロピー符号化できる。
組み合わせられたマージ候補は、組み合わせ双予測マージ候補を意味することができる。組み合わせ双予測マージ候補は、双予測(bi-prediction)を用いるマージ候補であって、L0動き情報とL1動き情報を持つマージ候補を意味することができる。
所定の動き情報値を持つマージ候補は、動きベクトルが(0,0)であるゼロマージ候補を意味することができる。一方、所定の動き情報値を持つマージ候補は、符号化装置及び復号化装置で同じ値を使用するように既に設定されてもよい。
現在ブロック、周辺ブロック、又は対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、変更された空間マージ候補、変更された時間マージ候補、組み合わせられたマージ候補、所定の動き情報値を持つマージ候補のうちの少なくとも一つを誘導又は生成することができる。また、変更された空間マージ候補、変更された時間マージ候補、組み合わせられたマージ候補、及び所定の動き情報値を持つマージ候補のうちの少なくとも一つを、現在ブロック、周辺ブロック、又は対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいてマージ候補リストに追加することができる。
一方、マージ候補リストのサイズは、現在ブロック、周辺ブロック、又は対応位置ブロックの符号化パラメータに基づいて決定でき、符号化パラメータに基づいてサイズが変更できる。
次に、生成されたマージ候補リストを用いて、現在ブロックの動き情報を決定するステップについて具体的に説明する(S702、S803)。
符号化器は、動き推定(motion estimation)を介してマージ候補リスト内のマージ候補のうち、動き補償に用いられるマージ候補を決定し、決定されたマージ候補を指示するマージ候補インデックス(merge_idx)をビットストリームに符号化することができる。
一方、符号化器は、予測ブロックを生成するために、上述したマージ候補インデックスに基づいてマージ候補リストからマージ候補を選択して、現在ブロックの動き情報を決定することができる。ここで、決定された動き情報に基づいて動き補償(motion compensation)を行い、現在ブロックの予測ブロックを生成することができる。
復号化器は、ビットストリーム内のマージ候補インデックスを復号化して、マージ候補インデックスが指示するマージ候補リスト内のマージ候補を決定することができる。決定されたマージ候補は、現在ブロックの動き情報として決定することができる。決定された動き情報は、現在ブロックの動き補償に使用される。この際、動き補償はインター予測(inter prediction)の意味と同一であり得る。
一方、マージ候補リストに含まれているマージ候補又はマージ候補インデックスに基づいてマージ候補リストから決定された動き情報のうちのいずれか一つに動き情報補正を適用することができる。動き情報補正についての具体的な説明は後述することにする。
次に、動きベクトル又は動き情報を用いて、動き補償を行うステップについて説明する(S504、S605、S703、S804)。
符号化装置及び復号化装置は、予測された動きベクトルと動きベクトル差分値を用いて動きベクトルを算出することができる。動きベクトルが算出されると、算出された動きベクトルを用いて、画面間予測又は動き補償を行うことができる(S504、S605)。
一方、符号化装置及び復号化装置は、決定された動き情報を用いて画面間予測又は動き補償を行うことができる(S703、S804)。ここで、現在ブロックは、決定されたマージ候補の動き情報を持つことができる。
現在ブロックは、予測方向に基づいて、最小1個から最大N個の動きベクトルを持つことができる。動きベクトルを用いて、最小1個から最大N個の予測ブロックを生成して、現在ブロックの最終予測ブロックを誘導することができる。
一例として、現在ブロックが1つの動きベクトルを持つ場合、前記動きベクトル(又は動き情報)を用いて生成された予測ブロックを、現在ブロックの最終予測ブロックとして決定することができる。
これに対し、現在ブロックが複数の動きベクトル(又は動き情報)を持つ場合、複数の動きベクトル(又は動き情報)を用いて複数の予測ブロックを生成し、複数の予測ブロックの重み付け和に基づいて、現在ブロックの最終予測ブロックを決定することができる。複数の動きベクトル(又は動き情報)によって指示される複数の予測ブロックそれぞれを含む参照画像は、互いに異なる参照画像リストに含まれてもよく、同じ参照画像リストに含まれてもよい。
一例として、空間動きベクトル候補、時間動きベクトル候補、所定の値を持つ動きベクトル、又は組み合わせられた動きベクトル候補のうちの少なくとも一つに基づいて、複数の予測ブロックを生成し、複数の予測ブロックの重み付け和に基づいて、現在ブロックの最終予測ブロックを決定することができる。
他の例として、既に設定された動きベクトル候補インデックスによって指示される動きベクトル候補に基づいて、複数の予測ブロックを生成し、複数の予測ブロックの重み付け和に基づいて、現在ブロックの最終予測ブロックを決定することができる。また、既に設定された動きベクトル候補インデックスの範囲に存在する動きベクトル候補に基づいて、複数の予測ブロックを生成し、複数の予測ブロックの重み付け和に基づいて、現在ブロックの最終予測ブロックを決定することができる。
各予測ブロックに適用される重みは、1/N(ここで、Nは生成された予測ブロックの数)であって、均等な値を持つことができる。一例として、2つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/2であり、3つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/3であり、4つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/4であり得る。又は、各予測ブロックごとに異なる重みを与え、現在ブロックの最終予測ブロックを決定することもできる。
重みは、予測ブロック別の固定値を持たなければならないのではなく、予測ブロック別の可変値を持つこともできる。このとき、各予測ブロックに適用される重みは、互いに同一であってもよく、互いに異なってもよい。一例として、2つの予測ブロックが生成された場合、2つの予測ブロックに適用される重みは、(1/2、1/2)であるだけでなく、(1/3、2/3)、(1/4、3/4)、(2/5、3/5)、(3/8、5/8)などのようにブロック別に可変的な値であり得る。一方、重みは正の実数の値又は負の実数の値であり得る。一例として、(-1/2、3/2)、(-1/3、4/3)、(-1/4、5/4)などのように負の実数の値を含むことができる。
一方、可変重みを適用するために、現在ブロックのための一つ又はそれ以上の重み情報がビットストリームを介してシグナリングされてもよい。重み情報は、予測ブロック別にそれぞれシグナリングされてもよく、参照画像別にシグナリングされてもよい。複数の予測ブロックが一つの重み情報を共有することも可能である。
符号化装置及び復号化装置は、予測ブロックリスト活用フラグに基づいて、予測された動きベクトル(又は動き情報)を用いるか否かを判断することができる。一例として、各参照画像リスト別に予測ブロックリスト活用フラグが第1の値「1」を指示する場合には、符号化装置及び復号化装置は、画面間予測又は動き補償を行うために、現在ブロックの予測された動きベクトルを用いることができるということを示し、第2の値「0」を指示する場合には、符号化装置及び復号化装置は、現在ブロックの予測された動きベクトルを用いて画面間予測又は動き補償を行わないことを示すことができる。一方、予測ブロックリスト活用フラグの第1の値は0、第2の値は1にそれぞれ設定されてもよい。下記数式3乃至数式5は、それぞれ、現在ブロックの画面間予測インジケータがPRED_BI、PRED_TRI及びPRED_QUADであり、各参照画像リストに対する予測方向が一方向である場合には、現在ブロックの最終予測ブロックを生成する例を示す
前記数式1乃至3中、P_BI、P_TRI、P_QUADは、現在ブロックの最終予測ブロックを示し、LX(X=0、1、2、3)は、参照画像リストを意味することができる。WF_LXは、LXを用いて生成された予測ブロックの重み値を示し、OFFSET_LXは、LXを用いて生成された予測ブロックに対するオフセット値を示すことができる。P_LXは、現在ブロックのLXに対する動きベクトル(又は動き情報)を用いて生成した予測ブロックを意味する。RFは、丸め係数(Rounding factor)を意味し、0、正数又は負数に設定できる。LX参照画像リストは、ロング・ターム(long-term)参照画像、デブロッキングフィルタ(deblocking filter)を行っていない参照画像、サンプル適応的オフセット(sample adaptive offset)を行っていない参照画像、適応的ループフィルタ(adaptive loop filter)を行っていない参照画像、デブロッキングフィルタ及び適応的オフセットのみを行った参照画像、デブロッキングフィルタ及び適応的ループフィルタのみを行った参照画像、サンプル適応的オフセット及び適応的ループフィルタのみを行っている参照画像、デブロッキングフィルタ、サンプル適応的オフセット及び適応的ループフィルタを行った参照画像のうちの少なくとも一つを含むことができる。この場合、LX参照画像リストは、L2参照画像リスト及びL3参照画像リストのうちの少なくとも一つであり得る。
所定の参照画像リストに対する予測方向が複数方向である場合にも、予測ブロックの重み付け和に基づいて、現在ブロックに対する最終予測ブロックを取得することができる。このとき、同じ参照画像リストから誘導された予測ブロックに適用される重みは、同じ値を持ってもよく、異なる値を持ってもよい。
複数の予測ブロックに対する重みWF_LX及びオフセットOFFSET_LXのうちの少なくとも一つは、エントロピー符号化/復号化される符号化パラメータであり得る。他の例として、重み及びオフセットは、現在ブロックの周辺の符号化/復号化された周辺ブロックから誘導されてもよい。ここで、現在ブロック周辺の周辺ブロックは、現在ブロックの空間動きベクトル候補を誘導するために用いられるブロック、又は現在ブロックの時間動きベクトル候補を誘導するために用いられるブロックのうちの少なくとも一つを含むことができる。
他の例として、重み及びオフセットは、現在画像と各参照画像のディスプレイ順序(POC)に基づいて決定されてもよい。この場合、現在画像と参照画像との距離が遠いほど、重み又はオフセットを小さい値に設定し、現在画像と参照画像との距離が近いほど重み又はオフセットを大きい値に設定することができる。一例として、現在画像とL0参照画像とのPOCの差が2である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を1/3に設定するのに対し、現在画像とL0参照画像のPOCの差が1である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を2/3に設定することができる。上記に例示したように、重み又はオフセット値は、現在画像と参照画像間のディスプレイ順序の差と反比例の関係を持つことができる。他の例として、重み又はオフセット値は、現在画像と参照画像間のディスプレイ順序の差と比例の関係を持つようにすることも可能である。
他の例として、符号化パラメータのうちの少なくとも一つに基づいて、重み又はオフセットのうちの少なくとも一つをエントロピー符号化/復号化することもできる。また、符号化パラメータのうちの少なくとも一つに基づいて、予測ブロックの重み付け和を計算することもできる。
複数の予測ブロックの重み付け和は、予測ブロック内の一部の領域でのみ適用できる。ここで、一部の領域は、予測ブロック内の境界に該当する領域であり得る。上述の如く、一部の領域にのみ重み付け和を適用するために、予測ブロックのサブブロック(sub-block)単位で重み付け和を行うことができる。
領域情報が指示するブロックサイズのブロック内部でより小さなブロックサイズのサブブロックでは、同じ予測ブロック又は同じ最終予測ブロックを用いて画面間予測又は動き補償を行うことができる。
また、領域情報が指示するブロック深さのブロック内部でより深いブロック深さのサブブロックでは、同じ予測ブロック又は同じ最終予測ブロックを用いて画面間予測又は動き補償を行うことができる。
また、動きベクトル予測を用いて予測ブロックの重み付け和を計算する際、動きベクトル候補リスト内に存在する少なくとも一つの動きベクトル候補を用いて重み付け和を計算し、現在ブロックの最終予測ブロックとして使用することができる。
例えば、空間動きベクトル候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、空間動きベクトル候補と時間動きベクトル候補で予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、組み合わせられた動きベクトル候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、特定の動きベクトル候補インデックスを持つ動きベクトル候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、特定の動きベクトル候補インデックスの範囲内に存在する動きベクトル候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
また、マージモードを用いて予測ブロックの重み付け和を計算する際、マージ候補リスト内に存在する少なくとも一つのマージ候補を用いて重み付け和を計算し、現在ブロックの最終予測ブロックとして使用することができる。
例えば、空間マージ候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、空間マージ候補と時間マージ候補で予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、組み合わせられたマージ候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、特定のマージ候補インデックスを持つマージ候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
例えば、特定のマージ候補インデックスの範囲内に存在するマージ候補のみで予測ブロックを生成し、予測ブロックの重み付け和を計算し、計算された重み付け和を現在ブロックの最終予測ブロックとして使用することができる。
符号化器及び復号化器では、現在ブロックで持つ動きベクトル/情報を用いて動き補償を行うことができる。このとき、動き補償の結果である最終予測ブロックは、少なくとも一つの予測ブロックを用いて生成できる。ここで、現在ブロックは、現在符号化ブロック(coding block)、現在予測ブロック(prediction block)のうちの少なくとも一つを意味することができる。
現在ブロック内の境界に該当する領域にオーバーラップブロック動き補償(Overlapped Block Motion Compensation)を行って最終予測ブロックを生成することができる。
現在ブロック内の境界に該当する領域は、現在ブロックの周辺ブロックの境界に隣接する現在ブロック内の領域であり得る。ここで、現在ブロック内の境界に該当する領域は、現在ブロックで上側境界領域、左側境界領域、下側境界領域、右側境界領域、右上隅領域、右下隅領域、左上隅領域及び左下隅領域のうちの少なくとも一つを含むことができる。また、現在ブロック内の境界に該当する領域は、現在ブロックの予測ブロック内で一部分に該当する領域であり得る。
前記オーバーラップブロック動き補償は、現在ブロック内の境界に該当する予測ブロック領域と現在ブロックに隣接するように符号化/復号化されたブロックの動き情報を用いて生成された予測ブロックの重み付け和を計算して動き補償を行うことを意味することができる。
重み付け和は、現在ブロックを多数のサブブロック(sub-block)に分割した後、サブブロック単位で行われ得る。すなわち、サブブロック単位で現在ブロックに隣接するように符号化/復号化されたブロックの動き情報を用いて動き補償を行うことができる。この際、サブブロックは下位ブロックを意味することもできる。
また、重み付け和の計算には、現在ブロックの動き情報を用いてサブブロック単位で生成された第1予測ブロック、及び現在ブロックに空間的に隣接する周辺サブブロックの動き情報を用いて生成された第2予測ブロックが使用できる。このとき、動き情報を用いるというのは、動き情報を誘導するという意味であり得る。そして、第1予測ブロックは、現在ブロック内の符号化/復号化対象サブブロックの動き情報を用いて生成された予測ブロックを意味することができる。また、ここで、第2予測ブロックは、現在ブロック内で符号化/復号化対象サブブロックに空間的に隣接する周辺サブブロックの動き情報を用いて生成された予測ブロックを意味することもできる。
第1予測ブロックと第2予測ブロックとの重み付け和を用いて最終予測ブロックが生成できる。すなわち、オーバーラップブロック動き補償は、現在ブロックの動き情報の以外に、他のブロックの動き情報を一緒に用いて最終予測ブロックを生成することができる。
また、向上した動きベクトル予測(Advanced Motion Vector Prediction;AMVP)、マージモード(merge mode)、アフィン動き補償モード、復号化器動きベクトル誘導モード、適応的動きベクトル解像度モード、地域照明補償モード、及び双方向光学流れモードのうちの少なくとも一つに該当する場合に、現在予測ブロックをサブブロックに分割した後、各サブブロック別にオーバーラップブロック動き補償を行うことができる。
ここで、マージモードの場合、向上した時間動きベクトル予測(ATMVP;Advanced Temporal Motion Vector Predictor)候補及び空間-時間動きベクトル予測(STMVP;Spatial-Temporal Motion Vector Predictor)候補のうちの少なくとも一つにオーバーラップブロック動き補償を行うことができる。
次に、動き補償に関する情報をエントロピー符号化/復号化する過程について詳細に説明する(S505、S601、S704、S801)。
符号化装置は、動き補償に関する情報を、ビットストリームを介してエントロピー符号化し、復号化装置は、ビットストリームに含まれている動き補償に関する情報をエントロピー復号化することができる。ここで、エントロピー符号化/復号化される動き補償に関する情報は、画面間予測インジケータ(Inter Prediction Indicator)(inter_pred_idc)、参照画像インデックス(ref_idx_l0、ref_idx_l1、ref_idx_l2、ref_idx_l3)、動きベクトル候補インデックス(mvp_l0_idx、mvp_l1_idx、mvp_l2_idx 、mvp_l3_idx)、動きベクトル差分(motion vector difference)、スキップモードの使用有無情報(cu_skip_flag)、マージモードの使用有無情報(merge_flag)、マージインデックス情報(merge_index)、重み値(wf_l0、wf_l1、wf_l2、wf_l3)及びオフセット値(offset_l0、offset_l1、offset_l2、offset_l3)のうちの少なくとも一つを含むことができる。
画面間予測インジケータは、現在ブロックの画面間予測で符号化/復号化される場合、現在ブロックの画面間予測方向又は予測方向の個数のうちの少なくとも一つを意味することができる。一例として、画面間予測インジケータは、一方向予測を指示するか、或いは双方向予測、3方向予測又は4方向予測などの複数の方向予測を指示することができる。画面間予測インジケータは、現在ブロックが予測ブロックを生成するときに使用する参照画像の数を意味することができる。又は、一つの参照画像が複数の方向予測のために用いられてもよい。この場合、M個の参照画像を用いてN(N>M)個の方向予測を行うことができる。画面間予測インジケータは、現在ブロックに対する画面間予測又は動き補償を行うときに使用される予測ブロックの数を意味することもできる。
参照画像インジケータは、現在ブロックの予測方向の数に応じて、一方向(PRED_LX)、双予測或いは双方向(PRED_BI)、3方向(PRED_TRI)、4方向(PRED_QUAD)又はそれ以上の方向性を指示することができる。
予測リスト活用フラグ(prediction list utilization flag)は、当該参照画像リストを用いて予測ブロックを生成するかどうかを示す。
一例として、予測リスト活用フラグが第1の値「1」を指示する場合には、該当参照画像リストを用いて予測ブロックを生成することができることを示し、第2の値「0」を指示する場合には、該当参照画像リストを用いて予測ブロックを生成しないことを示すことができる。ここで、予測リスト活用フラグの第1の値は0、第2の値は1に設定されてもよい。
すなわち、予測リスト活用フラグが第1の値を指示するとき、該当参照画像リストに相応する動き情報を用いて現在ブロックの予測ブロックを生成することができる。
参照画像インデックスは、各参照画像リストから、現在ブロックが参照する参照画像を特定することができる。各参照画像リストに対して1つ以上の参照画像インデックスがエントロピー符号化/復号化できる。現在ブロックは、1つ以上の参照画像インデックスを用いて動き補償を行うことができる。
動きベクトル候補インデックスは、参照画像リスト別又は参照画像インデックス別に生成された動きベクトル候補リストから、現在ブロックに対する動きベクトル候補を示す。動きベクトル候補リスト別に少なくとも一つの動きベクトル候補インデックスがエントロピー符号化/復号化できる。現在ブロックは、少なくとも一つの動きベクトル候補インデックスを用いて動き補償を行うことができる。
動きベクトル差分は、動きベクトルと予測された動きベクトルとの差分値を示す。現在ブロックに対して参照画像リスト又は参照画像インデックス別に生成された動きベクトル候補リストに対して1つ以上の動きベクトル差分がエントロピー符号化/復号化できる。現在ブロックは、1つ以上の動きベクトル差分を用いて動き補償を行うことができる。
スキップモードの使用有無情報(cu_skip_flag)は、第1の値である1を持つ場合にはスキップモードの使用を指示し、第2の値である0を持つ場合にはスキップモードの使用を指示しない。スキップモードの使用有無情報に基づいて、スキップモードを用いて現在ブロックの動き補償を行うことができる。
マージモードの使用有無情報(merge_flag)は、第1の値である1を持つ場合にはマージモードの使用を指示し、第2の値である0を持つ場合にはマージモードの使用を指示しないことができる。マージモードを使用するか否かの情報に基づいて、マージモードを用いて現在ブロックの動き補償を行うことができる。
マージインデックス情報(merge_index)は、マージ候補リスト(merge candidate list)内のマージ候補(merge candidate)を指示する情報を意味することができる。
また、マージインデックス情報は、マージインデックス(merge index)に対する情報を意味することができる。
また、マージインデックス情報は、空間的/時間的に現在ブロックと隣接するように復元されたブロックのうち、マージ候補を誘導したブロックを指示することができる。
また、マージインデックス情報は、マージ候補が持つ動き情報のうちの少なくとも一つを指示することができる。例えば、マージインデックス情報は、第1の値である0を持つ場合にはマージ候補リスト内の一番目のマージ候補を指示することができ、第2の値である1を持つ場合にはマージ候補リスト内の二番目のマージ候補を指示することができ、第3の値である2を持つ場合にはマージ候補リスト内の三番目のマージ候補を指示することができる。同様に、第4乃至第Nの値を持つ場合、マージ候補リスト内の順序に基づいて、値に該当するマージ候補を指示することができる。ここで、Nは、0を含む正の整数を意味することができる。
マージモードインデックス情報に基づいて、マージモードを用いて現在ブロックの動き補償を行うことができる。
現在ブロックに対する動き補償の際に2つ以上の予測ブロックが生成された場合には、各予測ブロックに対する重み付け和(weighted sum)を介して、現在ブロックに対する最終予測ブロックが生成できる。重み付け和演算の際に、各予測ブロックに対して重み及びオフセットのうちの少なくとも一つが適用できる。重み(重み付け係数(weighting factor))又はオフセット(offset)などのように重み付け和演算に用いられる重み付け和因子は、参照画像リスト、参照画像、動きベクトル候補インデックス、動きベクトル差分、動きベクトル、スキップモードの使用有無情報、マージモードの使用有無情報、マージインデックス情報のうちの少なくとも一つの個数だけ、又は少なくとも一つの個数以上だけエントロピー符号化/復号化できる。また、各予測ブロックの重み付け和因子は、画面間予測インジケータに基づいてエントロピー符号化/復号化できる。ここで、重み付け和因子は、重み及びオフセットのうちの少なくとも一つを含むことができる。
動き補償に関する情報は、ブロック単位でエントロピー符号化/復号化されてもよく、上位レベルでエントロピー符号化/復号化されてもよい。一例として、動き補償に関する情報は、CTU、CU又はPUなどのブロック単位でエントロピー符号化/復号化されるか、或いは、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、適応パラメータセット(Adaptation Parameter Set)又はスライスヘッダ(Slice Header)などの上位レベルでエントロピー符号化/復号化できる。
動き補償に関する情報は、動き補償に関する情報と動き補償に関する情報予測値との差分値を示す動き補償に関する情報差分値に基づいて、エントロピー符号化/復号化されてもよい。
現在ブロックの動き補償に関する情報をエントロピー符号化/復号化する代わりに、現在ブロックの周辺に符号化/復号化されたブロックの動き補償に関する情報を、現在ブロックの動き補償に関する情報として用いることも可能である。
また、符号化パラメータのうちの少なくとも一つに基づいて、前記動き補償に関する情報のうちの少なくとも一つを誘導することができる。
また、前記動き補償に関する情報のうちの少なくとも一つを、符号化パラメータのうちの少なくとも一つに基づいて、ビットストリームからエントロピー復号化することができる。前記動き補償に関する情報のうちの少なくとも一つを、符号化パラメータのうちの少なくとも一つに基づいてビットストリームにエントロピー符号化することができる。
動き補償に関する情報は、動きベクトル、動きベクトル候補、動きベクトル候補インデックス、動きベクトル差分値、動きベクトル予測値、スキップモードの使用有無情報(skip_flag)、マージモードの使用有無情報(merge_flag)、マージインデックス情報(merge_index)、動きベクトル解像度(motion vector resolution)情報、オーバーラップブロック動き補償(overlapped block motion compensation)情報、地域照明補償(local illumination compensation)情報、アフィン動き補償(affine motion compensation)情報、復号化器動きベクトル誘導(decoder-side motion vector derivation)情報、及び双方向光学流れ(bi-directional optical flow)情報のうちの少なくとも一つをさらに含むことができる。ここで、復号化器動きベクトル誘導は、パターン整合動きベクトル誘導(pattern matched motion vector derivation)を意味することができる。
動きベクトル解像度情報は、動きベクトル及び動きベクトル差分値のうちの少なくとも一つに対して特定の解像度を使用するかどうかを示す情報であり得る。ここで、解像度は、精度(precision)を意味することができる。また、特定の解像度は、16画素(16-pel)単位、8画素(8-pel)単位、4画素(4-pel)単位、整数画素(integer-pel)単位、1/2画素(1/2-pel)単位、1/4画素(1/4-pel)単位、1/8画素(1/8-pel)単位、1/16画素(1/16-pel)単位、1/32画素(1/32-pel)単位、及び1/64画素(1/64-pel)単位のうちの少なくとも一つに設定できる。
オーバーラップブロック動き補償情報は、現在ブロックの動き補償の際に現在ブロックに空間的に隣接する周辺ブロックの動きベクトルをさらに用いて現在ブロックの予測ブロックの重み付け和を計算するかどうかを示す情報であり得る。
地域照明補償情報は、現在ブロックの予測ブロック生成の際に重み値及びオフセット値のうちの少なくとも一つを適用するか否かを示す情報であり得る。ここで、重み値及びオフセット値のうちの少なくとも一つは、参照ブロックに基づいて算出された値であり得る。
アフィン動き補償情報は、現在ブロックに対する動き補償の際にアフィン動きモデル(affine motion model)を使用するかどうかを示す情報であり得る。ここで、アフィン動きモデルは、複数のパラメータを用いて1つのブロックを多数のサブブロックに分割し、代表動きベクトルを用いて分割されたサブブロックの動きベクトルを算出するモデルであり得る。
復号化器動きベクトル誘導情報は、動き補償に必要な動きベクトルを復号化器で誘導して使用するかどうかを示す情報であり得る。復号化器動きベクトル誘導情報に基づいて、動きベクトルに関する情報はエントロピー符号化/復号化されなくてもよい。そして、復号化器動きベクトル誘導情報が復号化器で動きベクトルを誘導して使用することを示す場合、マージモードに関する情報がエントロピー符号化/復号化できる。つまり、復号化器動きベクトル誘導情報は、復号化器でマージモードを使用するかどうかを示すことができる。
双方向光学流れ情報は、ピクセル単位或いはサブブロック単位で動きベクトルを校正して動き補償を行うかどうかを示す情報であり得る。双方向光学流れ情報に基づいて、ピクセル単位或いはサブブロック単位の動きベクトルは、エントロピー符号化/復号化されなくてもよい。ここで、動きベクトル校正は、ブロック単位の動きベクトルをピクセル単位或いはサブブロック単位の動きベクトル値に変更することであり得る。
現在ブロックは、動き補償に関する情報のうちの少なくとも一つを用いて動き補償を行い、動き補償に関する情報のうちの少なくとも一つをエントロピー符号化/復号化することができる。
動き補償に関連する情報をエントロピー符号化/復号化する場合、切り捨てられたライス(Truncated Rice)2値化方法、K次数指数-ゴロム(K-th order Exp_Golomb)2値化方法、制限されたK次数指数-ゴロム(K-th order Exp_Golomb)2値化方法、固定長(Fixed-length)2値化方法、単項(Unary)2値化方法、又は切り捨てられた単項(Truncated Unary)2値化方法などの2値化(Binarization)方法が利用できる。
動き補償に関する情報をエントロピー符号化/復号化するとき、現在ブロック周辺の周辺ブロックの動き補償に関する情報又は周辺ブロックの領域情報、以前に符号化/復号化された動き補償に関する情報又は以前に符号化/復号化された領域情報、現在ブロックの深さに関する情報、及び現在ブロックのサイズに関する情報のうちの少なくとも一つを用いて、コンテキストモデル(context model)を決定することができる。
また、動き補償に関する情報をエントロピー符号化/復号化するとき、周辺ブロックの動き補償に関する情報、以前に符号化/復号化された動き補償に関する情報、現在ブロックの深さに関する情報、及び現在ブロックのサイズに関する情報のうちの少なくとも一つを、現在ブロックの動き補償に関する情報に対する予測値として用いて、エントロピー符号化/復号化を行うこともできる。
以下、動き情報補正(motion information refinement)について図13乃至図15を参照して具体的に説明する。ここで、動き情報補正は、動き情報のうちの少なくとも一つに対して補正することを意味することができる。すなわち、動き情報補正の対象となる情報は、動きベクトル、参照画像インデックス、参照画像、画面間予測インジケータ、予測リスト活用フラグ、重み(重み付け係数(weighting factor))、オフセットなど、動き情報に含まれる情報のうちの少なくとも一つであり得る。このような場合、動き情報補正は、動きベクトル、参照画像インデックス、参照画像、画面間予測インジケータ、予測リスト活用フラグ、重み、オフセットなど、動き情報に含まれる情報のうちの1つ以上の値が補正されることを意味することができる。
また、動き情報補正の対象となる情報は、符号化パラメータに含まれる情報のうちの少なくとも一つであり得る。このような場合には、動き情報補正は、符号化パラメータに含まれる情報のうちの1つ以上の値が補正されることを意味することができる。
動き情報補正が行われると、補正された動き情報が算出できる。動き情報補正方法によって補正された動き情報は、符号化/復号化対象ブロックの動き補償(図5のS504、図6のS605、図7のS703、図8のS804)に使用できる。
動き情報補正が行われるステップに関連して、動き情報補正は、動き補償ステップを行う前に行われ得る。すなわち、符号化/復号化対象ブロックの動き補償過程の実行前に動き情報補正方法を行って補正された動き情報を算出し、補正された動き情報で動き補償過程を行うことができる。
一例として、AMVPモードの場合、動きベクトルを決定するステップ(図5のS503、図6のS604)で動き情報補正が行われ得る。この場合、動きベクトル候補リストに含まれている動きベクトル候補、予測された動きベクトル、又は予測された動きベクトルと動きベクトル差分を合わせて算出された動きベクトルのうちのいずれかに動き情報補正(motion information refinement)を適用することができる。
別の例として、マージモードの場合、動き情報を決定するステップ(図7のS702、図8のS803)で動き情報補正が行われ得る。この場合、マージ候補リストに含まれているマージ候補又はマージ候補インデックスに基づいてマージ候補リストで決定された動き情報のうちのいずれかに動き情報補正を適用することができる。
一方、スキップモードの場合にも、動き情報補正が行われ得る。この場合、スキップモード候補リストに含まれているスキップ候補又はスキップインデックスに基づいてスキップ候補リストで決定された動き情報のうちのいずれかに動き情報補正を適用することができる。
また、動き情報補正が行われるステップに関連して、動き情報補正は、動き情報補償ステップ(図5のS504、図6のS605、図7のS703、図8のS804)内で行われ得る。すなわち、符号化/復号化対象ブロックの動き補償過程内で動き情報補正方法を行って補正された動き情報を算出し、補正された動き情報で動き補償過程を行うことができる。
一例として、符号化器/復号化器は、動きベクトル決定ステップ又は動き情報決定ステップ(図5のS503、図6のS604、図7のS702、図8のS803)で決定された動き情報に基づいて予測ブロックを生成し、生成された予測ブロックを用いた動き情報補正を行って補正された動き情報を算出することができる。ここで、符号化器/復号化器は、補正された動き情報を用いて最終予測ブロックを生成することができる。
一方、動き情報に対して符号化器と復号化器で同じ規則に基づいて補正することができる。符号化器と復号化器で同じ規則に基づいて動き情報を補正するので、動き情報補正の使用有無についての情報をエントロピー符号化/復号化しなくてもよい。
以下、図13乃至図15を参照して、動き情報補正の一実施形態である双方テンプレートマッチング(bilateral template matching)について説明する。
双方テンプレートマッチングは、動き情報のうちの動きベクトルに対する補正方法の一実施形態である。双方テンプレートマッチングを用いて、双方向予測のための2つの動きベクトルのうちの少なくとも一つの動きベクトルを補正することができる。ここで、双方テンプレートは、双方向予測で2つの動きベクトルを用いて生成された予測ブロックを重み付け和して計算された予測ブロックを意味することができる。前記双方向は、双予測を意味することができる。
具体的には、双方向予測ブロッに対して双方テンプレートマッチングが行われると、参照画像リスト0に該当する第1動きベクトルと参照画像リスト1に該当する第2動きベクトルのうちの少なくとも一つが補正できる。このとき、補正された動きベクトルは、補正前の動きベクトルとは互いに異なる動きベクトル値を持つことができる。
図13は双方テンプレートマッチングを説明するための図である。
図13を参照すると、双方テンプレートマッチングは、1)初期動きベクトルを用いて双方テンプレートを生成するステップと、2)双方テンプレート内のサンプルと参照画像内の復元されたサンプルとを比較して動きベクトルを補正するステップとを含むことができる。
1)双方テンプレートの生成
符号化器/復号化器は、参照画像リスト0に該当する第1動きベクトルと参照画像リスト1に該当する第2動きベクトルを介して生成された予測ブロックを用いて、双方テンプレートを生成することができる。また、符号化器/復号化器は、参照画像リスト0に該当する第1動きベクトルと参照画像リスト0に該当する第2動きベクトルを介して生成された予測ブロックを用いて、双方テンプレートを生成することができる。また、符号化器/復号化器は、参照画像リスト1に該当する第1動きベクトルと参照画像リスト1に該当する第2動きベクトルを介して生成された予測ブロックを用いて、双方テンプレートを生成することができる。ここで、双方テンプレートは予測ブロックを重み付け和して生成でき、重み付け和に使用される重みは05:0.5であり得る。
一方、双方テンプレートの生成に使用される動きベクトルを初期動きベクトルと呼ぶことができる。初期動きベクトルは、マージモード、AMVPモード及びスキップモードなどのうちの少なくとも一つの動き情報導出方法によって算出された動きベクトルを意味することができる。
2)動きベクトルの補正
符号化器/復号化器は、双方テンプレート内のサンプルと参照画像内の復元されたサンプルとの値を比較して、各参照画像リストに該当する各動きベクトルを補正することができる。
参照画像リスト0の参照画像内で双方テンプレートと最小の歪みを示す位置を指示する動きベクトルを、補正された第1動きベクトルとして決定することができる。そして、参照画像リスト1の参照画像内で双方テンプレートと最小の歪みを示す位置を指示する動きベクトルを、補正された第2動きベクトルとして決定することができる。
具体的には、初期第1動きベクトルが指示する参照画像内領域と双方テンプレートとの間の歪み値が、補正された第1動きベクトルが指示する参照画像内領域と双方テンプレートとの間の歪み値よりも大きければ、第1動きベクターは補正できる。同様に、初期第2動きベクトルが指示する参照画像内領域と双方テンプレートとの間の歪み値が、補正された第2動きベクトルが指示する参照画像内領域と双方テンプレートとの間の歪み値よりも大きければ、第2動きベクトルは補正できる。
このとき、符号化器/復号化器は、双方テンプレート内のサンプルと参照画像内の復元されたサンプルとの値を比較したときに、SAD(Sum of Absolute Difference)、SATD(Sum of Absolute Transformed Difference)、SSE(Sum of Squared Error)、MSE(Mean of Squared Error)、MR-SAD(Mean Removed SAD)などのサンプル間の歪み計算方法によって最小の歪み(Distortion)を示す参照画像内の復元されたサンプル位置を指示する動きベクトルを、補正された動きベクトルとして決定することができる。この場合、前記歪みは、輝度成分及び色差成分のうちの少なくとも一つの成分に対して計算できる。
一方、初期第1動きベクト及び初期第2動きベクトルが指示する参照画像内領域同士の間のSAD値が所定の値よりも大きい場合、双方テンプレートマッチングを行って初期第1動きベクトル及び初期第2動きベクトルを補正することができる。逆に、初期第1動きベクトル及び初期第2動きベクトルが指示する参照画像内領域同士間のSAD値が、予め定義された値よりも小さい場合、双方テンプレートマッチングを行わなくてもよい。
また、双方向予測の場合、第1予測方向(例えば、L0予測方向)に対応する初期第1動きベクトル値と、動き情報補正が適用された補正された第1動きベクトル値とが同じである場合には、第2予測方向(例えば、L1予測方向)に対応する初期第2動きベクトルに対しては動き情報補正を行わなくてもよい。
一方、双方テンプレートマッチングは、再帰的(recursive)で行われ得る。
具体的に、補正された第1動きベクトルと補正された第2動きベクトルを用いて第2双方テンプレートを生成した後、生成された第2双方テンプレートで双方テンプレートマッチングを行い、補正された第1動きベクトルと補正された第2動きベクトルを再補正することができる。この場合、双方テンプレートマッチングによる再補正動きベクトルを決定する方法は、最大M回だけ繰り返し行うことができる。ここで、Mは正の整数であり(例えば、2である)、前記Mは符号化器/復号化器で予め定められた固定値であり、符号化器で符号化されてシグナリングされる可変値であってもよい。又は、前記Mは符号化/復号化対象ブロックのサイズに基づいて決定できる。
一例として、もし符号化/復号化対象ブロックの高さ又は幅が8よりも小さい場合、Mは2に設定できる。
また、符号化/復号化対象ブロックの高さ及び幅が8である場合、Mは2に設定できる。
また、符号化/復号化対象ブロックの幅が8であり、高さが16である場合、又はその逆である場合には、Mは4に設定できる。
上述した場合ではない場合、Mは8に設定できる。この場合、第1参照画像(例えば、L0参照画像)に対して4回双方テンプレートマッチングを行い、第2参照画像(例えば、L1参照画像)に対して4回双方テンプレートマッチングを行うことができる。
一方、副画素単位で双方テンプレートマッチングが再帰的に行われると、整数画素単位で双方テンプレートマッチングが再帰的に行われ得る。
双方テンプレートマッチングの結果として生成された、補正された動きベクトルは、初期動きベクトルを代替することにより、符号化/復号化対象ブロックの動き補償に使用できる。そして、双方テンプレートマッチングは、符号化器と復号化器で同じ規則によって行われ得る。
双方テンプレートマッチングにおいて、補正された動きベクトルは、参照画像の限られた領域内で探索できる。
図14及び図15は双方テンプレートマッチングで補正された動きベクトルを探索する領域(以下、「探索領域」という。)を示すための図である。
図14を参照すると、探索領域は、整数画素(interger pel)単位で横/縦方向に-M~+N画素の範囲に定められ得る。ここで、MとNは正の整数であり得る。
また、探索領域は、副画素(sub-pel)単位で横/縦方向に-O~+P副画素の範囲に定められ得る。ここで、OとPは分数値であり得る。一例として、副画素単位は1/2画素、1/4画素、1/8画素、1/16画素、1/32画素などを意味することができる。また、前記OとPは、副画素を表現するために正の整数の値を持つこともできる。
副画素単位で補正された動きベクトルを探索する場合、整数画素単位の動きベクトルが指示する整数画素に空間的に隣接する周辺副画素が動きベクトルの探索対象となれる。図14において、副画素単位は1/2画素単位の一例を示す。
また、メモリアクセス帯域幅の減少のために副画素単位の探索領域を制限することができる。たとえば、副画素単位の探索領域が整数画素単位の探索領域に含まれるように制限することができる。
図15は副画素単位の探索領域が整数画素単位の探索領域に含まれるように制限する一実施形態を示す図である。
図15を参照すると、斜線で表示された副画素は、整数画素単位の探索領域に含まれない副画素を示し、当該副画素単位では補正された動きベクトルを探索しないように制限することができる。すなわち、斜線で表示されていない副画素単位でのみ補正された動きベクトルを探索するように制限して、斜線で表示された副画素生成のための整数画素をメモリからさらに持ってこないようにすることにより、メモリアクセス帯域幅を減少させることができる。
一方、整数単位の探索領域は、中央地点、上側地点、下側地点、左側地点及び右側地点のうちの少なくとも一つを含むことができる。
ここで、上側地点、下側地点、左側地点、右側地点の歪み値に基づいて、少なくとも一つの地点をさらに探索することができる。ここで、少なくとも一つの地点は、左上側地点、左下側地点、右上側地点及び右下側地点のうちの少なくとも一つの地点であり得る。この場合、中央地点、上側地点、下側地点、左側地点、右側地点、左上側地点、左下側地点、右上側地点及び右下側地点のうちの少なくとも一つで副画素単位の探索領域が設定できる。一例として、中央地点、上側地点、下側支点、左側支点及び右側地点で副画素単位の探索領域が設定できる。
一方、探索領域の形態(Shape)は、初期動きベクトルが指示する画素を基準として正方形(Square)、長方形(Rectangular)、菱形(Diamond/Rhombus)、十字形(Cross)形状などの2次元で表現可能な図形であり得る。前記探索領域の形態は、符号化器/復号化器で予め定められた固定形態であってもよく、符号化器で符号化されてシグナリングされる情報によって探索領域の形態が特定されてもよい。
また、探索領域が画像の境界を一定の範囲以上に超えないように初期動きベクトル及び補正された動きベクトルのうちの少なくとも一つに対して動きベクトル値の範囲を制限することができる。動きベクトル値の範囲の制約はクリッピング(clipping)で実現できる。
この場合、動きベクトル値の範囲は、符号化器と復号化器で予め定められた範囲に決定できる。ここで、予め定められた範囲は、動きベクトル値を制限するためのしきい値を意味することができ、前記しきい値は、最小値又は最大値のうちの少なくとも一つで実現できる。一方、動きベクトル値の範囲は、符号化器で符号化されてシグナリングされる可変的な範囲であってもよい。
一方、整数画素単位の探索領域と副画素単位の探索領域のうちの少なくとも一つに画像の境界を一定の範囲以上に超えないように制限することができる。
一方、整数画素単位の動き情報補正が行われた後に、副画素単位の動き情報補正が許可できる。
上述したような双方テンプレートマッチングを利用する場合、追加構文要素の伝送なしに復号化器上で動きベクトルを改善することができる。一方、双方テンプレートマッチングは、双方向予測マージモード又は復号化器動きベクトル誘導モードの場合に適用できる。
一実施形態によれば、双方テンプレートマッチングは、現在ブロックが一方向予測マージ候補、地域照明補償モード、アフィン動き補償モード、及びsub-CUマージモードのうちの少なくとも一つに該当しない場合には行われ得る。
以下、動き情報補正に関わる動き補正モード(Motion-refined mode)について説明する。ここで、動き補正モードは、画面間予測で用いられる動き情報を導出するための予測モードを意味することができる。一例として、動き補正モードは、上述した双方テンプレートマッチングを利用する動き情報補正に基づいた一種のマージモードであり得る。
動き補正モードは、画像内動きがないか、或いは動きが小さい領域を効率よく符号化することができる。
動き補正モードは、上述した動き情報補正に基づく動き情報導出方式であって、上述した動き情報補正の各実施形態は、動き補正モードに適用できる。
一方、動き補正モードの利用可否又は適用有無は、ビットストリームを介してシグナリングされる情報に基づいて決定できる。前記情報は、ビデオ、シーケンス、ピクチャ、スライス、タイル、符号化ツリーユニット、符号化ユニット、予測ユニット、変換ユニット及びブロックのうちの少なくとも一つの単位に対してシグナリングできる。動き補正モードの利用可否又は適用有無は、該当単位に対して動き補正モードが利用可能であるか否か、或いは適用されるか否かを意味することができる。
動き補正モードでは、1)動き情報を誘導するステップ、及び2)誘導された動き情報に動き情報補正を適用して補正された動き情報を生成するステップが行われ得る。ここで、動き情報補正は、上述した双方テンプレートマッチングを含むことができる。そして、動き補正モードで補正された動き情報は、符号化/復号化対象ブロックの動き補償に使用できる。
一方、動き補正モードの対象となる動き情報は、動きベクトル、参照画像、画面間インジケータ、参照画像インデックス、予測リスト活用フラグ、重み及びオフセットのうちの少なくとも一つを含むことができる。
1)動き情報の誘導
動き補正モードでは、空間的に隣接する周辺ブロックの動き情報、時間的に隣接する周辺ブロックの動き情報、予め定義された動き情報、又は参照画像で最も多く存在する動き情報のうちの少なくとも一つから動き情報を誘導することができる。ここで、誘導された動き情報は、動き補正候補として動き補正モードリストに保存できる。空間的に隣接する周辺ブロックの動き情報から誘導された動き情報は空間動き補正候補であり、時間的に隣接する周辺ブロックの動き情報から誘導された動き情報は時間動き補正候補であり得る。
以下、動き情報のうちの動きベクトルを誘導する方法について詳細に説明する。
動き補正モードでは、空間的に隣接する周辺ブロックの動きベクトル、時間的に隣接する周辺ブロックの動きベクトル、予め定義された動きベクトル、又は参照画像で最も多く存在する動きベクトルのうちの少なくとも一つから動きベクトルを誘導することができる。
A.空間的に隣接する周辺ブロック
動き補正モードでは、空間的に隣接する周辺ブロックのうちの少なくとも一つのブロックの動きベクトルから動きベクトルを誘導することができる。ここで、空間的に隣接する周辺ブロックは、上述した図9の周辺ブロックを含むことができる。
一方、動き補正モードでは、空間的に隣接する周辺ブロックのうち、次の条件を少なくとも一つ満足するブロックの動きベクトルから動きベクトルを誘導することができる。
-符号化ブロックフラグが0であるブロック(例えば、残予信号が存在しないブロック)
-マージスキップモードに該当するブロック
-現在ブロックに空間的に隣接する周辺ブロックのうち、動きベクトル差分値が0であるブロック(例えば、MVD=(0,0))
-マージモードに該当するブロック
-画面間予測インジケータがPRED_LXであるブロック(Xは、0を含む正の整数)
-画面間予測インジケータがPRED_BI、PRED_TRI又はPRED_QUADのうちのいずれかに該当するブロック
一方、動き補正モードでは、空間スキップ/マージ候補のうちの少なくとも一つの動きベクトルから動きベクトルを誘導することができる。
一例として、空間スキップ/マージ候補の参照画像が符号化/復号化対象ブロックの参照画像と同一でない場合(画像順序カウント値が互いに異なる場合)、画像の画像順序カウント値に基づいて、前記空間的に隣接する周辺ブロックの動きベクトルから誘導された動きベクトルをスケーリングして誘導することができる。
B.時間的に隣接する周辺ブロック
動き補正モードでは、時間的に隣接する周辺ブロックのうちの少なくとも一つのブロックの動きベクトルから動きベクトルを誘導することができる。ここで、時間的に隣接する周辺ブロックは、参照画像内の対応位置ブロック及び対応位置画像内の対応位置ブロックを含むことができる。
ここで、参照画像内の対応位置ブロックは、次のブロックのうちの少なくとも一つであり得る。
-符号化/復号化対象ブロックの左上側位置である(0,0)に対応する参照画像内の対応位置ブロック
-参照画像内の対応位置ブロック(図10のC3)
-参照画像内の対応位置ブロック(図10のC1)
-参照画像内の対応位置ブロック(図10のH)
一方、対応位置画像内の対応位置ブロックは、次のブロックのうちの少なくとも一つであり得る。
-符号化/復号化対象ブロックの左上側位置である(0,0)に対応する対応位置画像内の対応位置ブロック
-対応位置画像内の対応位置ブロック(図10のC3)
-対応位置画像内の対応位置ブロック(図10のC1)
-対応位置画像内の対応位置ブロック(図10のH)
一方、動き補正モードでは、時間的に隣接する周辺ブロックのうち、次の条件を少なくとも一つ満足するブロックの動きベクトルから動きベクトルを誘導することができる。
-対応位置ブロック内/外のブロックのうち、符号化ブロックフラグが0であるブロック(例えば、残予信号が存在しないブロック)
-対応位置ブロック内/外のブロックのうち、マージスキップモードに該当するブロック
-対応位置ブロック内/外のブロックのうち、動きベクトル差分値が0であるブロック(例えば、MVD=(0,0))
-対応位置ブロック内/外のブロックのうち、マージモードに該当するブロック
-対応位置ブロック内/外のブロックのうち、画面間予測インジケータがPRED_LXであるブロック(Xは、0を含む正の整数)
-対応位置ブロック内/外のブロックのうち、画面間予測インジケータがPRED_BI、PRED_TRI又はPRED_QUADのうちのいずれかに該当するブロック
一方、動き補正モードでは、時間スキップ/マージ候補のうちの少なくとも一つの動きベクトルから動きベクトルを誘導することができる。
一例として、時間スキップ/マージ候補の参照画像或いは対応位置画像が符号化/復号化対象ブロックの参照画像と同一でない場合(画像順序カウント値が互いに異なる場合)、画像の画像順序カウント値に基づいて、前記時間的に隣接する周辺ブロックの動きベクトルから誘導された動きベクトルをスケーリングして誘導することができる。
一方、時間的に隣接する周辺ブロックを含む対応位置画像及び参照画像を指示する参照画像インデックスは、空間的に隣接する周辺ブロックの参照画像インデックスから誘導できる。
C.予め定義された動きベクトル
動き補正モードでは、(0,0)動きベクトル(ゼロベクトル)を動きベクトルとして誘導することができる。
D.参照画像で最も多く存在する動きベクトル
動き補正モードでは、参照画像で最も多く存在する動きベクトルを誘導することができる。
このとき、参照画像で最も多く存在する順に動きベクトルをソートし、ソートされた順に、最大L個の動きベクトルが誘導できる。このとき、Lは正の整数であり得る。この場合、Lは、符号化器/復号化器で予め定められた固定値であってもよく、符号化器で符号化されてシグナリングされる可変値であってもよい。
一方、動き補正モードで、動きベクトルは、上述した順序(A→B→C→D)通りに動きベクトルを誘導することができる。この場合、最大M個の動きベクトルが誘導されるまで誘導することができる。また、上述した順序通りに動きベクトルを誘導し、誘導された動きベクトルが存在する場合、動きベクトルの誘導を中断して最大M個の動きベクトルを動き補正モードの動きベクトルとして使用することができる。ここで、Mは正の整数であり、Mは符号化器/復号化器で予め定められた固定値であってもよく、符号化器で符号化されてシグナリングされる可変値であってもよい。ここで、空間的に隣接する周辺ブロックが複数である場合には、まず双方向予測動きベクトルを誘導して動き補正モードリストに挿入し、その後、一方向予測の動きベクトルを誘導して動き補正モードリストに挿入することができる。
上述した動き補正モードでの動きベクトル誘導手順は、次のとおりに設定できる。
一例として、空間的に隣接する周辺ブロックの動きベクトル、時間的に隣接する周辺ブロックの動きベクトル、(0,0)動きベクトルの順に動きベクトルを誘導することができる。
他の例として、時間的に隣接する周辺ブロックの動きベクトル、空間的に隣接する周辺ブロックの動きベクトル、(0,0)動きベクトルの順に動きベクトルを誘導することができる。
ここで、空間的に隣接する周辺ブロックの動きベクトルは、空間スキップ/マージ候補の誘導順に動きベクトルを誘導することができ、時間的に隣接する周辺ブロックの動きベクトルは、時間スキップ/マージ候補の誘導順に動きベクトルを誘導することができる。
一方、動き補正モードでは、上述した方法によって誘導された動きベクトルが(0,0)の値を持たない場合にのみ使用することができる。
一例として、動き補正モードで双方向予測が使用される場合、誘導された第1動きベクトルと第2動きベクトルがすべて(0,0)の値を持たない場合に動き補正モードの動きベクトルとして使用することができる。
そして、動き補正モードでN方向予測(Nは2以上の整数)が使用される場合、誘導されたN個の動きベクトルがすべて(0,0)の値を持たない場合に動き補正モードの動きベクトルとして使用することができる。
又は、N方向予測(Nは2以上の整数)において、前記誘導された複数の動きベクトルのうち、一部の動きベクトルが(0,0)の値を持たない場合に動き補正モードの動きベクトルとして使用することができる。
一方、動き補正モードで双方向予測が使用される場合、前記誘導された第1動きベクトルと第2動きベクトルが互いに同じでない場合には、前記誘導された第1動きベクトルと第2動きベクトルのうちのいずれか一方又は両方を動き補正モードの動きベクトルとして使用することもできる。
一方、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックの画面間予測インジケータが双方向予測、3方向予測、4方向予測のうちの少なくとも一つである場合にのみ、誘導された動きベクトルを動き補正モードの動きベクトルとして使用することができる。すなわち、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックの画面間予測インジケータが一方向予測ではない場合、誘導された動きベクトルを動き補正モードの動きベクトルとして使用することができる。
また、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックの画面間予測インジケータが一方向予測である場合には、当該画面間予測インジケータを双方向予測に変更し、前記一方向予測に対する動きベクトルの符号を逆に変更して、前記一方向予測に該当する予測方向と反対の一方向予測に対する動きベクトルを誘導して動き補正モードの動きベクトルとして使用することができる。
例えば、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックの画面間予測インジケータがL0一方向予測を指示し、動きベクトルが(-4,6)である場合には、画面間予測インジケータを双方向予測に変更し、L1方向予測に対する動きベクトルを(4,-6)に誘導して、2つの動きベクトルを動き補正モードの動きベクトルとして使用することができる。このとき、L0一方向予測に対する参照画像と現在画像との距離と同一であるか比例するように、L1一方向予測に対する参照画像を決定することができる。
一方、N方向予測(Nは2以上の整数)が使用される動き補正モードで、誘導された動きベクトルがN個でない場合、N個の動きベクトルを誘導するために、既に誘導された動きベクトルに基づいた動きベクトルを生成することができる。具体的には、現在画像及び/又は参照画像のPOCに基づいて、既に誘導された動きベクトルをスケーリングすることにより、動きベクトルを生成することができる。
一例として、動き補正モードで双方向予測が使用され且つ誘導された第1動きベクトルのみ存在する場合、当該第1動きベクトルを参照画像リスト1内の参照画像を基準にスケーリングして第2動きベクトルを生成し、既に誘導された第1動きベクトルと生成された第2動きベクトルを動き補正モードの動きベクトルとして使用することができる。
他の例として、動き補正モードで双方向予測が使用され且つ前記誘導された第2動きベクトルのみ存在する場合、当該第2動きベクトルを参照画像リスト0内の参照画像を基準にスケーリングして第1動きベクトルを生成し、既に誘導された第2動きベクトルと生成された第1動きベクトルを動き補正モードの動きベクトルとして使用することができる。
以下、動き情報のうちの参照画像を誘導する方法について詳細に説明する。
動き補正モードで、参照画像は、次の方法のうちの少なくとも一つを用いて誘導できる。
一例として、参照画像リスト0及び参照画像リスト1に含まれている参照画像のうち、参照画像インデックスが0である参照画像を、動き補正モードの参照画像として誘導することができる。もし、参照画像リスト0及び参照画像リスト1に含まれている参照画像のうち、参照画像インデックスが0である参照画像同士が互いに同じであれば、参照画像リスト1に含まれている参照画像のうち、参照画像リスト0内の参照画像インデックスが0である参照画像と同一でない参照画像を、動き補正モードの参照画像として誘導することができる。また、参照画像リスト0及び参照画像リスト1に含まれている参照画像のうち、参照画像インデックスが0である参照画像同士が互いに同じであれば、参照画像リスト0に含まれている参照画像のうち、参照画像リスト1内の参照画像インデックスが0である参照画像と同一でない参照画像を、動き補正モードの参照画像として誘導することができる。
一方、前述したように動き補正モードの参照画像を誘導するために、参照画像インデックス0を使用することができる。しかし、これに限定されず、0ではない参照画像インデックスを用いて動き補正モードの参照画像を誘導することができる。
0ではない参照画像インデックスを用いて動き補正モードの参照画像を誘導する方法は、次のとおりである。
一例として、符号化/復号化対象ブロックの空間的に隣接するA1位置、B1位置、B0位置、A0位置及びB2位置のうちの少なくとも一つの位置で持つ参照画像インデックスの中央値(median value)で参照画像インデックスを決定することができる。ここで、中央値の代わりに、最小値、最大値、平均値、重み付け平均値、最頻値などの様々な統計値を用いることもできる。決定された参照画像インデックスが指示する参照画像を動き補正モードの参照画像として誘導することができる。このとき、各参照画像リスト別に、前記方法を用いて参照画像インデックスを決定することができる。
一方、A1位置にのみブロックが存在し、当該ブロックが画面間予測モードである場合には、A1位置で持つ参照画像インデックスで参照画像インデックスを決定することができる。
また、B1位置にのみブロックが存在し、当該ブロックが画面間予測モードである場合には、B1位置で持つ参照画像インデックスで参照画像を決定することができる。
また、B0位置にのみブロックが存在し、当該ブロックが画面間予測モードである場合には、B0位置で持つ参照画像インデックスで参照画像を決定することができる。
また、A0位置にのみブロックが存在し、当該ブロックが画面間予測モードである場合には、A0位置で持つ参照画像インデックスで参照画像を決定することができる。
また、B2位置にのみブロックが存在し、当該ブロックが画面間予測モードである場合は、B2位置で持つ参照画像インデックスで参照画像を決定することができる。
上述した方法によって誘導された参照画像に動き情報補正を適用して補正された参照画像を算出し、補正された参照画像を動き補正モードの参照画像として使用することができる。
一方、前述した実施形態では、二つの参照画像リストを仮定して説明した。しかし、参照画像リストの個数は、これに限定されず、N個の参照画像リストが存在し得る。このとき、Nは2以上の整数であり、N個の参照画像リストが存在する場合にも、前述したのと同様に、参照画像の同一性判断に基づいた参照画像の誘導が行われ得る。例えば、N個の互いに異なる参照画像が誘導されるようにすることができる。
他の実施形態として、参照画像リストi(i=0…N、Nは1以上の整数)に含まれている参照画像のうち、符号化/復号化対象画像と画像順序カウントの差異値が最も小さい参照画像を動き補正モードの参照画像として誘導することができる。
又は、参照画像リストi(i=0…N、Nは1以上の整数)に含まれている参照画像のうち、符号化/復号化対象画像と画像順序カウントの差異値が最も小さく、及び/又は最も小さい時間的階層識別子値を持つ参照画像を動き補正モードの参照画像として誘導することができる。
別の実施形態として、空間的に隣接する周辺ブロックの参照画像を動き補正モードの参照画像として誘導することができる。
別の実施形態として、時間的に隣接する周辺ブロックの参照画像を動き補正モードの参照画像として誘導することができる。
別の実施形態として、スキップ/マージ候補のうちの少なくとも一つの参照画像を動き補正モードの参照画像として誘導することができる。
別の実施形態として、動き情報補正方法を参照画像リスト内の全部あるいは一部の参照像に対して行った後、最小歪みを示す参照画像を動き補正モードの参照画像として誘導することができる。
以下、動き情報のうちの画面間予測インジケータを誘導する方法について詳細に説明する。
動き補正モードで、画面間予測インジケータは、次の方法のうちの少なくとも一つを用いて誘導できる。
一例として、動き補正モードで、画面間予測インジケータは、一方向予測、双方向予測、3方向予測、4方向予測及びN方向予測のうちのいずれかの予測に固定して使用することができる。
他の例として、空間的に隣接する周辺ブロックの画面間予測インジケータを動き補正モードの画面間予測インジケータとして誘導することができる。
別の例として、時間的に隣接する周辺ブロックの画面間予測インジケータを動き補正モードの画面間予測インジケータとして誘導することができる。
別の例として、スキップ/マージ候補のうちの少なくとも一つの画面間予測インジケータを動き補正モードの画面間予測インジケータとして誘導することができる。
別の例として、上述した方法によって誘導された参照画像のうちの利用可能な参照画像に基づいて、画面間予測インジケータを動き補正モードの画面間予測インジケータとして誘導することができる。具体的には、利用可能な参照画像が1つである場合、一方向予測で画面間予測インジケータを誘導することができる。また、利用可能な参照画像が2つである場合、双方向予測で画面間予測インジケータを誘導することができる。
前記誘導された画面間予測インジケータに前記動き情報補正方法を用いて補正された画面間予測インジケータを算出し、前記補正された画面間予測インジケータを動き補正モードの画面間予測インジケータとして使用することができる。
2)動き情報の補正
符号化器/復号化器は、上述した方法によって誘導された動き情報に動き情報補正を適用して補正された動き情報を算出し、補正された動き情報を動き補正モードの動き情報として使用することができる。具体的には、補正された動きベクトル、補正された参照画像、補正された画面間予測インジケータのうちの少なくとも一つを用いて予測ブロックを生成して動き補償を行うことができる。同様に、誘導された参照画像インデックス、予測リスト活用フラグ、重み(重み付け係数(weighting factor))、オフセットなどの動き情報に含まれる情報のうちの少なくとも一つに対して動き情報補正方法を行い、補正された参照画像インデックス、補正された予測リスト活用フラグ、補正された重み、及び補正されたオフセットのうちの少なくとも一つを用いて予測ブロックを生成して動き補償を行うことができる。ここで、動き情報補正方法は、前記双方テンプレートマッチングを含むことができる。このとき、符号化/復号化対象画像と各参照画像間の画像順序カウントに基づいて重み付け和を計算して最終予測ブロックを生成することにより、動き補償を行うことができる。
一方、誘導された動きベクトルに動き情報補正を適用する場合、誘導された動きベクトルは、初期動き探索位置の決定に使用できる。前記初期動き探索位置に基づいて補正された動きベクトルが決定できる。
一方、符号化器/復号化器は、最大M個の誘導された動き情報に動き情報補正を行うことができる。ここで、Mは、符号化器/復号化器で予め定められた固定値であってもよく、符号化器で符号化されてシグナリングされる可変値であってもよい。一例として、第1動き情報、第2動き情報、…、第N動き情報のうちの少なくとも一つの動き情報が補正できる。このとき、Nは4以上の整数であり得る。
また、前記誘導された動き情報の全部又は一部に、上述した動き情報補正を適用せず、動き補正モードの動き情報として使用することができる。具体的に、誘導された動きベクトル、誘導された参照画像、誘導された画面間予測インジケータのうちの少なくとも一つを用いて予測ブロックを生成して動き補償を行うことができる。
一方、動き補正モードで、動き情報補正(一例として、双方テンプレートマッチング)は選択的に適用できる。
一実施形態によれば、動き情報補正は、現在ブロックが一方向予測マージ候補、地域照明補償モード、アフィン動き補償モード、及びsub-CUマージモードのうちのいずれかに該当しない場合に行われ得る。
また、動き情報補正は、第1予測方向(例えば、L0予測方向)に対応する第1参照画像と符号化/復号化対象画像順序カウンタの差異値(POCref0-POCcurr)、及び第2予測方向(例えば、L1予測方向)に対応する第2参照画像と符号化/復号化対象画像順序カウンタの差異値(POCref1-POCcurr)のうちのいずれか一つのみ負の整数の値(negative value)を持つ場合に行われ得る。
また、動き情報補正は、第1予測方向と第2予測方向とが互いに異なる場合に行われ得る。
符号化器/復号化器は、上述した方法によって誘導された動き情報のうちの少なくとも一つに対して双方テンプレートマッチングを行い、最小の歪みを持つ一つの動き情報を用いて予測ブロックを生成して動き補償を行うことができる。このとき、一つの動き情報には、L0動き情報及びL1動き情報のうちの少なくとも一つが含まれ得る。
また、符号化器/復号化器は、スキップ候補リスト又はマージ候補リストに存在する少なくとも一つの候補に対して双方テンプレートマッチングを行い、最小の歪みを持つ一つの候補を用いて予測ブロックを生成して動き補償を行うことができる。
また、符号化器/復号化器は、上述した方法によって誘導された動き情報のうちの少なくとも一つに対して双方テンプレートマッチングを行い、最小の歪みを持つM個の動き情報を用いて生成されたM個の予測ブロックに重み付け和を計算して符号化/復号化対象ブロックの予測ブロックとして使用することができる。ここで、Mは、正の整数であってもよく、2以上であってもよい。
また、符号化器/復号化器は、スキップ候補リスト又はマージ候補リストに存在する少なくとも一つの候補に対して双方テンプレートマッチングを行い、最小の歪みを持つM個の候補を用いて生成されたM個の予測ブロックに重み付け和を計算して符号化/復号化対象ブロックの予測ブロックとして使用することができる。ここで、Mは、正の整数であってもよく、2以上であってもよい。
また、符号化器/復号化器は、スキップ候補リスト又はマージ候補リストにおける一方向予測候補に対してはスキップインデックス或いはマージインデックスをエントロピー符号化/復号化するが、M個以上の双方向予測候補に対しては、双方テンプレートマッチングを用いて、最小の歪みを持つ少なくとも一つの候補を用いて予測ブロックを生成して動き補償を行うことができる。このとき、1つのフラグ或いは1つのインデックスをエントロピー符号化/復号化してM個以上の双方向予測候補を指示することができる。すなわち、一方向予測候補それぞれに対しては、スキップインデックス或いはマージインデックスを割り当てるが、M個以上の双方向予測候補に対して一つのスキップインデックス或いはマージインデックスを割り当てることができる。M個以上の双方向予測候補に対しては、双方テンプレートマッチングを用いて、最小の歪みを示す少なくとも一つの候補が決定できるので、各双方向予測候補に対するスキップインデックス或いはマージインデックスを割り当てなくてもよい。
動き補正モードは、動き補正モード使用情報に基づいて使用有無が決定できる。ここで、動き補正モード使用情報は、フラグ情報、インデックス(索引)情報のうちの少なくとも一つの情報でエントロピー符号化/復号化できる。
動き補正モード使用情報の符号化/復号化は、スキップフラグの値に基づいて行われ得る。そして、動き補正モード使用情報の符号化/復号化時点は、スキップフラグの符号化/復号化時点に基づいて決定できる。例えば、動き補正モード使用情報は、スキップフラグが1である場合(スキップモードを使用する場合)にエントロピー符号化/復号化できる。この場合、動き補正モード使用情報は、スキップフラグ(skip flag)後にエントロピー符号化/復号化できる。
逆に、スキップフラグの符号化/復号化は、動き補正モード使用情報の値に基づいて行われ得る。例えば、動き補正モード使用情報が1である場合(動き補正モードを使用する場合)、スキップフラグがエントロピー符号化/復号化できる。この場合、動き補正モード使用情報は、スキップフラグの前にエントロピー符号化/復号化できる。
また、動き補正モード使用情報の符号化/復号化は、マージフラグの値に基づいて行われ得る。動き補正モード使用情報の符号化/復号化時点は、マージフラグの符号化/復号化時点に基づいて決定できる。例えば、動き補正モード使用情報は、マージフラグが1である場合(マージモードを使用する場合)にエントロピー符号化/復号化できる。この場合、動き補正モード使用情報は、マージフラグの後にエントロピー符号化/復号化できる。
逆に、マージフラグの符号化/復号化は、動き補正モード使用情報の値に基づいて行われ得る。例えば、動き補正モード使用情報が1である場合(動き補正モードを使用する場合)、マージフラグがエントロピー符号化/復号化できる。この場合、動き補正モード使用情報は、マージフラグ(merge flag)の前にエントロピー符号化/復号化できる。
動き補正モード使用情報の符号化/復号化は、特定の動き補償モードに基づいて行われ得る。例えば、動き補正モード使用情報は、アフィン動き補償モードを使用しない場合にエントロピー符号化/復号化できる。
復号化器動きベクトル誘導モードフラグの符号化/復号化は、動き補正モード使用情報の値に基づいて行われ得る。例えば、動き補正モード使用有無情報が0である場合(動き補正モードを使用しない場合)、復号化器動きベクトル誘導モードフラグがエントロピー符号化/復号化できる。
また、動き補正モード使用情報は、符号化/復号化対象ブロックの一つ以上の周辺ブロックの動き補正モード使用情報に基づいて符号化/復号化できる。例えば、一つ以上の周辺ブロックは、空間的に隣接する一つ以上のブロック及び/又は時間的に隣接する一つ以上のブロックを含むことができる。前記空間的に隣接する一つ以上のブロックは、左側に隣接するブロック及び/又は上側に隣接するブロックを含むことができる。
また、動き補正モード使用情報をシグナリングしない場合、動き補正モード使用情報は、符号化/復号化対象ブロックの一つ以上の周辺ブロックの動き補正モード使用情報に基づいて誘導できる。ここで、1つ以上の周辺ブロックは、空間的に隣接する一つ以上のブロック及び/又は時間的に隣接する一つ以上のブロックを含むことができる。前記空間的に隣接する一つ以上のブロックは、左側に隣接するブロック及び/又は上側に隣接するブロックを含むことができる。
動き補正モード使用情報は、符号化/復号化対象ブロックに空間的に隣接するブロックのうちの少なくとも一つがスキップモードを使用した場合にエントロピー符号化/復号化できる。
また、動き補正モード使用情報は、符号化/復号化対象ブロックに空間的に隣接するブロックのうちの少なくとも一つがマージモードを使用した場合にエントロピー符号化/復号化できる。
また、動き補正モード使用情報は、符号化/復号化対象ブロックに空間的に隣接するブロックのうちの少なくとも一つが画面間モードである場合にエントロピー符号化/復号化できる。
動き補正モード使用情報は、バイパスモード(bypass mode)でエントロピー符号化/復号化できる。
また、動き補正モードがスキップモードの形で使用される場合、残余信号をエントロピー符号化/復号化しないことができる。
また、動き補正モードがマージモードの形で使用される場合、残余信号をエントロピー符号化/復号化することができる。
また、動き補正モードでは、残余信号の一部のみをエントロピー符号化/復号化して使用することができる。このとき、前記残余信号の一部は、DC量子化レベル(DC変換係数)であり得る。
また、動き補正モードが使用される場合、動き補正モード使用情報以外の他の情報は、エントロピー符号化/復号化されなくてもよい。ここで、他の情報は、動き補償に関する情報のうちの少なくとも一つであり得る。
以上では、動き情報補正に関する動き補正モード(Motion-Refined mode)について説明した。以下、動き補正モードで誘導された動き補正候補について説明する。
動き補正候補は、動き補正モードを介して誘導された動きベクトル、誘導された参照画像、及び誘導された画面間予測インジケータのうちの少なくとも一つを含む動き情報を意味することができる。符号化器/復号化器は、動き補正候補をスキップモード或いはマージモードでのスキップ候補或いはマージ候補としてそれぞれスキップ候補リスト或いはマージ候補リストに追加することができる。
スキップ/マージ候補リストに動き補正候補が追加される実施形態は、次のとおりである。
動き補正候補と同じスキップ/マージ候補がスキップ/マージ候補リストに存在すると、動き補正候補をスキップ/マージ候補リストに追加しなくてもよい。また、スキップ/マージ候補と同じ動き補正候補がスキップ/マージ候補リストに存在すると、スキップ/マージ候補をスキップ/マージ候補リストに追加しなくてもよい。
動き補正候補は、空間スキップ/マージ候補よりも先に誘導されてスキップ/マージ候補リストに追加できる。
一方、動き補正候補は、特定の位置で誘導された空間スキップ/マージ候補よりも先に誘導されてスキップ/マージ候補リストに追加できる。ここで、特定の位置は、図10のA1、B1、B0、A0及びB2位置のうちの少なくとも一つであり得る。
また、動き補正候補は、時間スキップ/マージ候補、組み合わせマージ候補、及び所定の動き情報値を持つマージ候補のうちの少なくとも一つよりも先に誘導されてスキップ/マージ候補リストに追加できる。
符号化器/復号化器は、動き補正モードの動き情報補正によって補正された動きベクトル、補正された参照画像、及び補正された画面間予測インジケータのうちの少なくとも一つを含む動き情報を動き補正候補として決定することができる。上述したように、動き補正候補をスキップモード或いはマージモードでのスキップ候補或いはマージ候補としてそれぞれスキップ候補リスト或いはマージ候補リストに追加することができる。
一方、スキップモードの代わりに動き補正モードを使用することができる。すなわち、動き補正モードでスキップモードを代替して画像を符号化/復号化することができる。また、マージモードの代わりに動き補正モードを使用することができる。すなわち、動き補正モードでマージモードを代替して画像を符号化/復号化することができる。
動き補正モードを用いて生成された最終予測ブロックに、オーバーラップブロック動き補償モード、地域照明補償モード及び双方向光学流れモードのうちの少なくとも一つを適用することができる。
また、動き補正モードでは、動き情報候補に対するリストを生成せずに、一つ又は一部の動き情報に対してのみ動き情報補正方法を適用することができる。
以下、動き補正モード(Motion-Refined Mode、MRM)での動き情報補正(Motion Information Refinement)が行われる条件について説明する。
動き情報補正は、動きベクトルの参照画像の画像順序カウント(POC)を基準に、行うか否かを決定することができる。
一例として、移動情報補正方法は、画像順序カウントを基準に符号化/復号化対象画像よりも小さい画像順序カウントを持つ参照画像を指示する動きベクトル、及び画像順序カウントを基準に符号化/復号化対象画像よりも大きい画像順序カウントを持つ参照画像を指示する動きベクトルがすべて存在するときに行われ得る。
また、動き情報補正方法は、画像順序カウントを基準に符号化/復号化対象画像よりも小さい画像順序カウントを持つ参照画像を指示する動きベクトルが2つ存在するときに行われ得る。
また、動き情報補正方法は、画像順序カウントを基準に符号化/復号化対象画像よりも大きい画像順序カウントを持つ参照画像を指示する動きベクトルが2つ存在するときに行われ得る。
動き情報補正は、アフィン動き補償モード、復号化器動きベクトル誘導モード及び地域照明補償モードのうちの少なくとも一つが使用されないときに符号化/復号化対象ブロックに行われ得る。
動き情報補正は、符号化/復号化対象画像の画像順序カウントと第1参照画像の画像順序カウントとの差異値、又は符号化/復号化対象画像の画像順序カウントと第2参照画像の画像順序カウントとの差異値がN(Nは0以上の整数)よりも小さい場合に行われ得る。このとき、第1参照画像は、第1動きベクトルが指示する参照画像を意味することができ、第2参照画像は、第2動きベクトルが指示する参照画像を意味することができる。
動き情報補正は、動き情報補正の対象である第1動きベクトルと第2動きベクトルに基づいて、行うかどうかを決定することができる。
一例として、第1動きベクトルが第2動きベクトルと同一であり、第1動きベクトルが指示する参照画像と第2動きベクトルが指示する参照画像とが同一である場合、動き情報補正は行われなくてもよい。すなわち、第1動き情報と第2動き情報とが互いに異なる、及び/又はそれぞれが指示する参照画像が異なる場合にのみ動き情報補正が行われ得る。また、第1動きベクトルが第2動きベクトルと同一である場合、動き情報補正は行われなくてもよい。すなわち、第1動きベクトルと第2動きベクトルとが互いに異なる場合にのみ、動き情報補正が行われ得る。
他の例として、第1動きベクトルが指示する参照画像と第2動きベクトルが指示する参照画像とが同一である場合にのみ、動き情報補正方法を行ってもよい。逆に、第1動きベクトルが指示する参照画像と第2動きベクトルが指示する参照画像とが互いに異なる場合にのみ、動き情報補正を行ってもよい。
別の例として、動きベクトル値が(0,0)ではない動きベクトルに対して、動き情報補正を行ってもよい。ここで、画面間予測インジケータが双方向であり、第1動きベクトルと第2動きベクトルがすべて(0,0)の値を持たない場合、動き情報補正を行ってもよい。また、画面間予測インジケータがN方向(Nは2以上の整数)である場合、N個の動きベクトルのうちのすべて又は所定の個数以上が(0,0)の値を持たない場合には、動き情報補正を行ってもよい。
動き情報補正は、画面間予測インジケータが特定の個数の方向である場合にのみ行われてもよい。一例として、スキップ/マージ候補の画面間予測インジケータが双方向である場合にのみ、動き情報補正を行うことができる。
動き情報補正は、第1動きベクトルが指示する参照画像の参照画像インデックスが0であり、第2動きベクトルが指示する参照画像の参照画像インデックスが0である場合にのみ行われてもよい。又は、動き情報補正は、それぞれの動きベクトルが指示する参照画像の参照画像インデックスが特定の値である場合にのみ行われてもよい。
動き情報補正は、空間スキップ/マージ候補、時間スキップ/マージ候補、組み合わせスキップ/マージ候補、及び所定の動き情報値を持つスキップ/マージ候補のうちの少なくとも一つにのみ行われてもよい。
動き情報補正は、符号化/復号化対象ブロックを副ブロック(サブブロック)単位に分割した後、分割された副ブロック単位で行われてもよい。
一方、符号化/復号化対象ブロックが副ブロック単位で動き情報或いは動きベクトルを持つ場合、符号化効率の向上のために分割された副ブロック単位で動き情報補正が行われてもよい。このとき、符号化/復号化対象ブロックの副ブロックは、互いに異なる動き情報或いは動きベクトルを持つことができ、すべて同一の動き情報或いは動きベクトルを持つことができる。ここで、符号化/復号化対象ブロックの副ブロックが、互いに異なる動き情報或いは動きベクトルを持つ場合にのみ、動き情報補正が行われてもよい。
また、符号化/復号化対象ブロックが副ブロック単位で動き情報或いは動きベクトルを持つ場合、計算複雑さの減少のために、副ブロック単位の動き情報或いは動きベクトル単位に対しては動き情報補正を行わなくてもよい。又は、計算複雑さの減少のために、符号化/復号化対象ブロックの副ブロックがすべて同一の動き情報又は動きベクトルを持つ場合にのみ、動き情報補正を行ってもよい。
一方、動き情報補正方法は、サンプル単位及びブロック単位のうちの少なくとも一つの単位で行われ得る。
符号化/復号化対象ブロックが3方向予測や4方向予測などのN方向予測である場合、それぞれ3つの動きベクトル、4つの動きベクトルなどのN個の動きベクトルを用いてテンプレートを計算して動き情報補正を行うことができる。このとき、Nは3以上の正の整数であり得る。
動き情報補正として双方テンプレートマッチングを利用する場合、既に誘導された動き情報をスケーリングして新たな動き情報を生成することができる。
一例として、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックで第1動き情報又は第1動きベクトルが1つだけ存在する場合、当該第1動き情報或いは第1動きベクトルに基づいてスケーリングを行って第2動き情報或いは第2動きベクトルを生成することにより、動き情報補正を行うことができる。
同様に、空間的に隣接する周辺ブロック或いは時間的に隣接する周辺ブロックで第2動き情報或いは第2動きベクトルが1つだけ存在する場合、当該第2動き情報或いは第2動きベクトルに基づいてスケーリングを行って第1動き情報或いは第1動きベクトルを生成することにより、動き情報補正を行うことができる。
他の例として、初期動きベクトルが指示する参照画像と、補正された動きベクトル候補が指示する参照画像とが互いに異なる場合、各参照画像の画像順序カウント値に基づいて初期動きベクトルをスケーリングして、補正された動きベクトル候補を算出することができる。ここで、補正された動きベクトル候補は、補正された動きベクトルを探索する領域を指示する動きベクトルを意味し、他の補正された動きベクトル候補と初期動きベクトルが指示する位置で歪み値を相互比較して双方テンプレートマッチングを行うことができる。
一方、1つの輝度成分動きベクトル及び2つの色差成分動きベクトルのうちの少なくとも一つに対して動き情報補正を利用して、補正された動きベクトルを算出することができる。
一方、動き情報補正を参照画像リスト内の全部或いは一部の参照画像に対して行った後、最小歪みを示す参照画像を補正された参照画像として誘導することができる。
上述した動き情報補正が行われる条件は、復号化器動きベクトル誘導モード(Decoder-side Motion Vector Derivation Mode)での動き情報補正にも適用できる。
図16は本発明の一実施形態による画像復号化方法を説明するためのフローチャートである。
図16を参照すると、復号化器は、空間的周辺ブロック動き情報、時間的周辺ブロックの動き情報、予め定義された動き情報、及び参照画像で最も多く存在する動き情報のうちの少なくとも一つから動き補正候補を誘導することができる(S1601)。
この場合、予め設定された順序に従って空間的周辺ブロックの動き情報、時間的周辺ブロックの動き情報、予め定義された動き情報、及び参照画像で最も多く存在する動き情報のうちの少なくとも一つから動き補正候補を誘導することができる。ここで、予め設定された順序は、空間的周辺ブロックの動き情報、時間的周辺ブロックの動き情報、及び予め定義された動き情報の順序であり得る。ここで、予め定義された動き情報はゼロベクトルを含むことができる。
一方、時間的周辺ブロックは、空間的周辺ブロックの参照画像インデックスに基づいて選択された参照画像に含まれ得る。
次いで、誘導された動き補正候補に動き情報補正を行うことができる(S1602)。
この場合、誘導された動き補正候補に含まれている動きベクトルに双方テンプレートマッチングを適用して動き情報補正を修正することができる。
ここで、双方テンプレートマッチングは、前記誘導された動き補正候補に含まれている動きベクトルを初期動きベクトルとして用いて双方テンプレートを生成するステップと、前記双方テンプレート内のサンプルと、前記初期動きベクトルが指示する参照画像内の復元されたサンプルとを比較して前記初期動きベクトルを補正するステップとを含むことができる。
ここで、初期動きベクトルを補正するステップは、再帰的に行われ得る。
また、初期動きベクトルは、誘導された動き補正候補のうちでゼロベクトルではない双方向予測動きベクトルであり得る。ここで、誘導された動き補正候補のうちでゼロベクトルではない双方向予測動きベクトルがない場合、初期動きベクトルはゼロベクトルに設定できる。
一方、初期動きベクトルを補正するステップは、双方テンプレートと最小の歪みを示す参照画像内の領域を指示する動きベクトルを探索するステップと、探索された動きベクトルを初期動きベクトルの補正値に設定するステップとを含むことができる。
ここで、動きベクトルを探索するステップは、参照画像内の限られた探索領域で探索できる。
この場合、限られた探索領域は、整数画素単位の予め定められた範囲に設定でき、動きベクトルを探索するステップは、整数画素単位の予め定められた範囲で副画素単位にて動きベクトルを探索することができる。
一方、双方テンプレートマッチングは、整数画素単位及び副画素単位で行われ得る。この場合、動きベクトルを探索するステップは、整数画素単位の予め定められた範囲で副画素単位にて動きベクトルを探索することができる。
一方、誘導された動き補正候補に動き情報補正を行うステップは、ブロックが一方向予測マージ候補、地域照明補償モード及びアフィン動き補償モードに該当しない場合に行われ得る。
次いで、動き情報補正が行われた動き補正候補を用いて、現在ブロックの予測ブロックを生成することができる(S1603)。
画像復号化方法は、S1601ステップの前に、動き補正モード使用情報を復号化するステップ、及び復号化された動き補正モード使用情報に基づいて動き補正モードを決定するステップをさらに含むことができる。決定結果に基づいて、現在ブロックが動き補正モードである場合にS1601ステップが初めて行われ得る。
ここで、動き補正モード使用情報を復号化するステップを行うか否かは、スキップフラグ又はマージフラグに基づいて決定できる。
一方、空間的周辺ブロックが複数である場合、動き補正候補を誘導するステップは、双方向予測動きベクトルを持っている空間的周辺ブロックから動き情報をまず誘導し、その後、一方向予測動きベクトルを持つ空間的周辺ブロックから動き情報を誘導することができる。
以上、本発明に係る画像復号化方法について説明した。上述した画像復号化方法の各ステップは、画像符号化方法にも同様に行われ得る。
これらの実施形態は、符号化器及び復号化器で同様の方法で行われ得る。
前記実施形態を適用する順序は、符号化器と復号化器で互いに異なってもよく、符号化器と復号化器で互いに同じであってもよい。
輝度及び色差信号それぞれに対して前記実施形態を行うことができ、輝度及び色差信号に対する前記実施形態を同様に行うことができる。
本発明の実施形態が適用されるブロックの形状は、正方形(square)或いは非正方形(non-square)の形状を有することができる。
本発明の前記実施形態は、符号化ブロック、予測ブロック、変換ブロック、ブロック、現在ブロック、符号化ユニット、予測ユニット、変換ユニット、ユニット及び現在ユニットのうちの少なくとも一つのサイズに応じて適用できる。ここでのサイズは、前記実施形態が適用されるために、最小サイズ及び/又は最大サイズに定義されてもよく、前記実施形態が適用される固定サイズに定義されてもよい。また、前記実施形態は、第1サイズでは第1実施形態が適用されてもよく、第2サイズでは第2実施形態が適用されてもよい。すなわち、前記実施形態は、サイズに応じて複合的に適用できる。また、本発明の前記実施形態は、最小サイズ以上及び最大サイズ以下の場合にのみ適用されてもよい。すなわち、前記実施形態は、ブロックサイズが一定の範囲内に含まれる場合にのみ適用されてもよい。
例えば、現在ブロックのサイズが8×8以上である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが4×4である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが16×16以下である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが16×16以上64×64以下である場合にのみ、前記実施形態が適用できる。
本発明の実施形態は、時間的階層(temporal layer)に応じて適用できる。前記実施形態が適用可能な時間的階層を識別するために、別途の識別子(identifier)がシグナリングされ、当該識別子によって特定された時間的階層に対して前記実施形態が適用できる。ここでの識別子は、前記実施形態が適用可能な最下位階層及び/又は最上位階層と定義されてもよく、前記実施形態が適用される特定の階層を指示するものと定義されてもよい。また、前記実施形態が適用される固定された時間的階層が定義されてもよい。
例えば、現在画像の時間的階層が最下位階層である場合にのみ、前記実施形態が適用できる。例えば、現在画像の時間的階層識別子が1以上である場合にのみ、前記実施形態が適用できる。例えば、現在画像の時間的階層が最上位階層である場合にのみ、前記実施形態が適用できる。
本発明の実施形態が適用されるスライスタイプ(slice type)が定義され、当該スライスタイプに応じて本発明の前記実施形態が適用できる。
動きベクトルが16画素(16-pel)単位、8画素(8-pel)単位、4画素(4-pel)単位、整数画素(integer-pel)単位、1/2画素(1/2-pel)単位、1/4画素(1/4-pel)単位、1/8画素(1/8-pel)単位、1/16画素(1/16-pel)単位、1/32画素(1/32-pel)単位、及び1/64画素(1/64-pel)単位のうちの少なくとも一つを持つときも、本発明の前記実施形態が適用できる。また、動きベクトルは画素単位別に選択的に使用できる。
上述した実施形態において、これらの方法は、一連のステップ又はユニットであって、フローチャートに基づいて説明されているが、本発明は、これらのステップの順序に限定されるものではなく、あるステップは、上述したのとは異なるステップと異なる順序で又は同時に発生することができる。また、当該技術分野における通常の知識を有する者であれば、フローチャートに示されたステップが排他的ではなく、他のステップが含まれるか、フローチャートの一つ又はそれ以上のステップが本発明の範囲に影響することなく削除できることを理解することができるだろう。
上述した実施形態は、様々な態様の例示を含む。様々な態様を示すためのすべての可能な組み合わせを記述することはできないが、当該技術分野における通常の知識を有する者は、他の組み合わせが可能であることを認識することができるだろう。よって、本発明は、以下の特許請求の範囲内に属するすべての様々な交替、修正及び変更を含むといえる。
以上説明した本発明に係る実施形態は、様々なコンピュータ構成要素を介して実行できるプログラム命令の形で実現され、コンピュータ可読記録媒体に記録できる。前記コンピュータ可読記録媒体は、プログラム命令、データファイル、データ構造などを単独で又は組み合わせて含むことができる。前記コンピュータ可読記録媒体に記録されるプログラム命令は、本発明のために特別に設計及び構成されたもの、又はコンピュータソフトウェア分野の当業者に公知されて使用可能なものである。コンピュータ可読記録媒体の例には、ハードディスク、フロッピーディスク及び磁気テープなどの磁気媒体、CD-ROM、DVDなどの光記録媒体、フロプティカルディスク(floptical disk)などの磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリなどのプログラム命令を保存し実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリターなどを用いてコンピュータによって実行できる高級言語コードも含まれる。前記ハードウェア装置は、本発明に係る処理を行うために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
以上で、本発明が、具体的な構成要素などの特定の事項、限定された実施形態及び図面によって説明されたが、これは本発明のより全般的な理解を助けるために提供されたものに過ぎず、本発明は前記実施形態に限定されるものではない。本発明の属する技術分野における通常の知識を有する者であれば、このような記載から多様な修正及び変形を図ることができる。
よって、本発明の思想は、上述した実施形態に限定されて定められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等に又は等価的に変形したすべてのものは本発明の思想の範疇に属するというべきである。