【文献】
Benjamin Bross et al.,High efficiency video coding (HEVC) text specification draft 8,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 10th Meeting: Stockholm, SE,2012年 7月28日,[JCTVC-J1003_d7] (version 8)
【文献】
Yongbing Lin et al.,Removal of dependency between multiple PUs in a CU for parallel merging candidate list construction, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Shanghai, CN,2012年10月 8日,[JCTVC-K0197]
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0029】
以下、図面を参照して本発明の実施形態に対して具体的に説明する。本明細書の実施例を説明するにあたって、関連した公知構成または機能に対する具体的な説明が本明細書の要旨を不明にすると判断される場合、その詳細な説明は省略する。
【0030】
一構成要素が他の構成要素に“連結されている”または“接続されている”と言及された場合、該当他の構成要素に直接的に連結されている、または接続されていることもあるが、中間に他の構成要素が存在することもあると理解しなければならない。また、本発明において、特定構成を“含む”と記述する内容は、該当構成以外の構成を排除するものではなく、追加的な構成が本発明の実施または本発明の技術的思想の範囲に含まれることができることを意味する。
【0031】
第1、第2などの用語は、多様な構成要素の説明に使われることができるが、前記構成要素は、前記用語により限定されてはならない。前記用語は、一つの構成要素を他の構成要素から区別する目的にのみ使われる。例えば、本発明の権利範囲を外れない限り、第1の構成要素は第2の構成要素と命名することができ、同様に、第2の構成要素も第1の構成要素と命名することができる。
【0032】
また、本発明の実施例に示す構成部は、互いに異なる特徴的な機能を示すために独立的に図示されるものであり、各構成部が分離されたハードウェアや一つのソフトウェア構成単位に構成されることを意味しない。即ち、各構成部は、説明の便宜上、各々の構成部として羅列して含むものであり、各構成部のうち少なくとも2個の構成部が統合されて一つの構成部からなり、または一つの構成部が複数個の構成部に分けられて機能を遂行することができ、このような各構成部の統合された実施例及び分離された実施例も本発明の本質から外れない限り、本発明の権利範囲に含まれる。
【0033】
また、一部の構成要素は、本発明で本質的な機能を遂行する必須な構成要素ではなく、単に性能を向上させるための選択的構成要素である。本発明は、単に性能向上のために使われる構成要素を除いた本発明の本質を具現するのに必須な構成部のみを含んで具現されることができ、単に性能向上のために使われる選択的構成要素を除いた必須構成要素のみを含む構造も本発明の権利範囲に含まれる。
【0034】
図1は、映像符号化装置の一実施例に係る構成を示すブロック図である。
【0035】
図1を参照すると、前記映像符号化装置100は、動き予測部111、動き補償部112、イントラ予測部120、スイッチ115、減算器125、変換部130、量子化部140、エントロピー符号化部150、逆量子化部160、逆変換部170、加算器175、フィルタ部180及び参照映像バッファ190を含む。
【0036】
映像符号化装置100は、入力映像に対してイントラ(intra)モードまたはインター(inter)モードに符号化を実行することで、ビットストリーム(bit stream)を出力することができる。イントラ予測は画面内予測を意味し、インター予測は画面間予測を意味する。イントラモードである場合、スイッチ115がイントラに切り替えられ、インターモードである場合、スイッチ115がインターに切り替えられる。映像符号化装置100は、入力映像の入力ブロックに対する予測ブロックを生成した後、入力ブロックと予測ブロックとの差分を符号化することができる。
【0037】
イントラモードである場合、イントラ予測部120は、現在ブロック隣接の既に符号化されたブロックの画素値を利用して空間的予測を実行することで、予測ブロックを生成することができる。
【0038】
インターモードである場合、動き予測部111は、動き予測過程において、参照映像バッファ190に格納されている参照映像で入力ブロックと最もよくマッチされる領域を探して動きベクトルを求めることができる。動き補償部112は、動きベクトルと参照映像バッファ190に格納されている参照映像を利用して動き補償を実行することによって、予測ブロックを生成することができる。
【0039】
減算器125は、入力ブロックと生成された予測ブロックとの差分により残余ブロック(residual block)を生成することができる。変換部130は、残余ブロックに対して変換(transform)を実行することで、変換係数(transform coefficient)を出力することができる。そして、量子化部140は、入力された変換係数を量子化パラメータによって量子化することで、量子化された係数(quantized coefficient)を出力することができる。
【0040】
エントロピー符号化部150は、量子化部140で算出された値または符号化過程で算出された符号化パラメータ値などに基づき、シンボル(symbol)を確率分布によってエントロピー符号化することで、ビットストリーム(bit stream)を出力することができる。エントロピー符号化方法は、多様な値を有するシンボルの入力を受け、統計的な重複性を除去すると共に、復号可能な2進数の列で表現する方法である。
【0041】
ここで、シンボルとは、符号化/復号化対象構文要素(syntax element)及び符号化パラメータ(coding parameter)、残余信号(residual signal)の値などを意味する。符号化パラメータは、符号化及び復号化に必要な媒介変数であって、構文要素のように符号化装置で符号化されて復号化装置に伝達される情報だけでなく、符号化または復号化過程で類推されることができる情報を含むことができ、映像を符号化または復号化する時に必要な情報を意味する。符号化パラメータは、例えば、イントラ/インター予測モード、移動/動きベクトル、参照映像索引、符号化ブロックパターン、残余信号有無、変換係数、量子化された変換係数、量子化パラメータ、ブロックの大きさ、ブロック分割情報などの値または統計を含むことができる。また、残余信号は、原信号と予測信号との差を意味し、また、原信号と予測信号との差が変換(transform)された形態の信号または原信号と予測信号との差が変換されて量子化された形態の信号を意味する。残余信号は、ブロック単位では残余ブロックという。
【0042】
エントロピー符号化が適用される場合、高い発生確率を有するシンボルに少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることによって、符号化対象シンボルに対するビット列の大きさが減少されることができる。したがって、エントロピー符号化を介して映像符号化の圧縮性能が高まることができる。
【0043】
エントロピー符号化のために、指数ゴロム(exponential golomb)、CAVLC(Context−Adaptive Variable Length Coding)、CABAC(Context−Adaptive Binary Arithmetic Coding)のような符号化方法が使われることができる。例えば、エントロピー符号化部150には、可変長さ符号化(VLC:Variable Lenghth Coding/Code)テーブルのようなエントロピー符号化を実行するためのテーブルが格納されることができ、エントロピー符号化部150は、格納された可変長さ符号化(VLC)テーブルを使用してエントロピー符号化を実行することができる。また、エントロピー符号化部150は、対象シンボルの2進化(binarization)方法及び対象シンボル/ビン(bin)の確率モデル(probability model)を導出した後、導出された2進化方法または確率モデルを使用してエントロピー符号化を実行することもできる。
【0044】
量子化された係数は、逆量子化部160で逆量子化され、逆変換部170で逆変換されることができる。逆量子化、逆変換された係数は、加算器175を介して予測ブロックと加えられて復元ブロックが生成されることができる。
【0045】
復元ブロックは、フィルタ部180を経て、フィルタ部180は、デブロッキングフィルタ(deblocking filter)、SAO(Sample Adaptive Offset)、ALF(Adaptive Loop Filter)のうち少なくとも一つ以上を復元ブロックまたは復元ピクチャに適用することができる。フィルタ部180を経た復元ブロックは、参照映像バッファ190に格納されることができる。
【0046】
図2は、映像復号化装置の一実施例に係る構成を示すブロック図である。
図2を参照すると、前記映像復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、フィルタ部260及び参照映像バッファ270を含む。
【0047】
映像復号化装置200は、符号化装置から出力されたビットストリームの入力を受けてイントラモードまたはインターモードに復号化を実行することで、再構成された映像、即ち、復元映像を出力することができる。イントラモードである場合、スイッチがイントラに切り替えられ、インターモードである場合、スイッチがインターに切り替えられる。映像復号化装置200は、入力されたビットストリームから復元された残余ブロック(residual block)を得て、予測ブロックを生成した後、復元された残余ブロックと予測ブロックを加えて再構成されたブロック、即ち、復元ブロックを生成することができる。
【0048】
エントロピー復号化部210は、入力されたビットストリームを確率分布によってエントロピー復号化し、量子化された係数(quantized coefficient)形態のシンボルを含むシンボルを生成することができる。エントロピー復号化方法は、2進数の列の入力を受けて各シンボルを生成する方法である。エントロピー復号化方法は、前述したエントロピー符号化方法と同様である。
【0049】
量子化された係数は、逆量子化部220で逆量子化され、逆変換部230で逆変換され、量子化された係数が逆量子化/逆変換された結果、復元された残余ブロック(residual block)が生成されることができる。
【0050】
イントラモードである場合、イントラ予測部240は、現在ブロック隣接の既に符号化されたブロックの画素値を利用して空間的予測を実行することで、予測ブロックを生成することができる。インターモードである場合、動き補償部250は、動きベクトル及び参照映像バッファ270に格納されている参照映像を利用して動き補償を実行することによって、予測ブロックを生成することができる。
【0051】
復元された残余ブロックと予測ブロックは、加算器255を介して加えられ、加えられたブロックは、フィルタ部260を経る。フィルタ部260は、デブロッキングフィルタ、SAO、ALFのうち少なくとも一つ以上を復元ブロックまたは復元ピクチャに適用することができる。フィルタ部260は、再構成された映像、即ち、復元映像を出力する。復元映像は、参照映像バッファ270に格納されて画面間予測に使われることができる。
【0052】
前記映像復号化装置200に含まれているエントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、フィルタ部260及び参照映像バッファ270のうち、映像の復号化に直接的に関連した構成要素、例えば、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、フィルタ部260などを他の構成要素と区分して復号化部またはデコーディング部で表現することができる。
【0053】
また、映像復号化装置200は、ビットストリームに含まれているエンコーディングされた映像に関連した情報をパーシングするパーシング部(図示せず)をさらに含むことができる。パーシング部は、エントロピー復号化部210を含むこともでき、エントロピー復号化部210に含まれることもできる。また、このようなパーシング部は、デコーディング部の一つの構成要素として具現されることもできる。
【0054】
通常的に、画面間予測は、現在ピクチャの以前ピクチャまたは以後ピクチャのうち少なくとも一つを参照ピクチャにし、参照ピクチャに基づいて現在ブロックに対する予測を実行することができる。現在ブロックの予測に利用される映像を参照ピクチャ(reference picture)または参照フレーム(reference frame)という。
【0055】
参照ピクチャ内の領域は、参照ピクチャを指示する参照ピクチャインデックス(refIdx)及び動きベクトル(motion vector)などを利用して示すことができる。
【0056】
画面間予測は、参照ピクチャ及び参照ピクチャ内で現在ブロックに対応する参照ブロックを選択し、現在ブロックに対する予測ブロックを生成することができる。
【0057】
画面間予測において、符号化装置及び復号化装置は、現在ブロックの動き情報を導出した後、導出された動き情報に基づいて画面間予測及び/または動き補償を実行することができる。このとき、符号化装置及び復号化装置は、復元された隣接ブロック(neighboring block)及び/または既に復元されたcollocated picture内で現在ブロックに対応されるcollocated blockの動き情報を利用することによって、符号化/復号化効率を向上させることができる。
【0058】
ここで、復元された隣接ブロックは、既に符号化及び/または復号化されて復元された現在ピクチャ内のブロックであって、現在ブロックに隣接したブロック及び/または現在ブロックの外部コーナーに位置したブロックを含むことができる。また、符号化装置及び復号化装置は、collocated picture内で現在ブロックと空間的に対応される位置に存在するブロックを基準にして所定の相対的な位置を決定することができ、前記決定された所定の相対的な位置(前記現在ブロックと空間的に対応される位置に存在するブロックの内部及び/または外部の位置)に基づいて前記collocated blockを導出することができる。ここで、一例として、collocated pictureは、参照ピクチャリストに含まれている参照ピクチャのうち、一つのピクチャに該当することができる。
【0059】
画面間予測は、現在ブロックとのレジデュアル(residual)信号が最小化され、動きベクトルの大きさも最小になるように予測ブロックを生成することができる。
【0060】
一方、動き情報導出方式は、現在ブロックの予測モードによって変わることができる。インター予測のために適用される予測モードには、AMVP(Advanced Motion Vector Predictor)、マージ(merge)などがある。
【0061】
一例として、AMVP(Advanced Motion Vector Predictor)が適用される場合、符号化装置及び復号化装置は、復元された隣接ブロックの動きベクトル及び/またはcollocated blockの動きベクトルを利用し、予測動きベクトル候補リストを生成することができる。即ち、復元された隣接ブロックの動きベクトル及び/またはcollocated blockの動きベクトルは、予測動きベクトル候補として使われることができる。符号化装置は、前記リストに含まれている予測動きベクトル候補の中から選択された最適の予測動きベクトルを指示する予測動きベクトルインデックスを復号化装置に送信することができる。このとき、復号化装置は、前記予測動きベクトルインデックスを利用し、予測動きベクトル候補リストに含まれている予測動きベクトル候補の中から、現在ブロックの予測動きベクトルを選択することができる。
【0062】
符号化装置は、現在ブロックの動きベクトルと予測動きベクトルとの間の動きベクトル差分(MVD:Motion Vector Difference)を求めることができ、これを符号化して復号化装置に送信することができる。このとき、復号化装置は、受信された動きベクトル差分を復号化することができ、復号化された動きベクトル差分と予測動きベクトルとの和を介して現在ブロックの動きベクトルを導出することができる。
【0063】
また、符号化装置は、参照ピクチャを指示する参照ピクチャインデックスなどを復号化装置に送信することができる。
【0064】
復号化装置は、隣接ブロックの動き情報を利用して現在ブロックの動きベクトルを予測し、符号化装置から受信したレジデュアルを利用して現在ブロックに対する動きベクトルを誘導することができる。復号化装置は、誘導した動きベクトルと符号化装置から受信した参照ピクチャインデックス情報に基づいて現在ブロックに対する予測ブロックを生成することができる。
【0065】
画面間予測に利用される他のモードのうち一つであるスキップモードの場合、隣接ブロックの情報をそのまま現在ブロックに利用することができる。したがって、スキップモードの場合、符号化装置は、現在ブロックの動き情報としていずれのブロックの動き情報を利用するかを指示する情報外にレジデュアルなどのようなシンタックス情報を復号化装置に送信しない。
【0066】
他の例として、併合動き、即ち、マージ(merge)が適用される場合、符号化装置及び復号化装置は、復元された隣接ブロックの動き情報及び/またはcollocated blockの動き情報を利用し、併合動き候補リスト(マージ候補リスト、merge candidate list)を生成することができる。このとき、動き情報とは、動きベクトル、参照映像に対するインデックス、そして予測方向(単方向、両方向等)のうち少なくとも一つを含む。
【0067】
併合動きは、符号化ユニット(Coding Unit:CU、以下‘CU’という)単位の併合動きと予測ユニット(Prediction Unit:PU、以下‘PU’という)単位の併合動きが可能である。CUまたはPU(以下、説明の便宜のために‘ブロック’という)単位に併合動きを実行する場合には、ブロックパーティション(partition)別に併合動きを実行するかどうかに対する情報と、現在ブロックに隣接した隣接ブロック(現在ブロックの左側隣接ブロック、現在ブロックの上側隣接ブロック、現在ブロックの時間的(temporral)隣接ブロック等)のうちいずれのブロックと併合動きをするかに対する情報とを送信する必要がある。
【0068】
併合動き候補リストは、動き情報が格納されたリストを意味し、併合動きが実行される前に生成される。ここで、併合動き候補リストに格納される動き情報は、現在ブロックに隣接した隣接ブロックの動き情報であってもよく、参照映像で現在ブロックに対応される(collocated)ブロックの動き情報であってもよい。また、併合動き候補リストに格納される動き情報は、既に併合動き候補リストに存在する動き情報を組み合わせた新たな動き情報であってもよい。
【0069】
図3は、併合動き候補リストとして使われる現在ブロックの隣接ブロックの一例を示す。
【0070】
併合動き候補リストは、
図3の隣接ブロック(A、B、C、D、E)と、同一位置の候補ブロック(H(または、M))に対して該当ブロックの動き情報が現在ブロックの併合動きに利用可能かどうかを判断し、利用可能な場合には該当ブロックの動き情報を併合動き候補リストに入力することができる。
【0071】
時間的候補予測ブロックとして使われる同一位置候補ブロックは、現在ブロックを含むピクチャ内のピクセル位置(xP,yP)に基づいて現在ブロックのColocated Pictureで(xP+nPSW、yP+nPSH)位置のピクセルを含む予測ブロック(H)であり、または(xP+nPSW、yP+nPSH)位置のピクセルを含む予測ブロックが可用でない場合、(xP+(nPSW>>1),yP+(nPSH>>1))位置のピクセルを含む予測ブロック(M)になることができる。
【0072】
各隣接ブロックは、互いに同じ動き情報を有するかどうかを確認して同じ動き情報の場合、該当隣接ブロックの動き情報は、併合動き候補リストに含まれない。
【0073】
一実施例として、
図3において、Xブロックに対する併合動き候補リストを生成する時、隣接ブロックAが使用可能で併合動き候補リストに含まれる場合、隣接ブロックBは、隣接ブロックAと同じ動き情報でない場合にのみ併合動き候補リストに含まれることができる。同様な方法として、隣接ブロックCは、隣接ブロックBと同じ動き情報でない場合にのみ併合動き候補リストに含まれることができる。同様な方法として、隣接ブロックDと隣接ブロックEに適用されることができる。
【0074】
ここで、同じ動き情報とは、動きベクトルが同じであり、同じ参照ピクチャを使用し、同じ予測方向(単方向(正方向、逆方向)、両方向)を使用することを意味する。
【0075】
最後に、
図3において、Xブロックに対する併合動き候補リストは、所定の順序、例えば、A→B→C→D→E→H(または、M)ブロック順序にリストに追加されることができる。
【0076】
図4は、画面間符号化における動き補償過程を説明するための制御流れ図である。
【0077】
図4のように、動き補償過程は、現在ブロック及び隣接ブロックに対する情報が入力される場合、隣接ブロックに対する可用性を判断するステップ(S410)、動き候補リストを構成するステップ(S420)、構成された動き候補リストを介して現在ブロックに対する動き情報を出力し、最終的に動き補償された映像を出力するステップ(S430)で構成される。
【0078】
図4において、現在ブロックに対する動き候補リストを構成するために使われる隣接ブロックは、複数個に多様に設定されることができ、一例として、
図3の隣接ブロック(A、B、C、D、E)、そして同一位置の候補ブロック(HまたはM))である。
【0079】
図4の第1のステップである隣接ブロックの可用性判断ステップ(S411)は、該当隣接ブロックが存在する場合、該当ブロックが可用であると判断する過程であり、可用性判断の結果としてブロック可用性情報が出力される。ここで、隣接ブロックが存在するとは、隣接ブロックが、現在ブロックが属する同じ映像(ピクチャ)、スライス、タイルの内部に存在して復号過程で接近が可能であることを意味する。本発明において、判断とは、決定または設定の意味として使われることができる。可用性判断時、追加的に該当隣接ブロックが画面内符号化されていない場合にのみ可用であると判断することもできる。
【0080】
判断結果、ブロック可用性情報が‘1’の場合、該当ブロックは、使用可能(一例として、映像内に存在する)であり、‘0’の場合、使用不可能(一例として、映像外に位置して存在しない)であることを示すことができ、その逆も可能である。
【0081】
次に、ブロック可用性情報に基づいて隣接ブロックの動き情報に対する可用性が判断(S413)される。これを介して、該当隣接ブロックの動き情報を現在ブロックの動き候補リストに含ませることができるかどうかを示すブロック動き情報の可用性情報が出力される。
【0082】
ここで、ブロック動き情報の可用性情報が‘1’の場合、該当ブロックは使用可能であり、‘0’の場合、使用不可能であり、その逆も可能である。
【0083】
本発明によると、隣接ブロックに対する動き情報の可用性判断は、任意の順序に実行されることができず、隣接ブロック間に一定の順序制約を守らなければならない。
【0084】
隣接ブロックに対する動き情報の可用性判断が完了される場合、ブロック動き情報の可用性情報に基づいて初期動き候補リストが構成され(S421)、
図3の隣接ブロックは、A→B→C→D→E→H→Mの順序に動き候補リストに追加されることができる。
【0085】
その後、動き候補リストは、再構成されることができ、再構成過程を経て最終動き候補リストが構成されることができる(S423)。
【0086】
最終動き候補リストに含まれている動き候補の中から現在ブロックの動き情報が選択され(S431)、選択された動き情報を利用して現在ブロックに対する動き補償が実行される(S423)。
図4の過程を経て動き補償された映像が出力される。
【0087】
符号化装置は、併合動き候補リストに含まれている併合動き候補の中から最適の符号化効率を提供することができる併合動き候補を現在ブロックに対する動き情報として選択することができる。併合動き候補リストのうち、現在ブロックが併合動きする候補に対するインデックスを併合動きインデックス(merge_idx、以下‘merge_idx’という)といい、前記選択されたマージインデックスがビットストリームに含まれて復号化装置に送信されることができる。
【0088】
併合動き候補リスト内に同じ動き情報が存在する場合には、同じ動き情報のうち一つのみ併合動き候補リストに残す。併合動き候補リスト内の動き情報の数は、所定の個数に設定されることができる。例えば、併合動き候補リスト内の動き情報の数を最大5個(または、任意の数)になるように設定することができる。
【0089】
復号化装置は、送信されたマージインデックスを利用し、併合動き候補リストに含まれているマージ候補の中から一つを選択することができ、前記選択された併合動き候補を現在ブロックの動き情報に決定することができる。したがって、併合動きモードが適用される場合、復元された隣接ブロック及び/またはcollocated blockの動き情報が現在ブロックの動き情報としてそのまま使われることができる。復号化装置は、予測ブロックと符号化装置から送信されるレジデュアルを加えて現在ブロックを復元することができる。
【0090】
併合動きインデックス値が指示されない場合、‘0’を有すると推定(infer)されることができる。
【0091】
図5は、一例によって一個のCUが2個のPUに分けられた場合、併合動き候補リストを設定する一例を示す。図示されているように、CUは、N×2Nでパーティシャニングされ、左側にある1番目の予測ブロックPU0は、PartIdxが0に識別され、右側にある2番目の予測ブロックPU1は、PartIdxが1に識別される。
【0092】
PUに対する隣接ブロックの動き情報は、現在ブロックに隣接した隣接ブロック(A0、A1、B0、B1、B2)の動き情報であり、または参照映像で現在ブロックに対応される(collocated)ブロック(図示せず)の動き情報である。
図5の(a)は、PU0に対する併合動き候補リストを構成するために使われる隣接ブロックを示し、
図5の(b)は、PU1に対する併合動き候補リストを構成するために使われる隣接ブロックを示す。
【0093】
PU1の併合動き候補リスト構成時、同一CU内の他のPUの動き情報を参照しないようにすることによって、他のPUと並列的に併合動き候補リストを構成することができ、そのために、
図5の(b)において、PU0に位置したA1ブロックは、PU1の併合動き候補リストに含まれない。即ち、
図5の(b)において、PU0に位置したA1ブロックは、PU1の併合動き候補リスト構成に使用可能でなく、併合動き候補リスト構成時、A1ブロックの動き情報に接近することができないことを意味する(または、動き情報が存在しないことを意味し、またはブロック動き情報の可用性がないことを意味する)。
【0094】
図6は、他の例によって一個のCUが2個のPUに分けられた場合、併合動き候補リストを設定する一例を示す。図示されているように、CUは、2N×Nでパーティシャニングされ、上段の1番目の予測ブロックPU0は、PartIdxが0に識別され、右側にある下段の予測ブロックPU1は、PartIdxが1に識別される。
【0095】
PUに対する隣接ブロックの動き情報は、現在ブロックに隣接した隣接ブロック(A0、A1、B0、B1、B2)の動き情報であり、または参照映像で現在ブロックに対応される(collocated)ブロック(図示せず)の動き情報である。
図6の(a)は、PU0に対する併合動き候補リストを構成するために使われる隣接ブロックを示し、
図6の(b)は、PU1に対する併合動き候補リストを構成するために使われる隣接ブロックを示す。
【0096】
PU1の併合動き候補リスト構成時、同一CU内の他のPUの動き情報を参照しないようにすることによって、他のPUと並列的に併合動き候補リストを構成することができ、そのために、
図6の(b)において、PU0に位置したB1ブロックは、PU1の併合動き候補リストに含まれない。即ち、
図6の(b)において、PU0に位置したB1ブロックは、PU1の併合動き候補リスト構成に使用可能でなく、併合動き候補リスト構成時、B1ブロックの動き情報に接近することができないことを意味する(または、動き情報が存在しないことを意味し、またはブロック動き情報の可用性がないことを意味する)。
【0097】
一方、本発明は、動き予測のための動き候補リストを構成するにあたって、動き候補リストが構成される対象ブロック(現在ブロックという)と隣接した隣接ブロックに対する動き候補可用性を誘導する方法及び装置に関する。
【0098】
図7は、現在ブロックの隣接ブロックの一例を示す。
【0099】
図7を参照すると、現在ブロック(X)と隣接した隣接ブロックは、左側ブロック(A0、A1)、上側ブロック(B0、B1)、そして隅ブロック(C)に区分することができる。本発明は、このような隣接ブロックに対して動き候補として使用可能かどうかに対する動き情報可用性を決定する順序を制約することによって、同一符号化ユニット(CU)に属する予測ユニット(PU)の動き候補リスト(動き候補リスト)を並列的に構成することを可能にする。
【0100】
図8は、動き情報可用性を決定する順序を制約する方法に対する複数の例を示す。
【0101】
図8を参照すると、本発明による動き情報可用性決定順序制約方式には、(a)上側優先方式、(b)左側優先方式、(c)上側/左側並列方式がある。
【0102】
上側優先方式は、上側ブロックのうち一つに対する動き情報可用性を他の隣接ブロックより最も優先して決定する方式であり、左側優先方式は、左側ブロックのうち一つに対する動き情報可用性を他の隣接ブロックより最も優先して決定する方式である。
【0103】
動き情報可用性決定過程の並列性を高めるために、(c)のように上側/左側並列決定方式を使用することもでき、このとき、左側ブロックに対する動き情報可用性決定と上側ブロックに対する動き情報可用性決定を並列に実行することができるという長所がある。
【0104】
重複した動き情報を有する隣接ブロックが動き候補リストに含まれないように、各隣接ブロックの動き情報可用性決定過程に動き情報の同一性を判断する動き情報同一性判断過程が含まれることができる。
【0105】
例えば、
図7のB0に対する動き情報可用性決定時、B0の動き情報がB1の動き情報と同じ場合には、B0に対する動き情報可用でないと決定することができる。
【0106】
本発明によると、動き情報可用性決定過程に動き情報同一性判断過程が含まれる場合にも、
図8のように動き情報可用性決定順序に制約を受ける。例えば、隣接ブロックに対する動き情報可用性決定順序上、B1がB0より優先する場合にのみ、B0の動き情報がB1の動き情報と同じかどうかによってB0の動き情報可用性を決定することができる。
【0107】
それに対し、即ち、隣接ブロックに対する動き情報可用性決定順序上、B0がB1より優先する場合には、B0の動き情報がB1の動き情報と同じかどうかによってB0の動き情報可用性を決定することができない。
【0108】
本発明では、
図8の三つの動き情報可用性決定順序制約方式のうち、(b)左側優先決定方式を一例として説明する。しかし、隣接ブロックの可用性判断過程を含む前記説明された内容と後述される内容は、(a)上側優先決定方式及び(c)上側/左側並列決定方式に適用されることができ、これは該当分野の通常の知識を有する者には自明であるということができる。
【0109】
本発明によると、
図5の(b)のPU1の併合動き候補リストを構成するにあたって、隣接ブロックB1は、隣接ブロックA1が使用可能でないことを予め知ることができる。したがって、
図5の(b)のPU1の併合動き候補リストを構成するにあたって、隣接ブロックA1の可用性情報を確認することで、隣接ブロックB1と隣接ブロックA1が同じ動き情報を有するかとうかを確認しなくてもよい。
【0110】
即ち、
図5の(b)のPU1の併合動き候補リストを構成するために、PU1と同一CU内に属する隣接ブロックA1の動き情報に接近しなくてもよいため、PU0とPU1の併合動き候補リストを並列的に構成することができる。
【0111】
同様に、
図6の(b)のPU1の併合動き候補リストを構成するにあたって、隣接ブロックB0は、隣接ブロックB1が使用可能でないことを予め知ることができる。したがって、
図6の(b)のPU1の併合動き候補リストを構成するにあたって、隣接ブロックB1の可用性情報を確認することで、隣接ブロックB1と隣接ブロックB0が同じ動き情報を有するかどうかを確認しなくてもよい。
【0112】
即ち、
図6の(b)のPU1の併合動き候補リストを構成するために、PU1と同一CU内に属する隣接ブロックB1の動き情報に接近しなくてもよいため、PU0とPU1の併合動き候補リストを並列的に構成することができる。
【0113】
PUの併合動き候補リストを並列的に構成しながら、隣接ブロックに対する動き情報可用性決定順序を制約する具体的な方法として、順次にブロック動き情報の可用性情報を判断する方法と、隣接ブロックの可用性判断過程後にブロック可用性情報を再設定する方法が存在できる。
【0114】
[方法1]併合動き候補リストを構成するにあたって、順次にブロック動き情報の可用性情報を判断する方法の一例
【0115】
図9は、順次にブロック動き情報の可用性情報を判断する場合、隣接ブロックを示し、現在ブロック(X)の隣接ブロック(A、B、C、D、E)を示す。
【0116】
本発明において、順次とは、現在または以後順序に該当する情報が以前順序に該当する情報に依存的であることを意味する。
【0117】
隣接ブロックに対する動き情報として使用可能かどうか(ブロック動き情報の可用性情報)に対する判断は、既設定された順序に行われることができる。左側ブロックのうち一つに対する動き情報可用性を他の隣接ブロックより最も優先して決定する左側優先決定方式に従う場合、A→B→C→D→Eブロックの順序に該当ブロックの動き情報が現在ブロックの併合動きに利用されることができるかどうかを判断し、利用可能な場合には該当ブロックの動き情報を併合動き候補リストに入力することができる。
【0118】
図10は、一個のCUが複数のPUにパーティシャニングされる例を示す。
【0119】
図10に示すように、CUは、パーティシャニングされず、2N×2NのPUであってもよく、同じ大きさである2N×N、N×2N、N×Nでパーティシャニングされてもよい。また、CUは、2N×nU、2N×nD、nL×2N、nR×2Nのように非対称的にパーティシャニングされてもよい。
【0120】
[方法2]併合動き候補リストを構成するにあたって、ブロック可用性情報を再設定する方法の一例
【0121】
図11は、本発明の一実施例によってブロック可用性情報を再設定する方法を説明するための制御流れ図である。
図11は、
図4の隣接ブロックに対する可用性判断ステップ(S410)において、ブロック可用性情報を再設定する方法の構造図の一例を示す。
【0122】
図11を参照すると、まず、隣接ブロックが存在するかどうかに対する隣接ブロックの可用性が判断される(S1110)。判断結果として、ブロック可用性情報が出力される。
【0123】
その後、隣接ブロックのブロック可用性情報が再設定される(S1120))。
【0124】
一例として、
図5の(b)PU1に対して、併合動き候補リストを他のPUと並列的に構成するために、
図5の(b)PU0に位置したA1ブロックは、PU1の併合動き候補リストに含まれることができない。
【0125】
したがって、
図5の(b)PU0に位置したA1ブロックのブロック可用性情報を‘0’に設定することで、該当ブロックを使用不可能にすることができる。
【0126】
次に、設定されたブロック可用性情報に基づいて隣接ブロックの動き情報に対する可用性を判断する(S1130)。ステップS1130を介して隣接ブロックの動き情報を現在ブロックの動き候補リストに含ませることができるかどうかを示すブロック動き情報の可用性情報が出力される。
【0127】
ブロック動き情報の可用性情報に基づいて初期動き候補リストが構成される。
【0128】
図11のブロック可用性情報を再設定する方法は、一個のCUが複数個のPUに分割される場合(一例として、
図10における2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2N)、即ち、一個のCUで分割されたPUに適用することができる。
【0129】
前述した方法1を利用した復号化過程の一例を示すと、下記の通りである。
【0130】
以下、本発明で使われる用語に対する定義は、下記の通りである。
【0131】
PredModeは、現在PU(Prediction Unit)ブロックの符号化モードを示し、MODE_SKIP、MODE_INTRA、MODE_INTERが存在する。
【0132】
Merge_flagは、現在PUブロックがマージモードに符号化されたかを示す。現在PUブロックがマージモードに符号化された場合、Merge_flagは‘1’に設定され、その反対も設定することができる。
【0133】
merge_idxは、動き情報候補リストで現在PUブロックに対する動き情報を示すインデックスを示す。
【0134】
log2_parallel_merge_level_minus2は、並列マージスキップのレベルを定義する。本発明によると、マージスキップは、画面間予測に適用されるモードのうち、マージモードとスキップモードを同時に示す用語として解釈されることができ、並列マージスキップは、マージモード及び/またはスキップモードを適用する場合、特定領域内のブロック間に併合動き候補リストを並列的に構成することができることを意味する。
【0135】
例えば、log2_parallel_merge_level_minus2の値が‘0’の場合、並列マージスキップが実行されない。log2_parallel_merge_level_minus2の値が‘1’の場合、8×8ブロック内にある全てのPUに対して並列マージスキップが実行される。log2_parallel_merge_level_minus2の値が‘2’の場合、16×16ブロック内にある全てのPUに対して並列マージスキップが実行され、log2_parallel_merge_level_minus2の値が‘3’の場合、32×32ブロック内にある全てのPUに対して並列マージスキップが実行される。log2_parallel_merge_level_minus2の値が‘4’の場合、64×64ブロック内にある全てのPUに対して並列マージスキップが実行される。
【0137】
[1]Z−スキャン可用性誘導過程において、入力は、下記の通りである。
【0138】
(xCurr,yCurr):現在ピクチャの左上端位置と関連した現在ブロックの左上端位置;
【0139】
(xN,yN):現在ピクチャの左上端位置と関連した隣接ブロックの左上端位置
【0140】
Z−スキャン可用性誘導過程において、出力は、下記の通りである。
【0141】
availableN:(xN,yN)位置の隣接ブロックの可用性情報
【0142】
[2]minBlockAddrCurrを現在ブロックに対するz−スキャン順序に最小輝度ブロックの住所と設定する。このとき、minBlockAddrCurrは、下記の通りである。
【0143】
minBlockAddrCurr=MinTbAddrZS[xCurr>>Log2MinTrafoSize][yCurr>>Log2MinTrafoSize]
【0144】
(ここで、MinTbAddrZSは、最小変換ブロック(transform block)におけるz−スキャン順序配列を意味し、log2MinTrafoSizeは、最小変換ブロックの大きさを意味する。)
【0145】
[3]minBlockAddrNを(xN,yN)位置を有する隣接ブロックに対するz−スキャン順序に最小輝度ブロックの住所と設定する。
【0146】
もし、以下の条件((1)乃至(4))のうち一つでも‘トルー’の場合、minBlockAddrNを‘−1’に設定する。
【0149】
(3)xNがpic_width_in_luma_sample(映像の幅)より大きい。
【0150】
(4)yNがpic_height_in_luma_sample(映像の幅)より大きい。
【0151】
そうでない場合(即ち、(xN,yN)位置がピクチャ境界内の場合)、以下を適用する。
【0152】
minBlockAddrN=MinTbAddrZS[xN>>Log2MinTrafoSize][yN>>Log2MinTrafoSize]
【0153】
[4]隣接ブロック可用性情報availableNは、下記の過程を介して誘導される。
【0154】
もし、以下の条件((1)乃至(4))うち一つでも‘トルー(true)’の場合、availableNは‘フォールス(false)’に設定する。
【0155】
(1)minBlockAddrNが‘0’より小さい。
【0156】
(2)minBlockAddrNがminBlockAddrCurrより大きい。
【0157】
(3)minBlockAddrNを有する隣接ブロックを含んでいるスライスの住所インデックスがminBlockAddrCurrを有する現在ブロックを含んでいるスライスの住所インデックスと異なる。
【0158】
(4)minBlockAddrNを有する隣接ブロックがminBlockAddrCurrを有する現在ブロックと異なるタイル(Tile)に位置する(ここで、タイルとは、映像をスライスに分けることと同じ概念であり、タイル間にはブロックの符号化情報を誘導しない)。
【0159】
そうでない場合、availableNは‘トルー’に設定する。
【0160】
予測ブロック(prediction block)の可用性誘導過程
【0161】
[1]予測ブロック(prediction block)の可用性誘導過程において、入力は、下記の通りである。
【0162】
(xC,yC):現在ピクチャの左上端位置と関連した現在輝度符号化ブロックの左上端位置;
【0163】
(nCS):現在CUの大きさを示す変数;
【0164】
(xP,yP):現在ピクチャの左上端位置と関連した現在輝度予測ブロックの左上端位置;
【0165】
(nPbW,nPbH):現在CUブロック内で現在PUの幅と高さを示す変数;
【0166】
(partIdx):現在CUブロック内で現在PUのインデックス;
【0167】
(xN,yN):現在ピクチャの左上端位置と関連した隣接ブロックの位置;
【0168】
予測ブロック(prediction block)の可用性誘導過程において、出力は、下記の通りである。
【0169】
availableN:(xN,yN)位置を有する隣接ブロックの可用性情報
【0170】
[2]変数sameCbは、現在輝度予測ブロックと隣接輝度予測ブロックが同じ輝度符号化ブロックであるかどうかを示すと定義する。
【0171】
もし、以下の条件((1)乃至(4))が全部‘トルー’の場合、sameCbを‘トルー’に設定する。
【0172】
(1)xCがxNより小さいまたは同じである。
【0173】
(2)yCがyNより小さいまたは同じである。
【0174】
(3)(xC+nCbS)がxNより大きい。
【0175】
(4)(yC+nCbS)がyNより大きい。
【0176】
そうでない場合、sameCbは‘フォールス’に設定する。
【0177】
ここで、sameCbが‘トルー’の場合、現在輝度予測ブロックと隣接輝度予測ブロックが同じ輝度符号化ブロックに属するかを意味し、またはその逆も可能である。
【0178】
[3]隣接予測ブロックの可用性情報availableNは、下記のように誘導される。
【0179】
もし、sameCbが‘フォールス’の場合、z−スキャン可用性誘導過程を適用し、availableNを設定する。
【0180】
それに対し、もし、以下の条件((1)乃至(5))が全部‘トルー’の場合、availableNを‘フォールス’に設定する。
【0181】
(1)(nPbW<<1)がnCbSと同じである。
【0182】
(2)(nPbH<<1)がnCbSと同じである。
【0183】
(3)partIdxが‘1’である。
【0184】
(4)(yC+nPbH)がyNより小さいまたは同じである。
【0185】
(5)(xC+nPbW)がxNより大きい。
【0186】
そうでない場合、availableNを‘トルー’に設定する。
【0187】
availableNが‘トルー’であり、且つPredMode[xN][yN]がMODE_INTRAの場合、availableNを‘フォールス’に設定する。
【0188】
動きベクトルと参照ピクチャインデックスを誘導する過程
【0189】
[1]動きベクトルと参照ピクチャインデックスを誘導する過程において、入力は、下記の通りである。
【0190】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0191】
(xB,yB):現在PUの左上端位置;
【0192】
(nCS):現在CUの大きさを示す変数;
【0193】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0194】
(partIdx):現在CUブロック内で現在PUのインデックス
【0195】
動きベクトルと参照ピクチャインデックスを誘導する過程において、出力は、下記の通りである。
【0196】
(mvL0とmvL1):輝度サンプルに対する動きベクトル;
【0197】
(mvCL0とmvCL1):色差サンプルに対する動きベクトル;
【0198】
参照ピクチャインデックス;refIdxL0とrefIdxL1
【0199】
predFlagL0とpredFlagL1:予測リスト利用可能可否(L0またはL1予測を実行するかどうか)を知らせる変数
【0200】
[2]現在PUブロックの位置をxP=xC+xB、yP=yC+yBに設定する。
【0201】
[3]mvL0、mvL1、refIdxL0、refIdxL1、PredFlagL0、PredFlagL1は、下記の過程を介して誘導される。
【0202】
もし、PredModeがMODE_SKIPの場合、マージモードのための輝度動きベクトル誘導過程を実行する。ここで、入力は、(xC,yC)、(xP,yP)、nCS、nPSW、nPSH、partIdxであり、出力は、mvL0、mvL1、refIdxL0、refIdxL1、PredFlagL0、PredFlagL1である。
【0203】
それに対し、もし、PredModeがMODE_INTERであり、且つ現在PUブロックに対するmerge_flagが‘1’の場合、マージモードのための輝度動きベクトル誘導過程を実行する。ここで、入力は、(xC,yC)、(xP,yP)、nCS、nPSW、nPSH、partIdxであり、出力は、mvL0、mvL1、refIdxL0、refIdxL1、PredFlagL0、PredFlagL1である。
【0204】
そうでない場合、mvLX、refIdxLX、PredFlagLXは、シンタックス(syntax)要素ref_idx_lx、mvd_lXにより設定される。ここで、Xは、‘0’または‘1’に変わることができる。
【0205】
マージモードのための輝度動きベクトル誘導過程
【0206】
[1]マージモードのための輝度動きベクトル誘導過程において、入力は、下記の通りである。
【0207】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0208】
(xP,yP):現在PUの左上端位置;
【0209】
(nCS):現在CUの大きさを示す変数;
【0210】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0211】
(partIdx):現在CUブロック内で現在PUのインデックス;
【0212】
マージモードのための輝度動きベクトル誘導過程において、出力は、下記の通りである。
【0213】
(mvL0とmvL1):輝度サンプルに対する動きベクトル;
【0214】
refIdxL0とrefIdxL1:参照ピクチャインデックス;
【0215】
predFlagL0とpredFlagL1:予測リスト利用可能可否(L0またはL1予測を実行するかどうか)を知らせる変数
【0216】
[2]変数singleMCLFlag(共通のマージ候補リストフラグ)は、下記のように誘導される。
【0217】
もし、log2_parallel_merge_level_minus2の値が‘0’より大きく、且つnCS値が‘8’の場合、singleMCLFlagに‘1’を設定する。
【0218】
そうでない場合、singleMCLFlagに‘0’を設定する。
【0219】
[3]現在PUの左上端位置(xP,yP)、現在PUの幅と高さを示す変数(nPSW,nPSH)は、下記のように誘導される。
【0220】
もし、singleMCLFlagが‘1’の場合、xPにxCを入力し、yPにyCを入力し、nPSWとnPSHにnCSを入力する。
【0221】
補足説明:singleMCLFlagの値が‘1’に設定される場合、一つのCU内の全てのPUブロックは、パーティション形態に関係なしで2N×2N PUに対するマージ候補リストを共有する。
【0222】
[4]マージ符号化モードで使用するマージ候補リストを構成し、現在PUに対する動き情報(mvL0、mvL1、refIdxL0、refIdxL1、PredFlagL0、PredFlagL1)を設定するステップは、下記のような順序に実行される。
【0223】
[4−1]現在PUを含む現在CUの隣接PUからマージ動き候補を設定する過程を実行する。
【0224】
ここで、入力は、(xP,yP)、nPSH、nPSW、singleMCLFlagであり、出力は、availableFlagN(隣接PUの使用可能可否を知らせる変数)、mvL0N、mvL1N、refIdxL0N、refIdxL1N、PredFlagL0N、PredFlagL1Nである(ここで、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、Xは、‘0’または‘1’に変わることができる)。
【0225】
[4−2]時間的マージ動き候補を使用するための参照ピクチャインデックスrefIdxLXは、‘0’に設定される。ここで、Xは、‘0’または‘1’に変わることができる。
【0226】
[4−3]時間的に類推された動き情報をマージ動き候補に設定する過程を実行する。ここで、入力は、(xP,yP)、nPSH、nPSW、refIdxLXであり、出力は、availableFlagLXCol(時間的に類推された動き情報の使用可能可否を知らせる変数)、mvLXCol(時間的に類推された動き情報)である。
【0227】
availableFlagCol(時間的に類推された動き情報の使用可能可否を知らせる変数)とPredFlagLXCol(時間的に類推された動き情報に対する予測リスト利用可能可否(L0またはL1予測を実行するかどうか)を知らせる変数)は、下記のように設定される。
【0228】
availableFlagCol=availableFlagL0Col||availableFlagL1Col
【0229】
PredFlagLXCol=availableFlagLXCol
【0230】
[4−4]次に、マージ候補リストを下記のように構成する。
【0231】
図12は、現在ブロックのマージ候補リスト生成を説明するための現在ブロック及び隣接ブロックを示す。
【0232】
現在ブロック、即ち、予測対象ブロックの左上端に存在するピクセルの位置を(xP,yP)とし、予測対象ブロックの幅をnPSW、予測対象ブロックの高さをnPSHという変数で定義する。
【0233】
以下、本発明の実施例では、現在ブロックの空間的な隣接予測ブロックは、(xP−1,yP+nPSH−1)に存在するピクセルを含む左側A1ブロック、(xP−1,yP+nPSH)に存在するピクセルを含むA0ブロック、(xP+nPSW,yP−1)に位置するピクセルを含むB0ブロック、(xP+nPSW−MinPuSize,yP−1)に位置するピクセルを含むB1ブロック、(xP−MinPuSize,yP−1)に位置するピクセルを含むB2ブロックを含むことができる。
【0234】
図12のA1、B1、B0、A0、B2、Colの順に該当ブロックの動き情報が使用可能な場合、該当ブロックの動き情報をマージ候補リストに順序通りに入力する。ここで、Colは、時間的に類推された動き情報を意味する。
【0235】
[4−5]マージ候補リスト内で同じ動き情報が存在する場合、該当動き情報を一つのみ残すステップを実行する。
【0236】
[4−6]マージ候補リストの動き情報個数を設定し、最大マージ候補リストの個数を‘5’に設定するステップを実行する。
【0237】
[4−7]Bピクチャの時、結合両予測マージ候補を追加するステップを実行する。
【0238】
[4−8]ゼロ(0,0)動き情報をマージ候補に追加するステップを実行する。
【0239】
[4−9]マージ候補リストでmerge_idxに存在する動き情報を現在PUの動き情報に設定するステップを実行する。
【0240】
現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップ
【0241】
[1]現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップにおいて、入力は、下記の通りである。
【0242】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0243】
(xP,yP):現在PUの左上端位置;
【0244】
(nCS):現在CUの大きさを示す変数;
【0245】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0246】
singleMCLFlag:現在CUに対する共通のマージ候補リストの使用可否を示す変数;
【0247】
(partIdx):現在CUブロック内で現在PUのインデックス;
【0248】
現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップにおいて、出力は、下記の通りである(ここで、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、Xは、‘0’または‘1’に変わることができる)。
【0249】
availableFlagN:隣接PU Nの動き情報可用性可否を知らせる変数;
【0250】
refIdxLXN:隣接PU Nの参照インデックス;
【0251】
predFlagLXN:隣接PU Nに対する予測リスト利用可能可否を知らせる変数;
【0252】
mvLXN:隣接PU Nに対する動きベクトル
【0253】
[2]下記[3]の過程を介して隣接PU A0、A1、B0、B1またはB2のavailableFlagNを誘導するために、下記の左側優先決定方式による誘導順序(制限)を適用する。
【0254】
A1は、A0、B0、B1、そしてB2より先にavailableFlagN(ここで、N=A1)を誘導しなければならない。
【0255】
B1は、B0とB2より先にavailableFlagN(ここで、N=B1)を誘導しなければならない。
【0256】
B2は、A0、A1、B0、そしてB1の次にavailableFlagN(ここで、N=B2)を誘導しなければならない。
【0257】
前記左側優先決定方式の順序制約に合う隣接ブロックの動き情報可用性誘導順序の例は、下記の通りである:
【0260】
A1→B1→A0及びB0(並列誘導)→B2
【0262】
A1→A0及びB1(並列誘導)→B0→B2
【0263】
[3]現在PUの隣接PU(空間的PU)がマージ動き候補として使用可能かどうかを判断するための過程は、以下の内容を適用する(ここで、隣接PUは、
図12のA1、B1、B0、A0、B2を意味し、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、(xN,yN)は、(xC−1,yC+nCS)、(xC−1,yC+nCS−1)、(xC+nCS,yC−1)、(xC+nCS−1,yC−1)、(xC−1,yC−1)に変わることができる)。
【0264】
[3−1]隣接PUの可用性を判断する過程を実行し、入力は、(xC,yC)、(xP,yP)、nPbW、nPbH、(xN,yN)、そしてpartIdxであり、出力は、(xN,yN)に位置したPUの可用性情報availableNである。
【0265】
[3−3]もし、以下の条件((1)乃至(10))のうち一つでも‘トルー’の場合、availableFlagNは‘0’に設定され、mvLXNは‘0,0’に設定される。
【0266】
(1)(xP>>(log2_parallel_merge_level_minus2+2))が(xN>>(log2_parallel_merge_level_minus2+2))と同じであり、(yP>>(log2_parallel_merge_level_minus2+2))が(yN>>(log2_parallel_merge_level_minus2+2))と同じである。
【0267】
(2)NがB2であり、availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1が‘4’である。
【0268】
(3)[xN,yN]の位置にあるPUが使用不可能であり、または画面内モードに符号化された。即ち、availableNが‘0’である。
【0269】
(4)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_2N×NまたはPART_2N×nUまたはPART_2N×nDであり、PartIdxが‘1’であり、Nが‘B1’である。
【0270】
(5)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_N×2NまたはPART_nL×2NまたはPART_nR×2Nであり、PartIdxが‘1’であり、Nが‘A1’である。
【0271】
(6)動き情報同一性判断過程として、NがB1であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0272】
(7)動き情報同一性判断過程として、NがB0であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0273】
(8)動き情報同一性判断過程として、NがA0であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0274】
(9)動き情報同一性判断過程として、NがB2であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0275】
(10)動き情報同一性判断過程として、NがB2であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0276】
そうでない場合、availableFlagNは‘1’に設定され、mvLXN、refIdxLXN、predFlagLXNは、各々、mvLX[xN,yN]、refIdxLX[xN,yN]、predFlagLX[xN,yN]に設定される。
【0277】
方法1の現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップは、本発明の一例によって下記のように変形されることができる。
【0278】
[1]現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップの入力は、下記の通りである。
【0279】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0280】
(xP,yP):現在PUの左上端位置;
【0281】
(nCS):現在CUの大きさを示す変数;
【0282】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0283】
singleMCLFlag:現在CUに対する共通のマージ候補リストの使用可否を示す変数;
【0284】
(partIdx):現在CUブロック内で現在PUのインデックス
【0285】
このステップにおいて、出力は、下記の通りである(ここで、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、Xは、‘0’または‘1’に変わることができる)。
【0286】
availableFlagN:隣接PU Nの動き情報可用性可否を知らせる変数;
【0287】
refIdxLXN:隣接PU Nの参照インデックス;
【0288】
predFlagLXN:隣接PU Nに対する予測リスト利用可能可否を知らせる変数;
【0289】
mvLXN:隣接PU Nに対する動きベクトル;
【0290】
[2]下記[3]の過程を介して隣接PU A0、A1、B0、B1、またはB2のavailableFlagNを誘導するために、下記の誘導順序(制限)を適用する。
【0291】
B2は、A0、A1、B0、そしてB1の次にavailableFlagN(ここで、N=B2)を誘導する。
【0292】
[3]現在PUの隣接PU(空間的PU)がマージ動き候補として使用可能かどうかを判断するための過程は、下記の通りである(ここで、隣接PUは、
図12のA1、B1、B0、A0、B2であり、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、(xN,yN)は、(xC−1,yC+nCS)、(xC−1,yC+nCS−1)、(xC+nCS,yC−1)、(xC+nCS−1,yC−1)、(xC−1,yC−1)に変わることができる)。
【0293】
[3−1]隣接PUの可用性を判断し、このステップにおいて、入力は、(xC,yC)、(xP,yP)、nPbW、nPbH、(xN,yN)、そしてpartIdxであり、出力は、(xN,yN)に位置したPUの可用性情報availableNである。
【0294】
[3−2]もし、以下の条件((1)乃至(3))のうち一つでも‘トルー’の場合、availableNは‘0’に設定する。
【0295】
(1)もし、(xP>>(log2_parallel_merge_level_minus2+2))が(xN>>(log2_parallel_merge_level_minus2+2))と同じであり、(yP>>(log2_parallel_merge_level_minus2+2))が(yN>>(log2_parallel_merge_level_minus2+2))と同じである。
【0296】
(2)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_2N×NまたはPART_2N×nUまたはPART_2N×nDであり、PartIdxが‘1’であり、Nが‘B1’である。
【0297】
(3)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_N×2NまたはPART_nL×2NまたはPART_nR×2Nであり、PartIdxが‘1’であり、Nが‘A1’である。
【0298】
[3−2]もし、以下の条件のうち一つでも‘トルー’の場合、availableFlagNは‘0’に設定され、mvLXNは(0,0)に設定される。
【0299】
(1)NがB2であり、availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1が‘4’である。
【0300】
(2)[xN,yN]の位置にあるPUが使用不可能であり、またはイントラに符号化された。即ち、availableNが‘0’である。
【0301】
(3)動き情報同一性判断過程として、NがB1であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0302】
(4)動き情報同一性判断過程として、NがB0であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0303】
(5)動き情報同一性判断過程として、NがA0であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0304】
(6)動き情報同一性判断過程として、NがB2であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0305】
(7)動き情報同一性判断過程として、NがB2であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0306】
[3−3]そうでない場合、availableFlagNは‘1’に設定され、mvLXN、refIdxLXN、predFlagLXNには、各々、mvLX[xN,yN]、refIdxLX[xN,yN]、predFlagLX[xN,yN]が設定される。
【0307】
方法1の現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップは、本発明の他の例によって下記のように変形されることができる。
【0308】
[1]現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップにおいて、入力は、下記の通りである。
【0309】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0310】
(xP,yP):現在PUの左上端位置;
【0311】
(nCS):現在CUの大きさを示す変数;
【0312】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0313】
singleMCLFlag:現在CUに対する共通のマージ候補リストの使用可否を示す変数;
【0314】
(partIdx):現在CUブロック内で現在PUのインデックス:
【0315】
このステップにおいて、出力は、下記の通りである。ここで、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、Xは‘0’または‘1’に変わることができる。
【0316】
availableFlagN:隣接PU Nの動き情報可用性可否を知らせる変数;
【0317】
refIdxLXN:隣接PU Nの参照インデックス;
【0318】
predFlagLXN:隣接PU Nに対する予測リスト利用可能可否を知らせる変数;
【0319】
mvLXN:隣接PU Nに対する動きベクトル
【0320】
[2]現在PUの隣接PU(空間的PU)がマージ動き候補として使用可能かどうかを判断するための過程は、下記の内容を適用する。ここで、隣接PUは、
図12のA1、B1、B0、A0を意味し、Nは、
図12のA1、B1、B0、A0に変わることができ、(xN,yN)は、(xC−1,yC+nCS)、(xC−1,yC+nCS−1)、(xC+nCS,yC−1)、(xC+nCS−1,yC−1)に変わることができる。
【0321】
[2−1]隣接PUの可用性を判断する過程を実行し、ここで、入力は、(xC,yC)、(xP,yP)、nPbW、nPbH、(xN,yN)、そしてpartIdxであり、出力は、(xN,yN)に位置したPUの可用性情報availableNである。
【0322】
[2−2]もし、以下の条件((1)乃至(10))のうち一つでも‘トルー’の場合、availableNは‘0’に設定する。
【0323】
(1)(xP>>(log2_parallel_merge_level_minus2+2))が(xN>>(log2_parallel_merge_level_minus2+2))と同じであり、(yP>>(log2_parallel_merge_level_minus2+2))が(yN>>(log2_parallel_merge_level_minus2+2))と同じである。
【0324】
(2)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_2N×NまたはPART_2N×nUまたはPART_2N×nDであり、PartIdxが‘1’であり、Nが‘B1’である。
【0325】
(3)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_N×2NまたはPART_nL×2NまたはPART_nR×2Nであり、PartIdxが‘1’であり、Nが‘A1’である。
【0326】
(4)もし、以下の条件のうち一つでも‘トルー’の場合、availableFlagNは‘0’に設定され、mvLXNは‘0,0’に設定される。
【0327】
(5)[xN,yN]の位置にあるPUが使用不可能であり、またはイントラに符号化された(即ち、availableNが‘0’である)。
【0328】
(6)動き情報同一性判断過程として、NがB1であり、availableA1=1であり、そして(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0329】
(7)動き情報同一性判断過程として、NがB0であり、availableB1=1であり、そして(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0330】
(8)動き情報同一性判断過程として、NがA0であり、availableA1=1であり、そして(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0331】
(9)動き情報同一性判断過程として、NがB2であり、availableA1=1であり、そして(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0332】
(10)動き情報同一性判断過程として、NがB2であり、availableB1=1であり、そして(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0333】
そうでない場合、availableFlagNは‘1’に設定され、mvLXN、refIdxLXN、predFlagLXNには、各々、mvLX[xN,yN]、refIdxLX[xN,yN]、predFlagLX[xN,yN]が設定される。
【0334】
[3]A0、A1、B0、そしてB1の次にB2のavailableFlagN(ここで、N=B2)が誘導される。現在CUの隣接PU(空間的PU)のうち、B2がマージ動き候補として使用可能かどうかを判断するための過程は、下記の内容を適用する。ここで、(xB2,yB2)は、(xC−1,yC−1)に変わることができる。
【0335】
[3−1]隣接PUの可用性を判断する過程を実行し、ここで、入力は、(xC,yC)、(xP,yP)、nPbW、nPbH、(xB2,yB2)、そしてpartIdxであり、出力は、(xB2,yB2)に位置したPUの可用性情報availableB2である。
【0336】
[3−2]もし、以下の条件が‘トルー’の場合、availableFlagB2は‘0’に設定され、mvLXB2は‘0,0’に設定される。
【0337】
availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1が‘4’である。
【0338】
そうでない場合、availableFlagB2は‘1’に設定され、mvLXB2、refIdxLXB2、predFlagLXB2には、各々、mvLX[xB2,yB2]、refIdxLX[xB2,yB2]、predFlagLX[xB2,yB2]が設定される。
【0339】
方法1の現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップは、本発明の他の例によって下記のように変形されることができる。
【0340】
[1]現在PUの隣接PU(空間的PU)からマージ動き候補を設定するステップにおいて、入力は、下記の通りである。
【0341】
(xC,yC):現在CU(Coding Unit)ブロックの左上端位置;
【0342】
(xP,yP):現在PUの左上端位置;
【0343】
(nCS):現在CUの大きさを示す変数;
【0344】
(nPSW,nPSH):現在PUの幅と高さを示す変数;
【0345】
singleMCLFlag:現在CUに対する共通のマージ候補リストの使用可否を示す変数;
【0346】
現在CUブロック内で現在PUのインデックス:(partIdx)
【0347】
このステップにおいて、出力は、下記の通りである(ここで、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、Xは‘0’または‘1’に変わることができる)。
【0348】
availableFlagN:隣接PU Nの動き情報可用性可否を知らせる変数;
【0349】
refIdxLXN:隣接PU Nの参照インデックス;
【0350】
predFlagLXN:隣接PU Nに対する予測リスト利用可能可否を知らせる変数;
【0351】
mvLXN:隣接PU Nに対する動きベクトル
【0352】
[2]現在PUの隣接PU(空間的PU)がマージ動き候補として使用可能かどうかを判断するための過程は、左側優先決定方式によってA1→B1→B0→A0→B2ブロックの順序に実行される。ここで、隣接PUは、
図12のA1、B1、B0、A0、B2を意味し、Nは、
図12のA1、B1、B0、A0、B2に変わることができ、(xN,yN)は、(xC−1,yC+nCS)、(xC−1,yC+nCS−1)、(xC+nCS,yC−1)、(xC+nCS−1,yC−1)、(xC−1,yC−1)に変わることができる。
【0353】
[2−1]隣接PUの可用性を判断する過程を実行し、ここで、入力は、(xC,yC)、(xP,yP)、nPbW、nPbH、(xN,yN)、そしてpartIdxであり、出力は(xN,yN)に位置したPUの可用性情報availableNである。
【0354】
[2−2]もし、以下の条件((1)乃至(10))のうち一つでも‘トルー’の場合、availableFlagNは‘0’に設定され、mvLXNは‘0,0’に設定される。
【0355】
(1)(xP>>(log2_parallel_merge_level_minus2+2))が(xN>>(log2_parallel_merge_level_minus2+2))と同じであり、(yP>>(log2_parallel_merge_level_minus2+2))が(yN>>(log2_parallel_merge_level_minus2+2))と同じである。
【0356】
(2)NがB2であり、availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1が‘4’である。
【0357】
(3)[xN,yN]の位置にあるPUが使用不可能であり、またはイントラに符号化された。即ち、availableNが‘0’である。
【0358】
(4)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_2N×NまたはPART_2N×nUまたはPART_2N×nDであり、PartIdxが‘1’であり、Nが‘B1’である。
【0359】
(5)singleMCLFlagが‘0’であり、現在PUのパーティション形態がPART_N×2NまたはPART_nL×2NまたはPART_nR×2Nであり、PartIdxが‘1’であり、Nが‘A1’である。
【0360】
(6)動き情報同一性判断過程として、NがB1であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0361】
(7)動き情報同一性判断過程として、NがB0であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0362】
(8)動き情報同一性判断過程として、NがA0であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0363】
(9)動き情報同一性判断過程として、NがB2であり、(xA1,yA1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0364】
(10)動き情報同一性判断過程として、NがB2であり、(xB1,yB1)に位置したPUの動き情報と(xN,yN)に位置した動き情報が同じである。
【0365】
そうでない場合、availableFlagNは‘1’に設定され、mvLXN、refIdxLXN、predFlagLXNには、各々、mvLX[xN,yN]、refIdxLX[xN,yN]、predFlagLX[xN,yN]が設定される。
【0366】
前述した方法は、ブロックの大きさまたはCU深さ等によって適用範囲を異なるようにすることができる。このように適用範囲を決定する変数(即ち、大きさまたは深さ情報)は、符号化器及び復号化器が予め決められた値を使用するように設定することもでき、プロファイルまたはレベルによって決められた値を使用するように設定することもでき、符号化器が変数値をビットストリームに記載すると、復号化器は、ビットストリームからこの値を誘導して使用することもできる。
【0367】
CU深さによって適用範囲を異なるようにする場合、以下の表1に例示したように、方法(A)与えられた深さ以上の深さにのみ適用する方式、方法(B)与えられた深さ以下にのみ適用する方式、方法(C)与えられた深さにのみ適用する方式がある。
【0369】
表1の“○”は、該当深さに可用性可否を判断する方法を適用することを示し、“X”は、該当深さに可用性可否を判断する方法を適用しないことを示す。
【0370】
表1を参照すると、CU深さが2の場合、前述した方法が全部適用されることができる。表1は、一つの例を示すものであり、これは変更可能である。
【0371】
前述した実施例において、方法は、一連のステップまたはブロックで流れ図に基づいて説明されているが、本発明は、ステップの順序に限定されるものではなく、あるステップは、前述と異なるステップと、異なる順序にまたは同時に発生できる。また、当該技術分野において、通常の知識を有する当業者であれば、流れ図に示すステップが排他的でなく、他のステップが含まれ、または流れ図の一つまたはそれ以上のステップが本発明の範囲に影響を及ぼさすに削除可能であることを理解することができる。
【0372】
前述した実施例は、多様な態様の例示を含む。多様な態様を示す全ての可能な組み合わせを記述することはできないが、当該技術分野の通常の知識を有する者であれば、他の組み合わせが可能であることを認識することができる。したがって、本発明は、特許請求の範囲内に属する全ての交替、修正、及び変更を含む。