以下では、本願の実施形態における添付の図面を参照して、本願の実施形態について説明する。以下の説明では、本開示の一部を構成し、例示として、本願の実施形態の特定の態様又は本願の実施形態を使用することができる特定の態様を示す添付の図面について参照を行う。本願の実施形態は、他の態様で使用することができ、添付の図面に示されていない構造的又は論理的変更を含み得ることを理解されたい。従って、以下の詳細な説明は限定的なものとして解釈すべきではなく、本願の範囲は添付の特許請求の範囲によって規定される。例えば、説明する方法に関して開示される内容は、その方法を実行するように構成された対応する装置又はシステムにも当てはまる可能性があり、逆もまた同様であることを理解されたい。例えば、1つ又は複数の特定の方法ステップが説明される場合に、対応する装置は、そのような1つ又は複数のユニットが添付の図面に明示的に記載又は図示されていない場合でも、説明した1つ又は複数の方法ステップを実行するための機能ユニット等の1つ又は複数のユニットを含み得る(例えば、1つのユニットが1つ又は複数のステップを実行する;又は複数のユニットのそれぞれが複数のステップのうちの1つ又は複数を実行する)。さらに、例えば、機能ユニット等の1つ又は複数のユニットに基づいて特定の機器を説明する場合に、対応する方法は、そのような1つ又は複数のステップが添付の図面に明示的に記載又は図示されていない場合でも、1つ又は複数のユニットの1つ又は複数の機能を実行するために使用される1つのステップを含み得る(例えば、ステップが1つ又は複数のユニットの1つ又は複数の機能を実行するために使用される;又は複数のステップのそれぞれが複数のユニット内の1つ又は複数のユニットの1つ又は複数の機能を実行するために使用される)。さらに、本明細書で説明する様々な例示的な実施形態及び/又は態様の特徴は、別段の指定がない限り、互いに組み合わせることができることを理解されたい。
ビデオコーディングは、典型的には、ピクチャのシーケンスの処理を指し、ピクチャのシーケンスは、ビデオ又はビデオシーケンスを形成する。ビデオコーディングの分野では、「ピクチャ(picture)」、「フレーム(frame)」、及び「画像(image)」という用語は同義語として使用され得る。本明細書で使用されるビデオコーディングは、ビデオ符号化又はビデオ復号化を指す。ビデオ符号化は、送信元(source:ソース)側で実行され、典型的に、元のビデオピクチャを(例えば、圧縮することにより)処理して、より効率的な保存及び/又は送信のために、ビデオピクチャを表すためのデータ量を減らす。ビデオ復号化は、宛先(destination:送信先)側で実行され、典型的に、ビデオピクチャを再構成するために、エンコーダの処理と比較して逆の処理を含む。実施形態におけるビデオピクチャの「コーディング」は、ビデオシーケンスの「符号化」又は「復号化」として理解する必要がある。符号化部分と復号化部分との組合せは、CODEC(encoding and decoding)とも呼ばれる。
ビデオシーケンスは、一連の画像(ピクチャ)を含み、画像はスライス(slice)にさらに分割され、スライスはブロック(block)にさらに分割される。ビデオコーディング処理はブロック毎に実行される。いくつかの新しいビデオコーディング規格では、「ブロック」の概念がさらに拡張される。例えば、マクロブロックは、予測コーディングのために、複数の予測ブロック(パーティション)にさらに分割され得る。あるいはまた、コーディングユニット(coding unit, CU)、予測ユニット(prediction unit, PU)、及び変換ユニット(transform unit, TU)等の基本概念が使用され、複数のブロックユニットが機能分割によって取得され、そして、まったく新しいツリーベースの構造が説明に使用される。例えば、CUは、四分木分割によってより小さなCUに分割され得、より小さなCUはさらに分割されて、四分木構造が形成され得る。CUは、コーディング画像を分割及びコーディングするための基本単位である。PU及びTUについて、同様のツリー構造も存在し得る。PUは、予測ブロックに対応し得、予測コーディングの基本単位である。CUは、パーティションモードで複数のPUにさらにパーティション分割される。TUは、変換ブロックに対応し得、予測残余を変換するための基本単位である。ただし、CU、PU、及びTUの全ては、本質的にブロック(又は画像ブロック)の概念である。
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は正方形又は長方形であり得る。
本明細書では、説明及び理解を容易にするために、現在のコーディング画像におけるコーディングすべき画像ブロックは、現在のブロックと呼ばれ得る。例えば、符号化では、現在のブロックは現在符号化されているブロックである;そして、復号化では、現在のブロックは現在復号化されているブロックである。現在のブロックを予測するために使用される、参照画像内の復号化した画像ブロックは、参照ブロックと呼ばれる。換言すれば、参照ブロックは、現在のブロックに参照信号を提供するブロックであり、参照信号は、画像ブロック内のピクセル値を表す。参照画像内の現在のブロックに予測信号を提供するブロックは、予測ブロックと呼ばれ得、予測信号は、予測ブロック内のピクセル値、サンプル値、又はサンプル信号を表す。例えば、複数の参照ブロックをトラバース(traversed:詳しく考察する)した後に最適な参照ブロックが見出され、最適な参照ブロックが現在のブロックの予測を提供し、このブロックは予測ブロックと呼ばれる。
可逆(lossless)ビデオコーディングの場合に、元のビデオピクチャを再構成することができる。換言すると、再構成したビデオピクチャは、元のビデオピクチャと同じ品質を有する(格納又は送信中に伝送損失又は他のデータ損失が発生しないと仮定する)。非可逆(lossy)ビデオコーディングの場合に、ビデオピクチャを表すために必要なデータの量を減らすために、例えば量子化によって更なる圧縮が実行され、ビデオピクチャをデコーダ側で完全に再構成することはできない。換言すると、再構成したビデオピクチャの品質は、元のビデオピクチャの品質よりも低いか、又は劣っている。
いくつかの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との間の通信接続は、リンク13を介して実施され得、宛先装置14は、送信元装置12からリンク13を介して符号化したビデオデータを受信し得る。リンク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がインターフェイスを含む場合に、インターフェイスは、例えば、外部ビデオソースからピクチャを受信するための外部インターフェイスであり得る。外部ビデオソースは、例えば、カメラ、外部メモリ、又は外部ピクチャ生成装置等の外部ピクチャ取込み装置である。外部ピクチャ生成装置は、例えば、外部コンピュータグラフィックスプロセッサ、コンピュータ、又はサーバである。インターフェイスは、任意の特許で保護された(proprietary)又は規格化されたインターフェイスプロトコルによる任意のタイプのインターフェイス、例えば、有線又は無線インターフェイス又は光インターフェイスであり得る。
ピクチャは、ピクチャ要素(picture element)の二次元アレイ又はマトリックスと見なすことができる。アレイ内のピクチャ要素は、サンプルとも呼ばれ得る。アレイ又はピクチャの水平及び垂直方向(又は軸線方向)のサンプルの数量は、ピクチャのサイズ及び/又は解像度を規定する。色の表現には、典型的に、3つの色成分が使用される。例えば、ピクチャは3つのサンプルアレイとして表されるか、又はこれを含み得る。例えば、RGB形式又は色空間では、ピクチャには、対応する赤、緑、及び青のサンプルアレイが含まれる。ただし、ビデオコーディングでは、各ピクセルは、典型的に、輝度/クロミナンス形式又は色空間で表される。例えば、YUV形式のピクチャには、Yで示される輝度成分(代わりにLが使用される場合もある)と、U及びVで示される2つのクロミナンス成分とが含まれる。輝度(ルマ)成分Yは、明るさ又はグレーレベルの強度を表す(例えば、両者がグレースケールピクチャでは同一である)一方、2つのクロミナンス(クロマ)成分U及びVは、色度又は色情報成分を表す。従って、YUV形式のピクチャは、ルマサンプル値(Y)のルマサンプルアレイと、クロマ値(U及びV)の2つのクロマサンプルアレイとを含む。RGB形式のピクチャは、YUV形式のピクチャに変換又は変形することができ、その逆も可能であり、このプロセスは、色変換又は変形としても知られている。ピクチャがモノクロである場合に、ピクチャにはルマサンプルアレイのみが含まれ得る。本願のこの実施形態では、ピクチャソース16によってピクチャプロセッサに送信される画像は、生の(raw)ピクチャデータ17とも呼ばれ得る。
ピクチャ・プリプロセッサ18は、生のピクチャデータ17を受信し、生のピクチャデータ17を前処理して、前処理したピクチャ19又は前処理したピクチャデータ19を取得するように構成される。ピクチャ・プリプロセッサ18によって実行される前処理は、トリミング、(例えば、RGB形式からYUV形式への)色フォーマット変換、色補正、又はノイズ除去を含み得る。
エンコーダ20(ビデオエンコーダ20とも呼ばれる)は、前処理したピクチャデータ19を受信し、関連する予測モード(本明細書の各実施形態の予測モード等)を使用して、前処理したピクチャデータ19を処理し、符号化したピクチャデータ21を提供するように構成される(エンコーダ20の構造の詳細は、図2、図4、又は図5に基づいて以下でさらに説明する)。いくつかの実施形態では、エンコーダ20は、本願で説明するエンコーダ側でのクロマブロック予測方法の適用を実施するために、以下で説明する実施形態を実行するように構成され得る。
通信インターフェイス22は、符号化したピクチャデータ21を受信し、格納又は直接再構成のために、符号化したピクチャデータ21を、リンク13を介して宛先装置14又は任意の他の装置(例えば、メモリ)に送信するように構成され得る。任意の他の装置は、復号化又は格納に使用される任意の装置であり得る。通信インターフェイス22は、例えば、符号化したピクチャデータ21を、リンク13を介して送信するための適切なフォーマット、例えばデータパケットにパッケージ化するように構成され得る。
宛先装置14はデコーダ30を含み、オプションで、宛先装置14は、通信インターフェイス28、ピクチャ・ポストプロセッサ32、及び表示装置34をさらに含み得る。個別の説明は、以下の通りである。
通信インターフェイス28は、送信元装置12又は任意の他のソースから符号化したピクチャデータ21を受信するように構成され得る。任意の他のソースは、例えば記憶装置であり、記憶装置は、例えば符号化したピクチャデータの記憶装置である。通信インターフェイス28は、送信元装置12と宛先装置14との間のリンク13を介して又は任意のタイプのネットワークを介して、符号化したピクチャデータ21を送信又は受信するように構成され得る。リンク13は、例えば直接有線又は無線接続であり、任意のタイプのネットワークは、例えば有線又は無線ネットワーク又はそれらの任意の組合せ、或いは任意のタイプのプライベート又はパブリックネットワーク、或いはそれらの任意の組合せである。通信インターフェイス28は、例えば、通信インターフェイス22を介して送信されたデータパケットをパッケージ解除(de-package)して、符号化したピクチャデータ21を取得するように構成され得る。
通信インターフェイス28と通信インターフェイス22との両方は、単方向通信インターフェイス又は双方向通信インターフェイスとして構成され得、例えば、接続をセットアップするためにメッセージを送受信し、通信リンク及び/又は符号化したピクチャデータ送信等のデータ送信に関連する任意の他の情報を確認及び交換するように構成され得る。
デコーダ30(デコーダ30とも呼ばれる)は、符号化したピクチャデータ21を受信し、復号化したピクチャデータ31又は復号化したピクチャ31を提供するように構成される(デコーダ30の構造の詳細は、図3、図4、又は図5に基づいて以下でさらに説明する)。いくつかの実施形態では、デコーダ30は、本願で説明するデコーダ側でのクロマブロック予測方法の適用を実施するために、以下で説明する実施形態を実行するように構成され得る。
ピクチャ・ポストプロセッサ32は、復号化したピクチャデータ31(再構成したピクチャデータとも呼ばれる)を後処理して、後処理したピクチャデータ33を取得するように構成される。ピクチャ・ポストプロセッサ32によって実行される後処理は、(例えば、YUV形式からRGB形式への)色フォーマット変換、色補正、トリミング、再サンプリング、又は任意の他の処理を含み得る。ピクチャ・ポストプロセッサ32は、後処理したピクチャデータ33を表示装置34に送信するようにさらに構成され得る。
表示装置34は、後処理したピクチャデータ33を受信して、例えばユーザ又は視聴者にピクチャを表示すように構成される。表示装置34は、再構成したピクチャを提示するように構成された任意のタイプのディスプレイであるか、又はこのディスプレイを含み得、例えば、一体型又は外部のディスプレイ又はモニタであり得る。例えば、ディスプレイは、液晶ディスプレイ(liquid crystal display, LDC)、有機発光ダイオード(organic light emitting diode, OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(liquid crystal on silicon, LCoS)、デジタルライトプロセッサ(digital light processor, DLP)、又は任意の他のタイプのディスプレイを含み得る。
図1Aは、送信元装置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つ又は複数のプロセッサと見なすことができる。
場合によっては、図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との両方に存在する。
図2は、本願の一実施形態を実施するように構成されたエンコーダ20の一例の概略/概念ブロック図である。図2の例では、エンコーダ20は、残余計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループフィルタユニット220、復号化したピクチャバッファ(decoded picture buffer, DPB)230、予測処理ユニット260、及びエントロピー符号化ユニット270を含む。予測処理ユニット260は、インター予測ユニット244、イントラ予測ユニット254、及びモード選択ユニット262を含み得る。インター予測ユニット244は、動き推定ユニット及び動き補償ユニット(図示されていない)を含み得る。図2に示されるエンコーダ20は、ハイブリッド式ビデオエンコーダ又はハイブリッド式ビデオコーデックに基づくビデオエンコーダとも呼ばれ得る。
例えば、残余計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260、及びエントロピー符号化ユニット270は、エンコーダ20の順方向信号経路を形成するが、例えば、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループフィルタ220、復号化したピクチャバッファ(decoded picture buffer, DPB)230、及び予測処理ユニット260は、エンコーダの逆方向信号経路を形成する。エンコーダの逆方向信号経路は、デコーダの信号経路に対応する(図3のデコーダ30を参照)。
エンコーダ20は、例えば、入力202を介して、ピクチャ201又はピクチャ201の画像ブロック203、例えば、ビデオ又はビデオシーケンスを形成する一連のピクチャ内のピクチャを受信する。画像ブロック203は、現在のピクチャブロック又は符号化すべきピクチャブロックとも呼ばれ得る。ピクチャ201は、現在のピクチャ又は符号化すべきピクチャと呼ばれ得る(特にビデオコーディングにおいて、現在のピクチャを他のピクチャと区別するために、他のピクチャは、例えば、同じビデオシーケンス、つまり、現在のピクチャも含むビデオシーケンス内の以前に符号化及び/又は復号化したピクチャである)。
エンコーダ20の実施形態は、ピクチャ201を画像ブロック203等の複数のブロックにパーティション分割するように構成されたパーティション分割ユニット(図2には示されていない)を含み得る。ピクチャ201は、通常、重複しない複数のブロックにパーティション分割される。パーティション分割ユニットは、ビデオシーケンス内の全てのピクチャに対して同じブロックサイズを使用し、ブロックサイズを規定する対応するグリッドを使用するか、或いはピクチャ又はサブセット又はピクチャグループの間でブロックサイズを変更し、各ピクチャを対応するブロックにパーティション分割するように構成され得る。
一例では、エンコーダ20の予測処理ユニット260は、上記のパーティション分割技術の任意の組合せを実行するように構成され得る。
ピクチャ201と同様に、画像ブロック203のサイズがピクチャ201のサイズよりも小さいが、画像ブロック203は、サンプル値を有するサンプルの2次元アレイ又はマトリックスでもあるか、又はその2次元アレイ又はマトリックスと見なされ得る。換言すると、画像ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロピクチャ201の場合のルマアレイ)、3つのサンプルアレイ(例えば、カラーピクチャの場合の1つのルマアレイ及び2つのクロマアレイ)、又は適用されるカラーフォーマットに応じた任意の他の数量及び/又はタイプのアレイを含み得る。画像ブロック203の水平方向及び垂直方向(又は軸線方向)のサンプルの数量は、画像ブロック203のサイズを規定する。
図2に示されるエンコーダ20は、ピクチャ201をブロック毎に符号化する、例えば、各画像ブロック203を符号化及び予測するように構成される。
残余計算ユニット204は、ピクチャ画像ブロック203及び予測ブロック265(予測ブロック265に関する更なる詳細を以下に示す)に基づいて残余ブロック205を計算する、例えば、予測ブロック265のサンプル値をピクチャ画像ブロック203のサンプル値からサンプル毎に(ピクセル毎に)差し引くことによってサンプルドメインで残余ブロック205を取得するように構成される。
変換処理ユニット206は、変換、例えば、離散コサイン変換(discrete cosine transform, DCT)又は離散サイン変換(discrete sine transform, DST)を残余ブロック205のサンプル値に適用して、変換ドメインで変換係数207を取得するように構成される。変換係数207は、変換残余係数とも呼ばれ、変換ドメインにおける残余ブロック205を表し得る。
変換処理ユニット206は、AVS、AVS2、又はAVS3で指定された変換等、DCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較すると、このような整数近似は、典型的に、特定の係数でスケーリングされる。順方向及び逆方向の変換によって処理される残余ブロックのノルムを保持するために、追加のスケール係数を適用することは、変換プロセスの一部である。スケール係数は、典型的に、いくつかの制約に基づいて選択される。例えば、スケール係数は、シフト操作の2の累乗、変換係数のビット深度、精度と実装コストとの間のトレードオフ等である。特定のスケーリング係数は、例えば、逆変換に対して、例えば、デコーダ側30の逆変換処理ユニット212によって(及び対応する逆変換、例えば、エンコーダ側20の逆変換処理ユニット212によって)指定され、そして、例えば、エンコーダ側20の変換処理ユニット206による順方向変換の対応するスケーリング係数は、それに応じて指定することができる。
量子化ユニット208は、例えば、スカラー量子化又はベクトル量子化を適用することによって、変換係数207を量子化して、量子化した変換係数209を取得するように構成される。量子化した変換係数209は、量子化した残余係数209とも呼ばれ得る。量子化プロセスは、変換係数207の一部又は全てに関連するビット深度を減らすことができる。例えば、nビット変換係数を量子化中にmビット変換係数に切り捨てることができ、ここで、nはmより大きい。量子化度(quantization degree)は、量子化パラメータ(quantization parameter, QP)を調整することによって修正できる。例えば、スカラー量子化の場合に、より細かい又はより粗い量子化を実現するために、様々なスケールが適用され得る。より小さな量子化ステップはより細かい量子化に対応する一方、より大きな量子化ステップはより粗い量子化に対応する。適切な量子化ステップサイズは、量子化パラメータ(quantization parameter, QP)によって示され得る。量子化パラメータは、例えば、適切な量子化ステップサイズの予め規定したセットに対するインデックスであり得る。例えば、より小さな量子化パラメータは、より細かい量子化(より小さな量子化ステップサイズ)に対応し得、より大きな量子化パラメータは、より粗い量子化(より大きな量子化ステップサイズ)に対応し得、又はその逆であり得る。量子化は、例えば、逆量子化ユニット210によって実行される、量子化ステップサイズ及び対応する量子化及び/又は逆量子化による除算を含み得るか、又は量子化ステップサイズによる乗算を含み得る。AVS、AVS2、及びAVS3等のいくつかの規格による実施形態では、量子化パラメータを使用して、量子化ステップサイズを決定することができる。一般に、量子化ステップサイズは、除算を含む方程式の固定小数点近似を使用して、量子化パラメータに基づいて計算することができる。残余ブロックのノルムを復元するために、追加のスケーリング係数を量子化及び量子化解除に導入することができ、ここで、量子化ステップサイズ及び量子化パラメータの方程式の固定小数点近似で使用されるスケールのために、残余ブロックのノルムは修正され得る。例示的な実施態様では、逆変換及び量子化解除のスケールを組み合わせてもよい。あるいはまた、カスタマイズした量子化テーブルを使用して、例えばビットストリームでエンコーダからデコーダに信号通知することができる。量子化は不可逆演算であり、ここで、量子化ステップサイズが大きくなると損失が大きくなる。
逆量子化ユニット210は、量子化ユニット208の逆量子化を量子化係数に適用して、量子化解除(dequantized)係数211を取得する、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて、又はこれを使用して、量子化ユニット208によって適用される量子化スキームの逆量子化スキームを適用するように構成される。量子化解除係数211は、量子化解除残余係数211とも呼ばれ、変換係数207に対応するが、典型的に、量子化による損失のために変換係数と同一ではない。
逆変換処理ユニット212は、変換処理ユニット206によって適用される変換の逆変換、例えば、逆離散コサイン変換(discrete cosine transform, DCT)又は逆離散サイン変換(discrete sine transform, DST)を適用して、サンプルドメインで逆変換ブロック213を取得するように構成される。逆変換ブロック213は、逆変換量子化解除ブロック213又は逆変換残余ブロック213とも呼ばれ得る。
再構成ユニット214(例えば、加算器(summer)214)は、逆変換ブロック213(つまり、再構成した残余ブロック213)を予測ブロック265に追加して、例えば、再構成した残余ブロック213のサンプル値及び予測ブロック265のサンプル値を加算することによって、サンプルドメインで再構成ブロック215を取得するように構成される。
オプションで、例えば、ラインバッファ216のバッファユニット216(略して「バッファ」216)は、例えば、イントラ予測のために、再構成ブロック215及び対応するサンプル値をバッファリング又は格納するように構成される。他の実施形態では、エンコーダは、任意のタイプの推定及び/又は予測、例えばイントラ予測のために、バッファユニット216に格納されるフィルタ処理していない再構成ブロック及び/又は対応するサンプル値を使用するように構成され得る。
例えば、エンコーダ20の一実施形態は、バッファユニット216が、イントラ予測ユニット254の再構成ブロック215を格納するために使用されるだけでなく、ループフィルタユニット220(図2には示されない)にも使用され、及び/又は、例えばバッファユニット216及び復号化したピクチャバッファユニット230が1つのバッファを形成するように構成され得る。他の実施形態では、フィルタ処理済みブロック221及び/又は復号化したピクチャバッファ230からのブロック又はサンプル(ブロック又はサンプルは図2には示されていない)は、イントラ予測ユニット254の入力又は基礎として使用される。
ループフィルタユニット220(簡潔に「ループフィルタ」220と呼ばれる)は、再構成ブロック215をフィルタ処理して、フィルタ処理済みブロック221を取得し、ピクセル移行を滑らかにするか、又はビデオ品質を改善するように構成される。ループフィルタユニット220は、例えば、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset, SAO)フィルタ、或いはバイラテラルフィルタ、適応ループフィルタ(adaptive loop filter, ALF)、シャープニング又はスムージングフィルタ、又は協調フィルタ等の別のフィルタを含む、1つ又は複数のループフィルタを表すことを意図している。ループフィルタユニット220が図2にインループ(in-loop)フィルタとして示されているが、別の構成では、ループフィルタユニット220は、ポストループフィルタとして実装され得る。フィルタ処理済みブロック221は、フィルタ処理済み再構成ブロック221とも呼ばれ得る。復号化したピクチャバッファ230は、ループフィルタユニット220が再構成した符号化ブロックに対してフィルタ処理操作を実行した後に、再構成した符号化ブロックを格納することができる。
一実施形態では、エンコーダ20(対応して、ループフィルタユニット220)は、例えば、直接的に、或いはエントロピー符号化ユニット270又は任意の他のエントロピー符号化ユニットによって実行されたエントロピー符号化の後に、ループフィルタパラメータ(サンプル適応オフセット情報等)を出力するように構成され得、それによって、例えば、デコーダ30は、同じループフィルタパラメータを受け取り、同じループフィルタパラメータを復号化に適用することができる。
復号化したピクチャバッファ(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は、予測モード(例えば、イントラ予測モード又はインター予測モード)及び/又は予測ブロック265として使用すべき対応する予測ブロック245又は255を選択して、残余ブロック205を計算し、再構成ブロック215を再構成するように構成され得る。
一実施形態では、モード選択ユニット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)パーティション分割、三分木(ternary tree, TT)パーティション分割、拡張四分木(EQT, Extended Quad-Tree)パーティション分割、又はそれらの任意の組合せを繰り返し使用して、画像ブロック203をより小さなブロックパーティション又はサブブロックにパーティション分割し、例えば、各ブロックパーティション又はサブブロックに対して予測を実行するようにさらに構成され得、ここで、モード選択は、パーティション分割した画像ブロック203のツリー構造の選択、及び各ブロックパーティション又はサブブロックに適用される予測モードの選択を含む。
インター予測ユニット244は、動き推定(motion estimation, ME)ユニット(図2には示されていない)及び動き補償(motion compensation, MC)ユニット(図2には示されていない)を含み得る。動き推定ユニットは、ピクチャ画像ブロック203(現在のピクチャ201の現在のピクチャ画像ブロック203)及び復号化したピクチャ231、又は少なくとも1つ又は複数の以前に再構成したブロック、例えば動き推定のための1つ又は複数の他の/異なる以前に復号化したピクチャ231の再構成ブロックを受信又は取得するように構成される。例えば、ビデオシーケンスは、現在のピクチャ及び以前に復号化したピクチャ31を含み得る。換言すると、現在のピクチャ及び以前に復号化したピクチャ31は、ビデオシーケンスを形成するピクチャのシーケンスの一部であるか、又はこれを形成し得る。
例えば、エンコーダ20は、同じピクチャ又は複数の他のピクチャのうちの異なるピクチャの複数の参照ブロックから1つの参照ブロックを選択し、参照ピクチャを動き推定ユニット(図2には示されていない)に提供する、及び/又は参照ブロックの位置(座標X及びY)と現在のブロックの位置との間のオフセット(空間オフセット)をインター予測パラメータとして提供するように構成され得る。このオフセットは、動きベクトル(motion vector, MV)とも呼ばれる。
動き補償ユニットは、インター予測パラメータを取得し、インター予測パラメータに基づいて又はこれを使用して、インター予測を実行して、インター予測ブロック245を取得するように構成される。動き補償ユニット(図2には示されない)によって実行される動き補償は、動き推定(おそらくサブピクセル精度の補間を実行する)によって決定された動き/ブロックベクトルに基づいて、予測ブロックをフェッチ又は生成することを含み得る。補間フィルタ処理は、既知のピクセルサンプルから追加のピクセルサンプルを生成することができ、それにより、ピクチャブロックをコーディングするために使用され得る候補予測ブロックの数量を潜在的に増大させる。現在のピクチャブロックのPUに関する動きベクトルを受信すると、動き補償ユニット246は、動きベクトルが1つの参照ピクチャリスト内で指し示す予測ブロックの位置を特定する(locate)ことができる。動き補償ユニット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, CAVLC)スキーム、算術コーディングスキーム、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding, CABAC)、構文ベースのコンテキスト適応バイナリ算術コーディング(syntax-based context adaptive binary arithmetic coding, SBAC)、確率間隔パーティション分割エントロピー(probability interval partitioning entropy, PIPE)コーディング、又は別のエントロピーコーディング方式又は技術)を、以下の1つ又は全て(量子化係数209、インター予測パラメータ、イントラ予測パラメータ、及び/又はループフィルタパラメータ)に適用(又はバイパス)して、例えば、符号化ビットストリーム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は、例えば、エンコーダ20による符号化によって得られた符号化したピクチャデータ(例えば、符号化ビットストリーム)21を受信して、復号化したピクチャ231を取得するように構成される。復号化中に、ビデオデコーダ30は、ビデオエンコーダ20からビデオデータ、例えば符号化したビデオスライスのピクチャブロックを表す符号化ビデオビットストリーム、及び関連する構文要素を受信する。
図3の例では、デコーダ30は、エントロピー復号化ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、加算器314)、バッファ316、ループフィルタ320、復号化したピクチャバッファ330、及び予測処理ユニット360を含む。予測処理ユニット360は、インター予測ユニット344、イントラ予測ユニット354、及びモード選択ユニット362を含み得る。いくつかの例では、ビデオデコーダ30は、図2のビデオエンコーダ20に関して説明した符号化プロセスとほぼ逆である復号化プロセスを実行することができる。
エントロピー復号化ユニット304は、符号化したピクチャデータ21をエントロピー復号化して、例えば、量子化係数309及び/又は復号化したコーディングパラメータ(図3には示されていない)、例えば、(復号化される)インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、及び/又は別の構文要素の任意の1つ又は全てを取得するように構成される。エントロピー復号化ユニット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によって復号化された量子化変換係数を逆量子化(すなわち、量子化解除(dequantize))するように構成され得る。逆量子化プロセスは、ビデオスライス内のビデオブロック毎にビデオエンコーダ20によって計算される量子化パラメータを使用して、適用すべき量子化度を決定し、同様に、適用すべき逆量子化度を決定することを含み得る。
逆変換処理ユニット312は、逆変換(例えば、逆DCT、逆整数変換、又は概念的に類似した逆変換プロセス)を変換係数に適用して、ピクセルドメインで残余ブロックを生成するように構成される。
再構成ユニット314(例えば、加算器314)は、逆変換ブロック313(つまり、再構成した残余ブロック313)を予測ブロック365に追加して、例えば、再構成した残余ブロック313のサンプル値及び予測ブロック365のサンプル値を加算することによって、サンプルドメインで再構成ブロック315を取得するように構成される。
ループフィルタユニット320(コーディングループ中又はコーディングループ後に)は、再構成ブロック315をフィルタ処理して、フィルタ処理済みブロック321を取得し、ピクセル移行を滑らかにするか、又はビデオ品質を改善するように構成される。一例では、ループフィルタユニット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は、以下の実施形態で説明する復号化方法を実施するように構成される。
ブロック分割操作は、予測処理ユニット360又は独立したユニット(図示されていない)によって実行され得ることを理解すべきである。予測処理ユニット360は、例えば、四分木(quad-tree, QT)パーティション分割、二分木(binary-tree, BT)パーティション分割、三分木(triple-tree, TT)パーティション分割、拡張四分木(EQT, Extended Quad-Tree)パーティション分割、又はそれらの任意の組合せを繰り返し使用して、画像ブロック203をより小さなブロックパーティション又はサブブロックにパーティション分割し、例えば、各ブロックパーティション又はサブブロックに対して予測を実行し(ここで、パーティション分割モードは、予め設定した規則に従って決定されるか、又はパーティション分割モードを示すために使用される解析した構文要素に基づいて決定される)、そして、例えば、各ブロックパーティション又はサブブロックを予測するように構成され得る。モード選択は、パーティション分割した画像ブロック203のツリー構造の選択、及び各ブロックパーティション又はサブブロックに適用される予測モードの選択を含む。
ビデオデコーダ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である。別の例として、動きベクトルの値(例えば、8×8画像ブロック内の4つの4×4サブブロックの動きベクトルMV)が制限されているため、4つの4×4サブブロックのMVの整数部分同士の間の最大差はNピクセルを超えず、例えば、1ピクセルを超えない。
以下の2つの方法を使用して、動きベクトルを特定のビット幅内に制限することができる。
方法1::動きベクトルのオーバーフロー最上位ビットが除去される:
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は、画像ブロック又は画像ブロックのサブブロックの動きベクトルの水平成分を表す;vyは、画像ブロック又は画像ブロックのサブブロックの動きベクトルの垂直成分を表す;x、y、及びzは、MVクランププロセスclip3の3つの入力値に対応する;そして、clip3は、zの値を範囲[x、y]にクリッピングすることを示すように規定される。
図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に結合された光/電気(optical-to-electrical)構成要素及び電気/光(electrical-to-optical)(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, TCAM)、及び/又はスタティックランダムアクセスメモリ(SRAM)であってもよい。
図5は、例示的な一実施形態による図1Aの送信元装置12及び宛先装置14のいずれか又は両方(two)として使用することができる機器500の簡略化したブロック図である。機器500は、本願の技術を実施することができる。換言すると、図5は、本願の一実施形態による符号化装置又は復号化装置(略してコーディング装置500)の実施態様の概略ブロック図である。コーディング装置500は、プロセッサ510、メモリ530、及びバスシステム550を含み得る。プロセッサ及びメモリは、バスシステムを介して接続される。メモリは、命令を格納するように構成される。プロセッサは、メモリに格納した命令を実行するように構成される。コーディング装置のメモリはプログラムコードを格納し、プロセッサは、メモリに格納したプログラムコードを呼び出して、本願で説明する様々なビデオ符号化又は復号化方法、特に様々な新しい復号化方法を実行することができる。繰り返しを避けるために、ここでは詳細を説明しない。
本願のこの実施形態では、プロセッサ510は、中央処理装置(Central Processing Unit、略して「CPU」)であり得るか、又はプロセッサ510は、別の汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPBGA)又は別のプログラマブル論理装置、ディスクリートゲート又はトランジスタ論理装置、ディスクリートハードウェアコンポーネント等であり得る。汎用プロセッサは、マイクロプロセッサであり得るか、又は任意の従来のプロセッサ等であり得る。
メモリ530は、読取り専用メモリ(ROM)装置又はランダムアクセスメモリ(RAM)装置を含み得る。任意の他の適切なタイプの記憶装置をメモリ530として代替的に使用することができる。メモリ530は、プロセッサ510によってバス550を介してアクセスされるコード及びデータ531を含み得る。メモリ530は、オペレーティングシステム533及びアプリケーションプログラム535をさらに含み得る。アプリケーションプログラム535は、プロセッサ510が本願で説明するビデオ符号化又は復号化方法(特に、本願で説明する復号化方法)を実行するのを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム535は、アプリケーション1~Nを含み得、さらに、本願で説明するビデオ符号化又は復号化方法を実行するために使用されるビデオ符号化又は復号化アプリケーション(略してビデオコーディングアプリケーション)を含む。
バスシステム550は、データバスを含むだけでなく、電力バス、制御バス、ステータス信号バス等も含むことができる。しかしながら、明確な説明のために、図中の様々なタイプのバスは、バスシステム550としてマークされる(mark:表される)。
オプションで、コーディング装置500は、1つ又は複数の出力装置、例えばディスプレイ570をさらに含み得る。一例では、ディスプレイ570は、ディスプレイと、タッチ入力を動作可能に感知するタッチ感知要素とを組み合わせたタッチ感知ディスプレイであり得る。ディスプレイ570は、バス550を介してプロセッサ510に接続され得る。
以下では、本願の実施形態における解決策について詳細に説明する。
ビデオコーディング規格では、画像のフレームは、互いに重なり合わないコーディングツリーユニット(CTU)にパーティション分割される。CTUのサイズは、64×64に設定され得る(CTUのサイズは、代替的に、別の値に設定され得、例えば、CTUのサイズは、128×128又は256×256に増大される)。64×64CTUは、64行を有する長方形のピクセルマトリックスであり、各行には64ピクセルが含まれ、各ピクセルにはルマ成分又は/及びクロマ成分が含まれる。CTUは、コーディングツリーユニット(coding tree unit)を表す。1つの画像は複数のCTUを含み、1つのCTUは、一般に、1つの正方形の画像領域に対応し、画像領域にルマピクセル及びクロマピクセルを含む(又はルマピクセルのみを含み得る、又はクロマピクセルのみを含み得る)。CTUは、構文要素をさらに含む。これらの構文要素は、CTUを少なくとも1つのコーディングユニット(coding unit, CU)に分割する方法、及び再構成画像を取得するために各コーディングユニットを復号化するための方法を示す。
CUは、コーディングユニットを表す。CUは、一般に、A×B長方形領域に対応し、A×Bルマピクセルと、A×Bルマピクセルに対応するクロマピクセルとを含む。Aは長方形の幅を表し、Bは長方形の高さを表し、A及びBは、同じであっても、異なっていてもよい。A及びBの値は、一般に、整数の2乗、例えば、256、128、64、32、16、8、及び4である。コーディングユニットに対して復号化処理を実行して、A×Bの長方形の領域の再構成画像を取得することができる。復号化処理は、一般に、予測画像及び残余を生成するための、予測、量子化解除、及び逆変換等の処理を含む。予測画像及び残余を加算して、再構成画像を取得する。
四分木(QT, Quad-Tree)はツリー構造である。1つのノードが4つの子ノードに分割され得る。ビデオコーディング規格では、四分木ベースのCTU分割モードが使用される。CTUはルートノードとして機能し、各ノードは正方形の領域に対応する。具体的には、正方形の領域を、同じサイズを有する4つの正方形の領域に分割する(分割によって得られる正方形の領域の長さ及び幅は、それぞれ、分割前の領域の長さ及び幅の半分になる)。図6(a)に示されるように、各領域は1つのノードに対応する。ノードをそれ以上分割できない場合がある(この場合に、そのノードに対応する領域はCUである)、又は、そのノードは、QT、BT、TT、又はEQTによって下位レベルのノードにさらに分割される。
二分木(BT, Binary Tree)はツリー構造である。1つのノードが2つの子ノードに分割され得る。2つの子ノードへの分割は、次の2つの方法:(1)水平二分木分割:図6(b)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域(上部領域及び下部領域)に分割し、各領域は1つのノードに対応する;又は(2)垂直二分木分割:図6(c)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域(左側領域、及び右側領域)に分割し、各領域は1つのノードに対応する;のいずれかで実行できる。二分木分割コーディング方式では、二分木構造内のノードを分割できない場合がある(この場合に、そのノードに対応する領域はCUである)、又はそのノードは、BT、TT、又はEQTによって下位レベルのノードにさらに分割される。
三分木(triple-tree、略してTT)はツリー構造である。1つのノードが3つの子ノードに分割され得る。既存の三分木ベースのコーディング方式では、三分木構造内のノードは分割されないか、又はそのノードは3つの下位レベルのノードに分割される場合がある。3つのノードへの分割は、次の2つの方法:(1)水平三分木分割:図6(d)に示されるように、ノードに対応する領域を3つの領域(上部領域、中間領域、下部領域)に分割し、各領域は1つのノードに対応し、3つの領域の高さは、それぞれ、ノードの高さの1/4、1/2、及び1/4である;又は(2)垂直三分木分割:図6(e)に示されるように、ノードに対応する領域を3つの領域(左側領域、中間領域、及び右側領域)に分割し、各領域は1つのノードに対応し、3つの領域の幅は、それぞれ、ノードの高さの1/4、1/2、及び1/4である;のいずれかで実行できる。三分木分割コーディング方式では、三分木構造内のノードを分割できない場合がある(この場合に、そのノードに対応する領域はCUである)、又はそのノードは、BT、TT、又はEQTによって下位レベルのノードにさらに分割される。
拡張四分木(EQT, Extended Quad-Tree)は、「I」字形状の分割構造である。1つのノードが4つの子ノードに分割され得る。3つのノードへの分割は、次の2つの方法:(1)水平四分木分割:図6(f)に示されるように、ノードに対応する領域を3つの領域(上部領域、中間領域、下部領域)に分割し、各領域は1つのノードに対応し、上部領域、左側の中間領域、右側の中間領域、及び下部領域の3つの領域の高さは、それぞれ、ノードの高さの1/4、1/2、1/2、及び1/4であり、左側の中間領域の幅及び右側の中間領域の幅は、それぞれ、ノードの高さの1/2、及び1/2である;又は(2)垂直四分木分割:図6(g)に示されるように、ノードに対応する領域を3つの領域(左側領域、上部の中間領域、下部の中間領域、及び右側領域)に分割し、各領域は1つのノードに対応し、左側領域、中間領域、及び右側領域の3つの領域の幅は、それぞれ、ノードの高さの1/4、1/2、1/2、及び1/4であり、上部の中間領域及び下部の中間領域の幅は、それぞれ、ノードの高さの1/2、及び1/2である;のいずれかで実行できる。拡張四分木コーディング方式では、拡張四分木構造内のノードを分割できない場合があるか、又はノードは、BT、TT、又はEQTによって下位レベルのノードにさらに分割される。
ビデオ復号化(video decoding)は、特定の構文規則及び処理方法に従って、ビデオビットストリームを再構成画像に復元する処理プロセスである。
ビデオ符号化(video encoding)は、画像シーケンスをビットストリームに圧縮する処理プロセスである。
ビデオコーディング(video coding)は、ビデオ符号化及びビデオ復号化の総称である。ビデオコーディングの中国語訳は、ビデオ符号化の中国語訳と同じである。
VTMは、JVETによって開発された新しいコーデック参照ソフトウェアである。
ビデオコーディング規格では、画像のフレームは、互いに重なり合わないコーディングツリーユニット(CTU)にパーティション分割される。CTUのサイズは、64×64に設定され得る(CTUのサイズは、代替的に、別の値に設定され得、例えば、CTUのサイズは、128×128又は256×256に増大される)。64×64CTUは、64行を有する長方形のピクセルマトリックスであり、各行には64ピクセルが含まれ、各ピクセルには、ルマ成分又は/及びクロマ成分が含まれる。
四分木(quad-tree、略してQT)ベースのCTU分割方法が使用され、CTUは四分木のルート(root)ノードとして機能し、CTUは四分木分割モードでいくつかのリーフノード(leaf node)に再帰的に分割される。1つのノードは1つの画像領域に対応する。ノードが分割されていない場合に、そのノードはリーフノードと呼ばれ、ノードに対応する画像領域が1つのCUを形成する。ノードがさらに分割される場合に、ノードに対応する画像領域は、同じサイズを有する4つの領域に分割され(4つの領域の長さ及び幅はそれぞれ分割前の領域の長さ及び幅の半分になる)、各領域は1つのノードに対応する。これらのノードがさらに分割されるかどうかは、個別に決定する必要がある。ノードがさらに分割されるかどうかは、ビットストリーム内にあり且つノードに対応する分割フラグsplit_cu_flagによって示される。ルートノードの四分木深度(qtDepth)は0であり、子ノードの四分木深度は親ノードの四分木深度に1を加えたものである。説明を簡潔にするために、以下では、ノードのサイズ及び形状は、ノードに対応する画像領域のサイズ及び形状である。
より具体的には、64×64CTUノード(四分木深度が0である)の場合に、64×64CTUノードは、64×64CTUノードに対応するsplit_cu_flagに基づいて分割することができず、CTUノードは、1つの64×64CUを形成する;又は、64×64CTUノードは4つの32×32ノードに分割される(四分木深度は1である)。4つの32×32ノードのそれぞれは、ノードに対応するsplit_cu_flagに基づいて、さらに分割される場合、又はさらに分割されない場合がある。1つの32×32ノードをさらに分割すると、4つの16×16ノードが生成される(四分木深度は2である)。類推により、分割は全てのノードがそれ以上分割されなくなるまで続き、そのようなCTUはCUのグループに分割される。CUの最小サイズ(size)はSPSで識別され、例えば、8×8はCUの最小サイズを表す。前述の再帰的分割プロセスでは、ノードのサイズが最小CUサイズ(minimum CU size)に等しい場合に、デフォルトでは、ノードはそれ以上分割されず、ノードの分割フラグをビットストリームに含める必要はない。
構文解析によって、ノードがリーフノードであると分かった後に、リーフノードはCUであり、及びCUに対応するコーディング情報(例えば、CUの予測モード及び変換係数等の情報、例えばcoding_unit()構文構造を含む)がさらに解析される。次に、コーディング情報に基づいて、予測、量子化解除、逆変換、ループフィルタ処理等の復号化処理が、CUに対して実行され、CUに対応する再構成画像が生成される。CTUは、四分木構造を使用して、ローカル画像の特徴に基づいて適切なサイズを有するCUのグループに分割され得る。例えば、滑らかな領域はより大きなCUに分割され、テクスチャの豊富な領域はより小さなCUに分割される。
CTUがCUのグループに分割される分割モードは、コーディングツリー(coding tree)に対応する。CTUに使用すべき特定のコーディングツリーは、通常、エンコーダのレート歪み最適化(rate distortion optimization, RDO)技術に基づいて決定される。エンコーダは、複数のCTU分割モードを使用するように試行し、各分割モードは1つのレート歪みコスト(RD cost)に対応する。エンコーダは、使用が試みられていた様々な分割モードのRDコストを比較し、CTUの実際のコーディングのためのCTUの最適な分割モードとして、RDコストが最小の分割モードを使用する。エンコーダが使用しようとしていたCTU分割モードは、デコーダがCTU分割モードを正しく識別できるように、デコーダによって指定された分割規則に準拠する必要がある。
画面(screen)コンテンツビデオでは、画像は、通常、同じコンテンツを含む。例えば、数字又はグラフィックスを含む画像では、図7に示されるように、同じ数字又は同じグラフィックスが現在のブロックの周りに見出され得る。従って、参照可能なブロックが現在のブロックのコーディング中に現在のブロックの周りに見つかった場合に、そのブロックの再構成したピクセルが直接参照される。このようにして、コーディング圧縮率が大幅に向上する。イントラブロックコピー(Intra Block Copy, IBC)技術は、現在の画面コンテンツで同じブロックを検索するために使用されるイントラ予測技術である。例えば、表2の構文要素pred_mode_ibc_flagを使用して、IBC予測モードが現在のコーディングユニットに使用されるかどうかを示すことができる。
四分木分割に基づいて、二分木(binary-tree、略してBT)分割モード及び拡張四分木(Extended Quad-Tree、略してEQT)分割モードをさらに使用することができる。
1つのノードは、二分木分割によって2つの子ノードに分割される。具体的には、2つの二分木分割モードがある:
(1)水平二分木分割:図6(b)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域に分割し(つまり、幅は変更されず、高さは分割前の領域の高さの半分になる)、各領域は1つのノードに対応する;及び
(2)垂直二分木分割:図6(c)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域(左側領域、及び右側領域)に分割する(つまり、高さは変更されず、幅は分割前の領域の幅の半分になる)。
1つのノードは、拡張四分木分割によって4つの子ノードに分割される。具体的には、2つの拡張四分木分割モードがある:
(1)水平四分木分割:図6(f)に示されるように、ノードに対応する領域を、3つの領域(上部領域、中間領域、下部領域)に分割し、各領域は1つのノードに対応し、上部領域、左側の中間領域、右側の中間領域、及び下部領域の高さは、それぞれ、ノードの高さの1/4、1/2、1/2、及び1/4であり、左側の中間領域の幅及び右側の中間領域の幅は、それぞれ、ノードの高さの1/2、及び1/2である;及び
(2)垂直四分木分割:図6(g)に示されるように、ノードに対応する領域を3つの領域(左側領域、上部の中間領域、下部の中間領域、及び右側領域)に分割し、各領域は1つのノードに対応し、左側領域、中間領域、及び右側領域の幅は、それぞれ、ノードの高さの1/4、1/2、1/2、及び1/4であり、上部の中間領域の幅と下部の中間領域の幅は、それぞれ、ノードの高さの1/2、及び1/2である。
QTプラスBT/EQT分割モードは、第1レベルのコーディングツリー内のノードがQTのみによって子ノードに分割できること、第1レベルのコーディングツリー内のリーフノードが第2レベルのコーディングツリーのルートノードであること、第2レベルのコーディングツリー内のノードをBT又はEQTによって子ノードに分割できること、及び第2レベルのコーディングツリー内のリーフノードがコーディングユニットであることを意味する。BT又はEQT分割モードをリーフノードに使用する場合に、BT又はEQT分割モードのみがリーフノードに使用され、QT分割モードをリーフノードに使用することは許可されないことに留意されたい。
あるいはまた、四分木分割に基づいて、二分木(binary-tree、略してBT)分割モード及び三分木(triple-tree、略してTT)分割モードをさらに使用することができる。
1つのノードは、二分木分割によって2つの子ノードに分割される。具体的には、2つの二分木分割モードがある:
(1)水平二分木分割:図6(b)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域に分割し(つまり、幅は変更されず、高さは分割前の領域の高さの半分になる)、各領域は1つのノードに対応する;及び
(2)垂直二分木分割:図6(c)に示されるように、ノードに対応する領域を同じサイズを有する2つの領域(左側領域、及び右側領域)に分割する(つまり、高さは変更されず、幅は分割前の領域の幅の半分になる)。
1つのノードは、三分木分割によって2つの子ノードに分割される。具体的には、2つの二分木分割モードがある:
(1)水平三分木分割:図6(d)に示されるように、ノードに対応する領域を3つの領域(上部領域、中間領域、下部領域)に分割し、各領域は1つのノードに対応し、上部領域、中間領域、及び下部領域の高さは、それぞれ、ノードの高さの1/4、1/2、及び1/4である;及び
(2)垂直三分木分割:図6(e)に示されるように、ノードに対応する領域を3つの領域(左側領域、中間領域、右側領域)に分割し、各領域は1つのノードに対応し、左側領域、中間領域、及び右側領域の幅は、それぞれ、ノードの高さの1/4、1/2、及び1/4である。
簡潔にQT-BTTと呼ばれる、QTプラスBT/TT分割モードは、第1レベルのコーディングツリー内のノードをQTのみによって子ノードに分割できること、第1レベルのコーディングツリー内のリーフノードが第2レベルのコーディングツリーのルートノードであること、第2レベルのコーディングツリー内のノードを4つの分割モード(水平二分木分割、垂直二分木分割、水平三分木分割、垂直三分木分割)のうちの1つによって子ノードに分割できること、及び第2レベルのコーディングツリー内のリーフノードがコーディングユニットであることを意味する。
CUレベルの構文構造の一部が表1に示され得る。現在のノードが子ノードにさらに分割されない場合に、現在のノードはコーディングユニットであり、コーディングユニットの予測ブロックは、以下の構文構造に基づいて解析される。
skip_flagは、スキップモードのフラグを表す。skip_flagの値が1である場合に、それは、スキップモードが現在のCUに使用されることを示し、又はskip_flagの値が0である場合に、それは、スキップモードが現在のCUに使用されないことを示す。
merge_flagは、直接モードのフラグを表す。merge_flagの値が1である場合に、それは、マージモードが現在のCUに使用されることを示し、又はmerge_flagの値が0である場合に、マージモードが現在のCUに使用されないことを示す。
cu_pred_modeは、コーディングユニットの予測モードフラグを表す。cu_pred_modeの値が1である場合に、それは、イントラ予測モードが現在の予測ユニットに使用されることを示し、又はcu_pred_modeの値が0である場合に、それは、共通のインター予測モードが現在の予測ユニットに使用されることを示す。
CUレベルの構文構造の一部は、代替的に表2に示され得る。表2は単なる例である。表2のcu_skip_flagの意味は、表1のskip_flagの意味と同じであり、表2のpred_mode_flagの意味は、表1のcu_pred_modeの意味と同じである。
cu_skip_flagは、スキップモードのフラグを表す。cu_skip_flagの値が1である場合に、それは、スキップモードが現在のCUに使用されることを示し、又はcu_skip_flagの値が0である場合に、それは、スキップモードが現在のCUに使用されないことを示す。
general_merge_flagは、マージモードのフラグを表す。general_merge_flagの値が1である場合に、それは、マージモードが現在のCUに使用されることを示し、又はgeneral_merge_flagの値が0である場合に、それは、マージモードが現在のCUに使用されないことを示す。
pred_mode_flagは、コーディングユニットの予測モードフラグを表す。pred_mode_flagの値が1である場合に、それは、イントラ予測モードが現在のコーディングユニットに使用されることを示し、又はpred_mode_flagの値が0である場合に、それは、共通のインター予測モードが現在のコーディングユニットに使用されることを示す。pred_mode_flagの値が1である場合に、CuPredMode [x0] [y0]はMODE_INTRAである。pred_mode_flagの値が0である場合に、CuPredMode [x0] [y0]はMODE_INTERである。
pred_mode_ibc_flagの値が1である場合に、それは、IBC予測モードが現在のコーディングユニットに使用されることを示し、又はpred_mode_ibc_flagの値が0である場合に、それは、IBC予測モードが現在のコーディングユニットに使用されないことを示す。pred_mode_ibc_flagの値が1である場合に、CuPredMode [x0] [y0]はMODE_IBCである。
CuPredMode [x0] [y0]は、現在のコーディングユニットの予測モードを表し、(x0、y0)は、現在の画像における現在のコーディングユニットの位置を表す。
垂直二分木分割(又は水平二分木分割)によって8×M(又はM×8)のサイズを有するノードを分割することによって、それぞれ4×M(又はM×4)のサイズを有する2つの子ノードが生成される。同様に、垂直拡張四分木分割(又は水平拡張四分木分割)によって16×M(又はM×16)のサイズを有するノードを分割することによって、それぞれ4×M(又はM×4)のサイズを有する4つの子ノード及び8×M(又はN×8)のサイズを有する1つの子ノードが生成される。同様に、垂直三分木分割(又は水平三分木分割)によって16×M(又はM×16)のサイズを有するノードを分割することによって、それぞれ4×M(又はM×4)のサイズを有する2つの子ノード及び8×M(又はN×8)のサイズを有する1つの子ノードが生成される。YUV4:2:0のデータ形式の場合に、クロマ成分の解像度は、ルマ成分の解像度の1/2である。換言すると、1つの4×Mノードには、1つの4×Mルマブロック及び2つの2×(M/2)クロマブロックが含まれる。ハードウェアデコーダの場合に、小さなブロック(特に、2×2、2×4、又は2×8のサイズを有する小さなブロック)を処理するコストは比較的高くなる。ただし、2×2又は2×4のサイズを有する小さなブロックが、このような分割モードにおいて生成される。これは、ハードウェアデコーダの実装には不利である。ハードウェアデコーダが小さなブロックを処理するのは比較的複雑である。複雑さは、以下の3つの態様に特に反映される。
(1)イントラ予測:処理速度を上げるために、ハードウェアは、一般に、イントラ予測中に一度に16ピクセルを処理するように設計される。ただし、2×2、2×4、又は4×2等のサイズを有する小さなブロックには16ピクセル未満のピクセルが含まれる。その結果、イントラ予測の処理性能が低下する。
(2)係数コーディング:HEVCでは、変換係数コーディングは、16個の係数を含む係数グループ(coefficient group, CG)に基づいて実行される。ただし、2×2、2×4、又は4×2等のサイズを有する小さなブロックには、4つ又は8つの変換係数が含まれる。その結果、これらの小さなブロックの係数コーディングをサポートするには、4つの係数又は8つの係数を含む係数グループを追加する必要がある。その結果、実装の複雑さが増大する。
(3)インター予測:小さなブロックのインター予測には、データ帯域幅に関して比較的高い要件がある。その結果、復号化処理速度が影響を受ける。
子ノードが、分割モードでノードをさらに分割することによって生成される子ノードに一辺の長さが2であるクロマブロックを含む場合に、子ノードに含まれるルマブロックは、分割モードでさらに分割され、子ノードに含まれるクロマブロックはそれ以上分割されない。このようにして、一辺の長さが2であるクロマブロックは生成されない。これにより、デコーダの最大スループットレートが低下し、デコーダの実装に有利になる。さらに、ルマブロック予測モードに基づいてクロマブロック予測モードを決定する方法が提供され、それによって、符号化効率が効果的に向上する。
本願で提供される画像予測方法は、図8に示されるビデオエンコーダ18又はビデオデコーダ24に使用され得る。以下のいくつかの実施形態における1つ又は複数のステップは、ビデオデコーダ24のみで実行され、特に、以下の対応する部分で説明することに留意されたい。
以下では、特定の実施形態を使用して、本願における画像予測方法を詳細に説明する。以下のいくつかの特定の実施形態は互いに組み合わせることができ、同じ又は類似の内容を異なる実施形態で繰り返し説明しないことに留意されたい。
図9は、本願の一実施形態による第1の画像予測方法の概略フローチャートである。図9を参照すると、この実施形態で提供される画像予測方法は、以下のステップを含む。
ステップ101:現在のノードの分割モードを取得する。
この実施形態では、現在のノードの分割情報が最初に解析され、分割情報は、現在のノードを分割するか又は分割しないかを示すために使用される。分割情報が現在のノードを分割することを示している場合に、現在のノードの分割モードが取得される。現在のノードの分割モードには、四分木分割、垂直二分木分割、水平二分木分割、垂直三分木分割、及び水平三分木分割のうちの少なくとも1つが含まれる。確かに、別の分割モードがあり得る。これは、この実施形態では特に限定されない。
現在のノードの分割情報は、ビットストリームで送信され得る。現在のノードの分割情報は、ビットストリーム内の対応する構文要素から解析され得、特定の分割モードが決定され得る。あるいはまた、現在のノードの分割モードは、別の予め設定した規則に従って決定され得る。これは、この実施形態では特に限定されない。
この実施形態では、現在のノードに関するものであり且つ構文解析によって取得される分割情報が、現在のノードを分割することを示すために使用される場合に、分割情報は、具体的には、現在のノードに含まれるルマブロックの分割モード、及び/又は現在のノードに含まれるクロマブロックの分割モードを含む。現在のノードに含まれるルマブロックの分割モードは、現在のノードに含まれるクロマブロックの分割モードと同じでもよく、又は異なっていてもよい。これは、この実施形態では特に限定されない。例えば、分割情報は、現在のノードのルマブロックとクロマブロックとの両方に四分木分割が使用されることを示すために使用される。あるいはまた、分割情報は、四分木分割が現在のノードのルマブロックに使用され、垂直二分木分割が現在のノードのクロマブロックに使用されることを示すために使用される。
ステップ102:分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されるかどうかを判定する。
予め設定したサイズを有する画像ブロックは、しきい値未満のサイズを有するルマブロックであり得る。しきい値は、128、64、又は32等のルマサンプルの数量、又は32、16、又は8等のクロマサンプルの数量であり得る。現在のノードのサイズは、しきい値以上であり得る。
分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されると判定された場合に、ステップ103が実行される。分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されないと判定された場合に、ステップ104が実行される。
ステップ103:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行する。
この実施形態における現在のノードは、処理すべきノード又は分割すべきノードに対応する画像領域又は画像ブロックとして理解され得ることに留意されたい。現在のノードによってカバーされる全てのコーディングブロックは、現在のノードに対応する領域に位置する全てのコーディングブロックとして理解され得る。この実施形態における全てのコーディングブロックは、現在のノードを分割するか又は分割しないことによって取得されるルマコーディングブロック及びクロマコーディングブロックを含む。あるいはまた、コーディングブロックは、コーディングユニット(coding unit)であり得る。
オプションで、実行されるイントラ予測は、一般的なイントラ予測モード(intra mode)又はIBC(intra block copy)モードであり得る。
オプションで、現在のノードが位置するスライスのタイプ(slice type)がイントラ(Intra)タイプである場合に、インター予測の代わりに、イントラ予測が、現在のノードによってカバーされる全てのコーディングブロックに対して実行される。
実施態様において、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するステップは、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測を実行するステップと;現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行するステップと;を含み得る。
換言すると、現在のノードの全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックは分割されず、1つのクロマコーディングブロック(略してクロマCB)が取得される。
N個のルマコーディングツリーノードがそれ以上分割されないと制限され得るか、又はこれは制限されない。ルマコーディングツリーノードがさらに分割される場合に、ルマコーディングツリーノードの分割モードが再帰的分割のために解析される。ルマコーディングツリーノードがそれ以上分割されない場合に、ルマコーディングツリーノードは1つのルマコーディングブロック(略してルマCB)に対応する。ルマCBに対してイントラ予測を実行して、ルマCBに対応するルマ予測ブロックが取得される。
クロマCBに対してイントラ予測を実行して、クロマCBに対応するクロマ予測ブロックが取得される。クロマ予測ブロック及びクロマCBは同じサイズである。
実施態様において、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行するステップは、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測を実行するステップと;現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測を実行するステップと;を含み得る。
換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックは分割されず、1つのクロマコーディングブロック(略してクロマCB)が取得される。
この実施形態では、現在のノードの全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、又は現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードに含まれるルマブロックは現在のノードの分割モードで分割され、現在のノードのクロマブロックはそれ以上分割されない。上記の方法によれば、イントラ予測が実行される小さなクロマブロックは生成されないため、小さなクロマブロックに対してイントラ予測を実行するケースは回避される。
実施態様において、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行するステップは、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測を実行するステップと;分割モードにおいて、現在のノードに含まれるクロマブロックを分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測を実行するステップと;を含み得る。
換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックをクロマブロックの分割モードで分割して、M個のクロマコーディングツリーノードが取得される。N及びMは正の整数であり、N及びMは、同じでもよく、又は異なっていてもよい。N個のルマコーディングツリーノード及びM個のクロマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。それ以上の分割が実行されない場合に、N個のルマコーディングツリーノードは現在のノードのN個のルマCBに対応し、M個のクロマコーディングツリーノードは現在のノードのM個のクロマCBに対応する。N個のルマCBに対してインター予測を実行して、対応するルマ予測ブロックが取得され、M個のクロマCBに対してインター予測を実行して、対応するクロマ予測ブロックが取得される。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行するステップは、
現在のノードの子ノードの分割サブモードを取得するステップであって、子ノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;分割サブモードで現在のノードの子ノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップと;分割サブモードで現在のノードの子ノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、分割サブモード以外の分割モードで現在のノードの子ノードを分割して、対応するコーディングブロックを取得し、対応するコーディングブロックに対してインター予測を実行するステップ;又は、現在のノードの子ノードをコーディングブロックとして使用し、現在のノードの子ノードに対してインター予測を実行するステップ;を含み得る。
換言すると、分割サブモードで現在のノードの子ノードを分割することによって、第1の予め設定したサイズ(4×4)を有するルマブロックが生成される場合に、子ノードの分割サブモードは許可されない、又は子ノードをそれ以上分割することは許可されない、又は子ノードは分割サブモード以外の分割モードで分割される。例えば、現在のノードのサイズが8×8であり、水平二分木分割(又は垂直二分木分割)によって2つの8×4(又は4×8)ノードが生成される場合に、8×4(又は4×8)ノードをさらに分割すると、4×4ブロックが生成される。この場合に、8×4(又は4×8)ノードをそれ以上分割することは許可されない。
ステップ104:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは制限されない。
具体的には、現在のノードのルマブロックは、現在のノードのルマブロックの分割モードで分割され、現在のノードのクロマブロックは、現在のノードのクロマブロックの分割モードで分割される。
ステップ104の「現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは制限されない」は、以下のように理解され得ることに留意されたい:現在のノードによってカバーされる全てのコーディングブロックは同じ予測モードで予測されない可能性がある、すなわち、各コーディングブロックの予測モードが解析され、各コーディングブロックは、解析によって得られた予測モードで予測される。
オプションで、ステップ103又はステップ104の後に、この方法は以下をさらに含む。
ステップ105:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ106:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
前述の2つのステップは、図8に示されるビデオデコーダ24に使用され得ることに留意されたい。
予測ブロックには、(イントラ予測モード又は非イントラ予測モードを示す)予測モード、イントラ予測モード、インター予測モード、動き情報等が含まれる。動き情報は、予測方向(順方向、逆方向、又は双方向(bidirectional direction))、参照フレームインデックス(reference index)、及び動きベクトル(motion vector)等の情報を含み得る。
残余情報には、コーディングしたブロックフラグ(coded block flag, cbf)、変換係数、変換タイプ(DCT-2、DST-7、又はDCT-8等)等が含まれる。変換タイプは、デフォルトでDCT-2であり得る。
現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測のみを実行するように制限される場合に、現在のノードを分割することによって得られたルマCBの予測ブロックを解析するステップは、skip_flagの値、merge_flagの値、及びcu_pred_modeの値をデフォルトでそれぞれ0、0、及び1に設定する(つまり、skip_flag、merge_flag、及びcu_pred_modeは全てビットストリームに存在しない)ステップ、又はskip_flagの値、及びcu_pred_modeの値をデフォルトでそれぞれ0、及び1に設定する(つまり、skip_flagとcu_pred_modeとは両方ともビットストリームに存在しない)ステップ;ルマCBのイントラ予測モードに関する情報を解析するステップと;を含む。現在のノードを分割することによって得られたクロマCBの予測ブロックを解析するステップは、クロマCBのイントラ予測モードを解析するステップを含む。クロマCBのイントラ予測モードは、以下の方法:(1)ビットストリーム内の構文要素を解析して、イントラ予測モードを取得する;又は(2)線形モデルモード、DMモード(chroma derived mode, DM)、IBCモード等のクロマイントラ予測モードのセットにおいて、イントラ予測モードを1つのイントラ予測モードに直接設定する;に従って解析することができる。
現在のノードによってカバーされる全てのコーディングブロックに対してインター予測のみを実行するように制限される場合に、現在のノードを分割することによって得られたCUの予測モードを解析するステップは、skip_flag又は/及びmerge_flagを解析し、cu_pred_modeの値をデフォルトで0に設定し、マージインデックス(merge index)、インター方向(inter dir)、参照インデックス(reference index)、動きベクトル予測子インデックス(motion vector predictor index)、及び動きベクトル差(motion vector difference)等のインター予測ブロックを解析するステップを含む。
skip_flagは、スキップモードのフラグである。skip_flagの値が1である場合に、それは、スキップモードが現在のCUに使用されることを示し、又はskip_flagの値が0である場合に、それは、スキップモードが現在のCUに使用されないことを示す。merge_flagは、マージモードのフラグである。merge_flagの値が1である場合に、それは、マージモードが現在のCUに使用されることを示し、又はmerge_flagの値が0である場合に、それは、マージモードが現在のCUに使用されないことを示す。cu_pred_modeは、コーディングユニットの予測モードフラグを表す。cu_pred_modeの値が1である場合に、それは、現在の予測ユニットに対してイントラ予測が実行されることを示し、又はcu_pred_modeの値が0である場合に、それは、現在の予測ユニットに対して共通のインター予測(ビットストリーム内のインター方向、参照インデックス、動きベクトル予測子インデックス、及び動きベクトル差等の情報を識別する)が実行されることを示す。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測のみを実行するように制限される場合に、現在のノードを分割することによって得られたルマCBの予測ブロックを解析するステップは、skip_flag又は/及びmerge_flagを解析し、値cu_pred_modeをデフォルトで0に設定し、マージインデックス(merge index)、インター方向(inter dir)、参照インデックス(reference index)、動きベクトル予測子インデックス(motion vector predictor index)、及び動きベクトル差(motion vector difference)等のインター予測ブロックを解析するステップを含む。ルマCB内の各4×4サブブロックの動き情報は、解析によって得られたインター予測ブロックに基づいて導き出される。現在のノードによってカバーされる全てのコーディングブロックに対してインター予測のみを実行するように制限される場合に、現在のノードを分割することによって得られたクロマCBの予測ブロックを解析する必要はない。クロマCBは2×2クロマサブブロックに分割される(分割モードは分割モードSであり得る)。各2×2クロマサブブロックの動き情報は、各2×2クロマサブブロックに対応する4×4ルマ領域の動き情報である。前述の分割モードにおいて、イントラ予測が実行される小さなクロマブロックは生成されず、16ピクセル未満のサイズを有する変換ブロックも生成されない。従って、前述のインター予測の問題及び係数コーディングの問題は克服される。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測のみを実行するように制限される場合に、現在のノードを分割することによって得られたクロマCBの予測ブロックを解析する必要はない。クロマ予測ブロック及びクロマコーディングブロックは同じサイズである。クロマCBの動き情報は、クロマCBに対応するルマ領域の予め設定した位置(例えば、ルマ領域の中間、右下隅、又は左上隅)の動き情報である。前述の分割モードにおいて、イントラ予測が実行される小さなクロマブロックは生成されず、小さな変換ブロックも生成されず、及びインター予測が実行される小さなクロマブロックも生成されない。
この実施形態では、イントラ予測モードは、コーディングブロックが位置する画像の空間ドメイン参照ピクセルを使用して、コーディングブロックの予測子が生成される予測モードであることに留意されたい。例えば、イントラ予測モードは、直接的な現在のモード(direct current mode, DC mode)、平面モード(Planar mode)、角度モード(angular mode)、テンプレートマッチングモード(template matching mode)、又はIBCモードである。インター予測モードは、コーディングブロックの参照画像の時間的ドメイン参照ピクセルを使用して、コーディングブロックの予測子が生成される予測モードである。例えば、インター予測モードは、スキップモード(Skip mode)、マージモード(Merge mode)、又はAMVP(advanced motion vector prediction)モード(これは、共通インターモードとも呼ばれる)である。
コーディングブロックの予測ブロックに基づいて、各コーディングブロックに対してインター予測又はイントラ予測を実行して、コーディングブロックのインター予測画像又はイントラ予測画像が取得される。次に、各コーディングブロックの残余情報に基づいて、変換係数に対して量子化解除及び逆変換処理を実行して残余画像を取得し、残余画像を対応する領域の予測画像に加算して再構成画像を生成する。
オプションで、可能な実施態様では、予め設定したサイズを有する画像ブロックは、第1の予め設定したサイズを有するルマブロックを含み、従って、ステップ102は、
現在のノードのルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップを含み、第1の予め設定したサイズを有するルマブロックは、4×4のピクセルサイズを有するルマブロックである。
現在のノードのルマブロックの分割モードで現在のノードのルマブロックを分割することによって、第1の予め設定したサイズを有するルマブロックが取得される場合に、従って、ステップ103は、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するステップを含む。
現在のノードのルマブロックの分割モードで現在のノードのルマブロックを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されない場合に、従って、ステップ104は、現在のノードのルマブロックの分割モードで現在のノードのルマブロックを分割し、現在のノードのクロマブロックの分割モードで現在のノードのクロマブロックを分割するステップを含み、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
オプションで、別の可能な実施態様では、予め設定したサイズを有する画像ブロックは、第2の予め設定したサイズを有するクロマブロックを含み、従って、ステップ102は、
現在のノードのクロマブロックの分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するステップを含み、第2の予め設定したサイズを有するクロマブロックは、2×2、2×4、又は4×2のピクセルサイズを有するクロマブロックである。
現在のノードのクロマブロックの分割モードで現在のノードのクロマブロックを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得される場合に、従って、ステップ103は、現在のノードによってカバーされる全てのコーディングブロックにイントラ予測又はインター予測を実行するステップを含む。
現在のノードのクロマブロックの分割モードで現在のノードのクロマブロックを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されない場合に、従って、ステップ104は、現在のノードのクロマブロックの分割モードで現在のノードのクロマブロックを分割し、現在のノードのルマブロックの分割モードで現在のノードのルマブロックを分割するステップを含み、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
この実施形態で提供される画像予測方法によれば、現在のノードの分割モードが取得され、現在のノードの分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されるかどうかが判定され、画像ブロックは、ルマブロック又はクロマブロックを含む。現在のノードの分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得される場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測が実行される。前述の方法によれば、現在のノードの全てのコーディングブロックに対してイントラ予測又はインター予測が実行されるので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、コーディング処理速度が上がる。
図9に示される実施形態に基づいて、以下の実施形態で提供される画像予測方法に従って、現在のノードのルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するプロセスについて、詳細に説明する。第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するための条件のセットを具体的に開示する。
図10は、本願の一実施形態による第2の画像予測方法の概略フローチャートである。図10に示されるように、この実施形態で提供される画像予測方法は、以下のステップを含む。
ステップ201:現在のノードの分割モードを取得する。
具体的には、現在のノードの分割情報が解析される。分割情報が現在のノードのルマブロックを分割することを示している場合に、現在のノードのルマブロックの分割モードがさらに決定される。ルマブロックの分割モードには、四分木分割、垂直二分木分割、水平二分木分割、垂直三分木分割、及び水平三分木分割のうちの少なくとも1つが含まれる。確かに、別の分割モードがあり得る。これは、この実施形態では特に限定されない。
ステップ202:現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定する。
第1の予め設定したサイズを有するルマブロックは、4×4又は8×8のピクセルサイズを有するルマブロックであり得る。
分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、ステップ203が実行される。分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されないと判定された場合に、ステップ204が実行される。
具体的には、現在のノードのサイズ及び現在のノードのルマブロックの分割モードに基づいて、ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかが判定される。
この実施形態では、現在のノードのサイズは、現在のノードに対応する画像ブロックのピクセルサイズとして理解され得る。現在のノードのサイズは、現在のノードに対応する画像ブロックの幅及び高さに基づいて決定され得るか、又は現在のノードに対応する画像ブロックの面積に基づいて決定され得るか、又は現在のノードに対応する画像ブロックのルマピクセルの数量に基づいて決定され得る。例えば、現在のノードが128個のルマピクセルを含むことは、現在のノードの面積が128であることを記述し得、現在のノードの幅と高さとの積が128であることを記述し得る。
現在のノードのサイズ及び現在のノードのルマブロックの分割モードに基づいて、ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定するステップは、以下の第1のセットの1つ又は複数の条件に基づいて実行される:
(1)現在のノードにはM1個のピクセルが含まれ、現在のノードの分割モードは四分木分割であり、例えば、M1は64である;
(2)現在のノードにはM2個のピクセルが含まれ、現在のノードの分割モードは三分木分割であり、例えば、M2は64である;
(3)現在のノードにはM3個のピクセルが含まれ、現在のノードの分割モードは二分木分割であり、例えば、M3は32である;
(4)現在のノードには64個のルマピクセルが含まれ、三分木分割(垂直三分木分割又は水平三分木分割)又は四分木分割が現在のノードに使用される;又は、現在のノードに32個のルマピクセルが含まれ、二分木分割(垂直二分木分割又は水平二分木分割)が現在のノードに使用される;
(5)現在のノードの幅は第2のしきい値の4倍であり、現在のノードの高さは第2のしきい値に等しく、現在のノードの分割モードは垂直三分木分割である;
(6)現在のノードの幅は第2のしきい値に等しく、現在のノードの高さは第2のしきい値の4倍であり、現在のノードの分割モードは水平三分木分割である;
(7)現在のノードの幅は第2のしきい値の2倍であり、現在のノードの高さは第2のしきい値に等しく、現在のノードの分割モードは垂直二分木分割である;
(8)現在のノードの高さは第2のしきい値の2倍であり、現在のノードの幅は第2のしきい値に等しく、現在のノードの分割モードは水平二分木分割である;又は
(9)現在のノードの幅又は/及び高さは第2のしきい値の2倍であり、現在のノードの分割モードは四分木分割である。
前述の第1のセットでは、現在のノードの幅は、現在のノードに対応するルマブロックの幅であり、現在のノードの高さは、現在のノードに対応するルマブロックの高さである。特定の実施態様では、例えば、第2のしきい値は4であり得る。
前述の第1のセットは、YUV4:2:0又はYUV4:2:2のビデオデータ形式に適用可能である。
オプションで、第1の予め設定したサイズを有するルマブロックが4×4のピクセルサイズを有するルマブロックである場合に、現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップは、以下の条件の1つに基づいて実行され得る:
(1)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは四分木分割である;
(2)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは三分木分割である;又は
(3)現在のノードのルマブロックのサンプルの数量が32であり、分割モードは二分木分割である。
現在のノードのルマブロックのサンプルの数量は、現在のノードに対応する画像ブロックのルマピクセルの数量(ピクセルサイズ)である。
ステップ203:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する。
ステップ203の代替の方法では、第1の予め設定したサイズを有するルマブロックのコーディングブロックのみに対してイントラ予測が実行され得、現在のノードによってカバーされる別のコーディングブロックの予測モードは制限されない。
現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するステップは、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測を実行するステップと;現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行するステップと;を含み得る。
換言すると、現在のノードの全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックは分割されず、1つのクロマコーディングブロック(略してクロマCB)が取得される。
N個のルマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。ルマコーディングツリーノードがさらに分割される場合に、ルマコーディングツリーノードの分割モードが、再帰的分割のために解析される。ルマコーディングツリーノードがそれ以上分割されない場合に、ルマコーディングツリーノードは1つのルマコーディングブロック(略してルマCB)に対応する。ルマCBに対してイントラ予測を実行して、ルマCBに対応するルマ予測ブロックが取得される。
クロマCBに対してイントラ予測を実行して、クロマCBに対応するクロマ予測ブロックが取得される。クロマ予測ブロック及びクロマCBは同じサイズである。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するステップは、
現在のノードに含まれるルマブロックをルマコーディングブロックとして使用し、ルマコーディングブロックに対してイントラ予測を実行するステップと;現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行するステップと;を含み得る。換言すると、現在のノードのルマブロックとクロマブロックとの両方をそれ以上分割できない。
ステップ204:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
この実施形態のステップ204は、図9に示される実施形態のステップ104と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
オプションで、ステップ203又はステップ204の後に、この方法は以下をさらに含む。
ステップ205:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ206:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
この実施形態のステップ205及びステップ206は、図9に示される実施形態のステップ105及びステップ106と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
この実施形態で提供される画像予測方法によれば、現在のノードの分割モードが取得される;ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかは、現在のノードのサイズ及びルマブロックの分割モードに基づいて決定される;そして、ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定される場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測が実行される。前述の方法によれば、現在のノードの全てのコーディングブロックに対してイントラ予測が実行されるので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、コーディング処理速度が上がる。
図11は、本願の一実施形態による第3の画像予測方法の概略フローチャートである。図10に示される実施形態に基づいて、図11に示されるように、図11に示される解決策は、YUV4:2:0又はYUV4:2:2のビデオデータ形式の場合、又はYUV4:2:0のみのビデオデータ形式の場合に使用される解決策であり得ることに留意されたい。分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されないと判定された場合に、ステップ204は、以下のステップを含み得る。
ステップ2041:分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定する。
分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、ステップ2042が実行される。分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されないと判定された場合に、ステップ2043が実行される。
具体的には、ステップ2041は、現在のノードのサイズ及びクロマブロックの分割モードに基づいて、クロマブロックの分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するステップを含む。第2の予め設定したサイズを有するクロマブロックは、2×2、2×4、又は4×2のピクセルサイズを有するクロマブロックであり得る。
現在のノードのサイズ及びクロマブロックの分割モードに基づいて、クロマブロックの分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定するステップは、以下の第2のセットの1つ又は複数の条件に基づいて実行される。
ビデオデータ形式がYUV4:2:2である場合に、第2のセットは以下を含む:
(1)現在のノードの少なくとも1つの子ノードのクロマブロックのサイズが2×2、2×4、又は4×2である;
(2)現在のノードの少なくとも1つの子ノードのクロマブロックの幅又は高さが2である;
(3)現在のノードには64個のルマピクセルが含まれ、現在のノードの分割モードは三分木分割又は四分木分割である;
(4)現在のノードには32個のルマピクセルが含まれ、現在のノードの分割モードは二分木分割又は三分木分割である;又は
(5)現在のノードの面積(つまり幅と高さとの積)はSであり、ここでS/2<th1であり、現在のノードの分割モードは垂直二分木分割又は水平二分木分割である;又は、現在のノードの面積(つまり幅と高さとの積)はSであり、ここで、S/4<th1であり、現在のノードの分割モードは、垂直三分木分割、水平三分木分割、又は四分木分割である。しきい値th1は32である。
ビデオデータ形式がYUV4:2:0である場合に、第2のセットは以下を含む:
(1)現在のノードの少なくとも1つの子ノードのクロマブロックのサイズが2×2、2×4、又は4×2である;
(2)現在のノードの少なくとも1つの子ノードのクロマブロックの幅又は高さが2である;
(3)現在のノードには128個のルマピクセルが含まれ、三分木分割が現在のノードに使用される;又は、現在のノードには64個のルマピクセルが含まれ、二分木分割、四分木分割、又は三分木分割が現在のノードに使用される;
(4)現在のノードには256個のルマピクセルが含まれ、三分木分割又は四分木分割がノードに使用される;又は、現在のノードには128個のルマピクセルが含まれ、二分木分割がノードに使用される;
(5)現在のノードにはN1個のルマピクセルが含まれ、三分木分割が現在のノードに使用され、N1は64、128、又は256である;
(6)現在のノードにはN2個のルマピクセルが含まれ、四分木分割が現在のノードに使用され、N2は64、又は256である;
(7)現在のノードにはN3個のルマピクセルが含まれ、二分木分割が現在のノードに使用され、N3は64、128、又は256である;又は
(8)現在のノードの面積(つまり幅と高さとの積)はSであり、ここでS/2<th1であり、現在のノードの分割モードは垂直二分木分割又は水平二分木分割である;又は、現在のノードの面積(つまり幅と高さとの積)はSであり、ここで、S/4<th1であり、現在のノードの分割モードは、垂直三分木分割、水平三分木分割、又は四分木分割である。しきい値th1は64である。
オプションで、第1の予め設定したサイズを有するルマブロックは、4×4のルマブロックであり得る。第1の予め設定したサイズを有するルマブロックが4×4のルマブロックである場合に、第2の予め設定したサイズを有するクロマブロックは、2×4のクロマブロックのピクセルサイズ又は4×2のクロマブロックのピクセルサイズであり得る(2×2のクロマブロックを除く)。
オプションで、第1の予め設定したサイズを有するルマブロックは、4×4のルマブロックであり得る。第1の予め設定したサイズを有するルマブロックが4×4のルマブロックである場合に、第2の予め設定したサイズを有するクロマブロックは、4×8のルマブロック又は8×4のルマブロックであり得る(4×4のルマブロックを除く)。
オプションで、第2の予め設定したサイズを有するクロマブロックが2×4のクロマブロック、4×2のクロマブロック、4×8のルマブロック、又は8×4のルマブロックである場合に、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するステップは、以下の条件の1つに基づいて実行され得る:
(1)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは二分木分割である;又は
(2)現在のノードのルマブロックのサンプルの数量が128であり、分割モードは三分木分割である。
ステップ2042:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行する。
現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測が実行されるかどうかは、以下の方法に従って決定され得る。
方法1:現在のノードの予測モードステータスフラグを解析する;予測モードステータスフラグの値が第1の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する;又は、予測モードステータスフラグの値が第2の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する。
この方法では、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、実際には、構文テーブル内のフラグに基づいて決定される。具体的には、予測モードステータスフラグcons_pred_mode_flagがビットストリームから解析される。cons_pred_mode_flagの第1の値が0に設定される場合に、それは、現在のノードを分割する又は分割しないことによって得られる全てのコーディングブロックに対してインター予測が実行されることを示し、cons_pred_mode_flagの第2の値が1に設定される場合に、それは、現在のノードを分割する又は分割しないことによって得られる全てのコーディングブロックに対してイントラ予測が実行されることを示す。オプションで、cons_pred_mode_flagの第1の値が1に設定される場合に、それは、現在のノードを分割する又は分割しないことによって得られる全てのコーディングブロックに対してインター予測が実行されることを示し、cons_pred_mode_flagの第2の値が0に設定される場合に、それは、現在のノードを分割する又は分割しないことによって得られる全てのコーディングブロックに対してイントラ予測が実行されることを示す。cons_pred_mode_flagの意味は、代替的に、別のフラグ(例えば、mode_cons_flag)によって示される場合がある。これは、この実施形態では限定されない。
cons_pred_mode_flagは、ブロック分割中に解析する必要がある構文要素であり得る。構文要素を解析するときに、現在のノードのカバレッジ領域内のコーディングユニットのコーディングユニットの予測モードフラグcu_pred_modeはそれ以上解析されない場合があり、cu_pred_modeの値は、cons_pred_mode_flagの値に対応するデフォルト値である。
構文要素cons_pred_mode_flagは、意味的に次のように記述される。cons_pred_mode_flagの値が0である場合に、それは、現在のノードによってカバーされるコーディングユニットに対してインター予測のみが実行されることを示す;又は、cons_pred_mode_flagの値が1である場合に、それは、現在のノードによってカバーされるコーディングブロックに対してイントラ予測のみが実行されることを示す。
現在のノードがイントラ画像領域に位置しており(すなわち、現在のノードが位置する画像のタイプ又はスライス(slice_type)がイントラタイプ又はIタイプであり)、IBCモードの使用が許可される場合に、cu_pred_modeの値は1として導出され、cu_pred_modeの値はビットストリームを解析する必要なしに取得される。現在のノードがイントラ画像領域に位置しているが、IBCモードの使用が許可されない場合に、cu_pred_modeの値は1として導出され、cu_skip_flagの値は0であり、cu_pred_modeの値はビットストリームを解析する必要なしに取得される。
現在のノードがインター画像領域に位置している場合(すなわち、現在のノードが位置する画像のタイプ又はスライス(slice_type)がインタータイプ又はBタイプである場合に)、cu_pred_modeの値は0として導出され、cu_pred_modeの値は、ビットストリームを解析する必要なしに取得される。
IBC予測の参照ピクセルが現在の画像の再構成したピクセルであるため、IBC予測モードは、イントラ予測モードと見なすことができる。従って、本願のこの実施形態では、イントラ予測は、IBCモードを含み得る。換言すると、本願のこの実施形態では、IBCモード、共通のイントライントラ予測モード、又はIBCモード+共通のイントライントラ予測モードをイントラ予測に使用することができる。従って、本願のこの実施形態では、イントラ予測は非インター予測であると、結論的に理解され得る。
オプションで、現在のノードが位置するスライスのタイプ(slice type)は、イントラ(Intra)タイプではない。
方法2:現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがインター予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測が実行される;又は、現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがイントラ予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測が実行される。
この方法では、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、実際には、現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードに基づいて決定される。
オプションで、任意のコーディングブロックは、復号化順序で現在のノードによってカバーされる全てのコーディングブロックの第1番目のコーディングブロックである。具体的には、現在のノードの領域における第1番目のコーディングブロックB0の予測モードが解析され、この実施形態では、第1番目のコーディングブロックB0の予測モードは限定されない。解析により、コーディングブロックB0の予測モードがイントラ予測であると分かった場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測が実行される。解析により、コーディングブロックB0の予測モードがインター予測であると分かった場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測が実行される。
前述の方法1及び方法2に従って実行されるステップは、図8に示されるビデオデコーダ24に使用され得ることに留意されたい。
ステップ2043:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
オプションで、ステップ203又はステップ2042又はステップ2043の後に、この方法は、以下のステップをさらに含む。
ステップ205:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ206:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
この実施形態のステップ205及びステップ206は、図9に示される実施形態のステップ105及びステップ106と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
この実施形態で提供される画像予測方法によれば、現在のノードの分割モードが取得される;ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかは、現在のノードのサイズ及びルマブロックの分割モードに基づいて決定される;ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、クロマブロックの分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかがさらに判定される;そして、クロマブロックの分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測が実行される。前述の方法によれば、現在のノードの全てのコーディングブロックに対してイントラ予測又はインター予測が実行されるので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、コーディング処理速度が上がる。
以下では、2つの特定の例を参照して、図11に示される実施形態で提供される画像予測方法について説明する。
第1の例は、YUV4:2:0又はYUV4:2:2のビデオデータ形式に適用可能であるか、又はYUV4:2:0のビデオデータ形式にのみ適用可能である。
この例の画像予測方法は、以下のステップを含む。
ステップ1:現在のノードの分割モードを取得する。
ステップ2:現在のノードの面積及び現在のノードの分割モードが、以下の条件Aのうちの少なくとも1つの条件を満たすかどうかを判定する:
(1)現在のノードの面積が32に等しく、現在のノードの分割モードは、垂直二分木分割又は水平二分木分割である;又は
(2)現在のノードの面積が64に等しく、現在のノードの分割モードは、垂直三分木分割、水平三分木分割、又は四分木分割である。
現在のノードの面積及び現在のノードの分割モードが条件Aのうちの少なくとも1つの条件を満たす場合に、ステップ3が実行される。
ステップ3:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行することを制限する。
オプションで、cons_pred_mode_flagの値は1に設定される。
現在のノードの面積及び現在のノードの分割モードが条件Aを満たさない場合に、ステップ4が実行される。
ステップ4:現在のノードの面積及び現在のノードの分割モードが、以下の条件Bのうちの少なくとも1つの条件を満たすかどうかを判定する:
(1)現在のノードの面積SはS/2<th1を満たし、現在のノードの分割モードは垂直二分木分割又は水平二分木分割である;又は
(2)現在のノードの面積SはS/4<th1を満たし、現在のノードの分割モードは、垂直三分木分割、水平三分木分割、又は四分木分割である。
しきい値th1は、ビデオデータ形式に関連する。例えば、ビデオデータ形式がYUV4:2:0である場合に、しきい値th1は64である;又は、ビデオデータ形式がYUV4:2:2である場合に、しきい値th1は32である。
現在のノードの面積及び現在のノードの分割モードが条件Bのうちの少なくとも1つの条件を満たす場合に、ステップ5が実行される。
ステップ5:ビットストリームからフラグcons_pred_mode_flagを解析し、cons_pred_mode_flagの値に基づいて、現在のノードのカバレッジ領域内の全てのコーディングユニットに対してインター予測又はイントラ予測を実行することを決定する。
現在のノードの面積及び現在のノードの分割モードが条件Bを満たさない場合に、ステップ6が実行される。
ステップ6:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
オプションで、ステップ6の後に、この方法は、以下のステップをさらに含む。
ステップ7:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ8:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
第2の例は、YUV4:2:0のビデオデータ形式に適用可能である。
この例の画像予測方法は、以下のステップを含む。
ステップ1:現在のノードの分割モードを取得する。
ステップ2:現在のノードの面積及び現在のノードの分割モードが条件Cを満たすかどうかを判定する。現在のノードの面積は64に等しく、現在のノードの分割モードは、水平三分木分割、垂直三分木分割、又は四分木分割である。
現在のノードの面積及び現在のノードの分割モードが条件Cを満たす場合に、ステップ3が実行される。
ステップ3:現在のノードのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行される。
オプションで、cons_pred_mode_flagの値が1に設定される。
現在のノードの面積及び現在のノードの分割モードが条件Cを満たさない場合に、ステップ4が実行される。
ステップ4:現在のノードの面積及び現在のノードの分割モードが、以下の条件Dのうちの少なくとも1つの条件を満たすかどうかを判定する:
(1)現在のノードの面積は64に等しく、現在のノードの分割モードは、水平二分木分割又は垂直二分木分割である;又は
(2)現在のノードの面積は128に等しく、現在のノードの分割モードは、水平三分木分割又は垂直三分木分割である。
現在のノードの面積及び現在のノードの分割モードが条件Dのうちの少なくとも1つの条件を満たす場合に、ステップ5が実行される。
ステップ5:ビットストリームからフラグcons_pred_mode_flagを解析し、cons_pred_mode_flagの値に基づいて、現在のノードのカバレッジ領域内の全てのコーディングユニットに対してインター予測又はイントラ予測を実行することを決定する。
現在のノードの面積及び現在のノードの分割モードが条件Dを満たさない場合に、ステップ6が実行される。
ステップ6:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
オプションで、ステップ6の後に、この方法は、以下のステップをさらに含む。
ステップ7:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ8:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
図12は、本願の一実施形態による第4の画像予測方法の概略フローチャートである。図12に示されるように、この実施形態で提供される画像予測方法は、以下のステップを含む。
ステップ301:現在のノードの分割モードを取得する。
具体的には、現在のノードの分割情報が解析される。分割情報が現在のノードのクロマブロックを分割することを示す場合に、現在のノードのクロマブロックの分割モードがさらに決定される。クロマブロックの分割モードには、四分木分割、垂直二分木分割、水平二分木分割、垂直三分木分割、及び水平三分木分割のうちの少なくとも1つが含まれる。確かに、別の分割モードがあり得る。これは、この実施形態では特に限定されない。
ステップ302:現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定する。
分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、ステップ303が実行される。分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されないと判定された場合に、ステップ304が実行される。
この実施形態のステップ302は、図11に示される実施形態のステップ2041と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
オプションで、ステップ302は、現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第3の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップを含み得る。
オプションで、第3の予め設定したサイズを有するルマブロックは、4×4、4×8、又は8×4のルマブロックであり得る。
オプションで、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するステップは、以下の条件のうちの1つに基づいて実行され得る:
(1)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは四分木分割である;
(2)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは三分木分割である;
(3)現在のノードのルマブロックのサンプルの数量が32であり、分割モードは二分木分割である;
(4)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは二分木分割である;又は
(5)現在のノードのルマブロックのサンプルの数量が128であり、分割モードは三分木分割である。
オプションで、第2の予め設定したサイズを有するクロマブロックは、2×4又は4×2のピクセルサイズを有するクロマブロックであり得る(2×2のピクセルサイズを有するクロマブロックを除く)。同様に、第3の予め設定したサイズを有するルマブロックは、4×8又は8×4のピクセルサイズを有するルマブロックであり得る(4×4のピクセルサイズを有するルマブロックを除く)。対応して、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するステップは、以下の条件のうちの1つに基づいて実行され得る:
(1)現在のノードのルマブロックのサンプルの数量が64であり、分割モードは二分木分割である;又は
(2)現在のノードのルマブロックのサンプルの数量が128であり、分割モードは三分木分割である。
ステップ303:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行する。
現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行するかどうかは、図11に示される実施形態のステップ2042に基づいて決定され得る。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
ステップ304:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
この実施形態のステップ304は、図9に示される実施形態のステップ104と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
オプションで、ステップ303又はステップ304の後に、この方法は、以下のステップをさらに含む。
ステップ305:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ306:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
この実施形態におけるステップ305及びステップ306は、図9に示される実施形態のステップ105及びステップ106と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
この実施形態で提供される画像予測方法によれば、現在のノードの分割モードが取得され、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかは、現在のノードのサイズ及び現在のノードの分割モードに基づいて決定される;そして、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測が実行される。前述の方法によれば、現在のノードの全てのコーディングブロックに対してイントラ予測又はインター予測が実行されるので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、コーディング処理速度が上がる。
図13は、本願の一実施形態による第5の画像予測方法の概略フローチャートである。図12に示される実施形態に基づいて、図13に示されるように、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、ステップ304は、以下のステップを含み得る。
ステップ3041:分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定する。
分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、ステップ3042が実行される。分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されないと判定された場合に、ステップ3043が実行される。
具体的には、現在のノードのサイズ及びルマブロックの分割モードに基づいて、ルマブロックの分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかが判定される。第1の予め設定したサイズを有するルマブロックは、4×4のピクセルサイズを有するルマブロックである。特定の判定プロセスは、図10に示される実施形態のステップ202におけるプロセスと同じであり、前述の実施形態を参照することができる。詳細は、ここでは再び説明しない。
ステップ3042:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する。
ステップ3043:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは、制限されない。
オプションで、ステップ303又はステップ3042又はステップ3043の後に、この方法は、以下のステップをさらに含む。
ステップ305:現在のノードによってカバーされる全てのコーディングブロックの予測ブロック及び残余情報を解析する。
ステップ306:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
この実施形態におけるステップ305及びステップ306は、図9に示される実施形態のステップ105及びステップ106と同じである。詳細については、前述の実施形態を参照されたい。詳細は、ここでは再び説明しない。
この実施形態で提供される画像予測方法によれば、現在のノードの分割モードが取得される;分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかは、現在のノードのサイズ及び現在のノードの分割モードに基づいて決定される;分割モードで現在のノードを分割することによって第2の予め設定したサイズを有するクロマブロックが取得されないと判定された場合に、分割モードで現在のノードを分割することによって第1の予め設定したサイズを有するルマブロックが取得されるかどうかがさらに判定される;そして、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測が実行される。前述の方法によれば、現在のノードの全てのコーディングブロックに対してイントラ予測又はインター予測が実行されるので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、コーディング処理速度が上がる。
図14は、本願の一実施形態による第6の画像予測方法の概略フローチャートである。この実施形態で提供される画像予測方法は、図8に示されるビデオエンコーダ18に使用される。図14に示されるように、この実施形態の方法は、以下のステップを含む。
ステップ401:現在のノードの分割モードを取得する。
現在のノードが位置するスライス(slice)のタイプは、Bタイプ又はPタイプである。現在のノードが位置するスライス(slice)のタイプがIタイプである場合に、デフォルトで、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する必要があると理解すべきである。
デコーダ側は、ビットストリームを解析することによって、又は得られたパラメータに基づいて、現在のノードの分割モードを取得することができる。エンコーダ側は、一般的に、最初に、現在のノードに許可される分割モードを決定し、次に、レート歪み最適化(Rate-distortion optimization, RDO)方法に従って、最適な分割モードを現在のノードの分割モードとして決定する。このステップは従来の技術に属し、詳細は、ここでは説明しない。
ステップ402:現在のノードのサイズ及び現在のノードの分割モードが、第1の予め設定した条件のうちの1つの条件を満たすかどうかを判定する。
第1の予め設定した条件は、以下を含み得る:
(1)現在のノードのルマブロックのサンプルの数量が64であり、現在のノードの分割モードは四分木分割である;
(2)現在のノードのルマブロックのサンプルの数量が64であり、現在のノードの分割モードは三分木分割である;又は
(3)現在のノードのルマブロックのサンプルの数量が32であり、現在のノードの分割モードは二分木分割である。
現在のノードのルマブロックのサンプルの数量は、現在のノードに対応する画像ブロックのルマピクセルの数量(ピクセルサイズ)である。サンプルの数量は、現在のノードの幅と高さとの積に基づいて取得され得る。
別の実施態様では、第1の予め設定した条件は、以下の条件(4)をさらに含む:
(4)分割モードで現在のノードを分割することによって、予め設定したサイズを有するルマブロックが取得され、ここで、予め設定したサイズは4×4又は8×8である。
第1の予め設定したサイズ(4×4又は8×8)を有するルマブロック及び第2の予め設定したサイズ(2×4又は4×2)を有するクロマブロックは、第1の予め設定した条件のうちの1つの条件が満たされる場合に取得され得ることに留意されたい。
このステップでは、現在のノードのサイズ及び現在のノードの分割モードが第1の予め設定した条件のうちの1つの条件を満たす場合に、ステップ403が実行される。現在のノードのサイズ及び現在のノードの分割モードが第1の予め設定した条件のいずれも満たさない場合に、ステップ404が実行される。
ステップ403:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、mode_constraint_flagの値をビットストリームに書き込む必要はなく、mode_constraint_flagの値は1に設定され得る。対応して、デコーダ側は、同じ方法に従って、mode_constraint_flagの値が1であることも導出し得る。
ステップ404:現在のノードのサイズ及び現在のノードの分割モードが、第2の予め設定した条件のうちの1つの条件を満たすかどうかを判定する。
第2の予め設定した条件には、以下が含まれる:
(1)現在のノードのルマブロックのサンプルの数量が64であり、現在のノードの分割モードは垂直二分木分割又は水平二分木分割である;又は
(2)現在のノードのルマブロックのサンプルの数量が128であり、現在のノードの分割モードは垂直三分木分割又は水平三分木分割である。
別の実施態様では、第2の予め設定した条件は、以下の条件(3)をさらに含む:
(3)分割モードで現在のノードを分割することによって、予め設定したサイズを有するクロマブロックが取得され、ここで、予め設定したサイズは2×4又は4×2である。
このステップでは、現在のノードのサイズ及び現在のノードの分割モードが第2の予め設定した条件のうちの1つの条件を満たす場合に、ステップ405が実行される。現在のノードのサイズ及び現在のノードの分割モードが第2の予め設定した条件のいずれも満たさない場合に、ステップ406が実行される。
ステップ405:現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行する。
この実施形態では、現在のノードの全てのコーディングブロックに使用される予測モードは、以下のいくつかの方法で決定することができる。
一実施態様では、現在のノードが位置する画像又はスライス(slice)のタイプがIタイプである場合に、エンコーダ又はエンコーダ側は、イントラ予測(非インター予測)のみが現在のノードの全てのコーディングブロックに適用可能であると決定する。オプションで、エンコーダ又はエンコーダ側は、mode_constraint_flagをビットストリームに書き込む必要はなく、mode_constraint_flagの値を1に設定し得る。
現在のノードが位置する画像又はスライス(slice)のタイプがIタイプではない場合に、エンコーダ又はエンコーダ側は、レート歪み最適化(Rate-distortion optimization, RDO)方法又は別の方法に従ってmode_constraint_flagの値を決定する。
RDO方法は、具体的には以下の通りである。エンコーダは、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測及びイントラ予測を実行する場合に生成されるレート歪みコスト(RD cost)を別々に計算し、2つの予測モードの場合に生成されるレート歪みコストの値を比較し、且つレート歪みコストがより小さい予測モードを最終的な予測モードとして決定する。レート歪みコストがより小さい予測モードがイントラ予測である場合に、エンコーダはmode_constraint_flagの値を1に設定する。レート歪みコストがより小さい予測モードがインター予測である場合に、エンコーダは、mode_constraint_flagの値を0に設定し、且つmode_constraint_flagの値をビットストリームに書き込む。
例えば、エンコーダは、最初に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する場合に生成されるRDコストを計算し、次に、イントラ予測を実行する場合に生成されるRDコストを計算する。現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する場合に残余がない(例えば、スキップモードが使用される)場合に、エンコーダは、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測が実行されると決定し、mode_constraint_flagの値を0に設定し、且つイントラ予測の場合に生成されるRDコストを計算する必要はない。あるいはまた、エンコーダは、最初に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行する場合に生成されるRDコストを計算し、次に、インター予測を実行する場合に生成されるRDコストを計算し、且つRDコストがより小さな予測モードを最終的な予測モードとして決定することができる。
現在のノードがイントラ画像領域に位置しており(すなわち、現在のノードが位置する画像のタイプ又はスライス(slice_type)が、イントラタイプ又はIタイプであり)、IBCモードの使用が許可されている場合に、pred_mode_flagの値はデフォルトで1であることに留意されたい。現在のノードがイントラ画像領域に位置しているが、IBCモードの使用が許可されていない場合に、pred_mode_flagの値はデフォルトで1であり、cu_skip_flagの値はデフォルトで0である(スキップモードが現在のブロックに使用されないことを示す)。現在のノードがイントラ画像領域に位置する(つまり、現在のノードが位置する画像のタイプ又はスライス(slice_type)がイントラタイプ又はIタイプである)場合に、mode_constraint_flagの値はデフォルトで1である。
一実施態様では、デコーダ側又はデコーダは、現在のノードの予測モードステータスフラグ(mode_constraint_flag)を解析することができる;予測モードステータスフラグの値が第1の値である場合に、現在のノードに属する全てのコーディングブロックに対してインター予測を実行する;又は、予測モードステータスフラグの値が第2の値である場合に、現在のノードに属する全てのコーディングブロックに対してイントラ予測を実行する。
ステップ406:現在のノードの分割モードで現在のノードを分割する。ここで、現在のノードによってカバーされる全てのコーディングブロックに使用される予測モードは制限されない。
オプションで、ステップ403、ステップ405、又はステップ406の後に、この方法は、以下のステップをさらに含み得る。
ステップ407:現在のノードの予測モードに基づいて、現在のノードのルマブロック及びクロマブロックがさらに分割されるかどうかを判定する。
現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行されると判定された場合に、現在のノードに含まれるルマブロックを分割モードで分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測が実行される;そして、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードを取得する;そして、現在のノードのクロマブロックは分割されず、1つのクロマコーディングブロック(略してクロマCB)が取得される。N個のルマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。ルマコーディングツリーノードがさらに分割される場合に、ルマコーディングツリーノードの分割モードが再帰的分割のために解析される。ルマコーディングツリーノードがそれ以上分割されない場合に、ルマコーディングツリーノードは1つのルマコーディングブロック(略してルマCB)に対応する。ルマCBに対してイントラ予測を実行して、ルマCBに対応するルマ予測ブロックが取得される。クロマCBに対してイントラ予測を実行して、クロマCBに対応するクロマ予測ブロックが取得される。クロマ予測ブロック及びクロマCBは同じサイズである。
現在のノードの全てのコーディングブロックに対してイントラ予測のみを実行すると決定された場合に、別の実施態様では、現在のノードに含まれるルマブロック及びクロマブロックを分割モードで分割して、分割により得られたノードが取得される。コーディングツリーノードがそれ以上分割されない場合に、コーディングツリーノードは、1つのコーディングユニットに対応し、且つルマコーディングユニット及びクロマコーディングユニットを含む。ルマコーディングユニット及びクロマコーディングユニットに対してイントラ予測が実行され、ここで、ルマコーディングユニット及びクロマコーディングユニットは分割によって取得される。
現在のノードの全てのコーディングブロックに対してインター予測のみを実行すると決定された場合に、一実施態様では、現在のノードに含まれるルマブロックを分割モードで分割して、分割によって得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測が実行される;そして、現在のノードに含まれるクロマブロックを分割モードで分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックをクロマブロックの分割モードで分割して、M個のクロマコーディングツリーノードが取得される。N及びMは正の整数であり、N及びMは同じでもよく、又は異なっていてもよい。N個のルマコーディングツリーノード及びM個のクロマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。それ以上分割が実行されない場合に、N個のルマコーディングツリーノードは現在のノードのN個のルマCBに対応し、M個のクロマコーディングツリーノードは現在のノードのM個のクロマCBに対応する。N個のルマCBに対してインター予測を実行して、対応するルマ予測ブロックが取得され、M個のクロマCBに対してインター予測を実行して、対応するクロマ予測ブロックが取得される。
現在のノードの全てのコーディングブロックに対してインター予測のみを実行すると決定された場合に、一実施態様では、現在のノードに含まれるルマブロックを分割モードで分割して、分割によって得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測が実行される;そして、現在のノードに含まれるクロマブロックを分割モードで分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックをクロマブロックの分割モードで分割して、M個のクロマコーディングツリーノードが取得される。N及びMは正の整数であり、N及びMは同じでもよく、又は異なっていてもよい。N個のルマコーディングツリーノード及びM個のクロマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。それ以上分割が実行されない場合に、N個のルマコーディングツリーノードは現在のノードのN個のルマCBに対応し、M個のクロマコーディングツリーノードは現在のノードのM個のクロマCBに対応する。N個のルマCBに対してインター予測を実行して、対応するルマ予測ブロックが取得され、M個のクロマCBに対してインター予測を実行して、対応するクロマ予測ブロックが取得される。
特に、現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、分割モードで現在のノードを分割することによって、子ノードが取得され、子ノードをさらに分割する必要があり、子ノードの分割モードで分割することによって、予め設定したサイズを有するルマブロックが取得され、ここで、例えば、予め設定したサイズは4×4(つまり、幅と高さとの両方が4)であり、子ノードの分割モードは許可されない、又は、子ノードをそれ以上分割することは許可されない。具体的には、ノードに対してインター予測のみが実行されるように制限されており、ノードのルマサンプルの数量が32(つまり、ノードの幅と高さとの積が32)である場合に、二分木分割(水平二分木分割又は垂直二分木分割を含む)はノードに許可されない。ノードに対してインター予測のみが実行されるように制限されており、ノードのルマサンプルの数量が64(つまり、ノードの幅と高さとの積が64)である場合に、三分木分割(水平三分木分割又は垂直三分木分割を含む)はノードに許可されない。このような決定方法は、YUV4:2:0とYUV4:2:2との両方のビデオデータ形式に適用可能である。
例えば、現在のノードのサイズが8×8であり、2つの8×4(又は4×8)ノードが水平二分木分割(又は垂直二分木分割)によって生成される場合に、8×4(又は4×8)ノードをさらに分割すると、4×4ブロックが生成される。この場合に、垂直二分木分割(又は水平二分木分割)は8×4(又は4×8)ノードに許可されないか、又は8×4(又は4×8)ノードをそれ以上分割することは許可されない。別の例として、現在のノードのルマブロックのサンプルの数量が128であり、分割モードが水平三分木分割又は垂直三分木分割である場合に、ルマブロックのサンプルの数量が64であると求められ得る。ただし、子ノードの水平三分木分割又は垂直三分木分割をサンプルの数量64のルマノードに使用すると、4×4のルマブロックが取得される。従って、インター予測のみが実行されると制限される場合に、水平三分木分割又は垂直三分木分割は、サンプルの数量64のノードに許可されず、又はサンプルの数量64のノードをそれ以上分割することは許可されない。
ステップ408:現在のノードを分割することによって得られたCUのコーディングブロックを予測して、コーディングブロックの予測子を取得する。
現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行される場合に、エンコーダ又はエンコーダ側は、レート歪み最適化(Rate-distortion optimization, RDO)方法又は別の方法に従って、現在のコーディングブロックに使用される最適なイントラ予測モードを決定する;そして、対応するイントラ予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得する。
現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、エンコーダ又はエンコーダ側は、レート歪み最適化方法又は別の方法に従って、現在のコーディングブロックに使用される最適なインター予測モードを決定する;そして、対応するインター予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得する。
さらに、エンコーダは、CU深度関連構文要素に値を割り当て、CUレベルの構文規定の基準に従って、各構文要素の値をビットストリームに書き込む。例えば、現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行される場合に、pred_mode_flagの値は1に設定され、pred_mode_flagはビットストリームに書き込まれない。つまり、pred_mode_flagはビットストリームに存在しない。現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行され、IBCモードが使用されないと決定された場合に、cu_skip_flag(又はskip_flag)の値は0であり、cu_skip_flagはビットストリームに書き込まれない。それ以外の場合に、cu_skip_flagの値を決定した後に、cu_skip_flagをビットストリームに書き込む必要があり、そのcu_skip_flagは、デコーダ側に送信される。
現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、pred_mode_flagの値は0に設定され、pred_mode_flagはビットストリームに書き込まれない。つまり、pred_mode_flagはビットストリームに存在しない。pred_mode_ibc_flagの値が0に設定される場合に、pred_mode_ibc_flagはビットストリームに書き込まれない。つまり、pred_mode_ibc_flagはビットストリームに存在しない。
現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行される場合に、デコーダ又はデコーダ側は、ビットストリームを解析することによって、又は得られたパラメータに基づいて、現在のコーディングブロックに使用される最適なイントラ予測モードを決定し;そして、対応するイントラ予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得することができる。
現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、デコーダ又はデコーダ側は、ビットストリームを解析することによって、又は得られたパラメータに基づいて、現在のコーディングブロックに使用される最適なインター予測モードを決定し;そして、対応するインター予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得することができる。
ステップ409:現在のノードにおける画像ブロックの再構成した信号を取得する。
イントラ予測又はインター予測によって予測情報を取得した後に、エンコーダ又はエンコーダ側は、現在のコーディングブロック内のピクセルのピクセル値から対応する予測情報(又は予測子)を差し引くことによって残余情報を取得し、離散コサイン変換(Discrete Cosine Transform, DCT)等の方法を使用して残余情報を変換し、量子化及びエントロピー符号化によりビットストリームを取得し、残余情報をデコーダ側に送信する。予測信号及び再構成した残余信号を加算した後に、エンコーダ側は、さらに、フィルタ処理操作を実行して再構成した信号を取得する必要があり、再構成した信号を後続の符号化のための参照信号として使用する。特に、スキップモードをコーディングブロックに使用する場合に、残余情報がなく、エンコーダ側で変換を実行する必要がなく、予測子が最終的な再構成値となる。
予測信号及び再構成した残余信号を加算した後に、デコーダ又はデコーダ側は、さらに、フィルタ処理動作を実行して、再構成した信号を取得する必要がある。さらに、デコーダ側は、取得した再構成した信号を後続の符号化のための参照信号として使用する。特に、スキップモードをコーディングブロックに使用する場合に、残余情報はなく、デコーダ又はデコーダ側は変換を実行する必要がなく、予測子が最終的な再構成値となる。
例えば、CUの予測ブロックに基づいて、各CUに対してインター予測処理又はイントラ予測処理を実行して、CUのインター予測画像又はイントラ予測画像が取得される。次に、各CUの残余情報に基づいて、量子化解除及び逆変換処理を変換係数に対して実行して残余画像を取得し、残余画像を対応する領域の予測画像に追加して、再構成画像が生成される。
この実施形態では、画像予測方法を、ビデオデコーダ側の観点から説明する。ビデオデコーダは、現在のノードのサイズ及び現在のノードの分割モードに基づいて、現在のノードの全てのコーディングブロックに対してイントラ予測又はインター予測を実行するかを決定するので、現在のノードの全てのコーディングブロックに対して並列処理を実施することができる。これにより、画像予測の処理性能が向上し、復号化処理速度が上がる。
一実施形態で提供される画像予測方法は、図8に示されるビデオエンコーダ18及び/又はビデオデコーダ24のために使用される。この実施形態は、以下のステップを含む。
ステップ501:現在のノードの分割モードを取得する。
この実施形態におけるステップ501は、図9に示される実施形態のステップ101と同じであり、詳細はここでは再び説明しない。
ステップ502:以下の方法に従って、変数modeTypeConditionの値を導出する。
以下の第1の予め設定した条件のうちの1つ又は複数の条件が真である場合に、modeTypeConditionの値は第1の値、例えば、0である:
(1)現在のノードが位置する画像又はスライス(Slice)のタイプはIタイプ(slice_type == I)であり、qtbtt_dual_tree_intra_flagの値は1である;
(2)現在のノードの予測モードタイプは、イントラ予測又はインター予測のみであり、すなわち、インター予測又はイントラ予測(非インター予測)のみが実行されるように制限される;又は
(3)クロマフォーマットは、モノクロ(Monochrome)フォーマット又は4:4:4フォーマットであり、例えば、chroma_format_idcの値は0又は3である。
別の実施形態では、第1の予め設定した条件は、以下の条件(4)をさらに含む:
(4)クロマフォーマットは、モノクロ(Monochrome)フォーマット、4:4:4フォーマット、又は4:2:2フォーマットであり、例えば、chroma_format_idcの値は0、3、又は2である。
それ以外の場合に、以下の第2の予め設定した条件のうちの1つ又は複数の条件が真である場合に、modeTypeConditionの値は、第2の値、例えば、1である:
(1)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは四分木分割である;
(2)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは水平三分木分割又は垂直三分木分割である;又は
(3)現在のノードのルマブロックの幅と高さとの積が32であり、現在のノードの分割モードは水平二分木分割又は垂直二分木分割である。
それ以外の場合に、以下の予め設定した第3の条件のうちの1つ又は複数の条件が真であり、クロマフォーマットが4:2:0形式である(chroma_format_idcの値が1である)場合に、modeTypeConditionの値は以下の式:1 + (slice_type != I? 1: 0)に従って導出される:
(1)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは水平二分木分割又は垂直二分木分割である;又は
(2)現在のノードのルマブロックの幅と高さとの積が128であり、現在のノードの分割モードは水平三分木分割又は垂直三分木分割である。
表3は、クロマフォーマットとchroma_format_idcとの間の対応関係を示していることに留意されたい。
モノクロ(Monochrome)サンプリングでは、クロマ成分フォーマットはなく、一連のルマ成分のみが存在する。
4:2:0サンプリングでは、2つのクロマ成分の幅は、対応するルマ成分の幅の半分であり、クロマ成分の高さは、ルマ成分の高さは、ルマ成分の高さの半分である。
4:2:2サンプリングでは、2つのクロマ成分の高さは、対応するルマ成分の高さと同じであり、クロマ成分の幅は、対応するルマ成分の幅の半分である。
4:4:4サンプリングでは、2つのクロマ成分の高さ及び幅は、separate_colour_plane_flagの値に依存する。separate_colour_plane_flagの値が0に等しい場合に、2つのクロマ成分の幅及び高さは、それぞれ、対応するルマ成分の幅及び高さと同じである。それ以外の場合に(separate_colour_plane_flagの値は1に等しい)、3つの成分はモノクロのサンプル画像として個別にコーディングされる。
1に等しいseparate_colour_plane_flagは、4:4:4クロマフォーマットの3つの色成分が別々にコーディングされることを指定する。0に等しいseparate_colour_plane_flagは、色成分が個別にコーディングされないことを指定する。
1に等しいqtbtt_dual_tree_intra_flagは、Iスライスについて、各CTUが、黙示的な四分木分割を使用して64×64のルマサンプルを有するコーディングユニットに分割され、これらのコーディングユニットが、ルマ及びクロマの2つの別個のcoding_tree構文構造のルートであることを指定する。0に等しいqtbtt_dual_tree_intra_flagは、個別のcoding_tree構文構造がIスライスに使用されないことを指定する。qtbtt_dual_tree_intra_flagが存在しない場合に、それ(qtbtt_dual_tree_intra_flag)は、0に等しいと推測される。
ステップ503:modeTypeConditionの値に基づいて、現在のノードの全てのコーディングユニットの予測モードタイプを決定する。
具体的には、modeTypeConditionの値が1である場合に、現在のノードの全てのコーディングユニットに対してイントラ予測(MODE_INTRA)を実行することが制限される。modeTypeConditionの値が2である場合に、構文要素mode_constraint_flagの値がビットストリームから解析される。mode_constraint_flagの値が0である場合に、現在のノードの全てのコーディングユニットに対してインター予測(MODE_INTER)が実行される。値mode_constraint_flagが1である場合に、現在のノードの全てのコーディングユニットに対してイントラ予測(非インター予測/MODE_INTRA)が実行される。
それ以外の場合に、現在のノードの全てのコーディングユニットの予測モードタイプは、制限されず、且つ現在のノードの予測モードタイプと同じである。
ステップ504:現在のノードに対応するクロマブロック及びルマブロックをさらに分割して、クロマコーディングユニット及びルマコーディングユニットが取得されるかどうかを判定する。
(ステップ504は、ステップ407と同じである)。
現在のノードの全てのコーディングブロックに対してイントラ予測のみを実行すると決定された場合に、現在のノードに含まれるルマブロックを分割モードで分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測が実行される;そして、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してイントラ予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックは分割されず、1つのクロマコーディングブロック(略してクロマCB)が取得される。N個のルマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。ルマコーディングツリーノードがさらに分割される場合に、ルマコーディングツリーノードの分割モードが再帰的分割のために解析される。ルマコーディングツリーノードがそれ以上分割されない場合に、ルマコーディングツリーノードは1つのルマコーディングブロック(略してルマCB)に対応する。ルマCBに対してイントラ予測を実行して、ルマCBに対応するルマ予測ブロックが取得される。クロマCBに対してイントラ予測を実行して、クロマCBに対応するクロマ予測ブロックが取得される。クロマ予測ブロック及びクロマCBは同じサイズである。
現在のノードの全てのコーディングブロックに対してイントラ予測のみを実行すると決定された場合に、別の実施態様では、現在のノードに含まれるルマブロック及びクロマブロックを分割モードで分割して、分割により得られたノードが取得される。コーディングツリーノードがそれ以上分割されない場合に、コーディングツリーノードは、1つのコーディングユニットに対応し、且つルマコーディングユニット及びクロマコーディングユニットを含む。ルマコーディングユニット及びクロマコーディングユニットに対してイントラ予測が実行され、ルマコーディングユニット及びクロマコーディングユニットは分割によって取得される。
現在のノードの全てのコーディングブロックに対してインター予測のみを実行すると決定された場合に、一実施態様では、現在のノードに含まれるルマブロックを分割モードで分割して、分割によって得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測が実行される;そして、現在のノードに含まれるクロマブロックを分割モードで分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックをクロマブロックの分割モードで分割して、M個のクロマコーディングツリーノードが取得される。N及びMは正の整数であり、N及びMは同じでもよく、又は異なっていてもよい。N個のルマコーディングツリーノード及びM個のクロマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。それ以上分割が実行されない場合に、N個のルマコーディングツリーノードは現在のノードのN個のルマCBに対応し、M個のクロマコーディングツリーノードは現在のノードのM個のクロマCBに対応する。N個のルマCBに対してインター予測を実行して、対応するルマ予測ブロックが取得され、M個のクロマCBに対してインター予測を実行して、対応するクロマ予測ブロックが取得される。
現在のノードの全てのコーディングブロックに対してインター予測のみを実行すると決定された場合に、一実施態様では、現在のノードに含まれるルマブロックを分割モードで分割して、分割によって得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測が実行される;そして、現在のノードに含まれるクロマブロックを分割モードで分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測が実行される。換言すると、現在のノードの全てのコーディングブロックに対してインター予測を実行すると決定された場合に、現在のノードのルマブロックをルマブロックの分割モードで分割して、N個のルマコーディングツリーノードが取得される;そして、現在のノードのクロマブロックをクロマブロックの分割モードで分割して、M個のクロマコーディングツリーノードが取得される。N及びMは正の整数であり、N及びMは同じでもよく、又は異なっていてもよい。N個のルマコーディングツリーノード及びM個のクロマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。それ以上分割が実行されない場合に、N個のルマコーディングツリーノードは現在のノードのN個のルマCBに対応し、M個のクロマコーディングツリーノードは現在のノードのM個のクロマCBに対応する。N個のルマCBに対してインター予測を実行して、対応するルマ予測ブロックが取得され、M個のクロマCBに対してインター予測を実行して、対応するクロマ予測ブロックが取得される。
特に、現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、分割モードで現在のノードを分割することによって、子ノードが取得され、子ノードをさらに分割する必要があり、子ノードの分割モードで分割することによって、予め設定したサイズを有するルマブロックが取得され、例えば、予め設定したサイズは4×4(つまり、幅と高さとの両方が4)であり、子ノードの分割モードは許可されない、又は、子ノードをそれ以上分割することは許可されない。具体的には、ノードに対してインター予測のみが実行されるように制限されており、ノードのルマサンプルの数量が32(つまり、ノードの幅と高さとの積が32)である場合に、二分木分割(水平二分木分割又は垂直二分木分割を含む)はノードに許可されない。ノードに対してインター予測のみが実行されるように制限されており、ノードのルマサンプルの数量が64(つまり、ノードの幅と高さとの積が64)である場合に、三分木分割(水平三分木分割又は垂直三分木分割を含む)はノードに許可されない。このような決定方法は、YUV4:2:0とYUV4:2:2との両方のビデオデータ形式に適用可能である。
例えば、現在のノードのサイズが8×8であり、2つの8×4(又は4×8)ノードが水平二分木分割(又は垂直二分木分割)によって生成される場合に、8×4(又は4×8)ノードをさらに分割すると、4×4ブロックが生成される。この場合に、垂直二分木分割(又は水平二分木分割)は8×4(又は4×8)ノードに許可されないか、又は8×4(又は4×8)ノードをそれ以上分割することは許可されない。別の例として、現在のノードのルマブロックのサンプルの数量が128であり、分割モードが水平三分木分割又は垂直三分木分割である場合に、ルマブロックのサンプルの数量が64であると求められ得る。ただし、子ノードの水平三分木分割又は垂直三分木分割がサンプルの数量64のルマノードに使用される場合に、4×4のルマブロックが取得される。従って、インター予測のみを実行するように制限される場合に、水平三分木分割又は垂直三分木分割はサンプルの数量64のノードに許可されず、又はサンプルの数量64のノードをそれ以上分割することは許可されない。
ステップ505:コーディングユニットを解析して、予測モード情報を得る。
コーディングユニットの予測モードのタイプに基づいて、イントラ予測又はインター予測に関連する構文要素を解析して、コーディングユニットの最終的な予測モードが取得される。対応する予測モードで予測を実行して、予測子が取得される。
現在のノードがイントラ画像領域に位置し(すなわち、現在のノードが位置する画像のタイプ又はスライス(slice_type)がイントラタイプ又はIタイプであり)、IBCモードの使用が許可されている場合に、cu_pred_modeの値は1として導出され、cu_pred_modeの値は、ビットストリームを解析する必要なしに取得される。現在のノードがイントラ画像領域に位置しているが、IBCモードの使用が許可されていない場合に、cu_pred_modeの値は1として導出され、cu_skip_flagの値は0であり、cu_pred_modeの値はビットストリームを解析する必要なしに取得される。
現在のノードがインター画像領域に位置している(すなわち、現在のノードが位置する画像のタイプ又はスライス(slice_type)がインタータイプ又はBタイプである)場合に、cu_pred_modeの値は0として導出され、cu_pred_modeの値は、ビットストリームを解析する必要なしに取得される。
ステップ506:各コーディングブロックを復号化して、現在のノードに対応する画像ブロックの再構成した信号を取得する。
例えば、CUの予測ブロックに基づいて、各CUに対してインター予測処理又はイントラ予測処理を実行して、CUのインター予測画像又はイントラ予測画像が取得される。次に、各CUの残余情報に基づいて、変換係数に対して量子化解除及び逆変換処理を実行して残余画像を取得し、残余画像を対応する領域の予測画像に追加して、再構成画像が生成される。
エンコーダ側に対応する方法:
一実施形態で提供される画像予測方法は、図8に示されるビデオエンコーダ18に使用される。この実施形態は、以下のステップを含む。
ステップ601:現在のノードの分割モードを取得する。
この実施形態におけるステップ601は、ステップ501と同じであり、詳細は、ここでは再び説明しない。
ステップ602:以下の方法に従って、変数modeTypeConditionの値を導出する。
以下の第1の予め設定した条件のうちの1つ又は複数の条件が真である場合に、modeTypeConditionの値は第1の値、例えば、0である:
(1)現在のノードが位置する画像又はスライス(Slice)のタイプはIタイプ(slice_type == I)であり、qtbtt_dual_tree_intra_flagの値は1である;
(2)現在のノードの予測モードタイプは、イントラ予測又はインター予測のみであり、つまり、インター予測又はイントラ予測(非インター予測)のみが実行されるように制限される;又は
(3)クロマフォーマットは、モノクロ(Monochrome)フォーマット又は4:4:4フォーマットであり、ここで、例えば、chroma_format_idcの値は0又は3である。
別の実施態様では、第1の予め設定した条件は、以下の条件(4)をさらに含む:
(4)クロマフォーマットは、モノクロ(Monochrome)フォーマット、4:4:4フォーマット、又は4:2:2フォーマットであり、ここで、例えば、chroma_format_idcの値は0、3、又は2である。
それ以外の場合に、以下の第2の予め設定した条件のうちの1つ又は複数の条件が真である場合に、modeTypeConditionの値は第2の値、例えば、1である:
(1)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは四分木分割である;
(2)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは水平三分木分割又は垂直三分木分割である;又は
(3)現在のノードのルマブロックの幅と高さとの積が32であり、現在のノードの分割モードは水平二分木分割又は垂直二分木分割である。
それ以外の場合に、以下の予め設定した第3の条件のうちの1つ又は複数の条件が真であり、クロマフォーマットが4:2:0形式である(chroma_format_idcの値が1である)場合に、modeTypeConditionの値は以下の式:1 + (slice_type != I? 1: 0)に従って導出される:
(1)現在のノードのルマブロックの幅と高さとの積が64であり、現在のノードの分割モードは水平二分木分割又は垂直二分木分割である;又は
(2)現在のノードのルマブロックの幅と高さとの積が128であり、現在のノードの分割モードは水平三分木分割又は垂直三分木分割である。
ステップ603:modeTypeConditionの値に基づいて、現在のノードの全てのコーディングユニットの予測モードタイプを決定する。
具体的には、modeTypeConditionの値が1である場合に、現在のノードの全てのコーディングユニットに対してイントラ予測(MODE_INTRA)を実行することが制限される。オプションで、mode_constraint_flagの値は1に設定される。
modeTypeConditionの値が2である場合に、構文要素mode_constraint_flagの値は、RDO方法を使用して決定される。例えば、現在のノードの全てのコーディングユニットに対してインター予測を実行する場合に生成されるRDコストが最初に計算される;次に、イントラ予測を実行する場合に生成されるRDコストが計算される;そして、現在のノードの全てのコーディングユニットに対してインター予測を実行する(例えば、スキップモードが使用される)場合に残余がない場合に、現在のノードの全てのコーディングユニットに対してインター予測を実行すると決定され、mode_constraint_flagの値は0に設定され、イントラ予測の場合に生成されるRDコストを計算する必要はない。あるいはまた、現在のノードの全てのコーディングユニットに対してイントラ予測を実行する場合に生成されるRDコストが最初に計算され得る;次に、インター予測を実行する場合に生成されるRDコストが計算される;そして、RDコストがより小さい予測モードが最終的な予測モードとして決定される。
それ以外の場合に、現在のノードの全てのコーディングユニットの予測モードタイプは、制限されず、且つ現在のノードの予測モードタイプと同じである。
特に、現在のノードがイントラ画像領域に位置しており(すなわち、現在のノードがイントラタイプ又はIタイプである画像のタイプ又はスライス(slice_type))、IBCモードの使用が許可されている場合に、pred_mode_flagの値はデフォルトで1である。現在のノードがイントラ画像領域に位置しているが、IBCモードの使用が許可されていない場合に、pred_mode_flagの値はデフォルトで1であり、cu_skip_flagの値は0である。
ステップ604:現在のノードに対応するクロマブロックの分割モード及びルマブロックの分割モードを決定して、クロマコーディングユニット及びルマコーディングユニットを取得する。
(ステップ604は、ステップ504と同じである)。
ステップ605:現在のノードを分割することによって得られたCUのコーディングブロックを予測して、コーディングブロックの予測子を取得する。
現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行される場合に、エンコーダ側は、レート歪み最適化(Rate-distortion optimization, RDO)方法又は別の方法に従って、現在のコーディングブロックに使用される最適なイントラ予測モードを決定する;そして、対応するイントラ予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得する。
現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、エンコーダ側は、レート歪み最適化方法又は別の方法に従って、現在のコーディングブロックに使用される最適なインター予測モードを決定する;そして、対応するインター予測モードを使用して現在のコーディングブロックを予測し、現在のブロックの予測子を取得する。
さらに、エンコーダは、CU深度関連構文要素に値を割り当て、CUレベルの構文規定の基準に従って、各構文要素の値をビットストリームに書き込む。例えば、現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行される場合に、pred_mode_flagの値は1に設定され、pred_mode_flagはビットストリームに書き込まれない。つまり、pred_mode_flagはビットストリームに存在しない。現在のノードの全てのコーディングブロックに対してイントラ予測のみが実行され、IBCモードが使用されないと決定された場合に、cu_skip_flag(又はskip_flag)の値は0であり、cu_skip_flagはビットストリームに書き込まれない。それ以外の場合に、cu_skip_flagの値を決定した後に、cu_skip_flagをビットストリームに書き込む必要があり、そのcu_skip_flagはデコーダ側に送信される。
現在のノードの全てのコーディングブロックに対してインター予測のみが実行される場合に、pred_mode_flagの値は0に設定され、pred_mode_flagはビットストリームに書き込まれない。つまり、pred_mode_flagはビットストリームに存在しない。pred_mode_ibc_flagの値が0に設定される場合に、pred_mode_ibc_flagはビットストリームに書き込まれない。つまり、pred_mode_ibc_flagはビットストリームに存在しない。
ステップ606:現在のノードにおける画像ブロックの再構成した信号を取得する。
イントラ予測又はインター予測により予測情報を取得した後に、エンコーダ側は、現在のコーディングブロック内のピクセルのピクセル値から対応する予測情報(又は予測子)を差し引くことによって残余情報を取得し、離散コサイン変換(Discrete Cosine Transform,DCT)等の方法を使用して残余情報を変換し、量子化及びエントロピー符号化によってビットストリームを取得し、且つ残余情報をデコーダ側に送信する。予測信号及び再構成した残余信号を加算した後に、エンコーダ側は、さらに、フィルタ処理操作を実行して再構成した信号を取得する必要があり、再構成した信号を後続の符号化のための参照信号として使用する。特に、スキップモードをコーディングブロックに使用する場合に、残余情報がなく、エンコーダ側で変換を実行する必要がなく、予測子が最終的な再構成値となる。
図15は、本願の一実施形態による画像予測機器の機能の概略構造図である。図15に示されるように、この実施形態で提供される画像予測機器40は、
現在のノードの分割モードを取得するように構成された取得モジュール41と;
分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されるかどうかを判定するように構成された判定モジュール42であって、画像ブロックは、ルマブロック又はクロマブロックを含む、判定モジュール42と;
分割モードで現在のノードを分割することによって、予め設定したサイズを有する画像ブロックが取得されると判定された場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行するように構成された実行モジュール43と;を含む。
オプションで、予め設定したサイズを有する画像ブロックは、第1の予め設定したサイズを有するルマブロックを含み、判定モジュール42は、現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうか判定するように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、実行モジュール43は、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されない場合に、判定モジュール42は、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するようにさらに構成され、
分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、実行モジュール43は、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測又はインター予測を実行するように特に構成される。
オプションで、予め設定したサイズを有する画像ブロックは、第2の予め設定したサイズを有するクロマブロックを含み、判定モジュール42は、現在のノードのサイズ及び現在のノードの分割モードに基づいて、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されるかどうかを判定するように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、実行モジュール43は、
現在のノードの予測モードステータスフラグを解析すること;及び
予測モードステータスフラグの値が第1の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する;又は、予測モードステータスフラグの値が第2の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行すること、を行うように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、実行モジュール43は、現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがインター予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行する;又は、現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがイントラ予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行するように特に構成される。
オプションで、任意のコーディングブロックは、復号化順序で現在のノードによってカバーされる全てのコーディングブロックのうちの第1番目のコーディングブロックである。
オプションで、分割モードで現在のノードを分割することによって、第2の予め設定したサイズを有するクロマブロックが取得されると判定された場合に、実行モジュール43は、
分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定すること;及び
分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行すること、を行うように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されないと判定された場合に、実行モジュール43は、
現在のノードの予測モードステータスフラグを解析すること:及び
予測モードステータスフラグの値が第1の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行すること;又は、予測モードステータスフラグの値が第2の値である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行すること;を行うように特に構成される。
オプションで、分割モードで現在のノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されないと判定された場合に、実行モジュール43は、
現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがインター予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測を実行すること;又は、現在のノードによってカバーされる任意のコーディングブロックに使用される予測モードがイントラ予測である場合に、現在のノードによってカバーされる全てのコーディングブロックに対してイントラ予測を実行すること;を行うように特に構成される。
オプションで、実行モジュール43は、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測を実行すること;そして、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行すること;又は
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測を実行すること;そして、分割モードにおいて、現在のノードに含まれるクロマブロックを分割して、分割により得られるクロマブロックを取得し、分割により得られたクロマブロックに対してインター予測を実行すること;を行うように特に構成される。
オプションで、実行モジュール43は、
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してイントラ予測を実行すること;そして、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行すること;又は
分割モードにおいて、現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られたルマブロックに対してインター予測を実行すること;そして、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測を実行すること;を行うように特に構成される。
オプションで、現在のノードによってカバーされる全てのコーディングブロックに対してインター予測が実行される場合に、取得モジュール41は、現在のノードの子ノードの分割サブモードを取得するようにさらに構成され、子ノードには、ルマブロック及びクロマブロックが含まれる;そして
判定モジュール42は、分割サブモードで現在のノードの子ノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されるかどうかを判定するようにさらに構成される;そして
分割サブモードで現在のノードの子ノードを分割することによって、第1の予め設定したサイズを有するルマブロックが取得されると判定された場合に、実行モジュール43は、分割サブモード以外の分割モードで現在のノードの子ノードを分割して、対応するコーディングブロックを取得し、対応するコーディングブロックに対してインター予測を実行すること;又は、現在のノードの子ノードをコーディングブロックとして使用し、コーディングブロックに対してインター予測を実行すること;を行うように特に構成される。
本願のこの実施形態で提供される画像予測機器は、前述した方法の実施形態で技術的解決策を実行することができる。実装原理及びその技術的効果は類似しており、詳細はここでは再び説明しない。
図16は、本願の一実施形態によるビデオ符号化装置のハードウェアの概略構造図である。図16に示されるように、この実施形態で提供されるビデオ符号化装置50は、プロセッサ51と、プロセッサ51の実行可能命令を格納するように構成されたメモリ52とを含む。プロセッサ51は、前述した方法の実施形態においてビデオ符号化装置に対応する画像予測方法を実行することができる。実装原理及びその技術的効果は類似しており、詳細はここでは再び説明しない。
オプションで、メモリ52は、独立していてもよく、又はプロセッサ51と統合してもよい。
メモリ52がプロセッサ51から独立した構成要素である場合に、ビデオ符号化装置50は、メモリ52及びプロセッサ51を接続するように構成されたバス53をさらに含む。
図17は、本願の一実施形態によるビデオ復号化装置のハードウェアの概略構造図である。図17に示されるように、この実施形態で提供されるビデオ復号化装置60は、プロセッサ61と、プロセッサ61の実行可能命令を格納するように構成されたメモリ62とを含む。プロセッサ61は、前述した方法の実施形態においてビデオ復号化装置に対応する画像予測方法を実行することができる。実装原理及びその技術的効果は類似しており、詳細はここでは再び説明しない。
オプションで、メモリ62は、独立していてもよく、又はプロセッサ61と統合してもよい。
メモリ62がプロセッサ61から独立した構成要素である場合に、ビデオ復号化装置60は、メモリ62及びプロセッサ61を接続するように構成されたバス63をさらに含む。
図18は、本願の一実施形態による画像予測システムの概略構造図である。図18に示されるように、この実施形態で提供される画像予測システムは、ビデオ収集装置70、図16に示される実施形態のビデオ符号化装置50、図17に示される実施形態のビデオ復号化装置60、及び表示装置80を含む。
ビデオ符号化装置50は、ビデオ収集装置70とビデオ復号化装置60との両方に接続され、ビデオ復号化装置60は、表示装置80に接続される。
具体的には、ビデオ符号化装置50は、ビデオ収集装置70によって送信されたビデオ又は画像情報を受信する。ビデオ符号化装置50は、前述した方法の実施形態においてビデオ符号化装置50に対応する画像予測方法を実行することができる。ビデオ符号化装置50は、符号化したビデオ又は画像情報をビデオ復号化装置60に送信する。ビデオ復号化装置60は、前述した方法の実施形態においてビデオ復号化装置60に対応する画像予測方法を実行することができる。ビデオ復号化装置60は、復号化したビデオ又は画像情報を表示のために表示装置80に送信する。
本願のこの実施形態で提供される画像予測システムは、前述した方法の実施形態を実行することができるビデオ符号化装置と、前述した方法の実施形態を実行することができるビデオ復号化装置とを含む。実装原理及びその技術的効果は類似しており、詳細はここでは再び説明しない。
本願の一実施形態は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は、コンピュータプログラムを記憶し、コンピュータプログラムは、前述した方法の実施形態におけるステップを実施するためにプロセッサによって実行される。
本願の一実施形態は、ビデオ復号化方法をさらに提供し、この方法は、
現在のノードの分割モードを取得するステップであって、現在のノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;
現在のノードの分割モードで現在のノードをさらに分割することによって、小さなクロマブロックが取得されるかどうかを判定するステップであって、小さなクロマブロックは、第1の予め設定した値以下のピクセル数量を有するクロマブロックである、又は小さなクロマブロックは、第2の予め設定した値以下のピクセル数量を有するブロック単位のクロマブロックである、判定するステップと;
現在のノードの分割モードで現在のノードをさらに分割することによって、小さなクロマブロックが取得される場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行して、分割により得られたコーディングブロックの予測情報を取得するステップと;を含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全ての小さなクロマブロックに対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全ての小さなクロマブロックに対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られたコーディングユニット(coding unit)に対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られたコーディングユニット(coding unit)に対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
現在のノードのノード予測モードフラグ(cons_pred_mode_flag)を解析するステップ;及び
ノード予測モードフラグの値が第1の値である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップ;又は
ノード予測モードフラグの値が第2の値である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップ;を含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
ルートノードとして機能する現在のノードを分割することによって得られた任意のコーディングブロックに使用される予測モードがインター予測である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップ;又は
ルートノードとして機能する現在のノードを分割することによって得られた任意のコーディングブロックに使用される予測モードがイントラ予測である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップ;を含む。
オプションで、第1の予め設定した値は2又は4であり、或いは第2の予め設定した値は16、8、又は32である。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、
ノードの分割モードにおいて、現在のノードに含まれるルマブロックを分割して、ルマコーディングブロックを取得するステップと;
ルマコーディングブロックに対してイントラ予測を実行するステップと;
現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行するステップと;を含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
ノードの分割モードにおいて、現在のノードに含まれるルマブロックを分割して、ルマコーディングブロックを取得するステップと;
ルマコーディングブロックに対してインター予測又はイントラ予測を実行するステップと;
現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測又はイントラ予測を実行するステップと;を含む。
オプションで、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測又はイントラ予測を実行するステップは、
クロマコーディングブロックをクロマ予測ブロックとして使用し、クロマ予測ブロックに対してイントラ予測を実行するステップ;又は
クロマコーディングブロックを分割してクロマ予測ブロックを取得し、分割により得られたクロマ予測ブロックに対してインター予測を実行するステップ;を含む。
本願の一実施形態は、ビデオ復号化方法をさらに提供し、この方法は、
現在のノードの分割モードを取得するステップであって、現在のノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;
現在のノードの分割モードで現在のノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップと;
現在のノードの分割モードで現在のノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得される場合に、ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に対してイントラ予測を実行し、分割により得られたコーディングブロックの予測ブロックを取得するステップと;を含む。
オプションで、この方法は、
現在のノードの分割モードで現在のノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得されない場合に、現在のノードの分割モードで現在のノードをさらに分割することによって、小さなクロマブロックが取得されるかどうかを判定するステップであって、小さなクロマブロックは、第1の予め設定した値以下のピクセル数量を有するクロマブロックであるか、又は小さなクロマブロックは、第2の予め設定した値以下のピクセル数量を有するブロック単位のクロマブロックである、判定するステップと;
現在のノードの分割モードで現在のノードをさらに分割することによって、小さなクロマブロックが取得される場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行して、分割により得られたコーディングブロックの予測ブロックを取得するステップと;をさらに含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全ての小さなクロマブロックに対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られた全ての小さなクロマブロックに対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られたコーディングユニット(coding unit)に対してインター予測を実行するステップを含む;又は
ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、ルートノードとして機能する現在のノードを分割することによって得られたコーディングユニット(coding unit)に対してイントラ予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
現在のノードのノード予測モードフラグ(cons_pred_mode_flag)を解析するステップと;
ノード予測モードフラグの値が第1の値である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップと;
ノード予測モードフラグの値が第2の値である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップと;を含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
ルートノードとして機能する現在のノードを分割することによって得られた任意のコーディングブロックに使用される予測モードがインター予測である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップと;
ルートノードとして機能する現在のノードを分割することによって得られた任意のコーディングブロックに使用される予測モードがイントラ予測である場合に、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップを含む。
オプションで、第1の予め設定した値は2又は4であり、或いは第2の予め設定した値は16、8、又は32である。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してイントラ予測を実行するステップは、
ノードの分割モードにおいて、現在のノードに含まれるルマブロックを分割して、ルマコーディングブロックを取得するステップと;
ルマコーディングブロックに対してイントラ予測を実行するステップと;
現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してイントラ予測を実行するステップと;を含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測又はイントラ予測を実行するステップは、
ノードの分割モードにおいて、現在のノードに含まれるルマブロックを分割して、ルマコーディングブロックを取得するステップと;
ルマコーディングブロックに対してインター予測又はイントラ予測を実行するステップと;
現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測又はイントラ予測を実行するステップと;を含む。
オプションで、現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、クロマコーディングブロックに対してインター予測又はイントラ予測を実行するステップは、
クロマコーディングブロックをクロマ予測ブロックとして使用し、クロマ予測ブロックに対してイントラ予測を実行するステップ;又は
クロマコーディングブロックを分割してクロマ予測ブロックを取得し、分割により得られたクロマ予測ブロックに対してインター予測を実行するステップを含む。
オプションで、ルートノードとして機能する現在のノードを分割することによって得られたコーディングブロック(coding block)に対してインター予測を実行するステップは、
現在のノードの分割モードで現在のノードを分割して、現在のノードの子ノードを取得するステップと;
現在のノードの子ノードの分割サブモードを取得するステップであって、子ノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;
分割サブモードで現在のノードの子ノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップと;
分割サブモードで現在のノードの子ノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得された場合に、分割サブモード以外の分割モードで現在のノードの子ノードを分割して対応するコーディングユニットを取得し、対応するコーディングユニットに対してインター予測を実行するステップ;又は、現在のノードの子ノードをコーディングユニットとして使用し、コーディングユニットに対してインター予測を実行するステップ;を含む。
オプションで、予め設定したサイズは、4×4、4×8、8×4、2×4、又は4×2であり得る。
本願の一実施形態は、ビデオ復号化方法をさらに提供し、この方法は、
現在のノードの分割モードを取得するステップであって、現在のノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;
ルートノードとして機能する現在のノードを分割することによって得られた全てのコーディングブロック(coding block)に使用される予測モードがインター予測モードである場合に、現在のノードの分割モードで現在のノードを分割して、現在のノードの子ノードを取得するステップと;
現在のノードの子ノードの分割サブモードを取得するステップであって、子ノードには、ルマブロック及びクロマブロックが含まれる、取得するステップと;
分割サブモードで現在のノードの子ノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得されるかどうかを判定するステップと;
分割サブモードで現在のノードの子ノードをさらに分割することによって、予め設定したサイズを有するルマブロックが取得された場合に、分割サブモード以外の分割モードで現在のノードの子ノードを分割して対応するコーディングユニットを取得し、対応するコーディングユニットに対してインター予測を実行するステップ;又は、現在のノードの子ノードをコーディングユニットとして使用し、コーディングユニットに対してインター予測を実行するステップ;を含む。
本願のこの実施形態で提供される第1のビデオ復号化方法は、ビデオ復号化におけるブロック分割モードに関する。この実施形態におけるビデオデータ形式は、YUV4:2:0形式である。同様の方法が、YUV4:2:2形式のデータにも使用できる。
ステップ1:ノードAの分割モードSを解析する。ノードAがさらに分割される場合に、ステップ2が実行される。現在のノードが子ノードにさらに分割されない場合に、現在のノードは1つのコーディングユニットに対応し、コーディングユニットに関する情報が解析される。
ノードAの分割モードは、四分木分割、垂直二分木分割、水平二分木分割、垂直三分木分割、及び水平三分木分割のうちの少なくとも1つであり得る。分割モードは、別の分割モードであってもよい。これは、本願に限定されない。現在のノードの分割モードに関する情報は、ビットストリームで送信され得る。現在のノードの分割モードは、ビットストリーム内の対応する構文要素を解析することによって取得できる。あるいはまた、現在のノードの分割モードは、予め設定した規則に従って決定してもよい。これは、本願に限定されない。
ステップ2:(ノードAの幅及び高さ、及び/又はノードAの分割モード、及び/又はノードBの幅及び高さが、以下の条件のうちの少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた子ノード内の少なくとも1つの子ノードBのクロマブロックが、小さなブロックであるかどうかを判定する。ノードAを分割することによって得られた子ノード内の少なくとも1つの子ノードBのクロマブロックが小さなブロックである場合に、ステップ3~ステップ6が実行される。
具体的には、ノードAの少なくとも1つの子ノードBのクロマブロックが小さなブロックであるかどうかは、以下の方法のうちの1つに従って決定され得る:
(1)ノードAの少なくとも1つの子ノードBのクロマブロックのサイズが2×2、2×4、又は4×2である場合に、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;
(2)ノードAの少なくとも1つの子ノードBのクロマブロックの幅又は高さが2である場合に、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;
(3)ノードAに128個のルマピクセルが含まれ、三分木分割がノードAに使用される場合に、又はノードAに64個のルマピクセルが含まれ、二分木分割、四分木分割、又は三分木分割がノードAに使用される場合に、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;
(4)ノードAに256個のルマピクセルが含まれ、三分木分割又は四分木分割がノードAに使用される場合に、又はノードAに128個のルマピクセルが含まれ、二分木分割がノードAに使用される場合に、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;
(5)ノードAにN1個のルマピクセルが含まれ、三分木分割がノードAに使用される場合に(N1は64、128、又は256である)、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;
(6)ノードAにN2個のルマピクセルが含まれ、四分木分割がノードAに使用される場合に(N2は64又は256である)、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである;又は
(7)ノードAにN3個のルマピクセルが含まれ、二分木分割がノードAに使用される場合に(N3は64、128、又は256である)、ノードAの少なくとも1つの子ノードBのクロマブロックは小さなブロックである。
ノードAが128個のルマピクセルを含むことは、現在のノードの面積が128である、又はノードAの幅と高さとの積が128であると説明することもできることに留意されたい。詳細はここでは説明しない。
ステップ3:ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測を実行することを制限するか、又はノードAのカバレッジ領域内の全てのコーディングユニットに対してインター予測を実行することを制限する。ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測又はインター予測が実行されるため、ハードウェアによる小さなブロックの並列処理を実施することができ、それによりコーディング性能が向上する。
ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測又はインター予測を実行するかどうかは、以下の方法のうちの1つに従って決定され得る。
方法1:構文テーブル内のフラグに基づいて、イントラ予測又はインター予測のどちらが実行されるかを決定する。
分割モードSでノードAを分割することによって得られた少なくとも1つの子ノードBのクロマブロックが小さなブロックである(そしてノードAのクロマブロックが小さなブロックではない)場合に、フラグcons_pred_mode_flagは、ビットストリームから解析される。cons_pred_mode_flagの値が0である場合に、それは、ノードAのカバレッジ領域内の全てのコーディングユニットに対してインター予測が実行されることを示し、又はcons_pred_mode_flagの値が1である場合に、それは、ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行されることを示す。cons_pred_mode_flagは、ブロック分割中に解析する必要がある構文要素であり得る。構文要素が解析されると、ノードAのカバレッジ領域内のコーディングユニットのcu_pred_modeが解析されない場合があり、cu_pred_modeの値は、cons_pred_mode_flagの値に対応するデフォルト値である。
イントラ予測モードのみがノードAの子ノードに使用される場合に、例えば、ノードAがイントラ画像に位置している(すなわち、ノードAが位置する画像のタイプはイントラタイプ又はIタイプである)場合に、又はノードAがイントラ画像に位置しており、IBC技術がシーケンスに使用されない場合に、cons_pred_mode_flagの値はデフォルトで1であり、つまりcons_pred_mode_flagはビットストリームに存在しない。IBC技術は、インター予測又はイントラ予測に属し得る。
方法2:ノードAの領域内の第1番目のノードの予測モードに基づいて、イントラ予測又はインター予測のどちらが実行されるかを決定する。
ノードAの領域内の第1番目のコーディングユニットB0の予測モード(第1番目のコーディングユニットB0の予測モードは制限されない)が解析される。第1番目のコーディングユニットB0の予測モードがイントラ予測である場合に、ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行される。第1番目のコーディングユニットB0の予測モードがインター予測である場合に、ノードAのカバレッジ領域内の全てのコーディングユニットに対してインター予測が実行される。
ステップ4:ノードAのカバレッジ領域内のコーディングユニットに使用される予測モードに基づいて、ノードAのクロマブロックの分割モード及びルマブロックの分割モードを決定する。
ノードAのカバレッジ領域内の全てのコーディングユニットにイントラ予測モードが使用される場合に、ノードAのルマブロックを分割モードSで分割して、N個のルマコーディングツリーノードが取得される。ノードAのクロマブロックは、それ以上分割されず、1つのクロマコーディングブロック(略してクロマCB)に対応する。N個のルマコーディングツリーノードはそれ以上分割されないと制限され得るか、又はこれは制限されない。ルマ子ノードがさらに分割される場合に、ルマ子ノードの分割モードが、再帰的な分割のために解析される。ルマコーディングツリーノードがそれ以上分割されない場合に、ルマコーディングツリーノードは1つのルマコーディングブロック(略してルマCB)に対応する。クロマCBに対応するクロマ変換ブロック及びクロマコーディングブロックは同じサイズであり、クロマ予測ブロック及びクロマコーディングブロックは同じサイズである。
ノードAのカバレッジ領域内の全てのコーディングユニットにインター予測モードが使用される場合に、ノードAのルマブロック及びクロマブロックは、分割モードSにおいて、N個のコーディングツリーノードにさらに分割され、それらコーディングツリーノードには、ルマブロック及びクロマブロックが含まれる。N個のコーディングツリーノードは、さらに分割される場合と、それ以上分割されない場合とがある。それ以上分割しない場合に、N個のコーディングツリーノードは、ルマブロック及びクロマブロックを含むコーディングユニットに対応する。
ステップ5:ノードAを分割することによって得られたCUの予測情報及び残余情報を解析する。
予測情報には、予測モード(イントラ予測モード又は非イントラ予測モードを示す)、イントラ予測モード、インター予測モード、動き情報等が含まれる。動き情報には、予測方向(順方向、逆方向、又は双方向)、参照インデックス(reference index)、及び動きベクトル(motion vector)等の情報が含まれ得る。
残余情報には、コーディングしたブロックフラグ(coded block flag, cbf)、変換係数、変換タイプ(DCT-2、DST-7、又はDCT-8等)等が含まれる。変換タイプは、デフォルトでDCT-2であり得る。
ノードAを分割することによって得られた全てのCUに対してイントラ予測のみを実行するように制限される場合に、ノードAを分割することによって得られたルマCBの予測情報を解析するステップは、skip_flagの値、merge_flagの値、及びcu_pred_modeの値をデフォルトで0、0、及び1にそれぞれ設定する(つまり、skip_flag、merge_flag、及びcu_pred_modeは全てビットストリームに存在しない)ステップ、又はskip_flagの値、及びcu_pred_modeの値をデフォルトでそれぞれ0及び1に設定する(つまり、skip_flagとcu_pred_modeとは両方ともビットストリームに存在しない)ステップ;ルマCBのイントラ予測モードに関する情報を解析するステップと;を含む。ノードAを分割することによって得られたクロマCBの予測情報を解析するステップは、クロマCBのイントラ予測モードを解析するステップを含む。クロマCBのイントラ予測モードは、以下の方法に従って解析することができる:
(1)ビットストリーム内の構文要素を解析して、イントラ予測モードを取得する;又は
(2)線形モデルモード、DMモード(chroma derived mode, DM)、IBCモード等のクロマイントラ予測モードのセットにおいて、イントラ予測モードを1つのイントラ予測モードに直接設定する。
ノードAを分割することによって得られた全てのCUに対してインター予測のみを実行するように制限される場合に、ノードAを分割することによって得られたCUの予測モードを解析するステップは、skip_flag又は/及びmerge_flagを解析し、cu_pred_mode値をデフォルトで0に設定し、マージインデックス(merge index)、インター方向(inter dir)、参照インデックス(reference index)、動きベクトル予測子インデックス(motion vector predictor index)、動きベクトル差(motion vector difference)等のインター予測情報を解析するステップを含む。
skip_flagは、スキップモードのフラグを表す。skip_flagの値が1である場合に、それは、スキップモードが現在のCUに使用されることを示し、又はskip_flagの値が0である場合に、それは、スキップモードが現在のCUに使用されないことを示す。merge_flagは、マージモードのフラグである。merge_flagの値が1である場合に、それは、マージモードが現在のCUに使用されることを示し、又はmerge_flagの値が0である場合に、それは、マージモードが現在のCUに使用されないことを示す。cu_pred_modeは、コーディングユニットの予測モードフラグを表す。cu_pred_modeの値が1である場合に、それは、現在の予測ユニットに対してイントラ予測が実行されることを示し、又はcu_pred_modeの値が0である場合に、それは、現在の予測ユニットに対して共通のインター予測(インター方向、参照インデックス、動きベクトル予測子インデックス、及びビットストリーム内の動きベクトル差等の情報を識別する)が実行されることを示す。
この実施形態では、イントラ予測モードは、コーディングブロックが位置する画像の空間ドメイン参照ピクセルを使用してコーディングブロックの予測子が生成される予測モードであることに留意されたい。例えば、イントラ予測モードは、直接的な現在のモード(direct current mode, DC mode)、平面モード(Planar mode)、角度モード(angular mode)、テンプレートマッチングモード(template matching mode)、又はIBCモードである。
インター予測モードは、コーディングブロックの参照画像の時間的ドメイン参照ピクセルを使用してコーディングブロックの予測子が生成される予測モードである。例えば、インター予測モードは、スキップモード(Skip mode)、マージモード(Merge mode)、AMVP(advanced motion vector prediction)モード(これは、共通のインターモードとも呼ばれる)、又はIBCモードである。
ステップ6:各CUを復号化して、ノードAに対応する画像ブロックの再構成した信号を取得する。
例えば、CUの予測情報に基づいて各CUに対してインター予測処理又はイントラ予測処理を実行して、CUのインター予測画像又はイントラ予測画像が取得される。次に、各CUの残余情報に基づいて、変換係数に対して量子化解除及び逆変換処理を実行して残余画像を取得し、残余画像を対応する領域の予測画像に加算して、再構成画像が生成される。
この実施形態の分割モードにおいて、イントラ予測が実行される小さなクロマブロックは生成されないため、小さなクロマブロックに対してイントラ予測を実行するケースは回避される。
本願の一実施形態で提供される第2のビデオ復号化方法では、ステップ1、ステップ2、ステップ3、及びステップ6は、それぞれ、第1の復号化方法におけるステップ1、ステップ2、ステップ3、及びステップ6と同じである。差異は以下の通りである。
ステップ4:ノードAのクロマブロックの分割モード及びルマブロックの分割モードを決定する。
ノードAのルマブロックを分割モードSでさらに分割して、N個のルマコーディングツリーノードが生成される。ノードAのクロマブロックは、それ以上分割されず、1つのクロマコーディングブロック(クロマCB)に対応する。クロマCBに対応するクロマ変換ブロック及びクロマコーディングブロックは同じサイズである。[注:第1の実施形態と比較して、この実施形態では、インター予測モード又はイントラ予測モードの使用が制限されているかどうかにかかわらず、クロマブロックはそれ以上分割されず、ルマブロックは分割モードSで常に分割される。これは、ノードAのカバレッジ領域の予測モードとは無関係である。]
ステップ5:ノードAを分割することによって得られたCUの予測情報及び残余情報を解析する。
ノードAを分割することによって得られた全てのCUに対してイントラ予測のみを実行するように制限される場合に、処理は、第1の実施形態における処理と同じである。
ノードAを分割することによって得られた全てのCUに対してインター予測のみを実行するように制限される場合に、ノードAを分割することによって得られたルマCBの予測情報を解析するステップは、skip_flag又は/及びmerge_flagを解析し、cu_pred_mode値をデフォルトで0に設定し、マージインデックス(merge index)、インター方向(inter dir)、参照インデックス(reference index)、動きベクトル予測子インデックス(motion vector predictor index)、動きベクトル差(motion vector difference)等のインター予測情報を解析するステップを含む。ルマCB内の各4×4サブブロックの動き情報は、構文解析によって得られたインター予測情報に基づいて導出される。
ノードAを分割することによって得られた全てのCUに対してインター予測のみを実行するように制限される場合に、ノードAを分割することによって得られたクロマCBの予測情報を解析する必要はない。クロマCBは2×2クロマサブブロックに分割される(分割モードは分割モードSであり得る)。各2×2クロマサブブロックの動き情報は、2×2クロマサブブロックに対応する4×4ルマ領域の動き情報である。
この実施形態の分割モードにおいて、イントラ予測が実行される小さなクロマブロックは生成されず、16ピクセル未満のサイズを有する変換ブロックも生成されない。従って、イントラ予測及び係数コーディングにおける前述した処理の複雑さは回避される。
本願の一実施形態で提供される第3のビデオ復号化方法において、ステップ1、ステップ2、ステップ3、ステップ4、及びステップ6は、第2の復号化方法のステップ1、ステップ2、ステップ3、ステップ4、及びステップ6と同じである。差異は以下の通りである。
ステップ5:ノードAを分割することによって得られたCUの予測情報及び残余情報を解析する。
ノードAを分割することによって得られた全てのCUに対してイントラ予測のみを実行するように制限される場合に、処理は、第2の実施形態における処理と同じである。
ノードAを分割することによって得られた全てのCUに対してインター予測のみを実行するように制限される場合に、ノードAを分割することによって得られたルマCBの予測情報を解析するステップは、第2の実施形態における解析するステップと同じである。
ノードAを分割することによって得られた全てのCUに対してインター予測のみを実行するように制限される場合に、ノードAを分割することによって得られたクロマCBの予測情報を解析する必要はない。クロマ予測ブロック及びクロマコーディングブロックは同じサイズである。クロマCBの動き情報は、クロマCBに対応するルマ領域内の予め設定した位置(例えば、ルマ領域の中間、右下隅、又は左上隅)の動き情報である。
この実施形態の分割モードにおいて、イントラ予測が実行される小さなクロマブロックは生成されず、小さな変換ブロックも生成されず、且つインター予測が実行される小さなクロマブロックも生成されない。
本願の一実施形態は、第4のビデオ復号化方法を提供し、この方法は、以下のステップを含む。
ステップ1:このステップは、前述した第1のビデオ復号化方法のステップ1と同じである。
ステップ2:(ノードAの幅及び高さ、及び/又はノードAの分割モード、及び/又はノードBの幅及び高さが、ケース1の少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた子ノード内に少なくとも1つの子ノードBの4×4のルマブロックがあるかどうかを判定する。
ノードAに関するサイズ(幅及び高さ)及び/又は分割モードSが、ケース1の少なくとも1つの条件を満たす場合に、ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行されるように制限される。それ以外の場合に、(ノードAのサイズ、及び/又はノードAの分割モードS、及び/又はノードBの幅及び高さが、ケース2の少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた子ノード内の少なくとも1つの子ノードBのクロマブロックが小さなブロックであるかどうかが判定される場合に、ステップ3~ステップ6が実行される。
具体的には、ノードAの少なくとも1つの子ノードBのクロマブロックが小さなブロックであると決定する方法について、以下の2つのケースがある。
ケース1:
以下の第1の予め設定した条件のうちの1つ又は複数の条件が真である場合に、分割モードSでノードAを分割することによって、4×4のルマブロックが取得される:
(1)ノードAにはM1個のピクセルが含まれ、ノードAの分割モードは四分木分割であり、例えば、M1は64である;
(2)ノードAにはM2個のピクセルが含まれ、ノードAの分割モードは三分木分割であり、例えば、M2は64である;
(3)ノードAにはM3個のピクセルが含まれ、ノードAの分割モードは二分木分割であり、例えば、M3は32である;
(4)ノードAの幅は第2のしきい値の4倍であり、ノードAの高さは第2のしきい値に等しく、ノードAの分割モードは垂直三分木分割である;
(5)ノードAの幅は第2のしきい値に等しく、ノードAの高さは第2のしきい値の4倍であり、ノードAの分割モードは水平三分木分割である;
(6)ノードAの幅は第2のしきい値の2倍であり、ノードAの高さは第2のしきい値に等しく、現在のノードの分割モードは垂直二分木分割である;
(7)ノードAの高さは第2のしきい値の2倍であり、ノードAの幅は第2のしきい値に等しく、現在のノードの分割モードは水平二分木分割である;又は
(8)ノードAの幅又は/及び高さは第2のしきい値の2倍であり、ノードAの分割モードは四分木分割である。
サイズは、ノードAに対応する画像領域の幅及び高さ、ノードAに対応する画像領域に含まれるルマピクセルの数量、又はノードAに対応する画像領域の面積であり得る。
一般に、現在のノードの幅は、現在のノードに対応するルマブロックの幅であり、現在のノードの高さは、現在のノードに対応するルマブロックの高さである。特定の実施態様では、例えば、第2のしきい値は4であり得る。
ケース2:
(1)ノードAの少なくとも1つの子ノードBのクロマブロックのサイズが2×4又は4×2である;
(2)ノードAの少なくとも1つの子ノードBのクロマブロックの幅又は高さが2である;
(3)ノードAには128個のルマピクセルが含まれ、三分木分割がノードAに使用される;又は、ノードAには64個のルマピクセルが含まれ、二分木分割、四分木分割、又は三分木分割がノードAに使用される;
(4)ノードAには256個のルマピクセルが含まれ、三分木分割又は四分木分割がノードAに使用される、又はノードAには128個のルマピクセルが含まれ、二分木分割がノードAに使用される;
(5)ノードAにはN1個のルマピクセルが含まれ、三分木分割がノードAに使用され、N1は64、128、又は256である;
(6)ノードAにはN2個のルマピクセルが含まれ、四分木分割がノードAに使用され、N2は64又は256である;又は
(7)ノードAにはN3個のルマピクセルが含まれ、二分木分割がノードAに使用され、N3は64、128、又は256である。
ノードAが128個のルマピクセルを含むことは、現在のノードの面積が128である、又はノードAの幅と高さとの積が128であると説明することもできることに留意されたい。詳細はここでは説明しない。
ステップ3:このステップは、前述した第1のビデオ復号化方法のステップ3と同じである。
ステップ4:ノードAのカバレッジ領域内のコーディングユニットに使用される予測モードに基づいて、ノードAのクロマブロックの分割モード及びルマブロックの分割モードを決定する。
ノードAのカバレッジ領域内の全てのコーディングユニットにインター予測モードが使用される場合に、ノードAのルマブロック及びクロマブロックを分割モードSで分割して、ノードAの又は/及びノードAのカバレッジ領域内の子ノードを取得する。ノードAの又は/及びノードAのカバレッジ領域内の子ノードの分割モードで4×4のルマブロックが生成される場合に、子ノードの分割モードは許可されないか、又は子ノードをそれ以上分割することは許可されない。例えば、ノードAのサイズが8×8であり、2つの8×4(又は4×8)ノードが水平二分木分割(又は垂直二分木分割)によって生成される場合に、8×4(又は4×8)ノードをさらに分割すると、4×4ブロックが生成される。この場合に、8×4(又は4×8)ノードをそれ以上分割することは許可されない。
ノードAのカバレッジ領域内の全てのコーディングユニットにイントラ予測モードが使用される場合に、前述した第1、第2、又は第3のビデオ復号化方法が実装のために使用され得る。詳細は、ここでは再び説明しない。例えば、ノードAのルマブロックは分割され、ノードAのクロマブロックは分割されない。
ステップ5:ノードAを分割することによって得られたCUの予測ブロック及び残余情報を解析する。
このステップは、前述した第1のビデオ復号化方法のステップ5と同じであり、詳細は、ここでは再び説明しない。
ステップ6:各CUを復号化して、ノードAに対応する画像ブロックの再構成した信号を取得する。
このステップは、前述した第1のビデオ復号化方法のステップ6の方法で実行することができ、詳細は、ここでは再び説明しない。
本願の一実施形態は、第5のビデオ復号化方法を提供し、この方法は、以下のステップを含む。
ステップ1:このステップは、前述した第1のビデオ復号化方法のステップ1と同じである。
ステップ2:(ノードAの幅及び高さ、及び/又はノードAの分割モード、及び/又はノードBの幅及び高さがケース1の少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた子ノード内に少なくとも1つの子ノードBの4×4のルマブロックがあるかどうかを判定する。ノードAに関するサイズ(幅及び高さ)及び/又は分割モードSがケース1の少なくとも1つの条件を満たす場合に、ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行されるように制限される。
あるいはまた、(ノードAのサイズ、及び/又はノードAの分割モードS、及び/又はノードBの幅及び高さが、ケース2の少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた子ノード内の少なくとも1つの子ノードBのクロマブロックが小さなブロックであるかどうかが判定される場合に、ステップ3~ステップ6が実行される。
具体的には、ノードAの少なくとも1つの子ノードBのクロマブロックが小さなブロックであると決定するための方法について、以下の2つのケースがある。
ケース1:
以下の第1の予め設定した条件のうちの1つ又は複数の条件が真である場合に、分割モードSでノードAを分割することにより、4×4のルマブロックが取得される:
(1)ノードAにはM1個のピクセルが含まれ、ノードAの分割モードは四分木分割であり、例えば、M1は64である;
(2)ノードAにはM2個のピクセルが含まれ、ノードAの分割モードは三分木分割であり、例えば、M2は64である;
(3)ノードAにはM3個のピクセルが含まれ、ノードAの分割モードは二分木分割であり、例えば、M3は32である;
(4)ノードAの幅は第2のしきい値の4倍であり、ノードAの高さは第2のしきい値に等しく、ノードAの分割モードは垂直三分木分割である;
(5)ノードAの幅は第2のしきい値に等しく、ノードAの高さは第2のしきい値の4倍であり、ノードAの分割モードは水平三分木分割である;
(6)ノードAの幅は第2のしきい値の2倍であり、ノードAの高さは第2のしきい値に等しく、現在のノードの分割モードは垂直二分木分割である;
(7)ノードAの高さは第2のしきい値の2倍であり、ノードAの幅は第2のしきい値に等しく、現在のノードの分割モードは水平二分木分割である;又は
(8)ノードAの幅又は/及び高さは第2のしきい値の2倍であり、ノードAの分割モードは四分木分割である。
サイズは、ノードAに対応する画像領域の幅及び高さ、ノードAに対応する画像領域に含まれるルマピクセルの数量、又はノードAに対応する画像領域の面積であり得る。
一般に、現在のノードの幅は、現在のノードに対応するルマブロックの幅であり、現在のノードの高さは、現在のノードに対応するルマブロックの高さである。特定の実施態様では、例えば、第2のしきい値は4であり得る。
ケース2:
(1)ノードAの少なくとも1つの子ノードBのクロマブロックのサイズが2×4又は4×2である;
(2)ノードAの少なくとも1つの子ノードBのクロマブロックの幅又は高さが2である;
(3)ノードAには128個のルマピクセルが含まれ、三分木分割がノードAに使用される、又はノードAには64個のルマピクセルが含まれ、二分木分割、四分木分割、又は三分木分割がノードAに使用される;
(4)ノードAには256個のルマピクセルが含まれ、三分木分割又は四分木分割がノードAに使用される、又はノードAには128個のルマピクセルが含まれ、二分木分割がノードAに使用される;
(5)ノードAにはN1個のルマピクセルが含まれ、三分木分割がノードAに使用され、N1は64、128、又は256である;
(6)ノードAにはN2個のルマピクセルが含まれ、四分木分割がノードAに使用され、N2は64又は256である;又は
(7)ノードAにはN3個のルマピクセルが含まれ、二分木分割がノードAに使用され、N3は64、128、又は256である。
ノードAが128個のルマピクセルを含むことは、現在のノードの面積が128である、又はノードAの幅と高さとの積が128であると説明することもできることに留意されたい。詳細は、ここでは説明しない。
ステップ3:このステップは、前述した第1のビデオ復号化方法のステップ3と同じである。
ステップ4:ノードAのカバレッジ領域内のコーディングユニットに使用される予測モードに基づいて、ノードAのクロマブロックの分割モード及びルマブロックの分割モードを決定する。
ノードAのカバレッジ領域内の全てのコーディングユニットにインター予測モードが使用される場合に、ノードAのルマブロック及びクロマブロックを分割モードSで分割して、ノードAの又は/及びノードAのカバレッジ領域内の子ノードが取得される。ノードAの又は/及びノードAのカバレッジ領域内の子ノードの分割モードで4×4のルマブロックが生成される場合に、子ノードの分割モードは許可されないか、又は子ノードをそれ以上分割することは許可されない。例えば、ノードAのサイズが8×8であり、2つの8×4(又は4×8)ノードが水平二分木分割(又は垂直二分木分割)によって生成される場合に、8×4(又は4×8)ノードをさらに分割すると、4×4ブロックが生成される。この場合に、8×4(又は4×8)ノードをそれ以上分割することは許可されない。
ノードAのカバレッジ領域内の全てのコーディングユニットにイントラ予測モードが使用される場合に、前述した第1、第2、又は第3のビデオ復号化方法が実装のために使用され得る。詳細は、ここでは再び説明しない。例えば、ノードAのルマブロックは分割され、ノードAのクロマブロックは分割されない。
ステップ5:ノードAを分割することによって得られたCUの予測ブロック及び残余情報を解析する。
このステップは、前述した第1のビデオ復号化方法のステップ5と同じであり、詳細は、ここでは再び説明しない。
ステップ6:各CUを復号化して、ノードAに対応する画像ブロックの再構成した信号を取得する。
このステップは、前述した第1のビデオ復号化方法におけるステップ6の方法で実行することができ、詳細は、ここでは再び説明しない。
いくつかの実施形態では、現在の領域が1回分割されると、4×4のルマブロックが生成され(例えば、QT分割が64個のルマピクセルを有する領域に使用されるか、又はTT分割が128個のルマピクセルを有する領域に使用される)、デフォルトでは、現在の領域にイントラ予測モードのみを使用することが許可されるように制限される。
それ以外の場合に、現在の領域にインター予測モード又はイントラ予測モードのみを使用することが許可されていることを示すためにフラグが送信される。
現在の領域にインター予測モードのみを使用することが許可されるように制限される場合に、ルマブロックとクロマブロックとの両方が分割される。現在の領域内のノードを分割して、4×4のルマブロックが生成される場合に、そのような分割は許可されない。例えば、現在のノードが8×8ノードであり、2つの8×4ノードがHBT(又はVBT)分割によって生成される場合に、これらのノードをさらに分割すると、4×4のCUが生成される。この場合に、これらの8×4ノードをそれ以上分割することは許可されない。
領域にイントラ予測モードのみを使用することが許可されるように制限される場合に、この場合の実施態様は、第1の実施形態の実施態様と同じである(すなわち、ルマブロックは分割され、クロマブロックは分割されない)。
本願の技術的解決策の有利な効果は以下の通りである:本願の実施形態ではブロック分割方法が提供され、従って、比較的小さな面積を有するクロマブロックにイントラ予測モードが使用されるケースが回避される。これは、ハードウェアのパイプライン処理及びデコーダの実装に資する。さらに、インター予測では、いくつかの予測モードの構文要素を解析するプロセスをスキップすることができ、それによりコーディングの複雑さが軽減される。係数コーディングにおける前述した処理の複雑さは回避され、それによりコーディングの複雑さが軽減される。
ブロック分割方法は以下の通りであり得、この方法は、
ノードAの分割モードを解析するステップと;
(ノードAの幅及び高さ、及び/又はノードAの分割モード、及び/又はノードBの幅及び高さが、前述した条件のうちの少なくとも1つの条件を満たすかどうかを判定することによって)分割モードSでノードAを分割することによって得られた少なくとも1つの子ノードBのクロマブロックが小さなブロックであるかどうかを判定するステップと;
「はい」の場合に、それは、ノードAのカバレッジ領域内の全てのコーディングユニットに、イントラ予測モードのみ又はインター予測モードのみが使用されるように制限され、
ノードAのクロマブロック及びルマブロックをさらに分割するかどうかを判定するステップと;を含む。
ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行される場合に、ノードAのルマブロックは分割モードSでさらに分割され、ノードAのクロマブロックはそれ以上分割されない。ノードAのカバレッジ領域内の全てのコーディングユニットに対してインター予測が実行される場合に、ノードAのルマブロック及びクロマブロックは、分割モードSにおいて、N個のコーディングツリーノードにさらに分割され、それらコーディングツリーノードには、ルマブロック及びクロマブロックが含まれる。
ノードAのルマブロックは、分割モードSでさらに分割され、ノードAのクロマブロックは、それ以上分割されない。クロマ変換ブロック及びクロマコーディングブロックは同じサイズである。
ノードAのカバレッジ領域内の全てのコーディングユニットに対してイントラ予測が実行される場合に、クロマ予測ブロック及びクロマコーディングブロックは同じサイズである。ノードAのカバレッジ領域内の全てのコーディングユニットに対してインター予測が実行される場合に、クロマ予測ブロックはサブブロックに分割され(サブブロックのサイズはクロマコーディングブロックのサイズよりも小さい)、各サブブロックの動きベクトルは、サブブロックに対応するルマ領域の動きベクトルである。
ノードAのルマブロックは、分割モードSでさらに分割され、ノードAのクロマブロックは、それ以上分割されない。クロマコーディングブロックに対応するクロマ変換ブロック及びクロマコーディングブロックは同じサイズであり、クロマ予測ブロック及びクロマコーディングブロックは同じサイズであり、クロマCBの動き情報は、クロマCBに対応するルマ領域内の予め設定した位置の動き情報である。
当業者は、本明細書に開示及び説明する様々な例示的な論理ブロック、モジュール、及びアルゴリズムステップを参照して説明する機能が、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せによって実装できることを理解することができる。ソフトウェアによって実装される場合に、例示的な論理ブロック、モジュール、及びステップを参照して説明する機能は、1つ又は複数の命令又はコードとしてコンピュータ可読媒体に格納され又はこれを介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体等の有形媒体に対応するコンピュータ可読記憶媒体、又はある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体(例えば、通信プロトコルによる)を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形のコンピュータ可読記憶媒体、又は(2)信号又は搬送波等の通信媒体に対応し得る。データ記憶媒体は、本願で説明した技術を実装するための命令、コード、及び/又はデータ構造を検索するために、1つ又は複数のコンピュータ或いは1つ又は複数のプロセッサによってアクセスできる任意の使用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
例示的であるがこれらに限定されない例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は別のコンパクトディスク記憶機器、磁気ディスク記憶機器又は別の磁気記憶機器、フラッシュメモリ、或いは命令又はデータ構造の形式で目的のプログラムコードを格納するために使用でき、且つコンピュータによってアクセスできる任意の他の媒体を含み得る。さらに、あらゆる接続は、コンピュータ可読媒体と適切に呼ばれる。例えば、命令がWebサイト、サーバ、又は別のリモートソースから同軸ケーブル、光ファイバ、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波等の無線技術を介して送信される場合に、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波等の無線技術は、媒体の規定に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、実際には非一時的な有形の記憶媒体を意味することを理解されたい。本明細書で使用されるディスク(disk)及びディスク(disc)には、コンパクトディスク(CD)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD)、及びブルーレイディスクが含まれる。ディスク(disk)は、通常、データを磁気的に再生するが、ディスク(disc)はレーザーを使用してデータを光学的に再生する。前述の組合せも、コンピュータ可読媒体の範囲に含める必要がある。
命令は、1つ又は複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPBGA)、或いは他の同等の集積回路又はディスクリートロジック回路等の1つ又は複数のプロセッサによって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、又は本明細書で説明した技術を実施するのに適した任意の他の構造のいずれかであり得る。さらに、いくつかの態様では、本明細書で説明した例示的な論理ブロック、モジュール、及びステップを参照して説明した機能は、符号化及び復号化のために構成される専用のハードウェア及び/又はソフトウェアモジュール内で提供され得るか、又は結合コーデックに組み込まれ得る。さらに、技術は、1つ又は複数の回路又は論理要素に完全に実装され得る。
本願の技術は、無線ハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、様々な機器又は装置に実装され得る。本願では、開示した技術を実行するように構成された機器の機能的態様を強調するために、様々なコンポーネント、モジュール、又はユニットを説明しているが、それらコンポーネント、モジュール、又はユニットは、必ずしも異なるハードウェアユニットによって実装されるとは限らない。実際に、上記のように、様々なユニットは、適切なソフトウェア及び/又はファームウェアと組み合わせてコーデックハードウェアユニットに組み合わせることができ、又は相互運用可能なハードウェアユニット(上記の1つ又は複数のプロセッサを含む)によって提供することができる。
前述の実施形態において、実施形態における説明には、それぞれの焦点がある。一実施形態で詳細に説明していない部分については、他の実施形態の関連する説明を参照されたい。
前述の説明は、本願の単なる特定の実施態様であり、本願の保護範囲を制限することを意図するものではない。本願に開示した技術的範囲内で当業者によって容易に理解されるいかなる変形又は置換も、本願の保護範囲内に含まれるものとする。従って、本願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
画像予測方法であって、当該方法は、
現在のノードの分割モードを取得するステップであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックである、取得するステップと、
前記現在のノードの前記分割モード及び前記現在のノードのサイズに基づいて、前記現在のノードが第1の条件を満たすかどうかを判定するステップと、
前記現在のノードが前記第1の条件を満たすと判定された場合に、前記現在のノードに属する全てのコーディングブロックに対してイントラ予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するステップと、を含む、
方法。
[実施例2]
前記現在のノードが前記第1の条件を満たさないと判定された場合に、当該方法は、
前記現在のノードの前記分割モード及び前記現在のノードの前記サイズに基づいて、前記現在のノードが第2の条件を満たすかどうかを判定するステップと、
前記現在のノードが前記第2の条件を満たすと判定された場合に、同じ予測モードを使用して、前記現在のノードに属する全ての前記コーディングブロックに対して予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するステップと、をさらに含み、
前記予測モードは、イントラ予測又はインター予測である、実施例1に記載の方法。
[実施例3]
前記現在のノードの前記分割モード及び前記現在のノードの前記サイズに基づいて、前記現在のノードが第2の条件を満たすかどうかを前記判定するステップは、
前記現在のノードの前記分割モード、前記現在のノードの前記サイズ、及び現在のクロマフォーマット(Chroma format)に基づいて、前記現在のノードが前記第2の条件を満たすかどうかを判定するステップを含む、実施例2に記載の方法。
[実施例4]
同じ予測モードを使用して、前記現在のノードに属する全ての前記コーディングブロックに対して予測を前記実行するステップは、
前記現在のノードの予測モードステータスフラグを解析するステップと、
前記予測モードステータスフラグの値が第1の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を実行するステップ、又は、前記予測モードステータスフラグの値が第2の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してイントラ予測を実行するステップ、を含む、実施例2又は3に記載の方法。
[実施例5]
前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を前記実行するステップは、
前記現在のノードの前記分割モードで前記現在のノードを分割して、前記現在のノードの子ノードを取得するステップと、
前記現在のノードの前記子ノードのサイズに基づいて、前記現在のノードの前記子ノードに許可されていない分割モードを決定するステップと、
前記現在のノードの前記子ノードに許可されていない前記分割モードに基づいて、前記現在のノードの前記子ノードのブロック分割ポリシーを決定するステップと、
前記現在のノードの前記子ノードの前記ブロック分割ポリシーに従って、前記現在のノードの前記子ノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行するステップと、を含む、実施例2乃至4のいずれか一項に記載の方法。
[実施例6]
前記現在のノードに属する全ての前記コーディングブロックに対してイントラ予測を前記実行するステップは、
前記分割モードにおいて、前記現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、分割により得られた前記ルマブロックに対してイントラ予測を実行するステップと、
前記現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、且つ該クロマコーディングブロックに対してイントラ予測を実行するステップと、を含む、実施例1乃至4のいずれか一項に記載の方法。
[実施例7]
前記現在のノードの前記サイズは、前記現在のノードに対応するコーディングツリーノードのサイズと、前記現在のノードを取得するために使用される前記分割モードとに基づいて決定される、実施例1乃至6のいずれか一項に記載の方法。
[実施例8]
画像予測方法であって、当該方法は、
現在のノードの分割モードを取得するステップであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックである、取得するステップと、
前記現在のノードの前記分割モード及び前記現在のノードのサイズに基づいて、前記現在のノードが予め設定した条件を満たすかどうかを判定するステップと、
前記現在のノードが前記予め設定した条件を満たすと判定された場合に、同じ予測モードを使用して、前記現在のノードに属する全てのコーディングブロックに対して予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するステップと、を含み、
前記予測モードは、イントラ予測又はインター予測である、
方法。
[実施例9]
前記現在のノードの前記分割モード及び前記現在のノードのサイズに基づいて、前記現在のノードが予め設定した条件を満たすかどうかを前記判定するステップは、
前記現在のノードの前記分割モード、前記現在のノードの前記サイズ、及び現在のクロマフォーマット(Chroma format)に基づいて、前記現在のノードが前記予め設定した条件を満たすかどうかを判定するステップを含む、実施例8に記載の方法。
[実施例10]
同じ予測モードを使用して、前記現在のノードに属する全てのコーディングブロックに対して予測を前記実行するステップは、
前記現在のノードの予測モードステータスフラグを解析するステップと、
前記予測モードステータスフラグの値が第1の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を実行するステップ、又は、前記予測モードステータスフラグの値が第2の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してイントラ予測を実行するステップを含む、実施例8又は9に記載の方法。
[実施例11]
前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を前記実行するステップは、
前記現在のノードの前記分割モードで前記現在のノードを分割して、前記現在のノードの子ノードを取得するステップと、
前記現在のノードの前記子ノードのサイズに基づいて、前記現在のノードの前記子ノードに許可されていない分割モードを決定するステップと、
前記現在のノードの前記子ノードに許可されていない前記分割モードに基づいて、前記現在のノードの前記子ノードのブロック分割ポリシーを決定するステップと、
前記現在のノードの前記子ノードの前記ブロック分割ポリシーに従って、前記現在のノードの前記子ノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行するステップと、を含む、実施例8乃至10のいずれか一項に記載の方法。
[実施例12]
前記現在のノードの前記サイズは、前記現在のノードに対応するコーディングツリーノードのサイズと、前記現在のノードを取得するために使用される前記分割モードとに基づいて決定される、実施例8乃至11のいずれか一項に記載の方法。
[実施例13]
画像予測方法であって、当該方法は、
現在のノードのサイズ及び前記現在のノードの予測モードに基づいて、前記現在のノードに許可されていない分割モードを決定するステップであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックである、決定するステップと、
前記現在のノードに許可されていない前記分割モードに基づいて、前記現在のノードのブロック分割ポリシーを決定するステップと、
前記現在のノードの前記ブロック分割ポリシーに従って、前記現在のノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行するステップと、を含む、
方法。
[実施例14]
現在のノードのサイズ及び前記現在のノードの予測モードに基づいて、前記現在のノードに許可されていない分割モードを前記決定するステップは、
前記現在のノードに属する全てのコーディングブロックの予測にインター予測モードのみが使用されるかどうかを判定し、且つ前記現在のノードのルマブロックのサンプルの数量が32であるかどうかを判定するステップと、
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されると判定され、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が32であると判定された場合に、二分木分割が、前記現在のノードに許可されていない前記分割モードであると決定するステップと、を含む、実施例13に記載の方法。
[実施例15]
現在のノードのサイズ及び前記現在のノードの予測モードに基づいて、前記現在のノードに許可されていない分割モードを前記決定するステップは、
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されるかどうかを判定し、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が64であるかどうかを判定するステップと、
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されると判定され、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が64であると判定された場合に、三分木分割が、前記現在のノードに許可されていない前記分割モードであると決定するステップと、を含む、実施例13又は14に記載の方法。
[実施例16]
前記現在のノードの前記サイズは、前記現在のノードに対応するコーディングツリーノードのサイズと、前記現在のノードを取得するために使用される分割モードとに基づいて決定される、実施例13乃至15のいずれか一項に記載の方法。
[実施例17]
画像予測機器であって、当該機器は、
現在のノードの分割モードを取得するように構成された取得モジュールであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックである、取得モジュールと、
前記現在のノードの前記分割モード及び前記現在のノードのサイズに基づいて、前記現在のノードが第1の条件を満たすかどうかを判定するように構成された判定モジュールと、
前記現在のノードが前記第1の条件を満たすと判定された場合に、前記現在のノードに属する全てのコーディングブロックに対してイントラ予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するように構成された実行モジュールと、を含む、
機器。
[実施例18]
前記判定モジュールは、前記現在のノードが前記第1の条件を満たさないと判定された場合に、前記現在のノードの前記分割モード及び前記現在のノードに前記サイズに基づいて、前記現在のノードが第2の条件を満たすかどうか判定するようにさらに構成され、
前記実行モジュールは、前記現在のノードが前記第2の条件を満たすと判定された場合に、同じ予測モードを使用して、前記現在のノードに属する全ての前記コーディングブロックに対して予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するようにさらに構成され、
前記予測モードは、イントラ予測又はインター予測である、実施例17に記載の機器。
[実施例19]
前記判定モジュールは、前記現在のノードの前記分割モード、前記現在のノードの前記サイズ、及び現在のクロマフォーマット(Chroma format)に基づいて、前記現在のノードが前記第2の条件を満たすかどうかを判定するように構成される、実施例18に記載の機器。
[実施例20]
前記実行モジュールは、
前記現在のノードの予測モードステータスフラグを解析すること、及び
前記予測モードステータスフラグの値が第1の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を実行すること、又は、前記予測モードステータスフラグの値が第2の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してイントラ予測を実行すること、を行うように構成される、実施例18又は19に記載の機器。
[実施例21]
前記実行モジュールは、
前記現在のノードの前記分割モードで前記現在のノードを分割して、前記現在のノードの子ノードを取得すること、
前記現在のノードの前記子ノードのサイズに基づいて、前記現在のノードの前記子ノードに許可されていない分割モードを決定すること、
前記現在のノードの前記子ノードに許可されていない前記分割モードに基づいて、前記現在のノードの前記子ノードのブロック分割ポリシーを決定すること、及び
前記現在のノードの前記子ノードの前記ブロック分割ポリシーに従って、前記現在のノードの前記子ノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行すること、を行うように構成される、実施例18乃至20のいずれか一項に記載の機器。
[実施例22]
前記実行モジュールは、
前記分割モードにおいて、前記現在のノードに含まれるルマブロックを分割して、分割により得られるルマブロックを取得し、該分割により得られたルマブロックに対してイントラ予測を実行すること、及び
前記現在のノードに含まれるクロマブロックをクロマコーディングブロックとして使用し、該クロマコーディングブロックに対してイントラ予測を実行すること、を行うように構成される、実施例17乃至21のいずれか一項に記載の機器。
[実施例23]
画像予測機器であって、当該機器は、
現在のノードの分割モードを取得するように構成された取得モジュールであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックである、取得モジュールと、
前記現在のノードの前記分割モード及び前記現在のノードのサイズに基づいて、前記現在のノードが予め設定した条件を満たすかどうかを判定するように構成された判定モジュールと、
前記現在のノードが前記予め設定した条件を満たすと判定された場合に、同じ予測モードを使用して、前記現在のノードに属する全てのコーディングブロックに対して予測を実行して、前記現在のノードに属する全ての前記コーディングブロックの予測子を取得するように構成された実行モジュールと、を含み、
前記予測モードは、イントラ予測又はインター予測である、
機器。
[実施例24]
前記判定モジュールは、前記現在のノードの前記分割モード、前記現在のノードの前記サイズ、及び現在のクロマフォーマット(Chroma format)に基づいて、前記現在のノードが前記予め設定した条件を満たすかどうかを判定するように構成される、実施例23に記載の機器。
[実施例25]
前記実行モジュールは、
前記現在のノードの予測モードステータスフラグを解析すること、及び
前記予測モードステータスフラグの値が第1の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してインター予測を実行すること、又は、前記予測モードステータスフラグの値が第2の値である場合に、前記現在のノードに属する全ての前記コーディングブロックに対してイントラ予測を実行すること、を行うように構成される、実施例23又は24に記載の機器。
[実施例26]
前記実行モジュールは、
前記現在のノードの前記分割モードで前記現在のノードを分割して、前記現在のノードの子ノードを取得すること、
前記現在のノードの前記子ノードのサイズに基づいて、前記現在のノードの前記子ノードに許可されていない分割モードを決定すること、
前記現在のノードの前記子ノードに許可されていない前記分割モードに基づいて、前記現在のノードの前記子ノードのブロック分割ポリシーを決定すること、及び
前記現在のノードの前記子ノードの前記ブロック分割ポリシーに従って、前記現在のノードの前記子ノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行すること、を行うように構成される、実施例23乃至25のいずれか一項に記載の機器。
[実施例27]
画像予測機器であって、当該機器は、
現在のノードのサイズ及び前記現在のノードの予測モードに基づいて、前記現在のノードに許可されていない分割モードを決定するように構成された決定ユニットであって、前記現在のノードは、現在の画像のコーディングツリーユニット(coding tree unit)内の画像ブロックであり、前記決定ユニットは、前記現在のノードに許可されていない前記分割モードに基づいて、前記現在のノードのブロック分割ポリシーを決定するようにさらに構成される、決定ユニットと、
前記現在のノードの前記ブロック分割ポリシーに従って、前記現在のノードに対応するコーディングブロックを取得し、且つ該対応するコーディングブロックに対してインター予測を実行するように構成された予測ユニットと、を含む、
機器。
[実施例28]
前記決定ユニットは、
前記現在のノードに属する全てのコーディングブロックの予測にインター予測モードのみが使用されるかどうかを判定し、且つ前記現在のノードのルマブロックのサンプルの数量が32であるかどうかを判定すること、及び
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されると判定され、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が32であると判定された場合に、二分木分割が、前記現在のノードに許可されていない前記分割モードであると決定すること、を行うように構成される、実施例27に記載の機器。
[実施例29]
前記決定ユニットは、
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されるかどうかを判定し、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が64であるかどうかを判定すること、及び
前記現在のノードに属する全ての前記コーディングブロックの予測に前記インター予測モードのみが使用されると判定され、且つ前記現在のノードの前記ルマブロックの前記サンプルの数量が64であると判定された場合に、三分木分割が、前記現在のノードに許可されていない前記分割モードであると決定するように構成される、実施例27又は28に記載の機器。
[実施例30]
プロセッサと、該プロセッサの実行可能命令を格納するように構成されたメモリとを含むビデオ符号化装置であって、前記プロセッサは、実施例1乃至16のいずれか一項に記載の前記方法を実行する、ビデオ符号化装置。
[実施例31]
プロセッサと、該プロセッサの実行可能命令を格納するように構成されたメモリとを含むビデオ復号化装置であって、前記プロセッサは、実施例1乃至16のいずれか一項に記載の前記方法を実行する、ビデオ復号化装置。
[実施例32]
ビデオ収集装置、実施例30に記載の前記ビデオ符号化装置、実施例31に記載の前記ビデオ復号化装置、及び表示装置を含む画像予測システムであって、前記ビデオ符号化装置は、前記ビデオ収集装置と前記ビデオ復号化装置との両方に接続され、前記ビデオ復号化装置は、前記表示装置に接続される、画像予測システム。
[実施例33]
コンピュータプログラムを記憶するコンピュータ可読記憶媒体であって、前記コンピュータプログラムは、プロセッサによって実行されて、実施例1乃至16のいずれか一項に記載の前記方法が実施される、コンピュータ可読記憶媒体。