本発明は、様々な変更を加えることができ、様々な実施形態を有することができるので、特定の実施形態を図面に例示し、詳細な説明に詳細に説明する。ただし、これは本発明を特定の実施形態について限定するものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物ないし代替物を含むものと理解されるべきである。図面において類似する参照符号は、様々な側面にわたって同一又は類似の機能を指し示す。図面における要素の形状及び大きさなどは、より明確な説明のために誇張することがある。後述する例示的実施形態についての詳細な説明は、特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が実施形態を実施し得る程度に十分に詳細に説明される。様々な実施形態は、互いに異なるが、相互に排他的である必要はないことが理解されるべきである。例えば、ここに記載されている特定の形状、構造及び特性は、一実施形態に関連して本発明の精神及び範囲を逸脱することなく、様々な実施形態に実現できる。また、それぞれの開示された実施形態内の個別構成要素の位置又は配置は実施形態の精神及び範囲を逸脱することなく変更可能であることが理解されるべきである。したがって、後述する詳細な説明は、限定的な意味として取るものではなく、例示的な実施形態の範囲は、適切に説明されるならば、それらの請求項が主張するのと均等なすべての範囲及び添付の請求項によってのみ限定される。
本発明において、用語「第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である位置又は最後の位置)に存在することができる。又は、参照画像リスト内に可変的に位置してもよく、このために、現在ピクチャの位置を示す別途の参照画像インデックスがシグナリングされてもよい。
再構築された残予ブロック及び予測ブロックは加算器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の場合は、2Nx2Nサイズの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 candidates)の個数又は種類のうちの少なくとも一つは異なり、変換候補の個数又は種類のうちの少なくとも一つはブロック(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)。その後、符号化装置は、動き補償に関する情報をエントロピー符号化することができる(S1205)。
図13を参照すると、復号装置は、符号化装置から受信した動き補償に関する情報をエントロピー復号し(S1301)、動きベクトル候補を導出することができる(S1302)。そして、復号装置は、導出された動きベクトル候補を基に動きベクトル候補リストを生成し(S1303)、生成された動きベクトル候補リストを用いて、動きベクトルを決定することができる(S1304)。その後、復号装置は、動きベクトルを用いて、動き補償を行うことができる(S1305)。
以下、図12及び図13に示した各ステップについて詳細に説明する。
まず、動きベクトル候補を導出するステップについて具体的に説明する(S1201、S1302)。
現在ブロックに対する動きベクトル候補は、空間動きベクトル候補又は時間動きベクトル候補のうちの少なくとも一つを含むことができる。
現在ブロックの空間動きベクトルは、現在ブロック近傍の再構築ブロックから導出できる。一例として、現在ブロック近傍の再構築ブロックの動きベクトルが、現在ブロックに対する空間動きベクトル候補として決定できる。
図14は現在ブロックの空間動きベクトル候補を導出する例を説明するための図である。
図14を参照すると、現在ブロックの空間動きベクトル候補は、現在ブロックXに隣接する近傍ブロックから導出できる。ここで、現在ブロックに隣接する近傍ブロックは、現在ブロックの上側に隣接するブロックB1、現在ブロックの左側に隣接するブロックA1、現在ブロックの右上隅に隣接するブロックB0、現在ブロックの左上隅に隣接するブロックB2、及び現在ブロックの左下隅に隣接するブロックA0のうちの少なくとも一つを含むことができる。
現在ブロックに隣接する近傍ブロックに動きベクトルが存在する場合、近傍ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として決定できる。近傍ブロックの動きベクトルが存在するか否か、又は近傍ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として利用可能であるか否かは、近傍ブロックが存在するか否か、又は近傍ブロックがインター予測を介して符号化されたか否かなどに基づいて判断できる。この際、近傍ブロックの動きベクトルが存在するか否か、又は近傍ブロックの動きベクトルが現在ブロックの空間動きベクトル候補として利用可能であるか否かは、所定の優先順位によって決定できる。一例として、図14に示された例において、A0、A1、B0、B1及びB2位置のブロックの順に動きベクトルの可用性が判断できる。
現在ブロックの参照ブロックと、動きベクトルを有する近傍ブロックの参照画像とが互いに異なる場合、近傍ブロックの動きベクトルをスケーリング(scaling)したものを、現在ブロックの空間動きベクトル候補として決定することができる。ここで、スケーリングは、現在画像と現在ブロックが参照する参照画像間の距離、及び現在画像と近傍ブロックが参照する参照画像間の距離のうちの少なくとも一つに基づいて行われ得る。一例として、現在画像と現在ブロックが参照する参照画像間の距離と、現在画像と近傍ブロックが参照する参照画像間の距離との差分値だけ近傍ブロックの動きベクトルをスケーリングすることにより、現在ブロックの空間動きベクトル候補が導出できる。
現在ブロックの参照画像リストと隣接ブロックの参照画像リストとが異なる場合でも、現在ブロックと隣接ブロックとの参照画像が同一であるか否かによって、近傍ブロックの動きベクトルをスケーリングするか否かを決定することができる。ここで、参照画像リストは、List0(L0)、List1(L1)、List2(L2)及びList3(L3)などの少なくとも一つを含むことができる。
要約すると、空間動きベクトル候補は、ブロックの可用性、イントラ予測モードでの符号化か否か、現在ブロックとの参照画像リストが同一であるか否か、又は現在ブロックとの参照画像が同一であるか否かのうちの少なくとも一つを考慮して導出できる。近傍ブロックが可用であり、イントラ予測モードで符号化されていない場合、現在ブロックの空間動きベクトル候補は、下記表5に例示した方法で生成できる。
前記表5に示すように、現在ブロックと近傍ブロックとの参照画像リストが互いに異なる場合でも、現在ブロックと近傍ブロックとの参照画像が同一であれば、近傍ブロックの動きベクトルを現在ブロックの空間動きベクトル候補として決定することができる。
これに対し、現在ブロックと近傍ブロックとの参照画像が互いに異なる場合には、現在ブロックの参照画像リストと近傍ブロックの参照画像リストとが同一であるか否かを問わず、近傍ブロックの動きベクトルをスケーリングすることにより、現在ブロックの空間動きベクトル候補として決定することができる。
近傍ブロックから現在ブロックの空間動きベクトル候補を導出する場合、現在ブロックと隣接ブロックとの参照画像が同一であるか否かを考慮して、現在ブロックの空間動きベクトル候補の導出順序が決定できる。一例として、現在ブロックと同じ参照画像を有する近傍ブロックから優先的に空間ベクトル候補を導出し、導出された空間動きベクトル候補の数(又は導出された動きベクトル候補の数)が所定の最大値以下である場合には、現在ブロックとは異なる参照画像を有する近傍ブロックから空間ベクトル候補を導出することもできる。
又は、現在ブロックの空間動きベクトル予測候補は、現在ブロック及び近傍ブロックが同じ参照画像を持つか否かと近傍ブロックの位置を考慮して決定されてもよい。
一例として、現在ブロックの左側に隣接する近傍ブロック(A0,A1)から、参照画像の同一性有無に応じて、現在ブロックの空間動きベクトル候補を導出した後、現在ブロックの上側に隣接する近傍ブロック(B0,B1,B2)から、参照画像の同一性有無に応じて、現在ブロックの空間動きベクトル候補を導出することができる。表6は現在ブロックの空間動きベクトル候補の導出順序を例示するものである。
現在ブロックの空間動きベクトル候補の最大個数は、符号化装置及び復号装置で同一の値を使用するように予め設定できる。又は、符号化装置は、現在ブロックの空間動きベクトル候補の最大個数を示す情報を符号化し、ビットストリームを介して復号装置へ送信することもできる。一例として、符号化装置は、現在ブロックの空間動きベクトル候補の最大個数を示す「maxNumSpatialMVPCand」を符号化し、ビットストリームを介して復号装置へ送信することができる。このとき、「maxNumSpatialMVPCand」は、0を含む正の整数に設定できる。例えば、「maxNumSpatialMVPCand」は2に設定できる。
現在ブロックの時間動きベクトル候補は、現在画像の対応位置画像(Co-located picture)に含まれている、再構築されたブロックから導出できる。ここで、対応位置画像は、現在画像の前に符号化/復号が完了した画像であって、現在画像とは異なる時間的順序を持つ画像であり得る。
図15は現在ブロックの時間動きベクトル候補を導出する例を説明するための図である。
図15を参照すると、現在画像の対応位置画像(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から現在ブロックに対する複数の時間動きベクトル候補を導出することもできる。
図15では、対応位置ブロックの左下隅に隣接するブロック又は対応位置ブロックの中心点を含むブロックから現在ブロックの時間動きベクトル候補を導出することができるものと図示した。ただし、現在ブロックの時間動きベクトル候補を導出するためのブロックの位置は、図15に示された例に限定されない。一例として、現在ブロックの時間予測候補は対応位置ブロックの上/下側境界、左/右側境界又は一つの隅に隣接するブロックから導出されることもあり、対応位置ブロック内の特定の位置を含むブロック(例えば、対応位置ブロックの隅境界に隣接するブロック)から導出されることもある。
現在ブロックの時間動きベクトル候補は、現在ブロックと対応位置ブロックの内部又は外部に位置するブロックの参照画像リスト(又は予測方向)を考慮して決定されてもよい。
一例として、現在ブロックが利用可能な参照画像リストがL0である場合(すなわち、インター予測インジケータがPRED_L0を指示する場合)、対応位置ブロックの内部又は外部に位置するブロックのうち、L0を参照画像として用いるブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。つまり、現在ブロックが利用可能な参照画像リストがLXである場合(ここで、Xは0、1、2又は3など、参照画像リストのインデックスを示す整数)、対応位置ブロックの内部又は外部に位置するブロックのうち、LXを参照画像として用いるブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。
現在ブロックが複数の参照画像リストを用いる場合にも、現在ブロックと対応位置ブロックの内部又は外部に位置するブロックの参照画像リストが同一であるか否かを考慮して、現在ブロックの時間動きベクトル候補を決定することができる。
一例として、現在ブロックが双方向予測を行う場合(すなわち、インター予測インジケータがPRED_BIである場合)、対応位置ブロックの内部又は外部に位置するブロックのうち、L0とL1を参照画像として用いるブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。現在ブロックが三方向予測を行う場合(すなわち、インター予測インジケータがPRED_TRIである場合)、対応位置ブロックの内部又は外部に位置するブロックのうち、L0、L1、L2を参照画像として用いるブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。現在ブロックが四方向予測を行う場合(すなわち、インター予測インジケータがPRED_QUADである場合)、対応位置ブロックの内部又は外部に位置するブロックのうち、L0、L1、L2及びL3を参照画像として用いるブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。
又は、現在ブロックがいずれかの参照画像を用いて複数方向予測を行うように設定された場合、外部ブロックが現在ブロックと同一の参照ピクチャリスト及び同一の予測方向を持つか否かを考慮して、現在ブロックの時間動き予測ベクトル候補を決定することができる。
一例として、現在ブロックがL0参照ピクチャリストに対して双方向予測を行う場合(すなわち、リストL0に対するインター予測インジケータがPRED_BIである場合)、対応位置ブロックの内部又は外部に位置するブロックのうち、L0を参照画像として用いながらL0に対して双方向予測を行うブロックの動きベクトルを現在ブロックの時間動きベクトル候補として導出することができる。
また、符号化パラメータのうちの少なくとも一つに基づいて、時間動きベクトル候補を導出することもできる。
時間動きベクトル候補は、導出された空間動きベクトル候補の個数が動きベクトル候補の最大個数よりも小さいときに予備的に導出できる。これにより、導出された空間動きベクトル候補の個数が動きベクトル候補の最大個数に達した場合には、時間動きベクトル候補を導出する処理が省略できる。
一例として、動きベクトル候補の最大個数が2つであり、導出された空間動きベクトル候補2つが互いに異なる値を持つ場合には、時間動きベクトル候補を導出する処理が省略できる。
他の例として、現在ブロックの時間動きベクトル候補は、時間動きベクトル候補の最大個数に基づいて導出されることも可能である。ここで、時間動きベクトル候補の最大個数は、符号化装置及び復号装置で同一の値を使用するように予め設定できる。又は、現在ブロックの時間動きベクトル候補の最大個数を示す情報は、ビットストリームを介して符号化され、復号装置へ送信されることも可能である。一例として、符号化装置は、現在ブロックの時間動きベクトル候補の最大個数を示す「maxNumTemporalMVPCand」を符号化し、ビットストリームを介して復号装置へ送信することができる。このとき、「maxNumTemporalMVPCand」は、0を含む正の整数として設定できる。例えば、「maxNumTemporalMVPCand」は1に設定できる。
現在ブロックが含まれている現在画像と現在ブロックの参照画像間の距離と、対応位置ブロックが含まれている対応位置ピクチャと対応位置ブロックの参照画像間の距離とが異なる場合、現在ブロックの時間動きベクトル候補は、対応位置ブロックの動きベクトルをスケーリングすることにより取得できる。
図16は現在ブロックの時間動きベクトル候補を導出するために、対応位置ブロックの動きベクトルをスケーリングする例を示す。
対応位置ベクトルの動きベクトルは、対応位置画像の表示順を示す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は対応位置ブロックの動きベクトル、すなわち、スケーリングされる前の時間動きベクトル予測器を示す。
次に、導出された動きベクトル候補を基に、動きベクトル候補リストを生成するステップについて説明する(S1202、S1303)。
動きベクトル候補リストを生成するステップは、動きベクトル候補を動きベクトル候補リストに対して追加或いは除去するステップ、及び組み合わせ動きベクトル候補を動きベクトル候補リストに追加するステップを含むことができる。
導出された動きベクトル候補を動きベクトル候補リストに対して追加或いは除去するステップから考察すると、符号化装置及び復号装置は、動きベクトル候補の導出順に、導出された動きベクトル候補を動きベクトル候補リストに追加することができる。
生成される動きベクトル候補リストは、現在ブロックのインター予測方向に応じて決定できる。一例として、参照画像リスト別の一つの動きベクトル候補リストが生成されることもあり、参照画像別の一つの動きベクトル候補リストが生成されることもある。複数の参照画像リスト又は複数の参照画像が一つの動きベクトル候補リストを共有することも可能である。
後述する実施形態において、動きベクトル候補リストmvpListLXは、参照画像リストL0、L1、L2及びL3に対応する動きベクトル候補リストを意味すると仮定する。例えば、参照画像リストL0に対応する動きベクトル候補リストはmvpListL0と呼ぶことができる。
動きベクトル候補リストが含む動きベクトル候補の個数は、符号化装置及び復号装置が、予め設定された同一の値を使用するように設定できる。又は、動きベクトル候補リストが含む動きベクトル候補の最大個数は、符号化装置で符号化されてビットストリームを介して復号装置へ送信されてもよい。
一例として、動きベクトル候補リストmvpListLXが含むことが可能な最大動きベクトル候補の個数maxNumMVPCandListは、0を含む正の整数であり得る。一例として、maxNumMVPCandListは、2、3、4、5、6、7、8、9、10、11、12、13、14、15又は16などの整数であり得る。maxNumMVPCandListが2であることは、mvpListLXに最大2つの動きベクトル候補が含まれ得ることを意味する。これにより、mvpListLXに最も先に追加された動きベクトル候補のインデックス値は0に設定され、次に追加された動きベクトル候補のインデックス値は1に設定され得る。最大動きベクトル候補の個数は、動きベクトル候補リストごとに定義されてもよい。すべての動きベクトル候補リストに共通して定義されてもよい。例えば、mvpListL0及びmvpListL1の最大動きベクトル候補は、互いに異なる値を持ってもよく、同一の値を持ってもよい。
図17は動きベクトル候補リストが生成される例を示す図である。
図17の(b)に示された、A1位置のブロックから空間的にスケーリングされていない空間動きベクトル候補(1,0)が導出され、図17の(a)に示されたH位置のブロックからスケーリングされた時間動きベクトル候補(2,3)が導出されたと仮定する。この場合、図17の(c)に示された例のように、A1位置のブロックから導出された空間動きベクトル候補、及びH位置のブロックから導出された時間動きベクトル候補が順次動きベクトル候補リストに含まれ得る。
導出された動きベクトル候補は、所定の順序に従って動きベクトル候補リストに含まれ得る。一例として、空間動きベクトル候補が動きベクトル候補リストに追加された後、動きベクトル候補リストに含まれている動きベクトル候補の数が最大動きベクトル候補の数よりも小さい場合には、時間動きベクトル候補が動きベクトル候補リストに追加できる。逆に、時間動きベクトル候補が空間動きベクトル候補よりも優先順位をもって動きベクトル候補リストに追加されてもよい。この場合、時間動きベクトル候補との同一か否かに応じて、空間動きベクトル候補が選択的に動きベクトル候補リストに追加されてもよい。
また、符号化装置及び復号装置は、動きベクトル候補リストに追加された順に、各動きベクトル候補を識別するためのインデックスを割り当てることができる。図17の(c)では、A1位置のブロックから導出された動きベクトル候補のインデックス値は0に設定され、H位置のブロックから導出された動きベクトル候補のインデックス値は1に設定されたことを示す。
空間動きベクトル候補及び時間動きベクトル候補以外の所定の値を持つ動きベクトルが動きベクトル候補リストに追加されてもよい。一例として、動きベクトルリストに含まれている動きベクトル候補の数が最大動きベクトル候補の数よりも小さい場合、値が0である動きベクトルを動きベクトル候補リストに追加することができる。
図18は所定の値を持つ動きベクトルを動きベクトル候補リストに追加する例を示す図である。
図18に示された例において、「numMVPCandLX」は、動きベクトル候補リストmvpListLXに含まれている動きベクトル候補の個数を示す。一例として、numMVPCandL0は、動きベクトル候補リストmvpListL0に含まれている動きベクトル候補の個数を示すことができる。
また、maxNumMVPCandは、動きベクトル候補リストmvpListLXが含むことが可能な動きベクトル候補の最大個数を示す。numMVPCandLX及びmaxNumMVPCandは、0を含む整数値を持つことができる。
numMVPCandLXがmaxNumMVPCandよりも小さい場合、動きベクトル候補リストに、所定の値を持つ動きベクトルを追加し、numMVPCandLX値を1だけ増加させることができる。このとき、動きベクトル候補リストに追加される動きベクトルは、固定された値を有し、動きベクトル候補リストに最後に追加できる。一例として、動きベクトル候補リストに追加される所定の値を持つ動きベクトルは、(0,0)値を持つゼロ動きベクトル候補であり得る。
一例として、図18の(a)に示された例のように、numMVPCandLXが1であり、maxNumMVPCandが2である場合、動きベクトル候補リストに、(0,0)値を持つ一つのゼロ動きベクトル候補を追加しながら、numMVPCandLX値を1だけ増加することができる。
maxNumMVPCandとnumMVPCandLXとの差分値が2以上である場合には、所定の値を持つ動きベクトルを、前記差分値だけ繰り返して動きベクトル候補リストに含ませることもできる。
一例として、maxNumMVPCandが2であり、numMVPCandLXが0である場合には、numMVPCandLXがmaxNumMVPCandと同一になるまで、動きベクトル候補リストに、所定の値を持つ動きベクトルを繰り返し追加することもできる。図18の(b)では、動きベクトル候補リストに、(0,0)値を持つゼロ動きベクトル候補2つが動きベクトル候補リストに追加されたものと図示された。
他の例として、所定の値の動きベクトルは、動きベクトル候補リストに、所定の値の動きベクトルと同じ動きベクトル候補が含まれていない場合にのみ、動きベクトル候補リストに含まれ得る。
一例として、numMVPCandLXがmaxNumMVPCandよりも小さく、動きベクトル候補リストに、(0,0)を持つ動きベクトルが含まれていない場合、図18の(c)に示された例のように、動きベクトル候補リストに、(0,0)を持つ動きベクトルを追加し、numMVPCandLXを1だけ増加させることができる。
図18では、動きベクトル候補リストに追加される所定の動きベクトルの値が(0,0)であることを例示したが、動きベクトル候補リストに追加される所定の動きベクトルの値は、図示された例に限定されない。また、図18の(b)に示された例のように、複数の所定の動きベクトル候補を追加する場合、動きベクトル候補リストに追加される複数の所定の動きベクトルは、異なる値を持つこともできる。
符号化装置及び復号装置は、動きベクトル候補リストに含まれている動きベクトル候補を除去して、動きベクトル候補リストのサイズを調節することもできる。
一例として、符号化装置及び復号装置は、動きベクトル候補リスト内の同じ動きベクトル候補が存在するか否かを検査することができる。もし、動きベクトル候補リストに同一の動きベクトル候補が存在する場合、同一の動きベクトル候補のうち、動きベクトル候補インデックスが最も小さい動きベクトル候補を除く残余動きベクトル候補は、動きベクトル候補リストから除去できる。
動きベクトル候補間の同一性の判断は、空間動きベクトルの間又は時間動きベクトルの間でのみ適用されてもよく、空間動きベクトルと時間動きベクトルとの間で適用されてもよい。
動きベクトル候補リストに含まれている動きベクトル候補の数が、動きベクトル候補リストが含むことが可能な最大動きベクトル候補の数よりも大きい場合には、動きベクトル候補リストに含まれている動きベクトル候補の数と最大動きベクトル候補の数との差分値だけの動きベクトル候補が動きベクトル候補リストから除去できる。
図19は動きベクトル候補リストから動きベクトル候補が除去される例を示す図である。
numMVPCandLXがmaxNumMVPCandと同じ又はそれより大きい場合には、maxNumMVPCand-1よりも大きいインデックス値を持つ動きベクトル候補を動きベクトル候補リストから除去することができる。
一例として、図19に示された例では、numMVPCandLXが3であり、maxNumMVPCandが2である場合、maxNumMVPCand-1よりも大きいインデックス2が割り当てられた動きベクトル候補(4,-3)が動きベクトル候補リストから除去されるものと図示された。
次に、組み合わせ動きベクトル候補を動きベクトル候補リストに追加するステップについて説明する。
動きベクトル候補リストに含まれている動きベクトル候補の数が最大動きベクトル候補の数よりも小さい場合、動きベクトル候補リストに含まれている動きベクトル候補のうちの少なくとも一つを用いて、組み合わせ動きベクトルを動きベクトル候補リストに追加することができる。一例として、動きベクトル候補リストに含まれている空間動きベクトル候補、時間動きベクトル候補及びゼロ動きベクトル候補のうちの少なくとも一つを用いて、組み合わせ動きベクトル候補を生成し、生成された組み合わせ動きベクトル候補を動きベクトル候補リストに含むことができる。
又は、動きベクトル候補リストに含まれていない動きベクトル候補を用いて、組み合わせ動きベクトル候補を生成することもできる。一例として、動きベクトル候補リストに含まれていないが、空間動きベクトル候補又は時間動きベクトル候補のうちの少なくとも一つを導出するのに利用することが可能なブロックから導出される動きベクトル候補を用いるか、或いは動きベクトル候補リストに含まれていない所定の値を持つ動きベクトル候補(例えば、ゼロ動きベクトル)を用いて、組み合わせ動きベクトル候補を生成することができる。
又は、符号化パラメータのうちの少なくとも一つに基づいて、組み合わせ動きベクトル候補を生成し、或いは、符号化パラメータのうちの少なくとも一つに基づいて、組み合わせ動きベクトル候補を動きベクトル候補リストに追加することもできる。
動きベクトル候補リストが含むことが可能な最大動きベクトル候補の個数は、空間動きベクトル候補、時間動きベクトル候補又は所定の値の動きベクトル候補のうちの少なくとも一つが追加された後、組み合わせ動きベクトルの数だけ又はこれよりも少ない個数だけ増加することができる。一例として、maxNumMVPCandListは、空間動きベクトル候補又は時間動きベクトル候補に対して第1の値を有し、空間動きベクトル候補又は時間動きベクトル候補が追加された後には、組み合わせ動きベクトル候補を追加挿入するために、第1の値よりも大きい第2の値に増加することができる。
図20は動きベクトル候補リストの一例を示す図である。
現在ブロックは、動きベクトル候補リストに含まれている動きベクトル候補を用いて、動き補償を行うことができる。現在ブロックの動き補償は、一つの参照画像リストに対して一つの動きベクトルを用いて行われてもよく、一つの参照画像リストに対して複数の動きベクトルを用いて行われてもよい。一例として、現在ブロックのインター予測方向が双方向である場合には、現在ブロックの動き補償は、参照ピクチャリストL0及びL1それぞれに対して一つの動きベクトルを導出することにより行われてもよく、参照ピクチャリストL0に対して2つの動きベクトルを導出することにより行われてもよい。
動きベクトル候補リストには、空間動きベクトル候補、時間動きベクトル候補、ゼロ動きベクトル候補、及びこれらのうちの二つ以上を組み合わせることにより、生成された組み合わせ動きベクトル候補の少なくとも一つが含まれ得る。それぞれの動きベクトル候補は、動きベクトル候補インデックスによって識別できる。
現在ブロックのインター予測方向に基づいて、複数の動きベクトル候補を含む動きベクトル候補セットが一つの動きベクトル候補インデックスによって識別されることも可能である。ここで、動きベクトル候補セットは、現在ブロックのインター予測方向の数Nに応じて、N個の動きベクトル候補を含むことができる。一例として、動きベクトル候補セットは、第1動きベクトル候補、第2動きベクトル候補、第3動きベクトル候補及び第4動きベクトル候補など、複数の動きベクトル候補を含むことができる。
動きベクトル候補セットは、空間動きベクトル候補、時間動きベクトル候補及びゼロ動きベクトル候補のうちの少なくとも2つを組み合わせて生成されたものであり得る。一例として、図20では、2つの動きベクトルの候補を含む動きベクトル候補セットが動きベクトル候補インデックス4~13に割り当てられたことが例示された。また、それぞれの動きベクトル候補セットは、空間動きベクトル候補(mxLXA、mxLXB)、時間動きベクトル(mxLXCol)、ゼロ動きベクトル(mvZero)を組み合わせることにより生成されたものと図示された。
参照画像リストLXに対する予測方向に基づいて、参照画像リストから一つ以上の動きベクトルを導出することができる。一例として、参照画像リストLXに対して一方向予測を行う場合、動きベクトルインデックス0~3に割り当てられた動きベクトル候補のいずれかを用いて、現在ブロックの動きベクトルを導出することができる。これに対し、参照画像リストLXに対して双方向予測を行う場合、動きベクトルインデックス4~13に割り当てられた動きベクトル候補セットを用いて、現在ブロックに対する動きベクトルを導出することができる。すなわち、符号化/復号処理で、動きベクトル候補リストに含まれている動きベクトル候補に基づいて少なくとも一つの動きベクトルが導出できる。
現在ブロックの動きベクトルは、動きベクトル候補に動きベクトル差分値を合算することにより導出できる。一例として、図20に示された例では、動きベクトル候補インデックス0~3の中からいずれかの動きベクトル候補が選択された場合、選択された動きベクトル候補に動きベクトル差分値(MVD)を合算することにより、動きベクトルが導出されるものと図示された。
複数の動きベクトル候補を含む動きベクトル候補セットが選択された場合、動きベクトル候補セットに含まれている複数の動きベクトル候補に基づいて、現在ブロックに対する複数の動きベクトルを導出することができる。このとき、動きベクトル候補セットに含まれている複数の動きベクトル候補それぞれに対する動きベクトル差分値を符号化/復号することができる。この場合、現在ブロックに対して、各動きベクトル候補に対応する動きベクトル差分値を合算することにより、複数の動きベクトルが導出できる。
他の例として、動きベクトル候補セットに含まれている複数の動きベクトル候補の一部に対する動きベクトル差分値を符号化/復号することもできる。一例として、複数の動きベクトル候補を含む動きベクトル候補セットに対して一つの動きベクトル差分値が符号化/復号できる。この場合、現在ブロックは、動きベクトル候補セットに含まれているいずれかの動きベクトル候補に動きベクトル差分値を合算することにより導出した動きベクトルと、動きベクトル候補からそのまま導出した動きベクトルを用いることができる。図20に示された例では、二つの動きベクトル候補を含む動きベクトル候補セットに対して、第1動きベクトル又は第2動きベクトルは、いずれか一つの動きベクトル候補に動きベクトル差分値を合算することにより導出され、もう一つは動きベクトル候補と同一であることが例示された。
他の例として、動きベクトル候補セットに含まれている複数の動きベクトル候補は、同一の動きベクトル差分値を共有することもできる。
インター予測インジケータは、所定の参照画像リストに対して一方向予測又は複数方向予測を指示することができる。一例として、インター予測インジケータは、参照画像リストLXに対する一方向予測を指示するPRED_LX、参照画像リストLXに対する双方向予測を指示するPRED_BI_LXなどで表現できる。ここで、Xは、0を含む整数であって、0、1、2、3など、参照画像リストのインデックスを示すことができる。
一例として、参照画像リストL0に対して一方向予測を行う場合、インター予測インジケータはPRED_L0に設定できる。また、参照画像リストL1に対して一方向予測を行う場合、インター予測インジケータはPRED_L1に設定できる。
これに対し、参照画像リストL1に対して双方向予測を行う場合、インター予測インジケータはPRED_BI_L1に設定できる。参照画像リストL1に対するインター予測インジケータがPRED_BI_L1である場合、現在ブロックは、動きベクトル候補リストを用いて2つの動きベクトルを導出し、参照画像リストL1に含まれている参照画像から2つの予測ブロックを導出してインター予測を行うことができる。このとき、2つの予測ブロックそれぞれは、参照画像リストL1に含まれている2つの互いに異なる参照画像から導出されてもよく、又は、参照画像リストL1に含まれている一つの参照画像から導出されてもよい。
インター予測インジケータは、現在ブロックに対する全体予測方向の数を示すように符号化/復号されてもよく、参照画像リストそれぞれの予測方向の数を示すように符号化/復号されてもよい。
一例として、参照画像リストL0に対して一方向を指示するインター予測インジケータ(PRED_L0)、及び参照画像リストL1に対して双方向予測を指示するインター予測インジケータ(PRED_BI_L1)が、現在ブロックに対して符号化できる。又は、参照画像リストL0に対して一方向予測を行い、参照画像リストL1に対して双方向予測を行う場合、現在ブロックに対するインター予測インジケータはPRED_TRIを指示することができる。
図20に示された例は、特定の参照画像リストLXに対する動きベクトル候補リストmvpListLXを示す。L0、L1、L2及びL3など、複数の参照画像リストが存在する場合、参照画像リストごとに動きベクトル候補リストが生成できる。これにより、最小1個から最大N個までの予測ブロックを生成して、現在ブロックのインター予測又は動き補償に利用することができる。ここで、Nは、1以上の整数であって、2、3、4、5、6、7、8などを示すことができる。
動きベクトル候補リストに含まれている動きベクトル候補のうちの少なくとも一つが、現在ブロックに対する予測された動きベクトル(又は動きベクトル予測器(motion vector predictor))として決定できる。決定された、予測された動きベクトルは、現在ブロックの動きベクトルの算出に利用でき、動きベクトルは、現在ブロックのインター予測或いは動き補償に利用できる。
現在ブロックにおいて、複数の動きベクトル候補を含む動きベクトル候補セットを選択した場合、動きベクトル候補セットに含まれている複数の動きベクトル候補及び前記複数の動きベクトル候補に基づいて算出した現在ブロックの動きベクトルを、現在ブロックの動き補償に関する情報として保存することができる。ここで、前記保存された現在ブロックの動き補償に関する情報は、後で近傍ブロックにおける動きベクトル候補リストの生成或いは動き補償の際に活用することができる。
図20に示された例では、参照画像リストごとに動きベクトル候補リストが生成されることを例示した。動きベクトル候補リストは、参照画像ごとに生成されてもよい。一例として、参照画像リストLXに対して双方向予測を行う場合、参照画像リストLXに含まれている参照ピクチャのうち、双方向予測に用いられる第1参照画像のために第1動きベクトル候補リストを生成し、双方向予測に用いられる第2参照画像のために第2動きベクトル候補リストを生成することができる。
次に、動きベクトル候補リストから予測された動きベクトルを決定するステップについて考察する(S1203、S1304)。
動きベクトル候補リストに含まれている動きベクトル候補のうち、動きベクトル候補インデックスが指し示す動きベクトル候補を、現在ブロックに対する予測された動きベクトルとして決定することができる。
図21は動きベクトル候補リストから現在ブロックの予測された動きベクトル候補を導出する例を示す図である。
図21では、動きベクトル候補リストが含むことが可能な最大動きベクトル候補の個数maxNumMVPCandが2であり、動きベクトル候補リストに含まれている動きベクトル候補の個数も2であることを示した。このとき、動きベクトル候補インデックスがインデックス1を指し示す場合、動きベクトル候補リストに含まれている第二の動きベクトル候補(すなわち、インデックス1が割り当てられた動きベクトル候補)である(2,3)が、現在ブロックの予測された動きベクトルとして決定できる。
符号化装置は、動きベクトルと予測された動きベクトルとの差分を計算して動きベクトル差分値を算出することができる。復号装置は、予測された動きベクトルと動きベクトル差分を合わせて動きベクトルを算出することができる。
図示してはいないが、動きベクトル候補インデックスが動きベクトル候補セットを指し示す場合、動きベクトル候補セットに含まれている複数の動きベクトル候補から複数の動きベクトルを導出することができる。この際、現在ブロックの動きベクトルは、動きベクトル候補に動きベクトル差分を合わせたものであってもよく、動きベクトル候補と同一の値を持ってもよい。
次に、動きベクトルを用いて、動き補償を行うステップについて説明する(S1204、S1305)。
符号化装置及び復号装置は、予測された動きベクトルと動きベクトル差分値を用いて動きベクトルを算出することができる。動きベクトルが算出されると、算出された動きベクトルを用いて、インター予測又は動き補償を行うことができる。又は、図20に示された例のように、動きベクトル予測値をそのままに動きベクトルとして決定することもできる。
現在ブロックは、予測方向に基づいて、最小1個乃至最大N個の動きベクトルを持つことができる。動きベクトルを用いて、最小1個乃至最大N個の予測ブロックを生成して、現在ブロックの最終予測ブロックを導出することができる。
一例として、現在ブロックが一つの動きベクトルを持つ場合、前記動きベクトルを用いて生成された予測ブロックを、現在ブロックの最終予測ブロックとして決定することができる。
これに対し、現在ブロックが複数の動きベクトルを持つ場合、複数の動きベクトルを用いて複数の予測ブロックを生成し、複数の予測ブロックの加重和に基づいて、現在ブロックの最終予測ブロックを決定することができる。複数の動きベクトルによって指示される複数の予測ブロックそれぞれを含む参照画像は、互いに異なる参照画像リストに含まれてもよく、同一の参照画像リストに含まれてもよい。
各予測ブロックに適用される重みは、1/N(ここで、Nは生成された予測ブロックの数)であって、均等な値を持つことができる。一例として、2つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/2であり、3つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/3であり、4つの予測ブロックが生成された場合には、各予測ブロックに適用される重みは1/4であり得る。又は、予測ブロックごとに異なる重みを付けて、現在ブロックの最終予測ブロックを決定することもできる。
重みは、予測ブロックごとに固定された値を持たなければならないのではなく、予測ブロック別の可変値を持つこともできる。このとき、各予測ブロックに適用される重みは、互いに同一であってもよく、互いに異なってもよい。可変重みを適用するために、現在ブロックのための一つ又はそれ以上の重み情報がビットストリームを介してシグナリングされてもよい。重み情報は、予測ブロックごとにそれぞれシグナリングされてもよく、参照画像ごとにシグナリングされてもよい。複数の予測ブロックが一つの重み情報を共有することも可能である。
下記数式3~数式5は、それぞれ、現在ブロックのインター予測インジケータがPRED_BI、PRED_TRI及びPRED_QUADであり、各参照画像リストに対する予測方向が一方向である場合、現在ブロックの最終予測ブロックを生成する例を示す。
前記数式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、正数又は負数に設定できる。
所定の参照画像リストに対する予測方向が複数方向である場合でも、予測ブロックの加重和に基づいて、現在ブロックに対する最終予測ブロックを取得することができる。このとき、同一の参照画像リストから導出された予測ブロックに適用される重みは、同一の値を持ってもよく、互いに異なる値を持ってもよい。
複数の予測ブロックに対する重み(WF_LX)及びオフセット(OFFSET_LX)のうちの少なくとも一つは、エントロピー符号化/復号される符号化パラメータであり得る。他の例として、重み及びオフセットは、現在ブロック近傍の符号化/復号された近傍ブロックから導出されてもよい。ここで、現在ブロック近傍の近傍ブロックは、現在ブロックの空間動きベクトル候補を導出するために用いられるブロック、又は現在ブロックの時間動きベクトル候補を導出するために用いられるブロックのうちの少なくとも一つを含むことができる。
他の例として、重み及びオフセットは、現在画像と各参照画像の表示順(POC)に基づいて決定されてもよい。この場合、現在画像と参照画像間の距離が遠いほど、重み又はオフセットを小さい値に設定し、現在画像と参照画像間の距離が近いほど、重み又はオフセットを大きな値に設定することができる。一例として、現在画像とL0参照画像とのPOCの差が2である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を1/3に設定するのに対し、現在画像とL0参照画像とのPOCの差が1である場合、L0参照画像を参照して生成された予測ブロックに適用される重み値を2/3に設定することができる。上記に例示したように、重み又はオフセット値は、現在画像と参照画像間の表示順の差と反比例の関係を持つことができる。他の例として、重み又はオフセット値は、現在画像と参照画像間の表示順の差と比例の関係を持つようにすることも可能である。
他の例として、符号化パラメータのうちの少なくとも一つに基づいて、重み又はオフセットのうちの少なくとも一つをエントロピー符号化/復号することもできる。また、符号化パラメータのうちの少なくとも一つに基づいて、予測ブロックの加重和を計算することもできる。
次に、動き補償に関する情報をエントロピー符号化/復号する処理について詳細に説明する(S1205、S1301)。
図22(図22A及び図22B)は動き補償に対する情報に関する構文を例示する図である。
符号化装置は、動き補償に関する情報を、ビットストリームを介してエントロピー符号化し、復号装置は、ビットストリームに含まれている動き補償に関する情報をエントロピー復号することができる。ここで、エントロピー符号化/復号される動き補償に関する情報は、インター予測インジケータ(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)、動きベクトル差分、重み値(wf_l0、wf_l1、wf_l2、wf_l3)及びオフセット値(offset_l0、offset_l1、offset_l2、offset_l3)のうちの少なくとも一つを含むことができる。
インター予測インジケータは、現在ブロックのインター予測で符号化/復号される場合、現在ブロックのインター予測方向を意味することができる。一例として、インター予測インジケータは、一方向予測を指示し、或いは、双方向予測、三方向予測又は四方向予測などの複数方向予測を指示することができる。インター予測インジケータは、現在ブロックが予測ブロックを生成するときに使用する参照画像の数を意味することができる。又は、一つの参照画像が複数方向予測のために利用されることもある。この場合、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参照画像リストを用いて、2つの予測ブロックを生成し、生成された2つの予測ブロックを用いて、インター予測又は動き補償を行うことを意味することができる。インター予測インジケータPRED_TRIは、L0、L1及びL2参照画像リストを用いて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つの予測ブロックを生成して現在ブロックのインター予測或いは動き補償を行うインター予測インジケータを意味することができる。
インター予測インジケータに応じて利用可能なインター予測方向が決定でき、現在ブロックのサイズ及び/又は形状に基づいて前記利用可能なインター予測方向の全部又は一部が選択的に利用されてもよい。
各参照画像リストが含む参照画像の数は、予め定義されているか、或いは符号化装置でエントロピー符号化されて復号装置へ送信され得る。一例として、構文要素(syntax element)「num_ref_idx_lX_active_minus1」(ここで、Xは0、1、2、3など、参照画像リストのインデックスを示す)は、L0、L1、L2又はL3などの参照画像リストに対する参照画像の数を示すことができる。
参照画像インデックスは、各参照画像リストから、現在ブロックが参照する参照画像を特定することができる。各参照画像リストに対して一つ以上の参照画像インデックスがエントロピー符号化/復号できる。現在ブロックは、一つ以上の参照画像インデックスを用いて動き補償を行うことができる。
N個の参照画像インデックスを用いてN個の参照画像が選択されると、最小1個からN個(又はN個以上)の予測ブロックを生成して、現在ブロックに対する動き補償を行うことができる。
動きベクトル候補インデックスは、参照画像リストごと又は参照画像インデックスごとに生成された動きベクトル候補リストから、現在ブロックに対する動きベクトル候補を示す。動きベクトル候補リストごとに少なくとも一つの動きベクトル候補インデックスがエントロピー符号化/復号できる。現在ブロックは、少なくとも一つの動きベクトル候補インデックスを用いて動き補償を行うことができる。
一例として、N個の動きベクトル候補インデックスに基づいて、最小1個からN個(又はN個以上)の予測ブロックを生成して、現在ブロックに対する動き補償を行うことができる。
動きベクトル差分は、動きベクトルと予測された動きベクトルとの差分値を示す。現在ブロックに対する参照画像リスト又は参照画像インデックスごとに生成された動きベクトル候補リストに対して一つ以上の動きベクトル差分がエントロピー符号化/復号できる。現在ブロックは、一つ以上の動きベクトル差分を用いて動き補償を行うことができる。
一例として、N個の動きベクトル差分を用いて最小1個から最大N個(又はN個以上)の予測ブロックを生成して、現在ブロックに対する動き補償を行うことができる。
現在ブロックに対する動き補償の際に2つ以上の予測ブロックが生成された場合、各予測ブロックに対する加重和(weighted sum)を介して、現在ブロックに対する最終予測ブロックが生成できる。加重和演算の際に、各予測ブロックに対して重み及びオフセットのうちの少なくとも一つが適用できる。重み又はオフセットなどのように加重和演算に用いられる加重和(weighted sum)ファクターは、参照画像リスト、参照画像、動きベクトル候補インデックス、動きベクトル差分又は動きベクトルのうちの少なくとも一つの個数だけエントロピー符号化/復号できる。
加重和ファクターは、符号化装置と復号装置で予め定義された集合のいずれかを特定するインデックス情報によって導出されることも可能である。この場合、重み及びオフセットのうちの少なくとも一つを特定するためのインデックス情報がエントロピー符号化/復号できる。
加重和ファクターに関連する情報は、ブロック単位でエントロピー符号化/復号されてもよく、上位レベルでエントロピー符号化/復号されてもよい。一例として、重み又はオフセットは、CTU、CU又はPUなどのブロック単位でエントロピー符号化/復号されるか、或いは、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、適応パラメータセット(Adaptation Parameter Set)又はスライスヘッダ(Slice Header)などの上位レベルでエントロピー符号化/復号できる。
加重和ファクターは、加重和ファクターと加重和ファクター予測値との差分値を示す加重和ファクター差分値に基づいてエントロピー符号化/復号されることも可能である。一例として、重み予測値と重み差分値をエントロピー符号化/復号し、或いはオフセット予測値とオフセット差分値をエントロピー符号化/復号することができる。ここで、重み差分値は重みと重み予測値との差分値を示し、オフセット差分値はオフセットとオフセット予測値との差分値を示すことができる。
このとき、加重和ファクター差分値は、ブロック単位でエントロピー符号化/復号され、加重和ファクター予測値は、上位レベルでエントロピー符号化/復号され得る。重み予測値又はオフセット予測値などの加重和ファクター予測値がピクチャ又はスライス単位でエントロピー符号化/復号される場合、ピクチャ又はスライスに含まれているブロックは共通の加重和ファクター予測値を用いることができる。
加重和ファクター予測値は、画像、スライス或いはタイル内の特定の領域又はCTU又はCU内の特定の領域を介して導出されることも可能である。一例として、画像、スライス、タイル、CTU又はCU内の特定の領域の重み値又はオフセット値を重み予測値又はオフセット予測値として使用することができる。この場合、加重和ファクター予測値のエントロピー符号化/復号は省略し、加重和ファクター差分値のみをエントロピー符号化/復号することができる。
又は、加重和ファクター予測値は、現在ブロックの近傍に符号化/復号された近傍ブロックから導出されることも可能である。一例として、現在ブロックの近傍に符号化/復号された近傍ブロックの重み値又はオフセット値を現在ブロックの重み予測値又はオフセット予測値に設定することができる。ここで、現在ブロックの近傍ブロックは、空間動きベクトル候補の導出に用いられるブロック、及び時間動きベクトル候補の導出に用いられるブロックのうちの少なくとも一つを含むことができる。
重み予測値及び重み差分値を用いる場合、復号装置は、重み予測値及び重み差分値を合わせて予測ブロックに対する重み値を算出することができる。また、オフセット予測値及びオフセット差分値を用いる場合、復号装置は、オフセット予測値及びオフセット差分値を合わせて、予測ブロックに対するオフセット値を算出することができる。
現在ブロックの加重和ファクターに関する情報をエントロピー符号化/復号する代わりに、現在ブロックの近傍に符号化/復号されたブロックの加重和ファクターを、現在ブロックの加重和ファクターとして用いることも可能である。一例として、現在ブロックの重み又はオフセットは、現在ブロックの近傍に符号化/復号された近傍ブロックの重み又はオフセットと同一の値に設定できる。
前記動き補償に関する情報のうちの少なくとも一つを符号化パラメータを用いてビットストリームを介してエントロピー符号化/復号するか、或いは、少なくとも一つの符号化パラメータを用いて前記動き補償に関する情報のうちの少なくとも一つを導出することもできる。
動き補償に関連した情報をエントロピー符号化/復号する場合、切り捨てられたライス(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)の形状を有することができる。
上述した実施形態において、これらの方法は、一連のステップ又はユニットでフローチャートに基づいて説明されているが、本発明は、これらのステップの順序に限定されるものではなく、あるステップは、上述したのと異なるステップと異なる順序で又は同時に発生することができる。また、当該技術分野における通常の知識を有する者であれば、フローチャートに示されたステップが排他的ではなく、他のステップが含まれるか、フローチャートの一つ又はそれ以上のステップが本発明の範囲に影響することなく削除できることを理解することができるだろう。
上述した実施形態は、様々な態様の例示を含む。様々な態様を示すためのすべての可能な組み合わせを記述することはできないが、当該技術分野における通常の知識を有する者は、他の組み合わせが可能であることを認識することができるだろう。よって、本発明は、以下の特許請求の範囲内に属するすべての様々な交替、修正及び変更を含むといえる。
以上説明した本発明に係る実施形態は、様々なコンピュータ構成要素を介して実行できるプログラム命令の形で実現され、コンピュータ可読の記録媒体に記録できる。前記コンピュータ可読の記録媒体は、プログラム命令、データファイル、データ構造などを単独で又は組み合わせて含むことができる。前記コンピュータ可読の記録媒体に記録されるプログラム命令は、本発明のために特別に設計及び構成されたもの、又はコンピュータソフトウェア分野の当業者に公知されて使用可能なものである。コンピュータ可読の記録媒体の例には、ハードディスク、フロッピーディスク(登録商標)及び磁気テープなどの磁気媒体、CD-ROM、DVDなどの光記録媒体、フロプティカルディスク(floptical disk)などの磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリなどのプログラム命令を保存し実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行できる高級言語コードも含まれる。前記ハードウェア装置は、本発明に係る処理を行うために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
以上で、本発明が、具体的な構成要素などの特定の事項、限定された実施形態及び図面によって説明されたが、これは本発明のより全般的な理解を助けるために提供されたものに過ぎず、本発明は前記実施形態に限定されるものではない。本発明の属する技術分野における通常の知識を有する者であれば、このような記載から多様な修正及び変形を図ることができる。
よって、本発明の思想は、上述した実施形態に限定されて定められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等に又は等価的に変形したすべてのものは本発明の思想の範疇に属するというべきである。