(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-09
(45)【発行日】2023-03-17
(54)【発明の名称】部分的な位置に基づく差分計算
(51)【国際特許分類】
H04N 19/70 20140101AFI20230310BHJP
H04N 19/503 20140101ALI20230310BHJP
H04N 19/593 20140101ALI20230310BHJP
H04N 19/52 20140101ALI20230310BHJP
【FI】
H04N19/70
H04N19/503
H04N19/593
H04N19/52
(21)【出願番号】P 2021525770
(86)(22)【出願日】2019-11-20
(86)【国際出願番号】 CN2019119634
(87)【国際公開番号】W WO2020103852
(87)【国際公開日】2020-05-28
【審査請求日】2021-05-12
(31)【優先権主張番号】PCT/CN2018/116371
(32)【優先日】2018-11-20
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】PCT/CN2019/070062
(32)【優先日】2019-01-02
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】PCT/CN2019/072060
(32)【優先日】2019-01-16
(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)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リュウ,ホンビン
(72)【発明者】
【氏名】ザン,リー
(72)【発明者】
【氏名】ザン,カイ
(72)【発明者】
【氏名】シュイ,ジィジォン
(72)【発明者】
【氏名】ワン,ユエ
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2020/186119(WO,A1)
【文献】Semih Esenlik, et al.,CE9: DMVR with Bilateral Matching (Test2.9),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-K0217_v1,11th Meeting: Ljubljana, SI,2018年07月,pp.1-5
【文献】Xiaoyu Xiu, et al.,CE10-related: Simplification on combined inter and intra prediction (CIIP),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0327_r1,14th Meeting: Geneva, CH,2019年03月,pp.1-5
【文献】Benjamin Bross, Jianle Chen, and Shan Liu,Versatile Video Coding (Draft 7),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P2001-vE (version 14),16th Meeting: Geneva, CH,2019年11月14日,pp.156-158,209-213,232-238,263-266,283-286
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオ処理の方法であって、
現在のブロックとビットストリームとの間の変換のために、第1ツール及び第2ツールが前記現在のブロックによって両方とも使用されないことを指示する規則に基づいて、前記第1ツール
を有効にすべきかどうかを決定するステップと、
前記決定に基づいて、前記現在のブロックと前記ビットストリームとの間の変換を実行するステップと
を有し、
前記第1ツール及び前記第2ツールのうちの一方は、前記現在のブロックに関する動き情報の精緻化を導出するためのデコーダ側動きベクトル導出ツールであり、
前記第1ツール及び前記第2ツールのうちの他方は
、インター及びイントラ複合予測ツールを有
し、重みペアが前記インター及びイントラ複合予測ツールのために決定され、前記重みペアは、ブロックのインター予測信号のための第1重み及び当該ブロックのイントラ予測信号のための第2重みを含み、当該ブロックの予測信号が、前記イントラ予測信号と前記インター予測信号との加重和に少なくとも基づいて生成され、
前記デコーダ側動きベクトル導出ツールは、前記インター及びイントラ複合予測ツールが前記現在のブロックに使用されるとの決定があると無効にされる、
方法。
【請求項2】
前記第1ツール及び前記第2ツールのうちの前記他方は、動きベクトル差を表す第1パラメータと、基本候補を示す第2パラメータとを含む動きベクトル表現を有するMMVDを更に有し、
前記第1パラメータは、動きの大きさ及び動きの方向を有する、
請求項1に記載の方法。
【請求項3】
前記デコーダ側動きベクトル導出ツールは、前記現在のブロックがMMVDによりコーディングされているとの決定があると無効にされる、
請求項
2に記載の方法。
【請求項4】
前記第1ツール及び前記第2ツールのうちの前記他方は、ブロックを2つのパーティションに分割し、該2つのパーティションのうちの少なくとも一方が非正方形且つ非長方形である分割スキームを有する幾何学的パーティショニングツールを更に有する、
請求項1乃至3のうちいずれか一項に記載の方法。
【請求項5】
前記幾何学的パーティショニングツールは三角予測ツールである、
請求項
4に記載の方法。
【請求項6】
前記デコーダ側動きベクトル導出ツールは、デコーダ側動きベクトル精緻化ツールを有する、
請求項1乃至
3のうちいずれか一項に記載の方法。
【請求項7】
前記デコーダ側動きベクトル導出ツールは、双方向オプティカルフローツールを有する、
請求項1乃至
3のうちいずれか一項に記載の方法。
【請求項8】
前記第1ツールは、前記デコーダ側動きベクトル導出ツールであり、前記変換は、
前記現在のブロックを少なくとも1つのサブブロックに分割するステップと、
前記現在のブロック内のサブブロックと関連付けられた2つの参照サブブロック間の差を該参照サブブロックの代表位置に基づいて計算するステップと、
前記差に基づいて前記動き情報の前記精緻化を導出するステップと
を有する、
請求項1乃至
7のうちいずれか一項に記載の方法。
【請求項9】
前記差は、前記第1ツールの早期終了段階で計算され
、前記差は、前記第1ツールを終了すべきかどうかを決定するために使用される、
請求項
8に記載の方法。
【請求項10】
前記差を計算するステップは、2つの参照サブブロックの特定の行の差を計算するステップを有する、
請求項
8又は
9に記載の方法。
【請求項11】
前記特定の行は、N行ごとの1つの行から成り、Nは1よりも大きい、
請求項
10に記載の方法。
【請求項12】
Nは2に等しい、
請求項
11に記載の方法。
【請求項13】
前記代表位置は、所定のストラテジを使用することによって選択される、
請求項
8乃至
12のうちいずれか一項に記載の方法。
【請求項14】
前記差に基づいて前記動き情報の前記精緻化を導出するステップは、
前記サブブロックについて前記差を求めるよう前記参照サブブロックの前記代表位置について計算された差を合計するステップと、
前記サブブロックについての前記差を用いて前記動き情報の前記精緻化を導出するステップと
を有し、
前記サブブロックについての前記差は、前記代表位置の絶対差分和(SAD)を含む、
請求項
8乃至
13のうちいずれか一項に記載の方法。
【請求項15】
前記変換は、前記現在のブロックを前記ビットストリームにエンコーディングすることを含む、
請求項1乃至
14のうちいずれかに記載の方法。
【請求項16】
前記変換は、前記現在のブロックを前記ビットストリームからデコーディングすることを含む、
請求項1乃至
14のうちいずれかに記載の方法。
【請求項17】
ビデオデータを処理する装置であって、
プロセッサと、命令を有する非一時的なメモリとを有し、
前記命令は、前記プロセッサによる実行時に、該プロセッサに、
現在のブロックとビットストリームとの間の変換のために、第1ツール及び第2ツールが前記現在のブロックによって両方とも使用されないことを指示する規則に基づいて、前記第1ツール
を有効にすべきかどうかを決定するステップと、
前記決定に基づいて、前記現在のブロックと前記ビットストリームとの間の変換を実行するステップと
を実行させ、
前記第1ツール及び前記第2ツールのうちの一方は、前記現在のブロックに関する動き情報の精緻化を導出するためのデコーダ側動きベクトル導出ツールであり、
前記第1ツール及び前記第2ツールのうちの他方は
、インター及びイントラ複合予測ツールを有
し、重みペアが前記インター及びイントラ複合予測ツールのために決定され、前記重みペアは、ブロックのインター予測信号のための第1重み及び当該ブロックのイントラ予測信号のための第2重みを含み、当該ブロックの予測信号が、前記イントラ予測信号と前記インター予測信号との加重和に少なくとも基づいて生成され、
前記デコーダ側動きベクトル導出ツールは、前記インター及びイントラ複合予測ツールが前記現在のブロックに使用されるとの決定があると無効にされる、
装置。
【請求項18】
プロセッサに、
現在のブロックとビットストリームとの間の変換のために、第1ツール及び第2ツールが前記現在のブロックによって両方とも使用されないことを指示する規則に基づいて、前記第1ツール
を有効にすべきかどうかを決定するステップと、
前記決定に基づいて、前記現在のブロックと前記ビットストリームとの間の変換を実行するステップと
を実行させる命令を記憶しており、
前記第1ツール及び前記第2ツールのうちの一方は、前記現在のブロックに関する動き情報の精緻化を導出するためのデコーダ側動きベクトル導出ツールであり、
前記第1ツール及び前記第2ツールのうちの他方は
、インター及びイントラ複合予測ツールを有
し、重みペアが前記インター及びイントラ複合予測ツールのために決定され、前記重みペアは、ブロックのインター予測信号のための第1重み及び当該ブロックのイントラ予測信号のための第2重みを含み、当該ブロックの予測信号が、前記イントラ予測信号と前記インター予測信号との加重和に少なくとも基づいて生成され、
前記デコーダ側動きベクトル導出ツールは、前記インター及びイントラ複合予測ツールが前記現在のブロックに使用されるとの決定があると無効にされる、
非一時的なコンピュータ可読記憶媒体。
【請求項19】
ビデオのビットストリームを記憶する方法であって、
前記ビデオの現在のブロックとビットストリームとの間の変換のために、第1ツール及び第2ツールが前記現在のブロックによって両方とも使用されないことを指示する規則に基づいて、前記第1ツール
を有効にすべきかどうかを決定するステップと、
前記決定に基づいて前記現在のブロックが前記ビットストリームを生成するステップと、
前記ビットストリームを非一時的なコンピュータ可読記録媒体に記憶するステップと
を有し、
前記第1ツール及び前記第2ツールのうちの一方は、前記現在のブロックに関する動き情報の精緻化を導出するためのデコーダ側動きベクトル導出ツールであり、
前記第1ツール及び前記第2ツールのうちの他方は
、インター及びイントラ複合予測ツールを有
し、重みペアが前記インター及びイントラ複合予測ツールのために決定され、前記重みペアは、ブロックのインター予測信号のための第1重み及び当該ブロックのイントラ予測信号のための第2重みを含み、当該ブロックの予測信号が、前記イントラ予測信号と前記インター予測信号との加重和に少なくとも基づいて生成され、
前記デコーダ側動きベクトル導出ツールは、前記インター及びイントラ複合予測ツールが前記現在のブロックに使用されるとの決定があると無効にされる、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
適用可能な特許法、及び/又はパリ条約に従う規則の下で、本願は、2018年11月20日付けで出願された国際特許出願第PCT/CN2018/116371号、2019年1月2日付けで出願された国際特許出願第PCT/CN2019/070062号、及び2019年1月16日付けで出願された国際特許出願第PCT/CN2019/072060に対する優先権及びその利益を適時請求するようなされる。上記の国際特許出願の全体の開示は、本願の開示の部分として参照により援用される。
【0002】
本特許文献は、ビデオコーディング技術、デバイス及びシステムに関する。
【背景技術】
【0003】
動き補償(Motion Compensation,MC)は、カメラ及び/又はビデオ内の対象物の動きを捕らえることによって、前の及び/又は将来のフレームを考慮して、ビデオ内のフレームを予測するビデオ処理の技術である。動き補償は、ビデオ補償のためのビデオデータのエンコーディング/デコーディングにおいて使用され得る。
【発明の概要】
【0004】
本明細書は、ビデオコーディング及びデコーディングにおける動き補償の使用に関する方法、システム、及びデバイスを開示する。
【0005】
一例となる態様では、ビデオ処理の方法が開示される。方法は、ビデオの現在のブロックと現在のブロックのビットストリーム表現との間の変換中に、現在のブロックと関連付けられた2つの参照ブロック間の差、又は現在のブロック内のサブブロックと関連付けられた2つの参照サブブロック間の差を、参照ブロックの代表位置又は参照サブブロックの代表位置に基づいて計算するステップと、差に基づいて変換を実行するステップとを有する。
【0006】
異例となる態様では、ビデオ処理の方法が開示される。方法は、ビデオの現在のブロックが特定のコーディングモードを用いてコーディングされているとの決定に基づいて、現在のブロックのためのデコーダ側動きベクトル導出(Decoder side Motion Vector Derivation,DMVD)ツールの選択的有効化に関して判断するステップであり、DMVDツールは、ビデオのビットストリーム表現において伝えられた動き情報の精緻化を導出する、ステップと、判断に基づいて現在のブロックとビットストリーム表現との間の変換を実行するステップとを有する。
【0007】
一例となる態様では、ビデオ処理方法が開示される。方法は、多段階精緻化プロセスを用いて、現在のビデオブロックのビットストリーム表現からデコーディングされた動き情報に基づいて動きベクトル情報の複数の精緻化値を生成するステップと、複数の精緻化値に基づいて現在のビデオブロックを再構成するか又は他のビデオブロックをデコーディングするステップとを含む。
【0008】
他の例となる態様では、他のビデオ処理方法が開示される。方法は、現在のブロックと現在のブロックのビットストリーム表現との間の変換のために、現在のブロックのサブブロックのための多段階精緻化プロセスと、サブブロックの2つの予測ブロック間の時間勾配変更プロセスとを実行するステップであり、多段階精緻化プロセスを用いて、現在のビデオブロックのビットストリーム表現からデコーディングされた動き情報に基づいて動きベクトル情報の複数の精緻化値が生成される、ステップと、精緻化値に基づいて現在のブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0009】
更なる他の例となる態様では、他のビデオ処理方法が開示される。方法は、現在のブロックに対して多段階デコーダ側動きベクトル精緻化プロセスを用いて、最終的な動きベクトル決定するステップと、その最終的な動きベクトルを用いて現在のブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0010】
更なる他の態様では、ビデオ処理の他の方法が開示される。方法は、現在のビデオブロックと現在のビデオブロックのビットストリーム表現との間の変換中に、現在のビデオブロックの異なるサブブロックに複数の異なる動きベクトル精緻化プロセスを適用するステップと、複数の異なる動きベクトル精緻化プロセスから生成された現在のビデオブロックの最終的な動きベクトルを用いて、現在のビデオブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0011】
更なる他の態様では、ビデオ処理の他の方法が開示される。方法は、現在のビデオブロックと現在のビデオブロックのビットストリーム表現との間の変換を、現在のビデオブロックがサブブロックベースのコーディングツールによりコーディングされる場合にコーディングユニット又は予測ユニットが使用するサブブロックの最大数を制限する規則を用いて実行するステップを含み、サブブロックベースのコーディングツールは、アフィンコーディング、ATMVP(Advanced Temporal Motion Vector Predictor)、双方向オプティカルフロー又はデコーダ側動きベクトル精緻化コーディングツールの1つ以上を含む。
【0012】
更なる他の例となる態様では、ビデオ処理の他の方法が開示される。方法は、現在のビデオブロックと現在のビデオブロックのビットストリーム表現との間の変換を、現在のビデオブロックがサブブロックベースのコーディングツールによりコーディングされる場合に現在のビデオブロックのクロマ成分のために現在のビデオブロックのルーマ成分とは異なったパーティショニングを使用することを定める規則を用いて実行するステップを含み、サブブロックベースのコーディングツールは、アフィンコーディング、ATMVP、双方向オプティカルフロー、又はデコーダ側動きベクトル精緻化コーディングツールの1つ以上を含む。
【0013】
更なる他の例となる態様では、ビデオ処理の他の方法が開示される。方法は、双方向オプティカルフロー(BI-directional Optical flow,BIO)技術又はデコーダ側動きベクトル精緻化(Decoder-side Motion Vector Refinement,DMVR)技術の早期終了段階で、現在のビデオブロックと関連付けられた参照ビデオブロック間の差を決定するステップと、その差に基づいて現在のビデオブロックの更なる処理を実行するステップとを含む。
【0014】
更なる他の代表的な態様では、本明細書で記載される様々な技術は、非一時的なコンピュータ可読媒体に記憶されているコンピュータプログラム製品として具現されてよい。コンピュータプログラム製品は、本明細書で記載される方法を実行するためのプログラムコードを含む。
【0015】
更なる他の代表的な態様では、ビデオデコーダ装置が、ここで記載される方法を実装してよい。
【0016】
1つ以上の実施の詳細は、添付の書類、図面及び以下の説明で明らかにされる。他の特徴は、本明細書及び図面から、並びに特許請求の範囲から、明らかである。
【図面の簡単な説明】
【0017】
【
図1】マージ候補リスト構成のための導出プロセスの例を示す。
【
図3】空間マージ候補の冗長性検査のために考慮される候補対の例を示す。
【
図4】N×2N及び2×Nのパーティションの第2PUについての位置の例を示す。
【
図5】時間マージ候補のための動きベクトルスケーリングの例示である。
【
図6】時間マージ候補C0及びC1についての候補位置の例を示す。
【
図8】動きベクトル予測候補の導出プロセスの例を示す。
【
図9】空間動きベクトル候補のための動きベクトルスケーリングの例示である。
【
図10】コーディングユニット(CU)のATMVPの例を表す。
【
図11】4つのサブブロック(A~D)を有する1つのCU及びその隣接ブロック(a~d)の例を示す。
【
図12】OBMCが適用されるサブブロックの例示である。
【
図13】ICパラメータを導出するために使用される隣接サンプルの例を示す。
【
図14】簡略化されたアフィン運動モデルの例を示す。
【
図15】サブブロックごとのアフィンMVFの例を示す。
【
図16】AF_INTERモードの動きベクトル予測子(MV)の例を示す。
【
図17】A及びBは、AF_MERGEモードの候補の例を示す。
【
図18】バイラテラルマッチングのプロセスの例を示す。
【
図19】テンプレートマッチングのプロセスの例を示す。
【
図20】フレームレートアップコンバージョン(FRUC)におけるユニラテラル動き推定(ME)の実施を表す。
【
図21】究極の動きベクトル表現(UMVE)探索プロセスの実施形態を表す。
【
図23】距離インデックス及び距離オフセットマッピングの例を示す。
【
図25】A及びBは、ブロック拡張、すなわち、a)ブロックの外のアクセス位置、b)余分のメモリアクセス及び計算を回避するために使用されるパディングなしの双方向オプティカルフロー(BIO)の例を示す。
【
図26】バイラテラルテンプレートマッチングに基づくデコーダ側動きベクトル精緻化(DMVR)を使用する例を表す。
【
図28】BIOのための繰り返し動きベクトル精緻化の例を示す。
【
図29】本明細書で記載されるビデオコーディング又はデコーディング技術を実装するハードウェアプラットフォームのブロック図である。
【
図30】本明細書で記載される方法及び技術を実装するハードウェアプラットフォームの例を示す。
【
図31】ビデオ処理の方法の例のフローチャートである。
【
図32】ビデオ処理の方法の例のフローチャートである。
【
図33】ビデオ処理の方法の例のフローチャートである。
【発明を実施するための形態】
【0018】
本明細書は、デジタルビデオエンコーダ及びデコーダに具現され得るいくつかの技術を提供する。セクション見出しは、理解を明りょうにするために本明細書中で使用されており、各セクションで開示されている技術及び実施形態の範囲をそのセクションにのみ限定するものではない。
【0019】
[1.概要]
本明細書は、ビデオコーディング技術に関係がある。具体的には、それは、ビデオコーディングにおける動き補償に関係がある。開示されている技術は、HEVCのような既存のビデオコーディング標準規格、又は完成されるべき標準規格(Versatile Video Coding(VVC))に適用されてよい。それはまた、将来のビデオコーディング標準規格又はビデオコーデックに適用可能であり得る。
【0020】
本明細書中、「ビデオ処理」という用語は、ビデオエンコーディング、ビデオデコーディング、ビデオ圧縮又はビデオ圧縮解除を指し得る。例えば、ビデオ圧縮アルゴリズムは、ビデオのピクセル表現から対応するビットストリーム表現への変換に適用されてよく、又はその逆も同様である。
【0021】
[2.導入]
ビデオコーディング標準規格は、主として、よく知られているITU-T及びISO/IEC標準規格の開発を通じて、進化してきた。ITU-Tは、H.261及びH.263を生み出し、ISO/IECは、MPEG-1及びMPEG-4 Visualを作り出し、2つの組織は共同で、H.262/MPEG-2 Video及びH264/MPEG-4 AVC(Advanced Video Coding)並びにH.265/HEVC標準規格を作り出した。H.262以降、ビデオコーディング標準規格は、ハイブリッドビデオコーディング構造に基づいており、時間予測及び変換コーディングが利用される。HEVCを越える将来のビデオコーディング技術を探るために、JVET(Joint Video Exploration Team)が2015年にVCEG及びMPEGによって共同設立された。それ以来、多くの新しい方法がJVETによって導入され、JEM(Joint Exploration Model)と名付けられた参照ソフトウェアに置かれてきた。2018年4月に、VCEG(Q6/16)とISO/IEC JTC1 SC29/WG11(MPEG)との間のJVET(Joint Video Expert Team)が、HEVCと比較してビットレート50%減を目指すVVC標準規格に取り組むために作られた。
【0022】
[2.1 HEVC/H.265でのインター予測]
各インター予測されたPUは、1つ又は2つの参照ピクチャリストのための動きパラメータを有している。動きパラメータは、動きベクトル及び参照ピクチャインデックスを含む。2つの参照ピクチャリストのうちの一方の利用はまた、inter_red_idcを用いて通知されてもよい。動きベクトルは、予測子に対してデルタとして明示的にコーディングされてよい。
【0023】
CUがスキップモードによりコーディングされている場合に、1つのPUがそのCUと関連付けられ、有意な残差係数も、コーディングされた動きベクトルデルタ又は参照ピクチャインデックスも存在しない。マージモードが指定され、これによって、現在のPUのための動きパラメータは、空間的及び時間的候補を含む隣接PUから取得される。マージモードは、スキップモードの場合だけでなく、如何なるインター予測されたPUにも適用可能である。マージモードに代わるものは、動きパラメータの明示的な伝送であり、このとき、動きベクトル(より厳密には、動きベクトル予測子と比較した動きベクトル差)、参照ピクチャリストごとの対応する参照ピクチャインデックス、及び参照ピクチャリスト利用が、各PUごとに明示的に通知される。かようなモードは、本明細書ではAdvanced Motion Vector Prediction(AMVP)と称される。
【0024】
2つの参照ピクチャリストのうちの一方が使用されるべきであることをシグナリングが示す場合に、PUはサンプルの1つのブロックから生成される。これは、「片予測」(uni-prediction)と呼ばれる。片予測は、Pスライス及びBスライスの両方に利用可能である。
【0025】
両方の参照ピクチャリストが使用されるべきであることをシグナリングが示す場合に、PUはサンプルの2つのブロックから生成される。これは、「双予測」(bi-prediction)と呼ばれる。双予測は、Bスライスにのみ利用可能である。
【0026】
以下の説明は、HEVCで定められているインター予測モードに関する詳細を提供する。説明は、マージモードから始まる。
【0027】
[2.1.1 マージモード]
[2.1.1.1 マージモードのための候補の導出]
PUがマージモードを用いて予測される場合に、マージ候補リスト内のエントリを指し示すインデックスは、ビットストリームからパースされ、動き情報を取り出すために使用される。このリストの構成は、HEVC標準規格で定められており、次の一連のステップに従って要約され得る:
●ステップ1:最初の候補の導出
○ステップ1.1:空間的候補導出
○ステップ1.2:空間的候補に対する冗長性検査
○ステップ1.3:時間的候補導出
●ステップ2:追加の候補の挿入
○ステップ2.1:双予測候補の生成
○ステップ2.2:ゼロ動き候補の挿入
【0028】
これらのステップは、
図1でも概略的に表されている。空間マージ候補導出については、最大4つのマージ候補が、5つの異なる位置にある候補の中から選択される。時間マージ候補導出については、最大1つのマージ候補が2つの候補の中から選択される。デコーダではPUごとに一定数の候補が前提とされるので、ステップ1から取得された候補の数が、スライスヘッダで通知されるマージ候補の最大数(MaxNumMergeCand)に達しない場合には、追加の候補が生成される。候補の数は一定であるから、最良のマージ候補のインデックスは、トランケーテッド・ユーナリー・バイナライゼーション(Truncated Unary binarization,TU)を用いてエンコーディングされる。CUのサイズが8に等しい場合に、現在のCUの全てのPUは、2N×2N予測ユニットのマージ候補リストと同じである単一のマージ候補リストを共有する。
【0029】
以下では、上記のステップと関連した操作が詳述される。
【0030】
[2.1.1.2 空間的候補導出]
空間マージ候補の導出では、
図2に表されている位置にある候補の中から、最大4つのマージ候補が選択される。導出の順序は、A
1、B
1、B
0、A
0、及びB
2である。位置B
2は、位置A
1、B
1、B
0、A
0のいずれのPUも(例えば、それが他のスライス又はタイルに属するために)利用可能でないか、あるいは、イントラコーディングされている場合にのみ、考慮される。位置A
1での候補が加えられた後、残りの候補の追加は、同じ動き情報を有する候補がリストから除かれることを確かにする冗長性検査に従い、それにより、コーディング効率は改善される。計算複雑性を低減するために、全ての可能な候補対が、上記の冗長性検査で考慮されるわけではない。代わりに、
図3で矢印によりリンクされた対のみが考慮され、候補は、冗長性検査に使用される対応する候補が同じ動き情報を有していない場合にのみ加えられる。重複動き情報の他の発生源は、2N×2Nとは異なったパーティションと関連付けられた「第2PU」である。一例として、
図4は、N×2N及び2N×Nの夫々の場合の第2PUを表す。現在のPUがN×2Nとして分割される場合に、位置A
1での候補は、リスト構成のために考慮されない。実際に、これを候補に加えることによって、同じ動き情報を有する2つの予測ユニットが生じる。これは、コーディングユニットにおいてただ1つのPUしか有さないためには冗長である。同様に、位置B
1は、現在のPUが2N×Nとして分割される場合に考慮されない。
【0031】
[2.1.1.3 時間的候補導出]
このステップでは、ただ1つの候補がリストに加えられる。特に、この時間マージ候補の導出では、スケーリングされた動きベクトルは、所与の参照ピクチャリスト内の現在のピクチャとのPOC差が最小であるピクチャに属する同一位置(co-located)PUに基づいて導出される。同一位置PUの導出に使用されるべき参照ピクチャリストは、スライスヘッダで明示的に通知される。時間マージ候補のためのスケーリングされた動きベクトルは、
図5の破線によって表されるように取得される。これは、POC距離tb及びtdを用いて同一位置PUの動きベクトルからスケーリングされる。ここで、tbは、現在のピクチャの参照ピクチャと現在のピクチャとの間のPOC距離であると定義され、tdは、同一位置ピクチャの参照ピクチャと同一位置ピクチャとの間のPOC差であると定義される。時間マージ候補の参照ピクチャインデックスは、ゼロに等しくセットされる。スケーリングプロセスの実際の実現は、HEVC規格で記載されている。Bスライスについては、2つの動きベクトル(1つは参照ピクチャリスト0用であり、もう1つは参照ピクチャリスト1用である)が取得され、双予測マージ候補を生成するよう結合される。
【0032】
参照フレームに属する同一位置PU(Y)では、時間的候補の位置が、
図6に表されているように、候補C
0及びC
1の間で選択される。位置C
0にあるPUが利用可能でないか、イントラコーディングされているか、あるいは、現在のCTU行の外にある場合に、位置C
1が使用される。そうでない場合には、位置C
0が時間マージ候補の導出において使用される。
【0033】
[2.1.1.4 追加候補の挿入]
空間及び時間マージ候補に加えて、2つの更なるタイプのマージ候補、すなわち、複合双予測マージ候補及びゼロマージ候補が存在する。複合双予測マージ候補は、空間及び時間マージ候補を利用することによって生成される。複合双予測マージ候補は、Bスライスにのみ使用される。複合双予測マージ候補は、最初の候補の第1参照ピクチャリスト動きパラメータを他の第2参照ピクチャリスト動きパラメータと組み合わせることによって生成される。これら2つのタプルが異なった動き仮説(hypotheses)をもたらす場合に、それらは新しい双予測候補を形成することになる。一例として、
図7は、mvL0及びrefIdxL0又はmvL1及びrefIdx1を有する原リスト(左側)内の2つの候補が、最終的なリスト(右側)に加えられる複合双予測マージ候補を生成するために使用される場合を表す。これらの追加マージ候補を生成するために考えられる組み合わせに関して多数の規則ある。
【0034】
ゼロ動き候補は、マージ候補リスト内の残りのエントリを満たして、MaxNumMergeCand容量に達するよう挿入される。これらの候補は、ゼロ空間変位と、ゼロから始まって、新しいゼロ動き候補がリストに加えられるたびに増える参照ピクチャインデックスとを有している。これらの候補によって使用される参照フレームの数は、一方向予測及び双方向予測の夫々について1及び2である。最後に、これらに候補に対しては冗長性検査が実行されない。
【0035】
[2.1.1.5 並列処理のための動き推定領域]
エンコーディングプロセスを加速させるために、動き推定は並行して実行され得る。これによって、所与の領域内の全ての予測ユニットの動きベクトルは同時に導出される。空間近傍からのマージ候補の導出は、1つの予測ユニットが隣接PUから、その関連する動き推定が完了するまで、動きパラメータを導出することができないということで、並列処理を妨害する可能性がある。コーディング効率と処理レイテンシとの間のトレードオフを緩和するために、HEVCは、「log2_parallel_merge_level_minus2」シンタックス要素を用いてピクチャパラメータセットにおいてサイズが通知される動き推定領域(Motion Estimation Region,MER)を定義している。MERが定義される場合に、同じ領域内にあるマージ候補は、利用不可能とマークされるので、リスト構成において考慮されない。
【0036】
[2.1.2 AMVP]
AMVPは、動きパラメータの明示的な伝送に使用される隣接PUとの動きベクトルの空間時間相関を利用する。各参照ピクチャリストについて、動きベクトル候補リストは、左及び上にある時間的に隣接したPU位置の利用可能性を最初に確認し、冗長な候補を除いて、候補リストを一定の長さにするようゼロベクトルを加えることによって、構成される。次いで、エンコーダは、候補リストから最良の予測子を選択し、選択された候補を示す対応するインデックスを送信することができる。同様に、マージインデックスシグナリングにより、最良の動きベクトル候補のインデックスは、トランケーテッド・ユーナリーを用いてエンコーディングされる。この場合にエンコーディングされる最大値は2である(
図8を参照)。以下のセクションでは、動きベクトル予測候補の導出プロセスに関する詳細が提供される。
【0037】
図8は、動きベクトル予測候補の導出プロセスを要約する。
【0038】
[2.1.2.1 AMVP候補の導出]
動きベクトル予測では、2つのタイプの動きベクトル候補、すなわち、空間動きベクトル候補及び時間動きベクトル候補、が考えられている。空間動きベクトル候補導出については、2つの動きベクトル候補が、
図2に表されているように5つの異なった位置にある各PUの動きベクトルに基づいて最終的に導出される。
【0039】
時間動きベクトル候補導出については、2つの異なった同一位置の位置に基づいて導出される2つの候補から、1つの動きベクトル候補が選択される。空間時間候補の第1リストが生成された後、リスト内の重複した動きベクトル候補が除かれる。潜在的な候補の数が2よりも多い場合には、関連する参照ピクチャリスト内の参照ピクチャインデックスが1よりも大きい動きベクトル候補がリストから除かれる。空間時間動きベクトル候補の数が2よりも少ない場合には、追加のゼロ動きベクトル候補がリストに加えられる。
【0040】
[2.1.2.2 空間動きベクトル候補]
空間動きベクトル候補の導出では、
図2で表される位置(これらの位置は、動きマージのそれらと同じである)にあるPUから導出される5つの潜在的な候補から、最大2つの候補が考えられる。現在のPUの左側の導出順序は、A
0、A
1及びスケーリングされたA
0、スケーリングされたA
1と定義される。現在のPUの上側の導出順序は、B
0、B
1、B
2、スケーリングされたB
0、スケーリングされたB
1、スケーリングされたB
2と定義される。夫々の側について、従って、動きベクトル候補として使用され得る4つの場合が存在し、2つの場合は、空間スケーリングを使用することを必要とされず、他の2つの場合には、空間スケーリングが使用される。4つの異なる場合は、次のように簡単に述べられる。
・空間スケーリングなし
-(1)同じ参照ピクチャリスト、かつ同じ参照ピクチャインデックス(同じPOC)
-(2)異なる参照ピクチャリスト、しかし同じ参照ピクチャ(同じPOC)
・空間スケーリング
-(3)同じ参照ピクチャリスト、しかし異なる参照ピクチャ(異なるPOC)
-(4)異なる参照ピクチャリスト、かつ異なる参照ピクチャ(異なるPOC)
【0041】
空間スケーリングなしの場合が最初に確認され、その後に空間スケーリングが続く。空間スケーリングは、参照ピクチャリストにかかわらず隣接PUの参照ピクチャと現在のPUのそれとの間でPOCが異なる場合に考えられる。左の候補の全てのPUが利用不可能であるか、又はイントラコーディングされている場合に、上の動きベクトルのスケーリングが、左及び上のMV候補の並列導出を助けるよう可能にされる。そうでない場合には、空間スケーリングは、上の動きベクトルに対して可能にされない。
【0042】
空間スケーリングプロセスでは、隣接PUの動きベクトルは、
図9に表されているように、時間スケーリングの場合と同じようにしてスケーリングされる。主な違いは、現在のPUの参照ピクチャリスト及びインデックスが入力として与えられる点であり、実際のスケーリングプロセスは時間スケーリングのそれと同じである。
【0043】
[2.1.2.3 時間動きベクトル候補]
参照ピクチャインデックス導出は別として、時間マージ候補の導出のための全てのプロセスは、空間動きベクトル候補の導出(
図6を参照)の場合と同じである。参照ピクチャインデックスはデコーダへ通知される。
【0044】
[2.2 JEMにおける新しいインター予測方法]
[2.2.1 サブCUベースの動きベクトル予測]
QTBTによるJEMでは、各CUは、予測方向ごとに多くてもひと組の動きパラメータを有することができる。2つのサブCUレベル動きベクトル予測方法が、大きいCUをサブCUに分割し、大きいCUの全てのサブCUについて動き情報を導出することによって、エンコーダにおいて考えられている。代替時間動きベクトル予測(Alternative Temporal Motion Vector Prediction,ATMVP)方法は、各CUが、同一位置の参照ピクチャにある現在のCUよりも小さい複数のブロックから複数の組の動き情報をフェッチすることを可能にする。空間時間動きベクトル予測(Spatial-Temporal Motion Vector Prediction,STMVP)方法では、サブCUの動きベクトルは、時間動きベクトル予測子及び空間隣接動きベクトルを使用することによって再帰的に導出される。
【0045】
サブCU動き予測のためのより正確な運動場を保つために、参照フレームのための動き圧縮は現在使用不可能である。
【0046】
[2.2.1.1 代替時間動きベクトル予測]
代替時間動きベクトル予測(ATMVP)方法では、動きベクトルの時間動きベクトル予測(Temporal Motion Vector Prediction,TMVP)は、現在のCUよりも小さいブロックから複数の組の動き情報(動きベクトル及び参照インデックスを含む)をフェッチすることによって、変更される。
図10に示されるように、サブCUは、正方N×Nブロックである(Nはデフォルトで4にセットされる)。
【0047】
ATMVPは、2つのステップでCU内のサブCUの動きベクトルを予測する。最初のステップは、いわゆる時間ベクトルにより参照ピクチャ内の対応するブロックを識別することである。参照ピクチャは、モーションソースピクチャ(motion source picture)と呼ばれる。第2のステップは、
図10に示されるように、現在のCUをサブCUに分け、各サブCUに対応するブロックから各サブCUの動きベクトル及び参照インデックスを取得することである。
【0048】
最初のステップで、参照ピクチャ及び対応するブロックは、現在のCUの空間隣接ブロックの動き情報によって決定される。隣接ブロックの反復的な走査プロセスを回避するために、現在のCUのマージ候補リスト内の最初のマージ候補が使用される。最初の利用可能な動きベクトル及びその関連する参照インデックスが、時間ベクトルと、モーションソースピクチャへのインデックスとであるようセットされる。このようにして、ATMVPでは、対応するブロックは、TMVPと比較して、より正確に識別され得る。ここで、対応するブロック(時々、同一位置ブロックと呼ばれる)は、現在のCUに対して右下又は中心位置に常にある。
【0049】
第2のステップで、サブCUの対応するブロックは、モーションソースピクチャの時間ベクトルによって、現在のCUの座標にその時間ベクトルを加えることによって識別される。各サブCUについて、その対応するブロック(中心サンプルをカバーする最小モーショングリッド)の動き情報が、当該サブCUの動き情報を導出するために使用される。対応するN×Nブロックの動き情報が識別された後、それは、HEVCのTMVPと同じように、現在のサブCUの動きベクトル及び参照インデックスに変換される。このとき、動きスケーリング及び他のプロシージャが適用される。例えば、デコーダは、低遅延条件(すなわち、現在のピクチャの全ての参照ピクチャのPOCが現在のピクチャのPOCよりも小さい)が満足されるかどうかを確認し、場合により、各サブCUについて動きベクトルMVy(Xは0又は1に等しく、Yは1-Xに等しい)を予測するために動きベクトルMVx(参照ピクチャリストXに対応する動きベクトル)を使用する。
【0050】
[2.2.1.2 空間時間動きベクトル予測]
この方法では、サブCUの動きベクトルは、ラスタ走査順序に従って、再帰的に導出される。
図11は、この概念を表す。4つの4×4サブCU A、B、C及びDを含む8×8CUを考えるとする。現在のフレーム内の隣接する4×4ブロックは、a、b、c及びdと表記される。
【0051】
サブCU Aの動き導出は、その2つの空間近傍を識別することによって開始する。第1近傍は、サブCU Aの上にあるN×Nブロック(ブロックc)である。このブロックcが利用不可能であるか、又はイントラコーディングされている場合に、サブCU Aの上にある他のN×Nブロックが確認される(ブロックcから始まって、左から右へ)。第2近傍は、サブCU Aの左にあるブロック(ブロックb)である。ブロックbが利用不可能であるか、又はイントラコーディングされている場合に、サブCU Aの左にある他のブロックが確認される(ブロックbから始まって、上から下へ)。各リストについて隣接ブロックから取得された動き情報は、所与のリストについての第1参照フレームにスケーリングされる。次に、サブブロックAの時間動きベクトル予測子(TMVP)が、HEVCで定められているTMVP導出の同じプロシージャに従うことによって、導出される。位置Dでの同一位置ブロックの動き情報は、それに応じてフェッチされスケーリングされる。最後に、動き情報を取り出しスケーリングした後、全ての利用可能な動きベクトル(最大3つ)は、参照リストごとに別々に平均化される。平均化された動きベクトルは、現在のサブCUの動きベクトルとして割り当てられる。
【0052】
図11は、4つのサブブロック(A~D)を有する1つのCU及びその隣接ブロック(a~d)の例を示す。
【0053】
[2.2.1.3 サブCU動き予測モードシグナリング]
サブCUモードは、追加のマージ候補として使用可能であり、モードを通知するために追加のシンタックス要素は必要とされない。2つの追加マージ候補が、ATMVPモード及びSTMVPモードを表すために各CUのマージ候補に加えられる。ATMVP及びSTMVPが使用可能であることをシーケンスパラメータセットが示す場合には、最大7つのマージ候補が使用される。追加マージ候補のエンコーディングロジックは、HMにおけるマージ候補の場合と同じである。これは、P又はBスライス内の各CUについて、2つ以上のRDチェックが2つの追加マージ候補のために必要とされることを意味する。
【0054】
JEMでは、マージインデックスの全ビンが、CABACによってコンテキストコーディングされる。一方、HEVCでは、最初のビンのみがコンテキストコーディングされ、残りのビンは、コンテキストバイパスコーディングされる。
【0055】
[2.2.2 適応動きベクトル差解像度]
HEVCでは、動きベクトル差(Motion Vector Difference(s),MVD)(PUの動きベクトルと予測された動きベクトルの間の差)が、スライスヘッダにおいて、user_integer_mv_flagが0に等しい場合に、4分の1ルーマサンプルの単位で通知される。JEMでは、局所適応動きベクトル解像度(Locally Adaptive Motion Vector Resolution,LAMVR)が導入される。JEMでは、MVDは、4分の1ルーマサンプル、整数ルーマサンプル又は4ルーマサンプルの単位でコーディングされ得る。MVD解像度は、コーディングユニット(CU)レベルで制御され、MVD解像度フラグは、少なくとも1つの非ゼロMVD成分を有している各CUについて条件付きで通知される。
【0056】
少なくとも1つの非ゼロMVD成分を有しているCUについては、第1フラグが、4分の1ルーマサンプルMV精度がそのCUで使用されるかどうかを示すために通知される。4分の1ルーマサンプルMV精度が使用されないことを第1フラグ(1に等しい)が示す場合に、他のフラグが、整数ルーマサンプルMV精度又は4ルーマサンプルMV精度が使用されるかどうかを示すために通知される。
【0057】
CUの第1MVD解像度フラグがゼロであるか、あるいは、CUについてコーディングされていない(CU内の全てのMVDがゼロであることを意味する)場合に、4分の1ルーマサンプルMV解像度がそのCUに対して使用される。CUが整数ルーマサンプルMV精度又は4ルーマサンプルMV精度を使用する場合に、CUのAMVP候補内のMVPは、対応する精度に丸められる。
【0058】
エンコーダでは、どのMVD解像度がCUのために使用されるべきかを決定するために、CUレベルのRDチェックが使用される。すなわち、CUレベルのRDチェックは、各MVD解像度について3回実行される。エンコーダの速度を加速させるために、以下のエンコーディングスキームがJEMでは適用される。
・通常の4分の1ルーマサンプルMV解像度によるCUのRDチェック中に、現在のCUの動き情報(整数ルーマサンプル精度)が格納される。格納された動き情報(丸め後)、整数ルーマサンプル及び4ルーマサンプルMVD解像度による同じCUについてのRDチェック中に更なる小範囲動きベクトル精緻化のための開始点として使用され、それにより、時間がかかる動き推定プロセスは3回繰り返されない。
・4ルーマサンプルMVD解像度によるCUのRDチェックは、条件付きで呼び出される。あるCUについて、整数ルーマサンプルMVD解像度のRDコストが4分の1ルーマサンプルMVD解像度のそれよりもずっと大きい場合に、そのCUについての4ルーマサンプルMVD解像度のRDチェックはスキップされる。
【0059】
[2.2.3 より高い動きベクトル格納精度]
HEVCでは、動きベクトル精度は、4分の1ペル(4:2:0ビデオの場合に、4分の1ルーマサンプル及び8分の1クロマサンプル)である。JEMでは、内部動きベクトル格納及びマージ候補の精度は、1/16ペルまで高まる。より高い動きベクトル精度(1/16ペル)は、スキップ/マージモードによりコーディングされたCUの動き補償インター予測で使用される。通常のAMVPモードによりコーディングされたCUについては、整数ペル又は4分の1ペルのどちらかの動きが使用される。
【0060】
HEVC動き補償補間フィルタと同じフィルタ長さ及び正規化係数を有するSHVCアップサンプリング補間フィルタは、更なる分数ペル位置のための動き補償補間フィルタとして使用される。クロマ成分動きベクトル精度は、JEMでは1/32サンプルであり、1/32ペル分数位置の更なる補間フィルタは、2つの隣接する1/16ペル分数位置のフィルタの平均を使用することによって導出される。
【0061】
[2.2.4 オーバーラップブロック動き補償]
オーバーラップブロック動き補償(Overlapped Block Motion Compensation,OBMC)は、従前、H.263で使用されてきた。JEMでは、H.263とは異なって、OBMCは、CUレベルでのシンタックスを用いてオン及びオフを切り替えられ得る。OBMCがJEMで使用される場合に、OBMCは、CUの右及び下境界を除く全ての動き補償(Motion Compensation,MC)ブロック境界に対して実行される。更に、それは、ルーマ及びクロマの両成分に対して適用される。JEMでは、MCブロックはコーディングブロックに対応する。CUがサブCUモード(サブCUマージ、アフィン及びFRUCモードを含む)によりコーディングされる場合に、CUの各サブブロックはMCブロックである。一様にCU境界を処理するために、OBMCは、全てのMCブロック境界についてサブブロックレベルで実行される。このとき、サブブロックサイズは、
図12に表されるように、4×4に等しくセットされる。
【0062】
OBMCが現在のサブブロックに適用される場合に、現在の動きベクトルに加えて、4つの接続されている隣接サブブロックの動きベクトルも、利用可能であって現在の動きベクトルと同じでない場合に、現在のサブブロックの予測ブロックを導出するために使用される。複数の動きベクトルに基づくこれらの複数の予測ブロックは、現在のサブブロックの最終的な予測信号を生成するよう組み合わされる。
【0063】
隣接サブブロックの動きベクトルに基づく予測ブロックは、PNと表される。ここで、Nは、隣接する上、下、左及び右サブブロックのためのインデックスを示す。現在のサブブロックの動きベクトルに基づく予測ブロックは、PCと表される。PNが、現在のサブブロックに対して同じ動き情報を含む隣接サブブロックの動き情報に基づく場合に、OBMCはPNから実行されない。そうでない場合には、PNのあらゆるサンプルがPCの同じサンプルに加えられる。すなわち、PNの4つの行/列がPCに加えられる。重み係数{1/4,1/8,1/16,1/32}がPNに使用され、重み係数{3/4,7/8,15/16,31/32}がPCに使用される。例外は、PNの2つの行/列しかPCに加えられない小さいMCブロック境界ブロック(すなわち、コーディングブロックの高さ又は幅が4に等しいか、あるいは、CUがサブCUモードによりコーディングされている場合)である。この場合に、重み係数{1/4,1/8}がPNに使用され、重み係数{3/4,7/8}がPCに使用される。垂直方向で(水平方向で)隣接するサブブロックの動きベクトルに基づいて生成されたPNについては、PNのサンプル行(列)内のサンプルが、同じ重み係数でPCに加えられる。
【0064】
JEMでは、256個のルーマサンプル以下のサイズを有するCUについては、OBMCが現在のCUに適用されるかどうかを示すために、CUレベルフラグが通知される。256個のルーマサンプルよりも大きいサイズを有するか、又はAMVPモードによりコーディングされていないCUについては、OBMCがデフォルトで適用される。エンコーダで、OBMCがCUに適用される場合に、その影響は動き推定段階中に考慮される。上隣接ブロック及び左隣接ブロックの動き情報を用いてOBMCによって形成された予測信号は、現在のCUの原信号の上及び左境界を補償するために使用され、それから、通常の動き推定プロセスが適用される。
【0065】
[2.2.5 局所照射補償]
局所照射補償(Local Illumination Compensation,LIC)は、スケーリング係数a及びオフセットbを用いて、照射変化のための線形モデルに基づく。そして、それは、各インターモードコーディングされたコーディングユニット(CU)について適応的に有効又は無効にされる。
【0066】
LICがCUに適用される場合に、最小二乗誤差法が、現在のCUの隣接サンプル及びそれらの対応する参照サンプルを使用することによってパラメータa及びbを導出するために用いられる。より具体的には、
図13に表されるように、CUのサブサンプリング(2:1サブサンプリング)された隣接サンプル及び参照ピクチャ内の対応するサンプル(現在のCU又はサブCUの動き情報によって識別される)が使用される。ICパラメータは、各予測方向について別々に導出され適用される。
【0067】
CUがマージモードによりコーディングされる場合に、LICフラグは、マージモードでの動き情報コピーと同じようにして、隣接ブロックからコピーされる。そうでない場合には、LICフラグは、LICが適用されるか否かを示すよう当該CUについて通知される。
【0068】
LICがピクチャに使用可能である場合に、追加のCUレベルRDチェックが、LICがCUに適用されるか否かを決定するために必要である。LICがCUに使用可能である場合に、平均除去絶対差分和(Mean-Removed Sum of Absolute Difference,MRSAD)及び平均除去絶対アダマール変換差分和(Mean-Removed Sum of Absolute Hadamard-Transformed Difference,MR-SATD)が、SAD及びSATDの代わりに、整数ペル動き探索及び分数ペル動き探索のために夫々使用される。
【0069】
エンコーディング複雑性を低減するために、以下のエンコーディングスキームがJEMでは適用される。
・現在のピクチャとその参照ピクチャとの間に明らかな照射変化がない場合には、ピクチャ全体に対してLICは無効にされる。この状況を識別するために、現在のピクチャ及び現在のピクチャのあらゆる参照ピクチャのヒストグラムがエンコーダで計算される。現在のピクチャと現在のピクチャのあらゆる参照ピクチャとの間のヒストグラム差が所与の閾値よりも小さい場合に、LICは現在のピクチャに対して無効にされ、そうでない場合には、LICは現在のピクチャに対して有効にされる。
【0070】
[2.2.6 アフィン動き補償予測]
HEVCでは、並進運動モデル(translation motion model)しか動き補償予測(Motion Compensation Prediction,MCP)のために適用されない。一方、現実世界では、多くの種類の動き、例えば、ズームイン/アウト、回転、射影運動、及び他の不規則な動きがある。JEMでは、簡単化されたアフィン変換動き補償予測が適用される。
図14に示されるように、ブロックのアフィン運動場は、2つの制御点動きベクトルによって記述される。
【0071】
ブロックの動きベクトル場(Motion Vector Field,MVF)は、次の式によって記述される:
【数1】
【0072】
ここで、(v0x,v0y)は、左上角の制御点の動きベクトルであり、(v1x,v1y)は、右上角の制御点の動きベクトルである。
【0073】
動き補償予測を更に簡単にするために、サブブロックベースのアフィン変換予測が適用される。サブブロックサイズM×Nは、式2で見られるように導出され、このとき、MvPreは、動きベクトル分数精度(JEMでは1/16)であり、(v
2x,v
2y)は、式1に従って計算された左下制御点の動きベクトルである。
【数2】
【0074】
式2によって導出された後、M及びNは、夫々、w及びhの約数となるよう、必要に応じて下方調整されるべきである。
【0075】
各M×Nサブブロックの動きベクトルを導出するために、
図15に示されるような各サブブロックの中心サンプルの動きベクトルが式1に従って計算され、1/16分数精度に丸められる。次いで、前のセクション2.2.3で説明された動き補償補間フィルタが、導出された動きベクトルにより各サブブロックの予測を生成するために適用される。
【0076】
MCPの後、各サブブロックの高精度動きベクトルは丸められ、通常の動きベクトルと同じ精度としてセーブされる。
【0077】
JEMでは、2つのアフィン動きモード、すなわち、AF_INTERモード及びAF_MERGEモードが存在する。幅及び高さの両方が8よりも大きいCUについては、AF_INTERモードが適用され得る。CUレベルでのアフィンフラグは、AF_INTERモードが使用されるかどうかを示すためにビットストリームで通知される。このモードで、動きベクトル対{(v
0,v
1)|v
0={v
A,v
B,v
C},v
1={v
D,v
E}}を有する候補リストは、隣接ブロックを用いて構成される。
図16に示されるように、v
0は、ブロックA、B又はCの動きベクトルから選択される。隣接ブロックからの動きベクトルは、参照リストと、隣接ブロックの参照ブロックのPOC、現在のCUの参照ブロックのPOC、及び現在のCUのPOCの間の関係とに従って、スケーリングされる。そして、隣接ブロックD及びEからv
1を選択するためのアプローチは同様である。候補リストの数が2よりも小さい場合に、リストは、AMVP候補の夫々を複製することによって構成された動きベクトル対によってパディングされる。候補リストが2よりも大きい場合に、候補は最初に、隣接動きベクトルの一貫性(対候補の2つの動きベクトルの類似性)に従ってソートされ、最初の2つの候補のみが保持される。RDコストチェックは、どの動きベクトル対候補が現在のCUの制御点動きベクトル予測(Control Point Motion Vector Prediction,CPMVP)として選択されるかを決定するために使用される。そして、候補リスト内のCPMVPの位置を示すインデックスがビットストリームで通知される。現在のアフィンCUのCPMVPが決定された後、アフィン動き推定が適用され、制御点動きベクトル予測(CPMV)は求められる。次いで、CPMVとCPMVPとの差はビットストリームで通知される。
【0078】
CUがAF_MERGEモードで適用される場合に、それは、有効な隣接する再構成されたブロックからアフィンモードによりコーディングされた最初のブロックを得る。そして、候補ブロックの選択順序は、
図17Aに示されるように、左から、上、右上、左下、左上へである。隣接する左下ブロックAが
図17Bに示されるようにアフィンモードでコーディングされる場合に、ブロックAを含むCUの左上角、右上角、及び左下角の動きベクトルv
2、v
3及びv
4が導出される。そして、現在のCUの左上角の動きベクトルv
0は、v
2、v
3及びv
4に従って計算される。第2に、現在のCUの右上の動きベクトルv
1が計算される。
【0079】
現在のCUのCPMVv0及びv1が導出された後、簡単化されたアフィン運動モデル式1に従って、現在のCUのMVFが生成される。現在のCUがAF_MERGEモードによりコーディングされているかどうかを識別するために、アフィンモードでコーディングされている少なくとも1つの隣接ブロックがある場合に、アフィンフラグがビットストリームで通知される。
【0080】
[2.2.7 パターンマッチングされた動きベクトル導出]
パターンマッチングされた動きベクトル導出(Pattern Matched Motion Vector Derivation,PMMVD)モードは、フレームレートアップコンバージョン(Frame-Rate Up Conversion,FRUC)技術に基づく特別なマージモードである。このモードによれば、ブロックの動き情報は通知されず、デコーダ側で導出される。
【0081】
FRUCフラグは、CUについて、そのマージフラグが真である場合に、通知される。FRUCフラグが偽である場合に、マージインデックスが通知され、レギュラーマージモードが使用される。FRUCフラグが真である場合に、追加のFRUCモードフラグが、どの方法(バイラテラルマッチング又はテンプレートマッチング)が、ブロックの動き情報を導出するために使用されるべきかを示すために、通知される。
【0082】
エンコーダ側で、CUにFRUCマージモードを使用すべきかどうかの決定は、通常のマージ候補について行われるように、RDコスト選択に基づく。すなわち、2つのマッチングモード(バイラテラルマッチング及びテンプレートマッチング)は両方とも、RDコスト選択を使用することによってCUに対して確認される。最小コストもたらす一方が、他のCUモードと更に比較される。FRUCマッチングモードが最も効率的なものである場合に、FRUCフラグは、そのCUに対して真にセットされ、関連するマッチングモードが使用される。
【0083】
FRUCマージモードでの動き導出プロセスは2つのステップを有する。CUレベルの動き探索が最初に実行され、次いで、サブCUレベルの動き精緻化が続く。CUレベルで、バイラテラルマッチング又はテンプレートマッチングに基づいて、CU全体において初期動きベクトルが導出される。最初に、MC候補のリストが生成され、最小マッチングコストをもたらす候補が、更なるCUレベル精緻化のための開始点として選択される。次いで、開始点の周りのバイラテラルマッチング又はテンプレートマッチングに基づいて局所探索が実行され、最小マッチングコストをもたらすMVが、CU全体のMVとされる。その後に、動き情報は、導出されたCU動きベクトルを開始点として用いてサブCUレベルで更に精緻化される。
【0084】
例えば、次の導出プロセスが、W×HのCUの動き情報導出のために実行される。最初の段階で、W×HのCU全体のMVが導出される。第2の段階で、CUはM×M個のサブブロックに更に分割される。Mの値は式(3)のように計算され、Dは、JEMではデフォルトで3にセットされる予め定義された分割デプスである。次いで、各サブCUのMVが導出される。
【数3】
【0085】
図18に示されるように、バイラテラルマッチングは、2つの異なる参照ピクチャにおいて現在のCUの運動軌跡に沿って2つのブロック間の最も近い一致を見つけることによって、現在のCUの動き情報を導出するために使用される。連続した運動軌跡という前提の下で、2つの参照ブロックを指し示す動きベクトルMV0及びMV1は、現在のピクチャと2つの参照ピクチャとの間の時間距離、すなわち、TD0及びTD1に比例すべきである。特別な場合として、現在のピクチャが時間的に2つの参照ピクチャとの間にあり、現在のピクチャから2つの参照ピクチャまでの時間距離が同じである場合に、バイラテラルマッチングは、ミラーベースの双方向MVになる。
【0086】
図19に示されるように、テンプレートマッチングは、現在のピクチャ内のテンプレート(現在のCUの上及び/又は左隣接ブロック)と参照ピクチャ内のブロック(テンプレートと同じサイズ)との間の最も近い一致を見つけることによって、現在のCUの動き情報を導出するために使用される。上記のFRUCマージモードを除いて、テンプレートマッチングはAMVPモードにも適用される。JEMでは、HEVCで行われるように、AMVPは2つの候補を有している。テンプレートマッチング法によれば、新しい候補が導出される。テンプレートマッチングによって新たに導出された候補が、最初に存在しているAMVP候補と異なる場合に、それは、AMVP候補リストの一番最初に挿入され、次いで、リストサイズは2にセットされる(2番目に存在するAMVP候補を除くことを意味する)。AMVPモードに適用される場合に、CUレベル探索のみが適用される。
【0087】
[2.2.7.1 CUレベルのMV候補セット]
CUレベルでのMV候補セットは:
(i)現在のCUがAMVPモードにある場合の元のAMVP候補、
(ii)全てのマージ候補、
(iii)セクション2.2.7.3で導入される補間されたMV場におけるいくつかのMV、
(iv)上及び左隣の動きベクトル
から成る。
【0088】
バイラテラルマッチングを使用する場合に、マージ候補の夫々の有効なMVが、バイラテラルマッチングの前提によりMV対を生成するための入力として使用される。例えば、マージ候補の1つの有効なMVは、参照リストAでの(MVa,refa)である。次いで、その対となるバイラテラルMVの参照ピクチャrefbは、refa及びrefbが時間的に現在のピクチャの異なる側にあるように、他の参照リストBで見つけられる。そのようなrefbが参照リストBで利用可能でない場合に、refbは、refaとは異なる参照として決定され、現在のピクチャまでのその時間距離は、リストB内で最小のものである。refbが決定された後、MVbは、現在のピクチャとrefa、refbとの間の時間距離に基づいてMVaをスケーリングすることによって、導出される。
【0089】
補間されたMV場からの4つのMVも、CUレベル候補リストに加えられる。より具体的には、現在のCUの位置(0,0)、(W/2,0)、(0,H/2)及び(W/2,H/2)での補間されたMVが加えられる。
【0090】
FRUCがAMVPモードで適用される場合に、元のAMVP候補も、CUレベルのMV候補セットに加えられる。
【0091】
CUレベルで、AMVP CUについては最大15個のMVが、及びマージCUについては最大13個のMVが、候補リストに加えられる。
【0092】
[2.2.7.2 サブCUレベルのMV候補セット]
サブCUレベルでのMV候補セットは:
(i)CUレベル探索から決定されたMV、
(ii)上、左、左上及び右上の隣接MV、
(iii)参照ピクチャからの同一位置MVのスケーリングされたバージョン、
(iv)最大4つのATMVP候補
(v)最大4つのSTMVP候補
から成る。
【0093】
参照ピクチャからのスケーリングされたMVは、次のように導出される。両方のリスト内の全ての参照ピクチャがトラバースされる。参照ピクチャ内のサブCUの同一位置の位置にあるMVは、開始CUレベルMVの参照にスケーリングされる。
【0094】
ATMVP及びSTMVP候補は、最初の4つに制限される。
【0095】
サブCUレベルで、最大17個のMVが候補リストに加えられる。
【0096】
[2.2.7.3 補間されたMV場の生成]
フレームをコーディングする前に、補間された運動場が、ユニラテラルMEに基づいてピクチャ全体について生成される。次いで、運動場は、後に、CUレベル又はサブCUレベルのMV候補として使用されてよい。
【0097】
最初に、両方の参照リスト内の各参照ピクチャの運動場が、4×4ブロックレベルでトラバースされる。各4×4ブロックについて、ブロックに関連した動きが現在のピクチャ内の4×4ブロックを通り(
図20に図示)、ブロックが如何なる補間された動きも割り当てられていない場合に、参照ブロックの動きは、時間距離TD0及びTD1に従って現在のピクチャにスケーリングされ(HEVCにおけるTMVPのMVスケーリングのそれと同様)、スケーリングされた動きは、現在のフレーム内のブロックに割り当られる。スケーリングされたMVが4×4ブロックに割り当てられない場合に、ブロックの動きは、補間された運動場で利用不可としてマークされる。
【0098】
[2.2.7.4 補間及びマッチングコスト]
動きベクトルが分数サンプル位置を指し示す場合に、動き補償された補間が必要とされる。複雑性を低減するために、双線形補間が、通常の8タップHEVC補間の代わりに、バイラテラルマッチング及びテンプレートマッチングの両方のために使用される。
【0099】
マッチングコストの計算は、異なるステップで少し異なっている。CUレベルで候補セットから候補を選択する場合に、マッチングコストは、バイラテラルマッチング又はテンプレートマッチングの絶対差分和(SAD)である。開始MVが決定された後、サブCUレベル探索でのバイラテラルマッチングのマッチングコストCは、次のように計算される:
C=SAD+w・(|MVx-MVx
S|+|MVy-MVyS|)
【0100】
ここで、wは、経験的に4にセットされる重み係数であり、MV及びMVSは、夫々、現在のMV及び開始MVを示す。SADは、サブCUレベル探索でのテンプレートマッチングのマッチングコストとして依然として使用される。
【0101】
FRUCモードでは、MVは、ルーマサンプルのみを使用することによって導出される。導出された動きは、MCインター予測のためにルーマ及びクロマの両方に使用されることになる。MVが決定された後、最終的なMCが、ルーマのための8タップ補間フィルタ及びクロマのための4タップ補間フィルタを用いて実行される。
【0102】
[2.2.7.5 MV精緻化]
MV精緻化は、バイラテラルマッチングコスト又はテンプレートマッチングコストの基準によるパターンベースのMV探索である。JEMでは、2つの探索パターン、すなわち、夫々CUレベル及びサブCUレベルでのMV精緻化のためのUnrestricted Center-Biased Diamond Search(UCBDS)及び適応交差探索(adaptive cross search)、がサポートされる。CU及びサブCU両方のレベルのMV精緻化のために、MVは、4分の1ルーマサンプルMV精度で直接探索され、この後に、8分の1ルーマサンプルMV精緻化が続く。CU及びサブCUステップのためのMV精緻化の探索範囲は、8ルーマサンプルに等しくセットされる。
【0103】
[2.2.7.6 テンプレートマッチングFRUCマージモードでの予測方向の選択]
バイラテラルマッチングマージモードでは、CUの動き情報が、2つの異なった参照ピクチャにおける現在のCUの運動軌跡に沿った2つのブロックの間の最も近い一致に基づいて導出されるので、双予測が常に適用される。テンプレートマッチングマージモードにはそのような制限はない。テンプレートマッチングマージモードでは、エンコーダは、CUのためにリスト0からの片予測、リスト1からの片予測、又は双予測から選択することができる。選択は、次のようにテンプレートマッチングコストに基づく:
costBi<=factor×min(cost0,cost1)の場合に、
双予測が使用される;
そうではなく、cost0<=bost1の場合に、
リスト0からの片予測が使用される;
上記以外の場合に、
リスト1からの片予測が使用される。
【0104】
cost0は、リスト0テンプレートマッチングのSADであり、cost1は、リスト1テンプレートマッチングのSADであり、costBiは、双予測テンプレートマッチングのSADである。factorの値は1.25に等しく、これは、選択プロセスが双予測の方にバイアスされることを意味する。
【0105】
インター予測方向選択は、CUレベルのテンプレートマッチンプロセスにのみ適用される。
【0106】
[2.2.8 一般化された双予測]
従来の双予測では、L0及びL1からの予測子は、等しい重み0.5を用いて最終的な予測子を生成するよう平均化される。予測子生成式は、式(4)で示される:
【数4】
【0107】
式(4)中、PtraditionalBiPredは、従来の双予測のための最終的な予測子であり、PL0及びPL1は、夫々、L0及びL1からの予測子であり、RoundingOffset及びshiftNumは、最終的な予測子を正規化するために使用される。
【0108】
一般化された双予測(Generalized Bi-prediction,GBi)は、L0及びL1からの予測子に異なる重みを適用することを可能にするよう提案されている。予測子生成は、式(5)で示される:
【数5】
【0109】
式(5)中、PGBiは、GBiの最終的な予測子である。(1-w1)及びw1は、夫々、L0及びL1の予測子に適用される選択されたGBi重みである。RoundingOffsetGBi及びshiftNumGBiは、GBiにおいて最終的な予測子を正規化するために使用される。
【0110】
w1のサポートされている重みは{-1/4,3/8,1/2,5/8,5/4}である。1つの等しい重みのセットと、4つの等しくない重みのセットとがサポートされる。等しい重みの場合に、最終的な予測子を生成するプロセスは、従来の双予測モードの場合と全く同じである。ランダムアクセス(Random Access,RA)条件での真の双予測の場合に、候補重みセットの数は3つに減る。
【0111】
Advanced Motion Vector Prediction(AMVP)モードについては、GBiでの重み選択は、CUレベルで、このCUが双予測によってコーディングされている場合に、明示的に通知される。マージモードについては、重み選択はマージ候補から引き継がれる。この提案では、GBiは、BMS-1.0のための最終的な予測子に加えてテンプレートの加重平均を生成するようDMVRをサポートする。
【0112】
[2.2.9 多重仮説インター予測]
多重仮説(multi-hypothesis)インター予測モードでは、従来の片/双予測信号に加えて、1つ以上の追加の予測信号が通知される。結果として得られる全体の予測信号は、サンプルごとの重み付けされた重ね合わせによって取得される。片/双予測信号puni/bi及び最初の追加のインター予測信号/仮説h3によれば、結果として得られる予測信号p3は、次のように取得される:
p3=(1-α)puni/bi+αh3
【0113】
予測ユニットシンタックス構造への変更を以下に示す:
【表1】
【0114】
重み係数αは、次のマッピングに従って、シンタックス要素add_hyp_weight_idxによって指定される:
【表2】
【0115】
追加の予測信号については、予測リスト0/リスト1の概念は廃止され、代わりに1つの複合リストが使用される点に留意されたい。この複合リストは、リスト0及びリスト1からの参照フレームと、参照インデックスを増やしながら交互に挿入し、二重エントリが回避されるように、既に挿入されている参照フレームを削除することによって、生成される。
【0116】
上記と同じように、1よりも多い追加の予測信号が使用可能である。結果として得られる全体の予測信号は、夫々の追加の予測信号により繰り返し積み重ねられる:
pn+1=(1-αn+1)pn+αn+1hn+1
【0117】
結果として得られる全体の予測信号は、最後のpn(すなわち、最大インデックスnを有するpn)として取得される。
【0118】
マージモード(しかし、スキップモードではない)を用いるインター予測ブロックについても、追加のインター予測信号が指定され得る点に留意されたい。更には、マージの場合には、片/双予測パラメータだけでなく、選択されたマージ候補の追加の予測パラメータも現在のブロックに使用され得る点に留意されたい。
【0119】
多重仮説イントラ及びインター予測モードも、インター及びイントラ複合予測(Combined Inter and Intra Prediction,CIIP)プロセスとして知られている。
【0120】
[2.2.10 AMVPモードの片予測のための多重仮説予測]
いくつかの例で、AMVPモードの片予測を改善するために多重仮説予測が適用される場合に、1つのフラグが、1又は2に等しいinter_dirについて多重仮説予測を有効又は無効にするよう通知される。このとき、1、2及び3は、夫々、リスト0,リスト1、及び双予測を表す。更に、フラグが真である場合に、もう1つのマージインデックスが通知される。このようにして、多重仮説予測は片予測を双予測に変える。このとき、1つの動きは、AMVPモードにおける元のシンタックス要素を用いて取得され、一方、他は、マージスキームを用いて取得される。最終的な予測は、双予測で見られるようにこれらの2つの予測を結合するよう1:1重みを使用する。マージ候補リストは、最初に、サブCU候補(例えば、アフィン、代替時間動きベクトル予測(ATMVP))が除外されたマージモードから導出される。次に、それは、2つの個別のリスト(1つは、候補からの全てのL0動きを含むリスト0(L0)用であり、もう1つは、全てのL0動きを含むリスト1(L1)用である)に分けられる。冗長性を排除し、空席を埋めた後、2つのマージリストが夫々L0及びL1のために生成される。AMVPモードを改善するために多重仮説予測を適用する場合に、2つの制約がある。第1に、それは、ルーマコーディングブロック(CB)が64以上であるCUについて有効にされる。第2に、それは、低遅延Bピクチャにある場合にL1にのみ適用される。
【0121】
[2.2.11 スキップ/マージモードのための多重仮説予測]
例において、多重仮説予測がスキップ又はマージモードに適用される場合に、多重仮説予測を有効にすべきかどうかは明示的に通知される。余分のマージインデキシング予測が、
元の1つに加えて選択される。従って、多重仮説予測の各候補は、1番目のマージインデキシング予測のための1つと、2番目のマージインデキシング予測のためのもう1つとを含むマージ候補の対を暗示する。しかし、各対において、2番目のマージインデキシング予測のためのマージ候補は、如何なる追加のマージインデックスも通知せずに、続いて起こるマージ候補(すなわち、既に通知されたマージインデックスに1プラスしたもの)として暗黙的に導出される。類似したマージ候補を含む対を除くことによって冗長性を排除し、空席を満たした後、多重仮説予測のための候補リストは形成される。次いで、2つのマージ候補の対からの動きが、最終的な予測を生成するために取得される。このとき、5:3の重みが、1番目及び2番目のマージインデキシング予測に夫々適用される。更に、多重仮説予測を有効にされたマージ又はスキップCUは、既存の仮説の動き情報に加えて、続く隣接CUの参照のために追加の仮説の動き情報をセーブすることができる。サブCU候補(例えば、アフィン、ATMVP)は候補リストから除かれ、低遅延Bピクチャについては、多重仮説はスキップモードに適用されない点に留意されたい。更に、多重仮説予測がマージ又はスキップモードに適用される場合に、CU幅又はCU高さが16に満たないCU、あるいは、CU幅及びCU高さの両方が16に等しいCUについては、双線形補間フィルタが多重仮説のための動き補償で使用される。従って、多重仮説予測を有効にされた各マージ又はスキップCUの最悪のバンド幅(サンプルごとに必要なアクセスサンプル)は、表1で計算され、各数値は、多重仮説予測を無効にされた各4×4CUについての最悪のバンド幅の半分未満である。
【0122】
[2.2.12 究極の動きベクトル表現]
例において、究極の動きベクトル表現(Ultimate Motion Vector Expression,UMVE)が与えられる。UMVEは、提案されている動きベクトル表現法によりスキップ又はマージどちらかの方法に使用される。MMVD(Merge mode with Motion Vector Difference,MMVD)モードも、究極の動きベクトル表現(UMVE)モードとして知られている。
【0123】
UMVEは、VVCで使用するのと同じようにマージ候補を再利用する。マージ候補の中から候補は選択可能であり、提案されている動きベクトル表現法によって更に拡張される。
【0124】
UMVEは、簡略化されたシグナリングを備えた新しい動きベクトル表現を提供する。表現方法は、開始点、動きの大きさ、及び動き方法を含む。
【0125】
【0126】
【0127】
この提案されている技術は、マージ候補リストをそのまま使用する。しかし、デフォルトのマージタイプ(MRG_TYPE_DEFAULT_N)である候補しか、UMVEの拡張の対象とならない。
【0128】
基本候補インデックスは開始点を定義する。基本候補インデックスは、次のようにリスト内の候補の中で最良の候補を示す:
【表3】
【0129】
基本候補の数が1に等しい場合に、基本候補IDXは通知されない。
【0130】
距離インデックスは、動きの大きさの情報である。距離インデックスは、開始点情報からの予め定義された距離を示す。予め定義された距離は、次の通りである:
【表4】
【0131】
方向インデックスは、開始点に対するMVDの方向を表す。方向インデックスは、以下で示されるように4つの方向を表すことができる:
【表5】
【0132】
UMVEフラグは、スキップフラグ及びマージフラグを送った直後に通知される。スキップ及びマージフラグが真である場合に、UMVEフラグはパースされる。UMVEフラグが1に等しい場合に、UMVEシンタックスはパースされる。しかし、1でない場合には、アフィンフラグがパースされる。アフィンフラグが1に等しい場合には、それはアフィンモードである。しかし、1でない場合には、スキップ/マージインデックスが、VTMのスキップ/マージモードについてパースされる。
【0133】
UMVE候補のための追加のラインバッファは不要である。ソフトウェアのスキップ/マージ候補は基本候補として直接使用されるからである。入力されたUMVEインデックスを用いて、MVの補完は、動き補償の直前に決定される。このため、長いラインバッファを保持する必要はない。
【0134】
[2.2.13 予測オフセットによるアフィンマージモード]
例において、UMVEは、アフィンマージモードに拡張され、我々は、これを以降UMVEアフィンモードと呼ぶことにする。提案されている方法は、最初の利用可能なアフィンマージ候補を基本予測子として選択する。次いで、それは、基本予測子からの各制御点の動きベクトル値に動きベクトルオフセットを適用する。利用可能なアフィンマージ候補がない場合には、この提案されている方法は使用されない。
【0135】
選択された基本予測子のインター予測方向と、各方向の参照インデックスは、変更なしで使用される。
【0136】
現在の実施では、現在のブロックのアフィンモデルは、4パラメータモデルであると仮定され、2つの制御点のみが導出される必要がある。よって、基本予測子の最初の2つの制御点のみが制御点予測子として使用されることになる。
【0137】
各制御点について、zero_MVDフラグは、現在のブロックの制御点が対応する制御点予測子と同じMV値を有しているかどうかを示すために使用される。zero_MVDフラグが真である場合には、制御点に必要とされる他のシグナリングはない。そうでない場合には、距離インデックス及びオフセット方向インデックスはその制御点について通知される。
【0138】
サイズが5である距離オフセットテーブルが、以下の表で示されるように使用される。距離インデックスは、どの距離オフセットを使用すべきかを示すよう通知される。距離インデックスと距離オフセット値とのマッピングは、
図23に示される。
【表6】
【0139】
方向インデックスは、以下で示されるように4つの方向を表すことができ、x又はy方向しかMV差を有さなくてよく、両方の方向ではない。
【表7】
【0140】
インター予測が一方向である場合に、通知される距離オフセットは、各制御点予測子についてのオフセット方向に対して適用される。結果は、各制御点のMV値になる。
【0141】
例えば、基本予測子が一方向である場合に、制御点の動きベクトル値はMVP(vpx、vpy)である。距離オフセット及び方向インデックスが通知される場合に、現在のブロックの対応する制御点の動きベクトルは、以下のように計算されることになる。
MV(vx、vy)=MVP(vpx、vpy)+MV(x-dir-factor×distance-offset,y-dir-factor×distance-offset)
【0142】
インター予測が双方向である場合に、通知される距離オフセットは、制御点予測子のL0動きベクトルについて通知されたオフセット方向に適用され、反対の方向による同じ距離オフセットが、制御点予測子のL1動きベクトルについて適用される。結果は、各インター予測方向に関して、各制御点のMV値になる。
【0143】
例えば、基本予測子が双方向である場合に、L0に関する制御点の動きベクトル値はMVPL0(v0px,v0py)であり、L1に関する制御点の動きベクトル値はMVPL1(v1px,v1py)である。距離オフセット予備方向インデックスが通知される場合に、現在のブロックの対応する制御点の動きベクトルは、次のように計算されることになる。
MVL0(v0x、v0y)=MVPL0(v0px、v0py)+MV(x-dir-factor×distance-offset,y-dir-factor×distance-offset)、
MVL1(v0x、v0y)=MVPL1(v1px、v1py)+MV(x-dir-factor×distance-offset,y-dir-factor×distance-offset)
【0144】
[2.2.14 双方向オプティカルフロー]
BIOでは、動き補償は最初に、現在のブロックの(各予測方向における)最初の予測を生成するために実行される。最初の予測は、ブロック内の各サブブロック/ピクセルの空間勾配、時間勾配、及びオプティカルフローを導出するために使用され、これらは、次いで、第2の予測、すなわち、サブブロック/ピクセルの最終的な予測を生成するために使用される。詳細は、次のように説明される。
【0145】
双方向オプティカルフロー(BIO)は、双予測のためのブロックワイズの動き補償に加えて実行されるサンプルワイズの動き精緻化である。サンプルレベルの動き精緻化は、シグナリングを使用しない。
【0146】
【0147】
I
(k)をブロック動き補償後の参照k(k=0,1)からのルーマ値であるとし、∂I
(k)/∂x、∂I
(k)/∂yは、I
(k)勾配の水平及び垂直成分である。オプティカルフローが有効であるとすれば、動きベクトル場(v
x,v
y)は、次の式によって与えられる:
【数6】
【0148】
このオプティカルフロー式を各サンプル結果の動き軌跡についてエルミート(Hermite)補間と組み合わせることで、関数値I(k)及び導関数、∂I
(k)/∂x、∂I
(k)/∂yの両方と最後に一致する一意の三次多項式が得られる。t=0でのこの多項式の値がBIO予測である:
【数7】
【0149】
ここで、τ
0及びτ
1は、
図24で示されるように参照フレームまでの距離である。距離τ
0及びτ
1は、Ref0及びRef1に基づいて計算される:
τ
0=POC(現在)-POC(Ref0)
τ
1=POC(Ref1)-POC(現在)
両方の予測が同じ時間方向から来る(両方が過去から来るか、又は両方が未来から来るかのどちらかである)場合、符号は異なる(すなわち、τ
0・τ
1<0)。この場合に、BIOは、予測が同じ時点からでなく(すなわち、τ0≠τ1)、両方の参照される領域が非ゼロ運動を有し(MV
x0,MV
y0,MV
x1,Mv
y1≠0)、ブロック動きベクトルが時間距離に比例する(MV
x0/MV
x1=MV
y0/Mv
y1=-τ
0/τ
1)場合にのみ適用される。
【0150】
動きベクトル場(v
x、v
y)は、点A及びB(
図24の動き軌跡と参照フレーム面との交点)での値の間の差Δを最小限にすることによって決定される。モデルは、Δについて局所テイラー展開の一次線形項のみを使用する:
【数8】
【0151】
式(5)の全ての値が、これまで表記から省略されていたサンプル位置(i’,j’)に依存する。動きが局所周囲エリアにおいて一貫性があるとすれば、Mが2に等しいとして、現在予測されている点(i,j)を中心とした(2M+1)×(2M+1)正方窓Ω内でΔは最小限にされる:
【数9】
【0152】
この最適化問題について、JEMは、最初に垂直方向において、それから水平方向において最小化を行う簡単化されたアプローチを使用する。その結果、次のものが得られる:
【数10】
ここで、
【数11】
【0153】
ゼロ又は極めて小さい値による除算を回避するために、正規化パラメータr及びmが式10及び11に導入される:
r=500・4d-8 (10)
m=700・4d-8 (11)
【0154】
ここで、dは、ビデオサンプルのビットデプスである。
【0155】
BIOのためのメモリアクセスを通常の双予測動き補償の場合と同じに保つために、全ての予測及び勾配値I
(k)、∂I
(k)/∂x、∂I
(k)/∂yは、現在のブロック内の位置についてのみ計算される。式(9)中、予測されたブロックの境界上の現在予測されている点に中心がある(2M+1)×(2M+1)正方窓Ωは、ブロックの外にある点にアクセスする必要がある(
図25Aを参照)。JEMでは、ブロックの外にあるI
(k)、∂I
(k)/∂x、∂I
(k)/∂yの値は、そのブロック内の最も近い利用可能な値に等しいようセットされる。例えば、これは、
図25Bに示されるように、パディングとして実装され得る。
【0156】
図26は、ブロック拡張によらないBIOを示し、a)ブロックの外のアクセス位置、b)パディングが、余分のメモリアクセス及び計算を回避するために使用される。
【0157】
BIOによれば、各サンプルについて運動場が精緻化され得ることが可能である。計算複雑性を低減するために、BIOのブロックベースの設計がJEMでは使用される。動き精緻化は、4×4ブロックに基づいて計算される。ブロックベースのBIOでは、4×4ブロック内の全てのサンプルの式(9)中のs
nの値は合計され、次いで、s
nの合計された値が、4×4ブロックのBIO動きベクトルオフセットを導出するために使用される。より具体的には、次の式が、ブロックベースのBIO導出のために使用される:
【数12】
ここで、b
kは、予測されたブロックのk番目の4×4ブロックに属するサンプルの組を表す。式7及び8中のs
nは、関連する動きベクトルオフセットを導出するために((s
n,bk)>>4)によって置換される。
【0158】
いくつかの場合に、BIOのMVレジメントは、ノイズ又は不規則な動きにより信頼できない可能性がある。そのため、BIOでは、MVレジメントの大きさが閾値thBIOにクリップされる。閾値は、現在のピクチャの参照ピクチャが全て1つの方向からであるかどうかに基づいて決定される。現在のピクチャの全ての参照ピクチャが1つの方向からである場合に、閾値は12×214-dにセットされ、そうでない場合には、それは12×213-dにセットされる。
【0159】
BIOの勾配は、HEVC動き補償プロセス(2D分離可能FIR)と一致する操作を用いて動き補償補間と同時に計算される。この2D分離可能FIRのための入力は、動き補償プロセスの場合と同じ参照フレームサンプルであり、ブロック動きベクトルの分数部分に応じた分数位置(fracX,fracY)である。水平勾配∂I/∂xの場合に、信号は最初に、スケール除去(de-scaling)シフトd-8を伴って分数位置fracYに対応するBIOfilterSを用いて垂直方向に補間され、次いで、勾配フィルタBIOfilterGが、18-dによるスケール除去シフトを伴って分数位置fracXに対応する水平方向において適用される。水平勾配∂I/∂Yの場合に、最初に勾配フィルタは、スケール除去シフトd-8を伴って分数位置fracYに対応するBIOfilterGを用いて垂直方向に適用され、次いで、信号変位は、18-dによるスケール除去シフトを伴って分数位置fracXに対応する水平方向でのBIOfilterSを用いて実行される。勾配計算BIOfilterG及び信号変位BIOfilterFのための補間フィルタの長さは、妥当な複雑性を保つために、より短い(6タップ)。表2は、BIOにおけるブロック動きの種々の分数位置についての勾配計算に使用されるフィルタを示す。表3は、BIOにおける予測信号生成に使用される補間フィルタを示す。
【表8】
【表9】
【0160】
JEMでは、BIOは、2つの予測が異なる参照ピクチャからである場合に、全ての双予測されたブロックに適用される。LICがCUに使用可能である場合に、BIOは無効にされる。
【0161】
JEMでは、OBMCは、通常のMCプロセスの後にブロックに適用される。計算複雑性を低減するために、BIOは、OBMCプロセス中に適用されない。これは、BIOが、ブロックに対して、それ自体のMVを使用しているときにのみMCプロセスで使用され、隣接ブロックのMVがOBMCプロセス中に使用される場合にはMCプロセスで適用されないことを意味する。
【0162】
BIOにおいて時間勾配を計算する前に、参照ブロック(又は予測ブロック)は最初に変更されてよく、時間勾配の計算は、その変更された参照ブロックに基づく、ことが提案される。一例において、全ての参照ブロックについて平均が削除される。一例において、平均は、参照ブロック内の選択されたサンプルの平均として定義される。一例において、参照ブロックX又は参照ブロックXのサブブロック内の全てのピクセルが、MeanXを計算するために使用される。一例において、参照ブロックX又は参照ブロックXのサブブロック内の一部のピクセルのみが、MeanXを計算するために使用される。例えば、2行/列ごとのピクセルのみが使用される。
【0163】
[2.2.15 デコーダ側動きベクトル精緻化]
双予測動作では、1つのブロックの領域の予測のために、リスト0の動きベクトル(MV)及びリスト1のMVを用いて夫々形成された2つの予測ブロックが、単一の予測信号を形成するよう結合される。デコーダ側動きベクトル精緻化(DMVR)法では、双予測の2つの動きベクトルは、バイラテラルテンプレートマッチングプロセスによって更に精緻化される。バイラテラルテンプレートマッチングは、精緻化されたMVを追加の動き情報の伝送なしで取得するために、バイラテラルテンプレートと参照ピクチャ内の再構成サンプルとの間でひずみベースの探索を実行するようデコーダで適用される。
【0164】
DMVRでは、バイラテラルテンプレートは、
図26に示されるように、夫々リスト0の初期MV0及びリスト1のMV1からの2つの予測ブロックの加重結合(すなわち、平均)として生成される。テンプレートマッチング動作は、生成されたテンプレートと参照ピクチャ内の(初期予測ブロックの周りの)サンプル領域との間のコスト指標を計算することから成る。2つの参照ピクチャの夫々について、最小テンプレートコストもたらすMVは、元のMVを置換するためのそのリストの更新されたMVと見なされる。JEMでは、9つのMV候補がリストごとに探索される。9つのMVは、元のMVと、水平若しくは垂直のどちらか一方の方向又はその両方において元もMVに対して1ルーマサンプルだけオフセットされた8つの周囲MVとを含む。最終的に、2つの新しいMV、すなわち、
図26に示されるMV0’及びMV1’が、最終的な双予測結果を生成するために使用される。絶対差分和(SAD)がコスト指標として使用される。1つの周囲MVによって生成された予測ブロックのコストを計算する場合に、(整数ペルに)丸められたMVが、実際には、実際のMVの代わりに予測ブロックを取得するために使用される点に留意されたい。
【0165】
DMVRは、追加のシンタックス要素の伝送なしで、過去の参照ピクチャからの1つのMVと、未来の参照ピクチャからのもう1つのMVとによる双予測のマージモードのために適用される。JEMでは、LIC、アフィン運動、FRUC、又はサブCUマージ候補がCUに使用可能である場合に、DMVRは適用されない。
【0166】
図26は、バイラテラルテンプレートマッチングに基づくDMVRの例を示す。
【0167】
[2.3 関連する方法]
ビデオコーディングにおける動き精緻化及びコーディングのために、MV更新方法及び2段階インター予測方法が提案されている。BIOにおける参照ブロック0と参照ブロック1との間の導出されたMVは、スケーリングされ、リスト0及びリスト1の元の動きベクトルに加えられる。一方で、更新されたMVは、動き補償を実行するために使用され、第2のインター予測は、最終的な予測として生成される。
【0168】
一方で、時間勾配は、参照ブロック0と参照ブロック1との間の平均差を除くことによって変更される。
【0169】
ビデオコーディングにおけるサブブロックベースの予測のための方法では、異なるいくつかのサブブロックについて、ただひと組のMVがクロマ成分について生成される。
【0170】
[3.他の技術との関係]
サブブロックベースの予測方法が提案される。第1に、我々は、色成分及びカラーフォーマット(例えば、4:2:0又は4:2:2)に応じて異なる方法で現在のブロックをサブブロックに分けることを提案する。第2に、我々は、1つの色成分のサブブロックのMVが、既に導出されている他の色成分の1つ以上のサブブロックのMVから導出され得ることを提案する。第3に、我々は、マージアフィンモード及び非マージアフィンモードのための制約を統一することを提案する。
【0171】
例えば、8×8CUが4つの4×4サブブロックに分けられ、サブブロックの夫々がそれ自体の動きベクトルを有している場合に、4つの動きベクトルの平均が計算され、(2によってスケーリングされた)それが、YCbCr4:2:0の場合におけるクロマ成分の動きベクトルとして使用される。このようにして、Cb/Cr成分の動き補償は、4つの2×2ブロックの代わりに4×4ブロックについて実行され、メモリバンド幅は節約され得る。
【0172】
織り込み予測(interweaved prediction)は、サブブロック動き補償のために提案される。織り込み予測によれば、ブロックは、1つよりも多い分割パターンによりサブブロックに分けられる。分割パターンは、サブブロックのサイズ及びサブブロックの位置を含め、ブロックをサブブロックに分割するための方法として定義される。各分割パターンについて、対応する予測ブロックは、その分割パターンに基づいて各サブブロックの動き情報を導出することによって生成され得る。従って、1つの予測方向についてさえ、複数の予測ブロックが複数の分割パターンによって生成される可能性がある。代替的に、各予測方向について、1つの分割パターンしか適用されなくてもよい。
【0173】
X個の分割パターンが存在し、P
0、P
1、・・・,P
X-1と表される現在のブロックのX個の予測ブロックが、X個の分割パターンを用いてサブブロックベースの予測によって生成される、とする。Pと表される現在のブロックの最終的な予測は:
【数13】
として生成され得る。
【0174】
ここで、(x,y)は、ブロック内のピクセルの座標であり、w
i(x,y)は、P
iの重み値である。一般性を失わずに、Σ
i=0
X-1w
i(x,y)=(1<<N)であると仮定される。このとき、Nは非負値である。
図27は、2つの分割パターンによる織り込み予測の例を示す。
【0175】
[4.本技術を使用する実施形態によって解決される課題の例]
2段階インター予測方法が提案されているが、このような方法は、より高いコーディング利得が期待され得るように、より正確な動き情報を得るよう複数回実行され得る。
【0176】
DMVRには、2段階インター予測方法がない。
【0177】
[5.箇条書きで示された例示的な実施形態]
上記の課題を解決するために、デコーダ側動き精緻化プロセスを実行する必要があるコーディングツール(例えば、DMVR)、及び/又は動き補償のために使用される最終的な動き情報とは異なる何らかの中間動き情報に依存するコーディングツール(例えば、BIO)について、1度よりも多く動き情報(例えば、動きベクトル)を精緻化することが提案される。
【0178】
また、デコーダ側で動き情報精緻化を適用しないコーディングツールについてさえ、ブロック/コーディングされたブロック内のサブブロックの動き情報が1度又は複数回精緻化されてよく、精緻化された動き情報が、その後にコーディングされるべきブロックの動きベクトル予測、及び/又はフィルタリングプロセスのために使用されてよいことも提案される。
【0179】
以降、DMVDが、DMVR若しくはBIO又は他のデコーダ側動きベクトル精緻化法若しくはピクセル精緻化法を表すために使用される。
【0180】
絶対変換差分和(sum of absolute transformed differences)としてSATDを表し、平均除去絶対変換差分和(mean removed sum of absolute transformed difference)としてMRSATDを表し、平均除去残差平方和(mean removed sum of squares error)としてMRSSEを表す。
【0181】
以下の詳細な項目は、一般概念を説明するための例と見なされるべきである。これらの発明は、狭い方法で解釈されるべきではない。更に、これらの項目は、如何なる様態でも組み合わされ得るコーディング/デコーディング技術について記載している。
【0182】
1.動きベクトル精緻化プロセスが複数回実行、例えば、Nが非負整数値であるとして、N回実行され得ることが提案される。通知されたMVは(MVLX0_x,MVLX0_y)であり、i番目の精緻化されたMVは(MVLXi_x,MVLXi_y)であるとされ、LX=L0又はL1かつi=1,・・・,Nである。
a)一例において、(i-1)番目の精緻化されたベクトル(すなわち、(i-1)回目の繰り返しの後の動きベクトルであり、(i-1)が0に等しい場合には、通知された動きベクトルが使用される)は、PU/CU/ブロック/サブブロックのi番目の動き補償された参照ブロックを生成するために使用されてよい。代替的に、更には、i番目の動き補償された参照ブロックは、i番目の時間勾配、空間勾配、及び精緻化された動きベクトルを導出するために更に使用されてよい。例は
図28に示される。
b)提案されている方法によりコーディングされないインターコーディングされたブロックに使用されるものとは異なった補間フィルタが、メモリバンド幅を低減するよう、異なる動きベクトル精緻化段階での動き補償のために使用されてよい。例えば、ショートタップフィルタは、1回目から(N-1)回目の段階で使用される。
c)i回目の繰り返しからの中間の精緻化されたMVは、参照ブロックを生成するために使用される前に、最初に変更される。一例において、分数MVは、整数MVに丸められ、それから、いくつかの段階で、例えば、1回目から(N-1)回目の段階で参照ブロックを生成するために使用される。
d)いくつかの又は全ての繰り返しで、1つのブロックは最初にいくつかのサブブロックに分けられ、各サブブロックは、サブブロックサイズに等しいサイズを有する通常のコーディングブロックと同じ方法で扱われる。
i.一例において、ブロックは最初に複数のサブブロックに分けられ、各ブロックの動き情報は複数回精緻化されてよい。
ii.代替的に、ブロックは最初に複数のサブブロックに分けられ、それらのサブブロックの一部についてのみ、それらの動き情報が複数回精緻化されてよい。
iii.代替的に、ブロックは最初に複数のサブブロックに分けられ、異なるサブブロックの動き情報は異なる回数の繰り返しにより精緻化されてよい(例えば、あるブロックについては、精緻化は適用されず、あるブロックについては、動き情報が複数回精緻化されてよい。)。
iv.代替的に、ブロック全体の動き情報は、N-1回精緻化され、その後に、(N-1)番目の精緻化された動き情報に基づいて、ブロックは複数のサブブロックに分けられ、各サブブロックの動き情報について、その動き情報は更に精緻化されてよい。
e)異なる段階では、精緻化されたMVは、異なるサブブロックサイズで導出されてよい。
f)一例において、N回の段階での精緻化された動きベクトルは、動き補償を実行するために使用され、それから、前のセクション2.2.14で説明された方法が、CU/サブブロックの最終的な予測を生成するために使用される。
g)一例において、予測は、各段階(又はいくつかの段階)でブロック/サブブロックに対して生成され、それらは、そのブロック/サブブロックの最終的な予測を生成するよう加重平均される。
h)一例において、各段階で導出されたMVは、更に制約されてよい。
i.例えば、全ての1<=i<=Nについて、|MVLXi_x-MVLX0_x|<=Txかつ|MVLXi_y-MVLX0_y|<=Ty。
ii.例えば、全ての1<=i、j<=Nについて、Max{MVLXi_x-MVLXj_x}<=TxかつMax{MVLXi_y-MVLXj_y}<=Ty。
iii.閾値Tx及びTyは等しくても等しくなくてもよい。それらは、予め定義された数であるか、あるいは、VPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CUにおいてエンコーダからデコーダへ通知され得る。
i)動きベクトル精緻化プロセスは、K回目の段階後の精緻化されたMV及びK回目の段階での入力されたMVが類似している場合に、ブロック/サブブロックについてのK回目の段階後に終了されてよい。
i.例えば、T=1/4、1/3、1/2、1、2、3、4、・・・などであるとして、(いずれかの予測方向における)精緻化されたMV及び入力されたMVの垂直及び/又は水平成分の間の絶対差がT4分の1ペル距離よりも大きくない場合に、動きベクトル精緻化プロセスは終了される。
ii.例えば、(いずれかの予測方向における)精緻化されたMV及び入力されたMVの垂直及び水平成分の間の絶対差分和がT4分の1ペル距離よりも大きくない場合に、動きベクトル精緻化プロセスは終了される。
j)繰り返し数Nは適応的であってよい。
i.例えば、Nは、現在のブロックのサイズに依存する。
1.例えば、Nは、より大きいブロックについては、より大きく、その逆も同様である。
ii.例えば、Nは、現在のブロックのコーディングモードに依存する。
iii.例えば、Nは、現在のブロックのMVD(Motion Vector Difference)に依存する。
1.例えば、Nは、|MVD|がより大きい場合に、より大きい。
iv.例えば、NはQPに依存する。
1.例えば、Nは、QPがより大きい場合に、より大きい。
v.Nは、VPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CT/CUでエンコーダからデコーダへ通知されてよい。
【0183】
2.上記の1.における精緻化された動きベクトルによれば、2段階インター予測プロセスは、多段階インター予測に拡張されてよく、N回の繰り返し後の最終的に精緻化された動きベクトルは、最終的な動き補償を実行し、ブロック/サブブロックの最終的な予測を生成するために使用される。
a)代替的に、予測は、各段階(又はいくつかの段階)でブロック/サブブロックに対して生成され、そのブロック/サブブロックの最終的な予測は、それらの予測によって生成されてよい。一例において、それらは、ブロック/サブブロックの最終的な予測を生成するよう加重平均される。
【0184】
3.時間勾配変更プロセスは、各M1×N1サブブロックについて実行され得るが、BIOプロセスは、各M2×N2サブブロックについて実行されてよいことが提案される。
a)一例において、精緻化された動きベクトルは、各4×4ブロックについて導出され、一方、時間勾配変更プロセスは、各8×8ブロックについて実行される。すなわち、M1=N1=8、M2=N2=4である。
b)一例において、精緻化された動きベクトルは、各8×8ブロックについて導出され、一方、時間勾配変更プロセスは、各4×4ブロックについて実行される。
c)一例において、精緻化された動きベクトルは、各4×4ブロックについて導出され、一方、時間勾配変更プロセスは、各4×4ブロックについて実行される。
d)一例において、精緻化された動きベクトルは、各8×8ブロックについて導出され、一方、時間勾配変更プロセスは、各8×8ブロックについて実行される。
e)M1、N1、M2、N2は、予め定義されるか、あるいは、ブロックサイズ/コーディングされたモードに依存するか、あるいは、VPS/SPS/PPS/ピクチャヘッダ/タイルグループ/などで通知されてよい。
【0185】
4.ブロック/サブブロックの動きベクトル導出するために使用され得る時間/空間勾配を計算するためにそのブロック/サブブロックの部分ピクセルのみを使用することが提案される。
a)一例において、時間及び空間勾配は、N行又は/及び列ごとに計算される。例えば、N=2である。
b)一例において、時間及び空間勾配は、CU/サブブロックの左上/右上/左下/右下4分の1について計算される。
c)一例において、時間及び空間勾配は、CU/サブブロックの左上/右上/左下/右下4分の1のN行又は/及び列ごとに計算される。
d)このような方法は、2段階インター予測及び上記の2.における多段階インター予測のために有効にされてよく、時間/空間勾配は、ブロック/サブブロックの精緻化された動きベクトルを導出するためにのみ使用されればよく、ブロック/サブブロックの予測を精緻化するために直接には使用されない。
【0186】
5.DMVRにおける動きベクトル精緻化プロセスは複数回実行されてよいことが提案される。
a)一例において、(i-1)番目の精緻化された動きベクトル(すなわち、(i-1)回目の繰り返し後の動きベクトルであり、(i-1)が0に等しい場合には、通知された動きベクトルが使用される)は、i回目の動きベクトル精緻化プロセスにおける開始探索点として使用され得る。i=1,・・・,Nであり、Nは非負整数である。
b)提案されている方法によりコーディングされないインターコーディングされたブロックに使用されるものとは異なった補間フィルタは、メモリバンド幅を低減するために、異なる動きベクトル精緻化段階で使用されてよい。例えば、ショートタップフィルタが1回目から(N-1)回目の段階で使用される。
c)一例において、分数MVは、整数MVに丸められ、それから、いくつかの段階で、例えば、1回目から(N-1)回目の段階で、開始探索点として使用される。
【0187】
6.BIO若しくはDMVR又は他のデコーダ側動き精緻化技術で導出された精緻化された動きベクトルは、いくつかの成分の最終的な動き補償のためにのみ使用され得る。
a)一例において、精緻化された動きベクトルは、Cb又は/及びCr成分の最終的な動き補償のためにのみ使用される。
b)一例において、精緻化された動きベクトルは、ルーマ成分の最終的な動き補償のためにのみ使用される。
c)一例において、BIOでは、精緻化された動きベクトルは、動き補償を実行し、クロマ成分の最終的な予測を生成するために使用され、セクション2.2.14で説明された方法は、ルーマ成分の最終的な予測を生成するために使用される。
i.例えば、動きベクトルは1度だけ精緻化され、クロマ成分の動き補償のために使用され、セクション2.2.14で説明された方法は、ルーマ成分の最終的な予測を生成するために使用される。
d)一例において、BIOでは、セクション2.2.14で説明された方法は、ルーマ及びクロマの両成分の最終的な予測を生成するために使用される。
e)一例において、BIO及びDMVRでは、精緻化された動きベクトルは、動き補償を実行し、ルーマ及びクロマの両成分の最終的な予測を生成するために使用される。
【0188】
7.ビデオコーディングにおけるサブブロックベースの予測のための方法は、メモリバンド幅を低減するようクロマ成分の動き補償のために使用され得る。例えば、4つの隣接する4×4ブロックはまとめられ、ただひと組の重みベクトルが(YCbCr4:2:0の場合に)クロマ成分に対して導出され、4×4クロマブロックの動き補償を実行するために使用される。
【0189】
8.BIO又は/及びDMVR、あるいは、他のデコーダ側動き精緻化技術がサブブロックレベルで実行されてよいことが提案される。
a)代替的に、更には、ビデオコーディングにおける織り込み予測が、異なる分割パターンについて異なる動きベクトルを導出するために使用可能であり、最終的な予測は、全ての分割パターンの予測値に基づいて生成される。
【0190】
9.提案されている方法は、特定条件の下で、例えば、ブロックサイズ、エンコーディングされたモード情報、動き情報、スライス/ピクチャ/タイルタイプ、などに基づいて、適用されてよい。
a)一例において、ブロックサイズが、M×H個のサンプル、例えば、16又は32又は64個のルーマサンプルよりも小さい場合に、上記の方法は許可されない。
b)一例において、ブロックサイズが、M×H個のサンプル、例えば、16又は32又は64個のルーマサンプルよりも大きい場合に、上記の方法は許可されない。
c)代替的に、ブロック幅又は/及び高さの最小サイズがX以下である場合に、上記の方法は許可されない。一例において、Xは8にセットされる。
d)代替的に、ブロック幅>th1若しくは>=th及び/又はブロックの高さ>th2若しくは>=th2である場合に、上記の方法は許可されない。一例において、th1及び/又はth2は64にセットされる。
i.例えば、上記の方法は、M×M(例えば、128×128)ブロックに対しては無効にされる。
ii.例えば、上記の方法は、N×M/M×Nブロックに対しては無効にされる。例えば、N>=64、M=128である。
iii.例えば、上記の方法は、N×M/M×Nブロックに対して無効にされる。例えば、N>=4、M=128である。
e)代替的に、ブロックの幅<th1若しくは<=th1及び/又はブロックの高さ<th2若しくは<=th2である場合に、上記の方法は許可されない。一例において、th1及び/又はth2は8にセットされる。
f)一例において、BIOでは、上記の方法は、AMVPモードでコーディングされたブロックに対して無効にされる。
g)一例において、BIO又はDMVRでは、上記の方法は、スキップモードでコーディングされたブロックに対して無効にされる。
【0191】
10.サブブロックベースの方法(例えば、アフィン、ATMVP、BIO、DMVR、など)については、サブブロックの最大数は、全種類のCU/PUサイズに対して固定されてよい。KxL個のサブブロックが存在し、1つのブロックサイズがM×Nによって表されるとする。
a)一例において、サブブロックの幅はmax(THw,M/K)にセットされる。
b)一例において、サブブロックの高さはmax(THh、N/L)にセットされる。
c)THw及び/又はTHhは予め定義される(例えば、4)か、あるいは、SPS/PPS/ピクチャ/スライス/タイルグループ/タイルレベル/CTUのグループ/CTU行/CTU/CU/PUで通知されてよい。
d)THw及び/又はTHhは、現在のブロックは双予測又は片予測であるかどうかに依存してよい。一例において、THw及び/又はTHhは、片予測について4に、又は双予測については8にセットされてよい。
【0192】
11.サブブロックベースの方法(例えば、アフィン、ATMVP、BIO、DMVR、など)については、ブロックをサブブロックに分割すべきかどうか及びどのように分割すべきかは、異なる色成分ごとに異なってよい。
a)一例において、クロマブロックを分割すべきかどうか及びどのように分割すべきかは、その対応するルーマブロックを分割すべきかどうか及びどのように分割すべきかとは無関係に、クロマ成分の幅及び高さに依存する。
b)一例において、クロマブロックを分割すべきかどうか及びどのように分割すべきかは、その対応するルーマブロックを分割すべきかどうか及びどのように分割すべきかとは無関係に、クロマ成分の幅及び高さに依存する。
c)一例において、クロマブロックを分割すべきかどうか及びどのように分割すべきかは、その対応するルーマブロックを分割すべきかどうか及びどのように分割すべきかに依存する。
【0193】
12.提案されている方法と、BIO,DMVR又は他のデコーダ側動き精緻化技術、あるいは、サブブロックベースの方法(例えば、アフィン、ATMVPなど)とを含む上記の方法は、サブブロックレベルで適用されてよい。
a)一例において、上記の1.及び2.におけるBIO及びDMVRのための反復的動きベクトル精緻化は、各サブブロックについて呼び出されてよい。
b)一例において、幅若しくは高さの一方又は幅及び高さの両方が閾値Lよりも大きい(又はそれに等しい)ブロックの場合に、そのブロックは複数のサブブロックに分けられてよい。各サブブロックは、サブブロックサイズに等しいサイズを有している通常のコーディングブロックと同じように扱われる。
i.一例において、Lは64であり、64×128/128×64ブロックは2つの64×64サブブロックに分けられ、128×128ブロックは4つの64×64サブブロックに分けられる。しかし、N×128/128×Nブロック(N<64)サブブロックに分けられない。
ii.一例において、Lは64であり、64×128/128×64ブロックは2つの64×64サブブロックに分けられ、128×128ブロックは4つの64×64サブブロックに分けられる。一方で、N×128/128×Nブロック(N<64)は、2つのN×64/64×Nサブブロックに分けられる。
iii.一例において、幅(又は高さ)がLよりも大きい場合に、それは垂直方向(又は水平方向)で分割され、サブブロックの幅又は/及び高さはLよりも大きくない。
iv.一例において、Lは、垂直方向及び水平方向について異なってよい。例えば、ブロックの幅がLWよりも大きい場合に、ブロックは垂直方向に分割されてよく、ブロックの高さがLHよりも大きい場合に、ブロックは水平方向に分割されてよい。
v.一例において、LWはVPDU(Virtual Pipeline Data Unit)の幅であってよく、LHはVPDUの高さであってよい。
c)一例において、ブロックサイズ(すなわち、幅×高さ)が閾値L1よりも大きい場合に、それは複数のサブブロックに分けられてよい。各サブブロックは、サブブロックサイズに等しいサイズを有している通常のコーディングブロックと同じように扱われる。
i.一例において、ブロックは、L1よりも大きくない同じサイズでサブブロックに分割される。
ii.一例において、ブロックの幅(又は高さ)が閾値L2よりも大きくない場合に、それは垂直方向(又は水平方向)で分割されない。
iii.一例において、L1はVPDUのサイズである。
iv.一例において、L1は1024であり、L2は32である。例えば、16×128ブロックは2つの16×64サブブロックに分けられる。
v.一例において、L2=sqrt(L1)である。
vi.一例において、ブロックサイズ(W及びHによって夫々表される幅及び高さ)がL1よりも大きくない場合に、サブブロックの幅(subWによって表される)及び高さ(subHによって表される)は、次のように導出される:
if W>=L2かつH>=L2
subW=W/L2、
subH=H/L2、
else if W>L2かつH<L2
subH=H、
subW=W×H/L1、
else if W<L2かつH2>L2
subW=W、
subH=W×H/L1
d)一例において、1つのブロックの2段階の分割が適用されてよく、異なった規則が、どのように分割を行うべきかを決定するために適用されてよい。
i.一例において、ブロックは、上記の12.b)の方法を用いて最初にサブブロックに分割されてよく、これらのサブブロックは、上記の12.c)の方法を用いて更に分割されてよい。
ii.一例において、ブロックは、上記の12.c)の方法を用いて最初にサブブロックに分割されてよく、これらのサブブロックは、上記の12.b)の方法を用いて更に分割されてよい。
e)閾値Lは予め定義されるか、あるいは、SPS/PPS/ピクチャ/スライス/タイルグループ/タイルレベルで通知されてよい。
f)代替的に、閾値は、ブロックサイズ、ピクチャタイプ、時間レイヤインデックスなどのような、特定のコーディングされた情報に依存してよい。
g)一例において、デブロッキングが、それらのサブブロックの境界で実行されてよい。
【0194】
13.DMVDは、多重仮説イントラ及びインター予測において無効にされてよいことが提案される。
a)代替的に、DMVDは、多重仮説イントラ及びインター予測において有効にされてよい。
【0195】
14.DMVDはMMVD(Merge mode with MVD)又はUMVEモードにおいて無効にされてよいことが提案される。
a)代替的に、DMVDは、MMVD又はUMVEモードにおいて有効にされてよい。
【0196】
15.DMVDは、三角予測において無効にされてよいことが提案される。
a)代替的に、DMVRは、三角予測において有効にされてよい。
【0197】
16.一例において、DMVR又は/及びBIO及び/又は他のデコーダ側動き精緻化技術などの動き精緻化方法を適用すべきかどうか及びどのように適用すべきかは、参照ピクチャに依存する。
a)一例において、動き精緻化方法は、参照ピクチャが現在のコーディングピクチャである場合に適用されない。
b)一例において、前の項で請求された多数回の精緻化方法は、参照ピクチャが現在のコーディングピクチャである場合に適用されない。
c)DMVR又は/及びBIO及び/又は他のデコーダ側動き精緻化技術などの動き精緻化方法を適用すべきかどうか及びどのように適用すべきかは、サブブロックをカバーするブロックに対する、及び/又はコーディングツリーユニット(CTU)に対する、及び/又はタイル/ピクチャの左上位置に対するサブブロックの位置に依存する。
【0198】
17.差分計算に依存するBIO又は/及びDMVR、あるいは、他のコーディングツールの早期終了(early termination)段階では、2つの参照ブロック又は/及びサブブロックの間の差は、一部の代表的な位置についてのみ計算され得ることが提案される。
a)一例において、偶数行の差のみがブロック又は/及びサブブロックに対して計算される。
b)一例において、1つのブロック/サブブロックの4つのコーナーサンプルの差のみがブロック又は/及びサブブロックに対して計算される。
c)一例において、ビデオコーディングにおけるデコーダ側動きベクトル導出の改善の方法は、代表的な位置を選択するために使用されてよい。
d)一例において、2つの参照ブロック間の差(例えば、SAD/SATD/SSE/MRSAD/MRSATD/MRSSEなど)は、いくつかの代表的なサブブロックに対してのみ計算されてよい。
e)一例において、代表的な位置又はサブブロックに対して計算された差(例えば、SAD/SATD/SSE/MRSAD/MRSATD/MRSSEなど)は、ブロック/サブブロック全体についての差を求めるために合算される。
【0199】
18.一例において、2つの参照ブロック間の差は、(参照サブブロック間の差の和として計算されるのではなく)直接に計算され、差分計算に依存するBIO又は/及びDMVR、あるいは、他のコーディングツールが、ブロック全体に対して有効又は無効にされるかどうかを決定するために使用される。
a)一例において、上記の14.に記載される方法が、2つの参照ブロック間の差を計算するために使用されてよい。
【0200】
19.実施形態
このセクションは、サブブロックレベルDMVDでどのようにブロックをサブブロックに分けるかについての実施形態を示す。
実施形態#1
a)ステップ1:ブロックがサイズ128×128である場合に、それは4つの64×64サブブロックに分けられる。ブロックがサイズN×128又は128×N(N<128)である場合に、それは2つのN×64又は64×Nサブブロックに分けられる。他のブロックについては、それらは分割されない。
b)ステップ2:サイズが128×128又はN×128若しくは128×N(N<128)でないブロックについては、及びステップ1で生成されたサブブロックについては、そのサイズ(すなわち、幅×高さ)が256よりも大きい場合に、それは更に、上記の12.c)で記載された方法(L=256及びL2=16)を用いてサイズ256のサブブロックに分けられる。
実施形態#2
a)ステップ1:ブロックがサイズ128×128である場合に、それは4つの64×64サブブロックに分けられる。ブロックがサイズN×128又は128×Nである場合に、それは2つのN×64又は64×Nサブブロック(N<128)に分けられる。他のブロックについては、それらは分割されない。
b)ステップ2:サイズが128×128又はN×128若しくは128×N(N<128)でないブロックについては、及びステップ1で生成されたサブブロックについては、そのサイズ(すなわち、幅×高さ)が1024よりも大きい場合に、それは更に、上記の12.c)で記載された方法(L1=1024及びL=32)を用いてサイズ1024のサブブロックに分けられる。
実施形態#3
a)ステップ1:ブロックがサイズ128×128である場合に、それは4つの64×64サブブロックに分けられる。ブロックがサイズN×128又は128×Nである場合に、それは2つのN×64又は64×Nサブブロック(N<128)に分けられる。他のブロックについては、それらは分割されない。
実施形態#4
a)ステップ1:ブロックがサイズ256×256である場合に、それは4つの128×128サブブロックに分けられる。ブロックがサイズN×256又は256×Nである場合に、それは2つのN×128又は128×Nサブブロック(N<256)に分けられる。他のブロックについては、それらは分割されない。
b)ステップ2:サイズが256×256又はN×256若しくは256×N(N<256)でないブロックについては、及びステップ1で生成されたサブブロックについては、そのサイズ(すなわち、幅×高さ)が1024よりも大きい場合に、それは更に、上記の12.c)で記載された方法(L1=1024及びL=32)を用いてサイズ1024のサブブロックに分けられる。
実施形態#5
a)ステップ1:ブロックの幅又は高さが64よりも大きい場合に、それは、上記の12.b)で記載された方法(LW=LH=64)を用いてサブブロックに分けられる。
b)ステップ2:幅及び高さがもはや64よりも大きくないブロックについては、及びステップ1で生成されたサブブロックについては、そのサイズ(すなわち、幅×高さ)が1024よりも大きい場合に、それは更に、上記の12.c)で記載された方法(L1=1024及びL2=32)を用いてサイズ1024のサブブロックに分けられる。
【0201】
図29は、目下開示されている技術の様々な部分を実装するために利用され得るコンピュータシステム又は他の制御デバイス2600のためのアーキテクチャの例を表すブロック図である。
図29において、コンピュータシステム2600は、インターコネクト2625を介して接続された1つ以上のプロセッサ2605及びメモリ2610を含む。インターコネクト2625は、適切なブリッジ、アダプタ、又はコントローラによって接続されたあらゆる1つ以上の別個の物理バス、ポイント・ツー・ポイント接続、又はその両方を表してよい。インターコネクト2625は、従って、例えば、システムバス、ペリフェラル・コンポーネント・インターコネクト(Peripheral Component Interconnect,PCI)バス、ハイパー・トランスポート若しくは産業標準アーキテクチャ(Industry Standard Architecture,ISA)バス、スモール・コンピュータ・システム・インターフェース(Small Computer System Interface,SCSI)バス、ユニバーサル・シリアル・バス(Universal Serial Bus,USB)、IIC(I2C)バス、又はときどき「ファイアワイヤ(Firewire)」と呼ばれるIEEE(Institute of Electrical and Electronics Engineers)標準674バスを含んでよい。
【0202】
プロセッサ2605は、例えば、ホストコンピュータの全体の動作を制御する中央演算処理装置(CPU)を含んでよい。特定の実施形態では、プロセッサ2605は、メモリ2610に記憶されているソフトウェア又はファームウェアを実行することによってこれを達成する。プロセッサ2605は、1つ以上のプログラム可能な汎用又は専用のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラム可能なコントローラ、特定用途向け集積回路(ASIC)、プログラム可能ロジックデバイス(PLD)、など、あるいは、このようなデバイスの組み合わせであってよく、あるいは、これらを含んでもよい。
【0203】
メモリ2610は、コンピュータシステムのメインメモリであることも、又はそれを含むこともできる。メモリ2610は、あらゆる適切な形式のランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュメモリ、など、あるいは、このようなデバイスの組み合わせに相当する。使用中、メモリ2610は、とりわけ、機械命令の組を含んでよく、機械命令の組は、プロセッサ2605によって実行される場合に、プロセッサ2605に、目下開示されている技術の実施形態を実装するための動作を実行させる。
【0204】
また、プロセッサ2605にはインターコネクト2625を通じて(任意の)ネットワークアダプタ2615も接続される。ネットワークアダプタ2615は、コンピュータシステム2600に、記憶クライアントなどのリモートデバイス、及び/又は他の記憶サーバと通信する能力をもたらし、例えば、Ethernet(登録商標)アダプタ又はファイバチャネルアダプタであってよい。
【0205】
図30は、目下開示されている技術の様々な部分を実装するために利用され得るデバイス2700の例示的な実施形態のブロック図を示す。モバイルデバイス2700は、ビデオを処理することができるラップトップ、スマートフォン、タブレット、カムコーダ、又は他のタイプのデバイスであることができる。モバイルデバイス2700は、データを処理するプロセッサ又はコントローラ2701と、データを記憶及び/又はバッファリングするようプロセッサ2701と通信するメモリ2702とを含む。例えば、プロセッサ2701は、中央演算処理装置(CPU)又はマイクロコントローラユニット(MCU)を含むことができる。いくつかの実施では、プロセッサ2701は、フィールド・プログラマブル・ゲート・アレイ(FPGA)を含むことができる。いくつかの実施では、モバイルデバイス2700は、スマートフォンデバイスの様々な視覚及び/又は通信データ処理機能のためにグラフィクス処理ユニット(GPU)、ビデオ処理ユニット(VPU)、及び/又は無線通信ユニットを含むか、あるいは、そのようなものと通信する。例えば、メモリ2702は、プロセッサ実行可能コードを含み記憶することができる。プロセッサ実行可能コードは、プロセッサ2701によって実行される場合に、モバイルデバイス2700を、例えば、情報、コマンド、及び/又はデータの受信、情報及びデータの処理、並びにアクチュエータ又は外部ディスプレイなどの他のデバイスへの処理された情報/データの供給などの様々な動作を実行するように構成する。モバイルデバイス2700の様々な機能をサポートするために、メモリ2702は、命令、ソフトウェア、値、画像、及びプロセッサ2701によって処理若しくは参照される他のデータなどの情報及びデータを記憶することができる。例えば、様々なタイプのランダム・アクセス・メモリ(RAM)デバイス、リード・オンリー・メモリ(ROM)デバイス、フラッシュメモリデバイス、及び他の適切な記憶媒体が、メモリ2702の記憶機能を実装するために使用され得る。いくつかの実施では、モバイルデバイス2700は、プロセッサ2701及び/又はメモリ2702を他のモジュール、ユニット又はデバイスへインターフェース接続するための入出力(I/O)ユニット2703を含む。例えば、I/Oユニット2703は、例えば、クラウド内の1つ以上のコンピュータとユーザデバイスとの間などの典型的なデータ通信標準規格と互換性がある様々なタイプの無線インターフェースを利用するためにプロセッサ2701及びメモリ2702をインターフェース接続することができる。いくつかの実施では、モバイルデバイス2700は、I/Oユニット2703を介して有線接続を用いて他のデバイスとインターフェース接続することができる。モバイルデバイス2700はまた、プロセッサによって処理されること、メモリに記憶されること、又は表示デバイス2704若しくは外部デバイスの出力ユニットで示されることができるデータ及び情報を読み出し且つ転送するよう、データストレージなどの他の外部インターフェース、及び/又は視覚若しくはオーディオ表示デバイス2704ともインターフェース接続することができる。例えば、表示デバイス2704は、開示されている技術に従ってMVPに基づいて変更されたビデオフレームを表示することができる。
【0206】
図31は、ビデオ処理の方法3100のフローチャートである。方法3100は、多段階精緻化プロセスを用いて、現在のビデオブロックのビットストリーム表現からデコーディングされた動き情報に基づいて動きベクトル情報の複数の精緻化値を生成するステップ(3102)と、複数の精緻化値に基づいて現在のビデオブロックを再構成するか又は他のビデオブロックをデコーディングするステップ(3104)とを含む。
【0207】
他のビデオ処理方法は、現在のブロックと現在のブロックのビットストリーム表現との間の変換のために、現在のブロックの第1サブブロックのための多段階精緻化プロセスと、現在のブロックの第2サブブロックのための時間勾配変更プロセスとを実行するステップであり、多段階精緻化プロセスを用いて、現在のビデオブロックのビットストリーム表現で通知された動きベクトル情報の複数の精緻化値が生成される、ステップと、複数の精緻化値のうちの選択された1つを用いて現在のブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0208】
他のビデオ処理方法は、現在のブロックに対して多段階デコーダ側動きベクトル精緻化プロセスを用いて、最終的な動きベクトル決定するステップと、その最終的な動きベクトルを用いて現在のブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0209】
他のビデオ処理方法は、現在のビデオブロックと現在のビデオブロックのビットストリーム表現との間の変換中に、現在のビデオブロックの異なるサブブロックに複数の異なる動きベクトル精緻化プロセスを適用するステップと、複数の異なる動きベクトル精緻化プロセスから生成された現在のビデオブロックの最終的な動きベクトルを用いて、現在のビデオブロックとビットストリーム表現との間の変換を実行するステップとを含む。
【0210】
開示されている実施形態において、ビデオの現在のブロックのビットストリーム表現は、ビデオ圧縮技術で知られているように、非連続的であってよくかつヘッダ情報に依存し得るビットストリーム(ビデオの圧縮された表現)のビットを含んでよい。更に、現在のブロックは、ルーマ及びクロマ成分の1つ以上、又はその回転変形(例えば、YCrCb若しくはYUVなど)を表すサンプルを含んでよい。
【0211】
下記の箇条書きは、以下の通りにいくつかの実施形態及び技術について記載する。
【0212】
1.ビデオ処理の方法であって、多段階精緻化プロセスを用いて、現在のビデオブロックのビットストリーム表現からデコーディングされた動き情報に基づいて動きベクトル情報の複数の精緻化値を生成するステップと、前記複数の精緻化値に基づいて前記現在のビデオブロックを再構成するか又は他のビデオブロックをデコーディングするステップとを有する方法。例えば、精緻化動作は、平均化動作を含んでよい。更なる他の例では、精緻化プロセスの1つの段階の精緻化された値は、現在のビデオブロックを再構成するために使用される。更なる他の例では、精緻化プロセスの1つの段階の精緻化された値は、他のビデオブロックをデコーディングするために使用される。
【0213】
2.箇条1の方法であって、前記現在のビデオブロックを前記ビットストリーム表現から生成する変換を含む方法。
【0214】
3.箇条1の方法であって、前記ビットストリーム表現を前記現在のビデオブロックから生成する変換を含む方法。
【0215】
4.箇条1乃至3のうちいずれかの方法であって、前記多段階精緻化プロセスは、i=1~Nであるとして、i番目の段階の精緻化値を生成するために(i-1)番目の段階の精緻化値を使用することを含み、Nは、前記多段階精緻化プロセスの間に実行される精緻化段階の総数であり、Nは1よりも大きい、方法。
【0216】
5.箇条1乃至4のうちいずれかの方法であって、前記現在のビデオブロックと前記ビットストリーム表現との間の変換を実行するステップを更に有し、該変換を実行するステップは、前記多段階精緻化プロセスの段階で、当該段階のための前記動きベクトル情報の精緻化値を用いて前記現在のビデオブロックの動き補償された参照ブロックを生成することを含む、方法。
【0217】
6.箇条5の方法であって、前記動き補償された参照ブロックを生成することは、前記多段階精緻化プロセスのいくつかの段階に対して異なるフィルタを使用する、方法。
【0218】
7.箇条1乃至6のうちいずれかの方法であって、前記現在のビデオブロックと前記ビットストリーム表現との間の変換を実行するステップを更に有し、該変換を実行するステップは、各段階で、その段階のために生成された精緻化された動きベクトルを用いて参照ブロックを生成することを含む、方法。
【0219】
8.箇条7の方法であって、前記参照ブロックは、前記精緻化された動きベクトルを最初に整数値に丸めることによって生成される、方法。
【0220】
9.箇条1の方法であって、前記多段階精緻化プロセスの段階は、前記現在のビデオブロックを複数のサブブロックに分けることと、該複数のサブブロックの少なくとも一部について追加の多段階精緻化プロセスを実行することとを含む、方法。
【0221】
10.箇条9の方法であって、前記追加の多段階精緻化プロセスは、前記複数のサブブロックの全てについて実行される、方法。
【0222】
11.箇条9又は10の方法であって、前記現在のビデオブロックを分割することは、前記現在のビデオブロックの特性に基づいて、前記多段階精緻化プロセスの複数の段階を実施した後に実行される、方法。
【0223】
12.箇条9乃至11のうちいずれかの方法であって、前記現在のビデオブロックを分割することは、少なくとも2つの段階で、異なるサイズのサブブロックが前記追加の多段階精緻化プロセスに対して使用されるように、段階依存の様態で前記現在のビデオブロックを分割することを含む、方法。
【0224】
13.箇条1乃至12のうちいずれかの方法であって、前記複数の精緻化値のうちの選択された1つは、前記複数の精緻化値の加重平均によって計算される、方法。
【0225】
14.箇条1の方法であって、前記多段階精緻化プロセスを終了する前に実行される段階の数は、成功した段階における精緻化値の変化が使用を超えることに基づいて決定される、方法。
【0226】
15.箇条14の方法であって、前記指標は、ある段階の精緻化値の垂直又は水平成分と前記ビットストリーム表現で通知された動き情報との間の絶対差を含む、方法。
【0227】
16.箇条14の方法であって、前記多段階精緻化プロセスを終了する前に実行される前記段階の数は、前記現在のビデオブロックの特性の関数である、方法。
【0228】
17.箇条16の方法であって、前記現在のビデオブロックの前記特性は、前記現在のビデオブロックのサイズ又は前記現在のビデオブロックのコーディングモード又は前記現在のビデオブロックの動きベクトル差の値又は量子化パラメータを含む、方法。
【0229】
18.箇条14の方法であって、前記多段階精緻化プロセスを終了する前に実行される前記段階の数は、ビデオレベル、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、コーディングツリーユニットレベル又はコーディングユニットレベルにおいて前記ビットストリーム表現で通知される、方法。
【0230】
19.箇条1乃至18のうちいずれかの方法であって、前記複数の精緻化値のうちの選択された1つは、前記多段階精緻化プロセスの最後の段階で計算された精緻化値である、方法。
【0231】
20.箇条1乃至19のうちいずれかの方法であって、前記多段階精緻化プロセスの各段階中に、中間動きベクトルは、前の段階から生成され、該前の段階の後に、次の段階のために、精緻化された推定を計算するために使用される、方法。
【0232】
21.ビデオ処理の方法であって、
現在のブロックと該現在のブロックのビットストリーム表現との間の変換のために、前記現在のブロックのサブブロックのための多段階精緻化プロセスと、前記サブブロックの2つの予測ブロック間の時間勾配変更プロセスとを実行するステップであり、前記多段階精緻化プロセスを用いて、動きベクトル情報の複数の精緻化値が、前記現在のブロックの前記ビットストリーム表現からデコーディングされた動き情報に基づいて生成される、ステップと、
前記現在のブロックと前記ビットストリーム表現との間の前記変換を精緻化値に基づいて実行するステップと
を有する方法。
【0233】
22.箇条21の方法であって、第2サブブロックはM1×N1個のピクセルを有し、第1サブブロックはM2×M2個のピクセルを有し、M1、N1、M2及びN2は整数である、方法。
【0234】
23.箇条22の方法であって、M1=N1=8、M2=N2=4である、方法。
【0235】
24.箇条21乃至23のうちいずれかの方法であって、M1、N1、M2及びN2は、予め定義されるか、あるいは、前記現在のブロックのサイズ又はコーディングモードに依存するか、あるいは、ビデオレベル、シーケンスレベル、ピクチャレベル、スライスレベル、ピクチャヘッダレベル、又はタイルレベルにおいて通知される、方法。
【0236】
25.箇条1乃至24のうちいずれかの方法であって、前記多段階精緻化プロセスの各段階は、前記現在のブロック又は該現在のブロックのサブブロックの部分ピクセルを使用する、方法。
【0237】
26.箇条25の方法であって、前記多段階精緻化プロセスは、N番目ごとの行又は列からのピクセルを使用する、方法。
【0238】
27.ビデオ処理の方法であって、現在のビデオブロックに対して多段階デコーダ側動きベクトル精緻化プロセスを用いて、最終的な動きベクトルを決定するステップと、前記現在のビデオブロックと前記ビットストリーム表現との間の変換を前記最終的な動きベクトルを用いて実行するステップとを有する方法。
【0239】
28.箇条27の方法であって、前記現在のビデオブロックに対する前記多段階デコーダ側動きベクトル精緻化プロセスは、箇条1に記載の多段階精緻化プロセスのi番目の段階での精緻化値に対して実行され、iは整数である、方法。
【0240】
29.箇条27又は28の方法であって、前記多段階精緻化プロセスに使用される補間フィルタは、他のブロックの変換に使用される補間フィルタとは異なる、方法。
【0241】
30.箇条1乃至26のいずれかの方法であって、前記複数の精緻化値のうちの選択された1つは、ルーマ及びCr、Cbクロマ成分のサブセットの動き補償のために使用される、方法。
【0242】
31.箇条30の方法であって、前記サブセットは、前記ルーマ成分に対応する、方法。
【0243】
32.箇条30の方法であって、前記サブセットは、前記クロマ成分に対応する、方法。
【0244】
33.箇条32の方法であって、前記クロマ成分の前記動き補償は、前記クロマ成分のサブサンプリングされたバージョンが動き補償のために使用される低バンド幅動き補償プロセスを有する、方法。
【0245】
34.ビデオ処理の方法であって、現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換中に、前記現在のビデオブロックの異なるサブブロックに対して複数の異なる動きベクトル精緻化プロセスを適用するステップと、前記複数の異なる動きベクトル精緻化プロセスから生成された前記現在のビデオブロックの最終的な動きベクトルを用いて、前記現在のビデオブロックと前記ビットストリーム表現との間の変換を実行するステップとを有する方法。
【0246】
35.箇条34の方法であって、前記変換は、前記現在のビデオブロックを前記ビットストリーム表現から生成する、方法。
【0247】
36.箇条34の方法であって、前記変換は、前記ビットストリーム表現を前記現在のビデオブロックから生成する、方法。
【0248】
37.箇条34乃至36のうちいずれかの方法であって、前記複数の異なる動きベクトル精緻化プロセスは、双方向オプティカルフロープロセス又は多段階精緻化プロセスを含む、方法。
【0249】
38.箇条34乃至37のうちいずれかの方法であって、前記複数の異なる動きベクトル精緻化プロセスは、前記サブブロックのサイズ若しくはコーディングモード又は前記現在のビデオブロック内での前記サブブロックの位置又は前記現在のブロックをコーディングするために使用された参照ピクチャのタイプに基づいて、前記サブブロックに選択的に適用される、方法。
【0250】
39.箇条38の方法であって、前記参照ピクチャが前記現在のビデオブロックの現在のコーディングピクチャである場合に、前記複数の異なる動きベクトル精緻化プロセスを適用することを控えることを更に含む方法。
【0251】
40.箇条1乃至39のうちいずれかの方法であって、前記現在のブロックは、予測ユニット又はコーディングユニット又はブロック又はサブブロックに対応する、方法。
【0252】
41.ビデオ処理の方法であって、
現在のビデオブロックと現在のビデオブロックのビットストリーム表現との間の変換を、現在のビデオブロックがサブブロックベースのコーディングツールによりコーディングされる場合にコーディングユニット又は予測ユニットが使用するサブブロックの最大数を制限する規則を用いて実行するステップを有し、サブブロックベースのコーディングツールは、アフィンコーディング、ATMVP(Advanced Temporal Motion Vector Predictor)、双方向オプティカルフロー又はデコーダ側動きベクトル精緻化コーディングツールの1つ以上を含む、方法。
【0253】
42.箇条41の方法であって、前記規則は、前記サブブロックの幅又は高さを更に規定する、方法。
【0254】
43.箇条42の方法であって、前記現在のビデオブロックは、M×N個のピクセルを含み、前記サブブロックは、サイズがK×Lピクセルであり、K、L、M及びNは整数である、方法。
【0255】
44.箇条43の方法であって、各サブブロックの幅は、最大THw及びM/Kであり、THwは整数である、方法。
【0256】
45.箇条43又は44の方法であって、各サブブロックの幅は、最大THh及びN/Lであり、THhは整数である、方法。
【0257】
46.ビデオ処理の方法であって、
現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換を、前記現在のビデオブロックがサブブロックベースのコーディングツールによりコーディングされる場合に現在のビデオブロックのクロマ成分のために現在のビデオブロックのルーマ成分とは異なったパーティショニングを使用することを定める規則を用いて実行するステップを有し、サブブロックベースのコーディングツールは、アフィンコーディング、ATMVP、双方向オプティカルフロー、又はデコーダ側動きベクトル精緻化コーディングツールの1つ以上を含む、方法。
【0258】
47.箇条46の方法であって、前記規則は、前記現在のビデオブロック又は該現在のビデオブロックの前記クロマ成分のサイズ及び幅に基づいてクロマ成分のためのパーティショニングを定める、方法。
【0259】
48.箇条41乃至47のうちいずれかの方法であって、前記変換は、前記現在のビデオブロックのピクセル値を前記ビットストリーム表現から生成することを含む、方法。
【0260】
49.箇条41乃至47のうちいずれかの方法であって、前記ビットストリーム表現を前記現在のビデオブロックのピクセル値から生成することを含む、方法。
【0261】
50.箇条9の方法であって、前記現在のビデオブロックを複数のサブブロックに分けることは、前記現在のビデオブロックのサイズに基づいて前記複数のサブブロックのサイズを決定することを含む、方法。
【0262】
51.ビデオ処理の方法であって、双方向オプティカルフロー(BI-directional Optical flow,BIO)技術又はデコーダ側動きベクトル精緻化(Decoder-side Motion Vector Refinement,DMVR)技術の早期終了段階で、現在のビデオブロックと関連付けられた参照ビデオブロック間の差を決定するステップを有する方法。その差に基づいた前記現在のビデオブロックの更なる処理が実行され得る。
【0263】
52.箇条51の方法であって、前記差を決定するステップは、前記参照ビデオブロックの偶数行に基づく、方法。
【0264】
53.箇条51の方法であって、前記差を決定するステップは、前記参照ビデオブロックのコーナーサンプルに基づく、方法。
【0265】
54.箇条51の方法であって、前記差を決定するステップは、前記参照ビデオブロックのサブブロックに基づく、方法。
【0266】
55.箇条51の方法であって、前記参照ビデオブロックは、第1参照ビデオブロック及び第2参照ビデオブロックを含み、前記差は、前記第1参照ビデオブロックと前記第2参照ビデオブロックとの間の差の合計に基づく、方法。
【0267】
56.箇条51乃至55の方法であって、前記差は、絶対差分和(SAD)、絶対変換差分和(SATD)、残差平方和(SSE)、平均除去絶対差分和(MRSAD)、平均除去絶対変換差分和(MRSATD)、又は平均除去残差平方和(MRSSE)の1つ以上を含む、方法。
【0268】
57.箇条1乃至56のいずれか1つ以上に記載の方法を実装するよう構成されたプロセッサを有するビデオ処理装置。
【0269】
58.非一時的なコンピュータ可読媒体に記憶されているコンピュータプログラム製品であって、箇条1乃至56のうちいずれか1つに記載の方法を実行するためのプログラムコードを含むコンピュータプログラム製品。
【0270】
図32は、ビデオ処理の方法3200についてのフローチャートである。方法3200は、ビデオの現在のブロックと現在のブロックのビットストリーム表現との間の変換中に、現在のブロックと関連付けられた2つの参照ブロックの間の差、又は現在のブロック内のサブブロックと関連付けられた2つの参照サブブロックの間の差を、参照ブロックの代表位置又は参照サブブロックの代表位置に基づいて計算するステップ(3202)と、差に基づいて変換を実行するステップ(3204)とを含む。
【0271】
いくつかの例において、差を計算するステップは、2つの参照ブロック及び/又は2つの参照サブブロックのインターレースされた位置の差を計算するステップを有する。
【0272】
いくつかの例において、差を計算するステップは、2つの参照ブロック及び/又は2つの参照サブブロックの偶数行の差を計算するステップを有する。
【0273】
いくつかの例において、差を計算するステップは、2つの参照ブロック及び/又は2つの参照サブブロックの4つのコーナーサンプルの差を計算するステップを有する。
【0274】
いくつかの例において、差を計算するステップは、2つの参照ブロックの間の差を、参照ブロック内の代表サブブロックに基づいて計算するステップを有する。
【0275】
いくつかの例において、代表位置は、所定のストラテジを使用することによって選択される。
【0276】
いくつかの例において、差に基づいて変換を実行するステップは、サブブロックについて差を取得するよう、参照サブブロックの代表位置に対して計算された差を合計するステップを有する。
【0277】
いくつかの例において、差に基づいて変換を実行するステップは、現在のブロックについて差を取得するよう、参照ブロックの代表位置に対して計算された差を合計するステップを有する。
【0278】
いくつかの例において、差分計算に依存する予測精緻化処理又は動きベクトル精緻化処理の早期終了段階で差を計算する。
【0279】
いくつかの例において、差に基づいて変換を実行するステップは、現在のブロックについて差を取得するよう、代表位置に対して計算された差を合計するステップと、現在のブロックの差に基づいて、差分計算に依存する予測精緻化処理又は動きベクトル精緻化処理が現在のブロックについて有効又は無効であるかどうかを決定するステップとを有する。
【0280】
いくつかの例において、予測精緻化処理は、双方向オプティカルフロー(BIO)技術を含み、且つ/あるいは、動きベクトル精緻化処理は、デコーダ側動きベクトル精緻化(DMVR)技術又はフレームレートアップコンバージョン(FRUC)技術を含む。
【0281】
いくつかの例において、差は、絶対差分和(SAD)、絶対変換差分和(SATD)、残差平方和(SSE)、平均除去絶対差分和(MRSAD)、平均除去絶対変換差分和(MRSATD)、又は平均除去残差平方和(MRSSE)の1つ以上を含む。
【0282】
図33は、ビデオ処理の方法3300についてのフローチャートである。方法3300は、ビデオの現在のブロックが特定のコーディングモードを用いてコーディングされているとの決定に基づいて、現在のブロックのためのデコーダ側動きベクトル導出(DMVD)ツールの選択的有効化に関して判断するステップであり、DMVDツールは、ビデオのビットストリーム表現において伝えられた動き情報の精緻化を導出する、ステップ(3302)と、判断に基づいて、現在のブロックとビットストリーム表現との間の変換を実行するステップ(3304)とを含む。
【0283】
いくつかの例において、DMVDツールは、現在のブロックの予測信号がイントラ予測信号及びインター予測信号に少なくとも基づいて生成されると決定される場合に使用不可能である。
【0284】
いくつかの例において、DMVDツールは、現在のブロックの予測信号がイントラ予測信号及びインター予測信号に少なくとも基づいて生成されると決定される場合に使用可能である。
【0285】
いくつかの例において、現在のブロックは、CIIP(Combined Inter and Intra Prediction)モードでコーディングされる。
【0286】
いくつかの例において、DMVDツールは、現在のブロックがマージモード及び動きベクトル差によりコーディングされると決定される場合に使用不可能である。
【0287】
いくつかの例において、DMVDツールは、現在のブロックがマージモード及び動きベクトル差によりコーディングされると決定される場合に使用可能である。
【0288】
いくつかの例において、現在のブロックは、MMVD(Merge mode with Motion Vector Difference)モードでコーディングされる。
【0289】
いくつかの例において、DMVDツールは、現在のブロックが複数のサブ領域によりコーディングされ、複数のサブ領域の少なくとも1つが非長方形であると決定される場合に使用不可能である。
【0290】
いくつかの例において、DMVDツールは、現在のブロックが複数のサブ領域によりコーディングされ、複数のサブ領域の少なくとも1つが非長方形であると決定される場合に使用可能である。
【0291】
いくつかの例において、現在のブロックは、三角予測モードによりコーディングされる。
【0292】
いくつかの例において、DMVDツールは、デコーダ側動きベクトル精緻化(DMVR)ツールを有する。
【0293】
いくつかの例において、DMVDツールは、双方向オプティカルフロー(BDOF)ツールを有する。
【0294】
いくつかの例において、DMVDツールは、フレームレートアップコンバージョン(FRUC)ツール又は他のデコーダ側動きベクトル精緻化方法若しくはサンプル精緻化方法を有する。
【0295】
いくつかの例において、変換は、ビットストリーム表現から現在のブロックを生成する。
【0296】
いくつかの例において、変換は、現在のブロックからビットストリーム表現を生成する。
【0297】
本明細書で説明されている開示の及び他の実施形態、モジュール及び機能動作は、デジタル電子回路において、あるいは、本明細書で開示されている構造及びそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、又はハードウェアにおいて、あるいは、それらの1つ以上の組み合わせにおいて実装可能である。開示の及び他の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置による実行のために又はその動作を制御するためにコンピュータ可読媒体上でエンコーディングされたコンピュータプログラム命令の1つ以上のモジュールとして、実装可能である。コンピュータ可読媒体は、機械読み出し可能な記憶デバイス、機械読み出し可能な記憶担体、メモリデバイス、機械読み出し可能な伝搬信号をもたらす組成物、又はそれらの1つ以上の組み合わせであることができる。「データ処理装置」との用語は、例として、プログラム可能なプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含め、データを処理する全ての装置、デバイス、及び機械を包含する。装置は、ハードウェアに加えて、問題となっているコンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はそれらの1つ以上の組み合わせを構成するコードを含むことができる。伝搬信号は、人工的に生成された信号、例えば、機械により生成された電気的、光学的、又は電磁気的信号であって、適切なレシーバ装置への伝送のために情報をエンコーディングするよう生成される。
【0298】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる。)は、コンパイル済み又は解釈済みの言語を含む如何なる形式のプログラミング言語でも記述可能であり、それは、スタンドアロンプログラムとして又はコンピューティング環境における使用に適したモジュール、コンポーネント、サブルーチン、若しくは他のユニットとしてを含め、如何なる形式でもデプロイ可能である。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応しない。プログラムは、問題となっているプログラムに専用の単一のファイルで、又は複数の協調したファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を保存するファイル)で、他のプログラム又はデータ(例えば、マークアップ言語文書で保存された1つ以上のスクリプト)を保持するファイルの部分において保存可能である。コンピュータプログラムは、1つのコンピュータで、あるいは、1つの場所に位置しているか、又は複数の場所にわたって分布しており、通信ネットワークによって相互接続されている複数のコンピュータで実行されるようデプロイ可能である。
【0299】
本文書で説明されているプロセス及びロジックフローは、入力データに作用して出力を生成することによって機能を実行するよう1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。プロセス及びロジックフローはまた、専用のロジック回路、例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)によっても実行可能であり、装置は、そのようなものとしても実装され得る。
【0300】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用のマイクロプロセッサ及び専用のマイクロプロセッサの両方、並びにあらゆる種類のデジタルコンピュータのいずれか1つ以上のプロセッサを含む。一般に、プロセッサは、リード・オンリー・メモリ若しくはランダム・アクセス・メモリ又はその両方から命令及びデータを受け取ることになる。コンピュータの必須の要素は、命令を実行するプロセッサと、命令及びデータを保存する1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを保存する1つ以上の大容量記憶デバイス、例えば、磁気、光学磁気ディスク、又は光ディスクを含むか、あるいは、そのような1つ以上の大容量記憶デバイスからのデータの受信若しくはそれへのデータの転送又はその両方のために動作可能に結合されることになる。しかし、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令及びデータを保存するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス;磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク;光学磁気ディスク;並びにCD ROM及びDVD-ROMディスクを含む全ての形式の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、専用のロジック回路によって強化されるか、あるいは、それに組み込まれ得る。
【0301】
本明細書は、多数の詳細を含むが、それらは、あらゆる発明の又は請求される可能性があるものの範囲に対する限定としてではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別々の実施形態に関連して本明細書で説明されている特定の特徴は、単一の実施形態では組み合わせても実装可能である。逆に、単一の実施形態に関連して説明されている様々な特徴はまた、複数の実施形態で別々に、又は何らかの適切なサブコンビネーションでも実装可能である。更に、特徴は、特定の組み合わせで動作するものとして先に説明され、更には、そのようなものとして最初に請求されることがあるが、請求されている組み合わせからの1つ以上の特徴は、いくつかの場合に、その組み合わせから削除可能であり、請求されている組み合わせは、サブコンビネーション又はサブコンビネーションの変形に向けられてもよい。
【0302】
同様に、動作は、特定の順序で図面において表されているが、これは、所望の結果を達成するために、そのような動作が示されているその特定の順序で又は順次的な順序で実行されること、あるいは、表されている全ての動作が実行されることを求めている、と理解されるべきではない。更に、本明細書で説明されている実施形態における様々なシステムコンポーネントの分離は、全ての実施形態でそのような分離を求めている、と理解されるべきではない。
【0303】
ほんのわずかの実施及び例が説明されており、他の実施、強化及び変形は、本明細書で記載及び例示されているものに基づいて行われ得る。