以下、添付図面を参照して、本開示の実施例について、本開示の属する技術分野における通常の知識を有する者が容易に実施し得るように詳細に説明する。しかし、本開示は、様々な異なる形態で実現でき、ここで説明する実施例に限定されない。
本開示の実施例を説明するにあたり、公知の構成又は機能についての具体的な説明が本開示の要旨を不明確にするおそれがあると判断される場合には、それについての詳細な説明は省略する。そして、図面において、本開示についての説明と関係ない部分は省略し、同様の部分には同様の図面符号を付した。
本開示において、ある構成要素が他の構成要素と「連結」、「結合」又は「接続」されているとするとき、これは、直接的な連結関係だけでなく、それらの間に別の構成要素が存在する間接的な連結関係も含むことができる。また、ある構成要素が他の構成要素を「含む」又は「有する」とするとき、これは、特に反対される記載がない限り、別の構成要素を排除するのではなく、別の構成要素をさらに含むことができることを意味する。
本開示において、「第1」、「第2」などの用語は、一つの構成要素を他の構成要素から区別する目的のみで使用され、特に言及されない限り、構成要素間の順序又は重要度などを限定しない。したがって、本開示の範囲内において、一実施例の第1構成要素を他の実施例で第2構成要素と呼んでもよく、これと同様に、一実施例の第2構成要素を他の実施例で第1構成要素と呼んでもよい。
本開示において、互いに区別される構成要素は、それぞれの特徴を明確に説明するためのものであり、構成要素が必ずしも分離されることを意味するものではない。つまり、複数の構成要素が統合されて一つのハードウェア又はソフトウェア単位で構成されてもよく、一つの構成要素が分散されて複数のハードウェア又はソフトウェア単位で構成されてもよい。よって、別に言及しなくても、このように統合された又は分散された実施例も本開示の範囲に含まれる。
本開示において、さまざまな実施例で説明する構成要素が必ず必要不可欠な構成要素を意味するものではなく、一部は選択的な構成要素であり得る。したがって、一実施例で説明する構成要素の部分集合で構成される実施例も本開示の範囲に含まれる。また、様々な実施例で説明する構成要素にさらに他の構成要素を含む実施例も、本開示の範囲に含まれる。
本開示は、画像の符号化及び復号化に関するものであって、本開示で使用される用語は、本開示で新たに定義されない限り、本開示の属する技術分野における通常の意味を持つことができる。
本開示において、「ピクチャ(picture)」は、一般的に、特定の時間帯のいずれか一つの画像を示す単位を意味し、スライス(slice)/タイル(tile)は、ピクチャの一部を構成する符号化単位であって、一つのピクチャは、一つ以上のスライス/タイルで構成できる。また、スライス/タイルは、一つ以上のCTU(coding tree unit)を含むことができる。
本開示において、「ピクセル(pixel)」又は「ペル(pel)」は、一つのピクチャ(又は画像)を構成する最小の単位を意味することができる。また、ピクセルに対応する用語として「サンプル(sample)」が使用できる。サンプルは、一般的に、ピクセル又はピクセルの値を示すことができ、ルマ(luma)成分のピクセル/ピクセル値のみを示すこともでき、クロマ(chroma)成分のピクセル/ピクセル値のみを示すこともできる。
本開示において、「ユニット(unit)」は、画像処理の基本単位を示すことができる。ユニットは、ピクチャの特定の領域及び当該領域に関連する情報のうちの少なくとも一つを含むことができる。ユニットは、場合に応じて、「サンプルアレイ」、「ブロック(block)」又は「領域(area)」などの用語と混用して使用できる。一般な場合、M×Nブロックは、M個の列とN個の行からなるサンプル(又はサンプルアレイ)又は変換係数(transform coefficient)のセット(又はアレイ)を含むことができる。
本開示において、「現在ブロック」は、「現在コーディングブロック」、「現在コーディングユニット」、「符号化対象ブロック」、「復号化対象ブロック」又は「処理対象ブロック」のうちのいずれか一つを意味することができる。予測が行われる場合、「現在ブロック」は、「現在予測ブロック」又は「予測対象ブロック」を意味することができる。変換(逆変換)/量子化(逆量子化)が行われる場合、「現在ブロック」は「現在変換ブロック」又は「変換対象ブロック」を意味することができる。フィルタリングが行われる場合、「現在ブロック」は「フィルタリング対象ブロック」を意味することができる。
また、本開示において、「現在ブロック」は、クロマブロックという明示的な記載がない限り、ルマ成分ブロックとクロマ成分ブロックを全て含むブロック又は「現在ブロックのルマブロック」を意味することができる。現在ブロックのルマ成分ブロックは、明示的に「ルマブロック」又は「現在ルマブロック」のようにルマ成分ブロックという明示的な記載を含んで表現できる。また、現在ブロックのクロマ成分ブロックは、明示的に「クロマブロック」又は「現在クロマブロック」のようにクロマ成分ブロックという明示的な記載を含んで表現できる。
本開示において、「/」と「、」は「及び/又は」と解釈されることができる。例えば、「A/B」と「A、B」は「A及び/又はB」と解釈されることができる。また、「A/B/C」と「A、B、C」は、「A、B及び/又はCのうちの少なくとも一つ」を意味することができる。
本開示において、「又は」は「及び/又は」と解釈されることができる。例えば、「A又はB」は、1)「A」のみを意味するか、2)「B」のみを意味するか、3)「A及びB」を意味することができる。又は、本開示において、「又は」は、「追加的に又は代替的に(additionally or alternatively)」を意味することができる。
ビデオコーディングシステムの概要
図1は、本開示によるビデオコーディングシステムを示す図である。
一実施例によるビデオコーディングシステムは、符号化装置10及び復号化装置20を含むことができる。符号化装置10は、符号化されたビデオ(video)及び/又は画像(image)情報又はデータをファイル又はストリーミング形式でデジタル記憶媒体又はネットワークを介して復号化装置20へ伝達することができる。
一実施例による符号化装置10は、ビデオソース生成部11、符号化部12及び伝送部13を含むことができる。一実施例による復号化装置20は、受信部21、復号化部22及びレンダリング部23を含むことができる。前記符号化部12は、ビデオ/画像符号化部と呼ばれることができ、前記復号化部22は、ビデオ/画像復号化部と呼ばれることができる。伝送部13は、符号化部12に含まれることができる。受信部21は、復号化部22に含まれることができる。レンダリング部23は、ディスプレイ部を含むこともでき、ディスプレイ部は、別個のデバイス又は外部コンポーネントとして構成されることもできる。
ビデオソース生成部11は、ビデオ/画像のキャプチャ、合成又は生成過程などを介してビデオ/画像を取得することができる。ビデオソース生成部11は、ビデオ/画像キャプチャデバイス及び/又はビデオ/画像生成デバイスを含むことができる。ビデオ/画像キャプチャデバイスは、例えば、一つ以上のカメラ、以前にキャプチャされたビデオ/画像を含むビデオ/画像アーカイブなどを含むことができる。ビデオ/画像生成デバイスは、例えば、コンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/画像を生成することができる。例えば、コンピュータなどを介して仮想のビデオ/画像が生成されることができ、この場合、ビデオ/画像キャプチャ過程は、関連データが生成される過程に置き換えられることができる。
符号化部12は、入力ビデオ/画像を符号化することができる。符号化部12は、圧縮及び符号化効率のために、予測、変換、量子化などの一連の手順を行うことができる。符号化部12は、符号化されたデータ(符号化されたビデオ/画像情報)をビットストリーム(bitstream)形式で出力することができる。
伝送部13は、ビットストリーム形式で出力された、符号化されたビデオ/画像情報又はデータを、ファイル又はストリーミング形式でデジタル記憶媒体又はネットワークを介して復号化装置20の受信部21に伝達することができる。デジタル記憶媒体は、USB、SD、CD、DVD、Blu-ray(登録商標)、HDD、SSDなどのさまざまな記憶媒体を含むことができる。伝送部13は、予め決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介して伝送するためのエレメントを含むことができる。受信部21は、前記記憶媒体又はネットワークから前記ビットストリームを抽出/受信して復号化部22に伝達することができる。
復号化部22は、符号化部12の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/画像を復号化することができる。
レンダリング部23は、復号化されたビデオ/画像をレンダリングすることができる。レンダリングされたビデオ/画像は、ディスプレイ部を介して表示されることができる。
画像符号化装置の概要
図2は、本開示による実施例が適用できる画像符号化装置を概略的に示す図である。
図2に示されているように、画像符号化装置100は、画像分割部110、減算部115、変換部120、量子化部130、逆量子化部140、逆変換部150、加算部155、フィルタリング部160、メモリ170、インター予測部180、イントラ予測部185及びエントロピー符号化部190を含むことができる。インター予測部180及びイントラ予測部185は、合わせて「予測部」と呼ばれることができる。変換部120、量子化部130、逆量子化部140及び逆変換部150は、レジデュアル(residual)処理部に含まれることができる。レジデュアル処理部は減算部115をさらに含むこともできる。
画像符号化装置100を構成する複数の構成部の全部又は少なくとも一部は、実施例によって一つのハードウェアコンポーネント(例えば、エンコーダ又はプロセッサ)で実現されることができる。また、メモリ170は、DPB(decoded picture buffer)を含むことができ、デジタル記憶媒体によって実現できる。
画像分割部110は、画像符号化装置100に入力された入力画像(又は、ピクチャ、フレーム)を一つ以上の処理ユニット(processing unit)に分割することができる。一例として、前記処理ユニットは、コーディングユニット(coding unit、CU)と呼ばれることができる。コーディングユニットは、コーディングツリーユニット(coding tree unit、CTU)又は最大コーディングユニット(largest coding unit、LCU)をQT/BT/TT(Quad-tree/binary-tree/ternary-tree)構造によって再帰的に(recursively)分割することにより取得されることができる。例えば、一つのコーディングニットは、四分木構造、二分木構造及び/又は三分木構造に基づいて、下位(deeper)デプスの複数のコーディングユニットに分割されることができる。コーディングユニットの分割のために、四分木構造が先に適用され、二分木構造及び/又は三分木構造が後で適用されることができる。それ以上分割されない最終コーディングユニットを基に、本開示によるコーディング手順が行われることができる。最大コーディングユニットが最終コーディングユニットとして使用されることができ、最大コーディングユニットを分割して取得した下位デプスのコーディングユニットが最終コーディングユニットとして使用されることもできる。ここで、コーディング手順とは、後述する予測、変換及び/又は復元などの手順を含むことができる。他の例として、前記コーディング手順の処理ユニットは、予測ユニット(PU:Prediction Unit)又は変換ユニット(TU:Transform Unit)であることができる。前記予測ユニット及び前記変換ユニットは、それぞれ前記最終コーディングユニットから分割又はパーティショニングされることができる。前記予測ユニットは、サンプル予測の単位であることができ、前記変換ユニットは、変換係数を誘導する単位、及び/又は変換係数からレジデュアル信号(residual signal)を誘導する単位であることができる。
予測部(インター予測部180又はイントラ予測部185)は、処理対象ブロック(現在ブロック)に対する予測を行い、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、現在ブロック又はCU単位でイントラ予測が適用されるか、或いはインター予測が適用されるかを決定することができる。予測部は、現在ブロックの予測に関するさまざまな情報を生成してエントロピー符号化部190に伝達することができる。予測に関する情報は、エントロピー符号化部190で符号化されてビットストリーム形式で出力されることができる。
イントラ予測部185は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。参照される前記サンプルは、イントラ予測モード及び/又はイントラ予測技法に従って、前記現在ブロックの周辺(neighbor)に位置することもでき、或いは離れて位置することもできる。イントラ予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプランナーモード(Planarモード、プレーナー(プラナー)モード)を含むことができる。方向性モードは、予測方向の細かい程度に応じて、例えば33個の方向性予測モード又は65個の方向性予測モードを含むことができる。ただし、これは例示に過ぎず、設定に基づいてそれ以上又はそれ以下の個数の方向性予測モードが使用できる。イントラ予測部185は、周辺ブロックに適用された予測モードを用いて、現在ブロックに適用される予測モードを決定することもできる。
インター予測部180は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。この時、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現在ブロックとの動き情報の相関性に基づいて動き情報をブロック、サブブロック又はサンプル単位で予測することができる。前記動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測の場合、周辺ブロックは、現在ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と、参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)を含むことができる。前記参照ブロックを含む参照ピクチャと、前記時間周辺ブロックを含む参照ピクチャとは、同一でもよく、互いに異なってもよい。前記時間周辺ブロックは、コロケート参照ブロック(collocated reference block)、コロケートCU(colCU)などの名前で呼ばれることができる。前記時間周辺ブロックを含む参照ピクチャは、コロケートピクチャ(collocated picture、colPic)と呼ばれることができる。例えば、インター予測部180は、周辺ブロックに基づいて動き情報候補リストを構成し、前記現在ブロックの動きベクトル及び/又は参照ピクチャインデックスを導出するために、どの候補が使用されるかを指示する情報を生成することができる。様々な予測モードに基づいてインター予測が行われることができ、例えばスキップモードとマージモードの場合に、インター予測部180は、周辺ブロックの動き情報を現在ブロックの動き情報として用いることができる。スキップモードの場合、マージモードとは異なり、レジデュアル信号が伝送されないことができる。動き情報予測(motion vector prediction、MVP)モードの場合、周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)として用い、動きベクトル差分(motion vector difference)及び動きベクトル予測子に対するインジケータ(indicator)を符号化することにより、現在ブロックの動きベクトルをシグナリングすることができる。動きベクトル差分は、現在ブロックの動きベクトルと動きベクトル予測子との差を意味することができる。
予測部は、後述する様々な予測方法及び/又は予測技法に基づいて予測信号を生成することができる。例えば、予測部は、現在ブロックの予測のために、イントラ予測又はインター予測を適用することができるだけでなく、イントラ予測とインター予測を同時に適用することができる。現在ブロックの予測のためにイントラ予測とインター予測を同時に適用する予測方法は、CIIP(combined inter and intra prediction)と呼ばれることができる。また、予測部は、現在ブロックの予測のためにイントラブロックコピー(intra block copy、IBC)を行うこともできる。イントラブロックコピーは、例えば、SCC(screen content coding)などのようにゲームなどのコンテンツ画像/動画コーディングのために使用できる。IBCは、現在ブロックから所定の距離だけ離れた位置の現在ピクチャ内の既に復元された参照ブロックを用いて現在ブロックを予測する方法である。IBCが適用される場合、現在ピクチャ内の参照ブロックの位置は、前記所定の距離に該当するベクトル(ブロックベクトル)として符号化されることができる。IBCは、基本的に現在ピクチャ内で予測を行うが、現在ピクチャ内で参照ブロックを導出するという点で、インター予測と同様に行われることができる。すなわち、IBCは、本開示で説明されるインター予測技法のうちの少なくとも1つを用いることができる。
予測部によって生成された予測信号は、復元信号を生成するために用いられるか、或いはレジデュアル信号を生成するために用いられることができる。減算部115は、入力画像信号(原本ブロック、原本サンプルアレイ)から、予測部から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算して、レジデュアル信号(residual signal、残余ブロック、残余サンプルアレイ)を生成することができる。生成されたレジデュアル信号は、変換部120に伝送されることができる。
変換部120は、レジデュアル信号に変換技法を適用して変換係数(transform coefficients)を生成することができる。例えば、変換技法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve Transform)、GBT(Graph-Based Transform)、又はCNT(Conditionally Non-linear Transform)のうちの少なくとも一つを含むことができる。ここで、GBTは、ピクセル間の関係情報をグラフで表現するとするとき、このグラフから得られた変換を意味する。CNTは、以前に復元されたすべてのピクセル(all previously reconstructed pixel)を用いて予測信号を生成し、それに基づいて取得される変換を意味する。変換過程は、正方形の同じサイズを有するピクセルブロックに適用されることもでき、正方形ではない、可変サイズのブロックに適用されることもできる。
量子化部130は、変換係数を量子化してエントロピー符号化部190に伝送することができる。エントロピー符号化部190は、量子化された信号(量子化された変換係数に関する情報)を符号化してビットストリーム形式で出力することができる。前記量子化された変換係数に関する情報は、レジデュアル情報と呼ばれることができる。量子化部130は、係数スキャン順序(scan order)に基づいて、ブロック形式の量子化された変換係数を1次元ベクトル形式で再整列することができ、前記1次元ベクトル形式の量子化された変換係数に基づいて、前記量子化された変換係数に関する情報を生成することもできる。
エントロピー符号化部190は、例えば、指数ゴロム(exponential Golomb)、CAVLC(context-adaptive variable length coding)、CABAC(context-adaptive binary arithmetic coding)などの様々な符号化方法を行うことができる。エントロピー符号化部190は、量子化された変換係数の他に、ビデオ/画像復元に必要な情報(例えば、シンタックス要素(syntax elements)の値など)を一緒に又は別々に符号化することもできる。符号化された情報(例えば、符号化されたビデオ/画像情報)は、ビットストリーム形式でNAL(network abstraction layer)ユニット単位で伝送又は保存されることができる。前記ビデオ/画像情報は、適応パラメータセット(APS)、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)又はビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、前記ビデオ/画像情報は、一般制限情報(general constraint information)をさらに含むことができる。本開示で言及されたシグナリング情報、伝送される情報及び/又はシンタックス要素は、上述した符号化手順を介して符号化されて前記ビットストリームに含まれることができる。
前記ビットストリームは、ネットワークを介して伝送されることができ、又はデジタル記憶媒体に保存されることができる。ここで、ネットワークは、放送網及び/又は通信網などを含むことができ、デジタル記憶媒体は、USB、SD、CD、DVD、Blu-ray、HDD、SSDなどのさまざまな記憶媒体を含むことができる。エントロピー符号化部190から出力された信号を伝送する伝送部(図示せず)及び/又は保存する保存部(図示せず)が画像符号化装置100の内/外部要素として備えられることができ、又は伝送部はエントロピー符号化部190の構成要素として備えられることもできる。
量子化部130から出力された、量子化された変換係数は、レジデュアル信号を生成するために用いられることができる。例えば、量子化された変換係数に逆量子化部140及び逆変換部150を介して逆量子化及び逆変換を適用することにより、レジデュアル信号(レジデュアルブロック又はレジデュアルサンプル)を復元することができる。
加算部155は、復元されたレジデュアル信号をインター予測部180又はイントラ予測部185から出力された予測信号に加えることにより、復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使用されることができる。加算部155は、復元部又は復元ブロック生成部と呼ばれることができる。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使用されることができ、後述するようにフィルタリングを経て次のピクチャのインター予測のために使用されることもできる。
フィルタリング部160は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部160は、復元ピクチャに様々なフィルタリング方法を適用して、修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ170、具体的にはメモリ170のDPBに保存することができる。前記様々なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、双方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部160は、各フィルタリング方法についての説明で後述するようにフィルタリングに関する様々な情報を生成してエントロピー符号化部190に伝達することができる。フィルタリングに関する情報は、エントロピー符号化部190で符号化されてビットストリーム形式で出力されることができる。
メモリ170に伝送された、修正された復元ピクチャは、インター予測部180で参照ピクチャとして使用されることができる。画像符号化装置100は、これを介してインター予測が適用される場合、画像符号化装置100と画像復号化装置での予測ミスマッチを回避することができ、符号化効率も向上させることができる。
メモリ170内のDPBは、インター予測部180での参照ピクチャとして使用するために、修正された復元ピクチャを保存することができる。メモリ170は、現在ピクチャ内の動き情報が導出された(又は符号化された)ブロックの動き情報及び/又は既に復元されたピクチャ内ブロックの動き情報を保存することができる。前記保存された動き情報は、空間周辺ブロックの動き情報又は時間周辺ブロックの動き情報として活用するために、インター予測部180に伝達されることができる。メモリ170は、現在ピクチャ内の復元されたブロックの復元サンプルを保存することができ、イントラ予測部185に伝達することができる。
画像復号化装置の概要
図3は、本開示による実施例が適用できる画像復号化装置を概略的に示す図である。
図3に示されているように、画像復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、メモリ250、インター予測部260及びイントラ予測部265を含んで構成できる。インター予測部260及びイントラ予測部265を合わせて「予測部」と呼ばれることができる。逆量子化部220、逆変換部230はレジデュアル処理部に含まれることができる。
画像復号化装置200を構成する複数の構成部の全部又は少なくとも一部は、実施例によって一つのハードウェアコンポーネント(例えば、デコーダ又はプロセッサ)で実現されることができる。また、メモリ170は、DPBを含むことができ、デジタル記憶媒体によって実現できる。
ビデオ/画像情報を含むビットストリームを受信した画像復号化装置200は、図2の画像符号化装置100で行われたプロセスに対応するプロセスを実行して画像を復元することができる。例えば、画像復号化装置200は、画像符号化装置で適用された処理ユニットを用いて復号化を行うことができる。したがって、復号化の処理ユニットは、例えばコーディングユニットであることができる。コーディングユニットは、コーディングツリーユニット又は最大コーディングユニットを分割して取得できる。そして、画像復号化装置200を介して復号化及び出力された復元画像信号は、再生装置(図示せず)を介して再生できる。
画像復号化装置200は、図2の画像符号化装置から出力された信号をビットストリーム形式で受信することができる。受信された信号は、エントロピー復号化部210を介して復号化できる。例えば、エントロピー復号化部210は、前記ビットストリームをパーシングして画像復元(又はピクチャ復元)に必要な情報(例えば、ビデオ/画像情報)を導出することができる。前記ビデオ/画像情報は、適応パラメータセット(APS)、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)又はビデオパラメータセット(VPS)などの様々なパラメータセットに関する情報をさらに含むことができる。また、前記ビデオ/画像情報は、一般制限情報(general constraint information)をさらに含むことができる。画像復号化装置は、画像を復号化するために、前記パラメータセットに関する情報及び/又は前記一般制限情報をさらに用いることができる。本開示で言及されたシグナリング情報、受信される情報及び/又はシンタックス要素は、前記復号化手順を介して復号化されることにより、前記ビットストリームから取得されることができる。例えば、エントロピー復号化部210は、指数ゴロム符号化、CAVLC又はCABACなどのコーディング方法に基づいてビットストリーム内の情報を復号化し、画像復元に必要なシンタックス要素の値、レジデュアルに関する変換係数の量子化された値を出力することができる。より詳細には、CABACエントロピー復号化方法は、ビットストリームから各シンタックス要素に該当するビン(bin)を受信し、復号化対象シンタックス要素情報と周辺ブロック及び復号化対象ブロックの復号化情報、或いは以前ステップで復号化されたシンボル/ビンの情報を用いてコンテキスト(context)モデルを決定し、決定されたコンテキストモデルに基づいてビン(bin)の発生確率を予測してビンの算術復号化(arithmetic decoding)を行うことにより、各シンタックス要素の値に該当するシンボルを生成することができる。この時、CABACエントロピー復号化方法は、コンテキストモデルの決定後、次のシンボル/ビンのコンテキストモデルのために、復号化されたシンボル/ビンの情報を用いてコンテキストモデルを更新することができる。エントロピー復号化部210で復号化された情報のうち、予測に関する情報は、予測部(インター予測部260及びイントラ予測部265)に提供され、エントロピー復号化部210でエントロピー復号化が行われたレジデュアル値、すなわち量子化された変換係数及び関連パラメータ情報は、逆量子化部220に入力されることができる。また、エントロピー復号化部210で復号化された情報のうち、フィルタリングに関する情報は、フィルタリング部240に提供されることができる。一方、画像符号化装置から出力された信号を受信する受信部(図示せず)が画像復号化装置200の内/外部要素としてさらに備えられることができ、又は受信部はエントロピー復号化部210の構成要素として備えられることもできる。
一方、本開示による画像復号化装置は、ビデオ/画像/ピクチャ復号化装置と呼ばれることができる。前記画像復号化装置は、情報デコーダ(ビデオ/画像/ピクチャ情報デコーダ)及び/又はサンプルデコーダ(ビデオ/画像/ピクチャサンプルデコーダ)を含むこともできる。前記情報デコーダは、エントロピー復号化部210を含むことができ、前記サンプルデコーダは、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、メモリ250、インター予測部260及びイントラ予測部265のうちの少なくとも一つを含むことができる。
逆量子化部220では、量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部220は、量子化された変換係数を2次元のブロック形式で再整列することができる。この場合、前記再整列は、画像符号化装置で行われた係数スキャン順序に基づいて行われることができる。逆量子化部220は、量子化パラメータ(例えば、量子化ステップサイズ情報)を用いて、量子化された変換係数に対する逆量子化を行い、変換係数(transform coefficient)を取得することができる。
逆変換部230では、変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を取得することができる。
予測部は、現在ブロックに対する予測を行い、前記現在ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は、エントロピー復号化部210から出力された前記予測に関する情報に基づいて、前記現在ブロックにイントラ予測が適用されるか或いはインター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モード(予測技法)を決定することができる。
予測部が後述の様々な予測方法(技法)に基づいて予測信号を生成することができるのは、画像符号化装置100の予測部についての説明で述べたのと同様である。
イントラ予測部265は、現在ピクチャ内のサンプルを参照して現在ブロックを予測することができる。イントラ予測部185についての説明は、イントラ予測部265に対しても同様に適用されることができる。
インター予測部260は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックに対する予測されたブロックを誘導することができる。この時、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現在ブロックとの動き情報の相関性に基づいて動き情報をブロック、サブブロック又はサンプル単位で予測することができる。前記動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)情報をさらに含むことができる。インター予測の場合に、周辺ブロックは、現在ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)を含むことができる。例えば、インター予測部260は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて前記現在ブロックの動きベクトル及び/又は参照ピクチャインデックスを導出することができる。様々な予測モード(技法)に基づいてインター予測が行われることができ、前記予測に関する情報は、前記現在ブロックに対するインター予測のモード(技法)を指示する情報を含むことができる。
加算部235は、取得されたレジデュアル信号を予測部(インター予測部260及び/又はイントラ予測部265を含む)から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることにより、復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合のように処理対象ブロックに対するレジデュアルがない場合、予測されたブロックが復元ブロックとして使用できる。加算部155についての説明は、加算部235に対しても同様に適用できる。加算部235は、復元部又は復元ブロック生成部と呼ばれることもある。生成された復元信号は、現在ピクチャ内の次の処理対象ブロックのイントラ予測のために使用されることができ、後述するようにフィルタリングを介して次のピクチャのインター予測のために使用されることもできる。
フィルタリング部240は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部240は、復元ピクチャに様々なフィルタリング方法を適用して、修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ250、具体的にはメモリ250のDPBに保存することができる。前記様々なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、双方向フィルタ(bilateral filter)などを含むことができる。
メモリ250のDPBに保存された(修正された)復元ピクチャは、インター予測部260で参照ピクチャとして使用されることができる。メモリ250は、現在ピクチャ内の動き情報が導出された(又は復号化された)ブロックの動き情報及び/又は既に復元されたピクチャ内のブロックの動き情報を保存することができる。前記保存された動き情報は、空間周辺ブロックの動き情報又は時間周辺ブロックの動き情報として活用するために、インター予測部260に伝達することができる。メモリ250は、現在ピクチャ内の復元されたブロックの復元サンプルを保存することができ、イントラ予測部265に伝達することができる。
本明細書において、画像符号化装置100のフィルタリング部160、インター予測部180及びイントラ予測部185で説明された実施例は、それぞれ画像復号化装置200のフィルタリング部240、インター予測部260及びイントラ予測部265にも、同様に又は対応するように適用されることができる。
インター予測の概要
画像符号化/復号化装置は、ブロック単位でインター予測を行って予測サンプルを導出することができる。インター予測は、現在ピクチャ以外のピクチャのデータ要素に依存的な方法で導出される予測技法を意味することができる。現在ブロックに対してインター予測が適用される場合、参照ピクチャ上で動きベクトルによって特定される参照ブロックに基づいて、現在ブロックに対する予測ブロックが誘導されることができる。
このとき、インター予測モードで伝送される動き情報の量を減らすために、周辺ブロックと現在ブロックとの動き情報の相関性に基づいて現在ブロックの動き情報が誘導されることができ、ブロック、サブブロック又はサンプル単位で動き情報が誘導されることができる。このとき、動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。動き情報はインター予測タイプ情報をさらに含むことができる。ここで、インター予測タイプ情報はインター予測の方向性情報を意味することができる。インター予測タイプ情報は、現在ブロックがL0予測、L1予測及びBi予測のうちのいずれか一つを用いて予測されることを指示することができる。
現在ブロックに対してインター予測が適用される場合、現在ブロックの周辺ブロックは、現在ピクチャ内に存在する空間周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間周辺ブロック(temporal neighboring block)を含むことができる。このとき、現在ブロックに対する参照ブロックを含む参照ピクチャと、前記時間周辺ブロックを含む参照ピクチャとは、同一でもよく、異なっていてもよい。前記時間周辺ブロックは、コロケート参照ブロック(collocated reference block)、コロケート符号化ユニット(colCU)などと呼ばれることができる。前記時間周辺ブロックを含む参照ピクチャは、コロケートピクチャ(collocated picture、colPic)と呼ばれることができる。
一方、現在ブロックの周辺ブロックに基づいて動き情報候補リストが構成されることができ、このとき、現在ブロックの動きベクトル及び/又は参照ピクチャインデックスを導出するためにどの候補が使用されるかを指示するフラグ又はインデックス情報がシグナリングされることができる。
動き情報は、インター予測タイプに基づいてL0動き情報及び/又はL1動き情報を含むことができる。L0方向の動きベクトルは、L0動きベクトル又はMVL0と定義されることができ、L1方向の動きベクトルは、L1動きベクトル又はMVL1と定義されることができる。L0動きベクトルに基づいた予測はL0予測と定義されることができ、L1動きベクトルに基づいた予測はL1予測と定義されることができ、前記L0動きベクトル及び前記L1動きベクトルの両方ともに基づいた予測は双予測(Bi prediction)と定義されることができる。ここで、L0動きベクトルは、参照ピクチャリストL0に関連した動きベクトルを意味することができ、L1動きベクトルは、参照ピクチャリストL1に関連した動きベクトルを意味することができる。
参照ピクチャリストL0は、前記現在ピクチャよりも出力順序における以前のピクチャを参照ピクチャとして含むことができ、参照ピクチャリストL1は、前記現在ピクチャよりも出力順序における以後のピクチャを含むことができる。このとき、以前のピクチャは、順方向(参照)ピクチャと定義することができ、前記以後のピクチャは、逆方向(参照ピクチャ)と定義することができる。一方、参照ピクチャリストL0は、現在ピクチャよりも出力順序における以後のピクチャをさらに含むことができる。この場合、参照ピクチャリストL0内で以前ピクチャが先にインデックス化され、以後のピクチャは、その次にインデックス化されることができる。参照ピクチャリストL1は、現在ピクチャよりも出力順序における以前のピクチャをさらに含むことができる。この場合、参照ピクチャリストL1内で以後のピクチャが先にインデックス化され、以前のピクチャはその次にインデックス化されることができる。ここで、出力順序は、POC(picture order count)順序(order)に対応することができる。
図4は、インター予測に基づくビデオ/画像符号化方法を示すフローチャート図である。
図5は、本開示によるインター予測部180の構成を例示的に示す図である。
図4の符号化方法は、図2の画像符号化装置によって行われることができる。具体的に、ステップS410は、インター予測部180によって行われることができ、ステップS420は、レジデュアル処理部によって行われることができる。具体的に、ステップS420は、減算部115によって行われることができる。ステップS430は、エントロピー符号化部190によって行われることができる。ステップS430の予測情報はインター予測部180によって導出され、ステップS430のレジデュアル情報はレジデュアル処理部によって導出されることができる。前記レジデュアル情報は、前記レジデュアルサンプルに対する量子化された変換係数に関する情報を含むことができる。前述したように、前記レジデュアルサンプルは、画像符号化装置の変換部120を介して変換係数として導出され、前記変換係数は、量子化部130を介して量子化された変換係数として導出されることができる。前記量子化された変換係数に関する情報がレジデュアルコーディング手順を介してエントロピー符号化部190で符号化されることができる。
画像符号化装置は、現在ブロックに対するインター予測を行うことができる(S410)。画像符号化装置は、現在ブロックのインター予測モード及び動き情報を導出し、前記現在ブロックの予測サンプルを生成することができる。ここで、インター予測モードの決定、動き情報の導出及び予測サンプルの生成手順は、同時に行われてもよく、いずれか一つの手順が他の手順よりも先に行われてもよい。例えば、図5に示されているように、画像符号化装置のインター予測部180は、予測モード決定部181、動き情報導出部182、及び予測サンプル導出部183を含むことができる。予測モード決定部181で前記現在ブロックに対する予測モードを決定し、動き情報導出部182で前記現在ブロックの動き情報を導出し、予測サンプル導出部183で前記現在ブロックの予測サンプルを導出することができる。例えば、画像符号化装置のインター予測部180は、動き推定(motion estimation)を介して参照ピクチャの一定の領域(探索領域)内で前記現在ブロックと類似のブロックを探索し、前記現在ブロックとの差が最小又は一定の基準以下である参照ブロックを導出することができる。これに基づいて、前記参照ブロックが位置する参照ピクチャを指す参照ピクチャインデックスを導出し、前記参照ブロックと前記現在ブロックとの位置差に基づいて動きベクトルを導出することができる。画像符号化装置は、様々な予測モードのうち、前記現在ブロックに対して適用されるモードを決定することができる。画像符号化装置は、前記様々なインター予測モードに対するレート歪みコスト(Rate-Distortion(RD) cost)を比較し、前記現在ブロックに対する最適の予測モードを決定することができる。しかし、画像符号化装置が現在ブロックに対するインター予測モードを決定する方法は、上記の例に限定されず、様々な方法が利用できる。
例えば、現在ブロックに対するインター予測モードは、マージモード(merge mode)、スキップモード(skip mode)、MVPモード(Motion Vector Prediction mode)、SMVDモード(Symmetric Motion Vector Difference)、アフィンモード(affine mode)、サブブロックベースのマージモード(Subblock-based merge mode)、AMVRモード(Adaptive Motion Vector Resolution mode)、HMVPモード(History-based Motion Vector Predictor mode)、双予測マージモード(Pair-wise average merge mode)、MMVDモード(Merge mode with Motion Vector Differences mode)、DMVRモード(Decoder side Motion Vector Refinement mode)、CIIPモード(Combined Inter and Intra Prediction mode)、及びGPM(Geometric Partitioning mode)のうちの少なくとも一つと決定されることができる。
例えば、現在ブロックにスキップモード又はマージモードが適用される場合、画像符号化装置は、前記現在ブロックの周辺ブロックからマージ候補を誘導し、誘導されたマージ候補を用いてマージ候補リストを構成することができる。また、画像符号化装置は、前記マージ候補リストに含まれているマージ候補が指す参照ブロックのうち、現在ブロックとの差が最小又は一定の基準以下である参照ブロックを導出することができる。この場合、前記導出された参照ブロックに関連するマージ候補が選択され、前記選択されたマージ候補を示すマージインデックス情報が生成されて画像復号化装置にシグナリングされることができる。前記選択されたマージ候補の動き情報を用いて前記現在ブロックの動き情報を導出することができる。
他の例として、前記現在ブロックにMVPモードが適用される場合、画像符号化装置は、前記現在ブロックの周辺ブロックから動きベクトル予測子(MVP、Motion Vector Predictor)候補を誘導し、誘導されたMVP候補を用いてMVP候補リストを構成することができる。また、画像符号化装置は、前記MVP候補リストに含まれているMVP候補のうち、選択されたMVP候補の動きベクトルを前記現在ブロックのMVPとして用いることができる。この場合、例えば、前述した動き推定によって導出された参照ブロックを指す動きベクトルが前記現在ブロックの動きベクトルとして用いられることができ、前記MVP候補のうち、前記現在ブロックの動きベクトルとの差が最も小さい動きベクトルを持つMVP候補が、前記選択されたMVP候補になることができる。前記現在ブロックの動きベクトルから前記MVPを差し引いた差分であるMVD(motion vector difference)が導出されることができる。この場合、前記選択されたMVP候補を示すインデックス情報、及び前記MVDに関する情報が画像復号化装置にシグナリングされることができる。また、MVPモードが適用される場合、前記参照ピクチャインデックスの値は、参照ピクチャインデックス情報で構成されて別途に前記画像復号化装置にシグナリングされることができる。
画像符号化装置は、前記予測サンプルに基づいてレジデュアルサンプルを導出することができる(S420)。画像符号化装置は、前記現在ブロックの原本サンプルと前記予測サンプルとの比較によって前記レジデュアルサンプルを導出することができる。例えば、前記レジデュアルサンプルは、原本サンプルから対応する予測サンプルを減算することにより導出されることができる。
画像符号化装置は、予測情報及びレジデュアル情報を含む画像情報を符号化することができる(S430)。画像符号化装置は、符号化された画像情報をビットストリーム形式で出力することができる。前記予測情報は、前記予測手順に関連した情報であって、予測モード情報(例えば、skip flag、merge flag又はmode indexなど)及び動き情報に関する情報を含むことができる。前記予測モード情報のうち、skip flagは、現在ブロックに対してスキップモードが適用されるか否かを示す情報であり、merge flagは、現在ブロックに対してマージモードが適用されるか否かを示す情報である。又は、予測モード情報は、mode indexのように、複数の予測モードのうちのいずれか一つを指示する情報であってもよい。前記skip flagとmerge flagがそれぞれ0である場合、現在ブロックに対してMVPモードが適用されると決定されることができる。前記動き情報に関する情報は、動きベクトルを導出するための情報である候補選択情報(例えば、merge index、mvp flag又はmvp index)を含むことができる。前記候補選択情報のうち、merge indexは、現在ブロックに対してマージモードが適用される場合にシグナリングされることができ、マージ候補リストに含まれているマージ候補のうちのいずれか一つを選択するための情報であることができる。前記候補選択情報のうち、MVP flag又はMVP indexは、現在ブロックに対してMVPモードが適用される場合にシグナリングされることができ、MVP候補リストに含まれているMVP候補のうちのいずれか一つを選択するための情報であることができる。具体的に、MVP flagは、シンタックス要素mvp_l0_flag或いはmvp_l1_flagを用いてシグナリングされることができる。また、前記動き情報に関する情報は、上述したMVDに関する情報及び/又は参照ピクチャインデックス情報を含むことができる。また、前記動き情報に関する情報は、L0予測、L1予測又は双(Bi)予測が適用されるか否かを示す情報を含むことができる。前記レジデュアル情報は、前記レジデュアルサンプルに関する情報である。前記レジデュアル情報は、前記レジデュアルサンプルに対する量子化された変換係数に関する情報を含むことができる。
出力されたビットストリームは、(デジタル)記憶媒体に保存されて画像復号化装置に伝達されることができ、又はネットワークを介して画像復号化装置に伝達されることもできる。
一方、前述したように、画像符号化装置は、前記参照サンプル及び前記レジデュアルサンプルに基づいて復元ピクチャ(復元サンプル及び復元ブロックを含むピクチャ)を生成することができる。これは、画像復号化装置で行われるのと同じ予測結果を画像符号化装置で導出するためであり、これによりコーディング効率を高めることができるためである。したがって、画像符号化装置は、復元ピクチャ(又は復元サンプル、復元ブロック)をメモリに保存し、インター予測のためのピクチャとして活用することができる。前記復元ピクチャにインループフィルタリング手順などがさらに適用できるのは、上述したとおりである。
図6は、インター予測に基づくビデオ/画像復号化方法を示すフローチャートである。
図7は本開示によるインター予測部260の構成を例示的に示す図である。
画像復号化装置は、前記画像符号化装置で行われた動作と対応する動作を行うことができる。画像復号化装置は、受信された予測情報に基づいて現在ブロックに対する予測を行い、予測サンプルを導出することができる。
図6の復号化方法は、図3の画像復号化装置によって行われることができる。ステップS610乃至S630は、インター予測部260によって行われることができ、ステップS610の予測情報及びステップS640のレジデュアル情報は、エントロピー復号化部210によってビットストリームから取得されることができる。画像復号化装置のレジデュアル処理部は、前記レジデュアル情報に基づいて現在ブロックに対するレジデュアルサンプルを導出することができる(S640)。具体的には、前記レジデュアル処理部の逆量子化部220は、前記レジデュアル情報に基づいて導出された、量子化された変換係数に基づいて、逆量子化を行って変換係数を導出し、前記レジデュアル処理部の逆変換部230は、前記変換係数に対する逆変換を行って前記現在ブロックに対するレジデュアルサンプルを導出することができる。ステップS650は、加算部235又は復元部によって行われることができる。
具体的に、画像復号化装置は、受信された予測情報に基づいて、前記現在ブロックに対する予測モードを決定することができる(S610)。画像復号化装置は、前記予測情報内の予測モード情報に基づいて、前記現在ブロックにどのインター予測モードが適用されるかを決定することができる。
例えば、前記skip flagに基づいて、前記現在ブロックに前記スキップモードが適用されるか否かを決定することができる。また、前記merge flagに基づいて、前記現在ブロックに前記マージモードが適用されるか或いはMVPモードが決定されるかを決定することができる。又は、前記mode indexに基づいて、多様なインター予測モード候補のうちのいずれか一つを選択することができる。前記インター予測モード候補は、スキップモード、マージモード及び/又はMVPモードを含むことができ、或いは後述する様々なインター予測モードを含むことができる。
画像復号化装置は、前記決定されたインター予測モードに基づいて前記現在ブロックの動き情報を導出することができる(S620)。例えば、画像復号化装置は、前記現在ブロックにスキップモード又はマージモードが適用される場合、後述するマージ候補リストを構成し、前記マージ候補リストに含まれているマージ候補のうちのいずれか一つを選択することができる。前記選択は、前述した候補選択情報(merge index)に基づいて行われることができる。前記選択されたマージ候補の動き情報を用いて前記現在ブロックの動き情報を導出することができる。例えば、前記選択されたマージ候補の動き情報が前記現在ブロックの動き情報として用いられることができる。
他の例として、画像復号化装置は、前記現在ブロックにMVPモードが適用される場合、MVP候補リストを構成し、前記MVP候補リストに含まれているMVP候補の中から選択されたMVP候補の動きベクトルを前記現在ブロックのMVPとして用いることができる。前記選択は、前述した候補選択情報(mvp flag又はmvp index)に基づいて行われることができる。この場合、前記MVDに関する情報に基づいて前記現在ブロックのMVDを導出することができ、前記現在ブロックのMVPと前記MVDに基づいて前記現在ブロックの動きベクトルを導出することができる。また、前記参照ピクチャインデックス情報に基づいて前記現在ブロックの参照ピクチャインデックスを導出することができる。前記現在ブロックに関する参照ピクチャリスト内で前記参照ピクチャインデックスが指すピクチャが、前記現在ブロックのインター予測のために参照される参照ピクチャとして導出されることができる。
画像復号化装置は、前記現在ブロックの動き情報に基づいて前記現在ブロックに対する予測サンプルを生成することができる(S630)。この場合、前記現在ブロックの参照ピクチャインデックスに基づいて前記参照ピクチャを導出し、前記現在ブロックの動きベクトルが前記参照ピクチャ上で指す参照ブロックのサンプルを用いて前記現在ブロックの予測サンプルを導出することができる。場合に応じて、前記現在ブロックの予測サンプルのうちの全部又は一部に対する予測サンプルフィルタリング手順がさらに行われることができる。
例えば、図7に示されているように、画像復号化装置のインター予測部260は、予測モード決定部261、動き情報導出部262、予測サンプル導出部263を含むことができる。画像復号化装置のインター予測部260は、予測モード決定部261で受信された予測モード情報に基づいて前記現在ブロックに対する予測モードを決定し、動き情報導出部262で受信された動き情報に関する情報に基づいて前記現在ブロックの動き情報(動きベクトル及び/又は参照ピクチャインデックスなど)を導出し、予測サンプル導出部263で前記現在ブロックの予測サンプルを導出することができる。
画像復号化装置は、受信されたレジデュアル情報に基づいて、前記現在ブロックに対するレジデュアルサンプルを生成することができる(S640)。画像復号化装置は、前記予測サンプル及び前記レジデュアルサンプルに基づいて前記現在ブロックに対する復元サンプルを生成し、これに基づいて復元ピクチャを生成することができる(S650)。以後、前記復元ピクチャにインループフィルタリング手順などがさらに適用できるのは前述したとおりである。
前述したように、インター予測手順は、インター予測モード決定ステップ、決定された予測モードによる動き情報導出ステップ、及び導出された動き情報に基づく予測実行(予測サンプル生成)ステップを含むことができる。前記インター予測手順は、前述したように、画像符号化装置及び画像復号化装置で行われることができる。
以下、予測モードによる動き情報導出ステップについてより詳細に説明する。
前述したように、インター予測は、現在ブロックの動き情報を用いて行われることができる。画像符号化装置は、動き推定(motion estimation)手順を介して、現在ブロックに対する最適の動き情報を導出することができる。例えば、画像符号化装置は、現在ブロックに対する原本ピクチャ内の原本ブロックを用いて相関性の高い類似な参照ブロックを参照ピクチャ内の定められた探索範囲内で分数ピクセル単位にて探索することができ、これにより動き情報を導出することができる。ブロックの類似性は、現在ブロックと参照ブロック間のSAD(sum of absolute differences)に基づいて計算できる。この場合、探索領域内のSADが最も小さい参照ブロックに基づいて動き情報を導出することができる。導出された動き情報は、インター予測モードに基づいて様々な方法によって画像復号化装置にシグナリングされることができる。
現在ブロックに対してマージモード(merge mode)が適用される場合、現在ブロックの動き情報が直接伝送されず、周辺ブロックの動き情報を用いて前記現在ブロックの動き情報を誘導する。よって、マージモードを用いたことを知らせるフラグ情報及びどの周辺ブロックをマージ候補として用いたかを知らせる候補選択情報(例えば、マージインデックス)を伝送することにより、現在予測ブロックの動き情報を指示することができる。本開示において、現在ブロックは予測実行の単位であるので、現在ブロックは現在予測ブロックと同じ意味で使用され、周辺ブロックは周辺予測ブロックと同じ意味で使用されることができる。
画像符号化装置は、マージモードを行うために現在ブロックの動き情報を誘導するのに用いられるマージ候補ブロック(merge candidate block)を探索することができる。例えば、前記マージ候補ブロックは、最大5個まで使用できるが、これに限定されない。前記マージ候補ブロックの最大個数は、スライスヘッダー又はタイルグループヘッダーから伝送されることができるが、これに限定されない。前記マージ候補ブロックを見つけた後、画像符号化装置は、マージ候補リストを生成することができ、これらのうち、RDコストが最も小さいマージ候補ブロックを最終マージ候補ブロックとして選択することができる。
本開示は、前記マージ候補リストを構成するマージ候補ブロックに対する様々な実施例を提供する。前記マージ候補リストは、例えば5つのマージ候補ブロックを用いることができる。例えば、4つの空間マージ候補(spatial merge candidate)と1つの時間マージ候補(temporal merge candidate)を用いることができる。
図8は、空間マージ候補として用いられる周辺ブロックを例示する図である。
図9は、本開示の一例によるマージ候補リスト構成方法を概略的に示す図である。
画像符号化装置/画像復号化装置は、現在ブロックの空間周辺ブロックを探索して導出された空間マージ候補をマージ候補リストに挿入することができる(S910)。前記空間周辺ブロックは、図8に示すように、前記現在ブロックの左下側コーナー周辺ブロックA0、左側周辺ブロックA1、右上側コーナー周辺ブロックB0、上側周辺ブロックB1、左上側コーナー周辺ブロックB2を含むことができる。但し、これは例示であって、前述した空間周辺ブロック以外にも、右側周辺ブロック、下側周辺ブロック、右下側周辺ブロックなどの追加周辺ブロックがさらに前記空間周辺ブロックとして使用できる。画像符号化装置/画像復号化装置は、前記空間周辺ブロックを優先順位に基づいて探索することにより、利用可能なブロックを検出し、検出されたブロックの動き情報を前記空間マージ候補として導出することができる。例えば、画像符号化装置/画像復号化装置は、図8に示されている5つのブロックをA1、B1、B0、A0、B2の順に探索し、利用可能な候補を順次インデックス化することにより、マージ候補リストを構成することができる。
画像符号化装置/画像復号化装置は、前記現在ブロックの時間周辺ブロックを探索して導出された時間マージ候補を前記マージ候補リストに挿入することができる(S920)。前記時間周辺ブロックは、前記現在ブロックが位置する現在ピクチャとは異なるピクチャである参照ピクチャ上に位置することができる。前記時間周辺ブロックが位置する参照ピクチャは、コロケート(collocated)ピクチャ又はcolピクチャと呼ばれることができる。前記時間周辺ブロックは、前記colピクチャ上における前記現在ブロックに対するコロケートブロック(co-located block)の右下側コーナー周辺ブロック及び右下側センターブロックの順序で探索できる。 一方、メモリ負荷を減らすためにmotion data compressionが適用される場合、前記colピクチャに対して、一定の保存単位ごとに特定の動き情報を代表動き情報として保存することができる。この場合、前記一定の保存ユニット内のすべてのブロックに対する動き情報を保存する必要がなく、これによりmotion data compression効果を得ることができる。この場合、一定の保存単位は、例えば16×16サンプル単位、又は8×8サンプル単位などに予め定められることもでき、又は画像符号化装置から画像復号化装置へ前記一定の保存単位に対するサイズ情報がシグナリングされることもできる。前記motion data compressionが適用される場合、前記時間周辺ブロックの動き情報は、前記時間周辺ブロックが位置する前記一定の保存単位の代表動き情報に置き換えられることができる。つまり、この場合、実現の観点からみると、前記時間周辺ブロックの座標に位置する予測ブロックロックではなく、前記時間周辺ブロックの座標(左上側サンプルポジション)に基づいて一定の値だけ算術右シフトした後、算術左シフトした位置をカバーする予測ブロックの動き情報に基づいて前記時間マージ候補が導出されることができる。例えば、前記一定の保存単位が2n×2nサンプル単位である場合、前記時間周辺ブロックの座標が(xTnb、yTnb)であるとすれば、修正された位置である((xTnb>>n)<<n)、(yTnb>>n)<<n))に位置する予測ブロックの動き情報が前記時間マージ候補のために使用できる。具体的には、例えば、前記一定の保存単位が16×16サンプル単位である場合、前記時間周辺ブロックの座標が(xTnb,yTnb)であるとすれば、修正された位置である((xTnb>>4)<<4),(yTnb>>4)<<4))に位置する予測ブロックの動き情報が前記時間マージ候補のために使用できる。又は、例えば、前記一定の保存単位が8×8サンプル単位である場合、前記時間周辺ブロックの座標が(xTnb,yTnb)であるとすれば、修正された位置である((xTnb>>3)<<3),(yTnb>>3)<<3))に位置する予測ブロックの動き情報が前記時間マージ候補のために使用できる。
再び図9を参照すると、画像符号化装置/画像復号化装置は、現在マージ候補の数が最大マージ候補の数よりも小さいか否かを確認することができる(S930)。前記最大マージ候補の数は、予め定義されるか、或いは画像符号化装置から画像復号化装置にシグナリングされることができる。例えば、画像符号化装置は、前記最大マージ候補の数に関する情報を生成し、符号化してビットストリーム形式で前記画像復号化装置に伝達することができる。前記最大マージ候補の数が全て満たされると、以後の候補追加過程(S940)は行われないことができる。
ステップS930の確認結果、前記現在マージ候補の数が前記最大マージ候補の数よりも小さい場合、画像符号化装置/画像復号化装置は、所定の方式に基づいて追加マージ候補を誘導した後、前記マージ候補リストに挿入することができる(S940)。前記追加マージ候補は、例えば、history based merge candidate(s)、pair-wise average merge candidate(s)、ATMVP、combined bi-predictiveマージ候補(現在スライス/タイルグループのスライス/タイルグループタイプがBタイプである場合)及び/又はゼロ(zero)ベクトルマージ候補のうちの少なくとも一つを含むことができる。
ステップS930の確認結果、前記現在マージ候補の数が前記最大マージ候補の数よりも小さくない場合、画像符号化装置/画像復号化装置は、前記マージ候補リストの構成を終了することができる。この場合、画像符号化装置は、RDコストに基づいて、前記マージ候補リストを構成するマージ候補のうちの最適のマージ候補を選択することができ、前記選択されたマージ候補を指す候補選択情報(例えば、マージ候補インデックス、merge index)を画像復号化装置にシグナリングすることができる。画像復号化装置は、前記マージ候補リスト及び前記候補選択情報に基づいて前記最適のマージ候補を選択することができる。
前記選択されたマージ候補の動き情報が前記現在ブロックの動き情報として使用されることができ、前記現在ブロックの動き情報に基づいて前記現在ブロックの予測サンプルを導出することができるのは、前述したとおりである。画像符号化装置は、前記予測サンプルに基づいて前記現在ブロックのレジデュアルサンプルを導出することができ、前記レジデュアルサンプルに関するレジデュアル情報を画像復号化装置にシグナリングすることができる。画像復号化装置は、前記レジデュアル情報に基づいて導出されたレジデュアルサンプル及び前記予測サンプルに基づいて復元サンプルを生成し、これに基づいて復元ピクチャを生成することができるのは、前述したとおりである。
現在ブロックに対してスキップモード(skip mode)が適用される場合、前でマージモードが適用される場合と同様の方法で前記現在ブロックの動き情報を導出することができる。ただし、スキップモードが適用される場合、当該ブロックに対するレジデュアル信号が省略される。よって、予測サンプルが直ちに復元サンプルとして使用できる。前記スキップモードは、例えばcu_skip_flagの値が1である場合に適用できる。
現在ブロックに対してMVPモードが適用される場合、復元された空間周辺ブロック(例えば、図8に示されている周辺ブロック)の動きベクトル及び/又は時間周辺ブロック(又はColブロック)に対応する動きベクトルを用いて、動きベクトル予測子(motion vector predictor、mvp)候補リストが生成できる。つまり、復元された空間周辺ブロックの動きベクトル及び/又は時間周辺ブロックに対応する動きベクトルが現在ブロックの動きベクトル予測子候補として使用できる。双予測が適用される場合、L0動き情報導出のためのmvp候補リストとL1動き情報導出のためのmvp候補リストが個別に生成されて利用できる。現在ブロックに対する予測情報(又は予測に関する情報)は、前記mvp候補リストに含まれている動きベクトル予測子候補の中から選択された最適の動きベクトル予測子候補を指示する候補選択情報(例えば、MVPフラグ又はMVPインデックス)を含むことができる。このとき、予測部は、前記候補選択情報を用いて、mvp候補リストに含まれている動きベクトル予測子候補の中から、現在ブロックの動きベクトル予測子を選択することができる。画像符号化装置の予測部は、現在ブロックの動きベクトルと動きベクトル予測子との動きベクトル差分(MVD)を求めることができ、これを符号化してビットストリーム形式で出力することができる。つまり、MVDは現在ブロックの動きベクトルから前記動きベクトル予測子を差し引いた値で求められることができる。画像復号化装置の予測部は、前記予測に関する情報に含まれている動きベクトル差分を取得し、前記動きベクトル差分と前記動きベクトル予測子との加算を介して、現在ブロックの前記動きベクトルを導出することができる。画像復号化装置の予測部は、参照ピクチャを指示する参照ピクチャインデックスなどを前記予測に関する情報から取得又は誘導することができる。
図10は、本開示の一例による動きベクトル予測子候補リスト構成方法を概略的に示す図である。
まず、現在ブロックの空間候補ブロックを探索して、利用可能な候補ブロックをMVP候補リストに挿入することができる(S1010)。その後、MVP候補リストに含まれているMVP候補が2つ未満であるか否かが判断され(S1020)、2つである場合、MVP候補リストの構成を完了することができる。
ステップS1020で、利用可能な空間候補ブロックが2つ未満である場合、現在ブロックの時間候補ブロックを探索して、利用可能な候補ブロックをMVP候補リストに挿入することができる(S1030)。時間候補ブロックが利用可能でない場合、ゼロ動きベクトルをMVP候補リストに挿入(S1040)することにより、MVP候補リストの構成を完了することができる。
一方、MVPモードが適用される場合、参照ピクチャインデックスが明示的にシグナリングされることができる。この場合、L0予測のためのピクチャインデックス(refidxL0)とL1予測のための参照ピクチャインデックス(refidxL1)が区分されてシグナリングされることができる。例えば、MVPモードが適用され、双予測(BI prediction)が適用される場合、前記refidxL0に関する情報及びrefidxL1に関する情報が両方ともシグナリングされることができる。
前述したように、MVPモードが適用される場合、画像符号化装置から導出されたMVDに関する情報が画像復号化装置にシグナリングされることができる。MVDに関する情報は、例えばMVD絶対値及び符号に対するx、y成分を示す情報を含むことができる。この場合、MVD絶対値が0よりも大きいか、及び1よりも大きいか否か、MVDの残りを示す情報が段階的にシグナリングされることができる。例えば、MVD絶対値が1よりも大きいか否かを示す情報は、MVD絶対値が0よりも大きいか否かを示すflag情報の値が1である場合に限ってシグナリングされることができる。
アフィンモード(Affine mode)の概要
以下、インター予測モードの一例であるアフィンモードについて詳細に説明する。従来のビデオ符号化/復号化システムでは、現在ブロックの動き情報を表現するために一つの動きベクトルのみを使用したが、このような方法には、ブロック単位の最適の動き情報を表現するだけであり、画素単位の最適の動き情報を表現することはできなかったという問題点があった。かかる問題点を解決するために、画素単位でブロックの動き情報を定義するアフィンモードが提案された。アフィンモードによれば、現在ブロックに関連付けられた2個乃至4個の動きベクトル用いてブロックの画素/又はサブブロック単位別動きベクトルが決定できる。
従来の動き情報が画素値の平行移動(又は変位)を用いて表現されたのに比べ、アフィンモードでは、平行移動、スケーリング、回転、傾き(shear)のうちの少なくとも一つを用いて、画素別動き情報が表現できる。その中で、画素別動き情報が変位、スクーリング、回転を用いて表現されるアフィンモードを類似(similarity)或いは簡略化(simplified)アフィンモードと定義することができる。以下の説明におけるアフィンモードは、類似又は簡略化アフィンモードを意味することができる。
アフィンモードでの動き情報は、2つ以上のCPMV(Control Point Motion Vector)を用いて表現できる。現在ブロックの特定の画素位置の動きベクトルはCPMVを用いて誘導できる。このとき、現在ブロックの画素別及び/又はサブブロック別動きベクトルの集合をアフィン動きベクトルフィールド(Affine Motion Vector Field:Affine MVF)と定義することができる。
図11は、アフィンモードのパラメータモデルを説明するための図である。
現在ブロックに対してアフィンモードが適用される場合、4-パラメータモデル及び6-パラメータモデルのうちのいずれか一つを用いてアフィンMVFが誘導されることができる。このとき、4-パラメータモデルは、2つのCPMVが使用されるモデルタイプを意味し、6-パラメータモデルは、3つのCPMVが使用されるモデルタイプを意味することができる。図11(a)及び図11(b)は、それぞれ4-パラメータモデル及び6-パラメータモデルに使用されるCPMVを示す。
現在ブロックの位置を(x,y)と定義する場合、画素位置による動きベクトルは、下記の数式1又は数式2に従って誘導されることができる。例えば、4-パラメータモデルによる動きベクトルは数式1に従って誘導されることができ、6-パラメータモデルによる動きベクトルは数式2に従って誘導されることができる。
数式1及び数式2において、mv0={mv0x,mv0y}は、現在ブロックの左上側コーナー位置のCPMVであり、mv1={mv1x,mv1y}は、現在ブロックの右上側コーナー位置のCPMVであり、mv2={mv2x,mv2y}は、現在ブロックの左下側位置のCPMVであり得る。ここで、W及びHはそれぞれ現在ブロックの幅及び高さに該当し、mv={mvx,mvy}は画素位置{x,y}の動きベクトルを意味することができる。
符号化/復号化過程で、アフィンMVFは、画素単位及び/又は予め定義されたサブブロック単位で決定されることができる。アフィンMVFが画素単位で決定される場合、各画素値を基準に動きベクトルが誘導されることができる。一方、アフィンMVFがサブブロック単位で決定される場合、サブブロックの中央画素値を基準に当該ブロックの動きベクトルが誘導されることができる。中央画素値は、サブブロックのセンターに存在する仮想の画素を意味するか、或いは中央に存在する4つの画素のうちの右下側画素を意味することができる。また、中央画素値は、サブブロック内の特定の画素であって当該サブブロックを代表する画素であり得る。本開示において、アフィンMVFは、4×4サブブロック単位で決定される場合を説明する。ただし、これは説明の便宜のためであり、サブブロックのサイズは多様に変更できる。
つまり、Affine予測が利用可能である場合、現在ブロックに適用可能な動きモデルは、Translational motion model(平行移動モデル)、4-parameter affine motion model、6-parameter affine motion modelの3つを含むことができる。ここで、Translational motion modelは、従来のブロック単位動きベクトルが使用されるモデルを示すことができ、4-parameter affine motion modelは、2つのCPMVが使用されるモデルを示すことができ、6-parameter affine motion modelは、3つのCPMVが使用されるモデルを示すことができる。アフィンモードは、動き情報を符号化/復号化する方法によって詳細モードに区分できる。一例として、アフィンモードはアフィンMVPモードとアフィンマージモードに細分化できる。
現在ブロックに対してアフィンマージモードが適用される場合、CPMVは、アフィンモードで符号化/復号化された現在ブロックの周辺ブロックから誘導できる。現在ブロックの周辺ブロックのうちの少なくとも一つがアフィンモードで符号化/復号化された場合、現在ブロックに対してアフィンマージモードが適用できる。すなわち、現在ブロックに対してアフィンマージモードが適用される場合、周辺ブロックのCPMVを用いて現在ブロックのCPMVが誘導できる。例えば、周辺ブロックのCPMVが現在ブロックのCPMVとして決定されるか、或いは周辺ブロックのCPMVに基づいて現在ブロックのCPMVが誘導されることができる。周辺ブロックのCPMVに基づいて現在ブロックのCPMVが誘導される場合、現在ブロック又は周辺ブロックの符号化パラメータのうちの少なくとも一つが使用できる。例えば、周辺ブロックのCPMVが前記周辺ブロックのサイズ及び現在ブロックのサイズなどに基づいて修正されて現在ブロックのCPMVとして使用され得る。
一方、サブブロック単位でMVが導出されるaffine mergeの場合には、サブブロックベースのマージモードと呼ばれることができ、これは、第2値(例えば、「1」)を有するmerge_subblock_flagによって指示できる。この場合、後述するアフィンマージ候補リスト(affine merging candidate list)は、サブブロックマージ候補リスト(subblock merging candidate list)と呼ばれることもできる。この場合、前記サブブロックマージ候補リストには、後述するsbTMVPで導出された候補がさらに含まれることができる。この場合、前記sbTMVPで導出された候補は、前記サブブロックマージ候補リストの0番インデックスの候補として用いられることができる。言い換えれば、前記sbTMVPで導出された候補は、前記サブブロックマージ候補リスト内で後述の継承アフィンマージ候補(inherited affine candidates)、組み合わせアフィンマージ候補(constructed affine candidates)よりも前方に位置することができる。
一例として、現在ブロックに対してアフィンモードが適用できるか否かを指示するアフィンモードフラグが定義できる。これはシーケンス、ピクチャ、スライス、タイル、タイルグループ、ブリックなど、現在ブロックの上位レベルのうちの少なくとも一つのレベルでシグナリングできる。例えば、アフィンモードフラグはsps_affine_enabled_flagと命名できる。
アフィンマージモードが適用される場合、現在ブロックのCPMV誘導のために、アフィンマージ候補リストが構成できる。このとき、アフィンマージ候補リストは、継承アフィンマージ候補、組み合わせアフィンマージ候補、及びゼロマージ候補のうちの少なくとも一つを含むことができる。継承アフィンマージ候補は、現在ブロックの周辺ブロックがアフィンモードで符号化/復号化された場合、当該周辺ブロックのCPMVを用いて誘導される候補を意味することができる。組み合わせアフィンマージ候補は、それぞれのCP(Control Point)の周辺ブロックの動きベクトルに基づいてそれぞれのCPMVが誘導された候補を意味することができる。一方、ゼロマージ候補は、サイズ0のCPMVからなる候補を意味することができる。以下の説明において、CPとは、CPMVを誘導するのに用いられるブロックの特定の位置を意味することができる。例えば、CPはブロックの各頂点位置であり得る。
図12は、アフィンマージ候補リストを生成する方法を説明するための図である。
図12のフローチャートを参照すると、継承アフィンマージ候補(S1210)、組み合わせアフィンマージ候補(S1220)、ゼロマージ候補(S1230)の順にアフィンマージ候補リストにアフィンマージ候補が追加できる。ゼロマージ候補は、アフィンマージ候補リストに継承アフィンマージ候補及び組み合わせアフィンマージ候補が全て追加されたにも拘らず、候補リストに含まれる候補の数が最大候補個数を満たさない場合に追加できる。このとき、ゼロマージ候補は、アフィンマージ候補リストの候補の数が最大候補個数を満たすまで追加できる。
サブブロックベースのTMVP(Subblock-based TMVP、sbTMVP)モードの概要
以下、インター予測モードの一例であるサブブロックベースのTMVPモードについて詳細に説明する。サブブロックベースのTMVPモードによれば、現在ブロックに対する動きベクトルフィールド(Motion Vector Field:MVF)が誘導されるので、サブブロック単位で動きベクトルが誘導されることができる。
従来のTMVPモードがコーディングユニット単位で行われるのとは異なり、サブブロックベースのTMVPモードが適用されるコーディングユニットは、サブコーディングユニット単位で動きベクトルに対する符号化/復号化が行われることができる。また、従来のTMVPモードによれば、コロケートブロック(collocated block)から時間動きベクトルが誘導されるのに対し、サブブロックベースのTMVPモードは、現在ブロックの周辺ブロックから誘導された動きベクトルが指示する参照ブロックから動きベクトルフィールドが誘導されることができる。以下、周辺ブロックから誘導された動きベクトルを現在ブロックの動きシフト(motion shift)或いは代表動きベクトルと呼ぶことができる。
図13は、サブブロックベースのTMVPモードの周辺ブロックを説明するための図である。
現在ブロックに対してサブブロックベースのTMVPモードが適用される場合、動きシフトを決定するための周辺ブロックが決定できる。一例として、動きシフトを決定するための周辺ブロックに対するスキャンは、図13のA1、B1、B0、A0ブロックの順に行われることができる。他の例として、動きシフトを決定するための周辺ブロックは、現在ブロックの特定の周辺ブロックに制限できる。例えば、動きシフトを決定するための周辺ブロックは、常にA1ブロックと決定できる。周辺ブロックがcolピクチャを参照する動きベクトルを有する場合、当該動きベクトルが動きシフトとして決定できる。動きシフトとして決定された動きベクトルは、時間動きベクトルと呼ばれることもできる。一方、周辺ブロックから上述の動きベクトルが誘導できない場合、動きシフトは(0,0)に設定できる。
図14は、サブブロックベースのTMVPモードに従って動きベクトルフィールドを誘導する方法を説明するための図である。
次に、動きシフトが指示するコロケートピクチャ上の参照ブロックが決定できる。例えば、現在ブロックの座標に動きシフトを加算することにより、colピクチャからサブブロックベースの動き情報(動きベクトル、参照ピクチャインデックス)を取得することができる。図14に示されている例において、動きシフトは、A1ブロックの動きベクトルであると仮定する。現在ブロックに動きシフトを適用することにより、現在ブロックを構成する各サブブロックに対応するcolピクチャ内のサブブロック(colサブブロック)を特定することができる。その後、colピクチャの対応サブブロック(colサブブロック)の動き情報を用いて、現在ブロックの各サブブロックの動き情報が誘導できる。例えば、対応サブブロックの中央位置から対応サブブロックの動き情報が取得できる。このとき、中央位置は、対応サブブロックの中央に位置する4つのサンプルのうち、右下側サンプルの位置であり得る。もし、現在ブロックに対応するcolブロックの特定のサブブロックの動き情報が利用可能でない場合、colブロックの中心サブブロックの動き情報が当該サブブロックの動き情報として決定されることができる。対応サブブロックの動き情報が誘導されると、上述したTMVP過程と同様に、現在サブブロックの動きベクトルと参照ピクチャインデックスに切り替えられることができる。すなわち、サブブロックベースの動きベクトルが誘導される場合、参照ブロックの参照ピクチャのPOCを考慮して動きベクトルのスケーリングが行われることができる。
上述したように、サブブロックに基づいて誘導された現在ブロックの動きベクトルフィールド又は動き情報を用いて現在ブロックに対するサブブロックベースのTMVP候補が誘導できる。
以下、サブブロック単位で構成されるマージ候補リストをサブブロックマージ候補リストと定義する。上述したアフィンマージ候補及びサブブロックベースのTMVP候補が併合されてサブブロックマージ候補リストが構成できる。
一方、現在ブロックに対してサブブロックベースのTMVPモードが適用できるか否かを指示するサブブロックベースのTMVPモードフラグが定義できる。これは、シーケンス、ピクチャ、スライス、タイル、タイルグループ、ブリックなど、現在ブロックの上位レベルのうちの少なくとも一つのレベルでシグナリングできる。例えば、サブブロックベースのTMVPモードフラグは、sps_sbtmvp_enabled_flagと命名できる。現在ブロックに対してサブブロックベースのTMVPモードが適用可能である場合、サブブロックマージ候補リストにサブブロックベースのTMVP候補が先に追加できる。以後、アフィンマージ候補がサブブロックマージ候補リストに追加できる。一方、サブブロックマージ候補リストに含まれ得る最大候補の数がシグナリングされることができる。一例として、サブブロックマージ候補リストに含まれ得る最大候補の数は5であり得る。
サブブロックマージ候補リストの誘導に使用されるサブブロックのサイズは、シグナリングされるか、或いはM×Nに既に設定されることができる。例えば、M×Nは8×8であり得る。よって、現在ブロックのサイズが8×8以上である場合にのみ、現在ブロックに対してアフィンモード又はサブブロックベースのTMVPモードが適用できる。
三角分割モード(Triangle partition for inter prediction、TPM)
インター予測モードとして三角分割モード(TPM)が使用できる。三角分割モードは、8×8以上のサイズを有するCUに対して適用できる。現在CUに三角分割モードを使用するか否かを示す情報は、CUレベルで例えばフラグ情報としてシグナリングされることができる。三角分割モードは、正規(regular)マージモード、MMVDモード、CIIPモード、及びサブブロックベースのマージモードと共に、一般なマージモードに含まれる1つのモードとして取り扱われることができる。
図15は、現在ブロックに三角分割モードが適用されて2つの三角形パーティションに分割された例を示す図である。
図15に示すように、三角分割モードが適用される場合、現在ブロック(CU)は、対角分割又は逆対角分割されて2つの三角形のパーティションに分割されることができる。各三角パーティションは、それぞれの動きを用いてインター予測され、各パーティションに対して単方向予測のみが許容される。すなわち、各三角形パーティションは、1つの動きベクトルと1つの参照ピクチャインデックスを有することができる。各パーティションに対して単方向予測のみが許容される理由は、通常の双方向予測と同様に、各CUに対して2つの動き補償された予測ブロックが必要だからである。
三角分割モードの単方向予測のための動き情報は、図9を参照して説明したマージ候補リストから誘導されることができる。例えば、三角分割モードの単方向予測のために、図9のマージ候補リストから単方向予測(uni-prediction)候補リストを誘導することができる。変数nを、三角分割の単方向予測候補リストに含まれている単方向予測動き候補のインデックスとするとき、n番目のマージ候補のLX動きベクトル(Xは、nのパリティと同じ)は三角分割モードのn番目の単方向予測動きベクターとして使用できる。三角分割モードのn番目の単方向予測動きベクトルは、図15において「x」で表される。このとき、n番目のマージ候補のLX動きベクトルが存在しない場合、LX動きベクトルの代わりに、n番目のマージ候補のL(1-X)動きベクトルが三角分割モードの単方向予測動きベクトルとして使用できる。
現在ブロックに対して三角分割モードが使用されると、三角分割の方向(対角方向又は逆対角方向)を指し示すフラグと、2つのマージインデックス(各パーティションに対して1つずつ)がシグナリングされることができる。TPMマージ候補の最大個数は、スライスレベルで明示的にシグナリングされることができる。また、TPMマージ候補の最大個数に応じて、TPMマージインデックスに対するシンタックス二値化方法が特定できる。各パーティションに対する予測を行った後、対角線又は逆対角線に沿って予測サンプル値が調整できる。予測サンプル値の調整は、適応的な重みを用いたブレンディングプロセス(blending process)によって行われることができる。三角分割モードによって生成された予測信号は、全体CU(現在ブロック)に対するものであり、残差信号に対する変換及び量子化過程は、他の予測モードと同様に、全体CUに対して行われることができる。最後に、三角分割モードで予測されたCUの動きフィールドは、4×4サンプル単位で保存されることができる。三角分割モードは、サブブロック単位の変換(subblock transform、SBT)と共に行われない。つまり、三角分割モードを指し示すフラグが第1値(例えば、1)である場合、サブブロック単位の変換を行うか否かを指し示すフラグ(例えば、cu_sbt_flag)は、シグナリングされず、第2値(例えば、0)と推論できる。
各三角パーティションに対する予測が行われた後、ブレンディングプロセスが行われることができる。ブレンディングプロセスは、2つの予測信号に適用され、対角エッジ又は逆対角エッジの周りのサンプルを誘導することができる。
IBC(Intra Block Copy)予測の概要
以下、本開示によるIBC予測について説明する。
IBC予測は、画像符号化装置/画像復号化装置の予測部で行われることができる。IBC予測は、簡単に「IBC」と呼ばれることができる。前記IBCは、例えばSCC(screen content coding)などのようにゲームなどのコンテンツ画像/動画コーディングのために使用できる。前記IBCは、基本的に現在ピクチャ内で予測を行うが、現在ピクチャ内で参照ブロックを導出するという点で、インター予測と同様に行われることができる。つまり、IBCは、本開示で説明されたインター予測技法のうちの少なくとも一つを用いることができる。例えば、IBCでは、前述した動き情報(動きベクトル)導出方法のうちの少なくとも一つを用いることができる。前記インター予測技法のうちの少なくとも一つは、前記IBC予測を考慮して一部修正されて用いられることもできる。前記IBCは、現在ピクチャを参照することができる。よって、CPR(current picture referencing)と呼ばれることもある。
IBCのために、画像符号化装置は、ブロックマッチング(BM)を行って現在ブロック(例えば、CU)に対する最適のブロックベクトル(又は動きベクトル)を導出することができる。前記導出されたブロックベクトルは、前述したインター予測での動き情報(動きベクトル)シグナリングと同様の方法を用いて、ビットストリームを介して画像復号化装置にシグナリングされることができる。画像復号化装置は、前記シグナリングされたブロックベクトルを介して、現在ピクチャ内で前記現在ブロックに対する参照ブロックを導出することができ、これにより前記現在ブロックに対する予測信号(予測されたブロック又は予測サンプル)を導出することができる。ここで、前記ブロックベクトルは、現在ブロックから現在ピクチャ内の既に復元された領域に位置する参照ブロックまでの変位(displacement)を示すことができる。よって、前記ブロックベクトルは、変位ベクトルと呼ばれることもある。以下、IBCにおける動きベクトルは、前記ブロックベクトル又は前記変位ベクトルに対応することができる。現在ブロックの動きベクトルは、ルマ成分に対する動きベクトル(ルマ動きベクトル)又はクロマ成分に対する動きベクトル(クロマ動きベクトル)を含むことができる。例えば、IBCコーディングされたCUに対するルマ動きベクトルも、整数サンプル単位(すなわち、integer precision)であることができる。クロマ動きベクトルも、整数サンプル単位でクリッピング(clipped)されることができる。前述したように、IBCは、インター予測技法のうちの少なくとも一つを用いることができ、例えば、ルマ動きベクトルは、前述したマージモード又はMVPモードを用いて符号化/復号化されることができる。
ルマIBCブロックに対してマージモードが適用される場合、ルマIBCブロックに対するマージ候補リストは、インター予測モードでのマージ候補リストと同様に構成されることができる。ただし、ルマIBCブロックに対するマージ候補リストは、インター予測モードでのマージ候補リストとは異なり、時間候補ブロック(temporal candidate block)を含まなくてもよい。
ルマIBCブロックに対してMVPモードが適用される場合、ルマIBCブロックに対するmvp候補リストは、インター予測モードでのmvp候補リストと同様に構成されることができる。ただし、ルマIBCブロックに対するマージ候補リストは、インター予測モードでのmvp候補リストとは異なり、時間候補ブロックを含まなくてもよい。
IBCは、現在ピクチャ内の既に復元された領域から参照ブロックを導出することができる。このとき、メモリの消費と画像復号化装置の複雑度を減少させるために、現在ピクチャ内の既に復元された領域のうち、既に定義された領域(predefined area)のみが参照できる。前記既に定義された領域は、現在ブロックが含まれている現在CTUを含むことができる。このように、参照可能な復元領域を既に定義された領域に制限することにより、IBCモードは、ローカルオンチップメモリ(local on-chip memory)を用いてハードウェア的に実現できる。
IBCを実行する画像符号化装置は、前記既に定義された領域を探索して、最も小さいRDコストを有する参照ブロックを決定し、前記決定された参照ブロックと現在ブロックの位置に基づいて動きベクトル(ブロックベクトル)を導出することができる。
IBCに関する予測モード情報は、CUレベルでシグナリングされることができる。例えば、現在ブロックに対してIBCスキップ/マージモードが適用されるか否かを示すフラグ情報及び/又は現在ブロックに対してIBC AMVPモードが適用されるか否かを示すフラグ情報がcoding_unitシンタックスを介してシグナリングされることができる。
IBCスキップ/マージモードの場合、マージ候補インデックスがシグナリングされてマージ候補リストに含まれているブロックベクトルのうち、現在ルマブロックの予測に使用されるブロックベクトルを指示するために使用できる。このとき、マージ候補リストは、IBCで符号化された周辺ブロックを含むことができる。前述したように、マージ候補リストは、空間マージ候補(spatial merge candidate)を含むが、時間マージ候補(temporal merge candidate)は含まなくてもよい。また、マージ候補リストは、さらに、HMVP(Histrory-based motion vector predictor)候補及び/又はペアワイズ(pairwise)候補を含んでもよい。
IBC MVPモードの場合、ブロックベクトル差分値(block vector difference)がインター予測モードの動きベクトル差分値(motion vector difference)と同様の方法で符号化されることができる。IBC MVPモードにおけるブロックベクトル予測方法は、MVPモードと同様に、2つの候補を予測子として含むmvp候補リストに基づいて行われることができる。前記2つの候補のうちのいずれか一つは、現在ブロックの左側周辺ブロックから誘導され、残りの一つは、現在ブロックの上側周辺ブロックから誘導されることができる。このとき、前記左側周辺ブロック又は前記上側周辺ブロックがIBCで符号化された場合にのみ、当該周辺ブロックから候補を誘導することができる。前記左側周辺ブロック又は前記上側周辺ブロックが利用可能でない場合(例えば、IBCで符号化されていない場合)、所定のデフォルトブロックベクトルが予測子としてmvp候補リストに含まれることができる。また、IBC MVPモードの場合、2つのブロックベクトル予測子のうちのいずれか一つを指示するための情報(例えば、フラグ)が候補選択情報としてシグナリングされ、画像復号化に利用されるという点で、MVPモードに類似したブロックベクトル予測が行われることができる。前記mvp候補リストは、デフォルトブロックベクトルとしてHMVP候補及び/又はゼロ動きベクトルを含むことができる。
前記HMVP候補は、ヒストリベースのMVP候補と呼ばれることもあり、現在ブロックの符号化/復号化の以前に使用されたMVP候補、マージ候補又はブロックベクトル候補は、HMVP候補としてHMVPリストに保存されることができる。以後、現在ブロックのマージ候補リスト又はmvp候補リストが最大個数の候補を含まない場合、HMVPリストに保存された候補がHMVP候補として現在ブロックのマージ候補リスト又はmvp候補リストに追加されることができる。
前記ペアワイズ(pairwise)候補は、現在ブロックのマージ候補リストに既に含まれている候補の中から、予め定められた順序に従って選択される2つの候補を平均することにより誘導される候補を意味することができる。
現在ブロックに対してIBCが適用されるか否かに関する予測モード情報(例えば、pred_mode_ibc_flag)は、CUレベルでシグナリングされることができる。例えば、pred_mode_ibc_flagは、coding_unitシンタックスを介してシグナリングされることができる。この場合、第1値(例えば、0)を有するpred_mode_ibc_flagは、現在ブロックに対してIBCが適用されないことを示すことができる。これとは異なり、第2値(例えば、1)を有するpred_mode_ibc_flagは、現在ブロックに対してIBCが適用されることを示すことができる。
前述したように、現在ブロックに対してインター予測モードが適用される場合、所定のマージ候補リストに基づいて現在ブロックの予測ブロックが生成されることができる。現在ブロックに対するインター予測モードは、様々なインター予測モード(例えば、正規マージモード(regular merge mode)、アフィンモード(affine mode)、サブブロックベースのマージモード(subblock-based merge mode)、三角分割モード(Triangle partition for inter prediction、TPM)、又はIBC(intra block copy)など)うちのいずれか一つに決定されることができる。そして、マージ候補リストに含まれるマージ候補の最大個数に関する情報は、ピクチャレベルでシグナリングされることができる。
図16は、マージ候補の最大個数に関する情報を含むピクチャパラメータセット(PPS)の一例を示す図である。
図16を参照すると、ピクチャパラメータセット(PPS)は、マージ候補の最大個数に関するシンタックス要素を含むことができる。
例えば、ピクチャパラメータセット(PPS)は、pps_six_minus_max_num_merge_cand_plus1を含むことができる。pps_six_minus_max_num_merge_cand_plus1は、前記ピクチャパラメータセット(PPS)を参照するピクチャヘッダー内に、マージ候補の最大個数を導出するのに用いられるシンタックス要素(例えば、pic_six_minus_max_num_merge_cand)が存在するか否かを示すことができる。例えば、第1値(例えば、0)を有するpps_six_minus_max_num_merge_cand_plus1は、前記ピクチャヘッダー内にpic_six_minus_max_num_merge_candが存在することを示すことができる。これとは異なり、前記第1値よりも大きい値(例えば、1)を有するpps_six_minus_max_num_merge_cand_plus1は、前記ピクチャヘッダー内にpic_six_minus_max_num_merge_candが存在しないことを示すことができる。pps_six_minus_max_num_merge_cand_plus1の値は、0以上6以下であってもよい。
また、ピクチャパラメータセット(PPS)は、pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1を含むことができる。pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1は、前記ピクチャパラメータセット(PPS)を参照するスライスのピクチャヘッダー内に、TPMマージ候補の最大個数を導出するのに用いられるシンタックス要素(例えば、pic_max_num_merge_cand_minus_max_num_triangle_cand)が存在するか否かを示すことができる。例えば、第1値(例えば、0)を有するpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1は、前記ピクチャヘッダー内にpic_max_num_merge_cand_minus_max_num_triangle_candが存在することを示すことができる。これとは異なり、前記第1値よりも大きい値(例えば、1)を有するpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1は、前記ピクチャヘッダーにpic_max_num_merge_cand_minus_max_num_triangle_candが存在しないことを示すことができる。pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1の値は、0以上であり、pic_max_num_merge_cand_minus_max_num_triangle_candから1を差し引いた値以下であり得る。
pps_six_minus_max_num_merge_cand_plus1及びpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1は、所定のフラグ(例えば、constant_slice_header_params_enabled_flag)に基づいてシグナリングされることができる。例えば、constant_slice_header_params_enabled_flagが第1値(例えば、0)を有する場合、pps_six_minus_max_num_merge_cand_plus1及びpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1は、シグナリングされず、第1値(例えば、0)と推論できる。これとは異なり、constant_slice_header_params_enabled_flagが第2値(例えば、1)を有する場合、pps_six_minus_max_num_merge_cand_plus1及びpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1がシグナリングされることができる。
図17は、マージ候補の最大個数に関する情報を含むピクチャヘッダーの一例を示す図である。
図17を参照すると、ピクチャヘッダーは、ピクチャレベルでTMVPモードが利用可能であるか否かに関するシンタックス要素を含むことができる。
例えば、ピクチャヘッダーは、pic_temporal_mvp_enabled_flagを含むことができる。pic_temporal_mvp_enabled_flagは、前記ピクチャヘッダーを参照する現在ピクチャに対してTMVPモードが利用可能であるか否かを示すことができる。例えば、第1値(例えば、0)を有するpic_temporal_mvp_enabled_flagは、現在ピクチャに対してTMVPモードが利用可能でないことを示すことができる。これとは異なり、第2値(例えば、1)を有するpic_temporal_mvp_enabled_flagは、現在ピクチャに対してTMVPモードが利用可能であることを示すことができる。
pic_temporal_mvp_enabled_flagは、シーケンスレベルでTMVPモードが利用可能である場合(例えば、sps_temporal_mvp_enabled_flag==1)にのみシグナリングされることができる。pic_temporal_mvp_enabled_flagがシグナリングされない場合、pic_temporal_mvp_enabled_flagの値は第1値(例えば、0)と推論できる。一方、DPB(decoded picture buffer)内に現在ピクチャと同じ空間解像度(spatial resolution)を有する参照ピクチャが存在しない場合、pic_temporal_mvp_enabled_flagの値は第1値(例えば、0)に制限されることができる。
また、ピクチャヘッダーはpic_six_minus_max_num_merge_candを含むことができる。pic_six_minus_max_num_merge_candは、正規マージモード(regular merge mode)において、前記ピクチャヘッダーに関連付けられたスライス内で支援される正規マージ候補の最大個数を導出することに利用可能である。例えば、正規マージ候補の最大個数(例えば、MaxNumMergeCand)は、pic_six_minus_max_num_merge_candの値を6から差し引くことにより導出されることができる。この場合、正規マージ候補の最大個数は、1以上6以下であり得る。
pic_six_minus_max_num_merge_candは、ピクチャパラメータセット(PPS)を介してシグナリングされるpps_six_minus_max_num_merge_cand_plus1が第1値(例えば、0)を有する場合にのみシグナリングされることができる。pic_six_minus_max_num_merge_candがシグナリングされない場合、pic_six_minus_max_num_merge_candの値は、pps_six_minus_max_num_merge_cand_plus1の値から1を差し引いた値に推論できる。
また、ピクチャヘッダーは、pic_five_minus_max_num_subblock_merge_candを含むことができる。pic_five_minus_max_num_subblock_merge_candは、サブブロックベースのマージモード(subblock-based merge mode)において、前記ピクチャヘッダーに関連付けられたスライス内で支援されるサブブロックマージ候補の最大個数を導出することに利用可能である。例えば、サブブロックマージ候補の最大個数(例えば、MaxNumSubblockMergeCand)は、pic_six_minus_max_num_merge_candの値を5から差し引くことにより導出されることができる。この場合、サブブロックマージ候補の最大個数は0以上5以下であり得る。
pic_five_minus_max_num_subblock_merge_candは、シーケンスレベルでアフィンモード(affine mode)が利用可能である場合(例えば、sps_affine_enabled_flag==1)にのみシグナリングされることができる。pic_five_minus_max_num_subblock_merge_candがシグナリングされない場合、pic_five_minus_max_num_subblock_merge_candの値は、シーケンスレベルでサブブロックベースのTMVP(subblock-based temporal motion vector predictor)モードが利用可能であるか否かを示す第1フラグ(例えば、sps_sbtmvp_enabled_flag)、及びピクチャレベルでTMVP(temporal motion vector predictor)モードが利用可能であるか否かを示す第2フラグ(例えば、pic_temporal_mvp_enabled_flag)に基づいて所定の値に推論できる。例えば、pic_five_minus_max_num_subblock_merge_candの値は、前記第1フラグ及び前記第2フラグの論理和(AND)演算結果(例えば、1又は0)を5から差し引いた値に推論できる。
また、ピクチャヘッダーは、pic_max_num_merge_cand_minus_max_num_triangle_candを含むことができる。pic_max_num_merge_cand_minus_max_num_triangle_candは、三角分割モード(TPM)において、前記ピクチャヘッダーに関連付けられたスライス内で支援されるTPMマージ候補の最大個数を導出するのに利用可能である。例えば、TPMマージ候補の最大個数(例えば、MaxNumTriangleMergeCand)は、pic_max_num_merge_cand_minus_max_num_triangle_candの値を正規マージ候補の最大個数(例えば、MaxNumMergeCand)から差し引くことにより導出されることができる。この場合、TPMマージ候補の最大個数は、2以上であり、正規マージ候補の最大個数以下であり得る。
pic_max_num_merge_cand_minus_max_num_triangle_candは、シーケンスレベルでTPMが利用可能であり(例えば、sps_triangle_enabled_flag==1)、正規マージ候補の最大個数が2以上であり(例えば、MaxNumMergeCand≧2)であり、ピクチャパラメータセット(PPS)を介してシグナリングされるpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1が第1値(例えば、0)を有する場合にのみシグナリングされることができる。
pic_max_num_merge_cand_minus_max_num_triangle_candがシグナリングされない場合であって、シーケンスレベルでTPMが利用可能であり(例えば、sps_triangle_enabled_flag==1)、正規マージ候補の最大個数が2以上であれば(例えば、MaxNumMergeCand≧2)、pic_max_num_merge_cand_minus_max_num_triangle_candの値は、ピクチャパラメータセット(PPS)を介してシグナリングされるpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1の値から1を差し引く値に推論できる。又は、pic_max_num_merge_cand_minus_max_num_triangle_candがシグナリングされない場合であって、シーケンスレベルでTPMが利用可能でないか(例えば、sps_triangle_enabled_flag==0)、或いは正規マージ候補の最大個数が2より小さければ(例えば、MaxNumMergeCand<2)、正規マージ候補の最大個数は第1値(例えば、0)に設定されることができる。この場合、前記ピクチャヘッダーに関連付けられているスライスに対して、TPMは許容されないことができる。
また、ピクチャヘッダーは、pic_six_minus_max_num_ibc_merge_candを含むことができる。pic_six_minus_max_num_ibc_merge_candは、IBC(intra block copy)において、前記ピクチャヘッダーに関連付けられたスライス内で支援されるIBCマージ候補の最大個数を導出することに利用可能である。例えば、IBCマージ候補の最大個数(例えば、MaxNumIbcMergeCand)は、pic_six_minus_max_num_ibc_merge_candの値を6から差し引くことにより導出されることができる。この場合、IBCマージ候補の最大個数は1以上6以下であってもよい。
以上、図16及び図17を参照して上述した例によれば、正規マージモード、サブブロックベースのマージモードなどの様々なインター予測モードにおいて、マージ候補の最大個数に関する情報がピクチャパラメータセット(PPS)及び/又はピクチャヘッダーを介してシグナリングされることができる。しかし、実際のシステム実現環境下で、マージ候補の個数がピクチャごとに異なるケース(use case)は多くない。よって、マージ候補の最大個数に関する情報をピクチャパラメータセット(PPS)及び/又はピクチャヘッダーを介してシグナリングする場合、シグナリングオーバーヘッドが不要に増加することができる。
また、マージ候補の最大個数に関する情報は、シーケンスレベルでシグナリングされる所定の情報(例えば、sps_affine_enabled_flag、sps_sbtmvp_enabled_flagなど)に基づいてピクチャパラメータセット(PPS)及び/又はピクチャヘッダーを介してシグナリングされることができる。つまり、マージ候補の最大個数は、シーケンスレベル及びピクチャレベルで散発的にシグナリングされる複数の情報に基づいて決定されることができ、その結果、様々なインター予測モードに対するツール制御(tool control)が複雑になる可能性がある。
これらの問題を解決するために、本開示の実施例によれば、マージ候補の最大個数に関する情報は、シーケンスレベル、例えば、シーケンスパラメータセット(SPS)を介して統合的にシグナリングされることができる。これにより、シグナリングオーバーヘッドが減少することができ、様々なインター予測モードに対するツール制御がより容易になることができる。
以下、添付図面を参照して、本開示の実施例を詳細に説明する。
第1実施例
第1実施例によれば、様々なインター予測モードにおいて、マージ候補の最大個数に関する情報は、ピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内で統合的に定義されることができる。
図18は、本開示の一実施例によるピクチャパラメータセット(PPS)の一例を示す図である。
図18を参照すると、ピクチャパラメータセット(PPS)は、図16を参照して上述したピクチャパラメータセット(PPS)とは異なり、マージ候補の最大個数に関する情報を含まないことができる。例えば、ピクチャパラメータセット(PPS)は、正規マージ候補の最大個数に関するシンタックス要素であるpps_six_minus_max_num_merge_cand_plus1、及びTPMマージ候補の最大個数に関するシンタックス要素であるpps_max_num_merge_cand_minus_max_num_triangle_cand_plus1を含まないことができる。これにより、正規マージモード及びTPMに対するツール制御がピクチャパラメータセット(PPS)とは独立して行われることができる。
図19は、本開示の一実施例によるシーケンスパラメータセット(SPS)の一例を示す図である。
図19を参照すると、シーケンスパラメータセット(SPS)は、マージ候補の最大個数に関する情報を含むことができる。
例えば、シーケンスパラメータセット(SPS)は、sps_six_minus_max_num_merge_candを含むことができる。sps_six_minus_max_num_merge_candは、正規マージモード(regular merge mode)において、正規マージ候補の最大個数を導出することに利用可能である。例えば、正規マージ候補の最大個数は、sps_six_minus_max_num_merge_candに基づいて、下記数式3のように導出できる。
〔数式3〕
MaxNumMergeCand=6-sps_six_minus_max_num_merge_cand
ここで、MaxNumMergeCandは、正規マージ候補の最大個数を意味することができる。一例において、MaxNumMergeCandの値は1以上6以下であり得る。
また、シーケンスパラメータセット(SPS)は、sps_five_minus_max_num_subblock_merge_candを含むことができる。sps_five_minus_max_num_subblock_merge_candは、サブブロックベースのマージモード(subblock-based merge mode)において、サブブロックマージ候補の最大個数を導出することに利用可能である。例えば、サブブロックマージ候補の最大個数は、sps_five_minus_max_num_subblock_merge_candに基づいて、下記数式4の通りに導出できる。
〔数式4〕
MaxNumSubblockMergeCand=5-sps_five_minus_max_num_subblock_merge_cand
ここで、MaxNumSubblockMergeCandは、サブブロックマージ候補の最大個数を意味することができる。一例において、MaxNumSubblockMergeCandの値は、0以上5以下であり得る。
sps_five_minus_max_num_subblock_merge_candは、シーケンスレベルでアフィンモード(affine mode)が利用可能である場合(例えば、sps_affine_enabled_flag==1)にのみシグナリングされることができる。sps_five_minus_max_num_subblock_merge_candがシグナリングされない場合、sps_five_minus_max_num_subblock_merge_candの値は、シーケンスレベルでサブブロックベースのTMVPモードが利用可能であるか否かを示す第1フラグ(例えば、sps_sbtmvp_enabled_flag)に基づいて所定の値と推論できる。例えば、sps_five_minus_max_num_subblock_merge_candの値は、前記第1フラグの値を5から差し引いた値に推論できる。
また、シーケンスパラメータセット(SPS)は、sps_max_num_merge_cand_minus_max_num_triangle_candを含むことができる。sps_max_num_merge_cand_minus_max_num_triangle_candは、三角分割モード(TPM)において、TPMマージ候補の最大個数を導出することに利用可能である。例えば、TPMマージ候補の最大個数は、sps_max_num_merge_cand_minus_max_num_triangle_candに基づいて、下記数式5の通りに導出できる。
〔数式5〕
MaxNumTriangleMergeCand
=MaxNumMergeCand-sps_max_num_merge_cand_minus_max_num_triangle_cand
ここで、MaxNumTriangleMergeCandは、TPMマージ候補の最大個数を意味し、MaxNumMergeCandは、正規マージ候補の最大個数を意味することができる。一例において、MaxNumTriangleMergeCandの値は、2以上であり、正規マージ候補の最大個数(例えば、MaxNumMergeCand)以下であり得る。
sps_max_num_merge_cand_minus_max_num_triangle_candは、シーケンスレベルでTPMが利用可能であり(例えば、sps_triangle_enabled_flag==1)、正規マージ候補の最大個数が2以上である場合(例えば、MaxNumMergeCand≧2)にのみシグナリングされることができる。sps_max_num_merge_cand_minus_max_num_triangle_candがシグナリングされない場合、シーケンスレベルでTPMが利用可能でないか(例えば、sps_triangle_enabled_flag==0)、或いは正規マージ候補の最大個数が2より小さければ(例えば、MaxNumMergeCand<2)、TPMマージ候補の最大個数は0に設定されることができる。この場合、TPMは許容されないことができる。
また、シーケンスパラメータセット(SPS)は、sps_six_minus_max_num_ibc_merge_candを含むことができる。sps_six_minus_max_num_ibc_merge_candは、IBC(intra block copy)において、IBCマージ候補の最大個数を導出することに利用可能である。例えば、IBCマージ候補の最大個数は、sps_six_minus_max_num_ibc_merge_candに基づいて、下記数式6のとおりに導出できる。
〔数式6〕
MaxNumIbcMergeCand=6-sps_six_minus_max_num_ibc_merge_cand
ここで、MaxNumIbcMergeCandは、IBCマージ候補の最大個数を意味することができる。一例において、MaxNumIbcMergeCandの値は1以上6以下であり得る。
シーケンスパラメータセット(SPS)がマージ候補の最大個数に関する情報を含むことにより、前記シーケンスパラメータセット(SPS)を参照するピクチャヘッダーは、図17を参照して上述したピクチャヘッダーとは異なり、ピクチャレベルでTMVPモードが利用可能であるか否かに関するシンタックス要素(例えば、pic_temporal_mvp_enabled_flag)及びマージ候補の最大個数に関するシンタックス要素(例えば、pic_six_minus_max_num_merge_cand、pic_five_minus_max_num_subblock_merge_cand、pic_max_num_merge_cand_minus_max_num_triangle_cand、及びpic_six_minus_max_num_ibc_merge_cand)を含まないことができる。
以上、図18及び図19を参照して上述した第1実施例によれば、様々なインター予測モードにおいて、マージ候補の最大個数に関する情報がピクチャレベルより上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内で統合的に定義されることができる。これにより、マージ候補の最大個数に関する情報をピクチャパラメータセット(PPS)及び/又はピクチャヘッダーを介してシグナリングする場合に比べて、シグナリングオーバーヘッドが減少することができる。また、マージ候補の最大個数に関する情報は、同じ上位レベルシンタックス、例えば、シーケンスパラメータセット(SPS)内の所定の情報(例えば、sps_affine_enabled_flag、sps_sbtmvp_enabled_flagなど)に基づいてシグナリングされることができる。これにより、正規マージモード、サブブロックベースのマージモードなどの様々なインター予測モードに対するツール制御(tool control)がより容易になることができる。
一方、一例において、ピクチャレベルでTMVPモードが利用可能であるか否かを示すシンタックス要素であるpic_temporal_mvp_enabled_flagがピクチャヘッダーから除外されることにより、スライスヘッダー内のシグナリング条件の一部が図20のように修正されることができる。
図20は、本開示の一実施例によるスライスヘッダーの一例を示す図である。
図20を参照すると、同一位置ピクチャ(colPic)の識別情報(例えば、collocated_from_l0_flag及びcollocated_ref_idx)は、ピクチャレベルでTMVPモードが利用可能であるか否かに関係なく、シーケンスレベルでTMVPモードが利用可能であるか否か(例えば、sps_temporal_mvp_enabled_flag)に基づいてシグナリングされることができる。
第2実施例
第2実施例によれば、マージ候補の最大個数に関する情報(例えば、sps_six_minus_max_num_merge_cand、sps_five_minus_max_num_subblock_merge_candなど)は、第1実施例と同様に、ピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内で統合的に定義されることができる。具体的には、図18を参照して上述したピクチャパラメータセット(PPS)及び図19を参照して上述したシーケンスパラメータセット(SPS)は、第2実施例にも適用できる。ただし、第2実施例は、一部のシンタックス要素のセマンティクス及びピクチャヘッダー構造が第1実施例とは異なり得る。以下、第1実施例との相違点を中心に、第2実施例について詳細に説明する。
図21は、本開示の一実施例によるピクチャヘッダーの一例を示す図である。
図21を参照すると、本開示の一実施例によるピクチャヘッダーは、マージ候補の最大個数に関するシンタックス要素を含まないことができる。具体的には、シーケンスパラメータセット(SPS)がマージ候補の最大個数に関するシンタックス要素を含むことにより、前記シーケンスパラメータセット(SPS)を参照するピクチャヘッダーは、図17を参照して上述したピクチャヘッダーとは異なり、マージ候補の最大個数に関するシンタックス要素(例えば、pic_six_minus_max_num_merge_cand、pic_five_minus_max_num_subblock_merge_cand、pic_max_num_merge_cand_minus_max_num_triangle_cand、及びpic_six_minus_max_num_ibc_merge_cand)を含まないことができる。
しかし、ピクチャヘッダーは、ピクチャレベルでTMVPモードが利用可能であるか否かに関するシンタックス要素であるpic_temporal_mvp_enabled_flagを含むことができる。この点で、第2実施例は、第1実施例とは異なり得る。
pic_temporal_mvp_enabled_flagは、前記ピクチャヘッダーを参照する現在ピクチャに対してTMVPモードが利用可能であるか否かを示すことができる。例えば、第1値(例えば、0)を有するpic_temporal_mvp_enabled_flagは、現在ピクチャに対してTMVPモードが利用可能でないことを示すことができる。これとは異なり、第2値(例えば、1)を有するpic_temporal_mvp_enabled_flagは、前記ピクチャヘッダーを参照する現在ピクチャに対してTMVPモードが利用可能であることを示すことができる。
pic_temporal_mvp_enabled_flagは、シーケンスレベルでTMVPモードが利用可能である場合(例えば、sps_temporal_mvp_enabled_flag==1)にのみシグナリングされることができる。pic_temporal_mvp_enabled_flagがシグナリングされない場合、pic_temporal_mvp_enabled_flagの値は第1値(例えば、0)と推論できる。一方、DPB(decoded picture buffer)内に現在ピクチャと同じ空間解像度(spatial resolution)を有する参照ピクチャが存在しない場合、pic_temporal_mvp_enabled_flagの値は第1値(例えば、0)に制限されることができる。
ピクチャヘッダーがpic_temporal_mvp_enabled_flagを含むことにより、図19を参照して上述したシーケンスパラメータセット(SPS)内で、サブブロックベースのマージモードに関するシンタックス要素であるsps_five_minus_max_num_subblock_merge_candのセマンティクスは、次のように一部修正可能である。
sps_five_minus_max_num_subblock_merge_candがシグナリングされない場合(例えば、sps_affine_enabled_flag==0)、sps_five_minus_max_num_subblock_merge_candの値は、所定の値(例えば、5)と推論できる。
一例において、sps_five_minus_max_num_subblock_merge_candが所定の値(例えば、5)と推論される場合、変数IsInferedが真(true)に設定できる。そして、前述した数式4に基づいて導出されたサブブロックマージ候補の最大個数は、pic_temporal_mvp_enabled_flag及びIsInferedに基づいて、下記数式7の通りに更新できる。
〔数式7〕
MaxNumSubblockMergeCand=(IsInfered&&(sps_sbtmvp_enabled_flag&&pic_temporal_mvp_enabled_flag))?1:MaxNumSubblockMergeCand
ここで、MaxNumSubblockMergeCandは、サブブロックマージ候補の最大個数を意味することができる。一例において、MaxNumSubblockMergeCandの値は0以上5以下であり得る。
数式7を参照すると、IsInferedが真(true)であり、sps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果が真(true)である場合、MaxNumSubblockMergeCandの値は所定の値(例えば、1)に更新されることができる。これとは異なり、IsInfered及びsps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果のうちの少なくとも一つが偽(false)である場合、MaxNumSubblockMergeCandの値は更新されないことができる。一方、数式7は、pic_temporal_mvp_enabled_flagのセマンティクスとしてピクチャヘッダーで定義されることもでき、或いはsps_five_minus_max_num_subblock_merge_candのセマンティクスとしてシーケンスパラメータセット(SPS)で定義されることもできる。
他の例において、sps_five_minus_max_num_subblock_merge_candが所定の値(例えば、5)と推論される場合、変数IsInferedが真(true)に設定されることができる。そして、サブブロックマージ候補の最大個数は、sps_five_minus_max_num_subblock_merge_cand、pic_temporal_mvp_enabled_flag、及びIsInferedに基づいて、下記数式8の通りに導出できる。すなわち、前述した数式4は、数式8に置き換えられることができる。
〔数式8〕
MaxNumSubblockMergeCand=5-sps_five_minus_max_num_subblock_merge_cand+(IsInfered&&(sps_sbtmvp_enabled_flag&&pic_temporal_mvp_enabled_flag))?1:0
ここで、MaxNumSubblockMergeCandは、サブブロックマージ候補の最大個数を意味することができる。一例において、MaxNumSubblockMergeCandの値は0以上5以下であり得る。
数式8を参照すると、IsInferedが真(true)であり、sps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果が真(true)である場合、MaxNumSubblockMergeCandの値は、5からsps_five_minus_max_num_subblock_merge_candの値を差し引いた値に1を加算することにより導出できる。これとは異なり、IsInfered及びsps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果のうちの少なくとも1つが偽(false)である場合、MaxNumSubblockMergeCandの値は、5からsps_five_minus_max_num_subblock_merge_candの値を差し引くことにより導出できる。一方、数式8は、pic_temporal_mvp_enabled_flagのセマンティクスとしてピクチャヘッダーで定義されることもでき、或いはsps_five_minus_max_num_subblock_merge_candのセマンティクスとしてシーケンスパラメータセット(SPS)で定義されることもできる。
別の例において、サブブロックマージ候補の最大個数を導出することに用いられる基準値は、5から4に変更されることができる。これにより、sps_five_minus_max_num_subblock_merge_candの名称もsps_four_minus_max_num_subblock_merge_candに変更されることができる。
sps_four_minus_max_num_subblock_merge_candがシグナリングされない場合(例えば、sps_affine_enabled_flag==0)、sps_four_minus_max_num_subblock_merge_candの値は、シーケンスレベルでサブブロックベースのTMVモードが利用可能であるか否かに関係なく、所定の値(例えば、4)と推論できる。そして、前述した数式4及び数式7は、下記数式9及び数式10にそれぞれ置き換えられることができる。
〔数式9〕
MaxNumSubblockMergeCand=4-sps_four_minus_max_num_subblock_merge_cand
〔数式10〕
MaxNumSubblockMergeCand+=(sps_sbtmvp_enabled_flag&&pic_temporal_mvp_enabled_flag))?1:0
ここで、MaxNumSubblockMergeCandは、サブブロックマージ候補の最大個数を意味することができる。
数式9及び数式10を一緒に参照すると、MaxNumSubblockMergeCandの値は、sps_four_minus_max_num_subblock_merge_candの値を4から差し引くことにより導出できる。そして、MaxNumSubblockMergeCandの値は、sps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果に基づいて更新されることができる。例えば、sps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果が真(true)である場合、MaxNumSubblockMergeCandの値は1だけ増加することができる。これに反し、sps_sbtmvp_enabled_flagとpic_temporal_mvp_enabled_flagの論理積(AND)演算結果が偽(false)である場合、MaxNumSubblockMergeCandの値は更新されないことができる。一方、数式10は、pic_temporal_mvp_enabled_flagのセマンティクスとしてピクチャヘッダーで定義されることもでき、或いはsps_four_minus_max_num_subblock_merge_candのセマンティクスとしてシーケンスパラメータセット(SPS)で定義されることもできる。
以上、図21を参照して上述した第2実施例によれば、様々なインター予測モードにおいて、マージ候補の最大個数に関する情報がピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内で統合的に定義されることができる。これにより、マージ候補の最大個数に関する情報をピクチャパラメータセット(PPS)及び/又はピクチャヘッダーを介してシグナリングされる場合に比べて、シグナリングオーバーヘッドが減少することができる。また、マージ候補の最大個数に関する情報は、同じ上位レベルシンタックス、例えば、シーケンスパラメータセット(SPS)内の所定の情報(例えば、sps_affine_enabled_flag、sps_sbtmvp_enabled_flagなど)に基づいてシグナリングされることができる。これにより、正規マージモードやサブブロックベースのマージモードなどの様々なインター予測モードに対するツール制御(tool control)がより容易になることができる。
以下、図22及び図23を参照して、本開示の一実施例による画像符号化/復号化方法を詳細に説明する。
図22は、本開示の一実施例による画像符号化方法を示すフローチャートである。
図22の画像符号化方法は、図2の画像符号化装置によって行われることができる。例えば、ステップS2210及びステップS2220は、インター予測部180によって行われることができる。また、ステップS2230は、エントロピー符号化部190によって行われることができる。
図22を参照すると、現在ブロックに対してインター予測モードが適用される場合、画像符号化装置は、現在ブロックの予測モードに基づいて現在ブロックに対するマージ候補リストを構成することができる(S2210)。
具体的には、現在ブロックの予測モードは、様々なインター予測モード(例えば、正規マージモード(regular merge mode)、サブブロックベースのマージモード(subblock-based merge mode)、三角分割モード(Triangle partition for inter prediction、TPM)、又はIBC(intra block copy)など)のうちのいずれか一つに決定されることができる。
画像符号化装置は、現在ブロックの予測モードに基づいてマージ候補を誘導し、誘導されたマージ候補を用いてマージ候補リストを構成することができる。ここで、マージ候補は、現在ブロックの周辺ブロック、例えば空間周辺ブロック及び/又は時間周辺ブロックから誘導されることができる。マージ候補は、現在ブロックの予測モードに応じて正規マージ候補、サブブロックマージ候補、TPMマージ候補などと様々に呼ばれることができる。
画像符号化装置は、マージ候補リストに含まれるマージ候補の個数が所定の最大個数に到達するまで、追加マージ候補をマージ候補リストに挿入することができる。ここで、追加マージ候補は、例えばhistory based merge candidate(s)、pair-wise average merge candidate(s)、ATMVP、combined bi-predictiveマージ候補(現在スライス/タイルグループのスライス/タイルグループタイプがBタイプである場合)及び/又はゼロ(zero)ベクトルマージ候補のうちの少なくとも1つを含むことができる。そして、マージ候補リストに含まれるマージ候補の個数が所定の最大個数以上になる場合、画像符号化装置はマージ候補リストの構成を終了することができる。
画像符号化装置は、前記構成されたマージ候補リストに基づいて現在ブロックの動き情報を導出することができる(S2220)。具体的には、画像符号化装置は、RDコストに基づいて、マージ候補リストに含まれているマージ候補の中から最適なマージ候補を選択し、前記選択されたマージ候補の動き情報を現在ブロックの動き情報として導出することができる。この場合、画像符号化装置は、前記導出された動き情報に基づいてインター予測を行うことにより、現在ブロックの予測ブロックを生成することができる。
画像符号化装置は、現在ブロックの動き情報及びマージ候補の最大個数情報を符号化することができる(S2230)。ここで、現在ブロックの動き情報は、前記選択されたマージ候補を指す候補選択情報(例えば、マージインデックス)を含むことができる。また、マージ候補の最大個数情報は、インター予測モード別の情報を含むことができ、マージ候補の最大個数を導出することに用いられることができる。
本開示の実施例によれば、マージ候補の最大個数情報は、ピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内に統合的に符号化されることができる。例えば、シーケンスパラメータセット(SPS)は、正規マージモードのためのマージ候補の最大個数情報であるsps_six_minus_max_num_merge_candを含むことができる。また、シーケンスパラメータセット(SPS)は、サブブロックベースのマージモードのためのマージ候補の最大個数情報であるsps_five_minus_max_num_subblock_merge_candを含むことができる。また、シーケンスパラメータセット(SPS)は、三角分割モード(TPM)のためのマージ候補の最大個数情報であるsps_max_num_merge_cand_minus_max_num_triangle_candを含むことができる。また、シーケンスパラメータセット(SPS)は、IBCのためのマージ候補の最大個数情報であるsps_six_minus_max_num_ibc_merge_candを含むことができる。シーケンスパラメータセット(SPS)の一例は、図19を参照して前述したとおりである。一方、図19では、マージ候補の最大個数情報がシーケンスパラメータセットにのみ含まれた場合を示すが、これは、実施例によって様々に変形可能である。例えば、上述したsps_six_minus_max_num_merge_cand、sps_five_minus_max_num_subblock_merge_cand、sps_max_num_merge_cand_minus_max_num_triangle_cand、及びsps_six_minus_max_num_ibc_merge_candのうちの一部は、図17を参照して上述したようにピクチャヘッダーに含まれることもできる。
一方、サブブロックベースのマージモードで、マージ候補の最大個数は、現在ブロックに対してアフィンモードが利用可能であるか否かに基づいて決定されることができる。具体的には、アフィンモードが利用可能である場合(例えば、sps_affine_enabled_flag==1)、マージ候補の最大個数は、上述したsps_five_minus_max_num_subblock_merge_candの値を5から差し引いた値に決定できる。これとは異なり、アフィンモードが利用可能でない場合(例えば、sps_affine_enabled_flag==0)、マージ候補の最大個数は、現在ブロックに対してサブブロックベースのTMVP(subblock-based temporal morion vector predictor)モードが利用可能であるか否か(例えば、sps__sbtmvp_enabled_flag)及び現在ブロックに対してTMVPモード(temporal motion vector predictor)が利用可能であるか否か(例えば、pic_temporal_mvp_enabled_flag)に基づいて決定されることができる。例えば、前記サブブロックベースのTMVPモード及び前記TMVPモードのうちの少なくとも一つが利用可能でない場合、前記マージ候補の最大個数は第1値(例えば、0)と決定できる。これとは異なり、前記サブブロックベースのTMVPモード及び前記TMVPモードが全て利用可能である場合、前記マージ候補の最大個数は第2値(例えば、1)と決定できる。このように、サブブロックベースのマージモードで、マージ候補の最大個数情報はシーケンスレベルでシグナリングされるが、マージ候補の最大個数は、ピクチャレベルでTMVPモードが利用可能であるか否かを一緒に考慮することにより、ピクチャレベルで決定されることができる。
以上、本開示の一実施例によれば、マージ候補の最大個数情報がピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)内で統合的に符号化されることにより、シグナリングオーバーヘッドがより減少することができる。
図23は、本開示の一実施例による画像復号化方法を示すフローチャートである。
図23の画像復号化方法は、図3の画像復号化装置によって行われることができる。例えば、ステップS2310乃至ステップS2330は、インター予測部260によって行われることができる。
図23を参照すると、現在ブロックに対してインター予測モードが適用される場合、画像復号化装置は、現在ブロックの予測モードに基づいて、現在ブロックに対するマージ候補リストを構成することができる(S2310)。
具体的には、画像復号化装置は、現在ブロックの予測モードに基づいてマージ候補を誘導し、誘導されたマージ候補を用いてマージ候補リストを構成することができる。ここで、マージ候補は、現在ブロックの周辺ブロック、例えば空間周辺ブロック及び/又は時間周辺ブロックから誘導されることができる。そして、マージ候補リストに含まれるマージ候補の個数が所定の最大個数以上となる場合、画像復号化装置は、マージ候補リストの構成を終了することができる。
本開示の実施例によれば、マージ候補の最大個数は、ピクチャレベルよりも上位レベルのシンタックス、例えば、シーケンスパラメータセット(SPS)を介して取得されるマージ候補の最大個数情報に基づいて決定されることができる。例えば、シーケンスパラメータセット(SPS)は、正規マージモードのためのマージ候補の最大個数情報であるsps_six_minus_max_num_merge_candを含むことができる。また、シーケンスパラメータセット(SPS)は、サブブロックベースのマージモードのためのマージ候補の最大個数情報であるsps_five_minus_max_num_subblock_merge_candを含むことができる。また、シーケンスパラメータセット(SPS)は、三角分割モード(TPM)のためのマージ候補の最大個数情報であるsps_max_num_merge_cand_minus_max_num_triangle_candを含むことができる。また、シーケンスパラメータセット(SPS)は、IBCのためのマージ候補の最大個数情報であるsps_six_minus_max_num_ibc_merge_candを含むことができる。シーケンスパラメータセット(SPS)の一例は、図19を参照して上述した通りである。一方、図19では、マージ候補の最大個数情報がシーケンスパラメータセットにのみ含まれている場合を示すが、これは、実施例に応じて様々に変形可能である。例えば、上述したsps_six_minus_max_num_merge_cand、sps_five_minus_max_num_subblock_merge_cand、sps_max_num_merge_cand_minus_max_num_triangle_cand、及びsps_six_minus_max_num_ibc_merge_candのうちの一部は、図17を参照して上述したようにピクチャヘッダーに含まれてもよい。
一方、サブブロックベースのマージモードで、マージ候補の最大個数は、現在ブロックに対してアフィンモードが利用可能であるか否かに基づいて決定されることができる。具体的には、アフィンモードが利用可能である場合(例えば、sps_affine_enabled_flag==1)、マージ候補の最大個数は、シーケンスパラメータセットを介して取得されるマージ候補の最大個数情報(例えば、sps_five_minus_max_num_subblock_merge_cand)に基づいて決定されることができる。例えば、マージ候補の最大個数は、sps_five_minus_max_num_subblock_merge_candの値を5から差し引いた値に決定できる。これとは異なり、アフィンモードが利用可能でない場合(例えば、sps_affine_enabled_flag==0)、マージ候補の最大個数は、現在ブロックに対してサブブロックベースのTMVPモード(subblock-based temporal motion vector predictor)が利用可能であるか否か、及び現在ブロックに対してTMVPモード(temporal motion vector predictor)が利用可能であるか否かに基づいて決定されることができる。例えば、前記サブブロックベースのTMVPモード及び前記TMVPモードのうちの少なくとも1つが利用可能でない場合、マージ候補の最大個数は、第1値(例えば、0)と決定できる。これとは異なり、前記サブブロックベースのTMVPモード及び前記TMVPモードが全て利用可能である場合、マージ候補の最大個数は第2値(例えば、1)と決定できる。
現在ブロックに対してサブブロックベースのTMVPモードが利用可能であるか否かは、シーケンスパラメータセットを介して取得される所定の第1フラグ(例えば、sps_sbtmvp_enabled_flag)に基づいて決定されることができる。例えば、sps_sbtmvp_enabled_flagが第1値(例えば、0)を有する場合、サブブロックベースのTMVPモードは利用可能でない。これとは異なり、sps_sbtmvp_enabled_flagが第2値(例えば、1)を有する場合、サブブロックベースのTMVPモードは利用可能である。現在ブロックに対してTMVPモードが利用可能であるか否かは、ピクチャヘッダーを介して取得される所定の第2フラグ(例えば、pic_temporal_mvp_enabled_flag)に基づいて決定されることができる。例えば、pic_temporal_mvp_enabled_flagが第1値(例えば、0)を有する場合、TMVPモードは利用可能でない。これとは異なり、pic_temporal_mvp_enabled_flagの値(例えば、1)を有する場合、TMVPモードは利用可能である。このように、サブブロックベースのマージモードで、マージ候補の最大個数情報はシーケンスレベルでシグナリングされるが、マージ候補の最大個数は、ピクチャレベルでTMVPモードが利用可能であるか否かを一緒に考慮することにより、ピクチャレベルで決定できる。
一例において、サブブロックベースのマージモードでアフィンモードが利用可能である場合、マージ候補の最大個数は、サブブロックベースのTMVPモードが利用可能であるか否かに基づいて所定の範囲を有することができる。
具体的には、sps_five_minus_max_num_subblock_merge_candは、0以上、「5-sps_sbtmvp_enabled_flag」以下の範囲を有することができる。よって、サブブロックベースのTMVPモードが利用可能である場合(例えば、sps_sbtmvp_enabled_flag==1)、sps_five_minus_max_num_subblock_merge_candは、0以上4以下の範囲を有することができる。これとは異なり、サブブロックベースのTMVPモードが利用可能でない場合(例えば、sps_sbtmvp_enabled_flag==0)、sps_five_minus_max_num_subblock_merge_candは0以上5以下の範囲を有することができる。一方、アフィンモードが利用可能である場合(例えば、sps_affine_enabled_flag==1)、マージ候補の最大個数は、「5-sps_five_minus_max_num_subblock_merge_cand」であり得る。したがって、サブブロックベースのマージモードでアフィンモードが利用可能である場合(例えば、sps_affine_enabled_flag==1)であって、サブブロックベースのTMVPモードが利用可能であれば(例えば、sps_sbtmvp_enabled_flag==1)、マージ候補の最大個数は1以上5以下の範囲を有することができる。これとは異なり、サブブロックベースのマージモードでアフィンモードが利用可能である場合(例えば、sps_affine_enabled_flag==1)であって、サブブロックベースのTMVPモードが利用可能でなければ(例えば、sps_sbtmvp_enabled_flag==0)、マージ候補の最大個数は0以上5以下の範囲を有することができる。
図23を参照すると、画像復号化装置は、前記構成されたマージ候補リストに基づいて現在ブロックの動き情報を導出することができる(S2320)。具体的には、画像復号化装置は、ビットストリームから取得される候補選択情報(例えば、マージインデックス)に基づいて、マージ候補リストに含まれているマージ候補の中から少なくとも1つのマージ候補を選択することができる。そして、画像復号化装置は、前記選択されたマージ候補の動き情報を現在ブロックの動き情報として導出することができる。
画像復号化装置は、前記導出された動き情報に基づいてインター予測を行うことにより、現在ブロックの予測ブロックを生成することができる(S2330)。前記生成された予測ブロックに基づいて現在ブロックが復元されることができるのは、前述した通りである。
以上、本開示の一実施例によれば、マージ候補の最大個数を決定するための様々な情報がピクチャレベルよりも上位レベルのシンタックス、例えばシーケンスパラメータセット(SPS)に統合されることにより、様々なインター予測モードに対するツール制御(tool CONTROL)がより容易になることができる。
本開示で説明されたシンタックス要素の名称は、当該シンタックス要素がシグナリングされる位置に関する情報を含むことができる。例えば、「sps_」で始まるシンタックス要素は、当該シンタックス要素がシーケンスパラメータセット(SPS)でシグナリングされることを意味することができる。さらに、「pps_」、「ph_」、「sh_」などで始まるシンタックス要素は、当該シンタックス要素がピクチャパラメータセット(PPS)、ピクチャヘッダー、スライスヘッダーなどでそれぞれシグナリングされることを意味することができる。
本開示の例示的な方法は、説明の明確性のために動作のシリーズで表現されているが、これは、ステップが行われる順序を制限するためのものではなく、必要な場合には、それぞれのステップが同時に又は異なる順序で行われることもできる。本開示による方法を実現するために、例示するステップにさらに他のステップを含むか、一部のステップを除いて残りのステップを含むか、或いは一部のステップを除いて追加の他のステップを含むこともできる。
本開示において、所定の動作(ステップ)を行う画像符号化装置又は画像復号化装置は、当該動作(ステップ)の実行条件や状況を確認する動作(ステップ)を行うことができる。例えば、所定の条件が満足される場合、所定の動作を行うと記載された場合、画像符号化装置又は画像復号化装置は、前記所定の条件が満足されるか否かを確認する動作を行った後、前記所定の動作を行うことができる。
本開示の様々な実施例は、すべての可能な組み合わせを羅列したものではなく、本開示の代表的な態様を説明するためのものであり、様々な実施例で説明する事項は、独立して適用されてもよく、2つ以上の組み合わせで適用されてもよい。
また、本開示の様々な実施例は、ハードウェア、ファームウェア(firmware)、ソフトウェア、又はそれらの組み合わせなどによって実現できる。ハードウェアによる実現の場合、1つ又はそれ以上のASICs(Application Specific Integrated Circuits)、DSPs(Digital Signal Processors)、DSPDs(Digital Signal Processing Devices)、PLDs(Programmable Logic Devices)、FPGAs(Field Programmable Gate Arrays)、汎用プロセッサ(general processor)、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって実現できる。
また、本開示の実施例が適用された画像復号化装置及び画像符号化装置は、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信などのリアルタイム通信装置、モバイルストリーミング装置、記憶媒体、カムコーダ、注文型ビデオ(VoD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、及び医療用ビデオ装置などに含まれることができ、ビデオ信号又はデータ信号を処理するために使用できる。例えば、OTTビデオ(Over the top video)装置としては、ゲームコンソール、ブルーレイプレーヤー、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)などを含むことができる。
図24は本開示の実施例が適用できるコンテンツストリーミングシステムを例示する図である。
図24に示すように、本開示の実施例が適用されたコンテンツストリーミングシステムは、大きく、符号化サーバ、ストリーミングサーバ、Webサーバ、メディアストレージ、ユーザ装置及びマルチメディア入力装置を含むことができる。
前記符号化サーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを前記ストリーミングサーバに伝送する役割を果たす。他の例として、スマートフォン、カメラ、ビデオカメラなどのマルチメディア入力装置がビットストリームを直接生成する場合、前記符号化サーバは省略できる。
前記ビットストリームは、本開示の実施例が適用された画像符号化方法及び/又は画像符号化装置によって生成でき、前記ストリーミングサーバは、前記ビットストリームを伝送又は受信する過程で一時的に前記ビットストリームを保存することができる。
前記ストリーミングサーバは、Webサーバを介してユーザの要求に基づいてマルチメディアデータをユーザ装置に伝送し、前記Webサーバは、ユーザにどんなサービスがあるかを知らせる媒介体の役割を果たすことができる。ユーザが前記Webサーバに所望のサービスを要求すると、前記Webサーバは、これをストリーミングサーバに伝達し、前記ストリーミングサーバは、ユーザにマルチメディアデータを伝送することができる。この時、前記コンテンツストリーミングシステムは、別途の制御サーバを含むことができ、この場合、前記制御サーバは、前記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を果たすことができる。
前記ストリーミングサーバは、メディアストレージ及び/又は符号化サーバからコンテンツを受信することができる。例えば、前記符号化サーバからコンテンツを受信する場合、前記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバは、前記ビットストリームを一定時間の間保存することができる。
前記ユーザ装置の例としては、携帯電話、スマートフォン(smart phone)、ノートパソコン(laptop computer)、デジタル放送用端末、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device)、例えば、スマートウォッチ(smartwatch)、スマートグラス(smart glass)、HMD(head mounted display)、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどがあり得る。
前記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運営されることができ、この場合、各サーバから受信するデータは、分散処理されることができる。
本開示の範囲は、様々な実施例の方法による動作が装置又はコンピュータ上で実行されるようにするソフトウェア又はマシン-実行可能なコマンド(例えば、オペレーティングシステム、アプリケーション、ファームウェア(firmware)、プログラムなど)、及びこのようなソフトウェア又はコマンドなどが保存されて装置又はコンピュータ上で実行できる非一時的なコンピュータ可読媒体(non-transitory computer-readable medium)を含む。