本発明は、様々な変更を加えることができ、様々な実施形態を有することができるので、特定の実施形態を図面に例示し、詳細な説明に詳細に説明する。ただし、これは本発明を特定の実施形態について限定するものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物ないし代替物を含むものと理解されるべきである。図面において類似する参照符号は、様々な側面にわたって同一又は類似の機能を指し示す。図面における要素の形状及び大きさなどは、より明確な説明のために誇張することがある。後述する例示的実施形態についての詳細な説明は、特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が実施形態を実施し得る程度に十分に詳細に説明される。様々な実施形態は、互いに異なるが、相互に排他的である必要はないことが理解されるべきである。例えば、ここに記載されている特定の形状、構造及び特性は、一実施形態に関連して本発明の精神及び範囲を逸脱することなく、様々な実施形態に実現できる。また、それぞれの開示された実施形態内の個別構成要素の位置又は配置は実施形態の精神及び範囲を逸脱することなく変更可能であることが理解されるべきである。したがって、後述する詳細な説明は、限定的な意味として取るものではなく、例示的な実施形態の範囲は、適切に説明されるならば、それらの請求項が主張するのと均等なすべての範囲及び添付の請求項によってのみ限定される。
本発明において、用語「第1」、「第2」などは多様な構成要素の説明に使用できるが、これらの構成要素は上記の用語により限定されてはならない。これらの用語は、一つの構成要素を他の構成要素から区別する目的にのみ使われる。例えば、本発明の権利範囲を外れない限り、第1構成要素は第2構成要素と命名することができ、同様に、第2構成要素も第1構成要素と命名することができる。用語「及び/又は」は、複数の関連した記載項目の組み合わせ又は複数の関連した記載項目のいずれかを含む。
本発明のある構成要素が他の構成要素に「連結されて」いる或いは「接続されて」いるとした場合には、その他の構成要素に直接連結されている或いは接続されていることもあるが、それらの間に別の構成要素が介在することもあると理解されるべきである。これに対し、ある構成要素が他の構成要素に「直接連結されて」いる或いは「直接接続されて」いるとした場合には、それらの間に別の構成要素が介在しないと理解されるべきである。
本発明の実施形態に示す構成部は、互いに異なる特徴的な機能を示すために独立に図示されるもので、各構成部が分離されたハードウェア又は一つのソフトウェア構成単位からなることを意味しない。すなわち、各構成部は、説明の便宜上、それぞれの構成部に羅列して含むもので、各構成部のうちの少なくとも2つの構成部が合わせられて一つの構成部をなすか、或いは一つの各構成部が複数の構成部に分けられて機能を行うことができ、このような各構成部の統合された実施形態及び分離された実施形態も本発明の本質から外れない限り、本発明の権利範囲に含まれる。
本発明で使用した用語は、単に特定の実施形態を説明するために使われたものであり、本発明を限定するものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本発明において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はこれらの組み合わせが存在することを指定するものであり、一つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品又はこれらの組み合わせの存在又は付加可能性を予め排除しないと理解すべきである。つまり、本発明において、特定の構成を「含む」と記述する内容は、該当構成以外の構成を排除するものではなく、追加の構成が本発明の実施又は本発明の技術的思想の範囲に含まれ得ることを意味する。
本発明の一部の構成要素は、本発明において本質的な機能を行う不可欠の構成要素ではなく、単に性能を向上させるための選択的構成要素であり得る。本発明は、単に性能向上のために使用される構成要素を除く、本発明の本質の実現に必要不可欠な構成部のみを含んで実現でき、単に性能向上のために使用される選択的構成要素を除く必須構成要素のみを含む構造も本発明の権利範囲に含まれる。
以下、図面を参照して、本発明の実施形態について具体的に説明する。本明細書の実施形態を説明するにあたり、関連した公知の構成又は機能についての具体的な説明が本明細書の要旨を曖昧にするおそれがあると判断された場合、その詳細な説明は省略し、図面上の同一の構成要素については同一の参照符号を使用し、同一の構成要素についての重複説明は省略する。
また、以下において、画像は動画像(video)を構成する一つのピクチャを意味することもあり、動画像自体を示すこともある。例えば、「画像の符号化及び/又は復号」は、「ビデオの符号化及び/又は復号」を意味することができ、「ビデオを構成する画像のうちの一つの画像の符号化及び/又は復号」を意味することもできる。ここで、ピクチャは画像と同じ意味を持つことができる。
<用語説明>
符号化器(Encoder):符号化を行う装置を意味することができる。
復号器(Decoder):復号を行う装置を意味することができる。
パーシング(Parsing):エントロピー復号して構文要素(Syntax Element)の値を決定することを意味し、或いはエントロピー復号自体を意味することができる。
ブロック(Block):サンプル(Sample)のMxN配列であり、ここで、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)、変換ユニット(Transform Unit)、変換ブロック(Transform Block)などを意味することができる。また、ユニットは、ブロックと区分して指し示すために、輝度(Luma)成分ブロック、それに対応する色差(Chroma)成分ブロック、及び各ブロックに対する構文要素を含むことを意味することができる。ユニットは、様々なサイズと形状を持つことができ、特に、ユニットの形状は、長方形だけでなく、正方形、台形、三角形、五角形など、2次元的に表現できる幾何学的図形を含むことができる。また、ユニット情報には、符号化ユニット、予測ユニット、変換ユニットなどを指し示すユニットのタイプ、ユニットの大きさ、ユニットの深さ、ユニットの符号化及び復号順序などのうちの少なくとも一つを含むことができる。
再構築された近傍ユニット(Reconstructed Neighbor Unit):符号化/復号対象ユニットの周りに空間的(Spatial)/時間的(Temporal)に既に符号化或いは復号されて再構築されたユニットを意味することができる。このとき、再構築された近傍ユニットは、再構築された近傍ブロックを意味することができる。
近傍ブロック(Neighbor block):符号化/復号対象ブロックに隣接するブロックを意味することができる。符号化/復号対象ブロックに隣接するブロックは、符号化/復号対象ブロックに境界が接するブロックを意味することができる。近傍ブロックは符号化/復号対象ブロックの隣接頂点に位置するブロックを意味することができる。近傍ブロックは、再構築された近傍ブロックを意味することもできる。
ユニット深さ(Depth):ユニットが分割された程度を意味し、ツリー構造(Tree Structure)において、ルートノード(Root Node)は深さが最も浅く、リーフノード(Leaf Node)は深さが最も深いといえる。
シンボル(Symbol):符号化/復号対象ユニットの構文要素及び符号化パラメータ(coding parameter)、変換係数(Transform Coefficient)の値などを意味することができる。
パラメータセット(Parameter Set):ビットストリーム内の構造のうちのヘッダー情報に該当することができ、ビデオパラメータセット(video parameter set)、シーケンスパラメータセット(sequence parameter set)、ピクチャパラメータセット(picture parameter set)、適応パラメータセット(adaptation parameter set)のうちの少なくとも一つがパラメータセットに含まれ得る。また、パラメータセットにはスライス(slice)ヘッダー及びタイル(tile)ヘッダー情報を含む意味を持つことができる。
ビットストリーム(Bitstream):符号化された画像情報を含むビットの列を意味することができる。
予測ユニット(Prediction Unit):インター予測又はイントラ予測及びそれに対する補償を行うときの基本ユニットであり、一つの予測ユニットは、大きさが小さい複数のパーティション(Partition)に分割されることも可能である。この場合、複数のパーティションそれぞれを前記予測及び補償実行時の基本ユニットとし、予測ユニットが分割されたパーティションも予測ユニットとすることができる。予測ユニットはさまざまなサイズと形状を有することができ、特に予測ユニットの形状は、長方形だけでなく、正方形、台形、三角形、五角形など、2次元的に表現できる幾何学的図形を含むことができる。
予測ユニットパーティション(Prediction Unit Partition):予測ユニットが分割された形状を意味することができる。
参照画像リスト(Reference Picture List):インター予測或いは動き補償に使用される一つ以上の参照画像が含まれているリストを意味することができる。参照画像リストの種類は、LC(List Combined)、L0(List 0)、L1(List 1)、L2(List 2)、L3(List 3)などがあり得る。インター予測には、一つ以上の参照画像リストが使用できる。
インター予測インジケータ(Inter Prediction Indicator):インター予測時に符号化/復号対象ブロックのインター予測方向(一方向予測、双方向予測など)を意味することができ、符号化/復号対象ブロックが予測ブロックを生成するときに使用する参照画像の数を意味することができ、符号化/復号対象ブロックがインター予測或いは動き補償を行うときに使用する予測ブロックの数を意味することができる。
参照画像インデックス(Reference Picture Index):参照画像リストから特定の参照画像に対するインデックスを意味することができる。ここで、インデックスは索引を意味することができる。
参照画像(Reference Picture):インター予測或いは動き補償のために特定のユニットが参照する画像を意味することができ、参照画像を参照ピクチャとも呼ぶことができる。
動きベクトル(Motion Vector):インター予測或いは動き補償に使用される2次元ベクトルであり、符号化/復号対象画像と参照画像との間のオフセットを意味することができる。例えば、(mvX、mvY)は動きベクトルを示すことができ、mvXは横(horizontal)成分、mvYは縦(vertical)成分を示すことができる。
動きベクトル候補(Motion Vector Candidate):動きベクトルを予測するときに予測候補となるユニット、或いはそのユニットの動きベクトルを意味することができる。
動きベクトル候補リスト(Motion Vector Candidate List):動きベクトル候補を用いて構成されたリストを意味することができる。
動きベクトル候補インデックス(Motion Vector Candidate Index):動きベクトル候補リスト内の動きベクトル候補を示すインジケータ、動きベクトル予測器(Motion Vector Predictor)のインデックス(index)とも呼ぶことができる。
動き情報(Motion Information):動きベクトル、参照画像インデックス、インター予測インジケータ(Inter Prediction Indicator)だけでなく、参照画像リスト情報、参照画像、動きベクトル候補、動きベクトル候補インデックスなどのうちの少なくとも一つを含む情報を意味することができる。
マージ候補リスト(Merge Candidate List):マージ候補を用いて構成されたリストを意味することができる。
マージ候補(Merge Candidate):空間マージ候補、時間マージ候補、組み合わせマージ候補、組み合わせ双予測マージ候補、ゼロマージ候補などを含むことができ、マージ候補は、予測タイプ情報(prediction type information)、各リストに対する参照画像インデックス(reference picture index)、動きベクトル(motion vector)などの動き情報を含むことができる。
マージインデックス(Merge Index):マージ候補リスト内のマージ候補を指し示す情報を意味することができる。また、マージインデックスは、空間的/時間的に現在ブロックと隣接するように再構築されたブロックのうち、マージ候補を導出したブロックを示すことができる。また、マージインデックスは、マージ候補が持つ動き情報のうちの少なくとも一つを示すことができる。
変換ユニット(Transform Unit):変換、逆変換、量子化、逆量子化、変換係数符号化/復号のように残余信号(residual signal)符号化/復号を行うときの基本ユニットを意味することができ、一つの変換ユニットは、分割されてサイズの小さい複数の変換ユニットに分割できる。変換ユニットは、さまざまなサイズと形状を持つことができ、特に、変換ユニットの形状は、長方形だけでなく、正方形、台形、三角形、五角形など、2次元的に表現できる幾何学的図形を含むことができる。
スケーリング(Scaling):変換係数レベルに因数を掛ける処理を意味することができ、結果として変換係数を生成することができる。スケーリングを逆量子化(dequantization)とも呼ぶことができる。
量子化パラメータ(Quantization Parameter):量子化及び逆量子化において変換係数レベル(transform coefficient level)をスケーリング(scaling)するときに使用する値を意味することができる。このとき、量子化パラメータは、量子化ステップサイズ(step size)にマッピングされた値であり得る。
デルタ量子化パラメータ(Delta Quantization Parameter):予測された量子化パラメータと符号化/復号対象ユニットの量子化パラメータとの差分値を意味することができる。
スキャン(Scan):ブロック或いは行列内係数の順序をソートする方法を意味することができ、例えば、2次元配列を1次元配列にソートすることをスキャンといい、1次元配列を2次元配列にソートすることもスキャン或いは逆スキャン(Inverse Scan)と呼ぶことができる。
変換係数(Transform Coefficient):変換を行ってから生成された係数値、本発明では変換係数に量子化を適用した量子化変換係数レベル(transform coefficient level)も変換係数の意味に含まれ得る。
ナンゼロ変換係数(Non−zero Transform Coefficient):変換係数値の大きさが0ではない変換係数、或いは値の大きさが0ではない変換係数レベルを意味することができる。
量子化行列(Quantization Matrix):画像の主観的画質或いは客観的画質を向上させるために量子化或いは逆量子化処理で利用する行列を意味することができる。量子化行列をスケーリングリスト(scaling list)とも呼ぶことができる。
量子化行列係数(Quantization Matrix Coefficient):量子化行列内の各要素(element)を意味することができる。量子化行列係数を行列係数(matrix coefficient)とも呼ぶことができる。
基本行列(Default Matrix):符号化器と復号器で予め定義されている所定の量子化行列を意味することができる。
非基本行列(Non−default Matrix):符号化器と復号器で予め定義されず、ユーザーによってシグナリングされる量子化行列を意味することができる。
符号化ツリーユニット(Coding Tree Unit):一つの輝度成分(Y)符号化ツリーブロックに関連する2つの色差成分(Cb、Cr)符号化ツリーブロックから構成できる。各符号化ツリーユニットは、符号化ユニット、予測ユニット、変換ユニットなどの下位ユニットを構成するために、4分木(quad tree)、2分木(binary tree)などの一つ以上の分割方式を用いて分割できる。入力画像の分割のように画像の復号/符号化処理で処理単位となるピクセルブロックを示すための用語として使用できる。
符号化ツリーブロック(Coding Tree Block):Y符号化ツリーブロック、Cb符号化ツリーブロック及びCr符号化ツリーブロックのいずれかを示すための用語として使用できる。
図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に保存できる。
動き補償部112は、動きベクトルを用いる動き補償を行うことにより、予測ブロックを生成することができる。ここで、動きベクトルは、インター予測に使用される2次元ベクトルであり得る。また、動きベクトルは、現在画像と参照画像との間のオフセット(offset)を示すことができる。ここで、インター予測はインター予測を意味することができる。
前記動き予測部111と動き補償部112は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタ(Interpolation Filter)を適用して予測ブロックを生成することができる。インター予測或いは動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き予測及び動き補償方法がスキップモード(Skip Mode)、マージモード(Merge mode)、AMVPモード(AMVP Mode )及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて、インター予測或いは動き補償を行うことができる。ここで、現在ピクチャ参照モードは、符号化対象ブロックの属した現在ピクチャ内の既に再構築された領域を用いた予測モードを意味することができる。前記既に再構築された領域を特定するために、現在ピクチャ参照モードのための動きベクトルが定義できる。符号化対象ブロックが現在ピクチャ参照モードで符号化されるか否かは、符号化対象ブロックの参照画像インデックスを用いて符号化できる。
減算器125は、入力ブロック及び予測ブロックの差分を用いて残余ブロック(residual block)を生成することができる。残余ブロックは残余信号とも称される。
変換部130は、残余ブロックに対して変換(transform)を行って変換係数(transform coefficient)を生成することができ、変換係数を出力することができる。ここで、変換係数は、残余ブロックに対する変換を行うことにより、生成された係数値であり得る。変換省略(transform skip)モードが適用される場合、変換部130は残余ブロックに対する変換を省略することもできる。
変換係数に量子化を適用することにより、量子化された変換係数レベル(transform coefficient level)が生成できる。以下、実施形態では、量子化された変換係数レベルも変換係数と称されることがある。
量子化部140は、変換係数を量子化パラメータに基づいて量子化することにより、量子化された変換係数レベル(transform coefficient level)を生成することができ、量子化された変換係数レベルを出力することができる。このとき、量子化部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値化方法又は確率モデルを用いて算術符号化を行うこともできる。
エントロピー符号化部150は、変換係数レベルを符号化するために、変換係数スキャニング(Transform Coefficient Scanning)方法を介して2次元のブロック形状係数を1次元のベクトルに変更することができる。例えば、アップライト(up right)スキャニングを用いてブロックの係数をスキャニングすることにより、1次元ベクトルに変更することができる。変換ユニットのサイズ及びイントラ予測モードに応じて、アップライトスキャンの代わりに、2次元のブロック形状係数を列方向にスキャニングする垂直スキャン、2次元のブロック形状係数を行方向にスキャニングする水平スキャンが使用されてもよい。つまり、変換ユニットのサイズ及びイントラ予測モードに応じてアップライトスキャン、垂直方向スキャン及び水平方向スキャンのうちのいずれのスキャン方法が使用されるかを決定することができる。
符号化パラメータ(Coding Parameter)は、構文要素のように符号化器で符号化されて復号器へシグナリングされる情報だけでなく、符号化或いは復号処理で導出される情報を含むことができ、画像を符号化又は復号するときに必要な情報を意味することができる。例えば、ブロックサイズ、ブロック深さ、ブロック分割情報、ユニットサイズ、ユニット深さ、ユニット分割情報、4分木分割フラグ、2分木分割フラグ、2分木分割方向、イントラ予測モード、イントラ予測方向、参照サンプルフィルタリング方法、予測ブロック境界フィルタリング方法、フィルタタップ、フィルタ係数、インター予測モード、動き情報、動きベクトル、参照画像インデックス、インター予測方向、インター予測インジケータ、参照画像リスト、動きベクトル予測、動きベクトル候補リスト、動きマージモード(motion merge mode)の使用有無、動きマージ候補、動きマージ候補リスト、スキップ(skip)モードの使用有無、補間フィルタの種類、動きベクトルのサイズ、動きベクトル表現の精度、変換種類、変換サイズ、追加(2次)変換の使用有無情報、残余信号の有無情報、符号化ブロックパターン(Coded Block Pattern)、符号化ブロックフラグ(Coded Block Flag)、量子化パラメータ、量子化行列、ループ内フィルタ情報、ループ内フィルタを適用するか否かについての情報、ループ内フィルタ係数、2値化/逆2値化方法、コンテキストモデル、コンテキストビン、バイパスビン、変換係数、変換係数レベル、変換係数レベルのスキャニング方法、画像ディスプレイ/出力順序、スライス識別情報、スライスタイプ、スライス分割情報、タイル識別情報、タイルタイプ、タイル分割情報、ピクチャタイプ、ビット深度、輝度信号或いは色差信号に対する情報のうち少なくとも一つの値又は組み合わせ形態が符号化パラメータに含まれ得る。
残余信号は、原信号と予測信号との差(difference)を意味することができる。又は、残余信号は、原信号と予測信号との差を変換(transform)することにより生成された信号であり得る。又は、残余信号は、原信号と予測信号との差を変換及び量子化することにより生成された信号であり得る。残余ブロックはブロック単位の残余信号であり得る。
符号化装置100がインター予測を用いた符号化を行う場合、符号化された現在画像は、後で処理される他の画像に対して参照画像として使用できる。よって、符号化装置100は、符号化された現在画像をさらに復号することができ、復号された画像を参照画像として保存することができる。復号のために、符号化された現在画像に対する逆量子化及び逆変換が処理できる。
量子化された係数は、逆量子化部160で逆量子化(dequantization)でき、逆変換部170で逆変換(inverse transform)できる。逆量子化及び逆変換された係数は、加算器175を介して予測ブロックと合わせられ得る。逆量子化及び逆変換された係数と予測ブロックとを合わせることにより、再構築ブロック(reconstructed block)が生成できる。
再構築ブロックはフィルタ部180を経ることができる。フィルタ部180は、デブロッキングフィルタ(deblocking filter)、サンプル適応的オフセット(Sample Adaptive Offset;SAO)、適応的ループフィルタ(Adaptive Loop Filter;ALF)のうちの少なくとも一つを再構築ブロック又は再構築画像に適用することができる。フィルタ部180はインループフィルタ(in−loop filter)とも称される。
デブロッキングフィルタは、ブロック間の境界に生じたブロック歪みを除去することができる。デブロッキングフィルタを行うか否かを判断するために、ブロックに含まれている幾つかの列又は行に含まれているピクセルに基づいて、現在ブロックにデブロッキングフィルタを適用するか否かを判断することができる。ブロックにデブロッキングフィルタを適用する場合、必要なデブロッキングフィルタリング強度に応じて強いフィルタ(Strong Filter)又は弱いフィルタ(Weak Filter)を適用することができる。また、デブロッキングフィルタを適用するにあたり、垂直フィルタリング及び水平フィルタリングの際に水平方向のフィルタリング及び垂直方向のフィルタリングが並行処理されるようにすることができる。
サンプル適応的オフセットは、符号化エラーを補償するために、ピクセル値に適正オフセット(offset)値を加えることができる。サンプル適応的オフセットは、デブロッキングを行った画像に対してピクセル単位で原本画像とのオフセットを補正することができる。特定のピクチャに対するオフセット補正を行うために、画像に含まれているピクセルを一定数の領域に区分した後、オフセットを行うべき領域を決定し、該当領域にオフセットを適用する方法、又は各ピクセルのエッジ情報を考慮してオフセットを適用する方法を使用することができる。
適応的ループフィルタは、再構築画像と原画像とを比較した値に基づいてフィルタリングを行うことができる。画像に含まれているピクセルを所定のグループに分けた後、当該グループに適用されるべき一つのフィルタを決定してグループごとに差別的にフィルタリングを行うことができる。適応的ループフィルタを適用するか否かに関連した情報は、輝度信号は符号化ユニット(Coding Unit、CU)ごとにシグナリングでき、それぞれのブロックに応じて、適用される適応的ループフィルタの形状及びフィルタ係数は異なり得る。また、適用対象ブロックの特性を問わず、同じ形態(固定された形態)の適応的ループフィルタが適用されることも可能である。
フィルタ部180を経た再構築ブロックは参照ピクチャバッファ190に保存できる。
図2は本発明が適用される復号装置の一実施形態に係る構成を示すブロック図である。
復号装置200はビデオ復号装置又は画像復号装置であり得る。
図2を参照すると、復号装置200は、エントロピー復号部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、加算器255、フィルタ部260、及び参照ピクチャバッファ270を含むことができる。
復号装置200は、符号化装置100から出力されたビットストリームを受信することができる。復号装置200は、ビットストリームに対してイントラモード又はインターモードで復号を行うことができる。また、復号装置200は、復号を介して再構築画像を生成することができ、再構築画像を出力することができる。
復号に使用される予測モードがイントラモードである場合、スイッチがイントラに切り替えられてよい。復号に使用される予測モードがインターモードである場合、スイッチがインターに切り替えられてよい。
復号装置200は、入力されたビットストリームから、再構築された残余ブロック(reconstructed residual block)を取得することができ、予測ブロックを生成することができる。再構築された残余ブロック及び予測ブロックが取得されると、復号装置200は、再構築された残余ブロックと予測ブロックを加えることにより、復号対象ブロックである再構築ブロックを生成することができる。復号対象ブロックは現在ブロックと称されることもある。
エントロピー復号部210は、ビットストリームに対する確率分布に基づくエントロピー復号を行うことにより、シンボルを生成することができる。生成されたシンボルは、量子化された変換係数レベル(transform coefficient level)形態のシンボルを含むことができる。ここで、エントロピー復号方法は、上述したエントロピー符号化方法と類似することができる。例えば、エントロピー復号方法は上述したエントロピー符号化方法の逆処理であり得る。
エントロピー復号部210は、変換係数レベルを復号するために、変換係数のスキャニング(Transform Coefficient Scanning)方法によって1次元のベクトル形態係数を2次元のブロック形態に変更することができる。例えば、アップライト(up right)スキャニングを用いてブロックの係数をスキャニングすることにより、2次元ブロック形態に変更させることができる。変換ユニットのサイズ及びイントラ予測モードに応じて、アップライトスキャンの代わりに垂直スキャン、水平スキャンが使用されてもよい。つまり、変換ユニットのサイズ及びイントラ予測モードに応じてアップライトスキャン、垂直方向スキャン及び水平方向スキャンのうちのいずれのスキャン方法が使用されるかを決定することができる。
量子化された変換係数レベルは、逆量子化部220で逆量子化でき、逆変換部230で逆変換できる。量子化された変換係数レベルが逆量子化及び逆変換された結果として、再構築された残余ブロックが生成できる。このとき、逆量子化部220は、量子化された変換係数レベルに量子化行列を適用することができる。
イントラモードが使用される場合、イントラ予測部240は、復号対象ブロック近傍の、既に復号されたブロックのピクセル値を用いる空間予測を行うことにより、予測ブロックを生成することができる。
インターモードが使用される場合、動き補償部250は、動きベクトル及び参照ピクチャバッファ270に保存されている参照画像を用いる動き補償を行うことにより、予測ブロックを生成することができる。前記動き補償部250は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタ(Interpolation Filter)を適用して予測ブロックを生成することができる。動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き補償方法がスキップモード(Skip Mode)、マージモード(Merge mode)、AMVPモード(AMVP Mode)、及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて動き補償を行うことができる。ここで、現在ピクチャ参照モードは、復号対象ブロックの属する現在ピクチャ内の既に再構築された領域を用いた予測モードを意味することができる。前記既に再構築された領域を特定するために、現在ピクチャ参照モードのための動きベクトルが利用できる。復号対象ブロックが現在ピクチャ参照モードで符号化されたブロックであるか否かを示すフラグ或いはインデックスが、シグナリング(signaling)されることもでき、復号対象ブロックの参照画像インデックスを用いて類推されることもできる。現在ピクチャ参照モードのための現在ピクチャは、復号対象ブロックのための参照画像リスト内で固定された位置(例えば、参照画像インデックスが0である位置又は最後の位置)に存在することができる。又は、参照画像リスト内に可変的に位置してもよく、このために、現在ピクチャの位置を示す別途の参照画像インデックスがシグナリングされてもよい。ここで、フラグ或いはインデックスをシグナリングするというのは、符号化器(encoder)では、当該フラグ或いはインデックスをエントロピー符号化(Entropy Encoding)してビットストリーム(Bitstream)に含むことを意味することができ、復号器(decoder)では、ビットストリームから当該フラグ或いはインデックスをエントロピー復号(Entropy Decoding)することを意味することができる。
再構築された残予ブロック及び予測ブロックは加算器255を介して加わり得る。再構築された残予ブロック及び予測ブロックが加わることにより生成されたブロックはフィルタ部260を経ることができる。フィルタ部260は、デブロッキングフィルタ、サンプル適応的オフセット及び適応的ループフィルタのうちの少なくとも一つを再構築ブロック又は再構築画像に適用することができる。フィルタ部260は再構築画像を出力することができる。再構築画像は参照ピクチャバッファ270に保存されてインター予測に使用できる。
図3は画像を符号化及び復号するときの画像の分割構造を示す概略図である。図3は一つのユニットが複数の下位ユニットに分割される実施形態を概略的に示す。
画像を効率よく分割するために、符号化及び復号において、符号化ユニット(Coding Unit;CU)が使用できる。ここで、符号化ユニットは、コーディングユニットを意味することができる。ユニットは、1)構文要素(syntax element)及び2)画像サンプルを含むブロックを合わせて指し示す用語であり得る。例えば、「ユニットの分割」は、「ユニットに該当するブロックの分割」を意味することができる。ブロック分割情報には、ユニットの深さ(depth)に関する情報が含まれ得る。深さ情報は、ユニットが分割される回数及び/又は程度を示すことができる。
図3を参照すると、画像300は、最大符号化ユニット(Largest Coding Unit;LCU)単位で順次分割され、LCU単位で分割構造が決定される。ここで、LCUは、符号化ツリーユニット(Coding Tree Unit;CTU)と同一の意味で使用できる。一つのユニットは、ツリー構造(tree structure)に基づいて深さ情報(depth)をもって階層的に分割できる。それぞれの分割された下位ユニットは深さ情報を持つことができる。前記深さ情報は、ユニットが分割された回数及び/又は程度を示すので、前記下位ユニットの大きさに関する情報を含むこともできる。
分割構造は、LCU310内での符号化ユニット(Coding Unit;CU)の分布を意味することができる。CUは画像を効率よく符号化/復号するためのユニットであり得る。このような分布は、単一のCUを複数(2、4、8、16などを含む2以上の正の整数)のCUに分割するか否かによって決定することができる。分割により生成されたCUの横幅と縦幅は、それぞれ分割前のCUの横幅の半分及び縦幅の半分であるか、分割された個数に応じて分割前のCUの横幅よりも小さいサイズ及び縦幅よりも小さいサイズを持つことができる。分割されたCUは、同様の方式で横幅及び縦幅が減少した複数のCUに再帰的に分割できる。
このとき、CUの分割は所定の深さまで再帰的に行われ得る。深さ情報は、CUのサイズを示す情報であり、CUごとに保存できる。例えば、LCUの深さは0であり、最小符号化ユニット(Smallest Coding Unit;SCU)の深さは予め定義された最大深さであり得る。ここで、LCUは、上述したように、最大の符号化ユニットのサイズを持つ符号化ユニットであり、SCUは、最小の符号化ユニットのサイズを持つ符号化ユニットであり得る。
LCU310から分割が始まり、分割によりCUの横幅及び縦幅が減少するたびに、CUの深さは1ずつ増加する。それぞれの深さ別に、分割されないCUは2Nx2Nのサイズを持つことができる。分割されるCUの場合は、2N×2NサイズのCUがNxNサイズの複数のCUに分割できる。Nのサイズは、深さが1ずつ増加するたびに半分に減少する。
例えば、一つの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットの横幅及び縦幅は、分割される前の符号化ユニットの横幅及び縦幅と比較してそれぞれの半分のサイズを持つことができる。一例として、32x32サイズの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットはそれぞれ16x16のサイズを持つことができる。一つの符号化ユニットが4つの符号化ユニットに分割される場合、符号化ユニットは4分木(quad−tree)状に分割されたといえる。
例えば、一つの符号化ユニットが2つの符号化ユニットに分割される場合、分割された2つの符号化ユニットの横幅或いは縦幅は、分割される前の符号化ユニットの横幅或いは縦幅と比較して半分のサイズを持つことができる。一例として、32x32サイズの符号化ユニットが2つの符号化ユニットに縦分割される場合、分割された2つの符号化ユニットは、それぞれ16x32のサイズを持つことができる。一例として、32x32サイズの符号化ユニットが2つの符号化ユニットに横分割される場合、分割された2つの符号化ユニットは、それぞれ32x16のサイズを持つことができる。一つの符号化ユニットが2つの符号化ユニットに分割される場合、符号化ユニットは2分木(binary−tree)状に分割されたといえる。
図3を参照すると、深さが0であるLCUは64x64画素であり得る。0は最小深さであり得る。深さが3であるSCUは8x8画素であり得る。3は最大深さであり得る。このとき、LCUである64x64画素のCUは深さ0で表現できる。32x32画素のCUは深さ1で表現できる。16x16画素のCUは深さ2で表現できる。SCUである8x8画素のCUは深さ3で表現できる。
また、CUが分割されるか否かについての情報は、CUの分割情報を用いて表現できる。分割情報は1ビットの情報であり得る。SCUを除くすべてのCUは分割情報を含むことができる。例えば、分割情報の値が0であれば、CUが分割されなくてもよく、分割情報の値が1であれば、CUが分割されてもよい。
図4は符号化ユニットCUが含むことが可能な予測ユニットPUの形態を示す図である。
LCUから分割されたCUのうち、それ以上分割されないCUは、一つ以上の予測ユニット(Prediction Unit;PU)に分けられ得る。このような処理も分割と称されることがある。
PUは予測に対する基本単位であり得る。PUはスキップ(skip)モード、インターモード及びイントラモードのいずれかで符号化及び復号できる。PUはモードに応じて様々な形で分割できる。
また、符号化ユニットは予測ユニットに分割されず、符号化ユニットと予測ユニットは同じサイズを持つことができる。
図4に示すように、スキップモードでは、CU内に分割が存在しないことがある。スキップモードでは、分割なしでCUと同じサイズの2Nx2Nモード410がサポートできる。
インターモードでは、CU内で8つに分割された形態がサポートできる。例えば、インターモードでは、2Nx2Nモード410、2NxNモード415、Nx2Nモード420、NxNモード425、2NxnUモード430、2NxnDモード435、nLx2Nモード440及びnRx2Nモード445がサポートできる。イントラモードでは、2Nx2Nモード410及びNxNモード425がサポートできる。
一つの符号化ユニットは一つ以上の予測ユニットに分割でき、一つの予測ユニットも一つ以上の予測ユニットに分割できる。
例えば、一つの予測ユニットが4つの予測ユニットに分割される場合、分割された4つの予測ユニットの横幅及び縦幅は、分割される前の予測ユニットの横幅及び縦幅と比較してそれぞれの半分のサイズを持つことができる。一例として、32x32サイズの予測ユニットが4つの予測ユニットに分割される場合、分割された4つの予測ユニットはそれぞれ16x16のサイズを持つことができる。一つの予測ユニットが4つの予測ユニットに分割される場合、予測ユニットは4分木(quad−tree)状に分割されたといえる。
例えば、一つの予測ユニットが2つの予測ユニットに分割される場合、分割された2つの予測ユニットの横幅或いは縦幅は、分割される前の予測ユニットの横幅或いは縦幅と比較して半分のサイズを持つことができる。一例として、32x32サイズの予測ユニットが2つの予測ユニットに縦分割される場合、分割された2つの予測ユニットはそれぞれ16x32のサイズを持つことができる。一例として、32x32サイズの予測ユニットが2つの予測ユニットに横分割される場合、分割された2つの予測ユニットはそれぞれ32x16のサイズを持つことができる。一つの予測ユニットが2つの予測ユニットに分割される場合、予測ユニットは2分木(binary−tree)状に分割されたといえる。
図5は符号化ユニットCUが含むことが可能な変換ユニットTUの形態を示す図である。
変換ユニット(Transform Unit;TU)は、CU内で変換、量子化、逆変換及び逆量子化の処理のために使用される基本単位であり得る。TUは、正方形や長方形などの形状を持つことができる。TUはCUのサイズ及び/又は形状に依存的に(dependent)決定されることもある。
LCUから分割されたCUのうち、それ以上CUに分割されないCUは、一つ以上のTUに分割できる。このとき、TUの分割構造は4分木(quad−tree)構造であり得る。例えば、図5に示すように、一つのCU510が4分木構造によって1回或いはそれ以上分割できる。一つのCUが1回以上に分割される場合、再帰的に分割されるといえる。分割を介して、一つのCU510は様々なサイズのTUから構成できる。又は、CUを分割する垂直線(vertical line)及び/又は水平線(horizontal line)の個数に基づいて一つ以上のTUに分割されることも可能である。CUは対称型のTUに分割されてもよく、非対称型のTUに分割されてもよい。非対称型のTUへの分割のために、TUのサイズ/形状に関する情報が、シグナリングされてもよく、CUのサイズ/形状に関する情報から導出されてもよい。
また、符号化ユニットは変換ユニットに分割されず、符号化ユニットと変換ユニットは同じサイズを持つことができる。
一つの符号化ユニットは一つ以上の変換ユニットに分割でき、一つの変換ユニットも一つ以上の変換ユニットに分割できる。
例えば、一つの変換ユニットが4つの変換ユニットに分割される場合、分割された4つの変換ユニットの横幅及び縦幅は、分割される前の変換ユニットの横幅及び縦幅と比較してそれぞれの半分のサイズを持つことができる。一例として、32x32サイズの変換ユニットが4つの変換ユニットに分割される場合、分割された4つの変換ユニットはそれぞれ16x16のサイズを持つことができる。一つの変換ユニットが4つの変換ユニットに分割される場合、変換ユニットは4分木(quad−tree)状に分割されたといえる。
例えば、一つの変換ユニットが2つの変換ユニットに分割される場合、分割された2つの変換ユニットの横幅或いは縦幅は、分割される前の変換ユニットの横幅或いは縦幅と比較して半分のサイズを持つことができる。一例として、32x32サイズの変換ユニットが2つの変換ユニットで縦分割される場合、分割された2つの変換ユニットはそれぞれ16x32のサイズを持つことができる。一例として、32x32サイズの変換ユニットが2つの変換ユニットに横分割される場合、分割された2つの変換ユニットはそれぞれ32x16のサイズを持つことができる。一つの変換ユニットが2つの変換ユニットに分割される場合、変換ユニットは2分木(binary−tree)状に分割されたといえる。
変換実行の際に残余ブロックを、予め定義された複数の変換方法のうちの少なくとも一つを用いて変換させることができる。一例として、予め定義された複数の変換方法として、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)又はKLTなどが用いられ得る。残余ブロックを変換するためにいずれの変換方法が適用されるかは、予測ユニットのインター予測モード情報、イントラ予測モード情報、変換ブロックのサイズ/形状のうちの少なくとも一つを用いて決定されてもよく、一定の場合、変換方法を指し示す情報がシグナリングされてもよい。
図6はイントラ予測処理の実施形態を説明するための図である。
イントラ予測モードは非方向性モード又は方向性モードであり得る。非方向性モードは、DCモード又はPlanarモードであり、方向性モードは、特定の方向又は角度を持つ予測モードであって、個数は一つ以上のM個であり得る。前記方向性モードはモード番号、モード値、モード数及びモード角度のうちの少なくとも一つで表現できる。
イントラ予測モードの個数は、前記非方向性及び方向性モードを含む一つ以上のN個であり得る。
イントラ予測モードの個数は、ブロックのサイズによって異なり得る。例えば、ブロックのサイズが4x4又は8x8である場合には67個、16x16である場合には35個、32x32である場合には19個、64x64である場合には7個であり得る。
イントラ予測モードの個数は、ブロックのサイズを問わずにN個に固定できる。例えば、ブロックのサイズを問わず、35個又は67個のうちの少なくとも一つに固定できる。
イントラ予測モードの個数は、色成分(color component)のタイプによって異なり得る。例えば、色成分が輝度(luma)信号であるか色差(chroma)信号であるかによって、予測モードの個数が異なり得る。
イントラ符号化及び/又は復号は、近傍の再構築されたブロックに含まれるサンプル値又は符号化パラメータを用いて行われ得る。
現在ブロックをイントラ予測で符号化/復号するために、近傍の再構築されたブロックに含まれるサンプルが符号化/復号対象ブロックの参照サンプルとして利用可能であるか否かをチェックするステップが行われ得る。符号化/復号対象ブロックの参照サンプルとして利用できないサンプルが存在する場合、近傍の再構築されたブロックに含まれているサンプルのうちの少なくとも一つを用いて、参照サンプルとして利用することができないサンプルにサンプル値をコピー及び/又は補間(interpolation)して符号化/復号対象ブロックの参照サンプルとして用いることができる。
イントラ予測の際にイントラ予測モード及び符号化/復号対象ブロックのサイズの少なくとも一つに基づいて、参照サンプル又は予測サンプルの少なくとも一つにフィルタを適用することができる。このとき、符号化/復号対象ブロックは現在ブロックを意味することができ、符号化ブロック、予測ブロック及び変換ブロックのうちの少なくとも一つを意味することができる。参照サンプル又は予測サンプルに適用されるフィルタの種類は、現在ブロックのイントラ予測モード又はサイズ/形状のうちの少なくとも一つによって異なり得る。前記フィルタの種類はフィルタタップ数、フィルタ係数値又はフィルタ強度の少なくとも一つによって異なり得る。
イントラ予測モードのうち、非方向性プラナー(Planar)モードは、対象符号化/復号ブロックの予測ブロックを生成するとき、予測ブロック内のサンプル値をサンプル位置に応じて現在サンプルの上側参照サンプル、現在サンプルの左側参照サンプル、現在ブロックの右上側参照サンプル、現在ブロックの左下側参照サンプルの加重和として生成することができる。
イントラ予測モードのうち、非方向性DCモードは、対象符号化/復号ブロックの予測ブロックを生成するとき、現在ブロックの上側参照サンプルと現在ブロックの左側参照サンプルとの平均値として生成することができる。また、符号化/復号ブロック内の参照サンプルに隣接する一つ又はそれ以上の上行、及び一つ又はそれ以上の左列に対しては参照サンプル値を用いてフィルタリングを行うこともできる。
イントラ予測モードのうち、複数の方向性モード(angular mode)の場合、右上側及び/又は左下側参照サンプルを用いて予測ブロックを生成することができ、方向性モードは、互いに異なる方向性を持つことができる。予測サンプル値を生成するために、実数単位の補間(interpolation)を行うこともできる。
イントラ予測方法を行うために、現在予測ブロックのイントラ予測モードは、現在予測ブロックの近傍に存在する予測ブロックのイントラ予測モードから予測することができる。近傍のイントラ予測モードから予測されたモード情報を用いて現在予測ブロックのイントラ予測モードを予測する場合、現在予測ブロックと近傍予測ブロックとのイントラ予測モードが同一であれば、所定のフラグ情報を用いて現在予測ブロックと近傍予測ブロックとのイントラ予測モードが同一であるという情報をシグナリングすることができ、もし現在予測ブロックと近傍予測ブロックとのイントラ予測モードが互いに異なる場合、エントロピー符号化を行って符号化/復号対象ブロックのイントラ予測モード情報を符号化することができる。
図7はインター予測処理の実施形態を説明するための図である。
図7における四角形は画像(又はピクチャ)を示すことができる。また、図7の矢印は予測方向を示すことができる。すなわち、画像は予測方向に応じて符号化及び/又は復号できる。各画像は、符号化タイプによってIピクチャ(Intra Picture)、Pピクチャ(Uni−predictive Picture)、Bピクチャ(Bi−predictive Picture)などに分類できる。各ピクチャは、各ピクチャの符号化タイプに応じて符号化され、復号され得る。
符号化の対象である画像がIピクチャである場合、画像はインター予測なしで画像自体に対してイントラ符号化できる。符号化の対象である画像がPピクチャである場合、画像は、順方向にのみ参照画像を用いるインター予測或いは動き補償を介して符号化できる。符号化の対象である画像がBピクチャである場合、順方向及び逆方向の両側に参照ピクチャを用いるインター予測或いは動き補償を介して符号化でき、順方向及び逆方向のうちのいずれかの方向に参照ピクチャを用いるインター予測或いは動き補償を介して符号化できる。ここで、インター予測モードが使用される場合、符号化器ではインター予測或いは動き補償を行うことができ、復号器ではそれに対応する動き補償を行うことができる。参照画像を用いて符号化及び/又は復号されるPピクチャ及びBピクチャの画像は、インター予測が使用される画像と看做すことができる。
次に、実施形態に係るインター予測について具体的に説明する。
インター予測或いは動き補償は、参照ピクチャ及び動き情報を用いて行われ得る。また、インター予測は、上述したスキップモードを用いることも可能である。
参照ピクチャ(reference picture)は、現在ピクチャよりも前のピクチャ又は現在ピクチャよりも後のピクチャのうちの少なくとも一つであり得る。このとき、インター予測は、参照ピクチャに基づいて、現在ピクチャのブロックに対する予測を行うことができる。ここで、参照ピクチャはブロックの予測に用いられる画像を意味することができる。このとき、参照ピクチャ内の領域は、参照ピクチャを指し示す参照画像インデックス(reference picture index;refIdx)及び後述する動きベクトル(motion vector)などを用いることにより特定できる。
インター予測は、参照ピクチャ、及び参照ピクチャ内で現在ブロックに対応する参照ブロックを選択することができ、選択された参照ブロックを用いて現在ブロックに対する予測ブロックを生成することができる。現在ブロックは、現在ピクチャのブロックのうち、現在符号化又は復号の対象となるブロックであり得る。
動き情報は、符号化装置100及び復号装置200のそれぞれによってインター予測の処理から導出できる。また、導出された動き情報は、インター予測を行うために使用できる。このとき、符号化装置100及び復号装置200は、再構築された近傍ブロック(reconstructed neighboring block)の動き情報及び/又はコロケーテッドブロック(collocated block;col block)の動き情報を用いることにより、符号化及び/又は復号効率を向上させることができる。コロケーテッドブロックは、既に再構築されたコロケーテッドピクチャ(collocated picture; col picture)内で符号化/復号対象ブロックの空間的位置に対応するブロックであり得る。再構築された近傍ブロックは、現在ピクチャ内のブロックであるとともに、既に符号化及び/又は復号を介して再構築されたブロックであり得る。また、再構築ブロックは、符号化/復号対象ブロックに隣接する隣接ブロック及び/又は符号化/復号対象ブロックの外側コーナーに位置するブロックであり得る。ここで、符号化/復号対象ブロックの外側コーナーに位置するブロックとは、符号化/復号対象ブロックに横方向に隣接する隣接ブロックに縦方向に隣接するブロック、又は符号化/復号対象ブロックに縦方向に隣接する隣接ブロックに横方向に隣接するブロックであり得る。
符号化装置100及び復号装置200のそれぞれは、コロケーテッドピクチャ内で空間的に符号化/復号対象ブロックに対応する位置に存在するブロックを決定することができ、決定されたブロックを基準に所定の相対的な位置を決定することができる。所定の相対的な位置は、空間的に符号化/復号対象ブロックに対応する位置に存在するブロックの内部及び/又は外部の位置であり得る。また、符号化装置100及び復号装置200のそれぞれは、決定された所定の相対的な位置に基づいてコロケーテッドブロックを導出することができる。ここで、コロケーテッドピクチャは、参照ピクチャリストに含まれている少なくとも一つの参照ピクチャのうちのいずれかであり得る。
動き情報の導出方式は、符号化/復号対象ブロックの予測モードに応じて変わり得る。例えば、インター予測のために適用される予測モードとして、高度動きベクトル予測(Advanced Motion Vector Prediction;AMVP)及びマージモード(merge mode)などがあり得る。ここで、マージモードを動き併合モード(motion merge mode)と呼ぶことができる。
例えば、予測モードとしてAMVPが適用される場合、符号化装置100及び復号装置200のそれぞれは、再構築された近傍ブロックの動きベクトル及び/又はコロケーテッドブロックの動きベクトルを用いて動きベクトル候補リスト(motion vector candidate list)を生成することができる。再構築された近傍ブロックの動きベクトル及び/又はコロケーテッドブロックの動きベクトルは、動きベクトル候補として使用できる。ここで、コロケーテッドブロックの動きベクトルを時間動きベクトル候補(temporal motion vector candidate)と呼ぶことができ、再構築された近傍ブロックの動きベクトルを空間動きベクトル候補(spatial motion vector candidate)と呼ぶことができる。
符号化装置100によって生成されたビットストリームは、動きベクトル候補インデックス(motion vector candidate index)を含むことができる。すなわち、符号化装置100は、動きベクトル候補インデックスをエントロピー符号化してビットストリームを生成することができる。動きベクトル候補インデックスは、動きベクトル候補リストに含まれている動きベクトル候補の中から選択された最適の動きベクトル候補を指し示すことができる。動きベクトル候補インデックスは、ビットストリームを介して符号化装置100から復号装置200へシグナリングできる。
復号装置200は、動きベクトル候補インデックスをビットストリームからエントロピー復号し、エントロピー復号された動きベクトル候補インデックスを用いて、動きベクトル候補リストに含まれている動きベクトル候補の中から復号対象ブロックの動きベクトル候補を選択することができる。
符号化装置100は、符号化対象ブロックの動きベクトルと動きベクトル候補との動きベクトル差分(MVD:Motion Vector Difference)を計算することができ、MVDをエントロピー符号化することができる。ビットストリームは、エントロピー符号化されたMVDを含むことができる。MVDはビットストリームを介して符号化装置100から復号装置200へシグナリングできる。このとき、復号装置200は、受信されたMVDをビットストリームからエントロピー復号することができる。復号装置200は、復号されたMVDと動きベクトル候補との和によって復号対象ブロックの動きベクトルを導出することができる。
ビットストリームは、参照ピクチャを指し示す参照画像インデックスなどを含むことができる。参照画像インデックスは、エントロピー符号化されてビットストリームを介して符号化装置100から復号装置200へシグナリングできる。復号装置200は、近傍ブロックの動き情報を用いて復号対象ブロックの動きベクトルを予測することができ、予測された動きベクトル及び動きベクトル差分を用いて復号対象ブロックの動きベクトルを導出することができる。復号装置200は、導出された動きベクトルと参照画像インデックス情報に基づいて復号対象ブロックに対する予測ブロックを生成することができる。
動き情報の導出方式の他の例として、マージモード(merge mode)がある。マージモードとは、複数のブロックに対する動きの併合を意味することができる。マージモードは、一つのブロックの動き情報を他のブロックにも一緒に適用させることを意味することができる。マージモードが適用される場合、符号化装置100及び復号装置200のそれぞれは、再構築された近傍ブロックの動き情報及び/又はコロケーテッド(collocated)ブロックの動き情報を用いてマージ候補リスト(merge candidate list)を生成することができる。動き情報は、1)動きベクトル、2)参照画像インデックス、及び3)インター予測インジケータのうちの少なくとも一つを含むことができる。予測インジケータは、一方向(L0予測、L1予測)又は双方向であり得る。
この時、マージモードはCU単位又はPU単位で適用できる。CU単位又はPU単位でマージモードが行われる場合、符号化装置100は、予め定義された情報をエントロピー符号化してビットストリームを生成した後、復号装置200へシグナリングすることができる。ビットストリームは予め定義された情報を含むことができる。予め定義された情報は、1)ブロックパーティション(partition)ごとにマージモードを行うか否かを示す情報であるマージフラグ(merge flag)、2)符号化対象ブロックに隣接する近傍ブロックのうちのいずれのブロックとマージするかについての情報であるマージインデックス(merge index)を含むことができる。例えば、符号化対象ブロックの近傍ブロックは、符号化対象ブロックの左側隣接ブロック、符号化対象ブロックの上側隣接ブロック及び符号化対象ブロックの時間的(temporal)隣接ブロックを含むことができる。
マージ候補リストは、動き情報が保存されたリストを示すことができる。また、マージ候補リストは、マージモードが行われる前に生成できる。マージ候補リストに保存される動き情報は、符号化/復号対象ブロックに隣接する近傍ブロックの動き情報、及び参照画像における符号化/復号対象ブロックに対応する(collocated)ブロックの動き情報、既にマージ候補リストに存在する動き情報の組み合わせによって生成された新たな動き情報、及びゼロマージ候補のうちの少なくとも一つであり得る。ここで、符号化/復号対象ブロックに隣接する近傍ブロックの動き情報は、空間マージ候補(spatial merge candidate)及び参照画像における符号化/復号対象ブロックに対応する(collocated)ブロックの動き情報は、時間マージ候補(temporal merge candidate)と呼ぶことができる。
スキップモードは、近傍ブロックの動き情報をそのまま符号化/復号対象ブロックに適用するモードであり得る。スキップモードは、インター予測に用いられるモードのいずれかであり得る。スキップモードが使用される場合、符号化装置100は、どのブロックの動き情報を符号化対象ブロックの動き情報として用いるかについての情報をエントロピー符号化してビットストリームを介して復号装置200へシグナリングすることができる。符号化装置100は、他の情報は復号装置200へシグナリングしなくてもよい。例えば、他の情報は構文要素(syntax element)情報であり得る。構文要素情報は、動きベクトル差分情報、符号化ブロックフラグ及び変換係数レベルのうちの少なくとも一つを含むことができる。
イントラ又はインター予測以降に生成された残余信号は、量子化処理の一環として、変換処理を介して周波数ドメインに変換することができる。この時、実行する1次変換はDCT type 2(DCT−II)の他にさまざまなDCT、DSTカーネルを使用することができ、これらの変換カーネルは、残余信号に対して水平及び/又は垂直方向に1次元変換(1D transform)をそれぞれ実行する可分変換(separable transform)によって変換が行われてもよく、又は2次元非可分変換(2D Non−separable transform)によって変換が行われてもよい。
一例として、変換に使用されるDCT、DST typeは、下記表のとおり、DCT−IIの他にDCT−V、DCT−VIII、DST−I、DST−VIIを1D変換の際に適応的に使用することができ、例えば、表1及び表2の例のとおり、変換セット(Transform set)を構成して、変換に使用されたDCT又はDSTタイプを導出することができる。
例えば、図8に示すように、イントラ予測モードに応じて、水平又は垂直方向に対して互いに異なる変換セット(Transform set)を定義した後、符号化器/復号器において、現在符号化/復号対象ブロックのイントラ予測モード及びこれに対応する変換セットに含まれている変換を用いて変換及び/又は逆変換を行うことができる。この場合、変換セットは、エントロピー符号化/復号されるのではなく、符号化器/復号器で同一のルールに基づいて定義できる。この場合、当該変換セットに属する変換のうちのいずれの変換が使用されたかを指し示すエントロピー符号化/復号が行われ得る。例えば、ブロックのサイズが64x64以下である場合、イントラ予測モードに応じて、表2の例のように合計3つの変換セットを構成し、水平方向の変換と垂直方向の変換としてそれぞれ3つの変換を用いて合計9つの多重変換方法を組み合わせて行った後、最適の変換方法で残余信号を符号化/復号することにより符号化効率を向上させることができる。このとき、一つの変換セットに属する3つの変換のうちどんな変換が使用されたかについての情報をエントロピー符号化/復号するために、切り捨てられた単項(Truncated Unary)2値化(Binarization)を使用することもできる。このとき、垂直変換及び水平変換の少なくとも一つに対して、変換セットに属する変換のうちのいずれの変換が使用されたかを指し示す情報がエントロピー符号化/復号できる。
符号化器では、前述した1次変換が完了した後、図9の例のように変換係数(Transformed coefficients)に対するエネルギー集中度を高めるために2次変換(Secondary transform)を行うことができる。2次変換も水平及び/又は垂直方向に対して1次元変換をそれぞれ実行する可分変換を行うこともでき、又は2次元非可分変換を行うこともでき、使用された変換情報がシグナリングされるか或いは現在及び近傍符号化情報に応じて符号化器/復号器で暗黙的に導出され得る。例えば、1次変換のように2次変換に対する変換セットを定義することができ、変換セットは、エントロピー符号化/復号されるのではなく、符号化器/復号器で同じルールに基づいて定義できる。この場合、当該変換セットに属する変換のうちのいずれの変換が使用されたかを指し示す情報がシグナリングでき、イントラ又はインター予測による残余信号のうちの少なくとも一つに適用できる。
変換セット別に変換候補(transform candidate)の個数又は種類のうちの少なくとも一つは異なり、変換候補の個数又は種類のうちの少なくとも一つはブロック(CU、PU、TUなど)の位置、大きさ、分割形態、予測モード(イントラ/インターモード)、又はイントラ予測モードの方向性/非方向性のうちの少なくとも一つを考慮して可変的に決定されることも可能である。
復号器では、2次逆変換を実行するか否かに応じて2次逆変換を行うことができ、2次逆変換の実行結果から1次逆変換を実行するか否かに応じて1次逆変換を行うことができる。
前述した1次変換及び2次変換は輝度/色差成分のうちの少なくとも一つの信号成分に適用されるか、或いは任意の符号化ブロックのサイズ/形状に応じて適用でき、任意の符号化ブロックでの使用有無、及び使用された1次変換/2次変換を指し示すインデックスをエントロピー符号化/復号するか、又は現在/近傍符号化情報のうちの少なくとも一つに基づいて符号化器/復号器で暗黙的に導出することができる。
イントラ又はインター予測以降に生成された残余信号は、1次及び/又は2次変換完了の後、量子化処理を経る。量子化された変換係数は、エントロピー符号化処理を経る。この時、量子化された変換係数は、図10に示すように、イントラ予測モード又は最小ブロックサイズ/形状のうちの少なくとも一つを基準に対角線、垂直方向、および、水平方向に沿ってスキャニング(scanning)できる。
また、エントロピー復号された、量子化された変換係数は、逆スキャニング(Inverse Scanning)され、ブロック形態で整列でき、当該ブロックに逆量子化又は逆変換のうちの少なくとも一つが実行されてよい。この時、逆スキャニングの方法として、対角(Diagonal)スキャン、水平(Horizontal)スキャン及び垂直(Vertical)スキャンのうちの少なくとも一つが実行できる。
一例として、現在符号化ブロックのサイズが8x8であるとき、8x8ブロックに対する残余信号は、1次変換、2次変換及び量子化の後、4つの4x4下位ブロックごとに、図10に示された3つのスキャニング順序(Scanning order)方法のうちの少なくとも一つに応じて、量子化された変換係数をスキャニングしながらエントロピー符号することができる。また、量子化された変換係数を逆スキャニングしながらエントロピー復号することができる。逆スキャニングされた、量子化された変換係数は、逆量子化後の変換係数となり、2次逆変換又は1次逆変換のうちの少なくとも一つが実行されて再構築された残余信号が生成できる。
ビデオ符号化処理で、図11を示すように、一つのブロックが分割されてよく、分割情報に該当するインジケータがシグナリングされてよい。この時、前記分割情報は、分割フラグ(split_flag)、クワッド/2分木フラグ(QB_flag)、4分木分割フラグ(quadtree_flag)、2分木分割フラグ(binarytree_flag)、2分木分割タイプフラグ(Btype_flag)のうちの少なくとも一つであり得る。ここで、split_flagは、ブロックが分割されたか否かを示すフラグ、QB_flagは、ブロックが4分木状に分割されたか、2分木状に分割されたかを示すフラグ、quadtree_flagは、ブロックが4分木状に分割されたか否かを示すフラグ、binarytree_flagは、ブロックが2分木状に分割されたか否かを示すフラグ、Btype_flagは、ブロックが2分木状に分割された場合に垂直又は水平分割であることを示すフラグであり得る。
前記分割フラグが1である場合には分割されたことを示し、前記分割フラグが0である場合には分割されていないことを示すことができ、前記クワッド/2分木フラグの場合、0であれば4分木分割を示し、1であれば2分木分割を示すことができ、逆に、0であれば2分木分割を示し、1であれば4分木分割を示すことができる。前記2分木分割タイプフラグの場合、0であれば水平方向分割を示し、1であれば垂直方向分割を示すことができ、逆に、0であれば垂直方向分割を示し、1であれば水平方向分割を示すことができる。
例えば、図11についての分割情報は、下記表3のとおり、quadtree_flag、binarytree_flag、Btype_flagの少なくとも一つをシグナリングして導出することができる。
例えば、図11についての分割上方は、下記表4のとおり、split_flag、QB_flag、Btype_flagの少なくとも一つをシグナリングして導出することができる。
前記分割方法は、ブロックのサイズ/形状に応じて4分木状にのみ分割可能であり、或いは2分木状にのみ分割可能である。このような場合、前記split_flagは、4分木分割か2分木分割かを示すフラグを意味することができる。前記ブロックのサイズ/形状はブロックの深さ情報に応じて導出でき、深さ情報はシグナリングできる。
前記ブロックのサイズが所定の範囲内に属する場合には、4分木状にのみ分割が可能であり得る。ここで、所定の範囲は、4分木状にのみ分割が可能な最大ブロックのサイズ又は最小ブロックのサイズのうちの少なくとも一つと定義できる。前記4分木分割が許容される最大/最小ブロックのサイズを示す情報は、ビットストリームを介してシグナリングでき、当該情報は、シーケンス、ピクチャパラメータ又はスライス(セグメント)のうちの少なくとも一つの単位でシグナリングできる。又は、前記最大/最小ブロックのサイズは、符号化器/復号器に所定の固定されたサイズであってもよい。例えば、前記ブロックのサイズが256x256〜64x64に該当する場合には、4分木状にのみ分割が可能である。このような場合、前記split_flagは4分木分割か否かを示すフラグであり得る。
前記ブロックのサイズが所定の範囲内に属する場合には、2分木状にのみ分割が可能である。ここで、所定の範囲は、2分木状にのみ分割が可能な最大ブロックのサイズ又は最小ブロックのサイズのうちの少なくとも一つと定義できる。前記2分木分割が許容される最大/最小ブロックのサイズを示す情報は、ビットストリームを介してシグナリングでき、該当情報は、シーケンス、ピクチャパラメータ、又はスライス(セグメント)のうちの少なくとも一つの単位でシグナリングできる。又は、前記最大/最小ブロックのサイズは、符号化器/復号器に所定の固定されたサイズであってもよい。例えば、前記ブロックのサイズが16x16〜8x8に該当する場合には、2分木状にのみ分割が可能である。このような場合、前記split_flagは2分木分割か否かを示すフラグであり得る。
前記一つのブロックが2分木状に分割された後、前記分割されたブロックがさらに分割される場合には、2分木状にのみ分割できる。
前記分割されたブロックの横幅又は縦幅が、それ以上分割できないサイズである場合には、前記一つ以上のインジケータをシグナリングしないことがある。
前記4分木基盤の2分木分割の他に、2分木分割後、4分木基盤の分割が可能である。
上述した事項に基づいて、本発明に係る画像符号化/復号方法について詳細に説明する。
図12は本発明に係るマージモードを用いた画像符号化方法を示すフローチャート、図13は本発明に係るマージモードを用いた画像復号方法を示すフローチャートである。
図12を参照すると、符号化装置は、マージ候補を導出し(S1201)、導出されたマージ候補を基にマージ候補リストを生成することができる。マージ候補リストが生成されると、生成されたマージ候補リストを用いて動き情報を決定し(S1202)、決定された動き情報を用いて現在ブロックの動き補償を行うことができる(S1203)。その後、符号化装置は、動き補償に関する情報をエントロピー符号化することができる(S1204)。
図13を参照すると、復号装置は、符号化装置から受信した動き補償に関する情報をエントロピー復号して(S1301)、マージ候補を導出し(S1302)、導出されたマージ候補を基にマージ候補リストを生成することができる。マージ候補リストが生成されると、生成されたマージ候補リストを用いて、現在ブロックの動き情報を決定することができる(S1303)。その後、復号装置は、動き情報を用いて動き補償を行うことができる(S1304)。
以下、図12及び図13に示した各ステップについて詳細に説明する。
まず、マージ候補を導出するステップについて具体的に説明する(S1201、S1302)。
現在ブロックに対するマージ候補は、空間マージ候補、時間マージ候補または追加的なマージ候補のうちの少なくとも一つを含むことができる。
現在ブロックの空間マージ候補は、現在ブロック近傍の再構築ブロックから導出できる。一例として、現在ブロック近傍の再構築ブロックの動き情報が、現在ブロックに対する空間マージ候補として決定できる。ここで、動き情報は、動きベクトル、参照画像インデックスまたは予測リスト活用フラグを少なくとも一つ含むことができる。
この場合、空間マージ候補の動き情報は、L0及びL1に対応する動き情報だけでなく、L0、L1、...、LXに対応する動き情報を持つことができる。ここで、Xは0を含む正の整数であり得る。よって、参照画像リストはL0、L1、...、LXなどの少なくとも一つを含むことができる。
図14は現在ブロックの空間マージ候補を導出する例を説明するための図である。ここで、空間マージ候補を導出するというのは、空間マージ候補を導出してマージ候補リストに追加することを意味することができる。
図14を参照すると、現在ブロックの空間マージ候補は、現在ブロックXに隣接する近傍ブロックから導出できる。現在ブロックに隣接する近傍ブロックは、現在ブロックの上側に隣接するブロックB1、現在ブロックの左側に隣接するブロックA1、現在ブロックの右上隅に隣接するブロックB0、現在ブロックの左上隅に隣接するブロックB2、及び現在ブロックの左下隅に隣接するブロックA0のうちの少なくとも一つを含むことができる。一方、現在ブロックに隣接する近傍ブロックは、正方形(square)または非正方形(non−square)であり得る。
現在ブロックの空間マージ候補を導出するために、現在ブロックに隣接する近傍ブロックが現在ブロックの空間マージ候補の導出に使用できるか否かを判断することができる。この際、現在ブロックに隣接する近傍ブロックが現在ブロックの空間マージ候補の導出に使用できるか否かは、所定の優先順位に基づいて決定できる。一例として、図14に示された例において、A1、B1、B0、A0及びB2位置のブロック順序とおりに空間マージ候補導出可用性が判断できる。前記可用性判断順序に基づいて決定された空間マージ候補を、現在ブロックのマージ候補リストに順次追加することができる。以下、現在ブロックの空間マージ候補の導出に使用できない近傍ブロックの一例を示す。
1)近傍ブロックがB2位置のブロックであるとき、A0、A1、B0及びB1位置のブロックからすべて空間マージ候補が導出された場合、
2)近傍ブロックが存在しない場合(ピクチャ境界、スライス境界またはタイル境界などに現在ブロックが存在する場合)
3)近傍ブロックがイントラ符号化(intra coding)された場合
4)近傍ブロックが先に導出された空間マージ候補と、動きベクトル、参照画像インデックス及び参照画像のうちの少なくとも一つとが同じである場合
5)近傍ブロックの動きベクトルが、現在ブロックの含まれるピクチャ、スライスまたはタイルのうちの少なくとも一つの境界外部領域を参照する場合
図15は空間マージ候補がマージ候補リストに追加される例を説明するための図である。
図15を参照すると、A1、B0、A0、B2位置の近傍ブロックから4つの空間マージ候補が導出された場合、マージ候補リストに導出された空間マージ候補が順次追加できる。
maxNumSpatialMergeCandは、マージ候補リストに含まれ得る最大空間マージ候補の個数を意味し、numMergeCandは、マージ候補リストに含まれているマージ候補の個数を意味することができる。maxNumSpatialMergeCandは、0を含む正の整数であり得る。maxNumSpatialMergeCandは、符号化装置及び復号装置で同一の値を使用するように予め設定できる。または、符号化装置は、現在ブロックのマージ候補リストに含まれ得る最大マージ候補の個数を符号化し、ビットストリームを介して復号装置へシグナリングすることもできる。
上述したように、近傍ブロックA1、B1、B0、A0及びB2から少なくとも一つの空間マージ候補が導出された場合、各導出されたマージ候補に空間マージ候補であるか否かを指し示す空間マージ候補フラグ情報(spatialCand)を設定することができる。一例として、空間マージ候補が導出された場合、spatialCandを所定の値1に設定することができ、そうでない場合、所定の値0に設定することができる。また、空間マージ候補が導出されるたびに、空間マージ候補カウント(spatialCandCnt)を1ずつ増加させることができる。
空間マージ候補は、現在ブロックまたは近傍ブロックの符号化パラメータのうちの少なくとも一つに基づいて導出することができる。
動き補償に関する情報がエントロピー符号化/復号されるブロックのサイズまたはブロックの深さを基準に、動き補償に関する情報がエントロピー符号化/復号されるブロックのサイズまたはブロックの深さよりも小さいサイズまたは深い深さのブロックで、空間マージ候補は共有できる。ここで、動き補償に関する情報は、スキップモード使用有無情報、マージモード使用有無情報またはマージインデックス情報のうちの少なくとも一つであり得る。
動き補償に関する情報がエントロピー符号化/復号されるブロックは、CTUまたはCTUの下位ユニット、CUまたはPUであり得る。
以下では、説明の便宜のために、動き補償に関する情報がエントロピー符号化/復号されるブロックのサイズを第1ブロックサイズとし、動き補償に関する情報がエントロピー符号化/復号されるブロックの深さを第1ブロックの深さとする。
具体的には、第1ブロックサイズよりも現在ブロックのサイズが小さい場合、第1ブロックサイズを持つ上位ブロックの近傍に再構築されたブロックのうちの少なくとも一つから現在ブロックの空間マージ候補を導出することができる。そして、上位ブロックの内部に含まれているブロックは、導出された空間マージ候補を共有することができる。ここで、第1ブロックサイズを有するブロックを現在ブロックの上位ブロックとすることができる。
図16はCTUで空間マージ候補を導出し共有する実施形態を説明するための図である。図16を参照すると、第1ブロックサイズが32x32である場合、32x32よりも小さいブロックサイズを有するブロック1601、1602、1603、1604は、第1ブロックサイズを有する上位ブロック1600の隣接する近傍ブロックのうちの少なくとも一つから空間マージ候補を導出し、導出された空間マージ候補を共有することができる。
一例として、第1ブロックサイズが32x32であり、符号化ブロックのブロックサイズが32x32である場合、32x32よりも小さいブロックサイズを有する予測ブロックは、符号化ブロックの近傍ブロックの動き情報のうちの少なくとも一つから予測ブロックの空間マージ候補を導出することができ、符号化ブロック内の予測ブロックは、導出された空間マージ候補を共有することができる。ここで、符号化ブロックと予測ブロックは、より一般化された表現であるブロックを意味することができる。
現在ブロックのブロック深さが第1ブロック深さよりもさらに深い場合、第1ブロック深さを有する上位ブロックの近傍に再構築されたブロックのうちの少なくとも一つから空間マージ候補を導出することができる。そして、上位ブロックの内部に含まれているブロックは、導出された空間マージ候補を共有することができる。ここで、第1ブロック深さを有するブロックを現在ブロックの上位ブロックとすることができる。
一例として、第1ブロック深さが2であり、符号化ブロックのブロック深さが2である場合、ブロック深さ2よりもさらに深い深さを有する予測ブロックは、符号化ブロックの近傍ブロックの動き情報のうちの少なくとも一つに基づいて予測ブロックの空間マージ候補を導出することができ、符号化ブロック内の予測ブロックは、導出された空間マージ候補を共有することができる。
ここで、空間マージ候補を共有するというのは、同じ空間マージ候補を基に、共有するブロックのそれぞれのマージ候補リストを生成することができることを意味することができる。
また、空間マージ候補を共有するというのは、共有するブロックが一つのマージ候補リストを用いて動き補償を行うことができることを意味することができる。ここで、共有されるマージ候補リストは、動き補償に関する情報がエントロピー符号化/復号される上位ブロックを基準に導出される空間マージ候補のうちの少なくとも一つを含むことができる。
現在ブロックに隣接する近傍ブロックまたは現在ブロックは、正方形(square)あるいは非正方形(non−square)の形状を有することができる。
そして、現在ブロックに隣接する近傍ブロックは、下位ブロック(sub−block)単位に分割できる。この場合、現在ブロックに隣接する近傍ブロックの下位ブロックのうちのいずれかの下位ブロックの動き情報を、現在ブロックの空間マージ候補として決定することができる。また、現在ブロックに隣接する近傍ブロックの下位ブロックの動き情報のうちの少なくとも一つに基づいて、現在ブロックの空間マージ候補を決定することができる。ここでも、近傍ブロックの下位ブロックが空間マージ候補の導出に使用できるか否かを判断して、現在ブロックの空間マージ候補として決定することができる。前記空間マージ候補の導出に使用できるか否かは、近傍ブロックの下位ブロックの動き情報が存在するか否か、及び近傍ブロックの下位ブロックの動き情報が現在ブロックの空間マージ候補として利用可能であるか否かのうちの少なくとも一つを含むことができる。
また、近傍ブロックの下位ブロックの動き情報のうちの少なくとも一つ(一例として、動きベクトル)の中間値、平均値、最小値、最大値、加重平均値または最頻値のいずれかを、現在ブロックの空間マージ候補として決定することができる。
次に、現在ブロックの時間マージ候補を導出する方法について説明する。
現在ブロックの時間マージ候補は、現在画像の対応位置画像(Co−located picture)に含まれている再構築ブロックから導出できる。ここで、対応位置画像は、現在画像の前に符号化/復号が完了した画像であって、現在画像とは異なる時間的順序を持つ画像であり得る。
図17は現在ブロックの時間マージ候補を導出する例を説明するための図である。ここで、時間マージ候補を導出するというのは、時間マージ候補を導出してマージ候補リストに追加することを意味することができる。
図17を参照すると、現在画像の対応位置画像(collocated picture)において、現在ブロックXと空間的に同一の位置に対応するブロックの外部位置を含むブロック、又は現在ブロックXと空間的に同一の位置に対応するブロックの内部位置を含むブロックから現在ブロックの時間マージ候補を導出することができる。ここで、時間マージ候補は、対応位置ブロックの動き情報を意味することができる。一例として、現在ブロックXの時間マージ候補は、現在ブロックと空間的に同一の位置に対応するブロックCの左下隅に隣接するブロックH、又はブロックCの中心点を含むブロックC3から導出できる。現在ブロックの時間マージ候補を導出するために使用されるブロックH又はブロックC3などを「対応位置ブロック(collocated block)」と呼ぶことができる。
一方、現在ブロックの対応位置ブロックまたは現在ブロックは、正方形(square)または非正方形(non−square)の形状であり得る。
ブロックCの外部位置を含むブロックHから現在ブロックの時間マージ候補を導出することができる場合、ブロックHが現在ブロックの対応位置ブロックとして設定できる。この場合、現在ブロックの時間マージ候補は、ブロックHの動き情報に基づいて導出することができる。これに対し、ブロックHから現在ブロックの時間マージ候補を導出することができない場合には、ブロックCの内部位置を含むブロックC3が現在ブロックの対応位置ブロックとして設定できる。この場合、現在ブロックの時間マージ候補は、ブロックC3の動き情報に基づいて導出できる。もしブロックH及びブロックC3から現在ブロックの時間マージを導出することができない場合には(例えば、ブロックH及びブロックC3が全てイントラ符号化された場合)、現在ブロックに対する時間マージ候補は導出されないか、或いはブロックH及びブロックC3とは異なる位置のブロックから導出できるだろう。
他の例として、現在ブロックの時間マージ候補は、対応位置画像内の複数のブロックから導出されることも可能である。一例として、ブロックH及びブロックC3から現在ブロックに対する複数の時間マージ候補を導出することもできる。
図18は時間マージ候補がマージ候補リストに追加される例を説明するための図である。
図18を参照すると、H1位置の対応位置ブロックから1つの時間マージ候補が導出された場合、マージ候補リストに導出された時間マージ候補を追加することができる。
現在ブロックの対応位置ブロックは、下位ブロック(sub−block)単位に分割できる。この場合、現在ブロックの対応位置ブロックの下位ブロックのうち、いずれかの下位ブロックの動き情報を現在ブロックの時間マージ候補として決定することができる。また、現在ブロックの対応位置ブロックの下位ブロックの動き情報のうちの少なくとも一つに基づいて現在ブロックの時間マージ候補を決定することができる。
ここでも、対応位置ブロックの下位ブロックの動き情報が存在するか否か、または対応位置ブロックの下位ブロックの動き情報が現在ブロックの時間マージ候補として利用可能であるか否かを判断して、現在ブロックの時間マージ候補として決定することができる。
また、対応位置ブロックの下位ブロックの動き情報のうちの少なくとも一つ(一例として、動きベクトル)の中間値、平均値、最小値、最大値、加重平均値または最頻値のいずれかを、現在ブロックの時間マージ候補として決定することができる。
図17では、対応位置ブロックの左下隅に隣接するブロック又は対応位置ブロックの中心点を含むブロックから現在ブロックの時間マージ候補を導出することができるものと図示した。ただし、現在ブロックの時間マージ候補を導出するためのブロックの位置は、図17に示された例に限定されない。一例として、現在ブロックの時間マージ候補は、対応位置ブロックの上/下側境界、左/右側境界又は一つの隅に隣接するブロックから導出されてもよく、対応位置ブロック内の特定の位置を含むブロック(例えば、対応位置ブロックの隅境界に隣接するブロック)から導出されてもよい。
現在ブロックの時間マージ候補は、現在ブロックと対応位置ブロックの参照画像リスト(又は予測方向)を考慮して決定されてもよい。一方、時間マージ候補の動き情報は、L0及びL1に対応する動き情報だけでなく、L0、L1、…、LXに対応する動き情報を持つことができる。ここで、Xは、0を含む正の整数であり得る。
一例として、現在ブロックが利用可能な参照画像リストがL0である場合(すなわち、インター予測インジケータがPRED_L0を指示する場合)、対応位置ブロックでL0に対応する動き情報を現在ブロックの時間マージ候補として導出することができる。つまり、現在ブロックが利用可能な参照画像リストがLXである場合(ここで、Xは0、1、2又は3など、参照画像リストのインデックスを示す整数)、対応位置ブロックのLXに対応する動き情報(以下、「LX動き情報」という)を現在ブロックの時間マージ候補として導出することができる。
現在ブロックが複数の参照画像リストを用いる場合にも、現在ブロックと対応位置ブロックの参照画像リストを考慮して、現在ブロックの時間マージ候補を決定することができる。
一例として、現在ブロックが双方向予測を行う場合(すなわち、インター予測インジケータがPRED_BIである場合)、対応位置ブロックのL0動き情報、L1動き情報、L2動き情報、...、LX動き情報のうちの少なくとも2つを時間マージ候補として導出することができる。現在ブロックが三方向予測を行う場合(すなわち、インター予測インジケータがPRED_TRIである場合)、対応位置ブロックのL0動き情報、L1動き情報、L2動き情報、...、LX動き情報のうちの少なくとも3つを時間マージ候補として導出することができる。現在ブロックが四方向予測を行う場合(すなわち、インター予測インジケータがPRED_QUADである場合)、対応位置ブロックのL0動き情報、L1動き情報、L2動き情報、...、LX動き情報のうちの少なくとも4つを時間マージ候補として導出することができる。
また、現在ブロック、近傍ブロックまたは対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて時間マージ候補、対応位置画像、対応位置ブロック、予測リスト活用フラグ及び参照画像インデックスのうちの少なくとも一つを導出することもできる。
時間マージ候補は、導出された空間マージ候補の個数がマージ候補の最大個数よりも小さいときに予備的に導出できる。これにより、導出された空間マージ候補の個数がマージ候補の最大個数に達した場合、時間マージ候補を導出する処理が省略できる。
一例として、マージ候補の最大個数が2つであり、導出された空間マージ候補2つが互いに異なる値を持つ場合には、時間マージ候補を導出する処理が省略できる。
他の例として、現在ブロックの時間マージ候補は、時間マージ候補の最大個数に基づいて導出されることも可能である。ここで、時間マージ候補の最大個数は、符号化装置及び復号装置で同一の値を使用するように予め設定できる。又は、現在ブロックの時間マージ候補の最大個数を示す情報は、ビットストリームを介して符号化され、復号装置へシグナリングされることも可能である。一例として、符号化装置は、現在ブロックの時間マージ候補の最大個数を示す「maxNumTemporalMergeCand」を符号化し、ビットストリームを介して復号装置へシグナリングすることができる。このとき、「maxNumTemporalMergeCand」は、0を含む正の整数として設定できる。例えば、「maxNumTemporalMergeCand」は1に設定できる。maxNumTemporalMergeCandの値は、シグナリングされる時間マージ候補の個数に関する情報に基づいて可変的に導出されてもよく、符号化器/復号器に予め設定された固定値であってもよい。
現在ブロックが含まれている現在画像と現在ブロックの参照画像間の距離と、対応位置ブロックが含まれている対応位置画像と対応位置ブロックの参照画像間の距離とが異なる場合、現在ブロックの時間マージ候補の動きベクトルは、対応位置ブロックの動きベクトルをスケーリングすることにより取得できる。ここで、スケーリングは、現在画像と現在ブロックが参照する参照画像間の距離、及び対応位置画像と対応位置ブロックが参照する参照画像間の距離のうちの少なくとも一つに基づいて行われ得る。一例として、現在画像と現在ブロックが参照する参照画像間の距離と、対応位置画像と対応位置ブロックが参照する参照画像間の距離との比率に応じて対応位置ブロックの動きベクトルをスケーリングすることにより、現在ブロックの時間マージ候補の動きベクトルが導出できる。
動き補償に関する情報がエントロピー符号化/復号されるブロックのサイズ(第1ブロックサイズ)またはブロックの深さ(第1ブロック深さ)を基準に、動き補償に関する情報がエントロピー符号化/復号されるブロックサイズまたはブロック深さよりも小さいサイズまたは深い深さのブロックで、時間マージ候補は共有できる。ここで、動き補償に関する情報は、スキップモード使用有無の情報、マージモード使用有無の情報またはマージインデックス情報のうちの少なくとも一つであり得る。
動き補償に関する情報がエントロピー符号化/復号されるブロックは、CTUまたはCTUの下位ユニット、CUまたはPUであり得る。
具体的には、第1ブロックサイズよりも現在ブロックのサイズが小さい場合、第1ブロックサイズを有する上位ブロックの対応位置ブロックから現在ブロックの時間マージ候補を導出することができる。そして、上位ブロックの内部に含まれているブロックは、導出された時間マージ候補を共有することができる。
また、現在ブロックのブロック深さが第1ブロック深さよりもさらに深い場合には、第1ブロック深さを有する上位ブロックの対応位置ブロックから時間マージ候補を導出することができる。そして、上位ブロックの内部に含まれているブロックは、導出された時間マージ候補を共有することができる。
ここで、時間マージ候補を共有するというのは、同一の時間マージ候補を基に、共有するブロックのそれぞれのマージ候補リストを生成することができることを意味することができる。
また、時間マージ候補を共有するというのは、共有するブロックが一つのマージ候補リストを用いて動き補償を行うことができることを意味することができる。ここで、共有されるマージ候補リストは、動き補償に関する情報がエントロピー符号化/復号される上位ブロックを基準に導出される時間マージ候補を含むことができる。
図19は現在ブロックの時間マージ候補を導出するために、対応位置ブロックの動き情報中の動きベクトルをスケーリングする例を示す。
対応位置ベクトルの動きベクトルは、対応位置画像の表示順を示すPOC(Picture order count)と対応位置ブロックの参照画像のPOCとの差分値(td)、及び現在画像のPOCと現在ブロックの参照画像のPOCとの差分値(tb)のうちの少なくとも一つに基づいてスケーリングできる。
スケーリングを行うに先立ち、所定の範囲内にtd又はtbが存在するようにtd又はtbを調節することができる。一例として、所定の範囲が−128〜127を示す場合、td又はtbが−128よりも小さい場合には、td又はtbを−128に調節することができる。td又はtbが127よりも大きい場合には、td又はtbは127に調節することができる。td又はtbが−128〜127の範囲に含まれる場には、td又はtbを調整しない。
td又はtbに基づいてスケーリングファクターDistScaleFactorを演算することができる。このとき、スケーリングファクターは下記数式1に基づいて計算できる。
式中、Abs()は絶対値関数を示し、該当関数の出力値は入力値の絶対値になる。
数式1に基づいて演算されたスケーリングファクターDistScaleFactorの値は所定の範囲に調整できる。一例として、DistScaleFactorは−1024〜1023の範囲内に存在するように調整できる。
スケーリングファクターを用いて対応位置ブロックの動きベクトルをスケーリングすることにより、現在ブロックの時間マージ候補の動きベクトルを決定することができる。一例として、現在ブロックの時間マージ候補の動きベクトルは、下記数式2によって決定できる。
式中、Sign()は、()に含まれている値の符号情報を出力する関数である。一例として、Sign(−1)であれば−を出力する。前記数式2において、mvColは対応位置ブロックの動きベクトルを意味することができる。
次に、現在ブロックの追加的なマージ候補を導出する方法について説明する。
追加的なマージ候補は、変更された空間マージ候補(modified spatial merge candidate)、変更された時間マージ候補(modified temporal merge candidate)、組み合わせマージ候補(combined merge candidate)、所定の動き情報値を有するマージ候補のうちの少なくとも一つを意味することができる。ここで、追加的なマージ候補を導出することは、追加的なマージ候補を導出してマージ候補リストに追加することを意味することができる。
変更された空間マージ候補は、導出された空間マージ候補の動き情報のうちの少なくとも一つを変更したマージ候補を意味することができる。
変更された時間マージ候補は、導出された時間マージ候補の動き情報のうちの少なくとも一つを変更したマージ候補を意味することができる。
組み合わせマージ候補は、マージ候補リストに存在する空間マージ候補、時間マージ候補、変更された空間マージ候補、変更された時間マージ候補、組み合わせマージ候補、所定の動き情報値を有するマージ候補の動き情報のうちの少なくとも一つの動き情報を組み合わせて導出されるマージ候補を意味することができる。
または、組み合わせマージ候補は、マージ候補リストに存在しないものの、空間マージ候補及び時間マージ候補のうちの少なくとも一つを導出することができるブロックから導出された空間マージ候補及び導出された時間マージ候補、これを基に生成された、変更された空間マージ候補、変更された時間マージ候補、組み合わせマージ候補、及び所定の動き情報値を有するマージ候補のうちの少なくとも一つの動き情報を組み合わせて導出されるマージ候補を意味することができる。
または、復号器でビットストリームからエントロピー復号した動き情報を用いて組み合わせマージ候補を導出することができる。このとき、符号化器で、組み合わせマージ候補の導出に使用され動き情報は、ビットストリームにエントロピー符号化できる。
組み合わせマージ候補は、組み合わせ双予測マージ候補を意味することができる。組み合わせ双予測マージ候補は、双予測(bi−prediction)を用いるマージ候補であって、L0動き情報とL1動き情報を有するマージ候補を意味することができる。
また、組み合わせマージ候補は、L0動き情報、L1動き情報、L2動き情報、及びL3動き情報のうちの少なくともN個を有するマージ候補を意味することができる。ここで、Nは2以上の正の整数を意味することができる。
所定の動き情報値を持つマージ候補は、動きベクトルが(0,0)であるゼロマージ候補を意味することができる。一方、所定の動き情報値を有するマージ候補は、符号化装置及び復号装置で同一の値を使用するように予め設定されてもよい。
現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、変更された空間マージ候補、変更された時間マージ候補、組み合わせマージ候補、所定の動き情報値を有するマージ候補のうちの少なくとも一つを導出または生成することができる。また、変更された空間マージ候補、変更された時間マージ候補、組み合わせマージ候補、所定の動き情報値を有するマージ候補のうちの少なくとも一つを、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、マージ候補リストに追加することができる。
追加的なマージ候補は、現在ブロック、近傍ブロック、または対応位置ブロックの下位ブロック(sub−block)ごとに導出することができ、下位ブロックごとに導出されたマージ候補を現在ブロックのマージ候補リストに追加することができる。
追加的なマージ候補は、Bスライス/Bピクチャまたは参照画像リストをM個以上用いるスライス/ピクチャの場合にのみ導出できる。ここで、Mは3、4であってもよく、3以上の正の整数を意味することができる。
追加的なマージ候補は最大N個まで導出できる。このとき、Nは、0を含む正の整数である。Nは、マージ候補リストに含まれるマージ候補の最大個数に関する情報に基づいて導出される可変的な値であってもよい。または、符号化器/復号器に予め設定された固定値であってもよい。ここで、Nは、マージモードで符号化/復号されたブロックのサイズ、形状、深さまたは位置に応じて異なり得る。
マージ候補リストは、予め設定されサイズを有し、空間マージ候補または時間マージ候補を追加した後に生成された追加的なマージ候補の数だけ増加することができる。この場合、生成された追加的なマージ候補はいずれもマージ候補リストに含まれ得る。これに対し、マージ候補リストのサイズは、追加的なマージ候補の数よりも小さいサイズ(一例として、追加的なマージ候補の数−N、Nは正の整数)に増加することもできる。この場合、生成された追加的なマージ候補のうちの一部だけがマージ候補リストに含まれ得る。
また、マージ候補リストのサイズは、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータに基づいて決定でき、符号化パラメータに基づいてサイズが変更できる。
符号化器と復号器でマージモードの処理量(throughput)を増大させるために、組み合わせマージ候補は導出せず、空間マージ候補の導出、時間マージ候補の導出及びゼロマージ候補の導出のみを行って、マージモードを用いた動き補償を行うことができる。相対的に多くのサイクルタイム(cycle time)を必要とする時間マージ候補導出処理の実行後に組み合わせマージ候補導出処理が行われる場合、組み合わせマージ候補導出処理を行わなければ、マージモードのハードウェア複雑度が最悪の場合(worst case)は、時間マージ候補導出処理後の組み合わせマージ候補導出処理ではなく、時間マージ候補導出処理になることができる。よって、マージモードで、各マージ候補を導出するときに必要なサイクルタイムが減少することができる。また、組み合わせマージ候補を導出しないマージモードは、各マージ候補導出間の従属性(dependency)がなくなるので、空間マージ候補の導出、時間マージ候補の導出、ゼロマージモード候補の導出が並列的(parallel)に行われ得るという利点がある。
図21(図21a及び図21b)は、組み合わせマージ候補を導出する方法の一実施形態を説明するための図である。マージ候補リストに1つ以上のマージ候補が存在するか、或いは組み合わせマージ候補を導出する前にマージ候補リスト内にマージ候補個数(numOrigMergeCand)が最大マージ候補個数(MaxNumMergeCand)よりも小さい場合、図21の組み合わせマージ候補導出方法が行われ得る。
図21を参照すると、符号化器/復号器は、入力されたマージ候補個数(numInputMergeCand)を現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)として設定し、組み合わせインデックス(combIdx)を0に設定することができる。k(numMergeCand numInputMergeCand)番目の組み合わせマージ候補を導出することができる。
符号化器/復号器は、図20に示されたような組み合わせインデックスを用いてL0候補インデックス(l0CandIdx)、L1候補インデックス(l1CandIdx)、L2候補インデックス(l2CandIdx)及びL3候補インデックス(l3CandIdx)のうちの少なくとも一つを導出することができる(S2101)。
各候補インデックスは、マージ候補リスト内のマージ候補を指し示し、L0、L1、L2、L3に従って候補インデックスが持つ動き情報が組み合わせマージ候補のL0、L1、L2、L3に対する動き情報になることができる。
符号化器/復号器は、L0候補(l0Cand)をマージ候補リスト内でL0候補インデックスに相当するマージ候補(mergeCandList[l0CandIdx])として導出することができ、L1候補(l1Cand)をマージ候補リスト内でL1候補インデックスに相当するマージ候補(mergeCandList[l1CandIdx])として導出することができ、L2候補(l2Cand)をマージ候補リスト内でL2候補インデックスに相当するマージ候補(mergeCandList[l2CandIdx])として導出することができ、L3候補(l3Cand)をマージ候補リスト内でL3候補インデックスに相当するマージ候補(mergeCandList[l3CandIdx])として導出することができる(S2102)。
符号化器/復号器は、次の場合のうちの少なくとも一つを満足すれば、S2104ステップを行い、そうでなければ、S2105ステップを行うことができる(S2103)。
1)L0候補がL0単予測を用いる場合(predFlagL0l0Cand==1)
2)L1候補がL1単予測を用いる場合(predFlagL1l1Cand==1)
3)L2候補がL2単予測を用いる場合(predFlagL2l2Cand==1)
4)L3候補がL3単予測を用いる場合(predFlagL3l3Cand==1)
5)L0、L1、L2、L3候補のうちの少なくとも一つの参照画像が他の候補の参照画像と異なり、L0、L1、L2、L3候補のうちの少なくとも一つの動きベクトルが他の候補の動きベクトルと異なる場合
これらの5つの場合のうちの少なくとも一つを満足すると(S2103−はい)、符号化器/復号器は、L0候補のL0動き情報を組み合わせ候補のL0動き情報として決定し、L1候補のL1動き情報を組み合わせ候補のL1動き情報として決定し、L2候補のL2動き情報を組み合わせ候補のL2動き情報として決定し、L3候補のL3動き情報を組み合わせ候補のL3動き情報として決定し、組み合わせマージ候補(combCandk)をマージ候補リストに追加することができる(S2104)。
例えば、組み合わせマージ候補についての情報は、次のとおりである。
K番目の組み合わせマージ候補のL0参照画像インデックス(refIdxL0combCandk)=L0候補のL0参照画像インデックス(refIdxL0l0Cand)
K番目の組み合わせマージ候補のL1参照画像インデックス(refIdxL1combCandk)=L1候補のL1参照画像インデックス(refIdxL1l1Cand)
K番目の組み合わせマージ候補のL2参照画像インデックス(refIdxL2combCandk)=L2候補のL2参照画像インデックス(refIdxL2l2Cand)
K番目の組み合わせマージ候補のL3参照画像インデックス(refIdxL3combCandk)=L3候補のL3参照画像インデックス(refIdxL3l3Cand)
K番目の組み合わせマージ候補のL0予測リスト活用フラグ(predFlagL0combCandk)=1
K番目の組み合わせマージ候補のL1予測リスト活用フラグ(predFlagL1combCandk)=1
K番目の組み合わせマージ候補のL2予測リスト活用フラグ(predFlagL2combCandk)=1
K番目の組み合わせマージ候補のL3予測リスト活用フラグ(predFlagL3combCandk)=1
K番目の組み合わせマージ候補のL0動きベクトルのx成分(mvL0combCandk[0])=L0候補のL0動きベクトルのx成分(mvL0l0Cand[0])
K番目の組み合わせマージ候補のL0動きベクトルのy成分(mvL0combCandk[1])=L0候補のL0動きベクトルのy成分(mvL0l0Cand[1])
K番目の組み合わせマージ候補のL1動きベクトルのx成分(mvL1combCandk[0])=L1候補のL1動きベクトルのx成分(mvL1l1Cand[0])
K番目の組み合わせマージ候補のL1動きベクトルのy成分(mvL1combCandk[1])=L1候補のL1動きベクトルのy成分(mvL1l1Cand[1])
K番目の組み合わせマージ候補のL2動きベクトルのx成分(mvL2combCandk[0])=L2候補のL2動きベクトルのx成分(mvL2l2Cand[0])
K番目の組み合わせたマージ候補のL2動きベクトルのy成分(mvL2combCandk[1])=L2候補のL2動きベクトルのy成分(mvL2l2Cand[1])
K番目の組み合わせマージ候補のL3動きベクトルのx成分(mvL3combCandk[0])=L3候補のL3動きベクトルのx成分(mvL3l3Cand[0])
K番目の組み合わせマージ候補のL3動きベクトルのy成分(mvL3combCandk[1])=L3候補のL3動きベクトルのy成分(mvL3l3Cand[1])
numMergeCand=numMergeCand+1
また、符号化器/復号器は、組み合わせインデックスを1だけ増加させることができる(S2105)。
また、符号化器/復号器は、組み合わせインデックスが(numOrigMergeCand*(numOrigMergeCand−1))と同じであるか、或いは現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)と同じである場合には、組み合わせマージ候補導出ステップを終了し、そうでない場合には、S2101ステップに戻ることができる(S2106)。
図21の組み合わせマージ候補導出方法が行われる場合、図22に示すようにマージ候補リストに導出された組み合わせマージ候補が追加できる。
一方、マージ候補リストに2つ以上の空間マージ候補が存在するか、或いは組み合わせマージ候補導出前にマージ候補リスト内のマージ候補個数(numOrigMergeCand)が最大マージ候補個数(MaxNumMergeCand)よりも小さい場合には、空間マージ候補のみを用いて組み合わせマージ候補を導出する方法が行われ得る。この場合にも、図21の組み合わせマージ候補導出方法を用いて行われ得る。
ただし、図21のS2101ステップで導出されるL0候補インデックス、L1候補インデックス、L2候補インデックス、L3候補インデックスは、空間マージ候補フラグ情報(spatialCand)が1であるマージ候補だけを指し示すことができる。
よって、S2102ステップで導出されるL0候補、L1候補、L2候補、L3候補は、マージ候補リスト内で空間マージ候補フラグ情報(spatialCand)が1であるマージ候補、すなわち空間マージ候補のみを用いて導出できる。
そして、図21のS2106ステップで、(numOrigMergeCand*(numOrigMergeCand−1))値の代わりに、(spatialCandCnt*(spatialCandCnt−1))値を組み合わせインデックスと比較することにより、組み合わせインデックスが(spatialCandCnt*(spatialCandCnt−1))と同じであるか、或いは現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が「MaxNumMergeCand」と同じである場合には、組み合わせマージ候補導出ステップを終了し、そうでない場合には、S2101ステップに戻ることができる。
空間マージ候補のみを用いて組み合わされマージ候補を導出する方法が行われる場合、図23に示すように、マージ候補リストに、空間マージ候補のみから組み合わせられた組み合わせマージ候補が追加できる。
図22及び図23は空間マージ候補、時間マージ候補及びゼロマージ候補のうちの少なくとも一つを用いて組み合わせマージ候補を導出し、マージ候補リストに追加した一例を示す。
ここで、マージ候補リストには、L0動き情報、L1動き情報、L2動き情報、L3動き情報のうちの少なくとも一つの動き情報を有するマージ候補が含まれ得る。一方、L0、L1、L2、L3参照画像リストの例を挙げて説明したが、これに限定されず、L0〜LXの参照画像リスト(Xは正の整数)に対する動き情報を有するマージ候補がマージ候補リストに含まれてもよい。
各動き情報は、動きベクトル、参照画像インデックス及び予測リスト活用フラグのうちの少なくとも一つが含まれ得る。
図22及び図23に示すように、マージ候補のうちの少なくとも一つが最終マージ候補として決定できる。決定された最終マージ候補は、現在ブロックの動き情報として使用できる。現在ブロックのインター予測或いは動き補償に前記動き情報を使用することができる。また、現在ブロックの動き情報に該当する情報のうちの少なくとも一つの値を変更して現在ブロックのインター予測或いは動き補償に前記動き情報を使用することができる。ここで、動き情報に該当する情報のうち、変更される値は、動きベクトルのx成分、動きベクトルのy成分、参照画像インデックスのうちの少なくとも一つであり得る。また、動き情報に該当する情報のうちの少なくとも一つの値を変更するとき、歪み計算方式(SAD、SSE、MSEなど)を用いて最小の歪みを示すように、動き情報に該当する情報のうちの少なくとも一つの値を変更することができる。
マージ候補の動き情報に基づいて、L0動き情報、L1動き情報、L2動き情報及びL3動き情報のうちの少なくとも一つを用いて現在ブロックに対する予測ブロックを生成し、生成された予測ブロックを現在ブロックのインター予測或いは動き補償に使用することができる。
インター予測インジケータは、L0動き情報、L1動き情報、L2動き情報及びL3動き情報のうちの少なくとも一つが予測ブロックの生成に使用されるとき、PRED_L0或いはPRED_L1を指示する一方向予測であるPRED_LX、参照画像リストXに対する双方向予測であるPRED_BI_LXで表現できる。ここで、Xは、0を含む正の整数を意味し、0、1、2、3などになることができる。
また、インター予測インジケータは、L0動き情報、L1動き情報、L2動き情報及びL3動き情報のうちの少なくとも3つを使用する場合、三方向予測であるPRED_TRIで表現できる。また、インター予測インジケータは、L0動き情報、L1動き情報、L2動き情報及びL3動き情報のうちの少なくとも4つを使用する場合、四方向予測であるPRED_QUADで表現できる。
例えば、参照画像リストL0に対するインター予測インジケータはPRED_L0であり、参照画像リストL1に対するインター予測インジケータはPRED_BI_L1である場合には、現在ブロックのインター予測インジケータはPRED_TRIになることができる。つまり、参照画像リストごとにインター予測インジケータが指示する予測ブロックの数の合計が、現在ブロックのインター予測インジケータになることができる。
また、参照画像リストは、L0、L1、L2、L3など、少なくとも一つになることができるが、各参照画像リストに対して図22及び図23のようなマージ候補リストを生成することができる。よって、現在ブロックに対する予測ブロックの生成の際に、最小1個から最大N個までの予測ブロックを生成して現在ブロックに対するインター予測或いは動き補償に使用することができる。ここで、Nは、1以上の正の整数を意味し、1、2、3、4などになることができる。
メモリ帯域幅の減少及び処理速度の向上のために、マージ候補の参照画像インデックスまたは動きベクトル値のうちの少なくとも一つが他のマージ候補と同一であるか、或いは所定の範囲以内に含まれる場合にのみ、組み合わせマージ候補の導出に使用することができる。
一例として、マージ候補リストに含まれているマージ候補のうち、参照画像インデックスが所定の値に等しいマージ候補を用いて、組み合わせマージ候補を導出することができる。このとき、所定の値は、0を含む正の整数であり得る。
他の例として、マージ候補リストに含まれているマージ候補のうち、参照画像インデックスが所定の範囲内に含まれるマージ候補を用いて、組み合わせマージ候補を導出することができる。このとき、所定の範囲は、0を含む正の整数値の範囲であり得る。
別の例として、マージ候補リストに含まれているマージ候補のうち、動きベクトル値が所定の範囲以内に含まれるマージ候補を用いて、組み合わせマージ候補を導出することができる。このとき、所定の範囲は、0を含む正の整数値の範囲であり得る。
別の例として、マージ候補リストに含まれているマージ候補のうち、マージ候補間の動きベクトルの差の値が所定の範囲以内に含まれるマージ候補を用いて、組み合わせマージ候補を導出することができる。このとき、所定の範囲は、0を含む正の整数値の範囲であり得る。
ここで、前記所定の値及び所定の範囲のうちの少なくとも一つは、符号化器/復号器で共通して設定された値に基づいて決定できる。また、前記所定の値及び所定の範囲のうちの少なくとも一つは、エントロピー符号化/復号された値に基づいて決定できる。
また、変更された空間マージ候補、変更された時間マージ候補、所定の動き情報値を有するマージ候補を導出する場合にも、マージ候補の参照画像インデックスまたは動きベクトル値のうちの少なくとも一つが他のマージ候補と同一であるか或いは所定の範囲内に含まれる場合にのみ導出されてマージ候補リストに追加できる。
図24はマージモードを用いた動き補償の際に、空間マージ候補だけを用いて組み合わせマージ候補を導出する利点を説明するための図である。
図24を参照すると、符号化器と復号器でマージモードの処理量(throughput)を増大させるために、時間マージ候補を使用せずに、空間マージ候補のみを用いて組み合わせマージ候補を導出することができる。空間マージ候補導出処理よりも、時間マージ候補導出処理は、動きベクトルスケーリング(scaling)の実行により、相対的に多くのサイクルタイム(cycle time)を必要とする。よって、時間マージ候補導出処理の実行後に組み合わせマージ候補導出処理が行われる場合、マージモードを用いて動き情報決定時のサイクルタイムが多く必要であった。
しかし、時間マージ候補を使用せずに、空間マージ候補のみを用いて組み合わせマージ候補を導出する場合には、時間マージ候補導出処理よりも相対的にサイクルタイムが少なくかかる空間マージ候補の導出直後に組み合わせマージ候補導出処理を行うことができるので、時間マージ候補導出処理を含む方法に比べて、マージモードを用いて動き情報を決定するときに必要なサイクルタイムを減少させることができる。
つまり、時間マージ候補と組み合わせマージ候補導出間の従属性を除去することにより、マージモードの処理量を増大させることができる。また、送信エラーなどにより参照画像にエラーが発生した場合には、時間マージ候補の代わりに、空間マージ候補のみを用いて組み合わせマージ候補を導出することにより、復号器の誤り耐性(error resiliency)も高くなることができる。
また、時間マージ候補を使用せずに、空間マージ候補のみを用いて組み合わせマージ候補を導出する方法を使用する場合、時間マージ候補を用いて組み合わせマージ候補を導出する方法と、時間マージ候補を使用せずに組み合わせマージ候補を導出する方法とが互いに同様に動作でき、且つそれぞれの方法が互いに同様に実現できるので、ハードウェアロジック(logic)が統合されるという利点がある。
図25は組み合わせ双予測マージ候補(combined bi−predictive merge candidate)分割方法の一実施形態を説明するための図である。ここで、組み合わせ双予測マージ候補は、L0動き情報、...、LX動き情報のうち、2つの動き情報を含む組み合わせマージ候補であり得る。以下では、組み合わせ双予測マージ候補がL0動き情報及びL1動き情報を含むと仮定して、図25を説明する。
図25を参照すると、符号化器/復号器は、マージ候補リスト内の組み合わせ双予測マージ候補の情報をL0動き情報とL1動き情報に分割して生成された各動き情報を、新しいマージ候補としてマージ候補リストに追加することができる。
具体的に、符号化器/復号器は、マージ候補リストから分割インデックス(splitIdx)を用いて分割を行う組み合わせ双予測マージ候補を判断することができる(S2501)。ここで、分割インデックス(splitIdx)は、分割を行う組み合わせ双予測マージ候補を指し示すインデックス情報であり得る。
符号化器/復号器は、組み合わせ双予測マージ候補のL0動き情報をL0分割候補の動き情報として設定してマージ候補リストに追加し、numMergeCandを1だけ増加させることができる(S2502)。
符号化器/復号器は、現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)と同一であるかを判断することができる。もし同一であれば(S2503−はい)、分割プロセスを終了することができる。これに対し、もし同一でなければ(S2503−いいえ)、符号化器/復号器は、組み合わせ双予測マージ候補のL1動き情報をL1分割候補の動き情報として設定してマージ候補リストに追加し、numMergeCandを1だけ増加させることができる(S2504)。分割インデックス(splitIdx)を1だけ増加させることができる(S2505)。
また、符号化器/復号器は、現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補コア数(MaxNumMergeCand)と同一である場合には、組み合わせマージ候補分割処理を終了し、そうでない場合には、S2501ステップに戻ることができる(S2506)。
図25のような組み合わせ双予測マージ候補分割方法は、組み合わせ双予測マージ候補を分割するので、Bスライス/Bピクチャである場合、または参照画像リストをM個以上使用するスライス/ピクチャである場合にのみ実行できる。ここで、Mは、3、4であってもよく、3以上の正の整数を意味することができる。
組み合わせ双予測マージ候補分割は、1)組み合わせ双予測マージ候補が存在する場合には、単予測マージ候補に分割する方法、2)組み合わせ双予測マージ候補が存在し且つ組み合わせ双予測マージ候補でL0参照画像とL1参照画像とが互いに異なる場合には、単予測マージ候補に分割する方法、3)組み合わせ双予測マージ候補が存在し且つ組み合わせ双予測マージ候補でL0参照画像とL1参照画像とが互いに同じである場合には、単予測マージ候補に分割する方法の少なくとも一つを用いて行うことができる。
組み合わせ双予測マージ候補は、双予測を使用するため、最大2つの互いに異なる参照画像内の再構築されたピクセルデータ(pixel data)を用いて動き補償を行うので、1つの参照画像内の再構築されたピクセルデータを使用する単予測よりは動き補償時のメモリアクセス帯域幅が大きい。よって、組み合わせ双予測マージ候補分割を利用すれば、組み合わせ双予測マージ候補を単予測マージ候補に分割するので、分割された単予測マージ候補が現在ブロックの動き情報として決定される場合、動き補償時のメモリアクセス帯域幅が減少できる。
符号化器/復号器は、動きベクトルが(0,0)であるゼロ動きベクトルを有するゼロマージ候補(zero merge candidate)を導出することができる。
ゼロマージ候補は、L0動き情報、L1動き情報、L2動き情報及びL3動き情報のうちの少なくとも一つの動き情報における動きベクトルが(0,0)であるマージ候補を意味することができる。
また、ゼロマージ候補は、2種類のうちの少なくとも一つであり得る。一番目のゼロマージ候補は、動きベクトルが(0,0)であり、参照画像インデックスが0以上の値を持つことが可能なマージ候補を意味することができる。そして、二番目のゼロマージ候補は、動きベクトルが(0,0)であり、参照画像インデックスが0である値だけを持つことが可能なマージ候補を意味することができる。
現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)と同じでない場合(つまり、マージ候補リストにマージ候補が満ちていない場合)、マージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)と同一になるまで一番目のゼロマージ候補及び二番目のゼロマージ候補のうちの少なくとも一つを繰り返しマージ候補リストに追加することができる。
また、一番目のゼロマージ候補は、導出されてマージ候補リストに追加でき、二番目のゼロマージ候補は、マージ候補リストがマージ候補で満ちていない場合、導出されてマージ候補リストに追加できる。
図26はゼロマージ候補導出方法の一実施形態を説明するための図である。現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)よりも小さい場合に、ゼロマージ候補の導出が図26のような順に実行できる。
まず、符号化器/復号器は、入力されたマージ候補個数(numInputMergeCand)を現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)として設定することができる。また、ゼロマージ候補の参照画像インデックス(zeroIdx)を0に設定することができる。このとき、m(numMergeCand numInputMergeCand)番目のゼロマージ候補を導出することができる。
符号化器/復号器は、スライスタイプ(slice_type)がPスライスであるかを決定することができる(S2601)。
スライスタイプ(slice_type)がPスライスである場合(S2601−はい)、符号化器/復号器は、参照画像数(numRefIdx)をL0リスト内の可用参照画像数(num_ref_idx_l0_active_minus1+1)に設定することができる。
また、符号化器/復号器は、ゼロマージ候補を次のように導出し、numMergeCandを1だけ増加させることができる(S2602)。
m番目のゼロマージ候補のL0参照画像インデックス(refIdxL0zeroCandm)=ゼロマージ候補の参照画像インデックス(zeroIdx)
m番目のゼロマージ候補のL1参照画像インデックス(refIdxL1zeroCandm)=1
m番目のゼロマージ候補のL0予測リスト活用フラグ(predFlagL0zeroCandm)=1
m番目のゼロマージ候補のL1予測リスト活用フラグ(predFlagL1zeroCandm)=0
m番目のゼロマージ候補のL0動きベクトルのx成分(mvL0zeroCandm[0])=0
m番目のゼロマージ候補のL0動きベクトルのy成分(mvL0zeroCandm[1])=0
m番目のゼロマージ候補のL1動きベクトルのx成分(mvL1zeroCandm[0])=0
m番目のゼロマージ候補のL1動きベクトルのy成分(mvL1zeroCandm[1])=0
これに対し、スライスタイプがPスライスではない場合(Bスライスである場合、または他のスライスである場合)(S2601−いいえ)、参照画像数(numRefIdx)をL0リスト内の可用参照画像数(num_ref_idx_l0_active_minus1+1)、L1リスト内の可用参照画像数(num_ref_idx_l1_active_minus1+1)、L2リスト内の可用参照画像数(num_ref_idx_l2_active_minus1+1)、L3リスト内の可用参照画像数(num_ref_idx_l3_active_minus1+1)のうちの少なくとも一つで少ない値に設定することができる。
また、符号化器/復号器は、ゼロマージ候補を次のように導出し、numMergeCandを1だけ増加させることができる(S2603)。
refIdxL0zeroCandm=zeroIdx
refIdxL1zeroCandm=zeroIdx
refIdxL2zeroCandm=zeroIdx
refIdxL3zeroCandm=zeroIdx
predFlagL0zeroCandm=1
predFlagL1zeroCandm=1
predFlagL2zeroCandm=1
predFlagL3zeroCandm=1
mvL0zeroCandm[0]=0
mvL0zeroCandm[1]=0
mvL1zeroCandm[0]=0
mvL1zeroCandm[1]=0
mvL2zeroCandm[0]=0
mvL2zeroCandm[1]=0
mvL3zeroCandm[0]=0
mvL3zeroCandm[1]=0
S2602ステップまたはS2603ステップが行われた後、符号化器/復号器は、参照画像カウント(refCnt)が参照画像数(numRefIdx)−1と同一である場合には、ゼロマージ候補の参照画像インデックス(zeroIdx)を0に設定し、そうでない場合には、refCntとzeroIdxをそれぞれ1だけ増加させることができる(S2604)。
また、符号化器/復号器は、numMergeCandがMaxNumMergeCandと同じである場合には、ゼロマージ候補導出処理を終了し、そうでない場合には、S2601ステップに戻ることができる(S2605)。
図26のゼロマージ候補導出方法が行われる場合には、図27のようにマージ候補リストに導出されたゼロマージ候補が追加できる。
図28はゼロマージ候補導出方法の他の実施形態を説明するための図である。現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)が最大マージ候補個数(MaxNumMergeCand)よりも小さい場合、L0単予測ゼロマージ候補の導出が図28のような順に行われ得る。
まず、符号化器/復号器は、入力されたマージ候補個数(numInputMergeCand)を現在マージ候補リスト内のマージ候補リスト個数(numMergeCand)として設定することができる。また、ゼロマージ候補の参照画像インデックス(zeroIdx)を0に設定することができる。このとき、m(numMergeCand numInputMergeCand)番目のゼロマージ候補を導出することができる。そして、参照画像数(numRefIdx)をL0リスト内の可用参照画像数(num_ref_idx_l0_active_minus1+1)に設定することができる。
符号化器/復号器は、ゼロマージ候補を次のように導出し、numMergeCandを1だけ増加させることができる(S2801)。
m番目のゼロマージ候補のL0参照画像インデックス(refIdxL0zeroCandm)=ゼロマージ候補の参照画像インデックス(zeroIdx)
m番目のゼロマージ候補のL1参照画像インデックス(refIdxL1zeroCandm)=1
m番目のゼロマージ候補のL0予測リスト活用フラグ(predFlagL0zeroCandm)=1
m番目のゼロマージ候補のL1予測リスト活用フラグ(predFlagL1zeroCandm)=0
m番目のゼロマージ候補のL0動きベクトルのx成分(mvL0zeroCandm[0])=0
m番目のゼロマージ候補のL0動きベクトルのy成分(mvL0zeroCandm[1])=0
m番目のゼロマージ候補のL1動きベクトルのx成分(mvL1zeroCandm[0])=0
m番目のゼロマージ候補のL1動きベクトルのy成分(mvL1zeroCandm[1])=0
符号化器/復号器は、参照画像カウント(refCnt)がnumRefIdx−1と同じである場合には、zeroIdxを0に設定し、そうでない場合には、refCntとzeroIdxをそれぞれ1だけ増加させることができる(S2802)。
また、符号化器/復号器は、numMergeCandがMaxNumMergeCandと同じである場合には(S2803−はい)、ゼロマージ候補導出ステップを終了し、そうでない場合には、S2801ステップに戻ることができる(S2803−いいえ)。
図26のゼロマージ候補導出方法は、スライスタイプに応じて双予測ゼロマージ候補の導出またはL0単予測ゼロマージ候補の導出を行うので、スライスタイプに応じて2種類の実現方法が必要であった。
図28のゼロマージ候補導出方法は、スライスタイプに応じて双予測ゼロマージ候補の導出或いはL0単予測ゼロマージ候補の導出を行わず、スライスタイプに関係なく、L0単予測ゼロマージ候補を導出することにより、ハードウェアロジックが簡略になり、ゼロマージ候補導出ステップの実行時に必要なサイクル時間も減少させることができる。また、双予測ゼロマージ候補ではなく、L0単予測ゼロマージ候補が現在ブロックの動き情報として決定される場合、双予測動き補償ではなく、単予測動き補償が行われるので、動き補償時のメモリアクセス帯域幅が減少することができる。
一例として、Pスライスではない場合、L0単予測ゼロマージ候補が導出されてマージ候補リストに追加できる。
符号化器/復号器は、マージ候補リストにゼロマージ候補を除いた他のマージ候補をマージ候補リストに追加した後、L0単予測ゼロマージ候補を追加することができる。また、符号化器/復号器は、マージ候補リストをL0単予測ゼロマージ候補で初期化(initialization)した後、初期化されたマージ候補リストに空間マージ候補、時間マージ候補、組み合わせマージ候補、ゼロマージ候補、追加的なマージ候補などを追加することもできる。
図29はCTUでマージ候補リストを導出し共有する実施形態を説明するための図である。所定のブロックサイズまたは所定のブロック深さよりも小さいサイズまたは深い深さのブロックで、マージ候補リストは共有できる。ここで、所定のブロックサイズまたは所定のブロック深さは、動き補償に関する情報がエントロピー符号化/復号されるブロックのサイズまたはブロック深さであり得る。また、所定のブロックサイズまたは所定のブロック深さは、符号化器でエントロピー符号化されて復号器でエントロピー復号される情報であってもよく、符号化器/復号器に共通して予め設定された値であってもよい。
図29を参照すると、前記所定のブロックサイズが128x128である場合には、128x128よりも小さいサイズを有するブロック(図29の斜線領域のブロック)は、マージ候補リストを共有することができる。
次に、生成されたマージ候補リストを用いて、現在ブロックの動き情報を決定するステップについて、具体的に説明する(S1202、S1303)。
符号化器は、動き推定(motion estimation)を介してマージ候補リスト内のマージ候補のうち、動き補償に用いられるマージ候補を決定し、決定されたマージ候補を指し示すマージ候補インデックス(merge_idx)をビットストリームに符号化することができる。
一方、符号化器は、予測ブロックを生成するために、上述したマージ候補インデックスに基づいてマージ候補リストからマージ候補を選択して現在ブロックの動き情報を決定することができる。ここで、決定された動き情報に基づいて動き補償(motion compensation)を行って現在ブロックの予測ブロックを生成することができる。
一例として、マージ候補インデックスが3と選択された場合、マージ候補リストにおける、マージ候補インデックス3が指し示すマージ候補が動き情報として決定され、符号化対象ブロックの動き補償に使用できる。
復号器は、ビットストリーム内のマージ候補インデックスを復号して、マージ候補インデックスが指し示すマージ候補リスト内のマージ候補を決定することができる。決定されたマージ候補は、現在ブロックの動き情報として決定することができる。決定された動き情報は、現在ブロックの動き補償に使用される。このとき、動き補償はインター予測(inter prediction)の意味と同一であり得る。
一例として、マージ候補インデックスが2である場合、マージ候補リストにおける、マージ候補インデックス2が指し示すマージ候補が動き情報として決定され、復号対象ブロックの動き補償に使用できる。
また、現在ブロックの動き情報に該当する情報のうちの少なくとも一つの値を変更して、現在ブロックのインター予測、或いは動き補償に動き情報を使用することができる。ここで、動き情報に該当する情報のうち、変更される値は、動きベクトルのx成分、動きベクトルのy成分及び参照画像インデックスの少なくとも一つであり得る。また、動き情報に該当する情報のうちの少なくとも一つの値を変更するとき、歪み計算方式(SAD、SSE、MSEなど)を用いて最小の歪みを示すように、動き情報に該当する情報のうちの少なくとも一つの値を変更することができる。
次に、決定された動き情報を用いて、現在ブロックの動き補償を行うステップについて具体的に説明する(S1203、S1304)。
符号化器及び復号器では、決定されたマージ候補の動き情報を用いてインター予測或いは動き補償を行うことができる。ここで、現在ブロック(符号化/復号対象ブロック)は、決定されたマージ候補の動き情報を有することができる。
現在ブロックは、予測方向に応じて最小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(または現在ブロックが2つの動き情報を使用可能な場合)、PRED_TRI(または現在ブロックが3つの動き情報を使用可能な場合)及びPRED_QUAD(または現在ブロックが4つの動き情報を使用可能な場合)であり、各参照画像リストに対する予測方向が単方向である場合には、現在ブロックの最終予測ブロックを生成する例を示す。
前記数式3乃至数式5において、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参照画像リストは、L0参照画像リスト、L1参照画像リスト、L2参照画像リスト及びL3参照画像リストのうちの少なくとも一つであり得る。
所定の参照画像リストに対する予測方向が複数方向である場合でも、予測ブロックの加重和に基づいて、現在ブロックに対する最終予測ブロックを取得することができる。このとき、同一の参照画像リストから導出された予測ブロックに適用される重みは、同一の値を持ってもよく、互いに異なる値を持ってもよい。
複数の予測ブロックに対する重み(WF_LX)及びオフセット(OFFSET_LX)のうちの少なくとも一つは、エントロピー符号化/復号される符号化パラメータであり得る。
他の例として、重み及びオフセットは、現在ブロック近傍の符号化/復号された近傍ブロックから導出されてもよい。ここで、現在ブロックの近傍ブロックは、現在ブロックの空間マージ候補を導出するために用いられるブロック、又は現在ブロックの時間マージ候補を導出するために用いられるブロックのうちの少なくとも一つを含むことができる。
他の例として、重み及びオフセットは、現在画像と各参照画像の表示順(POC)に基づいて決定されてもよい。この場合、現在画像と参照画像間の距離が遠いほど、重み又はオフセットを小さい値に設定し、現在画像と参照画像間の距離が近いほど、重み又はオフセットを大きな値に設定することができる。一例として、現在画像とL0参照画像とのPOCの差が2である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を1/3に設定するのに対し、現在画像とL0参照画像とのPOCの差が1である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を2/3に設定することができる。上記に例示したように、重み又はオフセット値は、現在画像と参照画像間の表示順の差と反比例の関係を持つことができる。他の例として、重み又はオフセット値は、現在画像と参照画像間の表示順の差と比例の関係を持つようにすることも可能である。
他の例として、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、重み又はオフセットのうちの少なくとも一つをエントロピー符号化/復号することもできる。また、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、予測ブロックの加重和を計算することもできる。
複数の予測ブロックの加重和は、予測ブロック内の一部領域でのみ適用できる。ここで、一部の領域は、予測ブロック内の境界に該当する領域であり得る。上述したように、一部の領域にのみ加重和を適用するために、予測ブロックの下位ブロック(sub−block)単位で加重和を行うことができる。
次に、動き補償に関する情報をエントロピー符号化/復号する処理について詳細に説明する(S1204、S1301)。
図30及び図31は動き補償に関する情報の構文(syntax)を例示する図である。図30は符号化ユニット(coding_unit)における動き補償に関する情報の構文の一実施形態を示し、図31は予測ユニット(prediction_unit)における動き補償に関する情報の構文の一実施形態を示す。
符号化装置は、動き補償に関する情報をビットストリームを介してエントロピー符号化し、復号装置は、ビットストリームに含まれている動き補償に関する情報をエントロピー復号することができる。ここで、エントロピー符号化/復号される動き補償に関する情報は、スキップモード使用有無情報(cu_skip_flag)、マージモード使用有無情報(merge_flag)、マージインデックス情報(merge_index)、インター予測インジケータ(Inter Prediction Indicator)(inter_pred_idc)、重み値(wf_l0、wf_l1、wf_l2、wf_l3)及びオフセット値(offset_l0、offset_l1、offset_l2、offset_l3)のうちの少なくとも一つを含むことができる。前記動き補償に関する情報は、CTU、符号化ブロック及び予測ブロックの少なくとも一つの単位でエントロピー符号化/復号できる。
スキップモード使用有無情報(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を含む正の整数を意味することができる。
マージモードインデックス情報に基づいて、マージモードを用いて現在ブロックの動き補償を行うことができる。
インター予測インジケータは、現在ブロックのインター予測で符号化/復号される場合、現在ブロックのインター予測方向または予測方向の個数のうちの少なくとも一つを意味することができる。一例として、インター予測インジケータは、一方向予測を指示し、或いは、双方向予測、三方向予測又は四方向予測などの複数方向予測を指示することができる。インター予測インジケータは、現在ブロックが予測ブロックを生成するときに使用する参照画像の数を意味することができる。又は、一つの参照画像が複数の方向予測のために利用されることもある。この場合、M個の参照画像を用いて、N(N>M)個の方向予測を行うことができる。インター予測インジケータは、現在ブロックに対するインター予測又は動き補償を行うときに使用される予測ブロックの数を意味することもできる。
このように、インター予測インジケータに応じて、現在ブロックの予測ブロックを生成するときに使用される参照画像の数、現在ブロックのインター予測又は動き補償を行うときに使用される予測ブロックの数、又は現在ブロックが利用可能な参照画像リストの個数などが決定できる。ここで、参照画像リストの個数Nは、正の整数であって、1、2、3、4又はそれ以上の値を持つことができる。例えば、参照画像リストは、L0、L1、L2及びL3などを含むことができる。現在ブロックは、一つ以上の参照画像リストを用いて動き補償を行うことができる。
一例として、現在ブロックは、少なくとも一つの参照画像リストを用いて、少なくとも一つの予測ブロックを生成して、現在ブロックの動き補償を行うことができる。一例として、参照画像リストL0を用いて一つ又は一つ以上の予測ブロックを生成して動き補償を行うか、或いは、参照画像リストL0及びL1を用いて一つ又は一つ以上の予測ブロックを生成して動き補償を行うことができる。又は、参照画像リストL0、L1及びL2を用いて一つ、一つ以上の予測ブロック又は最大N個の予測ブロック(ここで、Nは3又は2以上の正の整数)を生成して動き補償を行うか、或いは、参照画像リストL0、L1、L2及びL3を用いて、一つ、一つ以上の予測ブロック又は最大N個の予測ブロック(ここで、Nは4又は2以上の正の整数)を用いて現在ブロックに対する動き補償を行うことができる。
参照画像インジケータは、現在ブロックの予測方向の数に応じて、一方向(PRED_LX)、双方向(PRED_BI)、三方向(PRED_TRI)、四方向(PRED_QUAD)又はそれ以上の方向性を指示することができる。
一例として、各参照画像リストに対して一方向予測が行われることを仮定する場合、インター予測インジケータPRED_LXは、参照画像リストLX(Xは0、1、2又は3などの整数)を用いて一つの予測ブロックを生成し、生成された一つの予測ブロックを用いてインター予測又は動き補償を行うことを意味することができる。インター予測インジケータPRED_BIは、L0、L1、L2及びL3参照画像リストを用いて、2つの予測ブロックを生成し、生成された2つの予測ブロックを用いて、インター予測又は動き補償を行うことを意味することができる。インター予測インジケータPRED_TRIは、L0、L1、L2及びL3参照画像リストのうちの少なくとも一つを用いて3つの予測ブロックを生成し、生成された3つの予測ブロックを用いてインター予測又は動き補償を行うことを意味することができる。インター予測インジケータPRED_QUADは、L0、L1、L2及びL3参照画像リストのうちの少なくとも一つを用いて4つの予測ブロックを生成し、生成された4つの予測ブロックを用いてインター予測又は動き補償を行うことを意味することができる。すなわち、現在ブロックのインター予測の実行に用いられる予測ブロックの数の合計がインター予測インジケータに設定できる。
参照画像リストに対して複数方向予測が行われる場合、インター予測インジケータPRED_BIは、L0参照画像リストに対する双方向予測が行われることを意味し、インター予測インジケータPRED_TRIは、L0参照画像リストに対して三方向予測が行われること、L0参照画像リストに対して一方向予測が行われ、L1参照画像リストに対して双方向予測が行われること、又はL0参照画像リストに対して双方向予測が行われ、L1参照画像リストに対して一方向予測が行われることを意味することができる。
このように、インター予測インジケータは、少なくとも一つの参照画像リストから最小1個から最大N個(ここで、Nはインター予測インジケータによって指示される予測方向の数)の予測ブロックを生成して動き補償を行うことを意味し、或いは、N個の参照画像から最小1個から最大N個の予測ブロックを生成し、生成された予測ブロックを用いて現在ブロックに対する動き補償を行うことを意味することができる。
例えば、インター予測インジケータPRED_TRIは、L0、L1、L2、L3参照画像リストのうちの少なくとも一つを用いて3つの予測ブロックを生成して現在ブロックのインター予測或いは動き補償を行うことを意味するか、或いは、L0、L1、L2、L3参照画像リストのうちの少なくとも3つを用いて3つの予測ブロックを生成して現在ブロックのインター予測或いは動き補償を行うことを意味することができる。また、PRED_QUADは、L0、L1、L2、L3参照画像リストのうちの少なくとも一つを用いて4つの予測ブロックを生成して現在ブロックのインター予測或いは動き補償を行うことを意味するか、或いは、L0、L1、L2、L3参照画像リストのうちの少なくとも4つを用いて4つの予測ブロックを生成して現在ブロックのインター予測或いは動き補償を行うインター予測インジケータを意味することができる。
インター予測インジケータに応じて利用可能なインター予測方向が決定でき、現在ブロックのサイズ及び/又は形状に基づいて前記利用可能なインター予測方向の全部又は一部が選択的に利用されてもよい。
予測リスト活用フラグ(prediction list utilization flag)は、該当参照画像リストを用いて予測ブロックを生成するか否かを示す。
一例として、予測リスト活用フラグが、第1の値である1を指し示す場合には、当該参照画像リストを用いて予測ブロックを生成することができることを示し、第2の値である0を指し示す場合には、当該参照画像リストを用いて予測ブロックを生成しないことを示すことができる。ここで、予測リスト活用フラグの第1の値は0、第2の値は1に設定されてもよい。
つまり、予測リスト活用フラグが第1の値を指し示すとき、当該参照画像リストに相応する動き情報を用いて現在ブロックの予測ブロックを生成することができる。
一方、予測リスト活用フラグは、インター予測インジケータをベースに設定できる。一例として、インター予測インジケータがPRED_LX、PRED_BI、PRED_TRIまたはPRED_QUADを指し示す場合には、予測リスト活用フラグpredFlagLXは、第1の値である1に設定できる。もし、インター予測インジケータがPRED_LN(NはXではなく、正の整数)である場合には、予測リスト活用フラグpredFlagLXは、第2の値を0に設定できる。
また、インター予測インジケータは、予測リスト活用フラグに基づいて設定できる。一例として、予測リスト活用フラグpredFlagL0とpredFlagL1が、第1の値である1を指し示す場合には、インター予測インジケータをPRED_BIに設定することができる。一例として、予測リスト活用フラグpredFlagL0だけ第1の値である1を指し示す場合には、インター予測インジケータをPRED_L0に設定することができる。
現在ブロックに対する動き補償の際に2つ以上の予測ブロックが生成された場合、各予測ブロックに対する加重和(weighted sum)を介して、現在ブロックに対する最終予測ブロックが生成できる。加重和演算の際に、各予測ブロックに対して重み及びオフセットのうちの少なくとも一つが適用できる。重み(重み付け係数(weighted factor))又はオフセット(offset)などのように加重和演算に用いられる加重和ファクターは、参照画像リスト、参照画像、動きベクトル候補インデックス、動きベクトル差分、動きベクトル、スキップモード使用有無情報、マージモード使用有無情報、マージインデックス情報のうちの少なくとも一つの個数だけエントロピー符号化/復号できる。また、各予測ブロックの加重和ファクターは、インター予測インジケータに基づいてエントロピー符号化/復号できる。ここで、加重和ファクターは、重み及びオフセットのうちの少なくとも一つを含むことができる。
加重和ファクターは、符号化装置及び復号装置で予め定義された集合のいずれかを特定するインデックス情報によって導出されることも可能である。この場合、重み及びオフセットのうちの少なくとも一つを特定するためのインデックス情報がエントロピー符号化/復号できる。符号化器及び復号器で予め定義された集合は、重みとオフセットに対してそれぞれ定義できる。予め定められた集合は、一つまたはそれ以上の重み候補者またはオフセット候補者を含むことができる。また、重みとオフセットとのマッピング関係を規定するテーブルが利用されることもある。この場合、一つのインデックス情報を用いて前記テーブルから予測ブロックに対する重み値とオフセット値を取得することができる。エントロピー符号化/復号される重みに対するインデックス情報毎に、これにマッピングされるオフセットに対するインデックス情報がエントロピー符号化/復号されることも可能である。
加重和ファクターに関連する情報は、ブロック単位でエントロピー符号化/復号されてもよく、上位レベルでエントロピー符号化/復号されてもよい。一例として、重み又はオフセットは、CTU、CU又はPUなどのブロック単位でエントロピー符号化/復号されるか、或いは、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、適応パラメータセット(Adaptation Parameter Set)又はスライスヘッダ(Slice Header)などの上位レベルでエントロピー符号化/復号できる。
加重和ファクターは、加重和ファクターと加重和ファクター予測値との差分値を示す加重和ファクター差分値に基づいてエントロピー符号化/復号されることも可能である。一例として、重み予測値と重み差分値をエントロピー符号化/復号し、或いはオフセット予測値とオフセット差分値をエントロピー符号化/復号することができる。ここで、重み差分値は重みと重み予測値との差分値を示し、オフセット差分値はオフセットとオフセット予測値との差分値を示すことができる。
このとき、加重和ファクター差分値は、ブロック単位でエントロピー符号化/復号され、加重和ファクター予測値は、上位レベルでエントロピー符号化/復号され得る。重み予測値又はオフセット予測値などの加重和ファクター予測値がピクチャ又はスライス単位でエントロピー符号化/復号される場合、ピクチャ又はスライスに含まれているブロックは共通の加重和ファクター予測値を用いることができる。
加重和ファクター予測値は、画像、スライス或いはタイル内の特定の領域又はCTU又はCU内の特定の領域を介して導出されることも可能である。一例として、画像、スライス、タイル、CTU又はCU内の特定の領域の重み値又はオフセット値を重み予測値又はオフセット予測値として使用することができる。この場合、加重和ファクター予測値のエントロピー符号化/復号は省略し、加重和ファクター差分値のみをエントロピー符号化/復号することができる。
又は、加重和ファクター予測値は、現在ブロックの近傍に符号化/復号された近傍ブロックから導出されることも可能である。一例として、現在ブロックの近傍に符号化/復号された近傍ブロックの重み値又はオフセット値を現在ブロックの重み予測値又はオフセット予測値として設定することができる。ここで、現在ブロックの近傍ブロックは、空間マージ候補の導出に用いられるブロック、及び時間マージ候補の導出に用いられるブロックのうちの少なくとも一つを含むことができる。
重み予測値及び重み差分値を用いる場合、復号装置は、重み予測値及び重み差分値を合わせて予測ブロックに対する重み値を算出することができる。また、オフセット予測値及びオフセット差分値を用いる場合、復号装置は、オフセット予測値及びオフセット差分値を合わせて、予測ブロックに対するオフセット値を算出することができる。
加重和ファクター或いは加重和ファクターの差分値は、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいてエントロピー符号化/復号できる。
現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて加重和ファクター、加重和ファクターの予測値或いは加重和ファクターの差分値を、現在ブロックの加重和ファクター、加重和ファクターの予測値或いは加重和ファクターの差分値として導出することができる。
現在ブロックの加重和ファクターに関する情報をエントロピー符号化/復号する代わりに、現在ブロックの近傍に符号化/復号されたブロックの加重和ファクターを、現在ブロックの加重和ファクターとして用いることも可能である。一例として、現在ブロックの重みまたはオフセットは、現在ブロックの近傍に符号化/復号された近傍ブロックの重みまたはオフセットと同一の値に設定することができる。
現在ブロックは、加重和ファクターのうちの少なくとも一つを用いて動き補償を行うか、或いは導出された加重和ファクターのうちの少なくとも一つを用いて動き補償を行うことができる。
前記加重和ファクターは、動き補償に関する情報に含まれ得る。
上述した動き補償に関する情報のうちの少なくとも一つは、CTUまたはCTUの下位ユニット(sub−CTU)のうちの少なくとも一つの単位でエントロピー符号化/復号できる。ここで、CTUの下位ユニットは、CU及びPUのうちの少なくとも一つの単位を含むことができる。CTUの下位ユニットのブロックは、正方形(square)または非正方形(non−square)の形態であり得る。後述する動き補償に関する情報は、便宜上、動き補償に関する情報のうちの少なくとも一つを意味することができる。
CTUの動き補償に関する情報がエントロピー符号化/復号される場合、動き補償に関する情報の値に応じて、CTUに存在する全部または一部のブロックで当該動き補償に関する情報を用いて動き補償を行うことができる。
CTUまたはCTUの下位ユニットで動き補償に関する情報をエントロピー符号化/復号される場合、所定のブロックサイズまたは所定のブロック深さのうちの少なくとも一つに基づいて、動き補償に関する情報をエントロピー符号化/復号することができる。
ここで、所定のブロックサイズまたは所定のブロック深さに関する情報は、さらにエントロピー符号化/復号できる。または、所定のブロックサイズまたは所定のブロック深さに関する情報は、符号化器及び復号器で予め設定された値、符号化パラメータのうちの少なくとも一つまたは他の構文要素の値のうちの少なくとも一つに基づいて決定されることもある。
所定のブロックサイズと同じかそれより大きいブロックサイズを有するブロックでのみ、動き補償に関する情報がエントロピー符号化/復号され、所定のブロックサイズよりも小さいブロックサイズを有するブロックでは、動き補償に関する情報がエントロピー符号化/復号されないことがある。この場合には、所定のブロックサイズと同じかそれより大きいブロックサイズを有するブロック内の下位ブロックは、所定のブロックサイズと同じかそれより大きいブロックサイズを有するブロックでエントロピー符号化/復号された動き補償に関する情報に基づいて動き補償を実行することができる。つまり、所定のブロックサイズと同じかそれより大きいブロックサイズを有するブロック内の下位ブロックは、動きベクトル候補、動きベクトル候補リスト、マージ候補、マージ候補リストなどを含む動き補償に関する情報が共有できる。
所定のブロック深さと同じかそれより浅いブロック深さを有するブロックのみで、動き補償に関する情報がエントロピー符号化/復号され、所定のブロック深さよりも深いブロック深さを有するブロックでは、動き補償に関する情報がエントロピー符号化/復号されないことがある。この場合には、所定のブロック深さと同じかそれより浅いブロック深さを有するブロック内の下位ブロックは、所定のブロック深さと同じかそれよりも浅いブロック深さを有するブロックでエントロピー符号化/復号される動き補償に関する情報に基づいて動き補償を行うことができる。つまり、所定のブロック深さと同じかそれより浅いブロック深さを有するブロック内の下位ブロックは、動きベクトル候補、動きベクトル候補リスト、マージ候補、マージ候補リストなどを含む動き補償に関する情報が共有できる。
一例として、CTUのブロックサイズが64x64である、サイズ32x32のCTU下位ユニットで動き補償に関する情報がエントロピー符号化/復号される場合には、32x32ブロックに属し、32x32ブロック単位よりもサイズが小さいブロックでは、32x32ブロック単位でエントロピー符号化/復号される動き補償に関する情報に基づいて動き補償を行うことができる。
他の例として、CTUのブロックサイズが128x128である、サイズ16x16のCTU下位ユニットで動き補償に関する情報がエントロピー符号化/復号される場合には、16x16ブロックに属し、16x16ブロック単位と同じかそれより小さいサイズのブロックでは、16x16ブロック単位でエントロピー符号化/復号される動き補償に関する情報に基づいて動き補償を行うことができる。
他の例として、CTUのブロック深さが0であり且つブロック深さが1であるCTU下位ユニットで動き補償に関する情報がエントロピー符号化/復号される場合には、ブロック深さ1に属し、ブロック深さ1よりもさらに深いブロック深さを有するブロックでは、ブロック深さ1でエントロピー符号化/復号される動き補償に関する情報に基づいて動き補償を行うことができる。
たとえば、CTUのブロック深さが0であり且つブロック深さが2であるCTU下位ユニットで動き補償に関する情報のうちの少なくとも一つがエントロピー符号化/復号される場合には、ブロック深さ2に属し、ブロック深さ2と同じかそれよりもさらに深いブロック深さを有するブロックでは、ブロック深さ2でエントロピー符号化/復号される動き補償に関する情報に基づいて動き補償を行うことができる。
ここで、ブロック深さの値は、0を含む正の整数を持つことができる。ブロック深さの値が増加するほど深さが深いことを意味することができ、ブロック深さの値が減少するほど深さが浅いことを意味することができる。したがって、ブロック深さの値が増加するほど、ブロックサイズは小さくなることができ、ブロック深さの値が減少するほど、ブロックサイズは増加することができる。また、所定のブロック深さの下位は、所定のブロック深さよりもさらに深い深さを意味することができ、所定のブロック深さの下位は、所定のブロック深さに該当するブロック内でさらに深い深さを意味することができる。
動き補償に関する情報は、ブロック単位でエントロピー符号化/復号されることもあり、上位レベルでエントロピー符号化/復号されることもある。一例として、動き補償に関する情報は、CTU、CUまたはPUなどのブロック単位でエントロピー符号化/復号されるか、ビデオのパラメータセット(Video Parameter Set)、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、適応パラメータセット(Adaptation Parameter Set)またはスライスヘッダ(Slice Header)などの上位レベルでエントロピー符号化/復号できる。
動き補償に関する情報は、動き補償に関する情報と動き補償に関する情報予測値との間の差分値を示す動き補償に関する情報差分値に基づいてエントロピー符号化/復号されることもできる。動き補償に関する情報の一つであるインター予測インジケータを例として挙げると、インター予測インジケータ予測値とインター予測インジケータ差分値をエントロピー符号化/復号することができる。このとき、インター予測インジケータ差分値は、ブロック単位でエントロピー符号化/復号され、インター予測インジケータ予測値は、上位レベルでエントロピー符号化/復号され得る。インター予測インジケータ予測値などの動き補償に関する情報予測値がピクチャまたはスライス単位でエントロピー符号化/復号される場合には、ピクチャまたはスライスに含まれているブロックは、共通の動き補償に関する情報予測値を用いることができる。
動き補償に関する情報予測値は、画像、スライス或いはタイル内の特定の領域、またはCTUまたはCU内の特定の領域を介して導出されることもある。一例として、画像、スライス、タイル、CTUまたはCU内の特定の領域のインター予測インジケータをインター予測インジケータ予測値として使用することができる。この場合には、動き補償に関する情報予測値のエントロピー符号化/復号は省略し、動き補償に関する情報差分値のみをエントロピー符号化/復号することができる。
または、動き補償に関する情報予測値は、現在ブロックの近傍に符号化/復号された近傍ブロックから導出されることもある。一例として、現在ブロックの近傍に符号化/復号された近傍ブロックのインター予測インジケータを、現在ブロックのインター予測インジケータ予測値として設定することができる。ここで、現在ブロックの近傍ブロックは、空間マージ候補を導出するために用いられるブロックと、時間マージ候補を導出するために用いられるブロックのうちの少なくとも一つを含むことができる。また、近傍ブロックは、現在ブロックの深さと同じかそれより小さい深さを有するものであってもよい。複数の近傍ブロックがある場合には、所定の優先順位に基づいていずれか一つを選択的に用いることができる。動き補償に関する情報を予測するために用いられる近傍ブロックは、現在ブロックを基準に固定された位置を持ってもよく、現在ブロックの位置に応じた可変的位置を持ってもよい。ここで、現在ブロックの位置は、現在ブロックの属したピクチャまたはスライスを基準とする位置であってもよく、現在ブロックの属したCTU、CU、またはPUの位置を基準とする位置であってもよい。
前記マージインデックス情報は、符号化器と復号器で予め決められた集合内でインデックス情報を用いて算出できる。
動き補償に関する情報予測値及び動き補償に関する情報差分値を用いる場合には、復号装置は、動き補償に関する情報予測値と動き補償に関する情報差分値を合わせて予測ブロックに対する動き補償に関する情報値を算出することができる。
動き補償に関する情報または動き補償に関する情報の差分値は、現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいてエントロピー符号化/復号できる。
現在ブロック、近傍ブロック、または対応位置ブロックの符号化パラメータのうちの少なくとも一つに基づいて、動き補償に関する情報、動き補償に関する情報の予測値、或いは動き補償に関する情報の差分値を、現在ブロックの動き補償に関する情報、動き補償に関する情報の予測値、あるいは動き補償に関する情報の差分値として導出することができる。
現在ブロックの動き補償に関する情報をエントロピー符号化/復号する代わりに、現在ブロックの近傍に符号化/復号されたブロックの動き補償に関する情報を、現在ブロックの動き補償に関する情報として用いることも可能である。一例として、現在ブロックのインター予測インジケータは、現在ブロックの近傍に符号化/復号された近傍ブロックのインター予測インジケータと同一の値に設定できる。
また、動き補償に関する情報のうちの少なくとも一つは、符号化器と復号器で予め設定された固定値を持つことができる。前記予め設定された固定値を、動き補償に関する情報のうちの少なくとも一つの値に対する値として決定することができ、特定のブロックサイズの内部でより小さいブロックサイズを持つブロックでは、前記予め設定された固定値を持つ動き補償に関する情報のうちの少なくとも一つを共有することができる。同様に、特定のブロックサイズの下位でより深いブロック深さを有するブロックでは、前記予め設定された固定値を持つ動き補償に関する情報のうちの少なくとも一つを共有することができる。ここで、固定値は、0を含む正の整数値であるか、(0,0)を含む整数ベクトル値であり得る。
ここで、動き補償に関する情報のうちの少なくとも一つを共有するというのは、ブロックで動き補償に関する情報のうちの少なくとも一つの情報に対して互いに同一の値を持つことができるか、ブロックで動き補償に関する情報のうちの少なくとも一つの互いに同一の値を用いて動き補償を行うことを意味することができる。
動き補償に関する情報は、動きベクトル、動きベクトル候補、動きベクトル候補インデックス、動きベクトル差分値、動きベクトル予測値、スキップモード使用有無情報(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)情報のうちの少なくとも一つをさらに含むことができる。
動きベクトル解像度情報は、動きベクトル及び動きベクトル差分値のうちの少なくとも一つに対して特定の解像度を使用するか否かを示す情報であり得る。ここで、解像度は、精度(precision)を意味することができる。また、特定の解像度は、整数−画素(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つのブロックを多数の下位ブロックに分割し、代表動きベクトルを用いて分割された下位ブロックの動きベクトルを算出するモデルであり得る。
復号器動きベクトル導出情報は、動き補償に必要な動きベクトルを復号器で導出して使用するか否かを示す情報であり得る。復号器動きベクトル導出情報に基づいて、動きベクトルに関する情報はエントロピー符号化/復号されないことがある。そして、復号器動きベクトル導出情報が復号器で動きベクトルを導出して使用することを示す場合、マージモードに関する情報がエントロピー符号化/復号できる。つまり、復号器動きベクトル導出情報は、復号器でマージモードを用いるか否かを示すことができる。
双方向光学流れ情報は、ピクセル単位または下位ブロック単位で動きベクトルを補正して動き補償を行うか否かを示す情報であり得る。双方向光学流れ情報に基づいて、ピクセル単位または下位ブロック単位の動きベクトルはエントロピー符号化/復号されないことがある。ここで、動きベクトル補正は、ブロック単位の動きベクトルをピクセル単位または下位ブロック単位の動きベクトル値に変更することであり得る。
現在ブロックは動き補償に関する情報のうちの少なくとも一つを用いて動き補償を行い、動き補償に関する情報のうちの少なくとも一つをエントロピー符号化/復号することができる。
図32は所定のブロックサイズよりも小さいブロックでマージモードが用いられる一実施形態を説明するための図である。
図32を参照すると、所定のブロックサイズが8x8である場合、8x8よりも小さいブロック(斜線付きブロック)は、マージモードを使用することができる。
一方、ブロック間のサイズを比較するとき、所定のブロックサイズよりも小さいというのは、ブロック内に存在するサンプルの総和が小さいことを意味することができる。一例として、32x16ブロックは、512個のサンプルを持つので、1024個のサンプルを持つ32x32ブロックよりもサイズが小さく、4x16ブロックは、64個のサンプルを持つので、8x8ブロックとサイズが同じであるといえる。
動き補償に関連した情報をエントロピー符号化/復号する場合、切り捨てられたライス(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)を決定することができる。
また、動き補償に関する情報をエントロピー符号化/復号するとき、近傍ブロックの動き補償に関する情報、前に符号化/復号された動き補償に関する情報、現在ブロックの深さに関する情報、及び現在ブロックのサイズに関する情報のうちの少なくとも一つを、現在ブロックの動き補償に関する情報に対する予測値として用いて、エントロピー符号化/復号を行うこともできる。
輝度及び色差信号それぞれに対して前記符号化/復号処理を行うことができる。例えば、前記符号化/復号処理で、インター予測インジケータの取得、マージ候補リストの生成、動き情報の導出及び動き補償の実行のうちの少なくとも一つの方法が、輝度信号及び色差信号に対して異ならせて適用できる。
輝度及び色差信号に対する前記符号化/復号処理を同様に行うことができる。例えば、輝度信号に対して適用した前記符号化/復号処理でインター予測インジケータ、マージ候補リスト、マージ候補、参照画像及び参照画像リストのうちの少なくとも一つを色差信号に同様に適用することができる。
これらの方法は、符号化器及び復号器で同様の方法で行うことができる。例えば、前記符号化/復号処理で、インター予測インジケータの取得、マージ候補リストの生成、動き情報の導出及び動き補償の実行のうちの少なくとも一つの方法が符号化器及び復号器で同様に適用できる。また、これらの方法の適用順序は符号化器と復号器で互いに異なってもよい。
上述した本発明の実施形態は、符号化ブロック、予測ブロック、ブロック及びユニットのうちの少なくとも一つの大きさに応じて適用できる。ここでのサイズは、これらの実施形態が適用されるために、最小サイズ及び/又は最大サイズと定義されることもあり、前記実施形態が適用される固定サイズと定義されることもある。また、これらの実施形態は、第1の大きさでは第1実施形態が適用でき、第2の大きさでは第2実施形態が適用できる。すなわち、これらの実施形態は、大きさに応じて複合的に適用できる。また、上述した本発明の実施形態は、最小サイズ以上及び最大サイズ以下の場合にのみ適用できる。すなわち、これらの実施形態を、ブロックのサイズが一定の範囲内に含まれる場合にのみ適用可能である。
たとえば、符号化/復号対象ブロックのサイズが8x8以上である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが16x16以上である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが32x32以上である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが64x64以上である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが128x128以上である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが4x4である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが8x8以下である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが16x16以下である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが8x8以上、16x16以下である場合にのみ、前記実施形態が適用できる。たとえば、符号化/復号対象ブロックのサイズが16x16以上、64x64以下である場合にのみ、前記実施形態が適用できる。
上述した本発明の実施形態は、時間的階層(temporal layer)に応じて適用できる。これらの実施形態が適用可能な時間的階層を識別するために、別途の識別子(identifier)がシグナリングされ、該当識別子によって特定された時間的階層に対してこれらの実施形態が適用できる。ここでの識別子は、前記実施形態に適用可能な最小階層及び/又は最大階層と定義されることもあり、前記実施形態が適用される特定の階層を指し示すものと定義されることもある。
たとえば、現在画像の時間的階層が最下位階層である場合にのみ、前記実施形態が適用できる。たとえば、現在画像の時間的階層識別子が0である場合にのみ、前記実施形態が適用できる。たとえば、現在画像の時間的階層識別子が1以上である場合にのみ、前記実施形態が適用できる。たとえば、現在画像の時間的階層が最上位階層である場合にのみ、前記実施形態が適用できる。
上述した本発明の実施形態のように、参照画像リストの生成(reference picture list construction)及び参照画像リストの修正(reference picture list modification)処理に使用される参照画像セット(reference picture set)は、L0、L1、L2及びL3のうちの少なくとも一つの参照画像リストを使用することができる。
本発明の実施形態によってデブロッキングフィルタ(deblocking filter)が境界強度(boundary strength)を算出するとき、符号化/復号対象ブロックの動きベクトルを一つ以上、最大N個まで使用することができる。ここで、Nは、1以上の正の整数であって、2、3、4などを示す。
動きベクトル予測時の動きベクトルが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)単位のうちの少なくとも一つを持つときも、上述した本発明の実施形態が適用できる。また、マージモードの実行の際に、動きベクトルは前記画素単位別に選択的に使用できる。
上述した本発明の実施形態が適用されるスライスタイプ(slice type)が定義され、当該スライスタイプに応じて本発明の実施形態が適用できる。
例えば、スライスタイプがT(Tri−predictive)−sliceである場合、少なくとも3つの動きベクトルを用いて予測ブロックを生成し、少なくとも3つの予測ブロックの加重和を計算して符号化/復号対象ブロックの最終予測ブロックとして使用することができる。例えば、スライスタイプがQ(Quad−predictive)−sliceである場合、少なくとも4つの動きベクトルを用いて予測ブロックを生成し、少なくとも4つの予測ブロックの加重和を計算して符号化/復号対象ブロックの最終予測ブロックとして使用することができる。
上述した本発明の実施形態は、マージモードを用いたインター予測及び動き補償方法に適用できるのみならず、動きベクトル予測を用いたインター予測及び動き補償方法、スキップモードなどを用いたインター予測及び動き補償方法に適用できる。
上述した本発明の実施形態が適用されるブロックの形状は、正方形(square)或いは非正方形(non−square)の形状を有することができる。
以上では、図12乃至図32を参照して、本発明に係るマージモードを用いた画像符号化及び復号方法について説明した。以下、図33及び図34を参照して、本発明に係る画像復号方法、画像符号化方法、画像復号器、画像符号化器及びビットストリームについて具体的に説明する。
図33は本発明に係る画像復号方法を説明するための図である。
図33を参照すると、複数の参照画像リストそれぞれに対応するマージ候補のうちの少なくとも一つを含む現在ブロックのマージ候補リストを生成することができる(S3301)。
ここで、複数の参照画像リストそれぞれに対応するマージ候補は、参照画像リストLXの対応するLX動き情報を持つマージ候補を意味することができる。一例として、L0動き情報を持つL0マージ候補、L1動き情報を持つL1マージ候補、L2動き情報を持つL2マージ候補、L3動き情報を持つL3マージ候補などがあり得る。
一方、マージ候補リストは、現在ブロックの空間的近傍ブロックから導出される空間マージ候補、現在ブロックの対応位置ブロックから導出される時間マージ候補、空間マージ候補を変更して導出される変更された空間マージ候補、時間マージ候補を変更して導出される変更された時間マージ候補、予め定義された動き情報値を持つマージ候補のうちの少なくとも一つを含むことができる。ここで、予め定義された動き情報値を持つマージ候補はゼロマージ候補であり得る。
この場合、空間マージ候補は、現在ブロックに隣接する近傍ブロックの下位ブロックから導出できる。そして、時間マージ候補は、現在ブロックの対応位置ブロックの下位ブロックから導出できる。
一方、マージ候補リストは、空間マージ候補、時間マージ候補、変更された空間マージ候補、変更された時間マージ候補のうちの2つ以上を用いて導出される組み合わせマージ候補をさらに含むことができる。
生成されたマージ候補リストを用いて、少なくとも一つの動き情報を決定することができる(S3302)。
決定された少なくとも一つの動き情報を用いて、現在ブロックの予測ブロックを生成することができる(S3303)。
ここで、現在ブロックの予測ブロックを生成するステップ(S3303)は、現在ブロックのインター予測インジケータに応じて、複数の臨時予測ブロックを生成し、生成された複数の臨時予測ブロックに重み及びオフセットのうちの少なくとも一つを適用して現在ブロックの予測ブロックを生成することができる。
この場合、前記重み及び前記オフセットのうちの少なくとも一つは、所定のブロックサイズよりも小さいか或いは所定のブロック深さよりも深いブロックで共有できる。
一方、マージ候補リストは、所定のブロックサイズよりも小さいか或いは所定のブロック深さよりも深いブロックで共有できる。
そして、マージ候補リストは、現在ブロックが所定のブロックサイズよりも小さいか或いは所定のブロック深さよりも深い場合には、所定のブロックサイズまたは所定のブロック深さを有する現在ブロックの上位ブロックを基準に生成できる。
現在ブロックの予測ブロックは、複数のマージ候補または複数のマージ候補リストに基づいて生成された複数の予測ブロックに加重和に対する情報を適用して生成できる。
図34は本発明に係る画像符号化方法を説明するための図である。
図34を参照すると、複数の参照画像リストそれぞれに対応するマージ候補のうちの少なくとも一つを含む現在ブロックのマージ候補リストを生成することができる(S3401)。
生成されたマージ候補リストを用いて、少なくとも一つの動き情報を決定することができる(S3402)。
そして、決定された少なくとも一つの動き情報を用いて、現在ブロックの予測ブロックを生成することができる(S3403)。
本発明に係る画像復号器は、複数の参照画像リストそれぞれに対応するマージ候補のうちの少なくとも一つを含む現在ブロックのマージ候補リストを生成し、マージ候補リストを用いて、少なくとも一つの動き情報を決定し、決定された少なくとも一つの動き情報を用いて、現在ブロックの予測ブロックを生成するインター予測部を含む画像復号器であり得る。
本発明に係る画像符号化器は、複数の参照画像リストそれぞれに対応するマージ候補のうちの少なくとも一つを含む現在ブロックのマージ候補リストを生成し、マージ候補リストを用いて、少なくとも一つの動き情報を決定し、決定された少なくとも一つの動き情報を用いて、現在ブロックの予測ブロックを生成するインター予測部を含む画像符号化器であり得る。
本発明に係るビットストリームは、複数の参照画像リストそれぞれに対応するマージ候補のうちの少なくとも一つを含む現在ブロックのマージ候補リストを生成するステップと、マージ候補リストを用いて、少なくとも一つの動き情報を決定するステップ、及び決定された少なくとも一つの動き情報を用いて、現在ブロックの予測ブロックを生成するステップを含む画像符号化方法によって生成されたビットストリームであり得る。
上述した実施形態において、これらの方法は、一連のステップ又はユニットをもってフローチャートに基づいて説明されているが、本発明は、これらのステップの順序に限定されるものではなく、あるステップは、上述したのとは異なるステップ及び異なる順に又は同時に行われてもよい。また、当該技術分野における通常の知識を有する者であれば、フローチャートに示されたステップが排他的ではなく、他のステップが含まれるか、フローチャートの一つ又はそれ以上のステップが本発明の範囲に影響することなく削除できることを理解することができるだろう。
上述した実施形態は、様々な態様の例示を含む。様々な態様を示すためのすべての可能な組み合わせを記述することはできないが、当該技術分野における通常の知識を有する者は、他の組み合わせが可能であることを認識することができるだろう。よって、本発明は、以下の特許請求の範囲内に属するすべての様々な交替、修正及び変更を含むといえる。
以上説明した本発明に係る実施形態は、様々なコンピュータ構成要素を介して実行できるプログラム命令の形で実現され、コンピュータ可読の記録媒体に記録できる。前記コンピュータ可読の記録媒体は、プログラム命令、データファイル、データ構造などを単独で又は組み合わせて含むことができる。前記コンピュータ可読の記録媒体に記録されるプログラム命令は、本発明のために特別に設計及び構成されたもの、又はコンピュータソフトウェア分野の当業者に公知されて使用可能なものである。コンピュータ可読の記録媒体の例には、ハードディスク、フロッピーディスク(登録商標)及び磁気テープなどの磁気媒体、CD−ROM、DVDなどの光記録媒体、フロプティカルディスク(floptical disk)などの磁気−光媒体(magneto−optical media)、及びROM、RAM、フラッシュメモリなどのプログラム命令を保存し実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行できる高級言語コードも含まれる。前記ハードウェア装置は、本発明に係る処理を行うために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
以上で、本発明が、具体的な構成要素などの特定の事項、限定された実施形態及び図面によって説明されたが、これは本発明のより全般的な理解を助けるために提供されたものに過ぎず、本発明は前記実施形態に限定されるものではない。本発明の属する技術分野における通常の知識を有する者であれば、このような記載から多様な修正及び変形を図ることができる。
よって、本発明の思想は、上述した実施形態に限定されて定められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等に又は等価的に変形したすべてのものは本発明の思想の範疇に属するというべきである。