IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ベイジン バイトダンス ネットワーク テクノロジー カンパニー リミテッドの特許一覧 ▶ バイトダンス インコーポレイテッドの特許一覧

特開2023-156417イントラブロックコピーコーディングされたブロックにおけるブロックベクトルのコーディング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023156417
(43)【公開日】2023-10-24
(54)【発明の名称】イントラブロックコピーコーディングされたブロックにおけるブロックベクトルのコーディング
(51)【国際特許分類】
   H04N 19/70 20140101AFI20231017BHJP
   H04N 19/105 20140101ALI20231017BHJP
   H04N 19/176 20140101ALI20231017BHJP
【FI】
H04N19/70
H04N19/105
H04N19/176
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023130143
(22)【出願日】2023-08-09
(62)【分割の表示】P 2021568847の分割
【原出願日】2020-05-25
(31)【優先権主張番号】PCT/CN2019/088454
(32)【優先日】2019-05-25
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】520476341
【氏名又は名称】北京字節跳動網絡技術有限公司
【氏名又は名称原語表記】Beijing Bytedance Network Technology Co., Ltd.
【住所又は居所原語表記】Room B-0035, 2/F, No.3 Building, No.30, Shixing Road, Shijingshan District Beijing 100041 China
(71)【出願人】
【識別番号】520477474
【氏名又は名称】バイトダンス インコーポレイテッド
【氏名又は名称原語表記】BYTEDANCE INC.
【住所又は居所原語表記】12655 West Jefferson Boulevard, Sixth Floor, Suite No. 137 Los Angeles, California 90066 United States of America
(74)【代理人】
【識別番号】110002000
【氏名又は名称】弁理士法人栄光事務所
(72)【発明者】
【氏名】ジャン リー
(72)【発明者】
【氏名】シュー ジジョン
(72)【発明者】
【氏名】ジャン カイ
(72)【発明者】
【氏名】リウ ホンビン
(57)【要約】      (修正有)
【課題】ブロックベクトル信号通知および/またはマージ候補を使用しつつ、映像をイントラブロックコーディングに基づいて復号化または符号化するための方法、装置およびシステムを提供する。
【解決手段】映像処理方法は、映像の映像領域と前記映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC候補の最大数に基づいて、IBC(Intra Block Copy)AMVP(Advanced Motion Vector Prediction)モードのためのMVD(Motion Vector Difference)関連構文要素を選択的に含み、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される。
【選択図】図20A
【特許請求の範囲】
【請求項1】
映像処理の方法であって、
映像の映像領域と、前記映像のビットストリーム表現との間の変換を実行すること、
を有し、
前記ビットストリーム表現は、前記映像の変換中に使用されるIBC(Intra Block Copy)候補の第1のタイプの最大数に基づいて、IBC AMVP(Advanced Motion Vector Prediction)モードに対するMVD(Motion Vector Prediction)関連構文要素を選択的に含み、
IBCモードが適用される場合、前記映像領域のサンプルが、前記映像領域に対応する映像ピクチャにおける他のサンプルから予測される、方法。
【請求項2】
前記MVD関連構文要素は、コーディングされた動きベクトル予測子インデックス、動きベクトル予測子のコーディングされた精度、動きベクトル差分、および前記IBC AMVPモードの動きベクトル差分のコーディングされた精度、のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
K以下であるIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は前記IBC AMVPモードに対する前記MDV関連構文要素の信号通知を除外し、前記IBC AMVPモードは無効であると推定され、Kは整数である、請求項1に記載の方法。
【請求項4】
K以下であるIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は動きベクトル差分の信号通知を除外し、前記IBC AMVPモードは無効であると推定され、Kは整数である、請求項1に記載の方法。
【請求項5】
Kよりも大きいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現はコーディングされた動きベクトル予測子インデックス、動きベクトル予測子のコーディングされた精度、前記IBC AMVPモードの動きベクトル差分のコーディングされた精度、のうちの少なくとも1つを選択的に含み、Kは整数である、請求項1に記載の方法。
【請求項6】
K=0、または、K=1である、請求項3~5のいずれか一項に記載の方法。
【請求項7】
1に等しいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、前記IBC AMVPモードに対する動きベクトル予測子インデックスを除外する、請求項1に記載の方法。
【請求項8】
前記IBC AMVPモードに対する前記動きベクトル予測子インデックスは、ゼロであると推定される、請求項7に記載の方法。
【請求項9】
ゼロに等しいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、動きベクトル予測子の精度、および/または、前記IBC AMVPモードの動きベクトル差分の精度を除外する、請求項1に記載の方法。
【請求項10】
ゼロよりも大きいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、動きベクトル予測子の精度、および/または、前記IBC AMVPモードの動きベクトル差分の精度を除外する、請求項1に記載の方法。
【請求項11】
IBC候補の前記第1のタイプの前記最大数は、IBC動き候補の最大数(maxIBCCandNumにて示される)である、請求項1~10のいずれか一項に記載の方法。
【請求項12】
IBC候補の前記第1のタイプの前記最大数は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)である、請求項1~10のいずれか一項に記載の方法。
【請求項13】
IBC候補の前記第1のタイプの前記最大数は、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)である、請求項1~10のいずれか一項に記載の方法。
【請求項14】
IBC候補の前記第1のタイプの前記最大数は、前記ビットストリーム表現にて信号通知される、請求項1~10のいずれか一項に記載の方法。
【請求項15】
映像処理のための方法であって、
映像の映像領域と、前記映像のビットストリーム表現との間の変換のために、IBC(Intra Block Copy)モードの使用の指示が前記映像領域に対して無効化され、かつ、前記IBCモードの前記使用が前記映像にてシーケンスレベルにて有効化されていること、を判定することと、
前記判定に基づいて、前記変換を実行することと、
を有し、
前記IBCモードが適用される場合、前記映像領域のサンプルは、前記映像領域に対応する映像ピクチャにおける他のサンプルから予測される、方法。
【請求項16】
前記映像領域は、前記映像ピクチャの、ピクチャ、スライス、タイル、タイルグループ、または、ブリックに対応する、請求項15に記載の方法。
【請求項17】
前記ビットストリーム表現は、前記判定に関連付けられてた前記指示を含む、請求項15に記載の方法。
【請求項18】
前記指示は、ピクチャ、スライス、タイル、ブリック、または、APS(Adaptation Parameter Set)にて信号通知される、請求項17に記載の方法。
【請求項19】
前記指示は、PPS(Picture Parameter Set)、スライスヘッダ、ピクチャヘッダ、タイルヘッダ、タイルグループヘッダ、または、ブリックヘッダにて信号通知される、請求項18に記載の方法。
【請求項20】
前記IBCモードは、スクリーンコンテンツとは異なる前記映像の映像コンテンツに基づいて無効化される、請求項15に記載の方法。
【請求項21】
前記IBCモードは、カメラキャプチャコンテンツである前記映像の映像コンテンツに基づいて無効化される、請求項15に記載の方法。
【請求項22】
映像処理の方法であって、
映像の映像領域と、前記映像のビットストリーム表現との間の変換を実行すること
を有し、
前記ビットストリーム表現は、前記映像領域の前記変換中に使用されるIBC候補の第1のタイプの最大数に基づいて、IBC(Intra Block Copy)モードの使用に関する指示、および/または、1または複数のIBC関連構文要素を選択的に含み、
前記IBCモードが適用される場合、前記映像領域のサンプルは、前記映像領域に対応する映像ピクチャにおける他のサンプルから予測される、方法。
【請求項23】
IBC候補の前記第1のタイプの前記最大数は、インターコーディングされたブロックに対するマージ候補の最大数に等しい、請求項22に記載の方法。
【請求項24】
ゼロに等しいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、IBCスキップモードの信号通知を除外し、前記IBCスキップモードは、無効であると推定される、請求項22に記載の方法。
【請求項25】
ゼロに等しいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、IBCマージモードまたはIBC AMVP(Advanced Motion Vector Prediction)モードの信号通知を除外し、前記IBCモードは無効であると推定される、請求項22に記載の方法。
【請求項26】
ゼロに等しいIBC候補の前記第1のタイプの前記最大数に基づいて、前記ビットストリーム表現は、マージモードの信号通知を除外し、IBCマージモードは無効であると推定される、請求項22に記載の方法。
【請求項27】
IBC候補の前記第1のタイプの前記最大数は、IBC動き候補の最大数(maxIBCCandNumにて示される)、IBCマージ候補の最大数(maxIBCMrgNumにて示される)、または、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)、である請求項22~26のいずれか一項に記載の方法。
【請求項28】
IBC候補の前記第1のタイプの前記最大数は、前記ビットストリーム表現にて信号通知される、請求項22~26のいずれか一項に記載の方法。
【請求項29】
前記変換は、前記映像領域の画素値を前記ビットストリーム表現から生成することを有する、請求項1~28のいずれか一項に記載の方法。
【請求項30】
前記変換は、前記ビットストリーム表現を前記映像領域の画素値から生成することを有する、請求項1~28のいずれか一項に記載の方法。
【請求項31】
請求項1~30のいずれか一項に記載の方法を実装するように構成されたプロセッサを有する映像処理装置。
【請求項32】
実行された際に、プロセッサに、請求項1~30のいずれか一項に記載の方法を実装させるプログラムコードを格納するコンピュータ記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
パリ条約に基づく適用可能な特許法および/または規則に基づいて、本願は、2019年5月25日出願の国際特許出願第PCT/CN2019/088454号の優先権および利益を適時に主張することを目的とする。法に基づくすべての目的のために、上記出願の開示全体は、本明細書の開示の一部として参照により援用される。
【0002】
本明細書は、映像および画像の符号化および復号化技術に関する。
【背景技術】
【0003】
デジタル映像は、インターネットおよび他のデジタル通信ネットワークにおいて最大の帯域幅の使用量を占めている。映像を受信および表示することが可能である接続されたユーザ機器の数が増加するにつれ、デジタル映像の使用に対する帯域幅需要は増大し続けることが予測される。
【発明の概要】
【0004】
開示された技術は、ブロックベクトル信号通知および/またはマージ候補を使用しつつ、映像のイントラブロックコーディングに基づく復号化または符号化を行う、映像または画像デコーダまたは、エンコーダの実施形態によって使用されてもよい。
【0005】
1つの代表的な態様において、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC(Intra Block Copy)候補の最大数に基づいて、IBC AMVP(Advanced Motion Vector Prediction)モードのためのMVD(Motion Vector Difference)関連構文要素を選択的に含み、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される。
【0006】
別の代表的な態様において、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換のために、映像領域に対してIBC(Intra Block Copy)モードの使用の指示が無効化され、且つ映像のシーケンスレベルでIBCモードの使用が有効化されることを判定することと、判定に基づいて、変換を実行することであって、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、こととを含む。
【0007】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC(Intra Block Copy)候補の最大数に基づいて、IBCモードおよび/または1または複数のIBC関連構文要素の使用に関する指示を選択的に含み、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される。
【0008】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用される、第1のタイプのIBC(Intra Block Copy)候補の最大数の指示は、ビットストリーム表現において、変換中に使用されるインターモードのマージ候補の最大数とは独立して信号通知され、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される。
【0009】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と前記映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数(maxIBCCandNumにて示される)は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)、およびIBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)の関数であり、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される。
【0010】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数(maxIBCCandNumにて示される)は、映像領域のコーディングされたモード情報に基づく。
【0011】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域とこの映像のビットストリーム表現との間での変換を実行することを含み、復号化されたIBC(Intra Block Copy)AMVP(Advanced Motion Vector Prediction)マージインデックス、または、復号化IBCマージインデックスは、IBC動き候補の最大数(maxIBCCandNumにて示される)より小さい。
【0012】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックス、または、IBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、変換中のデフォルト予測ブロックを使用することと、を含む。
【0013】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックス、または、IBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、映像領域を無効なブロックベクトルを有するものとして扱うことによって、変換を実行することと、を含む。
【0014】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間の変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックス、または、IBCマージ候補インデックスが条件を満たさないことを判定することと、判定に基づいて、補足BV(Block Vector)候補リストを生成することと、補足BV候補リストを使用して、変換を実行することと、を含む。
【0015】
さらに別の代表的な態様では、映像処理のための方法が開示される。方法は、映像の映像領域と映像のビットストリーム表現との間の変換を実行することを含み、IBC(Intra Block Copy) AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)は、2に等しくない。
【0016】
別の例示的な態様において、上述された方法は、プロセッサを含む映像デコーダによって実装されてもよい。
【0017】
別の例示的な態様において、上述された方法は、プロセッサを含む映像エンコーダによって実装されてもよい。
【0018】
さらに別の例示的な態様において、これらの方法は、プロセッサ実行可能命令の形式で実施されてもよく、コンピュータ可読プログラム媒体に記憶されてもよい。
【0019】
これらの、および他の態様は、本明細書でさらに説明される。
【図面の簡単な説明】
【0020】
図1】マージ候補リスト構築のための導出処理の一例を示す。
図2】空間的マージ候補の位置の例を示す。
図3】空間的マージ候補の冗長性チェックに考慮される候補対の例を示す。
図4A】N×2Nおよび2N×Nのパーティションの第2のPU(Prediction Unit)の位置の例を示す。
図4B】N×2Nおよび2N×Nのパーティションの第2のPU(Prediction Unit)の位置の例を示す。
図5】時間的マージ候補のための動きベクトルのスケーリングの説明図である。
図6】時間的マージ候補、C0およびC1の候補位置の例を示す。
図7】結合双方向予測マージ候補の例を示す。
図8】動きベクトル予測候補の導出処理を要約する。
図9】空間的動きベクトル候補のための動きベクトルスケーリングの説明を示す。
図10A】4パラメータアフィン動きモデルおよび6パラメータアフィン動きモデルを示す。
図10B】4パラメータアフィン動きモデルおよび6パラメータアフィン動きモデルを示す。
図11】サブブロックごとのアフィンMVF(Motion Vector Field)の例である。
図12】アフィンマージモードの候補位置の例を示す。
図13】修正後のマージリスト構築処理の一例を示す。
図14】三角形分割ベースのインター予測の例を示す。
図15】UMVE(Ultimate Motion Vector Expression)検索処理の一例を示す。
図16】UMVE検索点の一例を示す。
図17】DMVRにおけるリスト0とリスト1との間にミラーリングされるMVD(0,1)の例を示す。
図18】1回の繰り返しでチェックされてもよいMVの例を示す。
図19】IBC(Intra Block Copy)の例を示す。
図20A】映像処理のための方法の例を示すフローチャートである。
図20B】映像処理のための方法の例を示すフローチャートである。
図20C】映像処理のための方法の例を示すフローチャートである。
図20D】映像処理のための方法の例を示すフローチャートである。
図20E】映像処理のための方法の例を示すフローチャートである。
図20F】映像処理のための方法の例を示すフローチャートである。
図20G】映像処理のための方法の例を示すフローチャートである。
図20H】映像処理のための方法の例を示すフローチャートである。
図20I】映像処理のための方法の例を示すフローチャートである。
図20J】映像処理のための方法の例を示すフローチャートである。
図20K】映像処理のための方法の例を示すフローチャートである。
図21】映像処理装置の例を示すブロック図である。
図22】開示された技術を実装することができる例示的な映像処理システムを示すブロック図である。
【発明を実施するための形態】
【0021】
本明細書は、展開または復号化されたデジタル映像または画像の品質を向上させるために、画像または映像ビットストリームのデコーダによって使用できる様々な技術を提供する。簡潔にするために、本明細書では、用語「映像」は、一連のピクチャ(従来から映像と呼ばれる)および個々の画像の両方を含むように使用される。さらに、映像エンコーダは、さらなる符号化に使用される復号化されたフレームを再構成するために、符号化の処理中にこれらの技術を実装してもよい。
【0022】
本明細書では、理解を容易にするために章の見出しを使用しており、1つの章に開示された実施形態をその章にのみ限定するものではない。このように、ある章の実施形態は、他の章の実施形態と組み合わせることができる。
【0023】
1 発明の概要
【0024】
本発明は、映像コーディング技術に関する。具体的には、動きベクトルコーディングに関する。HEVCのような既存の映像符号化規格に適用してもよいし、規格(Versatile Video Coding)を確定させるために適用してもよい。本発明は、将来の映像コーディング規格または映像コーデックにも適用可能である。
【0025】
2 背景技術
【0026】
映像コーディング規格は、主に周知の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規格の策定に取り組んでいる。
【0027】
VVCドラフトの最新バージョン、即ち、Versatile Video Coding(ドラフト5)は、以下を参照することができる。
【0028】
phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v2.zip
【0029】
VTMと呼ばれるVVCの最新の参照ソフトウェアは、以下で確認することができる。
【0030】
vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-5.0
【0031】
2.1 HEVC/H.265におけるインター予測
【0032】
インターコーディングされたCU(Coding Unit)の場合、パーティションモードに従って、1つのPU(Prediction Unit)、2つのPUでコーディングされてもよい。各インター予測されたPUは、1つまたは2つの参照ピクチャリストのための動きパラメータを有する。動きパラメータは、動きベクトルおよび参照ピクチャインデックスを含む。2つの参照ピクチャリストのうちの1つの参照ピクチャリストの使用は、inter_pred_idcを使用して信号通知されてもよい。動きベクトルは、予測子に対する差分として明確にコーディングされてもよい。
【0033】
CUがスキップモードにてコーディングされる場合、1つのPUがCUに関連付けられ、有意な残差係数がなく、コーディングされた動きベクトル差分も参照ピクチャインデックスもない。マージモードが指定され、これにより、現在のPUのための動きパラメータは、空間的および時間的候補を含む近傍のPUから取得する。マージモードは、スキップモードのためだけでなく、任意のインター予測されたPUに適用することができる。マージモードの代替的に、動きパラメータの明示的な送信があり、動きベクトル(より正確には、動きベクトル予測子と比較したMVD(Motion Vector Difference))、各参照ピクチャリストの対応する参照ピクチャインデックス、および参照ピクチャリストの使用方法が、各PUに明確に信号通知される。このようなモードを、本開示ではAMVP(Advanced Motion Vector Prediction)と呼ぶ。
【0034】
2つの参照ピクチャリストのうちの1つを使用することを信号通知が示す場合、サンプルの1つのブロックからPUが生成される。これを「単一予測」と呼ぶ。PスライスおよびBスライスの両方に対して単一予測が利用可能である。
【0035】
両方の参照ピクチャリストを使用することを信号通知が示す場合、サンプルの2つのブロックからPUが生成される。これを「双方向予測」と呼ぶ。Bスライスのみに双方向予測が利用可能である。
【0036】
以下、HEVCに規定されるインター予測モードについて詳細に説明する。まず、マージモードについて説明する。
【0037】
2.1.1 参照ピクチャバッファ
【0038】
HEVCにおいて、インター予測という用語は、現在の復号化されたピクチャ以外の参照ピクチャのデータ要素(例えば、サンプル値または動きベクトル)から導出された予測を示すために使用される。H.264/AVCと同様に、複数の参照ピクチャから1つの画像を予測することができる。インター予測に使用される参照ピクチャは、1または複数の参照ピクチャリストにまとめられる。参照インデックスは、リストにおけるいずれの参照ピクチャを使用して予測信号を生成するかを識別する。
【0039】
1つの参照ピクチャリストList0はPスライスに使用され、2つの参照ピクチャリストList0およびList1はBスライスに使用される。なお、リスト0/1に含まれる参照ピクチャは、撮影/表示順の観点から、過去および将来のピクチャからのものであってもよい。
【0040】
2.1.2 マージモード
2.1.2.1 マージモードの候補の導出
【0041】
マージモードを使用してPUを予測する場合、マージ候補リストにおけるエントリを指すインデックスがビットストリームから構文解析され、これを使用して動き情報が検索される。このリストの構成は、HEVC規格で規定されており、以下のステップのシーケンスに基づいてまとめることができる。
●ステップ1:初期候補の導出
〇ステップ1.1:空間的候補の導出
〇ステップ1.2:空間的候補の冗長性チェック
〇ステップ1.3:時間的候補の導出
●ステップ2:追加候補の挿入
〇ステップ2.1:双方向予測候補の作成
〇ステップ2.2:ゼロ動き候補の挿入
【0042】
これらのステップは図1にも概略的に示されている。空間的マージ候補の導出のために、5つの異なる位置にある候補の中から最大4つのマージ候補が選択される。時間的マージ候補の導出のために、2つの候補の中から最大1つのマージ候補が選択される。デコーダ側ではPUごとに一定数の候補を想定しているので、ステップ1で得た候補数がスライスヘッダで信号通知されるマージ候補の最大数(MaxNumMergeCand)に達しない場合、追加候補が生成される。候補の数は一定であるので、トランケイテッドユーナリー2値化(TU:Truncated Unary)を使用して最良マージ候補のインデックスを符号化する。CUのサイズが8に等しい場合、現在のCUのすべてのPUは、2N×2Nの予測ユニットのマージ候補リストと同じ1つのマージ候補リストを共有する。
【0043】
以下、上述したステップに関連付けられた動作を詳しく説明する。
【0044】
図1は、マージ候補リスト構築のための導出処理の一例を示す。
【0045】
2.1.2.2 空間的候補の導出
【0046】
空間的マージ候補の導出において、図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は考慮されない。
【0047】
図2は、空間的マージ候補の位置の例を示す。
【0048】
図3は、空間的マージ候補の冗長性チェックに考慮される候補対の例を示す。
【0049】
図4は、N×2Nおよび2N×Nのパーティションの第2のPUの位置の例を示す。
【0050】
2.1.2.3 時間的候補の導出
【0051】
このステップにおいて、1つの候補のみがリストに追加される。具体的には、この時間的マージ候補の導出において、所与の参照ピクチャリストにおける現在のピクチャとの間に最小のPOC差を有するピクチャに属する同一位置PUに基づいて、スケーリングされた動きベクトルを導出する。スライスヘッダにおいて、同一位置のPU(co-located PU)の導出に用いられる参照ピクチャリストが明確に信号通知される。図5に点線で示すように、時間的マージ候補のスケーリングされた動きベクトルが得られ、これは、POC距離tbおよびtdを利用して、同一位置のPUの動きベクトルからスケーリングしたものであり、tbは、現在のピクチャの参照ピクチャと現在のピクチャのPOC差として規定され、tdは、同一位置のPUの参照ピクチャと同一位置のピクチャのPOC差として規定される。時間的マージ候補の参照ピクチャインデックスはゼロに等しく設定される。スケーリング処理の実際的な実現については、HEVC仕様に記載されている。Bスライスの場合、2つの動きベクトル、即ち、1つは参照ピクチャリスト0のためのもの、もう1つは参照ピクチャリスト1のためのものが取得され、これらを組み合わせることによって、双方向予測マージ候補が形成される。
【0052】
図5は、時間的マージ候補のための動きベクトルのスケーリングの説明図である。
【0053】
参照フレームに属する同一位置のPU(Y)において、図6に示すように、候補C0と候補C1との間で時間的候補の位置が選択される。位置C0のPUが利用可能でなく、イントラコーディングされ、または、現在のCTU(Coding Tree Unit)(別名、LCU(Largest Coding Unit))行の外側にある場合は、位置C1が使用される。そうでない場合、位置C0が時間的マージ候補の導出に使用される。
【0054】
図6は、時間的マージ候補、C0およびC1の候補位置の例を示す。
【0055】
2.1.2.4 追加候補の挿入
【0056】
空間的-時間的マージ候補の他に、2つの追加のタイプのマージ候補、すなわち、結合双方向予測マージ候補およびゼロマージ候補がある。空間的-時間的マージ候補を利用して、結合双方向予測マージ候補を生成する。結合双方向予測マージ候補は、Bスライスのみに使用される。最初の候補の第1の参照ピクチャリスト動きパラメータと別の候補の第2の参照ピクチャリスト動きパラメータとを組み合わせることで、結合双方向予測候補が生成される。これら2つのタプルが異なる動き仮説を提供する場合、これらのタプルは、新しい双方向予測候補を形成する。一例として、図7は、元のリスト(左側)における、mvL0およびrefIdxL0、またはmvL1およびrefIdxL1を有する2つの候補を用いて、最終リスト(右側)に加えられる結合双方向予測マージ候補を生成する場合を示す。これらの追加のマージ候補を生成するために考慮される組み合わせについては、様々な規則が存在する。
【0057】
図7は、結合双方向予測マージ候補の例を示す。
【0058】
ゼロ動き候補が挿入され、マージ候補リストにおける残りのエントリを埋めることにより、MaxNumMergeCand容量にヒットする。これらの候補は、空間的変位がゼロであり、新しいゼロ動き候補をリストに加える度にゼロから始まり増加する参照ピクチャインデックスを有する。最終的には、これらの候補に対して冗長性チェックは行われない。
【0059】
2.1.3 AMVP
【0060】
AMVPは、動きベクトルと近傍のPUとの間の空間的-時間的な相関を利用し、これを動きパラメータの明確な伝送に用いる。各参照ピクチャリストに対し、まず、左側、上側の時間的に近傍のPU位置の可用性をチェックし、冗長な候補を取り除き、ゼロベクトルを加えることで、候補リストの長さを一定にすることで、動きベクトル候補リストを構築する。次いで、エンコーダは、候補リストから最良の予測子を選択し、選択された候補を示す対応するインデックスを送信することができる。マージインデックスの信号通知と同様に、最良の動きベクトル候補のインデックスは、トランケイテッドユーナリーを使用して符号化される。この場合に符号化対象の最大値は2である(図8参照)。以下の章では、動きベクトル予測候補の導出処理の詳細を説明する。
【0061】
2.1.3.1 AMVP候補の導出
【0062】
図8は、動きベクトル予測候補の導出処理を要約している。
【0063】
図8は、動きベクトル予測候補の導出処理の例を示す。
【0064】
動きベクトル予測において、空間的動きベクトル候補と時間的動きベクトル候補という2つのタイプの動きベクトル候補が考慮される。空間的動きベクトル候補を導出するために、図2に示したように、5つの異なる位置にある各PUの動きベクトルに基づいて、最終的には2つの動きベクトル候補を導出する。
【0065】
時間的動きベクトル候補を導出するために、2つの異なる同一位置に配置された位置に基づいて導出された2つの候補から1つの動きベクトル候補を選択する。空間的-時間的候補の最初のリストを作成した後、リストにおける重複した動きベクトル候補を除去する。候補の数が2よりも多い場合、関連づけられた参照ピクチャリストにおける参照ピクチャインデックスが1よりも大きい動きベクトル候補をリストから削除する。空間的―時間的動きベクトル候補の数が2未満である場合は、追加のゼロ動きベクトル候補をリストに加える。
【0066】
2.1.3.2 空間的動きベクトル候補
【0067】
空間的動きベクトル候補の導出において、図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)
【0068】
最初に非空間的スケーリングの場合をチェックし、次に空間的スケーリングを行う。参照ピクチャリストにかかわらず、POCが近傍のPUの参照ピクチャと現在のPUの参照ピクチャとで異なる場合、空間的スケーリングが考慮される。左側候補のすべてのPUが利用可能でないか、または、イントラコーディングされている場合、上側の動きベクトルのスケーリングが、左側および上側のMV候補の並列導出に役立つ。そうでない場合、上側の動きベクトルに対して空間的スケーリングは許可されない。
【0069】
図9は、空間的動きベクトル候補のための動きベクトルスケーリングの説明を示す。
【0070】
空間的スケーリング処理において、図9に示すように、時間的スケーリングと同様にして、近傍のPUの動きベクトルをスケーリングする。主な違いは、現在のPUの参照ピクチャリストおよびインデックスを入力として与え、実際のスケーリング処理は時間的スケーリングと同じである。
【0071】
2.1.3.3 時間的動きベクトル候補
【0072】
参照ピクチャインデックスを導出する以外は、時間的マージ候補を導出するための処理は、すべて、空間的動きベクトル候補を導出するための処理と同じである(図6参照)。
参照ピクチャインデックスは、デコーダに通知される。
【0073】
2.2 VVCにおけるインター予測方法
【0074】
インター予測を改善するための新しいコーディングツールには、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(Decoder-side Motion Vector Refinement)、BIO(BI-Optical flow)(別名、BDOF)などがある。
【0075】
VVCでサポートされる3つの異なるマージリスト構築処理がある。
1)サブブロックマージ候補リスト:ATMVPおよびアフィンマージ候補を含む。1つのマージリスト構築処理は、アフィンモードおよびATMVPモードの両方に対して共有される。なお、ATMVPおよびアフィンマージ候補は順に追加されてもよい。サブブロックマージリストのサイズはスライスヘッダで信号通知され、最大値は5である。
2)通常マージリスト:残りのコーディングブロックについては、1つのマージリスト構築処理を共有する。ここで、空間的/時間的/HMVP、ペアワイズ結合された双方向予測マージ候補、および動きゼロ候補が順に挿入されてもよい。通常のマージリストのサイズはスライスヘッダにて信号通知され、最大値は6である。MMVD、TPM、CIIPは通常のマージリストに依存する。
3)IBCマージリスト:通常のマージリストと同様に実行される。
【0076】
同様に、VVCでサポートされるAMVPリストは次の3つである。
1)アフィンAMVP候補リスト
2)通常のAMVP候補リスト
3)IBC AMVP候補リスト:JVET-N0843の採用に起因して、IBCマージリストと同じ構築処理
【0077】
2.2.1 VVCにおけるコーディングブロック構造
【0078】
VVCにおいて、4分木/2分木/3分木(QT/BT/TT)構造を採用し、ピクチャを正方形または長方形のブロックに分割する。
【0079】
QT/BT/TTの他に、Iフレームのために、別個のツリー(別名、デュアルコーディングツリー)がVVCにおいても採用される。別個のツリーを使用して、コーディングブロック構造は、輝度および彩度成分について別個に信号通知される。
【0080】
また、CUは、(例えば、PUがTUに等しいが、CUより小さいイントラサブパーティション予測、および、PUがCUに等しいが、TUがPUより小さいインターコーディングされたブロックのサブブロック変換などのような)2つの特定のコーディング方法でコーディングされたブロック以外は、PUとTUとに設定される。
【0081】
2.2.2 アフィン予測モード
【0082】
HEVCにおいて、MCP(Motion Compensation Prediction)のために並進運動モデルのみが適用される。一方、現実世界において、動きには様々な種類があり、例えば、ズームイン/ズームアウト、回転、透視運動、および他の不規則な動きがある。VVCにおいて、4パラメータアフィンモデルおよび6パラメータアフィンモデルを用いて、簡易アフィン変換動き補償予測を適用する。図10Aおよび図10Bに示すように、ブロックのアフィン動き領域は、4パラメータアフィンモデルの場合、2つのCPMV(Control Point Motion Vector)によって表され、6パラメータアフィンモデルの場合、3つのCPMVによって表される。
【0083】
図10Aおよび図10Bは以下を示す。10A:簡易アフィン動きモデル-パラメータアフィン、10B:6-パラメータアフィンモード。
【0084】
ブロックのMVF(Motion Vector Field)は、式(1)における4パラメータアフィンモデル(ここで、4パラメータは変数a、b、e、およびfとして定義される)および式(2)における6パラメータアフィンモデル(ここで、4パラメータは変数a、b、c、d、e、およびfとして定義される)を用いて、それぞれ以下の式で表される。
【0085】
【数1】
【0086】
【数2】
【0087】
ここで、(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)に対して、代表点を利用して、サブブロック全体の動きベクトルを導出する。
【0088】
動き補償予測をさらに簡単にするために、サブブロックに基づくアフィン変換予測が適用される。各M×N(現行のVVCでは、MおよびNの両方が4に設定される)のサブブロックの動きベクトルを導出するために、各サブブロックの中心サンプルの動きベクトルは、図11に示すように、式(1)および式(2)に従って算出し、1/16の小数精度に丸められる。そして、1/16画素の動き補償補間フィルタを適用し、導出された動きベクトルを用いて各サブブロックの予測を生成する。1/16画素の補間フィルタは、アフィンモードで導入される。
【0089】
図11は、サブブロックごとのアフィンMVFの例を示す。
【0090】
MCP後、各サブブロックの高精度動きベクトルが丸められ、通常の動きベクトルと同じ精度で保存する。
【0091】
2.2.3 ブロック全体のマージ
2.2.3.1 並進通常マージモードのマージリスト構築
2.2.3.1.1 HMVP(History-based Motion Vector Prediction)
【0092】
マージリストの設計とは異なり、VVCでは、HMVP(History-based Motion Vector Prediction)法が採用されている。
【0093】
HMVPには、前回コーディングされた動き情報が記憶される。前回コーディングされたブロックの動き情報をHMVP候補として定義する。複数のHMVP候補はHMVPテーブルと称する表に格納され、この表は符号化/復号化の処理中にオンザフライで維持される。新しいタイル/LCU行/スライスの符号化/復号化を開始する際に、HMVPテーブルは空にされる。非TPMモードのインターコーディングされたブロックおよび非サブブロックがあるときはいつでも、関連する動き情報は、新しいHMVP候補としてテーブルの最後のエントリに追加される。全体のコーディングフローを図12に示す。
【0094】
2.2.3.1.2 通常のマージリスト構築処理
【0095】
(並進移動のための)通常のマージリストの構築は、以下のステップのシーケンスに従って要約することができる。
●ステップ1:空間的候補の導出
●ステップ2:HMVP候補の挿入
●ステップ3:ペアワイズ平均候補の挿入
●ステップ4:デフォルトの動き候補
【0096】
HMVP候補は、AMVPおよびマージ候補リスト構築処理の両方に使用することができる。図13は、修正されたマージ候補リスト構築処理(青で強調表示)を描画する。TMVP候補を挿入した後、マージ候補リストが満杯でない場合、HMVPテーブルに格納されたHMVP候補を利用してマージ候補リストを満たすことができる。1つのブロックは、通常、動き情報の観点から、最も近接した近傍のブロックとの間に高い相関を有することを考慮し、表におけるHMVP候補をインデックスの降順に挿入する。表の最後のエントリをまずリストに加え、最後に最初のエントリを加える。同様に、HMVP候補に対して冗長性除去が適用される。利用可能なマージ候補の総数が、信号通知された許容されたマージ候補の最大数に達すると、マージ候補リスト構築処理が終了する。
【0097】
なお、すべての空間的/時間的/HMVP候補は、非IBCモードでコーディングされる。そうでない場合、通常のマージ候補リストに追加することは許可されない。
【0098】
HMVPテーブルは、5つまでの正規の動き候補を含み、各々がユニークである。
【0099】
2.2.3.2 TPM(Triangular Prediction Mode)
【0100】
VTM4において、インター予測のために三角形分割モードがサポートされる。三角形分割モードは、8×8以上であり、マージモードでコーディングされ、MMVDまたはCIIPモードではコーディングされないCUにのみ適用される。これらの条件を満たすCUの場合、CUレベルフラグは、三角形分割モードが適用されるかどうかを示すために信号通知される。
【0101】
このモードを使用する場合、図13に示すように、対角線分割または逆対角線分割のいずれかを使用して、CUは2つの三角形のパーティションに等分される。CUにおける各三角形のパーティションは、それ自体の動きを使用してインター予測され、各パーティションに対して単一予測のみが許可される。すなわち、各パーティションは、1つの動きベクトルおよび1つの参照インデックスを有する。従来の双方向予測と同様に、各CUに2つの動き補償予測しか必要としないようにするために、単一予測の動き制約を適用する。
【0102】
図14は、三角形分割ベースのインター予測の例を示す。
【0103】
CUレベルフラグが、現在のCUが三角形パーティションモードでコーディングされていることを示す場合、三角形分割の方向(対角線または逆対角線)を示すフラグ、および2つのマージインデックス(各パーティションに1つ)をさらに信号通知する。各三角形パーティションを予測した後、適応重みを有するブレンド処理を使用して、対角または逆対角エッジに沿ったサンプル値が調整される。これがCU全体の予測信号であり、他の予測モードと同様に、CU全体に対して変換および量子化処理が適用される。最後に、三角形分割モードを使用して予測されたCUの動きフィールドが4×4単位で記憶する。
【0104】
通常のマージ候補リストは、動きベクトルを余分にプルーニングすることなく、三角形分割マージ予測に再利用される。通常のマージ候補リストにおける各マージ候補について、そのL0または、L1動きベクトルのうちの1つのみを三角形予測に使用する。また、L0対L1の動きベクトルを選択する順番は、そのマージインデックスパリティに基づく。このスキームによれば、通常のマージリストを直接使用することができる。
【0105】
2.2.3.3 MMVD
【0106】
JVET-L0054には、UMVE(Ultimate Motion Vector Expression)(MMVDとしても知られている)が示されている。UMVEは、提案された動きベクトル表現方法でスキップモードまたはマージモードのいずれかに使用される。
【0107】
UMVEは、VVCにおける通常のマージ候補リストに含まれるものと同様に、マージ候補を再利用する。マージ候補の中から、ベース候補を選択することができ、提案された動きベクトル表現方法によってさらに拡張される。
【0108】
UMVEは、新しいMVD(Motion Vector Difference)表現方法を提供し、開始点、動きの大きさ、および動きの方向を使用して1つのMVDを表す。
【0109】
図15に、UMVE検索処理の一例を示す。
【0110】
図16に、UMVE検索点の一例を示す。
【0111】
この提案された技術は、マージ候補リストをそのまま使用する。しかし、UMVEの拡張のために、デフォルトのマージタイプ(MRG_TYPE_DEFAULT_N)である候補のみが考慮される。
【0112】
ベース候補インデックスは、開始点を定義する。ベース候補インデックスは、リストにおける候補のうち、最良の候補を以下のように示す。
【0113】
【表1】
【0114】
ベース候補の数が1に等しい場合、ベース候補IDXは信号通知されない。
【0115】
距離インデックスは、動きの大きさの情報である。距離インデックスは、始点情報からの予め定義された距離を示す。予め定義された距離は、以下の通りである。
【0116】
【表2】
【0117】
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、以下に示すように、4つの方向を表すことができる。
【0118】
【表3】
【0119】
UMVEフラグは、スキップフラグまたはマージフラグを送信した直後に信号通知される。スキップまたはマージフラグが真である場合、UMVEフラグが構文解析される。UMVEフラグが1に等しい場合、UMVE構文が構文解析される。しかし、1でない場合、AFFINEフラグが構文解析される。AFFINEフラグが1に等しい場合、すなわちAFFINEモードであるが、1でない場合、VTMのスキップ/マージモードのためにスキップ/マージインデックスが構文解析される。
【0120】
UMVE候補に起因する追加のラインバッファは必要とされない。ソフトウェアのスキップ/マージ候補をそのままベース候補として使用するためである。入力されたUMVEインデックスを使用して、動き補償の直前にMVの補完が決定される。このために長いラインバッファを保持する必要はない。
【0121】
現在の共通テスト条件において、マージ候補リストにおける第1または第2のマージ候補のいずれかをベース候補として選択してもよい。
【0122】
UMVEは、MMVD(Merge with MV Differences)としても知られている。
【0123】
2.2.3.4 CIIP(Combined Intra-Inter Prediction)
【0124】
JVET-L0100には、複数の多重仮説が提案され、結合されたイントラおよびインター予測は、多重仮説を生成する1つの方法である。
【0125】
多重仮説予測をイントラモードの微調整に適用する場合、多重仮説予測は、1つのイントラ予測と1つのマージインデックス予測とを組み合わせる。マージCUにおいて、フラグが真である場合、1つのフラグがマージモードのために信号通知され、イントラ候補リストからイントラモードが選択される。輝度成分の場合、イントラ候補リストは、1つのイントラ予測モード、すなわち平面モードのみから導出される。イントラ予測およびインター予測から予測ブロックに適用される重みは、2つの近傍のブロック(A1およびB1)のコーディングされたモード(イントラまたは、非イントラ)によって判定される。
【0126】
2.2.4 サブブロックベースの技術のためのマージ
【0127】
なお、非サブブロックマージ候補の通常のマージリストに加え、すべてのサブブロック関連動き候補が別個のマージリストに入れることが提案される。
【0128】
サブブロック関連動き候補は、「サブブロックマージ候補リスト」と称する別個のマージリストに入れられる。
【0129】
一例において、サブブロックマージ候補リストは、ATMVP候補およびアフィンマージ候補を含む。
【0130】
サブブロックマージ候補リストは、以下の順に候補を満たす。
a.ATMVP候補(おそらく、利用可能であるか、または利用不可能である)
b.アフィンマージリスト(継承アフィン候補および構築アフィン候補を含む)
c.ゼロMV 4パラメータアフィンモデルとしてのパディング
【0131】
2.2.4.1.1 ATMVP(別名、サブブロック時間的動きベクトル予測子、SbTMVP)
【0132】
ATMVPの基本的な考えは、1つのブロックに対して複数の時間的動きベクトル予測子を導出することである。各サブブロックには、1つの動き情報のセットが割り当てられる。ATMVPマージ候補が生成される場合、ブロックレベル全体ではなく、8×8レベルで動き補償が行われる。
【0133】
2.2.5 通常のインターモード(AMVP)
2.2.5.1 AMVP動き候補リスト
【0134】
HEVCにおけるAMVP設計と同様に、最大2つのAMVP候補が導出されてもよい。しかしながら、HMVP候補は、TMVP候補の後に追加されてもよい。HMVPテーブルにおけるHMVP候補は、インデックスの昇順に(すなわち、最も古い0に等しいインデックスから)トラバースされる。最大4つのHMVP候補をチェックし、その参照ピクチャが対象となる参照ピクチャと同じである(即ち、同じPOC値である)かどうかを見出されてもよい。
【0135】
2.2.5.2 AMVR
【0136】
HEVCにおいて、スライスヘッダにおいてuse_integer_mv_flagが0に等しい場合、1/4輝度サンプルの単位でMVD(Motion Vector Difference)(PUの動きベクトルと予測動きベクトルとの差分)が信号通知される。VVCにおいて、局所的なAMVR(Adaptive Motion Vector Resolution)が導入される。VVCにおいて、MVDは、1/4輝度サンプル、整数輝度サンプルまたは、4輝度サンプル(即ち、1/4画素、1画素、4画素)の単位でコーディングされ得る。MVD解像度は、CU(Coding Unit)レベルで制御され、MVD解像度フラグは、少なくとも1つの非ゼロMVD成分を有する各CUに対して条件付きで信号通知される。
【0137】
少なくとも1つの非ゼロMVD成分を有するCUの場合、1/4輝度サンプルMV精度がCUにおいて使用されるか否かを示すために、第1のフラグが信号通知される。第1のフラグ(1に等しい)が、1/4輝度サンプルMV精度が使用されていないことを示す場合、整数輝度サンプルMV精度が使用されるか、または、4輝度サンプルMV精度が使用されるかを示すために、別のフラグが信号通知される。
【0138】
CUの第1のMVD解像度フラグがゼロであるか、または、CUに対してコーディングされていない(つまり、CUにおけるすべてのMVDがゼロである)場合、CUに対して1/4輝度サンプルMV解像度が使用される。CUが整数輝度サンプルMV精度、または、4輝度サンプルMV精度を使用する場合、CUのAMVP候補リストにおけるMVPを対応する精度に丸める。
【0139】
2.2.5.3 JVET-N1001-v2における対称動きベクトル差分
【0140】
JVET-N1001-v2において、双方向予測における動き情報コーディングには、SMVD(Symmetric Motion Vector Difference)が適用される。
【0141】
まず、スライスレベルにおいて、SMVDモードで使用されるリスト0/1の参照ピクチャインデックスを示す変数RefIdxSyml0およびRefIdxSyml1がそれぞれ、N1001-v2に規定されるように、以下のステップで導出される。2つの変数のうち少なくとも1つが-1に等しい場合、SMVDモードは無効化されるものとする。
【0142】
2.2.6 動き情報の改善
2.2.6.1 DMVR(Decoder-side Motion Vector Refinement)
【0143】
双方向予測動作において、1つのブロック領域を予測するために、list0のMV(Motion Vector)およびlist1のMVをそれぞれ使用して形成される2つの予測ブロックが組み合わされ、1つの予測信号を形成する。DMVR(Decoder-side Motion Vector Refinement)方法において、双方向予測の2つの動きベクトルがさらに改善される。
【0144】
VVCにおけるDMVRに対して、図17に示すように、リスト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として定義される。
【0145】
動きベクトル改善処理は、2回反復されてもよい。各反復において、図18に示すように、最大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;
【0146】
第1の反復において、開始点は信号通知されたMVであり、第2の反復において、開始点は信号通知されたMVに第1の反復で選択された最良のMVDを加えたものである。DMVRは、1つの参照ピクチャが前のピクチャであり、他の参照ピクチャが後のピクチャであり、かつ、2つの参照ピクチャが、現在のピクチャからの同じピクチャオーダカウント距離を有する場合にのみ適用される。
【0147】
図17は、DMVRにおけるリスト0とリスト1との間にミラーリングされるMVD(0,1)の例を示す。
【0148】
図18は、1回の繰り返しでチェックされてもよいMVの例を示す。
【0149】
DMVRの処理をさらに簡単にするために、JVET-M0147はJEMの設計にいくつかの変更を提案した。具体的には、VTM-4.0に採用された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。
【0150】
2.2.6.1.1 DMVRの使用方法
【0151】
以下の条件がすべて真である場合、DMVRが有効化されてよい。
-SPSにおけるDMVR有効化フラグ(即ち、sp_dmvr_enabled_flag)が1に等しい。
-TPMフラグ、インターアフィンフラグ、サブブロックマージフラグ(ATMVPまたはアフィンマージ)、およびMMVDフラグがすべて0に等しい。
-マージフラグが1に等しい。
-現在のブロックは双方向予測され、現在のピクチャとリスト1における参照ピクチャとの間のPOC距離が、リスト0における参照ピクチャと現在のピクチャとの間のPOC距離に等しい。
-現在のCUの高さが8以上である。
-輝度サンプルの数(CUの幅*高さ)が64以上である。
【0152】
2.2.6.1.2 「パラメトリック誤差表面方程式」ベースのサブピクセル改善
【0153】
方法を以下に要約する。
1.所与の反復において中心位置が最良のコスト位置である場合にのみ、パラメトリック誤差表面フィットを計算する。
2.中心位置コストと、中心から(-1,0)、(0,-1)、(1,0)、(0,1)の位置におけるコストとを使用して、次式の2-D放物線誤差表面方程式を適合させる。
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を得る。
【0154】
2.2.6.2 BDOF(Bi-Directional Optical Flow)
2.3 イントラブロックコピー
【0155】
IBC(Intra Block Copy)、別名、現在のピクチャの参照は、HEVC-SCC(HEVC-Content Coding extensions)と現在のVVCテストモデル(VTM-4.0)に採用されている。IBCは、動き補償の概念をインターフレームコーディングからイントラフレームコーディングに拡張する。図18に示すように、現在のブロックは、IBCが適用される場合、同じピクチャ内の参照ブロックによって予測される。現在のブロックを符号化または復号化する前に、参照ブロックにおけるサンプルは既に再構成されていなければならない。IBCは、カメラでキャプチャされたほとんどのシーケンスに対してそれほど効率的ではないが、スクリーンコンテンツに対しては、有意なコーディング利得を示す。その理由は、スクリーンコンテンツピクチャにおいて、アイコン、文字等の繰り返しパターンが多いためである。IBCは、これらの繰り返しパターン間の冗長性を有効に除去することができる。HEVC-SCCにおいて、現在のピクチャをその参照ピクチャとして選択する場合、インターコーディングされたCU(Coding Unit)は、IBCを適用することができる。この場合、MVはBV(Block Vector)と改称され、BVは常に整数画素精度を有する。メインプロファイルHEVCに適合するように、現在のピクチャは、DPB(Decoded Picture Buffer)における「長期」参照ピクチャとしてマークされる。なお、同様に、複数のビュー/3D映像コーディング規格において、インタービュー参照ピクチャも「長期」参照ピクチャとしてマークされる。
【0156】
BVに続いてその参照ブロックを見つけた場合、参照ブロックをコピーすることで予測を生成することができる。残差は、元の信号から参照画素を減算することによって得ることができる。そして、他のコーディングモードと同様に、変換および量子化を適用することができる。
【0157】
図19は、イントラブロックコピーの例を示す。
【0158】
しかしながら、参照ブロックがピクチャの外にある場合、または現在のブロックと重複する場合、または再構成された領域の外にある場合、或いは何らかの制約によって制限された有効領域の外にある場合、画素値の一部または全部は規定されない。基本的に、このような問題に対処するために2つの解決策がある。1つは、このような状況、例えばビットストリーム適合性を許可しないことである。もう1つは、これらの未定義の画素値にパディングを適用することである。以下のサブセッションでは、解決策を詳細に説明する。
【0159】
2.3.1 VVCテストモデル(VTM4.0)におけるIBC
【0160】
現在のVVCテストモデル、すなわち、VTM-4.0設計において、参照ブロック全体は現在のCTU(Coding Tree Unit)を有するべきであり、現在のブロックと重複しない。よって、参照または予測ブロックをパディングする必要がない。IBCフラグは、現在のCUの予測モードとしてコーディングされる。このように、各CUに対して、MODE_INTRA、MODE_INTER、およびMODE_IBCという全部で3つの予測モードが存在する。
【0161】
2.3.1.1 IBCマージモード
【0162】
IBCマージモードにおいて、IBCマージ候補リストにおけるエントリを指すインデックスがビットストリームから構文解析される。IBCマージリストの構築は、以下のステップのシーケンスに従って要約することができる。
●ステップ1:空間的候補の導出
●ステップ2:HMVP候補の挿入
●ステップ3:ペアワイズ平均候補の挿入
【0163】
空間的マージ候補の導出において、図2に示す位置A、B、B、A、およびBにある候補の中から、最大4つのマージ候補が選択される。導出の順序は、A、B、B、A、およびBである。位置A、B、B、AのいずれかのPUが利用可能でない場合(例えば、別のスライスまたはタイルに属しているため)、またはIBCモードでコーディングされていない場合にのみ、位置Bが考慮される。位置Aの候補を加えた後、残りの候補の挿入は、コーディング効率が向上するように、同じ動き情報を有する候補を確実にリストから排除できることを保証する冗長性チェックの対象となる。
【0164】
空間的候補を挿入した後、IBCマージリストサイズが依然として最大IBCマージリストサイズより小さい場合、HMVPテーブルからのIBC候補が挿入されてよい。HMVP候補の挿入の際に、冗長性チェックが行われる。
【0165】
最後に、ペアワイズ平均候補がIBCマージリストに挿入される。
【0166】
マージ候補によって特定される参照ブロックがピクチャの外にある場合、または現在のブロックと重複する場合、または再構成された領域の外にある場合、或いは何らかの制約によって制限された有効領域の外にある場合、マージ候補は無効なマージ候補と呼ばれる。
【0167】
なお、IBCマージリストに無効なマージ候補が挿入されてもよい。
【0168】
2.3.1.2 IBC AMVPモード
【0169】
IBC AMVPモードでは、IBC AMVPリストにおけるエントリを指すAMVPインデックスが、ビットストリームから構文解析される。IBC AMVPリストの構築は、以下のステップのシーケンスに従って要約することができる。
●ステップ1:空間的候補の導出
○利用可能な候補が見つかるまで、A,Aをチェックする。
○利用可能な候補が見つかるまで、B、B、Bをチェックする。
●ステップ2:HMVP候補の挿入
●ステップ3:ゼロ候補の挿入
【0170】
空間的候補を挿入した後、IBC AMVPリストサイズが依然として最大IBC AMVPリストサイズより小さい場合、HMVPテーブルからのIBC候補が挿入されてよい。
【0171】
最後に、ゼロ候補がIBC AMVPリストに挿入される。
【0172】
2.3.1.3 彩度IBCモード
【0173】
現在の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)サブブロックの彩度動きベクトルは、対応する輝度サブブロックの動きベクトルに設定される。
【0174】
すべてのサブブロックが有効なbvを見つけた場合、エンコーダにおいてIBCモードが許可される。
【0175】
IBCブロックの復号化処理を以下に示す。IBCモードにおける彩度動きベクトルの導出に関連する部分は、二重太括弧で囲まれている。即ち、{{a}}は、「a」がIBCモードにおける彩度動きベクトルの導出に関連していることを示す。
【0176】
8.6.1 IBC予測においてコーディングされたコーディングユニットに対する一般的な復号化処理
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在のコーディングブロックの左上のサンプルを規定する輝度位置(xCb,yCb)、
-輝度サンプルにおける現在のコーディングブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在のコーディングブロックの高さを規定する変数cbHeight、
-単一ツリーを使用するか、二重ツリーを使用するかを規定する変数treeType、および、二重ツリーを使用する場合、現在のツリーが輝度成分に対応するか彩度成分に対応するかを規定する。
【0177】
この処理の出力は、インループフィルタリング前の修正された再構成画像である。
8.7.1節に規定される量子化パラメータの導出処理は、輝度位置(xCb,yCb)、輝度サンプルにおける現在のコーディングブロックの幅cbWidth、輝度サンプルにおける現在のコーディングブロックの高さcbHeight、および変数treeTypeを入力として、呼び出される。
ibc予測モードでコーディングされたコーディングユニットに対する復号化処理は、以下の順序付けられたステップからなる。
【0178】
1.現在のコーディングユニットの動きベクトル成分は、以下のように導出される。
1.treeTypeがSINGLE_TREEまたはDUAL_TREE_LUMAに等しい場合、以下が適用される。
-8.6.2.1節に規定された動きベクトル成分の導出処理は、輝度コーディングブロックの位置(xCb,yCb)、輝度コーディングブロックの幅cbWidth、輝度コーディングブロック高さcbHeightを入力とし、輝度動きベクトルmvL[0][0]を出力として、呼び出される。
-treeTypeがSINGLE_TREEに等しい場合、8.6.2.9節の彩度動きベクトルの導出処理は、輝度動きベクトルmvL[0][0]を入力とし、彩度動きベクトルmvC[0][0]を出力として呼び出される。
-水平方向numSbXおよび垂直方向numSbYにおける輝度コーディングサブブロックの数は、いずれも1に等しく設定される。
1.そうでない場合、treeTypeがDUAL_TREE_CHROMAに等しい場合、以下が適用される。
-水平方向NUMSBXおよび垂直方向NUMBYにおけるLUMAコーディングサブブロックの数は、次のように導出される。
numSbX=(cbWidth>>2) (8-886)
numSbY=(cbHeight>>2) (8-887)
-{{彩度動きベクトルmvC[xSbIdx][ySbIdx]は、xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1の場合、次のように導出される。
-輝度動きベクトルmvL[xSbIdx][ySbIdx]は、以下のように導出される。
-同一位置の輝度コーディングユニットの位置(xCuY,yCuY)は、次のように導出される。
xCuY=xCb+xSbIdx*4 (8-888)
yCuY=yCb+ySbIdx*4 (8-889)
-CuPredMode[xCuY][yCuY]がMODE_INTRAに等しい場合、次を適用する。
mvL[xSbIdx][ySbIdx][0]=0 (8-890)
mvL[xSbIdx][ySbIdx][1]=0 (8-891)
predFlagL0[xSbIdx][ySbIdx]=0 (8-892)
predFlagL1[xSbIdx][ySbIdx]=0 (8-893)
-その他の場合(CuPredMode[xCuY][yCuY]がMODE_IBCに等しい場合)、次を適用する。
mvL[xSbIdx][ySbIdx][0]=MvL0[xCuY][yCuY][0] (8-894)
mvL[xSbIdx][ySbIdx][1]=MvL0[xCuY][yCuY][1] (8-895)
predFlagL0[xSbIdx][ySbIdx]=1 (8-896)
predFlagL1[xSbIdx][ySbIdx]=0 (8-897)}}
-8.6.2.9節の彩度動きベクトルの導出処理は、mvL[xSbIdx][ySbIdx]を入力とし、mvC[xSbIdx][ySbIdx]を出力として呼び出される。
-彩度動きベクトルmvC[xSbIdx][ySbIdx]が以下の制約に従うことは、ビットストリーム適合性の要件である。
-6.4.X節で規定されているブロック利用可能性の導出処理[ED.(BB):近傍のブロック利用可能性チェック処理tbd]が、(xCb/SubWidthC,yCb/SubHeightC)に等しい現在の彩度位置(xCurr,yCurr)、隣接する彩度位置(xCb/SubWidthC+(mvC[xSbIdx][ySbIdx][0]>>5)、yCb/SubHeightC+(mvC[xSbIdx][ySbIdx][1]>>5))を入力として呼び出されると、出力はTRUEに等しくなる。
-6.4.X節で規定されているブロック利用可能性の導出処理[ED.(BB):近傍のブロック利用可能性チェック処理tbd]が、(xCb/SubWidthC,yCb/SubHeightC)に等しい現在の彩度位置(xCurr,yCurr)、近傍の彩度位置(xCb/SubWidthC+(mvC[xSbIdx][ySbIdx][0]>>5)+cbWidth/SubWidthC-1,yCb/SubHeightC+(mvC[xSbIdx][ySbIdx][1]>>5)+cbHeight/SubHeightC-1)を入力として呼び出されると、出力はTRUEに等しくなる。
-次の条件の一方または両方が真であること。
-(mvC[xSbIdx][ySbIdx][0]>>5)+xSbIdx*2+2が、0以下である。
-(mvC[xSbIdx][ySbIdx][1]>>5)+ySbIdx*2+2が、0以下である。
【0179】
2.現在のコーディングユニットの予測サンプルは、以下のように導出される。
-treeTypeがSINGLE_TREEまたはDUAL_TREE_LUMAに等しい場合、現在のコーディングユニットの予測サンプルは以下のように導出される。
-8.6.3.1節に規定されるibcブロックの復号化処理は、輝度コーディングブロックの位置(xCb,yCb)、輝度コーディングブロックの幅cbWidth、輝度コーディングブロックの高さcbHeight、水平方向numSbXおよび垂直方向numSbYにおける輝度コーディングサブブロックの数、xSbIdx=0..numSbX-1およびSbIdx=0..numSbY-1である輝度動きベクトルmvL[xSbIdx][ySbIdx]、および0に等しく設定された変数cIdxを入力とし、予測輝度サンプルの(cbWidth)×(cbHeight)配列predSamplesであるibc予測サンプル(predSamples)を出力として、呼び出される。
-あるいは、treeTypeがSINGLE_TREEまたはDUAL_TREE_CHROMAに等しい場合、現在のコーディングユニットの予測サンプルは、以下のように導出される。
-8.6.3.1節に規定されるibcブロックの復号化処理は、輝度コーディングブロックの位置(xCb,yCb)、輝度コーディングブロックの幅cbWidth、輝度コーディングブロックの高さcbHeight、水平方向numSbX、垂直方向numSbYにおける輝度コーディングサブブロックの数、xSbIdx=0..numSbX-1およびySbIdx=0..numSbY-1である彩度動きベクトルmvC[xSbIdx]、および1に等しく設定された変数cIdxを入力とし、彩度成分Cbに対する予測彩度サンプルの(cbWidth/2)×(cbHeight/2)配列predSamplesCbであるibc予測サンプル(predSamples)を出力として、呼び出される。
-8.6.3.1節に規定されるibcブロックの復号化処理は、輝度コーディングブロックの位置(xCb,yCb)、輝度コーディングブロックの幅cbWidth、輝度コーディングブロックの高さcbHeight、水平方向numSbXおよび垂直方向numSbYにおける輝度コーディングサブブロックの数、xSbIdx=0..numSbX-1およびySbIdx=0..numSbY-1である彩度動きベクトルmvC[xSbIdx]、および2に等しく設定された変数cIdxを入力とし、彩度成分Crに対する予測彩度サンプルの(cbWidth/2)×(cbHeight/2)配列predSamplesCrであるibc予測サンプル(predSamples)を出力として、呼び出される。
【0180】
3.変数NumSbX[xCb][yCb]およびNumSbY[xCb][yCb]は、それぞれ、numSbXおよびnumSbYに等しく設定される。
【0181】
4.現在のコーディングユニットの残差サンプルは、以下のように導出される。
-treeTypeがSINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_LUMAに等しい場合、8.5.8節に規定されるインター予測モードでコーディングされたコーディングブロックの残差信号の復号化処理は、輝度位置(xCb,yCb)に等しく設定された位置(xTb0,yTb0)、輝度コーディングブロック幅cbWidthに等しく設定された幅nTbW、輝度コーディングブロック高さcbHeightに等しく設定された高さnTbH、0に等しく設定された変数cldxsetを入力とし、配列resSamplesを出力として、呼び出される。
-treeTypeがSINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_CHROMAに等しい場合、8.5.8節に規定されるインター予測モードでコーディングされたコーディングブロックの残差信号の復号化処理は、彩度位置(xCb/2,yCb/2)に等しく設定された位置(xTb0,yTb0)、彩度コーディングブロック幅cbWidth/2に等しく設定された幅nTbW、彩度コーディングブロック高さcbHeight/2に等しく設定された高さnTbH、1に等しく設定された変数cldxsetを入力とし、配列resSamplesCbを出力として、呼び出される。
-treeTypeがSINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_CHROMAに等しい場合、8.5.8節に規定されるインター予測モードでコーディングされたコーディングブロックの残差信号の復号化処理は、彩度位置(xCb/2,yCb/2)に等しく設定された位置(xTb0,yTb0)、彩度コーディングブロック幅cbWidth/2に等しく設定された幅nTbW、彩度コーディングブロック高さcbHeight/2に等しく設定された高さnTbH、2に等しく設定された変数cldxsetを入力とし、配列resSamplesCrを出力として、呼び出される。
【0182】
5.現在のコーディングユニットの再構成されたサンプルは、以下のように導出される。
-treeTypeが、SINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_LUMAに等しい場合、8.7.5節で規定されている色成分の画像再構成処理は、(xCb,yCb)に等しく設定されたブロック位置(xB,yB)、cbWidthに等しく設定されたブロック幅bWidth、cbHeightに等しく設定されたブロック高さbHeight、0に等しく設定された変数cIdx、predSamplesに等しく設定された(cbWidth)×(cbHeight)配列predSamples、resSamplesに等しく設定された(cbWidth)×(cbHeight)配列resSamplesを入力として呼び出され、出力はインループフィルタリング前の修正再構成画像となる。
-treeTypeがSINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_CHROMAに等しい場合、8.7.5節で規定されている色成分の画像再構成処理は、(xCb/2,yCb/2)に等しく設定されたブロック位置(xB,yB)、cbWidth/2に等しく設定されたブロック幅bWidth、cbHeight/2に等しく設定されたブロック高さbHeight、1に等しく設定された変数cIdx、predSamplesCbに等しく設定された(cbWidth/2)×(cbHeight/2)配列predSamples、resSamplesCbに等しく設定された(cbWidth/2)×(cbHeight/2)配列resSamplesを入力として呼び出され、出力はインループフィルタリング前の修正再構成画像となる。
-treeTypeがSINGLE_TREEに等しい場合またはtreeTypeがDUAL_TREE_CHROMAに等しい場合、8.7.5節で規定されている色成分の画像再構成処理は、(xCb/2,yCb/2)に等しく設定されたブロック位置(xB,yB)、cbWidth/2に等しく設定されたブロック幅bWidth、cbHeight/2に等しく設定されたブロック高さbHeight、2に等しく設定された変数cIdx、predSamplesCrに等しく設定された(cbWidth/2)×(cbHeight/2)配列predSamples、resSamplesCrに等しく設定された(cbWidth/2)×(cbHeight/2)配列resSamplesを入力として呼び出され、出力はインループフィルタリング前の修正再構成画像となる。
【0183】
2.3.2 IBCの最近の推移(VTM5.0版)
2.3.2.1 単一のBVリスト
【0184】
VVCにはJVET-N0843が採用されている。JVET-N0843において、IBCにおけるマージモードおよびAMVPモードのためのBV予測子は、以下の要素からなる共通の予測子リストを共有する。
●2つの空間的に近傍の位置(図2中のA1、B1)
●5つのHMVPエントリ
●デフォルトではゼロベクトル
【0185】
リストにおける候補の数は、スライスヘッダから導出される変数によって制御される。マージモードの場合、このリストの最初の6つのエントリまでが使用され、AMVPモードの場合、このリストの最初の2つのエントリが使用される。そして、リストは、共有マージリスト領域要件(SMR内で同一のリストを共有する)に準拠している。
【0186】
上述のBV予測子候補リストに加え、JVET-N0843は、HMVP候補と既存のマージ候補(A1,B1)との間のプルーニング作業を簡素化することも提案している。簡素化した場合、第1のHMVP候補と1または複数の空間マージ候補とを比較するだけであるため、最大2回までのプルーニング動作でよい。
【0187】
2.3.2.1.1 復号化処理
【0188】
8.6.2.2 IBC輝度動きベクトル予測に対する導出処理
この処理は、CuPredMode[xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度コーディングブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度コーディングブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在のコーディングブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在のコーディングブロックの高さを規定する変数cbHeight。
この処理の出力は以下の通りである。
-1/16小数サンプル精度mvLにおける輝度動きベクトル。
【0189】
変数xSmr、ySmr、smrWidth、smrHeight、およびsmrNumHmvpIbcCandは、以下のように導出される。
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-910)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-911)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-912)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-913)
smrNumHmvpIbcCand=IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:NumHmvpIbcCand (8-914)
【0190】
輝度動きベクトルmvLは、以下の順序ステップによって導出される。
1.8.6.2.3節で規定される近傍のコーディングユニットからの空間的動きベクトル候補の導出処理は、(xSmr,ySmr)に等しく設定された輝度コーディングブロックの位置(xCb,yCb)、smrWidthおよびsmrHeightに等しく設定された輝度コーディングブロックの幅cbWidthおよび輝度コーディングブロックの高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA、availableFlagB、並びに動きベクトルmvAおよびmvBである。
【0191】
2.動きベクトル候補リストmvCandListは、以下のように構成される。
i=0
if(availableFlagA
mvCandList[i++]=mvA
if(availableFlagB
mvCandList[i++]=mvB (8-915)
【0192】
3.変数numCurrCandは、mvCandListにおけるマージ候補の数に等しく設定される。
【0193】
4.numCurrCandがMaxNumMergeCandandより小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるIBC履歴ベースの動きベクトル候補の導出処理は、mvCandList、isInSmr[xCb][yCb]に等しく設定されたisInSmr、およびnumCurrCandを入力とし、修正されたmvCandListおよびnumCurrCandを出力として、呼び出される。
【0194】
5.numCurrCandがMaxNumMergeCandより小さい場合、numCurrCandがMaxNumMergeCandに等しくなるまで、以下が適用される。
1.mvCandList[numCurrCand][0]は、0に等しく設定される。
2.mvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
【0195】
6.変数mvIdxは、以下のように導出される。
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-916)
【0196】
7.以下の割り当てが行われる。
mvL[0]=mergeCandList[mvIdx][0] (8-917)
mvL[1]=mergeCandList[mvIdx][1] (8-918)
【0197】
2.3.2.2 IBCのサイズ制限
【0198】
最近のVVCおよびVTM5において、前回のVTMおよびVVCバージョンにおいて、現在のビットストリーム制約に加え、128×128のIBCモードを無効化するための構文制約を明示的に使用することが提案され、これにより、IBCフラグの存在がCUのサイズ<128×128に依存するようになる。
【0199】
2.3.2.3 IBCの共有マージリスト
【0200】
デコーダの複雑性を低減し、並列符号化をサポートするため、JVET-M0147は、小さなスキップ/マージコーディングされたCUを並列処理することを有効化するために、CU分割ツリーにおける1つの祖先ノードのすべての葉のCU(Coding Unit)に対して同じマージ候補リストを共有することを提案している。祖先ノードをマージ共有ノードと呼ぶ。マージ共有ノードが葉CUであるように見せかけて、マージ共有ノードにおいて共有マージ候補リストを生成する。
【0201】
具体的には、以下を適用することができる。
-ブロックの輝度サンプルが32以下であり、2つの4×4の子ブロックに分割される場合、非常に小さなブロック(例えば、2つの隣接する4×4ブロック)間でマージリストを使用する。
-しかしながら、ブロックの輝度サンプルが32よりも大きい場合、分割の後、少なくとも1つの子ブロックが閾値(32)より小さく、この分割されたすべての子ブロックは、同じマージリストを共有する(例えば、16×4または4×16の分割された3値、または、4分割された8×8)。
【0202】
このような制限は、IBCマージモードにのみ適用される。
【0203】
2.4 コーディングユニットおよびマージモードのための構文表および意味論
【0204】
7.3.5.1 一般スライスセグメントヘッダ構文
【0205】
【表4】
【0206】
7.3.7.5 コーディングユニット構文
【0207】
【表5】
【0208】
【表6】
【0209】
7.3.7.7 マージデータ構文
【0210】
【表7】
【0211】
【表8】
【0212】
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の範囲内である。
【0213】
7.4.8.5 コーディングユニット構文
0に等しいpred_mode_flagは、現在のコーディングユニットがインター予測モードでコーディングされることを規定する。1に等しいpred_mode_flagは、現在のコーディングユニットがイントラ予測モードでコーディングされることを規定する。
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に等しく設定される。
【0214】
pred_mode_ibc_flagが1に等しい場合、現在のコーディングユニットが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と等しくなるように設定される。
【0215】
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に等しいと推測される。
【0216】
mvp_l0_flag[x0][y0]は、list0の動きベクトル予測子インデックスを規定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
mvp_l0_flag[x0][y0]が存在しない場合、0に等しいと推測される。
【0217】
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)を規定する。
【0218】
【表9】
【0219】
inter_pred_idc[x0][y0]が存在しない場合、PRED_L0に等しいと推測される。
【0220】
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に等しいと推測される。
【0221】
mmvd_merge_flag[x0][y0]が1に等しい場合、現在のコーディングユニットのインター予測パラメータを生成するために、動きベクトル差分を有するマージモードを使用することを規定する。配列インデックス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に等しいと推測される。
【0222】
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に等しいと推測される。
【0223】
mmvd_distance_idx[x0][y0]は、表7-12で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
【0224】
【表10】
【0225】
mmvd_distance_idx[x0][y0]は、表7-13で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
【0226】
【表11】
【0227】
マージ+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)
【0228】
merge_subblock_flag[x0][y0]は、現在のコーディングユニットにおけるサブブロックベースのインター予測パラメータを近傍のブロックから推測するかどうかを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。merge_subblock_flag[x0][y0]が存在しない場合、0に等しいと推測される。
【0229】
merge_subblock_idx[x0][y0]は、サブブロックに基づくマージ候補リストのマージ候補インデックスを規定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_subblock_idx[x0][y0]が存在しない場合、0に等しいと推測される。
【0230】
ciip_flag[x0][y0]は、現在のコーディングユニットに対して、インターピクチャマージとイントラピクチャ予測とを組み合わせるかどうかを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
ciip_flag[x0][y0]が存在しない場合、0に等しいと推測される。
ciip_flag[x0][y0]が1に等しい場合、x=xCb..xCb+cbWidth-1およびy=yCb..yCb+cbHeight-1である変数IntraPredModeY[x][y]は、INTRA_PLANARと等しく設定される。
Bスライスを復号化する場合、三角形状ベースの動き補償を使用して現在のコーディングユニットの予測サンプルを生成するかどうかを規定する変数MergeTriangleFlag[x0][y0]は、次のように導出される。
-以下のすべての条件が当てはまる場合、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と等しく設定される。
【0231】
merge_triangle_split_dir[x0][y0]は、マージ三角形モードの分割方向を規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_split_dir[x0][y0]が存在しない場合、0に等しいと推測される。
【0232】
merge_triangle_idx0[x0][y0]は、三角形状に基づく動き補償候補リストの第1のマージ候補インデックスを規定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_idx0[x0][y0]が存在しない場合、0に等しいと推測される。
【0233】
merge_triangle_idx1[x0][y0]は、三角形状に基づく動き補償候補リストの第2のマージ候補インデックスを規定し、ここで、x0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
merge_triangle_idx1[x0][y0]が存在しない場合、0に等しいと推測される。
【0234】
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に等しいと推測される。
【0235】
3 実施形態が解決しようとする技術的課題の例
【0236】
現在のIBCには、以下のような問題が存在し得る。
1.P/Bスライスの場合、IBC動きリストに追加できるIBC動き(BV)候補の数は、通常のマージリストのサイズと同じに設定される。したがって、通常のマージモードが無効になっている場合、IBCマージモードも無効になる。ただし、通常のマージモードが無効になっている場合でも、IBCマージモードを有効にすることが望ましい。
2.IBC AMVPとIBCマージモードは、同じ動き(BV)候補リスト構築処理を共有する。マージ候補の最大数(MaxNumMergeCandなど)で示されるリストのサイズは、スライスヘッダで信号通知される。IBC AMVPの場合、BV予測子は、2つのIBC動き候補のうちの1つからのみ選択できる。
a.BV候補リストのサイズが1の場合、この場合、BV予測子インデックスの信号通知は必要ない。
b.BV候補リストのサイズが0の場合、IBCマージとAMVPモードの両方が無効化される。ただし、現在の設計では、BV予測子インデックスは引き続き信号通知される。
3.IBCはシーケンスレベルで有効化されてよいが、信号通知されたBVリストのサイズに起因して、IBCは無効になるが、ビットを浪費するIBCモードおよび関連する構文の指示は引き続き信号通知される。
【0237】
4 例示的な技術および実施形態
【0238】
以下の詳細な発明は、一般的な概念を説明するための例であると考えられるべきである。これらの発明は狭い意味で解釈されるべきではない。さらに、これらの発明は、任意の方法で組み合わせることができる。
【0239】
本発明において、DMVD(decoder side Motion Vector Derivation)は、ブロック/サブブロックの動き情報を導出または改善するために動き推定を行うDMVR、FRUCや、サンプルワイズ動き改善を行うBIOのような方法を含む。
【0240】
maxIBCCandNumにより、BV候補リストでBVを導出または予測できるようにする、BV候補リスト内のBV候補の最大数(つまり、BV候補リストのサイズ)を示す。
【0241】
IBCマージ候補の最大数をmaxIBCMrgNumとして示し、IBCAMVP候補の最大数をmaxIBCAMVPNとして示す。なお、スキップモードは、すべての0に等しい係数を有する特別なマージモードとして扱われてよい。
1.IBC(例えば、IBC AMVPおよび/またはIBCマージ)モードは、IBCがシーケンスに対して有効である場合でも、ピクチャ/スライス/タイル/タイルグループ/ブリックまたは他の映像ユニットに対して無効化されてよい。
a.一例において、IBC AMVPおよび/またはIBCマージモードが有効であるかどうかの指示は、ピクチャ/スライス/タイル/タイルグループ/ブリックまたは他の映像ユニットレベル(PPS、APS、スライスヘッダ、ピクチャヘッダなど)で信号通知されてよい。
i.一例において、指示はフラグでもよい。
ii.一例において、指示は、許可されたBV予測子の数でもよい。許可されたBV予測子の数が0に等しい場合、IBC AMVPおよび/またはマージモードが無効化されていることを示す。
1)代替的に、許可されたBV予測子の数は予測方式で信号通知されてもよい。
a.例えば、Xから許可されたBV予測子の数を引いたものは、信号通知されてもよく、ここで、Xは2などの固定数である。
iii.さらに、代替的に、指示は、映像コンテンツがスクリーンコンテンツであるか、sps_ibc_enabled_flagであるかに基づいて、条件付きで信号通知されてもよい。
b.一例において、映像コンテンツがスクリーンコンテンツ(カメラでキャプチャされたコンテンツまたは混合コンテンツなど)でない場合、IBCモードが無効化されてもよい。
c.一例において、映像コンテンツがカメラでキャプチャされたコンテンツである場合、IBCモードが無効化されてもよい。
【0242】
2.IBC(例えば、pred_mode_ibc_flag)およびIBC関連の構文要素の使用を信号通知するかどうかは、maxIBCCandNumに依存してよい(例えば、maxIBCCandNumはMaxNumMergeCandと等しく設定される)。
a.一例において、maxIBCCandNumが0に等しい場合、Iスライスに対するIBCスキップモード(例えば、cu_skip_flag)の使用の信号通知がスキップされてよく、IBCは無効化されると推測される。
b.一例において、maxIBCMrgNumが0に等しい場合、Iスライスに対するIBCスキップモード(例えば、cu_skip_flag)の使用の信号通知がスキップされてよく、IBCスキップモードは無効化されると推測される。
c.一例において、maxIBCCandNumが0に等しい場合、IBCマージ/IBC AMVPモード(例えば、pred_mode_ibc_flag)の使用の信号通知はスキップされてよく、IBCは無効化されると推測される。
d.一例において、maxIBCCandNumが0に等しく、かつ、現在のブロックがIBCモードでコーディングされている場合、マージモードの信号通知(例えば、general_merge_flag)はスキップされてよく、IBCマージモードは無効化されると推測される。
i.代替的に、現在のブロックはIBC AMVPモードでコーディングされていると推測される。
e.一例において、maxIBCMrgNumが0に等しく、かつ、現在のブロックがIBCモードでコーディングされている場合、マージモードの信号通知(例えば、general_merge_flag)はスキップされてよく、IBCマージモードは無効化されると推測される。
i.代替的に、現在のブロックはIBC AMVPモードでコーディングされていると推測される。
【0243】
3.IBC AMVPモードの動きベクトル差分に関連する構文要素を信号通知するかどうかは、maxIBCCおよびNumに依存してよい(例えば、maxIBCCおよびNumは、MaxNumMergeCandに等しく設定される)。
a.一例において、maxIBCCandNumが0に等しい場合、IBC AMVPモード(例えば、mvp_l0_flag)の動きベクトル予測子インデックスの信号通知はスキップされてもよく、IBC AMVPモードは無効化されると推測される。
b.一例において、maxIBCCandNumが0に等しい場合、動きベクトル差分の信号通知(例えば、mvd_coding)はスキップされてもよく、IBC AMVPモードは無効化されていると推測される。
c.一例において、IBC AMVPモードの動きベクトル予測子インデックスおよび/または動きベクトル予測器の精度および/または動きベクトル差分の精度は、K(例えば、K=0または1)より大きいmaxIBCCandNumの条件の下でコーディングされてもよい。
i.一例において、maxIBCCandNumが1に等しい場合、IBC AMVPモードの動きベクトル予測子インデックス(例えば、mvp_l0_flag)が信号通知されなくてもよい。
1)一例において、IBC AMVPモードの動きベクトル予測子インデックス(例えば、mvp_l0_flag)は、この場合、0などの値であると推測されてもよい。
ii.一例において、maxIBCCandNumが0に等しい場合、動きベクトル予測子の精度および/またはIBC AMVPモードの動きベクトル差分の精度の信号通知(例えば、amvr_precision_flag)はスキップされてもよい。
iii.一例において、IBC AMVPモードの動きベクトル予測子の精度および/または動きベクトル差分の精度の信号通知(例えば、amvr_precision_flag)は、maxIBCCおよびNumが0より大きいという条件下にあってもよい。
【0244】
4.maxIBCCandNumは、通常のマージ候補の最大数から切り離してもよいことが提案される。
a.一例において、maxIBCCandNumは直接信号通知されてもよい。
i.代替的に、IBCがスライスに対して有効化される場合、適合ビットストリームはmaxIBCCandNumが0より大きいことを満たすものとする。
b.一例において、maxIBCCandNumおよび他の構文要素/固定値の予測コーディングが信号通知されてもよい。
i.一例において、通常のマージリストのサイズとmaxIBCCandNumの差がコーディングされてもよい。
ii.一例において、(K-maxIBCCandNum)は、例えば、K=5または6のようにコーディングしてもよい。
iii.一例において、(maxIBCCandNum-K)は、例えば、K=0または2のようにコーディングしてもよい。
c.一例において、maxIBCMrgNumおよび/またはmaxIBCAMVPNの指示は、上記の方法に従って信号通知されてもよい。
【0245】
5.maxIBCCandNumは、Func(maxIBCMrgNum、maxIBCAMVPN)と等しく設定されてもよい。
a.一例において、maxIBCAMVPNは2に固定され、maxIBCCandNumはFunc(maxIBCMrgNum、2)に等しく設定される。
b.一例において、Func(a、b)は、2つの変数aとbの間の大きい方の値を返す。
【0246】
6.maxIBCCandNumは、1つのブロックのコーディングされたモード情報に従って判定されてもよい。すなわち、BV候補リストに追加されてもよいBV候補の数は、ブロックのモード情報に依存してよい。
a.一例において、1つのブロックがIBCマージモードでコーディングされている場合、maxIBCCandNumはmaxIBCMrgNumと等しく設定されてもよい。
b.一例において、1つのブロックがIBC AMVPモードでコーディングされている場合、maxIBCCandNumはmaxIBCAMVPNと等しく設定されてもよい。
【0247】
7.適合ビットストリームは、復号化されたIBCAMVPまたはIBCマージインデックスがmaxIBCCandNumより小さいことを満たすものとする。
a.一例において、適合ビットストリームは、復号化されたIBCAMVPインデックスがmaxIBCAMVPNより小さいことを満たすものとする。
b.一例において、適合ビットストリームは、復号化されたIBCマージインデックスがmaxIBCMrgNum(例えば、2)より小さいことを満たすものとする。
【0248】
8.IBC AMVPまたはIBCマージ候補インデックスがBV候補リスト内のBV候補を識別できなかった場合(例えば、IBC AMVPまたはマージ候補インデックスがmaxIBCCandNum以上である場合、復号化されたIBC AMVPインデックスがmaxIBCAMVPN以上である場合、または、復号化されたIBCマージインデックスがmaxIBCMrgNum以上である場合)、デフォルトの予測ブロックが利用されてよい。
a.一例において、デフォルトの予測イントラブロックのすべてのサンプルが(1<<(ビット深度-1))に設定されている。
b.一例において、デフォルトのBVがブロックに割り当てられてもよい。
【0249】
9.IBC AMVPまたはIBCマージ候補インデックスがBV候補リスト内のBV候補を識別できなかった場合(例えば、IBC AMVPまたはマージ候補インデックスがmaxIBCCandNum以上である場合、復号化されたIBC AMVPインデックスがmaxIBCAMVPN以上である場合、または復号化されたIBCマージインデックスがmaxIBCMrgNum以上である場合)、ブロックは無効なBVを持つIBCブロックとして扱われてもよい。
a.一例において、無効なBVを有するブロックに適用される処理がブロックに適用されてもよい。
【0250】
10.補足のBV候補リストは、復号化されたIBC AMVPまたはIBCマージインデックスがmaxIBCCandNum以上であるなど、特定の条件下で構築されてもよい。
a.一例において、補足のBV候補リストは、以下のステップのうちの1つまたは複数で(順番に、またはインターリーブされた方法で)構築されてもよい。
i.HMVP候補の追加
1)HMVP候補インデックスの昇順(HMVPテーブルのK番目のエントリ(例:K=0)から始まる)
2)HMVP候補インデックスの降順(HMVPテーブルのK番目(例えば、K=0またはK=maxIBCCandNum-IBC AMVP/IBCマージインデックスまたはK=maxIBCCandNum-1-IBC AMVP/IBCマージインデックス)エントリから最後のエントリまで)
ii.maxIBCCandNum候補を有するBV候補リストを使用して、利用可能な候補から導出した仮想BV候補
1)一例において、オフセットは、仮想BV候補を得るために、BV候補の水平成分および/または垂直成分へのオフセットに追加されてもよい。
2)一例において、オフセットは、仮想BV候補を取得するために、HMVPテーブル内のHMVP候補の水平成分および/または垂直成分へのオフセットに追加されてもよい。
iii.デフォルトの候補者の追加
1)一例において、(0,0)がデフォルトの候補として追加されてもよい。
2)一例において、デフォルトの候補は、現在のブロック寸法に従って導出されてもよい。
【0251】
11.maxIBCAMVPNは2と等しくなくてもよい。
a.さらに、代替的に、動きベクトル予測子インデックスを示すフラグ(例えば、mvp_l0_flag)を信号通知する代わりに、1より大きい可能性のあるインデックスを信号通知してもよい。
i.一例において、インデックスは、ユーナリー/トランケイテッドユーナリー/固定長/指数ゴロム/他の二項化法で二値化されてもよい。
ii.一例において、インデックスのバイナリビン文字列のビンは、コンテキストコーディングまたはバイパスコーディングされてもよい。
1)一例において、インデックスのバイナリビン文字列の最初のK(例えば、K=1)ビンは、コンテキストコーディングされてもよく、残りのビンは、バイパスコーディングされてもよい。
b.一例において、maxIBCAMVPNはmaxIBCMrgNumよりも大きくてもよい。
i.代替的に、さらに、BV候補リスト内の最初のmaxIBCMrgNum BV候補は、IBCマージコーディングされたブロックに利用されてもよい。
【0252】
12.maxIBCCandNumが0に設定されている場合(例えば、MaxNumMergeCand=0)でも、IBC BV候補リストが構築されてもよい。
a.一例において、マージリストは、IBC AMVPモードが有効化されているときのように構築されてもよい。
b.一例において、IBCマージモードが無効化されている場合、マージリストは、最大maxIBCAMVPN BV候補を含むように構築されてもよい。
【0253】
13.上記の方法では、「maxIBCCandNum」という用語を「maxIBCMrgNum」または「maxIBCAMVPN」に置き換えてもよい。
【0254】
14.上記の方法では、「maxIBCCandNum」および/または「maxIBCMrgNum」という用語は、通常のマージリストのマージ候補の最大数を表す可能性があるMaxNumMergeCandに置き換えてもよい。
【0255】
5 実施形態
【0256】
JVET-N1001-v5の上に新しく追加された部分は、二重の太字の中括弧で囲まれている。つまり、{{a}}は「a」が追加されたことを示し、削除された部分は二重の太字の大括弧で囲まれている。すなわち、[[a]]は、「a」が削除されたことを示す。
【0257】
5.1 実施形態#1
IBC動き候補の最大数の指示(例えば、IBC AMVPおよび/またはIBCマージの場合)は、スライスヘッダ/PPS/APS/DPSで信号通知されてもよい。
【0258】
7.3.5.1 一般スライスセグメントヘッダ構文
【0259】
【表12】
【0260】
【表13】
【0261】
{{max_num_merge_cand_minus_max_num_IBC_candは、スライスでサポートされるIBCマージモード候補の最大数をMaxNumMergeCandから減算することを規定する。IBCマージモード候補の最大数MaxNumIBCMergeCandは、以下のように導出される。
MaxNumIBCMergeCand=MaxNumMergeCand-max_num_merge_cand_minus_max_num_IBC_cand
max_num_merge_cand_minus_max_num_IBC_candが存在する場合、MaxNumIBCMergeCandの値は2(または0)からMaxNumMergeCandまでの範囲とする。max_num_merge_cand_minus_max_num_IBC_candが存在しない場合、MaxNumIBCMergeCandは0に等しく設定される。MaxNumIBCMergeCandが0である場合、IBCマージモードとIBCAMVPモードは現在のスライスでは許可されない。}}
代替的に、MaxNumIBCMergeCandの指示の信号通知は次のように置き換えてもよい。
【0262】
【表14】
【0263】
MaxNumIBCMergeCand=5-five_minus_max_num_IBC_cand}}
【0264】
5.2 実施形態#2
IBC BVリストの最大数を、IBCと通常のインターモードの両方を制御するMaxNumMergeCandから別個の変数MaxNumIBCMergeCandに変更することが提案される。
【0265】
8.6.2.2 IBC輝度動きベクトル予測の導出処理
この処理は、CuPredMode[xCb][yCb]がMODE_IBCに等しい場合にのみ呼び出され、ここで、(xCb,yCb)は、現在のピクチャの左上の輝度サンプルに対して、現在の輝度コーディングブロックの左上のサンプルを規定する。
この処理への入力は以下の通りである。
-現在のピクチャの左上の輝度サンプルに対する現在の輝度コーディングブロックの左上のサンプルの輝度位置(xCb,yCb)、
-輝度サンプルにおける現在のコーディングブロックの幅を規定する変数cbWidth、
-輝度サンプルにおける現在のコーディングブロックの高さを規定する変数cbHeight。
【0266】
この処理の出力は以下の通りである。
-1/16分数サンプル精度mvLにおける輝度動きベクトル。
変数xSmr、ySmr、smrWidth、smrHeight、およびsmrNumHmvpIbcCandは、以下のように導出される。
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-910)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-911)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-912)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-913)
smrNumHmvpIbcCand=IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:NumHmvpIbcCand (8-914)
【0267】
輝度動きベクトルmvLは、以下の順序ステップによって導出される。
1.8.6.2.3節で規定される近傍のコーディングユニットからの空間的動きベクトル候補の導出処理は、(xSmr,ySmr)に等しく設定された輝度コーディングブロックの位置(xCb,yCb)、smrWidthおよびsmrHeightに等しく設定しされた輝度コーディングブロックの幅cbWidthおよび輝度コーディングブロックの高さcbHeightを入力として呼び出され、出力は可用性フラグavailableFlagA、availableFlagB、並びに動きベクトルmvAおよびmvBである。
【0268】
2.動きベクトル候補リストmvCandListは、以下のように構成される。
i=0
if(availableFlagA
mvCandList[i++]=mvA
if(availableFlagB
mvCandList[i++]=mvB (8-915)
【0269】
3.変数numCurrCandは、mvCandListにおけるマージ候補の数に等しく設定される。
【0270】
4.numCurrCandが[[MaxNumMergeCand]]{{MaxNumIBCMergeCand}}より小さく、かつ、smrNumHmvpIbcCandが0よりも大きい場合、8.6.2.4で規定されるようなIBC履歴ベースの動きベクトル候補の導出処理は、mvCandList、IsInSmr[xCb][yCb]に等しく設定されたisInSmr、およびnumCurrCandを入力とし、修正されたmvCandListおよびnumCurrCandを出力として呼び出される。
【0271】
5.numCurrCandが[[MaxNumMergeCand]]{{MaxNumIBCMergeCand}}より小さい場合、numCurrCandがMaxNumMergeCandに等しくなるまで、以下が適用される。
1.mvCandList[numCurrCand][0]は、0に等しく設定される。
2.mvCandList[numCurrCand][1]は、0に等しく設定される。
3.numCurrCandは1増加される。
【0272】
6.変数mvIdxは、以下のように導出される。
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb]
(8-916)
【0273】
7.以下の割り当てが行われる。
mvL[0]=mergeCandList[mvIdx][0] (8-917)
mvL[1]=mergeCandList[mvIdx][1] (8-918)
一例において、現在のブロックがIBCマージモードである場合、MaxNumIBCMergeCandは、MaxNumMergeCandに設定され、現在のブロックがIBC AMVPモードである場合、MaxNumMergeCandは2に設定される。
一例において、MaxNumIBCMergeCandは、例えば実施形態#1を使用して、信号通知された情報から導出される。
【0274】
5.3 実施形態#3
最大許容IBC候補数による、IBC関連構文要素の条件付き信号通知一例において、MaxNumIBCMergeCandは、MaxNumMergeCandに設定される。
【0275】
7.3.7.5 コーディングユニット構文
【0276】
【表15】
【0277】
1に等しいcu_skip_flag[x0][y0]は、現在のコーディングユニットに対し、PまたはBスライスを復号化する場合、cu_skip_flag[x0][y0]の後では、IBCモードフラグpred_mode_ibc_flag[x0][y0]{{MaxNumIBCMergeCandが0より大きい場合}}、およびmerge_data()構文構造のうちの1または複数の構文要素以外は構文解析されず、Iスライスを復号化する場合{{、かつ、MaxNumIBCMergeCandが0より大きい場合}}、cu_skip_flag[x0][y0]の後ではmerge_idx[x0][y0]以外の構文要素は解析されないことを規定する。0に等しいcu_skip_flag[x0][y0]は、コーディングユニットがスキップされないことを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに対する、考慮されるコーディングブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
cu_skip_flag[x0][y0]が存在しない場合、0に等しいと推論される。
【0278】
1に等しいpred_mode_ibc_flagは、現在のコーディングユニットがIBC予測モードでコーディングされることを規定する。0に等しいpred_mode_ibc_flagは、現在のコーディングユニットが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スライスを復号化する場合{{、かつ、MaxNumIBCMergeCandが0より大きい場合}}、pred_mode_ibc_flagはsps_ibc_enabled_flagの数値に等しいと推論され、PスライスまたはBスライスを復号化する場合、pred_mode_ibc_flagは0である。
【0279】
5.4 実施形態#3
最大許容IBC候補数に従う、IBC関連構文要素の条件付き信号通知
【0280】
【表16】
【0281】
一例において、MaxNumIBCAMVPCandは、MaxNumIBCMergeCandまたはMaxNumMergeCandに設定されてもよい。
【0282】
図20Aは、映像処理のための例示的な方法2000を示す。方法2000は、動作2002において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC(Intra Bkock Copy)候補の最大数に基づいて、IBC AMVP(Advanced Motion Vector Prediction)モードのためのMVD(Motion vector Difference)関連構文要素を選択的に含む。いくつかの実施形態において、IBCモードが適用される場合、映像領域に対応する映像ピクチャにおける他のサンプルから映像領域のサンプルが予測される。
【0283】
図20Bは、映像処理のための例示的な方法2005を示す。方法2005は、動作2007において、映像の映像領域と映像のビットストリーム表現との間の変換のために、映像領域に対してIBC(Intra Block Copy)モードの使用の指示を無効化し、映像のシーケンスレベルでIBCモードの使用を有効化することを判定することを含む。
【0284】
方法2005は、動作2009において、判定に基づいて変換を実行することを含む。いくつかの実施形態において、IBCモードが適用される場合、映像領域に対応する映像ピクチャにおける他のサンプルから映像領域のサンプルが予測される。
【0285】
図20Cは、映像処理のための例示的な方法2010を示す。方法2010は、動作2012において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC(Intra Block Copy)候補の最大数に基づいて、IBCモードおよび/または1または複数のIBC関連構文要素の使用に関する指示を選択的に含む。いくつかの実施形態において、IBCモードが適用される場合、映像領域に対応する映像ピクチャにおける他のサンプルから映像領域のサンプルが予測される。
【0286】
図20Dは、映像処理のための例示的な方法2020を示す。方法2020は、動作2022において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用される第1のタイプのIBC(Intra Block Copy)候補の最大数の指示は、変換中に使用されるインターモードのマージ候補の最大数とは独立してビットストリーム表現で信号通知される。いくつかの実施形態において、IBCモードが適用される場合、映像領域に対応する映像ピクチャにおける他のサンプルから映像領域のサンプルが予測される。
【0287】
図20Eは、映像処理のための例示的な方法2030を示す。方法2030は、動作2032において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数は、IBCマージ候補の最大数とAMVP(Advanced Motion Vector Prediction)候補の最大数との関数である。いくつかの実施形態において、IBCモードが適用される場合、映像領域に対応する映像ピクチャにおける他のサンプルから映像領域のサンプルが予測される。
【0288】
図20Fは、映像処理のための例示的な方法2040を示す。方法2040は、動作2042において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数は、映像領域のコーディングされたモード情報に基づく。
【0289】
図20Gは、映像処理のための例示的な方法2050を示す。方法2050は、動作2052において、映像の映像領域とこの映像のビットストリーム表現との間での変換を実行することを含み、復号化されたIBC(Intra Block Copy) AMVP(Advanced Motion Vector Prediction)マージインデックス、または、復号化されたIBCマージインデックスは、IBC(Intra Block Copy)動き候補の最大数より小さい。
【0290】
図20Hは、映像処理のための例示的な方法2060を示す。方法2060は、動作2062において、映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックス、または、IBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することを含む。
【0291】
方法2060は、動作2064において、判定に基づいて、変換中にデフォルト予測ブロックを使用することを含む。
【0292】
図20Iは、映像処理のための例示的な方法2070を示す。方法2070は、動作2072において、映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Mortion Vector Predictor)候補インデックス、または、IBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することを含む。
【0293】
方法2070は、動作2074において、判定に基づいて、映像領域が無効なブロックベクトルを有するものとして扱うことで、変換を実行することを含む。
【0294】
図20Jは、映像処理のための例示的な方法2080を示す。方法2080は、動作2082において、映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy)代替動きベクトル予測子候補インデックス、または、IBCマージ候補インデックスが、条件を満たさないことを判定することを含む。
【0295】
方法2080は、動作2084において、判定に基づいて、補足のBV(Block Vector)候補リストを生成することを含む。
【0296】
方法2080は、動作2086において、補足BV候補リストを使用して変換を実行することを含む。
【0297】
図20Kは、映像処理のための例示的な方法2090を示す。方法2090は、動作2092において、映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、IBC(Intra Block Copy) AMVP(Advanced Motion Vector Prediction)候補の最大数は、2ではない。
【0298】
図21は、映像処理装置2100のブロック図である。装置2100は、本明細書に記載の方法の1または複数を実装するために使用してもよい。装置2100は、スマートフォン、タブレット、コンピュータ、IoT(Internet of Things)受信機等に実施されてもよい。装置2100は、1または複数のプロセッサ2102と、1または複数のメモリ2104と、映像処理ハードウェア2106と、を含んでもよい。1つまたは複数のプロセッサ2102は、本明細書に記載される1または複数の方法を実装するように構成されてもよい。1または複数のメモリ2104は、本明細書で説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用してもよい。映像処理ハードウェア2106は、本明細書に記載される技術をハードウェア回路にて実装するために使用してもよい。映像処理ハードウェア2106は、専用ハードウェア、またはGPU(Graphical Processor Unit)若しくは専用信号処理ブロックの形式で、プロセッサ2102内に部分的にまたは完全に含まれてもよい。
【0299】
いくつかの実施形態において、映像コーディング法は、図21を参照して説明したように、ハードウェアプラットフォームに実装される装置を使用して実施してもよい。
【0300】
開示される技術のいくつかの実施形態は、映像処理ツールまたはモードを有効化するように決定または判定することを含む。一例において、映像処理ツールまたはモードが有効化される場合、エンコーダは、映像ブロックを処理する際にツールまたはモードを使用するまたは実装するが、ツールまたはモードの使用に基づいて、結果として得られるビットストリームを必ずしも修正しなくてもよい。すなわち、映像のブロックから映像のビットストリーム表現への変換は、決定または判定に基づいて映像処理ツールまたはモードが有効化される場合に、映像処理ツールまたはモードを使用する。別の例において、映像処理ツールまたはモードが有効化される場合、デコーダは、ビットストリームが映像処理ツールまたはモードに基づいて修正されたことを知って、ビットストリームを処理する。すなわち、決定または判定に基づいて有効化された映像処理ツールまたはモードを使用して、映像のビットストリーム表現から映像のブロックへの変換を実行する。
【0301】
開示される技術のいくつかの実施形態は、映像処理ツールまたはモードを無効化するように決定または判定することを含む。一例において、映像処理ツールまたはモードが無効にされている場合、エンコーダは、映像のブロックを映像のビットストリーム表現に変換する際に、ツールまたはモードを使用しない。別の例において、映像処理ツールまたはモードが無効にされている場合、デコーダは、決定または判定に基づいて有効化された映像処理ツールまたはモードを使用してビットストリームが修正されていないことを知って、ビットストリームを処理する。
【0302】
図22は、本明細書で開示される様々な技術が実装され得る例示的な映像処理システム2200を示すブロック図である。様々な実装形態は、システム2200の構成要素の一部または、全部を含んでもよい。システム2200は、映像コンテンツを受信するための入力2202を含んでもよい。映像コンテンツは、未加工または、非圧縮フォーマット、例えば、8または、10ビットのマルチコンポーネント画素値で受信されてもよく、または、圧縮または、符号化フォーマットで受信されてもよい。入力2202は、ネットワークインターフェース、周辺バスインターフェース、または、記憶インターフェースを表してもよい。ネットワークインターフェースの例は、イーサネット(登録商標)、PON(Passive Optical Network)等の有線インターフェース、およびWi-Fi(登録商標)またはセルラーインターフェース等の無線インターフェースを含む。
【0303】
システム2200は、本明細書に記載される様々な符号化または符号化方法を実装することができるコーディングコンポーネント2204を含んでもよい。コーディングコンポーネント2204は、入力2202からの映像の平均ビットレートをコーディングコンポーネント2204の出力に低減し、映像のコーディングされた表現を生成してもよい。従って、コーディング技術は、映像圧縮または映像コード変換技術と呼ばれることがある。コーディングコンポーネント2204の出力は、コンポーネント2206によって表されるように、記憶されてもよいし、接続された通信を介して送信されてもよい。入力2202において受信された、記憶されたまたは、通信された映像のビットストリーム(または、コーディングされた)表現は、コンポーネント2208によって使用されて、表示インターフェース2210に送信される画素値または、表示可能な映像を生成してもよい。ビットストリーム表現からユーザが見ることができる映像を生成する処理は、映像伸張と呼ばれることがある。さらに、特定の映像処理動作を「コーディング」動作または、ツールと呼ぶが、コーディングツールまたは動作は、エンコーダおよびそれに対応する、復号化の結果を逆にする復号化ツールまたは動作が、デコーダによって行われることが理解されよう。
【0304】
周辺バスインターフェースユニットまたは表示インターフェースユニットの例は、USB(Universal Serial Bus)またはHDMI(High Definition Multimedia Interface)(登録商標)またはディスプレイポート等を含んでもよい。ストレージインターフェースの例は、SATA(Serial Advanced Technology Attachment)、PCI、IDEインターフェース等を含む。本明細書に記載される技術は、携帯電話、ノートパソコン、スマートフォン、または、デジタルデータ処理および/または、映像表示を実施可能な他のデバイス等の様々な電子デバイスに実施されてもよい。
【0305】
いくつかの実施形態において、下記のような技術的解決策を実装することができる。
【0306】
A1.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを含み、ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC(Intra Block Copy)候補の最大数に基づいて、IBC AMVP(Advanced Motion Vector Prediction)モードのためのMVD(Motion Vector Difference)関連構文要素を選択的に含み、IBCモードを適用する場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、映像処理の方法。
【0307】
A2.MVD関連構文要素は、コーディングされた動きベクトル予測子インデックス、動きベクトル予測子のコーディングされた精度、動きベクトル差分、およびIBC AMVPモードの動きベクトル差のコーディングされた精度のうちの少なくとも1つを含む、解決策A1に記載の方法。
【0308】
A3.第1のタイプのIBC候補の最大数がK以下であることに基づいて、ビットストリーム表現は、IBC AMVPモードおよびIBC AMVPモードのためのMDV関連構文要素の信号通知を除外し、IBC AMVPモードは無効化されると推測され、Kは整数である、解決策A1に記載の方法。
【0309】
A4.第1のタイプのIBC候補の最大数がK以下であることに基づいて、ビットストリーム表現は、IBC AMVPモードおよびIBC AMVPモードのための動きベクトル差分の信号通知を除外し、IBC AMVPモードは無効化されると推測され、Kは整数である、解決策A1に記載の方法。
【0310】
A5.第1のタイプのIBC候補の最大数がKよりも大きいことに基づいて、ビットストリーム表現は、コーディングされた動きベクトル予測子インデックス、動きベクトル予測子のコーディングされた精度、およびIBC AMVPモードの動きベクトル差分のコーディングされた精度のうちの少なくとも1つを選択的に含み、Kは整数である、解決策A1に記載の方法。
【0311】
A6.K=0またはK=1である、解決策A3~A5のいずれかに記載の方法。
【0312】
A7.第1のタイプのIBC候補の最大数が1であることに基づいて、ビットストリーム表現は、IBC AMVPモードのための動きベクトル予測子インデックスを除外する、解決策A1に記載の方法。
【0313】
A8.IBC AMVPモードのための動きベクトル予測子インデックスがゼロであると推測される、解決策A19に記載の方法。
【0314】
A9.第1のタイプのIBC候補の最大数がゼロに等しいことに基づいて、ビットストリーム表現は、動きベクトル予測子の精度および/またはIBC AMVPモードの動きベクトル差分の精度を除外する、解決策A1に記載の方法。
【0315】
A10.第1のタイプのIBC候補の最大数がゼロよりも大きいことに基づいて、ビットストリーム表現は、動きベクトル予測子の精度および/またはIBC AMVPモードの動きベクトル差分の精度を除外する、解決策A1に記載の方法。
【0316】
A11.第1のタイプのIBC候補の最大数は、IBC動き候補の最大数(maxIBCCandNumと表される)である、解決策A1~A10のいずれかに記載の方法。
【0317】
A12.第1のタイプのIBC候補の最大数は、IBCマージ候補の最大数(maxIBCMrgNumと表される)である、解決策A1~A10のいずれかに記載の方法。
【0318】
A13.第1のタイプのIBC候補の最大数は、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumと表される)である、解決策A1~A10のいずれかに記載の方法。
【0319】
A14.第1のタイプのIBC候補の最大数は、ビットストリーム表現で信号通知される、解決策A1~A10のいずれかに記載の方法。
【0320】
A15.映像の映像領域と映像のビットストリーム表現との間での変換のために、映像領域に対してIBC(Intra Block Copy)モードの使用の指示が無効化され、かつ、映像のシーケンスレベルでIBCモードの使用が有効化されることを判定することと、判定に基づいて、変換を実行することと、を有し、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、映像処理の方法。
【0321】
A16.映像領域は、映像ピクチャのピクチャ、スライス、タイル、タイルグループ、または、ブリックに対応する、解決策A15に記載の方法。
【0322】
A17.ビットストリーム表現は、判定に関連付けられた指示を有する、解決策A15またはA16に記載の方法。
【0323】
A18.指示は、ピクチャ、スライス、タイル、ブリック、または、APS(Adaptation Parameter Set)にて信号通知される、解決策A17に記載の方法。
【0324】
A19.指示は、PPS(Picture Parameter Set)、スライスヘッダ、ピクチャヘッダ、タイルヘッダ、タイルグループヘッダ、または、ブリックヘッダにて信号通知される、解決策A18に記載の方法。
【0325】
A20.スクリーンコンテンツと異なる映像のコンテンツに基づいて、IBCモードは無効化される、解決策A15に記載の方法。
【0326】
A21.映像の映像コンテンツがカメラでキャプチャされたコンテンツであることに基づいて、IBCモードが無効化される、解決策A15に記載の方法。
【0327】
A22.映像の映像領域と前記映像のビットストリーム表現との間での変換を実行することを含み、前記ビットストリーム表現は、映像領域の変換中に使用される第1のタイプのIBC候補の最大数に基づいて、IBC(Intra Block Copy)モードおよび/または1または複数のIBC関連構文要素の使用に関する指示を選択的に含み、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、映像処理の方法。
【0328】
A23.第1のタイプのIBC候補の最大数が、インターコーディングされたブロックのマージ候補の最大数に等しく設定される、解決策A22に記載の方法。
【0329】
A24.第1のタイプのIBC候補の最大数がゼロに等しいことに基づいて、ビットストリーム表現は、IBCスキップモードおよびIBCスキップモードの信号通知を除外し、IBCスキップモードは無効化されると推測される、解決策A22に記載の方法。
【0330】
A25.第1のタイプのIBC候補の最大数がゼロに等しいことに基づいて、ビットストリーム表現は、IBCマージモードまたはIBC AMVP(Advanced Motion Vector Prediction)モードの信号通知を除外し、IBCモードは無効化されると推測される、解決策A22に記載の方法。
【0331】
A26.第1のタイプのIBC候補の最大数がゼロに等しいことに基づいて、ビットストリーム表現は、マージモードの信号通知を除外し、IBCマージモードは無効化されると推測される、解決策A22に記載の方法。
【0332】
A27.第1のタイプのIBC候補の最大数は、IBC動き候補の最大数(maxIBCCandNumにて示される)、IBCマージ候補の最大数(maxIBCMrgNumにて示される)、または、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)である、解決策A22~A26のいずれかに記載の方法。
【0333】
A28.第1のタイプのIBC候補の最大数は、ビットストリーム表現にて信号通知される、解決策A22~A26のいずれかに記載の方法。
【0334】
A29.変換は、ビットストリーム表現から映像領域の画素値を生成することを有する、解決策A1~A28のいずれかに記載の方法。
【0335】
A30.変換は、映像領域の画素値からビットストリーム表現を生成することを有数r、解決策A1~A28のいずれかに記載の方法。
【0336】
A31.解決策A~A30の1または複数に記載の方法を実装するように構成されたプロセッサを備える映像処理装置。
【0337】
A32.実行された際に、解決策A1~A30の1または複数に記載の方法をプロセッサに実装させるプログラムコードを記憶するコンピュータ可読媒体。
【0338】
いくつかの実施形態において、下記のような技術的解決策を実装することができる。
【0339】
B1.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の変換中に使用される、第1のタイプのIBC(Intra Block Copy)候補の最大数の指示は、変換に使用されるインターモードのマージ候補の最大数とは独立してビットストリーム表現にて信号通知され、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、映像処理の方法。
【0340】
B2.第1のタイプのIBC候補の最大数は、ビットストリーム表現にて直接信号通知される、解決策B1に記載の方法。
【0341】
B3.映像領域の変換に対してIBCモードが有効化されていることに起因して、第1のタイプのIBC候補の最大数がゼロよりも大きい、解決策B1に記載の方法。
【0342】
B4.別の値を使用して、第1のタイプのIBC候補(maxNumIBCにて示される)の最大数を予測的にコーディングすることをさらに有する、解決策B1~B3のいずれかに記載の方法。
【0343】
B5.第1のタイプのIBC候補の最大数の指示は、予測的なコーディングの後の差分に設定される、解決策4に記載の方法。
【0344】
B6.差分は、別の値と第1のタイプのIBC候補の最大数との間である、解決策B5に記載の方法。
【0345】
B7.別の値は通常のマージリストのサイズ(S)であり、(S-maxNumIBC)は、ビットストリームにて信号通知され、Sは整数である、解決策B6に記載の方法。
【0346】
B8.別の値は固定整数(K)であり、(K-maxNumIBC)はビットストリームにて信号通知される、解決策B6に記載の方法。
【0347】
B9.K=5またはK=6である、解決策B8に記載の方法。
【0348】
B10.第1のタイプのIBC候補の最大数は、(K-ビットストリームにて信号通知される最大数の指示)となるように導出される、解決策B6~B9のいずれかに記載の方法。
【0349】
B11.差分は、第1のタイプのIBC候補の最大数と前記別の値との間にある、解決策B5に記載の方法。
【0350】
B12.別の値は固定整数(K)であり、(maxNumIBC-K)はビットストリームにて信号通知される、解決策B11に記載の方法。
【0351】
B13.K=0またはK=2である、解決策B12に記載の方法。
【0352】
B14.第1のタイプのIBC候補の最大数は、(ビットストリームにて信号通知される最大数の指示+K)となるように導出される、解決策B11~B13に記載の方法。
【0353】
B15.第1のタイプのIBC候補の最大数は、IBC動き候補の最大数(maxIBCCandNumにて示される)である、解決策B1~B14のいずれかに記載の方法。
【0354】
B16.第1のタイプのIBC候補の最大数は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)である、解決策B1~B14のいずれかに記載の方法。
【0355】
B17.第1のタイプのIBC候補の最大数は、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)である、解決策B1~B14のいずれかに記載の方法。
【0356】
B18.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の変換中に使用される最大数のIBC(Intra Block Copy)動き候補(maxIBCCandNumにて示される)は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)およびIBC AMVP(Advanced Motion vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)の関数であり、IBCモードが適用される場合、映像領域に対応する映像ピクチャ内の他のサンプルから映像領域のサンプルが予測される、映像処理の方法。
【0357】
B19.maxIBCAMVPNumは2に等しい、解決策B18に記載の方法。
【0358】
B20.関数は、その引数の大きいほうを返す、解決策B18またはB19に記載の方法。
【0359】
B21.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の前記変換中に使用されるIBC(Intra Block Copy)動き候補の最大数(maxIBCCandNumにて示される)は、映像領域のコーディングされたモード情報に基づく、映像処理の方法。
【0360】
B22.maxIBCCandNumは、IBCマージモードで符号化されている映像領域に基づいて、IBCマージ候補の最大数(maxIBCMrgNumにて示される)に設定される、解決策B21に記載の方法。
【0361】
B23.maxIBCCandNumは、IBC AMVPモードでコーディングされる映像領域に基づいて、IBC AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)に設定される、解決策B21に記載の方法。
【0362】
B24.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、復号化されたIBC(Intra Block Copy) AMVP(Advanced Motion Vector Prediction)マージインデックスまたは復号化されたIBCマージインデックスは、IBC動き候補の最大数(maxIBCCandNumにて示される)より小さい、映像処理の方法。
【0363】
B25.復号化されたIBC AMVPマージインデックスは、IBC AMVP候補の最大数(maxIBCAMVPNumにて示される)より小さい、解決策B24に記載の方法。
【0364】
B26.復号化されたIBCマージインデックスは、IBCマージ候補の最大数(maxIBCMrgNumにて示される)より小さい、解決策B24に記載の方法。
【0365】
B27.maxIBCMrgNum=2である、解決策B26に記載の方法。
【0366】
B28.映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックスまたはIBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、変換中のデフォルト予測ブロックを使用することとを有する、映像処理の方法。
【0367】
B29.デフォルト予測ブロックの各サンプルは、(1<<(BitDepth-1))に設定され、BitDepthは正の整数である、解決策B28に記載の方法。
【0368】
B30.デフォルトのブロックベクトルは、デフォルト予測ブロックに割り当てられる、解決策B28に記載の方法。
【0369】
B31.映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックスまたはIBCマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、映像領域が無効なブロックベクトルを有するものとして扱うことによって、変換を実行することと、を有する、映像処理の方法。
【0370】
B32.映像の映像領域と映像のビットストリーム表現との間での変換中に、IBC(Intra Block Copy) AMVP(Alternative Motion Vector Predictor)候補インデックスまたはIBCマージ候補インデックスが条件を満たさないことを判定することと、判定に基づいて、補足のBV(Block Vector)候補リストを生成することと、補足BV候補リストを使用して、変換を実行することと、を有する、映像処理の方法。
【0371】
B33.条件は、IBC AMVP候補インデックスまたはIBCマージ候補インデックスが、映像領域のIBC動き候補の最大数以上である、解決策B32に記載の方法。
【0372】
B34.補足のBV候補ベクトルリストは、1または複数のHMVP(History-based Motion Vector Prediction)候補を追加することと、他のBV候補から1または複数の仮想BV候補を生成することと、1または複数のデフォルトの候補を追加すること、のステップを用いて生成される、解決策B32またはB33に記載の方法。
【0373】
B35.ステップが順に実行される、解決策B34に記載の方法。
【0374】
B36.ステップがインターリーブ方式で実行される、解決策B34に記載の方法。
【0375】
B37.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、IBC(Intra Block Copy) AMVP(Advanced Motion Vector Prediction)候補の最大数(maxIBCAMVPNumにて示される)は、2に等しくない、映像処理の方法。
【0376】
B38.ビットストリーム表現は、動きベクトル予測子インデックスを示すフラグを除外し、1よりも大きい値を有するインデックスを含む、解決策B37に記載の方法。
【0377】
B39.インデックスは、ユーナリー、トランケイテッドユーナリー、固定長、または、指数ゴロム表現を用いてバイナリコーディングされる、解決策B38に記載の方法。
【0378】
B40.インデックスのバイナリビン文字列のビンは、コンテキストコーディングまたはバイパスコーディングされる、解決策B38に記載の方法。
【0379】
B41.maxIBCAMVPNumは、IBCマージ候補の最大数(maxIBCMrgNumにて示される)よりも大きい、解決策B37に記載の方法。
【0380】
B42.映像領域と映像領域のビットストリーム表現との間での変換中に、IBC(Intra Block Copy)動き候補の最大数がゼロであることを判定することと、判定に基づいて、変換中にIBCブロックベクトル候補リストを生成することによって変換を実行することと、を有する、映像処理の方法。
【0381】
B43.変換は、IBC AMVP(Advanced Motion Vector Prediction)モードが映像領域の変換に対して有効化されていることに基づいて、マージリストを生成することをさらに含む、解決策B42に記載の方法。
【0382】
B44.変換は、IBCマージモードが映像領域の変換に対して無効化されていることに基づいて、IBC AMVP候補の最大数までの長さを有するマージリストを生成することをさらに含む、解決策B42に記載の方法。
【0383】
B45.変換は、ビットストリーム表現から映像領域の画素値を生成することを有する、解決策B1~B44のいずれかに記載の方法。
【0384】
B46.変換は、映像領域の画素値からビットストリーム表現を生成することを有する、解決策B1~B44のいずれかに記載の方法。
【0385】
B47.解決策B1~B46の1または複数に記載の方法を実装するように構成されたプロセッサを備える、映像処理装置。
【0386】
B48.実行された際に、解決策B1~B46の1または複数に記載の方法をプロセッサに実装させるプログラムコードを記憶するコンピュータ可読媒体。
【0387】
いくつかの実施形態において、下記のような技術的解決策を実装することができる。
【0388】
C1.映像の映像領域と映像領域のビットストリーム表現との間での変換中に、映像領域に対するイントラブロックコピーモードの使用が無効化され、かつ、映像の他の映像領域に対するイントラブロックコピーモードの使用が有効化されることを判定することと、判定に基づいて変換を実行することと、を有し、イントラブロックコピーモードにおいて、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測される、映像処理の方法。
【0389】
C2.映像領域は、映像ピクチャ、または、映像ピクチャのスライス、または、タイル
、または、タイルグループ、もしくはブリックに対応する、解決策C1に記載の方法。
【0390】
C3.ビットストリーム表現は、判定に関する指示を含む、解決策C1~C2のいずれかに記載の方法。
【0391】
C4.指示は、ピクチャ、または、スライス、または、タイル、または、タイルグループ、または、ブリックレベルにて含まれる、解決策C3に記載の方法。
【0392】
C5.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、ビットストリーム表現は、映像領域の変換中に使用されるIBC動き候補の最大数(maxIBCCandNumにて示される)が、変換中に使用されるマージ候補の最大数(MaxNumMergeCandにて示される)に等しい場合における判定に関する指示を選択的に含む、映像処理の方法。
【0393】
C6.maxIBCCandNumはゼロに等しく、maxIBCCardNumがゼロに等しいことに起因して、ビットストリーム表現は、特定のIBC情報の信号通知を除外する、解決策C5に記載の方法。
【0394】
C7.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、ビットストリーム表現は、映像領域の変換中に使用され、条件を満足するイントラブロックコピー動き候補の最大数(maxIBCCandNumにて示される)の値に依存する、イントラブロックコピー代替動きベクトル予測子のための動きベクトル差分関連の構文要素を含み、イントラブロックコピーモードにおいて、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測される、映像処理の方法。
【0395】
C8.条件は、maxIBCCandNumが、変換中に使用されるマージ候補の最大数(MaxNumMergeCandにて示される)に等しいことを含む、解決策C7に記載の方法。
【0396】
C9.maxIBCCandNumは0に等しく、maxIBCCandNumが0に等しいことに起因して、イントラブロックコピー代替動きベクトル予測子のための動きベクトル予測子インデックスの信号通知が、ビットストリーム表現から省略される、解決策C8に記載の方法。
【0397】
C10.maxIBCCandNumは0に等しく、maxIBCCandNumが0に等しいことに起因して、イントラブロックコピー代替動きベクトル予測子のための動きベクトル差分の信号通知が、ビットストリーム表現から省略される、解決策C8の方法。
【0398】
C11.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の変換中に使用されるイントラブロックコピー動き候補の最大数(maxIBCCandNumにて示される)は、ビットストリーム表現にて、変換中に使用されるマージ候補の最大数(MaxNumMergeCandにて示される)とは独立して信号通知され、イントラブロックコピーは、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測されるモードに対応する、映像処理の方法。
【0399】
C12.イントラブロックコピーが映像領域の変換に対して有効化されていることに起因して、MaxIBCCandNumはゼロよりも大きい、解決策C11に記載の方法。
【0400】
C13.maxIBCCandNumは、別の値を使用して予測的にコーディングすることにより、ビットストリーム表現にて信号通知される、解決策C11~C12のいずれかに記載の方法。
【0401】
C14.別の値は、MaxNumMergeCandである、解決策C13に記載の方法。
【0402】
C15.別の値は、定数Kである、解決策C13に記載の方法。
【0403】
C16.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数(maxIBCCandNumにて示される)は、映像領域のコーディングされたモード情報に依存し、IBCは、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測されるモードに対応する、映像処理の方法。
【0404】
C17.ブロックがIBCマージモードでコーディングされる場合、maxIBCCandNumは、IBCマージ候補の最大数(maxIBCMrgNumにて示される)に設定される、解決策C16の方法。
【0405】
C18.ブロックがIBC AMVP(Alternative Motion Vector Prediction)候補モードでコーディングされる場合、maxIBCCandNumは、IBC AMVP数の最大数(maxIBCAMVPNumにて示される)に設定される、解決策C16の方法。
【0406】
C19.maxIBCMrgNumは、スライスヘッダにて信号通知される、解決策C17の方法。
【0407】
C20.maxIBCMrgNumは、許容される非IBC並進マージ候補の最大数と同じに設定される、解決策C17に記載の方法。
【0408】
C21.maxIBCAMVPNumは、2に等しく設定される、解決策C18の方法。
【0409】
C22.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、映像領域の変換中に使用されるIBC(Intra Block Copy)動き候補の最大数(maxIBCCandNumにて示される)は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)と、IBC代替動きベクトル予測候補の最大数(maxIBCAMVPNumにて示される)との第1の関数であり、IBCは、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測されるモードに対応する、映像処理の方法。
【0410】
C23.maxIBCAMVPNumは、2に等しい、解決策C22に記載の方法。
【0411】
C24.変換中、復号化されたIBC代替動きベクトル予測子インデックスは、maxIBCAMVPNumより小さい、解決策C22~C23に記載の方法。
【0412】
C25.映像の映像領域と映像のビットストリーム表現との間での変換中に、イントラブロックコピー代替動きベクトル予測子インデックスまたはイントラブロックコピーマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、変換中にデフォルト予測ブロックを使用することと、を有する、映像処理の方法。
【0413】
C26.映像の映像領域と映像のビットストリーム表現との間での変換中に、イントラブロックコピー代替動きベクトル予測子インデックスまたはイントラブロックコピーマージ候補インデックスが、ブロックベクトル候補リストにおけるブロックベクトル候補を識別できないことを判定することと、判定に基づいて、映像領域が無効ブロックベクトルを有するとして扱うことにより変換を実行することを有する、映像処理の方法。
【0414】
C27.映像の映像領域と映像のビットストリーム表現との間での変換中に、イントラブロックコピー代替動きベクトル予測子インデックスまたはイントラブロックコピーマージ候補インデックスが条件を満たさないことを判定することと、判定に基づいて、補足のBV(Block Vector)候補リストを生成することと、補足のブロックベクトル候補リストを使用して変換を実行することと、を有する、映像処理の方法。
【0415】
C28.条件は、イントラブロックコピー代替動きベクトル予測子インデックスまたはイントラブロックコピーマージ候補インデックスが、映像領域のためのイントラブロックコピー候補の最大数よりも小さいあることを含む、解決策C27に記載の方法。
【0416】
C29.前記補足のBV候補ベクトルリストは、履歴ベースの動きベクトル予測子候補を生成することと、他のBV候補から仮想BV候補を生成することと、デフォルトの候補を追加することと、のステップを使用して生成される、解決策C27~C28のいずれかに記載の方法。
【0417】
C30.ステップは順に実行される、解決策C29に記載の方法。
【0418】
C31.ステップはインターリーブ方式で実行される、解決策C29に記載の方法。
【0419】
C32.映像の映像領域と映像のビットストリーム表現との間での変換を実行することを有し、IBC代替動きベクトル予測候補数の最大数(maxIBCAMVPNumにて示される)は2に等しくなく、IBCは、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測されるモードに対応する、映像処理の方法。
【0420】
C33.ビットストリーム表現は、動きベクトル予測子インデックスを示す第1のフラグを除外し、1よりも大きい値を有するインデックスを含む、解決策C32に記載の方法。
【0421】
C34.インデックスは、ユーナリー/トランケイテッドユーナリー/固定長/指数ゴロム/他の2値化表現で2値化されるものを用いてコーディングされる、解決策C32~C33のいずれかに記載の方法。
【0422】
C35.映像領域と映像領域のビットストリーム表現との間での変換中に、IBC(Intra Block Copy)候補の最大数がゼロであることを判定することと、判定に基づいて、変換中にIBCブロックベクトル候補リストを生成することによって、変換を実行することと、を有し、IBCは、映像領域に対応する映像ピクチャにおける他の画素から映像領域の画素が予測されるモードに対応する、映像処理の方法。
【0423】
C36.変換は、映像領域の変換に対してIBC代替動きベクトル予測子モードが有効化されていると仮定することによって、マージリストを生成することをさらに含む、解決策C35に記載の方法。
【0424】
C37.変換は、映像領域の変換に対してIBCマージモードが無効化されている場合、IBC高度動きベクトル予測子候補の最大数までの長さを有するマージリストを生成することをさらに含む、解決策C34に記載の方法。
【0425】
C38.変換は、ビットストリーム表現から映像領域の画素値を生成することを有する、解決策C1~C37のいずれかに記載の方法。
【0426】
C39.変換は、映像領域の画素値からビットストリーム表現を生成することを有する、解決策C1~C37のいずれかに記載の方法。
【0427】
C40.解決策C1~C39の1または複数に記載の方法を実装するように構成されたプロセッサを備える、映像処理装置。
【0428】
C41.実行された際に、解決策C1~C39の1または複数に記載の方法をプロセッサに実装させるプログラムコードを記憶するコンピュータ可読媒体。
【0429】
本明細書に記載された開示された、およびその他の解決策、実施例、実施形態、モジュール、および機能動作の実装形態は、本明細書に開示された構造およびその構造的均等物を含め、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1または複数の組み合わせで実施してもよい。開示された、およびその他の実施形態は、1または複数のコンピュータプログラムプロダクト、すなわち、データ処理装置によって実装されるため、またはデータ処理装置の動作を制御するために、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1または複数のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶デバイス、機械可読記憶基板、メモリデバイス、機械可読伝播信号をもたらす物質の組成物、またはこれらの1または複数の組み合わせであってもよい。「データ処理装置」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサ、若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を含む。装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1または複数の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成した信号、例えば、機械で生成した電気、光、または電磁信号であり、適切な受信装置に送信するための情報を符号化するために生成される。
【0430】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、また、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとして含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1または複数のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1または複数のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。1つのコンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開することも可能である。
【0431】
本明細書に記載された処理およびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1または複数のコンピュータプログラムを実行する1または複数のプログラマブルプロセッサによって行うことができる。処理およびロジックフローはまた、特定用途のロジック回路、例えば、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって行うことができ、装置はまた、特別目的のロジック回路として実装することができる。
【0432】
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用および専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの任意の1または複数のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1または複数のメモリデバイスとである。一般的に、コンピュータは、データを記憶するための1または複数の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含み、例えば、EPROM、EEPROM、フラッシュ記憶装置、磁気ディスク、例えば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスク等の半導体記憶装置を含む。処理装置およびメモリは、特定用途のロジック回路によって補完されてもよく、または特定用途のロジック回路に組み込まれてもよい。
【0433】
本特許明細書は多くの詳細を含むが、これらは、任意の主題の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許明細書において別個の実施形態のコンテキストで説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、1つの例のコンテキストで説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1または複数の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブコンビネーションまたはサブコンビネーションのバリエーションに向けられてもよい。
【0434】
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で行われること、または示された全ての動作が行われることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムの構成要素の分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
【0435】
いくつかの実装形態および例のみが記載されており、この特許文献に記載され図示されているコンテンツに基づいて、他の実施形態、拡張および変形が可能である。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8
図9
図10A
図10B
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20A
図20B
図20C
図20D
図20E
図20F
図20G
図20H
図20I
図20J
図20K
図21
図22
【手続補正書】
【提出日】2023-08-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
映像処理の方法であって、
映像の映像領域と、前記映像のビットストリームとの間の変換のために、マージモードが、前記映像領域の映像ブロックに適用されるか否か、および、IBC(Intra Block Copy)モードが前記映像ブロックに適用されるか否かを判定することと、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像領域の前記変換の間に用いられるIBCマージブロックベクトル予測候補の最大数に基づいて、前記ビットストリームにおける前記映像ブロックに対する少なくとも1つの構文要素を含むか否かを判定することと、
を有し、
前記IBCモードが適用される場合、前記映像ブロックのサンプルは、前記映像ブロックを有する映像ピクチャにおける他のサンプルから予測され、
前記マージモードが前記映像ブロックに適用され、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックのベクトルは、ベクトル予測子に基づいて導出され、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックの前記ベクトルは、前記ベクトル予測子とベクトル差分とに基づいて導出される、方法。
【請求項2】
前記少なくとも1つの構文要素は、リスト0のベクトル予測子インデックスを含み、
リスト0は、0の参照ピクチャリストインデックスを有する前記映像ブロックの参照ピクチャリストである、請求項1に記載の方法。
【請求項3】
前記少なくとも1つの構文要素は、前記ベクトル予測子の精度、ベクトル差分、および、前記IBCモードのベクトル差分の精度を含む、請求項1または2に記載の方法。
【請求項4】
前記IBCマージブロックベクトル予測候補の前記最大数がKよりも大きいことに基づいて、前記ビットストリームは、前記少なくとも1つの構文要素を含み、
前記IBCマージブロックベクトル予測候補の前記最大数がK以下であることに基づいて、前記ビットストリームは、前記少なくとも1つの構文要素を除く、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記少なくとも1つの構文要素に含まれるベクトル予測子インデックスは、除かれ、
前記ベクトル予測子インデックスは、ゼロであると推定される、請求項4に記載の方法。
【請求項6】
K=1である、請求項4または5に記載の方法。
【請求項7】
前記IBCマージブロックベクトル予測候補の前記最大数は、ゼロに等しく、
前記IBCモードは、無効化される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記IBCマージブロックベクトル予測候補の前記最大数は、前記ビットストリームにて示される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記IBCマージブロックベクトル予測候補の前記最大数は、(L-前記ビットストリームにて信号通知される指示)となるように導出され、
Lは、所定の値である、請求項1から8のいずれか一項に記載の方法。
【請求項10】
L=6である、請求項9に記載の方法。
【請求項11】
前記IBCマージブロックベクトル予測候補の前記最大数は、ブロックの通常のマージ候補の最大数から切り離される、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記IBCモードが前記映像ブロックを有するスライスに対して有効化される場合、前記ビットストリームは、前記IBCマージブロックベクトル予測候補の前記最大数が0よりも大きいことを満たす、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記IBCマージブロックベクトル予測候補の前記最大数は、IBCマージ候補の最大数(maxIBCMrgNumにて示される)である、請求項1から12のいずれか一項に記載の方法。
【請求項14】
前記変換は、前記映像ブロックを前記ビットストリームから復号することを含む、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記変換は、前記映像ブロックを前記ビットストリームに符号化することを含む、請求項1から13のいずれか一項に記載の方法。
【請求項16】
プロセッサと、命令を有する非一時的メモリとを有する、映像データを処理するための装置であって、
前記命令が前記プロセッサによって実行されると、前記プロセッサに、
映像の映像領域と、前記映像のビットストリームとの間の変換のために、マージモードが、前記映像領域の映像ブロックに適用されるか否か、および、IBC(Intra Block Copy)モードが前記映像ブロックに適用されるか否かを判定することと、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像領域の前記変換の間に用いられるIBCマージブロックベクトル予測候補の最大数に基づいて、前記ビットストリームにおける前記映像ブロックに対する少なくとも1つの構文要素を含むか否かを判定することと、
を実行させ、
前記IBCモードが適用される場合、前記映像ブロックのサンプルは、前記映像ブロックを有する映像ピクチャにおける他のサンプルから予測され、
前記マージモードが前記映像ブロックに適用され、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックのベクトルは、ベクトル予測子に基づいて導出され、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックの前記ベクトルは、前記ベクトル予測子とベクトル差分とに基づいて導出される、装置。
【請求項17】
プロセッサに、
映像の映像領域と、前記映像のビットストリームとの間の変換のために、マージモードが、前記映像領域の映像ブロックに適用されるか否か、および、IBC(Intra Block Copy)モードが前記映像ブロックに適用されるか否かを判定することと、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像領域の前記変換の間に用いられるIBCマージブロックベクトル予測候補の最大数に基づいて、前記ビットストリームにおける前記映像ブロックに対する少なくとも1つの構文要素を含むか否かを判定することと、
を実行させ、
前記IBCモードが適用される場合、前記映像ブロックのサンプルは、前記映像ブロックを有する映像ピクチャにおける他のサンプルから予測され、
前記マージモードが前記映像ブロックに適用され、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックのベクトルは、ベクトル予測子に基づいて導出され、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックの前記ベクトルは、前記ベクトル予測子とベクトル差分とに基づいて導出される、
命令を格納する非一時的コンピュータ可読記憶媒体。
【請求項18】
映像処理装置によって実行される方法によって生成される映像のビットストリームを格納する非一時的コンピュータ可読記録媒体であって、
前記方法は、
映像の映像領域と、前記映像のビットストリームとの間の変換のために、マージモードが、前記映像領域の映像ブロックに適用されるか否か、および、IBC(Intra Block Copy)モードが前記映像ブロックに適用されるか否かを判定することと、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像領域の前記変換の間に用いられるIBCマージブロックベクトル予測候補の最大数に基づいて、前記ビットストリームにおける前記映像ブロックに対する少なくとも1つの構文要素を含むか否かを判定することと、
前記映像の前記映像領域に基づいて、前記ビットストリームを生成することと、
を有し、
前記IBCモードが適用される場合、前記映像ブロックのサンプルは、前記映像ブロックを有する映像ピクチャにおける他のサンプルから予測され、
前記マージモードが前記映像ブロックに適用され、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックのベクトルは、ベクトル予測子に基づいて導出され、
前記マージモードが前記映像ブロックに適用されず、かつ、前記IBCモードが前記映像ブロックに適用される場合、前記映像ブロックの前記ベクトルは、前記ベクトル予測子とベクトル差分とに基づいて導出される、非一時的コンピュータ可読記録媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
関連出願の相互参照
願は、2019年5月25日出願の国際特許出願第PCT/CN2019/088454号の優先権および利益を張する、2020年5月25日出願の国際特許出願第PCT/CN2020/092032号に基づく日本国特願2021-568847号の分割出願である。上記出願の開示全体は、照によりここに援用される。
【外国語明細書】