(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024153737
(43)【公開日】2024-10-29
(54)【発明の名称】オプティカルフローベースのビデオフレーム間予測
(51)【国際特許分類】
H04N 19/105 20140101AFI20241022BHJP
H04N 19/577 20140101ALI20241022BHJP
H04N 19/136 20140101ALI20241022BHJP
【FI】
H04N19/105
H04N19/577
H04N19/136
【審査請求】有
【請求項の数】24
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024118460
(22)【出願日】2024-07-24
(62)【分割の表示】P 2023022545の分割
【原出願日】2020-03-19
(31)【優先権主張番号】201931010751
(32)【優先日】2019-03-19
(33)【優先権主張国・地域又は機関】IN
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】セテューラマン,スリラム
(72)【発明者】
【氏名】エー,ジーバ ラジ
(72)【発明者】
【氏名】コテチャ・サガール
(57)【要約】 (修正有)
【課題】オプティカルフローを使用する双方向予測のフレーム間予測のための方法及び装置を提供する。
【解決手段】方法は、ビデオ信号の現在のコーディングブロックについて一対の動きベクトルを取得することと、現在のブロックの予測を、それぞれの基準フレームからのその一対の動きベクトルを使用して生成することと、予測におけるサンプル値に基づいて、現在のコーディングブロックについてオプティカルフローを決定することと、オプティカルフローの一方の成分を、オプティカルフローの他方の成分に基づいて決定し、決定したオプティカルフローを使用して現在のコーディングブロックに対して、双方向予測オプティカルフロー(BPOF)を実行することと、を含む。
【選択図】
図8
【特許請求の範囲】
【請求項1】
ビデオデータを複号化するためのデバイスにおいて使用するビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のための方法であって、
受信したビットストリームを解析して指示情報を取得するステップであって、前記指示情報は前記現在のブロックについての動きベクトルの対を示す、ステップと、
前記指示情報に基づいて、第1の基準フレーム及び第2の基準フレームに関して、前記現在のブロックについての動きベクトルの前記対を決定するステップと、
前記第1の基準フレーム及び前記第2の基準フレームに関して、前記現在のブロックについての動きベクトルの前記対を使用して、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームから、前記第1の基準フレームに対応する予測サンプル値及び前記第2の基準フレームに対応する予測サンプル値を取得するステップと、
前記現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するステップであって、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の第1の項の総和を示し、前記複数の第1の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の垂直方向の予測されたサンプル勾配及び前記第2の垂直方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応する、ステップと、
前記第1の基準フレームに対応する前記予測サンプル値と、前記第2の基準フレームに対応する前記予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を決定するステップと、
を含む方法。
【請求項2】
前記垂直方向の動きオフセットは、前記水平方向の動きオフセット、第2の変数s2、第4の変数s4、及び前記第5の変数s5に基づいて導出され、
前記第2の変数s2は、前記第2の行列の要素の絶対値の総和を示し、
前記第4の変数s4は、複数の第2の項の総和を示し、前記複数の第2の項の各々は、前記第2の行列の要素の符号及び第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第2の行列の前記要素に対応し、前記第3の行列の各々の要素は、前記第3の行列の前記要素に対応する前記第1の基準フレームの第1の予測されたサンプル及び前記第3の行列の前記要素に対応する前記第2の基準フレームの第2の予測されたサンプルから取得される差である、請求項1に記載の方法。
【請求項3】
前記水平方向の動きオフセットは、第1の変数s1及び第3の変数s3に基づいて導出され、
前記第1の変数s1は、前記第1の行列の要素の絶対値の総和を示し、
前記第3の変数s3は、複数の第3の項の総和を示し、前記複数の第3の項の各々は、前記第1の行列の要素の符号及び前記第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第1の行列の前記要素に対応する、請求項2記載の方法。
【請求項4】
前記水平方向の動きオフセットは、
【数58】
にしたがって決定され、v
xは、前記水平方向の動きオフセットを表す、請求項3に記載の方法。
【請求項5】
前記垂直方向の動きオフセットv
yは、
【数59】
にしたがって決定され、
v
xは、前記水平方向の動きのオフセットを表し、
v
yは、前記垂直方向の動きオフセットを表す、請求項2に記載の方法。
【請求項6】
s
1、s
2、s
3、s
4、及びs
5は、
【数60】
として決定され、
I
(0)は、前記第1の基準フレームに対応する前記予測されたサンプル値から取得され、I
(1)は、前記第2の基準フレームに対応する前記予測されたサンプル値から取得され、
G
x0及びG
x1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記水平方向の予測されたサンプル勾配のセットを示し、
G
y0及びG
y1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記垂直方向の予測されたサンプル勾配のセットを示し、
i及びjは、整数であり、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する、請求項4又は5に記載の方法。
【請求項7】
前記Gx0は、水平方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy0は、垂直方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される、請求項6に記載の方法。
【請求項8】
前記Gx1は、水平方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy1は、垂直方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される、請求項6に記載の方法。
【請求項9】
前記ビットストリームを解析することにより基準フレーム指標も取得され、前記基準フレーム指標は、第1の基準フレームリストL0からの前記第1の基準フレームが、動きベクトルの前記対のうちの動きベクトルMV0と関連し、且つ、第2の基準フレームリストL1からの前記第2の基準フレームが、動きベクトルの前記対のうちの動きベクトルMV1と関連するということを示す、請求項1乃至8のうちのいずれか1項に記載の方法。
【請求項10】
前記現在のブロックについての前記予測サンプル値は、双方向オプティカルフロー(BDOF)予測に基づく双方向予測されたサンプル値である、請求項1乃至9のうちのいずれか1項に記載の方法。
【請求項11】
ビデオデータを複号化するためのデバイスであって、
ビデオデータメモリと、
ビデオエンコーダと、を含み、前記ビデオエンコーダは、
受信したビットストリームを解析して、現在のブロックについての動きベクトルの対を示す指示情報を取得し、
前記指示情報に基づいて、第1の基準フレーム及び第2の基準フレームに関して、前記現在のブロックについての動きベクトルの前記対を決定し、
前記第1の基準フレーム及び前記第2の基準フレームに関して、前記現在のブロックについての動きベクトルの前記対を使用して、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームから、前記第1の基準フレームに対応する予測サンプル値及び前記第2の基準フレームに対応する予測サンプル値を取得し、
前記現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するように構成されており、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の第1の項の総和を示し、前記複数の第1の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の垂直方向の予測されたサンプル勾配及び前記第2の垂直方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応し、
前記ビデオエンコーダは、前記第1の基準フレームに対応する前記予測サンプル値と、前記第2の基準フレームに対応する前記予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を決定するように構成されている、デバイス。
【請求項12】
前記垂直方向の動きオフセットは、前記水平方向の動きオフセット、第2の変数s2、第4の変数s4、及び前記第5の変数s5に基づいて導出され、
前記第2の変数s2は、前記第2の行列の要素の絶対値の総和を示し、
前記第4の変数s4は、複数の第2の項の総和を示し、前記複数の第2の項の各々は、前記第2の行列の要素の符号及び第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第2の行列の前記要素に対応し、前記第3の行列の各々の要素は、前記第3の行列の前記要素に対応する前記第1の基準フレームの第1の予測されたサンプル及び前記第3の行列の前記要素に対応する前記第2の基準フレームの第2の予測されたサンプルから取得される差である、請求項11に記載のデバイス。
【請求項13】
前記水平方向の動きオフセットは、第1の変数s1及び第3の変数s3に基づいて導出され、
前記第1の変数s1は、前記第1の行列の要素の絶対値の総和を示し、
前記第3の変数s3は、複数の第3の項の総和を示し、前記複数の第3の項の各々は、前記第1の行列の要素の符号及び前記第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第1の行列の前記要素に対応する、請求項12に記載のデバイス。
【請求項14】
前記水平方向の動きオフセットは、
【数61】
にしたがって決定され、v
xは、前記水平方向の動きオフセットを表す、請求項13に記載のデバイス。
【請求項15】
前記垂直方向の動きオフセットv
yは、
【数62】
にしたがって決定され、
v
xは、前記水平方向の動きのオフセットを表し、
v
yは、前記垂直方向の動きオフセットを表す、請求項12に記載のデバイス。
【請求項16】
s
1、s
2、s
3、s
4、及びs
5は、
【数63】
として決定され、
I
(0)は、前記第1の基準フレームに対応する前記予測されたサンプル値から取得され、I
(1)は、前記第2の基準フレームに対応する前記予測されたサンプル値から取得され、
G
x0及びG
x1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記水平方向の予測されたサンプル勾配のセットを示し、
G
y0及びG
y1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記垂直方向の予測されたサンプル勾配のセットを示し、
i及びjは、整数であり、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する、請求項14又は15に記載のデバイス。
【請求項17】
前記Gx0は、水平方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy0は、垂直方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される、請求項16に記載のデバイス。
【請求項18】
前記Gx1は、水平方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy1は、垂直方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される、請求項16に記載のデバイス。
【請求項19】
前記ビットストリームを解析することにより基準フレーム指標も取得され、前記基準フレーム指標は、第1の基準フレームリストL0からの前記第1の基準フレームが、動きベクトルの前記対のうちの動きベクトルMV0と関連し、且つ、第2の基準フレームリストL1からの前記第2の基準フレームが、動きベクトルの前記対のうちの動きベクトルMV1と関連するということを示す、請求項11乃至18のうちのいずれか1項に記載のデバイス。
【請求項20】
前記現在のブロックについての前記予測サンプル値は、双方向オプティカルフロー(BDOF)予測に基づく双方向予測されたサンプル値である、請求項11乃至19のうちのいずれか1項に記載のデバイス。
【請求項21】
請求項1乃至10のうちのいずれか1項に記載の方法を実行するための処理回路を含むデコーダ(20)。
【請求項22】
請求項1乃至10のうちのいずれか1項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
【請求項23】
コンピュータデバイスによって実行されるときに、前記コンピュータデバイスに請求項1乃至10のうちのいずれか1項に記載の方法を実行させるプログラムコードを格納する非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項24】
デコーダであって、
1つ又は複数のプロセッサと、
前記プロセッサに結合されて、前記プロセッサによって実行するためのプログラミングを格納する非一時的なコンピュータ読み取り可能な記憶媒体と、を含み、前記プロセッサによって実行されるときに、前記プログラミングは、請求項1乃至10のうちのいずれか1項に記載の方法を実行するように当該デコーダを構成する、デコーダ。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この出願は、2019年3月19日付で出願された"オプティカルフローに基づくフレーム間予測のためのエンコーダ、デコーダ、及び対応する方法"と題するインド仮出願第IN201931010751号に基づく優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【0002】
[技術分野]
本開示は、ビデオ符号化及び復号化に関し、特に、オプティカルフローを使用する双方向予測のフレーム間予測のための方法及び装置に関する。
【背景技術】
【0003】
ビデオコーディング(ビデオ符号化及び復号化)は、例えば、ブロードキャストディジタルTV、インターネット及びモバイルネットワークを介するビデオ伝送、ビデオチャット及びビデオ会議等のリアルタイム対話型アプリケーション、DVD及びブルーレイディスク、ビデオコンテンツの収集及び編集システム、及び、セキュリティアプリケーションのビデオカメラ等の広範囲のディジタルビデオアプリケーションにおいて使用される。比較的短いビデオを描写するのに必要となるビデオデータの量でさえも、相当な量であり、そのビデオデータの量は、そのデータがストリーミングされるか、又は、他の場合に、限定された帯域幅容量を有する通信ネットワークを通じて通信されるときに、困難をもたらす場合がある。したがって、ビデオデータは、一般的に、現代の遠隔通信ネットワークを通じて通信される前に圧縮される。メモリリソースが制限される場合があるため、記憶デバイスにビデオを格納するときに、ビデオのサイズは、また、問題となる場合がある。
【0004】
ビデオ圧縮デバイスは、発信元においてソフトウェア及び/又はハードウェアを使用して、伝送又は格納の前にビデオデータをコーディングすることがよくあり、それにより、ディジタルビデオ画像を表すのに必要となるデータの量を減少させる。圧縮されたデータは、その次に、ビデオデータを復号化するビデオ解凍デバイスによって宛先で受信される。ネットワークリソースが限られているとともに、より高いビデオ品質の要求が絶えず増加しているため、映像品質をほとんど犠牲にすることなく圧縮比を改善する改良された圧縮及び解凍技術は望ましい。
【0005】
ビデオ圧縮の場合に、フレーム間予測は、現在のブロックに対する動きベクトルを指定することによって、以前に復号化されている基準映像の再構成されたサンプルを使用するプロセスである。空間的な動きベクトル予測器又は時間的な動きベクトル予測器を使用することによって、予測残差として、これらの動きベクトルをコーディングすることが可能である。それらの動きベクトルをサブピクセル精度とすることが可能である。再構成された整数位置の値から基準フレームの中のサブピクセル精度のピクセル値を導出するために、補間フィルタが適用される。
【0006】
双方向予測は、現在のブロックについての予測が、2つの基準映像領域からの2つの動きベクトルを使用して導出される2つの予測ブロックの重みづけされている組み合わせとして導出されるプロセスを指す。この場合には、それらの動きベクトルに加えて、また、それらの2つの予測ブロックが導出される基準映像の基準インデックスをコーディングする必要がある。空間的に隣接する動きベクトル及び基準インデックスがいかなる動きベクトル残差もコーディングすることなく受け継がれるマージプロセスによって、また、現在のブロックのための動きベクトルを導出することが可能である。空間的隣接に加えて、以前にコーディングされている基準フレームの動きベクトルも、また、現在のブロックの基準フレームへの距離に対するそれらの基準フレームへの距離に注意を払うために、格納され、そして、動きベクトルの適切なスケーリングを伴う時間的マージオプションとして使用される。
【0007】
双方向予測のオプティカルフロー(BPOF)は、双方向予測のためのブロックごとの動き補償にさらに加えて実行されるサンプルごとの動き精緻化である。オプティカルフローの従来の推定は、複雑さの問題又は圧縮効率ギャップを伴うので、オプティカルフローに基づくフレーム間予測のための改善されたデバイス及び方法を必要とする。
【発明の概要】
【0008】
本開示の複数の例は、ビデオ信号の効率を改善することが可能であるオプティカルフローを使用して、双方向予測のフレーム間予測によって画像を符号化し及び復号化するためのフレーム間予測装置及び方法を提供する。本開示は、この出願に含まれるそれらの複数の例及び特許請求の範囲によって詳述される。
【0009】
第1の態様によれば、この開示は、ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のための方法であって、
前記現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するステップであって、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の項の総和を示し、前記複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応する、ステップと、
前記第1の基準フレームに対応する予測サンプル値と、前記第2の基準フレームに対応する予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を決定するステップと、を含む、方法に関する。
【0010】
現在のブロックは、4×4ブロック等の任意のサイズのブロックであってもよいということに留意すべきである。現在のブロックは、ビデオ信号のフレームのサブブロックであってもよい。例えば、(x,y)といったように、そのフレームの(例えば、最上部左方のピクセル等の)左上角に対するピクセルの絶対位置を使用して、又は、例えば、(xBlock+i,yBlock+j)といったように、そのブロックの(例えば、最上部左方のピクセル等の)左上角を基準とするピクセルの相対的位置を使用して、現在のブロックのピクセルを指し示してもよい。ここでは、(xBlock,yBlock)は、そのフレームの(例えば、最上部左方のピクセル等の)左上角を基準とするそのブロックの(例えば、最上部左方のピクセル等の)左上角の座標である。
【0011】
本開示においては、"予測ピクセル値/予測サンプル値"の語、"サンプル/ピクセル"及び"サンプル位置/ピクセル位置"の語を互いに交換してもよいということを理解することが可能である。
【0012】
第1の行列及び第2の行列は、行及び列を含むとともに、(i,j)を使用して、その配列の要素を指し示すことが可能である任意の2次元配列であってもよく、xは、水平方向/行インデックスであり、yは、垂直方向/列インデックスである。i及びjの範囲は、例えば、i=xBlock-1,…,xBlock+4及び j=yBlock-1,…,yBlock+4であってもよい。第1の行列及び第2の行列は、現在のブロックに対応するか、又は、現在のブロックに対して決定される。いくつかの例においては、第1の行列のサイズは、現在のブロックのサイズよりも大きくてもよい第2の行列のサイズと同じである。例えば、第1の行列及び第2の行列のサイズは、6×6であってもよく、一方で、現在のブロックのサイズは、4×4である。
【0013】
第1の行列の中の第1の要素の位置(x,y)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(x,y)=(p,q)である場合には、第1の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応する。第1の水平方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の水平方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の水平方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の水平方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第1の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。同様に、第2の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第2の水平方向の予測されたサンプル勾配が、第1の行列の中の要素の位置(x,y)について生成されるということを意味する。
【0014】
第1の垂直方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の垂直方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の垂直方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の垂直方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第1の垂直方向の予測されたサンプル勾配が、第2の行列のその要素の位置(p,q)について生成されるということを意味する。同様に、第2の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第2の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。
【0015】
行列の各々の要素が2つの項の和から取得されるということは、その要素が2つの項のその和それ自体として決定されてもよく、又は、2つの項のその和を処理した後の値として決定されてもよいということを意味する。その処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。同様に、ある項が第2の行列の要素の符号及び第1の行列の要素から取得されるということは、その項が、第1の行列の要素の値それ自体をとってもよく、又は、第1の行列のその要素が処理された後の値をとってもよく、そして、第2の行列の要素の符号を適用するということを意味する。第1の行列のその要素の処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。要素xの符号は、
【数1】
として決定されてもよい。
【0016】
本明細書において提示されている技術は、水平方向の動きオフセット及び垂直方向の動きオフセットに基づいて、現在のブロックの双方向予測されたサンプル値を調整する。垂直方向の動きオフセットは、第5の変数s5に基づいて計算され、その第5の変数s5は、第2の行列の要素の符号及び第1の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。同様に、総和は、また、いかなる乗算にも関与しない。結果として、本明細書において提示されているBDOFベースのフレーム間予測技術は、乗算演算を排除する。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第5の変数s5のビット深度を減少させる。このことは、水平方向の動きオフセットvx及び垂直方向の動きオフセットvyのビット深度の減少につながるとともに、また、予測の計算の複雑さ及び乗算器のサイズの有意な減少につながる。
【0017】
第1の態様のいずれかの先行する実装にしたがった方法のある1つの可能な実装形態において、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット、第2の変数s2、第4の変数s4、及び前記第5の変数s5に基づいて導出され、前記第2の変数s2は、前記第2の行列の要素の絶対値の総和を示し、前記第4の変数s4は、複数の項の総和を示し、前記複数の項の各々は、前記第2の行列の要素の符号及び第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第2の行列の前記要素に対応し、前記第3の行列の各々の要素は、前記第3の行列の前記要素に対応する前記第1の基準フレームの第1の予測されたサンプル及び前記第3の行列の前記要素に対応する前記第2の基準フレームの第2の予測されたサンプルから取得される差である
【0018】
第3の行列の中の第1の要素の位置(k,l)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(k,l)=(p,q)である場合には、第3の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応するということに留意すべきである。第1の予測されたサンプルが現在のブロックの第1の基準フレームに対応しているということは、第1の予測されたサンプルが、現在のブロックの第1の基準フレームの中に存在するということを意味する。第2の予測されたサンプルが現在のブロックの第2の基準フレームに対応しているということは、第2の予測されたサンプルが、現在のブロックの第2の基準フレームの中に存在するということを意味する。第1の予測されたサンプルが第3の行列の要素に対応しているということは、第1の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。同様に、第2の予測されたサンプルが第3の行列の要素に対応しているということは、第2の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。
【0019】
現在のブロックの垂直方向の動きオフセットの計算に関与している追加的な値、第2の変数s2、及び第4の変数s4は、また、乗算演算に関与しない。第5の変数s5と同様に、第4の変数s4の計算は、第2の行列の要素の符号及び第3の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。さらに、総和は、また、いかなる乗算にも関与しない。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第4の変数s4のビット深度を減少させる。同様に、第2の変数s2の計算は、第2の行列の要素の絶対値をとることに関与し、いかなる乗算にも関与しない。このようにして、s2のビット深度もまた減少する。結果として、垂直方向の動きオフセットを計算するときに、結果のビット深度もまた減少するとともに、計算の複雑さが有意に減少する。
【0020】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記水平方向の動きオフセットは、第1の変数s1及び第3の変数s3に基づいて導出され、前記第1の変数s1は、前記第1の行列の要素の絶対値の総和を示し、前記第3の変数s3は、複数の項の総和を示し、前記複数の項の各々は、前記第1の行列の要素の符号及び前記第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第1の行列の前記要素に対応する。
【0021】
第3の行列の要素(第3の要素)が第1行列の要素(第1の要素)に対応するということは、第1行列の中の第1の要素の位置(x,y)が、第3の行列の中の第3の要素の位置(k,l)と同じであるということ、すなわち、(x,y)=(k,l)であるということを意味する。
【0022】
第1の変数s1及び第3の変数s3に基づいて水平方向の動きオフセットを導出することによって、追加的な計算の複雑さの減少を達成することが可能である。第1の変数s1及び第3の変数s3の双方の計算は、乗算には関与しない。むしろ、絶対値をとり、符号演算及び総和演算をとることに関与するにすぎない。
【0023】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記水平方向の動きオフセットは、
【数2】
にしたがって決定され、v
xは、前記水平方向の動きオフセットを表す。
【0024】
このことは、自己相関項及び相互相関項であるs1及びs3に基づいて、vxを決定するある1つの可能な手法を示す。s1及びs3は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vxを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により水平方向の動きオフセットを計算することによって、水平方向の動きオフセットを効率的に決定することが可能である。
【0025】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記垂直方向の動きオフセットv
yは、
【数3】
にしたがって決定され、
v
xは、前記水平方向の動きのオフセットを表し、v
yは、前記垂直方向の動きオフセットを表す。
【0026】
このことは、自己相関項及び相互相関項であるs2、s4、及びs5に基づいて、vyを決定するある1つの可能な手法を示す。s2、s4、及びs5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vyを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により垂直方向の動きオフセットを計算することによって、垂直方向の動きオフセットを効率的に決定することが可能である。
【0027】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、s
1、s
2、s
3、s
4、及びs
5は、
【数4】
として決定され、
I
(0)は、前記第1の基準フレームに対応する前記予測されたサンプルから取得され、I
(1)は、前記第2の基準フレームに対応する前記予測されたサンプルから取得され、
G
x0及びG
x1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記水平方向の予測されたサンプル勾配のセットを示し、
G
y0及びG
y1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記垂直方向の予測されたサンプル勾配のセットを示し、
i及びjは、整数であり、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する。
【0028】
いくつかの例において、I(0)は、現在のブロックに対応するサブブロックの周囲に存在する第1の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(0)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第1の基準フレームの中の6×6ブロックであってもよい。同様に、I(1)は、現在のブロックに対応するサブブロックの周囲に存在する第2の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(1)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第2の基準フレームの中の6×6ブロックであってもよい。
【0029】
現在のブロックが4×4ブロックであり、且つ、I(0)及びI(1)の双方が6×6ブロックである場合に、Gx0及びGx1の各々は、6×6ブロックである。
【0030】
自己相関項及び相互相関項であるs1、s2、s3、s4、及びs5を計算するときに、シフト処理を適用して、s1、s2、s3、s4、及びs5の精度及び/又はビット深度を調整してもよいということに留意すべきである。
【0031】
さらに、s
1、s
2、s
3、s
4、及びs
5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、v
x及びv
yを決定するためのプロセスの計算の複雑さを有意に減少させるということに留意すべきである。v
x及びv
yは、s
1、s
2、s
3、s
4、及びs
5に関して上記で示されている自己相関項及び相互相関項に基づいて導出される。(I
(1)-I
(0))の項が(I
(0)-I
(1))に変更される場合には、v
x及びv
yは、
【数5】
及び
【数6】
として決定されてもよい。
【0032】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記Gx0は、水平方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy0は、垂直方向に沿って前記第1の基準フレームに対応する2つの予測されるサンプルから取得される差として決定される。
【0033】
いくつかの例において、水平方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測されたサンプルの各々を処理してもよい。
【0034】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記Gx1は、水平方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy1は、垂直方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される。
【0035】
いくつかの例において、水平方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測サンプルの各々を処理してもよい。
【0036】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記第1の基準フレームに対応する前記予測サンプル値及び前記第2の基準フレームに対応する前記予測サンプル値は、前記第1の基準フレーム及び前記第2の基準フレームに関して前記現在のブロックについての一対の動きベクトルを使用して、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームから取得される。
【0037】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、前記現在のブロックについての前記予測サンプル値は、双方向オプティカルフロー(BDOF)予測に基づく双方向予測されたサンプル値である。
【0038】
第2の態様によれば、この開示は、ビデオデータを符号化するためのデバイスであって、
ビデオデータメモリと、
ビデオエンコーダと、を含み、前記ビデオエンコーダは、
ビデオ信号の現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定し、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の項の総和を示し、前記複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応し、
前記第1の基準フレームに対応する予測サンプル値と、前記第2の基準フレームに対応する予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を決定する、ように構成される、デバイスに関する。
【0039】
現在のブロックは、4×4ブロック等の任意のサイズのブロックであってもよいということに留意すべきである。現在のブロックは、ビデオ信号のフレームのサブブロックであってもよい。例えば、(x,y)といったように、そのフレームの左上角に対するピクセルの絶対位置を使用して、又は、例えば、(xBlock+i,yBlock+j)といったように、そのブロックの左上角を基準とするピクセルの相対的位置を使用して、現在のブロックのピクセルを指し示してもよい。ここでは、(xBlock,yBlock)は、そのフレームの左上角を基準とするそのブロックの左上角の座標である。
【0040】
第1の行列及び第2の行列は、行及び列を含むとともに、(i,j)を使用して、その配列の要素を指し示すことが可能である任意の2次元配列であってもよく、xは、水平方向/行インデックスであり、yは、垂直方向/列インデックスである。i及びjの範囲は、例えば、i=xBlock-1,…,xBlock+4及びj=yBlock-1,…,yBlock+4であってもよい。第1の行列及び第2の行列は、現在のブロックに対応するか、又は、現在のブロックに対して決定される。いくつかの例においては、第1の行列のサイズは、現在のブロックのサイズよりも大きくてもよい第2の行列のサイズと同じである。例えば、第1の行列及び第2の行列のサイズは、6×6であってもよく、一方で、現在のブロックのサイズは、4×4である。
【0041】
第1の行列の中の第1の要素の位置(x,y)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(x,y)=(p,q)である場合には、第1の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応する。第1の水平方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の水平方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の水平方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の水平方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第1の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。同様に、第2の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第2の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。
【0042】
第1の垂直方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の垂直方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の垂直方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の垂直方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第1の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。同様に、第2の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第2の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。
【0043】
行列の各々の要素が2つの項の和から取得されるということは、その要素が2つの項のその和それ自体として決定されてもよく、又は、2つの項のその和を処理した後の値として決定されてもよいということを意味する。その処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。同様に、ある項が第2の行列の要素の符号及び第1の行列の要素から取得されるということは、その項が、第1の行列の要素の値それ自体をとってもよく、又は、第1の行列のその要素が処理された後の値をとってもよく、そして、第2の行列の要素の符号を適用するということを意味する。第1の行列のその要素の処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。要素xの符号は、
【数7】
として決定されてもよい。
【0044】
本明細書において提示されている技術は、水平方向の動きオフセット及び垂直方向の動きオフセットに基づいて、現在のブロックの双方向予測されたサンプル値を調整する。垂直方向の動きオフセットは、第5の変数s5に基づいて計算され、その第5の変数s5は、第2の行列の要素の符号及び第1の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。同様に、総和は、また、いかなる乗算にも関与しない。結果として、本明細書において提示されているBDOFベースのフレーム間予測技術は、乗算演算を排除する。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第5の変数s5のビット深度を減少させる。このことは、水平方向の動きオフセットvx及び垂直方向の動きオフセットvyのビット深度の減少につながるとともに、また、予測の計算の複雑さ及び乗算器のサイズの有意な減少につながる。
【0045】
第3の態様によれば、この開示は、ビデオデータを復号化するためのデバイスであって、
ビデオデータメモリと、
ビデオデコーダと、を含み、前記ビデオデコーダは、
ビデオ信号の現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定し、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の項の総和を示し、前記複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応し、
前記第1の基準フレームに対応する予測サンプル値と、前記第2の基準フレームに対応する予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を決定する、ように構成される、デバイスに関する。
【0046】
現在のブロックは、4×4ブロック等の任意のサイズのブロックであってもよいということに留意すべきである。現在のブロックは、ビデオ信号のフレームのサブブロックであってもよい。例えば、(x,y)といったように、そのフレームの左上角に対するピクセルの絶対位置を使用して、又は、例えば、(xBlock+i,yBlock+j)といったように、そのブロックの左上角を基準とするピクセルの相対的位置を使用して、現在のブロックのピクセルを指し示してもよい。ここでは、(xBlock,yBlock)は、そのフレームの左上角を基準とするそのブロックの左上角の座標である。
【0047】
第1の行列及び第2の行列は、行及び列を含むとともに、(i,j)を使用して、その配列の要素を指し示すことが可能である任意の2次元配列であってもよく、xは、水平方向/行インデックスであり、yは、垂直方向/列インデックスである。i及びjの範囲は、例えば、i=xBlock-1,…,xBlock+4及びj=yBlock-1,…,yBlock+4であってもよい。第1の行列及び第2の行列は、現在のブロックに対応するか、又は、現在のブロックに対して決定される。いくつかの例においては、第1の行列のサイズは、現在のブロックのサイズよりも大きくてもよい第2の行列のサイズと同じである。例えば、第1の行列及び第2の行列のサイズは、6×6であってもよく、一方で、現在のブロックのサイズは、4×4である。
【0048】
第1の行列の中の第1の要素の位置(x,y)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(x,y)=(p,q)である場合には、第1の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応する。第1の水平方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の水平方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の水平方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の水平方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第1の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。同様に、第2の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第2の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。
【0049】
第1の垂直方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の垂直方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の垂直方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の垂直方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第1の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。同様に、第2の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第2の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。
【0050】
行列の各々の要素が2つの項の和から取得されるということは、その要素が2つの項のその和それ自体として決定されてもよく、又は、2つの項のその和を処理した後の値として決定されてもよいということを意味する。その処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。同様に、ある項が第2の行列の要素の符号及び第1の行列の要素から取得されるということは、その項が、第1の行列の要素の値それ自体をとってもよく、又は、第1の行列のその要素が処理された後の値をとってもよく、そして、第2の行列の要素の符号を適用するということを意味する。第1の行列のその要素の処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。要素xの符号は、
【数8】
として決定されてもよい。
【0051】
本明細書において提示されている技術は、水平方向の動きオフセット及び垂直方向の動きオフセットに基づいて、現在のブロックの双方向予測されたサンプル値を調整する。垂直方向の動きオフセットは、第5の変数s5に基づいて計算され、その第5の変数s5は、第2の行列の要素の符号及び第1の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。同様に、総和は、また、いかなる乗算にも関与しない。結果として、本明細書において提示されているBDOFベースのフレーム間予測技術は、乗算演算を排除する。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第5の変数s5のビット深度を減少させる。このことは、水平方向の動きオフセットvx及び垂直方向の動きオフセットvyのビット深度の減少につながるとともに、また、予測の計算の複雑さ及び乗算器のサイズの有意な減少につながる。
【0052】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット、第2の変数s2、第4の変数s4、及び前記第5の変数s5に基づいて導出され、
前記第2の変数s2は、前記第2の行列の要素の絶対値の総和を示し、
前記第4の変数s4は、複数の項の総和を示し、前記複数の項の各々は、前記第2の行列の要素の符号及び第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第2の行列の前記要素に対応し、前記第3の行列の各々の要素は、前記第3の行列の前記要素に対応する前記第1の基準フレームの第1の予測されたサンプル及び前記第3の行列の前記要素に対応する前記第2の基準フレームの第2の予測されたサンプルから取得される差である。
【0053】
第3の行列の中の第1の要素の位置(k,l)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(k,l)=(p,q)である場合には、第3の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応するということに留意すべきである。第1の予測されたサンプルが現在のブロックの第1の基準フレームに対応しているということは、第1の予測されたサンプルが、現在のブロックの第1の基準フレームの中に存在するということを意味する。第2の予測されたサンプルが現在のブロックの第2の基準フレームに対応しているということは、第2の予測されたサンプルが、現在のブロックの第2の基準フレームの中に存在するということを意味する。第1の予測されたサンプルが第3の行列の要素に対応しているということは、第1の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。同様に、第2の予測されたサンプルが第3の行列の要素に対応しているということは、第2の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。
【0054】
現在のブロックの垂直方向の動きオフセットの計算に関与している追加的な値、第2の変数s2、及び第4の変数s4は、また、乗算演算に関与しない。第5の変数s5と同様に、第4の変数s4の計算は、第2の行列の要素の符号及び第3の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。さらに、総和は、また、いかなる乗算にも関与しない。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第4の変数s4のビット深度を減少させる。同様に、第2の変数s2の計算は、第2の行列の要素の絶対値をとることに関与し、いかなる乗算にも関与しない。このようにして、s2のビット深度もまた減少する。結果として、垂直方向の動きオフセットを計算するときに、結果のビット深度もまた減少するとともに、計算の複雑さが有意に減少する。
【0055】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記水平方向の動きオフセットは、第1の変数s1及び第3の変数s3に基づいて導出され、
前記第1の変数s1は、前記第1の行列の要素の絶対値の総和を示し、
前記第3の変数s3は、複数の項の総和を示し、前記複数の項の各々は、前記第1の行列の要素の符号及び前記第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第1の行列の前記要素に対応する。
【0056】
第3の行列の要素(第3の要素)が第1行列の要素(第1の要素)に対応するということは、第1行列の中の第1の要素の位置(x,y)が、第3の行列の中の第3の要素の位置(k,l)と同じであるということ、すなわち、(x,y)=(k,l)であるということを意味する。
【0057】
第1の変数s1及び第3の変数s3に基づいて水平方向の動きオフセットを導出することによって、追加的な計算の複雑さの減少を達成することが可能である。第1の変数s1及び第3の変数s3の双方の計算は、乗算には関与しない。むしろ、絶対値をとり、符号演算及び総和演算をとることに関与するにすぎない。
【0058】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記水平方向の動きオフセットは、
【数9】
にしたがって決定され、v
xは、前記水平方向の動きオフセットを表す。
【0059】
このことは、自己相関項及び相互相関項であるs1及びs3に基づいて、vxを決定するある1つの可能な手法を示す。s1及びs3は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vxを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により水平方向の動きオフセットを計算することによって、水平方向の動きオフセットを効率的に決定することが可能である。
【0060】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記垂直方向の動きオフセットv
yは、
【数10】
にしたがって決定され、
v
xは、前記水平方向の動きのオフセットを表し、
v
yは、前記垂直方向の動きオフセットを表す。
【0061】
このことは、自己相関項及び相互相関項であるs2、s4、及びs5に基づいて、vyを決定するある1つの可能な手法を示す。s2、s4、及びs5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vyを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により垂直方向の動きオフセットを計算することによって、垂直方向の動きオフセットを効率的に決定することが可能である。
【0062】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、s
1、s
2、s
3、s
4、及びs
5は、
【数11】
として決定され、
I
(0)は、前記第1の基準フレームに対応する前記予測されたサンプルから取得され、I
(1)は、前記第2の基準フレームに対応する前記予測されたサンプルから取得され、
G
x0及びG
x1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記水平方向の予測されたサンプル勾配のセットを示し、
G
y0及びG
y1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記垂直方向の予測されたサンプル勾配のセットを示し、
i及びjは、整数であり、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する。
【0063】
いくつかの例において、I(0)は、現在のブロックに対応するサブブロックの周囲に存在する第1の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(0)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第1の基準フレームの中の6×6ブロックであってもよい。同様に、I(1)は、現在のブロックに対応するサブブロックの周囲に存在する第2の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(1)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第2の基準フレームの中の6×6ブロックであってもよい。
【0064】
現在のブロックが4×4ブロックであり、且つ、I(0)及びI(1)の双方が6×6ブロックである場合に、Gx0及びGx1の各々は、6×6ブロックである。
【0065】
自己相関項及び相互相関項であるs1、s2、s3、s4、及びs5を計算するときに、シフト処理を適用して、s1、s2、s3、s4、及びs5の精度及び/又はビット深度を調整してもよいということに留意すべきである。
【0066】
さらに、s
1、s
2、s
3、s
4、及びs
5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、v
x及びv
yを決定するためのプロセスの計算の複雑さを有意に減少させるということに留意すべきである。v
x及びv
yは、s
1、s
2、s
3、s
4、及びs
5に関して上記で示されている自己相関項及び相互相関項に基づいて導出される。(I
(1)-I
(0))の項が(I
(0)-I
(1))に変更される場合には、v
x及びv
yは、
【数12】
及び
【数13】
として決定されてもよい。
【0067】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記Gx0は、水平方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy0は、垂直方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される。
【0068】
いくつかの例において、水平方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測されたサンプルの各々を処理してもよい。
【0069】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記Gx1は、水平方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy1は、垂直方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される。
【0070】
いくつかの例において、水平方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測サンプルの各々を処理してもよい。
【0071】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記第1の基準フレームに対応する前記予測サンプル値及び前記第2の基準フレームに対応する前記予測サンプル値は、前記第1の基準フレーム及び前記第2の基準フレームに関して前記現在のブロックについての一対の動きベクトルを使用して、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームから取得される。
【0072】
第2の態様及び第3の態様のいずれかの先行する実装又は第2の態様及び第3の態様それら自体にしたがったデバイスのある1つの可能な実装形態において、前記現在のブロックについての前記予測サンプル値は、双方向オプティカルフロー(BDOF)予測に基づく双方向予測されたサンプル値である。
【0073】
第4の態様によれば、この開示は、ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測を実行するための装置であって、
前記現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するように構成される決定ユニットであって、前記垂直方向の動きオフセットは、前記水平方向の動きオフセット及び第5の変数s5に基づいて決定され、
前記第5の変数s5は、複数の項の総和を示し、前記複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、前記第1の行列の前記要素は、前記第2の行列の前記要素に対応し、
前記第1の行列の各々の要素は、前記現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び前記現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第1の行列の前記要素に対応し、
前記第2の行列の各々の要素は、前記現在のブロックの前記第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び前記現在のブロックの前記第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得され、前記第1の水平方向の予測されたサンプル勾配及び前記第2の水平方向の予測されたサンプル勾配は、前記第2の行列の前記要素に対応する、決定ユニットと、
前記第1の基準フレームに対応する予測サンプル値と、前記第2の基準フレームに対応する予測サンプル値と、前記水平方向の動きオフセット及び前記垂直方向の動きオフセットとを使用して、前記現在のブロックにおける予測サンプル値を予測するように構成される予測処理ユニットと、を含む、装置に関する。
【0074】
現在のブロックは、4×4ブロック等の任意のサイズのブロックであってもよいということに留意すべきである。現在のブロックは、ビデオ信号のフレームのサブブロックであってもよい。例えば、(x,y)といったように、そのフレームの左上角に対するピクセルの絶対位置を使用して、又は、例えば、(xBlock+i,yBlock+j)といったように、そのブロックの左上角を基準とするピクセルの相対的位置を使用して、現在のブロックのピクセルを指し示してもよい。ここでは、(xBlock,yBlock)は、そのフレームの左上角を基準とするそのブロックの左上角の座標である。
【0075】
第1の行列及び第2の行列は、行及び列を含むとともに、(i,j)を使用して、その配列の要素を指し示すことが可能である任意の2次元配列であってもよく、xは、水平方向/行インデックスであり、yは、垂直方向/列インデックスである。i及びjの範囲は、例えば、i=xBlock-1,…,xBlock+4及びj=yBlock-1,…,yBlock+4であってもよい。第1の行列及び第2の行列は、現在のブロックに対応するか、又は、現在のブロックに対して決定される。いくつかの例においては、第1の行列のサイズは、現在のブロックのサイズよりも大きくてもよい第2の行列のサイズと同じである。例えば、第1の行列及び第2の行列のサイズは、6×6であってもよく、一方で、現在のブロックのサイズは、4×4である。
【0076】
第1の行列の中の第1の要素の位置(x,y)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(x,y)=(p,q)である場合には、第1の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応する。第1の水平方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の水平方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の水平方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の水平方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第1の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。同様に、第2の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第2の水平方向の予測されたサンプル勾配が、第1の行列の中の要素の位置(x,y)について生成されるということを意味する。
【0077】
第1の垂直方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の垂直方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の垂直方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の垂直方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第1の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。同様に、第2の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第2の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。
【0078】
行列の各々の要素が2つの項の和から取得されるということは、その要素が2つの項のその和それ自体として決定されてもよく、又は、2つの項のその和を処理した後の値として決定されてもよいということを意味する。その処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。同様に、ある項が第2の行列の要素の符号及び第1の行列の要素から取得されるということは、その項が、第1の行列の要素の値それ自体をとってもよく、又は、第1の行列のその要素が処理された後の値をとってもよく、そして、第2の行列の要素の符号を適用するということを意味する。第1の行列のその要素の処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。要素xの符号は、
【数14】
として決定されてもよい。
【0079】
本明細書において提示されている技術は、水平方向の動きオフセット及び垂直方向の動きオフセットに基づいて、現在のブロックの双方向予測されたサンプル値を調整する。垂直方向の動きオフセットは、第5の変数s5に基づいて計算され、その第5の変数s5は、第2の行列の要素の符号及び第1の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。同様に、総和は、また、いかなる乗算にも関与しない。結果として、本明細書において提示されているBDOFベースのフレーム間予測技術は、乗算演算を排除する。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第5の変数s5のビット深度を減少させる。このことは、水平方向の動きオフセットvx及び垂直方向の動きオフセットvyのビット深度の減少につながるとともに、また、予測の計算の複雑さ及び乗算器のサイズの有意な減少につながる。
【0080】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記決定ユニットは、前記水平方向の動きオフセット、第2の変数s2、第4の変数s4、及び前記第5の変数s5に基づいて、前記垂直方向の動きオフセットを決定するように構成され、
前記第2の変数s2は、前記第2の行列の要素の絶対値の総和を示し、
前記第4の変数s4は、複数の項の総和を示し、前記複数の項の各々は、前記第2の行列の要素の符号及び第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第2の行列の前記要素に対応し、前記第3の行列の各々の要素は、前記第3の行列の前記要素に対応する前記第1の基準フレームの第1の予測されたサンプル及び前記第3の行列の前記要素に対応する前記第2の基準フレームの第2の予測されたサンプルから取得される差である。
【0081】
第3の行列の中の第1の要素の位置(k,l)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(k,l)=(p,q)である場合には、第3の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応するということに留意すべきである。第1の予測されたサンプルが現在のブロックの第1の基準フレームに対応しているということは、第1の予測されたサンプルが、現在のブロックの第1の基準フレームの中に存在するということを意味する。第2の予測されたサンプルが現在のブロックの第2の基準フレームに対応しているということは、第2の予測されたサンプルが、現在のブロックの第2の基準フレームの中に存在するということを意味する。第1の予測されたサンプルが第3の行列の要素に対応しているということは、第1の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。同様に、第2の予測されたサンプルが第3の行列の要素に対応しているということは、第2の予測されたサンプルが、第3の行列の中の要素の位置(k,l)に存在するということを意味する。
【0082】
現在のブロックの垂直方向の動きオフセットの計算に関与している追加的な値、第2の変数s2、及び第4の変数s4は、また、乗算演算に関与しない。第5の変数s5と同様に、第4の変数s4の計算は、第2の行列の要素の符号及び第3の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。さらに、総和は、また、いかなる乗算にも関与しない。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第4の変数s4のビット深度を減少させる。同様に、第2の変数s2の計算は、第2の行列の要素の絶対値をとることに関与し、いかなる乗算にも関与しない。このようにして、s2のビット深度もまた減少する。結果として、垂直方向の動きオフセットを計算するときに、結果のビット深度もまた減少するとともに、計算の複雑さが有意に減少する。
【0083】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記決定ユニットは、第1の変数s1及び第3の変数s3に基づいて、前記水平方向の動きオフセットを決定するように構成され、
前記第1の変数s1は、前記第1の行列の要素の絶対値の総和を示し、
前記第3の変数s3は、複数の項の総和を示し、前記複数の項の各々は、前記第1の行列の要素の符号及び前記第3の行列の要素から取得され、前記第3の行列の前記要素は、前記第1の行列の前記要素に対応する。
【0084】
第3の行列の要素(第3の要素)が第1行列の要素(第1の要素)に対応するということは、第1行列の中の第1の要素の位置(x,y)が、第3の行列の中の第3の要素の位置(k,l)と同じであるということ、すなわち、(x,y)=(k,l)であるということを意味する。
【0085】
第1の変数s1及び第3の変数s3に基づいて水平方向の動きオフセットを導出することによって、追加的な計算の複雑さの減少を達成することが可能である。第1の変数s1及び第3の変数s3の双方の計算は、乗算には関与しない。むしろ、絶対値をとり、符号演算及び総和演算をとることに関与するにすぎない。
【0086】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記決定ユニットは、
【数15】
にしたがって、前記水平方向の動きオフセットを決定するように構成され、
v
xは、前記水平方向の動きオフセットを表す。
【0087】
このことは、自己相関項及び相互相関項であるs1及びs3に基づいて、vxを決定するある1つの可能な手法を示す。s1及びs3は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vxを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により水平方向の動きオフセットを計算することによって、水平方向の動きオフセットを効率的に決定することが可能である。
【0088】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記決定ユニットは、
【数16】
にしたがって、前記垂直方向の動きオフセットv
yを決定するように構成され、
v
xは、前記水平方向の動きのオフセットを表し、
v
yは、前記垂直方向の動きオフセットを表す。
【0089】
このことは、自己相関項及び相互相関項であるs2、s4、及びs5に基づいて、vyを決定するある1つの可能な手法を示す。s2、s4、及びs5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、vyを決定するためのプロセスの計算の複雑さを有意に減少させる。このようにして、この手法により垂直方向の動きオフセットを計算することによって、垂直方向の動きオフセットを効率的に決定することが可能である。
【0090】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、s
1、s
2、s
3、s
4、及びs
5は、
【数17】
として決定され、
I
(0)は、前記第1の基準フレームに対応する前記予測されたサンプルから取得され、I
(1)は、前記第2の基準フレームに対応する前記予測されたサンプルから取得され、
G
x0及びG
x1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記水平方向の予測されたサンプル勾配のセットを示し、
G
y0及びG
y1は、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームに対応する前記垂直方向の予測されたサンプル勾配のセットを示し、
i及びjは、整数であり、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する。
【0091】
いくつかの例において、I(0)は、現在のブロックに対応するサブブロックの周囲に存在する第1の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(0)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第1の基準フレームの中の6×6ブロックであってもよい。同様に、I(1)は、現在のブロックに対応するサブブロックの周囲に存在する第2の基準フレームの中の予測されたサンプルを含むブロックである。例えば、現在のブロックが4×4ブロックである場合に、I(1)は、その4×4の現在のブロックに対応する4×4ブロックを囲む第2の基準フレームの中の6×6ブロックであってもよい。
【0092】
現在のブロックが4×4ブロックであり、且つ、I(0)及びI(1)の双方が6×6ブロックである場合に、Gx0及びGx1の各々は、6×6ブロックである。
【0093】
自己相関項及び相互相関項であるs1、s2、s3、s4、及びs5を計算するときに、シフト処理を適用して、s1、s2、s3、s4、及びs5の精度及び/又はビット深度を調整してもよいということに留意すべきである。
【0094】
さらに、s
1、s
2、s
3、s
4、及びs
5は、乗算演算を行うことなく決定され、乗算演算を行わないことにより、v
x及びv
yを決定するためのプロセスの計算の複雑さを有意に減少させるということに留意すべきである。v
x及びv
yは、s
1、s
2、s
3、s
4、及びs
5に関して上記で示されている自己相関項及び相互相関項に基づいて導出される。(I
(1)-I
(0))の項が(I
(0)-I
(1))に変更される場合には、v
x及びv
yは、
【数18】
及び
【数19】
として決定されてもよい。
【0095】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記Gx0は、水平方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy0は、垂直方向に沿って前記第1の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される。
【0096】
いくつかの例において、水平方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第1の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測されたサンプルの各々を処理してもよい。
【0097】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記Gx1は、水平方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定され、前記Gy1は、垂直方向に沿って前記第2の基準フレームに対応する2つの予測されたサンプルから取得される差として決定される。
【0098】
いくつかの例において、水平方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ垂直方向の座標及び異なる水平方向の座標を有する。垂直方向に沿って第2の基準フレームに対応する2つの予測されたサンプルは、同じ水平方向の座標及び異なる垂直方向の座標を有する。差を計算する前に、右シフト、左シフト、又はクリッピング等により、それらの2つの予測サンプルの各々を処理してもよい。
【0099】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記第1の基準フレームに対応する前記予測サンプル値及び前記第2の基準フレームに対応する前記予測サンプル値は、前記第1の基準フレーム及び前記第2の基準フレームに関して前記現在のブロックについての一対の動きベクトルを使用して、それぞれ、前記第1の基準フレーム及び前記第2の基準フレームから取得される。
【0100】
第4の態様のいずれかの先行する実装又は第4の態様それ自体にしたがったデバイスのある1つの可能な実装形態において、前記現在のブロックについての前記予測サンプル値は、双方向オプティカルフロー(BDOF)予測に基づく双方向予測されたサンプル値である。
【0101】
本発明のいくつかの態様にしたがった方法は、本発明のそれらのいくつかの態様にしたがった装置によって実行されてもよい。本発明のいくつかの態様にしたがった方法のさらなる特徴及び実装形態は、本発明のそれらのいくつかの態様及びその複数の異なる実装形態にしたがった装置の機能に直接的に由来する。
【0102】
コーディングデバイスは、符号化デバイス又は復号化デバイスであってもよいということに留意すべきである。
【0103】
他の態様によれば、本発明は、ビデオストリームを復号化するための装置に関し、その装置は、プロセッサ及びメモリを含む。そのメモリは、複数の命令を格納し、それらの複数の命令は、以前に示されている方法をそのプロセッサに実行させる。
【0104】
他の態様によれば、本発明は、ビデオストリームを符号化するための装置に関し、その装置は、プロセッサ及びメモリを含む。そのメモリは、複数の命令を格納し、それらの複数の命令は、以前に示されている方法をそのプロセッサに実行させる。
【0105】
他の態様によれば、複数の命令を格納しているコンピュータ読み取り可能な記憶媒体が提案され、それらの複数の命令は、実行されるときに、ビデオデータをコーディングするように1つ又は複数のプロセッサを構成する。それらの複数の命令は、以前に示されている方法をそれらの1つ又は複数のプロセッサに実行させる。
【0106】
他の態様によれば、コンピュータプログラムがコンピュータによって実行されるときに、以前に示されている方法を実行するためのプログラムコードを有するコンピュータプログラム製品が提供される。
【0107】
1つ又は複数の実施形態の詳細は、以下で複数の添付の図面及び発明の詳細な説明の中に記載されている。複数の他の特徴、目的、及び利点は、発明の詳細な説明、図面、及び特許請求の範囲から明らかになるであろう。
【0108】
明確にするために、他の上記の実施形態のうちのいずれか1つ又は複数と上記の実施形態のうちのいずれか1つを組み合わせて、本開示の範囲に属する新たな実施形態を生み出してもよい。
【0109】
これら及び他の特徴は、添付の図面及び特許請求の範囲との関連で行われる以下の詳細な説明からより明確に理解されるであろう。
【図面の簡単な説明】
【0110】
以下の複数の図面に関して、本発明の複数のさらなる実施形態を説明する。
【0111】
【
図1A】本明細書において提示されている複数の実施形態を実装するように構成されるビデオコーディングシステムのある1つの例を示すブロック図を示している。
【
図1B】複数の実施形態を実装するように構成されるビデオコーディングシステムの他の例を示すブロック図を示している。
【
図2】本明細書において提示されている複数の実施形態を実装するように構成されるビデオエンコーダのある1つの例示的な構成を示しているブロック図である。
【
図3】本明細書において提示されている複数の実施形態を実装するように構成されるビデオデコーダのある1つの例示的な構成を示しているブロック図である。
【
図4】符号化装置又は復号化装置のある1つの例を図示しているブロック図である。
【
図5】符号化装置又は復号化装置の他の例を図示しているブロック図である。
【
図6】勾配の自己相関及び相互相関を計算するための6×6ウィンドウと4×4サブブロックとの関係を図示している図である。
【
図7】双方向予測オプティカルフローのある1つの例を示している図である。
【
図8】ある1つの実施形態にしたがったオプティカルフローに基づくフレーム間予測のための処理のある1つの例を図示しているフローチャートである。
【
図9】ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のための方法のある1つの例を図示しているフローチャートである。
【
図10】ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のための装置のある1つの例示的な構成を示しているブロック図である。
【
図11】コンテンツ配信サービスを提供するコンテンツ供給システムのある1つの例示的な構成を示しているブロック図である。
【
図12】端末デバイスのある1つの例の構成を示しているブロック図である。
【0112】
さまざまな図において、同一の又は機能的に等価な特徴のために同一の参照符号が使用される。
【発明を実施するための形態】
【0113】
以下の説明においては、複数の添付の図面を参照し、それらの複数の添付の図面は、本開示の一部を構成し、それらの複数の添付の図面においては、説明のために、本発明を適用することが可能である複数の特定の態様を示している。本発明の範囲から離れることなく、複数の他の態様を利用することが可能であり、構造的な変更又は論理的な変更を行うことが可能であるというということが理解される。したがって、本発明の範囲は、添付の特許請求の範囲によって定義されるため、以下の詳細な説明は、限定的な意義で解釈されるべきではない。
【0114】
例えば、説明されている方法に関連する開示は、また、その方法を実行するように構成される対応するデバイス又はシステムに当てはまる可能性があり、その逆についても当てはまる可能性があるということが理解される。例えば、1つ又は複数の特定の方法ステップを説明するときに、たとえ、そのような1つ又は複数のユニットが図面の中に明示的に記載されていないか又は図示されていない場合であっても、対応するデバイスは、例えば、(例えば、それらの1つ又は複数のステップを実行する1つのユニット、或いは、各々がそれらの複数のステップのうちの1つ又は複数を実行する複数のユニット等の)機能ユニット等の1つ又は複数のユニットを含んで、それらの説明されている1つ又は複数の方法ステップを実行してもよい。例えば、一方で、例えば、機能ユニット等の1つ又は複数のユニットに基づいて、ある特定の装置を説明するときに、たとえ、そのような1つ又は複数のステップが図面の中に明示的に記載されていないか又は図示されていない場合であっても、対応する方法は、(例えば、それらの1つ又は複数のユニットの機能を実行する1つのステップ、或いは、各々がそれらの複数のユニットのうちの1つ又は複数のユニットの機能を実行する複数のステップ等の)ある1つのステップを含んで、それらの1つ又は複数のユニットの機能を実行してもよい。さらに、特に断らない限り、本明細書において説明されているさまざまな例示的な実施形態及び/又は態様の特徴を互いに組み合わせてもよいということが理解される。
【0115】
本開示は、いかなる高価な乗算も必要とせずに、オプティカルフローの計算された第1の成分に基づいて、オプティカルフローの第2の成分を計算する技術を提供する。BPOFを有効化するときに、符号化端及び復号化端の双方において、その技術を採用することが可能である。その技術は、オプティカルフローに基づくフレーム間予測のための改良されたデバイス及び方法を提供し、それによって、BPOFの計算の複雑さを増加させることなく、従来のBPOFと比較して圧縮効率を改善する。
【0116】
本発明を詳細に説明するために、以下の語、略語、及び表記を使用する。
POC 表示順のピクチャ順序カウント
MV 動きベクトル
MCP 動き補償した予測
HEVC 高効率ビデオコーディング
BPOF MCPのための双方向予測のオプティカルフローベースのデコーダ側補正
BDOF 双方向オプティカルフロー
【0117】
本明細書において使用されているように、ビデオ信号又はビデオシーケンスは、動画を提示する以降のフレームのセットである。言い換えると、ビデオ信号又はビデオシーケンスは、(また、映像又は画像と称される)複数のフレームによって構成される。
【0118】
本明細書において使用されているように、コーディングツリーユニット(CTU)は、(例えば、64×64ピクセル等の)フレームの一部を含むあらかじめ定義されているサイズのビデオシーケンスのコーディング構造のルートを示している。CTUは、いくつかのCUに区分化されてもよい。
【0119】
本明細書において使用されているように、コーディングユニット(CU)は、ビデオシーケンスの基本コーディング構造を示し、その基本コーディング構造は、あらかじめ定義されているサイズを有し、フレームの一部を含み、CTUに属している。CUは、さらなるCUに区分化されてもよい。
【0120】
本明細書において使用されているように、予測ユニット(PU)は、CUの区分化の結果であるコーディング構造を示している。
【0121】
本明細書において使用されているように、本明細書の中で同じ位置に位置するという語は、第1のフレーム、すなわち、現在のフレームの中の実際のブロック又は領域に対応する第2のフレーム、すなわち、基準フレームの中のブロック又は領域を示している。
【0122】
ビデオコーディングは、典型的には、ビデオ又はビデオシーケンスを形成する映像のシーケンスの処理を指す。"映像"の語の代わりに、ビデオコーディングの分野における同義語として、"フレーム"又は"画像"の語を使用してもよい。ビデオコーディング(又は、コーディング全般)は、ビデオ符号化及びビデオ復号化の2つの部分を含む。ビデオ符号化は、発信元の側において実行され、典型的には、元のビデオ映像を(例えば、圧縮によって)処理して、(より効率的な記憶及び/又は伝送のために)ビデオ映像を表現するのに必要となるデータの量を減少させることを含む。ビデオ復号化は、宛先の側において実行され、典型的には、エンコーダがビデオ映像を再構成するのと比較して、逆の処理を含む。ビデオ映像(又は、映像全般)の"コーディング"を指している複数の実施形態は、ビデオ映像又はそれぞれのビデオシーケンスの"符号化"又は"復号化"に関連することを理解すべきである。符号化部分及び復号化部分の組み合わせは、また、CODEC(Coding and Decoding)と称される。
【0123】
無損失のビデオコーディングの場合には、元のビデオ映像を再構成することが可能である、すなわち、(記憶又は伝送の際に伝送損失又は他のデータ損失が存在しないと仮定すると)再構成されているビデオ映像は、元のビデオ映像と同じ品質を有する。損失を伴うビデオコーディングの場合には、例えば、量子化によるさらなる圧縮を実行して、ビデオ映像を表現するデータの量を減少させ、デコーダにおいてはそのビデオ映像を完全に再構成することは不可能である、すなわち、再構成されているビデオ映像の品質は、元のビデオ映像の品質と比較してより低いか又はより劣悪である。
【0124】
ビデオコーディング規格のうちのいくつかは、"損失を伴うハイブリッドビデオコーデック"のグループに属する(すなわち、サンプル領域における空間的な予測及び時間的な予測、及び、変換領域において量子化を適用するための2次元変換コーディングを組み合わせる)。あるビデオシーケンスの各々の映像は、典型的には、重複しないブロックのセットに区分化され、コーディングは、典型的には、ブロックレベルで実行される。言い換えると、エンコーダにおいては、典型的には、例えば、空間的な(映像内の)予測及び/又は時間的な(映像間の)予測を使用して、予測ブロックを生成し、現在のブロック(現在処理されている/処理されるべきブロック)から予測ブロックを減算して、残差ブロックを取得し、その残差ブロックを変換し、そして、変換領域においてその残差ブロックを量子化して、伝送されるべきデータの量を減少させること(圧縮)によって、ブロック(ビデオブロック)レベルで、そのビデオを処理する、すなわち、符号化する。デコーダにおいては、符号化されているブロック又は圧縮されたブロックに対して、エンコーダと比較して逆の処理を適用して、表現のために現在のブロックを再構成する。さらに、エンコーダは、デコーダ処理ループを複製し、それによって、エンコーダ及びデコーダの双方は、(例えば、映像内の予測及び映像間の予測等の)同じ予測を生成し及び/又は後続のブロックの処理、すなわち、コーディングのための再構成を生成するであろう。
【0125】
図1A乃至
図3について、ビデオコーディングシステム10、ビデオエンコーダ20、及びビデオデコーダ30の複数の実施形態を説明する。
【0126】
図1Aは、例えば、本明細書において提示されている技術を実装することが可能であるビデオコーディングシステム10(又は、略して、コーディングシステム10)等の例示的なコーディングシステム10を図示する概略的なブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(又は、略して、エンコーダ20)及びビデオデコーダ30(又は、略して、デコーダ30)は、デバイスの複数の例を表し、それらのデバイスは、本明細書において説明されるさまざまな例にしたがって複数の技術を実行するように構成されてもよい。
【0127】
図1Aに示されているように、コーディングシステム10は、発信元デバイス12を含み、その発信元デバイス12は、例えば、符号化されている映像データ13を復号化するための宛先デバイス14に、符号化されている映像データ21を提供するように構成される。発信元デバイス12は、エンコーダ20を含み、そして、追加的に、映像ソース16、映像プリプロセッサ18等のプリプロセッサ(又は、前処理ユニット)18、及び通信インターフェイス又は通信ユニット22を含んでもよい。
【0128】
映像ソース16は、実世界映像を捕捉するためのカメラ等のいずれかの種類の映像捕捉デバイス、コンピュータによりアニメ化された映像を生成するためのコンピュータグラフィックスプロセッサ等のいずれかの種類の映像生成デバイスを含んでもよい。映像ソース16は、また、実世界映像、(例えば、スクリーンコンテンツ、仮想現実感(VR)映像等の)コンピュータにより生成された映像、及び/又は(例えば、拡張現実感(AR)映像等の)それらのいずれかの組み合わせを取得し及び/又は提供するためのいずれかの種類の他のデバイスを含んでもよい。映像ソースは、上記の映像のうちのいずれかを格納するいずれかの種類のメモリ又は記憶装置であってもよい。
【0129】
プリプロセッサ18及び前処理ユニット18が実行する処理を区別して、映像又は映像データ17は、また、未処理の映像又は未処理の映像データ17と称されてもよい。プリプロセッサ18は、(未処理の)映像データ17を受信し、そして、その映像データ17に対して前処理を実行して、前処理された映像19又は前処理された映像データ19を取得するように構成される。プリプロセッサ18が実行する前処理は、例えば、トリミング、(例えば、RGBからYCbCrへの)色フォーマット変換、色補正、又は雑音除去を含んでもよい。
【0130】
ビデオエンコーダ20は、前処理された映像データ19を受信し、そして、符号化されている映像データ21を提供するように構成される(例えば、
図2に関して、以下でさらなる詳細を説明する)。発信元デバイス12の通信インターフェイス22は、符号化されている映像データ21を受信し、そして、記憶又は直接的な再構成のために、通信チャネル13を介して、例えば、宛先デバイス14又はいずれかの他のデバイス等の他のデバイスに、その符号化されている映像データ21(又は、符号化されている映像データのいずれかのさらに処理されたバージョン)を送信するように構成されてもよい。宛先デバイス14は、(例えば、ビデオデコーダ30等の)デコーダ30を含み、そして、追加的に、通信インターフェイス又は通信ユニット28、ポストプロセッサ32(又は、後処理ユニット32)、及びディスプレイデバイス34を含んでもよい。宛先デバイス14の通信インターフェイス28は、例えば、発信元デバイス12から直接的に、又は、例えば、符号化されている映像データ記憶デバイス等の、例えば、記憶デバイス等のいずれかの他の発信元から、符号化されている映像データ21(又は、符号化されている映像データのいずれかのさらに処理されたバージョン)を受信し、そして、デコーダ30に符号化されている映像データ21を提供するように構成される。
【0131】
通信インターフェイス22及び通信インターフェイス28は、直接的な有線接続又は直接的な無線接続等の発信元デバイス12と宛先デバイス14との間の直接的な通信リンク、或いは、例えば、有線ネットワーク又は無線ネットワーク又はそれらのいずれかの組み合わせ等のいずれかの種類のネットワーク、或いは、いずれかの種類の私設ネットワーク及び公衆ネットワーク、或いは、それらのいずれかの種類の組み合わせを介して、符号化されている映像データ21又は符号化されているデータ21を送信し又は受信するように構成されてもよい。
【0132】
例えば、通信インターフェイス22は、例えば、パケット等の適切なフォーマットに、符号化されている映像データ21をパッケージ化し、及び/又は、通信リンク又は通信ネットワークを介して送信するために、いずれかの種類の送信符号化又は送信処理を使用して、符号化されている映像データを処理するように構成されてもよい。通信インターフェイス22と対をなす通信インターフェイス28は、例えば、送信されたデータを受信し、そして、いずれかの種類の対応する送信復号化又は処理及び/又は非パッケージ化を使用して、送信データを処理して、符号化されている映像データ21を取得するように構成されてもよい。
【0133】
通信インターフェイス22及び通信インターフェイス28の双方は、発信元デバイス12から宛先デバイス14へと向かう
図1Aの中の通信チャンネル13の矢印によって示されているように、一方向通信インターフェイスとして構成されてもよく、又は、双方向通信インターフェイスとして構成されてもよく、例えば、メッセージを送り及び受信して、例えば、接続をセットアップし、それにより、例えば、符号化されている映像データ送信等の通信リンク及び/又はデータ送信に関連するいずれかの他の情報を確認し及び交換するように構成されてもよい。
【0134】
宛先デバイス14のデコーダ30は、符号化されている映像データ21を受信し、そして、復号化されている映像データ31又は復号化されている映像31を提供するように構成される(例えば、
図3又は
図5に関して、以下でさらなる詳細を説明する)。宛先デバイス14のポストプロセッサ32は、例えば、復号化されている映像31等の(また、再構成されている映像データとも呼ばれる)復号化されている映像データ31を後処理して、例えば、後処理された映像33等の後処理された映像データ33を取得するように構成される。後処理ユニット32が実行する後処理は、例えば、(例えば、YCbCrからRGBへの)色フォーマット変換、色補正、トリミング、又は再サンプリング、又は、例えば、ディスプレイデバイス34によって表示するために、例えば、復号化されている映像データ31を準備するための他のいずれかの処理を含んでもよい。
【0135】
宛先デバイス14のディスプレイデバイス34は、例えば、ユーザ又は視聴者に映像を表示するために、後処理された映像データ33を受信するように構成される。ディスプレイデバイス34は、例えば、一体化されたディスプレイ又は外部ディスプレイ又はモニタ等の再構成されている映像を表現するためのいずれかの種類のディスプレイであってもよく、又は、それらのディスプレイを含んでもよい。それらのディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、シリコン上の液晶(LCoS)、ディジタル光プロセッサ(DLP)、又はいずれかの種類の他のディスプレイを含んでもよい。
【0136】
図1Aは、複数の個別のデバイスとして発信元デバイス12及び宛先デバイス14を示しているが、デバイスの複数の実施形態は、双方のデバイス又は双方のデバイスの機能、発信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能を含んでもよい。そのような実施形態においては、同じハードウェア及び/又はソフトウェアを使用して、或いは、個別のハードウェア及び/又はソフトウェア又はそれらのいずれかの組み合わせによって、発信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能を実装してもよい。
【0137】
当業者にとっては説明により明らかであるように、
図1Aに示されている発信元デバイス12及び/又は宛先デバイス14の中の複数の異なるユニット又は複数の異なる機能の存在及び機能の(正確な)分配は、実際のデバイス及び適用に応じて変化してもよい。
【0138】
図1Bに示されているように、1つ又は複数のマイクロプロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、ビデオコーディング専用のもの、又はそれらのいずれかの組み合わせ等の処理回路によって、(例えば、ビデオエンコーダ20等の)エンコーダ20又は(例えば、ビデオデコーダ30等の)デコーダ30、又は、エンコーダ20及びデコーダ30の双方を実装してもよい。
図2のエンコーダ20及び/又は本明細書において説明されているいずれかの他のエンコーダシステム又はサブシステムに関して説明されているように、さまざまなモジュールを具現化するための処理回路46によって、エンコーダ20を実装してもよい。
図3のデコーダ30及び/又は本明細書において説明されているいずれかの他のデコーダシステム又はサブシステムに関して説明されているように、さまざまなモジュールを具現化するための処理回路46によって、デコーダ30を実装してもよい。その処理回路は、あとで説明されるように、さまざまな動作を実行するように構成されてもよい。
図5に示されているように、技術が部分的にソフトウェアによって実装される場合に、デバイスは、適切で非一時的なコンピュータ読み取り可能な記憶媒体の中にソフトウェアのための命令を格納してもよく、1つ又は複数のプロセッサを使用するハードウェアによってそれらの命令を実行して、この開示の複数の技術を実行してもよい。例えば、
図1Bに示されているように、単一のデバイスの中の組み合わされているエンコーダ/デコーダ(CODEC)の一部として、ビデオエンコーダ20及びビデオデコーダ30のうちのいずれかを一体化してもよい。
【0139】
発信元デバイス12及び宛先デバイス14は、例えば、ノートブックコンピュータ又はラップトップコンピュータ、携帯電話、スマートフォン、タブレット又はタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、ディジタルメディアプレーヤー、ビデオゲーム機、(コンテンツサービスサーバ又はコンテンツ配信サーバ等の)ビデオストリーミングデバイス、ブロードキャスト受信機デバイス、又はブロードキャスト送信機デバイス等のいずれかの種類のハンドヘルドデバイス又は固定のデバイスを含む広範囲のデバイスのいずれかを含んでもよく、オペレーティングシステムをまったく使用しなくてもよく、又は、いずれかの種類のオペレーティングシステムを使用してもよい。場合によっては、発信元デバイス12及び宛先デバイス14は、無線通信に対応していてもよい。したがって、発信元デバイス12及び宛先デバイス14は、無線通信デバイスであってもよい。
【0140】
図1Aに図示されているビデオコーディングシステム10は、ある1つの例であるにすぎず、本明細書において提示されている技術は、(例えば、ビデオ符号化又はビデオ復号化等の)ビデオコーディングの設定に適用されてもよく、それらのビデオコーディングの設定は、必ずしも、符号化デバイスと復号化デバイスとの間のデータ通信を含まない。他の例では、データは、ローカルメモリから検索されるか、又は、ネットワークを介してストリーミングされる等である。ビデオ符号化デバイスは、データを符号化し、そして、メモリに格納してもよく、及び/又は、ビデオ復号化デバイスは、メモリからデータを検索し、そして、復号化してもよい。複数の例のうちのいくつかにおいて、符号化及び復号化は、互いに通信しないが、ただ単に、メモリへのデータを符号化し、及び/又は、メモリからデータを検索して復号化するにすぎない複数のデバイスによって実行される。
【0141】
説明の便宜上、例えば、高効率ビデオコーディング(HEVC)又は多目的ビデオコーディング(VVC)の基準ソフトウェア、ITU-Tビデオコーディングエキスパートグループ(VCEG)及びISO/IEC動画エキスパートグループ(MPEG)のビデオコーディングに関する共同コラボレーションチーム(JCT-VC)によって開発された次世代ビデオコーディング規格を参照することによって、本明細書において、本発明の複数の実施形態を説明する。当業者は、本発明のそれらの複数の実施形態がHEVC又はVVCには限定されないということを理解するであろう。
【0142】
エンコーダ及び符号化方法
【0143】
図2は、例示的なビデオエンコーダ20の概略的なブロック図を示し、そのビデオエンコーダ20は、本明細書において提示されている複数の技術を実装するように構成される。
図2の例では、ビデオエンコーダ20は、入力201(又は、入力インターフェイス201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタユニット220、復号化されている映像バッファ(DPB)230、モード選択ユニット260、エントロピー符号化ユニット270、及び出力ユニット272(又は、出力インターフェイス272)を含む。モード選択ユニット260は、フレーム間予測ユニット244、フレーム内予測ユニット254、及び区分化ユニット262を含んでもよい。フレーム間予測ユニット244は、(図示されていない)動き推定ユニット及び動き補償ユニットを含んでもよい。
図2に示されているビデオエンコーダ20は、また、ハイブリッドビデオコーデックにしたがって、ハイブリッドビデオエンコーダ又はビデオエンコーダと称されてもよい。
【0144】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、及びモード選択ユニット260は、エンコーダ20の順方向信号経路を形成するものとみなされてもよく、一方、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループフィルタ220、復号化されている映像バッファ(DPB)230、フレーム間予測ユニット244、及びフレーム内予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成するものとみなされてもよく、ビデオエンコーダ20の逆方向信号経路は、デコーダの信号経路に対応する(
図3のビデオデコーダ30を参照のこと)。逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、復号化されている映像バッファ(DPB)230、フレーム間予測ユニット244、及びフレーム内予測ユニット254は、また、ビデオエンコーダ20の"組み込み型のデコーダ"を形成するものとみなされる。
【0145】
映像及び映像区分化(映像及びブロック)
【0146】
エンコーダ20は、例えば、入力201を介して、例えば、ビデオ又はビデオシーケンスを形成する映像のシーケンスのうちの映像等の映像17(又は、映像データ17)を受信するように構成されてもよい。受信した映像又は映像データは、また、前処理された映像19(又は、前処理された映像データ19)であってもよい。単純化するために、以下の説明は、映像17を指している。映像17は、また、(特に、例えば、同じビデオシーケンス、すなわち、また、現在の映像を含むビデオシーケンスのうちの以前に符号化されている映像及び/又は復号化されている映像等の他の映像から現在の映像を区別するためにビデオコーディングの際に)コーディングされる現在の映像又は映像と称されてもよい。
【0147】
(ディジタル)映像は、強度値を有するサンプルの2次元配列又は行列と考えられてもよい。その配列の中のサンプルは、また、(映像要素の略語である)ピクセル又はペルと称されてもよい。その配列又は映像の水平方向及び垂直方向(又は、軸)のサンプルの数は、その映像のサイズ及び/又は解像度を定義する。色の表現については、典型的には、3つの色成分が使用される、すなわち、その映像は、3つのサンプル配列によって表現されてもよく又はそれらの3つのサンプル配列を含んでもよい。RBGフォーマット又は色空間において、映像は、対応する赤、緑、及び青のサンプル配列を含む。一方で、ビデオコーディングの場合には、各々のピクセルは、典型的には、例えば、YCbCr等の光度フォーマット及び色度フォーマット又は色空間によって表現され、そのYCbCrは、(また、代わりに、Lが使用されることもある)Yが示す光度成分、及び、Cb及びCrが示す2つの色度成分を含む。光度(又は、略して、輝度)成分Yは、(例えば、グレースケール映像におけるような)明度又はグレーレベル強度を表し、一方で、2つの色度(又は、略して、彩度)成分Cb及びCrは、色度情報成分又は色情報成分を表す。したがって、YCbCrフォーマットによる映像は、光度サンプル値(Y)の光度サンプル配列、及び、色度値(Cb及びCr)の2つの色度サンプル配列を含む。RGBフォーマットによる映像は、YCbCrフォーマットに変形され又は変換されてもよく、その逆も可能であり、そのプロセスは、また、色変換又は色変形として知られている。映像がモノクロである場合には、その映像は、光度サンプル配列のみを含んでもよい。したがって、映像は、例えば、モノクロフォーマットでの輝度サンプルの配列、又は、4:2:0、4:2:2、及び4:4:4の色フォーマットでの彩度サンプルの2つの対応する配列及び輝度サンプルの配列であってもよい。
【0148】
ビデオエンコーダ20の複数の実施形態は、(
図2には示されていない)映像区分化ユニットを含んでもよく、その映像区分化ユニットは、(典型的には、重複していない)複数の映像ブロック203へと映像17を区分化するように構成される。それらのブロックは、また、ルートブロック、マクロブロック(H.264/AVC)、或いは、コーディングツリーブロック(CTB)又はコーディングツリーユニット(CTU)(H.265/HEVC及びVVC)と称されてもよい。その映像区分化ユニットは、ビデオシーケンスの映像のすべてについて同じブロックサイズを使用するとともに、そのブロックサイズを定義する対応するグリッドを使用するように構成されてもよく、又は、複数の映像の間で、或いは、映像の複数のサブセット又は複数のグループの間でブロックサイズを変化させ、そして、対応するブロックへと各々の映像を区分化するように構成されてもよい。
【0149】
さらなる実施形態において、ビデオエンコーダは、例えば、映像17を形成する1つのブロック、複数のブロックのうちのいくつか、又は複数のブロックのすべて等の映像17のブロック203を直接的に受信するように構成されてもよい。映像ブロック203は、また、現在の映像ブロック又はコーディングされる映像ブロックと称されてもよい。
【0150】
映像17と同様に、映像ブロック203もやはり、映像17よりも小さい寸法ではあるが、強度値(サンプル値)を有するサンプルの2次元配列又は行列と考えられてもよい。言い換えると、例えば、ブロック203は、(例えば、モノクロ映像17の場合に輝度配列、又は、カラー映像の場合に輝度配列又は彩度配列の)1つのサンプル配列或いは(例えば、カラー映像17の場合に輝度及び2つの彩度配列の)3つのサンプル配列、或いは、適用される色フォーマットに応じていずれかの他の数の配列及び/又は他の種類の配列を含んでもよい。ブロック203の水平方向及び鉛直方向(又は、軸)のサンプル数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)配列、又は変換係数のM×N配列であってもよい。
【0151】
図2に示されているビデオエンコーダ20の複数の実施形態は、例えば、ブロック203ごとに符号化及び予測を実行するといったように、ブロックごとに映像17を符号化するように構成されてもよい。
図2に示されているビデオエンコーダ20の複数の実施形態は、さらに、(また、ビデオスライスと称される)スライスを使用することによって映像を区分化し及び/又は符号化するように構成されてもよく、映像は、(典型的には、重複していない)1つ又は複数のスライスに区分化されてもよく、又は、それらの1つ又は複数のスライスを使用して符号化されてもよく、各々のスライスは、(例えば、CTU等の)1つ又は複数のブロックを含んでもよい。
【0152】
図2に示されているビデオエンコーダ20の複数の実施形態は、(また、ビデオタイルグループと称される)タイルグループ及び/又は(また、ビデオタイルと称される)複数のタイルを使用することによって、映像を区分化し及び/又は符号化するように構成されてもよく、映像は、(典型的には、重複していない)1つ又は複数のタイルグループに区分化されてもよく又はそれらの1つ又は複数のタイルグループを使用して符号化されてもよく、各々のタイルグループは、例えば、(例えば、CTU等の)1つ又は複数のブロック又は1つ又は複数のタイルを含んでもよく、各々のタイルは、例えば、矩形の形状であってもよく、例えば、完全なブロック又は断片的なブロック等の(例えば、CTU等の)1つ又は複数のブロックを含んでもよい。
【0153】
残差計算
【0154】
残差計算ユニット204は、例えば、サンプルごとに(ピクセルごとに)映像ブロック203のサンプル値から予測ブロック265のサンプル値を減算することによって、映像ブロック203及び予測ブロック265(予測ブロック265についてのさらなる詳細は、後に説明される)に基づいて、(また、残差205と称される)残差ブロック205を計算して、サンプル領域において残差ブロック205を取得するように構成されてもよい。
【0155】
変換
【0156】
変換処理ユニット206は、残差ブロック205のサンプル値に対して、例えば、離散コサイン変換(DCT)又は離散サイン変換(DST)等の変換を適用して、変換領域において変換係数207を取得するように構成されてもよい。変換係数207は、また、変換残差係数と称されてもよく、変換領域における残差ブロック205を表す。
【0157】
変換処理ユニット206は、H.265/HEVCのために指定されている変換等のDCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、典型的には、ある因数によってスケーリングされる。順方向の変換及び逆方向の変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として複数の追加的なスケーリング因数を適用する。それらのスケーリング因数は、典型的には、シフト演算のための2のべき乗であるスケーリング因数、変換係数のビット深度、精度と実装コストとの間のトレードオフ等のような特定の制約に基づいて選択される。特定のスケーリング因数は、例えば、逆変換処理ユニット212(及び、例えば、ビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)によって、その逆変換のために指定され、エンコーダ20において、例えば、変換処理ユニット206によって、順方向の変換のための対応するスケーリング因数は、それに応じて指定されてもよい。
【0158】
ビデオエンコーダ20(それぞれ、変換処理ユニット206)の複数の実施形態は、例えば、エントロピー符号化ユニット270によって直接的に、或いは、エントロピー符号化ユニット270によって符号化され又は圧縮される、例えば、1つ又は複数の変換のタイプ等の変換パラメータを出力するように構成されてもよく、それによって、例えば、ビデオデコーダ30は、復号化のためにそれらの複数の変換パラメータを受信しそして使用してもよい。
【0159】
量子化
【0160】
量子化ユニット208は、例えば、スカラー量子化又はベクトル量子化を適用することによって、変換係数207を量子化して、量子化された係数209を取得するように構成されてもよい。それらの量子化された係数209は、また、量子化された変換係数209又は量子化された残差係数209と称されてもよい。
【0161】
量子化プロセスは、変換係数207の一部又はすべてと関連するビット深度を減少させることが可能である。例えば、量子化の際に、mビットの変換係数となるように、nビットの変換係数に対して端数切捨て処理を実行してもよく、nは、mより大きい。量子化パラメータ(QP)を調整することによって、量子化の程度を修正してもよい。例えば、スカラー量子化の場合に、異なるスケーリングを適用して、より微細な量子化又はより粗い量子化を達成することが可能である。より小さい量子化ステップサイズは、より微細な量子化に対応し、一方、より大きい量子化ステップサイズは、より粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示されてもよい。量子化パラメータは、例えば、適用可能な量子化ステップサイズのあらかじめ定義されているセットに対するインデックスであってもよい。例えば、小さな量子化パラメータは、微細な量子化(小さな量子化ステップサイズ)に対応していてもよく、大きな量子化パラメータは、粗い量子化(大きな量子化ステップサイズ)に対応してもよく、又は、その逆の対応関係も可能である。
【0162】
量子化は、量子化ステップサイズによる除算を含んでもよく、例えば、逆量子化ユニット210による対応する及び/又は反対の量子化解除は、その量子化ステップサイズによる乗算を含んでもよい。例えば、HEVC等のいくつかの規格にしたがった複数の実施形態は、量子化パラメータを使用して、量子化ステップサイズを決定するように構成されてもよい。一般的に、量子化ステップサイズは、除算を含む方程式の固定点近似を使用して、量子化パラメータに基づいて計算されてもよい。量子化及び量子化解除のために追加的なスケーリング因数を導入して、量子化ステップサイズ及び量子化パラメータのために方程式の固定点近似の際に使用されるスケーリングに起因して修正される場合がある残差ブロックのノルムを復元することが可能である。ある1つの例示的な実装において、逆変換及び量子化解除のスケーリングを組み合わせてもよい。代替的に、カスタマイズされている量子化テーブルが、使用され、エンコーダからデコーダへと、例えば、ビットストリームの中でシグナリングにより送られてもよい。量子化は、損失を伴う操作であり、その損失は、量子化ステップサイズが増加するのに伴って増加する。
【0163】
ビデオエンコーダ20(それぞれ、量子化ユニット208)の複数の実施形態は、例えば、エントロピー符号化ユニット270によって直接的に量子化パラメータ(QP)を出力するか又はエントロピー符号化ユニット270によって符号化されている量子化パラメータ(QP)を出力するように構成されてもよく、それによって、例えば、ビデオデコーダ30は、復号化のために量子化パラメータを受信しそして適用してもよい。
【0164】
逆量子化
【0165】
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて又は同じ量子化ステップサイズを使用して、量子化ユニット208が適用する量子化スキームの逆のスキームを適用することによって、量子化された係数に対して量子化ユニット208の逆量子化を適用して、量子化解除された係数211を取得するように構成される。量子化解除された係数211は、また、量子化解除された残差係数211と称されてもよく、典型的には、量子化による損失が原因となって変換係数と同じではないが、変換係数207に対応している。
【0166】
逆変換
【0167】
逆変換処理ユニット212は、例えば、逆離散コサイン変換(DCT)又は逆離散サイン変換(DST)、又は、他の逆変換等の変換処理ユニット206が適用する変換の逆の変換を適用して、サンプル領域において再構成されている残差ブロック213(又は、対応する量子化解除された係数213)を取得するように構成される。再構成されている残差ブロック213は、また、変換ブロック213と称されてもよい。
【0168】
再構成
【0169】
(例えば、加算器又は総和を求める加算器214等の)再構成ユニット214は、例えば、再構成されている残差ブロック213のサンプル値及び予測ブロック265のサンプル値をサンプルごとに加算することによって、予測ブロック265に変換ブロック213(すなわち、再構成されている残差ブロック213)を追加して、サンプル領域において再構成されているブロック215を取得するように構成される。
【0170】
フィルタリング
【0171】
ループフィルタユニット220(又は、略して、"ループフィルタ"220)は、再構成されているブロック215をフィルタリングして、フィルタリングされているブロック221を取得するように構成されるか、又は、一般的に、再構成されているサンプルをフィルタリングして、フィルタリングされているサンプルを取得するように構成される。ループフィルタユニットは、例えば、ピクセル遷移を平滑化するように構成されるか、又は、そうでない場合には、ビデオ品質を改善するように構成される。ループフィルタユニット220は、非ブロック化フィルタ、サンプル適応オフセット(SAO)フィルタ、或いは、例えば、双方向フィルタ、適応ループフィルタ(ALF)、鮮明化、平滑化フィルタ、又は協調フィルタ等の1つ又は複数の他のフィルタ、或いは、それらのいずれかの組み合わせ等の1つ又は複数のループフィルタを含んでもよい。ループフィルタユニット220は、
図2においてはインループフィルタとして示されているが、他の構成においては、ループフィルタユニット220は、ポストループフィルタとして実装されてもよい。フィルタリングされているブロック221は、また、フィルタリングされ再構成されているブロック221と称されてもよい。
【0172】
ビデオエンコーダ20(それぞれ、ループフィルタユニット220)の複数の実施形態は、例えば、エントロピー符号化ユニット270によって直接的に(サンプル適応オフセット情報等の)ループフィルタパラメータを出力するか又はエントロピー符号化ユニット270によって符号化されているループフィルタパラメータを出力するように構成されてもよく、それによって、例えば、デコーダ30は、復号化のために同じループフィルタパラメータ又はそれぞれのループフィルタを受信しそして適用してもよい。
【0173】
復号化されている映像バッファ
【0174】
復号化されている映像バッファ(DPB)230は、ビデオエンコーダ20によるビデオデータの符号化のために、基準映像又は、一般的に、基準映像データを格納するメモリであってもよい。そのDPB230は、ダイナミックランダムアクセスメモリ(DRAM)又は他のタイプのメモリデバイス等のさまざまなメモリデバイスのうちのいずれかによって構成されていてもよく、そのダイナミックランダムアクセスメモリ(DRAM)は、同期DRAM(SDRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM)を含む。復号化されている映像バッファ(DPB)230は、1つ又は複数のフィルタリングされているブロック221を格納するように構成されてもよい。復号化されている映像バッファ230は、さらに、例えば、以前に再構成されている映像等の同じ現在の映像の又は複数の異なる映像の、例えば、以前に再構成され及びフィルタリングされているブロック221等の他の以前にフィルタリングされているブロックを格納するように構成されてもよく、例えば、フレーム間予測のために、完全な以前に再構成されている映像、すなわち、復号化されている映像(及び、対応する基準ブロック及びサンプル)及び/又は部分的に再構成されている現在の映像(及び、対応する基準ブロック及びサンプル)を提供してもよい。復号化されている映像バッファ(DPB)230は、また、例えば、再構成されているブロック215がループフィルタユニット220によってフィルタリングされていない場合に、1つ又は複数の再構成されているフィルタリングされていないブロック215、或いは、一般的に、再構成されているフィルタリングされていないサンプル、或いは、再構成されているブロック又はサンプルのいずれかの他のさらに処理されたバージョンを格納するように構成されてもよい。
【0175】
モード選択(区分化及び予測)
【0176】
モード選択ユニット260は、区分化ユニット262、フレーム間予測ユニット244、及びフレーム内予測ユニット254を含み、例えば、元のブロック203(現在の映像17の現在のブロック203)等の元の映像データ、及び、例えば、復号化されている映像バッファ230又は(例えば、示されていないラインバッファ等の)他のバッファからの1つ又は複数の以前に復号化されている映像のうちの、及び/又は、例えば、同じ(現在の)映像の再構成されフィルタリングされている及び/又はフィルタリングされていないサンプル又はブロック等の再構成されている映像データを受信し又は取得するように構成される。その再構成されている映像データは、例えば、フレーム間予測又はフレーム内予測等の予測のための基準映像データとして使用されて、予測ブロック265又は予測器265を取得する。
【0177】
モード選択ユニット260は、(区分化を含まない)現在のブロック予測モードのための区分化及び(例えば、フレーム内予測モード又はフレーム間予測モード等の)予測モードを決定し又は選択し、そして、対応する予測ブロック265を生成する、ように構成されてもよく、その対応する予測ブロック265は、残差ブロック205の計算のため及び再構成されているブロック215の再構成のために使用される。
【0178】
モード選択ユニット260の複数の実施形態は、(例えば、モード選択ユニット260がサポートする又はモード選択ユニット260に利用可能な区分化及び予測モードから)区分化及び予測モードを選択するように構成されてもよく、それらの区分化及び予測モードは、最良の整合、すなわち、最小の残差(最小の残差は、送信又は記憶のためのより良好な圧縮を意味する)又は最小のシグナリングオーバーヘッド(最小のシグナリングオーバーヘッドは、送信又は記憶のためのより良好な圧縮を意味する)を提供するか、或いは、分割及び予測モードの双方を考慮し又は双方をバランスさせる。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて、区分化及び予測モードを決定する、すなわち、最小のレート歪みを提供する予測モードを選択する、ように構成されてもよい。この文脈における"最良の"、"最小の"、"最適な"等の語は、必ずしも、全体的な"最良の"、"最小の"、"最適な"等を指すのではなく、また、ある値が、"準最適な選択"につながる可能性があるしきい値又は他の制約条件を超えるか或いは下回るが、複雑性及び処理時間を減少させるといったような終了基準又は選択基準の達成を指す。
【0179】
言い換えると、区分化ユニット262は、例えば、4分木区分化(QT)、2値区分化(BT)、3分木区分化(TT)、又はそれらのいずれかの組み合わせを反復的に使用して、(再びブロックを形成する)より小さなブロック区分又はサブブロックへとブロック203を区分化し、そして、例えば、それらのブロック区分又はサブブロックの各々について予測を実行する、ように構成されてもよく、そのモード選択は、区分化されるブロック203の木構造の選択を含み、予測モードは、それらのブロック区分又はサブブロックの各々に適用される。
【0180】
以下の記載では、例示的なビデオエンコーダ20が実行する(例えば、区分化ユニット260による)区分化及び(フレーム間予測ユニット244及びフレーム内予測ユニット254による)予測処理をより詳細に説明する。
【0181】
区分化
【0182】
区分化ユニット262は、例えば、正方形のサイズ又は矩形のサイズのより小さいブロック等のより小さな区分へと現在のブロック203を区分化してもよい(又は、分配してもよい)。(また、サブブロックと称されてもよい)これらのより小さなブロックは、さらに、いっそうより小さな区分へと区分化されてもよい。この区分化は、また、木区分化又は階層的木区分化と称され、例えば、根木レベル0(階層レベル0, 深度0)の根ブロックは、例えば、木レベル1(階層レベル1, 深度1)のノード等の次の下位木レベルの2つ又はそれ以上のブロックへと区分化されるといったように、再帰的に区分化されてもよく、例えば、最大木深度又は最小ブロックサイズに達するといったように、例えば、終了基準を達成しているために区分化が終了するまで、例えば、木レベル2(階層レベル2, 深度2)等の次の下位レベルの2つ又はそれ以上のブロックへと、それらのブロックを再度区分化してもよい。それ以上区分化されないブロックは、また、木の葉ブロック又は葉ノードと称される。2つの区分への区分化を使用する木は、2分木(BT)と称され、3つの区分への区分化を使用する木は、3分木(TT)と称され、そして、4つの区分への区分化を使用する木は、4分木(QT)と称される。
【0183】
上記で言及されているように、本明細書において使用される"ブロック"の語は、映像の部分、特に、正方形の部分又は矩形の部分であってもよい。例えば、HEVC及びVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、及び変換ユニット(TU)、及び/又は、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、又は予測ブロック(PB)等の対応するブロックであってもよく、或いは、それらに対応していてもよい。
【0184】
例えば、コーディングツリーユニット(CTU)は、輝度サンプルのCTB、3つのサンプル配列を有する映像の彩度サンプルの2つの対応するCTB、又は、サンプルをコーディングするのに使用される3つの個別の色平面及び構文構成を使用してコーディングされるモノクロ映像又は映像のサンプルのCTBであってもよく、或いは、これらを含んでもよい。それに対応して、コーディングツリーブロック(CTB)は、Nのある値について、サンプルのN×Nブロックとなってもよく、それによって、ある成分の複数のCTBへの分割は、区分化となる。コーディングユニット(CU)は、輝度サンプルのコーディングブロック、3つのサンプル配列を有する映像の彩度サンプルの2つの対応するコーディングブロック、又は、サンプルをコーディングするのに使用される3つの個別の色平面及び構文構成を使用してコーディングされるモノクロ映像又は映像のサンプルのコーディングブロックであってもよく、或いは、これらを含んでもよい。それに対応して、コーディングブロック(CB)は、M及びNのある値について、サンプルのM×Nブロックとなってもよく、それによって、CTBの複数のコーディングブロックへの分割は、区分化となる。
【0185】
複数の実施形態において、例えば、HEVCによれば、コーディングツリーとして示されている4分木構造を使用することによって、コーディングツリーユニット(CTU)を複数のCUへと分配してもよい。フレーム間(時間的な)予測又はフレーム内(空間的な)予測を使用してある映像領域をコーディングするか否かの決定は、CUレベルで行われる。各々のCUは、さらに、PU分配タイプにしたがって、1つ、2つ、又は4つのPUへと分配されてもよい。ある1つのPUの内側においては、同じ予測プロセスを適用し、PUベースでデコーダに関連情報を送信する。PU分配タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後に、あるCUについてのコーディングツリーと同様の他の四分木構造にしたがって変換ユニット(TU)へとそのCUを区分化してもよい。
【0186】
複数の実施形態においては、例えば、多目的ビデオコーディング(VVC)と称される現時点で開発中の最新のビデオコーディング規格によれば、例えば、コーディングブロックを区分化するのに、組み合わせられた4分木及び2分木(QTBT)区分化を使用する。そのQTBTブロック構造においては、CUは、正方形形状又は矩形形状のうちのいずれかを有していてもよい。例えば、コーディングツリーユニット(CTU)は、最初に、4分木構造によって区分化される。その4分木葉ノードは、さらに、2分木構造又は3つ組の(又は、3重の)木構造によって区分化される。区分化木葉ノードは、コーディングユニット(CU)と呼ばれ、その細分化は、それ以上のいかなる区分化も伴うことなく予測処理及び変換処理のために使用される。このことは、CU、PU、及びTUが、QTBTコーディングブロック構造の中で同じブロックサイズを有するということを意味する。同時に、例えば、3分木区分化等の複数区分化は、また、QTBTブロック構造と共に使用されてもよい。
【0187】
いくつかの実施形態において、ドラフトVVC規格の場合等に、CTUと比較して内部メモリが制限されているハードウェアにおいて処理パイプラインを容易にするために、仮想パイプラインデータユニット(VPDU)を定義する。VPDUは、ある与えられたVPDUの処理が処理順序におけるいかなる他の将来的なVPDUの処理にも依存しないように、CTUの中の複数の区分にわたってのある特定の処理順序による光度サンプル及び対応する色度サンプルの均一なサブブロックへのCTUの仮想的な区分化である。ところが、そのCTUレベルにおいてビットストリームの中で、依然として、複数の特定の構文要素をシグナリングによって送ることが可能であり、そのCTUの中の複数のVPDUのすべてにそれらの特定の構文要素を適用する必要がある。コーディングユニットが1つ又は複数のVPDUに完全にまたがっているが、あるVPDUを部分的には覆うことはできないということを保証するために、区分化に対する特定の制約を課してもよい。ある1つの例において、ビデオエンコーダ20のモード選択ユニット260は、本明細書において説明されている複数の区分化技術のいずれかの組み合わせを実行するように構成されてもよい。
【0188】
上記で説明されているように、ビデオエンコーダ20は、(あらかじめ決定されている)複数の予測モードのあるセットから最良の予測モード又は最適な予測モードを決定し又は選択するように構成される。予測モードのそのセットは、例えば、フレーム内予測モード及び/又はフレーム間予測モードを含んでもよい。
【0189】
フレーム内予測
【0190】
フレーム内予測モードのセットは、例えば、DC(又は、平均)モード及び平面モード等の非指向性モード、又は、例えば、HEVCにおいて定義されている指向性モード等の35個の異なるフレーム内予測モードを含んでもよく、或いは、例えば、DC(又は、平均)モード及び平面モード等の非指向性モード、或いは、例えば、VVCにおいて定義されている指向性モード等の67個の異なるフレーム内予測モードを含んでもよい。
【0191】
フレーム内予測ユニット254は、フレーム内予測モードのセットのうちのあるフレーム内予測モードにしたがって、同じの現在の映像の複数の隣接するブロックの複数の再構成されているサンプルを使用して、フレーム内予測ブロック265を生成するように構成される。
【0192】
フレーム内予測ユニット254(又は、一般的に、モード選択ユニット260)は、さらに、符号化されている映像データ21に含めるために、構文要素266の形態で、エントロピー符号化ユニット270にフレーム内予測パラメータ(又は、一般的に、そのブロックのための選択されているフレーム内予測モードを示す情報)を出力するように構成され、それによって、例えば、ビデオデコーダ30は、復号化のためにその予測パラメータを受信し及び使用してもよい。
【0193】
フレーム間予測
【0194】
フレーム間予測モードのセット(又は、可能なフレーム間予測モード)は、利用可能な基準映像(すなわち、例えば、DBP230の中に格納されている以前の少なくとも部分的に復号化されている映像)、及び、例えば、基準映像の現在のブロックのエリアの周囲の探索ウィンドウエリア等のその基準映像の全体又は一部のみが、最良のマッチング基準ブロックを探索するのに使用されるか否か、及び/又は、例えば、半ペル/準ペル及び/又は4分の1ペル内挿補完等のピクセル内挿補完が適用されるか否か等の他のフレーム間予測パラメータに依存する。上記の予測モードのほかに、スキップモード及び/又は直接モードを適用してもよい。
【0195】
フレーム間予測ユニット244は、(双方とも
図2には示されていない)動き推定(ME)ユニット及び動き補償(MC)ユニットを含んでもよい。動き推定ユニットは、動き推定のために、映像ブロック203(現在の映像17の現在の映像ブロック203)、及び、復号化されている映像231、又は、例えば、1つ又は複数の他の/異なる以前に復号化されている映像231の再構成されているブロック等の少なくとも1つ又は複数の以前に再構成されているブロックを受信し又は取得するように構成されてもよい。例えば、ビデオシーケンスは、現在の映像及び以前に復号化されている映像231を含んでもよい、言い換えると、現在の映像及び以前に復号化されている映像231は、ビデオシーケンスを形成する映像のシーケンスの一部であってもよく、又は、ビデオシーケンスを形成する映像のシーケンスを形成してもよい。
【0196】
エンコーダ20は、例えば、複数の他の映像のうちの同じ映像又は異なる映像の複数の基準ブロックから基準ブロックを選択し、そして、動き推定ユニットへのフレーム間予測パラメータとして、基準映像(又は、基準映像インデックス)、及び/又は、基準ブロックの位置(x座標、y座標)と現在のブロックの位置との間のオフセット(空間オフセット)を提供する、ように構成されてもよい。このオフセットは、また、動きベクトル(MV)と呼ばれる。
【0197】
動き補償ユニットは、例えば、フレーム間予測パラメータを受信するといったように、フレーム間予測パラメータを取得し、そして、そのフレーム間予測パラメータに基づいて又はそのフレーム間予測パラメータを使用して、フレーム間予測を実行し、それにより、フレーム間予測ブロック265を取得する、ように構成される。動き補償ユニットが実行する動き補償は、動き推定によって決定される動きベクトル/ブロックベクトルに基づいて予測ブロックを取り出し又は生成することを含んでもよく、サブピクセル精度まで内挿補間を実行することが可能である。内挿補間フィルタリングは、既知のピクセルサンプルから追加的なピクセルサンプルを生成することが可能であり、したがって、映像ブロックをコーディングするのに使用されてもよい候補予測ブロックの数を潜在的に増加させる。現在の映像ブロックのPUのための動きベクトルを受信すると、動き補償ユニットは、その動きベクトルが基準映像リストのうちの1つにおいて指し示す予測ブロックを位置決めすることが可能である。
【0198】
動き補償ユニットは、また、ビデオデコーダ30がビデオスライスの映像ブロックを復号化する際に使用するように、複数のブロック及びそのビデオスライスと関連する構文要素を生成してもよい。スライス及びそれぞれの構文要素に加えて又はそれらの代替として、タイルグループ及び/又はタイル及びそれぞれの構文要素を生成し又は使用してもよい。
【0199】
以下で詳細に説明するように、本明細書において提示されている複数の実施形態は、例えば、双方向オプティカルフロー(BDOF)ベースのフレーム間予測等のフレーム間予測を実行するときに、フレーム間予測ユニットが使用するより正確な動きベクトル予測を提供することによって、フレーム間予測ユニット244に改善をもたらす。
【0200】
エントロピーコーディング
【0201】
エントロピー符号化ユニット270は、例えば、量子化されている係数209、フレーム間予測パラメータ、フレーム内予測パラメータ、ループフィルタパラメータ及び/又は他の構文要素に対して、(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応VLCスキーム(CAVLC)、演算コーディングスキーム、2値化、コンテキスト適応2値演算コーディング(CABAC)、構文ベースのコンテキスト適応2値演算コーディング(SBAC)、確率的間隔区分化エントロピー(PIPE)コーディング、又は他のエントロピー符号化方法又は技術等の)エントロピー符号化アルゴリズム又はスキーム、或いは、バイパス(非圧縮)を適用して、例えば、符号化されているビットストリーム21の形態で出力272を介して出力されてもよい符号化されている映像データ21を取得するように構成され、それによって、例えば、ビデオデコーダ30は、復号化のためにそれらのパラメータを受信し及び使用することが可能である。その符号化されているビットストリーム21は、ビデオデコーダ30に送信されてもよく、或いは、ビデオデコーダ30による後の送信又は検索のためにメモリの中に格納されてもよい。
【0202】
ビデオエンコーダ20の他の構造的変形を使用して、ビデオストリームを符号化してもよい。例えば、非変換ベースのエンコーダ20は、特定のブロック又はフレームについて、変換処理ユニット206を使用することなく、直接的に、残差信号を量子化してもよい。他の実装においては、エンコーダ20は、単一のユニットとなるように組み合わせられている量子化ユニット208及び逆量子化ユニット210を有してもよい。
【0203】
デコーダ及び復号化方法
【0204】
図3は、ビデオデコーダ30のある1つの例を示し、そのビデオデコーダ30は、この出願の複数の技術を実装するように構成される。そのビデオデコーダ30は、例えば、エンコーダ20が符号化する(例えば、符号化されているビットストリーム21等の)符号化されている映像データ21を受信して、復号化されている映像331を取得するように構成される。符号化されている映像データ又はビットストリームは、例えば、符号化されているビデオスライス(及び/又は、タイルグループ又はタイル)の映像ブロック及び関連する構文要素を表すデータ等の符号化されている映像データを復号化するための情報を含む。
【0205】
図3の例では、デコーダ30は、エントロピー復号化ユニット304、逆量子化ユニット310、逆変換処理ユニット312、(例えば、総和を求める加算器314等の)再構成ユニット314、ループフィルタ320、復号化されている映像バッファ(DBP)330、モード適用ユニット360、フレーム間予測ユニット344、及びフレーム内予測ユニット354を含む。フレーム間予測ユニット344は、動き補償ユニットであってもよく又は動き補償ユニットを含んでもよい。ビデオデコーダ30は、複数の例のうちのいくつかにおいて、
図2からのビデオエンコーダ100に関して説明されている符号化パスとおおむね逆向きの復号化パスを実行してもよい。
【0206】
エンコーダ20に関して説明されているように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、復号化されている映像バッファ(DPB)230、フレーム間予測ユニット344、及びフレーム内予測ユニット354は、また、ビデオエンコーダ20の"組み込み型のデコーダ"を形成するものとみなされる。したがって、逆量子化ユニット310は、逆量子化ユニット110と機能的に同じであってもよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同じであってもよく、再構成ユニット314は、再構成ユニット214と機能的に同じであってもよく、ループフィルタ320は、ループフィルタ220と機能的に同じであってもよく、復号化されている映像バッファ330は、復号化されている映像バッファ230と機能的に同じであってもよい。したがって、ビデオ20エンコーダのそれぞれのユニット及び機能について提供されている説明は、対応して、ビデオデコーダ30のそれぞれのユニット及び機能に適用される。
【0207】
エントロピー復号化
【0208】
エントロピー復号化ユニット304は、ビットストリーム21(又は、一般的に、符号化されている映像データ21)を解析し、そして、例えば、符号化されている映像データ21に対してエントロピー復号化を実行して、例えば、(例えば、基準映像インデックス及び動きベクトル等の)フレーム間予測パラメータ、(例えば、フレーム内予測モード又はインデックス等の)フレーム内予測パラメータ、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、及び/又は他の構文要素のうちのいずれか又はすべて等の量子化されている係数309及び/又は(
図3には示されていない)復号化されているコーディングパラメータを取得するように構成される。エントロピー復号化ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関して説明されているように、符号化スキームに対応する復号化アルゴリズム又はスキームを適用するように構成されてもよい。エントロピー復号化ユニット304は、さらに、モード適用ユニット360にフレーム間予測パラメータ、フレーム内予測パラメータ、及び/又は他の構文要素を提供するとともに、デコーダ30の他のユニットに他のパラメータを提供するように構成されてもよい。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルで構文要素を受信してもよい。スライス及びそれぞれの構文要素に加えて又はそれらの代替として、タイルグループ及び/又はタイル及びそれぞれの構文要素を受信し又は使用してもよい。
【0209】
逆量子化
【0210】
逆量子化ユニット310は、(例えば、エントロピー復号化ユニット304によって、例えば、解析し及び/又は復号化することによって)符号化されている映像データ21から量子化パラメータ(QP)(又は、一般的に、逆量子化に関する情報)及び量子化されている係数を受信し、そして、それらの量子化パラメータに基づいて、量子化され復号化されている係数309に逆量子化を適用して、また、変換係数311と称されてもよい量子化解除されている係数311を取得する、ように構成されてもよい。逆量子化プロセスは、ビデオスライス(又は、タイル又はタイルグループ)の中の各々のビデオブロックについてビデオエンコーダ20が決定する量子化パラメータを使用して、量子化の程度、及び、同様に、適用される必要がある逆量子化の程度を決定することを含んでもよい。
【0211】
逆変換
【0212】
逆変換処理ユニット312は、また、変換係数311と称される量子化解除されている係数311を受信し、そして、サンプル領域において、再構成されている残差ブロック213を取得するために、それらの量子化解除されている係数311に変換を適用する、ように構成されてもよい。それらの再構成されている残差ブロック213は、また、変換ブロック313と称されてもよい。変換は、例えば、逆DCT、逆DST、逆整数変換、又は概念的に同様の逆変換プロセス等の逆変換であってもよい。逆変換処理ユニット312は、さらに、(例えば、エントロピー復号化ユニット304によって、例えば、解析し及び/又は復号化することによって)符号化されている映像データ21から変換パラメータ又は対応する情報を受信して、量子化解除されている係数311に適用される変換を決定する、ように構成されてもよい。
【0213】
再構成
【0214】
(例えば、加算器又は総和を求める加算器314等の)再構成ユニット314は、例えば、再構成されている残差ブロック313のサンプル値及び予測ブロック365のサンプル値を加算することによって、予測ブロック365に、再構成されている残差ブロック313を加算して、サンプル領域において、再構成されているブロック315を取得するように構成されてもよい。
【0215】
フィルタリング
【0216】
(コーディングループの中又はコーディングループの後のうちのいずれかに存在する)ループフィルタユニット320は、再構成されているブロック315をフィルタリングして、フィルタリングされているブロック321を取得するように構成され、その結果、例えば、ピクセル遷移を平滑化するか、又は、そうでない場合には、ビデオ品質を改善する。ループフィルタユニット320は、非ブロック化フィルタ、サンプル適応オフセット(SAO)フィルタ、或いは、例えば、双方向フィルタ、適応ループフィルタ(ALF)、鮮明化、平滑化フィルタ、又は協調フィルタ等の1つ又は複数の他のフィルタ、或いは、それらのいずれかの組み合わせ等の1つ又は複数のループフィルタを含んでもよい。ループフィルタユニット320は、
図3においてはインループフィルタであるとして示されているが、他の構成においては、ループフィルタユニット320は、ポストループフィルタとして実装されてもよい。
【0217】
復号化されている映像バッファ
【0218】
映像の復号化されているビデオブロック321は、その次に、復号化されている映像バッファ330の中に格納され、その復号化されている映像バッファ330は、他の映像のための及び/又は出力のそれぞれの表示ためのその後の動き補償のために、基準映像として、復号化されている映像331を格納している。デコーダ30は、ユーザへの提示又は視聴のために、例えば、出力312を介して、復号化されている映像311を出力するように構成される。
【0219】
予測
【0220】
フレーム間予測ユニット344は、フレーム間予測ユニット244と(特に、動き補償ユニットと)と同じであってもよく、フレーム内予測ユニット354は、機能的に、フレーム間予測ユニット254と同じであってもよく、(例えば、エントロピー復号化ユニット304によって、例えば、解析し及び/又は復号化することによって)符号化されている映像データ21から受信した区分化パラメータ及び/又は予測パラメータ或いはそれぞれの情報に基づいて、分配の決定又は区分化の決定及び予測を実行する。モード適用ユニット360は、(フィルタリングされている又はフィルタリングされていない)再構成されている映像、ブロック、又はそれぞれのサンプルに基づいて、ブロックごとに予測(フレーム内予測又はフレーム間予測)を実行して、予測ブロック365を取得するように構成されてもよい。
【0221】
ビデオスライスがフレーム内コーディングされている(I)スライスとしてコーディングされるときに、モード適用ユニット360のフレーム内予測ユニット354は、現在の映像の以前に復号化されているブロックからのデータ及びシグナリングされているフレーム内予測モードに基づいて、現在のビデオスライスの映像ブロックのための予測ブロック365を生成するように構成される。ビデオ映像がフレーム間コーディングされている(すなわち、B又はP)スライスとしてコーディングされるときに、モード適用ユニット360の(例えば、動き補償ユニット等の)フレーム間予測ユニット344は、エントロピー復号化ユニット304から受信する動きベクトル及び他の構文要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロック365を生成するように構成される。フレーム間予測のために、予測ブロックは、複数の基準映像リストのうちの1つのリストの中の複数の基準映像のうちの1つから生成されてもよい。ビデオデコーダ30は、DPB330の中に格納されている基準映像に基づいてデフォルトの構築技術を使用して、基準フレームリスト、リスト0及びリスト1を構築してもよい。例えば、I、P又はBタイルグループ及び/又はタイルを使用してビデオをコーディングすることが可能であるといったように、(例えば、ビデオスライス等の)スライスに加えて又は(例えば、ビデオスライス等の)スライスの代替として、(例えば、ビデオタイルグループ等の)複数のタイルグループ及び/又は(例えば、ビデオタイル等の)複数のタイルを使用して、複数の実施形態のために又はそれらの複数の実施形態が同じこと又は同様のことを適用してもよい。
【0222】
以下で詳細に説明するように、本明細書において提示されている複数の実施形態は、例えば、双方向オプティカルフロー(BDOF)ベースのフレーム間予測等のフレーム間予測を実行するときに、フレーム間予測ユニットが使用するより正確な動きベクトル予測を提供することによって、フレーム間予測ユニット344に改善をもたらす。
【0223】
モード適用ユニット360は、動きベクトル又は関連する情報及び他の構文要素を解析することによって、現在のビデオスライスのビデオブロックについての予測情報を決定するように構成され、その予測情報を使用して、復号化されている現在のビデオブロックについての予測ブロックを生成する。例えば、モード適用ユニット360は、複数の受信した構文要素のうちのいくつかを使用して、ビデオスライスの複数のビデオブロックをコーディングするのに使用される(例えば、フレーム内予測又はフレーム間予測等の)予測モード、(例えば、Bスライス、Pスライス、又はGPBスライス等の)フレーム間予測スライスタイプ、そのスライスのための複数の基準映像リストのうちの1つ又は複数のリストのための構築情報、そのスライスの各々のフレーム間コーディングされているビデオブロックのための動きベクトル、そのスライスの各々のフレーム間コーディングされているビデオブロックのためのフレーム間予測状態、及び現在のビデオスライスの中のビデオブロックを復号化するための他の情報を決定する。例えば、I、P又はBタイルグループ及び/又はタイルを使用してビデオをコーディングすることが可能であるといったように、(例えば、ビデオスライス等の)スライスに加えて又は(例えば、ビデオスライス等の)スライスの代替として、(例えば、ビデオタイルグループ等の)複数のタイルグループ及び/又は(例えば、ビデオタイル等の)タイルを使用して、複数の実施形態のために又はそれらの複数の実施形態が同じこと又は同様のことを適用してもよい。
【0224】
図3に示されているビデオデコーダ30の複数の実施形態は、(また、ビデオスライスと称される)複数のスライスを使用することによって映像を区分化し及び/又は復号化するように構成されてもよく、映像は、(典型的には、重複していない)1つ又は複数のスライスに区分化されてもよく又はそれらの1つ又は複数のスライスを使用して復号化されてもよく、各々のスライスは、(例えば、CTU等の)1つ又は複数のブロックを含んでもよい。
【0225】
図3に示されているビデオデコーダ30の複数の実施形態は、(また、ビデオタイルグループと称される)タイルグループ及び/又は(また、ビデオタイルと称される)複数のタイルを使用することによって、映像を区分化し及び/又は復号化するように構成されてもよく、映像は、(典型的には、重複していない)1つ又は複数のタイルグループに区分化されてもよく又はそれらの1つ又は複数のタイルグループを使用して復号化されてもよく、各々のタイルグループは、例えば、(例えば、CTU等の)1つ又は複数のブロック或いは1つ又は複数のタイルを含んでもよく、各々のタイルは、例えば、矩形の形状であってもよく、例えば、完全なブロック又は断片的なブロック等の(例えば、CTU等の)1つ又は複数のブロックを含んでもよい。
【0226】
ビデオデコーダ30の複数の他の変形を使用して、符号化されている映像データ21を復号化してもよい。例えば、デコーダ30は、ループフィルタリングユニット320を使用することなく、出力ビデオストリームを生成してもよい。例えば、非変換ベースのデコーダ30は、特定のブロック又はフレームについて、逆変換処理ユニット312を使用することなく、直接的に、残差信号を逆量子化してもよい。他の実装においては、ビデオデコーダ30は、単一のユニットに組み合わされている逆量子化ユニット310及び逆変換処理ユニット312を有してもよい。
【0227】
エンコーダ20及びデコーダ30においては、現在のステップの処理結果をさらに処理し、そして、その次に、次のステップに処理結果を出力してもよいということを理解すべきである。例えば、内挿補間フィルタリング、動きベクトルの導出、又はループフィルタリングの後に、内挿補間フィルタリング、動きベクトルの導出、又はループフィルタリングの処理結果に対して、クリップ又はシフト等のさらなる操作を実行してもよい。
【0228】
(これらに限定されないが、アフィンモードの制御点動きベクトル、アフィン、平面、ATMVPモードのサブブロック動きベクトル、及び時間動きベクトル等を含む)現在のブロックの導出された動きベクトルにさらなる操作を適用してもよいということに留意すべきである。例えば、動きベクトルの値は、その表現ビットにしたがって、あらかじめ定義されている範囲に制限される。動きベクトルの表現ビットが、bitDepthである場合に、その範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1となり、"^"は、指数関数を意味する。例えば、bitDepthが16に等しく設定されている場合に、その範囲は、-32768~32767であり、bitDepthが18に等しく設定されている場合に、その範囲は、-131072~131071である。例えば、(例えば、1つの8×8ブロックの中の4つの4×4サブブロックのMV等の)導出された動きベクトルの値は、それらの4つの4×4サブブロックのMVの整数部分の間の差のうちの最大差が、1ピクセル以下といったようにNピクセル以下となるように制約される。本明細書は、bitDepthにしたがって、動きベクトルを制約する2つの方法を提供する。
【0229】
方法1: 操作
ux=(mvx+2bitDepth)%2bitDepth (1)
mvx=(ux>=2bitDepth-1) ? (ux-2bitDepth):ux (2)
uy=(mvy+2bitDepth)%2bitDepth (3)
mvy=(uy>=2bitDepth-1) ? (uy-2bitDepth):uy (4)
によって、オーバーフローMSB(最上位ビット)を除去する。mvxは、画像ブロック又はサブブロックの動きベクトルの水平成分であり、mvyは、画像ブロック又はサブブロックの動きベクトルの垂直成分であり、ux及びuyは、中間値を示している。
【0230】
例えば、mvxの値が-32769である場合に、式(1)及び(2)を適用した後に、結果の値は、32767となる。コンピュータシステムにおいては、10進数は、2の補数として格納される。-32769の2の補数は、1,0111,1111,1111,1111(17ビット)であり、その次に、MSBが破棄され、それによって、結果として得られる2の補数は、0111,1111,1111,1111(10進数は、32767である)となり、結果として得られる2の補数は、式(1)及び(2)を適用することによる出力と同じになる。
ux=(mvpx+mvdx+2bitDepth)%2bitDepth (5)
mvx=(ux>=2bitDepth-1) ? (ux-2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth (7)
mvy=(uy>=2bitDepth-1) ? (uy-2bitDepth):uy (8)
式(5)乃至(8)に示されているように、mvp及びmvdの和の際に、それらの操作を適用してもよい。
【0231】
方法2: 値をクリッピングすることによりオーバーフローMSBを除去する。
vx=Clip3(-2
bitDepth-1,2
bitDepth-1-1,vx) (9)
vy=Clip3(-2
bitDepth-1,2
bitDepth-1-1,vy) (10)
vxは、画像ブロック又はサブブロックの動きベクトルの水平成分であり、vyは、画像ブロック又はサブブロックの動きベクトルの垂直成分であり、x、y、及びzは、それぞれ、MVクリッピングプロセスの3つの入力値に対応し、機能Clip3の定義は、
【数20】
となる。
【0232】
図4は、ある1つの実施形態にしたがったビデオコーディングデバイス400の概略的な図である。そのビデオコーディングデバイス400は、本明細書において説明されているように、複数の開示されている実施形態を実装するのに適している。ある1つの実施形態において、ビデオコーディングデバイス400は、
図1Aのビデオデコーダ30等のデコーダ又は
図1Aのビデオエンコーダ20等のエンコーダであってもよい。
【0233】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(又は、入力ポート410)及び受信機ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、又は中央処理ユニット(CPU)430、データを送信するための送信機ユニット(Tx)440及び出口ポート450(又は、出力ポート450)、及び、データを格納するためのメモリ460を含む。ビデオコーディングデバイス400は、また、光信号又は電気信号の出口又は入口のために、入口ポート410、受信機ユニット420、送信機ユニット440、及び出口ポート450に結合されている光電気(OE)構成要素及び電気光(EO)構成要素を含んでもよい。
【0234】
プロセッサ430は、ハードウェア及びソフトウェアによって実装される。プロセッサ430は、1つ又は複数のCPUチップ、(例えば、マルチコアプロセッサ等の)コア、FPGA、ASIC、及びDSPとして実装されてもよい。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、及びメモリ460と通信する。プロセッサ430は、コーディングモジュール470を含む。コーディングモジュール470は、上記で説明されているように、複数の開示されている実施形態を実装する。例えば、コーディングモジュール470は、さまざまなコーディング操作を実装し、処理し、準備し、又は提供する。したがって、コーディングモジュール470を含めることは、ビデオコーディングデバイス400の機能に実質的な改善をもたらし、ビデオコーディングデバイス400の異なる状態への変換をもたらす。代替的に、コーディングモジュール470は、メモリ460の中に格納されている命令として実装され、プロセッサ430によって実行される。
【0235】
メモリ460は、1つ又は複数のディスク、テープドライブ、及びソリッドステートドライブを含んでもよく、オーバーフローデータ記憶デバイスとして使用されて、実行のためにプログラムを選択するときに、そのようなプログラムを格納し、そして、プログラムの実行の際に読み出される命令及びデータを格納してもよい。メモリ460は、例えば、揮発性であってもよく及び/又は不揮発性であってもよく、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、3値コンテンツアドレス指定可能メモリ(TCAM)、及び/又はスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0236】
図5は、ある1つの例示的な実施形態にしたがった
図1Aの発信元デバイス12及び宛先デバイス14のうちのいずれか又は双方として使用されてもよい装置500の簡略化されたブロック図である。装置500の中のプロセッサ502は、中央処理ユニットであってもよい。代替的に、プロセッサ502は、情報を操作し又は処理することが可能であるとともに、現時点で存在する又はのちに開発されるいずれかの他のタイプのデバイス又は複数のデバイスであってもよい。開示されている実装は、示されているように、例えば、プロセッサ502等の単一のプロセッサを使用して実現されてもよいが、1つよりも多くのプロセッサを使用して、速度及び効率における利点を達成してもよい。
【0237】
装置500の中のメモリ504は、ある1つの実装においては、読み取り専用メモリ(ROM)デバイス又はランダムアクセスメモリ(RAM)デバイスであってもよい。メモリ504として、いずれかの他の適切なタイプの記憶デバイスを使用してもよい。メモリ504は、プロセッサ502がバス512を使用してアクセスするコード及びデータ506を含んでもよい。メモリ504は、オペレーティングシステム508及びアプリケーションプログラム510をさらに含んでもよく、アプリケーションプログラム510は、少なくとも1つのプログラムを含み、それらの少なくとも1つのプログラムは、プロセッサ502が本明細書において説明されている方法を実行するのを可能とする。例えば、アプリケーションプログラム510は、アプリケーション1乃至Nを含んでもよく、それらのアプリケーション1乃至Nは、本明細書において説明されている方法を実行するビデオコーディングアプリケーションをさらに含む。
【0238】
装置500は、また、ディスプレイ518等の1つ又は複数の出力デバイスを含んでもよい。ディスプレイ518は、ある1つの例では、タッチ入力を検知するように動作可能であるタッチセンシティブ要素とディスプレイを組み合わせるタッチセンシティブディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合されてもよい。
【0239】
本明細書においては、単一のバスとして示されているが、装置500のバス512は、複数のバスから構成されてもよい。さらに、二次記憶装置514は、装置500の他の構成要素に直接的に結合されてもよく、或いは、ネットワークを介してアクセスされてもよく、メモリカード等の単一の集積されているユニット又は複数のメモリカード等の複数のユニットを含んでもよい。このようにして、装置500は、多種多様な構成で実装されてもよい。
【0240】
動きベクトル精緻化(MVR)
【0241】
動きベクトルは、通常、エンコーダ側において少なくとも部分的に決定され、コーディングされているビットストリームの中でデコーダにシグナリングによって送信される。一方で、ビットストリームの中で示されている初期の動きベクトルから開始して、デコーダにおいて(及び、また、エンコーダにおいて)動きベクトルを精緻化してもよい。そのような場合に、例えば、初期の動きベクトルが指し示す既に復号化されているピクセルの複数の区画の間の類似性を使用して、初期の動きベクトルの精度を改善してもよい。そのような動き精緻化は、シグナリングオーバーヘッドを減少させるという利点を提供する、すなわち、エンコーダ及びデコーダの双方において、同じ手法によって、初期動きの精度を改善し、したがって、精緻化のためのいかなる追加的なシグナリングも必要としない。
【0242】
精緻化の前の初期の動きベクトルは、最良の予測をもたらす最良の動きベクトルではない場合があるということに留意すべきである。初期の動きベクトルは、ビットストリームの中でシグナリングによって送信されるので、(ビットレートを増加させるであろう)精度がきわめて高い初期の動きベクトルを表現することは不可能である場合があり、したがって、動きベクトル精緻化プロセスを利用して、初期の動きベクトルを改善する。初期の動きベクトルは、例えば、現在のブロックの隣接ブロックの予測に使用される動きベクトルであってもよい。この場合に、その初期の動きベクトルは、ビットストリームの中で指標をシグナリングによって送信し、現在のブロックによっていずれの隣接ブロックの動きベクトルが使用されるかを示すのに十分である。そのような予測メカニズムは、初期の動きベクトルを表すビットの数を減少させるのにきわめて効率的である。しかしながら、一般的に、2つの隣接ブロックの動きベクトルは、同じであるとは予想されないので、初期の動きベクトルの精度は、低くなる場合がある。
【0243】
シグナリングオーバーヘッドをさらに増加させることなく、動きベクトルの精度をさらに改善するために、エンコーダ側で導出されるとともに、ビットストリームの中で提供される(シグナリングによって送信される)動きベクトルをさらに精緻化することが有益である場合がある。エンコーダからの支援なしに、デコーダにおいて、その動きベクトルの精緻化を実行することが可能である。そのデコーダループの中のエンコーダは、同じ精緻化を使用して、デコーダにおいて利用可能であるであろう対応する精緻化されている動きベクトルを取得することが可能である。現在の映像の中で再構成されている現在のブロックのための精緻化は、再構成されているサンプルのテンプレートを決定し、現在のブロックのための初期の動き情報の周りのサーチ空間を決定し、そして、そのサーチ空間の中で、そのテンプレートと最も良好に一致する基準映像部分を発見する、ことによって実行される。最も良好に一致する部分は、現在のブロックのための精緻化されている動きベクトルを決定し、その精緻化されている動きベクトルは、その次に、現在のブロック、すなわち、再構成されている現在のブロックについてのフレーム間予測されたサンプルを取得するのに使用される。動きベクトルの精緻化は、
図2のフレーム間予測ユニット(244)及び
図3の344の一部である。
【0244】
動きベクトルの精緻化は、以下のステップにしたがって実行されてもよい。典型的には、初期の動きベクトルは、ビットストリームの中の指標に基づいて決定されてもよい。例えば、ビットストリームの中で、候補動きベクトルのリストの中の位置を示しているインデックスをシグナリングによって送信してもよい。他の例では、動きベクトル予測インデックス及び動きベクトル差分値は、ビットストリームの中でシグナリングによって送信されてもよい。ビットストリームの中の指標に基づいて決定される動きベクトルは、初期の動きベクトルとして定義される。双方向予測の場合に、現在のブロックについてのフレーム間予測は、2つの動きベクトルMV0及びMV1にしたがって決定されるサンプルの予測されたブロックの重みづけされた組み合わせとして取得される。本明細書においては、MV0は、リストL0の中の第1の基準映像における初期の動きベクトルであり、MV1は、リストL1の中の第2の基準映像における初期の動きベクトルである。
【0245】
初期の動きベクトルを使用して、精緻化候補動きベクトル(MV)対を決定する。少なくとも、2つの精緻化候補対を決定する必要がある。典型的に、精緻化候補動きベクトル対は、初期の動きベクトル対(MV0,MV1)に基づいて決定される。さらに、MV0及びMV1に小さな動きベクトル差を加えることによって候補MV対を決定する。例えば、候補MV対は、
(MV0,MV1)
(MV0+(0,1),MV1+(0,-1))
(MV0+(1,0),MV1+(-1,0))
(MV0+(0,-1),MV1+(0,1))
(MV0+(-1,0),MV1+(1,0))
…
を含んでもよい。本明細書においては、(1,-1)は、水平(又は、x)方向に1の変位を有するとともに、垂直(又は、y)方向に-1の変位を有するベクトルを示している。候補対の上記のリストは、説明のための例であるにすぎず、本発明は、候補のある特定のリストに限定されるものではないということに留意すべきである。いくつかの例においては、動きベクトル精緻化プロセスのサーチ空間は、精緻化候補動きベクトル(MV)対を含む。
【0246】
現在のブロックの双方向予測においては、リストL0のためにそれぞれの第1の動きベクトルを使用するとともにリストL1のために第2の動きベクトルを使用して得られる2つの予測ブロックを組み合わせて、単一の予測信号とし、その単一の予測信号は、単方向予測よりも元の信号へのより良好な適応を提供することが可能であり、その結果、残差情報がより小さくなり、おそらく、より効率的な圧縮をもたらす。
【0247】
動きベクトルの精緻化においては、精緻化候補MV対の各々についての類似性メトリックに基づいて、候補MV対のそれぞれの第1の動きベクトル及び第2の動きベクトルを使用して得られる2つの予測ブロックを比較する。精緻化された動きベクトルとして、最も高い類似性メトリックをもたらす候補MV対を選択する。リストL0の中の第1の基準映像のための精緻化された動きベクトル及びリストL1の中の第2の基準映像のための精緻化された動きベクトルは、それぞれ、MV0'及びMV1'と示される。言い換えると、候補動きベクトル対のリストL0動きベクトル及びリストL1動きベクトルに対応する予測が得られ、その次に、リストL0動きベクトル及びリストL1動きベクトルは、類似性メトリックに基づいて比較される。関連する類似性が最も高い候補動きベクトル対は、精緻化されたMV対として選択される。
【0248】
典型的に、精緻化プロセスの出力は、精緻化されているMVである。それらの精緻化されているMVは、いずれの候補MV対が最も高い類似性を達成するかに応じて、初期MVと同じであってもよく又は初期MVと異なっていてもよく、初期MVが形成する候補MV対は、また、複数のMV対候補のうちのMV対である。言い換えると、最も高い類似性を達成する最も高い候補MV対が、初期MVによって形成される場合に、精緻化されているMV及び初期MVは、互いに等しくなる。
【0249】
類似性メトリックを最大化する位置を選択する代わりに、他の方法は、不同性メトリックを最小化する位置を選択することである。不同性比較尺度は、SAD(Sum of absolute differences)、MRSAD(mean removed sum of absolute differences、SSE(Sum of Squared Error)等であってもよい。2つの予測ブロックの間のSADは、候補MV対(CMV0,CMV1)を使用して取得されてもよく、SADは、
【数21】
のように計算されてもよく、nCbH及びnCbWは、予測ブロックの高さ及び幅であり、関数abs(a)は、引数aの絶対値を指定し、predSAmplesL0及びpredSAmplesL1は、(CMV0,CMV1)によって示される候補MV対にしたがって得られる予測ブロックサンプルである。
【0250】
代替的に、不同性比較尺度は、計算の数を減少させるために、予測ブロックの中のサンプルのサブセットのみを評価することによって取得されてもよい。ある1つの例は、以下のようになり、サンプルの行は、代替的に、(1行目おきに評価されるように)SAD計算の中に含まれている。
【数22】
【0251】
動きベクトルの精緻化のある1つの例は、(ITU-T SG 16 WP3及びISO/IEC JTC 1/SC 29/WG11の)JVETの文書JVET-M1001-v3"多目的ビデオコーディング(ドラフト4)"の中で説明され、その文書は、http://phenix.it-sudparis.eu/jvet/"で公に利用可能となっている。その文書の中の"8.4.3 デコーダ側の動きベクトルの精緻化プロセス"の節は、動きベクトルの精緻化を例示している。
【0252】
精緻化のための内部メモリ要件を減少させるために、いくつかの実施形態においては、輝度サンプルの複数のブロックに対して独立に動きベクトルの精緻化プロセスを実行してもよい。複数の輝度サンプルのうちのある特定のあらかじめ定められている幅又はあらかじめ定められている高さを超えるサンプルのコーディングされているブロックを輝度のうちのあらかじめ定められている幅及びあらかじめ定められている高さ以下のサンプルのサブブロックへと区分化することによって、輝度サンプルのそれらのブロックを取得してもよい。区分化されコーディングされているブロックの中の各々のサブブロックのための精緻化されているMV対は、異なっていてもよい。その次に、そのサブブロックの精緻化されているMV対を使用して、各々のサブブロックについて輝度及び彩度の双方についてのフレーム間予測を実行する。
【0253】
それぞれ、max_sb_width及びmax_sb_heightとして最大許容サブブロック幅及び最大許容サブブロック高さを示す。MVRの適用の対象となるサイズcbWidth×cbHeightの現在のコーディングユニットは、典型的には、以下のように、各々がサイズsbWidth×sbHeightの複数のサブブロックnumSbsに区分化される。
【数23】
式(x>y)? a: bは、x>yが真である場合に、値aを返し、x>yが偽である場合に、bを返す。初期MV対の各々のMVは、分数ピクセル精度を有してもよい。言い換えると、MVは、サンプルの現在のブロックと再サンプリングされている基準領域との間の変位を示してもよい。この変位は、再構成されている基準サンプルの整数グリッドからの水平方向及び垂直方向の分数位置を指し示してもよい。
【0254】
典型的には、再構成されている基準整数サンプルグリッド値の2次元内挿補間は、分数サンプルオフセット位置においてサンプル値を取得するように実行される。候補MV対を使用して、再構成されている基準映像から予測されたサンプルを取得するプロセスは、以下の方法のうちの1つによって行われてもよい。
・ 初期MV対の端数部分を丸めて、最も近い整数位置にし、そして、再構成されている基準映像の整数グリッド値を取得する。
・ 2タップの(例えば、双線形の)分離可能な双線形内挿補間を実行して、初期MV対が示す分数ピクセル精度で、その予測されたサンプル値を取得する。
・ (例えば、8タップ又は6タップ等の)より高次のタップの分離可能な内挿補間を実行して、初期MV対が示す分数ピクセル精度で、その予測されたサンプル値を取得する。
【0255】
候補MV対は、初期MV対に関する任意のサブピクセルオフセットを有してもよいが、一方で、いくつかの実施形態において、探索を単純化する目的で、それらの候補MV対は、その初期MV対に関する整数ピクセル距離によって選択される。そのような場合には、その初期MV対の周りのサンプルのあるブロックについての予測を実行して、その初期MV対の周りの複数の精緻化されている位置のすべてを覆うことによって、それらの複数の候補MV対にわたって予測されたサンプルを取得してもよい。
【0256】
いくつかの実施形態において、その初期MV対からある整数距離にある複数の候補MV対についての不同性コスト値を評価した後に、最良のコスト値位置からのサブピクセルオフセットを有する複数の追加的な候補MV対が加算されそして評価されてもよい。上記で説明されている複数の方法のうちの1つを使用して、それらの位置の各々について予測されたサンプルを取得し、そして、その不同性コストは、評価され及び比較されて、最も低い不同性位置を取得する。複数の他の実施形態において、最良のコスト整数距離の位置の周りの各々のサブピクセル距離位置に対するこの計算コストが高価な予測プロセスを回避するために、評価された整数距離コスト値が格納され、パラメトリックな誤差表面は、最良の整数距離位置の近傍において適合させられる。その次に、この誤差表面の最小値を解析的に計算し、そして、最小の不同性を有する位置として使用する。そのような場合に、不同性コスト値は、計算された整数距離コスト値から導出される。
【0257】
サンプルのある与えられたコーディングされているブロックに対する動きベクトルの精緻化の適用は、サンプルのコーディングされているブロックの特定のコーディング特性に条件付けられてもよい。そのようなコーディング特性のいくつかの例は、現在の映像から、サンプルのコーディングされているブロックの双方向予測のために使用される2つの基準映像までの(一様なフレームレートでサンプリングされているときの)映像の番号の間隔が等しく、現在の画像の反対側に位置するということを含む。また、コーディング特性は、初期MV対を使用して得られる2つの予測ブロックの間の初期の不同性が、あらかじめ定められているサンプル当たりのしきい値よりも小さいということを含んでもよい。
【0258】
いくつかの実装において、2つの予測が複数の異なる基準映像からの予測であるときに、BPOFは、双方向予測ブロックに適用される。BPOFは、アフィン変換の且つ重みづけの双方向予測動き補償されているサブブロックベースの高度な時間的マージモードの場合には適用されない。
【0259】
双方向予測のオプティカルフロー精緻化
【0260】
双方向予測のオプティカルフロー精緻化は、双方向予測のための信号以外にビットストリームの中に追加的な信号を明示的に提供することなく、ブロックの双方向予測の精度を改善するプロセスである。
図2のフレーム間予測ユニット244及び
図3のフレーム間予測ユニット344によって、その双方向予測のオプティカルフロー精緻化を実装することが可能である。オプティカルフロー精緻化プロセスの入力は、2つの基準映像からの予測サンプルであり、オプティカルフロー精緻化の出力は、オプティカルフロー方程式にしたがって計算される組み合わせの予測(predBIO)である。
【0261】
双方向予測の場合には、上記で説明されている動きベクトル対MV0及びMV1又は精緻化されている動きベクトル対のような2つの動きベクトルにしたがって、2つの基準フレームから2つのフレーム間予測を取得する。重みづけ平均等によってそれらの2つの予測を組み合わせてもよい。組み合わせの予測は、2つの予測における量子化雑音がキャンセルされるので、残差エネルギーの減少をもたらすことが可能であり、それにより、単方向予測(すなわち、1つの動きベクトルを使用する予測)と比較してより大きな符号化効率を提供する。ある1つの例では、双方向予測における重みづけの組み合わせは、以下のように実行されてもよい。
Bi-prediction=Prediction1*W1+Prediction2*W2+K, (19)
上記の式において、W1及びW2は、重み付け係数であり、それらの重み付け係数は、ビットストリームの中でシグナリングによって送信されてもよく又はあらかじめ定義されていてもよい。Kは、付加的な係数であり、同様に、シグナリングによって送信されてもよく又はあらかじめ定義されていてもよい。ある1つの例として、
Bi-prediction=(Prediction1+Prediction2)/2, (20)
によって双方向予測を取得してもよい。上記の式において、W1及びW2は、1/2に設定され、Kは、0に設定される。
【0262】
オプティカルフロー精緻化によって、双方向予測の精度を改善することが可能である。オプティカルフローは、対象物又はカメラの動きが引き起こす2つのフレームの間のそれらの画像対象物の見かけの動きのパターンである。オプティカルフロー精緻化プロセスは、2つの基準フレームの間のオプティカルフローを決定し、そして、その決定されたオプティカルフローに基づいて双方向予測を調整することによって、双方向予測の精度を改善する。
【0263】
空間座標に対応するxとy及び時間次元に対応するtを有する最初のフレームの中のピクセルI(x,y,t)を考える。そのピクセルI(x,y,t)は、dtの時間後の次のフレームでは距離(dx,dy)だけ移動している。2つのフレームの中のそれらのピクセルが同じであり、dtの時間内に強度が変化しないと仮定すると、オプティカルフロー方程式は、
I(x,y,t)=I(x+v
x,y+v
y,t+dt) (21)
のように定式化される。I(x,y,t)は、(x,y,t)の座標におけるピクセルの強度(すなわちサンプル値)を指定する。そのピクセルの移動又は変位が小さく、テイラー級数展開における高次項等の他の仮定を無視することが可能であるという仮定に基づいて、オプティカルフロー方程式は、
【数24】
のようにあらわされてもよい。上記の式において、
【数25】
及び
【数26】
は、位置(x,y)における水平方向のサンプル勾配及び垂直方向のサンプル勾配であり、
【数27】
は、(x,y)における時間偏微分である。いくつかの例において、サンプル勾配は、
∂I(x,y,t)/∂x=I(x+1,y,t)-I(x-1,y,t),
∂I(x,y,t)/∂y=I(x,y+1,t)-I(x,y-1,t)
によって取得されてもよい。
【0264】
オプティカルフロー精緻化は、双方向予測の質を改善するために、式(22)で示されている原理を利用する。いくつかの実装においては、オプティカルフロー精緻化は、サンプル勾配
【数28】
及び
【数29】
を計算し、第1の予測と第2の予測との間の差(I
(0)-I
(1))を計算し、そして、ピクセル又はピクセルのグループの変位(v
x,v
y)を計算することによって実行される。変位は、オプティカルフロー方程式を使用して得られる2つの基準フレームにおけるサンプルの間の誤差Δが最小化されるように計算される。誤差Δは、
【数30】
のように定義される。上記の式において、I
(0)は、(例えば、L0の中の第1の基準フレームにおける予測サンプル等の)第1の予測におけるサンプル値を表し、I
(1)は、I
(0)に対応する(例えば、L1の中の第2の基準フレームにおける予測サンプル等の)第2の予測におけるサンプル値である。v
x及びv
yは、それぞれ、x方向及びy方向で計算される変位である。∂I
(0)/∂x及び∂I
(0)/∂yは、x方向及びy方向での第1の基準フレームにおけるサンプルの勾配である。∂I
(1)/∂x及び∂I
(1)/∂yは、それぞれ、x方向及びy方向での第2の基準フレームにおけるサンプルの勾配である。τ
0及びτ
1は、それぞれ、第1の基準フレーム及び第2の基準フレームに対する現在のフレームの距離を示している。
図7は、式(23)に含まれているさまざまな変数の間の関係を示している。
【0265】
式(23)における変位(v
x,v
y)を決定するために、上記で言及されている最小化問題を解くのに、ある与えられた位置(x,y)のまわりのサンプルの区画を利用する。いくつかの手法は、それらの基準フレームの区画の中の複数の異なるピクセルについての2乗誤差の総和を最小化する。他の手法は、絶対誤差の総和を最小化する。変位(v
x,v
y)を決定した後に、その与えられた位置(x,y)における組み合わせの予測は、
【数31】
のように決定され、上記の式で、pred
BIOは、オプティカルフロー精緻化プロセスの出力である位置(x,y)における修正されている予測である。
【0266】
この方程式から、τ
0及びτ
1が1であると仮定すると、BDOFに基づいて決定されるオフセットは、
【数32】
となるということを決定することが可能である。
【0267】
いくつかの実施形態において、各々のピクセルについての変位を推定する複雑さを単純化するために、それらの変位は、ピクセルのグループについて推定される。例えば、それらの変位は、個々のピクセルについてではなく、4×4輝度サンプル等の4×4ピクセルのブロックについて推定されてもよい。これらの例では、4×4輝度サンプルのブロックについての改善された双方向予測を計算するために、それらの変位は、サンプルの4×4ブロックを中心に持つ8×8輝度サンプルのブロック等の4×4輝度サンプルのブロックの近傍のサンプル値を使用して推定される。コーディングユニットの幅又は高さが16を超えるときに、そのコーディングユニットは、複数のサブブロックに区分化される。あるサブブロックの境界において、2次元の分離可能な動き補償されているいかなる内挿補間も行うことなく、整数グリッド基準サンプル値を使用して、複数のサンプル勾配を計算する。その後、サブブロックの境界から最も近いサンプルの値及びサンプル勾配値を拡張することによって、サブブロック位置の外側に拡張されたサンプル及びサンプル勾配を取得する。
【0268】
オプティカルフロー精緻化プロセスの入力は、2つの基準映像からの予測サンプルであり、オプティカルフロー精緻化の出力は、オプティカルフロー方程式にしたがって計算される組み合わせの予測(predBIO)である。
【0269】
BDOFの現在採用されているバージョンでは、サンプルの現在の4×4ブロックを中心に持つ6×6ブロックのサンプルの水平方向の勾配及び垂直方向の勾配に基づいてオプティカルフロー(v
x,v
y)を計算するのに、以下の方程式を使用する。
【数33】
【0270】
オプティカルフロー変位(vx,vy)は、また、"オプティカルフロー(vx,vy)"と称される。vx及びvyを計算するのに必要となる除算演算は、分母の中の最上位ビットの位置のみを使用して分子を右シフトさせることによって、精度を犠牲にして単純化される。複数の他の先行技術においては、最上位ビットの位置を表す可変のシフトを使用して、逆数の値を含むNビットルックアップテーブルによって、除算を置き換えて、精度を改善する。しかしながら、そのルックアップテーブルは、オンチップメモリの増加をもたらす。逆数に対するMビット精度を有するNビットルックアップテーブルは、N*MビットのSRAMを必要とする。
【0271】
動きベクトルの精緻化のある1つの例は、文書JVET-M1001、多目的ビデオコーディング(ドラフト4)の8.4.7.4"双方向オプティカルフロー予測プロセス"の中で説明されている。
【0272】
上記で説明されているように、オプティカルフローは、水平方向のvx及び垂直方向のvyの2つの成分を含む。式(25)-(31)に示されている方法と比較して、水平方向のvx及び垂直方向のvyの2つの成分について本明細書において提示されている計算は、乗算演算を排除し、複数の項のビット深度を減少させる。
【0273】
特に、オプティカルフローは、
【数34】
のように推定されてもよい。上記の式で、
【数35】
及び
【数36】
は、それぞれ、第1の基準フレーム及び第2の基準フレームにおけるピクセル(i,j)の水平方向の予測されたサンプル勾配であり、
【数37】
及び
【数38】
は、それぞれ、第1の基準フレーム及び第2の基準フレームにおけるピクセル(i,j)の垂直方向の予測されたサンプル勾配である。本明細書においては、i及びjは、整数であり、サンプル位置の現在のブロックを中心に持つサンプル位置のセットにわたって広がっている。ある1つの実施形態において、4×4ブロックについては、4×4ブロックを中心に持つサンプル位置の6×6ブロックを使用する。ある1つの例では、iの値は、-1から4まで変化し、jの値は、-1から4まで変化する。
【0274】
上記の相互相関の項及び自己相関の項s1乃至s5の計算の際に、1つ又は複数の項をシフトさせて、それらの値の精度及びビット深度を調整することが可能であるということを理解すべきである。
【0275】
さらに、上記で列記されている式(32)-(38)は、解説の目的を有しているにすぎず、限定するものであると解釈されるべきではないということに留意すべきである。これらの方程式の中のさまざまな項は、これらの方程式の中の他の項と組み合わせられる前に、あらかじめ処理されてもよい。例えば、項(Gy1(i,j)+Gy0(i,j))又はGx1(i,j)+Gx0(i,j)は、s1乃至s5を計算するために上記の方程式で示されているような方法で使用される前に、シフトされてもよく、符号を変化させることによって反転させられてもよく、又は、その他の方法で処理されてもよい。同様に、項(I(1)-I(0))は、また、上記の方程式の中の他の項と組み合わせられる前に、あらかじめ処理されてもよい。同様に、上記の方程式で決定されるさまざまな値は、また、vx及びvyのための値を計算するのに使用される前に後処理されてもよい。例えば、上記で決定されるsk(k=1,…,5)は、skの最終版を決定するために、その値の上位ビットにその値の下位ビットを加えることによって後処理されてもよい。その次に、上記で示されているようにこの最終版を使用して、vx及びvyを決定してもよい。
【0276】
この実装から理解することができるように、この例では、新しい数s5を決定して、オプティカルフローの第2の成分vyの計算を容易にする。s5は、2つの基準フレームにわたる垂直方向の予測されたサンプル勾配の総和の符号及びそれらの2つの基準フレームにわたる水平方向の予測されたサンプル勾配の総和の積の総和に基づいて決定される。乗算演算を行うことなく、s5の計算を実現することが可能である。例えば、ある与えられたサンプル位置における垂直方向の予測されたサンプル勾配の総和の符号に基づいて、そのサンプル位置における水平方向の予測されたサンプル勾配の総和を条件付きで加算し又は減算することによって、その計算を実行することが可能である。その次に、vx、s5、及びs2に基づいて、オプティカルフローの垂直成分vyを修正する。いくつかの実装において、それぞれ、s1及びs2の中の最上位ビット位置の位置に等しい右シフトを適用することによって、方程式(32)-(38)でのs1又はs2による除算を簡略化することが可能である。その結果、方程式(32)-(44)の中で指定されるオプティカルフローのための成分s1乃至s5の計算、特に、成分s5の計算は、符号演算に基づいているため、ビット深度を減少させている。特に、その計算は絶対演算及び符号演算のみを伴うので、vxのビット深度を減少させ、それによって、vyの計算において、vx×s5のための乗算器のビット深度を減少させることが可能である。このようにして、vx及びvyのための計算の計算上の複雑性を有意に減少させる。
【0277】
上記から理解することができるように、BDOFは、したがって、特に、乗算の数及び乗算器のサイズに関して、よりいっそう少ない計算を必要とする。いくつかの例では、BDOFは、4×4サブブロックのレベルでCUの双方向予測信号を精緻化するのに使用され、輝度成分にのみ適用される。BDOFモードは、対象物の動きが平滑であると仮定したオプティカルフロー概念に基づいている。各々の4×4サブブロックについて、L0予測サンプルとL1予測サンプルと間の差を最小化することによって、動きの精緻化又は動きのオフセットを計算する。その次に、動き精緻化は、4×4サブブロックにおける双方向予測されたサンプル値を調整するのに使用される。
【0278】
上記で説明されているように、対応する基準フレームの中の2つの隣接するサンプルの間の差を計算することによって、水平方向の勾配及び垂直方向の勾配、
【数39】
及び、
【数40】
k=0,1を計算することが可能である。その差を計算する前に、輝度ビット深度に基づいて、それらのサンプルをシフトさせてもよい。勾配の自己相関及び相互相関s
1、s
2、s
3、s
4、及びs
5は、4×4サブブロックのまわりの6×6ウィンドウについて計算される。
図6は、6×6ウィンドウと4×4サブブロックとの間の関係を示している。理解することができるように、s
1、s
2、s
3、s
4、及びs
5の中で使用される複数の勾配の値を導出するために、現在のCU(グレー位置)境界の外側にあるリストk(k=0,1)の中のいくつかの予測サンプルl
(k)(i,j)を生成する必要がある。
図6に示されている例では、BDOFは、CUの境界の周囲に1つの拡張された行/列を使用する。これらの拡張されたサンプル値は、勾配計算においてのみ使用される。BDOFプロセスの中の残りのステップにおいては、CU境界の外のいずれかのサンプル値及び勾配値が必要となる場合に、それらのサンプル値及び勾配値は、それらの最も近い隣接部分からパディングされる(すなわち、反覆される)。
【0279】
動き精緻化(v
x,v
y)は、その次に、
【数41】
を使用することによって、相互相関の項及び自己相関の項を使用して導出される。上記の式で、
【数42】
である。
【数43】
は、床関数であり、
【数44】
である。
動き精緻化及び勾配に基づいて、4×4サブブロックの中の各々のサンプルについて、
【数45】
の調整を計算する。最後に、そのCUのBDOFサンプルは、
【数46】
のように双方向予測サンプルを調整することによって計算される。
【0280】
図8は、本明細書において提示されているオプティカルフローの計算に基づいて、双方向予測のオプティカルフロー精緻化を実行するためのプロセス800のある1つの例を図示している。(例えば、符号化装置200又は復号化装置300等の)1つ又は複数のコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図8に示されている動作を実行する。
【0281】
ブロック810は、上記で説明されている第1のステップに対応する。このブロックにおいては、入力として2つの動きベクトルを取得する。ビットストリームの中の指示情報に基づいて、初期の動きベクトルを決定することが可能である。例えば、インデックスは、ビットストリームの中でシグナリングによって送信されてもよく、そのインデックスは、候補動きベクトルのリストの中の位置を示している。他の例では、ビットストリームの中で、動きベクトル予測器インデックス及び動きベクトル差分値をシグナリングによって送信してもよい。他の例では、これらの動きベクトルは、ビットストリームの中で示される動きベクトルの初期対から開始して、動きベクトルの精緻化を使用して精緻化動きベクトルとして導出されてもよい。他の例では、ビットストリームから複数の基準フレーム指標を取得することが可能であり、そのビットストリームは、その取得した動きベクトル対のうちの与えられた動きベクトルが関連している基準フレームを示す。例えば、その指標は、第1の基準フレームリストL0からのフレームがその動きベクトル対のうちの動きベクトルMV0と関連し、第2の基準フレームリストL1からのフレームがその動きベクトル対の動きベクトルMV1と関連しているということを指定することが可能である。
【0282】
ブロック820は、上記で説明されている第2のステップに対応する。このブロックにおいては、取得される動きベクトル対及びKタップ内挿補間フィルタにしたがって、2つの基準フレーム(すなわち、再構成されている輝度サンプル)の各々において、単方向予測を取得することが可能である。例えば、動きベクトルが整数サンプル位置に対応しているときに、その予測は、複数の再構成されている基準サンプル値を取得する。その動きベクトルがゼロではない水平成分を有するが、ゼロの垂直成分を有する場合に、その予測は、水平Kタップ内挿補間を実行して、その予測サンプル値を取得する。動きベクトルがゼロではない垂直成分を有するが、ゼロの水平成分を有する場合に、その予測は、垂直Kタップ内挿補間を実行して、予測されるサンプル値を取得する。動きベクトルが、水平成分及び垂直成分の双方について、ゼロではない値を有する場合に、垂直内挿補間が後に続くとともに最初に実行される水平内挿補間を使用して、2次元の分離可能なKタップ内挿補間を実行して、予測されたサンプル値を取得する。このようにして、第1の予測は、第1の基準フレームリストL0からの基準フレームの中のMV0を使用して生成され、第2の予測は、第2の基準フレームリストL1からの基準フレームの中のMV1を使用して生成される。
【0283】
ブロック830は、上記で説明されている第3のステップに対応する。このブロックにおいては、基準フレームの中で第2ステップによって得られる予測を使用して、ある与えられた現在のコーディングユニットの中の各々のサブブロックについてオプティカルフローを推定する。上記で説明されている表記と一致して、第1の基準フレームの中で得られる予測による予測サンプルは、I(0)として示され、第2の基準の中で得られる予測による予測サンプルは、I(1)として示される。この位置の右側への予測されたサンプル値とこの位置の左側へのサンプル値との間の差、すなわち、∂I/∂x=I(x+1,y)-I(x-1,y)をとることによって、ある位置(i,j)における水平方向のサンプル勾配を計算することが可能である。この位置より下の予測されたサンプル値とこの位置より上のサンプル値との間の差、すなわち、∂I/∂y=I(x,y+1)-I(x,y-1)をとることによって、ある位置(i,j)における垂直方向のサンプル勾配を計算することが可能である。画像又はフレームの場合には、水平方向は、左から右の方向に向き、垂直方向は、頂部から底部に向かうということに留意すべきである。いくつかの例においては、現在のコーディングサブブロックの中の位置のセットについて、∂I(0)/∂xと∂I(0)/∂y及び∂I(1)/∂xと∂I(1)/∂yを計算する。それらの決定されたサンプル勾配に基づいて、それぞれの式(31)-(40)を使用して上記で説明されている方法、或いは、それぞれの式(38)-(46)又は式(47)-(52)を使用して上記で説明されている反復的なオプティカルフローの推定方法を使用して、オプティカルフローを決定してもよい。
【0284】
ブロック840は、上記で説明されている第4のステップに対応する。このブロックにおいては、式(24)にしたがって、現在のコーディングブロックについての最終的なフレーム間の双方向予測されたサンプルを計算することが可能であり、その式(24)は、予測されたサンプル値、決定されたサンプル勾配、及び推定されたオプティカルフローを考慮に入れる。
【0285】
図9は、ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のための例示的方法900のフローチャートである。
【0286】
ステップ910において、方法900は、現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するステップを含み、垂直方向の動きオフセットは、水平方向の動きオフセット及び第5の変数s5に基づいて決定される。第5の変数s5は、複数の項の総和を示している。それらの複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得される。第1の行列の要素は、第2の行列の要素に対応する。
【0287】
第1の行列の各々の要素は、現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から取得される。第1の水平方向の予測されたサンプル勾配及び第2の水平方向の予測されたサンプル勾配は、第1の行列の要素に対応する。第2の行列の各々の要素は、現在のブロックの第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び現在のブロックの第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から取得される。第1の水平方向の予測されたサンプル勾配及び第2の水平方向の予測されたサンプル勾配は、第2の行列の要素に対応する。
【0288】
ステップ920において、プロセス900は、第1の基準フレームに対応する予測サンプル値と、第2の基準フレームに対応する予測サンプル値と、水平方向の動きオフセット及び垂直方向の動きオフセットとを使用して、現在のブロックにおける予測サンプル値を決定するステップを含む。
【0289】
現在のブロックは、4×4ブロック等の任意のサイズのブロックであってもよいということに留意すべきである。現在のブロックは、ビデオ信号のフレームのサブブロックであってもよい。例えば、(x,y)といったように、そのフレームの左上角に対するピクセルの絶対位置を使用して、又は、例えば、(xBlock+i,yBlock+j)といったように、そのブロックの左上角を基準とするピクセルの相対的位置を使用して、現在のブロックのピクセルを指し示してもよい。本明細書においては、(xBlock,yBlock)は、そのフレームの左上角を基準とするそのブロックの左上角の座標である。
【0290】
第1の行列及び第2の行列は、行及び列を含むとともに、(i,j)を使用して、その配列の要素を指し示すことが可能である任意の2次元配列であってもよく、xは、水平方向/行インデックスであり、yは、垂直方向/列インデックスである。i及びjの範囲は、例えば、i=xBlock-1,…,xBlock+4及び j=yBlock-1,…,yBlock+4であってもよい。第1の行列及び第2の行列は、現在のブロックに対応するか、又は、現在のブロックに対して決定される。いくつかの例においては、第1の行列のサイズは、現在のブロックのサイズよりも大きくてもよい第2の行列のサイズと同じである。例えば、第1の行列及び第2の行列のサイズは、6×6であってもよく、一方で、現在のブロックのサイズは、4×4である。
【0291】
第1の行列の中の第1の要素の位置(x,y)が、第2の行列の中の第2の要素の位置(p,q)と同じである場合、すなわち、(x,y)=(p,q)である場合には、第1の行列の要素(第1の要素)は、第2の行列の要素(第2の要素)に対応する。第1の水平方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の水平方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の水平方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の水平方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第1の水平方向の予測されたサンプル勾配が、第1の行列の中のその要素の位置(x,y)について生成されるということを意味する。同様に、第2の水平方向の予測されたサンプル勾配が第1の行列の要素に対応するということは、第2の水平方向の予測されたサンプル勾配が、第1の行列の中の要素の位置(x,y)について生成されるということを意味する。
【0292】
第1の垂直方向の予測されたサンプル勾配が現在のブロックの第1の基準フレームに対応するということは、第1の垂直方向の予測されたサンプル勾配が、現在のブロックの第1の基準フレームの中のサンプルに基づいて生成されるということを意味する。第2の垂直方向の予測されたサンプル勾配が現在のブロックの第2の基準フレームに対応するということは、第2の垂直方向の予測されたサンプル勾配が、現在のブロックの第2の基準フレームの中のサンプルに基づいて生成されるということを意味する。第1の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第1の垂直方向の予測されたサンプル勾配が、第2の行列のその要素の位置(p,q)について生成されるということを意味する。同様に、第2の垂直方向の予測されたサンプル勾配が第2の行列の要素に対応するということは、第2の垂直方向の予測されたサンプル勾配が、第2の行列の中のその要素の位置(p,q)について生成されるということを意味する。
【0293】
行列の各々の要素が2つの項の和から取得されるということは、その要素が2つの項のその和それ自体として決定されてもよく、又は、2つの項のその和を処理した後の値として決定されてもよいということを意味する。その処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。同様に、ある項が第2の行列の要素の符号及び第1の行列の要素から取得されるということは、その項が、第1の行列の要素の値それ自体をとってもよく、又は、第1の行列のその要素が処理された後の値をとってもよく、そして、第2の行列の要素の符号を適用するということを意味する。第1の行列のその要素の処理は、左シフト、右シフト、クリッピング、又はそれらの組み合わせを含んでもよい。要素xの符号は、
【数47】
として決定されてもよい。
【0294】
本明細書において提示されている技術は、水平方向の動きオフセット及び垂直方向の動きオフセットに基づいて、現在のブロックの双方向予測されたサンプル値を調整する。垂直方向の動きオフセットは、第5の変数s5に基づいて計算され、その第5の変数s5は、第2の行列の要素の符号及び第1の行列の要素から取得される項の総和に関与するにすぎない。ある1つの要素の符号を他の要素に適用することは、乗算演算を伴わない。同様に、総和は、また、いかなる乗算にも関与しない。結果として、本明細書において提示されているBDOFベースのフレーム間予測技術は、乗算演算を排除する。従来の手法と比較して、乗算演算は、符号決定によって置換されるので、第5の変数s5のビット深度を減少させる。このことは、水平方向の動きオフセットvx及び垂直方向の動きオフセットvyのビット深度の減少につながるとともに、また、予測の計算の複雑さ及び乗算器のサイズの有意な減少につながる。
【0295】
図10は、ビデオ信号の現在のブロックについての双方向オプティカルフロー(BDOF)ベースのフレーム間予測のためのデバイス1000を図示している。デバイス1000は、
【0296】
現在のブロックの水平方向の動きオフセットvx及び垂直方向の動きオフセットvyを決定するように構成される決定ユニット1001を含み、垂直方向の動きオフセットは、水平方向の動きオフセット及び第5の変数s5に基づいて決定される。第5の変数s5は、複数の項の総和を示し、それらの複数の項の各々は、第2の行列の要素の符号及び第1の行列の要素から取得され、第1の行列の要素は、第2の行列の要素に対応する。
【0297】
第1の基準フレームに対応する予測サンプル値と、第2の基準フレームに対応する予測サンプル値と、水平方向の動きオフセット及び垂直方向の動きオフセットとを使用して、現在のブロックにおける予測サンプル値を予測するように構成される予測処理ユニット1003を含む。
【0298】
決定ユニット1001は、さらに、現在のブロックの第1の基準フレームに対応する第1の水平方向の予測されたサンプル勾配及び現在のブロックの第2の基準フレームに対応する第2の水平方向の予測されたサンプル勾配の和から、第1の行列の各々の要素を取得するように構成される。第1の水平方向の予測されたサンプル勾配及び第2の水平方向の予測されたサンプル勾配は、第1の行列の要素に対応する。
【0299】
決定ユニット1001は、さらに、現在のブロックの第1の基準フレームに対応する第1の垂直方向の予測されたサンプル勾配及び現在のブロックの第2の基準フレームに対応する第2の垂直方向の予測されたサンプル勾配の和から、第2の行列の各々の要素を取得するように構成される。第1の水平方向の予測されたサンプル勾配及び第2の水平方向の予測されたサンプル勾配は、第2の行列の要素に対応する。
【0300】
対応して、ある1つの例では、デバイス1000の例示的な構成は、
図2におけるエンコーダ200に対応してもよい。他の例では、デバイス1000の例示的な構成は、
図3におけるデコーダ300に対応してもよい。他の例では、デバイス1000の例示的な構成は、
図2におけるフレーム間予測ユニット244に対応してもよい。他の例では、デバイス1000の例示的な構成は、
図3におけるフレーム間予測ユニット344に対応してもよい。
【0301】
オプティカルフロー及び双方向予測されたサンプルを計算するための本明細書において提示されている技術は、そのオプティカルフローの独立して計算される第1の成分に基づいてオプティカルフローの第2の成分を計算することによって、コーディングの効率を改善する。従属する計算は、また、いかなる乗算演算も必要としないので、計算の複雑さは、低いままとなる。第2の方向における複数の勾配の総和の符号に基づいて第1の方向における複数の勾配の総和を条件付きで加算し又は減算することによって、いかなる乗算も行うことなく、第2の方向における複数の勾配の総和の符号と第1の方向における複数の勾配の総和の積の総和を実現することが可能である。本明細書において提示されている技術は、また、乗算演算を使用するそれらの方法と同様の圧縮効率を達成する。
【0302】
本開示は、以下のさらなる態様を提供する。
【0303】
第1の態様によれば、オプティカルフローに基づくフレーム間予測のための方法であって、その方法は、
-現在のコーディングブロックについてオプティカルフローを決定するステップであって、そのオプティカルフローの第2の成分は、第1の定式化によって、(フレーム間双方向予測に基づく双方向予測オプティカルフローにおいて、vyは、vxに基づくか、又は、vxは、vyに基づく、といったように)そのオプティカルフローの第1の成分に基づいて決定され又は導出される、ステップと、
-現在のコーディングブロックについての決定されたオプティカルフローを使用して、現在のサブブロックについて(双方向予測されたサンプル値等の)予測サンプル値を取得し又は導出するステップと、を含む、方法である。
【0304】
第1の態様のいずれかの先行する実装形態又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、現在のコーディングブロックについてオプティカルフローを決定するステップは、
現在のコーディングブロックについてオプティカルフローを計算するステップであって、オプティカルフローの第2の成分は、
-オプティカルフローの第1の成分と、
-第2の成分に対応する方向における2つの基準フレームにわたる(2つの予測されたブロックにおける対応するサンプル位置等の)対応する予測されたサンプル勾配の総和の符号及び絶対値と、
-第1の成分に対応する方向におけるそれらの2つの基準フレームにわたる対応する予測されたサンプル勾配の総和と、
を使用して計算される、ステップを含む。
【0305】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、現在のコーディングブロックについての決定されたオプティカルフローを使用して、現在のサブブロックについて(双方向予測されたサンプル値等の)予測サンプル値を取得し又は導出するステップは、
2つの基準フレームにおける予測されたサンプル値、計算されているオプティカルフロー、及び、水平方向のサンプル勾配と垂直方向のサンプル勾配とのセット、を使用して、現在のコーディングブロックについての双方向予測されたサンプル値を取得するステップであって、予測されるサンプル値のセットは、2つの基準フレームに対する現在のコーディングブロックについての一対の動きベクトルを使用して、2つの基準フレームの各々において取得される、ステップ、を含む。
【0306】
第1の態様のいずれかの先行する実装又は第1の態様それ自体にしたがった方法のある1つの可能な実装形態において、その方法は、
-現在のコーディングブロックについてオプティカルフローを計算するステップであって、オプティカルフローの第2の成分は、
-オプティカルフローの計算されている第1の成分と、
-第2の成分に対応する方向における2つの基準フレームにわたる対応する予測されたサンプル勾配の総和の符号及び絶対値と、
-第1の成分に対応する方向における2つの基準フレームにわたる対応する予測されたサンプル勾配の総和と、
を使用して計算される、ステップと、
-2つの基準フレームにおける予測されたサンプル値、計算されているオプティカルフロー、及び、水平方向のサンプル勾配と垂直方向のサンプル勾配とのセットを使用して、現在のコーディングブロックについての双方向予測されたサンプル値を取得するステップであって、複数の予測されたサンプル値のセットは、2つの基準フレームに対する現在のコーディングブロックについての一対の動きベクトルを使用して、2つの基準フレームの各々において取得される、ステップと、をさらに含む。
【0307】
第2の態様によれば、オプティカルフローに基づくフレーム間予測のための方法であって、その方法は、
-2つの基準フレームに対する現在のコーディングブロックの一対の動きベクトルを取得するステップと、
-取得した動きベクトル対及び2つの基準フレームの再構成されている輝度サンプル値を使用して、各々の基準フレームにおいて予測サンプルのセットを取得するステップと、
-2つの基準フレームの中の複数の対応するサンプルの間の第1の予測されたサンプル差と、2つの基準フレームの中の対応する水平方向のサンプル勾配(sGx)及び垂直方向のサンプル勾配(sGy)の総和と、を使用して、現在のコーディングブロックについてのオプティカルフローを計算するステップであって、オプティカルフローの第2の成分は、
-オプティカルフローの計算されている第1の成分と、
-第2の成分に対応する方向における2つの基準にわたる対応する予測されたサンプル勾配の総和の符号及び絶対値と、
-第1の成分に対応する方向における2つの基準にわたる対応する予測されたサンプル勾配の総和と、
を使用して計算される、ステップと、
- BDOF(Bi-Directional Optical Flow)についての予測方程式に基づいて、2つの基準における第1の予測されたサンプル値、計算されているオプティカルフロー、及び、水平方向のサンプル勾配と垂直方向のサンプル勾配を使用して、現在のコーディングブロックについての双方向予測されたサンプル値を取得するステップと、を含む、方法である。
【0308】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、2つの基準フレームの再構成されている基準輝度サンプル値は、2つの基準フレームの再構成されている隣接する輝度サンプル値を含む。
【0309】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、オプティカルフローは、オプティカルフロー方程式
【数48】
にしたがって計算され、I
(0)は、第1の予測におけるサンプル値に対応し、I
(1)は、第2の予測におけるサンプル値であり、v
x及びv
yは、x方向及びy方向において計算される変位であり、∂I
(0)/ ∂x及び∂I
(0)/ ∂yは、x方向及びy方向における勾配であり、τ
0及びτ
1は、第1の予測及び第2の予測が得られる基準映像までの距離を示す。
【0310】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、当該方法は、双方向予測のために使用され、
対応して、一対の動きベクトルは、第1の基準フレームリストに対応する第1の動きベクトル及び第2の基準フレームリストに対応する第2の動きベクトルを含み、
予測されたサンプルの取得したセットは、第1の動きベクトルにしたがって得られる予測されたサンプルの第1のセット及び第2の動きベクトルにしたがって得られる予測されたサンプルの第2のセットを含み、
水平方向のサンプル勾配及び垂直方向のサンプル勾配は、予測されたサンプルの第1のセットを使用して計算される水平方向のサンプル勾配及び垂直方向のサンプル勾配の第1のセットと、予測されたサンプルの第2のセットを使用して計算される水平方向のサンプル勾配及び垂直方向のサンプル勾配の第2のセットと、を含み、
動きオフセットは、水平方向の勾配及び垂直方向の勾配の第1のセット及び第2のセットと、予測されたサンプルの第1のセット及び第2のセットと、に基づいて取得され、現在のサブブロックについての予測サンプル値は、動きオフセットを使用して取得される。
【0311】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、オプティカルフローの(vy等の)第2の成分は、オプティカルフローの(vx等の)第1の成分と第1の値、第2の値、第3の値、第4の値、及び第5の値のうちの1つ又は複数とに基づいて決定され又は導出され、
オプティカルフローの(vx等の)第1の成分は、第1の値、第2の値、第3の値、第4の値、及び第5の値のうちの1つ又は複数に基づいて決定され又は導出される。
【0312】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、vyは、
【数49】
のように、双方向予測オプティカルフローベースのフレーム間の双方向予測におけるvxに基づいている。
【0313】
第2の態様のいずれかの先行する実装又は第2の態様それ自体にしたがった方法のある1つの可能な実装形態において、
【数50】
となる。
【0314】
第4の態様によれば、エンコーダ(20)は、第1の態様及び第2の態様のうちのいずれか1つにしたがった方法を実行するための処理回路を含む。
【0315】
第5の態様によれば、デコーダ(30)は、第1の態様及び第2の態様のうちのいずれか1つにしたがった方法を実行するための処理回路を含む。
【0316】
第6の態様によれば、コンピュータプログラム製品は、第1の態様及び第2の態様のうちのいずれか1つにしたがった方法を実行するためのプログラムコードを含む。
【0317】
第7の態様によれば、コンピュータデバイスによって実行されるときに、そのコンピュータデバイスに第1の態様及び第2の態様のうちのいずれか1つの方法を実行させるプログラムコードを有する非一時的な且つコンピュータ読み取り可能な媒体である。
【0318】
第8の態様によれば、デコーダであって、
1つ又は複数のプロセッサと、
それらのプロセッサに結合され、プロセッサによる実行のためにプログラミングを格納する非一時的な且つコンピュータ読み取り可能な記憶媒体と、を含み、そのプログラミングがプロセッサによって実行されるときに、そのプログラミングは、第1の態様及び第2の態様のうちのいずれか1つにしたがった方法を実行するようにデコーダを構成する。
【0319】
第9の態様によれば、エンコーダであって、
1つ又は複数のプロセッサと、
それらのプロセッサに結合され、プロセッサによる実行のためにプログラミングを格納する非一時的な且つコンピュータ読み取り可能な記憶媒体と、を含み、そのプログラミングがプロセッサによって実行されるときに、そのプログラミングは、第1の態様及び第2の態様のうちのいずれか1つにしたがった方法を実行するようにエンコーダを構成する。
【0320】
第10の態様によれば、オプティカルフローに基づくフレーム間予測のための装置であって、その装置は、
-現在のコーディングブロックについてオプティカルフローを決定するように構成される決定ユニットであって、オプティカルフローの第2の成分は、(双方向予測オプティカルフローベースのフレーム間の双方向予測における、といったように)オプティカルフローの第1の成分に基づいて決定され又は導出される、決定ユニットと、
-現在のコーディングブロックについて決定されているオプティカルフローを使用して、現在のサブブロックについての(例えば、双方向予測されたサンプル値等の)予測サンプル値を取得し又は導出するように構成される取得ユニットと、を含む。
【0321】
以下の記載は、上記の複数の実施形態に示されている符号化方法とともに復号化方法、及びそれらを使用するシステムに関する複数の適用例の説明である。
【0322】
図11は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、捕捉デバイス3102及び端末デバイス3106を含み、随意的に、ディスプレイ3126を含む。捕捉デバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。その通信リンクは、上記で説明されている通信チャネル13を含んでもよい。通信リンク3104は、これらには限定されないが、WIFI、イーサネット、ケーブル、無線(3G/4G/5G)、USB、又はそれらのいずれかの種類の組み合わせ等を含む。
【0323】
捕捉デバイス3102は、データを生成し、そして、上記の複数の実施形態によって示されている符号化方法によってデータを符号化してもよい。代替的に、捕捉デバイス3102は、(図には示されていない)ストリーミングサーバにデータを配信してもよく、そのサーバは、そのデータを符号化し、そして、端末デバイス3106にその符号化されているデータを送信する。捕捉デバイス3102は、これらには限定されないが、カメラ、スマートフォン又はPad、コンピュータ又はラップトップ、ビデオ会議システム、PDA、車載型デバイス、又はそれらのいずれかの組み合わせ等を含む。例えば、捕捉デバイス3102は、上記で説明されている発信元デバイス12を含んでもよい。データがビデオを含むときに、捕捉デバイス3102の中に含まれるビデオエンコーダ20は、実際に、ビデオ符号化処理を実行してもよい。データがオーディオ(すなわち、音声)を含むときに、捕捉デバイス3102の中に含まれるオーディオエンコーダは、実際に、オーディオ符号化処理を実行してもよい。いくつかの実際上のシナリオの場合には、捕捉デバイス3102は、それらを一体として多重化することによって、符号化されているビデオ及びオーディオデータを配信する。他の実際上のシナリオの場合には、例えば、ビデオ会議システムにおいては、符号化されているオーディオデータ及び符号化されているビデオデータは、多重化されない。捕捉デバイス3102は、端末デバイス3106に、符号化されているオーディオデータ及び符号化されているビデオデータを個別に配信する。
【0324】
コンテンツ供給システム3100において、端末デバイス310は、符号化されているデータを受信し及び再生する。端末デバイス3106は、上記で言及されている符号化されたデータを復号化することが可能であるスマートフォン又はPad3108、コンピュータ又はラップトップ3110、ネットワークビデオレコーダ(NVR)/ディジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルディジタルアシスタント(PDA)3122、車載型デバイス3124、又はこれらのいずれかの組み合わせ等のデータ受信能力及び復元能力を有するデバイスであってもよい。例えば、端末デバイス3106は、上記で説明されている宛先デバイス14を含んでもよい。符号化されているデータがビデオを含むときは、ビデオ復号化を実行するために、端末デバイスの中に含まれているビデオデコーダ30を優先する。符号化されているデータがオーディオを含むときは、オーディオ復号化処理を実行するために、端末デバイスの中に含まれているオーディオデコーダを優先する。
【0325】
例えば、スマートフォン又はPad3108、コンピュータ又はラップトップ3110、ネットワークビデオレコーダ(NVR)/ディジタルビデオレコーダ(DVR)3112、TV3114、パーソナルディジタルアシスタント(PDA)3122、又は車載型デバイス3124等の自身のディスプレイを有する端末デバイスの場合には、その端末デバイスは、自身のディスプレイへとその復号化されているデータを供給してもよい。例えば、STB 3116、ビデオ会議システム3118、又はビデオ監視システム3120等のディスプレイを装備していない端末デバイスの場合には、外部ディスプレイ3126に連絡を取って、その端末デバイスにおいてその復号化されているデータを受信し及び示す。
【0326】
このシステムにおける各々のデバイスが符号化又は復号化を実行するときに、上記で言及されている複数の実施形態に示されている映像符号化デバイス又は映像復号化デバイスを使用してもよい。
【0327】
図12は、端末デバイス3106のある1つの例の構成を示す図である。端末デバイス3106が、捕捉デバイス3102からのストリームを受信した後に、プロトコル処理ユニット3202は、そのストリームの送信プロトコルを分析する。そのプロトコルは、これらには限定されないが、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージプロトコル(RTMP)、又はそれらのいずれかの種類の組み合わせ等を含む。
【0328】
プロトコル処理ユニット3202がそのストリームを処理した後に、ストリームファイルを生成する。そのファイルは、逆多重化ユニット3204に出力される。その逆多重化ユニット3204は、その多重化されているデータを分離して、符号化されているオーディオデータ及び符号化されているビデオデータとしてもよい。上記で説明しているように、複数の実際上のシナリオのうちのいくつかのシナリオの場合に、例えば、ビデオ会議システムにおいては、符号化されているオーディオデータ及び符号化されているビデオデータは、多重化されない。この状況においては、符号化されているデータは、逆多重化ユニット3204を経由することなく、ビデオデコーダ3206及びオーディオデコーダ3208に送信される。
【0329】
逆多重化処理によって、ビデオ要素のストリーム(ES)、オーディオES、及び随意的に字幕を生成する。上記で言及されている複数の実施形態において説明されているように、ビデオデコーダ30を含むビデオデコーダ3206は、上記で言及されている複数の実施形態に示されているように、復号化方法によってビデオESを復号化して、ビデオフレームを生成し、そして、同期ユニット3212にこのデータを供給する。オーディオデコーダ3208は、オーディオESを復号化して、オーディオフレームを生成し、そして、同期ユニット3212にこのデータを供給する。代替的に、同期ユニット3212にビデオフレームを供給する前に、(
図Yには示されていない)バッファの中にそのビデオフレームを格納してもよい。同様に、同期ユニット3212にオーディオフレームを供給する前に、(
図Yには示されていない)バッファの中にそのオーディオフレームを格納してもよい。
【0330】
同期ユニット3212は、ビデオフレーム及びオーディオフレームを同期させ、そして、ビデオ/オーディオディスプレイ3214にビデオ/オーディオを供給する。例えば、同期ユニット3212は、ビデオ情報及びオーディオ情報の提示を同期させる。情報は、コーディングされているオーディオデータ及び視覚的データの提示に関するタイムスタンプとデータストリームそれ自体の配信に関するタイムスタンプとを使用して、構文にしたがってコーディングされてもよい。
【0331】
字幕がストリームの中に含まれている場合に、字幕デコーダ3210は、その字幕を復号化し、ビデオフレーム及びオーディオフレームと、復号化した字幕を同期させ、そして、ビデオ/オーディオ/字幕ディスプレイ3216へとビデオ/オーディオ/字幕を供給する。
【0332】
本発明は、上記で言及されているシステムには限定されず、例えば、車両システム等の他のシステムに、上記で言及されている複数の実施形態における映像符号化デバイス又は映像復号化デバイスのうちのいずれかを組み込んでもよい。
【0333】
数学的演算子
【0334】
この出願において使用される数学的演算子は、Cプログラミング言語で使用される数学的演算子と同様である。一方で、整数除算演算及び算術シフト演算の結果は、より正確に定義され、指数化及び実数値の除算等の追加的演算が定義される。例えば、"最初の"は、0番目に相当し、"2番目の"は、1番目に相当するといったように、番号付け規則及び計数規則は、一般的に、0から開始する。
【0335】
算術演算子
【0336】
次の算術演算子は、以下のように定義される。
【数51】
【0337】
論理演算子
【0338】
次の論理演算子は、以下のように定義される。
【数52】
【0339】
関係演算子
【0340】
次の関係演算子は、以下のように定義される。
【数53】
関係演算子が、値"na"(該当なし)が割り当てられる構文要素又は変数に適用されるときに、値"na"は、その構文要素又は変数の個別の値として扱われる。値"na"は、他の値と等しくないとみなされる。
【0341】
ビット単位の演算子
【0342】
次のビット単位の演算子は、以下のように定義される。
【数54】
【0343】
代入演算子
【0344】
次の演算子は、以下のように定義される。
【数55】
【0345】
範囲表記
【0346】
次の表記は、値の範囲を指定するのに使用される。
【数56】
【0347】
数学的関数
【0348】
【0349】
本発明は、本明細書においてさまざまな実施形態と関連して説明されてきた。しかしながら、開示されている複数の実施形態への他の変形は、図面、開示、及び添付の請求の範囲を検討することにより、請求項に記載されている発明を実用化する際に当業者によって理解されそして達成されてもよい。それらの請求項において、"含む"の語は、他の要素又はステップを除外するものではなく、また、不定冠詞"a"又は"an"は、複数を除外するものではない。単一のプロセッサ又は他のユニットは、それらの請求項に記載されているいくつかの項目の機能を実現させることが可能である。複数の手段が複数の異なる従属請求項に記載されているという単なる事実は、通常は、利益をもたらすのにそれらの複数の手段の組み合わせを使用することが不可能であるということを示すものではない。コンピュータプログラムは、他のハードウェアと共に又は他のハードウェアの一部として供給される光記憶媒体又は固体媒体等の適切な媒体に格納され/分配されてもよく、また、インターネット又は他の有線の又は無線の通信システムを介してといったように他の形態で分配されてもよい。
【0350】
当業者は、さまざまな図面の(方法及び装置の)"ブロック"("ユニット")が、(必ずしもハードウェア又はソフトウェアにおける個々の"ユニット"ではなく)本発明の複数の実施形態の機能を表現し又は説明し、したがって、装置の実施形態のみならず方法の実施形態の機能又は特徴を同様に説明している(ユニット=ステップ)ということを理解するであろう。
【0351】
"ユニット"の語は、エンコーダ/デコーダの複数の実施形態の機能の説明の目的のために使用されるにすぎず、本開示を限定することを意図してはいない。
【0352】
この出願によって提供される複数の実施形態のうちのいくつかにおいては、他の方式によって、それらの開示されているシステム、装置、及び方法を実装してもよいということを理解すべきである。例えば、説明されている装置の実施形態は、例示的なものであるにすぎない。例えば、ユニットの分割は、論理的な機能の分割であるにすぎず、実際の実装においては他の分割であってもよい。例えば、複数のユニット又は構成要素を組み合わせ又は一体化して、他のシステムとしてもよく、或いは、いくつかの特徴を無視し又は実行しなくてもよい。加えて、いくつかのインターフェイスを使用することによって、それらの示され又は説明されている相互結合、直接結合、又は通信接続を実装してもよい。電子的な形態、機械的な形態、又は他の形態によって、複数の装置又は複数のユニットの間の間接的な結合又は通信接続を実装してもよい。
【0353】
複数の個別の部分として説明される複数のユニットは、物理的に分離していてもよく又は物理的に分離していなくてもよく、また、複数のユニットとして示される複数の部分は、複数の物理的なユニットとなっていてもよく又は複数の物理的なユニットとなっていなくてもよく、1つの場所に位置していてもよく、又は、複数のネットワークユニットに分散されていてもよい。実際の要件にしたがって、それらの複数のユニットのうちの一部又はすべてを選択して、それらの複数の実施形態の複数の技術的解決方法の目的を達成してもよい。
【0354】
加えて、本発明の複数の実施形態における複数の機能ユニットを一体化して、1つの処理ユニットとしてもよく、又は、それらの複数のユニットの各々は、物理的に単独で存在していてもよく、或いは、2つ又はそれ以上のユニットを一体化して、1つのユニットとしてもよい。
【0355】
本発明の複数の実施形態は、例えば、エンコーダ及び/又はデコーダ等の装置をさらに含んでもよく、その装置は、本明細書において説明されている方法及び/又はプロセスのうちのいずれかを実行するように構成される処理回路を含む。
【0356】
本発明の複数の実施形態は、主として、ビデオコーディングに基づいて説明されてきたが、コーディングシステム10、エンコーダ20、及びデコーダ30(及び、対応して、システム10)の実施形態、及び、本明細書において説明されている複数の他の実施形態は、また、静止映像処理又はコーディング、すなわち、ビデオコーディングにおけるようにいずれかの先行する又は連続する映像とは無関係の個々の映像の処理又はコーディングのために構成されてもよいということに留意すべきである。一般的に、映像処理コーディングが単一の映像17に限定される場合には、フレーム間予測ユニット244(エンコーダ)及び344(デコーダ)のみが利用可能ではない場合がある。ビデオエンコーダ20及びビデオデコーダ30の、例えば、残差算出204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分化262/362、フレーム内予測254/354、及び/又はループフィルタリング220、320、及びエントロピーコーディング270及びエントロピー復号化304等の(また、ツール又は技術と称される)他の機能のすべては、静止映像処理のために等しく使用されてもよい。
【0357】
ハードウェア、ソフトウェア、ファームウェア、又はそれらのいずれかの組み合わせによって、例えば、エンコーダ20及びデコーダ30の複数の実施形態、及び、例えば、エンコーダ20及びデコーダ30を参照して本明細書において説明されている複数の機能を実装してもよい。ソフトウェアによって実装される場合に、それらの複数の機能は、コンピュータ読み取り可能な媒体に格納されるか、1つ又は複数の命令又はコードとして通信媒体を介して送信され、そして、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な記憶媒体を含んでもよく、そのコンピュータ読み取り可能な記憶媒体は、データ記憶媒体等の有体の媒体に対応し、又は、コンピュータ読み取り可能な媒体は、通信媒体を含んでもよく、その通信媒体は、例えば、通信プロトコルにしたがって、一方の場所から他方の場所へのコンピュータプログラムの転送を容易にするいずれかの媒体を含む。このようにして、コンピュータ読み取り可能な媒体は、一般的に、(1) 非一時的である有体のコンピュータ読み取り可能な記憶媒体に対応していてもよく、又は、(2) 信号又は搬送波等の通信媒体に対応していてもよい。データ記憶媒体は、いずれかの利用可能な媒体であってもよく、そのいずれかの利用可能な媒体は、1つ又は複数のコンピュータ或いは1つ又は複数のプロセッサによってアクセスされてもよく、それらの1つ又は複数のコンピュータ或いは1つ又は複数のプロセッサは、本開示によって説明されている複数の技術の実装のための命令、コード及び/又はデータ構成を検索する。コンピュータプログラム製品は、コンピュータ読み取り可能媒体を含んでもよい。
【0358】
例として、限定するものではないが、そのようなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD-ROM、又は他の光ディスク記憶装置、磁気ディスク記憶装置、又は他の磁気記憶デバイス、フラッシュメモリ、或いは、命令又はデータ構造の形態で要求されるプログラムコードを格納するのに使用されてもよく、また、コンピュータによってアクセスされてもよい他のいずれかの媒体を含んでもよい。また、いずれの接続も、厳密にはコンピュータ読み取り可能な媒体と呼ばれる。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、ディジタル加入者線(DSL)、又は、赤外線、無線、及びマイクロ波等の無線技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから命令を送信する場合に、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波等の無線技術は、媒体の定義に含まれる。一方で、コンピュータ読み取り可能な記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、むしろ、非一時的な且つ有体的な記憶媒体に関しているということを理解するべきである。本明細書において使用されている磁気ディスク及びディスクは、コンパクトディスク(CD)、レーザディスク、光ディスク、ディジタル多用途ディスク(DVD)、フロッピーディスク及びブルーレイディスクを含み、ディスクは、通常、磁気的にデータを再生し、一方で、ディスクは、レーザによって光学的にデータを再生する。上記の組み合わせは、また、コンピュータ読み取り可能媒体の範囲の中に含まれるべきである。
【0359】
命令は、1つ又は複数のディジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他の同等の集積回路又は個別論理回路等の1つ又は複数のプロセッサによって実行されてもよい。したがって、本明細書において使用されている"プロセッサ"の語は、上記の構成のうちのいずれか又は本明細書において説明されている技術の実装に適するいずれかの他の構造を指してもよい。加えて、複数の態様のうちのいくつかにおいて、本明細書において説明されている機能は、符号化及び復号化のために構成される専用ハードウェア及び/又はソフトウェアモジュールの中で提供されてもよく、又は、組み合わされたコーデックの中に組み込まれてもよい。また、その技術は、1つ又は複数の回路又は論理素子によって完全に実装されてもよい。
【0360】
本開示の技術は、多種多様なデバイス又は装置によって実装されてもよく、それらのデバイス又は装置は、無線ハンドセット、集積回路(IC)、又は(例えば、チップセット等の)ICのセットを含む。本開示においては、さまざまな構成要素、モジュール、又はユニットを説明して、それらの開示されている技術を実行するように構成されるデバイスの機能的側面を強調しているが、実現の際には、必ずしも、複数の異なるハードウェアユニットを必要とはしない。むしろ、上記のように、さまざまなユニットは、コーデックハードウェアユニットの中で組み合わされてもよく、或いは、適切なソフトウェア及び/又はファームウェアと共に、上記で説明されている1つ又は複数のプロセッサを含む相互運用的なハードウェアユニットの集合体によって提供されてもよい。
【外国語明細書】