(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の映像ブロックと、前記第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、前記変換を行った後に、更新規則に基づいて、ゼロ以上のテーブルを更新することを含む映像処理方法。
前記更新規則は、前記映像の1つのピクチャまたは1つのスライスまたは1つのタイルの境界に位置する映像ブロックのテーブルを更新することを許可しない、請求項1に記載の方法。
テーブルを維持することを含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられ、前記テーブルに基づいて第1の映像ブロックと、前記第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、前記変換を行った後、前記映像における1つ以上の映像領域に基づいて、更新終了判定基準が満たされるまで、1つ以上のテーブルを更新することをさらに含む、映像処理方法。
テーブルは、スライス、タイル、最大符号化ユニット(LCU)行、または同じ時間層インデックスを有するスライス内でのみテーブルを更新する、請求項1または3に記載の方法。
S個の映像領域に対して前記変換を行った後、または一定のサイズの映像領域に対して前記変換を行った後、テーブルを更新し、Sは整数である、請求項1または3に記載の方法。
前記予め規定された値は、映像パラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ、タイルヘッダ、符号化ツリーユニット(CTU)、符号化ツリーブロック(CTB)、符号化ユニット(CU)、または予測ユニット(PU)、または複数のCTU、複数のCTB、複数のCU、または複数のPUに広がる映像領域において信号通知される、請求項7に記載の方法。
前記更新規則は、前記第1の映像ブロックの左上座標(x,y)が、前記更新規則に規定された一定の条件を満たす場合、テーブルを更新する、請求項1または3に記載の方法。
動き候補を含む1つ以上のテーブルを維持することを含み、各動き候補は、対応する動き情報に関連付けられ、前記1つ以上のテーブルのうちの少なくとも1つにおいて動き候補を再配列することと、少なくとも1つのテーブルの前記再配列した動き候補に基づいて、第1の映像ブロックと、前記第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、を含む、映像処理方法。
動き候補を含む1つ以上のテーブルを維持することを含み、各動き候補は、対応する動き情報に関連付けられ、1つ以上の再配列されたテーブルに基づいて、前記1つ以上のテーブルを使用して、第1の映像ブロックと、前記第1の映像ブロックを含む映像のビットストリーム表現とを変換することと、前記第1の映像ブロックの前記変換および前記テーブルにおける前記動き候補の並び替えに基づいて、前記テーブルに追加の動き候補を追加することで、1つ以上のテーブルを更新することと含む、映像処理方法。
さらに、前記再配列されたテーブルに基づいて、前記映像の後続の映像ブロックと前記映像の前記ビットストリーム表現との間で変換を行うことを含む、請求項15または17に記載の方法。
前記再配列は、最大符号化ユニット(LCU)、LCU行、複数のLCUのうちの少なくとも1つを含む映像ユニットに対して前記変換を行った後に行われる、請求項17に記載の方法。
動き候補は、予測方向、参照ピクチャインデックス、動きベクトル値、強度補償フラグ、アフィンフラグ、動きベクトル差精度または動きベクトル差分値のうち少なくとも1つを含む動き情報に関連付けられる、請求項1〜21のいずれか1項に記載の方法。
前記1つ以上のテーブルを更新することは、前記変換を行った後、前記第1の映像ブロックの前記動き情報に基づく1つ以上のテーブルを更新することを含む、請求項1〜14、および請求項16〜22のいずれか1項に記載の方法。
処理装置と、命令を搭載した非一時的メモリとを備え、前記処理装置が実行すると、前記命令は、前記処理装置に、請求項1〜24のいずれか1つ以上に記載の前記方法を実装させる、装置。
非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、請求項1〜24のいずれか1つ以上に記載の前記方法を実行するためのプログラムコードを含む、コンピュータプログラム製品。
【発明を実施するための形態】
【0014】
より高い解像度の映像の需要が増大しているため、近代技術において、映像符号化法および技術は、遍在している。ビデオコーデックは、一般的に、デジタル映像を圧縮または展開する電子回路またはソフトウェアを含み、より高い符号化効率を提供するように絶えず改良されている。ビデオコーデックは、非圧縮映像を圧縮フォーマットに変換する、またはその逆である。映像の品質、映像を表現するために使用されるデータの数(ビットレートで決まる)、エンコーディングおよびデコーディングアルゴリズムの複雑性、データの損失およびエラーに対する敏感さ、編集のしやすさ、ランダムアクセス、およびエンドツーエンドの遅延(待ち時間)の間には複雑な関係がある。この圧縮フォーマットは、通常、標準的な映像圧縮仕様、例えば、高効率映像符号化(HEVC)規格(H.265またはMPEG−H Part 2としても知られている)、完成させるべき汎用映像符号化規格、または他の現在のおよび/または将来の映像符号化基準に準拠する。
【0015】
開示される技術の実施形態は、圧縮性能を向上させるために、既存の映像符号化規格(例えば、HEVC、H.265)および将来の規格に適用されてもよい。本明細書では、説明の可読性を向上させるために章の見出しを使用しており、説明または実施形態(および/または実装形態)をそれぞれの章のみに限定するものではない。
【0016】
1. 映像符号化の例示的な実施形態
図1は、典型的なHEVCビデオエンコーダおよびデコーダの例示的なブロック図を示す(参照[1])。HEVCに準拠したビットストリームを生成するエンコーディングアルゴリズムは、一般的に、以下のように進む。各ピクチャはブロック状の領域に分割され、正確なブロックのパーティショニングがデコーダに伝達される。映像シーケンスの第1のピクチャ(および各クリーンなランダムアクセスポイントにおける映像シーケンスへの第1のピクチャ)は、イントラピクチャ予測(同じピクチャ内の領域から領域へのデータの何らかの予測を使用するが、他のピクチャに依存しない)のみを使用してコーディングされる。シーケンスの残りのすべてのピクチャに対して、またはランダムアクセスポイント間で、インターピクチャ時間予測コーディングモードが、一般的に、ほとんどのブロックに対して使用される。インターピクチャ予測のためのエンコーディング処理は、選択された参照ピクチャと、各ブロックのサンプルを予測するために適用される動きベクトル(MV)とを備える動きデータを選択することからなる。エンコーダおよびデコーダは、MVおよびモード決定データを使用して動き補償(MC)を行うことで、同一のインターピクチャ予測信号を生成し、これらをサイド情報として送信する。
【0017】
元のブロックとその予測との差である、イントラ、またはインターピクチャ予測の残差信号は、線形空間的変換によって変換される。そして、変換係数をスケーリング、量子化、エントロピーコーディングし、予測情報とともに送信する。
【0018】
エンコーダは、デコーダ処理ループを複製し(
図1の灰色がかった四角形を参照)、両方が後続のデータに対して同じ予測を生成するようにする。そこで、逆スケーリングにより量子化変換係数を構築し、逆変換することにより、残差信号の復号近似を複製する。次に、この残差をこの予測に加え、この加算の結果を1つまたは2つのループフィルタに供給し、ブロック単位の処理および量子化によって引き起こされたアーチファクトを平滑化することができる。最後のピクチャ表現(すなわち、デコーダの出力の複製)は、後続のピクチャの予測に使用されるように、符号化されたピクチャバッファに記憶される。一般的に、ピクチャの符号化または復号化処理の順序は、ソースからピクチャが到着する順序と異なることが多く、デコーダにとって、復号化順序(すなわち、ビットストリームの順序)と出力順序(すなわち、表示順序)とを区別することが必要となる。
【0019】
HEVCによってエンコードされるべき映像素材は、一般的に、プログレッシブスキャンイメージとして入力されることが期待される(そのフォーマットに由来するソース映像によるものであるか、代替的に、エンコーディングの前にデインターレースすることに起因する)。HEVC設計において、インターレース走査の使用をサポートするための明確なコーディング機能は存在せず、インターレース走査は、もはや表示に使用されず、配信にあまり用いられなくなってきている。しかしながら、HEVCにおいてメタデータ構文が提供され、エンコーダは、インターレース映像の各フィールド(即ち、各映像フレームの偶数または奇数番目のライン)を別個のピクチャとして符号化することによって、インターレース走査された映像が送信されたこと、または、各インターレースフレームをHEVC符号化ピクチャとして符号化することによって送信されたことを示すことができる。これは、デコーダに負担をかけることなく、そのために特別な符号化処理をサポートする必要がある、インターレース映像を符号化する効率的な方法を提供する。
【0020】
1.1. H.264/AVCにおけるパーティションツリー構造の例
以前の規格におけるコーディング層のコアは、16×16ブロックの輝度サンプルを含む、また、通常の4:2:0カラーサンプリングの場合、2つの対応する8×8ブロックのクロマサンプル含むマクロブロックであった。
【0021】
イントラコーディングされたブロックは、画素間の空間的相関を利用するために空間予測を使用する。2つのパーティションを規定する。16×16および4×4である。
【0022】
インターコーディングされたブロックは、ピクチャ間の動きを推定することで、空間的予測の代わりに時間予測を用いる。動きは、16×16マクロブロックまたはそのサブマクロブロックパーティションのいずれかに対して独立して推定できる。
図2に示す16×8、8×16、8×8、8×4、4×8、4×4である(参照[2])。1つのサブマクロブロックパーティション当たり1つの動きベクトル(MV)のみが許可される。
【0023】
1.2 HEVCにおけるパーティションツリー構造の例
HEVCにおいて、コーディングツリーユニット(CTU)は、コーディングツリーと呼ばれる4分木構造を利用してコーディングユニット(CU)に分けられ、様々な局所的特徴に適応する。インターピクチャ(時間的)予測またはイントラピクチャ(空間的)予測を使用した、ピクチャ領域をコーディングするかどうかの決定は、CUレベルで行われる。各CUは、PU分割タイプに基づいて、1つ、2つまたは4つの予測ユニット(PU)にさらに分割されてもよい。1つのPUの内部では、同じ予測処理が適用され、PU単位で関連情報がデコーダに送信される。PU分割タイプに基づく予測処理を適用して残差ブロックを得た後、CUのためのコーディングツリーに類似した別の4分木構造に基づいて、CUを変換ユニット(TU)に分割することができる。HEVC構造の重要な特徴の1つは、CU、PU、TUを含む複数のパーティション概念を有することである。
【0024】
HEVCを使用するハイブリッド映像符号化に関与する特定の特徴は、以下を含む。
【0025】
(1)コーディングツリーユニット(CTU)およびコーディングツリーブロック(CTB)構造:HEVCにおける類似した構造は、符号化ツリーユニット(CTU)であり、この符号化ツリーユニットは、エンコーダによって選択されたサイズを有し、従来のマクロブロックよりも大きくてもよい。CTUは、輝度CTBと、対応するクロマCTBおよび構文要素とからなる。輝度CTBのサイズL×Lは、L=16、32、または64個のサンプルとして選択することができ、より大きいサイズは、一般的に、より優れた圧縮を有効にする。HEVCは、次いで、ツリー構造および4分木様の信号通知を使用して、CTBをより小さなブロックにパーティショニングすることをサポートする。
【0026】
(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)とを有する。
【0027】
(3)予測ユニットおよび予測ブロック(PB):インターピクチャまたはイントラピクチャ予測を使用してピクチャ領域をコーディングするかどうかの決定は、CUレベルで行われる。PUのパーティショニング構造は、そのルートがCUレベルにある。基本的な予測タイプの決定に基づいて、次に、ルマ度およびクロマCBのサイズをさらに分割し、輝度およびクロマ予測ブロック(PB)から予測することができる。HEVCは、64×64個のサンプルから4×4個のサンプルまでの可変PBサイズをサポートする。
図3は、M×M個のCUのための許可されたPBの例を示す。
【0028】
(4)変換ユニット(Tus)および変換ブロック:予測残差は、ブロック変換を使用してコーディングされる。TUツリー構造は、そのルートがCUレベルにある。この輝度CB残差は、輝度変換ブロック(TB)と同一であってもよいし、小さな輝度TBにさらに分割されてもよい。クロマTBについても同様である。正方形TBサイズ4×4、8×8、16×16、および32×32に対して、離散コサイン変換(DCT)の整数基底関数に類似した整数基底関数が規定される。輝度イントラピクチャ予測残差の4×4変換のために、離散正弦変換(DST)の形式から導出される整数変換が代替的に指定される。
【0029】
1.2.1. TBとTUへのツリー構造の分割の例
残差コーディングの場合、CBは、変換ブロック(TB)に再帰的に分割することができる。このパーティショニングは、残差4分木によって信号通知される。
図4Aおよび4Bに示すように、1つのブロックを再帰的に象限に分割することができるように、正方形のCBおよびTBのパーティショニングのみを指定する。サイズM×Mの所与の輝度CBに対して、フラグは、それがサイズM/2×M/2の4つのブロックに分割されるかどうかを信号通知する。さらなる分割が可能である場合、シーケンスパラメータセット(SPS)に示される残差4分木の最大深さによって信号通知されるように、各象限には、それが4つの象限に分割されているかどうかを示すフラグが割り当てられる。残差4分木の結果得られるリーフノードブロックは、変換コーディングによってさらに処理される変換ブロックである。エンコーダは、それが使用することになる最大輝度TBサイズおよび最小ルマ度TBサイズを示す。CBサイズが最大TBサイズよりも大きい場合、分割は非明示的に行われる。分割により、示された最小値よりも小さい輝度TBサイズとなる場合、分割を行わないことが、非明示的に行われる。輝度TBサイズが4×4である場合を除き、クロマTBサイズは、各次元において輝度TBサイズの半分であり、この場合、4つの4×4ルマTBによって覆われる領域には1つの4×4クロマTBが使用される。イントラピクチャ予測CUの場合、最近の近傍のTB(CB内またはCB外)の復号サンプルを、イントラピクチャ予測のための参照データとして用いる。
【0030】
従来の規格とは対照的に、HEVC設計により、1つのTBがインターピクチャ予測CUのために複数のPBにまたがることを可能となり、4分木構造のTBのパーティショニングの潜在的なコーディング効率の利点が最大となる。
【0031】
1.2.2. 親子ノード
CTBは、4分木構造に基づいて分割され、そのノードはコーディングユニットである。4分木構造における複数のノードは、リーフノードおよび非リーフノードを含む。リーフノードは、ツリー構造内に子ノードを持たない(すなわち、リーフノードはそれ以上分割されない)。非リーフノードは、ツリー構造のルートノードを含む。ルートノードは、映像データの最初の映像ブロック(例えば、CTB)に対応する。複数のノードのうちのそれぞれの非ルートノードごとに、それぞれの非ルートノードは、それぞれの非ルートノードのツリー構造における親ノードに対応する映像ブロックのサブブロックである映像ブロックに対応する。複数の非リーフノードのそれぞれの非リーフノードは、ツリー構造において1つ以上の子ノードを有する。
【0032】
1.3. JEMにおけるより大きいCTUを有する4分木+2分木ブロック構造の例
いくつかの実施形態において、将来の映像符号化技術は、共同探索モデル(JEM)として知られる参照ソフトウェアを使用して探索される。JEMは、2分木構造に加え、4分木+2分木(QTBT)および3分木(TT)構造を記述している。
【0033】
1.3.1. QTBTブロックパーティショニング構造の例
HEVCとは対照的に、QTBT構造は、複数のパーティションタイプの概念を削除する。すなわち、CU、PU、TUのコンセプトの切り離しを取り除き、CUパーティションの形状の柔軟性を向上させる。QTBTブロック構造において、CUは正方形または長方形のいずれかを有することができる。
図5Aに示すように、まず、コーディングツリーユニット(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を含み、時には、単一の成分のCBからなる。例えば、1つのCUは、1つの輝度CBのみを含み、またはIスライスの場合、2つのクロマCBのみを含む。
【0034】
QTBTパーティショニング方式に対して以下のパラメータを規定する。
−−CTUのサイズ:1つの4分木のルートノードのサイズ、HEVCと同じ概念
−−MinQTSize:最小許容4分木のリーフノードサイズ
−−Ma×BTSize:最大許容2分木のルートノードサイズ
−−Ma×BTDepth:最大許容2分木の深さ
−−MinBTSize:最小限に許容される2分木のリーフノードのサイズ
【0035】
QTBTのパーティショニング構造の一例において、CTUのサイズを、2つの対応する64×64ブロックのクロマサンプルを有する128×128の輝度サンプルとして設定し、MinQTSizeを16×16として設定し、Ma×BTSizeを64×64として設定し、MinBTSize(幅および高さの両方について)を4×4として設定し、Ma×BTDepthを4として設定する。4分木のパーティショニングは、まずCTUに適用され、4分木のリーフノードを生成する。4分木のリーフノードのサイズは、16×16(即ち、MinQTSize)から128×128(即ち、CTUサイズ)までが可能である。4分木のリーフノードが128×128である場合、サイズがMa×BTSize(すなわち、64×64)を超えるため、2分木によってさらに分割されない。そうでない場合、4分木のリーフノードは、2分木によってさらに分割されてもよい。従って、この4分木のリーフノードは、2分木のルートノードでもあり、その2分木の深さは0である。2分木の深さがMa×BTDepth(すなわち、4)に達した場合、それ以上の分割は考慮されない。2分木のノードの幅がMinBTSizeに等しい(すなわち、4である)場合、それ以上の水平分割は考慮されない。同様に、2分木のノードの高さがMinBTSizeに等しい場合、それ以上の垂直分割は考慮されない。2分木のリーフノードは、さらにパーティショニングすることなく、予測および変換処理によってさらに処理される。JEMにおいて、最大CTUサイズは、256×256個の輝度サンプルである。
【0036】
図5AはQTBTを用いたブロックのパーティショニングの例を示し、
図5Bは対応するツリー表現を示す。実線は4分木の分割を表し、点線は2分木の分割を表す。2分木の各分割(即ち、非リーフ)ノードにおいて、1つのフラグが、どの分割タイプ(即ち、水平または垂直)が使用されるかを示すために信号通知される。ここで、0は、水平分割を表し、1は、垂直分割を表す。4分木の分割の場合、4分木の分割は常にブロックを水平および垂直に分割し、等分したサイズの4つのサブブロックを生成するため、分割タイプを示す必要がない。
【0037】
さらに、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つの色成分すべてのコーディングされたブロックからなることを意味する。
【0038】
HEVCにおいて、小さなブロックのためのインター予測は、動き補償のメモリアクセスを低減するために制限され、その結果、4×8および8×4ブロックのために双予測はサポートされず、4×4ブロックのためにインター予測はサポートされない。JEMのQTBTにおいて、これらの制限は取り除かれる。
【0039】
1.4. 汎用映像符号化(VVC)のための3分木(TT)
図6Aは、4分木(QT)のパーティショニングの例を示し、
図6Bおよび
図6Cは、それぞれ、垂直および水平2分木(BT)のパーティショニングの例を示す。いくつかの実施形態において、4分木および2分木に加え、3分木(TT)のパーティショニング、例えば、水平および垂直中心側3分木(
図6Dおよび
図6Eに示す)がサポートされる。
【0040】
いくつかの実装形態において、2つのレベルの木、即ち、領域ツリー(4分木)および予測ツリー(2分木または3分木)がサポートされる。CTUは、まず、領域ツリー(RT)によって分割される。RTリーフは、予測ツリー(PT)によってさらに分割されてもよい。PTリーフはまた、最大PT深さに達するまで、PTでさらに分割されてもよい。PTリーフが基本コーディングユニットである。便宜上、ここでもCUと呼ぶ。1つのCUをさらに分割することはできない。予測および変換は両方ともJEMと同様にCUに適用される。パーティション構造全体を「マルチタイプツリー」と呼ぶ。
【0041】
1.5. 代替映像符号化技術におけるパーティショニング構造の例
いくつかの実施形態において、QTBTを一般化したマルチツリータイプ(MTT)と呼ばれるツリー構造が支援される。QTBTにおいて、
図7に示すように、コーディングツリーユニット(CTU)が、まず、4分木構造で分割される。4分木のリーフノードは、2分木構造によってさらに分割される。
【0042】
MTTの構造は、2つのタイプのツリーノードを構成する。
図8に示すように、領域ツリー(RT)および予測ツリー(PT)は、9つのタイプのパーティションをサポートする。1つの領域ツリーは、1つのCTUを4×4サイズの領域ツリーのリーフノードになるように正方形のブロックに再帰的に分割することができる。領域ツリーにおける各ノードにおいて、予測ツリーは、2分木、3分木、および非対称2分木の3つのツリータイプのうちの1つから形成することができる。PT分割において、予測ツリーの枝に4分木のパーティションを有することは禁止される。JEMにおけるように、輝度ツリーおよびクロマツリーは、I個のスライスに分けられる。RTおよびPTの信号通知方法を
図9Aに示す。
【0043】
2. HEVC/H.265におけるインター予測の例
映像符号化規格は、長年にわたって大幅に改善され、現在、部分的には、高いコーディング効率を実現し、より高い解像度をサポートする。HEVCおよびH.265などの最近の規格は、時間予測プラス変換コーディングが利用されるハイブリッド映像符号化構造に基づく。
2.1 予測モードの例
【0044】
各インター予測されたPU(予測ユニット)は、1つまたは2つの参照ピクチャリストのための動きパラメータを有する。いくつかの実施形態において、動きパラメータは、動きベクトルおよび参照ピクチャインデックスを含む。他の実施例において、2つの参照ピクチャリストのうちの1つの参照ピクチャリストの使用は、inter_pred_idcを用いて通知されてもよい。さらに他の実施形態において、動きベクトルは、予測子に対するデルタ(delta)として明確にコーディングされてもよい。
【0045】
1つのCUがスキップモードでコーディングされる場合、1つのPUがこのCUに関連付けられ、有意な残差係数がなく、コーディング動きベクトルデルタも参照ピクチャインデックスもない。マージモードを指定し、これにより、現在のPUのための動きパラメータを、空間的および時間的候補を含む近傍のPUから取得する。マージモードは、スキップモードのためだけでなく、任意のインター予測されたPUに適用することができる。マージモードの代替としては、動きパラメータの明確な送信があり、PUごとに、各参照ピクチャリストおよび参照ピクチャリストの使用に対応する参照ピクチャインデックスである、動きベクトルを明確に信号通知する。
【0046】
2つの参照ピクチャリストのうちの1つを使用することを信号通知が示す場合、1つのサンプルのブロックからPUを生成する。これを「単一予測」と呼ぶ。PスライスおよびBスライスの両方に対して単一予測が利用可能である。
【0047】
両方の参照ピクチャリストを使用することを信号通知が示す場合、2つのサンプルのブロックからPUを生成する。これを「双予測」と呼ぶ。Bスライスのみに双予測が利用可能である。
【0048】
2.1.1 マージモードの候補を構築する実施形態
マージモードを使用してPUを予測する場合、ビットストリームからマージ候補リストにおけるエントリを指すインデックスを構文解析し、これを使用して動き情報を検索する。このリストの構成は、以下のステップのシーケンスに基づいてまとめることができる。
【0049】
ステップ1:初期候補導出
ステップ1.1:空間的候補導出
ステップ1.2:空間的候補の冗長性チェック
ステップ1.3:時間的候補導出
ステップ2:追加候補挿入
ステップ2.1:双予測候補の作成
ステップ2.2:動きゼロ候補の挿入
【0050】
図9Bは、上記ステップのシーケンスに基づいてマージ候補リストを構築する例を示す。空間的マージ候補導出のために、5つの異なる位置にある候補の中から最大4つのマージ候補を選択する。時間的マージ候補導出のために、2つの候補の中から最大1つのマージ候補を選択する。デコーダ側ではPUごとに一定数の候補を想定しているので、候補数がスライスヘッダで信号通知されるマージ候補(MaxNumMergeCand)の最大数に達しない場合、追加の候補を生成する。候補の数は一定であるので、短縮された単項2値化(TU)を使用して最良マージ候補のインデックスをエンコードする。CUのサイズが8に等しい場合、現在のCUのすべてのPUは、2N×2N予測ユニットのマージ候補リストと同じ1つのマージ候補リストを共有する。
【0051】
2.1.2 空間的マージ候補の構築
空間的マージ候補の導出において、
図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の候補を加えた後、残りの候補を加えると、冗長性チェックを受け、それにより、同じ動き情報を有する候補を確実にリストから排除でき、コーディング効率を向上させることができる。
【0052】
計算の複雑性を低減するために、前述の冗長性チェックにおいて、考えられる候補対のすべてを考慮することはしない。代わりに、
図11において矢印でリンクされた対のみを考慮し、冗長性チェックに使用される対応する候補が同じ動き情報を有していない場合にのみ、その候補をリストに加える。重複した動き情報の別のソースは、2N×2Nとは異なるパーティションに関連付けられた「第2のPU」である。一例として、
図12Aおよび
図12Bは、それぞれN×2Nおよび2N×Nの場合の第2のPUを示す。現在のPUをN×2Nに分割する場合、リスト構築に位置A1の候補は考慮されない。いくつかの実施形態において、この候補を加えることにより、2つの予測ユニットが同じ動き情報を有するようになり、1つのコーディングユニットに1つのPUのみを有することは冗長である。同様に、現在のPUを2N×Nに分割する場合、位置B
1は考慮されない。
【0053】
2.1.3 時間的マージ候補の構築
このステップにおいて、1つの候補のみがリストに追加される。具体的には、この時間的マージ候補の導出において、所与の参照ピクチャリストにおける現在のピクチャとの間に最小のPOC差を有するピクチャに属する同一位置PUに基づいて、スケーリングされた動きベクトルを導出する。スライスヘッダにおいて、同一位置PUの導出に用いられる参照ピクチャリストが明確に信号通知される。
【0054】
図13は、時間的マージ候補のスケーリングされた動きベクトルを導出する例(点線)を示す。これは、POC距離tb、tdを利用して、同一位置PUの動きベクトルからスケーリングしたものである。tbは、現在のピクチャの参照ピクチャと現在のピクチャのPOC差として規定し、tdは、同一位置PUの参照ピクチャと同一位置ピクチャのPOC差として規定する。時間的マージ候補の参照ピクチャインデックスをゼロに等しく設定する。Bスライスの場合、2つの動きベクトル、即ち、1つは参照ピクチャリスト0のためのもの、もう1つは参照ピクチャリスト1のためのものを取得し、これらを組み合わせることによって、双予測マージ候補を形成する。
【0055】
参照フレームに属する同一位置PU(Y)において、
図14に示すように、候補C
0と候補C
1との間で時間的候補の位置を選択する。位置C
0のPUが利用可能でない場合、イントラコーディングされている場合、または現在のCTUの外側にある場合、位置C
1が使用される。そうでない場合、位置C
0が時間的マージ候補の導出に使用される。
2.1.4 追加タイプのマージ候補の構築
【0056】
時空間的マージ候補の他に、2つの追加のタイプのマージ候補、すなわち、結合双予測マージ候補およびゼロマージ候補がある。時空間的マージ候補を利用して、結合双予測マージ候補を生成する。結合双予測マージ候補は、Bスライスのみに使用される。最初の候補の第1の参照ピクチャリスト動きパラメータと別の候補の第2の参照ピクチャリスト動きパラメータとを組み合わせることで、結合双予測候補を生成する。これら2つのタプルが異なる動き仮説を提供する場合、これらのタプルは、新しい双予測候補を形成する。
【0057】
図15は、この処理の一例を示し、ここで、オリジナルリスト(1510、左側)における、mvL0、refIdxL0またはmvL1、refIdxL1を有する2つの候補を使用して、最終リスト(1520、右側)に加えられる結合双予測マージ候補を生成する。
【0058】
動きゼロ候補を挿入し、マージ候補リストにおける残りのエントリを埋めることにより、MaxNumMergeCand容量にヒットする。これらの候補は、空間的変位がゼロであり、新しいゼロ動き候補をリストに加える度にゼロから始まり増加する参照ピクチャインデックスを有する。これらの候補が使用する参照フレームの数は、それぞれ、一方向予測の場合は1つ、双方向予測の場合は2つである。いくつかの実施形態において、これらの候補に対して冗長性チェックは行われない。
【0059】
2.1.5 並列処理のための動き推定領域の例
エンコーディング処理を高速化するために、動き推定を並列に行うことができ、それによって、所与の領域内のすべての予測ユニットの動きベクトルを同時に導出する。1つの予測ユニットは、その関連する動き推定が完了するまで、隣接するPUから動きパラメータを導出することができないので、空間的近傍からのマージ候補の導出は、並列処理に干渉する可能性がある。コーディング効率と処理待ち時間との間のトレードオフを緩和するために、動き推定領域(MER)を規定することができる。「log2_parallel_merge_level_minus2」構文要素を使用して、ピクチャパラメータ集合(PPS)においてMERのサイズを信号通知してもよい。1つのMERを規定するとき、同じ領域にあるマージ候補は使用不可としてマークされ、それゆえにリスト構築においては考慮されない。
【0060】
ピクチャパラメータ集合(PPS)のローバイトシーケンスペイロード(RBSP)構文を表1に示す。表1において、log2_parallel_merge_level_minus2+2は、既存の映像符号化規格に規定されるように、マージモードのための輝度動きベクトルの導出処理及び空間的マージ候補の導出処理に用いられる変数Log2ParMrgLevelの値を指定する。log2_parallel_merge_level_minus2の値は、0〜CtbLog2SizeY−2を含む範囲内とする。
【0061】
変数Log2ParMrgLevelは、以下のように導出される。
Log2ParMrgLevel=log2_parallel_merge_level_minus2+2
【0062】
なお、Log2ParMrgLevelの値は、マージ候補リストを並列に導出する組み込み能力を示す。例えば、Log2ParMrgLevelが6に等しい場合、64×64ブロックに含まれたすべての予測ユニット(PU)およびコーディングユニット(CU)のためのマージ候補リストを並列に導出することができる。
【0064】
2.2 AMVPモードにおける動きベクトル予測の実施形態
動きベクトル予測は、動きベクトルと近傍のPUとの間の空間−時間的相関を利用し、これを動きパラメータの明確な伝送に用いる。まず、左側、上側の時間的に近傍のPU位置の可用性をチェックし、冗長な候補を取り除き、ゼロベクトルを加えることで、候補リストの長さを一定にすることで、動きベクトル候補リストを構築する。次いで、エンコーダは、候補リストから最良の予測子を選択し、選択された候補を示す対応するインデックスを送信することができる。マージインデックスの信号通知と同様に、最良の動きベクトル候補のインデックスは、短縮された単項を使用してエンコードされる。
【0065】
2.2.1 動きベクトル予測候補の構築例
図16Aおよび16Bは、動きベクトル予測候補の導出処理をまとめたものであり、refidxを入力として、各参照ピクチャリストに対して実装されてもよい。
【0066】
動きベクトル予測において、空間的動きベクトル候補と時間的動きベクトル候補という2つのタイプの動きベクトル候補が考えられる。空間的動きベクトル候補を導出するために、先に
図10に示したように、5つの異なる位置にある各PUの動きベクトルに基づいて、最終的には2つの動きベクトル候補を導出する。
【0067】
時間的動きベクトル候補を導出するために、2つの異なる同じ場所に配置された位置に基づいて導出された2つの候補から1つの動きベクトル候補を選択する。第1の時空間的候補リストを作成した後、リストにおける重複した動きベクトル候補を除去する。候補の数が2よりも多い場合、関連づけられた参照ピクチャリストにおける参照ピクチャインデックスが1よりも大きい動きベクトル候補をリストから削除する。空間的―時間的動きベクトル候補の数が2未満である場合は、追加のゼロ動きベクトル候補をリストに加える。
【0068】
2.2.2 空間的動きベクトル候補の構築
空間的動きベクトル候補の導出において、先に
図10に示したような位置にある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つの異なる場合をまとめると、以下のようになる。
【0069】
−−空間的スケーリングなし
(1)同じ参照ピクチャリスト、および同じ参照ピクチャインデックス(同じPOC)
(2)異なる参照ピクチャリストであるが、同じ参照ピクチャ(同じPOC)
−−空間的スケーリング
(3)同じ参照ピクチャリストであるが、異なる参照ピクチャ(異なるPOC)
(4)異なる参照ピクチャリスト、および異なる参照ピクチャ(異なるPOC)
【0070】
まず、非空間的スケーリングの場合をチェックし、次に、空間的スケーリングを可能にする場合をチェックする。参照ピクチャリストにかかわらず、POCが近傍のPUの参照ピクチャと現在のPUの参照ピクチャとで異なる場合、空間的スケーリングを考慮する。左側候補のすべてのPUが利用可能でないか、またはイントラコーディングされている場合、上側の動きベクトルのスケーリングは、左側および上側MV候補の並列導出に役立つ。そうでない場合、上側の動きベクトルに対して空間的スケーリングは許可されない。
【0071】
図17の例に示すように、空間的スケーリングの場合、時間的スケーリングと同様にして、近傍のPUの動きベクトルをスケーリングする。1つの違いは、現在のPUの参照ピクチャリストおよびインデックスを入力として与え、実際のスケーリング処理は時間的スケーリングと同じであることである。
【0072】
2.2.3 時間的動きベクトル候補の構築
参照ピクチャインデックスを導出する以外は、時間的マージ候補を導出するための処理は、すべて、空間的動きベクトル候補を導出するための処理と同じである(
図14の例に示す)。いくつかの実施形態において、参照ピクチャインデックスはデコーダに信号通知される。
【0073】
2.2.4 マージ/AMVP情報の信号通知
AMVPモードの場合、ビットストリームにおいて、4つの部分、例えば、予測方向、参照インデックス、MVD、およびmv予測子候補インデックスを信号通知することができ、これらの部分は、表2−4に示される構文の文脈で説明している。一方、マージモードの場合、マージインデックスのみを信号通知すればよい。
【0077】
対応するセマンティクスは、以下を含む。
【0078】
five_minus_max_num_merge_candスライスでサポートされるマージMVP候補の最大数を5から減算することを指定します。MVP候補をマージする最大数MaxNumMergeCandは、以下のように導出される。
MaxNumMergeCand=5−five_minus_max_num_merge_cand
MaxNumMergeCandの値は、1〜5の範囲内である。
【0079】
merge_flag[x0][y0]は、現在の予測ユニットにおけるインター予測パラメータを隣接するインター予測区間から推測するかどうかを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される予測ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
【0080】
merge_FLag[x0][y0]が存在しない場合、次のように推論される。
【0081】
−− CuPredMode[x0][y0]がMODE_SKIPに等しい場合、merge_flag[x0][y0]は1に等しいと推測される。
−− そうでない場合、merge_flag[x0][y0]は0に等しいと推測される。
【0082】
merge_idx[x0][y0]は、マージ候補リストのマージ候補インデックスを指定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、想定される予測ブロックの左上の輝度サンプルの位置(x0,y0)を指定する。
【0083】
3. 共同探索モデル(Joint Exploration Model:JEM)におけるインター予測方法の例
いくつかの実施形態において、将来の映像符号化技術は、共同探索モデル(JEM)として知られる参照ソフトウェアを使用して探索される。JEMでは、サブブロックベースの予測は、アフィン予測、代替時間的動きベクトル予測(ATMVP)、空間的−時間的動きベクトル予測(STMVP)、双方向オプティカルフロー(BIO)、フレームレートアップ変換(FRUC)、ローカル適応型動きベクトル解像度(LAMVR)、オーバーラップブロック動き補償(OBMC)、ローカル照明補償(LIC)、デコーダ側動きベクトル改良(DMVR)などの、いくつかの符号化ツールで適用されている。
【0084】
3.1 サブCUに基づく動きベクトル予測の例
4分木に2分木を加えたJEM(QTBT)において、各CUは、各予測方向に対して最大1つの動きパラメータのセットを有することができる。いくつかの実施形態において、エンコーダにおいて、ラージCUをサブCUに分割し、ラージCUのすべてのサブCUの動き情報を導出することにより、2つのサブCUレベルの動きベクトル予測方法を考慮する。代替的な時間的動きベクトル予測(ATMVP)方法により、各CUが、配列された参照ピクチャにおける現在のCUよりも小さい複数のブロックから複数の動き情報のセットをフェッチすることが可能となる。空間的−時間的動きベクトル予測(STMVP)法において、時間的動きベクトル予測子および空間的近傍動きベクトルを使用して、サブCUの動きベクトルを再帰的に導出する。いくつかの実施形態において、サブCU動き予測のためにより正確な動きフィールドを維持するために、参照フレームの動き圧縮は無効にされてもよい。
【0085】
3.1.1 代替の時間的動きベクトル予測(ATMVP)の例
ATMVP法において、時間的動きベクトル予測(TMVP)法は、現在のCUより小さいブロックから複数セットの動き情報(動きベクトルおよび参照インデックスを含む)を取り出すことで修正される。
【0086】
図18は、CU1800のためのATMVP動き予測処理の一例を示す。ATMVP方法は、CU1800内のサブCU1801の動きベクトルを2つのステップで予測する。第1のステップは、参照ピクチャ1850における対応するブロック1851を時間的ベクトルで特定することである。参照ピクチャ1850は、モーションソースピクチャとも呼ばれる。第2のステップは、現在のCU1800をサブCU1801に分割し、各サブCUに対応するブロックから各サブCUの動きベクトルならびに参照インデックスを得る。
【0087】
第1のステップにおいて、現在のCU1800の空間的に近傍のブロックの動き情報によって、参照ピクチャ1850および対応するブロックを決定する。近傍のブロックの繰り返し走査処理を回避するために、現在のCU1800のマージ候補リストにおける第1のマージ候補を用いる。第1の利用可能な動きベクトルおよびその関連する参照インデックスを、時間的ベクトルおよびモーションソースピクチャのインデックスに設定する。このように、TMVPに比べて、対応するブロックをより正確に特定することができ、対応するブロック(配列されたブロックと呼ばれることがある)は、常に現在のCUに対して右下または中心位置にある。
【0088】
1つの例において、第1のマージ候補が左側の近傍のブロック(即ち、
図19のA1)からのものである場合、関連するMVおよび参照ピクチャを利用して、ソースブロックおよびソースピクチャを特定する。
【0089】
第2のステップにおいて、現在のCUの座標に時間ベクトルを加えることで、モーションソースピクチャ1850における時間的ベクトルによって、サブCU1851の対応するブロックを特定する。サブCUごとに、その対応するブロックの動き情報(例えば、中心サンプルを覆う最小の動きグリッド)を使用して、サブCUの動き情報を導出する。対応するN×Nブロックの動き情報を特定した後、HEVCのTMVPと同様に、現在のサブCUの動きベクトルおよび参照インデックスに変換され、動きスケーリングや他の手順が適用される。例えば、デコーダは、低遅延条件(例えば、現在のピクチャのすべての参照ピクチャのPOCが現在のピクチャのPOCよりも小さい)が満たされているかどうかをチェックし、場合によっては、動きベクトルMVx(例えば、参照ピクチャリストxに対応する動きベクトル)を使用して、各サブCUの動きベクトルMVy(例えば、Xが0または1に等しく、Yが1−Xに等しい)を予測する。
【0090】
3.1.2 空間的−時間的動きベクトル予測(STMVP)の例
STMVP法において、サブCUの動きベクトルは、ラスタスキャンの順に沿って再帰的に導出される。
図20は、4つのサブブロックおよび近傍のブロックを有する1つのCUの例を示す。4つの4×4個のサブCU、A(2001)、B(2002)、C(2003)、D(2004)を含む8×8個のCU2000を考える。現在のフレームにおける近傍の4×4ブロックには、a(2011)、b(2012)、c(2013)、d(2014)というラベルが付けられる。
【0091】
サブCUのAの動きの導出は、その2つの空間的近傍を特定することで始まる。第1の近傍は、サブCUのA 2001の上のN×Nブロックである(ブロックc 2013)。このブロックc(2013)が利用可能でないか、またはイントラコーディングされている場合、サブCU A(2001)より上の他のN×N個のブロックをチェックする(ブロックc2013から始まり、左から右へ)。第2の近傍は、サブCUのA2001の左側のブロックである(ブロックb2012)。ブロックb(2012)が利用可能でないか、またはイントラコーディングされている場合、サブCUのA2001の左側の他のブロックをチェックする(ブロックb2012を中心に、上から下へ)。各リストの近傍のブロックから得られた動き情報を、所与のリストの第1の参照フレームにスケーリングする。次に、HEVCに規定されているTMVP導出と同様の手順に従って、サブブロックA2001の時間的動きベクトル予測子(TMVP)を導出する。ブロックD2004における配列されたブロックの動き情報をフェッチし、それに応じてスケーリングする。最後に、動き情報を検索し、スケーリングした後、参照リストごとにすべての利用可能な動きベクトルを別々に平均する。この平均化された動きベクトルを現在のサブCUの動きベクトルとする。
【0092】
3.1.3 サブCUの動き予測モード信号通知の例
いくつかの実施形態において、サブCUモードは追加のマージ候補として有効とされ、モードを信号通知するために追加の構文要素は必要とされない。ATMVPモードおよびSTMVPモードを表すように、各CUのマージ候補リストに2つの追加のマージ候補を加える。他の実施形態において、シーケンスパラメータセットがATMVPおよびSTMVPが有効であることを示す場合、7個までのマージ候補を使用してもよい。追加のマージ候補のエンコーディングロジックは、HMにおけるマージ候補の場合と同じであり、つまり、PまたはBスライスにおける各CUについて、2つの追加のマージ候補に対して2回以上のRDチェックが必要となる可能性がある。いくつかの実施形態において、例えばJEMのように、マージインデックスのすべての2値(bin)はコンテキストベースの適応型バイナリ算術コーディング(CABAC)によりコンテキストコーディングされる。他の実施形態、例えばHEVCにおいては、第1の2値のみがコンテキストコーディングされ、残りの2値はコンテキストバイパスコーディングされる。
【0093】
3.2 適応型動きベクトル差解像度の例
本発明の実施例中において、use_integer_mv_flagがスライスヘッダにおいて0であるとき、4分の1輝度サンプルの単位で動きベクトルの差(MVD)(動きベクトルとPUの予測動きベクトルとの差)を信号通知される。JEMにおいて、ローカル適応型動きベクトル解像度(LAMVR)が導入される。JEMにおいて、MVDは、1/4輝度サンプル、整数輝度サンプルまたは4つの輝度サンプルの単位でコーディングできる。MVD分解能はコーディングユニット(CU)レベルで制御され、MVD解像度フラグは、少なくとも1つのノンゼロMVDモジュールを有する各CUに対して条件付きで信号通知される。
【0094】
少なくとも1つのノンゼロMVDモジュールを有するCUの場合、1/4輝度サンプルMV精度がCUにおいて使用されるかどうかを示すために、第1のフラグが信号通知される。第1のフラグ(1に等しい)が、1/4輝度サンプルMV精度が使用されていないことを示す場合、整数輝度サンプルMV精度が使用されるかまたは4輝度サンプルMV精度が使用されるかを示すために、別のフラグが信号通知される。
【0095】
CUの第1のMVD解像度フラグがゼロであるか、またはCUに対してコーディングされていない(つまり、CUにおけるすべてのMVDがゼロである)場合、CUに対して1/4輝度サンプルMV解像度が使用される。CUが整数輝度サンプルMV精度または4輝度サンプルMV精度を使用する場合、CUのAMVP候補リストにおけるMVPを対応する精度に丸める。
【0096】
エンコーダにおいて、CUレベルのRDチェックは、どのMVD解像度をCUに用いるかを決定するために用いられる。すなわち、1つのMVD解像度ごとに3回、CUレベルのRDチェックを行う。エンコーダの速度を速めるために、JEMにおいては、以下の符号化方式が適用される。
【0097】
−−通常の1/4輝度サンプルMVD解像度を有するCUのRDチェック中、現在のCUの動き情報(整数輝度サンプル精度)が記憶される。整数輝度サンプルおよび4輝度サンプルのMVD解像度を有する同じCUのRDチェック中に、記憶された動き情報(丸められた後)は、更なる小範囲動きベクトル改良の開始点として使用されるので、時間がかかる動き推定処理が3回重複しない。
【0098】
−−4輝度サンプルMVD解像度を有するCUのRDチェックを条件付きで呼び出す。CUの場合、整数輝度サンプルMVD解像度のRDコストが1/4輝度サンプルMVD解像度のそれよりもはるかに大きい場合、CUのための4輝度サンプルMVD解像度のRDチェックは省略される。
【0099】
3.2.1 AMVP候補リストの構築例
JEMにおいて、この手順はHEVC設計に類似している。しかしながら、現在のブロックがより低い精度のMV(例えば、整数精度)を選択する場合、丸め操作が適用されてもよい。本実装において、空間的位置から2つの候補を選択した後、両方が利用可能である場合、これら2つの候補を丸め、プルーニングする。
【0100】
3.3 パターンマッチング動きベクトル導出(PMMVD)の例
PMMVDモードは、フレームレートアップ変換(FRUC)法に基づく特殊マージモードである。このモードでは、ブロックの動き情報は信号通知されず、デコーダ側で導出される。
【0101】
FRUCフラグは、そのマージフラグが真である場合、CUに信号通知され得る。FRUCフラグが偽である場合、マージインデックスを信号通知することができ、通常のマージモードが使用される。FRUCフラグが真である場合、追加のFRUCモードフラグを信号通知して、どの方法(例えば、バイラテラルマッチングまたはテンプレートマッチング)を使用してブロックの動き情報を導出するかを示すことができる。
【0102】
エンコーダ側では、CUのためにFRUCマージモードを使用するかどうかの決定は、通常のマージ候補に対して行われるのと同じように、RDコストの選択に基づく。例えば、RDコスト選択を使用して、1つのCUに対して複数のマッチングモード(例えば、バイラテラルマッチングおよびテンプレートマッチング)をチェックする。最小コストに導くものが、他のCUモードと比較される。FRUCマッチングモードが最も効率的なものである場合、CUに対してFRUCフラグを真に設定し、関連するマッチングモードを使用する。
【0103】
一般的に、FRUCマージモードにおける動き導出処理では、まずCUレベルの動き探索が行われ、次にサブCUレベルの動き改良を行うという2つのステップを有する。CUレベルでは、バイラテラルマッチングまたはテンプレートマッチングに基づいて、CU全体のための初期の動きベクトルを導出する。まず、MV候補のリストを生成し、最小マッチングコストに導く候補を、さらなるCUレベル改善の開始点として選択する。そして、開始点付近でのバイラテラルマッチングまたはテンプレートマッチングに基づく局所検索を行う。最小マッチングコストにおけるMVの結果を、CU全体のMVとする。続いて、導出されたCU動きベクトルを開始点として、サブCUレベルでの動き情報をさらに改良する。
【0104】
例えば、W×H CU動き情報導出のために、以下の導出処理を行う。第1のステージにおいて、W×H CU全体のためのMVが導出される。第2のステージにおいて、CUは、M×M個のサブCUにさらに分割される。Mの値は、式(3)のように計算されるが、Dは、予め規定された分割深さであり、JEMにおいてデフォルトで3に設定される。そして、各サブCUのMVを導出する。
【0106】
図21は、フレームレートアップ変換(FRUC)法に用いられるバイラテラルマッチングの例を示す。このバイラテラルマッチングは、2つの異なる参照ピクチャ(2110、2111)における現在のCU(2100)の動き軌跡に沿った2つのブロック間の最も近いマッチングを見出すことで、現在のCUの動き情報を導出するために用いられる。連続した動き軌跡を仮定すると、2つの参照ブロックを指す動きベクトルMV0(2101)、MV1(2102)は、現在のピクチャと2つの参照ピクチャとの間の時間的距離、例えばTD0(2103)、TD1(2104)に比例する。いくつかの実施形態において、現在のピクチャ2100が時間的に2つの参照ピクチャ(2110、2111)の間にあり、現在のピクチャと2つの参照ピクチャとの時間的な距離が同じである場合、バイラテラルマッチングはミラーに基づく双方向MVとなる。
【0107】
図22に、フレームレートアップ変換(FRUC)法に用いられるテンプレートマッチングの例を示す。現在のピクチャにおけるテンプレート(例えば、現在のCUの上側および/または左側の近傍のブロック)と、参照ピクチャ2210におけるブロック(例えば、テンプレートと同じサイズ)との間の最も近いマッチングを見出すことで、テンプレートマッチングを使用して、現在のCU 2200の動き情報を導出することができる。前述のFRUCマージモード以外に、テンプレートマッチングは、AMVPモードにも適用できる。JEMおよびHEVCの両方において、AMVPは2つの候補を有する。テンプレートマッチング法を用いることで、新しい候補を導出することができる。テンプレートマッチングによって新規に導出された候補が、第1の既存のAMVP候補と異なる場合、AMVP候補リストの最初に挿入し、次に、(例えば、第2の既存のAMVP候補を取り除くことによって)リストサイズを2に設定する。AMVPモードに適用される場合、CUレベル検索のみが適用される。
【0108】
CUレベルのMV候補セットは、以下を含むことができる。(1)現在のCUがAMVPモードにある場合、元のAMVP候補、(2)すべてのマージ候補、(3)補間されたMVフィールド内の複数のMV(後述)、および左上の近傍の動きベクトル。
【0109】
バイラテラルマッチングを使用する場合、マージ候補の各有効なMVを入力として使用して、バイラテラルマッチングを仮定してMV対を生成することができる。例えば、マージ候補の1つの有効なMVは、参照リストAにおいて(MVa,ref
a)であり、そして、その対をなすバイラテラルMVの参照ピクチャref
bが他の参照リストBにおいて見出され、ref
aおよびref
bは、時間的に現在のピクチャの異なる側にある。参照リストBにおいてこのようなref
bが利用可能でない場合、ref
bをref
aとは異なる参照として決定し、現在のピクチャとの時間的距離はリストBにおける最小値である。ref
bを決定した後、現在のピクチャとref
a,ref
bとの時間距離に基づいてMVaをスケーリングすることでMVbを導出する。
【0110】
いくつかの実装形態において、補間されたMVフィールドからの4つのMVをCUレベル候補リストに追加してもよい。具体的には、現在のCUの(0,0)、(W/2,0)、(0,H/2)、(W/2,H/2)の位置の補間MVを加算する。AMVPモードでFRUCを適用する場合、元のAMVP候補をCUレベルMV候補セットにも加える。いくつかの実装形態において、CUレベルにおいて、AMVP CUのための15個のMVおよびマージCUに対し、13個のMVを候補リストに加えることができる。
【0111】
サブCUレベルのMV候補セットは、CUレベルの検索によって決定されたMVと、(2)上、左、左上、右上の近傍のMVと、(3)参照ピクチャからの配列されたMVのスケーリングされたバージョンと、(4)1つ以上(例えば、4つまで)のATMVP候補と、(5)1つ以上(例えば、4つまで)のSTMVP候補とを含む。参照ピクチャからのスケーリングされたMVは、以下のように導出される。両方のリストにおける参照ピクチャをトラバースする。参照ピクチャにおけるサブCUの配列位置にあるMVは、開始CUレベルMVの参照に対してスケーリングされる。ATMVPおよびSTMVPの候補は、最初の4つの候補であってもよい。サブCUレベルにおいて、1つ以上(例えば、最大17個)のMVが候補リストに追加される。
【0112】
補間MVフィールドの生成 あるフレームをコーディングする前に、片側MEに基づいてピクチャ全体に対して補間動きフィールドを生成する。そして、この動きフィールドを後にCUレベルまたはサブCUレベルのMV候補として使用してもよい。
【0113】
いくつかの実施形態において、両方の参照リストにおける各参照ピクチャの動きフィールドは、4×4ブロックレベルでトラバースされる。
図23は、FRUC方法における片側動き推定(ME)2300の例を示す。各4×4ブロックにおいて、現在のピクチャの4×4ブロックを通過するブロックに関連する動きで、補間動きがまだ割り当てられていない場合、時間距離TD0およびTD1に基づいて(HEVCにおけるTMVPのMVスケーリングと同様に)、参照ブロックの動きを現在のピクチャにスケーリングし、スケーリングされた動きを現在のフレームのブロックに割り当てる。4×4ブロックにスケーリングされたMVが割り当てられていない場合、ブロックの動きは、補間された動きフィールドにおいて利用不可能であるとマークされる。
【0114】
補間およびマッチングコスト 1つの動きベクトルが1つの小数のサンプル位置を指す場合、動き補償補間が必要である。複雑性を低減するために、通常の8タップHEVC補間の代わりに、バイラテラルマッチングおよびテンプレートマッチングの両方に双線形補間を使用できる。
【0115】
マッチングコストの計算は、異なるステップでは少し異なる。CUレベルの候補セットから候補を選択する場合、マッチングコストは、バイラテラルマッチングまたはテンプレートマッチングの絶対和差(SAD)であってもよい。開始MVを決定した後、サブCUレベル検索におけるバイラテラルマッチングのマッチングコストCを以下のように算出する。
【0117】
ここで、wは重み係数である。いくつかの実施形態において、wは経験的に4に設定されてもよい。MVおよびMVは、それぞれ、現在のMVおよび開始MVを示す。SADは、依然として、サブCUレベル検索におけるテンプレートマッチングのマッチングコストとして使用されてもよい。
【0118】
FRUCモードにおいて、MVは、輝度サンプルのみを使用することによって導出される。導出された動きは、MCインター予測のために、輝度およびクロマの両方に使用される。MVを決定した後、輝度用の8タップ補間フィルタおよびクロマ用の4タップ補間フィルタを使用して、最終的なMCを行う。
【0119】
MV改良は、バイラテラルマッチングコストまたはテンプレートマッチングコストの基準を有するパターンに基づくMV検索である。JEMでは、2つの検索パターン、即ち、無制限中心バイアス菱形検索(UCBDS)およびCUレベルおよびサブCUレベルでのMV改良のための適応クロス検索をそれぞれサポートする。CUおよびサブCUレベルのMV改善の両方のために、MVは、1/4輝度サンプルMVの正確度で直接検索され、これに続いて1/8輝度サンプルMVの改良が行われる。CUおよびサブCUステップのためのMV改良の検索範囲は、8つの輝度サンプルに等しく設定される。
【0120】
バイラテラルマッチングマージモードにおいては、双予測が適用される。なぜなら、2つの異なる参照ピクチャにおける現在のCUの動き軌跡に沿った2つのブロック間の最も近いマッチングに基づいて、CUの動き情報を導出するからである。テンプレートマッチングマージモードにおいて、エンコーダは、list0からの単一予測、list1からの単一予測、またはCUのための双予測のうちから選択することができる。選択は、テンプレートマッチングコストに基づいて、以下のように行うことができる。
【0121】
costBi<=factor*min(cost0,cost1)の場合
双予測を用いる。
そうではなく、cost0<=cost1の場合
list0からの単一予測を用いる。
それ以外の場合、
list1からの単一予測を用いる。
【0122】
ここで、cost0はlist0テンプレートマッチングのSADであり、cost1はlist1テンプレートマッチングのSADであり、costBiは双予測テンプレートマッチングのSADである。例えば、factorの値が1.25である場合、選択処理が双予測に偏っていることを意味する。このインター予測方向選択は、CUレベルのテンプレートマッチング処理に適用することができる。
【0123】
3.4 デコーダ側動きベクトル改良(DMVR)の例
双予測操作において、1つのブロック領域を予測するために、list0の動きベクトル(MV)およびlist1のMVをそれぞれ使用して構成される2つの予測ブロックを組み合わせ、1つの予測信号を形成する。デコーダ側動きベクトル改良(DMVR)方法において、バイラテラルテンプレートマッチング処理によって、双予測の2つの動きベクトルをさらに改良する。追加の動き情報を送信することなく改良されたMVを得るために、デコーダにおいてバイラテラルテンプレートマッチングを適用し、バイラテラルテンプレートと参照ピクチャにおける再構成サンプルとの間で歪みに基づく検索を行う。
【0124】
DMVRにおいて、
図24に示すように、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)をコスト尺度として使用する。
【0125】
DMVRは、追加の構文要素を送信することなく、過去の参照ピクチャからの1つのMVと、将来の参照ピクチャからの1つのMVとの間の双予測のマージモードに適用される。JEMにおいて、CUに対してLIC、アフィン動き、FRUCまたはサブCUマージ候補が有効である場合、DMVRは適用されない。
【0126】
3.5 局所照明補償
ローカル照明補償(IC)は、倍率aおよびオフセットbを使用して、照明変化の線形モデルに基づく。そして、各インターモードコーディングユニット(CU)に対して適応的に有効または無効とされる。
【0127】
ICがCUに適用される場合、最小二乗誤差法が使用され、現在のCUの近傍のサンプルおよびそれらに対応する基準サンプルを使用することによって、パラメータaおよびbを導出する。具体的には、
図25に示すように、CUのサブサンプリング(2:1サブサンプリング)された近傍のサンプルと、参照ピクチャにおける対応するサンプル(現在のCUまたはサブCUの動き情報によって特定される)とを用いる。ICパラメータは、各予測方向に対して別々に導出され、適用される。
【0128】
CUがマージモードでコーディングされる場合、ICフラグは、マージモードにおける動き情報のコピーと同様に、近傍のブロックからコピーされ、そうでない場合、ICフラグがCUに信号通知され、LICが適用されるかどうかを示す。
【0129】
ICが1つのpcitureに対して有効である場合、あるCUに対してLICが適用されるかどうかを決定するために追加のCUレベルRDチェックが必要である。ICがCUのために有効である場合、整数画素動き探索および小数画素動き探索それぞれのために、SADおよびSATDの代わりに、絶対拡散の平均除去和(MR−SAD)および絶対アダマール変換差の平均除去和(MR−SATD)を使用する。
【0130】
エンコーディングの複雑性を低減するために、JEMにおいては、以下のエンコーディング方式が適用される。現在のピクチャとその参照ピクチャとの間に明瞭な照度変化がない場合、ICはピクチャ全体に対して向こうとされる。この状況を特定するために、エンコーダにおいて、現在のピクチャおよび現在のピクチャのすべての参照ピクチャのヒストグラムを計算する。現在のピクチャと現在のピクチャのすべての参照ピクチャとの間のヒストグラム差が所与の閾値よりも小さい場合、現在のピクチャに対してICを無効とし、そうでない場合、現在のピクチャに対してICを有効とする。
【0131】
3.6 バイラテラルマッチングの改良を伴うマージ/スキップモードの例
まず、利用可能な候補の数が最大候補サイズ19に達するまで、空間的に近傍のブロックおよび時間的に近傍のブロックの動きベクトルおよび参照インデックスを冗長性チェック付き候補リストに挿入することで、マージ候補リストを構築する。マージ/スキップモードのマージ候補リストは、予め規定された挿入順に基づいて、HEVC(結合候補およびゼロ候補)に用いられる空間的候補、時間的候補、アフィン候補、高度な時間的MVP(ATMVP)候補、空間的時間的MVP(STMVP)候補、および追加候補を挿入することで、
図25に示す番号付きブロックのコンテキストにおいて、構築される。
【0132】
(1)ブロック1〜4の空間的候補
(2)ブロック1〜4の外挿アフィン候補
(3)ATMVP
(4)STMVP
(5)仮想アフィン候補
(6)空間的候補(ブロック5)(利用可能な候補の数が6よりも少ない場合にのみ使用される)。
(7)外挿アフィン候補(ブロック5)。
(8)時間的候補(HEVCのように導出)
(9)非隣接空間的候補の後にアフィン候補を外挿する(ブロック6〜49)。
(10)結合候補
(11)ゼロ候補
【0133】
なお、ICフラグは、STMVPおよびアフィンを除き、マージ候補から継承される。また、最初の4つの空間的候補について、双予測のものを単一予測のものの前に挿入する。
【0134】
4. 2値化法およびマージインデックス符号化の例
いくつかの実施形態において、いくつかの2値化法を選択することができる。1つの構文要素の場合、まず分布に基づいて関連値を2値化して2値列にする。各2値に対して、コンテキストコーディング法またはバイパスコーディング法でコーディングされてもよい。
【0135】
4.1 例示的な単純および短縮された単純(TU)2値化処理
各符号なし整数値のシンボルx≧0の場合、CABACにおける単項コードワードは、x個の「1」ビットに終端「0」ビットを加えたものからなる。短縮された単項(TU)コードは、0≦x≦Sのxに対してのみ規定され、ここで、x<Sの場合、コードは単項コードによって与えられ、x=Sの場合、終端の「0」ビットは無視され、x=SのTUコードは、x「1」ビットのみからなるコード名によって与えられる。
【0138】
4.2 例示的なK次のExp−Golomb(EGk)二値化処理
EGk二値化の場合、k+2・l(x)+1という同じ符号長を有するシンボルの数は、幾何学的に増加している。理想的な符号長と符号確率との間のシャノンの関係を逆にすることによって、例えば、EG0が、pdf p(x)=1/2・(x+1)−2 with x≧0のための最適な符号であると容易に推論することができる。このことは、適切に選択されたパラメータkに対して、EGk符号は、典型的に見られるpdfsの末端のための理想的なプレフィックスフリー符号のかなり良好な1次近似を表すことを非明示的に示す。
【0140】
4.3 例示的な短縮ライス(TR)2値化処理
この処理には、TRの2値化、cMax、およびcRiceParamの請求が入力される。
【0141】
この処理の出力は、各値symbolValを対応する2値列に関連付けるTRの2値化である。
【0142】
TR2値列は、プレフィックス2値列と、存在する場合には、サフィックス2値列とを連結したものである。
【0143】
プレフィックス2値列を導出するために、以下を適用する。
−−symbolValのプレフィックス値prefixValは、以下のように導出される。
prefixVal=symbolVal>>cRiceParam
−TR2値列のプレフィックスは、以下のように指定される。
prefixValがcMax>>cRiceParam未満である場合、プレフィックス2値列は、長さprefixVal+1にbinIdxを付けたビット列である。binIdx<prefixValの2値は、1に等しい。binIdxがprefixValに等しい2値は、0に等しい。
【0144】
cMaxがsymbolValより大きく、cRiceParamが0より大きい場合、TR2値列のサフィックスが存在し、それは以下のように導出される。
−−サフィックス値suffixValは、以下のように導出される。
suffixVal=symbolVal−((prefixVal)<<cRiceParam)
−−TR2値列のサフィックスは、suffixValの固定長(FL)2値化処理を呼び出すことによって指定され、cMax値は(1<<cRiceParam)−1に等しい。
【0145】
なお、入力パラメータcRiceParam=0の場合、TRの2値化は、正確には短縮された単項2値化であり、常に、復号される構文要素の最大可能値に等しいcMax値で呼び出される。
【0146】
4.4 例示的な固定長(FL)2値化処理
この処理への入力は、FLの2値化およびcMaxの要求である。
【0147】
この処理の出力は、各値symbolValを対応する2値列に関連付けるFLの2値化である。
【0148】
FLの2値化は、シンボル値symbolValのfixedLengthビットの符号なし整数2値列を使用することによって構築され、ここで、fixedLength=Ceil(Log2(cMax+1))である。FLの2値化のための2値ンのインデックス付けは、binIdx=0が最上位ビットに関係し、binIdxの値が最下位ビットに向かって増加するように行われる。
【表8】
【0149】
4.5 merge_idxの例示的な符号化
HEVC仕様に規定されているように、まず、許容されるマージ候補の総数が1よりも大きい場合、マージインデックスを2値列に2値化する。
【0151】
cRiceParamが0に等しいTR、すなわちTUが使用される。merge_idxの第1のビンは、1つのコンテキストで符号化され、残りのビンが存在する場合、バイパスで符号化される。
【0152】
5. JEMにおけるイントラ予測の例示的な実施形態
5.1 67個のイントラ予測モードを有するイントラモード符号化の例
自然映像に表される任意のエッジ方向をキャプチャするために、指向性イントラモードの数は、HEVCで使用されるように、33から65に拡張される。追加の指向性モードは、
図27において薄い灰色の点線の矢印で示され、平面モードとDCモードは同じままである。これらのより密度の高い指向性イントラ予測モードは、すべてのブロックサイズ、および輝度およびクロマイントラ予測の両方に適用される。
【0153】
5.2 輝度イントラモード符号化の例
JEMにおいて、イントラ予測モードの総数は、HEVCでは35から67に増加している。
図27は、67個のイントラ予測モードの例を示す。
【0154】
増加した数の指向性イントラモードに適応するために、6つの最大確率モード(MPM)を有するイントラモードコーディング法が使用される。2つの主な技術的態様が含まれている。1)6MPMの導出、および2)6MPMおよび非MPMモードのエントロピーコーディング。
【0155】
JEMにおいて、MPMリストに含まれるモードは、次の3つのグループに分類される。
−−近傍のイントラモード
−−導出イントラモード
−−デフォルトのイントラモード
【0156】
5つの近傍のイントラ予測モードを使用してMPMリストを形成する。5つの近傍のブロックの位置は、マージモードで使用される位置と同じであり、即ち、
図28に示すように、左(L)、上(A)、下−左(BL)、上−右(AR)、および上−左(AL)である。最初のMPMリストは、5つの隣接するイントラモードおよびプレーナおよびDCモードをMPMリストに挿入することで形成される。プルーニング処理を使用して、重複したモードを除去し、唯一のモードをMPMリストに含めることができる。初期モードが含まれる順番は、左、上、平面、DC、左下、右上、左上である。
【0157】
MPMリストが満杯でない(即ち、リストに6つ未満のMPM候補がある)場合、導出モードを追加し、これらのイントラモードは、MPMリストに既に含まれている角度モードに−1または+1を加えることによって得られる。このような追加の導出モードは、非角度モード(DCまたは平面モード)からは生成されない。
【0158】
最後に、MPMリストがまだ完成していない場合、デフォルトモードは、垂直、水平、モード2、および対角モードの順に追加される。この処理の結果、6つのMPMモードのユニークなリストが生成される。
【0159】
6つのMPMを使用する、選択されたモードのエントロピーコーディングのために、短縮された単項2値化が使用される。最初の3つの2値は、現在信号通知されている2値に関連するMPMモードに依存するコンテキストでコーディングされる。MPMモードは、3つのカテゴリ、即ち、(a)主に水平であるモード(即ち、MPMモード数が対角線方向のモード数以下である)、(b)主に垂直であるモード(即ち、MPMモードが対角線方向のモード数よりも大きい)、および(c)非角(DCおよび平面)クラスのうちの1つに分類される。従って、3つのコンテキストを使用して、この分類に基づいてMPMインデックスを信号通知する。
【0160】
残りの61個の非MPMを選択するためのコーディングは、以下のように行われる。61個の非MPMは、まず、選択されたモードセットと選択されていないモードセットとの2つのセットに分けられる。選択されたモードセットは16個のモードを含み、選択されていないモードセットには休止(45個のモード)が割り当てられる。現在のモードが属するモードセットは、フラグ付きビットストリームに示される。表示されるべきモードが選択されたモードセット内にある場合、選択されたモードに4ビットの固定長コードを信号で信号通知し、表示されるべきモードが非選択のセットからのものである場合、選択されたモードに短縮された2進コードを信号で信号通知する。選択されたモードセットは、61個の非MPMモードをサブサンプリングすることによって、以下のように生成される。
−−選択したモードを設定する={0,4,8,12,16,20…60}
−−未選択モードセット={1,2,3,5,6,7,9,10…59}
【0161】
エンコーダ側では、HMの類似した2ステージのイントラモード決定処理が使用される。第1のステージ、すなわちイントラモード前選択ステージにおいて、より複雑性の低い絶対変換差の合計(SATD)コストを使用して、すべての利用可能なイントラモードからN個のイントラ予測モードを前選択する。第2のステージにおいて、より複雑性の高いR−Dコスト選択をさらに適用し、N個の候補から1つのイントラ予測モードを選択する。しかしながら、67個のイントラ予測モードが適用される場合、利用可能なモードの総数はおよそ2倍になるので、同じHMのエンコーダモード決定処理を直接使用すると、イントラモード前選択ステージの複雑性もまた増大する。エンコーダの複雑性の増加を最小限に抑えるために、2ステップのイントラモード前選択処理が行われる。第1のステップにおいて、絶対変換差(SATD)測度に基づいて、元の35個のイントラ予測モード(
図27に黒い実線の矢印で示す)からN個(Nはイントラ予測ブロックのサイズに依存する)のモードを選択する。第2のステップにおいて、選択されたN個のモードの直接近傍(
図27に薄い灰色の点線の矢印で示すような追加のイントラ予測方向)をSATDによってさらに検査し、選択されたNモードのリストを更新する。最後に、まだ含まれていない場合、第1のM個のMPMをN個のモードに加え、第2ステージのR‐Dコスト検査のために、候補イントラ予測モードの最終リストを生成する。これはHMと同様に行われる。HMにおける元の設定値に基づいて、Mの値を1だけ増加させ、Nは、以下の表10に示すように、若干減少する。
【表10】
【0162】
5.3 クロマイントラモード符号化の例
JEMでは、クロマCBコーディングのために合計11のイントラモードが許可されている。これらのモードには、5つの伝統的なイントラモードと6つの構成要素共通の線形モデルモードが含まれる。クロマモード候補のリストには、以下の3つの部分が含まれる。
【0163】
●CCLM modes
●DM modes、現在のクロマブロックの配列された5つの位置をカバーする輝度CBに導出されるイントラ予測モード
〇 検査されるべき5つの位置は、Iスライスのための現在のクロマブロックの対応する輝度ブロック内の中心(CR)、左上(TL)、右上(TR)、左下(BL)、右下(BR)4×4ブロックである。PおよびBスライスの場合、これらの5つのサブブロックは同じモードインデックスを有するので、これらの5つのサブブロックのうちの1つのみをチェックする。5つの配列された輝度位置の例を
図29Aおよび29Bに示す。
●空間的に近傍のブロックからのクロマ予測モード。
〇5つのクロマ予測モード:左、上、下、左、上、右、左上の空間的に近傍のブロック
〇平面モードとDCモード
〇導出モードを追加し、これらのイントラモードは、リストに既に含まれている角度モードに−1または+1を加えることによって得られる。
〇垂直、水平、モード2
【0164】
候補リストに新しいクロマイントラモードを追加する度に、プルーニング処理を適用する。次に、非CCLMクロマイントラモード候補リストサイズを5にトリミングする。モード信号通知のために、まず、CCLMモードの1つまたは従来のクロマイントラ予測モードの1つを使用するかどうかを示すように、1つのフラグを信号通知する。次に、現在のクロマCBに使用される正確なクロマ予測モードを指定するために、さらに2、3のフラグが続けられてもよい。
【0165】
6. 既存の実装形態の例
現在のHEVC設計は、動き情報をよりよくコーディングするために、現在のブロックの近傍のブロック(現在のブロックの隣)の相関をとることができる。しかしながら、近傍のブロックが、異なる動き軌跡を有する異なる対象に対応する可能性がある。この場合、その近傍のブロックからの予測は効率的ではない。
【0166】
非隣接ブロックの動き情報からの予測は、全ての動き情報(一般的には4×4レベル)をキャッシュに記憶するコストをかけることになり、付加的なコーディング利得をもたらし、ハードウェア実装の複雑性を大幅に増大させる。
【0167】
許容されるマージ候補の数が少ないほど、非2値化法は優れた効果を奏する。しかしながら、許容される候補の総数が大きくなると、単項2値化は次善のものとなり得る。
【0168】
AMVP候補リスト構築処理のHEVC設計は、2つの空間的AMVP候補間のプルーニングのみを呼び出す。制限されたプルーニングによるコーディング損失が無視できるほど小さいので、完全プルーニング(利用可能な候補の各々を他のすべての候補と比較する)は利用されない。しかしながら、より多くのAMVP候補が利用可能である場合、プルーニングが重要になる。また、LAMVRが有効である場合、AVMP候補リストの構築方法を検討することが必要である。
【0169】
7. LUTに基づく動きベクトル予測の例示的な方法
本開示の技術の実施形態は、既存の実装の欠点を克服し、それにより、より高い符号化効率を有する映像符号化を提供する。既存の実装形態の欠点を克服するために、様々な実施形態において、ブロックの動き情報を予測するために、少なくとも1つの動き候補が記憶された1つ以上のテーブル(例えばルックアップテーブル)を使用するLUTに基づく動きベクトル予測技術を実装し、より高いコーディング効率を有する映像符号化を提供することができる。ルックアップテーブルは、ブロックの動き情報を予測するために動き候補を含める際に使用できるテーブルの一例であり、他の実装形態も可能である。各LUTは、それぞれが対応する動き情報に関連付けられた1つ以上の動き候補を含んでもよい。動き候補の動き情報は、予測方向、参照インデックス/ピクチャ、動きベクトル、LICフラグ、アフィンフラグ、動きベクトル導出(MVD)精度、および/またはMVD値の一部または全部を含んでもよい。動き情報は、動き情報がどこから来ているかを示すために、ブロック位置情報をさらに含んでもよい。
【0170】
開示される技術に基づいたLUTに基づく動きベクトル予測は、既存のおよび将来の映像符号化規格の両方を向上させることができ、様々な実装形態のために以下の例で解明される。LUTは、履歴データ(例えば、既に処理されたブロック)に基づいてエンコーディング/デコーディング処理を行うことを可能にするため、LUTに基づく動きベクトル予測は、履歴ベースの動きベクトル予測(HMVP)法と呼ぶこともできる。LUTに基づく動きベクトル予測方法において、以前にコーディングされたブロックからの動き情報を有する1つまたは複数のテーブルは、エンコーディング/デコーディング処理時に維持される。LUTに記憶されたこれらの動き候補をHMVP候補と称する。1つのブロックのエンコーディング/デコーディングの間、LUTにおける関連付けられた動き情報を動き候補リスト(例えば、マージ/AMVP候補リスト)に追加して、1つのブロックをエンコーディング/デコーディングした後に、LUTを使用してもよい。更新されたLUTは、その後、後続のブロックをコーディングするために用いられる。このように、LUTにおける動き候補の更新は、ブロックのエンコーディング/デコーディグの順に基づく。
【0171】
開示される技術に基づいたLUTに基づく動きベクトル予測は、既存のおよび将来の映像符号化規格の両方を向上させることができ、様々な実装形態のために以下の例で解明される。以下に提供される開示される技術の例は、一般的な概念を説明するものであり、限定するものと解釈されるべきではない。一例において、明確に示されていない限り、逆に示されていない限り、これらの例に記載されている様々な特徴を組み合わせることができる。
【0172】
用語に関して、以下の例は、LUTのエントリが動き候補である。用語「動き候補」は、ルックアップテーブルに記憶された動き情報のセットを示すためのものである。従来のAMVPまたはマージモードでは、動き情報を記憶するためにAMVPまたはマージ候補が用いられる。後述するように、且つ非限定的な例において、動きベクトル予測のための動き候補を有するLUTの概念は、イントラモードコーディングのためのイントラ予測モードを有するLUTに拡張されるか、またはICパラメータコーディングのための照明補償パラメータを有するLUTに拡張されるか、またはフィルタパラメータを有するLUTに拡張される。動き候補のためのLUTに基づく方法は、本明細書の特許明細書、既存のおよび将来の映像符号化規格に記載されるように、他のタイプのコーディング情報にも拡張され得る。
【0173】
ルックアップテーブルの例
例A:各ルックアップテーブルは、各候補がその動き情報に関連付けられた1つ以上の動き候補を含んでもよい。
【0174】
一例において、テーブルサイズ(例えば、動き候補の最大許容エントリ数)および/またはテーブル数は、シーケンス解像度、最大コーディングユニットサイズ、マージ候補リストのサイズに依存してもよい。
【0175】
ルックアップテーブルの更新
例B1:動き情報を有するブロックをコーディングした後(すなわち、IntraBCモード、インターコーディングモード)に、1つ以上のルックアップテーブルを更新してもよい。
【0176】
a. 一例において、ルックアップテーブルを更新するかどうかは、ルックアップテーブルを選択する規則を再利用してもよく、例えば、現在のブロックを符号化/復号化するためにルックアップテーブルを選択することができる場合、ブロックを符号化/復号化した後、選択されたルックアップテーブルをさらに更新してもよい。
【0177】
b. 更新されるべきルックアップテーブルは、符号化情報および/またはブロック/LCUの位置に基づいて選択されてもよい。
【0178】
c. ブロックが直接信号通知された動き情報で符号化される場合(例えば、AMVPモード、通常/アフィンインターモードのMMVDモード、通常/アフィンインターモードのAMVRモード)、ブロックの動き情報をルックアップテーブルに加えることができる。
i. 代替的に、ブロックが、いかなる改良も伴わずに、空間的に近傍のブロックから直接継承された動き情報でコーディングされる場合(例えば、改良を伴わない空間的マージ候補)、ブロックの動き情報をルックアップテーブルに加えるべきではない。
ii. 代替的に、ブロックが、改良を行って、空間的に近傍のブロックから直接継承された動き情報でコーディングされる場合(DMVR、FRUCなど)、ブロックの動き情報をいかなるルックアップテーブルにも加えるべきではない。
iii. 代替的に、ブロックが、ルックアップテーブルに記憶された動き候補から直接継承された動き情報でコーディングされている場合は、ブロックの動き情報は、いかなるルックアップテーブルにも加えるべきではない。
iv. 一例において、このような動き情報は、テーブルの最後のエントリまたは次の利用可能な動き候補を記憶するために用いられるエントリ等のように、ルックアップテーブルに直接加えられてもよい。
v. 代替的に、このような動き情報は、プルーニングせずに、例えば、いかなるプルーニングもせずに、ルックアップテーブルに直接加えられてもよい。
vi. 代替的に、このような動き情報は、ルックアップテーブルを再配列するために使用してもよい。
vii. 代替的に、このような動き情報を使用して、プルーニングが制限された状態で(例えば、ルックアップテーブルにおける最新のものと比較して)ルックアップテーブルを更新してもよい。
【0179】
d. ブロック内のM(M≧1)個の代表位置を選択し、この代表位置に関連付けられた動き情報を使用してルックアップテーブルを更新する。
i. 一例において、代表位置は、ブロック内の4つのコーナー位置(例えば、
図30のC0〜C3)のうちの1つとして規定される。
ii. 一例において、代表位置は、ブロック内の中心位置(例えば、
図30におけるCa_Cd)として規定される。
iii. ブロックに対してサブブロック予測が許可されない場合、Mは1に設定される。
iv. サブブロック予測がブロックに対して許可される場合、Mは、1又はサブブロックの総数、又は1とサブブロックの数の間の一意の値に排他的に設定され得る。
v. 代替的に、ブロックのためにサブブロック予測を許可する場合、Mを1に設定することができ、代表的なサブブロックの選択は、に基づいて行われる。
1. 利用される動き情報の周波数
2. 双予測ブロックであるかどうか
3. 参照ピクチャインデックス/参照ピクチャに基づいて
4. 他の動きベクトルと比較した動きベクトルの差(例えば、最大MV差を選択する)
5. 他のコーディング情報
【0180】
e. M(M>=1)個の代表位置のセットを選択してルックアップテーブルを更新する場合、更なる条件をチェックした後、これらを更なる動き候補としてルックアップテーブルに加えてもよい。
i. ルックアップテーブルにおける既存の動き候補に対して、新たな動き情報のセットをプルーニングしてもよい。
ii. 一例において、新しい動き情報のセットは、ルックアップテーブルにおける既存の動き候補のいずれかまたは一部と同一であってはならない。
iii. 代替的に、新しい動き情報のセットおよび1つの既存の動き候補からの同じ参照ピクチャの場合、MVの差は、1/複数の閾値よりも小さくてはならない。例えば、MV差の水平および/または垂直モジュールは、1ピクセルの距離よりも大きくなければならない。
iv. 代替的に、K>Lである場合、新しい動き情報のセットを、最後のK個の候補または最初のK%L個の既存の動き候補によってのみプルーニングし、古い動き候補を再びアクティブにすることができるようにする。
v. 代替的に、プルーニングは適用しない。
【0181】
f. M個の動き情報のセットがルックアップテーブルを更新するために用いられる場合、対応するカウンタをMだけ増加させるべきである。
【0182】
g. 現在のブロックをコーディングする前に、1つの(上記の方法で)選択された動き情報のセットに対して、更新されるべきルックアップテーブルのカウンタをKとし、このブロックをコーディングした後、これを、K%Lに等しいインデックスを有する追加の動き候補として加える(ここで、Lはルックアップテーブルのサイズである)。その例を
図31Aおよび31Bに示す。
i. 代替的に、それは、min(K+1,L−1)に等しいインデックスを有する追加の動き候補として追加される。代替的に、K≧Lである場合、第1の動き候補(インデックス=0)をルックアップテーブルから取り除き、後続のK個の候補インデックスを1だけ減らす。
ii. 上記両方の方法(K%Lに等しいエントリインデックスに新しい動き候補を加えるか、またはmin(K+1,L−1)に等しいインデックスを加える)の場合、同じ/類似した動き候補が存在するかどうかに関わらず、彼らは、前に符号化されたブロックからの動き情報の最新の数セットを保持しようとしている。
iii. 代替的に、動き情報を動き候補としてLUTに追加する場合、まず冗長性チェックを行う。この場合、LUTは以前に符号化されたブロックからの最新のいくつかのセットの動き情報を保持するが、LUTから冗長な動き情報を除去してもよい。このような方法を、冗長性除去型LUT更新方法と呼ぶ。
1. LUTに重複した動き候補が存在する場合、LUTに関連付けられたカウンタを増加させてもよいし、減少させてもよい。
2. この冗長チェックは、例えば、参照ピクチャ/参照ピクチャのインデックスが同じであり、且つ動きベクトルの差が範囲内にあるかまたは同一であるかをチェックすることなど、マージ候補リスト構築処理におけるプルーニング処理として規定されてもよい。
3. LUT内に冗長動き候補が見つかった場合、その冗長動き候補を現在の位置から最後のLUTに移動させる。
a. 同様に、LUT内に冗長動き候補が見つかった場合、この冗長動き候補をLUTから取り除く。また、冗長動き候補の後にLUTに挿入されたすべての動き候補は、前方に移動し、除去された冗長動き候補のエントリを再び満たす。シフトした後、新しい動き候補をLUTに加える。
b. この場合、カウンタは変更されないままである。
c. LUTにおいて冗長動き候補を特定した後、冗長チェック処理を終了する。
4. 複数の冗長動き候補を特定することができる。この場合、それらのすべてをLUTから削除する。また、残りの動き候補は、すべて順に前方に移動してもよい。
a. この場合、カウンタを(冗長動き候補の数−1)だけ減少させる。
b. maxR個の冗長動き候補(maxRは正の整数変数)を特定した後、冗長チェック処理を終了する。
5. 冗長性チェック処理は、1つ目の動き候補から最後の動き候補まで(即ち、LUTに付加された順に、動き情報のあるブロックの復号化処理の順に)行うことができる。
6. 代替的に、LUTに冗長動き候補がある場合、冗長なものを1つまたは複数個取り除く代わりに、冗長なものから仮想動き候補を導出し、この仮想動き候補を使用して冗長なものを置き換えてもよい。
a. 仮想動き候補は、1つ以上の動きベクトルの水平および/または垂直モジュールにオフセットを加えることで、または同じ参照ピクチャを指している場合には2つの動きベクトルの平均値を加えることで、冗長動き候補から導出されてもよい。代替的に、仮想動き候補は、ルックアップテーブルにおける動きベクトルを入力とする任意の関数から導出されてもよい。例示的な機能は以下の通りである。2つまたは複数の動きベクトルを足し合わせ、2つまたは複数の動きベクトルを平均する。動きベクトルは、関数に入力される前にスケーリングされてもよい。
b. なお、冗長動き候補と同じ位置に仮想動き候補を加えてもよい。
c. 他のすべての動き候補の前に、仮想動き候補を追加してもよい(例えば、最小のエントリインデックスから始まり、例えば、ゼロ)。
d. 一例において、現在のLUTが満杯でない場合など、特定の条件下でのみ適用される。
7. 冗長性除去に基づくLUT更新方法は、以下のような特定の条件下で呼び出されてもよい。
a. 現在のブロックはマージモードで符号化されている。
b. 現在のブロックはAMVPモードで符号化されているが、MV差の少なくとも1つのモジュールが非ゼロである。
c. 現在のブロックがサブブロックベースの動き予測/動き補償方法で符号化されているか、または符号化されていない(例えば、アフィンモードで符号化されていない)。
d. 現在のブロックはマージモードで符号化され、動き情報はあるタイプ(例えば、空間的に近傍のブロックから、左の近傍のブロックから、時間的ブロックから)に関連付けられている。
【0183】
h. 1つのブロックを符号化/復号化した後、1つ以上のルックアップテーブルは、M個の動き情報のセットをテーブルの末端に挿入するだけで、すなわち、既存の候補のすべての後に、更新されてもよい。
i. 代替的に、さらに、テーブルにおける既存の動き候補をいくつか削除してもよい。
1. 一例において、M個の動き情報のセットを挿入した後、テーブルが満杯である場合、最初のいくつかの動き候補のエントリをテーブルから削除することができる。
2. 一例において、M個の動き情報のセットを挿入する前にテーブルが満杯である場合、最初のいくつかの動き候補のエントリをテーブルから削除することができる。
ii. さらに、代替的に、ブロックがテーブルからの動き候補で符号化されている場合、選択された動き候補をテーブルの最後のエントリに入れるように、テーブルにおける動き候補を再配列してもよい。
【0184】
i. 1つの例において、ブロックを符号化/復号化する前に、ルックアップテーブルには、HMVP
0,HMVP
1,HMVP
2,...、HMVP
K−1,HMVP
K,HMVP
K+1,...、HMVP
L−1で示される動き候補が含まれていてもよく、HMVP
iはルックアップテーブルのi番目のエントリを示す。ブロックがHMVP
Kから予測されている場合(Kが包含的に[0,L−1]の範囲内にある場合)、このブロックを符号化/復号化した後、ルックアップテーブルは次のように再配列される。HMVP
0,HMVP
1、HMVP
2、・・・、HMVP
K−1、HMVP
K、HMVP
K+1、・・・、HMVP
L−1、HMVP
K
【0185】
j. 1つのイントラ制約ブロックをコーディングした後、ルックアップテーブルを空にしてもよい。
【0186】
k. 動き情報のエントリをルックアップテーブルに追加する場合、動き情報から導出することによって、より多くの動き情報のエントリをテーブルに追加してもよい。この場合、ルックアップテーブルに関連付けられたカウンタを1より大きい数だけ増加させることができる。
i. 一例において、動き情報のエントリのMVをスケーリングし、テーブルに入れる。
ii. 一例において、動き情報のエントリのMVは、(dx,dy)だけ加算され、テーブルに入れられる。
iii. 一例において、2つ以上の動き情報のエントリのMVの平均を計算し、テーブルに入れる。
【0187】
例B2:1つのブロックが1つのピクチャ/スライス/タイルの境界に位置する場合、ルックアップテーブルの更新は常に許可されない。
【0188】
例B3:現在のLCU行をコーディングするために、上記LCU行の動き情報を無効にしてもよい。
a. この場合、新しいスライス/タイル/LCU行の始まりにおいて、利用可能な動き候補の数を0にリセットしてもよい。
【0189】
例B4:新しい時間層インデックスを使用してスライス/タイルをコーディングする開始時に、利用可能な動き候補の数を0にリセットすることができる。
【0190】
例B5:ルックアップテーブルは、同じ時間層インデックスを有する1つのスライス/タイル/LCUの行/スライスで連続的に更新されてもよい。
a. 代替的に、ルックアップテーブルは、各S(S≧1)個のCTU/CTB/CU/CBをコーディング/デコーディングした後、または特定の領域(例えば、8×8または16×16に等しいサイズ)をコーディング/デコーディングした後にのみ更新されてもよい。
b. 代替的に、ルックアップテーブルは、特定のモード(例えば、S個のインター符号化ブロック)を有する各S(S≧1)個のブロック(例えば、CU/CB)を符号化/復号化した後にのみ更新されてもよい。代替的に、ルックアップテーブルは、サブブロックに基づく動き予測/動き補償方法で符号化されていない(例えば、アフィンおよび/またはATMVPモードで符号化されていない)各S(S≧1)個のインター符号化ブロック(例えば、CU/CB)を符号化/復号化した後にのみ更新されてもよい。
c. 代替的に、符号化/復号化されたブロックの左上座標が何らかの条件を満たす場合にのみ、ルックアップテーブルを更新してもよい。例えば、ルックアップテーブルは、(x&M==0)&&(y&M==0)の場合にのみ更新され、ここで、(x,y)は、符号化/復号化されたブロックの左上座標である。Mは、2、4、8、16、32、または64などの整数である。
d. 代替的に、1つのルックアップテーブルは、最大許容カウンタに達すると、更新を停止してもよい。
e. 一例において、カウンタは予め規定されてもよい。代替的に、映像パラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ、タイルヘッダ、コーディングツリーユニット(CTU)、コーディングツリーブロック(CTB)、コーディングユニット(CU)または予測ユニット(PU)、複数のCTU/CTB/CU/PUをカバーする領域で信号通知される。
【0191】
例B6:LUTは、ブロックがマージまたはAMVPモードで符号化されるとき、ブロックに関連付けられた動き情報で更新されてもよい。
【0192】
例B7:コーディングされたブロックから得られた動き候補を加算してLUTを更新する前に、プルーニングを適用してもよい。
【0193】
例B8:LUTは、定期的に更新されてもよい。
【0194】
例C:LUTにおける動き候補の並び替えを適用してもよい。
(a)一例において、1つのブロックをコーディングした後、このブロックから新しい動き候補を取得してもよい。それはまずLUTに加えられ、次に再順序付けが適用されてもよい。この場合、サブシーケンスブロックのために、再配列されたLUTを利用する。例えば、この並べ替えは、あるユニット(例えば、1つのLCU、1つのLCU行、複数のLCU等)のコーディングを終えた後に行われる。
【0195】
(b)一例において、LUTにおける動き候補は、再配列されない。しかしながら、1つのブロックをコーディングする場合、まず動き候補の再配列を適用し、その後、チェックし、マージ/AMVPまたは他の種類の動き情報候補リストに挿入することができる。
【0196】
例D:動きベクトル予測のための動き候補を有するLUTの使用と同様に、1つまたは複数のLUTを構築することができ、且つ/または更新して、以前コーディングされたブロックからのイントラ予測モードを記憶し、且つLUTを使用してイントラコーディングされたブロックをコーディング/デコーディングしてもよい。
【0197】
8. LUTに基づく動きベクトル予測のための追加の実施形態
以前コーディングされたブロックの動き情報としてHMVP候補を規定する、履歴に基づくMVP(HMVP)方法が提案される。エンコーディング/デコーディング処理中、複数のHMVP候補を有するテーブルが維持される。新しいスライスに遭遇した場合、テーブルは空になる。インターコーディングされたブロックがあるときはいつでも、関連する動き情報を新しいHMVP候補としてテーブルの最後のエントリに加える。全体の符号化フローを
図32に示す。
【0198】
一例において、テーブルサイズはL(例えば、L=16または6、または44)に設定され、これは、L個までのHMVP候補をテーブルに追加することができることを示す。
【0199】
1つの実施形態(例B1.g.iに対応する)において、以前符号化されたブロックからのL個よりも多いHMVP候補が存在する場合、テーブルが常に最新の以前符号化されたL個の動き候補を含むように、先入れ先出し(FIFO)規則が適用される。
図33は、FIFO規則を適用してHMVP候補を除去し、提案される方法で使用されるテーブルに新しいものを追加する例を示す。
【0200】
別の実施形態(発明B1.g.iiiに対応する)において、新しい動き候補を追加するときはいつでも(例えば、現在のブロックがインター符号化され、非アフィンモードであるなど)、まず、冗長性チェック処理を適用し、LUTに同じまたは類似した動き候補があるかどうかを識別する。
【0202】
図34Aは、新しい動き候補を追加する前に、LUTが満杯であった場合の例を示す。
【0203】
図34Bは、新しい動き候補を追加する前に、LUTが満杯でなかった場合の例を示す。
【0204】
図34Aおよび
図34Aは、ともに、冗長性除去に基づくLUT更新方法(1つの冗長性動き候補を除去する)の例を示す。
【0205】
図35Aおよび
図35Bは、冗長性除去に基づくLUT更新方法(複数の冗長性動き候補を除去する、図では2つの候補を示す)の2つの場合の例示の実装形態を示す。
【0206】
図35Aは、新しい動き候補を追加する前に、LUTが満杯であった場合の例を示す。
【0207】
図35Bは、新しい動き候補を追加する前に、LUTが満杯でなかった場合の例を示す。
【0208】
HMVP候補は、マージ候補リスト構築処理において使用され得る。TMVP候補の後に、テーブルにおける最後のエントリから最初のエントリ(または最後のK0 HMVP、例えば、K0=16または6)までのすべてのHMVP候補を挿入する。HMVP候補に対してプルーニングを適用する。利用可能なマージ候補の総数が信号通知された最大許容マージ候補に達すると、マージ候補リスト構築処理を終了する。代替的に、加算された動き候補の総数が、所与の値に達すると、LUTからの動き候補の取り出しを終了する。
【0209】
同様に、HMVP候補は、AMVP候補リスト構築処理において使用されてもよい。TMVP候補の後に、テーブルにおける最後のK1個のHMVP候補の動きベクトルを挿入する。AMVP対象参照ピクチャと同じ参照ピクチャを有するHMVP候補のみを用いて、AMVP候補リストを構築する。HMVP候補に対してプルーニングを適用する。一例では、K1は4にセットされる。LUTに基づく予測方法のための符号化フローの例を
図36に示す。周期的な更新のコンテキストにおいて、更新処理は、領域を復号化した後に行われる。LUTを頻繁に更新することを回避するために、
図37に一例を示す。
【0210】
上述した例は、以下に説明する方法、例えば、方法3810、3820、3830、3840に関連して組み込まれてもよく、この方法は、ビデオデコーダおよび/またはビデオエンコーダにおいて実装してもよい。
【0211】
図38Aは、例示的な映像処理方法のフローチャートを示す。方法3810は、ステップ3812でテーブルを維持することを含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられる。方法3810は、さらに、ステップ3814において、テーブルに基づいて、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、を含む。方法3810は、ステップ3816において、変換を行った後、更新規則に基づいて0個以上のテーブルを更新することをさらに含む。
【0212】
図38Bは、例示的な映像処理方法の別のフローチャートを示す。方法3820は、ステップ3822でテーブルを維持することを含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられる。方法3820は、さらに、ステップ3824において、テーブルに基づいて、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、を含む。方法3820は、ステップ3826において、変換を行った後、映像における1つ以上の映像領域に基づいて、更新終了判定基準が満たされるまで、1つ以上のテーブルを更新することをさらに含む。
【0213】
図38Cは、例示的な映像処理方法の別のフローチャートを示す。方法3830は、ステップ3832において、動き候補を含む1つ以上のテーブルを維持し、各動き候補は、対応する動き情報に関連付けられる。方法3830は、ステップ3834において、少なくとも1つのテーブルにおける動き候補を再配列することをさらに含む。方法3830は、ステップ3836において、1つ以上の再配列されたテーブルに基づいて、1つ以上のテーブルを使用して、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間の変換を行うことをさらに含む。
【0214】
図38Dは、映像処理のための例示的な方法の別のフローチャートを示す。方法3840は、ステップ3842において、動き候補を含む1つ以上のテーブルを維持し、各動き候補は、対応する動き情報に関連付けられる。方法3840は、ステップ3844において、1つ以上の再配列されたテーブルに基づいて、1つ以上のテーブルを使用して、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことをさらに含む。方法3840は、ステップ3846において、第1の映像ブロックの変換およびテーブルにおける動き候補の並び替えに基づいて、テーブルに追加の動き候補を追加することで、1つ以上のテーブルを更新することをさらに含む。
【0215】
9. 開示される技術の例示的な実装形態
図39は、映像処理装置3900のブロック図である。装置3900は、本明細書に記載の方法の1つ以上を実装するために使用してもよい。装置3900は、スマートフォン、タブレット、コンピュータ、モノのインターネット(IoT)受信機等に実施されてもよい。装置3900は、1つ以上の処理装置3902と、1つ以上のメモリ3904と、映像処理ハードウェア3906と、を含んでもよい。1つまたは複数の処理装置3902は、本明細書に記載される1つ以上の方法(方法3810〜3840を含むが、これに限定されない)を実装するように構成されてもよい。メモリ(複数可)3904は、本明細書で説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用してもよい。映像処理ハードウェア3906は、本明細書に記載される技術をハードウェア回路にて実装するために使用してもよい。
【0216】
いくつかの実施形態において、映像符号化および復号化方法は、
図38A〜38Dを参照して説明したように、ハードウェアプラットフォームに実装される装置を使用して実施してもよい。
【0217】
上述した方法/技術の特徴および実施形態を、項目に基づくフォーマットを使用して以下に説明する。
【0218】
1. テーブルを維持することを含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられ、テーブルに基づいて第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、変換を行った後に、更新規則に基づいて、ゼロ以上のテーブルを更新することを含む映像処理方法。
【0219】
2. 前記更新規則は、前記映像の1つのピクチャまたは1つのスライスまたは1つのタイルの境界に位置する映像ブロックのテーブルを更新することを許可しない、第1項に記載の方法。
【0220】
3. テーブルを維持することを含み、各テーブルは、動き候補のセットを含み、各動き候補は、対応する動き情報に関連付けられ、テーブルに基づいて、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、変換を行った後に、更新終了判定基準に達するまで、映像の中の1つ以上の映像領域に基づいて、1つ以上のテーブルを更新することを含む、映像処理方法。
【0221】
4. テーブルは、スライス、タイル、(最大符号化ユニット(LCU)行、または同じ時間層インデックスを有するスライス内でのみテーブルを更新する、第1〜3項に記載の方法。
【0222】
5. S個の映像領域に対して変換を行った後、または一定のサイズの映像領域に対して変換を行った後、テーブルを更新し、Sは整数である、第1項または第3項に記載の方法。
【0223】
6. 更新中のテーブルに関連付けられたカウンタが最大許容数に達した場合、更新終了判定基準が満たされる、第3項に記載の方法。
【0224】
7. 更新中のテーブルに関連付けられたカウンタが予め規定された値に達した場合、更新終了判定基準が満たされる、第3項に記載の方法。
【0225】
8. 前記予め規定された値は、映像パラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ、タイルヘッダ、符号化ツリーユニット(CTU)、符号化ツリーブロック(CTB)、符号化ユニット(CU)、または予測ユニット(PU)、または複数のCTU、複数のCTB、複数のCU、または複数のPUに広がる映像領域において信号通知される、第7項に記載の方法。
【0226】
9. 前記更新規則は、前記第1の映像ブロックの左上座標(x,y)が、前記更新規則に規定された一定の条件を満たす場合、テーブルを更新する、第1項または第3項に記載の方法。
【0227】
10. (x&M==0)&&(y&M==0)の場合、テーブルが更新され、Mは、2、4、8、16、32、または64である、第9項に記載の方法。
【0228】
11. 前記更新規則は、S個の映像ブロックに対して変換を行った後、テーブルを更新し、Sが1以上の整数である、第1項または第3項に記載の方法。
【0229】
12. S個の映像ブロックがインター符号化ブロックである、第11項に記載の方法。
【0230】
13. 前記S個の映像ブロックは、サブブロックに基づく動き予測またはサブブロックに基づく動き補償方法で符号化されない、第11項に記載の方法。
【0231】
14. 前記S個の映像ブロックは、アフィンモードまたは代替時間的動きベクトル予測(ATMVP)モードで符号化されない、第11項に記載の方法。
【0232】
15. 動き候補を含む1つ以上のテーブルを維持することを含み、各動き候補は、対応する動き情報に関連付けられ、1つ以上のテーブルのうちの少なくとも1つにおいて動き候補の再配列をすることと、少なくとも1つのテーブルの再配列した動き候補に基づいて、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間で変換を行うことと、を含む。映像処理方法
【0233】
16. 前記変換に基づいて、1つ以上のテーブルを更新することをさらに含む、第15項に記載の方法。
【0234】
17. 動き候補を含む1つ以上のテーブルを維持することを含み、各動き候補は、対応する動き情報に関連付けられ、1つ以上のテーブルに基づいて、少なくとも1つ以上のテーブルを使用して、第1の映像ブロックと、第1の映像ブロックを含む映像のビットストリーム表現との間の変換を行うことと、第1の映像ブロックの変換に基づいてテーブルに追加の動き候補を追加することによって1つ以上のテーブルを更新することと、テーブル内の動き候補を再配列することを含む、映像処理方法。
【0235】
18. 前記順序変更されたテーブルに基づいて、前記映像の後続の映像ブロックと前記映像のビットストリーム表現との間で変換を行うことをさらに含む、第15項または第17項に記載の方法。
【0236】
19. 前記再配列は、最大符号化ユニット(LCU)、LCU行、複数のLCUのうちの少なくとも1つを含む映像ユニットに対して前記変換を行った後に行われる、第17項に記載の方法。
【0237】
20. 前記変換を行うことは、前記第1の映像ブロックから前記ビットストリーム表現を生成することを含む、第1〜19項に記載の方法。
【0238】
21. 前記変換を行うことは、ビットストリーム表現から第1の映像ブロックを生成することを含む、第1〜19項のいずれか1項に記載の方法。
【0239】
22. 動き候補は、予測方向、参照ピクチャインデックス、動きベクトル値、強度補償フラグ、アフィンフラグ、動きベクトル差精度または動きベクトル差分値のうち少なくとも1つを含む動き情報に関連付けられる、第1〜21項に記載の方法。
【0240】
23. 1つ以上のテーブルを更新することは、変換を行った後、第1の映像ブロックの動き情報に基づく1つ以上のテーブルを更新することを含む、第1〜14項、および16〜22項のいずれか1項に記載の方法。
【0241】
24. 更新されたテーブルに基づいて、映像の後続の映像ブロックとその映像のビットストリーム表現との間で変換を行うことをさらに含む、第23項に記載の方法。
【0242】
25. プロセッサと、その処理装置に命令が記憶された非一時的メモリとを備える装置であって、命令がプロセッサによって実装されることにより、プロセッサに、第1項から第24項のいずれか1項に記載の方法を実施させる装置。
【0243】
26. 第1項から第24項のいずれか1項に記載の方法を実行するためのプログラムコードを含む、非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラム製品。
【0244】
以上、説明の目的で本開示の技術の特定の実施形態を説明したが、本発明の範囲から逸脱することなく様々な修正が可能であることは、理解されるであろう。従って、本開示の技術は、添付の特許請求の範囲による場合を除き、限定されない。
【0245】
本特許明細書に記載された主題および機能操作の実装形態は、本明細書に開示された構造およびその構造的等価物を含め、様々なシステム、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1つ以上の組み合わせで実施してもよい。本明細書に記載された主題の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置によって実行されるため、またはデータ処理装置の操作を制御するために、有形で非可搬性のコンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶装置、機械可読記憶基板、記憶装置、機械可読伝播信号をもたらす物質の組成物、またはこれらの1つ以上の組み合わせであってもよい。「データ処理ユニット」または「データ処理装置」という用語は、例えば、プログラマブル処理装置、コンピュータ、または複数の処理装置若しくはコンピュータを含め、データを処理するためのすべての装置、デバイス、および機械を含む。この装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、処理装置ファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つ以上の組み合わせを構成するコードを含んでもよい。
【0246】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとして、も含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。1つのコンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開可能である。
【0247】
本明細書に記載されたプロセスおよびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブル処理装置によって行うことができる。プロセスおよびロジックフローはまた、特別目的のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行することができ、装置はまた、特別目的のロジック回路として実装することができる。
【0248】
コンピュータプログラムの実行に適した処理装置は、例えば、汎用および専用マイクロ処理装置の両方、並びに任意の種類のデジタルコンピュータの任意の1つ以上の処理装置を含む。一般的に、処理装置は、読み出し専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するための処理装置と、命令およびデータを記憶するための1つ以上の記憶装置とである。一般的に、コンピュータは、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、および記憶装置を含み、例えば、EPROM、EEPROM、フラッシュ記憶装置等の半導体記憶装置を含む。処理装置およびメモリは、専用ロジック回路によって補完されてもよく、または専用ロジック回路に組み込まれてもよい。
【0249】
本明細書は、図面とともに、例示のみを目的とするものであり、例示的とは例を意味することが意図される。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈からそうでないことが明確に示されていない限り、複数形も含むことが意図される。さらに、文脈からそうでないことが明確に示されていない限り、「または」の使用は、「および/または」を含むことが意図される。
【0250】
本特許明細書は多くの詳細を含むが、これらは、任意の発明の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許明細書において別の実施形態の文脈で説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、単一の例の文脈で説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1つ以上の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブ組み合わせまたはサブ組み合わせのバリエーションに向けられてもよい。
【0251】
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で実行されること、または示された全ての操作が実行されることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムモジュールの分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
【0252】
いくつかの実装形態および例のみが記載されており、本特許明細書に記載され図示されている内容に基づいて、他の実施形態、拡張および変形が可能である。