以下、本発明に係る好適な実施形態を添付の図面を参照して、詳細に説明する。添付された図面と共に以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施され得る唯一の実施形態を示そうとするものではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかし、当業者は、本発明が、このような具体的な細部事項なくても実施できることが分かる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図の形式で示され得る。
さらに、本発明で用いられる用語は、可能な限り、現在広く用いられる一般的な用語を選択したが、特定の場合には、出願人が任意に選定した用語を用いて説明する。そのような場合には、該当部分の詳細な説明で、その意味を明確に記載するため、本発明の説明で用いられた用語の名称のみで単純に解釈されてはならないものであり、その該当する用語の意味まで把握して解釈されるべきであることを明らかにしておきたい。
以下の説明で用いられる特定の用語は、本発明の理解を助けるために提供されたものであり、このような特定の用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更され得る。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コードの過程で適切に代替されて解釈されることがある。
以下、本明細書で「処理ユニット」は、予測、変換、及び/または量子化などのようなエンコード/デコードの処理過程が実行される単位を意味する。以下、説明の便宜のために処理ユニットは、「処理ブロック」または「ブロック」と
指称されることもある。
処理ユニットは、輝度(luma)成分の単位と色差(chroma)成分の単位を含む意味で解釈され得る。例えば、処理ユニットは、コーディングツリーユニット(CTU:Coding Tree Unit)、コーディングユニット(CU:Coding Unit)、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)に該当することがある。
また、処理ユニットは、輝度(luma)成分の単位または色差(chroma)成分の単位として解釈され得る。例えば、処理ユニットは、輝度(luma)成分のコーディングツリーブロック(CTB:Coding Tree Block)、コーディングブロック(CB:Coding Block)、予測ブロック(PU:Prediction Block)または変換ブロック(TB:Transform Block)に該当することができる。または、色差(chroma)成分のコーディングツリーブロック(CTB)、コーディングブロック(CB)、予測ブロック(PU)または変換ブロック(TB)に該当することができる。また、これに限定されるものではなく処理ユニットは、輝度(luma)成分の単位と色差(chroma)成分の単位を含む意味で解釈されることもできる。
また、処理ユニットは、必ず正方形のブロックに限定されるものではなく、3つ以上の頂点を有する多角形の形で構成することもできる。
なお、以下、本明細書においてピクセルまたは画素などをサンプルとして通称する。そして、サンプルを用いることは、ピクセル値または画素値などを用いることを意味することができる。
図1は、本発明が適用される実施形態として、ビデオ/映像信号のエンコードが行われるエンコード装置の概略的なブロック図を示す。
図1を参照すると、 エンコード装置100は、映像分割部110、減算部115、変換部120、量子化部130、逆量子化部140、逆変換部150、加算部155、フィルタリング部160、メモリ170、インター予測部180、イントラ予測部185及びエントロピーエンコード部190を含んで構成され得る。インター予測部180とイントラ予測部185は、予測部で通称され得る。つまり、予測部はインター予測部180とイントラ予測部185を含むことができる。変換部120、量子化部130、逆量子化部140、逆変換部150は、レジデュアル(residual)処理部に含まれることができる。レジデュアル処理部は、減算部115をさらに含むこともできる。一実施形態として、前述した映像分割部110、減算部115、変換部120、量子化部130、逆量子化部140、逆変換部150、加算部155 、フィルタリング部160、インター予測部180、イントラ予測部185及びエントロピーエンコード部190は、一つのハードウェアコンポーネント(例えば、エンコーダまたはプロセッサ)によって構成され得る。また、メモリ170は、DPB(decoded picture buffer)を含むことができ、デジタル格納媒体によって構成されることもできる。
映像分割部110は、エンコード装置100に入力された入力映像(または、ピクチャ、フレーム)を1つ以上の処理ユニット(processing unit)に分割することができる。一例として、前記処理ユニットは、コーディングユニット(coding unit、CU)と称することができる。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit、CTU)または最大コーディングユニット(largest coding unit、LCU)からQTBT(Quad-tree binary-tree)構造に基づいて再帰的に(recursively)に分割され得る。例えば、一つのコーディングユニットは、クワッドツリー構造及び/またはバイナリツリー構造に基づいて、下位(deeper)デプスの複数のコーディングユニットに分割され得る。この場合、例えば、クワッドツリー構造が先に適用され、バイナリツリー構造が、後で適用されることができる。またはバイナリツリー構造が先に適用されることもできる。これ以上分割されない最終コーディングユニットをベースに、本発明に係るコーディング手順が実行され得る。この場合、映像の特性に応じたコーディングユニット効率などをベースに、最大コーディングユニットが直接最終的なコーディングユニットとして用いられることができ、または必要に応じてコーディングユニットは、再帰的に(recursively)より下位デプスのコーディングユニットに分割され、最適のサイズのコーディングユニットが最終コーディングユニットとして用いられる。ここでコーディング手順とは、後述する予測、変換、及び復元などの手続きを含むことができる。他の例として、前記処理ユニットは、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、前記予測ユニット及び前記変換ユニットは、それぞれ前述した最終コーディングユニットから分割またはパーティショニングすることができる。前記予測ユニットは、サンプル予測の単位で有り得、前記変換ユニットは、変換係数を誘導する単位、及び/または変換係数からレジデュアル信号(residual signal)を誘導する単位で有り得る。
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用して用いることができる。一般的な場合、MxNブロックはM個の列とN個の行からなるサンプル又は変換係数(transform coefficient)の集合を表すことができる。サンプルは、一般的に、ピクセルまたはピクセルの値を示すことができ、輝度(luma)成分のピクセル/ピクセル値のみを表すこともあり、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、一つのピクチャ(または映像)をピクセル(pixel)またはペル(pel)に対応する用語として用いられる。
エンコード装置100は、入力映像信号(原本ブロック、原本サンプルアレイ)でインター予測部180またはイントラ予測部185から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算してレジデュアル信号(residual signal、残りのブロック、残りのサンプルアレイ)を生成することができ、生成されたレジデュアル信号は、変換部120に送信される。この場合、図示のように、エンコーダ100内で入力映像信号(原本ブロック、原本サンプルアレイ)で予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは減算部115と称することができる。予測部は処理対象ブロック(以下、現在ブロックと称する)の予測を行い、前記現在ブロックの予測サンプルを含む予測されたブロック(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)をシグナリングすることによって、現在ブロックの動きベクトルを指示することができる。
前記インター予測部180または前記イントラ予測部185を介して生成された予測信号は、復元信号を生成するために用いられるか、またはレジデュアル信号を生成するために用いられる。
変換部120は、レジデュアル信号に変換手法を適用して変換係数(transform coefficients)を生成することができる。たとえば、変換技法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine 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)の値など)を一緒に、または別々にエンコードすることもできる。エンコードされた情報(ex。エンコードされたビデオ/映像情報)は、ビットストリームの形でNAL(network abstraction layer)ユニット単位で送信または格納することができる。前記ビットストリームは、ネットワークを介して送信されることができ、またはデジタル格納媒体に格納することができる。ここで、ネットワークは、放送網、及び/または通信網などを含むことができ、デジタル格納媒体は、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とデコード装置での予測ミスマッチを回避することができ、エンコード効率も向上させることができる。
メモリ170DPBは修正された復元ピクチャをインター予測部180からの参照ピクチャとして用いるために格納することができる。メモリ170は、現在ピクチャ内の動き情報が導出された(またはエンコードされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的周辺ブロックの動き情報または時間的周辺ブロックの動き情報として活用するために、インター予測部180に伝達することができる。メモリ170は、現在のピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部185に伝達することができる。
図2は、本発明が適用される実施形態として、ビデオ/映像信号のデコードが行われるデコード装置の概略的なブロック図を示す。
図2を参照すると、デコード装置200は、エントロピーデコード部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、メモリ250、インター予測部260とイントラ予測部265を含んで構成され得る。インター予測部260とイントラ予測部265を合わせて予測部と称することができる。つまり、予測部はインター予測部180とイントラ予測部185を含むことができる。逆量子化部220、逆変換部230を合わせてレジデュアル処理部と称することができる。つまり、レジデュアル処理部は、逆量子化部220、逆変換部230を含むことができる。前述したエントロピーデコード部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、インター予測部260及びイントラ予測部265は、実施形態に応じて1つのハードウェアコンポーネント(例えば、デコーダまたはプロセッサ)によって構成され得る。また、メモリ170は、DPB(decoded picture buffer)を含むことができ、デジタル格納媒体によって構成されることもある。
ビデオ/映像情報を含むビットストリームが入力されると、デコード装置200は、図1のエンコード装置からのビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコード装置200は、エンコード装置で適用された処理ユニットを用いてデコードを行うことができる。したがってデコードの処理ユニットは、例えば、コーディングユニットで有り得、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットからクワッドツリー構造及び/またはバイナリツリー構造に沿って分割することができる。そして、デコード装置200を介してデコード及び出力された復元映像信号は、再生装置を介して再生することができる。
デコード装置200は、図1のエンコード装置から出力された信号をビットストリーム形態で受信することができ、受信された信号は、エントロピーデコード部210を介してデコードすることができる。
例えば、エントロピーデコード部210は、前記ビットストリームをパッシング(Parsing:解析)して映像復元(またはピクチャ復元)に必要な情報(ex。ビデオ/映像情報)を導出することができる。例えば、エントロピーデコード部210は、指数ゴルロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内の情報をデコードして、映像復元に必要なシンタックス エレメント (Syntax element)の値、レジデュアルに関する変換係数の量子化された値を出力することができる。さらに詳細に、CABACエントロピーデコード方法は、ビットストリームから各構文要素に該当するビン(bin)を受信し、デコード対象構文要素の情報と周辺及びデコード対象ブロックのデコード(復号)情報、または前の段階でデコードされたシンボル/ビンの情報を用いてコンテキスト(context)モデルを決定し、決定されたコンテキストモデルに基づいて、ビン(bin)の発生確率を予測して、ビンの算術デコード(arithmetic decoding)を実行して、各構文要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピーデコード方法は、コンテキストモデルを決定した後、次のシンボル/ビンの文脈モデルのためにデコードされたシンボル/ビンの情報を用いて、コンテキストモデルを更新することができる。エントロピーデコード部2110でデコードされた情報の内、予測に関する情報は、予測部(インター予測部260及びイントラ予測部265)で提供され、エントロピーデコード部210からエントロピーデコードが行われたレジデュアル値、すなわち量子化された変換係数と関連パラメータ情報は、逆量子化部220に入力され得る。また、エントロピーデコード部210でデコードされた情報の内、フィルタリングに関する情報は、フィルタリング部240に提供され得る。一方、エンコード装置から出力された信号を受信する受信部(図示せず)がデコード装置200の内/外のエレメントとしてさらに構成されることができ、または受信部は、エントロピーデコード部210の構成要素で有り得ることもある。
逆量子化部220においては、量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部220は、量子化された変換係数を2次元のブロックの形で再整列することができる。この場合、前記再整列は、エンコード装置で実行された係数スキャン順序に基づいて再整列を実行することができる。逆量子化部220は、量子化パラメータ(例えば、量子化段階サイズ情報)を用いて、量子化された変換係数の逆量子化を行い、変換係数(transform coefficient)を獲得することができる。
逆変換部230においては、変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を獲得することになる。
予測部は現在のブロックの予測を行い、前記現在のブロックの予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部はエントロピーデコード部210から出力された前記予測に関する情報に基づいて、前記現在ブロックにイントラ予測が適用されるか、またはインター予測が適用されるかを決定することができ、具体的なイントラ/インター予測モードを決定することができる。
イントラ予測部265は、現在ピクチャ内のサンプルを参照して、現在ブロックを予測することができる。前記参照されるサンプルは、予測モードに応じて前記現在ブロックの周辺(neighbor)に位置することができ、または離れて位置することもできる。イントラ予測で予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。イントラ予測部265は、周辺ブロックに適用される予測モードを用いて、現在ブロックに適用される予測モードを決定することもできる。
インター予測部260は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックの予測されたブロックを誘導することができる。このとき、インター予測モードで送信される動き情報の量を減らすために周囲ブロックと現在ブロックの間の動き情報の相関性に基づいて動き情報をブロック、サブブロック、またはサンプル単位で予測することができる。前記動き情報は、動きベクトルと参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)の情報をさらに含むことができる。インター予測の場合、周辺ブロックは、現在ピクチャ内に存在する空間的周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。例えば、インター予測部260は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて、前記現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出することができる。様々な予測モードに基づいて、インター予測が行われることができ、前記予測に関する情報は、前記現在ブロックのインター予測のモードを指示する情報を含むことができる。
加算部235は、獲得されたレジデュアル信号をインター予測部260またはイントラ予測部265から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることで復元信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)を生成することができる。スキップモードが適用された場合の同様に処理対象ブロックのレジデュアルがない場合、予測されたブロックが復元ブロックとして用いられる。
加算部235は、復元部または復元ブロック生成部と称することができる。生成された復元信号は、現在ピクチャ内の次の処理対象のブロックのイントラ予測のために用いられ、後述するようにフィルタリングを経て、次のピクチャのインター予測のために用いられることもできる。
フィルタリング部240は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部240は、復元ピクチャに様々なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、前記修正された復元ピクチャをメモリ250、具体的に、メモリ250のDPBに伝送することができる。前記様々なフィルタリングの方法は、例えば、ジブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。
メモリ250のDPBに格納された(訂正された)復元ピクチャはインター予測部260で参照ピクチャとして用いられる。メモリ250は、現在ピクチャ内の動き情報が導出された(またはデコードされた)ブロックの動き情報及び/または既に復元されたピクチャ内のブロックの動き情報を格納することができる。前記格納された動き情報は、空間的周辺ブロックの動き情報または時間的周辺ブロックの動き情報として活用するために、インター予測部260に伝達することができる。メモリ170は、現在ピクチャ内の復元されたブロックの復元サンプルを格納することができ、イントラ予測部265に伝達することができる。
本明細書において、 エンコード装置100のフィルタリング部160、インター予測部180及びイントラ予測部185で説明された実施形態は、それぞれデコード装置200のフィルタリング部240、インター予測部260及びイントラ予測部265にも同一または対応するように適用することができる。
Block Partitioning
本文書に係るビデオ/映像コーディング方法は、様々な詳細な技術に基づいて行うことができ、それぞれの詳細な技術を概略的に説明すると、次の通りである。以下説明される技術は、前述した、及び/または後述されるビデオ/映像エンコード/デコードの手続きでの予測、レジデュアル処理((逆)変換、(逆)量子化など)、シンタックス (Syntax:構文)要素のコーディング、フィルタリング、パーティショニング/分割などの関連の手続きに関連付けることができることは当業者に自明である。
本文書に沿ったブロックパーティショニング手順は、前述したエンコード装置の映像分割部110で実行されて、パーティショニング関連情報がエントロピーエンコード部190で(エンコード)処理され、ビットストリームの形でデコード装置に伝達することができる。デコード装置のエントロピーデコード部210は、前記ビットストリームから獲得した前記パーティショニング関連情報に基づいて、現在ピクチャのブロックパーティショニング構造を導出し、これに基づいて映像デコードのための一連の手順(ex。予測、レジデュアル処理、ブロック復元、インループフィルタリングなど)を実行することができる。
Partitioning of picture into CTUs
ピクチャは、コーディングツリーユニット(CTUs)のシーケンスに分割される(divided into a sequence)ことができる。 CTUはコーディングツリーブロック(CTB)に対応することができる。あるいはCTUはルマサンプルのコーディングツリーブロックと、対応するクロマサンプルの二つのコーディングツリーブロックを含むことができる。つまり、三つのサンプルアレイを含むピクチャに対し、CTUはルマサンプルのNxNブロックとクロマサンプルの二つの対応ブロックを含むことができる。
コーディングと予測などのためのCTUの最大許容サイズは、変換のためのCTUの最大許容サイズと異なることがある。たとえば、CTU内ルマブロックの最大許容サイズは128x128で有り得る。
Partitioning of the CTUs using a tree structure
CTUはクワッドツリー(quad-tree、QT)の構造に基づいてCUに分割され得る。クワッドツリー構造は、クォーターナリー(quaternary)ツリー構造と称することができる。これは、様々な局地的特徴(local characteristic)を反映するためである。一方、本文書では、CTUは、クワッドツリーだけでなく、バイナリツリー(binary-tree、BT)とターナリーツリー(ternary-tree、TT)を含むマルチタイプのツリー構造の分割に基づいて分割され得る。以下、QTBT構造とすることは、クワッドツリーとバイナリツリーに基づいた分割構造を含むことができ、QTBTTTとはクワッドツリー、バイナリツリー及びターナリーツリーに基づいた分割構造を含むことができる。または、QTBT構造は、クワッドツリー、バイナリツリー及びターナリーツリーに基づいた分割構造を含むこともできる。コーディングツリー構造において、CUは正方形または長方形の形状を有することができる。 CTUは、まずクワッドツリー構造に分割され得る。以後クワッドツリー構造のリーフノードは、マルチタイプのツリー構造によってさらに分割することができる。
図3は、本発明が適用され得る実施形態として、マルチタイプツリー構造の一例を示す図である。
本発明の一実施形態において、マルチタイプのツリー構造は、図3に示すような4つの分割タイプを含むことができる。前記4つの分割タイプは、垂直バイナリ分割(vertical binary splitting、SPLIT_BT_VER)、水平バイナリ分割(horizontal binary splitting、SPLIT_BT_HOR)、垂直ターナーリー分割(vertical ternary splitting、SPLIT_TT_VER)、水平ターナーリー分割(horizontal ternary splitting、SPLIT_TT_HOR)を含むことができる。前記マルチタイプツリー構造のリーフノードはCUと呼ばれることができる。このようなCUは、予測及び変換手順のために用いられる。本分書において一般的にCU、PU、TUは、同じブロックサイズを有することができる。ただし、最大許容変換の長さ(maximum supported transform length)がCUのカラー成分(colour component)の幅または高さより小さい場合には、CUとTUが互いに異なるブロックサイズを有することができる。
図4は、本発明が適用され得る実施形態として、マルチタイプツリーを伴うクワッドツリー(quad-tree with nested multi-type tree)構造のパーティション分割情報のシグナリングメカニズムを例示する図である。
ここで、CTUはクワッドツリーのルート(root)として取り扱われて、クワッドツリー構造で初めてパーティショニングされる。各クワッドツリーのリーフノードは、その後、マルチタイプのツリー構造で、さらにパーティショニングすることができる。マルチタイプツリー構造において、第1フラグ(a first flag、ex。mtt_split_cu_flag)が、そのノードが追加的にパーティショニングされるかを指示するためにシグナリングされる。もしそのノードが追加的にパーティショニングされる場合、第2フラグ(a second flag、ex。mtt_split_cu_verticla_flag)が分割方向(splitting direction)を指示するためにシグナリングすることができる。その後、第3フラグ(a third flag、ex。mtt_split_cu_binary_flag)が分割タイプがバイナリ分割であるかターナーリー分割であるかを指示するためにシグナリングすることができる。例えば、前記mtt_split_cu_vertical_flag及び前記mtt_split_cu_binary_flagに基づいて、CUのマルチタイプのツリー分割モード(multi-type tree splitting mode、MttSplitMode)が、次の表1のように導出することができる。
図5は、本発明が適用されることができる実施形態として、クワッドツリーと伴うマルチタイプのツリー(quad-tree and nested multi-type tree)構造に基づいてCTUを多重CUに分割する方法を例示する図である。
ここで、ボールドブロックエッジ(bold block edges)は、クワッドツリーパーティショニングを、残りのエッジは、マルチタイプのツリーパーティショニングを示す。マルチタイプのツリーを伴ったクワッドツリーのパーティションは、コンテンツ - アダプタテッドコーディングツリー構造を提供することができる。 CUはコーディングブロック(CB)に対応することができる。あるいはCUはルマサンプルのコーディングブロックと、対応するクロマサンプルの二つのコーディングブロックを含むことができる。 CUのサイズはCTUだけ大きいこともあり、またはルマサンプル単位で4x4ほど小さいこともできる。たとえば、4:2:0カラーフォーマット(orクロマフォーマット)である場合、最大クロマCBサイズは64x64であり、最小クロマCBサイズは2x2で有り得る。
本文書において、例えば、最大許容ルマTBサイズは64x64であり、最大許容クロマTBサイズは32x32で有り得る。もし前記ツリー構造に沿って分割されたCBの幅または高さが最大の変換幅または高さより大きい場合、そのCBは自動的に(または暗黙的に)水平方向と垂直方向のTBサイズ制限を満足するまで分割することができる。
一方、マルチタイプのツリーを伴ったクワッドツリーコーディングツリースキームのために、以下のパラメータがspsシンタックス要素で定義及び識別することができる。
- CTU size:クォータナリツリーのルートノードサイズ(the root node size of a quaternary tree)
- MinQTSize:最小許容クォータナリツリーリーフノードサイズ(the minimum allowed quaternary tree leaf node size)
- MaxBtSize:(最大許容バイナリツリールートノードサイズ(the maximum allowed binary tree root node size)
- MaxTtSize:(最大許容ターナリーツリールートノードサイズ(the maximum allowed ternary tree root node size)
- MaxMttDepth:クアッドツリーリーフから分割されるマルチタイプツリーの最大許容階層の深度(the maximum allowed hierarchy depth of multi-type tree splitting from a quadtree leaf)
- MinBtSize:最小許容バイナリーツリーリーフノードサイズ(the minimum allowed binary tree leaf node size)
- MinTtSize:最小許容ターナリーツリーリーフノードサイズ(the minimum allowed ternary tree leaf node size)
マルチタイプのツリーを伴ったクワッドツリーコーディングツリー構造の一例として、CTUサイズは128x128ルマサンプル及び二つの対応するクロマサンプルの64x64ブロックに設定されることができる(4:2:0クロマフォーマットで)。この場合、MinOTSizeは16x16に設定され、MaxBtSizeは128x128に設定され、MaxTtSizeは64x64に設定され、MinBtSize及びMinTtSize(for both width and height)は4x4で、そしてMaxMttDepthは4に設定され得る。クォートツリーパーティショニングは、CTUに適用されてクワッドツリーのリーフノードを生成することができる。クワッドツリーのリーフノードは、リーフQTノードと称することができる。クワッドツリーのリーフノードは16x16サイズ(i.e. the MinOTSize)から128x128サイズ(i.e. the CTU size)を有することができる。もしリーフQTノードが128x128である場合、さらに、バイナリツリー/ターナリーツリーに分割されないことがある。これは、この場合、分割されてもMaxBtsizeとMaxTtsize(i.e. 64x64)を超過するからである。それ以外の場合、リーフQTノードは、マルチタイプのツリーにさらに分割することができる。従って、リーフQTノードはマルチタイプのツリーのルートノード(root node)であり、リーフQTノードは、マルチタイプのツリーデプス(mttDepth)0の値を有することができる。もし、マルチタイプのツリーデプスがMaxMttdepth(ex.4)に到達した場合、これ以上追加の分割は考慮されないことがある。もし、マルチタイプのツリーノードの幅がMinBtSizeと同じであり、2xMinTtSizeより小さいか同じであるとき、もはや追加の水平分割は考慮されないことがある。もし、マルチタイプのツリーノードの高さがMinBtSizeと同じであり、2xMinTtSizeより小さいか同じであるとき、もはや追加の垂直分割は考慮されないことがある。
図6は、本発明が適用され得る実施形態として、ターナリーツリー(ternary-tree)分割を制限する方法を例示する図である。
図6を参照すると、ハードウェアデコーダでの64x64ルマブロックと32x32クロマパイプラインの設計を許容するために、TT分割は、特定の場合に制限され得る。例えば、ルマコーディングブロックの幅または高さが既に設定された特定の値(例えば、32、64)より大きい場合、図6に示すように、TT分割が制限され得る。
本文書において、コードツリースキームはルマとクロマブロックが個別(separate)ブロックのツリー構造を有することを支援することができる。 PとBスライスに対し、一つのCTU内ルマとクロマCTBは同じコーディングツリー構造を有するように制限され得る。しかし、Iスライスに対し、ルマとクロマブロックは、互いに別々のブロックツリー構造を有することができる。もし個別のブロックツリーモードが適用される場合、ルマCTBは、特定のコーディングツリー構造に基づいてCUに分割され、クロマCTBは、他のコーディングツリー構造に基づいて、クロマCUに分割され得る。これは、Iスライス内CUはルマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックで構成され、PまたはBスライスのCUは三つの色成分のブロックで構成されることができることを意味することができる。
前述した“Partitioning of the CTUs using a tree structure"でマルチタイプのツリーを伴ったクワッドツリーコーディングツリー構造について説明したが、CUが分割される構造は、これに限定されない。たとえば、BT構造とTT構造は、多数の分割ツリー(Multiple Partitioning Tree、MPT)の構造に含まれる概念で解釈されることができ、CUはQT構造とMPT構造を介して分割されると解釈することができる。QT構造とMPT構造を介してCUが分割される一例において、QT構造のリーフノードがいくつかのブロックに分割されるかについての情報を含む構文要素(例えば、MPT_split_type)とQT構造のリーフノードが垂直と水平の内、どちらの方向に分割されるかについての情報を含む構文要素(例えば、MPT_split_mode)がシグナリングされることで、分割構造が決定され得る。
また別の例において、CUはQT構造、BTの構造またはTT構造と別の方法で分割することができる。つまり、QT構造に基づいて、下位デプスのCUが上位デプスのCUの1/4サイズに分割されたり、BTの構造に応じて、サブデプスのCUが上位デプスのCUの1/2サイズに分割されたり、TTの構造に基づいて下位デプスのCUが上位デプスのCUの1/4または1/2のサイズに分割されるものとは異なり、下位デプスのCUは、場合によっては、上位デプスのCUの1/5、1/3、3/8、3/5、2/3または5/8のサイズに分割されることができ、CUが分割される方法は、これに限定されない。
もし、ツリーノードブロックの部分(a portion)が下部(bottom)または右(right)ピクチャ境界を超える(exceeds)場合、そのツリーノードブロックは、すべてのコード化されCUのすべてのサンプルが前記ピクチャ境界に内に位置するように制限され得る。この場合、例えば、次のような分割ルールが適用され得る。
-(If a portion of a tree node block exceeds both the bottom and the right picture boundaries,)ツリーノードブロックの一部がピクチャの下端又は右側のバウンダリーを超えると、
-(If the block is a QT node and the size of the block is larger than the minimum QT size, the block is forced to be split with QT split mode.)ブロックがQTノードであり、ブロックサイズが最小QTサイズより大きければ、ブロックは強制的にQT分割モードに分けられる。
-(Otherwise, the block is forced to be split with SPLIT_BT_HOR mode) そうでなければ、ブロックは強制的にSPLIT_BT_HORモードに分けられる。
-(Otherwise if a portion of a tree node block exceeds the bottom picture boundaries,)そうではなく、ツリーノードブロックの一部がピクチャの下端のバウンダリーを超えると、
-(If the block is a QT node, and the size of the block is larger than the minimum QT size, and the size of the block is larger than the maximum BT size, the block is forced to be split with QT split mode.)ブロックがQTノードであり、ブロックサイズが最小QTサイズより大きく、ブロックサイズが最大BTサイズよりも大きければ、ブロックは強制的にQT分割モードに分けられる。
-(Otherwise, if the block is a QT node, and the size of the block is larger than the minimum QT size and the size of the block is smaller than or equal to the maximum BT size, the block is forced to be split with QT split mode or SPLIT_BT_HOR mode.)そうではなく、ブロックがQTノードであり、ブロックサイズが最小QTサイズより大きく、ブロックサイズが最大BTサイズよりも小さいか同じであれば、ブロックは強制的にQT分割モードまたはSPLIT_BT_HORモードに分けられる。
-(Otherwise(the block is a BTT node or the size of the block is smaller than or equal to the minimum QT size), the block is forced to be split with SPLIT_BT_HOR mode.)そうでなければ(ブロックがBTTノードあるいは、ブロックサイズが最小QTサイズよりも小さいか同じであれば)、ブロックは強制的にSPLIT_BT_HORモードに分けられる。
-(Otherwise if a portion of a tree node block exceeds the right picture boundaries,)そうではなく、ツリーノードブロックの一部がピクチャの右側のバウンダリーを超えると、
-(If the block is a QT node, and the size of the block is larger than the minimum QT size, and the size of the block is larger than the maximum BT size, the block is forced to be split with QT split mode.)ブロックがQTノードであり、ブロックサイズが最小QTサイズより大きく、ブロックサイズが最大BTサイズよりも大きければ、ブロックは強制的にQT分割モードに分けられる。
-(Otherwise, if the block is a QT node, and the size of the block is larger than the minimum QT size and the size of the block is smaller than or equal to the maximum BT size, the block is forced to be split with QT split mode or SPLIT_BT_VER mode.)そうではなく、ブロックがQTノードであり、ブロックサイズが最小QTサイズより大きく、ブロックサイズが最大BTサイズよりも小さいか同じであれば、ブロックは強制的にQT分割モードまたはSPLIT_BT_VERモードに分けられる。
-(Otherwise(the block is a BTT node or the size of the block is smaller than or equal to the minimum QT size), the block is forced to be split with SPLIT_BT_VER mode.)そうでなければ(ブロックがBTTノードあるいは、ブロックサイズが最小QTサイズよりも小さいか同じであれば)、ブロックは強制的にSPLIT_BT_VERモードに分けられる。
一方、前述したマルチタイプのツリーを伴ったクワッドツリーコーディングブロック構造は非常に柔軟のブロックパーティショニングの構造を提供することができる。マルチタイプのツリーにサポートされる分割タイプのため、他の分割パターンが、場合によって、潜在的に同じコードブロック構造の結果をもたらすことができる。このようなリダンダント(redundant)した分割パターンの発生を制限することにより、パーティショニング情報のデータ量を削減することができる。下の図を参照して説明する。
図7は、本発明が適用され得る実施形態として、バイナリツリー分割とターナリーツリー分割で発生することができるリダンダント分割 パターンを例示する図である。
図7に示すように、2段階のレベルの一方向の連続的なバイナリ分割(two levels of consecutive binary splits in one direction)は、ターナリー分割の後のセンターパーティションのバイナリ分割と同じコーディングブロック構造を有する。このような場合、ターナリーツリー分割のセンターパーティションのバイナリツリー分割(in the given direction)は、制限され得る。このような制限はすべてピクチャのCUに対し適用することができる。このような特定の分割が制限される場合、対応する構文要素のシグナリングは、このような制限される場合を反映して修正されることができ、これによりパーティショニングのためにシグナリングされるビット数を減らすことができる。例えば、図7に示された例のように、CUのセンターパーティションのバイナリツリー分割が制限される場合、分割がバイナリ分割であるかターナリー分割であるかを指すmtt_split_cu_binary_flag構文要素はシグナリングされず、その値は0でデコーダによって推論することができる。
予測(prediction)
デコードが実行される現在の処理ユニットを復元するために、現在の処理ユニットが含まれた現在のピクチャまたは他のピクチャのデコードされた部分を用いられる。
復元に現在ピクチャのみを用いる、すなわち、画面内の予測のみを実行するピクチャ(スライス)をイントラピクチャまたはIピクチャ(スライス)、各ユニットを予測するために最大1つの動きベクトルと参照インデックスを用いるピクチャ(スライス)を予測ピクチャ(predictive picture)またはPピクチャ(スライス)、最大2つの動きベクトルと参照インデックスを用いるピクチャ(スライス)をペア予測ピクチャ(Bi-predictive picture)またはBピクチャ(スライス)と称することができる。
イントラ予測は、同じデコードされたピクチャ(またはスライス)のデータ要素(例えば、サンプル値等)から現在処理ブロックを導出する予測方法を意味する。つまり、現在ピクチャ内の復元された領域を参照して、現在処理ブロックのピクセル値を予測する方法を意味する。
以下、インター予測について、より詳細に説明する。
インター予測(Inter prediction)(または画面間予測)
インター予測は、現在ピクチャ以外のピクチャのデータ要素(例えば、サンプル値または動きベクトルなど)に基づいて、現在処理ブロックを導出する予測方法を意味する。つまり、現在ピクチャ以外の復元された他のピクチャ内の復元された領域を参照して、現在処理ブロックのピクセル値を予測する方法を意味する。
インター予測(またはピクチャ間予測)は、ピクチャの間に存在する重複性を除去する技術で、ほとんど動き推定(motion estimation)と動き補償(motion compensation)を介して行われる。
本発明は、先に図1及び図2で説明したインター予測方法の細部技術を説明するものでデコーダの場合、後述する図10のインター予測ベースのビデオ/映像をデコードする方法と、図11のデコード装置内インター予測部で示すことができる。加えて、エンコーダの場合、後述する図8のインター予測ベースのビデオ/映像のエンコード方法と、図9のエンコード装置内インター予測部で示すことができる。さらに、図8及び図9によってエンコードされたデータは、ビットストリームの形式で格納され得る。
エンコード装置/デコード装置の予測部はブロック単位でインター予測を実行して、予測サンプルを導出することができる。インター予測は、現在ピクチャ以外のピクチャのデータ要素(e.g.サンプル値、または動き情報など)に依存的な方法で導出される予測を示すことができる。現在ブロックにインター予測が適用される場合、参照ピクチャインデックスが指す参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルのアレイ)に基づいて、現在ブロックの予測されたブロック(予測サンプルアレイ)を誘導することができる。
このとき、インター予測モードで送信される動き情報の量を減らすために周囲ブロックと現在ブロックの間の動き情報の相関性に基づいて、現在ブロックの動き情報をブロック、サブブロック、またはサンプル単位で予測することができる。前記動き情報は、動きベクトルと参照ピクチャインデックスを含むことができる。前記動き情報は、インター予測タイプ(L0予測、L1予測、Bi予測など)の情報をさらに含むことができる。
インター予測が適用される場合、周辺ブロックは、現在ピクチャ内に存在する空間的周辺ブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。前記参照ブロックを含む参照ピクチャと前記時間的周辺ブロックを含む参照ピクチャは同じであることもあり、異なることもある。前記時間的周辺ブロックは、同じ位置参照ブロック(collocated reference block)、同じ位置(CU colCU)などの名で呼ばれることができ、前記時間的周辺ブロックを含む参照ピクチャは、同じ位置ピクチャ(collocated picture、colPic)と呼ばれることもできる。たとえば、現在ブロックの周辺ブロックに基づいて動き情報候補リストが構成されることができ、前記現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出するためにどんな候補が選択(使用)されるかを指示するフラグまたはインデックス情報がシグナリングされ得る。
様々な予測モードに基づいて、インター予測が行われることができ、例えば、スキップモードとマージモードの場合、現在ブロックの動き情報は、選択された周辺ブロックの動き情報と同じであることができる。スキップモードの場合、マージ モードとは異なり、レジデュアル信号が送信されないことがある。動き情報予測(motion vector prediction、MVP)モードの場合、選択された周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)で用いて、動きベクトル差分(motion vector difference)は、シグナリングされ得る。この場合、前記動きベクトル予測子と動きベクトル差分の合を用いて前記現在ブロックの動きベクトルを導出することができる。
図8及び図9は、本発明の実施形態に係るインター予測ベースのビデオ/映像のエンコード方法と本発明の実施形態に係るエンコード装置内インター予測部例示する図である。
図8及び図9を参照すると、 S801は、エンコード装置のインター予測部180によって実行されることができ、S802は、エンコード装置のレジデュアル処理部によって実行され得る。具体的に、S802は、エンコード装置の減算部115によって実行され得る。 S803で予測情報は、インター予測部180によって導出され、エントロピーエンコード部190によってエンコードされ得る。 S803でレジデュアル情報は、レジデュアル処理部によって導出され、エントロピーエンコード部190によってエンコードされ得る。前記レジデュアル情報は、前記レジデュアルサンプルに関連情報である。前記レジデュアル情報は、前記レジデュアルサンプルに対する量子化された変換係数に関する情報を含むことができる。
前述したように、前記レジデュアルサンプルは、エンコード装置の変換部120を介して変換係数に導出され、前記変換係数は、量子化部130を介して量子化された変換係数に導出することができる。前記量子化された変換係数に関する情報がレジデュアルコーディング手順を介してエントロピーエンコード部190でエンコードされ得る。
エンコード装置は、現在ブロックのインター予測を行う(S801)。エンコード装置は、現在ブロックのインター予測モードと動き情報を導出し、前記現在のブロックの予測サンプルを生成することができる。ここでインター予測モード決定、動き情報導出及び予測サンプルの作成手順は、同時に実行されることもあり、いずれか1つの手順が、他の手順より先に実行されることもできる。たとえば、エンコード装置のインター予測部180は、予測モード決定部181、動き情報導出部182、予測サンプル導出部183を含むことができ、予測モード決定部181で、前記現在のブロックの予測モードを決定し、動き情報導出部182において、前記現在のブロックの動き情報を導出し、予測サンプル導出部183において、前記現在のブロックの動きサンプルを導出することができる。
たとえば、エンコード装置のインター予測部180は、動き推定(motion estimation)を介して参照ピクチャの一定領域(サーチエリア)内において、前記現在のブロックと類似であるブロックをサーチし、前記現在のブロックとの差が最小または一定基準以下の参照ブロックを導出することができる。これに基づいて、前記参照ブロックが位置する参照ピクチャを指す参照ピクチャのインデックスを導出し、前記参照ブロックと前記現在のブロックの位置の差に基づいて、動きベクトルを導出することができる。エンコード装置は、様々な予測モードの内、前記現在のブロックに対して適用されるモードを決定することができる。エンコード装置は、前記様々な予測モードに対するRD costを比較し、前記現在のブロックの最適な予測モードを決定することができる。
たとえば、エンコード装置は、前記現在のブロックにスキップモードまたはマージモードが適用される場合、後述するマージ候補リストを構成し、前記マージ候補リストに含まれたマージ候補が指す参照ブロックの内、前記現在ブロックと前記現在のブロックとの差が最小または一定の基準以下参照ブロックを導出することができる。この場合、前記導出された参照ブロックと関連付けられたマージ候補が選択され、前記選択されたマージ候補を示すマージインデックス情報が生成され、デコード装置に信号することができる。前記選択されマージ候補の動き情報を用いて前記現在のブロックの動き情報が導出することができる。
他の例として、エンコード装置は、前記現在のブロックの(A)MVPモードが適用される場合、後述する(A)MVP候補リストを構成し、前記(A)MVP候補リストに含まれたるMVP(motion vector predictor)候補の内、選択されたMVP候補の動きベクトルを前記現在のブロックのMVPに用いられる。この場合、例えば、前述した動き推定によって導出された参照ブロックを指す動きベクトルが前記現在ブロックの動きベクトルとして用いられ、前記MVP候補の内、前記現在ブロックの動きベクトルとの差が最も小さい動きベクトルを有するMVP候補が前記選択されたMVP候補になることができる。前記現在ブロックの動きベクトルから前記MVPを引いた差分であるMVD(motion vector difference)が導出され得る。この場合、前記MVDに関する情報がデコード装置にシグナリングされることができる。また、(A)MVPモードが適用される場合、前記参照ピクチャインデックスの値は、参照ピクチャインデックス情報で構成され、別途、前記デコード装置にシグナリングされることができる。
エンコード装置は、前記予測サンプルに基づいてレジデュアルサンプルを導出することができる(S802)。エンコード装置は、前記現在ブロックの原本サンプルと、前記予測サンプルの比較を通じて、前記レジデュアルサンプルを導出することができる。
エンコード装置は、予測情報とレジデュアル情報を含む映像情報をエンコードする(S803)。エンコード装置は、エンコードされた映像情報をビットストリームの形態で出力することができる。前記予測情報は、前記予測手順に関連した情報に予測モード情報(ex。skip flag、merge flag or mode indexなど)及び動き情報に関する情報を含むことができる。前記動き情報に関する情報は、動きベクトルを導出するための情報である候補選択情報(ex。merge index、MVP flag or MVP index)を含むことができる。また、前記動き情報に関する情報は、前述したMVDに関する情報及び/または参照ピクチャのインデックス情報を含むことができる。
また、前記動き情報に関する情報はL0予測、L1予測、またはペア(bi)の予測が適用されるかどうかを示す情報を含むことができる。前記レジデュアル情報は、前記レジデュアルサンプルに関連情報である。前記レジデュアル情報は、前記レジデュアルサンプルに対する量子化された変換係数に関する情報を含むことができる。
出力されたビットストリームは、(デジタル)格納媒体に格納されてデコード装置に伝達することができ、またはネットワークを介してデコード装置に伝達されることもできる。
一方、前述したように、エンコード装置は、前記参照サンプル及び前記レジデュアルサンプルに基づいて復元ピクチャ(復元サンプル及び復元ブロックを含む)を生成することができる。これはデコード装置で実行されるものと同じ予測結果をエンコード装置で導出するためであり、これによりコーディング効率を高めることができるからである。したがって、エンコード装置は、復元ピクチャ(または復元サンプル、復元ブロック)をメモリに格納し、インター予測のための参照ピクチャとして活用することができる。前記復元ピクチャにインループフィルタリングの手続きなどがさらに適用されることがあることは、前述した通りである。
図10及び図11は、本発明の実施形態に係るインター予測ベースのビデオ/映像をデコードする方法と、本発明の実施形態に係るデコード装置内インター予測部を例示する図である。
図10及び図11を参照すると、デコード装置は、前記エンコード装置で実行された動作と対応する動作を実行することができる。デコード装置は、受信された予測情報に基づいて、現在のブロックに予測を行い、予測サンプルを導出することができる。
S1001乃至S1003は、デコード装置のインター予測部260によって実行されることができ、S1004のレジデュアル情報は、デコード装置のエントロピーデコード部210によってビットストリームから獲得することができる。デコード装置のレジデュアル処理部は、前記レジデュアル情報に基づいて、現在ブロックのレジデュアルサンプルを導出することができる。具体的に、前記レジデュアル処理部の逆量子化部220は、前記レジデュアル情報に基づいて導出された量子化された変換係数に基づいて、逆量子化を実行して、変換係数を導出し、前記レジデュアル処理部の逆変換部230は、前記変換係数の逆変換を実行し、前記現在ブロックのレジデュアルサンプルを導出することができる。 S1005は、デコード装置の加算部235または復元部によって実行され得る。
具体的にデコード装置は、受信された予測情報に基づいて、前記現在ブロックの予測モードを決定することができる(S1001)。デコード装置は、前記予測情報内の予測モード情報に基づいて、前記現在のブロックにどんなインター予測モードが適用されるかを決定することができる。
例えば、前記merge flagに基づいて、前記現在ブロックの前記マージ モードが適用されるか、または(A)MVPモードが決定されるかどうかを決定することができる。または前記mode indexに基づいて、様々なインター予測モード候補の内、1つを選択することができる。前記インター予測モード候補はスキップモード、マージ モード及び/または(A)MVPモードを含むことができ、または後述する様々なインター予測モードを含むことができる。
デコード装置は、前記決定されたインター予測モードに基づいて、前記現在のブロックの動き情報を導出する(S1002)。例えば、デコード装置は、前記現在のブロックにスキップモードまたはマージモードが適用される場合、後述するマージ候補リストを構成し、前記マージ候補リストに含まれたマージ候補の内、1つのマージ候補を選択することができる。前記選択は、前述した選択情報(merge index)に基づいて実行され得る。前記選択されたマージ候補の動き情報を用いて前記現在のブロックの動き情報が導出することができる。前記選択されたマージ候補の動き情報が前記現在のブロックの動き情報として用いられる。
他の例として、 デコード装置は、前記現在のブロックに(A)MVPモードが適用される場合、後述する(A)MVP候補リストを構成し、前記(A)MVP候補リストに含まれたMVP(motion vector predictor)候補の内、選択されたMVP候補の動きベクトルを前記現在のブロックのMVPで用いられる。前記選択は、前述した選択情報(MVP flag or MVP index)に基づいて実行され得る。この場合、前記MVDに関する情報に基づいて、前記現在ブロックのMVDを導出することができ、前記現在のブロックのMVPと前記MVDに基づいて、前記現在ブロックの動きベクトルを導出することができる。また、前記参照ピクチャのインデックス情報に基づいて、前記現在ブロックの参照ピクチャインデックスを導出することができる。前記現在ブロックに関する参照ピクチャリスト内で、前記参照ピクチャのインデックスが指すピクチャが前記現在ブロックのインター予測のために参照される参照ピクチャで導出することができる。
一方、後述するように候補リスト構成なし前記現在ブロックの動き情報が導出されることができ、この場合、後述する予測モードで開示された手順に従って、前記現在ブロックの動き情報が導出され得る。この場合、前述したような候補リストの構成は省略され得る。
デコード装置は、前記現在ブロックの動き情報に基づいて、前記現在ブロックの予測サンプルを生成することができる(S1003)。この場合、前記現在のブロックの参照ピクチャインデックスに基づいて、前記参照ピクチャを導出し、前記現在ブロックの動きベクトルが前記参照ピクチャ上で指す参照ブロックのサンプルを用いて、前記現在ブロックの予測サンプルを導出することができる。この場合、後述するように、場合によっては、前記現在ブロックの予測サンプルの内、全部または一部の予測サンプルのフィルタリング手順がさらに実行され得る。
例えば、デコード装置のインター予測部260は、予測モード決定部261、動き情報導出部262、予測サンプル導出部263を含むことができ、予測モード決定部261で受信された予測モード情報に基づいて、前記現在ブロックの予測モードを決定し、動き情報導出部262から受信された動き情報に関する情報に基づいて、前記現在ブロックの動き情報(動きベクトル及び/または参照ピクチャのインデックスなど)を導出し、予測サンプル導出部263において、前記現在ブロックの予測サンプルを導出することができる。
デコード装置は、受信されたレジデュアル情報に基づいて、前記現在ブロックのレジデュアルサンプルを生成する(S1004)。デコード装置は、前記予測サンプル及び前記レジデュアルサンプルに基づいて、前記現在ブロックの復元サンプルを生成し、これに基づいて復元ピクチャを生成することができる(S1005)。以後、前記復元ピクチャにインループフィルタリングの手続きなどがさらに適用されることができることは、前述した通りである。
前述したように、インター予測の手順は、インター予測モード決定段階と、決定された予測モードに応じた動き情報導出段階と、導出された動き情報に基づいた予測実行(予測サンプルの生成)段階を含むことができる。
インター予測モード決定(Determination of inter prediction mode)
ピクチャ内の現在ブロックの予測のために、様々なインター予測モードが用いられる。たとえば、マージ モード、スキップモード、MVPモード、アフィン(Affine)モードなど、さまざまなモードが用いられる。 DMVR(Decoder side motion vector refinement)モード、AMVR(adaptive motion vector resolution)モードなどが付随的なモードでさらに用いられる。アフィンモードは、アフィン動き予測(affine motion prediction)モードと呼ばれることもある。 MVPモードはAMVP(advanced motion vector prediction)モードと呼ばれることもある。
現在ブロックのインター予測モードを指す予測モード情報がエンコード装置からデコード装置にシグナリングされることができる。前記予測モード情報は、ビットストリームに含まれてデコード装置に受信され得る。前記予測モード情報は、多数の候補モードの内、1つを指示するインデックス情報を含むことができる。または、フラグ情報の階層的シグナリングを介してインター予測モードを指示することもできる。この場合、前記予測モード情報は、1つ以上のフラグを含むことができる。
たとえば、スキップフラグをシグナリングしてスキップモードの適用かどうかを指示し、スキップモードが適用できない場合にマージフラグをシグナリングしてマージモードの適用かどうかを指示し、マージ モードが適用できない場合にMVPモードが適用されるものと指示したり、追加の区分のためのフラグをさらにシグナリングすることもできる。アフィンモードは、独立したモードでシグナリングされることもあり、またはマージ モードまたはMVPモードなどに従属的なモードでシグナリングされることもできる。例えば、アフィンモードは、後述するようにマージ候補リストまたはMVP候補リストの一つの候補として構成することもできる。
動き情報導出(Derivation of motion information according to inter prediction mode)
現在ブロックの動き情報を用いて、インター予測を行うことができる。エンコード装置は、動き推定(motion estimation)手順を介して、現在ブロックの最適の動き情報を導出することができる。たとえば、エンコード装置は、現在ブロックの原本ピクチャ内の原本ブロックを用いて、相関性が高い類似の参照ブロックを参照ピクチャ内の決められた探索範囲内で分数ピクセル単位で探索することができ、これにより動き情報を導出することができる。ブロックの類似性は、位相(phase)ベースのサンプル値の差に基づいて導出することができる。例えば、ブロックの類似性は、現在ブロック(または現在ブロックのテンプレート)と参照ブロック(または参照ブロックのテンプレート)の間SADに基づいて計算することができる。この場合、探索領域内SADが最も小さい参照ブロックに基づいて動き情報を導出することができる。導出された動き情報は、インター予測モードに基づいて様々な方法に基づいてデコード装置にシグナリングされることができる。
マージ モード及びスキップモード
図12は、本発明が適用される実施形態として、マージ モードまたはスキップモードで用いられる周辺ブロックを説明するための図である。
マージ モード(merge mode)が適用される場合、現在予測ブロックの動き情報が直接送信されず、周辺予測ブロックの動き情報を用いて前記現在の予測ブロックの動き情報を誘導することになる。したがって、マージ モードを利用したことを知らせるフラグ情報と周辺のどんな予測ブロックを利用したかを知らせるマージインデックスを送信することにより、現在予測ブロックの動き情報を指示することができる。
エンコーダは、マージ モードを実行するために、現在予測ブロックの動き情報を誘導するために用いられるマージ候補ブロック(merge candidate block)を探索することができる。例えば、前記マージ候補ブロックは、最大5個まで用いられるが、本発明はこれに限定されない。そして、前記マージ候補ブロックの最大数は、スライスヘッダ(またはタイルのグループヘッダ)で送信することができ、本発明はこれに限定されない。前記マージ候補ブロックを見つけた後、エンコーダは、マージ候補リストを生成することができ、これらの内、最も小さいコストを有するマージ候補ブロックを最終マージ候補ブロックとして選択することができる。
本発明は、前記マージ候補リストを構成するマージ候補ブロックの様々な実施形態を提供する。
前記マージ候補リストは、例えば、5つのマージ候補ブロックを用いられる。例えば、4つの空間的マージ候補(spatial merge candidate)と1つの時間的マージ候補(temporal merge candidate)を用いられる。具体例として、空間的マージ候補の場合、図12に示されたブロックを空間的マージ候補として用いられる。
図13は、本発明が適用される一実施形態に係るマージ候補リストの構成方法を例示するフローチャートである。
図13を参照すると、コーディング装置(エンコーダ/デコーダ)は、現在ブロックの空間的周辺ブロックを探索して導出された空間的マージ候補をマージ候補リストに挿入する(S1301)。例えば、前記空間的周辺ブロックは、前記現在ブロックの左下側コーナー周辺ブロック、左側の周辺ブロック、右上側コーナー周辺ブロック、上側周辺ブロック、左上側コーナー周辺ブロックを含むことができる。ただし、これは例示として、前述した空間的周辺ブロック以外にも右側周辺ブロック、下側の周辺ブロック、右下側の周辺ブロックなどの追加の周辺ブロックが、さらに前記空間的周辺ブロックとして用いられる。コーディング装置は、前記空間的周辺ブロックを優先順位に基づいて探索して、可用なブロックを検出し、検出されたブロックの動き情報を、前記空間的マージ候補として導出することができる。例えば、エンコーダ及びデコーダは、図12に示された5つのブロックをA1、B1、B0、A0、B2の順に探索して、可用な候補を順次インデックスしてマージ候補リストとして構成することができる。
コーディング装置は、前記現在ブロックの時間的周辺ブロックを探索して導出された時間的マージ候補を前記マージ候補リストに挿入する(S1302)。前記時間的周辺ブロックは、前記現在ブロックが位置する現在ピクチャと異なるピクチャである参照ピクチャ上に位置することができる。前記時間的周辺ブロックが位置する参照ピクチャは、collocatedピクチャまたはcolピクチャと称することができる。前記時間的周辺ブロックは、前記colピクチャ上での前記現在ブロックの同じ位置のブロック(co-located block)の右下側コーナー周辺ブロックと右下側センターブロックの順に探索されることができる。
一方、motion data compressionが適用される場合、前記colピクチャに一定格納ユニットごとに、特定の動きの情報を代表動き情報として格納することができる。この場合、前記一定格納ユニット内のすべてのブロックの動き情報を格納する必要がなく、これに介してmotion data compression効果を得ることができる。この場合、一定の格納ユニットは、例えば、16x16サンプルの単位、または8x8サンプル単位などで予め決められることもあり、またはエンコーダからデコーダに前記一定格納ユニットのサイズ情報がシグナリングされることもある。前記motion data compressionが適用される場合、前記時間的周辺ブロックの動き情報は、前記時間的周辺ブロックが位置する前記一定格納ユニットの代表動き情報に置き換えることができる。
つまり、この場合、実現側面で見ると、前記時間的周辺ブロックの座標に位置する予測ブロックではない、前記時間的周辺ブロックの座標(左上サンプルポジション)に基づいて、一定の値だけ算術的右シフトした後算術的左シフトした位置をカバーする予測ブロックの動き情報に基づいて、前記時間的マージ候補が導出され得る。例えば、前記一定格納ユニットが2nx2なのサンプル単位である場合、前記時間的周辺ブロックの座標が(xTnb、yTnb)とすると、修正された位置である((xTnb >> n)<< n)、(yTnb >> n)<< n))に位置する予測ブロックの動き情報が前記時間的マージ候補のために用いられる。
具体的に、例えば、前記一定格納ユニットが16x16サンプル単位である場合、前記時間的周辺ブロックの座標が(xTnb、yTnb)とすると修正された位置である((xTnb >> 4)<< 4)、( yTnb >> 4)<< 4))に位置する予測ブロックの動き情報が前記時間的マージ候補のために用いられる。または、例えば、前記一定格納ユニットが8x8サンプル単位である場合、前記時間的周辺ブロックの座標が(xTnb、yTnb)とすると、変更された位置である((xTnb >> 3)<< 3)、(yTnb> > 3)<< 3))に位置する予測ブロックの動き情報が前記時間的マージ候補のために用いられる。
コーディング装置は、現在マージ候補の数が最大マージ候補の数より小さいかどうかを確認することができる(S1303)。前記最大マージ候補の数は、予め定義されたり、エンコーダからデコーダにシグナリングすることができる。例えば、エンコーダは、前記最大マージ候補の数に関する情報を生成し、エンコードして、ビットストリームの形で、前記デコーダに伝達することができる。前記最大マージ候補の数がすべて満たされると以降の候補の追加プロセスは進行しないことがある。
前記確認の結果、前記現在マージ候補の数が前記最大マージ候補の数より小さい場合、コーディング装置は、追加マージ候補を前記マージ候補リストに挿入する(S1304)。前記追加マージ候補は、例えばATMVP、combined bi-predictiveマージ候補(現在スライスのスライスタイプがBタイプの場合)、及び/またはゼロベクトルマージ候補を含むことができる。
前記確認の結果、前記現在マージ候補の数が前記最大マージ候補の数より小さくない場合、コーディング装置は、前記マージ候補リストの構成を終了することができる。この場合、エンコーダは、RD(rate-distortion)costに基づいて、前記マージ候補リストを構成するマージ候補の内、最適のマージ候補を選択することができ、前記選択されたマージ候補を指す選択情報(ex。merge index)をデコーダにシグナリングすることができる。デコーダは、前記マージ候補リスト及び前記選択情報に基づいて、前記最適のマージ候補を選択することができる。
前記選択されたマージ候補の動き情報が前記現在ブロックの動き情報として用いられ、前記現在ブロックの動き情報に基づいて、前記現在ブロックの予測サンプルを導出することができることは前述した通りである。エンコーダは、前記予測サンプルに基づいて、前記現在のブロックのレジデュアルサンプルを導出することができ、前記レジデュアルサンプルに関するレジデュアル情報をデコーダにシグナリングすることができる。デコーダは、前記レジデュアル情報に基づいて導出されたレジデュアルサンプル及び前記予測サンプルに基づいて復元サンプルを生成し、これに基づいて復元ピクチャを生成することができることは前述した通りである。
スキップモード(skip mode)が適用される場合、前でマージモードが適用される場合と同じ方法で、前記現在ブロックの動き情報を導出することができる。ただし、スキップモードが適用される場合、そのブロックのレジデュアル信号が省略され、したがって、予測サンプルがすぐに復元サンプルに用いられる。
MVPモード
図14は、本発明が適用される一実施形態に係るマージ候補リストの構成方法を例示するフローチャートである。
MVP(Motion Vector Prediction)モードが適用される場合、復元された空間的周辺ブロック(例えば、先の図12で説明した周辺ブロックで有り得る)の動きベクトル及び/または時間的周辺ブロック(またはColブロック)に対応する動きベクトルを用いて、動きベクトル予測子(motion vector predictor、mvp)候補リストが生成され得る。つまり、復元された空間的周辺ブロックの動きベクトル及び/または時間的周辺ブロックに対応する動きベクトルは、動きベクトル予測子候補として用いられる。
前記予測に関する情報は、前記リストに含まれた動きベクトル予測子候補の内から選択された最適の動きベクトル予測子候補を指示する選択情報(ex。MVPフラグまたはMVPインデックス)を含むことができる。このとき、予測部は、前記選択情報を用いて、動きベクトルの候補リストに含まれた動きベクトル予測子候補の内から、現在ブロックの動きベクトル予測子を選択することができる。エンコード装置の予測部は現在ブロックの動きベクトルと動きベクトル予測子との間の動きベクトル差分(MVD)を求めることができ、これをエンコードして、ビットストリームの形で出力することができる。つまり、MVDは現在のブロックの動きベクトルから、前記動きベクトル予測子を引いた値で求められる。このとき、デコード装置の予測部は、前記予測に関する情報に含まれた動きベクトルの差分を獲得し、前記動きベクトル差分と前記動きベクトル予測子の加算を介して、現在ブロックの前記動きベクトルを導出することができる。デコード装置の予測部は参照ピクチャを指示する参照ピクチャのインデックスなどを前記予測に関する情報から獲得または誘導することができる。例えば、動きベクトル予測子候補リストは、図14に示すように構成することができる。
ATMVP(Advanced Temporal Motion Vector Prediction)
図15及び図16は、本発明が適用される一実施形態として、ATMVP(Advanced Temporal Motion Vector Prediction)候補を誘導する方法を説明するための図である。
図15を参照すると、ATMVPは時間的に隣接するピクチャのcollocated blocksの動き情報に基づいてコーディングユニットのサブブロックの動き情報を誘導する方法である。これにより、時間的動きベクトル予測(Temporal Motion Vector Prediction、TMVP)の性能を向上させることができ、一般的な、またはworst caseの複雑度を下げることができる。本発明において、ATMVPはサブブロックベースの時間マージ候補(subblock-based temporal merging candidate)、SbTMVPと称されることもある。
本発明の一実施形態において、ATMVPは次のようなプロセスによって誘導され得る。
まず、エンコーダ/デコーダは、隣接するコーディングユニットが用いられ、用いられるコーディングユニットの動きベクトルが、現在候補リスト内の動きベクトルと異なると、空間的隣接コーディングユニットから動きベクトルを追加することができる。一例として、図16を参照すると、前述したプロセスはA1、B1、B0、A0、B2の順にしたがって実行され得る。他の一例として、複雑度改善のために、前述したプロセスは、固定された位置(たとえば、A1位置)のブロックの動きベクトルのみを用いてATMVPを誘導することもできる。
前記エンコーダ/デコーダは、利用可能なNo個のスペース候補の内、最初の動きベクトル候補は、collocated pictureと各サブブロックの動き情報を誘導する位置を決定するために用いられる。ここで、Noは利用可能なスペース候補者の数を示す。もし、Noが0であれば、collocated pictureと動き0のcollocated positionは、各サブブロックの動き情報を誘導するために用いられる。
多数の参照ピクチャが用いられる場合、ATMVPにおいて互いに異なるコーディングユニットのcollocated pictureは同じではないことがある。現在ピクチャ内の互いに異なるコーディングユニットに対し、ATMVP誘導のために、互いに異なるcollocated pictureを有するということは、多数の参照ピクチャの動きの情報フィールドが誘導されるべきであることを意味し、これはメモリの帯域幅(bandwidth)を増加させるために望ましくない。
したがって、本発明は、ATMVPを誘導するときに、同じcollocated pictureを用いる、さらに単純化されたデザインを提供する。たとえば、同じcollocated pictureを用いる方法は、スライス(またはタイルグループ)ヘッダで定義されることがあるが、本発明はこれに限定されない。一例として、ブロックレベルにおいて、隣接ブロックAの参照ピクチャがcollocated pictureと異なると、隣接のブロックAの動きベクトルは、時間的動きベクトルのスケーリング方法に基づいてスケーリングすることができる。そして、前記隣接ブロックAのスケールされた動きベクトルは、ATMVPで用いられる。
図17は、本発明が適用される一実施形態として、ATMVP(Advanced Temporal Motion Vector Prediction)候補を誘導する方法を例示する図である。
図17を参照すると、本発明の一実施形態において、現在ブロックの右下端(right-bottom)のブロックまたは現在ブロックの中央(center)の位置の時間隣接ブロック(またはcolPB)の動きベクトルを用いるTMVPは画面内の動きを反映しないので、エンコーダ/デコーダは、周辺ブロックの動きベクトルが指す位置のcolPBの動きベクトルをMVPとして用いられる。
たとえば、エンコーダ/デコーダは、図17に示されたマージ候補者の構成手順のようにチェックしながら、最初に利用可能なスペース隣接ブロック(spatial neighbor block)の動きベクトルを見つけることができる。そして、参照ピクチャで、前記動きベクトルが指す位置をcol-PB(つまり、ATMVP候補)として導出することができる。
また、前記動きベクトルを各サブブロック単位で対応ブロック(corresponding block)の動きベクトルとして用いられる。この際、特定のサブブロックに動きベクトルが存在しない場合、前記対応ブロックの中心(center)に位置したセンターブロックの動きベクトルを利用可能でないサブブロックのための動きベクトルとして用いられ、これを代表動きベクトルとして格納することができる。
Temporal motion vector data Storage reduction
本発明の一実施形態において、時間動きベクトルデータ(Temporal motion vector data)圧縮のために、スペース候補の動きベクトルデータに基づいて、時間動きベクトルの格納(Temporal motion vector storage)を減少させる方法を提案する。
図18及び図19は、本発明が適用される一実施形態に係る、時間の動きベクトルデータ(Temporal motion vector data)を圧縮する方法及びこれに用いられるスペース候補の位置を例示する図である。
図18を参照すると、本発明の実施形態において、スペース候補(spatial candidate)がインター予測によって予測されると、スペース候補の動きベクトルは、圧縮のための基本動きベクトルとして設定することができる。たとえば、最大5つのスペース候補が基本時間の動きベクトルを誘導するための参照時間の動き情報として用いられる。一実施形態として、前記5つのスペース候補は、図19に示すように設定することができる。
また、時間の動きベクトルデータは、スペース候補の動きベクトルに基づいて圧縮することができる。スペース候補をサーチする順序は、図18に示されるようで有り得る。スペース候補はセンターブロック(C)、左上側ブロック(TL)、右上側ブロック(TR)、左下側ブロック(BL)、右下側ブロック(BR)の順にしたがって確認することができる。これは一実施例だけであり、本発明はこれに限定されず、他の組み合わせ可能な順序が適用され得る。
まず、エンコーダ/デコーダは、センターブロック(C)がインター予測されたかを確認することができる。前記センターブロック(C)がインター予測された場合、エンコーダ/デコーダは、前記センターブロック(C)の動きベクトルを動きベクトル予測のための基本値(default)に設定することができる。
前記センターブロック(C)がインター予測されなかった場合、エンコーダ/デコーダは、左上側ブロック(TL)がインター予測されたかを確認することができる。左上側ブロック(TL)がインター予測された場合、エンコーダ/デコーダは、
前記左上側ブロック(TL)の動きベクトルを動きベクトル予測のための基本値(default)に設定することができる。
前記左上側ブロック(TL)がインター予測されなかった場合、エンコーダ/デコーダは、右上側ブロック(TR)がインター予測されたかを確認することができる。前記右上側ブロック(TR)がインター予測された場合、エンコーダ/デコーダは、前記右上側ブロック(TR)の動きベクトルを動きベクトル予測のための基本値(default)として設定することができる。
前記右上側ブロック(TR)がインター予測されなかったら、エンコーダ/デコーダは、左下側ブロック(BL)がインター予測されたかを確認することができる。前記左下側ブロック(BL)がインター予測されたら、エンコーダ/デコーダは、前記左下側ブロック(BL)の動きベクトルを動きベクトル予測のための基本値(default)に設定することができる。
前記左下側ブロック(BL)がインター予測されなかったら、エンコーダ/デコーダは、右下側ブロック(BR)がインター予測されたかを確認することができる。
前記右下側ブロック(BR)がインター予測されたら、エンコーダ/デコーダは、前記右下側ブロック(BR)の動きベクトルを動きベクトル予測のための基本値(default)に設定することができる。
前記右下側ブロック(BR)がインター予測されなかった場合、エンコーダ/デコーダは、イントラモードを基本(default)に設定することができる。
前記のような過程を通じて、エンコーダ/デコーダは、基本動きベクトル(default motion vector)を動き情報として圧縮することができる。
適応的なサブブロックサイズに基づいてATMVPを実行する実施形態
本発明の一実施形態において、適応的なサブブロックサイズに基づいてATMVPを実行する方法を提案する。たとえば、ATMVP誘導のために用いられるサブブロックのサイズは、スライスレベルで適応的に適用することができる。
一方、4x4ブロック単位でATMVP動き情報が誘導されると、一つのATMVPコーディングユニット内で毎4x4サブブロック単位で動き誘導と動き補償を行うことになる問題点が生じることがある。
これを解決するためには、エンコーダは、ATMVP動き誘導のために用いられる1つの基本サブブロックサイズ(default sub-block size)をシーケンスレベルでデコーダにシグナリングすることができる。
他の一例として、基本サブブロックサイズ(default sub-block size)が現在のスライスで用いられる場合、ピクチャまたはスライスレベルでフラグがシグナリングされ得る。前記フラグがfalseであれば、ATMVPサブブロックサイズは、スライスヘッダでさらにシグナリングすることができる。
Collocated block誘導のための領域を制限する実施形態
本発明において、ATMVPのためのCollocated blockの領域は、現在のCTUとcollocated picture内1列(one column)のNxNブロックを含むことができる。例えば、前記NxNブロックは4x4ブロックで有り得るが、本発明はこれに限定されない。
もし、マージ候補の動きベクトルによって識別されたATMVP Collocated blockが前記制限された領域の外に位置する場合、前記制限された領域内に位置するように移動することができる。例えば、前記制限された領域内の最も近い境界に位置するように移動することができる。
Subblock-based temporal merging candidateを誘導する実施形態
本発明の一実施形態において、エンコーダ/デコーダは、空間的に隣接するブロックの動き情報に基づいて特定されるcollocated picture内collocated block(またはcollocated subblock)の動き情報をサブブロックベースの時間マージ候補(subblock-based temporal merging candidate)としてサブブロックマージ候補リスト(subblock merging candidate list)に追加することができる。
本発明において、空間的に隣接するブロックの動き情報は、時間動きベクトル(temporal motion vector)と称することができる。実施形態として、エンコーダ/デコーダは、現在コーディングブロックの幅と高さが予め決まった特定のサイズ以上の場合、サブブロックベースの時間マージ候補を誘導することができる。例えば、前記予め決まった特定のサイズは8で有り得る。
実施形態として、エンコーダ/デコーダは、利用可能なスペース候補の内、最初のスペース候補の動き情報を時間動きベクトルに設定することができる。一例として、エンコーダ/デコーダはA1、B1、B0、A0の順に利用可能なスペース候補を探索することができる。このとき、エンコーダ/デコーダは、利用可能なスペース候補の内、参照ピクチャがcollocated pictureと同じスペース候補を時間動きベクトルに設定することができる。他の一例として、エンコーダ/デコーダは、一の固定された位置のスペース候補が利用可能かどうかを確認し、利用可能な場合、そのスペース候補の動きベクトルを時間動きベクトルに設定することができる。例えば、前記1つの固定された位置のスペース候補はA1位置のブロックに設定することができる。
また、エンコーダ/デコーダは、前記時間動きベクトルを用いてcollocated picture内collocated blockの位置を特定することができる。一例として、次の数式1が用いられる。
ここで、( xColCtrCb, yColCtrCb ) は、中央位置の右下側のサンプルを含むcollocated coding blockのtop-left sample位置を示し、tempMvは前記時間動きベクトルを示す。
また、エンコーダ/デコーダは、サブブロック単位で、現在コーディングブロック内の各サブブロックの動き情報を誘導する位置を決定することができる。一実施形態において、次の数式2を用いてcollocated picture内collocated subblockの位置が誘導され得る。
ここで、( xSb, ySb )は、現在サブブロックの位置を示す。
一実施形態において、エンコーダ/デコーダは、現在collocated subblockが利用可能でない場合、時間動きベクトルを用いて特定されるcollocated blockの動き情報を用いられる。
一般的に、ATMVP(Advanced Temporal Motion Vector Prediction)による時間動きベクトルは参照ピクチャリストに構成されたすべての参照ピクチャを制限せずに用いて誘導される。つまり、時間動きベクトルを誘導するために参照ピクチャの数が増加することができ、これにより、時間動きデータのメモリ帯域幅の増加を誘発することができる。
したがって、本発明の目的は、このような問題を解決するために、1つの参照ピクチャ(reference picture)から時間動きベクトル(temporal motion vector)を誘導する方法を提案する。
また、本発明の目的は、シグナリングされたシンタックス (Syntax:構文)によって時間動きベクトル誘導のための一つの参照ピクチャを選択する方法を提案する。
また、本発明の目的は、ピクチャ順カウント(picture order count)をベースに時間動きベクトル誘導のための一つの参照ピクチャを選択する方法を提供案する。
また、本発明の目的は、ATMVP(Advanced Temporal Motion Vector Prediction)を誘導するためのスペース候補(spatial candidate)を選択する方法を提案する。
また、本発明の目的は、ひとつの参照ピクチャから逆方向マッピング(Backward mapping)に基づいた時間動きベクトル誘導方法を提案する。
実施形態1
本発明の実施形態において、エンコーダ/デコーダは、メモリ帯域幅の改善のために一つの参照ピクチャ(reference picture)を用いて、時間動きベクトル(temporal motion vector)を誘導することができる。
時間動きのデータは、デコーダだけでなく、エンコーダにすでにデコードされたすべての参照ピクチャから誘導され得る。しかし、制限なしで、すべての参照ピクチャから時間動きベクトルを誘導する方法は、参照ピクチャの動きデータを格納するための時間のメモリ構造(temporal memory structure)を用いるハードウェアにメモリ帯域幅の増加の問題とメモリの使用の問題を誘発する。
したがって、このような問題を解決するために、本実施形態で提案する方法は、予め定義された参照ピクチャからの時間動きベクトルを誘導することができる。次の図を参照して説明する。
図20は、本発明が適用される一実施形態に係る固定された参照ピクチャを用いた時間の動きベクトルの誘導方法を例示する図である。
図20を参照すると、予め定義された一つの参照ピクチャが参照ピクチャリスト0方向に存在する場合を想定する。
エンコーダ/デコーダは、現在ブロックの時間候補(temporal candidate)を誘導するための参照ピクチャを予め定義された参照ピクチャで固定することができる。図20に示すように、時間動きベクトル誘導のための他の参照ピクチャがいるにもかかわらず、特定方式によって、予め定義された参照ピクチャのみ時間動きのデータを誘導するために参照することができる。
一実施形態において、前記予め定義された参照ピクチャは、コロケイテッドされたピクチャ(collocated picture)に設定され得る。本発明において、前記コロケイテッドされたピクチャは、コルピクチャ(col picture)と称することができる。前記予め定義された参照ピクチャは、さまざまな方法によって決定されることができる。以下で説明する。
実施形態として、現在ブロックにATMVPモードが適用される場合、エンコーダ/デコーダは、スペース候補の動きベクトルを用いて前記予め定義された参照ピクチャ内のブロックを特定し、前記特定されたブロックからサブブロック単位で、現在ブロックの動きベクトルを誘導することができる。
一実施形態において、前述した図20は、時間代表動きベクトルを誘導する方法として、前記時間代表動きベクトルは、現在ブロックの中央位置に対応するブロックの時間動きベクトルとして選択することができる。
また、一実施形態において、コロケイテッド(collocated )されたピクチャ(またはコロケイテッドされたブロック)内で現在ブロックに対応するブロックが画面間予測で符号化されない場合、つまり、画面内のブロックのコピー、画面内予測などに符号化された場合、またはそのブロックに時間動きベクトルが存在しない場合は、エンコーダ/デコーダは、時間代表動きベクトルを用いて前記現在ブロック内のサブブロックの時間動きベクトルを誘導することができる。本発明において、前記時間代表動きベクトルは、中央位置サブブロックの動きベクトル、デフォルト動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。本発明の一実施形態において、スペース候補から決定された時間候補ブロックの位置に基づいて、サブブロック単位のATMVP時間動きベクトルを誘導する過程で、現在サブブロックに対応するブロックが時間動きベクトルを有さない場合、時間代表動きベクトル(または中央位置サブブロックの動きベクトル、デフォルト動きベクトル、デフォルトサブブロック動きベクトル)に基づいて、現在サブブロックの動きベクトルが誘導され得る。
実施形態2
本発明の一実施形態において、シグナリングされたシンタックス(構文)によって時間動きベクトル誘導のための一つの参照ピクチャが選択され得る。つまり、時間動きベクトル誘導のための参照ピクチャを指示するシンタックスは参照ピクチャリストに含まれた参照ピクチャの内、1つの特定参照ピクチャを選択するために、エンコーダからシグナリングされ得る。次の表2は、提案するシンタックスの一例を示す。
表2において、ref_idx_for_termporal_motion_vector_predictionシンタックス(構文要素)は、時間動きベクトル誘導のための参照ピクチャを示す。ref_idx_for_termporal_motion_vector_predictionシンタックスによって参照ピクチャリスト内での時間動きベクトル誘導のための参照ピクチャが特定されることができ、エンコーダ/デコーダは、特定された参照ピクチャからサブブロックの動きベクトルを誘導することができる。
前記表2のシンタックス要素は、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、またはスライスヘッダ(Slice Header)(またはタイルのグループヘッダ(Tile Group Header)を介して送信され得る。
前述したように、一実施形態において、固定された一つの参照ピクチャは、コロケイテッドされたピクチャ(collocated picture)で有り得る。次の表3は、提案するシンタックス(構文)の他の一例を示す。
表3を参照すると、collocated_from_l0_flagシンタックス(またはシンタックス要素)は、時間の動きベクトル予測のためのコロケイテッドされたピクチャの参照ピクチャリストの方向を指示するシンタックスであり、collocated_ref_idxシンタックスはコロケイテッドされたピクチャのインデックスを指示するシンタックス(構文)である。
前記表3のシンタックス要素は、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)、またはスライスヘッダ(Slice Header)(またはタイルグループヘッダ(Tile Group Header)を介して送信され得る。
一実施形態において、スペース候補から決定された時間候補ブロックの位置に基づいて、サブブロック単位のATMVP時間動きベクトルを誘導する過程で、現在サブブロックに対応するブロックが時間動きベクトルを有してない場合、時間代表動きベクトル(または中央位置のサブブロックの動きベクトルは、デフォルト動きベクトルは、デフォルトサブブロックの動きベクトル)に基づいて、現在サブブロックの動きベクトルが誘導され得る。
また、一実施形態において、コロケイテッドされたピクチャ(またはコロケイテッドされたブロック)内で現在のブロックに対応するブロックが画面間予測で符号化されない場合、つまり、画面内のブロックのコピー、画面内予測などに符号化された場合、またはそのブロックに時間動きベクトルが存在しない場合、エンコーダ/デコーダは、時間代表動きベクトルを用いて前記現在ブロック内のサブブロックの時間動きベクトルを誘導することができる。本発明において、前記時間代表動きベクトルは、中央位置、サブブロックの動きベクトル、デフォルトの動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。
実施形態3
本発明の一実施形態において、時間動きベクトル誘導のための参照ピクチャは、ピクチャ順序カウント(POC:picture order count)に基づいて、エンコーダとデコーダで定義することができる。
図21は、本発明が適用される一実施形態として、時間動きベクトル予測のための固定された参照ピクチャを誘導する方法を例示する図である。
図21を参照すると、一実施形態において、前記固定された参照ピクチャは参照ピクチャリスト内で現在ピクチャから最も近い参照ピクチャとして定義することができる。図21で、現在ピクチャのPOCは6、参照ピクチャリスと0の3つの参照ピクチャのPOCは、それぞれ2、3、4、参照ピクチャリスト1の1つの参照ピクチャのPOCは10である場合をかさダム仮定する。
このとき、時間動きベクトル予測のための固定された参照ピクチャは、POC 4を有する参照ピクチャに設定することができる。つまり、参照ピクチャリスト内で最も近いピクチャは、現在ピクチャと最小POCの違いを有することができる。
図22は、本発明が適用される一実施形態として、時間動きベクトル予測のための固定された参照ピクチャを誘導する方法を例示する図である。
図22を参照すると、現在ピクチャのPOCは6、参照ピクチャリスト0の3つの参照ピクチャのPOCは、それぞれ2、3、4、参照ピクチャリスト1の1つの参照ピクチャのPOCは8である場合を想定する。そして、POC 4である参照ピクチャは、時間ID(temporal ID)が3であり、POC 8である参照ピクチャは、時間ID(temporal ID)が0の場合を仮定する。
一実施形態において、POCの差が最も小さい同じPOC距離を有する参照ピクチャが参照ピクチャリストに存在する場合、エンコーダ/デコーダは、時間の動きベクトル予測のための参照ピクチャとしてPOCの差が最も小さく、最も小さい時間IDを有する参照ピクチャを選択することができる。つまり、参照ピクチャリスト1のPOC 8である参照ピクチャが時間動きベクトル予測のための参照ピクチャで設定することができる。
一実施形態において、前述した図21と22は、時間代表動きベクトルを誘導する方法でとして、前記時間代表動きベクトルは、現在ブロックの中央位置に対応するブロックの時間動きベクトルとして選択されることができる。
一実施形態において、スペース候補から決定された時間の候補ブロックの位置に基づいて、サブブロック単位のATMVP時間動きベクトルを誘導する過程で、現在サブブロックに対応するブロックが時間動きベクトルを有していない場合、時間代表動きベクトル(または中央位置のサブブロックの動きベクトル、デフォルト動きベクトル、デフォルトサブブロックの動きベクトル)に基づいて、現在サブブロックの動きベクトルが誘導され得る。
また、一実施形態において、コロケイテッドされたピクチャ(またはコロケイテッドされたブロック)内で現在ブロックに対応するブロックが画面間予測で符号化されない場合、つまり、画面内のブロックのコピー、画面内予測などに符号化された場合、またはそのブロックに時間動きベクトルが存在しない場合は、エンコーダ/デコーダは、時間代表動きベクトルを用いて前記現在ブロック内のサブブロックの時間動きベクトルを誘導することができる。本発明において、前記時間代表動きベクトルは、中央位置、サブブロックの動きベクトル、デフォルトの動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。
実施形態4
本発明の一実施形態において、ATMVP誘導のためのスペース候補(spatial candidate)を選択する方法を提案する。前述したように、ATMVPは参照ピクチャから時間動きのデータを用いる技術である。ATMVPは時間候補ブロックから時間動きのデータを誘導し、この際、前記時間候補ブロックの位置は、空間隣接候補の動きベクトルによって決定される。
従来のATMVP方法は、理論的に参照ピクチャリスト内のすべての参照ピクチャを参照することができる。つまり、時間動きベクトルを誘導するための参照ピクチャは、スペース候補の中から選択された候補の動き情報に基づいて定義することができる。最悪の場合、すべてのスペース候補が互いに異なる参照ピクチャを参照することで、多くの参照ピクチャがATMVP誘導のために用いられる状況が発生することができる。
したがって、本発明の一実施形態において、エンコーダ/デコーダは、ATMVP誘導に用いられるスペース候補として予め定義された一つの参照ピクチャを参照する候補を選択することができる。
図23及び図24は、本発明が適用される一実施形態として、ATMVP候補を誘導するために用いられるスペース候補を選択する方法及び選択されたスペース候補を用いて、サブブロック単位で動き補償を実行する方法を例示する図である。
図23を参照すると、一実施形態で、スペース候補の探索順序は、A、B、C、D、E、ブロックに設定され得る。エンコーダ/デコーダは、スペース候補リスト内で最初の有効なスペース候補をATMVP誘導のためのスペース候補として選択することができる。この際、現在ブロックの周りのスペース候補は、図23に示すように1つ以上の参照ピクチャを指す(または参照する)ことができる。図23で予め定義された参照ピクチャは参照ピクチャインデックスが0である参照ピクチャとして定義された場合を仮定する。
エンコーダ/デコーダは、予め定義された参照ピクチャと同じ参照ピクチャを参照するスペース候補の内、検索順序が速いスペース候補BをATMVP誘導のためのスペース候補として選択することができる。
図24を参照すると、エンコーダ/デコーダは、選択されたスペース候補Bの動き情報を用いて、予め定義された参照ピクチャ内で現在ブロックの対応ブロック(または参照ブロック)を識別することができる。そして、エンコーダ/デコーダは、前記対応ブロックの動きベクトルを用いて、現在ブロックのサブブロック単位で動きベクトルを誘導することができる。
また、スペース候補の内、予め定義された参照ピクチャと同じ参照ピクチャを参照するスペース候補がない場合が有り得る。この場合、エンコーダ/デコーダは、次のような方法でATMVPを誘導するための動きベクトルを決定することができる。
最初の方法として、エンコーダ/デコーダは、ゼロ動きベクトルを用いられる。つまり、エンコーダ/デコーダは、ゼロ動きベクトルを用いて、予め定義された参照ピクチャ内で現在ブロックと同じ位置のブロックを特定することができ、特定されたブロックからサブブロック単位で動きベクトルを誘導することができる。
第二の方法としては、エンコーダ/デコーダは、予め定義された参照ピクチャと同じ参照ピクチャを参照するスペース候補がない場合ATMVP候補を用いらないことがある。
第三の方法としては、エンコーダ/デコーダは、最初の有効なスペース候補の動きベクトルを前記予め定義されたピクチャでスケーリングすることができる。次の図を参照して説明する。
図25は、本発明が適用される一実施形態に係る時間動きベクトル誘導方法を例示する図である。
図25を参照すると、有効なスペース候補(A)の動きベクトルがMVx、MVyで表現される場合を仮定する。本発明の実施形態において、予め定義された参照ピクチャを参照しない有効なスペース候補(A)の動きベクトルは、前記予め定義された参照ピクチャにスケーリングされ得る。図25でスケーリングされた動きベクトルは、scaled MVx、scaled MVyで表現され得る。
一実施形態において、エンコーダ/デコーダは、ピクチャ順カウント(POC:picture order count)に基づいて前記候補の動きベクトルを前記予め定義された参照ピクチャとしてスケーリングすることができる。
また、一実施形態において、前記予め定義された参照ピクチャは、コロケイテッドされたピクチャ(collocated picture)に設定され得る。この場合、スペース候補の動きベクトルは、前記コロケイテッドされたピクチャにスケーリングされ得る。
本発明においては、ATMVP候補を誘導するために、複数のスペース隣接ブロックを探索する場合を想定するが、本発明がこれに限定されるものではない。たとえば、エンコーダ/デコーダは、ATMVP候補を誘導するために、固定された位置(例えば、図25のA位置ブロック)のスペース隣接ブロックの動きベクトルを用いられる。
一実施形態において、前述した図23~25は、時間代表動きベクトルを誘導する方法として、前記時間代表動きベクトルは、現在ブロックの中央位置に対応するブロックの時間動きベクトルとして選択することができる。
一実施形態において、スペース候補から決定された時間候補ブロックの位置に基づいて、サブブロック単位のATMVP時間動きベクトルを誘導する過程で、現在サブブロックに対応するブロックが時間動きベクトルを有していない場合、時間代表動きベクトルに基づいて、現在サブブロックの動きベクトルが誘導され得る。本発明において、前記時間代表動きベクトルは、中央位置サブブロックの動きベクトル、デフォルトの動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。
また、一実施形態において、コロケイテッドされたピクチャ(またはコロケイテッドされたブロック)内の現在ブロックに対応するブロックが画面間予測で符号化されない場合、つまり、画面内のブロックのコピー、画面内予測などに符号化された場合、またはそのブロックに時間動きベクトルが存在しない場合、エンコーダ/デコーダは、時間代表動きベクトルを用いて前記現在ブロック内のサブブロックの時間動きベクトルを誘導することができる。本発明において、前記時間代表動きベクトルは、中央位置サブブロックの動きベクトル、デフォルトの動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。
実施形態5
本発明の一実施形態において、一つの参照ピクチャから逆方向マッピングに基づいた時間動きベクトル誘導方法が適用され得る。
図26及び図27は、本発明の一実施形態に係る逆方向マッピング(backward mapping)を用いて、時間動きベクトルを誘導する方法を例示する図である。
図26を参照すると、エンコーダ/デコーダは、図26に示すように、逆方向マッピングを用いて、複数の参照ピクチャの内の動きデータを用いることができ、これに基づいて、時間動きベクトルを誘導することができる。このとき、実施形態として、前記逆方向マッピングが実行される候補は、一方向候補で有り得、両方向の候補で有り得る。
一実施形態において、メモリ帯域幅の改善のために、逆方向マッピングに用いられる参照ピクチャは、予め定義することができる。また、逆方向マッピングに用いられる候補は、一方向候補に制限されることもできる。
図27を参照すると、逆方向マッピング手順は、ただ一方向の候補を含む予め定義されたピクチャに適用することができる。
一実施形態において、前述した図26と27は、時間代表動きベクトルを誘導する方法として、前記時間代表動きベクトルは、現在ブロックの中央位置に対応するブロックの時間動きベクトルとして選択することができる。
一実施形態において、スペース候補から決定された時間候補ブロックの位置に基づいて、サブブロック単位のATMVP時間動きベクトルを誘導する過程で、現在のサブブロックに対応するブロックが時間動きベクトルを有していない場合、時間代表動きベクトル(または中央位置のサブブロックの動きベクトル、デフォルトの動きベクトル、デフォルトのサブブロックの動きベクトル)に基づいて、現在サブブロックの動きベクトルが誘導され得る。
また、一実施形態において、コロケイテッドされたピクチャ(またはコロケイテッドされたブロック)内で現在ブロックに対応するブロックが画面間予測で符号化されない場合、つまり、画面内のブロックのコピー、画面内予測などに符号化された場合、またはそのブロックに時間動きベクトルが存在しない場合は、エンコーダ/デコーダは、時間の代表動きベクトルを用いて前記現在ブロック内、サブブロックの時間動きベクトルを誘導することができる。本発明において、前記時間代表動きベクトルは、中央位置サブブロックの動きベクトル、デフォルトの動きベクトルまたはデフォルトのサブブロックの動きベクトルなどで称することができる。
以上で説明した本発明の実施形態は、説明の便宜上、それぞれの実施形態を区分して説明したが、本発明がこれに限定されるものではない。つまり、先に説明した実施形態1~3で説明した実施形態は、それぞれ独立して実行されることもあり、1つ以上の多様な実施形態が組み合わされて実行されることもある。
図28は、本発明が適用される実施形態に係るインター予測ブロックを生成する方法を例示するフローチャートである。
図28を参照すると、説明の便宜のためにデコーダを中心に説明するが、本発明がこれに限定されるものではなく、本発明の実施形態に係るインター予測ブロックを生成方法は、エンコーダとデコーダで同じように実行され得る。
デコーダは、現在ブロックの周りの利用可能なスペース隣接ブロック(spatial neighboring block)の動きベクトルを誘導する(S2801)。一実施形態として、デコーダは、現在ブロックにサブブロックベースの時間の動きベクトル予測(subblock based temporal motion vector prediction)が適用される場合、前記現在ブロックの利用可能なスペース隣接ブロック(spatial neighboring block)の動きベクトルを誘導することができる。
デコーダは、前記スペース隣接ブロックの動きベクトルに基づいて前記現在ブロックのコロケイテッドされたブロック(collocated block)を誘導する(S2802)。
デコーダは、前記コロケイテッドされたブロックの動きベクトルに基づいて前記現在のブロック内のサブブロック単位で動きベクトルを誘導する(S2803)。
デコーダは、前記サブブロック単位に誘導された動きベクトルを用いて前記現在のブロックの予測ブロックを生成する(S2804)。
実施形態としては、前記コロケイテッドされたブロックは、予め定義された一つの参照ピクチャ内で前記スペース隣接ブロックの動きベクトルによって特定され得る。
前述したように、デコーダは、ピクチャ順カウント(POC:picture order count)に基づいて前記スペース隣接ブロックの動きベクトルをスケーリングすることができる。
また、前述したように、デコーダは、前記スペース隣接ブロックの第1参照ピクチャと前記スペース隣接ブロックの動きベクトルによって特定されるブロックの第2参照ピクチャ間のピクチャ順カウント(POC:picture order count)の違い、及び現在ピクチャと前記予め定義された一つの参照ピクチャ間POCの差に基づいて前記スペース隣接ブロックの動きベクトルをスケーリングし、前記スケーリングされた動きベクトルを用いて前記予め定義された一つの参照ピクチャ内で、前記コロケイテッドされたブロックを誘導することができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)またはタイルのグループヘッダ(Tile Group Header)を介して、エンコーダからシグナリングすることができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、前記現在ブロックの参照ピクチャリスト内でPOCに基づいて、現在ピクチャと最も近い参照ピクチャとして定義することができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、前記現在ブロックの参照ピクチャリスト内でPOCに基づいて、現在ピクチャに最も近い参照ピクチャが複数個存在する場合、前記参照ピクチャの中で時間ID(temporal ID)が最も小さい参照ピクチャとして定義することができる。
図29は、本発明が適用される実施形態に係るインター予測装置を例示する図である。
図29においては、説明の便宜のために、インター予測部を一つのブロックに示したが、インター予測部エンコーダ及び/またはデコーダに含まれる構成で実現され得る。
図29を参照すると、インター予測部は先の図8~図28で提案された機能、プロセス及び/または方法を実現する。具体的には、インター予測部はスペース候補誘導部2901、コロケイテッドされたブロック誘導部2902、サブブロックの動きベクトル誘導部2903と予測ブロック生成部2904を含んで構成され得る。
スペース候補誘導部2901は、現在ブロックの周りの利用可能なスペース隣接ブロック(spatial neighboring block)の動きベクトルを誘導する。一実施形態として、スペース候補誘導部2901は、現在ブロックにサブブロックベースの時間動きベクトル予測(subblock based temporal motion vector prediction)が適用される場合、前記現在ブロックの利用可能なスペース隣接ブロック(spatial neighboring block)の動きベクトルを誘導することができる。
コロケイテッドされたブロック誘導部2902は、前記スペース隣接ブロックの動きベクトルに基づいて前記現在のブロックのコロケイテッドされたブロック(collocated block)を誘導する。
サブブロックの動きベクトル誘導部2903は、前記コロケイテッドされたブロックの動きベクトルに基づいて前記現在ブロック内でサブブロック単位で動きベクトルを誘導する。
予測ブロック生成部2904は、前記サブブロック単位で誘導された動きベクトルを用いて前記現在ブロックの予測ブロックを生成する。
実施形態として、前記コロケイテッドされたブロックは、予め定義された一つの参照ピクチャ内で前記スペース隣接ブロックの動きベクトルによって特定され得る。
前述したように、コロケイテッドされたブロック誘導部2902は、ピクチャ順カウント(POC:picture order count)に基づいて前記スペース隣接ブロックの動きベクトルをスケーリングすることができる。
また、前述したように、コロケイテッドされたブロック誘導部2902は、前記スペース隣接ブロックの第1参照ピクチャと前記スペース隣接ブロックの動きベクトルによって特定されるブロックの第2参照ピクチャ間のピクチャ順カウント(POC: picture order count)の違い、及び現在ピクチャと前記予め定義された一つの参照ピクチャ間POCの差に基づいて前記スペース隣接ブロックの動きベクトルをスケーリングし、前記スケーリングされた動きベクトルを用いて前記予め定義された一つの参照ピクチャ内で、前記コロケイテッドされたブロックを誘導することができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、シーケンスパラメータセット(Sequence Parameter Set)、ピクチャパラメータセット(Picture Parameter Set)またはタイルのグループヘッダ(Tile Group Header)を介して、エンコーダからシグナリングすることができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、前記現在ブロックの参照ピクチャリスト内でPOCに基づいて、現在ピクチャと最も近い参照ピクチャとして定義することができる。
また、前述したように、前記予め定義された一つの参照ピクチャは、前記現在ブロックの参照ピクチャリスト内でPOCに基づいて、現在ピクチャに最も近い参照ピクチャが複数個存在する場合、前記参照ピクチャの内、時間ID(temporal ID)が最も小さい参照ピクチャとして定義することができる。
図30は、本発明が適用される映像コーディングシステムを示す。
映像コーディングシステムは、ソース装置(source device)及び受信装置(receiving device)を含むことができる。ソース装置は、エンコードされたビデオ/映像情報またはデータを、ファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信装置に伝達することができる。
前記ソース装置は、ビデオソース(video source)、エンコード装置(encoding apparatus)、送信部(transmitter)を含むことができる。前記受信装置は、受信部(receiver)、デコード装置(decoding apparatus)及びレンダラー(renderer)を含むことができる。前記エンコード装置は、ビデオ/映像エンコード装置と呼ばれることができ、前記デコード装置は、ビデオ/映像デコード装置と称することができる。送信機は、エンコード装置に含まれることができる。受信機は、デコード装置に含まれることができる。レンダラーは、ディスプレイ部を含むこともでき、ディスプレイ部は別個の装置または外部のコンポーネントで構成されることもある。
ビデオソースはビデオ/映像のキャプチャ、合成または生成過程などを通じてビデオ/映像を獲得することができる。ビデオソースはビデオ/映像キャプチャ装置及び/またはビデオ/映像生成装置を含むことができる。ビデオ/映像キャプチャ装置は、例えば、1つ以上のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成装置は、例えばコンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。たとえば、コンピュータなどを通じて、仮想のビデオ/映像が生成されることができ、この場合、関連するデータが生成される過程で、ビデオ/映像キャプチャプロセスが代えることができる。
エンコード装置は、入力ビデオ/映像をエンコードすることができる。エンコード装置は、圧縮とコーディング効率のために予測、変換、量子化などの一連の手順を実行することができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形で出力され得る。
送信部はビットストリームの形で出力されたエンコードされたビデオ/映像情報またはデータを、ファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信装置の受信部に伝達することができる。デジタル格納媒体は、USB、SD、CD、DVD、Blu-ray、HDD、SSDなど、様々な格納媒体を含むことができる。送信部は、予め決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介して送信するための要素を含むことができる。受信部は、前記ビットストリームを抽出してデコード装置伝達することができる。
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を実行して、ビデオ/映像をデコードすることができる。
レンダラーは、デコードされたビデオ/映像をレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介してディスプレイされ得る。
図31は、本発明が適用される実施形態として、コンテンツのストリーミングシステム構造図を示す。
図31を参照すると、本発明が適用されるコンテンツのストリーミングシステムは、大きくエンコーディングサーバ、ストリーミングサーバ、ウェブサーバ、メディアストレージ、ユーザ装置及びマルチメディア入力装置を含むことができる。
前記エンコーディングサーバは、スマートフォン、カメラ、ビデオカメラなどのようなマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを前記ストリーミングサーバに送信する役割をする。他の例として、スマートフォン、カメラ、ビデオカメラなどのマルチメディア入力装置がビットストリームを直接生成する場合、前記エンコーディングサーバは省略することができる。
前記ビットストリームは、本発明が適用されるエンコード方法またはビットストリームを生成する方法によって生成され得、前記ストリーミングサーバは、前記ビットストリームを送信または受信する過程で一時的に前記ビットストリームを格納することができる。
前記ストリーミングサーバは、ウェブサーバを介して、ユーザの要請に基づいて、マルチメディアデータをユーザ装置に送信し、前記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体の役割をする。ユーザが前記ウェブサーバに所望するサービスを要請すると、前記ウェブサーバは、これをストリーミングサーバに伝達し、前記ストリーミングサーバは、ユーザに、マルチメディアデータを送信する。この際、前記コンテンツのストリーミングシステムは、別の制御サーバを含むことができ、この場合、前記制御サーバは、前記コンテンツのストリーミングシステム内の各装置間のコマンド/応答を制御する役割をする。
前記ストリーミングサーバは、メディアストレージ及び/またはエンコーディングサーバからコンテンツを受信することができる。例えば、前記エンコーディングサーバからコンテンツを受信することになる場合、前記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバは、前記ビットストリームを一定時間の間格納することができる。
前記ユーザ装置の例としては、携帯電話、スマートフォン(smartphone)、ノートパソコン(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、デスクトップコンピュータ、デジタルサイネージなどが有り得る。
前記コンテンツのストリーミングシステム内の各サーバは、分散サーバで運営されることができ、この場合、各サーバで受信するデータは、分散処理することができる。
前記記述されたように、本発明で説明した実施形態は、プロセッサ、マイクロプロセッサ、コントローラ、またはチップ上で実現されて実行され得る。例えば、各図で示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラ、またはチップ上で実現されて実行され得る。
また、本発明が適用されるデコーダ及びエンコーダは、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信などのようなリアルタイム通信装置、モバイルストリーミング装置、格納媒体、ビデオカメラ、ビデオ・オンデマンド(VOD)サービス提供装置、OTTビデオ(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、テレビ電話、ビデオ装置、及び医療用ビデオ機器などに含まれることができ、ビデオ信号またはデータ信号を処理するために用いられる。たとえば、OTTビデオ(Over the top video)装置では、ゲーム機、ブルーレイプレーヤー、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)などを含むことができる。
また、本発明が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取り可能な格納媒体に格納することができる。本発明に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み取り可能な格納媒体に格納することができる。前記コンピュータが読み取り可能な格納媒体は、コンピュータで読み取り可能なデータが格納されるあらゆる種類の格納装置及び分散格納装置を含む。前記コンピュータが読み取り可能な格納媒体は、例えば、ブルーレイディスク(BD)、ユニバーサルシリアルバス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、及び光学データ格納装置を含むことができる。また、前記コンピュータが読み取り可能な格納媒体は、搬送波(例えば、インターネットを通じた伝送)の形態で実現されたメディアを含む。また、エンコード方法で生成されたビットストリームが、コンピュータが読み取り可能な記録媒体に格納したり、有無線通信ネットワークを介して送信され得る。
また、本発明の実施形態は、プログラムコードによるコンピュータプログラム製品として実現されることができ、前記プログラムコードは、本発明の実施形態により、コンピュータ上で実行することができる。前記プログラムコードは、コンピュータによって読み取り可能なキャリア上に格納することができる。
以上で説明した実施形態は、本発明の構成要素と特徴が所定の形態で結合されたものである。各構成要素または特徴は、別の明示的な言及がない限り選択的なもので検討されるべきである。各構成要素または特徴は、他の構成要素や特徴と結合されない形態で実施され得る。また、一部の構成要素及び/または特徴を結合して、本発明の実施形態を構成することも可能である。本発明の実施形態で説明される動作の順序は変更され得る。どの実施形態の一部の構成や特徴は、他の実施形態に含まれることができ、または他の実施形態に対応する構成または特徴と交際交替することができる。特許請求の範囲で明示的な引用関係がない請求項を結合して実施形態を構成したり、出願後の補正により新しい請求項として含めることができることは自明である。
本発明に係る実施形態は、様々な手段、例えば、ハードウェア、ファームウェア(firmware)、ソフトウェアまたはそれらの組み合わせなどにより実現され得る。ハードウェアによる実現の場合、本発明の一実施形態は、一つまたはそれ以上のASICs(application specific integrated circuits)、DSPs(digital signal processors)、DSPDs(digital signal processing devices)、PLDs(programmable logic devices)、FPGAs( field programmable gate arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現され得る。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で実現され得る。ソフトウェアコードは、メモリに格納されてプロセッサによって駆動され得る。前記メモリは、前記プロセッサの内部または外部に位置して、既に公知された多様な手段により、前記プロセッサとデータを送受信することができる。
本発明は、 本発明の必須の特徴を逸脱しない範囲で他の特定の形態で具体化されることができることは当業者に自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈してはならなく、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内でのすべての変更は、本発明の範囲に含まれる。