(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-01
(54)【発明の名称】動きベクトルの差に関する制限
(51)【国際特許分類】
H04N 19/52 20140101AFI20220825BHJP
H04N 19/70 20140101ALI20220825BHJP
【FI】
H04N19/52
H04N19/70
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021577192
(86)(22)【出願日】2020-06-28
(85)【翻訳文提出日】2021-12-24
(86)【国際出願番号】 CN2020098514
(87)【国際公開番号】W WO2020259681
(87)【国際公開日】2020-12-30
(31)【優先権主張番号】PCT/CN2019/092851
(32)【優先日】2019-06-25
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(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)【発明者】
【氏名】リウ ホンビン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA05
5C159MA14
5C159NN10
5C159NN11
5C159NN14
5C159NN28
5C159RC16
5C159RC38
5C159UA02
5C159UA05
(57)【要約】
動きベクトルの差に関する制限が開示されている。1つの例示的な映像処理方法において、映像の第1のブロックに関連付けられ、制約されて信号通知されるMVD成分に基づいて、第1のブロックと第1のブロックのビットストリーム表現との変換を行い、信号通知される動きベクトル差(MVD)成分の値が、所定の範囲に制約される。
【選択図】
図7
【特許請求の範囲】
【請求項1】
映像の第1のブロックに関連付けられ、制約されて信号通知されるMVD成分に基づいて、前記第1のブロックと当該第1のブロックのビットストリーム表現との変換を行う映像処理方法であって、
前記信号通知される動きベクトルの差(MVD)成分の値が、所定の範囲に制約される、映像処理方法。
【請求項2】
前記所定の範囲は、前記第1のブロックに関連付けられたMVD成分の精度に関連付けられる、請求項1に記載の方法。
【請求項3】
前記第1のブロックに関連付けられたMVD成分の精度が1/16画素であり、前記所定の範囲が[-2
17,2
17-1]である、請求項1または2に記載の方法。
【請求項4】
MVD成分の前記精度が1/16画素である場合、前記信号通知されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制約され、Kは、前記MVD成分の整数部分を表すために用いられるビット数を示し、Lは、前記MVD成分の端数部分を表すために用いられるビット数を示し、KおよびLは整数である、請求項2に記載の方法。
【請求項5】
K=13、L=4である、請求項4に記載の方法。
【請求項6】
MVD成分の前記精度が1/4画素である場合、前記信号通知されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制約され、Kは、前記MVD成分の整数部分を表すために用いられる前記ビット数を示し、Lは、前記MVD成分の端数部分を表すために用いられる前記ビット数を示し、KおよびLは整数である、請求項2に記載の方法。
【請求項7】
K=13、L=2である、請求項6に記載の方法。
【請求項8】
MVD成分の前記精度が1画素である場合、前記信号通知されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制約され、Kは、前記MVD成分の整数部分を表すために用いられるビット数を示し、Lは、前記MVD成分の端数部分を表すために用いられるビット数を示し、KおよびLは整数である、請求項2に記載の方法。
【請求項9】
K=13、L=0である、請求項8に記載の方法。
【請求項10】
MVD成分の前記精度が4画素である場合、前記信号通知されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制約され、Kは、前記信号通知されるMVD成分の整数部分を表すために用いられるビット数を示し、Lは、前記信号通知されるMVD成分の端数部分を表すために用いられるビット数を示し、KおよびLは整数である、請求項2に記載の方法。
【請求項11】
K=13、L=-2である、請求項10に記載の方法。
【請求項12】
前記信号通知されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制限され、Kは、前記MVD成分の整数部分を表すために用いられるビット数を示し、Lは、前記MVD成分の端数部分を表すために用いられるビット数を示し、K=13,L=4である、請求項1に記載の方法。
【請求項13】
制約されて導出されるMVD成分に基づいて、映像の第1のブロックとこの第1のブロックのビットストリーム表現との変換を行う映像処理方法であって、
前記第1のブロックに関連付けられ、前記導出される動きベクトル差(MVD)成分の値が、所定の範囲に制約される、映像処理方法。
【請求項14】
前記導出されるMVD成分は、対応するリスト-Y MVD成分から導出されるリスト-X MVD成分であって、X=0または1、かつ、Y=1または0である、請求項13に記載の方法。
【請求項15】
前記リスト-X MVD成分は、対称動きベクトル差モードに従って、信号通知された前記リスト-Y MVD成分によって導出される、請求項14に記載の方法。
【請求項16】
前記所定の範囲は、前記第1のブロックに関連付けられたMVD成分の精度に関連付けられる、請求項13に記載の方法。
【請求項17】
前記第1のブロックに関連付けられたMVD成分の精度が1/16画素であり、前記所定の範囲は[-2
17,2
17-1]である、請求項13または16に記載の方法。
【請求項18】
前記導出されるMVD成分の前記数値は、[-2
K+L,2
K+L-1]の前記所定の範囲に制限され、Kは、前記MVD成分の整数部分を表すために用いられるビット数を示し、Lは、前記導出されるMVD成分の端数部分を表すために用いられるビット数を示し、KおよびLは整数である、請求項13~17のいずれか1項に記載の方法。
【請求項19】
K=13、L=4である、請求項18に記載の方法。
【請求項20】
前記導出されるMVD成分は、コーデックにおけるすべてのMVD成分が同じ精度に変換される内部のMVD値である、請求項13に記載の方法。
【請求項21】
前記信号通知されるMVD値は、適応型動きベクトル解像度(AMVR)フラグに従って内部の18ビットMVD値にシフトされ、前記導出されるMVD成分を得る、請求項20に記載の方法。
【請求項22】
前記変換は、前記ビットストリーム表現から映像の前記第1のブロックを生成する、請求項1~21のいずれかに記載の方法。
【請求項23】
前記変換は、映像の前記第1のブロックから前記ビットストリーム表現を生成する、請求項1~21のいずれかに記載の方法。
【請求項24】
処理装置と、命令を含む非一時的メモリとを備えた映像システムの装置であって、前記処理装置による実行時の前記命令は、前記処理装置に請求項1~23のいずれか1項に記載の方法を実装させる装置。
【請求項25】
非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラム製品であって、請求項1~23のいずれか1項に記載の方法を実行するためのプログラムコードを含む、コンピュータプログラム製品。
【請求項26】
記憶された命令を含む非一時的なコンピュータ可読媒体であって、処理装置による実行時に、前記命令は前記処理装置に、請求項1~23のいずれか1項に記載の方法を実装させる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
パリ条約に基づく適用可能な特許法および/または規則に基づいて、本願は、2019年6月25日出願の国際特許出願第PCT/CN2019/092851号の優先権および利益を適時に主張することを目的とする。国際特許出願第PCT/CN2019/092851号の全開示は、本出願の開示の一部として参照により援用される。
【0002】
この特許文献は、映像符号化技術、デバイスおよびシステムに関する。
【背景技術】
【0003】
映像圧縮の進歩にもかかわらず、デジタル映像は、依然として、インターネット及び他のデジタル通信ネットワークにおいて最大の帯域幅の使用量を占めている。映像を受信及び表示することが可能である接続されたユーザ機器の数が増加するにつれ、デジタル映像の使用に対する帯域幅需要は増大し続けることが予測される。
【発明の概要】
【0004】
本明細書では、指定されたビット数を使用して表現される動きベクトルを用いて映像符号化または映像復号化を行う様々な実施形態および技術を説明する。
【0005】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、最大許容動きベクトル解像度、最大許容動きベクトル精度または映像領域の特性に基づいて、前記映像領域と前記映像領域のビットストリーム表現との間での変換中、映像の映像領域に対して使用される動きベクトル差(MVD)値の範囲を判定することと、このMVD値がこの範囲内になるように制限することでこの変換を行うことと、を含む。
【0006】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、第1の映像ブロックと第1のブロックのビットストリーム表現との間での変換のために、前記第1のブロックに関連付けられた動きベクトル差(MVD)成分の範囲を判定することであって、MVD成分の範囲は、[-2M,2M-1]であり、M=17である、判定することと、MVD成分の値は、MVD成分の範囲内にあるように制約することと、前記制約されたMVD成分に基づいて該変換を行うことと、を含む。
【0007】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、第1の映像ブロックと前記第1のブロックのビットストリーム表現との間での変換のために、前記第1のブロックに関連付けられた動きベクトル差(MVD)成分の範囲を判定することであって、前記MVD成分の範囲は、コーデックの許容MVD精度および/または許容動きベクトル(MV)精度に適応される、判定することと、前記MVD成分の値を前記MVD成分の範囲内に制約することと、前記制約されたMVD成分に基づいてこの変換を行うことを含む。
【0008】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、第1の映像ブロックと第1のブロックのビットストリーム表現との間での変換のために、前記第1のブロックに関連付けられた動きベクトル差(MVD)成分の範囲を、前記第1のブロックの符号化された情報に基づいて判定することと、MVD成分の値は、MVD成分の範囲内にあるように制約することと、制約されたMVD成分の範囲に基づいて該変換を行うことと、を含む。
【0009】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、映像の第1のブロックに関連付けられ、制約されて信号通知されるMVD成分に基づいて、第1のブロックと第1のブロックのビットストリーム表現との変換を行うことを含み、信号通知される動きベクトル差(MVD)成分の値が、所定の範囲に制約される。
【0010】
1つの例示的な態様において、映像復号化方法が開示される。この方法は、制約されて導出されるMVD成分に基づいて、映像の第1のブロックと第1のブロックのビットストリーム表現との変換を行うことを含み、第1のブロックに関連付けられ、導出される動きベクトル差(MVD)成分の値が、所定の範囲に制約される。
【0011】
さらに別の例示的な態様において、映像処理装置が開示される。この装置は、上述した方法を行うように構成された処理装置を含む。
【0012】
さらに別の例示的な態様において、コンピュータ可読媒体が開示される。この媒体には、上述した方法を処理装置で実装するためのコードが記憶されている。
【0013】
これらの、および他の態様は、本明細書で説明される。
【図面の簡単な説明】
【0014】
【
図2】本明細書に記載される1つ以上の方法を実装するためのハードウェアプラットフォームの一例を示すブロック図である。
【
図3】映像処理方法の一例を示すフローチャートである。
【
図4】映像処理方法の一例を示すフローチャートである。
【
図5】映像処理方法の一例を示すフローチャートである。
【
図6】映像処理方法の一例を示すフローチャートである。
【
図7】映像処理方法の一例を示すフローチャートである。
【
図8】映像処理方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0015】
本明細書では、理解を容易にするために章の見出しを使用しており、1つの章に開示された実施形態をその章にのみ限定するものではない。さらに、特定の実施形態は、VVC(Versatile Video Coding)または他の特定の映像コーデックを参照して説明されたが、開示された技術は、他の映像符号化技術にも適用可能である。さらに、いくつかの実施形態は映像符号化ステップを詳細に説明しているが、符号化を復号化する、対応するステップはデコーダによって実行されることが理解されよう。さらに、映像処理という用語は、映像符号化または圧縮、映像の復号化または展開、および映像の画素がある圧縮形式から別の圧縮形式へ、または別の圧縮ビットレートで表現される映像のコード変換を含む。
【0016】
1.発明の概要
本明細書は、映像符号化技術に関する。具体的には、映像符号化におけるインター符号化処理に関する。HEVCのような既存の映像符号化規格に適用してもよいし、規格(Versatile Video Coding)を確定させるために適用してもよい。本発明は、将来の映像符号化規格または映像コーデックにも適用可能である。
【0017】
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)と呼ばれる参照ソフトウェアに組み込まれてきた。JVETは四半期に1回開催され、新しい符号化規格はHEVCに比べて50%のビットレート低減を目指している。2018年4月のJVET会議において、新しい映像符号化規格を「汎用映像符号化(Versatile Video Coding:VVC)」と正式に命名し、その時、第1版のVVCテストモデル(VTM)をリリースした。VVCの標準化に寄与する努力が続けられているので、すべてのJVET会議において、VVC標準に新しい符号化技術が採用されている。毎回の会議の後、VVC作業草案およびテストモデルVTMを更新する。VVCプロジェクトは、現在、2020年7月の会合における技術完成(FDIS)を目指している。
【0018】
2.1 典型的な映像コーデックの符号化フロー
図1は、3つのインループフィルタリングブロック、すなわち非ブロック化フィルタ(DF)、サンプル適応オフセット(SAO)およびALFを含むVVCのエンコーダブロック図の例を示す。DF(予め定義されたフィルタを使用する)とは異なり、SAOおよびALFは、現在のピクチャのオリジナルサンプルを利用し、それぞれ、オフセットを追加することにより、および、有限インパルス応答(FIR)フィルタを適用することにより、オフセットおよびフィルタ係数を信号通知する符号化側情報を用いて、元のサンプルと再構成サンプルとの間の平均二乗誤差を低減する。ALFは、各ピクチャの最後の処理ステージに位置し、前のステージで生成されたアーチファクトを捕捉し、修正しようとするツールと見なすことができる。
【0019】
【0020】
2.2 適応型動きベクトル解像度(AMVR)
HEVCにおいて、use_integer_mv_flagがスライスヘッダにおいて0であるとき、1/4輝度サンプルの単位で動きベクトル差分(MVD:Motion Vector Difference)(動きベクトルとCUの予測動きベクトルとの差)が信号通知される。JEMにおいて、LAMVR(Locally Adaptive Motion Vector Resolution)が導入される。VVCにおいて、CUレベルの適応型動きベクトル解像度(AMVR)スキームが導入される。AMVRは、CUのMVDを異なる精度で符号化することを可能にする。現在のCUのモード(通常のAMVPモードまたはアフィンAVMPモード)に基づいて、現在のCUのMVDは、以下のように適応的に選択できる。
- 通常AMVPモード:1/4輝度サンプル、整数輝度サンプルまたは4輝度サンプル。
- アフィンAMVPモード: 1/4輝度サンプル、整数輝度サンプルまたは1/16輝度サンプル。
【0021】
現在のCUが少なくとも1つの非ゼロMVD成分を有する場合、CUレベルMVD解像度指示が条件付きで信号通知される。すべてのMVD成分(すなわち、参照リストL0及び参照リストL1の水平及び垂直MVDの両方)がゼロである場合、1/4輝度サンプルMVD解像度が推測される。
【0022】
少なくとも1つの非ゼロMVD成分の構成要素を有するCUの場合、1/4輝度サンプルMVD精度がCUにおいて使用されるかどうかを示すために、第1のフラグが信号通知される。第1のフラグが0である場合、さらなる信号伝達は必要とされず、現在のCUのために1/4輝度サンプルMVD精度が使用される。そうでない場合、通常のAMVP CUのために整数輝度サンプルまたは4輝度サンプルのMVD精度が使用されるかどうかを示すために、第2のフラグが信号通知される。同じ第2のフラグは、整数輝度サンプルまたは1/16輝度サンプルのMVD精度がアフィンAMVP CUに使用されるかどうかを示すために使用される。再構成されたMVが意図された精度(1/4輝度サンプル、整数輝度サンプル、または4輝度サンプル)を有することを保証するために、CUの動きベクトル予測子は、MVDと加算される前に、MVDと同じ精度に丸められる。動きベクトル予測子をゼロに向かって丸める(すなわち、負の動きベクトル予測子を正の無限大に向かって丸め、正の動きベクトル予測モジュールを負の無限大に向かって丸める)。
【0023】
エンコーダは、RDチェックを使用して、現在のCUの動きベクトルの解像度を決定する。各MVD解像度に対してCUレベルのRDチェックを常に3回行うことを回避するために、VTM4では、1/4輝度サンプル以外のMVD精度のRDチェックは、条件付きでのみ呼び出される。通常のAVMPモードの場合、まず、1/4輝度サンプルMVD精度及び整数輝度サンプルMV精度のRDコストを算出する。次に、整数輝度サンプルMVD精度のRDコストと1/4輝度サンプルMVD精度のRDコストを比較し、4輝度サンプルMVD精度のRDコストをさらにチェックする必要があるかどうかを決定する。1/4輝度サンプルMVD精度のRDコストが整数輝度サンプルMVD精度のRDコストよりもずっと小さい場合、4輝度サンプルMVD精度のRDチェックは省略される。アフィンAMVPモードにおいて、アフィンマージ/スキップモード、マージ/スキップモード、1/4輝度サンプリングMVD精度通常AMVPモード、1/4輝度サンプリングMVD精度アフィンAMVPモードのレート-ひずみ率をチェックした後、アフィンインターモードを選択しなかった場合、1/16輝度サンプルMV精度、1画素MV精度アフィンインターモードはチェックされない。さらに、1/16輝度サンプル及び1/4輝度サンプルMV精度アフィンインターモードにおける検索開始点として、1/4輝度サンプルMV精度アフィンインターモードで得られたアフィンパラメータを使用する。
【0024】
2.3 VVCにおけるアフィンAMVP予測
アフィンAMVPモードを、幅および高さの両方が16以上のCUに適用することができる。アフィンAMVPモードが使用されるかどうかを示すために、CUレベルのアフィンフラグがビットストリームにおいて信号通知され、次いで、4パラメータアフィンであるか6パラメータアフィンであるかどうかを示すために、別のフラグが信号通知される。このモードにおいて、現在のCUのCPMVとその予測子CPMVPとの差がビットストリームにおいて信号通知される。アフィンAVMP候補リストサイズは2であり、以下の4つのタイプのCPVM候補を順に使用して生成される。
1)近傍のCUのCPUMVから外挿した継承アフィンAMVP候補
2)近傍のCUの並進MVを使用して導出された構築アフィンAMVP候補CPMVP
3)近傍のCUからの並進MV
4)ゼロMV
【0025】
継承アフィンAMVP候補のチェック順は、継承アフィンマージ候補のチェック順と同じである。唯一の違いは、AVMP候補の場合、現在のブロックと同じ参照ピクチャを有するアフィンCUのみを考慮することである。継承されたアフィン動き予測子を候補リストに挿入する場合、プルーニング処理は適用されない。
【0026】
構築されたAMVP候補は、指定された空間的近傍から導出される。また、近傍のブロックの参照ピクチャインデックスもチェックする。現在のCUと同じ参照ピクチャを有する、インター符号化されたチェック順の第1のブロックを使用する。4パラメータアフィンモードで符号化された現在のCUが1つのみであり、mv0およびmv1が両方とも利用可能である場合、それらをアフィンAMVP一覧に1つの候補として追加する。現在のCUが6パラメータアフィンモードで符号化され、3つのCPMVすべてが利用可能である場合、それらをアフィンAMVPリストにおける1つの候補として追加する。そうでない場合、構築されたAMVP候補を利用不可能に設定する。
【0027】
継承されたアフィンAMVP候補および構築されたAMVP候補をチェックした後、アフィンAMVP一覧候補が依然として2未満である場合、利用可能であれば、mv0、mv1、およびmv2の順に、現在のCUのすべての制御点MVを予測する並進MVとして追加される。最後に、まだアフィンAMVPリストがすべて満たされていない場合は、満たすためにゼロMVを使用する。
【0028】
2.4 VVCにおけるMVD(MMVD)とのマージモード
マージモードに加え、暗黙的に導出された動き情報を現在のCUの予測サンプル生成に直接使用する場合、VVCに動きベクトル差を有するマージモード(MMVD)を導入する。スキップフラグおよびマージフラグを送信した直後に、MMVDフラグを信号通知して、MMVDモードをCUに使用するかどうかを指定する。
【0029】
MMVDにおいて、マージ候補が選択された後、信号通知されたMVD情報によってさらに微調整される。このさらなる情報は、マージ候補フラグと、動きの大きさを指定するためのインデックスと、動き方向の指示のためのインデックスとを含む。MMVDモードにおいて、マージリストにおける最初の2つの候補のうちの1つを選択し、MVベースとして使用する。マージ候補フラグは、どちらを使用するかを指定するように信号通知される。
【0030】
距離インデックスは、動きの大きさの情報を指定して、予め定義された開始点からのオフセットを示す。開始MVの水平成分または垂直成分のいずれかにオフセットを加える。距離インデックスと予め定義されたオフセットとの関係を、表1に示す。
【0031】
VVCには、spssレベルでの端数MMVDオフセットのオン/オフのためのSPSフラグsp_fpel_mmvd_enabled_flagが存在する。そして、タイルグループフラグtile_group_fpel_mmvd_enabled_flagにより、タイトルグループのヘッダレベルにおける“SCC/UHDフレーム”のための端数MMVDオフセットのオン/オフを制御する。端数MVDが有効化されている場合、表1のデフォルト距離テーブルが使用され、そうでない場合、表1のデフォルト距離におけるすべてのオフセット要素は、2だけ左シフトされる。
距離指数と予め定義されたオフセットとの関係
【0032】
【0033】
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、表2に示すように、4つの方向を表すことができる。なお、MVD符号の意味は、開始MVの情報に従って異なってもよい。開始MVが未予測MVまたは双予測MVであり、両方のリストが現在のピクチャの同じ側を指している(即ち、2つの参照符号のPOCが両方とも現在のピクチャのPOCよりも大きい、または両方とも現在のピクチャのPOCより小さい)場合、表2における符号は、開始MVに加えられるMVオフセットの符号を指定する。開始MVが双予測MVであり、2つのMVが現在のピクチャの異なる側を指している(即ち、1つの参照のPOCが現在のピクチャのPOCよりも大きく、他の参照のPOCが現在のピクチャのPOCより小さい)場合、表2における符号は、開始MVのlist0 MV成分に加えられるMVオフセットの符号を規定し、list1 MVの符号は逆の値を有する。
方向索引で指定したMVオフセットの符号
【0034】
【0035】
2.5 VVCにおけるイントラブロックコピー(IBC)
イントラブロックコピー(IBC)は、SCCのHEVC拡張に採用されているツールである。これにより、スクリーンコンテンツ素材の符号化効率が有意に向上することが知られている。IBCモードはブロックレベル符号化モードとして実装されるので、エンコーダにおいてブロックマッチング(BM)を行い、各CUごとに最適なブロックベクトル(または動きベクトル)を見出す。ここで、ブロックベクトルは、現在のブロックから、現在のピクチャの内部で既に再構成された参照ブロックへの変位を示すために使用される。
【0036】
VVCにおいて、IBC符号化CUの輝度ブロックベクトルは、整数精度である。クロマブロックベクトルは、整数精度にも丸められる。AMVRと組み合わせた場合、IBCモードは、1画素と4画素の動きベクトル精度を切り替えることができる。IBC符号化されたCUは、イントラ予測モードまたはインター予測モード以外の第3の予測モードとして扱われる。IBCモードは、幅および高さの両方が64輝度サンプル以下のCUに適用可能である。
【0037】
IBCモードは、現在のピクチャ参照(CPR)モードとしても知られている。
【0038】
2.6 VVC仕様/作業草案における動きベクトルの差
VVC作業草案から以下のテキストを抽出する。
7.3.6.8 動きベクトル差構文
【0039】
【0040】
7.3.6.7 マージデータ構文
【0041】
【0042】
7.4.3.1 シーケンスパラメータセットRBSP意味論
sps_amvr_enabled_flagが1に等しい場合は、動きベクトル符号化に適応型動きベクトル差解像度を使用することを指定する。amvr_affine_amvr_enabled_flagが0に等しい場合は、動きベクトル符号化に適応動きベクトル差分解像度を用いないことを指定する。
sps_amvr_affine_amvr_enabled_flagが1に等しい場合は、アフィンインターモードの動きベクトル符号化に適応動きベクトル差解像度を使用することを指定する。sps_amvr_affine_amvr_enabled_flaggが0に等しい場合は、アフィンインターモードの動きベクトル符号化に適応型動きベクトル差解像度を用いないことを指定する。
sps_fpel_mmvd_enabled_flagが1に等しい場合は、動きベクトル差を有するマージモードが整数サンプル精度を使用することを指定する。sps_fpel_mmvd_enabled_flagが0に等しい場合は、動きベクトル差を有するマージモードが端数サンプル精度を使用できることを指定する。
7.4.5.1 一般タイルグループヘッダ意味論
tile_group_fpel_mmvd_enabled_flagが1に等しい場合は、動きベクトル差を有するマージモードが現在のタイルグループにおける整数サンプル精度を使用することを指定する。
tile_group_fpel_mmvd_enabled_flagが0に等しい場合は、動きベクトル差を有するマージモードが現在のタイルグループにおける端数サンプル精度を使用できることを指定する。存在しない場合、tile_group_fpel_mmvd_enabled_flagの値は0であると推測される。
7.4.7.5 符号化ユニット構文
amvr_flag[x0][y0]は、動きベクトルの差の解像度を指定する。配列インデックスx0,y0は、考慮された符号化ブロックの左上の輝度サンプルの、ピクチャの左上の輝度サンプルに対する位置(x0,y0)を指定する。amvr_flag[x0][y0]=0は、動きベクトル差の解像度が輝度サンプルの1/4であることを指定する。amvr_flag[x0][y0]が1に等しい場合は、動きベクトル差の解像度がさらにamvr_precision_flag[x0][y0]で指定されることを指定する。
amvr_flag[x0][y0]が存在しない場合、次のように推論推測される。
- CuPredMode[x0][y0]がMODE_IBCに等しい場合、amvr_flag[x0][y0]は1に等しいと推測される。
- そうでない場合(CuPredMode[x0][y0]がMODE_IBCである場合)、amvr_flag[x0][y0]は0であると推測される。
amvr_precision_flag[x0][y0]が0である場合、inter_affine_flag[x0][y0]が0の場合は、動きベクトル差の解像度が1つの整数輝度サンプルとなり、そうでない場合は、1/16の輝度サンプルとなることを指定する。amvr_precision_flag[x0][y0]が1である場合、inter_affine_flag[x0][y0]が0の場合は、動きベクトル差の解像度が4つの輝度サンプルとなり、そうでない場合は、1つの整数輝度サンプルとなることを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
【0043】
amvr_precision_flag[x0][y0]が存在しない場合、0に等しいと推測される。
動きベクトルの差は、以下のように修正される。
- inter_affine_flag[x0][y0]が0である場合、変数MvShiftが導出され、変数MvdL0[x0][y0][0]、MvdL0[x0][y0][1]、MvdL1[x0][y0][0]、MvdL1[x0][y0][1]が次ように修正される。
MvShift=(amvr_flag[x0][y0]+amvr_precision_flag[x0][y0])<<1 (7-98)
MvdL0[x0][y0][0]=MvdL0[x0][y0][0]<<(MvShift+2) (7-99)
MvdL0[x0][y0][1]=MvdL0[x0][y0][1]<<(MvShift+2) (7-100)
MvdL1[x0][y0][0]=MvdL1[x0][y0][0]<<(MvShift+2) (7-101)
MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<(MvShift+2) (7-102)
- そうでない場合(inter_afine_flag[x0][y0]が1である)、変数MvShiftが導出され、変数MvdCpL0[x0][y0][0][0]、MvdCpL0[x0][y0][0][1],、MvdCpL0[x0][y0][1][0]、MvdCpL0[x0][y0][1][1]、MvdCpL0[x0][y0][2][0]およびMvdCpL0[x0][y0][2][1]が次のように修正される。
MvShift=amvr_precision_flag[x0][y0]?
(amvr_precision_flag[x0][y0]<<1):(-(amvr_flag[x0][y0]<<1))) (7-103)
MvdCpL0[x0][y0][0][0]=MvdCpL0[x0][y0][0][0]<<(MvShift+2) (7-104)
MvdCpL1[x0][y0][0][1]=MvdCpL1[x0][y0][0][1]<<(MvShift+2) (7-105)
MvdCpL0[x0][y0][1][0]=MvdCpL0[x0][y0][1][0]<<(MvShift+2) (7-106)
MvdCpL1[x0][y0][1][1]=MvdCpL1[x0][y0][1][1]<<(MvShift+2) (7-107)
MvdCpL0[x0][y0][2][0]=MvdCpL0[x0][y0][2][0]<<(MvShift+2) (7-108)
MvdCpL1[x0][y0][2][1]=MvdCpL1[x0][y0][2][1]<<(MvShift+2) (7-109)
7.4.7.7 マージデータ意味論
merge_flag[x0][y0]は、現在の符号化ユニットにおけるインター予測パラメータを隣接するインター予測区間から推測するかどうかを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
merge_flag[x0][y0]が存在しない場合、次のように推測される。
- cu_skip_flag[x0][y0]が1に等しい場合、merge_flag[x0][y0]は1に等しいと推測される。
- そうでない場合、merge_flag[x0][y0]は0に等しいと推測される。
mmvd_flag[x0][y0]が1に等しい場合、現在の符号化ユニットのインター予測パラメータを生成するために、動きベクトル差を有するマージモードを使用することを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
mmvd_flag[x0][y0]が存在しない場合、0に等しいと推測される。
mmvd_merge_flag[x0][y0]は、mmvd_distance_idx[x0][y0]とmmvd_direction_idx[x0][y0]から導出される動きベクトルの差で、マージ候補リストの第1(0)の候補を使うか、第2(1)の候補を使うかを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
mmvd_distance_idx[x0][y0]は、表7-11で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
表7-11 mmvd_distance_idx[x0][y0]に基づくMmvdDistance[x0][y0]の仕様
【0044】
【0045】
mmvd_distance_idx[x0][y0]は、表7-12で規定されているように、MmvdDistance[x0][y0]を導出するために使用するインデックスを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。
表7-12 mmvd_direction_idx[x0][y0]に基づくMmvdSign[x0][y0]の仕様
【0046】
【0047】
マージ+MVDオフセットMmvdOffset[x0][y0]の両成分は、以下のように導出される。
MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0] (7-112)
MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1] (7-113)
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_luma_mpm_flag[x0][y0]、およびciip_luma_mpm_idx[x0][y0]は、インターピクチャマージおよびピクチャ内予測の組み合わせに使用される輝度サンプルのイントラ予測モードを指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。8.5.6項に従ってイントラ予測モードを導出する。
ciip_luma_mpm_flag[x0][y0]が存在しない場合、次のように推測される。
- cbWidthが2*cbHeightよりも大きい、またはcbHeightが2*cbWidthよりも大きい場合、ciip_luma_mpm_flag[x0][y0]は1であると推測される。
- そうでない場合、ciip_luma_mpm_flag[x0][y0]は0に等しいと推測される。
merge_triangle_flag[x0][y0]が1に等しい場合は、現在の符号化ユニットに対して、Bタイルグループを復号化する時、三角形の形状に基づく動き補償を使用して現在の符号化ユニットの予測サンプルを生成することを指定する。merge_triangle_flag[x0][y0]が0に等しい場合は、符号化ユニットが、三角形状に基づく動き補償によって予測されないことを指定する。merge_triangle_flag[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_flag[x0][y0]が1に等しい場合、merge_idx[x0][y0]はmmvd_merge_flag[x0][y0]に等しいと推測される。
そうでない場合(mmvd_flag[x0][y0]=0)、merge_idx[x0][y0]は0に等しい0と推測される。
7.4.7.8 動きベクトル差意味論
abs_mvd_greater0_flag[compIdx]は、動きベクトル成分の差の絶対値が0より大きいかどうかを指定する。
abs_mvd_greater1_flag[compIdx]は、動きベクトル成分の差の絶対値が1より大きいかどうかを指定する。
abs_mvd_greater1_flag[compIdx]が存在しない場合、0に等しいと推測される。
abs_mvd_minus2[compIdx]+2は、動きベクトル成分の差の絶対値を指定する。
abs_mvd_minus2[compIdx]が存在しない場合、-1に等しいと推測される。
mvd_sign_flag[compIdx]は動きベクトル成分の差の符号を以下のように指定する。
- mvd_sign_flag[compIdx]が0に等しい場合、対応する動きベクトル成分の差は正の値を有する。
- そうでない場合(mvd_sign_flag[compIdx]が1に等しい)、対応する動きベクトル成分の差は負の値を有する。
mvd_sign_flag[compIdx]が存在しない場合、0に等しいと推測される。
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*
(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx]) (7-114)
lMvd[compIdx]の値は、-215から215-1の範囲内にあるとする。
MotionModelIdc[x][y]の値に基づいて、動きベクトルの差は、以下のように導出される。
- MotionModelIdc[x][y]が0である場合、変数MvdLX[x0][y0][compIdx])(Xが0または1)は、使用されるべきリストXベクトル成分とその予測との間の差を指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
- refListが0である場合、mvdL0[x0][y0][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(refListが1である)、MvdL1[x0][y0][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(MotionModelIdc[x][y]が0に等しくない)、変数MvdCpLX[x0][y0][cpIdx][compIdx](Xが0または1)、使用されるべきリストXベクトル成分とその予測との間の差を指定する。配列インデックスx0,y0は、考慮される符号化ブロックの左上の輝度サンプルの、ピクチャの左上の輝度サンプルに対する位置(x0,y0)を指定し、配列インデックスcpIdxは、制御点インデックスを指定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
- refListが0である場合、MvdCpL0[x0][y0][cpIdx][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(refListが1である)、MvdCpL1[x0][y0][cpIdx][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
3.本明細書に記載の実施形態が解決しようとする課題の例
VVCのようなある符号化標準において、動きベクトル差(MVD)は、必ずしも1/4画素(例えば、1/4輝度サンプル)の解像度であるとは限らない。しかしながら、既存のVVC作業草案において、MVD成分を-215~215-1の範囲に常時クリッピングするビットストリーム制約が存在する。この結果、特に、1/4画素でないMVD解像度が使用される場合、MVD値が不正確になる可能性がある(例えば、アフィンAMVPが使用される場合、1/16輝度サンプルのMVD解像度)。
4.例示的な実施形態および技術
以下に列記される実施形態は、一般的な概念を説明するための例であると考えられるべきである。これらの発明は狭い意味で解釈されるべきではない。さらに、これらの発明は、任意の方法で組み合わせることができる。
以下の説明において、「動きベクトル差(MVD)成分」は、水平方向(例えば、x軸に沿って)の動きベクトル差または垂直方向(例えば、y軸に沿って)の動きベクトル差のいずれかを示す。
サブピクセル動きベクトル(MV)表現の場合、動きベクトルは、通常、端数部分および整数部分からなる。MVの範囲を[-2M,2M-1]とし、(Mが正の整数値)、M=K+Lであり、(Kは、MVの整数部分の範囲を表し、Lは、MVの端数部分の範囲を表す)、MVは、(1/2L)輝度サンプル精度で表現されるとする。例えば、HEVCにおいて、K=13、L=2であり、従って、M=K+L=15である。一方、VVCにおいて、K=13,L=4であり、M=K+L=17である。
1.MVD成分の範囲は、コーデックの許容可能なMVD解像度/精度に依存してもよいことが提案される。
a) 一例において、すべてのMVD成分に同じ範囲を適用することができる。
i.一例において、MVD成分の範囲は、[-2M、2M-1]などのMV範囲の範囲、例えば、M=17と同じである。
b) 一例において、復号化されたすべてのMVD成分は、最初に予め指定された精度(1/2L)輝度サンプル(たとえば、L=4)にスケーリングされ、次に予め定義された範囲[-2M,2M-1](例えば、M=17)にクリッピングしてもよい。
c) 一例において、MVD成分の範囲は、コーデックで許容されるMVD/MV解像度に依存してもよい。
i.一例において、MVDの許容解像度が1/16輝度サンプル、1/4輝度サンプル、1輝度サンプル、または4輝度サンプルであるとすると、MVD成分の値は、最も細かい解像度(例えば、これらの可能な解像度のうち1/16輝度サンプル)に従ってクリッピング/制約してもよい。すなわち、MVDの値は、[-2K+L,2K+L-1]の範囲、例えば、K=13,L=4となる。
2.MVD成分の範囲は、ブロックの符号化された情報に依存してもよいことが提案される。
a) 一例において、MVD成分の範囲の複数のセットを定義してもよい。
b) 一例において、範囲は、MV予測子/MVD/MV精度に依存してもよい。
i.一例において、MVD成分のMVD精度が(1/2L)輝度サンプルであるとする(例えば、L=4,3,2,1,0,-1,2,3,4など)と、MVDの値は、[-2K+L,2K+L-1]の範囲、例えば、K=13,L=4,3,2,1,0,-1,2,3,4などに制約されるか、または/およびクリッピングされてもよい。
ii.一例において、MVD成分の範囲は、変数MvShiftに依存してもよく、ここで、MvShiftは、VVCのaffine_inter_flag,amvr_flag、およびamvr_precision_flagから導出されてもよい。
1.一例において、MvShiftは、affine_inter_flag、amvr_flag、および/またはamvr_precision_flag、および/またはsps_fpel_mmvd_enabled_flag、および/またはtile_group_fpel_mmvd_enabled_flag、および/またはmmvd_distance_idx、および/またはCuPredModeなどの符号化された情報によって導出されてもよい。
c) 一例において、MVD範囲は、ブロックの符号化モード、動きモデルなどに依存してもよい。
i.一例において、MVD成分の範囲は、現在のブロックの動きモデル(例えば、仕様のMotionModelIdc)、および/または予測モード、および/またはaffine_inter_flagに依存してもよい。
ii.一例において、現在のブロックの予測モードがMODE_IBC(例えば、現在のブロックがIBCモードで符号化されている)である場合、MVDの値は、[-2K+L,2K+L-1]の範囲(例えばK=13,L=0)であってもよい。
iii.一例において、現在のブロックの動きモデルインデックス(例えば、仕様のMotionModelIdc)が0に等しい(例えば、現在のブロックが並進動きモデルを使用して予測される)場合、MVDの値は、[-2K+L,2K+L-1]の範囲(例えばK=13,L=2)であってもよい。
1.代替的に、現在のブロックの予測モードがMODE_INTERで、affine_inter_flagが偽の場合(例えば、現在のブロックが並進動きモデルを使用して予測されている場合)、MVDの値は、[-2K+L,2K+L-1]の範囲(例えばK=13,L=2)であってもよい。
iv.一例において、現在のブロックの動きモデルインデックス(例えば、仕様のMotionModelIdc)が0に等しくない場合(例えば、現在のブロックがアフィン動きモデルを使用して予測されている場合)、MVDの値は、[-2K+L,2K+L-1]の範囲(例えばK=13,L=4)であってもよい。
1.代替的に、現在のブロックの予測モードがMODE_INTERで、affine_inter_flagが真の場合(例えば、現在のブロックがアフィン動きモデルを使用して予測される場合)、MVDの値は、[-2K+L,2K+L-1]の範囲(例えばK=13,L=4)であってもよい。
d) 復号化されたMVD成分に制約を加える代わりに,丸められたMVD値に制約を加えることが提案される。
i.一例において、適合ビットストリームは、丸められた整数のMVD値が所与の範囲内にあることを満足するものとする。
1.一例において、整数のMVD(復号化されたMVDが端数精度の場合、丸めが必要)は、[-2K,2K-1]の範囲とし、例えば、K=13とする。
3.なお、復号化されたMVD成分の値は、ビットストリーム制約を使用する以外に、意味解釈の際に明示的にある範囲(例えば、上述のMVD範囲)にクリッピングされてもよいことが提案される。
5. 実施形態
5.1 実施形態#1
以下の実施形態は、章4の項目1の方法に関するものである。
【0048】
【0049】
7.4.7.8 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0050】
【0051】
5.2 実施形態#2
以下の実施形態は、章4の項目2の方法に関するものである。
【0052】
【0053】
7.4.7.9 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0054】
【0055】
5.3 実施形態#3
以下の実施形態は、章4の項目2の方法に関するものである。
【0056】
【0057】
7.4.7.10 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0058】
【0059】
5.4 実施形態#4
以下の実施形態は、章4の項目2の方法にも当てはまる。
【0060】
【0061】
7.4.7.11 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0062】
【0063】
5.5 実施形態#5
以下の実施形態は、章4の項目3および項目1の方法に関するものである。
【0064】
【0065】
7.4.7.12 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0066】
【0067】
5.6 実施形態#6
以下の実施形態は、章4の項目3および項目2の方法に関するものである。
【0068】
【0069】
7.4.7.13 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0070】
【0071】
MotionModelIdc[x][y]の値に基づいて、動きベクトルの差は、以下のように導出される。
- MotionModelIdc[x][y]が0である場合、変数MvdLX[x0][y0][compIdx])(Xが0または1)は、使用されるべきリストXベクトル成分とその予測との間の差を指定する。配列インデックスx0,y0は、ピクチャの左上輝度サンプルに対する、考慮される符号化ブロックの左上輝度サンプルの位置(x0,y0)を指定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
【0072】
【0073】
- refListが0である場合、mvdL0[x0][y0][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(refListが1である)、MvdL1[x0][y0][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(MotionModelIdc[x][y]が0に等しくない)、変数MvdCpLX[x0][y0][cpIdx][compIdx](Xが0または1)、使用されるべきリストXベクトル成分とその予測との間の差を指定する。配列インデックスx0,y0は、考慮される符号化ブロックの左上の輝度サンプルの、ピクチャの左上の輝度サンプルに対する位置(x0,y0)を指定し、配列インデックスcpIdxは、制御点インデックスを指定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
【0074】
【0075】
- refListが0である場合、MvdCpL0[x0][y0][cpIdx][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
- そうでない場合(refListが1のとき)、MvdCpL1[x0][y0][cpIdx][compIdx]は、compIdx=0..1で、lMvd[compIdx]に設定される。
【0076】
図2は、映像処理装置1000のブロック図である。装置1000は、本明細書に記載の方法の1つ以上を実装するために使用してもよい。装置1000は、スマートフォン、タブレット、コンピュータ、IoT(モノのインターネット)受信機等により実施されてもよい。装置1000は、1つ以上の処理装置1002と、1つ以上のメモリ1004と、映像処理ハードウェア1006と、を含んでもよい。1つまたは複数のプロセッサ1002は、本明細書に記載される1つ以上の方法を実装するように構成されてもよい。メモリ(複数可)1004は、本明細書で説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用してもよい。映像処理ハードウェア1006は、本明細書に記載される技術をハードウェア回路にて実装するために使用してもよい。
【0077】
図3は、映像処理方法の一例を示すフローチャートである。この方法300は、最大許容動きベクトル解像度、最大許容動きベクトル精度または映像領域の特性に基づいて、前記映像領域と前記映像領域のビットストリーム表現との間での変換中、映像の映像領域に対して使用される動きベクトル差(MVD)値の範囲を判定すること(302)を含む。方法300は、MVD値を範囲内に収まるように制限することによって変換を行う(304)ことを含む。
【0078】
以下の解決策のリストは、他の問題の中でもとりわけ、本明細書に記載されている技術的問題に対処できる実施形態を提供する。
【0079】
1. 最大許容動きベクトル解像度、最大許容動きベクトル精度または映像領域の特性に基づいて、前記映像領域と前記映像領域のビットストリーム表現との間での変換中、映像の映像領域に対して使用される動きベクトル差(MVD)値の範囲を判定することと、このMVD値がこの範囲内になるように制限することでこの変換を行うことと、を含む、映像処理方法。
【0080】
2. 前記映像のすべての映像領域の前記変換中に前記範囲が適用される、解決策1に記載の方法。
【0081】
3. 範囲が映像領域の動きベクトルの範囲である、解決策1~2に記載のいずれかに記載の方法。
【0082】
4. 前記制限することは、MVD成分を精度に合わせてスケーリングすることと、前記スケーリングの外れを範囲に合わせてクリッピングすることを含む、解決策1~3のいずれかに記載の方法。
【0083】
5. 映像領域の特性が映像領域の符号化された情報を含む、解決策1~4のいずれかに記載の方法。
【0084】
6. 範囲が映像の複数の可能な範囲のセットから選択される、解決策1から5のいずれかに記載の方法。
【0085】
7. 映像領域の特性が、映像領域に使用される動きベクトル予測子の精度を含む、解決策1から4のいずれかに記載の方法。
【0086】
8. 前記映像領域の前記特性がMVShiftの値に対応し、MVShiftが前記映像領域に関連付けられた変数であり、MVShiftが、前記映像領域に関連付けられたaffine_inter_flag、またはamvr_flagまたはamvr_precision_flagに依存する解決策1~4のいずれかに記載の方法。
【0087】
9. 映像領域の特性が、変換に使用される符号化モードに対応する、解決策1に記載の方法。
【0088】
10. 解決策9に記載の方法であって、前記符号化モードがイントラブロックコピーモードであり、前記範囲が[-2K+L,2K+L-1]に対応し、ここで、KおよびLは、それぞれ、動きベクトル(MV)の整数部分の範囲およびMVの端数部分の範囲を表す整数である、方法。
【0089】
11. K=13およびL=0である、解決策10に記載の方法。
【0090】
12. 映像領域の特性が、変換に使用される動きモデルに対応する、解決策1に記載の方法。
【0091】
13. 映像領域の特性が、映像領域の動きが並進モデルを使用してモデル化されることであり、その結果、範囲が[-2K+L、2K+L-1]であると判定され、ここで、KおよびLは、それぞれ、動きベクトル(MV)の整数部分の範囲、およびMVの端数部分の範囲を表す整数である、解決策1に記載の方法。
【0092】
14. K=13、L=2である、解決策13に記載の方法。
【0093】
15. 映像領域の特性が、映像領域の動きが非並進モデルを使用してモデル化されることであり、その結果、範囲が[-2K+L、2K+L-1]であると判定され、ここで、KとLは、それぞれ動きベクトル(MV)の整数部分の範囲とMVの端数部分の範囲を表す整数である、解決策1の方法。。
【0094】
16. K=13、L=4である、解決策15のに記載方法。
【0095】
17. 制限が、MVDの丸められた値を範囲に制限することを含む、解決策1のに記載方法。
【0096】
18. 映像領域と映像領域のビットストリーム表現との間での変換中に映像の映像領域に使用される動きベクトル差(MVD)値の範囲を判定することと、前記変換で行われる意味解釈中に、範囲内に収まるようにMVD値に対してクリッピング演算を行うことと、を含む映像処理方法。
【0097】
19. 映像領域が映像ブロックに対応する、解決策1から18のいずれかに記載の方法。
【0098】
20. 前記変換は、前記ビットストリーム表現から前記映像領域の画素値を生成することを含む、解決策1~19のいずれかに記載の方法。
【0099】
21. 前記変換は、前記ビットストリーム表現から前記映像領域の画素値を生成することを含む、解決策1~20のいずれかに記載の方法。
【0100】
22. 実施例1~21に記載の1つ以上を実装するように構成された処理装置を備える映像処理装置。
【0101】
23. コードが記憶されたコンピュータ読み取り可能な媒体であって、前記コードが処理装置によって実行されると、処理装置に、実施例1~21のいずれか1つ以上に記載の方法を実装させる、コンピュータ読み取り可能な媒体。
【0102】
第4章にリストされている項目は、上記の解決策のさらなる変形例を提供する。
【0103】
図4は、映像処理の方法400の一例を示すフローチャートである。この方法(400)は、第1の映像ブロックと第1のブロックのビットストリーム表現との間での変換のために、前記第1のブロックに関連付けられた動きベクトル差(MVD)モジュールの範囲を判定すること(402)であって、MVD成分の範囲は、[-2
M,2
M-1]であり、M=17である、判定することと、MVD成分の値は、MVD成分の範囲内にあるように制約すること(404)と、前記制約されたMVD成分の範囲に基づいて該変換を行うこと(406)と、を含む。
【0104】
いくつかの例では、この範囲は、コーデックの許容MVD精度および/または許容動きベクトル(MV)精度に適合されている。
【0105】
いくつかの例では、許容MVD精度および/または許容動きベクトル(MV)精度は、1/16輝度サンプル精度である。
【0106】
いくつかの例では、コーデックに複数の許容MVD精度および/またはMV精度が存在する場合、MVD成分の範囲は、複数の許容MVD精度および/またはMV精度の最高の精度に適合される。
【0107】
いくつかの例では、複数の許容可能なMVD精度および/またはMV精度が1/16輝度サンプル、1/4輝度サンプル、1輝度サンプル、および4輝度サンプルを含む場合、MVD成分の範囲1/16輝度サンプルの精度に適合している。
【0108】
いくつかの例では、MVD成分の範囲は、[-2M,2M-1]と判定され、M=K+Lであり、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の端数部分を表すために使用されるビット数を示し、MVD成分は、1/2L輝度サンプル精度で表され、および/または、第1のブロックに関連付けられたMV成分の範囲が[-2M,2M-1]と判定され、ここで、M=K+Lであり、KはMV成分の整数部分を表すために使用されるビット数を示し、LはMV成分の端数部分を表現するために使用されるビット数を示し、MV成分は1/2L輝度サンプル精度で表現され、M、K、Lは正の整数であることを示す。
【0109】
いくつかの例では、K=13、L=4、およびM=17である。
【0110】
いくつかの例では、MVD成分は、ビットストリームで符号化された復号化/信号通知されたMVD成分、または復号化処理の内部シフト動作を通じて特定の精度に関連付けられた変換されたMVD成分である。
【0111】
いくつかの例では、MVD成分は、水平MVD成分および垂直MVD成分を含み、水平MVD成分および垂直MVD成分は、同じ範囲を有する。
【0112】
いくつかの例では、MVD成分は、整数ビット、端数ビット、および符号ビットで表現される。
【0113】
いくつかの例では、第1のブロックに関連付けられたMVの範囲は、MVD成分の範囲と同じである。
【0114】
図5は、映像処理の方法500の一例を示すフローチャートである。この方法500は、第1の映像ブロックと前記第1のブロックのビットストリーム表現との間での変換のために、前記第1のブロックに関連付けられた動きベクトル差(MVD)成分の範囲を判定することであって、MVD成分の範囲は、コーデックの許容MVD精度および/または許容動きベクトル(MV)精度に適応される、判定すること、判定すること(502)と、MVD成分の値をMVD成分の範囲内に制約すること(504)と、制約されたMVD成分の範囲に基づいてこの変換を行うこと(506)とを含む。
【0115】
いくつかの例では、MVD成分は、ビットストリームで符号化された復号化/信号通知されたMVD成分、または復号化処理の内部シフト動作を通じて特定の精度に関連付けられた変換されたMVD成分である。
【0116】
いくつかの例では、復号化/信号通知されたMVD成分は、[-2M,2M-1]の範囲にあることが要求され、式中M=17である。
【0117】
いくつかの例では、MVD成分は、整数ビット、端数ビット、および符号ビットで表現される。
【0118】
いくつかの例では、MVD成分の範囲は、[-2M,2M-1]と判定され、M=K+Lであり、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の端数部分を表すために使用されるビット数を示し、MVD成分は、1/2L輝度サンプル精度で表され、および/または、第1のブロックに関連付けられたMV成分の範囲が[-2M,2M-1]と判定され、ここで、M=K+Lであり、KはMV成分の整数部分を表すために使用されるビット数を示し、LはMV成分の端数部分を表すために使用されるビット数を示し、MV成分は1/2L輝度サンプル精度で表現され、M、K、Lは正の整数であることを示す。
【0119】
いくつかの例では、すべての復号化されたMVD成分の値は、まず1/2L輝度サンプル精度にスケーリングされ、次にMVD成分の範囲[-2M,2M-1]にクリッピングされる。
【0120】
いくつかの例では、コーデックに複数の許容MVD精度および/またはMV精度が存在する場合、MVD成分の範囲は、複数の許容MVD精度および/またはMV精度の最高の精度に適合される。
【0121】
いくつかの例では、複数の許容MVD精度および/またはMV精度が1/16輝度サンプル精度、1/4輝度サンプル精度、1輝度サンプル精度、および4輝度サンプル精度を含む場合、MVD成分の範囲は、1/16輝度サンプルの精度に適合しており、MVD成分の値は、その範囲に制約され、および/またはクリッピングされる。
【0122】
いくつかの例では、K=13、L=4、およびM=17である。
【0123】
いくつかの例では、MVD成分は、水平MVD成分および垂直MVD成分を含み、水平MVD成分および垂直MVD成分は、同じ範囲を有する。
【0124】
いくつかの例では、MVの範囲は、MVD成分の範囲と同じである。
【0125】
図6は、映像処理の方法600の一例を示すフローチャートである。この方法600は、第1の映像ブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられた動きベクトル差(MVD)の範囲を、第1のブロックの符号化された情報に基づいて判定すること(602)と、MVD成分の値は、MVD成分の範囲内にあるように制約すること(604)と、制約されたMVD成分に基づいて該変換を行うこと(606)と、を含む。
【0126】
いくつかの例では、MVD成分の範囲には、MVD成分の範囲の複数のセットが含まれる。
【0127】
いくつかの例では、符号化された情報は、動きベクトル(MV)予測器の精度、MVD成分の精度、およびMVの精度のうちの少なくとも1つを含む。
【0128】
いくつかの例では、MVD成分のMVD精度が1/2L輝度サンプルである場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲と判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数を示し、LはMVD成分の端数部分を表すために使用されるビット数を示し、KとLは正の整数である。
【0129】
いくつかの例では、Kは13であり、Lは4,3,2,1,0、-1、-2、-3、および-4のうちの1つである。
【0130】
いくつかの例では、符号化された情報は、MVDに関連付けられた変数MvShiftを含み、変数MvShiftの導出は、AFFINEが使用されているか否か、および/または、適応型動きベクトル解像度(AMVR)が使用されているか否か、および/または、AMVRの精度、および/または、MVDの精度、および/または、動きベクトル差を有するマージモード(MMVD)情報、および/または、第1のブロックの予測モードに依存する。
【0131】
いくつかの例では、変数MvShiftは、符号化された情報のinter_affine_flag、amvr_flag、およびamvr_precision_idxを含む1つ以上の構文要素から導出する。
【0132】
いくつかの例では、変数MvShiftは、符号化された情報のinter_affine_flag、amvr_flag、amvr_precision_idx、sps_fpel_mmvd_enabled_flag、ph_fpel_mmvd_enabled_flag、mmvd_distance_idx、およびCuPredModeを含む1つ以上の構文要素から導出する。
【0133】
いくつかの例では、符号化された情報は、第1のブロックの符号化モード、動きモードおよび予測モード、ならびに符号化された情報でAFFIN/AMVRが使用されるかどうかを示す1つ以上の変数および/または構文要素を含む。
【0134】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがIBCモードで符号化されていることを示すMODE_IBCである場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数を示し、LはMVD成分の端数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0135】
いくつかの例では、K=13、およびL=0である。
【0136】
いくつかの例では、第1のブロックの動きモデルのインデックスが0に等しい場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数、LはMVD成分の端数部分を表すために使用されるビット数を表し、KおよびLは正の整数である。
【0137】
いくつかの例では、K=13、およびL=2である。
【0138】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがMODE_INTERであり、affine_inter_flagの変数が偽である場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数を示し、LはMVD成分の端数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0139】
いくつかの例では、K=13、およびL=2である。
【0140】
いくつかの例では、第1のブロックの動きモデルのインデックスが0に等しくない場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数、LはMVD成分の端数部分を表すために使用されるビット数を表し、KおよびLは正の整数である。
【0141】
いくつかの例では、K=13、およびL=4である。
【0142】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがMODE_INTERであり、affine_inter_flagの変数が真である場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、その範囲内になるように制約および/またはクリッピングされ、式中、KはMVD成分の整数部分を表すために使用されるビット数を示し、LはMVD成分の端数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0143】
いくつかの例では、K=13、およびL=4である。
【0144】
いくつかの例では、復号化されたMVD成分が端数精度である場合、復号化されたMVD成分は整数MVD成分に丸められる。
【0145】
いくつかの例では、丸められた整数MVD成分は[-2K、2K-1]の範囲にあり、K=13である。
【0146】
いくつかの例では、復号化されたすべてのMVD成分の値は、ビットストリーム制約を使用する以外の意味解釈中にMVD成分の範囲に明示的にクリッピングされる。
【0147】
図7は、映像処理の方法700の一例を示すフローチャートである。方法700は、映像の第1のブロックに関連付けられ、制約されて信号通知されるMVD成分に基づいて、第1のブロックと、第1のブロックのビットストリーム表現との変換を行うこと(702)を含み、信号通知される動きベクトル差(MVD)成分の値が、所定の範囲に制約される。
【0148】
いくつかの例では、この所定の範囲は、第1のブロックに関連付けられたMVD成分の精度に関連付けられている。
【0149】
いくつかの例では、第1のブロックに関連付けられたMVD成分の精度は1/16画素であり、所定の範囲は[-217,217-1]である。
【0150】
いくつかの例では、MVD成分の精度が1/16画素である場合、信号通知されるMVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、MVD成分の整数部分を表すために用いられるビット数を示し、Lは、MVD成分の端数部分を表すために用いられるビット数を示し、ここで、KおよびLは整数である。
【0151】
いくつかの例において、K=13、L=4である。
【0152】
いくつかの例では、MVD成分の精度が1/4画素である場合、信号通知されるMVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、MVD成分の整数部分を表すために用いられるビット数を示し、Lは、MVD成分の端数部分を表すために用いられるビット数を示し、ここで、KおよびLは整数である。
【0153】
いくつかの例において、K=13、L=2である。
【0154】
いくつかの例では、MVD成分の精度が1画素である場合、信号通知されるMVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、MVD成分の整数部分を表すために用いられるビット数を示し、Lは、MVD成分の端数部分を表すために用いられるビット数を示し、ここで、KおよびLは整数である。
【0155】
いくつかの例において、K=13、L=0である。
【0156】
いくつかの例では、MVD成分の精度が4画素である場合、信号通知されるMVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、信号通知されるMVD成分の整数部分を表すために用いられるビット数を示し、Lは、信号通知されるMVD成分の端数部分を表すために用いられるビット数を示し、ここで、KおよびLは整数である。
【0157】
いくつかの例では、K=13、L=-2である。
【0158】
いくつかの例では、信号通知されるMVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、MVD成分の整数部分を表すために用いられるビット数を示し、Lは、MVD成分の端数部分を表すために用いられるビット数を示し、ここで、K=13,L=4である。
【0159】
図8は、映像処理の方法800の一例を示すフローチャートである。方法800は、制約されて導出されるMVD成分に基づいて、映像の第1のブロックと、第1のブロックのビットストリーム表現との変換を行うこと(802)を含み、第1のブロックに関連付けられた導出される動きベクトル差(MVD)成分の値が、所定の範囲に制約される。
【0160】
いくつかの例では、導出MVD成分は、対応するリスト-Y MVD成分から導出されたリスト-X MVD成分であり、ここで、X=0または1であり、Y=1または0である。
【0161】
いくつかの例では、リスト-X MVD成分は、対称動きベクトル差モードに従って、信号通知されたリスト-Y MVD成分によって導出される。
【0162】
いくつかの例では、この所定の範囲は、第1のブロックに関連付けられたMVD成分の精度に関連付けられている。
【0163】
いくつかの例では、第1のブロックに対応するMVD成分の精度は1/16画素であり、この所定の範囲は[-217,217-1]である。
【0164】
いくつかの例では、導出MVD成分の数値は、[-2K+L,2K+L-1]の所定の範囲に制約され、ここで、Kは、MVD成分の整数部分を表すために用いられるビット数を示し、Lは、導出MVD成分の端数部分を表すために用いられるビット数を示し、ここで、KおよびLは整数である。
【0165】
いくつかの例では、K=13、およびL=4である。
【0166】
いくつかの例では、導出MVD成分は、コーデックにおけるすべてのMVD成分が同じ精度に変換される内部のMVD値である。
【0167】
いくつかの例では、適応型動きベクトル解像度(AMVR)フラグに従って、信号通知されるMVD値を内部の18ビットのMVD値にシフトし、導出されるMVD成分を得る。
【0168】
いくつかの例では、変換により、ビットストリーム表現から映像の第1のブロックが生成される。
【0169】
いくつかの例では、変換により、映像の第1のブロックからビットストリーム表現が生成される。
【0170】
本明細書における例の一覧において、用語「変換」は、現在の映像ブロックのためのビットストリーム表現の生成、またはビットストリーム表現から現在の映像ブロックを生成することを指すことができる。ビットストリーム表現は、ビットの連続したグループを表す必要がなく、ヘッダフィールドまたは符号化画素値情報を表すコード名に含まれるビットに分割されてもよい。
【0171】
上記の例において、適用可能性の規則は、予め定義されたものであってもよく、エンコーダおよびデコーダに知られたものであってもよい。
【0172】
本明細書に記載されているように、開示された技術は、映像エンコーダまたはデコーダで実施されて、イントラ符号化における差分符号化モードの使用に関して考慮事項の様々な実装規則の使用を含む技術を使用して圧縮効率を改善し得ることが理解されよう。
【0173】
本明細書に記載された開示された、およびその他の解決策、実施例、実施形態、モジュール、および機能動作の実装形態は、本明細書に開示された構造およびその構造的等価物を含め、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1つ以上の組み合わせで実施してもよい。開示された、およびその他の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置によって実装されるため、またはデータ処理装置の動作を制御するために、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶デバイス、機械可読記憶基板、メモリデバイス、機械可読伝播信号をもたらす物質の組成物、またはこれらの1つ以上の組み合わせであってもよい。「データ処理装置」という用語は、例えば、プログラマブル処理装置、コンピュータ、または複数の処理装置、若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を含む。この装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、処理装置ファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つ以上の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成した信号、例えば、機械で生成した電気、光、または電磁信号であり、適切な受信装置に送信するための情報を符号化するために生成される。
【0174】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、また、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、成分、サブルーチン、または他のユニットとして含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。1つのコンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開することも可能である。
【0175】
本明細書に記載された処理およびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブル処理装置によって行うことができる。処理およびロジックフローはまた、特定用途のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって行うことができ、装置はまた、特別目的のロジック回路として実装することができる。
【0176】
コンピュータプログラムの実行に適した処理装置は、例えば、汎用および専用マイクロ処理装置の両方、並びに任意の種類のデジタルコンピュータの任意の1つ以上の処理装置を含む。一般的に、処理装置は、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するための処理装置と、命令およびデータを記憶するための1つ以上のメモリデバイスとである。一般的に、コンピュータは、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含み、例えば、EPROM、EEPROM、フラッシュ記憶装置、磁気ディスク、例えば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスク等の半導体記憶装置を含む。処理装置およびメモリは、特定用途のロジック回路によって補完されてもよく、または特定用途のロジック回路に組み込まれてもよい。
【0177】
本特許明細書は多くの詳細を含むが、これらは、任意の主題の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許文献において別個の実施形態のコンテクストで説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、1つの例のコンテクストで説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1つ以上の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブコンビネーションまたはサブコンビネーションのバリエーションに向けられてもよい。
【0178】
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で行われること、または示された全ての動作が行われることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムの構成要素の分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
【0179】
いくつかの実装形態および例のみが記載されており、この特許文献に記載され図示されているコンテンツに基づいて、他の実施形態、拡張および変形が可能である。
【手続補正書】
【提出日】2021-12-24
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
映像の第1のブロックと前記映像のビットストリームとの第1の変換のために、前記第1のブロックに関連付けられ、前記ビットストリームに含まれる第1の動きベクトル差分(MVD)成分を決定することと、
少なくとも前記第1のMVD成分に基づいて前記第1の変換を行うことと、を含む映像データを処理する方法であって、
前記第1のMVD成分の値が、所定の範囲に制限され、前記所定の範囲は、[-2
M
,2
M
-1]であり、M=17である、方法。
【請求項2】
前記方法は、前記映像の第2のブロックと前記ビットストリームとの第2の変換のために、前記第2のブロックに関連付けられ、前記ビットストリームに含まれる第1のリストの第2のMVD成分を決定することと、
前記第2のMVD成分に基づいて、前記第2のブロックに関連付けられた第2のリストの第3のMVD成分を決定することと、
少なくとも前記第2のMVD成分と前記第3のMVD成分とに基づいて、前記第2の変換を行うことと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第2のMVD成分の値が、最大値2
M
-1を有する所定の範囲に制限される、請求項2に記載の方法。
【請求項4】
前記第3のMVD成分の値が、最大値2
M
-1を有する所定の範囲に制限される、請求項2~3のいずれか1項に記載の方法。
【請求項5】
前記第1のリストは、X=0によるリストXであり、前記第2のリストは、それに応じて、Y=1によるリストYである、請求項2に記載の方法。
【請求項6】
前記第3のMVD成分は、前記第2のMVD成分の負数である、請求項2に記載の方法。
【請求項7】
前記第1のMVD成分の前記所定の範囲は、コーデックの許容可能なMVD精度および/または許容動きベクトル精度に適応される、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記M=K+Lであって、K=13およびL=4であり、Kは、前記第1のMVD成分の整数部分を表すために使用されるビット数を示し、Lは、前記第1のMVD成分の端数部分を表すために使用されるビット数を示し、前記第1のMVD成分は、1/2L輝度サンプル精度で表される、請求項1に記載の方法。
【請求項9】
許容可能なMVD精度および/または許容動きベクトル精度は、1/16輝度サンプル精度である、請求項1~7のいずれか1項に記載の方法。
【請求項10】
前記変換は、前記第1のブロックを前記ビットストリームに符号化することを含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記変換は、前記第1のブロックを前記ビットストリームから復号化することを含む、請求項1~9のいずれか1項に記載の方法。
【請求項12】
処理装置と、命令を含む非一時的メモリとを備えた映像データを処理するための装置であって、前記処理装置による実行時に前記命令は、前記処理装置に、
映像の第1のブロックと前記映像のビットストリームとの第1の変換のために、前記第1のブロックに関連付けられ、前記ビットストリームに含まれる第1の動きベクトル差分(MVD)成分を決定することと、
少なくとも前記第1のMVD成分に基づいて前記第1の変換を行うこととを行わせ、
前記第1のMVD成分の値が、所定の範囲に制限され、前記所定の範囲は、[-2
M
,2
M
-1]であり、M=17である、装置。
【請求項13】
命令を記憶する非一時的なコンピュータ可読記憶媒体であって、前記命令は、処理装置に、
映像の第1のブロックと前記映像のビットストリームとの第1の変換のために、前記第1のブロックに関連付けられ、前記ビットストリームに含まれる第1の動きベクトル差分(MVD)成分を決定することと、
少なくとも前記第1のMVD成分に基づいて前記第1の変換を行うこととを行わせ、
前記第1のMVD成分の値が、所定の範囲に制限され、前記所定の範囲は、[-2
M
,2
M
-1]であり、M=17である、非一時的なコンピュータ可読記憶媒体。
【請求項14】
映像処理装置によって行われる方法により生成されるビットストリームを記憶する非一時的なコンピュータ可読記録媒体であって、前記方法は、
映像の第1のブロックに関連付けられた第1の動きベクトル差(MVD)成分を決定することと、
少なくとも前記第1のMVD成分に基づいて前記ビットストリームを生成することと、を含み、
前記第1のMVD成分の値が、所定の範囲に制限され、前記所定の範囲は、[-2
M
,2
M
-1]であり、M=17である、非一時的なコンピュータ可読記録媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
関連出願の相互参照
本願は、2019年6月25日出願の国際特許出願第PCT/CN2019/092851号の優先権と利益を主張する、2020年6月28日出願の国際特許出願第PCT/CN2020/098514号に基づく。前述の特許出願はすべて、参照によりその全体が本明細書に組み込まれる。
【国際調査報告】