(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-17
(54)【発明の名称】デコーダ側動きベクトル精緻化のための適応バイラテラルマッチング
(51)【国際特許分類】
H04N 19/513 20140101AFI20240709BHJP
H04N 19/70 20140101ALI20240709BHJP
【FI】
H04N19/513
H04N19/70
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023575920
(86)(22)【出願日】2022-06-24
(85)【翻訳文提出日】2023-12-08
(86)【国際出願番号】 US2022073155
(87)【国際公開番号】W WO2023278964
(87)【国際公開日】2023-01-05
(32)【優先日】2021-06-29
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-11-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-06-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ハン・フアン
(72)【発明者】
【氏名】ヴァディム・セレジン
(72)【発明者】
【氏名】ウェイ-ジュン・チエン
(72)【発明者】
【氏名】ジ・ジャン
(72)【発明者】
【氏名】チュン-チ・チェン
(72)【発明者】
【氏名】マルタ・カルチェヴィチ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159NN11
5C159NN21
5C159RC12
5C159RC38
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
ビデオデータを処理するためのシステム及び技法が提供される。例えば、システム及び技法は、ビデオデータの現在ピクチャを取得することと、ビデオデータから現在ピクチャのための参照ピクチャを取得することとを含み得る。マージモード候補は現在ピクチャのために決定され得る。第1の動きベクトル及び第2の動きベクトルはマージモード候補のために特定され得る。複数の動きベクトル探索戦略からマージモード候補のために動きベクトル探索戦略が選択され得る。選択された動きベクトル探索戦略は、第1の動きベクトル又は第2の動きベクトルのうちの少なくとも1つに対応する1つまたは複数の制約と関連付けられ得る。選択された動きベクトル探索戦略は、第1の動きベクトル、第2の動きベクトル及び参照ピクチャに基づいて、精緻化された動きベクトルを決定するために使用され得る。マージモード候補は、精緻化された動きベクトルを使用して処理され得る。
【特許請求の範囲】
【請求項1】
ビデオデータを処理するための装置であって、
少なくとも1つのメモリと、
前記少なくとも1つのメモリに結合された少なくとも1つのプロセッサとを備え、前記少なくとも1つのプロセッサが、
現在ピクチャのための1つまたは複数の参照ピクチャを取得し、
マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定し、
複数の動きベクトル探索戦略から前記マージモード候補のための選択された動きベクトル探索戦略を決定し、
前記選択された動きベクトル探索戦略を使用して、前記第1の動きベクトルまたは前記第2の動きベクトルのうちの少なくとも1つおよび前記1つまたは複数の参照ピクチャに基づいて1つまたは複数の精緻化された動きベクトルを決定し、
前記1つまたは複数の精緻化された動きベクトルを使用して前記マージモード候補を処理する
ように構成される、装置。
【請求項2】
前記選択された動きベクトル探索戦略が、前記第1の動きベクトルまたは前記第2の動きベクトルのうちの少なくとも1つに基づいて1つまたは複数の制約と関連付けられる、請求項1に記載の装置。
【請求項3】
前記1つまたは複数の制約が、前記ブロックのためにシグナリングされるシンタックス要素に基づいて、前記ビデオデータのブロックのために決定される、請求項2に記載の装置。
【請求項4】
前記1つまたは複数の制約が、前記第1の動きベクトルに関連する第1の動きベクトル差分または前記第2の動きベクトルに関連する第2の動きベクトル差分のうちの少なくとも1つと関連付けられる、請求項2に記載の装置。
【請求項5】
前記1つまたは複数の精緻化された動きベクトルが、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを含み、前記少なくとも1つのプロセッサが、
前記第1の精緻化された動きベクトルと前記第1の動きベクトルとの差分として前記第1の動きベクトル差分を決定し、
前記第2の精緻化された動きベクトルと前記第2の動きベクトルとの差分として前記第2の動きベクトル差分を決定するように構成される、請求項4に記載の装置。
【請求項6】
前記1つまたは複数の制約が、前記第1の動きベクトル差分および前記第2の動きベクトル差分のためのミラーリング制約を含み、前記第1の動きベクトル差分および前記第2の動きベクトル差分が、同じ大きさおよび異なる符号を有する、請求項4に記載の装置。
【請求項7】
前記1つまたは複数の制約が、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの少なくとも1つのためのゼロ値制約を含む、請求項4に記載の装置。
【請求項8】
前記ゼロ値制約に基づいて、前記少なくとも1つのプロセッサが、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの第1のものを一定値に保ち、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの第2のものに対して探索することによって、前記選択された動きベクトル探索戦略を使用して、前記1つまたは複数の精緻化された動きベクトルを決定するように構成される、請求項7に記載の装置。
【請求項9】
前記選択された動きベクトル探索戦略が、バイラテラルマッチング(BM)動きベクトル探索戦略である、請求項1に記載の装置。
【請求項10】
前記少なくとも1つのプロセッサが、前記選択された動きベクトル探索戦略に関連する1つまたは複数の制約に基づいて前記1つまたは複数の精緻化された動きベクトルを決定するように構成され、前記1つまたは複数の制約に基づいて前記1つまたは複数の精緻化された動きベクトルを決定するために、前記少なくとも1つのプロセッサが、
前記選択された動きベクトル探索戦略に基づいて前記第1の動きベクトルの周りで第1の参照ピクチャを探索することによって、第1の精緻化された動きベクトルを決定し、
前記選択された動きベクトル探索戦略に基づいて前記第2の動きベクトルの周りで第2の参照ピクチャを探索することによって、第2の精緻化された動きベクトルを決定するように構成され、
前記1つまたは複数の制約が動きベクトル差分制約を含む、請求項9に記載の装置。
【請求項11】
前記第1の精緻化された動きベクトルおよび前記第2の精緻化された動きベクトルを決定するために、前記少なくとも1つのプロセッサが、
前記第1の精緻化された動きベクトルに関連する第1の参照ブロックと前記第2の精緻化された動きベクトルに関連する第2の参照ブロックとの差分を最小にするように構成される、請求項10に記載の装置。
【請求項12】
前記複数の動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略、小数サンプル精緻化戦略、双方向オプティカルフロー戦略、またはサブブロックベースのバイラテラルマッチング動きベクトル精緻化戦略のうちの少なくとも2つを含む、請求項1に記載の装置。
【請求項13】
前記選択された動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略を備える、請求項1に記載の装置。
【請求項14】
前記マルチパスデコーダ側動きベクトル精緻化戦略が、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたは1つまたは複数のサブブロックベースの動きベクトル精緻化パスのうちの少なくとも1つを含む、請求項13に記載の装置。
【請求項15】
前記少なくとも1つのプロセッサが、
第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第1の制約を使用して、前記1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスを実行し、
前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの少なくとも1つに関連する第2の制約を使用して、前記1つまたは複数のサブブロックベースの動きベクトル精緻化パスを実行するように構成され、前記第1の制約が前記第2の制約と異なる、請求項14に記載の装置。
【請求項16】
前記1つまたは複数のサブブロックベースの動きベクトル精緻化パスが、サブブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたはサブブロックベースの双方向オプティカルフロー動きベクトル精緻化パスのうちの少なくとも1つを含む、請求項14に記載の装置。
【請求項17】
ワイヤレス通信デバイスである、請求項1に記載の装置。
【請求項18】
前記少なくとも1つのプロセッサが、前記ビデオデータのブロックのための前記1つまたは複数の精緻化された動きベクトルを決定するように構成され、前記マージモード候補が前記ブロックの隣接ブロックを含む、請求項1に記載の装置。
【請求項19】
ビデオデータを処理するための方法であって、
現在ピクチャのための1つまたは複数の参照ピクチャを取得するステップと、
マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定するステップと、
複数の動きベクトル探索戦略から前記マージモード候補のための選択された動きベクトル探索戦略を決定するステップと、
前記選択された動きベクトル探索戦略を使用して、前記第1の動きベクトルまたは前記第2の動きベクトルのうちの少なくとも1つおよび前記1つまたは複数の参照ピクチャに基づいて1つまたは複数の精緻化された動きベクトルを決定するステップと、
前記1つまたは複数の精緻化された動きベクトルを使用して前記マージモード候補を処理するステップとを備える、方法。
【請求項20】
前記選択された動きベクトル探索戦略が、前記第1の動きベクトルまたは前記第2の動きベクトルのうちの少なくとも1つに基づいて1つまたは複数の制約と関連付けられる、請求項19に記載の方法。
【請求項21】
前記1つまたは複数の制約が、前記ブロックのためにシグナリングされるシンタックス要素に基づいて、前記ビデオデータのブロックのために決定される、請求項20に記載の方法。
【請求項22】
前記1つまたは複数の制約が、前記第1の動きベクトルに関連する第1の動きベクトル差分または前記第2の動きベクトルに関連する第2の動きベクトル差分のうちの少なくとも1つと関連付けられる、請求項20に記載の方法。
【請求項23】
前記1つまたは複数の精緻化された動きベクトルが、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを含み、前記方法がさらに、
前記第1の精緻化された動きベクトルと前記第1の動きベクトルとの差分として前記第1の動きベクトル差分を決定するステップと、
前記第2の精緻化された動きベクトルと前記第2の動きベクトルとの差分として前記第2の動きベクトル差分を決定するステップとを備える、請求項22に記載の方法。
【請求項24】
前記1つまたは複数の制約が、前記第1の動きベクトル差分および前記第2の動きベクトル差分のためのミラーリング制約を含み、前記第1の動きベクトル差分および前記第2の動きベクトル差分が、同じ大きさおよび異なる符号を有する、請求項22に記載の方法。
【請求項25】
前記1つまたは複数の制約が、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの少なくとも1つのためのゼロ値制約を含む、請求項22に記載の方法。
【請求項26】
前記ゼロ値制約に基づいて、前記1つまたは複数の動き精緻化された動きベクトルが、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの第1のものを一定値に保ち、前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの第2のものに対して探索することによって、前記選択された動きベクトル探索戦略を使用して決定される、請求項25に記載の方法。
【請求項27】
前記選択された動きベクトル探索戦略が、バイラテラルマッチング(BM)動きベクトル探索戦略であり、前記1つまたは複数の精緻化された動きベクトルが、前記選択された動きベクトル探索戦略に関連する1つまたは複数の制約に基づいて決定され、前記1つまたは複数の制約に基づいて前記1つまたは複数の精緻化された動きベクトルを決定するステップが、
前記選択された動きベクトル探索戦略に基づいて前記第1の動きベクトルの周りで第1の参照ピクチャを探索することによって、第1の精緻化された動きベクトルを決定するステップと、
前記選択された動きベクトル探索戦略に基づいて前記第2の動きベクトルの周りで第2の参照ピクチャを探索することによって、第2の精緻化された動きベクトルを決定するステップとを備え、
前記1つまたは複数の制約が動きベクトル差分制約を含む、請求項19に記載の方法。
【請求項28】
前記第1の精緻化された動きベクトルおよび前記第2の精緻化された動きベクトルを決定するステップが、
前記第1の精緻化された動きベクトルに関連する第1の参照ブロックと前記第2の精緻化された動きベクトルに関連する第2の参照ブロックとの差分を最小にするステップを備える、請求項27に記載の方法。
【請求項29】
前記選択された動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略を備え、前記マルチパスデコーダ側動きベクトル精緻化戦略が、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたは1つまたは複数のサブブロックベースの動きベクトル精緻化パスのうちの少なくとも1つを含む、請求項19に記載の方法。
【請求項30】
第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第1の制約を使用して、前記1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスを実行するステップと、
前記第1の動きベクトル差分または前記第2の動きベクトル差分のうちの少なくとも1つに関連する第2の制約を使用して、前記1つまたは複数のサブブロックベースの動きベクトル精緻化パスを実行するステップとをさらに備え、前記第1の制約が前記第2の制約と異なる、請求項29に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は全般に、ビデオ符号化および復号に関する。たとえば、本開示の態様は、バイラテラルマッチングを使用してデコーダ側動きベクトル精緻化(decoder-side motion vector refinement: DMVR)に関するビデオコーディング技法を改善することを含む。
【背景技術】
【0002】
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスの中に組み込まれ得る。そのようなデバイスは、ビデオデータが消費のために処理および出力されることを可能にする。デジタルビデオデータは、消費者およびビデオ提供者の需要を満たすための大量のデータを含む。たとえば、ビデオデータの消費者は、高い忠実度、解像度、フレームレートなどを有する最高品質のビデオを望む。その結果、これらの要求を満たすことが求められる大量のビデオデータが、通信ネットワーク、およびビデオデータを処理して記憶するデバイスに負担をかける。
【発明の概要】
【発明が解決しようとする課題】
【0003】
デジタルビデオデバイスは、ビデオデータを圧縮するためのビデオコーディング技法を実装することができる。ビデオコーディングは、1つまたは複数のビデオコーディング規格またはフォーマットに従って実行される。たとえば、ビデオコーディング規格またはフォーマットは、とりわけ、多用途ビデオコーディング(versatile video coding: VVC)、高効率ビデオコーディング(high-efficiency video coding: HEVC)、アドバンストビデオコーディング(advanced video coding: AVC)、MPEG-2 Part 2コーディング(MPEGは、moving picture experts groupを表す)、ならびにAlliance for Open Mediaによって開発されたAOMedia Video 1(AV1)などのプロプリエタリビデオコーデック/フォーマットを含む。ビデオコーディングは、一般に、ビデオ画像またはシーケンスに存在する冗長性を利用する予測方法(たとえば、インター予測、イントラ予測など)を利用する。ビデオコーディング技法の目的は、ビデオ品質の劣化を回避するかまたは最小限にしながら、より低いビットレートを使用する形態にビデオデータを圧縮することである。絶えず進化するビデオサービスが利用可能になるにつれて、よりコーディング効率の高い符号化技法が必要とされる。
【課題を解決するための手段】
【0004】
いくつかの例では、適応バイラテラルマッチングを使用したデコーダ側動きベクトル精緻化(DMVR)のための、システムおよび技法が説明される。少なくとも1つの説明のための例によれば、少なくとも1つのメモリ(たとえば、ビデオデータなどのデータを記憶するように構成される)と、少なくとも1つのメモリに結合された少なくとも1つのプロセッサ(たとえば、回路において実装される)とを含む、ビデオデータを処理するための装置が提供される。少なくとも1つのプロセッサは、現在ピクチャのための1つまたは複数の参照ピクチャを取得することと、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定することと、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定することと、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定することと、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理することとを行うように構成され、それらを行うことができる。
【0005】
別の例では、ビデオデータを処理するための方法が提供される。方法は、現在ピクチャのための1つまたは複数の参照ピクチャを取得するステップと、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定するステップと、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定するステップと、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定するステップと、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理するステップとを含む。
【0006】
別の例では、命令が記憶された非一時的コンピュータ可読媒体が提供され、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、現在ピクチャのための1つまたは複数の参照ピクチャを取得させ、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定させ、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定させ、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定させ、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理させる。
【0007】
別の例では、ビデオデータを処理するための装置が提供される。装置は、現在ピクチャのための1つまたは複数の参照ピクチャを取得するための手段と、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定するための手段と、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定するための手段と、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定するための手段と、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理するための手段とを含む。
【0008】
本概要は、特許請求される主題の主要なまたは必須の特徴を特定することは意図されず、特許請求される主題の範囲を決定するために単独で使用されることも意図されない。本主題は、この特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照することによって理解されるはずである。
【0009】
上記のことは、他の特徴および態様とともに、以下の明細書、特許請求の範囲、および添付図面を参照すると、より明らかになろう。
【0010】
本出願の説明のための態様が、以下の図を参照して以下で詳細に説明される。
【図面の簡単な説明】
【0011】
【
図1】本開示のいくつかの例による、符号化デバイスおよび復号デバイスの例を示すブロック図である。
【
図2A】本開示のいくつかの例による、マージモードのための例示的な空間隣接動きベクトル候補を示す概念図である。
【
図2B】本開示のいくつかの例による、進化型動きベクトル予測(advanced motion vector prediction: AMVP)モードのための例示的な空間隣接動きベクトル候補を示す概念図である。
【
図3A】本開示のいくつかの例による、例示的な時間動きベクトル予測子(temporal motion vector predictor: TMVP)候補を示す概念図である。
【
図3B】本開示のいくつかの例による、動きベクトルスケーリングの例を示す概念図である。
【
図4A】本開示のいくつかの例による、現在コーディングユニットのための動き補償パラメータを推定するために使用される現在コーディングユニットの隣接サンプルの例を示す概念図である。
【
図4B】本開示のいくつかの例による、現在コーディングユニットのための動き補償パラメータを推定するために使用される参照ブロックの隣接サンプルの例を示す概念図である。
【
図5】本開示のいくつかの例による、ブロックを処理する際に使用するための空間マージ候補の場所を示す図である。
【
図6】本開示のいくつかの例による、ブロックを処理する際に使用するための時間マージ候補のための動きベクトルスケーリングの態様を示す図である。
【
図7】本開示のいくつかの例による、ブロックを処理する際に使用するための時間マージ候補の態様を示す図である。
【
図8】本開示のいくつかの例による、バイラテラルマッチングの態様を示す図である。
【
図9】本開示のいくつかの例による、双方向オプティカルフロー(bi-directional optical flow: BDOF)の態様を示す図である。
【
図10】本開示のいくつかの例による、探索エリア領域を示す図である。
【
図11】本開示のいくつかの例による、適応バイラテラルマッチングを用いたデコーダ側動きベクトル精緻化のための例示的なプロセスを示すフローチャートである。
【
図12】本開示のいくつかの例による、例示的なビデオ符号化デバイスを示すブロック図である。
【
図13】本開示のいくつかの例による、例示的なビデオ復号デバイスを示すブロック図である。
【発明を実施するための形態】
【0012】
本開示のいくつかの態様が以下で提供される。当業者に明らかになるように、これらの態様のいくつかが独立して適用されてもよく、それらのうちのいくつかが組み合わせて適用されてもよい。以下の説明では、説明の目的で、本出願の態様の完全な理解をもたらすために具体的な詳細が記載される。しかしながら、これらの具体的な詳細なしに様々な態様が実践されてもよいことは明らかであろう。図および説明は、限定的であることは意図されていない。
【0013】
以下の説明は、例示的な態様を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定することは意図されない。むしろ、例示的な態様の以下の説明は、例示的な態様を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載されるような本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が加えられてもよいことを理解されたい。
【0014】
ビデオコーディングデバイス(たとえば、符号化デバイス、復号デバイス、または合成符号化-復号デバイス)は、ビデオデータを効率的に符号化および/または復号するためのビデオ圧縮技法を実装する。ビデオ圧縮技法は、空間予測(たとえば、イントラフレーム予測もしくはイントラ予測)、時間予測(たとえば、インターフレーム予測もしくはインター予測)、インターレイヤ予測(ビデオデータの異なるレイヤにわたる)、および/またはビデオシーケンスに固有の冗長性を低減もしくは除去するための他の予測技法を含む、異なる予測モードを適用することを含み得る。ビデオエンコーダは、(以下でより詳細に説明される)ビデオブロックまたはコーディングユニットと呼ばれる矩形領域に、元のビデオシーケンスの各ピクチャを区分することができる。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
【0015】
ビデオブロックは、1つまたは複数の方法で、より小さいブロックの1つまたは複数のグループに分割され得る。ブロックは、コーディングツリーブロック、予測ブロック、変換ブロック、または他の適切なブロックを含み得る。一般に「ブロック」への言及は、別段に規定されていない限り、そのようなビデオブロック(たとえば、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または当業者によって理解されるような、他の適切なブロックもしくはサブブロック)を指すことがある。さらに、これらのブロックの各々は、本明細書では互換的に「ユニット」(たとえば、コーディングツリーユニット(CTU)、コーディングユニット、予測ユニット(PU)、変換ユニット(TU)など)と呼ばれることもある。場合によっては、ユニットは、ビットストリームの中で符号化されるコーディング論理ユニットを示すことがあるが、ブロックは、プロセスの対象であるビデオフレームバッファの部分を示すことがある。
【0016】
インター予測モードの場合、ビデオエンコーダは、参照フレームまたは参照ピクチャと呼ばれる、別の時間的な場所に位置するフレーム(またはピクチャ)の中で符号化されているブロックと同様のブロックを探索することができる。ビデオエンコーダは、この探索を、符号化されるべきブロックからある一定の空間変位に制限し得る。水平変位成分および垂直変位成分を含む2次元(2D)動きベクトルを使用して、最良の一致が特定され得る。イントラ予測モードの場合、ビデオエンコーダは、同じピクチャ内の以前に符号化された隣接ブロックからのデータに基づいて、空間予測技法を使用して、予測されたブロックを形成し得る。
【0017】
ビデオエンコーダは、予測誤差を決定し得る。たとえば、予測は、符号化されているブロックの中のピクセル値と予測されたブロックの中のピクセル値との差分として決定され得る。予測誤差は、残差とも呼ばれ得る。ビデオエンコーダはまた、予測誤差に変換(たとえば、離散コサイン変換(DCT)または他の適切な変換)を適用して、変換係数を生成し得る。変換の後、ビデオエンコーダは変換係数を量子化し得る。量子化された変換係数および動きベクトルは、シンタックス要素を使用して表され、制御情報とともに、ビデオシーケンスのコーディングされた表現を形成し得る。いくつかの事例では、ビデオエンコーダは、シンタックス要素をエントロピーコーディングし、それによって、それらの表現に必要なビット数をさらに減らし得る。
【0018】
ビデオデコーダは、上で論じられたシンタックス要素および制御情報を使用して、現在フレームを復号するための予測データ(たとえば、予測ブロック)を構築し得る。たとえば、ビデオデコーダは、予測ブロックと圧縮された予測誤差を加算し得る。ビデオデコーダは、量子化された係数を使用して変換基底関数を重み付けることによって、圧縮された予測誤差を決定し得る。再構築されたフレームと元のフレームとの差分は、再構築誤差と呼ばれる。
【0019】
予測技法(たとえば、インター予測モード)を実行するときにビデオコーディングデバイス(たとえば、ビデオデコーダまたは復号デバイス)によって使用され得る1つまたは複数の動きベクトルの正確さを高めるための、システム、装置、プロセス(方法とも呼ばれる)、およびコンピュータ可読媒体(本明細書では「システムおよび技法」と集合的に呼ばれる)が本明細書で説明される。たとえば、システムおよび技法は、デコーダ側動きベクトル精緻化(DMVR)のためのバイラテラルマッチングを実行することができる。バイラテラルマッチングは、2つの初期動きベクトルのペアを精緻化する技法である。そのような精緻化は、ブロックマッチングコストを最小にする更新された動きベクトルを導出するための初期動きベクトルのペアの周りの探索とともに起こり得る。ブロックマッチングコストは、絶対差分和(sum of absolute difference: SAD)基準、絶対変換差分和(sum of absolute transformed difference: SATD)基準、二乗和誤差(sum of square error: SSE)基準、または他のそのような基準を使用することを含む、様々な方法で生成され得る。本明細書で説明される態様は、双予測マージ候補の動きベクトルの正確さを高めることができ、本明細書で説明される態様に従って動作するデバイスのビデオ品質の改善とそれに関連するデバイスの性能の改善をもたらす。
【0020】
いくつかの態様では、システムおよび技法は、DMVRのための適応バイラテラルマッチングを実行するために使用され得る。たとえば、システムおよび技法は、異なるコーディングされたブロックのための異なる探索戦略および/または探索パラメータを使用してバイラテラルマッチングを実行することができる。以下でより深く説明されるように、DMVRのための適応バイラテラルマッチングは、所与のブロックのために決定またはシグナリングされる選択された探索戦略に基づき得る。選択された探索戦略は、バイラテラルマッチング探索プロセスのための1つまたは複数の制約を含み得る。いくつかの例では、選択された探索戦略は、追加または代替として、第1の動きベクトル差分および/または第2の動きベクトル差分のための1つまたは複数の制約を含み得る。いくつかの例では、選択された探索戦略は、第1の動きベクトル差分と第2の動きベクトル差分との間の1つまたは複数の制約を含み得る。
【0021】
いくつかの態様では、精緻化されるべき動きベクトルのために制約が選択される。制約は、ミラーリング制約、第1のベクトルのためのゼロ制約、第2のベクトルのためのゼロ制約、または他のタイプの制約であり得る。いくつかの場合、制約は、1つまたは複数のDMVR条件を満たすマージ候補内のマージモードコーディングされたブロックに適用される。次いで、1つまたは複数の制約が、候補を特定して精緻化された動きベクトルを選択するために、1つまたは複数の探索戦略とともに使用され得る。
【0022】
いくつかの態様では、異なる探索戦略が使用される。探索戦略を複数のサブセットにグループ化することができ、各サブセットは1つまたは複数の探索戦略を含む。いくつかの場合、デコーダは、選択されたサブセットを決定するためにシンタックス要素を使用することができる。たとえば、エンコーダは、ビットストリームにシンタックス要素を含めることができる。そのような例では、デコーダは、ビットストリームを受信して、ビットストリームからシンタックス要素を復号してもよい。デコーダは、ビットストリームに含まれるビデオデータの所与の1つまたは複数のブロックのための選択されたサブセットおよびあらゆる関連する制約を決定するために、シンタックス要素を使用することができる。サブセットに関連する選択されたサブセットおよびあらゆる制約を使用して、デコーダは、動きベクトル(たとえば、双予測マージ候補の2つの動きベクトル)を処理して、精緻化された動きベクトルを特定することができる。1つの説明のための態様では、適応バイラテラルモードが提供され、このとき、コーディングデバイスは、関連するDMVR条件を満たす選択された動き情報候補を(たとえば、新しい適応バイラテラルモードの一部としてシグナリング構造とともに)シグナリングする。
【0023】
上で述べられた探索戦略および関連する制約を使用することは、選択可能な探索アルゴリズムおよび関連する制約を使用して適応バイラテラル動きベクトル精緻化を提供することなどによって、デコーダ側動きベクトル精緻化に改善を提供することができる。デコーダ側動きベクトル精緻化のそのような改善は、増強圧縮モデル(enhanced compression model: ECM)の実装などの、様々なビデオコーデックとともに使用され得る。本明細書で説明される例は、1つまたは複数のビデオコーディング規格に従って動作するECMシステムを改善するために、マルチパスDMVRに適用される実装形態を含む。本明細書で説明される技法は、1つまたは複数の符号化デバイス、復号デバイス、または合成符号化-復号デバイスを含む、1つまたは複数のコーディングデバイスを使用して実装され得る。コーディングデバイスは、モバイルデバイス、拡張現実(XR)デバイス、車両もしくは車両のコンピューティングシステム、サーバデバイスもしくはシステム(たとえば、複数のサーバを含む分散サーバシステム、単一のサーバデバイスまたはシステムなど)、または他のデバイスもしくはシステムなどの、プレーヤデバイスの1つまたは複数によって実装され得る。
【0024】
本明細書で説明されるシステムおよび技法は、限定はされないが、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、多用途ビデオコーディング(VVC)、VP9、AOMedia Video1 (AV1)フォーマット/コーデック、および/または、既存の、開発中の、もしくは今後開発される他のビデオコーディング規格を含む、あらゆる既存のビデオコーデック、開発中のあらゆるビデオコーデック、および/またはあらゆる未来のビデオコーディング規格に適用され得る。本明細書で説明されるシステムおよび技法は、本明細書で説明されるような適応バイラテラルマッチングからの改善された動きベクトルの選択に基づいて、圧縮の改善およびそれに関連するビデオ品質の改善とともにデバイスによるビデオデータ転送の性能を改善することによって、システムにおける通信システムおよびデバイスの動作を改善することができる。
【0025】
図1は、符号化デバイス104と復号デバイス112とを含むシステム100の例を示すブロック図である。符号化デバイス104はソースデバイスの一部であってもよく、復号デバイス112は受信デバイスの一部であってもよい。ソースデバイスおよび/または受信デバイスは、モバイルもしくは固定の電話ハンドセット(たとえば、スマートフォン、携帯電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラ、または任意の他の好適な電子デバイスなどの、電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信のための1つまたは複数のワイヤレストランシーバを含み得る。本明細書で説明されるコーディング技法は、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送もしくは送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例を含む、様々なマルチメディア用途におけるビデオコーディングに適用可能である。本明細書で使用されるコーディングという用語は、符号化および/または復号を指すことができる。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオ放送、ゲーミング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
【0026】
符号化デバイス104(またはエンコーダ)は、符号化されたビデオビットストリームを生成するためのビデオコーディング規格、フォーマット、コーデック、またはプロトコルを使用して、ビデオデータを符号化するために使用され得る。ビデオコーディング規格およびフォーマット/コーデックの例は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、そのスケーラブルビデオコーディング(Scalable Video Coding: SVC)およびマルチビュービデオコーディング(Multiview Video Coding: MVC)拡張を含む、ITU-T H.264(ISO/IEC MPEG-4 AVCとも呼ばれる)、高効率ビデオコーディング(HEVC)またはITU-T H.265、および多用途ビデオコーディング(VVC)またはITU-T H.266を含む。範囲およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)、ならびにマルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)を含めて、マルチレイヤビデオコーディングを扱うHEVCの様々な拡張が存在する。HEVCおよびその拡張は、Joint Collaboration Team on Video Coding (JCT-VC)、ならびにITU-T Video Coding Experts Group (VCEG)のJoint Collaboration Team on 3D Video Coding Extension Development (JCT-3V)およびISO/IEC Motion Picture Experts Group (MPEG)によって開発されている。VP9、Alliance for Open Media Alliance of Open Media (AOMedia)によって開発されたAOMedia Video1 (AV1)、およびEssential Video Coding (EVC)は、本明細書で説明される技法が適用され得る他のビデオコーディング規格である。
【0027】
本明細書で説明される技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、または他の好適な既存のビデオコーデック)に適用されることが可能であり、かつ/あるいは、開発されているビデオコーディング規格、ならびに/あるいは、たとえば、VVC、および/または開発中の、もしくは今後開発される他のビデオコーディング規格などの、開発中のおよび/または未来のビデオコーディング規格である、任意のビデオコーディング規格のための効率的なコーディングツールであり得る。たとえば、本明細書で説明される例は、VVC、HEVC、AVC、および/またはそれらの拡張などのビデオコーデックを使用して実行され得る。しかしながら、本明細書で説明される技法およびシステムはまた、MPEG、JPEG(または静止画像のための他のコーディング規格)、VP9、AV1、それらの拡張、またはすでに利用可能であるかまたはまだ利用可能ではないもしくは開発されていない他の好適なコーディング規格などの、他のコーディング規格、コーデック、またはフォーマットにも適用可能であり得る。たとえば、いくつかの例では、符号化デバイス104および/または復号デバイス112は、AV1、AVIの拡張、および/もしくはAV1の後継バージョン(たとえば、AV2)、または他のプロプリエタリフォーマットもしくは業界規格などの、プロプリエタリビデオコーデック/フォーマットに従って動作し得る。したがって、本明細書で説明される技法およびシステムは特定のビデオコーディング規格に関して説明されることがあるが、説明はその特定の規格のみに適用されるものと解釈されるべきではないことを当業者は理解するだろう。
【0028】
図1を参照すると、ビデオソース102は、ビデオデータを符号化デバイス104に提供し得る。ビデオソース102は、ソースデバイスの一部であってもよく、またはソースデバイス以外のデバイスの一部であってもよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラ電話、ビデオ電話など)、記憶されたビデオを含むビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の適切なビデオソースを含み得る。
【0029】
ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャまたは入力フレームを含み得る。ピクチャまたはフレームは、場合によってはビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部ではない静止画像であり得る。HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは一連のピクチャを含み得る。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルマサンプルの2次元アレイであり、SCbは、Cbクロミナンスサンプルの2次元アレイであり、SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。ピクセルは、ピクチャのアレイの中の所与の場所に対するすべての3つの成分(ルマサンプルおよびクロマサンプル)を指すことができる。他の事例では、ピクチャは、モノクロームであってもよく、ルマサンプルのアレイのみを含んでもよく、その場合、ピクセルおよびサンプルという用語は、互換的に使用され得る。例示のために個々のサンプルを参照する、本明細書で説明される例示的な技法に関して、同じ技法がピクセル(たとえば、ピクチャのアレイの中の所与の場所に対するすべての3つのサンプル成分)に適用され得る。例示のためにピクセル(たとえば、ピクチャのアレイの中の所与の場所に対するすべての3つのサンプル成分)を参照する、本明細書で説明される例示的な技法に関して、同じ技法が個々のサンプルに適用され得る。
【0030】
符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、ビデオデータを符号化して、符号化されたビデオビットストリームを生成する。いくつかの例では、符号化されたビデオビットストリーム(または「ビデオビットストリーム」もしくは「ビットストリーム」)は、一連の1つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス(coded video sequence: CVS)は、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有するアクセスユニット(access unit: AU)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のAUの直前までの、一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかの特性は、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。そうではない場合、ランダムアクセスポイントピクチャ(0に等しいRASLフラグを有する)はCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。ピクチャのコーディングされたスライスは、ビットストリームレベルで、ネットワーク抽象化レイヤ(NAL)ユニットと呼ばれるデータユニットへとカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々は、NALユニットヘッダを有する。一例では、ヘッダは、H.264/AVCに対して1バイト(マルチレイヤ拡張を除いて)、HEVCに対して2バイトである。NALユニットヘッダの中のシンタックス要素は、指定されたビットを取り、したがって、すべての種類のシステム、および、とりわけトランスポートストリーム、リアルタイムトランスポート(Real-time Transport: RTP)プロトコル、ファイルフォーマットなどの、トランスポートレイヤにとって認識可能である。
【0031】
ビデオコーディングレイヤ(video coding layer: VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。たとえば、コーディングされたビデオビットストリームを形成するビットのシーケンスがVCL NALユニットに存在する。VCL NALユニットは、コーディングされたピクチャデータの1つのスライスまたはスライスセグメント(以下で説明される)を含むことができ、非VCL NALユニットは、1つまたは複数のコーディングされたピクチャに関する制御情報を含む。場合によっては、NALユニットはパケットと呼ばれ得る。HEVC AUは、コーディングされたピクチャデータを含むVCL NALユニットと、(もしあれば)コーディングされたピクチャデータに対応する非VCL NALユニットとを含む。非VCL NALユニットは、他の情報に加えて、符号化されたビデオビットストリームに関する高レベル情報を有するパラメータセットを含み得る。たとえば、パラメータセットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)を含み得る。場合によっては、ビットストリームの各スライスまたは他の部分は、復号デバイス112がビットストリームのスライスまたは他の部分を復号するために使用され得る情報にアクセスすることを可能にするために、単一のアクティブなPPS、SPS、および/またはVPSを参照することができる。
【0032】
NALユニットは、ビデオの中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現(たとえば、符号化されたビデオビットストリーム、ビットストリームのCVSなど)を形成するビットのシーケンスを含み得る。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによって、ピクチャのコーディングされた表現を生成する。スライスの中の情報が、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされるように、スライスは他のスライスとは無関係である。スライスは、独立したスライスセグメント、および存在する場合、前のスライスセグメントに依存する1つまたは複数の従属したスライスセグメントを含む、1つまたは複数のスライスセグメントを含む。
【0033】
HEVCでは、スライスは次いで、ルマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)に区分される。ルマサンプルのCTB、およびクロマサンプルの1つまたは複数のCTBは、サンプルのためのシンタックスとともに、コーディングツリーユニット(CTU)と呼ばれる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれることがある。CTUは、HEVC符号化のための基本処理単位である。CTUは、様々なサイズの複数のコーディングユニット(CU)に分割され得る。CUは、コーディングブロック(CB)と呼ばれるルマサンプルアレイおよびクロマサンプルアレイを含む。
【0034】
ルマCBおよびクロマCBは、予測ブロック(PB)へとさらに分割され得る。PBは、(利用可能であるかまたは使用のために有効化されるとき)インター予測またはイントラブロックコピー(IBC)予測のために同じ動きパラメータを使用するルマ成分またはクロマ成分のサンプルのブロックである。ルマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリームの中でシグナリングされ、ルマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは動き情報とも呼ばれ得る。CBはまた、1つまたは複数の変換ブロック(TB)へと区分され得る。TBは、予測残差信号をコーディングするために残差変換(たとえば、場合によっては、同じ2次元変換)が適用される、色成分のサンプルの方形ブロックを表す。変換ユニット(TU)は、ルマサンプルおよびクロマサンプルのTB、ならびに対応するシンタックス要素を表す。変換コーディングは、以下でより詳しく説明される。
【0035】
CUのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という語句は、垂直方向の寸法および水平方向の寸法(たとえば、8ピクセル×8ピクセル)に関してビデオブロックのピクセル寸法を指すために本明細書で使用される。ブロックの中のピクセルは、行および列に配置され得る。いくつかの実装形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有しないことがある。CUに関連するシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるかまたはインター予測モード符号化されるかで異なり得る。PUは、形状が非正方形であるように区分され得る。CUに関連するシンタックスデータはまた、たとえば、CTUに従った1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形であり得る。
【0036】
HEVC規格によれば、変換は、変換ユニット(TU)を使用して実行され得る。TUは、異なるCUに対しては異なり得る。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、同じサイズであってもよく、またはPUよりも小さくてもよい。いくつかの例では、CUに対応する残差サンプルは、残差四分木(RQT)として知られる四分木構造を使用して、より小さいユニットに再分割され得る。RQTの葉ノードは、TUに対応し得る。TUに関連するピクセル差分値は、変換係数を生成するために変換され得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
【0037】
ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは次いで、残差(以下で説明される)を得るために元のビデオデータから減算される。CUごとに、シンタックスデータを使用して、ビットストリームの内部で予測モードがシグナリングされ得る。予測モードは、イントラ予測(または、イントラピクチャ予測)またはインター予測(または、インターピクチャ予測)を含み得る。イントラ予測は、ピクチャ内で空間的に隣接するサンプル間の相関を利用する。たとえば、イントラ予測を使用すると、たとえば、PUのための平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、隣接データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャの中の隣接する画像データから各PUが予測される。インター予測は、画像サンプルのブロックに対する動き補償された予測を導出するために、ピクチャ間の時間的な相関を使用する。たとえば、インター予測を使用すると、(出力順序において現在ピクチャの前または後の)1つまたは複数の参照ピクチャの中の画像データからの動き補償予測を使用して、各PUが予測される。ピクチャエリアを、ピクチャ間予測を使用してコーディングすべきか、またはピクチャ内予測を使用してコーディングすべきかという決定は、たとえば、CUレベルで行われ得る。
【0038】
エンコーダエンジン106およびデコーダエンジン116(以下でより詳しく説明される)は、VVCに従って動作するように構成され得る。VVCによれば、(エンコーダエンジン106および/またはデコーダエンジン116などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する(ルマサンプルのCTBおよびクロマサンプルの1つまたは複数のCTBは、サンプルのためのシンタックスとともに、CTUと呼ばれる)。ビデオコーダは、四分木二分木(QTBT)構造またはマルチタイプ木(MTT)構造などの木構造に従ってCTUを区分することができる。QTBT構造は、HEVCのCU、PU、およびTUの区別などの、複数の区分タイプの概念を排除する。QTBT構造は、四分木区分に従って区分された第1のレベルおよび二分木区分に従って区分された第2のレベルを含む2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。二分木の葉ノードはコーディングユニット(CU)に対応する。
【0039】
MTT区分構造では、ブロックは、四分木区分、二分木区分、および1つまたは複数のタイプの三分木区分を使用して区分され得る。三分木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、三分木区分は、中心を通って元のブロックを分けることなく、ブロックを3つのサブブロックに分ける。MTTにおける区分タイプ(たとえば、四分木、二分木、および三分木)は、対称または非対称であり得る。
【0040】
AV1コーデックに従って動作するとき、符号化デバイス104および復号デバイス112は、ブロックの中のビデオデータをコーディングするように構成され得る。AV1では、処理され得る最大コーディングブロックは、スーパーブロックと呼ばれる。AV1では、スーパーブロックは、128×128ルマサンプルまたは64×64ルマサンプルのいずれかであり得る。しかしながら、後継のビデオコーディングフォーマット(たとえば、AV2)では、スーパーブロックは、異なる(たとえば、より大きい)ルマサンプルサイズによって定義され得る。いくつかの例では、スーパーブロックは、ブロック四分木の最上位である。符号化デバイス104は、スーパーブロックをより小さいコーディングブロックへとさらに区分し得る。符号化デバイス104は、矩形区分または非矩形区分を使用して、スーパーブロックおよび他のコーディングブロックをより小さいブロックへと区分し得る。非矩形ブロックは、N/2×N、N×N/2、N/4×N、およびN×N/4ブロックを含み得る。符号化デバイス104および復号デバイス112は、コーディングブロックの各々に対して別個の予測および変換プロセスを実行し得る。
【0041】
AV1は、ビデオデータのタイルも定義する。タイルは、他のタイルとは無関係にコーディングされ得るスーパーブロックの矩形アレイである。すなわち、符号化デバイス104および復号デバイス112は、他のタイルからのビデオデータを使用せずに、タイル内のコーディングブロックをそれぞれ符号化および復号し得る。しかしながら、符号化デバイス104および復号デバイス112は、タイル境界を越えてフィルタリングを実行し得る。タイルは、サイズが均一であっても不均一であってもよい。タイルベースのコーディングは、エンコーダおよびデコーダの実装のための並列処理および/またはマルチスレッディングを可能にし得る。
【0042】
いくつかの例では、ビデオコーダは、輝度成分および彩度成分の各々を表すために単一のQTBT構造またはMTT構造を使用することができるが、他の例では、ビデオコーダは、輝度成分のための1つのQTBT構造またはMTT構造および両方の彩度成分のための別のQTBT構造またはMTT構造(またはそれぞれの彩度成分のための2つのQTBT構造および/もしくはMTT構造)などの、2つ以上のQTBT構造またはMTT構造を使用することができる。
【0043】
ビデオコーダは、四分木区分、QTBT区分、MTT区分、スーパーブロック区分、または他の区分構造を使用するように構成され得る。
【0044】
いくつかの例では、ピクチャの1つまたは複数のスライスにスライスタイプが割り当てられる。スライスタイプは、イントラコーディングされたスライス(Iスライス)、インターコーディングされたPスライス、およびインターコーディングされたBスライスを含む。Iスライス(独立して復号可能なイントラコーディングされたフレーム)は、イントラ予測のみによってコーディングされるピクチャのスライスであり、したがって、Iスライスがスライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータしか必要としないので、独立して復号可能である。Pスライス(単方向予測されたフレーム)は、イントラ予測を用いて、かつ単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャのみによって予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域のみからのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、かつインター予測(たとえば、双方向または単方向のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向に予測されることがあり、ここで、各ピクチャは、1つの参照領域に寄与し、2つの参照領域のサンプルセットは、双方向予測ブロックの予測信号を生成するために(たとえば、等しい重みを用いてまたは異なる重みを用いて)重み付けられる。上で説明されたように、1つのピクチャのスライスは独立してコーディングされる。場合によっては、ピクチャは、ただ1つのスライスとしてコーディングされ得る。
【0045】
上で述べられたように、ピクチャのイントラピクチャ予測は、ピクチャ内の空間的に隣接するサンプル間の相関を利用する。複数のイントラ予測モード(「イントラモード」とも呼ばれる)がある。いくつかの例では、ルマブロックのイントラ予測は、平面モード、DCモード、および33個の角度モード(たとえば、対角イントラ予測モードおよび対角イントラ予測モードに隣接する角度モード)を含む、35個のモードを含む。イントラ予測の35個のモードは、以下のTable 1(表1)に示されるようにインデックスを付けられる。他の例では、33個の角度モードによってまだ表されていないことがある予測角度を含む、より多くのイントラモードが定義されてもよい。他の例では、角度モードに関連する予測角度は、HEVCにおいて使用されるものとは異なり得る。
【0046】
【0047】
インターピクチャ予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間相関を使用する。並進動きモデルを使用して、あらかじめ復号されたピクチャ(参照ピクチャ)におけるブロックの位置は、動きベクトル(Δx,Δy)によって示され、Δxは水平変位を指定し、Δyは、現在ブロックの位置に対する参照ブロックの垂直変位を指定する。場合によっては、動きベクトル(Δx,Δy)は、整数サンプル精度(整数精度とも呼ばれる)であってもよく、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)を指し示す。場合によっては、動きベクトル(Δx,Δy)は、参照フレームの整数ペルグリッドに制限されることなく、基礎をなすオブジェクトの動きをより正確に捉えるために、小数サンプル精度(小数ペル精度または非整数精度とも呼ばれる)であってもよい。動きベクトルの精度は、動きベクトルの量子化レベルによって表され得る。たとえば、量子化レベルは、整数精度(たとえば、1ピクセル)または小数ペル精度(たとえば、1/4ピクセル、1/2ピクセル、または他のサブピクセル値)であり得る。対応する動きベクトルが小数サンプル精度を有するとき、予測信号を導出するために、補間が参照ピクチャに適用される。たとえば、小数位置における値を推定するために、(たとえば、1つまたは複数の補間フィルタを使用して)整数位置において利用可能なサンプルがフィルタリングされ得る。以前に復号された参照ピクチャは、参照ピクチャリストに対する参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれ得る。単予測および双予測を含む、2つの種類のピクチャ間予測が実行され得る。
【0048】
双予測(双方向インター予測とも呼ばれる)を使用したインター予測では、2つの動き補償された予測を(同じ参照ピクチャからまたは場合によっては異なる参照ピクチャから)生成するために、動きパラメータの2つのセット(Δx0、y0、refIdx0およびΔx1、y1、refIdx1)が使用される。たとえば、双予測では、各予測ブロックは、2つの動き補償された予測信号を使用し、B予測ユニットを生成する。次いで、最終的な動き補償された予測を得るために、2つの動き補償された予測が組み合わせられる。たとえば、2つの動き補償された予測が平均化によって組み合わせられ得る。別の例では、重み付け予測を使用することができ、この場合、各々の動き補償された予測に異なる重みが適用され得る。双予測において使用され得る参照ピクチャは、リスト0およびリスト1と表記される2つの別々のリストに記憶される。動き推定プロセスを使用して、エンコーダにおいて動きパラメータが導出され得る。
【0049】
単予測を使用するインター予測(単方向インター予測とも呼ばれる)では、参照ピクチャから動き補償された予測を生成するために、動きパラメータの1つのセット(Δx0、y0、refIdx0)が使用される。たとえば、単予測では、各予測ブロックは、多くとも1つの動き補償された予測信号を使用し、P個の予測ユニットを生成する。
【0050】
PUは、予測プロセスに関するデータ(たとえば、動きパラメータまたは他の適切なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの分解能(たとえば、整数精度、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)、またはそれらの任意の組合せを記述し得る。
【0051】
AV1は、ビデオデータのコーディングブロックを符号化および復号するための2つの一般的な技法を含む。2つの一般的な技法は、イントラ予測(たとえば、フレーム内予測または空間予測)およびインター予測(たとえば、フレーム間予測または時間予測)である。AV1の文脈では、イントラ予測モードを使用してビデオデータの現在フレームのブロックを予測するとき、符号化デバイス104および復号デバイス112は、ビデオデータの他のフレームからのビデオデータを使用しない。大半のイントラ予想モードでは、ビデオ符号化デバイス104は、現在ブロック中のサンプル値と同じフレームの中の参照サンプルから生成される予測される値との差分に基づいて、現在フレームのブロックを符号化する。ビデオ符号化デバイス104は、イントラ予測モードに基づいて、参照サンプルから生成される予測された値を決定する。
【0052】
イントラ予測および/またはインター予測を使用して予測を実行した後、符号化デバイス104は変換および量子化を実行することができる。たとえば、予測に続いて、エンコーダエンジン106は、PUに対応する残差値を計算し得る。残差値は、コーディングされているピクセルの現在ブロック(PU)と現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)とのピクセル差分値を備え得る。たとえば、予測ブロックを生成した(たとえば、インター予測またはイントラ予測を出した)後、エンコーダエンジン106は、予測ユニットによって生成された予測ブロックを現在ブロックから減算することによって、残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列またはアレイ)で表され得る。そのような例では、残差ブロックはピクセル値の2次元表現である。
【0053】
予測が実行された後に残っている可能性があるあらゆる残差データがブロック変換を使用して変換され、ブロック変換は、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の好適な変換機能、またはそれらの任意の組合せに基づいてもよい。場合によっては、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の適切なサイズ)が、各CUにおける残差データに適用され得る。いくつかの態様では、エンコーダエンジン106によって実装される変換プロセスおよび量子化プロセスのためにTUが使用され得る。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUも含み得る。以下でさらに詳しく説明されるように、残差値は、ブロック変換を使用して変換係数へと変換されてもよく、次いで、エントロピーコーディングのためのシリアル化された変換係数を生成するために、TUを使用して量子化および走査されてもよい。
【0054】
いくつかの態様では、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、エンコーダエンジン106は、CUのTUに対する残差データを計算し得る。PUは、空間領域(またはピクセル領域)におけるピクセルデータを備え得る。TUは、ブロック変換を適用した後の、変換領域における係数を備え得る。前に述べられたように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値とのピクセル差分値に相当し得る。エンコーダエンジン106は、CUに対する残差データを含むTUを形成してもよく、次いで、TUを変換してCUに対する変換係数を生成してもよい。
【0055】
エンコーダエンジン106は、変換係数の量子化を実行し得る。量子化は、係数を表すために使用されるデータの量を減らすために変換係数を量子化することによって、さらなる圧縮を実現する。たとえば、量子化は、係数の一部またはすべてに関連するビット深度を低減し得る。一例では、nビット値を有する係数は、量子化の間にmビット値へと切り捨てられてもよく、nはmよりも大きい。
【0056】
量子化が実行されると、コーディングされたビデオビットストリームは、量子化された変換係数、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)、区分情報、および他のシンタックスデータなどの、任意の他の適切なデータを含む。コーディングされたビデオビットストリームの様々な要素が次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、既定の走査順序を利用して量子化された変換係数を走査し、エントロピー符号化され得るシリアル化されたベクトルを生成し得る。いくつかの例では、エンコーダエンジン106は適応走査を実行し得る。量子化された変換係数を走査してベクトル(たとえば、1次元ベクトル)を形成した後、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の適切なエントロピー符号化技法を使用してもよい。
【0057】
符号化デバイス104の出力110は、符号化されたビデオビットストリームデータを構成するNALユニットを、通信リンク120を介して受信デバイスの復号デバイス112に送信し得る。復号デバイス112の入力114は、NALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでもよく、任意の好適なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、無線周波数(radio frequency: RF)、ウルトラワイドバンド(ultra-wideband: UWB)、WiFi-Direct、セルラー、Long-Term Evolution (LTE)、WiMax(商標)など)を含んでもよい。有線ネットワークは、任意の有線インターフェース(たとえば、ファイバ、イーサネット、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号回線(DSL)など)を含んでもよい。有線ネットワークおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装され得る。符号化されたビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
【0058】
いくつかの例では、符号化デバイス104は、符号化されたビデオビットストリームデータをストレージ108に記憶し得る。出力110は、エンコーダエンジン106から、またはストレージ108から、符号化されたビデオビットストリームデータを取り出し得る。ストレージ108は、分散している、またはローカルにアクセスされる様々なデータ記憶媒体のうちのいずれかを含み得る。たとえば、ストレージ108は、ハードドライブ、ストレージディスク、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。ストレージ108はまた、インター予測において使用するための参照ピクチャを記憶するための復号ピクチャバッファ(DPB)を含むことができる。さらなる例では、ストレージ108は、ソースデバイスによって生成される符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応することができる。そのような場合、復号デバイス112を含む受信デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを受信デバイスに送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワークアタッチトストレージ(NAS)デバイス、またはローカルディスクドライブを含む。受信デバイスは、インターネット接続を含む任意の標準的なデータ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージ108からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0059】
復号デバイス112の入力114は、符号化されたビデオビットストリームデータを受信し、ビデオビットストリームデータをデコーダエンジン116に、またはデコーダエンジン116によって後で使用するためにストレージ118に提供し得る。たとえば、ストレージ118は、インター予測において使用するための参照ピクチャを記憶するための復号ピクチャバッファ(decoded picture buffer: DPB)を含むことができる。復号デバイス112を含む受信デバイスは、ストレージ108を介して、復号されるべき符号化されたビデオデータを受信することができる。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。符号化されたビデオデータを送信するための通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、任意のワイヤレス通信媒体または有線通信媒体を備えることができる。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから受信デバイスへの通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0060】
デコーダエンジン116は、エントロピー復号すること(たとえば、エントロピーデコーダを使用して)、および符号化されたビデオデータを構成する1つまたは複数のコーディングされたビデオシーケンスの要素を抽出することによって、符号化されたビデオビットストリームデータを復号し得る。デコーダエンジン116は、次いで、符号化されたビデオビットストリームデータを再スケーリングし、符号化されたビデオビットストリームデータに対して逆変換を実行し得る。次いで、残差データがデコーダエンジン116の予測段に渡される。次いで、デコーダエンジン116がピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
【0061】
ビデオ復号デバイス112は、復号されたビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る、ビデオ宛先デバイス122に復号されたビデオを出力し得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であり得る。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であり得る。
【0062】
いくつかの態様では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合され得る。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(digital signal processor: DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array: FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、上で説明されたコーディング技法を実装するために必要な他のハードウェアまたはソフトウェアを含み得る。ビデオ符号化デバイス104およびビデオ復号デバイス112は、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスにおいて統合され得る。
【0063】
図1に示される例示的なシステムは、本明細書で使用され得る1つの説明のための例である。本明細書で説明される技法を使用してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実行されるが、これらの技法はまた、通常は「コーデック」と呼ばれる複合ビデオエンコーダデコーダによって実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイスおよび受信デバイスは、ソースデバイスが受信デバイスに送信するためのコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび受信デバイスは、デバイスの各々がビデオ符号化および復号コンポーネントを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
【0064】
本開示は全般に、シンタックス要素などのいくつかの情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、一般に、符号化されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータに対する値の通信を指し得る。たとえば、ビデオ符号化デバイス104は、ビットストリームにおいてシンタックス要素のための値をシグナリングし得る。一般に、シグナリングは、ビットストリームにおいて値を生成することを指す。上で述べられたように、ビデオソース102は、実質的にリアルタイムで、または、ビデオ宛先デバイス122によって後で取り出すためにシンタックス要素をストレージ108に記憶するときに行われ得るなど、リアルタイムではなく、ビットストリームをビデオ宛先デバイス122にトランスポートし得る。
【0065】
ビデオビットストリームはまた、補足強化情報(Supplemental Enhancement Information: SEI)メッセージを含み得る。たとえば、SEI NALユニットは、ビデオビットストリームの一部であり得る。場合によっては、SEIメッセージは、復号プロセスによって必要とされない情報を含むことができる。たとえば、SEIメッセージの中の情報は、デコーダがビットストリームのビデオピクチャを復号するのに必須でないことがあるが、デコーダは、ピクチャ(たとえば、復号出力)の表示または処理を改善するためにその情報を使用することができる。SEIメッセージの中の情報は、埋め込まれたメタデータであり得る。1つの説明のための例では、SEIメッセージの中の情報は、コンテンツの視認性を改善するためにデコーダ側エンティティによって使用され得る。いくつかの事例では、いくつかのアプリケーション規格は、アプリケーション規格に準拠するすべてのデバイスに品質の改善がもたらされ得るように、ビットストリームの中にそのようなSEIメッセージが存在することを義務付けることがある(たとえば、多くの他の例に加えて、SEIメッセージがビデオのすべてのフレームに対して搬送されるframe compatible plano-stereoscopic 3DTVビデオフォーマットのためのframe-packing SEIメッセージの搬送、recovery point SEIメッセージの処理、DVBにおけるpan-scan scan rectangle SEIメッセージの使用)。
【0066】
上で説明されたように、各ブロックに対して、動き情報(本明細書で動きパラメータとも呼ばれる)のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含む。前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、その場合、「前方」および「後方」という用語は必ずしも幾何学的意味を有するとは限らない。代わりに、「前方」および「後方」は、現在ピクチャの参照ピクチャリスト0(RefPicList0またはL0)および参照ピクチャリスト1(RefPicList1またはL1)に対応する。いくつかの例では、あるピクチャまたはスライスについて1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常に前方である。
【0067】
場合によっては、動きベクトルはその参照インデックスとともに、コーディングプロセス(たとえば、動き補償)において使用される。関連する参照インデックスを用いたそのような動きベクトルは、動き情報の単予測セットとして表記される。各予測方向について、動き情報は、参照インデックスと動きベクトルとを含むことができる。場合によっては、簡単のために、動きベクトルが関連する参照インデックスを有すると仮定されるような方法で、動きベクトル自体が参照されることがある。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを特定するために使用される。動きベクトルは、現在ピクチャの座標位置から参照インデックスによって特定された参照ピクチャの中の座標へのオフセットを提供する、水平成分および垂直成分を有する。たとえば、参照インデックスは、現在ピクチャの中のブロックのために使用されるべき特定の参照ピクチャを示すことができ、動きベクトルは、参照ピクチャの中のどこに、最も良く一致するブロック(現在ブロックに最も良く一致するブロック)があるかを示すことができる。
【0068】
H.264/AVCでは、各インターマクロブロック(macroblock: MB)は、1個の16×16MB区分、2個の16×8MB区分、2個の8×16MB区分、および4個の8×8MB区分を含めて、4つの異なる方法で区分され得る。1個のMBの中の異なるMB区分は、各方向に対して異なる参照インデックス値(RefPicList0またはRefPicList1)を有し得る。場合によっては、MBが4個の8×8MB区分に区分されないとき、各方向においてMB区分ごとに1つの動きベクトルのみを有し得る。場合によっては、MBが4個の8×8MB区分に区分されるとき、各8×8MB区分をサブブロックへとさらに区分することができ、その場合、各サブブロックは各方向に異なる動きベクトルを有し得る。いくつかの例では、1個の8×8サブブロック、2個の8×4サブブロック、2個の4×8サブブロック、および4個の4×4サブブロックを含む、8×8MB区分からサブブロックを得るための4つの異なる方法が存在する。各サブブロックは、各方向に異なる動きベクトルを有し得る。したがって、動きベクトルは、サブブロック以上のレベルで存在する。
【0069】
AVCでは、Bスライスにおけるスキップおよび/または直接モードのために、MBレベルまたはMB区分レベルのいずれかにおいて時間的直接モードが有効にされ得る。各MB区分に対して、動きベクトルを導出するために、現在ブロックのRefPicList1[0]の中の現在MB区分と同一位置のブロックの動きベクトルが使用される。同一位置のブロックの中の各動きベクトルは、POC距離に基づいてスケーリングされる。
【0070】
空間的直接モードもAVCにおいて実行され得る。たとえば、AVCでは、直接モードは、空間的な近隣から動き情報を予測することもできる。
【0071】
上で述べられたように、HEVCでは、スライスの中の最大のコーディングユニットは、コーディングツリーブロック(CTB)と呼ばれる。CTBは四分木を含み、四分木のノードがコーディングユニットである。CTBのサイズは、HEVCメインプロファイルでは16×16から64×64にわたり得る。場合によっては、8×8のCTBサイズがサポートされ得る。コーディングユニット(CU)は、CTBの同じサイズであってもよく、8×8程度に小さくてもよい。場合によっては、各コーディングユニットは、1つのモードを用いてコーディングされる。CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU)へとさらに区分されることがあり、またはさらなる区分が適用されないときには1つだけのPUになることがある。1つのCUの中に2個のPUが存在するとき、それらはサイズが半分の長方形、またはCUの1/4もしくは3/4のサイズを有する2つの長方形であり得る。CUがインターコーディングされるとき、動き情報の1つのセットが各PUに対して存在する。加えて、各PUは、動き情報のセットを導出するために固有のインター予測モードでコーディングされる。
【0072】
たとえば、HEVCにおける動き予測の場合、予測ユニット(PU)のためのマージモードおよび進化型動きベクトル予測(AMVP)モードを含めて、2つのインター予測モードが存在する。スキップはマージの特殊な事例と見なされる。AMVPモードまたはマージモードのいずれでも、動きベクトル(MV)候補リストが複数の動きベクトル予測子のために維持される。現在PUの、動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成される。いくつかの例では、記憶された動きベクトルとともに、1つまたは複数のスケーリングウィンドウオフセットがMV候補リストに含まれ得る。
【0073】
ブロックの動き予測のためにMV候補リストが使用される例では、MV候補リストは、符号化デバイスおよび復号デバイスによって別個に構築され得る。たとえば、MV候補リストは、ブロックを符号化するとき、符号化デバイスによって生成され、ブロックを復号するとき、復号デバイスによって生成され得る。MV候補リストの中の動き情報候補に関する情報(たとえば、1つまたは複数の動きベクトルに関する情報、場合によってはMV候補リストに記憶され得る1つまたは複数のLICフラグに関する情報、および/または他の情報)は、符号化デバイスと復号デバイスとの間でシグナリングされ得る。たとえば、マージモードでは、記憶された動き情報候補に対するインデックス値は、(たとえば、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、スライスヘッダ、ビデオビットストリームにおいて、もしくはビデオビットストリームとは別個に送信される、補足強化情報(SEI)メッセージなどの、シンタックス構造において、かつ/または他のシグナリングにおいて)符号化デバイスから復号デバイスにシグナリングされ得る。復号デバイスは、MV候補リストを構築し、シグナリングされた参照またはインデックスを使用して、動き補償予測のために使用するための1つまたは複数の動き情報候補を構築されたMV候補リストから取得し得る。たとえば、復号デバイス112は、MV候補リストを構築し、ブロックの動き予測のためにインデクシングされた場所からの動きベクトル(また、場合によっては、LICフラグ)を使用し得る。AMVPモードの場合、参照またはインデックスに加えて、差分または残差値がデルタとしてシグナリングされてもよい。たとえば、AMVPモードの場合、復号デバイスは、1つまたは複数のMV候補リストを構築し、ブロックの動き補償予測を実行する際にシグナリングされたインデックス値を使用して取得された1つまたは複数の動き情報候補にデルタ値を適用し得る。
【0074】
いくつかの例では、MV候補リストは、マージモードのための最大5個の候補、およびAMVPモードのための2個の候補を含む。他の例では、マージモードおよび/またはAMVPモードのために異なる数の候補がMV候補リストに含まれ得る。マージ候補は、動き情報のセットを含み得る。たとえば、動き情報のセットは、参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含み得る。マージ候補がマージインデックスによって特定される場合、現在ブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、AMVPモードでは、リスト0またはリスト1のいずれかからの各々の可能性のある予測方向に対して、AMVP候補が動きベクトルのみを含んでいるので、MV候補リストに対するMVPインデックスとともに、参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルがさらに精緻化され得る。
【0075】
このように、マージ候補は、動き情報の完全なセットに対応するが、AMVP候補は、特定の予測方向および参照インデックスのための1つだけの動きベクトルを含む。両方のモードに対する候補は、同じ空間隣接ブロックおよび時間隣接ブロックから同様に導出される。
【0076】
いくつかの例では、マージモードは、インター予測されたPUが、空間的に隣接する動きデータ位置および2つの時間的に同一位置の動きデータ位置のうちの1つのグループから選択された動きデータ位置を含むインター予測されたPUから、1つまたは複数の同じ動きベクトル、予測方向、および1つまたは複数の参照ピクチャインデックスを継承することを可能にする。AMVPモードの場合、PUの1つまたは複数の動きベクトルは、エンコーダおよび/またはデコーダによって構築されたAMVP候補リストからの1つまたは複数の動きベクトル予測子(MVP)に対して予測的にコーディングされ得る。場合によっては、PUの単一方向インター予測では、エンコーダおよび/またはデコーダは、単一AMVP候補リストを生成することができる。場合によっては、PUの双方向予測では、エンコーダおよび/またはデコーダは、1つが前方予測方向からの空間および時間隣接PUの動きデータを使用し、1つが後方予測方向からの空間および時間隣接PUの動きデータを使用する、2つのAMVP候補を生成することができる。
【0077】
両方のモードのための候補は、空間および/または時間隣接ブロックから導出される。たとえば、
図2Aおよび
図2Bは、空間隣接候補を示す概念図を含む。
図2Aは、マージモードのための空間隣接動きベクトル(MV)候補を示す。
図2Bは、AMVPモードのための空間隣接動きベクトル(MV)候補を示す。空間MV候補は、特定のPU(PU0)に対して隣接ブロックから導出されるが、ブロックから候補を生成する方法は、マージモードとAMVPモードとで異なる。
【0078】
マージモードでは、エンコーダおよび/またはデコーダは、様々な動きデータ位置からのマージ候補を考慮することによって、マージ候補リストを形成することができる。たとえば、
図2Aに示されるように、最大で4つの空間MV候補が、
図2Aにおいて番号0~4とともに示される空間隣接動きデータ位置に関して導出され得る。MV候補は、番号0~4によって示される順序でマージ候補リストにおいて順序付けられ得る。たとえば、位置および順序は、左の位置(0)、上の位置(1)、右上の位置(2)、左下の位置(3)、および左上の位置(4)を含み得る。
【0079】
図2Bに示されるAVMPモードでは、隣接ブロックは2つのグループ、すなわちブロック0および1を含む左のグループと、ブロック2、3および4を含む上のグループに分割される。各グループに対して、シグナリングされる参照インデックスによって示されるものと同じ参照ピクチャを参照する隣接ブロックの中の可能な候補は、グループの最終候補を形成するために選ばれる際の優先順位が最高である。すべての隣接ブロックが、同じ参照ピクチャを指し示す動きベクトルを含まないことがあり得る。したがって、そのような候補を見出すことができない場合、第1の利用可能な候補が、最終候補を形成するようにスケーリングされるので、時間距離の差が補償され得る。
【0080】
図3Aおよび
図3Bは、時間動きベクトル予測を示す概念図を含む。時間動きベクトル予測子(TMVP)候補は、有効にされ利用可能である場合、空間動きベクトル候補の後にMV候補リストに追加される。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じである。しかしながら、いくつかの事例では、マージモードにおけるTMVP候補のための目標参照インデックスは、0に設定されてもよく、または隣接ブロックの目標参照インデックスから導出されてもよい。
【0081】
TMVP候補導出のための主要ブロックの場所は、空間隣接候補を生成するために使用される上のブロックおよび左のブロックへのバイアスを補償するために、ブロック「T」として
図3Aにおいて示されているような、同一位置PUの外側の右下ブロックである。しかしながら、そのブロックが現在CTB(またはLCU)行の外側に位置するか、または動き情報が利用可能ではない場合、ブロックはPUの中心ブロックと置換される。TMVP候補のための動きベクトルは、スライスレベルで示される、同一位置ピクチャの同一位置PUから導出される。AVCにおける時間的直接モードと同様に、TMVP候補の動きベクトルは動きベクトルスケーリングを受けることがあり、これは距離差分を補償するために実行される。
【0082】
動き予測の他の態様は、HEVC規格および/または他の規格、フォーマット、またはコーデックにおいてカバーされる。たとえば、マージモードおよびAMVPモードのいくつかの他の態様がカバーされる。他の態様は動きベクトルスケーリングを含む。動きベクトルスケーリングに関して、動きベクトルの値が提示時間におけるピクチャの距離に比例すると想定することができる。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含むピクチャ(すなわち、格納ピクチャ)とを関連付ける。他の動きベクトルを予測するためにある動きベクトルが利用されるとき、格納ピクチャと参照ピクチャの距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
【0083】
予測されるべき動きベクトルに対して、その関連する格納ピクチャと参照ピクチャの両方が異なることがある。したがって、(POCに基づく)新たな距離が計算される。そして、動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされる。空間隣接候補について、2つの動きベクトルのための格納ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルのスケーリングは、空間隣接候補および時間隣接候補のためのTMVPとAMVPの両方に適用される。
【0084】
動き予測の別の態様は、人工動きベクトル候補の生成を含む。たとえば、動きベクトル候補リストが完全ではない場合、人工動きベクトル候補が生成され、すべての候補が取得されるまでリストの末尾に挿入される。マージモードでは、2つのタイプの人工MV候補、すなわち、Bスライスに対してのみ導出される複合候補、および第1のタイプが十分な人工候補を提供しない場合にAMVPのためにのみ使用されるゼロ候補がある。すでに候補リストの中にあり必要な動き情報を有する候補の各ペアに対して、リスト0の中のピクチャを参照する第1の候補の動きベクトルとリスト1の中のピクチャを参照する第2の候補の動きベクトルとの組合せによって、双方向複合動きベクトル候補が導出される。
【0085】
いくつかの実装形態では、新しい候補をMV候補リストへと追加または挿入するとき、剪定プロセスが実行され得る。たとえば、いくつかの場合、異なるブロックからのMV候補が同じ情報を含むことが可能である。そのような場合、MV候補リストに複数のMV候補の重複する動き情報を記憶することは、冗長性およびMV候補リストの効率の低下につながり得る。いくつかの例では、剪定プロセスは、MV候補リストにおける冗長性をなくし、または最小にすることができる。たとえば、剪定プロセスは、MV候補リストに追加されることになる可能性のあるMV候補を、MV候補リストにすでに記憶されているMV候補と比較することを含み得る。1つの説明のための例では、記憶された動きベクトルの水平変位(Δx)および垂直変位(Δy)(現在ブロックの位置に対する参照ブロックの位置を示す)は、潜在候補の動きベクトルの水平変位(Δx)および垂直変位(Δy)と比較され得る。潜在候補の動きベクトルが1つまたは複数の記憶されている動きベクトルのいずれとも一致しないことを、比較が明らかにする場合、その潜在候補は、剪定されるべき候補として考慮されず、MV候補リストに追加され得る。この比較に基づいて一致が見出される場合、その潜在MV候補はMV候補リストに追加されず、同一候補の挿入を避ける。いくつかの場合、複雑さを下げるために、各潜在MV候補をすべての既存の候補と比較する代わりに、剪定プロセスの間に限られた数の比較のみが実行される。
【0086】
HEVCなどのいくつかのコーディング方式では、重み付け予測(Weighted Prediction: WP)がサポートされ、その場合、スケーリング係数(aにより表記される)、シフト数(sにより表記される)、およびオフセット(bにより表記される)が、動き補償において使用される。参照ピクチャの位置(x,y)におけるピクセル値がp(x,y)であるとすると、p(x, y)の代わりに、p'(x, y) = ((a*p(x, y) + (1 << (s-1))) >> s) + bが動き補償における予測値として使用される。
【0087】
WPが有効にされるとき、現在スライスの各参照ピクチャについて、参照ピクチャに対してWPが適用されるかどうかを示すためのフラグがシグナリングされる。WPが1つの参照ピクチャに対して適用される場合、WPパラメータのセット(すなわち、a、sおよびb)が、デコーダに送信され、参照ピクチャからの動き補償のために使用される。いくつかの例では、ルマ成分およびクロマ成分のためのWPを柔軟にオン/オフするために、WPフラグおよびWPパラメータは、ルマ成分およびクロマ成分に対して別々にシグナリングされる。WPでは、WPパラメータの1つの同じセットが、1つの参照ピクチャの中のすべてのピクセルのために使用される。
【0088】
図4Aは、現在ブロック402の再構築された隣接サンプルおよび単方向インター予測のために使用される参照ブロック404の隣接サンプルの例を示す図である。動きベクトルMVを現在ブロック402のためにコーディングすることができ、MVは、参照ピクチャリストに対する参照インデックスおよび/または参照ブロック404を特定するための他の動き情報を含むことができる。たとえば、MVは、現在ピクチャの中の座標位置から参照インデックスによって特定された参照ピクチャの中の座標へのオフセットを提供する、水平成分および垂直成分を含むことができる。
図4Bは、現在ブロック422の再構築された隣接サンプルならびに双方向インター予測のために使用される第1の参照ブロック424および第2の参照ブロック426の隣接サンプルの例を示す図である。この場合、第1の参照ブロック424および第2の参照ブロック426をそれぞれ特定するために、2つの動きベクトルMV0およびMV1が現在ブロック422のためにコーディングされ得る。
【0089】
バイラテラルマッチング(BM)は、2つの初期動きベクトルのペア(たとえば、第1の動きベクトルMV0および第2の動きベクトルMV1)を精緻化するために使用され得る技法である。たとえば、BMは、精緻化された動きベクトル(たとえば、精緻化された動きベクトルMV0'およびMV1')を導出するために、初期動きベクトルMV0およびMV1のペアの周りを探索することによって実行され得る。第1の動きベクトルMV0および第2の動きベクトルMV1をそれぞれ置き換えるために、精緻化された動きベクトルMV0'およびMV1'が続いて使用され得る。精緻化された動きベクトルは、ブロックマッチングコストを最小にする、探索において特定される動きベクトルとして探索において選択され得る。
【0090】
いくつかの例では、2つのMVのために生成される2つの動き補償された予測子の類似性に基づいて、ブロックマッチングコストが生成され得る。ブロックマッチングコストのための例示的な基準は、限定はされないが、絶対差分和(SAD)、絶対変換差分和(SATD)、二乗和誤差(SSE)などを含む。ブロックマッチングコスト基準はまた、現在MVペア(たとえば、精緻化された動きベクトルMV0'およびMV1'として選択するために考慮されているMVペア)と初期MVペア(たとえば、MV0およびMV1)との間のMV差分に基づいて導出される正則化項を含み得る。
【0091】
いくつかの例では、MV差分項MVD0およびMVD1に1つまたは複数の制約が適用され得る(たとえば、MVD0=MV0'-MV0かつMVD1=MV1'-MV1)。たとえば、いくつかの場合、MVD0とMVD1が、2つのMVによって指し示される現在ピクチャ(たとえば、現在ブロック)と参照ピクチャ(たとえば、参照ブロック)との間の時間距離(TD)に比例するという仮定に基づいて、制約が適用され得る。いくつかの例では、MVD0=-MVD1である(たとえば、MVD0とMVD1は大きさが等しいが符号が反対である)という仮定に基づいて、制約が適用され得る。
【0092】
いくつかの例では、インター予測されたCUは、1つまたは複数の動きパラメータと関連付けられ得る。たとえば、多用途ビデオコーディング規格(VVC)では、各々のインター予測されたCUは、限定はされないが、動きベクトル、参照ピクチャインデックス、および参照ピクチャリスト使用インデックスを含み得る、1つまたは複数の動きパラメータと関連付けられ得る。動きパラメータはさらに、インター予測されたサンプル生成のために使用されるべきVVCのコーディング機能に関連する追加の情報を含み得る。動きパラメータは、明示的にまたは暗黙的にシグナリングされ得る。たとえば、CUがスキップモードでコーディングされるとき、CUは、1つのPUと関連付けられ、有意な残差係数をもたず、コーディングされた動きベクトルデルタまたは参照ピクチャインデックスをもたない。
【0093】
いくつかの態様では、現在CUのための動きパラメータが空間候補および時間候補を含む隣接CUから取得されるような、マージモードが規定され得る。追加または代替として、1つまたは複数のマージモードが、VVC規格においてもたらされる追加のスケジュールに基づいて規定され得る。いくつかの例では、マージモードは、あらゆるインター予測されたCUに適用され得る(たとえば、マージモードはスキップモード以外にも適用され得る)。いくつかの例では、マージモードに対する代替は、1つまたは複数の動きパラメータの明示的な送信を含み得る。たとえば、動きベクトル、各参照ピクチャリストのための対応する参照ピクチャインデックス、参照ピクチャリスト使用フラグ、および他の関連する情報が、各CUのために明示的にシグナリングされ得る。
【0094】
HEVCにおけるインターコーディング機能だけでなく、VVCは、いくつかの新しい精緻化されたインター予測コーディング技法を含み、これらは、拡張マージ予測、動きベクトル差分を用いたマージモード(Merge mode with motion vector difference: MMVD)、対称MVD(Symmetric MVD: SMVD)シグナリング、アフィン動き補償された予測、サブブロックベース時間動きベクトル予測(Sub-block based temporal motion vector prediction: SbTMVP)、適応動きベクトル分解能(Adaptive motion vector resolution: AMVR)、動きフィールドストレージ: 16分の1ルマサンプルMVストレージおよび8x8動きフィールド圧縮、CUレベル重みを用いた双予測(Bi-prediction with CU-level weight: BCW)、双方向オプティカルフロー(BDOF)、デコーダ側動きベクトル精緻化(DMVR)、幾何学的区分モード(Geometric partitioning mode: GPM)、合成インターおよびイントラ予測(Combined inter and intra prediction: CIIP)を含む。
【0095】
VVCマージモード(たとえば、通常またはデフォルトのマージモードと呼ばれる)における拡張マージ予測のために、マージ候補リストは、空間隣接CUからの空間動きベクトル予測(MVP)、同一位置CUからの時間MVP、first-in-first-out (FIFO)テーブルからの履歴ベースのMVP、ペア毎平均MVP、およびゼロMVという5つのタイプの候補を順番に含めることによって構築され得る。マージ候補リストのサイズは、シーケンスパラメータセットヘッダにおいてシグナリングされ得る。マージ候補リストの最大の許容されるサイズは6(たとえば、6つのエントリまたは6つの候補)であり得る。マージモードにおいてコーディングされるCUごとに、最良のマージ候補のインデックスが、短縮された単項二値化(truncated unary: TU)を使用して符号化される。いくつかの例では、VVCはまた、あるサイズまたはエリア内のすべてのCUのためのマージ候補リストの並列導出をサポートすることができる(たとえば、HEVCにおいて行われるように)。5つの前述のタイプのマージ候補、ならびにマージ候補の各カテゴリの関連する例示的な導出プロセスが、次いで以下で説明される。
【0096】
図5は、本開示のいくつかの例による、ブロックを処理する際に使用するための空間マージ候補の場所または位置を示す。たとえば、
図5は、本開示のいくつかの例に従って処理ブロック500において使用するための、空間マージ候補(「空間近隣」とも呼ばれる)A0、A1、B0、B1、およびB2の例示的な位置を示す。空間近隣A0、A1、B0、B1,およびB2は、ブロック500との関係に基づいて
図5において示されている。VVCにおける空間マージ候補の導出はHEVCの場合と同じであってもよく、最初の2つのマージ候補の位置が入れ替えられる。いくつかの例では、4つのマージ候補のうちで最大のものが、
図5に示される位置に位置する5つの空間マージ候補(たとえば、A0、A1、B0、B1、およびB2)から選択され得る。
【0097】
導出の順序は、B0、A0、B1、A1およびB2であり得る。たとえば、マージ候補位置B2は、位置B0、A0、B1、A1に関連する1つまたは複数のCUが利用可能ではないとき、またはイントラコーディングされるときにのみ、考慮され得る。位置B0、A0、B1、またはA1に関連するCUは、CUが異なるスライスまたはタイルに属すので利用不可能であり得る。いくつかの態様では、位置A1におけるマージ候補が追加された後、残りのマージ候補の追加は冗長性チェックを受け得る。冗長性チェックは、同じ動き情報をもつマージ候補がマージ候補リストから除外されるように(たとえば、コーディング効率を改善するために)実行され得る。
【0098】
図6は、本開示のいくつかの例による、ブロックを処理する際に使用するための時間マージ候補のための動きベクトルスケーリング600の態様を示す。いくつかの例では、時間マージ候補の導出を実行することができ、1つのマージ候補(たとえば、時間マージ候補)がマージ候補リストに追加される。スケーリングされた動きベクトルに基づいて、時間マージ候補の導出が実行され得る。スケーリングされた動きベクトルは、同一位置参照ピクチャに含まれる同一位置CUに基づいて導出され得る。同一位置CUの導出に使用されるべき参照ピクチャリストは、スライスヘッダにおいて明示的にシグナリングされ得る。
【0099】
たとえば、
図6は現在ピクチャ610および同一位置ピクチャ630を示し、それらはそれぞれ、現在参照ピクチャ615および同一位置参照ピクチャ635と関連付けられ得る。
図6は、現在CU612(たとえば、現在ピクチャ610と関連付けられる)および同一位置CU(たとえば、同一位置ピクチャ630と関連付けられる)も示す。いくつかの例では、時間マージ候補の導出のためのスケーリングされた動きベクトルは、
図6に示されるように導出または取得され得る。たとえば、
図6は点線611を示し、これは、ピクチャ順序カウント(Picture Order Count: POC)距離tbおよびtdを使用して同一位置CU632の動きベクトルからスケーリングされる。いくつかの例では、tbは現在参照ピクチャ615と現在ピクチャ610とのPOC差分であり、tdは同一位置参照ピクチャ635と同一位置ピクチャ630とのPOC差分である。時間マージ候補の参照ピクチャインデックスは、0に等しくなるように設定され得る。
【0100】
図7は、本開示のいくつかの例による、ブロックを処理する際に使用するための時間マージ候補700の態様を示す。いくつかの例では、単一の時間マージ候補が
図6に関連して上で論じられたように選択された後、
図7に示されるように、候補位置C
0とC
1から、時間マージ候補の位置が選択され得る。いくつかの例では、位置C
0におけるCUが利用可能ではないか、イントラコーディングされているか、またはCTUの現在の行の外にある場合、候補位置C
1が使用され得る。それ以外の場合、時間マージ候補の導出において位置C
0が使用される。
【0101】
いくつかの態様では、履歴ベースの動きベクトル予測(HMVP)マージ候補が、空間MVPマージ候補(たとえば、
図5に関して上で説明されたような)およびTMVPマージ候補(たとえば、
図6および
図7に関して上で説明されたような)の後でマージ候補リストに追加され得る。HMVPマージ候補は、以前にコーディングされたブロックの動き情報に基づいて導出され得る。たとえば、以前にコーディングされたブロックの動き情報は、(たとえば、テーブルに)記憶されて現在CUのための動きベクトル予測(MVP)として使用され得る。いくつかの例では、複数のHMVP候補をもつテーブルが、符号化プロセスおよび/または復号プロセスの間に維持され得る。新しいCTU行に遭遇すると、テーブルがリセットされる(たとえば、空にされる)。非サブブロックインターコーディングされたCUがあるときはいつでも、関連する動き情報が新しいHMVP候補としてテーブルの最終エントリに追加される。
【0102】
いくつかの例では、HMVPテーブルサイズSは、6という値に設定され得る(たとえば、最大で6個の履歴ベースのMVP(HMVP)候補がHMVPテーブルに追加され得る)。新しいHMVP候補をHMVPテーブルに挿入するとき、制約されたfirst-in-first-out(FIFO)ルールが利用され得る。制約されたFIFOルールは、同一のHMVPがテーブルの中にあるかどうかを決定するために(たとえば、新しく挿入されるHMVP候補がテーブルの中の既存のHMVP候補と同じであると決定するために)適用される冗長性チェックを含み得る。同一のHMVPがテーブルにすでに含まれていることを、新しく挿入されたHMVP候補のための冗長性チェックが発見する場合、同一のHMVPをテーブルから除去することができ、それより後のすべてのHMVP候補が前方に移動される。
【0103】
いくつかの態様では、HMVP候補(たとえば、HMVPリストまたはHMVPテーブルに含まれる)は続いて、マージ候補リストを構築するために、または別様に生成するために使用され得る。たとえば、マージ候補リストを生成するために、テーブルの中の最新のいくつかのHMVP候補が、順番に確認され、TMVP候補の後でマージ候補リストに挿入され得る。マージ候補リストに追加されるHMVP候補に、冗長性チェックを適用することができ、冗長性チェックは、マージ候補リストに以前に追加された、またはすでに含まれている、空間マージ候補または時間マージ候補のいずれかとHMVP候補が同じまたは同一であるかどうかを決定するために使用される。
【0104】
いくつかの例では、マージ候補リストおよび/またはHMVPテーブルを生成することに関連して実行される冗長性チェック動作の数を減らすことができる。たとえば、マージリスト生成のために使用されるHMVP候補の数を、(N <= 4) ? M: (8 - N)として設定することができ、Nはマージ候補リストの中の既存の候補の数を示し、MはHMVPテーブルの中の利用可能なHMVP候補の数を示す。言い換えると、条件N <= 4が真であると評価される(たとえば、マージ候補リストが4個以下の候補を含む)場合、HMVPテーブルの中のすべてのM個のHMVP候補がマージリスト生成のために使用される。条件N <= 4が偽であると評価される(たとえば、マージ候補リストが4個よりも多くの候補を含む)場合、HMVPテーブルの中の8-N個のHMVP候補がマージリスト生成のために使用される。いくつかの例では、利用可能なマージ候補の総数が、マージ候補の最大の許容される数から1を引いたものに達すると、HMVPからのマージ候補リスト構築プロセスを終了することができる。
【0105】
既存のマージ候補リストにおけるマージ候補のあらかじめ定められたペアに基づいて、ペア毎の平均マージ候補の導出が実行され得る。たとえば、既存のマージ候補リストの中のマージ候補のあらかじめ定められたペアを平均することによって、ペア毎平均マージ候補を生成することができ、あらかじめ定められたペアは{(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}として与えられ、これらの数字はマージ候補リストに対するマージインデックスを表す。いくつかの場合、平均された動きベクトルは、各参照リストのために別々に計算され得る。(たとえば、あらかじめ定められたペアの)両方の動きベクトルが同じリストに含まれる場合、これらの2つの動きベクトルは、2つの動きベクトルが異なる参照ピクチャを指し示すときでも平均され得る。いくつかの場合、(たとえば、あらかじめ定められたペアの)1つだけの動きベクトルが利用可能である場合、平均された動きベクトルとして1つの利用可能な動きベクトルが使用され得る。(たとえば、あらかじめ定められたペアの)動きベクトルが利用可能ではない場合、リストは無効であるものとして特定され得る。いくつかの例では、上で説明されたように、ペア毎平均マージ候補が追加された後で、マージ候補リストが埋まっていない場合、マージ候補の最大の数に達するまで、マージ候補リストの最後に1つまたは複数のゼロMVPが挿入され得る。
【0106】
いくつかの態様では、CUレベル重みを用いた双予測(bi-prediction with CU-level weight: BCW)が利用され得る。たとえば、2つの異なる参照ピクチャから取得された2つの予測信号を平均することによって、双予測信号が生成され得る。追加または代替として、双予測信号が、2つの異なる動きベクトルを使用して生成され得る。いくつかの例では、双予測信号は、HEVC規格を使用して、2つの異なる参照信号から取得された2つの予測信号を平均することによって、および/または2つの異なる動きベクトルを使用することによって、生成され得る。
【0107】
他の態様では、双予測モードは、2つの予測信号の加重平均を含むように、単純平均から拡張され得る。たとえば、双予測モードは、VVC規格を使用した2つの予測信号の加重平均を含み得る。いくつかの例では、双予測モードは、次のように2つの予測信号の加重平均を含み得る。
Pbi-pred = ((8-w)*P0+w*P1+4)≫3 式(1)
【0108】
式(1)において与えられる加重平均双予測は、5つの重みw∈{-2,3,4,5,10}を含み得る。各々の双予測されたCUに対して、重みwは、以下の1つまたは複数に従って決定され得る。一例では、非マージCUに対して、動きベクトル差分(MVD)の後で重みインデックスがシグナリングされ得る。別の例では、マージCUに対して、重みインデックスは、マージ候補インデックスに基づいて、隣接ブロックから推測され得る。いくつかの場合、BCWは、256個以上のルマサンプルを伴うCU(たとえば、CUの幅とCUの高さの積が256以上であるCU)だけに適用され得る。いくつかの場合、重みwのすべての5個が、低遅延ピクチャのために使用され得る。非低遅延ピクチャに対して、5つの重みwのうちの3つだけが使用され得る(たとえば、3つの重みw∈{3,4,5})。
【0109】
エンコーダ側において、以下でより深く説明されるように、エンコーダの複雑さを大きく増すことなく重みインデックスを見つけるために、高速探索アルゴリズムが適用され得る。いくつかの例では、少なくとも一部JVET-L0646において説明されるように、重みインデックスを見つけるために、高速探索アルゴリズムが適用され得る。たとえば、適応動きベクトル分解能(AMVR)と組み合わせられるとき、現在ピクチャが低遅延ピクチャである場合、等しくない重みが、1ペルおよび4ペル動きベクトル精度に対して、条件的に確認されるだけである。アフィンモードと組み合わせられるとき、アフィンモードが現在の最良モードとして選択される場合にのみ、アフィン動き推定(ME)が等しくない重みのために実行され得る。双予測モードにおける2つの参照ピクチャが同じであるとき、等しくない重みが条件的に確認されるだけであり得る。いくつかの場合、ある条件が満たされるとき(たとえば、現在ピクチャとその参照ピクチャとの間のピクチャ順序カウント(POC)距離、コーディング量子化パラメータ(QP)、および/または時間レベルなどに応じて)、等しくない重みは探索されない。
【0110】
いくつかの例では、BCW重みインデックスは、1つまたは複数のバイパスコーディングされたビンが後に続く1つのコンテキストコーディングされたビンを使用してコーディングされ得る。たとえば、等しい重みが使用されるかどうかを示すために、第1のコンテキストコーディングされたビンが使用され得る。等しくない重みが使用される場合、どの等しくない重みが使用されるかを示すために、バイパスコーディングを使用して追加のビンがシグナリングされ得る。
【0111】
重み付け予測(WP)は、フェージングを用いてビデオコンテンツを効率的にコーディングするために、H.264/AVCおよびHEVC規格によってサポートされるコーディングツールである。WPに対するサポートも、VVC規格に追加された。参照ピクチャリストL0およびL1の各々の中の各参照ピクチャのために1つまたは複数の重み付けパラメータ(たとえば、重みおよびオフセット)がシグナリングされることを可能にするために、WPが使用され得る。続いて、動き補償の間に、対応する参照ピクチャの重みおよびオフセットが適用される。
【0112】
WPおよびBCWは、異なるタイプのビデオコンテンツとともに利用され得る。いくつかの例では、CUがWPを利用する場合、BCW重みインデックスはシグナリングされなくてもよく、wは4という値を有するように推測され得る(たとえば、等しい重みが適用される)。たとえば、WPとBCWの相互作用(たとえば、これはVVCデコーダの設計を複雑にし得る)を避けるために、CUがWPを利用するとき、BCW重みインデックスはシグナリングされなくてもよい。
【0113】
マージCUのために、マージ候補インデックスに基づいて、通常マージモードと継承アフィンマージモードの両方において、重みインデックスが隣接ブロックから推測され得る。構築されたアフィンマージモードでは、アフィン動き情報は、最大で3つのブロックの動き情報に基づいて構築され得る。たとえば、構築されたアフィンマージモードを使用したCUのためのBCWインデックスは、第1の制御点MVのBCWインデックスに等しく設定され得る。いくつかの例では、VVC規格を使用して、合成インターおよびイントラ予測(CIIP)ならびにCUレベル重みを用いた双予測(BCW)を、CUに対して一緒に適用することができない。CUがCIIPモードを用いてコーディングされるとき、現在CUのBCWインデックスは、2という値に設定され得る(たとえば、等しい重みに設定され得る)。
【0114】
図8は、本開示のいくつかの例による、バイラテラルマッチングの態様を示す
図800である。前に言及されたように、バイラテラルマッチング(BM)が、2つの初期動きベクトルMV0およびMV1のペアを精緻化するために使用され得る。たとえば、BMは、ブロックマッチングコストを最小にする精緻化された動きベクトルMV0'およびMV1'をそれぞれ導出するために、MV0およびMV1の周りを探索することによって、実行され得る。ブロックマッチングコストは、初期動きベクトルのペア(たとえば、MV0およびMV1)を使用して生成される2つの動き補償された予測子の類似度に基づいて計算され得る。たとえば、ブロックマッチングコストは、絶対差分和(SAD)に基づき得る。追加または代替として、ブロックマッチングコストは、現在MVペア(たとえば、現在試験されるMV0'およびMV1')と初期MVペア(たとえば、MV0およびMV1)との間の動きベクトル差分(MVD)に基づく正則化項に基づいてもよく、またはそれを含んでもよい。以下でより深く説明されるように、1つまたは複数の制約が、MVD0(たとえば、MVD0=MV0'-MV0)およびMVD1(たとえば、MVD1=MV1'-MV1)に基づいて適用され得る。
【0115】
前に言及されたように、多用途ビデオコーディング規格(VVC)では、バイラテラルマッチングベースのデコーダ側動きベクトル精緻化(DMVR)が、双予測マージ候補のMVの正確さを高める(たとえば、精緻化する)ために適用され得る。たとえば、
図8の例に示されるように、バイラテラルマッチングベースのDMVRは、双予測マージ候補812のMVの正確さを高めるために、または別様に精緻化するために適用され得る。双予測マージ候補812は、現在ピクチャ810に含まれてもよく、動きベクトルMV0およびMV1の初期ペアと関連付けられてもよい。バイラテラルマッチングベースのDMVRを実行する前に、初期動きベクトルMV0およびMV1が、双予測マージ候補812のために取得され、特定され、または別様に決定され得る。続いて、以下でより深く説明されるように、初期動きベクトルMV0およびMV1が、双予測マージ候補812のための精緻化された動きベクトルMV0'およびMV1'を特定するために使用され得る。
【0116】
図8の例に示されるように、第1の初期動きベクトルMV0は、第1の参照ピクチャ830を指し示すことができる。第1の参照ピクチャ830は、(たとえば、現在ピクチャ810に対して)後ろの方向と関連付けられてもよく、および/または参照ピクチャリストL0に含まれてもよい。第2の初期動きベクトルMV1は、第2の参照ピクチャ820を指し示すことができる。第2の参照ピクチャ820は、(たとえば、現在ピクチャ810に対して)前の方向と関連付けられてもよく、および/または参照ピクチャリストL1に含まれてもよい。
【0117】
第1の初期動きベクトルMV0は、第1の予測子832を決定または生成するために使用されてもよく、第1の予測子832は第1の参照ピクチャ830に含まれるブロックであり得る。第1の予測子832は、第1の候補ブロックとも呼ばれ得る(たとえば、第1の予測子832は第1の参照ピクチャ830および/または参照ピクチャリストL0の中の候補ブロックである)。第2の初期動きベクトルMV1は、第2の予測子822を決定または生成するために使用されてもよく、第2の予測子822は第2の参照ピクチャ820に含まれるブロックであり得る。第2の予測子822は、第2の候補ブロックとも呼ばれ得る(たとえば、第2の予測子822は第2の参照ピクチャ820および/または参照ピクチャリストL1の中の候補ブロックである)。
【0118】
続いて、それぞれ、第1の精緻化された動きベクトルMV0'および第2の精緻化された動きベクトルMV1'を特定または決定するために、第1の予測子832および第2の予測子822の周りで探索が実行され得る。示されるように、第1の予測子832の各々に関連する周辺エリア(たとえば、第1の参照ピクチャ830および/または参照ピクチャリストL0内のエリア)と第2の予測子822に関連する周辺エリア(たとえば、参照ピクチャ820および/または参照ピクチャリストL1内のエリア)が探索され得る。たとえば、第1の予測子832に関連する周辺エリアは、1つまたは複数の精緻化された候補ブロック834を特定または精査するために探索されてもよく、第2の予測子822に関連する周辺エリアは、1つまたは複数の精緻化された候補ブロック824を特定または精査するために探索されてもよい。探索は、初期予測子832または822の1つと、対応する精緻化された候補ブロック834または824との間で計算される歪み(たとえば、SAD、SATD、SSEなど)および/または正則化項の1つまたは複数に基づいて実行され得る。いくつかの例では、初期の点から移動した距離(たとえば、それぞれ、初期予測子832または822に関連する初期の点と、精緻化された候補ブロック834または824に関連する探索された点との間の距離)に基づいて、歪みおよび/または正則化が計算され得る。
【0119】
探索が初期予測子832および822の各々に関連する初期の点の周りで移動するにつれて、新しい精緻化された候補ブロック(たとえば、精緻化された候補ブロック834および824)が取得される。各々の新しい精緻化された候補ブロックは、新しいコスト(たとえば、計算されたSAD値、動きベクトル差分MVD0またはMVD1の1つなど)と関連付けられ得る。探索は、探索範囲および/または探索区間と関連付けられ得る。初期予測子832と822のための探索範囲および/または探索窓に含まれる各候補ブロックを探索した(たとえば、および各々の探索された候補ブロックのための対応するコストを決定した)後、決定されたコストが最低である候補ブロックが特定され、精緻化された動きベクトルMV0'およびMV1'を生成するために使用され得る。
【0120】
いくつかの例では、バイラテラルマッチング(BM)ベースのDMVRが、参照ピクチャリストL0およびリストL1の中の2つの候補ブロック間でSADを計算することによって実行され得る。
図8に示されるように、初期MVの周りの(たとえば、それぞれ予測子832および822の周りの)各MV'候補(たとえば、ブロック834および824)に基づくブロック間のSADが計算され得る。SADが最小のMV'候補が、精緻化されたMVとして選択され、双予測された信号を生成するために使用され得る。いくつかの例では、初期MVのSADは、SAD値の1/4を差し引かれて正則化項となる。いくつかの場合、2つの参照ピクチャから現在ピクチャまでの時間距離(たとえば、ピクチャ順序カウント(POC)差分)は同じであってもよく、MVD0およびMVD1は、大きさが同じであるが符号が反対であり得る(たとえば、MVD0=-MVD1)。
【0121】
いくつかの場合、バイラテラルマッチングベースのDMVRは、初期MVからの2つの整数ルマサンプルの精緻化探索範囲を使用して実行され得る。たとえば、
図8の文脈では、バイラテラルマッチングベースのDMVRは、初期動きベクトルMV0およびMV1からの(たとえば、それぞれ初期予測子832および822からの)2つの整数ルマサンプルの精緻化探索範囲を使用して実行され得る。この探索は、整数サンプルオフセット探索段階および小数サンプル精緻化段階を含み得る。
【0122】
いくつかの場合、整数サンプルオフセット探索のために、25点の完全探索が適用され得る。25点の完全精緻化探索は、初期MVペア(たとえば、MV0およびMV1の初期MVペアならびに/または初期予測子832および822)のSADを最初に計算することによって実行され得る。初期MVペアのSADが閾値よりも小さい場合、DMVRの整数サンプル段階は終了され得る。初期MVペアのSADが閾値よりも小さくない場合、残りの24点のSADは、ラスター走査順序で計算され確認され得る。次いで、SADが最小の点が、整数サンプルオフセット探索段階の出力として選択され得る。
【0123】
上で言及されたように、整数サンプルオフセット探索の後に、小数サンプル精緻化が続き得る。いくつかの場合、1つまたは複数のパラメトリック誤差曲面方程式を使用して小数サンプル精緻化を導出することによって(たとえば、SAD比較を用いて追加の探索を実行するのではなく)、計算の複雑さを下げることができる。小数サンプル精緻化は、整数サンプルオフセット探索段階の出力に基づいて条件的に呼び出され得る。たとえば、整数サンプルオフセット探索段階が、第1の反復探索または第2の反復探索のいずれかにおいて、中心が最小のSADを有する状態で終了すると、それに応答して非整数サンプル精緻化がさらに適用され得る。
【0124】
上で言及されたように、パラメトリック誤差曲面が、小数サンプル精緻化を導出するために使用され得る。たとえば、パラメトリック誤差曲面ベースのサブピクセルオフセット推定では、中心位置コスト、および(たとえば、中心に対して)4個の隣接位置におけるコストが、以下の形式の2D放物線誤差曲面方程式をフィッティングするために使用され得る。
E(x,y) = A(x - xmin)2 + B(y - ymin)2 + C 式(2)
【0125】
ここで、(xmin,ymin)はコストが最小の小数位置に相当し、Cは最小コスト値に相当する。5つの探索点(たとえば、中心位置および4つの隣接位置)のコスト値を使用して式(2)を解くことによって、(xmin, ymin)は次のように計算され得る。
xmin = (E(-1,0) - E(1,0))/(2(E(-1,0) + E(1,0) - 2E(0,0))) 式(3)
ymin = (E(0,-1) - E(0,1))/(2((E(0,-1) + E(0,1) - 2E(0,0))) 式(4)
【0126】
xminおよびyminの値は、-8と8の間となるように自動的に制約されてもよく(たとえば、すべてのコスト値が正であり、最小値はE(0,0)である)、これらはVVCにおける16分の1ペルMV精度では半ペルオフセットに相当し得る。計算された小数(xmin,ymin)の値は、サブピクセル精度精緻化デルタMVを取得または決定するために、整数距離精緻化MV(たとえば、上で説明された整数サンプルオフセット探索からの)に加算され得る。
【0127】
VVCでは、動きベクトル分解能は1/16ルマサンプルであり得る。いくつかの例では、小数位置におけるサンプルは、8タップ補間フィルタを使用して補間される。DMVRでは、精緻化探索点は、整数サンプルオフセットとともに初期小数ペルMVを囲んでもよく、DMVR探索プロセスは、小数位置のサンプルを補間することを含み得る。いくつかの例では、双線形補間フィルタは、DMVR探索プロセスのための小数サンプルを生成するために使用され得る。DMVR探索プロセスのための小数サンプルを生成するための双線形補間フィルタの使用は、計算の複雑さを下げることができる。場合によっては、双線形補間フィルタが2サンプルの探索範囲とともに利用されるとき、DMVR探索プロセスは、(たとえば、既存の動き補償プロセスと比べて)追加の参照サンプルにアクセスする必要はないことがある。
【0128】
精緻化されたMVがDMVR探索プロセスを使用して決定された後、最後の予測を生成するために、8タップ補間フィルタが適用され得る。いくつかの例では、(たとえば、上で説明されたように)元のMVに基づいて補間プロセスを実行するために、追加の参照サンプルは必要とされないことがある。いくつかの例では、精緻化されたMVに基づいて補間を実行するために、追加のサンプルが利用され得る。追加の参照サンプルにアクセスする(たとえば、既存の動き補償プロセスと比較して追加の参照サンプルにアクセスする)のではなく、既存のまたは利用可能な参照サンプルが、精緻化されたMVに基づく補間を実行するための追加の参照サンプルを生成するためにパディングされ得る。いくつかの場合、CUの幅および/または高さが16ルマサンプルよりも大きいとき、以下でより深く説明されるように、DMVRプロセスはさらに、16ルマサンプルに等しい幅および/または高さを各々有するサブブロックへとCUを分割することを含み得る。
【0129】
VVCでは、DMVRは、以下のモードまたは特徴の1つまたは複数を用いてコーディングされるCUに対して適用され得る。1つの説明のための例では、DMVRが適用され得るCUに関連するモードまたは特徴も、「DMVR条件」と呼ばれることがある。いくつかの例では、DMVR条件は、限定はされないが、以下のモードおよび/または特徴、すなわち、双予測MVを伴うCUレベルマージモード、(たとえば、現在のピクチャに対して)過去にある1つの参照ピクチャおよび(たとえば、現在のピクチャに対して)未来にある別の参照ピクチャ、2つの参照ピクチャから現在ピクチャまでの距離(たとえば、POC距離)が同じである、両方の参照ピクチャが短期参照ピクチャである、64個よりも多くのルマサンプルを含むCU、CUの高さとCUの幅の両方が8ルマサンプル以上である、BCW重みインデックスが等しい重みを示す、重み付け予測(WP)が現在ブロックに対して有効にされない、合成インターおよびイントラ予測(CIIP)モードが現在ブロックのために利用されない、などのうちの1つまたは複数を用いてコーディングされるCUを含み得る。
【0130】
図9は、本開示のいくつかの例による、双方向オプティカルフロー(BDOF)を実行するために利用され得る例示的な拡張CU領域900を示す。たとえば、BDOFは、4×4サブブロックレベル(たとえば、4×4サブブロック910)でCUの中のルマサンプルの双予測信号を精緻化するために使用され得る。いくつかの場合、BDOFは、他のサイズのサブブロック(たとえば、8×8サブブロック、4×8サブブロック、8×4サブブロック、16×16サブブロック、および/または他のサイズのサブブロック)のために使用され得る。BDOFモードは、オブジェクトの動きが滑らかであることを想定するオプティカルフローに基づき得る。
図9に示されるように、BDOFモードは、拡張CU領域900の境界の周りの1つの拡張された行および列(たとえば、拡張された行970および拡張された列980)を利用することができる。
【0131】
各4×4サブブロック(たとえば、4×4サブブロック910)に対して、L0予測サンプルとL1予測サンプルとの差分を最小にすることに基づいて、動き精緻化(vx,vy)が計算され得る。動き精緻化(vx,vy)は、次いで、4×4サブブロック(たとえば、4×4サブブロック910)の中で双予測されるサンプル値を調整するために使用され得る。1つの説明のための例では、BDOFは以下で説明されるように実行され得る。
【0132】
最初に、2つの予測信号の水平勾配および垂直勾配
【0133】
【0134】
および
【0135】
【0136】
(k=0,1)がそれぞれ、2つの隣接サンプル間の差分を直接計算することによって計算され得る。
【0137】
【0138】
ここでI(k)(i,j)はリストkの中の予測信号の座標(i,j)におけるサンプル値を表し、k=0,1である。shift1は6に等しく設定され得るので、shift1はルマビット深度(たとえば、bitDepth)に基づいて計算され得る。
【0139】
続いて、勾配の自己相関および相互相関S1、S2、S3、S5、およびS6が次のように計算され得る。
S1=Σ(i,j)∈Ω│ψx (i,j)│ 式(7)
S2=Σ(i,j)∈Ωψx (i,j)・sign(ψy (i,j)) 式(8)
S3=Σ(i,j)∈Ωθ(i,j)・(-sign(ψx (i,j))) 式(9)
S5=Σ(i,j)∈Ω│ψy (i,j)│ 式(10)
S6=Σ(i,j)∈Ωθ(i,j)・(-sign(ψy (i,j))) 式(11)
【0140】
ここで、
【0141】
【0142】
θ(i,j)=(I(0) (i,j)≫shift2)-(I(1) (i,j)≫shift2) 式(14)である。
【0143】
ここで、Ωは4×4サブブロック910(または他のサイズのサブブロック)の周りの6×6ウィンドウ(または他のサイズのウィンドウ)であり得る。shift2の値は4(または他の適切な値)に等しく設定されてもよく、shift3の値は1(または他の適切な値)に等しく設定されてもよい。
【0144】
動き精緻化(vx,vy)が次いで、以下を使用して、相互相関と自己相関の項を使用して導出され得る。
【0145】
【0146】
ここで、th'BIO = 1 << 4であり、
【0147】
【0148】
は床関数である。
【0149】
動き精緻化および勾配に基づいて、4×4サブブロック910(または他のサイズのサブブロック)の中の各サンプルに対して以下の調整が計算され得る。
【0150】
【0151】
最後に、次のように双予測サンプルを調整することによって、
図9に示される拡張CU領域900のBDOFサンプルが計算され得る。
pred
BDOF(x,y)=(I
(0) (x,y)+I
(1) (x,y)+b(x,y)+ο
offset)≫shift5 式(18)
【0152】
ここで、shift5はMax(3,15 - BitDepth)に等しく設定されてもよく、変数οoffsetは(1 << (shift5 - 1))に等しく設定されてもよい。
【0153】
いくつかの場合、上の値は、(たとえば、上で説明された)BDOFプロセスにおける乗数が15ビットを超えず、(たとえば、上で説明された)BDOFプロセスにおける中間パラメータの最大ビット幅が32ビット以内に保たれるように選択され得る。
【0154】
いくつかの例では、勾配値は、(k=0,1)であるリストkの中の1つまたは複数の予測サンプルI
(k)(i,j)を生成したことに少なくとも一部基づいて導出されてもよく、1つまたは複数の予測サンプルは現在CUの境界の外側にある。
図9に示され上で述べられたように、BDOFは、拡張CU領域900の境界の周りの1つの拡張された行および1つの拡張された列(たとえば、拡張された行970および拡張された列980)を利用することができる。いくつかの場合、境界外予測サンプルを生成することの計算の複雑さは、補間なしで近くの整数位置における参照サンプルを直接用いることによって、拡張されたエリアの中の予測サンプル(たとえば、拡張されたCU領域900の外周に沿って、拡張された行970および拡張された列980に含まれる影付きではないブロック)を生成したことに少なくとも一部基づいて、制御され得る。たとえば、floor()演算が、近くの参照サンプルにおける参照サンプルの座標に対して使用され得る。続いて、拡張されたCU領域900の影付きのボックス(たとえば、拡張された行970および拡張された列980の拡張されたエリア予測サンプルの影付きではない外周より内部のボックス)内で予測サンプルを生成するために、8タップの動き補償補間フィルタが使用され得る。いくつかの例では、拡張されたサンプル値は、勾配計算だけにおいて使用され得る。BDOFプロセスの残りのステップは、必要に応じて、拡張されたCU領域900の境界の外側のあらゆるサンプルおよび勾配値を、それらの最も近い近隣に基づいてパディング(たとえば、反復)することによって、実行され得る。
【0155】
いくつかの例では、BDOFは、上で言及されたように、4×4サブブロックレベル(または他のサブブロックレベル)でCUの双予測信号を精緻化するために使用され得る。1つの説明のための例では、以下の条件、すなわち、CUが「真」の双予測モードを使用してコーディングされる(たとえば、2つの参照ピクチャの一方が表示順序において現在ピクチャの前に位置し、他方の参照ピクチャが表示順序において現在ピクチャの後に位置する)、CUがアフィンモードもしくはSbTMVPマージモードを使用してコーディングされない、CUが64ルマサンプルよりも多くを有する、CUの高さとCUの幅の両方が8ルマサンプル以上である、BCW重みインデックスが等しい重みを示す、WPが現在CUに対して有効ではない、および/またはCIIPモードが現在CUのために使用されない、などの一部またはすべてをCUが満たす場合、BDOFがCUに適用され得る。
【0156】
いくつかの態様では、マルチパスデコーダ側動き精緻化が使用され得る。たとえば、JVET-V会合において、VVCを超える圧縮技法を研究するために、増強圧縮モデル(ECM)が確立された(https://vcgit.hhi.fraunhofer.de/ecm/VVCSoftware_VTM/-/tree/ECM)。ECMでは、「マルチパスデコーダ側動き精緻化」[JVET U0100]が、VVCにおけるDMVRを置き換えるために採用される。マルチパスデコーダ側動き精緻化は、複数のパスを含み得る。いくつかの例では、マルチパスデコーダ側動き精緻化は、バイラテラルマッチング(BM)を複数回適用することによって実行され得る。たとえば、(たとえば、マルチパスデコーダ側動き精緻化の)各パスにおいて、BMが異なるブロックサイズに適用され得る。
【0157】
第1のパスにおいて、バイラテラルマッチング(BM)が、コーディングブロックまたはコーディングユニット全体に(たとえば、VVCにおけるDMVRのそれらと同様に、および/または上で説明されたように)適用され得る。たとえば、第1のパスのBMは、64×64、64×32、32×32、32×16、16×16などのサイズを用いて、およびこれらの組合せで、コーディングブロックまたはCUに適用され得る。
【0158】
第2のパスにおいて、今回は、第1のパスにおいてBMが実行された全体のコーディングブロック内に含まれる(またはそれから生成され得る)各16×16サブブロックに対して、再びBMを適用することができる。たとえば、第1のパスのBMが64×64ブロックに適用された場合、64×64ブロックは、各サブブロックが16×16であるサブブロックの4×4グリッドへと分割され得る。第2のパスにおいて、上の例では、16個のサブブロックの各々にBMが適用され得る。別の例では、第1のパスのBMが32×32ブロックに適用された場合、32×32ブロックは、サイズが各々16×16であるサブブロックの2×2グリッドへと分割され得る。この例では、第2のパスは、32×32ブロックの4つの16×16サブブロックの各々にBMを適用することによって実行され得る。第1のパスのBMから生成または取得される精緻化されたMVは、第2のパスのBMが実行される各16×16サブブロックのための初期MVとして利用され得る。
【0159】
第3のパスにおいて、複数の8×8サブブロックは、(たとえば、第1のBMパスからの)元のブロックに基づくか、および/または(たとえば、第2のBMパスからの)16×16サブブロックに基づくかのいずれかで、取得または生成され得る。いくつかの例では、第2のBMパスからの各16×16サブブロックは、サイズが8×8のサブブロックの2×2グリッドへと分割され得る。第3のBMパスにおいて、各8×8サブブロックに関連する1つまたは複数のMVはさらに、双方向オプティカルフロー(BDOF)を適用することによって精緻化され得る。
【0160】
1つの説明のための例では、マルチパスデコーダ側動き精緻化が、64×64ブロックまたはCUのために実行され得る。第1のパスにおいて、精緻化されたMVのペアを生成または取得するために、BMが64×64ブロックのために適用され得る。第2のパスにおいて、64×64ブロックを16個のサブブロックへと分割することができ、各サブブロックはサイズが16×16である。第2のパスにおいて、今回は、初期MVとして第1のパスからの精緻化されたMVを使用して、16個のサブブロックの各々に、BMを再び適用することができる。第3のパスにおいて、各16×16サブブロックを、8×8のサイズの4つのサブブロックへと分割することができる(たとえば、元の64×64ブロックに対して、合計で16*4=64個の8×8サブブロック)。第3のパスにおいて、前に説明されたように、各8×8サブブロックに関連する1つまたは複数のMVは、BDOFを適用することによって精緻化され得る。
【0161】
マルチパスデコーダ側動き精緻化を実行するために含まれ得る、またはそのために利用され得る第1のパス、第2のパス、および第3のパスの例が、以下で説明される。
【0162】
いくつかの例では、第1のパスは、ブロックベースのバイラテラルマッチング(BM)動きベクトル(MV)精緻化を実行することを含み得る。たとえば、第1のパスにおいて、精緻化されたMVは、BMをコーディングブロックに適用することによって導出される。デコーダ側動きベクトル精緻化(DMVR)と同様に、BMに関連する双予測動作において、精緻化されたMVが、参照ピクチャリストL0およびL1の中の2つの初期MV(たとえば、MV0およびMV1)の周りで探索される。精緻化されたMV(たとえば、MV0pass1およびMV1pass1)は、L0およびL1の中の2つの参照ブロック間の最低のバイラテラルマッチングコストに基づいて、初期MVのペア(たとえば、それぞれMV0およびMV1)の周りで導出される。
【0163】
第1のパスのBMは、整数サンプル精度intDeltaMVを導出するためにローカル探索を実行することを含み得る。ローカル探索は、3×3方形探索パターン(または他の探索パターン)を、水平方向に探索範囲[-sHor, sHor]に繰り返し、かつ垂直方向に探索範囲[-sVer, sVer]に繰り返し適用することによって実行され得る。sHorおよびsVerの値は、ブロックの次元によって決定され得る。いくつかの場合、sHorおよび/またはsVerの最大値は8(または他の適切な値)であり得る。
【0164】
バイラテラルマッチングコストは次のように計算され得る。
bilCost = mvDistanceCost + sadCost 式(19)
【0165】
ブロックサイズcbW*cbHが64(または他のブロックサイズ閾値)よりも大きいとき、平均除去絶対差分和(mean-removed sum of absolute difference: MRSAD)コスト関数が、参照ブロック間の歪みのDC影響を取り除くために適用され得る。3×3探索パターン(または他の探索パターン)の中心点におけるbilCostが最低コストを有するとき、intDeltaMVローカル探索は終了する。それ以外の場合、現在の最小コスト探索点が3×3探索パターン(または他の探索パターン)の新しい中心点になり、ローカル探索が続けられ、探索範囲の終わり(たとえば、水平方向における[-sHor, sHor]および垂直方向における[-sVer, sVer])に達するまで最小コストを探索する。
【0166】
いくつかの場合、最終的なdeltaMVを導出するために、既存の小数サンプル精緻化がさらに適用され得る。次いで、第1のパスの後の精緻化されたMVが、
MV0pass1 = MV0 + deltaMV 式(20)
MV1pass1 = MV1 - deltaMV 式(21)として導出され得る。
【0167】
いくつかの例では、第2のパスは、サブブロックベースのバイラテラルマッチング(BM)動きベクトル(MV)精緻化を実行することを含み得る。たとえば、第2のパスにおいて、精緻化されたMVは、16×16(または他のサイズ)のグリッドサブブロックにBMを適用することによって導出され得る。各サブブロックに対して、精緻化されたMVは、参照ピクチャリストL0およびL1の中の、第1のパスで取得された2つのMV(たとえば、MV0pass1およびMV1pass1)の周りで探索される。
【0168】
探索に基づいて、2つの精緻化されたMVである、MV0pass2(sbIdx2)およびMV1pass2(sbIdx2)は、L0およびL1の中の2つの参照サブブロック間の最低バイラテラルマッチングコストに基づいて導出され得る。ここで、sbIdx2=0,...,N-1は、サブブロックのインデックスである(たとえば、第2のパスのBMが、第1のパスのBMにおいて使用される元のブロックから生成される各サブブロックに適用され得るので)。たとえば、前に説明されたように、16×16の次元を各々有する合計で16個のサブブロックが、サイズが64×64である入力ブロックのために生成または取得され得る。この例では、sbIdx2は、16個のサブブロックの個々の1つに対するインデックスであり得る。
【0169】
各サブブロックに対して、第2のパスのBMは、整数サンプル精度intDeltaMVを導出するために、完全探索を実行することを含み得る。完全探索は、水平方向における探索範囲[-sHor, sHor]および垂直方向における探索範囲[-sVer, sVer]を有し得る。sHorおよびsVerの値はブロックの次元によって決定されてもよく、sHorおよびsVerの最大値は8(または他の適切な値)であってもよい。
【0170】
図10は、本開示のいくつかの例による、コーディングユニット(CU)1000の中の例示的な探索エリア領域を示す図である。たとえば、
図10は、コーディングユニット1000の中の4つの異なる探索領域(たとえば、第1の探索領域1020、第2の探索領域1030、第3の探索領域1040、第4の探索領域1050など)を示す。場合によっては、バイラテラルマッチングコストは、次のように、2つの参照ブロック間のSATDコスト(または他のコスト関数)にコスト係数を適用することによって計算され得る。
bilCost = satdCost * costFactor 式(22)
【0171】
図10に示されるように、探索エリア(2*sHor+1)*(2*sVer+1)は、5つの菱形の探索領域へと分割され得る。他の態様では、他の探索領域が使用され得る。各探索領域はcostFactor値を割り当てられ、これは各探索点と開始MVとの間の距離(intDeltaMV)によって決定される。菱形の各探索領域(たとえば、探索領域1020、1030、1040、および1050)は、探索エリアの中心から開始する順序で処理され得る。各探索領域内で、領域の左上から開始して右下の角に向かうラスター走査順序で、探索点が処理される。
【0172】
いくつかの例では、第1の探索領域1020が最初に探索され、続いて第2の探索領域1030、続いて第3の探索領域1040、続いて第4の探索領域1050が探索される。現在の探索領域内の最良のbilCostがsbW*sbHに等しい閾値未満であるとき、整数ペルの完全探索は終了する。それ以外の場合、整数ペルの完全探索は、すべての探索点が精査されるまで次の探索領域へと続く。
【0173】
いくつかの場合、最終的なdeltaMV(sbIdx2)を導出するために、VVC DMVR小数サンプル精緻化がさらに適用され得る。次いで、第2のパスにおける精緻化されたMVが、次のように導出され得る。
MV0pass2(sbIdx2) = MV0pass1 + deltaMV(sbIdx2) 式(23)
MV1pass2(sbIdx2) = MV1pass1 - deltaMV(sbIdx2) 式(24)
【0174】
いくつかの例では、第3のパスは、サブブロックベースの双方向オプティカルフロー(BDOF)動きベクトル(MV)精緻化を実行することを含み得る。たとえば、第3のパスにおいて、精緻化されたMVは、8×8(または他のサイズ)のグリッドサブブロックにBDOFを適用することによって導出され得る。各8×8サブブロックに対して、BDOF精緻化は、第2のパスの親サブブロックの精緻化されたMVから開始して、クリッピングなしでスケーリングされたVxおよびVyを導出するために適用され得る。たとえば、第2のパスの各親サブブロックは、サイズが16×16であり得る(たとえば、第2のパスの各親サブブロックは、第3のパスにおいて使用される4つの8×8サブブロックと関連付けられ得る)。第3のパスのBDOF精緻化が、精緻化されたMV、MV0pass2(sbIdx2)およびMV1pass2(sbIdx2)に基づいて適用または実行されてもよく、sbIdx2は、第2のパスの親サブブロックの1つのインデックスである。
【0175】
続いて、導出されたbioMv(Vx, Vy)は、1/16サンプル精度に丸められ、-32と32の間にクリッピングされ得る(または他のサンプル精度および/または他のクリッピング値もしくは範囲)。
【0176】
第3のパスにおける精緻化されたMV(MV0pass3(sbIdx3)およびMV1pass3(sbIdx3))は、次のように導出され得る。
MV0pass3(sbIdx3) = MV0pass2(sbIdx2) + bioMv 式(25)
MV1pass3(sbIdx3) = MV0pass2(sbIdx2) - bioMv 式(26)
【0177】
ここで、sbIdx3は、第3のパスにおいて利用される8×8サブブロックの特定の1つに対するインデックスであり、sbIdx2は、第2のパスにおいて利用される16×16サブブロックの特定の1つに対するインデックスである。いくつかの例では、sbIdx3は、各8×8サブブロックがそのsbIdx3インデックスによって一意に識別可能であるような範囲を有し得る。たとえば、64×64ブロックを64個の8×8サブブロックへと分割することができ、sbIdx3は異なる8×8サブブロックに対する64個の固有のインデックス値を含むことができる。いくつかの例では、sbIdx3は、対応する16×16親ブロックのsbIdx2値と組み合わせて、各8×8サブブロックがそのsbIdx3によって一意に識別可能であるような範囲を有し得る。たとえば、64×64ブロックを、各々16×16のサイズを有する合計で16個のサブブロックへと分割することができ、各16×16サブブロックを、8×8のサイズを各々有する4つのサブブロックへとさらに分割することができる。この例では、sbIdx2は16個の固有の値のうちの1つをとることができ、sbIdx3は4つの固有の値のうちの1つをとることができるので、64個の8×8サブブロックの各々は、対応するsbIdx2およびsbIdx3インデックスに基づいて識別可能である。
【0178】
上で述べられた探索戦略を改善するための態様が、本明細書で説明される。本明細書で説明される態様は、現在ピクチャのブロックが動きベクトルを使用して1つまたは複数の参照ピクチャから予測される(たとえば、2つのそれぞれの参照ピクチャからの2つの参照ブロック)1つまたは複数のコーディング技法などの、1つまたは複数のコーディング(たとえば、符号化、復号、または合成符号化-復号)技法に適用されてもよく、動きベクトルは精緻化技法によって精緻化される。これらの改善は、上で説明されたような任意の適切なビデオコーディング規格またはフォーマット(たとえば、HEVC、VVC、AV1)、2つのそれぞれの参照ピクチャからの参照ブロックに基づいてブロックのためのコーディングを適用する他の既存の規格またはフォーマット、およびそのような技法を使用するあらゆる未来の規格に適用され得る。一般に、2つの参照ピクチャからの2つの参照ブロックが使用されるとき、そのような技法は一般に、双予測されたマージモードおよびバイラテラルマッチング技法と呼ばれる。
【0179】
上で説明された探索戦略に厳密に従うのではなく、本明細書で説明される様々な態様は、異なるコーディングされたブロックがバイラテラルマッチングのための異なる探索戦略(または方法)を有することを可能にすることができる。ブロックのための選択された探索戦略は、ビットストリームにおいてコーディングされる1つまたは複数のシンタックス要素においてシグナリングされ得る。探索戦略は、バイラテラルマッチング探索プロセスの間に課されるMVD0とMVD1との間の制約/関係を含み、探索パターン、探索範囲または最大の探索回数、コスト基準などの何らかの組合せとも関連付け得る。場合によっては、制約(constraint)は制約(constrain)とも呼ばれ得る。
【0180】
本明細書で説明されるシステムおよび技法は、デコーダ側動きベクトル精緻化(DMVR)のための適応バイラテラルマッチング(BM)を実行するために利用され得る。たとえば、システムおよび技法は、異なるコーディングされたブロックのための異なる探索戦略および/または探索方法を適用することによって、DMVRのための適応バイラテラルマッチングを実行することができる。いくつかの態様では、ブロックのための選択された探索戦略は、ビットストリームにおいてコーディングされる1つまたは複数のシンタックス要素を使用してシグナリングされ得る。いくつかの例では、ブロックのための選択された探索戦略は、明示的に、暗黙的に、またはこれらの組合せを使用してシグナリングされ得る。以下でより深く説明されるように、選択された探索戦略(たとえば、所与のブロックに対するDMVRのための適応BMを実行するために使用されることになる)は、MVD0とMVD1との間の制約または関係を含むことができ、探索戦略の制約は、バイラテラルマッチング探索プロセスの間に利用または適用される。いくつかの例では、追加または代替として、探索戦略は、探索パターン、探索範囲、最大探索回数、コスト基準などの1つまたは複数の組合せを含むことができる。
【0181】
1つの説明のための例では、本明細書で説明されるシステムおよび技法は、1つまたは複数の動きベクトル差分(MVD)制約を使用して、DMVRのための適応バイラテラルマッチングを実行することができる。前に説明されたように、動きベクトル差分は、初期動きベクトルと精緻化された動きベクトルとの差分(たとえば、MVD0=MV0'-MV0およびMVD1=MV1'-MV1)を表すために使用され得る。
【0182】
いくつかの例では、MVD制約が、所与のバイラテラルマッチングブロックのために選択され得る(たとえば、選択された探索戦略に含まれ得る)。たとえば、MVD制約はミラーリング制約であってもよく、このとき、MVD0およびMVD1は大きさが同じであるが、符号が反対である(たとえば、MVD0=-MVD1)。MVDミラーリング制約は、本明細書では「第1の制約」とも呼ばれることがある。
【0183】
別の例では、MVD制約はMVD0=0に設定することができる(たとえば、MVD0のx成分とy成分の両方が0である)。たとえば、MVD0=0の制約は、精緻化されたMV1'を導出するためにMV1の周りを探索する間、MV0を固定されたままに保つことによって利用されてもよく、MV0'=MV0である。MVD0=0の制約は、本明細書では「第2の制約」とも呼ばれることがある。
【0184】
別の例では、MVD制約はMVD1=0に設定することができる(たとえば、MVD1のx成分とy成分の両方が0である)。たとえば、mVD1=0の制約は、精緻化されたMV0'を導出するためにMV0の周りを探索する間、MV1を固定されたままに保つことによって利用されてもよく、MV1'=MV1である。MVD1=0の制約は、本明細書では「第3の制約」とも呼ばれることがある。
【0185】
別の例では、MVD制約は、MV0の周りを独立に探索してMV0'を導出するために、かつMV1の周りを独立に探索してMV1'を導出するために利用され得る。MVD独立探索の制約は、本明細書では「第4の制約」とも呼ばれることがある。
【0186】
以下でより深く説明されるように、場合によっては、第1の制約および第2の制約のみが、バイラテラルマッチングブロックごとに選択肢として提供され得る(たとえば、選択またはシグナリングされる探索戦略に含まれる)。場合によっては、第1の制約および第3の制約のみが、バイラテラルマッチングブロックごとに選択肢として提供される(たとえば、選択またはシグナリングされる探索戦略に含まれる)。場合によっては、第1の制約および第4の制約のみが、バイラテラルマッチングブロックごとに選択肢として提供される(たとえば、選択またはシグナリングされる探索戦略に含まれる)。場合によっては、第2の制約および第3の制約のみが、バイラテラルマッチングブロックごとに選択肢として提供される(たとえば、選択またはシグナリングされる探索戦略に含まれる)。場合によっては、第1の制約、第2の制約、および第3の制約が、バイラテラルマッチングブロックごとに選択肢として提供される(たとえば、選択またはシグナリングされる探索戦略に含まれる)。制約のあらゆる他の組合せが、バイラテラルマッチングブロックごとに選択肢として提供され得る(たとえば、選択またはシグナリングされる探索戦略に含まれる)。
【0187】
いくつかの態様では、1つまたは複数のシンタックス要素が(たとえば、ビットストリームにおいて)シグナリングされてもよく、1つまたは複数のシンタックス要素は、制約の1つまたは複数が適用されるかどうかを示すための値を含む。いくつかの例では、シンタックス要素は、所与のバイラテラルマッチングブロックに適用すべき、上記のMVD制約の特定の1つを指示または決定するために使用され得る。
【0188】
1つの説明のための例では、第1の制約が適用されるかどうかを示すために、第1のシンタックス要素が使用され得る。たとえば、第1のシンタックス要素がそのためにシグナリングされる所与のバイラテラルマッチングブロックにミラーリング制約(たとえば、MVD0=-MVD1)が適用されるべきであるかどうかを示すために、第1のシンタックス要素が使用され得る。いくつかの場合、第1のシンタックス要素は、ミラーリング制約が適用されるべきであるときは第1の値を有し、ミラーリング制約が適用されるべきではないときには第2の値を有し得る。いくつかの場合、第1のシンタックス要素の存在は、ミラーリング制約が所与のまたは現在のバイラテラルマッチングブロックに適用されるべきであると推測する(たとえば、暗黙的にシグナリングする)ために使用され得るが、第1のシンタックス要素の不在は、ミラーリング制約が適用されるべきではないと推測する(たとえば、暗黙的にシグナリングする)ために使用され得る。
【0189】
上の例を続けると、第1の制約(たとえば、MVDミラーリング制約、MVD0=-MVD1)が適用されないことを第1のシンタックス要素が示す場合、残りの制約のいずれを適用すべきかを示すために、第2のシンタックス要素が使用され得る。たとえば、シンタックス要素がそのためにシグナリングされる所与のまたは現在のバイラテラルマッチングブロックに第2の制約(たとえば、MVD0=0)または第3の制約(たとえば、MVD1=0)が適用されるべきであるかどうかを示すために、第2のシンタックス要素が使用され得る。いくつかの例では、第2のシンタックス要素は、第2の制約が適用されるべきであるときは第1の値を有し、第3の制約が適用されるべきであるときには第2の値を有し得る。場合によっては、第2のシンタックス要素の存在は、第2の制約または第3の制約のうちの所定の1つが適用されるべきであることを推測するために使用され得る(たとえば、暗黙的にシグナリングするために使用される)が、第2のシンタックス要素の不在は、第2の制約または第3の制約の残りの1つが代わりに適用されるべきであることを推測する(たとえば、暗黙的にシグナリングする)ために使用され得る。
【0190】
いくつかの例では、1つまたは複数のシンタックス要素(たとえば、第1のシンタックス要素および/または第2のシンタックス要素)は、モード情報を含むことができ、前述のMVD制約からの選択された制約は、モード情報によって示されるモード(たとえば、マージモード)に基づいて決定され得る。たとえば、1つまたは複数のシンタックス要素は、現在のバイラテラルマッチングブロックのための異なるマージモードを示すモード情報を含み得る。1つの説明のための例では、第1の制約(たとえば、ミラーリング制約、MVD0=-MVD1)は、通常の(たとえば、VVCマージモードにおける拡張マージ予測などの、標準的なまたはデフォルトの)マージモードのコーディングされたブロックへ、通常のマージ候補が上で述べられたDMVR条件を満たすときに適用され得る。
【0191】
前に説明されたように、DMVR条件は、以下のモードまたは特徴の1つまたは複数を用いてコーディングされるCUを示すことができる。いくつかの例では、DMVR条件は、限定はされないが、以下のモードおよび/または特徴、すなわち、双予測MVを伴うCUレベルマージモード、(たとえば、現在のピクチャに対して)過去にある1つの参照ピクチャおよび(たとえば、現在のピクチャに対して)未来にある別の参照ピクチャ、2つの参照ピクチャから現在ピクチャまでの距離(たとえば、POC距離)が同じである、両方の参照ピクチャが短期参照ピクチャである、64個よりも多くのルマサンプルを含むCU、CUの高さとCUの幅の両方が8ルマサンプル以上である、BCW重みインデックスが等しい重みを示す、重み付け予測(WP)が現在ブロックに対して有効にされない、合成インターおよびイントラ予測(CIIP)モードが現在ブロックのために利用されない、などのうちの1つまたは複数を用いてコーディングされるCUを含み得る。
【0192】
別の説明のための例では、コーディングされたブロックが指定された新しいマージモード(たとえば、本明細書で説明されるような、適応バイラテラルマッチングモード)を使用するとき、第2の制約(たとえば、MVD0=0)または第3の制約(たとえば、MVD1=0)の1つを適用することができ、このとき、すべてのマージ候補がDMVR条件を満たす。場合によっては、第2の制約および/または第3の制約は、追加または代替として、モードフラグまたはマージインデックスによって示される。たとえば、第2の制約と第3の制約との間での選択の標示は、モードフラグまたはマージインデックスに基づいて決定され得る。
【0193】
いくつかの例では、本明細書で説明される1つまたは複数のシンタックス要素は、マージ候補リストのインデックスを含み得る。選択された制約は次いで、マージ候補リストからの選択されたマージ候補を示すインデックスによって決定され得る(たとえば、制約は選択されたマージ候補に依存する)。さらに別の例では、シンタックス要素は、モードフラグとインデックスの組合せを含み得る。
【0194】
いくつかの態様では、本明細書で説明されるシステムおよび技法は、上で説明されたマルチレベル(たとえば、マルチパス)DMVRを実行するために利用され得る選択された探索戦略を(たとえば、明示的におよび/または暗黙的に)シグナリングすることができる。いくつかの例では、選択された探索戦略は、マルチパスDMVRの1つのパスにおいて適用され得る。別の例では、選択された探索戦略は、複数のレベルまたはマルチパスDMVRのパスにおいて適用され得る(たとえば、しかし、場合によってはプロセスのすべてのレベルまたはパスには適用されない)。
【0195】
上で説明された3パスDMVRの例では、1つの説明のための例において、選択された戦略は、第1のパスだけにおいて適用され得る(たとえば、PUレベルバイラテラルマッチング)。第2のパスおよび第3のパス(たとえば、それぞれ、第1のサブブロックサイズのためにバイラテラルマッチングを実行し、第1のサブブロックサイズよりも小さい第2のサブブロックサイズのためにBDOFを実行する)は、デフォルトの戦略、たとえば、
図10に関して上で説明されたものおよび標準化された3パス構造を利用して実行され得る。1つの説明のための例では、マルチパスDMVR(たとえば、上で説明された3パスDMVR)は、PUレベルバイラテラルマッチングを実行するために、第1のパスにおいて第2の探索戦略(たとえば、第2の制約MVD0=0)および/または第3の探索戦略(たとえば、第3の制約MVD1=0)を利用することができる。後続のパス(たとえば、第2のパスおよび第3のパス)は、第1の制約(たとえば、ミラーリング制約MVD0=-MVD1)を含むデフォルトの探索戦略を使用することができる。
【0196】
いくつかの態様では、探索戦略は複数のサブセットへとグループ化され得る。いくつかの例では、選択されたサブセットを決定するために、1つまたは複数のシンタックス要素が使用され得る。場合によっては、所与のサブセット内の選択された戦略は暗黙的に決定され得る。1つの説明のための例では、第1の制約(たとえば、ミラーリング制約MVD0=-MVD1)が第1のサブセットに含まれてもよく、第2の制約(たとえば、MVD0=0)と第3の制約(たとえば、MVD1=0)の両方が第2のサブセットに含まれてもよい。第2のサブセットが使用されるかどうかを示すために、シンタックス要素が使用され得る。第2のサブセットが使用される(たとえば、対応するシンタックス要素に基づいて)場合、第2の制約を適用することと第3の制約を適用することとの間での選択または決定は、暗黙的に決定され得る。たとえば、バイラテラルマッチングのために第2の制約を使用することと、バイラテラルマッチングのために第3の制約を使用することとの間での暗黙的な決定が、最小マッチングコストに基づいて行われ得る。第2の制約を使用するバイラテラルマッチングが、第3の制約を使用するバイラテラルマッチングよりも小さいマッチングコストをもたらすと決定される場合、第2の制約を選択することができ、それ以外の場合、第3の制約が選択される。
【0197】
いくつかの例では、本明細書で説明されるシステムおよび技法の1つまたは複数の態様は、増強圧縮モデル(ECM)とともに利用され、またはそれに基づいて適用され得る。たとえば、ECMにおいて、マルチパスDMVRは、上で説明されたものと同じまたは同様の1つまたは複数の特徴とともに、通常の(たとえば、VVCマージモードにおける拡張マージ予測などの、標準的なまたはデフォルトの)マージモード候補に適用され得る。たとえば、1つまたは複数の特徴は、上で説明されたDMVR条件の一部(またはすべて)と同じまたは同様であり得る。上で述べられたように、マージ候補は、情報(たとえば、1つまたは複数の動きベクトル、予測モードなど)が現在ブロックをコーディングする(たとえば、符号化および/または復号する)際に使用するためにそこから継承される候補ブロックを指し、候補ブロックは現在ブロックに隣接するブロックであり得る。たとえば、マージ候補は、空間的に隣接する動きデータ位置のグループおよび2つの時間的に同一位置の動きデータ位置のうちの1つから選択された動きデータ位置を含む、インター予測されたPUであり得る。
【0198】
ECMにおけるマルチパスDMVRは、第1の制約(たとえば、ミラーリング制約MVD0=-MVD1)をデフォルトで適用することに基づいて実行され得る。1つの説明のための例では、本明細書で説明されるシステムおよび技法は、マルチパスDMVRのための新しいモードとして適応バイラテラルマッチングモードを利用することができる。いくつかの例では、適応バイラテラルマッチングモードは、「adaptive_bm_mode」とも呼ばれ得る。adaptive_bm_modeでは、選択された動き情報候補を示すために、マージインデックスがシグナリングされ得る。しかしながら、候補リストの中のすべての候補がDMVR条件を満たし得る。場合によっては、適応バイラテラルマッチングモードの使用をシグナリングまたは指示するために、フラグ(たとえば、bm_merge_flag)が使用され得る。たとえば、フラグが真である(たとえば、bm_merge_flagが1に等しい)場合、adaptive_bm_modeが使用または適用され得る(たとえば、以下で説明されるように)。いくつかの態様では、フラグが真であるとき(たとえば、bm_merge_flagが1に等しい)、追加のフラグ(たとえば、bm_dir_flag)が、adaptive_bm_modeにおいて使用されるべきbm_dir値をシグナリングまたは指示するために使用され得る。
【0199】
いくつかの態様では、adaptive_bm_mode=1である場合、適応バイラテラルマッチングを実行することができ、adaptive_bm_mode=0である場合、適応バイラテラルマッチングが実行されない。1つの説明のための例では、適応バイラテラルマッチングプロセス(たとえば、adaptive_bm_mode=1と関連付けられる)は、第2の制約または第3の制約のいずれかを選択された候補に適用したことに少なくとも一部基づいて実行され得る(たとえば、それぞれ、MVD0またはMVD1のいずれかを0に等しいものとして固定する)。場合によっては、変数bm_dirは、どの制約が適用されるかを示すために、および/または選択された制約を示すために使用され得る。たとえば、適応バイラテラルマッチングが実行される(たとえば、adaptive_bm_modeに基づいてシグナリングまたは決定される)とき、bm_dir=1は、適応バイラテラルマッチングがMVD1を0に固定することによって実行されるべき(たとえば、第3の制約が適用されるべき)であることを示し、またはシグナリングするために使用され得る。いくつかの例では、bm_dir=2は、適応バイラテラルマッチングがMVD0を0に固定することによって実行されるべき(たとえば、第2の制約が適用されるべき)であることを示し、またはシグナリングするために使用され得る。
【0200】
場合によっては、適応バイラテラルマッチングが実行されない場合、通常マージモードが利用され得る。前に言及されたように、通常マージモードは、adaptive_bm_mode=0に基づいて決定またはシグナリングされてもよく、これは、適応バイラテラルマッチングが実行されないことを示す。いくつかの例では、通常マージモードが利用されるとき(たとえば、適応バイラテラルマッチングが実行されないので)、システムおよび技法は、bm_dir=3という推測値を利用することができ、これは、MVD0およびMVD1が固定されず、MVD0=-MVD1である(たとえば、第1のミラーリング制約が適用されるべきである)ことを示し、またはシグナリングする。いくつかの例では、bm_dir=3は、通常マージモードを示すために、明示的にシグナリングまたは使用され得る。
【0201】
いくつかの例では、システムおよび技法は、1つまたは複数の修正されたバイラテラルマッチング動作とのバイラテラルマッチングを実行することができる。いくつかの態様では、bm_dir=3であるとき、バイラテラルマッチングプロセスは、上で前に説明された3パスバイラテラルマッチングプロセスと同じであり得る。たとえば、MVの初期のペアを仮定すると、第1の予測子は、第1の参照ピクチャを参照する第1のMVによって生成され、第2の予測子は、第2の参照ピクチャを参照する第2のMVによって生成される。MVの精緻化されたペアは続いて、精緻化された第1の予測子(たとえば、第1の精緻化されたMVを使用して生成される)と精緻化された第2の予測子(たとえば、第2の精緻化されたMVを使用して生成される)との間のBMコストを最小にすることによって導出され、精緻化されたMVと初期MVとの間の動きベクトル差分は、MVD0およびMVD1、ならびにMVD0=-MVD1である。
【0202】
いくつかの態様では、bm_dir=1であるとき、第1のMVのみが精緻化され、第2のMVは固定されたままである。たとえば、精緻化された第1のMVは、第2のMVによって生成される第2の予測子と、精緻化された第1のMVによって生成される精緻化された第1の予測子との間のBMコストを最小にすることによって、導出され得る。たとえば、bm_dir=1であるとき、MV0は精緻化され得るが、MV1は固定されたままである。精緻化された動きベクトルMV0'は、MV1に基づいて生成される予測子と、MV0'に基づいて生成される精緻化された予測子との間のBMコストを最小にすることによって、導出され得る。
【0203】
いくつかの例では、bm_dir=2であるとき、第2のMVだけが精緻化され、第1のMVは固定されたままである。たとえば、精緻化された第2のMVは、第1のMVによって生成される第1の予測子と、精緻化された第2のMVによって生成される精緻化された第2の予測子との間のBMコストを最小にすることによって、導出され得る。たとえば、bm_dir=2であるとき、MV1は精緻化され得るが、MV0は固定されたままである。精緻化された動きベクトルMV1'は、MV1に基づいて生成される予測子と、MV1'に基づいて生成される精緻化された予測子との間のBMコストを最小にすることによって、導出され得る。
【0204】
いくつかの態様では、BMコスト(たとえば、上で説明されたような)は、追加または代替として、動きベクトル差分(MVD)に基づく、またはそれから導出される、正則化項を含み得る。1つの説明のための例では、マルチパスDMVR探索プロセスは、精緻化されたMV位置に依存するMVコストに基づいて決定される正則化項を含み得る。
【0205】
いくつかの態様では、上で説明されたバイラテラルマッチング修正の1つまたは複数は、マルチパスバイラテラルマッチングプロセス(たとえば、PUレベルDMVR)の第1のパスだけにおいて適用され得る。他の態様では、上で説明されたバイラテラルマッチング修正の1つまたは複数は、第1のパスと第2のパスの両方において適用され得る(たとえば、PUレベルDMVRパスおよびサブPUレベルDMVRパスにおいて適用され得る)。
【0206】
いくつかの例では、本明細書で説明されるシステムおよび技法は、上の例で説明されたものよりも多数または少数のパスを使用して、マルチパスバイラテラルマッチングDMVRを実行することができる。たとえば、3つよりも少ないパスが利用されてもよく、および/または3つよりも多いパスが利用されてもよい。いくつかの例では、あらゆる数のパスが使用されてもよく、パスは任意の方式で構築されてもよい。いくつかの態様では、adaptive_bm_modeにおいて、マルチパス設計が同様に適用され得る。いくつかの態様では、第2のパスはadaptive_bm_modeにおいてスキップされ得る。いくつかの態様では、第2のパスと第3のパスは両方、adaptive_bm_modeにおいてスキップされ得る。他の態様では、パスのあらゆる組合せ(たとえば、上で説明された3パスシステムからのパス動作)が、特定の適応バイラテラルマッチング基準に基づいて、反復されるパスまたは他のパスタイプと組み合わせられ得る。
【0207】
マルチパスDMVRのいくつかの態様では、異なる探索パターンが、異なる探索レベルおよび/または探索精度のために使用され得る。たとえば、PUレベルDMVR(たとえば、第1のパス)を実行するために適用され得る整数探索と半ペル探索の両方のために、方形探索が使用され得る。いくつかの例では、サブPUレベルDMVR(たとえば、第2のパスおよび/または第3のパス)では、完全探索を整数探索のために使用することができ、方形探索を半ペル探索のために使用することができる。いくつかの例では、上で説明された探索パターンの1つまたは複数(またはすべて)が、bm_dirが第1の値(1という値)、第2の値(2という値)、または第3の値(3という値)に等しいという決定に基づいて利用され得る。一例では、上で説明された探索パターンの1つまたは複数(またはすべて)が、bm_dir=3という決定に基づいて利用され得る。
【0208】
以下の態様は、bm_dirが1または2に等しいときの、例示的な探索パターンおよび/または探索プロセスについて説明する。一態様では、bm_dir=3であるときと同じ探索パターンが、bm_dir=1であるときおよび/またはbm_dir=2であるときに使用され得る。別の態様では、bm_dir=1およびbm_dir=2は、bm_dir=3であるときとは異なる探索パターンを使用することができる。たとえば、一例では、PUレベルDMVRにおける整数探索のために完全探索を使用することができ、PUレベルDMVRにおける半ペル探索のために方形探索を使用することができる。
【0209】
いくつかの態様では、同じ探索範囲および/または最大探索回数が、異なるbm_dirの値に対して使用され得る。他の態様では、bm_dir=1または2であるとき、異なる探索範囲および/または異なる最大探索回数が使用され得る。たとえば、異なるコスト係数が異なるMVDに割り当てられている完全探索の場合、1つまたは複数のMVD領域がスキップされ得る。たとえば、
図10に示されるように、CU1000のための探索エリアは、複数の探索領域(たとえば、第1の探索領域1020、第2の探索領域1030、第3の探索領域1040、第4の探索領域1050)へと分割される。いくつかの場合、探索エリアの中心から遠い(たとえば、第1の探索領域1020から遠い)領域はスキップされ得る。
【0210】
いくつかの例では、通常マージモードにおいて、すべての探索領域が探索され得る。たとえば、
図10に関して、通常マージモードでは、4つの探索領域1020、1030、1040、および1050を、4つの探索領域1020~1050の1つにまだ含まれていないCU1000の残りのブロックを含む第5の探索領域とともに、探索することができる。上で言及されたように、場合によっては、探索エリアの中心から遠い探索領域をスキップすることができる。たとえば、適応バイラテラルマッチングモードにおいて(たとえば、bm_dir=1または2のとき)、
図10のCU1000に関連する最初の3つの探索領域だけが探索され得る(たとえば、適応バイラテラルマッチングモードでは、第1の探索領域1020、第2の探索領域1030、および第3の探索領域1040が探索され得る)。
【0211】
マルチパスDMVRのいくつかの態様では、SADまたは平均除去SAD(たとえば、PUサイズに応じた)が、PUレベルDMVRパスに関連する整数探索および半ペル探索のために使用され得る。いくつかの場合、SATDがサブPUレベルDMVRのために使用され得る。いくつかの態様では、bm_dirの異なる値に対して同じコスト基準が使用され得る。たとえば、ECMにおける現在のコスト基準の選択が、bm_dirのすべての値に対して使用され得る。他の態様では、コスト基準の選択は、bm_dirの異なる値に対して異なり得る。たとえば、bm_dir=3であるとき、現在のECMにおけるコスト基準の選択が適用され得る。SADまたは平均除去SADは、PUサイズに応じて、PUレベルDMVRにおける整数探索または半ペル探索のために使用され得る。bm_dir=1または2であるとき、PUレベルDMVRプロセスは、整数探索のためにSATDを使用することができ、半ペル探索のためにSADを使用することができる。
【0212】
前に言及されたように、いくつかの態様のための候補リストの中の候補は、DMVR条件を満たす。1つの追加の態様では、bm_dirは、adaptive_bm_modeモードに含まれる追加のbm_dir_flagによって示されるように、1または2に等しく設定され得る。場合によっては、adaptive_bm_modeのための候補リストは、通常のマージ候補リストに加えて生成される。たとえば、通常のマージ候補リストの中の、DMVR条件を満たすと決定される1つまたは複数の候補は、adaptive_bm_modeのための候補リストに挿入され得る。
【0213】
別の追加の態様では、1または2に等しくbm_dirを設定するかどうかは、adaptive_bm_modeモード内のマージインデックスによって示され得る。adaptive_bm_modeのための候補リストは、通常のマージ候補リストに加えて生成され得る。DMVR条件を満たす通常のマージ候補リストの中の各候補に対して、2つの候補のペアをadaptive_bm_mode候補リストへと挿入することができ、一方の候補はbm_dir=1であり、他方の候補はbm_dir=2であり、ペアの中の2つの候補は同一の動き情報を有する。いくつかの例では、bm_dirは、マージインデックスが偶数であるか奇数であるかを決定することによって決定され得る。
【0214】
1つの説明のための例では、adaptive_bm_modeのための候補リストは、通常のマージ候補リストとは独立に生成され得る。いくつかの場合、adaptive_bm_modeのための候補リストの生成は、通常のマージモードのための候補リストを生成するのと同じまたは同様のプロセス(たとえば、同じ空間、時間隣接位置、履歴ベースの候補、ペア毎の候補を確認するなど)に従うことができる。場合によっては、リスト構築プロセスの間に剪定が適用され得る。
【0215】
さらに別の態様では、等しくない重みを示すCUレベル重みを用いた双予測(BCW)重みインデックスに関連する1つまたは複数の候補も、候補リストに追加され得る(たとえば、BCW重みインデックスが等しい重みを示し得る、DMVR条件を伴う一部のシステムと比較して)。
【0216】
いくつかの例では、adaptive_bm_modeのための候補リストの中の、および/または通常マージモードのための候補リストの中の候補の数が、あらかじめ定められた最大値よりも少ない場合、パディング処理が適用され得る。たとえば、adaptive_bm_modeのための候補リストが生成されると、リストの中にある候補は、あらかじめ定められた最大の数の候補よりも少ないことがある。そのような例では、パディングされた候補リストがあらかじめ定められた数の候補を含むように、候補リストのためのある数のパディングされた候補を生成するために、パディング処理が適用され得る。1つの説明のための例では、適応バイラテラルマッチングが有効にされる場合(たとえば、adaptive_bm_mode=1)、マージリスト構築においてパディングするための、1つまたは複数のデフォルトの候補が使用され得る。デフォルトの候補は、DMVR条件を満たすように導出され得る。
【0217】
いくつかの例では、MVはデフォルトの候補に対して0に設定され得る。たとえば、パディング処理の間にゼロMV候補が追加され得る。いくつかの例では、DMVR条件に従って参照ピクチャが選択され得る。いくつかの場合、参照インデックスは、候補リストの中の候補の数が候補の最大の数(たとえば、あらかじめ定められた最大値)に達するまで、すべてのあり得る値について繰り返すことができる。別の態様では、通常の候補に対して等しい重みを示すために、BCW重みインデックスを使用することができ、1つまたは複数の等しくない重みBCW候補が、その後に、かつゼロ候補を追加する前に追加され得る。
【0218】
いくつかの態様では、デフォルトの候補に割り当てられる参照ピクチャ(たとえば、上で説明されたパディングされたゼロMV候補に割り当てられる参照ピクチャ)は、adaptive_bm_modeに関連する1つまたは複数の条件を満たすように選択され得る。そのような条件の説明のための例は、現在ピクチャに対して過去の1つの参照ピクチャおよび未来の1つの参照ピクチャを含む参照ピクチャの少なくとも1つのペアが選択されること、現在ピクチャまでの両方の参照ピクチャからのそれぞれの距離が等しいこと、参照ピクチャの両方が長期参照ピクチャではないこと、参照ピクチャの両方が現在ピクチャと同じ分解能を有すること、重み付け予測(WP)が参照ピクチャのいずれにも適用されないこと、これらの任意の組合せ、および/または他の条件という、条件のうちの1つまたは複数を含んでもよく、かつ/または、ここに列挙されない他の条件を含んでもよい。
【0219】
いくつかの態様では、1つまたは複数の参照ピクチャは、指定されたもしくは選択された制約(たとえば、第2の制約MVD0=0、または第3の制約MVD1=0)に関連する、またはそれに基づく1つまたは複数の条件を満たす参照ピクチャを選択したことに基づいて、デフォルトの候補に(たとえば、上で説明されたパディングされたゼロMV候補に)割り当てられ得る。いくつかの例では、所与の制約に関連する1つまたは複数の条件を満たすように参照ピクチャが選択されてもよく、所与の制約は(たとえば、前に説明されたように)bm_dirに基づいて決定される。たとえば、bm_dirに基づく1つまたは複数の条件は、そのための精緻化が実行されるMVだけに適用され得る(たとえば、bm_dir=1である場合)。そのような条件の説明のための例は、所与のリストXの中の参照ピクチャが長期参照ピクチャではないこと、リストXの中の参照ピクチャが現在ピクチャと同じ分解能を有すること、重み付け予測(WP)がリストXの中の参照ピクチャに適用されないこと、リストXの中の第1の参照ピクチャから現在ピクチャまでのそれぞれの距離が、他の参照ピクチャ(たとえば、リストXの中の第2の参照ピクチャ)から現在ピクチャまでのそれぞれの距離よりも小さくないこと、これらの任意の組合せ、および/または他の条件という、条件のうちの1つまたは複数を含んでもよく、かつ/または、ここに列挙されない他の条件を含んでもよい。
【0220】
いくつかの場合、リスト0の中のMVが精緻化されることをbm_dirが示す場合、リストXはリスト0(たとえば、リストL0)と同じであり得る。いくつかの場合、リスト1の中のMVが精緻化されることをbm_dirが示す場合、リストXはリスト1(たとえば、リストL1)と同じであり得る。いくつかの態様では、参照ピクチャのすべてのあり得る組合せについて繰り返し、あらかじめ定められた条件を満たす参照ピクチャをある順序で特定することによって、すべての潜在的なゼロMV候補が発見され得る。1つの説明のための例では、リスト0のために第1のループを実行することができ、リスト1のために第2のループを実行することができる。別の例では、リスト1のために第1のループを実行することができ、リスト0のために第2のループを実行することができる。他の順序も可能であり、本開示の範囲内にあると見なされるべきである。あり得るゼロMV候補を決定する(たとえば、参照ピクチャの組合せについて繰り返し、あらかじめ定められた条件を満たす参照ピクチャをある順序で特定することによって)プロセスは、スライスレベル、ピクチャレベル、または他のレベルで実行され得る。特定されたデフォルトMV候補(たとえば、ゼロMV候補)のリストは、デフォルト候補として記憶され得る。場合によっては、ブロックレベルで潜在的なゼロMV候補を決定するとき、候補の数があらかじめ定められた候補の最大の数よりも小さいとき、本明細書で説明されるシステムおよび技法は、候補の数があらかじめ定められた最大値に達するまで、デフォルトの候補について繰り返し、デフォルトの候補の1つまたは複数を候補リストに追加してもよい。
【0221】
いくつかの態様では、1つまたは複数のサイズ制約は、本明細書で説明されるadaptive_bm_modeに含まれ、および/またはそれによって利用され得る。一態様では、通常のDMVRと同じサイズ制約が、adaptive_bm_modeにおいて適用され得る。別の態様では、現在ブロックの幅と高さのいずれもがDMVRのための最小ブロックサイズよりも大きくない場合、adaptive_bm_modeは適用されない。
【0222】
いくつかの態様では、adaptive_bm_modeは、通常のマージモードに対する追加のマージモードとしてシグナリングされ得る。いくつかの例では、追加のマージモードとしてadaptive_bm_modeをシグナリングするために、様々なシグナリング方法が適用または利用され得る。たとえば、adaptive_bm_modeは、通常のマージモードの変形として考慮またはシグナリングされ得る。1つの説明のための例では、1つまたは複数のシンタックス要素が最初に、通常のマージモードを示すためにシグナリングされてもよく、1つまたは複数の追加のフラグおよび/またはシンタックス要素が、adaptive_bm_modeを示すために、および/または、adaptive_bm_modeの使用に関連して適用され得る制約(たとえば、第2の制約MDV0=0または第3の制約MDV1=0)の特定の1つを示すためにシグナリングされ得る。
【0223】
別の態様では、adaptive_bm_modeは、通常のマージモードの標示の前に1つまたは複数のフラグによって示され得る。たとえば、現在ブロックがadaptive_bm_modeを使用していないことをシンタックス(たとえば、1つまたは複数のシンタックス要素)が示す場合、現在ブロックが通常のマージモードを使用するか、または他のマージモードを使用するかを示すために、1つまたは複数の追加のシンタックス要素がシグナリングされ得る。たとえば、現在ブロックがadaptive_bm_modeまたは通常のマージモードを使用しない場合、合成インターおよびイントラ予測(CIIP)、幾何学的区分モード(geometric partition mode: GPM)などの他のマージモードを現在ブロックが使用することを示すために、1つまたは複数の追加のシンタックス要素がシグナリングされ得る。
【0224】
さらに別の態様では、adaptive_bm_modeは、他のマージモード分岐においてシグナリングされ得る。たとえば、adaptive_bm_modeは、テンプレートマッチングマージモード分岐においてシグナリングされ得る。いくつかの場合、adaptive_bm_modeおよびテンプレートマッチングマージモードのうちの1つが使用されるかどうかを示すために、1つまたは複数のシンタックス要素が最初にシグナリングされ得る。adaptive_bm_modeまたはテンプレートマッチングマージモードが使用されることを1つまたは複数のシンタックス要素が示す場合、テンプレートマッチングマージモードとadaptive_bm_modeのどちらが使用されるかを示すために、1つまたは複数の追加のフラグまたはシンタックス要素がシグナリングされ得る。
【0225】
いくつかの態様では、adaptive_bm_modeにおけるマージインデックスは、通常のマージモードと同じシグナリング方法を使用することができる。一態様では、adaptive_bm_modeは、通常のマージモードと同じ(または同様の)コンテキストモデルを使用することができる。別の態様では、adaptive_bm_modeのために別個のコンテキストモデルが使用され得る。いくつかの例では、adaptive_bm_modeに対して、マージ候補の最大の数は、通常のマージモードのためのマージ候補の最大の数とは異なり得る。
【0226】
1つの説明のための例では、adaptive_bm_modeが適用され得るかどうか、または適用されることになるかどうかを示すために、1つまたは複数の高水準シンタックス要素が使用され得る。一態様では、通常のDMVRが適用されることになるかどうかを示すために使用されるのと同じ高水準シンタックスが、adaptive_bm_modeが適用されることになるかどうかを示すためにも使用され得る。別の態様では、adaptive_bm_modeが適用されるべきであるかどうかを示すために、1つまたは複数の別個の(たとえば、追加の)高水準シンタックス要素が使用され得る。さらに別の態様では、adaptive_bm_modeが利用されるかどうかを示すために、別の高水準シンタックス要素が使用されてもよく、通常のDMVRが有効にされる場合にのみ、adaptive_bm_modeのための別個の高水準シンタックス要素が存在する。たとえば、通常のDMVRに関連する別個の高水準シンタックス要素が、通常のDMVRが有効にされないまたは利用されないことを示すと決定される場合、adaptive_bm_modeに関連する別個のまたは追加の高水準シンタックス要素はシグナリングされず、adaptive_bm_modeはオフ(たとえば、有効にされないまたは利用されない)であると推測される。
【0227】
いくつかの態様では、上で説明された1つまたは複数の高水準シンタックス要素に加えて、adaptive_bm_modeは、利用可能な参照ピクチャに従って、コーディングされたピクチャまたはスライスのために無効にされ得る。場合によっては、参照ピクチャのいずれの組合せも参照ピクチャ条件を満たさない、または満たすことができないと決定される場合、adaptive_bm_modeを無効にすることができ、対応するシンタックス要素(たとえば、ブロックレベルにおける)はシグナリングされない。場合によっては、adaptive_bm_modeを利用するために、参照ピクチャ条件を満たす参照ピクチャの少なくとも1つのペアがなければならない。そのような条件の説明のための例は、現在ピクチャに対して過去の1つの参照ピクチャおよび未来の1つの参照ピクチャ、現在ピクチャまでの両方の参照ピクチャからのそれぞれの距離が等しいこと、両方の参照ピクチャが長期参照ピクチャではないこと、両方の参照ピクチャが現在ピクチャと同じ分解能を有すること、重み付け予測(WP)がいずれの参照ピクチャにも適用されないこと、これらの任意の組合せ、および/または他の条件という、条件のうちの1つまたは複数を含んでもよく、かつ/または、ここに列挙されない他の条件を含んでもよい。
【0228】
上に列挙された条件は、別々に、または組み合わせて使用され得る。
【0229】
いくつかの態様では、本明細書で説明される適応バイラテラルマッチングモードのサブセット(たとえば、第2の条件MDV0=0に関連する第1の適応バイラテラルマッチングモードおよび第3の条件MDV1=0に関連する第2の適応バイラテラルマッチングモード)のみが、参照ピクチャに応じて有効にされ得る。bm_dir=1(たとえば、第2の条件MDV0=0に関連する)またはbm_dir=2(たとえば、第3の条件MDV1=0に関連する)だけを許容するためのそのような条件の説明のための例は、参照ピクチャの1つが長期参照ピクチャであり他の参照ピクチャが長期参照ピクチャではないこと、参照ピクチャの1つは現在ピクチャと同じ分解能を有するが他の参照ピクチャは現在ピクチャと異なる分解能を有すること、重み付け予測(WP)が参照ピクチャの1つに適用されること、参照ピクチャの1つから現在ピクチャまでのそれぞれの距離が他の参照ピクチャから現在ピクチャまでのそれぞれの距離よりも短くないこと、これらの任意の組合せ、および/または他の条件という、条件の1つまたは複数を含んでもよく、かつ/または、ここに列挙されない他の条件を含んでもよい。
【0230】
場合によっては、バイラテラルマッチングモードを特定するシンタックス要素(たとえば、ブロックレベルにおける)は、シグナリングされなくてもよく、それに従って推測され得る。いくつかの例では、シンタックス要素は、(たとえば、特定のシンタックステーブルの一部としてビットストリームにおいて)明示的にシグナリングされるのではなく、暗黙的にシグナリング(たとえば、推測)され得る。場合によっては、シンタックス要素は、明示的にシグナリングされなくても暗黙的にシグナリングされなくてもよく、推測され得る。たとえば、第1の値のbm_dirが有効にされる(たとえば、bm_dir=1が有効にされる)が、第2の値のbm_dirが無効にされる(たとえば、bm_dir=2が無効にされる)場合、ブロックレベルにおけるbm_dirがシグナリングされなくてもよいことを示すために、シンタックス要素が使用される。このシンタックス要素がないとき、bm_dirは第1の値であると推測され得る(たとえば、bm_dirは1であると推測される)。別の例では、第2の値のbm_dirが有効にされる(たとえば、bm_dir=2)が、第1の値のbm_dirが無効にされる(たとえば、bm_dir=1が無効にされる)場合、ブロックレベルにおけるbm_dirがシグナリングされなくてもよいことを示すために、シンタックス要素が使用される。このシンタックス要素がないとき、bm_dirは第2の値であると推測され得る(たとえば、bm_dirは2であると推測される)。
【0231】
別の例では、adaptive_bm_modeのために、スライスレベルフラグおよび/またはピクチャレベルフラグが利用され得る。たとえば、上記の条件のうちの少なくとも1つが満たされない場合、フラグが0に設定される(たとえば、DMVRモードが無効にされる)というビットストリーム適合制約として、スライスレベルフラグおよび/またはピクチャレベルフラグが利用され得る。
【0232】
さらに別の例では、ビットストリーム適合制約を既存のシグナリングに導入することができ、上記の条件のうちの少なくとも1つが満たされない場合、ビットストリーム適合制約は、adaptive_bm_modeが適用されるべきではなく、対応するオーバーヘッドが0に設定されることを示す(たとえば、adaptive_bm_modeが使用されないことを示す)。
【0233】
ECMのいくつかの態様では、複数仮説予測(multiple hypothesis prediction: MHP)が利用され得る。MHPでは、2つよりも多くの動き補償された予測信号の重み付けられた重畳を取得または決定するために、インター予測技法が使用され得る。サンプルごとの重み付けられた重畳を実行することに基づいて、結果として生じる全体の予測信号が取得され得る。たとえば、単/双予測信号puni/biおよび第1の追加のインター予測信号/仮説h3に基づいて、結果として生じる予測信号p3は次のように取得され得る。
p3=(1-α)puni/bi+αh3 式(27)
【0234】
ここで、重み付け係数αは、以下のマッピングに従って、シンタックス要素add_hyp_weight_idxによって指定され得る。
【0235】
【0236】
いくつかの例では、1つよりも多くの追加の予測信号が使用され得る。場合によっては、1つよりも多くの追加の予測信号が、上と同じまたは同様の方式で利用され得る。たとえば、複数の追加の予測信号を利用するとき、結果として生じる全体の予測信号は、各々の追加の予測信号について反復的に次のように累積され得る。
pn+1=(1-αn+1) pn+αn+1 hn+1 式(28)
【0237】
ここで、結果として生じる全体の予測信号が、最後のpn(たとえば、最大のインデックスnを有するpn)として取得され得る。
【0238】
いくつかの態様では、MHPは、どのようなadaptive_bm_modeに対しても適用されないことがある(たとえば、無効にされる)。いくつかの態様では、MHPが標準化された(たとえば、通常の)マージモードのために適用されるのと同じまたは同様の方式で、MHPがadaptive_bm_modeに加えて適用され得る。
【0239】
図11は、ビデオデータを処理するためのプロセス1100の例を示すフローチャートである。いくつかの例では、本開示のいくつかの例による、適応バイラテラルマッチングを用いたデコーダ側動きベクトル精緻化(DMVR)を実行するためにプロセス100が使用され得る。いくつかの態様では、プロセス1100は、メモリと、プロセス1100の動作を実行するように構成されたメモリに結合される1つまたは複数のプロセッサとを備える、ビデオデータを処理するための装置において実施され得る。他の態様では、プロセス1100は、デバイスの1つまたは複数のプロセッサによって実行されると、プロセス1100の動作をデバイスに実行させる命令を備える、非一時的コンピュータ可読媒体において実施され得る。
【0240】
ブロック1102において、プロセス1100は、現在ピクチャ(たとえば、現在ピクチャの現在ブロック)のための1つまたは複数の参照ピクチャを取得することを含む。たとえば、1つまたは複数の参照ピクチャは、
図1に示される復号デバイス112への入力114の1つまたは複数に基づいて取得され得る。いくつかの例では、1つまたは複数の参照ピクチャおよび現在ピクチャは、
図1に示される復号デバイス112によって取得される、またはそれに提供される、ビデオデータから取得され得る。
【0241】
ブロック1104において、プロセス1100は、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定することを含む。たとえば、第1の動きベクトルおよび/または第2の動きベクトルは、
図1に示される復号デバイス112によって特定され得る。いくつかの例では、第1の動きベクトルおよび/または第2の動きベクトルは、
図1に示される復号デバイス112のデコーダエンジン116を使用して特定され得る。場合によっては、第1の動きベクトルおよび第2の動きベクトルの1つまたは複数(または両方)が、シグナリングされた情報を使用して特定され得る。たとえば、
図1に示される符号化デバイス104は、第1の動きベクトルおよび第2の動きベクトルの1つまたは複数(または両方)を特定するために、復号デバイス112および/または復号エンジン116によって使用され得るシグナリング情報を含み得る。場合によっては、プロセス1100は、現在ピクチャのためのマージモード候補を決定することを含み得る。本明細書で述べられるように、マージモード候補は、現在ピクチャのブロックのために予測データがそれから継承され得るブロックの隣接ブロックを含み得る。たとえば、マージモード候補は、
図1に示される復号デバイス112によって決定され得る。いくつかの例では、マージモード候補は、
図1に示される復号デバイス112のデコーダエンジン116を使用して決定され得る。いくつかの例では、現在ピクチャのためのマージモード候補を決定するために、シグナリング情報が復号デバイス112および/または復号エンジン116によって使用され得る。場合によっては、マージモード候補は、マージモード候補に関連する第1の動きベクトルおよび第2の動きベクトルの1つまたは複数(または両方)を特定するために使用されるのと同じシグナリング情報を使用して決定され得る。場合によっては、マージモード候補および第1の動きベクトルおよび第2の動きベクトルは、別個のシグナリング情報を使用して決定され得る。
【0242】
ブロック1106において、プロセス1100は、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定することを含む。いくつかの態様では、選択された動きベクトル探索戦略は、第1の動きベクトルおよび/もしくは第2の動きベクトルに基づく、またはそれに対応する、1つまたは複数の制約と関連付けられる。1つの説明のための例では、選択された動きベクトル探索戦略は、バイラテラルマッチング(BM)動きベクトル探索戦略であり得る。場合によっては、マージモード候補のための動きベクトル探索戦略は、マルチパスデコーダ側動きベクトル精緻化戦略、小数サンプル精緻化戦略、双方向オプティカルフロー戦略、またはサブブロックベースのバイラテラルマッチング動きベクトル精緻化戦略のうちの少なくとも2つを含む、複数の動きベクトル探索戦略から選択され得る。いくつかの例では、選択された動きベクトル探索戦略は、マージモード候補が決定される前に決定され得る。たとえば、選択された動きベクトル探索戦略が(たとえば、上で説明されたように)決定され、マージ候補リストを生成するために使用され得る。マージモード候補は、生成されたマージ候補リストからの選択に基づいて決定され得る。いくつかの例では、選択されたマージモード候補は、選択された動きベクトル探索戦略が決定される前に決定され得る。たとえば、場合によっては、選択された探索戦略を使用せずに、マージ候補リストが生成されてもよく(たとえば、生成されたマージ候補リストは、複数の探索戦略の各々のそれぞれの探索戦略に対して同じであってもよい)、選択されたマージ候補は、選択された探索戦略の前に決定され得る。
【0243】
いくつかの例では、選択された動きベクトル探索戦略は、マルチパスデコーダ側動きベクトル精緻化(DMVR)探索戦略であり得る。たとえば、マルチパスDMVR探索戦略は、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスを含むことができ、1つまたは複数のサブブロックベースの動きベクトル精緻化パスも含むことができる。いくつかの例では、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスは、第1の動きベクトル差分および/または第2の動きベクトル差分に関連する第1の制約を使用して実行され得る。第1の動きベクトル差分は、第1の動きベクトルと精緻化された第1の動きベクトルとの間で決定される差分であり得る。第2の動きベクトル差分は、第2の動きベクトルと精緻化された第2の動きベクトルとの間で決定される差分であり得る。いくつかの例では、1つまたは複数のサブブロックベースの動きベクトル精緻化パスは、第1の制約とは異なる第2の制約を使用して実行され得る。上で説明されたように、第2の制約は、第1の動きベクトル差分および/または第2の動きベクトル差分のうちの少なくとも1つと関連付けられ得る。場合によっては、1つまたは複数のサブブロックベースの動きベクトル精緻化パスは、サブブロックベースのバイラテラルマッチング(BM)動きベクトル精緻化パスおよび/またはサブブロックベースの双方向オプティカルフロー(BDOF)動きベクトル精緻化パスのうちの少なくとも1つを含み得る。
【0244】
いくつかの例では、選択された動きベクトル探索戦略は、(たとえば、上で説明されたような)第1の動きベクトルまたは第2の動きベクトルのうちの少なくとも1つに対応する1つまたは複数の制約と関連付けられる。1つまたは複数の制約は、1つまたは複数のシグナリングされたシンタックス要素に基づいて決定され得る。たとえば、1つまたは複数の制約は、ブロックのためにシグナリングされるシンタックス要素に基づいて、現在ピクチャのブロックのために決定され得る。いくつかの態様では、1つまたは複数の制約は、第1の動きベクトルに関連する第1の動きベクトル差分(たとえば、第1の動きベクトルと精緻化された第1の動きベクトルとの差分)および第2の動きベクトルに関連する第2の動きベクトル差分(たとえば、第2の動きベクトルと精緻化された第2の動きベクトルとの差分)のうちの少なくとも1つと関連付けられる。いくつかの例では、1つまたは複数の制約は、第1の動きベクトル差分および第2の動きベクトル差分のためのミラーリング制約を含み得る。ミラーリング制約は、第1の動きベクトル差分および第2の動きベクトル差分を、大きさ(たとえば、絶対値)は等しいが符号は反対であるように設定することができる。場合によっては、1つまたは複数の制約は、第1の動きベクトル差分のためのゼロ値制約を含み得る(たとえば、第1の動きベクトル差分を0に等しく設定する)。いくつかの例では、1つまたは複数の制約は、第2の動きベクトル差分のためのゼロ値制約を含み得る(たとえば、第2の動きベクトル差分を0に等しく設定する)。いくつかの態様では、ゼロ値制約は、動きベクトル差分を一定に保つことを示すものであり得る。たとえば、ゼロ値制約に基づいて、プロセス1100は、第1の動きベクトル差分または第2の動きベクトル差分のうちの第1のものを一定値に保ち、第1の動きベクトル差分または第2の動きベクトル差分のうちの第2のものに対して探索することによって、選択された動きベクトル探索戦略を使用して、1つまたは複数の精緻化された動きベクトルを決定することを含み得る。たとえば、第1の動きベクトル差分は固定されてもよく、精緻化された動きベクトルを導出するために第2の動きベクトル差分の周りで探索が実行されてもよい。
【0245】
ブロック1108において、プロセス1100は、選択された動きベクトル探索戦略を使用して、第1の動きベクトル、第2の動きベクトル、および/または1つまたは複数の参照ピクチャに基づいて(たとえば、第1の動きベクトルおよび1つまたは複数の参照ピクチャに基づいて、第2の動きベクトルおよび1つまたは複数の参照ピクチャに基づいて、または第1の動きベクトル、第2の動きベクトル、および1つまたは複数の参照ピクチャに基づいて)、1つまたは複数の精緻化された動きベクトルを決定することを含む。場合によっては、1つまたは複数の精緻化された動きベクトルを決定することは、ビデオデータのブロックのための1つまたは複数の精緻化された動きベクトルを決定することを含み得る。いくつかの例では、1つまたは複数の精緻化された動きベクトルは、それぞれ、第1の動きベクトルおよび第2の動きベクトルのために決定される、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを含み得る。いくつかの例では、第1の精緻化された動きベクトルと第1の動きベクトルとの差分として第1の動きベクトル差分が決定され、第2の精緻化された動きベクトルと第2の動きベクトルとの差分として第2の動きベクトル差分が決定される。
【0246】
いくつかの例では、選択された動きベクトル探索戦略は、前に言及されたように、バイラテラルマッチング(BM)動きベクトル探索戦略である。選択された動きベクトル探索戦略がBM動きベクトル探索戦略であるとき、1つまたは複数の精緻化された動きベクトルを決定することは、第1の動きベクトルの周りで第1の参照ピクチャを探索することによって、第1の精緻化された動きベクトルを決定することを含み得る。第1の参照ピクチャは、選択された動きベクトル探索戦略に基づいて第1の動きベクトルの周りで探索され得る。第2の精緻化された動きベクトルは、選択された動きベクトル探索戦略に基づいて第2の動きベクトルの周りで第2の参照ピクチャを探索することによって決定され得る。選択された動きベクトル探索戦略は、動きベクトル差分制約(たとえば、第1の動きベクトル差分と第2の動きベクトル差分の大きさは等しいが符号は反対であるというミラーリング制約、第1の動きベクトル差分を0に等しく設定する制約、第2の動きベクトル差分を0に等しく設定する制約など)を含み得る。いくつかの例では、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルは、第1の精緻化された動きベクトルに関連する第1の参照ブロックと第2の精緻化された動きベクトルに関連する第2の参照ブロックとの差分を最小にすることによって決定され得る。
【0247】
ブロック1110において、プロセス1100は、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理することを含む。たとえば、
図1に示される復号デバイス112は、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理することができる。いくつかの例では、
図1に示される復号デバイス112のデコーダエンジン116は、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理することができる。
【0248】
いくつかの実装形態では、本明細書で説明されるプロセス(または方法)は、
図1に示されるシステム100などのコンピューティングデバイスまたは装置によって実行され得る。たとえば、プロセスは、
図1および
図12に示される符号化デバイス104によって、別のビデオソース側デバイスもしくはビデオ送信デバイスによって、
図1および
図13に示される復号デバイス112によって、ならびに/またはプレーヤデバイス、ディスプレイ、もしくは任意の他のクライアント側デバイスなど、別のクライアント側デバイスによって実行され得る。場合によっては、コンピューティングデバイスまたは装置は、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、および/またはプロセス1100のステップを実行するように構成される他のコンポーネントを含み得る。
【0249】
いくつかの例では、コンピューティングデバイスは、モバイルデバイス、タブレットコンピュータ、エクステンデッドリアリティ(extended reality: XR)デバイス(たとえば、ヘッドマウントディスプレイ(head-mounted display: HMD)などの仮想現実(virtual reality: VR)デバイス、HMDまたは拡張現実(augmented reality: AR)グラスなどのARデバイス、HMDまたは複合現実(mixed reality: MR)グラスなどのMRデバイスなど)、デスクトップコンピュータ、サーバコンピュータおよび/もしくはサーバシステム、車両もしくは車両のコンポーネントのコンピューティングシステム、または他のタイプのコンピューティングデバイスなどの、ワイヤレス通信デバイスを含み得る。コンピューティングデバイスのコンポーネント(たとえば、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、および/または他のコンポーネント)は、回路で実装され得る。たとえば、コンポーネントは、1つまたは複数のプログラム可能電子回路(たとえば、マイクロプロセッサ、グラフィクス処理装置(GPU)、デジタルシグナルプロセッサ(DSP)、中央処理装置(CPU)、および/または他の適切な電子回路)を含むことができる、電子回路もしくは他の電子ハードウェアを含むことができ、かつ/またはそれらを使用して実装されることが可能であり、かつ/あるいは、本明細書において説明される様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、もしくはこれらの任意の組合せを含むことができ、かつ/またはそれらを使用して実装されることが可能である。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオフレームを含むビデオデータ(たとえば、ビデオシーケンス)をキャプチャするように構成されたカメラを含み得る。いくつかの例では、ビデオデータをキャプチャするカメラまたは他のキャプチャデバイスは、コンピューティングデバイスとは別個であり、その場合、コンピューティングデバイスは、キャプチャされたビデオデータを受信または取得する。コンピューティングデバイスは、ビデオデータを通信するように構成されたネットワークインターフェースを含み得る。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信するように構成され得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオビットストリームのピクチャのサンプルなどの出力ビデオコンテンツを表示するためのディスプレイを含み得る。
【0250】
プロセスは、論理フロー図に関して説明され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実装され得る動作のシーケンスを表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることは意図されず、説明される任意の数の動作は、プロセスを実装するために任意の順序で、かつ/または並列に組み合わせられ得る。
【0251】
加えて、プロセスは、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実行されてもよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで、まとめて実行するコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装されてもよい。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってもよい。
【0252】
本明細書で論じられるコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)において実装され得る。いくつかの例では、システムは、宛先デバイスによって後で復号されるべき符号化されたビデオデータを提供するソースデバイスを含む。具体的には、ソースデバイスは、ビデオデータを、コンピュータ可読媒体を介して宛先デバイスに提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、幅広いデバイスのいずれかを備えてもよい。場合によっては、ソースデバイスおよび宛先デバイスは、ワイヤレス通信に対応し得る。
【0253】
宛先デバイスは、復号されるべき符号化されたビデオデータをコンピュータ可読媒体を介して受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスへ符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスが符号化されたビデオデータをリアルタイムで宛先デバイスに直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、任意のワイヤレス通信媒体または有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0254】
いくつかの例では、符号化されたデータは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、分散されるかまたはローカルにアクセスされる様々なデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイスによって生成される符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイスに送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワークアタッチトストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む任意の標準的なデータ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適したワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0255】
本開示の技法は、ワイヤレスの用途または設定に必ずしも限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のうちのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0256】
一例では、ソースデバイスは、ビデオソース、ビデオエンコーダ、および出力インターフェースを含む。宛先デバイスは、入力インターフェース、ビデオデコーダ、およびディスプレイデバイスを含み得る。ソースデバイスのビデオエンコーダは、本明細書で開示される技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0257】
上記の例示的なシステムは一例にすぎない。並行してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスによって実行されるが、技法はまた、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行され得る。その上、本開示の技法はまた、ビデオプロセッサによって実行され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスに送信するためのコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化および復号コンポーネントを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
【0258】
ビデオソースは、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオ、アーカイブされたビデオ、およびコンピュータで生成されたビデオの組合せを生成し得る。場合によっては、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラ電話またはビデオ電話を形成し得る。しかしながら、上で述べられたように、本開示で説明される技法は、一般にビデオコーディングに適用可能であることがあり、ワイヤレスおよび/または有線の適用例に適用されることがある。各事例において、キャプチャされた、プリキャプチャされた、またはコンピュータで生成されたビデオは、ビデオエンコーダによって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
【0259】
述べられたように、コンピュータ可読媒体は、ワイヤレス放送もしくは有線ネットワーク送信などの一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスクなどの記憶媒体(すなわち、非一時的記憶媒体)、あるいは他のコンピュータ可読媒体を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイスから符号化されたビデオデータを受信し、符号化されたビデオデータを宛先デバイスに提供し得る。同様に、ディスクスタンピング施設などの媒体製造施設のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信し、符号化されたビデオデータを含むディスクを製造し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むものと理解され得る。
【0260】
宛先デバイスの入力インターフェースは、コンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ブロックおよび他のコーディングされたユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、ビデオエンコーダによって定義されるシンタックス情報を含んでもよく、シンタックス情報はビデオデコーダによっても使用される。ディスプレイデバイスは、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちのいずれかを備え得る。本出願の様々な態様が説明された。
【0261】
符号化デバイス104および復号デバイス112の具体的な詳細は、それぞれ、
図12および
図13に示される。
図12は、本開示で説明される技法のうちの1つまたは複数を実施し得る例示的な符号化デバイス104を示すブロック図である。符号化デバイス104は、たとえば、本明細書で説明されるシンタックス構造(たとえば、VPS、SPS、PPS、または他のシンタックス要素のシンタックス構造)を生成し得る。符号化デバイス104は、ビデオスライス内のビデオブロックのイントラ予測およびインター予測コーディングを実行し得る。前に説明されたように、イントラコーディングは、所与のビデオフレームまたはピクチャ内の空間的冗長性を低減または除去するために、空間予測に少なくとも部分的に依拠する。インターコーディングは、ビデオシーケンスの隣接するまたは取り囲むフレーム内の時間的冗長性を低減または除去するために、時間予測に少なくとも部分的に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのうちのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのうちのいずれかを指すことがある。
【0262】
符号化デバイス104は、区分ユニット35、予測処理ユニット41、フィルタユニット63、ピクチャメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、およびイントラ予測処理ユニット46を含む。ビデオブロック再構築のために、符号化デバイス104はまた、逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。フィルタユニット63は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなどの、1つまたは複数のループフィルタを表すことが意図される。フィルタユニット63はループ内フィルタであるものとして
図12で示されるが、他の構成では、フィルタユニット63は、ループ後フィルタとして実装されてもよい。後処理デバイス57は、符号化デバイス104によって生成された符号化されたビデオデータに対して追加の処理を実行し得る。本開示の技法は、いくつかの事例では、符号化デバイス104によって実施され得る。しかしながら、他の事例では、本開示の技法のうちの1つまたは複数は、後処理デバイス57によって実施され得る。
【0263】
図12に示されるように、符号化デバイス104はビデオデータを受信し、区分ユニット35はデータをビデオブロックに区分する。区分することはまた、スライス、スライスセグメント、タイル、または他のより大きいユニットに区分すること、ならびに、たとえば、LCUおよびCUの四分木構造に従ったビデオブロック区分を含み得る。符号化デバイス104は、一般に、符号化されるべきビデオスライス内のビデオブロックを符号化するコンポーネントを示す。スライスは、複数のビデオブロックに(また場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤差結果(たとえば、コーディングレート、および歪みのレベルなど)に基づいて、現在ビデオブロックに対して、複数のイントラ予測コーディングモードのうちの1つ、または複数のインター予測コーディングモードのうちの1つなどの、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、残差ブロックデータを生成するために加算器50に、また参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器62に、得られたイントラまたはインターコーディングされたブロックを提供し得る。
【0264】
予測処理ユニット41内のイントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じフレームまたはスライスの中の1つまたは複数の隣接ブロックに対する現在ビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ブロックに対する現在ビデオブロックのインター予測コーディングを実行する。
【0265】
動き推定ユニット42は、ビデオシーケンスのための所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンスの中のビデオスライスを、Pスライス、Bスライス、またはGPBスライスとして指定し得る。動き推定ユニット42および動き補償ユニット44は高度に集積されてもよいが、概念的な目的のために別々に示される。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックの予測ユニット(PU)の変位を示し得る。
【0266】
予測ブロックは、絶対差分和(SAD)、二乗差分和(SSD)、または他の差分尺度によって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUと厳密に一致することが判明したブロックである。いくつかの例では、符号化デバイス104は、ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。たとえば、符号化デバイス104は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の小数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および小数ピクセル位置に対する動き探索を実行し、小数ピクセル位置を有する動きベクトルを出力し得る。
【0267】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライスの中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、その各々がピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送信する。
【0268】
動き補償ユニット44によって実行される動き補償は、場合によっては、サブピクセル精度への補間を実行する、動き推定によって決定された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴うことがある。現在ビデオブロックのPUの動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリスト内で動きベクトルが指す予測ブロックの位置を特定し得る。符号化デバイス104は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックに対する残差データを形成し、ルマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数のコンポーネントを表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に復号デバイス112が使用するための、ビデオブロックおよびビデオスライスに関連するシンタックス要素を生成し得る。
【0269】
イントラ予測処理ユニット46は、上で説明されたように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。具体的には、イントラ予測処理ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在ブロックを符号化してもよく、イントラ予測処理ユニット46は、テストされたモードから使用すべき適切なイントラ予測モードを選択してもよい。たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードに対してレート歪み分析を使用してレート歪み値を計算してもよく、テストされたモードの中から最良のレート歪み特性を有するイントラ予測モードを選択してもよい。レート歪み分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量、ならびに符号化されたブロックを生成するために使用されたビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックにとって最良のレート歪み値を示すかを決定するために、様々な符号化されたブロックに対する歪みおよびレートから比を計算し得る。
【0270】
いずれの場合も、ブロックのためのイントラ予測モードを選択した後、イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス104は、様々なブロックのための符号化コンテキストの定義、ならびにコンテキストの各々に対して使用すべき最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示を、送信されるビットストリーム構成データの中に含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)を含み得る。
【0271】
予測処理ユニット41がインター予測またはイントラ予測のいずれかを介して現在ビデオブロックのための予測ブロックを生成した後、符号化デバイス104は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックの中の残差ビデオデータは、1つまたは複数のTUに含められ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
【0272】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送信し得る。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を実行し得る。代替として、エントロピー符号化ユニット56が走査を実行し得る。
【0273】
量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化技法を実行することができる。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化されたビットストリームは、復号デバイス112へ送信されてもよく、または復号デバイス112による後の送信もしくは取出しのためにアーカイブされてもよい。エントロピー符号化ユニット56はまた、コーディングされている現在ビデオスライスの動きベクトルおよび他のシンタックス要素をエントロピー符号化し得る。
【0274】
逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためのピクセル領域における残差ブロックを再構築するために、それぞれ、逆量子化および逆変換を適用する。動き補償ユニット44は、参照ピクチャリスト内の参照ピクチャのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、1つまたは複数の補間フィルタを再構築された残差ブロックに適用し得る。加算器62は、ピクチャメモリ64に記憶するための参照ブロックを生成するために、動き補償ユニット44によって生成された動き補償予測ブロックに再構築された残差ブロックを加算する。参照ブロックは、後続のビデオフレームまたはピクチャの中のブロックをインター予測するための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0275】
このようにして、
図12の符号化デバイス104は、
図11に関して上で説明されたプロセスを含む、本明細書で説明される技法のいずれかを実行するように構成されたビデオエンコーダの例を表す。場合によっては、本開示の技法のうちのいくつかはまた、後処理デバイス57によって実施され得る。
【0276】
図13は、例示的な復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、フィルタユニット91、およびピクチャメモリ92を含む。予測処理ユニット81は、動き補償ユニット82およびイントラ予測処理ユニット84を含む。復号デバイス112は、いくつかの例では、
図12からの符号化デバイス104に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。
【0277】
復号プロセスの間、復号デバイス112は、符号化デバイス104によって送信された符号化されたビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化されたビデオビットストリームを受信する。いくつかの態様では、復号デバイス112は、符号化デバイス104から符号化されたビデオビットストリームを受信し得る。いくつかの態様では、復号デバイス112は、サーバ、媒体認識ネットワーク要素(MANE)、ビデオエディタ/スプライサ、または上で説明された技法のうちの1つまたは複数を実装するように構成される他のそのようなデバイスなどのネットワークエンティティ79から、符号化されたビデオビットストリームを受信し得る。ネットワークエンティティ79は、符号化デバイス104を含んでもよく、または含まなくてもよい。本開示で説明される技法のうちのいくつかは、ネットワークエンティティ79が符号化されたビデオビットストリームを復号デバイス112に送信する前に、ネットワークエンティティ79によって実施され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ79および復号デバイス112は、別個のデバイスの一部であり得るが、他の事例では、ネットワークエンティティ79に関して説明される機能は、復号デバイス112を備える同じデバイスによって実行され得る。
【0278】
復号デバイス112のエントロピー復号ユニット80は、ビットストリームをエントロピー復号して、量子化された係数、動きベクトル、および他のシンタックス要素を生成する。エントロピー復号ユニット80は、動きベクトルおよび他のシンタックス要素を予測処理ユニット81に転送する。復号デバイス112は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。エントロピー復号ユニット80は、VPS、SPS、およびPPSなどの1つまたは複数のパラメータセットの中の固定長シンタックス要素と可変長シンタックス要素の両方を処理および構文解析し得る。
【0279】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックに関する予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリスト内の参照ピクチャのうちの1つから生成され得る。復号デバイス112は、ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構築し得る。
【0280】
動き補償ユニット82は、動きベクトルおよび他のシンタックス要素を構文解析することによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための1つまたは複数の参照ピクチャリストについての構築情報、スライスの各々のインター符号化されたビデオブロックのための動きベクトル、スライスの各々のインターコーディングされたビデオブロックのためのインター予測ステータス、および現在ビデオスライスの中のビデオブロックを復号するための他の情報を決定するために、パラメータセットの中の1つまたは複数のシンタックス要素を使用し得る。
【0281】
動き補償ユニット82は、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、ビデオブロックの符号化の間に符号化デバイス104によって使用されたような補間フィルタを使用して、参照ブロックのサブ整数ピクセルに対する補間値を計算し得る。この場合、動き補償ユニット82は、符号化デバイス104によって使用された補間フィルタを、受信されたシンタックス要素から決定してもよく、予測ブロックを生成するためにその補間フィルタを使用してもよい。
【0282】
逆量子化ユニット86は、ビットストリームの中で提供されエントロピー復号ユニット80によって復号された量子化された変換係数を逆量子化または量子化解除する。逆量子化プロセスは、ビデオスライスの中の各ビデオブロックについて符号化デバイス104によって計算される量子化パラメータを使用して量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定することを含み得る。逆変換処理ユニット88は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換(たとえば、逆DCTまたは他の適切な逆変換)、逆整数変換、または概念的に類似する逆変換プロセスを適用する。
【0283】
動き補償ユニット82が動きベクトルおよび他のシンタックス要素に基づいて現在ビデオブロックに対する予測ブロックを生成した後、復号デバイス112は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数のコンポーネントを表す。所望される場合、(コーディングループの中またはコーディングループの後のいずれかの)ループフィルタも、ピクセル遷移を平滑化するために、またはビデオ品質を他の方法で改善するために使用され得る。フィルタユニット91は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなどの、1つまたは複数のループフィルタを表すことが意図される。フィルタユニット91はループ内フィルタであるものとして
図8に示されるが、他の構成では、フィルタユニット91は、ループ後フィルタとして実装されてもよい。所与のフレームまたはピクチャの中の復号されたビデオブロックは次いで、ピクチャメモリ92に記憶され、ピクチャメモリ92は、後続の動き補償のために使用される参照ピクチャを記憶する。ピクチャメモリ92はまた、
図1に示されるビデオ宛先デバイス122などのディスプレイデバイス上で後で提示できるように、復号されたビデオを記憶する。
【0284】
このようにして、
図13の復号デバイス112は、
図11に関して上で説明されたプロセスを含む、本明細書で説明される技法のいずれかを実行するように構成されたビデオデコーダの例を表す。
【0285】
本明細書で使用される「コンピュータ可読媒体」という用語は、限定はされないが、ポータブルまたは非ポータブルの記憶デバイス、光記憶デバイス、ならびに命令および/またはデータを記憶、格納、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶されることが可能な、かつワイヤレスにまたは有線接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含んでもよい。非一時的媒体の例は、限定はされないが、磁気ディスクもしくはテープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含んでもよい。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表すことがある、コードおよび/または機械実行可能命令を記憶していることがある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受けることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡され、転送され、または送信されてもよい。
【0286】
いくつかの態様では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含み得る。しかしながら、述べられるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明確に除外する。
【0287】
本明細書で提供される態様および例の完全な理解を与えるために、上記の説明において具体的な詳細が提供されている。しかしながら、それらの態様が、これらの具体的な詳細なしに実践され得ることが、当業者により理解されるだろう。説明を明快にするために、いくつかの事例では、本技術は、デバイスと、デバイスコンポーネントと、ソフトウェア、またはハードウェアとソフトウェアの組合せにおいて具現化された方法におけるステップまたはルーチンとを備える機能ブロックを含む個々の機能ブロックを含むものとして提示されることがある。図に示されるものおよび/または本明細書で説明されるもの以外の追加のコンポーネントが使用されてもよい。たとえば、不必要な詳細で態様を不明瞭にしないように、回路、システム、ネットワーク、プロセス、または他のコンポーネントが、ブロック図の形態でコンポーネントとして示されることがある。他の事例では、態様を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示されることがある。
【0288】
個々の態様が、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上で説明されることがある。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並列にまたは同時に実行することができる。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了するときに終了するが、図に含まれない追加のステップを有することができる。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに対応することができる。
【0289】
上で説明された例によるプロセスおよび方法は、記憶されたまたは別様にコンピュータ可読媒体から入手可能なコンピュータ実行可能命令を使用して実施され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、もしくは処理デバイスに特定の機能もしくは機能のグループを実行させるか、または特定の機能もしくは機能のグループを実行するように汎用コンピュータ、専用コンピュータ、もしくは処理デバイスを他の方法で構成する、命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、アセンブリ言語、ファームウェア、ソースコードなどの、バイナリ、中間フォーマット命令であってもよい。命令、使用される情報、および/または説明された例による方法の間に作成される情報を記憶するために使用されることがあるコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続された記憶デバイスなどを含む。
【0290】
これらの開示に従ってプロセスおよび方法を実施するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのうちのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体の中に記憶され得る。プロセッサは必要なタスクを実行し得る。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他の小型フォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明された機能はまた、周辺装置またはアドインカードにおいて具現化され得る。そのような機能はまた、さらなる例として、異なるチップのうちの回路基板上、または単一のデバイスの中で実行する異なるプロセス上で実施され得る。
【0291】
命令、そのような命令を伝えるための媒体、命令を実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明された機能を提供するための例示的な手段である。
【0292】
上記の説明では、本出願の態様はそれらの特定の態様を参照して説明されるが、本出願がそれらに限定されないことを当業者は認識するだろう。したがって、本出願の例示的な態様が本明細書で詳細に説明されているが、本発明の概念が別様に、様々に具現化および利用され得ること、ならびに従来技術によって限定される場合を除き、添付の特許請求の範囲がそのような変形を含むものと解釈されることが意図されることを理解されたい。上で説明された本出願の様々な特徴および態様は、個別にまたは共同で使用され得る。さらに、態様は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明されるもの以外の任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は限定的ではなく例示的と見なされるべきである。例示の目的のために、方法は特定の順序で説明された。代替の態様では、方法は説明された順序とは異なる順序で実行されてもよいことを理解されたい。
【0293】
本明細書において使用される、未満(「<」)およびよりも大きい(「>」)という記号または用語は、本記述の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられ得ることを、当業者は理解するだろう。
【0294】
コンポーネントがいくつかの動作を実行する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実行するように電子回路もしくは他のハードウェアを設計することによって、動作を実行するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の適切な電子回路)をプログラムすることによって、またはそれらの任意の組合せで達成され得る。
【0295】
「に結合される」という句は、直接もしくは間接的にのいずれかで別のコンポーネントに物理的に接続される任意のコンポーネント、および/または、直接もしくは間接的にのいずれかで別のコンポーネントと通信している(たとえば、有線もしくはワイヤレス接続および/または他の適切な通信インターフェースを介して他のコンポーネントに接続された)任意のコンポーネントを指す。
【0296】
集合「のうちの少なくとも1つ」および/または集合のうちの「1つまたは複数」を記載する本開示における請求項の文言または他の文言は、集合の1つのメンバーまたは集合の(任意の組合せでの)複数のメンバーが請求項を満たすことを示す。たとえば、「AおよびBのうちの少なくとも1つ」および「AまたはBのうちの少なくとも1つ」を記載する請求項の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」または「A、B、またはCのうちの少なくとも1つ」を記載する請求項の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」という文言は、セットに列挙される項目にセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」および「AまたはBのうちの少なくとも1つ」を記載する請求項の文言は、A、B、またはAおよびBを意味することができ、加えて、AおよびBの集合の中で列挙されない項目を含むことができる。
【0297】
本明細書で開示された態様に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装されてもよい。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、全般にそれらの機能に関して上で説明されている。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明される機能を具体的な適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本出願の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0298】
本明細書で説明される技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのうちのいずれかにおいて実装されてもよい。モジュールまたはコンポーネントとして説明されるあらゆる特徴が、集積論理デバイスの中で一緒に、または別個であるが相互動作可能な論理デバイスとして別々に実装されてもよい。ソフトウェアで実装される場合、技法は、実行されると、上で説明された方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備える、コンピュータ可読データ記憶媒体によって少なくとも部分的に実現されてもよい。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光データ記憶媒体などの、メモリまたはデータ記憶媒体を備えてもよい。技法は、追加または代替として、伝搬される信号または波などの、命令またはデータ構造の形態でのプログラムコードを搬送または通信するとともに、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって少なくとも部分的に実現されてもよい。
【0299】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の均等な集積論理回路もしくは個別論理回路などの、1つまたは複数のプロセッサを含み得るプロセッサによって実行されてもよい。そのようなプロセッサは、本開示で説明される技法のうちのいずれかを実行するように構成されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明される技法の実装に適した任意の他の構造もしくは装置のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュールに設けられてもよく、または複合ビデオエンコーダデコーダ(コーデック)の中に組み込まれてもよい。
【0300】
本開示の説明のための態様は、以下を含む。
【0301】
態様1:メモリと、メモリに結合された1つまたは複数のプロセッサとを備える、ビデオデータを処理するための装置。1つまたは複数のプロセッサは、ビデオデータの現在ピクチャを取得し、ビデオデータから現在ピクチャのための参照ピクチャを取得し、現在ピクチャからマージモード候補を決定し、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定し、複数の動きベクトル探索戦略からマージモード候補のための動きベクトル探索戦略を選択し、動きベクトル探索戦略を使用して、第1の動きベクトル、第2の動きベクトル、および参照ピクチャから精緻化された動きベクトルを導出し、精緻化された動きベクトルを使用して、マージモード候補を処理するように構成される。
【0302】
態様2:マージモード候補がマージ候補リストから選択される、態様1の装置。
【0303】
態様3:マージ候補リストが、マージモード候補の空間隣接ブロックからの空間動きベクトル予測子、マージモード候補の同一位置ブロックからの時間動きベクトル予測子、履歴テーブルからの履歴ベース動きベクトル予測子、ペア毎平均動きベクトル予測子、およびゼロ値動きベクトルのうちの1つまたは複数から構築される、態様2の装置。
【0304】
態様4:1つまたは複数のプロセッサが、2つの異なる参照ピクチャから取得された2つの予測信号を平均することによって、第1の動きベクトルおよび第2の動きベクトルを使用して動きベクトル双予測信号を生成するように構成される、態様1から3のいずれかの装置。
【0305】
態様5:複数の動きベクトル探索戦略が小数サンプル精緻化戦略を含む、態様1から4のいずれかの装置。
【0306】
態様6:複数の動きベクトル探索戦略が双予測オプティカルフロー戦略を含む、態様5の装置。
【0307】
態様7:複数の動きベクトル探索戦略が、サブブロックベースのバイラテラルマッチング動きベクトル精緻化戦略を含む、態様6の装置。
【0308】
態様8:第1の動きベクトルおよび第2の動きベクトルが1つまたは複数の制約と関連付けられる、態様1から7のいずれかの装置。
【0309】
態様9:1つまたは複数の制約がミラーリング制約を含む、態様8の装置。
【0310】
態様10:1つまたは複数の制約が、第1の動きベクトル差分のためのゼロ値制約を含む、態様1から9のいずれかの装置。
【0311】
態様11:1つまたは複数の制約が、第2の動きベクトル差分のためのゼロ値制約を含む、態様1から9のいずれかの装置。
【0312】
態様12:ビデオデータが、1つまたは複数の制約を示すシンタックスを含む、態様1から11のいずれかの装置。
【0313】
態様13:動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略を備える、態様1から12のいずれかの装置。
【0314】
態様14:マルチパスデコーダ側動きベクトル精緻化戦略が、同じ精緻化タイプの2つ以上の精緻化パスを含む、態様13の装置。
【0315】
態様15:マルチパスデコーダ側動きベクトル精緻化戦略が、同じ精緻化タイプとは異なるタイプの1つまたは複数の精緻化パスを含む、態様14の装置。
【0316】
態様16:同じ精緻化タイプの2つ以上の精緻化パスが、ブロックベースのバイラテラルマッチング動きベクトル精緻化、サブブロックベースのバイラテラルマッチング動きベクトル精緻化、またはサブブロックベースの双方向オプティカルフロー動きベクトル精緻化である、態様14または15のいずれかの装置。
【0317】
態様17:複数の動きベクトル探索戦略がマルチパス戦略の複数のサブセットを備える、態様1から16のいずれかの装置。
【0318】
態様18:マルチパス戦略の複数のサブセットが、ビデオデータの1つまたは複数のシンタックス要素においてシグナリングされる、態様17の装置。
【0319】
態様19:精緻化された動きベクトルを導出することが、動きベクトル探索戦略に従って、複数の動きベクトル候補ペアのためのマッチングコストを計算することを備える、態様1から18のいずれかの装置。
【0320】
態様20:動きベクトル探索戦略が、ビデオデータから決定されるマッチングコストに基づいて適応的に選択される、態様1から19のいずれかの装置。
【0321】
態様21:動きベクトル探索戦略が、ビデオデータに基づいて動きベクトル探索戦略のパスの数を適応的に設定するために選択される、態様1から19のいずれかの装置。
【0322】
態様22:動きベクトル探索戦略が、ビデオデータに基づいて精緻化された動きベクトルのための候補を決定するための探索パターンを適応的に設定するために選択される、態様1から19のいずれかの装置。
【0323】
態様23:動きベクトル探索戦略が、ビデオデータに基づいて精緻化された動きベクトルのための候補のリストを生成するための基準のセットを適応的に設定するために選択される、態様1から19のいずれかの装置。
【0324】
態様24:動きベクトル探索戦略が、ビデオデータからデコーダ側動きベクトル精緻化制約に基づいて適応的に実行される、態様1から19のいずれかの装置。
【0325】
態様25:動きベクトル探索戦略が、ビデオデータの中のマージモード候補のためのブロックサイズに基づいて適応的に実行される、態様1から19のいずれかの装置。
【0326】
態様26:1つまたは複数のプロセッサが複数の仮説予測を無効にするように構成される、態様1から25のいずれかの装置。
【0327】
態様27:1つまたは複数のプロセッサが、動きベクトル探索戦略とともに複数の仮説予測を実行するように構成される、態様1から26のいずれかの装置。
【0328】
態様28:1つまたは複数のプロセッサが、マージモード候補を含むマージ候補リストを生成するように構成される、態様1から27のいずれかの装置。
【0329】
態様29:マージ候補リストを生成するために、1つまたは複数のプロセッサが、適応マージモードに関連する1つまたは複数の条件(たとえば、adaptive_bm_modeのための条件)に基づいて、マージ候補リストの中の候補の数が候補の最大の数未満であることに基づいてマージ候補リストに追加するための1つまたは複数のデフォルト候補を決定するように構成される、態様28の装置。
【0330】
態様30:マージ候補リストを生成するために、1つまたは複数のプロセッサが、適応マージモードに関連する制約に関連する1つまたは複数の条件(たとえば、bm_dirに従った条件)に基づいて、マージ候補リストの中の候補の数が候補の最大の数未満であることに基づいてマージ候補リストに追加するための1つまたは複数のデフォルト候補を決定するように構成される、態様28の装置。
【0331】
態様31:装置がモバイルデバイスである、態様1から30のいずれかの装置。
【0332】
態様32:1つまたは複数のフレームをキャプチャするように構成されるカメラをさらに備える、態様1から31のいずれかの装置。
【0333】
態様33:1つまたは複数のフレームを表示するように構成されるディスプレイをさらに備える、態様1から32のいずれかの装置。
【0334】
態様34:態様1から33の動作のいずれかに従ってビデオデータを処理する方法。
【0335】
態様35:デバイスの1つまたは複数のプロセッサによって実行されると、デバイスに、態様1から33のいずれかの動作を実行させる命令を備える、コンピュータ可読記憶媒体。
【0336】
態様36:態様1から33の動作のいずれかを実行するための1つまたは複数の手段を備える、装置。
【0337】
態様37:ビデオデータを処理するための装置であって、少なくとも1つのメモリと、少なくとも1つのメモリに結合された少なくとも1つのプロセッサとを備え、少なくとも1つのプロセッサが、現在ピクチャのための1つまたは複数の参照ピクチャを取得し、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定し、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定し、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルのうちの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定し、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理するように構成される、装置。
【0338】
態様38.選択された動きベクトル探索戦略が、第1の動きベクトルまたは第2の動きベクトルのうちの少なくとも1つに少なくとも基づいて1つまたは複数の制約と関連付けられる、態様37の装置。
【0339】
態様39.1つまたは複数の制約が、ブロックのためにシグナリングされるシンタックス要素に基づいて、ビデオデータのブロックのために決定される、態様38の装置。
【0340】
態様40.1つまたは複数の制約が、第1の動きベクトルに関連する第1の動きベクトル差分または第2の動きベクトルに関連する第2の動きベクトル差分のうちの少なくとも1つと関連付けられる、態様38または39のいずれかの装置。
【0341】
態様41.1つまたは複数の精緻化された動きベクトルが、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを含み、少なくとも1つのプロセッサが、第1の精緻化された動きベクトルと第1の動きベクトルとの差分として第1の動きベクトル差分を決定し、第2の精緻化された動きベクトルと第2の動きベクトルとの差分として第2の動きベクトル差分を決定するように構成される、態様40の装置。
【0342】
態様42.1つまたは複数の制約が、第1の動きベクトル差分および第2の動きベクトル差分のためのミラーリング制約を含み、第1の動きベクトル差分および第2の動きベクトル差分が、同じ大きさおよび異なる符号を有する、態様40または41のいずれかの装置。
【0343】
態様43.1つまたは複数の制約が、第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つのためのゼロ値制約を含む、態様40から42のいずれかの装置。
【0344】
態様44.ゼロ値制約に基づいて、少なくとも1つのプロセッサが、第1の動きベクトル差分または第2の動きベクトル差分のうちの第1のものを一定値に保ち、第1の動きベクトル差分または第2の動きベクトル差分のうちの第2のものに対して探索することによって、選択された動きベクトル探索戦略を使用して、1つまたは複数の精緻化された動きベクトルを決定するように構成される、態様43の装置。
【0345】
態様45.選択された動きベクトル探索戦略が、バイラテラルマッチング(BM)動きベクトル探索戦略である、態様37から44のいずれかの装置。
【0346】
態様46.少なくとも1つのプロセッサが、選択された動きベクトル探索戦略に関連する1つまたは複数の制約に基づいて1つまたは複数の精緻化された動きベクトルを決定するように構成され、1つまたは複数の制約に基づいて1つまたは複数の精緻化された動きベクトルを決定するために、少なくとも1つのプロセッサが、選択された動きベクトル探索戦略に基づいて第1の動きベクトルの周りで第1の参照ピクチャを探索することによって第1の精緻化された動きベクトルを決定し、選択された動きベクトル探索戦略に基づいて第2の動きベクトルの周りで第2の参照ピクチャを探索することによって第2の精緻化された動きベクトルを決定するように構成され、1つまたは複数の制約が動きベクトル差分制約を含む、態様37から45のいずれかの装置。
【0347】
態様47.第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを決定するために、少なくとも1つのプロセッサが、第1の精緻化された動きベクトルに関連する第1の参照ブロックと第2の精緻化された動きベクトルに関連する第2の参照ブロックとの差分を最小にするように構成される、態様46の装置。
【0348】
態様48.複数の動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略、小数サンプル精緻化戦略、双方向オプティカルフロー戦略、またはサブブロックベースのバイラテラルマッチング動きベクトル精緻化戦略のうちの少なくとも2つを含む、態様37から47のいずれかの装置。
【0349】
態様49.選択された動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略を備える、態様37から48のいずれかの装置。
【0350】
態様50.マルチパスデコーダ側動きベクトル精緻化戦略が、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたは1つまたは複数のサブブロックベースの動きベクトル精緻化パスのうちの少なくとも1つを含む、態様49の装置。
【0351】
態様51.少なくとも1つのプロセッサが、第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第1の制約を使用して、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスを実行し、第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第2の制約を使用して、1つまたは複数のサブブロックベースの動きベクトル精緻化パスを実行するように構成され、第1の制約が第2の制約と異なる、態様50の装置。
【0352】
態様52.1つまたは複数のサブブロックベースの動きベクトル精緻化パスが、サブブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたはサブブロックベースの双方向オプティカルフロー動きベクトル精緻化パスのうちの少なくとも1つを含む、態様50または51のいずれかの装置。
【0353】
態様53.装置がワイヤレス通信デバイスである、態様37から52のいずれかの装置。
【0354】
態様54.少なくとも1つのプロセッサが、ビデオデータのブロックのための1つまたは複数の精緻化された動きベクトルを決定するように構成され、マージモード候補がブロックの隣接ブロックを含む、態様37から53のいずれかの装置。
【0355】
態様55:ビデオデータを処理するための方法であって、現在ピクチャのための1つまたは複数の参照ピクチャを取得するステップと、マージモード候補のための第1の動きベクトルおよび第2の動きベクトルを特定するステップと、複数の動きベクトル探索戦略からマージモード候補のための選択された動きベクトル探索戦略を決定するステップと、選択された動きベクトル探索戦略を使用して、第1の動きベクトルまたは第2の動きベクトルのうちの少なくとも1つおよび1つまたは複数の参照ピクチャに基づいて、1つまたは複数の精緻化された動きベクトルを決定するステップと、1つまたは複数の精緻化された動きベクトルを使用してマージモード候補を処理するステップとを備える、方法。
【0356】
態様56.選択された動きベクトル探索戦略が、第1の動きベクトルまたは第2の動きベクトルのうちの少なくとも1つに少なくとも基づいて1つまたは複数の制約と関連付けられる、態様55の方法。
【0357】
態様57.1つまたは複数の制約が、ブロックのためにシグナリングされるシンタックス要素に基づいて、ビデオデータのブロックのために決定される、態様56の方法。
【0358】
態様58.1つまたは複数の制約が、第1の動きベクトルに関連する第1の動きベクトル差分または第2の動きベクトルに関連する第2の動きベクトル差分のうちの少なくとも1つと関連付けられる、態様56または57のいずれかの方法。
【0359】
態様59.1つまたは複数の精緻化された動きベクトルが、第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを含み、第1の精緻化された動きベクトルと第1の動きベクトルとの差分として第1の動きベクトル差分を決定するステップと、第2の精緻化された動きベクトルと第2の動きベクトルとの差分として第2の動きベクトル差分を決定するステップとをさらに備える、態様58の方法。
【0360】
態様60.1つまたは複数の制約が、第1の動きベクトル差分および第2の動きベクトル差分のためのミラーリング制約を含み、第1の動きベクトル差分および第2の動きベクトル差分が、同じ大きさおよび異なる符号を有する、態様58または59のいずれかの方法。
【0361】
態様61.1つまたは複数の制約が、第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つのためのゼロ値制約を含む、態様58から60のいずれかの方法。
【0362】
態様62.ゼロ値制約に基づいて、1つまたは複数の動き精緻化された動きベクトルが、第1の動きベクトル差分または第2の動きベクトル差分のうちの第1のものを一定値に保ち、第1の動きベクトル差分または第2の動きベクトル差分のうちの第2のものに対して探索することによって、選択された動きベクトル探索戦略を使用して決定される、態様61の方法。
【0363】
態様63.選択された動きベクトル探索戦略が、バイラテラルマッチング(BM)動きベクトル探索戦略である、態様55から62のいずれかの方法。
【0364】
態様64.1つまたは複数の精緻化された動きベクトルが、選択された動きベクトル探索戦略に関連する1つまたは複数の制約に基づいて決定され、1つまたは複数の制約に基づいて1つまたは複数の精緻化された動きベクトルを決定するステップが、選択された動きベクトル探索戦略に基づいて第1の動きベクトルの周りで第1の参照ピクチャを探索することによって第1の精緻化された動きベクトルを決定するステップと、選択された動きベクトル探索戦略に基づいて第2の動きベクトルの周りで第2の参照ピクチャを探索することによって第2の精緻化された動きベクトルを決定するステップとを備え、1つまたは複数の制約が動きベクトル差分制約を含む、態様55から63のいずれかの方法。
【0365】
態様65.第1の精緻化された動きベクトルおよび第2の精緻化された動きベクトルを決定するステップが、第1の精緻化された動きベクトルに関連する第1の参照ブロックと第2の精緻化された動きベクトルに関連する第2の参照ブロックとの差分を最小にするステップを備える、態様64の方法。
【0366】
態様66.複数の動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略、小数サンプル精緻化戦略、双方向オプティカルフロー戦略、またはサブブロックベースのバイラテラルマッチング動きベクトル精緻化戦略のうちの少なくとも2つを含む、態様55から65のいずれかの方法。
【0367】
態様67.選択された動きベクトル探索戦略が、マルチパスデコーダ側動きベクトル精緻化戦略を備える、態様55から66のいずれかの方法。
【0368】
態様68.マルチパスデコーダ側動きベクトル精緻化戦略が、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたは1つまたは複数のサブブロックベースの動きベクトル精緻化パスのうちの少なくとも1つを含む、態様67の方法。
【0369】
態様69.第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第1の制約を使用して、1つまたは複数のブロックベースのバイラテラルマッチング動きベクトル精緻化パスを実行するステップと、第1の動きベクトル差分または第2の動きベクトル差分のうちの少なくとも1つに関連する第2の制約を使用して、1つまたは複数のサブブロックベースの動きベクトル精緻化パスを実行するステップとをさらに備え、第1の制約が第2の制約と異なる、態様68の方法。
【0370】
態様70.1つまたは複数のサブブロックベースの動きベクトル精緻化パスが、サブブロックベースのバイラテラルマッチング動きベクトル精緻化パスまたはサブブロックベースの双方向オプティカルフロー動きベクトル精緻化パスのうちの少なくとも1つを含む、態様68または69のいずれかの方法。
【0371】
態様71:態様37から70の動作のいずれかに従ってビデオデータを処理する方法。
【0372】
態様72:デバイスの1つまたは複数のプロセッサによって実行されると、デバイスに、態様37から70のいずれかの動作を実行させる命令を備える、コンピュータ可読記憶媒体。
【0373】
態様73:態様37から70の動作のいずれかを実行するための1つまたは複数の手段を備える、装置。
【符号の説明】
【0374】
35 区分ユニット
41 予測処理ユニット
42 動き推定ユニット
44 動き補償ユニット
46 イントラ予測処理ユニット
50 加算器
52 変換処理ユニット
54 量子化ユニット
56 エントロピー符号化ユニット
57 後処理デバイス
58 逆量子化ユニット
60 逆変換処理ユニット
62 加算器
63 フィルタユニット
64 ピクチャメモリ
79 ネットワークエンティティ
80 エントロピー復号ユニット
81 予測処理ユニット
82 動き補償ユニット
84 イントラ予測処理ユニット
86 逆量子化ユニット
88 逆変換処理ユニット
90 加算器
91 フィルタユニット
92 ピクチャメモリ
102 ビデオソース
104 符号化デバイス、ビデオ符号化デバイス
106 エンコーダエンジン
108 ストレージ
110 出力
112 復号デバイス
114 入力
116 デコーダエンジン
118 ストレージ
120 通信リンク
122 ビデオ宛先デバイス
402 現在ブロック
404 参照ブロック
422 現在ブロック
424 第1の参照ブロック
426 第2の参照ブロック
500 処理ブロック、ブロック
610 現在ピクチャ
612 現在CU
615 現在参照ピクチャ
630 同一位置ピクチャ
632 同一位置CU
635 同一位置参照ピクチャ
810 現在ピクチャ
812 双予測マージ候補
822 第2の予測子、初期予測子
824 精緻化された候補ブロック
830 第1の参照ピクチャ
832 第1の予測子、初期予測子
834 精緻化された候補ブロック
910 サブブロック
970 行
980 列
1020 第1の探索領域
1030 第2の探索領域
1040 第3の探索領域
1050 第4の探索領域
【国際調査報告】