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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024016286
(43)【公開日】2024-02-06
(54)【発明の名称】ビデオ・コーディング方法及び装置
(51)【国際特許分類】
   H04N 19/105 20140101AFI20240130BHJP
   H04N 19/167 20140101ALI20240130BHJP
   H04N 19/176 20140101ALI20240130BHJP
   H04N 19/597 20140101ALI20240130BHJP
【FI】
H04N19/105
H04N19/167
H04N19/176
H04N19/597
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023198599
(22)【出願日】2023-11-22
(62)【分割の表示】P 2021557407の分割
【原出願日】2020-10-07
(31)【優先権主張番号】62/953,457
(32)【優先日】2019-12-24
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/955,825
(32)【優先日】2019-12-31
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/063,149
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,リエン―フェイ
(72)【発明者】
【氏名】リ,シアン
(72)【発明者】
【氏名】リ,グォイチュン
(72)【発明者】
【氏名】リィウ,シャン
(57)【要約】      (修正有)
【課題】ビデオ符号化/復号化のための方法、装置及び非一時的なコンピュータ読み取り可能な記憶媒体を提供する。
【解決手段】ビデオ復号化方法は、コーディングされたビットストリームにおける現在のピクチャの現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定する予測情報を復号化し、現在をブロックはGPMモードにおける、各々に各自の予測子が関連付けられる2つのパーティションにパーティション化し、現在のブロックのサンプルに対する重み付けインデックスを、サンプルの位置に基づいて決定し、重み付けインデックスを重み付け因子に変換する数式に従って、サンプルの重み付けインデックスに基づいて重み付け因子を計算し、サンプルに対応する予測子と重み付け因子とに基づいて、サンプルを再構成する。
【選択図】図12
【特許請求の範囲】
【請求項1】
デコーダにおけるビデオ・コーディング方法であって:
コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化するステップであって、前記予測情報は前記現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定し、前記現在のブロックは前記GPMモードにおける2つのパーティションにパーティション化されており、前記パーティションの各々には各自の予測子が関連付けられている、ステップ;
前記現在のブロックのサンプルに対する重み付けインデックスを、前記サンプルの位置に基づいて決定するステップ;
前記重み付けインデックスを重み付け因子に変換する数式に従って、前記サンプルの前記重み付けインデックスに基づいて重み付け因子を計算するステップ;及び
前記サンプルに対応する前記予測子と前記重み付け因子とに基づいて、前記サンプルを再構成するステップ;
を含む方法。
【発明の詳細な説明】
【背景技術】
【0001】
参照による援用
本願は2020年10月5日付で出願された米国特許出願第17/063,149号「ビデオ・コーディング方法及び装置」に対する優先権を主張しており、同出願は2019年12月24日付で出願された米国仮出願第62/953,457号「GEOインター・ブロックの簡略化」及び2019年12月31日付で出願された米国仮出願第62/955,825号「GEOインター・ブロックに対するウェイト変換に対する重み付けインデックスのルックアップ・テーブル・フリー化方法」に対する優先権を主張している。先の出願の開示全体は全体的な参照により本願に援用される。
【0002】
技術分野
本開示は一般にビデオ・コーディングに関連する実施形態を記載している。
【0003】
背景
本願で行われる背景の説明は、本開示の状況を一般的に提示するためのものである。目下の発明者等に由来する仕事は、この背景のセクションにおいて及び出願時における先行技術としての地位を与えられない場合がある説明の態様において、その仕事が説明されている範囲で、本開示に対する先行技術として明示的にも黙示的にも認められていない。
【0004】
ビデオ符号化及び復号化は、動き補償とともにインター・ピクチャ予測を利用して実行することが可能である。圧縮されていないデジタル・ビデオは、一連のピクチャを含むことが可能であり、各ピクチャは、例えば1920×1080のルミナンス・サンプル及び関連するクロミナンス・サンプルの空間次元を有する。この一連のピクチャは、例えば1秒間に60
枚のピクチャ、即ち60Hzの固定又は可変のピクチャ・レート(非公式にはフレーム・レートとして知られている)を有することが可能である。圧縮されていないビデオは、かなりのビットレート要件を有する。例えば、サンプル当たり8ビットの1080p60 4:2:0のビデオ(60Hzのフレーム・レートで1920x1080のルミナンス・サンプル解像度)は、1.5Gbit/sもの帯域幅に近づく必要がある。このようなビデオの1時間は、ストレージ空間のうちの600Gバイト以上を必要とする。
【0005】
ビデオ符号化及び復号化の目的の1つは、入力ビデオ信号における冗長性を圧縮により低減できることである。圧縮は、上記の帯域幅又はストレージ空間の要件を、幾つかのケースでは2桁以上の大きさで、低減することを支援することが可能である。ロスレス及びロスレスでない圧縮の双方、並びに両者の組み合わせを利用することが可能である。ロスレス圧縮は、元の信号の正確なコピーが、圧縮された元の信号から再構築されることが可能である、という技術を指す。ロスレスでない圧縮を使用する場合、再構築された信号は、元の信号と同一ではないかもしれないが、元の信号と再構築された信号との間の歪は、再構築された信号を、意図されるアプリケーションに対して有用にすることができる程度に十分に小さい。ビデオの場合、ロスレスでない圧縮が広く使用されている。許容される歪の量は、アプリケーションに依存し;例えば、あるコンシューマ・ストリーミング・アプリケーションのユーザーは、テレビ配信アプリケーションのユーザーよりも高い歪を許容するかもしれない。達成可能な圧縮比は:より高い許容可能な/耐え得る歪は、より高い圧縮比をもたらすことが可能である、ということを反映することができる。
【0006】
ビデオ・エンコーダ及びデコーダは、例えば、動き補償、変換、量子化、及びエントロピー・コーディングを含む幾つもの広範なカテゴリからの技術を利用することができる。
【0007】
ビデオ・コーデック技術は、インター予測として知られる技術を含むことが可能である。各々のインター予測符コーディング・ユニット(CU)に対して、動きパラメータは、動きベクトル、参照ピクチャ・インデックス及び参照ピクチャ・リスト使用インデックス、並びにインター予測サンプル生成に使用される追加情報を含む。動きパラメータは、明示的又は暗黙的な方式でシグナリングすることが可能である。CUがスキップ・モードでコーディングされる場合、CUは1つの予測ユニット(PU)に関連付けられ、何らの有意な残差係数も、何らのコーディングされた動きベクトル・デルタ又は参照ピクチャ・インデックスも有しない。マージ・モードが指定され、これにより、現在のCUのための動きパラメータは、空間的及び時間的な候補を含む隣接するCU、及び例えばVVCで導入される追加スケジュールから取得される。マージ・モードは、スキップ・モードに対してだけでなく、任意のインター予測CUに適用することが可能である。マージ・モードに代わるものは、動きパラメータの明示的な送信である。動きベクトル、各々の参照ピクチャ・リストの対応する参照ピクチャ・インデックス、参照ピクチャ・リスト使用フラグ、及びその他の必要な情報は、各CUごとに明示的にシグナリングされる。
【0008】
一部のインター予測・コーディング・ツールは、拡張マージ予測、動きベクトル差分によるマージ・モード(MMVD)、対称動きベクトル差分(MVD)シグナリングによるアドバンスト動きベクトル予測モード(AMVP)、アフィン動き補償予測、サブブロック・ベースの時間的動きベクトル予測(SbTMVP)、適応動きベクトル解像度(AMVR)、動きフィールド・ストレージ(1/16ルマ・サンプルMVストレージ、8×8動きフィールド圧縮)、重み付け平均化による双方向予測(BWA)、双方向オプティカル・フロー(BDOF)、デコーダ側動きベクトル精密化(DMVR)、三角パーティショニング・モード(TPM)、組み合わせによるインター及びイントラ予測(CIIP)を含む。
【0009】
場合によっては、以下の5つのタイプの候補を:(1)空間的隣接CUからの空間的MVP;(2)同等位置にあるCUからの時間的MVP;(3)FIFOテーブルからの履歴ベースMVP;(4)ペアワイズ平均MVP;及び(5)ゼロMVの順に含めることによって、マージ候補リストは構築される。
【0010】
マージ・リストのサイズはスライス・ヘッダでシグナリングされ、マージ・リストの最大許容サイズは場合によっては例えば6である。マージ・モードにおける各CUコードに対して、最良マージ候補のインデックスは、トランケーテッド・ユーナリ二進化(TU)を使用して符号化される。マージ・インデックスの第1ビンはコンテキストを使用してコーディングされ、他のビンについてはバイパス・コーディングが使用される。
【0011】
図1Aは、空間マージ候補の例示的な位置を示す。場合によっては、図1Aに示されるポジションに位置する候補の中から、最大4つのマージ候補を選択することができる。選択の順序はB1,A1,B0,A0,及びB2である。ポジションB2の候補は、ポジションA0,B0,B1,又はA1の何れのCUも利用できない場合(例えば、ポジションA0のCUが別のスライス又はタイルに属する場合)、又はインター・コーディングされない場合に限って考慮される。ポジションA1の候補がマージ候補リストに追加された後、残りの候補の追加は、同じ動き情報を伴う候補がマージ候補リストから除外されることを確実にする冗長性検査を条件とし、その結果、コーディング効率が改善される。
【0012】
図1Bは、空間マージ候補の冗長性検査に対して考慮される候補ペアを示す。計算の複雑性を低減するために、全ての可能な候補ペアが冗長性検査で考慮されるわけではない。その代わりに、図1Bの矢印でリンクされるペアのみが考慮され、冗長性検査に使用される対応する候補が同じ動き情報を有しない場合に、候補がマージ候補リストに追加されるだけである。
【0013】
図1Cは、時間的マージ候補のための動きベクトル・スケーリングを示す。場合によっては、1つの時間的マージ候補のみをマージ候補リストに追加することができる。特に、この時間的マージ候補の導出において、スケーリングされた動きベクトルは、同等位置にある参照ピクチャに属する同等位置のCU(co―located CU)に基づいて導出される。同等位置CUの導出のために使用される参照ピクチャ・リストは、スライス・ヘッダで明示的にシグナリングされる。時間的マージ候補のためのスケーリングされた動きベクトルは、図1Cの点線によって示されるようにして取得される。スケーリングされた動きベクトルは、ピクチャ・オーダー・カウント(POC)距離tb及びtdを用いて、同等位置CUの動きベクトルから導出され、ここで、tbは、現在のピクチャの参照ピクチャと現在のピクチャとの間のPOC差分として定義され、tdは、同等位置ピクチャの参照ピクチャと同等位置ピクチャとの間のPOC差分として定義される。時間的なマージ候補の参照ピクチャ・インデックスはゼロに等しく設定することが可能である。
【0014】
図1Dは時間的なマージ候補の例示的な位置を示す。時間的なマージ候補は、ポジションC0及びC1におけるCU間で選択される。ポジションC0にあるCUが利用可能でない場合、インター・コーディングされない場合、又はCTUの現在の行の外側にある場合、ポジションC1にあるCUが使用される。そうでない場合、ポジションC0におけるCUが時間的マージ候補の導出で使用される。
【発明の概要】
【0015】
開示の態様はビデオ符号化/復号化のための方法及び装置を提供する。幾つかの実施例において、ビデオ符号化装置は処理回路を含む。
【0016】
開示の態様によれば、デコーダにおけるビデオ復号化方法が提供される。方法においては、コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報が復号化される。予測情報は現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定する。現在のブロックはGPMモードにおける2つのパーティションにパーティション化される。パーティションの各々には各自の予測子が関連付けられる。現在のブロックのサンプルに対する重み付けインデックスは、サンプルの位置に基づいて決定される。重み付け因子は、重み付けインデックスを重み付け因子に変換する数式に従って、サンプルの重み付けインデックスに基づいて計算される。サンプルに対応する予測子と重み付け因子とに基づいて、サンプルは再構成される。
【0017】
実施形態では、重み付けインデックスとオフセット値との合計に対して右シフト演算が実行される。右シフト演算の結果は、所定の範囲内にあるようにクリッピングされる。
【0018】
実施形態では、オフセット値は右シフト演算によりシフトされるビット数に基づいており、右シフト演算によりシフトされるビット数は、重み付けインデックス、及び重み付けインデックスを計算するために使用されるコサイン・テーブルのサイズ、のうちの少なくとも1つに基づいている。
【0019】
実施形態では、現在のブロックのパーティションの間の分割境界を定める角度インデックスと距離インデックスとは、GPMに基づいて決定される。サンプルの位置と、角度インデックスと、距離インデックスとに基づいて、サンプルに対する重み付けインデックスが決定される。
【0020】
実施形態では、角度インデックスに基づいてパーティション・インデックスが決定される。パーティション・インデックスに基づいて重み付け因子が計算される。
【0021】
実施形態では、数式は、
【数1】
であり、ここで、idx2wShiftBitは右シフト演算によりシフトされるビット数を示し、weightは重み付け因子であり、partIdxはパーティション・インデックスであり、wIdxは重み付けインデックスであり、Clip3()はクリッピング関数である。
【0022】
実施形態では、数式は、初期値と複数の単位ステップ関数とを含む区分的定数関数である。初期値は、最小の重み付け因子の値及び最大の重み付け因子の値のうちの一方であり、複数の単位ステップ関数の個数は、差分重み付け因子の値の総数マイナス1に等しい。
【0023】
本開示の態様は、ビデオ復号化方法のうちの何れか1つ又は組み合わせを実行するように構成された装置を提供する。実施形態では、装置は、コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化する処理回路を含む。予測情報は現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定する。現在のブロックはGPMモードにおける2つのパーティションにパーティション化されている。パーティションの各々には各自の予測子が関連付けられている。処理回路は、現在のブロックのサンプルに対する重み付けインデックスを、サンプルの位置に基づいて決定する。処理回路は、重み付けインデックスを重み付け因子に変換する数式に従って、サンプルの重み付けインデックスに基づいて重み付け因子を計算する。処理回路は、サンプルに対応する予測子と重み付け因子とに基づいて、サンプルを再構成する。
【0024】
本開示の態様はまた、ビデオ復号化のためにコンピュータによって実行されると、ビデオ復号化方法のうちの何れか1つ又は組み合わせをコンピュータに実行させる命令を記憶する非一時的なコンピュータ読み取り可能な媒体を提供する。
【図面の簡単な説明】
【0025】
開示される対象事項の更なる特徴、性質、及び種々の利点は、以下の詳細な説明及び添付の図面から更に明らかになるであろう。
【0026】
図1A】空間マージ候補の例示的な位置を示す。
【0027】
図1B】空間マージ候補の冗長性検査で考慮される例示的な候補ペアを示す。
【0028】
図1C】時間的マージ候補に関する動きベクトル・スケーリングの例を示す。
【0029】
図1D】時間的マージ候補の例示的な位置を示す。
【0030】
図2】実施形態による通信システムの簡略化されたブロック図の概略図を示す。
【0031】
図3】実施形態による通信システムの簡略化されたブロック図の概略図を示す。
【0032】
図4】実施形態によるデコーダの簡略化されたブロック図の概略図を示す。
【0033】
図5】実施形態によるエンコーダの簡略化されたブロック図の概略図を示す。
【0034】
図6】別の実施形態によるエンコーダのブロック図を示す。
【0035】
図7】別の実施形態によるデコーダのブロック図を示す。
【0036】
図8A】ある実施態様による2つの例示的な三角パーティションを示す。
図8B】ある実施態様による2つの例示的な三角パーティションを示す。
【0037】
図9】幾つかの実施形態による三角パーティション・モードに対する片―予測動きベクトル選択を示す。
【0038】
図10A】幾つかの実施形態によるルマ及びクロマに対する例示的なウェイト・マップを示す。
図10B】幾つかの実施形態によるルマ及びクロマに対する例示的なウェイト・マップを示す。
【0039】
図11】本開示の幾つかの実施形態による例示的なジオメトリック・パーティショニング・モードを示す。
【0040】
図12】実施形態による例示的なプロセスの概略を要約したフローチャートを示す。
【0041】
図13】実施形態によるコンピュータ・システムの概略図を示す。
【発明を実施するための形態】
【0042】
本開示は、ジオメトリック・マージ・モード(geometric merge mode,GEO)に関する実施形態を含み、GEOはジオメトリック・パーティショニング・モード(geometric partitioning mode,GPM)と言及することも可能である。実施形態は、GEOを改良するための方法、装置、及び非一時的なコンピュータ読み取り可能な記憶媒体を含む。更に、ブロックは、予測ブロック、コーディング・ブロック、又はコーディング・ユニットを指す可能性がある。
【0043】
I.ビデオ・エンコーダ及びデコーダ
【0044】
図2は、本開示の実施形態による通信システム(200)の簡略化されたブロック図を示す。通信システム(200)は、例えばネットワーク(250)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(200)は、ネットワーク(250)を介して相互接続された第1ペアの端末デバイス(210)及び(220)を含む。図2の例では、第1ペアの端末デバイス(210)及び(220)は、データの片方向送信を行う。例えば、端末デバイス(210)は、ネットワーク(250)を介する他の端末デバイス(220)への伝送のために、ビデオ・データ(例えば、端末デバイス(210)によって捕捉されたビデオ・ピクチャのストリーム)をコーディングすることができる。符号化されたビデオ・データは、1つ以上のコーディングされたビデオ・ビットストリームの形態で送信することができる。端末デバイス(220)は、コーディングされたビデオ・データをネットワーク(250)から受信し、コーディングされたビデオ・データを復号化して、ビデオ・ピクチャを復元し、復元されたビデオ・データに従ってビデオ・ピクチャを表示することができる。片方向データ伝送は、メディア・サービング・アプリケーション等において一般的なものであってもよい。
【0045】
別の例では、通信システム(200)は、例えば、ビデオ・カンファレンス中に発生する可能性があるコーディングされたビデオ・データの双方向伝送を行う第2ペアの端末デバイス(230)及び(240)を含む。データの双方向伝送に関し、例えば、端末デバイス(230)及び(240)の各端末デバイスは、ネットワーク(250)を介して端末デバイス(230)及び(240)のうちの他方の端末デバイスへ伝送するために、ビデオ・データ(例えば、端末デバイスによって捕捉されるビデオ・ピクチャのストリーム)をコーディングすることができる。端末デバイス(230)及び(240)の各端末デバイスはまた、端末デバイス(230)及び(240)の他方の端末デバイスによって送信されたコーディングされたビデオ・データを受信することが可能であり、コーディングされたビデオ・データを復号化してビデオ・ピクチャを復元することが可能であり、復元されたビデオ・データに従って、アクセス可能なディスプレイ・デバイスでビデオ・ピクチャを表示することが可能である。
【0046】
図2の例では、端末デバイス(210)、(220)、(230)、及び(240)は、サーバー、パーソナル・コンピュータ、スマートフォンとして示されているが、本開示の原理はそのように限定されない可能性がある。本開示の実施形態は、ラップトップ・コンピュータ、タブレット・コンピュータ、メディア・プレーヤ、及び/又は専用のビデオ・カンファレンス装置のアプリケーションを見出している。ネットワーク(250)は、例えば有線(配線されたもの)及び/又は無線通信ネットワークを含む、コーディングされたビデオ・データを端末デバイス(210)、(220)、(230)、及び(240)の間で運ぶ任意数のネットワークを表現する。通信ネットワーク(250)は、回線交換及び/又はパケット交換型のチャネルでデータを交換することができる。代表的なネットワークは、テレコミュニケーション・ネットワーク、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、及び/又はインターネットを含む。本開示の目的に関し、ネットワーク(250)のアーキテクチャ及びトポロジーは、以下において説明されない限り、本開示の動作にとって重要ではない可能性がある。
【0047】
図3は、開示される対象事項の適用例として、ストリーミング環境におけるビデオ・エンコーダ及びビデオ・デコーダの配置を示す。開示される対象事項は、例えば、ビデオ・カンファレンス、デジタルTV、圧縮されたビデオのデジタル・メディア(CD、DVD、メモリ・スティック等を含む)への記憶などを含む、他のビデオ対応アプリケーションにも等しく適用することが可能である。
【0048】
ストリーミング・システムは、ビデオ・ソース(301)、例えばデジタル・カメラを含むことが可能であり、例えば非圧縮のビデオ・ピクチャ(302)のストリームを生成することが可能なキャプチャ・サブシステム(313)を含んでもよい。一例では、ビデオ・ピクチャのストリーム(302)は、デジタル・カメラによって撮影されるサンプルを含む。符号化されたビデオ・データ(304)(又はコーディングされたビデオ・ビットストリーム)と比較した場合に、より多くのデータ量を強調するために太い線として描かれているビデオ・ピクチャのストリーム(302)は、ビデオ・ソース(301)に結合されたビデオ・エンコーダ(303)を含む電子デバイス(320)によって処理されることが可能である。ビデオ・エンコーダ(303)は、ハードウェア、ソフトウェア、又はそれらの組み合わせを含み、以下で詳細に説明されるような開示される対象事項の態様を動作可能にする又は実現することが可能である。ビデオ・ピクチャ(302)のストリームと比較した場合に、より少ないデータ量を強調するために細い線として描かれている符号化されたビデオ・データ(304)(又は符号化されたビデオ・ビットストリーム(304))は、将来の使用のためにストリーミング・サーバー(305)に記憶されることが可能である。図3のクライアント・サブシステム(306)及び(308)のような1つ以上のストリーミング・クライアント・サブシステムは、ストリーミング・サーバー(305)にアクセスして、符号化されたビデオ・データ(304)のコピー(307)及び(309)を取り出すことができる。クライアント・サブシステム(306)は、例えば電子デバイス(330)内にビデオ・デコーダ(310)を含むことができる。ビデオ・デコーダ(310)は、符号化されたビデオ・データの到来するコピー(307)を復号化し、ディスプレイ(312)(例えばディスプレイ・スクリーン)又は他のレンダリング・デバイス(不図示)でレンダリングすることが可能なビデオ・ピクチャの出力ストリーム(311)を生成する。幾つかのストリーミング・システムでは、符号化されたビデオ・データ(304)、(307)、及び(309)(例えば、ビデオ・ビットストリーム)は、特定のビデオ・コーディング/圧縮規格に従って符号化することができる。これらの規格の例は、ITU―T勧告H.265を含む。一例において、開発中のビデオ・コーディング規格は、多用途ビデオ・コーディング(VVC)として非公式に知られている。開示される対象事項はVVCの状況で使用されてもよい。
【0049】
電子デバイス(320)及び(330)は、他のコンポーネント(図示せず)を含むことが可能であることに留意されたい。例えば、電子デバイス(320)は、ビデオ・デコーダ(不図示)を含むことが可能であり、電子デバイス(330)は、ビデオ・エンコーダ(不図示)を含むことも可能である。
【0050】
図4は本開示の実施形態によるビデオ・デコーダ(410)のブロック図を示す。ビデオ・デコーダ(410)は、電子デバイス(430)に含まれることが可能である。電子デバイス(430)は、受信機(431)(例えば、受信回路)を含むことが可能である。ビデオ・デコーダ(410)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用することが可能である。
【0051】
受信機(431)は、ビデオ・デコーダ(410)によって復号化されるべき1つ以上のコーディングされたビデオ・シーケンスを受信することが可能であり;同じ又は別の実施形態において、各々のコーディングされたビデオ・シーケンスの復号化が、他のコーディングされたビデオ・シーケンスから独立している場合には、一度に1つのコーディングされたビデオ・シーケンスを受信することが可能である。コーディングされたビデオ・シーケンスは、チャネル(401)から受信することが可能であり、このチャネルは、符号化されたビデオ・データを記憶するストレージ・デバイスへのハードウェア/ソフトウェア・リンクであってもよい。受信機(431)は、符号化されたビデオ・データを、他のデータ、例えばコーディングされたオーディオ・データ及び/又は補助的なデータ・ストリームとともに受信することが可能であり、これらのデータは、それぞれのエンティティ(不図示)を使用して転送されることが可能である。受信機(431)は、コーディングされたビデオ・シーケンスを他のデータから分離することができる。ネットワーク・ジッタに対処するために、バッファ・メモリ(415)は、受信機(431)とエントロピー・デコーダ/パーサー(420)(以後「パーサー(420)」と言及する)との間に結合されてもよい。特定のアプリケーションでは、バッファ・メモリ(415)はビデオ・デコーダ(410)の一部である。他の場合において、それはビデオ・デコーダ(410)の外側にある可能性がある(不図示)。更に別の例では、例えばネットワーク・ジッタに対処するために、ビデオ・デコーダ(410)の外側にバッファ・メモリ(不図示)が、更には、例えば再生タイミングを取り扱うためにビデオ・デコーダ(410)の内側に別のバッファ・メモリ(415)が、存在することが可能である。受信機(431)が、十分な帯域幅及び制御可能性を有するストア/フォワード・デバイスから、又は同期ネットワークから、データを受信している場合、バッファ・メモリ(415)は必要とされない可能性があり、又は小さいものとすることが可能である。インターネットのようなベスト・エフォート・パケット・ネットワークでの使用のために、バッファ・メモリ(415)が必要とされるかもしれず、それは比較的大きい可能性があり、有利なことに適応的なサイズであるとすることが可能であり、ビデオ・デコーダ(410)の外側のオペレーティング・システム又は類似の要素(不図示)において少なくとも部分的に実装されてもよい。
【0052】
ビデオ・デコーダ(410)は、コーディングされたビデオ・シーケンスからシンボル(421)を再構成するためにパーサー(420)を含むことができる。これらのシンボルのカテゴリは、ビデオ・デコーダ(410)の動作を管理するために使用される情報、及び潜在的には、図4に示されているように、電子デバイス(430)の不可欠な部分ではないが電子デバイス(430)に結合されることが可能なレンダリング・デバイス(412)(例えば、ディスプレイ・スクリーン)のようなレンダリング・デバイスを制御するための情報を含む。レンダリング・デバイスの制御情報は、サプルメンタル・エンハンスメント情報(SEIメッセージ)又はビデオ・ユーザビリティ情報(VUI)パラメータ・セット・フラグメント(不図示)の形態におけるものであってもよい。パーサー(420)は、受信したコーディングされたビデオ・シーケンスを解析/エントロピー復号化することができる。コーディングされるビデオ・シーケンスのコーディングは、ビデオ・コーディング技術又は規格に従うことが可能であり、可変長コーディング、ハフマン・コーディング、コンテキストの影響を伴う又は伴わない算術コーディング等を含む種々の原理に従うことが可能である。パーサー(420)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオ・デコーダ内のピクセルのサブグループの少なくとも1つに対するサブグループ・パラメータのセットを、コーディングされたビデオ・シーケンスから抽出することができる。サブグループは、グループ・オブ・ピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディング・ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含むことが可能である。パーサー(420)はまた、変換係数、量子化パラメータ値、動きベクトル等のようなコーディングされたビデオ・シーケンス情報から抽出することも可能である。
【0053】
パーサー(420)は、シンボル(421)を生成するために、バッファ・メモリ(415)から受信したビデオ・シーケンスに対してエントロピー復号化/解析処理を実行することが可能である。
【0054】
シンボル(421)の再構成は、コーディングされたビデオ・ピクチャ又はその部分のタイプ(例えば:インター及びイントラ・ピクチャ、インター及びイントラ・ブロック)及び他の要因に応じて、複数の異なるユニットを含むことが可能である。どのユニットがどのように包含されるかは、コーディングされたビデオ・シーケンスからパーサー(420)によって解析されたサブグループ制御情報によって制御されることが可能である。パーサー(420)と以降の複数ユニットとの間のこのようなサブグループ制御情報の流れは、明確性のために描かれていない。
【0055】
ビデオ・デコーダ(410)は、既に述べた機能ブロックを超えて更に、以下に説明するような複数の機能ユニットに概念的に細分されることが可能である。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることが可能である。しかしながら、開示される対象事項を説明する目的で、以下の機能ユニットへの概念的な細分は適切なことである。
【0056】
第1ユニットは、スケーラ/逆変換ユニット(451)である。スケーラ/逆変換ユニット(451)は、量子化された変換係数だけでなく制御情報(使用する変換、ブロック・サイズ、量子化因子、量子化スケーリング行列などを含む)も、パーサー(420)からシンボル(421)として受信する。スケーラ/逆変換ユニット(451)は、アグリゲータ(455)に入力されることが可能なサンプル値を含むブロックを出力することが可能である。
【0057】
場合によっては、スケーラ/逆変換(451)の出力サンプルは、イントラ・コーディングされたブロック:即ち、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することは可能であるブロックに関連する可能性がある。このような予測情報は、イントラ・ピクチャ予測ユニット(452)によって提供することが可能である。場合によっては、イントラ・ピクチャ予測ユニット(452)は、現在のピクチャのバッファ(458)から取り出された既に再構成された周囲の情報を使用して、再構成中のブロックの同じサイズ及び形状のブロックを生成する。現在のピクチャ・バッファ(458)は、例えば、部分的に再構成された現在のピクチャ及び/又は完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(455)は、場合によっては、サンプル毎に、イントラ予測ユニット(452)が生成した予測情報を、スケーラ/逆変換ユニット(451)によって提供されるような出力サンプル情報に加える。
【0058】
それ以外の場合には、スケーラ/逆変換ユニット(451)の出力サンプルは、インター・コーディングされた動き補償される可能性のあるブロックに関連する可能性がある。このような場合において、動き補償予測ユニット(453)は、予測に使用されるサンプルを取り出すために、参照ピクチャ・メモリ(457)にアクセスすることが可能である。ブロックに関連するシンボル(421)に従って、取り出されたサンプルを動き補償した後に、これらのサンプルは、アグリゲータ(455)によって、スケーラ/逆変換ユニット(451)の出力に加えられ(この場合、残差サンプル又は残差信号と呼ばれる)、出力サンプル情報を生成する。動き補償予測ユニット(453)が予測サンプルを取り出す元である参照ピクチャ・メモリ(457)内のアドレスは、例えばX、Y、及び参照ピクチャ成分を有することが可能なシンボル(421)の形態で、動き補償予測ユニット(453)にとって利用可能な動きベクトルによって制御されることが可能である。また、動き補償は、サブ・サンプルの正確な動きベクトルが使用される場合に、参照ピクチャ・メモリ(457)から取り出されるようなサンプル値の補間、動きベクトル予測メカニズム等を含むことが可能である。
【0059】
アグリゲータ(455)の出力サンプルは、ループ・フィルタ・ユニット(456)内の様々なループ・フィルタリング技術の影響を受けることが可能である。ビデオ圧縮技術は、コーディングされたビデオ・シーケンス(コーディングされたビデオ・ビットストリームとも呼ばれる)に含まれ、且つパーサー(420)からのシンボル(421)としてループ・フィルタ・ユニット(456)にとって利用可能にされるパラメータによって制御されるが、コーディングされたピクチャ又はコーディングされたビデオ・シーケンスの(復号化の順番で)以前の部分の復号化の間に取得されたメタ情報に応答することが可能であるとともに、以前に再構成されたループ・フィルタリングされたサンプル値にも応答することが可能である、ループ内フィルタ技術を含むことが可能である。
【0060】
ループ・フィルタ・ユニット(456)の出力は、レンダリング・デバイス(412)に出力できるだけでなく、将来のインター・ピクチャ予測に使用するために参照ピクチャ・メモリ(457)に格納することも可能なサンプル・ストリームであるとすることが可能である。
【0061】
所定のコーディングされたピクチャは、いったん完全に再構成されると、将来の予測のための参照ピクチャとして使用することが可能である。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサー(420)によって)参照ピクチャとして識別されると、現在のピクチャのバッファ(458)は参照ピクチャ・メモリ(457)の一部となることが可能であり、新しい現在のピクチャのバッファは、以後のコーディングされたピクチャの再構成を開始する前に、再割り当てされることが可能である。
【0062】
ビデオ・デコーダ(410)は、ITU―T Rec.H.265のような規格における所定のビデオ圧縮技術に従って復号化動作を実行することが可能である。コーディングされたビデオ・シーケンスは、コーディングされたビデオ・シーケンスが、ビデオ圧縮技術又は規格のシンタックス、及びビデオ圧縮技術又は規格で文書化されているようなプロファイルの両方に従うという意味で、使用されているビデオ圧縮技術又は規格によって指定されたシンタックスに準拠することが可能である。具体的には、プロファイルは、特定のツールを、そのプロファイルの下で使用できる唯一のツールとして、ビデオ圧縮技術又は規格で使用可能な全てのツールから選択することが可能である。また、コンプライアンスのために必要なことは、コーディングされたビデオ・シーケンスの複雑さが、ビデオ圧縮技術又は規格のレベルによって定義される範囲内に収まることである。場合によっては、そのレベルは、最大ピクチャ・サイズ、最大フレーム・レート、最大再構成サンプル・レート(例えば、毎秒当たりのメガサンプルで測定される)、最大参照ピクチャ・サイズ等を制限する。レベルによって設定される限界は、場合によっては、コーディングされたビデオ・シーケンスでシグナリングされるHRDバッファ管理のための仮想リファレンス・デコーダ(HRD)仕様及びメタデータによって更に制限される可能性がある。
【0063】
実施形態では、受信機(431)は、符号化されたビデオとともに追加的(冗長的)なデータを受信する可能性がある。追加的なデータは、コーディングされたビデオ・シーケンスの一部として含まれる可能性がある。追加的なデータは、データを適切に復号化するため、及び/又は元のビデオ・データをより正確に再構成するために、ビデオ・デコーダ(410)によって使用されてもよい。追加的なデータは、例えば、時間、空間、又は信号雑音比(SNR)エンハンスメント・レイヤ、冗長スライス、冗長ピクチャ、前方誤り訂正コード等の形態におけるものとすることが可能である。
【0064】
図5は、本開示の実施形態によるビデオ・エンコーダ(503)のブロック図を示す。ビデオ・エンコーダ(503)は、電子デバイス(520)に含まれる。電子デバイス(520)は、送信機(540)(例えば、送信回路)を含む。ビデオ・エンコーダ(503)は、図3の例におけるビデオ・エンコーダ(303)の代わりに使用することが可能である。
【0065】
ビデオ・エンコーダ(503)は、ビデオ・エンコーダ(503)によってコーディングされるべきビデオ画像を捕捉することが可能なビデオ・ソース(501)(図5の例では電子デバイス(520)の一部ではない)から、ビデオ・サンプルを受信することが可能である。別の例では、ビデオ・ソース(501)は、電子デバイス(520)の一部である。
【0066】
ビデオ・ソース(501)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 YCrCB、RGB、...)、及び任意の適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)であるとすることが可能なデジタル・ビデオ・サンプル・ストリームの形態で、ビデオ・エンコーダ(503)によってコーディングされるべきソース・ビデオ・シーケンスを提供することが可能である。メディア・サービング・システムにおいて、ビデオ・ソース(501)は、事前に準備されたビデオを記憶するストレージ・デバイスであってもよい。ビデオ・カンファレンス・システムでは、ビデオ・ソース(501)は、ローカルな画像情報をビデオ・シーケンスとして捕捉するカメラであってもよい。ビデオ・データは、シーケンスで見た場合に動きを伝える複数の個々のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間アレイとして組織されることが可能であり、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことが可能である。当業者は、ピクセルとサンプルとの間の関係を容易に理解することが可能である。以下の説明は、サンプルに焦点を当てている。
【0067】
実施形態によれば、ビデオ・エンコーダ(503)は、リアルタイムに、又はアプリケーションによって要求される何らかの他の時間制約の下で、ソース・ビデオ・シーケンスのピクチャを、コーディングされたビデオ・シーケンス(543)にコーディングして圧縮することが可能である。適切なコーディング速度を強制することは、コントローラ(550)の1つの機能である。幾つかの実施形態において、コントローラ(550)は、以下で説明されるように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。その結合は明確性のために描かれていない。コントローラ(550)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャ・スキップ、量子化器、レート歪最適化技術のラムダ値、...)、ピクチャ・サイズ、グループ・オブ・ピクチャ(GOP)レイアウト、最大動きベクトル許容参照エリアなどを含むことが可能である。コントローラ(550)は、特定のシステム設計のために最適化されたビデオ・エンコーダ(503)に関連する他の適切な機能を有するように構成することが可能である。
【0068】
幾つかの実施形態では、ビデオ・エンコーダ(503)は、コーディング・ループで動作するように構成される。極端に単純化された説明として、一例において、コーディング・ループは、ソース・コーダ(530)(例えば、コーディングされるべき入力ピクチャ及び参照ピクチャに基づいて、シンボル・ストリームのようなシンボルを生成する責任がある)と、ビデオ・エンコーダ(503)に組み込まれた(ローカル)デコーダ(533)とを含むことが可能である。デコーダ(533)は、(リモート)デコーダが生成するのと同様な方法で、サンプル・データを生成するためにシンボルを再構成する(シンボルとコーディングされたビデオ・ビットストリームとの間の任意の圧縮は、開示される対象事項で考慮されるビデオ圧縮技術ではロスレスであるからである)。再構成されたサンプル・ストリーム(サンプル・データ)は、参照ピクチャ・メモリ(534)に入力される。シンボル・ストリームの復号化は、デコーダの位置(ローカル又はリモート)に依存しないビット・イグザクト(bit―exact)な結果をもたらすので、参照ピクチャ・メモリ(534)中の内容もまた、ローカル・エンコーダとリモート・エンコーダとの間でビット・イグザクトである。言い換えると、エンコーダの予測部は、デコーダが復号化中に予測を使用する場合に「見る(see)」ものと厳密に同じサンプル値を、参照ピクチャ・サンプルとして「見る」。参照ピクチャ同期のこの基本原理(及び、例えばチャネル・エラーに起因して同期性が維持できない場合には、結果としてドリフトが生じる)は、幾つかの関連技術においても同様に使用されている。
【0069】
「ローカル」デコーダ(533)の動作は、図4に関連して上記で詳細に既に説明されているビデオ・デコーダ(410)のような「リモート」デコーダのものと同じであるとすることが可能である。しかしながら、図4も簡単に参照すると、シンボルが利用可能であり、且つエントロピー・コーダ(545)及びパーサー(420)によるシンボルのコーディングされたビデオ・シーケンスへの符号化/復号化はロスレスであるとすることが可能であるので、バッファ・メモリ(415)及びパーサー(420)を含むビデオ・デコーダ(410)のエントロピー復号化部は、ローカル・デコーダ(533)では完全には実現されない可能性がある。
【0070】
この時点で行うことが可能な観察は、デコーダに存在する解析/エントロピー復号化以外の任意のデコーダ技術は、必然的に、実質的に同一の機能形態で、対応するエンコーダにも存在する必要があるということである。この理由のために、開示される対象事項はデコーダの動作に焦点を当てている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるので、省略することが可能である。特定のエリアにおいてのみ、より詳細な説明が必要とされ、以下で与えられる。
【0071】
動作中に、ソース・コーダ(530)は、幾つかの例において、「参照ピクチャ」として指定されたビデオ・シーケンスからの1つ以上の以前にコーディングされたピクチャを参照して、入力ピクチャを予測符号化する、動き補償された予測コーディングを実行することが可能である。このようにして、コーディング・エンジン(532)は、入力ピクチャのピクセル・ブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセル・ブロックとの間の差分をコーディングする。
【0072】
ローカル・ビデオ・デコーダ(533)は、ソース・コーダ(530)によって生成されたシンボルに基づいて、参照ピクチャとして指定されることが可能なピクチャのコーディングされたビデオ・データを復号化することが可能である。コーディング・エンジン(532)の動作は、有利なことに、非ロスレス・プロセスであってもよい。コーディングされたビデオ・データがビデオ・デコーダ(図5には示されていない)で復号化されることが可能である場合、再構成されたビデオ・シーケンスは、典型的には、幾らかのエラーを伴うソース・ビデオ・シーケンスのレプリカである可能性がある。ローカル・ビデオ・デコーダ(533)は、リファレンス・ピクチャにおいてビデオ・デコーダによって実行されることが可能な復号化プロセスを繰り返し、再構成された参照ピクチャが、参照ピクチャ・キャッシュ(534)に記憶されることを引き起こすことができる。このように、ビデオ・エンコーダ(503)は、遠方端のビデオ・デコーダによって得られる再構成された参照ピクチャとして、共通の内容を有する再構成された参照ピクチャのコピーを、局所的に記憶することが可能である(伝送エラーはないものとする)。
【0073】
予測器(535)は、コーディング・エンジン(532)のために予測探索を行うことが可能である。即ち、コーディングされるべき新しいピクチャについて、予測器(535)は、サンプル・データ(候補の参照ピクセル・ブロックとして)又は所定のメタデータ(参照ピクチャ動きベクトル、ブロック形状など)について、参照ピクチャ・メモリ(534)を探索することができ、これらは、新しいピクチャについての適切な予測参照として役立つ可能性がある。予測器(535)は、適切な予測参照を見出すために、サンプル・ブロック―ピクセル・ブロック・ベースで動作することが可能である。場合によっては、予測器(535)によって得られた探索結果によって決定されるように、入力ピクチャは、参照ピクチャ・メモリ(534)に記憶された複数の参照ピクチャから引き出される予測参照を有する可能性がある。
【0074】
コントローラ(550)は、例えば、ビデオ・データを符号化するために使用されるパラメータ及びサブグループ・パラメータの設定を含む、ソース・コーダ(530)のコーディング動作を管理することが可能である。
【0075】
前述の機能ユニットの全ての出力は、エントロピー・コーダ(545)においてエントロピー・コーディングの影響を受ける可能性がある。エントロピー・コーダ(545)は、ハフマン・コーディング、可変長コーディング、算術コーディング等の技術に従って、シンボルをロスレス圧縮することによって、種々の機能ユニットによって生成されるようなシンボルを、コーディングされたビデオ・シーケンスに変換する。
【0076】
送信機(540)は、エントロピー・コーダ(545)によって作成されるようなコーディングされたビデオ・シーケンスをバッファリングして、通信チャネル(560)を介する送信の準備を行うことが可能であり、通信チャネル(560)は、符号化されたビデオ・データを記憶する記憶デバイスへのハードウェア/ソフトウェア・リンクであってもよい。送信機(540)は、ビデオ・コーダ(503)からのコーディングされたビデオ・データを、例えばコーディングされたオーディオ・データ及び/又は補助的なデータ・ストリーム(ソースは不図示)のような送信されるべき他のデータとマージすることが可能である。
【0077】
コントローラ(550)は、ビデオ・エンコーダ(503)の動作を管理することができる。コーディングの間に、コントローラ(550)は、コーディングされたピクチャの各々に、特定のコーディングされたピクチャのタイプを割り当てることが可能であり、これは、各ピクチャに適用されることが可能なコーディング技術に影響を及ぼす可能性がある。例えば、ピクチャは、しばしば、次のピクチャ・タイプの1つとして割り当てられてもよい。
【0078】
イントラ・ピクチャ(Iピクチャ)は、シーケンス内の如何なる他のピクチャも予測のソースとして使用せずに、符号化及び復号化されることが可能なものである。幾つかのビデオ・コーデックは、例えば、独立デコーダ・リフレッシュ(“IDR”)ピクチャを含む異なるタイプのイントラ・ピクチャを許容する。当業者は、Iピクチャのこれらの変形例、並びにそれら各自の用途及び特徴を認識している。
【0079】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、高々1つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いて符号化及び復号化されることが可能なものである。
【0080】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、高々2つの動きベクトル及び参照インデックスを用いるイントラ予測又はインター予測を用いて符号化及び復号化されることが可能なものである。同様に、複数の予測ピクチャは、1つのブロックの再構成のために、2つより多い参照ピクチャ及び関連するメタデータを使用することが可能である。
【0081】
ソース・ピクチャは、通常、複数のサンプル・ブロック(例えば、4×4、8×8、4×8、又は16×16サンプルのブロック)に空間的に細分され、ブロック毎にコーディングされることが可能である。ブロックは、ブロックそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックを参照して予測符号化されることが可能である。例えば、Iピクチャのブロックは、非予測符号化されてもよいし、又は、それらは同じピクチャの既にコーディングされたブロックを参照して予測符号化されてもよい(空間予測又はイントラ予測)。Pピクチャのピクセル・ブロックは、以前にコーディングされた1つの参照ピクチャを参照して、空間的な予測又は時間的な予測により予測符号化されてもよい。Bピクチャのブロックは、1つ又は2つの以前にコーディングされた参照ピクチャを参照して、空間的な予測又は時間的な予測により予測符号化されてもよい。
【0082】
ビデオ・エンコーダ(503)は、ITU―T Rec.H.265のような所定のビデオ・コーディング技術又は規格に従ってコーディング動作を行うことが可能である。この動作において、ビデオ・エンコーダ(503)は、入力ビデオ・シーケンスにおける時間的及び空間的な冗長性を活用する予測コーディング動作を含む種々の圧縮動作を実行することが可能である。コーディングされたビデオ・データは、従って、使用されているビデオ・コーディング技術又は規格によって指定されたシンタックスに準拠することが可能である。
【0083】
実施形態では、送信機(540)は、符号化されたビデオとともに追加データを送信することが可能である。ソース・コーダ(530)は、そのようなデータを、コーディングされたビデオ・シーケンスの一部として含むことが可能である。追加データは、時間的/空間的/SNRエンハンスメント・レイヤ、他の形式の冗長データ(冗長ピクチャ及びスライス、SEIメッセージ、VUIパラメータ・セット・フラグメント等)を含む可能性がある。
【0084】
ビデオは、時間シーケンスにおける複数のソース・ピクチャ(ビデオ・ピクチャ)として捕捉することが可能である。イントラ・ピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャにおける空間相関を利用しており、インター・ピクチャ予測は、ピクチャ間の(時間的又は他の)相関を利用する。一例では、現在のピクチャと呼ばれる符号化/復号化の下にある特定のピクチャは、ブロックにパーティション化される。現在のピクチャ内のブロックが、ビデオにおいて以前にコーディングされ且つ依然としてバッファリングされている参照ブロックに類似している場合、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることが可能である。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することが可能である。
【0085】
幾つかの実施形態では、インター・ピクチャ予測に双―予測技術を用いることが可能である。双―予測技術によれば、ビデオ内で現在のピクチャに対して復号化順序で両方とも先行している(ただし、表示順序ではそれぞれ過去及び将来におけるものである可能性がある)第1参照ピクチャ及び第2参照ピクチャのような2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1参照ピクチャ内の第1参照ブロックを指す第1動きベクトルと、第2参照ピクチャ内の第2参照ブロックを指す第2動きベクトルとによってコーディングされることが可能である。ブロックは、第1参照ブロックと第2参照ブロックとの組み合わせによって予測されることが可能である。
【0086】
更に、コーディング効率を改善するために、インター・ピクチャ予測にマージ・モード技術を用いることが可能である。
【0087】
本開示の幾つかの実施形態によれば、インター・ピクチャ予測及びイントラ・ピクチャ予測のような予測は、ブロックの単位で実行される。例えば、HEVC規格によれば、ビデオ・ピクチャのシーケンス中のピクチャは、圧縮のためにコーディング・ツリー・ユニット(CTU)にパーティション化され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセルのような同じサイズを有する。一般に、CTUは、1つのルマCTBと2つのクロマCTBである3つのコーディング・ツリー・ブロック(CTB)を含む。各CTUは、1つ又は複数のCUに再帰的に4分木分割されることが可能である。例えば、64×64ピクセルのCTUは、64×64ピクセルの1個のCU、32×32ピクセルの4個のCU、又は16×16ピクセルの16個のCUに分割されることが可能である。一例では、各CUは、インター予測タイプ又はイントラ予測タイプのような、CUの予測タイプを決定するために分析される。CUは、時間的及び/又は空間的な予測可能性に依存して1つ以上の予測ユニット(PU)に分割される。一般に、各PUはルマ予測ブロック(PB)と2つのクロマPBを含む。実施形態では、コーディング(符号化/復号化)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例としてルマ予測ブロックを用いると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセル等のような、ピクセルに対する値(例えば、ルマ値)のマトリクスを含む。
【0088】
図6は本開示の別の実施形態によるビデオ・エンコーダ(603)の図を示す。ビデオ・エンコーダ(603)は、ビデオ・ピクチャのシーケンス内の現在のビデオ・ピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コーディングされたビデオ・シーケンスの一部であるコーディングされたピクチャに符号化するように構成される。一例では、ビデオ・エンコーダ(603)は、図3の例のビデオ・エンコーダ(303)の代わりに使用される。
【0089】
HEVCの例では、ビデオ・エンコーダ(603)は、8×8サンプルの予測ブロック等のような処理ブロックのサンプル値のマトリクスを受信する。ビデオ・エンコーダ(603)は、イントラ・モード、インター・モード、又は双―予測モードを使用して、例えばレート歪最適化を使用して、処理ブロックが最良にコーディングされるかどうかを決定する。処理ブロックがイントラ・モードでコーディングされるべきである場合、ビデオ・エンコーダ(603)は、処理ブロックを、コーディングされたピクチャに符号化するためにイントラ予測技術を使用することが可能であり;処理ブロックがインター・モード又は双―予測モードで符号化されるべき場合、ビデオ・エンコーダ(603)は、処理ブロックを、コーディングされたピクチャに符号化するために、それぞれインター予測技術又は双―予測技術を使用することが可能である。特定のビデオ・コーディング技術では、マージ・モードがインター予測ピクチャ・サブモードである可能性があり、その場合、動きベクトルは、予測器外部のコーディングされた動きベクトル成分の恩恵なしに、1つ以上の動きベクトル予測子から導出される。特定の他のビデオ・コーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在する可能性がある。一例では、ビデオ・エンコーダ(603)は、処理ブロックのモードを決定するためにモード決定モジュール(不図示)のような他のコンポーネントを含む。
【0090】
図6の例では、ビデオ・エンコーダ(603)は、インター・エンコーダ(630)、イントラ・エンコーダ(622)、残差計算器(623)、スイッチ(626)、残差エンコーダ(624)、汎用コントローラ(621)、及びエントロピー・エンコーダ(625)を、図6に示されるように共に結合して含んでいる。
【0091】
インター・エンコーダ(630)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを、参照ピクチャ内の1つ以上の参照ブロック(例えば、以前のピクチャのブロック及び以後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インター符号化技術による冗長情報の記述、動きベクトル、マージ・モード情報)を生成し、任意の適切な技術を用いてインター予測情報に基づいて、インター予測結果(例えば、予測ブロック)を計算するように構成される。幾つかの例では、参照ピクチャは、符号化されたビデオ情報に基づいて復号化された復号化済み参照ピクチャである。
【0092】
イントラ・エンコーダ(622)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によってはブロックを、同じピクチャ内で既にコーディングされたブロックと比較し、変換後に量子化された係数を生成し、場合によってはイントラ予測情報(例えば、1つ以上のイントラ符号化技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラ・エンコーダ(622)はまた、同じピクチャ内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
【0093】
ジェネラル・コントローラ(621)は、一般的な制御データを決定し、一般的な制御データに基づいてビデオ・エンコーダ(603)の他のコンポーネントを制御するように構成される。一例では、ジェネラル・コントローラ(621)は、ブロックのモードを決定し、そのモードに基づいてスイッチ(626)に制御信号を提供する。例えば、モードがイントラ・モードである場合、ジェネラル・コントローラ(621)は、スイッチ(626)を制御して、残差計算器(623)による使用のためにイントラ・モード結果を選択し、且つエントロピー・エンコーダ(625)を制御して、イントラ予測情報を選択し、イントラ予測情報をビットストリームに含め;モードがインター・モードである場合、ジェネラル・コントローラ(621)は、スイッチ(626)を制御して、残差計算器(623)による使用のためにインター予測結果を選択し、且つエントロピー・エンコーダ(625)を制御して、インター予測情報を選択し、インター予測情報をビットストリームに含める。
【0094】
残差計算器(623)は、受信ブロックと、イントラ・エンコーダ(622)又はインター・エンコーダ(630)から選択された予測結果との間の差分(残差データ)を計算するように構成される。残差エンコーダ(624)は、残差データを符号化して変換係数を生成するために、残差データに基づいて動作するように構成される。一例では、残差エンコーダ(624)は、残差データを空間ドメインから周波数ドメインへ変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化された変換係数を得るために量子化処理を施される。様々な実施形態では、ビデオ・エンコーダ(603)はまた、残差デコーダ(628)も含む。残差デコーダ(628)は、逆変換を実行し、復号化された残差データを生成するように構成される。復号化された残差データは、イントラ・エンコーダ(622)及びインター・エンコーダ(630)によって適切に使用することが可能である。例えば、インター・エンコーダ(630)は、復号化された残差データ及びインター予測情報に基づいて、復号化されたブロックを生成することが可能であり、イントラ・エンコーダ(622)は、復号化された残差データ及びイントラ予測情報に基づいて、復号化されたブロックを生成することが可能である。復号化されたブロックは、復号化されたピクチャを生成するために適切に処理され、復号化されたピクチャは、メモリ回路(不図示)内にバッファリングされ、幾つかの例では参照ピクチャとして使用することが可能である。
【0095】
エントロピー・エンコーダ(625)は、符号化されたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピー・エンコーダ(625)は、HEVC規格のような適切な規格に従って種々の情報を含むように構成される。一例では、エントロピー・エンコーダ(625)は、一般的な制御データ、選択された予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報、及びその他の適切な情報をビットストリームに含めるように構成される。開示される対象事項に従って、インター・モード又は双―予測モードの何れかのマージ・サブモードにおけるブロックをコーディングする場合に、残差情報は存在しないことに留意されたい。
【0096】
図7は、本開示の別の実施形態によるビデオ・デコーダ(710)の図を示す。ビデオ・デコーダ(710)は、コーディングされたビデオ・シーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャを復号化して、再構成されたピクチャを生成するように構成される。一例では、ビデオ・デコーダ(710)は、図3の例におけるビデオ・デコーダ(310)の代わりに使用される。
【0097】
図7の例では、ビデオ・デコーダ(710)は、エントロピー・デコーダ(771)、インター・デコーダ(780)、残差デコーダ(773)、再構成モジュール(774)、及びイントラ・デコーダ(772)を、図7に示されるように共に結合して含んでいる。
【0098】
エントロピー・デコーダ(771)は、コーディングされたピクチャを作り上げるシンタックス要素を表す特定のシンボルを、コーディングされたピクチャから再構成するように構成されることが可能である。このようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラ・モード、インター・モード、双―予測モード、マージ・サブモード又は別のサブモードにおける後者の2つ)、イントラ・デコーダ(772)又はインター・デコーダ(780)それぞれによって予測のために使用される特定のサンプル又はメタデータを識別することが可能な予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報(例えば、量子化された変換係数の形式におけるもの)等を含むことが可能である。一例において、予測モードがインター又は双―予測モードである場合には、インター予測情報がインター・デコーダ(780)に提供され;予測タイプがイントラ予測タイプである場合には、イントラ予測情報がイントラ・デコーダ(772)に提供される。残差情報は、逆量子化を施されることが可能であり、残差デコーダ(773)に提供される。
【0099】
インター・デコーダ(780)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
【0100】
イントラ・デコーダ(772)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
【0101】
残差デコーダ(773)は、逆量子化を実行して非―量子化された変換係数を抽出し、非―量子化された変換係数を処理して残差を周波数ドメインから空間ドメインへ変換するように構成される。残差デコーダ(773)はまた、特定の制御情報(量子化パラメータ(QP)を含む)を必要とする可能性があり、その情報は、エントロピー・デコーダ(771)によって提供されてもよい(これは、僅かな量の制御情報でしかない可能性があるので、データ経路は描かれていない)。
【0102】
再構成モジュール(774)は、空間ドメインにおいて、残差デコーダ(773)による出力としての残差と、予測結果(場合によっては、インター又はイントラ予測モジュールによって出力されるもの)とを組み合わせて、再構成されたブロックを形成するように構成されており、再構成されたブロックは再構成されたピクチャの一部であり、再構成されたピクチャは再構成されたビデオの一部である可能性がある。デブロッキング処理などのような他の適切な処理が、視覚的な品質を改善するために実行される可能性があることに留意されたい。
【0103】
なお、ビデオ・エンコーダ(303)、(503)、及び(603)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、任意の適切な技術を用いて実現することが可能である。実施形態では、ビデオ・エンコーダ(303)、(503)、及び(603)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、1つ以上の集積回路を使用して実現することが可能である。別の実施形態では、ビデオ・エンコーダ(303)、(503)、及び(603)、並びにビデオ・デコーダ(310)、(410)、及び(710)は、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実現することが可能である。
【0104】
II.インター予測に関する三角パーティション・モード(TPM)
【0105】
場合によっては、インター予測のためにTPMをサポートすることができる。TPMは、8×8以上のCUに限って適用されることが可能である。TPMは、レギュラー・マージ・モード、MMVDモード、CIIPモード、CIIPモード、及びサブブロック・マージ・モードのような他のマージ・モードと共に、一種のマージ・モードとしてCUレベル・フラグを使用してシグナリングすることが可能である。
【0106】
TPMが使用される場合、CUは、例えば図8A及び図8Bに示すように、対角線分割又は逆対角線分割の何れかを用いて、2つの三角形のパーティションに均等に分割することができる。CU内の各三角パーティションは、それ自身の動きパラメータを用いてインター予測することができる。各パーティションに対して片―予測のみが許容され得る。即ち、各パーティションは、1つの動きベクトルと1つの参照インデックスとを有する。片―予測の動き制約は、三角パーティションが従来の双―予測と同じであることを保証するために適用される。即ち、各CUに対して、2つの動き補償された予測のみが必要とされる。各パーティションに対する片―予測の動きは、図1A―1Dで説明されるプロセスを使用して導出することができる。
【0107】
現在のCUに対してTPMが使用される場合、TPMの方向(対角又は逆対角)を示すフラグと、2つのマージ・インデックス(各パーティションについて1つずつ)とを更にシグナリングすることができる。最大TPM候補サイズは、スライス・レベルで明示的にシグナリングされ、TMPマージ・インデックスに対するシンタックスの2値化を指定することが可能である。各三角パーティションを予測した後、対角又は逆対角エッジに沿うサンプル値は、適応重み付け値を用いて混合プロセスによって調整することが可能である。CU全体の予測信号を導出した後、他の予測モードの場合と同様に、変換及び量子化プロセスがCU全体に更に適用されることが可能である。最終的に、TPMを用いて予測されるCUの動きフィールドは記憶されることが可能である。
【0108】
場合によっては、TPMはサブブロック変換(SBT)と組み合わせて使用することができない。即ち、シグナリングされた三角モードが1に等しい場合、cu_sbt_flagはシグナリングによらず0であると推定される。
【0109】
片―予測候補リストは、拡張されたマージ予測プロセスに従って構築されたマージ候補リストから、直接的に導き出すことが可能である。Nを、三角・片―予測候補リスト内の片―予測の動きのインデックスとする。XはNのパリティに等しいとした場合に、N番目の拡張マージ候補のLX動きベクトルが、TPMに対するN番目の片―予測動きベクトルとして使用される。これらの動きベクトルは、図9において“X”でマークされている。N番目の拡張マージ候補の対応するLX動きベクトルが存在しない場合、代わりに、同じ候補のL(1―X)動きベクトルが、TPMの片―予測動きベクトルとして使用される。
【0110】
各三角パーティションを自身の動きパラメータを用いて予測した後、混合プロセスを2つの予測信号に適用して、対角又は逆対角エッジ周辺のサンプルを導出することが可能である。次の重み付けの値が混合プロセスで使用される:図10A及び図10Bに示されるように、ルマについては {7/8,6/8,5/8,4/8,3/8,2/8,1/8}であり、クロマについては{6/8,4/8,2/8}である。
【0111】
場合によっては、TPMでコーディングされたCUの動きベクトルは、以下のプロセスで生成することができる。Mv1とMv2が異なる参照ピクチャ・リストからのものである場合(例えば、一方がL0からであり、他方がL1からである場合)、Mv1とMv2はシンプルに組み合わされて双―予測動きベクトルを形成する。そうでない場合、Mv1とMv2が同じリストからのものである場合、片―予測動きMv2のみが記憶される。
【0112】
III.ジオメトリック・マージ・モード(GEO)
【0113】
ジオメトリック・マージ・モード(GEO)は、ジオメトリック・パーティショニング・モード(GPM)とも言及され、複数の異なるパーティショニング方式をサポートすることが可能である。パーティショニング方式は、角度及びエッジによって定めることが可能である。例えば、140個の異なるパーティショニング方式は、(0°と360°との間を11.25°で等分して量子化した)32個の角度と、CUの中心に対する5つのエッジとによって区別することができる。
【0114】
図11は例示的なGEOを示す。図11において、角度φiは0ないし360度の間の量子化された角度を表し、距離オフセットρiは最大距離ρmaxの量子化されたオフセットを表す。ρmaxの値は、w又はhの何れかに対して式(1)によって幾何学的に導出することが可能であり、w又はhは、8に等しく、log2スケールの短辺長でスケーリングされる。変数hとwは現在のブロックの高さと幅を表す。φが0°に等しい場合、ρmaxはw/2に等しい。φが90°に等しい場合、ρmaxはh/2に等しい。式(1)において、ρmargin=1.0は、分割境界が現在のブロックのコーナーに近接し過ぎないようにするためのものである。
【数2】
【0115】
GEOにおける各パーティション・モード(即ち、角度インデックスとエッジ・インデックスのペア)には、ピクセル適応ウェイト・テーブルが指定され、2つのパーティション化されたパート内でサンプルを混合することができる。サンプルの重み付け値は、例えば、0ないし8の範囲に及ぶことが可能であり、ピクセルの中心位置からエッジまでのL2距離によって決定されることが可能である。重み付け値が割り当てられる場合、ユニット・ゲイン制約に従うことが可能である。例えば、あるGEOパーティションに小さな重み付け値が割り当てられる場合に、他方のパーティションには、相補的な大きな値が割り当てられ、合計で高々8になる。
【0116】
IV.GEOに関する重み付けサンプル予測プロセス
【0117】
GEOでは、式(2)に従って、2つの3ビット混合マスク(即ち、重み付け値又は重み付け因子)W0及びW1と、2つの予測子P0及びP1とを用いて、最終的なサンプル予測子PBを導出することができる。
PB=(W0P0 + W1P1 + 4) >> 3 (Eq.2)
【0118】
混合マスクW0とW1は、それらの重み付けインデックスに基づいて、ルックアップ・テーブルから導出することができる。重み付けインデックスは、式(3)に示されるように、サンプル位置(x,y)と分割境界との間の距離に基づいて、導出することができる。
【数3】
【0119】
式(4)において、nは距離量子化ステップ総数を表し、iは角度φのGEOに関する距離ステップ・インデックスを表し、i<nである。
【0120】
最終的に、式(5)に示すように、サンプルの混合マスクW0とW1(又は重み付け値)は、GeoFilterとして示される表3を用いて設定することができる。
【数4】
【0121】
例示的な重み付けサンプル予測プロセスは、以下のように記述される。このプロセスへの入力は、現在のコーディング・ブロックの幅と高さを指定する2つの変数nCbWとnCbH、2つの(nCbW)x(nCbH)アレイpreSamplesLAとpreSamplesLB、幾何学的パーティションの角度インデックスを指定する変数angleIdx、幾何学的パーティションの距離idxを指定する変数distanceIdx、及び色成分インデックスを指定する変数cIdxを含む。このプロセスの出力は、予測サンプル値の(nCbW)x(nCbH)アレイpbSamplesと(nCbW>>2)x(nCbH>>2)アレイmotionIdxである。
【0122】
変数bitDepthは次のようにして導出することができる:
cIdx=0である場合には、bitDepth=BitDepthYであり;そうでない場合には、bitDepth=BitDepthCである。
【0123】
変数shift1=Max(5,17―bitDepth)であり、offset1=1<<(shift1―1)である。
【0124】
x=0..nCbW―1及びy=0..nCbH―1において、ルマに対するウェイト・アレイsampleWeightL[x][y]とクロマに対するsampleWeightC[x][y]
は、次のようにして導出することができる。
【0125】
変数wIdx=log2(nCbW)及びhIdx=log2(nCbH)。
【0126】
変数
whRatio=(wIdx>= hIdx)?wIdx―hIdx:hIdx―wIdx, scaleIdx=(wIdx >= hIdx)?hIdx―3:wIdx―3。
【0127】
変数displacementX=angleIdx及びdisplacementY=(displacementX+8)%32。
【0128】
変数angleN=(wIdx>=hIdx)?(angleIdx>>3&1)?angleIdx%8:8―angleIdx%8:(angleIdx>>3&1)?8―angleIdx%8:angleIdx%8。
【0129】
変数rhoは、テーブル1及びテーブル2で指定されるstepDis及びDisとして示されるルックアップ・テーブルを使用して以下の値に設定することが可能である。
rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx)。
【0130】
変数weightIdx及びweightIdxAbsは、x=0..nCbW―1及びy=0..nCbH―1において、ルックアップ・テーブル2を使用して計算することが可能である。
weightIdx=((x<<1)+1)*Dis[displacementX]+
((y<<1)+1))*Dis[displacementY]―rho。weightIdxAbs=Clip3(0, 26, (abs(weightIdx)+4) >>3)。
【0131】
変数partIdxは、x=0及びy=nCbH-1である場合には、weightIdx>0に設定することが可能である。
【0132】
x=0..nCbW―1及びy=0..nCbH-1において、sampleWeightL[x][y]の値は、GeoFilterとして表3に従って設定することが可能である。
sampleWeightL[x][y]=weightIdx<=0?GeoFilter[weightIdxAbs]:8―GeoFilter[weightIdxAbs]。
【0133】
x=0..nCbW―1及びy=0..nCbH-1において、値sampleWeightC[x][y]は次のように設定することが可能である:
sampleWeightC[x][y]=sampleWeightL[(x<<(SubWidthC-1))][
(y<<(SubHeightC-1))]。
テーブル1
【表1】
テーブル2
【表2】
テーブル3
【表3】
【0134】
予め計算される混合マスクの記憶要件を削減するために、最小混合マスク記憶方法は、混合ウェイト記憶に対して84―91%のメモリ要件の削減を達成することができる。
【0135】
g_sampleWeightL []が混合ウェイトに対する予め決定されるマスクを表すものとする。Nは各セットにおいて予め決定されたマスクの数を表し、NはNA>>1に設定されるものと仮定し、ここで、NAはGEOでサポートされる角度の個数である。M×Mは混合ウェイトに対する予め決定されたマスクのサイズを表し、Mは128+((ND―1)×(128>>S))<<1に設定され、ここで、NDはGEOでサポートされるステップ数であり、SはND―1に設定される。32角度5ステップの設定の場合、Nは16に設定され、Mは192に設定される。24角度4ステップの設定の場合、Nは12に設定され、Mは224に設定される。
【0136】
ジオメトリック・パーティショニング・インデックスKによるサイズW×Hのブロックについて、ルマ・サンプルの混合ウェイトは以下のように導出される。変数角度φ及び距離ρは、ジオメトリック・パーティショニング・インデックスKを用いてルックアップ・テーブルから取得される。offsetX及びoffsetYは、以下のように計算することができる:
【数5】
【0137】
GEOのための最小混合ウェイト・マスク・ストレージを用いる典型的な重み付けサンプル予測プロセスは、以下のように記述される。このプロセスへの入力は、現在のコーディング・ブロックの幅と高さを指定する2つの変数nCbWとnCbH、(nCbW)x(nCbH)の2つのアレイpredSamplesLAとpredSamplesLB、ジオメトリック・パーティションの角度インデックスを指定する変数angleIdx 、ジオメトリック・パーティションの距離idxを指定する変数distanceIdx、及び色成分インデックスを指定する変数cIdxを含む。このプロセスの出力は、予測サンプル値の(nCbW)x(nCbH)アレイpbSamples、及び変数partIdxを含む。
【0138】
変数bitDepthは次のようにして導出することができる:
cIdx=0である場合には、bitDepth=BitDepthYであり;そうでない場合には、bitDepth=BitDepthCである。
【0139】
変数shift1=Max(5, 17―bitDepth)及びoffset1=1
<<(shift1―1)である。
【0140】
x=0..nCbW―1及びy=0..nCbH―1において、ルマ及びクロマに関するウェイト・アレイ・サンプルsampleWeightL[x][y]及びsampleWeightC[x][y]は次のとおりである:
【0141】
変数hwRatio=nCbH/nCbW。
【0142】
変数displacementX=angleIdx及びdisplacementY=(displacementX+8)%32。
【0143】
変数partIdx=(angleIdx>=13&&
angleIdx<=27) ? 1:0。
【0144】
変数rhoはルックアップ・テーブル2を利用して以下の値に設定することができる。
rho=(Dis[displacementX]<<
8)+(Dis[displacementY]<<8)。
【0145】
以下の条件のうちの1つが真である場合には、変数shiftHor=0:
(1) angleIdx%16=8;及び (2) angleIdx%16!=0及びhwRatio≧1である。そうでない場合にはshiftHor=1である。
【0146】
shiftHor=0である場合には、offsetX=(256―nCbW)>>1,
offsetY=(256―nCbH)>>1+angleIdx<16?(distanceIdx*nCbH)>>3:―((distanceIdx*nCbH)>>3)である。
【0147】
そうでない場合に、if
shiftHor=1である場合には、offsetX=(256―nCbW)>>1+angleIdx<16?(distanceIdx*nCbW)>>3:―((distanceIdx*nCbW)>>3),
offsetY=(256―nCbH)>>1である。
【0148】
変数weightIdx及びweightIdxAbsは、x=0..nCbW―1 and y=0..nCbH―1においてルックアップ・テーブル2を使用して次のように計算することができる:
weightIdx=(((x+offsetX)<<1)+1)*Dis[displacementX]+(((y+offsetY)<<1)+1))*Dis[displacementY]―rho,
weightIdxAbs=Clip3(0, 26, abs(weightIdx)).
【0149】
x=0..nCbW―1及びy=0..nCbH―1におけるsampleWeightL[ x
][ y ]の値は、GeoFilterとして示されるテーブル3に従って設定することができる。
sampleWeightL[x][y]=weightIdx<=0?GeoFilter[weightIdxAbs]:8―GeoFilter[weightIdxAbs]。
【0150】
x=0..nCbW―1 and y=0..nCbH―1における値sampleWeightC[x][y]は、次のように設定することができる:
sampleWeightC[x][y]=sampleWeightL[(x<<(SubWidthC―1))][(y<<(SubHeightC―1))]。
【0151】
V.GEOに関する動きベクトル記憶プロセス
場合によっては、4×4動き記憶ユニットの四隅における輝度サンプル・ウェイトを合計することが可能である。その合計を2つの閾値と比較して、2つの片―予測動き情報及び双―予測動き情報のうちの1つが記憶されているかどうかを決定することができる。双―予測動き情報は、TPMと同じプロセスを用いて導出することができる。
【0152】
GEOに関する例示的な動きベクトル記憶プロセスは、以下のように記述される。
【0153】
xSbIdx=0..
(nCbW>>2)―1及びySbIdx=0..(nCbH>>2) ―1におけるアレイmotionIdx[xSbIdx][ySbIdx]は、次のようにして導出することができる:
【0154】
変数threshScaler=(wIdx+hIdx)>>1)―1, threshLower
=32>>threshScaler, threshUpper=32―threshLower, Cnt=sampleWeightL[(xSbIdx<<2)][(ySbIdx<<2)]+sampleWeightL[(xSbIdx<<2)+3][(ySbIdx<<2)]+sampleWeightL[(xSbIdx<<2)][(ySbIdx<<2)+3]+sampleWeightL[(xSbIdx<<2)+3][(ySbIdx<<2)+3],
Cnt=partIdx?32―Cnt:Cnt,
motionIdx[xSbIdx][ySbIdx]=Cnt<=threshLower?0:Cnt>=threshUpper?1:2。
【0155】
merge_geo_flag[xCb][yCb]=1である場合には、xSbIdx=0..numSbX―1,及びySbIdx=0..numSbY―1においてsType=motionIdx[xSbIdx][ySbIdx]である。
【0156】
場合によっては、動きベクトル記憶プロセスは更に簡略化される。4×4動き記憶ユニットの中心位置と分割境界との間の距離を計算し、固定閾値と比較して、片―又は双―予測動き情報が4×4動き記憶ユニットに対して記憶されているかどうかを決定することができる。距離の符号は、どの片―予測動き情報が片―予測記憶ケースで記憶されるべきかを示す。混合マスク及び動き記憶の依存性を排除することができる。
【0157】
merge_geo_flag[xCb][yCb]=1である場合には、wIdx=log2(cbWidth),
hIdx=log2(cbHeight), whRatio=(wIdx >= hIdx)?wIdx―hIdx:hIdx―wIdx,
scaleIdx=(wIdx>=hIdx)?hIdx―3:wIdx―3, displacementX=angleIdx, displacementY=(displacementX+8)%32,
angleN=(wIdx>=hIdx)?(angleIdx>>3&1)?angleIdx% 8:8―angleIdx%8:(angleIdx>>3&1)?8―angleIdx%8:angleIdx%8である。
【0158】
変数rhoは、テーブル1及びテーブル2で指定されるstepDis及びDisとして示されるルックアップ・テーブルを使用して以下の値に設定される。
rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx)。
【0159】
変数motionOffsetは、テーブル1及びテーブル2で指定されるDisとして示されるルックアップ・テーブルを使用して以下の値に設定される。
motionOffset=3*Dis[displacementX]+3*Dis[displacementY]。
【0160】
変数motionIdxはルックアップ・テーブル2を使用して以下のように計算される:
motionIdx=((xSbIdx
<<3)+1)*Dis[displacementX]+((xSbIdx<<3)+1))*Dis[displacementY] ―rho+motionOffset。
【0161】
変数sTypeは次のようにして導出される:partIdx=1である場合には、sType=abs(motionIdx)<256?2:motionIdx<=0?1:0であり;そうでない場合には、sType=abs(motionIdx)<256?2:motionIdx
<= 0?0:1。
【0162】
動きフィールド記憶のためにマスクを記憶するのに必要なメモリを削減するために、あるプロセスでは、予め定義されたマスクからの全ての情報を、動きフィールド記憶のマスクに対して導出することができる。このプロセスは、MergeWedgeFlag[xCb][yCb]=1でコーディング・ユニットを復号化する場合に呼び出される。このプロセスへの入力は、現在のピクチャの左上ルマ・サンプルに対する現在のコーディング・ブロックの左上サンプルを指定するルマ位置(xCb, yCb)、ルマ・サンプルの現在のコーディング・ブロックの幅を指定する変数cbWidth、ルマ・サンプルの現在のコーディング・ブロックの高さを指定する変数cbHeight、1/16の分数サンプル精度におけるルマ動きベクトルmvA及びmvB、参照インデックスrefIdxA及びrefIdxB、そして予測リスト・フラグpredListFlagA及びpredListFlagBを含む。
【0163】
水平及び垂直方向で現在のコーディング・ブロック内の4×4ブロックの個数を指定する変数numSbX及びnumSbYは、numSbX=cbWidth>>2及びnumSbY=cbHeight>>2に等しく設定される。
【0164】
変数displacementX=angleIdx,
displacementY=(displacementX+8)%32, hwRatio=nCbH / nCbW。
【0165】
以下の条件のうちの1つが真である場合には、変数shiftHor=0:
(1) angleIdx%16=8;及び (2) angleIdx%16!=0及び
である。そうでない場合には、shiftHor=1である。
【0166】
変数partIdx=(angleIdx>=13&&angleIdx<=27)?1:0である。
【0167】
shiftHor=0である場合には、offsetX=(64―numSbX)>>1,
offsetY=(64―numSbY)>>1+angleIdx<16?(distanceIdx*nCbH)>> 5:―((distanceIdx*nCbH)>>5).
Otherwise, if shiftHor=1, offsetX=(64―numSbX)>>1+angleIdx<16?(distanceIdx*nCbW)>>5:―((distanceIdx*nCbW)>>
5), offsetY=(64― numSbY)>>1である。
【0168】
変数rhoの値は、以下の数式及びテーブル2で指定されるDisのルックアップ・テーブルに従って導出される。
rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8)。
【0169】
変数motionOffsetは、テーブル1及びテーブル2で指定されるDisとして示されるルックアップ・テーブルを使用して以下の値に設定される。
motionOffset=3*Dis[displacementX]+3*Dis[displacementY]。
【0170】
xSbIdx=0..numSbX―1及びySbIdx=0..numSbY―1に関してサブブロック・インデックス(xSbIdx,
ySbIdx)における各々の4×4サブブロックに関し、変数motionIdxはルックアップ・テーブル2を使用して以下のように計算される:
motionIdx=(((xSbIdx+offsetX)<<3)+1)*Dis[displacementX]+(((xSbIdx+offsetY<<3)+1))*Dis[displacementY]―rho+motionOffset。
【0171】
VI.オン・ザ・フライ重み付けインデックスの重み付け値への計算
【0172】
GEOに関する上記の重み付けサンプル・プロセスにおいて、重み付けインデックスwIdx(x, y)の重み付け値(又は重み付け因子)weight(x, y)への変換は、式(9)―(11)に示されるように、線形関数に基づいて導出することができる。
【数6】
【0173】
一例では、maxValue=8,
bias=4, 量子化ステップ・サイズs=1/7.2である。fl2intOp演算は、浮動小数点の値を整数に変換するために使用され、round、floor、又はceilの組み合わせとすることが可能である。表3のようなルックアップ・テーブルは、上記数式に関する例示的な実装方法である。
【0174】
しかしながら、異なるサンプルはルックアップ・テーブルの異なる入力値を有する可能性があるので、上記の数式が使用される場合に、これらのサンプルに対して並列処理を実行するには、ルックアップ・テーブルの複数のコピーが必要とされる可能性がある。従って、GEOに関する上記の重み付けサンプル・プロセスは、ハードウェア及びソフトウェアの実装に対してフレンドリーではない。この問題に対処するために、本開示は、異なるサンプルの重み付け値を並列に導出できるように、計算ベースの変換の実施形態を含む。
【0175】
本開示の態様によれば、重み付けインデックスwIdx(x,y)の重み付け値weight(x, y)への変換は、右シフト演算によるオン・ザ・フライ計算に基づいて導出することができる。
【0176】
幾つかの実施態様において、オン・ザ・フライ計算は、オフセット値と重み付けインデックスwIdx(x,y)との和であり、オフセット値は、右シフト演算の関数である。更に、オフセット値は丸めることが可能である。
【0177】
実施形態において、重み付けインデックス(x,y)の重み付け値weight(x,y)への変換は、式(12)に従って導出することができる。
【数7】
【0178】
式(12)において、オフセット値2idx2wShiftBit+2は、右シフト・オペランドidx2wShiftBitの(底が2である)指数関数である。一例では、右シフト・オペランドidx2wShiftBit=m+3であり、重み付け値weight(x, y)=(2m+5―wIdx(x, y))>>(m+3)である。mは重み付けインデックスを計算するために使用されるコサイン・テーブル(例えば、テーブル2)の精度ビット数(例えば、3又は6)を表すことが可能である。
【0179】
実施形態において、重み付けインデックスwIdx(x,
y)の重み付け値weight(x,
y)への変換は、式(13)又は式(14)に従って導出することができる。
【数8】
【0180】
式(13)及び式(14)において、クリップ関数Clip3()は、[0,8]のような所定の範囲内に、重み付け値weight(x,
y)を制限するために使用される。一例では、オフセット値idx2wOffsetは、式(15)に示されるように、右シフト・オペランドidx2wShiftBitの線形関数である。
【数9】
【0181】
右シフト・オペランドidx2wShiftBitは、重み付けインデックス及び/又は計算された距離値(例えば、重み付けインデックス)を計算するために使用されるコサイン・テーブル(例えば、テーブル2)の精度ビット数(例えば、3,6,9)とすることが可能である。
【0182】
実施形態では、重み付けインデックスは、式(16)に示されるように、パーティション・インデックスpartIdxに従う符号変換を有することが可能である。
【数10】
【0183】
従って、重み付け値は式(17)又は式(18)に従って導出することができる。
【数11】
【0184】
一例では、パーティション・インデックスpartIdxは、現在のブロックの左下隅のサンプルの重み付けインデックスに従って設定することが可能である。別の例では、パーティション・インデックスpartIdxは、式(19)の角度インデックスangleIdxに従って設定することが可能であり、ここで、T1及びT2は2つの閾値である。一実施形態において、T1=0及びT2=20である。
【数12】
【0185】
実施形態では、パーティション・インデックスpartIdxは、異なる角度のパーティションの定義として使用することができる。重み付け値は、式(20)及び式(21)に従って導出することができる。
【数13】
【0186】
実施形態では、重み付け値は、式(22)及び式(23)に従って導出することができる。
【数14】
【0187】
次に、式(19)で説明した角度インデックスangleIdxの条件に従って、現在のブロックのサンプルの最終混合マスクを反転させることができる。
【0188】
開示の態様に従って、重み付けインデックスwIdx(x,
y)の重み付け値weight(x,
y)への変換は、区分的定数関数に基づいて導出することが可能である。区分的定数関数は、初期値と複数の単位ステップ関数とを含むことが可能である。重み付け因子の値の範囲内で、初期値は、最小の重み付け因子の値及び最大の重み付け因子の値のうちの一方であるとすることが可能である。更に、複数の単位ステップ関数の個数は、重み付け因子の値の総数マイナス1に等しいとすることが可能である。
【0189】
実施形態では、重み付け値weight(x,
y)は、式(24)に示すように、予め定められた初期値smallestWeightと4つの単位ステップ関数から導出することができる。
【数15】
ここで、νは重み付けインデックスであり、ωi(ν)は式(25)又は式(26)に従って導出することが可能である。
【数16】
【0190】
表4は、重み付けインデックスを重み付け値にマッピングするための例示的なルックアップ・テーブルを示す。
テーブル4
【表4】
【0191】
式(24)と式(25)を用いてテーブル4を表現する場合、初期値smallestWeight=4であり、閾重み付けインデックスC0―C3はそれぞれ4、11、18、25とすることが可能である。
【0192】
式(24)と式(26)を用いてテーブル4を表現する場合、初期値smallestWeight=4であり、閾重み付けインデックスP0―P3はそれぞれ3、10、17、24とすることが可能である。
【0193】
テーブル5は、重み付けインデックスを重み付け値にマッピングするための別の例示的なルックアップ・テーブルを示す。
テーブル5
【表5】
【0194】
式(24)と式(25)を用いてテーブル5を表現する場合、初期値smallestWeight=4であり、閾重み付けインデックスC0―C3はそれぞれ3、10、17、26とすることが可能である。
【0195】
式(24)と式(26)を用いてテーブル5を表現する場合、初期値smallestWeight=4であり、閾重み付けインデックスP0―P3はそれぞれ2、9、16、25とすることが可能である。
【0196】
実施形態では、重み付け値weight(x,
y)は、式(27)に示すように、所定の初期値largestWeightと4つの単位ステップ関数から導くことができる。
【数17】
ここで、ωi(ν)は式(28)又は式(29)に従って導出することが可能である。
【数18】
【0197】
式(27)と式(28)を用いてテーブル4を表現する場合、初期値largestWeight=8であり、閾重み付けインデックスC0―C3はそれぞれ3、10、17、24とすることが可能である。
【0198】
式(27)と式(29)を用いてテーブル4を表現する場合、初期値largestWeight=8であり、閾重み付けインデックスP0―P3はそれぞれ4、11、18、25とすることが可能である。
【0199】
式(27)と式(28)を用いてテーブル5を表現する場合、初期値largestWeight=8であり、閾重み付けインデックスC0―C3はそれぞれ2、9、16、25とすることが可能である。
【0200】
式(27)と式(29)を用いてテーブル5を表現する場合、初期値largestWeight=8であり、閾重み付けインデックスP0―P3はそれぞれ3、10、17、26とすることが可能である。
【0201】
関係演算子(≧)と(>)は、例えばCやC++で定義されているように、対応する関係が真ならば1を、対応する関係が偽ならば0を生成することに留意されたい。
【0202】
VII.フローチャート
【0203】
図12は、本開示の実施形態による例示的なプロセス(1200)を要約したフローチャートを示す。様々な実施形態において、プロセス(1200)は、端末デバイス(210)、(220)、(230)及び(240)の処理回路、ビデオ・エンコーダ(303)の機能を実行する処理回路、ビデオ・デコーダ(310)の機能を実行する処理回路、ビデオ・デコーダ(410)の機能を実行する処理回路、イントラ予測モジュール(452)の機能を実行する処理回路、ビデオ・エンコーダ(503)の機能を実行する処理回路、予測器(535)の機能を実行する処理回路、イントラ・エンコーダ(622)の機能を実行する処理回路、イントラ・デコーダ(772)の機能を実行する処理回路などのような処理回路によって実行される。幾つかの実施形態では、プロセス(1200)はソフトウェア命令で実装され、従って、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1200)を実行する。
【0204】
プロセス(1200)は概してステップ(S1210)において始まることが可能であり、プロセス(1200)は、コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化する。予測情報は現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定する。現在のブロックはGPMモードにおける2つのパーティションにパーティション化されている。パーティションの各々には各自の予測子が関連付けられている。次いで、プロセス(1200)はステップ(S1220)に進む。
【0205】
ステップ(S1220)において、プロセス(1200)は、現在のブロックのサンプルに対する重み付けインデックスを、サンプルの位置に基づいて決定する。次いで、プロセス(1200)はステップ(S1230)に進む。
【0206】
ステップ(S1230)において、プロセス(1200)は、重み付けインデックスを重み付け因子に変換する数式に従って、サンプルの前記重み付けインデックスに基づいて重み付け因子を計算する。次いで、プロセス(1200)はステップ(S1240)に進む。
【0207】
ステップ(S1240)において、プロセス(1200)は、サンプルに対応する予測子と重み付け因子とに基づいて、サンプルを再構成する。サンプルを再構成した後、プロセス(1200)は終了する。
【0208】
実施形態では、右シフト演算は、重み付けインデックスとオフセット値との合計に対して実行される。右シフト演算の結果は、所定の範囲内にあるようにクリッピングされる。
【0209】
実施形態では、オフセット値は右シフト演算によりシフトされるビット数に基づいており、右シフト演算によりシフトされるビット数は、重み付けインデックス、及び重み付けインデックスを計算するために使用されるコサイン・テーブルのサイズ、のうちの少なくとも1つに基づいている。
【0210】
実施形態では、現在のブロックのパーティションの間の分割境界を定める角度インデックスと距離インデックスとがGPMに基づいて決定される。サンプルの位置と、角度インデックスと、距離インデックスとに基づいて、サンプルに対する重み付けインデックスが決定される。
【0211】
実施形態では、角度インデックスに基づいてパーティション・インデックスが決定される。パーティション・インデックスに基づいて重み付け因子が計算される。
【0212】
実施形態では、数式は、
【数19】
であり、ここで、idx2wShiftBitは右シフト演算によりシフトされるビット数を示し、weightは重み付け因子であり、partIdxはパーティション・インデックスであり、wIdxは重み付けインデックスであり、Clip3()はクリッピング関数である。
【0213】
実施形態では、数式は、初期値と複数の単位ステップ関数とを含む区分的定数関数である。初期値は、最小の重み付け因子の値及び最大の重み付け因子の値のうちの一方であり、複数の単位ステップ関数の個数は、差分重み付け因子の値の総数マイナス1に等しい。
【0214】
VIII.コンピュータ・システム
【0215】
上述した技術は、コンピュータ読み取り可能な命令を用いてコンピュータ・ソフトウェアとして実装することが可能であり、1つ以上のコンピュータ読み取り可能な媒体に物理的に記憶することが可能である。例えば、図13は、開示される対象事項の特定の実施形態を実現するのに適したコンピュータ・システム(1300)を示す。
【0216】
コンピュータ・ソフトウェアは、アセンブリ、コンパイル、リンク、又は類似のメカニズムの対象となり得る任意の適切なマシン・コード又はコンピュータ言語を使用してコーディングされ、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)等によって、直接的に実行されることが可能な命令、又は解釈やマイクロコード実行などを経由する命令、を含むコードを作成することが可能である。
【0217】
命令は、例えば、パーソナル・コンピュータ、タブレット・コンピュータ、サーバー、スマートフォン、ゲーム・デバイス、モノのインターネット・デバイス等を含む、種々のタイプのコンピュータ又はそのコンポーネント上で実行することができる。
【0218】
コンピュータ・システム(1300)に関して図13に示されるコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実現するコンピュータ・ソフトウェアの使用範囲又は機能性に関する如何なる制限も示唆するようには意図されていない。また、コンポーネントの構成は、コンピュータ・システム(1300)の例示的な実施形態に示されたコンポーネントの任意の1つ又は組み合わせに関する何らかの従属性や要件を有するものと解釈してはならない。
【0219】
コンピュータ・システム(1300)は、特定のヒューマン・インターフェース入力デバイスを含むことが可能である。このようなヒューマン・インターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データ・グローブの動き)、聴覚的な入力(例えば、声、拍手)、視覚的な入力(例えば、ジェスチャ)、嗅覚的な入力(図示されていない)を介する1人以上の人間ユーザーによる入力に応答することが可能である。また、ヒューマン・インターフェース・デバイスは、オーディオ(例えば、会話、音楽、周囲音)、画像(例えば、スキャンされた画像、静止画像カメラから得られる写真画像)、ビデオ(例えば、2次元ビデオ、立体ピクチャを含む3次元ビデオ)のような、人間による意識的な入力に必ずしも直接的に関係しない特定のメディアを捕捉するために使用することが可能である。
【0220】
入力ヒューマン・インターフェース・デバイスは、キーボード(1301)、マウス(1302)、トラックパッド(1303)、タッチ・スクリーン(1310)、データ・グローブ(不図示)、ジョイスティック(1305)、マイクロホン(1306)、スキャナ(1307)、カメラ(1308)のうちの(描かれているものはそれぞれ唯1つであるが)1つ以上を含む可能性がある。
【0221】
コンピュータ・システム(1300)は、特定のヒューマン・インターフェース出力デバイスを含むことも可能である。このようなヒューマン・インターフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通じて、1人以上の人間ユーザーの感覚を刺激することが可能である。このようなヒューマン・インターフェース出力デバイスは、触覚出力デバイス(例えば、タッチ・スクリーン(1310)、データ・グローブ(不図示)、ジョイスティック(1305)による触覚フィードバックであるが、入力デバイスとして役立たない触覚フィードバック・デバイスが存在する可能性もある)、聴覚的な出力デバイス(例えば、スピーカー(1309)、ヘッドフォン(不図示せず))、視覚的な出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマ・スクリーン、OLEDスクリーンを含むスクリーン(1310)であり、各々はタッチ・スクリーン入力機能を備えるか又は備えておらず、各々は触覚フィードバック機能を備えるか又は備えておらず、それらのうちの幾つかは、二次元的な視覚的な出力、立体出力のような手段による三次元以上の出力を出力することが可能であってもよい;仮想現実メガネ(図示せず)、ホログラフィック・ディスプレイ、及びスモーク・タンク(図示せず))、及びプリンタ(図示せず)を含むことが可能である。これらの視覚的な出力デバイス(例えば、スクリーン(1310))は、グラフィックス・アダプタ(1350)を介してシステム・バス(1348)に接続することが可能である。
【0222】
コンピュータ・システム(1300)はまた、CD/DVD等の媒体(1321)を使うCD/DVD ROM/RW(1320)を含む光媒体、サム・ドライブ(1322)、リムーバブル・ハード・ドライブ又はソリッド・ステート・ドライブ(1323)、テープ及びフロッピー・ディスク(図示せず)等のレガシー磁気媒体(不図示)、セキュリティ・ドングル(不図示)等の特殊化されたROM/ASIC/PLDベースのデバイスのような、人間がアクセス可能な記憶デバイス及びそれらに関連する媒体を含むことも可能である。
【0223】
当業者はまた、ここで開示される対象事項に関連して使用される用語「コンピュータ読み取り可能な媒体」は、伝送媒体、搬送波、又はその他の過渡的な信号を包含しないことも理解するはずである。
【0224】
コンピュータ・システム(1300)はまた、1つ以上の通信ネットワーク(1355)へのインターフェースを含むことも可能である。1つ以上の通信ネットワークは、例えば、無線、有線、光であるとすることが可能である。1つ以上の通信ネットワークは、更に、ローカル、ワイド・エリア、メトロポリタン、車両産業、リアルタイム、遅延耐性などに関するものであるとすることが可能である。1つ以上の通信ネットワーク(1355)の例は、イーサーネットのようなローカル・エリア・ネットワーク、無線LAN、セルラー・ネットワーク(GSM、3G、4G、5G、LTE等を含む)、TVの有線又は無線ワイド・エリア・デジタル・ネットワーク(ケーブルTV、衛星TV、及び地上放送TVを含む)、CANBusを含む車両産業などを含む。特定のネットワークは、一般に、特定の汎用データ・ポート又は周辺バス(1349)に取り付けられる外部ネットワーク・インターフェース・アダプタを必要とする(例えば、コンピュータ・システム(1300)のUSBポート);その他は、一般に、以下に説明するようなシステム・バスに取り付けることによって、コンピュータ・システム(1300)のコアに統合される(例えば、イーサーネット・インターフェースはPCコンピュータ・システム内に、セルラー・ネットワーク・インターフェースはスマートフォン・コンピュータ・システム内に統合される)。これらのうちの任意のネットワークを使用して、コンピュータ・システム(1300)は、他のエンティティと通信することが可能である。このような通信は、片―方向受信専用(例えば、放送テレビ)、片―方向送信専用(例えば、特定のCANbusデバイスに対するCANbus)、又は双―方向、例えばローカル又はワイド・エリア・デジタル・ネットワークを使用する他のコンピュータ・システムに対するものであるとすることが可能である。特定のプロトコル及びプロトコル・スタックは、上述のように、それらのネットワーク及びネットワーク・インターフェースの各々で使用されることが可能である。
【0225】
前述のヒューマン・インターフェース・デバイス、ヒューマン・アクセシブル・ストレージ・デバイス、及びネットワーク・インターフェースは、コンピュータ・システム(1300)のコア(1340)に取り付けられることが可能である。
【0226】
コア(1340)は、1つ以上の中央処理ユニット(CPU)(1341)、グラフィックス処理ユニット(GPU)(1342)、フィールド・プログラマブル・ゲート・エリア(FPGA)(1343)の形式における特殊プログラマブル処理デバイス、特定タスク用のハードウェア・アクセラレータ(1344)等を含むことが可能である。これらのデバイスは、リード・オンリ・メモリ(ROM)(1345)、ランダム・アクセス・メモリ(1346)、内部大容量ストレージ・デバイス(例えば、内的なユーザー・アクセシブルでないハード・ドライブ、SSD等)(1347)と共に、システム・バス(1348)を介して接続されることが可能である。幾つかのコンピュータ・システムでは、システム・バス(1348)は、追加のCPU、GPU等による拡張を可能にするために、1つ以上の物理的プラグの形態でアクセス可能である可能性がある。周辺デバイスは、コアのシステム・バス(1348)に直接取り付けられるか、又は周辺バス(1349)を介して取り付けられることが可能である。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0227】
CPU(1341)、GPU(1342)、FPGA(1343)、及びアクセラレータ(1344)は、組み合わされて、前述のコンピュータ・コードを構成することが可能な特定の命令を実行することが可能である。コンピュータ・コードは、ROM(1345)又はRAM(1346)に記憶されることが可能である。一時的なデータはRAM(1346)に格納されることが可能である一方、永続的なデータは例えば内部の大容量ストレージ(1347)に格納されることが可能である。任意のメモリ・デバイスに対する高速な記憶及び検索は、キャッシュ・メモリを利用することで可能になる可能性があり、キャッシュ・メモリは、1つ以上のCPU(1341)、GPU(1342)、大容量ストレージ(1347)、ROM(1345)、RAM(1346)等と密接に関連付けることが可能である。
【0228】
コンピュータ読み取り可能な媒体は、様々なコンピュータ実装動作を実行するためのコンピュータ・コードをそこに有することが可能である。媒体及びコンピュータ・コードは、本開示の目的のために特別に設計及び構築されたものであるとすることが可能であり、又はそれらは、コンピュータ・ソフトウェアの分野における当業者にとって周知であり且つ入手可能な種類のものであるとすることが可能である。
【0229】
例示として、限定ではなく、アーキテクチャ(1300)、具体的にはコア(1340)を有するコンピュータ・システムは、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として、1つ以上の有形のコンピュータ読み取り可能な媒体に具現化されたソフトウェアを実行する機能を提供することが可能である。そのようなコンピュータ読み取り可能な媒体は、コア内部の大容量ストレージ(1347)又はROM(1345)のような非一時的な性質のコア(1340)の特定のストレージと同様に、上述したようなユーザー・アクセシブル大容量ストレージに関連するメディアであるとすることが可能である。本開示の様々な実施形態を実現するソフトウェアは、そのようなデバイスに記憶され、コア(1340)によって実行されることが可能である。コンピュータ読み取り可能な媒体は、特定のニーズに応じて、1つ以上のメモリ・デバイス又はチップを含むことが可能である。ソフトウェアは、RAM(1346)に記憶されたデータ構造を定めること、及びソフトウェアによって定められたプロセスに従ってそのようなデータ構造を修正することを含む、本願で説明された特定のプロセス又は特定のプロセスの特定の部分を、コア(1340)及び特にその中のプロセッサ(CPU、GPU、FPGA等を含む)に実行させることが可能である。更に又は代替として、コンピュータ・システムは、回路(例えば、アクセラレータ(1344))内に配線された又は他の方法で組み込まれたロジックの結果として機能を提供することが可能であり、その回路は、本願で説明された特定のプロセス又は特定のプロセスの特定の部分を実行することを、ソフトウェアの代わりに又はそれと共に実行することが可能である。ソフトウェアに対する言及はロジックを含み、必要に応じて、その逆も可能である。コンピュータ読み取り可能な媒体に対する言及は、実行のためのソフトウェアを記憶する(集積回路(IC)のような)回路、実行のためのロジックを具体化する回路、又は適切な場合にはその両方を包含することが可能である。本開示はハードウェア及びソフトウェアの適切な任意の組み合わせを包含する。
【0230】
本開示は、幾つかの例示的な実施形態を説明してきたが、本開示の範囲内に該当する、変更、置換、及び種々の代替的な均等物が存在する。従って、当業者は、本願で明示的には図示も説明もされていないが、本開示の原理を具体化し、従ってその精神及び範囲内にある多くのシステム及び方法を案出できるであろうとことは理解されるであろう。
【0231】
[付記]
(付記1)
デコーダにおけるビデオ・コーディング方法であって:
コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化するステップであって、前記予測情報は前記現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定し、前記現在のブロックは前記GPMモードにおける2つのパーティションにパーティション化されており、前記パーティションの各々には各自の予測子が関連付けられている、ステップ;
前記現在のブロックのサンプルに対する重み付けインデックスを、前記サンプルの位置に基づいて決定するステップ;
前記重み付けインデックスを重み付け因子に変換する数式に従って、前記サンプルの前記重み付けインデックスに基づいて重み付け因子を計算するステップ;及び
前記サンプルに対応する前記予測子と前記重み付け因子とに基づいて、前記サンプルを再構成するステップ;
を含む方法。
(付記2)
前記計算するステップは:
前記重み付けインデックスとオフセット値との合計に対して右シフト演算を実行するステップ;及び
前記右シフト演算の結果を、所定の範囲内にあるようにクリッピングするステップ;
を含む、付記1に記載の方法。
(付記3)
前記オフセット値は前記右シフト演算によりシフトされるビット数に基づいており、前記右シフト演算によりシフトされる前記ビット数は、前記重み付けインデックス、及び前記重み付けインデックスを計算するために使用されるコサイン・テーブルのサイズ、のうちの少なくとも1つに基づいている、付記2に記載の方法。
(付記4)
前記重み付けインデックスを決定する前記ステップは:
前記GPMに基づいて、前記現在のブロックの前記パーティションの間の分割境界を定める角度インデックスと距離インデックスとを決定するステップ;及び
前記サンプルの前記位置と、前記角度インデックスと、前記距離インデックスとに基づいて、前記サンプルに対する前記重み付けインデックスを決定するステップ;
を含む、付記1に記載の方法。
(付記5)
前記計算するステップは:
前記角度インデックスに基づいてパーティション・インデックスを決定するステップ;及び
前記パーティション・インデックスに基づいて前記重み付け因子を計算するステップ;
を含む、付記1に記載の方法。
(付記6)
前記数式は、
【数20】
であり、ここで、idx2wShiftBitは前記右シフト演算によりシフトされる前記ビット数を示し、weightは前記重み付け因子であり、partIdxは前記パーティション・インデックスであり、wIdxは前記重み付けインデックスであり、Clip3()はクリッピング関数である、付記5に記載の方法。
(付記7)
前記数式は、初期値と複数の単位ステップ関数とを含む区分的定数関数である、付記1に記載の方法。
(付記8)
前記初期値は、最小の重み付け因子の値及び最大の重み付け因子の値のうちの一方であり、前記複数の単位ステップ関数の個数は、差分重み付け因子の値の総数マイナス1に等しい、付記7に記載の方法。
(付記9)
処理回路を含む装置であって、前記処理回路は:
コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化するステップであって、前記予測情報は前記現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定し、前記現在のブロックは前記GPMモードにおける2つのパーティションにパーティション化されており、前記パーティションの各々には各自の予測子が関連付けられている、ステップ;
前記現在のブロックのサンプルに対する重み付けインデックスを、サンプルの位置に基づいて決定するステップ;
前記重み付けインデックスを重み付け因子に変換する数式に従って、前記サンプルの前記重み付けインデックスに基づいて重み付け因子を計算するステップ;及び
前記サンプルに対応する前記予測子と前記重み付け因子とに基づいて、前記サンプルを再構成するステップ;
を行うように構成されている、装置。
(付記10)
前記処理回路は:
前記重み付けインデックスとオフセット値との合計に対して右シフト演算を実行するステップ;及び
前記右シフト演算の結果を、所定の範囲内にあるようにクリッピングするステップ;
を行うように更に構成されている、付記9に記載の装置。
(付記11)
前記オフセット値は前記右シフト演算によりシフトされるビット数に基づいており、前記右シフト演算によりシフトされる前記ビット数は、前記重み付けインデックス、及び前記重み付けインデックスを計算するために使用されるコサイン・テーブルのサイズ、のうちの少なくとも1つに基づいている、付記10に記載の装置。
(付記12)
前記処理回路は:
前記GPMに基づいて、前記現在のブロックの前記パーティションの間の分割境界を定める角度インデックスと距離インデックスとを決定するステップ;及び
前記サンプルの前記位置と、前記角度インデックスと、前記距離インデックスとに基づいて、前記サンプルに対する前記重み付けインデックスを決定するステップ;
を行うように更に構成されている、付記9に記載の装置。
(付記13)
前記処理回路は:
前記角度インデックスに基づいてパーティション・インデックスを決定するステップ;及び
前記パーティション・インデックスに基づいて前記重み付け因子を計算するステップ;
を更に行うように構成されている、付記9に記載の装置。
(付記14)
前記数式は、
【数21】
であり、ここで、idx2wShiftBitは前記右シフト演算によりシフトされる前記ビット数を示し、weightは前記重み付け因子であり、partIdxは前記パーティション・インデックスであり、wIdxは前記重み付けインデックスであり、Clip3()はクリッピング関数である、付記13に記載の装置。
(付記15)
前記数式は、初期値と複数の単位ステップ関数とを含む区分的定数関数である、付記9に記載の装置。
(付記16)
前記初期値は、最小の重み付け因子の値及び最大の重み付け因子の値のうちの一方であり、前記複数の単位ステップ関数の個数は、差分重み付け因子の値の総数マイナス1に等しい、付記15に記載の装置。
(付記17)
少なくとも1つのプロセッサにより方法を実行することが可能なプログラムを記憶する非一時的なコンピュータ読み取り可能な記憶媒体であって、前記方法は:
コーディングされたビットストリームにおける現在のピクチャの現在のブロックの予測情報を復号化するステップであって、前記予測情報は前記現在のブロックに対するジオメトリック・パーティショニング・モード(GPM)を指定し、前記現在のブロックは前記GPMモードにおける2つのパーティションにパーティション化されており、前記パーティションの各々には各自の予測子が関連付けられている、ステップ;
前記現在のブロックのサンプルに対する重み付けインデックスを、前記サンプルの位置に基づいて決定するステップ;
前記重み付けインデックスを重み付け因子に変換する数式に従って、前記サンプルの前記重み付けインデックスに基づいて重み付け因子を計算するステップ;及び
前記サンプルに対応する前記予測子と前記重み付け因子とに基づいて、前記サンプルを再構成するステップ;
を含む、記憶媒体。
(付記18)
前記計算するステップは:
前記重み付けインデックスとオフセット値との合計に対して右シフト演算を実行するステップ;及び
前記右シフト演算の結果を、所定の範囲内にあるようにクリッピングするステップ;
を含む、付記17に記載の記憶媒体。
(付記19)
前記オフセット値は前記右シフト演算によりシフトされるビット数に基づいており、前記右シフト演算によりシフトされる前記ビット数は、前記重み付けインデックス、及び前記重み付けインデックスを計算するために使用されるコサイン・テーブルのサイズ、のうちの少なくとも1つに基づいている、付記18に記載の記憶媒体。
(付記20)
前記重み付けインデックスを決定する前記ステップは:
前記GPMに基づいて、前記現在のブロックの前記パーティションの間の分割境界を定める角度インデックスと距離インデックスとを決定するステップ;及び
前記サンプルの前記位置と、前記角度インデックスと、前記距離インデックスとに基づいて、前記サンプルに対する前記重み付けインデックスを決定するステップ;
を含む、付記17に記載の記憶媒体。
【0232】
付録A:頭字語
AMT: Adaptive Multiple Transform(適応複数変換)
AMVP: Advanced Motion Vector Prediction(アドバンスト動きベクトル予測)
ASIC: Application―Specific Integrated Circuit(特定用途向け集積回路)
ATMVP: Alternative/Advanced Temporal Motion Vector Prediction(代替的/アドバンスト時間的動きベクトル予測)
BDOF: Bi―directional Optical Flow(双―方向オプティカル・フロー)
BDPCM (or RDPCM): Residual Difference Pulse Coded Modulation(残差パルス符号変調)
BIO: Bi―directional Optical Flow(双方向オプティカル・フロー)
BMS: Benchmark Set(ベンチマーク・セット)
BT: Binary Tree(二分木)
BV: Block Vector(ブロック・ベクトル)
CANBus: Controller Area Network Bus(コントローラ・エリア・ネットワーク・バス)
CB: Coding Block(コーディング・ブロック)
CBF: Coded Block Flag(コーディングされたブロック・フラグ)
CCLM: Cross―Component Linear Mode/Model(クロス・コンポーネント線形モード/モデル)
CD: Compact Disc(コンパクト・ディスク)
CPR: Current Picture Referencing(現在のピクチャの参照)
CPU: Central Processing Unit(中央処理ユニット)
CRT: Cathode Ray Tube(陰極線管)
CTB: Coding Tree Block(コーディング・ツリー・ブロック)
CTU: Coding Tree Unit(コーディング・ツリー・ユニット)
CU: Coding Unit(コーディング・ユニット)
DM: Derived Mode(導出されたモード)
DPB: Decoder Picture Buffer(デコーダ・ピクチャ・バッファ)
DVD: Digital Video Disc(デジタル・ビデオ・ディスク)
EMT: Enhanced Multiple Transform(エンハンスト複数変換)
FPGA: Field Programmable Gate Areas(フィールド・プログラマブル・ゲート・エリア)
GOP: Group of Picture(ピクチャのグループ)
GPU: Graphics Processing Unit(グラフィックス処理ユニット)
GSM: Global System for Mobile communications(移動通信用グローバル・システム)
HDR: High Dynamic Range(ハイ・ダイナミック・レンジ)
HEVC: High Efficiency Video Coding(高効率ビデオ・コーディング)
HRD: Hypothetical Reference Decoder(仮説参照デコーダ)
IBC: Intra Block Copy(イントラ・ブロック・コピー)
IC: Integrated Circuit(集積回路)
IDT: Identify Transform(恒等変換)
ISP: Intra Sub―Partitions(イントラ・サブ・パーティション)
JEM: Joint
Exploration Model (共同探索モデル)
JVET: Joint Video Exploration Team(共同ビデオ探索チーム)
LAN: Local Area Network(ローカル・エリア・ネットワーク)
LCD: Liquid―Crystal Display(液晶ディスプレイ)
LFNST: Low Frequency Non―Separable Transform, or Low Frequency Non―Separable Secondary
Transform(低周波非セパラブル変換、又は低周波非セパラブル・セカンダリ変換)
LTE: Long―Term Evolution(ロング・ターム・エボリューション)
L_CCLM: Left―Cross―Component Linear Mode/Model(左クロス・コンポーネント線形モード/モデル)
LT_CCLM: Left and Top Cross―Component Linear Mode/Model(左・上クロス・コンポーネント線形モード/モデル)
MIP: Matrix based Intra Prediction(マトリクス・ベースのイントラ予測)
MPM: Most Probable Mode(最確モード)
MRLP (or MRL): Multiple Reference Line Prediction(複数参照ライン予測)
MTS: Multiple Transform Selection(複数変換選択)
MV: Motion Vector(動きベクトル)
NSST: Non―Separable Secondary Transform(非セパラブル・セカンダリ変換)
OLED: Organic Light―Emitting Diode(有機発光ダイオード)
PBs: Prediction Blocks(予測ブロック)
PCI: Peripheral Component Interconnect(周辺コンポーネント相互接続)
PDPC: Position Dependent Prediction Combination(位置依存性予測コンビネーション)
PLD: Programmable Logic Device(プログラマブル論理デバイス)
PPR: Parallel―Processable Region(並列処理可能領域)
PPS: Picture Parameter Set(ピクチャ・パラメータ・セット)
PU: Prediction Unit(予測ユニット)
QT: Quad―Tree(四分木)
RAM: Random Access Memory(ランダム・アクセス・メモリ)
ROM: Read―Only Memory(リード・オンリ・メモリ)
RST: Reduced―Size Transform(縮小サイズ変換)
SBT: Sub―block Transform(サブブロック変換)
SCC: Screen Content Coding(スクリーン・コンテンツ・コーディング)
SCIPU: Small
Chroma Intra Prediction Unit(スモール・クロマ・イントラ予測ユニット)
SDR: Standard Dynamic Range(標準ダイナミック・レンジ)
SEI: Supplementary Enhancement Information(補足エンハンスメント情報)
SNR: Signal Noise Ratio(信号雑音比)
SPS: Sequence Parameter Set(シーケンス・パラメータ・セット)
SSD: Solid―state Drive(ソリッド・ステート・ドライブ)
SVT: Spatially Varying Transform(空間変動変換)
TSM: Transform Skip Mode(変換スキップ・モード)
TT: Ternary Tree(三分木)
TU: Transform Unit(変換ユニット)
T_CCLM: Top Cross―Component Linear Mode/Model(トップ・クロス・コンポーネント線形モード/モデル)
USB: Universal Serial Bus(ユニバーサル・シリアル・バス)
VPDU: Visual Process Data Unit(視覚プロセス・データ・ユニット)
VPS: Video Parameter Set(ビデオ・パラメータ・セット)
VUI: Video Usability Information(ビデオ・ユーザビリティ情報)
VVC: Versatile Video Coding (汎用ビデオ・コーディング)
WAIP: Wide―Angle Intra Prediction(広角イントラ予測)
図1A
図1B
図1C
図1D
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10A
図10B
図11
図12
図13
【外国語明細書】