(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-11
(45)【発行日】2023-05-19
(54)【発明の名称】復号器側動きベクトル導出によって導出された動きベクトル情報を制約すること
(51)【国際特許分類】
H04N 19/52 20140101AFI20230512BHJP
H04N 19/577 20140101ALI20230512BHJP
【FI】
H04N19/52
H04N19/577
【外国語出願】
(21)【出願番号】P 2021114322
(22)【出願日】2021-07-09
(62)【分割の表示】P 2019551632の分割
【原出願日】2018-03-22
【審査請求日】2021-08-06
(32)【優先日】2017-03-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-03-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】マルタ・カルチェビチ
(72)【発明者】
【氏名】イ-ウェン・チェン
(72)【発明者】
【氏名】ウェイ-ジュン・チェン
(72)【発明者】
【氏名】シャオ-チャン・チュアン
(72)【発明者】
【氏名】シャン・リ
(72)【発明者】
【氏名】ジャンレ・チェン
【審査官】鉢呂 健
(56)【参考文献】
【文献】国際公開第2017/036414(WO,A1)
【文献】国際公開第2016/160605(WO,A1)
【文献】特許第7233376(JP,B2)
【文献】CHEN, Jianle et al.,Algorithm Description of Joint Exploration Test Model 4,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 4th Meeting: Chengdu, CN, 15-21 October 2016, [JVET-D1001_v3],JVET-D1001 (version 3),ITU-T,2016年11月19日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/4_Chengdu/wg11/JVET-D1001-v3.zip>; JVET-D1001_V3.docx: pp.18-19
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
符号化されたビデオビットストリームからビデオデータを復号する方法であって、前記方法は、
パターンマッチ動きベクトル導出(PMMVD)シードと呼ばれるものまたはマージリストの候補をチェックすることによって第1の初期動きベクトル及び第2の初期動きベクトルを決定し、バイラテラルマッチングまたはテンプレートマッチングに基づいて前記第1の初期動きベクトル及び前記第2の初期動きベクトルとして候補を選択することと、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、前記複数の導出された動きベクトルは、各ペアの第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する制約を満たす導出された動きベクトルのペアを備え、前記制約は、各ペアの前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有することを備え、
ここにおいて、第1の導出された動きベクトルと第2の導出された動きベクトルとが前記対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)
および
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、
コストメトリックに基づいて、前記複数の導出された動きベクトルから導出された動きベクトルのペアを決定することと、
双予測を使用して、導出された動きベクトルの前記決定されたペアを使用して現在のブロックを復号することと
を備える、方法。
【請求項2】
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、請求項1に記載の方法。
【請求項3】
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項1に記載の方法。
【請求項4】
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項1に記載の方法。
【請求項5】
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項1に記載の方法。
【請求項6】
前記符号化されたビデオビットストリームから前記少なくとも1つの制約を決定することをさらに備える、請求項1に記載の方法。
【請求項7】
前記コストメトリックは、絶対差分の和を含む、請求項1に記載の方法。
【請求項8】
符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、前記装置は、
パターンマッチ動きベクトル導出(PMMVD)シードと呼ばれるものまたはマージリストの候補をチェックすることによって第1の初期動きベクトル及び第2の初期動きベクトルを決定し、バイラテラルマッチングまたはテンプレートマッチングに基づいて前記第1の初期動きベクトル及び前記第2の初期動きベクトルとして候補を選択するための手段と、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成するための手段と、前記複数の導出された動きベクトルは、各ペアの第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する制約を満たす導出された動きベクトルのペアを備え、前記制約は、各ペアの前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有することを備え、
ここにおいて、第1の導出された動きベクトルと第2の導出された動きベクトルとが前記対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)
および
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、
コストメトリックに基づいて、前記複数の導出された動きベクトルから導出された動きベクトルのペアを決定するための手段と、
双予測を使用して、導出された動きベクトルの前記決定された第1のペアを使用して現在のブロックを復号するための手段と
を備える、装置。
【請求項9】
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、請求項8に記載の装置。
【請求項10】
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定するための手段をさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項8に記載の装置。
【請求項11】
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するための手段をさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項8に記載の装置。
【請求項12】
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するための手段をさらに備え、
前記複数の導出された動きベクトルを生成する前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記第1の動きベクトル候補リストに関連付けられた前記第1の参照ピクチャと前記現在のピクチャとの間の前記第1のPOC距離が0であり、前記第2の動きベクトル候補リストに関連付けられた前記第2の参照ピクチャと前記現在のピクチャとの間の前記第2のPOC距離がゼロ決定であると前記決定することにさらに基づく、請求項8に記載の装置。
【請求項13】
前記符号化されたビデオビットストリームから前記少なくとも1つの制約を決定するための手段をさらに備える、請求項8に記載の装置。
【請求項14】
前記コストメトリックは、絶対差分の和を含む、請求項8に記載の装置。
【請求項15】
ビデオデータを符号化するように構成された装置であって、前記装置は、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信中の1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
パターンマッチ動きベクトル導出(PMMVD)シードと呼ばれるものまたはマージリストの候補をチェックすることによって第1の初期動きベクトル及び第2の初期動きベクトルを決定し、バイラテラルマッチングまたはテンプレートマッチングに基づいて前記第1の初期動きベクトル及び前記第2の初期動きベクトルとして候補を選択することと、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、前記複数の導出された動きベクトルは、各ペアの前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとの間の関係に関する制約を満たす導出された動きベクトルのペアを備え、前記制約は、各ペアの前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有することを備え、
ここにおいて、第1の導出された動きベクトルと第2の導出された動きベクトルとが前記対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)
および
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、
コストメトリックに基づいて、前記複数の導出された動きベクトルから導出された動きベクトルのペアを決定することと、
双予測を使用して、前記決定された第1の導出された動きベクトルと前記第2の導出された動きベクトルとを使用して現在のブロックを符号化することと
を行うように構成される、装置。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001] 本願は、2017年3月22日に出願された米国仮特許出願第62/475,177号の利益を主張し、それは、その全体が参照によってここに組み込まれる。
【技術分野】
【0002】
[0002] この開示は、ビデオコーディング(video coding)に関する。
【背景技術】
【0003】
[0003] デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、幅広い範囲のデバイスへと組み込まれることができる。デジタルビデオデバイスは、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-TH.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンスドビデオコーディング(AVC:Advanced Video Coding)、ITU-T H.265/高効率ビデオコーディング(HEVC:High Efficiency Video Coding)、およびスケーラブルビデオコーディング(SVC:Scalable Video Coding)およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張のような、そのような規格の拡張によって定義された規格に説明されているもののような、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信(transmit)、受信(receive)、符号化(encode)、復号(decode)、および/または記憶(store)し得る。
【0004】
[0004] ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減または取り除くために、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(video slice)(例えば、ビデオピクチャまたはビデオピクチャの一部分)は、ビデオブロックへと区分化され得、それはまた、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)および/またはコーディングノードと呼ばれ得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の近隣ブロック(neighboring block)中の参照サンプルに対して空間的予測(spatial prediction)を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対して空間的予測を、または他の参照ピクチャ(reference picture)中の参照サンプルに対して時間的予測(temporal prediction)を使用し得る。ピクチャは、フレームと呼ばれ得、および参照ピクチャは、参照フレーム(reference frame)と呼ばれ得る。
【0005】
[0005] 空間的または時間的予測は、コーディングされることになるブロックについての予測ブロックをもたらす。残差データ(Residual data)は、コーディングされることになる元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル(motion vector)、およびコーディングされたブロックと予測ブロックとの間の差分(difference)を示す残差データにしたがって符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データにしたがって符号化される。さらなる圧縮のために、残差データは、ピクセルドメインから変換ドメインに変換され得、残差変換係数(residual transform coefficient)をもたらし、それはその後、量子化され得る。最初に2次元アレイ中に配置された、量子化された変換係数は、変換係数の1次元ベクトルを作り出すために走査され得、およびエントロピーコーディングが、さらにいっそうの圧縮を達成するために適用され得る。
【発明の概要】
【0006】
[0006] 一般に、この開示は、復号器側動きベクトル導出(DMVD:decoder-side motion vector derivation)に関する技法を説明する。例えば、この開示は、DMVDによって導出された動きベクトル(MV:motion vector)、および/または初期MVとDMVDによって導出されたMVとの間のMV差分のような動き情報に1つまたは複数の制約(constraint)を適用することに関する技法を説明する。これらの技法は、HEVC(高効率ビデオコーディング)のような既存のビデオコーデックのうちの任意のものに適用され得、および/または任意の将来のビデオコーディング規格における効率的なコーディングツールであり得る。制約がDMVDで導出されたMVおよび/またはMV差分に適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、MVのリストと最終の選択されたMVとが異なり得、それは、コーディング効率を増大させ得、および/またはビットレート(bit-rate)を低減し得る。いくつかの例では、制約は、導出されたMVが対称(symmetric)であるかどうか、初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうか、導出されたMVが反対称(anti-symmetric)であるかどうか、初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうかを含む。いくつかの例では、対称/反対称MV/MV差分制約の有効化(enabling)は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がある特定の例でのみ適用されるように、制約には条件(condition)が設けられ得る。
【0007】
[0007] ある例では、符号化されたビデオビットストリーム(encoded video bitstream)からビデオデータ(video data)を復号する方法であって、その方法は、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトル(derived motion vector)を生成することと、コストメトリック(cost metric)に基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係(relationship)に関する少なくとも1つの制約を満たすと決定することを備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分(symmetric motion vector difference)を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称(pseudo symmetric)動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分(anti-symmetric motion vector difference)を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分(pseudo anti-symmetric motion vector difference)を有することを備え、双予測(bi-prediction)を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロック(current block)を復号することとを備える。
【0008】
[0008] 別の例では、ビデオデータを符号化する方法であって、その方法は、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすと決定することを備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分(pseudo symmetric motion vector difference)を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを符号化することとを備える。
【0009】
[0009] 別の例では、符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、その装置は、ビデオデータを記憶するように構成されたメモリと、そのメモリと通信中の1つまたは複数のプロセッサとを備え、その1つまたは複数のプロセッサは、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号することとを行うように構成される。
【0010】
[0010] 別の例では、ビデオデータを符号化するように構成された装置であって、その装置は、ビデオデータを記憶するように構成されたメモリと、そのメモリと通信中の1つまたは複数のプロセッサとを備え、その1つまたは複数のプロセッサは、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号することとを行うように構成される。
【0011】
[0011] 別の例では、符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、その装置は、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成するための手段と、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定するための手段と、ここで、その決定するための手段は、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすと決定するための手段を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号するための手段とを備える。
【0012】
[0012] 別の例では、ビデオデータを符号化するように構成された装置であって、その装置は、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成するための手段と、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定するための手段と、ここで、その決定するための手段は、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすと決定するための手段を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを符号化するための手段とを備える。
【0013】
[0013] 別の例では、この開示は、実行されると、構成されたデバイスの1つまたは複数のプロセッサに、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号することとを行わせる命令を記憶するコンピュータ可読記憶媒体(computer-readable storage medium)を説明する。
【0014】
[0014] 別の例では、この開示は、実行されると、構成されたデバイスの1つまたは複数のプロセッサに、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、ここで、その決定することは、第1の導出された動きベクトルと第2の導出された動きベクトルとが、第1の導出された動きベクトルと第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、その関係は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称である、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号することとを行わせる命令を記憶するコンピュータ可読記憶媒体を説明する。
【0015】
[0015] 1つまたは複数の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明および図面から、そして特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0016】
【
図1】[0016] この開示の復号器側動きベクトル導出(DMVD)を遂行するための技法を利用し得る実例的なビデオ符号化および復号システムを例示するブロック図である。
【
図2】[0017] この開示のDMVDを遂行するための技法をインプリメントし得るビデオ符号化器(video encoder)の例を例示するブロック図である。
【
図3】[0018] この開示のDMVDを遂行するための技法をインプリメントし得るビデオ復号器(video decoder)の例を例示するブロック図である。
【
図4A】[0019] 近隣ブロックから導出された空間的動きベクトル候補(spatial motion vector candidate)を例示する概念図である。
【
図4B】近隣ブロックから導出された空間的動きベクトル候補を例示する概念図である。
【
図5A】[0020] 時間的動きベクトル予測子(TMVP:temporal motion vector predictor)候補のためのプライマリブロックロケーション(primary block location)を例示する概念図である。
【
図5B】時間的動きベクトル予測子(TMVP)候補のためのプライマリブロックロケーションを例示する概念図である。
【
図6】[0021] 現在のブロックの動き情報を導出するためのバイラテラルマッチング(bilateral matching)に関する概念を例示する概念図である。
【
図7】[0022] 現在のブロックの動き情報を導出するためのテンプレートマッチング(template matching)に関する概念を例示する概念図である。
【
図8】[0023] 実例的なフレームレートアップコンバージョン(FRUC:frame-rate up-conversion)テンプレートマッチングプロセス(template matching process)を例示するフローチャートである。
【
図9】[0024]
図8のFRUCテンプレートマッチングプロセスへの実例的な提案された変更を例示するフローチャートである。
【
図10】[0025] 双方向オプティカルフロー(bi-directional optical flow)の例に関する概念を例示する概念図である。
【
図11】[0026] 8×4ブロックについての勾配算出(gradient calculation)の例を例示する概念図である。
【
図12】[0027] バイラテラルテンプレートマッチング(bilateral template matching)に基づくDMVDに関する概念を例示する概念図である。
【
図13A】[0028] オーバーラップブロック動き補償(OBMC:overlapped block motion compensation)に関する概念を例示する概念図である。
【
図13B】オーバーラップブロック動き補償(OBMC)に関する概念を例示する概念図である。
【
図14A】[0029] OBMC重み付けを例示する概念図である。
【
図14B】OBMC重み付けを例示する概念図である。
【
図14C】OBMC重み付けを例示する概念図である。
【
図14D】OBMC重み付けを例示する概念図である。
【
図15】[0030] 現在のブロックの動き情報を導出するためのバイラテラルマッチングに関する概念を例示する概念図である。
【
図16】[0031] この開示に説明される技法にしたがった、ビデオデータを復号する実例的な方法を例示するフローチャートである。
【
図17】[0032] この開示に説明される技法にしたがった、ビデオデータを符号化する実例的な方法を例示するフローチャートである。
【詳細な説明】
【0017】
[0033] この開示は、復号器側動きベクトル導出(DMVD)に関する技法を説明する。この開示の技法は、任意の将来のビデオコーディング規格における効率的なコーディングツールとして使用され得る。
【0018】
[0034] 一般に、この開示は、ビデオデータのブロックを符号化するために使用される動き情報(例えば、1つまたは複数の動きベクトル、動きベクトルおよび/または動きベクトル差分精度、および1つまたは複数の参照ピクチャインデックス)を導出するための、およびビデオ符号化器によって決定されるものと同じ動き情報をビデオ復号器によって決定するための技法を説明する。ビデオ符号化器によって使用される同じ(または相反する)導出技法を使用して、ビデオ復号器は、動き情報を具体的に識別するいかなるシンタックス要素(syntax element)も受信することなしに、何の動き情報がビデオデータを符号化するために使用されたのかを決定し得る。いくつかのコーディングシナリオでは、しかしながら、ビデオ符号化器は、ブロックを符号化するために使用される動き情報を依然として明示的にシグナリングし得る。
【0019】
[0035] この開示における様々な技法は、ビデオコーダ(video coder)を参照して説明され得、それは、ビデオ符号化器またはビデオ復号器のいずれかを指すことができる総称であることを意図される。別途明示的に記載されない限り、ビデオ符号化器またはビデオ復号器に関して説明される技法は、ビデオ符号化器またはビデオ復号器の他方によって遂行されることができないと想定されるべきではない。例えば、多くの事例では、ビデオ復号器は、符号化されたビデオデータを復号するために、ビデオ符号化器と同じ、または時として相反するコーディング技法を遂行する。多くの事例では、ビデオ符号化器はまた、ビデオ復号ループを含み、およびこのことから、ビデオ符号化器は、ビデオデータを符号化することの一部としてビデオ復号を遂行する。このことから、別途記載されない限り、ビデオ復号器に関してこの開示に説明される技法はまた、ビデオ符号化器によって遂行され得、および逆もまた然りである。
【0020】
[0036] この開示はまた、現在のレイヤ、現在のブロック、現在のピクチャ(current picture)、現在のスライス、等のような用語を使用し得る。この開示のコンテキストでは、現在の(current)という用語は、例えば、以前にコーディングされたレイヤ、ブロック、ピクチャ、およびスライス、あるいは未だにコーディングされていないブロック、ピクチャ、およびスライスとは対照的に、現在コーディングされているレイヤ、ブロック、ピクチャ、スライス、等を識別することを意図される。
【0021】
[0037] その範囲拡張と、マルチビュー拡張(MV-HEVC)と、スケーラブル拡張(SHVC)とを含む、(ITU-T H.265とも呼ばれる)高効率ビデオコーディング(HEVC)と名付けられた新しいビデオコーディング規格が、ITU-Tビデオコーディング専門家グループ(VCEG:Video Coding Experts Group)およびISO/IECモーションピクチャ専門家グループ(MPEG:Motion Picture Experts Group)のビデオコーディングに関する共同コラボレーションチーム(JCT-VC:the Joint Collaboration Team on Video Coding)ならびに3Dビデオコーディング拡張開発に関する共同コラボレーションチーム(JCT-3V: Joint Collaboration Team on 3D Video Coding Extension Development)によって開発された。以下においてHEVC WDと呼ばれるHEVC仕様書は、phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。
【0022】
[0038] ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC1/SC 29/WG 11)は現在、(スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張および近々の拡張を含む)現在のHEVC規格のそれを有意に上回る圧縮能力を有する将来のビデオコーディング技術の標準化の潜在的な必要性を研究している。グループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、共同ビデオ調査チーム(JVET:the Joint Video Exploration Team)として知られている共同コラボレーションの取り組みにおいて、この調査活動で協働している。JVETは、2015年10月19日~21日中に最初の会合を行った。あるバージョンの参照ソフトウェア、すなわち、共同調査モデル5(JEM5:Joint Exploration Model 5)は、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-5.0において入手可能である。JEM5のアルゴリズム記述は、phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=2714において入手可能である。
【0023】
[0039]
図1は、この開示のDMVDを遂行するための技法を利用し得る実例的なビデオ符号化および復号システム10を例示するブロック図である。
図1に示されているように、システム10は、宛先デバイス14によって後の時間に復号されることになる符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0024】
[0040] 宛先デバイス14は、コンピュータ可読媒体16を介して、復号されることになる符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることが可能である任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12がリアルタイムで宛先デバイス14に符号化されたビデオデータを直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、および宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理的伝送線路のような任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【0025】
[0041] いくつかの例では、符号化されたデータは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または非揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体のような、多様な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイスは、ファイルサーバ、またはソースデバイス12によって生成される符号化されたビデオを記憶し得る別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、宛先デバイス14にその符号化されたビデオデータを送信することとが可能である任意のタイプのサーバであり得る。実例的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準的データ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、等)、またはその両方の組み合わせを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであり得る。
【0026】
[0042] この開示の技法は、ワイヤレスアプリケーションまたは設定に必ずしも限定されるわけではない。本技法は、無線テレビブロードキャスト、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的適応型ストリーミング(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションのような、多様なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話通信のようなアプリケーションをサポートするための1方向(one-way)または2方向(two-way)ビデオ送信をサポートするように構成され得る。
【0027】
[0043]
図1の例では、ソースデバイス12は、ビデオソース18、ビデオ符号化器20、および出力インターフェース22を含む。宛先デバイス14は、入力インターフェース28、ビデオ復号器30、およびディスプレイデバイス32を含む。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは配置を含み得る。例えば、ソースデバイス12は、外部カメラのような外部ビデオソース18からビデオデータを受信し得る。同じように、宛先デバイス14は、統合されたディスプレイデバイスを含むというよりはむしろ、外部ディスプレイデバイスとインターフェースし得る。この開示にしたがって、ソースデバイス12のビデオ符号化器20および/または宛先デバイス14のビデオ復号器30は、ここに説明される1つまたは複数のDMVD技法を遂行するように構成され得る。例えば、ビデオ符号化器20および/またはビデオ復号器30は、(1)DMVDによって導出されたMV、および/または、(2)初期MDとDMVDによって導出されたMVとの間のMV差分に、1つまたは複数の制約を適用するように構成され得る。制約は、DMVDプロセスによって導出された動きベクトルに対する制限を含み得る。この開示の実例的な制約は、2つの参照ピクチャリスト(例えば、List0およびList1)中のMVとMVDとの間の何らかの予め定義された関係を義務付ける制約を含み得る。制約がDMVDに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、MVのリストと最終の選択されたMVとが異なり得る。第1の例では、制約は、導出されたMVが対称であるかどうかを含む。第2の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうかを含む。第3の例では、制約は、導出されたMVが反対称であるかどうかを含む。第4の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうかを含む。いくつかの例では、対称/反対称MV/MV差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。
【0028】
[0044] さらなる例では、制約がある特定の例でのみ適用されるように、制約には条件が設けられ得る。条件は、制約がいつ有効にされるかに対する制限を含み得る。例えば、(1)制約は、初期MVが対称であるときにのみ有効にされる、(2)制約は、初期MVが疑似対称であるときにのみ有効にされる、(3)制約は、初期MVが反対称であるときにのみ有効にされる、(4)制約は、初期MVが疑似反対称(pseudo anti-symmetric)であるときにのみ有効にされる、(5)制約は、初期MVが対称でないときにのみ有効にされる、(6)制約は、初期MVが疑似対称でないときにのみ有効にされる、(7)制約は、初期MVが反対称でないときにのみ有効にされる、(8)制約は、初期MVが疑似反対称でないときにのみ有効にされる、(9)制約は、初期MVのList0およびList1参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるときにのみ有効にされる、(10)制約は、初期MVのList0およびList1参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないときにのみ有効にされる、(11)制約は、初期MVの参照インデックスが両方とも0であるときにのみ有効にされる、(12)制約は、初期MVの参照インデックスが両方とも0でないときにのみ有効にされる、(13)制約は、List0参照ピクチャと現在のピクチャとの間のPOC距離と、List1参照ピクチャと現在のピクチャとの間のPOC距離とが同じであるときにのみ有効にされる、(14)制約は、List0参照ピクチャと現在のピクチャとの間のPOC距離と、List1参照ピクチャと現在のピクチャとの間のPOC距離とが同じでないときにのみ有効にされる、(15)対称MV差分の制約は、初期MVが対称でないときに適用される、および/または(16)反対称MV差分の制約は、初期MVが対称であるときに適用される。
【0029】
[0045] さらなる例では、対称制約のMV解像度(resolution)は、決定的な様式で割り当てられることができる。一例では、バイラテラルテンプレートマッチングの整数ペル精緻化(integer-pel refinement)のために、いかなる対称/疑似対称/非対称制約も課されるべきではなく、および前述された制約は、ハーフペル(half-pel)、クォーターペル(quarter-pel)、またはより高い精度の動き精緻化に対してのみである。(そのMV解像度での)制約のレベルは、SPS/PPS/スライスヘッダを通じてシグナリングされることができる。解像度はまた、BIO、サブペルフレームレートアップコンバージョン(FRUC)のような他の動き精緻化ツールが有効にされるかどうかと併せて決められることができる。例えば、BIOが有効にされるとき、制約は、クォーターペルまたはより高い精度の動き精緻化に対して課せられるべきではない。
【0030】
[0046] 別の例では、制約のレベルは、(L0とも呼ばれる)List0 MVと(L1と呼ばれる)List1 MVとの間の絶対差分(absolute difference)、List0MVとList1 MVとの間の(それらの相対POC距離に基づいて)スケーリングされた絶対差分、またはList0とList1と(すなわち、この例では、P0とP1と)の補間されたサンプルの間の初期SAD値にしたがって適応的にさせられることができる。代替として、(現在のテンプレート、P0)と現在のテンプレート、P1)との間のSAD値の比は、何のMV解像度において制約が課せられるべきかを決めるために使用されることができる。この例では、SAD値の比がしきい値より低い場合、いかなる前述された対称制約も課されるべきではない。
【0031】
[0047] さらに、いくつかの例では、単一の制約(例えば、対称MV、対称MV差分、反対称MV、または反対称MV差分)が、ある1つの条件に基づいて、導出されたMVに適用される。他の例では、複数の制約が、複数の条件に基づいて、導出されたMVに適用される。
【0032】
[0048]
図1の例示されているシステム10は単に、一例に過ぎない。この開示のDMVDを遂行するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって遂行され得る。例えば、(1)DMVDによって導出されたMV、および/または、(2)初期MVとDMVDによって導出されたMVとの間のMV差分を制約するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって遂行され得る。概して、この開示の技法は、ビデオ符号化デバイスによって遂行されるが、本技法はまた、典型的に「CODEC」と呼ばれるビデオ符号化器/復号器によって遂行され得る。その上、この開示の技法はまた、ビデオプリプロセッサによって遂行され得る。ソースデバイス12および宛先デバイス14は単に、ソースデバイス12が宛先デバイス14への送信のためのコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化および復号コンポーネントを含むような実質的に対称的な方法で動作し得る。故に、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス12とビデオデバイス14との間の1方向または2方向ビデオ送信をサポートし得る。
【0033】
[0049] ソースデバイス12のビデオソース18は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされたビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータを、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組み合わせを生成し得る。いくつかのケースでは、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ電話またはビデオ電話を形成し得る。上述されたように、しかしながら、この開示に説明される技法は、一般にビデオコーディングに適用可能であり得、およびワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。各ケースでは、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオは、ビデオ符号化器20によって符号化され得る。符号化されたビデオ情報はその後、コンピュータ可読媒体16上に出力インターフェース22によって出力され得る。
【0034】
[0050] コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信のような一過性媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、または他のコンピュータ可読媒体のような記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化されたビデオデータを受信し、および例えば、ネットワーク送信を介して、宛先デバイス14に符号化されたビデオデータを提供し得る。同様に、ディスクスタンピング設備のような媒体製造設備(medium production facility)のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、および符号化されたビデオデータを包含するディスクを製造し得る。したがって、コンピュータ可読媒体(computer-readable medium)16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【0035】
[0051] 宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニットの特性および/または処理を記述するシンタックス要素を含む、ビデオ符号化器20によって定義されたシンタックス情報を含み得、それはまた、ビデオ復号器30によって使用される。ディスプレイデバイス32は、ユーザに復号されたビデオデータを表示し、および陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような多様なディスプレイデバイスのうちの任意のものを備え得る。
【0036】
[0052] ビデオ符号化器20およびビデオ復号器30は、ITU-T H.265とも呼ばれる高効率ビデオコーディング(HEVC)規格のようなビデオコーディング規格にしたがって動作し得る。代替として、ビデオ符号化器20およびビデオ復号器30は、MPEG 4、Part 10、アドバンスドビデオコーディング(AVC)、またはそのような規格の拡張と代替として呼ばれる、ITU-T H.264規格のような、他の所有権または工業規格にしたがって動作し得る。この開示の技法は、しかしながら、いずれの特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2およびITU-T H.263を含む。
図1には示されていないが、いくつかの態様では、ビデオ符号化器20およびビデオ復号器30は各々、オーディオ符号化器および復号器と統合され得、および共通のデータストリームまたは別個のデータストリーム中でのオーディオおよびビデオの両方の符号化を扱うために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能である場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコルに、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルにしたがい得る。
【0037】
[0053] ビデオ符号化器20およびビデオ復号器30は各々、1つまたは複数のマイクロプロセッサ、(固定機能(fixed-function)回路および/またはプログラマブル処理回路を含む)処理回路、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、様々な適切な符号化器および/または復号器回路のうちの任意のものとしてインプリメントされ得る。本技法がソフトウェアにおいて部分的にインプリメントされるとき、デバイスは、適した非一時的コンピュータ可読媒体中にソフトウェアのための命令を記憶し、およびこの開示の技法を遂行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオ符号化器20およびビデオ復号器30の各々は、1つまたは複数の符号化器または復号器中に含まれ得、それらのうちのいずれも、それぞれのデバイス中において、組み合わされた符号化器/復号器(CODEC)の一部として統合され得る。ビデオ符号化器20および/またはビデオ復号器30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラ電話のようなワイヤレス通信デバイスを備え得る。
【0038】
[0054] 一般に、ITU-T H.265によると、ビデオピクチャは、ルーマサンプルおよびクロマサンプルの両方を含み得るコーディングツリーユニット(CTU:coding tree unit)(または最大コーディングユニット(LCU:largest coding unit))のシーケンスへと分割され得る。代替として、CTUは、モノクロームデータ(すなわち、ルーマサンプルのみ)を含み得る。ビットストリーム内のシンタックスデータ(syntax data)は、CTUについてのサイズを定義し得、それは、ピクセル数の観点から最大コーディングユニットである。スライスは、コーディング順序でいくつかの連続するCTUを含む。ビデオピクチャは、1つまたは複数のスライスへと区分化され得る。各CTUは四分木(quadtree)にしたがってコーディングユニット(CU)へと分けられ得る。一般に、四分木データ構造(quadtree data structure)は、CUごとに1つのノードを含み、ルートノード(root node)が、CTUに対応する。CUが4つのサブCUへと分けられる場合、CUに対応するノードは、4つのリーフノード(leaf node)を含み、それらの各々が、サブCUのうちの1つに対応する。
【0039】
[0055] 四分木データ構造の各ノードは、対応するCUにシンタックスデータを提供し得る。例えば、四分木におけるノードは、そのノードに対応するCUがサブCUへと分割されるかどうかを示す分割フラグ(split flag)を含み得る。CUについてのシンタックス要素は再帰的に定義され得、およびCUがサブCUへと分けられるかどうかに依存し得る。CUがこれ以上分けられない場合、それは、リーフCUと呼ばれる。この開示では、リーフCUの4つのサブCUもまた、元のリーフCUの明示的な分割が存在しない場合でも、リーフCUと呼ばれることになる。例えば、16x16のサイズのCUがこれ以上分けられない場合、4つの8x8のサブCUもまた、16x16のCUが決して分けられなかったといえども、リーフCUと呼ばれることになる。
【0040】
[0056] CUは、CUがサイズ区別(size distinction)を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。例えば、CTUは、(サブCUとも呼ばれる)4つの子ノードへと分けられ得、および各子ノードは次に、親ノードになり、および別の4つの子ノードへと分けられ得る。四分木のリーフノードと呼ばれる最終の分けられていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連付けられたシンタックスデータは、最大CU深度と呼ばれる、CTUが分けられ得る最大回数を定義し得、およびまた、コーディングノードの最小サイズを定義し得る。それ故に、ビットストリームはまた、最小コーディングユニット(SCU:smallest coding unit)を定義し得る。この開示は、HEVCのコンテキストにおけるCU、予測ユニット(PU:prediction unit)、または変換ユニット(TU:transform unit)のうちの任意のもの、または他の規格のコンテキストにおける同様のデータ構造(例えば、H.264/AVCにおけるそのマクロブロックおよびサブブロック)を指すために「ブロック(block)」という用語を使用する。
【0041】
[0057] CUは、コーディングノードと、そのコーディングノードに関連付けられた予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、および形状が概ね正方形である。CUのサイズは、8×8ピクセルから最大で、最大サイズのCTUのサイズ、例えば、64×64ピクセルまたはそれ以上までの範囲に及び得る。各CUは、1つまたは複数のPUおよび1つまたは複数のTUを包含し得る。CUに関連付けられたシンタックスデータは、例えば、CUの1つまたは複数のPUへの区分化を記述し得る。区分化モード(Partitioning mode)は、CUがスキップまたは直接モード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかの間で異なり得る。PUは、形状が非正方形になるように区分化され得る。CUに関連付けられたシンタックスデータはまた、例えば、四分木にしたがったCUの1つまたは複数のTUへの区分化を記述し得る。TUは、形状が正方形または非正方形(例えば、長方形)であることができる。
【0042】
[0058] HEVC規格は、TUにしたがった変換を許容し、それは、CUによって異なり得る。TUは典型的に、区分化されたCTUのために定義された所与のCU内のPU(またはCUの区分)のサイズに基づいてサイジングされるが、これは、いつもこのケースが起こり得るわけではない。TUは典型的に、PU(または、例えば、イントラ予測のケースでは、CUの区分)と同じサイズであるかまたはより小さい。いくつかの例では、CUに対応する残差サンプルは、「残差四分木」(RQT:residual quad tree)として知られる四分木構造を使用してより小さいユニットへと再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれ得る。TUに関連付けられたピクセル差分値(Pixel difference value)は、変換係数(transform coefficient)を作り出すために変換され得、それは、量子化され得る。
【0043】
[0059] リーフCUは、インター予測を使用して予測されるときに、1つまたは複数の予測ユニット(PU)を含み得る。一般に、PUは、対応するCUの全てまたは一部分に対応する空間的エリアを表し、およびそのPUについての参照サンプルを取り出すおよび/または生成するためのデータを含み得る。その上、PUは、予測に関するデータを含む。CUがインターモード符号化されるとき、CUの1つまたは複数のPUは、1つまたは複数の動きベクトルのような動き情報を定義するデータを含み得るか、またはそれらPUは、スキップモードコーディングされ得る。PUについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(例えば、4分の1ピクセル精度または8分の1ピクセル精度)、動きベクトルが指し示す参照ピクチャ、および/または動きベクトルについての参照ピクチャリスト(例えば、List0またはList1)を記述し得る。
【0044】
[0060] リーフCUはまた、イントラモード予測され得る。一般に、イントラ予測は、イントラモードを使用してリーフCU(またはその区分)を予測することを伴う。ビデオコーダは、リーフCU(またはその区分)の予測に使用するために、リーフCUに近隣する以前にコーディングされたピクセルのセットを選択し得る。
【0045】
[0061] リーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上述されたように、(TU四分木構造とも呼ばれる)RQTを使用して指定され得る。例えば、分割フラグは、リーフCUが4つの変換ユニットへと分けられるかどうかを示し得る。その後、各TUは、さらなるサブTUへとさらに分けられ得る。TUがこれ以上分けられないとき、それは、リーフTUと呼ばれ得る。概して、イントラコーディングの場合、リーフCUに属する全てのリーフTUは、同じイントラ予測モードを共有する。すなわち、リーフCUの全てのTUについて予測された値を算出するために、同じイントラ予測モードが概して適用される。イントラコーディングの場合、ビデオ符号化器は、TUに対応するCUの一部分と元のブロックとの間の差分として、イントラ予測モードを使用して、各リーフTUについての残差値を算出し得る。TUは、必ずしもPUのサイズに限定されるわけではない。このことから、TUは、PUより大きいことも小さいこともあり得る。イントラコーディングの場合、CUの区分、またはCU自体は、CUについて対応するリーフTUとコロケート(collocate)され得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
【0046】
[0062] その上、リーフCUのTUはまた、残差四分木(RQT)と呼ばれる、それぞれの四分木データ構造に関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUへと区分化されるかを示す四分木を含み得る。TU四分木のルートノードは概して、リーフCUに対応するが、その一方で、CU四分木のルートノードは概して、CTU(またはLCU)に対応する。分けられないRQTのTUは、リーフTUと呼ばれる。一般に、この開示は、別途記載されない限り、リーフCUおよびリーフTUそれぞれを指すために、CUおよびTUという用語を使用する。
【0047】
[0063] ビデオシーケンスは典型的に、ランダムアクセスポイント(RAP:random-access point)ピクチャから開始する、一連のビデオフレームまたはピクチャを含む。ビデオシーケンスは、ビデオシーケンスの特性であるシーケンスパラメータセット(SPS:sequence parameter set)中にシンタックスデータを含み得る。ピクチャの各スライスは、それぞれのスライスについての符号化モードを記述するスライスシンタックスデータを含み得る。ビデオ符号化器20は典型的に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロック上で動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定のまたは変動するサイズを有し得、および指定されたコーディング規格にしたがってサイズが異なり得る。
【0048】
[0064] 例として、予測は、様々なサイズのPUについて遂行され得る。特定のCUのサイズが2N×2Nであると想定すると、イントラ予測(intra-prediction)は、2N×2NまたはN×NのPUサイズに対して遂行され得、およびインター予測(inter-prediction)は、2N×2N、2N×N、N×2N、またはN×Nの対称PUサイズに対して遂行され得る。インター予測のための非対称区分化(asymmetric partitioning)はまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについて遂行され得る。非対称区分化では、CUの一方向は区分化されないが、その一方で、他の方向は、25%および75%へと区分化される。25%区分に対応するCUの一部分は、「n」によって示され、その後に「上」、「下」、「左」、または「右」のインジケーションが続く。このことから、例えば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平に区分化される2N×2N CUを指す。
【0049】
[0065] この開示では、「N×N」および「N掛けるN(N by N)」は、垂直および水平寸法の観点からビデオブロックのピクセル寸法、例えば、16×16ピクセルまたは16掛ける16ピクセルを指すために交換可能に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセル(y=16)を、および水平方向に16ピクセル(x=16)を有することになる。同じように、N×Nブロックは概して、垂直方向にNピクセルを、および水平方向にNピクセルを有し、ここで、Nは、自然数値を表す。ブロック中のピクセルは、行と列に配置され得る。その上、ブロックは、水平方向において、垂直方向と同じ数のピクセルを必ずしも有する必要はない。例えば、ブロックは、N×Mピクセルを備え得、ここで、Mは、必ずしもNと等しいわけではない。
【0050】
[0066] CUのPUを使用するイントラ予測またはインター予測コーディングに続いて、ビデオ符号化器20は、CUのTUについての残差データを算出し得る。PUは、(ピクセルドメインとも呼ばれる)空間的ドメイン中で予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、およびTUは、変換、例えば、離散コサイン変換(DCT:discrete cosine transform)、整数変換、ウェーブレット変換、または残差ビデオデータへの概念的に同様の変換、の適用に続いて変換ドメイン中に係数を備え得る。残差データは、符号化されていないピクチャとのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオ符号化器20は、CUについての残差データを表す量子化された変換係数を含むようにTUを形成し得る。すなわち、ビデオ符号化器20は、(残差ブロックの形態の)残差データを算出し、変換係数のブロックを作り出すために残差ブロックを変換し、およびその後、量子化された変換係数を形成するために変換係数を量子化し得る。ビデオ符号化器20は、量子化された変換係数を含むTU、ならびに他のシンタックス情報(例えば、TUについての分割情報(splitting information))を形成し得る。
【0051】
[0067] 上述されたように、変換係数を作り出すための任意の変換に続いて、ビデオ符号化器20は、変換係数の量子化を遂行し得る。量子化は概して、変換係数を表すために使用されるデータの量をできる限り低減するためにそれら係数が量子化されるプロセスを指し、さらなる圧縮を提供する。量子化プロセスは、係数のうちのいくつかまたは全てに関連付けられたビット深度(bit depth)を低減し得る。例えば、nビット値は、量子化中にmビット値に切り捨てられ得、ここで、nは、mより大きい。
【0052】
[0068] 量子化に続いて、ビデオ符号化器は、変換係数を走査し得、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出す。走査は、アレイの前方により高いエネルギー(およびしたがって、より低い周波数)係数を置き、且つアレイの後方により低いエネルギー(およびしたがって、より高い周波数)係数を置くように設計され得る。いくつかの例では、ビデオ符号化器20は、エントロピー符号化(entropy encode)されることができる直列化されたベクトルを作り出すために、量子化された変換係数を走査するための予め定義された走査順序を利用し得る。他の例では、ビデオ符号化器20は、適応走査を遂行し得る。1次元ベクトルを形成するために量子化された変換係数を走査した後に、ビデオ符号化器20は、例えば、コンテキスト適応可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分化エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法にしたがって、1次元ベクトルをエントロピー符号化し得る。ビデオ符号化器20はまた、ビデオデータを復号する際に、ビデオ復号器30によって使用するための符号化されたビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【0053】
[0069] CABACを遂行するために、ビデオ符号化器20は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの近隣値が非ゼロであるか否かに関連し得る。CAVLCを遂行するために、ビデオ符号化器20は、送信されることになるシンボルについての可変長コード(variable length code)を選択し得る。VLCにおけるコードワードは、比較的より短いコードがより確実なシンボルに対応する一方、より長いコードがより確実でないシンボルに対応するように構築され得る。このように、VLCの使用は、例えば、送信されることになる各シンボルについての等しい長さのコードワードを使用することを通してビット節約を達成し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0054】
[0070] 一般に、ビデオ復号器30は、符号化されたデータを復号するために、ビデオ符号化器20によって遂行されるものと実質的に同様であり、にもかかわらず相反する、プロセスを遂行する。例えば、ビデオ復号器30は、残差ブロックを再び作り出す(reproduce)ために、受信されたTUの係数を逆量子化および逆変換する。ビデオ復号器30は、予測されたブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)を使用する。その後、ビデオ復号器30は、元のブロックを再び作り出すために、(ピクセルごとに)予測されたブロックと残差ブロックとを組み合わせる。ブロック境界に沿って視覚的アーティファクト(visual artifact)を低減するためにデブロッキングプロセス(deblocking process)を遂行するといったような、追加の処理が遂行され得る。さらに、ビデオ復号器30は、ビデオ符号化器20のCABAC符号化プロセスと実質的に同様であり、にもかかわらず相反する方法で、CABACを使用してシンタックス要素を復号し得る。
【0055】
[0071] ビデオ符号化器20はさらに、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS:picture parameter set)、またはビデオパラメータセット(VPS:video parameter set)のような他のシンタックスデータ中で、ビデオ復号器30に、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータのようなシンタックスデータを送り得る。
【0056】
[0072]
図2は、この開示の1つまたは複数のDMVD技法を遂行するように構成され得るビデオ符号化器20の例を例示するブロック図である。例えば、ビデオ符号化器20は、(1)DMVDによって導出されたMV、および/または、(2)初期MDとDMVDによって導出されたMVとの間のMV差分に、1つまたは複数の制約を適用するように構成され得る。制約がDMVDに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、MVのリストと最終の選択されたMVとが異なり得る。
【0057】
[0073] 第1の例では、制約は、導出されたMVが対称であるかどうかを含む。第2の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうかを含む。第3の例では、制約は、導出されたMVが反対称であるかどうかを含む。第4の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうかを含む。いくつかの例では、対称/反対称MV/MV差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がいくつかの例でのみ適用されるように、制約には条件が設けられ得る。
【0058】
[0074] 特に、ビデオ符号化器20は、再構築ループ中にこの開示のDMVD技法を遂行し得、それは、逆量子化ユニット58、逆変換ユニット60、および加算器62によって遂行されるプロセスを含む。さらに、上述されたように、ビデオ符号化器20は、DMVDを遂行する際に、ビデオ復号器30のようなビデオ復号器を支援し得るある特定の値をシグナリングし得る。
【0059】
[0075] ビデオ符号化器20は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを遂行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または取り除くために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または取り除くために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのうちの任意のものを指し得る。単方向(uni-directional)予測(Pモード)または双予測(Bモード)のようなインターモードは、いくつかの時間ベースのコーディングモードのうちの任意のものを指し得る。
【0060】
[0076]
図2に示されているように、ビデオ符号化器20は、符号化されることになるビデオフレーム内の現在のビデオブロックを受信する。
図2の例では、ビデオ符号化器20は、ビデオデータメモリ66、モード選択ユニット40、(復号ピクチャバッファ(DPB:a decoded picture buffer)とも呼ばれ得る)参照ピクチャメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。モード選択ユニット40は次に、動き補償ユニット44、動き推定ユニット42、イントラ予測ユニット46、および区分化ユニット(partition unit)48を含む。ビデオブロック再構築のために、ビデオ符号化器20はまた、逆量子化ユニット58、逆変換ユニット60、および加算器62を含む。デブロッキングフィルタ(deblocking filter)(
図2には図示せず)もまた、再構築されたビデオからブロッキネスアーティファクト(blockiness artifact)を取り除くようにブロック境界をフィルタリングするために含まれ得る。所望される場合、デブロッキングフィルタは典型的に、加算器62の出力をフィルタリングするであろう。追加のフィルタ(インループまたはポストループ)もまた、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは簡潔さのために示されていないが、所望される場合、(インループフィルタとして)加算器50の出力をフィルタリングし得る。
【0061】
[0077] ビデオデータメモリ66は、ビデオ符号化器20のコンポーネントによって符号化されることになるビデオデータを記憶するように構成され得る。ビデオデータメモリ101中に記憶されるビデオデータは、例えば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、例えば、イントラまたはインター予測モードで、ビデオ符号化器20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101は、同期動的ランダムアクセスメモリ(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含むDRAMのような、多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ101は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ101は、ビデオ符号化器20の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【0062】
[0078] 符号化プロセス中に、ビデオ符号化器20は、コーディングされることになるビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックへと分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して、受信されたビデオブロックのインター予測符号化を遂行する。イントラ予測ユニット46は代替として、空間的予測を提供するために、コーディングされることになるブロックと同じフレームまたはスライス中の1つまたは複数の近隣ブロックに対して、受信されたビデオブロックのイントラ予測符号化を遂行し得る。ビデオ符号化器20は、例えば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパスを遂行し得る。
【0063】
[0079] さらに、区分化ユニット(partition unit)48は、以前のコーディングパスにおける以前の区分化スキームの評価に基づいて、ビデオデータのブロックをサブブロックへと区分化し得る。例えば、区分化ユニット48は、レート-歪み分析(例えば、レート-歪み最適化)に基づいて、最初にフレームまたはスライスをCTUへと区分化し、およびCTUの各々をサブCUへと区分化し得る。モード選択ユニット40はさらに、CTUのサブCUへの区分化を示す四分木データ構造を作り出し得る。四分木のリーフノードCUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。
【0064】
[0080] モード選択ユニット40は、例えば、誤差結果に基づいて、予測モードのうちの1つ、イントラまたはインターを選択し得、および残差データを生成するために加算器50に、および参照フレームとして使用するための符号化されたブロックを再構築するために加算器62に、結果として生じる予測されたブロックを提供する。モード選択ユニット40はまた、エントロピー符号化ユニット56に、動きベクトル、イントラモードインジケータ、区分化情報、および他のそのようなシンタックス情報のようなシンタックス要素を提供する。
【0065】
[0081] 動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別個に例示されている。動き推定ユニット42によって遂行される動き推定は、動きベクトルを生成するプロセスであり、それは、ビデオブロックについての動きを推定する。動きベクトルは、例えば、現在のフレーム(または他のコーディングされたユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコーディングされたユニット)内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分の和(SAD:sum of absolute difference)、2乗差分の和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされることになるブロックに密接にマッチすることを見出されるブロックである。いくつかの例では、ビデオ符号化器20は、参照ピクチャメモリ64中に記憶された参照ピクチャのサブ整数ピクセル位置についての値を算出し得る。例えば、ビデオ符号化器20は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、全ピクセル位置および分数ピクセル位置に対して動き探索を遂行し、および分数ピクセル精度(fractional pixel precision)で動きベクトルを出力し得る。
【0066】
[0082] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUについての動きベクトルを算出する。参照ピクチャは、第1の参照ピクチャリスト(List0)または第2の参照ピクチャリスト(List1)から選択され得、それらの各々は、参照ピクチャメモリ64中に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、エントロピー符号化ユニット56および動き補償ユニット44に算出された動きベクトルを送る。
【0067】
[0083] 動き補償ユニット44によって遂行される動き補償は、動き推定ユニット42によって決定される動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。繰り返すが、いくつかの例では、動き推定ユニット42および動き補償ユニット44は機能的に統合され得る。現在のビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つ中に、動きベクトルが指し示す予測ブロックをロケートし得る。加算器50は、以下に論述されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を遂行し、および動き補償ユニット44は、クロマ成分とルーマ成分との両方について、ルーマ成分に基づいて算出された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際に、ビデオ復号器30によって使用するための、ビデオブロックおよびビデオスライスに関連付けられたシンタックス要素を生成し得る。
【0068】
[0084] イントラ予測ユニット46は、上述されたように、動き推定ユニット42および動き補償ユニット44によって遂行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用するためのイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、およびイントラ予測ユニット46(または、いくつかの例ではモード選択ユニット40)は、テストされたモードから使用するための適切なイントラ予測モードを選択し得る。
【0069】
[0085] 例えば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてのレート-歪み分析を使用してレート-歪み値を算出し、およびテストされたモードの中で最良のレート-歪み特性を有するイントラ予測モードを選択し得る。レート-歪み分析は概して、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量、ならびに符号化されたブロックを作り出すために使用されたビットレート(すなわち、ビットの数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについての最良のレート-歪み値を示すかを決定するために、様々な符号化されたブロックについての歪みおよびレートからの比を算出し得る。
【0070】
[0086] ブロックについてイントラ予測モードを選択した後に、イントラ予測ユニット46は、エントロピー符号化ユニット56にそのブロックについての選択されたイントラ予測モードを示す情報を提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオ符号化器20は、様々なブロックについての符号化コンテキストの定義、およびそれらコンテキストの各々に対して使用するための最確イントラ予測モード(most probable intra-prediction mode)、イントラ予測モードインデックス表、および修正されたイントラ予測モードインデックス表のインジケーションを、送信されたビットストリーム構成データ中に含め得、それは、複数のイントラ予測モードインデックス表および複数の修正されたイントラ予測モードインデックス表(コードワードマッピング表とも呼ばれる)を含み得る。
【0071】
[0087] ビデオ符号化器20は、コード化されている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を遂行する1つまたは複数のコンポーネントを表す。変換処理ユニット52は、残差ブロックに離散コサイン変換(DCT)または概念的に同様の変換のような変換を適用し、変換係数値を備えるビデオブロックを作り出す。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換(DST)、または他のタイプの変換が、DCTの代わりに使用されることができる。いずれのケースでも、変換処理ユニット52は、残差ブロックに変換を適用し、変換係数のブロックを作り出す。変換は、ピクセルドメインから周波数ドメインのような変換ドメインに残差情報をコンバートし得る。変換処理ユニット52は、量子化ユニット54に結果として生じる変換係数を送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調節することによって修正され得る。
【0072】
[0088] 量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。例えば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分化エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を遂行し得る。コンテキストベースのエントロピーコーディングのケースでは、コンテキストは近隣ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化されたビットストリーム(encoded bitstream)は、別のデバイス(例えば、ビデオ復号器30)に送信され得るか、または後の送信または取り出しのためにアーカイブされ得る。
【0073】
[0089] 逆量子化ユニット58および逆変換ユニット60は、ピクセルドメイン中の残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。特に、加算器62は、参照ピクチャメモリ64中での記憶のための再構築されたビデオブロックを作り出すために、動き補償ユニット44またはイントラ予測ユニット46によって先に作り出された動き補償予測ブロックに再構築された残差ブロックを追加する。再構築されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、参照ブロックとして動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0074】
[0090]
図3は、この開示の1つまたは複数のDMVD技法を遂行するように構成され得るビデオ復号器30の例を例示するブロック図である。例えば、ビデオ復号器30は、(1)DMVDによって導出されたMV、および/または、(2)初期MDとDMVDによって導出されたMVとの間のMV差分に、1つまたは複数の制約を適用するように構成され得る。制約がDMVDに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、MVのリストと最終の選択されたMVとが異なり得る。
【0075】
[0091] 第1の例では、制約は、導出されたMVが対称であるかどうかを含む。第2の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうかを含む。第3の例では、制約は、導出されたMVが反対称であるかどうかを含む。第4の例では、制約は、初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうかを含む。いくつかの例では、対称/反対称MV/MV差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がいくつかの例でのみ適用されるように、制約には条件が設けられ得る。
【0076】
[0092]
図3の例では、ビデオ復号器30は、ビデオデータメモリ68、エントロピー復号ユニット70、動き補償ユニット72、イントラ予測ユニット74、逆量子化ユニット76、逆変換ユニット78、参照ピクチャメモリ82および加算器80を含む。ビデオ復号器30は、いくつかの例では、ビデオ符号化器20(
図2)に関して説明された符号化パスと概して相反する復号パスを遂行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、その一方で、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0077】
[0093] ビデオデータメモリ68は、ビデオ復号器30のコンポーネントによって復号されることになる、符号化されたビデオビットストリームのような符号化されたビデオデータを記憶し得る。ビデオデータメモリ68中に記憶されるビデオデータは、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理的データ記憶媒体にアクセスすることによって、例えば、コンピュータ可読媒体16から、例えば、カメラのようなローカルビデオソースから、取得され得る。ビデオデータメモリ68は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ(CPB:a coded picture buffer)を形成し得る。参照ピクチャメモリ82は、例えば、イントラまたはインター予測モードで、ビデオ復号器30によってビデオデータを復号する際に使用するための、または出力のための参照ビデオデータを記憶するメモリであり得る。ビデオデータメモリ68および参照ピクチャメモリ82は、SDRAM、MRAM、RRAM、または他のタイプのメモリデバイスを含むDRAM)のような多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ68および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ68は、ビデオ復号器30の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【0078】
[0094] ビデオデータメモリ68は、ビットストリームの符号化されたビデオデータ(例えば、NALユニット)を受信および記憶する。エントロピー復号ユニット70は、ビデオデータメモリ68から符号化されたビデオデータ(例えば、NALユニット)を受信し得、およびシンタックス要素を取得するためにそのNALユニットを構文解析(parse)し得る。エントロピー復号ユニット70は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。復号プロセス中に、ビデオ復号器30は、ビデオ符号化器20から符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオ復号器30のエントロピー復号ユニット70は、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動き補償ユニット72に動きベクトルおよび他のシンタックス要素を転送する。ビデオ復号器30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0079】
[0095] ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、現在のフレームまたはピクチャの以前に復号されたブロックからのデータおよびシグナリングされたイントラ予測モードに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを作り出す。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから作り出され得る。ビデオ復号器30は、参照ピクチャメモリ82中に記憶された参照ピクチャに基づいて、デフォルト構築技法を使用して参照フレームリスト、List0およびList1、を構築し得る。動き補償ユニット72は、動きベクトルおよび他のシンタックス要素を構文解析することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、および復号されている現在のビデオブロックについての予測ブロックを作り出すために予測情報を使用する。例えば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラまたはインター予測)と、インター予測スライスタイプ(例えば、BスライスまたはPスライス)と、スライスについての参照ピクチャリストのうちの1つまたは複数についての構築情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測状態と、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【0080】
[0096] 動き補償ユニット72はまた、補間フィルタ(interpolation filter)に基づいて補間を遂行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルについての補間された値を算出するために、ビデオブロックの符号化中にビデオ符号化器20によって使用されるような補間フィルタを使用し得る。このケースでは、動き補償ユニット72は、受信されたシンタックス要素からビデオ符号化器20によって使用される補間フィルタを決定し、および予測ブロックを作り出すために補間フィルタを使用し得る。
【0081】
[0097] 逆量子化ユニット76は、ビットストリーム中で提供され、且つエントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆-量子化(de-quantize)する。逆量子化プロセスは、量子化の程度、および同じように、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオ復号器30によって算出される量子化パラメータQPYの使用を含み得る。
【0082】
[0098] 逆変換ユニット78は、ピクセルドメイン中に残差ブロックを作り出すために、変換係数に逆変換、例えば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【0083】
[0099] 動き補償ユニット72が動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックについての予測ブロックを生成した後に、ビデオ復号器30は、逆変換ユニット78からの残差ブロックを、動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を遂行する1つまたは複数のコンポーネントを表す。所望される場合、デブロッキングフィルタもまた、ブロッキネスアーティファクトを取り除くために、復号されたブロックをフィルタリングするように適用され得る。(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタもまた、ピクセル遷移を平滑化するために、またはそうでない場合はビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックはその後、参照ピクチャメモリ82中に記憶され、それは、後続する動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、
図1のディスプレイデバイス32のようなディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
【0084】
[0100] この開示の技法にしたがって、ビデオ符号化器20およびビデオ復号器30のようなビデオコーダは、ビデオデータの現在のブロックについての動き情報を導出するために、DMVDを遂行し得る。特に、これらの技法は、単独または任意の組み合わせで、以下の技法のうちの任意のものまたは全てを含み得る。
【0085】
[0101] この開示の概念のうちの1つは、DMVDを改善することである。それら技法は、以下に論述されるように、いくつかの異なる項目別の態様において詳しく説明される。DMVDを改善するための以下の技法は、個々に適用され得る。代替として、この開示に説明される技法の任意の組み合わせは、ともに適用され得る。以下のDMVD技法は、個々に適用されようと、または任意の組み合わせで適用されようと、コーディング効率を増大させ、および/またはビットレートを低減し得る。例えば、(1)DMVDによって導出されたMV、および/または、(2)初期MVとDMVDによって導出されたMVとの間のMV差分を制約することは、コーディング効率を増大させ、および/またはビットレートを低減し得る。前述の例の各々では、制約は、条件に基づいて適用され得る。
【0086】
[0102] HEVCでは、スライス中の最大コーディングユニットは、コーディングツリーブロック(CTB:coding tree block)またはコーディングツリーユニット(CTU)と呼ばれる。CTBは、四分木を包含し、それのノードは、コーディングユニットである。CTBのサイズは、(技術的には、8×8のCTBサイズがサポートされることができるが)HEVCメインプロファイルでは16×16~64×64までの範囲中にあることができる。コーディングユニット(CU)は、CTBのと同じサイズであることができるが、且つ8×8と同じくらい小さくあることできる。各コーディングユニットは、1つのモードでコーディングされる。CUがインターコーディングされるとき、それは、2つまたは4つの予測ユニット(PU)へとさらに区分化され得るか、またはさらなる区分化が適用されないときには単に1つのPUになり得る。2つのPUが1つのCU中に存在するとき、それらは、半分のサイズの矩形、またはCUの1/4または3/4のサイズの2つの矩形であることができる。CUがインターコーディングされるとき、動き情報の1つのセットが、各PUについて存在する。加えて、各PUは、動き情報のセットを導出するために、一意のインター予測モードでコーディングされる。
【0087】
[0103] HEVC規格では、予測ユニット(PU)についてそれぞれ、マージモード(スキップは特殊なケースのマージと見なされる)および高度動きベクトル予測(AMVP:advanced motion vector prediction)モードと名付けられた、2つのインター予測モードが存在する。AMVPモードまたはマージモード(merge mode)のいずれでも、動きベクトル(MV)候補リストが、複数の動きベクトル予測子のために維持される。現在のPUの動きベクトル(1つ以上)、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補を取ることによって生成される。
【0088】
[0104] MV候補リストは、マージモードの場合は最大で5つまでの候補を、およびAMVPモードの場合は2つの候補のみを包含する。マージ候補は、動き情報のセット、例えば、両方の参照ピクチャリスト(List0およびList1)に対応する動きベクトルと参照インデックスとを包含し得る。マージ候補がマージインデックスによって識別される場合、参照ピクチャは、現在のブロックの予測のために使用され、ならびに関連する動きベクトルが決定される。しかしながら、AMVPモード下では、List0またはList1のいずれかからの各潜在的な予測方向について、AMVP候補が1つの動きベクトルのみを包含することから、MV候補リストに対するMVP予測子(MVP)インデックスとともに、参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルは、さらに精緻化されることができる。上記に見られることができるように、マージ候補は、動き情報のフルセットに対応するが、その一方でAMVP候補は、特定の予測方向についての単に1つの動きベクトルおよび参照インデックスを包含する。両方のモードについての候補は、同じ空間的および時間的近隣ブロックから同様に導出される。
【0089】
[0105] DMVD技法の概念は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)が、以前に復号された情報を使用して、動きベクトルおよび予測方向のような動き情報を導出するためのものである。ここに使用される場合、「MV」という頭字語は、動きベクトルを表す。List0およびList1は、復号ピクチャバッファ(DPB)または(
図3の)参照ピクチャメモリ82中のピクチャのリストとして構築される2つのリストである。参照ピクチャインデックス(reference picture index)と呼ばれるインデックスは、これらのリストのうちの1つ中で特定のピクチャを識別するために使用される。単予測(uni-prediction)の場合、ピクチャは、これらのリストのうちのいずれかから選択されることができる。双予測の場合、2つのピクチャが、各リストにつき1つずつ(例えば、List0から1つおよびList1から1つ)選択される。現在のアプローチでは、DMVDによって導出されたList0 MVおよびList1 MVは、バイラテラルテンプレートマッチングおよびフレームレートアップコンバージョン(FRUC)テンプレートマッチングのようないくつかのDMVD技法については独立して決定される。この開示では、初期MVに基づいて双予測MV(例えば、List0 MVとList1 MVとを含むMVのペア)を導出するとき、対称/反対称MVおよび/または対称/反対称MV差分の制約が適用され得る。いくつかの例では、対称MV制約および対称MV差分制約を適用するといったように、1つよりも多くの制約が適用され得る。制約は、1つまたは複数の条件を含み得る。いくつかの例では、制約が(例えば、DMVDから導出されたMVおよび/またはMV差分に制約を適用することによって)DMVDに適用されると、制約を満たす(例えば、パスする)導出された動き情報のみが、有効な動き情報と見なされ得る。例えば、制約を満たす(例えば、パスする)DMVDから導出されたMVは、有効なMVと見なされ得、および制約を満たさないDMVDから導出されたMVは、無効なMVと見なされ得る。別の例では、制約を満たすDMVDから導出されたMV差分は、有効なMV差分と見なされ得、および制約を満たさないDMVDから導出されたMV差分は、無効なMV差分と見なされ得る。いくつかの例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、ビデオデータ(例えば、ビデオデータの現在のブロック)をコーディングするために有効な動きベクトル情報を使用することと、ビデオデータ(例えば、ビデオデータの現在のブロック)をコーディングするために無効な動きベクトル情報を使用しないこととを行うように構成され得る。いくつかの例では、有効な動きベクトル情報はその後、他の有効な動きベクトル情報と比較され得、および最低コストメトリックを有すると決定された有効な動きベクトル情報が選択される。
【0090】
[0106] 空間的MV候補(Spatial MV candidate)は、特定のPU(PU0)について、
図4に示されている近隣ブロックから導出されるが、ブロックから候補を生成するための方法は、マージモードとAMVPモードとの場合で異なる。マージモードでは、最大で4つまでの空間的MV候補が、番号付きで
図4Aに示されている順序で導出されることができ、およびその順序は、次の通りである:
図4Aに示されているように、左(0、A1)、上(1、B1)、右上(2、B0)、左下(3、A0)、および左上(4、B2)。
【0091】
[0107] AVMPモードでは、近隣ブロックは、2つのグループへと分割される:
図4Bに示されているように、ブロック0および1から成る左グループ、およびブロック2、3、および4から成る上グループ。各グループについて、シグナリングされた参照インデックスによって示されたものと同じ参照ピクチャを指す近隣ブロック中の潜在的な候補は、グループの最終候補を形成するために選ばれるための最高の優先度を有する。全ての隣接ブロックが同じ参照ピクチャを指し示す動きベクトルを包含するわけではない可能性がある。したがって、そのような候補が見出されることができない場合、第1の利用可能な候補が、最終候補を形成するためにスケーリングされることになり、このことから、時間的距離差分(temporal distance difference)が補償されることができる。
【0092】
[0108] 時間的動きベクトル予測子(TMVP)候補は、有効且つ利用可能である場合、空間的動きベクトル候補の後にMV候補リストへと追加される。TMVP候補についての動きベクトル導出のプロセスは、マージモードとAMVPモードとの両方の場合で同じであるが、しかしながら、マージモードにおけるTMVP候補についてのターゲット参照インデックス(target reference index)は、常に0に設定され得る。TMVP候補導出のためのプライマリブロックロケーションは、空間的近隣候補(spatial neighboring candidate)を生成するために使用される上ブロックおよび左ブロックに対するバイアスを補償するための、ブロック「T」として
図5Aに示されているような、コロケートされたPUの外部の右下ブロックである。しかしながら、そのブロックが現在のCTB行の外部にロケートされるか、または動き情報が利用可能でない場合、そのブロックは、PUの中心ブロックで代用される(substituted with)。
【0093】
[0109] TMVP候補についての動きベクトルは、スライスレベルで示される、コロケートされたピクチャのコロケートされたPUから導出される。コロケートされたPUについての動きベクトルは、コロケートされたMVと呼ばれる。AVCにおける時間的直接モードと同様に、TMVP候補動きベクトルを導出するために、
図5に示されているように、コロケートされたMVは、時間的距離差分を補償するためにスケーリングされる必要がある。
【0094】
[0110] マージモードおよびAMVPモードのいくつかの態様が以下に論述される。
【0095】
[0111] 動きベクトルスケーリング:動きベクトルの値は、提示時間におけるピクチャの距離に比例すると想定される。動きベクトルは、2つのピクチャ、参照ピクチャと、動きベクトルを包含するピクチャ(すなわち、包含ピクチャ(the containing picture))とを関連付ける。動きベクトルが他の動きベクトルを予測するために使用されるとき、包含ピクチャと参照ピクチャとの距離は、ピクチャ順序カウント(POC:Picture Order Count)値に基づいて算出される。
【0096】
[0112] 動きベクトルが予測されるために、その関連する包含ピクチャと参照ピクチャとの両方が異なり得る。したがって、(POCに基づく)新しい距離が算出される。および動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされる。空間的近隣候補の場合、2つの動きベクトルについての包含ピクチャは同じであるが、その一方で参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間的および時間的近隣候補についてのTMVPとAMVPとの両方に適用される。
【0097】
[0113] 人工動きベクトル候補生成(Artificial motion vector candidate generation):動きベクトル候補リスト(motion vector candidate list)が完全でない場合(すなわち、所定の最大数の候補より少ない)、リストが全ての候補を有するまで、人工動きベクトル候補が生成され、且つリストの末尾に挿入される。
【0098】
[0114] マージモードでは、2つのタイプの人工MV候補が存在する:Bスライスについてのみ導出される合成(combined)候補、および第1のタイプが十分な人工候補を提供しない場合にAMVPについてのみ使用されるゼロ候補。
【0099】
[0115] 候補リスト中に既に存在し、且つ必要な動き情報を有する候補の各ペアについて、双方向合成動きベクトル候補(bi-directional combined motion vector candidate)が、List0中の1つのピクチャを指す第1の候補の動きベクトルと、List1中の1つのピクチャを指す第2の候補の動きベクトルとの組み合わせによって導出される。
【0100】
[0116] 候補挿入のためのプルーニングプロセス(Pruning process for candidate insertion):異なるブロックからの候補は、偶然同じであり得、それは、マージ/AMVP候補リストの効率を低下させる。プルーニングプロセスは、この問題を解決するために適用される。それは、ある特定の範囲で(in certain extent)同一の候補を挿入するのを避けるために、ある1つの候補を現在の候補リスト中の他の複数の候補に対して比較する。複雑性を低減するために、各潜在的な候補を全ての他の既存の候補と比較する代わりに、限定された数のプルーニングプロセスのみが適用される。
【0101】
[0117] JEM参照ソフトウェアの一例では、復号器側において現在のブロックについての動きベクトル(MV)を導出または精緻化するいくつかのインターコーディングツール(inter coding tool)が存在する。これらのDMVDアプローチは、以下のように詳しく説明される。
【0102】
[0118]
図6および7は、パターンマッチ動きベクトル導出(PMMVD:pattern matched motion vector derivation)のための概念を例示する概念図である。PMMVDモードは、フレームレートアップコンバージョン(FRUC)技法に基づく特殊マージモードである。このマージモードでは、ブロックの動き情報はシグナリングされないが、復号器側において導出される。この技術は、JEMの一例に含まれた。
【0103】
[0119] FRUCフラグは、そのマージフラグが真であるときに、CUについてシグナリングされる。FRUCフラグが偽であるとき、マージインデックスがシグナリングされ、および標準的マージモードが使用される。FRUCフラグが真であるとき、追加のFRUCモードフラグが、ブロックについての動き情報を導出するためにどの方法(バイラテラルマッチングまたはテンプレートマッチング)が使用されるべきかを示すためにシグナリングされる。
【0104】
[0120] 動き導出プロセス中に、初期動きベクトルがまず、バイラテラルマッチングまたはテンプレートマッチングに基づいてCU全体について導出される。まず、CUのマージリスト、またはPMMVDシードと呼ばれるものがチェックされ、および最小マッチングコスト(例えば、レート-歪み(RD:rate-distortion)コスト)をもたらす候補が、開始点として選択される。次に、開始点の周囲でのバイラテラルマッチングまたはテンプレートマッチングに基づく局所探索が遂行され、および最小マッチングコストをもたらすMVが、CU全体についてのMVとして見なされる(taken)。後に、動き情報は、開始点として導出されたCU動きベクトルを用いてサブブロックレベルでさらに精緻化される。
【0105】
[0121] この開示の本技法によると、制約は、例えば、DMVDによって導出されたMVが対称であるか、または反対称であるか、および/または、(2)初期MDとDMVDによって導出されたMVとの間のMV差分が対称であるか、または反対称であるかに基づいて、導出されたCU動きベクトルに適用され得る。前述の例の各々では、制約は、例えば、初期MVまたは導出されたMVについての条件に基づいて適用され得る。
【0106】
[0122]
図6に示されているように、バイラテラルマッチングは、2つの異なる参照ピクチャ(Ref0およびRef1)中で現在のブロックの動き軌道(motion trajectory)に沿った2つの参照ブロック(R
0およびR
1)間のベストマッチ(best match)を見出すことによって、現在のブロック(Cur)の動き情報を導出するために使用される。動き軌道は、画像シーケンス(例えば、参照フレームおよび現在のフレーム)を3次元連続的時空間フィールド(3-dimensional continuous spatio-temporal field)と見なすと、空間および時間を通じてブロック中のピクセルがたどる経路を含み得る。連続的動き軌道の想定の下では、2つの参照ブロック(R
0およびR
1)を指し示す動きベクトルMV0およびMV1は、現在のピクチャ(Cur)と2つの参照ピクチャ(Ref0およびRef1)との間の時間的距離(temporal distance)に比例する。導出されたMV600および602は、バイラテラルマッチングを使用して導出され、およびそれぞれ参照ブロックR’
0およびR’
1を指し示す。特殊なケースとして、現在のピクチャ(Cur)が時間的に2つの参照ピクチャ(Ref0およびRef1)の間にあり、および現在のピクチャから2つの参照ピクチャまでの時間的距離が同じであるとき、バイラテラルマッチングは、ミラーベースの双方向MVになる。その結果として、導出された動きベクトル600および602は、同様にミラーされる(mirrored)。
【0107】
[0123]
図7に示されているように、テンプレートマッチングは、現在のピクチャ中のテンプレート(現在のブロックの上部および/または左近隣ブロック)と参照ピクチャ(Ref0およびRef1)中のブロック(テンプレートと同じサイズ)との間のベストマッチを見出すことによって、現在のブロック(Cur)の動き情報を導出するために使用される。テンプレートは、R
0およびR
1の近隣ブロックを探索することによって、関心ブロック(Cur)を、候補参照(MV0を有するR
0およびMV1を有するR
1)または導出された参照(MV700を有するR’
0およびMV702を有するR’
1)と比較するために使用されるブロックの近隣ピクセルを含み得る。最も類似する参照がその後、予測として使用される。
【0108】
[0124] ビデオ符号化器20において、CUについてFRUCマージモードを使用するかどうかに関する決定は、通常のマージ候補のためになされたようなRDコスト選択に基づく。すなわち、2つのマッチングモード(バイラテラルマッチングおよびテンプレートマッチング)は両方とも、RDコスト選択を使用することによってCUについてチェックされる。最小コストをもたらすものは、他のCUモードとさらに比較される。FRUCマッチングモードが最も効率的なものである場合、FRUCフラグは、CUについて真であると設定され、および関連するマッチングモードが使用される。
【0109】
[0125] 第5回のJVETの会合では、http://phenix.it-sudparis.eu/jvet/において入手可能である「Enhanced Template Matching in FRUC Mode」、JVET-E0035が、FRUCテンプレートマッチングをさらに改善するために提案された。例証的なFRUCテンプレートマッチングモードのフローチャートが、
図8に示されている。第1のステップでは、テンプレートT
0(およびその対応する動き情報MV0)は、list0参照ピクチャから現在のブロックの現在のテンプレートT
Cにマッチすることを見出される。第2のステップでは、テンプレートT
1(およびその対応する動き情報MV1)は、list1参照ピクチャから見出される。取得された動き情報MV0およびMV1は、現在のブロックの予測子を生成すべく双予測を遂行するために使用される。
【0110】
[0126] FRUCテンプレートマッチングモードは、双方向テンプレートマッチング(bi-directional template matching)、および単予測と双予測との間での適応的選択を導入することによって向上され得る。
図8に対する例証的な修正は、
図9において下線が引かれている。
【0111】
[0127] 双方向テンプレートマッチングは、単方向テンプレートマッチングに基づいてインプリメントされ得る。
図8に示されているように、マッチされたテンプレートT
0はまず、List0参照ピクチャからテンプレートマッチングの第1のステップにおいて見出される(800)。List0はここでは、例として取り上げられているに過ぎないことに留意されたい。実際には、第1のステップにおいてList0が使用されるか、またはList1が使用されるかは、対応する参照ピクチャ中の初期テンプレートと現在のテンプレートとの間の初期歪みコスト(initial distortion cost)に適応的である。初期テンプレートは、第1のテンプレートマッチングを遂行する前に利用可能である現在のブロックの初期動き情報で決定されることができる。最小初期テンプレート歪みコスト(minimal initial template distortion cos)に対応する参照ピクチャリストは、テンプレートマッチングの第1のステップにおいて使用されるであろう。例えば、list0に対応する初期テンプレート歪みコストがList1に対応するコストより大きくない場合、List0は、テンプレートマッチングの第1のステップにおいて使用され、およびList1は、第2のステップにおいて使用され)、その後、現在のブロックの現在のテンプレートT
Cは、次の通りに更新される:
T’
C=2*T
C-T
0
【0112】
[0128] 更新された現在のテンプレートT’Cは、現在のテンプレートTCの代わりに、第2のテンプレートマッチングにおいてList1参照ピクチャから別のマッチされたテンプレートT1を見出すために使用される(802)。結果として、マッチされたテンプレートT1は、List0参照ピクチャとList1参照ピクチャとを一緒に使用することによって見出される(804)。このマッチングプロセスは、双方向テンプレートマッチングと呼ばれる。
【0113】
[0129] 動き補償予測(MCP:motion compensation prediction)のための単予測と双予測との間での選択は、テンプレートマッチング歪みに基づき得る。
図9に示されているように、テンプレートマッチング中に、テンプレートT
0とT
C(現在のテンプレート)との間の歪みは、cost0として算出されることができ(900)、現在のテンプレートは、更新され得(902)、およびテンプレートT
1とT’
C(更新された現在のテンプレート)との間の歪みは、cost1として算出されることができる(904)。cost0が0.5*cost1未満である場合(906)、MV0に基づく単予測が、FRUCテンプレートマッチングモードに適用され得(908)、そうでない場合は、MV0およびMV1に基づく双予測が適用される(910)。cost1が、T
C(現在のテンプレート)と0.5*(T
0+T
1)のその予測との間の差分の2倍である、テンプレートT
1とT’
C(更新された現在のテンプレート)との間の差分を示すことから、cost0は、0.5*cost1と比較されることに留意されたい。MCPは、PUレベル動き精緻化に適用され得ることに留意されたい。サブPUレベル動き精緻化は、変更されずに保持され得る。
【0114】
[0130] この開示の技法にしたがって、ビデオ符号化器20およびビデオ復号器30は、制約が、(1)導出されたMVが対称であるかどうか、(2)初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうか、(3)導出されたMVが反対称であるかどうか、および/または(4)初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうか、を含むかどうかに基づいて、PUレベルまたはサブPUレベルでFRUCテンプレートマッチングモード(単方向および双方向の両方)からの導出された動きベクトルを制約し得る。制約が初期MVまたはFRUCテンプレートに基づいてのみ適用されるように、制約には条件が設けられ得る。
【0115】
[0131]
図10は、JEMの一例における双方向オプティカルフローに関する概念を例示する概念図である。双方向オプティカルフロー(BIO)は、双予測のケースでは、ブロックワイズ動き補償(block-wise motion compensation)に加えて(on top of)遂行されるピクセルワイズ動き精緻化(pixel-wise motion refinement)である。BIOがブロック内部の微細な動きを補償することから、BIOを有効にすることは、動き補償のためにブロックサイズを拡大することをもたらす。サンプルレベル動き精緻化(Sample-level motion refinement)は、各サンプルについての微細な動きベクトルを与える明示的な式(an explicit equation)が存在することから、網羅的な探索またはシグナリングを必要としない。
【0116】
[0132] I
(k)を補償ブロック動きの後の基準(reference)k(k=0,1)からのルミナンス値とすると、∂I
(k)/∂x、∂I
(k)/∂yは、それぞれ、I
(k)勾配の水平および垂直成分である。オプティカルフロー(optical flow)が有効であると想定すると、動きベクトルフィールド(v
x,v
y)が、式
【数1】
によって与えられる。
【0117】
[0133] 各サンプルの動き軌道についてオプティカルフロー式をエルミート補間(Hermite interpolation)と組み合わせると、両端部において(at the ends)関数値I
(k)と導関数(derivatives)∂I
(k)/∂x、∂I
(k)/∂yとの両方にマッチする3次の一意の多項式を得られる。t=0におけるこの多項式の値は、BIO予測である:
【数2】
【0118】
[0134] ここで、τ
0およびτ
1は、
図10に示されているような参照フレームまでの距離を表す。距離τ
0およびτ
1は、Ref0およびRef1についてのPOCに基づいて算出される:τ
0=POC(current)-POC(Ref0),τ
1=POC(Ref1)-POC(current)。両方の予測が同じ時間方向から来る場合(両方とも過去から、または両方とも将来から)、符号(signs)は、異なるτ
0・τ
1<0。このケースでは、BIOは、予測が同じ時間モーメント(time moment)から来ない場合にのみ適用され(τ
0≠τ
1)、両方の参照される領域は、非ゼロ動きを有し(MVx
0,MVy
0,MVx
1,MVy
1≠0)、およびブロック動きベクトルは、時間距離に比例する(MVx
0/MVx
1=MVy
0/MVy
1=-τ
0/τ
1)。
【0119】
[0135] 動きベクトルフィールド(v
x,v
y)は、点Aにおける値と点Bにおける値との間の差分Δ(
図10における動き軌道と参照フレーム面との交点(intersection))を最小化することによって決定される。モデルは、Δについて局所的テイラー展開の第1の線形項(first linear term of local Taylor expansion)のみを使用する:
【数3】
【0120】
[0136] (1)における全ての値は、サンプルロケーション(i’,j’)に依存し、それは、これまで省略されていた。動きが局所的周辺(local surrounding)において一貫していると想定すると、我々は、現在予測されている点(i,j)を中心とした(2M+1)×(2M+1)正方形ウィンドウΩ内部のΔを最小化する:
【数4】
【0121】
[0137] この最適化の問題について、簡略化されたソリューションが使用され、まず最小化を垂直方向に、そして次に水平方向に行う。それは、
【数5】
【数6】
をもたらし、ここで、
【数7】
になる。
【0122】
[0138] 0または非常に小さい値による除算を避けるために、正則化パラメータ(regularization parameters)rおよびmが、式(2)、(3)に導入される。
【数8】
【数9】
【0123】
[0139] ここで、dは、入力ビデオの内部ビット深度(internal bit-depth)である。
【0124】
[0140] いくつかの例では、BIOのMV精緻化は、雑音または不規則な動きに起因して信頼性が低いことがあり得る。したがって、BIOでは、MV精緻化の大きさ(magnitude)は、ある特定のしきい値(thBIO)にクリップされる。しきい値は、現在のピクチャの全ての参照ピクチャが全て1つの方向からのものであるかどうかに基づいて決定される。現在のピクチャの現在のピクチャの全ての参照ピクチャが1つの方向からのものである場合、しきい値は、12×214-dに設定され、そうでない場合は、それは、12×213-dに設定される。
【0125】
[0141] BIOについての勾配(Gradient)は、HEVC動き補償プロセスと一致する演算(2D分離型有限インパルス応答(FIR)(2D separable Finite Impulse Response))を使用して、動き補償補間と同じ時間に算出される。この2D分離型FIRのための入力は、ブロック動きベクトルの分数部分(fractional part)にしたがった分数位置(fractional position)(fracX,fracY)および動き補償プロセスのためのと同じ参照フレームサンプルである。水平勾配∂I/∂xのケースでは、信号がまず、デスケーリングシフト(de-scaling shift)d-8を伴う分数位置fracYに対応するBIOfilterSを使用して垂直に補間され、次に18-dだけデスケーリングシフトを伴う分数位置fracXに対応する勾配フィルタBIOfilterGが、水平方向に適用される。垂直勾配∂I/∂yのケースでは、まず勾配フィルタが、デスケーリングシフトd-8を伴う分数位置fracYに対応するBIOfilterGを使用して垂直に適用され、次に信号変位が、18-dだけデスケーリングシフトを伴う分数位置fracXに対応するBIOfilterSを使用して水平方向に遂行される。勾配算出のための補間フィルタBIOfilterGおよび信号変位のための補間フィルタBIOfilterFの長さは、合理的な複雑性を維持するためにより短い(6タップ)。表1は、BIOにおけるブロック動きベクトルの異なる分数位置についての勾配算出のために使用されるフィルタを示している。表2は、BIOにおける予測信号生成のために使用される補間フィルタ(interpolation filter)を示している。
【0126】
[0142]
図11は、8×4ブロックについての勾配算出の例を例示する概念図である。8×4ブロックについて、ビデオコーダは、各ピクセルについてのv
xおよびv
yを解くことが、式(4)に示されているように、各ピクセルを中心としたウィンドウΩ内のピクセルの動き補償予測子(motion compensated predictor)および水平/垂直(HOR/VER)勾配値を必要とすることから、動き補償予測子をフェッチし、および現在のブロック内の全てのピクセルのHOR/VER勾配ならびにピクセルの外側の2つの線を算出する。およびJEMの一例では、このウィンドウのサイズは、5×5に設定される。したがって、ビデオコーダ(例えば、ビデオ符号化器20および/またはビデオ復号器30)は、動き補償予測子をフェッチし、および点AとBとの周囲のピクセルの外側の2つの線についての勾配(gradient)を算出する。
【表1】
【表2】
【0127】
[0143] JEMの例では、BIOは、2つの予測が異なる参照ピクチャからのものであるとき、全ての双方向予測されたブロックに適用される。局所照明補償(LIC:local illumination compensation)がCUについて有効にされると、BIOは、無効にされる。
【0128】
[0144] この開示の技法にしたがって、ビデオ符号化器20およびビデオ復号器30は、制約が、(1)導出されたMVが対称であるかどうか、(2)初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうか、(3)導出されたMVが反対称であるかどうか、および/または(4)初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうか、を含むかどうかに基づいて、BIOからの導出された動きベクトルを制約し得る。制約が初期MVに基づいてのみ適用されるように、制約には条件が設けられ得る。
【0129】
[0145]
図12は、バイラテラルテンプレートマッチングに基づく提案された復号器側動きベクトル導出(DMVD)に関する概念を例示する概念図である。ビデオコーダは、
図12に示されているように、それぞれ、List0の初期MV0およびList1のMV1から、2つの予測ブロック(R
0およびR
1)の重み付けされた組み合わせとしてバイラテラルテンプレート(bilateral template)を生成し得る。一例では、バイラテラルテンプレートは、公式:(R0+R1)>>1または(R0+R1)/2を使用してList0およびList1参照ブロック(R
0およびR
1)を平均化することによって生成され得る。
【0130】
[0146] テンプレートマッチング演算は、生成されたテンプレートと参照ピクチャ中の(初期予測ブロックの周囲の)サンプル領域との間のコスト測定値(cost measures)を算出することを含む。2つの参照ピクチャ(R
0およびR
1)の各々について、最小テンプレートコストをもたらすMVは、初期MV(List0からのMV0またはList1からのMV1のいずれか)に取って代わるそのリストの更新されたMVと見なされる。最後に、
図12に示されているような、2つの新しいMV、すなわちMV0’およびMV1’が、標準的双予測のために使用される。それはブロックマッチング動き推定において一般に使用されることから、絶対差分の和(SAD)が、コスト測定値として利用される。
【0131】
[0147] 復号器側動きベクトル導出(DMVD)は、追加のシンタックス要素の送信なしに、過去の参照ピクチャからの1つと将来の参照ピクチャからのもう1つとの双予測のマージモードについて適用され得る。JEM4.0では、LIC、アフィン(affine)、サブCUマージ候補、またはFRUCが1つのCUのために選択されるとき、DMVDは適用されない。
【0132】
[0148] この開示の技法にしたがって、ビデオ符号化器20およびビデオ復号器30は、制約が、(1)導出されたMVが対称であるかどうか、(2)初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうか、(3)導出されたMVが反対称であるかどうか、および/または(4)初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうか、を含むかどうかに基づいて、バイラテラルテンプレートマッチングベースのDMVDからの導出された動きベクトルを制約し得る。制約が初期MVまたはバイラテラルテンプレートに基づいてのみ適用されるように、制約には条件が設けられ得る。
【0133】
[0149]
図13Aおよび13Bは、JEMの例では、オーバーラップブロック動き補償(OBMC)に関する概念を例示する概念図である。OBMCは、例えば、H.263においてあるように、初期世代のビデオ規格に対して使用されてきた。JEMの例では、OBMCは、CUの右および下の境界を除き、動き補償(MC)ブロック境界について遂行される。その上、それは、ルーマ成分とクロマ成分との両方について適用される。JEMの一例では、MCブロックは、コーディングブロックに対応する。CUが(サブCUマージ、アフィンおよびFRUCモードを含む)サブCUモードでコーディングされるとき、CUの各サブブロックは、MCブロックである。均一の様式でCU境界を処理するために、OBMCは、全てのMCブロック境界についてサブブロックレベルで遂行され、ここで、サブブロックサイズは、
図13Aおよび13Bに例示されているように、4×4に等しく設定される。
【0134】
[0150] ビデオ符号化器20およびビデオ復号器30は、現在の動きベクトルの他に、現在のサブブロック(sub-block)にOBMCを適用し得、4つの接続された近隣サブブロックの動きベクトルもまた、利用可能であり且つ現在の動きベクトルと同一でない場合に、現在のサブブロックについての予測ブロックを導出するために使用される。複数の動きベクトルに基づくこれらの複数の予測ブロックは、現在のサブブロックの最終予測信号を生成するために組み合わされる。
【0135】
[0151]
図14A~14Dは、OBMC重み付けを例示する概念図である。
図14A~14Dは、近隣サブブロックの動きベクトルに基づく予測ブロックがP
Nとして表されることを例示し、ここで、Nは、近隣する上(
図14A)、下(
図14B)、左(
図14C)および右(
図14D)サブブロックについてのインデックスを示し、および現在のサブブロックの動きベクトルに基づく予測ブロックは、P
Cとして表される。P
Nが現在のサブブロックに対して同じ動き情報を包含する近隣サブブロックの動き情報に基づくとき、OBMCは、P
Nから遂行されない。そうでない場合は、P
Nの全てのピクセルは、P
C中の同じピクセルに追加される、すなわち、P
Nの4つの行/列が、P
Cに追加される。重み付け係数(weighting factor){1/4,1/8,1/16,1/32}は、P
Nに対して使用され、および重み付け係数{3/4,7/8,15/16,31/32}は、PCに対して使用される。例外は、小さいMCブロックであり、(すなわち、コーディングブロックの高さまたは幅が4に等しいか、またはCUがサブCUモードでコーディングされるとき)、それについては、P
Nの2つの行/列のみが、P
Cに追加される。このケースでは、重み付け係数{1/4,1/8}は、P
Nに対して使用され、および重み付け係数{3/4,7/8}は、P
Cに対して使用される。垂直に(水平に)近隣するサブブロックの動きベクトルに基づいて生成されるP
Nの場合、P
Nの同じ行(列)中のピクセルが、同じ重み付け係数を有するP
Cに追加される。BIOはまた、予測ブロックP
Nの導出のために適用されることに留意されたい。
【0136】
[0152] JEMの例では、256個のルーマサンプル以下のサイズを有するCUの場合、CUレベルフラグが、OBMCが現在のCUについて適用されるか否かを示すためにシグナリングされる。256個のルーマサンプルより大きいサイズを有するか、またはAMVPモードでコーディングされないCUの場合、OBMCは、デフォルトで適用される。符号化器において、OBMCがCUについて適用されるとき、その影響は、動き推定ステージ中に考慮に入れられる。上部近隣ブロックおよび左近隣ブロックの動き情報を使用することによる予測信号は、現在のCUの元の信号の上部および左境界を補償するために使用され、およびその後、通常の動き推定プロセスが適用される。
【0137】
[0153] この開示の技法にしたがって、ビデオ符号化器20およびビデオ復号器30は、制約が、(1)導出されたMVが対称であるかどうか、(2)初期MVとDMVD方法によって導出されたMVとの間のMV差分が対称であるかどうか、(3)導出されたMVが反対称であるかどうか、および/または(4)初期MVとDMVD方法によって導出されたMVとの間のMV差分が反対称であるかどうか、を含むかどうかに基づいて、OBMCからの導出された動きベクトルを制約し得る。制約が初期MVに基づいてのみ適用されるように、制約には条件が設けられ得る。
【0138】
[0154] DMVD関連方法(例えば、BIO、FRUCバイラテラルマッチング、FRUCテンプレートマッチング、バイラテラルテンプレートマッチング、等)は、有意なビットレート低減を提供し得る。この開示は、DMVDをさらに改善し得るいくつかの技法を説明し、それは、コーディング効率を増大させ、および/またはビットレートを低減し得る。例えば、(1)DMVDによって導出されたMV、および/または、(2)初期MVとDMVDによって導出されたMVとの間のMV差分を制約することは、コーディング効率を増大させ、および/またはビットレートを低減し得る。
【0139】
[0155] 以下の表3は、以下に使用される様々な専門用語を説明する。
【表3】
【0140】
[0156] 対称動きベクトル-いくつかの例では、DMVDによって導出されたMVは、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMVは、対称でなければならない。一例では、対称になるために、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、導出されたMVが互いに対する次の条件のうちの1つまたは複数(例えば、全て)を満たすように、導出されたMVを制約するように構成され得る。
1.L0_MV_X_Derived*(CURR _POC-L1_POC_Derived)=L1_MV_X_Derived*(CURR _POC-L0_POC_Derived)、および/または
2.L0_MV_Y_Derived*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Derived*(CURR _POC-L0_POC_Derived)。
【0141】
[0157] いくつかの例では、上記の条件(1)および(2)は各々、別個の対称MV制約であると見なされ得るか、または、両方が適用されるときには単一の対称MV制約であると見なされ得る。この点に関して、ここでの有効にされる制約への言及は、有効にされる条件を指し得、それは、制約として機能する。例えば、有効にされる対称MV制約への言及は、(i)上記の条件(1)が有効にされること、(ii)上記の条件(2)が有効にされること、または(iii)条件(1)および(2)が有効にされることを含み得る。
【0142】
[0158] いくつかの例では、さらなる簡略化および/またはコーディングの改善を達成するために、DMVDによって導出されたMVは、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMVは、以下の条件(それは、疑似対称条件と呼ばれ得る)のうちの1つまたは複数(例えば、全て、条件(1)が真であるときには条件(a)および/または(b)、および/または条件(2)が真であるときには条件(c)および/または(d))を満たすことを必要とされ得る:
1.List0およびList1参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、(例えば、(CURR _POC-L0_POC_Derived)*(CURR _POC-L1_POC_Derived)>0)、
a.L0_MV_X_Derived=L1_MV_X_Derived、および/または
b.L0_MV_Y_Derived=L1_MV_Y_Derived;
および/または
2.List0およびList1参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、(例えば、(CURR _POC-L0_POC_Derived)*(CURR _POC-L1_POC_Derived)<0)、
c.L0_MV_X_Derived=-1*L1_MV_X_Derived、および/または
d.L0_MV_Y_Derived=-1*L1_MV_Y_Derived。
【0143】
[0159] いくつかの例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報を使用するように構成されることによって、POC差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報に基づいて、POC差分をチェックまたは決定するように構成され得る。
【0144】
[0160] 対称動きベクトル差分-いくつかの例では、初期MVとDMVDによって導出されたMVとの間のMV差分は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、MV差分は、対称でなければならない。MV差分は、初期MVとDMVDによって導出されたMVとの間の差分である。MV差分は、X成分およびY成分ベースで決定され得る。一例では、対称になるために、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、導出されたMV差分が次の条件のうちの1つまたは複数(例えば、全て)を満たすことを必要とするように構成され得る:
1.L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)、および/または
2.L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)。
【0145】
[0161] いくつかの例では、さらなる簡略化および/またはコーディングの改善を達成するために、DMVDによって導出されたMV差分は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMV差分は、以下の条件(それは、疑似対称条件と呼ばれ得る)のうちの1つまたは複数(例えば、全て、条件(1)が真であるときには条件(a)および/または(b)、および/または条件(2)が真であるときには条件(c)および/または(d))を満たすことを必要とされ得る:
1.List0およびList1参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、(例えば、(CURR _POC-L0_POC_Init)*(CURR _POC-L1_POC_Init)>0)、
a.L0_MV_X_Diff=L1_MV_X_Diff、および/または
b.L0_MV_Y_Diff=L1_MV_Y_Diff;
および/または
2.List0およびList1参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、(例えば、(CURR _POC-L0_POC_Init)*(CURR _POC-L1_POC_Init)<0)、
c.L0_MV_X_Diff=-1*L1_MV_X_Diff、および/または
d.L0_MV_Y_Diff=-1*L1_MV_Y_Diff。
【0146】
[0162] いくつかの例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報を使用するように構成されることによって、POC差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報に基づいて、POC差分をチェックまたは決定するように構成され得る。
【0147】
[0163] 反対称動きベクトル-いくつかの例では、DMVDによって導出されたMVは、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMVは、反対称でなければならない。一例では、反対称になるために、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、導出されたMVが次の条件のうちの1つまたは複数(例えば、全て)を満たすことを必要とするように構成され得る:
1.L0_MV_X_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Derived*(CURR _POC-L0_POC_Derived)、および/または
2.L0_MV_Y_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Derived*(CURR _POC-L0_POC_Derived)。
【0148】
[0164] いくつかの例では、さらなる簡略化および/またはコーディングの改善を達成するために、DMVDによって導出されたMV差分は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMV差分は、以下の条件(それは、疑似反対称条件と呼ばれ得る)のうちの1つまたは複数(例えば、全て、条件(1)が真であるときには条件(a)および/または(b)、および/または条件(2)が真であるときには条件(c)および/または(d))を満たすことを必要とされ得る:
1.List0およびList1参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、(例えば、(CURR _POC-L0_POC_Derived)*(CURR _POC-L1_POC_Derived)>0)、
a.L0_MV_X_Derived=-1*L1_MV_X_Derived、および/または
b.L0_MV_Y_Derived=-1*L1_MV_Y_Derived;
および/または
2.List0およびList1参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、(例えば、(CURR _POC-L0_POC_Derived)*(CURR _POC-L1_POC_Derived)<0)、
c.L0_MV_X_Derived=L1_MV_X_Derived、および/または
d.L0_MV_Y_Derived=L1_MV_Y_Derived。
【0149】
[0165] いくつかの例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報を使用するように構成されることによって、POC差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報に基づいて、POC差分をチェックまたは決定するように構成され得る。
【0150】
[0166] 反対称動きベクトル差分-いくつかの例では、初期MVとDMVDによって導出されたMVとの間のMV差分は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、MV差分は、反対称でなければならない。一例では、反対称になるために、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、導出されたMV差分が次の条件のうちの1つまたは複数(例えば、全て)を満たすことを必要とするように構成され得る:
1.L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)、および/または
2.L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)。
【0151】
[0167] いくつかの例では、さらなる簡略化および/またはコーディングの改善を達成するために、DMVDによって導出されたMV差分は、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)によって制約され得、それにより、導出されたMV差分は、以下の条件(それは、疑似反対称条件と呼ばれ得る)のうちの1つまたは複数(例えば、全て、条件(1)が真であるときには条件(a)および/または(b)、および/または条件(2)が真であるときには条件(c)および/または(d))を満たすことを必要とされ得る:
1.List0およびList1参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、(例えば、(CURR _POC-L0_POC_Init)*(CURR _POC-L1_POC_Init)>0)、
a.L0_MV_X_Diff=-1*L1_MV_X_Diff、および/または
b.L0_MV_Y_Diff=-1*L1_MV_Y_Diff;
および/または
2.List0およびList1参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、(例えば、(CURR _POC-L0_POC_Init)*(CURR _POC-L1_POC_Init)<0)、
c.L0_MV_X_Diff=L1_MV_X_Diff、および/または
d.L0_MV_Y_Diff=L1_MV_Y_Diff。
【0152】
[0168] いくつかの例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報を使用するように構成されることによって、POC差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、例えば、初期MVのPOC情報および/または導出されたMVのPOC情報に基づいて、POC差分をチェックまたは決定するように構成され得る。
【0153】
[0169] MV/MV差分制約を適用するための条件-DMVD動き情報に対する制約(例えば、対称/反対称MV/MV差分制約)の有効化は、いくつかの例では、明示的にシグナリングされ得るか、または何らかのコーディングされた情報にしたがって暗示的に決定され得る。いくつかの例では、制約の有効化をシグナリングすること、または制約の有効化を決定することは、それぞれ、制約が適用された、または適用されることになることをシグナリングすること、あるいは制約が適用された、または適用されることになることを決定することとして説明され得る。
【0154】
[0170] いくつかの例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、ここに説明されたMVおよび/またはMV差分制約のうちの1つまたは複数を有効にするように構成され得る。例えば、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の制約が有効にされるかどうかを示す1つまたは複数の値をシグナリングするように構成され得る。
【0155】
[0171] 一例として、ビデオ符号化器(例えば、ビデオ符号化器20)は、ビットストリーム中で第1のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第1のシンタックス要素に対応する値は、1つまたは複数の対称MV制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値(例えば、1の値)または無効化を示すための偽の値(例えば、0の値)であり得るか、あるいはその値は、有効化を示すための偽の値(例えば、0の値)または無効化を示すための真の値(例えば、1の値)であり得る。いくつかの例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の対称MV制約が有効にされるときにのみ、第1のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の対称MV制約が無効にされるときにのみ、第1のシンタックス要素に対応する値をシグナリングするように構成され得る。
【0156】
[0172] 別の例として、ビデオ符号化器(例えば、ビデオ符号化器20)は、ビットストリーム中で第2のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第2のシンタックス要素に対応する値は、1つまたは複数の対称MV差分制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値(例えば、1の値)または無効化を示すための偽の値(例えば、0の値)であり得るか、あるいはその値は、有効化を示すための偽の値(例えば、0の値)または無効化を示すための真の値(例えば、1の値)であり得る。いくつかの例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の対称MV差分制約が有効にされるときにのみ、第2のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の対称MV差分制約が無効にされるときにのみ、第2のシンタックス要素に対応する値をシグナリングするように構成され得る。
【0157】
[0173] 別の例として、ビデオ符号化器(例えば、ビデオ符号化器20)は、ビットストリーム中で第3のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第3のシンタックス要素に対応する値は、1つまたは複数の反対称MV制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値(例えば、1の値)または無効化を示すための偽の値(例えば、0の値)であり得るか、あるいはその値は、有効化を示すための偽の値(例えば、0の値)または無効化を示すための真の値(例えば、1の値)であり得る。いくつかの例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の反対称MV制約が有効にされるときにのみ、第3のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の反対称MV制約が無効にされるときにのみ、第3のシンタックス要素に対応する値をシグナリングするように構成され得る。
【0158】
[0174] 別の例として、ビデオ符号化器(例えば、ビデオ符号化器20)は、ビットストリーム中で第4のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第4のシンタックス要素に対応する値は、1つまたは複数の反対称MV差分制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値(例えば、1の値)または無効化を示すための偽の値(例えば、0の値)であり得るか、あるいはその値は、有効化を示すための偽の値(例えば、0の値)または無効化を示すための真の値(例えば、1の値)であり得る。いくつかの例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の反対称MV差分制約が有効にされるときにのみ、第4のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器(例えば、ビデオ符号化器20)は、1つまたは複数の反対称MV差分制約が無効にされるときにのみ、第4のシンタックス要素に対応する値をシグナリングするように構成され得る。
【0159】
[0175] いくつかの例では、ビデオコーダ(例えば、ビデオ復号器30)は、ビットストリームを受信することと、ビットストリーム中に存在する、1つまたは複数のシンタックス要素(例えば、ここに説明された第1、第2、第3、および第4のシンタックス要素のうちの1つまたは複数)に対応する1つまたは複数の値に基づいて、ここに説明されたMVおよび/またはMV差分制約のうちの1つまたは複数が有効にされるかどうかを決定することとを行うように構成され得る。
【0160】
[0176] 他の例では、ビデオコーダ(例えば、ビデオ符号化器20またはビデオ復号器30)は、他のコーディングされた情報に基づいて、ここに説明されたMVおよび/またはMV差分制約のうちの1つまたは複数が有効にされるかどうかを決定する(例えば、暗示的に決定する)ように構成され得る。
【0161】
[0177] ここに説明された1つまたは複数の制約(例えば、対称/反対称MV/MV差分制約のうちの1つまたは複数)を適応的に有効にするためのいくつかの実例的な条件が、以下のようにリストされている。
1.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが対称であるときにのみ有効にされ得る。
2.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが疑似対称であるときにのみ有効にされ得る。
3.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが反対称であるときにのみ有効にされ得る。
4.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが疑似反対称であるときにのみ有効にされ得る。
5.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが対称でないときにのみ有効にされ得る。
6.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが疑似対称でないときにのみ有効にされ得る。
7.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが反対称でないときにのみ有効にされ得る。
8.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVが疑似反対称でないときにのみ有効にされ得る。
9.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVのList0およびList1参照ピクチャが両方とも現在ピクチャの前にあるか、または両方とも現在のピクチャの後にあるときにのみ有効にされ得る。
10.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVのList0およびList1参照ピクチャが両方とも現在ピクチャの前にないか、または両方とも現在のピクチャの後にないときにのみ有効にされ得る。
11.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVの参照インデックスが両方とも0であるときにのみ有効にされ得る。
12.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、初期MVの参照インデックスが両方とも0でないときにのみ有効にされ得る。
13.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、List0参照ピクチャと現在のピクチャとの間のPOC距離と、List1参照ピクチャと現在のピクチャとの間のPOC距離とが同じであるときにのみ有効にされ得る。
14.いくつかの例では、ここに説明された1つまたは複数の制約(例えば、1つまたは複数の対称/反対称MV/MV差分制約)は、List0参照ピクチャと現在のピクチャとの間のPOC距離と、List1参照ピクチャと現在のピクチャとの間のPOC距離とが同じでないときにのみ有効にされ得る。
15.いくつかの例では、1つまたは複数の対称MV差分制約は、初期MVが対称でないときに適用され得る、
16.いくつかの例では、1つまたは複数の反対称MV差分制約は、初期MVが対称であるときに適用され得る、
17.いくつかの例では、対称制約のうちの1つまたは複数のMV解像度は、決定的な様式で割り当てられ得る。一例では、バイラテラルテンプレートマッチングの整数ペル精緻化のために、いかなる対称/疑似対称/非対称制約も課されないことがあり得、および前述された制約は、ハーフペル、クォーターペル、またはより高い精度の動き精緻化に対してのみである。(そのMV解像度での)制約のレベルは、SPS/PPS/スライスヘッダを通じてシグナリングされ得る。解像度はまた、BIO、サブペルFRUCのような他の動き精緻化ツールが有効にされるかどうかと併せて決められ得る。例えば、BIOが有効にされるとき、制約は、クォーターペルまたはより高い精度の動き精緻化に対して課せられないことがあり得る。
18.いくつかの例では、制約のレベル(例えば、どの制約が有効にされるか)は、List0 MVとList1 MVとの間の絶対差分、List0 MVとList1 MVとの間の(それらの相対POC距離に基づいて)スケーリングされた絶対差分、またはList0とList1と(すなわち、この例では、P0とP1と)の補間されたサンプルの間の初期SAD値にしたがって適応的にさせられることができる。他の例では、(現在のテンプレート、P0)と(現在のテンプレート、P1)との間の絶対差分の和(SAD)値の比は、何のMV解像度において制約が課せられるべきかを決めるために使用されることができる。この例では、SAD値の比がしきい値より低い場合、いかなる前述された対称制約も課されるべきではない。
【0162】
[0178] 表4は、前述の条件が満たされることに基づいて適用される条件および制約の例をリストしている。
【0163】
[0179] この例は、表4に制約の例1として例示されており、それはまた、異なる制約の他の例を含む。
【表4】
【0164】
[0180]
図15は、本開示にしたがったバイラテラルテンプレートマッチングの例証的な使用ケースを例示している。
図15は、ここに説明された1つまたは複数の疑似対称MV差分制約が、初期MVが対称でないときにのみバイラテラルテンプレートマッチングに適用され得る例を例示している。そのような例にしたがって、バイラテラルテンプレートマッチングのために、初期MVが対称でないときに、最終MVが、初期MVと最終MVとの間のMV差分が疑似対称でなければならないように導出され得る。例えば、
図15に示されているように、バイラテラルテンプレート1506はまず、ブロックR
0 1502およびブロックR
1 1504を平均化することによって、List0中の初期MV(R
0を指し示すL0_MV_Init)とList1中の初期MV(R
1を指し示すL1_MV_Init)とを使用して導出され得(例えば、双予測マージング候補のMV)、および次にバイラテラルテンプレート1506は、最良のList0/List1 MVを見出すべく、List0およびList1中のベストマッチングブロックを探索するために利用され得る。バイラテラルテンプレートマッチングは、ブロック、例えば、R’
0 1508およびR’
1 1510を探索するList0/List1中の初期MVを中心とする予め定義された探索範囲(例えば、-1~+1整数ピクセル)内で遂行され得る。初期ブロック(ブロックR
0 1502およびブロックR
1 1504)と探索されたブロック(R’
0 1508およびR’
1 1510)との間の差分は、(L0_MV_DiffおよびL1_MV_Diffと表されている)それぞれのMV差分によって示されている。いくつかの例では、List0およびList1中の(L0_MV_DiffとL1_MV_Diffとを比較する)疑似対称MV差分を有するMVペアのみが、有効なMVと見なされ得る。ベストマッチングコストを伴う有効なMVペアはその後、バイラテラルテンプレートマッチングによって最終の導出されたMVと見なされ得る。例示されている例は、上記に示されている表4に制約の例1として表されている。
【0165】
[0181]
図16は、この開示の技法にしたがった実例的な方法を例示するフローチャートである。
図16の技法は、宛先デバイス14またはビデオ復号器30のうちの1つまたは複数によってインプリメントされ得る(
図1および3を参照)。
【0166】
[0182] 本開示の一例では、ビデオ復号器30は、復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成するように構成され得る(100)。いくつかの例では、複数の導出された動きベクトルを生成するためにDMVDを使用することは、BIOプロセス、FRUCプロセス、バイラテラルマッチングプロセス(Bilateral Matching process)、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセス(bilateral template matching process)のうちの1つを使用することを備える。いくつかの例では、ビデオ復号器30は、第1および第2の初期動きベクトル(second initial motion vector)が1つまたは複数の条件を満たすかどうかの決定に基づいて、複数の導出された動きベクトルを生成し得る。ビデオ復号器30は、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと制約が満たされているかどうかを決定することを行うように構成され得る(102)。ある例では、コストメトリックは、絶対差分の和を含む。制約は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを含み得る。ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを決定するように構成され得る。制約は、ビットストリームを介してシグナリングされ得るか、導出され得るか、または予めプログラムされ得る。
【0167】
[0183] ある例では、ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有すると決定するように構成され得、その決定は、L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)またはL0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)であると決定することを備え、ここにおいて、L0_MV_X_Diffは、第1の初期動きベクトル(first initial motion vector)と第1の導出された動きベクトルとの間の差分のX成分であり、L0_MV_Y_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のY成分であり、L1_MV_X_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のX成分であり、L1_MV_Y_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のY成分であり、CURR _POCは、現在のピクチャの現在のPOCであり、L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである。
【0168】
[0184] 別の例では、ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称動きベクトル差分を有すると決定するように構成され得、その決定は、L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)、またはL0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)であると決定することを備え、ここにおいて、L0_MV_X_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のX成分であり、L0_MV_Y_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のY成分であり、L1_MV_X_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のX成分であり、L1_MV_Y_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のY成分であり、CURR _POCは、現在のピクチャの現在のPOCであり、L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである。
【0169】
[0185] 別の例では、ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが反対称であると決定するように構成され得、その決定は、L0_MV_X_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Derived*(CURR _POC-L0_POC_Derived)、またはL0_MV_Y_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Derived*(CURR _POC-L0_POC_Derived)であると決定することを備え、ここにおいて、L0_MV_X_Derivedは、第1の導出された動きベクトルのX成分であり、L0_MV_Y_Derivedは、第1の導出された動きベクトルのY成分であり、L1_MV_X_Derivedは、第2の導出された動きベクトルのX成分であり、L1_MV_Y_Derivedは、第2の導出された動きベクトルのY成分であり、CURR_POCは、現在のピクチャの現在のPOCであり、L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである。
【0170】
[0186] 別の例では、ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似対称動きベクトル差分を有すると決定するように構成され得、その決定は、L0_MV_X_Diff=L1_MV_X_Diff、L0_MV_Y_Diff=L1_MV_Y_Diff、L0_MV_X_Diff=-1*L1_MV_X_Diff、またはL0_MV_Y_Diff=-1*L1_MV_Y_Diffであると決定することを備え、ここにおいて、L0_MV_X_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のX成分であり、L0_MV_Y_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のY成分であり、L1_MV_X_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のX成分であり、L1_MV_Y_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のY成分である。
【0171】
[0187] 別の例では、ビデオ復号器30は、第1の導出された動きベクトルと第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有すると決定するように構成され得、その決定は、L0_MV_X_Diff=L1_MV_X_Diff、L0_MV_Y_Diff=L1_MV_Y_Diff、L0_MV_X_Diff=-1*L1_MV_X_Diff、またはL0_MV_Y_Diff=-1*L1_MV_Y_Diffであるという決定を備え、ここにおいて、L0_MV_X_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のX成分であり、L0_MV_Y_Diffは、第1の初期動きベクトルと第1の導出された動きベクトルとの間の差分のY成分であり、L1_MV_X_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のX成分であり、L1_MV_Y_Diffは、第2の初期動きベクトルと第2の導出された動きベクトルとの間の差分のY成分である。
【0172】
[0188] 別の例では、ビデオ復号器30は、動きベクトル候補リスト中の第1の初期動きベクトルと動きベクトル候補リスト中の第2の初期動きベクトルとが、第1の初期動きベクトルと第2の初期動きベクトルとの間の関係に関する少なくとも1つの条件を満たすと決定するように構成され得、その関係は、第1の初期動きベクトルと第2の初期動きベクトルとが対称である、第1の初期動きベクトルと第2の初期動きベクトルとが疑似対称である、第1の初期動きベクトルと第2の初期動きベクトルとが対称動きベクトル差分を有する、第1の初期動きベクトルと第2の初期動きベクトルとが反対称である、第1の初期動きベクトルと第2の初期動きベクトルとが疑似反対称である、または第1の初期動きベクトルと第2の初期動きベクトルとが反対称動きベクトル差分を有することを備え、ここにおいて、複数の導出された動きベクトルを生成することは、第1の初期動きベクトルと第2の初期動きとが少なくとも1つの条件を満たすことに基づく。
【0173】
[0189] 別の例では、ビデオ復号器30は、動きベクトル候補リスト中の第1の初期動きベクトルと動きベクトル候補リスト中の第2の初期動きベクトルとが現在のピクチャの前にあるか、または現在のピクチャの後にあるかを決定するように構成され得、ここにおいて、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することは、決定にさらに基づく。
【0174】
[0190] 別の例では、ビデオ復号器30は、第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リスト(second motion vector candidate list)に関連付けられた第2の参照ピクチャと現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するように構成され得、ここにおいて、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することは、決定にさらに基づく。
【0175】
[0191] 別の例では、ビデオ復号器30は、第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するように構成され得、ここにおいて、複数の導出された動きベクトルを生成するコストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することは、第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のPOC距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと現在のピクチャとの間の第2のPOC距離がゼロ決定であると決定することにさらに基づく。
【0176】
[0192] 別の例では、ビデオ復号器30は、符号化されたビデオビットストリームから少なくとも1つの制約を決定するように構成され得る。
【0177】
[0193] ビデオ復号器30は、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを復号するように構成され得る(104)。
【0178】
[0194]
図17は、この開示の技法にしたがった実例的な方法を例示するフローチャートである。
図17の技法は、ソースデバイス12またはビデオ符号化器20のうちの1つまたは複数によってインプリメントされ得る(
図1および2を参照)。
【0179】
[0195] ビデオ符号化器20は、DMVDを使用して、複数の導出された動きベクトルを生成するように構成され得る(200)。いくつかの例では、ビデオ符号化器20は、第1および第2の初期動きベクトルが1つまたは複数の条件を満たすかどうかの決定に基づいて、複数の導出された動きベクトルを生成し得る。
【0180】
[0196] ビデオ符号化器20は、コストメトリックに基づいて、複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、制約が満たされているかどうかを決定することとを行うように構成され得る(202)。制約は、第1の導出された動きベクトルと第2の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを含み得る。ビデオ符号化器20は、決定された第1の導出された動きベクトルと第2の導出された動きベクトルとを使用して現在のブロックを符号化するように構成され得る(204)。ビデオ符号化器20は、制約をコーディングするように構成され得る。ビデオ符号化器20はさらに、ビットストリームを介して制約を送るように構成され得る。
【0181】
[0197] 例に依存して、ここに説明されたあらゆる技法のある特定の動作(act)またはイベントは、異なるシーケンスで遂行されることができ、追加、統合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが、それら技法の実施のために必要なわけではない)ことが認識されるべきである。その上、ある特定の例では、動作またはイベントは、順次にというよりはむしろ、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通じて、同時に遂行され得る。
【0182】
[0198] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合、それら機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶され得るか、またはコンピュータ可読媒体を通して送信され得、およびハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルにしたがって、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体、またはコンピュータ可読記憶媒体を含み得、それは、データ記憶媒体のような有形媒体に対応する。このように、コンピュータ可読媒体は概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、この開示に説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0183】
[0199] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいはデータ構造もしくは命令の形態で所望されるプログラムコードを記憶するために使用されることができ、且つコンピュータによってアクセスされることができる任意の他の媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、ウェブサイト、サーバ、あるいは同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用する他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義中に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体(non-transitory, tangible storage media)を対象にすることが理解されるべきである。ディスク(disk)およびディスク(disc)は、ここに使用される場合、コンパクトディスク(CD)(disc)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(DVD)(disc)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、磁気的にデータを再生し、その一方でディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0184】
[0200] 命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、(固定機能回路および/またはプログラマブル処理回路を含む)処理回路、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の同等な集積またはディスクリートロジック回路のような1つまたは複数のプロセッサによって実行され得る。それ故に、「プロセッサ」という用語は、ここに使用される場合、前述の構造またはここに説明された技法のインプリメンテーションに適したあらゆる他の構造のうちの任意のものを指し得る。加えて、いくつかの態様では、ここに説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得るか、あるいは組み合わされたコーデック中に組み込まれ得る。また、それら技法は、1つまたは複数の回路またはロジック要素において十分にインプリメントされることができる。
【0185】
[0201] この開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い多様なデバイスまたは装置においてインプリメントされ得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を遂行するように構成されたデバイスの機能的な態様を強調するためにこの開示に説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わされ得るか、あるいは、適したソフトウェアおよび/またはファームウェアと併せて、上述されたような1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【0186】
[0202] 様々な例が説明されてきた。これらおよび他の例は、次の特許請求の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
符号化されたビデオビットストリームからビデオデータを復号する方法であって、前記方法は、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、前記決定することは、
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすと決定することを備え、前記関係は、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称である、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第1の導出された動きベクトルと前記第2の導出された動きベクトルとを使用して現在のブロックを復号することと
を備える、方法。
[C2]
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、C1に記載の方法。
[C3]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)または
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C1に記載の方法。
[C4]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記反対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)、または
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C1に記載の方法。
[C5]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称であると決定することは、
L0_MV_X_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Derived*(CURR _POC-L0_POC_Derived)、または
L0_MV_Y_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Derived*(CURR _POC-L0_POC_Derived)、
であると決定することを備え、ここにおいて、
L0_MV_X_Derivedは、前記第1の導出された動きベクトルのX成分であり、
L0_MV_Y_Derivedは、前記第1の導出された動きベクトルのY成分であり、
L1_MV_X_Derivedは、前記第2の導出された動きベクトルのX成分であり、
L1_MV_Y_Derivedは、前記第2の導出された動きベクトルのY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C1に記載の方法。
[C6]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記疑似対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff=L1_MV_X_Diff、
L0_MV_Y_Diff=L1_MV_Y_Diff、
L0_MV_X_Diff=-1*L1_MV_X_Diff、または
L0_MV_Y_Diff=-1*L1_MV_Y_Diff、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分である、C1に記載の方法。
[C7]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記疑似反対称動きベクトル差分を有すると決定することは、
L0_MV_X_Diff=L1_MV_X_Diff、
L0_MV_Y_Diff=L1_MV_Y_Diff、
L0_MV_X_Diff=-1*L1_MV_X_Diff、または
L0_MV_Y_Diff=-1*L1_MV_Y_Diff、
であると決定することを備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分である、C1に記載の方法。
[C8]
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが、前記第1の初期動きベクトルと前記第2の初期動きベクトルとの間の関係に関する少なくとも1つの条件を満たすと決定することをさらに備え、前記関係は、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが疑似対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが前記対称動きベクトル差分を有する、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが反対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが疑似反対称である、または前記第1の初期動きベクトルと前記第2の初期動きベクトルとが前記反対称動きベクトル差分を有することを備え、
前記複数の導出された動きベクトルを生成することは、前記第1の初期動きベクトルと前記第2の初期動きとが前記少なくとも1つの条件を満たすことに基づく、C1に記載の方法。
[C9]
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、C1に記載の方法。
[C10]
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、C1に記載の方法。
[C11]
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、C1に記載の方法。
[C12]
前記符号化されたビデオビットストリームから前記少なくとも1つの制約を決定することをさらに備える、C1に記載の方法。
[C13]
前記コストメトリックは、絶対差分の和を含む、C1に記載の方法。
[C14]
符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、前記装置は、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信中の1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、前記決定することは、
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、前記関係は、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称である、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第1の導出された動きベクトルと前記第2の導出された動きベクトルとを使用して現在のブロックを復号することと
を行うように構成される、装置。
[C15]
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、C14に記載の装置。
[C16]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記対称動きベクトル差分を有するという前記決定は、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)または
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)、
という決定を備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C14に記載の装置。
[C17]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記反対称動きベクトル差分を有するという前記決定は、
L0_MV_X_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Diff*(CURR _POC-L0_POC_Derived)、または
L0_MV_Y_Diff*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Diff*(CURR _POC-L0_POC_Derived)
という決定を備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C14に記載の装置。
[C18]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称であるという前記決定は、
L0_MV_X_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_X_Derived*(CURR _POC-L0_POC_Derived)、または
L0_MV_Y_Derived*(CURR _POC-L1_POC_Derived)=-1*L1_MV_Y_Derived*(CURR _POC-L0_POC_Derived)、
という決定を備え、ここにおいて、
L0_MV_X_Derivedは、前記第1の導出された動きベクトルのX成分であり、
L0_MV_Y_Derivedは、前記第1の導出された動きベクトルのY成分であり、
L1_MV_X_Derivedは、前記第2の導出された動きベクトルのX成分であり、
L1_MV_Y_Derivedは、前記第2の導出された動きベクトルのY成分であり、
CURR _POCは、現在のピクチャの現在のピクチャ順序カウント(POC)であり、
L0_POC_Derivedは、動きベクトルの第1のリストについての導出されたPOCであり、
L1_POC_Derivedは、動きベクトルの第2のリストについての導出されたPOCである、C14に記載の装置。
[C19]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記疑似対称動きベクトル差分を有するという前記決定は、
L0_MV_X_Diff=L1_MV_X_Diff、
L0_MV_Y_Diff=L1_MV_Y_Diff、
L0_MV_X_Diff=-1*L1_MV_X_Diff、または
L0_MV_Y_Diff=-1*L1_MV_Y_Diff、
という決定を備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分である、C14に記載の装置。
[C20]
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが前記疑似反対称動きベクトル差分を有するという前記決定は、
L0_MV_X_Diff=L1_MV_X_Diff、
L0_MV_Y_Diff=L1_MV_Y_Diff、
L0_MV_X_Diff=-1*L1_MV_X_Diff、または
L0_MV_Y_Diff=-1*L1_MV_Y_Diff、
という決定を備え、ここにおいて、
L0_MV_X_Diffは、第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のX成分であり、
L0_MV_Y_Diffは、前記第1の初期動きベクトルと前記第1の導出された動きベクトルとの間の差分のY成分であり、
L1_MV_X_Diffは、第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のX成分であり、
L1_MV_Y_Diffは、前記第2の初期動きベクトルと前記第2の導出された動きベクトルとの間の差分のY成分である、C14に記載の装置。
[C21]
前記1つまたは複数のプロセッサは、
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが、前記第1の初期動きベクトルと前記第2の初期動きベクトルとの間の関係に関する少なくとも1つの条件を満たすと決定するようにさらに構成され、前記関係は、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが疑似対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが前記対称動きベクトル差分を有する、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが反対称である、前記第1の初期動きベクトルと前記第2の初期動きベクトルとが疑似反対称である、または前記第1の初期動きベクトルと前記第2の初期動きベクトルとが前記反対称動きベクトル差分を有することを備え、
前記複数の導出された動きベクトルを生成することは、前記第1の初期動きベクトルと前記第2の初期動きとが前記少なくとも1つの条件を満たすことに基づく、C14に記載の装置。
[C22]
前記1つまたは複数のプロセッサは、
動きベクトル候補リスト中の第1の初期動きベクトルと前記動きベクトル候補リスト中の第2の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定するようにさらに構成され、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、C14に記載の装置。
[C23]
前記1つまたは複数のプロセッサは、
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するようにさらに構成され、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記決定にさらに基づく、C14に記載の装置。
[C24]
前記1つまたは複数のプロセッサは、
第1の動きベクトル候補リストに関連付けられた第1の参照ピクチャと現在のピクチャとの間の第1のピクチャ順序カウント(POC)距離が0であり、第2の動きベクトル候補リストに関連付けられた第2の参照ピクチャと前記現在のピクチャとの間の第2のPOC距離が0であるかどうかを決定するようにさらに構成され、
前記複数の導出された動きベクトルを生成する前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとを決定することは、前記第1の動きベクトル候補リストに関連付けられた前記第1の参照ピクチャと前記現在のピクチャとの間の前記第1のPOC距離が0であり、前記第2の動きベクトル候補リストに関連付けられた前記第2の参照ピクチャと前記現在のピクチャとの間の前記第2のPOC距離がゼロ決定であると前記決定することにさらに基づく、C14に記載の装置。
[C25]
前記1つまたは複数のプロセッサは、前記符号化されたビデオビットストリームから前記少なくとも1つの制約を決定するようにさらに構成される、C14に記載の装置。
[C26]
前記コストメトリックは、絶対差分の和を含む、C14に記載の装置。
[C27]
符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、前記装置は、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成するための手段と、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定するための手段と、前記決定するための手段は、
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすと決定するための手段を備え、前記関係は、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称である、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第1の導出された動きベクトルと前記第2の導出された動きベクトルとを使用して現在のブロックを復号するための手段と
を備える、装置。
[C28]
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、C27に記載の装置。
[C29]
ビデオデータを符号化するように構成された装置であって、前記装置は、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信中の1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
復号器側動きベクトル導出(DMVD)を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第1の導出された動きベクトルと第2の導出された動きベクトルとを決定することと、前記決定することは、
前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとの間の関係に関する少なくとも1つの制約を満たすという決定を備え、前記関係は、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称である、前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第1の導出された動きベクトルと前記第2の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第1の導出された動きベクトルと前記第2の導出された動きベクトルとを使用して現在のブロックを符号化することと
を行うように構成される、装置。
[C30]
前記複数の導出された動きベクトルを生成するためにDMVDを使用することは、双方向オプティカルフロー(BIO)プロセス、フレームレートアップコンバージョン(FRUC)プロセス、バイラテラルマッチングプロセス、FRUCテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの1つを使用することを備える、C29に記載の装置。