本発明は多様な変更を加えることができ、さまざまな実施形態を有することができるところ、特定の実施形態を図面に例示し、詳細に説明しようとする。しかしながら、これは本発明を特定の実施形態に対して限定しようとするものではない。本明細書で使用する用語は単に特定の実施形態を説明するために使われたものであって、本発明の技術的思想を限定しようとする意図として使われるものではない。単数の表現は文脈上、明白に異なる意味として使用されない限り、複数の表現を含む。本明細書で、“含む”または“有する”などの用語は明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたものが存在することを指定しようとするものであり、1つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、またはこれらを組み合わせたものの存在または付加可能性を予め排除しないことと理解されるべきである。
一方、本発明で説明される図面上の各構成は、ビデオエンコーディング装置/デコーディング装置で互いに異なる特徴的な機能に対する説明の便宜のために独立的に示すものであって、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されるということを意味するものではない。例えば、各構成のうち二つ以上の構成が結合されて一つの構成からなることもあり、一つの構成が複数の構成に分けられることもある。各構成が統合及び/または分離された実施例も本発明の本質から外れない限り本発明に含まれる。
以下、添付図面を参照して、本発明の実施例をさらに詳細に説明する。
図1は、本発明の一実施例によるビデオエンコーディング装置を概略的に示すブロック図である。
図1を参照すると、エンコーディング装置100は、ピクチャ分割部105、予測部110、変換部115、量子化部120、再整列部125、エントロピーエンコーディング部130、逆量子化部135、逆変換部140、フィルタ部145及びメモリ150を備える。
ピクチャ分割部105は、入力されたピクチャを少なくとも一つの処理単位ブロックに分割できる。このとき、処理単位としてのブロックは、予測ユニット(Prediction Unit、PU)、または変換ユニット(Transform Unit、TU)、またはコーディングユニット(Coding Unit、CU)である。ピクチャは、複数のコーディングツリーユニット(Coding Tree Unit、CTU)で構成されることができ、各々のCTUは、クアッドツリー(quad−tree)構造でCUに分割(split)されることができる。CUは、より下位(deeper)デプスのCUにクアッドツリー構造で分割されることもできる。PU及びTUは、CUから取得されることができる。例えば、PUは、CUから対称または非対称方形構造でパーティショニング(partitioning)されることができる。また、TUは、CUからクアッドツリー構造で分割されることもできる。
予測部110は、後述のように、インター予測を実行するインター予測部とイントラ予測を実行するイントラ予測部を含む。予測部110は、ピクチャ分割部105でピクチャの処理単位に対して予測を実行することで、予測サンプル(または、予測サンプルアレイ)を含む予測ブロックを生成する。予測部110において、ピクチャの処理単位は、CU、またはTU、またはPUである。また、予測部110は、該当処理単位に対して実施される予測がインター予測か、またはイントラ予測かを決定し、各予測方法の具体的な内容(例えば、予測モード等)を定めることができる。このとき、予測が実行される処理単位と予測方法及び予測方法の具体的な内容が決められる処理単位は、異なる。例えば、予測の方法と予測モードなどは、PU単位で決定され、予測の実行は、TU単位で実行される。
インター予測を介しては現在ピクチャの以前ピクチャ及び/または以後ピクチャのうち少なくとも一つのピクチャの情報に基づいて予測を実行することで、予測ブロックを生成することができる。また、イントラ予測を介しては現在ピクチャ内のピクセル情報に基づいて予測を実行することで、予測ブロックを生成することができる。
インター予測の方法として、スキップ(skip)モード、マージ(merge)モード、AMVP(Advanced Motion Vector Prediction)などを利用することができる。インター予測では、PUに対して、参照ピクチャを選択し、PUに対応する参照ブロックを選択することができる。参照ブロックは、整数ピクセル(または、サンプル)または分数ピクセル(または、サンプル)単位で選択されることができる。また、PUとのレジデュアル(residual)信号が最小化されて動きベクトル大きさも最小になる予測ブロックが生成される。本明細書において、ピクセル(pixel)、ペル(pel)及びサンプル(sample)は、互いに混用されることができる。
予測ブロックは、整数ピクセル単位に生成されることもでき、1/2ピクセル単位または1/4ピクセル単位のように、整数以下ピクセル単位に生成されることもできる。このとき、動きベクトルも整数ピクセル以下の単位で表現されることができる。
インター予測を介して選択された参照ピクチャのインデックス、動きベクトル差分(motion vector difference、MVD)、動きベクトル予測子(motion vector predictor、MVP)、レジデュアル信号などの情報は、エントロピーエンコーディングされてデコーディング装置に伝達されることができる。スキップモードが適用される場合には、予測ブロックを復元ブロックとしてすることができるため、レジデュアルを生成、変換、量子化、送信しない。
イントラ予測を実行する場合には、PU単位で予測モードが決められてPU単位で予測が実行されることができる。また、PU単位で予測モードが決められてTU単位でイントラ予測が実行されることもできる。
イントラ予測において、予測モードは、例えば、33個の方向性予測モードと少なくとも2個以上の非方向性モードを有することができる。非方向性モードは、DC予測モード及びプラナーモード(Planar mode)を含むことができる。
イントラ予測では、参照サンプルにフィルタを適用した後、予測ブロックを生成することができる。このとき、参照サンプルにフィルタを適用するかは、現在ブロックのイントラ予測モード及び/またはサイズによって決定されることができる。
生成された予測ブロックと原本ブロックとの間のレジデュアル値(レジデュアルブロックまたはレジデュアル信号)は、変換部115に入力される。また、予測のために使用した予測モード情報、動きベクトル情報などは、レジデュアル値と共にエントロピーエンコーディング部130でエンコーディングされてデコーディング装置に伝達される。
変換部115は、変換ブロック単位でレジデュアルブロックに対する変換を実行することで、変換係数を生成する。
変換ブロックは、サンプルの長方形ブロックであって、同じ変換が適用されるブロックである。変換ブロックは、変換ユニット(TU)であり、クアッドツリー(quad tree)構造を有することができる。
変換部115は、レジデュアルブロックに適用された予測モードとブロックの大きさによって変換を実行することができる。
例えば、レジデュアルブロックにイントラ予測が適用されてブロックが4×4のレジデュアル配列(array)の場合は、レジデュアルブロックをDST(Discrete Sine Transform)を利用して変換し、その他の場合は、レジデュアルブロックをDCT(Discrete Cosine Transform)を利用して変換できる。
変換部115は、変換により変換係数の変換ブロックを生成することができる。
量子化部120は、変換部115で変換されたレジデュアル値、即ち、変換係数を量子化し、量子化された変換係数を生成することができる。量子化部120で算出された値は、逆量子化部135と再整列部125に提供される。
再整列部125は、量子化部120から提供された量子化された変換係数を再整列する。量子化された変換係数を再整列することによってエントロピーエンコーディング部130でのエンコーディング効率を上げることができる。
再整列部125は、係数スキャニング(Coefficient Scanning)方法を介して2次元ブロック形態の量子化された変換係数を1次元のベクトル形態に再整列できる。
エントロピーエンコーディング部130は、再整列部125により再整列された量子化された変換値またはコーディング過程で算出されたエンコーディングパラメータ値などに基づいてシンボル(symbol)を確率分布によってエントロピーコーディングしてビットストリーム(bitstream)を出力することができる。エントロピーエンコーディング方法は、多様な値を有するシンボルの入力を受けて、統計的重複性を除去しながら、デコーディング可能な二進数の列で表現する方法である。
ここで、シンボルとは、エンコーディング/デコーディング対象シンタックス要素(syntax element)及びコーディングパラメータ(coding parameter)、レジデュアル信号(residual signal)の値などを意味する。エンコーディングパラメータは、エンコーディング及びデコーディングに必要な媒介変数として、シンタックス要素のようにエンコーディング装置でエンコーディングされてデコーディング装置に伝達される情報だけでなく、エンコーディングまたはデコーディング過程で類推される情報を含むことができ、映像をエンコーディングしたりデコーディングしたりする時、必要な情報を意味する。エンコーディングパラメータは、例えば、イントラ/インター予測モード、移動/動きベクトル、参照映像索引、コーディングブロックパターン、残余信号有無、変換係数、量子化された変換係数、量子化パラメータ、ブロック大きさ、ブロック分割情報などの値または統計を含むことができる。また、残余信号は、原信号と予測信号の差を意味し、また、原信号と予測信号の差は、変換(transform)された形態の信号または原信号と予測信号の差が変換されて量子化された形態の信号を意味する。残余信号は、ブロック単位では残余ブロックということができ、サンプル単位では残余サンプルということができる。
エントロピーエンコーディングが適用される場合、高い発生確率を有するシンボルに少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多くの数のビットが割り当てられてシンボルが表現されることによって、エンコーディング対象シンボルに対するビット列の大きさが減少されることができる。したがって、エントロピーエンコーディングを介して映像エンコーディングの圧縮性能が高まることができる。
エントロピーエンコーディングのために指数ゴロム(exponential golomb)、CAVLC(Context−Adaptive Variable Length Coding)、CABAC(Context−Adaptive Binary Arithmetic Coding)のようなエンコーディング方法が使われることができる。例えば、エントロピーエンコーディング部130には可変長さコーディング(VLC:Variable Length Coding/Code)テーブルのようなエントロピーエンコーディングを実行するためのテーブルが格納されることができ、エントロピーエンコーディング部130は、格納された可変長さコーディング(VLC)テーブルを使用してエントロピーエンコーディングを実行することができる。また、エントロピーエンコーディング部130は、対象シンボルの二進化(binarization)方法及び対象シンボル/ビン(bin)の確率モデル(probability model)を導出(derive)した後、導出された二進化方法または確率モデルを使用してエントロピーエンコーディングを実行することもできる。
また、エントロピーエンコーディング部130は、必要な場合、送信するパラメータセット(parameter set)またはシンタックスに一定の変更を加えることもできる。
逆量子化部135は、量子化部120で量子化された値(量子化された変換係数)を逆量子化し、逆変換部140は、逆量子化部135で逆量子化された値を逆変換する。
逆量子化部135及び逆変換部140で生成されたレジデュアル値(または、レジデュアルサンプルまたはレジデュアルサンプルアレイ)と、予測部110で予測された予測ブロックと、が加算されて復元サンプル(または、復元サンプルアレイ)を含む復元ブロック(Reconstructed Block)が生成されることができる。
図1では加算器を介して、レジデュアルブロックと予測ブロックが加算されて復元ブロックが生成されると説明している。このとき、加算器は、復元ブロックを生成する別途のユニット(復元ブロック生成部)とみなされる。
フィルタ部145は、デブロッキングフィルタ、ALF(Adaptive Loop Filter)、SAO(Sample Adaptive Offset)を復元されたピクチャに適用できる。
デブロッキングフィルタは、復元されたピクチャでブロック間の境界に発生した歪曲を除去することができる。ALF(Adaptive Loop Filter)は、デブロッキングフィルタを介してブロックがフィルタリングされた後、復元された映像と元来の映像を比較した値に基づいてフィルタリングを実行することができる。ALFは、高効率を適用する場合にのみ実行されることもできる。SAOは、デブロッキングフィルタが適用されたレジデュアルブロックに対して、ピクセル単位に原本映像とのオフセット差を復元し、バンドオフセット(Band Offset)、エッジオフセット(Edge Offset)などの形態で適用される。
一方、インター予測に使われる復元ブロックに対して、フィルタ部145は、フィルタリングを適用しないこともある。
メモリ150は、フィルタ部145を介して算出された復元ブロックまたはピクチャを格納することができる。メモリ150に格納された復元ブロックまたはピクチャは、インター予測を実行する予測部110に提供されることができる。
図2は、本発明の一実施例によるビデオデコーディング装置を概略的に示すブロック図である。図2を参照すると、ビデオデコーディング装置200は、エントロピーデコーディング部210、再整列部215、逆量子化部220、逆変換部225、予測部230、フィルタ部235、メモリ240を含むことができる。
ビデオエンコーディング装置で映像ビットストリームが入力された場合、入力されたビットストリームは、ビデオエンコーディング装置で映像情報が処理された手順によってデコーディングされることができる。
エントロピーデコーディング部210は、入力されたビットストリームを確率分布によってエントロピーデコーディングし、量子化された係数(quantized coefficient)形態のシンボルを含むシンボルを生成することができる。エントロピーデコーディング方法は、二進数の列の入力を受けて各シンボルを生成する方法である。エントロピーデコーディング方法は、前述したエントロピーエンコーディング方法と同様である。
例えば、ビデオエンコーディング装置でエントロピーエンコーディングを実行するためにCAVLCなどの可変長さコーディング(Variable Length Coding:VLC、以下‘VLC’という)が使われた場合、エントロピーデコーディング部210もエンコーディング装置で使用したVLCテーブルと同じVLCテーブルで具現し、エントロピーデコーディングを実行することができる。また、ビデオエンコーディング装置でエントロピーエンコーディングを実行するためにCABACを利用した場合、エントロピーデコーディング部210は、これに対応してCABACを利用したエントロピーデコーディングを実行することができる。
より詳細に、CABACエントロピーデコーディング方法は、ビットストリームで各シンタックス要素に該当するビンを受信し、デコーディング対象シンタックス要素情報と隣接及びデコーディング対象ブロックのデコーディング情報または以前ステップでデコーディングされたシンボル/ビンの情報を利用して文脈(context)モデルを決定し、決定された文脈モデルによってビン(bin)の発生確率を予測してビンの算術デコーディング(arithmetic decoding)を実行することで、各シンタックス要素の値に該当するシンボルを生成することができる。このとき、CABACエントロピーデコーディング方法は、文脈モデル決定後、次のシンボル/ビンの文脈モデルのためにデコーディングされたシンボル/ビンの情報を利用して文脈モデルをアップデートすることができる。
エントロピーデコーディング部210でデコーディングされた情報のうち予測ブロックを生成するための情報は、予測部230に提供され、エントロピーデコーディング部210でエントロピーデコーディングが実行されたレジデュアル値、即ち、量子化された変換係数は、再整列部215に入力されることができる。
再整列部215は、エントロピーデコーディング部210でエントロピーデコーディングされたビットストリームの情報、即ち、量子化された変換係数をエンコーディング装置で再整列した方法に基づいて再整列できる。
再整列部215は、1次元ベクトル形態で表現された係数を再び2次元のブロック形態の係数に復元して再整列できる。再整列部215は、現在ブロック(変換ブロック)に適用された予測モードと変換ブロックの大きさに基づいて係数に対するスキャニングを実行することで、2次元ブロック形態の係数(量子化された変換係数)アレイ(array)を生成することができる。
逆量子化部220は、エンコーディング装置で提供された量子化パラメータと再整列されたブロックの係数値に基づいて逆量子化を実行することができる。
逆変換部225は、ビデオエンコーディング装置で実行された量子化結果に対して、エンコーディング装置の変換部が実行したDCT及びDSTに対して逆DCT及び/または逆DSTを実行することができる。
逆変換は、エンコーディング装置で決定された送信単位または映像の分割単位に基づいて実行されることができる。エンコーディング装置の変換部でDCT及び/またはDSTは、予測方法、現在ブロックの大きさ及び予測方向など、複数の情報によって選択的に実行されることができ、デコーディング装置の逆変換部225は、エンコーディング装置の変換部で実行された変換情報に基づいて逆変換を実行することができる。
予測部230は、エントロピーデコーディング部210で提供された予測ブロック生成関連情報とメモリ240で提供された以前にデコーディングされたブロック及び/またはピクチャ情報に基づいて予測サンプル(または、予測サンプルアレイ)を含む予測ブロックを生成することができる。
現在PUに対する予測モードがイントラ予測(intra prediction)モードである場合、現在ピクチャ内のピクセル情報に基づいて予測ブロックを生成するイントラ予測を実行することができる。
現在PUに対する予測モードがインター予測(inter prediction)モードである場合、現在ピクチャの以前ピクチャまたは以後ピクチャのうち少なくとも一つのピクチャに含まれている情報に基づいて現在PUに対するインター予測を実行することができる。このとき、ビデオエンコーディング装置で提供された現在PUのインター予測に必要な動き情報、例えば、動きベクトル、参照ピクチャインデックスなどに対する情報は、エンコーディング装置から受信したスキップフラグ、マージフラグなどを確認し、これに対応して誘導されることができる。
現在ピクチャに対するインター予測時、現在ブロックとのレジデュアル(residual)信号が最小化され、動きベクトル大きさも最小になるように予測ブロックを生成することができる。
一方、動き情報導出方式は、現在ブロックの予測モードによって変わることができる。インター予測のために適用される予測モードには、AMVP(Advanced Motion Vector Prediction)モード、マージ(merge)モードなどがある。
一例として、マージモードが適用される場合、エンコーディング装置及びデコーディング装置は、復元された空間的隣接ブロックの動きベクトル及び/または時間的隣接ブロックであるColブロックに対応する動きベクトルを利用し、マージ候補リストを生成することができる。マージモードではマージ候補リストから選択された候補ブロックの動きベクトルが現在ブロックの動きベクトルとして使われる。エンコーディング装置は、前記マージ候補リストに含まれている候補ブロックの中から選択された最適の動きベクトルを有する候補ブロックを指示するマージインデックスをデコーディング装置に送信できる。このとき、デコーディング装置は、前記マージインデックスを利用し、現在ブロックの動きベクトルを導出することができる。
他の例として、AMVP(Advanced Motion Vector Prediction)モードが適用される場合、エンコーディング装置及びデコーディング装置は、復元された空間的隣接ブロックの動きベクトル及び/または時間的隣接ブロックであるColブロックに対応する動きベクトルを利用し、動きベクトル予測子候補リストを生成することができる。即ち、復元された空間的隣接ブロックの動きベクトル及び/または時間的隣接ブロックであるColブロックに対応する動きベクトルは、動きベクトル候補として使われることができる。エンコーディング装置は、前記リストに含まれている動きベクトル候補の中から選択された最適の動きベクトルを指示する予測動きベクトルインデックスをデコーディング装置に送信できる。このとき、デコーディング装置は、前記動きベクトルインデックスを利用し、動きベクトル候補リストに含まれている動きベクトル候補の中から、現在ブロックの予測動きベクトルを選択することができる。
エンコーディング装置は、現在ブロックの動きベクトル(MV)と動きベクトル予測子(MVP)との間の動きベクトル差分(MVD)を求めることができ、これをエンコーディングしてデコーディング装置に送信できる。即ち、MVDは、現在ブロックのMVからMVPを引いた値として求められる。このとき、デコーディング装置は、受信された動きベクトル差分をデコーディングすることができ、デコーディングされた動きベクトル差分と動きベクトル予測子の加算を介して現在ブロックの動きベクトルを導出することができる。
また、エンコーディング装置は、参照ピクチャを指示する参照ピクチャインデックスなどをデコーディング装置に送信できる。
デコーディング装置は、隣接ブロックの動き情報を利用して現在ブロックの動きベクトルを予測し、エンコーディング装置から受信したレジデュアルを利用して現在ブロックに対する動きベクトルを誘導することができる。デコーディング装置は、誘導した動きベクトルとエンコーディング装置から受信した参照ピクチャインデックス情報に基づいて現在ブロックに対する予測ブロックを生成することができる。
他の例として、マージ(merge)モードが適用される場合、エンコーディング装置及びデコーディング装置は、復元された隣接ブロックの動き情報及び/またはColブロックの動き情報を利用し、マージ候補リストを生成することができる。即ち、エンコーディング装置及びデコーディング装置は、復元された隣接ブロック及び/またはColブロックの動き情報が存在する場合、これを現在ブロックに対するマージ候補として使用することができる。
エンコーディング装置は、マージ候補リストに含まれているマージ候補の中から、最適のエンコーディング効率を提供することができるマージ候補を現在ブロックに対する動き情報として選択できる。このとき、前記選択されたマージ候補を指示するマージインデックスがビットストリームに含まれてデコーディング装置に送信されることができる。デコーディング装置は、前記送信されたマージインデックスを利用し、マージ候補リストに含まれているマージ候補の中から一つを選択することができ、前記選択されたマージ候補を現在ブロックの動き情報として決定できる。したがって、マージモードが適用される場合、復元された隣接ブロック及び/またはColブロックに対応する動き情報が現在ブロックの動き情報としてそのまま使われることができる。デコーディング装置は、予測ブロックとエンコーディング装置から送信されるレジデュアルを加えて現在ブロックを復元することができる。
前述したAMVP及びマージモードでは、現在ブロックの動き情報を導出するために、復元された隣接ブロックの動き情報及び/またはColブロックの動き情報が使われることができる。
画面間予測に利用される他のモードのうち一つであるスキップモードの場合、隣接ブロックの情報をそのまま現在ブロックに利用できる。したがって、スキップモードの場合、エンコーディング装置は、現在ブロックの動き情報としてどのブロックの動き情報を利用するかを指示する情報外にレジデュアルなどのようなシンタックス情報をデコーディング装置に送信しない。
エンコーディング装置及びデコーディング装置は、前記導出された動き情報に基づいて現在ブロックに対する動き補償を実行することによって、現在ブロックの予測ブロックを生成することができる。ここで、予測ブロックは、現在ブロックに対する動き補償実行結果生成された、動き補償されたブロックを意味する。また、複数の動き補償されたブロックは、一つの動き補償された映像を構成することができる。
復元ブロックは、予測部230で生成された予測ブロックと逆変換部225で提供されたレジデュアルブロックとを利用して生成されることができる。図2では、加算器で予測ブロックとレジデュアルブロックが加算されて復元ブロックが生成されると説明している。このとき、加算器は、復元ブロックを生成する別途のユニット(復元ブロック生成部)とみなされる。ここで、前記復元ブロックは、前述の通り、復元サンプル(または、復元サンプルアレイ)を含み、前記予測ブロックは、予測サンプル(または、予測サンプルアレイ)を含み、前記レジデュアルブロックは、レジデュアルサンプル(または、レジデュアルサンプルアレイ)を含むことができる。したがって、復元サンプル(または、復元サンプルアレイ)は、対応する予測サンプル(または、予測サンプルアレイ)とレジデュアルサンプル(レジデュアルサンプルアレイ)が加算されて生成されると表現されることもできる。
スキップモードが適用されるブロックに対してはレジデュアルが送信されず、予測ブロックを復元ブロックとしてすることができる。
復元されたブロック及び/またはピクチャは、フィルタ部235に提供されることができる。フィルタ部235は、復元されたブロック及び/またはピクチャにデブロッキングフィルタリング、SAO(Sample Adaptive Offset)及び/またはALFなどを適用することができる。
メモリ240は、復元されたピクチャまたはブロックを格納して参照ピクチャまたは参照ブロックとして使用するようにすることができ、また、復元されたピクチャを出力部に提供できる。
デコーディング装置200に含まれているエントロピーデコーディング部210、再整列部215、逆量子化部220、逆変換部225、予測部230、フィルタ部235及びメモリ240のうち、映像のデコーディングに直接的に関連付けられた構成要素、例えば、エントロピーデコーディング部210、再整列部215、逆量子化部220、逆変換部225、予測部230、フィルタ部235などを他の構成要素と区分してデコーダまたはデコーディング部で表現できる。
また、デコーディング装置200は、ビットストリームに含まれているエンコーディングされた映像に関連付けられた情報をパーシング(parsing)する図示されないパーシング部をさらに含むことができる。パーシング部は、エントロピーデコーディング部210を含むこともでき、エントロピーデコーディング部210に含まれることもできる。また、このようなパーシング部は、デコーディング部の一つの構成要素で具現されることもできる。
図3は、現在ブロックに対してインター予測が実行される場合に利用されることができる候補ブロックの一実施例を概略的に説明する図面である。ここで、現在ブロックは、予測ブロックである。
エンコーディング装置及びデコーディング装置の予測部は、現在ブロック300の隣接所定位置の復元された隣接ブロックを候補ブロックとして利用できる。例えば、図3の例では、現在ブロックの左側に位置する二つのブロックA0 310とA1 320、及び現在ブロックの上側のセットブロックB0 330、B1 340、B2 350が空間的な(spatial)候補ブロックとして選択されることができる。ここで、A0 310は、左下側の隣接ブロック(lower left neighboring block)とも呼ばれ、A1 320は、左側の隣接ブロック(left neighboring block)とも呼ばれる。また、B0 330は右上側の隣接ブロック(upper right neighboring block)とも呼ばれ、B1 340は上側の隣接ブロック(upper neighboring block)とも呼ばれ、B2 350は左上側の隣接ブロック(upper left neighboring block)とも呼ばれる。
また、空間的に隣接するブロック外に時間的な(temporal)候補ブロックとして、前述したColブロック360が候補ブロックとして利用されることができる。Colブロック360は、ColPb(Col prediction block)とも呼ばれ、復元された参照ピクチャのうち一つであるColピクチャ(collocated picture)内で現在ブロックに対応するブロックであって、所定の相対的な位置(例えば、Colピクチャ内で前記現在ブロックと同じ位置に存在するブロックの右下側の隣接サンプル位置またはセンタ右下側のサンプル位置(sample position)から一定基準によって算術シフト(arithmetic shift)した位置に存在するブロックである。
具体的に、AMVPモードでは、候補ブロックから導出された動きベクトル予測子(MVP)候補(candidates)を含むMVP候補リスト(MVP candidate list)から現在ブロックのための最適のMVPが選択される。この場合、エンコーディング装置では、動き推定を実行して導出された現在ブロックのMVに基づいてMVP候補リストから最適のMVPを導出(derive)し、前記MVからMVPを引いたMVDを計算する。エンコーディング装置は、前記MVP候補リストに含まれるMVP候補のうちどのMVP候補が現在ブロックに対するMVPかを示すMVPインデックス情報、及び前記求めたMVDのx軸値及びy軸値を示すMVD情報をエンコーディングしてビットストリームを介してデコーディング装置に送信する。
デコーディング装置は、エンコーディング装置から送信されたMVPインデックス情報及びMVD情報に基づいてMVP候補リストから現在ブロックに対するMVPを導出することができ、導出されたMVPにMVDを加えて現在ブロックのMVを導出することができる。また、現在ブロックのMVに基づいて参照ピクチャ上の参照ブロックを導出し、前記参照ブロックを現在ブロックに対する予測ブロックとして利用できる。即ち、前記参照ブロック内のサンプルを現在ブロックに対する予測サンプルとして利用できる。デコーディング装置は、エンコーディング装置からレジデュアルサンプルに対する情報を受信してレジデュアルサンプルを生成することができる。前記レジデュアルサンプルに対する情報は、変換係数に対する情報を含むことができる。具体的に、例えば、デコーディング装置は、エンコーディング装置からビットストリームを介して変換係数を受信し、前記変換係数を逆変換してレジデュアルブロック(または、レジデュアルサンプル)を生成することができる。ここで、レジデュアルサンプルは、原本サンプルと予測サンプルとの間の差を示すことができ、レジデュアルブロックは、原本サンプルを含む原本ブロックと予測サンプルを含む予測ブロックとの間の差を示すことができる。
動きベクトルは、整数単位以下のサンプル解像度(resolution)を有することができる。例えば、ルマ成分に対して1/4サンプル解像度を有することができる。したがって、参照ピクチャ上で補間(interpolation)を介して整数サンプル(integer sample or fulls ample)から1/4単位分数サンプル(fractional sample)を生成し、分数サンプルを含む領域から参照ブロックを選択することによって、現在ブロックに類似する参照ブロックを示すことができる。
整数単位以下の分数サンプルは、整数サンプルに基づいて補間フィルタを介して生成されることができる。前述の通り、ルマ成分サンプル(以下、ルマサンプル)の場合、動きベクトルの解像度は、1/4分数サンプルであり、エンコーディング装置及びデコーディング装置は、補間を介して1/4サンプル単位に整数以下単位のサンプル情報を生成することができる。例えば、ルマサンプルに対する補間を実行するために、フィルタ係数が異なる8タブ補間フィルタが使われることができる。
図4は、インター予測において、1/4分数単位サンプル補間に対する整数サンプルと分数サンプルの位置を概略的に示す。図4に示すサンプルの位置のうち、陰影で表示(または、大文字で表示)された位置は、整数サンプルに対応し、陰影無しで表示(または、小文字で表示)された位置は、分数サンプルに対応する。
以下の表1は、サンプル位置によるフィルタ係数(filter coefficients)の例を示す。例えば、前記フィルタ係数は、ルマ成分のサンプルに適用されることができる。
例えば、図4の分数サンプルは、前記フィルタ係数に基づいて8タブフィルタを適用して導出されることができる。
このように分数サンプル単位で参照ブロックを検出し、分数サンプル単位のMVを導出し、より精密にインター予測を実行することができ、この場合、レジデュアル信号に割り当てられるデータ量を減らすことができる。ただし、この場合、MVDも分数サンプル単位で指示されなければならず、MVDに割り当てられるデータ量が相対的に増加するようになる。
一方、適応的に動きベクトルの範囲(range)または解像度(resolution)を調節することによってコーディング効率を上げることもできる。これはAMVR(adaptive motion vector range)とも呼ばれ、付加情報(side information)を減らすために1/2分数サンプル(または、ハーフサンプル)単位や整数サンプル単位などでMVが決定されることもできる。この場合、全体範囲で均一な分数サンプル単位または整数サンプル単位などを使用することもでき、または、領域によって適応的にサンプル単位の範囲(range)を異なるように設定することもできる。前者は、線形(linear)AMVRとも呼ばれ、後者は、非線形(non−linear)AMVRとも呼ばれる。
AMVRに基づいてMVを誘導する方法は、例えば、下記の通りである。
図5は、AMVRに基づいてMVを誘導する方法の一例を示す。図5に開示した方法は、デコーディング装置により実行されることができる。
図5を参照すると、デコーディング装置は、現在ブロックの空間的隣接ブロック及び時間的対応ブロックに基づいて構成されたMVP候補リストの中から一つのMVPを誘導する。ここで、MVPは、前記空間的隣接ブロック及び時間的対応ブロックのうち一つのブロックのMVであり、したがって、元来1/4分数ペル単位である。デコーディング装置は、四捨五入手順を介して整数ペル単位のMVPを誘導する。
MVDは、整数ペル(pel)単位で受信されることができ、この場合、デコーディング装置は、前記受信されたMVDをスケールアップする。デコーディング装置は、1/4分数ペル単位と区分するためにMVDの値をスケールアップして整数ペル単位のMVDを導出する。即ち、1/4ペル単位のMVDの値1は1/4分数ペルを示し、値4は1整数ペルを示すことができ、デコーディング装置は、スケールアップを介して整数ペル単位のMVDの値1が1整数ペルを示し、値4は4整数ペルを示すようにすることができる。
デコーディング装置は、前記整数ペル単位のMVPと前記整数ペル単位のMVDに基づいて整数ペル単位のMVを導出する。この場合、デコーディング装置は、前記整数ペル単位のMVPと前記整数ペル単位のMVDを加算して前記整数ペル単位のMVを導出することができる。前述の通り、本明細書において、ピクセル(pixel)、ペル(pel)及びサンプル(sample)は、互いに混用されることができる。
一方、エンコーディング装置は、動き推定(motion estimation)を介して最適のRDコスト(rate−distortion cost)を有するサンプルポジションを探して第1(臨時)のMVを決定する。この場合、前記第1のMVは、分数ペル単位のMVである。また、エンコーディング装置は、デコーディング装置と同じ方法でAMVP候補リストを生成して第1のMVPを誘導する。この場合、前記第1のMVPは、分数ペル単位である。エンコーディング装置は、前記第1のMVPを四捨五入変換して整数ペル単位の第2のMVPを誘導する。
エンコーディング装置は、前記第1のMVと前記第1のMVPとの差分値に基づいて第1のMVDを生成した後、前記第1のMVDを四捨五入変換して整数ペル単位の第2のMVDを誘導する。
エンコーディング装置は、前記第2のMVPと前記第2のMVDの加算に基づいて整数ペル単位の第2のMVを誘導する。
エンコーディング装置は、前記第1のMVに基づくRDコストと前記第2のMVに基づくRDコストを比較し、より良いRDコストを有する(即ち、RDコストがより低い)モードを選択する。この場合、前記第1のMVに基づいて予測を実行するモードは、一般(normal)モードとも呼ばれ、前記第2のMVに基づいて予測を実行するモードは、AMVRモードとも呼ばれる。
即ち、AMVRは、MVを整数ペル単位で表現し、コーディングされるMVDの絶対的な大きさ(即ち、ビット量)を減らす方法である。前記MVDは、例えば、以下の表2のようなシンタックス(syntax)を介して送信されることができる。前記シンタックスは、ビットストリームに含まれて送信されることができる。
表2を参照すると、abs_mvd_grater0_flag[0/1]は、動きベクトル差分のx成分/y成分の絶対値が0より大きいかどうかを示す。
abs_mvd_grater1_flag[0/1]は、動きベクトル差分のx成分/y成分の絶対値が1より大きいかどうかを示す。abs_mvd_grater1_flag[0/1]は、abs_mvd_grater0_flag[0/1]がトルー(true)である場合(即ち、abs_mvd_grater0_flag[0/1]の値が1である場合)に送受信及びパーシングされることができる。
abs_mvd_minus2[0/1]に2を加えた値は、動きベクトル差分のx成分/y成分の絶対値を示す。abs_mvd_minus2[0/1]は、abs_mvd_grater1_flag[0/1]がトルーである場合(即ち、abs_mvd_grater1_flag[0/1]の値が1である場合)に送受信及びパーシングされることができる。
mvd_sign_flag[0/1]は、動きベクトル差分のx成分/y成分の符号(sign)を示す。mvd_sign_flag[0/1]の値が0である場合、該当動きベクトル差分のx成分/y成分が正の値(positive value)を有する。mvd_sign_flag[0/1]の値が1である場合、該当動きベクトル差分のx成分/y成分が負の値(negative value)を有する。mvd_sign_flag[0/1]は、abs_mvd_grater1_flag[0/1]は、abs_mvd_grater0_flag[0/1]がトルー(true)である場合(即ち、abs_mvd_grater0_flag[0/1]の値が1である場合)に送受信及びパーシングされることができる。
AMVRが適用される場合、前記のようなシンタックス要素(syntax elements)を利用してMVDを示すとき、整数ペル単位で示すことができるため、MVDの絶対値が小さくなる効果があって、送信されるビットを節減することができる。
また、本発明によると、このようなビット節減効果を高めるために、非線形のMV範囲を適用することができる。本発明によると、予測値の相関関係(correlation)が高い範囲には整数ペル単位またはそれ以上の単位を使用してエネルギー圧縮(energy compaction)を高め、相対的に予測値の相関関係が弱い範囲には整数ペルだけでなく、範囲によってハーフペル、クォーターペル位置までを適応的に示すようにして予測の正確度を維持しながらビット節減効果を得ることができる。
実施例1
本発明の実施例1では、線形MVD範囲を維持しながらMVDのエネルギー圧縮を効率的にすることで、より効率的なビット送信を実行することができる方法が提供される。
図6は、線形範囲(linear range)を有するAVMR方法を示す。
図6を参照すると、線形MVD範囲は、クォーターペル単位のMVD値を4の倍数に切り捨てた後、4にスケールダウンする方法に基づいている。即ち、この場合、例えば、−4乃至−1の値を有するクォーターペル単位のMVDは、−1値を有する整数ペル単位のMVDになり、0乃至3の値を有するクォーターペル単位のMVDは、0値を有する整数ペル単位のMVDになり、4乃至7の値を有するクォーターペル単位のMVDは、1値を有する整数ペル単位のMVDになる。
一方、前記表2で説明の通り、MVD関連シンタックスでは、MVDの絶対値の大きさが0より大きいかどうかを確認した後、0より大きくない場合、0値を有するabs_mvd_grater0_flag1ビットを送信する。それに対し、MVDの絶対値の大きさが0より大きい場合は、追加で1より大きいかどうかを確認し、1より大きくない場合、0値を有するabs_mvd_grater1_flag1ビットを追加送信する。それに対し、前記二つの場合を両方とも満たさない場合(即ち、MVDが2より大きく、または同じ場合)にはMVDの絶対値から2を引いた値を1次指数ゴロムに基づいてコーディングして送信する。このような理由で、図6のように範囲が正数側にかたよる場合、MVDの値が正数かまたは負数かによってコーディング効率が変わる不均衡が存在するようになる。例えば、クォーターペル単位のMVDの値が3である場合、その値は、0に代表されて4単位にスケールダウンされた0値が指示されなければならないため、エンコーディング装置は、0値を有するabs_mvd_grater0_flag1ビットを送信する。しかし、もし、クォーターペル単位のMVDの値が−3である場合、その値は、−4に代表されて4単位にスケールダウンされた−3値が指示されなければならない。この場合、エンコーディング装置は、1値を有するabs_mvd_grater0_flag1ビット及び0値を有するabs_mvd_grater1_flag1ビットの総2ビットが送信されなければならない。このような不均衡を解決するために、下記の図7のようにバランスが保たれている(balanced)線形範囲を使用することができる。
図7は、バランスが保たれている線形範囲(balanced linear range)を有するAVMR方法を示す。
図7を参照すると、バランスが保たれている線形MVD範囲は、クォーターペル単位のMVD値+2を4の倍数に切り捨てた後、4にスケールダウンする方法に基づいている。即ち、この場合、例えば、−6乃至−3の値を有するクォーターペル単位のMVDは、代表値−4に代表されて−1値を有する整数ペル単位のMVDになり、−2乃至1の値を有するクォーターペル単位のMVDは、代表値0に代表されて0値を有する整数ペル単位のMVDになり、2乃至5の値を有するクォーターペル単位のMVDは、代表値4に代表されて1値を有する整数ペル単位のMVDになる。一方、これは例示に過ぎず、バランスが保たれている線形MVD範囲は、クォーターペル単位のMVD値+1を4の倍数に切り捨てた後、4にスケールダウンする方法に基づくことも可能である。
前記の通り、AMVR方法で使われる線形範囲を調整することによって、MVDの値が正数かまたは負数かによってコーディング効率が変わる不均衡を改善することができる。
実施例2
また、本発明の実施例2では、線形MVD範囲の代わりに非線形MVD範囲を適用し、abs_mvd_grater0_flagまたはabs_mvd_grater1_flagが使われる比率を高めることによって、送信されるべきビット量を節減する方法が提供される。
図8は、非線形範囲を有するAVMR方法の一例を示す。
図8を参照すると、非線形MVD範囲は、クォーターペル単位のMVD値を−1、0、1にスケールダウン可能な範囲は8単位に基づいており、残りの範囲は4単位に基づいている。即ち、中央領域に対してはクォーターペル単位のMVD値+4を8の倍数に切り捨てた後、8にスケールダウンする方法に基づいている。例えば、−12乃至−5の値を有するクォーターペル単位のMVDは、代表値−8に代表されてスケールダウンされて−1値を有する整数ペル単位のMVDになり、−4乃至3の値を有するクォーターペル単位のMVDは、代表値0に代表されてスケールダウンされて0値を有する整数ペル単位のMVDになり、4乃至11の値を有するクォーターペル単位のMVDは、代表値8に代表されてスケールダウンされて1値を有する整数ペル単位のMVDになる。
前記の通り、非線形MVD範囲を構成する場合、非線形範囲に属するMVDは、該当範囲の代表値で表現されて範囲による適応的スケールダウンを実行した後の値がコーディングされてビットストリームを介して送信される。この場合、コーディングされて送信されるMVD値の0または1で表現される比率を高めてエネルギー圧縮を向上させることができる。
一方、前記のような非線形AMVRは、以下の表のようにnon_linear_amvr_range_flagシンタックス要素を介して指示されることができる。
表3を参照すると、amvr_enable_flagは、AMVRモードが可用であるかどうかを示す。non_linear_amvr_range_flagは、非線形AMVR範囲が適用されるかどうかを示す。前記non_linear_amvr_range_flagは、前記amvr_enable_flagの値が1である場合に送受信及びパーシングされることができる。前記表3に開示されたシンタックスは、例えば、SPS(sequence parameter set)シンタックスに含まれることができる。
前記non_linear_amvr_range_flagの値が0である場合、非線形AMVR範囲が適用されない。即ち、この場合、MVDを表現するにあたって、線形AMVR範囲が適用される。それに対し、前記non_linear_amvr_range_flagの値が1である場合、非線形AMVR範囲が適用されることができる。即ち、デコーディング装置は、前記non_linear_amvr_range_flagに基づいて非線形AMVR範囲が適用されるかどうかを決定することができる。
基本的に、デコーディング装置は、非線形範囲に対する情報と範囲代表値情報を知っており、前記non_linear_amvr_range_flagの値が1である場合、他の追加的な情報がない場合、あらかじめ決定されたデフォルト非線形範囲を使用することができる。
実施例3
また、本発明の実施例3では、前述した本発明の実施例2に加えて、具体的な非線形AMVR範囲を指示することができる方法を提供する。
前述の通り、amvr_enable_flagの値が1である場合、non_linear_amvr_range_flagを介して線形AMVR範囲が使われるか、または非線形AMVR範囲が使われるかを指示することができる。
前述した実施例2では、デコーディング装置に非線形範囲のデフォルト値があらかじめ設定されており、デコーディング装置は、non_linear_amvr_range_flagの値が1である場合、前記デフォルト非線形範囲を使用することができたが、本実施例では、以下の表のように非線形AMVR範囲関連パラメータを送信することで、デコーディング装置に非線形AMVR範囲を適応的に知らせることができる。
ここで、sps_amvr_enable_flagは、AMVRモードが可用であるかどうかを示す。前記sps_amvr_enable_flagは、amvr_enable_flagと混用されることもできる。non_linear_amvr_range_flagは、非線形AMVR範囲が適用されるかどうかを示す。前記non_linear_amvr_range_flagは、前記sps_amvr_enable_flagの値が1である場合に送受信及びパーシングされることができる。
一方、前記non_linear_amvr_range_flagの値が1である場合(即ち、前記sps_amvr_enable_flagの値が1であり、前記non_linear_amvr_range_flagの値が1である場合)、non_linear_amvr_range_paramterシンタックスがさらに送受信及びパーシング/呼び出されることもできる。前記non_linear_amvr_range_parameterシンタックスは、前記非線形AMVR範囲関連パラメータを示す。前記非線形AMVR範囲関連パラメータは、例えば、3個の範囲に分けられ、各位置による範囲値とその範囲の代表値を指示することができる。前記非線形AMVR範囲関連パラメータは、例えば、下記のようなシンタックス要素を含むことができる。
ここで、num_non_linear_range_table_candidateは、非線形範囲テーブル候補の個数を示す。前記非線形範囲テーブル候補毎にfirst_range_value、first_range_representative_value、second_range_value、second_range_representative_value、third_range_value及びthird_range_representative_valueを含むことができる。エンコーディング装置は、範囲テーブルインデックスを介して前記非線形範囲テーブル候補のうち一つを指示することができる。一方、もし、一つの非線形範囲テーブルが一つまたは固定された個数が使われる場合、前記num_non_linear_range_table_candidateは省略されることができる。
前記first_range_value、前記second_range_value及び前記third_range_valueは、0を中心とする第1の範囲値、第2の範囲値及び第3の範囲値を各々示す。ここで、前記第1の範囲は、0を含む範囲である。前記first_range_value、second_range_value及びthird_range_valueは、各々、0以上の値を示すことができる。
また、first_range_representative_value、second_range_representative_value及びthird_range_representative_valueは、各々、関連範囲の代表値を示す。
例えば、前記first_range_valueの値がaであり、前記first_range_representative_valueの値が0である場合、−a≦MVD<aである範囲(0を含む)が前記第1の範囲になり、前記第1の範囲の代表値は0になる。また、前記前記second_range_valueの値がbであり、前記second_range_representative_valueの値がmである場合、−b≦MVD<−a及びa≦MVD<bが前記第2の範囲になり、前記第2の範囲の代表値は各々−m及びmになる。また、前記third_range_valueの値がcであり、前記third_range_representative_valueの値がnである場合、−c≦MVD<−b及びb≦MVD<cが前記第3の範囲になり、前記第3の範囲の代表値は各々−n及びnになる。
図9は、本発明による非線形AVMR範囲パラメータシンタックスをパーシングして非線形AMVRを構成した例を示す。図9では、説明の重複を避けるために正数ドメインを中心にして図示及び説明する。
図9の(a)を参照すると、前記first_range_valueの値は6であり、前記first_range_representative_valueの値は0であり、前記second_range_valueの値は10であり、前記second_range_representative_valueの値は8であり、前記third_range_valueの値は14であり、前記third_range_representative_valueの値は12である。この場合、第1の範囲は−6≦MVD<6であり、前記第1の範囲に対する代表値は0である。正数ドメインの第2の範囲は6≦MVD<10であり、前記第2の範囲に対する代表値は8である。正数ドメインの第3の範囲は10≦MVD<14であり、前記第3の範囲に対する代表値は12である。前記第1の範囲乃至第3の範囲に対する代表値は、各々、スケールダウンされ、0、1及び2に対応されることができる。この場合、(a)に示すように非線形AMVR範囲が導出されることができる。一方、ここで、etcで表記された部分(例えば、範囲13乃至17)は、前記第1乃至第3の範囲外の残りの範囲を示し、前記残りの範囲は、あらかじめ定義された基準によって設定されることができる。
一方、図9の(b)を参照すると、前記first_range_valueの値は4であり、前記first_range_representative_valueの値は0であり、前記second_range_valueの値は12であり、前記second_range_representative_valueの値は8であり、前記third_range_valueの値は16であり、前記third_range_representative_valueの値は14である。この場合、第1の範囲は−4≦MVD<4であり、前記第1の範囲に対する代表値は0である。正数ドメインの第2の範囲は4≦MVD<12であり、前記第2の範囲に対する代表値は8である。正数ドメインの第3の範囲は12≦MVD<16であり、前記第3の範囲に対する代表値は14である。前記第1の範囲乃至第3の範囲に対する代表値は、各々、スケールダウンされ、0、1及び2に対応されることができる。この場合、(a)に示すように非線形AMVR範囲が導出されることができる。
一方、前述の通り、複数個の非線形範囲テーブル候補が存在する場合、エンコーディング装置は、範囲テーブルインデックスに基づいて前記候補のうち一つを指示することができ、デコーディング装置は、前記範囲テーブルインデックスを受信及びパーシングして前記候補のうち一つを選択することができる。前記範囲テーブルインデックスは、例えば、下記のようなシンタックスを介して送信されることができる。
ここで、slice_non_linear_ambr_range_table_idxは、前述した範囲テーブルインデックスを示すことができる。前記slice_non_linear_ambr_range_table_idxは、前記表4で詳述したnon_linear_amvr_range_flag(または、sps_non_linear_amvr_flag)の値が1である場合に送受信及びパーシングされることができる。
前記slice_non_linear_ambr_range_table_idxは、スライスヘッダ段で送信されることができる。即ち、前記slice_non_linear_ambr_range_table_idxシンタックス要素は、現在ブロックを含むスライスに対するスライスセグメントヘッダシンタックスを介して送信されることができる。ここで、現在ブロックは、PUまたはPBである。
デコーディング装置は、前記slice_non_linear_ambr_range_table_idxが示すインデックスに対応する非線形範囲テーブル候補に対する範囲値に基づいてMVDを導出することができる。
実施例4
また、本発明の実施例4では、前述した実施例3の拡張であって、MVDの表現単位を範囲によって適応的に変更できる。この場合、MVDの表現単位は、整数ペル単位、ハーフペル単位、クォーターペル単位などで適応的に変更されることができる。
図10は、適応的なMVD精密度(precision)を有する非線形AMVR方法の一例を示す。
図10を参照すると、−8≦MVD<8範囲は整数ペル精密度を有し、−18≦MVD<−8範囲及び8≦MVD<18範囲はハーフペル精密度を有し、−24≦MVD<−18範囲及び18≦MVD<24範囲はクォーターペル精密度を有するように設定された。即ち、この場合、エンコーディング装置は、−8≦MVD<8範囲では整数ペル精密度でMVDを導出し、−18≦MVD<−8範囲及び8≦MVD<18範囲ではハーフペル精密度でMVDを導出し、−24≦MVD<−18範囲及び18≦MVD<24範囲ではクォーターペル精密度でMVDを導出することができる。それによって、エンコーディング装置は、RD最適化過程で歪曲(distortion)と率(rate)関係によって予測されたMVが、相関関係が高い範囲に属している場合、整数ペル単位で推定及び表現してMVDのビット量を減らし、それに対し、相関関係が低い範囲に属している場合より低い単位(例えば、ハーフペルまたはクォーターペル単位)で推定及び表現して歪曲をさらに減らすことができる。
図11は、本発明による適応的なMVD精密度によるMVD導出のための方法を例示的に示す。図11の方法は、デコーディング装置により実行されることができる。
図11を参照すると、デコーディング装置は、MVDをパーシングする(S1100)。ここで、MVDをパーシングするとは、MVD関連シンタックスを受信及びパーシングすることを含む。
デコーディング装置は、前記MVDのコーディングされた値が属する範囲に基づいて前記MVDが整数ペル精密度を有するかどうかを確認する(S1110)。
もし、S1110において、前記MVDが整数ペル精密度を有する場合、デコーディング装置は、整数ペル精密度を考慮して前記MVDのコーディングされた値に対する代表値を導出する(S1120)。
もし、S1110において、前記MVDが整数ペル精密度を有さない場合、デコーディング装置は、前記MVDのコーディングされた値が属する範囲に基づいて前記MVDがハーフペル精密度を有するかどうかを確認する(S1130)。
もし、S1130において、前記MVDがハーフペル精密度を有する場合、デコーディング装置は、前記ハーフペル精密度を考慮して前記MVDのコーディングされた値に対する代表値を導出する(S1140)。
もし、S1130において、前記MVDがハーフペル精密度を有さない場合、これは前記MVDがクォーターペル精密度を有する場合に該当し、デコーディング装置は、前記クォーターペル精密度を考慮して前記MVDのコーディングされた値に対する代表値を導出する(S1150)。
前述したデコーディング方法は、例えば、下記の図面のように示すことができる。
図12乃至図14は、本発明による整数ペル精密度、ハーフペル精密度、またはクォーターペル精密度でのMVD値デコーディング方法を例示的に示す。
図12乃至図14において、−8≦MVD<8範囲は整数ペル精密度を有し、8≦MVD<18範囲はハーフペル精密度を有し、18≦MVD<24範囲はクォーターペル精密度を有するように設定された。また、図12乃至図14では、非線形AMVRが適用された場合を仮定する。
図12を参照すると、MVDの元の値が5である場合、前記5は、代表値0で表現されて0値にエンコーディングされ、デコーディング装置は、前記エンコーディングされた0値をデコーディングして0値を取得する。デコーディング装置は、前記0のMVDをMVPと加算して現在ブロックに対するMVを導出することができる。
また、図13を参照すると、MVDの元の値が11である場合、前記11は代表値10で表現され、前記10はスケールダウンされて1値にエンコーディングされ、デコーディング装置は、前記エンコーディングされた1値をデコーディングし、スケールアップして前記MVD値として10を取得する。
また、図14を参照すると、MVDの値が21である場合、前記21の代表値は21であり、もし、19から範囲が1である場合、前記21は6の値にエンコーディングされる。これは0を基準点にして、7までは0値にエンコーディングされ、8乃至13は1値にエンコーディングされ、14乃至17は2値にエンコーディングされることができ、19からは範囲が1に設定されているため、順次に、18は3値にエンコーディングされ、19は4値にエンコーディングされ、20は5値にエンコーディングされ、21は6値にエンコーディングされることができる。この場合、デコーディング装置は、前記エンコーディングされた6値をデコーディングし、前記コーディングされた値6に対応するMVD値として21の値を取得することができる。
または、前記19以後からデフォルトとして範囲が4に設定されている場合、前記21の代表値は、例えば、20になることができ、前記20は3値にエンコーディングされることができる。デコーディング装置は、この場合、前記3値をデコーディングし、前記3に対応するMVD値として20の値を取得することができる。
前記のような適応的MVD精密度のための範囲情報は、前記実施例3で詳述したようなSPSシンタックスとスライスヘッダシンタックスに基づいて指示されることができる。この場合、例えば、SPSシンタックスは、MVD精密度範囲テーブル候補の個数に対するシンタックス要素を含むことができ、各MVD精密度範囲テーブル候補別に整数ペル精密度範囲、ハーフペル精密度範囲のうち少なくとも一つに対する情報を含むことができる。また、前記MVD精密度範囲テーブル候補のうち一つの候補を示す精密度範囲テーブルインデックスが前記スライスヘッダシンタックスを介して指示されることができる。
または、以下の表のように非線形AMVR範囲パラメータに対するシンタックスが整数ペル精密度範囲、ハーフペル精密度範囲に対する情報を含むこともできる。
表7を参照すると、num_non_linear_range_table_candidateは、非線形範囲テーブル候補の個数を示す。前記非線形範囲テーブル候補毎にinteger_pel_precision_range及びhalf_pel_precision_rangeシンタックス要素を含むことができる。
ここで、integer_pel_precision_rangeは、整数ペル精密度範囲を示し、half_pel_precision_rangeは、ハーフペル精密度範囲を示す。前記整数ペル精密度範囲及び前記ハーフペル精密度範囲は、前記表7のfirst_range_value、first_range_representative_value、second_range_value、second_range_representative_value、third_range_value及びthird_range_representative_valueに基づく第1の範囲乃至第3の範囲と組み合わせて使われることができる。
例えば、各精密度範囲を示す値は、スケールダウンされて送信されることができる。この場合、integer_pel_precision_rangeが示す値は、4にスケールダウンされて送信されることができ、half_pel_precision_rangeが示す値は、integer_pel_precision_rangeが示す値との差分値を2にスケールダウンした後に送信されることができる。例えば、図10の場合、integer_pel_precision_rangeが示す値である8は、4にスケールダウンされて2の値に送信され、integer_pel_precision_rangeが示す値である18から8を差分した10を2にスケールダウンした5が送信される。デコーディング装置は、前記手順と反対の手順を介して各精密度範囲をデコーディングすることができる。
図15は、本発明による映像コーディング方法の一例を概略的に示す。図15で開示された方法は、エンコーディング装置により実行されることができる。
図15を参照すると、エンコーディング装置は、AMVR可用フラグを生成する(S1500)。エンコーディング装置は、現在ブロックに対するインター予測のためにAMVRを実行するかどうかを判断する。エンコーディング装置は、RD最適化のために前記AMVRを実行することが良いと判断される場合、AMVRを実行すると決定し、前記AMVR可用フラグの値を1に設定できる。
エンコーディング装置は、前記現在ブロックに対するMVDを導出する(S1510)。前記MVDは、クォーターペル単位のMVDである。または、適応的MVD精密度が適用される場合、前記MVDは、MVD精密度範囲によって整数ペルまたはハーフペル単位である。
エンコーディング装置は、動き推定(motion estimation)を介して前記現在ブロックに対するMVを導出することができる。エンコーディング装置は、前記現在ブロックの空間的隣接ブロック及び時間的隣接ブロック(または、時間的対応ブロック)に基づいて前記現在ブロックに対するMVPを導出することができる。エンコーディング装置は、前記MV及び前記MVPに基づいて前記現在ブロックに対する前記MVPを導出することができる。ここで、前記MVPは、クォーターペル単位のMVPである。または、前記MVPは、クォーターペル単位の臨時MVPを整数ペル単位で丸めた、整数ペル単位のMVPである。
エンコーディング装置は、複数のMVD範囲のうち前記MVDの値が含まれるMVD範囲に対するMVD代表値を導出し(S1520)、前記MVD代表値に対応するコーディングされた(coded)MVDを生成する(S1530)。
一例として、前記複数のMVD範囲は、均等な範囲を有する線形MVD範囲である。この場合、前記MVD代表値は、前記MVDの値+2を4の倍数に切り捨てた値である。また、この場合、前記コーディングされたMVDは、前記MVD代表値を4にスケールダウンした値である。
他の例として、前記複数のMVD範囲は、非均等な範囲を有する非線形MVD範囲である。この場合、前記非線形MVD範囲のうち、中央領域に位置するMVD範囲は、相対的に広い範囲を有することができる。この場合、前記非線形MVD範囲のうち、前記コーディングされたMVD値−1、0、1に対応されるMVD範囲が残りのMVD範囲より相対的に広い範囲を有することができる。前記コーディングされたMVD値が−1、0、1のうち一つである場合、前記MVD代表値は、前記MVDの値+4を8の倍数に切り捨てた値である。この場合、前記コーディングされたMVD値は、前記MVD代表値を8にスケールダウンした値である。
エンコーディング装置は、前記AMVR可用フラグ及び前記コーディングされたMVDをビットストリームを介して出力する(S1540)。例えば、前記AMVR可用フラグは、SPSレベルで前記ビットストリームを介して出力されることができる。また、例えば、前記コーディングされたMVDは、PUレベルで前記ビットストリームを介して出力されることができる。
前記出力されたビットストリームは、ネットワークまたは格納媒体を介してデコーディング装置に送信されることができる。
一方、図示されていないが、エンコーディング装置は、前記複数のMVD範囲が非均等な範囲を有するかどうかを示す非線形AMVR範囲フラグを生成することができる。前記非線形AMVR範囲フラグの値0は、前記複数のMVD範囲が均等な範囲を有することを示し、前記非線形AMVR範囲フラグの値1は、前記複数のMVD範囲が非均等な範囲を有することを示すことができる。エンコーディング装置は、前記生成された非線形AMVRフラグを前記ビットストリームを介して出力できる。
もし、前記非線形AMVR範囲フラグの値が1である場合、エンコーディング装置は、非線形AMVR関連パラメータを生成し、前記ビットストリームを介して出力できる。前記非線形AMVR関連パラメータは、前述した表5及び表7で詳述した情報を含むことができる。例えば、前記非線形AMVR範囲関連パラメータは、前記MVD範囲のうち、中央3個のMVD範囲の大きさ及び該当範囲の代表値に対する情報を含むことができる。また、前記非線形AMVR範囲関連パラメータは、非線形範囲テーブル候補の個数に対する情報を含むことができる。この場合、前記非線形AMVR範囲関連パラメータは、前記非線形範囲テーブル候補の各々に対応する中央3個のMVD範囲の大きさ及び該当範囲の代表値に対する情報を含むことができる。この場合、エンコーディング装置は、前記非線形範囲テーブル候補のうち一つの候補を示す範囲テーブルインデックスを生成し、前記範囲テーブルインデックスを前記ビットストリームを介して出力できる。この場合、例えば、前記範囲テーブルインデックスは、スライスヘッダレベルで前記ビットストリームを介して出力されることができる。
一方、適応的なMVD精密度(precision)範囲を使用し、前記MVDの表現単位を範囲によって適応的に変更できる。この場合、エンコーディング装置は、前記MVDが整数ペル精密度を有するか、またはハーフペル精密度を有するかを示すMVD精密度情報を生成し、前記MVD精密度情報を前記ビットストリームを介して出力できる。前記MVD精密度情報は、例えば、前述したinteger_pel_precision_rangeシンタックス要素及びhalf_pel_precision_rangeシンタックス要素のうち少なくとも一つを含むことができる。
図16は、本発明によるインター予測方法の一例を概略的に示す。図16で開示された方法は、デコーディング装置により実行されることができる。
図16を参照すると、デコーディング装置は、エンコーディング装置から受信されたビットストリームからAMVR可用フラグをパーシング及び取得する(S1600)。デコーディング装置は、ネットワークまたは格納媒体を介して前記ビットストリームを受信することができる。前記AMVR可用フラグは、例えば、SPSレベルでパーシング及び取得されることができる。
デコーディング装置は、前記ビットストリームからコーディングされたMVDをパーシング及び取得する(S1610)。例えば、前記コーディングされたMVDは、PUレベルでパーシング及び取得されることができる。
デコーディング装置は、前記AMVR可用フラグの値が1である場合、前記コーディングされたMVDの値に対応する代表MVDの値を導出する(S1620)。前記MVD代表値は、複数のMVD範囲のうち原本(original)MVDの値が含まれるMVD範囲に対する代表値である。
一例として、前記複数のMVD範囲は、均等な範囲を有する線形(linear)MVD範囲であり、前記コーディングされたMVD値は、前記MVD代表値を4にスケールアップした値である。
他の例として、前記複数のMVD範囲は、非均等な範囲を有する非線形MVD範囲である。この場合、前記非線形MVD範囲のうち、中央領域に位置するMVD範囲は、相対的に広い範囲を有することができる。この場合、前記非線形MVD範囲のうち、前記コーディングされたMVD値−1、0、1に対応されるMVD範囲が残りのMVD範囲より相対的に広い範囲を有することができる。前記コーディングされたMVD値が−1、0、1のうち一つである場合、前記MVD代表値は、前記MVDの値+4を8の倍数に切り捨てた値である。この場合、前記MVD代表値は、前記コーディングされたMVD値を8にスケールアップした値である。
前記原本MVDは、クォーターペル単位のMVDである。または、適応的MVD精密度が適用される場合、前記原本MVDは、MVD精密度範囲によって整数ペルまたはハーフペル単位である。
デコーディング装置は、現在ブロックの空間的隣接ブロック及び時間的隣接ブロック(または、時間的対応ブロック)に基づいて前記現在ブロックに対するMVPを導出する(S1630)。ここで、前記MVPは、クォーターペル単位のMVPである。または、前記MVPは、クォーターペル単位の臨時MVPを整数ペル単位で丸めた、整数ペル単位のMVPである。
デコーディング装置は、前記MVP及び前記代表MVDに基づいて前記現在ブロックに対するMVを導出する(S1640)。デコーディング装置は、前記MVP及び前記代表MVDを加算して前記現在ブロックに対するMVを導出することができる。
デコーディング装置は、前記MVに基づいてインター予測を実行することで、前記現在ブロックに対する予測サンプル(または、予測サンプルアレイ)を生成する(S1650)。デコーディング装置は、参照ピクチャ上で前記MVが示す相対的な位置にある参照ブロック内の復元サンプル(または、復元サンプルアレイ)に基づいて前記現在ブロックに対する予測サンプル(または、予測サンプルアレイ)を生成することができる。デコーディング装置は、前記ビットストリームからレジデュアル信号に対する変換係数を取得することができる。デコーディング装置は、前記変換係数を逆変換し、前記変換係数から前記現在ブロックに対するレジデュアルサンプル(または、レジデュアルサンプルアレイ)を取得することができる。デコーディング装置は、前記予測サンプル及び前記レジデュアルサンプルに基づいて復元サンプル及び復元ピクチャを生成することができる。
一方、図示されていないが、デコーディング装置は、前記複数のMVD範囲が非均等な範囲を有するかどうかを示す非線形AMVR範囲フラグを前記ビットストリームを介して受信することができる。前記非線形AMVR範囲フラグの値0は、前記複数のMVD範囲が均等な範囲を有することを示し、前記非線形AMVR範囲フラグの値1は、前記複数のMVD範囲が非均等な範囲を有することを示すことができる。前記非線形AMVR関連パラメータは、前述した表5及び表7で詳述した情報を含むことができる。例えば、前記非線形AMVR範囲関連パラメータは、前記MVD範囲のうち、中央3個のMVD範囲の大きさ及び該当範囲の代表値に対する情報を含むことができる。また、前記非線形AMVR範囲関連パラメータは、非線形範囲テーブル候補の個数に対する情報を含むことができる。この場合、前記非線形AMVR範囲関連パラメータは、前記非線形範囲テーブル候補の各々に対応する中央3個のMVD範囲の大きさ及び該当範囲の代表値に対する情報を含むことができる。デコーディング装置は、前記非線形AMVR範囲関連パラメータ及び前記コーディングされたMVD値に基づいて前記代表MVD値を導出することができる。この場合、デコーディング装置は、範囲テーブルインデックスを前記ビットストリームから取得し、前記範囲テーブルインデックスに基づいて前記非線形範囲テーブル候補のうち一つの候補を選択することができる。デコーディング装置は、前記選択された候補に基づいてMVD範囲の大きさ及び代表値を知ることができ、これに基づいて前記コーディングされたMVD値に対応する代表MVD値を導出することができる。
一方、適応的なMVD精密度(precision)範囲を使用し、前記原本MVDの表現単位が精密度範囲によって適応的に変更されることができる。この場合、デコーディング装置は、前記原本MVDが整数ペル精密度を有するか、またはハーフペル精密度を有するかを示すMVD精密度情報を前記ビットストリームを介して取得し、前記MVD精密度情報に基づいて前記コーディングされたMVD値に対応する前記MVD範囲及び前記代表MVD値を導出することができる。前記MVD精密度情報は、例えば、前述したinteger_pel_precision_rangeシンタックス要素及びhalf_pel_precision_rangeシンタックス要素のうち少なくとも一つを含むことができる。
前述した本発明によると、少ない付加情報を使用しながら現在ブロックに対するインター予測を効率的に実行することができる。また、本発明によると、MVDに割り当てられるビット量が減少して全般的なコーディング効率が増加されることができる。
以上の説明は、本発明の技術思想を例示的に説明したものに過ぎず、本発明が属する技術分野において、通常の知識を有する者であれば、本発明の本質的な特性から外れない範囲で多様な修正及び変形が可能である。したがって、本発明に開示された実施例は、本発明の技術思想を限定するためのものではなく、説明するためのものであり、このような実施例により本発明の技術思想の範囲が限定されるものではない。本発明の保護範囲は、特許請求の範囲により解釈されなければならない。
本発明において、実施例がソフトウェアで具現される時、前述した方法は、前述した機能を遂行するモジュール(過程、機能など)で具現されることができる。モジュールは、メモリに格納され、プロセッサにより実行されることができる。メモリは、プロセッサの内部または外部にあり、よく知られた多様な手段でプロセッサと連結されることができる。プロセッサは、ASIC(application−specific integrated circuit)、他のチップセット、論理回路及び/またはデータ処理装置を含むことができる。メモリは、ROM(read−only memory)、RAM(random access memory)、フラッシュメモリ、メモリカード、格納媒体及び/または他の格納装置を含むことができる。