以下、図面を参照して本発明の実施形態に対して具体的に説明する。本明細書の実施例を説明するにあたって、関連した公知構成又は機能に対する具体的な説明が本明細書の要旨を不明にすると判断される場合にはその詳細な説明は省略する。
一構成要素が他の構成要素に“連結されている”又は“接続されている”と言及された場合、該当他の構成要素に直接的に連結されている、又は接続されていることもあるが、中間に他の構成要素が存在することもあると理解されなければならない。また、本発明において、特定構成を“含む”と記述する内容は、該当構成以外の構成を排除するものではなく、追加的な構成が本発明の実施又は本発明の技術的思想の範囲に含まれることができることを意味する。
第1、第2などの用語は、多様な構成要素の説明に使われることができるが、前記構成要素は、前記用語により限定されてはならない。前記用語は、一つの構成要素を他の構成要素から区別する目的にのみ使われる。例えば、本発明の権利範囲を外れない限り、第1の構成要素は第2の構成要素と命名することができ、同様に、第2の構成要素も第1の構成要素と命名することができる。
また、本発明の実施例に開示する構成部は、互いに異なる特徴的な機能を示すために独立的に図示されるものであり、各構成部が分離されたハードウェアや一つのソフトウェア構成単位に構成されることを意味しない。即ち、各構成部は、説明の便宜上、それぞれの構成部として羅列して含むものであり、各構成部のうち少なくとも2個の構成部が統合されて一つの構成部からなり、又は一つの構成部が複数個の構成部に分けられて機能を遂行することができ、このような各構成部の統合された実施例及び分離された実施例も本発明の本質から外れない限り本発明の権利範囲に含まれる。
また、一部の構成要素は、本発明で本質的な機能を遂行する必須的構成要素ではなく、単に性能を向上させるための選択的構成要素である。本発明は、単に性能向上のために使われる構成要素を除いた本発明の本質具現に必須的な構成部のみを含んで具現されることができ、単に性能向上のために使われる選択的な構成要素を除いた必須的な構成要素のみを含む構造も本発明の権利範囲に含まれる。
図1は、本発明が適用される映像符号化装置の一実施例に係る構成を示すブロック図である。
図1を参照すると、前記映像符号化装置100は、動き予測部111、動き補償部112、イントラ予測部120、スイッチ115、減算器125、変換部130、量子化部140、エントロピー符号化部150、逆量子化部160、逆変換部170、加算器175、フィルタ部180、及び参照映像バッファ190を含む。
映像符号化装置100は、入力映像に対してイントラ(intra)モード又はインター(inter)モードに符号化を実行することによってビットストリームを出力することができる。イントラ予測は、画面内予測を意味し、インター予測は、画面間予測を意味する。イントラモードである場合、スイッチ115がイントラに切り替え、インターモードである場合、スイッチ115がインターに切り替えることができる。映像符号化装置100は、入力映像の入力ブロックに対する予測ブロックを生成した後、入力ブロックと予測ブロックの差分を符号化することができる。
イントラモードである場合、イントラ予測部120は、現在ブロック周辺の既に符号化されたブロックのピクセル値を利用して空間的予測を実行することによって予測ブロックを生成することができる。
インターモードである場合、動き予測部111は、動き予測過程で参照映像バッファ190に格納されている参照映像で入力ブロックと最もよくマッチされる領域を探して動きベクトルを求めることができる。ここで、映像は、後述されるピクチャ(picture)と同一な意味として使われることができる。動き補償部112は、動きベクトルを利用して動き補償を実行することによって予測ブロックを生成することができる。ここで、動きベクトルは、インター予測に使われる2次元ベクトルであり、現在符号化/復号化対象映像内のブロックと参照映像内のブロック間のオフセットを示すことができる。
減算器125は、入力ブロックと生成された予測ブロックとの差分により残差ブロック(residual block)を生成することができる。変換部130は、残差ブロックに対して変換(transform)を実行することで、変換係数(transform coefficient)を出力することができる。そして、量子化部140は、入力された変換係数を量子化パラメータによって量子化することによって量子化された係数(quantized coefficient)を出力することができる。
エントロピー符号化部150は、量子化部140で算出された値又は符号化過程で算出された符号化パラメータである動きベクトル差分値(motion vector difference)、参照ピクチャ索引(reference picture index)、動きベクトル候補索引(motion vector candidate index)、予測方向(prediction direction)情報などに基づいてエントロピー符号化を実行することで、ビットストリーム(bit stream)を出力することができる。
エントロピー符号化が適用される場合、高い発生確率を有するシンボル(symbol)に少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることによって、符号化対象シンボルに対するビット列の大きさが減少されることができる。したがって、エントロピー符号化を介して映像符号化の圧縮性能が高まることができる。エントロピー符号化部150は、エントロピー符号化のために、指数ゴロム(exponential golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)のような符号化方法を使用することができる。
図1の実施例に係る映像符号化装置は、インター予測符号化、即ち、画面間予測符号化を実行するため、現在符号化された映像は、参照映像として使われるために復号化されて格納される必要がある。したがって、量子化された係数は、逆量子化部160で逆量子化され、逆変換部170で逆変換される。逆量子化、逆変換された係数は、加算器175を介して予測ブロックと加えられることで、復元ブロックが生成される。
復元ブロックは、フィルタ部180を経て、フィルタ部180は、デブロッキングフィルタ(deblocking filter)、SAO(Sample Adaptive Offset)、ALF(Adaptive Loop Filter)のうち少なくとも一つ以上を復元ブロック又は復元映像に適用することができる。フィルタ部180は、適応的インループ(in-loop)フィルタとも呼ばれる。デブロッキングフィルタは、ブロック間の境界に発生したブロック歪曲を除去することができる。SAOは、コーディングエラーを補償するために、ピクセル値に適正オフセット(offset)値を加えることができる。ALFは、復元された映像と元来の映像を比較した値に基づいてフィルタリングを実行することができる。フィルタ部180を経た復元ブロックは、参照映像バッファ190に格納されることができる。
図2は、本発明が適用される映像復号化装置の一実施例に係る構成を示すブロック図である。
図2を参照すると、前記映像復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、加算器255、フィルタ部260、及び参照映像バッファ270を含む。
映像復号化装置200は、符号化器で出力されたビットストリームの入力を受けてイントラモード又はインターモードに復号化を実行し、再構成された映像、即ち、復元映像を出力することができる。イントラモードである場合、スイッチがイントラに切り替え、インターモードである場合、スイッチがインターに切り替えることができる。映像復号化装置200は、入力されたビットストリームから復元された残差ブロック(reconstructed residual block)を得て予測ブロックを生成した後、復元された残差ブロックと予測ブロックを加えて再構成されたブロック、即ち、復元ブロックを生成することができる。
エントロピー復号化部210は、入力されたビットストリームを確率分布によってエントロピー復号化することで、量子化された係数(quantized coefficient)形態のシンボルを含むシンボルを生成することができる。エントロピー復号化方法は、前述したエントロピー符号化方法と同様である。
エントロピー復号化方法が適用される場合、高い発生確率を有するシンボルに少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることによって、各シンボルに対するビット列の大きさが減少されることができる。したがって、エントロピー復号化方法を介して映像復号化の圧縮性能が高まることができる。
量子化された係数は、逆量子化部220で逆量子化され、逆変換部230で逆変換され、量子化された係数が逆量子化/逆変換された結果、復元された残差ブロックが生成されることができる。
イントラモードである場合、イントラ予測部240は、現在ブロック周辺の既に符号化/復号化されたブロックのピクセル値を利用して空間的予測を実行することによって予測ブロックを生成することができる。インターモードである場合、動き補償部250は、動きベクトル及び参照映像バッファ270に格納されている参照映像を利用して動き補償を実行することによって予測ブロックを生成することができる。
復元された残差ブロックと予測ブロックは、加算器255を介して加えられ、加えられたブロックは、フィルタ部260を経ることができる。フィルタ部260は、デブロッキングフィルタ、SAO、ALFのうち少なくとも一つ以上を復元ブロック又は復元映像に適用することができる。フィルタ部260は、再構成された映像、即ち、復元映像を出力することができる。復元映像は、参照映像バッファ270に格納されてインター予測に使われることができる。
以下、ブロックは、映像符号化及び復号化の単位を意味する。映像符号化及び復号化時の符号化単位又は復号化単位は、映像を分割して符号化又は復号化する時にその分割された単位を意味するため、ユニット(Unit)、符号化ユニット(CU:Coding Unit)、予測ユニット(PU:Prediction Unit)、変換ユニット(TU:Transform Unit)、変換ブロック(transform block)などとも呼ばれる。さらに、一つのブロックは、大きさが小さい下位ブロックに分割されることができる。予測ユニットは、インター予測又は動き補償実行時の基本ユニットであり、予測ブロック(prediction block)とも呼ばれる。予測ユニットは、分割されて複数のパーティション(Partition)になることもでき、複数のパーティションも予測実行時の基本ユニットになり、予測ユニットが分割されたパーティションも予測ユニットということができる。また、本明細書において、“ピクチャ(picture)”は、文脈によって“映像”、“フレーム(frame)”、“フィールド(field)”及び/又は“スライス(slice)”に変えて使われることができ、このような区分は、該当技術分野において、通常の知識を有する者であれば、容易にすることができる。例えば、後述されるPピクチャ、Bピクチャ、順方向Bピクチャは、ピクチャによって、各々、Pスライス、Bスライス、順方向Bスライスに変えて使われることができる。また、本明細書において、現在ブロックは、インター予測又は動き補償実行時のブロックを示すことができ、このような場合、現在ブロックは、予測ユニット又は予測ブロックを意味する。
図3は、インター予測方法の一実施例を概略的に示すフローチャートである。
図3を参照すると、符号化器及び復号化器は、現在ブロックに対する動き情報を誘導することができる(S310)。
インターモードにおいて、符号化器及び復号化器は、現在ブロックの動き情報を誘導した後、前記誘導された動き情報に基づいてインター予測及び/又は動き補償を実行することができる。このとき、符号化器及び復号化器は、復元された隣接ブロック(neighboring block)及び/又は既に復元されたcollocatedピクチャ(collocated picture)内で現在ブロックに対応されるcollocatedブロック(collocated block)の動き情報を利用することによって、符号化効率を向上させることができる。ここで、復元された隣接ブロックは、既に符号化及び/又は復号化されて復元された現在ピクチャ内のブロックであって、現在ブロックに隣接したブロック及び/又は現在ブロックの外部コーナーに位置したブロックを含むことができる。また、符号化器及び復号化器は、collocatedピクチャ内で現在ブロックと空間的に同一位置に存在するブロックを基準にして所定の相対的な位置を決定することができ、前記決定された所定の相対的な位置(前記現在ブロックと空間的に同一位置に存在するブロックの内部及び/又は外部の位置)に基づいて前記collocatedブロックを導出することができる。ここで、一例として、collocatedピクチャは、参照ピクチャリスト(reference picture list)に含まれている参照ピクチャのうち、一つのピクチャに該当することができる。また、ここで、動き情報は、動きベクトル、参照ピクチャ索引、動きベクトル候補索引、動きベクトル差分、参照ピクチャリスト、予測動きベクトル(predicted motion vector)、マージフラグ(merge flag)、マージ索引(merge index)、予測方向、可用性(availability)情報のうち少なくとも一つを含むインター予測又は動き補償時に必要な情報を意味する。
一方、動き情報誘導方式は、現在ブロックの予測モードによって変わることができる。インター予測のために適用される予測モードには、AMVP(Advanced Motion Vector Prediction)を含む動きベクトル予測、マージモード(merge mode)などがある。
一例として、動きベクトル予測が適用される場合、符号化器及び復号化器は、復元された隣接ブロックの動きベクトル及び/又はcollocatedブロックの動きベクトルを利用し、動きベクトル候補リスト(motion vector candidate list)を生成することができる。即ち、復元された隣接ブロックの動きベクトル及び/又はcollocatedブロックの動きベクトルは、動きベクトル候補(motion vector candidate)として使われることができる。符号化器は、前記リストに含まれている動きベクトル候補の中から選択された最適の予測動きベクトルを指示する予測動きベクトル索引を復号化器に送信することができる。このとき、復号化器は、前記予測動きベクトル索引を利用し、動きベクトル候補リストに含まれている予測動きベクトル候補の中から、現在ブロックの予測動きベクトルを選択することができる。
符号化器は、現在ブロックの動きベクトルと予測動きベクトルとの間の動きベクトル差分(MVD:Motion Vector Difference)を求めることができ、これを符号化して復号化器に送信することができる。このとき、復号化器は、受信された動きベクトル差分を復号化することができ、復号化された動きベクトル差分と予測動きベクトルとの和を介して現在ブロックの動きベクトルを誘導することができる。
他の例として、マージモードが適用される場合、符号化器及び復号化器は、復元された隣接ブロックの動き情報及び/又はcollocatedブロックの動き情報を利用し、マージ候補リストを生成することができる。即ち、符号化器及び復号化器は、復元された隣接ブロック及び/又はcollocatedブロックの動き情報が存在する場合、これを現在ブロックに対するマージ候補として使用することができる。
符号化器は、マージ候補リストに含まれているマージ候補のうち、最適の符号化効率を提供することができるマージ候補を現在ブロックに対する動き情報として選択することができる。このとき、前記選択されたマージ候補を指示するマージ索引がビットストリームに含まれて復号化器に送信されることができる。復号化器は、前記送信されたマージ索引を利用して、マージ候補リストに含まれているマージ候補の中から一つを選択することができ、前記選択されたマージ候補を現在ブロックの動き情報に決定することができる。したがって、マージモードが適用される場合、復元された隣接ブロック及び/又はcollocatedブロックの動き情報が現在ブロックの動き情報としてそのまま使われることができる。
前述したAMVP及びマージモードでは、現在ブロックの動き情報を誘導するために、復元された隣接ブロックの動き情報及び/又はcollocatedブロックの動き情報が使われることができる。以下、後述される実施例において、復元された隣接ブロックから誘導される動き情報は、空間的動き情報といい、collocatedブロックに基づいて誘導される動き情報は、時間的動き情報という。例えば、復元された隣接ブロックから誘導される動きベクトルは、空間的動きベクトル(spatial motion vector)といい、collocatedブロックに基づいて誘導される動きベクトルは、時間的動きベクトル(temporal motion vector)という。
また、図3を参照すると、符号化器及び復号化器は、前記誘導された動き情報に基づいて現在ブロックに対する動き補償を実行することによって、予測ブロックを生成することができる(S320)。ここで、予測ブロックは、現在ブロックに対する動き補償実行結果生成された、動き補償されたブロックを意味する。また、複数の動き補償されたブロックは、一つの動き補償された映像を構成することができる。したがって、後述される実施例において、予測ブロックは、文脈によって、‘動き補償されたブロック’及び/又は‘動き補償された映像’と表現され、このような区分は、該当技術分野において通常の知識を有する者であれば容易にすることができる。
一方、インター予測が実行されるピクチャにはPピクチャ及びBピクチャがある。Pピクチャは、一つの参照ピクチャを利用した単方向予測(uni-directional prediction)が実行されるピクチャを意味し、Bピクチャは、一つ以上、例えば、二つの参照ピクチャを利用した順方向(forward-directional)、逆方向(backward-directional)又は双方向(bi-predictive)予測が実行されることができるピクチャを意味する。例えば、Bピクチャでは、1個の順方向参照ピクチャ(過去ピクチャ)及び1個の逆方向参照ピクチャ(未来ピクチャ)を利用してインター予測が実行されることができる。また、Bピクチャでは、2個の順方向参照ピクチャを利用して予測が実行されることもでき、2個の逆方向参照ピクチャを利用して予測が実行されることもできる。
ここで、参照ピクチャは、参照ピクチャリストにより管理されることができる。Pピクチャで使用する前記参照ピクチャは、参照ピクチャリスト0(L0又はList0)に割り当てられることができる。Bピクチャで使用する前記2個の参照ピクチャは、各々、参照ピクチャリスト0及び参照ピクチャリスト1(L1又はList1)に割り当てられることができる。以下、L0参照ピクチャリストは、参照ピクチャリスト0と同一な意味を有することができ、L1参照ピクチャリストは、参照ピクチャリスト1と同一な意味を有することができる。
一般的に、順方向参照ピクチャは、参照ピクチャリスト0に割り当てられ、逆方向参照ピクチャは、参照ピクチャリスト1に割り当てられることができる。しかし、参照ピクチャの割当方法は、これに限定されるものではなく、順方向参照ピクチャが参照ピクチャリスト1に割り当てられてもよく、逆方向参照ピクチャが参照ピクチャリスト0に割り当てられてもよい。以下、参照ピクチャリスト0に割り当てられた参照ピクチャは、L0参照ピクチャといい、参照ピクチャリスト1に割り当てられた参照ピクチャは、L1参照ピクチャという。
参照ピクチャは、一般的に参照ピクチャ番号によって、降順に参照ピクチャリストに割り当てられることができる。ここで、参照ピクチャ番号は、各参照ピクチャにPOC(Picture Order Count)順序に割り当てられた番号を意味し、前記POC順序は、ピクチャの表示順序及び/又は時間順序を意味する。例えば、参照ピクチャ番号が同一な2個の参照ピクチャは、互いに同一な参照ピクチャに該当されることができる。参照ピクチャリストに割り当てられた参照ピクチャは、参照ピクチャリスト修正(Reference Picture List Modification)により再配列されることができる。
前述したように、Pピクチャでは1個のL0参照ピクチャを利用した単方向予測が実行されることができ、Bピクチャでは1個のL0参照ピクチャ及び1個のL1参照ピクチャ、即ち、2個の参照ピクチャを利用した順方向、逆方向又は双方向予測が実行されることができる。1個の参照ピクチャを利用した予測は、単予測(uni-prediction)といい、L0参照ピクチャ及びL1参照ピクチャを含む2個の参照ピクチャを利用した予測は、双予測(bi-prediction)という。
双予測は、順方向予測、逆方向予測、及び双方向予測の全てを含む概念として使われることができるが、後述される実施例では、便宜上、2個の参照ピクチャ(L0参照ピクチャ及びL1参照ピクチャ)を利用した予測は、双方向予測という。即ち、後述される実施例において、双方向予測は、双予測を意味し、2個の参照ピクチャ(L0参照ピクチャ及びL1参照ピクチャ)を利用した順方向、逆方向、双方向予測の全てを含む概念として理解されることができる。また、双予測が実行される場合にも順方向予測又は逆方向予測が実行されることができるが、後述される実施例では、便宜上、1個の参照ピクチャのみを利用した予測を単方向予測という。即ち、後述される実施例において、単方向予測は、単予測を意味し、1個の参照ピクチャを利用した予測のみを含む概念として理解しなければならない。また、以下、予測が実行されるブロックに対して単方向予測(単予測)が適用されるか、又は双方向予測(双予測)が適用されるかを指示する情報は、予測方向情報という。
図4は、本発明の一実施例に係る映像符号化/復号化装置が動きベクトル候補を誘導して予測動きベクトルを決定する過程を示すフローチャートである。
図4を参照すると、符号化器及び復号化器は、予測動きベクトルを決定するために、まず、空間的動きベクトル候補を誘導する(S410)。符号化器及び復号化器は、空間的動きベクトル候補として、前述したように、現在ブロックの空間的な周辺で既に復元されたブロック(参照ブロック)から動きベクトル候補を誘導することができる。このとき、空間的動きベクトル候補は、最大空間的動きベクトル候補個数(maxNumSpatialMVPCand)ほど誘導することができる。参照ブロックの参照ピクチャと現在ブロックの参照ピクチャとが互いに異なる場合、スケーリングを実行して空間的動きベクトル候補を誘導することができる。
空間的動きベクトル候補誘導が完了すると、符号化器及び復号化器は、時間的動きベクトル候補を誘導する(S420)。符号化器及び復号化器は、現在ブロックの時間的な周辺であるcollocatedピクチャで復元されたcollocatedブロックから動きベクトル候補を誘導することができる。また、時間的動きベクトル候補は、最大時間的動きベクトル候補個数(maxNumTemporalMVPCand)まで誘導することができる。また、現在ピクチャと現在ブロックの参照ピクチャとの距離と、collocatedピクチャとcollocatedブロックの参照ピクチャとの距離と、が互いに異なる場合、スケーリングを実行して時間的動きベクトル候補を誘導することができる。
空間的動きベクトル候補の誘導又は時間的動きベクトル候補の誘導が完了すると、誘導された動きベクトル候補を動きベクトル候補リストに追加する(S430)。即ち、符号化器及び復号化器は、前記誘導された空間的動きベクトル候補及び時間的動きベクトル候補を順序通りに動きベクトル候補リスト(mvpListLX)に追加することができる。動きベクトル候補リスト(mvpListLX)は、参照ピクチャリストL0とL1のうちいずれか一つの参照ピクチャリストに該当する動きベクトル候補リストを意味し、例えば、参照ピクチャリストL0に該当する動きベクトル候補リストは、mvpListL0で表現されることができる。
動きベクトル候補リストが構成された後、符号化器及び復号化器は、同一な動きベクトル候補を除去する(S440)。動きベクトル候補リスト(mvpListLX)内で同一な動きベクトル値を有する動きベクトル候補が存在するかどうかを検討する。例えば、同一な空間的動きベクトル候補が複数個ある場合、同一な空間的動きベクトル候補の中から動きベクトル候補索引が最も小さい空間的動きベクトル候補のみ残し、残りの空間的動きベクトル候補を動きベクトル候補リストから除去する。即ち、同一な動きベクトル値を有する候補が複数個ある場合、同一な動きベクトル値を有する候補を一つのみ動きベクトル候補リストに残すことができる。そして、除去される動きベクトル候補は、1個である。
そして、符号化器及び復号化器は、特定動きベクトルを追加し、又は一部を除去することによって動きベクトル候補リストを調整する(S450)。符号化器及び復号化器は、動きベクトル候補リスト(mvpListLX)に動きベクトルを追加し、又は動きベクトル候補リストに含まれている動きベクトル候補の中から一部を除去することによって動きベクトル候補リストの大きさを調整することができる。そして、除去される動きベクトル候補は、1個である。このとき、最大動きベクトル候補個数(maxNumMVPCand)を基準にして動きベクトル候補リスト内に動きベクトル候補が存在するかどうかを検討せずに、特定動きベクトルを追加することができる。また、動きベクトル候補リスト内に特定動きベクトルが存在するかどうかを検討せずに、特定動きベクトルを追加することによって動きベクトル候補リスト内の動きベクトル候補数を調整することができる。このとき、追加される特定動きベクトルは、固定された整数値を有するベクトルであり、場合によって、(0,0)動きベクトルである。ここで、(0,0)動きベクトルとは、ベクトルのx成分とy成分の値が0である動きベクトルを意味し、0動きベクトル(zero motion vector)という。
最後に、符号化器及び復号化器は、調整された動きベクトル候補リストに基づいて予測動きベクトルを決定することができる(S460)。
図5は、空間的動きベクトル候補誘導過程の一実施例を概略的に示す。
図5を参照すると、符号化器及び復号化器は、現在ブロック500の空間的動きベクトル候補を誘導するために、復元された隣接ブロック510、512、514、516、518の動き情報が存在するかどうかを判断する。復元された隣接ブロックの動き情報が存在しない場合、動きベクトル候補として使用可能でないと判断することができる。
本発明の一実施例によると、符号化器及び復号化器は、現在ブロック500の左側下方コーナーに位置したAOブロック510、現在ブロック500の左側最下端に隣接したA1ブロック512、現在ブロック500の右側上方コーナーに位置したB0ブロック514、現在ブロック500の上方最右側に隣接したB1ブロック516、及び現在ブロック500の左側上方コーナーに位置したB2ブロック518から空間的動きベクトルを誘導して現在ブロック500の空間的動きベクトル候補に決定することができる。
このとき、A0、A1、BO、B1、及びB2ブロック510、512、514、516、518の順序通りに各ブロックで動きベクトルが存在するかどうかを判断することができる。動きベクトルが存在する場合、該当ブロックの動きベクトルを動きベクトル候補に決定することができる。空間的動きベクトル候補は、最大空間的動きベクトル個数(maxNumSpatialMVPCand)まで誘導することができ、このとき、最大空間的動きベクトル個数(maxNumSpatialMVPCand)は、0を含む正の整数である。本発明の実施例によると、前記最大空間的動きベクトル個数(maxNumSpatialMVPCand)は、2である。したがって、A0ブロック510及びA1ブロック512から一つの動きベクトル候補を誘導し、BOブロック514、B1ブロック516、及びB2ブロック518から一つの動きベクトル候補を誘導することによって、総2個の空間的動きベクトルを誘導し、同時にA0ブロック510及びA1ブロック512から誘導された動きベクトルと、BOブロック514、B1ブロック516、及びB2ブロック518から誘導された動きベクトルと、が同じでない場合、時間的動きベクトル候補の誘導過程を実行しない。また、前記復元された隣接ブロックの参照ピクチャと現在ブロック500の参照ピクチャとが異なる場合、現在ブロック500の参照ピクチャと前記復元された隣接ブロックの参照ピクチャの距離を利用して前記隣接ブロックの動きベクトルをスケーリング(scaling)して使用することができる。
本発明の他の実施例によると、復元された隣接ブロックから空間的動きベクトルを誘導する具体的な方式として下記の方式に従うことができる。
1)所定の位置にブロックが存在し、該当ブロックが画面内符号化されず、該当ブロックの参照ピクチャリスト及び参照ピクチャと、現在ブロックの参照ピクチャリスト及び参照ピクチャと、が同じ場合、該当ブロックの動きベクトルを現在ブロックの動きベクトル候補として誘導することができる。
2)所定の位置にブロックが存在し、該当ブロックが画面内符号化されず、該当ブロックの参照ピクチャリストと現在ブロックの参照ピクチャリストが異なるが、該当ブロックと現在ブロックの参照ピクチャとが互いに同じ場合、該当ブロックの動きベクトルを現在ブロックの動きベクトル候補として誘導することができる。
3)所定の位置にブロックが存在し、該当ブロックが画面内符号化されず、該当ブロックの参照ピクチャリストと現在ブロックの参照ピクチャリストとが同じであるが、該当ブロックの参照ピクチャと現在ブロックの参照ピクチャとが異なる場合、該当ブロックの動きベクトルにスケーリングを実行して現在ブロックの動きベクトル候補として誘導することができる。
4)所定の位置にブロックが存在し、該当ブロックが画面内符号化されず、該当ブロックの参照ピクチャリスト及び参照ピクチャと、現在ブロックの参照ピクチャリスト及び参照ピクチャと、が異なる場合、該当ブロックの動きベクトルにスケーリングを実行して現在ブロックの動きベクトル候補として誘導することができる。
前記の1)~4)過程に基づいて、符号化器及び復号化器は、AOブロック510に対して1)と2)過程を実行し、A1ブロック512に対して1)と2)過程を実行し、AOブロック510に対して3)と4)過程を実行し、A1ブロック512に対して3)と4)過程を実行し、B0ブロック514に対して1)と2)過程を実行し、B1ブロック516に対して1)と2)過程を実行し、B2ブロック518に対してブロックに1)と2)過程を実行し、B0ブロック514に対して3)と4)過程を実行し、B1ブロック516に対して3)と4)過程を実行し、B2ブロック518に対して3)と4)過程を実行するステップを順次に進行することができる。
図6は、時間的動きベクトル候補誘導過程の一実施例を概略的に示す。
図6を参照すると、符号化器及び復号化器は、前記現在ブロック500の時間的周辺である対応位置ピクチャ(又は、collocatedピクチャ)で復元された対応位置ブロック(又は、collocatedブロック600)から動きベクトル候補を誘導することができる。
本発明の一実施例によると、現在ピクチャのcollocatedピクチャで現在ブロック500と空間的に同一位置に対応されるcollocatedブロック600の外部に存在するH位置のブロック610とcollocatedブロック600内部のC3位置に存在するブロック612の順序通りに、時間的動きベクトル候補を誘導することができる。このとき、Hブロック610から動きベクトルを誘導することができる場合、Hブロック610から時間的動きベクトルを誘導し、Hブロック610から動きベクトルを誘導することができない場合、C3ブロック612から時間的動きベクトル候補を誘導することができる。
ここで、Hブロック610は、collocatedブロック600の右側下方コーナーのブロックであり、C3ブロック612は、collocatedブロック600の中心を基準にする正四角形を四分割したブロックのうち右側下方のブロックである。時間的動きベクトルは、前記Hブロック610及びC3ブロック612の相対的な位置によって決定されることができる。もし、所定のHブロック610及びC3ブロック612が画面内符号化された場合には、時間的動きベクトル候補を誘導することができない。
また、時間的動きベクトル候補は、最大時間的動きベクトル個数(maxNumTemporalMVPCand)まで誘導することができる。このとき、最大時間的動きベクトル個数(maxNumTemporalMVPCand)は、0を含む正の整数であり、一例として、前記最大時間的動きベクトル個数(maxNumTemporalMVPCand)は、1である。もし、現在ピクチャと現在ブロック500の参照ピクチャとの距離と、collocatedピクチャとcollocatedブロック600の参照ピクチャとの距離と、が互いに異なる場合、動きベクトルに対してスケーリングを実行することで、時間的動きベクトル候補を誘導することができる。
スケーリングは、下記のような過程を介して実行されることができる。
まず、collocatedピクチャと前記Hブロック610又はC3ブロック612の参照ピクチャとの間のPOC(Picture Order Count)差分値、及び現在ピクチャと現在ブロックの参照ピクチャとの間のPOC差分値を示すtd値及びtb値を求める。このとき、i)空間的動きベクトル誘導過程の場合、td値は、現在ピクチャのPOCと空間的に隣接した参照ブロックが参照する参照ピクチャのPOCとの間の差分値を示し、tb値は、現在ピクチャのPOCと現在ブロックが参照する参照ピクチャのPOCとの間の差分値を示す。このとき、現在ブロックの参照ピクチャと参照ブロックの参照ピクチャの予測方向が互いに異なる場合、td及びtb値の符号を相違に付与することができる。場合によって、td値又はtb値は、-128~127の範囲に含まれるように調整されることができる。このとき、td値又はtb値が-128より小さい場合、td値又はtb値を-128に調整し、td値又はtb値が127より大きい場合、td値又はtb値を127に調整することができる。td値又はtb値が-128~127の範囲に含まれると、td値又はtb値を調整しない。
td値とtb値を求めた後、td値の反比例値であるtx値を算出する。これは(16384+(Abs(td)>>1))/tdの数式を利用して決定されることができる。このとき、Abs()は、入力値の絶対値を示す。
そして、スケーリング因子であるDistScaleFactorを(tb*tx+32)>>6の数式を利用して決定し、-1024~1023の範囲に含まれるように調整する。
調整されたDistScaleFactor値を有し、Sign(DistScaleFactor*mvCol)*((Abs(DistScaleFactor*mvCol)+127)>>8)の数式を利用してスケーリングされた時間的動きベクトルを算出することができる。このとき、Sign()は、入力値の符号情報を出力し、mvColは、スケーリングされる前、時間的動きベクトル値を示す。
図7は、誘導された動きベクトルに基づいて動きベクトル候補リストを構成する実施例を概略的に示す。
図7を参照すると、符号化器及び復号化器は、誘導された動きベクトル候補を動きベクトル候補リスト(mvpListLX)に追加する。符号化器及び復号化器は、誘導された空間的動きベクトル候補及び時間的動きベクトル候補を順序通りに動きベクトル候補リストに追加する。mvpListLXは、参照ピクチャリストL0とL1のうちいずれか一つの参照ピクチャリストに該当する動きベクトル候補リストを意味する。例えば、参照ピクチャリストL0に該当する動きベクトル候補リストは、mvpListL0で表すことができる。
動きベクトル候補リスト(mvpListLX)の大きさは、所定の数字である最大動きベクトル候補個数(maxNumMVPCand)を基準に決定されることができる。このとき、最大動きベクトル候補個数(maxNumMVPCand)は、2である。もし、最大動きベクトル候補個数が3であり、誘導された動きベクトル候補が3個である場合、動きベクトル候補リスト(mvpListLX)に最初に追加される動きベクトル候補は、動きベクトル候補索引値0を有し、最後に追加される動きベクトル候補は、動きベクトル候補索引値2を有することができる。
図7の実施例によると、A1ブロック512からスケーリングされない空間的動きベクトル候補(1,0)が誘導され、B1ブロック516からスケーリングされた空間的動きベクトル候補(4,-1)が誘導され、Hブロック610から時間的動きベクトル候補(2,3)が誘導された場合、動きベクトル候補は、順序通りに動きベクトル候補リスト700に追加される。このとき、A1ブロック512から誘導された動きベクトル候補索引値は0になり、B1ブロック516から誘導された動きベクトル候補索引値は1になり、Hブロック610から誘導された動きベクトル候補索引値は2になることができる。前記実施例において、最大動きベクトル候補個数が2の場合を仮定すると、A1ブロック512とB1ブロック516から誘導された動きベクトル候補が互いに同じでないため、時間的動きベクトル候補を誘導せずに、A1ブロック512とB1ブロック516から誘導された動きベクトル候補が動きベクトル候補リストに追加される。
図8は、動きベクトル候補リストから同一な動きベクトルを除去する実施例を概略的に示す。
図8を参照すると、符号化器及び復号化器は、動きベクトル候補リスト800内に同一な動きベクトル候補があるかどうかを検査する。検査結果、同一な動きベクトル候補が複数個存在する場合、同一な動きベクトル候補の中から動きベクトル候補索引が最も小さい動きベクトル候補のみを動きベクトル候補リスト800に残し、残りの動きベクトル候補は、動きベクトル候補リスト800から除去する。このとき、空間的動きベクトル候補に対してのみ同一な動きベクトル候補除去動作を実行することができる。
図8の実施例によると、動きベクトル候補リスト800が(1,0)、(1,0)、及び(2,3)の3個の動きベクトル候補で構成されている場合、索引0と索引1に該当する候補が互いに同一な(1,0)である。同一な動きベクトルがある場合、符号化器及び復号化器は、再構成された動きベクトル候補リスト810と同様に、同一な動きベクトル候補の中から索引が最も小さい動きベクトル候補のみを動きベクトル候補リスト810に残し、残りの動きベクトル候補を除去する。
図9は、本発明の一実施例に係る動きベクトル候補リスト調整過程を概略的に示すフローチャートである。
図9を参照すると、符号化器及び復号化器は、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より小さいかどうかを判断する(S910)。前記含まれている動き候補の個数が最大動きベクトル候補個数より小さい場合、(0,0)動きベクトルを動きベクトル候補リストに追加する(S920)。(0,0)動きベクトルを動きベクトル候補リストに追加すると、動きベクトル候補の個数(numMVPCandLX)を1ほど増加させることができる。(0,0)動きベクトル追加以後、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より小さいかどうかに対する判断及び(0,0)動きベクトル追加動作を、動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)に到達する時まで繰り返す。即ち、前記過程を動きベクトル候補リスト内に含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補の個数(maxNumMVPCand)と同じになる時まで実行することによって、動きベクトル候補の個数(numMVPCandLX)と最大動きベクトル候補個数(maxNumMVPCand)が同じになることができる。
ただし、本発明の他の実施例によると、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より小さい場合、(0,0)動きベクトルを一つのみ追加することができる。
結論的に、前記動きベクトル候補リストに含まれている動きベクトル候補の個数は、最大動きベクトル候補個数により決定されることができる。
本発明の一実施例によると、また、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より大きい場合、動きベクトル候補の中から一部を除去することによって動きベクトル候補リストを調整することができる。このとき、除去される動きベクトル候補は、最大動きベクトル候補個数より一つ小さい数(maxNumMVPCand-1)より大きい索引値を有する動きベクトル候補である。また、前記含まれている動き候補の個数と最大動きベクトル候補個数が同じ場合、最終動きベクトル候補を誘導する。このとき、最大動きベクトル候補個数(maxNumMVPCand)が2の場合、最終的に最大2個の動きベクトル候補を誘導することができる。このとき、誘導された動きベクトル候補は、動きベクトル候補リスト内に含まれることができ、誘導された動きベクトル候補のうち一つは、予測ブロックの予測動きベクトルに決定されることができる。
本発明の他の実施例によると、また、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より大きい又は同じ場合、動きベクトル候補の中から一部を除去することによって動きベクトル候補リストを調整することができる。同様に、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)と同じ場合には、動きベクトル候補を除去する必要がないため、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より大きい場合にのみ、動きベクトル候補の中から一部を除去することによって動きベクトル候補リストを調整することができる。
前記過程を介して、動きベクトル候補リスト内の動きベクトル候補個数と最大動きベクトル候補個数のみを比較して動きベクトル候補リストに動きベクトル候補を追加するため、追加する特定動きベクトル候補((0,0)動きベクトル)が動きベクトル候補リストに存在するかどうかに対する重複性検査(duplicate check)を実行しないことで、動きベクトル予測において、演算複雑度を減少させることができる。
また、動きベクトル候補リスト内の動きベクトル候補個数と最大動きベクトル候補個数のみを比較し、動きベクトル候補リスト構成の中間ステップに実行される動きベクトル候補リスト内の動きベクトル有無検査(list empty check)を実行しなくてもよいし、これによって、動きベクトル予測の演算複雑度を追加的に減少させることができる。
図10は、動きベクトル候補リストに一つの動きベクトル候補が存在する場合、(0,0)動きベクトルの追加実施例を概略的に示す。
符号化器及び復号化器は、動きベクトル候補リスト(mvpListLX)に動きベクトルを追加し、又は一部を除去することによって動きベクトル候補リストの大きさを調整することができる。ここで、numMVPCandLXは、参照ピクチャリストL0とL1のうちいずれか一つの参照ピクチャリストに該当する動きベクトル候補リスト内の動きベクトル候補数を意味し、最大動きベクトル候補リストの大きさは、所定の数字である最大動きベクトル候補個数(maxNumMVPCand)により決定されることができる。例えば、参照ピクチャリストL0に該当する動きベクトル候補リスト内の動きベクトル候補数は、numMVPCandL0で表現されることができる。このとき、numMVPCandLXとmaxNumMVPCandは、0を含む正の整数であり、一実施例としてmaxNumMVPCandは、2である。
図10を参照すると、本発明の一実施例において、最大動きベクトル候補個数(maxNumMVPCand)が2の場合、動きベクトル候補リスト1000に含まれている動きベクトル候補の個数(numMVPCandLX)が1であって、前記動きベクトル候補リスト1000に含まれている動きベクトル候補の個数が前記最大動きベクトル候補個数(maxNumMVPCand)より小さいため、動きベクトル候補リスト1000に特定動きベクトルを追加し、動きベクトル候補の個数(numMVPCandLX)を1ほど増加させることができる。これによって、特定動きベクトルが追加されることによって、大きさが調整された動きベクトル候補リスト1010を生成することができる。このとき、追加される特定動きベクトルは、所定の固定された整数値を有するベクトルであり、(0,0)動きベクトルである。
図11は、動きベクトル候補リストに一つの(0,0)動きベクトル候補が存在する場合、(0,0)動きベクトルの追加実施例を概略的に示す。
図11を参照すると、本発明の他の実施例において、最大動きベクトル候補個数(maxNumMVPCand)が2であり、動きベクトル候補リスト1100に含まれている動きベクトル候補の個数(numMVPCandLX)が前記最大動きベクトル候補個数(maxNumMVPCand)より小さく、動きベクトル候補リスト1100内に一つの特定動きベクトル((0,0)動きベクトル)が存在できる。この場合、符号化器及び復号化器は、動きベクトル候補リスト1100内に特定動きベクトル((0,0)動きベクトル)が存在するかどうかと関係なしで特定動きベクトルを追加することができる。これによって、特定動きベクトルがさらに1個追加されることによって、大きさが調整された動きベクトル候補リスト1110を生成することができる。このとき、追加される特定動きベクトルは、所定の固定された整数値を有するベクトルであり、(0,0)動きベクトルである。特定動きベクトルを追加することで、動きベクトル候補の個数(numMVPCandLX)を増加させることができる。したがって、動きベクトル候補リスト1110には最大動きベクトル候補個数(maxNumMVPCand)ほどの(0,0)動きベクトルが含まれることができる。符号化器及び復号化器は、最大動きベクトル候補個数(maxNumMVPCand)と動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)のみを比較して特定動きベクトルを追加するため、特定動きベクトルがリスト内に存在するかどうかを判断しないことで、演算複雑度を減少させることができる。
図12は、動きベクトル候補リストに動きベクトルが存在しない場合、(0,0)動きベクトルの追加実施例を概略的に示す。
図12を参照すると、本発明の他の実施例において、最大動きベクトル候補個数(maxNumMVPCand)が2であり、動きベクトル候補リスト1200に含まれている動きベクトル候補の個数(numMVPCandLX)が前記最大動きベクトル候補個数(maxNumMVPCand)より小さく、動きベクトル候補リスト1200内に動きベクトルが存在しない。この場合、符号化器及び復号化器は、動きベクトル候補リスト1200内に動きベクトル候補が存在するかどうかと関係なしで特定動きベクトルを繰り返して追加することができる。特定動きベクトルを追加することで、動きベクトル候補の個数(numMVPCandLX)を増加させることができる。即ち、符号化器及び復号化器は、動きベクトル候補リスト内に含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)に到達する時まで特定動きベクトルを追加することができる。前記実施例のように、最大動きベクトル候補個数(maxNumMVPCand)が2の場合、特定動きベクトルを2個追加することができる。このとき、追加される特定動きベクトルは、所定の固定された整数値を有するベクトルであり、(0,0)動きベクトルである。したがって、動きベクトル候補リスト1210には最大動きベクトル候補個数(maxNumMVPCand)ほどの(0,0)動きベクトルが含まれることができる。符号化器及び復号化器は、最大動きベクトル候補個数(maxNumMVPCand)と動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)のみを比較して特定動きベクトルを追加するため、動きベクトル候補がリスト内に存在するかどうかを判断しないことで、演算複雑度を減少させることができる。
図面に示されていないが、本発明の他の実施例によると、最大動きベクトル候補個数(maxNumMVPCand)が2であり、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が前記最大動きベクトル候補個数(maxNumMVPCand)より小さい場合、一つの特定動きベクトルを追加することができる。特定動きベクトルを追加することで、動きベクトル候補の個数(numMVPCandLX)を増加させることができる。即ち、追加される特定動きベクトルを繰り返して追加せずに、一つの特定動きベクトルのみを追加することができる。例えば、動きベクトル候補リスト内に動きベクトルが存在しない場合、符号化器及び復号化器は、動きベクトル候補リスト内に動きベクトル候補が存在するかどうかと関係なしで一つの特定動きベクトルを追加することができる。特定動きベクトルを追加することで、動きベクトル候補の個数(numMVPCandLX)を増加させることができる。このとき、追加される特定動きベクトルは、所定の固定された整数値を有するベクトルであり、(0,0)動きベクトルである。このような場合にも、符号化器及び復号化器は、最大動きベクトル候補個数(maxNumMVPCand)と動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)のみを比較して特定動きベクトルを追加するため、動きベクトル候補がリスト内に存在するかどうかを判断しないことで、演算複雑度を減少させることができる。
図13は、動きベクトル候補リストから動きベクトル候補の一部を除去する実施例を概略的に示す。
図13を参照すると、本発明の一実施例において、符号化器及び復号化器は、動きベクトル候補リスト1300に含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より大きい場合、前記最大動きベクトル候補個数より1小さい値(maxNumMVPCand-1)より大きい索引値を有する動きベクトル候補を動きベクトル候補リスト1300から除去することができる。例えば、最大動きベクトル候補個数(maxNumMVPCand)が2であり、動きベクトル候補リスト1300に含まれている動きベクトル候補の個数(numMVPCandLX)が3の場合、前記最大動きベクトル候補個数である2より1小さい値(maxNumMVPCand-1)である1より大きい索引値である2を有する動きベクトル候補(4,-3)を動きベクトル候補リスト1300から除去することで、大きさが調整された動きベクトル候補リスト1310を生成することができる。
本発明の他の実施例によると、符号化器及び復号化器は、動きベクトル候補リストに含まれている動きベクトル候補の個数(numMVPCandLX)が最大動きベクトル候補個数(maxNumMVPCand)より大きい又は同じ場合、前記最大動きベクトル候補個数より1小さい値(maxNumMVPCand-1)より大きい索引値を有する動きベクトル候補を動きベクトル候補リストから除去することができる。
図14は、動きベクトル候補リスト内の動きベクトル候補の中から予測動きベクトルを決定する過程を概略的に示す。
図14を参照すると、符号化器及び復号化器は、前記過程を介して調整された動きベクトル候補リスト1400に含まれている動きベクトル候補から予測動きベクトルを決定することができる。
一実施例によると、符号化器及び復号化器は、特定動きベクトル候補索引に該当する動きベクトル候補リスト1400内の動きベクトル候補を予測動きベクトルに決定することができる。例えば、最大動きベクトル候補個数(maxNumMVPCand)が2であり、動きベクトル候補索引が1の場合、動きベクトル候補(2,3)が予測動きベクトルに決定されることができる。
符号化器及び復号化器は、前記のように決定された予測動きベクトル値に基づいてインター予測又は動き補償を実行することで、予測ブロックを生成することができる。
前述した実施例において、方法は、一連のステップ又はブロックで順序図に基づいて説明されているが、本発明は、ステップの順序に限定されるものではなく、あるステップは、前述と異なるステップと、異なる順序に又は同時に発生することができる。また、当該技術分野において、通常の知識を有する者であれば、順序図に示すステップが排他的でなく、他のステップが含まれ、又は順序図の一つ又はそれ以上のステップが本発明の範囲に影響を及ぼさずに削除可能ことを理解することができる。
前述した実施例は、多様な態様の例示を含む。多様な態様を示すための全ての可能な組合せを記述することはできないが、該当技術分野の通常の知識を有する者は、他の組合せが可能であることを認識することができる。したがって、本発明は、特許請求の範囲内に属する全ての交替、修正及び変更を含む。