以下、本明細書にかかる好ましい実施形態を添付図を参照として詳細に説明する。添付図と共に以下に開示される詳細な説明は、本明細書の例示的な実施形態を説明しようとするものであり、本明細書が実施され得る唯一の実施形態を示そうとするものではない。以下の詳細な説明は、本明細書の完全な理解を提供するために具体的な細部事項を含む。しかし、当業者は、本明細書がこのような具体的な細部事項がなくても実施され得ることを知る。
いくつかの場合、本明細書の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図の形式で示し得る。
また、本明細書で使用される用語は、できる限り現在広く使用される一般的な用語を選択しているが、特定の場合は、出願人が任意に選定した用語を使用して説明する。そのような場合は、該当部分の詳細な説明でその意味を明確に記載するので、本明細書の説明で使用された用語の名称だけで単純解釈されてはならず、その該当用語の意味まで把握して解釈されるべきであることを明らかにしておく。
以下の説明で使用される特定用語は、本明細書の理解を助けるために提供されたものであり、このような特定用語の使用は、本明細書の技術的思想を外れない範囲で他の形態に変更され得る。例えば、信号、データ、サンプル、ピクチャ、スライス、タイル、フレーム、ブロックの場合、各コーディング過程で適切に代替して解釈され得る。
以下、本明細書における「処理ユニット」は、予測、変換及び/又は量子化等のようなエンコーディング/デコーディングの処理過程が行われる単位を意味する。また、処理ユニットは、輝度(luma)成分に対する単位と色差(chroma)成分に対する単位を含む意味と解釈され得る。例えば、処理ユニットは、ブロック(block)、コーディングユニット(coding unit、CU)、予測ユニット(prediction unit、PU)又は変換ブロック(transform unit、TU)に該当し得る。
また、処理ユニットは輝度成分に対する単位又は色差成分に対する単位と解釈され得る。例えば、処理ユニットは、輝度成分に対するCTB(coding tree block)、CB(coding block)、PU又はTB(transform block)に該当し得る。或いは、処理ユニットは色差成分に対するCTB、CB、PU又はTBに該当し得る。また、これに限定されるわけではなく、処理ユニットは輝度成分に対する単位と色差成分に対する単位を含む意味と解釈されることもある。
また、処理ユニットは、必ずしも正方形のブロックに限定されるわけではなく、3つ以上の頂点を有する多角形の形態で構成されることもある。
また、以下、本明細書でピクセル、画素、又は係数(変換係数又は1次変換を経た変換係数)はサンプルと通称される。また、サンプルを利用するというのは、ピクセル値、画素値、又は係数(変換係数又は1次変換を経た変換係数)等を利用するということを意味し得る。
図1は、本明細書の実施例にかかるビデオコーディングシステムの例を示す。
ビデオコーディングシステムは、ソースデバイス10及び受信デバイス20を含むことができる。ソースデバイス10は、エンコーディングされたビデオ/画像の情報又はデータをファイル又はストリーミングの形態でデジタル保存媒体又はネットワークを介して受信デバイス20に伝達することができる。
ソースデバイス10は、ビデオソース11、エンコーディング装置12、送信機13を含むことができる。受信デバイス20は、受信機21、デコーディング装置22及びレンダラー23を含むことができる。エンコーディング装置10は、ビデオ/画像のエンコーディング装置と呼ばれ、デコーディング装置20は、ビデオ/画像のデコーディング装置と呼ばれる。送信機13は、エンコーディング装置12に含まれ得る。受信機21は、デコーディング装置22に含まれ得る。レンダラー23は、ディスプレイ部を含んでもよく、ディスプレイ部は別のデバイス又は外部のコンポーネントで構成されてもよい。
ビデオソースは、ビデオ/画像のキャプチャー、合成又は生成過程等を介してビデオ/画像を獲得することができる。ビデオソースは、ビデオ/画像のキャプチャーデバイス及び/又はビデオ/画像の生成デバイスを含むことができる。ビデオ/画像のキャプチャーデバイスは、例えば、1つ以上のカメラ、以前にキャプチャーされたビデオ/画像を含むビデオ/画像のアーカイブ等を含むことができる。ビデオ/画像の生成デバイスは、例えば、コンピュータ、タブレット、及びスマートフォン等を含むことができ(電子的に)ビデオ/画像を生成することができる。例えば、コンピュータ等を介して仮想のビデオ/画像が生成でき、この場合、関連データが生成される過程にビデオ/画像のキャプチャー過程に代えることができる。
エンコーディング装置12は、入力ビデオ/画像をエンコーディングすることができる。エンコーディング装置12は、圧縮及びコーディングの効率のために予測、変換、量子化等一連の手続を行うことができる。エンコーディングされたデータ(エンコーディングされたビデオ/画像の情報)は、ビットストリーム(bitstream)の形態で出力されることができる。
送信部13は、ビットストリームの形態で出力されたエンコーディングされたビデオ/画像の情報又はデータをファイル又はストリーミングの形態でデジタル保存媒体又はネットワークを介して、受信デバイスの受信部に伝達することができる。デジタル保存媒体は、USB(universal serial bus)、SD(secure digital)、CD(compact disk)、DVD(digital video disk)、ブルーレイ(bluray)、HDD(hard disk drive)、SSD(solid state drive)のような多様な保存媒体を含むことができる。送信部13は、予め決められたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した送信のためのエレメントを含むことができる。受信機21は、ビットストリームを抽出し、デコーディング装置22に伝達することができる。
デコーディング装置22は、エンコーディング装置12の動作に対応する逆量子化、逆変換、予測等一連の手続を行い、ビデオ/画像をデコーディングすることができる。
レンダラー23は、デコーディングされたビデオ/画像をレンダリングすることができる。レンダリングされたビデオ/画像はディスプレイ部を介してディスプレイされることができる。
図2は、本明細書の実施例にかかるビデオ/イメージ信号のエンコーディングのためのエンコーディング装置の概略的なブロック図を示す。
図2を参照すると、エンコーディング装置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は、実施例にかかって1つのハードウェアコンポーネント(例えば、エンコーダ又はプロセッサ)によって構成されることができる。また、メモリ170は、実施例にかかって1つのハードウェアコンポーネント(例えば、メモリ又はデジタル保存媒体)によって構成されることができ、メモリ170は、DPB(decoded picture buffer)175を含むことができる。
画像分割部110はエンコーディング装置100に入力された入力画像(又は、ピクチャ、フレーム)を1つ以上の処理ユニット(processing unit)に分割することができる。一例として、処理ユニットは、コーディングユニット(CU)と呼ばれる。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit、CTU)又は最大のコーディングユニット(largest coding unit、LCU)からQTBT(Quad-tree binary-tree)構造によって、再帰的に(recursively)分割されることができる。例えば、1つのコーディングユニットは、クアッドツリー構造、及び/又はバイナリツリー構造に基づいて、下位(deeper)デプスの複数のコーディングユニットに分割されることができる。この場合、例えば、クアッドツリー構造が先に適用され、バイナリツリー構造が後に適用され得る。或いは、バイナリツリー構造が先に適用されることもある。これ以上分割されない最終のコーディングユニットに基づいて、本明細書にかかるコーディング手続が行われる。この場合、画像の特性によるコーディングの効率等に基づいて、最大のコーディングユニットが直ぐに最終のコーディングユニットとして使用されることができ、或いは必要に応じて、コーディングユニットは再帰的に(recursively)より下位デプスのコーディングユニットに分割され、最適のサイズのコーディングユニットが最終のコーディングユニットとして使用されることができる。ここで、コーディング手続というのは、後述する予測、変換、及び復元などの手続を含むことができる。別の例として、処理ユニットは、予測ユニット(PU)又は変換ユニット(TU)をさらに含むことができる。この場合、予測ユニット及び変換ユニットは、それぞれ前述した最終のコーディングユニットから分割又はパーティショニングされることができる。前記予測ユニットはサンプル予測の単位であってもよく、前記変換ユニットは変換係数を誘導する単位及び/又は変換係数から残差信号(residual signal)を誘導する単位であってもよい。
ユニットは、場合によって、ブロック(block)又は領域(area)等の用語と混用して使用してもよい。一般的な場合、MxNのブロックはM個の列とN個の行とからなるサンプル又は変換係数(transform coefficient)の集合を示すことができる。サンプルは、一般的にピクセル又はピクセルの値を示すことができ、輝度(luma)成分のピクセル/ピクセル値のみを示すこともでき、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、1つのピクチャ(又は画像)をピクセル(pixel)又はペル(pel)に対応する用語として使用されることができる。
エンコーディング装置100は、入力画像信号(原本ブロック、原本サンプルアレイ)でインター予測部180又はイントラ予測部185から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算して残差信号(残余ブロック、残余サンプルアレイ)を生成することができ、生成された残差信号は変換部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)のうち少なくとも1つを含んでもよい。ここで、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、ブルーレイ、HDD、SSD等の多様な保存媒体を含むことができる。エントロピーエンコーディング部190から出力された信号は、送信する送信部(図示せず)及び/又は保存する保存部(図示せず)がエンコーディング装置100の内/外部のエレメントとして構成されてもよく、又は送信部はエントロピーエンコーディング部190の構成要素であってもよい。
量子化部130から出力された量子化された変換係数は、予測信号を生成するために利用されることができる。例えば、量子化された変換係数に対してループ内の逆量子化部140及び逆変換部150を介して逆量子化及び逆変換を適用することによって、残差信号が復元できる。加算部155は、復元された残差信号をインター予測部180又はイントラ予測部185から出力された予測信号に加えることによって、復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)が生成できる。スキップモードが適用された場合のように、処理対象のブロックに対する残差がない場合、予測されたブロックが復元ブロックとして使用できる。加算部155は、復元部又は復元ブロック生成部と称される。復元信号は、現在のピクチャ内の次の処理対象のブロックのイントラ予測のために使用されることができ、後述するようにフィルタリングを経て、次のピクチャのインター予測のために使用されることもできる。
フィルタリング部160は、復元信号にフィルタリングを適用し、主観的/客観的画質を向上させることができる。例えば、フィルタリング部160は、復元ピクチャに多様なフィルタリング方法を適用して、修正された(modified)復元ピクチャを生成することができ、修正された復元ピクチャを復号ピクチャバッファ170に送信することができる。多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)を含むことができる。フィルタリング部160は、各フィルタリング方法に関する説明で後述するように、フィルタリングに関する多様な情報を生成してエントロピーエンコーディング部190へ伝達することができる。フィルタリング関する情報は、エントロピーエンコーディング部190でエンコーディングされてビットストリームの形態で出力されることができる。
復号ピクチャバッファ170に送信された修正された復元ピクチャは、インター予測部180で参照ピクチャとして使用されることができる。エンコーディング装置100はこれを介して、インター予測が適用される場合、エンコーディング装置100とデコーディング装置200での予測ミスマッチを避けることができ、符号化の効率も向上させることができる。
復号ピクチャバッファ170は、修正された復元ピクチャをインター予測部180での参照ピクチャとして使用するために保存することができる。
図3は、本明細書の実施例として、画像信号のデコーディングのためのデコーディング装置の概略的なブロック図を示す。
図3を参照すると、デコーディング装置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つのハードウェアコンポーネント(例えば、デコーダ又はプロセッサ)により構成されることができる。また、復号ピクチャバッファ250は、実施例にかかって1つのハードウェアコンポーネント(例えば、メモリ又はデジタル保存媒体)によって実現されることができる。また、メモリ250は、DPB175を含むことができ、デジタル保存媒体によって構成されることもできる。
ビデオ/イメージの情報を含むビットストリームが入力されると、デコーディング装置200は、図2のエンコーディング装置100でビデオ/イメージの情報が処理されたプロセスに対応し、画像を復元することができる。例えば、デコーディング装置200は、エンコーディング装置100で適用された処理ユニットを利用してデコーディングを行うことができる。従って、デコーディングの際の処理ユニットは、例えば、コーディングユニットであってもよく、コーディングユニットはコーディングツリーユニット又は最大のコーディングユニットからクアッドツリー構造及び/又はバイナリツリー構造に従って分割されることができる。また、デコーディング装置200を介してデコーディング及び出力された復元画像信号は再生装置を介して再生されることができる。
デコーディング装置200は、図2のエンコーディング装置100から出力された信号をビットストリームの形態で受信することができ、受信された信号はエントロピーデコーディング部210を介してデコーディングされることができる。例えば、エントロピーデコーディング部210は、ビットストリームをパーシングして、画像復元(又はピクチャ復元)に必要な情報(例えば、ビデオ/画像の情報)を導出することができる。例えば、エントロピーデコーディング部210は、指数ゴロム符号化、CAVLC又はCABAC等のコーディング方法に基づいてビットストリーム内の情報をデコーディングし、画像の復元に必要なシンタックスエレメントの値、残差に関する変換係数の量子化された値を出力することができる。より詳細に、CABACエントロピーデコーディング方法は、ビットストリームで各構文要素に該当するビン(bin)を受信し、デコーディング対象の構文要素情報と周辺及びデコーディング対象のブロックのデコーディング情報、又は以前段階でデコーディングされたシンボル/ビンの情報を利用してコンテキスト(context)モデルを決定し、決定されたコンテキストモデルによってビンの発生確率を予測し、ビンの算術デコーディング(arithmetic decoding)を行い、各構文要素の値に該当するシンボルを生成することができる。この際、CABACエントロピーデコーディング方法は、コンテキストモデルの決定後、次のシンボル/ビンのコンテキストモデルのためにデコーディングされたシンボル/ビンの情報を利用してコンテキストモデルをアップデートすることができる。エントロピーデコーディング部210でデコーディングされた情報のうちの予測に関する情報は、予測部(インター予測部260及びイントラ予測部265)に提供され、エントロピーデコーディング部210でエントロピーデコーディングが行われた残差値、即ち、量子化された変換係数及び関連のパラメータ情報は、逆量子化部220に入力されることができる。また、エントロピーデコーディング部210でデコーディングされた情報のうちのフィルタリングに関する情報は、フィルタリング部240に提供されることができる。一方、エンコーディング装置100から出力された信号を受信する受信部(図示せず)がデコーディング装置200の内/外部のエレメントとしてさらに構成されることができ、又は受信部はエントロピーデコーディング部210の構成要素であってもよい。
逆量子化部220では、量子化された変換係数を逆量子化することによって変換係数を出力することができる。逆量子化部220は、量子化された変換係数を2次元のブロックの形態で再整列することができる。この場合、エンコーディング装置100で行われた係数のスキャン順序に基づいて再整列を行うことができる。逆量子化部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に送信することができる。多様なフィルタリング方法は、例えば、デブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset、SAO)、適応的ループフィルタ(adaptive loop filter、ALF)、両方向フィルタ(bilateral filter)等を含むことができる。
復号ピクチャバッファ250に送信された修正された復元ピクチャは、インター予測部260により参照ピクチャに使用されることができる。
本明細書で、エンコーディング装置100のフィルタリング部160、インター予測部180、及びイントラ予測部185で説明された実施例は、各々デコーディング装置のフィルタリング部240、インター予測部260、及びイントラ予測部265にも同一又は対応するように適用されることができる。
図4は、本明細書の実施例にかかるコンテンツストリーミングシステムの構造図の例を示す。
本明細書が適用されるコンテンツストリーミングシステムは、大きくエンコーディングサーバ410、ストリーミングサーバ420、ウェブサーバ430、メディアストレージ440、ユーザ装置450、及びマルチメディア入力装置460を含むことができる。
エンコーディングサーバ410は、スマートフォン、カメラ、カムコーダ等のようなマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これをストリーミングサーバ420に送信することができる。別の例として、スマートフォン、カメラ、カムコーダなどのようなマルチメディア入力装置460がビットストリームを直接生成する場合、エンコーディングサーバ410は省略され得る。
ビットストリームは、本明細書が適用されるエンコーディング方法又はビットストリーム生成方法により生成されることができ、ストリーミングサーバ420は、ビットストリームを送信又は受信する過程で、一時的にビットストリームを保存することができる。
ストリーミングサーバ420はウェブサーバ430を介したユーザの要請に基づいて、マルチメディアデータをユーザ装置450に送信し、ウェブサーバ430は、ユーザにどのサービスがあるかを知らせる媒介体の役割をする。ユーザがウェブサーバ430に希望するサービスを要請すると、ウェブサーバ430はこれをストリーミングサーバ420に伝達し、ストリーミングサーバ420はユーザにマルチメディアデータを送信する。この際、コンテンツストリーミングシステムは、別途の制御サーバを含むことができ、この場合、制御サーバは、コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割をする。
ストリーミングサーバ420は、メディアストレージ440及び/又はエンコーディングサーバ410からコンテンツを受信することができる。例えば、ストリーミングサーバ420は、エンコーディングサーバ410からコンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、ストリーミングサーバ420はビットストリームを一定時間の間に保存することができる。
例えば、ユーザ装置450は、携帯電話、スマートフォン(smart phone)、ラップトップパソコン(laptop computer)、デジタル放送用端末機、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device)、例えば、ウォッチ型端末機(smartwatch)、ガラス型端末機(smart glass)、HMD(head mounted display)、デジタルTV、デスクトップコンピュータ、デジタルサイネージを含むことができる。
コンテンツストリーミングシステム内の各サーバは、分散サーバとして運営されることができ、この場合、各サーバで受信するデータは分散処理されることができる。
図5は、本明細書の実施例にかかるビデオ信号を処理するための装置のブロック図の例を示す。図5のビデオ信号処理装置は、図2のエンコーディング装置100又は図3のデコーディング装置200に該当し得る。
本明細書の実施例にかかるビデオ信号処理装置500は、ビデオ信号を保存するメモリ520と、前記メモリと結合されつつ、ビデオ信号を処理するプロセッサ510とを含むことができる。
本明細書の実施例にかかるプロセッサ510は、ビデオ信号の処理のための少なくとも一つのプロセシング回路で構成されることができ、ビデオ信号をエンコーディング又はデコーディングのためのコマンドを実行することによって、画像信号を処理することができる。即ち、プロセッサ510は、以下説明されるエンコーディング又はデコーディング方法を実行することによって、原本ビデオ信号をエンコーディングするか、エンコーディングされたビデオ信号をデコーディングすることができる。
本発明の実施例にかかるプロセッサ510は、画像信号の処理のための少なくとも一つのプロセシング回路で構成されることができ、画像信号をエンコーディング又はデコーディングのためのコマンドを実行することによって、画像信号を処理することができる。即ち、プロセッサ510は、前述したエンコーディング又はデコーディング方法を実行することによって、原本画像データをエンコーディングするか、エンコーディングされた画像信号をデコーディングすることができる。
図6は、本明細書の実施例にかかる画像のブロックの分割構造の例として、図6aはQT(QuadTree、QT)、図6bはBT(Binary Tree、BT)、図6cはTT(Ternary Tree、TT)、図6dはAT(Asymmetric Tree、AT)によるブロックの分割構造の例を示す。
ビデオコーディングで1つのブロックはQTベースに分割されることができる。また、QTによって分割された1つのサブブロック(subblock)は、QTを使用して再帰的にさらに分割されることができる。これ以上QT分割されないリーフブロック(leaf block)は、BT、TT又はATのうち少なくとも一つの方式によって分割されることができる。BTは、horizontal BT(2NxN、2NxN)とvertical BT(Nx2N、Nx2N)の2つの形態の分割を有することができる。TTは、horizontal TT(2Nx1/2N、2NxN、2Nx1/2N)とvertical TT(1/2Nx2N、Nx2N、1/2Nx2N)の2つの形態の分割を有することができる。ATはhorizontal-up AT(2Nx1/2N、2Nx3/2N)、horizontal-down AT(2Nx3/2N、2Nx1/2N)、vertical-left AT(1/2Nx2N、3/2Nx2N)、vertical-right AT(3/2Nx2N、1/2Nx2N)の4つの形態の分割を有することができる。それぞれのBT、TT、ATは、BT、TT、ATを使用して再帰的にさらに分割されることができる。
図6aは、QTの分割の例を示す。ブロックAは、QTによって4個のサブブロック(A0、A1、A2、A3)に分割されることができる。サブブロックA1は再度QTによって4個のサブブロック(B0、B1、B2、B3)に分割されることができる。
図6bは、BTの分割の例を示す。QTによってこれ以上分割されないブロックB3は、vertical BT(C0、C1)又はhorizontal BT(D0、D1)に分割されることができる。ブロックC0のようにそれぞれのサブブロックは、horizontal BT(E0、E1)又はvertical BT(F0、F1)の形態のように再帰的にさらに分割されることができる。
図6cは、TTの分割の例を示す。QTによってこれ以上分割されないブロックB3は、vertical TT(C0、C1、C2)又はhorizontal TT(D0、D1、D2)に分割されることができる。ブロックC1のようにそれぞれのサブブロックは、horizontal TT(E0、E1、E2)又はvertical TT(F0、F1、F2)の形態のように再帰的にさらに分割されることができる。
図6dは、ATの分割の例を示す。QTによってこれ以上分割されないブロックB3は、vertical AT(C0、C1)又はhorizontal AT(D0、D1)に分割されることができる。ブロックC1のようにそれぞれのサブブロックは、horizontal AT(E0、E1)又はvertical TT(F0、F1)の形態のように再帰的にさらに分割されることができる。
一方、BT、TT、ATの分割は共に使用して分割が可能である。例えば、BTによって分割されたサブブロックは、TT又はATによる分割が可能である。また、TTによって分割されたサブブロックは、BT又はATによる分割が可能である。ATによって分割されたサブブロックは、BT又はTTによる分割が可能である。例えば、horizontal BTの分割の以降、それぞれのサブブロックがvertical BTに分割されることができ、又はvertical BTの分割の以降、それぞれのサブブロックがhorizontal BTに分割されることもできる。この場合、分割の順序は異なるが、最終的に分割される形状は同一である。
また、ブロックが分割されると、ブロックを探索する順序を多様に定義することができる。一般に、左側から右側に、上段から下段に探索を行い、ブロックを探索するというのは、各分割されたサブブロックの更なるブロックの分割可否を決定する順序を意味するか、ブロックがこれ以上分割されない場合、各サブブロックの符号化順序を意味するか、又はサブブロックから他の隣接ブロックの情報を参照する際の探索順序を意味することができる。
図7及び図8は、本明細書の実施例にかかるインター予測に基づくビデオ/画像のエンコーディング手続及びエンコーディング装置内のインター予測部を示す。
エンコーディング装置100は、現在のブロックに対するインター予測を行う(S710)。エンコーディング装置100は、現在のブロックのインター予測モード及び動き情報を導出し、現在のブロックの予測サンプルを生成することができる。ここで、インター予測モードの決定、動き情報の導出、及び予測サンプル生成手続は、同時に行われてもよく、いずれかの手続が他の手続より先に行われてもよい。例えば、エンコーディング装置100のインター予測部180は、予測モード決定部181、動き情報導出部182、予測サンプル導出部183を含むことができ、予測モード決定部181で現在のブロックに対する予測モードを決定し、動き情報導出部182から現在のブロックの動き情報を導出し、予測サンプル導出部183から現在のブロックの予測サンプルを導出することができる。例えば、エンコーディング装置100のインター予測部180は、動き推定(motion estimation)を介して参照ピクチャの一定領域(サーチ領域)内で前記現在のブロックと類似のブロックをサーチし、現在のブロックとの差が最小又は一定基準以下である参照ブロックを導出することができる。これに基づいて、前記参照ブロックが位置する参照ピクチャを指す参照ピクチャインデックスを導出し、参照ブロックと現在のブロックの位置の差異に基づいて動きベクトルを導出することができる。エンコーディング装置100は、多様な予測モードのうち現在のブロックに対して適用されるモードを決定することができる。エンコーディング装置100は、多様な予測モードに対するRD費用(cost)を比較し、現在のブロックに対する最適の予測モードを決定することができる。
例えば、エンコーディング装置100は、現在のブロックにスキップモード又はマージモードが適用される場合、後述するマージ候補リストを構成し、マージ候補リストに含まれたマージ候補の指す参照ブロックのうち、現在のブロックとの差が、最小又は一定基準以下である参照ブロックを導出することができる。この場合、導出された参照ブロックと関連したマージ候補が選択され、選択されたマージ候補を指すマージインデックス情報が生成され、デコーディング装置200にシグナリングされることができる。選択されたマージ候補の動き情報を利用し、現在のブロックの動き情報が導出できる。
別の例として、エンコーディング装置100は、現在のブロックに(A)MVPモードが適用される場合、後述する(A)MVP候補リストを構成し、(A)MVP候補リストに含まれたMVP(motion vector predictor)候補のうち選択されたMVP候補の動きベクトルを現在のブロックのMVPとして利用できる。この場合、例えば、前述した動き推定によって導出された参照ブロックを指す動きベクトルが、現在のブロックの動きベクトルとして利用されることができ、MVP候補のうち、現在のブロックの動きベクトルとの差が最も小さい動きベクトルを有するMVP候補が選択されたMVP候補になることができる。現在のブロックの動きベクトルからMVPを引いた差分であるMVD(motion vector difference)が導出できる。この場合、MVDに関する情報がデコーディング装置200にシグナリングされることができる。また、(A)MVPモードが適用される場合、参照ピクチャインデックスの値は、参照ピクチャインデックス情報構成され、別にデコーディング装置200にシグナリングされることができる。
エンコーディング装置100は、予測サンプルに基づいて残差サンプルを導出することができる(S720)。エンコーディング装置100は、現在のブロックの原本サンプルと予測サンプルとの比較を通じて、残差サンプルを導出することができる。
エンコーディング装置100は、予測情報及び残差情報を含む画像情報をエンコーディングする(S730)。エンコーディング装置100は、エンコーディングされた画像情報をビットストリームの形態で出力することができる。予測情報は、予測手続に関する情報として、予測モード情報(例えば、スキップフラグ、マージフラグ、又はモードインデックス)及び動き情報を含むことができる。動き情報は、動きベクトルを導出するための情報である候補選択情報(例えば、マージインデックス、mvpフラグ、又はmvpインデックス)を含むことができる。また、動き情報は、前述したMVDに関する情報及び/又は参照ピクチャインデックス情報を含むことができる。さらに、動き情報は、L0予測、L1予測、又は双(bi)予測が適用されるか否かを示す情報を含むことができる。残差情報は、残差サンプルに関する情報である。残差情報は、残差サンプルに対する量子化された変換係数に関する情報を含むことができる。
出力されたビットストリームは、(デジタル)保存媒体に保存されてデコーディング装置に伝達されることができ、又はネットワークを介してデコーディング装置に伝達されることもできる。
一方、前述したように、エンコーディング装置は、前記参照サンプル及び前記残差サンプルに基づいて、復元ピクチャ(復元サンプル及び復元ブロック含む)を生成することができる。これは、デコーディング装置200で行われるものと同一の予測結果をエンコーディング装置100から導出するためであり、これを介して、コーディングの効率を高めることができるためである。従って、エンコーディング装置100は、復元ピクチャ(又は復元サンプル、復元ブロック)をメモリに保存し、インター予測のための参照ピクチャとして活用できる。復元ピクチャにインループフィルタリング手続等がさらに適用できることは前述した通りである。
図9及び図10は、本明細書の実施例にかかるインター予測に基づくビデオ/画像のデコーディング手続及びデコーディング装置内のインター予測部を示す。
デコーディング装置200はエンコーディング装置100で行われた動作と対応する動作を行うことができる。デコーディング装置200は、受信された予測情報に基づいて現在のブロックに予測を行い、予測サンプルを導出することができる。
具体的に、デコーディング装置200は受信された予測情報に基づいて、現在のブロックに対する予測モードを決定することができる(S910)。デコーディング装置200は、予測情報内の予測モード情報に基づいて、現在のブロックにどんなインター予測モードが適用されるか決定できる。
例えば、デコーディング装置200はマージフラグ(merge flag)に基づいて、現在のブロックにマージモードが適用されるか、又は(A)MVPモードが決定されるか否かを決定することができる。或いは、デコーディング装置200は、モードインデックス(mode index)に基づいて、多様なインター予測モードの候補のうち一つを選択することができる。インター予測モードの候補は、スキップモード、マージモード及び/又は(A)MVPモードを含んでもよく、又は後述する多様なインター予測モードを含んでもよい。
デコーディング装置200は、決定されたインター予測モードに基づいて、現在のブロックの動き情報を導出する(S920)。例えば、デコーディング装置200は、現在のブロックにスキップモード又はマージモードが適用される場合、後述するマージ候補リストを構成し、マージ候補リストに含まれたマージ候補のうち一つのマージ候補を選択することができる。マージ候補の選択は、マージインデックス(merge index)に基づいて行われる。選択されたマージ候補の動き情報から現在のブロックの動き情報が導出できる。選択されたマージ候補の動き情報が現在のブロックの動き情報として利用されることができる。
別の例として、デコーディング装置200は、現在のブロックに(A)MVPモードが適用される場合、後述する(A)MVP候補リストを構成し、(A)MVP候補リストに含まれたMVP候補のうち選択されたMVP候補の動きベクトルを現在のブロックのMVPとして利用することができる。MVPの選択は、前述した選択情報(MVPフラグ又はMVPインデックス)に基づいて行われる。この場合、デコーディング装置200は、MVDに関する情報に基づいて前記現在のブロックのMVDを導出することができ、現在のブロックのMVPとMVDに基づいて、現在のブロックの動きベクトルを導出することができる。また、デコーディング装置200は、参照ピクチャインデックス情報に基づいて現在のブロックの参照ピクチャインデックスを導出することができる。現在のブロックに関する参照ピクチャリスト内で、参照ピクチャインデックスの指すピクチャが現在のブロックのインター予測のために参照される参照ピクチャとして導出されることができる。
一方、後述するように、候補リストの構成なしで、前記現在のブロックの動き情報が導出でき、この場合、後述する予測モードで開始された手続によって、現在のブロックの動き情報が導出できる。この場合、前述したような候補リストの構成は省略され得る。
デコーディング装置200は、現在のブロックの動き情報に基づいて、現在のブロックに対する予測サンプルを生成することができる(S930)。この場合、デコーディング装置200は、現在のブロックの参照ピクチャインデックスに基づいて参照ピクチャを導出し、現在のブロックの動きベクトルが参照ピクチャ上で指す参照ブロックのサンプルを利用し、現在のブロックの予測サンプルを導出することができる。この場合、後述するように、場合によって現在のブロックの予測サンプルのうち全て又は一部に対する予測サンプルのフィルタリング手続がさらに行われる。
例えば、デコーディング装置200のインター予測部260は、予測モード決定部261、動き情報導出部262、予測サンプル導出部263を含むことができ、予測モード決定部181で受信された予測モード情報に基づいて前記現在のブロックに対する予測モードを決定し、動き情報導出部182で受信された動き情報に関する情報に基づいて、前記現在のブロックの動き情報(動きベクトル及び/又は参照ピクチャインデックス等)を導出し、予測サンプル導出部183から前記現在のブロックの予測サンプルを導出することができる。
デコーディング装置200は受信された残差情報に基づいて、前記現在のブロックに対する残差サンプルを生成する(S940)。デコーディング装置200は、予測サンプル及び残差サンプルに基づいて現在のブロックに対する復元サンプルを生成し、これに基づいて復元ピクチャを生成することができる(S950)。以降、前記復元ピクチャにインループフィルタリング手続等がさらに適用できることは前述した通りである。
前述したようにインター予測手続は、インター予測モード決定段階、決定された予測モードによる動き情報導出段階、導出された動き情報に基づく予測実行(予測サンプルの生成)段階を含むことができる。
ピクチャ内現在のブロックの予測のために多様なインター予測モードが使用できる。例えば、マージモード、スキップモード、MVPモード、アフィン(Affine)モード等多様なモードが使用できる。DMVR(Decoder side motion vector refinement)モード、AMVR(adaptive motion vector resolution)モード等が付随的なモードにさらに使用されることができる。アフィンモードは、アフィン動き予測(affine motion prediction)モードとも呼ばれる。MVPモードは、AMVP(advanced motion vector prediction)モードとも呼ばれる。
現在のブロックのインター予測モードを指す予測モード情報がエンコーディング装置からデコーディング装置200にシグナリングされることができる。予測モード情報は、ビットストリームに含まれてデコーディング装置200で受信されることができる。予測モード情報は、多数の候補モードのうち一つを指示するインデックス情報を含むことができる。或いは、フラグ情報の階層的シグナリングを介してインター予測モードを指示することもできる。この場合、予測モード情報は、1つ以上のフラグを含むことができる。例えば、エンコーディング装置100は、スキップフラグをシグナリングしてスキップモードの適用可否を指示し、スキップモードが適用されない場合に、マージフラグをシグナリングしてマージモードの適用可否を指示し、マージモードが適用されない場合に、MVPモードが適用されるものと指示するか、更なる区分のためのフラグをさらにシグナリングすることもできる。アフィンモードは、独立したモードにシグナリングされてもよく、又はマージモード又はMVPモード等に従属的なモードにシグナリングされてもよい。例えば、アフィンモードは、後述するように、マージ候補リスト又はMVP候補リストの1つの候補で構成されることもできる。
エンコーディング装置100又はデコーディング装置200は、現在のブロックの動き情報を利用してインター予測を行うことができる。エンコーディング装置100は、動き推定(motion estimation)手続を介して、現在のブロックに対する最適の動き情報を導出することができる。例えば、エンコーディング装置100は、現在のブロックに対する原本ピクチャ内の原本ブロックを利用し、相関性の高い類似の参照ブロックを参照ピクチャ内の決められた探索範囲内で分数ピクセル単位で探索することができ、これを介して、動き情報を導出することができる。ブロックの類似性は、位相(phase)ベースのサンプル値の差に基づいて導出することができる。例えば、ブロックの類似性は、現在のブロック(又は現在のブロックのテンプレート)と参照ブロック(又は参照ブロックのテンプレート)間のSAD(sum of absolute difference)に基づいて計算されることができる。この場合、探索領域内のSADが最も小さい参照ブロックに基づいて動き情報を導出することができる。導出された動き情報は、インター予測モードに基づいて様々な方法によってデコーディング装置にシグナリングされることができる。
マージモード(merge mode)が適用される場合、現在の予測ブロックの動き情報が直接的に送信されず、周辺予測ブロックの動き情報を利用し、現在の予測ブロックの動き情報を誘導することになる。従って、エンコーディング装置100はマージモードを利用したことを知らせるフラグ情報及び周辺のどの予測ブロックを利用したかを知らせるマージインデックスを送信することによって、現在の予測ブロックの動き情報を指示することができる。
エンコーディング装置100は、マージモードを行うために、現在の予測ブロックの動き情報を誘導するために利用されるマージ候補ブロック(merge candidate block)をサーチすべきである。例えば、マージ候補ブロックは最大5個まで利用され得るが、本明細書はこれに限定されない。そして、マージ候補ブロックの最大個数はスライスヘッダで送信されることができ、本明細書はこれに限定されない。マージ候補ブロックを見付けた後、エンコーディング装置100はマージ候補リストを生成することができ、これらのうち最も小さい費用を有するマージ候補ブロックを最終のマージ候補ブロックとして選択できる。
本明細書は、マージ候補リストを構成するマージ候補ブロックに対する様々な実施例を提供する。
マージ候補リストは、例えば、5個のマージ候補ブロックを利用することができる。例えば、4個の空間的マージ候補(spatial merge candidate)と1個の時間的マージ候補(temporal merge candidate)を利用することができる。
以下、前述したインター予測のために、参照ピクチャリストを構成するための方法について説明する。
HLS(high level syntax)は、共通の情報(common information)の全般的な共有を制御するためにビデオコーディングシステムに存在する。HLSは、メモリの使用が効率的に可能なビット数を減少させるために、フレームを管理するためであることを目的とする。HLSは、参照ピクチャ管理システムを使用し、これは、参照ピクチャマーキング(reference picture marking)と称されるプロセスを呼び出す(invoke)。本プロセスは、現在のフレームのデコーディングのための有用性(usability)に応じて、各フレームをレーベリング(labeling)する。HLSを設計して実現するのにおいて、目標は現在のピクチャのデコーディングのために必要なピクチャの識別のために単純で効果的な手段を有することである。
実施例1
本実施例において、参照ピクチャリスト(reference、picture list、RPL)管理システムを紹介し、これは直接的にシグナリングされて導出される。2つのリスト(即ち、Reference Picture List0、Reference Picture List1)が使用される。2つの参照ピクチャリストを導出するための情報は、SPS(Sequence Parameter Set)、PPS(Picture Parameter Set)、及びスライスヘッダ(slice headers)でシンタックスエレメント(syntax element)としてシグナリングされる。2つのリストは、全てのタイプのスライスに対して生成される。しかしながら、I-スライスは、前記リストからいかなる情報も使用せず、反面、P-スライスは、ただList0からの情報のみを使用し、B-スライスは、前記全てのリストから情報を使用する。ピクチャは、POC(picture order count)のナンバーを使用して識別される。各ピクチャは、「LTRP(long-term-reference-picture)」又は「STRP(short-term-reference-picture)」に分類できる。LTRP又はSTRPに分類されたピクチャは、活性ピクチャ(active picture)であり、デコーディング中に使用できることを表し、非活性のピクチャ(inactive picture)は、デコーディングプロセス中に使用されないものである。
図11は、本明細書の実施例にかかる参照ピクチャリストを構成するためのフローチャートの例を示す。図11の動作は、デコーディング装置200により行われる。
図11は、参照ピクチャリストの構成プロセスの全般を示す。まず、S1105の段階で、デコーディング装置200は、リストでエントリーの全個数をパーシングする。以降、それぞれのエントリーに対して、ピクチャが参照ピクチャのマーキングプロセス(S1120)を介してLTRP又はSTRPとしてマークされる。本文書で、ピクチャに対するマーキングは、ピクチャに関する情報(パラメータ)を追加するかアップデートする動作を意味する。具体的に、デコーディング装置200は、エントリーインデックス(i)を初期化し(S1110)、エントリーインデックス(i)が全エントリーの数より小さいか等しい場合(S1115)、参照ピクチャのマーキングを行う(S1120)。また、デコーディング装置は、参照ピクチャのマーキングが完了すると、エントリーインデックス(i)をアップデートする(S1125)。本発明の実施例は、参照ピクチャの管理システムを改善するための新しい構造を提案する。
図12及び図13は、本明細書の実施例にかかる参照ピクチャのマーキングのためのフローチャートの例を示す。
表1は、参照ピクチャリストを構成するためのシンタックスの例である。ここで、本実施例は、参照ピクチャの管理のための可能な構造を提供し、ここで、ref_pic_list_structの関数は、シンタックスエレメントrpl1_same_as_rpl0_flagにより指示されるlistIdxを第1入力に受ける。即ち、もしフラグ(rpl1_same_as_rpl0_flag)が真(true)であると、これは、リストは同一であり、1つのリスト(L0又はL1)はもう1つ(L1又はL0)から類推できることを表す。ref_pic_list_struct関数の第2入力(rplsIdx)はSPSで明示されるコーディングされたビデオシーケンスで使用される参照ピクチャリストの数を表す。num_ref_entriesは、シンタックスの構造ref_pic_list_struct(listIdx,rpIsIdx)でエントリーの数を表す。各エントリーに対して、LTRPフレームが使用されると、フラグがリストでフレームがLTRP又はSTRPと取り扱われるか否かを読み取るためにパーシングされる。エントリーがSTRPであり、シンタックスの構造ref_pic_list_struct(listIdx,rpIsIdx)で一番目のSTRPエントリーであると、現在のピクチャのPOCとi番目のエントリーにより参照されるピクチャのPOCの絶対差(absolute difference)を表し、或いは、i番目のエントリーがSTRPエントリーであるが、一番目のエントリーでないと、i番目のエントリーにより参照されるピクチャのPOCと以前のSTRPにより指示されるピクチャのPOC間の絶対差を表す。(If the entry is a STRP, it is the first STRP entry in the ref_pic_list_struc(listIdx,rpIsIdx) syntax structure and it specifies the absolute difference in POC of the current picture and the picture referred to by the i-th entry or when the i-th entry is an STRP entry but not the first entry, then it specifies the absolute difference between the POC of the pictured referred to by the i-th entry and by the previous STRP).i番目のエントリーに対するabs_delta_pocが0より大きいと、STRPの符号の情報をマークするフラグがシグナルされる。しかし、もしst_ref_pic_flagが0であると、i番目のエントリーがロングターム参照ピクチャ(long term reference picture)であることを表す。LTRPは、POC LSB(least significant bit)によりシグナルされる。
表1に関するシンタックスエレメントは、下記のように定義できる。
num_ref_entries[listIdx][rplsIdx]はref_pic_list_struct(listIdx,rplsIdx)シンタックスの構造でエントリーの数を表す。num_ref_entries[listIdx][rplsIdx]の値は0からsps_max_dec_pic_buffering_minus1+14の間の値になり得る。
rpl1_same_as_rpl0_flagが1であると、シンタックスの構造num_ref_pic_lists_in_sps[1]とref_pic_list_struct(1,rplsIdx)が存在せず、以下が適用される。
- num_ref_pic_lists_in_sps[1]の値は、num_ref_pic_lists_in_sps[0]の値と同一のものと類推される。
- ref_pic_list_struct(1,rplsIdx)でそれぞれのシンタックスエレメントの値は0からnum_ref_pic_lists_in_sps[0]-1の間の値になり得るrplsIdxに対するref_pic_list_struct(0,rplsIdx)での該当シンタックスエレメントの値と同一のものと類推される。
long_term_ref_pics_flagが0であると、LTRPがCVS(coded video sequence)で、あるコーディングされたピクチャのインター予測のために使用されないことを表す。long_term_ref_pics_flagが1であると、LTRPがCVSで1つ又はそれ以上のコーディングされたピクチャのインター予測のためにLTRPが使用されることを表す。
st_ref_pic_flag[listIdx][rplsIdx][i]が1であると、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)でi番目のエントリーがSTRPエントリーであることを表す。st_ref_pic_flag[listIdx][rplsIdx][i]が0であると、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)でi番目のエントリーがLTRPエントリーであることを表す。存在しないと、st_ref_pic_flag[listIdx][rplsIdx][i]の値は1と類推される。
abs_delta_poc_st[listIdx][rplsIdx][i]は、i番目のエントリーがシンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)で一番目のSTRPであると、現在のピクチャとi番目のエントリーにより参照されるピクチャのピクチャ順序のカウント値間の絶対差を表すか、又はi番目のエントリーがSTRPエントリーであるが、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)で一番目のSTRPエントリーでないと、i番目のエントリーとシンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)で以前のSTRPにより指示されるピクチャのピクチャ順序のカウント値間の絶対差を表す。
abs_delta_poc_st[listIdx][rplsIdx][i]の値は0から215-1の間の値を有する。
strp_entry_sign_flag[listIdx][rplsIdx][i]が1であると、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)でi番目のエントリーが0より大きいか等しい値を有することを表す。strp_entry_sign_flag[listIdx][rplsIdx][i]が0であると、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)でi番目のエントリーが0より小さい値を有することを表す。存在しないと、strp_entry_sign_flag[i][j]の値は1と類推される。
poc_lsb_lt[listIdx][rplsIdx][i]は、シンタックスの構造ref_pic_list_struct(listIdx,rplsIdx)でi番目のエントリーにより参照されるピクチャのピクチャ順序カウントのモデューロ(modulo)MaxPicOrderCntLsbを表す。シンタックスエレメントpoc_lsb_lt[listIdx][rplsIdx][i]の長さは、log2_max_pic_order_cnt_lsb_minus4+4 bitsである。
前述したシンタックスエレメントの説明は、下記の表2のように整理できる。
図12を参照すると、デコーディング装置200は、該当参照ピクチャリストのエントリーでLTRPが使用されるか否かをlong_term_ref_pics_flagを介して確認し(S1205)、LTRPが使用されると(long_term_ref_pics_flagが1であると)、st_ref_pic_flagをパーシングし(S1210)、st_ref_pic_flagが真(true)であるか否かを確認する(S1215)。st_ref_pic_flagが真(true)(1)であると(即ち、現在のエントリーがSTRPに該当すると)、デコーディング装置200はabs_delta_poc_stをパーシングする。即ち、現在のエントリーがSTRPエントリーに該当すると、デコーディング装置200は現在のエントリーに関するピクチャと以前のピクチャのPOCの差異値を獲得する。
もし、1205の段階で、long_term_ref_pics_flagが偽(false)であると、デコーディング装置は直ぐにabs_delta_poc_stをパーシングする。以降、デコーディング装置200は、abs_delta_poc_stが0より大きいか否かを確認し(S1225)、abs_delta_poc_stが0より大きいと、strp_entry_sign_flagをパーシングする(S1230)。
S1215の段階で、st_ref_pic_flagが偽(false)(0)であると、デコーディング装置200は、poc_lsb_ltをパーシングする(S1235)。即ち、現在のエントリーがLTRPエントリーに該当すると、デコーディング装置200は、現在のエントリーに関するピクチャのPOC modulo値を獲得する。ピクチャのPOC modulo値は、該当ピクチャのPOC値を導出するために使用される値であって、POC MSB(most significant bit)と組み合わせてピクチャのPOC値が誘導できる。
前述した参照ピクチャリストの構成過程は、図13のように2つのブロックで表現され得る。各ブロックの動作は、同一のハードウェア又は互いに異なるハードウェアにより実現されることができる。デコーディング装置200は、エントリーの数(num_ref_entries)とロングターム参照ピクチャが使用されるか否かを表すフラグ(long_term_ref_pic_flag)を獲得し(1310)、各エントリー毎にLTRP又はSTRPであるか否かを決定することができる(1320)。
実施例2
本実施例において、表1で説明されたパラメータnum_ref_entriesを制限することを提案する。通常、num_ref_entries[listIdx][rpIsIdx]は、ref_pic_list_struct(listIdx,rpIsIdx)でエントリーの数を表す。num_ref_entriesの値が0からsps_max_dec_pic_buffering_minus1+14までの範囲の値を有し得ることが確認される。より少ないフレームが使用されるために、num_ref_entriesの範囲に対する制限が導入され得る。最悪のシナリオ(worst case scenario)は、sps_max_dec_pic_buffering_minus1により指示される値より14フレームがさらに多い場合を要求することである。これは、そのように多くのフレームを収容するために復号ピクチャバッファが充分なメモリを有することができなければならないということを意味する。代わりに、階層的ピクチャのグループ(hierarchical groups of structres (GOP)s)に対して、レイヤーのtemporalId(時間的ID)を考慮して制限が導入され得る。
更なるシンタックスが表3のように定義できる。
sps_max_dec_pic_buffering_minus1足す1は、ピクチャの格納バッファの単位でCVSに1つの復号ピクチャバッファの最大要求サイズを表す。sps_max_dec_pic_buffering_minus1の値は0からMaxDpbSize-1の間の値を有し得、MaxDpbSizeは別に定義されることができる。
即ち、参照ピクチャリストのエントリーの数は、復号ピクチャバッファの最大要求サイズで14を足した値を最大値として有し得る。また、本実施例(実施例2)にかかると、参照ピクチャリストのエントリーの数は復号ピクチャバッファの最大要求サイズを最大値として有し得る。
実施例3
本実施例において、シンタックスエレメントlong_term_ref_pics_flagをref_pic_list_struct(listIdx,rpIsIdx)から除去する方法が提案される。本シンタックスエレメント(long_term_ref_pics_flag)が0であると、これ以上LTRPがCVSでのあるコーディングされたピクチャのインター予測のために使用されないことを示す。long_term_ref_pics_flagが1であると、LTRPがCVSで1つ又はそれ以上のコーディングされたフィルタのインター予測のために使用されることを表す。シンタックスエレメントlong_term_ref_pics_flagを除去することによって、LTRPが基本的にCVSで使用されることが類推できる。これは、LTRPが普通DPBで高い信頼度のピクチャであるため有用である。
実施例4
図14は、本明細書の実施例にかかる参照ピクチャのマーキングのためのフローチャートの別の例を示す。
ref_pic_list_struct(listIdx,rpIsIdx)に対する別の実施例が提供される。特に、ref_pic_list_struct(listIdx,rpIsIdx)は、LTRPとSTRPが別にシグナリングされる場合を考慮して設定されることができる。これは、下記の表4のように表現され得る。ここで、本明細書の実施例は、使用されるSTRPの総数を表すnum_strp_entries[listIdx][rpIsIdx]と、LTRPの総数を表すnum_ltrp_entries[listIdx][rpIsIdx]を制限する方法を提供する。
図14は、LTRPとSTRPの数が別にシグナリングされる提案構造の概要を表す。ここで、STRPとLTRPの数は、long_term_ref_pics_flagによるLTRPを使用して先にパーシングされる。以降、各エントリーに対して、lt_ref_pic_flagがパーシングされ、これは、ピクチャがLTRPであるか否かを指示する。lt_ref_pic_flagが真(true)であると、LTRPに対するカウンターが増加する。そうでないと、STRPに対するカウンターが増加する。さらに、lt_ref_pic_flagが偽(false)であると、STRPはdelta_poc_stのパーシングとその符号の情報(delta_poc_stが0より大きい場合)をパーシングすることによってSTRPが確認される。そうでないと、LTRPがそのLSB POCにより確認される。
下記の表4は、本実施例にかかる参照ピクチャリストの構成のためのシンタックスの例である。
num_strp_entries[listIdx][rplsIdx]は、ref_pic_list_struct(listIdx,rplsIdx)でSTRPエントリーの数を表す。
num_ltrp_entries[listIdx][rplsIdx]は、ref_pic_list_struct(listIdx,rplsIdx)でLTRPエントリーの数を表す。
lt_ref_pic_flag[listIdx][rplsIdx]が存在しないと、lt_ref_pic_flag[listIdx][rplsIdx]の値は下記のように類推される。
num_ltrp_entries[listIdx][rplsIdx]が0であると、その値(lt_ref_pic_flag[listIdx][rplsIdx])は、0と類推される。そうでないと、numLtrps(LTRPの数)がnum_ltrp_entries[listIdx][rplsIdx]のようであるとき、0と類推され、numStrps(STRPの数)がnum_strp_entries[listIdx][rplsIdx]のようであるとき、0と類推される。
図14を参照すると、デコーディング装置200は参照リストの構成を開始し(S1405)、STRPエントリーの数(num_strp_entries)をパーシングする(S1410)。デコーディング装置200は、LTRPが使用されるか否かを確認し(S1415)、LTRPが使用されるとLTRPの数(num_ltrp_entries)をパーシングする(S1420)。デコーディング装置200は、変数i、numLtrps、numStrpsを0と初期化し(S1425)、変数iがエントリーの数(num_ref_entires)より等しいか小さいかどうかを決定し(S1430)、iがエントリーの数(num_ref_entires)より等しいか小さいと、参照ピクチャのマーキング動作を行い(S1435)、iをアップデートする(S1440)。
図15は、本明細書の実施にかかるビデオ信号を処理するためのフローチャートの例を示す。図15の動作は、デコーディング装置200により行われる。
S1510の段階で、デコーディング装置200は、ビデオ信号で現在のピクチャの参照ピクチャリストを構成する。ここで、デコーディング装置200は、参照ピクチャリストの第1エントリーがSTRPエントリーに該当すると、第1エントリーに関するピクチャと以前のピクチャのPOCの差異値(POC difference)(例:abs_delta_poc_st)を獲得し、参照ピクチャリストの第2エントリーがLTRPエントリーに該当すると、前記第2エントリーに関するピクチャのPOCのモデューロ(modulo)値(例:poc_lsb_lt)を獲得する。
一実施例において、参照ピクチャリストを構成する過程で、デコーディング装置200は、前記参照ピクチャリストのエントリーの数(num_ref_entries)を獲得し、エントリーの数だけ参照ピクチャリストのエントリーのそれぞれに対して、LTRP又はSTRPに参照ピクチャのマーキングを行うことができる。
一実施例において、エントリーの数は、復号ピクチャバッファの最大要求サイズで14を足した値(sps_max_dec_pic_buffering_minus1+14)又は復号ピクチャバッファの最大要求サイズ(sps_max_dec_pic_buffering_minus1)を最大値として有し得る。
一実施例において、参照ピクチャのマーキングを行う過程で、デコーディング装置200は、表4のようにSTRPエントリーの数(例:num_strp_entries)とLTRPエントリーの数(例:num_ltrp_entries)を獲得し、STRPエントリーの数だけSTRPのマーキングを行い、LTRPエントリーの数だけLTRPのマーキングを行うことができる。
一実施例において、参照ピクチャリストを構成する過程で、デコーディング装置200は、第1フラグを獲得し、第1フラグに基づいて参照ピクチャリストのエントリーがSTRPエントリー又はLTRPエントリーに該当するか否かを決定することができる。例えば、デコーディング装置200は、現在のエントリーに関するピクチャがSTRPに該当するか否かを指示するフラグ(例:st_ref_pic_flag)を使用し、現在のエントリーがSTRPエントリーであるか、又はLTRPエントリーであるかどうかを決定することができる。
一実施例において、POCの差異値は、以前のピクチャのPOCから前記第1エントリーに関するピクチャのPOCを引いた値の絶対値を表す。また、絶対値(POCの絶対差)(例:abs_delta_poc_st)が0より大きい場合、デコーディング装置200は、POCの差異値の符号(sign)を指示する第2フラグ(例:strp_entry_sign_flag)を獲得することができる。
S1520の段階で、デコーディング装置200は、参照ピクチャリストを使用して現在のピクチャに対する予測を行う。例えば、デコーディング装置200は、第1参照ピクチャリストL0又は第2参照ピクチャリストL1に含まれた参照ピクチャで動きベクトルにより指示されるサンプル値を使用し、予測サンプルを生成することができる。
本明細書の実施例は、参照ピクチャリストを構成するために必要な情報をエンコーディングするための方法及び装置を提供する。エンコーディング装置100は、参照ピクチャリストを構成し、参照ピクチャリストの参照ピクチャを使用して予測を行うことができる。
また、エンコーディング装置100は、参照ピクチャリストの各エントリーに対して、各エントリー別に参照ピクチャリストを構成するための情報をコーディングすることができる。例えば、参照ピクチャリストを構成するための情報は、STRPに該当するピクチャと以前のピクチャのPOCの差異値(例:abs_delta_poc_st)を含み、LTRPに該当するピクチャのPOCのモデューロ(modulo)値(例:poc_lsb_lt)を含む。
また、エンコーディング装置100は、参照ピクチャリスト内のエントリーのピクチャがSTRPであるかLTRPであるかどうかを指示するための第1フラグ(例:st_ref_pic_flag)を参照ピクチャリストを構成するための情報に含ませてコーディングすることができる。更に、POCの差異値(例:abs_delta_poc_st)が0より大きい場合、POCの差異値の符号(sign)を指示する第2フラグ(例:strp_entry_sign_flag)を含むことができる。参照ピクチャリストを構成するための情報は、SPS、PPS、又はスライスヘッダに含まれてシグナリングされることができる。
本明細書が適用される処理方法は、コンピュータで実行されるプログラムの形態で生産されることができ、コンピュータが読み取られる記録媒体に保存されることができる。本明細書にかかるデータ構造を有するマルチメディアデータもまた、コンピュータが読み取られる記録媒体に保存されることができる。前記コンピュータが読み取られる記録媒体は、コンピュータで読むことができるデータが保存される全ての種類の保存装置及び分散保存装置を含む。前記コンピュータが読み取られる記録媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピディスク、及び光学的データ保存装置を含むことができる。また、前記コンピュータが読み取られる記録媒体は、搬送波(例えば、インターネットを介した送信)の形態で実現されたメディアを含む。また、エンコーディング方法で生成されたビットストリームが、コンピュータが読み取られる記録媒体に保存されるか、有無線通信ネットワークを介して送信されることができる。
また、本明細書の実施例は、プログラムコードによるコンピュータプログラム製品で実現されることができ、前記プログラムコードは、本明細書の実施例によってコンピュータで実行されることができる。前記プログラムコードは、コンピュータによって読み取り可能なキャリア上に保存されることができる。
本明細書が適用されるデコーディング装置及びエンコーディング装置は、デジタル機器(digital device)に含まれ得る。「デジタル機器(digital device)」というのは、例えば、データ、コンテンツ、サービス等を送信、受信、処理、及び出力のうち少なくとも一つを実行可能な全てのデジタル機器を含む。ここで、デジタル機器がデータ、コンテンツ、サービス等を処理することは、データ、コンテンツ、サービス等をエンコーディング及び/又はデコーディングする動作を含む。このようなデジタル機器は、有/無線ネットワーク(wire/wireless network)を介して他のデジタル機器、外部サーバ(external server)等とペアリング又は連結(pairing or connecting)(以下「ペアリング」)されてデータを送受信し、必要に応じて変換(converting)する。
デジタル機器は、例えば、ネットワークTV(network TV)、HBBTV(Hybrid Broadcast Broadband TV)、スマートTV(Smart TV)、IPTV(internet protocol television)、PC(Personal Computer)等のような固定型機器(standing device)と、PDA(Personal Digital Assistant)、スマートフォン(Smart Phone)、タブレットPC(Tablet PC)、ノートパソコン等のようなモバイル機器(mobile device or handheld device)を全て含む。
一方、本明細書で記述される「有/無線ネットワーク」というのは、デジタル機器又はデジタル機器と外部サーバ間で相互連結又は/及びデータの送受信のために多様な通信規格乃至プロトコルを支援する通信ネットワークを通称する。このような有/無線ネットワークは、規格によって現在又は今後支援される通信ネットワークとそのための通信プロトコルを全て含むことができるが、例えば、USB(Universal Serial Bus)、CVBS(Composite Video Banking Sync)、コンポーネント、S-ビデオ(アナログ)、DVI(Digital Visual Interface)、HDMI(High Definition Multimedia Interface)、RGB、D-SUBのような有線連結のための通信規格乃至プロトコルと、ブルートゥース(Bluetooth)、RFID(Radio Frequency Identification)、赤外線通信(IrDA, infrared Data Association)、UWB(Ultra Wideband)、ジグビー(ZigBee)、DLNA(Digital Living Network Alliance)、WLAN(Wireless LAN)(Wi-Fi)、Wibro(Wireless broadband)、Wimax(World Interoperability for Microwave Access)、HSDPA(High Speed Downlink Packet Access)、LTE(Long Term Evolution)、Wi-Fiダイレクト(Direct)のような無線連結のための通信規格によって形成されることができる。
以上で説明された実施例は、本明細書の構成要素と特徴が所定の形態で結合されたものである。各構成要素又は特徴は、別途の明示的言及がない限り、選択的なものと考慮されるべきである。各構成要素又は特徴は、他の構成要素や特徴と結合されない形態で実施され得る。また、一部の構成要素及び/又は特徴を結合し、本明細書の実施例を構成することも可能である。本明細書の実施例で説明される動作の順序は変更され得る。いずれかの実施例の一部構成や特徴は他の実施例に含まれてもよく、又は他の実施例の対応する構成又は特徴と交替し得る。特許請求範囲で明示的な引用関係がない請求項を結合して実施例を構成するか、出願後の補正によって新しい請求項に含ませ得ることは自明である。
ファームウェアやソフトウェアによる実現の場合、本明細書の一実施例は、以上で説明された機能又は動作を行うモジュール、手続、関数等の形態で実現されることができる。ソフトウェアコードは、メモリに保存され、プロセッサによって駆動されることができる。前記メモリは、前記プロセッサの内部又は外部に位置し、既に公知となった多様な手段により前記プロセッサとデータをやり取りすることができる。
本明細書は、本明細書の必須的特徴を外れない範囲で、他の特定の形態で具体化できることは当業者にとって自明である。従って、前述した詳細な説明は、全ての面で制限的に解釈されてはならず、例示的なものと考慮されるべきである。本明細書の範囲は、添付された請求項の合理的解釈によって決定されなければならず、本明細書の等価的範囲内での全ての変更は、本明細書の範囲に含まれる。