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

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

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

<>
  • 特許-動きベクトルの差に関する制限 図1
  • 特許-動きベクトルの差に関する制限 図2
  • 特許-動きベクトルの差に関する制限 図3
  • 特許-動きベクトルの差に関する制限 図4
  • 特許-動きベクトルの差に関する制限 図5
  • 特許-動きベクトルの差に関する制限 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-26
(45)【発行日】2023-07-04
(54)【発明の名称】動きベクトルの差に関する制限
(51)【国際特許分類】
   H04N 19/105 20140101AFI20230627BHJP
   H04N 19/139 20140101ALI20230627BHJP
   H04N 19/176 20140101ALI20230627BHJP
   H04N 19/52 20140101ALI20230627BHJP
   H04N 19/523 20140101ALI20230627BHJP
【FI】
H04N19/105
H04N19/139
H04N19/176
H04N19/52
H04N19/523
【請求項の数】 17
(21)【出願番号】P 2021562033
(86)(22)【出願日】2020-04-26
(65)【公表番号】
(43)【公表日】2022-06-21
(86)【国際出願番号】 CN2020087068
(87)【国際公開番号】W WO2020216381
(87)【国際公開日】2020-10-29
【審査請求日】2021-10-18
(31)【優先権主張番号】PCT/CN2019/084228
(32)【優先日】2019-04-25
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520476341
【氏名又は名称】北京字節跳動網絡技術有限公司
【氏名又は名称原語表記】Beijing Bytedance Network Technology Co., Ltd.
【住所又は居所原語表記】Room B-0035, 2/F, No.3 Building, No.30, Shixing Road, Shijingshan District Beijing 100041 China
(73)【特許権者】
【識別番号】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)【発明者】
【氏名】リウ ホンビン
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2019/066514(WO,A1)
【文献】Benjamin Bross, et al.,"Versatile Video Coding (Draft 5)",Document: JVET-N1001-v2, [online],JVET-N1001 (version 2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2019年04月12日,Pages 55, 99-112, 145-163,[令和4年11月21日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=6640> and <URL: https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v2.zip>.,(See document file "JVET-N1001-v2.docx" in the zip file "JVET-N1001-v2.zip".)
【文献】Xiaoyu Xiu, et al.,"CE2/4/9-related: Overflow prevention for motion field storage",Document: JVET-N0334, [online],JVET-N0334 (version 2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2019年03月20日,Pages 1-5,[令和4年11月21日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=6055> and <URL: https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N0334-v2.zip>.,(See document file "JVET_N0334.docx" in the zip file "JVET-N0334-v2.zip".)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
映像データの処理の方法であって、
映像の第1のブロックと、前記映像のビットストリームとの間の変換のために、前記第1のブロックに関連付けられたMV(Motion Vector)成分およびMVD(Motion Vector Difference)成分を判定することと、
抑制されたMVD成分に基づいて前記変換を実行することと、
を有し、
前記第1のブロックに関連付けられたMV成分の範囲は、[-2 ,2 -1]であると判定され、
M=K+Lであり、
Kは、前記MV成分の整数部分を表すために用いられるビット数を示し、
Lは、前記MV成分の小数部分を表すために用いられるビット数を示し、
前記MV成分は、1/2 輝度サンプル精度にて表され、
前記MVD成分の値は、MVD成分の範囲内となるように抑制され、
MVD成分の前記範囲は、[-2,2-1]であり、
M=17であ
KおよびLは、正の整数である、方法。
【請求項2】
前記範囲は、コーデックの許容可能なMVD精度および/または許容可能なMV(Motion Vector)精度に適合される、請求項1に記載の方法。
【請求項3】
前記許容可能なMVD精度および/またはMV(Motion Vector)精度は、1/16輝度サンプル精度である、請求項2に記載の方法。
【請求項4】
複数の許容可能なMVD精度および/またはMV精度がコーデックにある場合、MVD成分の前記範囲は、前記複数の許容可能なMVD精度および/またはMV精度の最上の精度に適合される、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記複数の許容可能なMVD精度および/またはMV精度が、1/16輝度サンプル、1/4輝度サンプル、および1輝度サンプルを含む場合、MVD成分の前記範囲は、前記1/16輝度サンプルの精度に適合される、請求項4に記載の方法。
【請求項6】
前記第1のブロックは、動き情報が動きベクトル候補リストおよびスケーリングされたMVDに基づいて導出される第1のコーディングモードに適用され、
前記スケーリングされたMVDは、前記MVDをビットシフトすることにより生成され、
前記動きベクトル候補リストは、前記第1のコーディングモードにてコーディングされた近傍のブロックら導出される承された候補、構築された候補、およびゼロMVを有する候補を含む、
請求項5に記載の方法。
【請求項7】
更に、前記MVD成分の整数部分を表すために用いられるビット数を示し、
Lは更に、前記MVD成分の小数部分を表すために用いられるビット数を示し、
前記MVD成分は、1/2輝度サンプル精度にて表され
請求項1~6のいずれか一項に記載の方法。
【請求項8】
K=13、L=4である請求項7に記載の方法。
【請求項9】
前記MVD成分は、ビットストリームにてコーディングされた信号通知されたMVD成分、または、復号化処理において内部シフト動作を介して特定の精度に関連付けられた変換されたMVD成分である、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記MVD成分は、水平MVD成分および垂直MVD成分を含み、
前記水平MVD成分および前記垂直MVD成分は同じ範囲を有する、
請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記MVD成分は、整数ビット、小数ビット、および符号ビットにより表される、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記第1のブロックに関連付けられたMVの前記範囲は、MVD成分の前記範囲と同じである、請求項1~11のいずれか一項に記載の方法。
【請求項13】
前記変換は、前記第1のブロックを前記ビットストリームから復号化することを含む、請求項1~12のいずれか一項に記載の方法。
【請求項14】
前記変換は、前記第1のブロックを前記ビットストリームに符号化することを含む、請求項1~12のいずれか一項に記載の方法。
【請求項15】
プロセッサと、命令を有する非一時的メモリを有する、映像データを処理するための装置であって、前記命令が前記プロセッサにより実行されることにより、前記プロセッサに、
映像の第1のブロックと、前記映像のビットストリームとの間の変換のために、MV(Motion Vector)成分、および前記第1のブロックに関連付けられたMVD(Motion Vector Difference)成分を判定することと、
抑制されたMVD成分に基づいて前記変換を実行することと、
を有し、
前記第1のブロックに関連付けられたMV成分の範囲は、[-2 ,2 -1]であると判定され、
M=K+Lであり、
Kは、前記MV成分の整数部分を表すために用いられるビット数を示し、
Lは、前記MV成分の小数部分を表すために用いられるビット数を示し、
前記MV成分は、1/2 輝度サンプル精度にて表され、
前記MVD成分の値は、MVD成分の範囲内となるように抑制され、
MVD成分の前記範囲は、[-2,2-1]であり、
M=17であ
KおよびLは、正の整数である、装置。
【請求項16】
命令を格納する非一時的コンピュータ可読記憶媒体であって、
前記命令は、プロセッサに、
映像の第1のブロックと、前記映像のビットストリームとの間の変換のために、前記第1のブロックに関連付けられたMV(Motion Vector)成分およびMVD(Motion Vector Difference)成分を判定することと、
抑制されたMVD成分に基づいて前記変換を実行することと、
を有し、
前記第1のブロックに関連付けられたMV成分の範囲は、[-2 ,2 -1]であると判定され、
M=K+Lであり、
Kは、前記MV成分の整数部分を表すために用いられるビット数を示し、
Lは、前記MV成分の小数部分を表すために用いられるビット数を示し、
前記MV成分は、1/2 輝度サンプル精度にて表され、
M、K、およびLは、正の整数であり、
前記MVD成分の値は、MVD成分の範囲内となるように抑制され、
MVD成分の前記範囲は、[-2,2-1]であり、
M=17であ
KおよびLは、正の整数である、非一時的コンピュータ可読記憶媒体。
【請求項17】
像のビットストリームを格納するための方法であって、
前記映像の第1のブロックと、前記第1のブロックに関連付けられたMV(Motion Vector)成分およびMVD(Motion Vector Difference)成分を判定することと、
抑制されたMVD成分に基づいて前記ビットストリームを生成することと、
非一時的コンピュータ可読記録媒体に前記ビットストリームを格納することと、
を有し、
前記第1のブロックに関連付けられたMV成分の範囲は、[-2 ,2 -1]であると判定され、
M=K+Lであり、
Kは、前記MV成分の整数部分を表すために用いられるビット数を示し、
Lは、前記MV成分の小数部分を表すために用いられるビット数を示し、
前記MV成分は、1/2 輝度サンプル精度にて表され、
前記MVD成分の値は、MVD成分の範囲内となるように抑制され、
MVD成分の前記範囲は、[-2,2-1]であり、
M=17であ
KおよびLは、正の整数である、方法
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
これは、2019年4月25日出願の国際特許出願第PCT/CN2019/084228号の優先権および利益を主張する2020年4月26日出願の国際特許出願第PCT/CN2020/087068号の国内段階である国際特許出願第PCT/CN2019/084228号の全開示は、本出願の開示の一部として参照により援用される。
【0002】
本特許明細書は、映像符号化技術、デバイスおよびシステムに関する。
【背景技術】
【0003】
映像圧縮の進歩にもかかわらず、デジタル映像は、依然として、インターネット及び他のデジタル通信ネットワークにおいて最大の帯域幅の使用量を占めている。映像を受信及び表示することが可能である接続されたユーザデバイスの数が増加するにつれ、デジタル映像の使用に対する帯域幅需要は増大し続けることが予測される。
【発明の概要】
【0004】
本特許明細書では、規定されたビット数を使用して表現される動きベクトルを用いて映像符号化または映像復号化を行う様々な実施形態および技術を説明する。
【0005】
1つの例示的な態様において、映像復号化方法が開示される。方法は、映像領域と映像領域のビットストリーム表現との間での変換の間、映像の映像領域に対して使用されるMVD(Motion Vector Difference)値の範囲を、最大許容動きベクトル解像度、最大許容動きベクトル精度、または映像領域の優先度に基づいて判定することと、MVD値が範囲内になるように制限することにより、変換を実行することと、を含む。
【0006】
1つの例示的な態様において、映像復号化方法が開示される。方法は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を判定することであって、MVD成分の範囲は、[-2,2-1]であり、M=17である、ことと、MVD成分の値は、MVD成分の範囲内となるように抑制することと、抑制されたMVD成分に基づいて変換を実行することと、を含む。
【0007】
1つの例示的な態様において、映像復号化方法が開示される。方法は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を判定することであって、MVD成分の範囲は、コーデックの許容可能なMVD精度および/または許容可能なMV(Motion Vector)精度に適合される、ことと、MVD成分の値をMVD成分の範囲内となるように抑制することと、抑制されたMVD成分に基づいて変換を実行することと、を含む。
【0008】
1つの例示的な態様において、映像復号化方法が開示される。方法は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を、第1のブロックの符号化情報に基づいて判定することと、MVD成分の値を、MVD成分の範囲内となるように抑制することと、MVD成分の抑制された範囲に基づいて変換を実行することと、を含む。
【0009】
さらに別の例示的な態様において、映像処理装置が開示される。装置は、上述した方法を実行するように構成されたプロセッサを含む。
【0010】
さらに別の例示的な態様において、コンピュータ可読媒体が開示される。媒体は、上述した方法をプロセッサで実装するためのコードが記憶されている。
【0011】
これらの、および他の態様は、本特許明細書で説明される。
【図面の簡単な説明】
【0012】
図1】例示的なエンコーダブロック図を示す。
図2】本特許明細書に記載される1または複数の方法を実装するためのハードウェアプラットフォームの一例を示すブロック図である。
図3】映像処理の方法の一例を示すフローチャートである。
図4】映像処理の方法の一例を示すフローチャートである。
図5】映像処理の方法の一例を示すフローチャートである。
図6】映像処理の方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
本明細書では、理解を容易にするためにセクションの見出しを使用しており、1つのセクションに開示された実施形態をそのセクションにのみ限定するものではない。さらに、特定の実施形態は、VVC(Versatile Video Coding)または他の特定の映像コーデックを参照して説明されたが、開示された技術は、他の映像符号化技術にも適用可能である。さらに、いくつかの実施形態は映像符号化ステップを詳細に説明しているが、符号化を元に戻す復号化の対応するステップはデコーダによって実行されることが理解されよう。さらに、映像処理という用語は、映像符号化または圧縮、映像の復号化または展開、および映像の画素がある圧縮形式から別の圧縮形式へ、または別の圧縮ビットレートで表現される映像のコード変換を含む。
【0014】
1. 概要
【0015】
本特許明細書は、映像符号化技術に関する。具体的には、映像符号化におけるインター符号化処理に関する。HEVCのような既存の映像符号化規格に適用してもよいし、規格(Versatile Video Coding)を確定させるために適用してもよい。本発明は、将来の映像符号化規格または映像コーデックにも適用可能である。
【0016】
2. 初期の協議
【0017】
映像符号化規格は、主に周知の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会議において、新しい映像符号化規格をVVC(Versatile Video Coding)と正式に命名され、その時、第1版のVTM(VVC Test Model)がリリースされた。VVCの標準化に寄与する努力が続けられており、すべてのJVET会議において、VVC標準に新しい符号化技術が採用されている。毎回の会議の後、VVC作業草案およびテストモデルVTMが更新される。VVCプロジェクトは、現在、2020年7月の会議における技術完成(FDIS)を目指している。
【0018】
2.1 典型的な映像コーデックの符号化フロー
【0019】
図1は、3つのインループフィルタリングブロック、すなわち、DF(Deblocking Filter)、SAO(Sample Adaptive Offset)、およびALFを含む、VVCのエンコーダブロック図の例を示す。予め定義されたフィルタを使用するDFとは異なり、SAOおよびALFは、現在のピクチャの元のサンプルを利用し、それぞれ、オフセットを追加し、オフセットとフィルタ係数を信号通知する符号化側情報でFIR(Finite Inpulse Response)フィルタを適用することにより、元のサンプルと再構成されたサンプルとの間の平均二乗誤差を低減する。ALFは、各ピクチャの最後の処理ステージに位置し、前のステージで生成されたアーチファクトを捕捉し、確定しようとするツールと見なすことができる。
【0020】
図1は、エンコーダブロック図の例を示す。
【0021】
2.2 AMVR(Adaptive Motion Vector Resolution)
【0022】
HEVCにおいて、スライスヘッダにてuse_integer_mv_flagが0等しい場合、1/4輝度サンプルのユニットにてMVD(Motion Vector Difference)(CUの動きベクトルと予測動きベクトルとの差)が信号通知される。JEMにおいて、LAMVR(Locally Adaptive Motion Vector Resolution)が導入される。VVCにおいて、CUレベルのAMVR(Adaptive Motion Vector Resolution)スキームが導入される。AMVRは、CUのMVDを異なる精度で符号化することを可能にする。現在のCUに対するモード(通常のAMVPモードまたはアフィンAVMPモード)に基づいて、現在のCUのMVDは、以下のように適応的に選択できる。
-通常のAMVPモード:1/4輝度サンプル、整数輝度サンプル、または4輝度サンプル。
-アフィンAMVPモード:1/4輝度サンプル、整数輝度サンプル、または1/16輝度サンプル。
【0023】
現在のCUが少なくとも1つの非ゼロMVD成分を有する場合、CUレベルのMVD解像度指示が条件付きで信号通知される。すべてのMVD成分(すなわち、参照リストL0および参照リストL1の水平および垂直MVDの両方)がゼロである場合、1/4輝度サンプルMVD解像度が推測される。
【0024】
少なくとも1つの非ゼロMVD成分の構成要素を有するCUの場合、1/4輝度サンプルMVD精度がCUに対して使用されるかどうかを示すために、第1のフラグが信号通知される。第1のフラグが0である場合、さらなる信号通知は必要とされず、現在のCUのために1/4輝度サンプルMVD精度が使用される。そうでない場合、整数輝度サンプルまたは4輝度サンプルのMVD精度が通常のAMVP CUに対して使用されるかどうかを示すために、第2のフラグが信号通知される。同じ第2のフラグは、整数輝度サンプルまたは1/16輝度サンプルのMVD精度がアフィンAMVP CUに対して使用されるかどうかを示すために使用される。再構成されたMVが意図された精度(1/4輝度サンプル、整数輝度サンプル、または4輝度サンプル)を有することを保証するために、CUの動きベクトル予測子は、MVDに加算される前に、MVDと同じ精度に丸められる。動きベクトル予測子をゼロに向かって丸める(すなわち、負の動きベクトル予測子を正の無限大に向かって丸め、正の動きベクトル予測モジュールを負の無限大に向かって丸める)。
【0025】
エンコーダは、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精度のアフィンインターモードで得られたアフィンパラメータが使用される。
【0026】
2.3 VVCにおけるアフィンAMVP予測
【0027】
アフィンAMVPモードは、幅および高さの両方が16以上であるCUに適用することができる。アフィンAMVPモードが使用されるかどうかを示すために、CUレベルのアフィンフラグがビットストリームにて信号通知され、次いで、4パラメータアフィンまたは6パラメータアフィンであるかを示すために、別のフラグが信号通知される。このモードにおいて、現在のCUのCPMVの差とそれらの予測子CPMVPがビットストリームにおいて信号通知される。アフィンAVMP候補リストサイズは2であり、以下のCPVM候補の4つのタイプを順に使用して生成される。
1)近傍のCUのCPMVから外挿した継承されたアフィンAMVP候補
2)近傍のCUの並進MVを使用して導出された構築されたアフィンAMVP候補CPMVP
3)近傍のCUからの並進MV
4)ゼロMV
【0028】
継承されたアフィンAMVP候補のチェック順は、継承されたアフィンマージ候補のチェック順と同じである。唯一の違いは、AVMP候補の場合、現在のブロックと同じ参照ピクチャを有するアフィンCUのみを考慮することである。継承されたアフィン動き予測子を候補リストに挿入する場合、プルーニング処理は適用されない。
【0029】
構築されたAMVP候補は、指定された空間的近傍から導出される。また、近傍のブロックの参照ピクチャインデックスもチェックされる。インター符号化され、現在のCUと同じ参照ピクチャを有する、チェック順において第1のブロックが使用される。1つのみが存在する。現在のCUが4パラメータアフィンモードで符号化され、mvおよびmvが両方とも利用可能である場合、それらをアフィンAMVPリストに1つの候補として追加する。現在のCUが6パラメータアフィンモードで符号化され、3つのCPMVすべてが利用可能である場合、それらをアフィンAMVPリストに1つの候補として追加する。そうでない場合、構築されたAMVP候補を利用不可能に設定する。
【0030】
継承されたアフィンAMVP候補および構築されたAMVP候補をチェックした後、アフィンAMVPリスト候補が依然として2未満である場合、利用可能であれば、mv、mv、およびmvの順に、現在のCUのすべての制御点MVを予測するために並進MVとして追加される。最後に、まだアフィンAMVPリストがすべて満たされていない場合は、アフィンAMVPリストを満たすために、ゼロMVが使用される。
【0031】
2.4 VVCにおけるMMVD(Merge mode with MVD)
【0032】
暗黙的に導出された動き情報が現在のCUの予測サンプル生成に対して直接使用されるマージモードに加え、VVCにてMMVD(Merge mode with Motion Vector Deffirences)が導入される。スキップフラグおよびマージフラグを送信した直後に、MMVDフラグが信号通知され、MMVDモードがCUに対して使用されるかどうかを指定する。
【0033】
MMVDにおいて、マージ候補が選択された後、信号通知されたMVD情報によってさらに改善される。さらなる情報は、マージ候補フラグ、動きの大きさを指定するためのインデックス、および動き方向の指示のためのインデックスを含む。MMVDモードにおいて、マージリストにおける最初の2つの候補のうちの1つが、MVベースとして使用されるために選択される。マージ候補フラグは、どちらを使用するかを指定するために信号通知される。
【0034】
距離インデックスは、動きの大きさの情報を指定し、開始点からの予め定義されたオフセットを示す。オフセットは、開始MVの水平成分または垂直成分のいずれかに追加される。距離インデックスと予め定義されたオフセットとの関係は、表1に規定される。
【0035】
VVCにおいて、spssレベルにおける小数MMVDオフセットのオン/オフのためのSPSフラグsps_fpel_mmvd_enabled_flag、および、タイルグループのヘッダレベルにおける「SCC/UHDフレーム」のための小数MMVDオフセットのオン/オフを制御するためのタイルグループフラグtile_group_fpel_mmvd_enabled_flagが存在する。小数MVDが有効化されている場合、表1のデフォルト距離テーブルが使用される。そうでない場合、表1のデフォルト距離におけるすべてのオフセット要素は、2だけ左シフトされる。
【0036】
【表1】
【0037】
方向インデックスは、開始点に対する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の符号は逆の値を有する。
【0038】
【表2】
【0039】
2.5 VVCにおけるIBC(Intra Block Copy)
【0040】
IBC(Intra Block Copy)は、SCCのHEVC拡張に採用されているツールである。これにより、スクリーンコンテンツマテリアルの符号化効率が有意に向上することが知られている。IBCモードはブロックレベル符号化モードとして実装されるので、BM(Block Matching)がエンコーダにおいて実行され、各CUに対し最適なブロックベクトル(または、動きベクトル)を見出す。ここで、ブロックベクトルは、現在のブロックから、現在のピクチャの内部で既に再構成された参照ブロックへの置き換えを示すために使用される。
【0041】
VVCにおいて、IBC符号化CUの輝度ブロックベクトルは、整数精度である。彩度ブロックベクトルは、整数精度に丸められる。AMVRと組み合わせた場合、IBCモードは、1画素と4画素の動きベクトル精度を切り替えることができる。IBC符号化CUは、イントラ予測モードまたはインター予測モード以外の第3の予測モードとして扱われる。IBCモードは、幅および高さの両方が64輝度サンプル以下のCUに適用可能である。
【0042】
IBCモードは、CPR(Current Picture Reference)モードとしても知られている。
【0043】
2.6 VVC仕様/作業草案における動きベクトルの差
【0044】
VVC作業草案から以下のテキストが抽出される。
【0045】
7.3.6.8 動きベクトル差構文
【0046】
【表3】
【0047】
7.3.6.7 マージデータ構文
【0048】
【表4】
【0049】
【表5】
【0050】
7.4.3.1 シーケンスパラメータセットRBSP意味論
sps_amvr_enabled_flagが1に等しい場合は、動きベクトル符号化に適応動きベクトル差解像度が使用されることを規定する。amvr_enabled_flagが0に等しい場合は、動きベクトル符号化に適応動きベクトル差解像度が使用されないことを規定する。
sps_affine_amvr_enabled_flagが1に等しい場合は、アフィンインターモードの動きベクトル符号化に適応動きベクトル差解像度が使用されることを規定する。sps_affine_amvr_enabled_flaggが0に等しい場合は、アフィンインターモードの動きベクトル符号化に適応動きベクトル差解像度が使用されないことを規定する。
sps_fpel_mmvd_enabled_flagが1に等しい場合は、動きベクトル差を用いるマージモードが整数サンプル精度を使用することを規定する。sps_fpel_mmvd_enabled_flagが0に等しい場合は、動きベクトル差を用いるマージモードが小数サンプル精度を使用できることを規定する。
【0051】
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であると推測される。
【0052】
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)を規定する。
【0053】
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)
【0054】
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]は、マージ候補リストにおける第1(0)の候補、または、第2(1)の候補のいずれが、mmvd_distance_idx[x0][y0]とmmvd_direction_idx[x0][y0]から導出される動きベクトル差にて用いられるかを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに関連する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
mmvd_distance_idx[x0][y0]は、表7-11で規定されているように、MmvdDistance[x0][y0]を導出するために使用されるインデックスを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに関連する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
【0055】
【表6】
【0056】
mmvd_distance_idx[x0][y0]は、表7-12で規定されているように、MmvdDistance[x0][y0]を導出するために使用されるインデックスを規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに関連する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。
【0057】
【表7】
【0058】
マージ+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に等しいと推測される。
【0059】
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に等しいと推測される。
【0060】
merge_triangle_flag[x0][y0]が1に等しい場合は、現在の符号化ユニットに対して、Bタイルグループを復号化する際に、三角形の形状に基づく動き補償が、現在の符号化ユニットの予測サンプルを生成するために使用されることを規定する。merge_triangle_flag[x0][y0]が0に等しい場合は、符号化ユニットが、三角形状に基づく動き補償によって予測されないことを規定する。merge_triangle_flag[x0][y0]が存在しない場合、0に等しいと推測される。
【0061】
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に等しいと推測される。
【0062】
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]は、以下のように導出される。
【0063】
【数1】
【0064】
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に等しい場合、compIdx=0..1において、MvdCpL0[x0][y0][cpIdx][compIdx]は、lMvd[compIdx]に等しく設定される。
-そうでない場合(refListが1に等しい場合)、compIdx=0..1において、MvdCpL1[x0][y0][cpIdx][compIdx]は、lMvd[compIdx]に等しく設定される。
【0065】
3. 本特許明細書に記載の実施形態が解決しようとする課題の例
VVCのようないくつかの符号化標準において、MVD(Motion Vector Difference)は、必ずしも1/4画素(例えば、1/4輝度サンプル)の解像度であるとは限らない。しかしながら、既存のVVC作業草案において、MVD成分をある-215~215-1の範囲に常時クリッピングするビットストリーム制約が存在する。この結果、特に、1/4画素でないMVD解像度が使用される場合(例えば、アフィンAMVPが使用される場合の1/16輝度サンプルのMVD解像度)、MVD値が不正確になる可能性がある。
【0066】
4. 例示的な実施形態および技術
以下に列記される実施形態は、一般的な概念を説明するための例であると考えられるべきである。これらの発明は狭い意味で解釈されるべきではない。さらに、これらの発明は、任意の方法で組み合わせることができる。
以下の説明において、「MVD(Motion Vector Difference)成分」は、水平方向(例えば、x軸に沿う)の動きベクトル差または垂直方向(例えば、y軸に沿う)の動きベクトル差のいずれかを示す。
サブピクセルMV(Motion Vector)表現の場合、動きベクトルは、通常、小数部分と整数部分からなる。MVの範囲を[-2,2-1]とし、Mが正の整数値であり、M=K+Lであり、Kは、MVの整数部分の範囲を表し、Lは、MVの小数部分の範囲を表し、、MVは、(1/2)輝度サンプル精度で表現されるとする。例えば、HEVCにおいて、K=13、L=2であり、従って、M=K+L=15である。一方、VVCにおいて、K=13、L=4であり、M=K+L=17である。
【0067】
1.MVD成分の範囲は、コーデックの許容可能なMVD解像度/精度に依存してよいことが提案される。
a)一例において、すべてのMVD成分に同じ範囲を適用してよい。
i.一例において、MVD成分の範囲は、[-2、2-1]、M=17などのMV範囲と同じである。
b)一例において、復号化されたすべてのMVD成分は、最初に予め定義された精度(1/2)輝度サンプル(例えば、L=4)にスケーリングされ、次に予め定義された範囲[-2,2-1](例えば、M=17)にクリッピングされてよい。
c)一例において、MVD成分の範囲は、コーデックで許容可能なMVD/MV解像度に依存してよい。
i.一例において、MVDの許容可能な解像度が1/16輝度サンプル、1/4輝度サンプル、1輝度サンプル、または4輝度サンプルであるとすると、MVD成分の値は、最上の解像度(例えば、これらの可能な解像度のうち1/16輝度サンプル)に従ってクリッピング/抑制されてよい。すなわち、MVDの値は、例えば、K=13,L=4として、[-2K+L,2K+L-1]の範囲となる。
【0068】
2.MVD成分の範囲は、ブロックの符号化情報に依存してよいことが提案される。
a)一例において、MVD成分の範囲の複数のセットが定義されてよい。
b)一例において、範囲は、MV予測子/MVD/MV精度に依存してよい。
i.一例において、MVD成分のMVD精度が(1/2)輝度サンプルであり(例えば、L=4,3,2,1,0,-1,-2,-3,-4など)、MVDの値は、例えば、K=13,L=4,3,2,1,0,-1,-2,-3,-4として、[-2K+L,2K+L-1]の範囲に抑制または/およびクリッピングされてよい。
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)、および/または予測モード、および/またはアフィンインターフラグに依存してよい。
ii.一例において、現在のブロックの予測モードがMODE_IBCである場合(例えば、現在のブロックがIBCモードで符号化されている場合)、MVDの値は、例えば、K=13,L=0として、[-2K+L,2K+L-1]の範囲であってよい。
iii.一例において、現在のブロックの動きモデルインデックス(例えば、仕様のMotionModelIdc)が0に等しい場合(例えば、現在のブロックが並進動きモデルを使用して予測される場合)、MVDの値は、例えば、K=13,L=2として、[-2K+L,2K+L-1]の範囲であってよい。
1.代替的に、現在のブロックの予測モードがMODE_INTERであり、かつ、affine_inter_flagが偽の場合(例えば、現在のブロックが並進動きモデルを使用して予測されている場合)、MVDの値は、例えば、K=13,L=2として、[-2K+L,2K+L-1]の範囲であってよい。
iv.一例において、現在のブロックの動きモデルインデックス(例えば、仕様のMotionModelIdc)が0に等しくない場合(例えば、現在のブロックがアフィン動きモデルを使用して予測されている場合)、MVDの値は、例えば、K=13,L=4として、[-2K+L,2K+L-1]の範囲であってよい。
1.代替的に、現在のブロックの予測モードがMODE_INTERであり、かつ、affine_inter_flagが真の場合(例えば、現在のブロックがアフィン動きモデルを使用して予測される場合)、MVDの値は、例えば、K=13,L=4として、[-2K+L,2K+L-1]の範囲であってよい。
d)復号化されたMVD成分に制約を加える代わりに,丸められたMVD値に制約を加えることが提案される。
i.一例において、適合ビットストリームは、丸められた整数MVD値が所与の範囲内にあることを満たすものとする。
1.一例において、整数MVD(復号化されたMVDが小数精度の場合、丸めが必要である)は、例えば、K=13として、[-2,2-1]の範囲にあるべきである。
【0069】
3.復号化されたMVD成分の値は、ビットストリーム制約を使用する以外に、意味解釈の間に、明示的に範囲(例えば、上述のMVD範囲)にクリッピングされてよいことが提案される。
【0070】
5. 実施形態
【0071】
5.1 実施形態#1
以下の実施形態は、セクション4の項目1の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は取り消し線で強調している。
【0072】
7.4.7.8 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0073】
【数2】
【0074】
5.2 実施形態#2
以下の実施形態は、セクション4の項目2の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は取り消し線で強調している。
【0075】
7.4.7.9 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0076】
【数3】
【0077】
5.3 実施形態#3
以下の実施形態は、セクション4の項目2の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は緑の取り消し線で強調している。
【0078】
7.4.7.10 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0079】
【数4】
【0080】
5.4 実施形態#4
以下の実施形態は、セクション4の項目2の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は緑の取り消し線で強調している。
【0081】
7.4.7.11 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0082】
【数5】
【0083】
5.5 実施形態#5
以下の実施形態は、セクション4の項目3および項目1の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は緑の取り消し線で強調している。
【0084】
7.4.7.12 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0085】
【数6】
【0086】
5.6 実施形態#6
以下の実施形態は、セクション4の項目3および項目2の方法に関するものである。
新たに追加された部分はイタリック体の太字で、VVCの作業草案から削除された部分は緑の取り消し線で強調している。
【0087】
7.4.7.13 動きベクトル差意味論
compIdx=0..1の場合、動きベクトル差lMvd[compIdx]は、以下のように導出される。
【0088】
【数7】
【0089】
MotionModelIdc[x][y]の値に基づいて、動きベクトル差は、以下のように導出される。
-MotionModelIdc[x][y]が0に等しい場合、変数MvdLX[x0][y0][compIdx])(Xが0または1)は、使用されるべきリストXベクトル成分とその予測との間の差を規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに関連する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
【0090】
【数8】
【0091】
-そうでない場合(MotionModelIdc[x][y]が0に等しくない場合)、変数MvdCpLX[x0][y0][cpIdx][compIdx](Xが0または1)は、使用されるべきリストXベクトル成分とその予測との間の差を規定する。配列インデックスx0,y0は、ピクチャの左上の輝度サンプルに関連する、考慮される符号化ブロックの左上の輝度サンプルの位置(x0,y0)を規定し、配列インデックスcpIdxは、制御点インデックスを規定する。水平方向の動きベクトル成分の差にはcompIdx=0が割り当てられ、垂直方向の動きベクトル成分にはcompIdx=1が割り当てられる。
【0092】
【数9】
【0093】
図2は、映像処理装置1000のブロック図である。装置1000は、本明細書に記載の1または複数の方法を実装するために使用されてよい。装置1000は、スマートフォン、タブレット、コンピュータ、IoT(Internet of Things)受信機等により実施されてよい。装置1000は、1または複数のプロセッサ1002、1または複数のメモリ1004、および、映像処理ハードウェ1006を含んでよい。1または複数のプロセッサ1002は、本特許明細書に記載される1または複数の方法を実装するように構成されてよい。1または複数のメモリ1004は、ここで説明される方法および技術を実装するために使用されるデータおよびコードを記憶するために使用されてよい。映像処理ハードウェア1006は、本特許明細書に記載される技術をハードウェア回路にて実装するために使用されてもよい。
【0094】
図3は、映像処理の方法の一例を示すフローチャートである。方法300は、最大許容動きベクトル解像度、最大許容動きベクトル精度、または映像領域の属性に基づいて、映像領域と映像領域のビットストリーム表現との間での変換の間、映像の映像領域に対して使用されるMVD(Motion Vector Difference)の値の範囲を判定すること(302)を含む。方法300は、MVD値を範囲内に収まるように制限することによって変換を実行する(304)ことを含む。
【0095】
以下の解決策のリストは、他の問題の中でもとりわけ、本特許明細書に記載されている技術的問題に対処できる実施形態を提供する。
【0096】
1. 映像処理方法であって、最大許容動きベクトル解像度、最大許容動きベクトル精度、または映像領域の特性に基づいて、映像領域と映像領域のビットストリーム表現との間での変換の間、映像の映像領域に対して使用されるMVD(Motion Vector Difference)値の範囲を判定することと、MVD値がこの範囲内になるように制限することにより変換を実行することと、を有する方法。
【0097】
2. 映像のすべての映像領域の変換の間、範囲が適用される、解決策1に記載の方法。
【0098】
3. 範囲は、映像領域に対する動きベクトルの範囲に等しい、解決策1~2に記載のいずれかに記載の方法。
【0099】
4. 制限することは、MVD成分を精度にスケーリングすることと、スケーリングの外れを範囲へクリッピングすることを含む、解決策1~3のいずれかに記載の方法。
【0100】
5. 映像領域の特性は、映像領域の符号化情報を含む、解決策1~4のいずれかに記載の方法。
【0101】
6. 範囲は、映像の複数の可能な範囲のセットから選択される、解決策1~5のいずれかに記載の方法。
【0102】
7. 映像領域の特性は、映像領域に使用される動きベクトル予測子の精度を含む、解決策1~4のいずれかに記載の方法。
【0103】
8. 映像領域の特性は、MVShiftの値に対応し、MVShiftは、映像領域に関連付けられた変数であり、MVShiftは、映像領域に関連付けられたaffine_inter_flag、またはamvr_flagまたはamvr_precision_flagに依存する解決策1~4のいずれかに記載の方法。
【0104】
9. 映像領域の特性は、変換に使用される符号化モードに対応する、解決策1に記載の方法。
【0105】
10. 符号化モードは、イントラブロックコピーモードであり、範囲は、[-2K+L,2K+L-1]に対応し、ここで、KおよびLは、それぞれ、MV(Motion Vector)の整数部分の範囲およびMVの小数部分の範囲を表す整数である、解決策9に記載の方法。
【0106】
11. K=13およびL=0である、解決策10に記載の方法。
【0107】
12. 映像領域の特性は、変換に使用される動きモデルに対応する、解決策1に記載の方法。
【0108】
13. 映像領域の特性は、映像領域の動きが並進モデルを使用してモデル化されることであり、その結果、範囲は、[-2K+L、2K+L-1]であると判定され、ここで、KおよびLは、それぞれ、MV(Motion Vector)の整数部分の範囲およびMVの小数部分の範囲を表す整数である、解決策1に記載の方法。
【0109】
14. K=13およびL=2である、解決策13に記載の方法。
【0110】
15. 映像領域の特性は、映像領域の動きが非並進モデルを使用してモデル化されることであり、その結果、範囲は[-2K+L、2K+L-1]であると判定され、ここで、KとLは、それぞれMV(Motion Vector)の整数部分の範囲とMVの小数部分の範囲を表す整数である、解決策1に記載の方法。
【0111】
16. K=13およびL=4である、解決策15に記載の方法。
【0112】
17. 制限することは、MVDの丸められた値を範囲に制限することを含む、解決策1に記載の方法。
【0113】
18. 映像処理方法であって、映像領域と映像領域のビットストリーム表現との間での変換の間、映像の映像領域に使用されるMVD(Motion Vector Difference)値の範囲を判定することと、変換で行われる意味解釈の間、範囲内に収まるようにMVD値に対してクリッピング動作を行うことと、を有する方法。
【0114】
19. 映像領域は、映像ブロックに対応する、解決策1~18のいずれかに記載の方法。
【0115】
20. 変換は、ビットストリーム表現から映像領域の画素値を生成することを含む、解決策1~19のいずれかに記載の方法。
【0116】
21. 変換は、映像領域の画素値からビットストリーム表現を生成することを含む、解決策1~20のいずれかに記載の方法。
【0117】
22. 例1~21の1または複数を実装するように構成されたプロセッサを備える映像処理装置。
【0118】
23. コードが記憶されたコンピュータ可読媒体であって、コードがプロセッサによって実行されることにより、プロセッサに、例1~21の1または複数に記載の方法を実装させる、コンピュータ可読媒体。
【0119】
セクション4にリストされている項目は、上記の解決策のさらなる変形例を提供する。
【0120】
図4は、映像処理の方法400の一例を示すフローチャートである。方法400は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を判定すること(402)であって、MVD成分の範囲は、[-2,2-1]であり、M=17である、ことと、MVD成分の値をMVD成分の範囲内となるように抑制すること(404)と、MVD成分の抑制された範囲に基づいて変換を実行すること(406)と、を有する。
【0121】
いくつかの例では、範囲は、コーデックの許容可能なMVD精度および/または許容可能なMV(Motion Vector)精度に適合されている。
【0122】
いくつかの例では、許容可能なMVD精度および/または許容可能なMV(Motion Vector)精度は、1/16輝度サンプル精度である。
【0123】
いくつかの例では、コーデックに複数の許容可能なMVD精度および/またはMV精度が存在する場合、MVD成分の範囲は、複数の許容可能なMVD精度および/またはMV精度の最上の精度に適合される。
【0124】
いくつかの例では、複数の許容可能なMVD精度および/またはMV精度が1/16輝度サンプル、1/4輝度サンプル、1輝度サンプル、および4輝度サンプルを含む場合、MVD成分の範囲は、1/16輝度サンプルの精度に適合される。
【0125】
いくつかの例では、MVD成分の範囲は、[-2,2-1]であると判定され、M=K+Lであり、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、MVD成分は、1/2輝度サンプル精度で表され、および/または、第1のブロックに関連付けられたMV成分の範囲は、[-2,2-1]であると判定され、M=K+Lであり、Kは、MV成分の整数部分を表すために使用されるビット数を示し、Lは、MV成分の小数部分を表すために使用されるビット数を示し、MV成分は、1/2-輝度サンプル精度で表され、M、K、Lは正の整数である。
【0126】
いくつかの例では、K=13、L=4、およびM=17である。
【0127】
いくつかの例では、MVD成分は、ビットストリームで符号化された、復号化/信号通知されたMVD成分、または復号化処理の内部シフト動作を介して特定の精度に関連付けられた変換されたMVD成分である。
【0128】
いくつかの例では、MVD成分は、水平MVD成分および垂直MVD成分を含み、水平MVD成分および垂直MVD成分は、同じ範囲を有する。
【0129】
いくつかの例では、MVD成分は、整数ビット、小数ビット、および符号ビットで表現される。
【0130】
いくつかの例では、第1のブロックに関連付けられたMVの範囲は、MVD成分の範囲と同じである。
【0131】
図5は、映像処理の方法500の一例を示すフローチャートである。方法500は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を判定することであって(502)、MVD成分の範囲は、コーデックの許容可能なMVD精度および/または許容可能なMV(Motion Vector)精度に適合される、ことと、MVD成分の値をMVD成分の範囲内に抑制すること(504)と、MVD成分の抑制された範囲に基づいて変換を実行すること(506)と、を含む。
【0132】
いくつかの例では、MVD成分は、ビットストリームで符号化された復号化/信号通知されたMVD成分、または復号化処理の内部シフト動作を介して特定の精度に関連付けられた変換されたMVD成分である。
【0133】
いくつかの例では、復号化/信号通知されたMVD成分は、[-2,2-1]の範囲にあることが要求され、M=17である。
【0134】
いくつかの例では、MVD成分は、整数ビット、小数ビット、および符号ビットで表現される。
【0135】
いくつかの例では、MVD成分の範囲は、[-2,2-1]であると判定され、M=K+Lであり、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、MVD成分は、1/2輝度サンプル精度で表され、および/または、第1のブロックに関連付けられたMV成分の範囲は[-2,2-1]であると判定され、M=K+Lであり、Kは、MV成分の整数部分を表すのに使用されるビット数を示し、Lは、MV成分の小数部分を表現するために使用されるビット数を示し、MV成分は1/2輝度サンプル精度で表され、M、K、Lは、正の整数である。
【0136】
いくつかの例では、すべての復号化されたMVD成分の値は、まず1/2輝度サンプル精度にスケーリングされ、次にMVD成分の範囲[-2,2-1]にクリッピングされる。
【0137】
いくつかの例では、コーデックに複数の許容可能なMVD精度および/またはMV精度が存在する場合、MVD成分の範囲は、複数の許容可能なMVD精度および/またはMV精度の最上の精度に適合される。
【0138】
いくつかの例では、複数の許容可能なMVD精度および/またはMV精度が1/16輝度サンプル精度、1/4輝度サンプル精度、1輝度サンプル精度、および4輝度サンプル精度を含む場合、MVD成分の範囲は、1/16輝度サンプル精度に適合され、MVD成分の値は、範囲に抑制され、および/またはクリッピングされる。
【0139】
いくつかの例では、K=13、L=4、およびM=17である。
【0140】
いくつかの例では、MVD成分は、水平MVD成分および垂直MVD成分を含み、水平MVD成分および垂直MVD成分は、同じ範囲を有する。
【0141】
いくつかの例では、MVの範囲は、MVD成分の範囲と同じである。
【0142】
図6は、映像処理の方法600の一例を示すフローチャートである。方法600は、映像の第1のブロックと第1のブロックのビットストリーム表現との間での変換のために、第1のブロックに関連付けられたMVD(Motion Vector Difference)成分の範囲を、第1のブロックの符号化情報に基づいて判定すること(602)と、MVD成分の値をMVD成分の範囲内となるように抑制すること(604)と、抑制されたMVD成分に基づいて変換を実行すること(606)と、を含む。
【0143】
いくつかの例では、MVD成分の範囲は、MVD成分の範囲の複数のセットを含む。
【0144】
いくつかの例では、符号化情報は、MV(Motion Vector)予測子の精度、MVD成分の精度、およびMVの精度のうちの少なくとも1つを含む。
【0145】
いくつかの例では、MVD成分のMVD精度が1/2輝度サンプルである場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、Kは、MVD成分の整数部分を表すために使用するビット数を示し、Lは、MVD成分の小数部分を表すためのビット数を示し、KとLは正の整数である。
【0146】
いくつかの例では、Kは13であり、Lは4,3,2,1,0、-1、-2、-3、および-4のうちの1つである。
【0147】
いくつかの例では、符号化情報は、MVDに関連付けられた変数MvShiftを含み、変数MvShiftの導出は、AFFINEが使用されるか否か、および/または、AMVR(Adaptive Motion Vector Resolution)が使用されるか否か、および/または、AMVRの精度、および/または、MVDの精度、および/または、MMVD(MMerge mode with Motion Vector Difference)情報、および/または、第1のブロックの予測モードに依存する。
【0148】
いくつかの例では、変数MvShiftは、符号化情報におけるinter_affine_flag、amvr_flag、およびamvr_precision_idxを含む1または複数の構文要素から導出される。
【0149】
いくつかの例では、変数MvShiftは、符号化情報におけるinter_affine_flag、amvr_flag、amvr_precision_idx、sps_fpel_mmvd_enabled_flag、ph_fpel_mmvd_enabled_flag、mmvd_distance_idx、およびCuPredModeを含む1または複数の構文要素から導出される。
【0150】
いくつかの例では、符号化情報は、第1のブロックの符号化モード、動きモード、および予測モード、および符号化情報でAFFIN/AMVRが使用されるかどうかを示す1または複数の変数および/または構文要素を含む。
【0151】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがIBCモードで符号化されていることを示すMODE_IBCである場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0152】
いくつかの例では、K=13、およびL=0である。
【0153】
いくつかの例では、第1のブロックの動きモデルのインデックスが0に等しい場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0154】
いくつかの例では、K=13、およびL=2である。
【0155】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがMODE_INTERであり、かつ、affine_inter_flagの変数が偽である場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0156】
いくつかの例では、K=13、およびL=2である。
【0157】
いくつかの例では、第1のブロックの動きモデルのインデックスが0に等しくない場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、Kは、MVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用するされるビット数を示し、KおよびLは正の整数である。
【0158】
いくつかの例では、K=13、およびL=4である。
【0159】
いくつかの例では、第1のブロックの予測モードが、第1のブロックがMODE_INTERであり、かつ、affine_inter_flagの変数が真である場合、MVD成分の範囲は、[-2K+L,2K+L-1]の範囲であると判定され、MVP成分の値は、範囲内になるように抑制および/またはクリッピングされ、KはMVD成分の整数部分を表すために使用されるビット数を示し、Lは、MVD成分の小数部分を表すために使用されるビット数を示し、KおよびLは正の整数である。
【0160】
いくつかの例では、K=13、およびL=4である。
【0161】
いくつかの例では、復号化されたMVD成分が小数精度である場合、復号化されたMVD成分は、整数MVD成分に丸められる。
【0162】
いくつかの例では、丸められた整数MVD成分は、[-2、2-1]の範囲にあり、K=13である。
【0163】
いくつかの例では、復号化されたすべてのMVD成分の値は、ビットストリーム制約を使用する以外の意味解釈中にMVD成分の範囲に明示的にクリッピングされる。
【0164】
いくつかの例では、変換は、ビットストリーム表現から映像の第1のブロックを生成する。
【0165】
いくつかの例では、変換は、映像の第1のブロックからビットストリーム表現を生成する。
【0166】
この本特許明細書の例のリストでは、変換という用語は、現在の映像ブロックのビットストリーム表現の生成、またはビットストリーム表現からの現在の映像ブロックの生成を指す場合がある。ビットストリーム表現は、連続するビットのグループを表す必要はなく、ヘッダフィールドまたは符号化された画素値情報を表すコード名に含まれるビットに分割できる。
【0167】
上記の例では、適用可能性の規則は予め定義されており、エンコーダとデコーダに認識されている場合がある。
【0168】
本特許明細書に記載されているように、開示された技術は、映像エンコーダまたはデコーダで実施されて、イントラ符号化における差分符号化モードの使用に関する考慮事項の様々な実装規則の使用を含む技術を使用して圧縮効率を改善し得ることが理解されよう。
【0169】
本特許明細書に記載された開示された、およびその他の解決策、実施例、実施形態、モジュール、および機能動作の実装形態は、本特許明細書に開示された構造およびその構造的等価物を含め、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、若しくはハードウェアで実施されてもよく、またはそれらの1または複数の組み合わせで実施してもよい。開示された、およびその他の実施形態は、1または複数のコンピュータプログラムプロダクト、すなわち、データ処理装置によって実装されるため、またはデータ処理装置の動作を制御するために、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1または複数のモジュールとして実施することができる。このコンピュータ可読媒体は、機械可読記憶デバイス、機械可読記憶基板、メモリデバイス、機械可読伝播信号をもたらす物質の組成物、またはこれらの1または複数の組み合わせであってもよい。「データ処理装置」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサ、若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を含む。この装置は、ハードウェアの他に、当該コンピュータプログラムの実行環境を作るコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1または複数の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成した信号、例えば、機械で生成した電気、光、または電磁信号であり、適切な受信装置に送信するための情報を符号化するために生成される。
【0170】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイルされた言語または解釈された言語を含む任意の形式のプログラミング言語で記述することができ、また、それは、スタンドアロンプログラムとして、またはコンピューティング環境で使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとして含む任意の形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えば、マークアップ言語文書に格納された1または複数のスクリプト)に記録されていてもよいし、当該プログラム専用の単一のファイルに記憶されていてもよいし、複数の調整ファイル(例えば、1または複数のモジュール、サブプログラム、またはコードの一部を格納するファイル)に記憶されていてもよい。1つのコンピュータプログラムを、1つのサイトに位置する1つのコンピュータ、または複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータで実行させるように展開することも可能である。
【0171】
本特許明細書に記載された処理およびロジックフローは、入力データ上で動作し、出力を生成することによって機能を実行するための1または複数のコンピュータプログラムを実行する1または複数のプログラマブルプロセッサによって行うことができる。処理およびロジックフローはまた、特定用途のロジック回路、例えば、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって行うことができ、装置はまた、特別目的のロジック回路として実装することができる。
【0172】
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用および専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの任意の1または複数のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1または複数のメモリデバイスとである。一般的に、コンピュータは、データを記憶するための1または複数の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクを含んでもよく、またはこれらの大容量記憶デバイスからデータを受信するか、またはこれらにデータを転送するように動作可能に結合されてもよい。しかしながら、コンピュータは、このようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含み、例えば、EPROM、EEPROM、フラッシュ記憶装置、磁気ディスク、例えば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスク等の半導体記憶装置を含む。プロセッサおよびメモリは、特定用途のロジック回路によって補完されてもよく、または特定用途のロジック回路に組み込まれてもよい。
【0173】
本特許明細書は多くの詳細を含むが、これらは、任意の主題の範囲または特許請求の範囲を限定するものと解釈されるべきではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明と解釈されるべきである。本特許明細書において別個の実施形態のコンテキストで説明されている特定の特徴は、1つの例において組み合わせて実装してもよい。逆に、1つの例のコンテキストで説明された様々な特徴は、複数の実施形態において別個にまたは任意の適切なサブコンビネーションで実装してもよい。さらに、特徴は、特定の組み合わせで作用するものとして上記に記載され、最初にそのように主張されていてもよいが、主張された組み合わせからの1または複数の特徴は、場合によっては、組み合わせから抜粋されることができ、主張された組み合わせは、サブコンビネーションまたはサブコンビネーションのバリエーションに向けられてもよい。
【0174】
同様に、動作は図面において特定の順番で示されているが、これは、所望の結果を達成するために、このような動作が示された特定の順番でまたは連続した順番で行われること、または示された全ての動作が行われることを必要とするものと理解されるべきではない。また、本特許明細書に記載されている例における様々なシステムの構成要素の分離は、全ての実施形態においてこのような分離を必要とするものと理解されるべきではない。
【0175】
いくつかの実装形態および例のみが記載されており、この特許文献に記載され図示されているコンテンツに基づいて、他の実施形態、拡張および変形が可能である。
図1
図2
図3
図4
図5
図6