IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

特表2024-508303ビデオストリームのインター予測ビデオブロックをデコードする方法及び電子デバイス
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-26
(54)【発明の名称】ビデオストリームのインター予測ビデオブロックをデコードする方法及び電子デバイス
(51)【国際特許分類】
   H04N 19/52 20140101AFI20240216BHJP
   H04N 19/523 20140101ALI20240216BHJP
   H04N 19/46 20140101ALI20240216BHJP
【FI】
H04N19/52
H04N19/523
H04N19/46
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023553176
(86)(22)【出願日】2022-04-13
(85)【翻訳文提出日】2023-09-01
(86)【国際出願番号】 US2022024633
(87)【国際公開番号】W WO2023069140
(87)【国際公開日】2023-04-27
(31)【優先権主張番号】63/270,397
(32)【優先日】2021-10-21
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/289,122
(32)【優先日】2021-12-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/708,801
(32)【優先日】2022-03-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャオ,リアン
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リウ,シャン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA05
5C159NN11
5C159NN14
5C159NN21
5C159NN28
5C159RC16
5C159RC38
5C159UA02
5C159UA05
(57)【要約】
本開示は、ビデオブロックをインター予測するための運動ベクトル差分のエンコーディング及びデコーディングに関する。ビデオストリームのインター予測ビデオブロックをデコーディングするための実施例が開示されている。本方法は、インター予測ビデオブロックに関連付けられた動きベクトルが、動きベクトルと参照動きベクトルとの間の動きベクトル差分(MVD)としてエンコードされることを決定するステップと;ビデオストリームから、動きベクトル差分についての複数の所定の大きさ範囲の中のMVDの大きさ範囲の表示を取得するステップと;大きさ範囲に従ってMVDのためのピクセル解像度を決定するステップと;ピクセル解像度に基づいてビデオストリーム内の付加的なMVD情報を識別するステップと;ビデオストリームから付加的なMVD情報を抽出するステップと;動きベクトルに関連付けられる基準フレーム、基準動きベクトル、付加的なMVD情報、及びピクセル解像度に基づいてインター予測ビデオブロックをデコードするステップと、を含む。
【特許請求の範囲】
【請求項1】
デコーダによって実行される、ビデオストリームのインター予測ビデオブロックをデコードする方法であって:
前記ビデオストリームを受信するステップと;
前記インター予測ビデオブロックと関連付けられた参照動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされることを決定するステップであって、前記参照動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされない限り、参照フレームリスト0及び参照フレームリスト1のうちの1つのみの参照画像に対応する、ステップと;
前記ビデオストリームから、前記動きベクトル差分についての複数の所定の大きさ範囲の中の前記MVDの大きさ範囲の表示を取得するステップと;
前記大きさ範囲に従って前記MVDのためのピクセル解像度を決定するステップと;
前記ピクセル解像度に基づいて前記ビデオストリーム内の付加的なMVD情報を識別するステップと;
前記ビデオストリームから前記付加的なMVD情報を抽出するステップと;
前記動きベクトルに関連付けられる参照フレーム、前記参照動きベクトル、前記付加的なMVD情報、及び前記ピクセル解像度に基づいて前記インター予測ビデオブロックをデコードするステップと、
を含む方法。
【請求項2】
ピクセル解像度は2n-pel(2nピクセル)であり、nは整数であり、-6以上11以下である、
請求項1記載の方法。
【請求項3】
動きベクトル差分についての前記複数の所定の大きさ範囲は、所定の方法で、非昇順のピクセル解像度と関連付けられ、より高いピクセル解像度は、より小さいピクセル解像度値と関連付けられる、
請求項1記載の方法。
【請求項4】
前記MVDの大きさ範囲の表示を取得するステップは:
MVDクラスの所定のセットの中のMVDのMVDクラスを示す前記ビデオストリームから第1所定構文要素を抽出するステップであって、より低いMVDクラスはより小さいMVD大きさ範囲に対応する、ステップと;
前記MVDクラスに従って前記MVDの大きさ範囲を決定するステップと;を含む、
請求項1乃至3いずれか1項記載の方法。
【請求項5】
前記大きさ範囲に従って前記MVDのための前記ピクセル解像度を決定するステップは:
前記大きさ範囲が所定のMVD範囲閾値レベルよりも高いかどうかを決定するステップと;
前記大きさ範囲が前記所定のMVD範囲閾値レベルよりも高いかどうかを決定すると、前記ピクセル解像度が整数のピクセル数であることを決定するステップと;
前記大きさ範囲が前記所定のMVD範囲閾値レベルよりも高いかどうかを決定すると、前記ピクセル解像度がピクセルの部分であることを決定するステップと、を含む
請求項4記載の方法。
【請求項6】
前記ピクセル解像度に基づいて前記ビデオストリームの付加的なMVD情報を識別するステップは:
第2所定構文要素に従って前記ビデオストリームをパースし、前記MVDの整数ピクセル部分を取得する、ステップと;
前記ピクセル解像度がピクセルの部分であると決定すると、少なくとも第3所定構文要素に従って前記ビデオストリームをさらにパースし、前記MVDの分数ピクセル部分を取得する、ステップと、を含む、
請求項5記載の方法。
【請求項7】
前記MVD範囲閾値のレベルは、MVDクラスの所定のセットの中で最も低いもの又は2番目に低いものを含む、
請求項5記載の方法。
【請求項8】
前記所定のMVD範囲閾値レベルよりも高い大きさ範囲を有するMVDクラスの所定のセットのそれぞれは、単一の許容される整数MVDピクセル値に関連付けられる、
請求項5記載の方法。
【請求項9】
前記単一の許容される整数ピクセル値は、対応する大きさ範囲のうちのより高いものに対応するピクセル値を含む、
請求項8記載の方法。
【請求項10】
前記単一の許容される整数ピクセル値は、対応する大きさ範囲のうちの中間点に対応するピクセル値を含む、
請求項8記載の方法。
【請求項11】
前記大きさ範囲に従って前記MVDのためのピクセル解像度を決定するステップは:
前記大きさ範囲が、MVD閾値の所定の大きさ値よりも、低いか、含むか、又は高いかを決定する、ステップと、
前記大きさ範囲が前記MVD閾値の所定の大きさ値よりも高いことを決定することで、前記ピクセル解像度が整数のピクセル数であることを決定するステップと、
前記大きさ範囲が前記MVD閾値の所定の大きさ値よりも高くないことを決定することで、前記ピクセル解像度がピクセルの部分であると決定するステップと、を含む、
請求項6記載の方法。
【請求項12】
前記大きさ範囲が前記MVD閾値の所定の大きさ値を含むことを決定することで、前記MVDの大きさ範囲の開始大きさに関連する前記MVDのMVD大きさオフセットを示す前記ビデオストリームから、第2所定構文要素を抽出する、ステップと;
前記MVDの前記MVD大きさオフセット及び前記大きさ範囲に基づいて前記MVDの整数の大きさを取得するステップと;
前記MVDの前記整数の大きさが前記MVD閾値の所定の大きさよりも高くない場合、前記ピクセル解像度が分数であると決定するステップと;
前記MVDの前記整数の大きさが前記MVD閾値の所定の大きさよりも高い場合、前記ピクセル解像度が非分数であると決定するステップと、を含む、
請求項11記載の方法。
【請求項13】
前記ピクセル解像度が分数であると決定すると、
前記ピクセル解像度に基づいて前記ビデオストリームの付加的なMVD情報を識別するステップは:
第3所定構文要素に従って前記ビデオストリームをパースし、前記MVDの分数部分を取得する、ステップ、を含む、
請求項12記載の方法。
【請求項14】
前記MVD閾値の大きさ値は4ピクセルより小さい、
請求項11記載の方法。
【請求項15】
動きベクトル差分の複数の所定の大きさ範囲に関連付けられたMVDピクセル解像度は、大きさ範囲ごとに異なる、
請求項1乃至3いずれか1項記載の方法。
【請求項16】
デコーダによって実行される、ビデオストリームのインター予測ビデオブロックをデコードする方法であって:
ビデオストリームを受信するステップと;
前記インター予測ビデオブロックと関連付けられた参照動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされることを決定するステップであって、前記参照動きベクトルは、前記MVDが2つの参照画像に対して共同でシグナリングされない限り、参照フレームリスト0及び参照フレームリスト1のうちの1つのみの参照画像に対応する、ステップと;
前記ビデオストリームから、前記MVDの大きさの整数部分を抽出するステップと;
前記MVDの前記大きさの前記整数部分に従って前記MVDのためのピクセル解像度を決定するステップと;
前記ピクセル解像度に基づいて前記ビデオストリームの付加的なMVD情報を識別するステップと:
前記動きベクトルに関連付けられる参照フレーム、前記参照動きベクトル、前記付加的なMVD情報、前記MVDの前記大きさの前記整数部分及び前記ピクセル解像度に基づいて前記インター予測ビデオブロックをデコードするステップと、
を含む方法。
【請求項17】
MVDピクセル解像度は、昇順ではなく、MVD大きさに依存する、
請求項16記載の方法。
【請求項18】
前記MVDの前記大きさの前記整数部分に従って前記MVDのためのピクセル解像度を決定するステップは:
前記MVDの前記大きさの前記整数部分が所定のMVD閾値大きさ値より高いかどうか決定するステップと;
前記MVDの前記大きさの前記整数部分が前記所定のMVD閾値大きさ値よりも高いことを決定することで、前記ピクセル解像度が整数のピクセル数であることを決定するステップと;
前記MVDの前記大きさの前記整数部分が前記所定のMVD閾値大きさ値よりも高くないことを決定することで、前記ピクセル解像度がピクセルの部分であると決定するステップと、を含む、
請求項16又は17記載の方法。
【請求項19】
ビデオストリームのインター予測ビデオブロックをデコードするための電子デバイスであって、前記電子デバイスは、コンピュータ命令を格納するメモリと、前記メモリと通信するプロセッサとを備え、
前記プロセッサは、前記コンピュータ命令を実行するときに、電子デバイスに:
前記ビデオストリームを受信させ;
前記インター予測ビデオブロックと関連付けられた参照動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされることを決定させ、前記参照動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされない限り、参照フレームリスト0と参照フレームリスト1のうちの1つだけの基準画像に対応し;
前記ビデオストリームから、動きベクトル差分についての複数の所定の大きさ範囲のうち、前記MVDの大きさ範囲の表示を取得させ;
前記大きさ範囲に従って前記MVDのためのピクセル解像度を決定させ;
前記ピクセル解像度に基づいて前記ビデオストリームの付加的なMVD情報を識別させ;
前記ビデオストリームから前記付加的なMVD情報を抽出させ;
前記動きベクトルに関連付けられる参照フレーム、前記参照動きベクトル、前記付加的なMVD情報、及び前記ピクセル解像度に基づいて前記インター予測ビデオブロックをデコードさせる、ように構成されている、
電子デバイス。
【請求項20】
ビデオストリームのインター予測ビデオブロックをデコードするための電子デバイスであって、前記電子デバイスは、コンピュータ命令を格納するメモリと、前記メモリと通信するプロセッサとを備え、
前記プロセッサは、前記コンピュータ命令を実行するときに、前記電子デバイスに請求項16又は17記載の方法を実行させるように構成されている、
電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
参照による援用
この国際PCT出願は、2021年10月21日に出願された米国仮特許出願第63/270,397号及び2021年12月13日に出願された米国仮特許出願第63/289,122号の 「Adaptive Resolution for Motion Vector Difference」 に基づき、その優先権を主張する2022年3月30日に出願された優先権米国非仮特許出願第17/708,801号に基づき、その利益を主張する。これらの先行特許出願は、その全体が参照により本明細書に組み込まれる。
【0002】
技術分野
この開示は、概してビデオコーディング、特にビデオブロックのインター予測における動きベクトル差分に対する適応解像度を提供するための方法及びシステムに関する。
【背景技術】
【0003】
本明細書で提供される背景説明は、本開示のコンテキストを全般的に提示するためのものである。現在名前を挙げている発明者の研究は、この背景セクションに記載されている限りにおいて、本出願の出願時に先行技術として認められない可能性のある説明の態様は、本開示に対する先行技術として明示的にも黙示的にも認められない。
【0004】
ビデオコーディングとデコーディングは、動き補正を伴うインター画像予測(inter-picture prediction)を用いて行うことができる。非圧縮ディジタルビデオは、一連の画像を含むことができ、各画像は、例えば、1920×1080の輝度サンプル及び関連するフル又はサブサンプルのクロミナンスサンプルの空間寸法を有する。一連の画像は、例えば、毎秒60画像又は毎秒60フレームの固定又は可変の画像レート(又はフレームレートと称される)を有することができる。非圧縮ビデオには、スツリーミング又はデータ処理のための特定のビットレート要件がある。例えば、ピクセル解像度が1920×1080、フレームレートが60フレーム/秒、カラーチャネルあたりピクセルあたり8ビットで4:2:0のクロマサブサンプリングを行うビデオには、1.5Gbit/s近い帯域幅が必要である。このようなビデオの1時間は、600Gバイトを超えるストレージ領域を必要とする。
【0005】
ビデオコーディング及びデコーディングの1つの目的は、圧縮を介した非圧縮入力ビデオ信号の冗長性の低減である。圧縮は、前述の帯域幅やストレージスペースの要件を、場合によっては2桁以上削減するのに役立つ。可逆圧縮と非可逆圧縮の両方、及びそれらの組み合わせを用いることができる。可逆圧縮とは、圧縮された元の信号からデコードプロセスを介して元の信号の正確なコピーを再構築できる技術を指す。非可逆圧縮とは、元のビデオ情報がコーディング中に完全に保持されず、デコード中に完全に回復できないコーディング/デコードプロセスを指す。非可逆圧縮を使用する場合、再構成された信号は元の信号と同一ではない可能性があるが、元の信号と再構成された信号の間の歪みは十分に小さくなり、再構成された信号は、多少の情報損失はあるが、目的のアプリケーションに役立つようになる。ビデオの場合、非可逆圧縮は多くのアプリケーションで広く採用されている。許容できる歪みの量はアプリケーションによって異なる。例えば、特定の消費者向けビデオスツリーミングアプリケーションのユーザは、映画やテレビ放送アプリケーションのユーザよりも高い歪みを許容する場合がある。特定のコーディングアルゴリズムによって達成可能な圧縮比は、さまざまな歪み許容度を反映するように選択又は調整できる。一般に、許容可能な歪みが大きいほど、損失が大きく圧縮比が高いコーディングアルゴリズムが可能になる。
【0006】
ビデオエンコーダ及びデコーダは、動き補償、フーリエ変換、量子化、エントロピーコーディングなど、いくつかの広範なカテゴリとステップの技術を利用することができる。
【0007】
ビデオコーデック技術は、イントラコーディングとして知られる技術を含むことができる。イントラコーディングでは、サンプル値は、以前に再構成された参照画像からのサンプル又は他のデータを参照することなく表現される。いくつかのビデオコーデックでは、画像は空間的にサンプルのブロックに細分割(subdivided)される。サンプルのすべてのブロックがイントラモードでコーディングされている場合、その画像はイントラ画像と称されことができる。イントラ画像と、独立デコーダリフレッシュ画像等のそれらの派生物は、デコーダ状態をリセットするために用いられることができ、したがって、コーディングされたビデオビットスツリーム及びビデオセッションにおける第1画像として、又は静止画像として用いられることができる。イントラ予測後のブロックのサンプルは、その後、周波数ドメインへの変換を受けることができ、そのように生成された変換係数は、エントロピーコーディングの前に量子化されることができる。イントラ予測は、変換前ドメインにおけるサンプル値を最小化する技術を表す。場合によっては、変換後のDC値がより小さく、AC係数がより小さいほど、エントロピーコーディング後にブロックを表すための所与の量子化ステップサイズで必要なビットが少なくなる。
【0008】
例えばMPEG-2世代のコーディング技術から知られるような従来のイントラコーディングは、イントラ予測を使用しない。しかしながら、一部のより新しいビデオ圧縮技術には、例えば、空間的に隣接するのエンコーディング及び/又はデコーディング中に取得された周囲のサンプルデータ及び/又はメタデータに基づいてブロックのコーディング/デコーディングを試みる、デコーディング順序において、イントラコーディング又はデコーディングされるデータのブロックに先行する技術が含まれている。このような技術は、以後「イントラ予測」技術と称される。少なくともいくつかのケースでは、イントラ予測は再構成中の現在の画像からの参照データのみを使用し、他の参照画像からの参照データは使用しないことに留意されたい。
【0009】
さまざまな形式のイントラ予測があり得る。かかる技術のうちの1つ以上が、所与のビデオコーディング技術において用いられることができる場合、使用中の技術は、イントラ予測モードと称されるされることができる。特定のコーデックでは、1つ以上のイントラ予測モードが提供され得る。特定のケースでは、モードはサブモードを有することができ、及び/又はさまざまなパラメータに関連付けることができ、モード/サブモード情報とビデオブロックのイントラコーディングパラメータは、個別に又はモードコードワードにまとめてコーディングされることができる。所与のモード、サブモード、及び/又はパラメータの組み合わせに使用するコードワードは、イントラ予測によるコーディング効率の向上に影響を与えることができ、したがって、コードワードをビットスツリームに変換するために使用されるエントロピーコーディングテクノロジーも影響を及ぼすことができる。
【0010】
特定のイントラ予測モードがH.264で導入され、H.265で改良され、共同探索モデル(JEM:joint exploration model)、汎用ビデオコーディング(VVC:versatile video coding)、及びベンチマークセット(BMS:benchmark set)等のより新しいコーディング技術でさらに改良された。概して、イントラ予測ではは予測ブロックを利用可能になった隣接するサンプル値を使用して形成されることができる。例えば、特定の方向及び/又はラインに沿った隣接するサンプルの特定のセットの利用可能な値を予測ブロックにコピーできる。使用中の方向への参照は、ビットスツリームでコーディングされることができ、又はそれ自体が予測されることがある。
【0011】
図1Aを参照すると、右下に示されているのは、(H.265で指定された35個のイントラモードの33個の角度モードに対応する、)H.265の33個の可能なイントラ予測子方向で指定された9個の予測子方向のサブセットである。矢印が集中する点(101)は、予測されているサンプルを表す。矢印は、隣接するサンプルを使用して101のサンプルを予測する方向を表す。例えば、矢印(102)は、横方向から45度の角度で、隣接する複数のサンプルから右上にサンプル(101)が予測されることを示す。同様に、矢印(103)は、横方向から22.5度の角度で、隣接する複数のサンプルからサンプル(101)の左下にサンプル(101)が予測されることを示します。
【0012】
さらに図1Aを参照すると、左上には、4×4サンプルの正方形ブロック(104)が示されている(破線の太線で示されている)。正方形ブロック(104)は、16個のサンプルを含み、各サンプルは「S」でラベル付けされ、Y次元におけるその位置(例えば、行インデックス)及びX次元におけるその位置(例えば、列インデックス)を含む。例えば、サンプルS21は、Y次元の(頂部から)2番目のサンプル及びX次元の(左側から)1番目のサンプルである。同様に、サンプルS44は、ブロック(104)内でY及びX次元の両方において4番目のサンプルである。ブロックのサイズが4×4サンプルであるので、S44は右下にある。さらに、同様の番号付けスキームにしたがった参照サンプルの例を示す。参照サンプルは、R、ブロック(104)に対するそのY位置(例えば、行インデックス)及びX位置(列インデックス)でラベル付けされる。H.264とH.265の両方で、再構成中のブロックに隣接する予測サンプルが使用される。
【0013】
ブロック104のイントラ画像予測は、シグナリングされた予測方向に従って、隣接するサンプルから参照サンプル値をコピーすることによって開始することができる。例えば、コーディングされたビデオビットスツリームは、このブロック104について、矢印(102)の予測方向を示すシグナリングが含まれていると仮定すると、つまり、サンプルは1つ以上の予測サンプルから右上に、水平方向から45度の角度で予測される。かかる場合、サンプルS41、S32、S23、及びS14は同じ参照サンプルR05から予測される。その後、サンプルS44は、参照サンプルR08から予測される。
【0014】
特定の場合には、特に方向が45度で均等に割り切れない場合には、参照サンプルを計算するために、複数の参照サンプルの値を、例えば内挿によって組み合わせることができる。
【0015】
ビデオコーディング技術の発達に伴って可能性のある方向の数が増加している。例えば、H.264(2003年)では、イントラ予測には9つの異なる方向が利用可能である。これは、H.265(2013年)で33に増加し、本開示時の時点では、JEM/VVC/BMSは、最大65の方向性をサポートできる。最適なイントラ予測方向を特定するのに役立つ実験的研究が行われており、エントロピーコーディングの特定の技術を使用して、それらの最適な方向を少数のビットでエンコードし、方向に対して特定のビットペナルティを受け入れることができる。さらに、デコードされた隣接ブロックのイントラ予測で使用される隣接方向から方向自体を予測できる場合もある。
【0016】
図1Bは、時間の経過とともに開発された様々なエンコーディング技術における予測方向の数の増加を示すために、JEMによる65のイントラ予測方向を示す概略図(180)を示す。
【0017】
イントラ予測方向を表すビットをコーディングされたビデオビットスツリームにおける予測方向にマッピングする方法は、ビデオコーディング技術によって異なる場合があり:例えば、予測方向の単純な直接マッピングから、イントラ予測モード、コード名、最も可能性の高いモードを含む複合適応方式、及び類似の技術にまで及ぶことができる。しかしながら、どのような場合でも、イントラ予測には、他の特定の方向よりも統計的にビデオコンテンツで発生する可能性が低い特定の方向が存在する可能性がある。ビデオ圧縮の目的は冗長性の削減であるため、適切に設計されたビデオコーディング技術では、それらの可能性の低い方向は、可能性の高い方向よりも多くのビット数で表される可能性がある。
【0018】
インター画像予測又はインター予測は、動き補償に基づいている場合がある。動き補正は、以前に再構成された画像又はその一部(参照画像)からのサンプルデータを、動きベクトル(以下MV)で示される方向に空間的にシフトした後、新しく再構成された画像又は画像部分(例:ブロック)の予測に使用することができる。場合によっては、参照画像は現在再構成中の画像と同一であることもできる。MVは、X及びYの2次元、又は3次元を有することができ、第3次元は、使用中の参照画像の表示である(時間次元に類似する)。
【0019】
いくつかのビデオ圧縮技術では、サンプルデータの特定のエリアに適用可能な現在のMVは、他のMVから予測されることができ、例えば、再構築中のエリアに空間的に隣接し、デコード順で現在のMVよりも先行するサンプルデータの他のエリアに関連する他のMVから予測されることができる。このようにして、相関MVの冗長性を除去することに依存することで、MVのコーディングに必要なデータの全体量を大幅に低減でき、圧縮効率を高めることができる。MV予測は、例えば、カメラから導かれる入力映像信号(自然映像として知られる)をコーディングする場合、1つのMVが適用されるエリアよりも大きなエリアが、映像シーケンス内で類似の方向に移動する統計的な可能性があるため、場合によっては、隣接エリアのMVから導かれる類似の動きベクトルを使用して予測することができるため、効果的に機能する。その結果、所与のエリアの実際のMVは、周囲のMVから予測されるMVと類似又は同一になる。かかるMVは、エントロピーコーディングの後、MVが隣接する(1つ以上の)MVから予測されるのではなく直接コーディングされる場合に使用されるビット数よりも少ないビット数で表されることがある。場合によっては、MV予測は、元の信号(すなわち、サンプルスツリーム)から導出された信号(すなわち、MV)の可逆圧縮の例であり得る。他の場合には、MV予測それ自体は、例えば、いくつかの周囲MVから予測子を計算する際の丸め誤差のために、非可逆的であり得る。
【0020】
様々なMV予測メカニズムがH.265/HEVC (ITU-T Rec. H.265, High Efficiency Video Coding, December 2016)に、記述されている。H.265で規定されている多くのMV予測メカニズムのうち、以下で説明するのは、以降「空間マージ」と称される技術である。
【0021】
詳しくは、図2を参照すると、現在ブロック(201)は、空間的にシフトされた同じサイズの以前のブロックから予測可能であることが、モーションサーチプロセス中にエンコーダによって見出されたサンプルを含む。そのMVを直接コーディングする代わりに、1つ以上の参照画像に関連付けられたメタデータから、例えば、A0、A1、及びB0、B1、B2(それぞれ202から206)と示される5つの周囲のサンプルのいずれかに関連付けられたMVを使用して、(デコード順において)最新の参照画像から、MVを導出することができる。H.265では、MV予測は、隣接ブロックが使用しているのと同じいくつかの参照画像からの予測子を使用することができる。
【発明の概要】
【0022】
まとめ
本開示は、概してビデオコーディングに関連し、特にビデオブロックのインター予測における動きベクトル差分の適応解像度を提供するための方法及びシステムに関連する。一実施形態では、ビデオストリームのインター予測ビデオブロックをデコードする方法であって:方法は、ビデオストリームを受信するステップと;インター予測ビデオブロックと関連付けられた参照動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされることを決定するステップであって、参照動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされない限り、参照フレームリスト0と参照フレームリスト1のうちの1つだけの参照画像に対応し;ビデオストリームから、動きベクトル差分についての複数の所定の大きさ範囲のうち、MVDの大きさ範囲の表示を取得するステップと;大きさ範囲に従ってMVDのためのピクセル解像度を決定するステップと;ピクセル解像度に基づいてビデオストリーム内の付加的なMVD情報を識別するステップと;ビデオストリームから付加的なMVD情報を抽出するステップと;動きベクトルに関連付けられる参照フレーム、参照動きベクトル、付加的なMVD情報、及びピクセル解像度に基づいてインター予測ビデオブロックをデコードするステップと、を含む。
【0023】
上記の例示的実施形態において、ピクセル解像度は2n-pel(2nピクセル)であり、nは整数であり、-6以上11以下である。
【0024】
上記の例示的実施態様のいずれかにおいて、動きベクトル差分についての複数の所定の大きさ範囲は、所定の方法で、非昇順のピクセル解像度と関連付けられ、より高いピクセル解像度は、より小さいピクセル解像度値と関連付けられる。
【0025】
上記の例示的実施態様のいずれかにおいて、MVDの大きさ範囲の表示を取得するステップは、MVDクラスの所定のセットのうちのMVDのMVDクラスを示すビデオストリームから第1所定構文要素(a first predefined syntax element)を抽出するステップであって、より低いMVDクラスはより小さいMVD大きさ範囲に対応する、ステップと;MVDクラスに従ってMVDの大きさ範囲を決定するステップと、を含む。
【0026】
上記の例示的実施態様のいずれかにおいて、大きさ範囲に従ってMVDのためのピクセル解像度を決定するステップは:大きさ範囲が所定のMVD範囲閾値レベルよりも高いかどうかを決定するステップと;大きさ範囲が所定のMVD範囲閾値よりも高いかどうかを決定することで、ピクセル解像度が整数のピクセル数であることを決定するステップと、大きさ範囲が所定のMVD範囲閾値レベルよりも高いかどうかを決定することで、ピクセル解像度がピクセルの部分(a fraction of a pixel)であると決定するステップと、を含む。
【0027】
上記の例示的実施態様のいずれかにおいて、ピクセル解像度に基づいてビデオストリームの付加的なMVD情報を識別するステップは:第2所定構文要素に従ってビデオストリームをパースし、MVDの整数ピクセル部分(an integer pixel portion)を取得する、ステップと;前記ピクセル解像度がピクセルの部分であると決定すると、少なくとも第3所定構文要素に従ってビデオストリームをさらにパースし、前記MVDの分数ピクセル部分(a fractional pixel portion)を取得する、ステップと、を含む。
【0028】
上記の例示的実施態様のいずれかにおいて、MVD範囲閾値レベルは、MVDクラスの所定のセットの中で最も低いもの又は2番目に低いものを含む。
【0029】
上記の例示的実施態様のいずれかにおいて、所定MVD範囲閾値レベルよりも高い大きさ範囲を有するMVDクラスの所定のセットのそれぞれは、単一の許容される整数MVDピクセル値に関連付けられる。
【0030】
上記の例示的実施態様のいずれかにおいて、単一の許容される整数ピクセル値は、対応する大きさ範囲のうちのより高いもの(a higher of the corresponding magnitude range)に対応するピクセル値を含む。
【0031】
上記の例示的実施態様のいずれかにおいて、単一の許容される整数ピクセル値は、対応する大きさ範囲のうちの中間点に対応するピクセル値を含む。
【0032】
上記の例示的実施態様のいずれかにおいて、大きさ範囲に従ってMVDのためのピクセル解像度を決定するステップは:大きさ範囲が、MVD閾値の所定の大きさ値(a predetermined MVD threshold magnitude value)よりも、低いか、含むか、又は高いかを決定する、ステップと、大きさ範囲がMVD閾値の所定の大きさ値よりも高いことを決定することで、ピクセル解像度が整数のピクセル数であることを決定するステップと、大きさ範囲がMVD閾値の所定の大きさ値よりも高くないことを決定することで、ピクセル解像度がピクセルの部分であると決定するステップと、を含むことができる。
【0033】
上記の例示的実施態様のいずれかにおいて、本方法は、さらに、大きさ範囲が前記MVD閾値の所定の大きさ値を含むことを決定することで、大きさ範囲が前記MVD閾値の所定の大きさ値を含むことを決定することで、MVDの大きさ範囲の開始大きさに関連するMVDのMVD大きさオフセットを示すビデオストリームから、第2所定構文要素を抽出する、ステップと;MVDのMVD大きさオフセット及び大きさ範囲に基づいて前記MVDの整数の大きさを取得するステップと;MVDの整数の大きさがMVD閾値の所定の大きさよりも高くない場合、ピクセル解像度が分数(fractional)であると決定するステップと;MVDの整数の大きさがMVD閾値の所定の大きさよりも高い場合、ピクセル解像度が非分数(non-fractional)であると決定するステップと、を含むことができる。
【0034】
上記の例示的実施態様のいずれかにおいて、ピクセル解像度が分数であると決定すると、ピクセル解像度に基づいてビデオストリーム内の付加的なMVD情報を識別するステップは、所定の第3構文要素に従って前記ビデオストリームをパースし、前記MVDの分数部分を取得する、ステップ、を含むことができる。
【0035】
上記の例示的実施態様のいずれかにおいて、MVD閾値の大きさ値は4ピクセルより小さい。
【0036】
上記の例示的実施態様のいずれかにおいて、動きベクトル差分の複数の所定の大きさ範囲に関連付けられたMVDピクセル解像度は、大きさ範囲ごとに異なる。
【0037】
いくつかの他の例示的実施形態において、ビデオストリームのインター予測ビデオブロックをデコードする方法が開示される。本方法は、ビデオストリームを受信するステップと;インター予測ビデオブロックと関連付けられた参照動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされることを決定するステップであって、参照動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされない限り、参照フレームリスト0と参照フレームリスト1のうちの1つのみの参照画像に対応する、ステップと;ビデオストリームから、MVDの大きさの整数部分を抽出するステップと;MVDの大きさの整数部分に従ってMVDについてのピクセル解像度を決定するステップと;ピクセル解像度に基づいてビデオストリーム内の付加的なMVD情報を識別するステップと:動きベクトルに関連付けられる参照フレーム、参照動きベクトル、付加的なMVD情報、MVDの大きさの整数部分及びピクセル解像度に基づいてインター予測ビデオブロックをデコードするステップと、を含むことができる。
【0038】
上記の例示的実施形態において、MVDピクセル解像度は、非昇順で、MVD大きさに依存する。
【0039】
上記の例示的実施態様のいずれかにおいて、MVDの大きさの整数部分に従ってMVDのためのピクセル解像度を決定するステップは:MVDの大きさの整数部分が所定MVD閾値大きさ値より高いかどうか決定するステップと;MVDの大きさの整数部分が所定MVD閾値大きさ値よりも高いことを決定することで、ピクセル解像度が整数のピクセル数であることを決定するステップと;MVDの大きさの整数部分が所定MVD閾値大きさ値よりも高くないことを決定することで、ピクセル解像度がピクセルの部分であると決定するステップと、を含むことができる。
【0040】
本開示の態様はまた、上記の方法実施形態のいずれかを実行するように構成された回路を含む、ビデオエンコーディング又はデコーディングデバイス又は装置を提供する。
【0041】
本開示の態様は、ビデオデコーディング及び/又はエンコーディングのためにコンピュータによって実行されると、ビデオデコーディング及び/又はエンコーディングのための方法をコンピュータに実行させる命令を格納する非一時的コンピュータ可読媒体も提供する。
【図面の簡単な説明】
【0042】
開示された主題のさらなる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
図1A図1Aは、イントラ予測指向性モードの例示的なサブセットの概略図を示す図である。
図1B図1Bは、例示的なイントラ予測指向性の図を示す。
図2図2は、一実施例における動きベクトル予測のための現在のブロックとその周辺の空間マージ候補を模式的に示す図である。
図3図3は、例示的実施形態による通信システム(300)の簡略ブロック図を模式的に示す図である。
図4図4は、例示的実施形態による通信システム(400)の簡略ブロック図を模式的に示す図である。
図5図5は、例示的実施形態によるビデオデコーダの簡略ブロック図を模式的に示す図である。
図6図6は、例示的実施形態によるビデオエンコーダの簡略ブロック図を模式的に示す図である。
図7図7は、別の例示的実施形態によるビデオエンコーダのブロック図である。
図8図8は、別の例示的実施形態によるビデオデコーダのブロック図である。
図9図9は、本開示の例示的実施形態によるコーディングブロックパーティショニングのスキームを示す図である。
図10図10は、開示の例示的実施形態によるコーディングブロックパーティショニングの別のスキームを示す図である。
図11図11は、開示の例示的実施形態によるコーディングブロックパーティショニングの別のスキームを示す図である。
図12図12は、例示的パーティショニングスキームによるベースブロックのコーディングブロックへのパーティショニングの例を示す図である。
図13図13は、ターナリパーティショニングスキームの例を示す図である。
図14図14は、クオドツリーバイナリツリーコーディングブロックパーティショニングスキームの例を示す図である。
図15図15は、開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックに分割するためのスキーム及び変換ブロックのコーディング順序を示す図である。
図16図16は、開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックに分割するための別のスキーム及び変換ブロックのコーディング順序を示す図である。
図17図17は、開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックに分割するための別のスキームを示す図である。
図18図18は、開示の例示的な実施形態による、方法のフローチャートを示す図である。
図19図19は、開示の例示的な実施形態による、方法の別のフローチャートを示す。
図20図20は、開示の例示的な実施形態による、コンピュータシステムの概略図を示す。
【発明を実施するための形態】
【0043】
明細書及び特許請求の範囲全体を通して、用語は、明示的に述べられた意味を超えて、文脈において示唆又は暗示されたニュアンスを持つことがある。ここで使用される「ある実施形態において」又は 「いくつかの実施形態において」という語句は、必ずしも同じ実施形態を指すとは限らず、ここで使用される「別の実施形態において」又は「別の実施形態において」という語句は、必ずしも別の実施形態を指すとは限らない。同様に、ここで使用される「ある実装で」又は「いくつかの実装で」という語句は、必ずしも同じ実装を指すとは限らず、ここで使用される「別の実装で」又は「他の実装で」という語句は、必ずしも別の実装を指すとは限らない。例えば、クレームされた主題には、全体又は一部の例示的な実施形態/実装の組み合わせが含まれることが意図されている。
【0044】
一般に、用語は、少なくとも部分的には文脈での使用から理解することができる。例えば、ここで使用される「及び(and)」、「又は(or)」、又は「及び/又は(and/or)」などの用語は、そのような用語が使用される文脈に少なくとも部分的に依存する可能性のある様々な意味を含むことができる。通常、「又は」は、A、B又はCなどのリストを関連付けるために使用される場合、ここでは包括的な意味で使用されるA、B、及びCだけでなく、ここでは排他的な意味で使用されるA、B、又はCも意味することを意図している。さらに、ここで使用される「1つ以上」又は「少なくとも1つ」という用語は、少なくとも部分的に文脈に応じて、任意の特徴、構造、又は特性を単一の意味で記述するために使用される場合もあれば、特徴、構造、又は特性の組み合わせを複数の意味で記述するために使用される場合もある。同様に、「1つの(”a”, ”an”)」、又は「その又は前記(the)」などの用語も、少なくとも部分的に文脈に応じて、単数の用法を伝えるため、又は複数の用法を伝えるために理解される場合がある。さらに、「に基づく(based on)」又は「によって決定される(determined by)」という用語は、必ずしも要素の排他的なセットを伝えることを意図していないと理解されることができ、代わりに、少なくとも部分的に文脈に応じて、必ずしも明示的に記述されていない追加的な要素の存在を可能にすることができる。図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1対の端末デバイス(310)及び(320)を含む。図3の実施例では、第1対の端末デバイス(310)及び(320)は、データの一方向送信を行う。例えば、端末デバイス(310)は、ネットワーク(350)を介して他の端末デバイス(320)に伝送するためにビデオデータ(例えば、端末デバイス(310)によって捕捉されるビデオ画像のスツリーム)をコーディングすることができる。エンコードされた画像データは、1つ以上のコーディングされたビデオビットスツリームの形態で送信されることができる。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコードして、ビデオ画像を復元し、復元されたビデオデータにしたがってビデオ画像を表示することができる。一方向性データ伝送は、メディア提供アプリケーション等において一般的であり得る。
【0045】
別の例では、通信システム(300)は、第2対の端末デバイス(330)及び(340)を含み、例えばビデオ会議アプリケーション中に、実装され得るコーディングされたビデオデータの双方向伝送を行う。データの双方向伝送のために、例えば、端末デバイス(330)及び(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)及び(340)の他方の端末デバイスに伝送するために、ビデオデータ(例えば、端末デバイスによって捕捉されるビデオ画像のスツリーム)をコーディングし得る。端末デバイス(330)及び(340)の各端末デバイスは、端末デバイス(330)及び(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコードして、ビデオ画像を復元し、復元されたビデオデータにしたがって、アクセス可能な表示デバイスにビデオ画像を表示し得る。
【0046】
図3の例では、端末デバイス(310)、(320)、(330)及び(340)は、サーバ、パーソナルコンピュータ及びスマートフォンとして実装され得るが、本発明の基礎となる原理の適用可能性はこれらに限定されない。本開示の実施形態は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー、ウェアラブルコンピュータ、専用のビデオ会議機器などに実装することができる。ネットワーク(350)は、例えばワイヤライン(有線)及び/又は無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)及び(340)の間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)9は、回線交換、パケット交換、及び/又はその他の種類のチャネルでデータを交換することができる。代表的なネットワークには、テレコミュニケーションネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットが含まれる。本説明の目的上、ネットワーク(350)のアーキテクチャ及びトポロジーは、ここで明示的に説明されない限り、本開示の動作にとって重要でない場合がある。
【0047】
図4は、開示された主題の適用例として、ビデオスツリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTV放送、ゲーム、仮想現実、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの保存など、他のビデオアプリケーションにも同様に適用することができる。
【0048】
ビデオスツリーミングシステムは、例えば、非圧縮のビデオ画像又は画像(402)のスツリームを生成するビデオソース(401)、例えばデジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一実施形態では、ビデオ画像のスツリーム(402)は、ビデオソース401のデジタルカメラによって撮影されるサンプルを含む。エンコードされたビデオデータ(404)(又はコーディングされたビデオビットスツリーム)と比較した場合に、高データ量を強調するために太線として描かれたビデオ画像のスツリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理されることができる。ビデオエンコーダ(403)は、ハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができ、以下により詳細に説明されるように、開示された主題の態様を可能にし、又は実施する。エンコードされたビデオデータ(404)(又はエンコードされたビデオビットスツリーム(404))は、圧縮されていないビデオ画像(402)のスツリームと比較した場合に、より低いデータ量を強調するために細線として示され、将来の使用のためにスツリーミングサーバ(405)に保存することも、ダウンスツリームのビデオデバイス(図示せず)に直接保存することもできる。図4のクライアントサブシステム(406)及び(408)等の1つ以上のスツリーミングクライアントサブシステムは、スツリーミングサーバ(405)にアクセスすることができ、エンコードされたビデオデータ(404)のコピー(407)及び(409)を読み出すことができる。クライアントサブシステム(406)は、例えば電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコードされたビデオデータの入力コピー(407)をデコードし、ディスプレイ(412)(例えばディスプレイスクリーン)又は他のレンダリングデバイス(図示せず)上にレンダリングすることができる、圧縮されていないビデオ画像の出力スツリーム(411)を生成する。ビデオデコーダ410は、この開示に記載されているさまざまな機能の一部又は全てを実行するように構成できる。いくつかのスツリーミングシステムでは、エンコードされたビデオデータ(404)、(407)及び(409)(例えば、ビデオビットスツリーム)は、特定のビデオコーディング/圧縮標準にしたがってコーディングされることができる。これらの標準の例は、ITU-T勧告H.265を含む。例えば、開発中のビデオコーディング規格は、汎用ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVC、及びその他のビデオコーディング標準の文脈で使用される場合があります。
【0049】
電子デバイス(420)及び(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)は、ビデオエンコーダ(図示せず)も含むことができる。
【0050】
図5は、以下の本開示のいずれかの実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれることができる。電子デバイス(530)は、受信器(531)(例えば、受信回路)を含むことができる。図4の例では、ビデオデコーダ(410)の代わりにビデオデコーダ(510)を使用することができる。
【0051】
受信器(531)は、ビデオデコーダ(510)によってデコードされるべき1つ以上のコーディングされたビデオシーケンスを受信することができ、同一又は別の実施形態では、一度に1つのコーディングされたビデオシーケンスをデコードすることができ、その際、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。各ビデオシーケンスは、複数のビデオフレーム又はイメージと関連付けることができる。コーディングされたビデオシーケンスは、チャネル(501)から受信することができ、このチャネルは、エンコードされたビデオデータを格納するストレージデバイス又はエンコードされたビデオデータを伝送するスツリーミングソースへのハードウェア/ソフトウェアリンクであり得る。受信器(531)は、コーディングされたオーディオデータ及び/又は補助的なデータスツリームなどの他のデータとともにエンコードされたビデオデータを受信することができ、これらはそれぞれの処理回路(図示せず)に転送することができる。受信器(531)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対処するために、バッファメモリ(515)が、受信器(531)とエントロピーデコーダ/パーサ(520)(以後「パーサ(520)」)との間に配置され得る。特定の用途では、バッファメモリ(515)はビデオデコーダ(510)の一部として実装することができる。他の用途では、ビデオデコーダ(510)(図示せず)の外部にあって、ビデオデコーダから分離することができる。さらに別の用途には、例えばネットワークジッタに対処するために、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在することができ、さらに、例えば再生タイミング(playout timing)を処理するために、ビデオデコーダ(510)の内部に別の追加のバッファメモリ(515)が存在することもできる。受信器(531)が、十分な帯域幅及び制御可能性の記憶/転送デバイスから、又は、アイソクロナスネットワーク(isosynchronous network)から、データを受信している場合、バッファメモリ(515)は不要であるか、又は小さくてもよい。インターネットなどのベストエフォートパケットネットワークで使用する場合、十分なサイズのバッファメモリ(515)が必要な場合があり、そのサイズは比較的大きくなる可能性がある。このようなバッファメモリは、適応可能なサイズで実装することができ、少なくとも部分的には、ビデオデコーダ(510)の外部のオペレーティングシステム又は同様の要素(図には示されていない)に実装することができる。
【0052】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。これらのシンボルのカテゴリには、ビデオデコーダ(510)の動作を管理するために使用される情報と、電子デバイス(530)の一体部分であってもなくてもよいが、電子デバイス(530)に結合され得るディスプレイ(512)(例えば、ディスプレイスクリーン)などのレンダリングデバイスを制御するための潜在的な情報が含まれる可能性がある。(複数の)レンダリングデバイスの制御情報は、付加拡張情報(SEIメッセージ)又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であり得る。パーサ(520)は、パーサ(520)によって受信されるコーディングされたビデオシーケンスをパースし/エントロピーデコードすることができる。コーディングされたビデオシーケンスのエントロピーコーディングは、ビデオコーディング技術又は標準に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴う又は伴わない算術コーディングなどを含む種々の原理に従うことができる。パーサ(520)は、サブグループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つに対するサブグループパラメータのセットを、コーディングされたビデオシーケンスから抽出し得る。サブグループは、画像グループ(GOP)、画像、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含み得る。
【0053】
パーサ(520)はまた、変換係数(例えば、フーリエ変換係数)、量子化パラメータ値、動きベクトル等の情報を、コーディングされたビデオシーケンスから抽出し得る。パーサ(520)は、シンボル(521)を生成するように、バッファメモリ(515)から受信したビデオシーケンスに、エントロピーデコード/パース動作を実行し得る。
【0054】
シンボル(521)の再構成は、コーディングされたビデオ画像又はその部分のタイプ(例えば、ンター及びイントラ画像、インター及びイントラブロック内)及び他の要因に応じて、複数の異なる処理又は機能ユニットを含むことができる。関与するユニット及びそれらがどのように関与するかは、パーサ(320)によってコーディングされたビデオシーケンスからパースされたサブグループ制御情報によって制御されることができる。パーサ(520)と以下の複数ユニットとの間のかかるサブグループ制御情報のフローは、単純化のために図示されていない。
【0055】
すでに述べた機能ブロックの他に、ビデオデコーダ(510)は、概念的に、以下に説明するように、いくつかの機能ユニットに分割されることができる。商業的制約の下で動作する実用的な実装では、これらの機能ユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることができる。しかし、開示された主題の様々な機能を明確に説明する目的で、以下の開示では機能ユニットへの概念的な細分化が採用されている。
【0056】
第1ユニットは、スケーラ/逆変換ユニット(551)であり得る。スケーラ/逆変換ユニット(551)は、パーサ(520)から、量子化された変換係数、並びに、使用する逆変換のタイプ、ブロックサイズ、量子化係数/パラメータ、量子化スケーリング行列、及び(1つ以上の)シンボルとしての偽(521)を示す情報を含む制御情報を受信し得る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力可能なサンプル値を含むブロックを出力することができる。
【0057】
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロックに関係することができ、すなわち、以前に再構成された画像からの予測情報を使用していないが、現在の画像の以前に再構成された部分からの予測情報を使用することができるブロックに関連付けることができる。かかる予測情報は、イントラ画像予測ユニット(552)によって提供されることができる。場合によっては、イントラ画像予測ユニット(552)は、現在の画像バッファ(558)に格納された既に再構成された周辺ブロックを使用して、再構成中のブロックと同じサイズ及び形状のブロックを生成し得る。現在の画像バッファ(558)は、例えば、部分的に再構成された現在の画像及び/又は完全に再構成された現在の画像をバッファする。アグリゲータ(555)は、いくつかの実装形態では、サンプル毎に、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に加算し得る。
【0058】
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングに関係し、潜在的に動き補償ブロックに関係することができる。かかる場合、動き補償予測ユニット(553)は、インター画像予測に使用されるサンプルをフェッチするために参照画像メモリ(557)にアクセスすることができる。ブロックに関連するシンボル(521)にしたがって、フェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によって、スケーラ/逆変換ユニット(551)の出力(ユニット551の出力は、残差サンプル又は残差信号と称されることができる)に加算されることができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Yコンポーネント(シフト)、及び参照画像コンポーネント(時間)を有するシンボル(521)の形態で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されている場合には、参照画像メモリ(557)からフェッチされるようにサンプル値を補間することを含むことができ、動きベクトル予測メカニズムに関連付けること等もできる。
【0059】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)内の種々のループフィルタリング技術を受けることができる。ビデオ圧縮技術は、インループフィルタ技術(in-loop filter technologies)を含むことができ、コーディングされたビデオシーケンス(コーディングされたビデオビットスツリームとも称される)に含まれるパラメータによって制御され、パーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるが、コーディングされた画像又はコーディングされたビデオシーケンスと(デコード順において)先行する部分のデコードの間で得られるメタ情報に応答することができると共に、先行して再構成されループフィルタリングされたサンプル値に応答することができる、インループフィルタ技術を含むことができる。いくつかのタイプのループフィルタが、さまざまな順序でループフィルタユニット556の一部として含まれる場合があるが、これについては後述する
【0060】
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されることができ、また将来のインター画像予測に使用するために参照画像メモリ(557)に記憶されることができるサンプルスツリームであることができる。
【0061】
特定のコーディングされた画像は、一旦完全に再構成されると、将来のインター予測のための参照画像として使用されることができる。例えば、一旦現在の画像に対応するコーディング画像が完全に再構成され、(例えば、パーサ(520)によって)コーディングされた画像が参照画像として識別されると、現在の画像バッファ(4558)は参照画像メモリ(557)の一部となることができ、新たな現在画像バッファは、後続のコーディング画像の再構成を開始する前に再割当てされ得る。
【0062】
ビデオデコーダ(510)は、ITU-T Rec.H.265.等の標準で採用されたの所定のビデオ圧縮技術にしたがってデコーディング動作を実行し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスが、ビデオ圧縮技術若しくは標準のシンタックス、及び、ビデオ圧縮技術若しくは標準に文書化されているプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術又は標準によって特定されたシンタックスに適合し得る。具体的には、プロファイルは、そのプロファイルで使用できる唯一のツールとして、ビデオ圧縮テクノロジ又は標準で使用可能なすべてのツールから特定のツールを選択できる。また、標準に準拠するために、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって定義される範囲内にあることであり得る。場合によっては、レベルは、最大画像サイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒メガサンプルで測定される)、最大参照画像サイズなどを制限する。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD:Hypothetical Reference Decoder)の仕様と、コーディングされたビデオシーケンスでシグナリングされるHRDバッファ管理のメタデータによってさらに制限され得る。
【0063】
いくつかの例示的実施形態では、受信器(531)は、エンコードされたビデオと共に追加の(冗長な)データを受信することができる。追加データは、コーディングされた(複数の)ビデオシーケンスの部分として含まれ得る。追加のデータは、データを適切にデコードするため、及び/又は元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、又は信号雑音比(SNR)拡張層、冗長スライス、冗長画像、前方エラー補正コードなどの形態であり得る。
【0064】
図6は、本開示の例示的実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれることができる。電子デバイス(620)は、送信器(640)(例えば送信回路)をさらに含むことができる。図4の例のビデオエンコーダ(403)の代わりに、ビデオエンコーダ(603)を用いることができる。
【0065】
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされる(1つ以上の)ビデオ映像を捕捉することができるビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信し得る。別の例では、ビデオソース(601)は、電子デバイス(620)の一部として実装されることができる。
【0066】
ビデオソース(601)は、任意の適切なビット深さ(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB、...)、及び任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)を有することができるデジタルビデオサンプルスツリームの形態で、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを提供し得る。メディア配信システムにおいて、ビデオソース(601)は、予め準備されたビデオを記憶できる記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、局所映像情報をビデオシーケンスとして捕捉するカメラであり得る。ビデオデータは、シーケンスで見たときに動きをもたらす複数の個々の画像又は映像として提供され得る。画像自体は、ピクセルの空間アレイとして組織化されることができ、各ピクセルは、使用中のサンプリング構造、色空間等に応じて、1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
【0067】
いくつかの例示的実施形態によれば、ビデオエンコーダ(603)は、ソースビデオシーケンスの画像を、リアルタイムで、又はアプリケーションによって要求される任意の他の時間制約下で、コーディングされたビデオシーケンス(643)にコーディングし、圧縮し得る。適切なコーディングスピードを実現することは、コントローラ(650)の一つの機能である。いくつかの実施形態では、コントローラ(650)は、後述するように他の機能ユニットに機能的に接続されることができて、他の機能ユニットを制御することができる。カップリングは、単純化のため表されない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(画像スキップ、量子化器、レート歪み最適化技術のラムダ値、...)、画像サイズ、画像グループレ(GOP)イアウト、最大動きベクトル探索範囲等を含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成されることができる。
【0068】
いくつかの例示的実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成され得る。過剰に単純化された説明として、一例において、コーディングループは、(例えば、コーディングされるべき入力画像及び参照画像に基づいて、シンボルスツリーム等のシンボルを生成する責任を担う)ソースコーダ(630)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、埋め込みデコーダ633がエントロピーコーディングなしでソースコーダ630によってコーディングされたビデオストリームを処理する場合でも、(リモート)デコーダが作成するのと同様の方法でサンプルデータを作成するようにシンボルを再構成する(エントロピーコーディングにおけるシンボルとコーディングされたビデオビットスツリームとの間の圧縮は、開示された主題で考慮されるビデオ圧縮技術では無損失であり得るからである)。再構成されたサンプルスツリーム(サンプルデータ)は、参照画像メモリ(634)に入力される。シンボルスツリームのデコーディングは、デコーダロケーション(ローカル又はリモート)に依存しないビットイクザクトな結果(bit-exact results)をもたらすので、参照画像メモリ(634)中の内容もまた、ローカルエンコーダとリモートエンコーダとの間でビットイクザクトである。換言すれば、エンコーダの予測部分は、デコーダがデコード中に予測を使用するときに「見る」のとまったく同じサンプル値を参照画像サンプルとして「見る」。参照画像同期性のこの基本原理(及び、例えばチャンネルエラーのために、同期性が維持できない場合の結果として生じるドリフト)は、コーディング品質を改善するために使用される。
【0069】
「ローカル」デコーダ(533)の動作は、ビデオデコーダ(410)等の「リモート」デコーダと同じであることができ、これは、図5と関連して詳細に既に上述したとおりである。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)及びパーサ(520)によるコーディングビデオシーケンスへのシンボルのエンコーディング/デコーディングが可逆的であることができるので、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピーデコーディング部分及びパーサ(520)は、エンコーダのローカルデコーダ(633)に完全には実装されない場合がある。
【0070】
この点で行うことができる観察は、デコーダ内にのみ存在することができるパース/エントロピーデコーディングを除く任意のデコーダ技術であり、対応するエンコーダ内に実質的に同一の機能的形態で存在する必要があり得るということである。このために、開示された主題は、エンコーダのデコーディング部分に関連するデコーダ動作に焦点を当てることがある。したがって、エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるため、省略できる。特定の領域又は側面についてのみ、エンコーダのより詳細な説明を以下に示す。
【0071】
いくつかの実装例での動作中に、ソースコーダ(630)は、「参照画像」として指定されたビデオシーケンスからの、先行してコーディングされた1つ以上の画像を参照して入力画像を予測的にコーディングする、動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力画像のピクセルブロックと、入力画像に対する(1つ以上の)予測参照として選択され得る(1つ以上の)参照画像のピクセルブロックとの間の差分(残差)をコーディングする。用語「残差(residue)」とその形容詞形「残差(residual)」は同じ意味で使用されることがある。
【0072】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって生成されたシンボルに基づいて、参照画像として指定され得る画像のコーディングされたビデオデータをデコードし得る。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(図6には示されていない)でデコードされ得る場合、再構成されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスの複であり得る。ローカルビデオデコーダ(633)は、参照画像上でビデオデコーダによって実行され、参照画像キャッシュ(634)に記憶されるべき再構成された参照画像を生じさせ得るデコーディング処理を繰り返す。このようにして、ビデオエンコーダ(603)は、遠位端(リモート)ビデオデコーダによって得られるであろう(伝送エラーの無い)再構成された参照画像として、共通のコンテンツを有する再構成された参照画像のコピーをローカルに記憶することができる。
【0073】
予測器(635)は、コーディングエンジン(632)について予測サーチを実行し得る。すなわち、コーディングされるべき新しい画像について、予測器(635)は、新しい画像についての適切な予測参照として役立ち得る、参照画像動きベクトル、ブロック形状等の特定のメタデータ、又は、サンプルデータ(参照ピクセルブロックの候補として)、について参照画像メモリ(634)を検索し得る。予測器(635)は、適切な予測参照を見出すために、サンプルブロック毎に動作し得る。場合によっては、予測器(635)によって得られた検索結果によって決定されるように、入力画像は、参照画像メモリ(634)に記憶された複数の参照画像から引き出された予測参照を有し得る。
【0074】
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
【0075】
上述した機能ユニットの全ての出力は、エントロピーコーダ(645)におけるエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディング等の技術にしたがって、シンボルを可逆的に圧縮することによって、種々の機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
【0076】
送信器(640)は、エントロピーコーダ(645)によって作成されたコーディングされたビデオシーケンスをバッファすることができ、エンコードされたビデオデータを格納するであろうストレージデバイスへのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を経由した送信のために用意する。送信器(640)は、ビデオ・コーダ(603)からのコーディングされたビデオデータを、例えばコーディングされたオーディオデータ及び/又は補助的なデータ・スツリーム(図示せず)等の、送信されるべき他のデータとともにマージし得る。
【0077】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディングの間、コントローラ(650)は、各コーディングされた画像に、特定のコーディングされた画像タイプを割り当てることができ、これは、各画像に適用され得るコーディング技術に影響を及ぼし得る。例えば、画像は、しばしば、次の画像タイプの1つとして割り当てられる:
【0078】
イントラ画像(I画像)は、予測ソースとしてシーケンス内の他の画像を使用することなく、コーディングされ、デコードされ得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」:Independent Decoder Refresh)画像を含む、異なるタイプのイントラ画像を許容する。当業者は、I画像のこれらの変形例、並びにそれらのそれぞれの用途及び特徴を認識している。
【0079】
予測画像(P画像)は、各ブロックのサンプル値を予測するために、最大で1つの運動ベクトルと参照インデックスを用いるインター予測又はイントラ予測を使用して、コーディングされ、デコードされ得るものであり得る。
【0080】
双方向(bi-directionally)予測画像(B画像)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルと参照インデックスを用いるインター予測又はイントラ予測を使用して、コーディングされ、デコードされ得るものであり得る。同様に、複数の予測画像は、1つのブロックの再構成のために、2つ以上の参照画像及び関連するメタデータを使用することができる。
【0081】
ソース画像は、通常、空間的に複数のサンプルコーディングブロック(例えば、各サンプル4×4、8×8、4×8、又は16×16のブロック)に細分割され、ブロック毎にコーディングされる。ブロックは、ブロックのそれぞれの画像に適用されるコーディング割り当てによって決定された、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、I画像のブロックは、非予測的にコーディングされるか、又は、それらは、同じ画像の既にコーディングされたブロック(空間予測又はイントラ予測)を参照して予測的にコーディングされ得る。P画像の画素ブロックは、先行してコーディングされた一つの参照画像を参照して、空間的予測又は時間的予測を介して予測的にコーディングされ得る。B画像のブロックは、1つ又は2つの、先行してコーディングされた参照画像を参照して、空間的予測を介して、又は時間的予測を介して予測的にコーディングされ得る。ソース画像又は中間処理された画像は、他の目的のために他のタイプのブロックに細分割されることがある。以下でさらに詳細に説明するように、コーディングブロック及び他のタイプのブロックの分割は、同じ方法に従う場合もあれば、そうでない場合もある。
【0082】
ビデオエンコーダ(603)は、所定のビデオコーディング技術又はITU-T Rec.H.265.等の標準にしたがってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を活用する予測コーディング動作を含む種々の圧縮動作を実行し得る。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術又は標準によって指定されたシンタックスに準拠し得る。
【0083】
一実施形態では、送信器(640)は、エンコードされたビデオと共に追加データを送信し得る。ソースコーダ(630)は、コーディングされたビデオシーケンスの一部としてかかるデータを含めることができる。追加のデータは、時間的/空間的/SNR強調レイヤーや、他の形式の冗長データ、例えば冗長画像及びスライス、SEIメッセージ、VUIパラメータセットフラグメント等を含み得る。
【0084】
ビデオは、時間シーケンスにおいて複数のソース画像(ビデオ画像)として捕捉され得る。イントラ画像予測(Intra-picture prediction)(しばしば、イントラ予測と略される)は、所与の画像における空間的相関を使用し、インター画像予測(inter-picture prediction)は、画像間の時間的又は他の相関を使用する。一例では、現在画像と称されるコーディング/デコーディング中の特定の画像は、ブロックに仕切られる(partitioned into blocks)。現在画像内のブロックが、ビデオ内の、先行してコーディングされ、まだバッファされている参照画像内の参照ブロックに類似する場合、現在の画像内ブロックは、動きベクトルと称されるベクトルによってコーディングされ得る。動きベクトルは、参照画像内の参照ブロックを指し、複数の参照画像が使用されている場合には、参照画像を識別する第3次元を有することができる。
【0085】
いくつかの実施形態において、双方向予測技術(bi-prediction technique)は、インター画像予測のために使用されることができる。双方向予測技術によれば、ビデオ内の現在画像に対してデコード順では両方とも先行する(ただし、表示順では、それぞれ過去又は未来であり得る)第1参照画像及び第2参照画像等の2つの参照画像が使用される。現在画像内のブロックは、第1参照画像内の第1参照ブロックを指す第1動きベクトルと、第2参照画像内の第2参照ブロックを指す第2の動きベクトルとによってコーディングされることができる。ブロックは、第1参照ブロックと第2参照ブロックとの組み合わせによって予測されることができる。
【0086】
さらに、コーディング効率を改善するために、インター画像予測においてマージモード技術を使用することができる。
【0087】
本開示のいくつかの実施形態によれば、インター画像予測及びイントラ画像予測等の予測は、ブロックの単位で実行される。例えば、ビデオ画像シーケンス中の画像は、圧縮のためにコーディングツリーユニット(CTU)に仕切られ、画像中のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセル等の、同じサイズを有する。一般に、CTUは、1つのルマCTBと2つのクロマCTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つ又は複数のコーディング単位(CU)に再帰的にクオドツリースプリットすることができる。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCU、32×32ピクセルの4つのCUにスプリットすることができる。32×32ブロックの各一つ以上は、16×16ピクセルの4つのCUに、さらにスプリットされることができる。例では、各CUは、インター予測タイプ又はイントラ予測タイプ等の、CUの予測タイプを決定するために分析される。CUは時間的及び/又は空間的予測可能性に依存して1つ以上の予測単位(PU)にスプリットされる。一般に、各PUは1つのルマ予測ブロック(PB)と2つのクロマPBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックのユニットにおいて実行される。CUのPU(又は異なるカラーチャネルのPB)へのスプリットは、様々な空間パターンで実行され得る。例えば、ルマ又はクロマPBは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8サンプルなどのサンプルについての値(例えば、ルマ値)のマトリックスを含むことができる。
【0088】
図7は、本開示の別の例示的実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオ画像シーケンス内の現在ビデオ画像内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックをコーディングされたビデオシーケンスの一部であるコーディングされた画像にエンコードするように構成されている。図4の例のビデオエンコーダ(403)の代わりに、ビデオエンコーダ(603)を用いることができる。
【0089】
例えば、ビデオエンコーダ(703)は、8×8サンプルの予測ブロック等の処理ブロックに対するサンプル値のマトリックスを受信する。ビデオエンコーダ(703)は、処理ブロックが、例えばレート歪み最適化を使用して、イントラモード、インターモード、又は双方向予測モードを使用して、最良にコーディングされるかどうかを決定する。処理ブロックがイントラモードでコーディングされる場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされた画像にエンコードするためにイントラ予測技術を使用することができ、処理ブロックがインターモード又は双方向予測モードでコーディングされるべきものである場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされた画像にコーディングするために、それぞれ、インター予測技術又は双方向予測技術を使用し得る。いくつかの例示的実施形態では、マージモードは、予測器外部のコード化された動きベクトル成分の利益なしに、動きベクトルが1つ以上の動きベクトル予測器から導出されるインター画像予測サブモードであり得る。いくつかの例示的実施形態では、対象ブロックに適用可能な動きベクトル成分が存在し得る。したがって、ビデオエンコーダ(703)は、処理ブロックのパーディションモードを決定するために、モード決定モジュールなどの図7に明示的に示されていないコンポーネントを含むことがある。
【0090】
図7の例では、ビデオエンコーダ(703)は、図7の例示的配置に示すように、一緒に結合されたエントロピーエンコーダ(725)と、インターエンコーダ(730)と、イントラエンコーダ(722)と、残差計算器(723)と、スイッチ(726)と、残差エンコーダ(724)と、汎用コントローラ(721)と、を含む。
【0091】
インターエンコーダ(730)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照画像内の1つ以上の参照ブロックと比較し(例えば、先行する画像内及び後の画像内のブロック)、インター予測情報(例えば、インターエンコーディング技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、任意の適切な技術を使用して、インター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの実施例では、参照画像は、図6の例示的エンコーダ620に埋め込まれたデコードユニット633を使用して、エンコードされたビデオ情報に基づいてデコードされた、デコードされた参照画像である(図7の残差デコーダ728として示されており、以下でさらに詳細に説明する)。
【0092】
イントラエンコーダ(722)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを同じ画像内で既にコーディングされたブロックと比較し、変換後に量子化された係数を生成し、場合によっては、イントラ予測情報(例えば、1つ以上のイントラコーディング技術に従ったイントラ予測方向情報)も生成するように構成されている。イントラエンコーダ(722)はまた、同じ画像内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算することができる。
【0093】
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成され得る。一実施形態では、汎用コントローラ(721)は、ブロックの予測モードを決定し、その予測モードに基づいてスイッチ(726)に制御信号を供給する。例えば、予測モードがイントラモードの場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するイントラモードの結果を選択し、エントロピーエンコーダ(725)を制御して、イントラ予測情報を選択し、ビットスツリームにイントラ予測情報を含め、予測モードがインターモードの場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するインター予測結果を選択し、エントロピーエンコーダ(725)を制御して、インター予測情報を選択し、ビットスツリームにインター予測情報を含める。
【0094】
残差計算器(723)は、受信されたブロックと、イントラエンコーダ(722)又はインターエンコーダ(730)から選択されたブロックに対する予測結果との差分(残差データ)を計算するように構成され得る。残差エンコーダ(724)は、残差データをエンコードして変換係数を生成するように構成されることができる。一実施例では、残差エンコーダ(724)は、残差データを空間ドメインから周波数ドメインにコンバートし、変換係数を生成するように構成され得る。それから、変換係数は量子化処理に従属して、量子化変換係数を得る。様々な例示的実施形態では、ビデオエンコーダ(703)は、残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、デコードされた残差データを生成するように構成される。デコードされた残差データは、イントラエンコーダ(722)及びインターエンコーダ(730)によって適切に使用されることができる。例えば、インターエンコーダ(730)は、デコードされた残差データ及びインター予測情報に基づいてデコードされたブロックを生成することができ、イントラエンコーダ(722)は、デコードされた残差データ及びイントラ予測情報に基づいてデコードされたブロックを生成することができる。デコードされたブロックは、デコードされた画像を生成するために適切に処理され、デコードされた画像は、メモリ回路(図示せず)内でバッファされ、参照画像として使用され得る。
【0095】
エントロピーエンコーダ(725)は、エンコードされたブロックを含むようにビットスツリームをフォーマットするように構成されている。エントリピーエンコーダ(725)は、種々の情報をビット列に含めるように構成される。例えば、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報、及びビットスツリーム内の他の適切な情報を含むように構成される。インターモード又は双方向予測モードのいずれかのマージサブモードにおけるブロックをコーディングする場合、残差情報は存在しないことがある。
【0096】
図8は、本開示の別の実施形態による例示的ビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされた画像を受信し、コーディングされた画像をデコードして再構成画像を生成するように構成されている。一実施形態では、ビデオデコーダ(810)は、図4の実施形態のビデオデコーダ(410)の代わりに使用される。
【0097】
図8の実施例では、ビデオデコーダ(810)は、図8の例示的配置に示すように、一緒に結合されたイントラデコーダ(872)と、エントロピーデコーダ(871)と、インターデコーダ(880)と、残差デコーダ(873)と、再構成モジュール(874)と、及びを含む。
【0098】
エントロピーデコーダ(871)は、コーディングされた画像から、そのコーディング画像を作成する(of which the coded picture is made up)シンタックス要素を表す特定のシンボルを再構成するように構成することができる。かかるシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、インターモード、双方向予測モード、マージサブモード又は別のサブモードにおけるインターモード、双方向予測モード等)、予測情報(例えば、イントラ予測情報又はインター予測情報)を含むことができ、それらは、イントラデコーダ(822)又はインターデコーダ(880)による予測のために使用される特定のサンプル又はメタデータ、例えば量子化された変換係数の形態の残差情報等、を識別することができる。実施例において、予測モードがインターモードであるか双方向予測モードであるときに、インター予測情報はインターデコーダ(880)に提供され;そして、予測タイプがイントラ予測タイプであるときに、イントラ予測情報はイントラデコーダ(872)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(873)に提供される。
【0099】
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
【0100】
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
【0101】
残差デコーダ(873)は、逆量子化変換係数(de-quantized transform coefficients)を抽出するために逆量子化を実行し、逆量子化変換係数を処理して残差を周波数ドメインから空間ドメインにコンバートするように構成される。残差デコーダ(873)はまた、特定の制御情報(量子化器パラメータ(QP)を含む)を利用することがあり、その情報は、エントロピーデコーダ(871)によって提供され得る(データパスは、低データボリューム制御情報のみであるため、図示されていない)。
【0102】
再構成モジュール(874)は、空間ドメインにおいて、(場合によってはインター又はイントラ予測モジュールによる出力として)予測結果と、残差デコーダ(873)による出力としての残差とを組み合わせ、再構成されたビデオの一部として再構成された画像の一部を形成する再構成ブロックを形成する、ように構成され得る。デブロッキング動作等の他の適切な動作を行って、視覚品質を改善することができることに留意されたい。
【0103】
なお、ビデオエンコーダ(403)、(603)及び(703)と、ビデオデコーダ(410)、(510)、及び(810)とは、任意の適切な技術を用いて実現することができる。いくつかの例示的実施形態では、ビデオエンコーダ(403)、(603)及び(703)と、ビデオデコーダ(410)、(510)及び(810)とは、1つ以上の集積回路を使用して実装され得る。別の実施形態では、ビデオエンコーダ(403)、(603)及び(603)と、ビデオデコーダ(410)、(510)、及び(810)とは、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実現することができる。
【0104】
コーディング及びデコーディングのためのブロック分割に目を向けると、一般的な分割又はパーティショニング(partitioning)はベースブロックから始まり、所定のルールセット、特定のパターン、パーティションツリー、又は任意のパーティション構造又はスキームに従うことができる。分割は階層的かつ再帰的である。以下に示す分割手順や他の手順の例、又はそれらの組み合わせに従ってベースブロックを区分け(dividing)又はパーティショニングした後、最終的なパーティション又はコーディングブロックのセットを得ることができる。これらの各パーティションは、パーティション階層内のさまざまなパーティションレベルのいずれかにあり、種々の形状であり得る。各パーティションは、コーディングブロック(CB)と称され得る。以下でさらに説明するパーティショニングの種々の実施例では、結果として得られる各CBは、許容されるサイズとパーティションレベルのいずれかであることができる。かかるパーティションは、基本的なコーディング/デコーディングの決定が行われるユニットを形成し、コーディング/デコーディング パラメータが最適化され、決定され、エンコードされたビデオビットスツリームでシグナリングされる可能性があるため、コーディングブロックと称される。最終パーティションの最上又は最深レベルは、ツリーのコーディングブロックパーティション構造の深さを表す。コーディングブロックには、ルミナンスコーディングブロック又はクロマコーディングブロックがある。各色のCBツリー構造は、コーディングブロックツリー(CBT)と称されることがある。
【0105】
すべてのカラーチャネルのコーディングブロックは、まとめてコーディングユニット(CU)と称されることがある。すべてのカラーチャネルの階層構造は、まとめてコーディングツリーユニット(CTU)と称されることがある。CTU内の種々のカラーチャネルのパーティショニングパターン又は構造は、同じである場合とそうでない場合がある。
【0106】
いくつかの実装では、ルマチャネル及びクロマチャネルに使用されるパーティショニングツリースキーム又は構造が同じである必要がない場合がある。つまり、ルマチャネル及びクロマチャネルは別個のコーディングツリー構造又はパターンを有することができる。さらに、ルマチャネル及びクロマチャネルが同じ又は別のコーディングパーティショニングツリー構造を使用するかどうか、及び使用される実際のコーディングパーティショニングツリー構造は、コーディングされるスライスがP、B、又はIスライスであるかによって異なる。例えば、Iスライスの場合、クロマチャネルとルマチャネルは別個のコーディングパーティションツリー構造又はコーディングパーティションツリー構造モードを有することがあるが、P又はBスライスの場合、ルマチャネルとクロマチャネルは同じコーディングパーティションツリー構造を共有することがある。別個のコーディングパーティションツリー構造又はモードが適用される場合、ルマチャネルは1つのコーディングパーティションツリー構造によってCBに分割され、クロマチャネルは別のコーディングパーティションツリー構造によってクロマCBに分割され得る。
【0107】
いくつかの例示的実施形態では、所定のパーティショニングパターンがベースブロックに適用され得る。図9に示すように、4方向パーティションツリー(4-way partition tree)の例では、第1所定レベル(例:基本ブロックサイズとして64×64ブロックレベル又は他のサイズ)から開始し、ベースブロックを所定の最下位レベル(例:4×4レベル)まで階層的に分割することができる。例えば、ベースブロックは、902,904,906と908で示される4つの所定のパーティションオプション又はパターンの対象となり、Rとして指定されたパーティションは、図9に示されるのと同じパーティションオプションで、最下位レベル(例:4×4レベル)までより低いスケールで繰り返すことができるという再帰的パーティショニングが許可される。いくつかの実装では、図9のパーティショニングスキームに追加の制限が適用され得る。図9の実装では、長方形のパーティション(例:1:2/2:1の長方形のパーティション)は許可され得るが、再帰的であることは許可されない場合がある一方、正方形のパーティションは再帰的であることができる。図9に続く再帰を伴うパーティショニングは、必要に応じて、コーディングブロックの最終セットを生成する。ルートノード又はルートブロックからのスプリッティング深さを示すために、コーディングツリー深さを画定することができる。例えば、64×64ブロックなどのルートノード又はルートブロックのコーディングツリー深さを0に設定し、図9に続いてルートブロックをさらに一度スプリットした後、コーディングツリー深さを1増やすことができる。64×64ベースブロックから4×4の最小パーティションまでの最大又は最も深いレベルは、上記のスキームでは(レベル0から開始)して4になる。かかるパーティショニングスキームは、1つ以上のカラーチャネルに適用される場合がある。各カラーチャネルは、図9のスキームに従って独立してパーティショニングされ得る(例えば、所定のパターンの中のパーティショニングパターン又はオプションは、各階層レベルでカラーチャネルのそれぞれについて独立して決定され得る)。あるいは、2つ以上のカラーチャネルは、図9の同じ階層パターンツリーを共有する場合がある(例えば、各階層レベルの2つ以上のカラーチャネルに対して、所定のパターンの中から同じパーティショニングパターン又はオプションを選択することができる)。
【0108】
図10は、再帰パーティショニングがパーティショニングツリーを形成することを可能にする別の例示的所定のパーティショニングパターンの例を示している。図10に示すように、10通りのパーティショニング構造又はパターンの例が予め定められることができる。ルートブロックは、所定のレベル(例えば、128×128レベル、又は64×64レベルのベースブロックから)で開始することができる。図10の例示的パーティショニング構造は、様々な2:1/1:2及び4:1/1:4の長方形パーティションを含む。図10の2行目に1002、1004、1006、1008と示されている3つのサブパーティションを有するパーティションの種類は、「T型」パーティションと称されることがある。「T型」パーティション1002、1004、1006、及び1008は、Left T-Type、Top T-Type、Right T-Type、Bottom T-Typeと称されることがある。いくつかの実装例では、図10の長方形パーティションのいずれも、さらに細分割することはできない。ルートノート又はルートブロックからのスプリッティング深さを示すために、コーディングツリー深さをさらに画定することができる。例えば、ルートノード又はルートブロックのコーディングツリー深さ、例えば、128×128ブロック、を0に設定し、図10にしたがってルートブロックをさらに1回スプリットした後、コーディングツリーの深さを1増やす。いくつかの実装では、図10のパターンに従って、パーティショニングツリーの次のレベルに再帰的にパーティショニングするために、1010の全て正方形のパーティションのみが許可される場合がある。つまり、T型のパターン1002、1004、1006、及び1008内の正方形のパーティションには、再帰的パーティショニングが許可されない場合がある。図10に続く、再帰を伴うパーティショニング手順は、必要に応じて、コーディングブロックの最終セットを生成する。かかるスキームは、1つ以上のカラーチャネルに適用できる。いくつかの実装では、8×8レベル以下のパーティションの使用に、より柔軟性が付加される場合がある。例えば、2×2クロマインター予測が特定のケースで使用される場合がある。
【0109】
コーディングブロックパーティショニングのためのいくつかの他の例示的実装では、ベースブロック又は中間ブロックをクオドツリーパーティションにスプリットするためにクオドツリー構造を使用することができる。かかるクオドツリースプリッティングは、任意の正方形のパーティションに階層的かつ再帰的に適用することができる。ベースブロックと中間ブロック又はパーティションのどちらがさらにクオドツリースプリットであるかどうかは、ベースブロック又は中間ブロック/パーティションの種々の局所的特性に適応させることができる。画像境界でのクオドツリーパーティショニングは、さらに適応させることができる。例えば、サイズが画像境界にフィットするまでブロックがクオドツリースプリッティングを維持するように、暗黙的なクオドツリースプリッティングを画像境界で実行することができる。
【0110】
いくつかの他の例示的実装では、ベースブロックからの階層的バイナリパーティショニングを使用することができる。かかるスキームでは、ベースブロック又は中間レベルブロックを2つのパーティションに分割することができる。バイナリパーティションは、水平又は垂直のいずれかである。例えば、水平バイナリパーティションは、ベースブロック又は中間ブロックを均等な左右のパーティションにスプリットすることができる。同様に、垂直バイナリパーティショニングは、ベースブロック又は中間ブロックを均等な上下のパーティションにスプリットすることができます。このようなバイナリパーティショニングは階層的かつ再帰的である。バイナリパーティショニングスキームを継続するかどうか、またスキームがさらに継続する場合は水平又は垂直のバイナリパーティショニングを使用すべきかどうかは、ベースブロック又は中間ブロックのそれぞれで決定される。いくつかの実装では、さらなるパーティショニングは所定の最低パーティションサイズで(両方又は片方の時限において)停止する場合がある。あるいは、さらなるパーティショニングは、一旦、所定のパーティショニングレベル又はベースブロックからの深さに達すると、停止する場合がある。いくつかの実装では、パーティションのアスペクト比が制限される場合がある。例えば、パーティションのアスペクト比は1:4(又は4:1より大きい)より小さくなり得ない。そのため、垂直対水平のアスペクト比が4:1を有する垂直ストリップパーティションは、さらに、それぞれ垂直対水平のアスペクト比が2:1を有する上部及び下部のパーティションに、垂直方向にバイナリパーティションされ得る。
【0111】
さらにいくつかの他の実施例では、図13に示すように、ベースブロック又は任意の中間ブロックをパーティショニングするためにターナリパーティショニングスキームを使用することができる。ターナリパターンは、図13の1302に示すように垂直に実装することも、図13の1304に示すように水平に実装することもできる。図13のスプリット比の例は、垂直又は水平のいずれかで1:2:1と示されているが、他の比率が事前に定義されている場合もある。いくつかの実装では、2つ以上の異なる比率が事前に定義されている場合があります。かかるターナリパーティショニングスキームは、クオドツリー又はバイナリパーティショニング構造を補完するために使用されることができ、かかるトリプルツリーパーティショニングは、ブロックの中心にあるオブジェクトを1つの隣接するパーティションに捕捉することができるが、クオドツリー及びバイナリツリーは常にブロックの中心に沿ってスプリッティングされるため、オブジェクトを別個のパーティションにスプリットする。いくつかの実装では、追加の変換を避けるために、例示的トリプルツリーのパーティションの幅と高さは常に2の累乗になる。
【0112】
上記のパーティショニングスキームは、異なるパーティショニングレベルで任意の方法で組み合わせることができる。一実施例として、上記のクオドツリー及びバイナリパーティショニングスキームを組み合わせて、ベースブロックをクオドツリーバイナリ(QTBT)構造にパーティショニングすることができる。かかるスキームでは、ベースブロック又は中間ブロック/パーティションは、指定されている場合、一連の定義済み条件に従って、クオドツリースプリット又はバイナリパースプリットのいずれかになる。特定の実施例を図14に示す。図14の実施例では、ベースブロックはまず、1402、1404、1406、及び1408で示されるように、4つのパーティションにスプリットされたクオドツリーである。その後、結果として得られる各パーティションは、クオドツリーでさらに4つのパーティションにパーティショニングされるか(1408のように)、次のレベルでさらに2つのパーティションにバイナリスプリットされる(例えば、1402又は1406のように水平又は垂直のいずれかで、どちらも対称である)か、又はスプリットされない(1404のように)。バイナリ又はクオドツリーのスプリッティングは、1410の全体的な例示的パーティショニングパターンと、1420の対応するツリー構造/表現とによって示されているように、正方形のパーティションに対して再帰的に許可されることがあり、実線はクオドツリースプリッティングを表し、破線はバイナリのスプリッティングを表す。バイナリスプリッティングノード(非リーフバイナリパーティション)ごとにフラグを使用して、バイナリスプリッティングが水平か垂直かを示すことができる。例えば、1420に示すように、1410のパーティショニング構造と一致して、フラグ「0」は水平バイナリスプリッティングを表し、フラグ「1」は垂直バイナリスプリッティングを表すことができる。クオドツリースプリットパーティションでは、クオドツリースプリッティングは常にブロック又はパーティションを水平及び垂直にスプリッティングして、同じサイズの4つのサブブロック/パーティションを生成するため、スプリッティングの種類を示す必要はない。いくつかの実装では、フラグ「1」が水平バイナリスプリッティングを表し、フラグ「0」が垂直バイナリスプリッティングを表す場合がある。
【0113】
いくつかのQTBTの例示的実装では、クオドツリー及びバイナリスプリッティングルールセットは、次の所定のパラメータとそれに関連付けられた対応する関数によって表される場合がある。
- CTUサイズ:クオドツリーのルートノードのサイズ(ベースブロックのサイズ)
- MinQTSize:最小許容クオドツリーリーフノードサイズ
- MaxBTSize:最大許容バイナリツリールートノードサイズ
- MaxBTDepth:最大許容バイナリツリー深さ
- MinBTSize:最小許容バイナリツリールートノードサイズ
QTBTパーティショニング構造のいくつかの実装例では、CTUサイズは、クロマサンプルの2つの対応する64×64ブロックを含む128×128ルマサンプルとして設定でき(クロマサブサンプリングの例を考慮して使用する場合)、MinQTSizeは16×16に設定でき、MaxBTSizeは64×64に設定でき、MinBTSize(幅と高さの両方)は4×4に設定でき、MaxBTDepthは4に設定できる。クオドツリーパーティショニングは、クオドツリーリーフノードを生成するために最初にCTUに適用される。クオドツリーリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までの最小許容サイズを有する。リーフQTノードが128×128の場合、サイズがMaxBTSize(すなわち64×64)を超えるため、最初にバイナリツリーによってスプリットされることはない。さもなければ、MaxBTSizeを超えないノードがバイナリツリーによってパーティショニングされることができる。図14の例では、ベースブロックは128×128である。ベーシックブロックは、所定のルールセットに従って、クオドツリースプリットのみが可能である。バーシックブロックのパーティショニング深さは0である。結果として得られる4つのパーティションはそれぞれ64×64で、MaxBTSizeを超えず、レベル1でさらにクオドツリー又はバイナリツリースプリットされ得る。プロセスは続行される。バイナリツリー深さがMaxBTDepth(すなわち4)に達した場合、それ以上のスプリッティングは考慮されない。バイナリツリーノードがMinBTSizeに等しい幅を有する場合(すなわち4)、それ以上の水平スプリッティングは考慮されない。同様に、バイナリツリーノードがMinBTSizeに等しい高さを有する場合、それ以上の垂直スプリッティングは考慮されない。
【0114】
いくつかの例示的実装では、上部のQTBTスキームは、ルマ及びクロマが同じQTBT構造又は別個のQTBT構造を有する柔軟性をサポートするように構成される場合がある。例えば、PスライスとBスライスでは、1つのCTUのルマ及びクロマCTBが同じQTBT構造を共有している。しかしながら、Iスライスの場合、ルマCTBはQTBT構造によってCBにパーティショニングされ、クロマCTBは別のQTBT構造によってクロマCUにパーティショニングされる。これは、CUを使用してIスライス内の異なるカラーチャネルを参照できることを意味し、例えば、Iスライスはルマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックで構成され、P又はBスライス内のCUは3つのカラー成分全てのコーディングブロックで構成され得る。
【0115】
いくつかの他の実装では、QTBTスキームは、上述のターナリスキームで補われることができる。かかる実装は、マルチタイプツリー(MTT)構造と称され得る。例えば、ノードのバイナリスプリッティングに加えて、図13のターナリパーティションパターンのうちの1つが使用されることができる。いくつかの実装では、スクエアノードのみがターナリスプリッティングの対象となり得る。追加のフラグを使用して、ターナリパーティショニングが水平か垂直かを示すことができる。
【0116】
QTBT実装やターナリスプリッティングによって補完されたQTBT実装などの2レベル又はマルチレベルツリーの設計は、主に複雑さの軽減によって動機付けられ得る。理論的には、ツリーを横断する複雑さは、Tであり、Tはスプリットタイプの数を示し、Dはツリーの深さを示す。深さ(D)を低減しながら、複数のタイプ(T)を使用することでトレードオフを行うことができる。
【0117】
いくつかの実装では、CBをさらにパーティショニングされ得る。例えば、CBは、コーディング及びデコードプロセス中のイントラフレーム又はインターフレーム予測の目的で、複数の予測ブロック(PB)にさらにパーティショニングされ得る。換言すると、CBはさらに、異なるサブパーティションに分割され、個々の予測決定/構成が行われ得る。並行して、CBは、ビデオデータの変換又は逆変換が実行されるレベルを描写する目的で、複数の変換ブロック(TB)にさらにパーティショニングされ得る。CBをPB及びTBへとパーティショニングするスキームは、同じである場合とそうでない場合がある。例えば、各パーティショニングスキームは、例えばビデオデータのさまざまな特性に基づいて、独自の手順を使用して実行される場合がある。PB及びTBパーティショニングスキームは、いくつかの例示的実装では独立している場合がある。PB及びTBのパーティショニングスキーム及び境界は、いくつかの他の例示的実装では相関する場合がある。いくつかの実装では、例えば、TBはPBのパーティショニング後にパーティショニングされることができ、特に、各PBは、コーディングブロックのパーティショニング後に決定され、その後、さらに1つ以上のTBにパーティショニングされ得る。例えば、いくつかの実装では、PBは1、2、4、又はその他の数のTBにスプリットされる場合がある。
【0118】
いくつかの実装では、ベースブロックをコーディングブロックにパーティショニングし、さらに予測ブロック及び/又は変換ブロックにパーティショニングする場合、ルミナンスチャネルとクロマチャネルを別々に扱うことができる。例えば、いくつかの実装では、コーディングブロックを予測ブロック及び/又は変換ブロックにパーティショニングすることは、ルマチャネルに対して許可されることができるが、そのようなコーディングブロックを予測ブロック及び/又は変換ブロックにパーティショニングすることは、(1つ以上の)クロマチャネルでは許可されない場合がある。そのような実装では、ルミナンスブロックの変換や予測は、したがって、コーディングブロックレベルでのみ実行される場合がある。別の実施例として、(1つ以上の)ルマチャネル及びクロマチャネルについての最小変換ブロックサイズは異なる場合があり、例えば、ルマチャネルのためのコーディングブロックは、クロマチャネルよりも小さな変換ブロック及び/又は予測ブロックにパーティショニングすることが許可される場合がある。さらにまた別の実施例として、コーディングブロックを変換ブロック及び/又は予測ブロックにパーティショニングする最大深さは、ルマチャネル及びクロマチャネルの間で異なる場合があり、例えば、ルマチャネルのためのコーディングブロックは、(1つ以上の)クロマチャネルよりも深い変換ブロック及び/又は予測ブロックにパーティショニングすることが許可される場合がある。具体的な実施例として、ルマコーディングブロックは、複数のサイズの変換ブロックにパーティショニングされ、最大2レベルダウンの再帰的パーティションで表すことができ、正方形、2:1/1:2、4:1/1:4などの変換ブロックの形状と、4×4から64×64までの変換ブロックのサイズが許可される場合がある。ただし、クロマブロックの場合は、ルマブロックに指定された可能な最大の変換ブロックのみが許可される場合がある。
【0119】
コーディングブロックをPBにパーティショニングするいくつかの実装例では、PBパーティショニングの深さ、形状、及び/又はその他の特性は、PBがイントラ又はインターコーディングされているかどうかによって異なる場合がある。
【0120】
コーディングブロック(又は予測ブロック)の変換ブロックへのパーティショニングは、再帰的又は非再帰的に、コーディングブロック又は予測ブロックの境界にある変換ブロックをさらに考慮して、クオドツリースプリッティング及び所定のパターンスプリッティングを含むがこれに限定されない、さまざまな例のスキームで実装される場合がある。一般に、結果として得られる変換ブロックは、異なるスプリットレベルであってもよく、同じサイズであってもよく、形状が正方形である必要がない場合もある(例えば、いくつかの許容されたサイズとアスペクト比で長方形にすることができる。)。さらなる例は、図15、16及び17に関連して以下でさらに詳細に説明する。
【0121】
しかし、いくつかの他の実装では、上記のパーティショニングスキームのいずれかを介して得られたCBを、予測及び/又は変換のためのベーシック又は最小のコーディングブロックとして使用することができる。つまり、インター予測/イントラ予測の目的及び/又は変換の目的で、それ以上のスプリッティングは行われない。例えば、上記のQTBTスキームから得られたCBは、予測を実行するための単位として直接使用される場合がある。具体的には、このようなQTBT構造は、複数のパーティションの種類の概念を削除する、すなわち、CU、PU、及びTUの分離を削除し、上記のようにCU/CBパーティション形状のより柔軟性をサポートする。かかるなQTBTブロック構造では、CU/CBは正方形又は長方形のいずれかの形状を有することができる。かかるQTBTのリーフノードは、それ以上パーティショニングすることなく、予測及び変換処理の単位として使用される。これは、かかる例示的QTBTコーディングブロック構造では、CU、PU、及びTUのブロックサイズが同じであることを意味する。
【0122】
上記のさまざまなCBパーティショニングスキームと、CBのPB及び/又はTBへのさらなるパーティショニング(PB/TBパーティショニングなしを含む)は、任意の方法で組み合わせることができる。次の特定の実装は、非制限の例として提供されている。
【0123】
コーディングブロックと変換ブロックのパーティショニングの具体的な実装例を次に示す。かかる例示的実装では、再帰的なクオドツリーパーティショニング、又は前述の所定のスプリッティングパターン(図9及び図10のような)を使用して、ベースブロックをコーディングブロックにスプリットできる。各レベルで、特定のパーティションのさらなるクオドツリースプリッティングを継続するかどうかは、ローカルのビデオデータ特性によって決定される場合がある。結果のCBは、さまざまなクオドツリースプリッティングレベルで、さまざまなサイズになり得る。インター画像(時間的)予測又はイントラ画像(空間的)予測を使用して画像領域をコーディングするかどうかの決定を、CUレベルで行うことができる(又はCUレベル、全ての3色チャンネル)。各CBは、所定のPBスプリッティングタイプに従って、さらに1、2、4、又はその他の数のPBにスプリットされる。1つのPBの内部では、同じ予測プロセスが適用され、関連する情報がPBベースでデコーダに送信されることがある。PBスプリッティングタイプに基づく予測プロセスを適用して残余ブロックを取得した後、CBのコーディングツリーに似た別のクオドツリー構造に従ってCBをTBにパーティショニングできる。この特定の実装では、CB又はTBは正方形に限定される必要はない。さらに、この特定の例では、PBは、インター予測の場合は正方形又は長方形の形状である場合があり、イントラ予測の場合は正方形のみの場合がある。コーディングブロックは、例えば4つの正方形のTBにスプリットすることができる。各TBは、さらに再帰的に(クオドツリースプリットを使用して)より小さなTBにスプリットすることができ、これは残差クオドツリー(Residual Quadtree:RQT)と称される。
【0124】
ベースブロックをCB、PB、又はTBにパーティショニングする別の例示的実装を以下にさらに説明する。例えば、図9図10に示されているような複数のパーティションユニットタイプを使用するのではなく、バイナリ及びターナリスプリットセグメンテーション構造(例えば、上記のようなターナリスプリッティングを伴うQTBTやQTBT)を使用したネストされた複数タイプツリーを有するクオドツリーを使用することができる。CB、PB及びTBの分離(すなわち、CBをPB及び/又はTBにパーティショニングし、PBをTBにパーティショニングする)は、かかるCBがさらにスプリッティングする必要がある場合があり、最大変換長に対して大きすぎるサイズのCBに必要な場合を除いて、放棄することができる。この例示的パーティショニングスキームは、さらなるパーティショニングを行わずに予測と変換の両方をCBレベルで実行できるように、CBパーティショニング形状のより柔軟性をサポートするように設計することができる。かかるコーディングツリー構造では、CBは正方形又は長方形のいずれかの形状をとることができる。具体的には、コーディングツリーブロック(CTB)は、最初にクオドツリー構造によってパーティショニングされることがある。その後、クオドツリーリーフノードは、ネストされたマルチタイプツリー構造によってさらにパーティショニングされることがある。バイナリ又はターナリスプリッティングを使用したネストされたマルチタイプのツリー構造の例を図11に示す。具体的には、図11の例示的マルチタイプツリー構造は、垂直バイナリスプリッティング(SPLIT_BT_VER)(1102)、水平バイナリスプリッティング(SPLIT_BT_HOR)(1104)、垂直ターナリスプリッティング(SPLIT_TT_VER)(1106)、水平ターナリスプリッティング(SPLIT_TT_HOR)(1108)と称される4つのスプリッティングタイプが含まれる。その後、CBはマルチタイプツリーのリーフに対応する。この例示的実装では、CBが最大変換長に対して大きすぎる場合を除き、このセグメント化は予測と変換処理の両方に使用され、それ以上のパーティショニングは行われない。これは、ほとんどの場合、CB、PB、TBは、ネストされたマルチタイプのツリーコーディングブロック構造有するクオドツリーで同じブロックサイズを有することを意味する。サポートされる最大変換長がCBのカラーコンポーネントの幅又は高さよりも小さい場合、例外が発生する。いくつかの実装では、バイナリ又はターナリスプリッティングに加えて、図11のネストされたパターンには、クオドツリースプリッティングがさらに含まれ得る。
【0125】
1つのベースブロックに対するブロックパーティション(クオドツリー、バイナリ、及びターナリスプリッティングオプションを含む)のネストされたマルチタイプのツリーコーディングブロック構造を有するクオドツリーの具体例を図12に示す。より詳細には、図12は、ベースブロック1200が四つの正方形のパーティション1202、1204、1206、1208にスプリットされたクオドツリーであることを示す。図11のマルチタイプのツリー構造と、さらなるスプリッティングのためのクオドツリーをさらに使用する決定は、クオドツリースプリットされたパーティションごとに行われる。図12の実施例では、パーティション1204はさらにスプリットされない。パーティション1202及び1208はそれぞれ別のクオドツリースプリットを採用する。パーティション1202の場合、第2レベルのクオドツリースプリットの左上、右上、左下、及び右下のパーティションは、それぞれクオドツリーの第3レベルスプリッティング、図11の水平バイナリスプリッティング1104、図11の非スプリッティング、水平ターナリスプリッティング1108を採用している。パーティション1208は別のクオドツリースプリットを採用し、第2レベルのクオドツリースプリットの左上、右上、左下、右下のパーティションは、それぞれ図11の垂直ターナリスプリッティング1106、図11の非スプリッティング、非パーティショニング、水平バイナリスプリッティング1104の第3レベルスプリッティングを採用している。第3レベルの左上パーティション1208の2つのサブパーティションは、それぞれ図11の水平バイナリスプリッティング1104と水平ターナリスプリッティング1108に従ってさらにスプリットされる。パーティション1206は、図11の垂直バイナリスプリッティング1102に続く第2レベルスプリットパターンを、図11の水平ターナリパーティショニング1108と垂直バイナリパーティショニング1102に従ってさらに第3レベルでスプリットされる2つのパーティションに採用する。第4レベルスプリッティングは、図11の水平バイナリスプリッティング1104に従ってさらにそれらの一方に適用される。
【0126】
上記の具体例では、最大ルマ変換サイズは64×64であり、サポートされる最大クロマ変換サイズは、例えば32×32でルマと異なる可能性がある。図12の上の例のCBは、全体的に、より小さなPB及び/又はTBにさらにスプリットされていないが、ルマコーディングブロック又はクロマコーディングブロックの幅又は高さが最大変換幅又は高さよりも大きい場合、ルマコーディングブロック又はクロマコーディングブロックは、水平方向及び/又は垂直方向の変換サイズの制限を満たすように、その方向に自動的にスプリットされることができる。
【0127】
ベースブロックを上記のCBにパーティショニングする具体例では、前述のように、コーディングツリースキームは、ルマ及びクロマが別々のブロックツリー構造を有する能力をサポートする場合がある。例えば、PスライスとBスライスでは、1つのCTUのルマ及びクロマCTBが同じコーディングツリー構造を共有している。例えば、Iスライスの場合、ルマとクロマは別々のコーディングブロックツリー構造を持つことができる。個別のブロックツリー構造を適用すると、ルマCTBは1つのコーディングツリー構造によってルマCUにパーティションされ、クロマCTBは別のコーディングツリー構造によってクロマCUにパーティションされる。これは、Iスライス中のCUは、ルマ成分のコーディングブロック又は2つのクロマ成分のコーディングブロックを含むことができ、Pスライス又はBスライス中のCUは、ビデオがモノクロでない限り常に、3つのカラー成分すべてのコーディングブロックを含むことができることを意味する。
【0128】
コーディングブロックがさらに複数の変換ブロックにパーティショニングされる場合、その中の変換ブロックは、さまざまな順序又はスキャン方法に従ってビットスツリーム内で順序付けされることがある。コーディングブロック又は予測ブロックを変換ブロックにパーティショニングする実例示的装及び変換ブロックのコーディング順序については、以下でさらに詳細に説明する。いくつかの例示的実装では、前述のように、変換パーティショニングは、例えば4×4から64×64までの変換ブロックサイズで、例えば1:1(正方形)、1:2/2:1、及び1:4/4:1などの複数の形状の変換ブロックをサポートすることがある。いくつかの実装では、コーディングブロックが64×64以下の場合、変換ブロックパーティショニングはルマコンポーネントにのみ適用される場合があり、クロマブロックの場合、変換ブロックサイズはコーディングブロックサイズと同じになる。それ以外の場合、コーディングブロックの幅又は高さが64より大きい場合、ルマブロックとクロマコーディングブロックの両方が、それぞれmin(W、64)×min(H、64)及びmin(W、32)×min(H32)の倍数の変換ブロックに暗黙的にスプリットされることがある。
【0129】
変換ブロックパーティショニングのいくつかの例示的実装では、イントラコーディングブロック及びインターコーディングブロックの両方について、コーディングブロックは、所定の数のレベル(例:2レベル)までのパーティショニング深さを有する複数の変換ブロックにさらにパーティショニングされることがある。変換ブロックのパーティショニング深さとサイズは関連することがある。いくつかの例示的実装では、現在の深さの変換サイズから次の深さの変換サイズへのマッピングを表1に示す。
【表1】
【0130】
表1の例示的マッピングに基づいて、1:1正方形ブロックの場合、次のレベルの変換スプリットによって4つの1:1正方形サブ変換ブロックが作成されることがある。変換パーティションは、例えば4 x 4でストップすることがある。そのため、4x4の現在深さの変換サイズは、次の深さの同じ4x4のサイズに対応する。表1の例では、1:2/2:1非正方形ブロックの場合、次のレベルの変換スプリットによって2つの1:1正方形サブ変換ブロックが作成されることがあり、1:4/4:1非正方形ブロックの場合、次のレベルの変換パーティショニングによって2つの1:2/2:1サブ変換ブロックが作成されることがある。
【0131】
いくつかの例示的実装では、イントラコーディングブロックのルマコンポーネントに対して、変換ブロックのパーティショニングに関して追加の制限が適用される場合がある。例えば、変換パーティショニングのレベルごとに、すべてのサブ変換ブロックが同じサイズを有するように制限される場合がある。例えば、32×16のコーディングブロックの場合、レベル1の変換スプリットで、2つの16×16サブ変換ブロックが作成され、レベル2の変換スプリットでは8つの8×8サブ変換ブロックが作成される。換言すると、変換ユニットを同じサイズに保つには、第2レベルのスプリットを全ての第1レベルのサブブロックに適用する必要がある。表1に従ったイントラコーディング正方形ブロックの変換ブロックパーティショニングの例が、矢印で示すコーディング順序とともに、図15に示されている。具体的には、1502は正方形コーディングブロックを示す。表1に従って4つの同じサイズの変換ブロックにスプリットされた第1レベルは、矢印で示すコーディング順序で1504に示されている。表1に従って、第1レベルの全ての同じサイズのブロックを16個の同じサイズの変換ブロックにスプリットした第2レベルスプリットは、矢印で示されたコーディング順序で1506に示されている。
【0132】
いくつかの例示的実装では、インターコーディングブロックのルマコンポーネントについて、上記のイントラコーディングの制限が適用されない場合がある。例えば、変換スプリッティングの第1レベルの後に、サブ変換ブロックのいずれか1つが、さらに1つのレベルで独立してスプリットされる場合がある。したがって、結果の変換ブロックは同じサイズになる場合とならない場合がある。インターコーディングされたブロックをそのコーディング順序で変換ブロックにスプリットする例を図16に示す。図16の例では、インターコーディングされたブロック1602は、表1に従って2つのレベルで変換ブロックにスプリットされる。第1レベルでは、インターコーディングされたブロックは、同じサイズの4つの変換ブロックにスプリットされる。次に、4つの変換ブロックのうちの1つだけ(全てではない)が4つのサブ変換ブロックにさらにスプリットされ、1604で示すように、2つの異なるサイズを有する合計7つの変換ブロックになる。これら7つの変換ブロックのコーディング順序の例は、図16の1604の矢印で示されている。
【0133】
いくつかの例示的実装では、(1つ以上の)クロマコンポーネントについて、変換ブロックの追加の制限が適用される場合がある。例えば、(1つ以上の)クロマコンポーネントの場合、変換ブロックのサイズはコーディングブロックのサイズと同じ大きさにすることができるが、8×8などの予め定義されたサイズより小さくすることはできない。
【0134】
他のいくつかの例示的実装では、幅(W)又は高さ(H)のいずれかが64より大きいコーディングブロックの場合、ルマコーディングブロックとクロマコーディングブロックの両方が、それぞれmin(W、64)×min(H、64)及びmin(W、32)×min(H、32)の倍数の変換ユニットに暗黙的にスプリットされることがある。ここで、本開示では、「min(a,b)」はaとbの間のより小さい値を返すことがある。
【0135】
図17はさらに、コーディングブロック又は予測ブロックを変換ブロックにパーティショニングする別の代替的実施例スキームを示す。図17に示すように、再帰的な変換パーティショニングを使用する代わりに、コーディングブロックの変換タイプに応じて、予め定義された一連のパーティショニングタイプをコーディングブロックに適用することができる。図17に示す特定の例では、6つの例示的パーティショニングタイプのいずれかを適用して、コーディングブロックをさまざまな数の変換ブロックにスプリットすることができる。かかる変換ブロックパーティショニングを生成するスキームは、コーディングブロック又は予測ブロックのいずれかに適用することができる。
【0136】
より詳細には、図17のパーティショニングスキームは、任意の所与の変換タイプに対して最大6つの例示的パーティショニングタイプを提供する(変換タイプは、ADSTなどの例えば一次変換のタイプを指す)。このスキームでは、全コーディングブロック又は予測ブロックに、例えばレート歪みコストに基づいて変換パーティションタイプを割り当てることができる。実施例では、コーディングブロック又は予測ブロックに割り当てられる変換パーティションタイプは、コーディングブロック又は予測ブロックの変換タイプに基づいて決定されることがある。特定の変換パーティションタイプは、図17に示す6つの変換パーティションタイプによって示されるように、変換ブロックスプリットのサイズとパターンに対応することがある。さまざまな変換タイプとさまざまな変換パーティションタイプとの間の対応関係を予め定義する(predefined)ことができる。次に、レート歪みコストに基づいてコーディングブロック又は予測ブロックに割り当てることができる変換パーティションタイプを示す大文字のラベルの例を示します。
【0137】
・ PARTITION_NONE:ブロックサイズと同じ変換サイズを割り当てる
【0138】
・ PARTITION_SPLIT:ブロックサイズの1/2の幅及びブロックサイズの1/2の高さの変換サイズを割り当てる
【0139】
・ PARTITION_HORZ:ブロックサイズと同じ幅及びブロックサイズの1/2の高さの変換サイズを割り当てる
【0140】
・ PARTITION_VERT:ブロックサイズの1/2の幅及びブロックサイズと同じ高さの変換サイズを割り当てる
【0141】
・ PARTITION_HORZ4:ブロックサイズと同じ幅及びブロックサイズの1/4の高さの変換サイズを割り当てる
【0142】
・ PARTITION_VERT4:ブロックサイズの1/4の幅、ブロックサイズと同じ高さの変換サイズを割り当てる
【0143】
上記の例では、図17に示すような変換パーティションタイプは全て、パーティションされた変換ブロックについて均一な変換サイズが含まれている。これは制限ではなく単なる例示である。他のいくつかの実装では、特定のパーティションタイプ(又はパターン)のパーティションされた変換ブロックに対して、混合された変換ブロックサイズが使用されることがある。
【0144】
上記のパーティショニングスキームのいずれかから取得されたPB(又はCB、予測ブロックにさらにパーティショニングされていない場合はPBとも称される)は、イントラ又はインター予測を介するコーディングのための個々のブロックになることがある。現在のPBのインター予測の場合、現在のブロックと予測ブロックとの間の残差が生成され、コーディングされ、コーディングされたビットスツリームに含まれることがある。
【0145】
インター予測は、例えば、単一参照モード又は複合参照モードで実装できる。いくつかの実装では、現在のブロックがインターコーディングされていてスキップされないかどうかを示すために、スキップフラグをまず、現在ブロックのビットスツリーム(又はより高いレベル)に含めることができる。現在ブロックがインターコーディングされている場合は、現在のブロックに単一参照モード又は複合参照モードが使用されているかどうかを示す信号として、別のフラグをさらにビットスツリームに含めることができる。単一参照モードの場合は、1つの参照ブロックを使用して現在ブロックの予測ブロックを生成できる。複合参照モードでは、2つ以上の参照ブロックを使用して、例えば加重平均によって予測ブロックを生成することができる。複合参照モードは、複数参照モード(more-than-one-reference mode)、2参照モード、(two-reference mode)又はマルチ参照モード(multiple-reference mode)と称されることがある。1つ以上の参照ブロックは、例えば水平及び垂直ピクセルで、1つ以上の参照フレームインデックスを使用して、さらに参照ブロックと現在のブロックとの間の位置の移動を示す対応する1つ以上の動きベクトルを使用して、識別することができる。例えば、現在ブロックのインター予測ブロックは、単一参照モードの予測ブロックとして参照フレーム内の1つの動きベクトルによって識別される単一参照ブロックから生成される場合があるが、複合参照モードの場合、予測ブロックは、2つの動きベクトルによって示される2つの参照フレーム内の2つの参照ブロックの加重平均によって生成される場合がある。(1つ以上の)動きベクトルは、さまざまな方法でコーディングされてビットスツリームに含まれることがある。
【0146】
いくつかの実装では、エンコード又はデコードシステムがデコードされた画像バッファ(DPB)を維持することがある。一部のイメージ/ピクチャ又は画像(images/pictures)は(デコードシステムで)表示されるのを待ってDPBで維持される場合があり、DPB内の一部のイメージ/画像は、インター予測を可能にするための参照フレームとして使用される場合がある。実装によっては、DPB内の参照フレームは、エンコード又はデコードされている現在の画像の短期参照又は長期参照のいずれかとしてタグ付けされる場合がある。例えば、短期参照フレームは、現在フレーム内又はデコード順で現在フレームに最も近い後続のビデオフレームの所定の数(例えば2)内の、ブロックのインター予測に使用されるフレームを含むことができる。長期参照フレームは、現在フレームからデコード順で所定のフレーム数よりも多く離れたフレーム内のイメージブロックを予測するために使用できるDPB内のフレームを含むことができる。短期及び長期の参照フレームのかかるタグに関する情報は、参照画像セット (Reference Picture Set:RPS) と称され、エンコードされたビットスツリームの各フレームのヘッダーに追加される場合がある。エンコードされたビデオストリームの各フレームは、ピクチャ順序カウンタ(Picture Order Counter:POC)によって識別される場合があり、これは絶対的な方法で再生シーケンスに従って番号付けされるか、例えばIフレームから始まる画像グループに関連して番号付けされる。
【0147】
いくつかの例示的実装では、インター予測のための短期及び長期の参照フレームの識別を含む1つ以上の参照画像リストがRPS内の情報に基づいて形成される場合がある。例えば、単一方向のインター予測のために、L0参照(又は参照リスト0)として示される単一の画像参照リストが形成される場合があるが、双方向インター予測のために、2つの予測方向のそれぞれについて、L0(又は参照リスト0)及びL1(又は参照リスト1)として示される2つの画像参照リストが形成される場合がある。L0及びL1リストに含まれる参照フレームは、さまざまな予め定義された方法で順序付けられることがある。L0及びL1リストの長さは、ビデオビットスツリームでシグナリングされることがある。単一方向インター予測は、複合予測モードで加重平均による予測ブロックを生成するための複数の参照が、予測されるべきブロックの同じ側にある場合複合予測モードであるか、又は単一参照モードであるか、のいずれかである。双方向インター予測は、双方向のインター予測が少なくとも2つの参照ブロックを含むという点で、複合モードでのみ可能である。
【0148】
いくつかの実装では、インター予測のマージモード(MM)が実装される場合がある。一般に、マージモードの場合、単一参照予測の動きベクトル、又は現在PBの複合参照予測の1つ以上の動きベクトルは、独立して計算されてシグナリングされるのではなく、他の動きベクトルから導出される場合がある。例えば、エンコードシステムでは、現在PBのための(1つ以上の)現在動きベクトルは、(1つ以上の)現在動きベクトルと他の1つ以上の既にコーディングされた動きベクトル(参照動きベクトルと称される)との(1つ以上の)差分に縮小される場合がある。(1つ以上の)現在動きベクトル全体ではなく、(1つ以上の)動きベクトルにおける(1つ以上の)かかる差分は、エンコードされてビットスツリームに含まれ、(1つ以上の)参照動きベクトルにリンクされることがある。これに対応してデコードシステムでは、現在PBに対応する(1つ以上の)動きベクトルは、デコードされた動きベクトル差分とそれにリンクされたデコードされた(1つ以上の)参照動きベクトルに基づいて導出されることがある。一般的なマージモード(MM)インター予測の特定の形式として、動きベクトル差分に基づくかかるインター予測は、動きベクトル差分を伴うマージモード (Merge Mode with Motion Vector Difference:MMVD)と称されることがある。したがって、一般にMM又は特にMMVDは、コーディング効率を向上させるために、異なるPBに関連付けられた動きベクトル間の相関関係を活用するために実装されることがある。例えば、隣接するPBは類似の動きベクトルを有することがある。別の例として、空間内で同様に配置され/位置決めされたブロックに対して、動きベクトルが時間的(フレーム間)に相関することがある。
【0149】
いくつかの実装例では、現在のPBがマージモードであるかどうかを示すためのエンコードプロセス中にMMフラグがビットスツリームに含まれることがある。付加的に又は代替的に、エンコードプロセス中にMMVDフラグが含まれ、現在PBがMMVDモードであるかどうかを示すためにビットスツリーム内でシグナリングされることもある。MM及び/又はMMVDフラグ又はインジケータは、PBレベル、CBレベル、CUレベル、CTBレベル、CTUレベル、スライスレベル、画像レベルなどで提供されることがある。特定の例として、MMフラグとMMVDフラグとの両方が現在のCUに含まれることがあり、MMVDフラグはスキップフラグとMMフラグの直後にシグナリングされ、現在CUにMMVDモードを使用するかどうかを指定することができる。
【0150】
MMVDのいくつかの例示的実装では、予測中のブロックに対して、動きベクトル予測のためのマージ候補のリストが形成されることがある。マージ候補リストには、現在動きベクトルの予測のために動きベクトルが使用される可能性があるMV予測候補ブロックの所定の数(例:2)が含まれることがある。MVD候補ブロックは、同じフレーム及び/又は一時的ブロック(temporal blocks)(例えば、現在のフレームの前後のフレームで同じ位置にあるブロック)内の隣り合うブロックから選択されたブロックを含み得る。これらのオプションは、現在のブロックと類似又は同一の動きベクトルを有する可能性が高い、現在のブロックと関連して空間的又は時間的な位置にあるブロックを表す。MV予測候補のリストのサイズは予め決定される場合がある。例えば、リストに2つの候補が含まれる場合がある。マージ候補のリストに含まれるためには、例えば、候補ブロックは、現在のブロックと同じ(1つ以上の)参照フレームを有する必要があり、存在する必要があり(例えば、現在ブロックがフレームのエッジ付近にある場合、境界チェックを実行する必要がある。)、エンコードプロセス中にすでにエンコードされている必要があり、及び/又はデコードプロセス中にすでにデコードされている必要がある。いくつかの実装では、マージ候補のリストは、利用可能であり記の条件を満たしている場合は、最初に空間的に隣り合うブロック(特定の所定の順序でスキャンされる)で占められ、リスト内でスペースがまだ利用可能な場合は一次的ブロックで占められる場合がある。隣り合う候補ブロックは、例えば、現在のブロックの左ブロックと上ブロックから選択される場合がある。マージMV予測候補のリストは、ビットスツリームでシグナリングされる場合がある。
【0151】
いくつかの実装では、現在ブロックの動きベクトルを予測するための参照動きベクトルとして使用されている実際のマージ候補がシグナリングされる場合がある。マージ候補リストに2つの候補が含まれている場合は、マージ候補フラグと称される1ビットフラグを使用して、参照マージ候補の選択を示すことができる。複合モードで予測される現在ブロックについては、MV予測器を使用して予測される複数の動きベクトルのそれぞれを、マージ候補リストからの参照動きベクトルに関連付けることができる。
【0152】
MMVDのいくつかの例示的実装では、マージ候補が選択され、予測されるべき動きベクトルのための動きベクトル予測のベースとして使用された後、エンコードシステムで動きベクトル差分(予測されるべき動きベクトルと参照候補の動きベクトルとの差分を表すMVD又はデルタMV)が計算されることができる。かかるMVDには、MV差分の大きさとMV差の方向を表す情報が含まれることができ、ビットスツリームでシグナリングされる場合がある。動き差分大きさ及び動き差分方向は、さまざまな方法でシグナリングされることができる。
【0153】
MMVDのいくつかの例示的実装では、距離インデックスを使用して、動きベクトル差分の大きさ情報を指定し、開始点(参照動きベクトル)からの所定の動きベクトルの差分を表す予め定義されたたオフセットのセットのうちの1つを示すことができる。その後、シグナリングされたインデックスに従ったMVオフセットを、開始(参照)動きベクトルの水平成分又は垂直成分のいずれかに追加することができる。参照動きベクトルの水平成分又は垂直成分のいずれかをオフセットする必要があるが、これはMVDの例示的方向情報によって決定される。距離インデックスと所定のオフセットとの間の所定の関係の例は、表2に示される。
【表2】
【0154】
MMVDのいくつかの例示的実装では、方向インデックスがさらにシグナリングされ、参照動きベクトルに対するMVDの方向を表すために使用され得る。いくつかの実装では、方向は、水平方向及び垂直方向のいずれかに制限され得る。2ビットの方向インデックスの例を表3に示す。表3の例では、MVDの解釈は、開始/参照MVの情報に従って変化する可能性がある。例えば、開始/参照MVがユニ予測ブロックに対応するか、又は、両方の参照フレームリストが現在画像の同じ側を指すバイ予測ブロックに対応する場合(すなわち、2つの参照ピクチャのPOCが両方とも現在画像のPOCよりも大きいか、又は両方とも現在画像のPOCよりも小さい)、表3の符号は、開始/参照MVに追加されたMVオフセットの符号(方向)を特定し得る。開始/参照MVが、現在画像の異なる側にある2つの参照画像を有するバイ予測ブロックに対応する場合(すなわち、1つの参照画像のPOCは現在画像のPOCよりも大きく、他の参照画像のPOCは現在画像のPOCよりも小さい)、かつ、画像参照リスト0の参照POCと現在フレームとの間の差分が、画像参照リスト1の参照POCと現在フレームとの間の差分よりも大きく、表3の符号は、画像参照リスト0の参照画像に対応する参照MVに追加されたMVオフセットの符号を指定することができ、画像参照リスト1の参照画像に対応するMVのオフセットの符号は、反対の値(オフセットの反対の符号)を有し得る。そうでない場合、画像参照リスト1の参照POCと現在フレームとの間の差分が、画像参照リスト0の参照POCと現在フレームとの間の差分よりも大きいとき、その場合、表3の符号は、画像参照リスト1に関連付けられた参照MVに追加されたMVオフセットの符号を指定することができ、画像参照リスト0に関連付けられた参照MVへのオフセットの符号は、反対の値を有する。
【表3】
【0155】
いくつかの例示的実装では、MVDは各方向のPOCの差分に応じてスケーリングされる場合がある。両方のリストのPOCの差分が同じ場合、スケーリングは必要ない。それ以外の場合、参照リスト0のPOCの差分が参照リスト1のPOCより大きい場合、参照リスト1のためのMVDはスケーリングされる。参照リスト1のPOCの差分がリスト0より大きい場合、リスト0のMVDも同じ方法でスケーリングされる。開始MVがユニ予測の場合、MVDは利用可能又は参照MVに追加される。
【0156】
双方向複合予測のためのMVDコーディングとシグナリングのいくつかの例示的実装では、2つのMVDを別々にコーディングしてシグナリングすることに加えて又は代えて、対称MVDコーディングが実装され、1つのシグナリングされたMVDから導出されることができる。かかる実装では、リスト0とリスト1の両方の参照画像インデックスを含む動き情報がシグナリングされる。しかしながら、例えば、参照リスト0に関連付けられたMVDのみがシグナリングされ、参照リスト1に関連付けられたMVDは信号されずに導出される。具体的には、スライスレベルで、ビットスツリームにフラグを含めることができ、これは「mvd_l 1_0_flag」と称され、参照リスト1がビットスツリームでシグナリングされていないかどうかを示す。このフラグが1で、参照リスト1が0に等しい(したがって市郡リングされていない)ことを示す場合、「BiDirPredFlag」と称される双方向予測フラグが0に設定されることがあり、これは双方向予測がないことを意味する。それ以外の場合、mvd_l 1_0_flagが0の場合に、リスト0内の最も近い参照画像とリスト1内の最も近い参照画像が、参照画像の前方と後方のペア又は後方と前方のペアを形成すると、BiDirPredFlagが1に設定されることがあり、リスト0とリスト1の両方の参照画像が短期参照画像になる。それ以外の場合、BiDirPredFlagは0に設定される。BiDirPredFlagが1の場合は、対称モードフラグがビットスツリーム内で追加的にシグナリングされることを示す。BiDirPredFlagが1の場合、デコーダはビットスツリームから対称モードフラグを抽出できる。例えば、対称モードフラグはCUレベルで(必要に応じて)シグナリングされる場合があり、対応するCUに対称MVDコーディングモードが使用されているかどうかを示す。対称モードフラグが1の場合は、対称MVDコーディングモードの使用を示し、リスト0とリスト1の両方の参照画像インデックス(「mvp_l 0_flag」及び「mvp_l 1_flag」と称される)のみがリスト0に関連付けられたMVD(「MVD0」と称される)でシグナリングされ、他の動きベクトル差分である「MVD1」がシグナリングされるのではなく導出されることを示す。例えば、MVD1は、-MVD0として導出される場合がある。そのため、対称MVDモードの例では、1つのMVDのみがシグナリングされる。MV予測の他の実装例では、単一参照モードと複合参照モードの両方のMV予測に対して、全般マージモード、MMVD、及びその他のいくつかのタイプのMV予測を実装するために、調和スキームを使用できる。さまざまな構文要素を使用して、現在ブロックのMVが予測される方法をシグナリングできる。
【0157】
例えば、単一参照モードの場合、次のMV予測モードがシグナリングされることがある。
【0158】
NEARMV ‐ DRL(Dynamic Reference List)インデックスによって示されるリスト内の動きベクトル予測(MVP)の1つを、MVDなしで直接使用する。
【0159】
NEWMV ‐ DRLインデックスによってシグナリングされたリスト内の動きベクトル予測 (MVP) の1つを参照として使用し、MVPにデルタを適用します(例:MVDの使用)。
【0160】
GLOBALMV ‐ フレームレベルのグローバルモーションパラメータに基づく動きベクトルを使用する。
【0161】
同様に、予測されるべき2つのMVに対応する2つの参照フレームを使用する複合参照インター予測モードでは、次のMV予測モードがシグナリングされる場合がある。
【0162】
NEAR_NEARMV ‐ 予測されるべき2つのMVのそれぞれについて、MVDを使用せずにDRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを使用する。
【0163】
NEAR_NEWMV ‐ 2つの動きベクトルのうちの第1を予測する場合、DRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを、MVDを使用せずに参照MVとして使用する。2つの動きベクトルのうちの第2を予測する場合、DRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを、追加でシグナリングされるデルタMV(MVD)と組み合わせて参照MVとして使用する。
【0164】
NEW_NEARMV ‐ 2つの動きベクトルのうちの第2を予測する場合、DRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを、MVDを使用しないで参照MVとして使用する。2つの動きベクトルのうちの第1を予測する場合、DRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを、追加でシグナリングされるデルタMV(MVD)と組み合わせて参照MVとして使用する。
【0165】
NEW_NEWMV ‐ DRLインデックスによってシグナリングされるリスト内の動きベクトル予測(MVP)の1つを参照MVとして使用し、追加でシグナリングされるデルタMVと組み合わせて使用して、2つのMVのそれぞれを予測する。
【0166】
GLOBAL_GLOBALMV ‐ フレームレベルのグローバル動きパラメータに基づいて、各参照からのMVを使用する。
【0167】
したがって、上記の「NEAR」という用語は、全体的なマージモードとしてMVDを使用せずに参照MVを使用したMV予測を指すが、「NEW」という用語は、参照MVを使用し、MMVDモードのようにシグナリングされたMVDでオフセットすることを含むMV予測を指す。複合インター予測では、参照ベースの動きベクトルと上記の動きベクトルデルタとの両方が、2つの参照間で全体的に異なるか独立している場合があるが、それらは相関関係があり、かかる相関関係を利用して、2つの動きベクトルデルタをシグナリングするために必要な情報の量を減らすことができる。かかる状況では、2つのMVDの共同シグナリングが実装され、ビットスツリームで示される場合がある。
【0168】
上記のダイナミック参照リスト(DRL)は、動的に維持され、動きベクトル予測の候補として考慮されるインデックス付き動きベクトルのセットを保持するために使用される場合がある。
【0169】
いくつかの実装例では、MVDの予め定義された解像度が許可される場合がある。例えば、1/8ピクセルの動きベクトル精度(又は正確度)が許可される場合がある。さまざまなMV予測モードで前述したMVDは、さまざまな方法で構築され、シグナリングされる場合がある。いくつかの実装では、さまざまな構文要素を使用して、参照フレームリスト0又はリスト1の上記の(1つ以上の)動きベクトル差分をシグナリングすることができる。
【0170】
例えば、「mv_joint」 と称される構文要素は、それに関連付けられている動きベクトル差分のどのコンポーネントが非ゼロであるかを指定することができる。MVDの場合、これはすべての非ゼロコンポーネントについして共同でシグナリングされる。例えば、mv_jointの値の
0は、水平方向又は垂直方向のいずれかに沿って非ゼロのMVDが存在しないことを示すことができる;
1は、水平方向にのみ沿って非ゼロのMVDが存在することを示すことができる;
2は、垂直方向にのみゼロ以外のMVDが存在することを示すことができる;
3は、水平方向と垂直方向の両方に沿ってゼロ以外のMVDが存在することを示すことができる。
【0171】
MVDの「mv_joint」構文要素が非ゼロのMVDコンポーネントが存在しないことをシグナリングする場合、それ以上のMVD情報はシグナリングされない場合がある。しかしながら、「mv_joint」構文が非ゼロのコンポーネントが1つ又は2つ存在することをシグナリングする場合、以下に示すように、非ゼロのMVDコンポーネントごとに追加の構文要素がさらにシグナリングされる場合がある。
【0172】
例えば、「mv_sign」と称される構文要素を使用して、対応する動きベクトル差分のコンポーネントが正か負かを追加で指定できる。
【0173】
別の例として、「mv_class」と称される構文要素を使用して、対応する非ゼロのMVDコンポーネントの所定のみクラスセット間の動きベクトル差分のクラスを指定できる。動きベクトル差分の所定のクラスは、例えば、動きベクトル差分の連続する大きさ空間を、MVDクラスに対応する各範囲と重複しない範囲に分離するために使用できる。したがって、シグナリングされたMVDクラスは、対応するMVDコンポーネントの大きさの範囲を示す。表4に示す例示的実装では、上位クラスは、より大きな大きさの範囲を有する動きベクトル差分に対応する。表4では、記号(n,m]は、nピクセルより大きく、mピクセル以下の動きベクトル差分の範囲を表すために使用される。
【表4】
【0174】
他のいくつかの例では、「mv_bit」と称される構文要素をさらに使用して、非ゼロの動きベクトル差分コンポーネントと、対応するシグナリングされたMVクラスの開始マグニチュードとの間のオフセットの整数部分を指定することができる。各MVDクラスの全範囲をシグナリングするために「my_bit」で必要なビット数は、MVクラスの関数によって異なる場合がある。例えば、表4の実装におけるMV_CLASS0とMV_CLASS1とは、0のMVDの開始から1又は2の整数ピクセルオフセットを示すために1ビットだけが必要な場合がある。それぞれの上位MV_CLASSは、先行するMV_CLASSよりも「mv_bit」に1ビット多く必要になる場合がある。
【0175】
他のいくつかの実施例では、「mv_fr」と称される構文要素をさらに使用して、対応する非ゼロのMVDコンポーネントの動きベクトル差分の最初の2つの分数ビットを指定することができるが、「mv_hp」と称される構文要素を使用して、対応する非ゼロのMVDコンポーネントの動きベクトル差分の第3分数ビット(高解像度ビット)を指定することができる。2ビットの「mv_fr」は基本的に1/4ピクセルのMVD解像度を提供し、「mv_hp」ビットはさらに1/8ピクセルの解像度を提供する場合がある。他のいくつかの実装では、1/8ピクセルより細かいMVDピクセル解像度を提供するために1つを超える「mv_hp」ビットが使用される場合がある。いくつかの例示的実装では、1/8ピクセル以上のMVD解像度がサポートされているかどうかを示すために、さまざまなレベルの1つ以上で追加のフラグがシグナリングされる場合がある。MVD解像度が特定のコーディングユニットに適用されていない場合は、対応するサポートされていないMVD解像度の上記の構文要素がシグナリングされない場合がある。
【0176】
上記のいくつかの例示的実装では、分数解像度は異なるMVDクラスに依存しない場合がある。換言すると、動きベクトル差分の大きさに関係なく、非ゼロMVDコンポーネントの分数MVDをシグナリングするために、予め定義された数の「mv_fr」及び「mv_hp」ビットを使用して、動きベクトル解像度の同様のオプションを提供することができる。
【0177】
ただし、他のいくつかの実装例では、さまざまなMVDマグニチュードクラスの動きベクトルの差の解像度が区別されることがある。具体的には、より高いMVDクラスの大きなMVDマグニチュードの高解像度MVDは、圧縮効率の統計的に有意な改善を提供しないことがある。そのため、MVDは、より高いMVDマグニチュードクラスに対応する、より大きなMVDマグニチュード範囲の解像度を下げる(整数ピクセル解像度又は分数ピクセル解像度)ことでコード化されることがある。同様に、MVDは、一般に、より大きなMVD値の解像度を下げる(整数ピクセル解像度又は分数ピクセル解像度)ことでコード化されることがある。このようなMVDクラス依存又はMVDマグニチュード依存のMVD解像度は、一般に適応型MVD解像度と呼ばれることがある。適応型MVD解像度は、全体的により優れた圧縮効率を達成するために、以下の実装例で説明されているように、さまざまな事項で実装されることがある。特に、低精度のMVDを目指すことによるの信号ビット数の削減は、このような低精度のMVDの結果としてインター予測の残差に必要な追加ビットよりも大きくなる可能性があります。これは、低マグニチュード又は低クラスのMVDと同様の大規模又は高クラスのMVDのMVD解像度を非適応的な方法で処理しても、インター予測の残差符号化効率が大幅に向上しない可能性があるという統計的観察によるものである。
【0178】
いくつかの全体的な例示的実装では、MVDのピクセル解像度又は精度は、MVDの大きさの増加に伴って減少するか、増加しないことがある。MVDのピクセル解像度を減少させることは、より粗いMVD(又は1つのMVDレベルから次のレベルへのより大きなステップ)に対応する。いくつかの実装では、MVDピクセル解像度とMVDクラスとの間の対応は、指定され、予め定義され、又は予め設定されることがあるため、エンコードビットスツリームでシグナリングする必要はない場合がある。
【0179】
いくつかの実装例では、表3のMVクラスがそれぞれ異なるMVDピクセル解像度に関連付けられることがある。
【0180】
いくつかの例示的実装では、各MVDクラスが単一の許可された解像度に関連付けられることがある。他のいくつかの実装では、1つ以上のMVDクラスが2つ以上のオプションのMVDピクセル解像度に関連付けられることがある。したがって、かかるMVDクラスのビットスツリーム内の信号の後に、現在のMVDコンポーネントに対してどのオプションのピクセル解像度が選択されているかを示す追加のシグナリングが続くことがある。
【0181】
いくつかの例示的実装例では、応的に許可されるMVDピクセル解像度には、1/64pel(ピクセル)、1/132pel、1/16pel、1/8pel、1-4pel、1/2-pel、1-pel、2-pel、4-pel...(解像度の降順)が含まれることがあるが、これに限定されない。そのため、昇順のMVDクラスのそれぞれが、昇順ではない方法でこれらの解像度のいずれかに関連付けられることがある。いくつかの実装では、MVDクラスが上記の2つ以上の解像度に関連付けられ、より高い解像度が先行するMVDクラスの低い解像度以下になることがある。例えば、表4のMV_CLASS_3がオプションの1-pel及び2-pelの解像度に関連付けられる場合、表4のMV_CLASS_4が関連付けられる可能性のある最高解像度は2-pelになる。他のいくつかの実装では、MVクラスの最大許容解像度が、先行する(下位の)MVクラスの最小許容解像度よりも高くなることがある。しかしながら、昇順のMVクラスの許容解像度の平均は非昇順のみになることがある。
【0182】
いくつかの実装では、1/8pelよりも高い分数ピクセル解像度(fractional pixel resolution)が許可されている場合、「mv_fr」及び「mv_hp」シグナリングは対応して合計3つ以上の分数ビットに拡張され得る。
【0183】
いくつかの例示的実装では、分数ピクセル解像度は、閾値MVDクラス以下のMVDクラスに対してのみ許可される場合があります。例えば、分数ピクセル解像度はMVD-CLASS0に対してのみ許可され、表4の他のすべてのMVクラスに対しては許可されないことがある。同様に、分数ピクセル解像度は表4の他のMVクラスのいずれか1つ以下のMVDクラスに対してのみ許可されることがある。閾値MVDクラスを超える他のMVDクラスでは、MVDのための整数ピクセル解像度のみが許可される。このようにして、「mv-fr」ビット及び/又は「mv-hp」ビットのうちの1つ以上などの分数解像度シグナリングは、閾値MVDクラス以上のMVDクラスでシグナリングされるMVDのためにシグナリングするする必要がない場合がある。1ピクセル未満の解像度を持つMVDクラスの場合、「mv-bit」シグナリングのビット数はさらに低減される場合がある。例えば、表4のMV_CLASS_5の場合、MVDピクセルオフセットの範囲は(32,64]であるため、1pelの解像度で範囲全体にシグナリングするには5ビットが必要である。しかしながら、MV_CLASS_5が2pelのMVD解像度に関連付けられている場合、「mv-bit」には5ビットではなく4ビットが必要になることがあり、MV-CLASS_5として「mv_class」のシグナリングに続いて「mv-fr」及び「mv-hp」のいずれもシグナリングする必要はない。
【0184】
いくつかの例示的実装では、整数値が閾値整数ピクセル値を下回るMVDに対してのみ、分数ピクセル解像度が許可されることがある。例えば、分数ピクセル解像度は5ピクセル未満のMVDに対してのみ許可されることがある。この例に対応して、表4のMV_CLASS_0及びMV_CLASS_1に対して分数解像度が許可され、他のすべてのMVクラスでは許可されないことがある。別の実施例として、7ピクセル未満のMVDでのみ分数ピクセル解像度が許可されることがある。この実施例に対応して、表4のMV_CLASS_0とMV_CLASS_1(範囲が5ピクセル未満)に対して分数解像度が許可され、MV_CLASS_3以上(範囲が5ピクセル以上)に対して許可されないことがある。ピクセル範囲が5ピクセルを含むMV_CLASS_2に属するMVDの場合、MVDの分数ピクセル解像度は「m-bit」値に応じて、許可される場合と許可されない場合がある。「m-bit」値が1又は2としてシグナリングされている場合(シグナリングされたMVDの整数部分が5又は6になるように、「m-bit」で示されるオフセット1又は2を有するMV_CLASS_2に対するピクセル範囲の開始として計算される)、分数ピクセル解像度が許可されることがある。それ以外の場合、「m-bit」値が3又は4としてシグナルされている場合(シグナリングされたMVDの整数部分が7又は8であるように)、分数ピクセル解像度が許可されないことがある。
【0185】
他のいくつかの実装では、閾値MVクラス以上のMVクラスについては、1つのMVD値のみが許可されることがある。例えば、かかる閾値MVクラスはMV_CLASS 2となることがある。したがって、MV_CLASS_2以上では、単一のMVD値を有することのみが許可され、分数ピクセル解像度は使用できない場合があります。これらのMVクラスで許可される単一のMVD値は、事前に定義されている場合があります。いくつかの例では、許可される単一の値は、表4のこれらのMVクラスのそれぞれの範囲の上限値である場合があります。例えば、MV_CLASS_2からMV_CLASS_10は、しきい値class_2以上の場合があり、これらのクラスの単一の許可されるMVD値は、それぞれ8、16、32、64,128,256,512、1024、及び2048として事前定義されている場合があります。他のいくつかの例では、許可される単一の値は、表4のこれらのMVクラスのそれぞれの範囲の中央値である場合があります。例えば、MV_CLASS_2からMV_CLASS_10はクラスのしきい値を超える場合があり、これらのクラスの単一の許可されるMVD値は、それぞれ3、6、12、24、48、96、192,384,768、及び1536として事前定義されている場合があります。範囲内のその他の値も、それぞれのMVDクラスで許可される単一の解像度として定義できます。
【0186】
上記の実装では、シグナリングされた「mv_class」が所定のMVDクラス閾値以上の場合、「mv_class」シグナリングだけでMVD値を決定するのに十分である。その後、MVDの大きさと方向は「mv_class」及び「mv_sign」を使用して決定される。
【0187】
MVDが1つの基準フレーム(参照フレームリスト0又はリスト1からのいずれか一方で、両方ではない)に対してのみシグナリングする場合、又は2つの基準フレームに対して共同でシグナリングする場合、MVDの精度(又は解像度)は、表3の関連する動きベクトル差分のクラス及び/又はMVDの大きさに依存し得る。
【0188】
他のいくつかの実装では、MVDのピクセル解像度又は精度は、MVDの大きさの増加に伴って減少するか、増加しない場合があります。例えば、ピクセル解像度はMVDの大きさの整数部分に依存する場合があります。一部の実装では、振幅しきい値以下のMVDの大きさに対してのみ、分数ピクセル解像度が許可される場合がある。デコーダの場合、MVDの大きさの整数部分が最初にビットスツリームから抽出される場合があります。その後、ピクセル解像度が決定され、任意の分数MVDがビットスツリームに存在し、解析する必要があるかどうかが決定される場合があります(例えば、抽出された特定のMVD整数の大きさに対して分数ピクセル解像度が許可されていない場合、抽出を必要とするビットスツリームには分数MVDビットが含まれていない可能性があります。)。MVDクラスに依存する適応型MVDピクセル解像度に関連する上記の実装例は、MVDの大きさに依存する適応型MVDピクセル解像度に適用されます。特定の例では、大きさのしきい値を超える、又はそれを含むMVDクラスは、1つの定義済みの値のみを持つことが許可される場合があります。
【0189】
上記の種々の例示的実装は、単一参照モードに適用される。これらの実装は、MMVDの複合予測のNEW_NEARMV、NEAR_NEWMV、及び/又はNEW_NEWMVモードの例にも適用される。これらの実装は、一般にMVDのシグナリングに適用される。
【0190】
図18は、適応型MVD解像度のための上記の実装の基礎となる原則に従う例示的方法のフローチャート1800を示す。デコーディング方法の例のフローは1801からスタートする。S 1810では、ビデオストリームを受信し、インター予測ビデオブロックに関連する基準動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされていることを決定し、ここで、基準動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされていない限り、参照フレームリスト0と参照フレームリスト1のうちの1つだけの参照画像に対応する。S1820において、動きベクトル差分の複数の所定の大きさの範囲の中のMVDの大きさの範囲の指示が、ビデオストリームから取得される。S 1830では、大きさ範囲に応じてMVDのピクセル解像度を決定する。S 1840では、ピクセル解像度に基づいてビデオストリーム内の追加のMVD情報を識別する。S 1850では、ビデオストリームから追加のMVD情報を抽出する。S 1860では、インター予測ビデオブロックは、ピクセル解像度、追加のMVD情報、基準動きベクトル、及び動きベクトルに関連付けられた基準フレームに基づいてデコードされる。同様に、バイナリツリーノードの高さがMinBTSizeと等しい場合、それ以上の垂直パーティショニングは考慮されません。
【0191】
図19は、適応型MVD解像度のために上記の実装の基礎となる原則に従う例示的方法の別のフローチャート1900を示す。例示的方法のフローは1901から始まる。S1910では、ビデオストリームを受信し、インター予測ビデオブロックに関連する基準動きベクトルと動きベクトルとの間の動きベクトル差分(MVD)がビデオストリーム内でシグナリングされていることを決定し、ここで、基準動きベクトルは、MVDが2つの参照画像に対して共同でシグナリングされていない限り、参照フレームリスト0と参照フレームリスト1のうちの1つだけの参照画像に対応する。S1920では、MVDの大きさの整数部分がビデオストリームから抽出される。S1930では、MVDの大きさの整数部分に従ってMVDについてのピクセル解像度を決定する。S1940では、ピクセル解像度に基づいてビデオストリーム内の付加的なMVD情報を識別する。S1950において、インター予測ビデオブロックは、ピクセル解像度、MVDの大きさの整数部分、追加のMVD情報、基準動きベクトル、及び動きベクトルに関連付けられた基準フレームに基づいて、デコードされる。実施例方法フローは、S1999で終わる。
【0192】
本開示の実施形態及び実装では、任意のステップ及び/又は動作を、必要に応じて任意の量又は順序で組み合わせ又は配置することができる。2つ以上のステップ及び/又は動作を並行して実行することができる。開示における実施形態及び実装は、別々に使用することも、任意の順序で組み合わせて使用することもできる。さらに、方法(又は実施形態)、エンコーダ、及びデコーダの各々は、処理回路(例えば、1つ以上のプロセッサ、又は1つ以上の集積回路)によって実装され得る。一実施例では、1つ以上のプロセッサは、非一時的コンピュータ可読媒体に格納されたプログラムを実行する。開示における実施形態は、ルマブロック又はクロマブロックに適用することができる。以下では、ブロックという用語は、予測ブロック、コーディングブロック、又はコーディングユニット、すなわちCUとして解釈され得る。ここでの「ブロック」という用語は、変換ブロックを指すためにも使用され得る。以下の項目では、ブロックサイズと言う場合、ブロックの幅又は高さ、又は幅及び高さの最大値、又は幅及び高さの最小値、又はエリアサイズ(幅*高さ)、又はブロックのアスペクト比(幅:高さ、高さ:幅)のいずれかを指すことがある。
【0193】
上記の技術は、コンピュータ可読命令を用いたコンピュータソフトウェアとして行うことができて、物理的に一つ以上のコンピュータ可読媒体に格納されることができる。例えば、図20は、開示された主題の特定の実施形態を実施するのに適しているコンピュータシステム(2000)を示す。
【0194】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、又は類似のメカニズムの対象となり得る任意の適切な機械コード若しくはコンピュータ言語を使用してコーディングされることができ、直接実行されることができるか、又は、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)等による、実施、マイクロコード実行等を介して実行されることができる命令を含むコードを作成する。
【0195】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、物品のインターネット等を含む種々のタイプのコンピュータ又はその構成要素上で実行されることができる。
【0196】
コンピュータシステム(2000)のための図20に示されるコンポーネントは、例示的な性質のものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能性に関する制限を示唆することを意図するものではない。また、コンポーネントの構成は、コンピュータシステム(2000)の例示的な実施形態に示されるコンポーネントのいずれか1つ又は組み合わせに関連する依存性又は要件を有すると解釈されるべきではない。
【0197】
コンピュータシステム(2000)は、特定のヒューマンインタフェース入力デバイスを含み得る。このようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スイッピング、データグローブの動き)、音声入力(例えば、音声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介して、一人又は複数の人間ユーザによる入力に応答し得る。また、ヒューマンインタフェースデバイスは、オーディオ(例えば、音声、音楽、周囲の音声)、画像(例えば、走査画像、静止画像カメラから得られる写真画像)、ビデオ(例えば、2次元ビデオ、立体画像を含む3次元ビデオ)等の、人間による意識的入力に必ずしも直接関係しない特定の媒体を捕捉するために用いられ得る。
【0198】
入力ヒューマンインタフェースデバイスには、次のものが1つ以上含まれ得る(それぞれ1つのみ表されている):キーボード(2001)、マウス(2002)、トラックパッド(2003)、タッチスクリーン(2010)、データグローブ(図示せず)、ジョイスティック(2005)、マイクロホン(2006)、スキャナ(2007)、カメラ(2008)。
【0199】
コンピュータシステム(2000)はまた、特定のヒューマンインタフェース出力デバイスを含み得る。かかるヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通して、1人又は複数の人間ユーザの感覚を刺激し得る。かかるヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2010)、データグローブ(図示せず)、又はジョイスティック(2005)による触覚フィードバック)、入力デバイスとして働かない触覚フィードバックデバイスであることもでき)と、オーディオ出力デバイス(例えば、スピーカー(2009)、ヘッドフォン(図示せず))と、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2010)であり、各々が触覚フィードバック能力を有するか又は有さず、各々が触覚フィードバック能力を有するか又は有さず、そのうちのいくつかは、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)等の立体出力のような手段を介して2次元視出力又は3次元以上の出力を可能にし得るもの)と、プリンタ(図示せず)と、を含み得る。
【0200】
コンピュータシステム(2000)はまた、人間がアクセス可能な記憶デバイスと、それらのアクセス可能な媒体とを含むことができ、媒体は、例えば、CD/DVD等の媒体921によるCD/DVD ROM/RWを含む光学媒体ドライブ(2020)、USBメモリ(2022)、着脱可能ヘッドドライブ又はソリッドステートドライブ(2023)、テープ、フロッピーディスク(図示せず)等の従来の磁気媒体、セキュリティドングル等の特殊化されたROM/ASIC/PLDベースデバイス等である。
【0201】
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語は、伝送媒体、搬送波、又は他の一時的な信号を包含しないことを理解されたい。
【0202】
コンピュータシステム(2000)はまた、1つ以上の通信ネットワーク(2055)へのインタフェース(2054)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークは、さらに、ローカル、広域、大都市、車両及び工業、リアルタイム、遅延耐性等であり得る。ネットワークの例は、イーサネット、無線LAN等のローカルエリアネットワークや、GSM、3G、4G、5G、LTE等を含むセルラーネットワークや、ケーブルTV、衛星TV、及び地上放送TVを含む有線若しくはTV無線広域デジタルネットワーク、及び、CANBusを含む産業用及び車両用のネットワーク等を含む。特定のネットワークは、一般に、特定の汎用データポート又はペリフェラルバス(2049)(たとえば、コンピュータシステム(2000)のUSBポート)に接続された外部ネットワークインターフェイスアダプタを必要とする;他のものは、一般に、以下に説明するようにシステムバスに接続することによってコンピュータシステム(2000)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(2000)は、他のエンティティと通信することができる。かかる通信は、単指向性通信、受信のみ(例えば、放送テレビ)通信、単指向性送信専用(例えば、特定のCANバスデバイスへのCANバス)通信、又は、例えばローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの、双方向通信であることができる。特定のプロトコル及びプロトコルスタックは、上述のように、それらのネットワーク及びネットワークインタフェースの各々で使用されることができる。
【0203】
前述のヒューマンインタフェースデバイス、人間がアクセス可能な記憶デバイス、及びネットワークインタフェースは、コンピュータシステム(2000)のコア(2040)に接続されることができる。
【0204】
コア(2040)は、1つ以上の中央処理デバイス(CPU)(2041)、グラフィックス処理デバイス(GPU)(2042)、フィールドプログラマブルゲートエリア(FPGA)(2043)の形態の特殊なプログラマブル処理デバイス、特定のタスクのためのハードウェアアクセラレータ(2044)、グラフィックアダプタ(2050)等を含むことができる。これらのデバイスは、読出し専用メモリ(ROM)(2045)、ランダムアクセスメモリ(2046)、内部大容量記憶デバイス、例えば内部非ユーザクセス可能ハードドライブ、SSD等(2047)と共に、システムバス(2048)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(2048)は、追加のCPU、GPU等による拡張を可能にするために、1つ又は複数の物理プラグの形態でアクセス可能である。周辺デバイスは、コアのシステムバス(2048)に直接接続するか、又は周辺バス(2049)を介して接続することができる。実施例において、スクリーン(2010)は、グラフィックアダプタ(2050)に接続されることができる。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0205】
CPU(2041)、GPU(2042)、FPGA(2043)、及びアクセラレータ(2044)は、組み合わされて、上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(2045)又はRAM(2046)に格納されることができる。移行データはRAM(2046)に格納されることもできるが、例えば、内部大容量記憶装置(2047)で、永続的なデータは格納されることができる。1つ以上のCPU(2041)、GPU(2042)、大容量記憶デバイス(2047)、ROM(2045)、RAM(2046)等と密接に関連付けることができるキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索を可能にすることができる。
【0206】
コンピュータ可読媒体は、各種のコンピュータ実施動作(computer-implemented operations)を実行するためにその上のコンピュータコードを有することができる。メディア及びコンピュータコードは特別に設計されたそれらであることができて、本開示のために作成されることができる、又は、それらはよく公知で、コンピュータソフトウェア技術の技術を有するそれらが利用できる種類でありえる。
【0207】
限定的ではない例として、アーキテクチャ(200)を有するコンピュータシステム、具体的にはコア(2040)は、1つ以上の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能性を提供することができる。かかるコンピュータ可読媒体は、コア-内部大容量記憶デバイス(2047)又はROM(2045)等の一時的でない性質のコア(2040)の特定の記憶デバイスと同様に、上述のようにユーザがアクセス可能な大容量記憶デバイスに関連する媒体であることができる。本開示の様々な実施形態を実装するソフトウェアは、かかるデバイスに記憶され、コア(2040)によって実行され得る。コンピュータ読取可能媒体は、特定のニーズに応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(2040)及びその中の具体的にプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(2046)に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスにしたがって、かかるデータ構造を変更することを含む、本明細書に記載された特定のプロセス又は特定の部分を実行させることができる。付加的に又は代替的に、コンピュータシステムは、回路(例えば、アクセラレータ(2044))内に配線された、又は他の方法で具現化されたロジックの結果として、機能性を提供することができ、これは、本明細書に記載される特定のプロセス又は特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、又はソフトウェアと共に動作することができる。ソフトウェアへの言及は、論理を含み、また、必要に応じて、その逆も可能である。コンピュータ読取り可能媒体への参照は、実行のためのソフトウェアを記憶する(集積回路(IC)等の)回路、実行のためのロジックを具体化する回路、又は適切な場合にはその両方を含むことができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
【0208】
本開示はいくつかの例示的な実施形態を説明しているが、本発明の範囲内に入る、変更、置換、及び様々な均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、本発明の原理を実施し、したがってその概念及び範囲内にある多数のシステム及び方法を創造することができることが理解されよう。
【0209】
付録A:
頭字語
JEM:ジョイント探索モデル
VVC:広用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:付加強化情報
VUI:ビデオユーザビリティ情報
GOP:画像グループ
TU:変換ユニット
PU:予測ユニット
CTU:コーディングツリーユニット
CTB:コーディングツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号雑音比
CPU:中央処理装置
GPU:グラフィックスプロセッシングユニット
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクト・ディスク
DVD:デジタルビデオディスク
ROM:リードオンリーメモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブルロジックデバイス
LAN:ローカルエリアネットワーク
GSM:グローバスシステムフォーモバイルコミュニケーション
LTE:ロングタームエヴォリューション
CANバス:コントローラエリアネットワークバス
USB:ユニバーサルシリアル・バス
PCI:ペリフェラルコンポーネントインターコネクト
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
HDR:高ダイナミックレンジ
SDR:標準ダイナミクスクレンジ
JVET:Joint Video Exploration Team
MPM:最確モード(most probable mode)
WAIP:ワイドアングルイントラ予測
CU:コーディングユニット
PU:予測ユニット
TU:変換ユニット
CTU:コーディングツリーユニット
PDPC:位置依存予測組合せ
ISP:イントラサブ予測
SPS:シークエンスパラメータセッティング
PPS:画像パラメータ設定
APS:適応パラメータ設定
VPS:ビデオパラメータ設定
DPS:デコードパラメータ設定
ALF:適応ループフィルタ
SAO:サンプル適用オフセット
CC-ALF:クロスコンポーネント適応ループフィルタ
CDEF:拘束指向性強化フィルタ
CCSO:クロスコンポーネントサンプルオフセット
LSO:ローカルサンプルオフセット
LR:ループ復元フィルタ
AV1:AOメディアビデオ1
AV2:AOメディアビデオ2
MVD:動きベクトル差分
CfL:ルマからのクロマ
SDT:セミデカップルツリー
SDP:セミデカップルパーティショニング
SST:セミセパレートツリー
SB:スーパーブロック
IBC(又はIntraBC):イントラブロックコピー
CDF:累積密度関数
SCC:スクリーンコンテンツコーディング
GBI:GBI予測
BCW:CUレベル重み付けを有するBi予測
CIIP:複合イントラインター予測
POC:画像順序カウント
RPS:参照画像設定
DPB:デコードされた画像バッファ
MMVD:動きベクトル差分を有するマージモード
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
【国際調査報告】