したがって、前述の問題の少なくとも1つに対する解決策が望ましい。
本発明の第1の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
ATMVP候補を含む動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックス(マージインデックス)を生成し、動きベクトル予測子インデックスの1つまたは複数のビットは、バイパスCABAC符号化される
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスの最初のビットを除くすべてのビットがバイパスCABAC符号化される。
本発明の第2の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
ATMVP候補を含む動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して動きベクトル予測子インデックスを復号し、動きベクトル予測子インデックスの1つまたは複数のビットは、バイパスCABAC復号され、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスの最初のビットを除くすべてのビットがバイパスCABAC復号される。
本発明の第3の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
ATMVP候補を含む動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックス(マージインデックス)を生成する手段であって、動きベクトル予測子インデックスの1つまたは複数のビットがバイパスCABAC符号化される手段と
を備えることを特徴とする装置が提供される。
本発明の第4の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
ATMVP候補を含む動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して動きベクトル予測子インデックスを復号する手段であって、動きベクトル予測子インデックスの1つまたは複数のビットがバイパスCABAC復号される手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第5の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、動きベクトル予測子インデックスの2つ以上のビットが同じコンテキストを共有する
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスのすべてのビットが同じコンテキストを共有する。
本発明の第6の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、動きベクトル予測子インデックスの2つ以上のビットが同じコンテキストを共有し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスのすべてのビットが同じコンテキストを共有する。
本発明の第7の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、動きベクトル予測子インデックスの2つ以上のビットが同じコンテキストを共有する手段と
を備えることを特徴とする装置が提供される。
本発明の第8の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、動きベクトル予測子インデックスの2つ以上のビットが同じコンテキストを共有する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第9の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックに隣接する少なくとも1つのブロックの動きベクトル予測子インデックスに依存する
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数が少なくとも2つの隣接ブロックのそれぞれの動きベクトル予測子インデックスに依存する。
別の実施形態では、動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックの左側の左隣接ブロックの動きベクトル予測子インデックスと、現在のブロックの上側の上隣接ブロックの動きベクトル予測子インデックスと、に依存する。
別の実施形態では、左隣接ブロックはA2であり、上隣接ブロックはB3である。
別の実施形態では、左隣接ブロックはA1であり、上隣接ブロックはB1である。
別の実施形態では、コンテキスト変数が3つの異なる可能な値を有する。
別の実施形態は、少なくとも1つの隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックスのインデックス値と比較し、比較結果に応じて前記コンテキスト変数を設定することを含む。
別の実施形態は、少なくとも1つの隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックス内の前記または1つの前記ビットのビット位置を表すパラメータと比較し、比較結果に応じて前記コンテキスト変数を設定することを含む。
さらに別の実施形態は、第1比較を行い、第1隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックス内の前記または1つの前記ビットのビット位置を表すパラメータと比較し、第2比較を行い、第2隣接ブロックの動きベクトル予測子インデックスを、前記パラメータと比較し、第1および第2比較の結果に応じて前記コンテキスト変数を設定する、ことを含む。
本発明の第10の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロックに隣接する少なくとも1つのブロックの動きベクトル予測子インデックスに依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
一実施形態では、動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数が、少なくとも2つの隣接ブロックのそれぞれの動きベクトル予測子インデックスに依存する。
別の実施形態では、動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックの左側の左隣接ブロックの動きベクトル予測子インデックスと、現在のブロックの上側の上隣接ブロックの動きベクトル予測子インデックスとに依存する。
別の実施形態では、左隣接ブロックはA2であり、上隣接ブロックはB3である。
別の実施形態では、左隣接ブロックはA1であり、上隣接ブロックはB1である。
別の実施形態では、コンテキスト変数が3つの異なる可能な値を有する。
別の実施形態は、少なくとも1つの隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックスのインデックス値と比較し、比較結果に応じて前記コンテキスト変数を設定することを含む。
別の実施形態は、少なくとも1つの隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックス内の前記または1つの前記ビットのビット位置を表すパラメータと比較し、比較結果に応じて前記コンテキスト変数を設定することを含む。
さらに別の実施形態は、第1比較を行い、第1隣接ブロックの動きベクトル予測子インデックスを、現在のブロックの動きベクトル予測子インデックス内の前記または1つの前記ビットのビット位置を表すパラメータと比較し、第2比較を行い、第2隣接ブロックの動きベクトル予測子インデックスを、前記パラメータと比較し、第1および第2比較の結果に応じて前記コンテキスト変数を設定することを含む。
本発明の第11の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックに隣接する少なくとも1つのブロックの動きベクトル予測子インデックスに依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第12の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、現在のブロックに隣接する少なくとも1つのブロックの動きベクトル予測子インデックスに依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第13の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、前記現在のブロックのスキップフラグに依存する
ことを特徴とする方法が提供される。
本発明の第14の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、動きベクトル予測子インデックスの復号前に利用可能な前記現在のブロックの別のパラメータまたはシンタックス要素に依存する
ことを特徴とする方法が提供される。
本発明の第15の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロック内の動きの複雑さのインジケータである前記現在のブロックの別のパラメータまたはシンタックス要素に依存する
ことを特徴とする方法が提供される。
本発明の第16の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、前記現在のブロックのスキップフラグに依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第17の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、動きベクトル予測子インデックスの復号前に利用可能である前記現在のブロックの別のパラメータまたはシンタックス要素に依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第18の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロックにおける動きの複雑さのインジケータである前記現在のブロックの別のパラメータまたはシンタックス要素に依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト中の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第19の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数が、前記現在のブロックのスキップフラグに依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第20の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、動きベクトル予測子インデックスの復号前に利用可能である前記現在のブロックの別のパラメータまたはシンタックス要素に依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第21の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロック内の動きの複雑さのインジケータである前記現在のブロックの別のパラメータまたはシンタックス要素に依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第22の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、前記現在のブロックのスキップフラグに依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第23の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、動きベクトル予測子インデックスの復号前に利用可能である前記現在のブロックの別のパラメータまたはシンタックス要素に依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第24の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、現在のブロックにおける動きの複雑さのインジケータである前記現在のブロックの別のパラメータまたはシンタックス要素に依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第25の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、前記リスト内にアフィン動きベクトル予測子候補がある場合にはそれに依存する
ことを特徴とする方法が提供される。
一実施形態では、コンテキスト変数は、第1アフィン動きベクトル予測子候補の前記リスト内の位置に依存する。
本発明の第26の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、前記リスト内にアフィン動きベクトル予測子候補がある場合にはそれに依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
一実施形態では、コンテキスト変数は、第1アフィン動きベクトル予測子候補の前記リスト内の位置に依存する。
本発明の第27の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、前記リスト内にアフィン動きベクトル予測子候補がある場合にはそれに依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第28の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、前記リスト内にアフィン動きベクトル予測子候補がある場合にはそれに依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第29の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
アフィン動きベクトル予測子候補を含む動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックおよび/または現在のブロックに隣接する少なくとも1つのブロックのアフィンフラグに依存する
ことを特徴とする方法が提供される。
本発明の第30の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
アフィン動きベクトル予測子候補を含む動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロックおよび/または現在のブロックに隣接する少なくとも1つのブロックのアフィンフラグに依存し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第31の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
アフィン動きベクトル予測子候補を含む動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロックおよび/または現在のブロックに隣接する少なくとも1つのブロックのアフィンフラグに依存する手段と
を備えることを特徴とする装置が提供される。
本発明の第32の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
アフィン動きベクトル予測子候補を含む動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は、現在のブロックおよび/または現在のブロックに隣接する少なくとも1つのブロックのアフィンフラグに依存する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第33の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックのスキップフラグおよびアフィンフラグのうちの少なくとも1つのコンテキスト変数から導出される
ことを特徴とする方法が提供される。
本発明の第34の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、現在のブロックのスキップフラグおよびアフィンフラグのうちの少なくとも1つのコンテキスト変数から導出され、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第35の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数が、現在のブロックのスキップフラグおよびアフィンフラグのうちの少なくとも1つのコンテキスト変数から導出される手段と
を備えることを特徴とする装置が提供される。
本発明の第36の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数が、現在のブロックのスキップフラグおよびアフィンフラグのうちの少なくとも1つのコンテキスト変数から導出される手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明の第37の態様によれば、動きベクトル予測子インデックスを符号化する方法であって、
動きベクトル予測子候補のリストを生成し、
前記リスト内の動きベクトル予測子候補のうちの1つを選択し、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、2つの異なる可能な値のみを有する
ことを特徴とする方法が提供される。
本発明の第38の態様によれば、動きベクトル予測子インデックスを復号する方法であって、
動きベクトル予測子候補のリストを生成し、
CABAC復号を使用して、動きベクトル予測子インデックスを復号し、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数は2つの異なる可能な値のみを有し、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する
ことを特徴とする方法が提供される。
本発明の第39の態様によれば、動きベクトル予測子インデックスを符号化する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
前記リスト内の動きベクトル予測子候補のうちの1つを選択する手段と、
CABAC符号化を使用して、選択された動きベクトル予測子候補の動きベクトル予測子インデックスを生成する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットのコンテキスト変数は、2つの異なる可能な値のみを有する手段と
を備えることを特徴とする装置が提供される。
本発明の第40の態様によれば、動きベクトル予測子インデックスを復号する装置であって、
動きベクトル予測子候補のリストを生成する手段と、
CABAC復号を使用して、動きベクトル予測子インデックスを復号する手段であって、ここで、現在のブロックの動きベクトル予測子インデックスの少なくとも1つのビットに対するコンテキスト変数が、2つの異なる可能な値のみを有する手段と、
復号された動きベクトル予測子インデックスを使用して、前記リスト内の動きベクトル予測子候補のうちの1つを識別する手段と
を備えることを特徴とする装置が提供される。
本発明のさらに別の態様は、コンピュータまたはプロセッサによって実行されると、コンピュータまたはプロセッサに前述の態様の方法のいずれかを実行させるプログラムに関する。プログラムは、それ自体で提供されてもよく、またはキャリア媒体上で、キャリア媒体によって、またはキャリア媒体内で搬送されてもよい。キャリア媒体は非一時的であってもよく、例えば、記憶媒体、特にコンピュータ可読記憶媒体であってもよい。搬送媒体はまた、一時的なもの、例えば、信号または他の伝送媒体であってもよい。信号は、インターネットを含む任意の適切なネットワークを介して送信されてもよい。
本発明のさらに別の態様は、前述の装置態様のいずれかによる装置を備えるカメラに関する。一実施形態では、カメラがズーム手段をさらに備える。
本発明の第41の態様によれば、動き情報予測子インデックスを符号化する方法であって、動き情報予測子候補のリストを生成し、アフィンマージモードが使用される場合、前記リスト中の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択し、非アフィンマージモードが使用される場合、前記リスト中の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として選択し、CABAC符号化を使用して、選択された動き情報予測子候補の動き情報予測子インデックスを生成し、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC符号化されることを特徴とする方法が提供される。
適切には、CABAC符号化が、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットに対して同じコンテキスト変数を使用することを備える。あるいはCABAC符号化が、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットについて、アフィンマージモードが使用される場合は第1コンテキスト変数を使用すること、または非アフィンマージモードが使用される場合は第2コンテキスト変数を使用することを備え、方法はアフィンマージモードが使用される場合、ビットストリーム中でアフィンマージモードの使用を示すデータを含むことをさらに備える。
好適には、方法が、ビットストリーム内の動き情報予測子候補の生成されたリストに含まれうる動き情報予測子候補の最大数を決定するためのデータをさらに含む。好適には、動き情報予測子インデックスの最初のビットを除く全てのビットがバイパスCABAC符号化される。適切には、最初のビットはCABAC符号化される。適切には、選択された動き情報予測子候補の動き情報予測子インデックスが、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、同じシンタックス要素を使用して符号化される。
本発明の第42の態様によれば、動き情報予測子インデックスを復号する方法であって、動き情報予測子候補のリストを生成し、CABAC復号を使用して、動き情報予測子インデックスを復号し、動き情報予測子インデックスの1つまたは複数のビットはバイパスCABAC復号され、アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別し、非アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として識別することを特徴とする方法が提供される。
適切には、CABAC復号が、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットに対して同じコンテキスト変数を使用することを含む。あるいは、方法が、ビットストリームから、アフィンマージモードの使用を示すデータを取得することをさらに含み、CABAC復号は、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットについて、取得されたデータがアフィンマージモードの使用を示す場合、第1コンテキスト変数を使用し、取得されたデータが非アフィンマージモードの使用を示す場合、第2コンテキスト変数を使用する、ことを含む。
適切には、方法が、ビットストリームから、アフィンマージモードの使用を示すデータを取得することをさらに含み、動き情報予測子候補の生成されたリストは、取得されたデータがアフィンマージモードの使用を示す場合、アフィンマージモード予測子候補、取得されたデータが非アフィンマージモードの使用を示す場合、非アフィンマージモード予測子候補を含む。
適切には、方法が、ビットストリームから、動き情報予測子候補の生成されたリストに含まれうる動き情報予測子候補の最大数を決定するためのデータを取得することをさらに含む。好適には、動き情報予測子インデックスの最初のビットを除く全てのビットが、バイパスCABAC復号される。適切には、最初のビットはCABAC復号される。適当には、動き情報予測子インデックスを復号することは、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、ビットストリームから同じシンタックス要素を構文解析することを含む。好適には、動き情報予測子候補が動きベクトルを取得するための情報を含む。適切には、動き情報予測子候補の生成されたリストが、ATMVP候補を含む。適切には、動き情報予測子候補の生成されたリストが、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、その中に含まれることができる同じ最大数の動き情報予測子候補を有する。
本発明の第43の態様によれば、動き情報予測子インデックスを符号化する装置であって、動き情報予測子候補のリストを生成する手段と、アフィンマージモードが使用される場合、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択する手段と、非アフィンマージモードが使用される場合、リスト内の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として選択する手段と、CABAC符号化を使用して、選択された動き情報予測子候補の動き情報予測子インデックスを生成する手段であって、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC符号化される手段と、を備えることを特徴とする装置が提供される。好適には、装置が、第41の態様による動き情報予測子インデックスを符号化する方法を実行する手段を備える。
本発明の第44の態様によれば、動き情報予測子インデックスを復号する装置であって、動き情報予測子候補のリストを生成する手段と、CABAC復号を使用して、動き情報予測子インデックスを復号する手段であって、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC復号される手段と、アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別する手段と、非アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として識別する手段とを備えることを特徴とする装置が提供される。好適には、装置が第42の態様による動き情報予測子インデックスを復号する方法を実行する手段を備える。
本発明の第45の態様によれば、アフィンマージモードの動き情報予測子インデックスを符号化する方法であって、動き情報予測子候補のリストを生成し、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択し、CABAC符号化を使用して、選択された動き情報予測子候補の動き情報予測子インデックスを生成し、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC符号化されることを特徴とする方法が提供される。
適切には、非アフィンマージモードが使用される場合、方法は、リスト内の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として選択することをさらに含む。適切には、CABAC符号化が、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットについて、アフィンマージモードが使用される場合は第1コンテキスト変数を使用し、または非アフィンマージモードが使用される場合は第2コンテキスト変数を使用することを備え、方法は、アフィンマージモードが使用される場合、ビットストリームにアフィンマージモードの使用を示すデータを含むことをさらに備える。あるいは、CABAC符号化が、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットに対して同じコンテキスト変数を使用することを含む。
好適には、方法が、ビットストリーム内の動き情報予測子候補の生成されたリストに含まれうる動き情報予測子候補の最大数を決定するためのデータをさらに含む。
好適には、動き情報予測子インデックスの最初のビットを除く全てのビットが、バイパスCABAC符号化される。適切には、最初のビットはCABAC符号化される。適切には、選択された動き情報予測子候補の動き情報予測子インデックスが、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、同じシンタックス要素を使用して符号化される。
本発明の第46の態様によれば、アフィンマージモードの動き情報予測子インデックスを復号する方法であって、動き情報予測子候補のリストを生成し、CABAC復号を使用して、動き情報予測子インデックスを復号し、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC復号され、アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別することを特徴とする方法が提供される。
適切には、非アフィンマージモードが使用される場合、方法は、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つを非アフィンマージモード予測子として識別することをさらに含む。適切には、方法が、ビットストリームから、アフィンマージモードの使用を示すデータを取得することをさらに含み、CABAC復号は、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットについて、取得されたデータがアフィンマージモードの使用を示す場合、第1コンテキスト変数を使用し、取得されたデータが非アフィンマージモードの使用を示す場合、第2コンテキスト変数を使用する、ことを含む。あるいは、CABAC復号が、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットに対して同じコンテキスト変数を使用することを含む。
適切には、方法が、ビットストリームから、アフィンマージモードの使用を示すデータを取得することをさらに含み、動き情報予測子候補の生成されたリストは、取得されたデータがアフィンマージモードの使用を示す場合、アフィンマージモード予測子候補、および取得されたデータが非アフィンマージモードの使用を示す場合、非アフィンマージモード予測子候補を含む。
適当には、動き情報予測子インデックスを復号することは、アフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、ビットストリームから、同じシンタックス要素を構文解析することを含む。適切には、方法がビットストリームから、動き情報予測子候補の生成されたリストに含まれうる動き情報予測子候補の最大数を決定するためのデータを取得することをさらに含む。好適には、動き情報予測子インデックスの最初のビットを除く全てのビットがバイパスCABAC復号される。適切には、最初のビットはCABAC復号される。好適には、動き情報予測子候補が動きベクトルを取得するための情報を含む。適切には、動き情報予測子候補の生成されたリストがATMVP候補を含む。適切には、動き情報予測子候補の生成されたリストがアフィンマージモードが使用される場合および非アフィンマージモードが使用される場合、その中に含まれることができる同じ最大数の動き情報予測子候補を有する。
本発明の第47の態様によれば、アフィンマージモードの動き情報予測子インデックスを符号化する装置であって、動き情報予測子候補のリストを生成する手段と、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択する手段と、CABAC符号化を使用して、選択された動き情報予測子候補の動き情報予測子インデックスを生成する手段であって、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC符号化される手段とを備えることを特徴とする装置が提供される。好適には、装置が第45の態様による動き情報予測子インデックスを符号化する方法を実行する手段を備える。
本発明の第48の態様によれば、アフィンマージモードの動き情報予測子インデックスを復号する装置であって、動き情報予測子候補のリストを生成する手段と、CABAC復号を使用して、動き情報予測子インデックスを復号する手段であって、動き情報予測子インデックスの1つまたは複数のビットがバイパスCABAC復号される手段と、アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別する手段と、を備えることを特徴とする装置が提供される。好適には、装置が第46の態様による動き情報予測子インデックスを復号する方法を実行する手段を備える。
一実施形態では、カメラが前記ズーム手段が動作可能であるときを示し、前記ズーム手段が動作可能であるという前記指摘に応じてアフィンモードを送る。
別の実施形態では、カメラがパンニング手段をさらに備える。
別の実施形態では、カメラが前記パンニング手段が動作可能であることを示し、前記パンニング手段が動作可能であるという前記指摘に応じてアフィンモードを送る。
本発明のさらに別の態様によれば、上記のカメラ態様のいずれかを具現化するカメラを備えるモバイルデバイスが提供される。
一実施形態では、モバイルデバイスがモバイルデバイスの姿勢の変化を感知する少なくとも1つの位置センサをさらに備える。
一実施形態では、モバイルデバイスがモバイルデバイスの姿勢の変化の前記検知に依存してアフィンモードを送る。
本発明のさらなる特徴は、他の独立請求項および従属請求項によって特徴付けられる。
本発明の一態様における任意の特徴は、任意の適切な組み合わせで、本発明の他の態様に適用されてもよい。特に、方法の態様は、装置の態様に適用されてもよく、逆もまた同様である。
さらに、ハードウェアで実施される特徴は、ソフトウェアで実施されてもよく、その逆も可能である。ここに記載されたソフトウェアおよびハードウェアの特徴への言及は、それに応じて解釈されるべきである。
本明細書に記載されるような任意の装置特徴は、方法特徴として提供されてもよく、逆もまた同様である。本明細書で使用されるように、means plus function特徴は、適切にプログラムされたプロセッサおよび関連するメモリのような、それらの対応する構造に関して代替的に表現されてもよい。
また、本発明の任意の態様において説明され、定義された様々な特徴の特定の組合せは、独立して実装および/または供給および/または使用されることができることを理解されたい。
以下で説明する本発明の実施形態は、CABACを使用してインデックスの符号化および復号を改善することに関する。本発明の代替実施形態によれば、CABACと機能的に同様の他のコンテキストベースの算術符号化方式を改善するための実装も可能であることを理解されたい。実施形態を説明する前に、ビデオ符号化および復号技術、ならびに関連するエンコーダおよびデコーダについて説明する。
図1は、高効率ビデオ符号化(HEVC)ビデオ規格で使用される符号化構造に関する。ビデオシーケンス1は、一連のデジタル画像iから構成される。このような各デジタル画像は、1つ以上のマトリックスによって表される。行列係数はピクセルを表す。
このシーケンスの画像2は、スライス3に分割される。スライスは、場合によっては画像全体を構成する。これらのスライスは、オーバーラップしない符号化ツリーユニット(CTU)に分割される。符号化ツリーユニット(CTU)は、高効率ビデオ符号化(HEVC)ビデオ規格の基本的な処理ユニットであり、概念的には、構造が、いくつかの以前のビデオ規格で使用されたマクロブロックユニットに対応する。CTUは、時には最大符号化ユニット(LCU)とも呼ばれる。CTUは輝度及び彩度構成要素部分を有し、その構成要素部分の各々は、符号化ツリーブロック(CTB)と呼ばれる。これらの異なる色成分は、図1には示されていない。
CTUは一般的に、HEVC用のサイズ64ピクセルx64ピクセルであるが、VVC用にはこのサイズが128ピクセルx128ピクセルであり得る。各CTUは順番に、四分木分解を使用して、より小さい可変サイズ符号化ユニット(CU)5に反復的に分割されてもよい。
符号化ユニットは基本符号化要素であり、予測ユニット(PU)と変換ユニット(TU)と呼ばれる2種類のサブユニットから構成される。PUまたはTUの最大サイズは、CUサイズに等しい。予測ユニットは、ピクセル値の予測のためのCUの区分に対応する。6に示すように、4つの正方形PUへのパーティションと2つの長方形PUへの2つの異なるパーティションとを含む、PUへのCUの様々な異なるパーティションが可能である。変換ユニットは、DCTを使用して空間変換を行う基本ユニットである。CUは、四分木表現7に基づいてTUにパーティション化できる。
各スライスは、1つのネットワーク抽象化層(NAL)ユニットに埋め込まれる。さらに、ビデオシーケンスの符号化パラメータは、パラメータセットと呼ばれる専用NALユニットに記憶される。HEVCおよびH.264/AVCでは、2種類のパラメータセットNALユニットが使用される:第1に、ビデオシーケンス全体の間に変更されないすべてのパラメータを収集するシーケンスパラメータセット(SPS)NALユニット。典型的には、それは符号化プロファイル、ビデオフレームのサイズ、及び他のパラメータを処理する。第2に、ピクチャパラメータセット(PPS)NALユニットは、シーケンスの1つの画像(またはフレーム)から別の画像(またはフレーム)に変更することができるパラメータを含む。HEVCには、ビットストリームの全体的な構造を記述するパラメータを含むビデオパラメータセット(VPS)NALユニットも含まれている。VPSは、HEVCで定義された新しいタイプのパラメータセットで、ビットストリームのすべてのレイヤに適用される。レイヤには、複数の時間的サブレイヤを含めることができ、すべてのバージョン1のビットストリームは、1つのレイヤに制限される。HEVCには、拡張性とマルチビューのための特定の層拡張があり、これらは後方互換性のあるバージョン1基本層を備えた複数の層を可能にする。
図2および図18は、本発明の1つまたは複数の実施形態を実施することができる(データ)通信システムを示す。データ通信システムは、データ通信ネットワーク200を介して、データストリーム(例えば、ビットストリーム101)のデータパケットを受信装置195、例えば、クライアント端末202に送信するように動作可能な、送信装置191、例えば、サーバ201を含む。データ通信ネットワーク200は、ワイドエリアネットワーク(WAN)またはローカルエリアネットワーク(LAN)であってもよい。このようなネットワークは例えば、無線ネットワーク(Wifi/802.11aまたはbまたはg)、イーサネットネットワーク、インターネットネットワーク、またはいくつかの異なるネットワークから構成される混合ネットワークであってもよい。本発明の特定の実施形態では、データ通信システムは、サーバ201が同じデータコンテンツを複数のクライアントに送信するデジタルテレビ放送システムであってもよい。
サーバ201によって提供されるデータストリーム204(またはビットストリーム101)は、ビデオを表すマルチメディアデータ(例えば、画像151のシーケンス)およびオーディオデータから構成されてもよい。オーディオおよびビデオデータストリームは、本発明のいくつかの実施形態では、それぞれマイクロフォンおよびカメラを使用してサーバ201によってキャプチャされ得る。いくつかの実施形態において、データストリームは、サーバ201上に記憶されてもよく、あるいは別のデータプロバイダからサーバ201によって受信されてもよく、あるいはサーバ201で生成されてもよい。サーバ201は特に、エンコーダへの入力として提示されるデータのよりコンパクトな表現である送信のための圧縮ビットストリーム101を提供するために、ビデオストリームおよびオーディオストリームを符号化するためのエンコーダ150を備える。
送信データの品質対送信データの量のより良好な比率を得るために、ビデオデータの圧縮は例えば、HEVCフォーマット、またはH.264/AVCフォーマット、またはVVCフォーマットに従ってもよい。
クライアント202は、送信されたビットストリーム101を受信し、そのデコーダ100は再構成されたビットストリームを復号して、表示装置上でビデオ画像(例えば、ビデオ信号109)を再生し、スピーカによってオーディオデータを再生する。
図2および図18の例では、ストリーミングシナリオが考慮されているが、本発明のいくつかの実施形態では、エンコーダとデコーダとの間のデータ通信が例えば、光ディスクなどの媒体記憶デバイスを使用して実行され得ることが理解されよう。
本発明の1つまたは複数の実施形態では、ビデオ画像は、画像の再構成されたピクセルに適用して最終画像内のフィルタリングされたピクセルを提供するために、補償オフセットを表すデータと共に送信される。
図3は、本発明の少なくとも1つの実施形態を実施するように構成された処理装置300を概略的に示す。処理装置300は、マイクロコンピュータ、ワークステーション、またはライトポータブル装置などの装置とすることができる。装置300は、
-CPUで示されるマイクロプロセッサなどの中央処理部311
-本発明を実施するためのコンピュータプログラムを記憶するためのROMと表記される読み出し専用メモリ307
-本発明の実施形態の方法の実行可能コード、ならびに本発明の実施形態に係るデジタル画像のシーケンスを符号化する方法および/またはビットストリームを復号する方法を実現するために必要な変数およびパラメータを記録するように構成されたレジスタを記憶するRAMで示されたランダムアクセスメモリ312
-処理されるデジタルデータが送受信される通信ネットワーク303に接続された通信インターフェース302
と接続された通信バス313を備える。
オプションで、装置300は、以下の構成要素を含むこともできる。
-本発明の1つまたは複数の実施形態の方法を実施するためのコンピュータプログラム、および本発明の1つまたは複数の実施形態の実施中に使用または生成されるデータを記憶するための、ハードディスクなどのデータ記憶手段304
-ディスク306用のディスクドライブ305であって、ディスクドライブはディスク306からデータを読み取るか、またはディスクにデータを書き込むように構成されている
-キーボード310または他の任意のポインティング手段を用いて、データを表示し、および/またはユーザとのグラフィカルインターフェースとして機能する画面309
装置300は例えば、デジタルカメラ320またはマイクロフォン308のような種々の周辺機器に接続されることが可能であり、各周辺機器はマルチメディアデータを装置300に供給するために、入力/出力カード(図示せず)に接続される。
通信バス313は、装置300に含まれる、またはそれに接続される種々の要素間の通信および相互運用性を提供する。バスの表現は限定されず、特に、中央処理ユニットは直接的に、または装置300の別の要素を用いて、装置300の任意の要素に命令を通信するように動作可能である。
ディスク306は、例えばコンパクトディスク(CD-ROM)、書き換え可能またはそわない、ZIPディスクまたはメモリカードなどの任意の情報媒体に置き換えることができ、一般的に言えば、マイクロコンピュータまたはマイクロプロセッサによって読み取ることができる情報記憶手段によって置き換えることができ、装置に統合または非統合され、可能であれば、リムーバブルであり、実行がデジタル画像のシーケンスを符号化する方法および/または本発明によるビットストリームを復号する方法を実行可能にする1つ以上のプログラムを記憶するように構成することができる。
実行可能コードは、読み出し専用メモリ307、ハードディスク304、または先に説明したような例えばディスク306のようなリムーバブルデジタル媒体のいずれかに格納することができる。変形例によれば、プログラムの実行可能コードは、ハードディスク304のような実行される前に装置300の記憶手段の1つに記憶されるために、インターフェース302を介して、通信ネットワーク303によって受信することができる。
中央処理ユニット311は、前述の記憶手段のうちの1つに記憶されている命令で、本発明によるプログラムまたはプログラムのソフトウェアコードの命令または部分の実行を制御し、指示するように構成されている。電源投入時に、例えばハードディスク304上または読み出し専用メモリ307中の不揮発性メモリに記憶されたプログラムまたはプログラムはランダムアクセスメモリ312に転送され、ランダムアクセスメモリ213はプログラムまたはプログラムの実行可能コード、ならびに本発明を実施するために必要な変数およびパラメータを記憶するためのレジスタを含む。
この実施形態では、装置は、本発明を実施するためにソフトウェアを使用するプログラマブル装置である。しかしながら、代替的に、本発明はハードウェア(例えば、特定用途向け集積回路またはASICの形態)で実施されてもよい。
図4は、本発明の少なくとも1つの実施形態によるエンコーダのブロック図を示す。エンコーダは、接続されたモジュールによって表され、各モジュールは例えば、デバイス300のCPU311によって実行されるべきプログラム命令の形態で、本発明の1つまたは複数の実施形態による画像のシーケンスの画像を符号化する少なくとも1つの実施形態を実施する方法の少なくとも1つの対応するステップを実施するように適合される。
ディジタル画像i0~in401のオリジナルシーケンスは、エンコーダ400によって入力として受信される。各デジタル画像は、時には画素(以下、画素と呼ぶ)とも呼ばれる1組のサンプルによって表される。
ビットストリーム410は、符号化処理の実施後にエンコーダ400によって出力される。ビットストリーム410は、複数の符号化ユニットまたはスライスを備え、各スライスはスライスを符号化するために使用される符号化パラメータの符号化値を送信するためのスライスヘッダと、符号化されたビデオデータを備えるスライス本体とを備える。
入力デジタル画像i0~in401は、モジュール402によってピクセルのブロックに分割される。ブロックは、画像部分に対応し、可変サイズであってもよい(例えば、4×4、8×8、16×16、32×32、64×64、128×128ピクセル、およびいくつかの矩形ブロックサイズも考慮することができる)。符号化モードは、各入力ブロックに対して選択される。空間的予測符号化(イントラ予測)に基づく符号化モードと、時間的予測に基づく符号化モード(インター符号化、マージ、SKIP)の2つのファミリの符号化モードが提供される。可能な符号化モードがテストされる。
モジュール403は、符号化されるべき所与のブロックが符号化されるべき前記ブロックの近隣の画素から計算された予測子によって予測されるイントラ予測処理を実施する。選択されたイントラ予測子の指示、および所与のブロックとその予測子との間の差は、イントラ符号化が選択された場合に残差を提供するために符号化される。
時間的予測は、動き推定モジュール404および動き補償モジュール405によって実施される。最初に、参照画像416のセットの中から参照画像が選択され、符号化されるべき所与のブロックに最も近い領域(画素値類似性に関して最も近い)である参照領域または画像部分とも呼ばれる参照画像の部分が、動き推定モジュール404によって選択される。次いで、動き補償モジュール405は、選択された領域を使用して、符号化されるべきブロックを予測する。選択された参照領域と、残差ブロックとも呼ばれる所与のブロックとの間の差は、動き補償モジュール405によって計算される。選択された参照領域は、動きベクトルを用いて示される。
したがって、両方の場合(空間的予測および時間的予測)において、残差は、元のブロックから予測子を減算することによって計算される。
モジュール403によって実施されるINTRA予測では、予測方向が符号化される。モジュール404、405、416、418、417によって実施されるインター予測では、そのような動きベクトルを識別するための少なくとも1つの動きベクトルまたはデータが時間的予測のために符号化される。
インター予測が選択された場合、動きベクトルおよび残差ブロックに関連する情報が符号化される。ビットレートをさらに低減するために、動きが均一であると仮定すると、動きベクトルは、動きベクトル予測子に対する差によって符号化される。1組の動き情報予測子候補からの動きベクトル予測子は、動きベクトル予測符号化モジュール417によって動きベクトルフィールド418から得られる。
エンコーダ400はさらに、レート歪み基準などの符号化コスト基準を適用することによって、符号化モードを選択するための選択モジュール406を備える。冗長性をさらに低減するために、変換モジュール407によって変換(DCTなど)を残差ブロックに適用し、得られた変換データを量子化モジュール408によって量子化し、エントロピー符号化モジュール409によってエントロピー符号化する。最後に、符号化されている現在のブロックの符号化された残差ブロックがビットストリーム410に挿入される。
また、エンコーダ400は、後続の画像の動き推定のための参照画像(例えば、参照画像/ピクチャ416内のそれら)を生成するために、符号化された画像の復号を実行する。これは、ビットストリームを受信するエンコーダ及びデコーダが同じ参照フレームを有する(再構成された画像又は画像部分が使用される)ことを可能にする。逆量子化(「デクオンタイゼイション」)モジュール411は、量子化データの逆量子化(「デクオンタイゼイション」)を行い、続いて逆変換モジュール412による逆変換を行う。イントラ予測モジュール413は、予測情報を使用して、所与のブロックにどの予測子を使用するを決定し、動き補償モジュール414は、モジュール412によって得られた残差を、参照画像416のセットから得られた参照領域に実際に加算する。
その後、モジュール415によってポストフィルタリングが適用され、画素の再構成されたフレーム(画像または画像部分)がフィルタリングされる。本発明の実施形態では、補償オフセットが再構成画像の再構成画素の画素値に付加されるSAOループフィルタが使用される。ポストフィルタリングは、必ずしも実行される必要はないことが理解される。また、SAOループフィルタリングに加えて、またはSAOループフィルタリングの代わりに、任意の他のタイプのポストフィルタリングを実行することもできる。
図5は、本発明の一実施形態による、エンコーダからデータを受信するために使用され得るデコーダ60のブロック図を示す。デコーダは、接続されたモジュールによって表され、各モジュールは例えば、デバイス300のCPU311によって実行されるプログラム命令の形成で、デコーダ60によって実現される方法の対応するステップを実現するように構成される。
デコーダ60は、符号化ユニット(例えば、ブロックまたは符号化ユニットに対応するデータ)を含むビットストリーム61を受信し、各符号化ユニットは、符号化パラメータに関する情報を含むヘッダと、符号化されたビデオデータを含む本体とから構成される。図4に関して説明したように、符号化されたビデオデータは、エントロピー符号化され、動きベクトル予測子のインデックスは、所与のブロックに対して、所定のビット数で符号化される。受信された符号化ビデオデータは、モジュール62によってエントロピー復号される。次いで、残差データはモジュール63によって逆量子化され、次いで、画素値を得るためにモジュール64によって逆変換が適用される。
符号化モードを示すモードデータもエントロピー復号され、このモードに基づいて、画像データの符号化ブロック(ユニット/セット/グループ)に対してINTRAタイプ復号またはINTERタイプ復号が行われる。
INTRAモードの場合、INTRA予測子は、ビットストリームで指定されたイントラ予測モードに基づいてイントラ予測モジュール65によって決定される。
モードがINTERである場合、エンコーダによって使用される参照領域を見つける(識別する)ために、動き予測情報がビットストリームから抽出される。動き予測情報は、参照フレームインデックスと動きベクトル残差とを含む。動きベクトル予測子は動きベクトルを得るために、動きベクトル復号モジュール70によって動きベクトル残差に加算される。
動きベクトル復号モジュール70は、動き予測によって符号化された現在のブロックごとに、動きベクトル復号を適用する。現在のブロックに対する動きベクトル予測子のインデックスが得られると、現在のブロックに関連する動きベクトルの実際の値が復号され、モジュール66によって動き補償を適用するために使用され得る。復号された動きベクトルによって示される参照画像部分は、参照画像68から抽出され、動き補償66が適用される。動きベクトルフィールドデータ71は、後続の復号された動きベクトルの予測に使用されるために、復号された動きベクトルで更新される。
最後に、復号されたブロックが得られる。適切な場合には、ポストフィルタリングモジュール67によってポストフィルタリングが適用される。復号されたビデオ信号69が最終的に得られ、デコーダ60によって与えられる。
CABAC
HEVCは、CABAC(Context based Adaptive Binary Arithmetic Coding)、ゴロムライス符号化(Golomb-rice Code)、または固定長符号化(Fixed Length Coding)と呼ばれる単純なバイナリ表現など、いくつかのタイプのエントロピー符号化を使用する。ほとんどの場合、異なるシンタックス要素を表現するためにバイナリ符号化処理が実行される。このバイナリ符号化処理も非常に具体的であり、異なるシンタックス要素に依存する。算術符号化は、それらの現在の確率に従ってシンタックス要素を表す。CABACは、コンテキスト変数によって定義される「コンテキスト」に応じてシンタックス要素の確率を分離する算術符号化の拡張である。これは条件付き確率に相当する。コンテキスト変数は、すでに復号されている、左上のブロック(以下で詳細に説明する図6bのA2)および左上のブロック(図6bのB3)の現在のシンタックスの値から導き出すことができる。
CABACは、H.264/AVCおよびH.265/HEVC規格の基準部分として採用されている。H.264/AVCでは、エントロピー符号化の2つの代替方法のうちの1つである。H.264/AVCに規定された他の方法は、可変長符号の文脈適応的に切り替えられるセット、いわゆる文脈適応型可変長符号化(CAVLC)の使用に基づく低複雑性エントロピー符号化技術である。CABACと比較して、CAVLCは、より低い圧縮効率を犠牲にして、低減された実装コストを提供する。標準解像度または高精細度解像度のTV信号の場合、CABACは通常、同じ客観的なビデオ品質でCAVLCに対して10~20%のビットレートの節約を提供する。HEVCにおいて、CABACは使用されるエントロピー符号化方法の一つである。多くのビットはまた、バイパスCABAC符号化される。さらに、いくつかのシンタックス要素は単項コードまたはGolombコードで符号化され、これは他のタイプのエントロピーコードである。
図17は、CABACエンコーダのメインブロックを示す。
非バイナリ値である入力シンタックス要素は、バイナライザ1701によって2値化される。CABACの符号化戦略は、動きベクトル差または変換係数レベル値の成分のような、ハイブリッドブロックベースのビデオ符号化器におけるシンタックス要素値の非常に効率的な符号化が、コンテキストモデリングおよび2進算術符号化の後続ステージのための一種の前処理ユニットとして2値化方式を使用することによって達成され得るという発見に基づく。一般に、2値化方式は、シンタックス要素値の二値決定のシーケンス、いわゆるビンへのユニークなマッピングを定義し、これは2値コードツリーの観点から解釈することもできる。CABACにおける2値化方式の設計は、その構造が簡単なオンライン計算を可能にし、幾つかの適当なモデル-確率分布に適用される少数の基本的なプロトタイプに基づいている。
各ビンは、スイッチ1702の設定に従って、2つの基本的な方法のうちの1つで処理することができる。スイッチが「正規(regular)」設定にある場合、ビンはコンテキストモデラ1703および正規符号化エンジン1704に供給される。スイッチが「バイパス」設定にある場合、コンテキストモデラはバイパスされ、ビンはバイパス符号化エンジン1705に供給される。別のスイッチ1706はスイッチ1702と同様の「正規」および「バイパス」設定を有し、その結果、符号化エンジン1704および1705のうちの適用可能な1つによって符号化されたビンは、CABACエンコーダの出力としてビットストリームを形成することができる。
他のスイッチ1706は、ビットストリーム中のバイパス符号化データのブロックを提供するために符号化エンジン1705によって符号化されたビンのいくつか(例えば、ブロックまたは符号化ユニットを符号化するためのビン)をグループ化するために、およびビットストリーム中の「正規の」(または算術的に)符号化されたデータの別のブロックを提供するために符号化エンジン1704によって符号化されたビンのいくつか(例えば、ブロックまたは符号化ユニットを符号化するためのビン)をグループ化するために、ストレージとともに使用され得ることが理解される。バイパス符号化データと正規符号化データとのこの別個のグループ分けは、復号処理中のスループットの改善をもたらすことができる。
各シンタックス要素値をビンのシーケンスに分解することによって、CABACにおける各ビン値のさらなる処理は、関連する符号化モード決定に依存し、これは、正規モードまたはバイパスモードのいずれかとして選択することができる。後者は符号情報に関連するビン、または一様に分布していると仮定され、その結果、正規の2進算術符号化処理全体が単にバイパスされる、下位の有意なビンのために選択される。正規の符号化モードでは、各ビン値が正規の2進算術符号化エンジンを使用することによって符号化され、関連する確率モデルはコンテキストモデリングなしに固定選択によって決定されるか、または関連するコンテキストモデルに応じて適応的に選択される。重要な設計決定として、後者の場合は一般に、最も頻繁に観測されるビンのみに適用され、他の、通常は頻繁に観測されないビンは、ジョイント、典型的にはゼロ次確率モデルを使用して処理される。このようにして、CABACはサブシンボルレベルでの選択的なコンテキストモデリングを可能にし、したがって、全体的なモデリングまたは学習コストを大幅に低減してシンボル間冗長性を利用するための効率的な手段を提供する。コンテキストモデルの特定の選択に対して、4つの基本設計タイプをCABACで採用し、その中の2つを変換係数レベルのみの符号化に適用した。これらの4つのプロトタイプの設計は、モデル化されるソースデータの典型的な特性に関する先験的な知識に基づいており、不必要なモデル化コストのオーバヘッドを回避し、統計的依存性を大幅に活用するという相反する目的の間の良好な妥協点を見つける目的を反映している。
CABACにおける最低レベルの処理では、各ビン値が正規またはバイパス符号化モードのいずれかで、バイナリ算術符号器に入る。後者の場合、かなり低減された複雑さを有する符号化エンジンのファーストブランチ(fast branch)が使用され、一方、前者の符号化モードの場合、所与のビン値の符号化は、ビン値と共にMコーダに渡される関連する適応確率モデルの実際の状態に依存し、この用語は、CABACにおけるテーブルベースの適応2進算術符号化エンジンのために選択された用語である。
インター符号化
HEVCは、インターモード(高度動きベクトル予測(AMVP))、「古典的」マージモード(すなわち、「非アフィンマージモード」または「正規」マージモードとしても知られる)、および「古典的」マージスキップモード(すなわち、「非アフィンマージスキップ」モードまたは「正規」マージスキップモードとしても知られる)の3つの異なるINTERモードを使用する。これらのモード間の主な違いは、ビットストリームにおけるデータシグナリングである。動きベクトル符号化の場合、現在のHEVC規格は、規格の以前のバージョンには存在しなかった動きベクトル予測のための競合ベースのスキームを含む。インターモードまたはマージモード(すなわち、「古典的/正規」マージモードまたは「古典的/正規」マージスキップモード)のそれぞれについて、最良の動きベクトル予測子または最良の動き情報を見つけるために、いくつかの候補が符号器側でレート歪み基準と競合することを意味する。次に、最良の予測子または動き情報の最良の候補に対応するインデックスがビットストリームに挿入される。デコーダは、予測子または候補の同じセットを導出することができ、復号されたインデックスに従って最良のものを使用する。HEVCのスクリーンコンテンツ拡張では、イントラブロックコピー(IBC)と呼ばれる新しいコーディングツールが、これら3つのインターモードのいずれかとしてシグナリングされ、IBCと同等のインターモードとの間の差は、参照フレームが現在のものであるかどうかをチェックすることによって行われる。これは、例えば、リストL0の参照インデックスをチェックし、これがリスト内の最後のフレームである場合、これがイントラブロックコピーであると推定することによって実施することができる。別の方法は、現在のフレームと参照フレームとのピクチャオーダーカウントを比較することで、等しい場合、これはイントラブロックコピーである。
予測子および候補の導出の設計は、複雑さに不均衡な影響を与えることなく、最良の符号化効率を達成する上で重要である。HEVCでは、2つの動きベクトル導出が使用される:1つはインターモード(Advanced Motion Vector Prediction(AMVP))のためのものであり、1つはマージモード(Merge derivation process - for the classical Merge mode and the classical Merge Skip mode)のためのものである。以下、これらの処理について説明する。
図6aおよび図6bは、HEVC符号化および復号システムの高度動きベクトル予測(AMVP)およびマージモードにおける動きベクトル予測子を生成するために使用することができる空間的ブロックおよび時間的ブロックを示し、図7は、AMVP予測子セット導出の処理の簡略化されたステップを示す。
2つの空間的予測子、すなわちAMVPモードのための2つの空間的動きベクトルが、上隅ブロック(ブロックB2)および左隅ブロック(ブロックA0)を含む上ブロック(文字「B」によって示される)および左ブロック(文字「A」によって示される)の動きベクトルの中から選択され、1つの時間的予測子が図6aに表されるように、コロケートされたブロックの右下ブロック(H)および中央ブロック(Center)の動きベクトルの中から選択される。
以下の表1は、図6aおよび6bに示されるように、現在のブロックを基準にしてブロックを参照するときに使用される命名法の概要を示す。この命名法は、簡潔に使用されるが、特に将来の規格のバージョンでは他のラベル付けシステムが使用されてもよいことを理解されたい。
「現在のブロック」は、サイズが、4x4、16x16、32x32、64x64、128x128、またはその間の任意のサイズなど、可変であることに注意する必要がある。ブロックの寸法は、好ましくは2の倍数(すなわち、2^n×2^m ここで、nおよびmは正の整数である)であり、これは、バイナリ符号化を使用する場合、ビットのより効率的な使用をもたらす。現在のブロックは、正方形である必要はないが、これはしばしば、符号化の複雑さのための好ましい実施形態である。
図7を参照すると、第1ステップは、左下のブロックA0およびA1の中から第1空間的予測子(Cand1、706)を選択することを目的とし、その空間的位置が図6aに示される。そのために、これらのブロックは、所与の順序で次々に選択され(700、702)、選択されたブロックごとに、所与の順序で以下の条件が評価され(704)、条件が満たされる第1ブロック(first block)は、予測子として設定される。
-同じ参照画像と同じ参照リストからの動きベクトル
-同じ参照画像と他の参照リストからの動きベクトル
-異なる参照画像と同じ参照リストからのスケーリングされた動きベクトル
-異なる参照画像と他の参照リストからのスケーリングされた動きベクトル
値が見つからない場合、左予測子は使用不可と見なされる。この場合、関連ブロックがイントラ符号化されているか、またはそれらのブロックが存在しないことを示す。
後のステップは、上の右ブロックB0、上のブロックB1、および上の左ブロックB2の中から第2空間的予測子(Cand2、716)を選択することを目的とし、その空間的位置が図6aに示されている。そのために、これらのブロックは、所与の順序で次々に選択され(708、710、712)、選択されたブロックごとに、所与の順序で上述の条件が評価され(714)、上述の条件が満たされる第1ブロックが予測子として設定される。
再び、値が見つからない場合、上の予測子は利用不可能であると見なされる。この場合、関連ブロックがイントラ符号化されているか、またはそれらのブロックが存在しないことを示す。
次のステップ(718)において、2つの予測子は、両方が利用可能である場合、それらが等しい場合(すなわち、同じ動きベクトル値、同じ参照リスト、同じ参照インデックス、および同じ方向タイプ)、それらのうちの1つを除去するために、互いに比較される。1つの空間的予測子のみが利用可能である場合、アルゴリズムは、後のステップにおいて時間的予測子を探している。
時間的動き予測子(Cand3,726)は、次のように導出される。前の/参照フレームにおけるコロケートされたブロックの右下(H,720)位置がまず、利用可能性チェックモジュール722において考慮される。それが存在しない場合、または動きベクトル予測子が利用可能でない場合、コロケートされたブロックの中央(中央、724)がチェックされるように選択される。これらの時間的位置(中央およびH)を図6aに示す。いずれにせよ、スケーリング723は、現在のフレームと参照リスト内の第1フレーム(first frame)との間の時間的距離を一致させるために、これらの候補に適用される。
次に、動き予測子値が予測子のセットに追加される。次に、予測子の数(Nb_Cand)が、予測子の最大数(Max_Cand)と比較される(728)。上述のように、AMVPの導出処理が生成する必要がある動きベクトル予測子の予測子の最大数(Max_Cand)は、HEVC規格の現在のバージョンでは2である。
この最大数に達した場合、AMVP予測子の最終リストまたはセット(732)が構築される。そわなければ、ゼロ予測子がリストに追加される(730)。ゼロ予測子は、(0,0)に等しい動きベクトルである。
図7に示すように、AMVP予測子の最終リストまたはセット(732)は、空間的動き予測子候補のサブセット(700~712)および時間的動き予測子候補のサブセット(720、724)から構築される。
上述のように、古典的マージモードまたは古典的マージスキップモードの動き予測子候補は、方向、リスト、参照フレームインデックス、および動きベクトルというすべての必要な動き情報を表す。いくつかの候補のインデックス付きリストが、マージ導出処理によって生成される。現在のHEVC設計では、両方のマージモード(すなわち、古典的マージモードおよび古典的マージスキップモード)の候補の最大数は5(4つの空間的候補および1つの時間的候補)に等しい。
図8は、マージモード(古典的マージモードおよび古典的マージスキップモード)の動きベクトル導出処理の概略図である。導出処理の第1ステップでは、5つのブロック位置が考慮される(800~808)。これらの位置は、参照番号A1、B1、B0、A0、およびB2で図6aに示される空間的位置である。後のステップにおいて、空間的動きベクトルの利用可能性がチェックされ、考慮のために多くとも5つの動きベクトルが選択/取得される(810)。予測子が存在し、ブロックがイントラ符号化されていない場合、予測子は利用可能であると見なされる。したがって、5つのブロックに対応する動きベクトルを候補として選択することは、以下の条件に従って行われる。
「左」A1動きベクトル(800)が利用可能である場合(810)、すなわち、それが存在し、このブロックがイントラ符号化されていない場合、「左」ブロックの動きベクトルが選択され、候補リスト内の第1候補として使用される(814)。
「上」B1動きベクトル(802)が利用可能である場合(810)、候補「上」ブロック動きベクトルは、存在する場合、「左」A1動きベクトルと比較される(812)。B1動きベクトルがA1動きベクトルに等しい場合、B1は空間的候補のリストに追加されない(814)。逆に、B1動きベクトルがA1動きベクトルに等しくない場合、B1が空間的候補のリストに追加される(814)。
「右上」B0動きベクトル(804)が利用可能である場合(810)、「右上」の動きベクトルがB1動きベクトルと比較される(812)。B0動きベクトルがB1動きベクトルに等しい場合、B0動きベクトルは空間的候補のリストに追加されない(814)。逆に、B0動きベクトルがB1動きベクトルに等しくない場合、B0動きベクトルが空間的候補のリストに追加される(814)。
「左下」A0動きベクトル(806)が利用可能である場合(810)、「左下」の動きベクトルがA1動きベクトルと比較される(812)。A0動きベクトルがA1動きベクトルに等しい場合、A0動きベクトルは空間的候補のリストに追加されない(814)。逆に、A0動きベクトルがA1動きベクトルと等しくない場合、A0動きベクトルが空間的候補のリストに追加される(814)。
空間的候補のリストが4つの候補を含まない場合、「左上」B2動きベクトル(808)の利用可能性がチェックされる(810)。利用可能であれば、A1動きベクトルおよびB1動きベクトルと比較される。B2動きベクトルがA1動きベクトルまたはB1動きベクトルに等しい場合、B2動きベクトルは空間的候補のリストに追加されない(814)。逆に、B2動きベクトルがA1動きベクトルまたはB1動きベクトルに等しくない場合、B2動きベクトルが空間的候補のリストに追加される(814)。
この段階の最後に、空間的候補のリストは、4つまでの候補を含む。
時間的候補については、2つの位置、コロケートされたブロックの右下の位置(816、図6aにおいて示されるH)およびコロケートされたブロックの中央(818)を使用することができる。これらの位置を図6aに示す。
AMVP動きベクトル導出処理の時間的動き予測子について図7に関連して説明したように、第1ステップは、H位置におけるブロックの利用可能性をチェックすること(820)を目的とする。次に、それが利用可能でない場合、中央位置におけるブロックの利用可能性がチェックされる(820)。これらの位置の少なくとも1つの動きベクトルが利用可能である場合、時間的動きベクトルは、マージ動きベクトル予測子候補のリストに追加される時間的候補(824)を作成するために、必要であれば、リストL0およびL1の両方について、インデックス0を有する参照フレームにスケーリングされ得る(822)。これは、リスト内の空間的候補の後に配置される。リストL0およびL1は、ゼロ、1つまたは複数の参照フレームを含む2つの参照フレームリストである。
候補の数(Nb_Cand)が、候補の最大数より厳密に少ない場合(826)(Max_Cand その値は、ビットストリームスライスヘッダにおいてシグナリングされ、現在のHEVC設計において5に等しい)、および現在のフレームがBタイプである場合、結合された候補が生成される(828)。結合された候補は、マージ動きベクトル予測子候補のリストの利用可能な候補に基づいて生成される。これは、主に、リストL0の1つの候補の動き情報を、リストL1の1つの候補の動き情報と組み合わせる(ペアリングする)ことからなる。
候補の数(Nb_Cand)が候補の最大数(Max_Cand)よりも厳密に少ない(830)場合、マージ動きベクトル予測子候補のリストの候補の数が候補の最大数に達するまで、ゼロ動き候補が生成される(832)。
この処理の終わりに、マージ動きベクトル予測子候補のリストまたはセット(すなわち、古典的マージモードおよび古典的マージスキップモードであるマージモードの候補のリストまたはセット)が構築される(834)。図8に示すように、マージ動きベクトル予測子候補のリストまたはセットは、空間的候補のサブセット(800~808)および時間的候補のサブセット(816、818)から構築される(834)。
代替時間的動きベクトル予測(ATMVP)
代替時間的動きベクトル予測(ATMVP)は、特別なタイプの動き補償である。時間的参照フレームからの現在のブロックについて1つの動き情報のみを考慮する代わりに、各コロケートされたブロックの各動き情報が考慮される。したがって、この時間的動きベクトル予測は、図9に示すように、各サブブロックの関連する動き情報を用いて、現在のブロックのセグメンテーションを与える。
現在のVTMリファレンスソフトウェアでは、ATMVPがマージ候補のリスト(すなわち、古典的なマージモードおよび古典的なマージスキップモードであるマージモードの候補のリストまたはセット)に挿入されたマージ候補としてシグナリングされる。SPSレベルでATMVPがイネーブルされると、マージ候補の最大数は1だけ増加される。従って、5の代わりに6つの候補が考慮され、これは、このATMVPモードがディスエーブルされた場合であった。
さらに、この予測がSPSレベルでイネーブルされるとき、マージインデックスのすべてのビン(すなわち、マージ候補のリストから候補を識別するための識別子またはインデックス)は、CABACによってコンテキスト符号化される。HEVC内にある間、またはATMVPがJEM内のSPSレベルでイネーブルされていないとき、第1ビン(first bin)のみがコンテキスト符号化され、残りのビンはコンテキストバイパス符号化される(すなわち、バイパスCABAC符号化される)。図10(a)は、HEVC、またはJEMのSPSレベルでATMVPがイネーブルされていないときのマージインデックスの符号化を示す。これは、単項最大コードに対応する。さらに、第1番目のビット(first bit)はCABAC符号化され、他のビットはバイパスCABAC符号化される。
図10(b)は、ATMVPがSPSレベルでイネーブルされるときのマージインデックスの符号化を示す。さらに、すべてのビットがCABAC符号化される(1番目から5番目のビットまで)。インデックスを符号化するための各ビットは、それ自体のコンテキストを有し、言い換えれば、それらの確率は分離されることに留意されたい。
アフィンモード
HEVCでは、動き補償予測(MCP)のために並進運動モデルのみを適用した。一方、現実世界では、ズームイン/ズームアウト、回転、パースペクティブモーション、および他の不規則なモーションなど、多くの種類のモーションがある。
JEMでは、簡易アフィン変換動き補償予測を適用し、2017年7月13日~21日のTorinoにおけるJVET会議で発表されたJVET-G1001文書の抜粋に基づき、アフィンモードの一般原理を以下に説明する。この文書全体は、JEMで使用される他のアルゴリズムを説明する限り、参照により本明細書に組み込まれる。
図11(a)に示すように、ブロックのアフィン動きフィールドは、2つの制御点動きベクトルによって記述される。
ブロックの動きベクトルフィールド(MVF)は、以下の式によって記述される。
ここで、(v0x、v0y)は、左上隅の制御点の動きベクトルであり、(v1x、v1y)は、右上隅の制御点の動きベクトルである。また、wはブロックCur(現在のブロック)の幅である。
動き補償予測をさらに単純化するために、サブブロックベースのアフィン変換予測を適用した。サブブロックサイズMxNは、式2のように導出され、ここで、MvPreは、動きベクトル分数精度(JEMでは1/16)であり、(v2x,v2y)は式1に従って計算された左上制御点の動きベクトルである。
式2によって導出された後、MおよびNは必要であれば、それぞれwおよびhの除数になるように下方に調整されてもよい。hは、現在のブロックCur(現在のブロック)の高さである。
各M×Nサブブロックの動きベクトルを導出するために、図6aに示されるように、各サブブロックの中央サンプルの動きベクトルは、式1に従って計算され、1/16分数精度に丸められる。次に、動き補償補間フィルタを適用して、導出した動きベクトルを持つ各サブブロックの予測を生成した。
アフィンモードは、インターモード(AMVP、「古典的」マージ、または「古典的」マージスキップ)のような動き補償モードである。その原理は、2つ又は3つの隣接する動き情報に従って画素毎に1つの動き情報を生成することである。JEMでは、アフィンモードが図11(a)/(b)に示すように、各4×4ブロックについて1つの動き情報を導出する(各正方形は4×4ブロックであり、図11(a)/(b)のブロック全体は4×4サイズのこのような正方形の16ブロックに分割された16×16ブロックであり、各4×4正方形ブロックはそれに関連する動きベクトルを有する)。本発明の実施形態では、アフィンモードが、1つの動き情報を導出することができる限り、異なるサイズまたは形状のブロックについて1つの動き情報を駆動することができることを理解されたい。このモードは、フラグでアフィンモードをイネーブルすることによって、AMVPモードおよびマージモード(すなわち、「非アフィンマージモード」とも呼ばれる古典的マージモード、および「非アフィンマージスキップモード」とも呼ばれる古典的マージスキップモード)に利用可能である。このフラグはCABAC符号化される。一実施形態では、コンテキストが左ブロック(図6bの位置A2)および左上ブロック(図6bの位置B3)のアフィンフラグの合計に依存する。
したがって、JEMでは、後の式で与えられるアフィンフラグに対して3つのコンテキスト変数(0、1、または2)が可能である。
Ctx=IsAffine(A2)+IsAffine(B3)
ここで、IsAffine(block)は、ブロックがアフィンブロックでない場合に0を返し、ブロックがアフィンである場合に1を返す関数である。
アフィンマージ候補導出
JEMでは、アフィンマージモード(またはアフィンマージスキップモード)が位置A1、B1、B0、A0、B2のブロックの中でアフィンである第1隣接ブロック(first neighbouring block)(すなわち、アフィンモードを使用して符号化される第1隣接ブロック)から現在のブロックの動き情報を導出する。これらの位置を図6aおよび6bに示す。しかしながら、アフィンパラメータがどのように導出されるかは完全には定義されておらず、本発明は例えば、アフィンマージモードのアフィンパラメータを定義することによって、少なくともこの態様を改善することを目的とし、その結果、アフィンマージ候補のためのより広い選択の選択を可能にする(すなわち、アフィンである第1隣接ブロックだけでなく、インデックスなどの識別子を用いた選択のために少なくとも1つの他の候補が利用可能である)。
例えば、本発明のいくつかの実施形態によれば、アフィンマージ候補(アフィンモードのための動き情報を導出/取得するための候補)のそれ自体のリストを有するアフィンマージモードと、(アフィンマージ候補のリストから1つのアフィンマージ候補を識別するための)アフィンマージインデックスとが、ブロックを符号化または復号するために使用される。
アフィンマージシグナリング
図12は、アフィンマージモードの使用をシグナリングするための符号化モードに関連するいくつかのシンタックス要素の部分復号処理のフローチャートである。この図では、スキップフラグ(1201)、予測モード(1211)、マージフラグ(1203)、マージインデックス(1208)、およびアフィンフラグ(1206)を復号することができる。
インタースライス内のすべてのCUについて、スキップフラグが復号される(1201)。CUがスキップでない場合(1202)、予測モード(予測モード)が復号される(1211)。このシンタックス要素は、現在のCUがインターモードまたはイントラモードで符号化されている(復号される)かどうかを示す。CUがスキップである場合(1202)、その現在のモードはインターモードであることに留意されたい。CUがスキップでない場合(1202:No)、CUはAMVPまたはマージモードで符号化される。CUがインターの場合(1212)、マージフラグが復号される(1203)。CUがマージである場合(1204)、またはCUがスキップである場合(1202:Yes)、アフィンフラグ(1206)を復号する必要があるかどうか、すなわち(1205)で、現在のCUがアフィンモードで符号化されていた可能性があるかどうかの判定が行われるかどうかが検証/チェックされる(1205)。このフラグは現在のCUが2N×2N CUである場合に復号され、これは、現在のVVCにおいて、CUの高さ及び幅が等しいことを意味する。さらに、少なくとも1つの隣接するCU A1またはB1またはB0またはA0またはB2は、アフィンモード(アフィンマージモードまたはアフィンモードがイネーブルされたAMVPモードのいずれか)で符号化されなければならない。最終的に、現在のCUは4x4 CUではなく、デフォルトではCU 4x4はVTMリファレンスソフトウェアで無効になる。この条件(1205)が偽である場合、現在のCUがHEVCで指定されているような古典的マージモード(または古典的マージスキップモード)で符号化されていることが確実であり、マージインデックスが復号される(1208)。アフィンフラグ(1206)が1に等しく設定される場合(1207)、CUはマージアフィンCU(すなわち、アフィンマージモードで符号化されたCU)またはマージスキップアフィンCU(すなわち、アフィンマージスキップモードで符号化されたCU)であり、マージインデックス(1208)は復号される必要がない(アフィンマージモードが使用される、すなわち、CUは、アフィンである第1隣接ブロックを有するアフィンモードを使用して復号されるため)。そわない場合、現在のCUは古典的な(基本的である)マージまたはマージスキップCU(すなわち、古典的なマージまたはマージスキップモードで符号化されたCU)であり、マージインデックス候補(1208)が復号される。
この仕様では、「シグナリング」とは、その他の情報またはモードの有効化または無効化を表す1つ以上のシンタックス要素をビットストリームに挿入(提供/組み込み)、またはビットストリームから抽出/取得することを指す場合がある。
マージ候補導出
図13は、マージ候補(すなわち、古典的マージモードまたは古典的マージスキップモードの候補)導出を示すフローチャートである。この導出は、図8に示すマージモードの動きベクトル導出処理(すなわち、HEVCのマージ候補リスト導出)の上に構築されたものである。HEVCと比較した主な変更は、ATMVP候補(1319、1321、1323)の追加、候補の全重複チェック(1325)、および候補の新しい順序である。ATMVP予測は、現在のCUのいくつかの動き情報を表すので、専用の候補として設定される。第1サブブロック(first sub-block)(左上)の値は、時間的候補と比較され、時間的候補はそれらが等しい場合、マージのリストに追加されない(1320)。ATMVP候補は、他の空間的候補と比較されない。リスト内に既にある各空間的候補と比較され(1325)、重複候補であればマージ候補リストに追加されない時間的候補とは対照的である。
空間的候補がリスト内に追加されると、それはリスト内の他の空間的候補と比較され(1312)、これはHEVCの最終バージョンの場合ではない。
現在のVTMバージョンでは、マージ候補のリストが、符号化テスト条件に対して最良の結果を提供すると判定されたときに、以下の順序で設定される。
・ A1
・ B1
・ B0
・ A0
・ ATMVP
・ B2
・ 時間的
・ 組み合わせ
・ Zero_MV
空間的候補B2は、ATMVP候補の後に設定されることに留意することが重要である。
さらに、ATMVPがスライスレベルでイネーブルされるとき、候補のリスト内の最大数は、HEVCの5ではなく6である。
次に、本発明の例示的な実施形態を、図12~16および22~24を参照して説明する。実施形態は特に明記しない限り組み合わされてもよく、例えば、実施形態の特定の組合せは複雑さを増しながら符号化効率を改善してもよいが、これは特定の使用事例では許容可能であり得ることに留意されたい。
第1の実施形態
上述のように、現在のVTMリファレンスソフトウェアでは、ATMVPがマージ候補のリストに挿入されたマージ候補としてシグナリングされる。ATMVPは、(SPSレベルで)シーケンス全体に対してイネーブルまたはディスエーブルされることができる。ATMVPがディスエーブルされると、マージ候補の最大数は5である。ATMVPがイネーブルされると、マージ候補の最大数は、5から6に1だけ増加される。
エンコーダでは、図13の方法を使用してマージ候補のリストが生成される。1つのマージ候補が例えばレート歪み基準に基づいてマージ候補のリストから選択される。選択されたマージ候補は、マージインデックスと呼ばれるシンタックス要素を使用して、ビットストリーム内のデコーダにシグナリングされる。
現在のVTMリファレンスソフトウェアでは、ATMVPがイネーブルされているかディスエーブルされているかによって、マージインデックスを符号化する方法が異なる。
図10(a)は、ATMVPがSPSレベルでイネーブルされないときのマージインデックスの符号化を示す。5つのマージ候補Cand0、Cand1、Cand2、Cand3、およびCand4は、それぞれ、0、10、110、1110、および1111に符号化される。これは、単項最大符号化に対応する。さらに、第1番目のビットは、単一のコンテキストを使用してCABACによって符号化され、他のビットはバイパス符号化される。
図10(b)は、ATMVPがイネーブルされたときのマージインデックスの符号化を示す。6つのマージ候補Cand0、Cand1、Cand2、Cand3、Cand4、およびCand5は、それぞれ、0、10、110、1110、11110、および11111に符号化される。この場合、マージインデックスのすべてのビット(1番目から5番目のビットまで)がCABACによってコンテキスト符号化される。各ビットはそれ自体のコンテキストを有し、異なるビットに対して別々の確率モデルが存在する。
本発明の第1の実施形態では図14に示すように、マージ候補のリストにマージ候補としてATMVPが含まれている場合(例えば、SPSレベルでATMVPがイネーブルされている場合)、マージインデックスの符号化は、マージインデックスの第1番目のビットのみが単一のコンテキストを使用してCABACによって符号化されるように修正される。コンテキストは、ATMVPがSPSレベルでイネーブルされていない場合、現在のVTMリファレンスソフトウェアと同じ方法で設定される。他のビット(2番目から5番目まで)は、バイパス符号化される。マージ候補のリストにマージ候補としてATMVPが含まれていない場合(例えば、SPSレベルでATMVPがディスエーブルされている場合)、5つのマージ候補が存在する。マージインデックスの第1番目のビットのみが、単一のコンテキストを使用してCABACによって符号化される。コンテキストは、ATMVPがSPSレベルでイネーブルされていない場合、現在のVTMリファレンスソフトウェアと同じ方法で設定される。他のビット(2番目から4番目のビットまで)は、バイパス復号される。
デコーダは、エンコーダと同じマージ候補のリストを生成する。これは、図13の方法を使用することによって達成することができる。ATMVPがマージ候補のリストにマージ候補として含まれていない場合(例えば、ATMVPがSPSレベルでディスエーブルされている場合)、5つのマージ候補がある。マージインデックスの第1番目のビットのみが、単一のコンテキストを使用してCABACによって復号される。他のビット(2番目から4番目のビットまで)は、バイパス復号される。現在のリファレンスソフトウェアとは対照的に、ATMVPがマージ候補のリストにマージ候補として含まれる場合(例えば、ATMVPがSPSレベルでイネーブルされる場合)、マージインデックスの復号において単一のコンテキストを使用して、マージインデックスの第1番目のビットのみがCABACによって復号される。他のビット(2番目から5番目のビットまで)は、バイパス復号される。復号されたマージインデックスは、マージ候補のリストの中からエンコーダによって選択されたマージ候補を識別するために使用される。
VTM2.0リファレンスソフトウェアと比較したこの実施形態の利点は、符号化効率に影響を与えることなく、マージインデックス復号およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。実際、この実施形態では、現在のVTMマージインデックス符号化/復号のために5ではなく、1つのCABAC状態のみがマージインデックスのために必要とされる。さらに、他のビットはCABACバイパス符号化され、CABACで全てのビットを符号化するのと比較して演算の数を減らすので、最悪の場合の複雑さを減らす。
第2の実施形態
第2の実施形態では、マージインデックスのすべてのビットはCABAC符号化されるが、それらはすべて同じコンテキストを共有する。この場合、ビット間で共有される、第1の実施形態のような単一のコンテキストが存在し得る。その結果、マージ候補のリストにマージ候補としてATMVPが含まれている場合(例えば、SPSレベルでATMVPがイネーブルされている場合)、VTM2.0リファレンスソフトウェアでは5であるのに対して、1つのコンテキストのみが使用される。VTM2.0リファレンスソフトウェアと比較したこの実施形態の利点は、符号化効率に影響を与えることなく、マージインデックス復号およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。
あるいは以下に第3から第15の実施形態に関連して説明するように、コンテキスト変数は、2つ以上のコンテキストが利用可能であるが、現在のコンテキストがビットによって共有されるように、ビット間で共有されてもよい。
ATMVPがディスエーブルされるとき、同じコンテキストが全てのビットに対して依然として使用される。
ATMVPが利用可能なモードでないか、またはディスエーブルされている場合であっても、この実施形態および以降のすべての実施形態を適用することができる。
第2の実施形態の変形では、マージインデックスの任意の2つ以上のビットがCABAC符号化され、同じコンテキストを共有する。マージインデックスの他のビットは、バイパス符号化される。例えば、マージインデックスの最初のNビットは、CABAC符号化されてもよく、ここで、Nは2以上である。
第3の実施形態
第1の実施形態では、マージインデックスの第1番目のビットが単一のコンテキストを使用してCABAC符号化された。
第3の実施形態では、マージインデックスのビットのコンテキスト変数が隣接ブロックのマージインデックスの値に依存する。これにより、各コンテキストがコンテキスト変数の異なる値に対応する、ターゲットビットに複数のコンテキストが可能になる。
隣接ブロックは、すでに復号されている任意のブロックであってもよく、その結果、そのマージインデックスは、現在のブロックが復号されている時間までにデコーダに利用可能である。例えば、隣接ブロックは、図6bに示されるブロックA0、A1、A2、B0、B1、B2、およびB3のいずれかであってもよい。
第1の変形例では、第1番目のビットだけがこのコンテキスト変数を使用してCABAC符号化される。
第2の変形例では、マージインデックスの最初のNビット、ここでNは2以上である、はCABAC符号化され、コンテキスト変数は、これらのNビット間で共有される。
第3の変形例では、マージインデックスの任意のNビット、ここでNは2以上である、がCABAC符号化され、コンテキスト変数が、これらのNビット間で共有される。
第4の変形例では、マージインデックスの最初のNビット、ここでNは2以上である、はCABAC符号化され、N個のコンテキスト変数がこれらのNビットに使用される。コンテキスト変数がK個の値を有すると仮定すると、KxN個のCABAC状態が使用される。例えば、本実施形態では、1つの隣接ブロックを用いて、コンテキスト変数は2つの値、例えば、0及び1を都合よく有することができる。換言すれば、2N個のCABAC状態が使用される。
第5の変形例では、マージインデックスの任意のNビット、ここで、Nは2以上である、は適応PM符号化され、N個のコンテキスト変数がこれらのNビットのために使用される。
同様の変形例は、以下に説明する第4~第16の実施形態に適用可能である。
第4の実施形態
第4の実施形態では、マージインデックスのビットのコンテキスト変数が、2つ以上の隣接ブロックのマージインデックスのそれぞれの値に依存する。例えば、第1隣接ブロックは左ブロックA0、A1またはA2であり、第2隣接ブロック(second neighbouring block)は上ブロックB0、B1、B2またはB3である。2つ以上のマージインデックス値を組み合わせる方法は、特に限定されない。例を以下に示す。
コンテキスト変数は便宜上、2つの隣接ブロックが存在するので、この場合、3つの異なる値、例えば、0、1、および2を有することができる。したがって、第3の実施形態に関連して説明した第4の変形例が、3つの異なる値を有するこの実施形態に適用される場合、Kは2ではなく3である。換言すれば、3N個のCABAC状態が使用される。
第5の実施形態
第5の実施形態では、マージインデックスのビットのコンテキスト変数が、隣接ブロックA2およびB3のマージインデックスのそれぞれの値に依存する。
第6の実施形態
第6の実施形態では、マージインデックスのビットのコンテキスト変数が、隣接ブロックA1およびB1のマージインデックスのそれぞれの値に依存する。この変形例の利点は、マージ候補導出とのアラインメントである。その結果、いくつかのデコーダおよびエンコーダの実装では、メモリアクセスの削減を達成することができる。
第7の実施形態
第7の実施形態では、現在のブロックのマージインデックスにおけるビット位置idx_numを有するビットのコンテキスト変数が、以下の式に従って得られる。
ctxIdx=(Merge_index_left==idx_num)+(Merge_index_up==idx_num)
ここで、Merge_index_leftは左ブロックのマージインデックス、Merge_index_upは上ブロックのマージインデックス、シンボル==は等価シンボルである。
例えば、6つのマージ候補がある場合、0<=idx_num<=5である。
左ブロックはブロックA1であり、上ブロックはブロックB1である(第6の実施形態と同様)。あるいは、左ブロックがブロックA2であり、上ブロックがブロックB3であってもよい(第5の実施形態と同様)。
左ブロックのマージインデックスがidx_numと等しい場合、式(Merge_index_left==idx_num)は1に等しい。次の表は、この式(Merge_index_left==idx_num)の結果を示す。
もちろん、式のテーブル(Merge_index_up==idx_num)は同じである。
次の表は、各マージインデックス値の単項最大コードと、各ビットの相対ビット位置と、を示す。この表は、図10(b)に対応する。
左ブロックがマージブロックまたはアフィンマージブロックでない(すなわち、アフィンマージモードを使用して符号化されている)場合、左ブロックは利用可能ではないと考えられる。上ブロックについても同様の条件が適用される。
例えば、第1番目のビットのみがCABAC符号化される場合、コンテキスト変数ctxIdxは、
左上のブロックがマージインデックスを有さない場合、または左ブロックマージインデックスが第1インデックス(first index)ではない(すなわち0ではない)場合、および上ブロックマージインデックスが第1インデックスではない(すなわち0ではない)場合は0
左ブロックおよび上ブロックのうちの一方であって他方ではないブロックが第1インデックスに等しいマージインデックスを有する場合は1
左ブロックおよび上ブロックのそれぞれについてマージインデックスが第1インデックスに等しい場合は2
に等しく設定される。
より一般的には、CABAC符号化された位置idx_numのターゲットビットの場合、コンテキスト変数ctxIdxは、
左上のブロックがマージインデックスを有さない場合、または左ブロックマージインデックスがi番目のインデックスでない場合(i=idx_numの場合)、および上ブロックマージインデックスがi番目のインデックスでない場合は0
左ブロックと上ブロックの一方であって他方ではないブロックがi番目のインデックスと等しいマージインデックスを有する場合は1
左ブロックと上ブロックのそれぞれについてマージインデックスがi番目のインデックスと等しい場合は2
に等しく設定される。ここで、i番目のインデックスは、i=0の場合は第1インデックス(first index)を意味し、i=1の場合は第2インデックス(second index)を、というように意味する。
第8の実施形態
第8の実施形態では、現在のブロックのマージインデックスにおけるビット位置idx_numを有するビットのコンテキスト変数が、以下の式に従って得られる。
Ctx=(Merge_index_left>idx_num)+(Merge_index_up>idx_num) ここで、Merge_index_leftは左ブロックのマージインデックス、Merge_index_upは上ブロックのマージインデックス、シンボル>は「より大きい」を意味する。
例えば、6つのマージ候補がある場合、0<=idx_num<=5である。
左ブロックはブロックA1であり、上ブロックはブロックB1である(第5の実施形態と同様)。あるいは、左ブロックがブロックA2であり、上ブロックがブロックB3であってもよい(第6の実施形態と同様)。
左ブロックのマージインデックスがidx_numより大きい場合、式(Merge_index_left>idx_num)は1に等しい。左ブロックがマージブロックまたはアフィンマージブロックでない(すなわち、アフィンマージモードを使用して符号化されている)場合、左ブロックは利用可能ではないと考えられる。上ブロックについても同様の条件が適用される。
次の表は、この式(Merge_index_left>idx_num)の結果を示す。
例えば、第1番目のビットのみがCABAC符号化される場合、コンテキスト変数ctxIdxは、
左上のブロックがマージインデックスを有さない場合、または左ブロックマージインデックスが第1インデックス以下(すなわち0でない)である場合、および上ブロックマージインデックスが第1インデックス以下(すなわち0でない)である場合は0
左ブロックと上ブロックの一方であって他方ではないブロックが第1インデックスより大きいマージインデックスを有する場合は1
左ブロックと上ブロックの各々についてマージインデックスが第1インデックスより大きい場合は2
に等しく設定される。
より一般的には、CABAC符号化された位置idx_numのターゲットビットの場合、コンテキスト変数ctxIdxは、
左上のブロックがマージインデックスを有さない場合、または左ブロックマージインデックスがi番目のインデックスより小さい場合(i=idx_numの場合)、および上ブロックマージインデックスがi番目のインデックスより小さいか等しい場合は0
左ブロックと上ブロックの一方であって他方ではないブロックがi番目のインデックスより大きいマージインデックスを有する場合は1
左ブロックと上ブロックの各々についてマージインデックスがi番目のインデックスより大きい場合は2
に等しく設定される。
第8の実施形態は、第7の実施形態に対してさらに符号化効率を向上させる。
第9の実施形態
第4~第8の実施形態では、現ブロックのマージインデックスのビットのコンテキスト変数が2つ以上の隣接ブロックのマージインデックスのそれぞれの値に依存した。
第9の実施形態では、現在のブロックのマージインデックスのビットのコンテキスト変数が、2つ以上の隣接ブロックのそれぞれのマージフラグに依存する。例えば、第1隣接ブロックは左ブロックA0、A1またはA2であり、第2隣接ブロックは上ブロックB0、B1、B2またはB3である。
マージフラグは、ブロックがマージモードを使用して符号化されている場合は1にセットされ、スキップモードやアフィンマージモードなどの他のモードが使用されている場合は0にセットされる。VMT2.0では、アフィンマージが基本モードまたは「古典的」マージモードとは別個のモードであることに留意されたい。アフィンマージモードは、専用のアフィンフラグを使用してシグナリングすることができる。あるいは、マージ候補のリストがアフィンマージ候補を含んでもよく、その場合、アフィンマージモードが選択され、マージインデックスを使用してシグナリングされてもよい。
その後、コンテキスト変数は、
左隣接ブロックも上隣接ブロックも、1にセットされたそのマージフラグを有さない場合には0
左および上の隣接ブロックの一方であって他方ではない隣接ブロックが1に設定されたそのマージフラグを有する場合は1
左および上の隣接ブロックの各々が1に設定されたそのマージフラグを有する場合は2
に設定される。
この単純な評価は、VTM2.0に対して符号化効率の改善を達成する。他の利点は、第7および第8の実施形態と比較して、隣接ブロックのマージインデックスではなくマージフラグのみがチェックされる必要があるので、より低い複雑さである。
変形例では、現在のブロックのマージインデックスのビットのコンテキスト変数が単一の隣接ブロックのマージフラグに依存する。
第10の実施形態
第3から第9の実施形態では、現在のブロックのマージインデックスのビットのコンテキスト変数が、1つまたは複数の隣接ブロックのマージインデックス値またはマージフラグに依存した。
第10の実施形態では、現在のブロックのマージインデックスのビットのコンテキスト変数が、現在のブロック(現在の符号化ユニット、つまりCU)のためのスキップフラグの値に依存する。スキップフラグは、現在のブロックがマージスキップモードを使用する場合は1に等しく、それ以外の場合は0に等しくなる。
スキップフラグは、現在のブロックに対してすでに復号または解析されている別の変数またはシンタックス要素の第1の例である。この他の変数またはシンタックス要素は、好ましくは現在のブロックにおける動き情報の複雑さのインジケータである。マージインデックス値の出現は動き情報の複雑さに依存するので、スキップフラグのような変数またはシンタックス要素は一般にマージインデックス値と相関する。
より具体的には、マージスキップモードが一般に、静止シーンまたは一定の動きを伴うシーンに対して選択される。その結果、マージインデックス値は一般に、ブロック残差を含むインター予測を符号化するために使用される古典的なマージモードよりもマージスキップモードの方が低い。これは、一般に、より複雑な動きに対して生じる。しかしながら、これらのモード間の選択は、量子化及び/又はRD基準にも関連することが多い。
この単純な評価は、VTM2.0に対して符号化効率を向上させる。また、それは、隣接ブロック又はマージインデックス値をチェックすることを伴わないので、実施するのが非常に簡単である。
第1の変形例では、現在のブロックのマージインデックスのビットのコンテキスト変数が、単に現在のブロックのスキップフラグに等しく設定される。ビットは、第1番目のビットのみにすることができる。他のビットは、第1の実施形態のようにバイパス符号化される。
第2の変形例では、マージインデックスのすべてのビットがCABAC符号化され、それらの各々はマージフラグに応じてそれ自体のコンテキスト変数を有する。これは、(6つのマージ候補に対応する)マージインデックス内に5つのCABAC符号化ビットがあるときに10の確率状態を必要とする。
第3の変形例では、状態の数を制限するために、マージインデックスのNビットのみがCABAC符号化され、ここで、Nは2以上、例えば最初のNビットである。これは、2Nの状態を必要とする。例えば、最初の2ビットがCABAC符号化される場合、4つの状態が必要とされる。
一般に、スキップフラグの代わりに、現在のブロックに対して既に復号または解析されていて、現在のブロックにおけるモーション情報の複雑さのインジケータである任意の他の変数またはシンタックス要素を使用することが可能である。
第11の実施形態
第11の実施形態は、図11(a)、図11(b)および図12を参照して前述したアフィンマージシグナリングに関する。
第11の実施形態では、現在のブロック(現在のCU)のマージインデックスのCABAC符号化ビットのコンテキスト変数が、もしあれば、マージ候補のリスト内のアフィンマージ候補に依存する。このビットは、マージインデックスの第1番目のビットのみ、あるいは最初のNビット、ここでNは2以上、あるいは任意のNビット、であることがある。他のビットはバイパス符号化される。
アフィン予測は、複雑な動きを補償するために設計されている。したがって、複雑な動きの場合、マージインデックスは一般に、それほど複雑でない動きの場合よりも高い値を有する。その結果、第1アフィンマージ候補(first Affine Merge candidate)がリストのかなり下にある場合、またはアフィンマージ候補が全くない場合、現在のCUのマージインデックスは、小さい値を有する可能性がある。
したがって、コンテキスト変数は、リスト内の少なくとも1つのアフィンマージ候補の存在および/または位置に依存することが有効である。
例えば、コンテキスト変数は、
A1がアフィンの場合は1
B1がアフィンの場合は2
B0がアフィンの場合は3
A0がアフィンの場合は4
B2がアフィンの場合は5
隣接ブロックがアフィンでない場合は0
に等しく設定される。
現在のブロックのマージインデックスが復号または解析されるとき、これらの位置のマージ候補のアフィンフラグはすでにチェックされている。したがって、現在のブロックのマージインデックスのコンテキストを導出するために、それ以上のメモリアクセスは必要ない。
この実施形態は、VTM2.0に対して符号化効率を向上させる。ステップ1205は、すでに隣接CUアフィンモードをチェックすることを含むので、追加のメモリアクセスは必要とされない。
第1の変形例では、状態の数を制限するために、コンテキスト変数は、
隣接ブロックがアフィンでない場合、またはA1またはB1がアフィンである場合は0
B0、A0、またはB2がアフィンの場合は1
に等しく設定される。
第2の変形例では、状態の数を制限するために、コンテキスト変数は、
隣接ブロックがアフィンでない場合は0
A1またはB1がアフィンの場合は1
B0、A0、またはB2がアフィンの場合は2
に等しく設定される。
第3の変形例では、コンテキスト変数は、
A1がアフィンの場合は1
B1がアフィンの場合は2
B0がアフィンの場合は3
A0またはB2がアフィンの場合は4
隣接ブロックがアフィンでない場合は0
に等しく設定される。
これらの位置は、アフィンフラグ復号がこれらの位置に依存するので、マージインデックスが復号または構文解析されるときに既にチェックされていることに留意されたい。従って、アフィンフラグの後に符号化されるマージインデックスコンテキストを導出するために、追加のメモリアクセスは必要ない。
第12の実施形態
第12の実施形態では、アフィンモードをシグナリングすることは、候補動き予測子としてアフィンモードを挿入することを含む。
第12の実施形態の一例では、アフィンマージ(およびアフィンマージスキップ)がマージ候補として(すなわち、古典的マージモードまたは古典的マージスキップモードと共に使用するためのマージ候補のうちの1つとして)シグナリングされる。この場合、図12のモジュール1205、1206、および1207は除去される。さらに、マージモードの符号化効率に影響を与えないように、マージ候補の最大可能数がインクリメントされる。例えば、現在のVTMバージョンでは、この値は6に等しく設定され、したがって、この実施形態をVTMの現在のバージョンに適用する場合、値は7になる。
利点は、復号する必要があるシンタックス要素が少ないため、マージモードのシンタックス要素の設計簡素化である。状況によっては、符号化効率の改善/変化が観察され得る。
この例を実施するための2つの可能性を以下に説明する。
アフィンマージ候補のマージインデックスは、他のマージMVの値が何であれ、リスト内で常に同じ位置を有する。候補動き予測子の位置は、選択される可能性を示し、したがって、それがリストの上に配置される場合(より低いインデックス値)、その動きベクトル予測子が選択される可能性がより高い。
第1の例では、アフィンマージ候補のマージインデックスが、マージ候補のリスト内で常に同じ位置を有する。これは、固定された「マージidx」値を有することを意味する。例えば、アフィンマージモードは、最も確率の高いコンテンツではない複雑な動きを表すべきであるので、この値は5に等しく設定することができる。この実施形態の追加の利点は、現在のブロックが構文解析される(シンタックス要素の復号/読み出しだけでなく、データ自体を復号する)とき、現在のブロックをアフィンブロックとして設定できることである。その結果、この値を使用して、AMVPに使用されるアフィンフラグのCABACコンテキストを決定することができる。したがって、条件付き確率は、このアフィンフラグについて改善されるべきであり、符号化効率は、より良好であるべきである。
第2の例では、アフィンマージ候補が他のマージ候補と共に導出される。この例では、新しいアフィンマージ候補がマージ候補のリストに追加される(古典的マージモードまたは古典的マージスキップモードの場合)。図16は、この例を示す。図13と比較すると、アフィンマージ候補は、A1、B1、B0、A0、およびB2(1917)からの第1アフィン隣接ブロック(first affine neighbouring block)である。図12の1205と同じ条件が有効である場合(1927)、アフィンパラメータを用いて生成された動きベクトルフィールドが生成され、アフィンマージ候補が得られる(1929)。最初のマージ候補のリストは、ATMVP、時間的およびアフィンマージ候補の使用に従って、4、5、6、または7の候補を有することができる。
すべてのこれらの候補の間の順序は、より可能性の高い候補が、動きベクトル候補のカットを行う可能性がより高いことを保証するために、最初に処理されるべきであるため、重要であり、好ましい順序は、以下の通りである。
A1
B1
B0
A0
アフィンマージ
ATMVP
B2
時間的
組み合わせ
Zero_MV
アフィンマージ候補は、ATMVP候補の前であるが、4つの主要な隣接ブロックの後に配置されることに留意することが重要である。ATMVP候補の前にアフィンマージ候補を設定することの利点は、ATMVPおよび時間的予測子候補の後にそれを設定することと比較して、符号化効率が増加することである。この符号化効率の向上は、GOP(group of pictures)構造と、GOP内の各ピクチャのQP(Quantization Parameter)設定と、に依存する。しかし、最も使用されるGOPおよびQP設定では、この順序は符号化効率の増加をもたらす。
この解決策のさらなる利点は、シンタックスおよび導出処理の両方のための、古典的なマージおよび古典的なマージスキップモード(すなわち、ATMVPまたはアフィンマージ候補などの追加の候補を有するマージモード)のクリーンな設計である。さらに、アフィンマージ候補のマージインデックスは、マージ候補のリスト内の以前の候補の利用可能性または値(重複チェック)に従って変更することができる。その結果、効率的な信号化を得ることができる。
さらなる例では、アフィンマージ候補のためのマージインデックスが、1つまたはいくつかの条件に従って可変である。
例えば、アフィンマージ候補に関連付けられたリスト内のマージインデックスまたは位置は、基準に従って変化する。原理は、アフィンマージ候補が選択される確率が高い場合には、アフィンマージ候補に対応するマージインデックスに対して低い値を設定することである(選択される確率が低い場合には、より高い値を設定する)。
第12の実施形態では、アフィンマージ候補がマージインデックス値を有する。マージインデックスの符号化効率を改善するために、マージインデックスのビットのコンテキスト変数を、隣接ブロックおよび/または現在のブロックのアフィンフラグに依存させることが有効である。
例えば、コンテキスト変数は、以下の式を使用して決定することができる。
ctxIdx=IsAffine(A1)+IsAffine(B1)+IsAffine(B0)+IsAffine(A0)+IsAffine(B2)
結果として得られるコンテキスト値は、値0、1、2、3、4、または5を有することができる。
アフィンフラグは、符号化効率を高める。
第1の変形例では、より少ない隣接ブロックを含むために、ctxIdx=IsAffine(A1)+IsAffine(B1)である。結果として得られるコンテキスト値は、値0、1、または2を有することができる。
また、第2の変形例では、より少ない隣接ブロックを含むために、ctxIdx=IsAffine(A2)+IsAffine(B3)である。この場合も、結果として得られるコンテキスト値は、値0、1、または2を有することができる。
第3の変形例では、隣接ブロックを含まないようにするため、ctxIdx=IsAffine(現在のブロック)である。結果として得られるコンテキスト値は、値0または1を有することができる。
図15は、第3の変形例による符号化モードに関連するいくつかのシンタックス要素の部分復号処理のフローチャートである。この図では、スキップフラグ(1601)、予測モード(1611)、マージフラグ(1603)、マージインデックス(1608)、およびアフィンフラグ(1606)を復号することができる。このフローチャートは、先に説明した図12のフローチャートと同様であるため、詳細な説明は省略する。差は、マージインデックスのコンテキスト変数を取得するときに、マージインデックスの前に復号されるアフィンフラグを使用できるように、マージインデックス復号処理がアフィンフラグを考慮することである。これは、VTM2.0ではそうではない。VTM2.0では、現在のブロックのアフィンフラグが常に同じ値「0」を有するので、マージインデックスのためのコンテキスト変数を取得するために使用することができない。
第13の実施形態
第10の実施形態では、現在のブロックのマージインデックスのビットのためのコンテキスト変数が、現在のブロック(現在の符号化ユニット、つまりCU)のためのスキップフラグの値に依存する。
第13の実施形態では、スキップフラグ値を直接使用してマージインデックスのターゲットビットのコンテキスト変数を導出する代わりに、ターゲットビットのコンテキスト値が、現在のCUのスキップフラグを符号化するために使用されるコンテキスト変数から導出される。これは、スキップフラグ自体がCABAC符号化され、したがってコンテキスト変数を有するために可能である。
好ましくは、現在のCUのマージインデックスのターゲットビットに対するコンテキスト変数が、現在のCUのスキップフラグを符号化するために使用されるコンテキスト変数に等しく設定される(からコピーされる)。
ターゲットビットは、第1番目のビットのみにすることができる。他のビットは、第1の実施形態のようにバイパス符号化されてもよい。
現在のCUのスキップフラグのコンテキスト変数は、VTM2.0に規定された方法で導出される。VTM2.0リファレンスソフトウェアと比較したこの実施形態の利点は、符号化効率に影響を与えることなく、マージインデックス復号およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。実際に、この実施形態では、現在のVTMマージインデックス符号化(符号化/復号)のための5の代わりに、マージインデックスを符号化するために、最低でも1つのCABAC状態のみが必要とされる。さらに、他のビットはCABACバイパス符号化され、CABACで全てのビットを符号化するのと比較して演算の数を減らすので、最悪の場合の複雑さを減らす。
第14の実施形態
第13の実施形態では、ターゲットビットのコンテキスト値が、現在のCUのスキップフラグのコンテキスト変数から導出された。
第14の実施形態では、ターゲットビットのコンテキスト値が、現在のCUのアフィンフラグのコンテキスト変数から導出される。
これは、アフィンフラグ自体がCABAC符号化され、したがってコンテキスト変数を有するために可能である。
好ましくは、現在のCUのマージインデックスのターゲットビットに対するコンテキスト変数が、現在のCUのアフィンフラグに対するコンテキスト変数に等しく設定される(からコピーされる)。
ターゲットビットは、第1番目のビットのみにすることができる。他のビットは、第1の実施形態のようにバイパス符号化される。
現在のCUのアフィンフラグのコンテキスト変数は、VTM2.0に規定された方法で導出される。
VTM2.0リファレンスソフトウェアと比較したこの実施形態の利点は、符号化効率に影響を与えることなく、マージインデックス復号およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。実際に、この実施形態では、現在のVTMマージインデックス符号化(符号化/復号)のために5ではなく、最小で1つのCABAC状態のみがマージインデックスのために必要とされる。さらに、他のビットはCABACバイパス符号化され、CABACで全てのビットを符号化するのと比較して演算の数を減らすので、最悪の場合の複雑さを減らす。
第15の実施形態
前述の実施形態のいくつかでは、コンテキスト変数が2を超える値、例えば、3つの値0、1、および2を有していた。しかしながら、複雑さを低減し、処理される状態の数を低減するために、許可されるコンテキスト変数値の数を2、例えば、0および1に制限することが可能である。これは、例えば、値2を有する任意の初期コンテキスト変数を1に変更することによって達成することができる。実際には、この単純化が符号化効率に影響を及ぼさないか、または限定された影響しか及ぼさない。
実施形態および他の実施形態の組合せ
前述の実施形態のうちの任意の2つ以上が組み合わされてもよい。
前述の説明は、マージインデックスの符号化および復号に焦点を当ててきた。例えば、第1の実施形態は、ATMVP候補(古典的マージモードまたは古典的マージスキップモード、すなわち非アフィンマージモードまたは非アフィンマージスキップモードの場合)を含むマージ候補のリストを生成することと、リスト内のマージ候補のうちの1つを選択することと、CABAC符号化を使用して、選択されたマージ候補のマージインデックスを生成することと、を含み、マージインデックスの1つまたは複数のビットは、バイパスCABAC符号化される。原則として、本発明は、動き情報予測子候補のリスト(例えば、アフィンマージ候補または動きベクトル予測子(MVP)候補のリスト)を生成することと、リスト内の動き情報予測子候補(例えば、MVP候補)のうちの1つを選択することと、リスト内の選択された動き情報予測子候補(例えば、選択されたアフィンマージ候補または現在のブロックの動きベクトルを予測するための選択されたMVP候補)の識別子またはインデックスを生成することとを含むマージモード(例えば、アフィンマージモード)以外のモードに適用することができる。したがって、本発明はマージモード(すなわち、古典的マージモードおよび古典的マージスキップモード)に限定されず、符号化または復号されるインデックスは、マージインデックスに限定されない。例えば、VVCの開発において、前述の実施形態の技術は、HEVCのAMVPモード、またはVVCにおけるその同等のモード、またはアフィンマージモードなど、マージモード以外のモードに適用され得る(または拡張され得る)ことが考えられる。添付の特許請求の範囲は、相応に解釈されるべきである。
前述したように、前述の実施形態では、アフィンマージモード(アフィンマージまたはアフィンマージスキップモード)および/または1つまたは複数のアフィンパラメータの1つまたは複数の動き情報候補(たとえば、動きベクトル)は、空間的に隣接するブロック(たとえば、位置A1、B1、B0、A0、B2)または時間的に関連するブロック(たとえば、コロケートされたブロックを有する「中央」ブロック、または「H」などのその空間的隣接)の間でアフィン符号化される第1隣接ブロックから取得される。これらの位置は、図6aおよび図6bに示されている。1つまたは複数の動き情報および/または現在のブロック(または現在のCUなどの、現在符号化/復号されているサンプル/ピクセル値のグループ)と隣接ブロック(現在のブロックに空間的に隣接するかまたは時間的に関連する)との間のアフィンパラメータのこの取得(例えば、導出するまたは共有するまたは「マージする」)を可能にするために、マージ候補(すなわち、古典的マージモード候補)のリストに、1つまたは複数のアフィンマージ候補が追加され、その結果、選択されたマージ候補(たとえば、HEVC内の「merge_idx」などのシンタックス要素またはその機能的に同等のシンタックス要素を使用して、マージインデックスを使用してシグナリングされる)がアフィンマージ候補である場合、現在のCU/ブロックは、アフィンマージ候補とともにアフィンマージモードを使用して符号化/復号される。
上述のように、アフィンマージモードの1つまたは複数の動き情報および/またはアフィンパラメータを取得する(例えば、導出するまたは共有する)ためのそのような1つまたは複数のアフィンマージ候補は、アフィンマージ候補の別個のリスト(またはセット)(古典的マージモードに使用されるマージ候補のリストと同じであっても異なっていてもよい)を使用してシグナリングすることもできる。
本発明の一実施形態によれば、前述の実施形態の技術がアフィンマージモードに適用される場合、アフィンマージ候補のリストは図8に示され、それに関連して説明された古典的マージモードのための動きベクトル導出処理と同じ技術を使用して、または図13に示され、それに関連して説明されたマージ候補導出処理と同じ技術を使用して生成することができる。(アフィンマージモードまたはアフィンマージスキップモードのための)アフィンマージ候補のこのリストおよび(古典的マージモードまたは古典的マージスキップモードのための)マージ候補のリストを生成/コンパイルするために同じ技術を共有することの利点は、別個の技術を有する場合と比較して、符号化/復号処理の複雑さが低減されることである。
別の実施形態によれば、図24に関連して以下に示す別個の技術を使用して、アフィンマージ候補のリストを生成/コンパイルすることができる。
図24は、アフィンマージモード(アフィンマージモードおよびアフィンマージスキップモード)のためのアフィンマージ候補導出処理を示すフローチャートである。導出処理の第1ステップでは、空間的アフィンマージ候補2413を取得/導出するために、5つのブロック位置が考慮される(2401~2405)。これらの位置は、参照番号A1、B1、B0、A0、およびB2で図6a(および図6b)に示される空間的位置である。次のステップでは、空間的動きベクトルの利用可能性がチェックされ、各位置A1、B1、B0、A0、およびB2に関連付けられたインターモード符号化ブロックの各々が(例えば、アフィンマージ、アフィンマージスキップ、またはアフィンAMVPモードのいずれか1つを使用して)アフィンモードで符号化されるかどうかが判定される(2410)。せいぜい5つの動きベクトル(すなわち、空間的アフィンマージ候補)が選択/取得/導出される。予測子が存在する(例えば、その位置に関連付けられた動きベクトルを取得/導出するための情報がある)場合、およびブロックがイントラ符号化されていない場合、およびブロックがアフィンである場合(すなわち、アフィンモードを使用して符号化されている)には、予測子が利用可能であるとみなされる。
次に、各利用可能なブロック位置について、アフィン動き情報が導出/取得される(2411)(2410)。この導出は、ブロック位置のアフィンモデル(および、例えば、図11(a)および図11(b)に関連して説明したそのアフィンモデルパラメータ)に基づいて、現在のブロックに対して実行される。次に、プルーニング処理(2412)を適用して、リストに以前に追加された互いに同じアフィン動き補償を与える(または同じアフィンモデルパラメータを有する)候補を除去する。
この段階の最後に、空間的アフィンマージ候補のリストは、5つまでの候補を含む。
候補の数(Nb_Cand)が候補の最大数よりも厳密に少ない場合(2426)(ここではMax_Candはビットストリームスライスヘッダでシグナリングされる値で、アフィンマージモードの場合は5に等しくなるが、インプリメンテーションによって異なる/可変になることがある)。
次に、構築されたアフィンマージ候補(すなわち、例えば、HEVCにおける結合された双予測マージ候補と同様の役割を果たす、ターゲット番号に近づくだけでなく、何らかのダイバーシティを提供するために生成される追加のアフィンマージ候補)が生成される(2428)。これらの構築されたアフィンマージ候補は、現在のブロックの隣接する空間的および時間的位置に関連する動きベクトルに基づいている。まず、アフィンモデルを生成するための動き情報を生成するために、制御点が定義される(2418、2419、2420、2421)。これらの制御点のうち2つは、例えば図11(a)と図11(b)のv0とv1に対応する。これらの4つの制御点は、現在のブロックの四隅に対応している。
制御点の左上(2418)の動き情報は、それが存在し、このブロックがインターモード(2414)で符号化されている場合には、位置B2(2405)におけるブロック位置の動き情報から(例えば、それと等しくすることによって)得られる。そわない場合、制御点左上(2418)の動き情報は、それが存在し、このブロックがインターモード(2414)で符号化されており、そのようなケースではない場合には、(図6bに示されるように)位置B3(2406)におけるブロック位置の動き情報から(例えば、それと等しくすることによって)取得され、制御点左上(2418)の動き情報は、それが存在し、このブロックがインターモード(2414)で符号化されている場合には、(図6bに示されるように)位置A2(2407)におけるブロック位置の動き情報から(例えば、等しい)取得される。この制御点に利用可能なブロックがない場合、それは利用不可能(利用不可能)であると考えられる。
制御点右上(2419)の動き情報は、それが存在し、このブロックがインターモード(2415)で符号化されている場合には、位置B1(2402)にあるブロック位置の動き情報から得られる(例えば、それに等しい)。そわない場合、制御点右上(2419)の動き情報は、それが存在し、このブロックがインターモード(2415)で符号化されている場合には、位置B0(2403)におけるブロック位置の動き情報から(例えば等しい)取得される。この制御点に利用可能なブロックがない場合、それは利用不可能(利用不可能)であると考えられる。
制御点左下(2420)の動き情報は、それが存在し、このブロックがインターモード(2416)で符号化されている場合には、位置A1(2401)にあるブロック位置の動き情報から得られる(例えば、等しい)。そわなければ、制御点左下(2420)の動き情報は、それが存在し、このブロックがインターモード(2416)で符号化されている場合には、位置A0(2404)にあるブロック位置の動き情報から得られる(例えば、等しい)。この制御点に利用可能なブロックがない場合、それは利用不可能(利用不可能)であると考えられる。
制御点右下(2421)の動き情報は、それが存在し、このブロックがインターモード(2417)で符号化されている場合には、時間的候補の動き情報、例えば、位置H(2408)におけるコロケートされたブロック位置(図6aに示すように)、から得られる(例えば、等しい)。この制御点に利用可能なブロックがない場合、それは利用不可能(利用不可能)であると考えられる。
これらの制御点に基づいて、最大10個の構築されたアフィンマージ候補を生成することができる(2428)。これらの候補は、4つ、3つ、または2つの制御点を有するアフィンモデルに基づいて生成される。例えば、第1の構築されたアフィンマージ候補は、4つの制御点を使用して生成されてもよい。次に、以下の4つの構築されたアフィンマージ候補は、3つの制御点の4つの異なるセット(すなわち、4つの利用可能な制御点のうちの3つを含むセットの4つの異なる可能な組み合わせ)を使用して生成することができる4つの可能性である。次いで、他の構築されたアフィンマージ候補は、2つの制御点の異なるセット(すなわち、4つの制御点のうちの2つを含むセットの異なる可能な組み合わせ)を使用して生成されたものである。
候補の数(Nb_Cand)が、これらの追加の(構築された)アフィンマージ候補を追加した後に、候補の最大数(Max_Cand)よりも厳密に少ないままである場合(2430)、アフィンマージ候補のリスト内の候補の数が目標数(例えば、候補の最大数)に達するまで、ゼロ動きベクトル候補(または、適用可能な場合には結合された双予測マージ候補)などの他の追加の仮想動き情報候補が追加/生成される(2432)。
この処理の最後に、アフィンマージモード候補のリストまたはセット(すなわち、アフィンマージモードおよびアフィンマージスキップモードであるアフィンマージモードの候補のリストまたはセット)が生成/構築される(2434)。図24に示すように、アフィンマージ(動きベクトル予測子)候補のリストまたはセットは、空間的候補のサブセット(2401~2407)および時間的候補(2408)から構築/生成される(2434)。本発明の実施形態によれば、アフィンマージ候補のリスト/セットを生成するために、利用可能性、プルーニング処理、または潜在的候補の数/タイプをチェックするための異なる順序を有する他のアフィンマージ候補導出処理(例えば、ATMVP候補も、図13または図16のマージ候補リスト導出処理と同様の方法で追加することができる)を使用することもできることを理解されたい。
以下の実施形態は、アフィンマージ候補のリスト(またはセット)をどのように使用して、選択されたアフィンマージ候補(マージモードに使用されるマージインデックス、または特にアフィンマージモードで使用される別個のアフィンマージインデックスを使用してシグナリングすることができる)をシグナリングする(例えば、符号化または復号する)ことができるかを示す。
以下の実施形態では、マージモード(すなわち、後に定義されるアフィンマージモード以外のマージモード、言い換えれば、古典的非アフィンマージモードまたは古典的非アフィンマージスキップモード)は、空間的に隣接するブロックまたは時間的に関連するブロックのいずれかの動き情報が現在のブロックについて取得される(または現在のブロックについて導出される、または現在のブロックと共有される)場合のマージモードのタイプであり、マージモード予測子候補(すなわち、マージ候補)は、マージモードで現在のブロックが動き情報を取得/導出することができる、1つまたは複数の空間的に隣接するブロックまたは時間的に関連するブロックに関する情報であり、マージモード予測子は、選択されたマージモード予測子候補であり、その情報は、現在のブロックの動き情報を予測するとき、およびマージモード(例えば符号化または復号)処理にてシグナリングする間に使用され、マージモード予測子候補のリスト(またはセット)からマージモード予測子を識別するインデックス(例えばマージインデックス)がシグナリングされ、アフィンマージモードは、現在のブロックの動き情報および/またはアフィンモード処理(またはアフィン動きモデル処理)のためのアフィンパラメータが、この取得された/導出された/共有された動き情報が使用できるように、空間的に隣接しているブロックまたは時間的に関連するブロックのいずれかの動き情報が現在のブロックについて取得される(現在のブロックについて導出される、または現在のブロックと共有される)場合におけるマージモードのタイプであり、アフィンマージモード予測子候補(すなわちアフィンマージ候補)は、アフィンマージモードにおいて現在のブロックが動き情報を取得/導出できる、1つまたは複数の空間的に隣接しているブロックまたは時間的に関連するブロックに関する情報であり、アフィンマージモード予測子は、選択されたアフィンマージモード予測子候補であり、その情報は、現在のブロックの動き情報を予測するとき、およびアフィンマージモード(例えば符号化または復号)処理にてシグナリングする間に、アフィン動きモデルにおいて使用可能であり、アフィンマージモード予測子候補のリスト(またはセット)からアフィンマージモード予測子を識別するインデックス(例えばアフィンマージインデックス)がシグナリングされる。以下の実施形態では、アフィンマージモードが候補のリスト/セット(「アフィンマージリスト」または「サブブロックマージリスト」としても知られる)から1つのアフィンマージモード予測子候補を識別するためのそれ自体のアフィンマージインデックス(変数である識別子)を有するマージモードであり、それに関連する単一のインデックス値を有するのとは対照的に、アフィンマージインデックスは、その特定のアフィンマージモード予測子候補を識別するためにシグナリングされることが理解される。
以下の実施形態では、「マージモード」は、HEVC/JEM/VTMにおける古典的なマージスキップモードまたは古典的なマージモードまたは任意の機能的に同等のモードのいずれか1つを指し、上記のような動き情報の取得(例えば、導出または共有)およびマージインデックスのシグナリングが上記モードで使用されることを条件とする。「アフィンマージモード」は、アフィンマージモードまたはアフィンマージスキップモード(存在する場合、そのような取得/導出を使用する)のいずれか一方、あるいは同一の特徴が上記モードで使用されることを条件とする、任意の他の機能的に同等のモードも指すことを理解されたい。
第16の実施形態
第16の実施形態では、アフィンマージ候補のリストからアフィンマージモード予測子(候補)を識別するための動き情報予測子インデックスが、CABAC符号化を使用してシグナリングされ、動き情報予測子インデックスの1つまたは複数のビットは、バイパスCABAC符号化される。
実施形態の第1の変形例によれば、エンコーダにおいて、アフィンマージモードのための動き情報予測子インデックスは、動き情報予測子候補のリストを生成し、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択し、CABAC符号化を使用して、選択された動き情報予測子候補のための動き情報予測子インデックスを生成する、ことによって符号化され、動き情報予測子インデックスの1つまたは複数のビットは、バイパスCABAC符号化される。次に、この選択された動き情報予測子候補に対するインデックスを示すデータが、ビットストリームに含まれる。次に、デコーダは、このデータを含むビットストリームから、動き情報予測子候補のリストを生成し、CABAC復号を使用して動き情報予測子インデックスを復号し、動き情報予測子インデックスの1つまたは複数のビットはバイパスCABAC復号され、アフィンマージモードが使用されるときに、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別する、ことによって、アフィンマージモードのための動き情報予測子インデックスを復号する。
第1の変形例のさらなる変形例によれば、マージモードが使用されるときに、デコーダが復号された動き情報予測子インデックス(例えば、マージインデックス)を使用して、リスト内の動き情報予測子候補のうちの1つをマージモード予測子として識別することができるように、リスト内の動き情報予測子候補のうちの1つも、マージモードが使用されるときに、マージモード予測子として選択可能である。このさらなる変形例では、アフィンマージインデックスが、アフィンマージモード予測子(候補)をシグナリングするために使用され、アフィンマージインデックスをシグナリングすることは、第1~第15の実施形態のいずれか1つによるマージインデックスシグナリング、または現在のVTMまたはHEVCで使用されるマージインデックスシグナリングに類似するインデックスシグナリングを使用して実装される。
この変形例では、マージモードが使用される場合、マージインデックスをシグナリングすることは、は第1~第15の実施形態のいずれか1つによるマージインデックスシグナリング、または現在のVTMまたはHEVCで使用されるマージインデックスシグナリングを使用して実施することができる。この変形例では、アフィンマージインデックスをシグナリングすることと、マージインデックスをシグナリングすることと、は異なるインデックスシグナリングスキームを使用することができる。この変形例の利点は、アフィンマージモードとマージモードの両方に対して効率的なインデックス符号化/シグナリングを使用することによって、より良好な符号化効率を達成することである。さらに、この変形例では、マージインデックス(HEVCの”Merge_idx[][]”またはその機能的に同等なものなど)と、アフィンマージインデックス(”A_Merge_idx[][]”など)に別個のシンタックス要素を使用できる。これにより、マージインデックスとアフィンマージインデックスを個別にシグナリング(符号化/復号)できるようになる。
さらに別のさらなる変形例によれば、マージモードが使用され、リスト内の動き情報予測子候補のうちの1つもマージモード予測子として選択可能である場合、CABAC符号化は、両方のモードについて、すなわちアフィンマージモードが使用される場合、およびマージモードが使用される場合に、現在のブロックの動き情報予測子インデックス(たとえば、マージインデックスまたはアフィンマージインデックス)の少なくとも1つのビットについて同じコンテキスト変数を使用し、その結果、アフィンマージインデックスおよびマージインデックスの少なくとも1つのビットは、同じコンテキスト変数を共有する。次に、デコーダは、マージモードが使用されるとき、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをマージモード予測子として識別し、CABAC復号は、両方のモードについて、すなわち、アフィンマージモードが使用されるとき、およびマージモードが使用されるときに、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットについて同じコンテキスト変数を使用する。
実施形態の第2の変形例によれば、エンコーダにおいて、動き情報予測子インデックスは、動き情報予測子候補のリストを生成し、アフィンマージモードが使用されるとき、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として選択し、マージモードが使用されるとき、リスト内の動き情報予測子候補のうちの1つをマージモード予測子として選択し、CABAC符号化を使用して、選択された動き情報予測子候補のための動き情報予測子インデックスを生成する、ことによって符号化され、動き情報予測子インデックスの1つまたは複数のビットは、バイパスCABAC符号化される。次に、この選択された動き情報予測子候補に対するインデックスを示すデータが、ビットストリームに含まれる。次に、デコーダは、ビットストリームから、動き情報予測子インデックスを、動き情報予測子候補のリストを生成し、CABAC復号を使用して動き情報予測子インデックスを復号し、動き情報予測子インデックスの1つまたは複数のビットはバイパスCABAC復号され、アフィンマージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをアフィンマージモード予測子として識別し、マージモードが使用される場合、復号された動き情報予測子インデックスを使用して、リスト内の動き情報予測子候補のうちの1つをマージモード予測子として識別する、ことによって復号する。
第2の変形例のさらなる変形例によれば、アフィンマージインデックスシグナリングおよびマージインデックスシグナリングは、第1~第15の実施形態のいずれか1つによる同じインデックスシグナリング方式、または現在のVTMまたはHEVCで使用されるマージインデックスシグナリングを使用する。このさらなる変形例の利点は、実施中の単純な設計であり、これはまた、より少ない複雑さにつながり得る。この変形例では、アフィンマージモードが使用されるとき、エンコーダのCABAC符号化は、現在のブロックの動き情報予測子インデックス(アフィンマージインデックス)の少なくとも1つのビットのためのコンテキスト変数を使用することを含み、コンテキスト変数は、マージモードが使用されるときには、動き情報予測子インデックス(マージインデックス)の少なくとも1つのビットのための別のコンテキスト変数から分離可能であり、アフィンマージモードの使用を示すデータは、アフィンマージモードおよびマージモードのためのコンテキスト変数が、CABAC復号処理のために区別される(明確に識別される)ことができるように、ビットストリームに含まれる。次に、デコーダは、ビットストリームから、ビットストリームにおけるアフィンマージモードの使用を示すためのデータを取得し、アフィンマージモードが使用されるとき、CABAC復号は、このデータを使用して、アフィンマージインデックスおよびマージインデックスのためのコンテキスト変数間で区別する。さらに、デコーダでは、アフィンマージモードの使用を示すためのデータが、取得されたデータがアフィンマージモードの使用を示すときに、アフィンマージモード予測子候補のリスト(またはセット)を生成したり、取得されたデータがマージモードの使用を示すときには、マージモード予測子候補のリスト(またはセット)を生成したりするためにも使用できる。
この変形例は、マージインデックスおよびアフィンマージインデックスの両方が同じインデックスシグナリングスキームを使用してシグナリングされることを可能にし、一方、マージインデックスおよびアフィンマージインデックスは依然として、(例えば、別個のコンテキスト変数を使用することによって)互いに独立して符号化/復号される。
同じインデックスシグナリングスキームを使用する1つの方法は、アフィンマージインデックスとマージインデックスの両方に同じシンタックス要素を使用することであり、つまり、アフィンマージモードが使用されている場合とマージモードが使用されている場合、選択された動き情報予測子候補の動き情報予測子インデックスは、どちらの場合も同じシンタックス要素を使用して符号化される。次に、デコーダでは、アフィンマージモードまたはマージモードを使用して現在のブロックが符号化された(かつ復号されている)かどうかにかかわらず、ビットストリームから同じシンタックス要素を解析することによって、動き情報予測子インデックスが復号される。
図22は、第16の実施形態のこの変形例による、符号化モード(すなわち、同じインデックスシグナリングスキーム)に関連するいくつかのシンタックス要素の部分復号処理を示す。この図は、アフィンマージモード(2257:Yes)のためのアフィンマージインデックス(2255-「マージidxアフィン」)と、同じインデックスシグナリングスキームを有するマージモード(2257:No)のためのマージインデックス(2258-「マージidx」)と、のシグナリングを示す。いくつかの変形例では、アフィンマージ候補リストが、現在のVTMのマージ候補リストのようにATMVP候補を含むことができることを理解されたい。アフィンマージインデックスの符号化は、図10(a)および図10(b)に示すように、マージモードのマージインデックスの符号化と同様である。いくつかの変形例では、アフィンマージ候補導出でATMVPマージ候補が定義されていなくても、アフィンマージ候補リスト内の候補の最大数がマージ候補リスト内の候補の最大数と一致するように、ATMVPが最大5つの他の候補(つまり、合計6つの候補)でマージモードに対してイネーブルになっている場合、アフィンマージインデックスは図10(b)で説明されているように符号化される。したがって、アフィンマージインデックスの各ビットは、それ自体のコンテキストを有する。マージインデックスシグナリングのビットに使用されるすべてのコンテキスト変数は、アフィンマージインデックスシグナリングのビットに使用されるコンテキスト変数とは無関係である。
さらなる変形例によれば、マージインデックスおよびアフィンマージインデックスシグナリングによって共有されるこの同じインデックスシグナリングスキームは、第1の実施形態と同様に、第1ビンのみについてCABAC符号化を使用する。すなわち、動き情報予測子インデックスの第1番目のビットを除く全てのビットは、バイパスCABAC符号化される。第16の実施形態のこのさらなる変形例では、ATMVPがマージ候補のリストまたはアフィンマージ候補のリストのうちの1つに候補として含まれる場合(たとえば、ATMVPがSPSレベルでイネーブルされる場合)、各インデックス(すなわち、マージインデックスまたはアフィンマージインデックス)の符号化は、インデックスの第1番目のビットのみが、図14に示されるように単一のコンテキスト変数を使用してCABACによって符号化されるように修正される。この単一のコンテキストは、ATMVPがSPSレベルでイネーブルされない場合に、現在のVTMリファレンスソフトウェアと同じ方法で設定される。他のビット(リストに5つの候補のみ存在する場合は、2番目のビットから5番目のビットまたは4番目のビット)は、バイパス符号化される。マージ候補リストにATMVPが候補として含まれていない場合(例えば、SPSレベルでATMVPがディスエーブルされている場合)、利用可能な5つのマージ候補と5つのアフィンマージ候補がある。マージモードのためのマージインデックスの第1番目のビットのみが、第1の単一のコンテキスト変数を使用してCABACによって符号化される。そして、アフィンマージモードのためのアフィンマージインデックスの第1番目のビットのみが、第2の単一のコンテキスト変数を使用してCABACによって符号化される。これらの第1と第2のコンテキスト変数は、マージインデックスとアフィンマージインデックスの両方でATMVPがSPSレベルでイネーブルされていない場合、現在のVTMリファレンスソフトウェアと同じ方法で設定される。他のビット(2番目から4番目のビットまで)は、バイパス復号される。
デコーダは、エンコーダと同じマージ候補のリストおよび同じアフィンマージ候補のリストを生成する。これは図22の方法を使用することによって達成される。マージモードおよびアフィンマージモードの両方に同じインデックスシグナリングスキームが使用されるが、アフィンフラグ(2256)を使用して、現在復号されているデータがマージインデックスまたはアフィンマージインデックスに対するものであるかどうかを判定し、その結果、第1および第2コンテキスト変数がCABAC復号処理のために互いに分離可能(または区別可能)である。すなわち、アフィンフラグ(2256)は、インデックス復号処理中に使用され(すなわち、ステップ2257で使用され)、「マージidx2258」または「マージidxアフィン2255」を復号するかどうかを決定する。ATMVPがマージ候補のリストに候補として含まれていない場合(たとえば、ATMVPがSPSレベルでディスエーブルされている場合)、候補のリストの両方に5つのマージ候補がある(マージモードとアフィンマージモードについて)。マージインデックスの第1番目のビットのみが、第1の単一コンテキスト変数を使用してCABACによって復号される。そして、アフィンマージインデックスの第1番目のビットのみが、第2の単一コンテキスト変数を使用してCABACによって復号される。他のすべてのビット(2番目から4番目のビットまで)は、バイパス復号される。現在のリファレンスソフトウェアとは対照的に、ATMVPがマージ候補のリストに候補として含まれる場合(例えば、ATMVPがSPSレベルでイネーブルされる場合)、マージインデックスの復号において第1の単一コンテキスト変数を使用し、およびアフィンマージインデックスの復号において第2の単一コンテキスト変数を使用して、マージインデックスの第1番目のビットのみがCABACによって復号される。他のビット(2番目から5番目のビットまたは4番目のビット)は、バイパス復号される。復号されたインデックスは次に、対応する候補のリスト(すなわち、マージ候補またはアフィンマージ候補)からエンコーダによって選択された候補を識別するために使用される。
この変形例の利点は、マージインデックスおよびアフィンマージインデックスの両方に対して同じインデックスシグナリングスキームを使用することにより、符号化効率に著しい影響を与えることなく、これら2つの異なるモードを実施するためのインデックス復号およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。実際、この変数では、マージインデックスのすべてのビットおよびアフィンマージインデックスのすべてのビットがCABAC符号化/復号される場合の9または10の代わりに、2つのCABAC状態(第1および第2の単一コンテキスト変数のそれぞれに1つ)のみがインデックスシグナリングに必要とされる。さらに、他のすべてのビット(第1番目のビットは別として)がCABACバイパス符号化されるため、最悪の場合の複雑さが低減され、CABACによるすべてのビットの符号化と比較して、CABAC符号化/復号処理中に必要とされる動作の数が低減される。
さらに別のさらなる変形例によれば、CABAC符号化または復号は、アフィンマージモードが使用されるときとマージモードが使用されるときの両方のために、現在のブロックの動き情報予測子インデックスの少なくとも1つのビットに対して同じコンテキスト変数を使用する。このさらなる変形例では、マージインデックスの第1番目のビットとアフィンマージインデックスの第1番目のビットに使用されるコンテキスト変数が、どのインデックスが符号化または復号されているかに依存せず、つまり、(前の変形例からの)第1および第2の単一コンテキスト変数は区別/分離されず、1つと同じ単一コンテキスト変数である。したがって、前の変形例とは対照的に、マージインデックスおよびアフィンマージインデックスは、CABAC処理中に1つのコンテキスト変数を共有する。図23に示されるように、インデックスシグナリングスキームは、マージインデックスとアフィンマージインデックスの両方について同じであり、すなわち、1つのタイプのインデックス「マージidx(2308)」のみが、両方のモードについて符号化または復号される。CABACデコーダに関する限り、マージインデックスおよびアフィンマージインデックスの両方に同じシンタックス要素が使用され、コンテキスト変数を考慮する際にそれらを区別する必要はない。したがって、図22のステップ(2257)のように、現在のブロックがアフィンマージモードで符号化される(復号される)かどうかを判定するためにアフィンフラグ(2306)を使用する必要はなく、1つのインデックス(「マージidx」)だけが復号を必要とするので、図23のステップ2306の後に分岐はない。アフィンフラグは、アフィンマージモードで、すなわちCABACデコーダがインデックスを復号した後の予測処理中に(「マージidx」)、動き情報予測を実行するために使用される。さらに、このインデックスの第1番目のビット(すなわち、マージインデックスおよびアフィンマージインデックス)のみが、1つの単一コンテキストを使用してCABACによって符号化され、他のビットは、第1の実施形態について説明したようにバイパス符号化される。したがって、このさらなる変形例では、マージインデックスとアフィンマージインデックスの第1番目のビットの1つのコンテキスト変数が、マージインデックスとアフィンマージインデックスシグナリングの両方によって共有される。候補のリストのサイズがマージインデックスとアフィンマージインデックスとで異なる場合、各ケースの関連するインデックスをシグナリングするための最大ビット数も異なる可能性があり、つまり、それらは互いに独立している。したがって、バイパス符号化ビットの数は、必要に応じて、アフィンフラグ(2306)の値に従って、例えば、ビットストリームからの関連するインデックスのためのデータの構文解析を可能にするように、適宜調整することができる。
この変形例の利点は、符号化効率に著しい影響を及ぼすことなく、マージインデックスおよびアフィンマージインデックス復号処理およびデコーダ設計(およびエンコーダ設計)の複雑さが低減されることである。実際、このさらなる変形例では、マージインデックスおよびアフィンマージインデックスの両方をシグナリングするときに、前の変形例または9または10のCABAC状態の代わりに、1つのCABAC状態のみが必要とされる。さらに、他のすべてのビット(第1番目のビットは別として)がCABACバイパス符号化されるため、最悪の場合の複雑さが低減され、CABACによるすべてのビットの符号化と比較して、CABAC符号化/復号処理中に必要とされる動作の数が低減される。
この実施形態の前述の変形例では、アフィンマージインデックスシグナリングおよびマージインデックスシグナリングが、第1~第15の実施形態のいずれかで説明したように、1つまたは複数のコンテキストを共有することができる。この利点は、これらのインデックスを符号化または復号するのに必要なコンテキストの数が減少することによる複雑さの減少である。
この実施形態の前述の変形例では、動き情報予測子候補が、方向、リストのID、参照フレームインデックス、および動きベクトルのうちの1つまたは複数を取得する(または導出する)ための情報を備える。好ましくは、動き情報予測子候補が、動きベクトル予測子候補を得るための情報を含む。好ましい変形例では、動き情報予測子インデックス(例えば、アフィンマージインデックス)は、アフィンマージモード予測子候補をシグナリングするために使用され、アフィンマージインデックスシグナリングは、第1~第15の実施形態のいずれか1つによるマージインデックスシグナリング、または現在のVTMまたはHEVCで使用されるマージインデックスシグナリング(マージ候補としてアフィンマージモードの動き情報予測子候補を伴う)に類似するインデックスシグナリングを使用して実装される。
本実施形態の前述の変形例では、動き情報予測子候補の生成されたリストが、第1の実施形態のように、または他の前述の第2から第15の実施形態のいくつかの変形例のように、ATMVP候補を含む。あるいは、動き情報予測子候補の生成されたリストが、ATMVP候補を含まない。
本実施形態の前述の変形例では、マージインデックスおよびアフィンマージインデックスの候補のリストに含めることができる候補の最大数は固定である。マージインデックスとアフィンマージインデックスの候補のリストに含めることができる候補の最大数は同じであってもよい。そして、動き情報予測子候補の生成されたリストに含まれ得る動き情報予測子候補の最大数(またはターゲット数)を決定する(または示す)ためのデータが、エンコーダによってビットストリームに含まれ、デコーダはビットストリームから、動き情報予測子候補の生成されたリストに含まれ得る動き情報予測子候補の最大数(またはターゲット数)を決定するためのデータを取得する。これにより、マージインデックスまたはアフィンマージインデックスを復号するためのデータをビットストリームから解析できる。最大数(またはターゲット数)を決定する(または示す)ためのこのデータは、復号されたときの最大数(またはターゲット数)そのものであってもよく、またはデコーダが他のパラメータ/シンタックス要素、例えば、HEVCで使用される「five_minus_max_num_merge_cand」または「MaxNumMergeCand-1」またはその機能的に同等のパラメータと関連して、この最大/ターゲット数を決定することを可能にしてもよい。
あるいは、マージインデックスおよびアフィンマージインデックスの候補のリスト内の候補の最大数(またはターゲット数)が変化しうる若しくは異なりうる場合(ATMVP候補または他の任意の候補の使用が一方のリストに対してイネーブルまたはディスエーブルされているが、他方のリストに対してはされていないから、または、リストが異なる候補リスト生成/導出処理を使用しているから、など)、アフィンマージモードが使用される場合、およびマージモードが使用されている場合に、動き情報予測子候補の生成されたリストに含まれ得る動き情報予測子候補の最大数(またはターゲット数)が、別々に決定可能であり、エンコーダがビットストリームに最大数/ターゲット数を決定するためのデータを含める。次に、デコーダはビットストリームから、最大/ターゲット数を決定するためのデータを取得し、取得したデータを使用して、動き情報予測子インデックスを解析または復号する。次に、アフィンフラグを使用して、例えば、マージインデックスの解析または復号と、アフィンマージインデックスと、を切り替えることができる。
本発明の実施形態の実施
前述の実施形態のうちの1つまたは複数は、図3の処理デバイス300のプロセッサ311、または図5のデコーダ60の、図17のCABACコーダの、図4のエンコーダ400の対応する機能モジュール/ユニット、またはその対応するCABACデコーダによって実装され、1つまたは複数の前述の実施形態の方法ステップを実行する。
図19は、本発明の1つまたは複数の実施形態の実施のためのコンピューティングデバイス1300の概略ブロック図である。コンピューティングデバイス1300は、マイクロコンピュータ、ワークステーション、またはライトポータブルデバイスなどのデバイスであってもよい。コンピューティングデバイス1300は、-マイクロプロセッサなどの中央処理装置(CPU)2001;-本発明の実施形態の方法の実行可能コードを記憶するためのランダムアクセスメモリ(RAM)2002ならびに本発明の実施形態に係る画像の少なくとも一部を符号化または復号するための方法を実現するために必要な変数およびパラメータを記録するためのレジスタ、これらのメモリ容量が例えば、拡張ポートに接続されたオプションのRAMによって拡張することができる;-本発明の実施形態を実現するためのコンピュータプログラムを記憶するリードオンリーメモリ(ROM)2003;-処理されるデジタルデータが送信または受信される通信ネットワークに典型的に接続されるネットワークインターフェース(NET)2004、に接続された通信バスを備える。ネットワークインターフェース(NET)2004は、単一のネットワークインターフェースであってもよいし、異なるネットワークインターフェース(例えば、有線および無線インターフェース、または異なる種類の有線または無線インターフェース)のセットで構成されてもよい。データパケットは、CPU2001で実行されるソフトウェアアプリケーションの制御の下で、送信のためにネットワークインターフェースに書き込まれるか、または受信のためにネットワークインターフェースから読み出される。-ユーザからの入力を受信したり、ユーザに情報を表示するためにユーザインターフェース(UI)2005が使用されてもよい。-大容量記憶装置としてハードディスク(HD)2006が提供されてもよい。-入力/出力モジュール(IO)2007が、ビデオソースやディスプレイなどの外部装置との間でデータを送受信するために使用されてもよい。実行可能コードは、ROM2003、HD2006、または例えばディスクのようなリムーバブルデジタル媒体のいずれかに格納することができる。変形例によれば、プログラムの実行可能コードは、実行される前に、HD2006などの通信装置1300の記憶手段の1つに記憶されるために、NET2004を介して、通信ネットワークによって受信することができる。CPU2001は、前述の記憶手段の1つに命令が格納されている、本発明の実施形態によるプログラムまたはプログラムのソフトウェアコードの命令または部分の実行を制御および指示するように適合される。電源投入後、CPU2001は、例えば、プログラムROM2003またはHD2006からこれらの命令がロードされた後に、メインRAMメモリ2002から、ソフトウェアアプリケーションに関する命令を実行することができる。このようなソフトウェアアプリケーションは、CPU2001によって実行されると、本発明による方法のステップを実行させる。
また、本発明の他の実施形態によれば、コンピュータ、携帯電話(携帯電話)、タブレット、またはユーザにコンテンツを提供/表示することができる他の任意のタイプのデバイス(例えば、ディスプレイ装置)などのユーザ端末に、前述の実施形態によるデコーダが提供されることも理解される。さらに別の実施形態によれば、前述の実施形態によるエンコーダは、エンコーダがエンコードするためのコンテンツをキャプチャおよび提供するカメラ、ビデオカメラ、またはネットワークカメラ(例えば、閉回路テレビまたはビデオ監視カメラ)も備える画像キャプチャ装置において提供される。2つのこのような例を、図20および21を参照して以下に提供する。
図20は、ネットワークカメラ2102及びクライアント装置2104を含むネットワークカメラシステム2100を示す図である。
ネットワークカメラ2102は、撮像部2106と、符号化部2108と、通信部2110と、制御部2112とを有している。
ネットワークカメラ2102とクライアント装置2104とは、ネットワーク200を介して互いに通信可能に相互に接続されている。
撮像部2106は、レンズおよび撮像素子(例えば、電荷結合素子(CCD)または相補型金属酸化膜半導体(CMOS))を含み、物体の画像を撮像し、その画像に基づいて画像データを生成する。この画像は静止画像であってもよいし、ビデオ画像であってもよい。また、撮像部は、(光学的またはデジタル的に)ズームまたはパンするように適合されたズーム手段および/またはパン手段を備えてもよい。
符号化部2108は、第1~第16の実施形態で説明した符号化方法を用いて画像データを符号化する。符号化部2108は、第1~第16の実施形態で説明した符号化方法の少なくとも1つを用いる。他の例では、符号化部2108は、第1~第16の実施形態で説明した符号化方法の組合せを用いることができる。
ネットワークカメラ2102の通信部2110は、符号化部2108で符号化された符号化画像データをクライアント装置2104に送信する。
また、通信部2110は、クライアント装置2104からのコマンドを受信する。コマンドは、符号化部2108の符号化のためのパラメータを設定するコマンドを含む。
制御部2112は、通信部2110が受信したコマンドに従って、ネットワークカメラ2102内の他のユニットを制御する。
クライアント装置2104は、通信部2114と、復号部2116と、制御部2118とを有する。
クライアント装置2104の通信部2114は、ネットワークカメラ2102にコマンドを送信する。
また、クライアント装置2104の通信部2114は、ネットワークカメラ2102から符号化画像データを受信する。
復号部2116は、第1~第16の実施形態のいずれかで説明した復号方法を用いて、符号化画像データを復号する。他の例では、復号部2116は、第1~第16の実施形態で説明した復号方法の組合せを用いることができる。
クライアント装置2104の制御部2118は、通信部2114が受信したユーザ操作やコマンドに従って、クライアント装置2104内の他のユニットを制御する。
クライアント装置2104の制御部2118は、復号部2116で復号された画像を表示するように表示装置2120を制御する。
また、クライアント装置2104の制御部2118は、GUI(Graphical User Interface)を表示するように表示装置2120を制御し、符号化部2108の符号化のためのパラメータを含むネットワークカメラ2102のパラメータの値を指定する。
また、クライアント装置2104の制御部2118は、表示装置2120が表示するGUIに対するユーザ操作入力に応じて、クライアント装置2104内の他のユニットを制御する。
クライアント装置2104の制御部2118は、表示装置2120が表示するGUIに対するユーザ操作入力に応じて、ネットワークカメラ2102のパラメータの値を指定するコマンドをネットワークカメラ2102に送信するように、クライアント装置2104の通信部2114を制御する。
ネットワークカメラシステム2100は、ビデオの記録中にカメラ2102がズームまたはパンを利用するかどうかを判定することができ、このような情報は、ビデオストリームを撮影中のズームまたはパンとして符号化するときに使用することができ、ズーム、回転、および/または伸張(特にレンズが「魚眼」レンズである場合、パンニングの副作用であり得る)などの複雑な動きを符号化するのによく適したアフィンモードの使用から利益を得ることができる。
図21は、スマートフォン2200を示す図である。
スマートフォン2200は、通信部2202と、復号/符号化部2204と、制御部2206と、表示部2208とを備える。
通信部2202は、ネットワーク200を介して符号化画像データを受信する。
復号部2204は、通信部2202が受信した符号化画像データを復号する。
復号部2204は、第1~第16の実施形態で説明した復号方法を用いて、符号化画像データを復号する。復号部2204は、第1~第16の実施形態で説明した復号方法の少なくとも1つを用いることができる。他の例では、復号/符号化部2204は、第1~第16の実施形態で説明した復号方法の組合せを用いることができる。
制御部2206は、通信部2202が受信したユーザ操作やコマンドに応じて、スマートフォン2200内の他のユニットを制御する。
例えば、制御部2206は、復号部2204により復号された画像を表示するように表示装置2208を制御する。
スマートフォンは、画像またはビデオを記録するための画像記録デバイス2210(例えば、デジタルカメラおよび関連する回路)をさらに備えることができる。このような記録された画像やビデオは、制御部2206の指示の下、復号/符号化部2204によって符号化されてもよい。
スマートフォンはさらに、モバイルデバイスの向きを感知するように構成されたセンサ2212を備えてもよい。このようなセンサは、加速度計、ジャイロスコープ、コンパス、全地球測位(GPS)ユニット又は同様の位置センサを含むことができる。そのようなセンサ2212は、スマートフォンが向きを変えているかどうかを判定することができ、そのような情報は、撮影中の向きの変化としてビデオストリームを符号化するときに使用され、回転のような複雑な動きを符号化するのによく適したアフィンモードの使用から利益を得ることができる。
代替および変更
本発明の目的は、アフィンモードが最も効率的な方法で利用されることを保証することであり、上述の特定の例は、アフィンモードが有用であると知覚される可能性に応じて、アフィンモードの使用をシグナリングすることに関することが理解されるのであろう。これのさらなる例は、複雑な動き(アフィン変換が特に効率的である場合がある)が符号化されていることが知られている場合に、エンコーダに適用され得る。このような場合の例は、
a) カメラズームイン/アウト
b) 撮影(すなわち、回転運動)中に向きを変えるポータブルカメラ(例えば、携帯電話)
c) 「魚眼」レンズカメラのパンニング(例えば、画像の一部の伸張/歪曲
を含む。
したがって、アフィンモードがスライス、フレームシーケンス、または実際にビデオストリーム全体のために使用される可能性が高くなるように、記録処理中に複雑な動きの指示を上げることができる。
さらなる例では、アフィンモードが、ビデオを記録するために使用されるデバイスの特徴または機能性に応じて、使用される可能性がより高い。例えば、モバイルデバイスは、(例えば)固定セキュリティカメラよりも向きを変える可能性が高いので、アフィンモードは、前者からのビデオを符号化するのにより適している可能性がある。特徴または機能の例には、ズーム手段の存在/使用、位置センサの存在/使用、パン手段の存在/使用、デバイスが携帯型であるか否か、またはデバイス上のユーザ選択が含まれる。
本発明を実施形態を参照して説明してきたが、本発明は、開示された実施形態に限定されないことを理解されたい。添付の特許請求の範囲に定義されるように、本発明の範囲から逸脱することなく、様々な変更および修正を行うことができることは、当業者には理解されよう。本明細書(任意の添付の特許請求の範囲、要約書、および図面を含む)に開示された特徴のすべて、および/またはそのように開示された任意の方法または処理のステップのすべては、そのような特徴および/またはステップの少なくともいくつかが相互に排他的である組合せを除いて、任意の組合せで組み合わせることができる。本明細書(任意の添付の特許請求の範囲、要約書、および図面を含む)に開示される各特徴は、特に断らない限り、同じ、同等の、または同様の目的を果たす代替の特徴によって置き換えることができる。したがって、特に断らない限り、開示される各特徴は、同等または同様の特徴の一般的なシリーズの一例にすぎない。
また、上述の比較、判定、評価、選択、実行、実行、または考慮の任意の結果、例えば、符号化またはフィルタリング処理中に行われる選択は、ビットストリーム内のデータ、例えば、結果を示すフラグまたはデータに示されるか、またはそれらから決定可能/推論可能でありえ、その結果、示されるか、または決定された/推論された結果は、例えば、復号処理中に、比較、判定、評価、選択、実行、実行、または考慮を実際に実行する代わりに、処理において使用され得ることが理解される。
特許請求の範囲において、単語「有する」は、他の要素又はステップを排除するものではなく、不定冠詞「a」又は「an」は複数を排除するものではない。異なる特徴が相互に異なる従属請求項に記載されているという単なる事実は、これらの特徴の組合せが有利に使用されることができないことを示すものではない。
特許請求の範囲に記載されている参照符号は、例示のみを目的としたものであり、クレームの範囲に限定的な影響を及ぼさない。
前述の実施形態では、説明された機能がハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実施される場合、機能は、1つ以上の命令またはコードとして、コンピュータ可読媒体上に記憶され、またはそれを介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。
コンピュータ可読媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、または例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載される技術の実施のための命令、コードおよび/またはデータ構造を検索するために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセス可能な任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく、一例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置、又は他の磁気記憶装置、フラッシュメモリ、又は所望のプログラムコードを命令又はデータ構造の形成で記憶するために使用することができ、コンピュータによってアクセスすることができる他の任意の媒体を含むことができる。また、任意のコネクションは、コンピュータ可読媒体と適切に呼ばれる。例えば、命令が同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などの無線技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などの無線技術は、媒体の定義に含まれる。しかし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、代わりに非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(Disk)およびディスク(disk)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ここで、ディスクは、通常、磁気的にデータを再生し、ディスクは、レーザで光学的にデータを再生する。上記の組合せは、コンピュータ読み取り可能な媒体の範囲内にも含まれるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲート/論理アレイ(FPGA)、または他の同等の集積またはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される用語「プロセッサ」は、前述の構造のいずれか、または本明細書で説明される技術の実装に適した他の任意の構造を指すことがある。さらに、いくつかの態様では、本明細書に記載する機能性が、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供されてもよく、あるいは結合されたコーデックに組み込まれてもよい。また、本技術は、1つまたは複数の回路または論理素子で完全に実装することができる。