以下は、本願の実施形態における添付の図面を参照して、本願の実施形態を記載する。
ビデオストリームまたはビデオストリームの一部、たとえばビデオ・フレームまたはピクチャー・ブロックのエンコードのために、ビデオストリームにおける時間的および空間的類似性が、エンコード性能を改善するために使用されうる。たとえば、ビデオストリーム内の現在ピクチャー・ブロックについて、現在ピクチャー・ブロックについて使用される動き情報は、ビデオストリーム内の先にエンコードされたブロックに基づいて予測されてもよく、先にエンコードされたブロックに基づいて現在ピクチャー・ブロックを符号化するために、予測ブロックと現在ピクチャー・ブロック(すなわち、もとのブロック)との間の差(残差とも呼ばれる)が同定される。この方法によれば、現在ピクチャー・ブロック全体ではなく、現在ピクチャー・ブロックを生成するために使用される残差およびいくつかのパラメータのみが、デジタルビデオ出力ビットストリームに含められる。この技術は、インター予測と呼ばれることがある。
動きベクトルは、インター予測プロセスにおける重要なパラメータであり、現在符号化ブロックに対する、先に符号化されたブロックの空間的変位を表わす。動きベクトルを得るために、動き探索のような動き推定方法が使用されてもよい。初期のインター予測技術では、デコーダが予測ブロックを再現し、それにより再構成されたブロックを得ることができるようにするために、動きベクトルを表わすビットが、エンコードされたビットストリームに含められる。さらにエンコード効率を改善するために、参照動きベクトルを使用することによって動きベクトルを差分的にエンコードすること、すなわち、動きベクトル全体をエンコードする代わりに、動きベクトルと参照動きベクトルとの間の差分のみをエンコードすることがさらに提案されている。いくつかの場合には、参照動きベクトルは、ビデオストリームにおいて以前に使用された動きベクトルから選択されてもよい。現在動きベクトルをエンコードするために以前に使用された動きベクトルを選択することは、エンコードされたビデオ・ビットストリームに含まれるビットの量をさらに減らすことができる。
図1Aは、本願のある実施形態による例示的なビデオ符号化システム1のブロック図である。本明細書で使用されるところでは、「ビデオコーデック」という用語は、通例、ビデオ・エンコーダおよびビデオ・デコーダを指す。本願では、「ビデオ符号化」または「符号化」という用語は、通例、ビデオ・エンコードまたはビデオ・デコードを指しうる。ビデオ符号化システム1におけるビデオ・エンコーダ100およびビデオ・デコーダ200は、本願で提供される複数の新しいインター予測モードのうちの任意の一つに記載されるさまざまな方法例に従って、現在の符号化されるピクチャー・ブロックの、または現在の符号化されるピクチャー・ブロックのサブブロックの動き情報、たとえば、動きベクトルを予測するように構成され、それにより、予測された動きベクトルは、動き推定方法を用いて得られた動きベクトルに最大限近いものとなる。このようにして、動きベクトル差分がエンコードの間に伝送される必要がなく、それによりエンコードおよびデコード性能をさらに改善する。
図1Aに示されるように、ビデオ符号化システム1は、源装置10と宛先装置20とを含む。源装置10は、エンコードされたビデオ・データを生成する。よって、源装置10は、ビデオ・エンコード装置と称されてもよい。宛先装置20は、源装置10によって生成されたエンコードされたビデオ・データをデコードすることができる。よって、宛先装置20は、ビデオ・デコード装置と称されてもよい。源装置10、宛先装置20、または源装置10および宛先装置20の両方のさまざまな実装解決策は、一つまたは複数のプロセッサおよび該一つまたは複数のプロセッサに結合されたメモリを含んでいてもよい。メモリは、本明細書に記載されるような、コンピュータによってアクセス可能な命令またはデータ構造の形で必要とされるプログラム・コードを記憶するために使用できるRAM、ROM、EEPROM、フラッシュメモリ、または他の任意の媒体を含みうるが、これらに限定されない。理解の容易のため、図1Bはさらに、ビデオ・データが源装置10によって収集され、エンコードされ、送信され、宛先装置20によって受領され、デコードされ、レンダリングされるシナリオを示す。
源装置10および宛先装置20は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえばラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、「スマート」フォンのようなハンドヘルド電話機、テレビジョンセット、カメラ、ディスプレイ装置、デジタルメディアプレーヤー、ビデオゲームコンソール、車載コンピュータ、および同様の装置を含むさまざまな装置を含みうる。
宛先装置20は、リンク30を通じて源装置10からエンコードされたビデオ・データを受領することができる。リンク30は、エンコードされたビデオ・データを源装置10から宛先装置20に転送することができる一つまたは複数の媒体または装置を含みうる。一例では、リンク30は、源装置10がエンコードされたビデオ・データを宛先装置20にリアルタイムで直接送信することを可能にする一つまたは複数の通信媒体を含みうる。この例では、源装置10は、通信標準(たとえば、無線通信プロトコル)に従って、エンコードされたビデオ・データを変調してもよく、変調されたビデオ・データを宛先装置20に送信してもよい。一つまたは複数の通信媒体は、無線通信媒体および/または有線通信媒体、たとえば、無線周波数(RF)スペクトルまたは一つまたは複数の物理的伝送線を含みうる。一つまたは複数の通信媒体は、パケットベースのネットワークの一部であってもよく、該パケットベースのネットワークは、たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)である。一つまたは複数の通信媒体は、ルーター、スイッチ、基地局、または源装置10から宛先装置20への通信を容易にする他の装置を含みうる。
別の例では、エンコードされたデータは、出力インターフェース140を通じて記憶装置40に出力されうる。同様に、エンコードされたデータは、記憶装置40から入力インターフェース240を通じてアクセスされうる。記憶装置40は、複数の分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意の一つを含みうる。たとえば、ハードディスクドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、またはエンコードされたビデオ・データを記憶するように構成された任意の他の好適なデジタル記憶媒体である。
別の例では、記憶装置40は、源装置10によって生成されたエンコードされたビデオを維持することができるファイル・サーバーまたは別の中間記憶装置に対応してもよい。宛先装置20は、ストリーミング伝送またはダウンロードを通じて、記憶装置40からの記憶されたビデオ・データにアクセスすることができる。ファイル・サーバーは、エンコードされたビデオ・データを記憶し、エンコードされたビデオ・データを宛先装置20に送信することができる任意のタイプのサーバーでありうる。たとえば、ファイル・サーバーは、ネットワークサーバー(たとえば、ウェブサイトのために使用される)、FTPサーバー、ネットワークアタッチトストレージ(NAS)装置、またはローカルディスクドライブであってもよい。宛先装置20は、任意の標準的なデータ接続(インターネット接続を含む)を通じて、エンコードされたビデオ・データにアクセスすることができる。標準的なデータ接続は、無線チャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSLまたはケーブルモデム)、またはファイル・サーバーに記憶されているエンコードされたビデオ・データにアクセスするのに好適なそれらの組み合わせを含みうる。記憶装置40からのエンコードされたビデオ・データの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせでありうる。
本願における動きベクトル予測技術は、複数のマルチメディアアプリケーション、たとえば、無線テレビ放送、ケーブルテレビ放送、衛星テレビ放送、(たとえばインターネット上での)ストリーミングビデオ伝送、データ記憶媒体に記憶されているビデオ・データのエンコード、データ記憶媒体に記憶されているビデオ・データのデコード、または他のアプリケーションをサポートするために、ビデオ符号化およびデコードのために使用されうる。いくつかの例では、ビデオ符号化システム1は、ビデオストリーミング伝送、ビデオ再生、ビデオ放送、および/またはビデオ電話などのアプリケーションをサポートするために、一方向または双方向のビデオ伝送をサポートするように構成されうる。
図1Aに記載されたビデオ符号化システム1は、単に一例であり、本願における技術は、必ずしもエンコード装置とデコード装置との間の何らかのデータ通信を含まないビデオ符号化セッティング(たとえば、ビデオ符号化またはビデオ・デコード)に適用可能である。別の例では、データはローカルメモリから取り出される、ストリーミング方式でネットワーク上で伝送される、などである。ビデオ・エンコード装置は、データをエンコードし、該データをメモリに記憶してもよく、および/またはビデオ・デコード装置は、メモリからデータを取り出し、該データをデコードしてもよい。多くの例において、データをエンコードし、該データをメモリに記憶する、および/または、メモリからデータを取り出し、該データをデコードするだけであって、互いに通信しない装置が、エンコードおよびデコードを実行する。
図1Aの例では、源装置10は、ビデオ源120と、ビデオ・エンコーダ100と、出力インターフェース140とを含む。いくつかの例では、出力インターフェース140は、変調器/復調器(モデム)および/または送信器を含んでいてもよい。ビデオ源120は、ビデオ捕捉装置(たとえば、カメラ)、以前に捕捉されたビデオ・データを含むビデオ・アーカイブ、ビデオ・コンテンツ・プロバイダーからビデオ・データを受信するためのビデオ・フィードイン・インターフェース、および/またはビデオ・データを生成するためのコンピュータ・グラフィックス・システム、または上記のビデオ・データ源の組み合わせを含みうる。
ビデオ・エンコーダ100は、ビデオ源120からのビデオ・データをエンコードしてもよい。いくつかの例では、源装置10は、エンコードされたビデオ・データを出力インターフェース140を通じて宛先装置20に直接送信する。別の例では、エンコードされたビデオ・データは、代替的に、記憶装置40に記憶されてもよく、それにより、宛先装置20が、その後、デコードおよび/または再生のために、エンコードされたビデオ・データにアクセスする。
図1Aの例では、宛先装置20は、入力インターフェース240、ビデオ・デコーダ200、および表示装置220を含む。いくつかの例では、入力インターフェース240は、受信器および/またはモデムを含む。入力インターフェース240は、リンク30を通じておよび/または記憶装置40から、エンコードされたビデオ・データを受領することができる。表示装置220は、宛先装置20と一体化されてもよく、または宛先装置20の外部に位置してもよい。通例、表示装置220は、デコードされたビデオ・データを表示する。表示装置220は、複数のタイプの表示装置、たとえば、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示装置を含みうる。
図1Aには示されていないが、いくつかの側面では、ビデオ・エンコーダ100およびビデオ・デコーダ200は、それぞれ、オーディオエンコーダおよびオーディオデコーダと一体化されてもよく、適切なマルチプレクサ‐デマルチプレクサ・ユニットまたは他のハードウェアおよびソフトウェアを含んでいて、オーディオおよびビデオを、組み合わされたデータストリームまたは別個のデータストリームにおいてエンコードしてもよい。いくつかの例において、もし適用可能であれば、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザーデータグラムプロトコル(UDP)のような別のプロトコルに準拠してもよい。
ビデオ・エンコーダ100およびビデオ・デコーダ200は、それぞれ、たとえば、以下の複数の回路:一つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理、ハードウェア、またはそれらの任意の組み合わせのうちの任意の一つとして実装されうる。本願が部分的にソフトウェアを通じて実装される場合、装置は、適切な不揮発性コンピュータ読み取り可能記憶媒体に、ソフトウェアのために使用される命令を記憶してもよく、本願で技術を実装するために、ハードウェアにおいて該命令を実行するために一つまたは複数のプロセッサを使用してもよい。上記の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせなどを含む)の任意の一つが、一つまたは複数のプロセッサとみなされてもよい。ビデオ・エンコーダ100およびビデオ・デコーダ200は、それぞれ、一つまたは複数のエンコーダまたはデコーダに含まれてもよく、エンコーダまたはデコーダは、対応する装置内で組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合されてもよい。
本願では、ビデオ・エンコーダ100は、おおまかには、たとえばビデオ・デコーダ200に何らかの情報を「シグナリング」または「送信」する別の装置と称されてもよい。「シグナリング」または「送信」という用語は、おおまかには、圧縮されたビデオ・データをデコードするために使用されるシンタックス要素および/または他のデータの転送を指しうる。転送は、リアルタイムで、またはほぼリアルタイムで行なわれる。あるいはまた、通信は、ある時間期間後に行なわれてもよい。たとえば、通信は、エンコードされたビットストリーム中のシンタックス要素がエンコードの間にコンピュータ読み取り可能な記憶媒体中に記憶されたときに生起してもよく、すると、デコード装置は、そのシンタックス要素が媒体中に記憶された後の任意の時点で、そのシンタックス要素を取り出しうる。
ビデオ・エンコーダ100およびビデオ・デコーダ200は、高効率ビデオ符号化(HEVC)またはその拡張などのビデオ圧縮標準に従って動作してもよく、HEVCテスト・モデル(HM)に準拠してもよい。あるいはまた、ビデオ・エンコーダ100およびビデオ・デコーダ200は、別の業界標準、たとえば、ITU-T H.264標準、H.265標準、またはそのような標準の拡張に従って動作してもよい。しかしながら、本願における技術は、いかなる特定のエンコードおよびデコード標準にも限定されない。
一例では、図3を一緒に参照すると、ビデオ・エンコーダ100は、現在のエンコードされるべきピクチャー・ブロックに関連するシンタックス要素を、デジタルビデオ出力ビットストリーム(これは、ビットストリームと略称される)中にエンコードするように構成される。ここでは、現在ピクチャー・ブロックに対してインター予測を実行するために使用されるシンタックス要素はインター予測データと略称される。現在ピクチャー・ブロックをエンコードするために使用されるインター予測モードを決定するために、ビデオ・エンコーダ100は、現在ピクチャー・ブロックに対してインター予測を実行するために使用されるインター予測モードを候補インター予測モード集合において決定または選択し(S301)(たとえば、現在ピクチャー・ブロックをエンコードする妥協されたまたは最低のレート‐歪みコストをもつインター予測モードを複数の新しいインター予測モードにおいて選択する);決定されたインター予測モードに基づいて現在ピクチャー・ブロックをエンコードする(S303)ようにさらに構成される。本明細書におけるエンコード・プロセスは:決定されたインター予測モードに基づいて、現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報を予測し(動き情報は、具体的には、各サブブロックの動き情報または全サブブロックの動き情報であってもよい)、現在ピクチャー・ブロックの予測ブロックを得るために、現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報を使用することによって、一つまたは複数のサブブロックの予測サンプル値を予測することを含んでいてもよい。
インター予測モードに基づいて予測された動き情報を用いて生成された予測ブロックと、現在のエンコードされるべきピクチャー・ブロック(すなわち、もとのブロック)との間の差(すなわち、残差)が0である場合、ビデオ・エンコーダ100は、現在のエンコードされるべきピクチャー・ブロックに関連するシンタックス要素のみをビットストリーム(ビットストリームとも呼ばれる)中にエンコードする必要があることが理解されるべきである。そうでない場合、シンタックス要素に加えて、対応する残差がビットストリーム中にエンコードされる必要がある。
別の例では、図4を一緒に参照すると、ビデオ・デコーダ200は、ビットストリームをデコードして、現在のデコードされるべきピクチャー・ブロックに関連するシンタックス要素を得て(S401)、インター予測データが、現在ピクチャー・ブロックを予測するために特定のインター予測モード(たとえば、先進動きベクトル予測(AMVP)モード、マージ・モード、アフィン・マージaffine_mergeモード、またはアフィン動きベクトル予測affine_interモード)を使用することを示す場合(S403)、決定されたインター予測モードに基づいて現在ピクチャー・ブロックをデコードする(S405)ように構成される。ここでのデコード・プロセスは:現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報を予測し、現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報を使用することによって、現在ピクチャー・ブロックに対してインター予測を実行することを含みうる。
任意的に、インター予測データが、現在ピクチャー・ブロックのターゲット候補動きベクトル・グループを示すために使用されるインデックスをさらに含む場合、ビデオ・デコーダ200は、アフィン候補動きベクトル・リスト内のターゲット候補動きベクトル・グループを決定するように構成される。ターゲット候補動きベクトル・グループは、現在ピクチャー・ブロックの制御点のグループの動きベクトル予測子を表わす。ビデオ・デコーダ200がマージ・モードを使用する場合、ターゲット候補動きベクトル・グループによって表わされる、現在ピクチャー・ブロックの制御点のグループの動きベクトル予測子が、現在ピクチャー・ブロックの制御点のグループの動きベクトルとして使用されることが理解されるべきである。
図2Aは、本願のある実施形態による例示的なビデオ・エンコーダ100のブロック図である。ビデオ・エンコーダ100は、後処理エンティティ41にビデオを出力するように構成される。後処理エンティティ41は、ビデオ・エンコーダ100からのエンコードされたビデオ・データを処理することができるビデオ・エンティティの例を表わす。たとえば、ビデオ・エンティティは、メディア認識ネットワーク要素(MANE)またはステッチ装置/編集装置である。いくつかの場合には、後処理エンティティ41は、ネットワーク・エンティティの例であってもよい。いくつかのビデオ符号化システムでは、後処理エンティティ41およびビデオ・エンコーダ100は、別個の装置のコンポーネントであってもよく、他の場合には、後処理エンティティ41に関して記載される機能は、ビデオ・エンコーダ100を含む同じ装置によって実装されてもよい。一例において、後処理エンティティ41は、図1Aの記憶装置40の例である。
ビデオ・エンコーダ100は、モード0、1、2、…、10を含む、本願で提案される候補インター予測モード集合における任意の新しいインター予測モードに基づいて、ビデオ・ピクチャー・ブロックをエンコードする、たとえばビデオ・ピクチャー・ブロックに対してインター予測を実行することができる。
図2Aの例では、ビデオ・エンコーダ100は、予測処理ユニット108と、フィルタ・ユニット106と、デコード・ピクチャー・バッファ(DPB)107と、加算ユニット114と、変換ユニット101と、量子化ユニット102と、エントロピー・エンコード・ユニット103とを含む。予測処理ユニット108は、インター予測ユニット110と、イントラ予測ユニット109とを含む。ピクチャー・ブロック再構成のために、ビデオ・エンコーダ100は、逆量子化ユニット104、逆変換ユニット105、および加算ユニット113をさらに含む。フィルタ・ユニット106は、一つまたは複数のループ・フィルタ・ユニット、たとえば、ブロック解除フィルタ・ユニット、適応ループ・フィルタ(ALF)・ユニット、およびサンプル適応オフセット(SAO)・フィルタ・ユニットを表わすことが意図されている。フィルタ・ユニット106は、図2Aではループ内フィルタとして示されているが、別の実装では、フィルタ・ユニット106は、ポストフィルタとして実装されてもよい。一例では、ビデオ・エンコーダ100は、さらに、ビデオ・データ記憶ユニットと、分割ユニット(図には示されていない)とを含んでいてもよい。
ビデオ・データ記憶ユニットは、ビデオ・エンコーダ100のコンポーネントによってエンコードされたビデオ・データを記憶することができる。ビデオ・データ記憶ユニットに記憶されたビデオ・データは、ビデオ源120から得られてもよい。DPB 107は、ビデオ・データをイントラまたはインター符号化モードでエンコードするためにビデオ・エンコーダ100によって使用される参照ビデオ・データを記憶する参照ピクチャー記憶ユニットであってもよい。ビデオ・データ記憶ユニットおよびDPB 107は、それぞれ、複数の記憶ユニット装置、たとえば、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または別のタイプの記憶ユニット装置のいずれか一つを含んでいてもよい。ビデオ・データ記憶ユニットおよびDPB 107は、同じ記憶ユニット装置または別個の記憶ユニット装置によって提供されうる。さまざまな例において、ビデオ・データ記憶ユニットは、ビデオ・エンコーダ100の他のコンポーネントと一緒にチップ上に集積されてもよく、またはそれらのコンポーネントに対してチップの外部に配置されてもよい。
図2Aに示されるように、ビデオ・エンコーダ100は、ビデオ・データを受領し、該ビデオ・データをビデオ・データ記憶ユニットに記憶する。分割ユニットは、ビデオ・データをいくつかのピクチャー・ブロックに分割し、これらのピクチャー・ブロックはさらに、より小さなブロックに分割されてもよい。たとえば、四分木構造または二分木構造に基づくピクチャー・ブロック分割が実行される。分割は、スライス(slice)、タイル(tile)、または他のより大きな単位に分割することをさらに含みうる。ビデオ・エンコーダ100は、通例、エンコードされるべきビデオ・スライス内のピクチャー・ブロックをエンコードするためのコンポーネントである。スライスは、複数のピクチャー・ブロックに分割されてもよい(また、タイルと呼ばれるピクチャー・ブロック集合に分割されてもよい)。予測処理ユニット108は、現在ピクチャー・ブロックのために使用される複数の可能な符号化モードのうちの一つ、たとえば、複数のイントラ符号化モードのうちの一つまたは複数のインター符号化モードのうちの一つを選択してもよい。前記複数のインター符号化モードは、本願において提案されるモード0、1、2、3、…、10のうちの一つまたは複数を含むが、これらに限定されない。予測処理ユニット108は、得られたイントラ符号化されたブロックおよびインター符号化されたブロックを、残差ブロックを生成するために加算ユニット114に提供し、それらのブロックを、参照ピクチャーとして使用されるエンコードされたブロックを再構成するために加算ユニット113に提供してもよい。
予測処理ユニット108内のイントラ予測ユニット109は、空間的冗長性を除去するために、現在のエンコードされるべきブロックと同じフレームまたはスライス内にある一つまたは複数の近傍ブロックをもとに、現在ピクチャー・ブロックに対してイントラ予測エンコードを実行してもよい。予測処理ユニット108内のインター予測ユニット110は、時間的冗長性を除去するために、一つまたは複数の参照ピクチャー内の一つまたは複数の予測ブロックをもとに、現在ピクチャー・ブロックに対してインター予測エンコードを実行してもよい。
具体的には、インター予測ユニット110は、現在ピクチャー・ブロックをエンコードするために使用されるインター予測モードを決定するように構成されてもよい。たとえば、インター予測ユニット110は、レート‐歪み解析を通じて設定された候補インター予測モード集合におけるさまざまなインター予測モードのレート‐歪み値を計算し、それらのインター予測モードから、最適なレート‐歪み特性をもつインター予測モードを選択することができる。レート‐歪み解析は、通例、エンコードされたブロックと、エンコードされておらず、エンコードされたブロックを生成するためにエンコードされるべきもとのブロックとの間の歪み(または誤差)の量、ならびに、エンコードされたブロックを生成するために使用されるビットレート(すなわち、ビットの量)を決定するために使用される。たとえば、インター予測ユニット110は、現在ピクチャー・ブロックに対してインター予測を実行するために使用されるインター予測モードとして、最低のレート‐歪みコストをもち、現在ピクチャー・ブロックをエンコードするために使用されるインター予測モードを決定することができる。下記は、インター予測エンコード・プロセス、特に本願におけるアフィンモード(たとえば、アフィン変換に基づく先進動きベクトル予測モードまたはアフィン変換に基づくマージ予測モード)において現在ピクチャー・ブロックにおける一つまたは複数のサブブロック(具体的には、各サブブロックまたは全サブブロックであってもよい)の動き情報を予測するプロセスについて詳細に述べる。言い換えると、下記は、動きモデル、たとえば、4パラメータ・アフィン・モデルまたは6パラメータ・アフィン・モデルに基づく動きベクトル予測プロセスを詳細に説明する。
インター予測ユニット110は、決定されたインター予測モードに基づいて、現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報(たとえば、動きベクトル)を予測し、現在ピクチャー・ブロック内の一つまたは複数のサブブロックの動き情報(たとえば、動きベクトル)を用いて、現在ピクチャー・ブロックの予測ブロックを取得または生成するように構成されている。インター予測ユニット110は、参照ピクチャー・リスト内の1つの参照ピクチャーにおいて、動きベクトルがポイントする予測ブロックを位置特定することができる。インター予測ユニット110は、さらに、ピクチャー・ブロックおよびビデオ・スライスに関連するシンタックス要素を生成することができ、それにより、ビデオ・デコーダ200は、そのシンタックス要素を使用して、ビデオ・スライスのピクチャー・ブロックをデコードする。あるいはまた、一例では、インター予測ユニット110は、各サブブロックの予測ブロックを生成するために各サブブロックの動き情報を用いて動き補償プロセスを実行し、現在ピクチャー・ブロックの予測ブロックを取得する。ここで、インター予測部110は、具体的には、動き推定ユニット111および動き補償部112を含むことが理解されるべきである。動き推定ユニット111は、動き推定(ME)プロセスを実行するように構成され、動き補償ユニット112は、動き補償(MC)プロセスを実行するように構成される。
具体的には、現在ピクチャー・ブロックのためのインター予測モードを選択した後、インター予測ユニット110は、エントロピー・エンコード・ユニット103のために、現在ピクチャー・ブロックの選択されたインター予測モードを示す情報を提供することができ、それにより、エントロピー・エンコード・ユニット103は、選択されたインター予測モードを示す情報をエンコードする。イントラ予測ユニット109は、現在ピクチャー・ブロックに対してイントラ予測を実行することができる。具体的には、イントラ予測ユニット109は、現在ブロックをエンコードするために使用されるイントラ予測モードを決定することができる。たとえば、イントラ予測ユニット109は、レート‐歪み解析を通じて、さまざまなテストされるべきイントラ予測モードのレート‐歪み値を計算し、それらのテストされるべきモードから、最適なレート‐歪み特性をもつイントラ予測モードを選択することができる。いずれの場合も、ピクチャー・ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット109は、エントロピー・エンコード・ユニット103のために、現在ピクチャー・ブロックの選択されたイントラ予測モードを示す情報を提供することができ、それにより、エントロピー・エンコード・ユニット103は選択されたイントラ予測モードを示す情報をエンコードする。
予測処理ユニット108が、現在ピクチャー・ブロックの予測ブロックをインター予測およびイントラ予測を通じて生成した後、ビデオ・エンコーダ100は、現在のエンコードされるべきピクチャー・ブロックから予測ブロックを減算し、残差ピクチャー・ブロックを形成する。加算ユニット114は、減算演算を実行する一つまたは複数のコンポーネントを表わす。残差ブロック内の残差ビデオ・データは、一つまたは複数のTUに含まれて、変換ユニット101によって使用されてもよい。変換ユニット101は、離散コサイン変換(DCT)または概念的に同様の変換といった変換を通じて、残差ビデオ・データを残差変換係数に変換する。変換ユニット101は、残差ビデオ・データをサンプル値ドメインから変換ドメイン、たとえば周波数ドメインに変換することができる。
変換ユニット101は、得られた変換係数を量子化ユニット102に送信してもよい。量子化ユニット102は、ビットレートをさらに低減するために変換係数を量子化する。いくつかの例では、量子化ユニット102は、量子化された変換係数を含むマトリクスをさらに走査してもよい。あるいはまた、エントロピー・エンコード・ユニット103がその走査を実行してもよい。
量子化後、エントロピー・エンコード・ユニット103は、量子化された変換係数に対してエントロピー・エンコードを実行する。たとえば、エントロピー・エンコード・ユニット103は、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、シンタックスベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、または他のエントロピー符号化方法もしくは技術を実行することができる。エントロピー・エンコード・ユニット103がエントロピー・エンコードを実行した後、エンコードされたビットストリームは、ビデオ・デコーダ200に送信されてもよいし、またはその後の送信のためもしくはビデオ・デコーダ200によって取り出されるためにアーカイブされてもよい。エントロピー・エンコード・ユニット103は、さらに、現在のエンコードされるべきピクチャー・ブロックのシンタックス要素に対してエントロピー・エンコードを実行してもよい。
逆量子化ユニット104および逆変換ユニット105は、それぞれ、逆量子化および逆変換を適用して、たとえば参照ピクチャーの参照ブロックとしてのその後の使用のためにサンプル・ドメインでの残差ブロックを再構成する。加算ユニット113は、インター予測ユニット110またはイントラ予測ユニット109によって生成された予測ブロックに、再構成された残差ブロックを加算して、再構成されたピクチャー・ブロックを生成する。フィルタ・ユニット106は、ブロッキングアーチファクト(ブロックアーチファクト)などの歪みを低減するために、再構成されたピクチャー・ブロックに適用可能である。次いで、再構成されたピクチャー・ブロックは、デコード・ピクチャー・バッファ107内の参照ブロックとして記憶され、その後のビデオ・フレームまたはピクチャー内のブロックに対してインター予測を実行するためにインター予測ユニット110によって参照ブロックとして使用されることができる。
ビデオストリームをエンコードするためにビデオ・エンコーダ100の他の構造的変形が使用されてもよいことが理解されるべきである。たとえば、いくつかのピクチャー・ブロックまたはピクチャー・フレームについて、ビデオ・エンコーダ100は残差信号を直接量子化してもよい。この場合、変換ユニット101および逆変換ユニット105による処理は要求されない。あるいはまた、いくつかのピクチャー・ブロックまたはピクチャー・フレームについては、ビデオ・エンコーダ100は残差データを生成しない。この場合、変換ユニット101、量子化ユニット102、逆量子化ユニット104、逆変換ユニット105による処理は要求されない。あるいはまた、ビデオ・エンコーダ100は、再構成されたピクチャー・ブロックを参照ブロックとして直接記憶してもよく、フィルタ・ユニット106による処理は要求されない。あるいはまた、ビデオ・エンコーダ100内の量子化ユニット102および逆量子化ユニット104は組み合わされてもよい。ループ・フィルタ・ユニットは任意的である。また、無損失圧縮符号化については、変換ユニット101、量子化ユニット102、逆量子化ユニット104、逆変換ユニット105は任意的である。異なる適用シナリオでは、インター予測ユニットおよびイントラ予測ユニットが選択的に有効化されてもよいことが理解されるべきである。この解決策では、インター予測ユニットが有効にされる。
図2Bは、本願のある実施形態による例示的なビデオ・デコーダ200のブロック図である。図2Bの例では、ビデオ・デコーダ200は、エントロピー・デコード・ユニット203、予測処理ユニット208、逆量子化ユニット204、逆変換ユニット205、加算ユニット211、フィルタ・ユニット206、およびデコード・ピクチャー・バッファ207を含む。予測処理ユニット208は、動き補償ユニット210(インター予測ユニットとも呼ばれる)210と、イントラ予測ユニット209とを含んでいてもよい。いくつかの例では、ビデオ・デコーダ200は、図2Aにおけるビデオ・エンコーダ100に関して記載されるエンコード・プロセスと実質的に逆のデコード・プロセスを実行することができる。
デコードの間、ビデオ・デコーダ200は、ビデオ・エンコーダ100から、エンコードされたビデオ・スライスのピクチャー・ブロックおよび関連するシンタックス要素を表わすエンコードされたビデオ・ビットストリームを受領する。ビデオ・デコーダ200は、ネットワーク・エンティティ42からビデオ・データを受領してもよく、任意的に、ビデオ・データをビデオ・データ記憶ユニット(図には示されていない)にさらに記憶してもよい。ビデオ・データ記憶ユニットは、ビデオ・デコーダ200のコンポーネントによってデコードされるべき、エンコードされたビデオ・ビットストリームといったビデオ・データを記憶することができる。ビデオ・データ記憶ユニットに記憶されたビデオ・データは、たとえば、ビデオ・データの有線または無線ネットワーク通信を通じて、または物理的なデータ記憶媒体にアクセスすることによって、記憶装置40またはカメラのようなローカル・ビデオ源から得られてもよい。ビデオ・データ記憶ユニットは、エンコードされたビデオ・ビットストリームからのエンコードされたビデオ・データを記憶するように構成されたデコード・ピクチャー・バッファ(DPB)として使用されてもよい。よって、ビデオ・データ記憶ユニットは図2Bには示されていないが、ビデオ・データ記憶ユニットとDPB 207は、同じ記憶ユニットであってもよく、または別個に配置された記憶ユニットであってもよい。ビデオ・データ記憶ユニットおよびDPB 207は、それぞれ、複数の記憶ユニット装置、たとえば、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または別のタイプの記憶ユニット装置のいずれか一つを含んでいてもよい。さまざまな例において、ビデオ・データ記憶ユニットは、ビデオ・デコーダ200の他のコンポーネントと一緒にチップ上に集積されてもよく、またはそれらのコンポーネントに対してチップの外部に配置されてもよい。
ネットワーク・エンティティ42は、たとえば、サーバー、MANE、ビデオ・エディタ/スプライサ、または上述の技術の一つまたは複数を実装するように構成された別の装置であってもよい。ネットワーク・エンティティ42は、ビデオ・エンコーダ、たとえば、ビデオ・エンコーダ100を含んでも含まなくてもよい。ネットワーク・エンティティ42がエンコードされたビデオ・ビットストリームをビデオ・デコーダ200に送信する前に、ネットワーク・エンティティ42は、本願に記載される技術の一部を実装しうる。いくつかのビデオ・デコード・システムでは、ネットワーク・エンティティ42およびビデオ・デコーダ200は、別個の装置のコンポーネントであってもよい。他の場合には、ネットワーク・エンティティ42に関して記載される機能は、ビデオ・デコーダ200を含む同じ装置によって実装されてもよい。いくつかの場合には、ネットワーク・エンティティ42は、図1Aにおける記憶装置40の例であってもよい。
ビデオ・デコーダ200のエントロピー・デコード・ユニット203は、ビットストリームに対してエントロピー・デコードを実行し、量子化された係数およびいくつかのシンタックス要素を生成する。エントロピー・デコード・ユニット203は、シンタックス要素を予測処理ユニット208に転送する。ビデオ・デコーダ200は、ビデオ・スライス・レベルおよび/またはピクチャー・ブロック・レベルでシンタックス要素(単数または複数)を受領しうる。
ビデオ・スライスがイントラ・デコードされた(I)スライスにデコードされるとき、予測処理ユニット208のイントラ予測ユニット209は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャーの前にデコードされたブロックのデータとに基づいて、現在のビデオ・スライスのピクチャー・ブロックの予測ブロックを生成することができる。ビデオ・スライスが、インター・デコードされた(すなわち、BまたはP)スライスにデコードされるとき、予測処理ユニット208のインター予測部210は、エントロピー・デコード・ユニット203から受領されたシンタックス要素に基づいて、現在のビデオ・スライスの現在ピクチャー・ブロックをデコードするために使用されるインター予測モードを決定し、決定されたインター予測モードに基づいて現在ピクチャー・ブロックをデコードする(たとえば、現在ピクチャー・ブロックに対してインター予測を実行する)ことができる。具体的には、現在ピクチャー・ブロック、または現在のビデオ・スライスの現在ピクチャー・ブロックのサブブロックの動き情報が、インター予測モード(たとえば、シンタックス要素によって指定されたインター予測モードまたはデフォルトのインター予測モード)に基づいて予測される。このようにして、現在ピクチャー・ブロックのサブブロックの予測ブロックまたは現在ピクチャー・ブロックの予測ブロックが、動き補償プロセスにおいて現在ピクチャー・ブロックまたは現在ピクチャー・ブロックのサブブロックの予測された動き情報を用いて取得または生成される。ここでの動き情報は、参照ピクチャー情報および動きベクトルを含みうる。参照ピクチャー情報は、一方向/双方向予測情報、参照ピクチャー・リスト番号、および参照ピクチャー・リストに対応する参照ピクチャー・インデックスを含んでいてもよいが、これらに限定されない。インター予測のために、予測ブロックは、参照ピクチャー・リストのうちの一つの参照ピクチャー・リストにおける参照ピクチャーのうちの一つから生成されてもよい。ビデオ・デコーダ200は、DPB 207に記憶された参照ピクチャーに基づいて、参照ピクチャー・リスト、すなわち、リスト0およびリスト1を構築してもよい。現在ピクチャーの参照フレーム・インデックスが、参照フレーム・リスト0および参照フレーム・リスト1の一方または両方に含まれてもよい。ここで、インター予測ユニット210が動き補償プロセスを実行することが理解されるべきである。下記は、さまざまな新しいインター予測モードにおける参照ブロックの動き情報を用いて、現在ピクチャー・ブロックまたは現在ピクチャー・ブロックのサブブロックの動き情報を予測するインター予測プロセスについて詳細に説明する。下記は、本願におけるアフィンモード(たとえば、アフィン変換に基づく先進動きベクトル予測モードまたはアフィン変換に基づくマージ予測モード)において現在ピクチャー・ブロックにおける一つまたは複数のサブブロック(具体的には、各サブブロックまたは全サブブロックであってもよい)の動き情報を予測するプロセスについて詳細に説明する。言い換えると、下記は、動きモデル、たとえば、4パラメータ・アフィン・モデルまたは6パラメータ・アフィン・モデルに基づく動きベクトル予測プロセスを詳細に説明する。
逆量子化ユニット204は、ビットストリームにおいて提供され、エントロピー・デコード・ユニット203によってデコードされた量子化変換係数に対して逆量子化を実行する、すなわち、量子化解除する。逆量子化プロセスは、ビデオ・スライス内の各ピクチャー・ブロックについてビデオ・エンコーダ100によって計算された量子化パラメータを使用することによって、適用されるべき量子化度を決定し、適用されるべき逆量子化度を同様に決定することを含んでいてもよい。逆変換ユニット205は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用し、サンプル・ドメインでの残差ブロックを生成する。
インター予測ユニット210が、現在ピクチャー・ブロックまたは現在ピクチャー・ブロックのサブブロックのために使用される予測ブロックを生成した後、ビデオ・デコーダ200が、逆変換ユニット205からの残差ブロックと、インター予測ユニット210によって生成された対応する予測ブロックとを加算し、再構成されたブロック、すなわちデコードされたピクチャー・ブロックを得る。加算ユニット211は、加算演算を実行するコンポーネントを表わす。必要な場合には、サンプルを平滑化するために(デコード・ループの中または後に)ループ・フィルタ・ユニットがさらに使用されてもよく、または別の仕方でビデオ品質が改善されてもよい。フィルタ・ユニット206は、一つまたは複数のループ・フィルタ・ユニット、たとえば、ブロック解除フィルタ・ユニット、適応ループ・フィルタ(ALF)・ユニット、およびサンプル適応オフセット(SAO)・フィルタ・ユニットを表わしうる。フィルタ・ユニット206は、図2Bではループ内フィルタ・ユニットとして示されているが、別の実装では、フィルタ・ユニット206は、ループ後フィルタ・ユニットとして実装されてもよい。一例では、フィルタ・ユニット206は、ブロック歪みを低減するためにブロック再構成に適用可能であり、この結果は、デコードされたビデオストリームとして出力される。加えて、所与のフレームまたはピクチャー内のデコードされたピクチャー・ブロックは、デコード・ピクチャー・バッファ207内にさらに記憶されてもよく、デコード・ピクチャー・バッファ207は、その後の動き補償のために使用される参照ピクチャーを記憶する。デコード・ピクチャー・バッファ207は、記憶ユニットの一部であってもよく、また、表示装置(たとえば、図1Aにおける表示装置220)上でのその後の呈示のために、デコードされたビデオをさらに記憶してもよく、または、そのような記憶ユニットから分離されていてもよい。
エンコードされたビデオ・ビットストリームをデコードするために、ビデオ・デコーダ200の他の構造的変形が使用されてもよいことが理解されるべきである。たとえば、ビデオ・デコーダ200は、フィルタ・ユニット206による処理なしに出力ビデオストリームを生成してもよい。あるいはまた、いくつかのピクチャー・ブロックまたはピクチャー・フレームについて、ビデオ・デコーダ200のエントロピー・デコード・ユニット203は、デコードを通じて量子化係数を得ない。この場合、逆量子化ユニット204および逆変換ユニット205による処理は要求されない。ループ・フィルタ・ユニットは任意的である。さらに、無損失圧縮については、逆量子化ユニット204および逆変換ユニット205は任意的である。異なる適用シナリオでは、インター予測ユニットおよびイントラ予測ユニットが選択的に有効化されてもよいことが理解されるべきである。この解決策では、インター予測ユニットが有効にされる。
図5Aは、本願のある実施形態による、現在ピクチャー・ブロック600および参照ブロックの動き情報の例示的概略図である。図5Aに示されるように、WおよびHは、現在ピクチャー・ブロック600の幅および高さならびに現在ピクチャー・ブロック600の共位置のブロック600'の幅および高さである。現在ピクチャー・ブロック600の参照ブロックは、現在ピクチャー・ブロック600の上の空間的近傍ブロックと、現在ピクチャー・ブロック600の左の空間的近傍ブロックと、共位置ブロック600'の下の空間的近傍ブロックと、共位置ブロック600'の右の空間的近傍ブロックとを含む。共位置ブロック600'は、参照ピクチャー内にあり、現在ピクチャー・ブロック600と同じサイズ、同じ形状、および同じ座標を有するピクチャー・ブロックである。現在ピクチャー・ブロックの下に空間的近傍ブロックと、現在ピクチャー・ブロックの右の空間的近傍ブロックの動き情報は存在せず、これらはエンコードされないことを注意しておくべきである。現在ピクチャー・ブロック600および共位置ブロック600'は、任意のブロック・サイズを有しうることが理解されるべきである。たとえば、現在ピクチャー・ブロック600および共位置ブロック600'は、16×16サンプル、32×32サンプル、32×16サンプル、16×32サンプルなどを含むことができるが、これらに限定されない。上述のように、各ピクチャー・フレームは、エンコードのためにピクチャー・ブロックに分割されてもよい。これらのピクチャー・ブロックは、さらに、より小さなブロックに分割されてもよい。たとえば、現在ピクチャー・ブロック600および共位置ブロック600'は、複数のM×Nサブブロックに分割されてもよい。換言すれば、各サブブロックのサイズは、M×Nサンプルである。さらに、各参照ブロックのサイズもM×Nサンプルであり、すなわち、現在ピクチャー・ブロックのサブブロックのサイズと同じである。図5Aにおける座標は、1 M×Nブロックで測定される。「M×N」および「MかけるN」は、水平寸法および垂直寸法におけるピクチャー・ブロックのサンプル・サイズを指すために交換可能に使用されうる。言い換えると、水平方向にはM個のサンプル、垂直方向にはN個のサンプルがある。ここで、MとNは負でない整数値を表わす。また、ブロックにおいて、水平方向におけるサンプル数と垂直方向におけるサンプル数が必ずしも同じでなくてもよい。たとえば、ここではM=N=4である。むろん、現在ピクチャー・ブロックのサブブロックのサイズおよび参照ブロックのサイズは、代替的に、8×8サンプル、8×4サンプル、4×8サンプル、または最小の予測ブロック・サイズであってもよい。また、本願に記載されるピクチャー・ブロックは、予測単位(PU)、符号化単位(CU)、変換単位(TU)などとして理解されうるが、これらに限定されない。種々のビデオ圧縮符号化規格における規定によれば、CUは、一つまたは複数の予測ユニットPUを含んでいてもよく、またはPUのサイズは、CUのサイズと同じである。ピクチャー・ブロックは、固定または可変サイズを有することができ、サイズは、異なるビデオ圧縮符号化規格では変わりうる。加えて、現在ピクチャー・ブロックは、現在のエンコードされるべきまたはデコードされるべきピクチャー・ブロック、たとえば、エンコードされるべきまたはデコードされるべき予測単位である。
一例では、現在ピクチャー・ブロック600の左の各空間的近傍ブロックが利用可能であるかどうかは、方向1に沿って逐次的に決定されてもよく、現在ピクチャー・ブロック600の上の各空間的近傍ブロックが利用可能であるかどうかは、方向2に沿って逐次的に決定されてもよい。たとえば、近傍ブロック(参照ブロックとも称される。ここで、「近傍ブロック」と「参照ブロック」は交換可能に使用されうる)がインター符号化されているかどうかが判定され、該近傍ブロックが存在し、インター符号化されている場合には該近傍ブロックは利用可能であり、あるいは該近傍ブロックが存在しないまたはイントラ符号化されている場合には該近傍ブロックは利用不能である。近傍ブロックがイントラ符号化されている場合には、別の近傍の参照ブロックの動き情報が近傍ブロックの動き情報としてコピーされる。共位置ブロック600'の下の空間的近傍ブロックおよび共位置ブロック600'の右の空間的近傍ブロックが利用可能であるかどうかは、同様の方法を使用することによって検出され、詳細はここには記載されない。
また、利用可能な参照ブロックのサイズと現在ピクチャー・ブロックのサブブロックのサイズとが4×4である場合、利用可能な参照ブロックの動き情報を直接取ってくることができる。利用可能な参照ブロックのサイズが、たとえば、8×4または8×8である場合、利用可能な参照ブロックの中心の4×4ブロックの動き情報を取ってきて、利用可能な参照ブロックの動き情報として使用してもよい。参照ブロックの左上の頂点に対する、中心の4×4ブロックの左上の頂点の座標は((W/4)/2×4,(H/4)/2×4)である。ここでの除算演算は、厳密な除算演算である。M=8かつN=4である場合、参照ブロックの左上の頂点に対する、中心の4×4ブロックの左上の頂点の座標は(4,0)である。任意的に、参照ブロックの左上4×4ブロックの動き情報を代わりに取ってきて、利用可能な参照ブロックの動き情報として使用してもよい。ただし、本願はこれに限定されるものではない。
記述の容易のため、下記は、説明のために、M×Nサブブロックを表わすサブブロックを使用し、近傍のM×Nブロックを表わす近傍ブロックを使用する。
インター予測は本願の実施形態において重要なステップである。デコーダ側の観点からは、インター予測は、現在ピクチャー内の現在符号化ブロックについてのマッチする参照ブロックを求めて、再構成されたピクチャーを探索することである。図5Bに示されるように、参照ブロック(たとえば、参照ブロックFr1または参照ブロックFr2)内のサンプルのサンプル値は、現在符号化ブロックFc内のサンプルのサンプル値の予測された情報として、または予測された値(「情報」および「値」は以下で区別されない)として使用される。このプロセスは、動き推定MEと呼ばれる。また、現在符号化ブロックの動き情報が伝送される。デコーダ側の観点からは、インター予測の間にパースを通じて動き情報が得られる必要があり、得られた動き情報に基づいて、再構成されたピクチャー内で参照ブロックが決定され、該ブロック内のサンプルのサンプル値が予測された情報として使用される。このプロセスは動き補償MCと呼ばれる。再構成された情報は、予測された情報と残差情報とを組み合わせ、組み合わされた情報に対してフィルタリング操作を実行することによって得られる。本願におけるアイデアは、HEVCにおいて使用されてもよく、または別のビデオ符号化/デコード標準において使用されてもよい。下記は、このアイデアがHEVCにおいて使用される例を用いて、エンコーダ側でのインター予測モードの可能な場合を説明する。デコーダ側でのインター予測モードの可能な場合は同様であり、よって、追加の記述は提供されない。
HEVCでは、先進動きベクトル予測(AMVP)モードとマージ・モードがある。下記は、これら2つのモードについて別個に説明する。
AMVPモードでは、現在符号化ブロックに空間的または時間的に近傍であるエンコードされたブロックの動き情報を用いてアフィン候補動きベクトル・リストがまず構築され、次いで、アフィン候補動きベクトル・リストから、最適な動きベクトルが、現在符号化ブロックの動きベクトル予測子(MVP)として決定される。レート‐歪みコストは、式(0-1)を用いて計算される。ここで、Jはレート‐歪みコストRDコストであり、SADは予測されたサンプル値と、候補動きベクトル予測子を用いて実行された動き推定を通じて得られたもとのサンプル値との間の差分絶対値和(SAD)であり、Rはビットレートであり、λはラグランジュ乗数である。エンコーダ側は、デコーダ側に、アフィン候補動きベクトル・リスト内の選択された動きベクトル予測子のインデックス値と、参照フレーム・インデックス値とを転送する。さらに、現在符号化ブロックの実際の動きベクトルを得るために、MVPを中心として近傍ドメインにおいて動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの間の差(Motion vector difference[動きベクトル差分])をデコーダ側に転送する。
J=SAD+λR (0-1)
マージ・モードでは、現在符号化ブロックに空間的または時間的に近傍であるエンコードされたブロックの動き情報を用いて候補動き情報リストがまず構築され、次いで、レート‐歪みコストに基づいて候補動き情報リストから最適な動き情報が決定され、現在符号化ブロックの動き情報として使用され、候補動き情報リスト内の最適な動き情報の位置のインデックス値(マージ・インデックスと記される。以下同じ)がデコーダ側に転送される。現在符号化ブロックの空間的および時間的な候補動き情報が図5Cに示されている。空間的候補動き情報は、5つの空間的近傍ブロック(A0,A1,B0,B1,B2)からくる。近傍ブロックが利用不能である、またはイントラ符号化モードである場合は、該近傍ブロックは候補動き情報リストに追加されない。現在符号化ブロックの時間的な候補動き情報は、参照フレーム内の対応する位置におけるブロックのMVが、参照フレームと現在のフレームのピクチャー順カウント(Picture order count、POC)に基づいてスケーリングされた後に得られる。参照フレーム内の位置Tにおけるブロックが利用可能であるかどうかがまず判定される。そのブロックが利用可能でない場合は、位置Cのブロックが選択される。
HEVCにおけるインター予測では、現在符号化ブロック内のすべてのサンプルが同じ動き情報を使用し、次いで、該動き情報に基づいて動き補償が実行されて、符号化ブロックのサンプルの予測子が得られる。しかしながら、現在符号化ブロックでは、すべてのサンプルが同じ運動特性を有するわけではない。同じ動き情報を使用することは、不正確な動き補償予測およびより多くの残差情報につながる可能性がある。
既存のビデオ符号化標準では、並進動きモデルに基づくブロック・マッチング動き推定が使用され、ブロック内の全サンプルの動きが一貫していると想定される。しかしながら、現実世界では、多様な動きがある。多くのオブジェクト、たとえば、回転するオブジェクト、種々の方向に回転するジェットコースター、花火、および映画におけるいくつかのスタントは、並進運動ではない。特にUGCシナリオにおけるこれらの動くオブジェクトについて、既存の符号化標準における並進動きモデルに基づくブロック動き補償技術が符号化に使用されると、符号化効率が大きく影響される。よって、非並進動きモデルに関する研究が産業界において、また華為によって行なわれてきた。特に、符号化効率をさらに改善するために、アフィン変換に基づく動きモデルに関して、深い研究が行なわれてきた。
非並進動きモデルに基づく予測では、現在符号化ブロック内の各サブ動き補償単位の動き情報を推定するために、エンコーダ側とデコーダ側で同じ動きモデルが使用され、該サブ動き補償単位の動き情報に基づいて動き補償が実行されて予測ブロックが得られ、それにより予測効率を改善する。一般的に使用される動きモデルは、6パラメータ・アフィン・モデルおよび4パラメータ・アフィン変換モデルを含む。
4パラメータ・アフィン変換モデルは式(0-2)として示される:
4パラメータ・アフィン変換モデルは、2つのサンプルの動きベクトルおよび現在符号化ブロックの左上サンプルに対するそれらのサンプルの座標によって表現されうる。動きモデル・パラメータを表現するために使用されるサンプルは、制御点として記される。左上の頂点(0,0)のサンプルと右上の頂点(W,0)のサンプルが制御点として使用される場合、現在符号化ブロックの左上の制御点の位置座標(x
0,y
0)および動きベクトル(vx
0,vy
0)ならびに現在符号化ブロックの右上の制御点の位置座標(x
1,y
1)および動きベクトル(vx
1,vy
1)がまず決定され、次いで、現在符号化ブロック内の各サブ動き補償単位の動き情報が式(0-3)に従って導出される。ここで、(x,y)は現在符号化ブロックの左上のサンプルに対するサブ動き補償単位の座標であり、Wは現在符号化ブロックの幅である。
6パラメータ・アフィン変換モデルは式(0-4)として示される。
6パラメータ・アフィン変換モデルは、3つのサンプルの動きベクトルおよび現在符号化ブロックの左上サンプルに対するそれらのサンプルの座標によって表現されうる。左上の頂点(0,0)のサンプル、右上の頂点(W,0)のサンプルおよび左下の頂点(0,H)のサンプルが制御点として使用される場合、現在符号化ブロックの左上の制御点の位置座標(x
0,y
0)および動きベクトル(vx
0,vy
0)、現在符号化ブロックの右上の制御点の位置座標(x
1,y
1)および動きベクトル(vx
1,vy
1)ならびに現在符号化ブロックの左下の制御点の位置座標(x
2,y
2)および動きベクトル(vx
2,vy
2)がまず決定され、次いで、現在符号化ブロック内の各サブ動き補償単位の動き情報が式(0-5)に従って導出される。ここで、(x,y)は現在符号化ブロックの左上のサンプルに対するサブ動き補償単位の座標であり、WおよびHはそれぞれ現在符号化ブロックの幅および高さである。
8パラメータ双線形モデルは式(0-6)として示される。
8パラメータ双線形モデルは、4つのサンプルの動きベクトルおよび現在符号化ブロックの左上サンプルに対するそれらのサンプルの座標によって表現されうる。左上の頂点(0,0)のサンプル、右上の頂点(W,0)のサンプル、左下の頂点(0,H)のサンプルおよび右下の頂点(W,H)のサンプルが制御点として使用される場合、現在符号化ブロックの左上の制御点の位置座標(x
0,y
0)および動きベクトル(vx
0,vy
0)、現在符号化ブロックの右上の制御点の位置座標(x
1,y
1)および動きベクトル(vx
1,vy
1)、現在符号化ブロックの左下の制御点の位置座標(x
2,y
2)および動きベクトル(vx
2,vy
2)、ならびに現在符号化ブロックの右下の制御点の位置座標(x
3,y
3)および動きベクトル(vx
3,vy
3)がまず決定され、次いで、現在符号化ブロック内の各サブ動き補償単位の動き情報が式(0-7)に従って導出される。ここで、(x,y)は現在符号化ブロックの左上のサンプルに対するサブ動き補償単位の座標であり、WおよびHはそれぞれ現在符号化ブロックの幅および高さである。
非並進動きモデルを用いて予測される符号化ブロックは、非並進符号化ブロックと呼ばれる。
通例、非並進符号化ブロックの制御点の動き情報は、アフィン変換に基づく先進動きベクトル予測(AMVP)モードまたはアフィン変換に基づくマージ・モードを使用することによって得られてもよい。
下記は、4パラメータ・アフィン変換モデルにおける2つの制御点の動き情報を例として用いて、エンコーダ側の視点とデコーダ側の視点から別個に、現在符号化ブロックまたは現在符号化ブロックの制御点の動きベクトルをどのようにして得るかを記述する。
(1)候補動きベクトル2-タプルを構築する。
現在符号化ブロックの左上の制御点および右上の制御点の動きベクトルは、現在符号化ブロックの近傍のエンコードされたブロックの動き情報に基づいて決定される。図7Bに示されるように、左上の近傍のエンコードされたブロックA、B、Cの動きベクトルは、現在符号化ブロックの左上の制御点の動きベクトルについての候補動きベクトルとして使用され、右上の近傍のエンコードされたブロックD、Eの動きベクトルは、現在符号化ブロックの右上の制御点の動きベクトルについての候補動きベクトルとして使用される。左上の制御点の候補動きベクトルと右上の制御点の候補動きベクトルが組み合わされて、それら2つの制御点の候補動きベクトル2-タプル待ち行列を構成する。
ここでv0は、左上の制御点の候補動きベクトルを表わし、v1は右上の制御点の候補動きベクトルを表わす。待ち行列における2-タプルの位置はインデックス化され、インデックス値は順に0、1、2、3、4、5である。
任意的に、候補動きベクトル2-タプル待ち行列は、特定の規則に従って剪定され、ソートされ、特定の量になるよう切り詰められ、またはパディングされてもよい。
(2)最適な候補動きベクトル2-タプルを決定する。
エンコーダ側では、現在符号化ブロック内の各サブ動き補償単位(サンプルまたは特定の方法に従った分割を通じて得られるN1×N2のサンプル・ブロック)の動きベクトルが、式(3)に従った各候補動きベクトル2-タプルに基づいて得られる。それにより、各サブ動き補償単位の動きベクトルがポイントする、参照フレーム内の位置でのサンプル値が得られる。このサンプル値は、アフィン変換に基づく動き補償を実行するための予測子として使用される。現在符号化ブロック内のすべてのサンプルのもとの値と予測子との間の差の平均が計算され、最小差平均に対応する候補動きベクトル2-タプルにおける動きベクトルが、現在符号化ブロック内の2つの制御点の動きベクトル予測子として選択される。候補動きベクトル2-タプル待ち行列内の2-タプルの位置を表わすインデックスがビットストリーム中にエンコードされ、デコーダに送られる。
デコーダ側では、2つの制御点の動きベクトル予測子を得るために該インデックスがパースされる。
(3)制御点の動きベクトルを決定する。
エンコーダ側では、2つの制御点の動きベクトル予測子が、2つの制御点の動きベクトルを得るために、特定の探索範囲内の動き探索を実行するための開始探索点として使用される。2つの制御点の動きベクトルと動きベクトル予測子の間の差は、デコーダ側に送信される。
デコーダ側では、2つの制御点の動きベクトル差分がパースされ、動きベクトル予測子に加えられて、制御点の動きベクトルが得られる。
現在主流の動きモデルに基づく動きベクトル予測方法は:図7AにおけるA、B、C、D、Eの順に現在符号化ブロックの近傍ブロックをたどり(図5Dに示されるように、近傍ブロックA、B、C、D、Eは、現在符号化ブロックが位置するCTU 502のまわりに分布している)、アフィン符号化ブロックを見つけて、該アフィン符号化ブロックの制御点の動きベクトルを取得し、該アフィン符号化ブロックの制御点の位置座標および動きベクトルに基づいて動きモデルを構築し、次いで、現在符号化ブロックの制御点の位置座標を動きモデルに代入して、現在ブロックの制御点の動きベクトル予測子を推定することを含むことに注意しておくべきである。具体的には、ここでは、アフィン符号化ブロックの左上の制御点および右上の制御点が、動きモデルを構成するために使用される(時に、左下の制御点に関する情報がさらに使用される)。図5Dが例として使用される。近傍ブロックEが近傍アフィン符号化ブロックである場合、近傍ブロックEの左上の制御点の位置座標および動きベクトル
と、近傍ブロックEの右上の制御点の位置座標および動きベクトル
と、近傍ブロックEの左下の制御点の位置座標および動きベクトル
とを用いてアフィン・モデルが構築される。近傍ブロックBが近傍アフィン符号化ブロックである場合、近傍ブロックBの左上の制御点の位置座標および動きベクトル
と、近傍ブロックBの右上の制御点の位置座標および動きベクトル
と、近傍ブロックBの左下の制御点の位置座標および動きベクトル
とを用いてアフィン・モデルが構築される。ただし、動きベクトル予測プロセスにおいて用いられる近傍アフィン符号化ブロックの左上の制御点、右上の制御点、および左下の制御点の位置座標および動きベクトルが全部、メモリからリアルタイムで読み取られる必要があり、これはメモリ読み取り圧力を増加させる。本願の実施形態では、現在符号化ブロックが位置するCTU 502の上の境界501上の制御点に関する情報(位置座標および動きベクトル)がメモリから読み込み済みであるという特徴を参照して、メモリ読み取り圧力を軽減するために、アフィン・モデルを構築するために近傍アフィン符号化ブロックの制御点に関する情報をどのように選択するかが記載される。下記は、エンコーダ側の視点とデコーダ側の視点からの記述を別個に与える。
図6は、本願のある実施形態によるエンコード方法のプロセス700のフローチャートである。プロセス700は、ビデオ・エンコーダ100によって実行されてもよく、具体的には、ビデオ・エンコーダ100のインター予測ユニット(インター予測子とも称される)110およびエントロピー・エンコード・ユニット(エントロピー・エンコーダとも称される)103によって実行されてもよい。プロセス700は、一連のステップまたは動作として記述される。プロセス700のステップまたは動作は、さまざまなシーケンスでおよび/または同時に実行されてもよく、図6に示される実行シーケンスに限定されないことが理解されるべきである。複数のビデオ・フレームを含むビデオ・データ・ストリームは、ビデオ・エンコーダを使用していると想定される。第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて決定される。図6に示されるプロセスに対応して、関連する説明は以下のとおりである。
ステップS700:ビデオ・エンコーダが、現在符号化ブロックについてのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS711~S713が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS721~S723が実行される。
AMVPモード:
ステップS711:ビデオ・エンコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルおよび位置座標に基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)および(2)に示される。
式(1)および(2)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(1)および(2)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)、(2)、および(3)に示される。
式(1)および(2)は上記に記載されている。式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
候補動きベクトル予測子MVPリストを構築する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。詳細は下記に記載される。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
現在符号化ブロックの左上の頂点および右上の頂点の動きベクトルが、現在符号化ブロックの近傍のエンコードされたブロックの動き情報に基づいて推定される。図7Bに示されるように、まず、左上の頂点の近傍のエンコードされたブロックAおよび/またはBおよび/またはCの動きベクトルが、現在符号化ブロックの左上の頂点の動きベクトルのための候補動きベクトルとして使用され、右上の頂点の近傍のエンコードされたブロックDおよび/またはEの動きベクトルが、現在符号化ブロックの右上の頂点の動きベクトルのための候補動きベクトルとして使用される。左上の頂点の候補動きベクトルと右上の頂点の候補動きベクトルが組み合わされて、候補動きベクトル予測子のグループが得られてもよい。この態様における組み合わせを通じて得られた複数のレコードは、候補動きベクトル予測子MVPリストを構成してもよい。
B:現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
現在符号化ブロックの左上の頂点、右上の頂点、および左下の頂点の動きベクトルが、現在符号化ブロックの近傍のエンコードされたブロックの動き情報に基づいて推定される。図7Bに示されるように、まず、左上の頂点の近傍のエンコードされたブロックAおよび/またはBおよび/またはCの動きベクトルが、現在符号化ブロックの左上の頂点の動きベクトルのための候補動きベクトルとして使用され、右上の頂点の近傍のエンコードされたブロックDおよび/またはEの動きベクトルが、現在符号化ブロックの右上の頂点の動きベクトルのための候補動きベクトルとして使用され、左下の頂点の近傍のエンコードされたブロックFおよび/またはGの動きベクトルが、現在符号化ブロックの左下の頂点の動きベクトルのための候補動きベクトルとして使用される。左上の頂点の候補動きベクトル、右上の頂点の候補動きベクトル、および左下の頂点の候補動きベクトルが組み合わされて、候補動きベクトル予測子のグループが得られてもよい。この態様における組み合わせを通じて得られた候補動きベクトル予測子の複数のグループは、候補動きベクトル予測子MVPリストを構成してもよい。
候補動きベクトル予測子MVPリストは、態様1で予測される候補動きベクトル予測子のみを用いて構築されてもよく、あるいは候補動きベクトル予測子MVPリストは、態様2で予測される候補動きベクトル予測子のみを用いて構築されてもよく、あるいは候補動きベクトル予測子MVPリストは、態様1で予測される候補動きベクトル予測子と態様2で予測される候補動きベクトル予測子の両方を用いて構築されてもよいことを注意しておくべきである。加えて、候補動きベクトル予測子MVPリストは、事前に構成された規則に従ってさらに剪定され、ソートされ、次いで、特定の量になるよう切り詰められ、またはパディングされてもよい。候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループが3つの制御点の動きベクトル予測子を含む場合、この候補動きベクトル予測子MVPリストは、トリプレット・リストと称されてもよく;または、候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループが2つの制御点の動きベクトル予測子を含む場合、この候補動きベクトル予測子MVPリストは、2-タプル・リストと称されてもよい。
ステップS712:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動きベクトル予測子MVPリスト内のターゲット候補動きベクトル・グループを決定する。具体的には、候補動きベクトル予測子MVPリスト内の各候補動きベクトル・グループについて、現在ブロックの各サブブロックの動きベクトルが計算を通じて得られ、現在ブロックの予測子を得るよう、各サブブロックの予測子を得るために動き補償が実行される。予測子ともとの値との間の最小誤差をもつ候補動きベクトル・グループが、最適な動きベクトル予測子のグループ、すなわちターゲット候補動きベクトル・グループとして選択される。さらに、決定されたターゲット候補動きベクトル・グループは、制御点のグループの最適な候補動きベクトル予測子として使用され、ターゲット候補動きベクトル・グループは、候補動きベクトル予測子MVPリスト内の一意的なインデックス番号に対応する。
ステップS713:ビデオ・エンコーダは、動きベクトル差分MVDと、ターゲット候補動きベクトル・グループに対応するインデックスとを、送信されるべきビットストリーム中にエンコードする。
具体的には、ビデオ・エンコーダは、ターゲット候補動きベクトル・グループを開始探索点として使用することによって、レート‐歪みコスト基準に従って、事前設定された探索範囲内で、制御点のグループであり、最もコストが低い動きベクトルをさらにサーチし、次にターゲット候補動きベクトル・グループと制御点のグループの動きベクトルとの間の動きベクトル差分MVDを決定することができる。たとえば、制御点の第1のグループが第1の制御点および第2の制御点を含む場合には、第1の制御点の動きベクトルと、制御点のグループ内の第1の制御点のターゲット候補動きベクトル・グループによって表される動きベクトル予測子との間の動きベクトル差分MVDを決定し、第2の制御点の動きベクトルと、制御点のグループ内の第2の制御点のターゲット候補の動きベクトル・グループによって表される動きベクトル予測子との間の動きベクトル差分MVDを決定する必要がある。
任意的に、上記のステップS711~S713に加えて、AMVPモードではステップS714およびS715がさらに実行されてもよい。
ステップS714:ビデオ・エンコーダは、アフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
具体的には、ターゲット候補動きベクトル・グループとMVDに基づいて得られた新しい候補動きベクトル・グループは、2つの制御点(左上の制御点と右上の制御点)または3つの制御点(たとえば左上の制御点、右上の制御点、左下の制御点)の動きベクトルを含む。現在符号化ブロックの各サブブロック(1つのサブブロックは、1つの動き補償単位と等価であってもよい)について、動き補償単位内の事前設定された位置におけるサンプルの動き情報が、動き補償単位内のすべてのサンプルの動き情報を表現するために使用されてもよい。動き補償単位のサイズがM×Nである(Mは現在符号化ブロックの幅W以下であり、Nは現在符号化ブロックの高さH以下であり、M、N、W、Hはそれぞれ正の整数であり、通例2の冪乗、たとえば4、8、16、32、64、または128である)場合、事前設定された位置におけるサンプルは、動き補償単位の中心点(M/2,N/2)、左上のサンプル(0,0)、右上のサンプル(M-1,0)、または他の位置のサンプルであってもよい。図8Aは、4×4の動き補償単位を示し、図8Bは、8×8の動き補償単位を示す。対応する動き補償単位の中心点は、三角形で表わされている。
現在符号化ブロックの左上の頂点におけるサンプルに対する動き補償単位の中心点の座標は、式(5)に従って計算される。ここで、iは水平方向において(左から右へ)i番目の動き補償単位であり、jは垂直方向において(上から下へ)j番目の動き補償単位であり、(x
(i,j),y
(i,j))は現在符号化ブロックの左上の制御点におけるサンプルに対する(i,j)番目の動き補償単位の中心点の座標を表わす。そして、現在符号化ブロックのアフィン・モデル・タイプ(6パラメータまたは4パラメータ)に基づき、(x
(i,j),y
(i,j))は6パラメータ・アフィン・モデルの式(6-1)に代入されるか、または(x
(i,j),y
(i,j))は4パラメータ・アフィン・モデルの式(6-2)に代入され、各動き補償単位の中心点の動き情報を得て、該動き情報は、この動き補償単位におけるすべてのサンプルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
任意的に、現在符号化ブロックが6パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を6パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を6パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動きベクトル予測子MVPリストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
任意的に、現在符号化ブロックが4パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を4パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を4パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動きベクトル予測子MVPリストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
ステップS715:ビデオ・エンコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。たとえば、各サブブロックの動きベクトルおよび参照フレーム・インデックスに基づいて対応するサブブロックが参照フレーム内に見出され、補間フィルタリングが実行されて、各サブブロックの予測されたサンプル値が得られる。
マージ・モード:
ステップS721:ビデオ・エンコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(1)、(2)、および(3)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(1)および(2)に示される。
式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動き情報リストは、制御点組み合わせに基づく動きベクトル予測方法を用いて構築される。
下記は、解決策Aと解決策Bとして記される2つの解決策を挙げる。
解決策A:現在符号化ブロックの2つの制御点の動き情報が組み合わされて、4パラメータ・アフィン変換モデルを構築する。2つの制御点は、{CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}のように組み合わされる。たとえば、制御点CP1およびCP2を使用して構築された4パラメータ・アフィン変換モデルは、Affine(CP1,CP2)として記される。
異なる制御点の組み合わせが、同じ位置の諸制御点に変換されることがあることに注意しておくべきである。たとえば、{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}の組み合わせに基づいて得られた4パラメータ・アフィン変換モデルが、制御点{CP1,CP2}または{CP1,CP2,CP3}によって表現されるように変換される。変換方法は次のとおり:ある制御点の動きベクトルおよび座標情報が式(7)に代入されて、モデル・パラメータが得られる。次いで、{CP1,CP2}の配位情報が該式に代入され、{CP1,CP2}の諸動きベクトルが得られる。それらの動きベクトルは、候補動きベクトル予測子のグループとして使用される。
式(7)において、a0、a1、a2、a3はパラメータ・モデルにおけるすべてのパラメータであり、(x,y)は位置座標を表わす。
より直接的には、この変換は、左上の制御点および右上の制御点によって表わされる動きベクトル予測子のグループを得るために下記の諸式に従って実行されてもよく、動きベクトル予測子のこのグループが、候補動き情報リストに追加される。
{CP1,CP2}を{CP1,CP2,CP3}に変換する式(8)は、次のとおり:
{CP1,CP3}を{CP1,CP2,CP3}に変換する式(9)は、次のとおり:
{CP2,CP3}を{CP1,CP2,CP3}に変換する式(10)は、次のとおり:
{CP1,CP4}を{CP1,CP2,CP3}に変換する式(11)は、次のとおり:
{CP2,CP4}を{CP1,CP2,CP3}に変換する式(12)は、次のとおり:
{CP3,CP4}を{CP1,CP2,CP3}に変換する式(13)は、次のとおり:
解決策B:現在符号化ブロックの3つの制御点の動き情報が組み合わされて、6パラメータ・アフィン変換モデルを構築する。3つの制御点は、{CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}のように組み合わされる。たとえば、制御点CP1、CP2、およびCP3を使用して構築された6パラメータ・アフィン変換モデルは、Affine(CP1,CP2,CP3)として記される。
異なる制御点の組み合わせが、同じ位置の諸制御点に変換されることがあることに注意しておくべきである。たとえば、{CP1,CP2,CP4}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}の組み合わせに基づいて得られた6パラメータ・アフィン変換モデルが、制御点{CP1,CP2,CP3}によって表現されるように変換される。変換方法は次のとおり:ある制御点の動きベクトルおよび座標情報が式(14)に代入されて、モデル・パラメータが得られる。次いで、{CP1,CP2,CP3}の配位情報が該式に代入され、{CP1,CP2,CP3}の諸動きベクトルが得られる。それらの動きベクトルは、候補動きベクトル予測子のグループとして使用される。
式(14)において、a1、a2、a3、a4、a5、a6は、パラメータ・モデルにおけるパラメータであり、(x,y)は位置座標を表わす。
より直接的には、この変換は、左上の制御点、右上の制御点、および左下の制御点によって表わされる動きベクトル予測子のグループを得るために下記の諸式に従って実行されてもよく、動きベクトル予測子のこのグループが、候補動き情報リストに追加される。
{CP1,CP2,CP4}を{CP1,CP2,CP3}に変換する式(15)は次のとおり:
{CP2,CP3,CP4}を{CP1,CP2,CP3}に変換する式(16)は次のとおり:
{CP1,CP3,CP4}を{CP1,CP2,CP3}に変換する式(17)は次のとおり:
候補動き情報リストは、態様1で予測された候補動きベクトル予測子のみを使用して構築されてもよく、あるいは候補動き情報リストは、態様2で予測された候補動きベクトル予測子のみを使用して構築されてもよく、あるいは候補動き情報リストは、態様1で予測された候補動きベクトル予測子と態様2で予測された候補動きベクトル予測子の両方を使用して構築されてもよいことに注意しておくべきである。さらに、候補動き情報リストは、事前に構成された規則に従ってさらに剪定され、ソートされ、次いで、特定の数になるよう切り詰められ、またはパディングされてもよい。候補動き情報リスト内の候補動きベクトル予測子の各グループが3つの制御点の動きベクトル予測子を含む場合、この候補動き情報リストは、トリプレット・リストと称されてもよく;または候補動き情報リスト内の候補動きベクトル予測子の各グループが2つの制御点の動きベクトル予測子を含む場合、この候補動き情報リストは、2-タプル・リストと称されてもよい。
ステップS722:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動き情報リスト内のターゲット候補動きベクトル・グループを決定する。具体的には、候補動き情報リスト内の各候補動きベクトル・グループについて、現在ブロックの各サブブロックの動きベクトルが計算を通じて得られ、現在ブロックの予測子を得るよう、各サブブロックの予測子を得るために動き補償が実行される。予測子ともとの値との間の最小誤差をもつ候補動きベクトル・グループが、最適な動きベクトル予測子のグループ、すなわちターゲット候補動きベクトル・グループとして選択される。さらに、決定されたターゲット候補動きベクトル・グループは、制御点のグループの最適な候補動きベクトル予測子として使用され、ターゲット候補動きベクトル・グループは、候補動き情報リスト内の一意的なインデックス番号に対応する。
ステップS723:ビデオ・エンコーダは、ターゲット候補動きベクトル・グループに対応するインデックス、参照フレーム・インデックス、および予測方向に対応するインデックスを、送信されるべきビットストリーム中にエンコードする。
任意的に、上記のステップS721~S723に加えて、ステップS724およびS725が、マージ・モードにおいてさらに実行されてもよい。
ステップS724:ビデオ・エンコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
具体的には、ターゲット候補動きベクトル・グループは、2つの制御点(左上の制御点および右上の制御点)または3つの制御点(たとえば左上の制御点、右上の制御点、および左下の制御点)の動きベクトルを含む。現在符号化ブロックの各サブブロック(1つのサブブロックは、1つの動き補償単位と等価であってもよい)について、動き補償単位内の事前設定された位置におけるサンプルの動き情報が、動き補償単位内のすべてのサンプルの動き情報を表現するために使用されてもよい。動き補償単位のサイズがM×Nである(Mは現在符号化ブロックの幅W以下であり、Nは現在符号化ブロックの高さH以下であり、M、N、W、Hはそれぞれ正の整数であり、通例2の冪乗、たとえば4、8、16、32、64、または128である)場合、事前設定された位置におけるサンプルは、動き補償単位の中心点(M/2,N/2)、左上のサンプル(0,0)、右上のサンプル(M-1,0)、または他の位置のサンプルであってもよい。図8Aは、4×4の動き補償単位を示し、図8Bは、8×8の動き補償単位を示す。
現在符号化ブロックの左上の頂点におけるサンプルに対する動き補償単位の中心点の座標は、式(5)に従って計算される。ここで、iは水平方向において(左から右へ)i番目の動き補償単位であり、jは垂直方向において(上から下へ)j番目の動き補償単位であり、(x(i,j),y(i,j))は現在符号化ブロックの左上の制御点におけるサンプルに対する(i,j)番目の動き補償単位の中心点の座標を表わす。そして、現在符号化ブロックのアフィン・モデル・タイプ(6パラメータまたは4パラメータ)に基づき、(x(i,j),y(i,j))は6パラメータ・アフィン・モデルの式(6-1)に代入されるか、または(x(i,j),y(i,j))は4パラメータ・アフィン・モデルの式(6-2)に代入され、各動き補償単位の中心点の動き情報を得て、該動き情報は、この動き補償単位におけるすべてのサンプルの動きベクトル(vx(i,j),vy(i,j))として使用される。
任意的に、現在符号化ブロックが6パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を6パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を6パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動き情報リストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
任意的に、現在符号化ブロックが4パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を4パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を4パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動き情報リストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
ステップS725:ビデオ・エンコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。具体的には、現在符号化ブロックの予測サンプル値は、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルと、参照フレーム・インデックスおよびインデックスによって示される予測方向とに基づいて予測される。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出されている情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、エンコード性能を改善する。
エンコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて決定される;または、第1の近傍アフィン符号化ブロックが、現在符号化ブロックの左のCTU内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの右上の制御点および右下の制御点に基づいて決定される。詳細は次のとおり。
ステップS900:ビデオ・エンコーダは、現在符号化ブロックのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS911~S913が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS921~S923が実行される。
AMVPモード:
ステップS911:ビデオ・エンコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルおよび位置座標に基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)および(2)に示される。
式(1)および(2)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(1)および(2)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが現在符号化ブロックの左の符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの最も右の2つの制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)は、第1の近傍アフィン符号化ブロックの2つの最も右の制御点の動きベクトルおよび位置座標に基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は式(18)および式(19)に示される。
式(18)および(19)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しておらず、かつ現在符号化ブロックの左のCTU内に位置していない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書において限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。別の例では、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループ内の一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループ内の一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)、(2)、および(3)に示される。
式(1)、(2)、および(5)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの左にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も右の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(18)、(19)、および(20)に示される。
式(18)、(19)、および(20)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置せず、かつ、現在符号化ブロックの左のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。別の例として、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループにおける一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループにおける一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS711における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS912:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動きベクトル予測子MVPリスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS712の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS913:ビデオ・エンコーダは、動きベクトル差分MVDと、ターゲット候補動きベクトル・グループに対応するインデックスとを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS713の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS921:ビデオ・エンコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(1)、(2)、および(3)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(1)および(2)に示される。
式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの左にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も右の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(18)、(19)、および(20)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(18)および(19)に示される。
式(18)、(19)、および(20)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置せず、かつ、現在符号化ブロックの左のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。別の例として、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
任意的に、候補動き情報リストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループにおける一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループにおける一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
態様2:候補動き情報リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS721における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS922:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動き情報リスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS722の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS923:ビデオ・エンコーダは、前記ターゲット候補動きベクトル・グループに対応するインデックス、参照フレーム・インデックスに対応するインデックス、および予測方向に対応するインデックスを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS723の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS924:ビデオ・エンコーダは、6パラメータ・アフィン変換モデルを用いて、現在符号化ブロックの3つの制御点の動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS724の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS925:ビデオ・エンコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行し、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS725の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの左に位置する場合は、第1の近傍アフィン符号化ブロックの最も右の制御点に関する情報が、メモリから読み込まれている。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する代わりに、現在符号化ブロックに対する符号化ツリー単位CTUの相対位置に基づいて決定される制御点である。ここで、第1の近傍アフィン符号化ブロックは該CTU内に位置する。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出されている情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、エンコード性能を改善する。
エンコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および右上の制御点に基づいて決定される。詳細は次のとおり。
ステップS1000:ビデオ・エンコーダは、現在符号化ブロックについてのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1011~S1013が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1021~S1023が実行される。
AMVPモード:
ステップS1011:ビデオ・エンコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)および(22)に示される。
式(21)および(22)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(21)および(22)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書において限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)、(22)、および(23)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS711における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1012:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動きベクトル予測子MVPリスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS712の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1013:ビデオ・エンコーダは、動きベクトル差分MVDと、ターゲット候補動きベクトル・グループに対応するインデックスとを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS713の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS1021:ビデオ・エンコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(21)、(22)、および(23)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(21)および(22)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動き情報リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS721における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1022:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動き情報リスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS722の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1023:ビデオ・エンコーダは、ターゲット候補動きベクトル・グループに対応するインデックスを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS723の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出されている情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、エンコード性能を改善する。
エンコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて直接決定される。詳細は次のとおり。
ステップS1100:ビデオ・エンコーダは、現在符号化ブロックのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1111~S1113が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1121~S1123が実行される。
AMVPモード:
ステップS1111:ビデオ・エンコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)および(22)に示される。
式(21)および(22)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、エンコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(21)および(22)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)、(22)、および(23)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS711における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1112:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、候補動きベクトル予測子MVPリスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS712の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1113:ビデオ・エンコーダは、動きベクトル差分MVDと、ターゲット候補動きベクトル・グループに対応するインデックスとを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS713の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS1121:ビデオ・エンコーダは、アフィン候補動きベクトル・リストを構築する。
具体的には、ビデオ・エンコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、アフィン候補動きベクトル・リスト(候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築されたアフィン候補動きベクトル・リストは、トリプレット・アフィン候補動きベクトル・リストである。2つの態様は具体的には次のとおり。
態様1:アフィン候補動きベクトル・リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、アフィン候補動きベクトル・リストに加えられる。詳細は、式(21)、(22)、および(23)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、アフィン候補動きベクトル・リストに加えられる。詳細は、式(21)および(22)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、アフィン候補動きベクトル・リストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
態様2:アフィン候補動きベクトル・リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS721における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1122:ビデオ・エンコーダは、レート‐歪みコスト基準に従って、アフィン候補動きベクトル・リスト内のターゲット候補動きベクトル・グループを決定する。
詳細については、ステップS712の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1123:ビデオ・エンコーダは、ターゲット候補動きベクトル・グループに対応するインデックスを、送信されるべきビットストリーム中にエンコードする。
詳細については、ステップS713の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出されている情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用できる可能性が非常に高く、それにより、メモリからの読み出し回数を減らし、エンコード性能を改善する。
図9は、本願のある実施形態によるデコード方法のプロセス900のフローチャートである。
プロセス900は、ビデオ・デコーダ200によって実行されてもよく、具体的には、ビデオ・デコーダ200のインター予測ユニット(インター予測器とも呼ばれる)210およびエントロピー・デコード・ユニット(エントロピー・デコーダとも呼ばれる)203によって実行されてもよい。プロセス900は、一連のステップまたは動作として記述される。プロセス900のステップまたは動作は、さまざまなシーケンスで、および/または同時に実施されることができ、図9に示される実行シーケンスに限定されないことが理解されるべきである。複数のビデオ・フレームを含むビデオ・データ・ストリームが、ビデオ・デコーダを使用していると想定される。第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて決定される。図9に示されるプロセスに対応して、関連する説明は、以下のとおりである。
デコーダ側の任意の実施形態において、第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて決定される。詳細は、次のとおり。
ステップS1200:ビデオ・デコーダは、現在符号化ブロックについてインター予測モードを決定する。
具体的には、インター予測モードは、高度動きベクトル予測(AMVP)モードであってもよく、マージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1211~S1216が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1221~S1225が実行される。
AMVPモード:
ステップS1211:ビデオ・デコーダは、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる(図9Aに示される)。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい(ステップS1201)。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルおよび位置座標に基づいて形成される(ステップS1202)。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)および(2)に示される(ステップS1203)。
式(1)および(2)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(1)および(2)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)、(2)、および(3)に示される。
式(1)および(2)は上記に記載されている。式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
候補動きベクトル予測子MVPリストを構築する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。詳細は下記に記載される。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
現在符号化ブロックの左上の頂点および右上の頂点の動きベクトルが、現在符号化ブロックの近傍のデコードされたブロックの動き情報に基づいて推定される。図7Bに示されるように、まず、左上の頂点の近傍のデコードされたブロックAおよび/またはBおよび/またはCの動きベクトルが、現在符号化ブロックの左上の頂点の動きベクトルのための候補動きベクトルとして使用され、右上の頂点の近傍のデコードされたブロックDおよび/またはEの動きベクトルが、現在符号化ブロックの右上の頂点の動きベクトルのための候補動きベクトルとして使用される。左上の頂点の候補動きベクトルと右上の頂点の候補動きベクトルが組み合わされて、候補動きベクトル予測子のグループが得られてもよい。この態様における組み合わせを通じて得られた複数のレコードは、候補動きベクトル予測子MVPリストを構成してもよい。
B:現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
現在符号化ブロックの左上の頂点、右上の頂点、および左下の頂点の動きベクトルが、現在符号化ブロックの近傍のデコードされたブロックの動き情報に基づいて推定される。図7Bに示されるように、まず、左上の頂点の近傍のデコードされたブロックAおよび/またはBおよび/またはCの動きベクトルが、現在符号化ブロックの左上の頂点の動きベクトルのための候補動きベクトルとして使用され、右上の頂点の近傍のデコードされたブロックDおよび/またはEの動きベクトルが、現在符号化ブロックの右上の頂点の動きベクトルのための候補動きベクトルとして使用され、左下の頂点の近傍のデコードされたブロックFおよび/またはGの動きベクトルが、現在符号化ブロックの左下の頂点の動きベクトルのための候補動きベクトルとして使用される。左上の頂点の候補動きベクトル、右上の頂点の候補動きベクトル、および左下の頂点の候補動きベクトルが組み合わされて、候補動きベクトル予測子のグループが得られてもよい。この態様における組み合わせを通じて得られた候補動きベクトル予測子の複数のグループは、候補動きベクトル予測子MVPリストを構成してもよい。
候補動きベクトル予測子MVPリストは、態様1で予測される候補動きベクトル予測子のみを用いて構築されてもよく、あるいは候補動きベクトル予測子MVPリストは、態様2で予測される候補動きベクトル予測子のみを用いて構築されてもよく、あるいは候補動きベクトル予測子MVPリストは、態様1で予測される候補動きベクトル予測子と態様2で予測される候補動きベクトル予測子の両方を用いて構築されてもよいことを注意しておくべきである。加えて、候補動きベクトル予測子MVPリストは、事前に構成された規則に従ってさらに剪定され、ソートされ、次いで、特定の量になるよう切り詰められ、またはパディングされてもよい。候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループが3つの制御点の動きベクトル予測子を含む場合、この候補動きベクトル予測子MVPリストは、トリプレット・リストと称されてもよく;または、候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループが2つの制御点の動きベクトル予測子を含む場合、この候補動きベクトル予測子MVPリストは、2-タプル・リストと称されてもよい。
ステップS1212:ビデオ・デコーダは、ビットストリームをパースして、インデックスと、動きベクトル差分MVDとを得る。
具体的には、ビデオ・デコーダは、エントロピー・デコード・ユニットを用いてビットストリームをパースしてもよい。インデックスは、現在符号化ブロックのターゲット候補動きベクトル・グループを示すために使われ、ターゲット候補動きベクトル・グループは、現在符号化ブロックの制御点のグループの動きベクトル予測子を表わす。
ステップS1213:ビデオ・デコーダは、候補動きベクトル予測子MVPリストにおけるターゲット動きベクトル・グループを、インデックスに基づいて決定する。
具体的には、インデックスに基づいて候補動きベクトル予測子MVPリストにおいてビデオ・デコーダによって決定されたターゲット候補動きベクトル・グループが、最適な候補動きベクトル予測子として使用される(任意的に、候補動きベクトル予測子MVPリストの長さが1である場合、インデックスを得るためにビットストリームをパースする必要はなく、ターゲット動きベクトル・グループを直接決定することができる)。下記は、最適な候補動きベクトル予測子を簡単に説明する。
現在符号化ブロックのパラメータ・モデルが4パラメータ・アフィン変換モデルである場合、2つの制御点の最適な動きベクトル予測子が、構築された候補動きベクトル予測子MVPリストから選択される。たとえば、ビデオ・デコーダは、ビットストリームをパースしてインデックス番号を得て、次いで、インデックス番号に基づいて、2タプル候補動きベクトル予測子MVPリスト内の2つの制御点の最適な動きベクトル予測子を決定する。候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループは、それぞれのインデックス番号に対応する。
現在符号化ブロックのパラメータ・モデルが6パラメータ・アフィン変換モデルである場合、3つの制御点の最適な動きベクトル予測子が、構築された候補動きベクトル予測子MVPリストから選択される。たとえば、ビデオ・デコーダは、ビットストリームをパースしてインデックス番号を得て、次いで、インデックス番号に基づいて、トリプレット候補動きベクトル予測子MVPリスト内の3つの制御点の最適な動きベクトル予測子を決定する。候補動きベクトル予測子MVPリスト内の候補動きベクトル予測子の各グループは、それぞれのインデックス番号に対応する。
ステップS1214:ビデオ・デコーダは、ターゲット候補動きベクトル・グループと、ビットストリームからパースを通じて得られた動きベクトル差分MVDとに基づいて、現在符号化ブロックの制御点の動きベクトルを決定する。
現在符号化ブロックのパラメータ・モデルが4パラメータ・アフィン変換モデルである場合、現在符号化ブロックの2つの制御点の動きベクトル差分が、ビットストリームからデコードを通じて得られ、新しい候補動きベクトル・グループが、それらの制御点の動きベクトル差分と、インデックスによって示されたターゲット候補動きベクトル・グループとに基づいて得られる。たとえば、左上の制御点の動きベクトル差分MVDおよび右上の制御点の動きベクトル差分MVDがビットストリームからデコードを通じて得られ、それぞれターゲット候補動きベクトル・グループにおける左上の制御点の動きベクトルおよび右上の制御点の動きベクトルに加算されて、新しい候補動きベクトル・グループが得られる。よって、新しい候補動きベクトル・グループは、現在符号化ブロックの左上の制御点および右上の制御点の新しい動きベクトルを含む。
任意的に、4パラメータ・アフィン変換モデルを使用することによって、新しい候補動きベクトル・グループにおいて、第3の制御点の動きベクトルが、現在符号化ブロックの2つの制御点の動きベクトルに基づいてさらに得られてもよい。たとえば、現在符号化ブロックの左上の制御点の動きベクトル(vx
0,vy
0)と、現在符号化ブロックの右上の制御点の動きベクトル(vx
1,vy
1)が得られる。そして、現在符号化ブロックの左下の制御点(x
2,y
2)の動きベクトル(vx
2,vy
2)が、式(4)に従った計算を通じて得られる。
ここで、(x0,y0)は左上の制御点の位置座標であり、(x1,y1)は右上の制御点の位置座標であり、Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
現在符号化ブロックのパラメータ・モデルが6パラメータ・アフィン変換モデルである場合、現在符号化ブロックの3つの制御点の動きベクトル差分が、ビットストリームからデコードを通じて得られ、新しい候補動きベクトル・グループが、それらの制御点の動きベクトル差分MVDと、インデックスによって示されたターゲット候補動きベクトル・グループとに基づいて得られる。たとえば、左上の制御点の動きベクトル差分MVD、右上の制御点の動きベクトル差分MVD、および左下の制御点の動きベクトル差分がビットストリームからデコードを通じて得られ、それぞれターゲット候補動きベクトル・グループにおける左上の制御点の動きベクトル、右上の制御点の動きベクトル、および左下の制御点の動きベクトルに加算されて、新しい候補動きベクトル・グループが得られる。よって、新しい候補動きベクトル・グループは、現在符号化ブロックの左上の制御点、右上の制御点、および左下の制御点の動きベクトルを含む。
ステップS1215:ビデオ・デコーダは、アフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
具体的には、ターゲット候補動きベクトル・グループとMVDとに基づいて得られた新しい候補動きベクトル・グループは、2つの制御点(左上の制御点および右上の制御点)または3つの制御点(たとえば左上の制御点、右上の制御点、および左下の制御点)の動きベクトルを含む。現在符号化ブロックの各サブブロック(1つのサブブロックは、1つの動き補償単位と等価であってもよい)について、動き補償単位内の事前設定された位置におけるサンプルの動き情報が、その動き補償単位内のすべてのサンプルの動き情報を表現するために使用されてもよい。動き補償単位のサイズがM×Nである(Mは現在符号化ブロックの幅W以下であり、Nは現在符号化ブロックの高さH以下であり、M、N、W、Hはそれぞれ正の整数であり、通例2の冪乗、たとえば4、8、16、32、64、または128である)場合、事前設定された位置におけるサンプルは、動き補償単位の中心点(M/2,N/2)、左上のサンプル(0,0)、右上のサンプル(M-1,0)、または他の位置のサンプルであってもよい。図8Aは、4×4の動き補償単位を示し、図8Bは、8×8の動き補償単位を示す。
現在符号化ブロックの左上の頂点におけるサンプルに対する動き補償単位の中心点の座標は、式(5)に従って計算される。ここで、iは水平方向において(左から右へ)i番目の動き補償単位であり、jは垂直方向において(上から下へ)j番目の動き補償単位であり、(x
(i,j),y
(i,j))は現在符号化ブロックの左上の制御点におけるサンプルに対する(i,j)番目の動き補償単位の中心点の座標を表わす。そして、現在符号化ブロックのアフィン・モデル・タイプ(6パラメータまたは4パラメータ)に基づき、(x
(i,j),y
(i,j))は6パラメータ・アフィン・モデルの式(6-1)に代入されるか、または(x
(i,j),y
(i,j))は4パラメータ・アフィン・モデルの式(6-2)に代入され、各動き補償単位の中心点の動き情報を得て、該動き情報は、この動き補償単位におけるすべてのサンプルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
任意的に、現在符号化ブロックが6パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を6パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を6パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動きベクトル予測子MVPリストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
任意的に、現在符号化ブロックが4パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を4パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を4パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動きベクトル予測子MVPリストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
ステップS1216:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。たとえば、各サブブロックの動きベクトルおよび参照フレーム・インデックスに基づいて対応するサブブロックが参照フレーム内に見出され、補間フィルタリングが実行されて、各サブブロックの予測されたサンプル値が得られる。
マージ・モード:
ステップS1221:ビデオ・デコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(1)、(2)、および(3)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(1)および(2)に示される。
式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTUに位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動き情報リストは、制御点組み合わせに基づく動きベクトル予測方法を用いて構築される。
下記は、解決策Aと解決策Bとして記される2つの解決策を挙げる。
解決策A:現在符号化ブロックの2つの制御点の動き情報が組み合わされて、4パラメータ・アフィン変換モデルを構築する。2つの制御点は、{CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}のように組み合わされる。たとえば、制御点CP1およびCP2を使用して構築された4パラメータ・アフィン変換モデルは、Affine(CP1,CP2)として記される。
異なる制御点の組み合わせが、同じ位置の諸制御点に変換されることがあることに注意しておくべきである。たとえば、{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}の組み合わせに基づいて得られた4パラメータ・アフィン変換モデルが、制御点{CP1,CP2}または{CP1,CP2,CP3}によって表現されるように変換される。変換方法は次のとおり:ある制御点の動きベクトルおよび座標情報が式(7)に代入されて、モデル・パラメータが得られる。次いで、{CP1,CP2}の配位情報が該式に代入され、{CP1,CP2}の諸動きベクトルが得られる。それらの動きベクトルは、候補動きベクトル予測子のグループとして使用される。
式(7)において、a0、a1、a2、a3はパラメータ・モデルにおけるすべてのパラメータであり、(x,y)は位置座標を表わす。
より直接的には、この変換は、左上の制御点および右上の制御点によって表わされる動きベクトル予測子のグループを得るために下記の諸式に従って実行されてもよく、動きベクトル予測子のこのグループが、候補動き情報リストに追加される。
{CP1,CP2}を{CP1,CP2,CP3}に変換する式(8)は、次のとおり:
{CP1,CP3}を{CP1,CP2,CP3}に変換する式(9)は、次のとおり:
{CP2,CP3}を{CP1,CP2,CP3}に変換する式(10)は、次のとおり:
{CP1,CP4}を{CP1,CP2,CP3}に変換する式(11)は、次のとおり:
{CP2,CP4}を{CP1,CP2,CP3}に変換する式(12)は、次のとおり:
{CP3,CP4}を{CP1,CP2,CP3}に変換する式(13)は、次のとおり:
解決策B:現在符号化ブロックの3つの制御点の動き情報が組み合わされて、6パラメータ・アフィン変換モデルを構築する。3つの制御点は、{CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}のように組み合わされる。たとえば、制御点CP1、CP2、およびCP3を使用して構築された6パラメータ・アフィン変換モデルは、Affine(CP1,CP2,CP3)として記される。
異なる制御点の組み合わせが、同じ位置の諸制御点に変換されることがあることに注意しておくべきである。たとえば、{CP1,CP2,CP4}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}の組み合わせに基づいて得られた6パラメータ・アフィン変換モデルが、制御点{CP1,CP2,CP3}によって表現されるように変換される。変換方法は次のとおり:ある制御点の動きベクトルおよび座標情報が式(14)に代入されて、モデル・パラメータが得られる。次いで、{CP1,CP2,CP3}の配位情報が該式に代入され、{CP1,CP2,CP3}の諸動きベクトルが得られる。それらの動きベクトルは、候補動きベクトル予測子のグループとして使用される。
式(14)において、a1、a2、a3、a4、a5、a6は、パラメータ・モデルにおけるパラメータであり、(x,y)は位置座標を表わす。
より直接的には、この変換は、左上の制御点、右上の制御点、および左下の制御点によって表わされる動きベクトル予測子のグループを得るために下記の諸式に従って実行されてもよく、動きベクトル予測子のこのグループが、候補動き情報リストに追加される。
{CP1,CP2,CP4}を{CP1,CP2,CP3}に変換する式(15)は次のとおり:
{CP2,CP3,CP4}を{CP1,CP2,CP3}に変換する式(16)は次のとおり:
{CP1,CP3,CP4}を{CP1,CP2,CP3}に変換する式(17)は次のとおり:
候補動き情報リストは、態様1で予測された候補動きベクトル予測子のみを使用して構築されてもよく、あるいは候補動き情報リストは、態様2で予測された候補動きベクトル予測子のみを使用して構築されてもよく、あるいは候補動き情報リストは、態様1で予測された候補動きベクトル予測子と態様2で予測された候補動きベクトル予測子の両方を使用して構築されてもよいことに注意しておくべきである。さらに、候補動き情報リストは、事前に構成された規則に従ってさらに剪定され、ソートされ、次いで、特定の数になるよう切り詰められ、またはパディングされてもよい。候補動き情報リスト内の候補動きベクトル予測子の各グループが3つの制御点の動きベクトル予測子を含む場合、この候補動き情報リストは、トリプレット・リストと称されてもよく;または候補動き情報リスト内の候補動きベクトル予測子の各グループが2つの制御点の動きベクトル予測子を含む場合、この候補動き情報リストは、2-タプル・リストと称されてもよい。
ステップS1222:ビデオ・デコーダは、ビットストリームをパースして、インデックスを得る。
具体的には、ビデオ・デコーダは、エントロピー・デコード・ユニットを用いてビットストリームをパースしてもよい。インデックスは、現在符号化ブロックのターゲット候補動きベクトル・グループを示すために使われ、該ターゲット候補動きベクトル・グループは、現在符号化ブロックの制御点のグループの動きベクトル予測子を表わす。
ステップS1223:ビデオ・デコーダは、候補動き情報リストにおけるターゲット動きベクトル・グループを、インデックスに基づいて決定する。
具体的には、インデックスに基づいて候補動きベクトル予測子MVPリストにおいてビデオ・デコーダによって決定されたターゲット候補動きベクトル・グループが、最適な候補動きベクトル予測子として使用される(任意的に、候補動き情報リストの長さが1である場合、インデックスを得るためにビットストリームをパースする必要はなく、ターゲット動きベクトル・グループを直接決定することができる)。具体的には、最適な候補動きベクトル予測子は、2つまたは3つの制御点の最適な動きベクトル予測子である。たとえば、ビデオ・デコーダは、ビットストリームからパースを通じてインデックス番号を取得し、次いで、インデックス番号に基づいて、候補動き情報リスト内の2つまたは3つの制御点の最適な動きベクトル予測子を決定する。候補動き情報リスト内の候補動きベクトル予測子の各グループは、それぞれのインデックス番号に対応する。
ステップS1224:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
具体的には、ターゲット候補動きベクトル・グループは、2つの制御点(左上の制御点および右上の制御点)または3つの制御点(たとえば左上の制御点、右上の制御点、および左下の制御点)の動きベクトルを含む。現在符号化ブロックの各サブブロック(1つのサブブロックは、1つの動き補償単位と等価であってもよい)について、動き補償単位内の事前設定された位置におけるサンプルの動き情報が、その動き補償単位内のすべてのサンプルの動き情報を表現するために使用されてもよい。動き補償単位のサイズがM×Nである(Mは現在符号化ブロックの幅W以下であり、Nは現在符号化ブロックの高さH以下であり、M、N、W、Hはそれぞれ正の整数であり、通例2の冪乗、たとえば4、8、16、32、64、または128である)場合、事前設定された位置におけるサンプルは、動き補償単位の中心点(M/2,N/2)、左上のサンプル(0,0)、右上のサンプル(M-1,0)、または他の位置のサンプルであってもよい。図8Aは、4×4の動き補償単位を示し、図8Bは、8×8の動き補償単位を示す。
現在符号化ブロックの左上の頂点におけるサンプルに対する動き補償単位の中心点の座標は、式(5)に従って計算される。ここで、iは水平方向において(左から右へ)i番目の動き補償単位であり、jは垂直方向において(上から下へ)j番目の動き補償単位であり、(x(i,j),y(i,j))は現在符号化ブロックの左上の制御点におけるサンプルに対する(i,j)番目の動き補償単位の中心点の座標を表わす。そして、現在符号化ブロックのアフィン・モデル・タイプ(6パラメータまたは4パラメータ)に基づき、(x(i,j),y(i,j))は6パラメータ・アフィン・モデルの式(6-1)に代入されるか、または(x(i,j),y(i,j))は4パラメータ・アフィン・モデルの式(6-2)に代入され、各動き補償単位の中心点の動き情報を得て、該動き情報は、この動き補償単位におけるすべてのサンプルの動きベクトル(vx(i,j),vy(i,j))として使用される。
任意的に、現在符号化ブロックが6パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、3つの制御点を用いて構築された6パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を6パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を6パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動き情報リストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
任意的に、現在符号化ブロックが4パラメータ符号化ブロックであり、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルがターゲット候補動きベクトル・グループに基づいて得られる場合、現在符号化ブロックの下の境界が、現在符号化ブロックが位置するCTUの下の境界と重なっていれば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)と、2つの制御点を用いて構築された4パラメータ・アフィン・モデルとに基づく計算を通じて得られる。たとえば、現在符号化ブロックの左下隅のサブブロックの動きベクトルは、現在符号化ブロックの左下隅の位置座標(0,H)を4パラメータ・アフィン・モデルに代入する(計算のために、左下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られ、現在符号化ブロックの右下隅のサブブロックの動きベクトルは、現在符号化ブロックの右下隅の位置座標(W,H)を4パラメータ・アフィン・モデルに代入する(計算のために、右下隅のサブブロックの中心点の座標をアフィン・モデルに代入するのではなく)ことによって得られる。このようにして、現在符号化ブロックの左下の制御点の動きベクトルと右下の制御点の動きベクトルが使用される(たとえば、現在ブロックの左下の制御点と右下の制御点の動きベクトルに基づいて、その後、他のブロックの候補動き情報リストが構築される)場合、推定値ではなく正確な値が用いられる。Wは現在符号化ブロックの幅であり、Hは現在符号化ブロックの高さである。
ステップS1225:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。具体的には、現在符号化ブロックの一つまたは複数のサブブロックの動きベクトルと、参照フレーム・インデックスおよびインデックスによって示される予測方向とに基づいて、現在符号化ブロックの予測されたサンプル値が得られる。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を第1のグループの制御点として固定的に使用する(あるいは第1の近傍符号化ブロックの左上の制御点および右上の制御点を第1のグループの制御点として固定的に使用する)代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出された情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、デコード性能を改善する。
デコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて決定される;または、第1の近傍アフィン符号化ブロックが、現在符号化ブロックの左のCTU内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの右上の制御点および右下の制御点に基づいて決定される。詳細は次のとおり。
ステップS1300:ビデオ・デコーダは、現在符号化ブロックのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1311~S1313が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1321~S1325が実行される。
AMVPモード:
ステップS1311:ビデオ・デコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる(図9Bに示される)。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい(ステップS1301)。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルおよび位置座標に基づいて形成される(ステップS1302)。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)および(2)に示される(ステップS1303)。
式(1)および(2)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(1)および(2)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが現在符号化ブロックの左の符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの最も右の2つの制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい(ステップS1304)。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)は、第1の近傍アフィン符号化ブロックの2つの最も右の制御点の動きベクトルおよび位置座標に基づいて形成される(ステップS1305)。
現在符号化ブロックの制御点の動きベクトルは第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は式(18)および式(19)に示される(ステップS1306)。
式(18)および(19)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しておらず、かつ現在符号化ブロックの左のCTU内に位置していない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書において限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。別の例では、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループ内の一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループ内の一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(1)、(2)、および(3)に示される。
式(1)、(2)、および(5)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの左にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も右の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(18)、(19)、および(20)に示される。
式(18)、(19)、および(20)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置せず、かつ、現在符号化ブロックの左のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。別の例として、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループにおける一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループにおける一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1211における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1312:ビデオ・デコーダは、ビットストリームをパースして、インデックスおよび動きベクトル差分MVDを得る。
詳細については、ステップS1212の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1313:ビデオ・デコーダは、候補動きベクトル予測子MVPリストにおけるターゲット動きベクトル・グループを、インデックスに基づいて決定する。
詳細については、ステップS1213の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1314:ビデオ・デコーダは、ターゲット候補動きベクトル・グループと、ビットストリームからパースを通じて得られた動きベクトル差分MVDとに基づいて、現在符号化ブロックの制御点の動きベクトルを決定する。
詳細については、ステップS1214の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1315:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1215の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1316:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1216の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS1321:ビデオ・デコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(1)、(2)、および(3)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(1)および(2)に示される。
式(1)、(2)、および(3)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWである。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(1)および(2)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合、第1の近傍アフィン符号化ブロックの最も右の2つの制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの右上の制御点の位置座標(x5,y5)および動きベクトル(vx5,vy5)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは4パラメータ・アフィン・モデル)は、第1の近傍アフィン符号化ブロックの2つの最も下の制御点の動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は式(18)、(19)、および(20)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は式(18)および(19)に示される。
式(18)、(19)、および(20)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しておらず、かつ現在符号化ブロックの左のCTU内に位置していない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書において限定されない。たとえば、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。別の例では、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの左のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。
任意的に、候補動き情報リストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られる。第2の近傍アフィン符号化ブロックの制御点の第2のグループ内の一つまたは複数の制御点の、第2の近傍アフィン符号化ブロックに対する位置は、第1の近傍アフィン符号化ブロックの制御点の第1のグループ内の一つまたは複数の制御点の、第1の近傍アフィン符号化ブロックに対する位置とは異なる(たとえば、第1の近傍アフィン符号化ブロックの制御点の第1のグループに含まれる制御点は、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および左上の制御点であるが、第2の近傍アフィン符号化ブロックの制御点の第2のグループに含まれる制御点は、第2の近傍アフィン符号化ブロックの右上の制御点、右下の制御点、および左下の制御点である)。
態様2:候補動き情報リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1221における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1322:ビデオ・デコーダは、ビットストリームをパースして、インデックスを得る。
詳細については、ステップS1222の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1223:ビデオ・デコーダは、候補動き情報リスト内のターゲット動きベクトル・グループをインデックスに基づいて決定する。
詳細については、ステップS1223の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1324:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1224の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1325:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行し、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1225の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの左に位置する場合は、第1の近傍アフィン符号化ブロックの最も右の制御点に関する情報が、メモリから読み込まれている。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する代わりに(あるいは、第1の近傍符号化ブロックの左上の制御点および右上の制御点を制御点の第1のグループとして固定的に使用する代わりに)、現在符号化ブロックに対する符号化ツリー単位CTUの相対位置に基づいて決定される制御点である。ここで、第1の近傍アフィン符号化ブロックは該CTU内に位置する。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出されている情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、デコード性能を改善する。
デコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上の符号化ツリー単位(CTU)内に位置する場合、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点、右下の制御点、および右上の制御点に基づいて決定される。詳細は次のとおり。
ステップS1400:ビデオ・デコーダは、現在符号化ブロックについてのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1411~S1416が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1421~S1425が実行される。
AMVPモード:
ステップS1411:ビデオ・デコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つの態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる(図9Cに示される)。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にある符号化ツリー単位(CTU)内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい(ステップS1401)。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される(ステップS1402)。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)および(22)に示される(ステップS1403)。
式(21)および(22)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(21)および(22)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書において限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じ、または異なるものでありうる。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)、(22)、および(23)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1211における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1412:ビデオ・デコーダは、ビットストリームをパースして、インデックスおよび動きベクトル差分MVDを得る。
詳細については、ステップS1212の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1413:ビデオ・デコーダは、候補動きベクトル予測子MVPリストにおけるターゲット動きベクトル・グループを、インデックスに基づいて決定する。
詳細については、ステップS1213の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1414:ビデオ・デコーダは、ターゲット候補動きベクトル・グループと、ビットストリームからパースを通じて得られた動きベクトル差分MVDとに基づいて、現在符号化ブロックの制御点の動きベクトルを決定する。
詳細については、ステップS1214の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1415:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1215の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1416:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1216の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS1421:ビデオ・デコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上にあるCTU内に位置する場合、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(21)、(22)、および(23)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(21)および(22)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
第1の近傍アフィン符号化ブロックが、現在符号化ブロックの上のCTU内に位置しない場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、本明細書では限定されない。具体的には、この場合、現在符号化ブロックの制御点の動きベクトルを予測する態様は、第1の近傍アフィン符号化ブロックが現在符号化ブロックの上のCTU内に位置する場合に使用される予測態様と同じか、または異なることがありうる。
態様2:候補動き情報リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1221における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1422:ビデオ・デコーダは、ビットストリームをパースして、インデックスを得る。
詳細については、ステップS1222の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1423:ビデオ・デコーダは、候補動き情報リスト内のターゲット動きベクトル・グループをインデックスに基づいて決定する。
詳細については、ステップS1223の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1424:ビデオ・デコーダは、6パラメータ・アフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1224の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1425:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行し、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1225の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する(あるいは第1の近傍符号化ブロックの左上の制御点および右上の制御点を第1のグループの制御点として固定的に使用する)代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出された情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、デコード性能を改善する。
デコーダ側の別の任意的な実施形態では、第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、候補動きベクトル予測子のグループは、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点に基づいて直接、決定される。詳細は次のとおり。
ステップS1500:ビデオ・デコーダは、現在符号化ブロックについてのインター予測モードを決定する。
具体的には、インター予測モードは、先進動きベクトル予測(AMVP)モードであってもよく、またはマージ・モードであってもよい。
現在符号化ブロックについての決定されたインター予測モードがAMVPモードである場合は、ステップS1511~S1516が実行される。
現在符号化ブロックについての決定されたインター予測モードがマージ・モードである場合は、ステップS1521~S1525が実行される。
AMVPモード:
ステップS1511:ビデオ・デコーダが、候補動きベクトル予測子MVPリストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動きベクトル予測子MVPリスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動きベクトル予測子MVPリストは、トリプレット候補動きベクトル予測子MVPリストまたは2-タプル候補動きベクトル予測子MVPリストでありうる。2つ態様は具体的には次のとおり。
態様1:候補動きベクトル予測子MVPリストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて現在符号化ブロックの制御点の動きベクトルを予測する態様は、現在符号化ブロックのパラメータ・モデルによって変わる。よって、下記は、異なる場合について記述を与える。
A: 現在符号化ブロックのパラメータ・モデルは、4パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる(図9Dに示される)。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい(ステップS1501)。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される(ステップS1502)。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)および(22)に示される(ステップ1503)。
式(21)および(22)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルである。
任意的に、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)と、右下の制御点の位置座標(x7,y7)の両方が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)に基づいて計算される。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)は(x4,y4+cuH)であり、第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)は(x4+cuW,y4+cuH)である。ここで、cuWは第1の近傍アフィン符号化ブロックの幅であり、cuHは第1の近傍アフィン符号化ブロックの高さである。さらに、第1の近傍アフィン符号化ブロックの左下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの左下のサブブロックの動きベクトルであり、第1の近傍アフィン符号化ブロックの右下の制御点の動きベクトルは、第1の近傍アフィン符号化ブロックの右下のサブブロックの動きベクトルである。この場合、第1の近傍アフィン符号化ブロックの左下の制御点と右下の制御点との間の水平距離はcuWであり、第1の近傍アフィン符号化ブロックの左上の制御点と右上の制御点との間の水平距離はcuWであることがわかる。cuWは通例2の冪乗であるので、現在符号化ブロックの制御点の動きベクトルを導出するプロセスにおいて、実装の複雑さを低減するために、除算演算の代わりに右シフト方式が使用されてもよい。第1の近傍アフィン符号化ブロックの左下の制御点の位置座標と右下の制御点の位置座標は両方とも、メモリから読まれるのではなく、導出を通じて得られることがわかる。よって、この方法によれば、メモリからの読み出し回数をさらに減らすことができ、デコード性能が改善できる。別の任意的な解決策では、左下の制御点の位置座標および右下の制御点の位置座標は、代替的に、メモリにあらかじめ記憶されて、必要なときに使用のためにメモリから読み出されてもよい。
この場合、式(21)および(22)において、(x7-x6)はcuWと等しく、(vx7,vy7)は、ピクチャー中の位置(x4+cuW-1,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよく、(vx6,vy6)は、ピクチャー中の位置(x4,y4+cuH-1)の動きベクトルを読み取ることによって得られてもよい。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
B: 現在符号化ブロックのパラメータ・モデルは、6パラメータ・アフィン変換モデルである。導出態様は以下のとおりでありうる。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。詳細は、式(21)、(22)、および(23)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、候補動きベクトル予測子MVPリストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
態様2:候補動きベクトル予測子MVPリストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1211における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1512:ビデオ・デコーダは、ビットストリームをパースして、インデックスおよび動きベクトル差分MVDを得る。
詳細については、ステップS1212の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1513:ビデオ・デコーダは、候補動きベクトル予測子MVPリストにおけるターゲット動きベクトル・グループを、インデックスに基づいて決定する。
詳細については、ステップS1213の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1514:ビデオ・デコーダは、ターゲット候補動きベクトル・グループと、ビットストリームからパースを通じて得られた動きベクトル差分MVDとに基づいて、現在符号化ブロックの制御点の動きベクトルを決定する。
詳細については、ステップS1214の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1515:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1215の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1516:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行して、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1216の説明を参照されたい。詳細は、ここでは再度説明しない。
マージ・モード:
ステップS1521:ビデオ・デコーダは、候補動き情報リストを構築する。
具体的には、ビデオ・デコーダは、インター予測ユニット(インター予測モジュールとも呼ばれる)を使用して、候補動き情報リスト(アフィン候補動きベクトル・リストとも呼ばれる)を構築する。この構築は、次の2つの態様のいずれかまたはそれら2つの態様の組み合わせにおいて実行されうる。構築された候補動き情報リストは、トリプレット候補動き情報リストである。2つの態様は具体的には次のとおり。
態様1:候補動き情報リストは、動きモデルに基づく動きベクトル予測方法を用いて構築される。
まず、現在符号化ブロックの全部またはいくつかの近傍ブロックがあらかじめ指定された順序でたどられて、それらの近傍ブロックのうちの近傍アフィン符号化ブロックを決定する。一つまたは複数の決定された近傍アフィン符号化ブロックが存在することがありうる。たとえば、図7Aに示される近傍ブロックA、B、C、D、Eが、近傍ブロックA、B、C、D、Eのうちで近傍アフィン符号化ブロックを決定するために逐次的にたどられてもよい。インター予測ユニットは、少なくとも1つの近傍アフィン符号化ブロックに基づいて、候補動きベクトル予測子のグループを決定する(候補動きベクトル予測子の各グループは2-タプルまたはトリプレットである)。下記は、記述のための例として1つの近傍アフィン符号化ブロックを使用する。説明の簡単のために、この近傍アフィン符号化ブロックは、第1の近傍アフィン符号化ブロックと呼ばれる。詳細は、次のとおり。
第1のアフィン・モデルが、第1の近傍アフィン符号化ブロックの制御点の動きベクトルに基づいて決定される。さらに、現在符号化ブロックの制御点の動きベクトルが、第1のアフィン・モデルに基づいて予測される。詳細は次のとおり。
第1の近傍アフィン符号化ブロックの、現在符号化ブロックに対する位置にかかわりなく、第1の近傍アフィン符号化ブロックの左上の制御点および2つの最も下の制御点の位置座標および動きベクトルが直接、得られる。たとえば、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標(x4,y4)および動きベクトル(vx4,vy4)、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標(x6,y6)および動きベクトル(vx6,vy6)、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標(x7,y7)および動きベクトル(vx7,vy7)が得られてもよい。
第1のアフィン・モデル(この場合に得られる第1のアフィン・モデルは6パラメータ・アフィン・モデル)が、第1の近傍アフィン符号化ブロックの左上の制御点の位置座標および動きベクトル、第1の近傍アフィン符号化ブロックの左下の制御点の位置座標および動きベクトル、ならびに第1の近傍アフィン符号化ブロックの右下の制御点の位置座標および動きベクトルに基づいて形成される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標と、現在符号化ブロックの左下の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルと、現在符号化ブロックの左下の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル・トリプレットが形成され、候補動き情報リストに加えられる。詳細は、式(21)、(22)、および(23)に示される。
任意的に、現在符号化ブロックの制御点の動きベクトルは、第1のアフィン・モデルに基づいて予測される。たとえば、現在符号化ブロックの左上の制御点の位置座標と、現在符号化ブロックの右上の制御点の位置座標とが、現在符号化ブロックの左上の制御点の動きベクトルと、現在符号化ブロックの右上の制御点の動きベクトルとを予測するために、第1のアフィン・モデルに代入されてもよい。候補動きベクトル2-タプルが形成され、候補動き情報リストに加えられる。詳細は、式(21)および(22)に示される。
式(21)、(22)、および(23)において、(x0,y0)は現在符号化ブロックの左上の制御点の座標であり、(x1,y1)は現在符号化ブロックの右上の制御点の座標であり、(x2,y2)は現在符号化ブロックの左下の制御点の座標である。また、(vx0,vy0)は現在符号化ブロックの左上の制御点の予測される動きベクトルであり、(vx1,vy1)は現在符号化ブロックの右上の制御点の予測される動きベクトルであり、(vx2,vy2)は現在符号化ブロックの左下の制御点の予測される動きベクトルである。
任意的に、候補動き情報リストは、第2の候補動きベクトル・グループをさらに含み、第2の候補動きベクトル・グループは、第2の近傍アフィン符号化ブロックの制御点の第2のグループに基づいて得られ、第2の近傍アフィン符号化ブロックの制御点の第2のグループは、第2の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。
態様2:候補動き情報リストは、制御点の組み合わせに基づく動きベクトル予測方法を用いて構築される。
具体的には、態様2の原理は、ステップS1221における態様2の原理と同じである。よって、詳細はここでは再度説明しない。
ステップS1522:ビデオ・デコーダは、ビットストリームをパースして、インデックスを得る。
詳細については、ステップS1222の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1523:ビデオ・デコーダは、候補動き情報リスト内のターゲット動きベクトル・グループをインデックスに基づいて決定する。
詳細については、ステップS1223の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1524:ビデオ・デコーダは、パラメータに基づくアフィン変換モデルを用いて、現在符号化ブロックの制御点の決定された動きベクトルに基づいて、現在符号化ブロックの各サブブロックの動きベクトルを取得する。
詳細については、ステップS1224の説明を参照されたい。詳細は、ここでは再度説明しない。
ステップS1525:ビデオ・デコーダは、現在符号化ブロックの各サブブロックの動きベクトルに基づいて動き補償を実行し、各サブブロックの予測されるサンプル値を得る。
詳細については、ステップS1225の説明を参照されたい。詳細は、ここでは再度説明しない。
第1の近傍アフィン符号化ブロックが位置する符号化ツリー単位CTUが、現在符号化ブロックの上に位置する場合、第1の近傍アフィン符号化ブロックの最も下の制御点に関する情報が、メモリから読み込まれていることが理解されうる。したがって、上述の解決策では、第1の近傍アフィン符号化ブロックの制御点の第1のグループに基づいて候補動きベクトルを構築するプロセスにおいて、制御点の第1のグループは、従来技術において第1の近傍符号化ブロックの左上の制御点、右上の制御点、および左下の制御点を制御点の第1のグループとして固定的に使用する(あるいは第1の近傍符号化ブロックの左上の制御点および右上の制御点を第1のグループの制御点として固定的に使用する)代わりに、第1の近傍アフィン符号化ブロックの左下の制御点および右下の制御点を含む。よって、本願における制御点の第1のグループを決定する方法によれば、メモリから読み出された情報が、制御点の第1のグループに関する情報(たとえば、位置座標および動きベクトル)として直接再利用でき、それにより、メモリからの読み出し回数を減らし、デコード性能を改善する。
図10は、本願のある実施形態による、エンコード装置またはデコード装置(符号化装置1000と略称される)の実装の概略ブロック図である。符号化装置1000は、プロセッサ1010、メモリ1030、およびバス・システム1050を含んでいてもよい。プロセッサとメモリは、バス・システムを通じて接続される。メモリは命令を記憶するように構成される。プロセッサは、メモリに記憶された命令を実行するように構成される。エンコード装置のメモリは、プログラム・コードを記憶する。プロセッサは、メモリに記憶されたプログラム・コードを呼び出して、本願に記載されたビデオ符号化またはデコード方法、特に、さまざまな新しいインター予測モードでのビデオ符号化またはデコード方法、およびさまざまな新しいインター予測モードでの動き情報予測方法を実行することができる。反復を回避するために、詳細は、ここでは再度説明されない。
本願のこの実施形態では、プロセッサ1010は、中央処理装置(略「CPU」)であってもよく、またはプロセッサ1010は、別の汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、または別のプログラマブル・ロジック・デバイス、離散的なゲートまたはトランジスタ・ロジック・デバイス、離散的なハードウェア・コンポーネントなどであってもよい。汎用プロセッサは、マイクロプロセッサであってもよく、またはプロセッサは、任意の従来のプロセッサ等であってもよい。
メモリ1030は、読み出し専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスを含んでいてもよい。メモリ1030としては、適切なタイプの任意の他の記憶装置が使用されてもよい。メモリ1030は、バス1050を通じてプロセッサ1010によってアクセスされるコードおよびデータ1031を含んでいてもよい。メモリ1030は、オペレーティング・システム1033およびアプリケーションプログラム1035をさらに含んでいてもよい。アプリケーションプログラム1035は、プロセッサ1010が、本願に記載されるビデオ符号化またはデコード方法(特に、本願に記載されたインター予測方法または動き情報予測方法)を実行することを許容する少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム1035は、アプリケーション1~Nを含んでいてもよく、さらに、本願に記載されるビデオ符号化またはデコード方法を実行するためのビデオ符号化またはデコードアプリケーション(ビデオ符号化アプリケーションと略称される)を含んでいてもよい。
バス・システム1050は、データ・バスに加えて、電力バス、制御バス、ステータス信号バスなどをさらに含んでいてもよい。しかしながら、明確な記述のために、図中のさまざまなタイプのバスはすべてバス・システム1050としてマークされている。
任意的に、符号化装置1000は、一つまたは複数の出力装置、たとえば、ディスプレイ1070をさらに含んでいてもよい。一例では、ディスプレイ1070は、動作上、タッチ入力を感知することができるタッチユニットとディスプレイを統合するタッチディスプレイであってもよい。ディスプレイ1070は、バス1050を通じてプロセッサ1010に接続されてもよい。
図11は、ある例示的実施形態による、図2Aのエンコーダ100および/または図2Bのデコーダ200を含むビデオ符号化システム1100の一例の例解図である。システム1100は、本願のさまざまな技術の組み合わせを実装してもよい。記載された実装において、ビデオ符号化システム1100は、撮像装置1101、ビデオ・エンコーダ100、ビデオ・デコーダ200(および/または処理ユニット1106の論理回路1107を使用して実装されるビデオ・エンコーダ)、アンテナ1102、一つまたは複数のプロセッサ1103、一つまたは複数のメモリ1104、および/または、表示装置1105を含んでいてもよい。
図に示されるように、撮像装置1101、アンテナ1102、処理ユニット1106、論理回路1107、ビデオ・エンコーダ100、ビデオ・デコーダ200、プロセッサ1103、メモリ1104、および/または表示装置1105は、互いに通信することができる。記載されるように、ビデオ符号化システム1100は、ビデオ・エンコーダ100およびビデオ・デコーダ200を使用して示されるが、異なる例では、ビデオ符号化システム1100は、ビデオ・エンコーダ100のみ、またはビデオ・デコーダ200のみを含んでいてもよい。
いくつかの例では、図に示されるように、ビデオ符号化システム1100は、アンテナ1102を含んでいてもよい。たとえば、アンテナ1102は、ビデオ・データのエンコードされたビットストリームを送信または受信するように構成されてもよい。さらに、いくつかの例では、ビデオ符号化システム1100は、表示装置1105を含んでいてもよい。表示装置1105は、ビデオ・データを提示するように構成されてもよい。いくつかの例では、図に示されるように、論理回路1107は、処理ユニット1106によって実装されてもよい。処理ユニット1106は、特定用途向け集積回路(ASIC)ロジック、グラフィックス・プロセッサ、汎用プロセッサなどを含んでいてもよい。ビデオ符号化システム1100は、任意的なプロセッサ1103をさらに含んでいてもよい。任意的なプロセッサ1103は、同様に、特定用途向け集積回路(ASIC)ロジック、グラフィックス・プロセッサ、汎用プロセッサなどを含んでいてもよい。いくつかの例では、論理回路1107は、ハードウェア、たとえば、ビデオ符号化のための専用ハードウェアを使用することによって実装されてもよい。プロセッサ1103は、汎用ソフトウェア、オペレーティング・システムなどを使用して実装されてもよい。さらに、メモリ1104は、任意のタイプのメモリ、たとえば、揮発性メモリ(たとえば、スタティックランダムアクセスメモリ(SRAM)、またはダイナミックランダムアクセスメモリ(DRAM))または不揮発性メモリ(たとえば、フラッシュメモリ)であってもよい。制約しない一例では、メモリ1104は、キャッシュメモリによって実装されてもよい。いくつかの例では、論理回路1107は、(たとえば、ピクチャー・バッファを実装するために)メモリ1104にアクセスしてもよい。他の例では、論理回路1107および/または処理ユニット1106は、ピクチャー・バッファを実装するためのメモリ(たとえば、キャッシュ)を含んでいてもよい。
いくつかの例では、論理回路を使用して実装されるビデオ・エンコーダ100は、ピクチャー・バッファ(たとえば、処理ユニット1106またはメモリ1104によって実装される)およびグラフィックス処理ユニット(たとえば、処理ユニット1106によって実装される)を含んでいてもよい。グラフィックス処理ユニットは、ピクチャー・バッファに通信上結合されてもよい。グラフィックス処理ユニットは、図1Aを参照して説明したさまざまなモジュールおよび/または本明細書で説明した任意の他のエンコーダ・システムもしくはサブシステムを実装するために、論理回路1107を使用して実装されたビデオ・エンコーダ100を含んでいてもよい。論理回路は、本明細書に記載されるさまざまな動作を実行するように構成されてもよい。
ビデオ・デコーダ200は、図1Bのデコーダ200を参照して説明したさまざまなモジュール、および/または本明細書に説明した任意の他のデコーダ・システムもしくはサブシステムを実装するために、論理回路1107によって同様の仕方で実装されてもよい。いくつかの例では、論理回路を使用して実装されるビデオ・デコーダ200は、ピクチャー・バッファ(処理ユニット1106またはメモリ1104によって実装される)およびグラフィックス処理ユニット(たとえば、処理ユニット1106によって実装される)を含んでいてもよい。グラフィックス処理ユニットは、ピクチャー・バッファに通信上結合されてもよい。グラフィックス処理ユニットは、図1Bを参照して説明したさまざまなモジュールおよび/または本明細書で説明した任意の他のデコーダ・システムもしくはサブシステムを実装するために、論理回路1107を使用して実装されたビデオ・デコーダ200を含んでいてもよい。
いくつかの例では、ビデオ符号化システム1100のアンテナ1102は、ビデオ・データのエンコードされたビットストリームを受信するように構成されてもよい。記載されるように、エンコードされたビットストリームは、ビデオ・フレーム・エンコードに関連し、本明細書に記載されるデータ、インジケータ、インデックス値、モード選択データなど、たとえば符号化のための分割に関連するデータ(たとえば、変換係数または量子化された変換係数、任意的なインジケータ(記載されるようなもの)、および/または符号化のための分割を定義するデータ)を含んでいてもよい。ビデオ符号化システム1100は、アンテナ1102に結合され、エンコードされたビットストリームをデコードするように構成されたビデオ・デコーダ200をさらに含んでいてもよい。表示装置1105は、ビデオ・フレームを提示するように構成される。
上記の方法手順のステップにおいて、ステップの記述順序は、ステップの実行順序を表わさない。ステップは、上記の記載順序に従って実行されても、されなくてもよい。たとえば、ステップS1211は、ステップS1212の後に実行されてもよく、またはステップS1212の前に実行されてもよく、ステップS1221は、ステップS1222の後に実行されてもよく、またはステップS1222の前に実行されてもよい。他のステップは、ここで1つずつ列挙されない。
当業者は、本明細書に開示および記載されたさまざまな例示的な論理ブロック、モジュール、およびアルゴリズム・ステップを参照して記載された機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせによって実装できることを理解することができる。ソフトウェアによって実装される場合、例示的な論理ブロック、モジュール、およびステップを参照して記載された機能は、一つまたは複数の命令またはコードとしてコンピュータ読み取り可能媒体に記憶されるか、またはコンピュータ読み取り可能媒体を通じて伝送され、ハードウェアベースの処理ユニットによって実行されることができる。コンピュータ読み取り可能媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体を含んでいてもよく、あるいは、ある場所から他の場所への(たとえば、通信プロトコルに従った)コンピュータ・プログラムの伝送を容易にする任意の通信媒体を含んでいてもよい。このようにして、コンピュータ読み取り可能媒体は、一般に、(1)非一時的な有形コンピュータ読み取り可能記憶媒体、または(2)信号または搬送波のような通信媒体に対応しうる。データ記憶媒体は、本願に記載される技術を実装するための命令、コード、および/またはデータ構造を取り出すために、一つまたは複数のコンピュータまたは一つまたは複数のプロセッサによってアクセスされることができる任意の使用可能な媒体でありうる。コンピュータ・プログラム製品は、コンピュータ読み取り可能媒体を含むことができる。
限定ではないが、例として、そのようなコンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他のコンパクトディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、フラッシュメモリ、または命令またはデータ構造の形で所望のプログラム・コードを記憶するために使用されることができ、コンピュータによってアクセスされることができる任意の他の媒体を含むことができる。さらに、どのような接続も、適正にコンピュータ読み取り可能媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバー、ツイストペア、デジタル加入者線(DSL)、または赤外線、電波、もしくはマイクロ波のような無線技術を通じて、ウェブサイト、サーバー、または他のリモート源から命令が送信される場合、その同軸ケーブル、光ファイバー、ツイストペア、DSL、または赤外線、電波、もしくはマイクロ波のような無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能な記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、実際には非一時的な有形記憶媒体を意味することが理解されるべきである。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、およびブルーレイディスクを含む。ディスク(disk)は通例、磁気的にデータを再生するが、ディスク(disc)は光学的にレーザーでデータを再生する。上記の項目の組み合わせもまた、コンピュータ読み取り可能媒体の範囲に含まれるべきである。
命令は、一つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積または離散的論理回路といった一つまたは複数のプロセッサによって実行されうる。したがって、本明細書で使用される用語「プロセッサ」は、上記の構造のいずれか、または本明細書に記載される技術を実装するのに好適な任意の他の構造でありうる。さらに、いくつかの側面において、本明細書に記載される例示的な論理ブロック、モジュール、およびステップを参照して記載される機能は、エンコードおよびデコードのために構成される専用のハードウェアおよび/またはソフトウェアモジュール内に提供されてもよく、または組み合わされたコーデックに組み込まれてもよい。さらに、これらの技術は、完全に一つまたは複数の回路または論理素子において実装されてもよい。
本願における技術は、無線ハンドセット、集積回路(IC)、または一組のIC(たとえば、チップセット)を含むさまざまな装置またはデバイスにおいて実装されうる。開示された技術を実行するように構成された装置の機能的側面を強調するために、さまざまなコンポーネント、モジュール、またはユニットが本願に記載されているが、必ずしも異なるハードウェアユニットによって実装されるわけではない。実際には、上述のように、さまざまなユニットが、適切なソフトウェアおよび/またはファームウェアと組み合わせてコーデック・ハードウェアユニットに組み合わされてもよく、または、相互運用可能なハードウェアユニット(上述の一つまたは複数のプロセッサを含む)によって提供されてもよい。
上記の説明は、単に本願の個別的な実装の例であり、本願の保護範囲を制限するために意図されたものではない。本願に開示された技術的範囲内で、当業者によって容易に割り出される任意の変形または代替は、本願の保護範囲内にはいる。したがって、本願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。