以下は、添付図面を参照して、この出願の技術的解決策を説明する。
以下の説明において、この出願の一部を形成し、この出願の実施形態の具体的な態様、またはこの出願の実施形態が使用され得る具体的な態様を例示によって表す添付図面への参照が行われる。この出願の実施形態は、別の態様においてさらに使用されてもよく、添付図面において描写されていない構造的または論理的変更を含み得ることが理解されるべきである。したがって、以下の詳細な説明は、限定する意味に受け取られるべきではなく、この出願の範囲は、添付されている請求項によって定義されるべきである。
たとえば、説明されている方法に関連する開示は、方法を実行するように構成された対応するデバイスまたはシステムにも当てはまることが可能であり、その逆もまた同様であることが理解されるべきである。
別の例について、1つまたは複数の特定の方法のステップが説明されているならば、対応するデバイスは、そのような1つまたは複数のユニットが明示的に説明されていないか、または添付図面に例示されていなくても、説明されている1つまたは複数の方法のステップを実行するために、機能ユニットなどの1つまたは複数のユニット(たとえば、1つまたは複数のステップを実行する1つのユニット、または複数のステップのうちの1つもしくは複数を各々が実行する複数のユニット)を含み得る。
加えて、特定の装置が機能ユニットなどの1つまたは複数のユニットに基づいて説明されているならば、対応する方法は、そのような1つまたは複数のステップが明示的に説明されていないか、または添付図面に例示されていなくても、1つまたは複数のユニットの機能を実行するために使用される1つのステップ(たとえば、1つまたは複数のユニットの機能を実行するために使用される1つのステップ、または複数のユニットのうちの1つもしくは複数の機能を実行するために各々が使用される複数のステップ)を含み得る。さらに、この明細書で説明されている様々な例示の実施形態および/または態様の特徴は、特にそうでなく注記されなければ、互いに組み合わされ得ることが理解されるべきである。
この出願の実施形態における技術的解決策は、H.266規格および将来のビデオコーディング規格に適用され得る。この出願の実装において使用されている用語は、単に、この出願の特定の実施形態を説明するように意図されており、この出願を限定するように意図されていない。以下は、最初に、この出願の実施形態における関連する概念を簡単に説明する。
ビデオコーディングは、通常、ビデオまたはビデオシーケンスを構成するピクチャのシーケンスを処理することを指す。ビデオコーディングの分野では、用語「ピクチャ(picture)」、「フレーム(frame)」、および「画像(image)」は、同義語として使用され得る。この明細書において使用されるビデオコーディングは、ビデオ符号化とビデオ復号を含む。ビデオ符号化は、ソース側において実行され、通常、より効率的な記憶および/または伝送のために、ビデオピクチャを表現するためのデータ量を削減するために元のビデオピクチャを(たとえば、圧縮することによって)処理することを含む。ビデオ復号は、宛先側において実行され、通常、ビデオピクチャを再構築するために、エンコーダに対しての逆処理を含む。実施形態におけるビデオピクチャの「コーディング」は、ビデオシーケンスの「符号化」または「復号」として理解されるべきである。符号化部分と復号部分の組み合わせは、コーデック(符号化および復号)とも呼ばれる。
ビデオシーケンスは、一連のピクチャ(picture)を含み、ピクチャは、スライス(slice)にさらに分割され、スライスは、ブロック(block)にさらに分割される。ビデオコーディングは、ブロック単位で実行される。いくつかの新しいビデオコーディング規格では、概念「ブロック」がさらに拡張されている。たとえば、マクロブロック(macroblock、MB)がH.264規格において導入されている。マクロブロックは、予測コーディングのために使用されることが可能である複数の予測ブロック(partition)にさらに分割され得る。高効率ビデオコーディング(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)に区分され得る。ビデオ圧縮技術の最近の開発では、四分木プラス二分木(quad-tree and binary tree、QTBT)区分フレームが、コーディングブロックを区分するために使用される。QTBTブロック構造では、CUは、正方形または長方形であり得る。
この明細書において、説明および理解の容易さのために、現在のコーディングされたピクチャ内の符号化されるべきピクチャブロックは、現在のピクチャブロックと呼ばれ得る。たとえば、符号化において、現在のピクチャブロックは、現在符号化されているブロックであり、復号において、現在のピクチャブロックは、現在復号されているブロックである。現在のピクチャブロックを予測するために使用される、参照ピクチャ内の復号されたピクチャブロックは、参照ブロックと呼ばれる。言い換えれば、参照ブロックは、現在のピクチャブロックのための参照信号を提供するブロックであり、参照信号は、ピクチャブロック内のピクセル値を表現する。参照ピクチャ内の現在のピクチャブロックのための予測信号を提供するブロックは、予測ブロックと呼ばれてもよく、予測信号は、予測ブロック内のピクセル値、サンプリング値、またはサンプリング信号を表現する。たとえば、複数の参照ブロックをトラバースした後、最適な参照ブロックが見つけられ、最適な参照ブロックは、現在のピクチャブロックについての予測を提供し、このブロックは、予測ブロックと呼ばれる。
損失のないビデオコーディングの場合、元のビデオピクチャが再構築されることが可能であり、これは、再構築されたビデオピクチャが元のビデオピクチャと同じ品質を有することを意味する(記憶または伝送の間に伝送損失または他のデータ損失が発生しないと仮定する)。損失のあるビデオコーディングの場合、ビデオピクチャを表現するために要求されるデータ量を削減するために、たとえば、量子化を通じてさらなる圧縮が実行され、デコーダ側においてビデオピクチャが完全に再構築されることが可能でなく、これは、再構築されたビデオピクチャの品質が元のビデオピクチャのそれよりも低いか、または劣っていることを意味する。
いくつかのH.261ビデオコーディング規格は、「損失のあるハイブリッドビデオコーデック」のためのものである(具体的には、サンプル領域における空間的および時間的予測が、変換領域における量子化を適用するための2D変換コーディングと組み合わされる)。ビデオシーケンスの各ピクチャは、通常、重複しないブロックのセットに区分され、コーディングは、通常、ブロックレベルにおいて実行される。言い換えれば、エンコーダ側において、ビデオは、通常、ブロック(ビデオブロック)レベルにおいて処理、すなわち、符号化される。たとえば、予測ブロックが空間的(イントラピクチャ)予測および時間的(インターピクチャ)予測を通じて生成され、予測ブロックは、残差ブロックを取得するために現在のピクチャブロック(現在処理されているまたは処理されるべきブロック)から減算され、残差ブロックは、送信される(圧縮される)べきデータ量を削減するために、変換領域において変換され、量子化される。デコーダ側において、表現のための現在のピクチャブロックを再構築するために、符号化されたまたは圧縮されたブロックに対して、エンコーダに対しての逆処理部分が適用される。さらに、エンコーダは、エンコーダおよびデコーダが後続のブロックを処理するために、すなわち、コーディングするために同じ予測(たとえば、イントラ予測およびインター予測)および/または再構築を生成するように、デコーダ処理ループを二重化する。
以下は、本発明の実施形態に適用可能なシステムアーキテクチャを説明する。図1は、この出願の実施形態に適用可能なビデオ符号化および復号システム10の一例の概略ブロック図である。図1に表されているように、ビデオ符号化および復号システム10は、ソースデバイス12と宛先デバイス14を含み得る。ソースデバイス12は、符号化されたビデオデータを生成し、したがって、ソースデバイス12は、ビデオ符号化装置と呼ばれてもよい。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号することが可能であり、したがって、宛先デバイス14は、ビデオ復号装置と呼ばれてもよい。様々な実装解決策において、ソース装置12、宛先装置14、またはソース装置12と宛先装置14の両方は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合されたメモリとを含み得る。メモリは、限定しないが、リードオンリメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、消去可能プログラム可能リードオンリメモリ(erasable programmable read-only memory、EPROM)、フラッシュメモリ、またはこの明細書において説明されているように、命令またはデータ構造の形式で要求されるプログラムコードを記憶するように構成されることが可能であり、コンピュータによってアクセスされることが可能である任意の他の媒体を含み得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビ、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、ワイヤレス通信デバイス、または同様のものを含む様々な装置を含み得る。
図1は、ソースデバイス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がインターフェースを含むとき、インターフェースは、たとえば、外部ビデオソースからピクチャを受信するための外部インターフェースであり得る。外部ビデオソースは、たとえば、カメラ、外部メモリ、または外部ピクチャ生成デバイスなどの外部ピクチャキャプチャデバイスである。外部ピクチャ生成デバイスは、たとえば、外部コンピュータグラフィックスプロセッサ、コンピュータ、またはサーバである。インターフェースは、任意の独自のまたは標準化されたインターフェースプロトコルに従う、任意のタイプのインターフェース、たとえば、有線またはワイヤレスインターフェース、または光インターフェースであり得る。
ピクチャは、ピクセル要素(picture element)の2次元配列または行列と見なされ得る。配列内のピクセル要素は、サンプルとも呼ばれ得る。配列またはピクチャの水平および垂直方向(または軸)におけるサンプルの数量は、ピクチャのサイズおよび/または解像度を定義する。色の表現のために、通常、3つの色成分が用いられる。具体的には、ピクチャは、3つのサンプル配列として表現され、またはそれらを含み得る。たとえば、RGBフォーマットまたは色空間において、ピクチャは、対応する赤、緑、および青のサンプル配列を含む。しかしながら、ビデオコーディングでは、各ピクセルは、通常、輝度/色度フォーマットまたは色空間において表現される。たとえば、YUVフォーマットにおけるピクチャは、Yによって示される(代替的に時々Lによって示される)輝度成分と、UおよびVによって示される2つの色度成分とを含む。輝度(luma)成分Yは、明るさまたはグレーレベル強度(たとえば、グレースケールピクチャでは、両方は同じである)を表現し、2つの色度(chroma)成分UおよびVは、色度または色情報成分を表現する。これに対応して、YUVフォーマットにおけるピクチャは、輝度サンプル値(Y)の輝度サンプル配列と、色度値(UおよびV)の2つの色度サンプル配列とを含む。RGBフォーマットにおけるピクチャは、YUVフォーマットに変換またはコンバートされてもよく、その逆もまた同様である。このプロセスは、色コンバージョンまたは変換とも呼ばれる。ピクチャがモノクロであるならば、ピクチャは、輝度サンプル配列のみを含み得る。この出願のこの実施形態では、ピクチャソース16によってピクチャプロセッサに送信されるピクチャは、生ピクチャデータとも呼ばれ得る。
ピクチャプリプロセッサ18は、生ピクチャデータ17を受信し、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するために、生ピクチャデータ17に対して前処理を実行するように構成されている。たとえば、ピクチャプリプロセッサ18によって実行される前処理は、トリミング、(たとえば、RGBフォーマットからYUVフォーマットへの)色フォーマットコンバージョン、色補正、またはノイズ除去を含み得る。
エンコーダ20(ビデオエンコーダ20とも呼ばれる)は、前処理されたピクチャデータ19を受信し、符号化されたピクチャデータ21を提供するために、関連する予測モード(この明細書の各実施形態における予測モードなど)を使用することによって、前処理されたピクチャデータ19を処理するように構成されている(エンコーダ20の構造的詳細は、図2、図4、または図5に基づいて以下でさらに説明されている)。いくつかの実施形態において、エンコーダ20は、この明細書において説明されているピクチャ予測方法のエンコーダ側アプリケーションを実現するために、以下で説明されている各実施形態を実行するように構成され得る。
通信インターフェース22は、符号化されたピクチャデータ21を受信し、記憶または直接の再構築のために、リンク13を通じて、符号化されたピクチャデータ21を宛先デバイス14または任意の他のデバイス(たとえば、メモリ)に送信するように構成され得る。他のデバイスは、復号または記憶のために使用される任意のデバイスであり得る。通信インターフェース22は、たとえば、符号化されたピクチャデータ21を、リンク13上の伝送のための適切なフォーマット、たとえば、データパケットにカプセル化するように構成され得る。
宛先デバイス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は、後処理されたピクチャデータ33を取得するために、復号されたピクチャデータ31(再構築されたピクチャデータとも呼ばれる)を後処理するように構成されている。ピクチャポストプロセッサ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)、または任意のタイプの他のディスプレイを含み得る。
図1は、ソースデバイス12および宛先デバイス14を別個のデバイスとして描写しているが、デバイスの実施形態は、代替的には、ソースデバイス12と宛先デバイス14の両方、またはソースデバイス12と宛先デバイス14の両方の機能、すなわち、ソースデバイス12または対応する機能と、宛先デバイス14または対応する機能とを含み得る。そのような実施形態において、ソースデバイス12または対応する機能、および宛先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェア、別個のハードウェアおよび/またはソフトウェア、またはそれらの任意の組み合わせを使用することによって実現され得る。
説明に基づいてこの技術分野の当業者には明らかであるように、図1に表されている異なるユニットの機能またはソースデバイス12および/または宛先デバイス14の機能の存在および(正確な)分割は、実際のデバイスおよびアプリケーションに依存して異なり得る。ソースデバイス12および宛先デバイス14は、任意のタイプのハンドヘルドまたは据え置き型デバイス、たとえば、ノートブックもしくはラップトップコンピュータ、携帯電話、スマートフォン、タブレットもしくはタブレットコンピュータ、ビデオカメラ、デスクトップコンピュータ、セットトップボックス、テレビ、カメラ、車載デバイス、表示デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、放送受信機デバイス、または放送送信機デバイスを含む広範囲のデバイスのいずれかを含んでもよく、任意のタイプのオペレーティングシステムを使用しても、使用しなくてもよい。
エンコーダ20およびデコーダ30は、各々、様々な適した回路、たとえば、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ (digital signal processor、DSP)、特定用途向け集積回路(application-specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、個別のロジック、ハードウェア、またはそれらの任意の組み合わせのいずれかとして実現され得る。技術がソフトウェアを使用することによって部分的に実現されているならば、デバイスは、適した非一時的コンピュータ可読記憶媒体にソフトウェア命令を記憶してもよく、この明細書の技術を実行するために、1つまたは複数のプロセッサなどのハードウェアを使用することによって命令を実行してもよい。前述の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせ、および同様のものを含む)のいずれかが、1つまたは複数のプロセッサとして考えられ得る。
いくつかの場合において、図1に表されているビデオ符号化および復号システム10は、単に一例であり、この出願の技術は、符号化デバイスと復号デバイスの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用可能であり得る。別の例では、データは、ローカルメモリから取り出され、ネットワーク上でストリーミングされ、または同様にされてもよい。ビデオ符号化デバイスは、データを符号化し、データをメモリに記憶してもよく、および/またはビデオ復号デバイスは、メモリからデータを取り出し、データを復号してもよい。いくつかの例では、符号化および復号は、互いに通信しないが、単にデータをメモリに符号化し、および/またはメモリからデータを取り出し、データを復号するデバイスによって実行される。
図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は、上記で説明されている区分技術の任意の組み合わせを実行するように構成され得る。
ピクチャブロック203のサイズは、ピクチャ201のサイズよりも小さいが、ピクチャ210と同様に、ピクチャブロック203も、サンプル値を有するサンプルの2次元配列または行列であるか、またはそれとして考えられ得る。言い換えれば、ピクチャブロック203は、たとえば、1つのサンプル配列(たとえば、モノクロピクチャ201の場合にルマ配列)、3つのサンプル配列(たとえば、カラーピクチャの場合に1つのルマ配列および2つのクロマ配列)、または適用されるカラーフォーマットに依存して任意の他の数量および/またはタイプの配列を含み得る。ピクチャブロック203の水平および垂直方向(または軸)におけるサンプルの数量は、ピクチャブロック203のサイズを定義する。
図2に表されているエンコーダ20は、ピクチャ201をブロックごとに符号化し、たとえば、各ピクチャブロック203に対して符号化および予測を実行するように構成されている。
残差計算ユニット204は、ピクチャ画像ブロック203と予測ブロック265(予測ブロック265に関する詳細は、以下でさらに提供されている)に基づいて、たとえば、サンプル領域における残差ブロック205を取得するためにサンプルごとに(ピクセルごとに)ピクチャ画像ブロック203のサンプル値から予測ブロック265のサンプル値を減算することによって、残差ブロック205を計算するように構成されている。
変換処理ユニット206は、変換領域における変換係数207を取得するために、変換、たとえば、離散コサイン変換(discrete cosine transform、DCT)または離散サイン変換(discrete sine transform、DST)を残差ブロック205のサンプル値に適用するように構成されている。変換係数207は、また、変換残差係数と呼ばれてもよく、変換領域における残差ブロック205を表現する。
変換処理ユニット206は、HEVC/H.265で指定されている変換などのDCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較して、そのような整数近似は、通常、係数によってスケーリングされる。順変換と逆変換を使用することによって処理された残差ブロックのノルムを維持するために、変換プロセスの一部として追加のスケール係数が適用される。スケール係数は、通常、いくつかの制約、たとえば、スケール係数がシフト演算のために2の累乗であること、変換係数のビット深度、および精度と実装コストの間のトレードオフに基づいて選択される。たとえば、特定のスケール係数が、たとえば、デコーダ30側における逆変換処理ユニット212による逆変換(および、たとえば、エンコーダ20側における逆変換処理ユニット212による対応する逆変換)に対して指定され、これに対応して、対応するスケール係数が、エンコーダ20側における変換処理ユニット206による順変換に対して指定され得る。
量子化ユニット208は、たとえば、スカラー量子化またはベクトル量子化を適用することによって、量子化された変換係数209を取得するために変換係数207を量子化するように構成されている。量子化された変換係数209は、量子化された残差係数209とも呼ばれ得る。量子化プロセスは、変換係数207のうちのいくつかまたはすべてに関連するビット深度を削減し得る。たとえば、nビット変換係数は、量子化の間にmビット変換係数に切り捨てられてもよく、nはmよりも大きい。量子化度は、量子化パラメータ(quantization parameter、QP)を調整することによって修正され得る。たとえば、スカラー量子化について、より細かいまたはより粗い量子化を達成するために、様々なスケールが適用され得る。より小さい量子化ステップは、より細かい量子化に対応し、より大きい量子化ステップは、より粗い量子化に対応する。適切な量子化ステップは、量子化パラメータ(quantization parameter、QP)によって示され得る。たとえば、量子化パラメータは、適切な量子化ステップの事前定義されたセットに対するインデックスであり得る。たとえば、より小さい量子化パラメータは、より細かい量子化(より小さい量子化ステップ)に対応してもよく、より大きい量子化パラメータは、より粗い量子化(より大きい量子化ステップ)に対応してもよく、逆もまた同様である。量子化は、たとえば、逆量子化ユニット210によって実行される、量子化ステップによる除算と、対応する量子化または逆量子化とを含んでもよく、または量子化ステップによる乗算を含んでもよい。HEVCなどのいくつかの規格に従う実施形態は、量子化ステップを決定するために量子化パラメータを使用し得る。一般に、量子化ステップは、除算を含む方程式の固定小数点近似を使用することによって、量子化パラメータに基づいて計算され得る。残差ブロックのノルムを復元するために、量子化および量子化解除に対して追加のスケール係数が導入されてもよく、量子化ステップおよび量子化パラメータに対して方程式の固定小数点近似において使用されるスケールのために、残差ブロックのノルムが修正され得る。一例の実装において、逆変換のスケールは、量子化解除のスケールと組み合わされ得る。代替的には、カスタマイズされた量子化テーブルが
使用され、たとえば、ビットストリームにおいて、エンコーダからデコーダにシグナリングされ得る。量子化は、損失のある動作であり、より大きい量子化ステップがより大きい損失を示す。
逆量子化ユニット210は、量子化解除された係数211を取得するために、量子化ユニット208の逆量子化を量子化された係数に適用し、たとえば、量子化ユニット208と同じ量子化ステップに基づくか、またはそれを使用することによって、量子化ユニット208によって適用された量子化方式の逆を適用するように構成されている。量子化解除された係数211は、量子化解除された残差係数211とも呼ばれ、通常、量子化により引き起こされる損失のために変換係数とは異なるが、変換係数207に対応し得る。
逆変換処理ユニット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に記憶されているフィルタリングされていない再構築されたブロックおよび/または対応するサンプル値を使用するように構成され得る。
たとえば、一実施形態において、エンコーダ20は、バッファユニット216が、イントラ予測254のために使用されるだけでなく、ループフィルタユニット220(図2には表されていない)のためにも使用される再構築されたブロック215を記憶するように構成されるように、および/または、たとえば、バッファユニット216および復号されたピクチャバッファ230が1つのバッファを形成するように構成され得る。別の実施形態において、フィルタリングされたブロック211および/または復号されたピクチャバッファ230からのブロックもしくはサンプル(図2には表されていない)が、イントラ予測254のための入力または基礎として使用される。
ループフィルタユニット220(略して「ループフィルタ」220)は、ピクセル遷移を滑らかにするか、またはビデオ品質を改善するために、フィルタリングされたブロック221を取得するために、再構築されたブロック215をフィルタリングするように構成されている。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または別のフィルタ、たとえば、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter、ALF)、鮮鋭化もしくは平滑化フィルタ、もしくは協調フィルタなどの、1つまたは複数のループフィルタを表現することが意図されている。ループフィルタユニット200は、図2においてループ内フィルタとして表されているが、別の実装では、ループフィルタユニット200は、ポストループフィルタとして実現され得る。フィルタリングされたブロック221は、フィルタリングされた再構築されたブロック221とも呼ばれ得る。復号されたピクチャバッファ230は、ループフィルタユニット220が再構築された符号化されたブロックに対してフィルタリング動作を実行した後、再構築された符号化されたブロックを記憶し得る。
一実施形態において、エンコーダ20(これに対応して、ループフィルタユニット220)は、デコーダ30が復号のために同じループフィルタパラメータを受信および適用することができるように、たとえば、直接、またはエントロピー符号化ユニット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に記憶された少なくとも部分的に復号されているピクチャ)と、他のインター予測パラメータとに依存し、たとえば、最も一致する参照ブロックを探索するために、参照ピクチャ全体が使用されるか、もしくは参照ピクチャの一部のみ、たとえば、現在のピクチャブロックのエリアの周りの探索ウィンドウエリアが使用されるかに依存し、および/または、たとえば、ハーフペルおよび/またはクォーターペル補間などのピクセル補間が適用されるかどうかに依存する。インター予測モードのセットは、たとえば、高度動きベクトル(Advanced Motion Vector Prediction、AMVP)モードおよびマージ(merge)モードを含み得る。具体的な実装において、インター予測モードのセットは、この出願の実施形態では、改善された制御点に基づくAMVPモードと、改善された制御点に基づくマージモードとを含み得る。一例では、イントラ予測ユニット254は、以下で説明されているインター予測技術の任意の組み合わせを実行するように構成され得る。
前述の予測モードに加えて、スキップモードおよび/または直接モードも、この出願の実施形態において適用され得る。
予測処理ユニット260は、たとえば、四分木(quad-tree、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は、たとえば、複数の(事前決定された)イントラ予測モードからイントラ予測モードを選択するように構成され得る。
一実施形態において、最適化基準に従って、たとえば、最小残差(たとえば、現在のピクチャブロック203に最も類似する予測ブロック255を提供するイントラ予測モード)または最小レート歪みに基づいて、イントラ予測モードを選択するように構成されているエンコーダ20。
イントラ予測ユニット254は、たとえば、選択されたイントラ予測モードにおけるイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するようにさらに構成されている。いずれの場合も、ブロックに対してイントラ予測モードを選択した後、イントラ予測ユニット254は、イントラ予測パラメータ、すなわち、ブロックに対して選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット270に提供するようにさらに構成されている。一例では、イントラ予測ユニット254は、イントラ予測技術の任意の組み合わせを実行するように構成され得る。
具体的には、イントラ予測ユニット254は、シンタックス要素をエントロピー符号化ユニット270に送信し得る。シンタックス要素は、イントラ予測パラメータ(複数のイントラ予測モードのトラバース後に現在のピクチャブロックの予測のために使用されるイントラ予測モードの選択の指標情報など)を含む。可能なアプリケーションシナリオにおいて、1つのイントラ予測モードのみが存在するならば、イントラ予測パラメータは、代替的には、シンタックス要素内に保持されなくてもよい。この場合、デコーダ側30は、デフォルトの予測モードを使用することによって復号を直接実行し得る。
エントロピー符号化ユニット270は、たとえば、符号化されたビットストリーム21の形式で出力272を介して出力され得る符号化されたピクチャデータ21を取得するために、エントロピー符号化アルゴリズムまたは方式(たとえば、可変長コーディング(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つまたはすべてに適用する(または適用しない)ように構成されている。符号化されたビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30による後の伝送もしくは検索のためにアーカイブされ得る。エントロピー符号化ユニット270は、符号化されている現在のビデオスライスのための別のシンタックス要素をエントロピー符号化するようにさらに構成され得る。
ビデオエンコーダ20の別の構造的変形が、ビデオストリームを符号化するために使用されることが可能である。たとえば、非変換に基づくエンコーダ20は、いくつかのブロックまたはフレームについて変換処理ユニット206なしで残差信号を直接量子化し得る。別の実装において、エンコーダ20は、単一のユニットに組み合わされた量子化ユニット208と逆量子化ユニット210とを有し得る。
具体的には、この出願のこの実施形態において、エンコーダ20は、以下の実施形態において説明されているビデオ符号化プロセスを実現するように構成され得る。
この出願におけるビデオエンコーダは、ビデオエンコーダ20内のいくつかのモジュールのみを含み得ることが理解されるべきである。たとえば、この出願におけるビデオエンコーダは、ピクチャ復号ユニットと区分ユニットとを含み得る。ピクチャ復号ユニットは、エントロピー復号ユニット、予測ユニット、逆変換ユニット、および逆量子化ユニットのうちの1つまたは複数を含み得る。
加えて、ビデオストリームを符号化するために、ビデオエンコーダ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によって復号されている量子化された変換係数に対して逆量子化(すなわち、量子化解除)を実行するように構成され得る。逆量子化プロセスは、適用されるべき量子化度と、同様に、適用されるべき逆量子化度とを決定するために、ビデオスライス内の各ビデオブロックに対してビデオエンコーダ20によって計算された量子化パラメータを使用することを含み得る。
逆変換処理ユニット312は、ピクセル領域における残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に類似する逆変換プロセス)を変換係数に適用するように構成されている。
再構築ユニット314(たとえば、加算器314)は、サンプル領域における再構築されたブロック315を取得するために、たとえば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、逆変換ブロック313(すなわち、再構築された残差ブロック313)を予測ブロック365に加算するように構成されている。
ループフィルタユニット320(コーディングループ内の、またはコーディングループ後の)は、ピクセル遷移を滑らかにするか、またはビデオ品質を改善するために、フィルタリングされたブロック321を取得するために、再構築されたブロック315をフィルタリングするように構成されている。一例では、ループフィルタユニット320は、以下で説明されているフィルタリング技術の任意の組み合わせを実行するように構成され得る。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset、SAO)フィルタ、または別のフィルタ、たとえば、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter、ALF)、鮮鋭化もしくは平滑化フィルタ、もしくは協調フィルタなどの、1つまたは複数のループフィルタを表現することが意図されている。ループフィルタユニット320は、図3においてループ内フィルタとして表されているが、別の実装では、ループフィルタユニット320は、ポストループフィルタとして実現され得る。
次いで、所与のフレームまたはピクチャ内の復号されたビデオブロック321は、後続の動き補償のために使用される参照ピクチャを記憶する復号されたピクチャバッファ330に記憶される。
デコーダ30は、たとえば、ユーザに対して提示または見ることのために、出力332を介して復号されたピクチャ31を出力するように構成されている。
ビデオデコーダ30の別の変形は、圧縮されたビットストリームを復号するために使用され得る。たとえば、デコーダ30は、ループフィルタユニット320なしで出力ビデオストリームを生成し得る。たとえば、非変換に基づくデコーダ30は、いくつかのブロックまたはフレームについて、逆変換処理ユニット312なしで、残差信号を直接逆量子化し得る。別の実装において、ビデオデコーダ30は、単一のユニットに組み合わされた逆量子化ユニット310と逆変換処理ユニット312とを有し得る。
具体的には、この出願のこの実施形態において、デコーダ30は、以下の実施形態において説明されているビデオ復号方法を実現するように構成されている。
この出願におけるビデオエンコーダは、ビデオエンコーダ30内のいくつかのモジュールのみを含み得ることが理解されるべきである。たとえば、この出願におけるビデオエンコーダは、区分ユニットとピクチャコーディングユニットとを含み得る。ピクチャコーディングユニットは、予測ユニット、変換ユニット、量子化ユニット、およびエントロピー符号化ユニットのうちの1つまたは複数を含み得る。
加えて、符号化されたビデオビットストリームを復号するために、ビデオデコーダ30の別の構造的変形が使用されることが可能である。たとえば、ビデオデコーダ30は、フィルタ320による処理なしで出力ビデオストリームを生成し得る。代替的には、いくつかのピクチャブロックまたはピクチャフレームについて、ビデオデコーダ30のエントロピー復号ユニット304は、復号を通じて量子化された係数を取得せず、これに対応して、逆量子化ユニット310および逆変換処理ユニット312が処理を実行する必要はない。ループフィルタ320は、オプションである。加えて、損失のない圧縮の場合、逆量子化ユニット310および逆変換処理ユニット312もオプションである。異なるアプリケーションシナリオにおいて、インター予測ユニットおよびイントラ予測ユニットは、選択的に使用され得ることが理解されるべきである。
この出願におけるエンコーダ20およびデコーダ30において、手順に対する処理結果は、さらに処理された後に次の手順に対して出力され得ることが理解されるべきである。たとえば、補間フィルタリング、動きベクトル導出、またはループフィルタリングなどの手順の後、対応する手順の処理結果に対して(clip)クリップまたはシフト(shift)などの動作がさらに実行される。
たとえば、現在のピクチャブロックの制御点の、隣接するアフィンコーディングブロック(アフィン動きモデルを使用することによって予測されたコーディングブロックは、アフィンコーディングブロックと呼ばれ得る)の動きベクトルに基づいて導出された動きベクトル、または現在のピクチャブロックのサブブロックの、隣接するアフィンコーディングブロックの動きベクトルに基づいて導出された動きベクトルがさらに処理され得る。これは、この出願において限定されない。たとえば、動きベクトルの値は、特定のビット幅範囲内にあるように制約される。動きベクトルの許容されるビット幅は、bitDepthであり、動きベクトルの値は、-2^(bitDepth-1)から2^(bitDepth-1)-1の範囲にわたり、記号「^」は、べき乗を表現すると仮定されている。bitDepthが16であるならば、値は、-32768から32767の範囲にわたる。bitDepthが18であるならば、値は、-131072から131071の範囲にわたる。
別の例について、動きベクトル(たとえば、1つの8×8ピクチャブロック内の4つの4×4サブブロックの動きベクトルMV)の値は、4つの4×4サブブロックのMVの整数部分の間の最大差がN(たとえば、Nは、1に設定され得る)ピクセルを超えないようにさらに制約され得る。
図4は、一例の実施形態による、図2におけるエンコーダ20および/または図3におけるデコーダ30を含むビデオコーディングシステム40の一例の例示的な図である。ビデオコーディングシステム40は、この出願の実施形態における様々な技術の組み合わせを実現することができる。例示されている実装において、ビデオコーディングシステム40は、画像化デバイス41、エンコーダ20、デコーダ30(および/または処理ユニット46の論理回路47によって実現されたビデオエンコーダ/デコーダ)、アンテナ42、1つもしくは複数のプロセッサ43、1つもしくは複数のメモリ44、および/または表示デバイス45を含み得る。
図4に表されているように、画像化デバイス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は、シンタックス要素を解析し、これに対応して、関連するビデオデータを復号し得る。
図5は、本発明の一実施形態によるビデオコーディングデバイス400(たとえば、ビデオ符号化デバイス400またはビデオ復号デバイス400)の概略構造図である。ビデオコーディングデバイス400は、この明細書で説明されている実施形態を実現するために適している。一実施形態において、ビデオコーディングデバイス400は、ビデオデコーダ(たとえば、図3におけるデコーダ30)またはビデオエンコーダ(たとえば、図2におけるエンコーダ20)であり得る。別の実施形態において、ビデオコーディングデバイス400は、図3におけるデコーダ30または図2におけるエンコーダ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)であってもよい。
図6は、一例の実施形態による、図1におけるソースデバイス12および宛先デバイス14のうちのいずれかまたは2つとして使用され得る装置500の簡略化されたブロック図である。装置500は、この出願の実施形態におけるピクチャ予測方法を実現し得る。言い換えれば、図6は、この出願の一実施形態による、符号化デバイスまたは復号デバイス(略してコーディングデバイス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に接続され得る。
この出願の実施形態におけるピクチャ予測方法をよりよく理解するために、以下は、最初に、いくつかの関連する概念およびインター予測の基本的な内容を詳細に説明している。
インター予測は、現在のピクチャ内の現在のピクチャブロックに対して一致する参照ブロックについて、再構築されたピクチャを探索し、現在のピクチャブロック内のピクセル要素のピクセル値の予測子として、参照ブロック内のピクセル要素のピクセル値を使用することを意味する(このプロセスは、動き推定(Motion estimation、ME)と呼ばれる)。
動き推定は、現在のピクチャブロックに対して参照ピクチャ内の複数の参照ブロックを試行し、次いで、レート歪み最適化(rate-distortion optimization、RDO)または別の方法を使用することによって、複数の参照ブロックから1つまたは2つの参照ブロック(双予測のためには2つの参照ブロックが要求される)を最終的に決定することである。参照ブロックは、現在のピクチャブロックに対してインター予測を実行するために使用される。
現在のピクチャブロックの動き情報は、予測方向(これは、通常、前方予測、後方予測、または双予測である)の指標情報と、参照ブロックを指し示す1つまたは2つの動きベクトル(motion vector、MV)と、参照ブロックが配置されているピクチャの指標情報(これは、通常、参照インデックス(reference index)を使用することによって表現される)とを含む。
前方予測は、現在のピクチャブロックのための参照ブロックを取得するために、前方参照ピクチャセットから参照ピクチャを選択することを意味する。後方予測は、現在のピクチャブロックのための参照ブロックを取得するために、後方参照ピクチャセットから参照ピクチャを選択することを意味する。双予測は、参照ブロックを取得するために、前方参照ピクチャセットから参照ピクチャを選択し、後方参照ピクチャセットから参照ピクチャを選択することを意味する。双予測方法が使用されるとき、現在のコーディングブロック内に2つの参照ブロックが存在する。各参照ブロックは、動きベクトルと参照インデックスとを使用することによって示されることが必要である。次いで、2つの参照ブロック内のピクセル要素のピクセル値に基づいて、現在のピクチャブロック内のピクセル要素のピクセル値の予測子が決定される。
HEVCでは、2つのインター予測モード、すなわち、AMVPモードおよびマージモードが存在する。
AMVPモードでは、現在のコーディングブロックの空間的または時間的に隣接する符号化されたブロック(隣接するブロックとして表記される)が最初にトラバースされる。隣接するブロックの動き情報に基づいて、候補動きベクトルリストが構築される。次いで、レート歪みコストに基づいて、候補動き情報リストから最適な動きベクトルが決定され、最小のレート歪みコストを有する候補動き情報が、現在のコーディングブロックの動きベクトル予測子(motion vector predictor、MVP)として使用される。
隣接するブロックの位置およびトラバース順序は、事前定義されている。レート歪みコストは、式(1)を使用することによって計算を通じて取得されることが可能であり、Jは、レート歪みコスト(rate-distortion cost)であり、SADは、元のピクセル値と、候補動きベクトル予測子を使用することによって実行された動き推定を通じて取得された予測されたピクセル値との間の絶対差の和(sum of absolute differences、SAD)であり、Rは、ビットレートであり、λは、ラグランジュ乗数である。エンコーダ側は、候補動きベクトルリスト内の選択された動きベクトル予測子のインデックス値と参照インデックス値とをデコーダ側に転送する。さらに、エンコーダ側は、現在のコーディングブロックの実際の動きベクトルを取得するために、MVPを中心とする近傍において動き探索を実行し、次いで、MVPと実際の動きベクトルとの間の差(motion vector difference)をデコーダ側に転送し得る。
J=SAD+λR (1)
加えて、異なる動きモデルに関して、AMVPモードは、並進モデルに基づくAMVPモードと非並進モデルに基づくAMVPモードとに分類され得る。
マージモードにおいて、最初に、現在のコーディングユニットの空間的または時間的に符号化されたユニットの動き情報に基づいて、候補動き情報リストが構築される。次いで、レート歪みコストに基づいて、現在のコーディングユニットの動き情報として候補動き情報リストから最適な動き情報が決定される。最後に、候補動き情報リスト内の最適な動き情報の位置のインデックス値(以後、merge indexとして表記される)がデコーダ側に転送される。
マージモードにおいて、現在のコーディングユニットの空間的および時間的候補動き情報が図7に表され得る。空間的候補動き情報は、5つの空間的に隣接するブロック(A0、A1、B0、B1、およびB2)からのものである。隣接するブロックが利用可能でない、または予測モードがイントラ予測であるならば、隣接するブロックは、候補動き情報リストに追加されない。
現在のコーディングユニットの時間的候補動き情報は、参照フレームおよび現在のフレームのピクチャ順序カウント(picture order count、POC)に基づいて、参照フレーム内の対応する位置におけるブロックのMVをスケーリングすることによって取得され得る。参照フレーム内の対応する位置におけるブロックが取得されるとき、最初に、参照フレーム内の位置Tにおけるブロックが利用可能であるかどうかが決定され得る。位置Tにおけるブロックが利用可能でないならば、位置Cにおけるブロックが選択される。
並進モデルが予測のために使用されるとき、同じ動き情報がコーディングユニット内のすべてのピクセルに対して使用され、次いで、コーディングユニット内のピクセルの予測子を取得するために、動き情報に基づいて動き補償が実行される。しかしながら、現実の世界では、多種の動きが存在する。多くの物体、たとえば、回転する物体、異なる方向において回転するジェットコースター、花火、および映画におけるいくつかのスタントは、並進運動でない。これらの移動する物体、特にユーザ生成コンテンツ(user generated content、UGC)シナリオにおけるそれらが、現在のコーディング規格における並進運動モデルに基づくブロック動き補償技術を使用することによって符号化されるならば、コーディング効率が大きく影響される。したがって、符号化効果を改善するために、非並進運動モデルに基づく予測が提供される。
非並進運動モデルに基づく予測では、現在のコーディングブロック内の各サブ動き補償ユニットの動き情報を導出するために、エンコーダ側およびデコーダ側において同じ動きモデルが使用され、次いで、予測効率を改善するために、各サブブロックの予測サブブロックを取得するために、サブ動き補償ユニットの動き情報に基づいて、動き補償が実行される。頻繁に使用される非並進運動モデルは、4パラメータアフィン動きモデルと、6パラメータアフィン動きモデルとを含む。
加えて、スキップ(skip)モードは、マージモードの特別なモデルである。違いは、スキップ(skip)モードでは伝送の間に残差が存在せず、マージ候補インデックス(merge index)のみが転送されることにある。merge indexは、マージ候補動き情報リスト内の最良のまたはターゲット候補動き情報を示すために使用される。
ピクチャが予測されるとき、異なるモードが使用され得る。以下は、これらの一般的なモードを詳細に説明している。
動きベクトル差分を用いるマージモード
動きベクトル差分を用いるマージ(merge with motion vector difference、MMVD)モードでは、マージ候補動きベクトルリストから1つまたは複数の候補動きベクトルが選択され、次いで、候補動きベクトルに基づいて、動きベクトル(MV)拡張表現が実行される。MV拡張表現は、MVの開始点と、動きステップと、動き方向とを含む。
一般に、MMVDモードにおいて選択される候補動きベクトルのタイプは、デフォルトのマージタイプ(たとえば、MRG_TYPE_DEFAULT_N)である。選択された候補動きベクトルは、MVの開始点である。言い換えれば、選択された候補動きベクトルは、MVの初期位置を決定するために使用される。
表1に表されているように、ベース候補インデックス(Base candidate IDX)は、どの候補動きベクトルが候補動きベクトルリストから最適な候補動きベクトルとして選択されるかを示す。マージ候補動きベクトルリストが選択のための1つの候補動きベクトルを含むならば、Base candidate IDXは、決定されなくてもよい。
たとえば、ベース候補インデックスが1であるならば、選択された候補動きベクトルは、マージ候補動きベクトルリスト内の第2の動きベクトルである。
距離インデックス(Distance IDX)は、動きベクトルのオフセット距離情報を表現する。距離インデックスの値は、初期位置からオフセットされた距離(たとえば、事前設定された距離)を表現する。ここでの距離は、ピクセル距離(Pixel distance)によって表現される。ピクセル距離は、さらに簡単にペルと呼ばれ得る。距離インデックスとピクセル距離との間の対応が表2に表され得る。
方向インデックス(Direction IDX)は、初期位置に基づく動きベクトル差分(MVD)の方向を表現するために使用される。方向インデックスは、合計4つのケースを含み得る。具体的な定義が表3において表され得る。
MMVD方式に基づいて現在のピクチャブロックの予測されたピクセル値を決定するプロセスは、以下のステップを含む。
ステップ1:Base candidate IDXに基づいてMVの開始点を決定する。
図8は、この出願の一実施形態によるMMVD探索点の概略図であり、図9は、この出願のこの実施形態によるMMVD探索処理の概略図である。
たとえば、MVの開始点は、図8における中央の中空の点、または図9における実線に対応する位置である。
ステップ2:Direction IDXに基づいて、MVの開始点に基づくabオフセット方向を決定する。
ステップ3:Distance IDXに基づいて、Direction IDXによって示されている方向においてオフセットされているピクセル要素の数量を決定する。
たとえば、Direction IDX==00およびDistance IDX=2は、現在のピクチャブロックの予測されたピクセル値を予測または取得するために、正のX方向において1ピクセル要素だけオフセットされた動きベクトルが現在のピクチャブロックの動きベクトルとして使用されることを示す。組み合わされたイントラおよびインターモード。
マージ(merge)モードにおいて符号化されたコーディングブロック/CUにおいて、インジケータ(たとえば、ciip_flag)は、組み合わされたイントラおよびインター予測(combined inter and intra prediction、CIIP)モードが現在のピクチャに対して使用されるかどうかを示すために送信され得る。CIIPモードが使用されるとき、関連するシンタックス要素に従って、イントラ候補モードリスト(intra candidate list)から選択されたイントラ予測モードに基づいてイントラ予測ブロックが生成されてもよく、従来のインター予測方法を使用することによってインター予測ブロックが生成される。最後に、最終的な予測ブロックを生成するために、イントラコーディング予測ブロックとインターコーディング予測ブロックとを組み合わせるために、適応重み付け形態が使用される。
輝度ブロックについて、イントラ候補モードリストは、4つのモード、すなわち、DCモード、平面モード、水平(horizontal)モード、および垂直(vertical)モードから選択され得る。イントラ候補モードリストのサイズは、現在のコーディングブロックの形状に基づいて選択され、イントラ候補モードリスト内に3つまたは4つのモードが存在し得る。現在のコーディングブロック/CUの幅が高さの2倍よりも大きいとき、イントラ候補モードリストは、水平モードを含まない。現在のコーディングブロック/CUの高さが幅の2倍よりも大きいとき、イントラ候補モードリストは、垂直モードを含まない。
イントラコーディングとインターコーディングとを組み合わせた重み付け方法では、異なるイントラ予測モードのために異なる重み付け係数が使用される。具体的には、DCまたは平面モードがイントラコーディングのために使用されるとき、または現在のコーディングブロックの長さまたは幅が4以下であるとき、イントラ予測を通じて取得された予測子とインター予測を通じて取得された予測子のために同じ重み値/重み係数が使用される。そうでなければ、重み値/重み係数は、現在のブロックによって使用されているイントラ予測モードおよび/または現在のブロック内の予測サンプルの位置に基づいて決定され得る。たとえば、水平および垂直モードがイントラコーディングのために使用されるとき、可変重み係数が使用される。
三角形予測ユニットモード:
三角形予測ユニットモード(triangle prediction unit mode、triangle PU)は、三角形区分モード(triangle partition mode、TPM)またはマージ三角形モードとも呼ばれ得る。説明の容易さのために、この出願では、三角形予測ユニットモードまたは三角形区分モードは、簡単にTPMと呼ばれ、これは、後続においても適用可能である。
図11に表されているように、現在のピクチャブロックは、2つの三角形予測ユニットに分割され、各三角形予測ユニットのための単予測候補リストから動きベクトルおよび参照インデックスが選択される。次いで、2つの三角形予測ユニットの各々について予測子が取得され、各斜辺領域に含まれるピクセルに対して適応重み付けを実行することによって、予測子が取得される。次いで、変換および量子化プロセスが、現在のピクチャブロック全体に対して実行される。三角形予測ユニット方法は、通常、スキップモードまたはマージモードにおいてのみ適用されることが留意されるべきである。図10の左側は、左上から右下への分割モード(言い換えれば、左上から右下への分割)を表しており、図10の右側は、右上から左下への分割モード(言い換えれば、右上から左下への分割)を表している。
三角形予測ユニットモードにおける単予測候補リストは、通常、5つの候補予測動きベクトルを含み得る。これらの候補予測動きベクトルは、たとえば、図5における7つの周辺の隣接するブロック(5つの空間的に隣接するブロックおよび2つの時間的に同じ位置に配置されたブロック)を使用することによって取得される。7つの隣接するブロックの動き情報が探索され、7つの隣接するブロックは、単予測候補リストに順番に配置される。たとえば、シーケンスは、L0における双予測動きベクトル、L1における双予測動きベクトル、ならびにL0およびL1における動きベクトルの平均であり得る。5つよりも少ない候補が存在するならば、ゼロ動きベクトル0が単予測候補リストに追加される。符号化の間、単予測候補リストは、前述の方式で取得される。たとえば、単予測候補リストにおいて、1つの三角形PUのピクセル予測子を予測するために前方予測動き情報が使用され、他の三角形PUのピクセル予測子を予測するために後方予測動き情報が使用される。エンコーダ側は、トラバーサルを通じて最適な動きベクトルを選択する。たとえば、以下の方式{m,i,j}、すなわち、
{0,1,0}、{1,0,1}、{1,0,2}、{0,0,1}、{0,2,0}
{1,0,3}、{1,0,4}、{1,1,0}、{0,3,0}、{0,4,0}
{0,0,2}、{0,1,2}、{1,1,2}、{0,0,4}、{0,0,3}
{0,1,3}、{0,1,4}、{1,1,4}、{1,1,3}、{1,2,1}
{1,2,0}、{0,2,1}、{0,4,3}、{1,3,0}、{1,3,2}
{1,3,4}、{1,4,0}、{1,3,1}、{1,2,3}、{1,4,1}
{0,4,1}、{0,2,3}、{1,4,2}、{0,3,2}、{1,4,3}
{0,3,1}、{0,2,4}、{1,2,4}、{0,4,2}、{0,3,4}
が使用されてもよく、{m,i,j}において、第1の位置におけるmは、左上から右下への分割モード、または右上から左下への分割モードを表現し、第2の位置は、第1の三角形PUのために使用されるi番目の候補予測動きベクトルの前方動き情報を表現し、第3の位置は、第2の三角形PUのために使用されるj番目の候補予測動きベクトルの後方動き情報を表現する。
斜辺領域に含まれているピクセルの予測子に基づいて実行される適応重み付けプロセスについて、図11を参照されたい。三角形予測ユニットP1およびP2に対する予測が完了した後、適応重み付けプロセスは、現在のピクチャブロックの最終的な予測子を取得するために、斜辺領域に含まれているピクセルに対して実行される。
たとえば、図11の左側におけるピクチャにおいて、位置2におけるピクセルの予測子は、
である。P1は、図11の右上領域におけるピクセルの予測子を表現し、P2は、図11の左下領域におけるピクセルの予測子を表現する。
重み付けされたパラメータの2つのセットは、以下の通りである。
重み付けされたパラメータの第1のセット{7/8,6/8,4/8,2/8,1/8}および{7/8,4/8,1/8}は、それぞれ、ルマ点およびクロマ点に対して使用される。
重み付けされたパラメータの第2のセット{7/8,6/8,5/8,4/8,3/8,2/8,1/8}および{6/8,4/8,2/8}は、それぞれ、ルマ点およびクロマ点に対して使用される。
重み付けされたパラメータの1つのセットは、現在のピクチャブロックを符号化および復号するために使用される。2つの予測ユニットの参照ピクチャが異なる、または2つの予測ユニット間の動きベクトルの差が16ピクセルよりも大きいとき、重み付けされたパラメータの第2のセットが選択され、そうでなければ、重み付けされたパラメータの第1のセットが使用される。
図12は、この出願の一実施形態によるビデオ通信システムの概略ブロック図である。
図12に表されているビデオ通信システム500は、ソース装置600と、宛先装置700とを含む。ソース装置600は、取得されたビデオを符号化し、符号化されたビデオビットストリームを受信装置700に送信することができる。宛先装置700は、ビデオピクチャを取得するために受信されたビデオビットストリームを解析し、表示装置を使用することによってビデオを表示することができる。
この出願の実施形態におけるピクチャ予測方法は、ソース装置600または宛先装置700によって実行され得る。具体的には、この出願の実施形態におけるピクチャ予測方法は、ビデオエンコーダ603またはビデオデコーダ702によって実行され得る。
ビデオ通信システム500は、ビデオコーディングシステムとも呼ばれ得る。ソース装置600は、ビデオ符号化装置またはビデオ符号化デバイスとも呼ばれ得る。宛先装置700は、ビデオ復号装置またはビデオ復号デバイスとも呼ばれ得る。
図12において、ソース装置600は、ビデオキャプチャ装置601と、ビデオメモリ602と、ビデオエンコーダ603と、送信機604とを含む。ビデオメモリ602は、ビデオキャプチャ装置601によって取得されたビデオを記憶し得る。ビデオエンコーダ603は、ビデオメモリ602およびビデオキャプチャ装置601からのビデオデータを符号化し得る。いくつかの例では、ソース装置600は、送信機604を通じて、符号化されたビデオデータを宛先装置700に直接送信する。符号化されたビデオデータは、宛先装置700が復号および/または再生のために符号化されたビデオデータを後に抽出するように、記憶媒体またはファイルサーバにさらに記憶され得る。
図12において、宛先装置700は、受信機701と、ビデオデコーダ702と、表示装置703とを含む。いくつかの例では、受信機701は、チャネル800を通じて符号化されたビデオデータを受信し得る。表示装置703は、宛先装置700と統合されてもよく、または宛先装置7000の外部にあってもよい。通常、表示装置700は、復号されたビデオデータを表示する。表示装置700は、液晶ディスプレイ、プラズマディスプレイ、有機発光ダイオードディスプレイ、または別のタイプの表示装置などの複数のタイプの表示装置を含み得る。
ソース装置600および宛先装置700の具体的な実装は、以下のデバイス、すなわち、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォン、ハンドセット、テレビ、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、または別の類似するデバイスのうちのいずれか1つであり得る。
宛先装置700は、チャネル800を通じてソース装置600から符号化されたビデオデータを受信し得る。チャネル800は、符号化されたビデオデータをソース装置600から宛先装置700に移動することができる1つまたは複数の媒体および/または装置を含み得る。一例では、チャネル800は、ソース装置600が符号化されたビデオデータを宛先装置700にリアルタイムで直接送信することを可能にすることができる1つまたは複数の通信媒体を含み得る。この例では、ソース装置600は、通信規格(たとえば、ワイヤレス通信プロトコル)に従って符号化されたビデオデータを変調してもよく、変調されたビデオデータを宛先装置700に送信してもよい。1つまたは複数の通信媒体は、ワイヤレスおよび/または有線通信媒体、たとえば、無線周波数(radio frequency、RF)スペクトルまたは1つもしくは複数の物理的伝送ラインを含み得る。1つまたは複数の通信媒体は、パケットに基づくネットワーク(たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット))の一部を形成し得る。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソース装置600と宛先装置700との間の通信を実現する別のデバイスを含み得る。
別の例では、チャネル800は、ソース装置600によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先装置700は、ディスクアクセスまたはカードアクセスを通じて記憶媒体にアクセスし得る。記憶媒体は、Blu-ray(登録商標)、高密度デジタルビデオディスク(digital video disc、DVD)、コンパクトディスク・リードオンリメモリ(compact disc read-only memory、CD-ROM)、フラッシュメモリ、または符号化されたビデオデータを記憶するように構成されている別の適したデジタル記憶媒体などの、複数のローカルにアクセス可能なデータ記憶媒体を含み得る。
別の例では、チャネル800は、ソース装置600によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶装置を含み得る。この例では、宛先装置700は、ストリーミング伝送またはダウンロードを通じて、ファイルサーバまたは別の中間記憶装置に記憶されている符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、符号化されたビデオデータを宛先装置700に送信することができるサーバタイプのものであり得る。たとえば、ファイルサーバは、ワールドワイドウェブ(world wide web、Web)サーバ(たとえば、ウェブサイトのために使用される)、ファイル転送プロトコル(file transfer protocol、FTP)サーバ、ネットワーク接続ストレージ(network attached storage、NAS)装置、およびローカルディスクドライブを含み得る。
宛先装置700は、標準的なデータ接続(たとえば、インターネット接続)を通じて符号化されたビデオデータにアクセスし得る。データ接続の一例のタイプは、ワイヤレスチャネル、有線接続(たとえば、ケーブルモデム)、またはファイルサーバ上に記憶されている符号化されたビデオデータにアクセスするために適したそれらの組み合わせを含む。ファイルサーバからの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、またはそれらの組み合わせであり得る。
以下は、特定の添付図面を参照してこの出願の実施形態におけるピクチャ予測方法を詳細に説明する。
図13は、この出願の一実施形態によるピクチャ予測方法の概略フローチャートである。図13に表されているピクチャ予測方法は、ピクチャ予測装置によって実行され得る(ピクチャ予測装置は、ピクチャ符号化装置(システム)またはピクチャ復号装置(システム)内に配置され得る)。具体的には、図13に表されている方法は、ピクチャ符号化装置またはピクチャ復号装置によって実行され得る。図13に表されている方法は、エンコーダ側において実行されてもよく、またはデコーダ側において実行されてもよい。図13に表されている方法は、ステップ1001からステップ1008を含む。以下は、これらのステップを詳細に別個に説明する。
1001:開始する。
ステップ1001は、ピクチャ予測が開始することを示す。
1002:マージモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
オプションで、図13に表されている方法は、ステップ1002の前に現在のピクチャブロックを取得するステップをさらに含む。
現在のピクチャブロックは、現在の符号化されるべきまたは復号されるべきピクチャ内のピクチャブロックであり得る。
この出願において、現在のピクチャブロックは、現在のピクチャブロックのターゲットマージモードを決定するプロセスにおいて、または現在のピクチャブロックのターゲットマージモードが決定された後に、取得され得ることが理解されるべきである。
デコーダ側について、ステップ1002において、マージモードが現在のピクチャブロックに対して使用されるかどうかは、具体的には、CUレベルのシンタックス要素merge_flag[x0][y0]に基づいて判定され得る。
merge_flag[x0][y0]=1ならば、マージモードが現在のピクチャブロックを予測するために使用されると判定される。merge_flag[x0][y0]=1ならば、マージモードが現在のピクチャブロックを予測するために使用されないと判定される。x0およびy0は、現在のピクチャの左上隅における輝度ピクセル要素に対しての、現在のピクチャブロックの左上隅における輝度ピクセル要素の座標位置を表現する。
CUレベルのシンタックス要素merge_flag[x0][y0]に基づいて、マージモードが現在のピクチャブロックに対して使用されると判定された後、最終的に使用されるターゲットマージモードは、CUレベルのシンタックス要素merge_flag[x0][y0]における特定の情報を解析することによって決定され得る。
ステップ1002において、マージモードが現在のピクチャブロックに対して使用されないと判定されたとき、マージモード以外の別のモードが、現在のピクチャブロックを予測するために使用され得る。たとえば、マージモードが現在のピクチャブロックに対して使用されないと判定されたとき、AMVPモードが、現在のピクチャブロックを予測するために使用され得る。
ステップ1002において、マージモードが現在のピクチャブロックに対して使用されると判定された後、現在のピクチャブロックに適用可能なターゲットマージモードを決定するために、ステップ1003が実行されることに続く。
1003:レベル1のマージモードを使用するかどうかを決定する。
具体的には、レベル1のマージモードが利用可能であるかどうかは、レベル1のマージモードに対応する上位層シンタックス要素、および/またはレベル1のマージモードに対応する利用可能なステータス情報に基づいて判定され得る。
本発明の可能な実装において、レベル1のマージモードは、合計2つのマージモード、すなわち、マージモードAとマージモードBを含むと仮定されている。この場合、レベル1のマージモードにおいて利用可能なマージモードが存在するかどうかは、1つずつ判定される。利用可能なマージモードが存在するならば、ステップ1005が実行される。レベル1のマージモードにおいてどのマージモードも利用可能でないならば、レベル1のマージモードは利用可能でないと判定される。この場合、ターゲットマージモードは、レベル2のマージモードから決定される必要がある。言い換えれば、ステップ1004が実行される。
1004:第1のマージモードに対応する上位層シンタックス要素が、第1のマージモードが使用されることを禁止されていることを示しているかどうかを判定する。
第1のマージモードは、レベル2のマージモードに属しており、レベル2のマージモードは、第2のマージモードをさらに含んでいる。
ステップ1004において、第1のマージモードに対応する上位層シンタックス要素が、第1のマージモードが使用されることを禁止されていることを示していると判定されたとき、第2のマージモードをターゲットマージモードとして決定するために、ステップ1006が実行される。
このアプリケーションでは、第1のマージモードの上位層シンタックス要素が、第1のマージモードが使用されることを禁止されていることを示しているとき、残りの第2のマージモードの利用可能なステータス情報を解析する必要はなく、第2のマージモードは、最終的なターゲットマージモードとして直接決定され得る。これは、ピクチャ予測プロセスにおいてターゲットマージモードを決定することによって引き起こされる冗長性を可能な限り削減することができる。
ステップ1004において、第1のマージモードに対応する上位層シンタックス要素が、第1のマージモードが使用されることを許可されていることを示していると判定されたとき、ターゲットマージモードをさらに決定するために、ステップ1007が実行される。
1005:レベル1のマージモードに基づいて現在のピクチャブロックを予測する。
ステップ1005において、レベル1のマージモードのうちのマージモードAが利用可能であるならば、現在のピクチャブロックは、マージモードAに基づいて予測されることが理解されるべきである。
1006:現在のピクチャブロックに適用可能なターゲットマージモードとして第2のマージモードを決定する。
第1のマージモードに対応する上位層シンタックス要素が、第1のマージモードが使用されることを禁止されていること示しているとき、第2のマージモードに対応する上位層シンタックス要素および/または利用可能なステータス情報を解析する必要はなく、第2のマージモードは、ターゲットマージモードとして直接決定され得る。
1007:第2のマージモードに対応する上位層シンタックス要素および/または第2のマージモードの利用可能なステータス情報に基づいて、ターゲットマージモードを決定する。
第2のマージモードの利用可能なステータス情報は、現在のピクチャブロックが予測されるときに第2のマージモードが使用されるかどうかを示すために使用される。
たとえば、第2のマージモードは、CIIPモードであり、第2のマージモードの利用可能なステータス情報は、ciip_flagの値である。ciip_flagが0であるとき、CIIPモードは、現在のピクチャブロックのために使用されない。ciip_flagが1であるとき、CIIPモードは、現在のピクチャブロックを予測するために使用される。
CIIPモードについて、CIIPモードがターゲットマージモードとして選択されるべきであるならば、CIIPに対応する上位層シンタックス要素は、CIIPモードが使用されることを許可されていることを示す必要があり、CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、CIIPが利用可能であることを示す必要があることが理解されるべきである。
たとえば、sps_ciip_enabled_flag=1かつciip_flag=1のとき、CIIPモードは、現在のピクチャブロックのターゲットマージモードとして決定され得る。
ステップ1007において、第1のマージモードは、使用されることを許可されているので、第1のマージモードと第2のマージモードの両方が、現在のピクチャブロックのターゲットマージモードとして使用され得る。したがって、ターゲットマージモードは、マージモードのうちの1つに対応する上位層シンタックスおよび利用可能なステータス情報に基づいて、レベル2のマージモードから決定され得る。
オプションで、第1のマージモードは、TPMモードであり、第2のマージモードは、CIIPモードである。
以下は、第1のマージモードがTPMモードであり、第2のマージモードがCIIPモードであるときにターゲットマージモードをどのように決定するかを詳細に説明する。
オプションで、TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを禁止されていることを示しているとき、CIIPモードがターゲットマージモードとして決定される。
たとえば、TPMモードに対応するsps_triangle_enabled_flagが0であるとき、TPMモードは、使用されることを禁止されている。この場合、ciip_flagの特定の値を解析する必要はない。代わりに、CIIPモードは、ターゲットマージモードとして直接決定され得る。このようにして、不要な解析処理が削減されることが可能であり、解決策の冗長性が削減されることが可能である。
この出願において、TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを禁止されていることを示しているとき、CIIPモードに対応する上位層シンタックスおよび/またはCIIPモードの利用可能なステータスを示している利用可能なステータス情報を解析することによって、CIIPモードが利用可能であるかどうかを判定する必要はない。代わりに、CIIPモードは、ターゲットマージモードとして直接決定され得る。これは、ターゲットマージモードを決定するプロセスにおける冗長性を削減することができる。
オプションで、TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを許可されていることを示しているとき、ターゲットマージモードは、CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいて決定される。
たとえば、TPMモードに対応するsps_triangle_enabled_flagが1であるとき、TPMモードは、使用されることを許可されている。この場合、TPMモードとCIIPモードの両方がターゲットマージモードとして使用され得る。したがって、ターゲットマージモードとしてTPMモードまたはCIIPモードのどちらを選択するかをさらに決定する必要がある。
オプションで、CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示しているとき、TPMモードがターゲットマージモードとして決定される。
CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示していることは、ケース1から3を含む。
ケース1:CIIPモードに対応する上位層シンタックス要素は、CIIPモードが使用されることを禁止されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、CIIPモードが利用可能でないことを示している。
ケース2:CIIPモードに対応する上位層シンタックス要素は、CIIPモードが使用されることを許可されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、CIIPモードが利用可能でないことを示している。
ケース3:CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、CIIPモードが利用可能でないことを示している。
オプションで、CIIPモードに対応する上位層シンタックス要素が、CIIPモードが使用されることを許可されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが利用可能であることを示しているとき、CIIPモードは、ターゲットマージモードとして決定される。
1008:ターゲットマージモードに基づいて現在のピクチャブロックを予測する。
図13に表されている方法では、ステップ1007が実行される前に、図13に表されている方法は、現在のピクチャブロックが配置されているスライスまたはスライスグループのタイプがBであることを判定するステップと、現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量が2以上であることを判定するステップとをさらに含む。
オプションで、ターゲットマージモードがCIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいて決定される前に、方法は、現在のピクチャブロックが配置されているスライスまたはスライスグループのタイプがBであることを判定するステップと、現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量が2以上であることを判定するステップとをさらに含む。
オプションで、一実施形態において、図13に表されている方法は、レベル1のマージモードが利用可能でなく、TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを許可されていることを示しているが、現在のピクチャブロックが条件Aおよび条件Bのうちの少なくとも1つを満たしていないとき、CIIPモードがターゲットマージモードとして決定されることをさらに含む。
条件Aおよび条件Bは、以下の通りである。
条件A:現在のピクチャブロックが配置されているスライスのタイプがBである。
条件B:現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量が2以上である。
条件Aおよび条件Bは、いくつかの特定の形態で表現され得る。たとえば、条件Aは、具体的にはslice_type==Bによって表現されてもよく、条件Bは、具体的には、MaxNumTriangleMergeCand≧2によって表現されてもよい。MaxNumTriangleMergeCandは、現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量を示す。
TPMモードは、条件Aと条件Bの両方が満たされているときのみ、現在のピクチャブロックを予測するために最終的に使用されるターゲットマージモードとして選択されることが可能である。
条件Aまたは条件Bのいずれかが満たされていないならば、CIIPモードがターゲットマージモードとして決定される。
TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを禁止されていることを示しているとき、条件Aまたは条件Bのいずれかが満たされていないならば、CIIPモードがターゲットマージモードとして決定される。
TPMモードに対応する上位層シンタックス要素が、TPMモードが使用されることを許可されていることを示しているとき、条件Aまたは条件Bのいずれかが満たされていないならば、CIIPモードがターゲットマージモードとして決定される。
言い換えれば、CIIPモードは、sps_trangle_enabled_flag=1、条件A、および条件Bのうちの1つが満たされていないことを条件に、ターゲットマージモードとして決定され得る。
逆に、sps_trangle_enabled_flag=1、条件A、および条件Bがすべて満たされているならば、ターゲットマージモードは、先行技術におけるいくつかの条件に従って、ciip_flagに基づいて決定される必要がある。
オプションで、上位層シンタックス要素は、シーケンスレベル、ピクチャレベル、スライスレベル、およびスライスグループレベルのうちの少なくとも1つにおけるシンタックス要素である。
オプションで、レベル1のマージモードは、通常のマージモードと、MMVDモードと、サブブロックマージモードとを含む。
レベル1のマージモードが利用可能であるかどうかが判定されるとき、これらのモードが利用可能であるかどうかは、通常のマージモード、MMVDモード、およびサブブロックマージモードのシーケンスで順次判定され得る。
たとえば、通常のマージモードが利用可能であるかどうかが最初に判定され得る。通常のマージモードが利用可能でないとき(通常のマージモードが利用可能であるならば、通常のマージモードが最終的なターゲットマージモードとして直接使用され得る)、MMVDモードが利用可能であるかどうかが判定されることに続く。MMVDモードが利用可能でないとき、サブブロックマージモードが利用可能であるかどうかが判定されることに続く。
オプションで、図13に表されている方法は、現在のピクチャブロックを符号化するために、エンコーダ側に適用され得る。
オプションで、図13に表されている方法は、現在のピクチャブロックを復号するために、デコーダ側に適用され得る。
この出願の実施形態におけるピクチャ予測方法の具体的なプロセスをよりよく理解するために、以下は、具体的な例を参照してこの出願の実施形態におけるピクチャ予測方法におけるピクチャマージモードを決定するプロセスを詳細に説明する。
以下は、図14と表4を参照してこの出願の実施形態におけるピクチャ予測方法を詳細に説明する。
図14は、この出願の一実施形態によるマージモードを決定するプロセスを表している。図14に表されているプロセスは、ステップ3001からステップ3007を含む。以下は、これらのステップを詳細に説明する。
3001:開始する。
ステップ3001は、ピクチャ予測が開始することを示している。
3002:マージモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
具体的には、ステップ3002がデコーダ側によって実行されるとき、ステップ3002において、マージモードが現在のピクチャブロックに対して使用されるかどうかは、現在のピクチャブロックに対応するCUレベルのシンタックス要素merge_flag[x0][y0]の値に基づいて決定され得る。
たとえば、表4に表されているように、merge_flag[x0][y0]=0のとき、マージモードは、現在のピクチャブロックに対して使用されない。この場合、現在のピクチャブロックは、別の方式で予測され得る。たとえば、現在のピクチャブロックは、AMVPモードにおいて予測され得る。
merge_flag[x0][y0]=1のとき、マージモードは、現在のピクチャブロックに対して使用される。次に、どのマージモードが現在のピクチャブロックを予測するために使用されるかがさらに決定され得る。
ビットストリーム内にmerge_flag[x0][y0]が存在しないとき、merge_flag[x0][y0]は、デフォルトで0であることが理解されるべきである。
(x0,y0)は、現在のピクチャの左上隅における輝度ピクセル要素に対しての、現在のピクチャブロックの左上隅における輝度ピクセル要素の座標位置を表現する。以下のシンタックス要素における(x0,y0)の意味は、これと同じであり、詳細はここで説明されない。
オプションで、図14に表されている方法は、ステップ3002の前に現在のピクチャブロックを取得するステップをさらに含む。
現在のピクチャブロックは、現在の符号化されるべきまたは復号されるべきピクチャ内のピクチャブロックであり得る。
この出願において、現在のピクチャブロックは、現在のピクチャブロックのターゲットマージモードを決定するプロセスにおいて、または現在のピクチャブロックのターゲットマージモードが決定された後に、取得され得ることが理解されるべきである。
3003:通常のマージモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
具体的には、ステップ3003において、通常のマージモードが現在のピクチャブロックに対して使用されるかどうかは、シンタックス要素regular_merge_flag[x0][y0]の値を解析することによって判定され得る。
regular_merge_flag[x0][y0]=1のとき、通常のマージモードは、現在のピクチャブロックに対して使用されると判定される。この場合、ステップ3007が実行され得る。具体的には、現在のピクチャブロックは、通常のマージモードに基づいて予測される。
regular_merge_flag[x0][y0]=0のとき、通常のマージモードは、現在のピクチャブロックに対して使用されないと判定される。この場合、現在のピクチャブロックに対して使用されるマージモードをさらに決定するために、ステップ3004を実行することに続く必要である。
ビットストリーム内にregular_merge_flag[x0][y0]が存在しないとき、regular_merge_flag[x0][y0]は、デフォルトで0であることが理解されるべきである。
3004:MMVDモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
具体的には、ステップ3004において、MMVDモードに対応する上位層シンタックス要素が、MMVDが使用されることを許可され得ることを示しており、現在のピクチャブロックのエリアが32に等しくないとき、MMVDが現在のピクチャブロックに対して使用されるかどうかは、シンタックス要素mmvd_flag[x0][y0]の値を解析することによって判定され得る。
mmvd_flag[x0][y0]=1のとき、MMVDモードが現在のピクチャブロックに対して使用されると判定される。この場合、ステップ3007が実行され得る。具体的には、現在のピクチャブロックは、MMVDモードに基づいて予測される。
mmvd_flag[x0][y0]=0のとき、MMVDモードが現在のピクチャブロックに対して使用されないと判定される。この場合、現在のピクチャブロックに対して使用されるマージモードをさらに決定するために、ステップ3005を実行することに続く必要がある。
ビットストリーム内にmmvd_flag[x0][y0]が存在しないとき、mmvd_flag[x0][y0]は、デフォルトで0であることが理解されるべきである。
3005:サブブロックマージモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
ステップ3004において、サブブロックマージモードが現在のピクチャブロックに対して使用されるかどうかは、ビットストリームを解析することによって取得されたシンタックス要素merge_subblock_flag[x0][y0]の値に基づいて判定され得る。
merge_subblock_flag[x0][y0]=1のとき、サブブロックマージモードが現在のピクチャブロックに対して使用されると判定される。この場合、ステップ3007が実行され得る。具体的には、現在のピクチャブロックは、サブブロックマージモードに基づいて予測される。
merge_subblock_flag[x0][y0]=0のとき、サブブロックマージモードが現在のピクチャブロックに対して使用されないと判定される。この場合、現在のピクチャブロックに対して使用されるマージモードをさらに決定するために、ステップ3006を実行することに続く必要がある。
ビットストリーム内にmerge_subblock_flag[x0][y0]が存在しないとき、merge_subblock_flag[x0][y0]は、デフォルトで0であることが理解されるべきである。
さらに、ステップ3004において、シンタックス要素merge_subblock_flag[x0][y0]の値は、サブブロックマージ候補リストの最大長が0よりも大きく、現在のピクチャブロックの幅と高さの両方が8以上であるときのみ解析されてもよく、merge_subblock_flag[x0][y0]の取得された値が0であるとき、ステップ3007が実行されることに続く。
3006:CIIPモードおよびTPMモードから、現在のピクチャブロックに対して使用されるマージモードを決定する。
具体的には、ステップ3006において、以下の条件(1)から(6)における6つの条件すべてが満たされているならば、ビットストリームからciip_flag[x0][y0]が解析され、現在のピクチャブロックに対して使用されるマージモードは、ciip_flag[x0][y0]の値に基づいて決定される。ciip_flag[x0][y0]=1のとき、CIIPモードが現在のピクチャブロックを予測するために使用される。
加えて、以下の条件(1)が満たされているとき、以下の条件(2)から(6)のうちのいずれか1つが満たされていないならば、CIIPモードが現在のピクチャブロックを予測するために使用される。
(1)sps_ciip_enabled_flag=1、
(2)sps_triangle_enabled_flag=1、
(3)cu_skip_flag[x0][y0]==0、
(4)(cbWidth*cbHeight)≧64、
(5)cbWidth<128、および
(6)cbHeight<128。
cbWidthおよびcbHeightは、それぞれ、現在のピクチャブロックの幅および高さである。
オプションで、現在のブロックに対して使用されるマージモードがステップ3006において決定されるとき、より多くの決定条件がさらに追加され得る。
前述の条件(1)から(6)に基づいて、条件(7)および(8)がさらに追加され得る。
(7)slice_type==B、および
(8)MaxNumTriangleMergeCand≧2。
オプションで、ステップ3006において、前述の条件(1)から(8)における8つの条件すべてが満たされているならば、ビットストリームからciip_flag[x0][y0]が解析され、現在のピクチャブロックに対して使用されるマージモードは、ciip_flag[x0][y0]の値に基づいて決定される。ciip_flag[x0][y0]=1のとき、CIIPモードが現在のピクチャブロックを予測するために使用される。
加えて、前述の条件(1)が満たされているとき、前述の条件(2)から(8)のうちのいずれか1つが満たされていないならば、CIIPモードが現在のピクチャブロックを予測するために使用される。
3007:現在のピクチャブロックに対して使用されるマージモードに基づいて現在のピクチャブロックを予測する。
ステップ3003において、通常のマージモードが現在のピクチャブロックに対して使用されると決定されたとき、ステップ3007において、現在のピクチャブロックは、通常のマージモードに基づいて予測される。ステップ3004において、MMVDモードが現在のピクチャブロックに対して使用されると決定されたとき、ステップ3007において、現在のピクチャブロックは、MMVDモードに基づいて予測される。ステップ3005において、サブブロックマージモードが現在のピクチャブロックに対して使用されると決定されたとき、ステップ3007において、現在のピクチャブロックは、サブブロックマージモードに基づいて予測される。
表4は、対応するシンタックス要素に基づいて、マージモードが使用されるときに現在のピクチャブロックに対して使用されるマージモードをどのように決定するかを表す。以下は、表4を参照して現在のピクチャブロックのマージモードの決定を詳細に説明する。
表4に表されているregular_merge_flag[x0][y0]が1であるとき、通常のマージモードが現在のピクチャブロックに対して使用されると決定される。この場合、通常のマージモードのパラメータが、シンタックス要素merge_idx[x0][y0]を解析することによって取得され得る。表4に表されているregular_merge_flag[x0][y0]が0であるとき、通常のマージモードが現在のピクチャブロックに対して使用されないと決定され、現在のピクチャブロックに対して使用されるマージモードは、さらに決定される必要がある。
表4に表されているsps_mmvd_enabled_flagおよびcbWidth*cbHeight !がそれぞれ1および32であるとき、それは、MMVDモードが現在のピクチャブロックに対して使用され得ることを示している。この場合、現在のピクチャブロックのマージモードは、mmvd_flag[x0][y0]の値に基づいて決定され得る。mmvd_flag[x0][y0]=1ならば、MMVDモードが現在のピクチャブロックに対して使用されると決定され、MMVDモードのパラメータが、シンタックス要素mmvd_merge_flag[x0][y0]、mmvd_distance_idx[x0][y0]、およびmmvd_direction_idx[x0][y0]を解析することによって判定され得る。mmvd_flag[x0][y0]=0ならば、現在のピクチャブロックに対して使用されるマージモードは、さらに決定される必要がある。
表4に表されているmerge_subblock_flag[x0][y0]が1であるとき、サブブロックマージモードが現在のピクチャブロックに対して使用されると決定される。表4に表されているmerge_subblock_flag[x0][y0]が0であるとき、サブブロックマージモードが現在のピクチャブロックに対して使用されないと決定され、現在のピクチャブロックに対して使用されるマージモードは、さらに決定される必要がある。
表4に表されているsps_ciip_enabled_flagが0であるとき、TPMモードが現在のピクチャブロックに対して使用されると直接決定され得る。しかしながら、表4に表されているsps_ciip_enabled_flagおよびsps_ciip_enabled_flagがそれぞれ1および0であるとき、CIIPモードが現在のピクチャブロックに対して使用されると直接決定され得る。
表4に表されているように、以下の条件(1)から(6)における6つの条件すべてが満たされているとき、Ciipモードの利用可能なステータス情報の指標、すなわち、ciip_flag[x0][y0]の値が、ビットストリームから取得される必要がある。ciip_flag[x0][y0]=1ならば、CIIPモードが現在のピクチャブロックに対して使用されると決定される。ciip_flag[x0][y0]=0ならば、TPMモードが現在のピクチャブロックに対して使用されると決定される。
(1)sps_ciip_enabled_flag=1、
(2)sps_triangle_enabled_flag=1、
(3)cu_skip_flag[x0][y0]==0、
(4)(cbWidth*cbHeight)≧64、
(5)cbWidth<128、
(6)cbHeight<128。
オプションで、表4におけるif(sps_ciip_enabled_flag && sps_triangle_enabled_flag && cu_skip_flag[x0][y0]==0 && (cbWidth*cbHeight)≧64 && cbWidth<128 && cbHeight<128)は、代替的に、if(sps_triangle_enabled_flag && sps_ciip_enabled_flag && cu_skip_flag[x0][y0]==0 && (cbWidth*cbHeight)≧64 && cbWidth<128 && cbHeight<128)で置き換えられ得る。言い換えれば、sps_ciip_enabled_flagおよびsps_triangle_enabled_flagのシーケンスが調整され得る。具体的な結果が表5に表され得る。
表4および表5において、CIIPを決定する時間シーケンスは、TPMを決定する時間シーケンスよりも早いことが留意されるべきである。具体的には、CIIPが最初に決定され、現在のブロックに対して最終的に使用される予測モードが、CIIPのステータスに基づいて決定される。CIIPが真であるならば、TPMに関する情報をさらに決定する必要はない。CIIPが偽であるならば、それは、TPMのみが利用可能であることを意味する。この場合、現在のブロックの最終的な予測モードは、TPMモードに設定され得る。時間シーケンスを決定する優先順位の設定またはロジックは、単に一例であり、代替的には、必要に応じて調整され得る。たとえば、TPMの時間シーケンスは、CIIPの時間シーケンスよりも早くされる。この場合、TPMモードが適用可能であるかどうかを判定するための条件も、必要に応じて調整される必要がある。
表6に表されているように、以下の条件(1)から(8)における8つの条件すべてが満たされているとき、CIIPモードの利用可能なステータス情報の指標、すなわち、ciip_flag[x0][y0]の値が、ビットストリームから取得される必要がある。ciip_flag[x0][y0]=1ならば、CIIPモードが現在のピクチャブロックに対して使用されると決定される。ciip_flag[x0][y0]=0ならば、TPMモードが現在のピクチャブロックに対して使用されると決定される。
(1)sps_ciip_enabled_flag=1、
(2)sps_triangle_enabled_flag=1、
(3)cu_skip_flag[x0][y0]==0、
(4)(cbWidth*cbHeight)≧64、
(5)cbWidth<128、
(6)cbHeight<128。
オプションで、表6におけるif(sps_ciip_enabled_flag && sps_triangle_enabled_flag && slice_type==B && MaxNumTriangleMergeCand≧2 && cu_skip_flag[x0][y0]==0 && (cbWidth*cbHeight)≧64 && cbWidth<128 && cbHeight<128)は、代替的には、if(sps_triangle_enabled_flag && sps_ciip_enabled_flag && slice_type==B && MaxNumTriangleMergeCand≧2 && cu_skip_flag[x0][y0]==0 && (cbWidth*cbHeight)≧64 && cbWidth<128 && cbHeight<128)で置き換えられ得る。言い換えれば、sps_ciip_enabled_flagおよびsps_triangle_enabled_flagのシーケンスは、調整され得る。具体的な結果が表7に表され得る。
上記は、図13および図14を参照してこの出願の実施形態におけるピクチャ予測方法を詳細に説明している。以下は、図15を参照してこの出願の実施形態におけるピクチャ予測方法を説明する。
図15は、この出願の一実施形態によるピクチャ予測方法の概略フローチャートである。図15に表されているピクチャ予測方法は、ピクチャ予測装置によって実行され得る(ピクチャ予測装置は、ピクチャ復号装置(システム)またはピクチャ符号化装置(システム)内に配置され得る)。具体的には、図15に表されている方法は、ピクチャ符号化装置またはピクチャ復号装置によって実行され得る。図15に表されている方法は、エンコーダ側において実行されてもよく、またはデコーダ側において実行されてもよい。図15に表されている方法は、ステップ4001からステップ4007を含む。以下は、これらのステップを詳細に別個に説明する。
4001:開始する。
ステップ4001は、ピクチャ予測が開始することを示している。
4002:マージモードが現在のピクチャブロックに対して使用されるかどうかを判定する。
デコーダ側について、ステップ4002において、マージモードが現在のピクチャブロックに対して使用されるかどうかは、CUレベルのシンタックス要素merge_flag[x0][y0]に基づいて判定され得る。具体的な決定プロセスについては、ステップ1003の下の関連する説明を参照されたい。
ステップ4002において、マージモードが現在のピクチャブロックに対して使用されないと判定されたとき、マージモード以外の別のモードが、現在のピクチャブロックを予測するために使用され得る。たとえば、マージモードが現在のピクチャブロックに対して使用されないと判定されたとき、AMVPモードが、現在のピクチャブロックを予測するために使用され得る。
ステップ4002において、マージモードが現在のピクチャブロックに対して使用されると判定された後に、現在のピクチャブロックに適用可能なターゲットマージモードを決定するために、ステップ4003が実行されることに続く。
オプションで、図15に表されている方法は、ステップ4002の前に、現在のピクチャブロックを取得するステップをさらに含む。
現在のピクチャブロックは、現在の符号化されるべきまたは復号されるべきピクチャ内のピクチャブロックであり得る。
この出願において、現在のピクチャブロックは、現在のピクチャブロックのターゲットマージモードを決定するプロセスにおいて、または現在のピクチャブロックのターゲットマージモードが決定された後に、取得され得ることが理解されるべきである。
4003:レベル1のマージモードを使用するかどうかを決定する。
具体的には、レベル1のマージモードが利用可能であるかどうかは、レベル1のマージモードに対応する上位層シンタックス要素および/またはレベル1のマージモードに対応する利用可能なステータス情報に基づいて判定され得る。
オプションで、ステップ4003におけるレベル1のマージモードは、通常のマージモードと、MMVDモードと、サブブロックマージモードとを含む。
レベル1のマージモードが利用可能であるかどうかが判定されるとき、これらのモードが利用可能であるかどうかは、通常のマージモード、MMVDモード、およびサブブロックマージモードのシーケンスで順次判定され得る。すべてのモードが利用可能でないとき、レベル1のマージモードが利用可能でないと判定される。
ステップ4003において、レベル1のマージモードが利用可能でないと判定されたとき、レベル2のマージモードからターゲットマージモードを決定するために、ステップ4004が実行されることに続き得る。
図15に表されているピクチャ予測方法について、レベル1のマージモードおよびレベル2のマージモードは、現在のピクチャブロックのすべてのオプションのマージモードを含んでもよく、現在のピクチャブロックについて、最終的なターゲットマージモードが、レベル1のマージモードおよびレベル2のマージモードから決定される必要がある。
オプションで、レベル1のマージモードの優先度は、レベル2のマージモードの優先度よりも高い。
レベル1のマージモードの優先度がレベル2のマージモードの優先度よりも高いことは、現在のピクチャブロックのターゲットマージモードを決定するプロセスにおいて、ターゲットマージモードがレベル1のマージモードから優先的に決定されることを意味する。レベル1のマージモードにおいて利用可能なマージモードが存在しないならば、ターゲットマージモードは、次いで、レベル2のマージモードから決定される。
4004:条件1から条件5が満たされているかどうかを判定する。
条件1から条件5は、以下の通りである。
条件1:TPMモードが使用されることを許可されている。
条件2:現在のピクチャブロックが配置されているスライスまたはスライスグループのタイプがBである。
条件3:現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量が2以上であると判定されている。
条件4:現在のピクチャブロックのサイズが事前設定された条件を満たしている。
条件5:スキップモードが現在のピクチャブロックを予測するために使用されない。
条件1は、具体的には、sps_triangle_enabled_flag=1によって表現されてもよく、条件2は、具体的には、slice_type==Bによって表現されてもよく、条件3は、具体的には、MaxNumTriangleMergeCand≧2によって表現されてもよい。MaxNumTriangleMergeCandは、現在のピクチャブロックが配置されているスライスまたはスライスグループによってサポートされている候補TPMモードの最大数量を示している。
ステップ4004において、条件1から条件5のうちのいずれか1つが満たされていないと判定されたとき、CIIPモードがターゲットマージモードとして直接決定され得る。言い換えれば、ステップ4005が実行される。ステップ4004において、5つの条件、すなわち、条件1から条件5が満たされていると判定されたとき、ターゲットマージモードは、CIIPモードの関連する情報に基づいてさらに決定される必要がある。言い換えれば、ステップ4006が実行される。
4005:CIIPモードが使用されることを許可されているとき、ターゲットマージモードとしてCIIPモードを決定する。
言い換えれば、ステップ4005において、CIIPモードが使用されることを許可されており、条件1から条件5のうちのいずれか1つが満たされていないとき、CIIPモードがターゲットマージモードとして決定される。
オプションで、条件1から条件5のうちのいずれか1つが満たされていないとき、CIIPモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定される。CIIPモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値であるとき、CIIPモードは、現在のピクチャブロックに対してピクチャ予測を実行するために使用される。
ここでCIIPモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定されることは、CIIPがターゲットマージモードとして決定されることと等価であることが理解されるべきである。
オプションで、CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、ciip_flagである。
CIIPモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定されることは、具体的には、ciip_flagが1に設定されることであり得る。
加えて、CIIPモードの利用可能なステータスを示す利用可能なステータス情報の値が第2の値に設定されているとき、それは、CIIPモードが現在のピクチャブロックに対してピクチャ予測を実行するために使用されないことを意味し得る。たとえば、CIIPモードの利用可能なステータスを示す利用可能なステータス情報がciip_flagであり、ciip_flag=0のとき、CIIPモードは、現在のピクチャブロックに対してピクチャ予測を実行するために使用されない。
4006:CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいてターゲットマージモードを決定する。
CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、現在のピクチャブロックが予測されるときにCIIPモードが使用されるかどうかを示すために使用される。
言い換えれば、ステップ4006において、条件1から条件5までのすべての条件が満たされているとき、ターゲットマージモードは、CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいてさらに決定される必要がある。
CIIPモードの利用可能なステータスを示す利用可能なステータス情報は、ciip_flagの値であり得る。ciip_flagが0であるとき、CIIPモードは、現在のピクチャブロックに対して利用可能でない。ciip_flagが1であるとき、CIIPモードは、現在のピクチャブロックに対して利用可能である。
オプションで、ターゲットマージモードがCIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいて決定されることは、CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示しているとき、TPMモードがターゲットマージモードとして決定されることを含む。
CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示していることは、ケース1および3を含む。
ケース1:CIIPモードに対応する上位層シンタックス要素が、CIIPモードが使用されることを禁止されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが利用可能でないことを示している。
ケース2:CIIPモードに対応する上位層シンタックス要素が、CIIPモードが使用されることを許可されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが利用可能でないことを示している。
ケース3:CIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが利用可能でないことを示している。
CIIPモードに対応する上位層シンタックス要素が、CIIPモードが使用されることを許可されていることを示しており、CIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが利用可能であることを示しているとき、CIIPモードがターゲットマージモードとして決定されることが理解されるべきである。
オプションで、CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示しているとき、TPMモードがターゲットマージモードとして決定されることは、以下を含む。
CIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報が、CIIPモードが使用されることを禁止されていることを示しているとき、TPMモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定され、TPMモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値であるとき、TPMモードが、現在のピクチャブロックに対してピクチャ予測を実行するために使用される。
ここでTPMモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定されることは、TPMがターゲットマージモードとして決定されることと等価であることが理解されるべきである。
オプションで、TPMモードの利用可能なステータスを示す利用可能なステータス情報は、MergeTriangleFlagである。
TPMモードの利用可能なステータスを示す利用可能なステータス情報の値が第1の値に設定されることは、具体的には、MergeTriangleFlagが1に設定されることであり得る。
この出願において、ターゲットマージモードは、5つの事前設定された条件が満たされているときのみ、CIIPモードの上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいて決定されることが可能である。従来の解決策と比較して、ターゲットマージモードがCIIPモードの上位層シンタックス要素および利用可能なステータス情報に基づいてさらに決定される前に、より多くの条件が満たされる必要がある。そうでなければ、CIIPモードは、ターゲットマージモードとして直接決定され得る。これは、ターゲットマージモードを決定するプロセスにおけるいくつかの冗長なプロセスを削減することができる。
別の観点から、レベル1のマージモードが利用可能でないとき、いくつかの事前設定された条件に基づいて、CIIPモードを最終的なマージモードとして選択するかどうかが判定されてもよく、CIIPモードは、事前設定された条件のうちのいずれか1つが満たされていないことを条件に、ターゲットマージモードとして直接決定されてもよい。これは、ターゲットマージを決定するプロセスにおいて生成される冗長性を削減する。
4007:ターゲットマージモードに基づいて現在のピクチャブロックを予測する。
オプションで、ターゲットマージモードがCIIPモードに対応する上位層シンタックス要素および/またはCIIPモードの利用可能なステータスを示す利用可能なステータス情報に基づいて決定される前に、図15に表されている方法は、
以下の条件のうちの少なくとも1つが満たされていることを判定するステップをさらに含む。
現在のピクチャブロックのサイズが事前設定された条件を満たしている、および
スキップモードが現在のピクチャブロックを予測するために使用されない。
オプションで、現在のピクチャブロックのサイズが事前設定された条件を満たしていることは、現在のピクチャブロックが以下の3つの条件、すなわち、
(cdWidth*cbHeight)≧64、
cbWidth<128、および
cbHeight<128
を満たしていることを含む。
cdWidthは、現在のピクチャブロックの幅であり、cbHeightは、現在のピクチャブロックの高さである。
上記は、添付図面を参照してこの出願の実施形態におけるピクチャ予測方法を詳細に説明している。以下は、図16を参照してこの出願の一実施形態におけるピクチャ予測装置を説明する。図16に表されているピクチャ予測装置は、この出願の実施形態におけるピクチャ予測方法におけるステップを実行することができることが理解されるべきである。不要な繰り返しを避けるために、以下は、この出願のこの実施形態におけるピクチャ予測装置を説明するときに、繰り返される説明を適切に省略している。
図16は、この出願の一実施形態によるピクチャ予測装置の概略ブロック図である。
図16に表されているピクチャ予測装置5000は、決定ユニット5001と、予測ユニット5002とを含む。
図16に表されているピクチャ予測装置5000は、この出願の実施形態におけるピクチャ予測方法を実行するように構成されている。具体的には、ピクチャ予測装置5000における決定ユニット5001は、図13から図15に表されているピクチャ予測方法におけるターゲットマージモードを決定するプロセスを実行するように構成され得る。ピクチャ予測装置5000における予測ユニット5002は、図13から図15に表されているピクチャ予測方法におけるターゲットマージモードに基づいて現在のピクチャブロックに対してピクチャ予測を実行するプロセスを実行するように構成されている。
図17は、この出願の一実施形態によるピクチャ予測装置のハードウェア構造の概略図である。図17に表されているピクチャ予測装置6000(装置6000は、具体的には、コンピュータデバイスであり得る)は、メモリ6001と、プロセッサ6002と、通信インターフェース6003と、バス6004とを含む。メモリ6001と、プロセッサ6002と、通信インターフェース6003との間の通信接続は、バス6004を通じて実現されている。
メモリ6001は、リードオンリメモリ(read only memory、ROM)、静的記憶デバイス、動的記憶デバイス、またはランダムアクセスメモリ(random access memory、RAM)であり得る。メモリ6001は、プログラムを記憶し得る。メモリ6001に記憶されているプログラムがプロセッサ6002によって実行されるとき、プロセッサ6002は、この出願の実施形態におけるピクチャ予測方法のステップを実行するように構成される。
プロセッサ6002は、汎用中央処理ユニット(central processing unit、CPU)、マイクロプロセッサ、特定用途向け集積回路(application specific integrated circuit、ASIC)、グラフィックス処理ユニット(graphics processing unit、GPU)、または1つもしくは複数の集積回路を使用してもよく、この出願の方法の実施形態におけるピクチャ検出方法を実現するために、関連するプログラムを実行するように構成されている。
プロセッサ6002は、集積回路チップであってもよく、信号処理能力を有する。実装プロセスにおいて、この出願におけるピクチャ予測方法のステップは、ハードウェア集積論理回路、またはプロセッサ6002におけるソフトウェアの形式における命令を使用することによって完了され得る。
プロセッサ6002は、代替的には、汎用プロセッサ、デジタル信号プロセッサ(digital signal processing、DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは別のプログラマブル論理デバイス、個別のゲートもしくはトランジスタ論理デバイス、または個別のハードウェア構成要素であり得る。プロセッサ602は、この出願の実施形態において開示されている方法、ステップ、および論理ブロック図を実現または実行し得る。汎用プロセッサは、マイクロプロセッサであってもよく、またはプロセッサは、任意の従来のプロセッサまたは同様のものであってもよい。この出願の実施形態を参照して開示されている方法のステップは、ハードウェア復号プロセッサによって直接実行および完了されてもよく、または復号プロセッサ内のハードウェアおよびソフトウェアモジュールの組み合わせによって実行および完了されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、リードオンリメモリ、プログラマブルリードオンリメモリ、電気的消去可能プログラマブルメモリ、またはレジスタなどの、この技術分野における成熟した記憶媒体内に配置され得る。記憶媒体は、メモリ6001内に配置されている。プロセッサ6002は、メモリ6001内の情報を読み取り、プロセッサ6002のハードウェアと組み合わせて、ピクチャ予測装置に含まれるユニットによって実行される必要がある機能を完了するか、またはこの出願の方法の実施形態におけるピクチャ予測方法を実行する。
通信インターフェース6003は、装置6000と別のデバイスまたは通信ネットワークとの間の通信を実現するために、トランシーバ装置、たとえば、限定はしないが、トランシーバを使用する。たとえば、構築されるべきニューラルネットワークに関する情報、およびニューラルネットワーク構築プロセスにおいて要求される訓練データは、通信インターフェース6003を通じて取得され得る。
バス6004は、装置6000の構成要素(たとえば、メモリ6001、プロセッサ6002、および通信インターフェース6003)の間で情報を送信するための経路を含み得る。
ピクチャ予測装置5000内の決定ユニット5001および予測ユニット5002は、ピクチャ予測装置6000内のプロセッサ6002と等価である。
図18は、この出願の一実施形態によるピクチャ符号化/復号装置のハードウェア構造の概略図である。図18に表されているピクチャ符号化/復号装置7000(装置7000は、具体的には、コンピュータデバイスであり得る)は、メモリ7001と、プロセッサ7002と、通信インターフェース7003と、バス7004とを含んでいる。メモリ7001と、プロセッサ7002と、通信インターフェース7003との間の通信接続は、バス7004を通じて実現されている。
ピクチャ予測装置6000内のモジュールの前述の限定および説明は、ピクチャ符号化/復号装置7000にも適用可能であり、詳細は、ここで再び説明されない。
メモリ7001は、プログラムを記憶するように構成され得る。プロセッサ7002は、メモリ7001に記憶されているプログラムを実行するように構成されている。メモリ7001に記憶されているプログラムが実行されるとき、プロセッサ7002は、この出願の実施形態におけるピクチャ予測方法のステップを実行するように構成される。
加えて、ビデオピクチャを符号化するとき、ピクチャ符号化/復号装置7000は、通信インターフェースを通じてビデオピクチャを取得し、次いで、符号化されたビデオデータを取得するために、取得されたビデオピクチャを符号化し得る。符号化されたビデオデータは、通信インターフェース7003を通じてビデオ復号デバイスに送信され得る。
ビデオピクチャを復号するとき、ピクチャ符号化/復号装置7000は、通信インターフェースを通じてビデオピクチャを取得し、次いで、表示されるべきビデオピクチャを取得するために、取得されたビデオピクチャを復号し得る。
この技術分野の当業者は、この明細書において開示されている実施形態において説明されている例と組み合わせて、ユニットおよびアルゴリズムのステップが、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実現され得ることを認識し得る。機能がハードウェアによってまたはソフトウェアによって実行されるかは、特定のアプリケーションと、技術的解決策の設計制約条件とに依存する。この技術分野の当業者は、特定のアプリケーションごとに、説明されている機能を実現するために異なる方法を使用し得るが、実装がこの出願の範囲を超えていると考えられるべきではない。
便利で簡単な説明のために、前述のシステム、装置、およびユニットの詳細な動作プロセスについて、前述の方法の実施形態における対応するプロセスを参照されたく、詳細は、ここで再び説明されないことは、この技術分野の当業者によって明確に理解され得る。
この出願において提供されているいくつかの実施形態において、開示されているシステム、装置、および方法は、別の方式で実現され得ることが理解されるべきである。たとえば、説明されている装置の実施形態は、単に一例である。たとえば、ユニット分割は、単に論理的な機能分割であり、実際の実装では他の分割であり得る。たとえば、複数のユニットまたは構成要素が、別のシステムに組み合わされるかもしくは統合されてもよく、またはいくつかの特徴が、無視され、または実行されなくてもよい。加えて、表示され、または論じられている相互結合または直接結合または通信接続は、いくつかのインターフェースを通じて実現され得る。装置またはユニットの間の間接的な結合または通信接続は、電子的形式、機械的形式、または別の形式で実現され得る。
別個の部分として説明されているユニットは、物理的に別個であってもよく、またはそうでなくてもよく、ユニットとして表示されている部分は、物理的なユニットであってもよく、またはそうでなくてもよく、1つの位置において配置されてもよく、または複数のネットワークユニットにおいて分散されてもよい。ユニットのうちのいくつかまたはすべては、実施形態の解決策の目的を達成するための実際の要件に基づいて選択され得る。
加えて、この出願の実施形態における機能ユニットが、1つの処理ユニットに統合されてもよく、またはユニットの各々が、物理的に単独で存在してもよく、または2つ以上のユニットが、1つのユニットに統合される。
機能がソフトウェア機能ユニットの形式で実現され、独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本質的にこの出願の技術的解決策、または先行技術に寄与する部分、または技術的解決策のいくつかは、ソフトウェア製品の形式で実現され得る。ソフトウェア製品は、記憶媒体に記憶され、この出願の実施形態において説明されている方法のステップのすべてまたはいくつかを実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)に命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶することができる任意の媒体を含む。
前述の説明は、単にこの出願の具体的な実装であるが、この出願の保護範囲を限定するように意図されない。この出願において開示されている技術的範囲内でこの技術分野の当業者によって容易に理解される任意の変形または置換は、この出願の保護範囲内に入るべきである。したがって、この出願の保護範囲は、請求項の保護範囲に従うべきである。