JP7460661B2 - 映像符号化のための動き候補リストの構成 - Google Patents

映像符号化のための動き候補リストの構成 Download PDF

Info

Publication number
JP7460661B2
JP7460661B2 JP2021572490A JP2021572490A JP7460661B2 JP 7460661 B2 JP7460661 B2 JP 7460661B2 JP 2021572490 A JP2021572490 A JP 2021572490A JP 2021572490 A JP2021572490 A JP 2021572490A JP 7460661 B2 JP7460661 B2 JP 7460661B2
Authority
JP
Japan
Prior art keywords
block
video
candidates
video block
motion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021572490A
Other languages
English (en)
Other versions
JP2022535903A (ja
Inventor
リー ジャン
カイ ジャン
ホンビン リウ
ヤン ワン
ユエ ワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Original Assignee
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd, ByteDance Inc filed Critical Beijing ByteDance Network Technology Co Ltd
Publication of JP2022535903A publication Critical patent/JP2022535903A/ja
Priority to JP2023204671A priority Critical patent/JP2024023522A/ja
Application granted granted Critical
Publication of JP7460661B2 publication Critical patent/JP7460661B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

関連出願の相互参照
願は、2019年6月6日出願の国際特許出願PCT/CN2019/090409号、2019年6月22日出願の国際特許出願PCT/CN2019/092438号、2019年9月10日出願の国際特許出願PCT/CN2019/105180号の優先権および利益を主張する2020年6月8日出願の国際特許出願PCT/CN2020/094865号に基づく。上記特許出願の全ては、それらの全体における参照によりここで援用される。
本明細書は、映像および画像の符号化および復号化技術に関する。
デジタル映像は、インターネットおよび他のデジタル通信ネットワークにおいて最大の帯域幅の使用量を占めている。映像を受信および表示することが可能である接続されたユーザ機器の数が増加するにつれ、デジタル映像の使用に対する帯域幅需要は増大し続けることが予測される。
開示された技術は、映像または画像のデコーダまたはエンコーダの実施形態によって、サブブロックレベルで映像ビットストリームのイントラブロックコピー分割技術の符号化または復号化を行うために使用してもよい。
1つの例示的な態様において、映像処理の方法が開示される。方法は、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックを複数のサブブロックに分割することを判定することを含む。複数のブロックのうちの少なくとも1つは、現在のブロックの現在のピクチャからの1または複数の映像領域からの参照サンプルを使用する修正IBC(Intra Block Copy)符号化技術を使用して、符号化される。方法は、判定に基づいて変換を実行することも含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックが複数のサブブロックに分割することを判定することを含む。複数のサブブロックの各々は、パターンに従って、対応する符号化技術を使用して、符号化表現に符号化される。方法は、判定に基づいて変換を実行することも含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックの特徴に関する条件に基づいて、動き候補のリストに関連付けられた動作を判定することを含む。動き候補のリストは、符号化技術のために、または前回処理された映像のブロックからの情報に基づいて構成される。方法は、判定に基づいて変換を実行することも含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、時間的情報に基づいてインター符号化技術で符号化された現在のブロックを複数のサブブロックに分割することを判定することを含む。複数のブロックのうちの少なくとも1つは、現在のブロックを含む現在のピクチャからの1または複数の映像領域からの参照サンプルを使用する修正IBC(Intra Block Copy)符号化技術にて符号化される。方法は、判定に基づいて変換を実行することも含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックが複数のサブブロックに分割され、各サブブロックは映像領域からの参照サンプルに基づいて符号化される、映像領域の現在の映像ブロックと、映像ブロックのビットストリーム表現との間の変換においてsbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することであって、サブブロックのサイズは、分割規則に基づく、ことと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することと、を含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックが複数のサブブロックに分割され、各サブブロックは映像領域からの参照サンプルに基づいて符号化される、映像領域の現在の映像ブロックと、映像ブロックのビットストリーム表現との間の変換においてsbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することを含み、変換は、所与のサブブロックに対するinitMV(initialized Motion Vector)を判定することと、initMVから参照ブロックを識別することと、参照ブロックに対するMV情報を使用して所与のサブブロックに対するMV(Motion Vector)情報を導出することと、を含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックが複数のサブブロックに分割され、各サブブロックは映像領域からの参照サンプルに基づいて符号化される、映像領域の現在の映像ブロックと、映像ブロックのビットストリーム表現との間の変換においてsbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することと、を含み、変換は、サブブロックIBC候補を生成することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、sbIBC(sub-block Intra Block Copy)モードを使用して複数のサブブロックのうちの第1のサブブロック処理し、イントラ符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、イントラ符号化モードを使用して複数のサブブロックのすべてのサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、代表的な画素値のパレットが各サブブロックを符号化するために用いられるパレット符号化モードを使用して複数のサブブロックのすべてを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、第1のサブブロックを符号化するために代表的な画素値のパレットが使用されるパレットモードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、イントラブロックモードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、第1のサブブロックを符号化するために代表的な画素値のパレットが使用されるパレットモードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、イントラブロックモードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、sbIBC(sub-block Intra Block Copy)モードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、インター符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、サブブロックイントラ符号化モードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、インター符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックをビットストリーム表現に符号化するために、上述の請求項のいずれかに記載の方法を使用することを決定することと、デコーダパラメータセットレベル、シーケンスパラメータセットレベル、または映像パラメータセットレベル、またはピクチャパラメータセットレベル、またはピクチャヘッダレベル、またはスライスヘッダレベル、またはタイルグループヘッダレベル、または最大符号化ユニットレベル、または符号化ユニットレベル、または最大符号化ユニット行レベル、またはLCUレベルのグループ、または変換ユニットレベル、または予測ユニットレベル、または映像符号化ユニットレベルにて、決定を示す情報をビットストリーム表現に含めることと、を含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、符号化条件に基づいて、現在の映像ブロックをビットストリーム表現に符号化するために、上述の請求項のいずれかに記載の方法を使用することを決定することと、上述の請求項のいずれかに記載の方法を使用して符号化を実行することと、を含み、条件は、現在の映像ブロックの、符号化ユニット、予測ユニット、変換ユニット、現在の映像ブロック、または映像符号化ユニット、の位置のうちの1または複数に基づく。
別の例示的な態様において、映像処理の方法が開示される。方法は、映像領域におけるブロックと、映像領のビットストリーム表現との間での変換のためにイントラブロックコピーモードおよびインター予測モードを使用することを決定することと、映像領域におけるブロックのためにイントラブロックコピーモードおよびインター予測モードを使用して変換を実行することと、を含む。
別の例示的な態様において、映像処理の方法が開示される。方法は、現在の映像ブロックと現在の映像ブロックのビットストリーム表現との間での変換中、符号化条件に基づいて、動き候補リスト構成処理および/または履歴に基づく動きベクトル予測子テーブルを更新するためのテーブル更新処理を行うことと、動き候補リスト構成処理および/または前記テーブル更新処理に基づいて変換を実行することと、を含む。
別の例示的な態様において、上述された方法は、プロセッサを含む映像デコーダによって実装されてもよい。
別の例示的な態様において、上述された方法は、プロセッサを含む映像エンコーダによって実装されてもよい。
さらに別の例示的な態様において、これらの方法は、プロセッサ実行可能命令の形式で実施されてもよく、コンピュータ可読プログラム媒体に記憶されてもよい。
これらの、および他の態様は、本明細書でさらに説明される。
マージ候補リスト構成のための導出処理を示す。 空間的マージ候補の位置の一例を示す。 空間的マージ候補の冗長性チェックに考慮される候補対の例を示す。 N×2Nおよび2N×N分割の第2のPUのための位置を示す。 時間的マージ候補のための動きベクトルのスケーリングの説明の例を示す。 時間的マージ候補、C0およびC1の候補位置の例を示す。 結合双方向予測マージ候補の例を示す。 動きベクトル予測候補の導出処理の例を示す。 空間的動きベクトル候補のための動きベクトルスケーリングの説明の例を示す。 4パラメータアフィンモード(左側)および6パラメータアフィンモデル(右側)のための簡易アフィン動きモデルの例を示す。 サブブロックごとのアフィン動きベクトルフィールドの例を示す。 アフィンマージモードの候補位置の例を示す。 修正マージリスト構成処理を例示する。 三角形分割に基づくインター予測の例を示す。 第1の重み係数グループを適用するCUの例を示す。 動きベクトルストレージの例を示す。 UMVE(Ultimate Motion Vector Expression)検索処理の例を示す。 UMVEの開始点の例を示す。 DMVRにおけるリスト0とリスト1との間にミラーリングされるMVD(0,1)の例を示す。 1回の繰り返しでチェックされてよいMVを示す。 イントラブロックコピーの例を示す。 映像処理装置の例を示すブロック図である。 映像処理方法の例を示すフローチャートである。 開示された技術を実装することができる例示的な映像処理システムを示すブロック図である。 本技術に従う映像処理方法を示すフローチャートである。 本技術に従う別の映像処理方法を示すフローチャートである。 本技術に従う別の映像処理方法を示すフローチャートである。 本技術に従うさらに別の映像処理方法を示すフローチャートである。
本特許明細書は、伸張または復号化されたデジタル映像または画像の品質を向上させるために、画像または映像ビットストリームのデコーダによって使用できる様々な技術を提供する。簡潔にするために、本明細書では、用語「映像」は、一連のピクチャ(従来から映像と呼ばれる)および個々の画像の両方を含むように使用される。さらに、映像エンコーダは、さらなる符号化に使用される復号化されたフレームを再構成するために、符号化の処理中にこれらの技術を実装してもよい。
本特許明細書では、理解を容易にするために章の見出しを使用しており、1つの章に開示された実施形態をその章にのみ限定するものではない。このように、ある章の実施形態は、他の章の実施形態と組み合わせることができる。
1.発明の概要
本明細書は、映像符号化技術に関する。具体的には、イントラブロックコピー(別名、CPR(Current Picture Referencing))符号化に関連する。HEVCのような既存の映像符号化規格に適用してもよいし、規格(Versatile Video Coding)を確定させるために適用してもよい。本発明は、将来の映像符号化規格または映像コーデックにも適用可能である。
2.背景技術
映像符号化規格は、主に周知のITU-TおよびISO/IEC規格の開発によって発展してきた。ITU-TはH.261とH.263を作り、ISO/IECはMPEG-1とMPEG-4 Visualを作り、両団体はH.262/MPEG-2 VideoとH.264/MPEG-4 AVC(Advanced Video Coding)とH.265/HEVC規格を共同で作った。H.262以来、映像符号化規格は、時間的予測と変換符号化が利用されるハイブリッド映像符号化構造に基づく。HEVCを超えた将来の映像符号化技術を探索するため、2015年には、VCEGとMPEGが共同でJVET(Joint Video Exploration Team)を設立した。それ以来、多くの新しい方法がJVETによって採用され、JEM(Joint Exploration Mode)と呼ばれる参照ソフトウェアに組み込まれてきた。2018年4月には、VCEG(Q6/16)とISO/IEC JTC1 SC29/WG11(MPEG)の間にJVET(Joint Video Expert Team)が発足し、HEVCと比較して50%のビットレート削減を目標にVVC規格の策定に取り組んでいる。
2.1 HEVC/H.265におけるインター予測
インター符号化されたCU(Coding Unit)の場合、分割モードに従って、1つのPU(Prediction Unit)、2つのPUで符号化されてもよい。各インター予測されたPUは、1つまたは2つの参照ピクチャリストのための動きパラメータを有する。動きパラメータは、動きベクトルおよび参照ピクチャインデックスを含む。2つの参照ピクチャリストのうちの1つの参照ピクチャリストの使用は、inter_pred_idcを使用して信号通知されてもよい。動きベクトルは、予測子に対する差分として明確に符号化されてもよい。
1つのCUがスキップモードにて符号化される場合、1つのPUがCUに関連付けられ、有意な残差係数がなく、符号化された動きベクトル差分も参照ピクチャインデックスもない。マージモードが規定され、これにより、現在のPUのための動きパラメータが、空間的および時間的候補を含む近傍のPUから取得される。マージモードは、スキップモードに対してだけでなく、任意のインター予測されたPUに適用することができる。マージモードの代替として、動きパラメータの明示的な送信があり、動きベクトル(より正確には、動きベクトル予測子と比較したMVD(Motion Vector Differences))、各参照ピクチャリストの対応する参照ピクチャインデックス、および参照ピクチャリストの使用が、各PUに明確に信号通知される。このようなモードを、本開示ではAMVP(Advanced Motion Vector Prediction)と呼ぶ。
2つの参照ピクチャリストのうちの1つを使用することを信号通知が示す場合、サンプルの1つのブロックからPUが生成される。これを「単一予測」と呼ぶ。PスライスおよびBスライスの両方に対して単一予測が利用可能である。
両方の参照ピクチャリストを使用することを信号通知が示す場合、サンプルの2つのブロックからPUが生成される。これを「双方向予測」と呼ぶ。Bスライスのみに双方向予測が利用可能である。
2.1.1 参照ピクチャバッファ
HEVCにおいて、インター予測という用語は、現在の復号化されたピクチャ以外の参照ピクチャのデータ要素(例えば、サンプル値または動きベクトル)から導出された予測を示すために使用される。H.264/AVCと同様に、複数の参照ピクチャから画像を予測することができる。インター予測に使用される参照ピクチャは、1または複数の参照ピクチャリストにまとめられる。参照インデックスは、リストにおけるいずれの参照ピクチャを使用して予測信号を生成するかを識別する。
1つの参照ピクチャリストList0はPスライスに使用され、2つの参照ピクチャリストList0およびList1はBスライスに使用される。なお、リスト0/1に含まれる参照ピクチャは、撮影/表示順の観点から、過去および将来のピクチャからのものであってもよい。
2.2.1 マージモード
2.1.2.1 マージモードの候補の導出
マージモードを使用してPUを予測する場合、ビットストリームからマージ候補リストにおけるエントリを指すインデックスを構文解析し、これを使用して動き情報を検索する。このリストの構成は、HEVC規格で規定されており、以下のステップのシーケンスに基づいてまとめることができる。
ステップ1:初期候補の導出
ステップ1.1:空間的候補の導出
ステップ1.2:空間的候補の冗長性チェック
ステップ1.3:時間的候補の導出
ステップ2:追加候補の挿入
ステップ2.1:双方向予測候補の作成
ステップ2.2:ゼロ動き候補の挿入
これらのステップは図1にも概略的に示されている。空間的マージ候補の導出のために、5つの異なる位置にある候補の中から最大4つのマージ候補を選択する。時間的マージ候補の導出のために、2つの候補の中から最大1つのマージ候補を選択する。デコーダ側ではPUごとに一定数の候補を想定しているので、ステップ1で取得された候補数がスライスヘッダで信号通知されるマージ候補の最大数(MaxNumMergeCand)に達しない場合、追加候補が生成される。候補の数は一定であるので、トランケイテッドユーナリー2値化(TU:Truncated Unary)を使用して最良マージ候補のインデックスを符号化する。CUのサイズが8に等しい場合、現在のCUのすべてのPUは、2N×2Nの予測ユニットのマージ候補リストと同じ1つのマージ候補リストを共有する。
以下、上述したステップに関連付けられた動作を詳しく説明する。
2.1.2.2 空間的候補の導出
空間的マージ候補の導出において、図2に示す位置にある候補の中から、最大4つのマージ候補を選択する。導出の順序はA、B、B、A、Bである。位置A、B、B、AのいずれかのPUが利用可能でない場合(例えば、別のスライスまたはタイルに属しているため)、またはイントラ符号化された場合にのみ、位置Bが考慮される。位置Aの候補を加えた後、残りの候補を加えると、冗長性チェックを受け、それにより、同じ動き情報を有する候補を確実にリストから排除でき、符号化効率を向上させることができる。計算の複雑性を低減するために、前述の冗長性チェックにおいて、考えられる候補対のすべてを考慮することはしない。代わりに、図3において矢印でリンクされた対のみを考慮し、冗長性チェックに使用される対応する候補が同じ動き情報を有していない場合にのみ、その候補をリストに加える。重複した動き情報の別のソースは、2N×2Nとは異なる分割に関連付けられた「第2のPU」である。一例として、図4は、それぞれN×2Nおよび2N×Nの場合の第2のPUを示す。現在のPUがN×2Nに分割される場合、リスト構成に位置Aの候補は考慮されない。実際、この候補を加えることにより、同じ動き情報を有する2つの予測ユニットが導かれることとなり、符号化ユニットに1つのPUのみを有するためには冗長である。同様に、現在のPUを2N×Nに分割する場合、位置Bは考慮されない。
2.1.2.3 時間的候補の導出
このステップにおいて、1つの候補のみがリストに追加される。具体的には、この時間的マージ候補の導出において、同一位置の(co-located)ピクチャにおける同一位置のPUに基づいて、スケーリングされた動きベクトルを導出する。図5に点線で示すように、時間的マージ候補のスケーリングされた動きベクトルが得られ、これは、POC距離tbおよびtdを利用して、同一位置のPUの動きベクトルからスケーリングしたものであり、tbは、現在のピクチャの参照ピクチャと現在のピクチャのPOC差として規定され、tdは、同一位置のPUの参照ピクチャと同一位置のピクチャのPOC差として規定される。時間的マージ候補の参照ピクチャインデックスをゼロに等しく設定される。スケーリング処理の実際的な実現については、HEVC仕様に記載されている。Bスライスの場合、2つの動きベクトル、即ち、1つは参照ピクチャリスト0のためのもの、もう1つは参照ピクチャリスト1のためのものを取得し、これらを組み合わせることによって、双方向予測マージ候補を形成する。
2.1.2.4 同一位置のピクチャおよび同一位置のPU
TMVPが有効になっている(例えば、slice_temporal_mvp_enabled_flagが1に等しい)場合、同一位置のピクチャを表す変数ColPicは、以下のように導出される。
-現在のスライスがBスライスであり、かつ、信号通知されたcollocated_from_l0_flagが0に等しい場合、ColPicはRefPicList1[collocated_ref_idx]に等しく設定される。
-そうでない場合(slice_typeがBに等しく、かつ、collocated_from_l0_flagが1に等しい、または、slice_typeがPに等しい)、ColPicはRefPicList0[collocated_ref_idx]に等しく設定される。
ここで、collocated_ref_idxおよびcollocated_from_l0_flagは、スライスヘッダにて信号通知されてよい2つの構文要素である。
参照フレームに属する同一位置のPU(Y)において、図6に示すように、時間的候補に対する位置は、候補Cと候補Cとの間で選択される。位置CのPUが利用可能でない場合、イントラ符号化されている場合、または現在のCTU(Coding Tree Unit)(別名、LCU(Largest Coding Unit))行の外側にある場合、位置Cが使用される。そうでない場合、位置Cが時間的マージ候補の導出にて使用される。
関連する構文要素を以下に説明する。
7.3.6.1 一般スライスセグメントヘッダ構文
Figure 0007460661000001
2.1.2.5 TMVP候補のためのMVの導出
具体的には、TMVP候補を導出するために、以下の動作を行う。
(1)リストXにおいて、参照ピクチャリストX=0を設定し、対象となる参照ピクチャをインデックスが0に等しい参照ピクチャ(例えば、curr_ref)にする。同一位置の動きベクトルの導出処理を呼び出し、curr_refを指すリストXのMVを得る。
(2)現在のスライスがBスライスである場合、参照ピクチャリストX=1を設定し、対象となる参照ピクチャがリストXにおける0であるインデックスを有する参照ピクチャ(例えば、curr_ref)である。同一位置の動きベクトルの導出処理を呼び出し、curr_refを指すリストXのMVを得る。
同一位置に配置された動きベクトルの導出処理については、次のサブセクションで説明する。
2.1.2.5.1 同一位置の動きベクトルの導出処理
同一位置のブロックの場合、それは、単一予測または双方向予測でイントラ符号化されてもよいし、インター符号化されてもよい。イントラ符号化されている場合、TMVP候補は利用不可となるように設定される。
リストAからの単一予測である場合、リストAの動きベクトルは参照対象ピクチャリストXにスケーリングされる。
双方向予測であり、オブジェクト参照ピクチャリストがXである場合、リストAの動きベクトルは参照対象ピクチャリストXにスケーリングされ、Aは、以下の規則に従って判定される。
-いずれの参照ピクチャも現在のピクチャと比較してより大きいPOC値を有していない場合、AはXに等しく設定される。
-そうでない場合、Aはcollocated_from_l0_flagに等しく設定される。
関連する説明を以下に示す。
8.5.3.2.9 同一位置の動きベクトルの導出処理
この処理への入力は以下の通りである。
-現在の予測ブロックを規定する変数currPb、
-ColPicにて規定された同一位置のピクチャ内の同一位置の予測ブロックを規定する変数colPb、
-ColPicにて規定された同一位置のピクチャの左上の輝度サンプルに対するcolPbにて規定された同一位置の輝度予測ブロックの左上のサンプルを規定する輝度位置(xColPb,yColPb)
-Xが0または1に等しい、参照インデックスrefIdxLX。
この処理の出力は以下の通りである。
-動きベクトル予測mvLXCol、
-可用性フラグavailableFlagLXCol。
変数currPicは、現在のピクチャを規定する。
配列predFlagL0Col[x]、mlvL0Col[x]、refIdxL0Col[x][y]は、それぞれ、ColPicで規定された同一位置のピクチャのPredFlagL0[x]、MlvL0[x]、RefIdxL0[x][y]に等しく設定され、配列predFlagL1Col[x][y]、mvL1Col[x][y]、およびrefIdxL1Col[x][y]は、それぞれ、ColPicで規定された同一位置のPredFlagL1[x]、MvL1[x]、RefIdxL1[x][y]に等しく設定される。
変数mvLXColおよびavailableFlagLXColは、以下のように導出される。
-colPbがイントラ予測モードで符号化される場合、mvLXColの両成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
-そうでない場合、動きベクトルmvCol、参照インデックスrefIdxCol、および参照リスト識別子listColは、以下のように導出される。
-predFlagL0Col[xColPb][yColPb]が0に等しい場合、mvCol、refIdxCol、listColは、それぞれ、mvL1Col[xColPb][yColPb]、refIdxL1Col[xColPb][yColPb]、L1に等しく設定される。
-そうでない場合、predFlagL0Col[xColPb][yColPb]が1に等しく、かつ、predFlagL1Col[xColPb][yColPb][yColPb]が0に等しい場合、mvCol、refIdxCol、listColは、それぞれ、mvL0Col[xColPb][yColPb],refIdxL0Col[xColPb][yColPb]、およびL0に等しく設定される。
-そうでない場合(predFlagL0Col[xColPb][yColPb]が1に等しく、かつ、predFlagL1Col[xColPb][yColPb]が1に等しい場合)、以下の割り当てを行う。
-NoBackwardPredFlagが1に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLXCol[xColPb][yColPb]、refIdxLXCol[xColPb][yColPb]、およびLXに等しく設定される。
-そうでない場合、mvCol、refIdxCol、listColは、それぞれ、mvLNCol[xColPb][yColPb]、refIdxLNCol[xColPb][yColPb]、LNに等しく設定され、Nはcollocated_from_l0_flagの値である。
また、mvLXColおよびavailableFlagLXColは、以下のように導出される。
-LongTermRefPic(currPic,currPb,refIdxLX,LX)がLongTermRefPic(ColPic,colPb,refIdxCol,listCol)に等しくない場合、mvLXColの両成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
-そうでない場合、変数availableFlagLXColは1に等しく設定され、refPicListCol[refIdxCol]は、ColPicによって規定された同一位置のピクチャにおける予測ブロックcolPbを含むスライスの参照ピクチャリストlistColにおける参照インデックスrefIdxColを有するピクチャとなるように設定され、以下を適用する。
colPocDiff=DiffPicOrderCnt(ColPic,refPicListCol[refIdxCol]) (2-1)
currPocDiff=DiffPicOrderCnt(currPic,RefPicListX[refIdxLX]) (2-2)
-RefPicListX[refIdxLX]が長期参照ピクチャである場合、またはcolPocDiffがcurrPocDiffに等しい場合、mvLXColは、以下のように導出される。
mvLXCol=mvCol (2-3)
-そうでない場合、mvLXColは、動きベクトルmvColのスケーリングされたバージョンとして、以下のように導出される。
tx=(16384+(Abs(td)>>1))/td (2-4)
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6) (2-5)
mvLXCol=Clip3(-32768,32767,Sign(distScaleFactor*mvCol)*((Abs(distScaleFactor*mvCol)+127)>>8)) (2-6)
ここで、tdおよびtbは、以下のように導出される。
td=Clip3(-128,127,colPocDiff) (2-7)
tb=Clip3(-128,127,currPocDiff) (2-8)
NoBackwardPredFlagの定義は、次である。
変数NoBackwardPredFlagは、以下のように導出される。
-現在のスライスのRefPicList0またはRefPicList1における各ピクチャaPicについて、DiffPicOrderCnt(aPic,CurrPic)が0以下である場合、NoBackwardPredFlagは1に等しく設定される。
-そうでない場合、NoBackwardPredFlagは、0に等しく設定される。
2.1.2.6 追加候補の挿入
空間的-時間的マージ候補の他に、2つの追加のタイプのマージ候補、すなわち、結合双方向予測マージ候補およびゼロマージ候補がある。空間的-時間的マージ候補を利用して、結合双方向予測マージ候補が生成される。結合双方向予測マージ候補は、Bスライスのみに使用される。最初の候補の第1の参照ピクチャリスト動きパラメータと別の候補の第2の参照ピクチャリスト動きパラメータとを組み合わせることで、結合双方向予測候補が生成される。これら2つのタプルが異なる動き仮説を提供する場合、これらのタプルは、新しい双方向予測候補を形成する。一例として、図7は、元のリスト(左側)における、mvL0およびrefIdxL0、またはmvL1およびrefIdxL1を有する2つの候補を用いて、最終リスト(右側)に加えられる結合双方向予測マージ候補を生成する場合を示す。これらの追加のマージ候補を生成するために考慮される組み合わせについては、様々な規則が存在する。
ゼロ動き候補を挿入し、マージ候補リストにおける残りのエントリを埋めることにより、MaxNumMergeCand容量にヒットする。これらの候補は、空間的変位がゼロであり、ゼロから始まり、新しいゼロ動き候補をリストに加える度に増加する参照ピクチャインデックスを有する。最終的には、これらの候補に対して冗長性チェックは行われない。
2.1.3 AMVP
AMVPは、動きベクトルと近傍のPUとの間の空間的-時間的な相関を利用し、これを動きパラメータの明確な伝送に用いる。各参照ピクチャリストに対し、まず、左側、上側の時間的に近傍のPU位置の可用性をチェックし、冗長な候補を取り除き、ゼロベクトルを加えることで、候補リストの長さを一定にすることで、動きベクトル候補リストを構成する。次いで、エンコーダは、候補リストから最良の予測子を選択し、選択された候補を示す対応するインデックスを送信することができる。マージインデックスの信号通知と同様に、最良の動きベクトル候補のインデックスは、トランケイテッドユーナリーを使用して符号化される。この場合に符号化対象の最大値は2である(図8参照)。以下の章では、動きベクトル予測候補の導出処理の詳細を説明する。
2.1.3.1 AMVP候補の導出
図8は、動きベクトル予測候補の導出処理を要約している。
動きベクトル予測において、空間的動きベクトル候補と時間的動きベクトル候補という2つのタイプの動きベクトル候補が考慮される。空間的動きベクトル候補を導出するために、図2に示したように、5つの異なる位置にある各PUの動きベクトルに基づいて、最終的には2つの動きベクトル候補を導出する。
時間的動きベクトル候補を導出するために、2つの異なる同一位置に配置された位置に基づいて導出された2つの候補から1つの動きベクトル候補を選択する。空間的-時間的候補の最初のリストを作成した後、リストにおける重複した動きベクトル候補を除去する。候補の数が2よりも多い場合、関連づけられた参照ピクチャリストにおける参照ピクチャインデックスが1よりも大きい動きベクトル候補をリストから削除する。空間的-時間的動きベクトル候補の数が2未満である場合は、追加のゼロ動きベクトル候補をリストに加える。
2.1.3.2 空間的動きベクトル候補
空間的動きベクトル候補の導出において、図2に示したような位置にあるPUから導出された5つの可能性のある候補のうち、動きマージと同じ位置にあるものを最大2つの候補を考慮する。現在のPUの左側のための導出の順序は、A、A、スケーリングされたA、スケーリングされたAとして規定される。現在のPUの上側のための導出の順序は、B、B、B、スケーリングされたB、スケーリングされたB、スケーリングされたBとして規定される。そのため、辺ごとに、動きベクトル候補として使用できる場合が4つ、すなわち空間的スケーリングを使用する必要がない2つの場合と、空間的スケーリングを使用する2つの場合とがある。4つの異なる場合をまとめると、以下のようになる。
※空間スケーリングなし
(1)同じ参照ピクチャリスト、かつ、同じ参照ピクチャインデックス(同じPOC)
(2)異なる参照ピクチャリスト、かつ、同じ参照ピクチャ(同じPOC)
※空間的スケーリング
(3)同じ参照ピクチャリスト、かつ、異なる参照ピクチャ(異なるPOC)
(4)異なる参照ピクチャリスト、かつ、異なる参照ピクチャ(異なるPOC)
最初に非空間的スケーリングの場合をチェックし、次に空間的スケーリングを行う。参照ピクチャリストにかかわらず、POCが近傍のPUの参照ピクチャと現在のPUの参照ピクチャとで異なる場合、空間的スケーリングが考慮される。左側の候補のすべてのPUが利用可能でないか、またはイントラ符号化されている場合、上側の動きベクトルのスケーリングは、左側および上側のMV候補の並列導出に役立つ。そうでない場合、上側の動きベクトルに対して空間的スケーリングは許可されない。
空間的スケーリング処理において、図9に示すように、時間的スケーリングと同様にして、近傍のPUの動きベクトルをスケーリングする。主な違いは、現在のPUの参照ピクチャリストおよびインデックスが入力として与えられることであり、実際のスケーリング処理は時間的スケーリングと同じである。
2.1.3.3 時間的動きベクトル候補
参照ピクチャインデックスを導出する以外は、時間的マージ候補を導出するための処理は、すべて、空間的動きベクトル候補を導出するための処理と同じである(図6参照)。参照ピクチャインデックスはデコーダに信号通知される。
2.2 VVCにおけるインター予測方法
インター予測を改善するための新しい符号化ツールには、MVDを信号通知するためのAMVR(Adaptive Motion Vector difference Resolution)、MMVD(Merge with Motion Vector Differences)、TPM(Triangular Prediction Mode)、CIIP(Combined Intra-Inter Prediction)、ATMVP(Advanced TMVP)(別名 SbTMVP)、アフィン予測モード、GBI(Generalized BI-prediction)、DMVR(Decode-side Motion Vector Refinement)、BIO(BI-directional Optical flow)(別名 BDOF)などがある。
VVCでサポートされる3つの異なるマージリスト構成処理がある。
(1)サブブロックマージ候補リスト:ATMVPおよびアフィンマージ候補を含む。1つのマージリスト構成処理は、アフィンモードおよびATMVPモードの両方に対して共有される。なお、ATMVPおよびアフィンマージ候補を順に追加してもよい。サブブロックマージリストのサイズはスライスヘッダで信号通知され、その最大値は5である。
(2)通常のマージリスト:インター符号化ブロックについては、1つのマージリスト構成処理を共有する。ここで、空間的/時間的マージ候補、HMVP、ペアワイズマージ候補、および動きゼロ候補を順に挿入してもよい。通常のマージリストのサイズはスライスヘッダに信号通知され、その最大値は6である。MMVD、TPM、CIIPは通常のマージリストに依存する。
(3)IBCマージリスト:通常のマージリストと同様に実行される。
同様に、VVCでサポートされるAMVPリストは次の3つである。
(1)アフィンAMVP候補リスト
(2)通常のAMVP候補リスト
(3)IBC AMVP候補リスト:IBCマージリストと同じ構成処理
2.2.1 VVCにおける符号化ブロック構造
VVCにおいて、4分木/2分木/3分木(QT/BT/TT)構造を採用し、ピクチャを正方形または長方形のブロックに分割する。
QT/BT/TTの他に、Iフレームのために、別個のツリー(別名、デュアル符号化ツリー)がVVCにおいても採用される。別個のツリーを使用して、符号化ブロック構造は、輝度および彩度成分について別個に信号通知される。
また、CUは、(例えば、PUがTUに等しいが、CUより小さいイントラサブパーティション予測、および、PUがCUに等しいが、TUがPUより小さいインター符号化ブロックのサブブロック変換などのような)2つの特定の符号化方法で符号化されたブロック以外は、PUとTUとに等しく設定される。
2.2.2 アフィン予測モード
HEVCにおいて、並進運動モデルのみがMCP(Motion Compensation Prediction)に対して適用される。一方、現実世界において、動きには様々な種類があり、例えば、ズームイン/ズームアウト、回転、透視運動、および他の不規則な動きがある。VVCにおいて、4パラメータアフィンモデルおよび6パラメータアフィンモデルを使用して、簡易アフィン変換動き補償予測を適用する。図10に示すように、ブロックのアフィン動きフィールドは、4パラメータアフィンモデルの場合、2つのCPMV(Control Point Motion Vector)によって表され、6パラメータアフィンモデルの場合、3つのCPMVによって表される。
ブロックのMVF(Motion Vector Field)は、式(1)における4パラメータアフィンモデル(ここで、4パラメータを変数a、b、e、fとして定義する)および式(2)における6パラメータアフィンモデル(ここで、4パラメータを変数a、b、c、d、e、fとして定義する)をそれぞれ使用して、以下の式で表される。
Figure 0007460661000002
Figure 0007460661000003
ここで、(mv ,mv )は、左上隅の制御点の動きベクトルであり、(mv ,mv )は、右上隅の制御点の動きベクトルであり、(mv ,mv )は、左下隅の制御点の動きベクトルであり、3つの動きベクトルは、すべて、CPMV(Control Point Motion Vector)と呼ばれ、(x,y)は、現在のブロック内の左上サンプルに対する代表点の座標を表し、(mv(x,y),mv(x,y))は、(x,y)に位置するサンプルに対して導出された動きベクトルである。CP動きベクトルは、(アフィンAMVPモードのように)信号通知されてもよいし、または(アフィンマージモードのように)オンザフライで導出されてもよい。wおよびhは、現在のブロックの幅および高さである。実際において、この除算は、丸め演算を伴う右シフトによって実装される。VTMにおいて、代表点をサブブロックの中心位置として定義し、例えば、現在のブロックにおける左上のサンプルに対するサブブロックの左上の角の座標が(xs,ys)である場合、代表点の座標を(xs+2,ys+2)とする。各サブブロック(例えば、VTMにおいて4×4)に対して、代表点を利用して、サブブロック全体の動きベクトルを導出する。
動き補償予測をさらに簡単にするために、サブブロックに基づくアフィン変換予測が適用される。各M×N(現在のVVCでは、MおよびNの両方を4に設定)のサブブロックの動きベクトルを導出するために、各サブブロックの中心サンプルの動きベクトルを、図11に示すように、式(1)および(2)に従って算出し、1/16の小数精度に丸める。そして、1/16画素の動き補償補間フィルタを適用し、導出された動きベクトルを使用して各サブブロックの予測を生成する。1/16画素の補間フィルタは、アフィンモードで導入される。
MCP後、各サブブロックの高精度動きベクトルを丸め、通常の動きベクトルと同じ精度で保存する。
2.2.3 ブロック全体のマージ
2.2.3.1 並進の通常のマージモードのマージリスト構成
2.2.3.1.1 HMVP(History-based Motion Vector Prediction)
マージリスト設計とは異なり、VVCでは、HMVP(History-based Motion Vector Prediction)法が採用されている。
HMVPには、前回符号化された動き情報が記憶される。前回符号化されたブロックの動き情報をHMVP候補として定義する。複数のHMVP候補をHMVPテーブルと表されるテーブルに記憶し、このテーブルは符号化/復号化の処理中にオンザフライで維持される。新しいタイル/LCU行/スライスの符号化/復号化を開始する際に、HMVPテーブルは空になる。非TPMモードのインター符号化ブロックおよび非サブブロックがある場合はいつでも、関連する動き情報を新しいHMVP候補としてテーブルの最後のエントリに追加する。全体の符号化フローを図12に示す。
2.2.3.1.2 通常のマージリスト構成処理
(並進移動のための)通常のマージリストの構成は、以下のステップのシーケンスに従って要約することができる。
ステップ1:空間的候補の導出
ステップ2:HMVP候補の挿入
ステップ3:ペアワイズ平均候補の挿入
ステップ4:デフォルトの動き候補
HMVP候補は、AMVPおよびマージ候補リスト構成処理の両方で使用できる。図13は、修正マージ候補リスト構成処理を示す。TMVP候補を挿入した後、マージ候補リストが満杯でない場合、HMVPテーブルに記憶されたHMVP候補を使用してマージ候補リストを埋めることができる。1つのブロックは、通常、動き情報の観点から、最も近接した近傍のブロックとの間に高い相関を有することを考慮し、テーブルにおけるHMVP候補をインデックスの降順に挿入する。テーブルの最後のエントリをまずリストに加え、最後に最初のエントリを加える。同様に、HMVP候補に対して冗長性除去が適用される。利用可能なマージ候補の総数がマージ可能なマージ候補の信号通知可能な最大数に達すると、マージ候補リスト構成処理を終了する。
なお、すべての空間的/時間的/HMVP候補は、非IBCモードで符号化される。そうでない場合、通常のマージ候補リストに追加することは許可されない。
HMVPテーブルは、5つまでの正規の動き候補を含み、各々がユニークである。
2.2.3.1.2.1 プルーニング処理
冗長性チェックに使用される対応する候補が同じ動き情報を有していない場合にのみ、候補をリストに加える。このような比較処理をプルーニング処理と呼ぶ。
空間的候補間のプルーニング処理は、現在のブロックのTPMの使用に依存する。
現在のブロックがTPMモードで符号化されていない(例えば、通常のマージ、MMVD、CIIP)場合、空間的マージ候補のためのHEVCプルーニング処理(例えば、5つのプルーニング)が利用される。
2.2.4 TPM(Triangular Prediction Mode)
VVCにおいて、インター予測のために三角形分割モードがサポートされる。三角形分割モードは、8×8以上であり、マージモードで符号化され、MMVDまたはCIIPモードで符号化されない、CUにのみ適用される。これらの条件を満たすCUの場合、CUレベルフラグが信号通知され、三角形分割モードが適用されるかどうかを示す。
このモードを使用する場合、図14に示すように、対角分割または逆対角分割のいずれかを使用して、CUを2つの三角形のパーティションに等分する。CUにおける各三角形のパーティションは、それ自体の動きを使用してインター予測され、各パーティションに対して単一予測のみが許可される。すなわち、各パーティションは、1つの動きベクトルおよび1つの参照インデックスを有する。従来の双方向予測と同様に、CUごとに2つの動き補償予測しか必要としないようにするために、単一予測動き制約を適用する。
CUレベルフラグが、現在のCUが三角形分割モードを用いて符号化されていることを示す場合、三角形のパーティションの方向(対角または逆対角)を示すフラグ、および2つのマージインデックス(各パーティションに1つ)がさらに信号通知される。三角形のパーティションの各々を予測した後、適応重みを有するブレンド処理を使用して、対角または逆対角の縁部に沿ったサンプル値が調整される。これがCU全体の予測信号であり、他の予測モードのように、CU全体に対して変換および量子化処理を行う。最後に、三角形分割モードを使用して予測されたCUの動きフィールドを4×4のユニットで記憶する。
通常のマージ候補リストは、動きベクトルを余分にプルーニングすることなく、三角形分割マージ予測に再利用される。通常のマージ候補リストにおける各マージ候補について、そのL0またはL1動きベクトルのうちの1つのみを三角形予測に使用する。また、L0対L1の動きベクトルを選択する順番は、そのマージインデックスパリティに基づく。このスキームによれば、通常のマージリストを直接使用することができる。
2.2.4.1 TPMのマージリスト構成処理
いくつかの実施形態において、通常のマージリスト構成処理は次のような修正を含むことができる。
(1)プルーニング処理をどのように実行するかは、現在のブロックのTPMの使用法に依存する。
-現在のブロックがTPMで符号化されていない場合、空間的マージ候補に適用されるHEVC5プルーニングが呼び出される。
-そうでない場合(現在のブロックがTPMで符号化されている場合)、新しい空間的マージ候補を追加するときに、フルプルーニングが適用される。すなわち、B1がA1と比較され、B0がA1およびB1と比較され、A0がA1、B1、およびB0と比較され、B2がA1、B1、A0、およびB0と比較される。
(2)B2からの動き情報をチェックするかどうかの条件は、現在のブロックのためのTPMの使用に依存する。
-現在のブロックがTPMで符号化されていない場合、B2がアクセスされ、B2をチェックする前に、4つ未満の空間的マージ候補がある場合にのみ、B2がチェックされる。
-そうでない場合(現在のブロックがTPMで符号化されている場合)、B2を追加する前に、利用可能な空間的マージ候補の数にかかわらず、B2が常にアクセスされ、チェックされる。
2.2.4.2 適応重み付け処理
各三角形予測ユニットを予測した後、2つの三角形予測ユニット間の対角の縁部に適応重み付け処理を適用し、CU全体の最終予測を導出する。2つの重み係数グループは、以下のように定義される。
輝度サンプルおよび色差サンプルには、それぞれ、{7/8,6/8,4/8,2/8,1/8}および{7/8,4/8,1/8}の第1の重み係数グループが使用される。
輝度サンプルおよび色差サンプルには、それぞれ、{7/8,6/8,5/8,4/8,3/8,2/8,1/8}および{6/8,4/8,2/8}の第2の重み係数グループが使用される。
2つの三角形予測ユニットの動きベクトルの比較に基づいて、重み係数グループが選択される。第2の重み係数グループは、以下の条件のいずれか1つが真である場合に使用される。
-2つの三角形予測ユニットの参照ピクチャは互いに異なる。
-2つの動きベクトルの水平値の差の絶対値は16画素よりも大きい。
-2つの動きベクトルの垂直値の差の絶対値は16画素よりも大きい。
そうでない場合、第1の重み係数グループが使用される。一例を図15に示す。
2.2.4.3 動きベクトル記憶装置
三角形予測ユニットの動きベクトル(図16におけるMv、およびMv2)は、4×4のグリッドに記憶される。各4×4のグリッドに対して、CUにおける4×4のグリッドの位置に基づいて、単一予測または双方向予測動きベクトルが記憶される。図16に示すように、非重み付け領域に位置する(すなわち、対角の縁部に位置しない)4×4のグリッドに対して、Mv1またはMv2のいずれかの単一予測動きベクトルを記憶する。一方、重み付け領域に位置する4×4のグリッドについては、双方向予測動きベクトルを記憶する。以下の規則に従って、Mv1およびMv2から双方向予測動きベクトルが導出される。
(1)Mv1およびMv2が異なる方向(L0またはL1)の動きベクトルを有する場合、Mv1およびMv2を単に結合されることで、双方向予測動きベクトルが形成される。
(2)Mv1とMv2の両方が同じL0(またはL1)方向から来ている場合、
-Mv2の参照ピクチャがL1(またはL0)参照ピクチャリストにおけるピクチャと同じである場合、Mv2はピクチャにスケーリングされる。Mv1とスケーリングされたMv2とが結合され、双方向予測動きベクトルを形成する。
-Mv1の参照ピクチャがL1(またはL0)参照ピクチャリストにおけるピクチャと同じである場合、Mv1はピクチャにスケーリングされる。スケーリングされたMv1とMv2とが結合され、双方向予測動きベクトルを形成する。
-そうでない場合、重み付け領域のためにMv1のみが記憶される。
2.2.4.4 マージモードのための構文テーブル、意味論および復号化処理
追加された変更は、下線を引いた太い斜体で強調されている。削除部分には[[]]が付けられている。
7.3.5.1 一般スライスセグメントヘッダ構文
Figure 0007460661000004
Figure 0007460661000005
7.3.7.5 符号化ユニット構文
Figure 0007460661000006
Figure 0007460661000007
7.3.7.7 マージデータ構文
Figure 0007460661000008
Figure 0007460661000009
7.4.6.1 一般スライスヘッダ意味論
six_minus_max_num_merge_candは、6から減算した、スライスでサポートされるマージMVP(Motion Vector Prediction)候補の最大数を規定する。マージMVP候補の最大数MaxNumMergeCandは、以下のように導出される。
MaxNumMergeCand=6-six_minus_max_num_merge_cand (7-57)
MaxNumMergeCandの値は、1~6の範囲内である。
five_minus_max_num_subblock_merge_candは、5から減算した、スライスでサポートされるサブブロックベースのマージMVP(Motion Vector Prediction)候補の最大数を規定する。five_minus_max_num_subblock_merge_candが存在しない場合、5-sps_sbtmvp_enabled_flagに等しいと推測される。サブブロックベースのマージMVP候補の最大数MaxNumSubblockMergeCandは、以下のように導出される。
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand (7-58)
MaxNumSubblockMergeCandの値は、1~5の範囲内である。
7.4.8.5 符号化ユニット構文
0に等しいpred_mode_flagは、現在の符号化ユニットがインター予測モードで符号化されることを規定する。pred_mode_flagが1に等しい場合、現在の符号化ユニットがイントラ予測モードで符号化されることを規定する。
pred_mode_flagが存在しない場合、次のように推測される。
-cbWidthが4に等しく、かつ、cbHeightが4に等しい場合、pred_mode_flagは1と等しいと推測される。
-そうでない場合、Iスライスを復号化する場合、pred_mode_flagは1に等しいと推測され、PまたはBスライスを復号化する場合、それぞれ0に等しいと推測される。
変数CuPredMode[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1、に対し、以下のように導出される。
-pred_mode_flagが0に等しい場合、CuPredMode[x][y]は、MODE_INTERに等しく設定される。
-そうでない場合(pred_mode_flagが1に等しい場合)、CuPredMode[x][y]はMODE_INTRAに等しく設定される。
1に等しいpred_mode_ibc_flagは、現在の符号化ユニットがIBC予測モードで符号化されることを規定する。pred_mode_ibc_flagが0に等しい場合、現在の符号化ユニットがIBC予測モードで符号化されないことを規定する。
pred_mode_ibc_flagが存在しない場合、次のように推測される。
-cu_skip_flag[x0][y0]が1に等しく、かつ、cbWidthが4に等しく、かつ、cbHeightが4に等しい場合、pred_mode_ibc_flagは1と等しいと推測される。
-そうでない場合、cbWidthおよびcbHeightの両方が128に等しい場合、pred_mode_ibc_flagは0に等しいと推測される。
-そうでない場合、Iスライスを復号化する場合、pred_mode_ibc_flagはsps_ibc_enabled_flagの値に等しいと推測され、PまたはBスライスを復号化する場合、それぞれ0と推測される。
pred_mode_ibc_flagが1に等しい場合、変数CuPredMode[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対してMODE_IBCと等しくなるように設定される。
general_merge_flag[x0][y0]は、現在の符号化ユニットにおけるインター予測パラメータを隣接するインター予測区間から推測するかどうかを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
general_merge_flag[x0][y0]が存在しない場合、次のように推測される。
-cu_skip_flag[x0][y0]が1に等しい場合、general_merge_flag[x0][y0]は1に等しいと推測される。
-そうでない場合、general_merge_flag[x0][y0]は0に等しいと推測される。
mvp_l0_flag[x0][y0]は、list0の動きベクトル予測子インデックスを規定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
mvp_l0_flag[x0][y0]が存在しない場合、0に等しいと推測される。
mvp_l1_flag[x0][y0]はmvp_l0_flagと同じ意味論を有し、l0とlist0がそれぞれl1とlist1に置き換えられている。
inter_pred_idc[x0][y0]は、表7-10に従って、list0、list1、または双方向予測を現在の符号化ユニットに使用するかどうかを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
Figure 0007460661000010
inter_pred_idc[x0][y0]が存在しない場合、PRED_L0に等しいと推測される。
7.4.8.7 マージデータ意味論
regular_merge_flag[x0][y0]が1に等しい場合、現在の符号化ユニットのインター予測パラメータを生成するために、通常のマージモードが使用されることを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
regular_merge_flag[x0][y0]が存在しない場合、次のように推測される。
-以下のすべての条件が真である場合、regular_merge_flag[x0][y0]は1に等しいと推測される。
-sps_mmvd_enabled_flagは0に等しい。
-general_merge_flag[x0][y0]は1に等しい。
-cbWidth*cbHeightは32に等しい。
-そうでない場合、egular_merge_flag[x0][y0]は0に等しいと推測される。
1に等しいmmvd_merge_flag[x0][y0]は、現在の符号化ユニットのインター予測パラメータを生成するために、動きベクトル差分を有するマージモードを使用することを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
mmvd_merge_flag[x0][y0]が存在しない場合、次のように推測される。
-以下のすべての条件が真である場合、mmvd_merge_flag[x0][y0]は1に等しいと推測される。
-sps_mmvd_enabled_flagは1に等しい。
-general_merge_flag[x0][y0]は1に等しい。
-cbWidth*cbHeightは32に等しい。
-egular_merge_flag[x0][y0]は0に等しい。
-そうでない場合、mmvd_merge_flag[x0][y0]は0に等しいと推測される。
mmvd_cand_flag[x0][y0]は、mmvd_distance_idx[x0][y0]とmmvd_direction_idx[x0][y0]から導出される動きベクトル差分にて、マージ候補リストの第1(0)の候補を使うか、第2(1)の候補を使うかを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
mmvd_cand_flag[x0][y0]が存在しない場合、0に等しいと推測される。
mmvd_distance_idx[x0][y0]は、表7-12で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
Figure 0007460661000011
mmvd_distance_idx[x0][y0]は、表7-13で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
Figure 0007460661000012
マージ+MVDオフセットMmvdOffset[x0][y0]の両成分は、以下のように導出される。
MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0] (7-124)
MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1] (7-125)
merge_subblock_flag[x0][y0]は、現在の符号化ユニットに対するサブブロックベースのインター予測パラメータを近傍のブロックから推測するかどうかを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。merge_subblock_flag[x0][y0]が存在しない場合、0に等しいと推測される。
merge_subblock_idx[x0][y0]は、サブブロックに基づくマージ候補リストのマージ候補インデックスを規定し、ここで、x0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_subblock_idx[x0][y0]が存在しない場合、0に等しいと推測される。
ciip_flag[x0][y0]は、現在の符号化ユニットに対して、インターピクチャマージとイントラピクチャ予測との組み合わせを適用するかどうかを規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
ciip_flag[x0][y0]が存在しない場合、0に等しいと推測される。
ciip_flag[x0][y0]が1に等しい場合、変数IntraPredModeY[x][y]は、x=xCb..xCb+cbWidth-1、およびy=yCb..yCb+cbHeight-1にて、INTRA_PLANARと等しく設定される。
変数MergeTriangleFlag[x0][y0]は、Bスライスを復号化する場合、現在の符号化ユニットの予測サンプルを生成するために三角形の形状に基づく動き補償を使用するかどうかを規定し、以下のように導出される。
-以下のすべての条件が真である場合、MergeTriangleFlag[x0][y0]は1に等しく設定される。
-sps_triangle_enabled_flagは1に等しい。
-slice_typeはBに等しい。
-general_merge_flag[x0][y0]は1に等しい。
-MaxNumTriangleMergeCandは2以上である。
-cbWidth*cbHeightは64以上である。
-egular_merge_flag[x0][y0]は0に等しい。
-mmvd_merge_flag[x0][y0]は0に等しい。
-merge_subblock_flag[x0][y0]は0に等しい。
-ciip_flag[x0][y0]は0に等しい。
-そうでない場合、MergeTriangleFlag[x0][y0]は0に等しい。
merge_triangle_split_dir[x0][y0]は、マージ三角形モードの分割方向を規定する。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_split_dir[x0][y0]が存在しない場合、0に等しいと推測される。
merge_triangle_idx0[x0][y0]は、三角形状ベースの動き補償候補リストの第1のマージ候補インデックスを規定し、ここで、x0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_idx0[x0][y0]が存在しない場合、0に等しいと推測される。
merge_triangle_idx1[x0][y0]は、三角形状ベースの動き補償候補リストの第2のマージ候補インデックスを規定し、ここで、x0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_idx1[x0][y0]が存在しない場合、0に等しいと推測される。
merge_idx[x0][y0]は、マージ候補リストのマージ候補インデックスを規定し、ここで、x0、y0は、ピクチャの左上の輝度サンプルに対する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_idx[x0][y0]が存在しない場合、次のように推測される。
-mmvd_merge_flag[x0][y0]が1に等しい場合、merge_idx[x0][y0]はmmvdmmvd_cand_flag[x0][y0]に等しいと推測される。
-そうでない場合(mmvd_merge_flag[x0][y0]が0に等しい)、merge_idx[x0][y0]は0に等しいと推測される。
2.2.4.4.1 復号化処理
いくつかの実施形態において、復号化処理は以下のように定義される。
8.5.2.2 マージモードに対する輝度動きベクトルの導出処理
この処理は、general_merge_flag[xCb][yCb]が1に等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvL0[0][0]およびmvL1[0][0]における輝度動きベクトル、
-参照インデックスrefIdxL0およびrefIdxL1、
-予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、
-双方向予測重みインデックスbcwIdx。
-マージ候補リストmergeCandList。
双方向予測重みインデックスbcwIdxは、0に等しく設定される。
動きベクトルmvL0[0][0]、mvL1[0]、参照インデックスrefIdxL0、refIdxL1、および予測利用フラグpredFlagLagL0[0][0]、predFlagL1[0][0]は、以下の順序ステップで導出される。
1.8.5.2.2節で規定された近傍の符号化ユニットからの空間的マージ候補の導出処理は、輝度符号化ブロックの位置(xCb,yCb)、輝度符号化ブロックの幅cbWidth、および輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagA、availableFlagB、availableFlagBおよびavailableFlagB、参照インデックスrefIdxLXA、refIdxLXA、refIdxLXB、refIdxLXBおよびrefIdxLXB、予測リスト利用フラグpredFlagLXA、predFlagLXA、predFlagLXB、predFlagLXBおよびpredFlagLXB、動きベクトルmvLXA、mvLXA、mvLXB、mvLXBおよびmvLXB(Xは0または1)、および双方向予測重みインデックスbcwIdxA、bcwIdxA、bcwIdxB、bcwIdxB、bcwIdxBである。
2.参照インデックスrefIdxLXCol(Xは0または1)および時間的マージ候補Colの双方向予測重みインデックスbcwIdxColは0に等しく設定される。
3.8.5.2.11節で規定された時間的輝度動きベクトル予測の導出処理は、輝度位置(xCb,yCb)、輝度符号化ブロック幅cbWidth、輝度符号化ブロック高さcbHeight、および変数refIdxL0Colを入力として呼び出され、出力は、可用性フラグavailabilityFlagL0Col、および時間的動きベクトルmvL0Colである。変数availableFlagCol、predFlagL0Col、およびpredFlagL1Colは、以下のように導出される。
availableFlagCol=availableFlagL0Col (8-263)
predFlagL0Col=availableFlagL0Col (8-264)
predFlagL1Col=0 (8-265)
4.slice_typeがBに等しい場合、8.5.2.11節で規定された時間的輝度動きベクトル予測の導出処理は、輝度位置(xCb,yCb)、輝度符号化ブロック幅cbWidth、輝度符号化ブロック高さcbHeight、および変数refIdxL1Colを入力として呼び出され、出力は、可用性フラグavailabilityFlagL1Col、および時間的動きベクトルmvL1Colである。変数availableFlagColおよびpredFlagL1Colは、以下のように導出される。
availableFlagCol=availableFlagL0Col||availableFlagL1Col (8-266)
predFlagL1Col=availableFlagL1Col (8-267)
5.マージ候補リストmergeCandListは、以下のように構成される。
i=0
if(availableFlagA
mergeCandList[i++]=A
if(availableFlagB
mergeCandList[i++]=B
if(availableFlagB
mergeCandList[i++]=B
if(availableFlagA
mergeCandList[i++]=A
if(availableFlagB
mergeCandList[i++]=B
if(availableFlagCol)
mergeCandList[i++]=Col (8-268)
6.変数numCurrMergeCand、およびnumOrigMergeCandは、mergeCandListにおけるマージ候補の数に等しく設定される。
7.numCurrMergeCandが(MaxNumMergeCand-1)よりも小さく、かつ、NumHmvpCandが0よりも大きい場合、以下が適用される。
-8.5.2.6節で規定されている履歴ベースのマージ候補の導出処理は、mergeCandListおよびnumCurrMergeCandを入力とし、修正されたmorgeCandListおよびnumCurrMergeCandを出力として呼び出される。
-numOrigMergeCandは、numCurrMergeCandに等しく設定される。
8.numCurrMergeCandがMaxNumMergeCandより小さく、かつ、1より大きい場合、以下が適用される。
-8.5.2.4節で規定されているペアワイズ平均マージ候補の導出処理は、mergeCandList、参照インデックスrefIdxL0NおよびrefIdxL1N、予測リスト利用フラグpredFlagL0NおよびpreDFlagL1N、mergeCandListにおけるすべての候補Nの動きベクトルmvL0NおよびmlvL1N、および、numCurrMergeCandを入力として呼び出され、出力は、mergeCandList、numCurrMergeCand、参照インデックスrefIdxL0avgCandおよびrefIdxL1avgCand、予測リスト利用フラグpredFlagL0avgCandおよびpredFlagL1avgCand、および、mergeCandListに追加される候補avgCandの動きベクトルmvL0avgCandおよびmvL1avgCandに割り当てられる。mergeCandListに追加される候補avgCandの双方向予測重みインデックスbcwIdxは、0に等しく設定される。
-numOrigMergeCandは、numCurrMergeCandに等しく設定される。
9.8.5.2.5節で規定されているゼロ動きベクトルマージ候補の導出処理は、mergeCandList、参照インデックスrefIdxL0NおよびrefIdxL1N、予測リスト利用フラグpredFlagL0NおよびpredFlagL1N、mergeCandListにおける全ての候補Nの動きベクトルmvL0NおよびmvL1N、および、numCurrMergeCandを入力として呼び出され、出力は、mergeCandList、numCurrMergeCand、参照インデックスrefIdxL0zeroCandおよびrefIdxL1zeroCand、予測リスト利用フラグpredFlagL0zeroCandおよびpredFlagL1zeroCand、およびmergeCandListに追加されるすべての新しい候補zeroCandの動きベクトルmvL0zeroCandおよびmvL1zeroCandに割り当てられる。mergeCandListに追加されるすべての新しい候補zeroCandの双方向予測重みインデックスbcwIdxは、0に等しく設定される。追加される候補の数numZeroMergeCandは、(numCurrMergeCand-numOrigMergeCand)に等しく設定される。numZeroMergeCandが0より大きい場合、mは0からnumZeroMergeCand-1までの範囲になる。
10.マージ候補リストmergeCandListにおける位置merge_idx[xCb][yCb]の候補をNとし(N=mergeCandList[merge_idx[xCb][yCb])、Xを0または1に置き換えることにより、以下の割り当てを行う。
refIdxLX=refIdxLXN (8-269)
predFlagLX[0][0]=predFlagLXN (8-270)
mvLX[0][0][0]=mvLXN[0] (8-271)
mvLX[0][0][1]=mvLXN[1] (8-272)
bcwIdx=bcwIdxN (8-273)
11.mmvd_merge_flag[xCb][yCb]が1に等しい場合、以下が適用される。
-8.5.2.7で規定されるようなマージ動きベクトル差分の導出処理は、輝度位置(xCb,yCb)、参照インデックスrefIdxL0、refIdxL1、および予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]を入力とし、動きベクトル差分mMvdL0およびmMvdL1を出力として呼び出される。
-動きベクトル差分mMvdLXは、Xが0および1である場合、マージ動きベクトルmvLXに以下のように加算される。
mvLX[0][0][0]+=mMvdLX[0] (8-274)
mvLX[0][0][1]+=mMvdLX[1] (8-275)
mvLX[0][0][0]=Clip3(-217,217-1,mvLX[0][0][0]) (8-276)
mvLX[0][0][1]=Clip3(-217,217-1,mvLX[0][0][1]) (8-277)
2.2.5 MMVD
いくつかの実施形態において、UMVE(Ultimate Motion Vector Expression、MMVDとしても知られる)が提供される。UMVEは、動きベクトル表現方法でスキップモードまたはマージモードのいずれかに使用される。
UMVEは、VVCにおける通常のマージ候補リストに含まれるものと同様に、マージ候補を再利用する。マージ候補の中から、ベース候補を選択することができ、動きベクトル表現方法によってさらに拡張される。
UMVEは、新しいMVD(Motion Vector Difference)表現方法を提供し、ここで、開始点、動きの大きさ、および動きの方向を使用してMVDを表す。
いくつかの実施形態において、マージ候補リストをそのまま使用することができる。しかし、UMVEの拡張のために、デフォルトのマージタイプ(MRG_TYPE_DEFAULT_N)の候補のみを考慮する。
ベース候補インデックスは、開始点を定義する。ベース候補インデックスは、リストにおける候補のうち、最良の候補を以下のように示す。
Figure 0007460661000013
ベース候補の数が1に等しい場合、ベース候補IDXは信号通知されない。
距離インデックスは、動きの大きさの情報である。距離インデックスは、開始点情報からの予め定義された距離を示す。予め定義された距離は、以下の通りである
Figure 0007460661000014
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、以下に示すように、4つの方向を表すことができる。
Figure 0007460661000015
スキップフラグまたはマージフラグを送信した直後に、UMVEフラグが信号通知される。スキップまたはマージフラグが真である場合、UMVEフラグが構文解析される。UMVEフラグが1に等しい場合、UMVE構文が構文解析される。しかし、1でない場合、AFFINEフラグが構文解析される。AFFINEフラグが1に等しい場合、すなわちAFFINEモードであるが、1でない場合、VTMのスキップ/マージモードのためにスキップ/マージインデックスが構文解析される。
UMVE候補に起因する追加のラインバッファは必要とされない。ソフトウェアのスキップ/マージ候補を直接ベース候補として使用されるためである。入力UMVEインデックスを使用して、動き補償の直前にMVの補完が決定される。このために長いラインバッファを保持する必要はない。
現在の共通テスト条件において、マージ候補リストにおける第1または第2のマージ候補のいずれかをベース候補として選択してもよい。
UMVEは、MMVD(Merge with MV Differences)としても知られている。
2.2.6 CIIP(Combined Intra-Inter Prediction)
いくつかの実施形態では、複数の仮説を生成する1つの方法として、結合されたイントラおよびインター予測を用いる複数の仮説予測が提案されている。
複数の仮説予測をイントラモードの改善に適用する場合、複数の仮説予測は、1つのイントラ予測と1つのマージインデックス予測とを組み合わせる。マージCUにおいて、フラグが真である場合、1つのフラグをマージモードのために信号通知し、イントラ候補リストから1つのイントラモードを選択する。輝度成分の場合、イントラ候補リストは、1つのイントラ予測モード、例えば平面モードのみから導出される。イントラ予測およびインター予測から予測ブロックに適用される重みは、2つの近傍のブロック(A1およびB1)の符号化モード(イントラまたは非イントラ)によって判定される。
2.2.7 サブブロックベースの技術のためのマージ
なお、非サブブロックマージ候補の通常のマージリストに加え、すべてのサブブロック関連動き候補を別個のマージリストに入れることが推薦される。
サブブロック関連動き候補を別個のマージリストに入れ、「サブブロックマージ候補リスト」とする。
一例において、サブブロックマージ候補リストは、ATMVP候補およびアフィンマージ候補を含む。
サブブロックマージ候補リストは、以下の順に候補を満たす。
1.ATMVP候補(おそらく利用可能であるか、または利用不可である)。
2.アフィンマージリスト(継承アフィン候補および構成アフィン候補を含む)
3.ゼロMVの4パラメータアフィンモデルとしてのパディング
2.2.7.1 ATMVP(別名、SbTMVP(Sub-block Temporal Motion Vector Predictor))
ATMVPの基本的な考えは、1つのブロックに対して複数の時間的動きベクトル予測子を導出することである。各サブブロックには、1つの動き情報のセットが割り当てられる。ATMVPマージ候補を生成する場合、ブロックレベル全体の代わりに、8×8レベルで動き補償を行う。
現在の設計において、ATMVPは、以下の2つのサブセクションにそれぞれ記載される2つのステップで、CU内のサブCUの動きベクトルを予測する。
2.2.7.1.1 初期化動きベクトルの導出
ここで、初期化された動きベクトルをtempMvとする。ブロックA1が利用可能であり、非イントラ符号化されている(例えば、インター符号化またはIBCモードで符号化されている)場合、初期化された動きベクトルを導出するために、以下が適用される。
-以下のすべての条件が真である場合、tempMvは、mvL1Aによって表される、リスト1からのブロックA1の動きベクトルに等しく設定される。
-リスト1の参照ピクチャインデックスは利用可能であり(-1ではない)、且つ、同一位置のピクチャと同じPOC値を有する(例えば、DiffPicOrderCnt(ColPic,RefPicList[1][refIdxL1Aに等しい)、
-すべての参照ピクチャは、現在のピクチャに比べてPOCが大きくない(例えば、DiffPicOrderCnt(aPic,currPic)は、現在のスライスのすべての参照ピクチャリストにおけるすべてのピクチャaPicに対して0以下である)、
-現在のスライスはBスライスに等しい、
-collocated_from_l0_flagは0に等しい。
-そうでない場合、以下のすべての条件が真の場合、tempMvは、mvL0Aによって表される、リスト0からのブロックA1の動きベクトルに等しく設定される。
-リスト0の参照ピクチャインデックスは利用可能である(-1に等しくない)、
-同一位置のピクチャと同じPOC値を有する(例えば、DiffPicOrderCnt(ColPic,RefPicList[0][refIdxL0A])は0に等しい)。
-そうでない場合、ゼロ動きベクトルが初期化されたMVとして使用される。
初期化された動きベクトルを有するスライスヘッダに信号通知される同一位置のピクチャにおいて、対応するブロック(必要に応じて一定の範囲にクリップされる、現在のブロックの中心位置と丸められたMV)が識別される。
ブロックがインター符号化されている場合、第2のステップに進む。そうでない場合、ATMVP候補は利用不可に等しく設定される。
2.2.7.1.2 サブCU動き導出
第2のステップは、現在のCUをサブCUに分割し、同一位置のピクチャにおける各サブCUに対応するブロックから各サブCUの動き情報を取得する。
サブCUのための対応するブロックがインターモードで符号化される場合、動き情報を使用して、従来のTMVP処理の場合と異ならない、同一位置のMVのための導出処理を呼び出すことによって、現在のサブCUの最終的な動き情報が導出される。基本的に、対応するブロックが単一予測または双方向予測のために対象リストXから予測される場合、動きベクトルが利用され、そうでない場合、単一または双方向予測のためにリストY(Y=1-X)から予測され、且つNoBackwardPredFlagが1に等しい場合、リストYのためのMVが利用される。そうでない場合、動き候補を見つけることができない。
初期化されたMVによって識別された同一位置のピクチャ内のブロックおよび現在のサブCUの位置がイントラ符号化されているかまたはIBC符号化されている場合、または上述したように動き候補を見出すことができない場合、以下がさらに適用される。
同一位置のピクチャRcolにおける動き領域を取り出すために使用される動きベクトルをMVcolとして表す。MVスケーリングの影響を最小限に抑えるために、MVcolを導出するために使用される空間的候補リストにおけるMVは、以下の方法にて選択される。候補MVの参照ピクチャが同一位置のピクチャである場合、このMVが選択され、スケーリングせずにMVcolとして使用される。そうでない場合、同一位置のピクチャに最も近い参照ピクチャを有するMVを選択し、スケーリングしてMVcolを導出する。
同一位置の動きベクトル導出処理のための例示的な復号化処理を以下に説明する。
8.5.2.12 同一位置の動きベクトルの導出処理
この処理への入力は以下の通りである。
-現在の符号化ブロックを規定する変数currCb、
-ColPicにて規定された同一位置のピクチャ内の同一位置の符号化ブロックを規定する変数colCb、
-ColPicによって規定された同一位置のピクチャの左上の輝度サンプルに対して、colCbによって規定された同一位置の輝度符号化ブロックの左上のサンプルを規定する輝度位置(xColCb,yColCb)、
-参照インデックスrefIdxLX、ここで、Xは0または1、
-サブブロック時間的マージ候補sbFlagを示すフラグ。
この処理の出力は以下の通りである。
-1/16小数サンプル精度での動きベクトル予測mvLXCol、
-可用性フラグavailableFlagLXCol。
変数currPicは、現在のピクチャを規定する。
配列predFlagL0Col[x]、mlvL0Col[x]、refIdxL0Col[x][y]は、それぞれ、ColPicで規定された同一位置のピクチャのPredFlagL0[x][y]、MvDmvrL0[x][y]、RefIdxL0[x][y]に等しく設定され、配列predFlagL1Col[x][y]、mvL1Col[x][y]、およびrefIdxL1Col[x][y]は、それぞれ、ColPicで規定された同一位置のピクチャのPredFlagL1[x][y]、MvDmvrL1[x][y]、およびRefIdxL1[x][y]に等しく設定される。
変数mvLXColおよびavailableFlagLXColは、以下のように導出される。
-colCbがイントラまたはIBC予測モードで符号化される場合、mvLXColの両成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
-そうでない場合、動きベクトルmvCol、参照インデックスrefIdxCol、および参照リスト識別子listColは、以下のように導出される。
-sbFlagが0に等しい場合、availableFlagLXColは1に等しく設定され、以下が適用される。
-predFlagL0Col[xColCb][yColCb]が0に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvL1Col[xColCb][yColCb]、refIdxL1Col[xColCb][yColCb]、およびL1に等しく設定される。
-そうでない場合、predFlagL0Col[xColCb][yColCb]が1に等しく、かつ、predFlagL1Col[xColCb][yColCb][yColCb]が0に等しい場合、mvCol、refxIdCol、listColは、それぞれ、mvL0Col[xColCb][yColCb]、refIdxL0Col[xColCb][yColCb]、およびL0に等しく設定される。
-そうでない場合(predFlagL0Col[xColCb][yColCb]が1に等しく、かつ、predFlagL1Col[xColCb][yColCb]が1に等しい)、以下の割り当てを行う。
-NoBackwardPredFlagが1に等しい場合、mvCol、refIdxCol、およびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]、およびLXに等しく設定される。
-そうでない場合、mvCol、refIdxCol、listColは、それぞれ、mvLNCol[xColCb][yColCb]、refIdxLNCol[xColCb][yColCb]、LNに等しく設定され、Nは、collocated_from_l0_flagの値である。
-そうでない場合(sbFlagは1に等しい)、以下が適用される。
-PredFlagLXCol[xColCb][yColCb]が1に等しい場合、mvCol、refxIdCol、およびlistColは、それぞれ、mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]、およびLXに等しく設定され、availableFlagLXColは1に等しく設定される。
-そうでない場合(PredFlagLXCol[xColCb][yColCb]が0に等しい)、以下が適用される。
-DiffPicOrderCnt(aPic,currPic)が、現在のスライスのすべての参照ピクチャリストaPicにおいて0以下であり、かつ、PredFlagLYCol[xColCb][yColCb]が1に等しい場合、mvCol、refxIdCol、およびlistColは、それぞれ、mvLYCol[xColCb][yColCb]、refIdxLYCol[xColCb][yColCb]、およびLYに等しく設定され、Yは!Xであり、Xは、この処理が呼び出されるXの値であり、availableFlagLXColは1に等しく設定される。
-mvLXColの両成分0に等しく設定され、availableFlagLXColは0に等しく設定される。
-availableFlagLXColがTRUEである場合、mvLXColおよびavailableFlagLXColは、以下のように導出される。
-LongTermRefPic(currPic,currCb,refIdxLX,LX)がLongTermRefPic(ColPic,colCb,refIdxCol,listCol)に等しくない場合、mvLXColの両成分は0に等しく設定され、availableFlagLXColは0に等しく設定される。
-そうでない場合、変数availableFlagLXColに1等しく設定され、refPicList[listCol][refIdxCol]は、ColPicにて規定された同一位置のピクチャにおける符号化ブロックcolbを含むスライスの参照ピクチャリストlistColにおける参照インデックスrefIdxColを有するピクチャに設定され、以下を適用する。
colPocDiff=DiffPicOrderCnt(ColPic,refPicList[listCol][refIdxCol]) (8-402)
currPocDiff=DiffPicOrderCnt(currPic,RefPicList[X][refIdxLX]) (8-403)
-8.5.2.15節で規定されるような同一位置の動きベクトルの時間的動きバッファ圧縮処理は、mvColを入力とし、修正されたmvColを出力として、呼び出される。
-RefPicList[X][refIdxLX]が長期参照ピクチャである場合、またはcolPocDiffがcurrPocDiffである場合、mvLXColは、以下のように導出される。
mvLXCol=mvCol (8-404)
-そうでない場合、mvLXColは、動きベクトルmvColのスケーリングされたバージョンとして、以下のように導出される。
tx=(16384+(Abs(td)>>1))/td (8-405)
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6) (8-406)
mvLXCol=Clip3(-131072,131071,(distScaleFactor*mvCol+128-(distScaleFactor*mvCol>=0))>>8)) (8-407)
ここで、tdおよびtbは、以下のように導出される。
td=Clip3(-128,127,colPocDiff) (8-408)
tb=Clip3(-128,127,currPocDiff) (8-409)
2.2.8 動き情報の改善
2.2.8.1 DMVR(Decoder-side Motion Vector Refinement)
双方向予測演算において、1つのブロック領域を予測するために、リスト0のMV(Motion Vector)およびリスト1のMVをそれぞれ使用して構成される双方向予測ブロックを組み合わせ、1つの予測信号を形成する。DMVR(Decoder-side Motion Vector Refinement)方法において、双方向予測の2つの動きベクトルをさらに改善する。
VVCにおけるDMVRに対して、図19に示すように、リスト0とリスト1の間をミラーリングすると仮定し、バイラテラルマッチングを行うことにより、MVを改善する。例えば、いくつかのMVD候補の中から最良のMVDを見出す。2つの参照ピクチャリストのMVを、MVL0(L0X,L0Y)、およびMVL1(L1X,L1Y)で表す。コスト関数(例えば、SAD)を最小化し得る、リスト0のための(MvdX,MvdY)によって表されるMVDを、最良のMVDとして定義する。SAD関数は、リスト0の参照ピクチャにおける動きベクトル(L0X+MvdX,L0Y+MvdY)によって導出されたリスト0の参照ブロックと、リスト1の参照ピクチャにおける動きベクトル(L1X-MvdX,L1Y-MvdY)によって導出されたリスト1の参照ブロックとの間のSADとして定義される。
動きベクトル改善処理は、2回反復されてもよい。各反復において、図20に示すように、最大6のMVD(整数画素精度)が2つのステップでチェックされてもよい。第1のステップにおいて、MVD(0,0)、(-1,0)、(1,0)、(0,-1)、(0,1)がチェックされる。第2のステップにおいて、MVD(-1,-1)、(-1,1)、(1,-1)、または(1,-1)のうちの1つが選択され、さらにチェックされてもよい。関数Sad(x,y)がMVD(x,y)のSAD値を返すとする。第2のステップにおいてチェックされた(MvdX,MvdY)で表されるMVDは、以下のように決定される。
MvdX=-1;
MvdY=-1;
If(Sad(1,0)<Sad(-1,0))
MvdX=1;
If(Sad(0,1)<Sad(0,-1))
MvdY=1;
第1の反復において、開始点は信号通知されたMVであり、第2の反復において、開始点は信号通知されたMVに第1の反復で選択された最良のMVDを加えたものである。DMVRは、1つの参照ピクチャが前のピクチャであり、他の参照ピクチャが後のピクチャであり、かつ、2つの参照ピクチャが、現在のピクチャからの同じピクチャオーダカウント距離を有する場合にのみ適用される。
DMVRの処理をさらに簡単にするために、いくつかの実施形態において、採用されたDMVR設計は、以下の主な特徴を有する。
-list0とlist1の間の(0,0)位置SADが閾値より小さい場合、早期終了とする。
-ある位置において、list0とlist1との間のSADが0である場合、早期終了とする。
-DMVR:W*H>=64&H>=8のブロックサイズ。ここで、WおよびHは、ブロックの幅および高さである。
-CUのサイズが16*16より大きいDMVRの場合、CUを16×16の複数のサブブロックに分割する。CUの幅または高さのみが16よりも大きい場合、CUは垂直または水平方向にのみ分割される。
-参照ブロックサイズ(W+7)*(H+7)(輝度の場合)。
-25ポイントのSADベースの整数画素検索(例えば、(+-)2改善検索範囲、単一ステージ)
-バイリニア補間ベースのDMVR
-「パラメータ誤差表面方程式」に基づくサブピクセル改善。この手順は、前回のMV改善の反復において、最小SADコストがゼロに等しくなく、かつ最良のMVDが(0,0)である場合にのみ行われる。
-参照ブロックパディングによる輝度/彩度MC(必要に応じて)。
-MCおよびTMVPにのみ使用される改善されたMV。
2.2.8.1.1 DMVRの使用
以下の条件がすべて真である場合、DMVRは有効にされてよい。
-SPSにおけるDMVR有効化フラグ(例えば、sp_dmvr_enabled_flag)が1に等しい。
-TPMフラグ、インターアフィンフラグ、サブブロックマージフラグ(ATMVPまたはアフィンマージ)、MMVDフラグがすべて0に等しい。
-マージフラグが1に等しい。
-現在のブロックは双方向予測され、リスト1における現在のピクチャと参照ピクチャとの間のPOC距離が、リスト0における参照ピクチャと現在のピクチャとの間のPOC距離に等しい。
-現在のCUの高さが8以上である。
-輝度サンプルの数(CU幅*高さ)が64以上である。
2.2.8.1.2 「パラメトリック誤差表面方程式」に基づくサブピクセル改善
この方法を以下にまとめる。
1.所与の反復において中心位置が最良のコスト位置である場合にのみ、パラメトリック誤差表面フィットを算出する。
2.中心位置コストと、中心からの(-1,0)、(0,-1)、(1,0)、(0,1)の位置におけるコストとを使用して、次式の2次元放物線誤差表面方程式を適合させる。
E(x,y)=A(x-x+B(y-y+C
ここで、(x,y)は、最小のコストを有する位置に対応し、Cは、最小コスト値に対応する。5つの未知数の5つの式を解くことによって、(x,y)を以下のように算出する。
=(E(-1,0)-E(1,0))/(2(E(-1,0)+E(1,0)-2E(0,0)))
=(E(0,-1)-E(0,1))/(2((E(0,-1)+E(0,1)-2E(0,0)))
(x,y)は、除算が行われる精度(例えば、何ビットの商が計算されるか)を調整することで、任意の必要なサブピクセル精度で算出することができる。1/16画素の精度を得るためには、商の絶対値を4ビットだけ算出する必要があり、これは、CUあたり2回の除算を必要とする高速シフト減算ベースの実装に適している。
3.算出された(x,y)を整数改善MVに加算し、サブピクセルの正確な改善差分MVを得る。
2.3 イントラブロックコピー
IBC(Intra Block Copy)、別名、現在のピクチャの参照は、HEVC-SCC(HEVC Screen Content Coding extensions)と現在のVVCテストモデル(VTM-4.0)に採用されている。IBCは、動き補償の概念をインターフレーム符号化からイントラフレーム符号化に拡張する。図21に示すように、現在のブロックは、IBCが適用される場合、同じピクチャ内の参照ブロックによって予測される。現在のブロックを符号化または復号化する前に、参照ブロックにおけるサンプルは既に再構成されていなければならない。IBCは、カメラでキャプチャされたほとんどのシーケンスに対してそれほど効率的ではないが、スクリーンコンテンツに対しては、有意な符号化利得を示す。その理由は、スクリーンコンテンツピクチャにおいて、アイコン、文字等の繰り返しパターンが多いためである。IBCは、これらの繰り返しパターン間の冗長性を有効に除去することができる。HEVC-SCCにおいて、インター符号化されたCU(Coding Unit)は、現在のピクチャをその参照ピクチャとして選択する場合、IBCを適用することができる。この場合、MVをBV(Block Vector)と改称し、BVは常に整数画素精度を有する。メインプロファイルHEVCに適合するように、現在のピクチャは、DPB(Decoded Picture Buffer)における「長期」参照ピクチャとしてマークされる。なお、同様に、複数のビュー/3D映像符号化規格において、ビュー間の参照ピクチャも「長期」参照ピクチャとしてマークされる。
BVがその参照ブロックを見つけた後、参照ブロックをコピーすることで予測を生成することができる。残差は、元の信号から参照画素を減算することによって得ることができる。そして、他の符号化モードと同様に、変換および量子化を適用することができる。
しかしながら、参照ブロックがピクチャの外にある場合、または現在のブロックと重複する場合、または再構成された領域の外にある場合、或いは何らかの制約によって制限された有効領域の外にある場合、画素値の一部または全部は規定されない。基本的に、このような問題に対処するために2つの解決策がある。1つは、このような状況、例えばビットストリーム適合性を許可しないことである。もう1つは、これらの未定義の画素値にパディングを適用することである。以下のサブセッションでは、解決策を詳細に説明する。
2.3.1 VVCテストモデル(VTM4.0)におけるIBC
現在のVVCテストモデル、例えば、VTM-4.0設計において、参照ブロック全体は現在のCTU(Coding Tree Unit)を有するべきであり、現在のブロックと重複しない。よって、参照または予測ブロックをパディングする必要がない。IBCフラグは、現在のCUの予測モードとして符号化される。このように、各CUに対して、MODE_INTRA、MODE_INTER、およびMODE_IBCという全部で3つの予測モードが存在する。
2.3.1.1 IBCマージモード
IBCマージモードにおいて、IBCマージ候補リストにおけるエントリを指すインデックスがビットストリームから構文解析される。IBCマージリストの構成は、以下のステップのシーケンスに従って要約することができる。
ステップ1:空間的候補の導出
ステップ2:HMVP候補の挿入
ステップ3:ペアワイズ平均候補の挿入
空間的マージ候補の導出において、図2に示す位置A,B,B,AおよびBにある候補の中から、最大4つのマージ候補が選択される。導出の順序はA、B、B、A、Bである。位置A、B、B、AのいずれかのPUが利用可能でない場合(例えば、別のスライスまたはタイルに属しているため)、またはIBCモードで符号化されていない場合にのみ、位置Bが考慮される。位置Aの候補を加えた後、残りの候補を挿入すると、冗長性チェックを受け、それにより、同じ動き情報を有する候補を確実にリストから排除でき、符号化効率を向上させることができる。
空間的候補を挿入した後、IBCマージリストサイズが依然として最大IBCマージリストサイズより小さい場合、HMVPテーブルからのIBC候補を挿入することができる。HMVP候補の挿入にあたり、冗長性チェックを行う。
最後に、ペアワイズ平均候補をIBCマージリストに挿入する。
マージ候補によって特定される参照ブロックがピクチャの外にある場合、または現在のブロックと重複する場合、または再構成された領域の外にある場合、或いは何らかの制約によって制限された有効領域の外にある場合、マージ候補は無効なマージ候補と呼ばれる。
なお、無効なマージ候補がIBCマージリストに挿入されてもよい。
2.3.1.2 IBC AMVPモード
IBC AMVPモードでは、IBC AMVPリストにおけるエントリを指すAMVPインデックスが、ビットストリームから構文解析される。IBC AMVPリストの構成は、以下のステップのシーケンスに従って要約することができる。
ステップ1:空間的候補の導出
-利用可能な候補が見つかるまで、A0、をチェックする。
-利用可能な候補が見つかるまで、B、B、Bをチェックする。
ステップ2:HMVP候補の挿入
ステップ3:ゼロ候補の挿入
空間的候補を挿入した後、IBC AMVPリストサイズが依然として最大IBC AMVPリストサイズより小さい場合、HMVPテーブルからのIBC候補が挿入されてもよい。
最後に、ゼロ候補がIBC AMVPリストに挿入される。
2.3.1.3 彩度IBCモード
現在のVVCにおいて、彩度IBCモードにおける動き補償は、サブブロックレベルで行われる。彩度ブロックは、複数のサブブロックに分割される。各サブブロックは、対応する輝度ブロックがブロックベクトルを有するかどうかを判定し、存在する場合、有効性を判定する。現在のVTMにはエンコーダ制約があり、現在の彩度CUにおけるすべてのサブブロックが有効な輝度ブロックベクトルを有するかどうかについて、彩度IBCモードをテストする。例えば、YUV420映像において、彩度ブロックはN×Mであり、そして、同一位置の輝度領域は2N×2Mである。彩度ブロックのサブブロックサイズは2×2である。彩度mv導出、次にブロックコピー処理を実行するには、いくつかのステップがある。
(1)彩度ブロックは、まず、(N>>1)*(M>>1)のサブブロックに分割される。
(2)左上のサンプルが(x,y)に配置されている各サブブロックは、(2x,2y)に配置されている同じ左上のサンプルを含んだ対応する輝度ブロックをフェッチする。
(3)エンコーダは、フェッチした輝度ブロックのブロックベクトル(bv)をチェックする。以下の条件のうちの1つを満たす場合、bvは無効であると見なされる。
a.対応する輝度ブロックのbvは存在しない。
b.bvによって識別される予測ブロックは、まだ再構成されていない。
c.bvで識別される予測ブロックは、現在のブロックと部分的にまたは完全に重複している。
(4)サブブロックのクロマ動きベクトルは、対応する輝度サブブロックの動きベクトルに設定される。
すべてのサブブロックが有効なbvを見つけた場合、エンコーダにおいてIBCモードが許可される。
2.3.2 IBCの最近の進捗
2.3.2.1 単一のBVリスト
いくつかの実施形態において、IBCにおけるマージモードおよびAMVPモードのためのBV予測子は、以下の要素からなる共通の予測子リストを共有する。
(1)2つの空間的に近傍の位置(P2のようにA1、B1)
(2)5つのHMVPエントリ
(3)デフォルトにてゼロベクトル
リストにおける候補の数は、スライスヘッダから導出される変数によって制御される。マージモードの場合、このリストの最初の6つのエントリまでが使用でき、AMVPモードの場合、このリストの最初の2つのエントリが使用できる。また、リストは共有マージリスト領域の要件に準拠している(SMR内で同じリストを共有)。
上述のBV予測子候補リストに加え、HMVP候補と既存のマージ候補(A1,B1)との間のプルーニング動作を簡素化することができる。簡素化した場合、第1のHMVP候補と空間的マージ候補とを比較するだけであるため、最大2回までのプルーニング動作でよい。
2.3.2.2 IBCのサイズ制限
いくつかの実施形態において、前回のVTMおよびVVCバージョンにおいて、現在のビットストリーム制約に加え、128×128のIBCモードを無効化するための構文制約を明示的に使用することができ、これにより、IBCフラグの存在がCUのサイズ<128×128に依存するようになる。
2.3.2.3 IBCの共有マージリスト
デコーダの複雑性を低減し、並列符号化をサポートするため、いくつかの実施形態において、小さなスキップ/マージ符号化されたCUを並列処理することを有効化するために、CU分割ツリーにおける1つの祖先ノードのすべての葉のCU(Coding Unit)に対して同じマージ候補リストを共有できる。祖先ノードをマージ共有ノードと呼ぶ。マージ共有ノードが葉のCUであるように見せかけて、マージ共有ノードにおいて共有マージ候補リストを生成する。
具体的には、以下を適用することができる。
-ブロックの輝度サンプルが32以下であり、2つの4×4の子ブロックに分割される場合、非常に小さなブロック(例えば、2つの隣接する4×4ブロック)間で共有マージリストが使用される。
-しかしながら、ブロックの輝度サンプルが32よりも大きい場合、分割の後、少なくとも1つの子ブロックが閾値(32)より小さく、この分割のすべての子ブロックは、同じマージリストを共有する(例えば、16×4または4×16の3分割、または4分割の8×8)。
このような制限は、IBCマージモードにのみ適用される。
3.実施形態が解決しようとする課題
1つのブロックはIBCモードで符号化されてもよい。しかしながら、ブロック内の異なるサブ領域は、異なるコンテンツを有してもよい。現在のフレーム内の前回符号化されたブロックとの相関をさらにどのように調べるかを検討する必要がある。
4.実施形態の例
本明細書において、IBC(Intra Block Copy)は、現在のIBC技術に限定されるものではなく、従来のイントラ予測方法を除いて、現在のスライス/タイル/ブリック/ピクチャ/他の映像ユニット(例えば、CTU行)内の参照サンプルを使用する技術として解釈されてもよい。
上述した問題を解決するために、サブブロックベースのIBC(sbIBC)符号化方法が提案される。sbIBCにおいて、現在のIBC符号化された映像ブロック(例えば、CU/PU/CB/PB)は、複数のサブブロックに分割される。各々のサブブロックは、映像ブロックのサイズより小さいサイズを有していてもよい。複数のサブブロックからのサブブロックごとに、映像コーダは、現在のピクチャ/スライス/タイル/ブリック/タイルグループにおけるそれぞれのサブブロックのための参照ブロックを識別してもよい。映像コーダは、識別された参照ブロックの動きパラメータをそれぞれのサブブロックに使用し、それぞれのサブブロックの動きパラメータを判定してもよい。
また、IBCは、単一予測符号化ブロックにのみ適用されることに限定されない。双方向予測は、現在のピクチャである2つの参照ピクチャの両方にてサポートされてもよい。代替的に、現在のピクチャからの1つと、異なるピクチャからの他の1つとの双方向予測がサポートされてもよい。さらに別の例では、複数の仮説が適用されてもよい。
以下に列記されるものは、一般的な概念を説明するための例であると考えられるべきである。これらの技術は狭い意味で解釈されるべきではない。さらに、これらの技術は、任意の方法で組み合わせることができる。近傍のブロックA0、A1、B0、B1、B2が図2に示されている。
1.sbIBCにおいて、M×Nに等しいサイズの1つのブロックを2つ以上のサブブロックに分割してもよい。
a.一例において、サブブロックのサイズは、L×K、例えば、L=K=4に固定される。
b.一例において、サブブロックのサイズは、最小符号化ユニット/予測ユニット/変換ユニット/動き情報記憶域に対するユニットに固定される。
c.一例において、1つのブロックは、異なるサイズまたは等しいサイズの複数のサブブロックに分割されてもよい。
d.一例において、サブブロックサイズの指示が信号通知されてもよい。
e.一例において、サブブロックのサイズの指示は、例えば、ブロック寸法に従って、ブロックごとに変更されてもよい。
f.一例において、サブブロックのサイズは、(N1×minW)×(N2×minH)の形式でなければならず、ここで、minW×minHは、最小符号化ユニット/予測ユニット/変換ユニット/動き情報記憶域に対するユニットを表し、N1およびN2は、正の整数である。
g.一例において、サブブロック寸法は、カラーフォーマットおよび/または色成分に依存してもよい。
i.例えば、異なる色成分のサブブロックサイズは異なってもよい。
1)代替的に、異なる色成分のサブブロックサイズは同じであってもよい。
ii.例えば、カラーフォーマットが4:2:0である場合、輝度成分の2L×2Kのサブブロックは、彩度成分のL×Kのサブブロックに対応してよい。
1)代替的に、カラーフォーマットが4:2:0である場合、輝度成分の4つの2L×2Kのサブブロックは、彩度成分の2L×2Kのサブブロックに対応してよい。
iii.例えば、カラーフォーマットが4:2:2である場合、輝度成分の2L×2Kのサブブロックは、彩度成分の2L×Kのサブブロックに対応してよい。
1)代替的に、カラーフォーマットが4:2:2である場合、輝度成分の2つの2L×2Kのサブブロックは、彩度成分の2L×2Kのサブブロックに対応してよい。
iv.例えば、カラーフォーマットが4:4:4である場合、輝度成分の2L×2Kのサブブロックは、彩度成分の2L×2Kのサブブロックに対応してよい。
h.一例において、第1の色成分のサブブロックのMVは、第2の色成分の1つの対応するサブブロックまたは複数の対応するサブブロックから導出されてもよい。
i.例えば、第1の色成分のサブブロックのMVは、第2の色成分の複数の対応するサブブロックの平均MVとして導出されてもよい。
ii.さらに、代替的に、単一のツリーを利用する場合、上記方法を適用してもよい。
iii.さらに、代替的に、上記方法は、特定のブロックサイズ、例えば4×4の彩度ブロック対しても適用されてよい。
i.一例において、サブブロックのサイズは、IBCマージ/AMVPモードなどの符号化モードに依存してもよい。
j.一例において、サブブロックは、三角形/くさび形などの非長方形であってもよい。
2.初期化された動きベクトル(initMVにて示す)を用いた対応する参照ブロックの識別、および参照ブロックに従うサブCUのための1つまたは複数の動きベクトルの導出を含む2つのステージを使用して、少なくとも1つの参照ピクチャが現在のピクチャであるサブCUの動き情報を取得する。
a.一例において、参照ブロックは、現在のピクチャ内にあってもよい。
b.一例において、参照ブロックは、参照ピクチャ内にあってもよい。
i.例えば、同一位置の参照ピクチャ内にあってもよい。
ii.例えば、同一位置のブロックまたは同一位置のブロックの近傍のブロックの動き情報を使用して識別される参照ピクチャ内にあってよい。
initMV(vx,vy)の設定に関するステージ1.a
c.一例において、initMVは、現在のブロックまたは現在のサブブロックの1つまたは複数の近傍のブロック(隣接または非隣接)から導出されてもよい。
i.近傍のブロックは、同じピクチャ内の1つであってもよい。
1)代替的に、近傍のブロックは、参照ピクチャ内の1つであってもよい。
a.例えば、近傍のブロックは、同一位置の参照ピクチャ内にあってもよい。
b.例えば、近傍のブロックは、同一位置のブロックまたは同一位置のブロックの近傍のブロックの動き情報を使用して識別されてもよい。
ii.一例において、initMVは、近傍のブロックZから導出されてもよい。
1)例えば、initMVは、近傍のブロックZに格納されたMVに等しく設定されてもよく、例えば、近傍のブロックZは、ブロックA1であってもよい。
iii.一例において、initMVは、順にチェックされた複数のブロックから導出されてもよい。
1)一例において、チェックされたブロックからの参照ピクチャとしての現在のピクチャに関連付けられている第1の識別された動きベクトルを、initMVに設定してもよい。
d.一例において、initMVは、動き候補リストから導出されてもよい。
i.一例において、initMVは、IBC候補リストにおけるk番目(例えば、1番目)の候補から導出されてもよい。
1)一例において、IBC候補リストは、マージ/AMVP候補リストである。
2)一例において、異なる空間的に近傍のブロックを使用する等、既存のIBCマージ候補リスト構成処理とは異なるIBC候補リストを使用してもよい。
ii.一例において、initMVは、IBC HMVPテーブルにおけるk番目(例えば1番目の候補)から導出されてもよい。
e.一例において、現在のブロックの位置に基づいて導出されてもよい。
f.一例において、現在のブロックの寸法に基づいて導出されてもよい。
g.一例において、デフォルト値に設定されてもよい。
h.一例において、initMVの指示は、タイル/スライス/ピクチャ/ブリック/CTU行/CTU/CTB/CU/PU/TU等のような映像ユニットレベルで信号通知されてもよい。
i.初期のMVは、現在のブロック内の2つの異なるサブブロックで異なってもよい。
j.初期のMVをどのように導出するかは、ブロックごとに、タイルごとに、スライスごとに、などにて変化させてよい。
initMVを使用したサブCUの対応する参照ブロックの識別に関するステージ1.b
k.一例において、initMVは、まず1画素の整数精度に変換され、変換されたMVは、サブブロックの対応するブロックを識別するために使用されてもよい。変換されたMVを(vx’,vy’)にて示す。
i.一例において、(vx,vy)がF画素間精度である場合、(vx’,vy’)にて示される変換されたMVは、(vx*F,vy*F)に設定されてもよい(例えば、F=2または4)。
ii.代替的に、(vx’,vy’)は、直接(vx,vy)に等しく設定される。
l.1つのサブブロックの左上の位置を(x,y)とし、サブブロックのサイズをK×Lとする。サブブロックの対応するブロックは、座標(x+offsetX+vx’,y+offsetY+vy’)をカバーするCU/CB/PU/PBに等しく設定され、offsetXおよびoffsetYを使用して、現在のサブブロックに対する選択された座標を示す。
i.一例において、offsetXおよび/またはoffsetYは、0に等しく設定される。
ii.一例において、offsetXは、(L/2)または(L/2+1)または(L/2-1)に等しく設定されてもよく、ここで、Lは、サブブロックの幅であってもよい。
iii.一例において、offsetYは、(K/2)または(K/2+1)または(K/2-1)に等しく設定されてもよく、ここで、Kはサブブロックの高さであってもよい。
iv.代替的に、水平および/または垂直オフセットは、ピクチャ/スライス/タイル/ブリック境界/IBC参照領域等の範囲にさらにクリップされてもよい。
識別された対応する参照ブロックの動き情報を使用したサブブロックの動きベクトル(subMV(subMVx,subMVy)にて示される)の導出に関するステージ2
m.サブブロックのサブMVは、対応するブロックの動き情報から導出される。
i.一例において、対応するブロックが現在のピクチャを指す動きベクトルを有する場合、subMVはMVに等しく設定される。
ii.一例において、対応するブロックが現在のピクチャを指す動きベクトルを有する場合、subMVは、MVにinitMVを加えたものに等しく設定される。
n.導出されたsubMVは、所与の範囲にさらにクリップされてもよいし、IBC参照領域を指していることを確認するためにクリップされてもよい。
o.適合ビットストリームにおいて、導出されたsubMVは、サブブロックのためのIBCの有効なMVでなければならない。
3.サブブロック動きベクトルを有する1つまたは複数のIBC候補を生成してもよく、これをサブブロックIBC候補として示してもよい。
4.サブブロックIBC候補は、ATMVP、アフィンマージ候補を含むサブブロックマージ候補に、挿入されてもよい。
a.一例において、サブブロックIBC候補は、他のすべてのサブブロックマージ候補の前に追加されてもよい。
b.一例において、サブブロックIBC候補は、ATMVP候補の後に追加されてもよい。
c.一例において、サブブロックIBC候補は、継承されたアフィン候補または構成されたアフィン候補の後に追加されてもよい。
d.一例において、サブブロックIBC候補は、IBCマージ/AMVP候補リストに追加されてもよい。
i.代替的に、追加するかどうかは、現在のブロックのモード情報に基づいてよい。例えば、IBC AMVPモードである場合、追加されなくてもよい。
e.どの候補リストを追加するかは、例えば、デュアルツリーまたはシングルツリーなど、パーティション構造に基づいてよい。
f.代替的に、複数のサブブロックIBC候補は、サブブロックマージ候補に挿入されてもよい。
5.IBCサブブロック動き(例えば、AMVP/マージ)候補リストは、少なくとも1つのサブブロックIBC候補で構成されてもよい。
a.代替的に、例えば、異なる初期化されたMVを使用して、1つまたは複数のサブブロックIBC候補は、IBCサブブロックマージ候補に挿入されてもよい。
b.さらに、代替的に、IBCサブブロック動き候補リストを構成するか、または既存のIBC AMVP/マージ候補リストを構成するかは、インジケータによって信号通知されてもよく、またはオンザフライで導出されてもよい。
c.さらに、代替的に、現在のブロックがIBCマージモードで符号化されている場合、IBCサブブロックマージ候補リストへのインデックスが信号通知されてもよい。
d.さらに、代替的に、現在のブロックがIBC AMVPモードで符号化されている場合、IBCサブブロックAMVP候補リストへのインデックスが信号通知されてもよい。
i.さらに、代替的に、IBC AMVPモードのための信号通知/導出されたMVDは、1つまたは複数のサブブロックに適用されてもよい。
6.サブブロックの参照ブロックとサブブロックとは、同じ色成分に属してもよい。
同じブロック内の異なるサブブロックに適用される他のツールを混在させて使用することによるsbIBCの拡大
7.1つのブロックは、少なくとも1つをIBCで符号化し、少なくとも1つをイントラモードで符号化した複数のサブブロックに分割されてもよい。
a.一例において、サブブロックの場合、動きベクトルは導出されなくてもよい。代わりに、サブブロックのために、1つまたは複数のイントラ予測モードを導出してもよい。
b.代替的に、パレットモードまたは/およびパレットテーブルが導出されてもよい。
c.一例において、ブロック全体のために1つのイントラ予測モードが導出されてもよい。
8.1つのブロックは、イントラモードで符号化されたすべてのサブブロックを有する複数のサブブロックに分割されてもよい。
9.1つのブロックは、パレットモードで符号化されたすべてのサブブロックを有する複数のサブブロックに分割されてもよい。
10.1つのブロックは、IBCモードで符号化された少なくとも1つのサブブロックと、パレットモードで符号化された少なくとも1つのサブブロックとを有する複数のサブブロックに分割されてもよい。
11.1つのブロックは、イントラモードで符号化された少なくとも1つのサブブロックと、パレットモードで符号化された少なくとも1つのサブブロックとを有する複数のサブブロックに分割されてもよい。
12.1つのブロックは、IBCモードで符号化された少なくとも1つのサブブロックと、インターモードで符号化された少なくとも1つのサブブロックとによって、複数のサブブロックに分割されてもよい。
13.1つのブロックは、イントラモードで符号化された少なくとも1つのサブブロックと、インターモードで符号化された少なくとも1つのサブブロックとを有する複数のサブブロックに分割されてもよい。
他のツールとのインタラクション
14.上記方法の1つまたは複数を適用する場合、IBC HMVPテーブルは更新されなくてもよい。
a.代替的に、IBC符号化されたサブ領域のための動きベクトルのうちの1つまたは複数を使用して、IBC HMVPテーブルを更新してもよい。
15.上記方法の1つまたは複数を適用する場合、非IBC HMVPテーブルは更新されなくてもよい。
b.代替的に、インター符号化されたサブ領域のための動きベクトルのうちの1つまたは複数を使用して、非IBC HMVPテーブルを更新してもよい。
16.インループフィルタリング処理(例えば、デブロック手順)は、上記方法の使用に依存してもよい。
a.一例において、上記方法のうちの1つまたは複数が適用される場合、サブブロック境界がフィルタリングされてもよい。
a.代替的に、上記方法のうちの1つまたは複数が適用される場合、サブブロック境界がフィルタリングされてもよい。
b.一例において、上記方法で符号化されたブロックは、従来のIBC符号化されたブロックと同様に扱われてもよい。
17.上述した方法の1つまたは複数で符号化されたブロックに対して、特定の符号化方法(例えば、サブブロック変換、アフィン動き予測、多重参照ラインのイントラ予測、行列ベースのイントラ予測、対称MVD符号化、MVDデコーダ側動き導出/改善によるマージ、双方向最適フロー、縮小セカンダリ変換、多重変換セット等)が無効にされてよい。
18.上述した方法および/またはサブブロックのサイズの使用の指示は、シーケンス/ピクチャ/スライス/タイルグループ/タイル/ブリック/CTU/CTB/CU/PU/TU/他の映像ユニットレベルで信号通知されてもよく、またはオンザフライで導出されてもよい。
a.一例において、上記方法の1つまたは複数は、特殊IBCモードとして扱われてもよい。
i.さらに、代替的に、1つのブロックがIBCモードとして符号化される場合、従来の全ブロックに基づくIBC方法またはsbIBCを使用することのさらなる指示が信号通知または導出されてもよい。
ii.一例において、後続のIBC符号化されたブロックは、現在のsbIBC符号化されたブロックの動き情報をMV予測子として使用してもよい。
1.代替的に、後続のIBC符号化されたブロックは、現在のsbIBC符号化ブロックの動き情報をMV予測子として利用することが許可されなくてもよい。
b.一例において、sbIBCは、動き候補リストへの候補インデックスによって示されてもよい。
i.一例において、特定の候補インデックスは、sbIBC符号化されたブロックに割り当てられる。
c.一例において、IBC候補は、2つのカテゴリに分類されてもよい、すなわち、1つは全体ブロック符号化用であり、もう1つはサブブロック符号化用である。1つのブロックがsbIBCモードで符号化されるかどうかは、IBC候補のカテゴリに依存してもよい。
ツールの使用
19.上記方法を適用するかどうかおよび/またはどのように適用するかは、以下の情報に依存してもよい。
a.DPS/SPS/VPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/LCU(Largest Coding Unit)/CU(Coding Unit)/LCU行/LCUグループ/TU/PUブロック/映像符号化ユニットにて信号通知されたメッセージ
b.CU/PU/TU/ブロック/映像符号化ユニットの位置
c.現在のブロックおよび/またはその近傍のブロックのブロック寸法
d.現在のブロックおよび/またはその近傍のブロックのブロック形状
e.現在のブロックおよび/またはその近傍のブロックのイントラモード
f.近傍のブロックの動き/ブロックベクトル
g.カラーフォーマットの指示(例えば、4:2:0、4:4:4)
h.符号化ツリー構造
i.スライス/タイルグループのタイプおよび/またはピクチャのタイプ
j.色成分(例えば、彩度成分または輝度成分にのみ適用されてもよい)
k.時間層ID
l.規格のプロファイル/レベル/層
マージリスト構成処理とIBC使用に関する考え方
20.IBCモードは、インター符号化されたピクチャ/スライス/タイルグループ/タイルにおけるブロックのためのインター予測モードとともに使用してもよい。
a.一例において、IBC AMVPモードの場合、現在のピクチャと現在のピクチャと同一でない参照ピクチャ(時間的参照ピクチャとして示される)との両方から現在のブロックが予測されたかどうかを示すように、構文要素が信号通知されてよい。
i.さらに、代替的に、現在のブロックが時間的参照ピクチャからも予測される場合、どの時間的参照ピクチャが使用されているか、およびその関連するMVPインデックス、MVD、MV精度等を示すように、構文要素が信号通知されてもよい。
ii.一例において、IBC AMVPモードの場合、1つの参照ピクチャリストは、現在のピクチャのみを含んでもよく、他の参照ピクチャリストは、時間的参照ピクチャのみを含んでもよい。
b.一例において、IBCマージモードの場合、動きベクトルおよび参照ピクチャは、近傍のブロックから導出されてもよい。
i.例えば、近傍のブロックが現在のピクチャのみから予測される場合、近傍のブロックから導出された動き情報は、現在のピクチャのみを参照してもよい。
ii.例えば、現在のピクチャおよび時間的参照ピクチャの両方から近傍のブロックが予測される場合、導出された動き情報は、現在のピクチャおよび時間的参照ピクチャの両方を参照してもよい。
1)代替的に、導出された動き情報は、現在のピクチャのみを参照するものであってもよい。
iii.例えば、近傍のブロックが時間的参照ピクチャのみから予測される場合、IBCマージ候補を構成する際に、「無効」または「利用不可」と見なしてよい。
c.一例において、固定重み係数は、双方向予測のために、現在のピクチャからの参照ブロックと、時間的参照ピクチャからの参照ブロックとに割り当てられてもよい。
i.さらに、代替的に、重み係数が信号通知されてもよい。
21.動き候補リスト構成処理(例えば、通常のマージリスト、IBCマージ/AMVPリスト、サブブロックマージリスト、IBCサブブロック候補リスト)および/またはHMVPテーブルを更新するかどうか/HMVPテーブルをどのように更新するかは、ブロック寸法および/またはマージの共有条件に依存してもよい。ブロックの幅および高さをそれぞれWおよびHとする。条件Cは、ブロック寸法および/または符号化された情報に依存してもよい。
a.動き候補リスト構成処理(例えば、通常のマージリスト、IBCマージ/AMVPリスト、サブブロックマージリスト、IBCサブブロック候補リスト)および/またはHMVPテーブルをどのように更新するかは、条件Cに依存してもよい。
b.一例において、条件Cは、現在のブロックおよび/またはその近傍(隣接または非隣接)のブロックの符号化された情報に依存してもよい。
c.一例において、条件Cは、マージ共有条件に依存してもよい。
d.一例において、条件Cは、現在のブロックのブロック寸法、および/または、近傍の(隣接または非隣接の)ブロックのブロック寸法、および/または、現在のブロックおよび/または近傍のブロックの符号化モードに依存してもよい。
e.一例において、条件Cが満たされる場合、空間的マージ候補の導出はスキップされる。
f.一例において、条件Cが満たされる場合、空間的に近傍の(隣接または非隣接)ブロックからの候補の導出はスキップされる。
g.一例において、条件Cが満たされる場合、特定の空間的に近傍の(隣接または非隣接)ブロック(例えば、ブロックB2)からの候補の導出はスキップされる。
h.一例において、条件Cが満たされる場合、HMVP候補の導出はスキップされる。
i.一例において、条件Cが満たされる場合、ペアワイズマージ候補の導出はスキップされる。
j.一例において、条件Cが満たされる場合、最大プルーニング動作の数は低減されるか、または0に設定される。
i.さらに、代替的に、空間的マージ候補間のプルーニング動作は削減されてもよいし、削除されてもよい。
ii.さらに、代替的に、HMVP候補と他のマージ候補との間のプルーニング動作は削減されてもよいし、削除されてもよい。
k.一例において、条件Cが満たされる場合、HMVP候補の更新はスキップされる。
i.一例において、HMVP候補は、プルーニングされることなく、動きリストに直接追加されてもよい。
l.一例において、条件Cが満たされる場合、デフォルト動き候補(例えば、IBCマージ/AVMPリストにおけるゼロ動き候補)は追加されない。
m.一例において、条件Cが満たされる場合、異なるチェック順(例えば、最後から最初への代わりに、最初から最後へ)および/またはチェック対象の/追加される異なる数HMVP候補。
n.一例において、条件Cは、W*Hが閾値(例えば、1024)以上の場合に満たされてもよい。
o.一例において、条件Cは、Wおよび/またはHが閾値(例えば、32)以上の場合に満たされてもよい。
p.一例において、条件Cは、Wが閾値(例えば、32)以上の場合に満たされてもよい。
q.一例において、条件Cは、Hが閾値(例えば、32)以上の場合に満たされてもよい。
r.一例において、条件Cは、W*Hが閾値(例えば、1024)以上であり、かつ、現在のブロックが、IBC AMVPおよび/またはマージモードで符号化される場合に満たされてもよい。
s.一例において、条件Cは、W*Hが閾値(例えば、16または32または64)以下であり、かつ、現在のブロックがIBC AMVPおよび/またはマージモードで符号化されている場合に満たされてもよい。
i.さらに、代替的に、条件Cが満たされる場合、IBC動きリスト構成処理は、空間的に近傍のブロック(例えば、A1、B1)からの候補およびデフォルトの候補を含んでもよい。すなわち、HMVP候補の挿入はスキップされる。
ii.さらに、代替的に、条件Cが満たされる場合、IBC動きリスト構成処理は、IBC HMVPテーブルのHMVP候補からの候補およびデフォルトの候補を含んでもよい。すなわち、空間的に近傍のブロックからの候補の挿入はスキップされる。
iii.さらに、代替的に、条件Cが満たされたブロックを復号化した後、IBC HMVPテーブルの更新がスキップされる。
iv.代替的に、以下の場合のうちの1つ/一部/全部が真である場合、条件Cは満たされてもよい。
1)W*HがT1(例えば、16)以下であり、かつ、現在のブロックがIBC AMVPおよび/またはマージモードで符号化されている場合。
2)WがT2に等しく、かつ、HがT3に等しい(例えば、T2=4,T3=8)場合、その上側のブロックは利用可能であり、サイズはA×Bに等しく、現在のブロックとその上側のブロックの両方は、特定のモードで符号化される。
a.代替的に、WがT2に等しく、かつ、HがT3に等しい(例えば、T2=4,T3=8)場合、その上側のブロックは利用可能であり、同じCTUにあり、サイズはA×Bに等しく、現在のブロックとその上側のブロックの両方は、同じモードで符号化される。
b.代替的に、WがT2に等しく、かつ、HがT3に等しい(例えば、T2=4,T3=8)場合、その上側のブロックは利用可能であり、サイズはA×Bに等しく、現在のブロックとその上側のブロックの両方は、同じモードで符号化される。
c.代替的に、WがT2に等しく、かつ、HがT3に等しい(例えば、T2=4,T3=8)場合、その上側のブロックは利用不可である。
d.代替的に、WがT2に等しく、かつ、HがT3に等しい(例えば、T2=4,T3=8)場合、その上側のブロックは利用不可であるか、または上側のブロックが現在のCTUの外側にある。
3)WがT4に等しく、かつ、HがT5に等しい(例えば、T4=8,T5=4)場合、その左側のブロックは利用可能であり、サイズはA×Bに等しく、現在のブロックおよびその左側のブロックの両方は、特定のモードで符号化される。
a.代替的に、WがT4に等しく、かつ、HがT5に等しい(例えば、T4=8,T5=4)場合、その左側のブロックは利用不可である。
4)W*HがT1(例えば、32)より大きくない場合、現在のブロックは、IBC AMVPおよび/またはマージモードで符号化され、その上側および左側の近傍のブロックの両方が利用可能であり、サイズはA×Bに等しく、特定のモードで符号化される。
a.W*HがT1(例えば、32)より大きくない場合、現在のブロックは、特定のモードで符号化され、その左側の近傍のブロックは利用可能であり、サイズはA×Bであり、IBC符号化され、その上側の近傍のブロックは利用可能であり、同じCTU内であり、サイズはA×Bに等しく、同じモードで符号化される。
b.W*HがT1より大きくない(例えば、32)場合、現在のブロックは、特定のモードで符号化され、その左側の近傍のブロックは利用不可であり、その上側の近傍のブロックは利用可能であり、同じCTU内であり、サイズはA×Bに等しく、同じモードで符号化される。
c.W*HがT1より大きくない(例えば、32)場合、現在のブロックは、特定のモードで符号化され、その左側の近傍のブロックは利用不可であり、その上側の近傍のブロックは利用不可である。
d.W*HがT1(例えば、32)より大きくない場合、現在のブロックは特定のモードで符号化され、その左側の近傍のブロックは利用可能であり、サイズはA×Bに等しく、同じモードで符号化され、その上側の近傍のブロックは利用不可である。
e.W*HがT1(例えば、32)より大きくない場合、現在のブロックは特定のモードで符号化され、その左側の近傍のブロックは利用不可であり、その上側の近傍のブロックは利用不可であるか、または現在のCTUの外側にある。
f.W*HがT1(例えば、32)より大きくない場合、現在のブロックは特定のモードで符号化され、その左側の近傍のブロックは利用可能であり、サイズはA×Bに等しく、同じモードで符号化され、その上側の近傍のブロックは利用不可であるか、または現在のCTUの外側にある。
5)上記例において、「特定のモード」とは、IBCモードである。
6)上記例において、「特定のモード」とは、インターモードである。
7)上記例において、「A×B」は、4×4に設定されてもよい。
8)上記例において、「A×Bである近傍のブロックサイズ」は、「近傍のブロックサイズがA×B以下である、またはA×B以上である」に置き換えられてもよい。
9)上記例において、上側および左側の近傍のブロックは、空間的マージ候補の導出のためにアクセスされる2つのブロックである。
a.一例において、現在のブロックにおける左上のサンプルの座標が(x,y)であり、左のブロックが(x-1,y+H-1)をカバーするものであると仮定する。
b.一例において、現在のブロックにおける左上のサンプルの座標が(x,y)であり、左のブロックが(x+W-1,y-1)をカバーするものであると仮定する。
t.上述した閾値は、予め定義されてもよく、または信号通知されてもよい。
i.さらに、代替的に、閾値は、ブロックの符号化情報、例えば符号化モードに依存してもよい。
u.一例において、条件Cは、現在のブロックが共有ノード下にあり、現在のブロックがIBC AMVPおよび/またはマージモードで符号化されている場合に満たされる。
i.さらに、代替的に、条件Cが満たされる場合、IBC動きリスト構成処理は、空間的に近傍のブロック(例えば、A1,B1)からの候補およびデフォルトの候補を含んでもよい。すなわち、HMVP候補の挿入はスキップされる。
ii.さらに、代替的に、条件Cが満たされる場合、IBC動きリスト構成処理は、IBC HMVPテーブルのHMVP候補からの候補およびデフォルトの候補を含んでもよい。すなわち、空間的に近傍のブロックからの候補の挿入はスキップされる。
iii.さらに、代替的に、条件Cが満たされたブロックを復号化した後、IBC HMVPテーブルの更新がスキップされる。
v.一例において、条件Cは、ブロックの符号化された情報に従って等、適応的に変更されてもよい。
i.一例において、条件Cは、符号化モード(IBCモードまたは非IBCモード)、ブロック寸法に基づいて定義されてもよい。
w.上記方法を適用するかどうかは、ブロックの符号化情報、例えば、IBC符号化ブロックであるかどうかに依存してもよい。
i.一例において、ブロックがIBC符号化される場合、上記方法が適用されてもよい。
IBC動きリスト
22.IBC HMVPテーブルにおける動き候補は、1/16画素精度の代わりに整数画素精度で記憶されることが提案される。
a.一例において、すべての動き候補は、1画素精度で記憶される。
b.一例において、空間的に近傍の(隣接または非隣接)ブロックおよび/またはIBC HMVPテーブルからの動き情報を使用する場合、MVの丸め処理はスキップされる。
23.IBC動きリストは、1または複数のIBC HMVPテーブルからの動き候補のみを含んでよいことが提案される。
a.さらに、代替的に、IBC動きリストにおける候補の信号通知は、HMVPテーブルにおける利用可能なHMVP候補の数に依存してもよい。
b.さらに、代替的に、IBC動きリストにおける候補の信号通知は、HMVPテーブルにおけるHMVP候補の最大数に依存してもよい。
c.代替的に、HMVPテーブルにおけるHMVP候補は、プルーニングせずに順にリストに追加される。
i.一例において、順序は、テーブルへのエントリインデックスの昇順に基づく。
ii.一例において、順序は、テーブルへのエントリインデックスの降順に基づく。
iii.一例において、テーブルにおける最初のN個のエントリはスキップされてもよい。
iv.一例において、テーブルにおける最後のN個のエントリはスキップされてもよい。
v.一例において、無効なBV(s)を有するエントリはスキップされてもよい。
vi.
d.代替的に、1または複数のHMVPテーブルのHMVP候補から導出された動き候補は、水平ベクトルにオフセットを加える、および/または垂直ベクトルにオフセットを加える等により、さらに修正されてもよい。
i.有効なBVを提供するように、無効なBVを有するHMVP候補を修正してもよい。
e.さらに、代替的に、1または複数のHMVP候補の後または前に、デフォルトの動き候補が追加されてもよい。
f.どのようにHMVP候補をIBC動きリストに追加するか/HMVP候補をIBC動きリストに追加否かは、ブロック寸法に依存してもよい。
i.例えば、IBC動きリストは、ブロック寸法(幅および高さを表すWおよびH)が条件Cを満たす場合、1または複数のHMVPテーブルからの動き候補のみを含んでもよい。
1)一例において、条件Cは、W<=T1、かつ、H<=T2であり、例えば、T1=T2=4である。
2)一例において、条件Cは、W<=T1、または、H<=T2であり、例えば、T1=T2=4である。
3)一例において、条件Cは、W*H<=Tであり、例えば、T=16である。
5.実施形態
追加された変更は、下線を引いた太い斜体で強調されている。削除部分には[[]]が付けられている。
5.1 実施形態#1
現在のブロックが共有ノードの下にある場合、HMVPテーブルの更新は行われない。また、共有ノードの下のブロックには、単一のIBC HMVPテーブルのみを使用する。
7.4.8.5 符号化ユニット構文
[[以下のすべての条件が真である場合、NumHmvpSmrIbcCandをNumHmvpIbcCandに等しく設定し、HmvpSmrIbcCandList[i]をHmvpIbcCandList[i]に等しく設定し、i=0..NumHmvpIbcCand-1とすることにより、共有したマージ候補リスト領域に対する履歴ベースの動きベクトル予測子は更新される。
-IsInSmr[x0][y0]はTRUEに等しい。
-SmrX[x0][y0]はx0に等しい。
-SmrY[x0][y0]は、y0に等しい。]]
8.6.2 IBCブロックの動きベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
輝度動きベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度動きベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度動きベクトルmvLである。
-general_merge_flag[xCb][yCb]が0に等しい場合、以下が適用される。
1.変数mvdは、以下のように導出される。
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
2.8.5.2.14節で規定されるような動きベクトルの丸め処理は、mvLに等しく設定されたmvX、MvShift+2に等しく設定されたrightShift、MvShift+2に等しく設定されたleftShiftを入力とし、丸められたmvLを出力として呼び出される。
3.輝度動きベクトルmvLは、以下のように修正される。
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)%218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1-上記で規定したmvL[0]およびmvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
IsInSmr[xCb][yCb]が偽の場合、8.6.2.6節で規定されるような履歴ベースの動きベクトル予測子リストの更新処理は、輝度動きベクトルmvLを使用して呼び出される。
参照ブロックの内部の左上の位置(xRefTL,yRefTL)と、参照ブロックの内部の右下の位置(xRefBR,yRefBR)とは、以下のように導出される。
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
輝度動きベクトルmvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-...
8.6.2.4 IBC履歴に基づく動きベクトル候補の導出処理
この処理への入力は以下の通りである。
-動きベクトル候補リストmvCandList、
-リストnumCurrCandにおける利用可能な動きベクトル候補の数。
この処理への入力は以下の通りである。
-修正された動きベクトル候補リストmvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr]]
-リストnumCurrCandにおける動きベクトル候補の修正数
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
配列smrHmvpIbcCandListおよび変数smrNumHmvpIbcCandは、以下のように導出される。
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
[[smr]]NumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-907)
smrHmvpIbcCandList[hMvpIdx]におけるインデックスhMvpIdx=1..[[smr]]]NumHmvpIbcCandの各候補について、numCurrCandがMaxNumMergeCandと等しくなるまで、以下の順序付けられたステップが繰り返される。
1.変数sameMotionは以下のように導出される:
-NがAまたはBである任意の動きベクトル候補Nに対して、以下のすべての条件がTRUEである場合、sameMotionおよびisPrunedNは共にTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]は、動きベクトル候補Nに等しい。
-isPrunedNがFALSEに等しい。
-そうでない場合、sameMotionはFALSEに等しく設定される。
2.sameMotionがFALSEに等しい場合、候補[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]は動きベクトル候補リストに以下のように加えられる。
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx] (8-908)
5.2 実施形態#2
ブロックサイズが特定の条件、例えば、Width*Height<Kを満たす場合、IBC動きリスト構成処理における空間的マージ/AMVP候補のチェックを取り除く。以下の説明において、閾値Kは、予め定義されたものであってもよく、例えば、16である。
7.4.8.2 符号化ツリーユニット構文
CTUは、符号化ツリー構造のルートノードである。
[[(x,y)におけるサンプルが共有マージ候補リスト領域内に位置するかどうかを規定する配列IsInSmr[x][y]は、x=0..CtbSizeY-1およびy=0..CtbSizeY-1に対して以下のように初期化される:
IsInSmr[x][y]=FALSE (7-96)]]
7.4.8.4 符号化ツリー構文
[[以下の条件のすべてが真である場合、IsInSmr[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、TRUEに等しく設定される。
-isInSmr[x0][y0]はFALSEに等しい
-cbWidth*cbHeight/4が32より小さい
-treeTypeがDUAL_TREE_CHROMAに等しくない
IsInSmr[x0][y0]がTRUEに等しい場合、配列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]、およびSmrH[x][y]は、x=x0..x0+cbWidth-1、およびy=y0..y0+cbHeight-1に対して以下のように導出される。
SmrX[x][y]=x0 (7-98)
SmrY[x][y]=y0 (7-99)
SmrW[x][y]=cbWidth (7-100)
SmrH[x][y]=cbHeight (7-101)
以下のすべての条件が真である場合、IsInSmr[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、TRUEに等しく設定される。
-isInSmr[x0][y0]はFALSEに等しい。
-以下の条件の1つが真である。
-mtt_split_cu_binary_flagが1に等しく、かつ、cbWidth*cbHeight/2が32より小さい
-mtt_split_cu_binary_flagが0に等しく、かつ、cbWidth*cbHeight/4が32より小さい
-treeTypeがDUAL_TREE_CHROMAと等しくない
IsInSmr[x0][y0]がTRUEに等しい場合、配列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]、およびSmrH[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、以下のように導出される。
SmrX[x][y]=x0 (7-102)
SmrY[x][y]=y0 (7-103)
SmrW[x][y]=cbWidth (7-104)
SmrH[x][y]=cbHeight (7-105)]]
7.4.8.5 符号化ユニット構文
[[以下のすべての条件が真である場合、NumHmvpSmrIbcCandをNumHmvpIbcCandに等しく設定し、HmvpSmrIbcCandList[i]をHmvpIbcCandList[i]に等しく設定し、i=0..NumHmvpIbcCand-1とすることにより、共有したマージ候補リスト領域に対する履歴ベースの動きベクトル予測子は更新される。
-IsInSmr[x0][y0]はTRUEに等しい。
-SmrX[x0][y0]はx0に等しい。
-SmrY[x0][y0]は、y0に等しい。]]
x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、以下の通り割り当てが行われる。
CbPosX[x][y]=x0 (7-106)
CbPosY[x][y]=y0 (7-107)
CbWidth[x][y]=cbWidth (7-108)
CbHeight[x][y]=cbHeight (7-109)
8.6.2 IBCブロックの動きベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
輝度動きベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度動きベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度動きベクトルmvLである。
-general_merge_flag[xCb][yCb]が0と等しい場合、以下が適用される。
4.変数mvdは、以下のように導出される。
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
5.8.5.2.14節で規定されるような動きベクトルの丸め処理は、mvLに等しく設定されたmvX、MvShift+2に等しく設定されたrightShift、MvShift+2に等しく設定されたleftShiftを入力とし、丸められたmvLを出力として呼び出される。
6.輝度動きベクトルmvLは、以下のように修正される。
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)%218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1-上記で規定されたようなmvL[0]およびmvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
smrWidth*smrHeightがKより大きい場合、8.6.2.6節で規定されるような履歴ベースの動きベクトル予測子リストの更新処理は、輝度動きベクトルmvLを使用して呼び出される。
参照ブロック(xRefTL,yRefTL)の内部の左上の位置と、参照ブロック(xRefBR,yRefBR)の内部の右下の位置とは、以下のように導出される。
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
輝度動きベクトルmvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-...
8.6.2.2 IBC輝度動きベクトル予測のための導出処理
この処理は、CuPredMode[xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
変数xSmr、ySmr、smrWidth、smrHeight、およびsmrNumHmvpIbcCandは、以下のように導出される。
xSmr=[[IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:]]xCb (8-895)
ySmr=[[IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:]]yCb (8-896)
smrWidth=[[IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:]]cbWidth (8-897)
smrHeight=[[IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:]]cbHeight (8-898)
smrNumHmvpIbcCand=[[IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-899)
輝度動きベクトルmvLは、以下の順序ステップによって導出される。
1.smrWidth*smrHeightがKより大きい場合、8.6.2.3節で規定される近傍の符号化ユニットからの空間的動きベクトル候補の導出処理は、(xSmr,ySmr)に等しく設定された輝度符号化ブロックの位置(xCb,yCb)、smrWidthおよびsmrHeightに等しく設定された輝度符号化ブロックの幅cbWidthおよび輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、および動きベクトルmvAおよびmvBである。
2.smrWidth*smrHeightがKより大きい場合、動きベクトル候補リストmvCandListは、以下のように構成される。
i=0
if(availableFlagA
mvCandList[i++]=mvA
if(availableFlagB
mvCandList[i++]=mvB (8-900)
3.smrWidth*smrHeightがKより大きい場合、変数numCurrCandは、mvCandListにおけるマージ候補の数に等しく設定される。
4.numCurrCandがMaxNumMergeCandandより小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースの動きベクトル候補の導出処理は、mvCandList、IsInSmr[xCb][yCb]に等しく設定されたisInSmr、およびnumCurrCandを入力とし、修正されたmvCandListおよびnumCurrCandを出力として呼び出される。
5.numCurrCandがMaxNumMergeCandより小さい場合、numCurrCandがMaxNumMergeCandに等しくなるまで、以下が適用される。
1.mvCandList[numCurrCand][0]は、0に等しく設定される。
2.mvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
6.変数mvIdxは、以下のように導出される。
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-901)
7.以下の割り当てが行われる。
mvL[0]=mergeCandList[mvIdx][0] (8-902)
mvL[1]=mergeCandList[mvIdx][1] (8-903)
8.6.2.4 IBC履歴ベースの動きベクトル候補の導出処理
この処理への入力は以下の通りである。
-動きベクトル候補リストmvCandList、
-リストnumCurrCandにおける利用可能な動きベクトル候補の数。
この処理への入力は以下の通りである。
-修正された動きベクトル候補リストmvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr、]]
-リストnumCurrCandにおける動きベクトル候補の修正数。
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
配列smrHmvpIbcCandListおよび変数smrNumHmvpIbcCandは、以下のように導出される。
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
smrNumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-907)
インデックスhMvpIdx=1..smrNumHmvpIbcCandである[[smr]]HmvpIbcCandList[hMvpIdx]における各候補に対し、numCurrCandがMaxNumMergeCandに等しくなるまで、以下の順序付けられたステップを繰り返す。
1.変数sameMotionは以下のように導出される:
smrWidth*smrHeightが、Kより大きく、かつ、NはAまたはBである、任意の動きベクトル候補Nについて、すべての以下の条件がTRUEである場合、sameMotionおよびisPrunedNは両方ともTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]は、動きベクトル候補Nに等しい。
-PrisPrunedNはFALSEに等しい。
-そうでない場合、sameMotionはFALSEに等しく設定される。
2.sameMotionがFALSEに等しい場合、候補[[smr]]HmvpIbcCandList[smrNumHmvpIbcCand-hMvpIdx]は動きベクトル候補リストに以下のように加えられる。
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx] (8-908)
5.3 実施形態#3
現在のブロックが共有ノード下にあり、HMVPテーブルの更新が行われていないなど、ブロックサイズが特定の条件を満たす場合、IBC動きリスト構成処理における空間的マージ/AMVP候補のチェックを削除する。
8.6.2.2 IBC輝度動きベクトル予測のための導出処理
この処理は、CuPredMode[xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
変数xSmr、ySmr、smrWidth、smrHeight、およびsmrNumHmvpIbcCandは、以下のように導出される。
xSmr=[[IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:]]xCb (8-895)
ySmr=[[IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:]]yCb (8-896)
smrWidth=[[IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:]]cbWidth (8-897)
smrHeight=[[IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:]]cbHeight (8-898)
smrNumHmvpIbcCand=[[IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-899)
輝度動きベクトルmvLは、以下の順序ステップによって導出される。
1.IsInSmr[xCb][yCb]が偽の場合、8.6.2.3節で規定される近傍の符号化ユニットからの空間的動きベクトル候補の導出処理は、(xSmr,ySmr)に等しく設定された輝度符号化ブロックの位置(xCb,yCb)、smrWidthおよびsmrHeightに等しく設定された輝度符号化ブロックの幅cbWidthおよび輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、並びに動きベクトルmvAおよびmvBである。
2.IsInSmr[xCb][yCb]が偽の場合、動きベクトル候補リストmvCandListは、以下のように構成される。
i=0
if(availableFlagA
mvCandList[i++]=mvA
if(availableFlagB
mvCandList[i++]=mvB (8-900)
3.IsInSmr[xCb][yCb]が偽の場合、変数numCurrCandは、mvCandListにおけるマージ候補の数に等しく設定される。
4.numCurrCandがMaxNumMergeCandより小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースの動きベクトル候補の導出処理は、mvCandList、IsInSmr[xCb][yCb]に等しく設定されたisInSmr、およびnumCurrCandを入力とし、修正されたmvCandListおよびnumCurrCandを出力として呼び出される。
5.numCurrCandがMaxNumMergeCandより小さい場合、numCurrCandがMaxNumMergeCandに等しくなるまで、以下が適用される。
1.mvCandList[numCurrCand][0]は、0に等しく設定される。
2.mvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
6.変数mvIdxは、以下のように導出される。
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-901)
7.以下の割り当てが行われる。
mvL[0]=mergeCandList[mvIdx][0] (8-902)
mvL[1]=mergeCandList[mvIdx][1] (8-903)
8.6.2.4 IBC履歴に基づく動きベクトル候補の導出処理
この処理への入力は以下の通りである。
-動きベクトル候補リストmvCandList、
-リストnumCurrCandにおける利用可能な動きベクトル候補の数。
この処理への入力は以下の通りである。
-修正された動きベクトル候補リストmvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr]]
-リストnumCurrCandにおける動きベクトル候補の修正数
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
配列smrHmvpIbcCandListおよび変数smrNumHmvpIbcCandは、以下のように導出される。
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
[[smr]]NumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-907)
インデックスhMvpIdx=1..[[smr]]NumHmvpIbcCandである[[smr]]HmvpIbcCandList[hMvpIdx]における各候補に対し、numCurrCandがMaxNumMergeCandに等しくなるまで、以下の順序付けられたステップを繰り返す。
3.変数sameMotionは以下のように導出される:
isInSmrが偽であり、かつ、NがAまたはBである任意の動きベクトル候補Nに対して、以下のすべての条件が真である場合、sameMotionおよびisPrunedNは共にTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]は、動きベクトル候補Nに等しい。
-isPrunedNはFALSEに等しい。
-そうでない場合、sameMotionはFALSEに等しく設定される。
4.sameMotionがFALSEに等しい場合、候補[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]は動きベクトル候補リストに以下のように加えられる。
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx] (8-908)
8.6.2 IBCブロックの動きベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
輝度動きベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度動きベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度動きベクトルmvLである。
-general_merge_flag[xCb][yCb]が0と等しい場合、以下が適用される。
7.変数mvdは、以下のように導出される。
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
8.8.5.2.14節で規定されるような動きベクトルの丸め処理は、mvLに等しく設定されたmvX、MvShift+2に等しく設定されたrightShift、MvShift+2に等しく設定されたleftShiftを入力とし、丸められたmvLを出力として呼び出される。
9.輝度動きベクトルmvLは、以下のように修正される。
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)% 218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1-上記で規定されたmvL[0]およびmvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
IsInSmr[xCb][yCb]が偽の場合、8.6.2.6節で規定されるような履歴ベースの動きベクトル予測子リストの更新処理は、輝度動きベクトルmvLを使用して呼び出される。
参照ブロック内の左上の位置(xRefTL,yRefTL)と、参照ブロック内の右下の位置(xRefBR,yRefBR)とは、以下のように導出される。
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
輝度動きベクトルmvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-...
5.4 実施形態#4
Width*Height<=KまたはWidth=N、Height=4で左側の近傍のブロックが4×4であり、IBCモードで符号化されているか、Width=4、Height=Nで上側の近傍のブロックが4×4であり、IBCモードで符号化されているなど、ブロックサイズが特定の条件を満たし、HMVPテーブルの更新がない場合には、IBC動きリスト構成処理における空間的マージ/AMVP候補のチェックを削除する。以下の説明において、閾値Kは予め定義されてもよく、例えば16であり、Nは予め定義されてもよく、例えば8である。
7.4.9.2 符号化ツリーユニット構文
CTUは、符号化ツリー構造のルートノードである。
6.4.4節で規定されている近傍のブロック可用性の導出処理において、(x,y)のサンプルが利用可能かどうかを規定する配列IsAvailable[cIdx][x][y]は、cIdx=0...2、x=0...CtbSizeY-1、およびy=0...CtbSizeY-1に対して、以下のように初期化される。
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[(x,y)におけるサンプルが共有マージ候補リスト領域内に位置するかどうかを規定する配列IsInSmr[x][y]は、x=0..CtbSizeY-1およびy=0..CtbSizeY-1に対して以下のように初期化される。
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4 符号化ツリー構文
[[以下の条件のすべてが真である場合、IsInSmr[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、TRUEに等しく設定される。
-isInSmr[x0][y0]はFALSEと等しい
-cbWidth*cbHeight/4は32より小さい
-treeTypeがDUAL_TREE_CHROMAと等しくない
IsInSmr[x0][y0]がTRUEに等しい、配列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]およびSmrH[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して以下のように導出される。
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBCブロックのブロックベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
輝度ブロックベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度ブロックベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度ブロックベクトルbvLである。
-general_merge_flag[xCb][yCb]が0と等しい場合、以下が適用される。
1.変数bvdは、以下のように導出される。
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.8.5.2.14節で規定されるような動きベクトルの丸め処理は、bvLに等しく設定されたmvX、AMvrShiftに等しく設定されたrightShift、AMvrShiftに等しく設定されたleftShiftを入力とし、丸められたbvLを出力として呼び出される。
3.輝度ブロックベクトルbvLは、以下のように修正される。
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1-上記で規定されたbvL[0]およびbvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
変数IslgrBlkは(cbWidth×cbHeightはKよりも大きい?真:偽)に設定される。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
(または代替的に、
変数IslgrBlkは(cbWidth×cbHeightはKよりも大きい?真:偽)に設定される。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが利用可能であり、4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真[[IsInSmr[xCb][yCb]が偽である]]である場合、輝度ブロックベクトルbvLを使用して、8.6.2.6節で規定されるような履歴ベースのブロックベクトル予測子リストの更新処理が呼び出される。
輝度ブロックベクトルbvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-CtbSizeYは、((yCb+(bvL[1]>4))&(CtbSizeY-1)+cbHeight以上である。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]は、x=xCb..xCb+cbWidth-1およびy=yCb..yCb+cbHeight-1に対して、-1と等しくなってはならない。
8.6.2.2 IBC輝度ブロックベクトル予測の導出処理
この処理は、CuPredMode[0][xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
[[変数xSmr、ySmr、smrWidth、およびsmrHeightは、以下のように導出される。
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
変数IslgrBlkは、(cbWidth×cbHeightがKより大きい?真:偽)に設定される。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
(または代替的に、
変数IslgrBlkは、(cbWidth×cbHeightがKよりも大きい?真:偽)に設定される。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが利用可能であり、4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
輝度ブロックベクトルbvLは、以下の順序ステップによって導出される。
1.IslgrBlkが真の場合、8.6.2.3節で規定される近傍の符号化ユニットからの空間的ブロックベクトル候補の導出処理は、(xCb,yCb[[xSmr,ySmr]])に等しく設定された輝度符号化ブロックの位置(xCb,yCb)、[[smr]]CbWidthおよび[[smr]]CbHeightに等しく設定された輝度符号化ブロックの幅cbWidthおよび輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、並びにブロックベクトルbvAおよびbvBである。
2.IslgrBlkが真である場合、ブロックベクトル候補リストbvCandListは、次のように構成される。i=0
if(availableFlagA
bvCandList[i++]=bvA
if(availableFlagB
bvCandList[i++]=bvB (8-910)
3.IslgrBlkが真の場合、変数numCurrCandは、bvCandListにおけるマージ候補の数に等しく設定される。
4.numCurrCandがMaxNumIbcMergeCandより小さく、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースのブロックベクトル候補の導出処理は、mvCandList、およびIsLgrBlk、およびnumCurrCandを入力とし、修正されたbvCandListおよびnumCurrCandを出力として呼び出される。
5.numCurrCandがMaxNumIbcMergeCandより小さい場合、numCurrCandがMaxNumIbcMergeCandに等しくなるまで、以下が適用される。
1.bvCandList[numCurrCand][0]は、0に等しく設定される。
2.bvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
6.変数bvIdxは、以下のように導出される。
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.以下の割り当てが行われる。
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3 IBC空間的ブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-近傍の符号化ユニットの可用性フラグavailableFlagAおよびavailableFlagB
-近傍の符号化ユニットの1/16小数サンプル精度bvAおよびbvB
availableFlagAおよびmvAの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbA,yNbA)は、(xCb-1,yCb+cbHeight-1)に等しく設定される。
-6.4.4項で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbA,yNbA)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力は、ブロック可用性フラグavailableA1に割り当てられる。
-変数availableFlagAおよびbvAは、以下のように導出される。
-availableAがFALSEに等しい場合、availableFlagAは0に等しく設定され、bvAの両成分は0に等しく設定される。
-そうでない場合、availableFlagAは1に等しく設定され、以下の割り当てが行われる。
bvA=MvL0[xNbA][yNbA] (8-914)
availableFlagBおよびbvBの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbB,yNbB)は、(xCb+cbWidth-1,yCb-1)に等しく設定される。
-6.4.4節で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbB,yNbB)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力は、ブロック可用性フラグavailableB1に割り当てられる。
-変数availableFlagBおよびbvBは、以下のように導出される。
-以下の条件の1または複数が真である場合、availableFlagBは0に等しく設定され、bvBの両成分は0に設定される。
-availableBはFALSEに等しい。
-availableAはTRUEに等しく、輝度位置(xNbA,yNbA)および(xNbB,yNbB)は同じブロックベクトルを有する。
-そうでない場合、availableFlagBを1に等しく設定され、以下の割り当てが行われる。
bvB=MvL0[xNbB][yNbB] (8-915)
8.6.2.4 IBC履歴に基づくブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-ブロックベクトル候補リストbvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr]]
非小ブロックIslgrBlkを示す変数、
-リストnumCurrCandにおける利用可能なブロックベクトル候補の数。
この処理への入力は以下の通りである。
-修正されたブロックベクトル候補リストbvCandList、
-リストnumCurrCandにおける動きベクトル候補の修正数。
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
インデックスhMvpIdx=1..[[smr]]NumHmvpIbcCandである[[smr]]HmvpIbcCandList[hMvpIdx]における各候補に対し、numCurrCandがMaxNumMergeCandに等しくなるまで、以下の順序付けられたステップを繰り返す。
1.変数sameMotionは以下のように導出される:
IsLgrBlkが真であり、NがAまたはBである任意のブロックベクトル候補Nに対して、以下のすべての条件が真ある場合、sameMotionおよびisPrunedNは共にTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]は、ブロックベクトル候補Nに等しい。
-PrisPrunedNはFALSEに等しい。
-そうでない場合、sameMotionをFALSEに等しく設定される。
2.sameMotionがFALSEに等しい場合、候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]は、ブロックベクトル候補リストに以下のように加えられる。
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx] (8-916)
5.5 実施形態#5
ブロックサイズが特定の条件、例えば、Width=N、Height=4、左側の近傍のブロックが4×4であり、IBCモードで符号化されるか、またはWidth=4であり、Height=Nであり、上側の近傍のブロックが4×4であり、IBCモードで符号化されている場合には、IBC動きリスト構成処理における空間的マージ/AMVP候補のチェックを取り除き、かつ、HMVPテーブルの更新を削除する。以下の説明において、Nは、予め定義されたものであってもよく、例えば、4または8である。
7.4.9.2 符号化ツリーユニット構文
CTUは、符号化ツリー構造のルートノードである。
6.4.4節で規定されている近傍のブロック可用性の導出処理において、(x,y)のサンプルが利用可能かどうかを規定する配列IsAvailable[cIdx][x][y]は、cIdx=0...2、x=0...CtbSizeY-1、およびy=0...CtbSizeY-1に対して、以下のように初期化される。
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[(x,y)におけるサンプルが共有マージ候補リスト領域内に位置するかどうかを規定する配列IsInSmr[x][y]は、x=0..CtbSizeY-1およびy=0..CtbSizeY-1に対して、以下のように初期化される。
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4 符号化ツリー構文
[[以下の条件のすべてが真である場合、IsInSmr[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、TRUEに等しく設定される。
-isInSmr[x0][y0]はFALSEに等しい
-cbWidth *cbHeight/4が32より小さい
-treeTypeがDUAL_TREE_CHROMAに等しくない
IsInSmr[x0][y0]がTRUEに等しい場合、配列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]、およびSmrH[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して以下のように導出される。
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBCブロックのブロックベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
輝度ブロックベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度ブロックベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度ブロックベクトルbvLである。
-general_merge_flag[xCb][yCb]が0と等しい場合、以下が適用される。
1.変数bvdは、以下のように導出される。
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.8.5.2.14節で規定されるような動きベクトルの丸め処理は、bvLに等しく設定されたmvX、AMvrShiftに等しく設定されたrightShift、AMvrShiftに等しく設定されたleftShiftを入力とし、丸められたbvLを出力として呼び出される。
3.輝度ブロックベクトルbvLは、以下のように修正される。
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1-上記で規定したbvL[0]およびbvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
以下の条件の1つが真である場合、変数IslgrBlkを真に設定される。
CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合。
CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合。
そうでない場合、IsLgrBlkは偽に等しく設定される。
(または代替的に、
変数IslgrBlkは、(CbWidth*CbHeight>16?真:偽)に設定され、以下をさらにチェックする。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。)
IsLgrBlkが真である[[IsInSmr[xCb][yCb]が偽に等しい]]場合、8.6.2.6節で規定されるような履歴に基づくブロックベクトル予測子リストの更新処理は、輝度ブロックベクトルbvLを用いて呼び出される。
輝度ブロックベクトルbvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-CtbSizeYは、((yCb+(bvL[1]>4))&(CtbSizeY-1))+cbHeight以上である。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]は、x=xCb..xCb+cbWidth-1およびy=yCb..yCb+cbHeight-1に対し、-1と等しくなってはならない。
8.6.2.2 IBC輝度ブロックベクトル予測のための導出処理
この処理は、CuPredMode[0][xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
[[変数xSmr、ySmr、smrWidth、およびsmrHeightは、以下のように導出される。
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
以下の条件の1つが真である場合、変数IslgrBlkは真に設定される。
CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合。
CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合。
そうでない場合、IsLgrBlkは偽に設定される。
(または代替的に、
変数IslgrBlkは、(CbWidth*CbHeight>16?真:偽)に設定され、以下をさらにチェックする。
IsLgrBlkが真である場合、CbWidthがNに等しく、CbHeightが4に等しく、左側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。
IsLgrBlkが真である場合、CbWidthが4に等しく、CbHeightがNに等しく、上側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IsLgrBlkは偽に設定される。)
輝度ブロックベクトルbvLは、以下の順序ステップによって導出される。
1.IslgrBlkが真の場合、8.6.2.3節で規定される近傍の符号化ユニットからの空間的ブロックベクトル候補の導出処理は、(xCb,yCb[[xSmr,ySmr]])に等しく設定された輝度符号化ブロックの位置(xCb,yCb)、[[smr]]CbWidthおよび[[smr]]CbHeightに等しく設定された輝度符号化ブロックの幅cbWidthおよび輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、並びにブロックベクトルbvAおよびbvBである。
2.IslgrBlkが真である場合、ブロックベクトル候補リストbvCandListは、次のように構成される。
i=0
if(availableFlagA
bvCandList[i++]=bvA
if(availableFlagB
bvCandList[i++]=bvB (8-910)
3.IslgrBlkが真の場合、変数numCurrCandは、bvCandListにおけるマージ候補の数に等しく設定される。
4.numCurrCandがMaxNumIbcMergeCandより小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースのブロックベクトル候補の導出処理は、mvCandList、およびIsLgrBlk、およびnumCurrCandを入力として、修正されたbvCandListおよびnumCurrCandを出力として呼び出される。
5.numCurrCandがMaxNumIbcMergeCandより小さい場合、numCurrCandがMaxNumIbcMergeCandに等しくなるまで、以下が適用される。
1.bvCandList[numCurrCand][0]は、0に等しく設定される。
2.bvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
6.変数bvIdxは、以下のように導出される。
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.以下の割り当てが行われる。
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3 IBC空間的ブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-近傍の符号化ユニットの可用性フラグavailableFlagAおよびavailableFlagB
-近傍の符号化ユニットの1/16小数サンプル精度bvAおよびbvB
availableFlagAおよびmvAの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbA,yNbA)は、(xCb-1,yCb+cbHeight-1)に等しく設定される。
-6.4.4節で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbA,yNbA)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力は、ブロック可用性フラグavailableAに割り当てられる。
-変数availableFlagAおよびbvAは、以下のように導出される。
-availableAがFALSEに等しい場合、availableFlagAは0に等しく設定され、bvAの両成分は0に等しく設定される。
-そうでない場合、availableFlagAは1に等しく設定され、以下の割り当てが行われる。
bvA=MvL0[xNbA][yNbA] (8-914)
availableFlagBおよびbvBの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbB,yNbB)は、(xCb+cbWidth-1,yCb-1)に等しく設定される。
-6.4.4節で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbB,yNbB)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力は、ブロック可用性フラグavailableB1に割り当てられる。
-変数availableFlagBおよびbvBは、以下のように導出される。
-以下の条件の1または複数が真である場合、availableFlagBは0に設定され、bvBの両成分は0に等しく設定される。
-availableBはFALSEに等しい。
-availableAはTRUEに等しく、輝度位置(xNbA,yNbA)および(xNbB,yNbB)は同じブロックベクトルを有する。
-そうでない場合、availableFlagBは1に設定され、以下の割り当てが行われる。
bvB=MvL0[xNbB][yNbB] (8-915)
8.6.2.4 IBC履歴に基づくブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-ブロックベクトル候補リストbvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr]]
非小ブロックIslgrBlkを示す変数、
-リストnumCurrCandにおける利用可能なブロックベクトル候補の数。
この処理への出力は以下の通りである。
-修正されたブロックベクトル候補リストbvCandList、
-リストnumCurrCandにおける動きベクトル候補の修正数
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
インデックスhMvpIdx=1..[[smr]]NumHmvpIbcCandである[[smr]]HmvpIbcCandList[hMvpIdx]における各候補に対し、numCurrCandがMaxNumMergeCandに等しくなるまで、以下の順序付けられたステップを繰り返す。
1.変数sameMotionは以下のように導出される。
IsLgrBlkは真であり、かつ、NがAまたはBである任意のブロックベクトル候補Nに対して、以下のすべての条件が真ある場合、sameMotionおよびisPrunedNは共にTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]は、ブロックベクトル候補Nである。
-isPrunedNはFALSEに等しい。
-そうでない場合、sameMotionはFALSEに等しく設定される。
2.sameMotionがFALSEに等しい場合、候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]は、ブロックベクトル候補リストに以下のように加えられる。
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx] (8-916)
5.6 実施形態#6
ブロックサイズが特定の条件、例えば、Width*Height<=Kであり、左側または上側の近傍のブロックが4×4であり、IBCモードで符号化される場合、IBC動きリスト構成処理における空間的マージ/AMVP候補のチェックを削除し、HMVPテーブルの更新を削除する。以下の説明において、閾値Kは、予め定義されたものであってもよく、例えば、16または32であってもよい。
7.4.9.2 符号化ツリーユニット構文
CTUは、符号化ツリー構造のルートノードである。
6.4.4節で規定されている近傍のブロック可用性の導出処理において、(x,y)のサンプルが利用可能かどうかを規定する配列IsAvailable[cIdx][x][y]は、cIdx=0...2、x=0...CtbSizeY-1、およびy=0...CtbSizeY-1に対して、以下のように初期化される。
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[x,yにおけるサンプルが共有マージ候補リスト領域内に位置するかどうかを規定する配列IsInSmr[x][y]は、x=0..CtbSizeY-1およびy=0..CtbSizeY-1に対して以下のように初期化される。
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4 符号化ツリー構文
[[以下の条件のすべてが真である場合、IsInSmr[x][y]は、x=x0..x0+cbWidth-1およびy=y0..y0+cbHeight-1に対して、TRUEに等しく設定される。
-isInSmr[x0][y0]はFALSEに等しい
-cbWidth*cbHeight/4が32より小さい
-treeTypeがDUAL_TREE_CHROMAと等しくない
IsInSmr[x0][y0]がTRUEに等しい場合、配列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]、およびSmrH[x][y]は、x=x0..x0+cbWidth-1、およびy=y0..y0+cbHeight-1に対して以下のように導出される。
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBCブロックのブロックベクトル成分の導出処理
8.6.2.1 一般
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
輝度ブロックベクトルmvLは、以下のように導出される。
-8.6.2.2節で規定されたIBC輝度ブロックベクトル予測の導出処理は、輝度位置(xCb,yCb)、変数cbWidthおよびcbHeightを入力として呼び出され、出力は輝度ブロックベクトルbvLである。
-general_merge_flag[xCb][yCb]が0と等しい場合、以下が適用される。
1.変数bvdは、以下のように導出される。
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.8.5.2.14節で規定されるような動きベクトルの丸め処理は、bvLに等しく設定されたmvX、AMvrShiftに等しく設定されたrightShift、AMvrShiftに等しく設定されたleftShiftを入力とし、丸められたbvLを出力として呼び出される。
3.輝度ブロックベクトルbvLは、以下のように修正される。
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1-上記で規定されたbvL[0]およびbvL[1]の結果値は、常に-217~217-1の範囲に含まれる。
変数IslgrBlkは、(cbWidth×cbHeightはKより大きい?真:偽)に設定される。
IsLgrBlkが真である場合、左側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真である場合、上側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
(または代替的に、
変数IslgrBlkは、(cbWidth×cbHeightがKよりも大きい?真:偽)に設定されする。
IsLgrBlkが真である場合、左側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真である場合、上側の近傍のブロックが現在のブロックと同じCTUにあり、4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真である[[IsInSmr[xCb][yCb]が偽に等しい]]場合、8.6.2.6節で規定されるような履歴ベースのブロックベクトル予測子リストの更新処理が、輝度ブロックベクトルbvLを用いて呼び出される。
輝度ブロックベクトルbvLが以下の制約に従うべきであることは、ビットストリーム適合性の要件である。
-CtbSizeYは、((yCb+(bvL[1]>4))&(CtbSizeY-1))+cbHeight以上である。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]は、x=xCb..xCb+cbWidth-1およびy=yCb..yCb+cbHeight-1に対し、-1と等しくなってはならない。
8.6.2.2 IBC輝度ブロックベクトル予測のための導出処理
この処理は、CuPredMode[0][xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度符号化ブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度bvLにおける輝度ブロックベクトル。
[[変数xSmr、ySmr、smrWidth、およびsmrHeightは、以下のように導出される。
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
変数IslgrBlkは、(cbWidth×cbHeightがKより大きい?真:偽)に設定される。
IsLgrBlkが真である場合、左側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真である場合、上側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
(または代替的に、
変数IslgrBlkは、(cbWidth×cbHeightがKより大きい?真:偽)に設定される。
IsLgrBlkが真である場合、左側の近傍のブロックが4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
IsLgrBlkが真である場合、上側の近傍のブロックが現在のブロックと同じCTUにあり、4×4であり、IBCモードで符号化されている場合、IsLgrBlkは偽に等しく設定される。
輝度ブロックベクトルbvLは、以下の順序ステップによって導出される。
1.IslgrBlkが真の場合、8.6.2.3項で規定される近傍の符号化ユニットからの空間的ブロックベクトル候補の導出処理は、(xCb,yCb[[xSmr,ySmr]])に等しく設定された輝度符号化ブロックの位置(xCb,yCb)、[[smr]]CbWidthおよび[[smr]]CbHeightに等しく設定された輝度符号化ブロックの幅cbWidthおよび輝度符号化ブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、並びにブロックベクトルbvAおよびbvBである。
2.IslgrBlkが真である場合、ブロックベクトル候補リストbvCandListは、次のように構成される。
i=0
if(availableFlagA
bvCandList[i++]=bvA
if(availableFlagB
bvCandList[i++]=bvB (8-910)
3.IslgrBlkが真の場合、変数numCurrCandは、bvCandListにおけるマージ候補の数に等しく設定される。
4.numCurrCandがMaxNumIbcMergeCandより小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースのブロックベクトル候補の導出処理は、mvCandList、およびIsLgrBlk、およびnumCurrCandを入力とし、修正されたbvCandListおよびnumCurrCandを出力として呼び出される。
5.numCurrCandがMaxNumIbcMergeCandより小さい場合、numCurrCandがMaxNumIbcMergeCandに等しくなるまで、以下が適用される。
1.bvCandList[numCurrCand][0]は、0に等しく設定される。
2.bvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
6.変数bvIdxは、以下のように導出される。
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.以下の割り当てが行われる。
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3 IBC空間的ブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度符号化ブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在の符号化ブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在の符号化ブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである:
-近傍の符号化ユニットの可用性フラグavailableFlagAおよびavailableFlagB
-近傍の符号化ユニットの1/16小数サンプルにおける精度bvAおよびbvB
availableFlagAおよびmvAの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbA,yNbA)は、(xCb-1,yCb+cbHeight-1)に等しく設定される。
-6.4.4節で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbA,yNbA)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力はブロック可用性フラグavailableAに割り当てられる。
-変数availableFlagAおよびbvAは、以下のように導出される。
-availableAがFALSEに等しい場合、availableFlagAは0に等しく設定され、bvAの両成分は0に等しく設定される。
-そうでない場合、availableFlagAは1に等しく設定され、以下の割り当てが行われる。
bvA=MvL0[xNbA][yNbA] (8-914)
availableFlagBおよびbvBの導出のために、以下が適用される。
-近傍の輝度符号化ブロック内の輝度位置(xNbB,yNbB)は、(xCb+cbWidth-1,yCb-1)に等しく設定される。
-6.4.4節で規定される近傍のブロックの可用性のための導出処理は、(xCb,yCb)に等しく設定された現在の輝度位置(xCurr,yCurr)、近傍の輝度位置(xNbB,yNbB)、TRUEに等しく設定されたcheckPredModeY、0に等しく設定されたcIdxを入力として呼び出され、出力は、ブロック可用性フラグavailableBに割り当てられる。
-変数availableFlagBおよびbvBは、以下のように導出される。
-以下の条件のうちの1または複数が真である場合、availableFlagBは0に等しく設定され、bvBの両成分は0に等しく設定される。
-availableBはFALSEに等しい。
-availableAはTRUEに等しく、輝度位置(xNbA,yNbA)および(xNbB,yNbB)は同じブロックベクトルを有する。
-そうでない場合、availableFlagBは1に等しく設定され、以下の割り当てが行われる。
bvB=MvL0[xNbB][yNbB] (8-915)
8.6.2.4 IBC履歴ベースのブロックベクトル候補の導出処理
この処理への入力は以下の通りである。
-ブロックベクトル候補リストbvCandList、
-[[現在の符号化ユニットが共有マージ候補領域内にあるかどうかを規定する変数isInSmr、]]
非小ブロックIslgrBlkを示す変数、
-リストnumCurrCandにおける利用可能なブロックベクトル候補の数。
この処理への出力は以下の通りである。
-修正されたブロックベクトル候補リストbvCandList、
-リストnumCurrCandにおける動きベクトル候補の修正数
変数isPrunedAおよびisPrunedBは共にFALSEに等しく設定される。
インデックスhMvpIdx=1..[[smr]]NumHmvpIbcCandである[[smr]]HmvpIbcCandList[hMvpIdx]における各候補に対し、numCurrCandがMaxNumMergeCandに等しくなるまで、以下の順序付けられたステップを繰り返す。
1.変数sameMotionは以下のように導出される:
IsLgrBlkは真であり、かつ、NはAまたはBである任意のブロックベクトル候補Nに対して、以下のすべての条件が真ある場合、sameMotionおよびisPrunedNは共にTRUEに等しく設定される。
-hMvpIdxは1以下である。
-候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]は、ブロックベクトル候補Nに等しい。
-isPrunedNはFALSEに等しく設定される。
-そうでない場合、sameMotionをFALSEに等しく設定される。
2.sameMotionがFALSEに等しい場合、候補HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]はブロックベクトル候補リストに以下のように加えられる。
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx] (8-916)
図22は、映像処理装置2200のブロック図である。装置2200は、本明細書に記載の方法の1または複数を実装するために使用してもよい。装置2200は、スマートフォン、タブレット、コンピュータ、IoT(Internet of Things)受信機等に実施されてもよい。装置2200は、1または複数のプロセッサ2202と、1または複数のメモリ2204と、映像処理ハードウェア2206と、を含んでもよい。1または複数のプロセッサ2202は、本明細書に記載される1または複数の方法を実装するように構成されてもよい。1または複数のメモリ2204は、本明細書で説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用してもよい。映像処理ハードウェア2206は、本明細書に記載される技術をハードウェア回路にて実装するために使用してもよい。映像処理ハードウェア2206は、専用ハードウェア、またはGPU(Graphical Processor Unit)若しくは専用信号処理ブロックの形式で、プロセッサ2202内に部分的にまたは完全に含まれてもよい。
図23は、映像処理方法2300の例を示すフローチャートである。方法2300は、動作2302において、sbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することを含む。方法2300は、動作2304において、sbIBC符号化モードを使用して変換を実行することを更に含む。
いくつかの実施形態を、以下の項目ベースの説明を使用して説明することができる。
以下の項目は、前章の項目1で論じた技術の例示的な実施形態を示す。
1.映像処理の方法であって、映像領域における現在の映像ブロックと、現在の映像ブロックを複数のサブブロックに分割して各サブブロックを映像領域からの参照サンプルに基づいて符号化する、現在の映像ブロックのビットストリーム表現との間での変換において、sbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することであって、サブブロックのサイズは、分割規則に基づく、ことと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することと、を有する、映像処理の方法。
2.現在の映像ブロックはM×Nブロックであり、MおよびNは整数であり、分割規則は、各サブブロックが同じサイズを有することを規定する、項目1に記載の方法。
3.ビットストリーム表現は、分割規則またはサブブロックのサイズを示す構文要素を含む、項目1に記載の方法。
4.分割規則は、現在の映像ブロックの色成分に基づいてサブブロックのサイズを規定する、項目1~3のいずれかに記載の方法。
5.第1の色成分のサブブロックは、現在の映像ブロックに対応する第2の色成分のサブブロックからその動きベクトル情報を導出することができる、項目1~4のいずれかに記載の方法。
以下の項目は、前章の項目2および6に記載された技術の例示的な実施形態を示す。
1.映像処理の方法であって、映像領域における現在の映像ブロックと、現在の映像ブロックを複数のサブブロックに分割して各サブブロックを映像領域からの参照サンプルに基づいて符号化する、現在の映像ブロックのビットストリーム表現との間での変換において、sbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することと、を有し、変換は、所与のサブブロックに対するinitMV(initialized Motion Vector)を判定することと、initMVから参照ブロックを識別することと、参照ブロックに対するMV情報を使用して所与のサブブロックに対するMV(Motion Vector)情報を導出することを含む、方法。
2.initMVを判定することは、所与のサブブロックの1または複数の近傍のブロックからinitMVを判定することを含む、項目1に記載の方法。
3.1または複数の近傍のブロックを順にチェックする、項目2に記載の方法。
4.initMVを判定することは、動き候補リストからinitMVを導出することを含む、項目1に記載の方法。
5.参照ブロックを識別することは、initMVを1画素精度に変換することと、変換されたinitMVに基づいて参照ブロックを識別することとを含む、項目1~4のいずれかに記載の方法。
6.参照ブロックを識別することは、所与のブロック内のオフセット位置にinitMVを適用することを含み、オフセット位置は、所定のサブブロックの所定の位置から(offsetX,offsetY)だけオフセットされているものとして表される、項目1~4のいずれかに記載の方法。
7.所与のサブブロックに対するMVを導出することは、参照ブロックに対するMV情報をクリッピングすることを含む、項目1~6のいずれかに記載の方法。
8.参照ブロックは、現在の映像ブロックの色成分と異なる色成分である、項目1~7のいずれかに記載の方法。
以下の項目は、前の章3、4、および5に記載された技術の例示的な実施形態を示す。
1.映像処理の方法であって、映像領域における現在の映像ブロックと、現在の映像ブロックを複数のサブブロックに分割し、各サブブロックを映像領域からの参照サンプルに基づいて符号化する、現在の映像ブロックのビットストリーム表現との間での変換において、sbIBC(sub-block Intra Block Copy)符号化モードを使用することを判定することと、複数のサブブロックに対してsbIBC符号化モードを使用して変換を実行することを有し、変換は、サブブロックIBC候補を生成することを含む、方法。
2.サブブロックIBC候補は、代替動きベクトル予測子候補を含む候補リストに追加される、項目1に記載の方法。
3.サブブロックIBC候補は、アフィンマージ候補を含むリストに追加される、項目1に記載の方法。
以下の章は、前章の項目7、8、9、10、11、12、および13に記載の技術の例示的な実施形態を示す。
1.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを有し、変換は、sbIBC(sub-block Intra Block Copy)モードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、イントラ符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む、方法。
2.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、イントラ符号化モードを使用して複数のサブブロックのすべてのサブブロックを処理することを含む、方法。
3.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを含み、変換は、代表的な画素値のパレットを使用して各サブブロックを符号化するために使用されるパレット符号化モードを使用して複数のサブブロックのすべてを処理することを含む、方法。
4.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを有し、変換は、代表的な画素値を使用して第1のサブブロックを符号化するパレットモードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、イントラブロックコピー符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む、方法。
5.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを有し、変換は、代表的な画素値のパレットを使用して第1のサブブロックを符号化するパレットモードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、イントラ符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む、方法。
6.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを有し、変換は、sbIBC(sub-block Intra Block Copy)モードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、インター符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む、方法。
7.映像処理の方法であって、現在の映像ブロックのビットストリーム表現と、複数のサブブロックに分割された現在の映像ブロックとの間での変換を実行することを有し、変換は、サブブロックイントラ符号化モードを使用して複数のサブブロックのうちの第1のサブブロックを処理し、インター符号化モードを使用して複数のサブブロックのうちの第2のサブブロックを処理することを含む、方法。
以下の項は、前章の項目14で論じた技術の例示的な実施形態を示す。
8.方法は、現在の映像ブロックの変換後に、IBC履歴ベースの動きベクトル予測子テーブルを更新することを避けることをさらに含む、項目1~7のいずれかに記載の方法。
以下の章は、前章の項目15に記載された技術の例示的な実施形態を示す。
9.現在の映像ブロックの変換後に、非IBC履歴に基づく動きベクトル予測子テーブルを更新することを控えることをさらに含む、項目1~7のいずれかに記載の方法。
以下の章は、前章の項目16に記載された技術の例示的な実施形態を示す。
10.変換は、処理に基づくインループフィルタの選択的使用を含む、項目1~7のいずれかに記載の方法。
以下の項目は、前章の項目1で論じた技術の例示的な実施形態を示す。
17.変換を実行することは、方法を使用することによって、現在の映像ブロックに対して特定の符号化モードを無効化することにより変換を実行することを含み、特定の符号化モードは、サブブロック変換、アフィン動き予測、多重参照ラインのイントラ予測、行列ベースのイントラ予測、対称MVD(Motion Vector Difference)符号化、MVDデコーダ側動き導出/改善を用いたマージ、双方向最適フロー、縮小セカンダリ変換、または複数の変換セットのうちの1または複数を含む、項目1~7のいずれかに記載の方法。
以下の章は、前章の項目18に記載された技術の例示的な実施形態を示す。
1.ビットストリーム表現におけるインジケータは、方法が現在の映像ブロックにどのように適用されるかに関する情報を含む、上記項目のいずれかに記載の方法。
以下の章は、前章の項目19に記載された技術の例示的な実施形態を示す。
1.映像処理の方法であって、現在の映像ブロックをビットストリーム表現に符号化するために、上述の項目のいずれかに記載の方法を使用するとことの決定を行うことと、ビットストリーム表現において、デコーダパラメータセットレベル、シーケンスパラメータセットレベル、または映像パラメータセットレベル、またはピクチャパラメータセットレベル、またはピクチャヘッダレベル、またはスライスヘッダレベル、またはタイルグループヘッダレベル、または最大符号化ユニットレベル、または符号化ユニットレベル、または最大符号化ユニット行レベル、またはLCUレベルのグループ、または変換ユニットレベル、または予測ユニットレベル、または映像符号化ユニットレベルにて、決定を示す情報を含めることと、を有する、方法。
2.映像処理の方法であって、符号化条件に基づいて、現在の映像ブロックをビットストリーム表現に符号化するために、上述の項目のいずれかに記載の方法を使用することの決定を行うことと、上述の項目のいずれかに記載の方法を使用して符号化を実行することと、を有し、条件は、符号化ユニットの位置、予測ユニット、変換ユニット、現在の映像ブロック、または現在の映像ブロックの映像符号化ユニット、
現在の映像ブロックおよび/またはその近傍のブロックのブロック寸法、
現在の映像ブロックおよび/またはその近傍のブロックのブロック形状、
現在の映像ブロックおよび/またはその近傍のブロックのイントラモード、
現在の映像ブロックの近傍のブロックの動き/ブロックベクトル、
現在の映像ブロックのカラーフォーマット、
符号化ツリー構造、
現在の映像ブロックのスライス、タイルグループタイプ、またはピクチャタイプ、
現在の映像ブロックの色成分、
現在の映像ブロックの時間層ID、
ビットストリーム表現に使用されるプロファイル、レベルまたは規格、のうちの1または複数に基づく、方法。
以下の章は、前章の項目20に記載された技術の例示的な実施形態を示す。
1.映像処理の方法であって、映像領域におけるブロックと、映像領のビットストリーム表現との間での変換のためにイントラブロックコピーモードおよびインター予測モードを使用することを判定することと、映像領域におけるブロックのためにイントラブロックコピーモードおよびインター予測モードを使用して変換を実行することと、を有する、方法。
2.映像領域は、映像ピクチャ、映像スライス、映像タイルグループ、または映像タイルを含む、項目1に記載の方法。
3.インター予測モードは、AMVP(Alternative Motion Vector Predictor)符号化モードを使用する、項目1~2のいずれかに記載の方法。
4.変換を実行することは、近傍のブロックからイントラブロックコピーモードのマージ候補を導出することを含む、項目1~3のいずれかに記載の方法。
以下の項目は、前章の項目21に記載された技術の例示的な実施形態を示す。
1.映像処理の方法であって、現在の映像ブロックと、現在の映像ブロックのビットストリーム表現との間での変換中、符号化条件に基づいて、履歴ベースの動きベクトル予測子テーブルを更新するための動き候補リスト構成処理および/またはテーブル更新処理を実行することと、動き候補リスト構成処理および/またはテーブル更新処理に基づいて変換を実行することと、を有する、方法。
2.符号化条件が満たされている場合と満たされていない場合とで、異なる処理が適用されてよい、項目1に記載の方法。
3.符号化条件が満たされる場合、履歴ベースの動きベクトル予測子テーブルの更新は適用されない、項目1に記載の方法。
4.符号化条件が満たされる場合、空間的に近傍の(隣接または非隣接)ブロックからの候補の導出はスキップされる、項目1に記載の方法。
5.符号化条件が満たされている場合、HMVP候補の導出はスキップされる、項目1に記載の方法。
6.符号化条件は、ブロック幅×高さが16以下、または32以下、または64以下である、項目1に記載の方法。
7.符号化条件は、ブロックがIBCモードで符号化されることを含む、項目1に記載の方法。
8.符号化条件は、前章の21.b.s.iv節に記載されているとおりである、項目1に記載の方法。
変換は、現在の映像ブロックからビットストリーム表現を生成することを含む、上記項目のいずれかに記載の方法。
変換は、ビットストリーム表現から現在の映像ブロックのサンプルを生成することを含む、上記項目のいずれかに記載の方法。
上記項目のいずれか1または複数に記載の方法を実装するように構成されたプロセッサを備える映像処理装置。
実行時に、上記項目の1または複数に記載の方法をプロセッサに実装させるためのコードが記憶されたコンピュータ可読媒体。
図24は、本明細書で開示される様々な技術が実装され得る例示的な映像処理システム2400を示すブロック図である。様々な実装形態は、システム2400のコンポーネントの一部または全部を含んでもよい。システム2400は、映像コンテンツを受信するための入力2402を含んでもよい。映像コンテンツは、未加工または非圧縮フォーマット、例えば、8または10ビットのマルチコンポーネント画素値で受信されてもよく、または圧縮または符号化フォーマットで受信されてもよい。入力2402は、ネットワークインターフェース、周辺バスインターフェース、または記憶インターフェースを表してもよい。ネットワークインターフェースの例は、イーサネット(登録商標)、PON(Passive Optical Network)等の有線インターフェース、およびWi-Fi(登録商標)またはセルラーインターフェース等の無線インターフェースを含む。
システム2400は、本特許明細書に記載される様々な符号化または符号化方法を実装することができる符号化コンポーネント2404を含んでもよい。符号化コンポーネント2404は、入力2402からの映像の平均ビットレートを符号化コンポーネント2404の出力に低減し、映像の符号化表現を生成してもよい。従って、この符号化技術は、映像圧縮または映像コード変換技術と呼ばれることがある。符号化コンポーネント2404の出力は、コンポーネント2406によって表されるように、記憶されてもよいし、接続された通信を介して送信されてもよい。入力2402において受信された、記憶されたまたは通信された映像のビットストリーム(または符号化)表現は、コンポーネント2408によって使用されて、表示インターフェース2410に送信される画素値または表示可能な映像を生成してもよい。ビットストリーム表現からユーザが見ることができる映像を生成する処理は、映像伸張と呼ばれることがある。さらに、特定の映像処理動作を「符号化」動作またはツールと呼ぶが、符号化ツールまたは動作は、エンコーダおよびそれに対応する、復号化の結果を逆にする復号化ツールまたは動作が、デコーダによって行われることが理解されよう。
周辺バスインターフェースユニットまたは表示インターフェースユニットの例は、USB(Universal Serial Bus)またはHDMI(High Definition Multimedia Interface)(登録商標)またはディスプレイポート等を含んでもよい。ストレージインターフェースの例は、SATA(Serial Advanced Technology Attachment)、PCI、IDEインターフェース等を含む。本明細書に記載される技術は、携帯電話、ノートパソコン、スマートフォン、またはデジタルデータ処理および/または映像表示を実施可能な他のデバイス等の様々な電子デバイスに実施されてもよい。
図25は、本技術にしたがった映像処理の方法2500を示すフローチャートである。方法2500は、動作2510において、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックを複数のサブブロックに分割することを判定することを含む。現在のブロックの現在のピクチャからの1または複数の映像領域からの参照サンプルを使用する修正IBC(Intra-Block Copy)符号化技術を使用して、複数のブロックのうちの少なくとも1つが符号化される。方法2500は、動作2520において、判定に基づいて変換を実行することを含む。
いくつかの実施形態において、映像領域は、現在のピクチャ、スライス、タイル、ブリックまたはタイルグループを含む。いくつかの実施形態において、現在のブロック寸法はM×Nであり、MおよびNが整数である場合、現在のブロックは複数のサブブロックに分割される。いくつかの実施形態において、複数のサブブロックは、L×Kの同じサイズを有し、LおよびKは整数である。いくつかの実施形態において、L=Kである。いくつかの実施形態において、L=4またはK=4である。
いくつかの実施形態において、複数のサブブロックは異なるサイズを有する。いくつかの実施形態において、複数のサブブロックは非長方形形状を有する。いくつかの実施形態において、複数のサブブロックは、三角形またはくさび形を有する。
いくつかの実施形態において、複数のサブブロックのうち少なくとも1つのサブブロックのサイズは、動き情報を記憶するための最小符号化ユニット、最小予測ユニット、最小変換ユニットまたは最小ユニットのサイズに基づいて判定される。いくつかの実施形態において、少なくとも1つのサブブロックのサイズは、(N1×minW)×(N2×minH)で表現され、minW×minHは、最小符号化ユニット、予測ユニット、変換ユニット、または動き情報を記憶するためのユニットのサイズを表現し、N1およびN2は正の整数である。いくつかの実施形態において、複数のサブブロックのうちの少なくとも1つのサイズは、現在のブロックがビットストリーム表現で符号化される符号化モードに基づく。いくつかの実施形態において、符号化モードは、少なくとも、IBC(Intra Block Copy)マージモードまたは1つのサブブロック時間的動きベクトル予測モードを含む。いくつかの実施形態において、複数のサブブロックのうちの少なくとも1つのサイズが、ビットストリーム表現において信号通知される。
いくつかの実施形態において、方法は、映像の後続ブロックを変換のために複数のサブブロックに分割することを判定することを含み、現在のブロックにおける第1のサブブロックのサイズは後続のブロックにおける第2のサブブロックのサイズと異なる。いくつかの実施形態において、第1のサブブロックのサイズは第2のサブブロックのサイズと現在のブロック寸法と後続のブロックの寸法に従って異なる。いくつかの実施形態において、複数のサブブロックのうち少なくとも1つのサブブロックのサイズは、映像のカラーフォーマットまたは色成分に基づく。いくつかの実施形態において、第1のサブブロックは、映像の第1の色成分に関連付けられ、第2のサブブロックは、映像の第2の色成分に関連付けられ、第1のサブブロックと第2のサブブロックは、異なる寸法を有する。いくつかの実施形態において、映像のカラーフォーマットが4:2:0である場合、輝度成分に関連付けられた第1のサブブロックは2L×2Kの寸法を有し、彩度成分に関連付けられた第2のサブブロックはL×Kの寸法を有する。いくつかの実施形態において、映像のカラーフォーマットが4:2:2である場合、輝度成分に関連付けられた第1のサブブロックは2L×2Kの寸法を有し、彩度成分に関連付けられた第2のサブブロックは2L×Kの寸法を有する。いくつかの実施形態において、第1のサブブロックは、映像の第1の色成分に関連付けられ、第2のサブブロックは、映像の第2の色成分に関連付けられ、第1のサブブロックと第2のサブブロックは、同じ寸法を有する。いくつかの実施形態において、映像のカラーフォーマットが4:2:0または4:4:4である場合、輝度成分に関連付けられた第1のサブブロックは2L×2Kの寸法を有し、彩度成分に関連付けられた第2のサブブロックは、2L×2Kの寸法を有する。
いくつかの実施形態において、映像の第1の色成分に関連付けられた第1のサブブロックの動きベクトルは、映像の第2の色成分に関連付けられた1または複数のサブブロックに基づいて判定される。いくつかの実施形態において、第1のサブブロックの動きベクトルは、第2色成分に関連付けられた1または複数のサブブロックの動きベクトルの平均である。いくつかの実施形態において、現在のブロックはシングルツリー分割構造に基づいて複数のサブブロックに分割される。いくつかの実施形態において、現在のブロックは映像の彩度成分に関連付けられる。いくつかの実施形態において、現在のブロックは4×4のサイズを有する。
いくつかの実施形態において、複数のサブブロックのうちの少なくとも1つのサブブロックの動き情報は、最初の動きベクトルに基づいて参照ブロックを識別し、参照ブロックに基づいてサブブロックの動き情報を判定することに基づいて判定される。いくつかの実施形態において、参照ブロックは現在のピクチャ内に位置する。いくつかの実施形態において、参照ブロックは、1または複数の参照ピクチャのうちの参照ピクチャ内に位置する。いくつかの実施形態において、1または複数の参照ピクチャのうち少なくとも1つの参照ピクチャは現在のピクチャである。いくつかの実施形態において、参照ブロックは、時間的情報に従って1または複数の参照ピクチャのうち1つの参照ピクチャと同一位置に配置される、同一位置の参照ピクチャ内に配置される。いくつかの実施形態において、参照ピクチャは、照合されたブロックまたは照合されたブロックの近傍のブロックの動き情報に基づいて判定される。時間的情報に従って、同一位置のブロックは、現在のブロックと同一位置に配置される。いくつかの実施形態において、参照ブロックの最初の動きベクトルは、現在のブロックの1または複数の近傍のブロックまたはサブブロックの1または複数の近傍のブロックに基づいて判定される。いくつかの実施形態において、1または複数の近傍のブロックは、現在のブロックまたはサブブロックの隣接するブロックおよび/または非隣接ブロックを含む。いくつかの実施形態において、1または複数の近傍のブロックおよび参照ブロックのうち少なくとも1つのブロックは、同じピクチャ内に位置する。いくつかの実施形態において、1または複数の近傍のブロックのうちの少なくとも1つは、1または複数の参照ピクチャのうちの参照ピクチャ内に位置する。いくつかの実施形態において、1または複数の近傍のブロックのうち少なくとも1つは、時間的情報に従った1または複数の参照ピクチャのうちの1つと同一位置に配置される、同一位置の参照ピクチャ内に位置する。いくつかの実施形態において、参照ピクチャは照合されたブロックまたは照合されたブロックの近傍のブロックの動き情報に基づいて判定され、照合されたブロックは時間的情報により現在のブロックと同一位置に配置される。
いくつかの実施形態において、最初の動きベクトルは、1または複数の近傍のブロックに記憶された動きベクトルである。いくつかの実施形態において、最初の動きベクトルは、1または複数の近傍のブロックが変換のために検査する順番に基づいて判定される。いくつかの実施形態において、最初の動きベクトルは、現在のピクチャに関連付けられている、第1の識別された動きベクトルである。いくつかの実施形態において、参照ブロックの第1の動きベクトルは、動き候補のリストに基づいて判定される。いくつかの実施形態において、動き候補のリストは、IBC(Intra-Block Copy)候補のリスト、マージ候補のリスト、サブブロック時間的動きベクトル予測候補のリスト、または過去の動き予測結果に基づいて決定された履歴ベースの動き候補のリストを含む。いくつかの実施形態において、最初の動きベクトルは、リストにおいて選択された候補に基づいて判定される。いくつかの実施形態において、選択された候補は、リストにおける第1の候補である。いくつかの実施形態において、候補のリストは、従来の構造処理において空間的に近傍のブロックと異なる空間的に近傍のブロックを使用する処理に基づいて構成される。
いくつかの実施形態において、参照ブロックの最初の動きベクトルは、現在のピクチャにおける現在のブロックの位置に基づいて判定される。いくつかの実施形態において、参照ブロックの最初の動きベクトルは、現在のブロックの寸法に基づいて決定される。いくつかの実施形態において、最初の動きベクトルは、デフォルト値に等しく設定される。いくつかの実施形態において、最初の動きベクトルは、ビットストリーム表現において映像ユニットレベルで表される。いくつかの実施形態において、映像ユニットは、タイル、スライス、ピクチャ、ブリック、CTU(Coding Tree Unit)行、CTU、CTB(Coding Tree Block)、PU(Prediction Unit)、またはTU(Transform Unit)を含む。いくつかの実施形態において、サブブロックの最初の動きベクトルは現在のブロックの第2のサブブロックの別の最初の動きブロックとは異なる。いくつかの実施形態において、現在のブロックの複数のサブブロックの最初の動きベクトルは映像ユニットによって異なって判定される。いくつかの実施形態において、映像ユニットは、ブロック、タイルまたはスライスを含む。
いくつかの実施形態において、参照ブロックを認識する前に、最初の動きベクトルはF画素の整数精度に変換され、Fは1以上の正の整数である。いくつかの実施形態において、Fは、1、2、または4である。いくつかの実施形態において、最初の動きベクトルは、(vx,vy)で表現され、変換された動きベクトル(vx’,vy’)は、(vx×F,vy×F)で表現される。いくつかの実施形態において、サブブロックの左上の位置は(x,y)で表現され、サブブロックはL×Kのサイズを有し、Lは現在のサブブロックの幅であり、Kはサブブロックの高さである。参照ブロックは、(x+offsetX+vx’,y+offsetY+vy’)を含む領域として識別され、offsetXおよびoffsetは非負の値である。いくつかの実施形態において、offsetXは0であり、および/またはoffsetYは0である。いくつかの実施形態において、offsetXは、L/2、L/2+1、またはL/2-1である。いくつかの実施形態において、offsetYは、K/2、K/2+1、またはK/2-1である。いくつかの実施形態において、offsetXおよび/またはoffsetYは、ピクチャ、スライス、タイル、ブリックまたはイントラブロックコピー参照領域を含む範囲内でクリッピングされる。
いくつかの実施形態において、サブブロックの動きベクトルは参照ブロックの動き情報に基づいてさらに判定される。いくつかの実施形態において、サブブロックの動きベクトルは、参照ブロックの動きベクトルが現在のピクチャに向けられている場合、参照ブロックの動きベクトルと同じである。いくつかの実施形態において、サブブロックの動きベクトルは、参照ブロックの動きベクトルが現在のピクチャに向けられている場合、参照ブロックの動きベクトルに最初の動きベクトルを加えることに基づいて判定される。いくつかの実施形態において、サブブロックの動きベクトルは、サブブロックの動きベクトルがイントラブロックコピー参照領域に向かうような範囲内でクリッピングされる。いくつかの実施形態において、サブブロックの動きベクトルは、サブブロックのイントラブロックコピー候補の有効な動きベクトルである。
いくつかの実施形態において、サブブロックの動き情報を決定するために、サブブロックの1または複数のイントラブロックコピー候補を判定する。いくつかの実施形態において、1または複数のイントラブロックコピー候補は、サブブロックのマージ候補、サブブロックのサブブロック時間的動きベクトル予測候補、またはサブブロックのアフィンマージ候補のうちの1つを含む動き候補のリストに追加される。いくつかの実施形態において、1または複数のイントラブロックコピー候補は、リストにおけるサブブロックのマージ候補の前に位置する。いくつかの実施形態において、1または複数のイントラブロックコピー候補は、リストにおけるサブブロックの任意のサブブロック時間的動きベクトル予測候補の後に位置する。いくつかの実施形態において、1または複数のイントラブロックコピー候補は、リストにおけるサブブロックの継承または構成されたアフィン候補の後に位置する。いくつかの実施形態において、1または複数のイントラブロックコピー候補を動き候補のリストに加えるかどうかは、現在のブロックの符号化モードに基づいて判定される。いくつかの実施形態において、現在のブロックがIBC(Intra-Block Copy)サブブロック時間的動きベクトル予測モードで符号化する場合、1または複数のイントラブロックコピー候補は動き候補リストから除外される。
いくつかの実施形態において、1または複数のイントラブロックコピー候補が動き候補リストに加えられるかどうかは、現在のブロックのパーティション構造に基づく。いくつかの実施形態において、1または複数のイントラブロックコピー候補がリストにおけるサブブロックのマージ候補として加えられる。いくつかの実施形態において、異なる最初の動きベクトルに基づいて、1または複数のイントラブロックコピー候補が動き候補リストに加えられる。いくつかの実施形態において、ビットストリーム表現において、1または複数のイントラブロックコピー候補が動き候補のリストに加えられるかどうかが示される。いくつかの実施形態において、ビットストリーム表現において動き候補のリストを示すインデックスを信号通知するかどうかは、現在のブロックの符号化モードに基づく。いくつかの実施形態において、現在のブロックをイントラブロックコピーマージモードで符号化する場合、ビットストリーム表現において、イントラブロックコピーマージ候補を含む動き候補のリストを示すインデックスが信号通知される。いくつかの実施形態において、現在のブロックがイントラブロックコピーサブブロック時間的動きベクトル予測モードで符号化される場合、ビットストリーム表現において、イントラブロックコピーサブブロック時間的動きベクトル予測候補を含む動き候補のリストを示すインデックスが信号通知される。いくつかの実施形態において、複数のサブブロックに対してイントラブロックコピーサブブロック時間的動きベクトル予測モードのための動きベクトル差分が適用される。
いくつかの実施形態において、参照ブロックとサブブロックは映像の同じ色成分に関連付けられる。いくつかの実施形態において、現在のブロックを複数のサブブロックに分割するかどうかは、現在のブロックに関連付けられた符号化特性に基づく。いくつかの実施形態において、符号化特性は、デコーダパラメータセット、シーケンスパラメータセット、映像パラメータセット、ピクチャパラメータセット、APS、ピクチャヘッダ、スライスヘッダ、タイルグループヘッダ、LCU(Largest Coding Unit)、CU(Coding Unit)、LCUの行、LCUのグループ、変換ユニット、予測ユニット、予測ユニットブロックまたは映像符号化ユニットにおけるビットストリーム表現における構文フラグを含む。いくつかの実施形態において、符号化特性は、符号化ユニット、予測ユニット、変換ユニット、ブロックまたは映像符号化ユニットの位置を含む。いくつかの実施形態において、符号化特性は、現在のブロックまたは現在のブロックの近傍のブロックの寸法を含む。いくつかの実施形態において、符号化特性は、現在のブロックまたは現在のブロックの近傍のブロックの形状を含む。いくつかの実施形態において、符号化特性は、現在のブロックまたは現在のブロックの近傍のブロックのイントラ符号化モードを含む。いくつかの実施形態において、符号化特性は、現在のブロックの近傍のブロックの動きベクトルを含む。いくつかの実施形態において、符号化特性は、映像のカラーフォーマットの指示を含む。いくつかの実施形態において、符号化特性は、現在のブロックの符号化ツリー構造を含む。いくつかの実施形態において、符号化特性は、現在のブロックに関連付けられたスライスタイプ、タイルグループタイプ、またはピクチャタイプを含む。いくつかの実施形態において、符号化特性は、現在のブロックに関連付けられた色成分を含む。いくつかの実施形態において、符号化特性は、現在のブロックに関連付けられた時間層識別子を含む。いくつかの実施形態において、符号化特性は、ビットストリーム表現のための規格のプロファイル、レベル、または階層を含む。
図26は、本技術にしたがった映像処理の方法2600を示すフローチャートである。方法2600は、動作2610において、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックを複数のサブブロックに分割することを判定することを含む。複数のサブブロックの各々は、パターンに従って、対応する符号化技術を使用して、符号化表現で符号化される。方法は、動作2620において、判定に基づいて変換を実行することを更に含む。
いくつかの実施形態において、パターンは、複数のサブブロックのうちの第1のサブブロックを、映像領域からの参照サンプルを使用する修正IBC(Intra-Block Copy)符号化技術を用いて符号化することを規定する。いくつかの実施形態において、パターンは、複数のサブブロックのうちの第2のサブブロックを同じサブブロックからのサンプルを使用するイントラ予測符号化技術を用いて符号化することを規定する。いくつかの実施形態において、パターンは、複数のサブブロックのうちの第2のサブブロックを代表的な画素値のパレットを使用するパレット符号化技術を用いて符号化することを規定する。いくつかの実施形態において、パターンは、複数のサブブロックのうちの第2のサブブロックを時間的情報を使用するインター符号化技術を用いて符号化することを規定する。
いくつかの実施形態において、パターンは、複数のサブブロックのうちの第1のサブブロックを同じサブブロックからのサンプルを使用するイントラ予測符号化技術を用いて符号化することを規定する。いくつかの実施形態において、パターンは、複数のサブブロックのうちの第2のサブブロックを代表的な画素値のパレットを使用するパレット符号化技術を用いて符号化することを規定する。いくつかの実施形態において、パターンは、複数のサブブロックのうちの第2のサブブロックを時間的情報を使用するインター符号化技術を用いて符号化することを規定する。
いくつかの実施形態において、パターンは、複数のサブブロックのすべてが単一の符号化技術を用いて符号化されることを規定する。いくつかの実施形態において、単一の符号化技術は、複数のサブブロックを符号化するために同じサブブロックからのサンプルを使用するイントラ予測符号化技術を含む。いくつかの実施形態において、単一の符号化技術は、複数のサブブロックを符号化するために代表的な画素値のパレットを使用するパレット符号化技術を含む。
いくつかの実施形態において、1または複数の符号化技術のパターンが現在のブロックに適用される場合、サブブロック時間的動きベクトル予測モードの動き候補の履歴ベースのテーブルは、過去の変換における動き情報に基づいて決定された動き候補の履歴ベースのテーブルと同じままである。いくつかの実施形態において、履歴ベースのテーブルは、IBC符号化技術または非IBC符号化技術に対する。
いくつかの実施形態において、複数のサブブロックのうちの少なくとも1つのサブブロックがIBC符号化技術を用いて符号化されることをパターンが規定する場合、少なくとも1つのサブブロックのための1または複数の動きベクトルを使用して、IBCサブブロック時間的動きベクトル予測モードのための動き候補の履歴ベースのテーブルを更新し、動き候補の履歴ベースのテーブルは過去の変換における動き情報に基づいて判定される。いくつかの実施形態において、複数のサブブロックのうちの少なくとも1つのサブブロックがIBCインター符号化技術を用いて符号化されることをパターンが規定する場合、少なくとも1つのサブブロックのための1または複数の動きベクトルを使用して、非IBCサブブロック時間的動きベクトル予測モードのための動き候補の履歴ベースのテーブルを更新し、動き候補の履歴ベースのテーブルは過去の変換における動き情報に基づいて判定される。
いくつかの実施形態において、複数のサブブロックの境界をフィルタリングするフィルタリング処理の使用は、パターンに従って少なくとも1つの符号化技術を使用することに基づく。いくつかの実施形態において、少なくとも1つの符号化技術が適用される場合、複数のサブブロックの境界をフィルタリングするフィルタリング処理が適用される。いくつかの実施形態において、少なくとも1つの符号化技術が適用される場合、複数のサブブロックの境界をフィルタリングするフィルタリング処理は省略される。
いくつかの実施形態において、第2の符号化技術は、パターンに従う変換を、現在のブロックに対して無効化する。いくつかの実施形態において、第2の符号化技術は、サブブロック変換符号化技術、アフィン動き予測符号化技術、多重参照ラインのイントラ予測符号化技術、行列ベースのイントラ予測符号化技術、対称MVD(Motion Vector Diffenrece)符号化技術、MVDデコーダ側動き導出または改善符号化技術を用いるマージ、双方向最適フロー符号化技術、現在のブロックの寸法に基づいて低減された寸法を用いたセカンダリ変換符号化技術、または多重変換セット符号化技術のうちの少なくとも1つを含む。
いくつかの実施形態において、パターンによる少なくとも1つの符号化技術の使用は、ビットストリーム表現にて信号通知される。いくつかの実施形態において、使用はシーケンスレベル、ピクチャレベル、スライスレベル、タイルグループレベル、タイルレベル、ブリックレベル、CTU(Coding Tree Unit)レベル、CTB(Coding Tree Block)レベル、CU(Coding Unit)レベル、PU(Prediction Unit)レベル、TU(Transform Unit)、または別の映像ユニットレベルで信号通知される。いくつかの実施形態において、少なくとも1つの符号化技術は、修正IBC符号化技術を含み、修正IBC符号化技術は、動き候補リストにおける候補を示すインデックス値に基づいてビットストリーム表現にて示される。いくつかの実施形態において、修正IBC符号化技術で符号化された現在のブロックに予め規定された値を割り当てられる。
いくつかの実施形態において、パターンに従う少なくとも1つの符号化技術の使用が変換中に判定される。いくつかの実施形態において、現在のブロックからの参照サンプルが使用される現在のブロックを符号化するためのIBC(Intra Block Copy)符号化技術の使用は、ビットストリームにおいて信号通知される。いくつかの実施形態において、現在のブロックからの参照サンプルが使用される現在のブロックを符号化するためのIBC(Intra Block Copy)符号化技術の使用が変換中に判定される。
いくつかの実施形態において、現在のブロックの複数のサブブロックの動き情報は、映像の後続のブロックとビットストリーム表現との間での変換のための動きベクトル予測子として使用される。いくつかの実施形態において、現在のブロックの複数のサブブロックの動き情報は、映像の後続のブロックとビットストリーム表現との間での変換のために使用することは許可されない。いくつかの実施形態において、現在のブロックが少なくとも1つの符号化技術を用いて符号化された複数のサブブロックに分割することは、動き候補が映像のブロックまたはブロック内のサブブロックに適用可能であるかに基づいて判定される。
図27は、本技術にしたがった映像処理の方法2700を示すフローチャートである。方法2700は、動作2710において、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、現在のブロックの特徴に関連付けられた条件に基づいて、動き候補のリストに関する動作を判定することを含む。動き候補のリストは、符号化技術のために、または前回処理された映像のブロックからの情報に基づいて構成される。方法2700は、動作2720において、判定に基づいて変換を実行することをさらに含む。
いくつかの実施形態において、符号化技術は、マージ符号化技術、IBC(Intra Block Copy)サブブロック時間的動きベクトル予測符号化技術、サブブロックマージ符号化技術、IBC符号化技術、または現在のブロックの少なくとも1つのサブブロックを符号化するために現在のブロックの映像領域からの参照サンプルを使用する修正IBC符号化技術を含む。
いくつかの実施形態において、現在のブロックはW×Hの寸法を有し、WおよびHは正の整数である。条件は、現在のブロックの寸法に関する。いくつかの実施形態において、条件は、現在のブロックの符号化された情報または現在のブロックの近傍のブロックの符号化された情報に関する。いくつかの実施形態において、条件は、現在のブロックと別のブロックとの間で動き候補のリストを共有するマージ共有条件に関する。
いくつかの実施形態において、動作は、マージ符号化技術を使用して動き候補リストの空間的マージ候補を導出することを含む。いくつかの実施形態において、動作は、現在のブロックの空間的に近傍のブロックに基づいて動き候補リストの動き候補を導出することを含む。いくつかの実施形態において、空間的に近傍のブロックは現在のブロックの近傍のブロックまたは非隣接ブロックを含む。
いくつかの実施形態において、動作は、前回処理された映像ブロックの情報に基づいて構成された動き候補リストの動き候補を導出することを含む。いくつかの実施形態において、動作は、動き候補リストのペアワイズマージ候補を導出することを含む。いくつかの実施形態において、動作は、動き候補のリストにおける冗長なエントリを除去するための1または複数のプルーニング動作を含む。いくつかの実施形態において、1または複数のプルーニング動作は、動き候補のリストにおける空間的マージ候補に対する。
いくつかの実施形態において、動作は、変換の後、前回処理された映像ブロックの情報に基づいて構成された動き候補のリストを更新することを含む。いくつかの実施形態において、更新は、動き候補のリストにおける冗長性を除去するプルーニング動作を行わずに、導出された候補を動き候補のリストに加えることを含む。いくつかの実施形態において、動作は、動き候補のリストにデフォルト動き候補を追加することを含む。いくつかの実施形態において、デフォルト動き候補は、IBCサブブロック時間的動きベクトル予測符号化技術を使用したゼロ動き候補を含む。いくつかの実施形態において、条件が満たされた場合、動作はスキップされる。
いくつかの実施形態において、動作は、動き候補リストにおける動き候補を予め定義された順にチェックすることを含む。いくつかの実施形態において、動作は、動き候補リストにおける予め定義された数の動き候補をチェックすることを含む。いくつかの実施形態において、条件は、W×Hが閾値以上である場合に満たされる。いくつかの実施形態において、条件は、W×Hが閾値以上であり、現在のブロックがIBCサブブロック時間的動きベクトル予測符号化技術またはマージ符号化技術を用いて符号化される場合に満たされる。いくつかの実施形態において、閾値は1024である。
いくつかの実施形態において、条件は、Wおよび/またはHが閾値以上である場合に満たされる。いくつかの実施形態において、閾値は32である。いくつかの実施形態において、条件は、W×Hが閾値以下であり、現在のブロックがIBCサブブロック時間的動きベクトル予測符号化技術またはマージ符号化技術を用いて符号化される場合に満たされる。いくつかの実施形態において、閾値は16である。いくつかの実施形態において、閾値は32または64である。いくつかの実施形態において、条件が満たされる場合、空間的に近傍のブロックに基づいて判定された候補を動き候補のリストに挿入することを含む動作はスキップされる。
いくつかの実施形態において、条件は、WがT2に等しく、HがT3に等しく、現在のブロックの上側の近傍のブロックが利用可能であり、現在のブロックと同じ符号化技術で符号化される場合に満たされ、T2、T3は正の整数である。いくつかの実施形態において、条件は、近傍のブロックと現在のブロックが同じ符号化ツリーユニットにあるときに満たされる。
いくつかの実施形態において、条件は、WがT2に等しく、HがT3に等しく、現在のブロックの上側の近傍のブロックが利用可能でない、または現在のブロックが位置する現在の符号化ツリーユニットの外側にある場合に満たされ、T2およびT3が正の整数である。いくつかの実施形態において、T2は4であり、T3は8である。いくつかの実施形態において、条件は、WがT4に等しく、HがT5に等しく、現在のブロックの左側の近傍のブロックが利用可能であり、現在のブロックと同じ符号化技術で符号化された場合に満たされ、T4、T5は正の整数である。いくつかの実施形態において、条件は、WがT4に等しく、HがT5に等しく、現在のブロックの左側の近傍のブロックが利用不可である場合に満たされ、T4およびT5が正の整数である。いくつかの実施形態において、T4は8であり、T5は4である。
いくつかの実施形態において、条件は、W×Hが閾値以下であり、現在のブロックがIBCサブブロック時間的動きベクトル予測符号化技術またはマージ符号化技術を用いて符号化され、同じ符号化技術を使用して、現在のブロックの上側の第1の近傍のブロックと現在のブロックの左側の第2の近傍のブロックとが共に符号化される場合に、満たされる。いくつかの実施形態において、第1および第2の近傍のブロックが利用可能であり、IBC符号化技術を用いて符号化され、第2の近傍のブロックは現在のブロックと同じ符号化ツリーユニット内にある。いくつかの実施形態において、第1の近傍のブロックは利用不可であり、第2の近傍のブロックは利用可能であり、現在のブロックと同じ符号化ツリーユニット内にある。いくつかの実施形態において、第1および第2の近傍のブロックは利用不可である。いくつかの実施形態において、第1の近傍のブロックは利用可能であり、第2の近傍のブロックは利用不可である。いくつかの実施形態において、第1の近傍のブロックは利用不可であり、第2の近傍のブロックは現在のブロックが位置する符号化ツリーユニットの外側にある。いくつかの実施形態において、第1の近傍のブロックが利用可能であり、第2の近傍のブロックは現在のブロックが位置する符号化ツリーユニットの外側にある。いくつかの実施形態において、閾値は32である。いくつかの実施形態において、第1および第2の近傍のブロックは空間的マージ候補を導出するために使用される。いくつかの実施形態において、現在のブロックの左上のサンプルは、(x,y)に位置し、第2の近傍のブロックは、(x-1,y+H-1)に位置するサンプルをカバーする。いくつかの実施形態において、現在のブロックの左上のサンプルは、(x,y)に位置し、第2の近傍のブロックは、(x+W-1,y-1)に位置するサンプルをカバーする。
いくつかの実施形態において、同じ符号化技術はIBC符号化技術を含む。いくつかの実施形態において、同じ符号化技術はインター符号化技術を含む。いくつかの実施形態において、現在のブロックの近傍のブロックはA×Bに等しい寸法を有する。いくつかの実施形態において、現在のブロックの近傍のブロックはA×Bより大きい寸法を有する。いくつかの実施形態において、現在のブロックの近傍のブロックはA×Bより小さい寸法を有する。いくつかの実施形態において、A×Bは4×4に等しい。いくつかの実施形態において、閾値は予め定義される。いくつかの実施形態において、閾値はビットストリーム表現にて信号通知される。いくつかの実施形態において、閾値は、現在のブロックの符号化特性に基づき、符号化特性は現在のブロックを符号化する符号化モードを含む。
いくつかの実施形態において、条件は、現在のブロックが動き候補のリストを共有する親ノードを有し、現在のブロックがIBCサブブロックの時間的動きベクトル予測符号化技術またはマージ符号化技術を用いて符号化する場合に満たされる。いくつかの実施形態において、条件は、現在のブロックの符号化特性により適応的に変化する。
図28は、本技術にしたがった映像処理の方法2800を示すフローチャートである。方法2800は、動作2810において、映像の現在のブロックと映像のビットストリーム表現との間での変換のために、時間的情報に基づいてインター符号化技術で符号化された現在のブロックを複数のサブブロックに分割することを判定することを含む。複数のブロックのうちの少なくとも1つは、現在のブロックを含む現在のピクチャからの1または複数の映像領域からの参照サンプルを使用する修正IBC(Intra Block Copy)符号化技術を用いて符号化される。方法2800は、動作2820において、判定に基づいて変換を実行することを含む。
いくつかの実施形態において、映像領域は、現在のピクチャ、スライス、タイル、ブリックまたはタイルグループを含む。いくつかの実施形態において、インター符号化技術は、サブブロック時間的動きベクトル符号化技術を含み、現在のピクチャと現在のピクチャと異なる参照ピクチャとの両方に基づいて現在のブロックを符号化するかを示す1または複数の構文要素がビットストリーム表現に含まれる。いくつかの実施形態において、1または複数の構文要素は、現在のブロックが現在のピクチャおよび参照ピクチャの両方に基づいて符号化される場合、現在のブロックを符号化するために使用される参照ピクチャを示す。いくつかの実施形態において、1または複数の構文要素は、参照ピクチャに関連付けられた動き情報をさらに表し、動き情報は、少なくとも、動きベクトル予測インデックス、動きベクトル差分、または動きベクトル精度を含む。いくつかの実施形態において、第1の参照ピクチャリストは現在のピクチャのみを含み、第2の参照ピクチャリストは参照ピクチャのみを含む。いくつかの実施形態において、インター符号化技術は時間的マージ符号化技術を含み、動き情報は現在のブロックの近傍のブロックに基づいて判定され、動き情報は少なくとも動きベクトルまたは参照ピクチャを含む。いくつかの実施形態において、現在のピクチャのみに基づいて近傍のブロックを判定する場合、動き情報は現在のピクチャにのみ適用可能である。いくつかの実施形態において、現在のピクチャおよび参照ピクチャの両方に基づいて近傍のブロックを決定する場合、動き情報は現在のピクチャおよび参照ピクチャの両方に適用可能である。いくつかの実施形態において、動き情報は、現在のピクチャおよび参照ピクチャの両方に基づいて近傍のブロックを判定する場合にのみ、現在のピクチャに適用可能である。いくつかの実施形態において、近傍のブロックは参照ピクチャのみに基づいて判定される場合、マージ候補を判定するために破棄される。
いくつかの実施形態において、現在のピクチャからの参照ブロックおよび参照ピクチャからの参照ブロックには固定重み係数が割り当てられる。いくつかの実施形態において、固定重み係数はビットストリーム表現にて信号通知される。
いくつかの実施形態において、変換を実行することは、映像のブロックに基づいてビットストリーム表現を生成することを含む。いくつかの実施形態において、変換を実行することは、ビットストリーム表現から映像のブロックを生成することを含む。
映像符号化または映像復号化のための技術が開示されていることが理解されよう。これらの技術は、より優れた符号化効率および性能を実現するために、イントラブロックコピーおよびサブブロックに基づく映像処理を共に使用するための映像エンコーダまたはデコーダによって採用されてもよい。
開示される技術のいくつかの実施形態は、映像処理ツールまたはモードを有効化するように決定または判定することを含む。一例において、映像処理ツールまたはモードが有効化される場合、エンコーダは、映像のブロックを処理する際にツールまたはモードを使用するまたは実装するが、ツールまたはモードの使用に基づいて、結果として得られるビットストリームを必ずしも修正しなくてもよい。すなわち、映像のブロックから映像のビットストリーム表現への変換は、決定または判定に基づいて映像処理ツールまたはモードが有効化される場合に、映像処理ツールまたはモードを使用する。別の例において、映像処理ツールまたはモードが有効化される場合、デコーダは、ビットストリームが映像処理ツールまたはモードに基づいて修正されたことを知って、ビットストリームを処理する。すなわち、決定または判定に基づいて有効化された映像処理ツールまたはモードを使用して、映像のビットストリーム表現から映像のブロックへの変換が実行される。
開示される技術のいくつかの実施形態は、映像処理ツールまたはモードを無効化するように決定または判定することを含む。一例において、映像処理ツールまたはモードが無効にされている場合、エンコーダは、映像のブロックを映像のビットストリーム表現に変換する際に、ツールまたはモードを使用しない。別の例において、映像処理ツールまたはモードが無効にされている場合、デコーダは、決定または判定に基づいて有効化された映像処理ツールまたはモードを使用してビットストリームが修正されていないことを知って、ビットストリームを処理する。
本明細書に記載された開示された、およびその他の解決策、実施例、実施形態、モジュール、および機能動作の実装形態は、本明細書に開示された構造およびその構造的等価物を含め、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1または複数の組み合わせで実施してもよい。開示された、およびその他の実施形態は、1または複数のコンピュータプログラムプロダクト、たとえば、データ処理装置によって実装されるため、またはデータ処理装置の動作を制御するために、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1または複数のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶デバイス、機械可読記憶基板、メモリデバイス、機械可読伝播信号をもたらす物質の組成物、またはこれらの1または複数の組み合わせであってもよい。「データ処理装置」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサ、若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を含む。この装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1または複数の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成した信号、例えば、機械で生成した電気、光、または電磁信号であり、適切な受信装置に送信するための情報を符号化するために生成される。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、また、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとして含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1または複数のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1または複数のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。コンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開することも可能である。
本明細書に記載された処理およびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1または複数のコンピュータプログラムを実行する1または複数のプログラマブルプロセッサによって行うことができる。処理およびロジックフローはまた、特定用途のロジック回路、例えば、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって行うことができ、装置はまた、特別目的のロジック回路として実装することができる。
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用および専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの任意の1または複数のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1または複数のメモリデバイスとである。一般的に、コンピュータは、データを記憶するための1または複数の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含み、例えば、EPROM、EEPROM、フラッシュ記憶装置、磁気ディスク、例えば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスク等の半導体記憶装置を含む。処理装置およびメモリは、特定用途のロジック回路によって補完されてもよく、または特定用途のロジック回路に組み込まれてもよい。
本特許明細書は多くの詳細を含むが、これらは、任意の主題の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許文献において別個の実施形態のコンテキストで説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、1つの例のコンテキストで説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1つ以上の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブコンビネーションまたはサブコンビネーションのバリエーションに向けられてもよい。
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で行われること、または示された全ての動作が行われることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムの構成要素の分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
いくつかの実装形態および例のみが記載されており、この特許文献に記載され図示されているコンテンツに基づいて、他の実施形態、拡張および変形が可能である。

Claims (13)

  1. 映像処理の方法であって、
    映像の第1の映像ブロックと、前記映像のビットストリームとの間の変換のために、ブロックベクトル候補リストを構成することと、
    前記ブロックベクトル候補リストに基づいて、第1の予測モードにおける前記第1の映像ブロックに対する動き情報を判定することであって、前記第1の予測モードにおいて、前記第1の映像ブロックの予測サンプルは、前記第1の映像ブロックを含む同じ映像領域のサンプル値のブロックから導出される、ことと、
    前記第1の映像ブロックのサイズに関する第1の条件に基づいて、前記第1の映像ブロックの前記動き情報を有する第1の履歴ベースの予測子テーブルを更新するか否かを判定することと、
    前記第1の映像ブロックの前記動き情報に基づいて前記変換を実行することと、
    を有し、
    前記第1の履歴ベースの予測子テーブルは、前記第1の映像ブロックを含むピクチャにおける前の映像ブロックの対応する動き情報にそれぞれが関連付けられたブロックベクトル候補のセットを含み、
    前記第1の履歴ベースの予測子テーブルにおける前記動き候補の配列は、前記動き候補の前記履歴ベースの予測子テーブルへの追加の順番に基づき、
    前記第1の履歴ベースの予測子テーブルは、閾値よりも大きい前記第1の映像ブロックの前記サイズに応じて、前記第1の映像ブロックの前記動き情報を用いて更新され
    前記第1の予測モードにおいて、前記ブロックベクトル候補リストを構成することは、前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補を挿入することを有し、
    前記第1の予測モードにおいて、前記ブロックベクトル候補が前記ブロックベクトル候補リストに挿入された際に1または複数のプルーニング動作が実行され、
    プルーニング動作の最大数は、前記閾値より大きくない前記第1の映像ブロックの前記サイズに応じて、減らされる、または、0に設定される、方法。
  2. 前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補は、前記閾値よりも大きい前記第1の映像ブロックの前記サイズに応じて、前記ブロックベクトル候補リストに挿入される、請求項に記載の方法。
  3. 前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補は、前記第1の予測モードと同じである前記空間的近傍のブロックの前記予測モードに応じて、前記ブロックベクトル候補リストに挿入される、請求項に記載の方法。
  4. 前記ブロックベクトル候補リストは、前記閾値よりも大きくない前記第1の映像ブロックの前記サイズに応じて、前記履歴ベースの予測子テーブルおよび/またはデフォルトの候補からの動き候補のみを含む、請求項1から3のいずれか一項に記載の方法。
  5. 前記閾値よりも大きい前記第1の映像ブロックの前記サイズは、16よりも大きいW×Hであり、
    Wは、前記第1の映像ブロックの幅であり、Hは前記第1の映像ブロックの高さである、請求項1からのいずれか一項に記載の方法。
  6. 動き候補リストおよび第2の履歴ベースの予測子テーブルは、前記映像の第2の映像ブロックに対する第2の予測モードにて適用され、
    前記第2の予測モードにおいて、前記第2の映像ブロックの予測サンプルは、前記第2の映像ブロックを有するピクチャとは異なるピクチャのサンプル値のブロックから導出される、請求項1からのいずれか一項に記載の方法。
  7. 前記第2の履歴ベースの予測子テーブルは、前記第2の映像ブロックのサイズと、前記ビットストリームに含まれる閾値との間の関係に関する第2の条件が満たされることに応じて更新される、請求項に記載の方法。
  8. 前記第2の履歴ベースの予測子テーブルからの動き候補と、前記動き候補リストに存在した他の動き候補の間のプルーニング動作は、実行されない、請求項に記載の方法。
  9. 前記変換は、前記映像を前記ビットストリームに符号化することを含む、請求項1からのいずれか一項に記載の方法。
  10. 前記変換は、前記映像を前記ビットストリームから復号化することを含む、請求項1からのいずれか一項に記載の方法。
  11. プロセッサと、命令を有する非一時メモリを有する、映像データを処理するための装置であって、
    前記プロセッサにより前記命令が実行されることにより、前記プロセッサに、
    映像の第1の映像ブロックと、前記映像のビットストリームとの間の変換のために、ブロックベクトル候補リストを構成することと、
    前記ブロックベクトル候補リストに基づいて、第1の予測モードにおける前記第1の映像ブロックに対する動き情報を判定することであって、前記第1の予測モードにおいて、前記第1の映像ブロックの予測サンプルは、前記第1の映像ブロックを含む同じ映像領域のサンプル値のブロックから導出される、ことと、
    前記第1の映像ブロックのサイズに関する第1の条件に基づいて、前記第1の映像ブロックの前記動き情報を有する第1の履歴ベースの予測子テーブルを更新するか否かを判定することと、
    前記第1の映像ブロックの前記動き情報に基づいて前記変換を実行することと、
    を実行させ、
    前記第1の履歴ベースの予測子テーブルは、前記第1の映像ブロックを含むピクチャにおける前の映像ブロックの対応する動き情報にそれぞれが関連付けられたブロックベクトル候補のセットを含み、
    前記第1の履歴ベースの予測子テーブルにおける前記動き候補の配列は、前記動き候補の前記履歴ベースの予測子テーブルへの追加の順番に基づき、
    前記第1の履歴ベースの予測子テーブルは、閾値よりも大きい前記第1の映像ブロックの前記サイズに応じて、前記第1の映像ブロックの前記動き情報を用いて更新され
    前記第1の予測モードにおいて、前記ブロックベクトル候補リストを構成することは、前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補を挿入することを有し、
    前記第1の予測モードにおいて、前記ブロックベクトル候補が前記ブロックベクトル候補リストに挿入された際に1または複数のプルーニング動作が実行され、
    プルーニング動作の最大数は、前記閾値より大きくない前記第1の映像ブロックの前記サイズに応じて、減らされる、または、0に設定される、装置。
  12. プロセッサに、
    映像の第1の映像ブロックと、前記映像のビットストリームとの間の変換のために、ブロックベクトル候補リストを構成することと、
    前記ブロックベクトル候補リストに基づいて、第1の予測モードにおける前記第1の映像ブロックに対する動き情報を判定することであって、前記第1の予測モードにおいて、前記第1の映像ブロックの予測サンプルは、前記第1の映像ブロックを含む同じ映像領域のサンプル値のブロックから導出される、ことと、
    前記第1の映像ブロックのサイズに関する第1の条件に基づいて、前記第1の映像ブロックの前記動き情報を有する第1の履歴ベースの予測子テーブルを更新するか否かを判定することと、
    前記第1の映像ブロックの前記動き情報に基づいて前記変換を実行することと、
    を実行させ、
    前記第1の履歴ベースの予測子テーブルは、前記第1の映像ブロックを含むピクチャにおける前の映像ブロックの対応する動き情報にそれぞれが関連付けられたブロックベクトル候補のセットを含み、
    前記第1の履歴ベースの予測子テーブルにおける前記動き候補の配列は、前記動き候補の前記履歴ベースの予測子テーブルへの追加の順番に基づき、
    前記第1の履歴ベースの予測子テーブルは、閾値よりも大きい前記第1の映像ブロックの前記サイズに応じて、前記第1の映像ブロックの前記動き情報を用いて更新され
    前記第1の予測モードにおいて、前記ブロックベクトル候補リストを構成することは、前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補を挿入することを有し、
    前記第1の予測モードにおいて、前記ブロックベクトル候補が前記ブロックベクトル候補リストに挿入された際に1または複数のプルーニング動作が実行され、
    プルーニング動作の最大数は、前記閾値より大きくない前記第1の映像ブロックの前記サイズに応じて、減らされる、または、0に設定される、命令を格納する非一時的コンピュータ可読記録媒体。
  13. 映像のビットストリームを格納するための方法であって、
    前記映像の第1の映像ブロックに対するブロックベクトル候補リストを構成することと、
    前記ブロックベクトル候補リストに基づいて、第1の予測モードにおける前記第1の映像ブロックに対する動き情報を判定することであって、前記第1の予測モードにおいて、前記第1の映像ブロックの予測サンプルは、前記第1の映像ブロックを含む同じ映像領域のサンプル値のブロックから導出される、ことと、
    前記第1の映像ブロックのサイズに関する第1の条件に基づいて、前記第1の映像ブロックの前記動き情報を有する第1の履歴ベースの予測子テーブルを更新するか否かを判定することと、
    前記第1の映像ブロックの前記動き情報に基づいて前記ビットストリームを生成することと、
    前記ビットストリームを、非一時的コンピュータ可読記録媒体に格納することと、
    を有し、
    前記第1の履歴ベースの予測子テーブルは、前記第1の映像ブロックを含むピクチャにおける前の映像ブロックの対応する動き情報にそれぞれが関連付けられたブロックベクトル候補のセットを含み、
    前記第1の履歴ベースの予測子テーブルにおける前記動き候補の配列は、前記動き候補の前記履歴ベースの予測子テーブルへの追加の順番に基づき、
    前記第1の履歴ベースの予測子テーブルは、閾値よりも大きい前記第1の映像ブロックの前記サイズに応じて、前記第1の映像ブロックの前記動き情報を用いて更新され
    前記第1の予測モードにおいて、前記ブロックベクトル候補リストを構成することは、前記第1の映像ブロックの空間的近傍のブロックから導出されたブロックベクトル候補を挿入することを有し、
    前記第1の予測モードにおいて、前記ブロックベクトル候補が前記ブロックベクトル候補リストに挿入された際に1または複数のプルーニング動作が実行され、
    プルーニング動作の最大数は、前記閾値より大きくない前記第1の映像ブロックの前記サイズに応じて、減らされる、または、0に設定される、方法。
JP2021572490A 2019-06-06 2020-06-08 映像符号化のための動き候補リストの構成 Active JP7460661B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023204671A JP2024023522A (ja) 2019-06-06 2023-12-04 映像符号化のための動き候補リストの構成

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CN2019090409 2019-06-06
CNPCT/CN2019/090409 2019-06-06
CN2019092438 2019-06-22
CNPCT/CN2019/092438 2019-06-22
CNPCT/CN2019/105180 2019-09-10
CN2019105180 2019-09-10
PCT/CN2020/094865 WO2020244660A1 (en) 2019-06-06 2020-06-08 Motion candidate list construction for video coding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023204671A Division JP2024023522A (ja) 2019-06-06 2023-12-04 映像符号化のための動き候補リストの構成

Publications (2)

Publication Number Publication Date
JP2022535903A JP2022535903A (ja) 2022-08-10
JP7460661B2 true JP7460661B2 (ja) 2024-04-02

Family

ID=73652980

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021572490A Active JP7460661B2 (ja) 2019-06-06 2020-06-08 映像符号化のための動き候補リストの構成
JP2023204671A Pending JP2024023522A (ja) 2019-06-06 2023-12-04 映像符号化のための動き候補リストの構成

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023204671A Pending JP2024023522A (ja) 2019-06-06 2023-12-04 映像符号化のための動き候補リストの構成

Country Status (6)

Country Link
US (2) US11653002B2 (ja)
EP (1) EP3967040A4 (ja)
JP (2) JP7460661B2 (ja)
KR (1) KR102662603B1 (ja)
CN (2) CN113994699B (ja)
WO (1) WO2020244660A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838514B2 (en) * 2018-08-06 2023-12-05 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium storing bitstream
US11122260B2 (en) 2019-02-22 2021-09-14 Mediatek Inc. Method and apparatus of Merge list generation for Intra Block Copy mode
WO2020244660A1 (en) * 2019-06-06 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for video coding
KR20220051171A (ko) * 2019-09-03 2022-04-26 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법, 및 복호 방법
US11627328B2 (en) * 2020-10-16 2023-04-11 Tencent America LLC Method and apparatus for video coding
US20240073406A1 (en) * 2022-08-30 2024-02-29 Tencent America LLC Temporal Motion Vector Predictor Candidates Search

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016138513A1 (en) 2015-02-27 2016-09-01 Arris Enterprises, Inc. Modification of unification of intra block copy and inter signaling related syntax and semantics
JP2017535163A (ja) 2014-10-07 2017-11-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated イントラbcとインターの統合
JP2017535180A (ja) 2014-10-14 2017-11-24 クアルコム,インコーポレイテッド イントラbcとインター予測の統合のためのamvpおよびマージ候補リスト導出
US10841607B2 (en) 2018-08-13 2020-11-17 Lg Electronics Inc. Inter prediction method and apparatus based on history-based motion vector

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014181A (en) * 1997-10-13 2000-01-11 Sharp Laboratories Of America, Inc. Adaptive step-size motion estimation based on statistical sum of absolute differences
KR20050119422A (ko) * 2004-06-16 2005-12-21 삼성전자주식회사 움직임 보상에 기반한 입력 영상의 노이즈 예측 및 그장치와, 이를 사용한 노이즈 제거 및 동영상 부호화 방법,이를 수행하기 위한 프로그램이 기록된 기록 매체
WO2013077659A1 (ko) * 2011-11-24 2013-05-30 에스케이텔레콤 주식회사 모션 벡터의 예측 부호화/복호화 방법 및 장치
US9549180B2 (en) 2012-04-20 2017-01-17 Qualcomm Incorporated Disparity vector generation for inter-view prediction for video coding
US20130294513A1 (en) * 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
US20130329007A1 (en) 2012-06-06 2013-12-12 Qualcomm Incorporated Redundancy removal for advanced motion vector prediction (amvp) in three-dimensional (3d) video coding
US20130336406A1 (en) 2012-06-14 2013-12-19 Qualcomm Incorporated Redundancy removal for merge/skip mode motion information candidate list construction
US20140071235A1 (en) 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
US9491461B2 (en) 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
US9699450B2 (en) 2012-10-04 2017-07-04 Qualcomm Incorporated Inter-view predicted motion vector for 3D video
US9924168B2 (en) 2012-10-05 2018-03-20 Hfi Innovation Inc. Method and apparatus of motion vector derivation 3D video coding
US9357214B2 (en) 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced merge/skip mode and advanced motion vector prediction (AMVP) mode for 3D video
US9538180B2 (en) 2012-12-17 2017-01-03 Qualcomm Incorporated Motion vector prediction in video coding
US9253503B2 (en) * 2012-12-18 2016-02-02 Xerox Corporation Computationally efficient motion estimation with learning capabilities for video compression in transportation and regularized environments
WO2014165555A1 (en) 2013-04-02 2014-10-09 Vid Scale, Inc. Enhanced temporal motion vector prediction for scalable video coding
US9609347B2 (en) 2013-04-04 2017-03-28 Qualcomm Incorporated Advanced merge mode for three-dimensional (3D) video coding
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
US9800895B2 (en) 2013-06-27 2017-10-24 Qualcomm Incorporated Depth oriented inter-view motion vector prediction
WO2015003383A1 (en) 2013-07-12 2015-01-15 Mediatek Singapore Pte. Ltd. Methods for inter-view motion prediction
US10045014B2 (en) 2013-07-15 2018-08-07 Mediatek Singapore Pte. Ltd. Method of disparity derived depth coding in 3D video coding
US9432685B2 (en) 2013-12-06 2016-08-30 Qualcomm Incorporated Scalable implementation for parallel motion estimation regions
US20150189333A1 (en) 2013-12-27 2015-07-02 Industrial Technology Research Institute Method and system for image processing, decoding method, encoder, and decoder
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US20150271515A1 (en) * 2014-01-10 2015-09-24 Qualcomm Incorporated Block vector coding for intra block copy in video coding
WO2015131387A1 (en) 2014-03-07 2015-09-11 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
WO2015138936A1 (en) 2014-03-13 2015-09-17 Huawei Technologies Co., Ltd. Improved method for screen content coding
US20170195677A1 (en) 2014-05-22 2017-07-06 Mediatek Inc. Method of Intra Block Copy with Flipping for Image and Video Coding
EP3155812B1 (en) 2014-06-16 2023-04-05 QUALCOMM Incorporated Simplified shifting merge candidate and merge list derivation in 3d-hevc
EP3180917B1 (en) * 2014-09-01 2022-04-20 HFI Innovation Inc. Method of intra picture block copy for screen content and video coding
JP2017532885A (ja) 2014-09-26 2017-11-02 ヴィド スケール インコーポレイテッド 時間ブロックベクトル予測を用いたイントラブロックコピー符号化
US11477477B2 (en) 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US10306229B2 (en) * 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10057574B2 (en) 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
CA2981916C (en) 2015-04-13 2021-08-31 Mediatek, Inc. Methods of constrained intra block copy for reducing worst case bandwidth in video coding
US10148977B2 (en) 2015-06-16 2018-12-04 Futurewei Technologies, Inc. Advanced coding techniques for high efficiency video coding (HEVC) screen content coding (SCC) extensions
WO2017059415A1 (en) 2015-10-02 2017-04-06 Vid Scale, Inc. Color correction with a lookup table
GB2561507B (en) * 2016-01-07 2021-12-22 Mediatek Inc Method and apparatus for affine merge mode prediction for video coding system
JP2019519972A (ja) 2016-05-05 2019-07-11 ヴィド スケール インコーポレイテッド イントラコーディングのための制御点ベースのイントラ方向表現
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US10326986B2 (en) 2016-08-15 2019-06-18 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10721489B2 (en) 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US11025903B2 (en) 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
CN110574377B (zh) * 2017-05-10 2021-12-28 联发科技股份有限公司 用于视频编解码的重新排序运动向量预测候选集的方法及装置
JP2019017002A (ja) 2017-07-05 2019-01-31 財團法人工業技術研究院Industrial Technology Research Institute 映像符号化方法、映像復号方法、映像符号器及び映像復号器
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US20190116374A1 (en) 2017-10-17 2019-04-18 Qualcomm Incorporated Coding motion information of video data using coding structure-based candidate list construction
EP3711299A1 (en) 2017-11-14 2020-09-23 Qualcomm Incorporated Unified merge candidate list usage
US11388398B2 (en) 2018-01-11 2022-07-12 Qualcomm Incorporated Video coding using local illumination compensation
CN117294837A (zh) 2018-04-02 2023-12-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
CN110662059B (zh) 2018-06-29 2021-04-20 北京字节跳动网络技术有限公司 使用查找表存储先前编码的运动信息并用其编码后续块的方法和装置
WO2020003258A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Virtual merge candidates
CN110662054B (zh) 2018-06-29 2023-01-06 北京字节跳动网络技术有限公司 用于视频处理的方法、装置、计算机可读存储介质
CN110662064B (zh) * 2018-06-29 2022-06-14 北京字节跳动网络技术有限公司 Lut中的运动候选的检查顺序
WO2020008330A1 (en) 2018-07-01 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Priority-based non-adjacent merge design
TWI734133B (zh) 2018-07-02 2021-07-21 大陸商北京字節跳動網絡技術有限公司 更新查找表的規則
US10743016B2 (en) * 2018-07-06 2020-08-11 Mediatek Inc. Inherited motion information for decoding a current coding unit in a video coding system
US10440378B1 (en) * 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
US10958934B2 (en) * 2018-07-27 2021-03-23 Tencent America LLC History-based affine merge and motion vector prediction
US10362330B1 (en) * 2018-07-30 2019-07-23 Tencent America LLC Combining history-based motion vector prediction and non-adjacent merge prediction
CN110858906B (zh) 2018-08-26 2023-05-30 北京字节跳动网络技术有限公司 组合的基于历史的运动矢量预测符和多运动模型解码
TW202025760A (zh) 2018-09-12 2020-07-01 大陸商北京字節跳動網絡技術有限公司 要檢查多少個hmvp候選
CN110944183B (zh) 2018-09-23 2023-09-05 北京字节跳动网络技术有限公司 在帧间模式下利用非子块空时运动矢量预测
TWI822863B (zh) 2018-09-27 2023-11-21 美商Vid衡器股份有限公司 360度視訊寫碼樣本導出
US11051034B2 (en) * 2018-10-08 2021-06-29 Qualcomm Incorporated History-based motion vector predictor
WO2020084556A1 (en) 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block motion candidate list in video coding
WO2020088689A1 (en) 2018-11-02 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Usage of hmvp candidates in geometry partition prediction mode
EP3847814A4 (en) 2018-11-06 2021-07-14 Beijing Bytedance Network Technology Co. Ltd. POSITION DEPENDENT STORAGE, MOVEMENT INFORMATION
WO2020094049A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Extensions of inter prediction with geometric partitioning
WO2020094151A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in pairwise average candidate calculations
WO2020098647A1 (en) * 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Bandwidth control methods for affine prediction
WO2020098713A1 (en) 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for prediction
WO2020098695A1 (en) 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
WO2020098810A1 (en) 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with motion vector difference in video processing
CN117528076A (zh) 2018-11-22 2024-02-06 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的构建方法
CN113170106A (zh) 2018-11-28 2021-07-23 北京字节跳动网络技术有限公司 帧内块复制模式中运动参考的扩展方法
CN113170182B (zh) 2018-12-03 2024-01-26 北京字节跳动网络技术有限公司 不同预测模式下的修剪方法
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
JP7343097B2 (ja) 2018-12-29 2023-09-12 エスゼット ディージェイアイ テクノロジー カンパニー リミテッド 動画処理方法、装置、およびコンピュータプログラム
CN109618157A (zh) * 2018-12-29 2019-04-12 东南大学 一种视频显示流压缩编码的硬件实现系统及方法
WO2020140242A1 (zh) 2019-01-03 2020-07-09 北京大学 视频处理方法和装置
JP7275286B2 (ja) 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
US11032560B2 (en) * 2019-01-17 2021-06-08 Tencent America LLC Method and apparatus for video coding without updating the HMVP table
CN113302919A (zh) 2019-01-17 2021-08-24 北京字节跳动网络技术有限公司 在视频处理中使用虚拟候选预测和加权预测
CN113647109A (zh) 2019-02-17 2021-11-12 北京字节跳动网络技术有限公司 帧内块复制(ibc)模式和非ibc帧间模式的运动候选列表构建
WO2020185889A1 (en) 2019-03-11 2020-09-17 Futurewei Technologies, Inc. Sub-picture level filtering in video coding
KR20210134038A (ko) 2019-03-13 2021-11-08 에스지 디제이아이 테크놀러지 코., 엘티디 비디오 처리 방법 및 기기
WO2020244658A1 (en) 2019-06-06 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Sub-block based intra block copy
WO2020244660A1 (en) * 2019-06-06 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for video coding
CN114009037A (zh) 2019-06-22 2022-02-01 北京字节跳动网络技术有限公司 帧内块复制模式的运动候选列表构建

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017535163A (ja) 2014-10-07 2017-11-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated イントラbcとインターの統合
JP2017535180A (ja) 2014-10-14 2017-11-24 クアルコム,インコーポレイテッド イントラbcとインター予測の統合のためのamvpおよびマージ候補リスト導出
WO2016138513A1 (en) 2015-02-27 2016-09-01 Arris Enterprises, Inc. Modification of unification of intra block copy and inter signaling related syntax and semantics
US10841607B2 (en) 2018-08-13 2020-11-17 Lg Electronics Inc. Inter prediction method and apparatus based on history-based motion vector

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHEN, Jianle et al.,Algorithm Description for Versatile Video Coding and Test Model 5 (VTM 5),JVET-N1002 (version 1),ITU,2019年05月21日,pp.28-29, 65-67,JVET-N1002-v1.docx
ZHANG, Li et al.,CE4-related: Restrictions on History-Based Motion Vector Prediction,JVET-M0272 (version 4),ITU,2019年01月17日,pp.1-4,JVET-M0272_r2.docx

Also Published As

Publication number Publication date
JP2024023522A (ja) 2024-02-21
JP2022535903A (ja) 2022-08-10
EP3967040A4 (en) 2022-11-30
KR102662603B1 (ko) 2024-04-30
EP3967040A1 (en) 2022-03-16
US20230059008A1 (en) 2023-02-23
CN113994699B (zh) 2024-01-12
CN113994699A (zh) 2022-01-28
US11653002B2 (en) 2023-05-16
KR20220016840A (ko) 2022-02-10
WO2020244660A1 (en) 2020-12-10
CN117354507A (zh) 2024-01-05
US20220103828A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
KR102662449B1 (ko) 디코더 측 정제 툴들의 크기 선택 적용
JP7425808B2 (ja) 動き候補リスト構築プロセスの条件付き実行
JP7460661B2 (ja) 映像符号化のための動き候補リストの構成
WO2020259426A1 (en) Motion candidate list construction for intra block copy mode
CN114175636B (zh) 自适应参数集中的自适应环路滤波的指示
WO2020244659A1 (en) Interactions between sub-block based intra block copy and different coding tools
CN113966616B (zh) 使用临近块信息的运动候选列表构建
CN113557720B (en) Video processing method, apparatus and non-transitory computer readable medium

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230519

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240112

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240321

R150 Certificate of patent or registration of utility model

Ref document number: 7460661

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150