(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
映像復号化の方法は、テーブルを維持することであって、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられる、ことと、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことであって、変換を行うことは、動き候補のセットのうちの少なくとも一部を予測因子として使用して第1の映像ブロックの動き情報を処理する、こととを含むように提供される。
前記変換を行うことは、動き候補の前記セットの少なくとも一部を使用して、AMVP(Advanced Motion Vector Prediction)候補リスト導出処理を行うこと含む、請求項1に記載の方法。
前記規則は、TMVP(Temporal Motion Vector Prediction)候補をチェックした後、AMVP候補リストが満杯でない場合、前記チェックを有効にする、請求項7に記載の方法。
前記規則は、空間的近傍から選択し、プルーニングした後、TMVP候補を挿入する前に、AMVP候補リストが満杯でない場合、前記チェックを有効にする、請求項7に記載の方法。
前記規則は、i)上側の近傍のブロックからのAMVP候補がスケーリングなしで存在しない場合、または、ii)左側の近傍のブロックからのAMVP候補がスケーリングなしで存在しない場合、前記チェックを有効にする、請求項7に記載の方法。
前記同一の参照ピクチャを有する前記動き候補をチェックすることは、前記異なる参照ピクチャを有する前記動き候補をチェックすることに先立って実行される、請求項13に記載の方法。
前記複数の工程は、AMVP候補リストにおいてM個の候補が利用可能である場合に、前記プルーニングが、K個のAMVP候補にのみ適用され、K≦Mであり、KおよびMは整数である、請求項17に記載の方法。
前記変換を行うことは、いくつかの動きベクトルの差分を用いて、SMVD(Symmetric Motion Vector Difference)処理を行うことを含む、請求項1に記載の方法。
前記変換を行うことは、いくつかの動きベクトルを用いて、SMV(Symmentric MotionVector)処理を行うことを含む、請求項1に記載の方法。
双方向予測候補である動き候補の場合、第2の参照ピクチャリストの参照ピクチャがチェックされる前に、第1の参照ピクチャリストの参照ピクチャがチェックされ、前記第1の参照ピクチャリストは現在の参照対象ピクチャリストである、請求項1に記載の方法。
双方向予測候補である動き候補の場合、第2の参照ピクチャリストの参照ピクチャがチェックされる前に、第1の参照ピクチャリストの参照ピクチャがチェックされ、前記第2の参照ピクチャリストが現在の参照対象ピクチャリストである、請求項1または2に記載の方法。
動き候補は、予測方向、参照ピクチャインデックス、動きベクトル値、強度補償フラグ、アフィンフラグ、動きベクトル差精度、または動きベクトル差分値のうち少なくとも1つを含む動き情報に関連付けられる、請求項1〜28のいずれか1項に記載の方法。
1つの動き候補は、IC符号化されたブロックに用いられる複数のIC(Illuminaiton Compensation)パラメータに関連付けられる、請求項1〜29のいずれか1項に記載の方法。
1つ以上のテーブルを前記更新することは、前記変換を行った後、前記第1の映像ブロックの動き情報に基づいて1つ以上のテーブルを更新することを含む、請求項33に記載の方法。
プロセッサと、命令を搭載した非一時的メモリとを備える装置であって、前記命令は、前記プロセッサにより実行された際に、前記プロセッサに、請求項1〜35のいずれか1つ以上に記載の前記方法を実行させる、装置。
非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、請求項1〜35のいずれか1つ以上に記載の前記方法を実行するためのプログラムコードを含む、コンピュータプログラム製品。
【発明を実施するための形態】
【0009】
映像の圧縮率を改善するために、研究者らは、映像を符号化する新しい技術を絶えず求めている。
【0011】
本明細書は、映像符号化技術に関する。具体的には、映像符号化における動き情報の符号化(例えば、マージモード、AMVPモード)に関する。HEVCのような既存の映像符号化規格に適用してもよいし、規格(Versatile Video Coding)を確定させるために適用してもよい。本発明は、将来の映像符号化規格または映像コーデックにも適用可能である。
【0013】
映像符号化規格は、主に周知のITU−TおよびISO/IEC規格の開発によって発展してきた。ITU−TはH.261とH.263を作り、ISO/IECはMPEG−1とMPEG−4 Visualを作り、両団体はH.262/MPEG−2 VideoとH.264/MPEG−4 AVC(Advanced Video Coding)とH.265/HEVC規格を共同で作った。H.262以来、映像符号化規格は、時間予測と変換符号化が利用されるハイブリッド映像符号化構造に基づく。典型的なHEVCエンコーダフレームワークの一例を
図1に示す。
【0015】
2.1.1 H.264/AVCにおけるパーティションツリー構造
【0016】
以前の規格における符号化層のコアは、16×16ブロックの輝度サンプルを含み、通常の4:2:0カラーサンプリングの場合、2つの対応する8×8ブロックの彩度サンプル含むマクロブロックであった。
【0017】
イントラ符号化されたブロックは、画素間の空間的相関を利用するために空間予測を使用する。2つのパーティションを規定する。16×16および4×4である。
【0018】
インター符号化されたブロックは、ピクチャ間の動きを推定することで、空間的予測の代わりに時間予測を用いる。動きは、16×16マクロブロックまたはそのサブマクロブロックパーティションのいずれかに対して独立して推定できる。16×8、8×16、8×8、8×4、4×8、4×4(
図2参照)。1つのサブマクロブロックパーティション当たり1つの動きベクトル(MV)のみが許可される。
【0019】
2.1.2 HEVCにおけるパーティションツリー構造
【0020】
HEVCにおいて、CTUは、様々な局所的特徴に適応するように、符号化ツリーと呼ばれる4分木構造を用いてCUに分割される。インターピクチャ(時間的)予測またはイントラピクチャ(空間的)予測を使用した、ピクチャ領域を符号化するかどうかの決定は、CUレベルで行われる。各CUは、PU分割タイプに応じて1つ、2つまたは4つのPUに更に分割することができる。1つのPUの内部では、同じ予測処理が適用され、PU単位で関連情報がデコーダに送信される。PU分割タイプに基づく予測処理を適用して残差ブロックを得た後、CUのための符号化ツリーに類似した別の4分木構造に基づいて、CUを変換ユニット(TU)に分割することができる。HEVC構造の重要な特徴の1つは、CU、PU、TUを含む複数のパーティション概念を有することである。
【0021】
以下、HEVCを使用したハイブリッド映像符号化に関連する様々な特徴に焦点を当てる。
【0022】
1)符号化ツリーユニットおよび符号化ツリーブロック(CTB)構造。HEVCにおける類似した構造は、符号化ツリーユニット(CTU)であり、この符号化ツリーユニットは、エンコーダによって選択されたサイズを有し、従来のマクロブロックよりも大きくてもよい。CTUは、輝度CTBと、対応する彩度CTBおよび構文要素とからなる。輝度CTBのサイズL×Lは、L=16、32、または64のサンプルとして選択することができ、より大きいサイズは、一般的に、より優れた圧縮を有効にする。HEVCは、次いで、ツリー構造および4分木様の信号通知を使用して、CTBをより小さなブロックに分割することをサポートする。
【0023】
2)符号化ユニット(CU)および符号化ブロック(CB):CTUの4分木の構文は、その輝度および彩度CBのサイズおよび位置を指定する。4分木のルートはCTUに関連付けられる。従って、輝度CTBのサイズは、輝度CBに対してサポートされる最大のサイズである。CTUを輝度CBおよび彩度CBに分割することは、共に信号通知されることである。1つの輝度CBおよび通常2つの彩度CBは、関連する構文と共に、1つの符号化ユニット(CU)を形成する。CTBは、1つのCUのみを含んでもよく、または複数のCUを形成するように分割されてもよく、各CUは、それに関連付けられた予測ユニット(PU)への分割と、1つの変換ユニットのツリー(TU)とを有する。
【0024】
3)予測ユニットおよび予測ブロック(PB):インターピクチャまたはイントラピクチャ予測を使用してピクチャ領域を符号化するかどうかの決定は、CUレベルで行われる。PUの分割構造は、そのルートがCUレベルにある。基本的な予測タイプの決定に基づいて、次に、輝度および彩度CBのサイズをさらに分割し、輝度および彩度予測ブロック(PB)から予測することができる。HEVCは、64×64から4×4までの可変PBサイズのサンプルをサポートする。
図3は、M×MのCUのための許可されたPBの例を示す。
【0025】
4)TUおよび変換ブロック:予測残差は、ブロック変換を使用して符号化される。TUツリー構造は、そのルートがCUレベルにある。この輝度CB残差は、輝度変換ブロック(TB)と同一であってもよいし、小さな輝度TBにさらに分割されてもよい。彩度TBについても同様である。正方形TBサイズ4×4、8×8、16×16、および32×32に対して、離散コサイン変換(DCT)の整数基底関数に類似した整数基底関数が規定される。輝度イントラピクチャ予測残差の4×4変換のために、離散サイン変換(DST)の形式から導出される整数変換が代替的に指定される。
【0026】
図4は、CTBをCB[及び変換ブロック(TB)]に細分する例を示す。実線はCB境界を示し、点線はTB境界を示す。(a)CTBとその分割(b)対応する4分木。
【0027】
2.1.2.1 変換ブロックおよびユニットへのツリー構造の分割
【0028】
残差符号化の場合、CBは、変換ブロック(TB)に再帰的に分割することができる。この分割は、残差4分木によって信号通知される。
図4に示すように、1つのブロックを再帰的に象限に分割することができるように、正方形のCBおよびTBの分割のみを指定する。サイズM×Mの所与の輝度CBに対して、フラグは、それがサイズM/2×M/2の4つのブロックに分割されるかどうかを信号通知する。さらなる分割が可能である場合、SPSに示される残留4分木の最大深さによって信号通知されるように、各象限には、それが4つの象限に分割されているかどうかを示すフラグが割り当てられる。残差4分木の結果得られる葉ノードブロックは、変換符号化によってさらに処理される変換ブロックである。エンコーダは、それが使用することになる最大および最小輝度TBサイズを示す。CBサイズが最大TBサイズよりも大きい場合、分割は非明示的に行われる。分割により、示された最小値よりも小さい輝度TBサイズとなる場合、分割を行わないことが、非明示的に行われる。輝度TBサイズが4×4である場合を除き、彩度TBサイズは、各次元において輝度TBサイズの半分であり、この場合、4つの4×4輝度TBによって覆われる領域には1つの4×4彩度TBが使用される。イントラピクチャ予測CUの場合、最近の近傍のTB(CB内またはCB外)の復号サンプルを、イントラピクチャ予測のための参照データとして用いる。
【0029】
従来の規格とは対照的に、HEVC設計により、インターピクチャ予測CUのために1つのTBが複数のPBにまたがることが可能となり、4分木構造のTBの分割の潜在的な符号化効率の利点が最大となる。
【0031】
CTBは、4分木構造に基づいて分割され、そのノードは符号化ユニットである。4分木構造における複数のノードは、葉ノードおよび非葉ノードを含む。葉ノードは、ツリー構造内に子ノードを持たない(すなわち、葉ノードはそれ以上分割されない)。非葉ノードは、ツリー構造のルートノードを含む。ルートノードは、映像データの最初の映像ブロック(例えば、CTB)に対応する。複数のノードのうちのそれぞれの非ルートノードにおいて、それぞれの非ルートノードは、それぞれの非ルートノードのツリー構造における親ノードに対応する映像ブロックのサブブロックである映像ブロックに対応する。複数の非葉ノードのそれぞれの非葉ノードは、ツリー構造において1つ以上の子ノードを有する。
【0032】
2.1.3 JEMにおけるより大きいCTUを有する4分木+2分木ブロック構造
【0033】
HEVCを超えた将来の映像符号化技術を探索するため、2015年には、VCEGとMPEGが共同でJVET(Joint Video Exploration Team)を設立した。それ以来、多くの新しい方法がJVETによって採用され、JEM(Joint Exploration Mode)と呼ばれる参照ソフトウェアに組み込まれてきた。
【0034】
2.1.3.1 QTBTブロックの分割構造
【0035】
HEVCとは異なり、QTBT構造は、複数のパーティションタイプの概念を削除する。すなわち、CU、PU、TUのコンセプトの切り離しを取り除き、CUパーティションの形状の柔軟性を向上させる。QTBTブロック構造において、CUは正方形または長方形のいずれかを有することができる。
図5に示すように、まず、符号化ツリーユニット(CTU)を4分木構造で分割する。4分木の葉ノードは、2分木構造によってさらに分割される。2分木の分割には、対称水平分割と対称垂直分割の2つの分割タイプがある。2分木の葉ノードは、符号化ユニット(CU)と呼ばれ、このセグメント化は、それ以上の分割を行うことなく、予測および変換処理に使用される。これは、QTBTの符号化されたブロック構造において、CU、PUおよびTUが同じブロックサイズを有することを意味する。JEMにおいて、CUは、しばしば異なる色成分の符号化ブロック(CB)からなり、例えば、4:2:0彩度フォーマットのPおよびBスライスの場合、1つのCUは1つの輝度CBおよび2つの彩度CBを含み、また、CUは、しばしば単一の成分のCBからなり、例えば、Iスライスの場合、1つのCUは、1つの輝度CBのみ、または、2つの彩度CBのみを含む。
【0036】
QTBT分割スキームに対して以下のパラメータを規定する。
−CTUのサイズ:1つの4分木のルートノードのサイズ、HEVCと同じ概念
−MinQTSize:最小許容の4分木の葉ノードサイズ
−MaxBTSize:最大許容の2分木ルートノードサイズ
−MaxBTDepth:最大許容の2分木の深さ
−MinBTSize:最小許容の2分木の葉ノードのサイズ
【0037】
QTBTの分割構造の一例において、CTUのサイズを、2つの対応する64×64ブロックの彩度サンプルを有する128×128の輝度サンプルとして設定し、MinQTSizeを16×16として設定し、MaxBTSizeを64×64として設定し、MinBTSize(幅および高さの両方について)を4×4として設定し、MaxBTDepthを4として設定する。4分木の分割は、まずCTUに適用され、4分木の葉ノードを生成する。4分木の葉ノードは、16×16(即ち、MinQTSize)から128×128(即ち、CTUサイズ)までのサイズを有することが可能である。葉4分木のノードが128×128である場合、サイズがMaxBTSize(すなわち、64×64)を超えるため、2分木によってさらに分割されない。そうでない場合、葉4分木のノードは、2分木によってさらに分割されてもよい。従って、この4分木の葉ノードは、2分木のルートノードでもあり、その2分木の深さは0である。2分木の深さがMaxBTDepth(すなわち、4)に達した場合、それ以上の分割は考慮されない。2分木のノードの幅がMinBTSize(すなわち、4)に等しい場合、それ以上の水平分割は考慮されない。同様に、2分木のノードの高さがMinBTSizeに等しい場合、それ以上の垂直分割は考慮されない。2分木の葉ノードは、さらに分割することなく、予測および変換処理によってさらに処理される。JEMにおいて、最大CTUサイズは、256×256個の輝度サンプルである。
【0038】
図5(左)はQTBTを用いたブロックの分割の例を示し、
図5(右)は対応するツリー表現を示す。実線は4分木の分割を表し、点線は2分木の分割を表す。2分木の各分割(即ち、非葉)ノードにおいて、1つのフラグが、どの分割タイプ(即ち、水平または垂直)が使用されるかを示すために信号通知される。ここで、0は、水平分割を表し、1は、垂直分割を表す。4分木の分割の場合、4分木の分割は常にブロックを水平および垂直に分割し、等分したサイズの4つのサブブロックを生成するため、分割タイプを示す必要がない。
【0039】
さらに、QTBT方式は、輝度および彩度が別個のQTBT構造を有する能力をサポートする。現在、PおよびBスライスの場合、1つのCTUにおける輝度および彩度CTBは、同じQTBT構造を共有する。しかしながら、Iスライスの場合、輝度CTBはQTBT構造によってCUに分割され、彩度CTBは別のQTBT構造によって彩度CUに分割される。これは、1つのIスライスにおける1つのCUが1つの輝度成分の1つの符号化ブロックまたは2つの彩度成分の1つの符号化ブロックからなり、1つのPまたはBスライスにおける1つのCUが3つの色成分すべての符号化ブロックからなることを意味する。
【0040】
HEVCにおいて、小さなブロックのためのインター予測は、動き補償のメモリアクセスを低減するために制限され、その結果、4×8および8×4ブロックのために双予測はサポートされず、4×4ブロックのためにインター予測はサポートされない。JEMのQTBTにおいて、これらの制限は取り除かれる。
【0042】
いくつかの実施形態において、4分木および2分木以外のツリータイプがサポートされる。本実装形態において、
図6(d)、(e)に示すように、3分木(TT)パーティションを2つ以上、すなわち、水平および垂直中心側の3分木を導入する。
【0043】
図6は、(a)4分木分割、(b)垂直2分木分割、(c)水平2分木分割、(d)垂直中心側3分木分割、(e)水平中心側3分木分割を示す。
【0044】
いくつかの実装形態において、2つのレベルのツリー、すなわち、領域ツリー(4分木)および予測ツリー(2分木または3分木)がある。CTUは、まず、領域ツリー(RT)によって分割される。RT葉は、予測ツリー(PT)によってさらに分割されてもよい。PT葉はまた、最大PT深さに達するまで、PTでさらに分割されてもよい。PT葉が基本符号化ユニットである。便宜上、ここでもCUと呼ぶ。1つのCUをさらに分割することはできない。予測および変換は両方ともJEMと同様にCUに適用される。パーティション構造全体を「マルチタイプツリー」と呼ぶ。
【0046】
この応答で使用されるツリー構造は、マルチツリータイプ(Multi−Tree Type:MTT)と呼ばれ、QTBTを一般化したものである。QTBTにおいて、
図5に示すように、まず、符号化ツリーユニット(CTU)を4分木構造で分割する。4分木の葉ノードは、2分木構造によってさらに分割される。
【0047】
MTTの基本構造は、2つのタイプのツリーノードを構成する。
図7に示すように、領域ツリー(RT)および予測ツリー(PT)は、9つのタイプのパーティションをサポートする。
【0048】
図7は、(a)4分木分割、(b)垂直2分木分割、(c)水平2分木分割、(d)垂直3分木分割、(e)水平3分木分割、(f)水平上方非対称2分木分割、(g)水平下方非対称2分木分割、(h)垂直左非対称2分木分割、(i)垂直右非対称2分木分割を示す。
【0049】
1つの領域ツリーは、1つのCTUを4×4サイズの領域ツリーの葉ノードになるように正方形のブロックに再帰的に分割することができる。領域ツリーにおける各ノードにおいて、予測ツリーは、2分木(BT)、3分木(TT)、および非対称2分木(ABT)の3つのツリータイプのうちの1つから形成されることができる。PT分割において、予測ツリーの枝に4分木のパーティションを有することは禁止される。JEMにおけるように、輝度ツリーおよび彩度ツリーは、I個のスライスに分けられる。RTおよびPTの信号通知方法を
図8に示す。
【0050】
2.2 HEVC/H.265におけるインター予測
【0051】
各インター予測されたPUは、1つまたは2つの参照ピクチャリストのための動きパラメータを有する。動きパラメータは、動きベクトルおよび参照ピクチャインデックスを含む。2つの参照ピクチャリストのうちの1つの参照ピクチャリストの使用は、inter_pred_idcを使用して信号通知されてもよい。動きベクトルは、予測因子に関連する差分として明確に符号化されてもよく、このような符号化モードは、AMVPモードと呼ばれる。
【0052】
1つのCUがスキップモードにて符号化される場合、1つのPUがこのCUに関連付けられ、有意な残差係数がなく、符号化された動きベクトル差分も参照ピクチャインデックスもない。マージモードを指定し、これにより、現在のPUのための動きパラメータを、空間的および時間的候補を含む近傍のPUから取得する。マージモードは、スキップモードのためだけでなく、任意のインター予測されたPUに適用することができる。マージモードの代替としては、動きパラメータの明確な送信であり、各参照ピクチャリストおよび参照ピクチャリストの使用に対する参照ピクチャインデックスに対応する動きベクトルをPUごとに明確に信号通知することである。
【0053】
2つの参照ピクチャリストのうちの1つを使用することを信号通知が示す場合、サンプルのうちの1つのブロックからPUを生成する。これを「単一予測」と呼ぶ。PスライスおよびBスライスの両方に対して単一予測が利用可能である。
【0054】
両方の参照ピクチャリストを使用することを信号通知が示す場合、サンプルのうちの2つのブロックからPUを生成する。これを「双方向予測」と呼ぶ。Bスライスのみに双方向予測が利用可能である。
【0055】
以下、HEVCに規定されるインター予測モードについて詳細に説明する。まず、マージモードについて説明する。
【0057】
2.2.1.1 マージモードの候補の導出
【0058】
マージモードを使用してPUを予測する場合、ビットストリームからマージ候補リストにおけるエントリを指すインデックスを構文解析し、これを使用して動き情報を検索する。このリストの構成は、HEVC規格で規定されており、以下のステップのシーケンスに基づいてまとめることができる。
・ステップ1:初期候補の導出
oステップ1.1:空間的候補の導出
oステップ1.2:空間的候補の冗長性チェック
oステップ1.3:時間的候補の導出
・ステップ2:追加候補の挿入
oステップ2.1:双方向予測候補の作成
oステップ2.2:動きゼロ候補の挿入
【0059】
これらのステップは
図9にも概略的に示されている。空間的マージ候補導出のために、5つの異なる位置にある候補の中から最大4つのマージ候補を選択する。時間的マージ候補導出のために、2つの候補の中から最大1つのマージ候補を選択する。デコーダ側ではPUごとに一定数の候補を想定しているので、候補数がスライスヘッダで信号通知されるマージ候補の最大数(MaxNumMergeCand)に達しない場合、追加候補を生成する。候補の数は一定であるので、最良マージ候補のインデックスは、短縮された単項2値化(TU:truncated unary binarization)を使用して符号化される。CUのサイズが8に等しい場合、現在のCUのすべてのPUは、2N×2N予測ユニットのマージ候補リストと同じ1つのマージ候補リストを共有する。
【0060】
以下、上述したステップに関連付けられた動作を詳しく説明する。
【0062】
空間的マージ候補の導出において、
図10に示す位置にある候補の中から、最大4つのマージ候補を選択する。導出の順序はA
1、B
1、B
0、A
0、B
2である。位置A
1、B
1、B
0、A
0のいずれかのPUが利用可能でない場合(例えば、別のスライスまたはタイルに属しているため)、またはイントラ符号化された場合にのみ、位置B
2が考慮される。位置A
1の候補を加えた後、残りの候補を加えると、冗長性チェックを受け、それにより、同じ動き情報を有する候補を確実にリストから排除でき、符号化効率を向上させることができる。計算の複雑性を低減するために、前述の冗長性チェックにおいて、考えられる候補対のすべてを考慮することはしない。代わりに、
図11において矢印でリンクされた対のみを考慮し、冗長性チェックに使用される対応する候補が同じ動き情報を有していない場合にのみ、その候補をリストに加える。重複した動き情報の別のソースは、2N×2Nとは異なるパーティションに関連付けられた「第2のPU」である。一例として、
図12は、それぞれN×2Nおよび2N×Nの場合の第2のPUを示す。現在のPUをN×2Nに分割する場合、リスト構築に位置A
1の候補は考慮されない。実際、この候補を加えることにより、同じ動き情報を有する2つの予測ユニットが導かれることとなり、1つの符号化ユニットに1つのPUのみを有するためには冗長である。同様に、現在のPUを2N×Nに分割する場合、位置B
1は考慮されない。
【0064】
このステップにおいて、1つの候補のみがリストに追加される。具体的には、この時間的マージ候補の導出において、所与の参照ピクチャリストにおける現在のピクチャとの間に最小のPOC差を有するピクチャに属する同一位置PUに基づいて、スケーリングされた動きベクトルを導出する。スライスヘッダにおいて、同一位置のPU(co−located PU)の導出に用いられる参照ピクチャリストが明確に信号通知される。
図13に点線で示すように、時間的マージ候補のスケーリングされた動きベクトルが得られる。これは、POC距離tbおよびtdを利用して、同一位置のPUの動きベクトルからスケーリングしたものである。tbは、現在のピクチャの参照ピクチャと現在のピクチャのPOC差として規定され、tdは、同一位置のPUの参照ピクチャと同一位置のピクチャのPOC差として規定する。時間的マージ候補の参照ピクチャインデックスをゼロに等しく設定する。このスケーリング処理の実際的な実現については、HEVC仕様に記載されている。Bスライスの場合、2つの動きベクトル、即ち、1つは参照ピクチャリスト0のためのもの、もう1つは参照ピクチャリスト1のためのものを取得し、これらを組み合わせることによって、双方向予測マージ候補を形成する。時間的マージ候補のための動きベクトルのスケーリングの説明。
【0065】
参照フレームに属する同一位置のPU(Y)において、
図14に示すように、候補C
0と候補C
1との間で時間的候補の位置を選択する。位置C
0のPUが利用可能でない場合、イントラ符号化されている場合、または現在のCTUの外側にある場合、位置C
1が使用される。そうでない場合、位置C
0が時間的マージ候補の導出に使用される。
【0067】
空間的−時間的マージ候補の他に、2つの追加のタイプのマージ候補、すなわち、結合双方向予測マージ候補およびゼロマージ候補がある。空間的−時間的マージ候補を利用して、結合双方向予測マージ候補を生成する。結合双方向予測マージ候補は、Bスライスのみに使用される。最初の候補の第1の参照ピクチャリスト動きパラメータと別の候補の第2の参照ピクチャリスト動きパラメータとを組み合わせることで、結合双方向予測候補を生成する。これら2つのタプルが異なる動きの仮説を提供する場合、これらのタプルは、新しい双方向予測候補を形成する。一例として、
図15は、オリジナルリスト(左側)における、mvL0およびrefIdxL0、またはmvL1およびrefIdxL1を有する2つの候補を用いて、最終リスト(右側)に加えられる結合双方向予測マージ候補を生成する場合を示す。ここで規定される、これらの追加のマージ候補を生成するために考慮される組み合わせについては、様々な規則が存在する。
【0068】
ゼロ動き候補を挿入し、マージ候補リストにおける残りのエントリを埋めることにより、MaxNumMergeCand容量にヒットする。これらの候補は、空間的変位がゼロであり、新しいゼロ動き候補をリストに加える度にゼロから始まり増加する参照ピクチャインデックスを有する。これらの候補が使用する参照フレームの数は、それぞれ、一方向予測の場合は1つ、双方向予測の場合は2つである。最終的には、これらの候補に対して冗長性チェックは行われない。
【0069】
2.2.1.5 並列処理のための動き推定領域
【0070】
符号化処理を高速化するために、動き推定を並列に行うことができ、それによって、所与の領域内のすべての予測ユニットの動きベクトルを同時に導出する。1つの予測ユニットは、その関連する動き推定が完了するまで、隣接するPUから動きパラメータを導出することができないので、空間的近傍からのマージ候補の導出は、並列処理に干渉する可能性がある。符号化効率と処理待ち時間との間のトレードオフを緩和するために、HEVCは、動き推定領域(MER:Motion Estimation Region)を規定し、そのサイズは、「log2_parallel_merge_level_minus2」構文要素を使用してピクチャパラメータセットにおいて信号通知される。1つのMERを規定するとき、同じ領域にあるマージ候補は使用不可としてマークされ、それゆえにリスト構築においては考慮されない。
7.3.2.3 ピクチャパラメータセットRBSP構文
7.3.2.3.1 一般ピクチャパラメータセットRBSP構文
【0072】
log2_parallel_merge_level_minus2+2は、8.5.3.2.2.2節で指定されたマージモードの輝度動きベクトルの導出処理と、8.5.3.2.3節で指定された空間的マージ候補の導出処理で使用される変数Log2ParMrgLevelの値を指定する。log2_parallel_merge_level_minus2の値は、0〜CtbLog2SizeY−2を含む範囲内とする。
変数Log2ParMrgLevelは、以下のように導出される。
Log2ParMrgLevel=log2_parallel_merge_level_minus2+2 (7−37)
注3:Log2ParMrgLevelの値は、マージ候補リストを並列に導出する組み込み能力を示す。例えば、Log2ParMrgLevelが6に等しい場合、64×64ブロックに含まれたすべての予測ユニット(PU)および符号化ユニット(CU)のためのマージ候補リストを並列に導出することができる。
【0073】
2.2.2 AMVPモードにおける動きベクトル予測
【0074】
動きベクトル予測は、動きベクトルと近傍のPUとの間の空間的−時間的相関を利用し、これを動きパラメータの明確な伝送に用いる。まず、左側、上側の時間的に近傍のPU位置の可用性をチェックし、冗長な候補を取り除き、ゼロベクトルを加えることで、候補リストの長さを一定にすることで、動きベクトル候補リストを構築する。次いで、エンコーダは、候補リストから最良の予測因子を選択し、選択された候補を示す対応するインデックスを送信することができる。マージインデックスの信号通知と同様に、最良の動きベクトル候補のインデックスは、短縮された単項を使用して符号化される。この場合の符号化対象の最大値は2である(例えば、
図2〜
図8)。以下の章では、動きベクトル予測候補の導出処理の詳細を説明する。
【0075】
2.2.2.1 動きベクトル予測候補の導出
【0076】
図16に、動きベクトル予測候補の導出処理をまとめる。
【0077】
動きベクトル予測において、空間的動きベクトル候補と時間的動きベクトル候補という2つのタイプの動きベクトル候補が考慮される。空間的動きベクトル候補を導出するために、
図11に示したように、5つの異なる位置にある各PUの動きベクトルに基づいて、最終的には2つの動きベクトル候補を導出する。
【0078】
時間的動きベクトル候補の導出のために、2つの異なる同一位置の配置に基づいて導出された2つの候補から1つの動きベクトル候補を選択する。空間的−時間的候補の最初のリストを作成した後、リストにおける重複した動きベクトル候補を除去する。可能性のある候補の数が2よりも多い場合、関連づけられた参照ピクチャリストにおける参照ピクチャインデックスが1よりも大きい動きベクトル候補をリストから削除する。空間的−時間的動きベクトル候補の数が2未満である場合は、追加のゼロ動きベクトル候補をリストに加える。
【0079】
2.2.2.2 空間的動きベクトル候補
【0080】
空間的動きベクトル候補の導出において、
図11に示したような位置にあるPUから導出された5つの可能性のある候補のうち、動きマージと同じ位置にあるものを最大2つの候補を考慮する。現在のPUの左側のための導出の順序は、A
0、A
1、スケーリングされたA
0、スケーリングされたA
1として規定される。現在のPUの上側のための導出の順序は、B
0、B
1、B
2、スケーリングされたB
0、スケーリングされたB
1、スケーリングされたB
2として規定される。そのため、辺ごとに、動きベクトル候補として使用できる場合が4つ、すなわち空間的スケーリングを使用する必要がない2つの場合と、空間的スケーリングを使用する2つの場合とがある。4つの異なる場合をまとめると、以下のようになる。
・空間的スケーリングなし
−(1)同じ参照ピクチャリスト、かつ、同じ参照ピクチャインデックス(同じPOC)
−(2)異なる参照ピクチャリスト、かつ、同じ参照ピクチャ(同じPOC)
・空間的スケーリング
−(3)同じ参照ピクチャリスト、かつ、異なる参照ピクチャ(異なるPOC)
−(4)異なる参照ピクチャリスト、かつ、異なる参照ピクチャ(異なるPOC)
【0081】
最初に非空間的スケーリングの場合をチェックし、次に空間的スケーリングを行う。参照ピクチャリストにかかわらず、POCが近傍のPUの参照ピクチャと現在のPUの参照ピクチャとで異なる場合、空間的スケーリングを考慮する。左側候補のすべてのPUが利用可能でないか、またはイントラ符号化されている場合、上側の動きベクトルのスケーリングは、左側および上側MV候補の並列導出に役立つ。そうでない場合、上側の動きベクトルに対して空間的スケーリングは許可されない。
【0082】
空間的スケーリング処理において、
図17に示すように、時間的スケーリングと同様にして、近傍のPUの動きベクトルをスケーリングする。主な違いは、現在のPUの参照ピクチャリストおよびインデックスを入力として与え、実際のスケーリング処理は時間的スケーリングと同じであることである。
【0083】
2.2.2.3 時間的動きベクトル候補
【0084】
参照ピクチャインデックスを導出する以外は、時間的マージ候補を導出するための処理は、すべて、空間的動きベクトル候補を導出するための処理と同じである(
図6参照)。参照ピクチャインデックスはデコーダに信号通知される。
【0085】
2.2.2.4 AMVP情報の信号通知
【0086】
AMVPモードの場合、ビットストリームにおいて、4つの部分、すなわち、予測方向、参照インデックス、MVD、およびmv予測因子候補インデックスを信号通知することができる。
構文テーブル:
【0090】
2.3 JEM(Joint Exploration Model)における新しいインター予測方法
【0091】
2.3.1 サブCUに基づく動きベクトル予測
【0092】
QTBTを有するJEMにおいて、各CUは、各予測方向に対して最大1つの動きパラメータのセットを有することができる。エンコーダにおいて、大きなCUをサブCUに分割し、大きなCUのすべてのサブCUの動き情報を導出することにより、2つのサブCUレベルの動きベクトル予測方法を考慮する。ATMVP(Alternative Temporal Motion Vector Prediction)方法により、各CUが、配列された参照ピクチャにおける現在のCUよりも小さい複数のブロックから複数の動き情報のセットをフェッチすることが可能となる。STMVP(Spatial−Temporal Motion Vector Prediction)法において、時間的動きベクトル予測因子および空間的近傍動きベクトルを使用して、サブCUの動きベクトルを再帰的に導出する。
【0093】
サブCU動き予測のためにより正確な動きフィールドを維持するために、参照フレームの動き圧縮は現在無効にされている。
【0094】
2.3.1.1 代替の時間的動きベクトル予測
【0095】
ATMVP(Alternative Temporal Motion Vector Prediction)において、TMVP(Temporal Motion Vector Prediction)法は、現在のCUより小さいブロックから複数セットの動き情報(動きベクトルおよび参照インデックスを含む)をフェッチすることで修正される。
図18に示すように、サブCUは、正方形のN×Nブロックである(デフォルトでは、Nは4に設定される)。
【0096】
ATMVPは、CU内のサブCUの動きベクトルを2つのステップで予測する。第1のステップは、参照ピクチャにおける対応するブロックを、いわゆる時間的ベクトルで特定することである。この参照ピクチャを動きソースピクチャと呼ぶ。第2のステップは、
図18に示すように、現在のCUをサブCUに分割し、各サブCUに対応するブロックから各サブCUの動きベクトルならびに参照インデックスを取得する。
【0097】
第1のステップにおいて、現在のCUの空間的に近傍のブロックの動き情報によって、参照ピクチャおよび対応するブロックを決定する。近傍のブロックの繰り返し走査処理を回避するために、現在のCUのマージ候補リストにおける最初のマージ候補を用いる。最初の利用可能な動きベクトルおよびその関連する参照インデックスを、時間的ベクトルおよび動きソースピクチャのインデックスに設定する。このように、ATMVPでは、TMVPに比べて、対応するブロックをより正確に特定することができ、対応するブロック(配列されたブロックと呼ばれることがある)は、常に現在のCUに対して右下または中心位置にある。1つの例において、最初のマージ候補が左側の近傍のブロック(即ち、
図19のA
1)からのものである場合、関連するMVおよび参照ピクチャを利用して、ソースブロックおよびソースピクチャを特定する。
【0098】
図19は、ソースブロックおよびソースピクチャの特定の例を示す。
【0099】
第2のステップにおいて、現在のCUの座標に時間ベクトルを加えることで、動きソースピクチャにおける時間的ベクトルによって、サブCUの対応するブロックを特定する。サブCUごとに、その対応するブロックの動き情報(中心サンプルを覆う最小の動きグリッド)を使用して、サブCUの動き情報を導出する。対応するN×Nブロックの動き情報を特定した後、HEVCのTMVPと同様に、現在のサブCUの動きベクトルおよび参照インデックスに変換され、動きスケーリングや他の手順が適用される。例えば、デコーダは、低遅延条件(すなわち、現在のピクチャのすべての参照ピクチャのPOCが現在のピクチャのPOCよりも小さい)が満たされているかどうかをチェックし、場合によっては、動きベクトルMVx(参照ピクチャリストXに対応する動きベクトル)を使用して、各サブCUの動きベクトルMVy(Xが0または1に等しく、Yが1−Xに等しい)を予測する。
【0100】
2.3.1.2 空間的−時間的動きベクトル予測
【0101】
この方法において、サブCUの動きベクトルは、ラスタスキャンの順に沿って再帰的に導出される。
図20にこの概念を示す。4つの4×4サブCUであるA、B、C、およびDを含む8×8CUを考える。現在のフレームの近傍の4×4ブロックには、a、b、c、dというラベルが付けられている。
【0102】
サブCUのAの動きの導出は、その2つの空間的近傍を特定することで始まる。第1の近傍は、サブCUのAの上のN×Nブロックである(ブロックc)。このブロックcが利用可能でないか、またはイントラ符号化されている場合、サブCU Aより上の他のN×N個のブロックをチェックする(ブロックcから始まり、左から右へ)。第2の近傍は、サブCUのAの左側のブロックである(ブロックb)。ブロックbが利用可能でないか、またはイントラ符号化されている場合、サブCU Aの左側の他のブロックをチェックする(ブロックbから始まり、上から下へ)。各リストの近傍のブロックから得られた動き情報を、所与のリストの第1の参照フレームにスケーリングする。次に、HEVCに規定されているTMVP(Temporal Motion Vector Predictor)導出と同様の手順に従って、サブブロックAのTMVPを導出する。位置Dにおける配列されたブロックの動き情報をフェッチし、それに応じてスケーリングする。最後に、動き情報を検索し、スケーリングした後、参照リストごとにすべての利用可能な動きベクトル(3まで)を別々に平均する。この平均化された動きベクトルを現在のサブCUの動きベクトルとする。
【0103】
図20は、4つのサブブロック(A−D)およびその近傍のブロックを有する1つのCUの例を示す。
【0104】
2.3.1.3 サブCU動き予測モード信号通知
【0105】
サブCUモードは追加のマージ候補として有効とされ、モードを信号通知するために追加の構文要素は必要とされない。ATMVPモードおよびSTMVPモードを表すように、各CUのマージ候補リストに2つの追加のマージ候補を加える。シーケンスパラメータセットがATMVPおよびSTMVPが有効であることを示す場合、7個までのマージ候補を使用する。追加のマージ候補の符号化ロジックは、HMにおけるマージ候補の場合と同じであり、つまり、PまたはBスライスにおける各CUについて、2つの追加のマージ候補に対して2回以上のRDチェックが必要となる。
【0106】
JEMにおいて、マージインデックスのすべてのビンは、CABACによって符号化されたコンテキストである。一方、HEVCにおいては、最初のビンのみが符号化されたコンテキストであり、残りのビンはバイパス符号化されたコンテキストである。
【0107】
2.3.2 適応型動きベクトル差解像度
【0108】
HEVCにおいて、use_integer_mv_flagがスライスヘッダにおいて0であるとき、1/4輝度サンプルの単位で動きベクトル差分(MVD:Motion Vector Difference)(動きベクトルとPUの予測動きベクトルとの差)が信号通知される。JEMにおいて、LAMVR(Locally Adaptive Motion Vector Resolution)が導入される。JEMにおいて、MVDは、1/4輝度サンプル、整数輝度サンプル、または4つの輝度サンプルの単位復号化できる。MVD解像度は符号化ユニット(CU)レベルで制御され、MVD解像度フラグは、少なくとも1つの非ゼロMVDの構成要素を有する各CUに対して条件付きで信号通知される。
【0109】
少なくとも1つの非ゼロMVDの構成要素を有するCUの場合、1/4輝度サンプルMV精度がCUにおいて使用されるか否かを示すために、第1のフラグが信号通知される。第1のフラグ(1に等しい)が、1/4輝度サンプルMV精度が使用されていないことを示す場合、整数輝度サンプルMV精度が使用されるかまたは4輝度サンプルMV精度が使用されるかを示すために、別のフラグが信号通知される。
【0110】
CUの第1のMVD解像度フラグがゼロであるか、またはCUに対して符号化されていない(つまり、CUにおけるすべてのMVDがゼロである)場合、CUに対して1/4輝度サンプルMV解像度が使用される。CUが整数輝度サンプルMV精度または4輝度サンプルMV精度を使用する場合、CUのAMVP候補リストにおけるMVPを対応する精度に丸める。
【0111】
エンコーダにおいて、CUレベルのRDチェックは、どのMVD解像度をCUに用いるかを決定するために用いられる。すなわち、1つのMVD解像度ごとに3回、CUレベルのRDチェックを行う。エンコーダの速度を速めるために、JEMにおいては、以下のエン符号化方式が適用される。
【0112】
通常の1/4輝度サンプルMVD解像度を有するCUのRDチェック中、現在のCUの動き情報(整数輝度サンプル精度)が記憶される。整数輝度サンプルおよび4輝度サンプルのMVD解像度を有する同じCUのRDチェック中に、記憶された動き情報(丸められた後)は、更なる小範囲の動きベクトル改良の開始点として使用されるので、時間がかかる動き推定処理が3回重複しない。
【0113】
4輝度サンプルMVD解像度を有するCUのRDチェックを条件付きで呼び出す。CUの場合、整数輝度サンプルMVD解像度のRDコストが1/4輝度サンプルMVD解像度のそれよりもはるかに大きい場合、CUのための4輝度サンプルMVD解像度のRDチェックは省略される。
【0114】
2.3.3 パターンマッチング動きベクトル導出
【0115】
PMMVD(Pattern Matched Motion Vector Derivation)モードは、FRUC(Frame−Rate Up Conversion)技術に基づく特殊なマージモードである。このモードでは、ブロックの動き情報は信号通知されず、デコーダ側で導出される。
【0116】
そのマージフラグが真である場合、FRUCフラグは、CUに信号通知される。FRUCフラグが偽である場合、マージインデックスは信号通知され、通常のマージモードが使用される。FRUCフラグが真である場合、追加のFRUCモードフラグを信号通知して、どの方法(バイラテラルマッチングまたはテンプレートマッチング)を使用してブロックの動き情報を導出するかを示す。
【0117】
エンコーダ側では、CUのためにFRUCマージモードを使用するかどうかの決定は、通常のマージ候補に対して行われるのと同じように、RDコストの選択に基づく。つまり、RDコスト選択を使用して、1つのCUに対して2つのマッチングモード(バイラテラルマッチングおよびテンプレートマッチング)を両方チェックする。最小コストに導くものが、更に、他のCUモードと比較される。FRUCマッチングモードが最も効率的なものである場合、CUに対してFRUCフラグを真に設定し、関連するマッチングモードを使用する。
【0118】
FRUCマージモードにおける動き導出処理は、2つのステップを有する。まず、CUレベルの動き探索を実行し、次に、サブCUレベルの動き改良を実行する。CUレベルでは、バイラテラルマッチングまたはテンプレートマッチングに基づいて、CU全体のための初期の動きベクトルを導出する。まず、MV候補のリストを生成し、最小マッチングコストに導く候補を、さらなるCUレベル改善の開開始点として選択する。そして、開始点付近のバイラテラルマッチングまたはテンプレートマッチングに基づく局所検索を行い、最小マッチングコストとなるMV結果をCU全体のMVとする。続いて、導出されたCU動きベクトルを開始点として、サブCUレベルでの動き情報をさらに改良する。
【0119】
例えば、W×H CU動き情報導出のために、以下の導出処理を行う。第1のステージにおいて、W×H CU全体のためのMVが導出される。第2のステージにおいて、CUは、M×M個のサブCUにさらに分割される。Mの値は、(16)のように計算されるが、Dは、予め規定義された分割深さであり、JEMにおいてデフォルトで3に設定される。そして、各サブCUのMVを導出する。
【0121】
図21に示すように、このバイラテラルマッチングは、2つの異なる参照ピクチャにおける現在のCUの動き軌跡に沿った2つのブロック間の最も近いマッチングを見出すことにより、現在のCUの動き情報を導出するために用いられる。連続した動き軌跡を仮定すると、2つの参照ブロックを指す動きベクトルMV0およびMV1は、現在のピクチャと2つの参照ピクチャとの間の時間的距離、例えばTD0およびTD1に比例する。特殊なケースとしては、現在のピクチャが時間的に2つの参照ピクチャの間にあり、現在のピクチャから2つの参照ピクチャまでの時間的な距離が同じである場合、バイラテラルマッチングはミラーに基づく双方向MVとなる。
【0122】
図22に示すように、現在のピクチャにおけるテンプレート(現在のCUの上側および/または左側の近傍のブロック)と、参照ピクチャにおけるブロック(テンプレートと同じサイズ)との間の最も近いマッチングを見出すことで、テンプレートマッチングを使用して、現在のCUの動き情報を導出する。前述のFRUCマージモード以外に、テンプレートマッチングは、AMVPモードにも適用される。JEMにおいて、HEVCと同様、AMVPは2つの候補を有する。テンプレートマッチング法を用いることで、新しい候補を導出する。テンプレートマッチングによって新規に導出された候補が、第1の既存のAMVP候補と異なる場合、AMVP候補リストの最初に挿入し、次に、リストサイズを2(第2の既存のAMVP候補を取り除くことを意味する)に設定する。AMVPモードに適用される場合、CUレベル検索のみが適用される。
【0123】
2.3.3.1 CUレベルMV候補セット
【0124】
CUレベルのMV候補セットは、以下からなる。
(i)現在のCUがAMVPモードになっている場合の元のAMVP候補
(ii)すべてのマージ候補、
(iii)補間MVフィールド内の複数のMV。
(iv)上と左の近傍の動きベクトル
【0125】
バイラテラルマッチングを使用する場合、マージ候補の各有効なMVを入力として使用して、バイラテラルマッチングを仮定してMV対を生成する。例えば、マージ候補の1つの有効なMVは、参照リストAにおいて(MVa,refa)である。そして、その対をなすバイラテラルMVの参照ピクチャrefbが他の参照リストBにおいて見出され、refaおよびrefbは、時間的に現在のピクチャの異なる側にある。参照リストBにおいてこのようなrefbが利用可能でない場合、refbをrefaとは異なる参照として決定し、現在のピクチャとの時間的距離はリストBにおける最小値である。refbを決定した後、現在のピクチャとrefa,refbとの時間距離に基づいてMVaをスケーリングすることでMVbを導出する。
【0126】
補間されたMVフィールドからの4つのMVもCUレベル候補リストに追加する。具体的には、現在のCUの(0,0)、(W/2,0)、(0,H/2)、(W/2,H/2)の位置の補間MVを加算する。
【0127】
AMVPモードでFRUCを適用する場合、元のAMVP候補をCUレベルMV候補セットにも加える。
【0128】
CUレベルにおいて、AMVP CUのための最大15個のMVおよびマージCUのための最大13個のMVを候補リストに加える。
【0129】
2.3.3.2 サブCUレベルMV候補セット
【0130】
サブCUレベルのMV候補セットは、以下からなる。
(i)CUレベルの検索から決定されたMV、
(ii)上、左、左上、右上の近傍のMV、
(iii)参照ピクチャからの並置されたMVのスケーリングされたバージョン、
(iv)最大4つのATMVP候補、
(v)最大4つのSTMVP候補
【0131】
参照ピクチャからのスケーリングされたMVは、以下のように導出される。両方のリストにおける参照ピクチャをすべてトラバースする。参照ピクチャにおけるサブCUの配列位置にあるMVは、開始CUレベルMVの参照に対してスケーリングされる。
【0132】
ATMVPおよびSTMVPの候補は、最初の4つの候補に限定される
【0133】
サブCUレベルにおいて、最大17個のMVが候補リストに追加される。
【0134】
2.3.3.3 補間MVフィールドの生成
【0135】
フレームを符号化する前に、一方のMEに基づいてピクチャ全体に対して補間動きフィールドを生成する。そして、この動きフィールドを後にCUレベルまたはサブCUレベルのMV候補として使用してもよい。
【0136】
まず、両方の参照リストにおける各参照ピクチャの動きフィールドは、4×4ブロックレベルでトラバースされる。各4×4ブロックにおいて、現在のピクチャ(
図23に示す)の4×4ブロックを通過するブロックに関連する動きで、補間動きがまだ割り当てられていない場合、時間的距離TD0およびTD1に基づいて(HEVCにおけるTMVPのMVスケーリングと同様に)、参照ブロックの動きを現在のピクチャにスケーリングし、スケーリングされた動きを現在のフレームのブロックに割り当てる。4×4ブロックにスケーリングされたMVが割り当てられていない場合、ブロックの動きは、補間された動きフィールドにおいて利用不可能であるとマークされる。
【0137】
2.3.3.4 補間およびマッチングコスト
【0138】
1つの動きベクトルが1つの分数のサンプル位置を指す場合、動き補償補間が必要である。複雑性を低減するために、通常の8タップHEVC補間の代わりに、バイラテラルマッチングおよびテンプレートマッチングの両方に双線形補間を使用する。
【0139】
マッチングコストの計算は、異なるステップでは少し異なる。CUレベルの候補セットから候補を選択する場合、マッチングコストは、バイラテラルマッチングまたはテンプレートマッチングの差分の絶対値の和(SAD)である。開始MVを決定した後、サブCUレベル検索におけるバイラテラルマッチングのマッチングコストCを以下のように算出する。
【0141】
ここで、wは、経験的に4に設定された重み係数であり、MVおよびMV
sは、それぞれ、現在のMVおよび開始MVを示す。SADは、依然として、サブCUレベル検索におけるテンプレートマッチングのマッチングコストとして使用される。
【0142】
FRUCモードにおいて、MVは、輝度サンプルのみを使用することによって導出される。導出された動きは、MCインター予測のために、輝度および彩度の両方に使用される。MVを決定した後、輝度用の8タップ補間フィルタおよび彩度用の4タップ補間フィルタを使用して、最終的なMCを行う。
【0144】
MV改良は、バイラテラルマッチングコストまたはテンプレートマッチングコストの基準を有するパターンに基づくMV検索である。JEMでは、2つの検索パターン、即ち、UCBDS(Unrestricted Center−Biased Diamond Search)およびCUレベルおよびサブCUレベルでのMV改良のための適応的横断検索をそれぞれサポートする。CUおよびサブCUレベルのMV改善の両方のために、MVは、1/4輝度サンプルMVの正確度で直接検索され、これに続いて1/8輝度サンプルMVの改良が行われる。CUおよびサブCUステップのためのMV改良の検索範囲は、8つの輝度サンプルに等しく設定される。
【0145】
2.3.3.6 テンプレートマッチングFRUCマージモードにおける予測方向の選択
【0146】
バイラテラルマッチングマージモードにおいては、2つの異なる参照ピクチャにおける現在のCUの動き軌跡に沿った2つのブロック間の最も近いマッチングに基づいて、CUの動き情報を導出するため、双方向予測が常に適用される。テンプレートマッチングマージモードについては、そのような限定はない。テンプレートマッチングマージモードにおいて、エンコーダは、list0からの単一予測、list1からの単一予測、またはCUのための双方向予測のうちから選択することができる。選択は、テンプレートマッチングコストに基づいて、以下のように行う。
costBi≦factor*min(cost0,cost1)の場合
双方向予測を用いる。
それ以外の場合において、cost0≦cost1の場合
list0からの単一予測を用いる。
そうでない場合、
list1からの単一予測を用いる。
【0147】
ここで、cost0はlist0テンプレートマッチングのSADであり、cost1はlist1テンプレートマッチングのSADであり、costBiは双方向予測テンプレートマッチングのSADである。factorの値が1.25である場合、選択処理が双方向予測に偏っていることを意味する。
このインター予測方向選択は、CUレベルのテンプレートマッチング処理にのみ適用される。
【0148】
2.3.4 デコーダ側動きベクトル改良
【0149】
双方向予測演算において、1つのブロック領域を予測するために、list0の動きベクトル(MV)およびlist1のMVをそれぞれ使用して構成される双予測ブロックを組み合わせ、1つの予測信号を形成する。DMVR(Decoder−side Motion Vector Refinement)方法において、バイラテラルテンプレートマッチング処理によって、双方向予測の2つの動きベクトルをさらに改良する。追加の動き情報を送信することなく改良されたMVを得るために、デコーダにおいてバイラテラルテンプレートマッチングを適用し、バイラテラルテンプレートと参照ピクチャにおける再構成サンプルとの間の歪みに基づく検索を行う。
【0150】
DMVRにおいて、
図23に示すように、list0の最初のMV0とlist1のMV1とから、それぞれ2つの予測ブロックの重み付け結合(すなわち、平均)としてバイラテラルテンプレートを生成する。テンプレートマッチング操作は、生成されたテンプレートと参照ピクチャにおけるサンプル領域(最初の予測ブロックの付近)との間のコスト尺度を計算することからなる。2つの参照ピクチャの各々について、テンプレートコストが最小となるMVを、そのリストの更新されたMVと見なし、元のMVに置き換える。JEMにおいて、各リストに対して9つのMV候補を検索する。9つのMV候補は、元のMVと、水平または垂直方向のいずれかまたは両方向に元のMVに対してオフセットしている1つの輝度サンプルを有する8つの周囲のMVを含む。最後に、2つの新しいMV、即ち、
図24に示すようなMV0’およびMV1’を使用して、最終的な双方向予測結果を生成する。差分の絶対値の和(SAD)をコスト尺度として使用する。
【0151】
DMVRは、追加の構文要素を送信することなく、過去の参照ピクチャからの1つのMVと、将来の参照ピクチャからの1つのMVとの間の双方向予測のマージモードに適用される。JEMにおいて、CUに対してLIC、アフィン動き、FRUC、またはサブCUマージ候補が有効である場合、DMVRは適用されない。
【0152】
2.3.5 バイラテラルマッチングの改良を伴うマージ/スキップモード
【0153】
まず、利用可能な候補の数が最大候補サイズ19に達するまで、空間的に近傍のブロックおよび時間的に近傍のブロックの動きベクトルおよび参照インデックスを冗長性チェック付き候補リストに挿入することで、マージ候補リストを構築する。マージ/スキップモードのマージ候補リストは、予め規定された挿入順に基づいて、HEVC(結合候補およびゼロ候補)に用いられる空間的候補(
図11)、時間的候補、アフィン候補、ATMVP(Advanced Temporal MVP)候補、STMVP(Spatial Temporal MVP)候補、および追加候補を挿入することで構築される。
【0159】
−空間的候補(ブロック5)(利用可能な候補の数が6よりも少ない場合にのみ使用される)。
【0161】
−時間的候補(HEVCのように導出)
【0162】
−外挿アフィン候補に続く非隣接空間的候補(
図25に示すブロック6〜49)。
【0165】
なお、ICフラグは、STMVPおよびアフィンを除き、マージ候補から継承される。また、最初の4つの空間的候補について、双方向予測のものを単一予測のものの前に挿入する。
【0166】
いくつかの実施形態において、現在のブロックに接続されていないブロックにアクセスすることができる。非隣接ブロックが非イントラモードで符号化されている場合、関連する動き情報を追加のマージ候補として追加してもよい。
【0167】
2.3.6 共有マージリストJVET−M0170
【0168】
小さなスキップ/マージ符号化されたCUを並列処理することを有効にするために、CU分割木における1つの祖先ノードのすべての葉の符号化ユニット(CU)に対して同じマージ候補リストを共有することが提案される。祖先ノードをマージ共有ノードと呼ぶ。マージ共有ノードが葉CUであるように見せかけて、マージ共有ノードにおいて共有マージ候補リストを生成する。
【0169】
Type−2の定義において、復号化の構文解析段階において、CTU内部のCUごとにマージ共有ノードを決定する。また、マージ共有ノードは、葉CUの祖先ノードであり、以下の2つの基準を満たさなければならない。
【0170】
マージ共有ノードのサイズは、サイズ閾値以上であること。
【0171】
マージ共有ノードにおいて、子CUのサイズは、サイズ閾値よりも小さいこと。
【0172】
さらに、マージ共有ノードのサンプルがピクチャ境界の外側にないことを保証する必要がある。構文解析段階において、祖先ノードが基準(1)および(2)を満たすが、ピクチャ境界の外側にいくつかのサンプルを有する場合、この祖先ノードはマージ共有ノードではないので、先に進んでその子CUのためのマージ共有ノードを見出す。
【0173】
図35に、Type−1とType−2の定義の違いの一例を示す。本例において、親ノードは、3つの子CUに3分割される。親ノードのサイズは128である。Type−1定義の場合、3つの子CUは別々のマージ共有ノードである。しかし、Type−2定義の場合、親ノードはマージ共有ノードである。
【0174】
提案した共用マージ候補リストアルゴリズムは、並進マージ(マージモードおよびトライアングルマージモードを含む、履歴に基づく候補もサポートされる)およびサブブロックに基づくマージモードをサポートする。すべての種類のマージモードにおいて、共有マージ候補リストアルゴリズムの挙動は基本的に同じに見え、マージ共有ノードが葉CUであるように見せるだけの候補をマージ共有ノードに生成する。それには2つの大きな利点がある。第1の利点は、マージモードのための並列処理を有効にすることであり、第2の利点は、すべての葉CUのすべての計算をマージ共有ノードに共有することである。そのため、ハードウェアコーデックのためのすべてのマージモードのハードウェアコストを大幅に低減することができる。提案した共有マージ候補リストアルゴリズムにより、エンコーダとデコーダはマージモードの並列符号化に容易に対応でき、マージモードのサイクルバジェット問題を軽減する。
【0176】
JVET−L0686では、タイルグループに代えるためスライスが削除され、HEVC構文要素slice_addressがタイルグループの最初のタイルのアドレスとしてtile_group_header内のtile_group_addressに置き換えられる(ピクチャ内に複数のタイルがある場合)。
【0177】
3. 本明細書に開示される実施形態が解決しようとする課題の例
【0178】
現在のHEVC設計は、動き情報をよりよく符号化するために、現在のブロックの近傍のブロック(現在のブロックの隣)の相関をとることができる。しかしながら、近傍のブロックが、異なる動き軌跡を有する異なる対象に対応する可能性がある。この場合、その近傍のブロックからの予測は効率的ではない。
【0179】
非隣接ブロックの動き情報からの予測は、全ての動き情報(一般的には4×4レベル)をキャッシュに記憶するコストをかけることになり、付加的な符号化利得をもたらし、ハードウェア実装の複雑性を大幅に増大させる。
【0181】
既存の実装形態の欠点を克服するために、様々な実施形態において、ブロックの動き情報を予測するために、少なくとも1つの動き候補が記憶された1つ以上のテーブル(例えばルックアップテーブル)を使用するLUTに基づく動きベクトル予測技術を実装し、より高い符号化効率を有する映像符号化を提供することができる。ルックアップテーブルは、ブロックの動き情報を予測するために動き候補を含める際に使用できるテーブルの一例であり、他の実装形態も可能である。各LUTは、それぞれが対応する動き情報に関連付けられた1つ以上の動き候補を含んでもよい。動き候補の動き情報は、予測方向、参照インデックス/ピクチャ、動きベクトル、LICフラグ、アフィンフラグ、MVD(Motion Vector Derivation)精度、および/またはMVD値の一部または全部を含んでもよい。動き情報は、動き情報がどこに由来しているかを示すために、ブロック位置情報をさらに含んでもよい。
【0182】
開示される技術に基づいたLUTに基づく動きベクトル予測は、既存のおよび将来の映像符号化規格の両方を向上させることができ、様々な実施形態のために以下の例で解明される。LUTは、履歴データ(例えば、既に処理されたブロック)に基づいて符号化/復号化処理を行うことを可能にするため、LUTに基づく動きベクトル予測は、HMVPHistory−based Motion Vector Prediction)法と呼ぶこともできる。LUTに基づく動きベクトル予測方法において、以前に符号化されたブロックからの動き情報を有する1つまたは複数のテーブルは、符号化/復号化処理の間、維持される。LUTに記憶されたこれらの動き候補をHMVP候補と称する。1つのブロックの符号化/復号化の間、LUTにおける関連付けられた動き情報を動き候補リスト(例えば、マージ/AMVP候補リスト)に追加して、1つのブロックを符号化/復号化した後に、LUTを使用してもよい。更新されたLUTは、その後、後続のブロックを符号化するために用いられる。このように、LUTにおける動き候補の更新は、ブロックの符号化/復号化の順に基づく。以下の例は、一般的な概念を説明するための例であると考えられるべきである。これらの例は狭い意味で解釈されるべきではない。さらに、これらの例は、任意の方法で組み合わせることができる。
【0183】
いくつかの実施形態において、1つのブロックの動き情報を予測するために、少なくとも1つの動き候補が記憶された1つ以上のルックアップテーブルを用いてもよい。実施形態は、動き候補を用いて、ルックアップテーブルに記憶された動き情報のセットを示すことができる。従来のAMVPまたはマージモードの場合、実施形態では、動き情報を記憶するためにAMVPまたはマージ候補を使用してもよい。
【0184】
以下の実施例は、一般的な概念を説明する。
【0186】
例A1:各ルックアップテーブルは、各候補がその動き情報に関連付けられた1つ以上の動き候補を含んでもよい。
a.動き候補の動き情報は、ここでは、予測方向、参照インデックス/ピクチャ、動きベクトル、LICフラグ、アフィンフラグ、MVD精度、MVD値の一部または全部を含んでもよい。
b.動き情報は、動き情報がどこに由来しているかを示すために、ブロック位置情報および/またはブロック形状をさらに含んでもよい。
【0188】
例B1:1つのブロックを符号化する場合、1つのルックアップテーブルからの動き候補の一部または全部を順にチェックすることができる。1つのブロックを符号化する間に1つの動き候補をチェックするとき、この動き候補を動き候補リスト(例えば、AMVP、マージ候補リスト)に加えてもよい。例B2:ルックアップテーブルの選択は、ブロックの位置に依存してもよい。
【0190】
例C1:チェック対象のルックアップテーブルにおける動き候補の総数は、予め規定されてもよい。
【0191】
例C2:1つのルックアップテーブルに含まれる1つ以上の動き候補は、1つのブロックによって直接継承されてもよい。
a.それらをマージモード符号化に使用してもよい。すなわち、マージ候補リスト導出処理において動き候補をチェックしてもよい。
b.これらは、アフィンマージモード符号化に使用してもよい。
i.アフィンフラグが1である場合、ルックアップテーブルにおける動き候補をアフィンマージ候補として加えることができる。
c.それらは、サブブロックマージモード、アフィンマージモード、トライアングルマージモード、インター−イントラマージモード、MMVD(Merge with MVD)モードのような他の種類のマージモードに使用してもよい。
d.以下の場合、ルックアップテーブルにおける動き候補のチェックを有効にしてもよい。
i.TMVP候補を挿入した後、マージ候補リストが満杯になっていない。
ii.空間的マージ候補導出のために特定の空間的に近傍のブロックをチェックした後、マージ候補リストが満杯になっていない。
iii.すべての空間的マージ候補の後、マージ候補リストが満杯になっていない。
iv.結合双方向予測マージ候補の後、マージ候補リストが満杯になっていない。
v.他の符号化方式(例えば、HEVCデザイン、またはJEMデザインのマージ導出処理)からマージ候補リストに入れられた空間的または時間的な(例えば、隣接空間および非隣接空間、TMVP、STMVP、ATMVPなどを含む)マージ候補の数が、最大許容のマージ候補から、所与の閾値を引いた数よりも少ない場合。
1.一例において、閾値は、1または0に設定される。
2.代替的に、閾値は、SPS/PPS/シーケンス、ピクチャ、スライスヘッダ/タイルにおいて信号通知されてもよく、または予め規定されてもよい。
3.代替的に、閾値は、ブロックごとに適応的に変更されてもよい。例えば、それは、ブロックサイズ/ブロック形状/スライスタイプのような符号化されたブロック情報に依存してもよく、および/または、利用可能な空間的または時間的マージ候補の数に依存してもよい。
4.他の例において、既にマージ候補リストに含まれていないある種のマージ候補の数が、最大許容マージ候補から、所与の閾値を引いた数未満である場合。「ある種のマージ候補」は、HEVCのような空間的候補であってもよいし、隣接しないマージ候補であってもよい。
vi.マージ候補リストに動き候補を追加する前に、プルーニングを適用してもよい。本特許明細書に開示されたこの例および他の例の様々な実装形態において、プルーニングは、a)動き情報と既存のエントリとを一意性のために比較すること、または、b)一意である場合、動き情報をリストに追加すること、またはc)一意でない場合、c1)動き情報を追加しない、または、c2)動き情報を追加し、一致した既存のエントリを削除することを含んでもよい。いくつかの実装形態において、テーブルから候補リストに動き候補を追加する際に、プルーニング工程は実行されない。
1.一例において、動き候補は、マージ候補リストの他の符号化方法から利用可能な空間的または時間的(例えば、隣接空間および非隣接空間、TMVP、STMVP、ATMVP等を含む)マージ候補の全部または一部にプルーニングされてもよい。
2.動き候補は、サブブロックに基づく動き候補、例えば、ATMVP、STMVPにプルーニングされなくてもよい。
3.一例において、現在の動き候補は、マージ候補リストにおける利用可能な動き候補(現在の動き候補の前に挿入された)の全部または一部にプルーニングされてもよい。
4.動き候補に関連するプルーニング工程の数(例えば、動き候補をマージリストにおける他の候補と比較する必要がある回数)は、利用可能な空間的または時間的マージ候補の数に依存してもよい。例えば、新しい動き候補をチェックする際に、マージリストに利用可能な候補がM個ある場合、新しい動き候補を最初のK個(K≦M)の候補とのみ比較することができる。プルーニング関数が偽を返す(例えば、最初のK個の候補のいずれとも同一でない)場合、この新しい動き候補は、M個の候補のすべてと異なると見なされ、マージ候補リストに追加され得る。一例において、Kは、min(K,2)に設定される。
5.一例において、新しく付加された動き候補とマージ候補リストにおける最初のN個の候補とを比較するだけである。例えば、N=3、4または5である。Nは、エンコーダからデコーダに信号通知されてもよい。
6.一例において、チェック対象の新しい動き候補は、マージ候補リストにおける最後のN個の候補と比較されるのみである。例えば、N=3、4または5である。Nは、エンコーダからデコーダに信号通知されてもよい。
7.一例において、以前リストに追加された候補をテーブルから選択し、新しい動き候補と比較する方法は、前回追加された候補がどこから導出されたかに依存してもよい。
a.一例において、ルックアップテーブルにおける動き候補を、所与の時間的および/または空間的に近傍のブロックから導出された候補と比較してもよい。
b.一例において、ルックアップテーブルにおける動き候補の異なるエントリを、以前追加された異なる候補と比較してもよい(すなわち、異なる位置から導出された)。
e.隣接/非隣接の空間的または時間的ブロックから導出されるような、他のマージ(またはアフィンマージまたは他のインター符号化方法)候補をチェックする前に、ルックアップテーブルにおける動き候補のチェックを有効にしてもよい。
f.ルックアップテーブルに少なくとも1つの動き候補がある場合、ルックアップテーブルにおける動き候補のチェックを有効にしてもよい。
【0192】
例C3:ルックアップテーブルに含まれる動き候補は、ブロックの動き情報を符号化するための予測因子として用いられてもよい使用してもよい。
a.それらをAMVPモード符号化に使用してもよく、すなわち、AMVP候補リスト導出処理において動き候補をチェックしてもよい。
b.それらは、MVDの一部のみを符号化するSMVD(Symmetric Motion Vector Difference)符号化に使用してもよい(例えば、1つの参照ピクチャリストに対して信号通知されたMVDのみであり、別の参照ピクチャリストから導出される)。
c.それらは、MVの一部のみを符号化するSMV(Symmetric Motion Vector)符号化に使用してもよい(例えば、1つの参照ピクチャリストに対して信号通知されたもののみであり、別の参照ピクチャリストから導出される)。
d.以下の場合、ルックアップテーブルにおける動き候補のチェックを有効にしてもよい。
i.TMVP候補をチェックまたは挿入した後、AMVP候補リストが満杯になっていない。
ii.AMVP候補リストが、空間的近傍から選択し、プルーニングした後で、TMVP候補を挿入する直前には、満杯になっていない。
iii.上側の近傍のブロックからのAMVP候補がスケーリング無しで存在しない場合、および/または、左側の近傍のブロックからのAMVP候補がスケーリング無しで存在しない場合。
iv.特定のAMVP候補を挿入した後、AMVP候補リストが満杯になっていない。
v.AMVP候補リストに動き候補を追加する前に、プルーニングを適用してもよい。
vi.実施例C2のvi.3および4に記載されたものと同様の規則は、AMVPモードに適用されてよい。
e.隣接/非隣接の空間的または時間的ブロックから導出されるような、他のAMVP(またはSMVD/SMV/アフィンインターまたは他のインター符号化方法)候補をチェックする前に、動き候補のチェックを有効にしてもよい。
f.ルックアップテーブルに少なくとも1つの動き候補がある場合、動き候補のチェックを有効にしてもよい。
g.現在の参照ピクチャと同一の参照ピクチャを有する(すなわち、POC(Picture−Order−Count)が同一である)動き候補をチェックする。すなわち、動き候補が現在の参照ピクチャと同一の参照ピクチャを含む場合、対応する動きベクトルは、AMVP候補リスト構成処理を考慮してもよい。
i.代替的に、更に、現在の参照ピクチャとは異なる参照ピクチャを有する動き候補も(スケーリングされたMVにて)チェックする。すなわち、動き候補が現在の参照ピクチャとは異なる参照ピクチャを有する場合、対応する動きベクトルは、AMVP候補リスト構築処理を考慮してもよい。
ii.代替的に、まず、現在の参照ピクチャと同一の参照ピクチャを有するすべての動き候補をチェックし、次に、現在の参照ピクチャとは異なる参照ピクチャを有する動き候補をチェックする。すなわち、同一の参照ピクチャを有する動き候補に対して、より高い優先順位を割り当てる。
iii.代替的に、動き候補は、マージにおいて同様にチェックされる。
iv.1つの動き候補が双方向予測候補である場合、まず参照ピクチャリストXの参照ピクチャ(例えば、参照ピクチャの参照ピクチャインデックスまたはピクチャ順序カウンタ)をチェックし、次に現在の参照対象ピクチャリストがXである場合、参照ピクチャリストY(Y!=X、例えば、Y=1−X)の参照ピクチャをチェックしてもよい。
v.代替的に、1つの動き候補が双方向予測候補である場合、まず参照ピクチャリストY(Y!=X,例えば、Y=1−X)の参照ピクチャ(例えば、参照ピクチャの参照ピクチャインデックスまたはピクチャ順序カウンタ)をチェックし、次に現在の参照対象ピクチャリストがXである場合、参照ピクチャリストXの参照ピクチャをチェックしてもよい。
vi.代替的に、参照ピクチャリストの参照ピクチャが、すべてのチェック対象の動き候補に関連付けられたY(Y!=X、例えば、Y=1−X)である前に、参照ピクチャリストの参照ピクチャが、すべてのチェック対象の動き候補に関連付けられたXであるかどうかをチェックしてもよい。
【0193】
例C4:ルックアップテーブルにおける動き候補のチェック順序は、以下のように規定される(K(K≧1)個の動き候補をチェックすることができるとする):
a.ルックアップテーブルにおける最後のK個の動き候補。
b.最初のK%L候補であって、Lは、K≧Lである場合のルックアップテーブルのサイズである。
c.K≧Lである場合、ルックアップテーブルにおけるすべての候補(L個の候補)。 d.代替的に、さらに、動き候補インデックスの降順に基づいてもよい。
e.代替的に、さらに、動き候補インデックスの昇順に基づいてもよい。
f.代替的に、動き候補に関連付けられた位置と現在のブロックの距離などの候補情報に基づいて、K個の動き候補を選択する。
i.一例において、K個の最も近い動き候補を選択する。
ii.一例において、距離を算出する際に、候補情報は、ブロックの形状をさらに考慮されてもよい。
g.一例において、L個の候補を含むテーブルからの動き候補のKのチェック順序は、次のように規定されてもよい:a
0、a
0+T
0、a
0+T
0+T
1、a
0+T
0+T
1+T
2、...a
0+T
0+T
1+T
2+...+T
K−1のインデックスを持つ候補を順に選択し、a
0とT
i(iは0...K−1である)は整数値である。
i.一例において、a
0は、0(すなわち、テーブルにおける動き候補の最初のエントリ)に設定される。代替的に、a
0は(K−L/K)に設定される。演算「/」は、結果をゼロに切り捨てる整数除算として規定される。代替的に、a
0は、0とL/Kとの間の任意の整数に設定される。
1.代替的に、a
0の値は、現在のブロックおよび近傍のブロックの符号化情報に依存してもよい。
ii.一例において、すべての間隔T
i(iは0…K−1である)は同じであり、例えばL/Kである。演算「/」は、結果をゼロに切り捨てる整数除算として規定される。
iii.一例において、(K,L,a
0,T
i)は、(4,16,0,4)、または(4,12,0,3)、または(4,8,0,1)、または(4,16,3,4)、または(4,12,2,3)、または(4,8,1,2)に設定される。T
iはすべてのiについて同じである。
iv.このような方法は、KがLよりも小さい場合にのみ適用されてもよい。
v.代替的に、Kが閾値以上である場合、例C4のc部を適用してもよい。閾値は、Lとして規定されてもよく、またはKに依存してもよく、またはブロックごとに適応的に変更されてもよい。一例において、閾値は、ルックアップテーブルから新しい動き候補を追加する前のリストにおける利用可能な動き候補の数に依存してもよい。
h.一例において、L個の候補を含むテーブルからの動き候補のKのチェック順序は、次のように規定されてもよい:a
0、a
0−T
0、a
0−T
0−T
1、a
0−T
0−T
1−T
2、...a
0−T
0−T
1−T
2−...−T
K−1のインデックスを持つ候補を順に選択し、a
0とT
i(iは0...K−1である)は整数値である。
i.一例において、a
0は、L−1(すなわち、テーブルにおける動き候補の最後のエントリ)に設定される。代替的に、a
0は、L−1−L/KとL−1との間の任意の整数に設定される。
ii.一例において、すべての間隔T
i(iは0…K−1である)は同じであり、例えばL/Kである。
iii.一例において、(K,L,a
0,T
i)は、(4,16,L−1,4)、または(4,12,L−1,3)、または(4,8,L−1,1)、または(4,16,L−4,4)、または(4,12,L−3,3)、または(4,8,L−2,2)に設定される。T
iはすべてのiについて同じである。
iv.このような方法は、KがLよりも小さい場合にのみ適用されてもよい。
v.代替的に、更に、Kが閾値以上である場合、例C4のc部を適用してもよい。閾値は、Lとして規定されてもよく、またはKに依存してもよく、またはブロックごとに適応的に変更されてもよい。一例において、閾値は、ルックアップテーブルから新しい動き候補を追加する前のリストにおける利用可能な動き候補の数に依存してもよい。
i.ルックテーブルから動き候補を選択する数および/または方法は、符号化情報、例えばブロックサイズ/ブロック形状に依存してもよい。
i.一例において、より小さいブロックサイズの場合、最後のK個の動き候補を選択する代わりに、(最後から始まらない)他のK個の動き候補を選択してもよい。
ii.一例において、符号化情報は、AMVPモードであってもよいし、マージモードであってもよい。
iii.一例において、符号化情報は、アフィンモードまたは非アフィンAMVPモードまたは非アフィンマージモードであってもよい。
iv.一例において、符号化情報は、アフィンAMVP(インター)モード、またはアフィンマージモード、または非アフィンAMVPモード、または非アフィンマージモードであってもよい。
v.一例において、符号化情報は、CPR(Current Picture Reference)モードであってもよいし、CPRモードでなくてもよい。
vi.代替的に、ルックアップテーブルから動き候補を選択する方法は、ルックアップテーブルにおける動き候補の数、および/または、ルックアップテーブルから新しい動き候補を追加する前のリストにおける利用可能な動き候補の数にさらに依存してもよい。
j.一例において、チェック対象のルックアップテーブルにおける利用可能な動き候補の最大数(すなわち、マージ/AMVP候補リストに追加されてもよい)は、ルックアップテーブルにおける利用可能な動き候補の数(N
avaiMCinLUTによって示される)、および/または、追加対象の(これは、予め規定されていてもよいし、信号通知されていてもよい)最大許容動き候補の数(NUM
maxMCによって示される)、および/または、ルックアップテーブルから候補をチェックする前の候補リストにおける利用可能な動き候補の数(N
avaiCによって示される)に依存していてもよい。
i.一例において、チェック対象のルックアップテーブルにおける動き候補の最大数は、(N
avaiMCinLUT,NUM
maxMC,N
avaiC)の最小値に設定される。
ii.代替的に、チェック対象のルックアップテーブルにおける動き候補の最大数は、(N
avaiMCinLUT,NUM
maxMC−N
avaiC)の最小値に設定される。
iii.一例において、N
avaiCは、空間的または時間的(隣接および/または非隣接)な近傍のブロックから導出された挿入候補の数を示す。代替的に、サブブロック候補(AMTVP、STMVPなど)の数は、N
avaiCにカウントされない。
iv.NUM
maxMCは、符号化モードに依存してもよく、例えば、マージモードおよびAMVPモードにおいて、NUM
maxMCは異なる値に設定されてもよい。一例において、マージモードの場合、NUM
maxMCは、4、6、8、10などに設定してもよく、AMVPモードの場合、NUM
maxMCは、1、2、4などに設定してもよい。
v.代替的に、NUM
maxMCは、ブロックサイズ、ブロック形状、スライスタイプなどのような他の符号化情報に依存してもよい。
k.異なるルックアップテーブルのチェック順序は、次のサブセクションのルックアップテーブルの使用法で規定されている。
l.一旦、マージ/AMVP候補リストが、最大許容候補数に達すると、このチェック処理は終了する。
m.一旦、マージ/AMVP候補リストが、最大許容候補数から閾値(Th)を減算した値に達すると、このチェック処理は終了する。一例において、Thは、例えば、1、2、または3など、正の整数値として予め規定されてもよい。代替的に、Thは、ブロックごとに適応的に変更されてもよい。代替的に、Thは、SPS/PPS/スライスヘッダ等において信号通知されてもよい。代替的に、Thは、さらに、ブロック形状/ブロックサイズ/符号化モードなどに依存してもよい。代替的に、Thは、LUTからの動き候補を追加する前の利用可能な候補の数に依存してもよい。
n.代替的に、追加された動き候補の数が最大許容動き候補数に達すると、それは終了する。最大許容動き候補数は、信号通知されてもよく、または予め規定されてもよい。代替的に、最大許容動き候補数は、ブロック形状/ブロックサイズ/符号化モード等にさらに依存してもよい。
o.テーブルサイズを示す1つのシンタックス要素ならびにチェック可能な動き候補の数(すなわち、K=L)は、SPS、PPS、スライスヘッダ、タイルヘッダにおいて信号通知されてもよい。
【0194】
いくつかの実装形態において、ルックアップテーブルにおける動き候補は他の候補を導出するために用いられてもよく、導出された候補はブロックを符号化するために用いられてもよい。
【0195】
いくつかの実装形態において、1つのブロックの動き情報符号化のためのルックアップテーブルの使用の有効/無効は、SPS、PPS、スライスヘッダ、タイルヘッダ、CTU、CTB、CU、またはPU、複数のCTU/CTB/CU/PUを覆う領域において信号通知されてもよい。
【0196】
いくつかの実装形態において、ルックアップテーブルからの予測を適用するかどうかは、さらに符号化情報に依存してもよい。1つのブロックに適用しないと推測される場合、予測の指示の追加の信号通知はスキップされる。代替的に、1つのブロックに適用しないと推測される場合、ルックアップテーブルの動き候補にアクセスする必要はなく、関連する動き候補のチェックは省略される。
【0197】
いくつかの実装形態において、以前符号化されたフレーム/スライス/タイルにおけるルックアップテーブルの動き候補を使用して、異なるフレーム/スライス/タイルにおけるブロックの動き情報を予測してもよい。
a.一例において、現在のブロックの参照ピクチャに関連付けられたルックアップテーブルのみを、現在のブロックを符号化するために利用してもよい。
b.一例において、現在のブロックを符号化するために、現在のブロックの同じスライスタイプおよび/または同じ量子化パラメータを有するピクチャに関連付けられたルックアップテーブルのみを利用してもよい。
【0199】
動き情報を有するブロックを符号化した後(すなわち、IntraBCモード、インター符号化モード)に、1つ以上のルックアップテーブルを更新してもよい。
【0200】
上述したすべての例および実装形態において、ルックアップテーブルは、符号化情報、または以前符号化されたブロックからの符号化情報から導出された情報を復号化順に示す。
a.ルックアップテーブルは、並進動き情報、またはアフィン動き情報、またはアフィンモデルパラメータ、またはイントラモード情報、または照明補償情報等を含んでもよい。
b.代替的に、ルックアップテーブルは、並進動き情報、またはアフィン動き情報、またはアフィンモデルパラメータ、またはイントラモード情報、または照明補償情報等のような情報を少なくとも2種類含んでもよい。
【0202】
以前符号化されたブロックの動き情報としてHMVP候補を規定する、HMVP(History−based MVP)方法が提案される。符号化/復号化処理中、複数のHMVP候補を有するテーブルが維持される。新しいスライスに遭遇した場合、テーブルは空になる。インター符号化されたブロックがあるときはいつでも、関連する動き情報を新しいHMVP候補としてテーブルの最後のエントリに加える。全体の符号化フローを
図30に示す。
【0203】
一例において、テーブルサイズはL(例えば、L=16または6、または44)に設定され、これは、L個までのHMVP候補をテーブルに追加することができることを示す。
【0204】
1つの実施形態(例11.g.iに対応する)において、以前符号化されたブロックからのHMVP候補がL個よりも多く存在する場合、テーブルが常に最新の以前符号化されたL個の動き候補を含むように、先入れ先出し(FIFO:First−In−First−Out)規則が適用される。
図31は、FIFO規則を適用してHMVP候補を除去し、提案される方法で使用されるテーブルに新しいものを追加する例を示す。
【0205】
別の実施形態(発明11.g.iiiに対応する)において、新しい動き候補を追加するときはいつでも(例えば、現在のブロックがインター符号化され、非アフィンモードであるなど)、まず、冗長性チェック処理を適用し、LUTに同じまたは類似した動き候補があるかどうかを識別する。
【0207】
図32Aは、新しい動き候補を追加する前に、LUTが満杯であった場合の例を示す。
【0208】
図32Bは、新しい動き候補を追加する前には、LUTが満杯でなかった場合の例を示す。
【0209】
図32Aおよび
図32Aは、ともに、冗長性除去に基づくLUT更新方法(1つの冗長性動き候補を除去する)の例を示す。
【0210】
図33Aおよび
図33Bは、冗長性除去に基づくLUT更新方法(複数の冗長性動き候補を除去する、図では2つの候補を示す)の2つの場合の実装例を示す。
【0211】
図33Aは、新しい動き候補を追加する前に、LUTが満杯であった場合の例を示す。
【0212】
図33Bは、新しい動き候補を追加する前に、LUTが満杯でなかった場合の例を示す。
【0213】
HMVP候補は、マージ候補リスト構築処理において使用され得る。TMVP候補の後に、テーブルにおける最後のエントリから最初のエントリ(または最後のK0のHMVP、例えば、K0=16または6)までのすべてのHMVP候補を挿入する。HMVP候補に対してプルーニングを適用する。利用可能なマージ候補の総数が信号通知された最大許容マージ候補に達すると、マージ候補リスト構築処理を終了する。代替的に、加算された動き候補の総数が、所与の値に達すると、LUTからの動き候補の取り出しを終了する。
【0214】
同様に、HMVP候補は、AMVP候補リスト構築処理において使用されてもよい。TMVP候補の後に、テーブルにおける最後のK1個のHMVP候補の動きベクトルを挿入する。AMVP対象参照ピクチャと同じ参照ピクチャを有するHMVP候補のみを用いて、AMVP候補リストを構築する。HMVP候補に対してプルーニングを適用する。一例において、K1は4に設定される。
【0215】
図28は、映像処理装置2800のブロック図である。装置2800は、本明細書に記載の方法の1つ以上を実装するために使用してもよい。装置2800は、スマートフォン、タブレット、コンピュータ、IoT(Internet of Things)受信機等により実装されてもよい。装置2800は、1つ以上のプロセッサ2802と、1つ以上のメモリ2804と、映像処理ハードウェア2806と、を含んでもよい。1つまたは複数のプロセッサ2802は、本明細書に記載される1つ以上の方法を実装するように構成されてもよい。1または複数のメモリ2804は、本明細書で説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用してもよい。映像処理ハードウェア2806は、本明細書に記載される技術をハードウェア回路にて実装するために用いられてよい。
【0216】
図29は、映像復号化方法2900の例のフローチャートである。方法2900は、テーブルを維持すること(2902)を含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられる。方法2900は、さらに、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換(2904)を行うことを含み、変換を行うことは、動き候補のセットのうちの少なくとも一部を予測因子として使用して第1の映像ブロックの動き情報を処理することを含む。
【0217】
方法2900に対して、いくつかの実施形態において、動き情報は、予測方向、参照ピクチャインデックス、動きベクトル値、強度補償フラグ、アフィンフラグ、動きベクトル差精度または動きベクトル差分値のうち少なくとも1つを含む。さらに、動き情報は、動き情報がどこから来ているかを示すために、ブロック位置情報をさらに含んでもよい。いくつかの実施形態において、映像ブロックはCUまたはPUであり、映像の一部は1つ以上の映像スライスまたは1つ以上の映像ピクチャに対応してよい。
【0218】
いくつかの実施形態において、各LUTは、関連するカウンタを含み、カウンタは、映像の部分の最初においてゼロ値に初期化され、映像の部分における各符号化された映像領域ごとに増加される。映像領域は、符号化ツリーユニット、符号化ツリーブロック、符号化ユニット、符号化ブロックまたは予測ユニットのうちの1つを含む。いくつかの実施形態において、カウンタは、対応するLUTに対して、対応するLUTから除去された動き候補の数を示す。いくつかの実施形態において、動き候補のセットはすべてのLUTに対して同じサイズを有していてもよい。いくつかの実施形態において、映像の一部は1つの映像スライスに対応し、LUTの数はN*Pに等しく、Nは1つの復号化スレッド当たりのLUTを表す整数であり、Pは1つの映像スライスにおける最大符号化ユニットの行の数またはタイルの数を表す整数である。方法2900のさらなる詳細は、第4章に提供される実施例および以下に列挙される実施例に記載される。
【0219】
上述した方法/技術の特徴および実施形態を以下に説明する。
【0220】
1.テーブルを維持することであって、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられる、ことと、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことであって、変換を行うことは、動き候補のセットのうちの少なくとも一部を予測因子として使用して第1の映像ブロックの動き情報を処理することを含む、ことと、を有する映像処理方法。
【0221】
2.前記テーブルは、前記第1の映像ブロックの前に復号化された、以前復号化された映像ブロックから導出した動き候補を含む、第1項に記載の方法。
【0222】
3.前記変換を行うことは、動き候補の前記セットの少なくとも一部を使用して、AMVP(Advanced Motion Vector Prediction)候補リスト導出処理を行うこと含む、第1項に記載の方法。
【0223】
4.前記AMVP候補リスト導出処理は、1つ以上のテーブルからの動き候補をチェックすることを含む、第3項に記載の方法。
【0224】
5.前記変換を行うことは、動き候補をチェックすることを含み、前記チェックされた動き候補に関連付けられた動きベクトルは、前記第1の映像ブロックの前記動きベクトルを符号化するための動きベクトル予測因子として使用する、第1〜4項のいずれか1項に記載の方法。
【0225】
6.チェックされた動き候補に関連付けられた動きベクトルは、前記AMVP動き候補リストに追加される、第4項に記載の方法。
【0226】
7.前記変換を行うことは、規則に基づいて動き候補の少なくとも一部をチェックすることを含む、第1項に記載の方法。
【0227】
8.前記規則は、TMVP(Temporal Motion Vector Prediction)候補をチェックした後、AMVP候補リストが満杯でない場合、前記チェックを有効にする、第7項に記載の方法。
【0228】
9.前記規則は、空間的近傍から選択し、プルーニングした後、TMVP候補を挿入する前に、AMVP候補リストが満杯でない場合、前記チェックを有効にすることを有効にする、第7項に記載の方法。
【0229】
10.前記規則は、i)上側の近傍のブロックからのAMVP候補がスケーリング無しで存在しない場合、または、ii)左側の近傍のブロックからのAMVP候補がスケーリング無しで存在しない場合に、前記チェックを有効にする、第7項に記載の方法。
【0230】
11.規則は、AMVP候補リストに動き候補を追加する前に、プルーニングを適用する場合、前記チェックを有効にする、第7項に記載の方法。
【0231】
12.現在の参照ピクチャと同一の参照ピクチャを有する動き候補をチェックする、第1項に記載の方法。
【0232】
13.現在の参照ピクチャと異なる参照ピクチャを有する動き候補をさらにチェックする、第12項に記載の方法。
【0233】
14.同一の参照ピクチャを有する動き候補をチェックすることは、異なる参照ピクチャを有する動き候補をチェックすることに先立って実行される、第13項に記載の方法。
【0234】
15.動き候補から動きベクトルをテーブルに追加する前に、プルーニング工程を含むAMVP候補リスト構成処理をさらに含む、第1項に記載の方法。
【0235】
16.前記プルーニング工程は、動き候補を、AMVP候補リストにおける利用可能な動き候補の少なくとも一部と比較することを含む、第15項に記載の方法。
【0236】
17.前記プルーニング工程は、複数の工程を含み、その数は、複数の空間的または時間的AMVP候補の関数である、第15項に記載の方法。
【0237】
18.前記複数の工程は、AMVP候補リストにおいてM個の候補が利用可能である場合に、前記プルーニングが、K個のAMVP候補にのみ適用され、K≦Mであり、KおよびMは整数である、第17項に記載の方法。
【0238】
19.前記変換を行うことは、いくつかの動きベクトルの差分を用いて、SMVD(Symmetric Motion Vector Difference)処理を行うことを含む、第1項に記載の方法。
【0239】
20.前記変換を行うことは、いくつかの動きベクトルを用いて、SMV(Symmetric Motion Vector)処理を行うことを含む、第1項に記載の方法。
【0240】
21.前記規則は、あるAMVP候補を挿入した後に、AMVP候補リストが満杯でない場合、前記チェックを有効とする、第7項に記載の方法。
【0241】
22.前記テーブルにおける動き候補のチェックを有効とすることを更に有し、前記チェックは、空間的または時間的ブロックから導出した他の候補をチェックする前に有効にされ、他の候補は、AMVP候補、SMVD候補、SMV候補、またはアフィンインター候補を含む、第1項に記載の方法。
【0242】
23.テーブルにおける動き候補のチェックを有効とすることを更に有し、前記チェックは、前記テーブルに少なくとも1つの動き候補がある場合に有効になる、第1項に記載の方法。
【0243】
24.双方向予測候補である動き候補の場合、第2の参照ピクチャリストの参照ピクチャがチェックされる前に、第1の参照ピクチャリストの参照ピクチャがチェックされ、前記第1の参照ピクチャリストは現在の参照対象ピクチャリストである、第1項に記載の方法。
【0244】
25.双方向予測候補である動き候補の場合、第2の参照ピクチャリストの参照ピクチャがチェックされる前に、第1の参照ピクチャリストの参照ピクチャがチェックされ、前記第2の参照ピクチャリストは現在の参照対象ピクチャリストである、第1または2項に記載の方法。
【0245】
26.第1の参照ピクチャリストの参照ピクチャは、第2の参照ピクチャリストの参照ピクチャの前にチェックされる、第1項に記載の方法。
【0246】
27.前記変換を行うことは、前記第1の映像ブロックから前記ビットストリーム表現を生成することを含む、第1項に記載の方法。
【0247】
28.前記変換を行うことは、前記第1の映像ブロックをビットストリーム表現から生成することを含む、第1項に記載の方法。
【0248】
29.動き候補は、予測方向、参照ピクチャインデックス、動きベクトル値、強度補償フラグ、アフィンフラグ、動きベクトル差精度、または動きベクトル差分値のうち少なくとも1つを含む動き情報に関連付けられる、第1〜28項のいずれか1項に記載の方法。
【0249】
30.1つの動き候補は、イントラ符号化されたブロックに用いられるイントラ予測モードに関連付けられる、第1〜29項のいずれか1項に記載の方法。
【0250】
31.1つの動き候補は、IC符号化されたブロックに用いられる複数のIC(Illumination Compensation)パラメータに関連付けられる、第1〜29項のいずれか1項に記載の方法。
【0251】
32.1つの動き候補は、フィルタリング処理に用いられるフィルタパラメータに関連付けられる、第1〜29項のいずれか1項に記載の方法。
【0252】
33.前記変換に基づいて、1つ以上のテーブルを更新することをさらに含む、第1〜29項のいずれか1項に記載の方法。
【0253】
34.1つ以上のテーブルを前記更新することは、前記変換を行った後、前記第1の映像ブロックの動き情報に基づいて1つ以上のテーブルを更新することを含む、第33項に記載の方法。
【0254】
35.前記更新されたテーブルに基づいて、前記映像の後続の映像ブロックと前記映像のビットストリーム表現との間で変換を行うことをさらに含む、第34項に記載の方法。
【0255】
36.プロセッサと、命令が記憶された非一時的メモリとを備える装置であって、前記命令は、前記プロセッサにより実行された際に、前記プロセッサに、第1項〜35項のいずれか一項に記載の方法を実施させる装置。
【0256】
37.第1〜35項のいずれか1項に記載の方法を実行するためのプログラムコードを含む、非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラム製品。
【0257】
以上、説明の目的で本開示の技術の特定の実施形態を説明したが、本発明の範囲から逸脱することなく様々な修正が可能であることは、理解されるであろう。従って、本開示の技術は、添付の特許請求の範囲による場合を除き、限定されない。
【0258】
本明細書に記載された開示された、およびその他の実施形態、モジュール、および機能操作の実装形態は、本明細書に開示された構造およびその構造的等価物を含め、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1つ以上の組み合わせで実施してもよい。開示された、およびその他の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置によって実装されるため、またはデータ処理装置の操作を制御するために、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶装置、機械可読記憶基板、記憶装置、機械可読伝播信号をもたらす物質の組成物、またはこれらの1つ以上の組み合わせであってもよい。「データ処理装置」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサ、若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を含む。この装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つ以上の組み合わせを構成するコードを含んでもよい。伝播信号は、人工的に生成した信号、例えば、機械で生成した電気、光、または電磁信号であり、適切な受信装置に送信するための情報を符号化するために生成される。
【0259】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとして含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。1つのコンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開可能である。
【0260】
本明細書に記載されたプロセスおよびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって行うことができる。プロセスおよびロジックフローはまた、特別目的のロジック回路、例えば、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行することができ、装置はまた、特別目的のロジック回路として実装することができる。
【0261】
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用および専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つ以上の記憶装置とである。一般的に、コンピュータは、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、および記憶装置を含み、例えば、EPROM、EEPROM、フラッシュ記憶装置、磁気ディスク、例えば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD−ROMおよびDVD−ROMディスク等の半導体記憶装置を含む。プロセッサおよびメモリは、専用ロジック回路によって補完されてもよく、または専用ロジック回路に組み込まれてもよい。
【0262】
この特許明細書は多くの詳細を含むが、これらは、任意の発明の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許明細書において別の実施形態の文脈で説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、単一の例の文脈で説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1つ以上の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブ組み合わせまたはサブ組み合わせのバリエーションに向けられてもよい。
【0263】
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で実行されること、または示された全ての操作が実行されることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムの構成要素の分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
【0264】
いくつかの実装形態および例のみが記載されており、この特許明細書に記載され図示されている内容に基づいて、他の実施形態、拡張および変形が可能である。