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