以下は、本発明の実施形態における添付の図面を参照して本発明の実施形態を説明する。以下の説明では、本開示の一部を形成し、例として、本発明の実施形態の特定の態様または本発明の実施形態が使用され得る特定の態様を示す、添付の図面への参照が行われる。本発明の実施形態は、他の態様において使用されてもよく、添付の図面に図示されない構造的なまたは論理的な変更を含んでもよいことを理解されたい。したがって、以下の詳細な説明は、限定的な意味で理解されるべきではなく、本発明の範囲は添付の特許請求の範囲によって定義される。たとえば、説明される方法を参照して開示される内容は、方法を実行するように構成される対応するデバイスまたはシステムにも適用可能であり、その逆も然りであることを理解されたい。たとえば、1つまたは複数の特定の方法ステップが説明される場合、対応するデバイスは、説明された1つまたは複数の方法ステップを実行するための機能ユニット(たとえば、1つのユニットが1つまたは複数のステップを実行し、または、その各々が複数のステップのうちの1つまたは複数を実行する複数のユニット)などの1つまたは複数のユニットを、そのような1つまたは複数のユニットが添付の図面において明示的に説明または図示されない場合であっても含み得る。加えて、たとえば、特定の装置が、機能ユニットなどの1つまたは複数のユニットに基づいて説明される場合、対応する方法は、1つまたは複数のユニットの1つまたは複数の機能を実行するために使用されるステップ(たとえば、1つまたは複数のユニットの1つまたは複数の機能を実行するために使用される1つのステップ、またはその各々が複数のユニットの中の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の両方が、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合されるメモリとを含み得る。メモリは、限定はされないが、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に移動することが可能な、1つまたは複数の媒体または装置を含み得る。ある例では、リンク13は、ソースデバイス12が符号化されたビデオデータをデスティネーションデバイス14にリアルタイムで直接送信することを可能にする、1つまたは複数の通信媒体を含み得る。この例では、ソースデバイス12は、通信規格(たとえば、ワイヤレス通信プロトコル)に従って、符号化されたビデオデータを変調してもよく、変調されたビデオデータをデスティネーションデバイス14に送信してもよい。1つまたは複数の通信媒体は、ワイヤレス通信媒体および/または有線通信媒体、たとえば、無線周波数(RF)スペクトルまたは1つまたは複数の物理送信ケーブルを含み得る。1つまたは複数の通信媒体は、パケットベースのネットワークの一部を構成してもよく、パケットベースのネットワークは、たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)である。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、ソースデバイス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がインターフェースを含むとき、インターフェースは、たとえば、外部ビデオソースからピクチャを受信するための外部インターフェースであり得る。外部ビデオソースは、たとえば、カメラ、外部メモリ、または外部ピクチャ生成デバイスなどの外部ピクチャキャプチャデバイスである。外部ピクチャ生成デバイスは、たとえば、外部コンピュータグラフィクス処理ユニット、コンピュータ、またはサーバである。インターフェースは、任意のプロプライエタリインターフェースプロトコルまたは標準化されたインターフェースプロトコルに従って、任意のタイプのインターフェース、たとえば、有線インターフェースまたはワイヤレスインターフェースまたは光学インターフェースであり得る。
ピクチャは、ピクセル(ピクチャ要素)の2次元アレイまたは行列として見なされ得る。アレイの中のピクセルはサンプルとも呼ばれ得る。アレイのピクチャの水平方向および垂直方向(または軸)の中のサンプルの量は、ピクチャのサイズおよび/または分解能を定義する。色の表現のために、3つの色成分が通常は使用される。たとえば、ピクチャは、3つのサンプルアレイとして表現されてもよく、またはそれを含んでもよい。たとえば、RBGフォーマットまたは色空間において、ピクチャは、対応する赤、緑、および青のサンプルアレイを含む。しかしながら、ビデオコーディングにおいて、各ピクセルは通常、ルマ/クロマフォーマットまたは色空間において表現される。たとえば、YUVフォーマットのピクチャは、Yによって示される(または場合によってはLによって示される)ルマ成分およびUとVによって示される2つのクロマ成分を含む。輝度(ルマ)成分Yは、明るさまたはグレーレベルの強度(たとえば、グレースケールピクチャでは両方が同じである)を表し、2つの彩度(クロマ)成分UおよびVは、クロマまたは色情報成分を表す。それに対応して、YUVフォーマットのピクチャは、ルマサンプル値(Y)のルマサンプルアレイおよびクロマ値の2つのクロマサンプルアレイ(UおよびV)を含む。RGBフォーマットのピクチャは、YUVフォーマットへと変換または転換されてもよく、逆もまた然りである。この処理は、色転換または色変換とも呼ばれる。ピクチャがモノクロームである場合、ピクチャはルマサンプルアレイを含み得る。本発明のこの実施形態では、ピクチャプロセッサにピクチャソース16によって送信されるピクチャは、生のピクチャデータ17とも呼ばれ得る。
ピクチャプリプロセッサ18は、生のピクチャデータ17を受信し、生のピクチャデータ17に対して前処理を実行して、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するように構成される。たとえば、ピクチャプリプロセッサ18によって実行される前処理は、トリミング、カラーフォーマット変換(たとえば、RGBフォーマットからYUVフォーマット)、カラーコレクション、またはノイズ除去を含み得る。
エンコーダ20(またはビデオエンコーダ20と呼ばれる)は、前処理されたピクチャデータ19を受信し、符号化されたピクチャデータ21を提供するために、関連する予測モード(本明細書の実施形態における予測モードなど)で前処理されたピクチャデータ19を処理するように構成される(エンコーダ20の構造的な詳細は、図2、図4、または図5に基づいて以下でさらに説明される)。いくつかの実施形態では、エンコーダ20は、本発明において説明されるクロマブロック予測方法のエンコーダ側の適用を実施するために、以下で説明される様々な実施形態を実行するように構成され得る。
通信インターフェース22は、符号化されたピクチャデータ21を受信し、記憶または直接の再構築のために、リンク13を通じて、符号化されたピクチャデータ21をデスティネーションデバイス14または任意の他のデバイス(たとえば、メモリ)に送信するように構成され得る。任意の他のデバイスは、復号または記憶のために使用される任意の他のデバイスであり得る。通信インターフェース22は、たとえば、リンク13を介した送信のために、符号化されたピクチャデータ21を適切なフォーマット、たとえばデータパケットへとカプセル化するように構成され得る。
デスティネーションデバイス14はデコーダ30を含む。任意選択で、デスティネーションデバイス14はさらに、通信インターフェース28、ピクチャポストプロセッサ32、およびディスプレイデバイス34を含み得る。説明は次のように別々に与えられる。
通信インターフェース28は、ソースデバイス12または任意の他のソースから符号化されたピクチャデータ21を受信するように構成され得る。任意の他のソースは、たとえばストレージデバイスである。ストレージデバイスは、たとえば、符号化ピクチャデータストレージデバイスである。通信インターフェース28は、ソースデバイス12とデスティネーションデバイス14との間のリンク13を通じて、または任意のタイプのネットワークを通じて、符号化されたピクチャデータ21を送信または受信するように構成され得る。リンク13は、たとえば、直接の有線接続またはワイヤレス接続である。任意のタイプのネットワークが、たとえば、有線ネットワークもしくはワイヤレスネットワークもしくはこれらの任意の組合せ、または、任意のタイプのプライベートネットワークもしくはパブリックネットワークもしくはこれらの任意の組合せである。通信インターフェース28は、たとえば、符号化されたピクチャデータ21を取得するために、通信インターフェース22を通じて送信されるデータパケットをカプセル化解除するように構成され得る。
通信インターフェース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は、任意のタイプのハンドヘルドデバイスもしくは固定式デバイス、たとえば、ノートブックもしくはラップトップコンピュータ、携帯電話、スマートフォン、タブレットもしくはタブレットコンピュータ、ビデオカメラ、デスクトップコンピュータ、セットトップボックス、テレビジョン、カメラ、車載デバイス、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、放送受信機デバイス、または放送送信機デバイスを含む、広範囲のデバイスのいずれか1つを含んでもよく、任意のタイプのオペレーティングシステムを使用してもしなくてもよい。
エンコーダ20およびデコーダ30は各々、様々な適切な回路、たとえば、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、特定用途向け集積回路(application-specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、ディスクリート論理回路、ハードウェア、またはこれらの任意の組合せのいずれか1つとして実装され得る。技術がソフトウェアを使用することによって部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア命令を記憶してもよく、本開示の技術を実行するために、1つまたは複数のプロセッサなどのハードウェアを使用することによって命令を実行してもよい。前述の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれか1つが、1つまたは複数のプロセッサとして見なされ得る。
いくつかの場合、図1Aに示されるビデオ符号化および復号システム10は例にすぎず、本出願の技術は、符号化デバイスと復号デバイスとの間のどのようなデータ通信も必ずしも含まないビデオコーディング環境(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データは、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われ得る。ビデオ符号化デバイスは、データを符号化し、符号化されたデータをメモリへと記憶してもよく、および/または、ビデオ復号デバイスは、メモリからデータを取り出し、データを復号してもよい。いくつかの例では、符号化および復号は、互いに通信せず、単にデータをメモリへと符号化し、しかし、および/またはメモリからデータを取り出し、データを復号する、デバイスによって実行される。
図1Bは、ある例示的な実施形態による、図2のエンコーダ20および/または図3のデコーダ30を含むビデオコーディングシステム40の例の図を示す。ビデオコーディングシステム40は、本発明の実施形態において様々な技術の組合せを実施することができる。示される実装形態では、ビデオコーディングシステム40は、イメージングデバイス41、エンコーダ20、デコーダ30(および/または処理ユニット46の論理回路47によって実装されるビデオエンコーダ/デコーダ)、アンテナ42、1つまたは複数のプロセッサ43、1つまたは複数のメモリ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は、ピクチャバッファ(これは、処理ユニット2820またはメモリ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は、ピクチャブロック203などの複数のブロックへとピクチャ201を区分するように構成される、区分ユニット(図2に図示されない)を含み得る。ピクチャ201は通常、複数の重複しないブロックへと区分される。区分ユニットは、ビデオシーケンスの中のすべてのピクチャに対する同じブロックサイズと、そのブロックサイズを定義する対応するグリッドとを使用し、または、ピクチャ間またはピクチャのサブセットもしくはグループ間でブロックサイズを変更し、各ピクチャを対応するブロックへと区分するように構成され得る。
ある例では、エンコーダ20の予測処理ユニット260は、上で説明された区分技術の任意の組合せを実行するように構成され得る。
ピクチャ201のように、ピクチャブロック203は、サンプル値を伴うサンプルの二次元アレイまたは行列でもあり、またはそれとして見なされてもよいが、ピクチャブロック203のサイズは、ピクチャ201のサイズより小さい。言い換えると、ピクチャブロック203は、たとえば、1つのサンプルアレイ(たとえば、モノクロームピクチャ201の場合はルマアレイ)、3つのサンプルアレイ(たとえば、カラーピクチャの場合は1つのルマアレイおよび2つのクロマアレイ)、または適用されるカラーフォーマットに応じて任意の他の量および/もしくはタイプのアレイを含み得る。ピクチャブロック203の水平方向および垂直方向(または軸)におけるサンプルの量は、ピクチャブロック203のサイズを定義する。
図2に示されるエンコーダ20は、ピクチャ201をブロックごとに符号化し、たとえば、各ピクチャブロック203上で符号化と予測を実行するように構成される。
残差計算ユニット204は、サンプル領域における残差ブロック205を取得するために、たとえば、サンプルごとに(ピクセルごとに)ピクチャブロック203のサンプル値から予測ブロック265のサンプル値を差し引くことによって、ピクチャブロック203および予測ブロック265(予測ブロック265についての他の詳細は以下で与えられる)に基づいて残差ブロック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は、量子化ユニット208の逆量子化を量子化係数に適用して量子化解除された係数211を取得し、たとえば、量子化ユニット208と同じ量子化ステップに基づいて、またはそれを使用することによって、量子化ユニット208によって適用される量子化スキームの逆を適用するように構成される。量子化解除された係数211はまた、量子化解除された残差係数211とも呼ばれ、変換係数207に対応し得るが、量子化解除された係数211は通常、量子化により引き起こされる損失により変換係数とは異なる。
逆変換処理ユニット212は、サンプル領域において逆変換ブロック213を取得するために、変換処理ユニット206によって適用される変換の逆変換、たとえば、逆離散コサイン変換(discrete cosine transform、DCT)または逆離散サイン変換(discrete sine transform、DST)を適用するように構成される。逆変換ブロック213はまた、逆変換量子化解除されたブロック213または逆変換残差ブロック213とも呼ばれ得る。
再構築ユニット214(たとえば、加算器214)は、サンプル領域の中の再構築されたブロック215を取得するために、たとえば、再構築された残差ブロック213のサンプル値および予測ブロック265のサンプル値を加算することによって、逆変換ブロック213(すなわち、再構築された残差ブロック213)を予測ブロック265に加算するように構成される。
任意選択で、たとえばラインバッファ216のバッファユニット216(略して「バッファ」216)は、たとえばイントラ予測のために、再構築されたブロック215および対応するサンプル値をバッファリングまたは記憶するように構成される。他の実施形態では、エンコーダは、任意のタイプの推定および/または予測、たとえばイントラ予測のために、バッファユニット216に記憶されている、フィルタリングされていない再構築されたブロックおよび/または対応するサンプル値を使用するように構成され得る。
たとえば、ある実施形態では、バッファユニット216が、イントラ予測254のためだけに使用されるのではなくループフィルタユニット220(図2に示されない)のためにも使用される再構築されたブロック215を記憶するように構成されるように、および/または、たとえば、バッファユニット216および復号ピクチャバッファ230が1つのバッファを形成するように、エンコーダ20が構成され得る。他の実施形態では、フィルタリングされたブロック221および/または復号ピクチャバッファ230(ブロックまたはサンプルは図2に示されない)からのブロックもしくはサンプルが、イントラ予測ユニット254のための入力または基礎として使用される。
ループフィルタユニット220(略して「ループフィルタ」220)は、ピクセル遷移を滑らかにするために、またはビデオ品質を高めるために、再構築されたブロック215をフィルタリングして、フィルタリングされたブロック221を取得するように構成される。ループフィルタユニット220は、1つまたは複数のループフィルタ、たとえば、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter、ALF)、先鋭化フィルタ、平滑化フィルタ、もしくは協調フィルタなどの別のフィルタを表すことが意図される。ループフィルタユニット220は図2ではループ内フィルタとして示されているが、別の構成では、ループフィルタユニット220はポストループフィルタとして実装され得る。フィルタリングされたブロック221は、フィルタリングされた再構築されたブロック221とも呼ばれ得る。復号ピクチャバッファ230は、ループフィルタユニット220が再構築された符号化されたブロックに対してフィルタリング動作を実行した後、再構築された符号化されたブロックを記憶し得る。
ある実施形態では、たとえば、デコーダ30が復号のために同じループフィルタパラメータを受信して適用できるように、エンコーダ20(それに対応して、ループフィルタユニット220)は、たとえば、直接、または、エントロピー符号化ユニット270もしくは任意の他のエントロピー符号化ユニットによって実行されるエントロピー符号化の後で、ループフィルタパラメータ(たとえば、サンプル適応オフセット情報)を出力するように構成され得る。
復号ピクチャバッファ(decoded picture buffer、DPB)230は、エンコーダ20によるビデオデータ符号化において使用するための参照ピクチャデータを記憶する参照ピクチャメモリであり得る。DPB230は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)(同期DRAM(synchronous DRAM、SDRAM)、磁気抵抗RAM(magnetoresistive RAM、MRAM)、および抵抗性RAM(resistive RAM、RRAM))、または別のタイプのメモリデバイスなどの、種々のメモリデバイスのいずれか1つによって形成され得る。DPB230およびバッファ216は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。ある例では、復号ピクチャバッファ(decoded picture buffer、DPB)230は、フィルタリングされたブロック221を記憶するように構成される。復号ピクチャバッファ230はさらに、同じ現在のピクチャまたは異なるピクチャ、たとえば、以前に再構築されたピクチャの、別の以前にフィルタリングされたブロック、たとえば以前に再構築されフィルタリングされたブロック221を記憶するように構成されてもよく、完全な以前に再構築された、すなわち復号されたピクチャ(および対応する参照ブロックとサンプル)および/または部分的に再構築された現在のピクチャ(および対応する参照ブロックとサンプル)を、たとえばインター予測のために提供してもよい。ある例では、再構築されたブロック215がループ内フィルタリングなしで再構築される場合、復号ピクチャバッファ(decoded picture buffer、DPB)230は、再構築されたブロック215を記憶するように構成される。
ブロック予測処理ユニット260とも呼ばれる予測処理ユニット260は、ピクチャブロック203(現在のピクチャ201の現在のピクチャブロック203)および再構築されたピクチャデータ、たとえば、バッファ216からの同じ(現在の)ピクチャの参照サンプル、および/もしくは、復号ピクチャバッファ230からの1つまたは複数の以前に復号されたピクチャの参照ピクチャデータ231を受信または取得するように構成され、予測のために、すなわちインター予測ブロック245またはイントラ予測ブロック255であり得る予測ブロック265を提供するために、そのようなデータを処理するように構成される。
モード選択ユニット262は、残差ブロック205を計算して再構築されたブロック215を再構築するために、予測ブロック265として使用されるべき予測モード(たとえば、イントラ予測モードまたはインター予測モード)および/または対応する予測ブロック245もしくは255を選択するように構成され得る。
ある実施形態では、モード選択ユニット262は、予測モードを選択する(たとえば、予測処理ユニット260によってサポートされる予測モードから)ように構成されてもよく、予測モードは、最良の一致もしくは最小の残差(最小の残差は送信または記憶のためのより良い圧縮を意味する)をもたらし、または、最小のシグナリングオーバーヘッド(最小のシグナリングオーバーヘッドは送信または記憶のためのより良い圧縮を意味する)をもたらし、またはこれらの両方を考慮し、もしくはバランスをとる。モード選択ユニット262は、レート歪み最適化(rate-distortion optimization、RDO)に基づいて予測モードを決定し、具体的には、最小のレート歪み最適化をもたらす予測モードを選択し、または関連するレート歪みが少なくとも予測モード選択基準を満たすような予測モードを選択するように構成され得る。
以下は詳細に、エンコーダ20の例において(たとえば、予測処理ユニット260によって)実行される予測処理および(たとえば、モード選択ユニット262によって)実行されるモード選択を説明する。
上で説明されたように、エンコーダ20は、(所定の)予測モードのセットから最適なまたは最高の予測モードを、決定または選択するように構成される。予測モードのセットは、たとえば、イントラ予測モードおよび/またはインター予測モードを含み得る。
イントラ予測モードのセットは、35個の異なるイントラ予測モード、たとえば、DC(または平均)モードおよび平面モードなどの非指向性モード、もしくはH.265において定義されるものなどの指向性モードを含んでもよく、または、67個の異なるイントラ予測モード、たとえば、DC(または平均)モードおよび平面モードなどの非指向性モード、もしくは開発中のH.266において定義されるものなどの指向性モードを含んでもよい。
ある可能な実装形態では、インター予測モードのセットは、利用可能な参照ピクチャ(すなわち、たとえば、上で説明されたような、DBP230に記憶されている復号されたピクチャの少なくとも一部)および他のインター予測パラメータに依存し、たとえば、最適な一致する参照ブロックを探すために、参照ピクチャ全体が使用されるか、もしくは参照ピクチャの一部のみ、たとえば、現在のブロックの領域の周りの探索ウィンドウ領域が使用されるかに依存し、ならびに/または、たとえば、2分の1ピクセル補間および/もしくは4分の1ピクセル補間などのピクセル補間が適用されるかどうかに依存する。インター予測モードのセットは、たとえば、進化型動きベクトル予測(Advanced Motion Vector Prediction、AMVP)モードおよびマージ(merge)モードを含み得る。特定の実装形態の間、インター予測モードのセットは、制御点に基づくAMVPモードと、本発明の実施形態において改善される制御点に基づくマージモードとを含み得る。ある例では、イントラ予測ユニット254は、以下で説明されるインター予測技術の任意の組合せを実行するように構成され得る。
前述の予測モードに加えて、スキップモードおよび/またはダイレクトモードは、本発明の実施形態においても適用され得る。
予測処理ユニット260はさらに、たとえば、四分木(quadtree、QT)区分、二分木(binary tree、BT)区分、三分木(triple tree、TT)区分、またはこれらの任意の組合せを繰り返し使用することによって、ピクチャブロック203をより小さいブロック区分またはサブブロックへと区分し、たとえば、ブロック区分またはサブブロックの各々に対して予測を実行するように構成され得る。モード選択は、区分されたピクチャブロック203の木構造の選択およびブロック区分またはサブブロックの各々に対して適用される予測モードの選択を含む。
インター予測ユニット244は、動き推定(motion estimation、ME)ユニット(図2に示されない)および動き補償(motion compensation、MC)ユニット(図2に示されない)を含み得る。動き推定ユニットは、ピクチャブロック203(現在のピクチャ201の現在のピクチャブロック203)および復号されたピクチャ231、または少なくとも1つまたは複数の以前に再構築されたブロック、たとえば、他の/異なる以前に復号されたピクチャ231の1つまたは複数の再構築されたブロックを、動き推定のために受信または取得するように構成される。たとえば、ビデオシーケンスは、現在のピクチャおよび以前に復号されたピクチャ31を含んでもよく、または言い換えると、現在のピクチャおよび以前に復号されたピクチャ31は、ビデオシーケンスを形成するピクチャのシーケンスの一部であってもよく、もしくはそれを形成してもよい。
たとえば、エンコーダ20は、複数の他のピクチャの中の同じピクチャまたは異なるピクチャの複数の参照ブロックからある参照ブロックを選択し、動き推定ユニット(図2に示されない)のために、参照ピクチャを提供し、および/または、参照ブロックの位置(座標XおよびY)と現在のブロックの位置との間のオフセット(空間オフセット)をインター予測パラメータとして提供するように構成され得る。このオフセットは動きベクトル(motion vector、MV)とも呼ばれる。
動き補償ユニットは、インター予測パラメータを取得し、インター予測ブロック245を取得するためにインター予測パラメータに基づいて、またはそれを使用することによってインター予測を実行するように構成される。動き補償ユニット(図2に示されない)によって実行される動き補償は、動き推定を通じて(場合によってはサブピクセル精度で補間を実行することによって)決定される動き/ブロックベクトルに基づいて、予測ブロックをフェッチまたは生成することを含み得る。補間フィルタリングは、既知のピクセルサンプルから追加のピクセルサンプルを生成し得る。これは、場合によっては、ピクチャブロックをコーディングするために使用され得る予測ブロック候補の量を増やす。現在のピクチャブロックのPUのための動きベクトルを受信すると、動き補償ユニット246は、1つの参照ピクチャリストにおいて動きベクトルが指し示す予測ブロックを特定し得る。動き補償ユニット246はさらに、デコーダ30によってビデオスライスのピクチャブロックを復号するための、ブロックおよびビデオスライスと関連付けられるシンタックス要素を生成し得る。
具体的には、インター予測ユニット244は、シンタックス要素をエントロピー符号化ユニット270に送信してもよく、シンタックス要素は、インター予測パラメータ(複数のインター予測モードを網羅した後で現在のブロックの予測のために使用されるインター予測モードの選択の指示情報など)を含む。ある可能な適用シナリオでは、1つだけのインター予測モードがある場合、インター予測パラメータは代替的に、シンタックス要素において搬送されないことがある。この場合、デコーダ30は、デフォルト予測モードで復号を直接実行してもよい。インター予測ユニット244は、インター予測技術の任意の組合せを実行するように構成され得ることが理解され得る。
イントラ予測ユニット254は、ピクチャブロック203(現在のピクチャブロック)および同じピクチャの1つまたは複数の以前に再構築されたブロック、たとえば、再構築された隣接ブロックを、イントラ推定のために取得し、たとえば受信するように構成される。たとえば、エンコーダ20は、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成され得る。
ある実施形態では、エンコーダ20は、たとえば、最小の残差(たとえば、現在のピクチャブロック203に最も類似している予測ブロック255を提供するイントラ予測モード)または最小のレート歪みに基づいて、最適化基準に従ってイントラ予測モードを選択するように構成され得る。
イントラ予測ユニット254はさらに、たとえば、選択されたイントラ予測モードにおけるイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するように構成される。いずれの場合でも、ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット254はさらに、イントラ予測パラメータ、すなわち、ブロックのための選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット270に提供するように構成される。ある例では、イントラ予測ユニット254は、イントラ予測技術の任意の組合せを実行するように構成され得る。
具体的には、イントラ予測ユニット254は、シンタックス要素をエントロピー符号化ユニット270に送信してもよく、シンタックス要素は、イントラ予測パラメータ(複数のイントラ予測モードを網羅した後で現在のブロックの予測のために使用されるイントラ予測モードの選択の指示情報など)を含む。ある可能な適用シナリオでは、1つだけのイントラ予測モードがある場合、イントラ予測パラメータは代替的に、シンタックス要素において搬送されないことがある。この場合、デコーダ30は、デフォルト予測モードで復号を直接実行してもよい。
エントロピー符号化ユニット270は、エントロピー符号化アルゴリズムまたはスキーム(たとえば、可変長コーディング(variable length coding、VLC)スキーム、コンテキスト適応VLC(context adaptive VLC、CALVC)スキーム、算術コーディングスキーム、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding、CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding、SBAC)、確率間隔区分エントロピー(probability interval partitioning entropy、PIPE)コーディング、または別のエントロピー符号化方法もしくは技法)を、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、および/またはループフィルタパラメータのうちの1つまたはすべてに適用し(または適用をスキップし)、たとえば符号化されたビットストリーム21の形で、出力272を通じて出力され得る符号化されたピクチャデータ21を取得するように構成される。符号化されたビットストリームは、ビデオデコーダ30に送信され、または、ビデオデコーダ30による後の送信もしくは取り出しのためにアーカイブされ得る。エントロピー符号化ユニット270はさらに、符号化されている現在のビデオスライスのために別のシンタックス要素をエントロピー符号化するように構成され得る。
ビデオエンコーダ20の別の構造的な変形が、ビデオビットストリームを符号化するために使用され得る。たとえば、非変換ベースのエンコーダ20は直接、一部のブロックまたはフレームに対して、変換処理ユニット206なしで残差信号を量子化することができる。別の実装形態では、エンコーダ20は、単一のユニットへと組み合わせられる量子化ユニット208および逆量子化ユニット210を有し得る。
具体的には、本発明のこの実施形態において、エンコーダ20は、以下の実施形態において説明される動きベクトル予測方法を実施するように構成され得る。
ビデオエンコーダ20の別の構造的な変形が、ビデオビットストリームを符号化するために使用され得ることを理解されたい。たとえば、一部のピクチャブロックまたはピクチャフレームに対して、ビデオエンコーダ20は直接残差信号を量子化してもよく、変換処理ユニット206による処理は必要ではなく、それに対応して、逆変換処理ユニット212による処理も必要ではない。代替として、一部のピクチャブロックまたはピクチャフレームに対して、ビデオエンコーダ20は残差データを生成せず、それに対応して、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、および逆変換処理ユニット212による処理は必要ではない。代替的に、ビデオエンコーダ20は、再構築されたピクチャブロックを参照ブロックとして直接記憶してもよく、フィルタ220による処理は必要ではない。代替的に、ビデオエンコーダ20の中の量子化ユニット208および逆量子化ユニット210は組み合わせられてもよい。ループフィルタ220は任意選択であり、無損失圧縮コーディングの場合、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、および逆変換処理ユニット212は任意選択である。異なる適用シナリオによれば、インター予測ユニット244およびイントラ予測ユニット254は選択的に有効にされ得ることを理解されたい。
図3は、本発明の実施形態を実装するためのデコーダ30の例の概略/概念ブロック図である。ビデオデコーダ30は、復号されたピクチャ231を取得するために、たとえばエンコーダ20による符号化を通じて取得される、符号化されたピクチャデータ(たとえば、符号化されたビットストリーム)21を受信するように構成される。復号処理において、ビデオデコーダ30は、ビデオエンコーダ20からのビデオデータ、たとえば、符号化されたビデオスライスのピクチャブロックを表現する符号化されたビデオビットストリーム、および関連するシンタックス要素を受信する。
図3の例では、デコーダ30は、エントロピー復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構築ユニット314(たとえば、加算器314)、バッファ316、ループフィルタ320、復号ピクチャバッファ330、および予測処理ユニット360を含む。予測処理ユニット360は、インター予測ユニット344、イントラ予測ユニット354、およびモード選択ユニット362を含み得る。いくつかの例では、ビデオデコーダ30は、図2のビデオエンコーダ20を参照して説明される符号化処理と全般に逆の復号処理を実行し得る。
エントロピー復号ユニット304は、たとえば、量子化された係数309および/または復号されたコーディングパラメータ(図3に示されない)、たとえば、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/または(復号される)別のシンタックス要素のうちのいずれか1つまたはすべてを取得するために、符号化されたピクチャデータ21に対してエントロピー復号を実行するように構成される。エントロピー復号ユニット304はさらに、インター予測パラメータ、イントラ予測パラメータ、および/または別のシンタックス要素を予測処理ユニット360に転送するように構成される。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
逆量子化ユニット310は、逆量子化ユニット110と同じ機能を有し得る。逆変換処理ユニット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は、DPB330に記憶されている参照ピクチャに基づいてデフォルト構築技術を使用することによって、リスト0およびリスト1という参照フレームリストを構築し得る。
予測処理ユニット360は、動きベクトルおよび別のシンタックス要素を解析することによって、現在のビデオスライスのビデオブロックのための予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成するように構成される。本発明の例では、予測処理ユニット360は、現在のビデオスライスのビデオブロックを復号するために、いくつかの受信されたシンタックス要素を使用することによって、ビデオスライスのビデオブロックを符号化するための予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数の構築情報、スライスの各々のインター符号化されたビデオブロックのための動きベクトル、スライスの各々のインター符号化されたビデオブロックのインター予測ステータス、および他の情報を決定する。本開示の別の例では、ビットストリームからビデオデコーダ30によって受信されるシンタックス要素は、適応パラメータセット(adaptive parameter set、APS)、シーケンスパラメータセット(sequence parameter set、SPS)、ピクチャパラメータセット(picture parameter set、PPS)、またはスライスヘッダのうちの1つまたは複数の中のシンタックス要素を含む。
逆量子化ユニット310は、ビットストリームにおいて提供され、エントロピー復号ユニット304によって復号される、量子化された変換係数に対して、逆量子化(inverse quantization)(すなわち、量子化解除(dequantization))を実行するように構成され得る。逆量子化処理は、適用されるべき量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中の各ビデオブロックのためにビデオエンコーダ20によって計算される量子化パラメータを使用することを含み得る。
逆変換処理ユニット312は、ピクセル領域において残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に類似する逆変換処理)を変換係数に適用するように構成される。
再構築ユニット314(たとえば、加算器314)は、サンプル領域の中の再構築されたブロック315を取得するために、たとえば、再構築された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによって、逆変換ブロック313(すなわち、再構築された残差ブロック313)を予測ブロック365に加算するように構成される。
ループフィルタユニット320は(コーディングループの間に、またはコーディングループの後に)、ピクセル遷移を滑らかにするために、またはビデオ品質を高めるために、再構築されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。ある例では、ループフィルタユニット320は、以下で説明されるフィルタリング技術の任意の組合せを実行するように構成され得る。ループフィルタユニット320は、1つまたは複数のループフィルタ、たとえば、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter、ALF)、先鋭化フィルタ、平滑化フィルタ、もしくは協調フィルタなどの別のフィルタを表すことが意図される。ループフィルタユニット320は図3ではループ内フィルタとして示されているが、別の構成では、ループフィルタユニット320はポストループフィルタとして実装され得る。
所与のフレームまたはピクチャの中の復号されたビデオブロック321は次いで、後続の動き補償のために使用される参照ピクチャを記憶する復号ピクチャバッファ330に記憶される。
デコーダ30は、たとえば、ユーザへの提示またはユーザによる視聴のために、出力332を通じて復号されたピクチャ31を取得するように構成される。
ビデオデコーダ30の別の変形が、圧縮されたビットストリームを復号するために使用され得る。たとえば、デコーダ30は、ループフィルタユニット320なしで出力ビデオビットストリームを生成し得る。たとえば、非変換ベースのデコーダ30は直接、一部のブロックまたはフレームに対して、逆変換処理ユニット312なしで残差信号を逆量子化することができる。別の実装形態では、ビデオデコーダ30は、単一のユニットへと組み合わせられる逆量子化ユニット310および逆変換処理ユニット312を有し得る。
具体的には、本発明のこの実施形態において、デコーダ30は、以下の実施形態において説明される動きベクトル予測方法を実施するように構成される。
ビデオデコーダ30の別の構造的な変形が、符号化されたビデオビットストリームを復号するように構成され得ることを理解されたい。たとえば、ビデオデコーダ30は、フィルタ320による処理なしで出力ビデオビットストリームを生成し得る。代替的に、一部のピクチャブロックまたはピクチャフレームに対して、ビデオデコーダ30のエントロピー復号ユニット304は、復号を通じて量子化された係数を取得せず、それに対応して、逆量子化ユニット310および逆変換処理ユニット312による処理は必要ではない。ループフィルタ320は任意選択であり、無損失圧縮の場合、逆量子化ユニット310および逆変換処理ユニット312は任意選択である。異なる適用シナリオによれば、インター予測ユニットおよびイントラ予測ユニットは選択的に有効にされ得ることを理解されたい。
本出願におけるエンコーダ20およびデコーダ30上で、手順の処理結果は、さらに処理された後で次の手順に出力され得ることを理解されたい。たとえば、補間フィルタリング、動きベクトル導出、またはループフィルタリングなどの手順の後で、クリップまたはシフト(shift)などの動作がさらに、対応する手順の処理結果に対して実行される。
たとえば、現在のピクチャブロックの制御点の動きベクトルまたは隣接アフィンコーディングブロックの動きベクトルから導出される現在のピクチャブロックのサブブロックの動きベクトルが、さらに処理され得る。これは本出願では限定されない。たとえば、動きベクトルの値は、特定のビット深度範囲内にあるように制約される。動きベクトルの許容されるビット深度がbitDepthであると仮定すると、動きベクトルの値は、-2^(bitDepth-1)から2^(bitDepth-1)-1にわたり、記号「^」は指数を表す。bitDepthが16である場合、値は-32768から32767にわたる。bitDepthが18である場合、値は-131072から131071にわたる。別の例では、4つの4×4サブブロックのMVの整数部分間の最大の差が、Nピクセルを超えず、たとえば1ピクセルを超えないように、動きベクトル(たとえば、1つの8×8ピクチャブロックの中の4つの4×4サブブロックの動きベクトルMV)の値が制約される。
特定のビット深度範囲内にあるように動きベクトルの値を制約するために、以下の2つの方式が使用され得る。
方式1: 動きベクトルのオーバーフロー最上位ビットが取り除かれる。
ux=(vx+2bitDepth)%2bitDepth
vx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux
uy=(vy+2bitDepth)%2bitDepth
vy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy
vxは、ピクチャブロックの動きベクトルまたはピクチャブロックのサブブロックの水平成分である。vyは、ピクチャブロックの動きベクトルまたはピクチャブロックのサブブロックの垂直成分を表す。uxおよびuyは中間値である。bitDepthはビット深度を表す。
たとえば、vxの値は-32769であり、32767は前述の式に従って取得される。値は2の補数の表現でコンピュータに記憶され、-32769の2の補数の表現は1,0111,1111,1111,1111(17桁)であり、オーバーフローのためにコンピュータによって実行される処理は、最上位ビットを廃棄している。したがって、vxの値は0111,1111,1111,1111、すなわち32767である。この値は、式に従った処理を通じて取得される結果と一貫している。
方式2: 以下の式に従ってクリッピングが動きベクトルに対して実行される。
vx=Clip 3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip 3(-2bitDepth-1,2bitDepth-1-1,vy)
vxは、ピクチャブロックの動きベクトルまたはピクチャブロックのサブブロックの水平成分である。vyは、ピクチャブロックの動きベクトルまたはピクチャブロックのサブブロックの垂直成分を表す。x、y、およびzはそれぞれ、MVクランピング処理Clip 3の3つの入力値に対応する。Clip 3は、範囲[x,y]へのzの値のクリッピングを示すために定義される。
図4は、本発明のある実施形態による、ビデオコーディングデバイス400(たとえば、ビデオ符号化デバイス400またはビデオ復号デバイス400)の構造の概略図である。ビデオコーディングデバイス400は、本明細書において説明される実施形態を実装するのに適している。ある実施形態では、ビデオコーディングデバイス400は、ビデオデコーダ(たとえば、図1Aのデコーダ30)またはビデオエンコーダ(たとえば、図1Aのエンコーダ20)であり得る。別の実施形態では、ビデオコーディングデバイス400は、図1Aのデコーダ30または図1Aのエンコーダ20の1つまたは複数のコンポーネントであり得る。
ビデオコーディングデバイス400は、データを受信するための入口ポート410および受信機ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430、データを送信するための送信機ユニット(Tx)440および出口ポート450、ならびにデータを記憶するためのメモリ460を含む。ビデオコーディングデバイス400はさらに、光信号または電気信号の出入のために、入口ポート410、受信機ユニット420、送信機ユニット440、および出口ポート450に結合される、光電気転換コンポーネントおよび電気光(EO)コンポーネントを含み得る。
プロセッサ430は、ハードウェアおよびソフトウェアを使用することによって実装される。プロセッサ430は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサ)、FPGA、ASIC、およびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、コーディングモジュール470(たとえば、符号化モジュール470または復号モジュール470)を含む。符号化/復号モジュール470は、本発明の実施形態において提供されるクロマブロック予測方法を実施するために、本明細書において開示される実施形態を実施する。たとえば、符号化/復号モジュール470は、処理を実施し、または様々なコーディング動作を提供する。したがって、符号化/復号モジュール470は、ビデオコーディングデバイス400の機能にかなりの改善をもたらし、異なる状態へのビデオコーディングデバイス400の変換に影響を及ぼす。代替的に、符号化/復号モジュール470は、メモリ460に記憶されてプロセッサ430によって実行される命令として実装される。
メモリ460は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含み、そのようなプログラムが実行のために選択されるときにプログラムを記憶するための、および、プログラム実行の間に読み取られる命令およびデータを記憶するための、オーバーフローデータストレージデバイスとして使用され得る。メモリ460は、揮発性および/または不揮発性であってもよく、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(ternary content-addressable memory、TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
図5は、ある例示的な実施形態による、図1Aのソースデバイス12とデスティネーションデバイス14のいずれかまたは両方として使用され得る、装置500の簡略化されたブロック図である。装置500は、本出願の技術を実装し得る。言い換えると、図5は、本出願のある実施形態による、符号化デバイスまたは復号デバイス(略してコーディングデバイス500)の実装形態の概略ブロック図である。コーディングデバイス500は、プロセッサ510、メモリ530、およびバスシステム550を含み得る。プロセッサおよびメモリはバスシステムを通じて接続される。メモリは命令を記憶するように構成される。プロセッサは、メモリに記憶されている命令を実行するように構成される。コーディングデバイスのメモリはプログラムコードを記憶する。プロセッサは、本出願において説明される様々なビデオ符号化または復号方法、特に、様々な新しいインター予測方法を実行するために、メモリに記憶されているプログラムコードを呼び出し得る。反復を避けるために、詳細はここでは説明されない。
本出願のこの実施形態では、プロセッサ510は、中央処理装置(Central Processing Unit、略して「CPU」)であってもよく、またはプロセッサ510は、別の汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、また別のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントなどであってもよい。汎用プロセッサはマイクロプロセッサであってもよく、または、プロセッサは任意の従来のプロセッサなどであってもよい。
メモリ530は、読取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスを含み得る。代替的に、任意の他の適切なタイプのストレージデバイスが、メモリ530として使用され得る。メモリ530は、バス550を通じてプロセッサ510によってアクセスされるコードおよびデータ531を含み得る。メモリ530はさらに、オペレーティングシステム533およびアプリケーションプログラム535を含み得る。アプリケーションプログラム535は、本出願において説明されるビデオ符号化方法または復号方法(具体的には、本出願において説明される動きベクトル予測方法)をプロセッサ510が実行することを可能にする少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム535は、アプリケーション1からNを含んでもよく、さらに、本出願において説明されるビデオ符号化または復号方法を実行するために使用されるビデオ符号化または復号アプリケーション(簡潔にビデオコーディングアプリケーションと呼ばれる)を含む。
バスシステム550はさらに、データバスに加えて、電力バス、制御バス、ステータス信号バスなどを含み得る。しかしながら、説明を明確にするために、図の中の様々なタイプのバスは、バスシステム550としてマークされる。
任意選択で、コーディングデバイス500はさらに、1つまたは複数の出力デバイス、たとえばディスプレイ570を含み得る。ある例では、ディスプレイ570は、ディスプレイと、タッチ入力を感知するように動作可能なタッチ感知ユニットとを組み合わせる、タッチ感知ディスプレイであり得る。ディスプレイ570は、バス550を通じてプロセッサ510に接続され得る。
図4および図5に示される装置またはデバイスの両方が、本出願の実施形態における方法を実行するように構成され得る。
上で説明されたように、インター予測は、ビデオ符号化および復号システムの重要な部分である。
HEVCでは、進化型動きベクトル予測(Advanced Motion Vector Prediction、AMVP)モードおよびマージ(Merge)モードという、以下の2つのインター予測モードが導入される。
AMVPモードでは、動きベクトル候補リストはまず、現在のコーディングユニットに空間的または時間的に隣接するコーディングされるユニットの動き情報に基づいて構築され、次いで、最適な動きベクトルが、動きベクトル候補リストから決定され、現在のコーディングユニットの動きベクトル予測子(Motion vector predictor、MVP)として使用される。レート歪みコストは式(1)に従って計算され、Jはレート歪みコスト(RD Cost)を表し、SADは、動きベクトル候補予測子を使用することによって実行される動き推定を通じて取得される元のピクセル値と、予測されるピクセル値との間の絶対値差分和(Sum of Absolute Differences、SAD)を表し、Rはビットレートを表し、λはラグランジュ乗数を表す。エンコーダ側は、デコーダ側に、参照フレームのインデックス値と、動きベクトル候補リストの中にある、レート歪みコストに基づいて選択される動きベクトル予測子のインデックス値とを転送する。さらに、現在のコーディングユニットの実際の動きベクトルを取得するために、MVP中心の隣接領域において動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの差分(Motion vector difference、MVD)をデコーダ側に転送する。
J=SAD+λR (1)
マージモードでは、動き情報候補リストはまず、現在のコーディングユニットに空間的または時間的に隣接するコーディングされるユニットの動き情報に基づいて構築され、次いで、最適な動き情報が、レート歪みコストに基づいて動き情報候補リストから決定され、現在のコーディングユニットの動き情報として使用され、動き情報候補リストの中の最適な動き情報の位置のインデックス値(マージインデックスと表記される、以下同様)が、デコーダ側に転送される。現在のコーディングユニットの空間的および時間的な動き情報候補が、図6に示される。空間動き情報候補は、5つの空間隣接ブロック(A0、A1、B0、B1、およびB2)からのものである。隣接ブロックが利用不可能である、またはイントラコーディングモードもしくはイントラブロックコピーモードの中にある場合、隣接ブロックは、動き情報候補リストに追加されない。現在のコーディングユニットの時間動き情報候補は、参照フレームおよび現在のフレームのピクチャ順序カウント(Picture order count、POC)に基づいて、参照フレームの中の同一位置のブロックのMVをスケーリングすることによって取得される。同一位置のブロックを決定することは、参照フレームの中の位置Tにおけるブロックが利用可能であるかどうかをまず決定することと、参照フレームの中の位置Tにおけるブロックが利用不可能である場合、位置Cにおけるブロックを同一位置のブロックとして選択することとを含む。
HEVCにおけるインター予測の間、コーディングユニットの中のピクセルの予測値を取得するために、コーディングユニットの中のすべてのピクセルが同じ動き情報を有するという仮定に基づいて、動き補償が実行される。しかしながら、コーディングユニットにおいて、すべてのピクセルが必ずしも同じ動きの特徴を有するとは限らない。したがって、同じ動き情報を使用することによるCUの中のすべてのピクセルの予測は、動き補償の正確さを下げ、さらに残差情報を増やすことがある。
コーディング効率をさらに高めるために、いくつかの実現可能な実装形態では、コーディングユニットは少なくとも2つのコーディングサブユニットへと分割され、各コーディングサブユニットの動き情報が導出され、コーディングサブユニットの動き情報に基づいて動き補償が実行される。これは、予測の正確さを高める。たとえば、サブコーディングユニットに基づく動きベクトル予測(Sub-CU based motion vector prediction、SMVP)技術が使用される。
SMVPに従って、現在のコーディングユニットが、M×Nのサイズを有するコーディングサブユニットへと分割され、各コーディングサブユニットの動き情報が導出され、次いで、現在のコーディングユニットの予測値を取得するために、各コーディングサブユニットの動き情報を使用することによって、動き補償が実行される。
SMVP技術に基づいて、1つまたは2つのタイプの動き情報候補、すなわち、進化型時間動きベクトル予測(Advanced temporal motion vector prediction、ATMVP)および/または空間時間動きベクトル予測(Spatial-temporal motion vector prediction、STMVP)が、マージモードの予測動き情報候補リストに追加される。それに対応して、予測動き情報候補リストは、サブブロックベースのマージ候補リスト(subblock-based merging candidate list)とも呼ばれる。
いくつかの実現可能な実装形態では、サブブロックベースのマージ候補リストは、ATMVP予測モード、アフィンモデルベースの予測モード(継承された制御点動きベクトルが使用される予測方法、および/または、構築された制御点動きベクトルが使用される予測方法)、インター平面(PLANAR)予測モードのうちの1つまたは複数を含む。
図7に示されるように、ATMVP技術に従って、同一位置の参照フレーム(Collocated reference picture)がまず決定され、次いで、現在のコーディングユニットは、M×Nのサイズを有するコーディングサブユニットへと分割され、各々の現在のコーディングサブユニットに対応する、および同一位置の参照フレームの中にある、コーディングサブユニットの中心位置におけるピクセルの動き情報が、取得され、スケーリングされ、現在のコーディングサブユニットの動き情報へと転換される。ATMVPは、サブブロックベース時間動きベクトル予測(subblock-based temporal motion vector prediction、SbTMVP)とも呼ばれる。
STMVP技術によれば、各々の現在のコーディングサブユニットの、上の空間的な隣接位置における動き情報、左の空間的な隣接位置における動き情報、および右下の時間的な隣接位置における動き情報が取得され、動き情報の平均が計算され、現在のコーディングサブユニットの動き情報へと転換される。図8に示されるように、現在のコーディングユニットは、A、B、C、およびDという4つのコーディングサブユニットへと分割される。Aが例として使用される。コーディングサブユニットAの動き情報は、空間的な隣接位置cおよびdにおける動き情報と、同一位置の参照フレームの中の位置Dにおける動き情報とを使用することによって導出される。
SMVP技術が使用された後、ATMVP動き情報候補およびSTMVP動き情報候補が、マージモードの動き情報候補リストに追加される。この場合、マージモードにおける符号化処理は次のようになる。
(1)空間的な隣接位置A1、B1、B0、およびA0における動き情報を逐次取得し、各位置における動き情報の利用可能性を確認し、任意選択で、重複する項目を除去し、利用可能な除去されない動き情報を動き情報候補リストへと挿入する。
(2)ATMVP技術およびSTMVP技術を使用することによって対応する動き情報を取得し、利用可能性を確認して重複する項目を除去し、取得された動き情報の利用可能性を確認し、任意選択で、重複する項目を除去し、利用可能な除去されない動き情報を動き情報候補リストへと挿入する。
(3)動き情報候補リストの長さが6未満であるとき、位置B2における動き情報を取得し、動き情報の利用可能性を確認し、任意選択で、重複する項目を除去し、動き情報が利用可能であり除去されない場合、動き情報を動き情報候補リストへと挿入する。
(4)隣接する符号化されたフレームの中の位置Tに対応するブロックの動き情報を取得し(動き情報が存在しない場合、位置Cに対応するブロックの動き情報が取得される)、隣接する符号化されたフレームと現在のフレームとの間のPOC関係に基づいてスケーリングを実行し、スケーリングされた動き情報を動き情報候補リストへと挿入する。
(5)動き情報候補リストの長さが7未満である場合、長さが7である動き情報候補リストを取得するために、動き情報を埋め、埋められる動き情報は、0またはあらかじめ合意された方式で得られた他の動き情報であり得る。これは限定されない。
(6)動き情報候補リストの中の各々の動き情報候補を走査し、再構築された値を取得するために動き補償および再構築を実行し、次いで、レート歪みコスト(Rate-distortion cost、RD cost)が最小である動き情報候補に対応するマージインデックスを取得するために、レート歪み最適化(Rate-distortion optimization、RDO)方法に従って、RD costが最小である動き情報候補を決定する。
(7)動き情報候補リストの長さに基づいてマージインデックスをビットストリームへと書き込み、ビットストリームをデコーダ側に転送する。
ATMVP技術を使用することによって現在の処理されるべきピクチャに対してインター予測を実行する処理は主に、現在の処理されるべきピクチャの中の現在の処理されるべきブロックのオフセット動きベクトルを決定するステップと、現在の処理されるべきブロックにおける処理されるべきサブブロックの位置およびオフセット動きベクトルに基づいて、同一位置の参照ピクチャにおける処理されるべきサブブロックの同一位置のサブブロックを決定するステップと、同一位置のサブブロックの動きベクトルに基づいて現在の処理されるべきサブブロックの動きベクトルを決定するステップと、処理されるべきサブブロックの予測されるピクセル値を取得するために、処理されるべきサブブロックの動きベクトルに基づいて、処理されるべきサブブロックに対する動き補償予測を実行するステップとを含む。
具体的には、図9に示されるように、ある実現可能な実装形態では、方法は以下のステップを含む。
S901: オフセット動きベクトル(offset motion vector)を取得する。
オフセット動きベクトルは、現在のCUの中のあらかじめ設定された位置の点(すなわち、現在の処理されるべきCU、または、処理されるべきブロック、符号化されるべきブロック、復号されるべきブロックなどとも呼ばれ得る)に対応し、同一位置のピクチャ(collocated picture)の中にある、点の位置を決定するために使用される。現在のCUの空間隣接ブロックの動きベクトルは、オフセット動きベクトルとして使用され得る。現在のCUが位置するフレームの同一位置のピクチャは、ビットストリームを解析することによって取得されてもよく、または、あらかじめ設定された値を有するピクチャであってもよい(あらかじめ設定される値は、エンコーダ側とデコーダ側において同じである)。たとえば、同一位置のピクチャは、その参照フレームインデックスが現在のCUの参照フレームリストにおいて0であるピクチャであると仮定される。いくつかの実現可能な実装形態では、同一位置のピクチャブロックにおける現在のCUの位置はまた、オフセット動きベクトルおよび同一位置のピクチャブロックに基づいて決定され得る。その位置におけるブロックは、同一位置のブロック(対応する/同一位置のブロック)とも呼ばれ得る。
たとえば、オフセット動きベクトルは、次の方法のうちのいずれか1つを使用することによって取得され得る。
方法1: 図6におけるA1の動きベクトルが利用可能であるかどうかを決定する。動きベクトルが利用可能であることは、動きベクトルが存在し、取得され得ることを意味することを理解されたい。たとえば、隣接ブロックが存在しないとき、隣接ブロックおよび現在のブロックが同じコーディング領域(たとえば、スライス(slice)、タイル(tile)、またはタイルグループ(tile group))の中にないとき、または、イントラ予測モードもしくはイントラブロックコピーモード(intra block copy、IBC)が隣接ブロックのために使用されるとき、隣接ブロックの動きベクトルは利用不可能である。逆に、インター予測モードが隣接ブロックのために使用されるとき、または、インター予測モードが隣接ブロックのために使用され、隣接ブロックおよび現在のブロックが同じコーディング領域の中にあるとき、隣接ブロックの動きベクトルは利用可能である。
イントラブロックコピーモードでは、イントラブロックコピーコーディングツールが、HEVCのスクリーンコンテンツコーディング規格(screen content coding、SCC)などの拡張規格において使用され、スクリーンコンテンツビデオのコーディング効率を高めるために主に使用される。IBCモードはブロックレベルのコーディングモードである。エンコーダ側において、各CUのための最適なブロックベクトルまたは動きベクトルを発見するために、ブロック照合方法が使用される。本明細書の動きベクトルは主に、現在のブロックから参照ブロックまでの変位を表すために使用され、変位ベクトル(displacement vector)とも呼ばれる。参照ブロックは、現在のピクチャの中の再構築されたブロックである。IBCモードは、イントラ予測モードまたはインター予測モード以外の第3の予測モードであると見なされ得る。ストレージ空間を節約して、デコーダの複雑さを下げるために、いくつかの実装形態では、IBCモードは、現在のCTUのあらかじめ定められた領域の中の再構築された部分のみが、予測のために使用されることを許容する。
A1が利用不可能であるとき、現在のCUのオフセット動きベクトルとして、ゼロ動きベクトルが使用され得る。
A1は、第1の参照フレームリスト0に基づく第1の方向動きベクトル、および第2の参照フレームリスト1に基づく第2の方向動きベクトルを有し得ると仮定される。
A1が利用可能であるとき、A1が以下の条件(1)から(5)のすべてを満たす場合、リスト1に基づく、A1の第2の方向動きベクトルが、現在のCUのオフセット動きベクトルとして使用される。条件は次の通りである。
(1)リスト1の中の参照フレームが、予測のためにA1に使用される。
(2)予測のために使用されるA1のリスト1の中の参照フレームが、現在のCUが位置する画像フレームの同一位置のピクチャと同じである。
たとえば、リスト1の中の参照フレームのPOCが、現在のCUが位置する画像フレームの同一位置のピクチャのPOCと同じであるかどうかが決定されてもよく、同一位置のピクチャを表す情報は、ビットストリームを解析することによって取得され得る。
(3)低レイテンシのコーディング構造が使用され、具体的には、符号化/復号/処理されるべきピクチャの参照フレームがすべて、符号化/復号/処理されるピクチャの前に表示される。
(4)現在のCUが位置するピクチャのピクチャタイプがBピクチャであり、現在のCUが位置するタイルがBタイルであり、または、現在のCUが位置するタイルグループ(tile group)がBタイルグループである。
(5)現在のCUが位置するピクチャの同一位置のピクチャが、リスト1から取得される。たとえば、シンタックス要素collocated_from_l0_flagの値は0である。
そうではなく、A1が利用可能であるが、前述の条件のうちの少なくとも1つを満たさないとき、A1が以下の条件(6)および(7)を満たす場合、リスト0に基づく、A1の第1の方向動きベクトルが、現在のCUのオフセット動きベクトルとして使用される。条件は次の通りである。
(6)リスト0の中の参照フレームが、予測のためにA1に使用される。
(7)予測のために使用されるA1のリスト0の中の参照フレームが、現在のCUが位置する画像フレームの同一位置のピクチャと同じである。
方法2: 図6のA1、B1、B0、およびA0のシーケンスにおける、第1の利用可能な隣接ブロックの動きベクトルを見つける。隣接ブロックの参照フレームが、現在のCUが位置するフレームの同一位置のピクチャである場合、すなわち、発見された動きベクトルが同一位置のピクチャを指し示す場合、隣接ブロックの動きベクトルが、現在のCUのオフセット動きベクトルとして使用される。そうではなく、隣接ブロックの参照フレームが、現在のCUが位置するフレームの同一位置のピクチャではない場合、ある実現可能な実装形態では、ゼロ動きベクトルが、現在のCUのオフセット動きベクトルとして使用され得る。別の実現可能な実装形態では、第1の利用可能な隣接ブロックの動きベクトルは、同一位置のピクチャのPOC、現在のCUが位置するピクチャのPOC、第1の利用可能な隣接ブロックの参照フレームのPOCに基づいてスケーリングされるので、スケーリングされた動きベクトルが同一位置のピクチャを指し示し、スケーリングされた動きベクトルが現在のCUのオフセット動きベクトルとして使用される。具体的なスケーリング方法については、従来の技術において時間動きベクトルを取得するための方法、または本実施形態のステップ1005におけるスケーリング方法を参照されたい。詳細は説明されない。
オフセット動きベクトルがゼロ動きベクトルであるとき、同一位置のピクチャの中にあり、現在のCUと同じ位置にあるピクチャブロックが、同一位置のピクチャの中の現在のCUの同一位置のブロックであることを理解されたい。
条件を満たす現在のCUのオフセット動きベクトルを、前述の方法を使用することによって取得できないとき、現在のCUのサブブロックの動きベクトルは、ATMVP予測モードを使用することによって取得されない。
S902: オフセット動きベクトルに基づいて、ATMVPモードが利用可能であるかどうかを決定する。
具体的には、現在のCUの中のあらかじめ設定された位置の点に対応する、かつ同一位置のピクチャの中にある点がサブブロックSであるピクチャブロック、サブブロックSの座標位置は(xcol,ycol)であると仮定される。たとえば、
(x,y)は現在のCUの左上の角の座標を表し、Wは現在のCUの幅を表し、Hは現在のCUの高さを表し、(xoff,yoff)はオフセット動きベクトルを表す。
サブブロックSの予測モードがイントラ予測モードまたはイントラブロックコピーモードであるとき、ATMVPモードが利用可能であると決定され、ステップ902および後続のステップは実行されない。
サブブロックSの予測モードがインター予測モードであるとき、ATMVPモードが利用可能であると決定される。さらに、サブブロックSの動き情報、具体的には、座標位置(xcol,ycol)に対応する動き情報が取得され、初期のデフォルト動きベクトルとして決定される。
処理されるべきサブブロックのデフォルト動きベクトル(MV)を取得するために、初期のデフォルト動きベクトルMVがスケーリングされる。
たとえば、図10に示されるように、MVは式(3)に従って取得され得る。
CurPocは現在のCUが位置するフレームのPOCを表し、ColPocは同一位置のピクチャのPOCを表し、CurRefPocは現在のCUの参照フレームのPOCを表し、ColRefPocはサブブロックSの参照フレームのPOCを表す。
MVは、水平方向の動きベクトルMVxおよび垂直方向の動きベクトルMVyを含み、水平方向のスケーリングされた動きベクトルMVsxおよび垂直方向のスケーリングされた動きベクトルMVsyは、前述の式に従った計算を通じて別々に取得され得ることを理解されたい。
S903: 同一位置のサブブロックの動き情報に基づいて、処理されるべきサブブロックの動き情報を決定する。
たとえば、図11に示されるように、処理されるべきブロック、すなわち現在のCUは現在のピクチャの中に位置し、処理されるべきブロックは4つのサブブロックを含み、1つの処理されるべきサブブロックは処理されるべきブロックの左上のサブブロックである。この場合、同一位置のピクチャの中の左上の位置におけるサブブロックは、処理されるべきサブブロックの同一位置のサブブロックとして決定され得る。異なる同一位置のサブブロックは、全体として1つの同一位置のブロックの形で存在してもよく、または別々のサブブロックの形で存在してもよいことを理解されたい。
たとえば、同一位置のサブブロックの幾何学的な中心位置に対応する動き情報が取得され得る。具体的には、現在のCUの(i,j)番目の処理されるべきサブブロック(すなわち、左から右に向かってi番目のサブブロックであり、上から下に向かってj番目のサブブロックであるサブブロック)の中心位置(x(i,j),y(i,j))は、式(4)に従って取得され得る。
(x,y)は現在のCUの左上の角の座標を表し、Mは処理されるべきサブブロックの幅を表し、Hは処理されるべきサブブロックの高さを表す。
中心位置が位置するピクチャブロックの予測モードが決定される。
ピクチャブロックの予測モードがインター予測モードであるとき、中心位置における動きベクトルが利用可能であり、その位置における動きベクトルが取得される。処理されるべきサブブロックの動きベクトルを取得するために、処理されるべきサブブロックが位置する画像フレームと、同一位置のサブブロックが位置する画像フレームとの間の時間的な関係に基づいて、スケーリング処理が動きベクトルに対して実行される。スケーリング処理方法は、式(2)におけるものと同様である。たとえば、
MVは中心位置における動きベクトルを表し、MVRは処理されるべきサブブロックの動きベクトルを表す。
ある実現可能な実装形態では、現在のCUの参照フレームのPOC CurRefPocは、その参照フレームインデックスが、現在のCUが位置するフレームの参照ピクチャリストにおいて0である、参照フレームのPOCにあらかじめ設定され得る。
CurRefPocは代替として、現在のCUが位置するフレームの参照ピクチャリストの中の別の参照フレームであってもよく、これは限定されないことを理解されたい。
ピクチャブロックの予測モードがイントラ予測モードまたはイントラブロックコピーモードであるとき、中心位置における動きベクトルが利用不可能であり、ステップS902において決定される処理されるべきサブブロックのデフォルトの動きベクトル(MV)が、処理されるべきサブブロックの動きベクトルとして使用される。
S904: 現在のCUの予測されるピクセル値を取得するために、現在のCUのサブブロックの動き情報に基づいて動き補償を実行する。
各サブブロックに対して、サブブロックの予測されたピクセル値を取得するために、動き補償が、ステップ903において決定された動きベクトルおよび現在のCUが位置するピクチャの参照フレーム、たとえば、動きベクトルMVRおよび参照フレームCurRefPocに基づいて実行される。動き補償処理については、前述の説明または従来の技術のあらゆる改善策を参照されたい。詳細は再び説明されない。
現在のCUはサブブロックを含む。したがって、各サブブロックの予測されるピクセル値が前述の方式で取得された後で、現在のCUの予測されるピクセル値が取得される。
この実装形態では、処理されるべきブロックの内部のより複雑な動きの状況を反映できるように、各サブブロックの動きベクトルが取得される。これは、動きベクトルの正確さを改善し、コーディング効率も高める。しかしながら、同一位置のサブブロックの動き情報が利用不可能であるとき、デフォルトの動き情報が計算される必要がある。これはコーディング速度に影響を及ぼす。
図12に示されるように、別の実現可能な実装形態では、処理されるべきブロックは1つまたは複数のサブブロックを含み、処理されるべきブロックの同一位置のピクチャの識別情報は、ビットストリームを解析することによって取得される。処理されるべきブロックのあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用可能であり、動きベクトルに対応する参照フレームが同一位置のピクチャであるとき、動きベクトルは時間オフセットベクトルとして決定される。処理されるべきブロックのサブブロックの同一位置のサブブロックの位置は、時間オフセットベクトルに基づいて同一位置のピクチャにおいて決定される。同一位置のサブブロックの動きベクトルが利用可能であるかどうかが決定され、処理されるべきブロックのサブブロックの動きベクトルは、同一位置のサブブロックの動きベクトルに基づいて決定される。インター予測方法は特に、以下のステップを含む。
S1201: 処理されるべきブロックの空間隣接ブロックに基づいて、処理されるべきブロックの時間オフセットベクトルを決定する。
処理されるべきブロックのサブブロックの同一位置のサブブロックを決定するために、時間オフセットベクトルが使用される。
たとえば、図11に示されるように、処理されるべきブロックは4つの処理されるべきサブブロックを含み、処理されるべきブロックの各サブブロックの同一位置のサブブロックは、現在のピクチャにおける処理されるべきブロックのサブブロックの位置および時間オフセットベクトル(図ではオフセット動きベクトルとして表記される)に基づいて、同一位置のピクチャ(これは、目標ピクチャ、すなわち、同一位置のサブブロックが位置するピクチャとして表記される)において決定されることを理解されたい。
同一位置のサブブロックが位置する、かつ処理されるべきブロックの空間隣接ブロックの参照フレームリストの中にある画像フレーム(同一位置のピクチャ)のインデックスは、ビットストリームを解析することによって取得される。具体的には、デコーダ側は、ビットストリームの中の対応する情報を解析することによって同一位置のピクチャを決定してもよく、エンコーダ側は、RDO選択方式で、同一位置のピクチャとして最適な性能をもつ画像フレームを決定し、または同一位置のピクチャとしてフレームを指定し、同一位置のピクチャの指示情報をビットストリームへと書き込んでもよい。代替として、同一位置のピクチャは、プロトコルに従ってエンコーダ側およびデコーダ側によってあらかじめ設定され得る。
ある実現可能な実装形態では、ステップ1201は具体的には次の通りであり得る。
あらかじめ設定された順序で、複数の第1のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用可能であるかどうかを、その動きベクトルがあらかじめ設定された順序で利用可能である第1の空間隣接ブロックの動きベクトルが取得されるまで、逐次確認し、
時間オフセットベクトルとして、その動きベクトルがあらかじめ設定された順序で利用可能である第1の空間隣接ブロックの動きベクトルを使用する。
複数の第1のあらかじめ設定された位置における空間隣接ブロックの動きベクトルがすべて利用不可能であるとき、第2のあらかじめ設定された動きベクトルが時間オフセットベクトルとして使用される。
たとえば、図6に示されるように、処理されるべきブロックの空間隣接ブロックA1、B1、B0、およびA0の動きベクトルが利用可能であるかどうかが、その動きベクトルが利用可能である第1の空間隣接ブロックが見つかるまで、逐次確認され得る。第1の空間隣接ブロックはB0であると仮定される。この場合、確認は止められ、B0の動きベクトルが時間オフセットベクトルとして使用される。
ある実現可能な実装形態では、スケーリングされた動きベクトルが参照フレームとして同一位置のピクチャを使用するように、B0の参照フレームと、処理されるべきブロックが位置する画像フレームと、処理されるべきブロックの同一位置のピクチャとの間の時間的な関係に基づいて、スケーリング処理がさらにB0の動きベクトルに対して実行され得る。
第2のあらかじめ設定された動きベクトル、すなわちゼロ動きベクトルは、空間隣接ブロックの動きベクトルがすべて利用不可能であるとき、時間オフセットベクトルとして使用され得る。
第1のあらかじめ設定された位置における空間隣接ブロックが、プロトコルに従ってエンコーダ側およびデコーダ側によってあらかじめ設定され、または、高水準のシンタックス要素に基づいてエンコーダ側およびデコーダ側によって決定されることを理解されたい。これは本出願のこの実施形態では限定されない。
空間隣接ブロックの動きベクトルが利用不可能である条件は、以下の項目のうちの1つまたは組合せを含む。空間隣接ブロックは符号化/復号されず(予測方法がエンコーダ側で実装される場合、空間隣接ブロックは符号化されず、または、予測方法がデコーダ側で実装される場合、空間隣接ブロックは復号されない)、イントラ予測モードまたはイントラブロックコピーモードは空間隣接ブロックのために使用され、空間隣接ブロックは存在せず、または、空間隣接ブロックおよび処理されるべきブロックは異なるコーディング領域に位置する。
たとえば、コーディング領域は、ピクチャ、スライス(slice)、タイル(tile)、またはタイルグループ(tile group)を含む。
別の実現可能な実装形態では、代替的に、ステップ1201は具体的には次の通りであり得る。
第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルおよび参照フレームを取得し、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用可能であり、
時間オフセットベクトルとして、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを使用する。
第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用不可能であるとき、第3のあらかじめ設定された動きベクトルが時間オフセットベクトルとして使用される。
いくつかの実現可能な実装形態では、第2のあらかじめ設定された位置における空間隣接ブロックはさらに、空間隣接ブロックの参照フレームが、同一位置のピクチャが位置するのと同じであるという条件を満たす。
たとえば、図6に示されるように、第2のあらかじめ設定された位置における空間隣接ブロックはA1であると仮定される。
第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが、第1の参照フレームリストに基づく第1の方向動きベクトルを含むことと、第2のあらかじめ設定された位置における空間隣接ブロックの参照フレームが、第1の方向動きベクトルに対応する第1の方向参照フレームを含むこととを理解されたい。
ある実現可能な実装形態では、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを時間オフセットベクトルとして使用することは具体的に、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるとき、第1の方向動きベクトルを時間オフセットベクトルとして使用すること、または、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、第3のあらかじめ設定された動きベクトルを時間オフセットベクトルとして使用することである。
たとえば、第3のあらかじめ設定された動きベクトルは、ゼロ動きベクトルである。
双方向予測が第2のあらかじめ設定された位置における空間隣接ブロックのために使用されるとき、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルがさらに、第2の参照フレームリストに基づく第2の方向動きベクトルを含むことと、第2のあらかじめ設定された位置における空間隣接ブロックの参照フレームが、第2の方向動きベクトルに対応する第2の方向参照フレームを含むこととを理解されたい。
別の実現可能な実装形態では、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを時間オフセットベクトルとして使用することは具体的に、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるとき、第1の方向動きベクトルを時間オフセットベクトルとして使用すること、または、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるかどうかを決定することと、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるとき、第2の方向動きベクトルを時間オフセットベクトルとして使用すること、または、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なるとき、第3のあらかじめ設定された動きベクトルを時間オフセットベクトルとして使用することとである。任意選択で、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるかどうかを決定する前に、方法はさらに、空間隣接ブロックが位置するコーディング領域のタイプがBタイプであるかどうか、すなわち、コーディング領域がBフレームであるか、Bタイルであるか、Bスライスであるか、またはBタイルグループであるかを決定するステップを含む。
別の実現可能な実装形態では、双方向予測が第2のあらかじめ設定された位置における空間隣接ブロックのために使用されるとき、時間オフセットベクトルとして第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを使用することは具体的に、同一位置のサブブロックが位置する画像フレームが第2の参照フレームリストから取得されるときは、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるかどうかを決定し、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用すること、または、同一位置のサブブロックが位置する画像フレームが第1の参照フレームリストから取得されるとき、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるかどうかを決定し、時間オフセットベクトルとして第1の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用することである。加えて、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、時間オフセットベクトルとして第3のあらかじめ設定された動きベクトルが使用される。
別の実現可能な実装形態では、双方向予測が第2のあらかじめ設定された位置における空間隣接ブロックのために使用されるとき、時間オフセットベクトルとして第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを使用することは具体的に、同一位置のサブブロックが位置する画像フレームが第2の参照フレームリストから取得され、処理されるべきブロックが位置する画像フレームの前に、処理されるべきブロックの参照フレームリストの中のすべての参照フレームが表示されるときは、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるかどうかを決定し、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用すること、または、同一位置のサブブロックが位置する画像フレームが第1の参照フレームリストから取得されるとき、もしくは、処理されるべきブロックが位置する画像フレームの後で、処理されるべきブロックの参照フレームリストの中の少なくとも1つの参照フレームが表示されるとき、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるかどうかを決定し、時間オフセットベクトルとして第1の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用することである。加えて、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、時間オフセットベクトルとして第3のあらかじめ設定された動きベクトルが使用される。
たとえば、同一位置のサブブロックが位置する画像フレームが第1/第2の参照フレームリストから取得されるかどうかは、ビットストリームの中のシンタックス要素collocated_from_l0_flagを解析することによって決定され得る。具体的には、1に等しいcollocated_from_l0_flagは、同一位置のサブブロックが位置する画像フレーム(同一位置のピクチャ)が第1の参照フレームリストから取得されることを指定し、0に等しいcollocated_from_l0_flagは、同一位置のサブブロックが位置する画像フレームが第2の参照フレームリストから取得されることを指定する。ビットストリームがcollocated_from_l0_flagについての情報を搬送しないとき、同一位置のサブブロックが位置する画像フレームは、デフォルトで第1の参照フレームリストから取得される。
たとえば、処理されるべきブロックの参照フレームリストの中のすべての参照フレームは、処理されるべきブロックが位置する画像フレームの前に表示され、すなわち、低レイテンシフレームコーディング構造が使用される。このコーディング構造では、ピクチャの各フレームが符号化されるとき、すべての使用される参照フレームが、現在の符号化されるべきフレームの前に表示される。それに対応して、デコーダ側で、すべての使用される参照フレームが、現在の復号されるべきフレームの前に表示される。
空間隣接ブロックが位置するコーディング領域のタイプがBタイプではないとき、空間隣接ブロックのために双方向予測が使用されず、双方向予測が使用される実装形態は、良好な技術的効果を達成しないことがあることを理解されたい。したがって、任意選択で、双方向予測が使用される前述の実装形態が実行される前に、空間隣接ブロックが位置するコーディング領域がBタイプであるかどうかが決定され得る。
S1202: 同一位置のサブブロックのあらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用可能であるかどうかを決定する。
処理されるべきブロックにおけるサブブロック(例示的なサブブロックと呼ばれる)の同一位置のサブブロックの位置は、処理されるべきブロックのサブブロックの位置座標、およびステップS1201において決定される時間オフセットベクトルに基づいて、同一位置のピクチャにおいて決定され得る。たとえば、同一位置のサブブロックの位置は、本明細書の式(4)に従って取得され得る。具体的には、式(4)を参照して、xおよびyはそれぞれ、処理されるべきブロックの左上の角の水平座標および垂直座標を表し、iおよびjは、例示的なサブブロックが、処理されるべきブロックにおいて並べられるサブブロックであり、左から右に向かってi番目のサブブロックであり、かつ上から下に向かってj番目のサブブロックであることを表し、xoffおよびyoffはそれぞれ、時間オフセットベクトルの水平座標および垂直座標を表し、MおよびNはそれぞれ、サブブロックの幅および高さを表し、x(i,j)およびy(i,j)は例示的なサブブロックの同一位置のサブブロック(略して同一位置のサブブロックと呼ばれる)の位置座標を表す。
式(4)のM/2およびN/2は、あらかじめ設定されたイントラブロック位置が同一位置のサブブロックの幾何学的な中心位置であることを表すことを理解されたい。代替的に、あらかじめ設定されたイントラブロック位置は、同一位置のサブブロックの左上の角などの、別のイントラブロック位置であってもよい。これは限定されない。
同一位置のサブブロックのあらかじめ設定されたイントラブロック位置に対応する動きベクトルはまた、同一位置のサブブロックの動きベクトルとして使用され得る。
位置座標(x(i,j),y(i,j))が位置する同一位置のピクチャの中の予測ユニットは、位置座標に基づいて決定されてもよく、同一位置のサブブロックのあらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用可能であるかどうかは、予測ユニットの予測情報に基づいて決定されてもよい。
予測ユニットは、同一位置のピクチャが実際に符号化された後で得られる結果であり、同一位置のサブブロックとは一貫していないことがあることを理解されたい。
たとえば、予測ユニットの予測モードがインター予測モードであるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用可能であり、または、予測ユニットの予測モードがイントラ予測モードもしくはイントラブロックコピーモードであるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用不可能である。
ある実現可能な実装形態では、予測ユニットの予測モード情報が確認されてもよく、予測モード情報に基づいて、予測ユニットの予測モードが、イントラ予測モード、インター予測モード、イントラブロックコピーモード、または別のモードであることが決定される。
別の実現可能な実装形態では、予測ユニットの動き情報が確認されてもよく、たとえば予測方向が確認されてもよい。予測方向フラグpredFlagL0および/またはpredFlagL1が1であるとき、予測モードはインター予測モードである。それ以外の場合、予測モードはイントラ予測モードであり、または動きベクトルが利用不可能である別の予測モードである。
S1203: 同一位置のサブブロックの動きベクトルに基づいて、処理されるべきブロックのサブブロックの動きベクトルを決定する。
処理されるべきブロックのサブブロックの動きベクトルは、同一位置のサブブロックの動きベクトルが利用不可能であるとき、第1のあらかじめ設定された動きベクトルに基づいて取得される。
予測ユニットの予測モードがインター予測モードであるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用可能であり、処理されるべきブロックのサブブロックの動きベクトルは、あらかじめ設定されたイントラブロック位置に対応する動きベクトルに基づいて取得される。
具体的には、処理されるべきブロックのサブブロックの動きベクトルを取得するために、第2の時間距離差分に対する第1の時間距離差分の比に基づいて、あらかじめ設定されたイントラブロック位置に対応する動きベクトルに対して、スケーリング処理が実行されてもよく、第1の時間距離差分は、処理されるべきブロックが位置する画像フレームと処理されるべきブロックの参照フレームとの間のピクチャ順序カウント差分であり、第2の時間距離差分は、同一位置のサブブロックが位置する画像フレームと同一位置のサブブロックの参照フレームとの間のピクチャ順序カウント差分である。スケーリング処理の具体的な計算手順については、たとえば、本明細書の式(3)を参照されたい。詳細は再び説明されない。
処理されるべきブロックの参照フレームリストの中の処理されるべきブロックの参照フレームのインデックスは、ビットストリームを解析することによって取得される。具体的には、デコーダ側は、ビットストリームの中の対応する情報を解析することによって、処理されるべきブロックの参照フレームを決定してもよく、エンコーダ側は、RDO選択方式で、処理されるべきブロックの参照フレームとして最適な性能をもつ画像フレームを決定し、または処理されるべきブロックの参照フレームとしてフレームを指定し、処理されるべきブロックの参照フレームの指示情報をビットストリームへと書き込んでもよい。代替として、処理されるべきブロックの参照フレームは、プロトコルに従ってエンコーダ側およびデコーダ側によってあらかじめ設定され得る。たとえば、処理されるべきブロックの参照フレームリストの中の処理されるべきブロックの参照フレームのインデックスは0である。
あらかじめ設定されたイントラブロック位置に対応する動きベクトルは、位置に対応する動きベクトルストレージユニットから直接取得されてもよく、隣接位置に対応する動きベクトルストレージユニットから取得されてもよく、または、隣接位置に対応する動きベクトルストレージユニットの中の動きベクトルに基づいて補間フィルタリングを通じて取得されてもよいことを理解されたい。これは限定されない。
予測ユニットの予測モードがイントラ予測モードまたはイントラブロックコピーモードであるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用不可能であり、処理されるべきブロックのサブブロックの動きベクトルは、第1のあらかじめ設定された動きベクトルに基づいて取得される。
ある実現可能な実装形態では、サブブロックの動きベクトルは、第1の参照フレームリストに基づく第1の方向サブブロック動きベクトルおよび/または第2の参照フレームリストに基づく第2の方向サブブロック動きベクトルを含み、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用不可能であるとき、処理されるべきブロックのサブブロックの動きベクトルが第1のあらかじめ設定された動きベクトルに基づいて取得されることは具体的に、第1の方向サブブロック動きベクトルに基づく単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルを取得すること、または、第2の方向サブブロック動きベクトルに基づく単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第2の方向サブブロック動きベクトルを取得することである。
ある実現可能な実装形態では、サブブロックの動きベクトルは、第1の参照フレームリストに基づく第1の方向サブブロック動きベクトルおよび第2の参照フレームリストに基づく第2の方向サブブロック動きベクトルを含み、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用不可能であるとき、処理されるべきブロックのサブブロックの動きベクトルが第1のあらかじめ設定された動きベクトルに基づいて取得されることは具体的に、処理されるべきブロックが位置するコーディング領域の予測タイプがBタイプ予測であるとき、双方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルおよび処理されるべきブロックのサブブロックの第2の方向サブブロック動きベクトルを別々に取得すること、または、処理されるべきブロックが位置するコーディング領域の予測タイプがPタイプ予測であるとき、単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルを取得することである。
たとえば、コーディング領域は、ピクチャ、スライス、タイル、またはタイルグループを含む。
ある実現可能な実装形態では、処理されるべきブロックのサブブロックの動きベクトルが第1のあらかじめ設定された動きベクトルに基づいて取得されることは、処理されるべきブロックのサブブロックの動きベクトルとして第1のあらかじめ設定された動きベクトルを使用することを含む。
ある実現可能な実装形態では、第1のあらかじめ設定された動きベクトルは、ゼロ動きベクトルである。
たとえば、第1の方向予測フラグpredFlagL0は1に設定されてもよく、第2の方向予測フラグpredFlagL1は0に設定されてもよく、第1の方向サブブロック動きベクトルmvL0は(0,0)に設定されてもよい。
代替的に、第1の方向予測フラグpredFlagL0は0に設定されてもよく、第2の方向予測フラグpredFlagL1は1に設定されてもよく、第2の方向サブブロック動きベクトルmvL1は(0,0)に設定されてもよい。
代替的に、例示的なサブブロックが位置するコーディング領域が、Bフレーム、Bスライス、Bタイル、またはBタイルグループであるとき、第1の方向予測フラグpredFlagL0は1に設定されてもよく、第2の方向予測フラグpredFlagL1は1に設定されてもよく、第1の方向サブブロック動きベクトルmvL0は(0,0)に設定されてもよく、第2の方向サブブロック動きベクトルmvL1は(0,0)に設定されてもよい。それ以外の場合(例示的なサブブロックが位置するコーディング領域が前述の双方向予測領域に対応しないとき)、第1の方向予測フラグpredFlagL0は1に設定されてもよく、第2の方向予測フラグpredFlagL1は0に設定されてもよく、第1の方向サブブロック動きベクトルmvL0は(0,0)に設定されてもよい。
S1204: 処理されるべきブロックのサブブロックの予測値を取得するために、処理されるべきブロックのサブブロックの動きベクトルおよび処理されるべきブロックの参照フレームに基づいて、処理されるべきブロックのサブブロックに対する動き補償を実行する。
各サブブロックの予測値を取得するために、例示的なサブブロックを処理する前述の手順が、処理されるべきブロックの中の各サブブロックに対して実行されることを理解されたい。処理されるべきブロックはサブブロックを含む。したがって、各サブブロックの予測値が決定された後で、処理されるべきブロックの予測値はそれに対応して決定される。
この実施形態では、時間オフセットベクトルを取得するためのいくつかの簡略化された方法が提供される。これは、同一位置のサブブロックを取得することの正確さを確保しながら、計算の複雑さを下げる。加えて、同一位置のサブブロックが利用不可能であるとき、対応する処理されるべきブロックのサブブロックの動きベクトルを決定する方式は簡略化され、計算の複雑さがさらに下がる。
図13に示されるように、処理されるべきブロックは1つまたは複数のサブブロックを含む。インター予測装置1300は、
処理されるべきブロックの空間隣接ブロックに基づいて、処理されるべきブロックの時間オフセットベクトルを決定するように構成されるオフセット取得モジュール1301であって、時間オフセットベクトルが、処理されるべきブロックのサブブロックの同一位置のサブブロックを決定するために使用される、オフセット取得モジュール1301と、同一位置のサブブロックの動きベクトルに基づいて、処理されるべきブロックのサブブロックの動きベクトルを決定するように構成される動きベクトル取得モジュール1302であって、処理されるべきブロックのサブブロックの動きベクトルが、同一位置のサブブロックの動きベクトルが利用不可能であるとき、第1のあらかじめ設定された動きベクトルに基づいて取得される、動きベクトル取得モジュール1302とを含む。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、あらかじめ設定された順序で、複数の第1のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用可能であるかどうかを、その動きベクトルがあらかじめ設定された順序で利用可能である第1の空間隣接ブロックの動きベクトルが取得されるまで逐次確認し、時間オフセットベクトルとして、その動きベクトルがあらかじめ設定された順序で利用可能である第1の空間隣接ブロックの動きベクトルを使用するように構成される。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、複数の第1のあらかじめ設定された位置における空間隣接ブロックの動きベクトルがすべて利用不可能であるとき、第2のあらかじめ設定された動きベクトルを時間オフセットベクトルとして使用するように構成される。
ある実現可能な実装形態では、第2のあらかじめ設定された動きベクトルは、ゼロ動きベクトルである。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルおよび参照フレームを取得し、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用可能であり、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルを時間オフセットベクトルとして使用するように構成される。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルが利用不可能であるとき、第3のあらかじめ設定された動きベクトルを時間オフセットベクトルとして使用するように構成される。
ある実現可能な実装形態では、第3のあらかじめ設定された動きベクトルは、ゼロ動きベクトルである。
ある実現可能な実装形態では、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルは、第1の参照フレームリストに基づく第1の方向動きベクトルを含み、第2のあらかじめ設定された位置における空間隣接ブロックの参照フレームは、第1の方向動きベクトルに対応する第1の方向参照フレームを含み、オフセット取得モジュール1301は特に、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるとき、時間オフセットベクトルとして第1の方向動きベクトルを使用するように構成される。
ある実現可能な実装形態では、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、オフセット取得モジュール1301は特に、時間オフセットベクトルとして第3のあらかじめ設定された動きベクトルを使用するように構成される。
ある実現可能な実装形態では、第2のあらかじめ設定された位置における空間隣接ブロックのために双方向予測が使用されるとき、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルはさらに、第2の参照フレームリストに基づく第2の方向動きベクトルを含み、第2のあらかじめ設定された位置における空間隣接ブロックの参照フレームは、第2の方向動きベクトルに対応する第2の方向参照フレームを含み、第1の方向参照フレームが、処理されるべきブロックの対応する時間ブロックが位置する画像フレームとは異なるとき、オフセット取得モジュール1301は特に、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるとき、時間オフセットベクトルとして第2の方向動きベクトルを使用し、または、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なるとき、時間オフセットベクトルとして第3のあらかじめ設定された動きベクトルを使用するように構成される。
ある実現可能な実装形態では、双方向予測が第2のあらかじめ設定された位置における空間隣接ブロックのために使用されるとき、第2のあらかじめ設定された位置における空間隣接ブロックの動きベクトルは、第1の参照フレームリストに基づく第1の方向動きベクトルおよび第2の参照フレームリストに基づく第2の方向動きベクトルを含み、第2のあらかじめ設定された位置における空間隣接ブロックの参照フレームは、第1の方向動きベクトルに対応する第1の方向参照フレームおよび第2の方向動きベクトルに対応する第2の方向参照フレームを含み、オフセット取得モジュール1301は特に、同一位置のサブブロックが位置する画像フレームが第2の参照フレームリストから取得されるとき、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用し、または、同一位置のサブブロックが位置する画像フレームが第1の参照フレームリストから取得されるとき、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用し、もしくは、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるとき、時間オフセットベクトルとして第2の方向動きベクトルを使用するように構成される。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、同一位置のサブブロックが位置する画像フレームが第2の参照フレームリストから取得され、処理されるべきブロックの参照フレームリストの中のすべての参照フレームが、処理されるべきブロックが位置する画像フレームの前に表示されるとき、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用し、または、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用し、あるいは、同一位置のサブブロックが位置する画像フレームが第1の参照フレームリストから取得される、もしくは処理されるべきブロックの参照フレームリストの中の少なくとも1つの参照フレームが、処理されるべきブロックが位置する画像フレームの後に表示されるとき、同一位置のサブブロックが位置する画像フレームが第1の方向参照フレームと同じであるときは、時間オフセットベクトルとして第1の方向動きベクトルを使用し、または、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが同じであるときは、時間オフセットベクトルとして第2の方向動きベクトルを使用するように構成される。
ある実現可能な実装形態では、オフセット取得モジュール1301は特に、同一位置のサブブロックが位置する画像フレームと第2の方向参照フレームが異なり、同一位置のサブブロックが位置する画像フレームと第1の方向参照フレームが異なるとき、時間オフセットベクトルとして第3のあらかじめ設定された動きベクトルを使用するように構成される。
ある実現可能な実装形態では、同一位置のサブブロックが位置する、かつ処理されるべきブロックの空間隣接ブロックの参照フレームリストの中にある画像フレームのインデックスは、ビットストリームを解析することによって取得される。
ある実現可能な実装形態では、空間隣接ブロックの動きベクトルが利用不可能である条件は、以下の項目のうちの1つまたは組合せを含む。空間隣接ブロックが符号化/復号されない、空間隣接ブロックのためにイントラ予測モードまたはイントラブロックコピーモードが使用される、空間隣接ブロックが存在しない、または空間隣接ブロックおよび処理されるべきブロックが異なるコーディング領域に位置する。
ある実現可能な実装形態では、コーディング領域は、ピクチャ、スライス、タイル、またはタイルグループを含む。
ある実現可能な実装形態では、装置はさらに、同一位置のサブブロックのあらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用可能であるかどうかを決定するように構成される決定モジュール1303を含み、それに対応して、動きベクトル取得モジュール1302は特に、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用可能であるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルに基づいて、処理されるべきブロックのサブブロックの動きベクトルを取得し、または、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用不可能であるとき、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの動きベクトルを取得するように構成される。
ある実現可能な実装形態では、あらかじめ設定されたイントラブロック位置は、同一位置のサブブロックの幾何学的な中心位置である。
ある実現可能な実装形態では、あらかじめ設定されたイントラブロック位置が位置する予測ユニットのためにイントラ予測モードまたはイントラブロックコピーモードが使用されるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用不可能であり、または、あらかじめ設定されたイントラブロック位置が位置する予測ユニットのためにインター予測が使用されるとき、あらかじめ設定されたイントラブロック位置に対応する動きベクトルは利用可能である。
ある実現可能な実装形態では、動きベクトル取得モジュール1302は特に、処理されるべきブロックのサブブロックの動きベクトルとして第1のあらかじめ設定された動きベクトルを使用するように構成される。
ある実現可能な実装形態では、第1のあらかじめ設定された動きベクトルは、ゼロ動きベクトルである。
ある実現可能な実装形態では、サブブロックの動きベクトルは、第1の参照フレームリストに基づく第1の方向サブブロック動きベクトルおよび/または第2の参照フレームリストに基づく第2の方向サブブロック動きベクトルを含み、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用不可能であるとき、動きベクトル取得モジュール1302は特に、第1の方向サブブロック動きベクトルに基づく単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルを取得し、または、第2の方向サブブロック動きベクトルに基づく単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第2の方向サブブロック動きベクトルを取得するように構成される。
ある実現可能な実装形態では、あらかじめ設定されたイントラブロック位置に対応する動きベクトルが利用不可能であるとき、動きベクトル取得モジュール1302は特に、処理されるべきブロックが位置するコーディング領域の予測タイプがBタイプ予測であるとき、双方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルおよび処理されるべきブロックのサブブロックの第2の方向サブブロック動きベクトルを別々に取得し、または、処理されるべきブロックが位置するコーディング領域の予測タイプがPタイプ予測であるとき、単方向予測が、処理されるべきブロックのサブブロックのために使用されると決定し、第1のあらかじめ設定された動きベクトルに基づいて、処理されるべきブロックのサブブロックの第1の方向サブブロック動きベクトルを取得するように構成される。
ある実現可能な実装形態では、動きベクトル取得モジュール1302は特に、処理されるべきブロックのサブブロックの動きベクトルを取得するために、第2の時間距離差分に対する第1の時間距離差分の比に基づいて、あらかじめ設定されたイントラブロック位置に対応する動きベクトルに対してスケーリング処理を実行するように構成され、第1の時間距離差分は、処理されるべきブロックが位置する画像フレームと処理されるべきブロックの参照フレームとの間のピクチャ順序カウント差分であり、第2の時間距離差分は、同一位置のサブブロックが位置する画像フレームと同一位置のサブブロックの参照フレームとの間のピクチャ順序カウント差分である。
ある実現可能な実装形態では、処理されるべきブロックの参照フレームリストの中の処理されるべきブロックの参照フレームのインデックスは、ビットストリームを解析することによって取得される。
ある実現可能な実装形態では、処理されるべきブロックの参照フレームリストの中の処理されるべきブロックの参照フレームのインデックスは0である。
ある実現可能な実装形態では、装置はさらに、処理されるべきブロックのサブブロックの予測値を取得するために、処理されるべきブロックのサブブロックの動きベクトルおよび処理されるべきブロックの参照フレームに基づいて、処理されるべきブロックのサブブロックに対する動き補償を実行するように構成される、動き補償モジュール1304を含む。
図13に示される本出願のこの実施形態におけるモジュールは、図12に示される方法および実現可能な実装形態を実行するように構成され、同じ技術的な効果を有することを理解されたい。
以下では、例を使用することによって、本出願の実施形態に関するいくつかの実装形態を説明する。
実施形態A
ステップ1: オフセット動きベクトル(offset motion vector)を決定する。
オフセット動きベクトル(offset motion vector)は、同一位置のピクチャ(collocated picture)における現在のCUの同一位置のブロックの位置を決定するために使用される。現在のCUの空間隣接ブロックの動きベクトルは、オフセット動きベクトルとして使用され得る。同一位置のピクチャにおける現在のCUの位置は、オフセット動きベクトルおよび現在のフレームの同一位置のピクチャに基づいて決定される。この位置におけるブロックは、同一位置のブロック(対応する/同一位置のブロック)と呼ばれる。オフセット動きベクトルは、次の方法のうちの1つを使用することによって取得され得る。
方法1: ある実装形態において、図6に示されるように、A1が利用可能である場合、オフセット動きベクトルは、以下の方法に従って決定される。
A1が利用不可能である場合、オフセット動きベクトルの値は0である。A1が利用不可能であることは、位置A1におけるブロックが復号されない場合、ブロックがインター予測ブロックではない(イントラ予測ブロックまたはイントラブロックコピー(Intra block copy、IBC)ブロック)であること、または、ブロックが現在のスライス(slice)、タイル、タイルグループ(tile group)、もしくはピクチャの外側に位置する場合、ブロックが利用不可能なブロックであると考えられることを意味する。
すべての以下の条件が満たされる場合、現在のブロックのオフセット動きベクトルは、A1のリスト1に対応する動きベクトルである。
リスト1が、予測のためにA1に使用される。
予測のために使用されるA1のリスト1の中の参照フレームが、現在のフレームの同一位置のピクチャ(collocated picture)と同じである。(POCが同じであるかどうかが決定され、参照フレームのインデックスおよび同一位置のピクチャのインデックスが同じPOCに対応し、現在のブロックの同一位置のピクチャのインデックスがビットストリームから取得され得る。)
低レイテンシコーディング構造が使用され、具体的には、現在のピクチャの前に表示されるピクチャのみが予測に使用される。
現在のブロックが位置するピクチャ、タイル、またはタイルグループのタイプは、Bタイプである。
collocated_from_l0_flagは0である。1に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト0から取得されることを指定する。0に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト1から取得されることを指定する。collocated_from_l0_flagがビットストリームに存在しないとき、collocated_from_l0_flagの値は1である。
そうではなく、すべての以下の条件が満たされる場合、オフセット動きベクトルは、A1のリスト0に対応する動きベクトルである。
リスト0が、予測のためにA1に使用される。
予測のために使用されるA1のリスト0の中の参照フレームが、現在のフレームの同一位置のピクチャと同じである。
方法2: たとえば、図6のA1、B1、B0、およびA0のシーケンスにおいて、第1の利用可能な隣接ブロックの動きベクトルが見つけられる。動きベクトルが同一位置のピクチャを指し示す場合、動きベクトルは現在のCUのオフセット動きベクトルとして使用される。それ以外の場合、ゼロ動きベクトルが使用されてもよく、または、ゼロ動きベクトルが同一位置のピクチャを指し示し、スケーリングされた動きベクトルが現在のCUのオフセット動きベクトルとして使用されるように、第1の利用可能な隣接ブロックの動きベクトルがスケーリングされる。
使用されるオフセットベクトルは代替として、ゼロオフセットベクトルであってもよいことを理解されたい。この場合、処理されるべきブロックと同じ位置にある同一位置のピクチャの中のピクチャブロックは、同一位置のピクチャの中の処理されるべきブロックの同一位置のブロックである。加えて、要件を満たす目標オフセットベクトルを見つけることができないとき、ATMVP技術は使用されないことがあるが、処理されるべきサブブロックの動きベクトルを取得するために、別の技術が使用される。
ステップ2: ATMVPモードにある利用可能性情報およびデフォルト動き情報を取得する。
同一位置のブロックがまず、オフセットベクトルに基づいて取得されてもよく、同一位置のブロックの中のあらかじめ設定された位置が位置する、同一位置のサブブロックSの予測モードが取得される。同一位置のブロックのあらかじめ設定された位置の座標(xcol,ycol)は、式(6)に従って取得され得る。ATMVPモードにおけるデフォルト動き情報および利用可能性は、同一位置のサブブロックSの予測モードおよび動き情報に基づいて取得される。具体的な方法は次の通りである。
具体的には、あらかじめ設定された位置に対応するサブブロックの予測モードを取得するために、まず、あらかじめ設定された位置の座標が同一位置のブロックにおいて決定され、ATMVPが現在利用可能であるかどうかが、あらかじめ設定された位置に対応するサブブロックSの予測モードに基づいて決定される。
(x,y)は現在のCUの左上の角の座標を表し、(xoff,yoff)はオフセット動きベクトルを表し、Wは現在のCUの幅を表し、Hは現在のCUの高さを表す。
あらかじめ設定された位置が位置する同一位置のサブブロックSの予測モードがイントラ予測モードまたはイントラブロックコピーモードである場合、ATMVPモードにおける動き情報は利用不可能である。
あらかじめ設定された位置が位置する同一位置のサブブロックSの予測モードがインター予測モードである場合、同一位置のサブブロックSの動き情報がさらに抽出され、あらかじめ設定された位置の座標は、式(6)に従って取得される。さらに、同一位置のピクチャの動きベクトルフィールドの中の位置の動き情報が、同一位置のサブブロックSの動き情報として使用され、同一位置のサブブロックSの動き情報は、同一位置のサブブロックのデフォルト動き情報と呼ばれる。
処理されるべきサブブロックのデフォルト動きベクトル(MV)を取得するために、同一位置のサブブロックSのデフォルト動きベクトルMVがスケーリングされ、スケーリングされた動きベクトル(MV)がデフォルト動き情報として使用される。
たとえば、図10に示されるように、スケーリングされたMVは、式(7)の方法を使用することによって取得され得る。スケーリング方法は、本明細書では特に限定されない。
現在のブロックが位置するフレームのPOCがCurPocであり、現在のブロックの参照フレームのPOCがCurRefPocであり、同一位置のピクチャのPOCがColPocであり、同一位置のサブブロックの参照フレームのPOCがColRefPocであり、スケーリングされるべき動きベクトルがMVであると仮定される。
任意選択で、MVが水平方向の動きベクトルMVxおよび垂直方向の動きベクトルMVyへと分解され、水平方向の動きベクトルMVsxおよび垂直方向の動きベクトルMVsyは、前述の式に従った計算を通じて別々に取得される。
(あらかじめ設定された位置は、1つのサブブロックSのみに対応し、同一位置のサブブロックSを選択することは、同一位置のサブブロックSの予測モードに基づいて、ATMVPが利用可能であるかどうかを決定することであることを理解されたい。)
ステップ3: 同一位置のサブブロックの動き情報に基づいて、処理されるべきサブブロックの動き情報を決定する。
図11に示されるように、現在のCUの中の各サブブロックに対して、同一位置のピクチャの中のサブブロックの同一位置のサブブロックが、オフセット動きベクトルおよびサブブロックの位置座標に基づいて決定され、同一位置のサブブロックの動き情報が取得される。
同一位置のサブブロックの中心点の位置座標は、式(8)に従って取得される。(x,y)は現在のCUの左上の角の座標を表し、iは左から右に向かってi番目のサブブロックを表し、jは上から下に向かってj番目のサブブロックを表し、(xoff,yoff)はオフセット動きベクトルを表し、M×Nはサブブロックのサイズ(たとえば、4×4または8×8)を表し、(x(i,j),y(i,j))は対応する(i,j)番目のサブブロックの位置座標を表す。
同一位置のサブブロックの予測モードは、同一位置のサブブロックの中心点の位置座標に基づいて取得される。同一位置のサブブロックの予測モードがインター予測モードである場合、同一位置のサブブロックの動き情報が利用可能である。この場合、同一位置のピクチャの動きベクトルフィールドの中の位置の動き情報が、同一位置のサブブロックの動き情報として使用される。処理されるべきサブブロックの動き情報を取得するために、同一位置のサブブロックの動き情報がスケーリングされる。スケーリング方法はステップ2の方法と同じであり、詳細はここでは再び説明されない。
同一位置のサブブロックの予測モードがイントラ予測モードまたはイントラブロックコピーモードである場合、同一位置のサブブロックの動き情報は利用不可能である。この場合、ステップ2において取得されるデフォルト動き情報が、同一位置のサブブロックの動き情報として使用され得る。
ステップ4: 現在のCUの予測されるピクセル値を取得するために、各サブブロックの動き情報に基づいて動き補償予測を実行する。
参照フレームの中の対応する座標点を見つけるために、サブブロックの動き情報に基づいて、各サブブロックの左上の角におけるピクセルの座標に動きベクトルが加算される。動きベクトルが分数サンプルの正確さである場合、サブブロックの予測されるピクセル値を取得するために、補間フィルタリングが実行される必要がある。それ以外の場合、参照フレームの中のピクセル値が直接取得され、サブブロックの予測されるピクセル値として使用される。
ATMVPモードにある利用可能性情報を決定するために、オフセット動きベクトルが導入される必要がある。これは、オフセット動きベクトル探索プロセスに依存する。加えて、同一位置のサブブロックの動き情報が利用不可能であるとき、デフォルトの動き情報が計算される必要がある。これはコーディング速度に影響を及ぼす。
実施形態B
ステップ1: オフセット動きベクトル(offset motion vector)を決定する。
オフセット動きベクトル(offset motion vector)は、同一位置のピクチャにおける現在のCUの同一位置のブロックの位置を決定するために使用される。現在のCUの空間隣接ブロックの動きベクトルは、オフセット動きベクトルとして使用され得る。空間隣接ブロックの参照フレームが、現在のCUの同一位置のピクチャ(collocated picture)として使用される。同一位置のピクチャブロックにおける現在のCUの位置は、オフセット動きベクトルおよび同一位置のピクチャブロックに基づいて決定される。この位置におけるブロックは、同一位置のブロック(対応する/同一位置のブロック)と呼ばれる。
具体的な方法は、実施形態Aのステップ1と同じである。
ステップ2: 同一位置のサブブロックの動き情報を取得する。
図11に示されるように、同一位置のブロックがまず、オフセットベクトルに基づいて取得され、次いで、処理されるべきサブブロックとのある相対的な位置関係を有する同一位置のサブブロックが、処理されるべきサブブロックの位置に基づいて目標ピクチャにおいて決定される(処理されるべきサブブロックとのある相対的な位置関係を有する同一位置のサブブロックが、同一位置のブロックにおいて決定されることとしても理解され得る)。
現在のCUの中の各サブブロックに対して、同一位置のピクチャの中のサブブロックの同一位置のサブブロックが、オフセット動きベクトルおよびサブブロックの位置座標に基づいて決定され、同一位置のサブブロックの動き情報が取得される。
同一位置のサブブロックの中心点の位置座標は、式(9)に従って取得される。(x,y)は現在のCUの左上の角の座標を表し、iは左から右に向かってi番目のサブブロックを表し、jは上から下に向かってj番目のサブブロックを表し、(xoff,yoff)はオフセット動きベクトルを表し、M×Nはサブブロックのサイズ(たとえば、4×4または8×8)を表し、(x(i,j),y(i,j))は対応する(i,j)番目のサブブロックの位置座標を表す。
同一位置のサブブロックの予測モードは、同一位置のサブブロックの中心点の位置座標に基づいて取得される。同一位置のサブブロックの予測モードがインター予測モードである場合、同一位置のサブブロックの動き情報が利用可能である。この場合、同一位置のピクチャの動きベクトルフィールドの中の位置の動き情報が、同一位置のサブブロックの動き情報として使用される。同一位置のサブブロックの動き情報に基づいて、現在のサブブロックの動き情報が導出される。同一位置のサブブロックの動きベクトルがスケーリングされ、サブブロックの動きベクトルへと転換される。従来の技術におけるスケーリング方法が使用されてもよく、詳細はここでは説明されない。
同一位置のサブブロックの予測モードがイントラ予測モードまたはイントラブロックコピーモードである場合、同一位置のサブブロックの動き情報は利用不可能である。この場合、以下の処理方法のうちの1つが使用され得る。
方法1: 現在のCUのサブブロックが位置するピクチャ、スライス、またはタイルグループのタイプがBタイプである場合、双方向ゼロ動きベクトルは、同一位置のサブブロックまたは処理されるべきサブブロックにおいて満たされ、たとえば、predFlagL0=1、predFlagL1=1、mvL0=0、およびmvL1=0である。
それ以外の場合、単方向リスト0動きベクトルが満たされ、たとえば、predFlagL0=1、predFlagL1=0、mvL0=0、およびmvL1=0である。
方法2: 単方向リスト0ゼロ動きベクトル情報は、同一位置のサブブロックまたは処理されるべきサブブロックにおいて満たされ、たとえば、predFlagL0=1、predFlagL1=0、mvL0=0、およびmvL1=0である。
方法3: 単方向リスト1ゼロ動きベクトル情報は、同一位置のサブブロックまたは処理されるべきサブブロックにおいて満たされ、たとえば、predFlagL0=0、predFlagL1=1、mvL0=0、およびmvL1=0である。
predFlagL0およびpredFlagL1はそれぞれ、リスト0およびリスト1を使用することによって予測を実行するための予測方向を表し、mvL0およびmvL1はそれぞれ、リスト0およびリスト1を使用することによって予測を実行するために使用される動きベクトルを表す。mvL0=0は、mvL0の水平成分と垂直成分の両方が0で満たされることを表し、mvL1=0は、mvL1の水平成分と垂直成分の両方が0であることを表す。
ステップ3: 現在のCUの予測されるピクセル値を取得するために、各サブブロックの動き情報に基づいて動き補償予測を実行する。
参照フレームの中の対応する座標点を見つけるために、サブブロックの動き情報に基づいて、各サブブロックの左上の角におけるピクセルの座標に動きベクトルが加算される。動きベクトルが分数サンプルの正確さである場合、サブブロックの予測されるピクセル値を取得するために、補間フィルタリングが実行される必要がある。それ以外の場合、参照フレームの中のピクセル値が直接取得され、サブブロックの予測されるピクセル値として使用される。
文書の改正は次の通りである(改正の基礎として、JVET-N1001-v3を参照されたい。以下の擬似コードの意味については、この文書を参照し、この文書はウェブサイトhttp://phenix.int-evry.fr/jvet/からダウンロードすることができる)。
- availableFlagL0SbColとavailableFlagL1SbColの両方が0に等しいとき、以下のことが当てはまる。
mvL0SbCol[xSbIdx][ySbIdx][0]=0 (8-638)
mvL0SbCol[xSbIdx][ySbIdx][1]=0 (8-638)
predFlagL0SbCol[xSbIdx][ySbIdx]=1 (8-639)
mvL1SbCol[xSbIdx][ySbIdx][0]=0 (8-638)
mvL1SbCol[xSbIdx][ySbIdx][1]=0 (8-638)
predFlagL1SbCol[xSbIdx][ySbIdx]=slice_type==B?1:0 (8-639)
mvL0SbCol[xSbIdx][ySbIdx][0]=0 (8-638)
mvL0SbCol[xSbIdx][ySbIdx][1]=0 (8-638)
predFlagL0SbCol[xSbIdx][ySbIdx]=1 (8-639)
mvL1SbCol[xSbIdx][ySbIdx][0]=0 (8-638)
mvL1SbCol[xSbIdx][ySbIdx][1]=0 (8-638)
predFlagL1SbCol[xSbIdx][ySbIdx]=0 (8-639)
本出願のこの実施形態によれば、同一位置のサブブロックの動き情報が利用不可能であるとき、複雑な開始オフセット動きベクトル計算が必要とされる従来技術の問題、利用可能性情報を決定するために、あらかじめ設定された動き情報が直接満たされ、ATMVPモードにあるデフォルトの動き情報が解決される。これは、コーディングの複雑さを下げる。
実施形態C
この実施形態は、インター予測方法に関し、オフセット動きベクトルを取得するための方法が最適化される。ステップ2および3は、実施形態Aにおけるものと同じである。具体的な説明が次のように与えられる。
ステップ1: オフセット動きベクトル(offset motion vector)を決定する。
オフセット動きベクトル(offset motion vector)は、同一位置のピクチャにおける現在のCUの同一位置のブロックの位置を決定するために使用される。現在のCUの空間隣接ブロックの動きベクトルは、オフセット動きベクトルとして使用され得る。空間隣接ブロックの参照フレームが、現在のCUの同一位置のピクチャ(collocated picture)として使用される。同一位置のピクチャブロックにおける現在のCUの位置は、オフセット動きベクトルおよび同一位置のピクチャブロックに基づいて決定される。この位置におけるブロックは、同一位置のブロック(対応する/同一位置のブロック)と呼ばれる。
図10に示されるように、A1が利用可能であり、A1の動きベクトルが指し示す同一位置のピクチャがA1の同一位置のピクチャである(すなわち、A1の参照ピクチャがA1の同一位置のフレームである)場合、A1の動きベクトルは現在のCUのオフセット動きベクトルとして使用される。オフセット動きベクトルは、次の方法のうちの1つを使用することによって取得され得る。A1が利用不可能である場合、オフセット動きベクトルの値は0である。A1が利用不可能であることは、位置A1におけるブロックが復号されない場合、ブロックは、イントラ予測ブロックまたはイントラブロックコピーブロックであり、または、ブロックが現在のスライス(slice)、タイル、タイルグループ(tile group)、もしくはピクチャの外側に位置する場合、ブロックが利用不可能なブロックであると考えられることを意味する。
方法1: すべての以下のあらかじめ設定された条件が満たされるかどうかが決定される。すべてのあらかじめ設定された条件が満たされる場合、A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト1に対応する動きベクトルがオフセット動きベクトルとして使用され、または、A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと異なる場合、リスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。リスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト0に対応する動きベクトルは、オフセット動きベクトルとして使用され、それ以外の場合、オフセット動きベクトルは0である。
(1)低レイテンシコーディング構造が使用され、具体的には、現在のピクチャの前に表示されるピクチャのみが予測に使用される。
(2)現在のブロックが位置するピクチャ、タイル、またはタイルグループのタイプは、Bタイプである。
(3)collocated_from_l0_flagは0である。1に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト0から取得されることを指定する。0に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト1から取得されることを指定する。collocated_from_l0_flagがビットストリームに存在しないとき、collocated_from_l0_flagの値は1である。
それ以外の場合(前述のあらかじめ設定された条件が満たされない場合)、A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかがまず確認される。A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト0に対応する動きベクトルがオフセット動きベクトルとして使用され、または、A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと異なる場合、リスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。リスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト1に対応する動きベクトルは、オフセット動きベクトルとして使用され、それ以外の場合、オフセット動きベクトルは0である。
方法2: 両方の以下のあらかじめ設定された条件が満たされるかどうかが決定される。両方のあらかじめ設定された条件が満たされる場合、A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト1に対応する動きベクトルがオフセット動きベクトルとして使用され、または、A1のリスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと異なる場合、リスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。リスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト0に対応する動きベクトルは、オフセット動きベクトルとして使用され、それ以外の場合、オフセット動きベクトルは0である。
(1)現在のブロックが位置するピクチャ、タイル、またはタイルグループのタイプは、Bタイプである。
(2)collocated_from_l0_flagは0である。1に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト0から取得されることを指定する。0に等しいcollocated_from_l0_flagは、時間動きベクトル予測のための同一位置のピクチャが、参照ピクチャキューリスト1から取得されることを指定する。collocated_from_l0_flagがビットストリームに存在しないとき、collocated_from_l0_flagの値は1である。
それ以外の場合(前述のあらかじめ設定された条件が満たされない場合)、A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかがまず確認される。A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト0に対応する動きベクトルがオフセット動きベクトルとして使用され、または、A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと異なる場合、リスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。リスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、リスト1に対応する動きベクトルは、オフセット動きベクトルとして使用され、それ以外の場合、オフセット動きベクトルは0である。
方法3: A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかがまず確認される。A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、A1のリスト0に対応する動きベクトルがオフセット動きベクトルとして使用される。リスト1に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される必要はない。A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと異なり、現在のブロックが位置するピクチャ、タイル、またはタイルグループのタイプがBタイプである場合、リスト1の参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかがさらに決定される必要がある。リスト1の参照フレームが現在のフレームの同一位置のピクチャと同じである場合、A1のリスト1に対応する動きベクトルは、オフセット動きベクトルとして使用されることがあり、それ以外の場合、オフセット動きベクトルは0である。
方法4: A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じであるかどうかが確認される。A1のリスト0に対応する参照フレームが現在のフレームの同一位置のピクチャと同じである場合、A1のリスト0に対応する動きベクトルは、オフセット動きベクトルとして使用され、それ以外の場合、オフセット動きベクトルは0である。
ピクチャブロックの現在のフレームの同一位置のピクチャのインデックス番号(idx)は、ビットストリームから取得され得る。
使用されるオフセットベクトルは代替として、ゼロオフセットベクトルであってもよいことを理解されたい。この場合、処理されるべきブロックと同じ位置にある同一位置のピクチャの中のピクチャブロックは、同一位置のピクチャの中の処理されるべきブロックの同一位置のブロックである。加えて、要件を満たす目標オフセットベクトルを見つけることができないとき、ATMVP技術は使用されないことがあるが、処理されるべきサブブロックの動きベクトルを取得するために、別の技術が使用される。
文書の改正は次の通りである。
方法1:
availableFlagA1がTRUEであるとき、以下のことが当てはまる。
- 以下の条件のすべてが真である場合、checkL1Firstが1に等しく設定される:
- DiffPicOrderCnt(aPic,currPic)が、現在のスライスの1つ1つの参照ピクチャの中の1つ1つのピクチャaPicに対して0以下である、
- slice_typeがBに等しい、
- collocated_from_l0_flagが0に等しい。
- KがcheckL1Firstに等しく設定され、以下の条件のすべてが真である場合、tempMVがmvLKA1に等しく設定される:
- predFlagLKA1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[K][refIdxLKA1])が0に等しい。
- そうではなく、Kが(1-checkL1First)に等しく設定され、以下の条件のすべてが真である場合、tempMVがmvLKA1に等しく設定される:
- predFlagLKA1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[K][refIdxLKA1])が0に等しい。
方法2:
availableFlagA1がTRUEであるとき、以下のことが当てはまる。
- 以下の条件のすべてが真である場合、checkL1Firstが1に等しく設定される:
- slice_typeがBに等しい、
- collocated_from_l0_flagが0に等しい。
- KがcheckL1Firstに等しく設定され、以下の条件のすべてが真である場合、tempMVがmvLKA1に等しく設定される:
- predFlagLKA1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[K][refIdxLKA1])が0に等しい。
- そうではなく、Kが(1-checkL1First)に等しく設定され、以下の条件のすべてが真である場合、tempMVがmvLKA1に等しく設定される:
- predFlagLKA1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[K][refIdxLKA1])が0に等しい。
方法3:
availableFlagA1がTRUEであるとき、以下のことが当てはまる。
- 以下の条件のすべてが真である場合、tempMVがmvL0A1に等しく設定される:
- predFlagL0A1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[0][refIdxL0A1])が0に等しい。
- そうではなく、以下の条件のすべてが真である場合、tempMVがmvL1A1に等しく設定される:
- slice_typeがBに等しい、
- predFlagL1A1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[1][refIdxL1A1])が0に等しい。
方法4:
availableFlagA1がTRUEであるとき、以下のことが当てはまる。
- 以下の条件のすべてが真である場合、tempMVがmvL0A1に等しく設定される:
- predFlagL0A1が1に等しい、
- DiffPicOrderCnt(ColPic,RefPicList[0][refIdxL0A1])が0に等しい。
本出願の実施形態は、コーディングの複雑さを下げてコーディング効率を高めるために、新しいオフセット動きベクトル計算方法を提供する。
本明細書において開示され説明される様々な例示的な論理ブロック、モジュール、およびアルゴリズムステップを参照して説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せを使用することによって実装され得ることを、当業者は理解することができる。ソフトウェアが実装のために使用される場合、例示的な論理ブロック、モジュール、およびステップを参照して説明される機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体に記憶され、もしくはそれを介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、コンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、データ記憶媒体などの有形媒体に対応し、または、ある場所から別の場所へのコンピュータプログラムの転送(たとえば、通信プロトコルに従った)を容易にする任意の媒体を含む通信媒体に対応する。このようにして、コンピュータ可読媒体は一般に、(1)非一時的有形コンピュータ可読記憶媒体、または(2)信号もしくはキャリアなどの通信媒体に対応し得る。データ記憶媒体は、本出願において説明される技術を実装するための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の使用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは別の光学ディスクストレージ装置、磁気ディスクストレージ装置もしくは別の磁気ストレージ装置、フラッシュメモリ、または、命令もしくはデータ構造の形で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。加えて、あらゆる接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または別のリモートソースから、同軸ケーブル、光ファイバ、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を通じて送信される場合、同軸ケーブル、光ファイバ、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術が、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、キャリア、信号、または他の一時的媒体を含まず、実際は、非一時的有形記憶媒体を意味することを理解されたい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光学ディスク、デジタル多用途ディスク(DVD)、およびBlu-ray(登録商標)ディスクを含む。ディスク(disk)は通常は磁気的にデータを再生し、一方、ディスク(disc)はレーザーを用いて光学的にデータを再生する。前述の項目の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、前述の構造、または本明細書において説明される技術を実装するのに適切な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書において説明される例示的な論理ブロック、モジュール、およびステップを参照して説明される機能は、符号化および復号のために構成される専用ハードウェアならびに/もしくはソフトウェアモジュール内で提供されてもよく、または合成コーデックへと組み込まれてもよい。加えて、技術はすべて、1つまたは複数の回路または論理要素において実装され得る。
本出願における技術は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、様々な装置またはデバイスにおいて実装され得る。開示される技術を実行するように構成される装置の機能的な態様を強調するために、様々なコンポーネント、モジュール、またはユニットが本出願において説明されるが、異なるハードウェアユニットを使用することによって実装されるとは限らない。実際には、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/もしくはファームウェアとの組合せでコーデックハードウェアユニットへと組み合わせられてもよく、または、相互運用可能なハードウェアユニット(上で説明された1つまたは複数のプロセッサを含む)によって提供されてもよい。
前述の実施形態では、実施形態の説明にはそれぞれの注目点がある。実施形態において詳しく説明されない部分については、他の実施形態における関連する説明を参照されたい。
前述の説明は、本出願の特定の例示的な実装形態にすぎず、本出願の保護範囲を制限することは意図されていない。本出願において開示される技術範囲内で当業者により容易に理解されるあらゆる変形または置換が、本出願の保護範囲内に入るものとする。したがって、本出願の保護範囲は、請求項の保護範囲に左右されるものとする。