本発明に係る理解を助けるために詳細な説明の一部として含まれる添付図面は、本発明の実施形態を提供し、詳細な説明と共に本発明の技術的特徴を説明する。
以下、本発明に係る好適な実施形態を、添付の図面を参照して詳細に説明する。添付された図面と共に以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施されることができる唯一の実施形態を示すようにすることではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかしながら、当業者は、本発明は、このような具体的な詳細がなくても実施できることを知る。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造および装置は省略されるか、各構造および装置の中核機能を中心としたブロック図の形式で示されることができる。
さらに、本発明で用いられる用語は、可能な限り、現在広く用いられる一般的な用語を選択したが、特定の場合には、出願人が任意に選定した用語を用いて説明する。そのような場合には、該当部分の詳細な説明で、その意味を明確に記載するため、本発明の説明で用いられる用語の名称のみで単純に解釈されてはならないものであり、その対応する用語の意味まで把握して解釈されるべきであることを明らかにしておく。
以下の説明で用いられる特定の用語は、本発明の理解を助けるために提供されたものであり、このような特定の用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更されることができる。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コーディングの過程で適切に置換されて解釈されることがある。
以下、本明細書で「処理ユニット」は、予測、変換、および/または量子化などのエンコード/デコードの処理過程が実行される単位を意味する。以下、説明の便宜のために処理ユニットは、「処理ブロック」または「ブロック」と称することもできる。
処理ユニットは、輝度(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)、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)ユニット単位で転送または記憶されることができる。上記ビットストリームは、ネットワークを介して転送されることができ、またはデジタル記憶媒体に記憶されることができる。ここで、ネットワークは、放送網、および/またはネットワークなどを含むことができ、デジタル記憶媒体は、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を合わせて予測部と呼ぶことができる。つまり、予測部は、インター予測部260およびイントラ予測部265を含むことができる。逆量子化部220、逆変換部230を合わせて残差処理部と呼ぶことができる。つまり、残差処理部は、逆量子化部220、逆変換部230を含むことができる。前述したエントロピデコード部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、インター予測部260およびイントラ予測部265は、実施形態に応じて一つのハードウェアコンポーネント(例えば、デコーダまたはプロセッサ)によって構成されることができる。また、メモリ170は、DPB(Decoded Picture Buffer)を含むことができ、デジタル記憶媒体によって構成されることもできる。
ビデオ/映像情報を含むビットストリームが入力されると、デコード装置200は、図1のエンコード装置によるビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコード装置200は、エンコード装置で適用された処理ユニットを用いてデコードを行うことができる。したがって、デコード処理ユニットは、例えば、コーディングユニットであり得、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットから四分木構造および/または二分木構造に沿って分けられることができる。そして、デコード装置200を介してデコードおよび出力された復元映像信号は、再生装置で再生されることができる。
デコード装置200は、図1のエンコード装置から出力された信号をビットストリーム形態で受信することができ、受信した信号は、エントロピデコード部210を介してデコードすることができる。例えば、エントロピデコード部210は、上記ビットストリームを解析して映像復元(またはピクチャ復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。例えば、エントロピデコード部210は、指数ゴロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内の情報をデコードし、映像復元に必要な構文要素の値、残差に関する変換係数の量子化された値を出力することができる。さらに詳細には、CABACエントロピデコード方法は、ビットストリームで各構文要素に対応するビン(bin)を受信し、デコード対象構文要素の情報ならびに周辺およびデコード対象ブロックのデコード情報、または前の段階でデコードされたシンボル/ビンの情報を用いてコンテキスト(context)モデルを決定し、決定したコンテキストモデルに基づいて、ビンの発生確率を予測して、ビンの算術復号(デコーディング)(arithmetic decoding)を実行して、各構文要素の値に対応するシンボルを生成することができる。このとき、CABACエントロピデコード方法は、コンテキストモデルを決定した後、次のシンボル/空のコンテキスト(文脈)モデルのためにデコードされたシンボル/ビンの情報を用いて、コンテキストモデルを更新することができる。エントロピデコード部210でデコードされた情報のうちの予測に関する情報は、予測部(インター予測部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に伝達されることができる。メモリ250は、現ピクチャ内の復元されたブロックの復元サンプルを記憶することができ、イントラ予測部265に伝達することができる。
本明細書において、エンコード装置100のフィルタリング部160、インター予測部180およびイントラ予測部185で説明された実施形態は、それぞれデコード装置200のフィルタリング部240、インター予測部260およびイントラ予測部265にも同一または対応するように適用されることができる。
Block Partitioning
本文書に係るビデオ/映像(ビデオ)コーディング方法は、様々な詳細な技術に基づいて行うことができ、それぞれの詳細な技術を概略的に説明すると、次の通りである。以下で説明される技術は、前述した、および/または後述されるビデオ/映像のエンコード/デコードの手順における予測、残差処理((逆)変換、(逆)量子化など)、構文要素のコーディング、フィルタリング、パーティショニング/分割などの関連の手続きに関連付けることができることは、当業者にとって自明である。
本文書に沿ったブロックパーティショニング手順は、前述したエンコード装置の映像分割部110で実行され、パーティショニング関連情報が、エントロピエンコード部190により(エンコード)処理され、ビットストリームの形でデコード装置に伝達されることができる。デコード装置のエントロピデコード部210は、上記ビットストリームから獲得した上記パーティショニング関連情報に基づいて、現ピクチャのブロックパーティショニング構造を導出し、これを基に映像デコードのための一連の手順(例えば、予測、残差処理、ブロック復元、イン(リン)ループフィルタリングなど)を実行することができる。
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は、本発明が適用されることができる実施形態として、マルチタイプのツリーを伴う四分木(quadtree with nested multi-type tree)構造のパーティション分割情報のシグナリングメカニズムを例示する図である。
ここで、CTUは、四分木のルート(root)として扱われ、四分木構造で初めてパーティショニングされる。各四分木のリーフノードは、以後、マルチタイプのツリー構造で、さらにパーティショニングされることができる。マルチタイプのツリー構造において、第1フラグ(a first flag、例えば、mtt_split_cu_flag)は、そのノードが追加的にパーティショニングされるかを指示するためにシグナリングされる。そのノードが追加的にパーティショニングされる場合、第2フラグ(a second flag、例えば、mtt_split_cu_verticla_flag)が分割方向(splitting direction)を指示するためにシグナリングされることができる。その後、第3フラグ(a third flag、例えば、mtt_split_cu_binary_flag)が、分割タイプが二分割であるか三(ターナリ)分割であるかを指示するためにシグナリングされることができる。例えば、上記mtt_split_cu_vertical_flagおよび上記mtt_split_cu_binary_flagに基づいて、CUのマルチタイプのツリー分割モード(multi-type tree splitting mode、MttSplitMode)が、次の表1のように導出されることができる。
図5は、本発明が適用されることができる実施形態として、四分木および入れ子マルチタイプのツリー(quadtree 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構文(syntax:シンタックス)要素で定義および識別されることができる。
-CTU size:四分木のルートノード(quaternary tree root node)サイズ
-MinQTSize:四分木のリーフノード(quaternary tree leaf node)の最小許容サイズ
-MaxBtSize:二分木のルートノード(binary tree root node)の最大許容サイズ
-MaxTtSize:三分木のルートノード(ternary tree root node)の最大許容サイズ
-MaxMttDepth:四分木リーフ(quadtree leaf)で分割されるマルチタイプのツリー(multi-type tree)の最大に許容される層の深さ
-MinBtSize:二分木のリーフノード(binary tree leaf node)の最小許容サイズ
-MinTtSize:三分木のリーフノード(ternary tree leaf node)の最大許容サイズ
マルチタイプのツリーを伴った四分木コーディングツリー構造の一例として、CTUサイズは、128x128ルマサンプルおよび二つの対応するクロマサンプルの64x64ブロックに設定されることができる(4:2:0クロマフォーマットで)。この場合、MinOTSizeは16x16に設定され、MaxBtSizeは128x128に設定され、MaxTtSzieは64x64に設定され、MinBtSizeおよびMinTtSize(for both width and height)は4x4で、そしてMaxMttDepthは4に設定されることができる。四分木パーティショニングは、CTUに適用されて四分木のリーフノードを生成することができる。四分木のリーフノードは、リーフQTノードと呼ばれることができる。四分木のリーフノードは、16x16サイズ(すなわち、the MinOTSize)から128x128サイズ(すなわち、the CTU size)を有することができる。リーフQTノードが128x128である場合、さらに、二分木/三分木に分割されないことがある。これは、この場合、分割されてもMaxBtsizeおよびMaxTtszie(すなわち、64x64)を超過するからである。それ以外の場合、リーフQTノードは、マルチタイプのツリーにさらに分割されることができる。したがって、リーフQTノードは、マルチタイプのツリーのルートノード(root node)であり、リーフQTノードは、マルチタイプのツリーデプス(mttDepth)0の値を有することができる。マルチタイプのツリーデプスがMaxMttdepth(例えば、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のすべてのサンプルが上記ピクチャ境界内に位置するように制限されることができる。この場合、例えば、次のような分割ルールが適用されることができる。
- ツリーノードブロック(tree node block)の一部(a portion)が左側および右側ピクチャ境界のすべてを超える場合、
- 上記ブロックがQTノードであり、上記ブロックの大きさが最小QTサイズより大きい場合、上記ブロックは、QT分割モードで強制分割される。
- そうでなければ、上記ブロックは、水平二分割(Horizontal Binary Splitting、SPLIT_BT_HOR)モードで強制分割される。
- そうではなく、ツリーノードブロック(tree node block)の一部(a portion)が下部ピクチャ境界を超えた場合、
- 上記ブロックがQTノードであり、上記ブロックのサイズが最小QTサイズより大きく、上記ブロックのサイズが最大BTサイズより大きい場合、上記ブロックは、QT分割モードで強制分割される。
- そうではなく、上記ブロックがQTノードであり、上記ブロックの大きさが最小QTサイズより大きく、上記ブロックのサイズが最大BTサイズより小さいか等しい場合、上記ブロックは、QT分割モードまたは水平二分割(Horizontal Binary Splitting 、SPLIT_BT_HOR)モードで強制分割される。
- そうでなければ(上記ブロックがBTTノードまたは上記ブロックのサイズが最小QTサイズより小さいか等しい)、上記ブロックは、水平二分割(Horizontal Binary Splitting、SPLIT_BT_HOR)モードで強制分割される。
- そうではなく、ツリーノードブロック(tree node block)の一部(a portion)が右側ピクチャ境界のすべてを超える場合、
- 上記ブロックがQTノードであり、上記ブロックのサイズが最小QTサイズより大きく、上記ブロックのサイズが最大BTサイズより大きい場合、上記ブロックは、QT分割モードで強制分割される。
- そうではなく、上記ブロックがQTノードであり、ブロックのサイズが最小QTサイズより大きく、上記ブロックのサイズが最大BTサイズより小さいか等しい場合、上記ブロックは、QT分割モードまたは垂直二分割(Vertical Binary Splitting、SPLIT_BT_VER)モードで強制分割される。
- そうでなければ(上記ブロックがBTTノードであるかまたは上記ブロックのサイズが最小QTサイズより小さいか等しい)、上記ブロックは、垂直二分割(Vertical Binary Splitting、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によってエンコードされたデータは、ビットストリームの形態で記憶されることができる。
エンコード装置/デコード装置の予測部は、ブロック単位でインター予測を実行して、予測サンプルを導出することができる。インター予測は、現ピクチャ以外のピクチャのデータ要素(例えば、サンプル値、または動き情報など)に依存する方法で導出される予測を示すことができる。現ブロックにインター予測が適用される場合、参照ピクチャのインデックスが示す参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現ブロックの予測されたブロック(予測サンプルアレイ)を導出することができる。
このとき、インター予測モードで転送される動き情報の量を減らすために、周辺ブロックと現ブロックとの間の動き情報の相関性に基づいて、現ブロックの動き情報をブロック、サブブロック、またはサンプル単位で予測することができる。上記動き情報は、動きベクトルおよび参照ピクチャインデックスを含むことができる。上記動き情報は、インター予測タイプ(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)。エンコード装置は、エンコードされた映像情報をビットストリームの形態で出力することができる。上記予測情報は、上記予測手順に関連する情報で、予測モード情報(例えば、skip flag、merge flag or mode indexなど)および動き情報に関する情報を含むことができる。上記動き情報に関する情報は、動きベクトルを導出するための情報である候補の選択情報(例えば、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つを指示するインデックス情報を含むことができる。あるいは、フラグ情報の階層的シグナリングを介してインター予測モードを指示することもできる。この場合、上記予測モード情報は、複数のフラグを含むことができる。
たとえば、スキップフラグをシグナリングしてスキップモードの適用が可能か否かを指示し、スキップモードが適用されることができない場合にマージフラグをシグナリングしてマージモードの適用が可能か否かを指示し、マージモードが適用されることができない場合に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が適用される場合、上記時間的周辺ブロックの動き情報は、上記時間的周辺ブロックが位置する上記一定ストレージユニットの代表動き情報に置き換えられることができる。
つまり、この場合、実現の側面で見ると、上記時間的周辺ブロックの座標に位置する予測ブロックではなく、上記時間的周辺ブロックの座標(左上端サンプルポジション)に基づいて、一定の値だけ算術的に右シフトした後算術的に左シフトした位置をカバーする予測ブロックの動き情報に基づいて、上記時間的マージ候補が導出されることができる。例えば、上記一定のストレージユニットが2nx2nサンプル単位である場合、上記時間的周辺ブロックの座標を(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に基づいて、上記マージ候補リストを構成するマージ候補のうちの最適なマージ候補を選択することができ、上記選択されたマージ候補を指す選択情報(例えば、merge index)をデコーダにシグナリングすることができる。デコーダは、上記マージ候補リストおよび上記選択情報に基づいて、上記最適なマージ候補を選択することができる。
上記選択されたマージ候補の動き情報が上記現ブロックの動き情報として用いられることができ、上記現ブロックの動き情報に基づいて、上記現ブロックの予測サンプルを導出することができることは、前述した通りである。エンコーダは、上記予測サンプルに基づいて、上記現ブロックの残差サンプルを導出することができ、上記残差サンプルに関する残差情報をデコーダにシグナリングすることができる。デコーダは、上記残差情報に基づいて導出された残差サンプルおよび上記予測サンプルに基づいて復元サンプルを生成し、これに基づいて復元ピクチャを生成することができることは、前述した通りである。
スキップモード(skip mode)が適用される場合、前のマージモードが適用される場合と同じ方法で、上記現ブロックの動き情報を導出することができる。ただし、スキップモードが適用される場合、そのブロックの残差信号が省略され、したがって、予測サンプルが直接復元サンプルとして用いられることができる。
MVPモード
図14は、本発明が適用される一実施形態に係るマージ候補リストの構成方法を例示するフローチャートである。
MVP(Motion Vector Prediction)モードが適用される場合、復元された空間的周辺ブロック(例えば、先の図12で説明した周辺ブロックであり得る)の動きベクトルおよび/または時間的周辺ブロック(またはColブロック)に対応する動きベクトルを用いて、動きベクトル予測子(motion vector predictor、mvp)の候補リストが生成されることができる。つまり、復元された空間的周辺ブロックの動きベクトルおよび/または時間的周辺ブロックに対応する動きベクトルは、動きベクトル予測子候補として用いられることができる。
上記予測に関する情報は、上記リストに含まれる動きベクトル予測子候補のうちの選択された最適な動きベクトル予測子候補を指示する選択情報(例えば、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内の一列(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と同じ空間候補を時間動きベクトルに設定することができる。他の一例として、エンコーダ/デコーダは、一つの固定された位置の空間候補が利用可能かどうかを確認し、利用可能な場合、その領域の候補の動きベクトルを時間動きベクトルに設定することができる。例えば、上記一つの固定された位置の空間候補をA1の位置のブロックに設定することができる。
また、エンコーダ/デコーダは、上記時間動きベクトルを用いてcollocated picture内のcollocated blockの位置を特定することができる。一例として、次の数式1を用いることができる。
<数式1>
ここで、(xColCtrCb、yColCtrCb)は、中央位置の右下側のサンプルを含むcollocated coding blockのtop-left sample位置を示し、tempMvは、上記時間動きベクトルを示す。
また、エンコーダ/デコーダは、サブブロック単位で、現在のコーディングブロック内の各サブブロックの動き情報を導出する位置を決定することができる。一実施形態において、次の数式2を用いて、collocated picture内collocated subblockの位置が導出されることができる。
<数式2>
ここで、(xSb、ySb)は、現在のサブブロックの位置を示す。
一実施形態において、エンコーダ/デコーダは、現在のcollocated subblockが利用可能でない場合、時間動きベクトルを用いて特定されるcollocated blockの動き情報を用いることができる。
図20は、本発明が適用される実施形態に係る候補リスト(candidate list)に基づいて、インター予測されたブロック(inter predicted block)を生成する方法を示すフローチャートである。
図20を参照すると、先の図1および図2で説明したインター予測部(180、260)によって実行されるインター予測プロセスを例示する。図20においては、インター予測を介して、予測された動き情報(PMI、Predicted Motion Information)を導出して予測を行う方法として、マージモードおよびインターモード(すなわち、(A)MVPモード)が用いられる場合を仮定する。ただし、本発明がこれに限定されるものではなく、それ以外に様々なモードがインター予測のために適用されることができる。
前述したように、マージモードおよびインターモードは、予測ブロックの生成に用いられる最終PMIを導出するために、候補インデックス(candidate index)以外に、さらに動き情報差分(MVD、Motion Vector Difference)、参照リスト(reference list)(または参照ピクチャリスト)および/または参照ピクチャインデックス(reference picture index)のうちの少なくとも一つを、ビットストリームを介して転送を受けるかどうかに応じて区分されることができる。
具体的には、エンコーダ/デコーダは、現ブロックにマージモードが適用されるかどうかを確認する(S2001)。
現ブロックにマージモードが適用される場合、エンコーダ/デコーダは、マージ候補(またはマージ候補リスト)を生成し、現ブロックのインター予測に用いられたPMIを選択する(S2002、2003)。マージモードが適用される場合、エンコーダは、上記選択されたPMI情報をマージインデックスとしてデコーダに転送することができる。上記マージインデックスは、マージ候補の中から、特定のマージ候補を指示することができる。エンコーダ/デコーダは、上記特定のマージ候補(者)の動き情報を現ブロックのインター予測のための動きベクトルとして用いることができる。
現ブロックにマージモードが適用されない場合(つまり、インターモードが適用される場合)、エンコーダ/デコーダは、インター候補(またはインター候補リスト)を生成し、現ブロックのインター予測に用いられる最初のPMI(または動きベクトル予測子(motion vector predictor))を選択する(S2004、S2005)。インターモードが適用される場合、エンコーダは、上記選択されたPMI情報を動きベクトル予測子フラグ(またはインデックス)としてデコーダに転送することができる。上記動きベクトル予測子フラグは、インター候補の中から、特定のインター候補を指示することができる。そして、上記インター候補は、動きベクトル予測子候補と呼ばれることができる。エンコーダ/デコーダは、上記初期PMIに動きベクトル差分を加算することにより、予測に用いられた動きベクトルを導出する(S2006)。
エンコーダ/デコーダは、導出された動きベクトルを用いて、現ブロックの予測ブロックを生成する(S2007)。
つまり、マージモードが適用される場合、エンコーダ/デコーダは、最終PMIを導出するために、候補インデックス(すなわち、マージインデックス)のシグナリング以外に、追加的なシンタックス(または構文要素)を利用せず、候補インデックスを介して、選択した候補の動き情報を用いて、現ブロックの予測ブロックを生成する。このとき、候補生成プロセスは、S2002段階(またはブロック)で行われる。
インターモードが適用される場合にも、マージモードと同様の方法でS2004の段階で候補生成処理が実行される。インターモードが適用される場合、エンコーダ/デコーダは、選択された候補の動き情報に基づいて、追加の動き情報を受けて、最終的PMIを導出し、これを用いて、現ブロックの予測ブロックを生成する。
以下で、隣接ブロックの動き情報を用いて、候補(または候補リスト)を生成する方法を説明する。
図21は、本発明が適用される実施形態に係る候補リスト(candidate list)を生成する方法を示すフローチャートである。
図21を参照すると、説明の便宜のためにデコーダを中心に説明するが、本実施形態の候補リストの生成方法は、エンコーダでも同じように実行されることができる。一実施形態において、先の図12~図17で説明した方法が適用されることができ、これに関する重複する説明は、省略する。
図21に示された候補の構成手順は、一つの例として、本発明がこれに限定されるものではなく、順序が変更されたり、一部の段階が省略または追加されることができる。また、図21で追加される候補は、一つの例として、それ以外に、他の様々な色々な候補が追加されることもでき、図21に示された候補のうちの一部の候補が使用されないことがある。
デコーダは、空間隣接ブロック(spatial neighboring block)(または空間候補(spatial candidate))を候補リストに追加する(S2101)。例えば、デコーダは、先に説明した図16の周辺候補ブロックを候補リストに追加することができる。
デコーダは、時間隣接ブロック(temporal neighboring block)(または時間候補(temporal candidate))を候補リストに追加する(S2102)。
デコーダは、組み合わせた動き情報(または組み合わせた動きベクトル)を候補リストに追加し、ゼロ動きベクトルを候補リストに追加する(S2103、S2104)。
図22は、本発明が適用される実施形態に係るインター予測に用いられる周辺ブロックの一例を示す。
図22を参照すると、エンコーダ/デコーダは、空間的類似性をベースにする空間隣接ブロックの動き情報および時間的類似性に基づいて、時間隣接ブロックの動き情報を用いて、候補リストを構成することができる。本発明において、空間隣接ブロックの動き情報は、空間隣接情報と呼ばれることができ、時間隣接ブロックの動き情報は、時間隣接情報、対応(corresponded)時間情報と呼ばれることができる。
実施形態として、エンコーダ/デコーダは、図22に示すような空間候補(または空間隣接情報)を用いて、候補リストを構成することができる。そして、エンコーダ/デコーダは、図22に示すような時間候補(または対応時間情報)を用いて、候補リストを構成することができる。
前述したように、空間的類似性を考慮した時間的類似性情報を補正するために、適応的時間動きベクトル予測子(ATMVP、Adaptive Temporal Motion Vector Prediction)が用いられることができる。ATMVPは、時間的に隣接するピクチャのコロケートブロック(collocated block)の動き情報に基づいて、サブブロックの動き情報を導出する方法である。これにより、時間的動きベクトル予測(Temporal Motion Vector Prediction、TMVP)の性能を向上させ、複雑度を改善することができる。本発明において、ATMVPは、サブブロックベースの時間マージ候補(subblock-based temporal merging candidate)、SbTMVPなどと呼ばれることができる。
つまり、現ブロックの右下側(right-bottom)または中央(center)の位置のコロケートブロックの動きベクトルを用いるTMVPは、ピクチャ内における動きを反映していないため、周辺ブロックの動きベクトルが指す位置のコロケイテッドブロックの動きベクトルが動きベクトル予測子で用いられる。
先で説明した図17を再び参照すると、一実施形態において、エンコーダ/デコーダは、予め設定されたマージ候補(Merge candidate)の構成順にチェックしながら、最初に利用可能な空間隣接ブロック(spatial neighbor block)の動きベクトルを見つけることができる。以後、エンコーダ/デコーダは、参照ピクチャ(reference picture)内で、該当動きベクトル(つまり、時間動きベクトル(temporal motion vector))が示す位置をコロケートブロックに決定することができる。これにより、対応ブロック(corresponding block)(または時間動きベクトル)の精度(正確度)を高めることができる。一実施形態として、上記参照ピクチャは、コロケイテッドピクチャ(collocated picture)として定義されることができる。
エンコーダ/デコーダは、現在のコーディングブロック内でサブブロック単位で時間動きベクトルによって特定される対応ブロックの動きベクトルを導出することができる。一実施形態として、特定サブブロックに対応する動きベクトルが存在しない場合(または利用可能でない場合)、エンコーダ/デコーダは、コロケイテッドブロックの中央に位置する、ブロックの動きベクトルを代表動きベクトルに設定(または記憶)し、上記特定サブブロックのための動きベクトルとして用いることができる。
一実施形態において、ATMVPモードを用いるために、エンコーダ/デコーダは、マージ候補(merge candidate)の数を増やして適用することができる。そして、そのために追加の構文(または構文要素)は使用されないことがある。マージ候補の最大数を指示する構文は、上位レベルの構文を介して、エンコーダからデコーダに転送されることができる。上記上位レベルの構文は、例えば、シーケンスパラメータセット(SPS、Sequence Parameter Set)、ピクチャパラメータセット(PPS、Picture Parameter Set)、スライスヘッダ(slice header)であり得る。一例として、マージ候補の最大数は、6個であり得る。
また、一実施形態において、拡張されたATMVP候補を示すATMVP-ext候補が、候補リストに追加されることもできる。ATMVP-extは、前述したATMVPと同様に、既存のTMVPを改善するための方法であり、空間隣接ブロックと時間隣接ブロックとを組み合わせて、サブブロック単位の動きベクトルを導出することができる。
図23は、本発明が適用される実施形態に係る拡張されたATMVP(Advanced Temporal Motion Vector Prediction)候補を導出する方法を例示する図である。
図23を参照すると、現ブロック2301の大きさが16x16である場合を仮定する。また、図23において、サブブロック単位で動きベクトルを導出することにおいて、サブブロックの大きさが4x4である場合を仮定するが、本発明がこれに制限されるものではなく、後述する8x8以上の固定された大きさで、上記サブブロックの大きさが定義されることができる。
エンコーダ/デコーダは、現ブロック2301内、それぞれのサブブロックの動きベクトルを導出するために左側水平方向および上側垂直方向の位置の空間隣接ブロックの動きベクトル、そして、右側の水平方向および下側垂直方向の位置の時間隣接ブロックの動きベクトルを用いる。
たとえば、エンコーダ/デコーダは、現ブロック2301内で、0番の位置のサブブロックのための動きベクトルを導出するために、L-0およびA-0の位置の空間隣接ブロックの動きベクトルを導出し、現ブロック2301内で、1および4位置のサブブロックの時間隣接ブロックの動きベクトルを導出し、4つの動きベクトルの平均値を計算することができる。エンコーダ/デコーダは、上記4つの動きベクトルの平均値を、現ブロック2301内で、0番の位置のサブブロックの動きベクトルとして決定することができる。一実施形態として、4つのブロックのうちの一部だけが利用可能な場合、エンコーダ/デコーダは、利用可能なブロックの動きベクトルの平均値を計算することができる。また、一実施形態として、参照インデックスは、予め設定(例えば、参照インデックス0または1、コロケイテッドピクチャ)されることができる。
一実施形態において、ATMVPモードと同様に、拡張されたATMVPモードを用いるために、エンコーダ/デコーダは、マージ候補(merge candidate)の数を増やして適用することができる。そして、そのために追加の構文(または構文要素)は、用いられないことがある。
図24および図25は、本発明が適用される実施形態に係る参照ピクチャ内における時間隣接ブロックの動きベクトルをフェッチするプロセス(fetching process)を例示する図である。
図24を参照すると、エンコーダ/デコーダは、現ブロックの時間隣接ブロックの動きベクトル(以下、時間動きベクトルと呼ばれることがある)を導出するために、メモリ(先の図1の170、図2の250)(具体的には、メモリのDPB)の参照ピクチャ(またはコロケートピクチャ)内で対応位置(corresponding position)に記憶された動き情報をフェッチ(または導出、獲得)することができる。
本発明においては、説明の便宜のために、上記メモリがDRAMである場合を中心に説明するが、これに限定されるものではなく、上記メモリは、DRAM、USB、SD、CD、DVD、Blu-ray(登録商標)、HDD、SSDなどの様々な記憶媒体を含むことができる。
実施形態として、上記参照ピクチャ(またはコロケートピクチャ)内の上記対応位置は、現ブロックの右下端(right-bottom)のブロックまたは現ブロックの中央(center)の位置(つまり、TMVP)であり得、上記現ブロックの空間隣接ブロックの動きベクトルによって特定される位置(つまり、ATMVP)であり得る。
図25を参照すると、現ブロック単位でDRAM2501から時間動きベクトルをフェッチする場合を仮定する。この場合、図25に示すように、エンコーダ/デコーダは、DRAM2501内で、現ブロックの対応位置ブロック2502に記憶された、一つの動きベクトルを時間動きベクトルとしてフェッチする。
一方、本発明の実施形態に係るATMVP(つまり、サブブロックベースの時間マージ候補)または拡張されたATMVPが適用される場合、サブブロック単位で動き情報をフェッチするため、図25に示すように、現ブロック単位1つの動き情報をフェッチすることができない。つまり、ATMVPまたは拡張されたATMVPが適用される場合、さらに多くの量のデータがDRAM2501からフェッチされなければならない。下の図を参照して説明する。
図26は、本発明が適用される実施形態に係るサブブロック単位で時間隣接ブロックの動きベクトルをフェッチするプロセス(fetching process)を示す図である。
図26を参照すると、現ブロックが4つのサブブロックに分割されて動き補償が行われる場合を仮定する。また、前述したように、本発明においては、説明の便宜のために、上記メモリがDRAM2601である場合を中心に説明するが、これに限定されるものではなく、上記メモリは、DRAM2601、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの様々な記憶媒体を含むことができる。
図26に示すように、4つのサブブロック単位で動き情報をフェッチする場合、エンコーダ/デコーダは、DRAM2601に記憶された参照ピクチャ(またはコロケートピクチャ)内で、現ブロックの対応位置ブロック2602内でそれぞれのサブブロックに対応する4つの動き情報をフェッチする。つまり、4つのサブブロック単位で動き情報をフェッチする場合、エンコーダ/デコーダは、先の図25で説明した場合に対して(に対比)DRAM2601から約4倍のデータをフェッチしなければならない。
図25および図26を比較すると、サブブロックの大きさは、DRAM2601からフェッチするデータの量に決定的な影響を及ぼしていることがわかる。したがって、サブブロックの大きさは、ハードウェア、フェッチ性能に応じてデコーダおよびエンコーダパイプライン構成およびスループット(throughput)に大きな影響を与えることができる。
アフィン動き予測(affine motion prediction)のようなサブブロックベースの動き補償方法は、導出された制御点の動きベクトルに基づいてサブブロック単位で動きベクトルが導出されるが、ATMVP、すなわち、サブブロックベースの時間マージ候補(または予測子)の場合には、参照ピクチャ(またはコロケートピクチャ)の対応ブロック内でサブブロック単位でメモリに記憶された動きベクトルを持ってくるので、類似のサブブロックベースの動き補償であっても、サブブロックの大きさに応じたハードウェア負荷(負担)は、アフィン動き予測とATMVPとで大きな違いを有する。
現ブロックを複数のサブブロックに過度に分割する場合は、フェッチを実行するメモリバス(memory bus)の大きさに応じて、複数の回数のフェッチを実行しなければならないという問題が発生することがある。
したがって、本発明においては、このような問題点を解決するために、固定された最小のサブブロックの大きさを設定(または決定、定義)し、設定されたサブブロック単位での時間動き情報のフェッチプロセスを実行する方法を提案する。
従来のATMVPまたはATVMP-extの場合、4x4の大きさのサブブロック単位で、現ブロックを分割して、フェッチおよび動き補償を行う。この場合には、前述したように現ブロックの大きさに応じて、フェッチが要求されるメモリが過度に大きくなることができる。ハードウェアの負荷が非常に大きくなることができ、圧縮性能が低下することができる。
したがって、本発明の実施形態においては、固定された8x8の大きさのサブブロックまたは固定された16x16の大きさのサブブロック単位に分割する方法を提案する。本実施形態で提案する方法は、実験の結果を通じて、ハードウェアの複雑度の向上に対して(対比)圧縮性能の損失が少ないことが証明されており、上記実験結果は、次の表2~5と同じである。
まず、下記の表2は、4x4のサブブロック単位でATMVPを実行した圧縮性能を示す。
次の表3は、8x8のサブブロック単位でATMVPを実行した圧縮性能を示す。
次の表4は、16x16のサブブロック単位でATMVPを実行した圧縮性能を示す。
次の表5は、32x32のサブブロック単位でATMVPを実行した圧縮性能を示す。
上記表2~5の実験結果を参照すると、サブブロックの大きさに応じて、圧縮効率とデコード速度との間の差がトレードオフの結果を有するが、ハードウェアの複雑度の改善に対する(対比)圧縮性能の損失が非常に少ないことを確認することができる。
本発明の実施形態において、エンコーダ/デコーダは、4x4より大きな単位、つまり、8x8、16x16または32x32単位でサブブロックベースの動き補償(つまり、ATMVP、ATMVP-ext)を行うことができ、該大きさのサブブロック単位でサブブロックベースの時間の動き情報をフェッチことができる。
本発明の実施形態によると、サブブロックベースの動き補償を行うにあたって、相対的に少ない圧縮損失に対して(対比)、高いハードウェアの複雑度の改善効果を得ることができる。
以下においては、ハードウェアの複雑度を向上(改善)させるために、本発明で提案するサブブロックベースの時間の動き情報導出方法(つまり、ATMVP、ATMVP-ext)の適用をコーディングブロックの大きさに応じて制限する方法を提案する。
本発明の実施形態において、エンコーダ/デコーダは、現ブロック(または現コーディングブロック)の幅または高さが予め定義された大きさより小さい場合、サブブロックベースの時間の動き情報導出方法(つまり、ATMVP、ATMVP-ext)を実行しないことがある。
先に図24~図26で説明した方法は、同じ面積の単位で動き情報のデータフェッチ量を減らすことにより、ハードウェアの複雑度を改善した反面、本実施形態においては、さらにワーストケース(worst case)の複雑度を改善させることができる。従来のビデオ圧縮技術は、ピクチャまたはブロックを様々な形に分割して予測および変換、その他のコーディングを行う。
これにより、コーディングブロック(コーディングユニットまたは予測ユニット)の大きさは、4x4または4x8、8x4などの小さな大きさのブロックに分割されることができる。このような場合、現ブロックの大きさが時間の動き情報(または時間動きベクトル)を、フェッチする最小のサブブロックの大きさより小さい場合が発生することができる。この場合、ハードウェア面では、最小のサブブロックの大きさではない、最小のコーディングブロックの大きさでフェッチを実行することができる。
したがって、本発明においては、このような問題を改善するために、現処理ブロックの大きさ(または現ブロックの幅および/もしくは高さ)が予め定義された最小の大きさより小さい場合、ブロック単位時間動きベクトル候補が用いられないことがある。つまり、本発明の実施形態において、エンコーダ/デコーダは、現処理ブロックの大きさ(または現ブロックの幅および/もしくは高さ)が予め定義された最小の大きさ以上の場合に限り、サブブロックベースの時間動きベクトル候補を候補リストに追加することができる。一実施形態として、次の数式3が、サブブロック単位時間動きベクトル候補を用いるための条件として用いられることができる。
<数式3>
図27は、本発明が適用される実施形態に係る候補リスト(candidate list)の生成方法を示すフローチャートである。
図27を参照すると、説明の便宜のためにデコーダを中心に説明するが、本実施形態の候補リストの生成方法は、エンコーダでも同じように実行されることができる。一実施形態において、先の図12~図17、図21~図26で説明した方法が適用されることができ、これに関する重複する説明は省略する。
図27に示された候補の構成手順は、一つの例として、本発明がこれに限定されるものではなく、順序が変更されたり、一部の段階が省略または追加されることができる。また、図27で追加される候補は、一つの例として、加えて、他の様々な候補が追加されることもあり、図27に示された候補のうちの一部の候補が使用されないことがある。
デコーダは、空間隣接ブロック(spatial neighboring block)(または空間候補(spatial candidate))を候補リストに追加する(S2701)。例えば、デコーダは、先に説明した図16の周辺候補ブロックを候補リストに追加することができる。
デコーダは、現ブロックの幅および高さが予め定義された最小の大きさより大きいか同じかを確認する(S2702)。
デコーダは、現ブロックの幅および高さが予め定義された最小の大きさ以上の場合、時間隣接ブロック(temporal neighboring block)(または時間候補(temporal candidate))を候補リストに追加する(S2703)。現ブロックの幅または高さが予め定義された最小の大きさより小さい場合、デコーダは、時間隣接ブロック(temporal neighboring block)(または時間候補(temporal candidate))を候補リストに追加しないことがある。
デコーダは、組み合わせた動き情報(または組み合わせた動きベクトル)を候補リストに追加し、ゼロ動きベクトルを候補リストに追加する(S2704、S2705)。
以上で説明した本発明の実施形態は、説明の便宜上、それぞれの実施形態を区分して説明したが、本発明がこれに限定されるものではない。つまり、先に説明した実施形態は、それぞれ独立して実行されることもあり、一つまたは複数のいくつかの実施形態が組み合わせられて実行されることもある。
図28は、本発明が適用される実施形態に係るインター予測ブロックを生成する方法を例示するフローチャートである。
図28を参照すると、説明の便宜のためにデコーダを中心に説明するが、本発明がこれに制限されるものではなく、インター予測に基づいて、インター予測ブロックを生成する方法は、エンコーダでも実質的に同じように適用されることができる。
デコーダは、現ブロックにマージモード(merge mode)が適用される場合、上記現ブロックの空間隣接ブロック(spatial neighboring block)および時間マージ候補(temporal neighboring block)を用いて、マージ候補リスト(merge candidate list)を生成する(S2801)。
デコーダは、上記マージ候補リスト内で、上記現ブロックのインター予測に用いられる候補を指示するマージインデックス(merge index)を獲得する(S2802)。
デコーダは、上記現ブロックのインター予測に用いられる候補の動きベクトルに基づいて、上記現ブロックに含まれる複数のサブブロックのそれぞれの動きベクトルを導出する(S2803)。
デコーダは、上記サブブロックのそれぞれの動きベクトルを用いて上記現ブロックの予測サンプルを生成する(S2804)。
実施形態として、上記サブブロックの大きさは、8x8以上の固定された特定の大きさに設定することができる。
実施形態としては、上記マージ候補リストを生成する段階は、上記現ブロックのコロケートピクチャ(collocated picture)内で上記空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加する段階を含むことができる。
実施形態として、上記マージ候補リストを生成する段階は、上記現ブロックのコロケートピクチャ(collocated picture)内で、上記現ブロックの空間隣接ブロックのうちの予め定義された順序上の最初の空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加する段階を含むことができる。
実施形態として、上記マージ候補リストを生成する段階は、上記現ブロックの幅および高さが予め定義された最小の大きさより小さいかどうかを確認する段階と、上記確認の結果、上記現ブロックの幅および高さが予め定義された最小の大きさ以上の場合、上記現ブロックのコロケートピクチャ(collocated picture)内で上記空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加する段階と、を含むことができる。
実施形態として、上記予め定義された最小の大きさは、上記サブブロックの大きさに設定されることができる。
図29は、本発明が適用される実施形態に係るインター予測装置を例示する図である。
図29においては、説明の便宜のために、インター予測部一つのブロックで示したが、インター予測部は、エンコーダおよび/またはデコーダに含まれる構成で実現されることができる。
図29を参照すると、インター予測部に先立ち、図8~図32で提案された機能、プロセスおよび/または方法を実現する。具体的には、インター予測部マージ候補リスト生成部2901、マージインデックス獲得部2902、サブブロックの動きベクトル導出部2903および予測ブロック生成部2904を含んで構成されることができる。
マージ候補リスト生成部2901は、現ブロックにマージモード(merge mode)が適用される場合、上記現ブロックの空間隣接ブロック(spatial neighboring block)および時間マージ候補(temporal neighboring block)を用いて、マージ候補リスト(merge candidate list)を生成する。
マージインデックス獲得部2902は、上記のマージ候補リスト内で、上記現ブロックのインター予測に用いられる候補を指示するマージインデックス(merge index)を獲得する。
サブブロックの動きベクトル導出部2903は、上記現ブロックのインター予測に用いられる候補の動きベクトルに基づいて上記現ブロックに含まれる複数のサブブロックのそれぞれの動きベクトルを導出する。
予測ブロック生成部2904は、上記サブブロックのそれぞれの動きベクトルを用いて上記現ブロックの予測サンプルを生成する。
実施形態としては、上記サブブロックの大きさは、8x8以上の固定された特定の大きさに設定することができる。
実施形態として、上記マージ候補リスト生成部2901は、上記現ブロックのコロケートピクチャ(collocated picture)内で上記空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加することができる。
実施形態として、上記マージ候補リスト生成部2901は、上記現ブロックのコロケートピクチャ(collocated picture)内で、上記現ブロックの空間隣接ブロックのうちの予め定義された順序上の最初の空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加することができる。
実施形態として、上記マージ候補リスト生成部2901は、上記現ブロックの幅および高さが予め定義された最小の大きさより小さいかどうかを確認し、上記確認の結果、上記記現ブロックの幅および高さが予め定義された最小の大きさ以上の場合、上記現ブロックのコロケートピクチャ(collocated picture)内で上記空間隣接ブロックの動きベクトルによって特定される上記現ブロックの時間隣接ブロックを上記マージ候補リストに追加することができる。
実施例として、上記予め定義された最小の大きさは、上記サブブロックの大きさに設定されることができる。
図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を参照すると、本発明が適用されるコンテンツのストリーミングシステムは、概して、エンコードサーバ、ストリーミングサーバ、Webサーバ、メディアストレージ、ユーザ装置およびマルチメディア入力装置を含むことができる。
上記エンコードサーバは、スマートフォン、カメラ、ビデオカメラなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを上記ストリーミングサーバに転送する役割を果たす。他の例として、スマートフォン、カメラ、ビデオカメラなどのマルチメディア入力装置がビットストリームを直接生成する場合、上記エンコードサーバは、省略されることができる。
上記ビットストリームは、本発明が適用されるエンコード方法またはビットストリームを生成する方法によって生成されることができ、上記ストリーミングサーバは、上記ビットストリームを転送または受信する過程で一時的に上記ビットストリームを記憶することができる。
上記ストリーミングサーバは、Web(ウェブ)サーバを介した、ユーザの要求(要請)に基づいて、マルチメディアデータをユーザ装置に転送し、上記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体の役割を果たす。ユーザが上記Webサーバに所望するサービスを要求すると、上記Webサーバは、これをストリーミングサーバに伝達し、上記ストリーミングサーバは、ユーザに、マルチメディアデータを転送する。この際、上記コンテンツのストリーミングシステムは、別の制御サーバを含むことができ、この場合、上記制御サーバは、上記コンテンツのストリーミングシステム内の各装置間のコマンド/応答を制御する役割を果たす。
上記ストリーミングサーバは、メディアストレージおよび/またはエンコードサーバからコンテンツを受信することができる。例えば、上記のエンコードサーバからコンテンツを受信することになる場合、上記コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、上記ストリーミングサーバは、上記ビットストリームを一定時間の間記憶することができる。
上記ユーザ装置の例としては、携帯電話、スマートフォン(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 Recorder)などを含むことができる。
また、本発明が適用される処理方法は、コンピュータで実行されるプログラムの形で生産されることができ、コンピュータが読み取り可能な記録媒体に記憶されることができる。本発明に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み取り可能な記録媒体に記憶されることができる。上記コンピュータが読み取り可能な記憶媒体は、コンピュータで読み取り可能なデータが記憶されるあらゆる種類のストレージ装置および分散ストレージ装置を含む。上記コンピュータが読み取り可能な記憶媒体は、例えば、ブルーレイディスク(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)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現されることができる。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で実現されることができる。ソフトウェアコードは、メモリに記憶されてプロセッサによって駆動されることができる。上記メモリは、上記プロセッサの内部または外部に位置して、既に公知の多様な手段により、上記プロセッサとデータを送受信することができる。
本発明は、本発明の必須の特徴を逸脱しない範囲で他の特定の形態で具体化されることができることは、当業者にとって自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈されてはならず、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきで、本発明の等価的範囲内におけるすべての変更は、本発明の範囲に含まれる。