(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-21
(54)【発明の名称】ビデオコーディングにおけるアフィン動き補償のための双方向マッチングによる動き精緻化
(51)【国際特許分類】
H04N 19/577 20140101AFI20240614BHJP
【FI】
H04N19/577
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023577623
(86)(22)【出願日】2022-06-16
(85)【翻訳文提出日】2023-12-15
(86)【国際出願番号】 US2022033803
(87)【国際公開番号】W WO2022266328
(87)【国際公開日】2022-12-22
(32)【優先日】2021-06-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521248394
【氏名又は名称】ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド
【氏名又は名称原語表記】BEIJING DAJIA INTERNET INFORMATION TECHNOLOGY CO.,LTD.
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】チェン、ウェイ
(72)【発明者】
【氏名】シウ、シャオユ
(72)【発明者】
【氏名】クオ、チャーウェイ
(72)【発明者】
【氏名】チェン、イーウェン
(72)【発明者】
【氏名】ジュー、ホンジェン
(72)【発明者】
【氏名】イェン、ニン
(72)【発明者】
【氏名】ワン、シァンリン
(72)【発明者】
【氏名】ユー、ビン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA14
5C159MA19
5C159MA21
5C159MC11
5C159ME01
5C159NN02
5C159NN05
5C159NN16
5C159NN21
5C159PP04
5C159RC11
5C159UA02
5C159UA05
5C159UA22
(57)【要約】
開示の実施は、ビデオにおける動き精緻化のためのシステム及び方法を提供する。この方法は、ビデオからビデオフレームのビデオブロックに関する初期動きベクトルを決定することを含んでもよい。この方法は、ビデオ内の第1の参照フレームからの第1の参照ブロックと、ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することを含んでもよい。この方法は、精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することを含んでもよい。この方法は、ビデオブロックの精緻化された動きベクトルを用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化することを含んでもよい。サブブロックレベルで動きベクトルを精緻化することは、ビデオブロックのアフィン動きモデルを適用する。
【特許請求の範囲】
【請求項1】
1以上のプロセッサによって、ビデオからビデオフレームのビデオブロックの初期動きベクトルを決定することと、
前記1以上のプロセッサによって、前記ビデオ内の第1の参照フレームからの第1の参照ブロックと前記ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することと、
前記1以上のプロセッサによって、前記ビデオブロックの精緻化された動きベクトルが得られるまで、前記マッチング対象に基づいて、前記初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することと、
前記1以上のプロセッサによって、前記ビデオブロックの前記精緻化された動きベクトルを、サブブロックの動きベクトルの開始点として使用して、前記ビデオブロック内の各サブブロックの動きベクトルを精緻化することであって、サブブロックレベルで前記動きベクトルを精緻化することは、前記ビデオブロックのアフィン動きモデルを適用する、動きベクトルを精緻化することと、
を含む、ビデオにおける動き精緻化のためのビデオコーディング方法。
【請求項2】
前記マッチング対象を決定することは、
前記第1の参照ブロックのための第1の重み及び前記第2の参照ブロックのための第2の重みをそれぞれ決定することと、
前記第1の参照ブロックと前記第2の参照ブロックの加重組み合わせを、前記第1の重み及び前記第2の重みを使用して決定することと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の重み及び前記第2の重みが、重み付き双予測のためのエンコーダ側で導出された対応する重みと同一、又は前記第1の重み及び前記第2の重みが、所定の値を有する、請求項2に記載の方法。
【請求項4】
前記双方向マッチングベースの動き精緻化処理を実行することは、
中間動きベクトルを初期化すべく前記初期動きベクトルを使用することと、
マッチング対象に基づいて前記中間動きベクトルの動き精緻化を決定することと、
前記動き精緻化に基づき前記中間動きベクトルを更新することと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記双方向マッチングベースの動き精緻化処理を実行することは、
所定の反復停止条件が充足されているか否かを判定することと、
前記所定の反復停止条件が充足されたことに応答して、前記中間動きベクトルを前記精緻化された動きベクトルと決定することと、又は
前記所定の反復停止条件が充足されないことに応答して、前記所定の反復停止条件が充足されるまで、前記中間動きベクトルに対する前記動き精緻化を反復的に決定し、前記動き精緻化に基づいて前記中間動きベクトルを更新し続けることと、
をさらに含む、請求項4に記載の方法。
【請求項6】
前記動き精緻化は、計算ベースの導出、探索ベースの導出、又は前記計算ベースの導出と前記探索ベースの導出の組み合わせによって決定される、請求項5に記載の方法。
【請求項7】
前記動き精緻化は、前記計算ベースの導出によって決定され、前記中間動きベクトルの前記動き精緻化を決定することは、
前記中間動きベクトルに基づいて、前記ビデオブロックの現予測を決定することと、
前記現予測と前記マッチング対象との間の仮の動きモデルを決定することであって、前記仮の動きモデルは動き精緻化の計算に用いられることと、
前記仮の動きモデルに基づいて前記中間動きベクトルの動き精緻化を計算することと、
をさらに含む、請求項6に記載の方法。
【請求項8】
前記所定の反復停止条件は、前記中間動きベクトルが収束するか、又は反復の総回数が所定の閾値を充足する場合に充足される、請求項7に記載の方法。
【請求項9】
前記仮の動きモデルのパラメータの総数が、前記アフィン動きモデルのパラメータの総数に等しい、請求項7に記載の方法。
【請求項10】
前記仮の動きモデルのパラメータの総数が、前記アフィン動きモデルのパラメータの総数と異なっている、請求項7記載の方法。
【請求項11】
前記動き精緻化は、前記探索ベースの導出によって決定され、前記中間動きベクトルの前記動き精緻化を決定することは、
所定の探索範囲内の前記中間動きベクトルと第1の動きベクトルの変化とに基づいて第1の修正動きベクトルを生成することと、
前記中間動きベクトルに関連するマッチングコスト、及び前記第1の修正動きベクトルに関連する現マッチングコストに基づいて、前記第1の動きベクトルの変化を前記動き精緻化として割り当てるかどうかを決定することと、
をさらに含む、請求項6に記載の方法。
【請求項12】
前記第1の修正動きベクトルに関連する前記現マッチングコストは、
前記第1の修正動きベクトルに基づいて前記ビデオブロックの現予測を決定し、
前記マッチング対象、及び前記ビデオブロックの前記現予測に基づいて、前記第1の修正動きベクトルに関連する前記現マッチングコストを決定する
ことによって決定される、請求項11に記載の方法。
【請求項13】
前記第1の修正動きベクトルに関連する前記現マッチングコストが、前記中間動きベクトルに関連する前記マッチングコストよりも小さいことに応答して、前記中間動きベクトルが前記第1の修正動きベクトルに更新されるように、前記動き精緻化を前記第1の動きベクトルの変化として導出することをさらに含む、請求項11に記載の方法。
【請求項14】
前記第1の修正動きベクトルに関連する前記現マッチングコストが、前記中間動きベクトルに関連する前記マッチングコストと等しいか、又はそれより大きいことに応答して、
前記第1の修正動きベクトルの変化を前記動き精緻化として割り当てず、
前記所定の探索範囲内の前記中間動きベクトルと第2の動きベクトルの変化とに基づいて第2の修正動きベクトルを生成し、
前記中間動きベクトルに関連する前記マッチングコスト、及び前記第2の修正動きベクトルに関連する別の現マッチングコストに基づいて、前記第2の動きベクトルの変化を前記動き精緻化として割り当てるかどうかを決定する
ことをさらに含む、請求項11に記載の方法。
【請求項15】
前記所定の反復停止条件は、前記所定の探索範囲内で利用可能な動きベクトルの変化が検出され、処理されるか、又は反復の総回数が所定の閾値を充足する場合に充足される、請求項11に記載の方法。
【請求項16】
前記動き精緻化は、前記計算ベースの導出と前記探索ベースの導出との組み合わせによって決定され、前記双方向マッチングベースの動き精緻化処理を実行することは、
前記マッチング対象に基づく計算ベースの導出により前記中間動きベクトルの前記動き精緻化を決定し、
前記計算ベースの導出により決定された前記動き精緻化に基づき前記中間動きベクトルを更新し、
前記マッチング対象に基づく探索ベースの導出により再度前記中間動きベクトルの前記動き精緻化を決定し、
前記探索ベースの導出により決定された前記動き精緻化に基づき再度前記中間動きベクトルを更新する
ことを含む、請求項6に記載の方法。
【請求項17】
前記双方向マッチングベースの動き精緻化処理が、
前記第1の参照フレーム及び前記第2の参照フレームのうちの一方が前記ビデオフレームの前にあり、前記第1の参照フレーム及び前記第2の参照フレームのうちの他方がビデオフレームの後にあること、あるいは、
前記第1の参照フレーム及び前記第2の参照フレームの両方がビデオフレームの前又は後にあり、前記第1の参照フレーム及び前記第2の参照フレームの間の時間的距離が所定の閾値を満たすこと、
の1つの条件が満たされるときに、前記精緻化された動きベクトルを取得するために実行される、請求項1に記載の方法。
【請求項18】
ビデオの少なくとも1つのビデオフレームを格納するよう構成され、前記ビデオフレームが少なくとも1つのビデオブロックを含むメモリと、
1以上のプロセッサであって、
前記ビデオブロックの初期動きベクトルを決定し、
前記ビデオ内の第1の参照フレームからの第1の参照ブロックと前記ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定し、
前記ビデオブロックの精緻化された動きベクトルが得られるまで、前記マッチング対象に基づいて、前記初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行し、
前記ビデオブロックの前記精緻化された動きベクトルを、サブブロックの前記動きベクトルの開始点として使用して、前記ビデオブロック内の各サブブロックの動きベクトルを精緻化することであって、前記ビデオプロセッサは、前記ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化する、
ように構成されたプロセッサと
を含む、ビデオにおける動き精緻化のためのビデオコーディング装置。
【請求項19】
前記マッチング対象を決定するために、前記1以上のプロセッサは、
前記第1の参照ブロックのための第1の重み及び前記第2の参照ブロックのための第2の重みをそれぞれ決定し、
前記第1の参照ブロックと前記第2の参照ブロックの前記加重組み合わせを前記第1の重み及び前記第2の重みを用いて決定する
ようにさらに構成される、請求項18に記載のビデオコーディング装置。
【請求項20】
1以上のプロセッサによって実行されると、前記1以上のプロセッサに、ビデオ内の動き精緻化のためのビデオコーディング方法を実行させる命令を格納した非一時的なコンピュータ可読記憶媒体であって、前記方法は、
ビデオブロックのマージリストに基づいて、ビデオからビデオフレームの前記ビデオブロックの初期動きベクトルを決定することと、
前記ビデオ内の第1の参照フレームからの第1の参照ブロックと前記ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することと、
前記ビデオブロックの精緻化された動きベクトルが得られるまで、前記マッチング対象に基づいて、前記初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することと、
前記ビデオブロックの前記精緻化された動きベクトルを、サブブロックの動きベクトルの開始点として使用して、前記ビデオブロック内の各サブブロックの動きベクトルを精緻化することであって、サブブロックレベルで前記動きベクトルを精緻化することは、前記ビデオブロックのアフィン動きモデルを適用する、動きベクトルを精緻化することと、
マージリストから前記初期動きベクトルを識別するためのマージインデックスと、第1の参照フレームを識別するための第1の参照インデックスと、第2の参照フレームを識別するための第2の参照インデックスとを含むビットストリームを生成することであって、前記ビットストリームが前記非一時的なコンピュータ可読記憶媒体に格納されている、ビットストリームを生成することと、
を含む、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2021年6月17日に出願された米国仮特許出願第63/211,682号の優先権の利益を主張するものであり、参照することによって同特許出願の全体が本明細書に組み込まれる。
【0002】
本出願は、ビデオコーディング及び圧縮に関する。より詳しくは、本出願は、ビデオにおける動き精緻化のためのビデオ処理システム及び方法に関する。
【背景技術】
【0003】
デジタルビデオは、デジタルテレビ、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録装置、デジタルメディアプレーヤー、家庭用ゲーム機、スマートフォン、ビデオ遠隔会議装置、ビデオストリーミング装置など、各種電子デバイスによりサポートされている。電子デバイスは、通信ネットワークを通じてデジタルビデオデータを送受信し、又は他の方法で通信し、及び/又はデジタルビデオデータをストレージデバイスに格納する。通信ネットワークの帯域幅容量が制限され、またストレージデバイスのメモリ資源は限られていることから、ビデオデータが通信又は格納される前に、ビデオコーディングにより、1つ又は複数のビデオコーディング規格に従ってビデオデータを圧縮してもよい。ビデオコーディング規格としては、多用途ビデオコーディング(Versatile Video Coding:VVC)、共同研究テストモデル(Joint Exploration test Model:JEM)、高効率ビデオコーディング(High-Efficiency Video Coding:HEVC/H.265)、アドバンスド・ビデオコーディング(Advanced Video Coding:AVC/H.264)、ムービング・ピクチャ・エキスパーツ・グループ(Moving Picture Expert Group:MPEG)コーディングなどが挙げられる。ビデオコーディングは、一般に、ビデオデータに固有の冗長性を利用する予測方法(例えば、インター予測、イントラ予測など)を利用する。ビデオコーディングは、ビデオ品質の劣化を回避しもしくは最小限に抑えながら、より低いビットレートを使用する形式にビデオデータを圧縮することを目的とする。
【発明の概要】
【0004】
本開示の実施は、ビデオにおける動き精緻化のためのビデオコーディング方法を提供する。ビデオコーディング方法は、1以上のプロセッサによって、ビデオからビデオフレームのビデオブロックに関する初期動きベクトルを決定することを含んでもよい。ビデオコーディング方法は、1以上のプロセッサによって、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することをさらに含んでもよい。ビデオコーディング方法は、1以上のプロセッサによって、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することをさらに含んでもよい。ビデオコーディング方法は、1以上のプロセッサにより、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化することをさらに含んでもよい。サブブロックレベルで動きベクトルを精緻化することは、ビデオブロックのアフィン動きモデルを適用する。
【0005】
本開示の実施は、ビデオにおける動き精緻化のためのビデオコーディング装置も提供する。ビデオコーディング装置は、メモリと1以上のプロセッサとを含んでもよい。メモリは、ビデオの少なくとも1つのビデオフレームを格納するよう構成されてもよい。ビデオフレームは、少なくとも1つのビデオブロックを含む。1以上のプロセッサは、ビデオブロックの初期動きベクトルを決定するよう構成されてもよい。1以上のプロセッサは、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定するように構成されてもよい。1以上のプロセッサは、さらに、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行するよう構成されていてもよい。1以上のプロセッサは、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化するよう構成されていてもよい。1以上のプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化してもよい。
【0006】
また、本開示の実施は、1以上のプロセッサによって実行されると、1以上のプロセッサに、ビデオ内の動き精緻化のためのビデオコーディング方法を実行させる命令を格納した非一時的なコンピュータ可読記憶媒体を提供する。ビデオコーディング方法は、ビデオブロックのマージリストに基づいて、ビデオからビデオフレームのビデオブロックの初期動きベクトルを決定することを含んでもよい。ビデオコーディング方法は、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいて、マッチング対象を決定することをさらに含んでもよい。ビデオコーディング方法は、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することをさらに含んでもよい。ビデオコーディング方法は、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化することをさらに含んでもよい。サブブロックレベルで動きベクトルを精緻化することは、ビデオブロックのアフィン動きモデルを適用する。ビデオコーディング方法は、マージリストから初期動きベクトルを識別するためのマージインデックス、第1の参照フレームを識別するための第1の参照インデックス、及び第2の参照フレームを識別するための第2の参照インデックスを含むビットストリームを生成することをさらに含んでもよい。ビットストリームは、非一時的なコンピュータ可読記憶媒体に格納される。
【0007】
上記の概略的な説明及び以下の詳細な説明はいずれも例示のみを目的とし、本開示を制限するものではないことを理解されたい。
【0008】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本開示と一致する例を説明し、明細書とともに、本開示の原理を説明するのに役立つ。
【図面の簡単な説明】
【0009】
【
図1】本開示の一部の実施による、ビデオブロックを符号化及び復号するための例示的なシステムを示すブロック図である。
【
図2】本開示の一部の実施による、例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示の一部の実施による、例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4B】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4C】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4D】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4E】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図5A】本開示の一部の実施による、例示的な4パラメータアフィン動きモデルを示す。
【
図5B】本開示の一部の実施による、例示的な6パラメータアフィン動きモデルを示す。
【
図6】本開示の一部の実施による、例示的な双方向マッチングを示す図解である。
【
図7】本開示の一部の実施による、アフィン動き補償のための、双方向マッチングベースの動き精緻化のための例示的処理を示すブロック図である。
【
図8】本開示の一部の実施による、マッチング対象の例示的な計算を示す図解である。
【
図9】本開示の一部の実施による、ビデオにおける動き精緻化のための例示的な方法のフローチャートである。
【
図10】本開示の一部の実施による、ビデオにおける動き精緻化のための別の例示的な方法のフローチャートである。
【
図11】本開示の一部の実施による、ユーザインタフェースと結合された演算環境を示すブロック図である。
【発明を実施するための形態】
【0010】
ここで、特定の実装形態を詳細に参照する。それらの実施例は添付の図面に示されている。以下の詳細な説明では、ここに提示される主題を理解するのを助けるために、多くの非限定的な特定の詳細が記載される。しかし、当業者には、特許請求の範囲から逸脱することなく様々な代替案を使用することができ、主題はこうした特定の詳細なしに実施され得ることが明らかであろう。例えば、当業者には、ここで提示される主題が、デジタルビデオ機能を備えた多くのタイプの電子デバイス上で実施され得ることが明らかであろう。
【0011】
明細書、本開示の特許請求の範囲、及び添付の図面で使用される「第1」、「第2」などの用語は、対象を区別するために使用され、特定の順序又はシーケンスを記述するために使用されるものではないことが説明されるべきである。このように使用されるデータは、適切な条件の下で交換可能であり、よって、ここに記載された本開示の実施形態は、添付の図面に示されもしくは本開示に説明された以外の順序で実施され得ることを理解されたい。
【0012】
現在のVVC規格及び第3世代オーディオビデオコーディング規格(AVS3)において、ビデオデコーダにおける現コーディングブロックの動き情報は、マージモード候補インデックスの形式で空間的又は時間的に隣接するブロックから継承されるか、あるいはビデオエンコーダから送信される推定動き情報の明示的シグナリングに基づいて導出される。しかし、推定された動き情報の明示的シグナリングは、シグナリングオーバーヘッドを生ずる可能性がある。他方、マージモード動きベクトル(MV)を適用することでシグナリングオーバーヘッドを削減できるが、マージモードMVは隣接ブロックからのみコピーされるため、精度が低いことがある。
【0013】
本開示に合致する、ビデオ処理システム及び方法は、VVCとAVS3の両規格で使用されるアフィン動き予測モードのための動きベクトル推定の精度を向上させるために、ここに開示される。双方向マッチングは、余分なシグナリングを必要としない動き精緻化方法であることから、ここに開示されるシステム及び方法は、アフィンマージモードのための動き情報の精度を向上させ、より高いコーディング効率を達成するために、双方向マッチングを適用することができる。例えば、様々なビデオコーディング技術(マージモード、アフィンモード、双方向マッチングなどを含む)を組み合わせて、ここに開示されたシステム及び方法に適用し、ブロックレベルとサブブロックレベルの両方で動き情報を強化できる。
【0014】
本開示に合致する、ここに開示されるシステム及び方法は、ビデオブロックの動き情報を精緻化するために双方向マッチングを適用することによって、アフィンマージモードを改善できる。具体的には、ここに開示されるシステム及び方法は、マージモードを使用してビデオブロックの初期動きベクトルを導出し、ビデオブロックのマッチング対象を決定し、ビデオブロックの精緻化された動きベクトルが得られるまで、初期動きベクトルを反復的に更新するために、ビデオブロックレベルで、双方向マッチングベースの動き精緻化処理を実行してもよい。例えば、双方向マッチング適用された場合、初期動きベクトルはまず開始点(例えば、開始動きベクトル)としてビデオブロックに関して導出され、次いで、最小マッチングコストで精緻化された動きベクトルを得るため、開始動きベクトルの反復的更新が行われる。最小マッチングコストの精緻化された動きベクトルを、ビデオブロックレベルでのビデオブロックの動きベクトルとして選択できる。続いて、ビデオブロックレベルで精緻化された動きベクトルを、アフィンモードにおいてサブブロックレベルでサブブロックの動き情報をさらに精緻化するための新しい開始点として使用できる。
【0015】
本開示に合致する、ここに記載されるアフィンマージモードは、マージモードとアフィンモードの組み合わせと呼ぶこともある。マージモードは、ビデオ圧縮で使用されるインターコーディングモードとすることができる。マージモードでは、符号化又は復号されている現ビデオブロックに対し、隣接するビデオブロックの動きベクトルが継承される。例えば、マージモードは、現ビデオブロックに、所定のネイバーの動きベクトルを継承させる。別の実施例では、インデックス値を使用して、現ビデオブロックがその動きベクトルを継承する特定のネイバーを識別してもよい。ネイバーは、同じビデオフレームに空間的に隣接するビデオブロック(例えば、上、右上、左、又は左下のビデオブロック)、又は時間的に隣接するビデオフレームと同じ場所にあるビデオブロックとすることができる。本開示に合致する、マージモードは、現ビデオブロックの初期動きベクトルを(例えば、動き精緻化の開始点として)決定するために使用できる。アフィンモードに関しては、アフィン動きモデルをインター予測に適用できる。
図5Aから
図5Bを参照して、アフィンモードを以下により詳細に説明する。
【0016】
本開示に合致する、VVC規格におけるアフィンモード設計は、本開示の説明を容易にするために、アフィン動き予測モードの例示的な実施として使用できる。ここに開示されるシステム及び方法は、同じ又は類似の設計精神を有するアフィン動き予測モード又は他のコーディングツールの異なる設計を適用することもできると考えられる。
【0017】
図1は、本開示の一部の実施による、ビデオブロックを並列に符号化及び復号するための例示的なシステム10を示すブロック図である。
図1に示されるように、システム10はソースデバイス12を含み、ソースデバイス12は、宛先デバイス14によって後に復号されるビデオデータを生成し、符号化する。ソースデバイス12及び宛先デバイス14としては、デスクトップ又はラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、表示装置、デジタルメディアプレーヤー、家庭用ゲーム機、ビデオストリーミング装置などを含む各種電子デバイスのいずれかが含まれ得る。一部の実装形態では、ソースデバイス12及び宛先デバイス14は、無線通信機能を備える。
【0018】
一部の実装形態では、宛先デバイス14は、復号されるべき符号化されたビデオデータを、リンク16を介して受信することができる。リンク16としては、符号化されたビデオデータをソースデバイス12から宛先デバイス14に転送することができる任意のタイプの通信媒体又はデバイスが含まれ得る。一実施例では、リンク16としては、ソースデバイス12が符号化されたビデオデータを宛先デバイス14に直接リアルタイムで送信することを可能とする通信媒体が含まれ得る。符号化されたビデオデータは、無線通信プロトコルのような通信規格に従って変調され、宛先デバイス14に送信されることができる。通信媒体としては、無線周波数(Radio Frequency:RF)スペクトル又は1つ又は複数の物理的な伝送線のような、任意の無線又は有線通信媒体が含まれ得る。通信媒体は、ローカルエリアネットワークやワイドエリアネットワークのようなパケットベースのネットワーク、あるいはインターネットのようなグローバルネットワークの一部を形成し得る。通信媒体としては、ルータ、スイッチ、基地局、又はソースデバイス12から宛先デバイス14への通信の促進に有用な任意の他の装置が含まれ得る。
【0019】
他の実装形態では、符号化されたビデオデータは、出力インタフェース22からストレージデバイス32に送信されてもよい。次いで、ストレージデバイス32内の符号化されたビデオデータは、入力インタフェース28を介して宛先デバイス14によってアクセスされてもよい。ストレージデバイス32としては、ハードドライブ、Blu-ray Disc(登録商標)、デジタル多用途ディスク(Digital Versatile Disc:DVD)、コンパクト・ディスク・リード・オンリー・メモリ(Compact Disc Read-Only Memories:CD-ROM)、フラッシュメモリ、揮発性もしくは不揮発性メモリ、符号化されたビデオデータを格納するための任意の他の適切なデジタル記憶媒体など、各種分散型もしくはローカルアクセス・データ記憶媒体のいずれかが含まれ得る。さらに別の実施例では、ストレージデバイス32は、ソースデバイス12により生成された符号化されたビデオデータを格納できるファイルサーバ又は別の中間ストレージデバイスに対応してもよい。宛先デバイス14は、ストリーミング又はダウンロードにより、格納されたビデオデータにストレージデバイス32からアクセスできる。ファイルサーバは、符号化されたビデオデータを格納し、符号化されたビデオデータを宛先デバイス14に送信することができる任意のタイプのコンピュータとすることができる。例示的なファイルサーバとして、ウェブサーバ(例えば、ウェブサイト用)、ファイル転送プロトコル(File Transfer Protocol:FTP)サーバ、ネットワークアタッチストレージ(Network Attached Storage:NAS)装置、又はローカルディスクドライブが挙げられる。宛先デバイス14は、無線チャネル(例えば、Wireless Fidelity(Wi-Fi)接続)、有線接続(例えば、Digital Subscriber Line(DSL)、ケーブルモデムなど)、又はファイルサーバに格納された符号化されたビデオデータにアクセスするのに適したこれらの任意の組み合わせを含む、任意の標準的なデータ接続を介して符号化されたビデオデータにアクセスできる。ストレージデバイス32からの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、又は両方の組み合わせとすることができる。
【0020】
図1に示されるように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、及び出力インタフェース22を含む。ビデオソース18としては、例えばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツ・プロバイダからビデオデータを受信するビデオフィード・インタフェース、及び/又はソースビデオとしてコンピュータグラフィックスデータを生成するコンピュータグラフィックスシステム、又はこれらのソースの組み合わせが含まれ得る。一実施例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソースデバイス12及び宛先デバイス14としては、カメラ電話又はテレビ電話が含まれ得る。しかしながら、本開示に記載される実施は、一般にビデオコーディングに適用可能であり、無線及び/又は有線の用途に適用可能である。
【0021】
キャプチャされた、プリキャプチャされた、又はコンピュータにより生成されたビデオは、ビデオエンコーダ20により符号化されることができる。符号化されたビデオデータは、ソースデバイス12の出力インタフェース22を介して宛先デバイス14に直接送信されてもよい。符号化されたビデオデータは、復号及び/又は再生のために、宛先デバイス14又は他の装置によって後にアクセスされるために、ストレージデバイス32に格納されてもよい。出力インタフェース22は、モデム及び/又は送信器をさらに含んでもよい。
【0022】
宛先デバイス14は、入力インタフェース28、ビデオデコーダ30、及び表示装置34を含む。入力インタフェース28は、受信器及び/又はモデムを含み、リンク16を介して符号化されたビデオデータを受信できる。リンク16を介して通信されるか、ストレージデバイス32上に提供される符号化されたビデオデータは、ビデオデコーダ30がビデオデータを復号する際に使用するためにビデオエンコーダ20によって生成される、各種シンタックス要素を含むことができる。こうしたシンタックス要素は符号化されたビデオデータ内に含まれて、通信媒体上で送信され、記憶媒体に格納され、又はファイルサーバ上に格納されることができる。
【0023】
一部の実装形態では、宛先デバイス14は表示装置34を含んでもよく、該表示装置34は、宛先デバイス14と一体形成された表示装置と、宛先デバイス14と通信するよう構成された外部表示装置であってもよい。表示装置34はユーザ向けに復号されたビデオデータを表示するもので、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は他のタイプの表示装置など各種表示装置のいずれかとすることができる。
【0024】
ビデオエンコーダ20及びビデオデコーダ30は、VVC、HEVC、MPEG-4、Part 10、AVC、又はこれらの規格の拡張などの独自規格又は業界規格に従って動作可能である。本開示は、特定のビデオ符号化/復号規格に限定されず、他のビデオ符号化/復号規格にも適用可能であることを理解されたい。ソースデバイス12のビデオエンコーダ20は、これらの現在又は将来の規格のいずれかに従ってビデオデータを符号化するよう構成可能であると一般に考えられる。同様に、宛先デバイス14のビデオデコーダ30は、これらの現在又は将来の規格のいずれかに従ってビデオデータを復号するよう構成可能であると一般に考えられる。
【0025】
ビデオエンコーダ20及びビデオデコーダ30は、それぞれ、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はこれらの任意の組み合わせなど、各種適切なエンコーダ及び/又はデコーダ回路のいずれかとして実装され得る。部分的にソフトウェアで実装される場合、電子デバイスはソフトウェア向けの命令を適切な非一時的なコンピュータ可読媒体に格納し、本開示で開示されるビデオ符号化/復号動作を実行するための1つ又は複数のプロセッサを使用して、該命令をハードウェアで実行してもよい。ビデオエンコーダ20及びビデオデコーダ30の各々は、1つ又は複数のエンコーダ又はデコーダに含まれてもよく、これらのエンコーダ又はデコーダのいずれかは、それぞれのデバイス内のコーデック(CODEC)の一部として統合されてもよい。
【0026】
図2は、本出願に記載された一部の実施による、例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ及びインター予測コーディングを実行することができる。イントラ予測コーディングは、空間予測に依存して、所与のビデオフレーム又はピクチャ内のビデオデータにおける空間冗長性を削減又は除去する。インター予測コーディングは、時間予測に依存して、ビデオシーケンスの隣接するビデオフレーム又はピクチャ内のビデオデータの時間冗長性を削減又は除去する。「フレーム」という用語は、ビデオコーディングの分野では「画像(image)」又は「ピクチャ」という用語の同義語として使用され得ることに留意されたい。
【0027】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号されたピクチャバッファ(Decoded Picture Buffer:DPB)64、サマー(summer)50、変換処理ユニット52、量子化ユニット54、及びエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、分割ユニット45、イントラ予測処理ユニット46、イントラブロックコピー(intra Block Copy(BC))ユニット48をさらに含む。一部の実装形態では、ビデオエンコーダ20は、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構築ためのサマー62をさらに含む。再構築されたビデオデータからブロックアーチファクトを除去するためにブロック境界をフィルタリングする、デブロッキングフィルタなどのインループフィルタ63をサマー62とDPB64との間に配置してもよい。SAOフィルタ及び/又は適応インループフィルタ(Adaptive in-Loop Filter:ALF)などの別のインループフィルタを、デブロッキングフィルタに加えて使用して、サマー62の出力をフィルタリングすることもできる。実施例によっては、インループフィルタを省略してもよく、復号されたビデオブロックは、サマー62によってDPB64に直接供給されてもよい。ビデオエンコーダ20は、固定又はプログラマブルハードウェアユニットの形態をとってもよく、あるいは図示された固定又はプログラマブルハードウェアユニットの1つ又は複数に分割されてもよい。
【0028】
ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを格納できる。ビデオデータメモリ40内のビデオデータは、例えば、
図1に示すように、ビデオソース18から取得されてもよい。DPB64は、ビデオエンコーダ20によって(例えばイントラ又はインター予測コーディングモードで)ビデオデータを符号化する際に使用される参照ビデオデータ(例えば、参照フレーム又はピクチャ)を格納するバッファである。ビデオデータメモリ40及びDPB64は、任意の各種メモリデバイスによって形成されてもよい。各種実施例において、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とオンチップであり、又はそれらの構成要素に対してオフチップであってもよい。
【0029】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。上記分割することは、ビデオデータに関連付けられたクワッドツリー(QT)構造などの予め定義された分割構造に従って、ビデオフレームをスライス、タイル(例えば、ビデオブロックのセット)、又は他のより大きなコーディングユニット(CU)に分割することをさらに含んでもよい。ビデオフレームは、サンプル値を有するサンプルの2次元アレイ又はマトリクスとみなされるか、又はみなされてもよい。アレイ中のサンプルは、画素又はペルとも呼ばれる。アレイ又はピクチャの水平方向及び垂直方向(又は軸)のサンプル数が、ビデオフレームのサイズ及び/又は解像度を定義する。ビデオフレームは、例えば、QT分割を用いて、複数のビデオブロックに分割され得る。ビデオブロックは、ビデオフレームよりも小さいサイズではあるが、サンプル値を有するサンプルの2次元アレイ又はマトリクスとみなされるか、又はみなされてもよい。ビデオブロックの水平方向及び垂直方向(又は軸)のサンプル数がビデオブロックのサイズを定義する。ビデオブロックは、例えば、QT分割、バイナリツリー(BT)分割、トリプルツリー(TT)分割、又はこれらの任意の組み合わせを反復的に使用して、1つ又は複数のブロック分割又はサブブロック(ブロックを再形成することができる)にさらに分割されてもよい。ここで使用される「ブロック」又は「ビデオブロック」という用語は、フレーム又はピクチャの一部、特に矩形(正方形又は非正方形)の部分であってもよいことに留意されたい。例えばHEVC及びVVCに関して、ブロック又はビデオブロックは、コーディングツリーユニット(Coding Tree Unit:CTU)、CU、予測ユニット(Prediction Unit:PU)、又は変換ユニット(Transform Unit:TU)であってもよく、及び/又は対応するブロック、例えばコーディングツリーブロック(Coding Tree Block:CTB)、コーディングブロック(Coding Block:CB)、予測ブロック(Prediction Block:PB)、又は変換ブロック(Transform Block:TB)であってもよく、又はこれらに対応していてもよい。代替として又は追加として、ブロック又はビデオブロックは、CTB、CB、PB、TBなどのサブブロックであってもよく、又はこれらに対応していてもよい。
【0030】
予測処理ユニット41は、誤差結果(例えば、コーディングレート及び歪みレベル)に基づいて、現ビデオブロックに関して、複数のイントラ予測コーディングモードのうちの1つ又は複数のインター予測コーディングモードのうちの1つなど、複数の予測コーディングモードのうちの1つを選択してもよい。予測処理ユニット41は、結果として得られるイントラ又はインター予測コード化ブロック(例えば、予測ブロック)を、サマー50に提供して残差ブロックを生成してもよく、またサマー62に提供して、その後参照フレームの一部として使用するためにコーディングブロックを再構築してもよい。予測処理ユニット41はまた、動きベクトル、イントラモードインジケータ、分割情報、及び他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に提供する。
【0031】
現ビデオブロックに対して適切なイントラ予測コーディングモードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、コード化される現ブロックと同じフレーム内の1つ又は複数の隣接ブロックに対して、現ビデオブロックのイントラ予測コーディングを実行し、空間予測を提供してもよい。予測処理ユニット41内の動き推定ユニット42及び動き補償ユニット44は、1つ又は複数の参照フレーム内の1つ又は複数の予測ブロックに対して、現ビデオブロックのインター予測コーディングを実行し、時間予測を提供する。ビデオエンコーダ20は、例えばビデオデータの各ブロックに対して適切なコーディングモードを選択するために、複数のコーディングパスを実行してもよい。
【0032】
一部の実装形態では、動き推定ユニット42は、一連のビデオフレーム内の所定のパターンに従って、参照フレーム内の予測ブロックに対する現ビデオフレーム内のビデオブロックの変位を示す動きベクトルを生成することによって、現ビデオフレームに関してのインター予測モードを決定する。動き推定ユニット42によって行われる動き推定は、動きベクトルを生成する処理であってもよく、これはビデオブロックの動きを推定するものであってもよい。例えば、動きベクトルは、参照フレーム内の予測ブロックに対する現ビデオフレーム又はピクチャ内のビデオブロックの変位を示すことができる。所定のパターンは、シーケンス内のビデオフレームをPフレーム又はBフレームとして指定できる。イントラBCユニット48は、動き推定ユニット42によるインター予測のための動きベクトルの決定と同様の方法で、イントラBCコーディングのためのベクトル、例えばブロックベクトルを決定することができ、また、ブロックベクトルを決定するために動き推定ユニット42を利用することもできる。
【0033】
ビデオブロックの予測ブロックは、画素差の点でコード化されるビデオブロックと高度にマッチングすると見なされる参照フレームのブロック又は参照ブロックであってもよく、又はそれに対応していてもよく、このことは絶対差の合計(Sum of Absolute Difference:SAD)、平方差の合計(Sum of Square Difference:SSD)、又は他の差分メトリックによって決定されてもよい。一部の実装形態では、ビデオエンコーダ20は、DPB64に格納された参照フレームのサブ整数の画素位置の値を計算できる。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間してもよい。したがって、動き推定ユニット42は、フルペル位置及び分数画素位置に対して動き探索を実行し、分数画素精度を有する動きベクトルを出力してもよい。
【0034】
動き推定ユニット42は、ビデオブロックの位置を、それぞれがDPB64に格納された1つ又は複数の参照フレームを識別する第1の参照フレームリスト(List0)又は第2の参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することによって、インター予測コード化フレーム内のビデオブロックの動きベクトルを計算する。動き推定ユニット42は、算出された動きベクトルを動き補償ユニット44に送信し、次いでエントロピー符号化ユニット56に送信する。
【0035】
動き補償ユニット44によって行われる動き補償は、動き推定ユニット42によって決定される動きベクトルに基づいて、予測ブロックをフェッチし又は生成することを含んでもよい。現ビデオブロックの動きベクトルを受信すると、動き補償ユニット44は、参照フレームリストの1つに動きベクトルが向けられるべき予測ブロックを見出し、予測ブロックをDPB64から検索し、予測ブロックをサマー50に前進させてもよい。次いで、サマー50は、コード化されている現ビデオブロックの画素値から、動き補償ユニット44によって提供される予測ブロックの画素値を差し引くことによって、画素差分値の残差ブロックを生成する。残差ブロックを生成する画素差分値は、輝度又は彩度差成分、又はその両方を含んでもよい。また、動き補償ユニット44は、ビデオデコーダ30がビデオフレームのビデオブロックを復号する際に使用するために、ビデオフレームのビデオブロックに関連付けられたシンタックス要素を生成してもよい。シンタックス要素は、例えば、予測ブロックを識別するために使用される動きベクトルを定義するシンタックス要素、予測モードを示す任意のフラグ、又はここに記載される任意の他のシンタックス情報を含むことができる。
図2では概念的な目的のために別々に図示されている動き推定ユニット42及び動き補償ユニット44は、一体形成されていてもよいことに留意されたい。
【0036】
一部の実装形態では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44に関連して上述した方法と同様の方法でベクトルを生成し、予測ブロックをフェッチすることができるが、ここでは予測ブロックはコード化されている現ブロックと同じフレーム内にあり、ベクトルは動きベクトルとは対照的にブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現ブロックを符号化するために使用するイントラ予測モードを決定してもよい。いくつかの実施例では、イントラBCユニット48は、例えば別々の符号化パスの間に、様々なイントラ予測モードを使用して現ブロックを符号化し、レート歪み分析を通してそれらの性能をテストしてもよい。次いで、イントラBCユニット48は、各種テストされたイントラ予測モードの中から使用する適切なイントラ予測モードを選択し、それに従ってイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、各種テストされたイントラ予測モードに関するレート歪み分析を用いてレート歪み値を計算し、テストされたモードの中から、使用する適切なイントラ予測モードとして最適レート歪み特性を有するイントラ予測モードを選択することができる。レート歪み分析は、一般に、符号化されたブロックと、その符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、並びに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラBCユニット48は、種々の符号化されたブロックの歪みとレートから比率を計算し、どのイントラ予測モードがブロックに対して最適レート歪み値を示すかを決定してもよい。
【0037】
他の実施例では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44を全体的又は部分的に使用して、ここに記載された実施に従って、イントラBC予測のためのこうした機能を実行してもよい。いずれの場合にも、イントラブロックコピーについては、予測ブロックは、SAD、SSD、又は他の差分メトリックによって決定され得る画素差分に関して、コード化されるブロックと高度にマッチングするとみなされるブロックであってもよく、予測ブロックの識別は、サブ整数の画素位置の値の計算を含んでもよい。
【0038】
予測ブロックが、イントラ予測による同じフレームからであるか、又はインター予測による異なるフレームからであるかにかかわらず、ビデオエンコーダ20は、コード化されている現ビデオブロックの画素値から予測ブロックの画素値を差し引くことにより、残差ブロックを生成し、画素差分値を形成できる。残差ブロックを生成する画素差分値は、輝度成分と彩度成分の差分の両方を含んでもよい。
【0039】
イントラ予測処理ユニット46は、上述したように、動き推定ユニット42及び動き補償ユニット44により行われるインター予測、又はイントラBCユニット48により行われるイントラブロックコピー予測に代わるものとして、現ビデオブロックをイントラ予測してもよい。特に、イントラ予測処理ユニット46は、現ブロックを符号化するために使用するイントラ予測モードを決定してもよい。例えば、イントラ予測処理ユニット46は、各種イントラ予測モードを使用して、例えば、別々の符号化パスの間に、現ブロックを符号化してもよく、イントラ予測処理ユニット46(又はいくつかの実施例では、モード選択ユニット)は、テストされたイントラ予測モードから使用する適切なイントラ予測モードを選択してもよい。イントラ予測処理ユニット46は、該ブロックに関する選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してもよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームで符号化してもよい。
【0040】
予測処理ユニット41がインター予測又はイントラ予測のいずれかによって現ビデオブロックの予測ブロックを決定した後、現ビデオブロックから予測ブロックを差し引くことによって、サマー50が残差ブロックを生成する。残差ブロック内の残差ビデオデータは、1つ又は複数のTUに含まれてもよく、変換処理ユニット52に提供される。変換処理ユニット52は、離散コサイン変換(Discrete Cosine Transform:DCT)や概念的に類似する変換などの変換を用いて、残差ビデオデータを変換係数に変換する。
【0041】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送信してもよい。量子化ユニット54は、ビットレートをさらに低下させるために変換係数を量子化する。量子化処理は、係数の一部又はすべてに関連するビット深度を低下させてもよい。量子化の程度は、量子化パラメータを調整することによって修正できる。いくつかの実施例では、量子化ユニット54は、次いで、量子化変換係数を含むマトリクスのスキャンを実行してもよい。あるいは、エントロピー符号化ユニット56がスキャンを実行してもよい。
【0042】
量子化に続いて、エントロピー符号化ユニット56は、例えば、コンテキスト適応型可変長符号化(Context Adaptive Variable Length Coding:CAVLC)、コンテキスト適応型バイナリ算術コーディング(Context Adaptive Binary Arithmetic Coding:CABAC)、構文ベースのコンテキスト適応型バイナリ算術コーディング(Syntax-based context-adaptive Binary Arithmetic Coding:SBAC)、確率区間分割エントロピー(Probability Interval Partitioning Entropy:PIPE)コーディング、又は別のエントロピー符号化技法もしくは技術を使用して、量子化変換係数をビデオビットストリームに符号化するためにエントロピー符号化技法を使用できる。符号化されたビットストリームは、次いで、
図1に示されるようにビデオデコーダ30に送信されてもよく、あるいは、後にビデオデコーダ30への送信又はビデオデコーダ30による検索のために、
図1に示されるようにストレージデバイス32にアーカイブされてもよい。エントロピー符号化ユニット56はまた、エントロピー符号化技法を使用して、コード化されている現ビデオフレームの動きベクトルと他のシンタックス要素を符号化してもよい。
【0043】
逆量子化ユニット58及び逆変換処理ユニット60は、それぞれ逆量子化及び逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するために、画素領域内の残差ブロックを再構築する。再構築された残差ブロックは生成されてもよい。上述したように、動き補償ユニット44は、DPB64に格納されたフレームの1つ又は複数の参照ブロックから動き補償予測ブロックを生成できる。動き補償ユニット44はまた、1つ又は複数の補間フィルタを予測ブロックに適用して、動き推定に使用するサブ整数の画素値を計算できる。
【0044】
サマー62は、再構築された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに追加し、DPB64に格納するための参照ブロックを生成する。次いで、参照ブロックは、イントラBCユニット48、動き推定ユニット42、及び動き補償ユニット44によって、予測ブロックとして使用され、後続ビデオフレーム内の別のビデオブロックをインター予測してもよい。
【0045】
図3は、本出願の一部の実施による、例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、サマー90、及びDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84、イントラBCユニット85をさらに含む。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20について上述した符号化処理に概ね逆行する復号処理を実行できる。例えば、動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトルに基づいて予測データを生成でき、一方、イントラ予測ユニット84は、エントロピー復号ユニット80から受信したイントラ予測モードインジケータに基づいて予測データを生成できる。
【0046】
いくつかの実施例では、ビデオデコーダ30のユニットは、本出願の実施を実行するためにタスクを課されてもよい。また、いくつかの実施例では、本開示の実施は、ビデオデコーダ30の1つ又は複数のユニットに分割されてもよい。例えば、イントラBCユニット85は、本出願の実施を、単独で、又は動き補償ユニット82、イントラ予測ユニット84、及びエントロピー復号ユニット80などのビデオデコーダ30の他のユニットとの組み合わせで、実行できる。いくつかの実施例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他の構成要素によって実行されてもよい。
【0047】
ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素によって復号される、符号化されたビデオビットストリームなどのビデオデータを格納できる。ビデオデータメモリ79に格納されるビデオデータは、例えば、ストレージデバイス32から取得されてもよく、ビデオデータの有線又は無線ネットワーク通信を通じてカメラなどのローカルビデオソースから取得されてもよく、又は物理データ記憶媒体(例えばフラッシュドライブやハードディスク)にアクセスすることによって取得されてもよい。ビデオデータメモリ79は、符号化されたビデオビットストリームから、符号化されたビデオデータを格納する符号化ピクチャバッファ(Coded Picture Buffer:CPB)を含んでもよい。ビデオデコーダ30のDPB92は、ビデオデコーダ30によるビデオデータへの復号(例えば、イントラ又はインター予測コーディングモードで)において使用するための参照ビデオデータを格納する。ビデオデータメモリ79及びDPB92は、ダイナミックランダムアクセスメモリ(DRAM)(シンクロナスDRAM(SDRAM)を含む)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM)、又は他のタイプのメモリデバイスなどの任意の各種メモリデバイスによって形成されてもよい。説明のために、ビデオデータメモリ79及びDPB92は、
図3において、ビデオデコーダ30の2つの別個の構成要素として示される。しかし、当業者にとって、ビデオデータメモリ79とDPB92とが同一メモリデバイス又は別個のメモリデバイスによって提供され得ることは明らかである。いくつかの実施例では、ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素とオンチップであり、又はそれらの構成要素に対してオフチップであってもよい。
【0048】
復号処理中に、ビデオデコーダ30は、符号化されたビデオフレームのビデオブロック及び関連付けられたシンタックス要素を表現する符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベル及び/又はビデオブロックレベルでシンタックス要素を受信できる。ビデオデコーダ30のエントロピー復号ユニット80は、エントロピー復号技術を使用してビットストリームを復号し、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を取得できる。エントロピー復号ユニット80は、次いで、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を予測処理ユニット81に転送する。
【0049】
ビデオフレームがイントラ予測コード化(例えばI)フレームとしてコード化され、又は他のタイプのフレーム内のイントラコーディング予測ブロックについてコーディングされる場合、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モード及び現フレームの前に復号されたブロックからの参照データに基づき、現ビデオフレームのビデオブロックの予測データを生成できる。
【0050】
ビデオフレームがインター予測コード化(すなわち、B又はP)フレームとしてコード化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトル及び他のシンタックス要素に基づいて、現ビデオフレームのビデオブロックのための1つ又は複数の予測ブロックを生成する。予測ブロックの各々は、参照フレームリストの1つ内の参照フレームから生成されてもよい。ビデオデコーダ30は、DPB92に格納された参照フレームに基づきデフォルトの構築技術を使用して、List0及びList1などの参照フレームリストを構築できる。
【0051】
いくつかの実施例では、ビデオブロックがここに記載されたイントラBCモードに従ってコード化される場合、予測処理ユニット81のイントラBCユニット85は、ブロックベクトル、及びエントロピー復号ユニット80から受信した他のシンタックス要素に基づいて現ビデオブロックの予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって処理された現ビデオブロックと同じピクチャの再構築された領域内にあってもよい。
【0052】
動き補償ユニット82及び/又はイントラBCユニット85は、動きベクトル及び他のシンタックス要素を解析することによって現ビデオフレームのビデオブロックの予測情報を決定し、次いで予測情報を使用して、復号されている現ビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、受信したシンタックス要素のいくつかを使用して、ビデオフレームのビデオブロックをコーディングするために使用される予測モード(例えば、イントラ又はインター予測)、インター予測フレームタイプ(例えば、B又はP)、フレームの1つ又は複数の参照フレームリストの構築情報、フレームの各インター予測符号化されたビデオブロックの動きベクトル、フレームの各インター予測コード化ビデオブロックのインター予測ステータス、及び他の情報を決定して、現ビデオフレームにおけるビデオブロックを復号する。
【0053】
同様に、イントラBCユニット85は、受信したシンタックス要素のいくつか、例えばフラグを使用して、現ビデオブロックがイントラBCモード、フレームのビデオブロックが再構築領域内にあり、DPB92に格納されるべき構築情報、フレームの各イントラBC予測ビデオブロックのブロックベクトル、フレームの各イントラBC予測ビデオブロックのイントラBC予測ステータス、及び他の情報を使用して予測されたことを決定し、現ビデオフレームにおけるビデオブロックを復号してもよい。
【0054】
動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して補間を実行し、参照ブロックのサブ整数画素のための補間値を計算してもよい。この場合、動き補償ユニット82は、受信したシンタックス要素からビデオエンコーダ20によって使用される補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成できる。
【0055】
逆量子化ユニット86は、量子化の程度を決定するためにビデオフレーム内の各ビデオブロックに対してビデオエンコーダ20によって計算されたものと同じ量子化パラメータを使用して、ビットストリームで提供されかつエントロピー復号ユニット80によってエントロピー復号される量子化変換係数を逆量子化する。逆変換処理ユニット88は、画素ドメインにおいて残差ブロックを再構築するために、逆変換、例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換処理を変換係数に適用する。
【0056】
動き補償ユニット82又はイントラBCユニット85がベクトル及び他のシンタックス要素に基づいて現ビデオブロックの予測ブロックを生成した後、サマー90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82とイントラBCユニット85によって生成された対応する予測ブロックとを合計することによって、現ビデオブロックの復号されたビデオブロックを再構築する。復号されたビデオブロックは、現ビデオブロックの再構築ブロックとも呼ばれる。デブロッキングフィルタ、SAOフィルタ、及び/又はALFなどのインループフィルタ91は、サマー90とDPB92との間に位置して、復号されたビデオブロックをさらに処理してもよい。実施例によっては、インループフィルタ91を省略してもよく、復号されたビデオブロックは、サマー90によってDPB92に直接供給されてもよい。所与のフレーム内の復号されたビデオブロックが次いでDPB92に格納され、DPB92は、次のビデオブロックの後続の動き補償に使用される参照フレームを格納する。DPB92、又はDPB92とは別のメモリデバイスは、後で
図1の表示装置34などの表示装置上で提示するために、復号されたビデオを格納してもよい。
【0057】
典型的なビデオコーディング処理(例えば、ビデオ符号化処理及びビデオ復号処理を含む)では、ビデオシーケンスは、典型的には、順序付けられたフレーム又はピクチャのセットを含む。各フレームは、SL、SCb、及びSCrで表示される3つのサンプルアレイを含むことができる。SLは輝度サンプルの2次元アレイである。SCbはCb彩度サンプルの2次元アレイである。SCrはCr彩度サンプルの2次元アレイである。他の例では、フレームは単彩度であってもよく、したがって輝度サンプルの1つの2次元アレイのみを含む。
【0058】
図4Aに示されるように、ビデオエンコーダ20(又はより具体的には、分割ユニット45)は、最初にフレームを一組のCTUに分割することによって、フレームの符号化された表現を生成する。ビデオフレームは、左から右、上から下にラスタスキャン順に連続して配列された整数個のCTUを含むことができる。各CTUは最大のロジカルコーディングユニットであり、CTUの幅さ及び高さは、ビデオシーケンス内のすべてのCTUが128×128、64×64、32×32、16×16の1つとなる同一サイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかしながら、本開示におけるCTUは必ずしも特定のサイズに限定されないことに留意されたい。
図4Bに示されるように、各CTUは、1つの輝度サンプルのCTB、2つの彩度サンプルの対応するコーディングツリーブロック、及び該コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス要素を含んでもよい。シンタックス要素は、コード化された画素ブロックの異なるタイプのユニットのプロパティ、及びどのようにビデオデコーダ30でビデオシーケンスを再構築できるかを記述するもので、インター又はイントラ予測、イントラ予測モード、動きベクトル、及び他のパラメータを含む。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス要素とを含んでもよい。コーディングツリーブロックは、N×Nブロックのサンプルであってもよい。
【0059】
より良い性能を実現するため、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対してバイナリツリー分割、ターナリツリー分割、クワッドツリー分割、又はこれらの組み合わせなどのツリー分割を再帰的に実行し、CTUをより小さいCUに分割してもよい。
図4Cに示されるように、64×64のCTU400は最初に4つのより小さいCUに分割され、各々のより小さいCUは32×32のブロックサイズを有する。4つのより小さいCUの中で、CU410とCU420は、それぞれ4つの16×16ブロックサイズのCUに分割される。2つの16×16のCU430と440は、それぞれ4つの8×8ブロックサイズのCUにさらに分割される。
図4Dは、
図4Cに示されるようなCTU400の分割処理の最終結果を示すクワッドツリーデータ構造を示し、クワッドツリーの各リーフノードは、32×32から8×8までのそれぞれのサイズの1つのCUに対応する。
図4Bに示されるCTUと同様に、各CUは、輝度サンプルのCBと、2つの同じサイズのフレームの彩度サンプルの対応するコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス要素とを含んでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを含んでもよい。
図4C及び4Dに示されるクワッドツリー分割は説明のみを目的としており、1つのCTUを複数のCUに分割して、クワッド/ターナリ/バイナリツリー分割に基づいてさまざまな局所特性に適応させることができることに留意されたい。マルチタイプツリー構造では、1つのCTUがクワッドツリー構造によって分割され、各クワッドツリーのリーフCUは、バイナリ及びターナリツリー構造によってさらに分割されてもよい。
図4Eに示されるように、幅W及び高さHを有するコーディングブロックの複数の可能な分割タイプ、すなわち、四分割、垂直二分割、水平二分割、垂直三分割、垂直拡張三分割、水平三分割、水平拡張三分割がある。
【0060】
一部の実装形態では、ビデオエンコーダ20は、CUのコーディングブロックを1つ又は複数のM×NのPBにさらに分割できる。PBは、同じインター又はイントラ予測が適用される長方形(正方形又は非正方形)のサンプルのブロックである。CUのPUは、輝度サンプルのPB、2つの彩度サンプルの対応するPB、及びPBを予測するために使用されるシンタックス要素を含んでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、PUは、単一のPBと、PBを予測するために使用されるシンタックス構造とを含んでもよい。ビデオエンコーダ20は、CUの各PUの輝度、Cb及びCrのPBについて予測の輝度、Cb、及びCrブロックを生成できる。
【0061】
ビデオエンコーダ20は、イントラ予測又はインター予測を使用して、PUの予測ブロックを生成できる。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成できる。ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレーム以外の1つ又は複数のフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成できる。
【0062】
ビデオエンコーダ20が、CUの1つ又は複数のPUのための予測の輝度、Cb、及びCrブロックを生成した後、ビデオエンコーダ20は、CUの元の輝度コーディングブロックからその予測輝度ブロックを差し引くことによって、CUの輝度残差ブロックを生成することができ、これによってCUの輝度残差ブロックの各サンプルは、CUの予測輝度ブロックの1つにおける輝度サンプルと、CUの元の輝度コーディングブロックにおける対応のサンプルとの間の差を示す。同様に、ビデオエンコーダ20は、CUのCb残差ブロック及びCr残差ブロックをそれぞれ生成することができ、これによってCUのCb残差ブロックの各サンプルは、CUの予測Cbブロックの1つにおけるCbサンプルとCUの元のCbコーディングブロックにおける対応するサンプルとの間の差を示し、CUのCr残差ブロックの各サンプルは、CUの予測Crブロックの1つにおけるCrサンプルとCUの元のCrコーディングブロックにおける対応するサンプルとの間の差を示し得る。
【0063】
さらに、
図4Cに示されるように、ビデオエンコーダ20は、クワッドツリー分割を使用して、CUの輝度、Cb、及びCrの残差ブロックを1つ又は複数の輝度、Cb、及びCrの変換ブロックに分解できる。変換ブロックは、同じ変換が適用される長方形(正方形又は非正方形)のサンプルのブロックを含んでもよい。CUのTUは、輝度サンプルの変換ブロック、2つの彩度サンプルの対応する変換ブロック、及び変換ブロックサンプルを変換するために使用されるシンタックス要素を含んでもよい。よって、CUの各TUは、輝度変換ブロック、Cb変換ブロック、及びCr変換ブロックに関連付けられてもよい。いくつかの実施例では、TUに関連付けられた輝度変換ブロックは、CUの輝度残差ブロックのサブブロックでもよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックでもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを含んでもよい。
【0064】
ビデオエンコーダ20は、1つ又は複数の変換をTUの輝度変換ブロックに適用して、TUの輝度係数ブロックを生成できる。係数ブロックは、変換係数の2次元アレイであってもよい。変換係数はスカラ量であってもよい。ビデオエンコーダ20は、1つ又は複数の変換をTUのCb変換ブロックに適用して、TUのCb係数ブロックを生成できる。ビデオエンコーダ20は、1つ又は複数の変換をTUのCr変換ブロックに適用して、TUのCr係数ブロックを生成できる。
【0065】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロック又はCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化できる。量子化とは、一般に、変換係数を表すために使用されるデータ量を最小限に抑えるために変換係数を量子化し、さらなる圧縮を提供する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素を符号化するためにエントロピー符号化技法を適用できる。例えば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してCABACを実行できる。最後に、ビデオエンコーダ20は、コード化されたフレーム及び関連付けられたデータの表現を形成するビットのシーケンスを含むビットストリームを出力することができ、該ビットストリームはストレージデバイス32に保存され、又は宛先デバイス14に送信される。
【0066】
ビデオエンコーダ20によって生成されたビットストリームを受信した後、ビデオデコーダ30はビットストリームを解析し、ビットストリームからシンタックス要素を取得できる。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構築できる。ビデオデータを再構築する処理は、ビデオエンコーダ20によって実行される符号化処理に概ね逆行する。例えば、ビデオデコーダ30は、現CUのTUに関連付けられた係数ブロックに対して逆変換を実行して、現CUのTUに関連付けられた残差ブロックを再構築できる。ビデオデコーダ30は、さらに現CUのPUの予測ブロックのサンプルを現CUのTUの変換ブロックの対応するサンプルに加算することによって、現CUのコーディングブロックを再構築する。フレームの各CUのコーディングブロックを再構築した後、ビデオデコーダ30は、フレームを再構築できる。
【0067】
上記のように、ビデオコーディングは、主に2つのモード、すなわち、フレーム内予測(又はイントラ予測)及びフレーム間予測(又はインター予測)を使用してビデオ圧縮を実現する。イントラブロックコピー(IBC)は、フレーム内予測又は第3モードのいずれかと見なすことができることに留意されたい。2つのモードの間で、フレーム間予測は、参照ビデオブロックから現ビデオブロックを予測するための動きベクトルを使用することから、フレーム内予測よりもコーディング効率に貢献する。
【0068】
しかし、ビデオデータキャプチャ技術が改善され、ビデオデータの詳細を保持するためのビデオブロックサイズが緻密化されるにつれて、現フレームの動きベクトルを表現するために必要なデータ量は大幅に増加している。この課題を克服する1つの方法は、空間的及び時間的ドメインの両方における隣接CUのグループが、予測目的で類似のビデオデータを有するだけでなく、これらの隣接CU間の動きベクトルも類似しているという事実から利益を得ることである。したがって、現CUの「動きベクトル予測子(Motion Vector Predictor:MVP)」とも呼ばれる、空間的に隣接するCU及び/又は時間的に同じ場所にあるCUの動き情報を、その空間的及び時間的相関を探索することにより、現CUの動き情報(例えば、動きベクトル)の近似として使用することができる。
【0069】
現CUの実際の動きベクトルをビデオビットストリームに符号化する代わりに(例えば、
図2に関連して上述したように、実際の動きベクトルが動き推定ユニット42によって決定される)、現CUの動きベクトル予測子は、現CUの実際の動きベクトルから減算され、現CUの動きベクトル差分(Motion Vector Difference:MVD)を生成する。そうすることにより、フレームの各CUに対して動き推定ユニット42によって決定された動きベクトルをビデオビットストリームに符号化する必要がなくなり、ビデオビットストリーム内の動き情報を表現するために使用されるデータ量を大幅に減少させることができる。
【0070】
コードブロックのフレーム間予測中に参照フレーム内の予測ブロックを選択する処理と同様に、一連のルールは、現CUと空間的に隣接するCU及び/又は時間的に同じ場所にあるCUに関連する潜在的な候補動きベクトルを使用して、現CUの動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構築し、次いで現CUの動きベクトル予測子として動きベクトル候補リストから1つのメンバーを選択するために、ビデオエンコーダ20及びビデオデコーダ30の両方によって採用されることができる。そうすることにより、動きベクトル候補リスト自体をビデオエンコーダ20からビデオデコーダ30に送信する必要がなくなり、動きベクトル候補リスト内の選択された動きベクトル予測子のインデックスは、ビデオエンコーダ20及びビデオデコーダ30が、現CUを符号化及び復号するために、動きベクトル候補リスト内の同じ動きベクトル予測子を使用するのに十分である。したがって、選択された動きベクトル予測子のインデックスのみがビデオエンコーダ20からビデオデコーダ30に送られる必要がある。
【0071】
アフィンモードに関する簡単な説明は、
図5Aから
図5Bを参照して本明細書に提供される。HEVCでは、平行移動動きモデルのみが動き補償予測に適用される。現実世界では、ズームイン、ズームアウト、回転、遠近動き、及び他の不規則的な動きなどの様々な種類の動きが存在し得るが、VVC及びAVS3規格において、アフィン動き補償予測は、平行移動動きモデル又はアフィン動きモデルがインター予測に適用されるか否かを示すため、インターコーディングブロックごとにフラグをシグナリングすることで適用され得る。一部の実装形態では、2つのアフィンモード(例えば、
図5Aに示す4パラメータアフィン動きモデル又は
図5Bに示す6パラメータアフィン動きモデル)のうちの1つが選択され、アフィンコード化ビデオブロックに適用されてもよい。
【0072】
図5Aに示す4パラメータアフィン動きモデルは、以下のアフィンパラメータを含む:すなわち、水平方向と垂直方向のそれぞれの平行移動のための2つのパラメータと、ズーム動きのための1つのパラメータ、及び水平方向と垂直方向の両方の回転動きのための1つのパラメータである。このモデルでは、水平ズームパラメータを垂直ズームパラメータと、水平回転パラメータを垂直回転パラメータと等価とすることができる。動きベクトルとアフィンパラメータのより良い適応を達成するため、このモデルのアフィンパラメータは、現ビデオブロックの2つの制御点(例えば、左上隅と右上隅)に位置する2つの動きベクトル(制御点動きベクトル(CPMV)と呼ばれる)でコード化できる。
図5Aに示されるように、ビデオブロックのアフィン動きフィールド(例えば、ビデオブロックの動きベクトル)は、2つのCPMV、V
0及びV1によって記述できる。制御点動きに基づいて、ビデオブロック内の位置(x,y)を持つアフィンコード化サブブロックの動きフィールドは、以下の式(1)で導出できる。
【数1】
【0073】
式(1)において、vx及びvyは、アフィンコード化サブブロックの動きベクトルのそれぞれ(x,y)位置におけるx成分及びy成分を表す。wは、ビデオブロックの幅を表す。v0x及びv0yは、それぞれCPMV V0のx成分及びy成分を表す。v1x及びv1yは、それぞれCPMV V1のx成分及びy成分を表す。
【0074】
図5Bに示される6パラメータアフィン動きモデルは、以下のアフィンパラメータ、すなわち、それぞれ水平方向及び垂直方向における平行移動のための2つのパラメータと、水平方向におけるズーム動きと回転動きのための2つのパラメータと、垂直方向におけるズーム動きと回転動きのためのさらに2つのパラメータを有する。6パラメータアフィン動きモデルは、3つの制御点において3つのCPMVでコード化され得る。
図5Bに示すように、6パラメータアフィンビデオブロックの3つの制御点は、ビデオブロックの左上隅、右上隅、及び左下隅にあり、CPMVのV
0、V
1、V
2と関連付けられる。左上の制御点における動きは平行移動に関連し、右上の制御点における動きは水平方向での回転動き及びズーム動きに関連し、左下の制御点における動きは垂直方向の回転動き及びズーム動きに関連する。4パラメータアフィン動きモデルと比較して、6パラメータアフィン動きモデルの水平方向での回転動き及びズーム動きは、垂直方向での回転動き及びズーム動きと同じではない場合がある。ビデオブロックの位置(x,y)にある各サブブロックの動きベクトル(v
x,v
y)は、3つの制御点で3つのCPMVを使用して次のように導出できる。
【数2】
【0075】
式(2)において、vx及びvyは、アフィンコード化サブブロックの動きベクトルのそれぞれ(x,y)位置におけるx成分及びy成分を表す。w及びhはビデオブロックの幅及び高さである。v0x及びv0yは、それぞれCPMV V0のx成分及びy成分を表す。v1x及びv1yは、それぞれCPMV V1のx成分及びy成分を表す。v2x及びv2yは、それぞれCPMV V2のx成分及びy成分を表す。
【0076】
図6は、本開示の一部の実施による、例示的な双方向マッチングを示す図解である。ビデオコーディングの領域では、双方向マッチングは、現在コード化されているビデオブロックの動き情報がデコーダ側にシグナリングされず、デコーダ側で導出される技術である。動き導出処理に双方向マッチングを使用する場合、最初にビデオブロック全体に対して初期動きベクトルを導出できる。具体的には、ビデオブロックのマージリストをチェックすることができ、マージリスト内のすべての候補動きベクトル間の最小マッチングコストにつながるマージリストからの候補動きベクトルを開始点として選択できる。次に、探索範囲内の開始点を中心とする局所探索を実行し、探索範囲内で最小マッチングコストとなる動きベクトルを、ビデオブロック全体の動きベクトルとすることができる。続いて、ビデオブロック全体の動きベクトルを新たな開始点として使用して、動き情報をサブブロックレベルでさらに精緻化できる。例えば、複数のCPMVをビデオブロック全体に対して導出することができ、次いで、上記式(1)又は(2)に基づいて、ビデオブロックレベルでCPMVを適用することによって、サブブロックレベルでの動きベクトルを導出できる。
【0077】
図6に示されるように、2つの異なる参照フレームからビデオブロックの動き軌道に沿って2つのベストマッチ参照ブロック604、606を見つけることによって、双方向マッチングを使用してビデオフレーム内のビデオブロック602の動き情報を導出することができる。連続する動きの軌跡を仮定すると、2つの参照ブロック604、606を指す動きベクトルMV0及びMV1は、ビデオフレーム(例えば、TD0及びTD1)に対する参照フレームの時間的距離にそれぞれ比例し得る。特別なケースとして、ビデオフレームが時間的に2つの参照フレームの間にあり、ビデオフレームから2つの参照フレームまでの時間的距離が同じである場合(例えば、TD0=TD1)、双方向マッチングから導出された動きベクトルは、ミラーベースの双方向動きベクトルになる。
【0078】
図7は、本開示の一部の実施による、アフィン動き補償のための、双方向マッチングによる動き精緻化のための例示的処理700を示すブロック図である。一部の実装形態では、処理700は、ビデオエンコーダ20の予測処理ユニット41(例えば、動き推定ユニット42、動き補償ユニット44などを含む)、又はビデオデコーダ30の予測処理ユニット81(例えば、動き補償ユニット82を含む)によって実行され得る。一部の実装形態では、処理700は、エンコーダ側又はデコーダ側でビデオプロセッサ(例えば、
図11に示されるようなプロセッサ1120)によって実行され得る。あくまで説明の目的で、処理700の以下の説明は、ビデオプロセッサに関して提供される。
【0079】
ビデオのビデオフレームからビデオブロックを符号化又は復号するために、ビデオプロセッサは、初期動きベクトル推定702を実行して、ビデオブロックに関する初期動きベクトル704を生成してもよい。例えば、ビデオプロセッサは、ビデオブロックのマージリストに基づいて、ビデオブロックに関する初期動きベクトル704を決定できる。具体的には、ビデオブロックのマージリストをチェックすることができ、マージリスト内のすべての候補動きベクトル間の最小マッチングコストにつながるマージリストからの候補動きベクトルを初期動きベクトル704として選択できる。
【0080】
ビデオプロセッサは、ビデオブロックの精緻化された動きベクトル714が得られるまで、初期動きベクトル704を反復的に更新するために、ビデオブロックレベルで、双方向マッチングベースの動き精緻化処理706を実行してもよい。初期動きベクトル704は、双方向マッチングベースの動き精緻化処理706の開始点(例えば、開始動きベクトル)として使用できる。開始動きベクトルの周りの反復更新が実行されるとき、ビデオブロックの現予測とマッチング対象との間のマッチングコスト(例えば、双方向マッチングコスト)を反復的に計算して、ビデオブロックの開始動きベクトルの漸進的更新をガイドできる。一部の実装形態では、ビデオブロックの現予測とマッチング対象との間のマッチングコストを、マッチングコスト関数に基づいて計算できる。マッチングコスト関数は、絶対差の合計(Sum of Absolute Difference:SAD)、SADを除去した平均値(Mean Removed SAD:MRSAD)、平方差の合計(Sum of Square Difference:SSD)、又はビデオブロックの現予測とマッチング対象との間のその他の適切な差分メトリックとすることができる。
【0081】
ビデオブロックがアフィンモードでコード化される場合、初期動きベクトル704は、ビデオブロックの1つ又は複数の制御点に1つ又は複数の初期CPMVを含んでもよい。精緻化された動きベクトル714は、1つ又は複数の制御点において、1つ又は複数の精緻化されたCPMVを含んでもよい。
【0082】
まず、双方向マッチングベースの動き精緻化処理706で、ビデオプロセッサは、マッチング対象決定動作708を実行して、動き情報の反復更新のためのマッチング対象を決定してもよい。例えば、
図8を参照すると、ビデオプロセッサは、初期動きベクトル704に基づいて、それぞれビデオの第1の参照フレーム802及び第2の参照フレーム804から、第1の参照ブロックRef0及び第2の参照ブロックRef1を決定してもよい。ビデオプロセッサは、第1の参照ブロックRef0と第2の参照ブロックRef1の加重組み合わせに基づいて、マッチング対象を決定してもよい。例えば、マッチング対象は、Ref0とRef1の加重和に等しくてもよい(例えば、マッチング対象=w0*Ref0+w1*Ref1、ここで、w0とw1はそれぞれRef0とRef1の重みを示す)。
【0083】
一部の実装形態では、ここに開示されるインターコーディングモード(例えば、マージモード)は、参照フレームの2つの異なるリスト(例えば、List0及びList1)が、ビデオブロックの2つの予測を識別するために使用されることを示す、双方向予測であってもよい。例えば、List0はビデオブロックに先行する参照フレームのリストを含んでもよく、List1はビデオブロックに続く参照フレームのリストを含んでもよい。Ref0は、初期動きベクトル704に基づく第1の参照フレーム802からのList0予測であってもよい。Ref1は、初期動きベクトル704に基づく第2の参照フレーム804からのList1予測であってもよい。マッチング対象は、初期動きベクトル704に基づいて導出されたList0予測及びList1予測の加重和であってもよい。
【0084】
あるいは、マッチング対象は、List0及びList1予測の加重組み合わせに、List0予測及びList1予測に関連付けられた対応する予測残差を加えたものとすることもできる。この場合、マッチング対象は、List0再構築とList1再構築の加重組み合わせとすることができる。例えば、List0再構築=List0予測+List0予測残差、List1再構築=List1予測+List1予測残差、及びマッチング対象=w0*List0再構築+w1*List1再構築である。
【0085】
一部の実装形態では、重みw0とw1は、通常の加重双方向予測(例えば、CUレベル加重双方向予測)のために、エンコーダ側で導出された同じ値を再利用することがある。あるいは、重みw0及びw1は所定の値を有してもよい。例えば、w0=w1=1/2である。別の実施例では、w0=1及びw1=0、又はw0=0及びw1=1である。重みw0とw1の一方が0のとき、双方向マッチングは、双方向動きベクトル精緻化ではなく片方向動きベクトル精緻化となる。
【0086】
一部の実装形態では、重みw0とw1は異なる符号の値を有していてもよい。例えば、w0=1、w1=-1である。この場合、マッチングコストを計算するのに双方向予測差を使用できる。具体的には、開始動きベクトルが更新される前に生成される双方向予測差と、開始動きベクトルが更新された後に生成される双方向予測差が、マッチングコストを決定するために計算される。
【0087】
図7の双方向マッチングベースの動き精緻化処理706を再度参照すると、ビデオプロセッサは、精緻化された動きベクトル714がビデオブロックに対して生成されるまで、動き精緻化操作710及び動きベクトル更新操作712を反復的に実行してもよい。例えば、ビデオプロセッサは、ビデオブロックに関する中間動きベクトルを初期化するために初期動きベクトル704を使用することができ、マッチング対象に基づいて中間動きベクトルの動き精緻化を決定できる。ビデオプロセッサは、動き精緻化に基づいて中間動きベクトルを更新できる。中間動きベクトルは、双方向マッチングベースの動き精緻化処理706を実行しながら、ビデオブロックの動きベクトルを表すことができる。次に、ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい所定の反復停止条件が充足されている場合、ビデオプロセッサは、中間動きベクトルを精緻化された動きベクトル714と決定してもよい。一方、所定の反復停止条件が充足されない場合、ビデオプロセッサは所定の反復停止条件が充足されるまで、中間動きベクトルに対する動き精緻化を反復的に決定し、動き精緻化に基づいて中間動きベクトルを更新し続けてもよい。
【0088】
一部の実装形態では、中間動きベクトルが収束すると、所定の反復停止条件は充足され得る。あるいは、所定の反復停止条件は、反復の総回数が所定の閾値を満たす(例えば、反復の総回数が所定の上限に到達する)場合に充足され得る。
【0089】
一部の実装形態では、中間動きベクトルの動き精緻化は、計算ベースの導出、探索ベースの導出、又は計算ベースの導出と探索ベースの導出の組み合わせを介して決定できる。計算ベースの導出が動き精緻化を決定するために使用される第1の例示的処理、探索ベースの導出が動き精緻化を決定するために使用される第2の例示的処理、及び計算ベースの導出と探索ベースの導出の組み合わせが動き精緻化を決定するために使用される第3の例示的処理が、以下に提供される。
【0090】
計算ベースの導出が適用される第1の例示的処理において、ビデオプロセッサは、中間動きベクトルに基づいて、ビデオブロックの現予測を決定できる。例えば、ビデオプロセッサは、中間動きベクトルに基づいて、第1の参照フレーム802及び第2の参照フレーム804からそれぞれ第3の参照ブロック(Ref2)及び第4の参照ブロック(Ref3)を決定できる。ビデオプロセッサは、第3の参照ブロックRef2と第4の参照ブロックRef3の加重組み合わせに基づいて、ビデオブロックの現予測を決定できる(例えば、現予測=w2*Ref2+w3*Ref3、ここでw2とw3はそれぞれRef2とRef3の重みを表す)。いくつかの実施例では、第3の参照ブロックRef2及び第4の参照ブロックRef3は、それぞれ、ビデオブロックの中間List0予測及び中間List1予測になり得る。中間List0予測及び中間List1予測は、それぞれ、中間動きベクトルに基づくビデオブロックのList0予測及びList1予測になり得る。一部の実装形態では、w2とw3はそれぞれw0とw1と等しくてもよい。あるいは、w2とw3はそれぞれw0とw1とは異なる値を持っていてもよい。
【0091】
ビデオプロセッサは、ビデオブロックの現予測とマッチング対象との間の仮の動きモデルを決定し、仮の動きモデルに基づいて、中間動きベクトルのための動き精緻化を導出してもよい。例えば、仮の動きモデルは、後述する動き精緻化計算のために使用できる。一部の実装形態では、双方向マッチングベースの動き精緻化処理706が実行される前には、ビデオブロックのアフィン動きモデルは、4パラメータアフィン動きモデル(2つのCPMVを有する)又は6パラメータアフィン動きモデル(3つのCPMVを有する)であってもよい。双方向マッチングが利用される場合、現予測とマッチング対象との間の仮の動きモデルは線形又は非線形であってもよく、それは2パラメータ(線形)、4パラメータ(非線形)、又は6パラメータ(非線形)動きモデルによって表現され得る。
【0092】
一部の実装形態では、仮の動きモデルは、ビデオブロックのアフィン動きモデルと同じ数のパラメータを有していてもよい。例えば、仮の動きモデルは6パラメータ動きモデルであり、アフィン動きモデルも6パラメータアフィン動きモデルである。他の実施例では、仮の動きモデルは4パラメータ動きモデルであり、アフィン動きモデルも4パラメータアフィン動きモデルである。あるいは、仮の動きモデルは、ビデオブロックのアフィン動きモデルとは異なる数のパラメータを有していてもよい。例えば、ビデオブロックのアフィン動きモデルは6パラメータアフィン動きモデルであるのに対し、仮の動きモデルは2パラメータ動きモデル、又は4パラメータ動きモデルである。他の実施例では、ビデオブロックのアフィン動きモデルは4パラメータアフィン動きモデルであるのに対し、仮の動きモデルは2パラメータ動きモデル、又は6パラメータ動きモデルである。
【0093】
例えば、アフィン動きモデルは、3つの制御点{(v
0x,v
0y), (v
1x,v
1y), (v
2x,v
2y)}で3つのCPMVを有する6パラメータアフィン動きモデルであってもよい。中間動きベクトルの動き精緻化(例えば、3つのCPMVの動き精緻化)は、{(dv
0x,dv
0y), (dv
1x,dv
1y), (dv
2x,dv
2y)}で表すことができる。マッチング対象輝度信号はl(i,j)として表すことができ、マッチング対象に関連付けられる。予測輝度信号は、l'
k(i,j)として表すことができ、ビデオブロックの現予測に関連付けられる。空間勾配g
x(i,j)及びg
y(i,j)は、予測信号l'
k(i,j)に、それぞれ水平方向と垂直方向にSobelフィルタを適用して導出できる。6パラメータの仮の動きモデルを用いて、各CPMVに対する動き精緻化を以下のように導出できる。
【数3】
【0094】
上記式(3)において、(dvx(x,y), dvy(x,y))は、CPMVのデルタ動き精緻化を示し、a及びbは、デルタ平行移動パラメータを示し、c及びdは、水平方向のデルタズーム及び回転パラメータを示し、e及びfは、垂直方向のデルタズーム及び回転パラメータを示す。
【0095】
左上、右上、及び左下の制御点{(v
0x, v
0y), (v
1x, v
1y), (v
2x, v
2y)}の座標はそれぞれ(0,0)、(w0)、(0,h)である。w及びhはビデオブロックの幅と高さを示す。上記(3)式に基づき、3つの制御点における3つのCPMVの動き精緻化は、それぞれの座標を以下の式(4)から(6)として導出できる。
【数4】
【数5】
【数6】
【0096】
オプティカルフロー方程式に基づいて、輝度の変化と空間的勾配及び時間的動きの間の関係は、以下の式(7)として定式化できる。
【数7】
【0097】
式(7)のdv
x(i,j)とdv
y(i,j)を式(3)に代入すると、パラメータセット(a,b,c,d,e,f)に対する式(8)は次のように得られる:
【数8】
【0098】
ビデオブロック内のすべてのサンプルは式(8)を充足するので、式(8)のパラメータセット(a,b,c,d,e,f)は最小二乗誤差法で解くことができる。そして、3つの制御点{(v0x, v0y), (v1x, v1y), (v2x, v2y)}での動き精緻化は式(4)から式(6)で解くことができ、特定の精度(例えば1/16ペル)に丸めることができる。上記の計算処理を反復として使用すると、3つの制御点にあるCPMVは、パラメータセット(a,b,c,d,e,f)がすべてゼロであるか、又は反復の総回数が所定の上限を充足する場合に、収束するまで精緻化される。
【0099】
別の実施例では、仮の動きモデルは、4パラメータの動きモデルであってもよい。各CPMVの動き精緻化について、4パラメータの動きモデルは、以下の式(9)を用いて表現できる。
【数9】
【0100】
左上と右上の制御点{(v
0x, v
0y), (v
1x, v
1y)}の座標は、それぞれ(0,0)と(w0)になり得る。上記式(9)に基づき、2つの制御点におけるCPMVのデルタ動き精緻化は、それぞれの座標を次の式(10)、式(11)として導出できる。
【数10】
【数11】
【0101】
式(7)のdv
x(i,j)とdv
y(i,j)を式(9)に代入すると、パラメータセット(a,b,c,d)に対する式(12)は次のように得られる:
【数12】
【0102】
上記式(8)と同様に、式(12)のパラメータセット(a,b,c,d)は、ビデオブロック内のすべてのサンプルを考慮することにより、最小二乗法で解くことができる。
【0103】
さらに別の実施例では、仮の動きモデルは、2パラメータの動きモデルであってもよい。各CPMVの動き精緻化については、c=d=e=f=0である(例えば、上記(3)式による)。そして、2パラメータの仮の動きモデルは、次のように表現できる。
【数13】
【0104】
上記式(13)に示すように、いずれのCPMVに対しても動き精緻化(例えば、任意の制御点におけるデルタ動き精緻化)は同じである。式(7)のdv
x(i,j)とdv
y(i,j)を式(13)に代入すると、パラメータセット(a,b)に対する式(14)は次のように得られる:
【数14】
【0105】
上記式(8)と同様に、式(14)のパラメータセット(a,b)は、ビデオブロック内のすべてのサンプルを考慮することにより、最小二乗法で解くことができる。
【0106】
上記式(3)、(9)、又は(13)により動き精緻化を得た後、ビデオプロセッサは、導出された動き精緻化を用いて中間動きベクトルを更新し、ビデオブロックのアフィン動きモデルに基づく精緻化された動きベクトル714を得ることができる。例えば、各CPMVは次の式を使用して更新できる。
【数15】
【0107】
上記式(15)において、
【数15-1】
は、それぞれ水平方向における精緻化前後のCPMVのx成分を、
【数15-2】
は、それぞれ垂直方向における精緻化前後のCPMVのy成分を示す。ビデオブロックのアフィン動きモデルのタイプによっては、異なる数のCPMVを精緻化する必要がある場合もある。例えば、4パラメータアフィン動きベクトルの場合、2つのCPMVを更新する必要があり、6パラメータアフィン動きモデルの場合、3つのCPMVを更新する必要がある。精緻化される各CPMVについて、対応する動き精緻化は、上記式(3)、(9)、又は(13)に従って、CPMVの対応する座標(x,y)を使用して導出できる。
【0108】
例えば、現予測とマッチング対象との間の仮の動きモデルが2パラメータの動きモデルである場合、上記式(13)を使用して、動き精緻化を導出できる。すなわち、CPMVの各々についてdv
x(x,y)=a及びdv
y(x,y)=bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数16】
【数17】
【数18】
【0109】
別の実施例では、現予測とマッチング対象との間の仮の動きモデルが4パラメータの動きモデルである場合、上記式(9)を使用して、動き精緻化を導出できる。すなわち、CPMVの各々についてdv
x(x,y)=c*x-d*y+a及びdv
y(x,y)=d*x+c*y+bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数19】
【数20】
【数21】
【0110】
さらに別の実施例では、現予測とマッチング対象との間の仮の動きモデルが6パラメータの動きモデルである場合、上記式(3)を使用して、動き精緻化を導出できる。すなわち、dv
x(x,y)=c*x-d*y+a及びdv
y(x,y)=e*x+f*y+bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数22】
【数23】
【数24】
【0111】
探索ベースの導出が動き精緻化を導出するために適用される第2の例示的処理において、ビデオプロセッサは、水平及び/又は垂直方向の各制御点の中間動きベクトルに、増分変化(例えば、+1又は-1)を反復的に適用できる。より小さなマッチングコストに導く中間動きベクトルの対応する変化は各制御点に対して精緻化された動きベクトルが得られるまで保持され、次の探索のための新たな開始点として設定されることができる。
【0112】
例えば、中間動きベクトルは、双方向であってもよく、List0のための第1の動きベクトル(例えば、L0動きベクトルと呼ばれる)及びList1のための第2の動きベクトル(例えば、L1動きベクトルと呼ばれる)を含む。L0及びL1動きベクトルの漸進的な精緻化は、マッチング対象を固定し、更新されたL0及び/又はL1動きベクトルを使用してビデオブロックの現予測を反復的に更新することによって、別々に実施されてもよい。処理の複雑さを削減するため、L0とL1の動きベクトルに対して同じ量の、逆方向の精緻化を使用することにより、L0とL1の両動きベクトルに対して精緻化を同時に実行することができる。例えば、次の式(25)を使用して、更新されたL0及びL1の動きベクトルを決定できる。
【数25】
【0113】
上記式(25)において、v0及びv1はそれぞれL0及びL1の動きベクトルを示し、v0'及びv1'はそれぞれ更新されたL0及びL1の動きベクトルを示し、Δ及び-Δはそれぞれ逆方向のList0及びList1に適用された動き精緻化を示し、kは時間的距離を考慮するために使用可能なスケーリング係数を示す。例えば、kは、ビデオフレームと第1の参照フレームとの間の第1の時間的距離と、ビデオフレームと第2の参照フレームとの間の第2の時間的距離との比に基づいて決定されてもよい。
【0114】
一部の実装形態では、各制御点の中間動きベクトルを反復的に更新するために、ビデオプロセッサは、まず、所定の探索範囲内の中間動きベクトル及び第1の動きベクトルの変化に基づいて第1の修正動きベクトルを生成できる。例えば、第1の修正動きベクトルは、中間動きベクトルと第1の動きベクトルの変化の和に等しくすることができ、第1の動きベクトルの変化は、中間動きベクトルの増分変化とすることができる。ビデオプロセッサは、(a)中間動きベクトルに関連するマッチングコスト、及び(b)第1の修正動きベクトルに関連する現マッチングコストに基づいて、中間動きベクトルに対する動き精緻化として第1の動きベクトルの変化を割り当てるか否かを決定できる。
【0115】
例えば、ビデオプロセッサは、中間動きベクトルに基づいてビデオブロックの予測を決定し、マッチング対象及びビデオブロックの予測に基づいて、中間動きベクトルに関連するマッチングコストを決定できる。ビデオブロックの予測は、中間動きベクトルに基づくビデオブロックのList0予測とList1予測の加重組み合わせとすることができる。マッチングコストは、ここに開示される任意のマッチングコスト関数に基づいて決定できる。同様に、ビデオプロセッサは、第1の修正動きベクトルに基づいてビデオブロックの現予測を決定し、マッチング対象及びビデオブロックの現予測に基づいて、第1の修正動きベクトルに関連付けられた現マッチングコストを決定することもできる。ビデオブロックの現予測は、第1の修正動きベクトルに基づくビデオブロックのList0予測とList1予測の加重組み合わせとすることができる。
【0116】
第1の修正動きベクトルに関連する現マッチングコストが、中間動きベクトルに関連するマッチングコストよりも小さい場合、ビデオプロセッサは、動き精緻化を、第1の動きベクトルの変化として導出できる。その結果、中間動きベクトルは、第1の修正された動きベクトル(例えば、中間動きベクトル=中間動きベクトル+第1の動きベクトルの変化)に更新できる。
【0117】
第1の修正動きベクトルに関連する現マッチングコストが、中間動きベクトルに関連するマッチングコストと等しいか、又はそれよりも大きい場合、ビデオプロセッサは、動き精緻化として第1の動きベクトルの変化を割り当てないことを決定できる。代わりに、ビデオプロセッサは、中間動きベクトル及び所定の探索範囲内の第2の動きベクトルの変化(例えば、第2の修正動きベクトル=中間動きベクトル+第2の動きベクトルの変化)に基づいて、第2の修正動きベクトルを生成できる。ビデオプロセッサは、中間動きベクトルに関連するマッチングコスト及び第2の修正動きベクトルに関連する別の現マッチングコストに基づいて、第2の動きベクトルの変化を動き精緻化として割り当てるかどうかを決定できる。第2の修正動きベクトルに関連する他の現マッチングコストが、中間動きベクトルに関連するマッチングコストよりも小さい場合、ビデオプロセッサは、動き精緻化を、第2の動きベクトルの変化として導出できる。そして、中間動きベクトルを更新して、第2の修正動きベクトルとすることができる。第2の修正動きベクトルに関連する他の現マッチングコストが、中間動きベクトルに関連するマッチングコストと等しいか、又はそれよりも大きい場合、ビデオプロセッサは、動き精緻化として第2の動きベクトルの変化を割り当てないことを決定できる。
【0118】
同様の操作を実行することにより、ビデオプロセッサは、所定の反復停止条件が充足されるまで、中間動きベクトルを反復的に更新できる。例えば、所定の反復停止条件は、所定の探索範囲内で利用可能な動きベクトル変化が検出され、処理されるか、又は反復の総回数が所定の上限を充足する場合に充足され得る。ビデオプロセッサは、所定の反復停止条件が充足されたとき、ビデオブロックの精緻化された動きベクトル714を中間動きベクトルと決定できる。
【0119】
計算ベースの導出と探索ベースの導出との組み合わせを使用して動き精緻化を決定する第3の例示的処理では、まず計算ベースの導出を使用して、中間動きベクトルを迅速に精緻化し、次いで探索ベースの導出に従い、精緻化された動きベクトル714を得るためのさらなる精緻化を提供できる。具体的には、ビデオプロセッサは、計算ベースの導出によって中間動きベクトルの動き精緻化を決定し、計算ベースの導出によって決定された動き精緻化に基づいて中間動きベクトルを更新する。次に、ビデオプロセッサは、探索ベースの導出によって中間動きベクトルの動き精緻化を再び決定し、探索ベースの導出によって決定された動き精緻化に基づいて中間動きベクトルを再び更新する。その結果、ビデオブロックについて精緻化された動きベクトル714が得られる。
【0120】
ビデオブロックの精緻化された動きベクトル714が得られた後、ビデオプロセッサは、サブブロック・動きベクトル精緻化処理716を実行して、ビデオブロック内の各サブブロックの動きベクトル718を生成してもよい。具体的には、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトル714を、サブブロックの動きベクトルの開始点として使用することによって、ビデオブロック内の各サブブロックの動きベクトルを精緻化できる。ビデオプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化できる。例えば、ビデオプロセッサは、上述の双方向マッチングベースの動き精緻化処理706を通じてビデオブロックのための複数の精緻化されたCPMVを得ることができ、次に、アフィン動きモデルが4パラメータモデルであるか6パラメータアフィン動きモデルであるかに応じて上記式(1)又は(2)を適用して、精緻化されたCPMVを用いて各サブブロックの動きベクトルを導出できる。
【0121】
本開示に合致する、双方向マッチングベースの動き精緻化処理706の例示的な適用条件がここに提供される。具体的には、双方向マッチングのために、動きの軌道が仮定される。しかしながら、動きの軌跡が直線的でない場合、双方向マッチングは、信頼性のある動きベクトルを導出するために使用されないことがある。例えば、双方向マッチングは、回転、ズーム、及びワーピングのような複雑な動きではうまく機能しない。より信頼性の高い動き精緻化を導出するために、特定の適用条件を決定して、双方向マッチングの過剰な使用を制限してもよい。
【0122】
一部の実装形態では、2つの参照フレームが現ビデオフレームの2つの異なる側にある場合(例えば、1つの参照フレームが現ビデオフレームの前にあり、他の参照フレームが現ビデオフレームの後にある場合)にのみ、双方向マッチングベースの動き精緻化処理706が適用される。一部の実装形態では、2つの参照フレームが現ビデオフレームの同じ側にある場合(例えば、2つの参照フレームが現ビデオフレームの前にある場合、又は2つの参照フレームが現ビデオフレームの後にある場合)、かつ2つの参照フレーム間の時間的距離が予め定められた閾値を充足する場合(例えば、時間的距離が予め定義された値よりも小さい(又は大きい)場合)、双方向マッチングベースの動き精緻化処理706を適用できる。一部の実装形態では、2つの参照フレームが現ビデオフレームの2つの異なる側にあり、参照フレームの一方と現ビデオフレームとの間の第1の時間的距離が、参照フレームの他方と現ビデオフレームとの間の第2の時間的距離と同じである場合に、双方向マッチングベースの動き精緻化処理706を適用できる。
【0123】
本開示と一致して、双方向マッチングベースの動き精緻化処理706はブロックレベルでのアフィン動きに適用され得るのに対して、サブブロック動きベクトル精緻化716はサブブロックレベルでの規則的な動きに適用され得る。これはサブブロックレベルでは通常の動きのみが含まれるが、ブロックレベルではアフィン動き(例えば、ズームイン/ズームアウト、回転、または遠近運動など)も含まれ得るからである。いくつかの実装形態では、規則的な動きは2パラメータアフィン動きモデルと等価であり得る。
【0124】
図9は、本開示の一部の実施による、ビデオにおける動き精緻化のための例示的な方法900のフローチャートである。方法900は、ビデオエンコーダ20又はビデオデコーダ30に関連付けられたビデオプロセッサによって実施されてもよく、以下に説明するように、ステップ902からステップ906を含んでもよい。いくつかのステップは、ここに提供される開示を実施するために任意選択であってもよい。さらに、いくつかの工程は同時に実行されてもよく、あるいは
図9に示されるものとは異なる順序で実行されてもよい。
【0125】
ステップ902で、ビデオプロセッサは、ビデオから、ビデオフレームのビデオブロックの初期動きベクトルを決定してもよい。
【0126】
ステップ903において、ビデオプロセッサは、ビデオ内の第1の参照フレームからの第1の参照ブロックと、ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいて、マッチング対象を決定し得る。例えば、ビデオプロセッサは、最初の動きベクトルに基づいて、ビデオの第1の参照フレーム及び第2の参照フレームからそれぞれ第1の参照ブロック及び第2の参照ブロックを決定し得る。ビデオプロセッサは、それぞれ、第1の参照ブロックのための第1の重みと、第2の参照ブロックのための第2の重みとを決定し得る。ビデオプロセッサは、第1及び第2の重みを使用して、第1の参照ブロックと第2の参照ブロックとの加重組み合わせを決定し得る。ビデオプロセッサは、第1及び第2の参照ブロックの加重組み合わせに基づいて、マッチング対象を決定し得る。
【0127】
いくつかの実装形態では、第1の重み及び第2の重みは通常の重み付き双予測のためにエンコーダ側で導出された対応する重みと同一であり得る。例えば、通常の重み付き双予測は、List0予測のための重みと、List1予測のための重みとを有し得る。第1及び第2の重みは、それぞれ、List0予測のための重み及びList1予測のための重みに等しくなり得る。あるいは、第1及び第2の重みは所定の値を有する可能性がある。例えば、第1及び第2の重みの各々は、0.5とすることができる。別の実施例では、第1の重みは0であり得、第2の重みは1であり得る。又は、第1の重みは1とすることができ、第2の重みは0とすることができる。
【0128】
ステップ904で、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行してもよい。例えば、ビデオプロセッサは、中間動きベクトルを初期化するために初期動きベクトルを使用し、マッチング対象に基づいて中間動きベクトルの動き精緻化を決定し、動き精緻化に基づいて中間動きベクトルを更新できる。ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい。
【0129】
所定の反復停止条件が充足されたことに応答して、ビデオプロセッサは、中間動きベクトルを精緻化された動きベクトルと決定してもよい。所定の反復停止条件が充足されないことに応答して、ビデオプロセッサは所定の反復停止条件が充足されるまで、中間動きベクトルに対する動き精緻化を反復的に決定し、動き精緻化に基づいて中間動きベクトルを更新し続けてもよい。
【0130】
一部の実装形態では、動き精緻化は、計算ベースの導出、探索ベースの導出、又は計算ベースの導出と探索ベースの導出の組み合わせを介して決定できる。
【0131】
ステップ906において、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトルを、サブブロックの動きベクトルの開始点として使用して、ビデオブロック内の各サブブロックの動きベクトルを精緻化できる。ビデオプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化できる。
【0132】
図10は、本開示の一部の実施による、ビデオにおける動き精緻化のための別の例示的な方法1000のフローチャートである。方法1000は、ビデオエンコーダ20又はビデオデコーダ30に関連付けられたビデオプロセッサによって実施されてもよく、以下に説明するように、ステップ1002からステップ1016を含んでもよい。いくつかのステップは、ここに提供される開示を実施するために任意選択であってもよい。さらに、いくつかの工程は同時に実行されてもよく、あるいは
図10に示されるものとは異なる順序で実行されてもよい。
【0133】
ステップ1002で、ビデオプロセッサは、ビデオブロックのマージリストに基づいて、ビデオから、ビデオフレームのビデオブロックの初期動きベクトルを決定してもよい。
【0134】
ステップ1004で、ビデオプロセッサは、初期動きベクトルに基づいて、ビデオの第1の参照フレームと第2の参照フレームからマッチング対象を決定してもよい。
【0135】
ステップ1006で、ビデオプロセッサは、ビデオブロックの中間動きベクトルを初期化するために、初期動きベクトルを使用してもよい。
【0136】
ステップ1008で、ビデオプロセッサは、マッチング対象に基づいて、中間動きベクトルの動き精緻化を決定してもよい。
【0137】
ステップ1010で、ビデオプロセッサは、動き精緻化に基づいて中間動きベクトルを更新してもよい。
【0138】
ステップ1012で、ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい。所定の反復停止条件が成立したことに応答して、方法1000は、ステップ1014に進むことができる。そうでなければ、方法1000は、ステップ1008に戻ってもよい。
【0139】
ステップ1014で、ビデオプロセッサは、中間動きベクトルをビデオブロックについての精緻化された動きベクトルと決定できる。
【0140】
ステップ1016で、ビデオプロセッサは、マージリストから初期動きベクトルを識別するためのマージインデックス、第1の参照フレームを識別するための第1の参照インデックス、及び第2の参照フレームを識別するための第2の参照インデックスを含むビットストリームを生成できる。
【0141】
図11は、本開示の一部の実施による、ユーザインタフェース1150と結合された演算環境1110を示す。演算環境1110は、データ処理サーバの一部とすることができる。演算環境1110は、プロセッサ1120、メモリ1130、及び入出力(I/O)インタフェース1140を含む。
【0142】
プロセッサ1120は、典型的には、表示、データ収集、データ通信、及び画像処理に関連する操作などの、演算環境1110の全体的な操作を制御する。プロセッサ1120は、上述した方法のすべて又は一部のステップを実行するための命令を実行するための1つ又は複数のプロセッサを含んでもよい。さらに、プロセッサ1120は、プロセッサ1120と他の構成要素との間の相互作用を容易にする1つ又は複数のモジュールを含んでもよい。プロセッサ1120は、中央演算処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、画像処理装置(Graphical Processing Unit:GPU)などであってもよい。
【0143】
メモリ1130は、演算環境1110の動作をサポートするために、各種タイプのデータを格納するよう構成される。メモリ1130は、所定のソフトウェア1132を含んでもよい。このようなデータの例には、演算環境1110で動作する任意のアプリケーション又は方法のための命令、ビデオデータセット、画像データなどが含まれる。メモリ1130は、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、プログラマブル読取り専用メモリ(PROM)、読取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク、光ディスクなどの任意のタイプの揮発性又は不揮発性メモリデバイス、又はそれらの組み合わせを使用することによって実施することができる。
【0144】
I/Oインタフェース1140は、プロセッサ1120と、キーボード、クリックホイール、ボタンなどの周辺インタフェースモジュールとの間のインタフェースを提供する。ボタンとしては、限定されるものではないが、ホームボタン、スキャン開始ボタン、及びスキャン停止ボタンが含まれ得る。I/Oインタフェース1140は、エンコーダ及びデコーダと結合されることができる。
【0145】
一部の実装形態では、上述の方法を実行するために、例えば、メモリ1130内に、演算環境1110内のプロセッサ1120によって実行可能な複数のプログラムを含む非一時的なコンピュータ可読記憶媒体も提供される。あるいは、非一時的なコンピュータ可読記憶媒体は、例えば、ビデオデータを復号する際にデコーダ(例えば、
図3のビデオデコーダ30)によって使用される上述した符号化方法を使用して、エンコーダ(例えば、
図2のビデオエンコーダ20)によって生成された、符号化されたビデオ情報(例えば、1つ又は複数のシンタックス要素を含むビデオ情報)を含むビットストリーム又はデータストリームをその中に格納していてもよい。非一時的なコンピュータ可読記憶媒体は、例えば、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、光データストレージデバイスなどであってもよい。
【0146】
一部の実装形態では、1つ又は複数のプロセッサ(例えば、プロセッサ1120)と、1つ又は複数のプロセッサによって実行可能な複数のプログラムを格納した非一時的なコンピュータ可読記憶媒体又はメモリ1130と、を含む演算装置も提供され、1つ又は複数のプロセッサは、複数のプログラムの実行時に、上記方法を実行するよう構成される。
【0147】
一部の実装形態では、上述の方法を実行するために、例えば、メモリ1130内に、演算環境1110内のプロセッサ1120によって実行可能な複数のプログラムを含むコンピュータプログラム製品も提供される。例えば、コンピュータプログラム製品は、非一時的なコンピュータ可読記憶媒体を含んでもよい。
【0148】
一部の実装形態では、上記方法を実行するために、演算環境1110は、1つ又は複数のASIC、DSP、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、FPGA、GPU、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子部品を用いて実施されてもよい。
【0149】
本開示の説明は、例示のために提示されたものであり、網羅的であったり本開示を限定することを意図したものではない。前述の説明及び関連する図面に示された教示の恩恵を受ける当業者には、多くの修正、変更、及び代替の実施が明らかとなるであろう。
【0150】
特に明記しない限り、本開示による方法のステップの順序は単に例示を意図するものであって、本開示による方法のステップは、具体的に上述した順序に限定されるものではなく、実際の条件に応じて変更され得る。さらに、本開示による方法のステップのうちの少なくとも1つは、実際の要件に従って調整され、組み合わせられ、又は削除され得る。
【0151】
実施例は、開示の原理を説明し、当業者が各種実施に関する開示を理解し、意図される特定の使用に適した方法で、各種修正を伴う基礎となる原理及び各種実施を最良に利用することを可能とするために選択され、説明された。したがって、本開示の範囲は、開示された実施の具体的な実施例に限定されるものではなく、修正及び他の実施は、本開示の範囲内に含まれることが意図されていることを理解されたい。
【手続補正書】
【提出日】2023-12-15
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1以上のプロセッサによって、ビデオからビデオフレームのビデオブロックの初期動きベクトルを決定することと、
前記1以上のプロセッサによって、前記ビデオ内の第1の参照フレームからの第1の参照ブロックと前記ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することと、
前記1以上のプロセッサによって、前記ビデオブロックの精緻化された動きベクトルが得られるまで、前記マッチング対象に基づいて、前記初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することと、
前記1以上のプロセッサによって、前記ビデオブロックの前記精緻化された動きベクトルを、サブブロックの動きベクトルの開始点として使用して、前記ビデオブロック内の各サブブロックの動きベクトルを精緻化することであって、サブブロックレベルで前記動きベクトルを精緻化することは、前記ビデオブロックのアフィン動きモデルを適用する、動きベクトルを精緻化することと、
を含む、ビデオにおける動き精緻化のためのビデオコーディング方法。
【請求項2】
前記マッチング対象を決定することは、
前記第1の参照ブロックのための第1の重み及び前記第2の参照ブロックのための第2の重みをそれぞれ決定することと、
前記第1の参照ブロックと前記第2の参照ブロックの加重組み合わせを、前記第1の重み及び前記第2の重みを使用して決定することと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の重み及び前記第2の重みが、重み付き双予測のためのエンコーダ側で導出された対応する重みと同一、又は前記第1の重み及び前記第2の重みが、所定の値を有する、請求項2に記載の方法。
【請求項4】
前記双方向マッチングベースの動き精緻化処理を実行することは、
中間動きベクトルを初期化すべく前記初期動きベクトルを使用することと、
マッチング対象に基づいて前記中間動きベクトルの動き精緻化を決定することと、
前記動き精緻化に基づき前記中間動きベクトルを更新することと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記双方向マッチングベースの動き精緻化処理を実行することは、
所定の反復停止条件が充足されているか否かを判定することと、
前記所定の反復停止条件が充足されたことに応答して、前記中間動きベクトルを前記精緻化された動きベクトルと決定することと、又は
前記所定の反復停止条件が充足されないことに応答して、前記所定の反復停止条件が充足されるまで、前記中間動きベクトルに対する前記動き精緻化を反復的に決定し、前記動き精緻化に基づいて前記中間動きベクトルを更新し続けることと、
をさらに含む、請求項4に記載の方法。
【請求項6】
前記動き精緻化は、計算ベースの導出、探索ベースの導出、又は前記計算ベースの導出と前記探索ベースの導出の組み合わせによって決定される、請求項5に記載の方法。
【請求項7】
前記動き精緻化は、前記計算ベースの導出によって決定され、前記中間動きベクトルの前記動き精緻化を決定することは、
前記中間動きベクトルに基づいて、前記ビデオブロックの現予測を決定することと、
前記現予測と前記マッチング対象との間の仮の動きモデルを決定することであって、前記仮の動きモデルは動き精緻化の計算に用いられることと、
前記仮の動きモデルに基づいて前記中間動きベクトルの動き精緻化を計算することと、
をさらに含む、請求項6に記載の方法。
【請求項8】
前記所定の反復停止条件は、前記中間動きベクトルが収束するか、又は反復の総回数が所定の閾値を充足する場合に充足される、請求項7に記載の方法。
【請求項9】
前記仮の動きモデルのパラメータの総数が、前記アフィン動きモデルのパラメータの総数に等しい
か、又は前記仮の動きモデルのパラメータの総数が、前記アフィン動きモデルのパラメータの総数と異なっている、請求項7に記載の方法。
【請求項10】
前記動き精緻化は、前記探索ベースの導出によって決定され、前記中間動きベクトルの前記動き精緻化を決定することは、
所定の探索範囲内の前記中間動きベクトルと第1の動きベクトルの変化とに基づいて第1の修正動きベクトルを生成することと、
前記中間動きベクトルに関連するマッチングコスト、及び前記第1の修正動きベクトルに関連する現マッチングコストに基づいて、前記第1の動きベクトルの変化を前記動き精緻化として割り当てるかどうかを決定することと、
をさらに含む、請求項6に記載の方法。
【請求項11】
前記第1の修正動きベクトルに関連する前記現マッチングコストは、
前記第1の修正動きベクトルに基づいて前記ビデオブロックの現予測を決定し、
前記マッチング対象、及び前記ビデオブロックの前記現予測に基づいて、前記第1の修正動きベクトルに関連する前記現マッチングコストを決定する
ことによって決定される、請求項
10に記載の方法。
【請求項12】
前記第1の修正動きベクトルに関連する前記現マッチングコストが、前記中間動きベクトルに関連する前記マッチングコストよりも小さいことに応答して、前記中間動きベクトルが前記第1の修正動きベクトルに更新されるように、前記動き精緻化を前記第1の動きベクトルの変化として導出することをさらに含む
か、又は
前記第1の修正動きベクトルに関連する前記現マッチングコストが、前記中間動きベクトルに関連する前記マッチングコストと等しいか、又はそれより大きいことに応答して、
前記第1の修正動きベクトルの変化を前記動き精緻化として割り当てず、
前記所定の探索範囲内の前記中間動きベクトルと第2の動きベクトルの変化とに基づいて第2の修正動きベクトルを生成し、
前記中間動きベクトルに関連する前記マッチングコスト、及び前記第2の修正動きベクトルに関連する別の現マッチングコストに基づいて、前記第2の動きベクトルの変化を前記動き精緻化として割り当てるかどうかを決定する
ことをさらに含む、請求項
10に記載の方法。
【請求項13】
前記所定の反復停止条件は、前記所定の探索範囲内で利用可能な動きベクトルの変化が検出され、処理されるか、又は反復の総回数が所定の閾値を充足する場合に充足される、請求項
10に記載の方法。
【請求項14】
前記動き精緻化は、前記計算ベースの導出と前記探索ベースの導出との組み合わせによって決定され、前記双方向マッチングベースの動き精緻化処理を実行することは、
前記マッチング対象に基づく計算ベースの導出により前記中間動きベクトルの前記動き精緻化を決定し、
前記計算ベースの導出により決定された前記動き精緻化に基づき前記中間動きベクトルを更新し、
前記マッチング対象に基づく探索ベースの導出により再度前記中間動きベクトルの前記動き精緻化を決定し、
前記探索ベースの導出により決定された前記動き精緻化に基づき再度前記中間動きベクトルを更新する
ことを含む、請求項6に記載の方法。
【請求項15】
前記双方向マッチングベースの動き精緻化処理が、
前記第1の参照フレーム及び前記第2の参照フレームのうちの一方が前記ビデオフレームの前にあり、前記第1の参照フレーム及び前記第2の参照フレームのうちの他方がビデオフレームの後にあること、あるいは、
前記第1の参照フレーム及び前記第2の参照フレームの両方がビデオフレームの前又は後にあり、前記第1の参照フレーム及び前記第2の参照フレームの間の時間的距離が所定の閾値を満たすこと、
の1つの条件が満たされるときに、前記精緻化された動きベクトルを取得するために実行される、請求項1に記載の方法。
【請求項16】
ビデオの少なくとも1つのビデオフレームを格納するよう構成され、前記ビデオフレームが少なくとも1つのビデオブロックを含むメモリと、
請求項1から15のいずれか1項記載の方法を実行する1以上のプロセッサと
を含む、ビデオにおける動き精緻化のためのビデオコーディング装置。
【請求項17】
請求項1から15のいずれか1項記載の方法によって生成されたビットストリーム。
【請求項18】
請求項1から15のいずれか1項記載の方法によって復号されることになるビットストリーム。
【請求項19】
請求項16に記載のビデオコーディング装置によって復号されることになるビットストリームを受信、又は前記ビデオコーディング装置によって生成されたビットストリームを送信するための方法。
【請求項20】
請求項1から15のいずれか1項記載の方法によって復号されることになる符号化ビデオデータを含むか、又は請求項1から15のいずれか1項記載の方法によって生成された符号化ビデオデータを含むビットストリームを記憶するための命令を有するコンピュータ製品。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、ビデオコーディング及び圧縮に関する。より詳しくは、本出願は、ビデオにおける動き精緻化のためのビデオ処理システム及び方法に関する。
【背景技術】
【0002】
デジタルビデオは、デジタルテレビ、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録装置、デジタルメディアプレーヤー、家庭用ゲーム機、スマートフォン、ビデオ遠隔会議装置、ビデオストリーミング装置など、各種電子デバイスによりサポートされている。電子デバイスは、通信ネットワークを通じてデジタルビデオデータを送受信し、又は他の方法で通信し、及び/又はデジタルビデオデータをストレージデバイスに格納する。通信ネットワークの帯域幅容量が制限され、またストレージデバイスのメモリ資源は限られていることから、ビデオデータが通信又は格納される前に、ビデオコーディングにより、1つ又は複数のビデオコーディング規格に従ってビデオデータを圧縮してもよい。ビデオコーディング規格としては、多用途ビデオコーディング(Versatile Video Coding:VVC)、共同研究テストモデル(Joint Exploration test Model:JEM)、高効率ビデオコーディング(High-Efficiency Video Coding:HEVC/H.265)、アドバンスド・ビデオコーディング(Advanced Video Coding:AVC/H.264)、ムービング・ピクチャ・エキスパーツ・グループ(Moving Picture Expert Group:MPEG)コーディングなどが挙げられる。ビデオコーディングは、一般に、ビデオデータに固有の冗長性を利用する予測方法(例えば、インター予測、イントラ予測など)を利用する。ビデオコーディングは、ビデオ品質の劣化を回避しもしくは最小限に抑えながら、より低いビットレートを使用する形式にビデオデータを圧縮することを目的とする。
【発明の概要】
【0003】
本開示の実施は、ビデオにおける動き精緻化のためのビデオコーディング方法を提供する。ビデオコーディング方法は、1以上のプロセッサによって、ビデオからビデオフレームのビデオブロックに関する初期動きベクトルを決定することを含んでもよい。ビデオコーディング方法は、1以上のプロセッサによって、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定することをさらに含んでもよい。ビデオコーディング方法は、1以上のプロセッサによって、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することをさらに含んでもよい。ビデオコーディング方法は、1以上のプロセッサにより、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化することをさらに含んでもよい。サブブロックレベルで動きベクトルを精緻化することは、ビデオブロックのアフィン動きモデルを適用する。
【0004】
本開示の実施は、ビデオにおける動き精緻化のためのビデオコーディング装置も提供する。ビデオコーディング装置は、メモリと1以上のプロセッサとを含んでもよい。メモリは、ビデオの少なくとも1つのビデオフレームを格納するよう構成されてもよい。ビデオフレームは、少なくとも1つのビデオブロックを含む。1以上のプロセッサは、ビデオブロックの初期動きベクトルを決定するよう構成されてもよい。1以上のプロセッサは、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいてマッチング対象を決定するように構成されてもよい。1以上のプロセッサは、さらに、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行するよう構成されていてもよい。1以上のプロセッサは、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化するよう構成されていてもよい。1以上のプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化してもよい。
【0005】
また、本開示の実施は、1以上のプロセッサによって実行されると、1以上のプロセッサに、ビデオ内の動き精緻化のためのビデオコーディング方法を実行させる命令を格納した非一時的なコンピュータ可読記憶媒体を提供する。ビデオコーディング方法は、ビデオブロックのマージリストに基づいて、ビデオからビデオフレームのビデオブロックの初期動きベクトルを決定することを含んでもよい。ビデオコーディング方法は、ビデオ内の第1の参照フレームからの第1の参照ブロックとビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいて、マッチング対象を決定することをさらに含んでもよい。ビデオコーディング方法は、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行することをさらに含んでもよい。ビデオコーディング方法は、ビデオブロックの精緻化された動きベクトルをサブブロックに対する動きベクトルの開始点として用いて、ビデオブロック内の各サブブロックに対する動きベクトルを精緻化することをさらに含んでもよい。サブブロックレベルで動きベクトルを精緻化することは、ビデオブロックのアフィン動きモデルを適用する。ビデオコーディング方法は、マージリストから初期動きベクトルを識別するためのマージインデックス、第1の参照フレームを識別するための第1の参照インデックス、及び第2の参照フレームを識別するための第2の参照インデックスを含むビットストリームを生成することをさらに含んでもよい。ビットストリームは、非一時的なコンピュータ可読記憶媒体に格納される。
【0006】
上記の概略的な説明及び以下の詳細な説明はいずれも例示のみを目的とし、本開示を制限するものではないことを理解されたい。
【0007】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本開示と一致する例を説明し、明細書とともに、本開示の原理を説明するのに役立つ。
【図面の簡単な説明】
【0008】
【
図1】本開示の一部の実施による、ビデオブロックを符号化及び復号するための例示的なシステムを示すブロック図である。
【
図2】本開示の一部の実施による、例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示の一部の実施による、例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4B】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4C】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4D】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図4E】本開示の一部の実施による、フレームが異なるサイズ及び形状の複数のビデオブロックに再帰的に分割される方法を示す図解である。
【
図5A】本開示の一部の実施による、例示的な4パラメータアフィン動きモデルを示す。
【
図5B】本開示の一部の実施による、例示的な6パラメータアフィン動きモデルを示す。
【
図6】本開示の一部の実施による、例示的な双方向マッチングを示す図解である。
【
図7】本開示の一部の実施による、アフィン動き補償のための、双方向マッチングベースの動き精緻化のための例示的処理を示すブロック図である。
【
図8】本開示の一部の実施による、マッチング対象の例示的な計算を示す図解である。
【
図9】本開示の一部の実施による、ビデオにおける動き精緻化のための例示的な方法のフローチャートである。
【
図10】本開示の一部の実施による、ビデオにおける動き精緻化のための別の例示的な方法のフローチャートである。
【
図11】本開示の一部の実施による、ユーザインタフェースと結合された演算環境を示すブロック図である。
【発明を実施するための形態】
【0009】
ここで、特定の実装形態を詳細に参照する。それらの実施例は添付の図面に示されている。以下の詳細な説明では、ここに提示される主題を理解するのを助けるために、多くの非限定的な特定の詳細が記載される。しかし、当業者には、特許請求の範囲から逸脱することなく様々な代替案を使用することができ、主題はこうした特定の詳細なしに実施され得ることが明らかであろう。例えば、当業者には、ここで提示される主題が、デジタルビデオ機能を備えた多くのタイプの電子デバイス上で実施され得ることが明らかであろう。
【0010】
明細書、本開示の特許請求の範囲、及び添付の図面で使用される「第1」、「第2」などの用語は、対象を区別するために使用され、特定の順序又はシーケンスを記述するために使用されるものではないことが説明されるべきである。このように使用されるデータは、適切な条件の下で交換可能であり、よって、ここに記載された本開示の実施形態は、添付の図面に示されもしくは本開示に説明された以外の順序で実施され得ることを理解されたい。
【0011】
現在のVVC規格及び第3世代オーディオビデオコーディング規格(AVS3)において、ビデオデコーダにおける現コーディングブロックの動き情報は、マージモード候補インデックスの形式で空間的又は時間的に隣接するブロックから継承されるか、あるいはビデオエンコーダから送信される推定動き情報の明示的シグナリングに基づいて導出される。しかし、推定された動き情報の明示的シグナリングは、シグナリングオーバーヘッドを生ずる可能性がある。他方、マージモード動きベクトル(MV)を適用することでシグナリングオーバーヘッドを削減できるが、マージモードMVは隣接ブロックからのみコピーされるため、精度が低いことがある。
【0012】
本開示に合致する、ビデオ処理システム及び方法は、VVCとAVS3の両規格で使用されるアフィン動き予測モードのための動きベクトル推定の精度を向上させるために、ここに開示される。双方向マッチングは、余分なシグナリングを必要としない動き精緻化方法であることから、ここに開示されるシステム及び方法は、アフィンマージモードのための動き情報の精度を向上させ、より高いコーディング効率を達成するために、双方向マッチングを適用することができる。例えば、様々なビデオコーディング技術(マージモード、アフィンモード、双方向マッチングなどを含む)を組み合わせて、ここに開示されたシステム及び方法に適用し、ブロックレベルとサブブロックレベルの両方で動き情報を強化できる。
【0013】
本開示に合致する、ここに開示されるシステム及び方法は、ビデオブロックの動き情報を精緻化するために双方向マッチングを適用することによって、アフィンマージモードを改善できる。具体的には、ここに開示されるシステム及び方法は、マージモードを使用してビデオブロックの初期動きベクトルを導出し、ビデオブロックのマッチング対象を決定し、ビデオブロックの精緻化された動きベクトルが得られるまで、初期動きベクトルを反復的に更新するために、ビデオブロックレベルで、双方向マッチングベースの動き精緻化処理を実行してもよい。例えば、双方向マッチング適用された場合、初期動きベクトルはまず開始点(例えば、開始動きベクトル)としてビデオブロックに関して導出され、次いで、最小マッチングコストで精緻化された動きベクトルを得るため、開始動きベクトルの反復的更新が行われる。最小マッチングコストの精緻化された動きベクトルを、ビデオブロックレベルでのビデオブロックの動きベクトルとして選択できる。続いて、ビデオブロックレベルで精緻化された動きベクトルを、アフィンモードにおいてサブブロックレベルでサブブロックの動き情報をさらに精緻化するための新しい開始点として使用できる。
【0014】
本開示に合致する、ここに記載されるアフィンマージモードは、マージモードとアフィンモードの組み合わせと呼ぶこともある。マージモードは、ビデオ圧縮で使用されるインターコーディングモードとすることができる。マージモードでは、符号化又は復号されている現ビデオブロックに対し、隣接するビデオブロックの動きベクトルが継承される。例えば、マージモードは、現ビデオブロックに、所定のネイバーの動きベクトルを継承させる。別の実施例では、インデックス値を使用して、現ビデオブロックがその動きベクトルを継承する特定のネイバーを識別してもよい。ネイバーは、同じビデオフレームに空間的に隣接するビデオブロック(例えば、上、右上、左、又は左下のビデオブロック)、又は時間的に隣接するビデオフレームと同じ場所にあるビデオブロックとすることができる。本開示に合致する、マージモードは、現ビデオブロックの初期動きベクトルを(例えば、動き精緻化の開始点として)決定するために使用できる。アフィンモードに関しては、アフィン動きモデルをインター予測に適用できる。
図5Aから
図5Bを参照して、アフィンモードを以下により詳細に説明する。
【0015】
本開示に合致する、VVC規格におけるアフィンモード設計は、本開示の説明を容易にするために、アフィン動き予測モードの例示的な実施として使用できる。ここに開示されるシステム及び方法は、同じ又は類似の設計精神を有するアフィン動き予測モード又は他のコーディングツールの異なる設計を適用することもできると考えられる。
【0016】
図1は、本開示の一部の実施による、ビデオブロックを並列に符号化及び復号するための例示的なシステム10を示すブロック図である。
図1に示されるように、システム10はソースデバイス12を含み、ソースデバイス12は、宛先デバイス14によって後に復号されるビデオデータを生成し、符号化する。ソースデバイス12及び宛先デバイス14としては、デスクトップ又はラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、表示装置、デジタルメディアプレーヤー、家庭用ゲーム機、ビデオストリーミング装置などを含む各種電子デバイスのいずれかが含まれ得る。一部の実装形態では、ソースデバイス12及び宛先デバイス14は、無線通信機能を備える。
【0017】
一部の実装形態では、宛先デバイス14は、復号されるべき符号化されたビデオデータを、リンク16を介して受信することができる。リンク16としては、符号化されたビデオデータをソースデバイス12から宛先デバイス14に転送することができる任意のタイプの通信媒体又はデバイスが含まれ得る。一実施例では、リンク16としては、ソースデバイス12が符号化されたビデオデータを宛先デバイス14に直接リアルタイムで送信することを可能とする通信媒体が含まれ得る。符号化されたビデオデータは、無線通信プロトコルのような通信規格に従って変調され、宛先デバイス14に送信されることができる。通信媒体としては、無線周波数(Radio Frequency:RF)スペクトル又は1つ又は複数の物理的な伝送線のような、任意の無線又は有線通信媒体が含まれ得る。通信媒体は、ローカルエリアネットワークやワイドエリアネットワークのようなパケットベースのネットワーク、あるいはインターネットのようなグローバルネットワークの一部を形成し得る。通信媒体としては、ルータ、スイッチ、基地局、又はソースデバイス12から宛先デバイス14への通信の促進に有用な任意の他の装置が含まれ得る。
【0018】
他の実装形態では、符号化されたビデオデータは、出力インタフェース22からストレージデバイス32に送信されてもよい。次いで、ストレージデバイス32内の符号化されたビデオデータは、入力インタフェース28を介して宛先デバイス14によってアクセスされてもよい。ストレージデバイス32としては、ハードドライブ、Blu-ray Disc(登録商標)、デジタル多用途ディスク(Digital Versatile Disc:DVD)、コンパクト・ディスク・リード・オンリー・メモリ(Compact Disc Read-Only Memories:CD-ROM)、フラッシュメモリ、揮発性もしくは不揮発性メモリ、符号化されたビデオデータを格納するための任意の他の適切なデジタル記憶媒体など、各種分散型もしくはローカルアクセス・データ記憶媒体のいずれかが含まれ得る。さらに別の実施例では、ストレージデバイス32は、ソースデバイス12により生成された符号化されたビデオデータを格納できるファイルサーバ又は別の中間ストレージデバイスに対応してもよい。宛先デバイス14は、ストリーミング又はダウンロードにより、格納されたビデオデータにストレージデバイス32からアクセスできる。ファイルサーバは、符号化されたビデオデータを格納し、符号化されたビデオデータを宛先デバイス14に送信することができる任意のタイプのコンピュータとすることができる。例示的なファイルサーバとして、ウェブサーバ(例えば、ウェブサイト用)、ファイル転送プロトコル(File Transfer Protocol:FTP)サーバ、ネットワークアタッチストレージ(Network Attached Storage:NAS)装置、又はローカルディスクドライブが挙げられる。宛先デバイス14は、無線チャネル(例えば、Wireless Fidelity(Wi-Fi)接続)、有線接続(例えば、Digital Subscriber Line(DSL)、ケーブルモデムなど)、又はファイルサーバに格納された符号化されたビデオデータにアクセスするのに適したこれらの任意の組み合わせを含む、任意の標準的なデータ接続を介して符号化されたビデオデータにアクセスできる。ストレージデバイス32からの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、又は両方の組み合わせとすることができる。
【0019】
図1に示されるように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、及び出力インタフェース22を含む。ビデオソース18としては、例えばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツ・プロバイダからビデオデータを受信するビデオフィード・インタフェース、及び/又はソースビデオとしてコンピュータグラフィックスデータを生成するコンピュータグラフィックスシステム、又はこれらのソースの組み合わせが含まれ得る。一実施例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソースデバイス12及び宛先デバイス14としては、カメラ電話又はテレビ電話が含まれ得る。しかしながら、本開示に記載される実施は、一般にビデオコーディングに適用可能であり、無線及び/又は有線の用途に適用可能である。
【0020】
キャプチャされた、プリキャプチャされた、又はコンピュータにより生成されたビデオは、ビデオエンコーダ20により符号化されることができる。符号化されたビデオデータは、ソースデバイス12の出力インタフェース22を介して宛先デバイス14に直接送信されてもよい。符号化されたビデオデータは、復号及び/又は再生のために、宛先デバイス14又は他の装置によって後にアクセスされるために、ストレージデバイス32に格納されてもよい。出力インタフェース22は、モデム及び/又は送信器をさらに含んでもよい。
【0021】
宛先デバイス14は、入力インタフェース28、ビデオデコーダ30、及び表示装置34を含む。入力インタフェース28は、受信器及び/又はモデムを含み、リンク16を介して符号化されたビデオデータを受信できる。リンク16を介して通信されるか、ストレージデバイス32上に提供される符号化されたビデオデータは、ビデオデコーダ30がビデオデータを復号する際に使用するためにビデオエンコーダ20によって生成される、各種シンタックス要素を含むことができる。こうしたシンタックス要素は符号化されたビデオデータ内に含まれて、通信媒体上で送信され、記憶媒体に格納され、又はファイルサーバ上に格納されることができる。
【0022】
一部の実装形態では、宛先デバイス14は表示装置34を含んでもよく、該表示装置34は、宛先デバイス14と一体形成された表示装置と、宛先デバイス14と通信するよう構成された外部表示装置であってもよい。表示装置34はユーザ向けに復号されたビデオデータを表示するもので、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は他のタイプの表示装置など各種表示装置のいずれかとすることができる。
【0023】
ビデオエンコーダ20及びビデオデコーダ30は、VVC、HEVC、MPEG-4、Part 10、AVC、又はこれらの規格の拡張などの独自規格又は業界規格に従って動作可能である。本開示は、特定のビデオ符号化/復号規格に限定されず、他のビデオ符号化/復号規格にも適用可能であることを理解されたい。ソースデバイス12のビデオエンコーダ20は、これらの現在又は将来の規格のいずれかに従ってビデオデータを符号化するよう構成可能であると一般に考えられる。同様に、宛先デバイス14のビデオデコーダ30は、これらの現在又は将来の規格のいずれかに従ってビデオデータを復号するよう構成可能であると一般に考えられる。
【0024】
ビデオエンコーダ20及びビデオデコーダ30は、それぞれ、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はこれらの任意の組み合わせなど、各種適切なエンコーダ及び/又はデコーダ回路のいずれかとして実装され得る。部分的にソフトウェアで実装される場合、電子デバイスはソフトウェア向けの命令を適切な非一時的なコンピュータ可読媒体に格納し、本開示で開示されるビデオ符号化/復号動作を実行するための1つ又は複数のプロセッサを使用して、該命令をハードウェアで実行してもよい。ビデオエンコーダ20及びビデオデコーダ30の各々は、1つ又は複数のエンコーダ又はデコーダに含まれてもよく、これらのエンコーダ又はデコーダのいずれかは、それぞれのデバイス内のコーデック(CODEC)の一部として統合されてもよい。
【0025】
図2は、本出願に記載された一部の実施による、例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ及びインター予測コーディングを実行することができる。イントラ予測コーディングは、空間予測に依存して、所与のビデオフレーム又はピクチャ内のビデオデータにおける空間冗長性を削減又は除去する。インター予測コーディングは、時間予測に依存して、ビデオシーケンスの隣接するビデオフレーム又はピクチャ内のビデオデータの時間冗長性を削減又は除去する。「フレーム」という用語は、ビデオコーディングの分野では「画像(image)」又は「ピクチャ」という用語の同義語として使用され得ることに留意されたい。
【0026】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号されたピクチャバッファ(Decoded Picture Buffer:DPB)64、サマー(summer)50、変換処理ユニット52、量子化ユニット54、及びエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、分割ユニット45、イントラ予測処理ユニット46、イントラブロックコピー(intra Block Copy(BC))ユニット48をさらに含む。一部の実装形態では、ビデオエンコーダ20は、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構築ためのサマー62をさらに含む。再構築されたビデオデータからブロックアーチファクトを除去するためにブロック境界をフィルタリングする、デブロッキングフィルタなどのインループフィルタ63をサマー62とDPB64との間に配置してもよい。SAOフィルタ及び/又は適応インループフィルタ(Adaptive in-Loop Filter:ALF)などの別のインループフィルタを、デブロッキングフィルタに加えて使用して、サマー62の出力をフィルタリングすることもできる。実施例によっては、インループフィルタを省略してもよく、復号されたビデオブロックは、サマー62によってDPB64に直接供給されてもよい。ビデオエンコーダ20は、固定又はプログラマブルハードウェアユニットの形態をとってもよく、あるいは図示された固定又はプログラマブルハードウェアユニットの1つ又は複数に分割されてもよい。
【0027】
ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを格納できる。ビデオデータメモリ40内のビデオデータは、例えば、
図1に示すように、ビデオソース18から取得されてもよい。DPB64は、ビデオエンコーダ20によって(例えばイントラ又はインター予測コーディングモードで)ビデオデータを符号化する際に使用される参照ビデオデータ(例えば、参照フレーム又はピクチャ)を格納するバッファである。ビデオデータメモリ40及びDPB64は、任意の各種メモリデバイスによって形成されてもよい。各種実施例において、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とオンチップであり、又はそれらの構成要素に対してオフチップであってもよい。
【0028】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。上記分割することは、ビデオデータに関連付けられたクワッドツリー(QT)構造などの予め定義された分割構造に従って、ビデオフレームをスライス、タイル(例えば、ビデオブロックのセット)、又は他のより大きなコーディングユニット(CU)に分割することをさらに含んでもよい。ビデオフレームは、サンプル値を有するサンプルの2次元アレイ又はマトリクスとみなされるか、又はみなされてもよい。アレイ中のサンプルは、画素又はペルとも呼ばれる。アレイ又はピクチャの水平方向及び垂直方向(又は軸)のサンプル数が、ビデオフレームのサイズ及び/又は解像度を定義する。ビデオフレームは、例えば、QT分割を用いて、複数のビデオブロックに分割され得る。ビデオブロックは、ビデオフレームよりも小さいサイズではあるが、サンプル値を有するサンプルの2次元アレイ又はマトリクスとみなされるか、又はみなされてもよい。ビデオブロックの水平方向及び垂直方向(又は軸)のサンプル数がビデオブロックのサイズを定義する。ビデオブロックは、例えば、QT分割、バイナリツリー(BT)分割、トリプルツリー(TT)分割、又はこれらの任意の組み合わせを反復的に使用して、1つ又は複数のブロック分割又はサブブロック(ブロックを再形成することができる)にさらに分割されてもよい。ここで使用される「ブロック」又は「ビデオブロック」という用語は、フレーム又はピクチャの一部、特に矩形(正方形又は非正方形)の部分であってもよいことに留意されたい。例えばHEVC及びVVCに関して、ブロック又はビデオブロックは、コーディングツリーユニット(Coding Tree Unit:CTU)、CU、予測ユニット(Prediction Unit:PU)、又は変換ユニット(Transform Unit:TU)であってもよく、及び/又は対応するブロック、例えばコーディングツリーブロック(Coding Tree Block:CTB)、コーディングブロック(Coding Block:CB)、予測ブロック(Prediction Block:PB)、又は変換ブロック(Transform Block:TB)であってもよく、又はこれらに対応していてもよい。代替として又は追加として、ブロック又はビデオブロックは、CTB、CB、PB、TBなどのサブブロックであってもよく、又はこれらに対応していてもよい。
【0029】
予測処理ユニット41は、誤差結果(例えば、コーディングレート及び歪みレベル)に基づいて、現ビデオブロックに関して、複数のイントラ予測コーディングモードのうちの1つ又は複数のインター予測コーディングモードのうちの1つなど、複数の予測コーディングモードのうちの1つを選択してもよい。予測処理ユニット41は、結果として得られるイントラ又はインター予測コード化ブロック(例えば、予測ブロック)を、サマー50に提供して残差ブロックを生成してもよく、またサマー62に提供して、その後参照フレームの一部として使用するためにコーディングブロックを再構築してもよい。予測処理ユニット41はまた、動きベクトル、イントラモードインジケータ、分割情報、及び他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に提供する。
【0030】
現ビデオブロックに対して適切なイントラ予測コーディングモードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、コード化される現ブロックと同じフレーム内の1つ又は複数の隣接ブロックに対して、現ビデオブロックのイントラ予測コーディングを実行し、空間予測を提供してもよい。予測処理ユニット41内の動き推定ユニット42及び動き補償ユニット44は、1つ又は複数の参照フレーム内の1つ又は複数の予測ブロックに対して、現ビデオブロックのインター予測コーディングを実行し、時間予測を提供する。ビデオエンコーダ20は、例えばビデオデータの各ブロックに対して適切なコーディングモードを選択するために、複数のコーディングパスを実行してもよい。
【0031】
一部の実装形態では、動き推定ユニット42は、一連のビデオフレーム内の所定のパターンに従って、参照フレーム内の予測ブロックに対する現ビデオフレーム内のビデオブロックの変位を示す動きベクトルを生成することによって、現ビデオフレームに関してのインター予測モードを決定する。動き推定ユニット42によって行われる動き推定は、動きベクトルを生成する処理であってもよく、これはビデオブロックの動きを推定するものであってもよい。例えば、動きベクトルは、参照フレーム内の予測ブロックに対する現ビデオフレーム又はピクチャ内のビデオブロックの変位を示すことができる。所定のパターンは、シーケンス内のビデオフレームをPフレーム又はBフレームとして指定できる。イントラBCユニット48は、動き推定ユニット42によるインター予測のための動きベクトルの決定と同様の方法で、イントラBCコーディングのためのベクトル、例えばブロックベクトルを決定することができ、また、ブロックベクトルを決定するために動き推定ユニット42を利用することもできる。
【0032】
ビデオブロックの予測ブロックは、画素差の点でコード化されるビデオブロックと高度にマッチングすると見なされる参照フレームのブロック又は参照ブロックであってもよく、又はそれに対応していてもよく、このことは絶対差の合計(Sum of Absolute Difference:SAD)、平方差の合計(Sum of Square Difference:SSD)、又は他の差分メトリックによって決定されてもよい。一部の実装形態では、ビデオエンコーダ20は、DPB64に格納された参照フレームのサブ整数の画素位置の値を計算できる。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間してもよい。したがって、動き推定ユニット42は、フルペル位置及び分数画素位置に対して動き探索を実行し、分数画素精度を有する動きベクトルを出力してもよい。
【0033】
動き推定ユニット42は、ビデオブロックの位置を、それぞれがDPB64に格納された1つ又は複数の参照フレームを識別する第1の参照フレームリスト(List0)又は第2の参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することによって、インター予測コード化フレーム内のビデオブロックの動きベクトルを計算する。動き推定ユニット42は、算出された動きベクトルを動き補償ユニット44に送信し、次いでエントロピー符号化ユニット56に送信する。
【0034】
動き補償ユニット44によって行われる動き補償は、動き推定ユニット42によって決定される動きベクトルに基づいて、予測ブロックをフェッチし又は生成することを含んでもよい。現ビデオブロックの動きベクトルを受信すると、動き補償ユニット44は、参照フレームリストの1つに動きベクトルが向けられるべき予測ブロックを見出し、予測ブロックをDPB64から検索し、予測ブロックをサマー50に前進させてもよい。次いで、サマー50は、コード化されている現ビデオブロックの画素値から、動き補償ユニット44によって提供される予測ブロックの画素値を差し引くことによって、画素差分値の残差ブロックを生成する。残差ブロックを生成する画素差分値は、輝度又は彩度差成分、又はその両方を含んでもよい。また、動き補償ユニット44は、ビデオデコーダ30がビデオフレームのビデオブロックを復号する際に使用するために、ビデオフレームのビデオブロックに関連付けられたシンタックス要素を生成してもよい。シンタックス要素は、例えば、予測ブロックを識別するために使用される動きベクトルを定義するシンタックス要素、予測モードを示す任意のフラグ、又はここに記載される任意の他のシンタックス情報を含むことができる。
図2では概念的な目的のために別々に図示されている動き推定ユニット42及び動き補償ユニット44は、一体形成されていてもよいことに留意されたい。
【0035】
一部の実装形態では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44に関連して上述した方法と同様の方法でベクトルを生成し、予測ブロックをフェッチすることができるが、ここでは予測ブロックはコード化されている現ブロックと同じフレーム内にあり、ベクトルは動きベクトルとは対照的にブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現ブロックを符号化するために使用するイントラ予測モードを決定してもよい。いくつかの実施例では、イントラBCユニット48は、例えば別々の符号化パスの間に、様々なイントラ予測モードを使用して現ブロックを符号化し、レート歪み分析を通してそれらの性能をテストしてもよい。次いで、イントラBCユニット48は、各種テストされたイントラ予測モードの中から使用する適切なイントラ予測モードを選択し、それに従ってイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、各種テストされたイントラ予測モードに関するレート歪み分析を用いてレート歪み値を計算し、テストされたモードの中から、使用する適切なイントラ予測モードとして最適レート歪み特性を有するイントラ予測モードを選択することができる。レート歪み分析は、一般に、符号化されたブロックと、その符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、並びに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラBCユニット48は、種々の符号化されたブロックの歪みとレートから比率を計算し、どのイントラ予測モードがブロックに対して最適レート歪み値を示すかを決定してもよい。
【0036】
他の実施例では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44を全体的又は部分的に使用して、ここに記載された実施に従って、イントラBC予測のためのこうした機能を実行してもよい。いずれの場合にも、イントラブロックコピーについては、予測ブロックは、SAD、SSD、又は他の差分メトリックによって決定され得る画素差分に関して、コード化されるブロックと高度にマッチングするとみなされるブロックであってもよく、予測ブロックの識別は、サブ整数の画素位置の値の計算を含んでもよい。
【0037】
予測ブロックが、イントラ予測による同じフレームからであるか、又はインター予測による異なるフレームからであるかにかかわらず、ビデオエンコーダ20は、コード化されている現ビデオブロックの画素値から予測ブロックの画素値を差し引くことにより、残差ブロックを生成し、画素差分値を形成できる。残差ブロックを生成する画素差分値は、輝度成分と彩度成分の差分の両方を含んでもよい。
【0038】
イントラ予測処理ユニット46は、上述したように、動き推定ユニット42及び動き補償ユニット44により行われるインター予測、又はイントラBCユニット48により行われるイントラブロックコピー予測に代わるものとして、現ビデオブロックをイントラ予測してもよい。特に、イントラ予測処理ユニット46は、現ブロックを符号化するために使用するイントラ予測モードを決定してもよい。例えば、イントラ予測処理ユニット46は、各種イントラ予測モードを使用して、例えば、別々の符号化パスの間に、現ブロックを符号化してもよく、イントラ予測処理ユニット46(又はいくつかの実施例では、モード選択ユニット)は、テストされたイントラ予測モードから使用する適切なイントラ予測モードを選択してもよい。イントラ予測処理ユニット46は、該ブロックに関する選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してもよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームで符号化してもよい。
【0039】
予測処理ユニット41がインター予測又はイントラ予測のいずれかによって現ビデオブロックの予測ブロックを決定した後、現ビデオブロックから予測ブロックを差し引くことによって、サマー50が残差ブロックを生成する。残差ブロック内の残差ビデオデータは、1つ又は複数のTUに含まれてもよく、変換処理ユニット52に提供される。変換処理ユニット52は、離散コサイン変換(Discrete Cosine Transform:DCT)や概念的に類似する変換などの変換を用いて、残差ビデオデータを変換係数に変換する。
【0040】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送信してもよい。量子化ユニット54は、ビットレートをさらに低下させるために変換係数を量子化する。量子化処理は、係数の一部又はすべてに関連するビット深度を低下させてもよい。量子化の程度は、量子化パラメータを調整することによって修正できる。いくつかの実施例では、量子化ユニット54は、次いで、量子化変換係数を含むマトリクスのスキャンを実行してもよい。あるいは、エントロピー符号化ユニット56がスキャンを実行してもよい。
【0041】
量子化に続いて、エントロピー符号化ユニット56は、例えば、コンテキスト適応型可変長符号化(Context Adaptive Variable Length Coding:CAVLC)、コンテキスト適応型バイナリ算術コーディング(Context Adaptive Binary Arithmetic Coding:CABAC)、構文ベースのコンテキスト適応型バイナリ算術コーディング(Syntax-based context-adaptive Binary Arithmetic Coding:SBAC)、確率区間分割エントロピー(Probability Interval Partitioning Entropy:PIPE)コーディング、又は別のエントロピー符号化技法もしくは技術を使用して、量子化変換係数をビデオビットストリームに符号化するためにエントロピー符号化技法を使用できる。符号化されたビットストリームは、次いで、
図1に示されるようにビデオデコーダ30に送信されてもよく、あるいは、後にビデオデコーダ30への送信又はビデオデコーダ30による検索のために、
図1に示されるようにストレージデバイス32にアーカイブされてもよい。エントロピー符号化ユニット56はまた、エントロピー符号化技法を使用して、コード化されている現ビデオフレームの動きベクトルと他のシンタックス要素を符号化してもよい。
【0042】
逆量子化ユニット58及び逆変換処理ユニット60は、それぞれ逆量子化及び逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するために、画素領域内の残差ブロックを再構築する。再構築された残差ブロックは生成されてもよい。上述したように、動き補償ユニット44は、DPB64に格納されたフレームの1つ又は複数の参照ブロックから動き補償予測ブロックを生成できる。動き補償ユニット44はまた、1つ又は複数の補間フィルタを予測ブロックに適用して、動き推定に使用するサブ整数の画素値を計算できる。
【0043】
サマー62は、再構築された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに追加し、DPB64に格納するための参照ブロックを生成する。次いで、参照ブロックは、イントラBCユニット48、動き推定ユニット42、及び動き補償ユニット44によって、予測ブロックとして使用され、後続ビデオフレーム内の別のビデオブロックをインター予測してもよい。
【0044】
図3は、本出願の一部の実施による、例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、サマー90、及びDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84、イントラBCユニット85をさらに含む。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20について上述した符号化処理に概ね逆行する復号処理を実行できる。例えば、動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトルに基づいて予測データを生成でき、一方、イントラ予測ユニット84は、エントロピー復号ユニット80から受信したイントラ予測モードインジケータに基づいて予測データを生成できる。
【0045】
いくつかの実施例では、ビデオデコーダ30のユニットは、本出願の実施を実行するためにタスクを課されてもよい。また、いくつかの実施例では、本開示の実施は、ビデオデコーダ30の1つ又は複数のユニットに分割されてもよい。例えば、イントラBCユニット85は、本出願の実施を、単独で、又は動き補償ユニット82、イントラ予測ユニット84、及びエントロピー復号ユニット80などのビデオデコーダ30の他のユニットとの組み合わせで、実行できる。いくつかの実施例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他の構成要素によって実行されてもよい。
【0046】
ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素によって復号される、符号化されたビデオビットストリームなどのビデオデータを格納できる。ビデオデータメモリ79に格納されるビデオデータは、例えば、ストレージデバイス32から取得されてもよく、ビデオデータの有線又は無線ネットワーク通信を通じてカメラなどのローカルビデオソースから取得されてもよく、又は物理データ記憶媒体(例えばフラッシュドライブやハードディスク)にアクセスすることによって取得されてもよい。ビデオデータメモリ79は、符号化されたビデオビットストリームから、符号化されたビデオデータを格納する符号化ピクチャバッファ(Coded Picture Buffer:CPB)を含んでもよい。ビデオデコーダ30のDPB92は、ビデオデコーダ30によるビデオデータへの復号(例えば、イントラ又はインター予測コーディングモードで)において使用するための参照ビデオデータを格納する。ビデオデータメモリ79及びDPB92は、ダイナミックランダムアクセスメモリ(DRAM)(シンクロナスDRAM(SDRAM)を含む)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM)、又は他のタイプのメモリデバイスなどの任意の各種メモリデバイスによって形成されてもよい。説明のために、ビデオデータメモリ79及びDPB92は、
図3において、ビデオデコーダ30の2つの別個の構成要素として示される。しかし、当業者にとって、ビデオデータメモリ79とDPB92とが同一メモリデバイス又は別個のメモリデバイスによって提供され得ることは明らかである。いくつかの実施例では、ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素とオンチップであり、又はそれらの構成要素に対してオフチップであってもよい。
【0047】
復号処理中に、ビデオデコーダ30は、符号化されたビデオフレームのビデオブロック及び関連付けられたシンタックス要素を表現する符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベル及び/又はビデオブロックレベルでシンタックス要素を受信できる。ビデオデコーダ30のエントロピー復号ユニット80は、エントロピー復号技術を使用してビットストリームを復号し、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を取得できる。エントロピー復号ユニット80は、次いで、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を予測処理ユニット81に転送する。
【0048】
ビデオフレームがイントラ予測コード化(例えばI)フレームとしてコード化され、又は他のタイプのフレーム内のイントラコーディング予測ブロックについてコーディングされる場合、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モード及び現フレームの前に復号されたブロックからの参照データに基づき、現ビデオフレームのビデオブロックの予測データを生成できる。
【0049】
ビデオフレームがインター予測コード化(すなわち、B又はP)フレームとしてコード化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトル及び他のシンタックス要素に基づいて、現ビデオフレームのビデオブロックのための1つ又は複数の予測ブロックを生成する。予測ブロックの各々は、参照フレームリストの1つ内の参照フレームから生成されてもよい。ビデオデコーダ30は、DPB92に格納された参照フレームに基づきデフォルトの構築技術を使用して、List0及びList1などの参照フレームリストを構築できる。
【0050】
いくつかの実施例では、ビデオブロックがここに記載されたイントラBCモードに従ってコード化される場合、予測処理ユニット81のイントラBCユニット85は、ブロックベクトル、及びエントロピー復号ユニット80から受信した他のシンタックス要素に基づいて現ビデオブロックの予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって処理された現ビデオブロックと同じピクチャの再構築された領域内にあってもよい。
【0051】
動き補償ユニット82及び/又はイントラBCユニット85は、動きベクトル及び他のシンタックス要素を解析することによって現ビデオフレームのビデオブロックの予測情報を決定し、次いで予測情報を使用して、復号されている現ビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、受信したシンタックス要素のいくつかを使用して、ビデオフレームのビデオブロックをコーディングするために使用される予測モード(例えば、イントラ又はインター予測)、インター予測フレームタイプ(例えば、B又はP)、フレームの1つ又は複数の参照フレームリストの構築情報、フレームの各インター予測符号化されたビデオブロックの動きベクトル、フレームの各インター予測コード化ビデオブロックのインター予測ステータス、及び他の情報を決定して、現ビデオフレームにおけるビデオブロックを復号する。
【0052】
同様に、イントラBCユニット85は、受信したシンタックス要素のいくつか、例えばフラグを使用して、現ビデオブロックがイントラBCモード、フレームのビデオブロックが再構築領域内にあり、DPB92に格納されるべき構築情報、フレームの各イントラBC予測ビデオブロックのブロックベクトル、フレームの各イントラBC予測ビデオブロックのイントラBC予測ステータス、及び他の情報を使用して予測されたことを決定し、現ビデオフレームにおけるビデオブロックを復号してもよい。
【0053】
動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して補間を実行し、参照ブロックのサブ整数画素のための補間値を計算してもよい。この場合、動き補償ユニット82は、受信したシンタックス要素からビデオエンコーダ20によって使用される補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成できる。
【0054】
逆量子化ユニット86は、量子化の程度を決定するためにビデオフレーム内の各ビデオブロックに対してビデオエンコーダ20によって計算されたものと同じ量子化パラメータを使用して、ビットストリームで提供されかつエントロピー復号ユニット80によってエントロピー復号される量子化変換係数を逆量子化する。逆変換処理ユニット88は、画素ドメインにおいて残差ブロックを再構築するために、逆変換、例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換処理を変換係数に適用する。
【0055】
動き補償ユニット82又はイントラBCユニット85がベクトル及び他のシンタックス要素に基づいて現ビデオブロックの予測ブロックを生成した後、サマー90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82とイントラBCユニット85によって生成された対応する予測ブロックとを合計することによって、現ビデオブロックの復号されたビデオブロックを再構築する。復号されたビデオブロックは、現ビデオブロックの再構築ブロックとも呼ばれる。デブロッキングフィルタ、SAOフィルタ、及び/又はALFなどのインループフィルタ91は、サマー90とDPB92との間に位置して、復号されたビデオブロックをさらに処理してもよい。実施例によっては、インループフィルタ91を省略してもよく、復号されたビデオブロックは、サマー90によってDPB92に直接供給されてもよい。所与のフレーム内の復号されたビデオブロックが次いでDPB92に格納され、DPB92は、次のビデオブロックの後続の動き補償に使用される参照フレームを格納する。DPB92、又はDPB92とは別のメモリデバイスは、後で
図1の表示装置34などの表示装置上で提示するために、復号されたビデオを格納してもよい。
【0056】
典型的なビデオコーディング処理(例えば、ビデオ符号化処理及びビデオ復号処理を含む)では、ビデオシーケンスは、典型的には、順序付けられたフレーム又はピクチャのセットを含む。各フレームは、SL、SCb、及びSCrで表示される3つのサンプルアレイを含むことができる。SLは輝度サンプルの2次元アレイである。SCbはCb彩度サンプルの2次元アレイである。SCrはCr彩度サンプルの2次元アレイである。他の例では、フレームは単彩度であってもよく、したがって輝度サンプルの1つの2次元アレイのみを含む。
【0057】
図4Aに示されるように、ビデオエンコーダ20(又はより具体的には、分割ユニット45)は、最初にフレームを一組のCTUに分割することによって、フレームの符号化された表現を生成する。ビデオフレームは、左から右、上から下にラスタスキャン順に連続して配列された整数個のCTUを含むことができる。各CTUは最大のロジカルコーディングユニットであり、CTUの幅さ及び高さは、ビデオシーケンス内のすべてのCTUが128×128、64×64、32×32、16×16の1つとなる同一サイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかしながら、本開示におけるCTUは必ずしも特定のサイズに限定されないことに留意されたい。
図4Bに示されるように、各CTUは、1つの輝度サンプルのCTB、2つの彩度サンプルの対応するコーディングツリーブロック、及び該コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス要素を含んでもよい。シンタックス要素は、コード化された画素ブロックの異なるタイプのユニットのプロパティ、及びどのようにビデオデコーダ30でビデオシーケンスを再構築できるかを記述するもので、インター又はイントラ予測、イントラ予測モード、動きベクトル、及び他のパラメータを含む。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス要素とを含んでもよい。コーディングツリーブロックは、N×Nブロックのサンプルであってもよい。
【0058】
より良い性能を実現するため、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対してバイナリツリー分割、ターナリツリー分割、クワッドツリー分割、又はこれらの組み合わせなどのツリー分割を再帰的に実行し、CTUをより小さいCUに分割してもよい。
図4Cに示されるように、64×64のCTU400は最初に4つのより小さいCUに分割され、各々のより小さいCUは32×32のブロックサイズを有する。4つのより小さいCUの中で、CU410とCU420は、それぞれ4つの16×16ブロックサイズのCUに分割される。2つの16×16のCU430と440は、それぞれ4つの8×8ブロックサイズのCUにさらに分割される。
図4Dは、
図4Cに示されるようなCTU400の分割処理の最終結果を示すクワッドツリーデータ構造を示し、クワッドツリーの各リーフノードは、32×32から8×8までのそれぞれのサイズの1つのCUに対応する。
図4Bに示されるCTUと同様に、各CUは、輝度サンプルのCBと、2つの同じサイズのフレームの彩度サンプルの対応するコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス要素とを含んでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを含んでもよい。
図4C及び4Dに示されるクワッドツリー分割は説明のみを目的としており、1つのCTUを複数のCUに分割して、クワッド/ターナリ/バイナリツリー分割に基づいてさまざまな局所特性に適応させることができることに留意されたい。マルチタイプツリー構造では、1つのCTUがクワッドツリー構造によって分割され、各クワッドツリーのリーフCUは、バイナリ及びターナリツリー構造によってさらに分割されてもよい。
図4Eに示されるように、幅W及び高さHを有するコーディングブロックの複数の可能な分割タイプ、すなわち、四分割、垂直二分割、水平二分割、垂直三分割、垂直拡張三分割、水平三分割、水平拡張三分割がある。
【0059】
一部の実装形態では、ビデオエンコーダ20は、CUのコーディングブロックを1つ又は複数のM×NのPBにさらに分割できる。PBは、同じインター又はイントラ予測が適用される長方形(正方形又は非正方形)のサンプルのブロックである。CUのPUは、輝度サンプルのPB、2つの彩度サンプルの対応するPB、及びPBを予測するために使用されるシンタックス要素を含んでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、PUは、単一のPBと、PBを予測するために使用されるシンタックス構造とを含んでもよい。ビデオエンコーダ20は、CUの各PUの輝度、Cb及びCrのPBについて予測の輝度、Cb、及びCrブロックを生成できる。
【0060】
ビデオエンコーダ20は、イントラ予測又はインター予測を使用して、PUの予測ブロックを生成できる。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成できる。ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレーム以外の1つ又は複数のフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成できる。
【0061】
ビデオエンコーダ20が、CUの1つ又は複数のPUのための予測の輝度、Cb、及びCrブロックを生成した後、ビデオエンコーダ20は、CUの元の輝度コーディングブロックからその予測輝度ブロックを差し引くことによって、CUの輝度残差ブロックを生成することができ、これによってCUの輝度残差ブロックの各サンプルは、CUの予測輝度ブロックの1つにおける輝度サンプルと、CUの元の輝度コーディングブロックにおける対応のサンプルとの間の差を示す。同様に、ビデオエンコーダ20は、CUのCb残差ブロック及びCr残差ブロックをそれぞれ生成することができ、これによってCUのCb残差ブロックの各サンプルは、CUの予測Cbブロックの1つにおけるCbサンプルとCUの元のCbコーディングブロックにおける対応するサンプルとの間の差を示し、CUのCr残差ブロックの各サンプルは、CUの予測Crブロックの1つにおけるCrサンプルとCUの元のCrコーディングブロックにおける対応するサンプルとの間の差を示し得る。
【0062】
さらに、
図4Cに示されるように、ビデオエンコーダ20は、クワッドツリー分割を使用して、CUの輝度、Cb、及びCrの残差ブロックを1つ又は複数の輝度、Cb、及びCrの変換ブロックに分解できる。変換ブロックは、同じ変換が適用される長方形(正方形又は非正方形)のサンプルのブロックを含んでもよい。CUのTUは、輝度サンプルの変換ブロック、2つの彩度サンプルの対応する変換ブロック、及び変換ブロックサンプルを変換するために使用されるシンタックス要素を含んでもよい。よって、CUの各TUは、輝度変換ブロック、Cb変換ブロック、及びCr変換ブロックに関連付けられてもよい。いくつかの実施例では、TUに関連付けられた輝度変換ブロックは、CUの輝度残差ブロックのサブブロックでもよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックでもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックでもよい。単彩度ピクチャ又は3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを含んでもよい。
【0063】
ビデオエンコーダ20は、1つ又は複数の変換をTUの輝度変換ブロックに適用して、TUの輝度係数ブロックを生成できる。係数ブロックは、変換係数の2次元アレイであってもよい。変換係数はスカラ量であってもよい。ビデオエンコーダ20は、1つ又は複数の変換をTUのCb変換ブロックに適用して、TUのCb係数ブロックを生成できる。ビデオエンコーダ20は、1つ又は複数の変換をTUのCr変換ブロックに適用して、TUのCr係数ブロックを生成できる。
【0064】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロック又はCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化できる。量子化とは、一般に、変換係数を表すために使用されるデータ量を最小限に抑えるために変換係数を量子化し、さらなる圧縮を提供する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素を符号化するためにエントロピー符号化技法を適用できる。例えば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してCABACを実行できる。最後に、ビデオエンコーダ20は、コード化されたフレーム及び関連付けられたデータの表現を形成するビットのシーケンスを含むビットストリームを出力することができ、該ビットストリームはストレージデバイス32に保存され、又は宛先デバイス14に送信される。
【0065】
ビデオエンコーダ20によって生成されたビットストリームを受信した後、ビデオデコーダ30はビットストリームを解析し、ビットストリームからシンタックス要素を取得できる。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構築できる。ビデオデータを再構築する処理は、ビデオエンコーダ20によって実行される符号化処理に概ね逆行する。例えば、ビデオデコーダ30は、現CUのTUに関連付けられた係数ブロックに対して逆変換を実行して、現CUのTUに関連付けられた残差ブロックを再構築できる。ビデオデコーダ30は、さらに現CUのPUの予測ブロックのサンプルを現CUのTUの変換ブロックの対応するサンプルに加算することによって、現CUのコーディングブロックを再構築する。フレームの各CUのコーディングブロックを再構築した後、ビデオデコーダ30は、フレームを再構築できる。
【0066】
上記のように、ビデオコーディングは、主に2つのモード、すなわち、フレーム内予測(又はイントラ予測)及びフレーム間予測(又はインター予測)を使用してビデオ圧縮を実現する。イントラブロックコピー(IBC)は、フレーム内予測又は第3モードのいずれかと見なすことができることに留意されたい。2つのモードの間で、フレーム間予測は、参照ビデオブロックから現ビデオブロックを予測するための動きベクトルを使用することから、フレーム内予測よりもコーディング効率に貢献する。
【0067】
しかし、ビデオデータキャプチャ技術が改善され、ビデオデータの詳細を保持するためのビデオブロックサイズが緻密化されるにつれて、現フレームの動きベクトルを表現するために必要なデータ量は大幅に増加している。この課題を克服する1つの方法は、空間的及び時間的ドメインの両方における隣接CUのグループが、予測目的で類似のビデオデータを有するだけでなく、これらの隣接CU間の動きベクトルも類似しているという事実から利益を得ることである。したがって、現CUの「動きベクトル予測子(Motion Vector Predictor:MVP)」とも呼ばれる、空間的に隣接するCU及び/又は時間的に同じ場所にあるCUの動き情報を、その空間的及び時間的相関を探索することにより、現CUの動き情報(例えば、動きベクトル)の近似として使用することができる。
【0068】
現CUの実際の動きベクトルをビデオビットストリームに符号化する代わりに(例えば、
図2に関連して上述したように、実際の動きベクトルが動き推定ユニット42によって決定される)、現CUの動きベクトル予測子は、現CUの実際の動きベクトルから減算され、現CUの動きベクトル差分(Motion Vector Difference:MVD)を生成する。そうすることにより、フレームの各CUに対して動き推定ユニット42によって決定された動きベクトルをビデオビットストリームに符号化する必要がなくなり、ビデオビットストリーム内の動き情報を表現するために使用されるデータ量を大幅に減少させることができる。
【0069】
コードブロックのフレーム間予測中に参照フレーム内の予測ブロックを選択する処理と同様に、一連のルールは、現CUと空間的に隣接するCU及び/又は時間的に同じ場所にあるCUに関連する潜在的な候補動きベクトルを使用して、現CUの動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構築し、次いで現CUの動きベクトル予測子として動きベクトル候補リストから1つのメンバーを選択するために、ビデオエンコーダ20及びビデオデコーダ30の両方によって採用されることができる。そうすることにより、動きベクトル候補リスト自体をビデオエンコーダ20からビデオデコーダ30に送信する必要がなくなり、動きベクトル候補リスト内の選択された動きベクトル予測子のインデックスは、ビデオエンコーダ20及びビデオデコーダ30が、現CUを符号化及び復号するために、動きベクトル候補リスト内の同じ動きベクトル予測子を使用するのに十分である。したがって、選択された動きベクトル予測子のインデックスのみがビデオエンコーダ20からビデオデコーダ30に送られる必要がある。
【0070】
アフィンモードに関する簡単な説明は、
図5Aから
図5Bを参照して本明細書に提供される。HEVCでは、平行移動動きモデルのみが動き補償予測に適用される。現実世界では、ズームイン、ズームアウト、回転、遠近動き、及び他の不規則的な動きなどの様々な種類の動きが存在し得るが、VVC及びAVS3規格において、アフィン動き補償予測は、平行移動動きモデル又はアフィン動きモデルがインター予測に適用されるか否かを示すため、インターコーディングブロックごとにフラグをシグナリングすることで適用され得る。一部の実装形態では、2つのアフィンモード(例えば、
図5Aに示す4パラメータアフィン動きモデル又は
図5Bに示す6パラメータアフィン動きモデル)のうちの1つが選択され、アフィンコード化ビデオブロックに適用されてもよい。
【0071】
図5Aに示す4パラメータアフィン動きモデルは、以下のアフィンパラメータを含む:すなわち、水平方向と垂直方向のそれぞれの平行移動のための2つのパラメータと、ズーム動きのための1つのパラメータ、及び水平方向と垂直方向の両方の回転動きのための1つのパラメータである。このモデルでは、水平ズームパラメータを垂直ズームパラメータと、水平回転パラメータを垂直回転パラメータと等価とすることができる。動きベクトルとアフィンパラメータのより良い適応を達成するため、このモデルのアフィンパラメータは、現ビデオブロックの2つの制御点(例えば、左上隅と右上隅)に位置する2つの動きベクトル(制御点動きベクトル(CPMV)と呼ばれる)でコード化できる。
図5Aに示されるように、ビデオブロックのアフィン動きフィールド(例えば、ビデオブロックの動きベクトル)は、2つのCPMV、V
0及びV1によって記述できる。制御点動きに基づいて、ビデオブロック内の位置(x,y)を持つアフィンコード化サブブロックの動きフィールドは、以下の式(1)で導出できる。
【数1】
【0072】
式(1)において、vx及びvyは、アフィンコード化サブブロックの動きベクトルのそれぞれ(x,y)位置におけるx成分及びy成分を表す。wは、ビデオブロックの幅を表す。v0x及びv0yは、それぞれCPMV V0のx成分及びy成分を表す。v1x及びv1yは、それぞれCPMV V1のx成分及びy成分を表す。
【0073】
図5Bに示される6パラメータアフィン動きモデルは、以下のアフィンパラメータ、すなわち、それぞれ水平方向及び垂直方向における平行移動のための2つのパラメータと、水平方向におけるズーム動きと回転動きのための2つのパラメータと、垂直方向におけるズーム動きと回転動きのためのさらに2つのパラメータを有する。6パラメータアフィン動きモデルは、3つの制御点において3つのCPMVでコード化され得る。
図5Bに示すように、6パラメータアフィンビデオブロックの3つの制御点は、ビデオブロックの左上隅、右上隅、及び左下隅にあり、CPMVのV
0、V
1、V
2と関連付けられる。左上の制御点における動きは平行移動に関連し、右上の制御点における動きは水平方向での回転動き及びズーム動きに関連し、左下の制御点における動きは垂直方向の回転動き及びズーム動きに関連する。4パラメータアフィン動きモデルと比較して、6パラメータアフィン動きモデルの水平方向での回転動き及びズーム動きは、垂直方向での回転動き及びズーム動きと同じではない場合がある。ビデオブロックの位置(x,y)にある各サブブロックの動きベクトル(v
x,v
y)は、3つの制御点で3つのCPMVを使用して次のように導出できる。
【数2】
【0074】
式(2)において、vx及びvyは、アフィンコード化サブブロックの動きベクトルのそれぞれ(x,y)位置におけるx成分及びy成分を表す。w及びhはビデオブロックの幅及び高さである。v0x及びv0yは、それぞれCPMV V0のx成分及びy成分を表す。v1x及びv1yは、それぞれCPMV V1のx成分及びy成分を表す。v2x及びv2yは、それぞれCPMV V2のx成分及びy成分を表す。
【0075】
図6は、本開示の一部の実施による、例示的な双方向マッチングを示す図解である。ビデオコーディングの領域では、双方向マッチングは、現在コード化されているビデオブロックの動き情報がデコーダ側にシグナリングされず、デコーダ側で導出される技術である。動き導出処理に双方向マッチングを使用する場合、最初にビデオブロック全体に対して初期動きベクトルを導出できる。具体的には、ビデオブロックのマージリストをチェックすることができ、マージリスト内のすべての候補動きベクトル間の最小マッチングコストにつながるマージリストからの候補動きベクトルを開始点として選択できる。次に、探索範囲内の開始点を中心とする局所探索を実行し、探索範囲内で最小マッチングコストとなる動きベクトルを、ビデオブロック全体の動きベクトルとすることができる。続いて、ビデオブロック全体の動きベクトルを新たな開始点として使用して、動き情報をサブブロックレベルでさらに精緻化できる。例えば、複数のCPMVをビデオブロック全体に対して導出することができ、次いで、上記式(1)又は(2)に基づいて、ビデオブロックレベルでCPMVを適用することによって、サブブロックレベルでの動きベクトルを導出できる。
【0076】
図6に示されるように、2つの異なる参照フレームからビデオブロックの動き軌道に沿って2つのベストマッチ参照ブロック604、606を見つけることによって、双方向マッチングを使用してビデオフレーム内のビデオブロック602の動き情報を導出することができる。連続する動きの軌跡を仮定すると、2つの参照ブロック604、606を指す動きベクトルMV0及びMV1は、ビデオフレーム(例えば、TD0及びTD1)に対する参照フレームの時間的距離にそれぞれ比例し得る。特別なケースとして、ビデオフレームが時間的に2つの参照フレームの間にあり、ビデオフレームから2つの参照フレームまでの時間的距離が同じである場合(例えば、TD0=TD1)、双方向マッチングから導出された動きベクトルは、ミラーベースの双方向動きベクトルになる。
【0077】
図7は、本開示の一部の実施による、アフィン動き補償のための、双方向マッチングによる動き精緻化のための例示的処理700を示すブロック図である。一部の実装形態では、処理700は、ビデオエンコーダ20の予測処理ユニット41(例えば、動き推定ユニット42、動き補償ユニット44などを含む)、又はビデオデコーダ30の予測処理ユニット81(例えば、動き補償ユニット82を含む)によって実行され得る。一部の実装形態では、処理700は、エンコーダ側又はデコーダ側でビデオプロセッサ(例えば、
図11に示されるようなプロセッサ1120)によって実行され得る。あくまで説明の目的で、処理700の以下の説明は、ビデオプロセッサに関して提供される。
【0078】
ビデオのビデオフレームからビデオブロックを符号化又は復号するために、ビデオプロセッサは、初期動きベクトル推定702を実行して、ビデオブロックに関する初期動きベクトル704を生成してもよい。例えば、ビデオプロセッサは、ビデオブロックのマージリストに基づいて、ビデオブロックに関する初期動きベクトル704を決定できる。具体的には、ビデオブロックのマージリストをチェックすることができ、マージリスト内のすべての候補動きベクトル間の最小マッチングコストにつながるマージリストからの候補動きベクトルを初期動きベクトル704として選択できる。
【0079】
ビデオプロセッサは、ビデオブロックの精緻化された動きベクトル714が得られるまで、初期動きベクトル704を反復的に更新するために、ビデオブロックレベルで、双方向マッチングベースの動き精緻化処理706を実行してもよい。初期動きベクトル704は、双方向マッチングベースの動き精緻化処理706の開始点(例えば、開始動きベクトル)として使用できる。開始動きベクトルの周りの反復更新が実行されるとき、ビデオブロックの現予測とマッチング対象との間のマッチングコスト(例えば、双方向マッチングコスト)を反復的に計算して、ビデオブロックの開始動きベクトルの漸進的更新をガイドできる。一部の実装形態では、ビデオブロックの現予測とマッチング対象との間のマッチングコストを、マッチングコスト関数に基づいて計算できる。マッチングコスト関数は、絶対差の合計(Sum of Absolute Difference:SAD)、SADを除去した平均値(Mean Removed SAD:MRSAD)、平方差の合計(Sum of Square Difference:SSD)、又はビデオブロックの現予測とマッチング対象との間のその他の適切な差分メトリックとすることができる。
【0080】
ビデオブロックがアフィンモードでコード化される場合、初期動きベクトル704は、ビデオブロックの1つ又は複数の制御点に1つ又は複数の初期CPMVを含んでもよい。精緻化された動きベクトル714は、1つ又は複数の制御点において、1つ又は複数の精緻化されたCPMVを含んでもよい。
【0081】
まず、双方向マッチングベースの動き精緻化処理706で、ビデオプロセッサは、マッチング対象決定動作708を実行して、動き情報の反復更新のためのマッチング対象を決定してもよい。例えば、
図8を参照すると、ビデオプロセッサは、初期動きベクトル704に基づいて、それぞれビデオの第1の参照フレーム802及び第2の参照フレーム804から、第1の参照ブロックRef0及び第2の参照ブロックRef1を決定してもよい。ビデオプロセッサは、第1の参照ブロックRef0と第2の参照ブロックRef1の加重組み合わせに基づいて、マッチング対象を決定してもよい。例えば、マッチング対象は、Ref0とRef1の加重和に等しくてもよい(例えば、マッチング対象=w0*Ref0+w1*Ref1、ここで、w0とw1はそれぞれRef0とRef1の重みを示す)。
【0082】
一部の実装形態では、ここに開示されるインターコーディングモード(例えば、マージモード)は、参照フレームの2つの異なるリスト(例えば、List0及びList1)が、ビデオブロックの2つの予測を識別するために使用されることを示す、双方向予測であってもよい。例えば、List0はビデオブロックに先行する参照フレームのリストを含んでもよく、List1はビデオブロックに続く参照フレームのリストを含んでもよい。Ref0は、初期動きベクトル704に基づく第1の参照フレーム802からのList0予測であってもよい。Ref1は、初期動きベクトル704に基づく第2の参照フレーム804からのList1予測であってもよい。マッチング対象は、初期動きベクトル704に基づいて導出されたList0予測及びList1予測の加重和であってもよい。
【0083】
あるいは、マッチング対象は、List0及びList1予測の加重組み合わせに、List0予測及びList1予測に関連付けられた対応する予測残差を加えたものとすることもできる。この場合、マッチング対象は、List0再構築とList1再構築の加重組み合わせとすることができる。例えば、List0再構築=List0予測+List0予測残差、List1再構築=List1予測+List1予測残差、及びマッチング対象=w0*List0再構築+w1*List1再構築である。
【0084】
一部の実装形態では、重みw0とw1は、通常の加重双方向予測(例えば、CUレベル加重双方向予測)のために、エンコーダ側で導出された同じ値を再利用することがある。あるいは、重みw0及びw1は所定の値を有してもよい。例えば、w0=w1=1/2である。別の実施例では、w0=1及びw1=0、又はw0=0及びw1=1である。重みw0とw1の一方が0のとき、双方向マッチングは、双方向動きベクトル精緻化ではなく片方向動きベクトル精緻化となる。
【0085】
一部の実装形態では、重みw0とw1は異なる符号の値を有していてもよい。例えば、w0=1、w1=-1である。この場合、マッチングコストを計算するのに双方向予測差を使用できる。具体的には、開始動きベクトルが更新される前に生成される双方向予測差と、開始動きベクトルが更新された後に生成される双方向予測差が、マッチングコストを決定するために計算される。
【0086】
図7の双方向マッチングベースの動き精緻化処理706を再度参照すると、ビデオプロセッサは、精緻化された動きベクトル714がビデオブロックに対して生成されるまで、動き精緻化操作710及び動きベクトル更新操作712を反復的に実行してもよい。例えば、ビデオプロセッサは、ビデオブロックに関する中間動きベクトルを初期化するために初期動きベクトル704を使用することができ、マッチング対象に基づいて中間動きベクトルの動き精緻化を決定できる。ビデオプロセッサは、動き精緻化に基づいて中間動きベクトルを更新できる。中間動きベクトルは、双方向マッチングベースの動き精緻化処理706を実行しながら、ビデオブロックの動きベクトルを表すことができる。次に、ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい所定の反復停止条件が充足されている場合、ビデオプロセッサは、中間動きベクトルを精緻化された動きベクトル714と決定してもよい。一方、所定の反復停止条件が充足されない場合、ビデオプロセッサは所定の反復停止条件が充足されるまで、中間動きベクトルに対する動き精緻化を反復的に決定し、動き精緻化に基づいて中間動きベクトルを更新し続けてもよい。
【0087】
一部の実装形態では、中間動きベクトルが収束すると、所定の反復停止条件は充足され得る。あるいは、所定の反復停止条件は、反復の総回数が所定の閾値を満たす(例えば、反復の総回数が所定の上限に到達する)場合に充足され得る。
【0088】
一部の実装形態では、中間動きベクトルの動き精緻化は、計算ベースの導出、探索ベースの導出、又は計算ベースの導出と探索ベースの導出の組み合わせを介して決定できる。計算ベースの導出が動き精緻化を決定するために使用される第1の例示的処理、探索ベースの導出が動き精緻化を決定するために使用される第2の例示的処理、及び計算ベースの導出と探索ベースの導出の組み合わせが動き精緻化を決定するために使用される第3の例示的処理が、以下に提供される。
【0089】
計算ベースの導出が適用される第1の例示的処理において、ビデオプロセッサは、中間動きベクトルに基づいて、ビデオブロックの現予測を決定できる。例えば、ビデオプロセッサは、中間動きベクトルに基づいて、第1の参照フレーム802及び第2の参照フレーム804からそれぞれ第3の参照ブロック(Ref2)及び第4の参照ブロック(Ref3)を決定できる。ビデオプロセッサは、第3の参照ブロックRef2と第4の参照ブロックRef3の加重組み合わせに基づいて、ビデオブロックの現予測を決定できる(例えば、現予測=w2*Ref2+w3*Ref3、ここでw2とw3はそれぞれRef2とRef3の重みを表す)。いくつかの実施例では、第3の参照ブロックRef2及び第4の参照ブロックRef3は、それぞれ、ビデオブロックの中間List0予測及び中間List1予測になり得る。中間List0予測及び中間List1予測は、それぞれ、中間動きベクトルに基づくビデオブロックのList0予測及びList1予測になり得る。一部の実装形態では、w2とw3はそれぞれw0とw1と等しくてもよい。あるいは、w2とw3はそれぞれw0とw1とは異なる値を持っていてもよい。
【0090】
ビデオプロセッサは、ビデオブロックの現予測とマッチング対象との間の仮の動きモデルを決定し、仮の動きモデルに基づいて、中間動きベクトルのための動き精緻化を導出してもよい。例えば、仮の動きモデルは、後述する動き精緻化計算のために使用できる。一部の実装形態では、双方向マッチングベースの動き精緻化処理706が実行される前には、ビデオブロックのアフィン動きモデルは、4パラメータアフィン動きモデル(2つのCPMVを有する)又は6パラメータアフィン動きモデル(3つのCPMVを有する)であってもよい。双方向マッチングが利用される場合、現予測とマッチング対象との間の仮の動きモデルは線形又は非線形であってもよく、それは2パラメータ(線形)、4パラメータ(非線形)、又は6パラメータ(非線形)動きモデルによって表現され得る。
【0091】
一部の実装形態では、仮の動きモデルは、ビデオブロックのアフィン動きモデルと同じ数のパラメータを有していてもよい。例えば、仮の動きモデルは6パラメータ動きモデルであり、アフィン動きモデルも6パラメータアフィン動きモデルである。他の実施例では、仮の動きモデルは4パラメータ動きモデルであり、アフィン動きモデルも4パラメータアフィン動きモデルである。あるいは、仮の動きモデルは、ビデオブロックのアフィン動きモデルとは異なる数のパラメータを有していてもよい。例えば、ビデオブロックのアフィン動きモデルは6パラメータアフィン動きモデルであるのに対し、仮の動きモデルは2パラメータ動きモデル、又は4パラメータ動きモデルである。他の実施例では、ビデオブロックのアフィン動きモデルは4パラメータアフィン動きモデルであるのに対し、仮の動きモデルは2パラメータ動きモデル、又は6パラメータ動きモデルである。
【0092】
例えば、アフィン動きモデルは、3つの制御点{(v
0x,v
0y), (v
1x,v
1y), (v
2x,v
2y)}で3つのCPMVを有する6パラメータアフィン動きモデルであってもよい。中間動きベクトルの動き精緻化(例えば、3つのCPMVの動き精緻化)は、{(dv
0x,dv
0y), (dv
1x,dv
1y), (dv
2x,dv
2y)}で表すことができる。マッチング対象輝度信号はl(i,j)として表すことができ、マッチング対象に関連付けられる。予測輝度信号は、l'
k(i,j)として表すことができ、ビデオブロックの現予測に関連付けられる。空間勾配g
x(i,j)及びg
y(i,j)は、予測信号l'
k(i,j)に、それぞれ水平方向と垂直方向にSobelフィルタを適用して導出できる。6パラメータの仮の動きモデルを用いて、各CPMVに対する動き精緻化を以下のように導出できる。
【数3】
【0093】
上記式(3)において、(dvx(x,y), dvy(x,y))は、CPMVのデルタ動き精緻化を示し、a及びbは、デルタ平行移動パラメータを示し、c及びdは、水平方向のデルタズーム及び回転パラメータを示し、e及びfは、垂直方向のデルタズーム及び回転パラメータを示す。
【0094】
左上、右上、及び左下の制御点{(v
0x, v
0y), (v
1x, v
1y), (v
2x, v
2y)}の座標はそれぞれ(0,0)、(w0)、(0,h)である。w及びhはビデオブロックの幅と高さを示す。上記(3)式に基づき、3つの制御点における3つのCPMVの動き精緻化は、それぞれの座標を以下の式(4)から(6)として導出できる。
【数4】
【数5】
【数6】
【0095】
オプティカルフロー方程式に基づいて、輝度の変化と空間的勾配及び時間的動きの間の関係は、以下の式(7)として定式化できる。
【数7】
【0096】
式(7)のdv
x(i,j)とdv
y(i,j)を式(3)に代入すると、パラメータセット(a,b,c,d,e,f)に対する式(8)は次のように得られる:
【数8】
【0097】
ビデオブロック内のすべてのサンプルは式(8)を充足するので、式(8)のパラメータセット(a,b,c,d,e,f)は最小二乗誤差法で解くことができる。そして、3つの制御点{(v0x, v0y), (v1x, v1y), (v2x, v2y)}での動き精緻化は式(4)から式(6)で解くことができ、特定の精度(例えば1/16ペル)に丸めることができる。上記の計算処理を反復として使用すると、3つの制御点にあるCPMVは、パラメータセット(a,b,c,d,e,f)がすべてゼロであるか、又は反復の総回数が所定の上限を充足する場合に、収束するまで精緻化される。
【0098】
別の実施例では、仮の動きモデルは、4パラメータの動きモデルであってもよい。各CPMVの動き精緻化について、4パラメータの動きモデルは、以下の式(9)を用いて表現できる。
【数9】
【0099】
左上と右上の制御点{(v
0x, v
0y), (v
1x, v
1y)}の座標は、それぞれ(0,0)と(w0)になり得る。上記式(9)に基づき、2つの制御点におけるCPMVのデルタ動き精緻化は、それぞれの座標を次の式(10)、式(11)として導出できる。
【数10】
【数11】
【0100】
式(7)のdv
x(i,j)とdv
y(i,j)を式(9)に代入すると、パラメータセット(a,b,c,d)に対する式(12)は次のように得られる:
【数12】
【0101】
上記式(8)と同様に、式(12)のパラメータセット(a,b,c,d)は、ビデオブロック内のすべてのサンプルを考慮することにより、最小二乗法で解くことができる。
【0102】
さらに別の実施例では、仮の動きモデルは、2パラメータの動きモデルであってもよい。各CPMVの動き精緻化については、c=d=e=f=0である(例えば、上記(3)式による)。そして、2パラメータの仮の動きモデルは、次のように表現できる。
【数13】
【0103】
上記式(13)に示すように、いずれのCPMVに対しても動き精緻化(例えば、任意の制御点におけるデルタ動き精緻化)は同じである。式(7)のdv
x(i,j)とdv
y(i,j)を式(13)に代入すると、パラメータセット(a,b)に対する式(14)は次のように得られる:
【数14】
【0104】
上記式(8)と同様に、式(14)のパラメータセット(a,b)は、ビデオブロック内のすべてのサンプルを考慮することにより、最小二乗法で解くことができる。
【0105】
上記式(3)、(9)、又は(13)により動き精緻化を得た後、ビデオプロセッサは、導出された動き精緻化を用いて中間動きベクトルを更新し、ビデオブロックのアフィン動きモデルに基づく精緻化された動きベクトル714を得ることができる。例えば、各CPMVは次の式を使用して更新できる。
【数15】
【0106】
上記式(15)において、
【数15-1】
は、それぞれ水平方向における精緻化前後のCPMVのx成分を、
【数15-2】
は、それぞれ垂直方向における精緻化前後のCPMVのy成分を示す。ビデオブロックのアフィン動きモデルのタイプによっては、異なる数のCPMVを精緻化する必要がある場合もある。例えば、4パラメータアフィン動きベクトルの場合、2つのCPMVを更新する必要があり、6パラメータアフィン動きモデルの場合、3つのCPMVを更新する必要がある。精緻化される各CPMVについて、対応する動き精緻化は、上記式(3)、(9)、又は(13)に従って、CPMVの対応する座標(x,y)を使用して導出できる。
【0107】
例えば、現予測とマッチング対象との間の仮の動きモデルが2パラメータの動きモデルである場合、上記式(13)を使用して、動き精緻化を導出できる。すなわち、CPMVの各々についてdv
x(x,y)=a及びdv
y(x,y)=bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数16】
【数17】
【数18】
【0108】
別の実施例では、現予測とマッチング対象との間の仮の動きモデルが4パラメータの動きモデルである場合、上記式(9)を使用して、動き精緻化を導出できる。すなわち、CPMVの各々についてdv
x(x,y)=c*x-d*y+a及びdv
y(x,y)=d*x+c*y+bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数19】
【数20】
【数21】
【0109】
さらに別の実施例では、現予測とマッチング対象との間の仮の動きモデルが6パラメータの動きモデルである場合、上記式(3)を使用して、動き精緻化を導出できる。すなわち、dv
x(x,y)=c*x-d*y+a及びdv
y(x,y)=e*x+f*y+bとなる。さらに、上記(15)式によれば、ビデオブロックのアフィン動きモデルが6パラメータアフィン動きモデルである場合、6パラメータアフィン動きモデルの座標(0,0)、(w0)、及び(0,h)を持つ3つの制御点における3つの精緻化されたCPMVを以下のように導出できる。
【数22】
【数23】
【数24】
【0110】
探索ベースの導出が動き精緻化を導出するために適用される第2の例示的処理において、ビデオプロセッサは、水平及び/又は垂直方向の各制御点の中間動きベクトルに、増分変化(例えば、+1又は-1)を反復的に適用できる。より小さなマッチングコストに導く中間動きベクトルの対応する変化は各制御点に対して精緻化された動きベクトルが得られるまで保持され、次の探索のための新たな開始点として設定されることができる。
【0111】
例えば、中間動きベクトルは、双方向であってもよく、List0のための第1の動きベクトル(例えば、L0動きベクトルと呼ばれる)及びList1のための第2の動きベクトル(例えば、L1動きベクトルと呼ばれる)を含む。L0及びL1動きベクトルの漸進的な精緻化は、マッチング対象を固定し、更新されたL0及び/又はL1動きベクトルを使用してビデオブロックの現予測を反復的に更新することによって、別々に実施されてもよい。処理の複雑さを削減するため、L0とL1の動きベクトルに対して同じ量の、逆方向の精緻化を使用することにより、L0とL1の両動きベクトルに対して精緻化を同時に実行することができる。例えば、次の式(25)を使用して、更新されたL0及びL1の動きベクトルを決定できる。
【数25】
【0112】
上記式(25)において、v0及びv1はそれぞれL0及びL1の動きベクトルを示し、v0'及びv1'はそれぞれ更新されたL0及びL1の動きベクトルを示し、Δ及び-Δはそれぞれ逆方向のList0及びList1に適用された動き精緻化を示し、kは時間的距離を考慮するために使用可能なスケーリング係数を示す。例えば、kは、ビデオフレームと第1の参照フレームとの間の第1の時間的距離と、ビデオフレームと第2の参照フレームとの間の第2の時間的距離との比に基づいて決定されてもよい。
【0113】
一部の実装形態では、各制御点の中間動きベクトルを反復的に更新するために、ビデオプロセッサは、まず、所定の探索範囲内の中間動きベクトル及び第1の動きベクトルの変化に基づいて第1の修正動きベクトルを生成できる。例えば、第1の修正動きベクトルは、中間動きベクトルと第1の動きベクトルの変化の和に等しくすることができ、第1の動きベクトルの変化は、中間動きベクトルの増分変化とすることができる。ビデオプロセッサは、(a)中間動きベクトルに関連するマッチングコスト、及び(b)第1の修正動きベクトルに関連する現マッチングコストに基づいて、中間動きベクトルに対する動き精緻化として第1の動きベクトルの変化を割り当てるか否かを決定できる。
【0114】
例えば、ビデオプロセッサは、中間動きベクトルに基づいてビデオブロックの予測を決定し、マッチング対象及びビデオブロックの予測に基づいて、中間動きベクトルに関連するマッチングコストを決定できる。ビデオブロックの予測は、中間動きベクトルに基づくビデオブロックのList0予測とList1予測の加重組み合わせとすることができる。マッチングコストは、ここに開示される任意のマッチングコスト関数に基づいて決定できる。同様に、ビデオプロセッサは、第1の修正動きベクトルに基づいてビデオブロックの現予測を決定し、マッチング対象及びビデオブロックの現予測に基づいて、第1の修正動きベクトルに関連付けられた現マッチングコストを決定することもできる。ビデオブロックの現予測は、第1の修正動きベクトルに基づくビデオブロックのList0予測とList1予測の加重組み合わせとすることができる。
【0115】
第1の修正動きベクトルに関連する現マッチングコストが、中間動きベクトルに関連するマッチングコストよりも小さい場合、ビデオプロセッサは、動き精緻化を、第1の動きベクトルの変化として導出できる。その結果、中間動きベクトルは、第1の修正された動きベクトル(例えば、中間動きベクトル=中間動きベクトル+第1の動きベクトルの変化)に更新できる。
【0116】
第1の修正動きベクトルに関連する現マッチングコストが、中間動きベクトルに関連するマッチングコストと等しいか、又はそれよりも大きい場合、ビデオプロセッサは、動き精緻化として第1の動きベクトルの変化を割り当てないことを決定できる。代わりに、ビデオプロセッサは、中間動きベクトル及び所定の探索範囲内の第2の動きベクトルの変化(例えば、第2の修正動きベクトル=中間動きベクトル+第2の動きベクトルの変化)に基づいて、第2の修正動きベクトルを生成できる。ビデオプロセッサは、中間動きベクトルに関連するマッチングコスト及び第2の修正動きベクトルに関連する別の現マッチングコストに基づいて、第2の動きベクトルの変化を動き精緻化として割り当てるかどうかを決定できる。第2の修正動きベクトルに関連する他の現マッチングコストが、中間動きベクトルに関連するマッチングコストよりも小さい場合、ビデオプロセッサは、動き精緻化を、第2の動きベクトルの変化として導出できる。そして、中間動きベクトルを更新して、第2の修正動きベクトルとすることができる。第2の修正動きベクトルに関連する他の現マッチングコストが、中間動きベクトルに関連するマッチングコストと等しいか、又はそれよりも大きい場合、ビデオプロセッサは、動き精緻化として第2の動きベクトルの変化を割り当てないことを決定できる。
【0117】
同様の操作を実行することにより、ビデオプロセッサは、所定の反復停止条件が充足されるまで、中間動きベクトルを反復的に更新できる。例えば、所定の反復停止条件は、所定の探索範囲内で利用可能な動きベクトル変化が検出され、処理されるか、又は反復の総回数が所定の上限を充足する場合に充足され得る。ビデオプロセッサは、所定の反復停止条件が充足されたとき、ビデオブロックの精緻化された動きベクトル714を中間動きベクトルと決定できる。
【0118】
計算ベースの導出と探索ベースの導出との組み合わせを使用して動き精緻化を決定する第3の例示的処理では、まず計算ベースの導出を使用して、中間動きベクトルを迅速に精緻化し、次いで探索ベースの導出に従い、精緻化された動きベクトル714を得るためのさらなる精緻化を提供できる。具体的には、ビデオプロセッサは、計算ベースの導出によって中間動きベクトルの動き精緻化を決定し、計算ベースの導出によって決定された動き精緻化に基づいて中間動きベクトルを更新する。次に、ビデオプロセッサは、探索ベースの導出によって中間動きベクトルの動き精緻化を再び決定し、探索ベースの導出によって決定された動き精緻化に基づいて中間動きベクトルを再び更新する。その結果、ビデオブロックについて精緻化された動きベクトル714が得られる。
【0119】
ビデオブロックの精緻化された動きベクトル714が得られた後、ビデオプロセッサは、サブブロック・動きベクトル精緻化処理716を実行して、ビデオブロック内の各サブブロックの動きベクトル718を生成してもよい。具体的には、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトル714を、サブブロックの動きベクトルの開始点として使用することによって、ビデオブロック内の各サブブロックの動きベクトルを精緻化できる。ビデオプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化できる。例えば、ビデオプロセッサは、上述の双方向マッチングベースの動き精緻化処理706を通じてビデオブロックのための複数の精緻化されたCPMVを得ることができ、次に、アフィン動きモデルが4パラメータモデルであるか6パラメータアフィン動きモデルであるかに応じて上記式(1)又は(2)を適用して、精緻化されたCPMVを用いて各サブブロックの動きベクトルを導出できる。
【0120】
本開示に合致する、双方向マッチングベースの動き精緻化処理706の例示的な適用条件がここに提供される。具体的には、双方向マッチングのために、動きの軌道が仮定される。しかしながら、動きの軌跡が直線的でない場合、双方向マッチングは、信頼性のある動きベクトルを導出するために使用されないことがある。例えば、双方向マッチングは、回転、ズーム、及びワーピングのような複雑な動きではうまく機能しない。より信頼性の高い動き精緻化を導出するために、特定の適用条件を決定して、双方向マッチングの過剰な使用を制限してもよい。
【0121】
一部の実装形態では、2つの参照フレームが現ビデオフレームの2つの異なる側にある場合(例えば、1つの参照フレームが現ビデオフレームの前にあり、他の参照フレームが現ビデオフレームの後にある場合)にのみ、双方向マッチングベースの動き精緻化処理706が適用される。一部の実装形態では、2つの参照フレームが現ビデオフレームの同じ側にある場合(例えば、2つの参照フレームが現ビデオフレームの前にある場合、又は2つの参照フレームが現ビデオフレームの後にある場合)、かつ2つの参照フレーム間の時間的距離が予め定められた閾値を充足する場合(例えば、時間的距離が予め定義された値よりも小さい(又は大きい)場合)、双方向マッチングベースの動き精緻化処理706を適用できる。一部の実装形態では、2つの参照フレームが現ビデオフレームの2つの異なる側にあり、参照フレームの一方と現ビデオフレームとの間の第1の時間的距離が、参照フレームの他方と現ビデオフレームとの間の第2の時間的距離と同じである場合に、双方向マッチングベースの動き精緻化処理706を適用できる。
【0122】
本開示と一致して、双方向マッチングベースの動き精緻化処理706はブロックレベルでのアフィン動きに適用され得るのに対して、サブブロック動きベクトル精緻化716はサブブロックレベルでの規則的な動きに適用され得る。これはサブブロックレベルでは通常の動きのみが含まれるが、ブロックレベルではアフィン動き(例えば、ズームイン/ズームアウト、回転、または遠近運動など)も含まれ得るからである。いくつかの実装形態では、規則的な動きは2パラメータアフィン動きモデルと等価であり得る。
【0123】
図9は、本開示の一部の実施による、ビデオにおける動き精緻化のための例示的な方法900のフローチャートである。方法900は、ビデオエンコーダ20又はビデオデコーダ30に関連付けられたビデオプロセッサによって実施されてもよく、以下に説明するように、ステップ902からステップ906を含んでもよい。いくつかのステップは、ここに提供される開示を実施するために任意選択であってもよい。さらに、いくつかの工程は同時に実行されてもよく、あるいは
図9に示されるものとは異なる順序で実行されてもよい。
【0124】
ステップ902で、ビデオプロセッサは、ビデオから、ビデオフレームのビデオブロックの初期動きベクトルを決定してもよい。
【0125】
ステップ903において、ビデオプロセッサは、ビデオ内の第1の参照フレームからの第1の参照ブロックと、ビデオ内の第2の参照フレームからの第2の参照ブロックとの加重組み合わせに基づいて、マッチング対象を決定し得る。例えば、ビデオプロセッサは、最初の動きベクトルに基づいて、ビデオの第1の参照フレーム及び第2の参照フレームからそれぞれ第1の参照ブロック及び第2の参照ブロックを決定し得る。ビデオプロセッサは、それぞれ、第1の参照ブロックのための第1の重みと、第2の参照ブロックのための第2の重みとを決定し得る。ビデオプロセッサは、第1及び第2の重みを使用して、第1の参照ブロックと第2の参照ブロックとの加重組み合わせを決定し得る。ビデオプロセッサは、第1及び第2の参照ブロックの加重組み合わせに基づいて、マッチング対象を決定し得る。
【0126】
いくつかの実装形態では、第1の重み及び第2の重みは通常の重み付き双予測のためにエンコーダ側で導出された対応する重みと同一であり得る。例えば、通常の重み付き双予測は、List0予測のための重みと、List1予測のための重みとを有し得る。第1及び第2の重みは、それぞれ、List0予測のための重み及びList1予測のための重みに等しくなり得る。あるいは、第1及び第2の重みは所定の値を有する可能性がある。例えば、第1及び第2の重みの各々は、0.5とすることができる。別の実施例では、第1の重みは0であり得、第2の重みは1であり得る。又は、第1の重みは1とすることができ、第2の重みは0とすることができる。
【0127】
ステップ904で、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトルが得られるまで、マッチング対象に基づいて、初期動きベクトルを反復的に更新するために、ブロックレベルで、双方向マッチングベースの動き精緻化処理を実行してもよい。例えば、ビデオプロセッサは、中間動きベクトルを初期化するために初期動きベクトルを使用し、マッチング対象に基づいて中間動きベクトルの動き精緻化を決定し、動き精緻化に基づいて中間動きベクトルを更新できる。ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい。
【0128】
所定の反復停止条件が充足されたことに応答して、ビデオプロセッサは、中間動きベクトルを精緻化された動きベクトルと決定してもよい。所定の反復停止条件が充足されないことに応答して、ビデオプロセッサは所定の反復停止条件が充足されるまで、中間動きベクトルに対する動き精緻化を反復的に決定し、動き精緻化に基づいて中間動きベクトルを更新し続けてもよい。
【0129】
一部の実装形態では、動き精緻化は、計算ベースの導出、探索ベースの導出、又は計算ベースの導出と探索ベースの導出の組み合わせを介して決定できる。
【0130】
ステップ906において、ビデオプロセッサは、ビデオブロックの精緻化された動きベクトルを、サブブロックの動きベクトルの開始点として使用して、ビデオブロック内の各サブブロックの動きベクトルを精緻化できる。ビデオプロセッサは、ビデオブロックのアフィン動きモデルを適用して、サブブロックレベルで動きベクトルを精緻化できる。
【0131】
図10は、本開示の一部の実施による、ビデオにおける動き精緻化のための別の例示的な方法1000のフローチャートである。方法1000は、ビデオエンコーダ20又はビデオデコーダ30に関連付けられたビデオプロセッサによって実施されてもよく、以下に説明するように、ステップ1002からステップ1016を含んでもよい。いくつかのステップは、ここに提供される開示を実施するために任意選択であってもよい。さらに、いくつかの工程は同時に実行されてもよく、あるいは
図10に示されるものとは異なる順序で実行されてもよい。
【0132】
ステップ1002で、ビデオプロセッサは、ビデオブロックのマージリストに基づいて、ビデオから、ビデオフレームのビデオブロックの初期動きベクトルを決定してもよい。
【0133】
ステップ1004で、ビデオプロセッサは、初期動きベクトルに基づいて、ビデオの第1の参照フレームと第2の参照フレームからマッチング対象を決定してもよい。
【0134】
ステップ1006で、ビデオプロセッサは、ビデオブロックの中間動きベクトルを初期化するために、初期動きベクトルを使用してもよい。
【0135】
ステップ1008で、ビデオプロセッサは、マッチング対象に基づいて、中間動きベクトルの動き精緻化を決定してもよい。
【0136】
ステップ1010で、ビデオプロセッサは、動き精緻化に基づいて中間動きベクトルを更新してもよい。
【0137】
ステップ1012で、ビデオプロセッサは、所定の反復停止条件が充足されたか否かを判定してもよい。所定の反復停止条件が成立したことに応答して、方法1000は、ステップ1014に進むことができる。そうでなければ、方法1000は、ステップ1008に戻ってもよい。
【0138】
ステップ1014で、ビデオプロセッサは、中間動きベクトルをビデオブロックについての精緻化された動きベクトルと決定できる。
【0139】
ステップ1016で、ビデオプロセッサは、マージリストから初期動きベクトルを識別するためのマージインデックス、第1の参照フレームを識別するための第1の参照インデックス、及び第2の参照フレームを識別するための第2の参照インデックスを含むビットストリームを生成できる。
【0140】
図11は、本開示の一部の実施による、ユーザインタフェース1150と結合された演算環境1110を示す。演算環境1110は、データ処理サーバの一部とすることができる。演算環境1110は、プロセッサ1120、メモリ1130、及び入出力(I/O)インタフェース1140を含む。
【0141】
プロセッサ1120は、典型的には、表示、データ収集、データ通信、及び画像処理に関連する操作などの、演算環境1110の全体的な操作を制御する。プロセッサ1120は、上述した方法のすべて又は一部のステップを実行するための命令を実行するための1つ又は複数のプロセッサを含んでもよい。さらに、プロセッサ1120は、プロセッサ1120と他の構成要素との間の相互作用を容易にする1つ又は複数のモジュールを含んでもよい。プロセッサ1120は、中央演算処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、画像処理装置(Graphical Processing Unit:GPU)などであってもよい。
【0142】
メモリ1130は、演算環境1110の動作をサポートするために、各種タイプのデータを格納するよう構成される。メモリ1130は、所定のソフトウェア1132を含んでもよい。このようなデータの例には、演算環境1110で動作する任意のアプリケーション又は方法のための命令、ビデオデータセット、画像データなどが含まれる。メモリ1130は、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、プログラマブル読取り専用メモリ(PROM)、読取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク、光ディスクなどの任意のタイプの揮発性又は不揮発性メモリデバイス、又はそれらの組み合わせを使用することによって実施することができる。
【0143】
I/Oインタフェース1140は、プロセッサ1120と、キーボード、クリックホイール、ボタンなどの周辺インタフェースモジュールとの間のインタフェースを提供する。ボタンとしては、限定されるものではないが、ホームボタン、スキャン開始ボタン、及びスキャン停止ボタンが含まれ得る。I/Oインタフェース1140は、エンコーダ及びデコーダと結合されることができる。
【0144】
一部の実装形態では、上述の方法を実行するために、例えば、メモリ1130内に、演算環境1110内のプロセッサ1120によって実行可能な複数のプログラムを含む非一時的なコンピュータ可読記憶媒体も提供される。あるいは、非一時的なコンピュータ可読記憶媒体は、例えば、ビデオデータを復号する際にデコーダ(例えば、
図3のビデオデコーダ30)によって使用される上述した符号化方法を使用して、エンコーダ(例えば、
図2のビデオエンコーダ20)によって生成された、符号化されたビデオ情報(例えば、1つ又は複数のシンタックス要素を含むビデオ情報)を含むビットストリーム又はデータストリームをその中に格納していてもよい。非一時的なコンピュータ可読記憶媒体は、例えば、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、光データストレージデバイスなどであってもよい。
【0145】
一部の実装形態では、1つ又は複数のプロセッサ(例えば、プロセッサ1120)と、1つ又は複数のプロセッサによって実行可能な複数のプログラムを格納した非一時的なコンピュータ可読記憶媒体又はメモリ1130と、を含む演算装置も提供され、1つ又は複数のプロセッサは、複数のプログラムの実行時に、上記方法を実行するよう構成される。
【0146】
一部の実装形態では、上述の方法を実行するために、例えば、メモリ1130内に、演算環境1110内のプロセッサ1120によって実行可能な複数のプログラムを含むコンピュータプログラム製品も提供される。例えば、コンピュータプログラム製品は、非一時的なコンピュータ可読記憶媒体を含んでもよい。
【0147】
一部の実装形態では、上記方法を実行するために、演算環境1110は、1つ又は複数のASIC、DSP、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、FPGA、GPU、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子部品を用いて実施されてもよい。
【0148】
本開示の説明は、例示のために提示されたものであり、網羅的であったり本開示を限定することを意図したものではない。前述の説明及び関連する図面に示された教示の恩恵を受ける当業者には、多くの修正、変更、及び代替の実施が明らかとなるであろう。
【0149】
特に明記しない限り、本開示による方法のステップの順序は単に例示を意図するものであって、本開示による方法のステップは、具体的に上述した順序に限定されるものではなく、実際の条件に応じて変更され得る。さらに、本開示による方法のステップのうちの少なくとも1つは、実際の要件に従って調整され、組み合わせられ、又は削除され得る。
【0150】
実施例は、開示の原理を説明し、当業者が各種実施に関する開示を理解し、意図される特定の使用に適した方法で、各種修正を伴う基礎となる原理及び各種実施を最良に利用することを可能とするために選択され、説明された。したがって、本開示の範囲は、開示された実施の具体的な実施例に限定されるものではなく、修正及び他の実施は、本開示の範囲内に含まれることが意図されていることを理解されたい。
【国際調査報告】