以下は、本発明の実施形態における添付の図面を参照して、本発明の実施形態を説明する。以下の説明では、本開示の一部をなす添付の図面が参照され、例として、本発明の実施形態の特定の側面または本発明の実施形態が使用されうる特定の側面を示す。本発明の実施形態は、他の側面で使用されてもよく、添付の図面に示されていない構造的または論理的な変更を含んでいてもよいことが理解されるべきである。したがって、以下の詳細な説明は、限定する意味では理解されず、本発明の範囲は、添付の特許請求の範囲によって定義される。たとえば、記載された方法と組み合わせた開示された内容は、当該方法を実行するように構成された対応する装置またはシステムに対しても当てはまる可能性があり、逆も同様であることが理解されるべきである。たとえば、一つまたは複数の特定の方法ステップが記載されている場合、対応する装置は、記載されている該一つまたは複数のステップを実行するための一つまたは複数のユニット、たとえば機能ユニット(たとえば、前記一つまたは複数のステップを実行する1つのユニット、または複数のステップのうちの一つまたは複数をそれぞれ実行する複数のユニット)を含んでいてもよい。これは、たとえそのような一つまたは複数のユニットが明示的に記載されておらず、添付の図面に示されていなくてもそうである。さらに、たとえば、機能ユニットのような一つまたは複数のユニットに基づいて特定の装置が記載されている場合、対応する方法は、前記一つまたは複数のユニットの機能を実行するために使用される1つのステップ(たとえば、前記一つまたは複数のユニットの機能を実行するために使用される1つのステップ、または複数のユニットのうちの一つまたは複数の機能を実行するためにそれぞれ使用される複数のステップ)を含んでいてもよい。これは、たとえそのような一つまたは複数のステップが明示的に記載されておらず、添付の図面に示されていなくてもそうである。さらに、本明細書に記載されるさまざまな例示的実施形態および/または側面の特徴は、特に断りのない限り、互いに組み合わせることができることが理解されるべきである。
本発明の実施形態における技術的解決策は、既存のビデオ・コーディング規格(たとえば、H.264およびHEVCのような規格)に適用されるだけでなく、将来のビデオ・コーディング規格(たとえば、H.266規格)にも適用されうる。本発明の実施形態において使用される用語は、本発明の特定の実施形態を説明するために使用されているだけであり、本発明を限定することは意図されていない。以下では、まず、本発明の実施形態において使用されうるいくつかの概念を簡単に説明する。
ビデオ・コーディングとは、通例、ビデオまたはビデオ・シーケンスを構成するピクチャーのシーケンスを処理することを指す。ビデオ・コーディング分野では、「ピクチャー(picture)」、「フレーム(frame)」および「画像(image)」という用語は同義語として使用されることがある。本明細書におけるビデオ・コーディングは、ビデオ・エンコードまたはビデオ・デコードを指す。ビデオ・エンコードは、ソース側で実行され、通例、より効率的な記憶および/または伝送のために、ビデオ・ピクチャーを表現するためのデータ量を減らすよう、もとのビデオ・ピクチャーを(たとえば圧縮を通じて)処理することを含む。ビデオ・デコードは、宛先側で実行され、通例、ビデオ・ピクチャーを再構成するために、エンコーダに対して逆の処理を含む。実施形態におけるビデオ・ピクチャーの「コーディング」は、ビデオ・シーケンスの「エンコード」または「デコード」として理解されるべきである。エンコード部分とデコード部分の組み合わせが、コーディング(エンコードとデコード)とも呼ばれる。
ビデオ・シーケンスは、一連のピクチャー(picture)を含み、ピクチャーはさらにスライス(slice)に分割され、スライスはさらにブロック(block)に分割される。ビデオ・コーディングは、ブロックごとに実行される。いくつかの新しいビデオ・コーディング規格では「ブロック」の概念がさらに拡張される。たとえば、H.264規格ではマクロブロック(macroblock、MB)が導入されている。マクロブロックはさらに、予測符号化のために使用できる複数の予測ブロック(パーティション)に分割されてもよい。高効率ビデオ・コーディング(high efficiency video coding、HEVC)規格では、「符号化単位」(coding unit、CU)、「予測単位」(prediction unit、PU)、「変換単位」(transform unit、TU)といった基本概念が使用される。複数のブロック単位が機能分割を通じて得られ、新しいツリーベースの構造を用いて記述される。たとえば、四分木に基づいてCUがより小さなCUに分割されてもよく、該より小さなCUがさらに分割されて四分木構造を生成してもよい。CUは、符号化されるピクチャーを分割し、エンコードするための基本単位である。PUとTUも同様のツリー構造をもつ。PUは予測ブロックに対応してもよく、予測符号化の基本単位である。CUはさらに、分割モードで複数のPUに分割される。TUは変換ブロックに対応してもよく、予測残差を変換するための基本単位である。しかしながら、本質的には、CU、PU、およびTUのすべては概念的にブロック(またはピクチャー・ブロック)である。
たとえば、HEVCでは、CTUは、符号化ツリーとして表わされる四分木構造を使用することによって、複数のCUに分割される。ピクチャー領域をインター(時間的)予測またはイントラ(空間的)予測を通じてエンコードするどうかについての判断は、CUレベルでなされる。各CUは、PU分割タイプに基づいて、1つ、2つ、または4つのPUにさらに分割されてもよい。1つのPUでは、同じ予測プロセスが適用され、関連情報がPUごとにデコーダに伝送される。PU分割型に基づく予測プロセスを適用することによって残差ブロックを得た後、CUは、CUに使用される符号化ツリーに類似した別の四分木構造に基づく変換ユニット(transform unit、TU)に分割されてもよい。ビデオ圧縮技術の最近の発展では、四分木および二分木(quadtree plus binary tree、QTBT)パーティション・フレームが符号化ブロックを分割するために使用される。QTBTブロック構造では、CUは正方形または長方形でありうる。
本明細書では、記述および理解の簡単のために、現在のコーディングされるピクチャー内のエンコード対象ピクチャー・ブロックが、現在ブロックと称されることがある。たとえば、エンコードにおいては、現在ブロックはエンコードされているブロックであり、デコードにおいては、現在ブロックはデコードされているブロックである。現在ブロックを予測するために使用される、参照ピクチャー内のデコードされたピクチャー・ブロックは、参照ブロックと称される。具体的には、参照ブロックは、現在ブロックのために参照信号を提供するブロックであり、参照信号は、ピクチャー・ブロック内のピクセル値を表わす。参照ピクチャー内にあり、現在ブロックのための予測信号を提供するブロックは、予測ブロックと称されてもよい。予測信号は、予測ブロック内のピクセル値、サンプリング値、またはサンプリング信号を表わす。たとえば、複数の参照ブロックがたどられた後、最適な参照ブロックが見出される。最適な参照ブロックは、現在ブロックのために予測を提供し、予測ブロックと称される。
無損失ビデオ・コーディングの場合、もとのビデオ・ピクチャーが再構成されうる。具体的には、再構成されたビデオ・ピクチャーは、もとのビデオ・ピクチャーと同じ品質をもつ(記憶や伝送の際に伝送損失や他のデータ損失が発生しないとして)。損失のあるビデオ・コーディングの場合、たとえば量子化を通じてさらなる圧縮が実行されて、ビデオ・ピクチャーを表現するためのデータ量を減少させるが、ビデオ・ピクチャーはデコーダ側で完全に再構成されることはできない。具体的には、再構成されたビデオ・ピクチャーの品質は、もとのビデオ・ピクチャーの品質よりも低いまたは劣る。
いくつかのH.261ビデオ・コーディング規格は、「損失のあるハイブリッド・ビデオ・コーディング」(具体的には、サンプル領域における空間的および時間的予測が、変換領域における量子化を適用するための2D変換符号化と組み合わされる)のためのものである。ビデオ・シーケンスの各ピクチャーは、通例、一組の重複しないブロックに分割され、コーディングは通例、ブロック・レベルで実行される。具体的には、エンコーダ側では、ビデオは通例、ブロック(ビデオ・ブロック)レベルで処理される、すなわちエンコードされる。たとえば、空間的(イントラ)予測および時間的(インター)予測を通じて予測ブロックが生成され、該予測ブロックが現在ブロック(処理されているまたは処理されるべきブロック)から減算されて、残差ブロックが得られ、残差ブロックは変換領域において変換され、伝送されるべきデータ量を減らすよう量子化される(圧縮される)。デコーダ側では、エンコーダに対する逆の処理部分が、エンコードされたブロックまたは圧縮されたブロックに適用され、表現のために現在ブロックを再構成する。さらに、エンコーダは、デコーダの処理ループを複製し、それにより、エンコーダとデコーダは、同じ予測(たとえば、イントラ予測およびインター予測)および/または再構成を生成して、その後のブロックを処理する、すなわちエンコードする。
以下は、本発明の実施形態が適用されるシステム・アーキテクチャーを記述する。図1Aは、本発明の実施形態が適用されるビデオ・エンコードおよびデコード・システム10の一例の概略ブロック図である。図1Aに示されるように、ビデオ・エンコードおよびデコード・システム10は、源装置12および宛先装置14を含んでいてもよい。源装置12はエンコードされたビデオ・データを生成し、よって、源装置12はビデオ・エンコード装置と称されてもよい。宛先装置14は、源装置12によって生成されたエンコードされたビデオ・データをデコードすることができ、よって、宛先装置14は、ビデオ・デコード装置と称されてもよい。さまざまな実装解決策において、源装置12、宛先装置14、または源装置12および宛先装置14の両方は、一つまたは複数のプロセッサおよび該一つまたは複数のプロセッサに結合されたメモリを含んでいてもよい。メモリは、RAM、ROM、EEPROM、フラッシュメモリ、または本明細書に記載されるように、コンピュータにとってアクセス可能な命令またはデータ構造の形で所望のプログラム・コードを記憶するために使用できる他の任意の媒体を含みうるが、これらに限定されない。源装置12および宛先装置14は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえばラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビ、カメラ、ディスプレイ装置、デジタルメディアプレーヤー、ビデオゲームコンソール、車載コンピュータ、無線通信装置等を含むさまざまな装置を含むことができる。
図1Aは、源装置12および宛先装置14を別個の装置として示しているが、装置実施形態は、源装置12および宛先装置14の両方、または源装置12および宛先装置14両方の機能、すなわち、源装置12または対応する機能と宛先装置14または対応する機能を含んでいてもよい。そのような実施形態では、源装置12または対応する機能および宛先装置14または対応する機能は、同じハードウェアおよび/またはソフトウェア、別個のハードウェアおよび/またはソフトウェア、またはそれらの任意の組み合わせを使用して実装されうる。
源装置12と宛先装置14との間の通信接続は、リンク13を通じて実装されてもよく、宛先装置14は、リンク13を通じて源装置12から、エンコードされたビデオ・データを受信してもよい。リンク13は、エンコードされたビデオ・データを源装置12から宛先装置14へ移すことができる一つまたは複数の媒体または装置を含みうる。一例では、リンク13は、源装置12が、エンコードされたビデオ・データをリアルタイムで宛先装置14に直接送信することを可能にする一つまたは複数の通信媒体を含みうる。この例では、源装置12は、通信規格(たとえば無線通信プロトコル)に従って、エンコードされたビデオ・データを変調してもよく、変調されたビデオ・データを宛先装置14に送信してもよい。前記一つまたは複数の通信媒体は、無線通信媒体および/または有線通信媒体、たとえば、無線周波数(RF)スペクトルまたは一つまたは複数の物理伝送ケーブルを含んでいてもよい。前記一つまたは複数の通信媒体は、パケット・ベースのネットワークの一部であってもよく、パケット・ベースのネットワークは、たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)である。前記一つまたは複数の通信媒体は、源装置12から宛先装置14への通信を容易にするルーター、スイッチ、基地局、または他の装置を含んでいてもよい。
源装置12は、エンコーダ20を含む。任意的に、源装置12は、さらに、ピクチャー源16、ピクチャー・プリプロセッサ18、および通信インターフェース22を含んでいてもよい。ある個別的な実装形態では、エンコーダ20、ピクチャー源16、ピクチャー・プリプロセッサ18、および通信インターフェース22は、源装置12内のハードウェア・コンポーネントであってもよく、または源装置12内のソフトウェアプログラムであってもよい。記述は、別個に次のように与えられる。
ピクチャー源16は、たとえば現実世界のピクチャーを捕捉するように構成された任意の型のピクチャー捕捉装置;および/または、ピクチャーまたはコメントを生成するための任意の型の装置(画面コンテンツ・エンコードのためには、画面上の何らかのテキストも、エンコードされるべきピクチャーまたは画像の一部と考えられる)、たとえば、コンピュータアニメーションピクチャーを生成するように構成されたコンピュータグラフィックスプロセッサ;または、現実世界のピクチャーまたはコンピュータアニメーションピクチャー(たとえば、画面コンテンツまたは仮想現実(virtual reality、VR)ピクチャー)を取得および/または提供するように構成された任意の型の装置、および/または、それらの任意の組み合わせ(たとえば、拡張現実(augmented reality、AR)ピクチャー)を含んでいてもよく、またはそれらであってもよい。ピクチャー源16は、ピクチャーを捕捉するように構成されたカメラまたはピクチャーを記憶するように構成されたメモリであってもよい。ピクチャー源16は、さらに、以前に捕捉または生成されたピクチャーがそれを通じて記憶される、および/またはピクチャーがそれを通じて取得または受領される任意の型の(内部または外部)インターフェースを含んでいてもよい。ピクチャー源16がカメラである場合、ピクチャー源16は、たとえば、ローカルカメラまたは源装置に統合された統合カメラであってもよい。ピクチャー源16がメモリである場合、ピクチャー源16は、ローカルメモリ、または、たとえば、源装置に統合された統合メモリであってもよい。ピクチャー源16がインターフェースを含む場合、インターフェースは、たとえば、外部ビデオ源からピクチャーを受領するための外部インターフェースであってもよい。外部ビデオ源は、たとえば、カメラ、外部メモリ、または外部ピクチャー生成装置のような外部ピクチャー捕捉装置である。外部ピクチャー生成装置は、たとえば、外部コンピュータグラフィックスプロセッサ、コンピュータ、またはサーバーである。インターフェースは、任意の型のインターフェース、たとえば有線または無線インターフェース、または光インターフェースであってもよく、任意の独自のまたは標準化されたインターフェースプロトコルに従ったものでもよい。
ピクチャーは、ピクチャー要素(picture element)の二次元アレイまたはマトリクスとして考えることができる。アレイ中のピクチャー要素はまた、サンプルと称されることもある。アレイまたはピクチャーの水平および垂直方向(または軸)におけるサンプルの量は、ピクチャーのサイズおよび/または解像度を定義する。色の表現のためには、通例、3つの色成分が用いられる。具体的には、ピクチャーは、3つのサンプル・アレイとして表現される、または3つのサンプル・アレイを含むことができる。たとえば、RBGフォーマットまたは色空間において、ピクチャーは対応する赤、緑、および青のサンプル・アレイを含む。しかしながら、ビデオ・コーディングでは、各ピクセルは通例、ルミナンス/クロミナンス・フォーマットまたは色空間において表現される。たとえば、YUVフォーマットのピクチャーは、Yで示されるルミナンス成分(時に代替的にLで示される)と、UおよびVで示される2つのクロミナンス成分を含み、ルミナンス(ルーマ)成分Yは、輝度またはグレーレベル強度(たとえば、グレースケール・ピクチャーでは両者は同じ)を表わし、2つのクロミナンス(クロマ)成分UおよびVは、クロミナンスまたは色情報成分を表わす。対応して、YUVフォーマットのピクチャーは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(UおよびV)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャーは、YUVフォーマットに変換または転換されることができ、その逆も可能である。このプロセスは、色変換または転換とも呼ばれる。ピクチャーがモノクロの場合、そのピクチャーはルミナンス・サンプル・アレイのみを含んでいてもよい。本発明のこの実施形態では、ピクチャー源16によってピクチャー・プロセッサに伝送されるピクチャーは、生ピクチャー・データ17と称されることもある。
ピクチャー・プリプロセッサ18は、生ピクチャー・データ17を受領し、生ピクチャー・データ17に対して前処理を実行し、前処理されたピクチャー19または前処理されたピクチャー・データ19を得るように構成される。たとえば、ピクチャー・プリプロセッサ18によって実行される前処理は、トリミング、色フォーマット変換(たとえば、RGBフォーマットからYUVフォーマットへ)、色補正、またはノイズ除去を含んでいてもよい。
エンコーダ20(またはビデオ・エンコーダ20と称される)は、前処理されたピクチャー・データ19を受領し、関連する予測モード(たとえば、本明細書の実施形態における予測モード)で、前処理されたピクチャー・データ19を処理して、エンコードされたピクチャー・データ21(エンコーダ20の構造的な詳細は、図2、図4、または図5に基づいて下記でさらに述べる)を提供するように構成される。いくつかの実施形態では、エンコーダ20は、本発明に記載される動きベクトル予測方法のエンコーダ側適用を実装するために、後述するさまざまな実施形態を実施するように構成されてもよい。
通信インターフェース22は、エンコードされたピクチャー・データ21を受領し、該エンコードされたピクチャー・データ21を、記憶または直接再構成のためにリンク13を通じて、宛先装置14または任意の他の装置(たとえば、メモリ)に送信するように構成されてもよい。該他の装置は、デコードまたは記憶のために使用される任意の装置でありうる。
通信インターフェース22は、たとえば、エンコードされたピクチャー・データ21をリンク13を通じた伝送のために、適切なフォーマット、たとえばデータ・パケットにカプセル化するように構成されてもよい。・
宛先装置14は、デコーダ30を含む。任意的に、宛先装置14は、通信インターフェース28、ピクチャー・ポストプロセッサ32、および表示装置34をさらに含んでいてもよい。
記述は、次のとおり別個に与えられる。
通信インターフェース28は、源装置12または任意の他の源から、エンコードされたピクチャー・データ21を受信するように構成されてもよい。該任意の他の源は、たとえば、記憶装置である。記憶装置は、たとえば、エンコードされたピクチャー・データの記憶装置である。通信インターフェース28は、源装置12と宛先装置14との間のリンク13を通じて、または任意の型のネットワークを通じて、エンコードされたピクチャー・データ21を送信または受信するように構成されてもよい。リンク13は、たとえば、直接有線または無線接続である。該任意の型のネットワークは、たとえば、有線または無線ネットワーク、またはそれらの任意の組み合わせ、または任意の型の私的または公的ネットワーク、またはそれらの任意の組み合わせである。通信インターフェース28は、たとえば、通信インターフェース22を通じて送信されたデータ・パケットをカプセル化解除し、エンコードされたピクチャー・データ21を得るように構成されてもよい。
通信インターフェース28および通信インターフェース22の両方は、一方向通信インターフェースまたは双方向通信インターフェースとして構成されてもよく、たとえば、接続を確立するためにメッセージを送受信し、通信リンクおよび/またはエンコードされたピクチャー・データの伝送のようなデータ伝送に関連する他の任意の情報を受け取り確認および交換するように構成されてもよい。
デコーダ30(またはビデオ・デコーダ30と称される)は、エンコードされたピクチャー・データ21を受領し、デコードされたピクチャー・データ31またはデコードされたピクチャー31を提供するように構成される(デコーダ30の構造的な詳細は、図3、図4または図5に基づいて下記でさらに述べる)。いくつかの実施形態では、デコーダ30は、本発明に記載される動きベクトル予測方法のデコーダ側適用を実装するために、後述するさまざまな実施形態を実行するように構成されてもよい。
ピクチャー・ポストプロセッサ32は、デコードされたピクチャー・データ31(再構成されたピクチャー・データとも称される)を後処理して、後処理されたピクチャー・データ33を得るように構成される。ピクチャー・ポストプロセッサ32によって実行される後処理は、色フォーマット変換(たとえば、YUVフォーマットからRGBフォーマットへ)、色補正、トリミング、再サンプリング、または他の任意の処理を含んでいてもよい。ピクチャー・ポストプロセッサ32は、後処理されたピクチャー・データ33を表示装置34に送信するようにさらに構成されてもよい。
表示装置34は、後処理されたピクチャー・データ33を受領して、たとえばユーザーまたは閲覧者に対してピクチャーを表示するように構成される。表示装置34は、再構成されたピクチャーを提示するための任意の型のディスプレイ、たとえば、統合されたまたは外部のディスプレイまたはモニタであってもよく、またはそれらを含んでいてもよい。たとえば、ディスプレイは、液晶ディスプレイ(liquid crystal display、LCD)、有機発光ダイオード(organic light-emitting diode、OLED)ディスプレイ、プラズマディスプレイ、プロジェクター、マイクロLEDディスプレイ、液晶オンシリコン(liquid crystal on silicon、LCoS)、デジタル光プロセッサ(digital light processor、DLP)、または他の任意の型のディスプレイを含んでいてもよい。
図1Aは、源装置12および宛先装置14を別個の装置として示しているが、装置実施形態は、代替的に、源装置12および宛先装置14の両方、または源装置12および宛先装置14両方の機能、すなわち、源装置12または対応する機能と宛先装置14または対応する機能を含んでいてもよい。そのような実施形態では、源装置12または対応する機能および宛先装置14または対応する機能は、同じハードウェアおよび/またはソフトウェア、別個のハードウェアおよび/またはソフトウェア、またはそれらの任意の組み合わせを使用して実装されうる。
これらの記述に基づき、図1Aに示される源装置12および/または宛先装置14の異なるユニットまたは機能の存在および(厳密な)機能の分割が、実際の装置や用途に依存して変わりうることを当業者は確実に知ることができる。源装置12および宛先装置14は、任意の型のハンドヘルドまたは固定装置を含む幅広い範囲の装置、たとえばノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、ビデオカメラ、デスクトップコンピュータ、セットトップボックス、テレビ、カメラ、車載装置、表示装置、デジタルメディアプレーヤー、ビデオゲームコンソール、ビデオストリーミング装置(コンテンツサービスサーバーまたはコンテンツ送達サーバーなど)、放送受信装置、または放送送信装置を含んでいてもよく、任意の型のオペレーティング・システムも使用しても、しなくてもよい。
エンコーダ20およびデコーダ30は、それぞれ、さまざまな好適な回路、たとえば、一つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application-specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、離散的論理、ハードウェア、またはそれらの任意の組み合わせのいずれかとして実装されうる。技術が部分的にソフトウェアを使用して実装される場合、装置は、好適な非一時的コンピュータ読み取り可能記憶媒体にソフトウェア命令を記憶してもよく、本開示の技術を実行するために、一つまたは複数のプロセッサなどのハードウェアを使用することによって該命令を実行してもよい。上記の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせなどを含む)のいずれも、一つまたは複数のプロセッサと考えられてもよい。
いくつかの場合には、図1Aに示されたビデオ・エンコードおよびデコード・システム10は単に例であり、本願の技術は、必ずしもエンコード装置とデコード装置との間のデータ通信を含まないビデオ・コーディング場面(たとえば、ビデオ・エンコードまたはビデオ・デコード)に適用されてもよい。別の例では、データは、ローカルメモリから取り出されたり、ネットワークを通じてストリーミングされたりしてもよい。ビデオ・エンコード装置が、データをエンコードし、そのデータをメモリに記憶してもよく、および/またはビデオ・デコード装置が、メモリからデータを取り出し、そのデータをデコードしてもよい。いくつかの例では、データをエンコードしてそのデータをメモリに記憶する、および/またはメモリからデータを取り出してそのデータをデコードするだけであり、互いに通信しない諸装置が、エンコードおよびデコードを実行する。
図1Bは、ある例示的実施形態による、図2のエンコーダ20および/または図3のデコーダ30を含む、ビデオ・コーディング・システム40の一例の例解図である。ビデオ・コーディング・システム40は、本発明の実施形態におけるさまざまな技術の組み合わせを実装することができる。図示した実装では、ビデオ・コーディング・システム40は、撮像装置41、エンコーダ20、デコーダ30(および/または、処理ユニット46の論理回路47によって実装されるビデオ・エンコーダ/デコーダ)、アンテナ42、一つまたは複数のプロセッサ43、一つまたは複数のメモリ44、および/または、表示装置45を含んでいてもよい。
図1Bに示されるように、撮像装置41、アンテナ42、処理ユニット46、論理回路47、エンコーダ20、デコーダ30、プロセッサ43、メモリ44、および/または表示装置45は、互いに通信することができる。上述したように、ビデオ・コーディング・システム40は、エンコーダ20およびデコーダ30をもつものとして示されているが、ビデオ・コーディング・システム40は、種々の例において、エンコーダ20のみ、またはデコーダ30のみを含んでいてもよい。
いくつかの例では、アンテナ42は、ビデオ・データのエンコードされたビットストリームを送信または受信するように構成されてもよい。さらに、いくつかの例では、表示装置45は、ビデオ・データを提示するように構成されてもよい。いくつかの例では、論理回路47は、処理ユニット46によって実装されてもよい。処理ユニット46は、特定用途向け集積回路(application-specific integrated circuit、ASIC)論理、グラフィックス・プロセッサ、汎用プロセッサなどを含んでいてもよい。ビデオ・コーディング・システム40は、任意的なプロセッサ43をも含んでいてもよい。任意的なプロセッサ43は、同様に、特定用途向け集積回路(application-specific integrated circuit、ASIC)論理、グラフィックス・プロセッサ、汎用プロセッサなどを含んでいてもよい。いくつかの例では、論理回路47は、ハードウェア、たとえば、ビデオ・コーディング専用ハードウェアによって実装されてもよく、プロセッサ43は、汎用ソフトウェア、オペレーティング・システム等によって実装されてもよい。さらに、メモリ44は、任意の型のメモリ、たとえば、揮発性メモリ(たとえば、静的ランダムアクセスメモリ(Static Random Access Memory、SRAM)または動的ランダムアクセスメモリ(Dynamic Random Access Memory、DRAM))、または不揮発性メモリ(たとえば、フラッシュメモリ)でありうる。制約しない例では、メモリ44は、キャッシュメモリによって実装されてもよい。いくつかの例では、論理回路47は、(たとえば、ピクチャー・バッファを実装するための)メモリ44にアクセスしてもよい。他の例では、論理回路47および/または処理ユニット46は、ピクチャー・バッファを実装するためのメモリ(たとえば、キャッシュ)を含んでいてもよい。
いくつかの例では、論理回路を使用して実装されるエンコーダ20は、ピクチャー・バッファ(たとえば、処理ユニット46またはメモリ44によって実装される)およびグラフィックス処理ユニット(たとえば、処理ユニット46によって実装される)を含んでいてもよい。グラフィックス処理ユニットは、ピクチャー・バッファに通信上結合されてもよい。グラフィックス処理ユニットは、図2を参照して述べたさまざまなモジュール、および/または本明細書に記載された他の任意のエンコーダ・システムまたはサブシステムを実装するために、論理回路47を使用して実装されたエンコーダ20を含んでいてもよい。論理回路は、本明細書に記載されるさまざまな動作を実行するように構成されてもよい。
いくつかの例において、デコーダ30は、図3のデコーダ30を参照して述べたさまざまなモジュール、および/または本明細書で説明した他のデコーダ・システムまたはサブシステムを実装するために、論理回路47によって同様の仕方で実装されてもよい。いくつかの例では、論理回路を使用して実装されるデコーダ30は、ピクチャー・バッファ(処理ユニット46またはメモリ44によって実装される)およびグラフィックス処理ユニット(たとえば、処理ユニット46によって実装される)を含んでいてもよい。グラフィックス処理ユニットは、ピクチャー・バッファに通信上結合されてもよい。グラフィックス処理ユニットは、図3を参照して述べたさまざまなモジュールおよび/または本明細書で説明した他のデコーダ・システムもしくはサブシステムを実装するために、論理回路47を使用して実装したデコーダ30を含んでいてもよい。
いくつかの例では、アンテナ42は、ビデオ・データのエンコードされたビットストリームを受信するように構成されてもよい。記載されているように、エンコードされたビットストリームは、ビデオ・フレーム・エンコードに関連し、本明細書に記載されているデータ、インジケータ、インデックス値、モード選択データ等、たとえば、符号化分割に関係したデータ(たとえば、変換係数または量子化された変換係数、任意的なインジケータ(記載されているように)、および/または符号化分割を定義するデータ)を含んでいてもよい。ビデオ・コーディング・システム40は、アンテナ42に結合され、エンコードされたビットストリームをデコードするように構成されたデコーダ30をさらに含んでいてもよい。表示装置45は、ビデオ・フレームを提示するように構成される。
本発明のこの実施形態において、エンコーダ20を参照して説明した例については、デコーダ30は逆のプロセスを実行するように構成されうることが理解されるべきである。シンタックス要素の信号伝達に関して、デコーダ30は、そのようなシンタックス要素を受領してパースし、対応して、関連するビデオ・データをデコードするように構成されてもよい。いくつかの例では、エンコーダ20は、シンタックス要素を、エンコードされたビデオ・ビットストリームにエントロピー符号化してもよい。そのような例では、デコーダ30は、シンタックス要素をパースし、対応して、関連するビデオ・データをデコードしてもよい。
本発明の実施形態によるアフィン動きモデルに基づく動きベクトル予測方法は、主に、インター予測プロセスにおいて用いられることを注意しておくべきである。このプロセスは、エンコーダ20およびデコーダ30の両方について存在する。本発明の実施形態におけるエンコーダ20およびデコーダ30は、H.263、H.264、HEVV、MPEG-2、MPEG-4、VP8、およびVP9のようなビデオ標準プロトコルまたは次世代ビデオ標準プロトコル(H.266など)に対応するエンコーダおよびデコーダであってもよい。
図2は、本発明のある実施形態を実装するためのエンコーダ20の一例の概略的/概念ブロック図である。図2の例では、エンコーダ20は、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、バッファ216と、ループ・フィルタ・ユニット220と、デコード・ピクチャー・バッファ(decoded picture buffer、DPB)230と、予測処理ユニット260と、エントロピー符号化ユニット270とを含む。予測処理ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、モード選択ユニット262とを含んでいてもよい。インター予測ユニット244は、動き推定ユニットと、動き補償ユニット(図示せず)とを含んでいてもよい。図2に示されるエンコーダ20は、ハイブリッド・ビデオ・エンコーダまたはハイブリッド・ビデオ・コーデックに基づくビデオ・エンコーダと称されることもある。
たとえば、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260、エントロピー符号化ユニット270は、エンコーダ20の順方向信号経路を形成し、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループ・フィルタ220、デコード・ピクチャー・バッファ(decoded picture buffer、DPB)230、予測処理ユニット260は、エンコーダの逆方向信号経路を形成する。エンコーダの逆方向信号経路は、デコーダの信号経路に対応する(図3のデコーダ30を参照)。
エンコーダ20は、入力202を介して、ピクチャー201または該ピクチャー201のピクチャー・ブロック203、たとえば、ビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスにおけるピクチャーを受領する。ピクチャー・ブロック203は、現在のピクチャー・ブロックまたはエンコードされるべきピクチャー・ブロックと称されることもあり、ピクチャー201は、現在のピクチャーまたはエンコードされるべきピクチャー(特にビデオ・コーディングにおいて、同じビデオ・シーケンス、すなわち、現在のピクチャーをも含むビデオ・シーケンスにおいて、現在のピクチャーを他のピクチャー、たとえば、以前にエンコードおよび/またはデコードされたピクチャーから区別するために)と称されることもある。
エンコーダ20のある実施形態は、ピクチャー201をピクチャー・ブロック203のような複数のブロックに分割するように構成された分割ユニット(図2には示されていない)を含んでいてもよい。ピクチャー201は、通例、複数の重複しないブロックに分割される。分割ユニットは、ビデオ・シーケンス内のすべてのピクチャーについて同じブロック・サイズおよび該ブロック・サイズを定義する対応するグリッドを使用する、またはピクチャー間、またはピクチャーのサブセットもしくはグループ間でブロック・サイズを変更し、各ピクチャーを対応するブロックに分割するように構成されてもよい。
一例では、エンコーダ20の予測処理ユニット260は、上述した分割技術の任意の組み合わせを実行するように構成されてもよい。
ピクチャー201と同様に、ピクチャー・ブロック203も、サンプル値をもつサンプルの二次元アレイまたはマトリクスとして考えられる、または考えられてもよい。ただし、ピクチャー・ブロック203のサイズは、ピクチャー201のサイズより小さい。換言すれば、ピクチャー・ブロック203は、たとえば、1つのサンプル・アレイ(たとえば、モノクロ・ピクチャー201の場合のルーマ・アレイ)、3つのサンプル・アレイ(たとえば、カラー・ピクチャーの場合の1つのルーマ・アレイおよび2つのクロマ・アレイ)、または適用される色フォーマットに依存する任意の他の量および/または型のアレイを含みうる。ピクチャー・ブロック203の水平および垂直方向(または軸)のサンプルの量は、ピクチャー・ブロック203のサイズを定義する。
図2に示されるエンコーダ20は、ブロックごとにピクチャー201をエンコードする、たとえば、各ピクチャー・ブロック203に対してエンコードおよび予測を実行するように構成される。
残差計算ユニット204は、ピクチャー・ブロック203および予測ブロック265(予測ブロック265についてのさらなる詳細は後述)に基づいて、たとえばピクチャー・ブロック203のサンプル値から予測ブロック265のサンプル値をサンプルごとに(ピクセルごとに)減算することにより、残差ブロック205を算出し、サンプル領域における残差ブロック205を得るように構成される。
変換処理ユニット206は、変換、たとえば離散コサイン変換(discrete cosine transform、DCT)または離散サイン変換(discrete sine transform、DST)を残差ブロック205のサンプル値に適用し、変換領域における変換係数207を得るように構成される。変換係数207は、変換残差係数とも称され、変換領域内の残差ブロック205を表わす。
変換処理ユニット206は、HEVC/H.265で指定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は通例、ある因子に基づいてスケーリングされる。順変換と逆変換を用いて処理される残差ブロックのノルムを保存するために、変換プロセスの一部として追加的なスケール因子が適用される。スケール因子は、通例、いくつかの制約条件に基づいて選択される。たとえば、スケール因子は、シフト演算、変換係数のビット深さ、および正確さと実装コストの間のトレードオフのために、2の冪乗である。たとえば、デコーダ30側の逆変換処理ユニット212による逆変換(およびたとえばエンコーダ20側の逆変換処理ユニット212による対応する逆変換)のために、特定のスケール因子が指定され、対応して、エンコーダ20側の変換処理ユニット206による順変換のために対応するスケール因子が指定されてもよい。
量子化ユニット208は、たとえばスカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化し、量子化された変換係数209を得るように構成される。量子化された変換係数209は、量子化された残差係数209とも呼ばれる。量子化プロセスは、変換係数207の一部または全部に関連するビット深さを低減することができる。たとえば、nビット変換係数は、量子化の間にmビット変換係数に丸められてもよい。ここで、nはmより大きい。量子化度は、量子化パラメータ(quantization parameter、QP)を調整することによって修正されうる。たとえば、スカラー量子化のために、より細かいまたはより粗い量子化を達成するために、異なるスケールが適用されうる。より小さな量子化ステップ・サイズはより細かい量子化に対応し、より大きな量子化ステップ・サイズはより粗い量子化に対応する。適切な量子化ステップ・サイズは、量子化パラメータ(quantization parameter、QP)によって示されてもよい。たとえば、量子化パラメータは、適切な量子化ステップ・サイズのあらかじめ定義された集合に対するインデックスであってもよい。たとえば、より小さな量子化パラメータがより細かい量子化(より小さな量子化ステップ・サイズ)に対応してもよく、より大きな量子化パラメータがより粗い量子化(より大きな量子化ステップ・サイズ)に対応してもよく、その逆も可能である。量子化は、量子化ステップ・サイズによる除算と、たとえば、逆量子化ユニット210によって実行される対応する量子化または逆量子化とを含んでいてもよく、または量子化ステップ・サイズによる乗算を含んでいてもよい。HEVCなどのいくつかの規格による実施形態においては、量子化パラメータが、量子化ステップ・サイズを決定するために使用されてもよい。一般に、量子化ステップ・サイズは、除算を含む式の固定点近似を使用することによって、量子化パラメータに基づいて計算されうる。量子化ステップ・サイズおよび量子化パラメータのための式の固定点近似において使用されるスケールのため残差ブロックのノルムが修正されうる場合、残差ブロックのノルムを復元するために、量子化および脱量子化のために追加的なスケール因子が導入されてもよい。ある例示的な実装では、逆変換のスケールが、脱量子化のスケールと組み合わされてもよい。あるいはまた、カスタマイズされた量子化テーブルが使用されてもよく、エンコーダからデコーダへ、たとえばビットストリームにおいて、信号伝達されてもよい。量子化は損失のある演算であり、より大きな量子化ステップ・サイズがより高い損失を示す。
逆量子化ユニット210は、脱量子化された係数211を得るために量子化ユニット208の逆量子化を量子化係数に適用する、たとえば、量子化ユニット208と同じ量子化ステップ・サイズに基づいて、または同じ量子化ステップ・サイズを使用して、量子化ユニット208によって適用された量子化スキームの逆数を適用するように構成される。脱量子化された係数211は、脱量子化された残差係数211と称されてもよく、変換係数207に対応するが、脱量子化された係数211は、通例、量子化によって引き起こされる損失のため、変換係数とは異なる。
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、たとえば、逆離散コサイン変換(discrete cosine transform、DCT)または逆離散サイン変換(discrete sine transform、DST)を適用して、サンプル領域における逆変換ブロック213を得るように構成される。逆変換ブロック213は、逆変換脱量子化ブロック213または逆変換残差ブロック213と称されることもある。
再構成ユニット214(たとえば、加算器214)は、たとえば、再構成された残差ブロック213のサンプル値および予測ブロック265のサンプル値を加算することによって、逆変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加算して、サンプル領域における再構成されたブロック215を得るように構成される。
任意的に、たとえばライン・バッファ216のバッファ・ユニット216(または簡単に「バッファ」216と称される)は、たとえばイントラ予測のために、再構成されたブロック215および対応するサンプル値をバッファリングまたは記憶するように構成される。他の実施形態では、エンコーダは、バッファ・ユニット216に記憶されたフィルタリングされていない再構成されたブロックおよび/または対応するサンプル値を、任意の型の推定および/または予測、たとえばイントラ予測のために使用するように構成されてもよい。
たとえば、ある実施形態では、エンコーダ20は、バッファ・ユニット216が、イントラ予測ユニット254のために使用される再構成ブロック215だけでなく、ループ・フィルタ・ユニット220のために使用される再構成されたブロック(図2には示されていない)をも記憶するように構成されるように、および/またはたとえばバッファ・ユニット216およびデコード・ピクチャー・バッファ230が1つのバッファを形成するように、構成されてもよい。別の実施形態では、フィルタリングされたブロック221および/またはデコード・ピクチャー・バッファ230からのブロックもしくはサンプル(図2には示されていない)が、イントラ予測ユニット254のための入力または基礎として使用される。
ループ・フィルタ・ユニット220(または簡単に「ループ・フィルタ」220と称される)は、ピクセル遷移を平滑化する、またはビデオ品質を改善するために、再構成されたブロック215をフィルタリングして、フィルタリングされたブロック221を得るように構成される。ループ・フィルタ・ユニット220は、ブロック化解除フィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または別のフィルタ、たとえば、バイラテラルフィルタ、適応ループ・フィルタ(adaptive loop filter、ALF)、鮮鋭化または平滑化フィルタ、または協働フィルタなどの一つまたは複数のループ・フィルタを表わすことが意図されている。ループ・フィルタ・ユニット220は、図2ではループ内フィルタとして示されているが、別の構成では、ループ・フィルタ・ユニット220は、ポスト・フィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構成されたブロック221と称されることもある。デコード・ピクチャー・バッファ230は、ループ・フィルタ・ユニット220が再構成されたエンコードされたブロックに対してフィルタリング動作を実行した後に、再構成されたエンコードされたブロックを記憶してもよい。
ある実施形態では、エンコーダ20(対応して、ループ・フィルタ・ユニット220)は、直接、またはたとえば、エントロピー符号化ユニット270または任意の他のエントロピー符号化ユニットによって実行されるエントロピー符号化の後に、ループ・フィルタ・パラメータ(たとえば、サンプル適応オフセット情報)を出力するように構成されてもよい。それにより、デコーダ30は同じループ・フィルタ・パラメータを受領し、デコードのために適用することができる。
デコード・ピクチャー・バッファ(decoded picture buffer、DPB)230は、エンコーダ20によるビデオ・データ・エンコードにおいて使用するために参照ピクチャー・データを記憶する参照ピクチャー・メモリであってもよい。DPB 230は、動的ランダムアクセスメモリ(dynamic random access memory、DRAM)(同期DRAM(synchronous DRAM、SDRAM)、磁気抵抗RAM(magnetoresistive RAM、MRAM)、または抵抗RAM(resistive RAM、RRAM)を含む)、または他の型のメモリデバイスのような多様なメモリデバイスのうちの任意の1つを含むことができる。DPB 230およびバッファ216は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。一例では、デコード・ピクチャー・バッファ(decoded picture buffer, DPB)230は、フィルタリングされたブロック221を記憶するように構成される。デコード・ピクチャー・バッファ230は、さらに、他の以前にフィルタリングされたブロック、たとえば同じ現在のピクチャーの、または異なるピクチャー、たとえば、以前に再構成されたピクチャーの以前に再構成されフィルタリングされたブロック221を記憶するように構成されてもよく、たとえば、完全な、以前に再構成された、すなわちデコードされたピクチャー(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在のピクチャー(および対応する参照ブロックおよびサンプル)を、たとえばインター予測のために提供してもよい。一例では、再構成されたブロック215がループ内フィルタリングなしで再構成される場合、デコード・ピクチャー・バッファ(decoded picture buffer、DPB)230は、再構成されたブロック215を記憶するように構成される。
予測処理ユニット260は、ブロック予測処理ユニット260とも称され、予測ブロック203(現在のピクチャー201の現在のピクチャー・ブロック203)と、再構成されたピクチャー・データ、たとえば、バッファ216からの同じ(現在の)ピクチャーの参照サンプル、および/または、デコード・ピクチャー・バッファ230からの一つまたは複数の以前にデコードされたピクチャーの参照ピクチャー・データ231とを受領または取得し、そのようなデータを予測のために処理する、すなわち、インター予測ブロック245またはイントラ予測ブロック255でありうる予測ブロック265を提供するように構成される。
モード選択ユニット262は、予測モード(たとえば、イントラまたはインター予測モード)および/または予測ブロック265として使用される対応する予測ブロック245または255を、残差ブロック205の計算および再構成されたブロック215の再構成のために選択するように構成されてもよい。
ある実施形態では、モード選択ユニット262は、予測モードを(たとえば、予測処理ユニット260によってサポートされる予測モードから)選択するように構成されてもよく、ここで、該予測モードは、最良の一致もしくは最小の残差(最小の残差は、伝送または記憶のためのよりよい圧縮を意味する)を提供するか、または最小の信号伝達オーバヘッド(最小の信号伝達オーバヘッドは、伝送または記憶のためのよりよい圧縮を意味する)を提供するか、または両方を考慮するまたはバランスさせるものである。モード選択ユニット262は、レート‐歪み最適化(rate distortion optimization、RDO)に基づいて予測モードを決定する、すなわち、最小のレート‐歪み最適化を提供する予測モードを選択するか、または関連するレート歪みが少なくともある予測モード選択基準を満たす予測モードを選択するように構成されてもよい。
以下は、エンコーダ20の例によって実行される予測処理(たとえば、予測処理ユニット260によって実行される)およびモード選択(たとえば、モード選択ひゅにっと262によって実行される)について詳細に記述する。
上記のように、エンコーダ20は、(所定の)予測モードの集合から最適または最善な予測モードを決定または選択するように構成される。予測モードの集合は、たとえば、イントラ予測モードおよび/またはインター予測モードを含んでいてもよい。
イントラ予測モードの集合は、35の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モードまたはH.265で定義されるような方向性モードを含んでいてもよく、または67の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モード、または開発中のH.266で定義されるような方向性モードを含んでいてもよい。
ある可能な実装では、インター予測モードの集合は、利用可能な参照ピクチャー(すなわち、たとえば、上述したように、DPB 230に記憶された少なくともいくつかのデコードされたピクチャー)および他のインター予測パラメータに依存し、たとえば、最適な一致する参照ブロックをさがすために参照ピクチャーの全体が使用されるか、参照ピクチャーの一部のみ、たとえば、現在ブロックの領域のまわりの探索窓領域が使用されるかに依存し、および/または、たとえば、半ピクセルおよび/または四分の一ピクセル補間などのピクセル補間が適用されるかどうかに依存する。インター予測モードの集合は、たとえば、先進動きベクトル予測(Advanced Motion Vector Prediction、AMVP)モードおよびマージ(merge)モードを含んでいてもよい。特定の実装の間、インター予測モードの集合は、本発明の実施形態において改善される、制御点に基づくAMVPモードおよび制御点に基づくマージモードを含んでいてもよい。一例では、イントラ予測ユニット254は、以下に記載されるインター予測技術の任意の組み合わせを実行するように構成されてもよい。
前述の予測モードに加えて、スキップモードおよび/または直接モードも、本発明の実施形態において適用されうる。
予測処理ユニット260は、さらに、たとえば、四分木(quadtree、QT)分割、二分木(binary tree、BT)分割、三分木(ternary tree、TT)分割、またはそれらの任意の組み合わせを逐次反復的に使用することによりピクチャー・ブロック203をより小さなブロック・パーティションまたはサブブロックに分割し、たとえば、ブロック・パーティションまたはサブブロックのそれぞれに対して予測を実行するように構成されてもよい。モード選択は、分割されたピクチャー・ブロック203のツリー構造の選択と、ブロック・パーティションまたはサブブロックのそれぞれに使用される予測モードの選択とを含む。
インター予測ユニット244は、動き推定(motion estimation、ME)ユニット(図2には示さず)と、動き補償(motion compensation、MC)ユニット(図2には示さず)とを含んでいてもよい。動き推定ユニットは、ピクチャー・ブロック203(現在のピクチャー201の現在のピクチャー・ブロック203)およびデコードされたピクチャー231、または少なくとも一つまたは複数の以前に再構成されたブロック、たとえば、他の/異なる以前にデコードされたピクチャー231の一つまたは複数の再構成されたブロックを、動き推定のために受領または取得するように構成される。たとえば、ビデオ・シーケンスは、現在のピクチャーおよび以前にデコードされたピクチャー231を含んでいてもよく、あるいは換言すれば、現在のピクチャーおよび以前にデコードされたピクチャー231は、ビデオ・シーケンスを形成するピクチャーのシーケンスの一部であってもよく、または該ピクチャーのシーケンスを形成してもよい。
たとえば、エンコーダ20は、同じピクチャーまたは複数の他のピクチャーにおける異なるピクチャーの複数の参照ブロックから参照ブロックを選択し、動き推定ユニット(図2には示されていない)のために参照ピクチャーを提供し、および/または参照ブロックの位置(座標XおよびY)と現在ブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして提供するように構成されてもよい。オフセットは、動きベクトル(motion vector、MV)とも呼ばれる。
動き補償ユニットは、インター予測パラメータを取得し、該インター予測パラメータに基づいて、または、それを使用して、インター予測を実行して、インター予測ブロック245を得るように構成される。動き補償ユニット(図2には示されていない)によって実行される動き補償は、動き推定を通じて決定された動き/ブロック・ベクトルに基づいて(可能性としてはサブピクセル精度で補間を実行して)、予測ブロックを取ってくるまたは生成することを含んでいてもよい。補間フィルタリングは、既知のピクセル・サンプルから追加的なピクセル・サンプルを生成することができ、それにより、ピクチャー・ブロックをエンコードするために使用されうる候補予測ブロックの量を潜在的に増加させることができる。現在のピクチャー・ブロックのPUについての動きベクトルを受領すると、動き補償ユニット246は、動きベクトルが指す予測ブロックを、参照ピクチャー・リスト内で位置特定することができる。動き補償ユニット246は、デコーダ30によってビデオ・スライスのピクチャー・ブロックをデコードするために、ブロックおよびビデオ・スライスに関連するシンタックス要素をさらに生成することができる。
具体的には、インター予測ユニット244は、該シンタックス要素をエントロピー符号化ユニット270に送信してもよく、シンタックス要素は、インター予測パラメータ(複数のインター予測モードをたどった後の、現在ブロックの予測のために使用されるインター予測モードの選択の指示情報など)を含む。ある可能な応用シナリオにおいて、ただ一つのインター予測モードがある場合、インター予測パラメータは、代替的に、シンタックス要素において担持されなくてもよい。この場合、デコーダ30は、デフォルト予測モードでデコードを直接実行してもよい。インター予測ユニット244は、インター予測技術の任意の組み合わせを実行するように構成されてもよいことが理解されうる。
イントラ予測ユニット254は、たとえば、ピクチャー・ブロック203(現在のピクチャー・ブロック)と、同じピクチャーの一つまたは複数の以前に再構成されたブロック、たとえば再構成された近傍ブロックとをイントラ推定のために取得、たとえば受領するように構成される。たとえば、エンコーダ20は、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成されてもよい。
ある実施形態では、エンコーダ20は、ある最適化基準に従って、たとえば最小残差(たとえば、イントラ予測モードが現在のピクチャー・ブロック203に最も類似する予測ブロック255を提供する)または最小レート歪みに基づいて、イントラ予測モードを選択するように構成されてもよい。
イントラ予測ユニット254はさらに、たとえば選択されたイントラ予測モードにおけるイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するように構成される。いずれにせよ、あるブロックについてイントラ予測モードを選択した後、イントラ予測ユニット254は、さらに、イントラ予測パラメータ、すなわちそのブロックについての選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット270のために提供するように構成される。一例では、イントラ予測ユニット254は、イントラ予測技術の任意の組み合わせを実行するように構成されてもよい。
具体的には、イントラ予測ユニット254は、シンタックス要素をエントロピー符号化ユニット270に送信してもよく、シンタックス要素は、イントラ予測パラメータ(たとえば、複数のイントラ予測モードをたどった後の、現在ブロックの予測のために使用されるイントラ予測モードの選択の指示情報)を含む。ある可能な応用シナリオでは、ただ1つのイントラ予測モードが存在する場合、イントラ予測パラメータは、代替的に、シンタックス要素において担持されなくてもよい。この場合、デコーダ30は、デフォルト予測モードでデコードを直接実行してもよい。
エントロピー符号化ユニット270は、エントロピー符号化アルゴリズムまたはスキーム(たとえば、可変長符号化(variable-length coding、VLC)スキーム、コンテキスト適応VLC(context-adaptive VLC、CAVLC)スキーム、算術符号化スキーム、コンテキスト適応バイナリ算術符号化(context-adaptive binary arithmetic coding、CABAC)、コンテキスト適応バイナリ演算符号化(syntax-based context-adaptive binary arithmetic coding、SBAC)、確率区間分割エントロピー(probability interval partitioning entropy、PIPE)符号化、または他のエントロピー符号化方法論もしくは技法)を、量子化された残差係数209、インター予測パラメータ、イントラ予測パラメータ、および/またはループ・フィルタ・パラメータのうちの1つまたは全部に対して適用する(または適用するのを避ける)ことで、出力272を通じて、たとえばエンコードされたビットストリーム21の形で出力されうるエンコードされたピクチャー・データ21を得るように構成される。エンコードされたビットストリームは、ビデオ・デコーダ30に送信されてもよいし、後の送信またはビデオ・デコーダ30による取り出しのためにアーカイブされてもよい。エントロピー符号化ユニット270は、エンコードされている現在のビデオ・スライスのために別のシンタックス要素をエントロピー符号化するようにさらに構成されてもよい。
ビデオ・エンコーダ20の別の構造的変形が、ビデオ・ストリームをエンコードするために使用できる。たとえば、非変換ベースのエンコーダ20は、いくつかのブロックまたはフレームについて、変換処理ユニット206なしで残差信号を直接量子化してもよい。別の実装では、エンコーダ20は、量子化ユニット208および逆量子化ユニット210を単一のユニットに組み合わせていてもよい。
具体的には、本発明の実施形態において、エンコーダ20は、以下の実施形態におけるアフィン動きモデルに基づく動きベクトル予測方法を実装するように構成されてもよい。
図3は、本発明のある実施形態を実装するためのデコーダ30の一例の概略/概念ブロック図である。ビデオ・デコーダ30は、たとえばエンコーダ20によってエンコードされた、エンコードされたピクチャー・データ(たとえば、エンコードされたビットストリーム)21を受領して、デコードされたピクチャー331を得るように構成される。デコード・プロセスにおいて、ビデオ・デコーダ30は、ビデオ・エンコーダ20からビデオ・データ、たとえば、エンコードされたビデオ・スライスのピクチャー・ブロックおよび関連するシンタックス要素を表わすエンコードされたビデオ・ビットストリームを受領する。
図3の例では、デコーダ30は、エントロピー復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(たとえば、加算器314)、バッファ316、ループ・フィルタ320、デコード・ピクチャー・バッファ330、予測処理ユニット360を含む。予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354と、モード選択ユニット362とを含んでいてもよい。いくつかの例では、ビデオ・デコーダ30は、図2のビデオ・エンコーダ20に関して述べたエンコード・プロセスとほぼ逆のデコード・プロセスを実行してもよい。
エントロピー復号ユニット304は、エンコードされたピクチャー・データ21に対してエントロピー復号を実行して、たとえば、量子化された係数309および/またはデコードされたエンコード・パラメータ(図3には示されていない)、たとえばインター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータ、および/または別のシンタックス要素(デコードされる)のうちのいずれかまたは全部を得るように構成される。エントロピー復号ユニット304は、さらに、インター予測パラメータ、イントラ予測パラメータ、および/または別のシンタックス要素を予測処理ユニット360に転送するように構成される。ビデオ・デコーダ30は、ビデオ・スライス・レベルおよび/またはビデオ・ブロック・レベルでシンタックス要素を受領しうる。
逆量子化ユニット310は、逆量子化ユニット210と同じ機能を有してもよい。逆変換処理ユニット312は、逆変換処理ユニット212と同じ機能を有してもよい。再構成ユニット314は、再構成ユニット214と同じ機能を有してもよい。バッファ316は、バッファ216と同じ機能を有してもよい。ループ・フィルタ320は、ループ・フィルタ220と同じ機能を有してもよい。デコード・ピクチャー・バッファ330は、デコード・ピクチャー・バッファ230と同じ機能を有してもよい。
予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354とを含んでいてもよい。インター予測ユニット344は、機能においてインター予測ユニット244に類似していてもよく、イントラ予測ユニット354は、機能においてイントラ予測ユニット254に類似していてもよい。予測処理ユニット360は、通例、ブロック予測を実行し、および/またはエンコードされたデータ21から予測ブロック365を取得し、たとえばエントロピー復号ユニット304から、予測関連パラメータおよび/または選択された予測モードに関する情報を(明示的または暗示的に)受領または取得するように構成される。
ビデオ・スライスがイントラ・エンコードされた(I)スライス中にエンコードされている場合、予測処理ユニット360のイントラ予測ユニット354は、信号伝達されたイントラ予測モードと、現在のフレームまたはピクチャーの以前にデコードされたブロックのデータとに基づいて、現在のビデオ・スライスのピクチャー・ブロックについての予測ブロック365を生成するように構成される。ビデオ・フレームがインター・エンコードされた(すなわちBまたはP)スライス中にエンコードされている場合、予測処理ユニット360のインター予測ユニット344(たとえば、動き補償ユニット)は、動きベクトルおよびエントロピー復号ユニット304から受領される前記別のシンタックス要素に基づいて、現在のビデオ・スライスのビデオ・ブロックについて予測ブロック365を生成するように構成される。インター予測については、予測ブロックは、1つの参照ピクチャー・リスト内の参照ピクチャーの1つから生成されてもよい。ビデオ・デコーダ30は、DPB 330に記憶された参照ピクチャーに基づいてデフォルトの構築技術を使用することによって、参照フレーム・リスト:リスト0およびリスト1を構築することができる。
予測処理ユニット360は、動きベクトルおよび前記別のシンタックス要素をパースすることにより、現在のビデオ・スライスのビデオ・ブロックについての予測情報を決定し、その予測情報を用いて、デコードされている現在のビデオ・ブロックについての予測ブロックを生成するように構成される。本発明の一例では、予測処理ユニット360は、現在のビデオ・スライス内のビデオ・ブロックをデコードするために、いくつかの受領されたシンタックス要素を用いて、ビデオ・スライス内のビデオ・ブロックをエンコードするための予測モード(たとえば、イントラ予測またはインター予測)、スライスについての参照ピクチャー・リストのうちの一つまたは複数の参照ピクチャー・リストの構築情報、スライス内の各インター・エンコードされたビデオ・ブロックについての動きベクトル、スライス内の各インター・エンコードされたビデオ・ブロックのインター予測状態、およびその他の情報を判別する。本開示の別の例では、ビットストリームからビデオ・デコーダ30によって受領されるシンタックス要素は、適応パラメータセット(adaptive parameter set、APS)、シーケンスパラメータセット(sequence parameter set、SPS)、ピクチャーパラメータセット(picture parameter set、PPS)、またはスライスヘッダのうちの一つまたは複数におけるシンタックス要素を含む。
逆量子化ユニット310は、ビットストリームにおいて提供され、エントロピー復号ユニット304によって復号された量子化変換係数に対して逆量子化(すなわち、脱量子化)を実行するように構成されてもよい。逆量子化プロセスは、ビデオ・スライス内の各ビデオ・ブロックについてビデオ・エンコーダ20によって計算された量子化パラメータを使用して、適用されるべき量子化度および適用されるべき逆量子化度を決定することを含んでいてもよい。
逆変換処理ユニット312は、逆変換(たとえば、逆DCT、逆整数変換、または概念的に類似した逆変換プロセス)を変換係数に適用して、ピクセル領域における残差ブロックを生成するように構成される。
再構成ユニット314(たとえば、加算器314)は、たとえば、再構成された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによって、逆変換ブロック313(すなわち、再構成された残差ブロック313)を予測ブロック365に加算して、サンプル領域における再構成されたブロック315を得るように構成される。
ループ・フィルタ・ユニット320(符号化ループ内または符号化ループ後)は、ピクセル遷移を平滑化する、またはビデオ品質を改善するために、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を得るように構成される。一例では、ループ・フィルタ・ユニット320は、以下に記載されるフィルタリング技術の任意の組み合わせを実行するように構成されてもよい。ループ・フィルタ・ユニット320は、ブロック化解除フィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または別のフィルタ、たとえば、バイラテラルフィルタ、適応ループ・フィルタ(adaptive loop filter、ALF)、鮮鋭化または平滑化フィルタ、または協働フィルタなどの一つまたは複数のループ・フィルタを表わすことが意図されている。ループ・フィルタ・ユニット320は、図3ではループ内フィルタとして示されているが、別の構成では、ループ・フィルタ・ユニット320は、ポスト・フィルタとして実装されてもよい。
次いで、所与のフレームまたはピクチャー内のデコードされたビデオ・ブロック321が、その後の動き補償のために使用される参照ピクチャーを記憶するデコード・ピクチャー・バッファ330内に記憶される。
デコーダ30は、たとえば、ユーザーに対する提示または閲覧のために、出力332を介して、デコードされたピクチャー331を出力するように構成される。
ビデオ・デコーダ30の別の変形が、圧縮されたビットストリームをデコードするために使用されてもよい。たとえば、デコーダ30は、ループ・フィルタ・ユニット320なしで出力ビデオ・ストリームを生成してもよい。たとえば、非変換ベースのデコーダ30は、いくつかのブロックまたはフレームについて、逆変換処理ユニット312なしで、残差信号を直接、逆量子化することができる。別の実装では、ビデオ・デコーダ30は、逆量子化ユニット310と逆変換処理ユニット312とを単一のユニットに組み合わせていてもよい。
具体的には、本発明の実施形態では、デコーダ30は、以下の実施形態におけるアフィン動きモデルに基づく動きベクトル予測方法を実装するように構成される。
図4は、本発明のある実施形態によるビデオ・コーディング装置400(たとえば、ビデオ・エンコード装置400またはビデオ・デコード装置400)の概略構造図である。ビデオ・コーディング装置400は、本明細書に記載される実施形態を実装するのに好適である。ある実施形態では、ビデオ・コーディング装置400は、ビデオ・デコーダ(たとえば、図1Aのデコーダ30)またはビデオ・エンコーダ(たとえば、図1Aのエンコーダ20)であってもよい。別の実施形態では、ビデオ・コーディング装置400は、図1Aのデコーダ30または図1Aのエンコーダ20の一つまたは複数の構成要素であってもよい。
ビデオ・コーディング装置400は、データを受領するための入口ポート410および受領ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)430、データを送信するための送信ユニット(Tx)440および出口ポート450、およびデータを記憶するためのメモリ460を含む。ビデオ・コーディング装置400は、さらに、光信号または電気信号の出入りのために、入口ポート410、受領器ユニット420、送信器ユニット440、および出口ポート450に結合された光対電気変換コンポーネントおよび電気対光(EO)コンポーネントを含んでいてもよい。
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、一つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサ)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ430は、入口ポート410、受領器ユニット420、送信器ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、コーディング・モジュール470(たとえば、エンコード・モジュール470またはデコード・モジュール470)を含む。エンコード/デコード・モジュール470は、本発明の実施形態において提供される動きベクトル予測方法を実装するために、本明細書に開示される実施形態を実装する。たとえば、エンコード/デコード・モジュール470は、さまざまなコーディング動作を実装し、処理し、または提供する。よって、エンコード/デコード・モジュール470は、ビデオ・コーディング装置400の機能を実質的に改善し、ビデオ・コーディング装置400の異なる状態への変換に影響を与える。あるいはまた、エンコード/デコード・モジュール470は、メモリ460に記憶され、プロセッサ430によって実行される命令として実装される。
メモリ460は、一つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含み、オーバーフロー・データ記憶装置として使用され、プログラムが実行のために選択されたときにプログラムを記憶し、プログラム実行中に読み出される命令およびデータを記憶してもよい。メモリ460は、揮発性および/または不揮発性であってもよく、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想記憶メモリ(ternary content-addressable memory、TCAM)、および/または静的ランダムアクセスメモリ(SRAM)であってもよい。
図5は、ある例示的実施形態による、図1Aの源装置12および宛先装置14のいずれかまたは2つとして使用されうる装置500の簡略化されたブロック図である。装置500は、本願における技術を実装することができる。動きベクトル予測を実装するように構成された装置500は、複数の計算装置を含む計算システムの形であってもよく、または携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、またはデスクトップコンピュータのような単一の計算装置の形であってもよい。
装置500内のプロセッサ502は、中央処理ユニットであってもよい。代替的に、プロセッサ502は、情報を制御または処理することができる、現存するまたは将来開発される、任意の他の型の装置または複数の装置であってもよい。図に示されているように、開示された実施形態は、プロセッサ502のような単一のプロセッサを使用することによって実施されてもよいものの、複数のプロセッサを使用することによって速度および効率における利点が達成されうる。
ある実装では、装置500内のメモリ504は、読み出し専用メモリ(Read-Only Memory、ROM)デバイスまたはランダムアクセスメモリ(random access memory、RAM)デバイスであってもよい。メモリ504としては、任意の他の好適な型の記憶デバイスが使用されうる。メモリ504は、バス512を通じてプロセッサ502によってアクセスされるコードおよびデータ506を含んでいてもよい。メモリ504は、オペレーティング・システム508およびアプリケーション・プログラム510をさらに含んでいてもよい。アプリケーション・プログラム510は、プロセッサ502が本明細書に記載の方法を実行することを許容する少なくとも1つのプログラムを含む。たとえば、アプリケーション・プログラム510は、アプリケーション1からNを含んでいてもよく、アプリケーション1からNは、本明細書に記載の方法を実行するビデオ・コーディング・アプリケーションをさらに含んでいてもよい。装置500は、さらに、二次メモリ514の形で追加的なメモリを含んでいてもよい。二次メモリ514は、たとえば、モバイル計算装置とともに使用されるメモリ・カードであってもよい。ビデオ通信セッションは、大量の情報を含むことがあるので、情報は、完全または部分的に二次メモリ514に記憶され、必要に応じて、処理するためにメモリ504にロードされてもよい。
装置500は、さらに、一つまたは複数の出力装置、たとえばディスプレイ518を含んでいてもよい。一例では、ディスプレイ518は、ディスプレイを、タッチ入力を感知するように動作可能なタッチ感応性要素と組み合わせるタッチ感応性ディスプレイであってもよい。ディスプレイ518は、バス512を通じてプロセッサ502に結合されてもよい。ディスプレイ518に加えて、ユーザーが装置500をプログラムする、あるいは他の仕方で装置500を使用することを許容する別の出力装置がさらに提供されてもよく、またはディスプレイ518の代わりとして別の出力装置が提供されてもよい。出力装置がディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ(liquid crystal display、LCD)、陰極線管(cathode-ray tube、CRT)ディスプレイ、およびプラズマディスプレイまたは発光ダイオード(light-emitting diode、LED)ディスプレイ、たとえば有機LED(organic LED、有機EL)ディスプレイを含む種々の仕方で実装されうる。
装置500は、さらに、ピクチャー感知装置520を含んでいてもよく、または、これに接続されてもよい。ピクチャー感知装置520は、たとえば、ピクチャーを感知することができる、現存するまたは将来開発されるカメラまたは任意の他のピクチャー感知装置520である。ピクチャーは、たとえば、装置500を操作するユーザーの写真である。ピクチャー感知装置520は、装置500を操作するユーザーに直接対向して配置されてもよい。一例では、ピクチャー感知装置520の位置および光軸は、ピクチャー感知装置520の視野が、ディスプレイ518に隣接する領域と、該領域から見ることができるディスプレイ518とを含むように、構成されてもよい。
装置500は、さらに、音感知装置522を含んでいてもよく、またはそれに接続されてもよい。音感知装置522は、たとえば、装置500の近くで音を感知することができる、現存するまたは将来開発されるマイクロフォンまたは任意の他の音感知装置である。音感知装置522は、装置500を操作するユーザーに直接対向して配置されてもよく、ユーザーが装置500を操作するときに、音、たとえばユーザーが出す声または他の音を受領するように構成されてもよい。
装置500のプロセッサ502およびメモリ504は、図5では単一ユニットに統合されたものとして示されているが、代替的に、別の構成が使用されてもよい。プロセッサ502の稼働は、直接結合されることのできる複数のマシン(各マシンは一つまたは複数のプロセッサを有する)に分散されてもよく、またはローカル領域もしくは別のネットワークに分散されてもよい。メモリ504は、複数のマシンに分散されてもよい。たとえば、メモリ504は、装置500を実行する複数のマシン内のネットワークベースのメモリ(単数または複数)である。ここでは単一のバスとして示されているが、装置500のバス512は、複数のバスを含んでいてもよい。さらに、二次メモリ514は、装置500の別の構成要素に直接接続されてもよく、またはネットワークを通じてアクセスされてもよい。さらに、二次メモリ514は、単一の統合されたユニット、たとえば1つのメモリ・カード、または複数のユニット、たとえば複数のメモリ・カードを含んでいてもよい。したがって、装置500は、複数の構成で実装されうる。
本発明の実施形態における技術的解決策をよりよく理解するために、下記は、本発明の実施形態における、インター予測モード、非並進動きモデル、継承制御点動きベクトル予測方法、および構築制御点動きベクトル予測方法についてさらに述べる。
(1)インター予測モード。HEVCでは、先進動きベクトル予測(advanced motion vector prediction、AMVP)モードとマージ(merge)モードの2つのインター予測モードが使用される。
AMVPモードでは、現在ブロックの空間的または時間的に近傍のエンコードされたブロック(近傍ブロックと記される)がまずたどられる。候補動きベクトル・リスト(動き情報候補リストとも呼ばれる)が、近傍ブロックの動き情報に基づいて構築される。次いで、候補動きベクトル・リストにおいて最適な動きベクトルがレート‐歪みコストに基づいて決定され、最小のレート‐歪みコストを有する候補動き情報が、現在ブロックの動きベクトル予測子(motion vector predictor、MVP)として使用される。近傍ブロックの位置とたどる順序は、あらかじめ定義されている。レート‐歪みコストは、式(1)による計算を通じて得られる。ここで、Jはレート‐歪みコストRDコストを表わし、SADは、もとのピクセル値と、候補動きベクトル予測子を用いた動き推定を通じて得られる予測されたピクセル値との間の差分絶対値和(sum of absolute differences、SAD)であり、Rはビットレートを表わし、λはラグランジュ乗数を表わす。エンコーダ側は、候補動きベクトル・リスト内の選択された動きベクトル予測子のインデックス値と、参照フレーム・インデックス値とをデコーダ側に転送する。さらに、現在ブロックの実際の動きベクトルを得るために、MVP中心の近傍領域において動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの間の差(動きベクトル差分)をデコーダ側に転送する。
J=SAD+λR (1)
マージモードでは、まず、現在ブロックの空間的または時間的に近傍のエンコードされたブロックの動き情報に基づいて、候補動きベクトル・リストが構築される。次いで、レート‐歪みコストが計算されて、候補動きベクトル・リスト内の最適な動き情報が、現在ブロックの動き情報として決定され、候補動きベクトル・リスト内の最適な動き情報の位置のインデックス値(マージ・インデックスと記される、以下同じ)がデコーダ側に転送される。現在ブロックの空間的候補動き情報および時間的候補動き情報が図6に示される。空間的候補動き情報は、5つの空間的に近傍のブロック(A0,A1,B0,B1,B2)からである。近傍ブロックが利用可能でない(近傍ブロックが存在しない、または近傍ブロックがエンコードされていない、または近傍ブロックのために使用された予測モードがインター予測モードでない)場合は、近傍ブロックの動き情報は候補動きベクトル・リストに追加されない。現在ブロックの時間的候補動き情報は、参照フレーム内の共位置のブロックのMVが、参照フレームと現在のフレームのピクチャー順カウント(picture order count、POC)に基づいてスケーリングされた後に得られる。まず、参照フレーム内の位置Tにおけるブロックが利用可能であるかどうかが判定される。そのブロックが利用可能でない場合は、位置Cのブロックが選択される。
AMVPモードと同様に、マージモードでも、近傍ブロックの位置およびたどり順があらかじめ定義されている。加えて、近傍ブロックの位置およびたどり順は、異なるモードにおいては異なる可能性がある。
候補動きベクトル・リストがAMVPモードとマージモードの両方で維持される必要があることがわかる。新しい動き情報が候補リストに追加されるたび、その前に、リスト内にすでに同じ動き情報が存在するかどうかがまずチェックされる。同じ動き情報がリストに存在する場合、その動き情報はリストに追加されない。このチェック・プロセスは、候補動きベクトル・リストの剪定と呼ばれる。リストの剪定は、冗長なレート‐歪みコスト計算を避けるために、リスト内の同じ動き情報を避ける。
HEVCにおけるインター予測の間、符号化ブロック内のすべてのピクセルについて同じ動き情報が使用され(言い換えると、符号化ブロック内のすべてのピクセルの動きは一貫している)、次いで、その動き情報に基づいて動き補償が実行されて、符号化ブロック内のピクセルの予測された値が得られる。しかしながら、符号化ブロック内で、すべてのピクセルが同じ動き特性を有するわけではない。同じ動き情報を使用すると、不正確な動き補償予測およびより多くの残差情報を生じる可能性がある。
換言すれば、既存のビデオ・コーディング規格では、並進動きモデルに基づくブロック・マッチング動き推定が使用される。しかしながら、現実世界では、多様な動きがある。多くのオブジェクト、たとえば、回転するオブジェクト、種々の方向に回転するジェットコースター、花火、および映画におけるいくつかのスタントは、並進動きではない。これらの動くオブジェクト、特にUGCシナリオにおける動くオブジェクトが、既存のコーディング規格における並進動きモデルに基づくブロック動き補償技術を使用することによってエンコードされる場合、符号化効率は大きく影響される。よって、符号化効率をさらに改善するために非並進動きモデル、たとえばアフィン動きモデルが導入される。
これに基づいて、異なる動きモデルに関して、AMVPモードは、並進モデルベースのAMVPモードと非並進モデルベースのAMVPモードに分割されてもよく、マージモードは、並進モデルベースのマージモードと非並進動きモデルベースのマージモードに分割されてもよい。
(2)非並進動きモデル。非並進動きモデルベースの予測では、現在ブロックにおける各動き補償サブ単位の動き情報を導出するために、エンコーダ側とデコーダ側で同じ動きモデルが使用され、予測効率を改善するよう、予測ブロックを得るためには、動き補償サブ単位の動き情報に基づいて動き補償が実行される。本発明の実施形態における動き補償サブ単位は、ピクセルであってもよく、または、特定の方法による分割を通じて得られ、そのサイズがN1×N2であるピクセル・ブロックであってもよい。ここで、N1およびN2は両方とも正の整数であり、N1はN2に等しくてもよく、あるいはN2に等しくなくてもよい。
一般的な非並進動きモデルは、4パラメータのアフィン動きモデルと6パラメータのアフィン動きモデルを含み、ある可能な応用シナリオでは、8パラメータ双線形モデルもある。記述は、下記で別個に与えられる。
4パラメータのアフィン動きモデルは次式(2)に示される:
4パラメータのアフィン動きモデルは、2つのピクセルの動きベクトルおよび現在ブロックの左上ピクセルに対する該2つのピクセルの座標によって表現されうる。動きモデル・パラメータを表現するために使用されるピクセルは、制御点と呼ばれる。左上隅(0,0)と右上隅(W,0)のピクセルが制御点として使用される場合、現在ブロックの左上隅と右上隅の制御点の動きベクトル(vx0,vy0)および(vx1,vy1)がまず決定される。次いで、現在ブロックの各動き補償サブ単位の動き情報が次式(3)により得られる。ここで、(x,y)は、現在ブロックの左上ピクセルに対する動き補償サブ単位の座標であり、Wは、現在ブロックの幅を表わす。
6パラメータのアフィン動きモデルは次式(4)に示される:
6パラメータのアフィン動きモデルは、3つのピクセルの動きベクトルおよび現在ブロックの左上ピクセルに対する該3つのピクセルの座標によって表現されうる。左上隅(0,0)、右上隅(W,0)、左下隅(0,H)のピクセルが制御点として使用される場合、現在ブロックの左上隅、右上隅、左下隅の制御点の動きベクトル(vx0,vy0)、(vx1,vy1)、(vx2,vy2)がまず決定される。次いで、現在ブロックの各動き補償サブ単位の動き情報が次式(5)により得られる。ここで、(x,y)は、現在ブロックの左上ピクセルに対する動き補償サブ単位の座標であり、WおよびHは、それぞれ現在ブロックの幅おいよび高さを表わす。
8パラメータの双線形モデルは次式(6)に示される:
8パラメータの双線形モデルは、4つのピクセルの動きベクトルおよび現在符号化ブロックの左上ピクセルに対する該4つのピクセルの座標によって表現されうる。左上隅(0,0)、右上隅(W,0)、左下隅(0,H)、右下隅(W,H)のピクセルが制御点として使用される場合、現在符号化ブロックの左上隅、右上隅、左下隅、右下隅の制御点の動きベクトル(vx0,vy0)、(vx1,vy1)、(vx2,vy2)、(vx3,vy3)がまず決定される。次いで、現在符号化ブロックの各動き補償サブ単位の動き情報が次式(7)により得られる。ここで、(x,y)は、現在符号化ブロックの左上ピクセルに対する動き補償サブ単位の座標であり、WおよびHは、それぞれ現在符号化ブロックの幅おいよび高さを表わす。
アフィン動きモデルを用いて予測される符号化ブロックは、アフィン符号化ブロックと称されることもある。以上の説明から、アフィン動きモデルは、アフィン符号化ブロックの制御点の動き情報に直接関連していることがわかる。
通例、アフィン符号化ブロックの制御点の動き情報は、アフィン動きモデルベースのAMVPモードまたはアフィン動きモデルベースのマージモードで得られてもよい。また、アフィン動きモデルベースのAMVPモードまたはアフィン動きモデルベースのマージモードでは、継承制御点動きベクトル予測方法または構築制御点動きベクトル予測方法により、現在符号化ブロックの制御点の動き情報が得られてもよい。下記は、これら2つの方法についてさらに述べる。
(3)継承制御点動きベクトル予測方法。継承制御点動きベクトル予測方法においては、現在ブロックの候補制御点動きベクトルは、現在ブロックの近傍のエンコードされたアフィン符号化ブロックの動きモデルを用いて決定される。
図7に示される現在ブロックが例として用いられる。現在ブロックの近傍位置のブロックが、指定された順序、たとえばA1→B1→B0→A0→B2の順序でたどられ、現在ブロックの近傍位置のブロックが位置するアフィン符号化ブロックを見出し、該アフィン符号化ブロックの制御点の動き情報を得る。さらに、アフィン符号化ブロックの制御点の動き情報に基づいて構築された動きモデルを用いて、現在ブロックについての制御点動きベクトル(マージモードの場合)または制御点動きベクトル予測子(AMVPモードの場合)が導出される。A1→B1→B0→A0→B2の順序は単に例として使用されている。他の組み合わせの順序も、本発明の実施形態に適用可能である。さらに、近傍位置のブロックは、A1、B1、B0、A0、およびB2に限定されない。近傍位置のブロックは、ピクセルであってもよく、または、特定の方法に従った分割を通じて得られる、事前設定サイズのピクセル・ブロック、たとえば4×4ピクセル・ブロック、4×2ピクセル・ブロック、または別のサイズのピクセル・ブロックであってもよい。これは限定されない。アフィン符号化ブロックは、現在ブロックの近傍であり、エンコード・フェーズにおいてアフィン動きモデルを使用することによって予測されるエンコードされたブロックである(これは、近傍アフィン符号化ブロックと略称されることもある)。
下記は、図7に示されるA1を例として用いて、現在ブロックの候補制御点動きベクトルを決定するプロセスを記述する。他の事例は類推により導き出される。
A1が位置する符号化ブロックが4パラメータのアフィン符号化ブロックである(すなわち、アフィン符号化ブロックは4パラメータのアフィン動きモデルを用いて予測される)場合、アフィン符号化ブロックの左上隅(x4,y4)の動きベクトル(vx4,vy4)およびアフィン符号化ブロックの右上隅(x5,y5)の動きベクトル(vx5,vy5)が得られる。
次いで、現在アフィン符号化ブロックの左上隅(x0,y0)の動きベクトル(vx0,vy0)が、次式(8)による計算を通じて得られる。
現在アフィン符号化ブロックの右上隅(x1,y1)の動きベクトル(vx1,vy1)は、次式(9)による計算を通じて得られる。
A1が位置するアフィン符号化ブロックに基づいて得られる現在ブロックの左上隅(x0,y0)の動きベクトル(vx0,vy0)と、現在ブロックの右上隅(x1,y1)の動きベクトル(vx1,vy1)との組み合わせが、現在ブロックの候補制御点動きベクトルである。
A1が位置する符号化ブロックが6パラメータのアフィン符号化ブロックである(すなわち、アフィン符号化ブロックは6パラメータのアフィン動きモデルを用いて予測される)場合、アフィン符号化ブロックの左上隅(x4,y4)の動きベクトル(vx4,vy4)、アフィン符号化ブロックの右上隅(x5,y5)の動きベクトル(vx5,vy5)、アフィン符号化ブロックの左下隅(x6,y6)の動きベクトル(vx6,vy6)が得られる。
次いで、現在ブロックの左上隅(x0,y0)の動きベクトル(vx0,vy0)が、次式(10)による計算を通じて得られる。
現在ブロックの右上隅(x1,y1)の動きベクトル(vx1,vy1)は、次式(11)による計算を通じて得られる。
現在ブロックの左下隅(x2,y2)の動きベクトル(vx2,vy2)は、次式(12)による計算を通じて得られる。
A1が位置するアフィン符号化ブロックに基づいて得られる現在ブロックの左上隅(x0,y0)の動きベクトル(vx0,vy0)と、現在ブロックの右上隅(x1,y1)の動きベクトル(vx1,vy1)と、現在ブロックの左下隅(x2,y2)の動きベクトル(vx2,vy2)との組み合わせが、現在ブロックの候補制御点動きベクトルである。
別の動きモデル、候補位置、および探索およびたどり順序も、本発明の実施形態に適用可能であることを注意しておくべきである。詳細は、本発明の実施形態において記載しない。
他の制御点を使用することによって近傍符号化ブロックおよび現在符号化ブロックの動きモデルを表現する方法も、本発明の実施形態に適用可能であることを注意しておくべきである。詳細は本明細書には記載しない。
(4)構築制御点動きベクトル(constructed control point motion vector)予測方法。構築制御点動きベクトル予測方法では、現在ブロックの制御点の近傍のエンコードされたブロックの動きベクトルが組み合わされ現在アフィン符号化ブロックの制御点の動きベクトルにされ、近傍のエンコードされたブロックがアフィン符号化ブロックであるかどうかを考慮する必要はない。異なる予測モード(アフィン動きモデルベースのAMVPモードとアフィン動きモデルベースのマージモード)における構築制御点動きベクトル予測方法は異なっており、以下に別個に記載される。
まず、アフィン動きモデルベースのAMVPモードに基づく構築制御点動きベクトル予測方法が記述される。
図8は、現在符号化ブロックの近傍のエンコードされたブロックの動き情報を使用することによって、現在ブロックの左上隅および右上隅の動きベクトルを決定するための、構築制御点動きベクトル予測方法を記述するための例として使用される。図8は単に一例であることを注意しておくべきである。
現在ブロックが4パラメータのアフィン符号化ブロックである(すなわち、現在ブロックが4パラメータのアフィン動きモデルを用いて予測される)場合、左上隅の近傍のエンコードされたブロックA2、B2またはB3の動きベクトルが、現在ブロックの左上隅の動きベクトルの候補動きベクトルとして使用されてもよく、右上隅の近傍のエンコードされたブロックB1またはB0の動きベクトルが、現在ブロックの右上隅の動きベクトルの候補動きベクトルとして使用されてもよい。左上隅および右上隅の候補動きベクトルは、複数の2タプルを構成するように組み合わされる。2タプルに含まれる2つのエンコードされたブロックの動きベクトルは、現在ブロックの候補制御点動きベクトルとして使用されてもよい。複数の2タプルについては、次の(13A)を参照されたい。
ここで、vA2はA2の動きベクトルを表わし、vB1はB1の動きベクトルを表わし、vB0はB0の動きベクトルを表わし、vB2はB2の動きベクトルを表わし、vB3はB3の動きベクトルを表わす。
現在ブロックが6パラメータのアフィン符号化ブロックである(すなわち、現在ブロックが6パラメータのアフィン動きモデルを用いて予測される)場合、左上隅の近傍のエンコードされたブロックA2、B2またはB3の動きベクトルが、現在ブロックの左上隅の動きベクトルの候補動きベクトルとして使用されてもよく、右上隅の近傍のエンコードされたブロックB1またはB0の動きベクトルが、現在ブロックの右上隅の動きベクトルの候補動きベクトルとして使用されてもよく、左下隅の近傍のエンコードされたブロックA0またはA1の動きベクトルが、現在ブロックの左下隅の動きベクトルの候補動きベクトルとして使用されてもよい。左上隅、右上隅、左下隅の候補動きベクトルは、複数のトリプレットを構成するように組み合わされる。トリプレットに含まれる3つのエンコードされたブロックの動きベクトルは、現在ブロックの候補制御点動きベクトルとして使用されてもよい。複数のトリプレットについては、次の(13B)(13C)を参照されたい。
ここで、vA2はA2の動きベクトルを表わし、vB1はB1の動きベクトルを表わし、vB0はB0の動きベクトルを表わし、vB2はB2の動きベクトルを表わし、vB3はB3の動きベクトルを表わし、vA0はA0の動きベクトルを表わし、vA1はA1の動きベクトルを表わす。
別の制御点動きベクトル組み合わせ方法も本発明の実施形態に適用可能であることを注意しておくべきである。詳細は本明細書には記載されない。
他の制御点を使用することによって近傍の符号化ブロックおよび現在符号化ブロックの動きモデルを表現する方法も、本発明の実施形態に適用可能であることに注意しておくべきである。詳細は本明細書には記載されない。
アフィン動きモデルベースのマージモードに基づく、構築される制御点動きベクトル予測方法が下記に記載される。
図9は、現在符号化ブロックの近傍のエンコードされたブロックの動き情報を用いて、現在ブロックの左上隅および右上隅の動きベクトルを決定するための、構築制御点動きベクトル予測方法を記述するための例として用いられる。図9は単に一例であることを注意しておくべきである。
図9に示されるように、CPk(k=1、2、3、または4)は、k番目の制御点を表わす。A0、A1、A2、B0、B1、B2、およびB3は、現在ブロックの空間的な近傍位置であり、CP1、CP2、またはCP3を予測するために使用される。Tは現在ブロックの時間的な近傍位置であり、CP4を予測するために使用される。CP1、CP2、CP3、CP4の座標はそれぞれ(0,0)、(W,0)、(H,0)、(W,H)であるとする。ここで、WおよびHは現在ブロックの幅および高さを表わす。この場合、現在ブロックの各制御点の動き情報は以下の順序で取得される。
1. CP1について、チェック順序は、B2→A2→B3である。B2が利用可能であれば、B2の動き情報が使用される。B2が利用可能でない場合は、A2およびB3がチェックされる。3つの位置すべての動き情報が利用可能でない場合、CP1の動き情報は取得できない。
2. CP2について、チェック順序はB0→B1である。B0が利用可能である場合、B0の動き情報がCP2のために使用される。B0が利用可能でない場合は、B1がチェックされる。両方の位置の動き情報が利用可能でない場合は、CP2の動き情報は取得できない。
3. CP3については、チェック順序はA0→A1である。
4. CP4については、Tの動き情報が使用される。
ここで、Xが利用可能であるということは、位置Xにあるブロック(XはA0、A1、A2、B0、B1、B2、B3、またはT)がすでにエンコードされており、そのブロックについてインター予測モードが用いられていることを意味する。それ以外の場合、場所Xは利用可能ではない。制御点動き情報を得るための別の方法もまた、本発明の実施形態に適用可能であることを注意しておくべきである。詳細は本明細書には記載しない。
次いで、現在ブロックの制御点動き情報が組み合わされて、構築された制御点動き情報を得る。
4パラメータのアフィン動きモデルが現在ブロックのために使用される場合、4パラメータのアフィン動きモデルを構築するために、現在ブロックの2つの制御点の動き情報が組み合わされて2タプルを構成する。2つの制御点の組み合わせは、{CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}でありうる。たとえば、制御点CP1およびCP2を含む2タプルを使用して構築された4パラメータのアフィン動きモデルは、Affine(CP1,CP2)と記されてもよい。
6パラメータのアフィン動きモデルが現在ブロックのために使用される場合、6パラメータのアフィン動きモデルを構築するために、現在ブロックの3つの制御点の動き情報が組み合わされて、トリプレットを構成する。3つの制御点の組み合わせは、{CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}でありうる。たとえば、制御点CP1、CP2、およびCP3を含むトリプレットを使用して構築される6パラメータのアフィン動きモデルは、Affine(CP1,CP2,CP3)と記されてもよい。
8パラメータ双線形モデルが現在ブロックのために使用される場合、8パラメータ双線形モデルを構築するために、現在ブロックの4つの制御点の動き情報が組み合わされて4つ組を構成する。制御点CP1、CP2、CP3、およびCP4を含む4つ組を用いて構築された8パラメータ双線形モデルは、Bilinear(CP1,CP2,CP3,CP4)と記される。
本発明の実施形態では、記述の簡単のために、2つの制御点(または2つのエンコードされたブロック)の動き情報の組み合わせは、短く2タプル〔2つ組〕と称され、3つの制御点(または3つのエンコードされたブロック)の動き情報の組み合わせは、短くトリプレット〔3つ組〕と称され、4つの制御点(または4つのエンコードされたブロック)の動き情報の組み合わせは、短く4つ組と称される。
これらのモデルは、事前設定された順序でたどられる。組み合わせモデルに対応する制御点の動き情報が利用可能でない場合は、そのモデルが利用可能でないと見なされる。組み合わせモデルに対応する制御点の動き情報が利用可能である場合は、モデルの参照フレーム・インデックスが決定され、制御点の動きベクトルがスケーリングされる。スケーリング後のすべての制御点の動き情報が一貫していれば、モデルは無効である。モデルを制御する制御点のすべての動き情報が利用可能であり、かつモデルが有効であると判定された場合、モデルを構築するために使用される制御点の動き情報が動き情報候補リストに追加される。
制御点動きベクトルをスケーリングする方法は、次の式(14)に示される。
ここで、CurPocは現在のフレームのPOCを表わし、DesPocは現在ブロックの参照フレームのPOCを表わし、SrcPocは制御点の参照フレームのPOCを表わし、MVsはスケーリングを通じて得られた動きベクトルを表わし、MVは制御点の動きベクトルを表わす。
制御点の異なる組み合わせが、同じ位置にある諸制御点に変換されうることを注意しておくべきである。
たとえば、{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、または{CP3,CP4}の組み合わせに基づいて得られる4パラメータのアフィン動きモデルは、変換後、{CP1,CP2}または{CP1,CP2,CP3}によって表現される。変換方法は、動きベクトルおよび制御点の座標情報を上記の式(2)に代入してモデル・パラメータを得て;次いで{CP1,CP2}の座標情報を上記の式(3)に代入して、CP1およびCP2の動きベクトルを得る、というものである。
より直接的には、下記の式(15)~(23)に従って変換が実行されてもよい。ここで、Wは現在ブロックの幅を表わし、Hは現在ブロックの高さを表わす。式(15)~(23)において、(vx0,vy0)はCP1の動きベクトルを表わし、(vx1,vy1)はCP2の動きベクトルを表わし、(vx2,vy2)はCP3の動きベクトルを表わし、(vx4,vy4)はCP4の動きベクトルを表わす。
{CP1,CP2}は、次式(15)により{CP1,CP2,CP3}に変換されうる。換言すれば、{CP1,CP2,CP3}におけるCP3の動きベクトルは、式(15)により決定されてもよい。
{CP1,CP3}は、次式(16)により{CP1,CP2}または{CP1,CP2,CP3}に変換されてもよい。
{CP2,CP3}は、次式(17)により{CP1,CP2}または{CP1,CP2,CP3}に変換されてもよい。
{CP1,CP4}は、次式(18)または(19)により{CP1,CP2}または{CP1,CP2,CP3}に変換されてもよい。
{CP2,CP4}は次式(20)により{CP1,CP2}に変換されてもよく、{CP2,CP4}は次式(20)および(21)により{CP1,CP2,CP3}に変換されてもよい。
{CP3,CP4}は、次式(
22)により{CP1,CP2}に、{CP3,CP4}は、次式(22)および(23)により{CP1,CP2,CP3}に変換されてもよい。
たとえば、{CP1,CP2,CP4}、{CP2,CP3,CP4}、または{CP1,CP3,CP4}の組み合わせに基づいて得られた6パラメータのアフィン動きモデルは、変換後に{CP1,CP2,CP3}によって表現される。変換方法は:動きベクトルおよび制御点の座標情報を上記の式(4)に代入してモデル・パラメータを得て;次いで、{CP1,CP2,CP3}の座標情報を上記の式(5)に代入してCP1、CP2、CP3の動きベクトルを得るというものである。
より直接的には、下記の式(24)~(26)により変換が実行されてもよい。ここで、Wは現在ブロックの幅を表わし、Hは現在ブロックの高さを表わす。式(24)~(26)において、(vx0,vy0)はCP1の動きベクトルを表わし、(vx1,vy1)はCP2の動きベクトルを表わし、(vx2,vy2)はCP3の動きベクトルを表わし、(vx3,vy3)はCP4の動きベクトルを表わす。
{CP1,CP2,CP4}は、式(
24)により{CP1,CP2,CP3}に変換されてもよい。
{CP2,CP3,CP4}は、式(25)により{CP1,CP2,CP3}に変換されてもよい。
{CP1,CP3,CP4}は、式(
26)により{CP1,CP2,CP3}に変換されてもよい。
ある個別的な実施形態では、現在構築されている制御点動き情報が候補動きベクトル・リストに追加された後、候補リストの長さが最大リスト長(たとえば、MaxAffineNumMrgCand)より短い場合、これらの組み合わせが事前設定された順序でたどられ、得られた有効な組み合わせが、候補制御点動き情報として使用される。候補動きベクトル・リストが空の場合、候補制御点動き情報が候補動きベクトル・リストに追加される。候補動きベクトル・リストが空でない場合、候補動きベクトル・リスト内の動き情報が順次たどられて、候補制御点動き情報と同じ動き情報が候補動きベクトル・リスト内に存在するかどうかがチェックされる。候補制御点動き情報と同じ動き情報が候補動きベクトル・リストに存在しない場合、候補制御点動き情報が候補動きベクトル・リストに追加される。
たとえば、事前設定された順序は次のとおり:Affine(CP1,CP2,CP3)→Affine(CP1,CP2,CP4)→Affine(CP1,CP3,CP4)→Affine(CP2,CP3,CP4)→Affine(CP1,CP2)→Affine(CP1,CP3)→Affine(CP2,CP3)→Affine(CP1,CP4)→Affine(CP2,CP4)→Affine(CP3,CP4)。合計10とおりの組み合わせがある。
ある組み合わせに対応する制御点の動き情報が利用可能でない場合は、その組み合わせは利用可能でないと考えられる。ある組み合わせが利用可能である場合、その組み合せの参照フレーム・インデックスが決定される(2つの制御点がある場合には、最小限の参照フレーム・インデックスがその組み合わせの参照フレーム・インデックスとして選択される;または、3つ以上の制御点がある場合には、最大の存在頻度をもつ参照フレーム・インデックスがその組み合わせの参照フレーム・インデックスとして選択され、複数の参照フレーム・インデックスが同じ存在頻度をもつ場合には、最小の参照フレーム・インデックスがその組み合わせの参照フレーム・インデックスとして選択される)。制御点動きベクトルは、スケーリングされる。スケーリング後のすべての制御点の動き情報が一貫していれば、その組み合わせは無効である。
任意的に、本発明の実施形態において、候補動きベクトル・リストが、代替的にパディングされてもよい。たとえば、上記のたどっていくプロセスの後、候補動きベクトル・リストの長さが最大リスト長(たとえば、MaxAffineNumMrgCand)より短い場合、候補動きベクトル・リストは、リスト長が最大リスト長に等しくなるまで、パディングされてもよい。
パディングは、ゼロ動きベクトルパディング方法を使用することによって、または既存のリスト内の既存の候補動き情報を組み合わせるまたは重み付け平均するための方法を使用することによって実行されうる。候補動きベクトル・リストをパディングするための別の方法も本発明の実施形態に適用可能であることを注意しておくべきである。詳細は本明細書には記載しない。
以上の説明に基づき、下記はさらに、アフィン動きモデルベースのAMVPモード(アフィンAMVPモード)およびアフィン動きモデルベースのマージモード(アフィン・マージモード)について述べる。
まず、アフィン動きモデルベースのAMVPモードが記述される。
アフィン動きモデルベースの先進動きベクトル予測モードについて、アフィン動きモデルベースのAMVPモードにおける候補動きベクトル・リストは、継承制御点動きベクトル予測方法および/または構築される制御点動きベクトル予測方法を用いて構築されうる。本発明の実施形態では、アフィン動きモデルベースのAMVPモードにおける候補動きベクトル・リストは、制御点動きベクトル予測子候補リスト(control point motion vector predictor candidate list)と称されてもよい。リスト内の制御点動きベクトル予測子は、2つの候補制御点動きベクトル(たとえば、現在ブロックについて4パラメータのアフィン動きモデルが使用される場合)または3つの候補制御点動きベクトル(たとえば、現在ブロックについて6パラメータのアフィン動きモデルが使用される場合)を含む。
ある可能な応用シナリオでは、制御点動きベクトル予測子候補リストは、さらに、特定のルールに従って剪定され、ソートされ、特定の量の制御点動きベクトル予測子を得るために打ち切りまたはパディングされてもよい。
次いで、エンコーダ側で、エンコーダ(たとえば、上記のエンコーダ20)が、式(3)、(5)または(7)による制御点動きベクトル予測子候補リスト内の各制御点動きベクトル予測子を用いて、現在符号化ブロックの各動き補償サブ単位の動きベクトルを取得する。さらに、エンコーダは、各動き補償サブ単位の動きベクトルがポイントする参照フレーム内の対応する位置のピクセル値を取得し、そのピクセル値を、その動き補償サブ単位の予測された値として用いて、アフィン動きモデルベースの動き補償を実行する。現在の符号化ブロックのすべてのピクセルのもとの値と予測された値との間の差の平均値が計算される。最小の平均値に対応する制御点動きベクトル予測子が、最適な制御点動きベクトル予測子として選択され、現在符号化ブロックの2つ、3つ、または4つの制御点の動きベクトル予測子として使用される。さらに、エンコーダ側では、制御点動きベクトル予測子が、制御点動きベクトル(control point motion vector、CPMV)を得るために特定の探索範囲内で動き探索を実行するための開始探索点として用いられ、制御点動きベクトルと制御点動きベクトル予測子との差(制御点動きベクトル差、CPMVD)が計算される。次いで、エンコーダは、制御点動きベクトル予測子リストにおける制御点動きベクトル予測子の位置を示すインデックス値と、CPMVDとをビットストリーム中にエンコードし、該ビットストリームをデコーダ側に転送する。
デコーダ側では、デコーダ(たとえば、上記のデコーダ30)がビットストリームをパースしてインデックス値および制御点動きベクトル差(CPMVD)を得て、インデックス値に基づいて制御点動きベクトル予測子候補リストにおいて制御点動きベクトル予測子(control point motion vectors predictor、CPMVP)を決定し、CPMVPおよびCPMVDを加算して、制御点動きベクトルを得る。
下記は、アフィン動きモデルベースのマージモードについて述べる。
アフィン動きモデルベースのマージモードについて、制御点動きベクトルマージ候補リスト(control point motion vector merge candidate list)が、継承制御点動きベクトル予測方法および/または構築制御点動きベクトル予測方法を用いて構築されてもよい。
ある可能な応用シナリオでは、制御点動きベクトルマージ候補リストは、特定のルールに従って剪定され、ソートされてもよく、特定の量の制御点動きベクトルを得るために打ち切りまたはパディングされてもよい。
次いで、エンコーダ側で、エンコーダ(たとえば、上記のエンコーダ20)は、式(3)、(5)または(7)によりマージ候補リスト内の各制御点動きベクトルを用いて、現在符号化ブロックの各動き補償サブ単位(ピクセルまたは特定の方法による分割を通じて得られ、そのサイズがN1×N2であるピクセル・ブロック)の動きベクトルを取得する。さらに、エンコーダは、各動き補償サブ単位の動きベクトルがポイントする参照フレーム内の位置のピクセル値を取得し、そのピクセル値を、動き補償サブ単位の予測された値として使用して、アフィン動き補償を実行する。現在の符号化ブロックにおけるすべてのピクセルのもとの値と予測された値との間の差の平均値が計算される。最小の平均値に対応する制御点動きベクトルが、現在の符号化ブロックの2つ、3つ、または4つの制御点の動きベクトルとして選択される。候補リスト内の制御点動きベクトルの位置を示すインデックス値がビットストリーム中にエンコードされ、デコーダ側に送られる。
デコーダ側では、デコーダ(たとえば、上記のデコーダ30)は、ビットストリームをパースしてインデックス値を取得し、インデックス値に基づいて制御点動きベクトルマージ候補リスト内の制御点動きベクトル(control point motion vector、CPMV)を決定する。
本発明の実施形態では、「少なくとも1つ」とは一つまたは複数を意味し、「複数」とは2つ以上を意味することを注意しておくべきである。用語「および/または」は、関連するオブジェクトを記述するための関連関係を記述し、3つの関係が存在しうることを表わす。たとえば、Aおよび/またはBは、Aのみが存在、AとBの両方が存在、Bのみが存在という場合を表わすことができ、ここで、AおよびBは単数または複数でありうる。記号「/」は、通例、関連するオブジェクト間の「または」関係を表わす。「以下のアイテム(項目)のうちの少なくとも1つ」または該用語に類似する表現は、それらのアイテムの任意の組み合わせを表わし、単一のアイテム(項目)または複数のアイテム(項目)の任意の組み合わせを含む。たとえば、a、b、またはcのうちの少なくとも1つは、a、b、c、a-b、a-c、b-c、またはa-b-cを示すことができ、ここで、a、b、およびcは、単数または複数でありうる。
本発明の実施形態において、エンコーダ側は、デコーダ側に対して、現在ブロックのインター予測モード、現在ブロックのために使用されるアフィン動きモデル、および他の関連情報を示すためにシンタックス要素を使用してもよい。
現在ブロックをパースするために使用されているインター予測モードの、現在使用されているシンタックス構造の一部については、表1を参照されたい。シンタックス構造中のシンタックス要素は、代替的に、別の識別子によって表現されてもよいことに注意すべきである。これは、本発明の実施形態において特に限定されない。
表1において、ae(v)は、コンテキスト適応バイナリ算術符号化(context-adaptive binary arithmetic coding、CABAC)によって符号化されたシンタックス要素を表わす。
シンタックス要素merge_flag[x0][y0]は、現在ブロックについてマージモードが使用されているかどうかを示すために使われてもよい。たとえば、merge_flag[x0][y0]=1の場合、そのことは現在ブロックについてマージモードが使用されていることを示し、merge_flag[x0][y0]=0の場合、そのことは現在ブロックについてマージモードが使用されていないことを示す。x0およびy0はビデオ・ピクチャーにおける現在ブロックの座標を表わす。
変数allowAffineMergeは、現在ブロックがアフィン動きモデルベースのマージモードを使用するための条件を満たしているかどうかを示すために使用されてもよい。たとえば、allowAffineMerge=0は、アフィン動きモデルベースのマージモードを使用する条件が満たされていないことを示し、allowAffineMerge=1は、アフィン動きモデルベースのマージモードを使用する条件が満たされていることを示す。アフィン動きモデルベースのマージモードを使用するための条件は、次のようなものであってもよい:現在ブロックの幅と高さの両方が8以上である。cbWidthが現在ブロックの幅を表わし、cbHeightが現在ブロックの高さを表わす。言い換えると、cbWidth<8またはcbHeight<8の場合はallowAffineMerge=0である;または、cbWidth≧8かつcbHeight≧8の場合はallowAffineMerge=1である。
変数allowAffineInterは、現在ブロックがアフィン動きモデルベースのAMVPモードを使用するための条件を満たしているかどうかを示すために使用されてもよい。たとえば、allowAffineInter=0は、アフィン動きモデルベースのAMVPモードを使用する条件が満たされないことを示し、allowAffineInter=1は、アフィン動きモデルベースのAMVPモードを使用する条件が満たされていることを示す。アフィン動きモデルベースのAMVPモードを使用するための条件は次のようなものであってもよい:現在ブロックの幅と高さの両方が16以上である。言い換えると、cbWidth<16またはcbHeight<16の場合はallowAffineInter=0であり;または、cbWidth≧16かつcbHeight≧16の場合はallowAffineInter=1である。
シンタックス要素affine_merge_flag[x0][y0]は、アフィン動きモデルベースのマージモードが現在ブロックのために使用されるかどうかを示すために使用されてもよい。現在ブロックが位置するスライスの型(slice_type)は、P型またはB型である。たとえば、affine_merge_flag[x0][y0]=1は現在ブロックのためにアフィン動きモデルベースのマージモードが使用されることを示し、affine_merge_flag[x0][y0]=0は現在ブロックのためにアフィン動きモデルベースのマージモードが使用されないが、並進動きモデルベースのマージモードが使用されてもよいことを示す。
シンタックス要素merge_idx[x0][y0]はマージ候補リストのインデックスを示すために使用されてもよい。
シンタックス要素affine_merge_idx[x0][y0]は、アフィンマージ候補リストのインデックスを示すために使用されてもよい。
シンタックス要素affine_inter_flag[x0][y0]は、現在ブロックが位置するスライスがP型スライスかB型スライスである場合、現在ブロックのためにアフィン動きモデルベースのAMVPモードが使用されるかどうかを示すために使用されてもよい。たとえば、affine_inter_flag[x0][y0]=0は、現在ブロックのためにアフィン動きモデルベースのAMVPモードが使用されることを示し、affine_inter_flag[x0][y0]=1は現在ブロックのためにアフィン動きモデルベースのAMVPモードが使用されないが、並進動きモデルベースのAMVPモードが使用されてもよいことを示す。
シンタックス要素affine_type_flag[x0][y0]は、現在ブロックが位置するスライスがP型スライスかB型スライスである場合に、6パラメータのアフィン動きモデルが現在ブロックのための動き補償を実行するために使用されるかどうかを示すために使用されてもよい。affine_type_flag[x0][y0]=0は、6パラメータのアフィン動きモデルが現在ブロックのための動き補償を実行するために使用されず、4パラメータのアフィン動きモデルのみが動き補償を実行するために使用されうることを示す。affine_type_flag[x0][y0]=1は、6パラメータのアフィン動きモデルが現在ブロックのための動き補償を実行するために使用されることを示す。
変数MaxNumMergeCandおよびMaxAffineNumMrgCandは、最大リスト長を表わすために使用され、構築された候補動きベクトル・リストの最大長を示す。inter_pred_idc[x0][y0]は予測方向を示すために使用される。PRED_L1は、後ろ向き予測を示すために使用される。num_ref_idx_l0_active_minus1は、前向き参照フレーム・リスト中の参照フレームの量を示し、ref_idx_l0[x0][y0]は、現在ブロックの前向き参照フレームのインデックス値を示す。mvd_coding(x0,y0,0,0)は、第1の動きベクトル差分を示す。mvp_l0_flag[x0][y0]は、前向きMVP候補リストのインデックス値を示す。PRED_L0は前向き予測を示す。num_ref_idx_l1_active_minus1は、後ろ向き参照フレーム・リスト中の参照フレームの量を示す。ref_idx_l1[x0][y0]は現在ブロックの後ろ向き参照フレームについてのインデックス値を示し、mvp_l1_flag[x0][y0]は後ろ向きMVP候補リストについてのインデックス値を示す。
表2に示されるように、MotionModelIdc[x0][y0]=1の場合、そのことは4パラメータのアフィン動きモデルが使用されていることを示し;MotionModelIdc[x0][y0]=2の場合、そのことは6パラメータのアフィン動きモデルが使用されていることを示し;MotionModelIdc[x0][y0]=0の場合、そのことは並進動きモデルが使用されていることを示す。
表1および表2は単に例であることを注意しておくべきである。実際の適用では、表1および表2はより多い、またはより少ない内容を含むことがありうる。たとえば、表2におけるMotionModelIdc[x0][y0]は、代替的に、別の値を含んでいてもよく、その値は、8パラメータ双線形モデルが使用されることを示すために使用されうる、などである。
ある既存の方法では、インター予測モードで現在ブロックの各サブブロックの動きベクトルを得た後、エンコーダ側またはデコーダ側が、その後の動き補償のために該動きベクトルを記憶する必要がある。加えて、得られた動きベクトルは、さらに、その後のデコード・プロセスのために使用される、たとえば、近傍ブロック・デコード・プロセスにおける動きベクトル予測またはブロック化解除フィルタリングにおけるフィルタリング強度決定のために使用される。現在ブロックの制御点の得られた動きベクトルも記憶される必要があり、その結果、該動きベクトルはその後、近傍のエンコード/デコードされるべきブロックのために継承制御点動きベクトル予測方法が使用されるときに、使用される。したがって、この場合、現在ブロックについては、各サブブロックの動きベクトルと制御点の動きベクトルの2つの型の動きベクトルがある。ある既存の解決策では、2つの型の動きベクトルを記憶することを避けるために、制御点の動きベクトルを使用して、制御点が位置するサブブロックの動きベクトルを上書きする。たとえば、現在アフィン符号化ブロックのために使用されるアフィン動きモデルが4パラメータのアフィン動きモデルである場合、左上サブブロックおよび右上サブブロックの動きベクトルは、左上制御点および右上制御点の動きベクトルに設定される。たとえば、現在アフィン符号化ブロックのために使用されるアフィン動きモデルが6パラメータのアフィン動きモデルである場合、左上サブブロック、右上サブブロック、左下サブブロックの動きベクトルは、左上制御点、右上制御点、左下制御点の動きベクトルに設定される。この方法では、動きベクトル記憶問題は解決されるが、制御点が位置するサブブロックについて動き補償を実行するために、他のサブブロックのために使用されるものと整合しない動きベクトルが使用されるので、予測は不正確であり、符号化効率が低下する。
従来技術の欠点を克服し、動きベクトル記憶問題を解決し、符号化プロセスにおける予測精度を改善し、符号化効率を改善するために、前述の継承制御点動きベクトル予測方法は、本発明の実施形態において改善される。
本発明の実施形態において提供される改善された継承制御点動きベクトル予測方法においては、現在ブロックの候補制御点動きベクトルを決定するプロセスにおいて、近傍のアフィン符号化ブロック(または近傍のアフィン復号ブロック)の制御点の動きベクトルを使用する代わりに、近傍のアフィン符号化ブロック(または近傍のアフィン復号ブロック)の少なくとも2つのサブブロックの動きベクトルを使用することによって、現在ブロックの候補制御点動きベクトルが導出される。各近傍のアフィン符号化ブロック(または近傍のアフィン復号ブロック)のサブブロックの動きベクトルが導出された後、制御点の動きベクトルは記憶される必要がない。具体的には、現在ブロックの制御点の動きベクトルは、現在ブロックのサブブロックの動きベクトルを導出するためにのみ使用されるが、その後、別の処理対象の近傍ブロックのための動きベクトル予測には使用されない。よって、本発明の解決策では、サブブロックの動きベクトルのみが記憶される必要があり、サブブロックの動きベクトルを用いて動き補償が実行される。これは、動きベクトル記憶問題を解決し、予測精度および符号化効率を改善する。
近傍アフィン符号化ブロックは、現在ブロックの近傍であり、エンコード・フェーズにおいてアフィン動きモデルを使用することによって予測されるエンコードされたブロックであり、近傍のアフィン復号ブロックは、現在ブロックの近傍であり、デコード・フェーズにおいてアフィン動きモデルを使用することによって予測されるデコードされたブロックである。本明細書では、現在ブロックについては、現在ブロックの幅を表わすためにWが使用されてもよく、現在ブロックの高さを表わすためにHが使用されてもよい。近傍のアフィン符号化ブロックについては、近傍のアフィン符号化ブロックの幅を表わすためにUが使用されてもよく、近傍のアフィン符号化ブロックの高さを表わすためにVが使用されてもよい。
下記は、改善された継承制御点動きベクトル予測方法のいくつかの具体的な実装を詳細に記載する。下記は、デコーダ側の観点から、改善された継承制御点動きベクトル予測方法を記述していることを注意しておくべきである。エンコーダ側の改善された継承制御点動きベクトル予測方法については、実装のために以下の記述を参照されたい。明細書の簡潔のため、詳細は再度記載しない。
近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合の、改善された継承制御点動きベクトル予測方法のいくつかの例が、まず記述される。
一例では、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合、近傍のアフィン符号化ブロックにおける2つのサブブロックの動きベクトルと、それら2つのサブブロックの中心点の座標(ここで、サブブロックの中心点の水平座標間の距離がPであり、サブブロックの中心点の垂直座標は同じである)が得られ、現在アフィン符号化ブロックの制御点の動きベクトルを導出するための4パラメータのアフィン動きモデルを形成する。ここで、Pは、近傍のアフィン符号化ブロックの幅Uよりも小さく、Pは2の冪乗である。
別の例では、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合、近傍のアフィン符号化ブロックの2つのサブブロックの動きベクトルと、それらの2つのサブブロックの中心点の座標(ここで、サブブロックの中心点の垂直座標間の距離はQであり、サブブロックの中心点の水平座標は同じである)が得られ、現在アフィン符号化ブロックの制御点の動きベクトルを導出するための4パラメータのアフィン動きモデルを形成する。ここで、Qは、近傍のアフィン符号化ブロックの高さVよりも小さく、Qは2の冪乗である。
以後、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合の、改善された継承制御点動きベクトル予測方法のいくつかの例が記述される。
一例では、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、近傍のアフィン符号化ブロックの2つのサブブロック(たとえば、第1のサブブロックおよび第2のサブブロックと呼ばれる)の動きベクトルと、それら2つのサブブロックの中心点の座標(ここで、サブブロックの中心点の水平座標間の距離がPであり、サブブロックの中心点の垂直座標は同じである)が得られ、次いで、近傍のアフィン符号化ブロックのあるサブブロックの動きベクトルと、該サブブロックの中心点の座標(ここで、該サブブロックの中心点の水平座標が第1のサブブロックの中心点の水平座標と同じであり、該サブブロックの中心点の垂直座標と第1のサブブロックの中心点の垂直座標との間の距離はQ)が得られ、現在アフィン符号化ブロックの制御点の動きベクトルを導出するための6パラメータのアフィン動きモデルを形成する。ここで、Pは、近傍のアフィン符号化ブロックの幅Uよりも小さく、Pは2の冪乗であり、Qは、近傍のアフィン符号化ブロックの高さVよりも小さく、Qは2の冪乗である。
別の例では、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、近傍のアフィン符号化ブロックの2つのサブブロック(たとえば、第1のサブブロックおよび第2のサブブロックと呼ばれる)の動きベクトルと、それら2つのサブブロックの中心点の座標(ここで、サブブロックの中心点の水平座標間の距離がPであり、サブブロックの中心点の垂直座標は同じである)が得られ、次いで、近傍のアフィン符号化ブロックのあるサブブロックの動きベクトルと、該サブブロックの中心点の座標(ここで、該サブブロックの中心点の水平座標が第2のサブブロックの中心点の水平座標と同じであり、該サブブロックの中心点の垂直座標と第2のサブブロックの中心点の垂直座標との間の距離はQ)が得られ、現在アフィン符号化ブロックの制御点の動きベクトルを導出するための6パラメータのアフィン動きモデルを形成する。ここで、Pは、近傍のアフィン符号化ブロックの幅Uよりも小さく、Pは2の冪乗であり、Qは、近傍のアフィン符号化ブロックの高さVよりも小さく、Qは2の冪乗である。
別の例では、近傍のアフィン符号化ブロックのパラメータ型は考慮されず、近傍のアフィン符号化ブロックの2つのサブブロック(たとえば、第1のサブブロックおよび第2のサブブロックと呼ばれる)の動きベクトルと、それら2つのサブブロックの中心点の座標が直接得られ(ここで、サブブロックの中心点の水平座標間の距離はPであり、サブブロックの中心点の垂直座標は同じ)、次いで、近傍のアフィン符号化ブロックのあるサブブロックの動きベクトルと、該サブブロックの中心点の座標(ここで、該サブブロックの中心点の水平座標は第1のサブブロックの中心点の水平座標と同じであり、該サブブロックの中心点の垂直座標と第1のサブブロックの中心点の垂直座標との間の距離はQ)が得られ、現在アフィン符号化ブロックの制御点の動きベクトルを導出するための6パラメータのアフィン動きモデルを形成する。ここで、Pは、近傍のアフィン符号化ブロックの幅Uよりも小さく、Pは2の冪乗であり、Qは近傍のアフィン符号化ブロックの高さVよりも小さく、Qは2の冪乗である。
本発明の実施形態では、2つのサブブロックの中心点間の距離は2の冪乗であることに注意しておくべきである。これは、シフト方式で動きベクトル導出を実装するのを助け、実装の複雑性が低減される。
さらに、上記の例では、サブブロックの中心点は、単に説明の簡単のために使用されていることに注意しておくべきである。実際の適用において、近傍のアフィン符号化ブロックのために使用されるサブブロックの座標位置(これは、近傍のアフィン符号化ブロックの事前設定されたサブブロック位置と略称されうる)は、符号化におけるサブブロックの動きベクトルを計算するために使用される位置と整合する必要がある(具体的には、近傍のアフィン符号化ブロックのサブブロックについて、そのサブブロックにおける事前設定された位置におけるピクセルの動きベクトルが、そのサブブロックのすべてのピクセルの動きベクトルを表現するために使用される)。よって、さまざまな型の事前設定されたサブブロック位置が存在しうる。たとえば、事前設定されたサブブロック位置は、近傍のアフィン符号化ブロックのサブブロック内の左上ピクセルの位置である。具体的には、コーディングにおいてサブブロックの動きベクトルを計算するために左上のピクセルが使用される場合、サブブロックの左上のピクセルの座標も、上記の諸例において使用されるべきである。別の例として、事前設定されたサブブロック位置は、近傍のアフィン符号化ブロックのサブブロック内の幾何学的中心に最も近いピクセルの位置である。別の例として、事前設定されたサブブロック位置は、近傍のアフィン符号化ブロックのサブブロック内の右上のピクセルの位置である。
記述の簡単のため、以下の諸例では、記述のための例として、サブブロック中心点が使用される。他のサブブロック位置の実装については、該記述を参照されたい。詳細は、再度記載しない。
本発明の実施形態のある可能な適用シナリオでは、近傍のアフィン符号化ブロックが水平方向において少なくとも2つのサブブロックに分割され、垂直方向において少なくとも2つのサブブロックに分割されるように、アフィン符号化ブロック使用条件が制限されてもよい。たとえば、サブブロックのサイズはM×Nであり、ここで、Mは4、8または16のような整数であり、Nは、4、8または16のような整数であると想定される。この場合、アフィン符号化ブロックの許容されるサイズは、幅Wが2M以上、高さHが2N以上というものである。現在の符号化単位のサイズがアフィン符号化ブロック使用条件を満たさない場合、表1におけるaffine_inter_flagまたはaffine_merge_flagのようなアフィン関連のシンタックス要素はパースされる必要がないこともある。
本発明のある実施形態では、近傍のアフィン符号化ブロックは、4パラメータのアフィン符号化ブロックであると想定される。図10に示されるように、現在ブロックの近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nであり(たとえば、図10に示される近傍のアフィン符号化ブロックのサブブロックのサイズは4×4である)、位置(x4+M/2,y4+N/2)の動きベクトル(vx4,vy4)および位置(x4+M/2+P,y4+N/2)の動きベクトル(vx5,vy5)が得られ、4パラメータのアフィン動きモデルを形成する。
次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(27)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(28)に従った計算を通じて得られる。任意的に、ここでの(x1,y1)の値は(x0+W,y0)に設定されてもよく、ここで、Wは、現在ブロックの幅である。
任意的に(たとえば、現在ブロックが6パラメータのアフィン符号化ブロックである)、現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)は、次式(29)に従った計算を通じて得られる。任意的に、(x2,y2)の値は(x0,y0+H)に設定されてもよく、ここで、Hは現在ブロックの高さである。
本発明のある実施形態では、近傍のアフィン符号化ブロックは、6パラメータのアフィン符号化ブロックであると想定される。引き続き図10が例として使用される。現在ブロックの近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nである(たとえば、図10に示される近傍のアフィン符号化ブロックのサブブロックのサイズが4×4)場合、位置(x4+M/2,y4+N/2)の動きベクトル(vx4,vy4)、位置(x4+M/2+P,y4+N/2)の動きベクトル(vx5,vy5)、位置(x4+M/2,y4+N/Q)の動きベクトル(vx6,vy6)が得られ、6パラメータのアフィン動きモデルを形成する。
次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(30)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(31)に従った計算を通じて得られる。任意的に、ここでの(x1,y1)の値は、(x0+W,y0)に設定されてもよく、ここで、Wは、現在ブロックの幅である。
任意的に(たとえば、現在ブロックが6パラメータのアフィン符号化ブロックである)、現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)が、次式(32)に従った計算を通じて得られる。任意的に、ここでの(x2,y2)の値は、(x0,y0+H)に設定されてもよく、ここで、Hは現在ブロックの高さである。
本発明の実施形態における方法は、代替的に、条件を制限することなく、すべての近傍のアフィン符号化ブロックに適用されてもよいことに注意しておくべきである。具体的には、3つのサブブロックの動きベクトルが、導出のための6パラメータのアフィン動きモデルを形成するために使用される。
本発明の実施形態では、符号化ブロックの幅Uおよび高さVは、それぞれ、通例、2の冪乗であるため、Pの値はU/2であってもよく、Qの値はV/2であってもよいことに注意しておくべきである。たとえば、Uが8、16、32、64、または128である場合、Pは4、8、16、32、または64である。たとえば、Vが8、16、32、64、または128である場合、Qは4、8、16、32、または64である。
上記の諸実施形態は、単に例として使用されることに注意しておくべきである。本発明の別の実施形態では、中心点が水平距離Pおよび垂直距離Qを有する他の2つのサブブロックが、代替的に使用されてもよい。本明細書には、詳細は記載しない。
加えて、実際の実装においては、P、Qのそれぞれが2の冪乗であるため、上述の式(27)ないし式(32)における除算演算は右シフト方式で実装されてもよい。加えて、除算の精度損失を低減するために、上述の式(27)ないし式(32)における数式の両端を左シフトして増加させてもよく、その後、右シフトが実行される。
具体的な実装動作は、以下の手順で実行されてもよい。ここで、Log2は、2の対数をとる関数であり、<<は左シフトを表わし、>>は右シフトを表わす。
近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、
と想定される。
近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合、
と想定される。
すると、現在アフィン符号化ブロックの制御点の動きベクトルは、下記の式に従って計算されうる。
丸め関数の演算は次の通りである:任意の入力Kについて、出力Kは以下のようにして得られる。
本発明の別の実施形態では、近傍のアフィン符号化ブロックが現在アフィン符号化ブロックの上方のCTUに位置する場合、メモリ読み出し回数を減らすために、近傍のアフィン符号化ブロックの、該CTUの下部に位置する、2つのサブブロックの動きベクトルが、導出のために取得されてもよい。近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nである場合、位置(x4+M/2,y4+V-N/2)の動きベクトル(vx4,vy4)と位置(x4+M/2+P,y4+V-N/2)の動きベクトル(vx5,vy5)が得られ、4パラメータのアフィン動きモデルを形成する。
次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(33)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(34)に従った計算を通じて得られる。
現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)は、以下の式(35)に従った計算を通じて得られる。
本発明の実施形態における方法は、代替的に、条件を制限することなく、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合にのみ適用されてもよいことに注意しておくべきである。具体的には、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合、中心点が距離Pを有する2つの下部のサブブロックの動きベクトルが導出のために使用される。
本発明の別の実施形態では、近傍のアフィン符号化ブロックが現在アフィン符号化ブロックの左のCTU内に位置する場合、メモリ読み出し回数を減らすために、近傍のアフィン符号化ブロックの、該CTUの右端位置にある2つのサブブロックの動きベクトルが導出のために得られてもよい。近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nである場合、位置(x4+U-M/2,y4+N/2)の動きベクトル(vx4,vy4)と位置(x4+U-M/2,y4+N/2+Q)の動きベクトル(vx5,vy5)が得られ、4パラメータのアフィン動きモデルを形成する。
次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(36)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(37)に従った計算を通じて得られる。
現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)は、次式(38)に従った計算を通じて得られる。
本発明の実施形態における方法は、代替的に、条件を制限することなく、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合にのみ適用されてもよいことを注意しておくべきである。具体的には、近傍のアフィン符号化ブロックが4パラメータのアフィン符号化ブロックである場合、中心点が距離Qを有する2つの右端のサブブロックの動きベクトルが導出のために使用される。
本発明の別の実施形態では、近傍のアフィン符号化ブロックが現行のアフィン符号化ブロックの上方のCTU内に位置し、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、メモリ読み取り回数を減らすために、近傍のアフィン符号化ブロックの、該CTUの下部に位置する2つのサブブロックの動きベクトルと、近傍のアフィン符号化ブロックの上部のサブブロックの動きベクトルとが、導出のために得られてもよい。
近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nである場合、位置(x4+M/2,y4+V-N/2)の動きベクトル(vx4,vy4)、位置(x4+M/2+P,y4+V-N/2)の動きベクトル(vx5,vy5)、位置(x4+M/2,y4+V-N-Q)の動きベクトル(vx6,vy6)が得られ、6パラメータのアフィン動きモデルを形成する。次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(39)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(40)に従った計算を通じて得られる。
現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)は、次式(41)に従った計算を通じて得られる。
本発明の実施形態における方法は、代替的に、条件を制限することなく、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合にのみ適用されてもよいことを注意しておくべきである。具体的には、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、中心点が距離Pを有する2つの下部のサブブロックの動きベクトルと、下部のサブブロックから垂直距離Qを有するサブブロックの動きベクトルとが、導出のために使用される。
本発明の実施形態における方法は、代替的に、条件を制限することなく、すべての近傍のアフィン符号化ブロックに適用されてもよいことを注意しておくべきである。具体的には、中心点が距離Pを有する2つの下部のサブブロックの動きベクトルと、下部のサブブロックから垂直距離Qを有するサブブロックの動きベクトルが、導出のために使用される。
本発明の別の実施形態では、近傍のアフィン符号化ブロックが現在アフィン符号化ブロックの左のCTU内に位置し、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、メモリ読み取り回数を減らすために、近傍のアフィン符号化ブロックの、該CTUの右端位置に位置する2つのサブブロックの動きベクトルと、近傍のアフィン符号化ブロックの左のサブブロックの動きベクトルとが、導出のために得られてもよい。近傍のアフィン符号化ブロックの左上隅の座標が(x4,y4)であり、幅がUであり、高さがVであり、分割を通じて得られるサブブロックのサイズがM×Nである場合、位置(x4+U-M/2,y4+N/2)の動きベクトル(vx4,vy4)、位置(x4+U-M/2,y4+N/2+Q)の動きベクトル(vx5,vy5)、位置(x4+U-M/2-P,y4+N/2)の動きベクトル(vx6,vy6)が得られ、6パラメータのアフィン動きモデルを形成する。
次いで、現在アフィン符号化ブロックの左上の制御点(x0,y0)の動きベクトル(vx0,vy0)が、次式(42)に従った計算を通じて得られる。
現在アフィン符号化ブロックの右上の制御点(x1,y1)の動きベクトル(vx1,vy1)は、次式(43)に従った計算を通じて得られる。
現在アフィン符号化ブロックの左下の制御点(x2,y2)の動きベクトル(vx2,vy2)は、以下の式(44)に従った計算を通じて得られる。
本発明の実施形態における方法は、代替的に、条件を制限することなく、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合にのみ適用されてもよいことを注意しておくべきである。具体的には、近傍のアフィン符号化ブロックが6パラメータのアフィン符号化ブロックである場合、中心点が距離Qを有する2つの右端のサブブロックの動きベクトルと、右端のサブブロックから水平の距離Pを有するサブブロックの動きベクトルとが、導出のために使用される。
本発明の実施形態における方法は、代替的に、条件を制限することなく、すべての近傍のアフィン符号化ブロックに適用されてもよいことを注意しておくべきである。具体的には、中心点が距離Qを有する2つの右端のサブブロックの動きベクトルと、右端のサブブロックから水平距離Pを有するサブブロックの動きベクトルとが、導出のために使用される。
改善された継承制御点動きベクトル予測方法に基づいて、下記は、本発明の一実施形態によるアフィン動きモデルに基づく動きベクトル予測方法を、エンコーダ側またはデコーダ側の観点からさらに述べる。図11を参照すると、本方法は、以下のステップを含むが、これらに限定されない。
ステップ701:処理対象ピクチャー・ブロックのある空間的参照ブロックを取得する。
処理対象ピクチャー・ブロックは、ビデオ・ピクチャーを分割することによって得られ、空間的参照ブロックは、処理対象ピクチャー・ブロックに空間的に近傍のデコードされたブロックである。エンコーダ側では、処理対象ピクチャー・ブロックは、現在アフィン符号化ブロック(アフィン・コーディング・ブロック)と称されてもよく、空間的参照ブロックは近傍のアフィン符号化ブロック(アフィン・コーディング・ブロック)と称されてもよい。デコーダ側では、処理対象ピクチャー・ブロックは、現在アフィン復号ブロック(アフィン・コーディング・ブロック)と称されてもよく、空間的参照ブロックは、近傍のアフィン復号ブロック(アフィン・コーディング・ブロック)と称されてもよい。説明の簡単のために、この実施形態では、処理対象ピクチャー・ブロックは、一般に、現在ブロックと称され、空間的参照ブロックは、一般に、近傍ブロックと称される。
ある具体的な実施形態では、現在ブロックの、事前設定された空間位置にある一つまたは複数の候補参照ブロックの利用可能性が、事前設定された順序で判定されてもよく、次いで、事前設定された順序で最初の利用可能な候補参照ブロックが得られ、空間的参照ブロックとして使用される。事前設定された空間位置における候補参照ブロックは、処理対象ピクチャー・ブロックの真上の近傍ピクチャー・ブロック、真左の近傍ピクチャー・ブロック、右上の近傍ピクチャー・ブロック、左下の近傍ピクチャー・ブロック、および左上の近傍ピクチャー・ブロックを含む。たとえば、候補参照ブロックの利用可能性は、最初の利用可能な候補参照ブロックが決定されるまで、次の順序で逐次チェックされる:真左の近傍ピクチャー・ブロック→真上の近傍ピクチャー・ブロック→右上の近傍ピクチャー・ブロック→左下の近傍ピクチャー・ブロック→左上の近傍ピクチャー・ブロック。
図7が例として使用される。その中に近傍位置ブロックが位置する近傍ブロックを見出すために、現在ブロックのまわりの隣接位置ブロックは、図7のA1→B1→B0→A0→B2の順にたどられてもよい。
ある具体的な実施形態では、候補参照ブロックが利用可能であるかどうかは、次の方法に従って判定されてもよい:候補参照ブロックと処理対象ピクチャー・ブロックが同じピクチャー領域内にあり、候補参照ブロックがアフィン動きモデルに基づいて符号化される場合、候補参照ブロックは利用可能であると判定される。
ステップ702:空間的参照ブロックの2つ以上の事前設定されたサブブロック位置を決定する。
具体的には、空間的参照ブロック内の2つ以上のサブブロックが決定されてもよい。各サブブロックは、対応する事前設定されたサブブロック位置を有し、事前設定されたサブブロック位置は、符号化の間にサブブロックの動きベクトルを計算するために使用される位置と整合する。具体的には、近傍のアフィン符号化ブロックのサブブロックについて、そのサブブロック内の事前設定された位置におけるピクセルの動きベクトルが、そのサブブロック内のすべてのピクセルの動きベクトルを表現するために使用される。事前設定された位置におけるピクセルの動きベクトルは、その後の動き補償について、事前設定された位置におけるピクセルが位置するサブブロックを予測するために使用されてもよい。
ある具体的な実装では、事前設定されたサブブロック位置は、サブブロック内の左上ピクセルの位置、サブブロックの幾何学的中心の位置、サブブロック内の幾何学的中心に最も近いピクセルの位置、サブブロック内の右上ピクセルの位置などでありうる。
ある具体的な実施形態では、空間的参照ブロック内の2つのサブブロックが決定されてもよく、それら2つのサブブロックに対応する2つの事前設定されたサブブロック位置間の距離はSであり、ここで、Sは2のK乗であり、Kは負でない整数である。これは、その後の動きベクトル導出をシフト方式で実装するのを助け、実装の複雑性が低減される。
一例では、現在ブロックのアフィン動きモデルが4パラメータのアフィン動きモデルである場合、空間的参照ブロックの複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)と第2の事前設定された位置(x4+M/2+P,y4+N/2)とを含み、ここで、x4は空間的参照ブロックの左上ピクセルの水平座標であり、y4は空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Pは2のK乗であり、Kは負でない整数であり、KはUより小さく、Uは空間的参照ブロックの幅である。
一例では、現在ブロックのアフィン動きモデルが4パラメータのアフィン動きモデルである場合、複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)と第3の事前設定された位置(x4+M/2,y4+N/2+Q)とを含み、ここで、x4は、空間的参照ブロックの左上ピクセルの水平座標であり、y4は、空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Qは2のR乗であり、Rは負ではない整数であり、QはVより小さく、Vは空間的参照ブロックの高さである。
一例では、現在ブロックのアフィン動きモデルが6パラメータのアフィン動きモデルである場合、複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)と、第2の事前設定された位置(x4+M/2+P,y4+N/2)と、第3の事前設定された位置(x4+M/2,y4+N/2+Q)とを含み、ここでx4は空間的参照ブロックの左上ピクセルの水平座標であり、y4は空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Pは2のK乗であり、Qは2のR乗に上昇し、KおよびRは負でない整数であり、PはUより小さく、QはVより小さく、Uは空間的参照ブロックの幅であり、Vは空間的参照ブロックの高さである。
別の例では、現在ブロックの上の境界が、現在ブロックを含む符号化ツリー単位(CTU)の上の境界と一致し、空間的参照ブロックが、処理対象ピクチャー・ブロックの真上、処理対象ピクチャー・ブロックの左上、または処理対象ピクチャー・ブロックの右上にある場合、前記複数の事前設定されたサブブロック位置に対応するサブブロックのうちの少なくとも2つが、現在ブロックの上の境界に隣接している。
別の例では、現在ブロックの左の境界が、現在ブロックを含む符号化ツリー単位(CTU)の左の境界と一致し、空間的参照ブロックが現在ブロックの真左、現在ブロックの左上、または現在ブロックの左下にある場合、前記複数の事前設定されたサブブロック位置に対応するサブブロックのうちの少なくとも2つは、現在ブロックの左の境界に隣接している。
ステップ703:事前設定されたサブブロック位置に対応する動きベクトルから外挿される、処理対象ピクチャー・ブロックの事前設定されたピクセル位置に対応する動きベクトルを取得する。
本発明のこの実施形態では、現在ブロックの候補制御点動きベクトルは、改善された継承制御点動きベクトル予測方法を用いて決定される。具体的には、現在ブロックの事前設定されたピクセル位置の動きベクトルは、近傍のアフィン符号化ブロック(または近傍のアフィン復号ブロック)の少なくとも2つのサブブロックの動きベクトルから外挿される。事前設定されたピクセル位置は現在ブロックの制御点である。たとえば、現在ブロックのアフィン動きモデルが4パラメータのアフィン動きモデルである場合、現在ブロックの制御点は、現在ブロック内の左上のピクセルおよび右上のピクセルであってもよい。現在ブロックのアフィン動きモデルが6パラメータのアフィン動きモデルである場合、現在ブロックの制御点は、現在ブロック内の左上ピクセル、右上ピクセル、および左下ピクセルであってもよい。
改善された継承制御点動きベクトル予測方法の詳細な内容が上記において説明されており、本実施形態は、その内容を参考にして実装されてもよい。本明細書の簡潔のために、詳細は、ここで再度記載されない。
ステップ704:事前設定されたピクセル位置に対応する動きベクトルから補間される、処理対象ピクチャー・ブロックの複数のサブブロック位置に対応する動きベクトルを取得する。
具体的には、現在ブロックの各サブブロック(1つのサブブロックは、1つの動き補償単位に等価であってもよく、サブブロックの幅および高さは、現在ブロックの幅および高さよりも小さい)について、動き補償単位内の事前設定された位置におけるピクセルの動き情報が、動き補償単位内のすべてのピクセルの動き情報を表現するために使用されてもよい。動き補償単位のサイズはM×Nであり、事前設定された位置のピクセルは、中心ピクセル(M/2,N/2)、左上ピクセル(0,0)、右上ピクセル(M-1,0)、または動き補償単位内の他の位置のピクセルであってもよい。この場合、現在ブロック内の各サブブロックの動きベクトルは、現在ブロックの制御点動き情報および現在使用されているアフィン動きモデルに基づいて得られてもよく、その後、そのサブブロックの動きベクトルに基づいて動き補償が実行されてもよく、サブブロックの予測されたピクセル値が得られる。
図11の実施形態のデコーダ側およびエンコーダ側での詳細な実装プロセスについては、図12の実施形態および図14の実施形態の下記の説明を参照することを注意しておくべきである。本明細書の簡潔のため、詳細はここでは記載しない。
改善された継承制御点動きベクトル予測方法が、本発明のこの実施形態において使用されることがわかる。改善された継承制御点動きベクトル予測方法では、近傍ブロックの制御点の動きベクトルを使用する代わりに、近傍ブロックの少なくとも2つのサブブロックの動きベクトルを使用することにより、現在ブロックの制御点の動きベクトルが導出され、次いで、現在ブロックのサブブロックの動きベクトルが制御点の動きベクトルに基づいて導出され、動き補償を通じて現在ブロックについての予測が実行される。現在ブロックの制御点の動きベクトルは、その後記憶される必要がない。具体的には、現在ブロックの制御点の動きベクトルは、現在符号化ブロックのサブブロックの動きベクトルを導出するためにのみ使用されるが、近傍ブロックの動きベクトル予測には使用されない。よって、本発明の解決策では、サブブロックの動きベクトルのみが記憶される必要があり、サブブロックの動きベクトルを用いて動き補償が実行される。これは、動きベクトル記憶問題を解決し、制御点が位置するサブブロックに対して動き補償を実行するために、他のサブブロックに使用されるものと整合しない動きベクトルが使用される場合を回避し、それにより予測精度が改善される。
改善された継承制御点動きベクトル予測方法に基づいて、下記はさらに、本発明のある実施形態によるアフィン動きモデルに基づく動きベクトル予測方法を、デコーダ側から説明する。図12を参照すると、本方法は、以下のステップを含むが、これらに限定されない。
ステップ801:ビットストリームをパースし、現在ブロックのインター予測モードを決定する。
具体的には、現在ブロックのインター予測モードを決定するために、表1に示されるシンタックス構造に基づいてビットストリームがパースされてもよい。
現在ブロックのインター予測モードがアフィン動きモデルベースのAMVPモードであると判定される、すなわちシンタックス要素merge_flag=0およびaffine_inter_flag=1が現在ブロックのインター予測モードがアフィン動きモデルベースのAMVPモードであることを示す場合、ステップ802aないしステップ806aがその後実行される。
現在ブロックのインター予測モードがアフィン動きモデルベースのマージモードであると判定される、すなわち、シンタックス要素merge_flag=1およびaffine_merge_flag=1が現在ブロックのインター予測モードがアフィン動きモデルベースのマージモードであることを示す場合、ステップ802bないしステップ805bがその後実行される。
ステップ802a:アフィン動きモデルベースのAMVPモードに対応する候補動きベクトル・リストを構築する。
本発明のこの実施形態では、現在ブロックの候補制御点動きベクトルは、改善された継承制御点動きベクトル予測方法および/または構築制御点動きベクトル予測方法に基づいて得られ、AMVPモードに対応する候補動きベクトル・リストに追加されてもよい。
改善された継承制御点動きベクトル予測方法では、現在ブロックの候補制御点動きベクトルを決定するプロセスにおいて、近傍のアフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルを用いて、現在ブロックの候補制御点動きベクトル予測子(候補動きベクトル2タプル/トリプレット/4つ組)が導出されて、候補動きベクトル・リストに加えられる。
4パラメータのアフィン動きモデルが現在ブロックのために使用される場合、候補動きベクトル・リストは、2タプル・リストを含んでいてもよい。2タプル・リストは、4パラメータのアフィン動きモデルを構築するために使用される一つまたは複数の2タプルを含む。
6パラメータのアフィン動きモデルが現在ブロックのために使用される場合、候補動きベクトル・リストはトリプレット・リストを含んでいてもよい。トリプレット・リストは、6パラメータのアフィン動きモデルを構築するために使用される一つまたは複数のトリプレットを含む。
8パラメータの双線形モデルが現在ブロックのために使用される場合、候補動きベクトル・リストは4つ組リストを含んでいてもよい。4つ組リストは、8パラメータの双線形モデルを構築するために使用される一つまたは複数の4つ組を含む。
ある可能な応用シナリオでは、候補動きベクトル2-タプル/トリプレット/4つ組リストは、特定のルールに従って剪定およびソートされてもよく、特定の量の候補動きベクトルを得るために打ち切りまたはパディングされてもよい。
改善された継承制御点動きベクトル予測方法については、図7が例として使用される。近傍位置ブロックが位置するアフィン符号化ブロックを見出すために、現在ブロックのまわりの隣接位置ブロックが、図7におけるA1→B1→B0→A0→B2の順でたどられてもよい。近傍アフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルを用いてアフィン動きモデルが構築され、次いで、現在ブロックの候補制御点動きベクトル(候補動きベクトル2-タプル/トリプレット/4つ組)が導出され、候補動きベクトル・リストに追加される。別の探索順序も、本発明のこの実施形態に適用可能であることに注意しておくべきである。本明細書には、詳細は記載しない。
改善された継承制御点動きベクトル予測方法の詳細な内容については、前述の関連する説明を参照されたい。本明細書の簡潔のために、詳細はここでは再度記載されない。
さらに、アフィン動きモデルベースのAMVPモードに基づく構築制御点動きベクトル予測方法の内容も、前述(4)で詳述されている。本明細書の簡潔のために、詳細はここでは再度記載されない。
ステップ803a:ビットストリームをパースし、最適な制御点動きベクトル予測子を決定する。
具体的には、候補動きベクトル・リストのインデックス値がビットストリームをパースすることによって得られ、最適な制御点動きベクトル予測子が、インデックス値に基づいて、ステップ802aで構築された候補動きベクトル・リストから決定される。
たとえば、現在の符号化ブロックのために使用されるアフィン動きモデルが4パラメータのアフィン動きモデルである(MotionModelIdcが1)場合、インデックス値はパースを通じて得られる。たとえば、インデックス値はmvp_l0_flagまたはmvp_l1_flagである。2つの制御点の最適動きベクトル予測子が、インデックス値に基づいて、候補動きベクトル・リストから決定される。
別の例では、現在の符号化ブロックのために使用されるアフィン動きモデルが6パラメータのアフィン動きモデルである(MotionModelIdcが2)場合、インデックス値がパースを通じて得られ、3つの制御点の最適な動きベクトル予測子が、インデックス値に基づいて、候補動きベクトル・リストから決定される。
別の例では、現在の符号化ブロックのために使用されるアフィン動きモデルが8パラメータの双線形モデルである場合、インデックス値がパースを通して得られ、4つの制御点の最適な動きベクトル予測子が、インデックス値に基づいて、候補動きベクトル・リストから決定される。
ステップ804a:制御点の動きベクトルを決定するためにビットストリームをパースする。
具体的には、ビットストリームをパースすることによって制御点の動きベクトル差分が得られ、次いで、該制御点の動きベクトル差分と、ステップ803aで決定された最適な制御点動きベクトル予測子とに基づいて、制御点の動きベクトルが得られる。
たとえば、現在の符号化ブロックのために使用されるアフィン動きモデルが4パラメータのアフィン動きモデルである(MotionModelIdcが1)。前方予測が例として使用され、2つの制御点の動きベクトル差分は、それぞれmvd_coding(x0,y0,0,0)およびmvd_coding(x0,y0,0,1)である。現在ブロックの2つの制御点の動きベクトル差分がビットストリームをパースすることにより得られる。たとえば、左上の制御点および右上の制御点の動きベクトルの差分が、ビットストリームをパースすることによって得られてもよい。次いで、各制御点の動きベクトル差分と動きベクトル予測子が加算されて、制御点の動きベクトルを得る。言い換えると、現在ブロックの左上の制御点および右上の制御点の動きベクトルが得られる。
別の例として、現在の符号化ブロックのために使用されるアフィン動きモデルが6パラメータのアフィン動きモデルである(MotionModelIdcが2)。前方予測を例として使用される。3つの制御点の動きベクトル差分は、それぞれmvd_coding(x0,y0,0,0)、mvd_coding(x0,y0,0,1)、mvd_coding(x0,y0,0,2)である。現在ブロックの3つの制御点の動きベクトル差分がビットストリームをパースすることにより得られる。たとえば、左上の制御点、右上の制御点、および左下の制御点の動きベクトル差分がビットストリームをパースすることによって得られる。次いで、各制御点の動きベクトル差分と動きベクトル予測子が加算されて、制御点の動きベクトルを得る。言い換えると、現在ブロックの左上の制御点、右上の制御点、左下の制御点の動きベクトルが得られる。
本発明のこの実施形態において、別のアフィン動きモデルおよび別の制御点位置が使用されてもよいことを注意しておくべきである。本明細書には、詳細は記載しない。
ステップ805a:制御点の動きベクトルと現在ブロックのために使用されるアフィン動きモデルとに基づいて、現在ブロック内の各サブブロックの動きベクトルを得る。
現在アフィン符号化ブロックにおける各サブブロック(1つのサブブロックは1つの動き補償単位に等価であってもよく、サブブロックの幅および高さは、現在ブロックの幅および高さよりも小さい)について、動き補償単位における事前設定された位置におけるピクセルの動き情報が、動き補償単位におけるすべてのピクセルの動き情報を表現するために使用されてもよい。動き補償単位のサイズはM×Nであり、事前設定された位置のピクセルは、中心ピクセル(M/2,N/2)、左上ピクセル(0,0)、右上ピクセル(M-1,0)、または動き補償単位内の他の位置のピクセルであってもよい。
下記は、動き補償単位の中心点を記述のための例として使用する。図13は、現在アフィン符号化ブロックおよび動き補償単位(サブブロック)を示す。図中のそれぞれの小さな四角は、1つの動き補償単位を表わしている。図13において、V0は、現在アフィン符号化ブロックの左上の制御点の動きベクトルを表わし、V1は、現在アフィン符号化ブロックの右上の制御点の動きベクトルを表わし、V2は、現在アフィン符号化ブロックの左下の制御点の動きベクトルを表わす。
現在アフィン符号化ブロックの左上ピクセルに対する動き補償単位の中心点の座標は、次式(45)に従った計算を通じて得られてもよい。
ここで、iは、水平方向における(左から右へ)i番目の動き補償単位であり、jは、垂直方向における(上から下へ)j番目の動き補償単位であり、(x(i,j),y(i,j))は、現在アフィン符号化ブロックの左上の制御点におけるピクセルに対する、(i,j)番目の動き補償単位の中心点の座標を表わす。
現在アフィン符号化ブロックのために用いられるアフィン動きモデルが6パラメータのアフィン動きモデルである場合、6パラメータのアフィン動きモデルでの式(46)に(x
(i,j),y
(i,j))が代入されて各動き補償単位の中心点の動きベクトルを得て、該動きベクトルが、動き補償単位内の全ピクセルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
現在アフィン符号化ブロックのために用いられるアフィン動きモデルが4パラメータのアフィン動きモデルである場合、4パラメータのアフィン動きモデルでの式(47)に(x
(i,j),y
(i,j))が代入されて各動き補償単位の中心点の動きベクトルを得て、該動きベクトルが、動き補償単位内の全ピクセルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
ステップ806a:サブブロックの予測されたピクセル値を得るために、サブブロックの決定された動きベクトルに基づいて各サブブロックについての動き補償を実行する。
ステップ802b:アフィン動きモデルベースのマージモードに対応する候補動きベクトル・リストを構築する。
本発明のこの実施形態では、現在ブロックの候補制御点動きベクトルが、改善された継承制御点動きベクトル予測方法および/または構築制御点動きベクトル予測方法に基づいて得られてもよく、マージモードに対応する候補動きベクトル・リストに追加されてもよい。
改善された継承制御点動きベクトル予測方法では、現在ブロックの候補制御点動きベクトルを決定するプロセスにおいて、現在ブロックの候補制御点動きベクトル(候補動きベクトル2タプル/トリプレット/4つ組)が、近傍のアフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルを用いて導出され、候補動きベクトル・リストに加えられる。
ある可能な応用シナリオでは、候補動きベクトル・リストは、特定の規則に従って剪定およびソートされてもよく、特定の量の動きベクトルを得るために打ち切りまたはパディングされてもよい。
図8が一例として使用される。近傍位置ブロックが位置するアフィン符号化ブロックを見出すために、現在ブロックのまわりの近傍位置ブロックが、A1→B1→B0→A0→B2の順でたどられてもよい。近傍アフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルを用いてアフィン動きモデルが構築され、次いで、現在ブロックの候補制御点動きベクトル(候補動きベクトル2タプル/トリプレット/4つ組)が導出され、候補動きベクトル・リストに追加される。別の探索順序も、本発明のこの実施形態に適用可能であることに注意しておくべきである。本明細書には、詳細は記載しない。
具体的には、前記のたどっていくプロセスにおいて、候補動きベクトル・リストが空である場合、候補制御点動き情報が候補リストに追加される。候補動きベクトル・リストが空でない場合には、候補動きベクトル・リスト内の動き情報が逐次たどられて、候補制御点動き情報と同じ動き情報が候補動きベクトル・リスト内に存在するかどうかがチェックされる。候補制御点動き情報と同じ動き情報が候補動きベクトル・リストに存在しない場合、候補制御点動き情報が候補動きベクトル・リストに追加される。
2つの候補動き情報が同じであるかどうかを判定するために、2つの候補動き情報の前向き/後ろ向き参照フレームが同じであるかどうか、および前向き/後ろ向き動きベクトルの水平成分および垂直成分が同じであるかどうかが逐次判定される必要がある。2つの動き情報は、前述の要素すべてが異なる場合にのみ、異なるものとみなされる。
候補動きベクトル・リスト内の動き情報の個数が最大リスト長MaxAffineNumMrgCand(は1、2、3、4、または5のような正の整数)に達する場合、候補リストが構築される。候補動きベクトル・リスト内の動き情報の個数が最大リスト長に達しない場合、次の近傍位置ブロックがたどられる。
改善された継承制御点動きベクトル予測方法の内容については、前述の詳細な説明を参照されたい。本明細書の簡潔のために、詳細はここでは再度記載されない。
さらに、アフィン動きモデルベースのマージモードに基づく構築制御点動きベクトル予測方法の内容も、前述の(4)で詳細に記載されている。本明細書の簡潔のために、詳細はここでは再度記載されない。
ステップS803b:最適な制御点動き情報を決定するためにビットストリームをパースする。
具体的には、候補動きベクトル・リストのインデックス値がビットストリームをパースすることによって得られ、最適な制御点動き情報が、ステップ802bで構築された候補動きベクトル・リストから、インデックス値に基づいて決定される。
ステップ804b:該最適な制御点動き情報と、現在の符号化ブロックのために使用されるアフィン動きモデルとに基づいて、現在ブロックの各サブブロックの動きベクトルを得る。このステップの詳細な実装については、ステップ805aの説明を参照されたい。本明細書の簡潔のために、詳細はここでは再度記載されない。
ステップ805b:サブブロックの予測されたピクセル値を得るために、サブブロックの決定された動きベクトルに基づいて各サブブロックについての動き補償を実行する。
本発明のこの実施形態では、改善された継承制御点動きベクトル予測方法が使用されることがわかる。改善された継承制御点動きベクトル予測方法では、近傍ブロックの制御点の動きベクトルが使用される必要はないが、近傍のアフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルが使用される。各アフィン符号化ブロックのサブブロックの動きベクトルが導出された後、制御点の動きベクトルが記憶される必要はない。具体的には、現在符号化ブロックの制御点の動きベクトルは、現在符号化ブロックのサブブロックの動きベクトルを導出するためにのみ使用されるが、近傍ブロックの動きベクトル予測には使用されない。よって、本発明の解決策では、サブブロックの動きベクトルのみが記憶される必要があり、サブブロックの動きベクトルを用いて動き補償が実行される。これは、動きベクトル記憶問題を解決し、予測精度を改善する。
改善された継承制御点動きベクトル予測方法に基づいて、下記はさらに、本発明のある実施形態によるアフィン動きモデルに基づく動きベクトル予測方法を、エンコーダ側の観点から説明する。図14を参照すると、本方法は、以下のステップを含むが、これらに限定されない。
ステップ901:現在ブロックのインター予測モードを決定する。
ある具体的な実装では、複数のインター予測モードがエンコーダ側でインター予測のために事前設定されていてもよい。たとえば、複数のインター予測モードは、上述したアフィン動きモデルベースのAMVPモードおよびアフィン動きモデルベースのマージモードを含む。エンコーダ側は、現在ブロックを予測するための最適なインター予測モードを決定するために、複数のインター予測モードをたどっていく。
別の具体的な実装では、エンコーダ側のインター予測のために、1つのインター予測モードのみが事前設定されていてもよい。この場合、エンコーダ側は、デフォルトのインター予測モードが現在使用されていることを直接判断する。デフォルトのインター予測モードは、アフィン動きモデルベースのAMVPモードまたはアフィン動きモデルベースのマージモードである。
本発明のこの実施形態において、現在ブロックのインター予測モードがアフィン動きモデルベースのAMVPモードであると判定された場合、ステップ902aないしステップ904aがその後実行される。
本発明のこの実施形態において、現在ブロックのインター予測モードがアフィン動きモデルベースのマージモードであると判定された場合、ステップ902bないしステップ904bがその後実行される。
ステップ902a:アフィン動きモデルベースのAMVPモードに対応する候補動きベクトル・リストを構築する。
本発明のこの実施形態では、現在ブロックの候補制御点動きベクトル予測子(たとえば、候補動きベクトル2タプル/トリプレット/4つ組)は、改善された継承制御点動きベクトル予測方法および/または構築制御点動きベクトル予測方法に基づいて得られ、AMVPモードに対応する候補動きベクトル・リストに追加されてもよい。
このステップの具体的な実装については、前述の実施形態のステップ802aの説明を参照されたい。詳細は、ここでは再度説明しない。
ステップ903a:レート‐歪みコストに基づいて最適な制御点動きベクトル予測子を決定する。
一例では、エンコーダ側は、式(3)、(5)または(7)に従って、候補動きベクトル・リストにおける制御点動きベクトル予測子(たとえば、候補動きベクトル2タプル/トリプレット/4つ組)を用いることにより、現在ブロックの各動き補償サブ単位の動きベクトルを得ることができる。さらに、エンコーダ側は、各動き補償サブ単位の動きベクトルがポイントする参照フレーム内の対応する位置のピクセル値を取得し、そのピクセル値を動き補償サブ単位の予測値として用いて、アフィン動きモデルベースの動き補償を実行する。現在の符号化ブロックのすべてのピクセルのもとの値と予測された値との差の平均値が計算される。最小の平均値に対応する制御点動きベクトル予測子は、最適な制御点動きベクトル予測子として選択され、現在ブロックの2つ、3つ、または4つの制御点の動きベクトル予測子として使用される。
ステップ904a:インデックス値、制御点の動きベクトル差分、およびインター予測モードの指示情報をビットストリーム中にエンコードする。
一例では、エンコーダ側は、最適な制御点動きベクトル予測子を開始探索点として使用することによって特定の探索範囲内で動き探索を実行して制御点動きベクトル(control point motion vectors、CPMV)を得て、該制御点動きベクトルと制御点動きベクトル予測子との間の差(制御点動きベクトル差[control point motion vectors differences]、CPMVD)を計算することができる。次いで、エンコーダ側は、候補動きベクトル・リスト内の制御点動きベクトル予測子の位置を示すインデックス値とCPMVDとをビットストリーム中にエンコードし、さらに、インター予測モードの指示情報をビットストリーム中にエンコードしてもよい。デコーダ側へのその後の伝送を容易にするためである。
具体的な実装において、ビットストリーム中にエンコードされるシンタックス要素については、表1および表2における上記の記述を参照されたい。詳細は、ここでは再度説明しない。
ステップ902b:アフィン動きモデルベースのマージモードに対応する候補動きベクトル・リストを構築する。
本発明のこの実施形態では、現在ブロックの候補制御点動きベクトル(たとえば、候補動きベクトル2タプル/トリプレット/4つ組)は、改善された継承制御点動きベクトル予測方法および/または構築制御点動きベクトル予測方法に基づいて得られ、マージモードに対応する候補動きベクトル・リストに追加されてもよい。
このステップの具体的な実装については、前述の実施形態のステップ802bの説明を参照されたい。詳細は、ここでは再度説明しない。
ステップ903b:レート‐歪みコストに基づいて最適な制御点動き情報を決定する。
一例では、エンコーダ側は、式(3)、(5)または(7)に従って、候補動きベクトル・リストにおける制御点動きベクトル(たとえば、候補動きベクトル2タプル/トリプレット/4つ組)を用いることにより、現在符号化ブロックの各動き補償サブ単位の動きベクトルを得ることができる。また、エンコーダ側は、各動き補償サブ単位の動きベクトルがポイントする参照フレーム内の位置のピクセル値を取得し、そのピクセル値を動き補償サブ単位の予測された値として用いてアフィン動き補償を実行する。現在の符号化ブロックのすべてのピクセルのもとの値と予測された値との差の平均値が計算される。最小の平均値に対応する制御点動きベクトルが最適な制御点動きベクトルとして選択され、最適な制御点動きベクトルが現在符号化ブロックの2つ、3つ、または4つの制御点の動きベクトルとして使用される。
ステップ904b:インデックス値およびインター予測モードの指示情報をビットストリーム中にエンコードする。
一例では、エンコーダ側は、デコーダ側へのその後の伝送を容易にするために、候補リスト内の制御点動きベクトルの位置を示すインデックス値と、インター予測モードの指示情報とをビットストリーム中にエンコードしてもよい。
特定の実装において、ビットストリーム中にエンコードされるシンタックス要素については、表1および表2における前述の記述を参照されたい。詳細は、ここでは再度説明しない。
前述の実施形態は、エンコーダ側がエンコードを実行し、ビットストリームを送るプロセスのみを記載していることに注意しておくべきである。上記の記述によれば、当業者であれば、エンコーダ側は、代替的に、別の手順で、本発明の実施形態に記載される別の方法を実行することもできることを理解する。たとえば、エンコーダ側が現在ブロックを予測するとき、現在ブロックを再構成するプロセスの具体的な実装については、デコーダ側に関して上述した関連する方法(図12の実施形態に示される)を参照されたい。詳細は、ここでは再度説明しない。
本発明のこの実施形態では、改善された継承制御点動きベクトル予測方法が使用されることがわかる。改善された継承制御点動きベクトル予測方法では、近傍のアフィン符号化ブロックの制御点の動きベクトルが使用される必要はないが、近傍のアフィン符号化ブロックの少なくとも2つのサブブロックの動きベクトルが使用される。よって、現在ブロックの候補制御点動きベクトルは、前記少なくとも2つのサブブロックの動きベクトルに基づいて導出され、リストが確立される。最適な候補制御点動きベクトルが得られ、リスト内の最適な候補制御点動きベクトルに対応するインデックス値がデコーダ側に送られる。制御点の動きベクトルは記憶される必要はない。具体的には、現在符号化ブロックの制御点の動きベクトルは、現在符号化ブロックのサブブロックの動きベクトルを導出するためにのみ使用されるが、その後、近傍ブロックの動きベクトル予測のためには使用されない。よって、本発明の解決策では、サブブロックの動きベクトルのみが記憶される必要があり、サブブロックの動きベクトルを用いて動き補償が実行される。これは、動きベクトル記憶問題を解決し、予測精度を改善する。
前述の方法と同じ発明概念に基づいて、本発明のある実施形態は、さらに、装置1000を提供する。装置1000は、参照ブロック取得モジュール1001、サブブロック決定モジュール1002、第1の計算モジュール1003、および第2の計算モジュール1004を含む。
参照ブロック取得モジュール1001は、ビデオ・データ内の処理対象ピクチャー・ブロックの1つの空間的参照ブロックを取得するように構成される。
サブブロック決定モジュール1002は、空間的参照ブロックの複数の事前設定されたサブブロック位置を決定するように構成される。
第1の計算モジュール1003は、事前設定されたサブブロック位置に対応する動きベクトルから外挿される、処理対象ピクチャー・ブロックの事前設定されたピクセル位置に対応する動きベクトルを得るように構成される。
第2の計算モジュール1004は、事前設定されたピクセル位置に対応する動きベクトルから補間される、処理対象ピクチャー・ブロックの複数のサブブロック位置に対応する動きベクトルを得るように構成される。
ある可能な実施形態では、参照ブロック取得モジュール1001は、具体的には、事前設定された順序で、処理対象ピクチャー・ブロックの、事前設定された空間位置にある一つまたは複数の候補参照ブロックの利用可能性を判定し;前記事前設定された順序で、最初の利用可能な候補参照ブロックを取得するように構成されるここで、最初の利用可能な候補参照ブロックが空間的参照ブロックとして使用される。
候補参照ブロックと処理対象ピクチャー・ブロックが同じピクチャー領域にあり、アフィン動きモデルに基づいて候補参照ブロックが符号化されている場合、候補参照ブロックは利用可能であると判定される。
ある可能な実施形態では、事前設定された空間位置における候補参照ブロックは、処理対象ピクチャー・ブロックの真上の近傍ピクチャー・ブロック、真左の近傍ピクチャー・ブロック、右上の近傍ピクチャー・ブロック、左下の近傍ピクチャー・ブロック、および左上の近傍ピクチャー・ブロックを含む。
参照ブロック取得モジュール1001は、具体的には、最初の利用可能な参照ブロックが決定されるまで、真左の近傍ピクチャー・ブロック→真上の近傍ピクチャー・ブロック→右上の近傍ピクチャー・ブロック→左下の近傍ピクチャー・ブロック→左上の近傍ピクチャー・ブロックの順に、候補参照ブロックの利用可能性を逐次チェックするように構成される。
ある可能な実施形態では、空間的参照ブロックまたは処理対象ピクチャー・ブロックのサブブロック位置は、サブブロック内の左上ピクセルの位置、サブブロックの幾何学的中心の位置、またはサブブロック内の幾何学的中心に最も近いピクセルの位置を含む。
ある可能な実施形態では、複数の事前設定されたサブブロック位置のうちの2つの間の距離はSであり、ここで、Sは2のK乗であり、Kは負でない整数である。
ある可能な実施形態では、アフィン動きモデルは4パラメータのアフィン動きモデルであり、前記複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)と第2の事前設定された位置(x4+M/2+P,y4+N/2)とを含み、ここで、x4は、空間的参照ブロックの左上ピクセルの水平座標であり、y4は、空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Pは2のKの冪であり、Kは負でない整数であり、KはUより小さく、Uは空間的参照ブロックの幅である。
ある可能な実施形態では、アフィン動きモデルは、4パラメータのアフィン動きモデルであり、複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)および第3の事前設定された位置(x4+M/2,y4+N/2+Q)を含み、ここで、x4は、空間的参照ブロックの左上ピクセルの水平座標であり、y4は、空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Qは2のR乗であり、Rは負でない整数であり、QはVより小さく、Vは空間的参照ブロックの高さである。
ある可能な実施形態では、事前設定されたピクセル位置は、処理対象ピクチャー・ブロックの
左上ピクセル位置
、処理対象ピクチャー・ブロックの
右上ピクセル位置
、処理対象ピクチャー・ブロックの
左下ピクセル位置
のうちの少なくとも2つを含み、第1の計算モジュール1003は、具体的には、下記の式に従った計算を通じて、処理対象ピクチャー・ブロックの事前設定されたピクセル位置に対応する動きベクトルを得るように構成される。
ここで、vx0は処理対象ピクチャー・ブロックの左上のピクセル位置に対応する動きベクトルの水平成分であり、vy0は処理対象ピクチャー・ブロックの左上のピクセル位置に対応する動きベクトルの垂直成分であり、vx1は処理対象ピクチャー・ブロックの右上のピクセル位置に対応する動きベクトルの水平成分であり、vy1は処理対象ピクチャー・ブロックの右上のピクセル位置に対応する動きベクトルの垂直成分であり、vx2は処理対象ピクチャー・ブロックの左下のピクセル位置に対応する動きベクトルの水平成分であり、vy2は処理対象ピクチャー・ブロックの左下のピクセル位置に対応する動きベクトルの垂直成分であり、vx4は第1の事前設定された位置に対応する動きベクトルの水平成分であり、vy4は第1の事前設定された位置に対応する動きベクトルの垂直成分であり、vx5は第2の事前設定された位置に対応する動きベクトルの水平成分であり、vy5は第2の事前設定された位置に対応する動きベクトルの垂直成分であり、x0は処理対象ピクチャー・ブロックの左上のピクセル位置の水平座標であり、y0は処理対象ピクチャー・ブロックの左上のピクセル位置の垂直座標であり、x1は処理対象ピクチャー・ブロックの右上のピクセル位置の水平座標であり、y1は処理対象ピクチャー・ブロックの右上のピクセル位置の垂直座標であり、x2は処理対象ピクチャー・ブロックの左下のピクセル位置の水平座標であり、y2は処理対象ピクチャー・ブロックの左下のピクセル位置の垂直座標である。
ある可能な実施形態では、事前設定されたピクセル位置は、処理対象ピクチャー・ブロックの左上のピクセル位置と、処理対象ピクチャー・ブロックの右上のピクセル位置とを含み、第2の計算モジュール1004は具体的には、次の式に従った計算を通じて、処理対象ピクチャー・ブロックの複数のサブブロック位置に対応する動きベクトルを得るように構成される。
ここで、Wは処理対象ピクチャー・ブロックの幅であり、vxは複数のサブブロック位置における(x,y)に対応する動きベクトルの水平成分であり、vyは複数のサブブロック位置における(x,y)に対応する動きベクトルの垂直成分である。
ある可能な実施形態では、アフィン動きモデルが6パラメータのアフィン動きモデルであり、前記複数の事前設定されたサブブロック位置は、第1の事前設定された位置(x4+M/2,y4+N/2)、第2の事前設定された位置(x4+M/2+P,y4+N/2)、および第3の事前設定された位置(x4+M/2,y4+N/2+Q)を含み、ここでx4は空間的参照ブロックの左上ピクセルの水平座標であり、y4は空間的参照ブロックの左上ピクセルの垂直座標であり、Mはサブブロック幅であり、Nはサブブロック高さであり、Pは2のK乗であり、Qは2のR乗であり、KおよびRは負でない整数であり、PはUより小さく、QはVより小さく、Uは空間的参照ブロックの幅であり、Vは空間的参照ブロックの高さである。
ある可能な実施形態では、事前設定されたピクセル位置は、処理対象ピクチャー・ブロックの左上のピクセル位置、処理対象ピクチャー・ブロックの右上のピクセル位置、および処理対象ピクチャー・ブロックの左下のピクセル位置を含み、第1の計算モジュール1003は具体的には、次の式に従った計算を通じて、処理対象ピクチャー・ブロックの事前設定されたピクセル位置に対応する動きベクトルを得るように構成される。
ここで、vx0は処理対象ピクチャー・ブロックの左上のピクセル位置に対応する動きベクトルの水平成分であり、vy0は処理対象ピクチャー・ブロックの左上のピクセル位置に対応する動きベクトルの垂直成分であり、vx1は処理対象ピクチャー・ブロックの右上のピクセル位置に対応する動きベクトルの水平成分であり、vy1は処理対象ピクチャー・ブロックの右上のピクセル位置に対応する動きベクトルの垂直成分であり、vx2は処理対象ピクチャー・ブロックの左下のピクセル位置に対応する動きベクトルの水平成分であり、vy2は処理対象ピクチャー・ブロックの左下のピクセル位置に対応する動きベクトルの垂直成分であり、vx4は第1の事前設定された位置に対応する動きベクトルの水平成分であり、vy4は第1の事前設定された位置に対応する動きベクトルの垂直成分であり、vx5は第2の事前設定された位置に対応する動きベクトルの水平成分であり、vy5は第2の事前設定された位置に対応する動きベクトルの垂直成分であり、vx6は第3の事前設定された位置に対応する動きベクトルの水平成分であり、vy6は第3の事前設定された位置に対応する動きベクトルの垂直成分であり、x0は処理対象ピクチャー・ブロックの左上のピクセル位置の水平座標であり、y0は処理対象ピクチャー・ブロックの左上のピクセル位置の垂直座標であり、x1は処理対象ピクチャー・ブロックの右上のピクセル位置の水平座標であり、y1は処理対象ピクチャー・ブロックの右上のピクセル位置の垂直座標であり、x2は処理対象ピクチャー・ブロックの左下のピクセル位置の水平座標であり、y2は処理対象ピクチャー・ブロックの左下のピクセル位置の垂直座標である。
ある可能な実施形態では、第2の計算モジュール1004は具体的には、次の式に従った計算を通じて、処理対象ピクチャー・ブロックの複数のサブブロック位置に対応する動きベクトルを得るように構成される。
ここで、Wは処理対象ピクチャー・ブロックの幅であり、Hは処理対象ピクチャー・ブロックの高さであり、vxは複数のサブブロック位置における(x,y)に対応する動きベクトルの水平成分であり、vyは複数のサブブロック位置における(x,y)に対応する動きベクトルの垂直成分である。
ある可能な実施形態では、処理対象ピクチャー・ブロックの上の境界が、処理対象ピクチャー・ブロックを含む符号化ツリー単位CTUの上の境界と一致し、空間的参照ブロックが、処理対象ピクチャー・ブロックの真上、処理対象ピクチャー・ブロックの左上または処理対象ピクチャー・ブロックの右上にある場合、前記複数の事前設定されたサブブロック位置に対応するサブブロックのうちの少なくとも2つが、処理対象ピクチャー・ブロックの上の境界に隣接している。
ある可能な実施形態では、処理対象ピクチャー・ブロックの左の境界が、処理対象ピクチャー・ブロックを含む符号化ツリー単位CTUの左の境界と一致し、空間的参照ブロックが処理対象ピクチャー・ブロックの真左、処理対象ピクチャー・ブロックの左上、または処理対象ピクチャー・ブロックの左下にある場合、前記複数の事前設定されたサブブロック位置に対応するサブブロックのうちの少なくとも2つが、処理対象ピクチャー・ブロックの左の境界に隣接している。
本発明の上記の実施形態では、前記複数のサブブロック位置に対応する補間された動きベクトルは、前記複数のサブブロックを予測するために別個に使用される。
参照ブロック取得モジュール1001、サブブロック決定モジュール1002、第1の計算モジュール1003、第2の計算モジュール1004は、エンコーダ側またはデコーダ側のインター予測プロセスにおいて使用されてもよいことを注意しておくべきである。具体的には、エンコーダ側では、これらのモジュールは、エンコーダ20の予測処理ユニット260内のインター予測ユニット244において、使用されてもよい。デコーダ側では、これらのモジュールは、デコーダ30の予測処理ユニット360内のインター予測ユニット344において使用されてもよい。
さらに、参照ブロック取得モジュール1001、サブブロック決定モジュール1002、第1の計算モジュール1003、および第2の計算モジュール1004の具体的な実装プロセスについては、図11、図12、および図14の実施形態における詳細な説明を参照することに注意しておくべきである。本明細書の簡潔のため、詳細はここでは記載しない。
一つまたは複数の例において、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせによって実現されうる。ソフトウェアによって実装される場合、それらの機能は、一つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶されるか、または、コンピュータ可読媒体を通じて伝送され、ハードウェアベースの処理ユニットによって実行される。コンピュータ読み取り可能媒体は、データ記憶媒体のような有体の媒体に対応するコンピュータ読み取り可能記憶媒体または通信媒体を含んでいてもよい。通信媒体は、たとえば、通信プロトコルに従って、ある場所から他の場所へのコンピュータ・プログラムの伝送を容易にする任意の媒体を含む。このように、コンピュータ読み取り可能媒体は、一般に、非一時的な有体なコンピュータ読み取り可能記憶媒体または通信媒体、たとえば、信号または搬送波に対応しうる。データ記憶媒体は、本発明に記載される技術を実装するための命令、コード、および/またはデータ構造を取り出すために、一つまたは複数のコンピュータまたは一つまたは複数のプロセッサによってアクセスされることができる任意の使用可能な媒体でありうる。コンピュータ・プログラム製品は、コンピュータ読み取り可能媒体を含みうる。
限定ではなく例として、そのようなコンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクメモリ、磁気ディスクメモリまたは他の磁気記憶装置、フラッシュメモリ、または命令またはデータ構造の形で所望のプログラム・コードを記憶するために使用でき、コンピュータによってアクセスされることができる他の任意の媒体を含みうる。加えて、任意の接続は、コンピュータ読み取り可能媒体と適切に称されうる。たとえば、同軸ケーブル、光ファイバー、ツイストペア、デジタル加入者線(digital subscriber line、DSL)、または赤外線、電波、マイクロ波などの無線技術を用いて、ウェブサイト、サーバー、または他のリモートソースから命令が送信される場合、その同軸ケーブル、光ファイバー、ツイストペア、DSL、または赤外線、電波、マイクロ波などの無線技術が媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能な記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、実際には非一時的な有体な記憶媒体を意味することが理解されるべきである。本明細書において使用されるところでは、ディスク(disk)およびディスク(disc)は、コンパクトディスク(compact disc、CD)、レーザディスク、光ディスク、デジタル多用途ディスク(digital versatile disc、DVD)、フロッピーディスク、およびブルーレイディスクを含む。ディスク(disk)は通例、磁気的にデータを再生するが、ディスク(disc)はレーザーを用いて光学的にデータを再生する。前述の項目の組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれるべきである。
前述の実施形態では、各実施形態の記述はそれぞれの焦点を有する。ある実施形態において詳細に説明されていない部分については、他の実施形態における関連する説明を参照されたい。