(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】ブロックベースのビデオ符号化のための符号予測
(51)【国際特許分類】
H04N 19/12 20140101AFI20240912BHJP
H04N 19/176 20140101ALI20240912BHJP
H04N 19/136 20140101ALI20240912BHJP
H04N 19/196 20140101ALI20240912BHJP
H04N 19/46 20140101ALI20240912BHJP
【FI】
H04N19/12
H04N19/176
H04N19/136
H04N19/196
H04N19/46
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024516981
(86)(22)【出願日】2022-09-15
(85)【翻訳文提出日】2024-05-07
(86)【国際出願番号】 US2022043607
(87)【国際公開番号】W WO2023043885
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】PCT/US2022/040442
(32)【優先日】2022-08-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521147444
【氏名又は名称】ベイジン ダージャー インターネット インフォメーション テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】BEIJING DAJIA INTERNET INFORMATION TECHNOLOGY CO., LTD.
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100163511
【氏名又は名称】辻 啓太
(72)【発明者】
【氏名】ワン シャンリン
(72)【発明者】
【氏名】シュウ シャオユウ
(72)【発明者】
【氏名】ヤン ニン
(72)【発明者】
【氏名】チェン イーウェン
(72)【発明者】
【氏名】クオ チェウェイ
(72)【発明者】
【氏名】チェン ウェイ
(72)【発明者】
【氏名】チュウ ホンチェン
(72)【発明者】
【氏名】ユ ビン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA23
5C159MC11
5C159ME01
5C159PP04
5C159RC12
5C159TA37
5C159TB08
5C159TC02
5C159TD09
5C159TD10
5C159TD16
5C159UA02
5C159UA05
(57)【要約】
本開示の実装形態は、ビデオデコーダ側での変換係数の符号予測のためのビデオ復号装置及び方法を提供する。前記方法は、ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成するステップを含んでもよい。前記方法は、支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて、前記複数の仮説候補から1つの仮説を選択して、前記変換係数候補のセットの予測された符号のセットとするステップを更に含んでもよい。前記方法は、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを更に含んでもよい。
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサによって、ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成するステップと、
前記1つ以上のプロセッサによって、支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて、前記複数の仮説候補から1つの仮説を選択して、前記変換係数候補のセットの予測された符号のセットとするステップと、
前記1つ以上のプロセッサによって、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップと、を含む、変換係数の符号予測のためのビデオ復号方法。
【請求項2】
前記符号シグナリングビットのシーケンスと前記変換ブロックに関連する量子化された変換係数とを含むビットストリームを受信するステップと、
前記量子化された変換係数から逆量子化された変換係数を生成するステップと、
前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップと、を更に含む、請求項1に記載のビデオ復号方法。
【請求項3】
逆一次変換と逆低周波非分離変換(LFNST)を前記逆量子化された変換係数に適用して、前記変換ブロックに対応する残差ブロックにおける残差サンプルを生成するステップを更に含む、請求項1に記載のビデオ復号方法。
【請求項4】
前記変換ブロックの隣接するサンプルを外挿するための前記支配的な勾配方向を決定するステップを更に含む、請求項1に記載のビデオ復号方法。
【請求項5】
前記支配的な勾配方向を決定するステップは、
前記変換ブロックの隣接するサンプルのテンプレートを選択するステップと、
勾配フィルタウィンドウを前記テンプレートに適用して、それぞれの前記テンプレートの勾配を計算するステップと、
前記計算された勾配に基づいて前記支配的な勾配方向を選択するステップと、を更に含む、請求項4に記載のビデオ復号方法。
【請求項6】
前記計算された勾配に基づいて前記支配的な勾配方向を選択するステップは、
前記計算された勾配に基づいて勾配のヒストグラムを決定するステップであって、前記勾配のヒストグラムの各エントリが所定の角度方向における前記勾配の累積強度に対応するステップと、
前記勾配のヒストグラムにおける最大の前記累積強度に対応する角度方向を、前記支配的な勾配方向として選択するステップと、を更に含む、請求項5に記載のビデオ復号方法。
【請求項7】
前記計算された勾配に基づいて前記勾配のヒストグラムを決定するステップは、
各テンプレートの勾配の角度及び強度を計算するステップと、
前記勾配の角度を前記勾配のヒストグラムにおける前記所定の角度方向の1つに変換するステップと、
前記勾配の前記強度を、前記勾配の角度から変換された前記所定の角度方向に対応する累積強度に加算するステップと、を更に含む、請求項6に記載のビデオ復号方法。
【請求項8】
前記支配的な勾配方向に属する前記変換ブロックの隣接する前記サンプルの割合が第1所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項5に記載のビデオ復号方法。
【請求項9】
前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項5に記載のビデオ復号方法。
【請求項10】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超え、かつ前記支配的な勾配方向の勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項5に記載のビデオ復号方法。
【請求項11】
前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向の直交方向が決定される、請求項5に記載のビデオ復号方法。
【請求項12】
前記量子化された変換係数から前記逆量子化された変換係数を生成するステップは、
前記量子化された変換係数の変換係数レベルに基づいて、前記逆量子化された変換係数の量子化インデックスを決定するステップを更に含む、請求項2に記載のビデオ復号方法。
【請求項13】
前記逆量子化された変換係数の量子化インデックスを決定するステップは、各量子化された変換係数に対して、
前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルに基づいて、2つの所定のスカラー量子化器から1つの量子化器を選択するステップと、
前記量子化された変換係数に適用される前記選択された量子化器に基づいて、前記対応する逆量子化された変換係数の前記量子化インデックスを決定するステップと、を更に含む、請求項12に記載のビデオ復号方法。
【請求項14】
前記量子化器は、状態遷移マシンに応じて、前記2つの所定のスカラー量子化器の間で選択され、前記状態遷移マシンの各状態は、前記2つの所定のスカラー量子化器のうちの1つに対応し、
前記ビデオ復号方法は、
状態遷移マシンの前の状態と、前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルのパリティとに基づいて、状態遷移マシンの現在の状態を決定するステップと、
前記現在の状態に対応する1つの所定のスカラー量子化器を前記量子化器として選択するステップと、を更に含む、請求項13に記載のビデオ復号方法。
【請求項15】
前記変換係数候補のセットは、前記逆量子化された変換係数の前記量子化インデックスの強度に基づいて、前記逆量子化された変換係数から選択される、請求項12に記載のビデオ復号方法。
【請求項16】
前記変換係数候補のセットは、前記変換ブロックの再構成された辺縁サンプルに対する前記逆量子化された変換係数の影響スコアに基づいて、前記逆量子化された変換係数から選択され、
前記再構成された辺縁サンプルに対する前記逆量子化された変換係数の前記影響スコアは、前記再構成された辺縁サンプルに対する各逆量子化された変換係数の前記量子化インデックスの変動のL1ノルム又はL2ノルムとして測定される、請求項12に記載のビデオ復号方法。
【請求項17】
前記変換係数候補のセットの前記複数の仮説候補を生成するステップは、
前記変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定するステップと、
テンプレートベースの仮説生成スキームを適用して、前記複数の符号候補の組み合わせの前記複数の仮説候補をそれぞれ生成するステップと、を更に含む、請求項1に記載のビデオ復号方法。
【請求項18】
前記変換係数候補のセットの前記符号シグナリングビットのシーケンスは、前記変換係数候補の元の符号が前記変換係数候補の予測された符号と同一であるか否かを示す、請求項1に記載のビデオ復号方法。
【請求項19】
前記符号シグナリングビットのシーケンスは、値が0である第1ビンを含み、
前記予測された符号のセットと、前記符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの前記元の符号を推定するステップは、
前記符号シグナリングビットのシーケンスにおける前記第1ビンに対応する第1群の変換係数候補の前記予測された符号を、前記第1群の変換係数候補の前記元の符号として用いるステップを更に含む、請求項18に記載のビデオ復号方法。
【請求項20】
前記符号シグナリングビットのシーケンスは、値が1である第2ビンと、第2群の変換係数候補の前記予測された符号の対応する正確さを通知するための追加のビンのセットとを更に含み、
前記予測された符号のセットと、前記符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップは、
前記予測された符号を前記第2群の変換係数候補の前記元の符号として用いる前に、前記追加のビンのセットに応じて前記第2群の変換係数候補の予測された符号を補正するステップを更に含む、請求項19に記載のビデオ復号方法。
【請求項21】
複数のビデオフレームを含むビデオを記憶するメモリと、
前記メモリに結合され、かつ
ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成し、
前記複数の仮説候補から、支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて選択される1つの仮説を、前記変換係数候補のセットの予測された符号のセットとして選択し、
前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するように構成された1つ以上のプロセッサと、を含む、変換係数の符号予測のためのビデオ復号装置。
【請求項22】
前記1つ以上のプロセッサは、
前記符号シグナリングビットのシーケンスと前記変換ブロックに関連する量子化された変換係数とを含むビットストリームを受信し、
前記量子化された変換係数から逆量子化された変換係数を生成し、
前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するように更に構成される、請求項21に記載のビデオ復号装置。
【請求項23】
前記1つ以上のプロセッサは、
逆一次変換と逆低周波非分離変換(LFNST)を前記逆量子化された変換係数に適用して、前記変換ブロックに対応する残差ブロックにおける残差サンプルを生成するように更に構成される、請求項21に記載のビデオ復号装置。
【請求項24】
前記1つ以上のプロセッサは、
前記変換ブロックの隣接するサンプルを外挿するための前記支配的な勾配方向を決定するように更に構成される、請求項21に記載のビデオ復号装置。
【請求項25】
前記支配的な勾配方向を決定するために、前記1つ以上のプロセッサは、
前記変換ブロックの隣接するサンプルのテンプレートを選択し、
勾配フィルタウィンドウを前記テンプレートに適用して、それぞれの前記テンプレートの勾配を計算し、
前記計算された勾配に基づいて前記支配的な勾配方向を選択するように更に構成される、請求項24に記載のビデオ復号装置。
【請求項26】
前記計算された勾配に基づいて前記支配的な勾配方向を選択するために、前記1つ以上のプロセッサは、
前記計算された勾配に基づいて、勾配のヒストグラムを決定し、前記勾配のヒストグラムの各エントリが所定の角度方向における勾配の累積強度に対応し、
前記勾配のヒストグラムにおける前記最大の累積強度に対応する前記角度方向を、前記支配的な勾配方向として選択するように更に構成される、請求項25に記載のビデオ復号装置。
【請求項27】
前記計算された勾配に基づいて、前記勾配のヒストグラムを決定するために、前記1つ以上のプロセッサは、
各テンプレートの前記勾配の角度及び強度を計算し、
前記勾配の前記角度を前記勾配のヒストグラムにおける前記所定の角度方向の1つに変換し、
前記勾配の前記強度を、前記勾配の前記角度から変換された前記所定の角度方向に対応する前記累積強度に加算するように更に構成される、請求項26に記載のビデオ復号装置。
【請求項28】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項25に記載のビデオ復号装置。
【請求項29】
前記支配的な勾配方向の勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項25に記載のビデオ復号装置。
【請求項30】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超え、かつ前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定される、請求項25に記載のビデオ復号方法。
【請求項31】
前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向の直交方向が決定される、請求項25に記載のビデオ復号装置。
【請求項32】
前記量子化された変換係数から前記逆量子化された変換係数を生成するために、前記1つ以上のプロセッサは、
前記量子化された変換係数の変換係数レベルに基づいて、前記逆量子化された変換係数の量子化インデックスを決定するように更に構成される、請求項21に記載のビデオ復号装置。
【請求項33】
前記逆量子化された変換係数の量子化インデックスを決定するために、前記1つ以上のプロセッサは、各量子化された変換係数に対して、
前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルに基づいて、2つの所定のスカラー量子化器から1つの量子化器を選択し、
前記量子化された変換係数に適用される前記選択された量子化器に基づいて、対応する前記逆量子化された変換係数の前記量子化インデックスを決定するように更に構成される、請求項32に記載のビデオ復号装置。
【請求項34】
前記量子化器は、状態遷移マシンに応じて、前記2つの所定のスカラー量子化器の間で選択され、前記状態遷移マシンの各状態は、前記2つの所定のスカラー量子化器のうちの1つに対応し、
前記1つ以上のプロセッサは、
状態遷移マシンの前の状態と、前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルのパリティとに基づいて、状態遷移マシンの現在の状態を決定し、
前記現在の状態に対応する1つの前記所定のスカラー量子化器を前記量子化器として選択するように更に構成される、請求項33に記載のビデオ復号装置。
【請求項35】
前記変換係数候補のセットは、前記逆量子化された変換係数の前記量子化インデックスの強度に基づいて、前記逆量子化された変換係数から選択される、請求項32に記載のビデオ復号装置。
【請求項36】
前記変換係数候補のセットは、前記変換ブロックの再構成された辺縁サンプルに対する前記逆量子化された変換係数の影響スコアに基づいて、前記逆量子化された変換係数から選択され、
前記再構成された辺縁サンプルに対する前記逆量子化された変換係数の前記影響スコアは、前記再構成された辺縁サンプルに対する各逆量子化された変換係数の前記量子化インデックスの変動のL1ノルム又はL2ノルムとして測定される、請求項32に記載のビデオ復号装置。
【請求項37】
前記変換係数候補のセットの符号シグナリングビットの前記シーケンスは、前記変換係数候補の元の符号が前記変換係数候補の予測された符号と同一であるか否かを示す、請求項21に記載のビデオ復号装置。
【請求項38】
前記符号シグナリングビットのシーケンスは、値が0である第1ビンを含み、
前記予測された符号のセットと、前記符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの前記元の符号を推定するために、前記1つ以上のプロセッサは、
前記符号シグナリングビットのシーケンスにおける前記第1ビンに対応する第1群の変換係数候補の前記予測された符号を、前記第1群の変換係数候補の前記元の符号として用いるように更に構成される、請求項37に記載のビデオ復号装置。
【請求項39】
前記符号シグナリングビットのシーケンスは、値が1である第2ビンと、第2群の変換係数候補の前記予測された符号の対応する正確さを通知するための追加のビンのセットとを更に含み、
前記予測された符号のセットと、前記符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの前記元の符号を推定するために、前記1つ以上のプロセッサは、
前記予測された符号を前記第2群の変換係数候補の前記元の符号として用いる前に、前記追加のビンのセットに応じて前記第2群の変換係数候補の前記予測された符号を補正するように更に構成される、請求項38に記載のビデオ復号装置。
【請求項40】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに変換係数の符号予測のためのビデオ復号方法を実行させる命令が記憶されている非一時的コンピュータ可読記憶媒体であって、前記ビデオ復号方法は、
ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成するステップと、
支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて、前記複数の仮説候補から1つの仮説を選択して、前記変換係数候補のセットの予測された符号のセットとするステップと、
前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップと、を含み、
前記ビットストリームは、前記非一時的コンピュータ可読記憶媒体に記憶されている、非一時的コンピュータ可読記憶媒体。
【請求項41】
ビデオ復号方法によって復号可能なビットストリームが記憶されている非一時的コンピュータ可読記憶媒体であって、前記ビデオ復号方法は、
ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成するステップと、
支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて、前記複数の仮説候補から1つの仮説を選択して、前記変換係数候補のセットの予測された符号のセットとするステップと、
前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップと、
前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップと、を更に含む、非一時的コンピュータ可読記憶媒体。
【請求項42】
ビデオブロックの隣接するサンプルを外挿するための外挿方向を決定するビデオ処理方法であって、
プロセッサによって、前記ビデオブロックの隣接するサンプルのテンプレートを選択するステップと、
前記プロセッサによって、勾配フィルタウィンドウを前記テンプレートに適用して、それぞれの前記テンプレートの勾配を計算するステップと、
前記プロセッサによって、前記計算された勾配に基づいて、勾配のヒストグラムを決定するステップと、
前記勾配のヒストグラムに基づいて支配的な勾配方向を選択するステップと、
前記支配的な勾配方向に基づいて前記外挿方向を決定するステップと、を含む、ビデオ処理方法。
【請求項43】
前記勾配のヒストグラムの各エントリは、所定の角度方向における勾配の累積強度に対応し、
前記勾配のヒストグラムに基づいて前記支配的な勾配方向を選択するステップは、
最大の前記累積強度に対応する角度方向を前記支配的な勾配方向として選択するステップを更に含む、請求項42に記載のビデオ処理方法。
【請求項44】
前記計算された勾配に基づいて、前記勾配のヒストグラムを決定するステップは、
各テンプレートの前記勾配の角度及び強度を計算するステップと、
前記勾配の前記角度を前記勾配のヒストグラムにおける所定の角度方向の1つに変換するステップと、
前記勾配の前記強度を、前記勾配の角度から変換された前記所定の角度方向に対応する累積強度に加算するステップと、を更に含む、請求項43に記載のビデオ処理方法。
【請求項45】
前記勾配フィルタウィンドウは、前記テンプレートの中間行及び中間列に位置する参照サンプルに適用される、請求項42に記載のビデオ処理方法。
【請求項46】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超えると決定するステップと、
前記ビデオブロックの前記隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含む、請求項42に記載のビデオ処理方法。
【請求項47】
前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超えると決定するステップと、
前記ビデオブロックの前記隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含む、請求項42に記載のビデオ処理方法。
【請求項48】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超え、かつ、前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超えると決定するステップと、
前記ビデオブロックの隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含む、請求項42に記載のビデオ処理方法。
【請求項49】
前記ビデオブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向の直交方向を決定するステップを更に含む、請求項42に記載のビデオ処理方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本願は、2021年9月15日に提出された米国仮出願第63/244,317号、及び2021年9月30日に提出された米国仮出願第63/250,797号に基づくものであり、それらの優先権を主張する。本願は、2022年8月16日に提出されたPCT出願番号PCT/US22/40442に基づくものであり、その優先権を主張し、更に2021年8月17日に提出された米国仮出願第63/233,940号の優先権を主張する。上記全ての出願の内容は、それらの全体が参照により本明細書に組み込まれる。
【技術分野】
【0002】
本願は、ビデオ符号化及び圧縮に関する。より詳細には、本願は、ブロックベースのビデオ符号化における符号予測のためのビデオ処理システム及び方法に関する。
【背景技術】
【0003】
デジタルビデオは、デジタルテレビ、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、テレビ会議デバイス、ビデオストリーミングデバイスなどの様々な電子デバイスによりサポートされている。電子デバイスは、通信ネットワークを介してデジタルビデオデータを送受信するか又は通信し、及び/又はデジタルビデオデータを記憶デバイスに記憶する。通信ネットワークの帯域幅容量及び記憶デバイスのメモリリソースが限られているため、ビデオ符号化は、ビデオデータを通信又は記憶する前にビデオデータを1つ以上のビデオ符号化標準に従って圧縮するために使用されてもよい。例えば、ビデオ符号化標準は、多用途ビデオ符号化(VVC)、共同探索テストモデル(JEM)、高効率ビデオ符号化(HEVC/H.265)、先進ビデオ符号化(AVC/H.264)、動画専門家委員会(MPEG)符号化などを含む。ビデオ符号化は、一般に、ビデオデータに固有の冗長性を利用する予測方法(例えば、インター予測、イントラ予測など)を利用する。ビデオ符号化は、ビデオ品質の劣化を回避又は最小限に抑えながら、ビデオデータを、より低いビットレートを使用する形式に圧縮することを目的とする。
【発明の概要】
【0004】
本開示の実装形態は、ビデオデコーダ側での変換係数の符号予測のためのビデオ復号方法を提供する。前記ビデオ復号方法は、1つ以上のプロセッサによって、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含んでもよい。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを更に含んでもよい。
【0005】
本開示の実装形態は、ビデオデコーダ側での変換係数の符号予測のためのビデオ復号装置も提供する。前記ビデオ復号装置は、複数のビデオフレームを含むビデオを記憶するように構成されたメモリと、前記メモリに結合された1つ以上のプロセッサとを含んでもよい。前記1つ以上のプロセッサは、前記変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するように構成されてもよい。前記逆量子化された変換係数は、前記ビデオからのビデオフレームの変換ブロックに関連する。前記1つ以上のプロセッサは、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するように更に構成されてもよい。前記1つ以上のプロセッサは、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するように更に構成されてもよい。前記1つ以上のプロセッサは、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するように更に構成されてもよい。前記1つ以上のプロセッサは、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するように更に構成されてもよい。
【0006】
本開示の実装形態は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサにビデオデコーダ側での変換係数の符号予測のためのビデオ復号方法を実行させる命令が記憶されている非一時的コンピュータ可読記憶媒体も提供する。前記ビデオ復号方法は、前記符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含んでもよい。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ復号方法は、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを更に含んでもよい。前記ビデオ復号方法は、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを更に含んでもよい。前記ビデオ復号方法は、前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを更に含んでもよい。前記ビデオ復号方法は、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを更に含んでもよい。前記ビットストリームは、前記非一時的コンピュータ可読記憶媒体に記録されている。
【0007】
本開示の実装形態は、ビデオ方法によって復号可能なビットストリームが記憶されている非一時的コンピュータ可読記憶媒体も提供する。前記ビデオ方法は、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含む。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ方法は、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを含む。前記ビデオ方法は、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを含む。前記ビデオ方法は、前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを含む。前記ビデオ方法は、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを含む。
【0008】
前述の一般的な説明と以下の詳細な説明は、いずれも単なる例であり、本開示を限定するものではないことを理解されたい。
【図面の簡単な説明】
【0009】
本明細書に組み込まれ、その一部を構成する添付図面は、本開示と一致する実施例を示しており、説明とともに、本開示の原理を説明する役割を果たす。
【0010】
【
図1】本開示のいくつかの実装形態に係る、ビデオブロックを符号化及び復号する例示的なシステムを示すブロック図である。
【
図2】本開示のいくつかの実装形態に係る、例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示のいくつかの実装形態に係る、例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4B】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4C】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4D】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4E】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図5】いくつかの実施例に係る、係数群内の変換係数の左上の走査順序を示すグラフィック表現である。
【
図6】いくつかの実施例に係る、低周波非分離変換(LFNST)プロセスを示すグラフィック表現である。
【
図7】いくつかの実施例に係る、順LFNSTに入力される一次変換係数の左上の領域を示すグラフィック表現である。
【
図8】いくつかの実施例に係る、イントラテンプレートマッチングの探索領域を示すグラフィック表現である。
【
図9】いくつかの実施例に係る、符号予測の例示的なプロセスを示すグラフィック表現である。
【
図10】いくつかの実施例に係る、符号予測のためのコスト関数の計算を示すグラフィック表現である。
【
図11】いくつかの実施例に係る、依存スカラー量子化に用いられる2つの例示的なスカラー量子化器を示すグラフィック表現である。
【
図12A】いくつかの実施例に係る、依存スカラー量子化に用いられる4つの状態を有する状態マシンを用いる状態遷移を示すグラフィック表現である。
【
図12B】いくつかの実施例に係る、
図12Aの状態遷移に応じた例示的な量子化器の選択を示す表である。
【
図13】本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測プロセスを示すブロック図である。
【
図14】本開示のいくつかの実装形態に係る、テンプレートの線形結合に基づく例示的な仮説生成を示すグラフィック表現である。
【
図15A】いくつかの実施例に係る、既存の符号予測スキームの例示的な実装形態を示すグラフィック表現である。
【
図15B】本開示のいくつかの実装形態に係る、ベクトルベースの符号予測スキームの例示的な実装形態を示すグラフィック表現である。
【
図16A】本開示のいくつかの実装形態に係る、左対角方向に沿った左対角コスト関数の例示的な計算を示すグラフィック表現である。
【
図16B】本開示のいくつかの実装形態に係る、右対角方向に沿った右対角コスト関数の例示的な計算を示すグラフィック表現である。
【
図17】本開示のいくつかの実装形態に係る、現在のブロックの隣接する再構成されたサンプル内の支配的な勾配方向を捉える方法のフローチャートである。
【
図18A】本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的なテンプレートサンプルと勾配フィルタウィンドウを示すグラフィック表現である。
【
図18B】本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的な勾配のヒストグラム(HoG)を示すグラフィック表現である。
【
図19】本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測方法のフローチャートである。
【
図20】本開示のいくつかの実装形態に係る、ビデオエンコーダによって実行される変換係数の符号予測のための例示的なビデオ符号化方法のフローチャートである。
【
図21】本開示のいくつかの実装形態に係る、ビデオデコーダによって実行される変換係数の符号予測のための例示的なビデオ復号方法のフローチャートである。
【
図22】本開示のいくつかの実装形態に係る、ユーザインタフェースに結合されるコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【0011】
具体的な実装形態を詳細に参照し、それらの実施例を添付図面に示す。以下の詳細な説明では、本明細書に示される主題の理解を助けるために、多数の非限定的で具体的な詳細が示されている。しかしながら、特許請求の範囲を逸脱しない範囲で、様々な代替実施形態を使用することができ、それらの具体的な詳細なしで主題を実施することができることが当業者には明らかであろう。例えば、本明細書に示される主題は、デジタルビデオ機能を有する複数のタイプの電子デバイスに実装可能であることが当業者には明らかであろう。
【0012】
本開示の明細書及び特許請求の範囲と、添付図面とで使用される「第1」、「第2」などの用語は、対象を区別するために使用されるものであり、任意の具体的な順番又は順序を説明するために使用されるものではないことを理解されたい。このように使用されるデータは、適切な条件で置き換えが可能であり、これにより、添付図面に示されるか又は本開示に説明された以外の順番で、本明細書に説明される本開示の実施形態を実施することができることを理解されたい。
【0013】
図1は、本開示のいくつかの実装形態に係る、ビデオブロックの符号化及び復号を並列に行う例示的なシステム10を示すブロック図である。
図1に示すように、システム10は、宛先デバイス14によって後で復号されるビデオデータを生成して符号化するソースデバイス12を含む。ソースデバイス12及び宛先デバイス14は、デスクトップ又はラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む多種多様な電子デバイスのいずれかを含んでもよい。いくつかの実装形態では、ソースデバイス12及び宛先デバイス14は、無線通信機能を備える。
【0014】
いくつかの実装形態では、宛先デバイス14は、リンク16を介して、復号される符号化されたビデオデータを受信してもよい。リンク16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に転送することが可能な任意のタイプの通信媒体又はデバイスを含んでもよい。一実施例では、リンク16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムに直接送信できるようにする通信媒体を含んでもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信標準に従って変調され、宛先デバイス14に送信されてもよい。通信媒体は、無線周波数(RF)スペクトル又は1つ以上の物理伝送線などの、任意の無線又は有線通信媒体を含んでもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどのパケットベースのネットワークの一部を構成してもよい。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含んでもよい。
【0015】
いくつかの他の実装形態では、符号化されたビデオデータは、出力インタフェース22から記憶デバイス32に送信されてもよい。その後、記憶デバイス32内の符号化されたビデオデータは、入力インタフェース28を介して宛先デバイス14によってアクセスされてもよい。記憶デバイス32は、ハードドライブ、ブルーレイディスク、デジタルバーサタイルディスク(DVD)、コンパクトディスク読み取り専用メモリ(CD-ROM)、フラッシュメモリ、揮発性又は不揮発性メモリ、又は符号化されたビデオデータを記憶する任意の他の適切なデジタル記憶媒体などの、分散型又はローカルにアクセスされる様々なデータ記憶媒体のいずれかを含んでもよい。更なる実施例では、記憶デバイス32は、ソースデバイス12によって生成された符号化されたビデオデータを記憶し得るファイルサーバ又は別の中間記憶デバイスに対応してもよい。宛先デバイス14は、ストリーミング又はダウンロードを介して、記憶デバイス32からの記憶されたビデオデータにアクセスしてもよい。ファイルサーバは、符号化されたビデオデータを記憶するとともに、符号化されたビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、又はローカルディスクドライブを含む。宛先デバイス14は、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した無線チャネル(例えば、Wi-Fi(Wireless Fidelity)接続)、有線接続(例えば、DSL(Digital Subscriber Line、デジタル加入者線)、ケーブルモデムなど)、又はそれらの任意の組み合わせを含む任意の標準データ接続を通じて、符号化されたビデオデータにアクセスしてもよい。記憶デバイス32からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又はそれらの組み合わせであってもよい。
【0016】
図1に示すように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、及び出力インタフェース22を含む。ビデオソース18は、ビデオキャプチャデバイス、例えば、ビデオカメラ、前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するビデオフィードインタフェース、及び/又はソースビデオとしてコンピュータグラフィックデータを生成するコンピュータグラフィックシステムなどのソース、又は、それらのソースの組み合わせを含んでもよい。一実施例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソースデバイス12及び宛先デバイス14は、カメラフォン又はビデオフォンを含んでもよい。しかしながら、本開示に記載された実装形態は、一般にビデオ符号化に適用可能であってもよく、無線及び/又は有線アプリケーションに適用可能であってもよい。
【0017】
キャプチャされたビデオ、予めキャプチャされたビデオ、又はコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化されてもよい。符号化されたビデオデータは、ソースデバイス12の出力インタフェース22を介して、宛先デバイス14に直接送信されてもよい。符号化されたビデオデータはまた(又はその代わりに)、宛先デバイス14又は他のデバイスによって後でアクセスされて、復号及び/又は再生されるように、記憶デバイス32に記憶されてもよい。出力インタフェース22は、モデム及び/又は送信機を更に含んでもよい。
【0018】
宛先デバイス14は、入力インタフェース28、ビデオデコーダ30、及びディスプレイデバイス34を含む。入力インタフェース28は、受信機及び/又はモデムを含み、リンク16を介して符号化されたビデオデータを受信してもよい。リンク16を介して通信されるか又は記憶デバイス32に提供される符号化されたビデオデータは、ビデオデコーダ30によるビデオデータの復号に用いられる、ビデオエンコーダ20が生成した様々な構文要素を含んでもよい。そのような構文要素は、通信媒体に送信されるか、記憶媒体に記憶されるか、又はファイルサーバに記憶される符号化されたビデオデータ内に含まれてもよい。
【0019】
いくつかの実装形態では、宛先デバイス14は、一体化されたディスプレイデバイス、及び宛先デバイス14と通信するように構成された外部ディスプレイデバイスであり得るディスプレイデバイス34を含んでもよい。ディスプレイデバイス34は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのいずれかを含んでもよい。
【0020】
ビデオエンコーダ20及びビデオデコーダ30は、例えば、VVC、HEVC、MPEG-4、Part 10、AVCなどの独自又は業界標準に従って動作してもよく、それらの標準の拡張に従って動作してもよい。本開示は、特定のビデオ符号化/復号標準に限定されず、他のビデオ符号化/復号標準にも適用可能であることを理解されたい。一般に、ソースデバイス12のビデオエンコーダ20は、これらの現在又は将来のいずれかの標準に従ってビデオデータを符号化するように構成されてもよいことが考えられる。同様に、宛先デバイス14のビデオデコーダ30は、これらの現在又は将来のいずれかの標準に従ってビデオデータを復号するように構成されてもよいことも一般に考えられる。
【0021】
ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせなどの様々な適切なエンコーダ及び/又はデコーダ回路のいずれかとして実装されてもよい。電子デバイスは、ソフトウェアで部分的に実装される場合には、ソフトウェアの命令を適切な非一時的コンピュータ可読媒体に記憶し、1つ以上のプロセッサを使用してハードウェアで命令を実行して、本開示で開示されるビデオ符号化/復号動作を実行してもよい。ビデオエンコーダ20及びビデオデコーダ30のそれぞれは、1つ以上のエンコーダ又はデコーダに含まれてもよく、そのいずれも、組み合わせたエンコーダ/デコーダ(CODEC)の一部としてそれぞれのデバイス内に統合されてもよい。
【0022】
図2は、本願で説明されるいくつかの実装形態に係る、例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化及びインター予測符号化を実行することができる。イントラ予測符号化は、空間予測に依存して、所与のビデオフレーム又はピクチャ内のビデオデータの空間冗長性を削減又は除去する。インター予測符号化は、時間予測に依存して、ビデオシーケンスの隣接するビデオフレーム又はピクチャ内のビデオデータの時間冗長性を削減又は除去する。なお、「フレーム」という用語は、ビデオ符号化の分野では、「画像」又は「ピクチャ」という用語の同義語として使用されてもよい。
【0023】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号ピクチャバッファ(DPB)64、加算器50、変換処理ユニット52、量子化ユニット54、及びエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、分割ユニット45、イントラ予測処理ユニット46、及びイントラブロックコピー(BC)ユニット48を更に含む。いくつかの実装形態では、ビデオエンコーダ20は、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構成のための加算器62も含む。デブロッキングフィルタなどのインループフィルタ63は、加算器62とDPB64との間に配置されて、ブロック境界をフィルタリングして、再構成されたビデオデータからブロック歪みを除去することができる。加算器62の出力をフィルタリングするために、デブロッキングフィルタに加えて、SAOフィルタ及び/又は適応インループフィルタ(ALF)などの別のインループフィルタが使用されてもよい。いくつかの実施例では、インループフィルタは、省略されてもよく、復号されたビデオブロックは、加算器62によってDPB64に直接提供されてもよい。ビデオエンコーダ20は、固定又はプログラマブルハードウェアユニットの形態をとってもよく、図示された固定又はプログラマブルハードウェアユニットの1つ以上に分割されてもよい。
【0024】
ビデオデータメモリ40は、ビデオエンコーダ20のコンポーネントによって符号化されるビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは、例えば、
図1に示すように、ビデオソース18から取得されてもよい。DPB64は、ビデオエンコーダ20による(例えば、イントラ予測符号化モード又はインター予測符号化モードでの)ビデオデータの符号化に用いられる参照ビデオデータ(例えば、参照フレーム又はピクチャ)を記憶するバッファである。ビデオデータメモリ40及びDPB64は、様々なメモリデバイスのいずれかによって形成されてもよい。様々な実施例では、ビデオデータメモリ40は、ビデオエンコーダ20の他のコンポーネントとオンチップであってもよく、それらのコンポーネントに対してオフチップであってもよい。
【0025】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。この分割には、ビデオデータに関連する4分木(QT)構造などの所定の分割構造に従って、ビデオフレームをスライス、タイル(例えば、ビデオブロックセット)、又は他のより大きな符号化ユニット(CU)に分割することも含まれ得る。ビデオフレームは、サンプル値を有するサンプルの2次元配列又は行列であるか、又はそれらとみなしてもよい。配列内のサンプルは、ピクセル又はペルと呼ばれてもよい。配列又はピクチャの水平及び垂直方向(又は軸)のサンプルの数は、ビデオフレームのサイズ及び/又は解像度を定義する。ビデオフレームは、例えば、QT分割を用いて複数のビデオブロックに分割されてもよい。ビデオブロックは、ビデオフレームよりも次元が小さいが、同様に、サンプル値を有するサンプルの2次元配列又は行列であるか、又はそれらとみなしてもよい。ビデオブロックの水平及び垂直方向(又は軸)のサンプルの数は、ビデオブロックのサイズを定義する。ビデオブロックは、例えば、QT分割、2分木(BT)分割、3分木(TT)分割、又はこれらの任意の組み合わせを反復的に用いることによって、1つ以上のブロックパーティション又は(再びブロックを形成してもよい)サブブロックパーティションに更に分割されてもよい。なお、本明細書で使用される「ブロック」又は「ビデオブロック」という用語は、フレーム又はピクチャの一部、特に矩形(正方形又は非正方形)部分であってもよい。例えば、HEVC及びVVCを参照すると、ブロック又はビデオブロックは、符号化ツリーユニット(CTU)、CU、予測ユニット(PU)、又は変換ユニット(TU)であってもよく、それに対応してもよく、及び/又は、符号化ツリーブロック(CTB)、符号化ブロック(CB)、予測ブロック(PB)、又は変換ブロック(TB)などの対応するブロックであってもよく、それに対応してもよい。その代わりに又は更に、ブロック又はビデオブロックは、CTB、CB、PB、TBなどのサブブロックであってもよく、それに対応してもよい。
【0026】
予測処理ユニット41は、エラー結果(例えば、符号化率及び歪みのレベル)に基づいて、現在のビデオブロックに対して、複数のイントラ予測符号化モードのうちの1つ、又は、複数のインター予測符号化モードのうちの1つなどの、複数の可能な予測符号化モードのうちの1つを選択してもよい。予測処理ユニット41は、得られたイントラ又はインター予測符号化ブロック(例えば、予測ブロック)を、加算器50に提供して残差ブロックを生成し、加算器62に提供して符号化ブロックを再構成して、後に参照フレームの一部として使用することができる。また、予測処理ユニット41は、動きベクトル、イントラモードインジケータ、分割情報、及び他のそのような構文情報などの構文要素をエントロピー符号化ユニット56に提供する。
【0027】
現在のビデオブロックに対して適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、符号化される現在のブロックと同じフレーム内の1つ以上の隣接するブロックに対して現在のビデオブロックのイントラ予測符号化を実行して、空間予測を提供する。予測処理ユニット41内の動き推定ユニット42及び動き補償ユニット44は、1つ以上の参照フレーム内の1つ以上の予測ブロックに対して現在のビデオブロックのインター予測符号化を実行して、時間予測を提供する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックに対して適切な符号化モードを選択するために、複数の符号化パスを実行してもよい。
【0028】
いくつかの実装形態では、動き推定ユニット42は、ビデオフレームのシーケンス内の所定のパターンに従って、参照フレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの変位を示す動きベクトルを生成することにより、現在のビデオフレームに対してインター予測モードを決定する。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスであってもよい。動きベクトルは、例えば、参照フレーム内の予測ブロックに対する現在のビデオフレーム又はピクチャ内のビデオブロックの変位を示してもよい。所定のパターンは、シーケンス内のビデオフレームをPフレーム又はBフレームとして指定してもよい。イントラBCユニット48は、動き推定ユニット42によるインター予測のための動きベクトルの決定と同様の方法で、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定してもよく、動き推定ユニット42を利用してブロックベクトルを決定してもよい。
【0029】
ビデオブロックの予測ブロックは、差分絶対値和(SAD)又は差分二乗和(SSD)、又は他の差分メトリックにより決定され得るピクセル差分に関して、符号化されるビデオブロックと密接に一致するとみなされる参照フレームのブロック又は参照ブロックであってもよく、それに対応してもよい。いくつかの実装形態では、ビデオエンコーダ20は、DPB64に記憶された参照フレームのサブ整数ピクセル位置の値を計算してもよい。例えば、ビデオエンコーダ20は、参照フレームの1/4ピクセル位置、1/8ピクセル位置、他の分数ピクセル位置の値を補間してもよい。したがって、動き推定ユニット42は、全ピクセル位置及び分数ピクセル位置に対して動き探索を行い、分数ピクセル精度を有する動きベクトルを出力してもよい。
【0030】
動き推定ユニット42は、インター予測符号化フレームにおけるビデオブロックの位置と、それぞれがDPB64に記憶された1つ以上の参照フレームを識別する第1参照フレームリスト(リスト0)又は第2参照フレームリスト(リスト1)から選択された参照フレームの予測ブロックの位置とを比較することにより、ビデオブロックの動きベクトルを計算する。動き推定ユニット42は、計算された動きベクトルを動き補償ユニット44に送り、その後、エントロピー符号化ユニット56に送る。
【0031】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて、予測ブロックを取得するか又は生成することを含んでもよい。現在のビデオブロックの動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが1つの参照フレームリストにおいてどの予測ブロックを指しているかを特定し、DPB64から予測ブロックを取得して、当該予測ブロックを加算器50に転送することができる。そして、加算器50は、符号化されている現在のビデオブロックのピクセル値から、動き補償ユニット44によって提供される予測ブロックのピクセル値を減算することにより、ピクセル差分値の残差ブロックを形成する。残差ブロックを形成するピクセル差分値は、輝度差分成分又は彩度差分成分、又はその両方を含んでもよい。動き補償ユニット44は、ビデオフレームのビデオブロックを復号する際にビデオデコーダ30によって使用される、ビデオフレームのビデオブロックに関連する構文要素を生成することもできる。構文要素は、例えば、予測ブロックを識別するために使用される動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、又は本明細書に記載される任意の他の構文情報を含んでもよい。なお、動き推定ユニット42と動き補償ユニット44は、一体に統合されてもよいが、概念的な目的のために
図2に別個に示されている。
【0032】
いくつかの実装形態では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44に関連して上述した方法と同様の方法でベクトルを生成し、予測ブロックを取得することができるが、予測ブロックは、符号化されている現在のブロックと同じフレーム内にあり、ベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現在のブロックを符号化するために用いられるイントラ予測モードを決定してもよい。いくつかの実施例では、イントラBCユニット48は、例えば、別個の符号化パス中に、様々なイントラ予測モードを用いて現在のブロックを符号化し、レート歪み解析によりそれらの性能をテストすることができる。次に、イントラBCユニット48は、テストされた複数のイントラ予測モードの中から、適切なイントラ予測モードを選択して使用し、対応するイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、様々なテストされたイントラ予測モードに対して、レート歪み解析を用いてレート歪み値を計算し、テストされたモードの中から、レート歪み特性が最適なイントラ予測モードを適切なイントラ予測モードとして選択して使用することができる。レート歪み解析は、一般に、符号化されたブロックと、この符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又はエラー)量、及び、この符号化されたブロックを生成するために使用されたビットレート(即ち、ビット数)を決定する。イントラBCユニット48は、様々な符号化されたブロックの歪み及びレートから比率を計算して、どのイントラ予測モードがそのブロックに対して最適なレート歪み値を示すかを判定することができる。
【0033】
他の実施例では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44を全体的又は部分的に使用して、本明細書で説明される実装形態に従ってイントラBC予測のための機能を実行することができる。いずれの場合でも、イントラブロックコピーの場合、予測ブロックは、SAD、SSD、又は他の差分メトリックによって決定され得るピクセル差分に関して、符号化されるブロックと密接に一致するとみなされるブロックであってもよく、予測ブロックの識別は、サブ整数ピクセル位置の値の計算を含んでもよい。
【0034】
予測ブロックがイントラ予測による同じフレームからのものであるか、インター予測による異なるフレームからのものであるかにかかわらず、ビデオエンコーダ20は、符号化されている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ブロックを形成することができる。残差ブロックを形成するピクセル差分値は、輝度成分差分と彩度成分差分の両方を含んでもよい。
【0035】
イントラ予測処理ユニット46は、上述したように、動き推定ユニット42及び動き補償ユニット44によって実行されるインター予測、又はイントラBCユニット48によって実行されるイントラブロックコピー予測に代えて、現在のビデオブロックをイントラ予測してもよい。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために用いられるイントラ予測モードを決定してもよい。例えば、イントラ予測処理ユニット46は、例えば別個のパスの符号化中に、様々なイントラ予測モードを用いて現在のブロックを符号化することができ、イントラ予測処理ユニット46(又は、いくつかの実施例では、モード選択ユニット)は、テストされたイントラ予測モードから、適切なイントラ予測モードを選択して使用することができる。イントラ予測処理ユニット46は、ブロックに対して選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してもよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化してもよい。
【0036】
予測処理ユニット41がインター予測又はイントラ予測を介して現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することによって残差ブロックを形成する。残差ブロック内の残差ビデオデータは、1つ以上のTUに含まれてもよく、変換処理ユニット52に提供される。変換処理ユニット52は、離散コサイン変換(DCT)又は概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。
【0037】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ってもよい。量子化ユニット54は、変換係数を量子化してビットレートを更に低減する。量子化プロセスにより、係数の一部又は全部に関連するビット深度を低減する場合もある。量子化の程度は、量子化パラメータを調整することによって変更することができる。いくつかの実施例では、量子化ユニット54は、量子化された変換係数を含む行列の走査を実行してもよい。その代わりに、エントロピー符号化ユニット56は、走査を実行してもよい。
【0038】
量子化に続いて、エントロピー符号化ユニット56は、エントロピー符号化技術を使用して、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、又は別のエントロピー符号化方法若しくは技術を使用して、量子化された変換係数をビデオビットストリームに符号化する。次に、符号化されたビットストリームは、
図1に示すように、ビデオデコーダ30に送信されてもよく、後でビデオデコーダ30に送信されるか又はビデオデコーダ30によって取得されるために、
図1に示すように記憶デバイス32にアーカイブされてもよい。エントロピー符号化ユニット56はまた、エントロピー符号化技術を使用して、符号化されている現在のビデオフレームのための動きベクトル及び他の構文要素を符号化してもよい。
【0039】
逆量子化ユニット58及び逆変換処理ユニット60は、それぞれ逆量子化及び逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するためのピクセル領域の残差ブロックを再構成する。再構成された残差ブロックを生成してもよい。上述したように、動き補償ユニット44は、DPB64に記憶されたフレームの1つ以上の参照ブロックから動き補償予測ブロックを生成してもよい。また、動き補償ユニット44は、予測ブロックに対して1つ以上の補間フィルタを適用して、動き推定に使用されるサブ整数ピクセル値を計算してもよい。
【0040】
加算器62は、再構成された残差ブロックを、動き補償ユニット44により生成された動き補償予測ブロックに加算して、DPB64に記憶するための参照ブロックを生成する。次に、参照ブロックは、イントラBCユニット48、動き推定ユニット42、及び動き補償ユニット44によって、後続のビデオフレーム内の別のビデオブロックをインター予測するための予測ブロックとして使用されてもよい。
【0041】
図3は、本願のいくつかの実装形態に係る、例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、及びDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84、及びイントラBCユニット85を更に含む。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20に関して上述した符号化プロセスとほぼ逆の復号プロセスを実行することができる。例えば、動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルに基づいて予測データを生成することができるが、イントラ予測ユニット84は、エントロピー復号ユニット80から受信されたイントラ予測モードインジケータに基づいて予測データを生成することができる。
【0042】
いくつかの実施例では、ビデオデコーダ30のユニットは、本願の実装形態を実行する任務を負うことがある。また、いくつかの実施例では、本開示の実装形態は、ビデオデコーダ30の1つ以上のユニットに分割されてもよい。例えば、イントラBCユニット85は、単独で、又は動き補償ユニット82、イントラ予測ユニット84、及びエントロピー復号ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実装形態を実行してもよい。いくつかの実施例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他のコンポーネントによって実行されてもよい。
【0043】
ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントによって復号される、符号化されたビデオビットストリームなどのビデオデータを記憶してもよい。ビデオデータメモリ79に記憶されたビデオデータは、例えば、記憶デバイス32から取得されてもよく、カメラなどのローカルビデオソースからビデオデータの有線又は無線のネットワーク通信を介して取得されてもよく、物理的なデータ記憶媒体(例えば、フラッシュドライブ又はハードディスク)にアクセスして取得されてもよい。ビデオデータメモリ79は、符号化されたビデオビットストリームから符号化されたビデオデータを記憶する符号化ピクチャバッファ(CPB)を含んでもよい。ビデオデコーダ30のDPB92は、ビデオデコーダ30による(例えば、イントラ又はインター予測符号化モードでの)ビデオデータの復号に用いられる参照ビデオデータを記憶する。ビデオデータメモリ79及びDPB92は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)又は他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成されてもよい。説明の便宜上、ビデオデータメモリ79とDPB92は、
図3では、ビデオデコーダ30の2つの別個のコンポーネントとして示されている。しかしながら、ビデオデータメモリ79とDPB92が同じメモリデバイス又は別個のメモリデバイスによって提供され得ることは、当業者には明らかであろう。いくつかの実施例では、ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントとオンチップであってもよく、それらのコンポーネントに対してオフチップであってもよい。
【0044】
ビデオデコーダ30は、復号プロセス中に、符号化されたビデオフレームのビデオブロック及び関連する構文要素を表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベル及び/又はビデオブロックレベルで構文要素を受信してもよい。ビデオデコーダ30のエントロピー復号ユニット80は、エントロピー復号技術を使用して、ビットストリームを復号して、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他の構文要素を取得してもよい。次に、エントロピー復号ユニット80は、動きベクトル又はイントラ予測モードインジケータ、及び他の構文要素を予測処理ユニット81に転送する。
【0045】
ビデオフレームがイントラ予測符号化された(例えば、I)フレームとして、又は他のタイプのフレームのイントラ符号化された予測ブロックに対して、符号化される場合、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モード及び現在のフレームの前に復号されたブロックからの参照データに基づいて、現在のビデオフレームのビデオブロックの予測データを生成してもよい。
【0046】
ビデオフレームがインター予測符号化された(例えば、B又はP)フレームとして符号化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトル及び他の構文要素に基づいて、現在のビデオフレームのビデオブロックの1つ以上の予測ブロックを生成する。各予測ブロックは、1つの参照フレームリスト内の参照フレームから生成されてもよい。ビデオデコーダ30は、DPB92に記憶された参照フレームに基づいて、デフォルトの構成技術を用いて参照フレームリスト、例えば、リスト0及びリスト1を構成してもよい。
【0047】
いくつかの実施例では、ビデオブロックが本明細書で説明されるイントラBCモードに従って符号化される場合、予測処理ユニット81のイントラBCユニット85は、エントロピー復号ユニット80から受信されたブロックベクトル及び他の構文要素に基づいて、現在のビデオブロックの予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって処理された現在のビデオブロックと同じピクチャの再構成された領域内にあってもよい。
【0048】
動き補償ユニット82及び/又はイントラBCユニット85は、動きベクトル及び他の構文要素を解析することにより、現在のビデオフレームのビデオブロックの予測情報を決定し、次に、この予測情報を使用して復号されている現在のビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、受信された構文要素の一部を使用して、ビデオフレームのビデオブロックを符号化する際に使用される予測モード(例えば、イントラ又はインター予測)、インター予測フレームタイプ(例えば、B又はP)、フレームの1つ以上の参照フレームリストの構成情報、フレームのインター予測符号化されたビデオブロック毎の動きベクトル、フレームのインター予測符号化されたビデオブロック毎のインター予測状態、及び現在のビデオフレームのビデオブロックを復号するための他の情報を決定する。
【0049】
同様に、イントラBCユニット85は、受信された構文要素の一部、例えばフラグを使用して、現在のビデオブロックがイントラBCモードを使用して予測されたこと、フレームのどのビデオブロックが再構成された領域内であってDPB92に記憶されるべきかに関する構成情報、フレームのイントラBC予測ビデオブロック毎のブロックベクトル、フレームのイントラBC予測ビデオブロック毎のイントラBC予測状態、及び現在のビデオフレームのビデオブロックを復号するための他の情報を決定する。
【0050】
また、動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して補間を実行し、参照ブロックのサブ整数ピクセルの補間値を計算してもよい。この場合、動き補償ユニット82は、受信された構文要素からビデオエンコーダ20によって使用される補間フィルタを決定し、この補間フィルタを使用して予測ブロックを生成してもよい。
【0051】
逆量子化ユニット86は、ビデオフレーム内の各ビデオブロックに対してビデオエンコーダ20によって計算された同じ量子化パラメータを使用して、ビットストリームに提供されかつエントロピー復号ユニット80によって復号された量子化された変換係数を逆量子化し、量子化の程度を決定する。逆変換処理ユニット88は、ピクセル領域内の残差ブロックを再構成するために、逆変換、例えば、逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用する。
【0052】
動き補償ユニット82又はイントラBCユニット85がベクトル及び他の構文要素に基づいて現在のビデオブロックの予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82及びイントラBCユニット85により生成された対応する予測ブロックとを加算することにより、現在のビデオブロックの復号されたビデオブロックを再構成する。復号されたビデオブロックは、現在のビデオブロックの再構成されたブロックと呼ばれてもよい。デブロッキングフィルタ、SAOフィルタ、及び/又はALFなどのインループフィルタ91は、加算器90とDPB92との間に配置されて、復号されたビデオブロックを更に処理してもよい。いくつかの実施例では、インループフィルタ91は、省略されてもよく、復号されたビデオブロックは、加算器90によってDPB92に直接提供されてもよい。次に、所与のフレーム内の復号されたビデオブロックは、次のビデオブロックの後続の動き補償に使用される参照フレームを記憶するDPB92に記憶される。また、DPB92、又はDPB92とは別個のメモリデバイスは、復号されたビデオを、
図1のディスプレイデバイス34などのディスプレイデバイスに後で表示するために記憶してもよい。
【0053】
典型的なビデオ符号化プロセス(例えば、ビデオ符号化プロセス及びビデオ復号プロセスを含む)において、ビデオシーケンスは、典型的に、フレーム又はピクチャの順序付けられたセットを含む。各フレームは、SL、SCb及びSCrで示される3つのサンプル配列を含んでもよい。SLは、輝度サンプルの2次元配列である。SCbは、Cb彩度サンプルの2次元配列である。SCrは、Cr彩度サンプルの2次元配列である。他の例では、フレームは、モノクロームであり得るため、輝度サンプルの2次元配列を1つだけ含む。
【0054】
図4Aに示すように、ビデオエンコーダ20(又はより具体的には、分割ユニット45)は、まず、フレームを1セットのCTUに分割することにより、フレームの符号化された表現を生成する。ビデオフレームは、左から右へ、及び上から下へのラスタ走査順序で連続的に配列された整数個のCTUを含んでもよい。各CTUは、最大の論理符号化ユニットであり、CTUの幅及び高さは、ビデオシーケンス内の全てのCTUが128×128、64×64、32×32及び16×16のうちの1つである同じサイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかしながら、本開示におけるCTUは、必ずしも特定のサイズに限定されないことに留意されたい。
図4Bに示すように、各CTUは、輝度サンプルの1つのCTB、彩度サンプルの2つの対応する符号化ツリーブロック、及び符号化ツリーブロックのサンプルを符号化するための構文要素を含んでもよい。構文要素は、ピクセルの符号化されたブロックの異なるタイプのユニットの性質と、インター又はイントラ予測、イントラ予測モード、動きベクトル及び他のパラメータを含む、ビデオデコーダ30でビデオシーケンスを再構成し得る方法とを説明する。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、CTUは、単一の符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するための構文要素とを含んでもよい。符号化ツリーブロックは、サンプルのN×Nのブロックであってもよい。
【0055】
優れた性能を実現するために、ビデオエンコーダ20は、CTUの符号化ツリーブロックに対して、2分木分割、3分木分割、4分木分割、又はそれらの組み合わせなどのツリー分割を再帰的に実行し、CTUをより小さいCUに分割してもよい。
図4Cに示すように、64×64のCTU400は、まず、それぞれが32×32のブロックサイズを有する4つのより小さいCUに分割される。4つのより小さいCUのうち、CU410及びCU420は、それぞれ、16×16のブロックサイズで4つのCUに分割される。2つの16×16のCU430及び440はそれぞれ、8×8のブロックサイズで4つのCUに更に分割される。
図4Dは、
図4Cに示すようなCTU400の分割プロセスの最終結果を示す4分木データ構造を示し、4分木の各リーフノードは、32×32~8×8の範囲のそれぞれのサイズの1つのCUに対応する。
図4Bに示すCTUと同様に、各CUは、輝度サンプルのCBと、同じサイズのフレームの彩度サンプルの2つの対応する符号化ブロックと、符号化ブロックのサンプルを符号化するための構文要素とを含んでもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、CUは、単一の符号化ブロックと、当該符号化ブロックのサンプルを符号化するための構文構造とを含んでもよい。なお、
図4C及び4Dに示す4分木分割は、例示の目的のためのものに過ぎず、1つのCTUは、様々な局所的な特性に適応するように、4分木/3分木/2分木分割に基づいてCUに分割することができる。マルチタイプツリー構造において、1つのCTUは、4分木構造によって分割され、各4分木リーフCUは、2分木構造及び3分木構造によって更に分割することができる。
図4Eに示すように、幅W及び高さHを有する符号化ブロックの複数の可能な分割タイプ、即ち、4分割、垂直2分割、水平2分割、垂直3分割、垂直拡張3分割、水平3分割、及び水平拡張3分割がある。
【0056】
いくつかの実装形態では、ビデオエンコーダ20は、CUの符号化ブロックを1つ以上のM×NのPBに更に分割してもよい。PBは、同じ予測、インター又はイントラ予測が適用されるサンプルの矩形(正方形又は非正方形)ブロックを含んでもよい。CUのPUは、輝度サンプルのPBと、彩度サンプルの2つの対応するPBと、PBを予測するための構文要素とを含んでもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、PUは、単一のPBと、PBを予測するための構文構造とを含んでもよい。ビデオエンコーダ20は、CUの各PUの輝度PB、Cb PB及びCr PBの予測輝度ブロック、Cbブロック及びCrブロックを生成してもよい。
【0057】
ビデオエンコーダ20は、PUの予測ブロックを生成するために、イントラ予測又はインター予測を使用してもよい。ビデオエンコーダ20は、PUの予測ブロックを生成するためにイントラ予測を使用する場合、PUに関連するフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してもよい。ビデオエンコーダ20は、PUの予測ブロックを生成するためにインター予測を使用する場合、PUに関連するフレーム以外の1つ以上のフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してもよい。
【0058】
ビデオエンコーダ20は、CUの1つ以上のPUの予測輝度ブロック、Cbブロック及びCrブロックを生成した後、CUの輝度残差ブロック内の各サンプルがCUの予測輝度ブロックのうちの1つの予測輝度ブロックの輝度サンプルと、CUの元の輝度符号化ブロックの対応するサンプルとの間の差分を示すように、CUの予測輝度ブロックを元の輝度符号化ブロックから減算することにより、CUの輝度残差ブロックを生成してもよい。同様に、ビデオエンコーダ20は、CUのCb残差ブロック内の各サンプルがCUの予測Cbブロックのうちの1つ内のCbサンプルと、CUの元のCb符号化ブロック内の対応するサンプルとの間の差分を示し、CUのCr残差ブロック内の各サンプルがCUの予測Crブロックのうちの1つ内のCrサンプルと、CUの元のCr符号化ブロック内の対応するサンプルとの間の差分を示してもよいように、CUのCb残差ブロック及びCr残差ブロックをそれぞれ生成してもよい。
【0059】
更に、
図4Cに示すように、ビデオエンコーダ20は、CUの輝度、Cb、Cr残差ブロックを1つ以上の輝度、Cb、Cr変換ブロックにそれぞれ分解するために、4分木分割を使用してもよい。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形又は非正方形)ブロックを含んでもよい。CUのTUは、輝度サンプルの変換ブロックと、彩度サンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するための構文要素とを含んでもよい。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロック及びCr変換ブロックに関連してもよい。いくつかの実施例では、TUに関連する輝度変換ブロックは、CUの輝度残差ブロックのサブブロックであってもよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するための構文構造とを含んでもよい。
【0060】
ビデオエンコーダ20は、TUの輝度係数ブロックを生成するために、TUの輝度変換ブロックに1つ以上の変換を適用してもよい。係数ブロックは、変換係数の2次元配列であってもよい。変換係数は、スカラー量であってもよい。ビデオエンコーダ20は、TUのCb係数ブロックを生成するために、TUのCb変換ブロックに1つ以上の変換を適用してもよい。ビデオエンコーダ20は、TUのCr係数ブロックを生成するために、TUのCr変換ブロックに1つ以上の変換を適用してもよい。
【0061】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロック又はCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化してもよい。量子化とは、一般に、変換係数を量子化して、変換係数を表現するためのデータの量をできる限り低減し、さらなる圧縮を提供するプロセスを指す。ビデオエンコーダ20は、係数ブロックを量子化した後、エントロピー符号化技術を適用して、量子化された変換係数を示す構文要素を符号化してもよい。例えば、ビデオエンコーダ20は、量子化された変換係数を示す構文要素に対してCABACを実行してもよい。最後に、ビデオエンコーダ20は、符号化されたフレーム及び関連するデータの表現を形成するビットのシーケンスを含むビットストリームを出力してもよく、当該ビットストリームは、記憶デバイス32に保存されるか、又は宛先デバイス14に送信される。
【0062】
ビデオエンコーダ20により生成されたビットストリームを受信した後、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームから構文要素を取得してもよい。ビデオデコーダ30は、ビットストリームから取得された構文要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構成してもよい。ビデオデータを再構成するプロセスは、一般に、ビデオエンコーダ20により実行される符号化プロセスとは逆である。例えば、ビデオデコーダ30は、現在のCUのTUに関連する係数ブロックに対して逆変換を実行して、現在のCUのTUに関連する残差ブロックを再構成してもよい。ビデオデコーダ30はまた、現在のCUのPUの予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに追加することにより、現在のCUの符号化ブロックを再構成する。フレームの各CUの符号化ブロックを再構成した後、ビデオデコーダ30は、フレームを再構成してもよい。
【0063】
上述したように、ビデオ符号化は、主に、2つのモード、即ち、イントラフレーム予測(又はイントラ予測)とインターフレーム予測(又はインター予測)を使用してビデオ圧縮を実現する。なお、イントラブロックコピー(IBC)は、イントラフレーム予測又は第3モードとみなすことができる。2つのモードの間に、インターフレーム予測は、参照ビデオブロックから現在のビデオブロックを予測するための動きベクトルを使用するため、イントラフレーム予測よりも符号化効率に寄与する。
【0064】
しかしながら、ビデオデータ収集技術が日々進歩するとともに、ビデオデータの詳細を保存するビデオブロックサイズがより微細化されることで、現在のフレームの動きベクトルを表現するために必要なデータの量も実質的に増加する。この課題を解決する1つの方法は、空間領域と時間領域の両方の隣接するCUの群が、予測のためのビデオデータが類似しているだけでなく、これらの隣接するCU間の動きベクトルも類似しているという事実からメリットを得る。したがって、空間的に隣接するCU及び/又は時間的に同一位置に配置するCUの動き情報は、現在のCUの「動きベクトル予測値(MVP)」とも呼ばれる、それらの空間的及び時間的な相関を探索することにより、現在のCUの動き情報(例えば、動きベクトル)の近似として使用することができる。
【0065】
現在のCUの実際の動きベクトルをビデオビットストリームに符号化する代わりに(例えば、
図2に関連して上述したように、動き推定ユニット42により実際の動きベクトルを決定する)、現在のCUの実際の動きベクトルから現在のCUの動きベクトル予測値を減算して、現在のCUの動きベクトル差分値(MVD)を生成する。これにより、フレームの各CUに対して動き推定ユニット42により決定された動きベクトルをビデオビットストリームに符号化する必要がなく、ビデオビットストリームの動き情報を表現するためのデータの量が大幅に減少する。
【0066】
符号化ブロックのインターフレーム予測の間に参照フレーム内の予測ブロックを選択するプロセスと同様に、ビデオエンコーダ20とビデオデコーダ30の両方は、現在のCUの空間的に隣接するCU及び/又は時間的に同一位置に配置するCUに関連する潜在的な候補動きベクトルを使用して現在のCUの動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構成してから、動きベクトル候補リストから1つのメンバーを現在のCUの動きベクトル予測値として選択するために、一連のルールを利用することができる。これにより、動きベクトル候補リスト自体をビデオエンコーダ20からビデオデコーダ30に送信する必要がなく、動きベクトル候補リストから選択された動きベクトル予測値のインデックスは、ビデオエンコーダ20及びビデオデコーダ30が動きベクトル候補リスト内の同じ動きベクトル予測値を使用して現在のCUを符号化及び復号することに十分である。したがって、選択された動きベクトル予測値のインデックスのみをビデオエンコーダ20からビデオデコーダ30に送信する必要がある。
【0067】
ブロックベースのビデオ符号化プロセス(例えば、拡張圧縮モデル(ECM))における変換係数符号化についての簡単な説明は、本明細書で提供される。具体的には、各変換ブロックは、まず、複数の係数群(CG)に分割され、各係数群は、輝度成分の4×4サブブロックと彩度成分の2×2サブブロックの変換係数を含む。変換ブロック内の変換係数の符号化は、係数群単位で行われる。例えば、変換ブロック内の係数群は、第1所定走査順序に基づいて走査され、符号化される。各係数群を符号化するとき、係数群内の変換係数は、各サブブロック内の第2所定走査順序に基づいて走査される。ECMでは、同じ左上の走査順序は、変換ブロック内の係数群と各係数群内の異なる変換係数を走査するために適用される(例えば、第1所定走査順序及び第2所定走査順序は、両方とも左上の走査順序である)。
図5は、いくつかの実施例に係る、係数群内の変換係数の左上の走査順序を示すグラフィック表現である。
図5の0~15の数字は、係数群内の各変換係数の対応する走査順序を示す。
【0068】
ECMにおける変換係数符号化スキームによれば、変換ブロックが非ゼロ変換係数を含むか否かを示すために、変換ブロックごとにフラグが最初にシグナリングされる。変換ブロック内に少なくとも1つの非ゼロ変換係数が存在する場合、左上の走査順序に従って走査された最後の非ゼロ変換係数の位置は、ビデオエンコーダ20からビデオデコーダ30に明示的にシグナリングされる。最後の非ゼロ変換係数の位置がシグナリングされると、最後の係数群(即ち、最後の非ゼロ係数を含む係数群)の前に符号化される全ての係数群に対してフラグが更にシグナリングされる。同様に、フラグの数は、各係数群が非ゼロ変換係数を含むか否かを示す。係数群のフラグが0に等しい(係数群内の全ての変換係数が0であることを示す)場合、その係数群についてはそれ以上の情報を送信する必要はない。それ以外の場合(例えば、係数群のフラグが1に等しい場合)、係数群内の各変換係数の絶対値及び符号は、走査順序に従ってビットストリームでシグナリングされる。しかしながら、既存の設計では、変換係数の符号がバイパス符号化され(例えば、コンテキストモデルが適用されていない)ため、現在の設計では変換符号化の効率が悪い。本開示と一致して、変換符号化の効率を向上させることができるように、変換係数の符号予測を伴う改良されたLFNSTプロセスが以下でより詳細に説明される。
【0069】
図6は、いくつかの実施例に係る、LFNSTプロセスを示すグラフィック表現である。VVCでは、二次変換ツール(例えば、LFNST)が、一次変換後にイントラ符号化されたブロックの変換係数のエネルギーを圧縮するために適用される。
図6に示すように、順LFNST604は、ビデオエンコーダ20における順一次変換603と量子化605との間に適用され、逆LFNST608は、ビデオデコーダ30における逆量子化607と逆一次変換609との間に適用される。例えば、LFNSTプロセスは、順LFNST604と逆LFNST608の両方を含んでもよい。いくつかの実施例として、4×4の順LFNST604の場合、16個の入力係数があってもよく、8×8の順LFNST604の場合、64個の入力係数があってもよく、4×4の逆LFNST608の場合、8個の入力係数があってもよく、8×8の逆LFNST608の場合、16個の入力係数があってもよい。
【0070】
順LFNST604では、行列乗算プロセスを使用して表すことができる符号化ブロックのサイズに基づいて、可変変換サイズを有する非分離変換が適用される。例えば、順LFNST604が4×4ブロックに適用されると仮定する。4×4ブロック内のサンプルは、下記式(1)に示すように行列Xを使用して表すことができる。
【数1】
【0071】
行列Xは、下記式(2)に示すように、ベクトル
【数2】
としてシリアル化することができる。
【数3】
【0072】
上記式(1)又は(2)では、Xは、順一次変換603により得られた係数行列を表し、X
ijは、行列X中の一次変換係数を表す。次に、順LFNST604は、式(3)に従って以下のように適用される。
【数4】
【0073】
上記式(3)では、
【数5】
は、順LFNST604の後の変換係数を表し、Tは、変換カーネル(例えば、変換行列)を表す。上記の実施例では、Xは、4×4行列であるため、Tは、16×16行列である。16×1ベクトル
【数6】
【0074】
いくつかの実装形態では、縮小された非分離変換カーネルをLFNSTプロセスに適用することができる。例えば、上記式(3)に基づいて、順LFNST604は、計算演算及び変換係数を記憶するメモリソースに関して高価な直接行列乗算に基づいている。したがって、縮小された非分離変換カーネルをLFNST設計で使用すると、別の空間でN次元ベクトルをR次元ベクトルにマッピングする(R<N)ことにより、LFNSTプロセスの実装コストを削減することができる。例えば、変換カーネルにN×N行列を使用する代わりに、式(4)に示すように、R×N行列を順LFNST604の変換カーネルとして使用する。
【数7】
【0075】
上記式(4)では、TR×NにおけるR基底ベクトルは、元のN次元変換カーネル(即ち、N×N)の最初のR基底を選択することによって生成される。更に、TR×Nが直交であるとすると、逆LFNST608の逆変換行列は、順変換行列TR×Nの転置である。
【0076】
8×8のLFNSTの場合、係数N/R=4が適用される場合、64×64の変換行列は、順LFNST604に対して16×48変換行列に縮小され、64×64の逆変換行列は、逆LFNST608に対して48×16の逆変換行列に縮小される。これは、一次変換係数の左上領域の8×8サブブロックにLFNSTプロセスを適用することによって実現される。具体的には、16×48の順LFNSTが適用される場合、左上の8×8サブブロック(右下の4×4サブブロックを除く)内の3つの4×4サブブロックから48個の変換係数を入力とする。いくつかの実施例では、LFNSTプロセスは、左上の4×4サブブロックの外側の全ての変換係数が0である場合にのみ適用可能に制限され、これは、LFNSTが適用される場合、全ての一次のみの変換係数が0でなければならないことを示す。更に、最悪の場合(ピクセルごとの乗算に関して)の複雑さを制御するために、4×4及び8×8の符号化ブロックのLFNST行列には、それぞれ8×16及び8×48の変換が強制される。4×M及びM×4の符号化ブロック(M>4)の場合、LFNSTの非分離変換行列は、16×16である。
【0077】
LFNST変換シグナリングには、合計4つの変換セットがあり、LFNST設計では、変換セットごとに2つの非分離変換カーネルが有効となる。イントラブロックのイントラ予測モードに応じて、4つの変換セットから1つの変換セットを選択する。イントラ予測モードから変換セットへのマッピングは、下記表1に示すように予め定められている。3つのクロス成分線形モデル(CCLM)モード(例えば、INTRA_LT_CCLM、INTRA_T_CCLM、又はINTRA_L_CCLM)のうちの1つが現在のブロックに使用されている場合(81<=イントラ予測モード<=83)、現在の彩度ブロックには、変換セット「0」が選択される。各変換セットについては、選択された非分離二次変換候補は、ビットストリーム内のLFNSTインデックスをシグナリングすることによって示される。
表1
【表1】
【0078】
いくつかの実施例では、最初の16×16サブブロックの外側の全ての変換係数が0である場合、LFNSTがイントラブロックに適用されるように制限されるため、LFNSTインデックスのシグナリングは、最後の有意(即ち、非ゼロ)変換係数の位置に依存する。例えば、4×4及び8×8の符号化ブロックについては、LFNSTインデックスは、最後の有意変換係数の位置が8未満である場合にのみシグナリングされる。その他の符号化ブロックサイズについては、LFNSTインデックスは、最後の有意変換係数の位置が16未満である場合にのみシグナリングされる。それ以外の場合(即ち、LFNSTインデックスがシグナリングされていない場合)、LFNSTインデックスが0であり、即ち、LFNSTが無効であると推定される。
【0079】
また、変換係数をキャッシュするバッファのサイズを小さくするために、現在の符号化ブロックの幅又は高さが、シーケンスパラメータセット(SPS)でシグナリングされる最大変換サイズ(即ち、64)よりも大きい場合、LFNSTを不許可とする。一方、LFNSTは、一次変換がDCT2である場合にのみ適用される。また、LFNSTは、イントラ及びインタースライスの両方のイントラ符号化ブロック、並びに輝度成分及び彩度成分の両方に適用される。二分木又は局所木が有効である場合(輝度成分と彩度成分の分割がずれている場合)、LFNSTインデックスは、輝度成分と彩度成分に対して個別にシグナリングされる(即ち、輝度成分と彩度成分は、異なるLFNST変換を適用することができる)。それ以外の場合、単一木が適用される場合(輝度成分と彩度成分の分割が揃っている場合)、LFNSTは、単一のLFNSTインデックスがシグナリングされた輝度成分のみに適用される。
【0080】
ECMでのLFNST設計は、ブロックサイズの大きい残差サンプルのエネルギー圧縮を向上させるために、追加のLFNSTカーネルが導入されていることを除いて、VVCの設計と同様である。具体的には、変換ブロックの幅又は高さが16以上の場合、一次変換から生成された低周波変換係数の左上の領域に新たなLFNST変換が導入される。現在のECMでは、
図7に示すように、低周波領域は、一次変換係数の左上隅に6つの4×4サブブロック(例えば、
図7では灰色で示される6つの4×4サブブロック)を含む。この場合、順LFNST604への係数入力数は、96である。更に、最悪の場合の計算の複雑さを制御するために、順LFNST604の係数出力数は、32に設定される。具体的には、W×H個の変換ブロックの場合(W>=16及びH>=16)、32×96の順LFNSTが適用され、左上の領域にある6つの4×4サブブロックから96個の変換係数を入力とし、32個の変換係数を出力する。一方、ECMでの8×8LFNSTは、4つの4×4サブブロックの全ての変換係数を入力として利用し、32個の変換係数(即ち、順LFNST604については32×64行列、逆LFNST608については64×32行列)を出力する。これは、8×8LFNSTが左上の領域にある3つの4x4サブブロックのみに適用され、16個の変換係数(順LFNST604については16×48行列、逆LFNST608については48×16行列)のみが生成されるVVCとは異なる。更に、LFNSTセットの総数は、VVCでの4からECMでの35に増加する。VVCと同様に、LFNSTセットの選択は、現在の符号化ユニットのイントラ予測モードに依存し、各LFNSTセットは、3つの異なる変換カーネルを含む。
【0081】
いくつかの実施例では、HEVCで用いられるDCT2変換に加えて、インター符号化ブロックとイントラ符号化ブロックの両方の残差を変換するために、多重変換選択(MTS)スキームが適用される。MTSスキームは、DCT8及びDST7変換から選択された複数の変換を用いる。
【0082】
例えば、2つの制御フラグがシーケンスレベルで指定されて、イントラモードとインターモードでそれぞれMTSスキームを有効にする。MTSスキームがシーケンスレベルで有効である場合、MTSスキームが適用されるか否かを示すために、別のCUレベルのフラグが更にシグナリングされる。いくつかの実装形態では、MTSスキームは、輝度成分に対してのみ適用される。更に、MTSスキームは、(a)幅と高さの両方が32以下であり、(b)符号化ブロックフラグ(CBF)が1に等しいという条件が満たされる場合にのみシグナリングされる。MTS CUフラグが0に等しい場合、DCT2は、水平方向と垂直方向の両方に適用される。MTS CUフラグが1に等しい場合、他の2つのフラグがそれぞれ水平方向と垂直方向の変換タイプを示すために更にシグナリングされる。MTSの水平及び垂直制御フラグと、適用された変換との間のマッピングは、下記表2に示される。
表2
【表2】
【0083】
変換行列の精度に関しては、全てのMTS変換係数は、6ビット精度であり、DCT2コア変換と同じである。VVCがHEVCで使用される全ての変換サイズをサポートすると、HEVCで使用される全ての変換コアは、4点、8点、16点及び32点のDCT-2変換と、4点のDST-7変換とを含むVVCと同じに保たれる。また、64点のDCT-2、4点のDCT-8、8点、16点及び32点のDST-7及びDCT-8を含む他の変換コアは、VVC変換設計で更にサポートされている。更に、大きなサイズのDST-7及びDCT-8の複雑さを軽減するために、16×16の低周波領域の外側に位置する高周波変換係数は、DST-7、DCT-8変換ブロックの幅又は高さのいずれかが32に等しい場合に0(ゼロアウトとも呼ばれる)に設定される。
【0084】
VVCでは、DCT2に加えて、DST7及びDCT8変換カーネルのみがイントラ符号化及びインター符号化に利用される。イントラ符号化については、通常、残差信号の統計的特性は、イントラ予測モードに依存する。追加の一次変換は、残差特性の多様性を処理するのに有益な場合がある。
【0085】
DCT5、DST4、DST1、恒等変換(IDT)などの追加の一次変換がECMで使用される。また、MTSセットは、TUサイズとイントラモード情報に依存して作成される。16種類の異なるTUサイズが考慮されるが、イントラモード情報に応じて各TUサイズについて5つの異なるクラスが考慮される。各クラスについて、4つの異なる変換ペアが考慮される(VVCと同じである)。合計80個の異なるクラスが考慮されるが、それらの異なるクラスの一部は、同じ変換セットを共有することがよくある。したがって、得られるルックアップテーブル(LUT)には58個(80個未満)の一意のエントリが存在する。
【0086】
角度モードの場合、TU形状とイントラ予測にわたる結合対称性が考慮される。したがって、TU形状A×Bを有するモードi(i>34)は、TU形状B×Aを有するモードj=(68-i)に対応する同じクラスにマッピングすることができる。しかしながら、各変換ペアについて、水平変換カーネルと垂直変換カーネルの順序が入れ替えられる。例えば、モード18(水平予測)を有する16×4ブロックと、モード50(垂直予測)を有する4×16ブロックとは、同じクラスにマッピングされ、垂直変換カーネルと水平変換カーネルとが入れ替えられる。広角モードの場合、最も近い従来の角度モードは、変換セットの決定に使用される。例えば、モード2は、-2と-14との間の全てのモードに使用される。同様に、モード66は、モード67~モード80に使用される。
【0087】
イントラテンプレートマッチング予測は、現在のフレームの再構成された部分から、L字形のテンプレートが現在のテンプレートと一致する予測ブロックをコピーするイントラ予測モードの一例である。所定の探索範囲について、ビデオエンコーダ20は、現在のフレームの再構成された部分において(例えば、SADコストに基づいて)現在のテンプレートに最も類似したテンプレートを探索し、対応するブロックを予測ブロックとして使用する。次に、ビデオエンコーダ20は、このモードの使用をシグナリングし、同じ予測動作は、デコーダ側で実行される。予測信号は、
図8に示すように、現在のブロックのL字形の因果的隣接ブロックと所定の探索領域内の別のブロックとをマッチングすることによって生成され、当該探索領域は、(a)現在のCTU(R1)、(b)左上のCTU(R2)、(c)上端のCTU(R3)、及び(d)左端のCTU(R4)を含む。イントラテンプレートマッチングは、幅及び高さが64以下のサイズのCUに対して有効である。一方、イントラテンプレートマッチング予測モードは、CUレベルのフラグをシグナリングすることによって示される。イントラテンプレートマッチングが幅又は高さが4~16(両端を含む)の符号化ブロックに適用される場合、対応する次元に適用される一次変換は、DST-VIIに設定される。それ以外の場合(即ち、幅又は高さが4よりも小さいか、又は16よりも大きい場合)、DCT-IIが次元に適用される。
【0088】
図9は、いくつかの実施例に係る、符号予測の例示的なプロセスを示すグラフィック表現である。いくつかの実装形態では、符号予測は、変換ブロック内の変換係数の符号をその隣接するブロックのサンプルから推定し、各推定された符号と対応する真の符号との差分を「0」(又は「1」)で符号化して、推定された符号が真の符号と同じである(又は同じでない)ことを示すことを意図することができる。高い割合で正確に符号を推定できる場合(例えば、符号の90%又は95%が正しく推定される場合)、推定された符号と真の符号との差分は、0になる傾向があり、これにより、VVCにおける変換係数のバイパス符号化された符号と比較した場合、CABACによって効率的にエントロピー符号化することができる。
【0089】
一般に、現在のブロックとその隣接するブロックとの境界のサンプル間には高い相関があり、これを符号予測スキームで利用して、現在のブロックの変換係数の符号を予測することができる。
図9に示すように、現在のブロック内にM個の非ゼロ変換係数が存在すると仮定する(M個の符号は、それぞれ+又は-である)。それでは、可能な符号の組み合わせの総数は、2
Mとなる。符号予測スキームは、各符号の組み合わせを使用して、対応する仮説(例えば、現在のブロックの上端と左端の境界にある再構成されたサンプル)を生成し、対応する仮説における再構成されたサンプルを、隣接するブロックからの外挿されたサンプルと比較して、再構成されたサンプルと外挿されたサンプルとの間のサンプル差分(例えば、SSD又はSAD)を取得する。サンプル差分を最小にする(2
M個の可能な符号の組み合わせのうち)符号の組み合わせは、現在のブロック内の予測された符号として選択される。
【0090】
いくつかの実装形態では、
図9に示すように、M個の符号の各組み合わせに対して、対応する仮説を生成するために、M個の対応する変換係数は、逆量子化演算及び逆変換によって処理されて、残差サンプルを取得することができる。残差サンプルを予測サンプルに加算して、(L字形の灰色の領域902に示す)現在のブロックの上端と左端の境界にある再構成されたサンプルを含む再構成されたサンプルを取得することができる。
【0091】
いくつかの実装形態では、現在のブロックとその隣接ブロックの境界におけるサンプル間の空間的不連続性を測定するコスト関数は、符号の組み合わせの選択に使用される。L2ノルム(SSD)を使用する代わりに、下記式(5)に示すように、コスト関数は、L1ノルム(SAD)に基づいてもよい。
【数8】
【0092】
上記式(5)では、B
i,n(i=-2,-1)は、現在のブロックの上端の隣接するブロックからの隣接するサンプルを表す。C
m,j(j=-2,-1)は、現在のブロックの左端の隣接するブロックからの隣接するサンプルを表す。P
0,n及びP
m,nは、それぞれ現在のブロックの上端と左端の対応する再構成されたサンプルを表す。N及びMは、それぞれ現在のブロックの幅及び高さを表す。
図10は、符号予測のためのコスト関数を計算するために使用される、現在のブロックの対応するサンプルP
0,nとP
m,0、及び、隣接するブロックの対応するサンプルB
i,nとC
m,jを示す。
【0093】
いくつかの実装形態では、複数の逆変換の実行の複雑さを回避するために、テンプレートベースの仮説再構成方法を符号予測スキームに適用することができる。各テンプレートは、現在のブロックの上端と左端の境界にある再構成されたサンプルのセットであってもよく、特定の係数が1に設定され、他の全ての係数が0に等しい係数行列に逆変換を適用することにより得ることができる。逆変換(例えば、DCT、DST)が線形であるとすると、対応する仮説は、予め計算されたテンプレートのセットの線形結合により生成することができる。
【0094】
いくつかの実装形態では、予測された符号は、2つのセットに分類され、各セットは、単一のCABACコンテキストによって符号化される。例えば、第1セットは、変換ブロックの左上隅にある変換係数の予測された符号を含み、第2セットは、変換ブロックの他の全ての位置にある変換係数の予測された符号を含む。
【0095】
HEVCと同様に、VVCではスカラー量子化が使用される。いくつかの実装形態では、VVCにおけるスカラー量子化は、依存スカラー量子化として実装されてもよい。依存スカラー量子化とは、変換係数の許容可能な再構成値のセットが、再構成順序で現在の変換係数レベルに先行する変換係数レベルの値に依存するアプローチを指す。このアプローチの主な効果は、HEVCで使用される従来の独立したスカラー量子化と比較して、許容可能な再構成ベクトルがN次元ベクトル空間でより高密度にパックされることである(Nは、変換ブロック内の変換係数の数を表す)。つまり、N次元の単位体積当たりの許容可能な再構成ベクトルの平均数が一定である場合、入力ベクトルとその最も近い再構成ベクトルの間の平均歪みが減少する。
【0096】
依存スカラー量子化は、(a)異なる再構成レベルを有する2つのスカラー量子化器を定義し、(b)2つのスカラー量子化器間で切り替えるプロセスを定義することによって実装されてもよい。
図11は、本開示のいくつかの実装形態に係る、VVCの依存スカラー量子化に用いられる2つの例示的なスカラー量子化器を示す。
図11に示すように、VVCの量子化設計では、Q0とQ1により示される2つのスカラー量子化器が適用される。利用可能な再構成レベルの位置は、量子化ステップサイズΔによって一意に指定される。この実装形態では、2つのスカラー量子化器Q0とQ1との間の選択は、ビットストリームで明示的にシグナリングされていない。代わりに、現在の変換係数に用いられる量子化器は、ビデオエンコーダ20による符号化順序又はビデオデコーダ30による再構成順序で現在の変換係数に先行する変換係数レベルのパリティによって決定される。
【0097】
いくつかの実装形態では、2つのスカラー量子化器間の切り替えは、状態マシンを介して行われる。例えば、
図12Aは、いくつかの実施例に係る、依存スカラー量子化に用いられる4つの状態を有する状態マシンを用いる状態遷移を示すグラフィック表現である。
図12に示すように、状態は、0、1、2及び3の4つの異なる値を取ることができる。これは、符号化/再構成順序で現在の変換係数に先行する変換係数レベルのパリティによって一意に決定される。
【0098】
いくつかの実装形態では、変換ブロックの逆量子化の開始時に、状態は、0に設定される。変換係数は、走査順序で(即ち、エントロピー復号と同じ順序で)再構成される。
【0099】
現在の変換係数が再構成された後、状態は、状態マシンに従って更新される。例えば、
図12Aでは、kは、変換係数レベルの値を示す。各状態で、次の状態は、変換係数レベルkのパリティ、即ち、(k&1)に基づいて決定される。(k&1)==1の場合の次の状態は、(k&1)==0の場合の次の状態とは異なる。
図12Aに示すように、状態マシンは、4つの状態のそれぞれから2つの異なる状態を指す2つの矢印を含む。
図12Bは、
図12Aの状態遷移に応じた例示的な量子化器の選択を示す表である。例えば、
図12A及び
図12Bによれば、状態1では、(k&1)==0の場合に次の状態は2となり、(k&1)==1の場合に次の状態は0となる。
【0100】
同様に、デコーダでは、1つの変換係数の再構成された量子化インデックスは、式(6)に従って計算することができる。
quantIdx=(abs(k)<<1)-(state&1) (6)
【0101】
式中、abs()は、入力の絶対値を計算する関数であり、stateは、現在の変換係数のレベルを解析するときの状態遷移マシンの現在の状態である。また、デコーダ側では、逆量子化後の再構成された変換係数は、式(7)に従って取得することができる。
transCoeff=quantIdx・Δ (7)
【0102】
符号予測スキームの現在の設計に存在するいくつかの例示的な欠陥が本明細書で特定される。第1例では、現在のECMにおける符号予測は、一次変換(例えば、DCT及びDST変換)のみが適用される変換ブロック内の変換係数の符号の予測にのみ適用可能である。上述したように、LFNSTを一次変換からの変換係数に適用することで、イントラ符号化ブロックの残差サンプルのエネルギー圧縮を向上させることができる。しかしながら、現在のECM設計では、LFNSTが適用される変換ブロックに対して、符号予測がバイパスされる。
【0103】
第2例では、変換ブロックに対して所定の最大数の予測された符号(「Lmax」で示される)を決定し、符号予測の複雑さを制御する。現在のECMでは、ビデオエンコーダは、複雑さと符号化効率のトレードオフに基づいて、最大数(例えば、Lmax=8)の値を決定し、当該値をビデオデコーダに送信する。更に、ビデオエンコーダ又はデコーダは、変換ブロック毎に、全ての変換係数をラスタ走査順序で走査し、最初のLmax個の非ゼロ変換係数は、符号予測のための変換係数候補として選択される。このように変換ブロック内の異なる変換係数を均等に扱うことは、符号予測の精度の観点から最適でない場合がある。例えば、比較的大きい強度の変換係数の場合、それらの符号の予測により、正しい予測が得られる可能性が高い。これは、これらの変換係数に誤った符号を用いると、比較的小さい強度の変換係数を用いた場合よりも、ブロック境界にある再構成されたサンプルに大きな影響が生じる傾向があるためである。
【0104】
第3例では、明示的な符号値を直接符号化するのではなく、ビデオエンコーダ又はデコーダは、予測された符号の正確さを符号化することができる。例えば、正の符号を有する変換係数の場合、その予測された符号も正であれば、ビデオエンコーダからビデオデコーダへのビットストリームには、ビン「0」のみが示される必要がある。この場合、予測された符号は、変換係数の真の符号(又は元の符号)と同じであり、この変換係数の符号予測が正しいことを示す。それ以外の場合(例えば、予測された符号が負であるが、真の符号が正である場合)、ビデオエンコーダからビデオデコーダへのビットストリームには、ビン「1」が含まれてもよい。全ての符号が正しく予測された場合、ビットストリームに示される対応するビンは、0であり、CABACによって効率的にエントロピー符号化することができる。一部の符号が誤って予測された場合、ビットストリームに示される対応するビンは、1である。算術符号化+適切なコンテキストモデルは、対応する確率に応じてビンを符号化するのに効率的であるが、符号値を示すためにビットストリーム内に生成される無視できないビットが依然として存在する。
【0105】
第4例では、現在のブロックとその隣接するブロックとの境界にあるサンプル間の空間的不連続性は、ECMにおける符号予測の現在の設計において、最良の符号予測の組み合わせの選択に用いられる。空間的不連続性を捉えるために、垂直方向と水平方向に沿った勾配差分のL1ノルムが利用される。しかしながら、画像信号の分布は、通常、不均一であるため、垂直方向と水平方向のみを使用すると、空間的不連続性を正確に捉えることができない可能性がある。
【0106】
本開示と一致して、ブロックベースのビデオ符号化における符号予測のためのビデオ処理方法及びシステムは、上記例示的な欠陥の1つ以上に対処するために本明細書で提供される。本明細書で開示された方法及びシステムは、ハードウェアコーデック実装の使いやすさを考慮しながら、符号予測の符号化効率を向上させることができる。本明細書で開示された方法及びシステムは、変換ブロックの変換係数に符号予測技術を適用する変換ブロックの符号化効率を向上させることができる。
【0107】
例えば、上述したように、符号予測は、変換ブロックとその空間的に隣接するブロックとの境界又は境界近くに位置する境界サンプル(辺縁サンプルとも呼ばれる)間の相関に基づいて、変換ブロック内の変換係数の符号を予測することができる。相関の存在がどの特定の変換が適用されるかに依存しないとすると、2つの符号化ツール(即ち、LFNSTと符号予測)は、互いに干渉せず、共同で適用することができる。更に、LFNSTは、一次変換の変換係数のエネルギーを更に圧縮するため、LFNSTの変換係数の符号予測は、一次変換よりも精度が高い。これは、LFNSTからの変換係数の符号予測が正しくないと、境界サンプルの滑らかさに更に大きな不一致が生じる可能性があるためである。したがって、本開示と一致して、LFNSTと符号予測との組み合わせを可能にして、変換係数符号化の符号化効率を向上させる調和スキームが本明細書で開示される。更に、逆変換の数を減らすために、予測された符号の異なる組み合わせに対して辺縁サンプルを再構成するテンプレートベースの仮説生成スキームも本明細書で開示される。
【0108】
別の例では、上述したように符号予測のための変換係数候補の選択のために、変換ブロック内の異なる変換係数を均等に扱うのではなく、これらの変換係数の符号がより容易に予測されるとすると、変換係数により高い重みが与えられてもよく、このように隣接するブロックの境界サンプル間の不一致が生じる可能性がある。本開示と一致して、本明細書で開示された方法及びシステムは、符号予測の精度を向上させるために、1つ以上の選択基準に基づいて、符号予測のための変換係数候補(例えば、変換ブロックについてその符号が予測される変換係数)を選択することができる。例えば、(再構成された辺縁サンプルに対して影響が小さい変換係数ではなく)再構成された辺縁サンプルに対して影響がより大きい変換係数が、符号予測のための変換係数候補として選択されるため、符号予測の精度を向上させることができる。
【0109】
更に別の例では、変換ブロック内の変換係数の符号が高い精度で予測された場合(例えば、予測された符号の正確さが80%又は90%などの閾値よりも高い場合)、変換ブロックとその隣接ブロックとの境界サンプルの間には強い相関が存在する。この場合、多くのシナリオで正しく予測できる連続した変換係数(例えば、特に変換ブロックの先頭のいくつかの非ゼロ変換係数)が存在する可能性があることが一般的に発生する。このようなシナリオでは、(複数のビンの代わりに)単一のビンを用いて、全ての連続した変換係数の符号が正しく予測されるか否かを示し、符号予測のシグナリングオーバーヘッドを節約することができる。本開示と一致して、符号予測のシグナリングオーバーヘッドを削減するベクトルベースの符号予測スキームが本明細書で開示される。各非ゼロ変換係数の符号を個別に予測する既存の符号予測とは異なり、開示されたベクトルベースの符号予測スキームは、連続した非ゼロ変換係数候補のセットをグループ化し、それらの対応する符号をまとめて予測することで、予測された符号の正確さを示すために用いられるビン(又はビット)の平均数が効率的に低減することができる。
【0110】
更に別の例では、垂直方向と水平方向のみを使用すると、現在のブロックとその隣接するブロックとの間の境界にあるサンプル間の空間的不連続性を正確に捉えることができない可能性がある。これにより、空間的不連続性をより正確に捉えるために、より多くの方向を導入することができる。本開示と一致して、空間的不連続性をより正確に捉えるために、垂直方向及び水平方向の勾配と対角方向の勾配の両方を考慮する改良されたコスト関数が本明細書で開示される。
【0111】
図13は、本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測プロセス1100を示すブロック図である。いくつかの実装形態では、符号予測プロセス1300は、変換処理ユニット52によって実行されてもよい。いくつかの実装形態では、符号予測プロセス1300は、ビデオエンコーダ20又はデコーダ30の1つ以上のプロセッサ(例えば、1つ以上のビデオプロセッサ)によって実行されてもよい。本開示を通じて、LFNSTは、一般性を失うことなく、二次変換の一例として用いられる。二次変換の他の実施例も本明細書に適用できることが考えられる。
【0112】
ECMの既存の設計では、符号予測は、LFNSTが適用される変換ブロックに対して無効である。しかしながら、符号予測の原理は、変換ブロックとその空間的に隣接するブロックとの辺縁サンプル間の相関に基づいて、変換係数の符号を予測するものであり、変換ブロックに適用される特定の変換タイプ(例えば、一次変換であるか、又は二次変換であるか)又は変換コア(例えば、DCTであるか、又はDSTであるか)に依存しない。したがって、本明細書では、変換符号化の効率を更に向上させるために、符号予測とLFNSTは、共に適用することができる。本開示と一致して、符号予測プロセス1300は、一次変換と二次変換が共同で適用される変換ブロック内の変換係数の符号を予測するために適用することができる。
【0113】
符号予測プロセス1300の例示的な概要は、本明細書で提供される。まず、符号予測プロセス1300は、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することにより、係数生成動作1302を実行することができる。次に、符号予測プロセス1300は、符号予測のために、変換係数から変換係数候補のセットを選択することにより、係数選択動作1304を実行することができる。続いて、符号予測プロセス1300は、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することにより、仮説生成動作1306を実行することができる。更に、符号予測プロセス1300は、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することにより、符号生成動作1108を実行することができる。動作1302、1304、1306及び1308は、それぞれ以下でより詳細に説明される。
【0114】
例えば、ビデオエンコーダ20の変換処理ユニット52は、一次変換と二次変換を共同で適用する(例えば、
図6に示すように、順一次変換603と順LFNST604を共同で適用する)ことにより、残差ビデオデータを変換ブロックの変換係数に変換することができる。上記変換ブロックの変換係数からの所定数(例えば、L個)の非ゼロ変換係数は、以下に説明する1つ以上の選択基準に基づいて変換係数候補として選択することができ、1≦L≦予測可能な符号の最大数である。次に、テンプレートベースの仮説生成スキームを適用することにより、L個の変換係数候補のそれぞれに対する異なる符号候補の組み合わせを使用して複数の仮説候補を生成することができ、このように合計2
L個の仮説候補を生成することができる。各仮説候補は、変換ブロックの上端と左端の境界にある再構成されたサンプルを含んでもよい。次に、水平、垂直、及び対角方向に沿った結合勾配を組み込んだコスト関数を用いて、各仮説候補再構成のコストを計算することができる。最小のコストに関連する仮説候補は、L個の変換係数候補の符号を予測するための仮説として複数の仮説候補から決定することができる。例えば、最小コストに関連する仮説候補を生成するために用いられる符号候補の組み合わせは、L個の変換係数候補の予測された符号として用いられる。
【0115】
まず、符号予測プロセス1300は、係数生成動作1302を実行してもよく、この動作では、一次変換(例えば、DCT、DSTなど)及び二次変換(例えば、LFNST)を変換ブロックに共同で適用して、変換ブロックの変換係数を生成することができる。例えば、一次変換を変換ブロックに適用して、変換ブロックの一次変換係数を生成することができる。次に、LFNSTを変換ブロックに適用して、一次変換係数に基づいて、LFNST変換係数を生成することができる。
【0116】
続いて、符号予測プロセス1300は、係数選択動作1304を実行してもよく、この動作では、1つ以上の選択基準に基づいて、変換ブロックの変換係数から符号予測のための変換係数候補のセットを選択することができる。変換係数候補を選択することにより、正しく予測できる変換係数候補の数を最大化することができ、符号予測の精度を向上させることができる。
【0117】
いくつかの実装形態では、変換係数候補のセットは、変換係数の強度に基づいて、変換ブロックの変換係数から選択されてもよい。例えば、変換係数候補のセットは、変換ブロック内の残りの変換係数よりも大きな強度を有する1つ以上の変換係数を含んでもよい。
【0118】
一般に、変換係数の強度が大きいほど、これらの変換係数の予測された符号が正しくなる可能性が高い。これは、これらの変換係数の強度が大きいほど、再構成されたサンプルの品質に与える影響が大きくなる傾向があり、これらの変換係数に誤った符号を用いると、変換ブロックとその空間的に隣接するブロックとの境界サンプル間に不連続性が生じやすくなる可能性があるためである。この理論的根拠に基づいて、符号予測のための変換係数候補のセットは、変換ブロック内の非ゼロ変換係数の強度に基づいて、変換ブロックの変換係数から選択することができる。
【0119】
符号予測のために、変換係数の強度ベースの並べ替えスキームを実装するには、複数の方法が考えられる。第1実装形態では、このスキームは、逆量子化後に再構成された変換係数(即ち、逆量子化された変換係数)をソートに直接的に用いることで、より大きな強度を有する逆量子化された変換係数を、符号予測のためにより小さな強度を有する変換係数より前に配置する。例えば、変換ブロック内の全ての非ゼロ変換係数を走査してソートし、それらの強度の降順に従って係数リストを作成することができる。最大の強度を有する変換係数は、係数リストから選択され、変換係数候補のセット内の第1変換係数候補として配置することができ、2番目に大きい強度を有する変換係数は、係数リストから選択され、変換係数候補のセット内の第2変換係数候補として配置することができ、選択された変換係数候補の数が所定の数Lに達するまでこのようなことが繰り返される。
【0120】
第2実装形態では、逆量子化された変換係数を直接的に用いる代わりに、各変換係数の量子化インデックス(例えば、式(6)に従って取得されるquantIdx)は、変換係数の強度を表すために用いられ、そのようなソートに用いることができる。式(7)に示すように、1つの逆量子化された変換係数の値は、その量子化インデックスquantIdxと対応するステップサイズΔの積に等しく、ステップサイズは、1つの変換ブロック内の全ての変換係数の逆量子化についても同じであるため、2つの実装形態は、実際には数学的に同一である。しかしながら、量子化インデックスquantIdxが解析段階(逆量子化された変換係数の取得よりも早い段階)で取得できるとすると、第2実装形態は、いくつかの特定のハードウェアによって実装される場合、一定の利点を提供する可能性がある。
【0121】
いくつかの実装形態では、変換係数候補のセットは、ビデオ符号化に適用されるエントロピー符号化の係数走査順序に基づいて、変換ブロックの変換係数から選択されてもよい。自然のビデオコンテンツには、低周波情報が豊富に含まれるため、ビデオコンテンツの処理から取得される非ゼロ変換係数の強度は、低周波の位置で大きくなり、高周波の位置に向かうにつれて小さくなる傾向がある。したがって、最新のビデオコーデックでは、係数走査順序(ジグザグ走査、左上走査、水平走査、又は垂直走査など)を用いて変換ブロック内の変換係数を走査してエントロピー符号化することができる。この係数走査順序を用いることにより、より大きな強度(通常、より低い周波数に対応する)を有する変換係数は、より小さな強度(通常、より高い周波数に対応する)を有する変換係数よりも前に走査される。この理論的根拠に基づいて、本明細書で開示された符号予測のための変換係数候補のセットは、エントロピー符号化のための係数走査順序に基づいて、変換ブロックの変換係数から選択することができる。例えば、係数リストは、係数走査順序を用いて変換ブロック内の全ての変換係数を走査することによって取得することができる。次に、係数リスト内の最初のL個の非ゼロ変換係数は、符号予測のための変換係数候補のセットとして自動的に選択することができる。
【0122】
いくつかの実装形態では、イントラ符号化されたブロックについて、符号予測のための変換係数候補のセットは、ブロックのイントラ予測方向に基づいて、ブロックの変換係数から選択することができる。例えば、イントラ予測方向(例えば、VVC及びECMにおける67個のイントラ予測方向)とコヒーレントな複数の走査順序を決定し、ビデオエンコーダ20及びビデオデコーダ30の両方でルックアップテーブルとして記憶することができる。イントラブロックの変換係数を符号化するとき、ビデオエンコーダ20又はビデオデコーダ30は、走査順序から、イントラブロックのイントラ予測に最も近い走査順序を特定することができる。ビデオエンコーダ20又はビデオデコーダ30は、特定された走査順序を用いてイントラブロックの全ての非ゼロ変換係数を走査して係数リストを取得し、係数リストから最初のL個の非ゼロ変換係数を変換係数候補のセットとして選択することができる。
【0123】
いくつかの実装形態では、ビデオエンコーダ20は、変換ブロックの変換係数の走査順序を決定し、決定された走査順序をビデオデコーダ30にシグナリングすることができる。決定された走査順序を示す1つ以上の新しい構文要素は、ビットストリームを通じてシグナリングすることができる。例えば、(例えば、異なる変換ブロックサイズ及び符号化モードに対する)複数の固定された走査順序は、ビデオエンコーダ20によって予め決定され、ビデオデコーダ30と予め共有することができる。次に、固定された走査順序から走査順序を選択した後、ビデオエンコーダ20は、選択された走査順序をビデオデコーダ30に示すために単一のインデックスのみをシグナリングする必要がある。別の実施例では、1つ以上の新しい構文要素は、変換係数の任意の選択された走査順序のシグナリングを可能にすることに用いることができる。いくつかの実装形態では、1つ以上の構文要素は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、ピクチャ(又はスライス)レベル、CTU(又はCU)レベルなどの様々なコーディングレベルでシグナリングすることができる。
【0124】
いくつかの実装形態では、変換係数候補のセットは、変換ブロックの再構成された辺縁サンプルに対する変換係数の影響スコアに基づいて、変換ブロックの変換係数から選択することができる。具体的には、上記式(5)に示すように、符号の組み合わせ(即ち、予測された符号又は符号予測因子)の選択は、現在の変換ブロックとその空間的に隣接するブロックとの間のサンプルの勾配の不連続性を最小化するためのコスト関数に基づいている。したがって、現在の変換ブロックの上端及び左端の辺縁にある再構成されたサンプルに比較的大きな影響を与える変換係数の符号は、これらの符号を反転すると、(5)で計算されたように、境界サンプル間の滑らかさが大きく変動する可能性があるため、正確に予測される可能性が高い傾向がある。正確な符号予測の割合を最大化するために、これらの変換係数(即ち、再構成された辺縁サンプルに大きな影響を与えるもの)の符号は、他の変換係数(即ち、再構成された辺縁サンプルに小さな影響を与えるもの)よりも前に予測される場合がある。この理論的根拠に基づいて、本明細書で開示された符号予測のための変換係数候補のセットは、現在の変換ブロックの上端と左端の辺縁にある再構成されたサンプルに対するそれらの影響スコアに基づいて選択することができる。
【0125】
例えば、ビデオエンコーダ20又はデコーダ30は、変換ブロックの再構成された辺縁サンプルに対するそれらの対応する影響スコアの測定に基づいて、全ての変換係数をソートすることができる。変換係数が再構成された辺縁サンプルに対して大きな影響スコアを有する場合、正しく予測するのが簡単であるため、符号予測候補リストにおいて小さなインデックスが割り当てられてもよい。本明細書で開示された変換係数候補のセットは、符号予測候補リストにおいてL個の最も小さいインデックスを有するL個の変換係数であってもよい。
【0126】
いくつかの実装形態では、再構成された辺縁サンプルに対する変換係数の影響スコアを定量化するために、異なる基準を適用することができる。例えば、変換係数によって引き起こされる再構成された辺縁サンプルの変動のエネルギーを測定して得られた値は、以下のように取得できる影響スコアとして用いることができる(L1ノルム内)。
【数9】
【0127】
上記式(6)では、Ci,jは、変換ブロック内の位置(i,j)での変換係数を表す。Ti,j(l,k)は、変換係数Ci,jに関連するテンプレートの位置(l,k)での対応する辺縁サンプルを表す。N及びMは、それぞれ変換ブロックの幅及び高さを表す。Vは、位置(i,j)での変換係数の影響スコアを表す。
【0128】
別の例では、上記式(8)のL1ノルムをL2ノルムに置き換えることができるため、影響スコア(例えば、変換係数によって引き起こされる再構成された辺縁サンプルの変動のエネルギーの測定値)は、以下のようにL2ノルムを使用して計算することができる。
【数10】
【0129】
本開示と一致して、上記式(8)及び(9)では、(例えば、Ti,j(0,n)とTi,j(m,0)によって示される)上端と左端の辺縁サンプルのみが計算に用いられるが、本明細書で開示された変換係数の選択スキームは、対応するコスト関数で用いられる現在の変換ブロックの再構成されたサンプルを変更することにより、任意の符号予測スキームにも適用することができる。
【0130】
変換係数の強度ベースのスキームと同様に、影響スコアベースのスキームを実装するには様々な方法が考えられる。第1実装形態では、式(8)及び(9)に示すように、スキームは、逆量子化された変換係数C
i,jの強度を直接的に用いることができる。第2実装形態では、量子化インデックス値quantIdxを代わりに適用して、逆量子化された変換係数C
i,jを置き換えて、対応するコスト測定値を計算することができる。具体的には、量子化インデックス値quantIdxを適用すると、式(8)及び式(9)は、下記式(10)及び式(11)となる。
【数11】
【数12】
【0131】
式中、quantIdxi,jは、変換ブロック内の位置(i,j)での変換係数の量子化インデックスを表す。
【0132】
1つの逆量子化された変換係数の値は、その量子化インデックスquantIdxと対応するステップサイズΔの積に等しく、ステップサイズは、1つの変換ブロック内の全ての変換係数の逆量子化についても同じであるため、2つの方法は、実際には数学的に同一である。
【0133】
続いて、符号予測プロセス1300は、仮説生成動作1106を実行してもよく、この動作では、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することができる。最初に、複数の符号候補の組み合わせは、変換係数候補のセットに含まれる係数の総数に基づいて、変換係数候補のセットに対して決定することができる。例えば、合計L個の変換係数候補が存在する場合、変換係数候補のセットに対する複数の符号候補の組み合わせは、2L個の符号候補の組み合わせとすることができる。各符号候補は、負符号(-)でも正符号(+)でもよい。各符号候補の組み合わせは、合計L個の負符号又は正符号を含んでもよい。例えば、L=2の場合、複数の符号候補の組み合わせは、それぞれ(+,+)、(+,-)、(-,-)、及び(-,-)である22=4個の符号候補の組み合わせを含むことができる。
【0134】
次に、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対して複数の仮説候補をそれぞれ生成することができる。実行する必要がある逆一次変換及び逆二次変換の複雑さを軽減するために、本明細書で開示されたテンプレートベースの仮説生成スキームは、変換ブロックの再構成された辺縁サンプルの生成を最適化することに用いることができる。テンプレートベースの仮説生成スキームを実装するための2つの例示的なアプローチは、本明細書で開示される。テンプレートベースの仮説生成スキームを実装するための他の例示的なアプローチも可能であると考えられるが、これは、本明細書では限定されない。
【0135】
第1例示的なアプローチでは、各符号候補の組み合わせに対応する仮説候補がテンプレートの線形結合に基づいて生成することができ、それにより、複数の仮説候補は、複数の符号候補の組み合わせに対してそれぞれ生成することができる。各テンプレートは、変換係数候補のセットからの変換係数候補に対応してもよい。各テンプレートは、変換ブロックの上端と左端の境界にある再構成されたサンプル群を表すことができる。各テンプレートは、変換ブロックに逆二次変換及び逆一次変換を適用することにより生成することができ、1に設定されたテンプレートに対応する変換係数候補を除いて、変換係数候補のセットのうちの各変換係数候補は、0に設定される(例えば、テンプレートに対応する変換係数候補は、1に設定されるが、残りの各変換係数候補は、0に設定される)。
【0136】
例えば、各符号候補の組み合わせに対応する仮説候補は、テンプレートの線形結合となるように設定することができる。それぞれの変換係数候補に対応するテンプレートの場合、テンプレートのそれぞれの重みは、それぞれの変換係数候補に対応する逆量子化された変換係数の強度に設定することができる。テンプレートの線形結合に基づく仮説生成の例は、
図14に示され、以下でより詳細に説明する。
【0137】
変換係数候補の符号を予測するために、ビデオエンコーダ20又はデコーダ30は、コスト関数から計算されたコスト値を最小化できる符号候補の組み合わせに関連する仮説を特定する前に、全ての仮説候補をトラバースしてもよい。上述した第1例示的なアプローチでは、各仮説候補は、複数のテンプレートの組み合わせに基づいて生成することができるが、そのような組み合わせに関するサンプルごとの計算(例えば、加算、乗算及びシフト)を考慮すると、比較的複雑である。コスト関数から計算されたコスト値を最小化する仮説の特定に関連する計算の複雑さを軽減するために、第2例示的なアプローチが本明細書で導入される。
【0138】
第2例示的なアプローチでは、複数の仮説候補に関連する複数の符号候補の組み合わせは、それぞれ、複数の仮説候補に対する複数の仮説インデックスとして扱うことができる。例えば、デジタル0と1は、それぞれ正符号(+)と負符号(-)を表すように構成することができる。仮説候補に対応する符号候補の組み合わせは、仮説候補に固有の表現(即ち、仮説インデックス)として用いることができる。例えば、予測される符号が3つあると仮定する(例えば、L=3)。仮説インデックス000は、3つの符号候補を全て正に設定することにより生成された仮説候補を表すことができる(例えば、3つの符号候補は、(+,+,+)である)。同様に、仮説インデックス010は、第1符号候補と第3符号候補を正に設定し、第2符号候補を負に設定することにより生成された仮説候補を表すことができる(例えば、3つの符号候補は、(+,-,+)である)。
【0139】
次に、複数の仮説候補は、複数の仮説インデックスのゲイリーコード順序に基づいて生成することができ、それにより、前の仮説インデックスを有する前の仮説候補の再構成されたサンプルは、現在の仮説インデックスを有する現在の仮説候補を生成することに用いることができる。現在の仮説候補の現在の仮説インデックスは、複数の仮説インデックスのゲイリーコード順序に従って、前の仮説候補の前の仮説インデックスの直後であってもよい。現在の仮説インデックスは、前の仮説インデックスに関連する符号候補を正(又は負)から負(又は正)に変更することにより生成することができる。例えば、現在の仮説インデックスは、前の仮説インデックス内の単一の「0」(又は「1」)を「1」(又は「0」)に変更することにより取得することができる。
【0140】
例えば、複数の仮説インデックスは、複数の仮説インデックスのゲイリーコード順序に基づいて並べ替えられ、並べ替えられた仮説インデックスのシーケンスを生成することができる。並べ替えられた仮説インデックスのシーケンス内の第1仮説インデックスの場合、第1仮説インデックスに対応する第1仮説候補は、変換係数候補のセットのうちの各変換係数候補が1に設定された変換ブロックに逆二次変換及び逆一次変換を適用することにより生成することができる。並べ替えられた仮説インデックスのシーケンス内の、第1仮説インデックスの直後にある第2仮説インデックスの場合、第2仮説インデックスに対応する第2仮説候補は、(a)第1仮説インデックスに対応する第1仮説候補、及び、(b)第2仮説候補の調整項に基づいて生成することができる。下記表3は、変換係数候補の数が3(例えば、L=3)である場合に、LFNSTの全ての仮説候補を生成する例示的なプロセスを示す。
表3
【表3】
【0141】
上記表3では、第1列は、23=8個の符号候補の組み合わせをそれぞれ示す。第2列は、デジタル0と1を用いて正符号(+)及び負符号(-)を表すことにより、符号候補の組み合わせに対応する仮説インデックスをそれぞれ示す。第2列における仮説インデックスは、ゲイリーコード順序(例えば、000、001、011、010、110、111、101、100の順序)に従って並べられる。第3列は、符号候補の組み合わせと仮説インデックスに対応する仮説候補をそれぞれ示す。第4列は、仮説候補の計算をそれぞれ示す。
【0142】
表3では、第4列におけるTXYZは、対応するテンプレート(即ち、変換ブロックの上端と左端の境界にある再構成されたサンプル)を表し、この対応するテンプレートは、特定の変換係数が1に設定され、他の全ての変換係数が0に等しい変換ブロックの係数行列に逆変換を適用することにより生成することができる。例えば、T100は、第1符号候補に対応する変換係数のみが1に設定され、係数行列中の全ての変換係数が0に設定された係数行列に逆変換を適用することにより生成された対応テンプレートを表す。C0、C1及びC2は、それぞれ、第1、第2及び第3符号候補に関連する逆量子化された変換係数の絶対値を表す。
【0143】
表3を参照すると、第1仮説インデックス000については、第1仮説候補H000は、各変換係数候補が1に設定された変換ブロックに関連する係数行列に逆二次変換及び逆一次変換を適用することにより生成される。第1仮説インデックス000の直後にある第2仮説インデックス001については、第2仮説候補H001は、(a)第1仮説候補H000、及び、(b)第2仮説候補の調整項(例えば、-C2*T001)に基づいて生成することができる。同様に、第2仮説インデックス001の直後にある第3仮説インデックス011については、第3仮説候補H011は、(a)第2仮説候補H001、及び、(b)第3仮説候補の調整項(例えば、-C1*T010)に基づいて生成することができる。第3仮説インデックス011の直後にある第4仮説インデックス010については、第4仮説候補H010は、(a)第3仮説候補H011、及び、(b)第4仮説候補の調整項(例えば、C2*T001)に基づいて生成することができる。
【0144】
続いて、最小コストに関連する仮説は、水平方向、垂直方向及び対角方向に沿った結合勾配を組み込んだコスト関数に基づいて、複数の仮説候補から決定することができる。上述したように、コスト関数が水平方向及び垂直方向の勾配のみを利用する場合(例えば、上記式(5)に示すような場合)、不均一性の高い画像信号に対してはうまく機能しない可能性がある。本開示と一致して、コスト関数の精度を向上させるために、1つ以上の対角方向に沿った勾配も利用される。例えば、左対角方向と右対角方向を含む2つの対角方向をコスト関数に組み込むこともできる。例えば、2つの対角方向のコスト関数は、下記式(12)及び(13)に従って説明することができる。
【数13】
【数14】
【0145】
上記式(8)又は(9)では、B-1,n-1、B-2,n-2、B-1,n+1、及びB-2,n+2は、変換ブロックの上端の隣接するブロックからの隣接するサンプルを表す。Cm-1,-1、Cm-2,-2、Cm+1,-1、及びCm+2,-2は、変換ブロックの左端の隣接するブロックからの隣接するサンプルを表す。P0,n及びPm,0は、それぞれ変換ブロックの上端と左端の境界にある再構成されたサンプルを表す。N及びMは、それぞれ変換ブロックの幅及び高さを表す。costD1及びcostD1は、それぞれ左対角方向、右対角方向の左対角コスト関数、右対角コスト関数を表す。
【0146】
対角方向の2つのコスト関数(例えば、costD1及びcostD2)は、水平方向及び垂直方向のコスト関数(例えば、上記式(5)に示すcostHV)と共同で用いることができる。そして、符号予測のためのコスト関数は、水平方向と垂直方向に沿った勾配を組み込んだ水平と垂直のコスト関数、左対角方向に沿った勾配を組み込んだ左対角コスト関数、及び右対角方向に沿った勾配を組み込んだ右対角コスト関数に基づいて決定することができる。例えば、コスト関数は、式(14)で説明されているように、水平と垂直のコスト関数、左対角コスト関数及び右対角コスト関数の加重和であってもよい。
cost=costHV+ω(costD1+costD2) (14)
【0147】
上記式(14)では、ωは、左対角コスト関数及び右対角コスト関数の重みを表す。
【0148】
別の例では、コスト関数は、式(15)で説明されているように、水平と垂直のコスト関数、左対角コスト関数、及び右対角コスト関数の最小値であってもよい。
cost=min{costHV,costD1,costD2} (15)
【0149】
上記式(5)と比較すると、本明細書で開示された式(14)又は式(15)のコスト関数は、対角方向に沿ったコスト関数costD1及びcostD2をサポートするために、より多くの隣接ピクセルを必要とする場合があり、これについては、
図16A及び
図16Bを参照して以下でより詳細に説明する。
【0150】
いくつかの実装形態では、各仮説候補に対応するコストは、上記式(14)又は(15)を用いて決定することができる。そして、複数のコストは、複数の仮説候補に対してそれぞれ計算することができる。複数のコストのうちから最小のコストを決定することができる。最小コストに関連する仮説候補は、複数の仮説候補から決定され、符号予測のための仮説として選択することができる。
【0151】
続いて、符号予測プロセス1300は、符号生成動作1108を実行してもよく、この動作では、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせが決定される。例えば、選択された仮説を生成するために用いられる符号候補の組み合わせ(例えば、L個の符号候補)は、L個の変換係数候補の予測された符号として用いることができる。
【0152】
いくつかの実装形態では、符号生成動作1308は、ベクトルベースの符号予測スキームを予測された符号のセットに適用して、変換係数候補のセットの符号シグナリングビットのシーケンスを生成することを含んでもよい。符号シグナリングビットのシーケンスを含むビットストリームは、ビデオエンコーダ20によって生成され、
図1の記憶デバイス32に記憶されてもよい。その代わりに又は更に、ビットストリームは、
図1のリンク16を介して、ビデオデコーダ30に送信されてもよい。
【0153】
上述したように、変換ブロック内の変換係数の符号が適切に予測される場合、複数の連続した変換係数の符号を正しく予測できる可能性が非常に高い。この場合、既存の符号予測設計のシグナリングスキームは、各変換係数の対応する符号が正しく予測できることを個別に示すために、複数のビン「0」をシグナリングする必要があるため、変換ブロックの符号値をシグナリングするためのオーバーヘッドの点で明らかに非効率である。既存の符号予測スキームの例示的な実装形態は、
図15Aを参照して以下でより詳細に説明される。
【0154】
本開示と一致して、符号シグナリングの効率は、本明細書で開示されたベクトルベースの符号予測スキームを適用することにより向上させることができる。具体的には、変換ブロックの変換係数候補は、複数の群に分割することができ、各群内の変換係数候補の符号をまとめて予測することができる。この場合、1群内の変換係数候補の元の符号(又は真の符号)がそれぞれの予測された符号と同じである場合には、群内の全ての符号が正しく予測されたことを示すために、値が「0」であるビンのみは、ビットストリーム内で送信される必要がある。それ以外の場合(即ち、元の符号が予測された符号とは異なる群内に少なくとも1つの変換係数候補が存在する場合)には、群内の変換係数候補の符号が全て正しく予測されたわけではないことを示すために、値が「1」であるビンは、ビットストリーム内で最初にシグナリングすることができる。そして、群内の各予測された符号の対応する正確さを通知するために、ビデオエンコーダ20からビデオデコーダ30へのビットストリーム内で、追加のビンもシグナリングすることができる。本明細書で開示されたベクトルベースの符号予測スキームの例示的な実装形態は、
図15Bを参照して以下でより詳細に説明される。
【0155】
いくつかの実装形態では、変換係数候補のセットは、複数の変換係数候補の群に分割することができる。各変換係数候補群については、1つ以上の符号シグナリングビットは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であるか否かに基づいて、変換係数候補群に対して生成することができる。変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であることに応答して、値が0(「0」)であるビンを生成して、符号シグナリングビットとしてビットストリームに追加することができる。例えば、ビットストリームは、変換係数候補群の予測された符号が正しく予測されたことを示す「0」を含んでもよい。
【0156】
一方、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一ではないことに応答して、値が1(「1」)であるビンを生成することができる。変換係数候補群の予測された符号の対応する正確さを通知するための追加のビンのセットも生成することができる。次に、値が1であるビンと追加のビンのセットとは、符号シグナリングビットとしてビットストリームに追加することができる。例えば、追加のビンのセットは、変換係数候補群の元の符号と予測された符号のXOR結果とすることができる。値が「0」である追加のビンは、追加ビンに対応する変換係数候補の予測された符号が正しく予測されたことを示すことができるが、値が「1」である追加のビンは、追加ビンに対応する変換係数候補の予測された符号が誤って予測されたことを示すことができる。ビットストリームは、(a)変換係数候補群の予測された符号が正しく予測されなかったことを示す「1」と、(b)どの予測された符号が正しく予測され、どの予測された符号が誤って予測されたかを示す追加のビンのセットとを含んでもよい。
【0157】
いくつかの実装形態では、各変換係数候補群のサイズは、1つ以上の所定の基準に基づいて適応的に変更することができる。1つ以上の所定の基準には、変換ブロックの幅又は高さ、変換ブロックの符号化モード(例えば、イントラ符号化又はインター符号化)、及び変換ブロック内の非ゼロ変換係数の数などが含まれてもよい。いくつかの実装形態では、各変換係数候補群のサイズは、SPS、PPS、スライス若しくはピクチャレベル、CTU若しくはCUレベル、又は変換ブロックレベルなどの様々な符号化レベルでビットストリーム内でシグナリングすることができる。
【0158】
いくつかの実装形態では、本明細書で開示されたベクトルベースの符号予測スキームの適用シナリオを限定するために、1つ以上の制約が適用されてもよい。例えば、本明細書で開示されたベクトルベースの符号予測スキームは、変換ブロック内の変換係数の第1部分の符号を処理するために適用することができるが、変換ブロック内の変換係数の第2部分の符号は、既存の符号予測スキームを用いて処理することができる。更なる実施例では、本明細書で開示されたベクトルベースの符号予測スキームは、変換ブロックからの最初のN個(例えば、N=2、3、4、5、6、7、又は8など)の非ゼロ変換係数候補に適用することができるが、変換ブロックを形成する他の変換係数候補の符号は、
図15Aに示す既存の符号予測スキームを用いて処理することができ、これについては本開示で後述する。
【0159】
本開示と一致して、本明細書で開示された符号予測プロセス1100は、いくつかのシナリオで無効にされてもよい。例えば、LFNSTがイントラテンプレートマッチングモードによって符号化される符号化ブロックに適用される場合、一次変換は、DST-VIIとすることができる。ECM内のLFNSTのコア変換は主に、一次変換がDCT-IIである場合にはトレーニングされるとすると、イントラテンプレートマッチングブロックの対応するLFNST変換係数は、他のLFNSTブロックの係数と比較した場合に異なる特性を示す可能性がある。この理論的根拠に基づいて、符号予測プロセス1300は、現在の符号化ブロックがイントラテンプレートマッチングブロックであり、LFNSTを用いて符号化される場合には、無効にされてもよい。
【0160】
本開示と一致して、LFNSTブロックの予測された符号の最大数と非LFNSTブロックの予測された符号の最大数は、符号予測の計算の複雑さを制御するために異なっていてもよい。例えば、LFNSTブロックの予測された符号の最大数は、6(又は4)に設定されてもよいが、非LFNSTブロックの予測された符号の最大数は、6(又は4)とは異なる値を有してもよい。更に、予測された符号の最大数の異なる値は、LFNSTを適用するビデオブロックとLFNSTを適用しないビデオブロックに適用されてもよい。いくつかの実装形態では、ビデオエンコーダ20は、エンコーダの対応する複雑さ又は性能優先順位に基づいて、LFNSTブロックの予測された符号の最大数を決定してもよく、その最大数をビデオデコーダ30にシグナリングしてもよい。LFNSTブロックの予測された符号の最大数は、ビデオデコーダ30にシグナリングされる場合、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、ピクチャ若しくはスライスレベル、又はCTU若しくはCUレベルなどの様々な符号化レベルでシグナリングすることができる。いくつかの実装形態では、ビデオエンコーダ20は、LFNSTを適用するビデオブロックとLFNSTを適用しないビデオブロックの予測された符号の最大数の異なる値を決定し、ビデオエンコーダ20からビデオデコーダ30に最大数の値をシグナリングすることができる。
【0161】
本開示と一致して、一次変換及び二次変換の両方の変換係数が固定されているとすると、ビデオエンコーダ20又はビデオデコーダ30は、異なる変換ブロックサイズ及び一次変換と二次変換の組み合わせの異なる組み合わせに対して、テンプレート(例えば、テンプレートのサンプル)を予め計算することができる。ビデオエンコーダ20又はビデオデコーダ30は、最適化された実装のためにテンプレートのサンプルをオンザフライで生成する複雑さを回避するために、テンプレート(例えば、テンプレートのサンプル)を内部又は外部メモリに記憶することができる。テンプレートのサンプルは、記憶サイズとサンプル精度との間の異なるトレードオフを達成するために、異なる小数精度で記憶されてもよい。例えば、ビデオエンコーダ20又はビデオデコーダ30は、テンプレートの浮動サンプルを固定係数(例えば、64、128又は256)でスケーリングし、スケーリングされたサンプルを最も近い整数に丸めることができる。丸められたサンプルは、メモリに記憶されてもよい。次に、テンプレートを用いて仮説候補を再構成する場合、まず、その対応するサンプルを元の精度にデスケールして、仮説候補で生成されたサンプルが正しいダイナミックレンジ内にあることを保証する。
【0162】
図14は、本開示のいくつかの実装形態に係る、テンプレートの線形結合に基づく例示的な仮説生成を示すグラフィック表現である。
図14では、4つのパターン化されたブロック0~3は、符号が予測される変換係数候補を表す。係数C
0、C
1、C
2、及びC
3は、4つの変換係数候補の逆量子化された変換係数の対応する値を表す。テンプレート0~3は、4つの変換係数候補0~3にそれぞれ対応してもよい。例えば、変換係数候補0に対応するテンプレート0は、変換ブロックに逆二次変換と逆一次変換を適用することにより、生成することができ、この変換ブロック内に、変換係数候補0は、1に設定され、変換ブロック内の残りの変換係数候補は、0に設定される。同様に、テンプレート1~3は、それぞれ生成することができる。仮説候補は、テンプレート0~1と重みC
0~C
3をそれぞれ追加することによって生成することができる。
【0163】
図15Aは、いくつかの実施例に係る、既存の符号予測スキームの例示的な実装形態を示すグラフィック表現である。
図15Bは、本開示のいくつかの実装形態に係る、ベクトルベースの符号予測スキームの例示的な実装形態を示すグラフィック表現である。既存の符号予測スキームと本明細書で開示されたベクトルベースの符号予測スキームとの間の例示的な比較は、
図15A及び
図15Bを参照して本明細書で説明される。
【0164】
図15A及び
図15Bでは、変換ブロックには、符号予測のための変換係数候補として選択される6つの非ゼロ変換係数が存在する。変換係数候補は、ラスタ走査順序を用いて変換ブロックの係数行列から走査される。変換係数候補の元の符号と予測された符号は、
図15A及び
図155Bにも示されている。例えば、値が「-2」である第1変換係数候補の元の符号及び予測された符号は、いずれも「-」である(
図15A及び
図155Bでは「1」と表される)。値が「3」である第2変換係数候補の元の符号及び予測された符号は、いずれも「+」である(
図13A及び
図13Bでは「0」と表される)。値が「1」である第3変換係数候補の元の符号は「+」、予測された符号は「-」である(
図13A及び
図13Bでは、それぞれ「0」、「1」と表される)。第3変換係数候補の元の符号は、誤って予測される。
図15A及び
図15Bに示すように、第3変換係数を除いて、他の全ての変換係数候補の元の符号は、それらの対応する予測された符号と同じである(即ち、正しく予測される)。
【0165】
図15Aに示すように、合計6つのビン(即ち、0、0、1、0、0及び0)が生成され、各ビンは、変換係数候補に対応する。6つのビンは、6つの変換係数候補の元の符号と予測された符号との間でXOR演算を実行することによって生成することができる。6つのビンは、6つの予測された符号の対応する正確さを示すことに用いることができる。例えば、第1ビン及び第2ビンの値が「0」である場合、第1及び第2変換係数候補の予測された符号が正しいことを示す。値が「1」である第3ビンは、第3変換係数の予測された符号が正しくないことを示す。6つのビンは、エントロピー符号化のために、CABACに送信することができる。
【0166】
図15Bに示すように、本明細書で開示されたベクトルベースの符号予測スキームは、6つの変換係数候補を3つの群に分割し、各群は、2つの連続した変換係数候補を含む。群#0及び#2の変換係数候補の符号が正しく予測できるため、この2つの群について、値が「0」であるビンが2つだけ生成される。群#1については、符号が正しく予測できない第3変換係数候補が含まれているため、値が「1」であるビン(
図15Bで下線が引かれている)が生成され、ビットストリーム内でシグナリングされ、この群には、元の符号がその予測された符号とは異なる変換係数候補を少なくとも含むことを示す。続いて、群#1の第3と第4変換係数候補に対して、値が「1」と「0」である2つの追加ビンが生成されて、それらの符号が正しく予測できるか否かを示す。これに対応して、本明細書で開示されたベクトルベースの符号予測スキームが適用される場合、CABACに対して生成される合計5つのビンがあり、それは、
図15Aに示す既存の符号予測スキームによって生成されるビンよりも少ないビットを有する。したがって、本明細書で開示されたベクトルベースの符号予測スキームを適用することにより、シグナリングオーバーヘッドを低減することができ、変換ブロックの符号化効率を向上させることができる。
【0167】
本開示と一致して、
図15Bに示すように、ラスタ走査順序が変換ブロックの係数行列から変換係数候補を取得するために用いられるが、他の走査順序も、符号予測のための変換係数候補を選択するために用いることができる。例えば、変換係数候補は、上述した1つ以上の選択基準に基づいて選択することができる。同様の説明は、本明細書では繰り返さない。
【0168】
図16Aは、本開示のいくつかの実装形態に係る、左対角方向に沿った左対角コスト関数の例示的な計算を示すグラフィック表現である。
図16Bは、本開示のいくつかの実装形態に係る、右対角方向に沿った右対角コスト関数の例示的な計算を示すグラフィック表現である。costHVの計算における上記式(8)と比較すると、上記式(14)又は(15)に示す左対角コスト関数costD1又は右対角コスト関数costD2は、対角方向に沿ったコスト関数costD1及びcostD2の計算をサポートするために、より多くの隣接ピクセルを必要とする場合がある(
図16A及び
図16Bの領域1602、1604及び16606内にマークされたピクセルとして示される)。領域1602、1604及び1606内のこれらのピクセルが利用できない場合、最も近いパディング方法を用いて、これらの利用できない位置を埋めることができる。例えば、領域1606内のB
-1,4が利用できない場合、B
-1、4に最も近い利用できるピクセルであるB
-1、3を用いて、B
-1,4の位置を埋める(例えば、B
-1,4=B
-1,3)。領域1602内のB
-1,-1(C
-1,-1でも示される)、B
-1,-2(C
-1,-1)、B
-2,-1(C
-1,-1)、及びB
-2、-2(C
-1,-1)が利用できない場合、利用できない位置を埋めるためのいくつかの例示的な方法が本明細書で開示される。
【0169】
第1例示的な方法では、下記式(16)~(19)に示すように、各利用できない位置は、その最も近い利用できるピクセルに重みを付けることによって埋めることができる。
B-2,-2=(B-2,0+C0,-2)*0.5 (16)
B-2,-1=(2*B-2,0+C0,-1)/3 (17)
B-1,-2=(B-1,0+2*C0,-2)/3 (18)
B-1,-1=(B-1,0+C0,-1)*0.5 (19)
【0170】
第2例示的な方法では、利用できない位置の一部は、それらの最も近い利用できるピクセルでそれぞれ埋めることができる。例えば、領域1602内のB-1,-2が利用できない場合、それは、C0,-2で埋められる。B-2,-1が利用できない場合、それは、B-2,0で埋められる。しかしながら、B-2,-2とB-1,-1が利用できない場合、上記式(16)及び式(17)に従って計算されたそれらの最も近い隣接するピクセルの平均値で埋めることができる。
【0171】
第3例示的な方法では、利用できる隣接する再構成されたサンプルのみは、コスト関数を計算することに用いられる。現在のブロックの上端/左端の境界に沿った1つの境界サンプルのコスト計算に利用できない再構成されたサンプルが含まれる場合、それらのサンプルは、対応する方向のコストの計算に用いられない。例えば、
図16Bでは、境界サンプルP
0,0、P
0,1、P
1,0及びP
1,0のみは、右上方向のコスト関数の値の計算に用いられるが、P
0,2、P
0,3、P
2,0、及びP
3,0は、コスト計算が利用できない少なくとも1つの参照サンプルを参照するため、用いられない。
【0172】
本開示と一致して、左対角及び右対角(即ち、
図16A及び
図16Bに示される135°及び45°)は、上記式(14)又は(15)に示されるコスト関数の計算において説明の目的で用いられるが、他の測定要素(例えば、1つ以上の任意の方向に沿った連続性の測定)は、符号予測のためのコスト関数の計算に組み込むことができると考えられる。
【0173】
第4実装形態では、1つの現在のブロックの隣接するサンプル間のテクスチャ情報の勾配解析に基づくサンプル外挿方法は、符号予測のためのコスト関数の精度を向上させるために、実装することができる。常に固定の外挿方向(例えば、上記の隣接するサンプルには垂直の外挿、水平に隣接するサンプルには水平の外挿)を用いる代わりに、現在のブロックの上端と左端に隣接する再構成されたサンプルのテクスチャ解析は、エンコーダとデコーダの両方で実行することができ、隣接するサンプルの勾配の最も支配的な方向は、現在のブロックの上端と左端の境界に沿った境界サンプルを外挿するために選択することができる。
【0174】
例えば、
図17は、本開示のいくつかの実装形態に係る、現在のブロックの隣接する再構成されたサンプル内の支配的な勾配方向を捉える方法1700のフローチャートである。方法1700は、ビデオエンコーダ20又はビデオデコーダ30に関連するビデオプロセッサにより実装されてもよく、以下に説明されるステップ1702~1712を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図17に示す順序とは異なる順序で実行されてもよい。
【0175】
ステップ1702では、勾配導出のために現在のブロックの参照サンプルを選択する。いくつかの実装形態では、参照サンプルがテンプレートを形成する。例えば、
図18Aは、本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的なテンプレートサンプルと勾配フィルタウィンドウを示すグラフィック表現である。
図18Aに示すように、現在のブロックの上端及び左端に隣接する再構成されたサンプルのN行及び列のテンプレートは、勾配導出のための参照サンプルとして用いられる。
図18Aの例では、テンプレートのサイズは、3に等しい。
【0176】
ステップ1704では、勾配のヒストグラム(HoG)を初期化する。例えば、HoGは、多数のエントリを用いて生成することができ、勾配のヒストグラムの各エントリは、所定の角度方向における勾配の累積強度に対応する。各エントリは、0として初期化することができる。例えば、
図18Bは、本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的な勾配のヒストグラム(HoG)を示すグラフィック表現である。実際には、開示された勾配解析スキームでは、異なる所定の方向が用いられてもよい。一実施形態では、VVC/ECMにおける通常のイントラ予測の65個の角度方向に対して定義されたのと同じ方向が用いられる。
【0177】
ステップ1706では、勾配フィルタウィンドウを参照サンプルに適用してそれぞれの勾配を計算する。
図18Aに示すように、1つのN×Nの勾配フィルタウィンドウをテンプレートの中央の行/列にある各テンプレートサンプルに適用して(即ち、フィルタウィンドウがサンプル位置の中心にある)、その対応する水平勾配G
hと垂直勾配G
vをそれぞれ計算する。
【0178】
ステップ1708では、各参照サンプルの勾配の角度(Angle)と強度(Amp)を計算する。例えば、式(20)及び式(21)により、サンプルの勾配を計算することができる。
【数15】
Amp=|Gh|+|Gv| (21)
【0179】
ステップ1710では、勾配の角度を1つの所定の方向に変換し、HoG内の対応するエントリを更新することができる。例えば、
図18に示すように、各角度のHoGの振幅は、その角度のサンプル勾配の強度(Amp)を加算することにより更新される。その結果、振幅は、累積強度となる。
【0180】
ステップ1712では、最大の累積強度を有するHoGのエントリを選択して、現在のブロックのコスト関数の、隣接するサンプルを外挿するために用いられる方向とする。例えば、
図18に示すように、最大のエントリは、丸で囲まれている。
【0181】
上記の方法では、最大の強度を有する方向は、サンプル外挿方向として選択される。このような方法は、何らかのノイズ(例えば、他の符号化モジュールによって引き起こされる量子化誤差及び/又は符号化ノイズ)がある場合、必ずしも信頼できるとは限らない。このような問題を解決するために、特定の条件は、支配的な勾配方向を外挿方向として採用する前に適用することができる。
【0182】
例えば、1つの実装形態では、選択された支配的な勾配方向は、選択された勾配方向に属する十分なテンプレートサンプルがある場合(例えば、選択された方向に属するサンプルの割合が、所定の閾値を超えるなど十分に大きい場合)にのみ、コスト関数の計算におけるサンプル外挿に対して有効にされてもよい。それ以外の場合(例えば、選択された方向に属するテンプレートサンプルの数が十分でない場合)、デフォルトの外挿(例えば、上端に隣接するサンプルの垂直外挿及び左端に隣接するサンプルの水平外挿)が依然として適用される。
【0183】
別の実装形態では、選択された支配的な勾配方向は、その支配的な勾配方向に関連する勾配の強度が十分に大きい場合(例えば、選択された勾配方向の強度と全ての勾配方向の強度の和との比が別の所定の閾値よりも大きい場合)にのみ、コスト関数の計算におけるサンプル外挿に対して有効にされてもよい。それ以外の場合(例えば、選択された方向の勾配の強度が有意でない場合)、デフォルトの外挿が依然として適用される。
【0184】
更に別の実装形態では、上記の制約が共に適用される。即ち、選択された方向は、選択された方向に関連するテンプレートサンプルの数が十分に大きく、勾配の強度が十分に大きい場合にのみ、現在のブロックのサンプル外挿に対して有効になる。それ以外の場合は、デフォルトの外挿は、依然として適用される。
【0185】
更に別の実装形態では、選択された支配的な勾配方向が有効である場合、1つのブロック内の符号を予測するとき、選択された方向に直交する方向は、コスト関数の計算におけるサンプル外挿に用いられる。例えば、選択された方向が45度である場合、現在のブロックの上端及び下端の境界に沿ったサンプルを外挿する方向として、135度が用いられる。同様に、選択された方向が135度である場合、現在のブロックの上端と左端の境界に沿ったサンプルを外挿する方向として、45度が用いられる。
【0186】
図19は、本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測方法1900のフローチャートである。方法1900は、ビデオエンコーダ20又はビデオデコーダ30に関連するビデオプロセッサにより実装されてもよく、以下に説明されるステップ1802~1808を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図19に示す順序とは異なる順序で実行されてもよい。
【0187】
ステップ1902では、ビデオプロセッサは、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することができる。
【0188】
ステップ1904では、ビデオプロセッサは、符号予測のために、変換係数から変換係数候補のセットを選択することができる。
【0189】
ステップ1906では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することができる。
【0190】
ステップ1908では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
本開示と一致して、方法1500及び
図15は、ビデオエンコーダ側又はビデオデコーダ側で実行されてもよい。方法1500は、ビデオエンコーダ側で実行される場合、ビデオエンコーダ側での変換係数の符号予測のための符号化方法として考慮されてもよい。方法1500は、ビデオデコーダ側で実行される場合、ビデオデコーダ側での変換係数の符号予測のための復号方法として考慮されてもよい。ビデオデコーダ側での変換係数の符号予測のための例示的な符号化方法及び例示的な復号方法は、それぞれ、
図20及び
図21を参照して以下に提供される。
【0191】
図20は、本開示のいくつかの実装形態に係る、ビデオエンコーダによって実行される変換係数の符号予測のための例示的なビデオ符号化方法2000のフローチャートである。方法2000は、ビデオエンコーダ20に関連するビデオプロセッサによって実装されてもよく、以下に説明されるステップ2002~2018を含んでもよい。具体的には、方法2000のステップ2006~2012は、方法1900のステップ1906の例示的な実装形態として実行されてもよい。一部のステップは、本明細書で提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図20に示す順序とは異なる順序で実行されてもよい。
【0192】
ステップ2002では、ビデオプロセッサは、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することができる。
【0193】
ステップ2004では、ビデオプロセッサは、符号予測のために、変換係数から変換係数候補のセットを選択することができる。
【0194】
ステップ2006では、ビデオプロセッサは、変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定することができる。
【0195】
ステップ2008では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対してそれぞれ複数の仮説候補を生成することができる。
【0196】
ステップ2010では、ビデオプロセッサは、変換ブロックの隣接するサンプルの外挿のための支配的な勾配方向を捉えることができる。例えば、ビデオプロセッサは、上記の
図17に関連して説明したように、支配的な勾配方向を捉える方法1700を実行することができる。
【0197】
ステップ2012では、ビデオプロセッサは、支配的な勾配方向に基づいて隣接するサンプルを外挿するコスト関数に基づいて、複数の仮説候補から最小コストに関連する仮説を選択することができる。いくつかの実装形態では、上述したように、支配的な勾配方向は、コスト関数を計算する目的で外挿方向として採用される前に、特定の条件を満たさなければならない。ビデオプロセッサは、これらの条件が満たされたか否かを判定することができる。そうである場合、隣接するサンプルの外挿は、コスト関数を計算する際に、支配的な勾配方向に沿って実行することができる。それ以外の場合、デフォルトの外挿方向(例えば、上端に隣接するサンプルの垂直外挿及び左端に隣接するサンプルの水平外挿)を用いることができる。
【0198】
ステップ2014では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
【0199】
ステップ2016では、ビデオプロセッサは、ベクトルベースの符号予測スキームを予測された符号のセットに適用して、変換係数候補のセットの符号シグナリングビットのシーケンスを生成することができる。
【0200】
ステップ2018では、ビデオプロセッサは、符号シグナリングビットのシーケンスを含むビットストリームを生成することができる。
【0201】
図21は、本開示のいくつかの実装形態に係る、ビデオデコーダによって実行される変換係数の符号予測のための例示的なビデオ復号方法2100のフローチャートである。方法2100は、ビデオデコーダ30に関連するビデオプロセッサによって実装されてもよく、以下に説明されるステップ2102~2116を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図21に示す順序とは異なる順序で実行されてもよい。
【0202】
ステップ2102では、ビデオプロセッサは、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択することができる。逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。ビデオデコーダ30における変換ブロックの逆量子化された変換係数は、ビデオエンコーダ20における変換ブロックの変換係数と等しくてもよい。
【0203】
いくつかの実装形態では、ビデオプロセッサは、符号シグナリングビットのシーケンスと、変換ブロックに関連する量子化された変換係数とを含むビットストリームを受信することができる。ビデオプロセッサは、
図3の逆量子化ユニット86を通じて、量子化された変換係数から逆量子化された変換係数を生成することができる。
【0204】
いくつかの実装形態では、ビデオプロセッサは、逆量子化された変換係数の強度に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。いくつかの実装形態では、ビデオプロセッサは、逆量子化された変換係数の量子化インデックスの強度に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。いくつかの実装形態では、ビデオプロセッサは、ビデオ符号化に適用されるエントロピー符号化の係数走査順序に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。
【0205】
いくつかの実装形態では、ビデオプロセッサは、変換ブロックの再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアに基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。例えば、再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアは、再構成された辺縁サンプルに対する各逆量子化された変換係数の変動のL1ノルムとして測定される。別の実施例では、再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアは、再構成された辺縁サンプルに対する各逆量子化された変換係数の変動のL2ノルムとして測定される。
【0206】
いくつかの実装形態では、ビデオプロセッサは、
図11の係数選択動作1104を参照して上述したような動作を実行して、逆量子化された変換係数から変換係数候補のセットを選択することができる。また、ビデオプロセッサは、
図19のステップ1904について上述したような動作を実行して、逆量子化された変換係数から変換係数候補のセットを選択することができる。同様の説明は、本明細書では繰り返さない。
【0207】
ステップ2104では、ビデオプロセッサは、変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定することができる。
【0208】
ステップ2106では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対してそれぞれ複数の仮説候補を生成することができる。
【0209】
ステップ2108では、ビデオプロセッサは、変換ブロックの隣接するサンプルの外挿のための支配的な勾配方向を捉えることができる。例えば、ビデオプロセッサは、上記の
図17に関連して説明したように、支配的な勾配方向を捉える方法1700を実行することができる。
【0210】
ステップ2110では、ビデオプロセッサは、支配的な勾配方向に基づいて隣接するサンプルを外挿するコスト関数に基づいて、複数の仮説候補から最小コストに関連する仮説を選択することができる。
【0211】
いくつかの実装形態では、支配的な勾配方向に沿ったサンプル外挿を用いるコスト関数に基づいて仮説を選択する方法2100のステップ2104~2110を実行するために、ビデオプロセッサは、方法2000のステップ2006~2012を参照して上述したような動作を実行することができる。
【0212】
ステップ2112では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
【0213】
いくつかの実装形態では、ビデオプロセッサは、
図11の符号生成動作1108を参照して上述したような動作を実行することができる。また、ビデオプロセッサは、
図19のステップ1908について上述したような動作を実行して、変換係数候補のセットの予測された符号のセットを決定することができる。同様の説明は、本明細書では繰り返さない。
【0214】
ステップ2114では、ビデオプロセッサは、予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、変換係数候補のセットの元の符号を推定することができる。
【0215】
例えば、
図15Bを参照して、予測された符号のセットは、値が(1,0)である群#0と、値が(1,0)である群#2と、値が(1,0)である群#3とを含んでもよく、ここで、1は、負の符号を示し、0は、正の符号を示す。符号シグナリングビットのシーケンスは、群#0のビット「0」、群#2のビット「1,1,0」、及び群#3のビット「0」を含んでもよい。群#0のビットは、値「0」を有し、この群の値(1,0)を有する予測された符号が元の符号と同じであることを示すため、(1,0)となる群#0の推定された元の符号が決定される。群#1のビットの第1ビットは、値「1」を有し、この群の予測された符号(1,0)が元の符号と同じではないことを示すため、この群の予測された符号(1,0)と、群#1の第2ビット及び第3ビット「1,0」とのXOR結果(例えば、推定された元の符号=XOR((1,0),(1,0))=(0,0))となる群#1の推定された元の符号(1,0)が決定される。群#2のビットは、値「0」を有し、この群の値(1,0)を有する予測された符号が元の符号と同じであることを示すため、(1,0)となる群#2の推定された元の符号が決定される。したがって、変換係数候補のセットの推定された元の符号は、それぞれ、群#0、#1及び#2の推定された元の符号を連結することにより形成され、これには、(1,0,0,0,1,0)を含む。
【0216】
ステップ2116では、ビデオプロセッサは、変換係数候補のセットの推定された元の符号に基づいて、逆量子化された変換係数を更新することができる。例えば、ビデオプロセッサは、推定された元の符号を、変換係数候補のセットに対応する変換ブロック内の逆量子化された変換係数の真の符号として用いることができる。
【0217】
いくつかの実装形態では、逆量子化された変換係数が更新された後、ビデオプロセッサは、更に、逆量子化された変換係数に逆一次変換及び逆二次変換を適用して、変換ブロックに対応する残差ブロック内に残差サンプルを生成することができる。逆二次変換は、LFNSTを含む二次変換に相当する。逆一次変換は、DCT-II、DCT-V、DCT-VIII、DST-I、DST-IV、DST-VII又は恒等変換を含む一次変換に相当する。
【0218】
いくつかの実装形態では、変換係数候補のセットの符号シグナリングビットのシーケンスは、ベクトルベースの符号予測スキームを、ビデオエンコーダによって、ビデオエンコーダ側で選択された別の変換係数候補のセットの別の予測された符号のセットに適用し、符号シグナリングビットのシーケンスを含むビットストリームを生成することにより、ビデオエンコーダによって生成される。他の変換係数候補のセットは、ビデオデコーダ側の変換係数候補のセットに対応するビデオエンコーダ側の変換係数である。
【0219】
いくつかの実装形態では、ベクトルベースの符号予測スキームを、他の変換係数候補のセットの他の予測された符号のセットに適用することは、他の変換係数候補のセットを複数の変換係数候補群に分割することと、各変換係数候補群については、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であるか否かに基づいて、変換係数候補群の1つ以上の符号シグナリングビットを生成することとを更に含む。
【0220】
いくつかの実装形態では、変換係数候補群の1つ以上の符号シグナリングビットを生成することは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であることに応答して、値が0であるビンを生成することと、このビンを符号シグナリングビットとしてビットストリームに追加することとを含む。
【0221】
いくつかの実装形態では、変換係数候補群の1つ以上の符号シグナリングビットを生成することは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一ではないことに応答して、値が1であるビンを生成することと、変換係数候補群の予測された符号の対応する正確さを通知するための追加のビンのセットを生成することと、このビンと追加のビンのセットとを符号シグナリングビットとしてビットストリームに追加することとを含む。
【0222】
図22は、本開示のいくつかの実装形態に係る、ユーザインタフェース2250に結合されるコンピューティング環境2210を示す。コンピューティング環境2210は、データ処理サーバの一部であってもよい。例えば、上述したビデオエンコーダ20又はビデオデコーダ30におけるビデオプロセッサは、コンピューティング環境2210を用いて実装することができる。コンピューティング環境2210は、プロセッサ2220と、メモリ2230と、入力/出力(I/O)インタフェース2240とを含む。
【0223】
プロセッサ2220は、典型的に、ディスプレイ、データ取得、データ通信、及び画像処理に関連する動作などの、コンピューティング環境2210の全体的な動作を制御する。プロセッサ2220は、上述した方法のステップの全部又は一部を実行する命令を実行するための1つ以上のプロセッサを含んでもよい。また、プロセッサ2220は、プロセッサ2220と他の構成要素との間のインタラクションを容易にする1つ以上のモジュールを含んでもよい。プロセッサ2220は、中央処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、グラフィック処理装置(GPU)などであってもよい。
【0224】
メモリ2230は、コンピューティング環境2210の動作をサポートするために、様々なタイプのデータを記憶するように構成される。メモリ2230は、所定のソフトウェア2232を含んでもよい。そのようなデータの例として、コンピューティング環境2210で動作する任意のアプリケーション又は方法のための命令、ビデオデータセット、画像データなどが挙げられる。メモリ2230は、静的ランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク又は光ディスクなどの任意のタイプの揮発性若しくは不揮発性メモリデバイス、又はそれらの組み合わせを使用することにより実装されてもよい。
【0225】
I/Oインタフェース2240は、プロセッサ2220と、キーボード、クリックホイール、ボタンなどのペリフェラルインタフェースモジュールとの間のインタフェースを提供する。ボタンは、ホームボタン、走査開始ボタン及び走査停止ボタンを含んでもよいが、これらに限定されない。I/Oインタフェース2240は、エンコーダ及びデコーダに結合することができる。
【0226】
いくつかの実装形態では、上述した方法を実行するための、コンピューティング環境2210内のプロセッサ2220によって実行可能な、例えばメモリ2230内の複数のプログラムを含む非一時的コンピュータ可読記憶媒体も提供される。その代わりに、非一時的コンピュータ可読記憶媒体は、例えば、ビデオデータの復号においてデコーダ(例えば、
図3におけるビデオデコーダ30)により使用された上記符号化方法を使用して、エンコーダ(例えば、
図2におけるビデオエンコーダ20)により生成された符号化されたビデオ情報(例えば、1つ以上の構文要素を含むビデオ情報)を含むビットストリーム又はデータストリームが記憶されてもよい。非一時的コンピュータ可読記憶媒体は、例えば、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、光データ記憶デバイスなどであってもよい。
【0227】
いくつかの実装形態では、1つ以上のプロセッサ(例えば、プロセッサ2220)と、当該1つ以上のプロセッサによって実行可能な複数のプログラムが記憶されている非一時的コンピュータ可読記憶媒体又はメモリ2230とを含むコンピューティングデバイスも提供され、当該1つ以上のプロセッサは、複数のプログラムを実行すると、上述した方法を実行するように構成される。
【0228】
いくつかの実装形態では、上述した方法を実行するための、コンピューティング環境2210内のプロセッサ2220によって実行可能な、例えばメモリ2230内の複数のプログラムを含むコンピュータプログラム製品も提供される。例えば、コンピュータプログラム製品は、非一時的コンピュータ可読記憶媒体を含んでもよい。
【0229】
いくつかの実施形態では、コンピューティング環境2210は、上記方法を実行するために、1つ以上のASIC、DSP、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、FPGA、GPU、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子コンポーネントを使用して実装されてもよい。
【0230】
本開示の説明は、例示を目的として提示されたものであり、本開示を網羅したり限定したりすることを意図したものではない。前述の説明及び関連する図面に提示された教示の恩恵を受ける当業者にとって、多くの修正、変形、及び代替の実装形態が明らかとなるであろう。
【0231】
特に明記しない限り、本開示に係る方法のステップの順序は、例示を意図するものに過ぎず、本開示に係る方法のステップは、具体的に上述した順序に限定されず、実際の条件に応じて変更されてもよい。また、本開示に係る方法のステップのうちの少なくとも1つのステップは、実際の必要に応じて調整されてもよく、組み合わせられてもよく、削除されてもよい。
【0232】
実施例は、本開示の原理を説明し、他の当業者が様々な実装形態について本開示を理解し、意図される特定の使用に適した様々な修正を伴う基礎となる原理及び様々な実装形態を最適に利用することを可能にするために選択され、説明された。したがって、本開示の範囲は、開示された実装形態の具体例に限定されるべきではなく、修正及び他の実装形態は、本開示の範囲内に含まれることが意図されることを理解されたい。
【手続補正書】
【提出日】2024-05-07
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本願は、2021年9月15日に提出された米国仮出願第63/244,317号、及び2021年9月30日に提出された米国仮出願第63/250,797号に基づくものであり、それらの優先権を主張する。本願は、2022年8月16日に提出されたPCT出願番号PCT/US22/40442に基づくものであり、その優先権を主張し、更に2021年8月17日に提出された米国仮出願第63/233,940号の優先権を主張する。上記全ての出願の内容は、それらの全体が参照により本明細書に組み込まれる。
【技術分野】
【0002】
本願は、ビデオ符号化及び圧縮に関する。より詳細には、本願は、ブロックベースのビデオ符号化における符号予測のためのビデオ処理システム及び方法に関する。
【背景技術】
【0003】
デジタルビデオは、デジタルテレビ、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、テレビ会議デバイス、ビデオストリーミングデバイスなどの様々な電子デバイスによりサポートされている。電子デバイスは、通信ネットワークを介してデジタルビデオデータを送受信するか又は通信し、及び/又はデジタルビデオデータを記憶デバイスに記憶する。通信ネットワークの帯域幅容量及び記憶デバイスのメモリリソースが限られているため、ビデオ符号化は、ビデオデータを通信又は記憶する前にビデオデータを1つ以上のビデオ符号化標準に従って圧縮するために使用されてもよい。例えば、ビデオ符号化標準は、多用途ビデオ符号化(VVC)、共同探索テストモデル(JEM)、高効率ビデオ符号化(HEVC/H.265)、先進ビデオ符号化(AVC/H.264)、動画専門家委員会(MPEG)符号化などを含む。ビデオ符号化は、一般に、ビデオデータに固有の冗長性を利用する予測方法(例えば、インター予測、イントラ予測など)を利用する。ビデオ符号化は、ビデオ品質の劣化を回避又は最小限に抑えながら、ビデオデータを、より低いビットレートを使用する形式に圧縮することを目的とする。
【発明の概要】
【0004】
本開示の実装形態は、ビデオデコーダ側での変換係数の符号予測のためのビデオ復号方法を提供する。前記ビデオ復号方法は、1つ以上のプロセッサによって、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含んでもよい。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを更に含んでもよい。前記ビデオ復号方法は、前記1つ以上のプロセッサによって、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを更に含んでもよい。
【0005】
本開示の実装形態は、ビデオデコーダ側での変換係数の符号予測のためのビデオ復号装置も提供する。前記ビデオ復号装置は、複数のビデオフレームを含むビデオを記憶するように構成されたメモリと、前記メモリに結合された1つ以上のプロセッサとを含んでもよい。前記1つ以上のプロセッサは、前記変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するように構成されてもよい。前記逆量子化された変換係数は、前記ビデオからのビデオフレームの変換ブロックに関連する。前記1つ以上のプロセッサは、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するように更に構成されてもよい。前記1つ以上のプロセッサは、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するように更に構成されてもよい。前記1つ以上のプロセッサは、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するように更に構成されてもよい。前記1つ以上のプロセッサは、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するように更に構成されてもよい。
【0006】
本開示の実装形態は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサにビデオデコーダ側での変換係数の符号予測のためのビデオ復号方法を実行させる命令が記憶されている非一時的コンピュータ可読記憶媒体も提供する。前記ビデオ復号方法は、前記符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含んでもよい。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ復号方法は、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを更に含んでもよい。前記ビデオ復号方法は、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを更に含んでもよい。前記ビデオ復号方法は、前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを更に含んでもよい。前記ビデオ復号方法は、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを更に含んでもよい。前記ビットストリームは、前記非一時的コンピュータ可読記憶媒体に記録されている。
【0007】
本開示の実装形態は、ビデオ復号化方法によって復号可能なビットストリームが記憶されている非一時的コンピュータ可読記憶媒体も提供する。前記ビデオ復号化方法は、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択するステップを含む。前記逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。前記ビデオ復号化方法は、テンプレートベースの仮説生成スキームを適用して、前記変換係数候補のセットの複数の仮説候補から1つの仮説を選択するステップを含む。前記ビデオ復号化方法は、前記変換係数候補のセットの予測された符号のセットとなる前記選択された仮説に関連する符号候補の組み合わせを決定するステップを含む。前記ビデオ復号化方法は、前記予測された符号のセットと、ビデオエンコーダからビットストリームを通じて受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップを含む。前記ビデオ復号化方法は、前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップを含む。
【0008】
前述の一般的な説明と以下の詳細な説明は、いずれも単なる例であり、本開示を限定するものではないことを理解されたい。
【図面の簡単な説明】
【0009】
本明細書に組み込まれ、その一部を構成する添付図面は、本開示と一致する実施例を示しており、説明とともに、本開示の原理を説明する役割を果たす。
【0010】
【
図1】本開示のいくつかの実装形態に係る、ビデオブロックを符号化及び復号する例示的なシステムを示すブロック図である。
【
図2】本開示のいくつかの実装形態に係る、例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示のいくつかの実装形態に係る、例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4B】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4C】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4D】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図4E】本開示のいくつかの実装形態に係る、フレームがどのように異なるサイズ及び形状の複数のビデオブロックに再帰的に分割されるかを示すグラフィック表現である。
【
図5】いくつかの実施例に係る、係数群内の変換係数の左上の走査順序を示すグラフィック表現である。
【
図6】いくつかの実施例に係る、低周波非分離変換(LFNST)プロセスを示すグラフィック表現である。
【
図7】いくつかの実施例に係る、順LFNSTに入力される一次変換係数の左上の領域を示すグラフィック表現である。
【
図8】いくつかの実施例に係る、イントラテンプレートマッチングの探索領域を示すグラフィック表現である。
【
図9】いくつかの実施例に係る、符号予測の例示的なプロセスを示すグラフィック表現である。
【
図10】いくつかの実施例に係る、符号予測のためのコスト関数の計算を示すグラフィック表現である。
【
図11】いくつかの実施例に係る、依存スカラー量子化に用いられる2つの例示的なスカラー量子化器を示すグラフィック表現である。
【
図12A】いくつかの実施例に係る、依存スカラー量子化に用いられる4つの状態を有する状態マシンを用いる状態遷移を示すグラフィック表現である。
【
図12B】いくつかの実施例に係る、
図12Aの状態遷移に応じた例示的な量子化器の選択を示す表である。
【
図13】本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測プロセスを示すブロック図である。
【
図14】本開示のいくつかの実装形態に係る、テンプレートの線形結合に基づく例示的な仮説生成を示すグラフィック表現である。
【
図15A】いくつかの実施例に係る、既存の符号予測スキームの例示的な実装形態を示すグラフィック表現である。
【
図15B】本開示のいくつかの実装形態に係る、ベクトルベースの符号予測スキームの例示的な実装形態を示すグラフィック表現である。
【
図16A】本開示のいくつかの実装形態に係る、左対角方向に沿った左対角コスト関数の例示的な計算を示すグラフィック表現である。
【
図16B】本開示のいくつかの実装形態に係る、右対角方向に沿った右対角コスト関数の例示的な計算を示すグラフィック表現である。
【
図17】本開示のいくつかの実装形態に係る、現在のブロックの隣接する再構成されたサンプル内の支配的な勾配方向を捉える方法のフローチャートである。
【
図18A】本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的なテンプレートサンプルと勾配フィルタウィンドウを示すグラフィック表現である。
【
図18B】本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的な勾配のヒストグラム(HoG)を示すグラフィック表現である。
【
図19】本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測方法のフローチャートである。
【
図20】本開示のいくつかの実装形態に係る、ビデオエンコーダによって実行される変換係数の符号予測のための例示的なビデオ符号化方法のフローチャートである。
【
図21】本開示のいくつかの実装形態に係る、ビデオデコーダによって実行される変換係数の符号予測のための例示的なビデオ復号方法のフローチャートである。
【
図22】本開示のいくつかの実装形態に係る、ユーザインタフェースに結合されるコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【0011】
具体的な実装形態を詳細に参照し、それらの実施例を添付図面に示す。以下の詳細な説明では、本明細書に示される主題の理解を助けるために、多数の非限定的で具体的な詳細が示されている。しかしながら、特許請求の範囲を逸脱しない範囲で、様々な代替実施形態を使用することができ、それらの具体的な詳細なしで主題を実施することができることが当業者には明らかであろう。例えば、本明細書に示される主題は、デジタルビデオ機能を有する複数のタイプの電子デバイスに実装可能であることが当業者には明らかであろう。
【0012】
本開示の明細書及び特許請求の範囲と、添付図面とで使用される「第1」、「第2」などの用語は、対象を区別するために使用されるものであり、任意の具体的な順番又は順序を説明するために使用されるものではないことを理解されたい。このように使用されるデータは、適切な条件で置き換えが可能であり、これにより、添付図面に示されるか又は本開示に説明された以外の順番で、本明細書に説明される本開示の実施形態を実施することができることを理解されたい。
【0013】
図1は、本開示のいくつかの実装形態に係る、ビデオブロックの符号化及び復号を並列に行う例示的なシステム10を示すブロック図である。
図1に示すように、システム10は、宛先デバイス14によって後で復号されるビデオデータを生成して符号化するソースデバイス12を含む。ソースデバイス12及び宛先デバイス14は、デスクトップ又はラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む多種多様な電子デバイスのいずれかを含んでもよい。いくつかの実装形態では、ソースデバイス12及び宛先デバイス14は、無線通信機能を備える。
【0014】
いくつかの実装形態では、宛先デバイス14は、リンク16を介して、復号される符号化されたビデオデータを受信してもよい。リンク16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に転送することが可能な任意のタイプの通信媒体又はデバイスを含んでもよい。一実施例では、リンク16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムに直接送信できるようにする通信媒体を含んでもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信標準に従って変調され、宛先デバイス14に送信されてもよい。通信媒体は、無線周波数(RF)スペクトル又は1つ以上の物理伝送線などの、任意の無線又は有線通信媒体を含んでもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどのパケットベースのネットワークの一部を構成してもよい。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含んでもよい。
【0015】
いくつかの他の実装形態では、符号化されたビデオデータは、出力インタフェース22から記憶デバイス32に送信されてもよい。その後、記憶デバイス32内の符号化されたビデオデータは、入力インタフェース28を介して宛先デバイス14によってアクセスされてもよい。記憶デバイス32は、ハードドライブ、ブルーレイディスク、デジタルバーサタイルディスク(DVD)、コンパクトディスク読み取り専用メモリ(CD-ROM)、フラッシュメモリ、揮発性又は不揮発性メモリ、又は符号化されたビデオデータを記憶する任意の他の適切なデジタル記憶媒体などの、分散型又はローカルにアクセスされる様々なデータ記憶媒体のいずれかを含んでもよい。更なる実施例では、記憶デバイス32は、ソースデバイス12によって生成された符号化されたビデオデータを記憶し得るファイルサーバ又は別の中間記憶デバイスに対応してもよい。宛先デバイス14は、ストリーミング又はダウンロードを介して、記憶デバイス32からの記憶されたビデオデータにアクセスしてもよい。ファイルサーバは、符号化されたビデオデータを記憶するとともに、符号化されたビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、又はローカルディスクドライブを含む。宛先デバイス14は、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した無線チャネル(例えば、Wi-Fi(Wireless Fidelity)接続)、有線接続(例えば、DSL(Digital Subscriber Line、デジタル加入者線)、ケーブルモデムなど)、又はそれらの任意の組み合わせを含む任意の標準データ接続を通じて、符号化されたビデオデータにアクセスしてもよい。記憶デバイス32からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又はそれらの組み合わせであってもよい。
【0016】
図1に示すように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、及び出力インタフェース22を含む。ビデオソース18は、ビデオキャプチャデバイス、例えば、ビデオカメラ、前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するビデオフィードインタフェース、及び/又はソースビデオとしてコンピュータグラフィックデータを生成するコンピュータグラフィックシステムなどのソース、又は、それらのソースの組み合わせを含んでもよい。一実施例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソースデバイス12及び宛先デバイス14は、カメラフォン又はビデオフォンを含んでもよい。しかしながら、本開示に記載された実装形態は、一般にビデオ符号化に適用可能であってもよく、無線及び/又は有線アプリケーションに適用可能であってもよい。
【0017】
キャプチャされたビデオ、予めキャプチャされたビデオ、又はコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化されてもよい。符号化されたビデオデータは、ソースデバイス12の出力インタフェース22を介して、宛先デバイス14に直接送信されてもよい。符号化されたビデオデータはまた(又はその代わりに)、宛先デバイス14又は他のデバイスによって後でアクセスされて、復号及び/又は再生されるように、記憶デバイス32に記憶されてもよい。出力インタフェース22は、モデム及び/又は送信機を更に含んでもよい。
【0018】
宛先デバイス14は、入力インタフェース28、ビデオデコーダ30、及びディスプレイデバイス34を含む。入力インタフェース28は、受信機及び/又はモデムを含み、リンク16を介して符号化されたビデオデータを受信してもよい。リンク16を介して通信されるか又は記憶デバイス32に提供される符号化されたビデオデータは、ビデオデコーダ30によるビデオデータの復号に用いられる、ビデオエンコーダ20が生成した様々な構文要素を含んでもよい。そのような構文要素は、通信媒体に送信されるか、記憶媒体に記憶されるか、又はファイルサーバに記憶される符号化されたビデオデータ内に含まれてもよい。
【0019】
いくつかの実装形態では、宛先デバイス14は、一体化されたディスプレイデバイス、及び宛先デバイス14と通信するように構成された外部ディスプレイデバイスであり得るディスプレイデバイス34を含んでもよい。ディスプレイデバイス34は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのいずれかを含んでもよい。
【0020】
ビデオエンコーダ20及びビデオデコーダ30は、例えば、VVC、HEVC、MPEG-4、Part 10、AVCなどの独自又は業界標準に従って動作してもよく、それらの標準の拡張に従って動作してもよい。本開示は、特定のビデオ符号化/復号標準に限定されず、他のビデオ符号化/復号標準にも適用可能であることを理解されたい。一般に、ソースデバイス12のビデオエンコーダ20は、これらの現在又は将来のいずれかの標準に従ってビデオデータを符号化するように構成されてもよいことが考えられる。同様に、宛先デバイス14のビデオデコーダ30は、これらの現在又は将来のいずれかの標準に従ってビデオデータを復号するように構成されてもよいことも一般に考えられる。
【0021】
ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせなどの様々な適切なエンコーダ及び/又はデコーダ回路のいずれかとして実装されてもよい。電子デバイスは、ソフトウェアで部分的に実装される場合には、ソフトウェアの命令を適切な非一時的コンピュータ可読媒体に記憶し、1つ以上のプロセッサを使用してハードウェアで命令を実行して、本開示で開示されるビデオ符号化/復号動作を実行してもよい。ビデオエンコーダ20及びビデオデコーダ30のそれぞれは、1つ以上のエンコーダ又はデコーダに含まれてもよく、そのいずれも、組み合わせたエンコーダ/デコーダ(CODEC)の一部としてそれぞれのデバイス内に統合されてもよい。
【0022】
図2は、本願で説明されるいくつかの実装形態に係る、例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化及びインター予測符号化を実行することができる。イントラ予測符号化は、空間予測に依存して、所与のビデオフレーム又はピクチャ内のビデオデータの空間冗長性を削減又は除去する。インター予測符号化は、時間予測に依存して、ビデオシーケンスの隣接するビデオフレーム又はピクチャ内のビデオデータの時間冗長性を削減又は除去する。なお、「フレーム」という用語は、ビデオ符号化の分野では、「画像」又は「ピクチャ」という用語の同義語として使用されてもよい。
【0023】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号ピクチャバッファ(DPB)64、加算器50、変換処理ユニット52、量子化ユニット54、及びエントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット42、動き補償ユニット44、分割ユニット45、イントラ予測処理ユニット46、及びイントラブロックコピー(BC)ユニット48を更に含む。いくつかの実装形態では、ビデオエンコーダ20は、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構成のための加算器62も含む。デブロッキングフィルタなどのインループフィルタ63は、加算器62とDPB64との間に配置されて、ブロック境界をフィルタリングして、再構成されたビデオデータからブロック歪みを除去することができる。加算器62の出力をフィルタリングするために、デブロッキングフィルタに加えて、SAOフィルタ及び/又は適応インループフィルタ(ALF)などの別のインループフィルタが使用されてもよい。いくつかの実施例では、インループフィルタは、省略されてもよく、復号されたビデオブロックは、加算器62によってDPB64に直接提供されてもよい。ビデオエンコーダ20は、固定又はプログラマブルハードウェアユニットの形態をとってもよく、図示された固定又はプログラマブルハードウェアユニットの1つ以上に分割されてもよい。
【0024】
ビデオデータメモリ40は、ビデオエンコーダ20のコンポーネントによって符号化されるビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは、例えば、
図1に示すように、ビデオソース18から取得されてもよい。DPB64は、ビデオエンコーダ20による(例えば、イントラ予測符号化モード又はインター予測符号化モードでの)ビデオデータの符号化に用いられる参照ビデオデータ(例えば、参照フレーム又はピクチャ)を記憶するバッファである。ビデオデータメモリ40及びDPB64は、様々なメモリデバイスのいずれかによって形成されてもよい。様々な実施例では、ビデオデータメモリ40は、ビデオエンコーダ20の他のコンポーネントとオンチップであってもよく、それらのコンポーネントに対してオフチップであってもよい。
【0025】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。この分割には、ビデオデータに関連する4分木(QT)構造などの所定の分割構造に従って、ビデオフレームをスライス、タイル(例えば、ビデオブロックセット)、又は他のより大きな符号化ユニット(CU)に分割することも含まれ得る。ビデオフレームは、サンプル値を有するサンプルの2次元配列又は行列であるか、又はそれらとみなしてもよい。配列内のサンプルは、ピクセル又はペルと呼ばれてもよい。配列又はピクチャの水平及び垂直方向(又は軸)のサンプルの数は、ビデオフレームのサイズ及び/又は解像度を定義する。ビデオフレームは、例えば、QT分割を用いて複数のビデオブロックに分割されてもよい。ビデオブロックは、ビデオフレームよりも次元が小さいが、同様に、サンプル値を有するサンプルの2次元配列又は行列であるか、又はそれらとみなしてもよい。ビデオブロックの水平及び垂直方向(又は軸)のサンプルの数は、ビデオブロックのサイズを定義する。ビデオブロックは、例えば、QT分割、2分木(BT)分割、3分木(TT)分割、又はこれらの任意の組み合わせを反復的に用いることによって、1つ以上のブロックパーティション又は(再びブロックを形成してもよい)サブブロックパーティションに更に分割されてもよい。なお、本明細書で使用される「ブロック」又は「ビデオブロック」という用語は、フレーム又はピクチャの一部、特に矩形(正方形又は非正方形)部分であってもよい。例えば、HEVC及びVVCを参照すると、ブロック又はビデオブロックは、符号化ツリーユニット(CTU)、CU、予測ユニット(PU)、又は変換ユニット(TU)であってもよく、それに対応してもよく、及び/又は、符号化ツリーブロック(CTB)、符号化ブロック(CB)、予測ブロック(PB)、又は変換ブロック(TB)などの対応するブロックであってもよく、それに対応してもよい。その代わりに又は更に、ブロック又はビデオブロックは、CTB、CB、PB、TBなどのサブブロックであってもよく、それに対応してもよい。
【0026】
予測処理ユニット41は、エラー結果(例えば、符号化率及び歪みのレベル)に基づいて、現在のビデオブロックに対して、複数のイントラ予測符号化モードのうちの1つ、又は、複数のインター予測符号化モードのうちの1つなどの、複数の可能な予測符号化モードのうちの1つを選択してもよい。予測処理ユニット41は、得られたイントラ又はインター予測符号化ブロック(例えば、予測ブロック)を、加算器50に提供して残差ブロックを生成し、加算器62に提供して符号化ブロックを再構成して、後に参照フレームの一部として使用することができる。また、予測処理ユニット41は、動きベクトル、イントラモードインジケータ、分割情報、及び他のそのような構文情報などの構文要素をエントロピー符号化ユニット56に提供する。
【0027】
現在のビデオブロックに対して適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、符号化される現在のブロックと同じフレーム内の1つ以上の隣接するブロックに対して現在のビデオブロックのイントラ予測符号化を実行して、空間予測を提供する。予測処理ユニット41内の動き推定ユニット42及び動き補償ユニット44は、1つ以上の参照フレーム内の1つ以上の予測ブロックに対して現在のビデオブロックのインター予測符号化を実行して、時間予測を提供する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックに対して適切な符号化モードを選択するために、複数の符号化パスを実行してもよい。
【0028】
いくつかの実装形態では、動き推定ユニット42は、ビデオフレームのシーケンス内の所定のパターンに従って、参照フレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの変位を示す動きベクトルを生成することにより、現在のビデオフレームに対してインター予測モードを決定する。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスであってもよい。動きベクトルは、例えば、参照フレーム内の予測ブロックに対する現在のビデオフレーム又はピクチャ内のビデオブロックの変位を示してもよい。所定のパターンは、シーケンス内のビデオフレームをPフレーム又はBフレームとして指定してもよい。イントラBCユニット48は、動き推定ユニット42によるインター予測のための動きベクトルの決定と同様の方法で、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定してもよく、動き推定ユニット42を利用してブロックベクトルを決定してもよい。
【0029】
ビデオブロックの予測ブロックは、差分絶対値和(SAD)又は差分二乗和(SSD)、又は他の差分メトリックにより決定され得るピクセル差分に関して、符号化されるビデオブロックと密接に一致するとみなされる参照フレームのブロック又は参照ブロックであってもよく、それに対応してもよい。いくつかの実装形態では、ビデオエンコーダ20は、DPB64に記憶された参照フレームのサブ整数ピクセル位置の値を計算してもよい。例えば、ビデオエンコーダ20は、参照フレームの1/4ピクセル位置、1/8ピクセル位置、他の分数ピクセル位置の値を補間してもよい。したがって、動き推定ユニット42は、全ピクセル位置及び分数ピクセル位置に対して動き探索を行い、分数ピクセル精度を有する動きベクトルを出力してもよい。
【0030】
動き推定ユニット42は、インター予測符号化フレームにおけるビデオブロックの位置と、それぞれがDPB64に記憶された1つ以上の参照フレームを識別する第1参照フレームリスト(リスト0)又は第2参照フレームリスト(リスト1)から選択された参照フレームの予測ブロックの位置とを比較することにより、ビデオブロックの動きベクトルを計算する。動き推定ユニット42は、計算された動きベクトルを動き補償ユニット44に送り、その後、エントロピー符号化ユニット56に送る。
【0031】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて、予測ブロックを取得するか又は生成することを含んでもよい。現在のビデオブロックの動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが1つの参照フレームリストにおいてどの予測ブロックを指しているかを特定し、DPB64から予測ブロックを取得して、当該予測ブロックを加算器50に転送することができる。そして、加算器50は、符号化されている現在のビデオブロックのピクセル値から、動き補償ユニット44によって提供される予測ブロックのピクセル値を減算することにより、ピクセル差分値の残差ブロックを形成する。残差ブロックを形成するピクセル差分値は、輝度差分成分又は彩度差分成分、又はその両方を含んでもよい。動き補償ユニット44は、ビデオフレームのビデオブロックを復号する際にビデオデコーダ30によって使用される、ビデオフレームのビデオブロックに関連する構文要素を生成することもできる。構文要素は、例えば、予測ブロックを識別するために使用される動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、又は本明細書に記載される任意の他の構文情報を含んでもよい。なお、動き推定ユニット42と動き補償ユニット44は、一体に統合されてもよいが、概念的な目的のために
図2に別個に示されている。
【0032】
いくつかの実装形態では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44に関連して上述した方法と同様の方法でベクトルを生成し、予測ブロックを取得することができるが、予測ブロックは、符号化されている現在のブロックと同じフレーム内にあり、ベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現在のブロックを符号化するために用いられるイントラ予測モードを決定してもよい。いくつかの実施例では、イントラBCユニット48は、例えば、別個の符号化パス中に、様々なイントラ予測モードを用いて現在のブロックを符号化し、レート歪み解析によりそれらの性能をテストすることができる。次に、イントラBCユニット48は、テストされた複数のイントラ予測モードの中から、適切なイントラ予測モードを選択して使用し、対応するイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、様々なテストされたイントラ予測モードに対して、レート歪み解析を用いてレート歪み値を計算し、テストされたモードの中から、レート歪み特性が最適なイントラ予測モードを適切なイントラ予測モードとして選択して使用することができる。レート歪み解析は、一般に、符号化されたブロックと、この符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又はエラー)量、及び、この符号化されたブロックを生成するために使用されたビットレート(即ち、ビット数)を決定する。イントラBCユニット48は、様々な符号化されたブロックの歪み及びレートから比率を計算して、どのイントラ予測モードがそのブロックに対して最適なレート歪み値を示すかを判定することができる。
【0033】
他の実施例では、イントラBCユニット48は、動き推定ユニット42及び動き補償ユニット44を全体的又は部分的に使用して、本明細書で説明される実装形態に従ってイントラBC予測のための機能を実行することができる。いずれの場合でも、イントラブロックコピーの場合、予測ブロックは、SAD、SSD、又は他の差分メトリックによって決定され得るピクセル差分に関して、符号化されるブロックと密接に一致するとみなされるブロックであってもよく、予測ブロックの識別は、サブ整数ピクセル位置の値の計算を含んでもよい。
【0034】
予測ブロックがイントラ予測による同じフレームからのものであるか、インター予測による異なるフレームからのものであるかにかかわらず、ビデオエンコーダ20は、符号化されている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ブロックを形成することができる。残差ブロックを形成するピクセル差分値は、輝度成分差分と彩度成分差分の両方を含んでもよい。
【0035】
イントラ予測処理ユニット46は、上述したように、動き推定ユニット42及び動き補償ユニット44によって実行されるインター予測、又はイントラBCユニット48によって実行されるイントラブロックコピー予測に代えて、現在のビデオブロックをイントラ予測してもよい。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために用いられるイントラ予測モードを決定してもよい。例えば、イントラ予測処理ユニット46は、例えば別個のパスの符号化中に、様々なイントラ予測モードを用いて現在のブロックを符号化することができ、イントラ予測処理ユニット46(又は、いくつかの実施例では、モード選択ユニット)は、テストされたイントラ予測モードから、適切なイントラ予測モードを選択して使用することができる。イントラ予測処理ユニット46は、ブロックに対して選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してもよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化してもよい。
【0036】
予測処理ユニット41がインター予測又はイントラ予測を介して現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することによって残差ブロックを形成する。残差ブロック内の残差ビデオデータは、1つ以上のTUに含まれてもよく、変換処理ユニット52に提供される。変換処理ユニット52は、離散コサイン変換(DCT)又は概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。
【0037】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ってもよい。量子化ユニット54は、変換係数を量子化してビットレートを更に低減する。量子化プロセスにより、係数の一部又は全部に関連するビット深度を低減する場合もある。量子化の程度は、量子化パラメータを調整することによって変更することができる。いくつかの実施例では、量子化ユニット54は、量子化された変換係数を含む行列の走査を実行してもよい。その代わりに、エントロピー符号化ユニット56は、走査を実行してもよい。
【0038】
量子化に続いて、エントロピー符号化ユニット56は、エントロピー符号化技術を使用して、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、又は別のエントロピー符号化方法若しくは技術を使用して、量子化された変換係数をビデオビットストリームに符号化する。次に、符号化されたビットストリームは、
図1に示すように、ビデオデコーダ30に送信されてもよく、後でビデオデコーダ30に送信されるか又はビデオデコーダ30によって取得されるために、
図1に示すように記憶デバイス32にアーカイブされてもよい。エントロピー符号化ユニット56はまた、エントロピー符号化技術を使用して、符号化されている現在のビデオフレームのための動きベクトル及び他の構文要素を符号化してもよい。
【0039】
逆量子化ユニット58及び逆変換処理ユニット60は、それぞれ逆量子化及び逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するためのピクセル領域の残差ブロックを再構成する。再構成された残差ブロックを生成してもよい。上述したように、動き補償ユニット44は、DPB64に記憶されたフレームの1つ以上の参照ブロックから動き補償予測ブロックを生成してもよい。また、動き補償ユニット44は、予測ブロックに対して1つ以上の補間フィルタを適用して、動き推定に使用されるサブ整数ピクセル値を計算してもよい。
【0040】
加算器62は、再構成された残差ブロックを、動き補償ユニット44により生成された動き補償予測ブロックに加算して、DPB64に記憶するための参照ブロックを生成する。次に、参照ブロックは、イントラBCユニット48、動き推定ユニット42、及び動き補償ユニット44によって、後続のビデオフレーム内の別のビデオブロックをインター予測するための予測ブロックとして使用されてもよい。
【0041】
図3は、本願のいくつかの実装形態に係る、例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、及びDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84、及びイントラBCユニット85を更に含む。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20に関して上述した符号化プロセスとほぼ逆の復号プロセスを実行することができる。例えば、動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルに基づいて予測データを生成することができるが、イントラ予測ユニット84は、エントロピー復号ユニット80から受信されたイントラ予測モードインジケータに基づいて予測データを生成することができる。
【0042】
いくつかの実施例では、ビデオデコーダ30のユニットは、本願の実装形態を実行する任務を負うことがある。また、いくつかの実施例では、本開示の実装形態は、ビデオデコーダ30の1つ以上のユニットに分割されてもよい。例えば、イントラBCユニット85は、単独で、又は動き補償ユニット82、イントラ予測ユニット84、及びエントロピー復号ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実装形態を実行してもよい。いくつかの実施例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他のコンポーネントによって実行されてもよい。
【0043】
ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントによって復号される、符号化されたビデオビットストリームなどのビデオデータを記憶してもよい。ビデオデータメモリ79に記憶されたビデオデータは、例えば、記憶デバイス32から取得されてもよく、カメラなどのローカルビデオソースからビデオデータの有線又は無線のネットワーク通信を介して取得されてもよく、物理的なデータ記憶媒体(例えば、フラッシュドライブ又はハードディスク)にアクセスして取得されてもよい。ビデオデータメモリ79は、符号化されたビデオビットストリームから符号化されたビデオデータを記憶する符号化ピクチャバッファ(CPB)を含んでもよい。ビデオデコーダ30のDPB92は、ビデオデコーダ30による(例えば、イントラ又はインター予測符号化モードでの)ビデオデータの復号に用いられる参照ビデオデータを記憶する。ビデオデータメモリ79及びDPB92は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)又は他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成されてもよい。説明の便宜上、ビデオデータメモリ79とDPB92は、
図3では、ビデオデコーダ30の2つの別個のコンポーネントとして示されている。しかしながら、ビデオデータメモリ79とDPB92が同じメモリデバイス又は別個のメモリデバイスによって提供され得ることは、当業者には明らかであろう。いくつかの実施例では、ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントとオンチップであってもよく、それらのコンポーネントに対してオフチップであってもよい。
【0044】
ビデオデコーダ30は、復号プロセス中に、符号化されたビデオフレームのビデオブロック及び関連する構文要素を表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベル及び/又はビデオブロックレベルで構文要素を受信してもよい。ビデオデコーダ30のエントロピー復号ユニット80は、エントロピー復号技術を使用して、ビットストリームを復号して、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他の構文要素を取得してもよい。次に、エントロピー復号ユニット80は、動きベクトル又はイントラ予測モードインジケータ、及び他の構文要素を予測処理ユニット81に転送する。
【0045】
ビデオフレームがイントラ予測符号化された(例えば、I)フレームとして、又は他のタイプのフレームのイントラ符号化された予測ブロックに対して、符号化される場合、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モード及び現在のフレームの前に復号されたブロックからの参照データに基づいて、現在のビデオフレームのビデオブロックの予測データを生成してもよい。
【0046】
ビデオフレームがインター予測符号化された(例えば、B又はP)フレームとして符号化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトル及び他の構文要素に基づいて、現在のビデオフレームのビデオブロックの1つ以上の予測ブロックを生成する。各予測ブロックは、1つの参照フレームリスト内の参照フレームから生成されてもよい。ビデオデコーダ30は、DPB92に記憶された参照フレームに基づいて、デフォルトの構成技術を用いて参照フレームリスト、例えば、リスト0及びリスト1を構成してもよい。
【0047】
いくつかの実施例では、ビデオブロックが本明細書で説明されるイントラBCモードに従って符号化される場合、予測処理ユニット81のイントラBCユニット85は、エントロピー復号ユニット80から受信されたブロックベクトル及び他の構文要素に基づいて、現在のビデオブロックの予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって処理された現在のビデオブロックと同じピクチャの再構成された領域内にあってもよい。
【0048】
動き補償ユニット82及び/又はイントラBCユニット85は、動きベクトル及び他の構文要素を解析することにより、現在のビデオフレームのビデオブロックの予測情報を決定し、次に、この予測情報を使用して復号されている現在のビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は、受信された構文要素の一部を使用して、ビデオフレームのビデオブロックを符号化する際に使用される予測モード(例えば、イントラ又はインター予測)、インター予測フレームタイプ(例えば、B又はP)、フレームの1つ以上の参照フレームリストの構成情報、フレームのインター予測符号化されたビデオブロック毎の動きベクトル、フレームのインター予測符号化されたビデオブロック毎のインター予測状態、及び現在のビデオフレームのビデオブロックを復号するための他の情報を決定する。
【0049】
同様に、イントラBCユニット85は、受信された構文要素の一部、例えばフラグを使用して、現在のビデオブロックがイントラBCモードを使用して予測されたこと、フレームのどのビデオブロックが再構成された領域内であってDPB92に記憶されるべきかに関する構成情報、フレームのイントラBC予測ビデオブロック毎のブロックベクトル、フレームのイントラBC予測ビデオブロック毎のイントラBC予測状態、及び現在のビデオフレームのビデオブロックを復号するための他の情報を決定する。
【0050】
また、動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して補間を実行し、参照ブロックのサブ整数ピクセルの補間値を計算してもよい。この場合、動き補償ユニット82は、受信された構文要素からビデオエンコーダ20によって使用される補間フィルタを決定し、この補間フィルタを使用して予測ブロックを生成してもよい。
【0051】
逆量子化ユニット86は、ビデオフレーム内の各ビデオブロックに対してビデオエンコーダ20によって計算された同じ量子化パラメータを使用して、ビットストリームに提供されかつエントロピー復号ユニット80によって復号された量子化された変換係数を逆量子化し、量子化の程度を決定する。逆変換処理ユニット88は、ピクセル領域内の残差ブロックを再構成するために、逆変換、例えば、逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用する。
【0052】
動き補償ユニット82又はイントラBCユニット85がベクトル及び他の構文要素に基づいて現在のビデオブロックの予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82及びイントラBCユニット85により生成された対応する予測ブロックとを加算することにより、現在のビデオブロックの復号されたビデオブロックを再構成する。復号されたビデオブロックは、現在のビデオブロックの再構成されたブロックと呼ばれてもよい。デブロッキングフィルタ、SAOフィルタ、及び/又はALFなどのインループフィルタ91は、加算器90とDPB92との間に配置されて、復号されたビデオブロックを更に処理してもよい。いくつかの実施例では、インループフィルタ91は、省略されてもよく、復号されたビデオブロックは、加算器90によってDPB92に直接提供されてもよい。次に、所与のフレーム内の復号されたビデオブロックは、次のビデオブロックの後続の動き補償に使用される参照フレームを記憶するDPB92に記憶される。また、DPB92、又はDPB92とは別個のメモリデバイスは、復号されたビデオを、
図1のディスプレイデバイス34などのディスプレイデバイスに後で表示するために記憶してもよい。
【0053】
典型的なビデオ符号化プロセス(例えば、ビデオ符号化プロセス及びビデオ復号プロセスを含む)において、ビデオシーケンスは、典型的に、フレーム又はピクチャの順序付けられたセットを含む。各フレームは、SL、SCb及びSCrで示される3つのサンプル配列を含んでもよい。SLは、輝度サンプルの2次元配列である。SCbは、Cb彩度サンプルの2次元配列である。SCrは、Cr彩度サンプルの2次元配列である。他の例では、フレームは、モノクロームであり得るため、輝度サンプルの2次元配列を1つだけ含む。
【0054】
図4Aに示すように、ビデオエンコーダ20(又はより具体的には、分割ユニット45)は、まず、フレームを1セットのCTUに分割することにより、フレームの符号化された表現を生成する。ビデオフレームは、左から右へ、及び上から下へのラスタ走査順序で連続的に配列された整数個のCTUを含んでもよい。各CTUは、最大の論理符号化ユニットであり、CTUの幅及び高さは、ビデオシーケンス内の全てのCTUが128×128、64×64、32×32及び16×16のうちの1つである同じサイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかしながら、本開示におけるCTUは、必ずしも特定のサイズに限定されないことに留意されたい。
図4Bに示すように、各CTUは、輝度サンプルの1つのCTB、彩度サンプルの2つの対応する符号化ツリーブロック、及び符号化ツリーブロックのサンプルを符号化するための構文要素を含んでもよい。構文要素は、ピクセルの符号化されたブロックの異なるタイプのユニットの性質と、インター又はイントラ予測、イントラ予測モード、動きベクトル及び他のパラメータを含む、ビデオデコーダ30でビデオシーケンスを再構成し得る方法とを説明する。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、CTUは、単一の符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するための構文要素とを含んでもよい。符号化ツリーブロックは、サンプルのN×Nのブロックであってもよい。
【0055】
優れた性能を実現するために、ビデオエンコーダ20は、CTUの符号化ツリーブロックに対して、2分木分割、3分木分割、4分木分割、又はそれらの組み合わせなどのツリー分割を再帰的に実行し、CTUをより小さいCUに分割してもよい。
図4Cに示すように、64×64のCTU400は、まず、それぞれが32×32のブロックサイズを有する4つのより小さいCUに分割される。4つのより小さいCUのうち、CU410及びCU420は、それぞれ、16×16のブロックサイズで4つのCUに分割される。2つの16×16のCU430及び440はそれぞれ、8×8のブロックサイズで4つのCUに更に分割される。
図4Dは、
図4Cに示すようなCTU400の分割プロセスの最終結果を示す4分木データ構造を示し、4分木の各リーフノードは、32×32~8×8の範囲のそれぞれのサイズの1つのCUに対応する。
図4Bに示すCTUと同様に、各CUは、輝度サンプルのCBと、同じサイズのフレームの彩度サンプルの2つの対応する符号化ブロックと、符号化ブロックのサンプルを符号化するための構文要素とを含んでもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、CUは、単一の符号化ブロックと、当該符号化ブロックのサンプルを符号化するための構文構造とを含んでもよい。なお、
図4C及び4Dに示す4分木分割は、例示の目的のためのものに過ぎず、1つのCTUは、様々な局所的な特性に適応するように、4分木/3分木/2分木分割に基づいてCUに分割することができる。マルチタイプツリー構造において、1つのCTUは、4分木構造によって分割され、各4分木リーフCUは、2分木構造及び3分木構造によって更に分割することができる。
図4Eに示すように、幅W及び高さHを有する符号化ブロックの複数の可能な分割タイプ、即ち、4分割、垂直2分割、水平2分割、垂直3分割、垂直拡張3分割、水平3分割、及び水平拡張3分割がある。
【0056】
いくつかの実装形態では、ビデオエンコーダ20は、CUの符号化ブロックを1つ以上のM×NのPBに更に分割してもよい。PBは、同じ予測、インター又はイントラ予測が適用されるサンプルの矩形(正方形又は非正方形)ブロックを含んでもよい。CUのPUは、輝度サンプルのPBと、彩度サンプルの2つの対応するPBと、PBを予測するための構文要素とを含んでもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、PUは、単一のPBと、PBを予測するための構文構造とを含んでもよい。ビデオエンコーダ20は、CUの各PUの輝度PB、Cb PB及びCr PBの予測輝度ブロック、Cbブロック及びCrブロックを生成してもよい。
【0057】
ビデオエンコーダ20は、PUの予測ブロックを生成するために、イントラ予測又はインター予測を使用してもよい。ビデオエンコーダ20は、PUの予測ブロックを生成するためにイントラ予測を使用する場合、PUに関連するフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してもよい。ビデオエンコーダ20は、PUの予測ブロックを生成するためにインター予測を使用する場合、PUに関連するフレーム以外の1つ以上のフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してもよい。
【0058】
ビデオエンコーダ20は、CUの1つ以上のPUの予測輝度ブロック、Cbブロック及びCrブロックを生成した後、CUの輝度残差ブロック内の各サンプルがCUの予測輝度ブロックのうちの1つの予測輝度ブロックの輝度サンプルと、CUの元の輝度符号化ブロックの対応するサンプルとの間の差分を示すように、CUの予測輝度ブロックを元の輝度符号化ブロックから減算することにより、CUの輝度残差ブロックを生成してもよい。同様に、ビデオエンコーダ20は、CUのCb残差ブロック内の各サンプルがCUの予測Cbブロックのうちの1つ内のCbサンプルと、CUの元のCb符号化ブロック内の対応するサンプルとの間の差分を示し、CUのCr残差ブロック内の各サンプルがCUの予測Crブロックのうちの1つ内のCrサンプルと、CUの元のCr符号化ブロック内の対応するサンプルとの間の差分を示してもよいように、CUのCb残差ブロック及びCr残差ブロックをそれぞれ生成してもよい。
【0059】
更に、
図4Cに示すように、ビデオエンコーダ20は、CUの輝度、Cb、Cr残差ブロックを1つ以上の輝度、Cb、Cr変換ブロックにそれぞれ分解するために、4分木分割を使用してもよい。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形又は非正方形)ブロックを含んでもよい。CUのTUは、輝度サンプルの変換ブロックと、彩度サンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するための構文要素とを含んでもよい。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロック及びCr変換ブロックに関連してもよい。いくつかの実施例では、TUに関連する輝度変換ブロックは、CUの輝度残差ブロックのサブブロックであってもよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってもよい。モノクロームピクチャ又は3つの別個の色平面を有するピクチャにおいて、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するための構文構造とを含んでもよい。
【0060】
ビデオエンコーダ20は、TUの輝度係数ブロックを生成するために、TUの輝度変換ブロックに1つ以上の変換を適用してもよい。係数ブロックは、変換係数の2次元配列であってもよい。変換係数は、スカラー量であってもよい。ビデオエンコーダ20は、TUのCb係数ブロックを生成するために、TUのCb変換ブロックに1つ以上の変換を適用してもよい。ビデオエンコーダ20は、TUのCr係数ブロックを生成するために、TUのCr変換ブロックに1つ以上の変換を適用してもよい。
【0061】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロック又はCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化してもよい。量子化とは、一般に、変換係数を量子化して、変換係数を表現するためのデータの量をできる限り低減し、さらなる圧縮を提供するプロセスを指す。ビデオエンコーダ20は、係数ブロックを量子化した後、エントロピー符号化技術を適用して、量子化された変換係数を示す構文要素を符号化してもよい。例えば、ビデオエンコーダ20は、量子化された変換係数を示す構文要素に対してCABACを実行してもよい。最後に、ビデオエンコーダ20は、符号化されたフレーム及び関連するデータの表現を形成するビットのシーケンスを含むビットストリームを出力してもよく、当該ビットストリームは、記憶デバイス32に保存されるか、又は宛先デバイス14に送信される。
【0062】
ビデオエンコーダ20により生成されたビットストリームを受信した後、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームから構文要素を取得してもよい。ビデオデコーダ30は、ビットストリームから取得された構文要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構成してもよい。ビデオデータを再構成するプロセスは、一般に、ビデオエンコーダ20により実行される符号化プロセスとは逆である。例えば、ビデオデコーダ30は、現在のCUのTUに関連する係数ブロックに対して逆変換を実行して、現在のCUのTUに関連する残差ブロックを再構成してもよい。ビデオデコーダ30はまた、現在のCUのPUの予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに追加することにより、現在のCUの符号化ブロックを再構成する。フレームの各CUの符号化ブロックを再構成した後、ビデオデコーダ30は、フレームを再構成してもよい。
【0063】
上述したように、ビデオ符号化は、主に、2つのモード、即ち、イントラフレーム予測(又はイントラ予測)とインターフレーム予測(又はインター予測)を使用してビデオ圧縮を実現する。なお、イントラブロックコピー(IBC)は、イントラフレーム予測又は第3モードとみなすことができる。2つのモードの間に、インターフレーム予測は、参照ビデオブロックから現在のビデオブロックを予測するための動きベクトルを使用するため、イントラフレーム予測よりも符号化効率に寄与する。
【0064】
しかしながら、ビデオデータ収集技術が日々進歩するとともに、ビデオデータの詳細を保存するビデオブロックサイズがより微細化されることで、現在のフレームの動きベクトルを表現するために必要なデータの量も実質的に増加する。この課題を解決する1つの方法は、空間領域と時間領域の両方の隣接するCUの群が、予測のためのビデオデータが類似しているだけでなく、これらの隣接するCU間の動きベクトルも類似しているという事実からメリットを得る。したがって、空間的に隣接するCU及び/又は時間的に同一位置に配置するCUの動き情報は、現在のCUの「動きベクトル予測値(MVP)」とも呼ばれる、それらの空間的及び時間的な相関を探索することにより、現在のCUの動き情報(例えば、動きベクトル)の近似として使用することができる。
【0065】
現在のCUの実際の動きベクトルをビデオビットストリームに符号化する代わりに(例えば、
図2に関連して上述したように、動き推定ユニット42により実際の動きベクトルを決定する)、現在のCUの実際の動きベクトルから現在のCUの動きベクトル予測値を減算して、現在のCUの動きベクトル差分値(MVD)を生成する。これにより、フレームの各CUに対して動き推定ユニット42により決定された動きベクトルをビデオビットストリームに符号化する必要がなく、ビデオビットストリームの動き情報を表現するためのデータの量が大幅に減少する。
【0066】
符号化ブロックのインターフレーム予測の間に参照フレーム内の予測ブロックを選択するプロセスと同様に、ビデオエンコーダ20とビデオデコーダ30の両方は、現在のCUの空間的に隣接するCU及び/又は時間的に同一位置に配置するCUに関連する潜在的な候補動きベクトルを使用して現在のCUの動きベクトル候補リスト(「マージリスト」とも呼ばれる)を構成してから、動きベクトル候補リストから1つのメンバーを現在のCUの動きベクトル予測値として選択するために、一連のルールを利用することができる。これにより、動きベクトル候補リスト自体をビデオエンコーダ20からビデオデコーダ30に送信する必要がなく、動きベクトル候補リストから選択された動きベクトル予測値のインデックスは、ビデオエンコーダ20及びビデオデコーダ30が動きベクトル候補リスト内の同じ動きベクトル予測値を使用して現在のCUを符号化及び復号することに十分である。したがって、選択された動きベクトル予測値のインデックスのみをビデオエンコーダ20からビデオデコーダ30に送信する必要がある。
【0067】
ブロックベースのビデオ符号化プロセス(例えば、拡張圧縮モデル(ECM))における変換係数符号化についての簡単な説明は、本明細書で提供される。具体的には、各変換ブロックは、まず、複数の係数群(CG)に分割され、各係数群は、輝度成分の4×4サブブロックと彩度成分の2×2サブブロックの変換係数を含む。変換ブロック内の変換係数の符号化は、係数群単位で行われる。例えば、変換ブロック内の係数群は、第1所定走査順序に基づいて走査され、符号化される。各係数群を符号化するとき、係数群内の変換係数は、各サブブロック内の第2所定走査順序に基づいて走査される。ECMでは、同じ左上の走査順序は、変換ブロック内の係数群と各係数群内の異なる変換係数を走査するために適用される(例えば、第1所定走査順序及び第2所定走査順序は、両方とも左上の走査順序である)。
図5は、いくつかの実施例に係る、係数群内の変換係数の左上の走査順序を示すグラフィック表現である。
図5の0~15の数字は、係数群内の各変換係数の対応する走査順序を示す。
【0068】
ECMにおける変換係数符号化スキームによれば、変換ブロックが非ゼロ変換係数を含むか否かを示すために、変換ブロックごとにフラグが最初にシグナリングされる。変換ブロック内に少なくとも1つの非ゼロ変換係数が存在する場合、左上の走査順序に従って走査された最後の非ゼロ変換係数の位置は、ビデオエンコーダ20からビデオデコーダ30に明示的にシグナリングされる。最後の非ゼロ変換係数の位置がシグナリングされると、最後の係数群(即ち、最後の非ゼロ係数を含む係数群)の前に符号化される全ての係数群に対してフラグが更にシグナリングされる。同様に、フラグの数は、各係数群が非ゼロ変換係数を含むか否かを示す。係数群のフラグが0に等しい(係数群内の全ての変換係数が0であることを示す)場合、その係数群についてはそれ以上の情報を送信する必要はない。それ以外の場合(例えば、係数群のフラグが1に等しい場合)、係数群内の各変換係数の絶対値及び符号は、走査順序に従ってビットストリームでシグナリングされる。しかしながら、既存の設計では、変換係数の符号がバイパス符号化され(例えば、コンテキストモデルが適用されていない)ため、現在の設計では変換符号化の効率が悪い。本開示と一致して、変換符号化の効率を向上させることができるように、変換係数の符号予測を伴う改良されたLFNSTプロセスが以下でより詳細に説明される。
【0069】
図6は、いくつかの実施例に係る、LFNSTプロセスを示すグラフィック表現である。VVCでは、二次変換ツール(例えば、LFNST)が、一次変換後にイントラ符号化されたブロックの変換係数のエネルギーを圧縮するために適用される。
図6に示すように、順LFNST604は、ビデオエンコーダ20における順一次変換603と量子化605との間に適用され、逆LFNST608は、ビデオデコーダ30における逆量子化607と逆一次変換609との間に適用される。例えば、LFNSTプロセスは、順LFNST604と逆LFNST608の両方を含んでもよい。いくつかの実施例として、4×4の順LFNST604の場合、16個の入力係数があってもよく、8×8の順LFNST604の場合、64個の入力係数があってもよく、4×4の逆LFNST608の場合、8個の入力係数があってもよく、8×8の逆LFNST608の場合、16個の入力係数があってもよい。
【0070】
順LFNST604では、行列乗算プロセスを使用して表すことができる符号化ブロックのサイズに基づいて、可変変換サイズを有する非分離変換が適用される。例えば、順LFNST604が4×4ブロックに適用されると仮定する。4×4ブロック内のサンプルは、下記式(1)に示すように行列Xを使用して表すことができる。
【数1】
【0071】
行列Xは、下記式(2)に示すように、ベクトル
【数2】
としてシリアル化することができる。
【数3】
【0072】
上記式(1)又は(2)では、Xは、順一次変換603により得られた係数行列を表し、X
ijは、行列X中の一次変換係数を表す。次に、順LFNST604は、式(3)に従って以下のように適用される。
【数4】
【0073】
上記式(3)では、
【数5】
は、順LFNST604の後の変換係数を表し、Tは、変換カーネル(例えば、変換行列)を表す。上記の実施例では、Xは、4×4行列であるため、Tは、16×16行列である。16×1ベクトル
【数6】
【0074】
いくつかの実装形態では、縮小された非分離変換カーネルをLFNSTプロセスに適用することができる。例えば、上記式(3)に基づいて、順LFNST604は、計算演算及び変換係数を記憶するメモリソースに関して高価な直接行列乗算に基づいている。したがって、縮小された非分離変換カーネルをLFNST設計で使用すると、別の空間でN次元ベクトルをR次元ベクトルにマッピングする(R<N)ことにより、LFNSTプロセスの実装コストを削減することができる。例えば、変換カーネルにN×N行列を使用する代わりに、式(4)に示すように、R×N行列を順LFNST604の変換カーネルとして使用する。
【数7】
【0075】
上記式(4)では、TR×NにおけるR基底ベクトルは、元のN次元変換カーネル(即ち、N×N)の最初のR基底を選択することによって生成される。更に、TR×Nが直交であるとすると、逆LFNST608の逆変換行列は、順変換行列TR×Nの転置である。
【0076】
8×8のLFNSTの場合、係数N/R=4が適用される場合、64×64の変換行列は、順LFNST604に対して16×48変換行列に縮小され、64×64の逆変換行列は、逆LFNST608に対して48×16の逆変換行列に縮小される。これは、一次変換係数の左上領域の8×8サブブロックにLFNSTプロセスを適用することによって実現される。具体的には、16×48の順LFNSTが適用される場合、左上の8×8サブブロック(右下の4×4サブブロックを除く)内の3つの4×4サブブロックから48個の変換係数を入力とする。いくつかの実施例では、LFNSTプロセスは、左上の4×4サブブロックの外側の全ての変換係数が0である場合にのみ適用可能に制限され、これは、LFNSTが適用される場合、全ての一次のみの変換係数が0でなければならないことを示す。更に、最悪の場合(ピクセルごとの乗算に関して)の複雑さを制御するために、4×4及び8×8の符号化ブロックのLFNST行列には、それぞれ8×16及び8×48の変換が強制される。4×M及びM×4の符号化ブロック(M>4)の場合、LFNSTの非分離変換行列は、16×16である。
【0077】
LFNST変換シグナリングには、合計4つの変換セットがあり、LFNST設計では、変換セットごとに2つの非分離変換カーネルが有効となる。イントラブロックのイントラ予測モードに応じて、4つの変換セットから1つの変換セットを選択する。イントラ予測モードから変換セットへのマッピングは、下記表1に示すように予め定められている。3つのクロス成分線形モデル(CCLM)モード(例えば、INTRA_LT_CCLM、INTRA_T_CCLM、又はINTRA_L_CCLM)のうちの1つが現在のブロックに使用されている場合(81<=イントラ予測モード<=83)、現在の彩度ブロックには、変換セット「0」が選択される。各変換セットについては、選択された非分離二次変換候補は、ビットストリーム内のLFNSTインデックスをシグナリングすることによって示される。
表1
【表1】
【0078】
いくつかの実施例では、最初の16×16サブブロックの外側の全ての変換係数が0である場合、LFNSTがイントラブロックに適用されるように制限されるため、LFNSTインデックスのシグナリングは、最後の有意(即ち、非ゼロ)変換係数の位置に依存する。例えば、4×4及び8×8の符号化ブロックについては、LFNSTインデックスは、最後の有意変換係数の位置が8未満である場合にのみシグナリングされる。その他の符号化ブロックサイズについては、LFNSTインデックスは、最後の有意変換係数の位置が16未満である場合にのみシグナリングされる。それ以外の場合(即ち、LFNSTインデックスがシグナリングされていない場合)、LFNSTインデックスが0であり、即ち、LFNSTが無効であると推定される。
【0079】
また、変換係数をキャッシュするバッファのサイズを小さくするために、現在の符号化ブロックの幅又は高さが、シーケンスパラメータセット(SPS)でシグナリングされる最大変換サイズ(即ち、64)よりも大きい場合、LFNSTを不許可とする。一方、LFNSTは、一次変換がDCT2である場合にのみ適用される。また、LFNSTは、イントラ及びインタースライスの両方のイントラ符号化ブロック、並びに輝度成分及び彩度成分の両方に適用される。二分木又は局所木が有効である場合(輝度成分と彩度成分の分割がずれている場合)、LFNSTインデックスは、輝度成分と彩度成分に対して個別にシグナリングされる(即ち、輝度成分と彩度成分は、異なるLFNST変換を適用することができる)。それ以外の場合、単一木が適用される場合(輝度成分と彩度成分の分割が揃っている場合)、LFNSTは、単一のLFNSTインデックスがシグナリングされた輝度成分のみに適用される。
【0080】
ECMでのLFNST設計は、ブロックサイズの大きい残差サンプルのエネルギー圧縮を向上させるために、追加のLFNSTカーネルが導入されていることを除いて、VVCの設計と同様である。具体的には、変換ブロックの幅又は高さが16以上の場合、一次変換から生成された低周波変換係数の左上の領域に新たなLFNST変換が導入される。現在のECMでは、
図7に示すように、低周波領域は、一次変換係数の左上隅に6つの4×4サブブロック(例えば、
図7では灰色で示される6つの4×4サブブロック)を含む。この場合、順LFNST604への係数入力数は、96である。更に、最悪の場合の計算の複雑さを制御するために、順LFNST604の係数出力数は、32に設定される。具体的には、W×H個の変換ブロックの場合(W>=16及びH>=16)、32×96の順LFNSTが適用され、左上の領域にある6つの4×4サブブロックから96個の変換係数を入力とし、32個の変換係数を出力する。一方、ECMでの8×8LFNSTは、4つの4×4サブブロックの全ての変換係数を入力として利用し、32個の変換係数(即ち、順LFNST604については32×64行列、逆LFNST608については64×32行列)を出力する。これは、8×8LFNSTが左上の領域にある3つの4x4サブブロックのみに適用され、16個の変換係数(順LFNST604については16×48行列、逆LFNST608については48×16行列)のみが生成されるVVCとは異なる。更に、LFNSTセットの総数は、VVCでの4からECMでの35に増加する。VVCと同様に、LFNSTセットの選択は、現在の符号化ユニットのイントラ予測モードに依存し、各LFNSTセットは、3つの異なる変換カーネルを含む。
【0081】
いくつかの実施例では、HEVCで用いられるDCT2変換に加えて、インター符号化ブロックとイントラ符号化ブロックの両方の残差を変換するために、多重変換選択(MTS)スキームが適用される。MTSスキームは、DCT8及びDST7変換から選択された複数の変換を用いる。
【0082】
例えば、2つの制御フラグがシーケンスレベルで指定されて、イントラモードとインターモードでそれぞれMTSスキームを有効にする。MTSスキームがシーケンスレベルで有効である場合、MTSスキームが適用されるか否かを示すために、別のCUレベルのフラグが更にシグナリングされる。いくつかの実装形態では、MTSスキームは、輝度成分に対してのみ適用される。更に、MTSスキームは、(a)幅と高さの両方が32以下であり、(b)符号化ブロックフラグ(CBF)が1に等しいという条件が満たされる場合にのみシグナリングされる。MTS CUフラグが0に等しい場合、DCT2は、水平方向と垂直方向の両方に適用される。MTS CUフラグが1に等しい場合、他の2つのフラグがそれぞれ水平方向と垂直方向の変換タイプを示すために更にシグナリングされる。MTSの水平及び垂直制御フラグと、適用された変換との間のマッピングは、下記表2に示される。
表2
【表2】
【0083】
変換行列の精度に関しては、全てのMTS変換係数は、6ビット精度であり、DCT2コア変換と同じである。VVCがHEVCで使用される全ての変換サイズをサポートすると、HEVCで使用される全ての変換コアは、4点、8点、16点及び32点のDCT-2変換と、4点のDST-7変換とを含むVVCと同じに保たれる。また、64点のDCT-2、4点のDCT-8、8点、16点及び32点のDST-7及びDCT-8を含む他の変換コアは、VVC変換設計で更にサポートされている。更に、大きなサイズのDST-7及びDCT-8の複雑さを軽減するために、16×16の低周波領域の外側に位置する高周波変換係数は、DST-7、DCT-8変換ブロックの幅又は高さのいずれかが32に等しい場合に0(ゼロアウトとも呼ばれる)に設定される。
【0084】
VVCでは、DCT2に加えて、DST7及びDCT8変換カーネルのみがイントラ符号化及びインター符号化に利用される。イントラ符号化については、通常、残差信号の統計的特性は、イントラ予測モードに依存する。追加の一次変換は、残差特性の多様性を処理するのに有益な場合がある。
【0085】
DCT5、DST4、DST1、恒等変換(IDT)などの追加の一次変換がECMで使用される。また、MTSセットは、TUサイズとイントラモード情報に依存して作成される。16種類の異なるTUサイズが考慮されるが、イントラモード情報に応じて各TUサイズについて5つの異なるクラスが考慮される。各クラスについて、4つの異なる変換ペアが考慮される(VVCと同じである)。合計80個の異なるクラスが考慮されるが、それらの異なるクラスの一部は、同じ変換セットを共有することがよくある。したがって、得られるルックアップテーブル(LUT)には58個(80個未満)の一意のエントリが存在する。
【0086】
角度モードの場合、TU形状とイントラ予測にわたる結合対称性が考慮される。したがって、TU形状A×Bを有するモードi(i>34)は、TU形状B×Aを有するモードj=(68-i)に対応する同じクラスにマッピングすることができる。しかしながら、各変換ペアについて、水平変換カーネルと垂直変換カーネルの順序が入れ替えられる。例えば、モード18(水平予測)を有する16×4ブロックと、モード50(垂直予測)を有する4×16ブロックとは、同じクラスにマッピングされ、垂直変換カーネルと水平変換カーネルとが入れ替えられる。広角モードの場合、最も近い従来の角度モードは、変換セットの決定に使用される。例えば、モード2は、-2と-14との間の全てのモードに使用される。同様に、モード66は、モード67~モード80に使用される。
【0087】
イントラテンプレートマッチング予測は、現在のフレームの再構成された部分から、L字形のテンプレートが現在のテンプレートと一致する予測ブロックをコピーするイントラ予測モードの一例である。所定の探索範囲について、ビデオエンコーダ20は、現在のフレームの再構成された部分において(例えば、SADコストに基づいて)現在のテンプレートに最も類似したテンプレートを探索し、対応するブロックを予測ブロックとして使用する。次に、ビデオエンコーダ20は、このモードの使用をシグナリングし、同じ予測動作は、デコーダ側で実行される。予測信号は、
図8に示すように、現在のブロックのL字形の因果的隣接ブロックと所定の探索領域内の別のブロックとをマッチングすることによって生成され、当該探索領域は、(a)現在のCTU(R1)、(b)左上のCTU(R2)、(c)上端のCTU(R3)、及び(d)左端のCTU(R4)を含む。イントラテンプレートマッチングは、幅及び高さが64以下のサイズのCUに対して有効である。一方、イントラテンプレートマッチング予測モードは、CUレベルのフラグをシグナリングすることによって示される。イントラテンプレートマッチングが幅又は高さが4~16(両端を含む)の符号化ブロックに適用される場合、対応する次元に適用される一次変換は、DST-VIIに設定される。それ以外の場合(即ち、幅又は高さが4よりも小さいか、又は16よりも大きい場合)、DCT-IIが次元に適用される。
【0088】
図9は、いくつかの実施例に係る、符号予測の例示的なプロセスを示すグラフィック表現である。いくつかの実装形態では、符号予測は、変換ブロック内の変換係数の符号をその隣接するブロックのサンプルから推定し、各推定された符号と対応する真の符号との差分を「0」(又は「1」)で符号化して、推定された符号が真の符号と同じである(又は同じでない)ことを示すことを意図することができる。高い割合で正確に符号を推定できる場合(例えば、符号の90%又は95%が正しく推定される場合)、推定された符号と真の符号との差分は、0になる傾向があり、これにより、VVCにおける変換係数のバイパス符号化された符号と比較した場合、CABACによって効率的にエントロピー符号化することができる。
【0089】
一般に、現在のブロックとその隣接するブロックとの境界のサンプル間には高い相関があり、これを符号予測スキームで利用して、現在のブロックの変換係数の符号を予測することができる。
図9に示すように、現在のブロック内にM個の非ゼロ変換係数が存在すると仮定する(M個の符号は、それぞれ+又は-である)。それでは、可能な符号の組み合わせの総数は、2
Mとなる。符号予測スキームは、各符号の組み合わせを使用して、対応する仮説(例えば、現在のブロックの上端と左端の境界にある再構成されたサンプル)を生成し、対応する仮説における再構成されたサンプルを、隣接するブロックからの外挿されたサンプルと比較して、再構成されたサンプルと外挿されたサンプルとの間のサンプル差分(例えば、SSD又はSAD)を取得する。サンプル差分を最小にする(2
M個の可能な符号の組み合わせのうち)符号の組み合わせは、現在のブロック内の予測された符号として選択される。
【0090】
いくつかの実装形態では、
図9に示すように、M個の符号の各組み合わせに対して、対応する仮説を生成するために、M個の対応する変換係数は、逆量子化演算及び逆変換によって処理されて、残差サンプルを取得することができる。残差サンプルを予測サンプルに加算して、(L字形の灰色の領域902に示す)現在のブロックの上端と左端の境界にある再構成されたサンプルを含む再構成されたサンプルを取得することができる。
【0091】
いくつかの実装形態では、現在のブロックとその隣接ブロックの境界におけるサンプル間の空間的不連続性を測定するコスト関数は、符号の組み合わせの選択に使用される。L2ノルム(SSD)を使用する代わりに、下記式(5)に示すように、コスト関数は、L1ノルム(SAD)に基づいてもよい。
【数8】
【0092】
上記式(5)では、B
i,n(i=-2,-1)は、現在のブロックの上端の隣接するブロックからの隣接するサンプルを表す。C
m,j(j=-2,-1)は、現在のブロックの左端の隣接するブロックからの隣接するサンプルを表す。P
0,n及びP
m,nは、それぞれ現在のブロックの上端と左端の対応する再構成されたサンプルを表す。N及びMは、それぞれ現在のブロックの幅及び高さを表す。
図10は、符号予測のためのコスト関数を計算するために使用される、現在のブロックの対応するサンプルP
0,nとP
m,0、及び、隣接するブロックの対応するサンプルB
i,nとC
m,jを示す。
【0093】
いくつかの実装形態では、複数の逆変換の実行の複雑さを回避するために、テンプレートベースの仮説再構成方法を符号予測スキームに適用することができる。各テンプレートは、現在のブロックの上端と左端の境界にある再構成されたサンプルのセットであってもよく、特定の係数が1に設定され、他の全ての係数が0に等しい係数行列に逆変換を適用することにより得ることができる。逆変換(例えば、DCT、DST)が線形であるとすると、対応する仮説は、予め計算されたテンプレートのセットの線形結合により生成することができる。
【0094】
いくつかの実装形態では、予測された符号は、2つのセットに分類され、各セットは、単一のCABACコンテキストによって符号化される。例えば、第1セットは、変換ブロックの左上隅にある変換係数の予測された符号を含み、第2セットは、変換ブロックの他の全ての位置にある変換係数の予測された符号を含む。
【0095】
HEVCと同様に、VVCではスカラー量子化が使用される。いくつかの実装形態では、VVCにおけるスカラー量子化は、依存スカラー量子化として実装されてもよい。依存スカラー量子化とは、変換係数の許容可能な再構成値のセットが、再構成順序で現在の変換係数レベルに先行する変換係数レベルの値に依存するアプローチを指す。このアプローチの主な効果は、HEVCで使用される従来の独立したスカラー量子化と比較して、許容可能な再構成ベクトルがN次元ベクトル空間でより高密度にパックされることである(Nは、変換ブロック内の変換係数の数を表す)。つまり、N次元の単位体積当たりの許容可能な再構成ベクトルの平均数が一定である場合、入力ベクトルとその最も近い再構成ベクトルの間の平均歪みが減少する。
【0096】
依存スカラー量子化は、(a)異なる再構成レベルを有する2つのスカラー量子化器を定義し、(b)2つのスカラー量子化器間で切り替えるプロセスを定義することによって実装されてもよい。
図11は、本開示のいくつかの実装形態に係る、VVCの依存スカラー量子化に用いられる2つの例示的なスカラー量子化器を示す。
図11に示すように、VVCの量子化設計では、Q0とQ1により示される2つのスカラー量子化器が適用される。利用可能な再構成レベルの位置は、量子化ステップサイズΔによって一意に指定される。この実装形態では、2つのスカラー量子化器Q0とQ1との間の選択は、ビットストリームで明示的にシグナリングされていない。代わりに、現在の変換係数に用いられる量子化器は、ビデオエンコーダ20による符号化順序又はビデオデコーダ30による再構成順序で現在の変換係数に先行する変換係数レベルのパリティによって決定される。
【0097】
いくつかの実装形態では、2つのスカラー量子化器間の切り替えは、状態マシンを介して行われる。例えば、
図12Aは、いくつかの実施例に係る、依存スカラー量子化に用いられる4つの状態を有する状態マシンを用いる状態遷移を示すグラフィック表現である。
図12に示すように、状態は、0、1、2及び3の4つの異なる値を取ることができる。これは、符号化/再構成順序で現在の変換係数に先行する変換係数レベルのパリティによって一意に決定される。
【0098】
いくつかの実装形態では、変換ブロックの逆量子化の開始時に、状態は、0に設定される。変換係数は、走査順序で(即ち、エントロピー復号と同じ順序で)再構成される。
【0099】
現在の変換係数が再構成された後、状態は、状態マシンに従って更新される。例えば、
図12Aでは、kは、変換係数レベルの値を示す。各状態で、次の状態は、変換係数レベルkのパリティ、即ち、(k&1)に基づいて決定される。(k&1)==1の場合の次の状態は、(k&1)==0の場合の次の状態とは異なる。
図12Aに示すように、状態マシンは、4つの状態のそれぞれから2つの異なる状態を指す2つの矢印を含む。
図12Bは、
図12Aの状態遷移に応じた例示的な量子化器の選択を示す表である。例えば、
図12A及び
図12Bによれば、状態1では、(k&1)==0の場合に次の状態は2となり、(k&1)==1の場合に次の状態は0となる。
【0100】
同様に、デコーダでは、1つの変換係数の再構成された量子化インデックスは、式(6)に従って計算することができる。
quantIdx=(abs(k)<<1)-(state&1) (6)
【0101】
式中、abs()は、入力の絶対値を計算する関数であり、stateは、現在の変換係数のレベルを解析するときの状態遷移マシンの現在の状態である。また、デコーダ側では、逆量子化後の再構成された変換係数は、式(7)に従って取得することができる。
transCoeff=quantIdx・Δ (7)
【0102】
符号予測スキームの現在の設計に存在するいくつかの例示的な欠陥が本明細書で特定される。第1例では、現在のECMにおける符号予測は、一次変換(例えば、DCT及びDST変換)のみが適用される変換ブロック内の変換係数の符号の予測にのみ適用可能である。上述したように、LFNSTを一次変換からの変換係数に適用することで、イントラ符号化ブロックの残差サンプルのエネルギー圧縮を向上させることができる。しかしながら、現在のECM設計では、LFNSTが適用される変換ブロックに対して、符号予測がバイパスされる。
【0103】
第2例では、変換ブロックに対して所定の最大数の予測された符号(「Lmax」で示される)を決定し、符号予測の複雑さを制御する。現在のECMでは、ビデオエンコーダは、複雑さと符号化効率のトレードオフに基づいて、最大数(例えば、Lmax=8)の値を決定し、当該値をビデオデコーダに送信する。更に、ビデオエンコーダ又はデコーダは、変換ブロック毎に、全ての変換係数をラスタ走査順序で走査し、最初のLmax個の非ゼロ変換係数は、符号予測のための変換係数候補として選択される。このように変換ブロック内の異なる変換係数を均等に扱うことは、符号予測の精度の観点から最適でない場合がある。例えば、比較的大きい強度の変換係数の場合、それらの符号の予測により、正しい予測が得られる可能性が高い。これは、これらの変換係数に誤った符号を用いると、比較的小さい強度の変換係数を用いた場合よりも、ブロック境界にある再構成されたサンプルに大きな影響が生じる傾向があるためである。
【0104】
第3例では、明示的な符号値を直接符号化するのではなく、ビデオエンコーダ又はデコーダは、予測された符号の正確さを符号化することができる。例えば、正の符号を有する変換係数の場合、その予測された符号も正であれば、ビデオエンコーダからビデオデコーダへのビットストリームには、ビン「0」のみが示される必要がある。この場合、予測された符号は、変換係数の真の符号(又は元の符号)と同じであり、この変換係数の符号予測が正しいことを示す。それ以外の場合(例えば、予測された符号が負であるが、真の符号が正である場合)、ビデオエンコーダからビデオデコーダへのビットストリームには、ビン「1」が含まれてもよい。全ての符号が正しく予測された場合、ビットストリームに示される対応するビンは、0であり、CABACによって効率的にエントロピー符号化することができる。一部の符号が誤って予測された場合、ビットストリームに示される対応するビンは、1である。算術符号化+適切なコンテキストモデルは、対応する確率に応じてビンを符号化するのに効率的であるが、符号値を示すためにビットストリーム内に生成される無視できないビットが依然として存在する。
【0105】
第4例では、現在のブロックとその隣接するブロックとの境界にあるサンプル間の空間的不連続性は、ECMにおける符号予測の現在の設計において、最良の符号予測の組み合わせの選択に用いられる。空間的不連続性を捉えるために、垂直方向と水平方向に沿った勾配差分のL1ノルムが利用される。しかしながら、画像信号の分布は、通常、不均一であるため、垂直方向と水平方向のみを使用すると、空間的不連続性を正確に捉えることができない可能性がある。
【0106】
本開示と一致して、ブロックベースのビデオ符号化における符号予測のためのビデオ処理方法及びシステムは、上記例示的な欠陥の1つ以上に対処するために本明細書で提供される。本明細書で開示された方法及びシステムは、ハードウェアコーデック実装の使いやすさを考慮しながら、符号予測の符号化効率を向上させることができる。本明細書で開示された方法及びシステムは、変換ブロックの変換係数に符号予測技術を適用する変換ブロックの符号化効率を向上させることができる。
【0107】
例えば、上述したように、符号予測は、変換ブロックとその空間的に隣接するブロックとの境界又は境界近くに位置する境界サンプル(辺縁サンプルとも呼ばれる)間の相関に基づいて、変換ブロック内の変換係数の符号を予測することができる。相関の存在がどの特定の変換が適用されるかに依存しないとすると、2つの符号化ツール(即ち、LFNSTと符号予測)は、互いに干渉せず、共同で適用することができる。更に、LFNSTは、一次変換の変換係数のエネルギーを更に圧縮するため、LFNSTの変換係数の符号予測は、一次変換よりも精度が高い。これは、LFNSTからの変換係数の符号予測が正しくないと、境界サンプルの滑らかさに更に大きな不一致が生じる可能性があるためである。したがって、本開示と一致して、LFNSTと符号予測との組み合わせを可能にして、変換係数符号化の符号化効率を向上させる調和スキームが本明細書で開示される。更に、逆変換の数を減らすために、予測された符号の異なる組み合わせに対して辺縁サンプルを再構成するテンプレートベースの仮説生成スキームも本明細書で開示される。
【0108】
別の例では、上述したように符号予測のための変換係数候補の選択のために、変換ブロック内の異なる変換係数を均等に扱うのではなく、これらの変換係数の符号がより容易に予測されるとすると、変換係数により高い重みが与えられてもよく、このように隣接するブロックの境界サンプル間の不一致が生じる可能性がある。本開示と一致して、本明細書で開示された方法及びシステムは、符号予測の精度を向上させるために、1つ以上の選択基準に基づいて、符号予測のための変換係数候補(例えば、変換ブロックについてその符号が予測される変換係数)を選択することができる。例えば、(再構成された辺縁サンプルに対して影響が小さい変換係数ではなく)再構成された辺縁サンプルに対して影響がより大きい変換係数が、符号予測のための変換係数候補として選択されるため、符号予測の精度を向上させることができる。
【0109】
更に別の例では、変換ブロック内の変換係数の符号が高い精度で予測された場合(例えば、予測された符号の正確さが80%又は90%などの閾値よりも高い場合)、変換ブロックとその隣接ブロックとの境界サンプルの間には強い相関が存在する。この場合、多くのシナリオで正しく予測できる連続した変換係数(例えば、特に変換ブロックの先頭のいくつかの非ゼロ変換係数)が存在する可能性があることが一般的に発生する。このようなシナリオでは、(複数のビンの代わりに)単一のビンを用いて、全ての連続した変換係数の符号が正しく予測されるか否かを示し、符号予測のシグナリングオーバーヘッドを節約することができる。本開示と一致して、符号予測のシグナリングオーバーヘッドを削減するベクトルベースの符号予測スキームが本明細書で開示される。各非ゼロ変換係数の符号を個別に予測する既存の符号予測とは異なり、開示されたベクトルベースの符号予測スキームは、連続した非ゼロ変換係数候補のセットをグループ化し、それらの対応する符号をまとめて予測することで、予測された符号の正確さを示すために用いられるビン(又はビット)の平均数が効率的に低減することができる。
【0110】
更に別の例では、垂直方向と水平方向のみを使用すると、現在のブロックとその隣接するブロックとの間の境界にあるサンプル間の空間的不連続性を正確に捉えることができない可能性がある。これにより、空間的不連続性をより正確に捉えるために、より多くの方向を導入することができる。本開示と一致して、空間的不連続性をより正確に捉えるために、垂直方向及び水平方向の勾配と対角方向の勾配の両方を考慮する改良されたコスト関数が本明細書で開示される。
【0111】
図13は、本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測プロセス1100を示すブロック図である。いくつかの実装形態では、符号予測プロセス1300は、変換処理ユニット52によって実行されてもよい。いくつかの実装形態では、符号予測プロセス1300は、ビデオエンコーダ20又はデコーダ30の1つ以上のプロセッサ(例えば、1つ以上のビデオプロセッサ)によって実行されてもよい。本開示を通じて、LFNSTは、一般性を失うことなく、二次変換の一例として用いられる。二次変換の他の実施例も本明細書に適用できることが考えられる。
【0112】
ECMの既存の設計では、符号予測は、LFNSTが適用される変換ブロックに対して無効である。しかしながら、符号予測の原理は、変換ブロックとその空間的に隣接するブロックとの辺縁サンプル間の相関に基づいて、変換係数の符号を予測するものであり、変換ブロックに適用される特定の変換タイプ(例えば、一次変換であるか、又は二次変換であるか)又は変換コア(例えば、DCTであるか、又はDSTであるか)に依存しない。したがって、本明細書では、変換符号化の効率を更に向上させるために、符号予測とLFNSTは、共に適用することができる。本開示と一致して、符号予測プロセス1300は、一次変換と二次変換が共同で適用される変換ブロック内の変換係数の符号を予測するために適用することができる。
【0113】
符号予測プロセス1300の例示的な概要は、本明細書で提供される。まず、符号予測プロセス1300は、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することにより、係数生成動作1302を実行することができる。次に、符号予測プロセス1300は、符号予測のために、変換係数から変換係数候補のセットを選択することにより、係数選択動作1304を実行することができる。続いて、符号予測プロセス1300は、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することにより、仮説生成動作1306を実行することができる。更に、符号予測プロセス1300は、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することにより、符号生成動作1108を実行することができる。動作1302、1304、1306及び1308は、それぞれ以下でより詳細に説明される。
【0114】
例えば、ビデオエンコーダ20の変換処理ユニット52は、一次変換と二次変換を共同で適用する(例えば、
図6に示すように、順一次変換603と順LFNST604を共同で適用する)ことにより、残差ビデオデータを変換ブロックの変換係数に変換することができる。上記変換ブロックの変換係数からの所定数(例えば、L個)の非ゼロ変換係数は、以下に説明する1つ以上の選択基準に基づいて変換係数候補として選択することができ、1≦L≦予測可能な符号の最大数である。次に、テンプレートベースの仮説生成スキームを適用することにより、L個の変換係数候補のそれぞれに対する異なる符号候補の組み合わせを使用して複数の仮説候補を生成することができ、このように合計2
L個の仮説候補を生成することができる。各仮説候補は、変換ブロックの上端と左端の境界にある再構成されたサンプルを含んでもよい。次に、水平、垂直、及び対角方向に沿った結合勾配を組み込んだコスト関数を用いて、各仮説候補再構成のコストを計算することができる。最小のコストに関連する仮説候補は、L個の変換係数候補の符号を予測するための仮説として複数の仮説候補から決定することができる。例えば、最小コストに関連する仮説候補を生成するために用いられる符号候補の組み合わせは、L個の変換係数候補の予測された符号として用いられる。
【0115】
まず、符号予測プロセス1300は、係数生成動作1302を実行してもよく、この動作では、一次変換(例えば、DCT、DSTなど)及び二次変換(例えば、LFNST)を変換ブロックに共同で適用して、変換ブロックの変換係数を生成することができる。例えば、一次変換を変換ブロックに適用して、変換ブロックの一次変換係数を生成することができる。次に、LFNSTを変換ブロックに適用して、一次変換係数に基づいて、LFNST変換係数を生成することができる。
【0116】
続いて、符号予測プロセス1300は、係数選択動作1304を実行してもよく、この動作では、1つ以上の選択基準に基づいて、変換ブロックの変換係数から符号予測のための変換係数候補のセットを選択することができる。変換係数候補を選択することにより、正しく予測できる変換係数候補の数を最大化することができ、符号予測の精度を向上させることができる。
【0117】
いくつかの実装形態では、変換係数候補のセットは、変換係数の強度に基づいて、変換ブロックの変換係数から選択されてもよい。例えば、変換係数候補のセットは、変換ブロック内の残りの変換係数よりも大きな強度を有する1つ以上の変換係数を含んでもよい。
【0118】
一般に、変換係数の強度が大きいほど、これらの変換係数の予測された符号が正しくなる可能性が高い。これは、これらの変換係数の強度が大きいほど、再構成されたサンプルの品質に与える影響が大きくなる傾向があり、これらの変換係数に誤った符号を用いると、変換ブロックとその空間的に隣接するブロックとの境界サンプル間に不連続性が生じやすくなる可能性があるためである。この理論的根拠に基づいて、符号予測のための変換係数候補のセットは、変換ブロック内の非ゼロ変換係数の強度に基づいて、変換ブロックの変換係数から選択することができる。
【0119】
符号予測のために、変換係数の強度ベースの並べ替えスキームを実装するには、複数の方法が考えられる。第1実装形態では、このスキームは、逆量子化後に再構成された変換係数(即ち、逆量子化された変換係数)をソートに直接的に用いることで、より大きな強度を有する逆量子化された変換係数を、符号予測のためにより小さな強度を有する変換係数より前に配置する。例えば、変換ブロック内の全ての非ゼロ変換係数を走査してソートし、それらの強度の降順に従って係数リストを作成することができる。最大の強度を有する変換係数は、係数リストから選択され、変換係数候補のセット内の第1変換係数候補として配置することができ、2番目に大きい強度を有する変換係数は、係数リストから選択され、変換係数候補のセット内の第2変換係数候補として配置することができ、選択された変換係数候補の数が所定の数Lに達するまでこのようなことが繰り返される。
【0120】
第2実装形態では、逆量子化された変換係数を直接的に用いる代わりに、各変換係数の量子化インデックス(例えば、式(6)に従って取得されるquantIdx)は、変換係数の強度を表すために用いられ、そのようなソートに用いることができる。式(7)に示すように、1つの逆量子化された変換係数の値は、その量子化インデックスquantIdxと対応するステップサイズΔの積に等しく、ステップサイズは、1つの変換ブロック内の全ての変換係数の逆量子化についても同じであるため、2つの実装形態は、実際には数学的に同一である。しかしながら、量子化インデックスquantIdxが解析段階(逆量子化された変換係数の取得よりも早い段階)で取得できるとすると、第2実装形態は、いくつかの特定のハードウェアによって実装される場合、一定の利点を提供する可能性がある。
【0121】
いくつかの実装形態では、変換係数候補のセットは、ビデオ符号化に適用されるエントロピー符号化の係数走査順序に基づいて、変換ブロックの変換係数から選択されてもよい。自然のビデオコンテンツには、低周波情報が豊富に含まれるため、ビデオコンテンツの処理から取得される非ゼロ変換係数の強度は、低周波の位置で大きくなり、高周波の位置に向かうにつれて小さくなる傾向がある。したがって、最新のビデオコーデックでは、係数走査順序(ジグザグ走査、左上走査、水平走査、又は垂直走査など)を用いて変換ブロック内の変換係数を走査してエントロピー符号化することができる。この係数走査順序を用いることにより、より大きな強度(通常、より低い周波数に対応する)を有する変換係数は、より小さな強度(通常、より高い周波数に対応する)を有する変換係数よりも前に走査される。この理論的根拠に基づいて、本明細書で開示された符号予測のための変換係数候補のセットは、エントロピー符号化のための係数走査順序に基づいて、変換ブロックの変換係数から選択することができる。例えば、係数リストは、係数走査順序を用いて変換ブロック内の全ての変換係数を走査することによって取得することができる。次に、係数リスト内の最初のL個の非ゼロ変換係数は、符号予測のための変換係数候補のセットとして自動的に選択することができる。
【0122】
いくつかの実装形態では、イントラ符号化されたブロックについて、符号予測のための変換係数候補のセットは、ブロックのイントラ予測方向に基づいて、ブロックの変換係数から選択することができる。例えば、イントラ予測方向(例えば、VVC及びECMにおける67個のイントラ予測方向)とコヒーレントな複数の走査順序を決定し、ビデオエンコーダ20及びビデオデコーダ30の両方でルックアップテーブルとして記憶することができる。イントラブロックの変換係数を符号化するとき、ビデオエンコーダ20又はビデオデコーダ30は、走査順序から、イントラブロックのイントラ予測に最も近い走査順序を特定することができる。ビデオエンコーダ20又はビデオデコーダ30は、特定された走査順序を用いてイントラブロックの全ての非ゼロ変換係数を走査して係数リストを取得し、係数リストから最初のL個の非ゼロ変換係数を変換係数候補のセットとして選択することができる。
【0123】
いくつかの実装形態では、ビデオエンコーダ20は、変換ブロックの変換係数の走査順序を決定し、決定された走査順序をビデオデコーダ30にシグナリングすることができる。決定された走査順序を示す1つ以上の新しい構文要素は、ビットストリームを通じてシグナリングすることができる。例えば、(例えば、異なる変換ブロックサイズ及び符号化モードに対する)複数の固定された走査順序は、ビデオエンコーダ20によって予め決定され、ビデオデコーダ30と予め共有することができる。次に、固定された走査順序から走査順序を選択した後、ビデオエンコーダ20は、選択された走査順序をビデオデコーダ30に示すために単一のインデックスのみをシグナリングする必要がある。別の実施例では、1つ以上の新しい構文要素は、変換係数の任意の選択された走査順序のシグナリングを可能にすることに用いることができる。いくつかの実装形態では、1つ以上の構文要素は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、ピクチャ(又はスライス)レベル、CTU(又はCU)レベルなどの様々なコーディングレベルでシグナリングすることができる。
【0124】
いくつかの実装形態では、変換係数候補のセットは、変換ブロックの再構成された辺縁サンプルに対する変換係数の影響スコアに基づいて、変換ブロックの変換係数から選択することができる。具体的には、上記式(5)に示すように、符号の組み合わせ(即ち、予測された符号又は符号予測因子)の選択は、現在の変換ブロックとその空間的に隣接するブロックとの間のサンプルの勾配の不連続性を最小化するためのコスト関数に基づいている。したがって、現在の変換ブロックの上端及び左端の辺縁にある再構成されたサンプルに比較的大きな影響を与える変換係数の符号は、これらの符号を反転すると、(5)で計算されたように、境界サンプル間の滑らかさが大きく変動する可能性があるため、正確に予測される可能性が高い傾向がある。正確な符号予測の割合を最大化するために、これらの変換係数(即ち、再構成された辺縁サンプルに大きな影響を与えるもの)の符号は、他の変換係数(即ち、再構成された辺縁サンプルに小さな影響を与えるもの)よりも前に予測される場合がある。この理論的根拠に基づいて、本明細書で開示された符号予測のための変換係数候補のセットは、現在の変換ブロックの上端と左端の辺縁にある再構成されたサンプルに対するそれらの影響スコアに基づいて選択することができる。
【0125】
例えば、ビデオエンコーダ20又はデコーダ30は、変換ブロックの再構成された辺縁サンプルに対するそれらの対応する影響スコアの測定に基づいて、全ての変換係数をソートすることができる。変換係数が再構成された辺縁サンプルに対して大きな影響スコアを有する場合、正しく予測するのが簡単であるため、符号予測候補リストにおいて小さなインデックスが割り当てられてもよい。本明細書で開示された変換係数候補のセットは、符号予測候補リストにおいてL個の最も小さいインデックスを有するL個の変換係数であってもよい。
【0126】
いくつかの実装形態では、再構成された辺縁サンプルに対する変換係数の影響スコアを定量化するために、異なる基準を適用することができる。例えば、変換係数によって引き起こされる再構成された辺縁サンプルの変動のエネルギーを測定して得られた値は、以下のように取得できる影響スコアとして用いることができる(L1ノルム内)。
【数9】
【0127】
上記式(8)では、Ci,jは、変換ブロック内の位置(i,j)での変換係数を表す。Ti,j(l,k)は、変換係数Ci,jに関連するテンプレートの位置(l,k)での対応する辺縁サンプルを表す。N及びMは、それぞれ変換ブロックの幅及び高さを表す。Vは、位置(i,j)での変換係数の影響スコアを表す。
【0128】
別の例では、上記式(8)のL1ノルムをL2ノルムに置き換えることができるため、影響スコア(例えば、変換係数によって引き起こされる再構成された辺縁サンプルの変動のエネルギーの測定値)は、以下のようにL2ノルムを使用して計算することができる。
【数10】
【0129】
本開示と一致して、上記式(8)及び(9)では、(例えば、Ti,j(0,n)とTi,j(m,0)によって示される)上端と左端の辺縁サンプルのみが計算に用いられるが、本明細書で開示された変換係数の選択スキームは、対応するコスト関数で用いられる現在の変換ブロックの再構成されたサンプルを変更することにより、任意の符号予測スキームにも適用することができる。
【0130】
変換係数の強度ベースのスキームと同様に、影響スコアベースのスキームを実装するには様々な方法が考えられる。第1実装形態では、式(8)及び(9)に示すように、スキームは、逆量子化された変換係数C
i,jの強度を直接的に用いることができる。第2実装形態では、量子化インデックス値quantIdxを代わりに適用して、逆量子化された変換係数C
i,jを置き換えて、対応するコスト測定値を計算することができる。具体的には、量子化インデックス値quantIdxを適用すると、式(8)及び式(9)は、下記式(10)及び式(11)となる。
【数11】
【数12】
【0131】
式中、quantIdxi,jは、変換ブロック内の位置(i,j)での変換係数の量子化インデックスを表す。
【0132】
1つの逆量子化された変換係数の値は、その量子化インデックスquantIdxと対応するステップサイズΔの積に等しく、ステップサイズは、1つの変換ブロック内の全ての変換係数の逆量子化についても同じであるため、2つの方法は、実際には数学的に同一である。
【0133】
続いて、符号予測プロセス1300は、仮説生成動作1106を実行してもよく、この動作では、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することができる。最初に、複数の符号候補の組み合わせは、変換係数候補のセットに含まれる係数の総数に基づいて、変換係数候補のセットに対して決定することができる。例えば、合計L個の変換係数候補が存在する場合、変換係数候補のセットに対する複数の符号候補の組み合わせは、2L個の符号候補の組み合わせとすることができる。各符号候補は、負符号(-)でも正符号(+)でもよい。各符号候補の組み合わせは、合計L個の負符号又は正符号を含んでもよい。例えば、L=2の場合、複数の符号候補の組み合わせは、それぞれ(+,+)、(+,-)、(-,-)、及び(-,-)である22=4個の符号候補の組み合わせを含むことができる。
【0134】
次に、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対して複数の仮説候補をそれぞれ生成することができる。実行する必要がある逆一次変換及び逆二次変換の複雑さを軽減するために、本明細書で開示されたテンプレートベースの仮説生成スキームは、変換ブロックの再構成された辺縁サンプルの生成を最適化することに用いることができる。テンプレートベースの仮説生成スキームを実装するための2つの例示的なアプローチは、本明細書で開示される。テンプレートベースの仮説生成スキームを実装するための他の例示的なアプローチも可能であると考えられるが、これは、本明細書では限定されない。
【0135】
第1例示的なアプローチでは、各符号候補の組み合わせに対応する仮説候補がテンプレートの線形結合に基づいて生成することができ、それにより、複数の仮説候補は、複数の符号候補の組み合わせに対してそれぞれ生成することができる。各テンプレートは、変換係数候補のセットからの変換係数候補に対応してもよい。各テンプレートは、変換ブロックの上端と左端の境界にある再構成されたサンプル群を表すことができる。各テンプレートは、変換ブロックに逆二次変換及び逆一次変換を適用することにより生成することができ、1に設定されたテンプレートに対応する変換係数候補を除いて、変換係数候補のセットのうちの各変換係数候補は、0に設定される(例えば、テンプレートに対応する変換係数候補は、1に設定されるが、残りの各変換係数候補は、0に設定される)。
【0136】
例えば、各符号候補の組み合わせに対応する仮説候補は、テンプレートの線形結合となるように設定することができる。それぞれの変換係数候補に対応するテンプレートの場合、テンプレートのそれぞれの重みは、それぞれの変換係数候補に対応する逆量子化された変換係数の強度に設定することができる。テンプレートの線形結合に基づく仮説生成の例は、
図14に示され、以下でより詳細に説明する。
【0137】
変換係数候補の符号を予測するために、ビデオエンコーダ20又はデコーダ30は、コスト関数から計算されたコスト値を最小化できる符号候補の組み合わせに関連する仮説を特定する前に、全ての仮説候補をトラバースしてもよい。上述した第1例示的なアプローチでは、各仮説候補は、複数のテンプレートの組み合わせに基づいて生成することができるが、そのような組み合わせに関するサンプルごとの計算(例えば、加算、乗算及びシフト)を考慮すると、比較的複雑である。コスト関数から計算されたコスト値を最小化する仮説の特定に関連する計算の複雑さを軽減するために、第2例示的なアプローチが本明細書で導入される。
【0138】
第2例示的なアプローチでは、複数の仮説候補に関連する複数の符号候補の組み合わせは、それぞれ、複数の仮説候補に対する複数の仮説インデックスとして扱うことができる。例えば、デジタル0と1は、それぞれ正符号(+)と負符号(-)を表すように構成することができる。仮説候補に対応する符号候補の組み合わせは、仮説候補に固有の表現(即ち、仮説インデックス)として用いることができる。例えば、予測される符号が3つあると仮定する(例えば、L=3)。仮説インデックス000は、3つの符号候補を全て正に設定することにより生成された仮説候補を表すことができる(例えば、3つの符号候補は、(+,+,+)である)。同様に、仮説インデックス010は、第1符号候補と第3符号候補を正に設定し、第2符号候補を負に設定することにより生成された仮説候補を表すことができる(例えば、3つの符号候補は、(+,-,+)である)。
【0139】
次に、複数の仮説候補は、複数の仮説インデックスのゲイリーコード順序に基づいて生成することができ、それにより、前の仮説インデックスを有する前の仮説候補の再構成されたサンプルは、現在の仮説インデックスを有する現在の仮説候補を生成することに用いることができる。現在の仮説候補の現在の仮説インデックスは、複数の仮説インデックスのゲイリーコード順序に従って、前の仮説候補の前の仮説インデックスの直後であってもよい。現在の仮説インデックスは、前の仮説インデックスに関連する符号候補を正(又は負)から負(又は正)に変更することにより生成することができる。例えば、現在の仮説インデックスは、前の仮説インデックス内の単一の「0」(又は「1」)を「1」(又は「0」)に変更することにより取得することができる。
【0140】
例えば、複数の仮説インデックスは、複数の仮説インデックスのゲイリーコード順序に基づいて並べ替えられ、並べ替えられた仮説インデックスのシーケンスを生成することができる。並べ替えられた仮説インデックスのシーケンス内の第1仮説インデックスの場合、第1仮説インデックスに対応する第1仮説候補は、変換係数候補のセットのうちの各変換係数候補が1に設定された変換ブロックに逆二次変換及び逆一次変換を適用することにより生成することができる。並べ替えられた仮説インデックスのシーケンス内の、第1仮説インデックスの直後にある第2仮説インデックスの場合、第2仮説インデックスに対応する第2仮説候補は、(a)第1仮説インデックスに対応する第1仮説候補、及び、(b)第2仮説候補の調整項に基づいて生成することができる。下記表3は、変換係数候補の数が3(例えば、L=3)である場合に、LFNSTの全ての仮説候補を生成する例示的なプロセスを示す。
表3
【表3】
【0141】
上記表3では、第1列は、23=8個の符号候補の組み合わせをそれぞれ示す。第2列は、デジタル0と1を用いて正符号(+)及び負符号(-)を表すことにより、符号候補の組み合わせに対応する仮説インデックスをそれぞれ示す。第2列における仮説インデックスは、ゲイリーコード順序(例えば、000、001、011、010、110、111、101、100の順序)に従って並べられる。第3列は、符号候補の組み合わせと仮説インデックスに対応する仮説候補をそれぞれ示す。第4列は、仮説候補の計算をそれぞれ示す。
【0142】
表3では、第4列におけるTXYZは、対応するテンプレート(即ち、変換ブロックの上端と左端の境界にある再構成されたサンプル)を表し、この対応するテンプレートは、特定の変換係数が1に設定され、他の全ての変換係数が0に等しい変換ブロックの係数行列に逆変換を適用することにより生成することができる。例えば、T100は、第1符号候補に対応する変換係数のみが1に設定され、係数行列中の全ての変換係数が0に設定された係数行列に逆変換を適用することにより生成された対応テンプレートを表す。C0、C1及びC2は、それぞれ、第1、第2及び第3符号候補に関連する逆量子化された変換係数の絶対値を表す。
【0143】
表3を参照すると、第1仮説インデックス000については、第1仮説候補H000は、各変換係数候補が1に設定された変換ブロックに関連する係数行列に逆二次変換及び逆一次変換を適用することにより生成される。第1仮説インデックス000の直後にある第2仮説インデックス001については、第2仮説候補H001は、(a)第1仮説候補H000、及び、(b)第2仮説候補の調整項(例えば、-C2*T001)に基づいて生成することができる。同様に、第2仮説インデックス001の直後にある第3仮説インデックス011については、第3仮説候補H011は、(a)第2仮説候補H001、及び、(b)第3仮説候補の調整項(例えば、-C1*T010)に基づいて生成することができる。第3仮説インデックス011の直後にある第4仮説インデックス010については、第4仮説候補H010は、(a)第3仮説候補H011、及び、(b)第4仮説候補の調整項(例えば、C2*T001)に基づいて生成することができる。
【0144】
続いて、最小コストに関連する仮説は、水平方向、垂直方向及び対角方向に沿った結合勾配を組み込んだコスト関数に基づいて、複数の仮説候補から決定することができる。上述したように、コスト関数が水平方向及び垂直方向の勾配のみを利用する場合(例えば、上記式(5)に示すような場合)、不均一性の高い画像信号に対してはうまく機能しない可能性がある。本開示と一致して、コスト関数の精度を向上させるために、1つ以上の対角方向に沿った勾配も利用される。例えば、左対角方向と右対角方向を含む2つの対角方向をコスト関数に組み込むこともできる。例えば、2つの対角方向のコスト関数は、下記式(12)及び(13)に従って説明することができる。
【数13】
【数14】
【0145】
上記式(12)又は(13)では、B-1,n-1、B-2,n-2、B-1,n+1、及びB-2,n+2は、変換ブロックの上端の隣接するブロックからの隣接するサンプルを表す。Cm-1,-1、Cm-2,-2、Cm+1,-1、及びCm+2,-2は、変換ブロックの左端の隣接するブロックからの隣接するサンプルを表す。P0,n及びPm,0は、それぞれ変換ブロックの上端と左端の境界にある再構成されたサンプルを表す。N及びMは、それぞれ変換ブロックの幅及び高さを表す。costD1及びcostD2は、それぞれ左対角方向、右対角方向の左対角コスト関数、右対角コスト関数を表す。
【0146】
対角方向の2つのコスト関数(例えば、costD1及びcostD2)は、水平方向及び垂直方向のコスト関数(例えば、上記式(5)に示すcostHV)と共同で用いることができる。そして、符号予測のためのコスト関数は、水平方向と垂直方向に沿った勾配を組み込んだ水平と垂直のコスト関数、左対角方向に沿った勾配を組み込んだ左対角コスト関数、及び右対角方向に沿った勾配を組み込んだ右対角コスト関数に基づいて決定することができる。例えば、コスト関数は、式(14)で説明されているように、水平と垂直のコスト関数、左対角コスト関数及び右対角コスト関数の加重和であってもよい。
cost=costHV+ω(costD1+costD2) (14)
【0147】
上記式(14)では、ωは、左対角コスト関数及び右対角コスト関数の重みを表す。
【0148】
別の例では、コスト関数は、式(15)で説明されているように、水平と垂直のコスト関数、左対角コスト関数、及び右対角コスト関数の最小値であってもよい。
cost=min{costHV,costD1,costD2} (15)
【0149】
上記式(5)と比較すると、本明細書で開示された式(14)又は式(15)のコスト関数は、対角方向に沿ったコスト関数costD1及びcostD2をサポートするために、より多くの隣接ピクセルを必要とする場合があり、これについては、
図16A及び
図16Bを参照して以下でより詳細に説明する。
【0150】
いくつかの実装形態では、各仮説候補に対応するコストは、上記式(14)又は(15)を用いて決定することができる。そして、複数のコストは、複数の仮説候補に対してそれぞれ計算することができる。複数のコストのうちから最小のコストを決定することができる。最小コストに関連する仮説候補は、複数の仮説候補から決定され、符号予測のための仮説として選択することができる。
【0151】
続いて、符号予測プロセス1300は、符号生成動作1108を実行してもよく、この動作では、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせが決定される。例えば、選択された仮説を生成するために用いられる符号候補の組み合わせ(例えば、L個の符号候補)は、L個の変換係数候補の予測された符号として用いることができる。
【0152】
いくつかの実装形態では、符号生成動作1308は、ベクトルベースの符号予測スキームを予測された符号のセットに適用して、変換係数候補のセットの符号シグナリングビットのシーケンスを生成することを含んでもよい。符号シグナリングビットのシーケンスを含むビットストリームは、ビデオエンコーダ20によって生成され、
図1の記憶デバイス32に記憶されてもよい。その代わりに又は更に、ビットストリームは、
図1のリンク16を介して、ビデオデコーダ30に送信されてもよい。
【0153】
上述したように、変換ブロック内の変換係数の符号が適切に予測される場合、複数の連続した変換係数の符号を正しく予測できる可能性が非常に高い。この場合、既存の符号予測設計のシグナリングスキームは、各変換係数の対応する符号が正しく予測できることを個別に示すために、複数のビン「0」をシグナリングする必要があるため、変換ブロックの符号値をシグナリングするためのオーバーヘッドの点で明らかに非効率である。既存の符号予測スキームの例示的な実装形態は、
図15Aを参照して以下でより詳細に説明される。
【0154】
本開示と一致して、符号シグナリングの効率は、本明細書で開示されたベクトルベースの符号予測スキームを適用することにより向上させることができる。具体的には、変換ブロックの変換係数候補は、複数の群に分割することができ、各群内の変換係数候補の符号をまとめて予測することができる。この場合、1群内の変換係数候補の元の符号(又は真の符号)がそれぞれの予測された符号と同じである場合には、群内の全ての符号が正しく予測されたことを示すために、値が「0」であるビンのみは、ビットストリーム内で送信される必要がある。それ以外の場合(即ち、元の符号が予測された符号とは異なる群内に少なくとも1つの変換係数候補が存在する場合)には、群内の変換係数候補の符号が全て正しく予測されたわけではないことを示すために、値が「1」であるビンは、ビットストリーム内で最初にシグナリングすることができる。そして、群内の各予測された符号の対応する正確さを通知するために、ビデオエンコーダ20からビデオデコーダ30へのビットストリーム内で、追加のビンもシグナリングすることができる。本明細書で開示されたベクトルベースの符号予測スキームの例示的な実装形態は、
図15Bを参照して以下でより詳細に説明される。
【0155】
いくつかの実装形態では、変換係数候補のセットは、複数の変換係数候補の群に分割することができる。各変換係数候補群については、1つ以上の符号シグナリングビットは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であるか否かに基づいて、変換係数候補群に対して生成することができる。変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であることに応答して、値が0(「0」)であるビンを生成して、符号シグナリングビットとしてビットストリームに追加することができる。例えば、ビットストリームは、変換係数候補群の予測された符号が正しく予測されたことを示す「0」を含んでもよい。
【0156】
一方、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一ではないことに応答して、値が1(「1」)であるビンを生成することができる。変換係数候補群の予測された符号の対応する正確さを通知するための追加のビンのセットも生成することができる。次に、値が1であるビンと追加のビンのセットとは、符号シグナリングビットとしてビットストリームに追加することができる。例えば、追加のビンのセットは、変換係数候補群の元の符号と予測された符号のXOR結果とすることができる。値が「0」である追加のビンは、追加ビンに対応する変換係数候補の予測された符号が正しく予測されたことを示すことができるが、値が「1」である追加のビンは、追加ビンに対応する変換係数候補の予測された符号が誤って予測されたことを示すことができる。ビットストリームは、(a)変換係数候補群の予測された符号が正しく予測されなかったことを示す「1」と、(b)どの予測された符号が正しく予測され、どの予測された符号が誤って予測されたかを示す追加のビンのセットとを含んでもよい。
【0157】
いくつかの実装形態では、各変換係数候補群のサイズは、1つ以上の所定の基準に基づいて適応的に変更することができる。1つ以上の所定の基準には、変換ブロックの幅又は高さ、変換ブロックの符号化モード(例えば、イントラ符号化又はインター符号化)、及び変換ブロック内の非ゼロ変換係数の数などが含まれてもよい。いくつかの実装形態では、各変換係数候補群のサイズは、SPS、PPS、スライス若しくはピクチャレベル、CTU若しくはCUレベル、又は変換ブロックレベルなどの様々な符号化レベルでビットストリーム内でシグナリングすることができる。
【0158】
いくつかの実装形態では、本明細書で開示されたベクトルベースの符号予測スキームの適用シナリオを限定するために、1つ以上の制約が適用されてもよい。例えば、本明細書で開示されたベクトルベースの符号予測スキームは、変換ブロック内の変換係数の第1部分の符号を処理するために適用することができるが、変換ブロック内の変換係数の第2部分の符号は、既存の符号予測スキームを用いて処理することができる。更なる実施例では、本明細書で開示されたベクトルベースの符号予測スキームは、変換ブロックからの最初のN個(例えば、N=2、3、4、5、6、7、又は8など)の非ゼロ変換係数候補に適用することができるが、変換ブロック
からの他の変換係数候補の符号は、
図15Aに示す既存の符号予測スキームを用いて処理することができ、これについては本開示で後述する。
【0159】
本開示と一致して、本明細書で開示された符号予測プロセス1100は、いくつかのシナリオで無効にされてもよい。例えば、LFNSTがイントラテンプレートマッチングモードによって符号化される符号化ブロックに適用される場合、一次変換は、DST-VIIとすることができる。ECM内のLFNSTのコア変換は主に、一次変換がDCT-IIである場合にはトレーニングされるとすると、イントラテンプレートマッチングブロックの対応するLFNST変換係数は、他のLFNSTブロックの係数と比較した場合に異なる特性を示す可能性がある。この理論的根拠に基づいて、符号予測プロセス1300は、現在の符号化ブロックがイントラテンプレートマッチングブロックであり、LFNSTを用いて符号化される場合には、無効にされてもよい。
【0160】
本開示と一致して、LFNSTブロックの予測された符号の最大数と非LFNSTブロックの予測された符号の最大数は、符号予測の計算の複雑さを制御するために異なっていてもよい。例えば、LFNSTブロックの予測された符号の最大数は、6(又は4)に設定されてもよいが、非LFNSTブロックの予測された符号の最大数は、6(又は4)とは異なる値を有してもよい。更に、予測された符号の最大数の異なる値は、LFNSTを適用するビデオブロックとLFNSTを適用しないビデオブロックに適用されてもよい。いくつかの実装形態では、ビデオエンコーダ20は、エンコーダの対応する複雑さ又は性能優先順位に基づいて、LFNSTブロックの予測された符号の最大数を決定してもよく、その最大数をビデオデコーダ30にシグナリングしてもよい。LFNSTブロックの予測された符号の最大数は、ビデオデコーダ30にシグナリングされる場合、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、ピクチャ若しくはスライスレベル、又はCTU若しくはCUレベルなどの様々な符号化レベルでシグナリングすることができる。いくつかの実装形態では、ビデオエンコーダ20は、LFNSTを適用するビデオブロックとLFNSTを適用しないビデオブロックの予測された符号の最大数の異なる値を決定し、ビデオエンコーダ20からビデオデコーダ30に最大数の値をシグナリングすることができる。
【0161】
本開示と一致して、一次変換及び二次変換の両方の変換係数が固定されているとすると、ビデオエンコーダ20又はビデオデコーダ30は、異なる変換ブロックサイズ及び一次変換と二次変換の組み合わせの異なる組み合わせに対して、テンプレート(例えば、テンプレートのサンプル)を予め計算することができる。ビデオエンコーダ20又はビデオデコーダ30は、最適化された実装のためにテンプレートのサンプルをオンザフライで生成する複雑さを回避するために、テンプレート(例えば、テンプレートのサンプル)を内部又は外部メモリに記憶することができる。テンプレートのサンプルは、記憶サイズとサンプル精度との間の異なるトレードオフを達成するために、異なる小数精度で記憶されてもよい。例えば、ビデオエンコーダ20又はビデオデコーダ30は、テンプレートの浮動サンプルを固定係数(例えば、64、128又は256)でスケーリングし、スケーリングされたサンプルを最も近い整数に丸めることができる。丸められたサンプルは、メモリに記憶されてもよい。次に、テンプレートを用いて仮説候補を再構成する場合、まず、その対応するサンプルを元の精度にデスケールして、仮説候補で生成されたサンプルが正しいダイナミックレンジ内にあることを保証する。
【0162】
図14は、本開示のいくつかの実装形態に係る、テンプレートの線形結合に基づく例示的な仮説生成を示すグラフィック表現である。
図14では、4つのパターン化されたブロック0~3は、符号が予測される変換係数候補を表す。係数C
0、C
1、C
2、及びC
3は、4つの変換係数候補の逆量子化された変換係数の対応する値を表す。テンプレート0~3は、4つの変換係数候補0~3にそれぞれ対応してもよい。例えば、変換係数候補0に対応するテンプレート0は、変換ブロックに逆二次変換と逆一次変換を適用することにより、生成することができ、この変換ブロック内に、変換係数候補0は、1に設定され、変換ブロック内の残りの変換係数候補は、0に設定される。同様に、テンプレート1~3は、それぞれ生成することができる。仮説候補は、テンプレート0~1と重みC
0~C
3をそれぞれ追加することによって生成することができる。
【0163】
図15Aは、いくつかの実施例に係る、既存の符号予測スキームの例示的な実装形態を示すグラフィック表現である。
図15Bは、本開示のいくつかの実装形態に係る、ベクトルベースの符号予測スキームの例示的な実装形態を示すグラフィック表現である。既存の符号予測スキームと本明細書で開示されたベクトルベースの符号予測スキームとの間の例示的な比較は、
図15A及び
図15Bを参照して本明細書で説明される。
【0164】
図15A及び
図15Bでは、変換ブロックには、符号予測のための変換係数候補として選択される6つの非ゼロ変換係数が存在する。変換係数候補は、ラスタ走査順序を用いて変換ブロックの係数行列から走査される。変換係数候補の元の符号と予測された符号は、
図15A及び
図15Bにも示されている。例えば、値が「-2」である第1変換係数候補の元の符号及び予測された符号は、いずれも「-」である(
図15A及び
図15Bでは「1」と表される)。値が「3」である第2変換係数候補の元の符号及び予測された符号は、いずれも「+」である(
図15A及び
図15Bでは「0」と表される)。値が「1」である第3変換係数候補の元の符号は「+」、予測された符号は「-」である(
図15A及び
図15Bでは、それぞれ「0」、「1」と表される)。第3変換係数候補の元の符号は、誤って予測される。
図15A及び
図15Bに示すように、第3変換係数を除いて、他の全ての変換係数候補の元の符号は、それらの対応する予測された符号と同じである(即ち、正しく予測される)。
【0165】
図15Aに示すように、合計6つのビン(即ち、0、0、1、0、0及び0)が生成され、各ビンは、変換係数候補に対応する。6つのビンは、6つの変換係数候補の元の符号と予測された符号との間でXOR演算を実行することによって生成することができる。6つのビンは、6つの予測された符号の対応する正確さを示すことに用いることができる。例えば、第1ビン及び第2ビンの値が「0」である場合、第1及び第2変換係数候補の予測された符号が正しいことを示す。値が「1」である第3ビンは、第3変換係数の予測された符号が正しくないことを示す。6つのビンは、エントロピー符号化のために、CABACに送信することができる。
【0166】
図15Bに示すように、本明細書で開示されたベクトルベースの符号予測スキームは、6つの変換係数候補を3つの群に分割し、各群は、2つの連続した変換係数候補を含む。群#0及び#2の変換係数候補の符号が正しく予測できるため、この2つの群について、値が「0」であるビンが2つだけ生成される。群#1については、符号が正しく予測できない第3変換係数候補が含まれているため、値が「1」であるビン(
図15Bで下線が引かれている)が生成され、ビットストリーム内でシグナリングされ、この群には、元の符号がその予測された符号とは異なる変換係数候補を少なくとも含むことを示す。続いて、群#1の第3と第4変換係数候補に対して、値が「1」と「0」である2つの追加ビンが生成されて、それらの符号が正しく予測できるか否かを示す。これに対応して、本明細書で開示されたベクトルベースの符号予測スキームが適用される場合、CABACに対して生成される合計5つのビンがあり、それは、
図15Aに示す既存の符号予測スキームによって生成されるビンよりも少ないビットを有する。したがって、本明細書で開示されたベクトルベースの符号予測スキームを適用することにより、シグナリングオーバーヘッドを低減することができ、変換ブロックの符号化効率を向上させることができる。
【0167】
本開示と一致して、
図15Bに示すように、ラスタ走査順序が変換ブロックの係数行列から変換係数候補を取得するために用いられるが、他の走査順序も、符号予測のための変換係数候補を選択するために用いることができる。例えば、変換係数候補は、上述した1つ以上の選択基準に基づいて選択することができる。同様の説明は、本明細書では繰り返さない。
【0168】
図16Aは、本開示のいくつかの実装形態に係る、左対角方向に沿った左対角コスト関数の例示的な計算を示すグラフィック表現である。
図16Bは、本開示のいくつかの実装形態に係る、右対角方向に沿った右対角コスト関数の例示的な計算を示すグラフィック表現である。costHVの計算における上記式(
5)と比較すると、上記式(14)又は(15)に示す左対角コスト関数costD1又は右対角コスト関数costD2は、対角方向に沿ったコスト関数costD1及びcostD2の計算をサポートするために、より多くの隣接ピクセルを必要とする場合がある(
図16A及び
図16Bの領域1602、1604及び1
606内にマークされたピクセルとして示される)。領域1602、1604及び1606内のこれらのピクセルが利用できない場合、最も近いパディング方法を用いて、これらの利用できない位置を埋めることができる。例えば、領域1606内のB
-1,4が利用できない場合、B
-1、4に最も近い利用できるピクセルであるB
-1、3を用いて、B
-1,4の位置を埋める(例えば、B
-1,4=B
-1,3)。領域1602内のB
-1,-1(C
-1,-1でも示される)、B
-1,-2(C
-1,-1)、B
-2,-1(C
-1,-1)、及びB
-2、-2(C
-1,-1)が利用できない場合、利用できない位置を埋めるためのいくつかの例示的な方法が本明細書で開示される。
【0169】
第1例示的な方法では、下記式(16)~(19)に示すように、各利用できない位置は、その最も近い利用できるピクセルに重みを付けることによって埋めることができる。
B-2,-2=(B-2,0+C0,-2)*0.5 (16)
B-2,-1=(2*B-2,0+C0,-1)/3 (17)
B-1,-2=(B-1,0+2*C0,-2)/3 (18)
B-1,-1=(B-1,0+C0,-1)*0.5 (19)
【0170】
第2例示的な方法では、利用できない位置の一部は、それらの最も近い利用できるピクセルでそれぞれ埋めることができる。例えば、領域1602内のB-1,-2が利用できない場合、それは、C0,-2で埋められる。B-2,-1が利用できない場合、それは、B-2,0で埋められる。しかしながら、B-2,-2とB-1,-1が利用できない場合、上記式(16)及び式(17)に従って計算されたそれらの最も近い隣接するピクセルの平均値で埋めることができる。
【0171】
第3例示的な方法では、利用できる隣接する再構成されたサンプルのみは、コスト関数を計算することに用いられる。現在のブロックの上端/左端の境界に沿った1つの境界サンプルのコスト計算に利用できない再構成されたサンプルが含まれる場合、それらのサンプルは、対応する方向のコストの計算に用いられない。例えば、
図16Bでは、境界サンプルP
0,0、P
0,1、P
1,0及びP
1,0のみは、右上方向のコスト関数の値の計算に用いられるが、P
0,2、P
0,3、P
2,0、及びP
3,0は、コスト計算が利用できない少なくとも1つの参照サンプルを参照するため、用いられない。
【0172】
本開示と一致して、左対角及び右対角(即ち、
図16A及び
図16Bに示される135°及び45°)は、上記式(14)又は(15)に示されるコスト関数の計算において説明の目的で用いられるが、他の測定要素(例えば、1つ以上の任意の方向に沿った連続性の測定)は、符号予測のためのコスト関数の計算に組み込むことができると考えられる。
【0173】
第4実装形態では、1つの現在のブロックの隣接するサンプル間のテクスチャ情報の勾配解析に基づくサンプル外挿方法は、符号予測のためのコスト関数の精度を向上させるために、実装することができる。常に固定の外挿方向(例えば、上記の隣接するサンプルには垂直の外挿、水平に隣接するサンプルには水平の外挿)を用いる代わりに、現在のブロックの上端と左端に隣接する再構成されたサンプルのテクスチャ解析は、エンコーダとデコーダの両方で実行することができ、隣接するサンプルの勾配の最も支配的な方向は、現在のブロックの上端と左端の境界に沿った境界サンプルを外挿するために選択することができる。
【0174】
例えば、
図17は、本開示のいくつかの実装形態に係る、現在のブロックの隣接する再構成されたサンプル内の支配的な勾配方向を捉える方法1700のフローチャートである。方法1700は、ビデオエンコーダ20又はビデオデコーダ30に関連するビデオプロセッサにより実装されてもよく、以下に説明されるステップ1702~1712を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図17に示す順序とは異なる順序で実行されてもよい。
【0175】
ステップ1702では、勾配導出のために現在のブロックの参照サンプルを選択する。いくつかの実装形態では、参照サンプルがテンプレートを形成する。例えば、
図18Aは、本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的なテンプレートサンプルと勾配フィルタウィンドウを示すグラフィック表現である。
図18Aに示すように、現在のブロックの上端及び左端に隣接する再構成されたサンプルのN行及び列のテンプレートは、勾配導出のための参照サンプルとして用いられる。
図18Aの例では、テンプレートのサイズは、3に等しい。
【0176】
ステップ1704では、勾配のヒストグラム(HoG)を初期化する。例えば、HoGは、多数のエントリを用いて生成することができ、勾配のヒストグラムの各エントリは、所定の角度方向における勾配の累積強度に対応する。各エントリは、0として初期化することができる。例えば、
図18Bは、本開示のいくつかの実装形態に係る、コスト関数のサンプル外挿方向の勾配ベースの選択における例示的な勾配のヒストグラム(HoG)を示すグラフィック表現である。実際には、開示された勾配解析スキームでは、異なる所定の方向が用いられてもよい。一実施形態では、VVC/ECMにおける通常のイントラ予測の65個の角度方向に対して定義されたのと同じ方向が用いられる。
【0177】
ステップ1706では、勾配フィルタウィンドウを参照サンプルに適用してそれぞれの勾配を計算する。
図18Aに示すように、1つのN×Nの勾配フィルタウィンドウをテンプレートの中央の行/列にある各テンプレートサンプルに適用して(即ち、フィルタウィンドウがサンプル位置の中心にある)、その対応する水平勾配G
hと垂直勾配G
vをそれぞれ計算する。
【0178】
ステップ1708では、各参照サンプルの勾配の角度(Angle)と強度(Amp)
を計算する。例えば、式(20)及び式(21)により、サンプルの勾配を計算することができる。
【数15】
Amp=|Gh|+|Gv| (21)
【0179】
ステップ1710では、勾配の角度を1つの所定の方向に変換し、HoG内の対応するエントリを更新することができる。例えば、
図18Bに示すように、各角度のHoGの振幅は、その角度のサンプル勾配の強度(Amp)を加算することにより更新される。その結果、振幅は、累積強度となる。
【0180】
ステップ1712では、最大の累積強度を有するHoGのエントリを選択して、現在のブロックのコスト関数の、隣接するサンプルを外挿するために用いられる方向とする。例えば、
図18Bに示すように、最大のエントリは、丸で囲まれている。
【0181】
上記の方法では、最大の強度を有する方向は、サンプル外挿方向として選択される。このような方法は、何らかのノイズ(例えば、他の符号化モジュールによって引き起こされる量子化誤差及び/又は符号化ノイズ)がある場合、必ずしも信頼できるとは限らない。このような問題を解決するために、特定の条件は、支配的な勾配方向を外挿方向として採用する前に適用することができる。
【0182】
例えば、1つの実装形態では、選択された支配的な勾配方向は、選択された勾配方向に属する十分なテンプレートサンプルがある場合(例えば、選択された方向に属するサンプルの割合が、所定の閾値を超えるなど十分に大きい場合)にのみ、コスト関数の計算におけるサンプル外挿に対して有効にされてもよい。それ以外の場合(例えば、選択された方向に属するテンプレートサンプルの数が十分でない場合)、デフォルトの外挿(例えば、上端に隣接するサンプルの垂直外挿及び左端に隣接するサンプルの水平外挿)が依然として適用される。
【0183】
別の実装形態では、選択された支配的な勾配方向は、その支配的な勾配方向に関連する勾配の強度が十分に大きい場合(例えば、選択された勾配方向の強度と全ての勾配方向の強度の和との比が別の所定の閾値よりも大きい場合)にのみ、コスト関数の計算におけるサンプル外挿に対して有効にされてもよい。それ以外の場合(例えば、選択された方向の勾配の強度が有意でない場合)、デフォルトの外挿が依然として適用される。
【0184】
更に別の実装形態では、上記の制約が共に適用される。即ち、選択された方向は、選択された方向に関連するテンプレートサンプルの数が十分に大きく、勾配の強度が十分に大きい場合にのみ、現在のブロックのサンプル外挿に対して有効になる。それ以外の場合は、デフォルトの外挿は、依然として適用される。
【0185】
更に別の実装形態では、選択された支配的な勾配方向が有効である場合、1つのブロック内の符号を予測するとき、選択された方向に直交する方向は、コスト関数の計算におけるサンプル外挿に用いられる。例えば、選択された方向が45度である場合、現在のブロックの上端及び下端の境界に沿ったサンプルを外挿する方向として、135度が用いられる。同様に、選択された方向が135度である場合、現在のブロックの上端と左端の境界に沿ったサンプルを外挿する方向として、45度が用いられる。
【0186】
図19は、本開示のいくつかの実装形態に係る、ブロックベースのビデオ符号化における例示的な符号予測方法1900のフローチャートである。方法1900は、ビデオエンコーダ20又はビデオデコーダ30に関連するビデオプロセッサにより実装されてもよく、以下に説明されるステップ1802~1808を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図19に示す順序とは異なる順序で実行されてもよい。
【0187】
ステップ1902では、ビデオプロセッサは、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することができる。
【0188】
ステップ1904では、ビデオプロセッサは、符号予測のために、変換係数から変換係数候補のセットを選択することができる。
【0189】
ステップ1906では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、変換係数候補のセットの複数の仮説候補から1つの仮説を選択することができる。
【0190】
ステップ1908では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
本開示と一致して、方法
1900及び
図15は、ビデオエンコーダ側又はビデオデコーダ側で実行されてもよい。方法
1900は、ビデオエンコーダ側で実行される場合、ビデオエンコーダ側での変換係数の符号予測のための符号化方法として考慮されてもよい。方法
1900は、ビデオデコーダ側で実行される場合、ビデオデコーダ側での変換係数の符号予測のための復号方法として考慮されてもよい。ビデオデコーダ側での変換係数の符号予測のための例示的な符号化方法及び
ビデオエンコーダ側での変換係数の符号予測のための例示的な復号方法は、それぞれ、
図20及び
図21を参照して以下に提供される。
【0191】
図20は、本開示のいくつかの実装形態に係る、ビデオエンコーダによって実行される変換係数の符号予測のための例示的なビデオ符号化方法2000のフローチャートである。方法2000は、ビデオエンコーダ20に関連するビデオプロセッサによって実装されてもよく、以下に説明されるステップ2002~2018を含んでもよい。具体的には、方法2000のステップ2006~2012は、方法1900のステップ1906の例示的な実装形態として実行されてもよい。一部のステップは、本明細書で提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図20に示す順序とは異なる順序で実行されてもよい。
【0192】
ステップ2002では、ビデオプロセッサは、ビデオからのビデオフレームの変換ブロックに一次変換及び二次変換を適用して、変換ブロックの変換係数を生成することができる。
【0193】
ステップ2004では、ビデオプロセッサは、符号予測のために、変換係数から変換係数候補のセットを選択することができる。
【0194】
ステップ2006では、ビデオプロセッサは、変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定することができる。
【0195】
ステップ2008では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対してそれぞれ複数の仮説候補を生成することができる。
【0196】
ステップ2010では、ビデオプロセッサは、変換ブロックの隣接するサンプルの外挿のための支配的な勾配方向を捉えることができる。例えば、ビデオプロセッサは、上記の
図17に関連して説明したように、支配的な勾配方向を捉える方法1700を実行することができる。
【0197】
ステップ2012では、ビデオプロセッサは、支配的な勾配方向に基づいて隣接するサンプルを外挿するコスト関数に基づいて、複数の仮説候補から最小コストに関連する仮説を選択することができる。いくつかの実装形態では、上述したように、支配的な勾配方向は、コスト関数を計算する目的で外挿方向として採用される前に、特定の条件を満たさなければならない。ビデオプロセッサは、これらの条件が満たされたか否かを判定することができる。そうである場合、隣接するサンプルの外挿は、コスト関数を計算する際に、支配的な勾配方向に沿って実行することができる。それ以外の場合、デフォルトの外挿方向(例えば、上端に隣接するサンプルの垂直外挿及び左端に隣接するサンプルの水平外挿)を用いることができる。
【0198】
ステップ2014では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
【0199】
ステップ2016では、ビデオプロセッサは、ベクトルベースの符号予測スキームを予測された符号のセットに適用して、変換係数候補のセットの符号シグナリングビットのシーケンスを生成することができる。
【0200】
ステップ2018では、ビデオプロセッサは、符号シグナリングビットのシーケンスを含むビットストリームを生成することができる。
【0201】
図21は、本開示のいくつかの実装形態に係る、ビデオデコーダによって実行される変換係数の符号予測のための例示的なビデオ復号方法2100のフローチャートである。方法2100は、ビデオデコーダ30に関連するビデオプロセッサによって実装されてもよく、以下に説明されるステップ2102~2116を含んでもよい。一部のステップは、本明細書に提供される開示を実行するために任意であってもよい。更に、一部のステップは、同時に実行されてもよく、
図21に示す順序とは異なる順序で実行されてもよい。
【0202】
ステップ2102では、ビデオプロセッサは、変換係数の符号予測のために、逆量子化された変換係数から変換係数候補のセットを選択することができる。逆量子化された変換係数は、ビデオからのビデオフレームの変換ブロックに関連する。ビデオデコーダ30における変換ブロックの逆量子化された変換係数は、ビデオエンコーダ20における変換ブロックの変換係数と等しくてもよい。
【0203】
いくつかの実装形態では、ビデオプロセッサは、符号シグナリングビットのシーケンスと、変換ブロックに関連する量子化された変換係数とを含むビットストリームを受信することができる。ビデオプロセッサは、
図3の逆量子化ユニット86を通じて、量子化された変換係数から逆量子化された変換係数を生成することができる。
【0204】
いくつかの実装形態では、ビデオプロセッサは、逆量子化された変換係数の強度に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。いくつかの実装形態では、ビデオプロセッサは、逆量子化された変換係数の量子化インデックスの強度に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。いくつかの実装形態では、ビデオプロセッサは、ビデオ符号化に適用されるエントロピー符号化の係数走査順序に基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。
【0205】
いくつかの実装形態では、ビデオプロセッサは、変換ブロックの再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアに基づいて、逆量子化された変換係数から変換係数候補のセットを選択することができる。例えば、再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアは、再構成された辺縁サンプルに対する各逆量子化された変換係数の変動のL1ノルムとして測定される。別の実施例では、再構成された辺縁サンプルに対する逆量子化された変換係数の影響スコアは、再構成された辺縁サンプルに対する各逆量子化された変換係数の変動のL2ノルムとして測定される。
【0206】
いくつかの実装形態では、ビデオプロセッサは、
図11の係数選択動作1104を参照して上述したような動作を実行して、逆量子化された変換係数から変換係数候補のセットを選択することができる。また、ビデオプロセッサは、
図19のステップ1904について上述したような動作を実行して、逆量子化された変換係数から変換係数候補のセットを選択することができる。同様の説明は、本明細書では繰り返さない。
【0207】
ステップ2104では、ビデオプロセッサは、変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定することができる。
【0208】
ステップ2106では、ビデオプロセッサは、テンプレートベースの仮説生成スキームを適用して、複数の符号候補の組み合わせに対してそれぞれ複数の仮説候補を生成することができる。
【0209】
ステップ2108では、ビデオプロセッサは、変換ブロックの隣接するサンプルの外挿のための支配的な勾配方向を捉えることができる。例えば、ビデオプロセッサは、上記の
図17に関連して説明したように、支配的な勾配方向を捉える方法1700を実行することができる。
【0210】
ステップ2110では、ビデオプロセッサは、支配的な勾配方向に基づいて隣接するサンプルを外挿するコスト関数に基づいて、複数の仮説候補から最小コストに関連する仮説を選択することができる。
【0211】
いくつかの実装形態では、支配的な勾配方向に沿ったサンプル外挿を用いるコスト関数に基づいて仮説を選択する方法2100のステップ2104~2110を実行するために、ビデオプロセッサは、方法2000のステップ2006~2012を参照して上述したような動作を実行することができる。
【0212】
ステップ2112では、ビデオプロセッサは、変換係数候補のセットの予測された符号のセットとなる選択された仮説に関連する符号候補の組み合わせを決定することができる。
【0213】
いくつかの実装形態では、ビデオプロセッサは、
図11の符号生成動作1108を参照して上述したような動作を実行することができる。また、ビデオプロセッサは、
図19のステップ1908について上述したような動作を実行して、変換係数候補のセットの予測された符号のセットを決定することができる。同様の説明は、本明細書では繰り返さない。
【0214】
ステップ2114では、ビデオプロセッサは、予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、変換係数候補のセットの元の符号を推定することができる。
【0215】
例えば、
図15Bを参照して、予測された符号のセットは、値が(1,0)である群#0と、値が(1,0)である群#2と、値が(1,0)である群#3とを含んでもよく、ここで、1は、負の符号を示し、0は、正の符号を示す。符号シグナリングビットのシーケンスは、群#0のビット「0」、群#2のビット「1,1,0」、及び群#3のビット「0」を含んでもよい。群#0のビットは、値「0」を有し、この群の値(1,0)を有する予測された符号が元の符号と同じであることを示すため、(1,0)となる群#0の推定された元の符号が決定される。群#1のビットの第1ビットは、値「1」を有し、この群の予測された符号(1,0)が元の符号と同じではないことを示すため、この群の予測された符号(1,0)と、群#1の第2ビット及び第3ビット「1,0」とのXOR結果(例えば、推定された元の符号=XOR((1,0),(1,0))=(0,0))となる群#1の推定された元の符号(1,0)が決定される。群#2のビットは、値「0」を有し、この群の値(1,0)を有する予測された符号が元の符号と同じであることを示すため、(1,0)となる群#2の推定された元の符号が決定される。したがって、変換係数候補のセットの推定された元の符号は、それぞれ、群#0、#1及び#2の推定された元の符号を連結することにより形成され、これには、(1,0,0,0,1,0)を含む。
【0216】
ステップ2116では、ビデオプロセッサは、変換係数候補のセットの推定された元の符号に基づいて、逆量子化された変換係数を更新することができる。例えば、ビデオプロセッサは、推定された元の符号を、変換係数候補のセットに対応する変換ブロック内の逆量子化された変換係数の真の符号として用いることができる。
【0217】
いくつかの実装形態では、逆量子化された変換係数が更新された後、ビデオプロセッサは、更に、逆量子化された変換係数に逆一次変換及び逆二次変換を適用して、変換ブロックに対応する残差ブロック内に残差サンプルを生成することができる。逆二次変換は、LFNSTを含む二次変換に相当する。逆一次変換は、DCT-II、DCT-V、DCT-VIII、DST-I、DST-IV、DST-VII又は恒等変換を含む一次変換に相当する。
【0218】
いくつかの実装形態では、変換係数候補のセットの符号シグナリングビットのシーケンスは、ベクトルベースの符号予測スキームを、ビデオエンコーダによって、ビデオエンコーダ側で選択された別の変換係数候補のセットの別の予測された符号のセットに適用し、符号シグナリングビットのシーケンスを含むビットストリームを生成することにより、ビデオエンコーダによって生成される。他の変換係数候補のセットは、ビデオデコーダ側の変換係数候補のセットに対応するビデオエンコーダ側の変換係数である。
【0219】
いくつかの実装形態では、ベクトルベースの符号予測スキームを、他の変換係数候補のセットの他の予測された符号のセットに適用することは、他の変換係数候補のセットを複数の変換係数候補群に分割することと、各変換係数候補群については、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であるか否かに基づいて、変換係数候補群の1つ以上の符号シグナリングビットを生成することとを更に含む。
【0220】
いくつかの実装形態では、変換係数候補群の1つ以上の符号シグナリングビットを生成することは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一であることに応答して、値が0であるビンを生成することと、このビンを符号シグナリングビットとしてビットストリームに追加することとを含む。
【0221】
いくつかの実装形態では、変換係数候補群の1つ以上の符号シグナリングビットを生成することは、変換係数候補群の元の符号が変換係数候補群の予測された符号と同一ではないことに応答して、値が1であるビンを生成することと、変換係数候補群の予測された符号の対応する正確さを通知するための追加のビンのセットを生成することと、このビンと追加のビンのセットとを符号シグナリングビットとしてビットストリームに追加することとを含む。
【0222】
図22は、本開示のいくつかの実装形態に係る、ユーザインタフェース2250に結合されるコンピューティング環境2210を示す。コンピューティング環境2210は、データ処理サーバの一部であってもよい。例えば、上述したビデオエンコーダ20又はビデオデコーダ30におけるビデオプロセッサは、コンピューティング環境2210を用いて実装することができる。コンピューティング環境2210は、プロセッサ2220と、メモリ2230と、入力/出力(I/O)インタフェース2240とを含む。
【0223】
プロセッサ2220は、典型的に、ディスプレイ、データ取得、データ通信、及び画像処理に関連する動作などの、コンピューティング環境2210の全体的な動作を制御する。プロセッサ2220は、上述した方法のステップの全部又は一部を実行する命令を実行するための1つ以上のプロセッサを含んでもよい。また、プロセッサ2220は、プロセッサ2220と他の構成要素との間のインタラクションを容易にする1つ以上のモジュールを含んでもよい。プロセッサ2220は、中央処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、グラフィック処理装置(GPU)などであってもよい。
【0224】
メモリ2230は、コンピューティング環境2210の動作をサポートするために、様々なタイプのデータを記憶するように構成される。メモリ2230は、所定のソフトウェア2232を含んでもよい。そのようなデータの例として、コンピューティング環境2210で動作する任意のアプリケーション又は方法のための命令、ビデオデータセット、画像データなどが挙げられる。メモリ2230は、静的ランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク又は光ディスクなどの任意のタイプの揮発性若しくは不揮発性メモリデバイス、又はそれらの組み合わせを使用することにより実装されてもよい。
【0225】
I/Oインタフェース2240は、プロセッサ2220と、キーボード、クリックホイール、ボタンなどのペリフェラルインタフェースモジュールとの間のインタフェースを提供する。ボタンは、ホームボタン、走査開始ボタン及び走査停止ボタンを含んでもよいが、これらに限定されない。I/Oインタフェース2240は、エンコーダ及びデコーダに結合することができる。
【0226】
いくつかの実装形態では、上述した方法を実行するための、コンピューティング環境2210内のプロセッサ2220によって実行可能な、例えばメモリ2230内の複数のプログラムを含む非一時的コンピュータ可読記憶媒体も提供される。その代わりに、非一時的コンピュータ可読記憶媒体は、例えば、ビデオデータの復号においてデコーダ(例えば、
図3におけるビデオデコーダ30)により使用された上記符号化方法を使用して、エンコーダ(例えば、
図2におけるビデオエンコーダ20)により生成された符号化されたビデオ情報(例えば、1つ以上の構文要素を含むビデオ情報)を含むビットストリーム又はデータストリームが記憶されてもよい。非一時的コンピュータ可読記憶媒体は、例えば、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、光データ記憶デバイスなどであってもよい。
【0227】
いくつかの実装形態では、1つ以上のプロセッサ(例えば、プロセッサ2220)と、当該1つ以上のプロセッサによって実行可能な複数のプログラムが記憶されている非一時的コンピュータ可読記憶媒体又はメモリ2230とを含むコンピューティングデバイスも提供され、当該1つ以上のプロセッサは、複数のプログラムを実行すると、上述した方法を実行するように構成される。
【0228】
いくつかの実装形態では、上述した方法を実行するための、コンピューティング環境2210内のプロセッサ2220によって実行可能な、例えばメモリ2230内の複数のプログラムを含むコンピュータプログラム製品も提供される。例えば、コンピュータプログラム製品は、非一時的コンピュータ可読記憶媒体を含んでもよい。
【0229】
いくつかの実施形態では、コンピューティング環境2210は、上記方法を実行するために、1つ以上のASIC、DSP、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、FPGA、GPU、コントローラ、マイクロコントローラ、マイクロプロセッサ、又は他の電子コンポーネントを使用して実装されてもよい。
【0230】
本開示の説明は、例示を目的として提示されたものであり、本開示を網羅したり限定したりすることを意図したものではない。前述の説明及び関連する図面に提示された教示の恩恵を受ける当業者にとって、多くの修正、変形、及び代替の実装形態が明らかとなるであろう。
【0231】
特に明記しない限り、本開示に係る方法のステップの順序は、例示を意図するものに過ぎず、本開示に係る方法のステップは、具体的に上述した順序に限定されず、実際の条件に応じて変更されてもよい。また、本開示に係る方法のステップのうちの少なくとも1つのステップは、実際の必要に応じて調整されてもよく、組み合わせられてもよく、削除されてもよい。
【0232】
実施例は、本開示の原理を説明し、他の当業者が様々な実装形態について本開示を理解し、意図される特定の使用に適した様々な修正を伴う基礎となる原理及び様々な実装形態を最適に利用することを可能にするために選択され、説明された。したがって、本開示の範囲は、開示された実装形態の具体例に限定されるべきではなく、修正及び他の実装形態は、本開示の範囲内に含まれることが意図されることを理解されたい。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサによって、ビデオからのビデオフレームの変換ブロックに関連する変換係数候補のセットの複数の仮説候補を生成するステップと、
前記1つ以上のプロセッサによって、支配的な勾配方向に基づいて決定された外挿方向において前記変換ブロックの隣接するサンプルを外挿することによって計算されたコスト関数に基づいて、前記複数の仮説候補から1つの仮説を選択して、前記変換係数候補のセットの予測された符号のセットとするステップと、
前記1つ以上のプロセッサによって、前記予測された符号のセットと、ビデオエンコーダから受信された符号シグナリングビットのシーケンスとに基づいて、前記変換係数候補のセットの元の符号を推定するステップと、を含む、変換係数の符号予測のためのビデオ復号方法。
【請求項2】
前記符号シグナリングビットのシーケンスと前記変換ブロックに関連する量子化された変換係数とを含むビットストリームを受信するステップと、
前記量子化された変換係数から逆量子化された変換係数を生成するステップと、
前記変換係数候補のセットの前記推定された元の符号に基づいて、前記逆量子化された変換係数を更新するステップと、を更に含む、請求項1に記載のビデオ復号方法。
【請求項3】
逆一次変換と逆低周波非分離変換(LFNST)を前記逆量子化された変換係数に適用して、前記変換ブロックに対応する残差ブロックにおける残差サンプルを生成するステップを更に含む、請求項1に記載のビデオ復号方法。
【請求項4】
前記変換ブロックの隣接するサンプルを外挿するための前記支配的な勾配方向を決定するステップを更に含む、請求項1に記載のビデオ復号方法。
【請求項5】
前記支配的な勾配方向を決定するステップは、
前記変換ブロックの隣接するサンプルのテンプレートを選択するステップと、
勾配フィルタウィンドウを前記テンプレートに適用して、それぞれの前記テンプレートの勾配を計算するステップと、
前記計算された勾配に基づいて前記支配的な勾配方向を選択するステップと、を更に含む、請求項4に記載のビデオ復号方法。
【請求項6】
前記計算された勾配に基づいて前記支配的な勾配方向を選択するステップは、
前記計算された勾配に基づいて勾配のヒストグラムを決定するステップであって、前記勾配のヒストグラムの各エントリが所定の角度方向における前記勾配の累積強度に対応するステップと、
前記勾配のヒストグラムにおける最大の前記累積強度に対応する角度方向を、前記支配的な勾配方向として選択するステップと、を更に含む、請求項5に記載のビデオ復号方法。
【請求項7】
前記計算された勾配に基づいて前記勾配のヒストグラムを決定するステップは、
各テンプレートの勾配の角度及び強度を計算するステップと、
前記勾配の角度を前記勾配のヒストグラムにおける前記所定の角度方向の1つに変換するステップと、
前記勾配の前記強度を、前記勾配の角度から変換された前記所定の角度方向に対応する累積強度に加算するステップと、を更に含む、請求項6に記載のビデオ復号方法。
【請求項8】
前記支配的な勾配方向に属する前記変換ブロックの隣接する前記サンプルの割合が第1所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定され、
或いは、
前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定され、或いは、
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超え、かつ前記支配的な勾配方向の勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超える場合、前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向が決定され、或いは、
前記コスト関数を計算する際に前記変換ブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向の直交方向が決定される、
請求項5に記載のビデオ復号方法。
【請求項9】
前記量子化された変換係数から前記逆量子化された変換係数を生成するステップは、
前記量子化された変換係数の変換係数レベルに基づいて、前記逆量子化された変換係数の量子化インデックスを決定するステップを更に含
み、
前記変換係数候補のセットは、前記逆量子化された変換係数の前記量子化インデックスの強度に基づいて、前記逆量子化された変換係数から選択され、
前記変換係数候補のセットは、前記変換ブロックの再構成された辺縁サンプルに対する前記逆量子化された変換係数の影響スコアに基づいて、前記逆量子化された変換係数から選択され、
前記再構成された辺縁サンプルに対する前記逆量子化された変換係数の前記影響スコアは、前記再構成された辺縁サンプルに対する各逆量子化された変換係数の前記量子化インデックスの変動のL1ノルム又はL2ノルムとして測定される、請求項2に記載のビデオ復号方法。
【請求項10】
前記逆量子化された変換係数の量子化インデックスを決定するステップは、各量子化された変換係数に対して、
前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルに基づいて、2つの所定のスカラー量子化器から1つの量子化器を選択するステップと、
前記量子化された変換係数に適用される前記選択された量子化器に基づいて、前記対応する逆量子化された変換係数の前記量子化インデックスを決定するステップと、を更に含む、請求項
9に記載のビデオ復号方法。
【請求項11】
前記量子化器は、状態遷移マシンに応じて、前記2つの所定のスカラー量子化器の間で選択され、前記状態遷移マシンの各状態は、前記2つの所定のスカラー量子化器のうちの1つに対応し、
前記ビデオ復号方法は、
状態遷移マシンの前の状態と、前記量子化された変換係数に先行する量子化された変換係数の前記変換係数レベルのパリティとに基づいて、状態遷移マシンの現在の状態を決定するステップと、
前記現在の状態に対応する1つの所定のスカラー量子化器を前記量子化器として選択するステップと、を更に含む、請求項
10に記載のビデオ復号方法。
【請求項12】
前記変換係数候補のセットの前記複数の仮説候補を生成するステップは、
前記変換係数候補のセットにおける変換係数候補の総数に基づいて、変換係数候補のセットの複数の符号候補の組み合わせを決定するステップと、
テンプレートベースの仮説生成スキームを適用して、前記複数の符号候補の組み合わせの前記複数の仮説候補をそれぞれ生成するステップと、を更に含む、請求項1に記載のビデオ復号方法。
【請求項13】
前記変換係数候補のセットの前記符号シグナリングビットのシーケンスは、前記変換係数候補の元の符号が前記変換係数候補の予測された符号と同一であるか否かを示す、請求項1に記載のビデオ復号方法。
【請求項14】
ビデオブロックの隣接するサンプルを外挿するための外挿方向を決定するビデオ処理方法であって、
プロセッサによって、前記ビデオブロックの隣接するサンプルのテンプレートを選択するステップと、
前記プロセッサによって、勾配フィルタウィンドウを前記テンプレートに適用して、それぞれの前記テンプレートの勾配を計算するステップと、
前記プロセッサによって、前記計算された勾配に基づいて、勾配のヒストグラムを決定するステップと、
前記勾配のヒストグラムに基づいて支配的な勾配方向を選択するステップと、
前記支配的な勾配方向に基づいて前記外挿方向を決定するステップと、を含む、ビデオ処理方法。
【請求項15】
前記勾配のヒストグラムの各エントリは、所定の角度方向における勾配の累積強度に対応し、
前記勾配のヒストグラムに基づいて前記支配的な勾配方向を選択するステップは、
最大の前記累積強度に対応する角度方向を前記支配的な勾配方向として選択するステップを更に含
み、
前記勾配フィルタウィンドウは、前記テンプレートの中間行及び中間列に位置する参照サンプルに適用される、請求項14に記載のビデオ処理方法。
【請求項16】
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超えると決定するステップと、
前記ビデオブロックの前記隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含
み、
あるいは、
前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超えると決定するステップと、
前記ビデオブロックの前記隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含み、あるいは、
前記支配的な勾配方向に属する前記変換ブロックの前記隣接するサンプルの割合が第1所定閾値を超え、かつ、前記支配的な勾配方向の前記勾配の強度と全ての勾配の強度の和との比が第2所定閾値を超えると決定するステップと、
前記ビデオブロックの隣接するサンプルを外挿するための外挿方向となる前記支配的な勾配方向を決定するステップと、を更に含み、あるいは、
前記ビデオブロックの前記隣接するサンプルを外挿するための前記外挿方向となる前記支配的な勾配方向の直交方向を決定するステップを更に含む、
請求項
14に記載のビデオ処理方法。
【請求項17】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行可能な命令を記憶するように構成されたメモリと、を含み、
前記1つ以上のプロセッサは、前記命令の実行時に、請求項1~16のいずれか一項に記載の方法を実行するように構成される、電子装置。
【請求項18】
請求項1~16のいずれか一項に記載の方法によって復号化される符号化ビデオデータと、請求項1~16のいずれか一項に記載の方法によって生成される符号化ビデオデータとを含むビットストリームを記憶する命令を有するコンピュータプログラム。
【請求項19】
請求項17に記載の電子装置より生成され、又は、復号化されるビデオビットストリームを記憶する非一時的コンピュータ可読記憶媒体。
【請求項20】
請求項1~16のいずれか一項に記載の方法で生成されているビットストリームを記憶するための方法。
【国際調査報告】