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

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

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特開2023-85337イントラ予測のためのクロスコンポーネント線形モデリングの方法、装置、デコーダ、エンコーダおよびプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023085337
(43)【公開日】2023-06-20
(54)【発明の名称】イントラ予測のためのクロスコンポーネント線形モデリングの方法、装置、デコーダ、エンコーダおよびプログラム
(51)【国際特許分類】
   H04N 19/11 20140101AFI20230613BHJP
   H04N 19/186 20140101ALI20230613BHJP
   H04N 19/46 20140101ALI20230613BHJP
【FI】
H04N19/11
H04N19/186
H04N19/46
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023041332
(22)【出願日】2023-03-15
(62)【分割の表示】P 2021538039の分割
【原出願日】2019-12-30
(31)【優先権主張番号】62/786,563
(32)【優先日】2018-12-31
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】フィリーポフ、アレクセイ コンスタンチノビッチ
(72)【発明者】
【氏名】ラフィットスキー、ヴァシリー アレクセビッチ
(72)【発明者】
【氏名】チェン、ジアンレ
(72)【発明者】
【氏名】マ、シアン
(57)【要約】      (修正有)
【課題】エンコーディング及びデコーディングのための装置並びに成分間線形モデルを適用することによりブロックのクロマサンプルをイントラ予測する方法を提供する。
【解決手段】ルックアップテーブル(LUT)から値をフェッチする効率を上げる方法は、再構築されたルマサンプルを取得する段階と、再構築されたルマサンプルに基づいて最大ルマサンプル値および最小ルマサンプル値を決定する段階と、最大ルマサンプル値および最小ルマサンプル値の差を取得する段階と、最上位ビットの位置に続くビットセットをインデックスとして用いることにより、LUTから値をフェッチする段階と、フェッチされた値に基づいて線形モデルパラメータを取得する段階と、取得した線形モデルパラメータを用いることにより、予測されるクロマサンプル値を計算する段階と、を含む。
【選択図】図11
【特許請求の範囲】
【請求項1】
エンコーダによりブロックのクロマサンプルをイントラ予測する方法であって、
ビットストリームをエンコードする段階であって、前記ビットストリームが成分間線形モデルを示す情報を含む、エンコードする段階と、
再構築されたルマサンプルを取得する段階と、
前記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
前記最大ルマサンプル値および前記最小ルマサンプル値の差を取得する段階と、
インデックスを用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差に対応する、フェッチする段階と、
フェッチされた前記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された前記線形モデルパラメータαおよび前記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
【請求項2】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差のlog2()に対応する、請求項1に記載の方法。
【請求項3】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差についてのいくつかの最上位ビットを用いて決定される、請求項1に記載の方法。
【請求項4】
前記LUTが、取得された前記差の異なる段階に対応する少なくとも2つの隣接する値を備え、前記段階の値は、差の値と共に増すか、または一定である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記フェッチされた値を前記再構築されたクロマサンプルの前記最大値および前記最小値の前記差により乗算することにより、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項5に記載の方法。
【請求項7】
前記LUTは、複数の値の複数のサブ範囲を含み、2つの隣接する値の段階は、1つのサブ範囲内で一定である、請求項1から6のいずれか一項に記載の方法。
【請求項8】
デコーダによりブロックのクロマサンプルをイントラ予測する方法であって、
ビットストリームを解析する段階であって、前記ビットストリームが成分間線形モデルを示す情報を含む、解析する段階と、
再構築されたルマサンプルを取得する段階と、
前記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
前記最大ルマサンプル値および前記最小ルマサンプル値の差を取得する段階と、
インデックスを用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差に対応する、フェッチする段階と、
フェッチされた前記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された前記線形モデルパラメータαおよび前記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
【請求項9】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差のlog2()に対応する、請求項8に記載の方法。
【請求項10】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差についてのいくつかの最上位ビットを用いて決定される、請求項9に記載の方法。
【請求項11】
前記LUTが、取得された前記差の異なる段階に対応する少なくとも2つの隣接する値を備え、前記段階の値は、差の値と共に増すか、または一定である、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項8から11のいずれか一項に記載の方法。
【請求項13】
前記フェッチされた値を前記再構築されたクロマサンプルの前記最大値および前記最小値の前記差により乗算することにより、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項12に記載の方法。
【請求項14】
前記LUTが、複数の値の複数のサブ範囲を備え、2つの隣接する値の段階は、1つのサブ範囲内で一定である、請求項8から13のいずれか一項に記載の方法。
【請求項15】
請求項1から7のいずれか一項に記載の方法を実行するための処理回路を備えるエンコーダ。
【請求項16】
請求項8から14のいずれか一項に記載の方法を実行するための処理回路を備えるデコーダ。
【請求項17】
プロセッサに、請求項1から14のいずれか一項に記載の方法を実行するためのプログラム。
【請求項18】
エンコーダであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに連結され、前記1つまたは複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1つまたは複数のプロセッサにより実行された場合、請求項1から7のいずれか一項に記載の方法を実行するよう前記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
【請求項19】
デコーダであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに連結され、前記1つまたは複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1つまたは複数のプロセッサにより実行された場合、請求項8から14のいずれか一項に記載の方法を実行するよう前記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
【請求項20】
請求項1から7のいずれか一項に従って生成される前記ビットストリームを備える非一時的記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2018年12月31日に出願された、「イントラ予測のための成分間線形モデリングの方法および装置」と題する米国仮出願第62/786,563号の利益を主張する。当該出願は、参照により、本明細書に組み込まれる。
本願(開示)の実施形態は、概して、画像処理分野に関し、より具体的には、成分間線形モデリングを用いたイントラ予測に関する。
【背景技術】
【0002】
ビデオコーディング(ビデオエンコーディングおよびビデオデコーディング)は、幅広いデジタルビデオ用途、例えば、放送デジタルTV、インターネットおよびモバイルネットワークを介したビデオ送信、ビデオチャットなどのリアルタイム会話アプリケーション、ビデオ会議、DVDおよびブルーレイディスク、ビデオコンテンツ取得および編集システムならびにセキュリティ用途のカムコーダにおいて用いられている。
【0003】
比較的短いビデオを示すためにでさえ、必要とされるビデオデータの量はかなりのものになることがあり、限定的な帯域幅容量を有する通信ネットワークを介してデータがストリーミングされるか、またはそうでなければ通信される場合、困難が生じ得る。したがって、ビデオデータは概して、現代の電気通信ネットワークを介して通信される前に圧縮される。ビデオのサイズは、ビデオがストレージデバイスに格納される場合にも問題となり得る。なぜなら、メモリリソースが限定的であることがあるからである。ビデオ圧縮デバイスは、送信元におけるソフトウェアおよび/またはハードウェアを用いて、送信または格納の前にビデオデータをコーディングすることが多く、これにより、デジタルビデオイメージを表すために必要とされるデータの量を減らす。その後、圧縮されたデータは、ビデオデータをデコードするビデオ圧縮解除デバイスにより、送信先において受信される。ネットワークリソースが限定的であり、より高いビデオ品質の需要が増え続けていることから、画像品質をほとんどから全く犠牲にせずに圧縮比を改善する、改善された圧縮技術および圧縮解除技術が望ましい。
【発明の概要】
【0004】
本願の実施形態は、独立請求項に記載のエンコーディングおよびデコーディングのための装置および方法を提供する。
【0005】
前述の目的および他の目的は、独立請求項の主題により実現される。従属請求項、明細書および図から、さらなる実装形態が明らかになる。
【0006】
第1の態様によれば、本発明は、成分間線形モデルを適用することによりブロックのクロマサンプルをイントラ予測する方法に関する。方法は、再構築されたルマサンプルを取得する段階と、再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、最大ルマサンプル値および最小ルマサンプル値の差を取得する段階と、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定する段階とを含む。方法は、ビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、ビットセットは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続く、段階と、フェッチされた値に基づいて線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、取得された線形モデルパラメータαおよび線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階とも含む。
【0007】
本発明の第1の態様によれば、LUTのインデックスは、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される。結果として、LUTから値をフェッチする効率が上がる。
【0008】
そのような第1の態様による方法の可能な実装形態において、方法は、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよび線形モデルパラメータβを取得する。
【0009】
LUTから値をフェッチする効率が上がるので、線形モデルパラメータαおよびβを取得するための乗算器の大きさが最小化される。
【0010】
そのような第1の態様による方法の可能な実装形態において、LUTは、取得された差の異なる段階に対応する、LUTに格納される少なくとも2つの隣接する値を含み、この段階の値は、差の値と共に増すか、または一定である。LUTのインデックスは、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される、これに応じて、インデックスに対応するLUT内のエントリのサイズは最小化される。結果として、LUTのサイズが最小化される。
【0011】
成分間線形モデルを適用することによりブロックのクロマサンプルをイントラ予測するための装置が、本発明の第2の態様に従って提供される。本発明の第2の態様による装置は、取得ユニットと、決定ユニットと、計算ユニットとを含む。取得ユニットは、再構築されたルマサンプルを取得するように構成される。決定ユニットは、再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定するように構成される。取得ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成される。決定ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定するように構成される。計算ユニットは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをインデックスとして用いることによりルックアップテーブル(LUT)から値をフェッチし、フェッチされた値に基づいて線形モデルパラメータαおよびβを取得し、取得された線形モデルパラメータαおよびβを用いることにより予測されるクロマサンプル値を計算するように構成される。
【0012】
本発明の第2の態様によれば、装置は、2進表現内のいくつかのビットを抽出する洗練されたやり方でLUTのインデックスを計算する。結果として、LUTから値をフェッチする効率が上がる。
【0013】
第3の態様によれば、本発明は、プロセッサとメモリとを含む、ビデオストリームをデコーディングするための装置に関する。メモリは、第1の態様または第1の態様の任意の可能な実施形態による方法をプロセッサに実行させる命令を格納している。
【0014】
第4の態様によれば、本発明は、プロセッサとメモリとを含む、ビデオストリームをエンコーディングするための装置に関する。メモリは、第1の態様または第1の態様の任意の可能な実施形態による方法をプロセッサに実行させる命令を格納している。
【0015】
第5の態様によれば、実行された場合、1つまたは複数のプロセッサがビデオデータをコーディングするように構成されるようにする命令が格納されたコンピュータ可読記憶媒体が提案される。命令は、第1の態様または第1の態様の任意の可能な実施形態による方法を1つまたは複数のプロセッサに実行させる。
【0016】
第6の態様によれば、本発明は、コンピュータ上で実行された場合、第1の態様または第1の態様の任意の可能な実施形態による方法を実行するためのプログラムコードを備えるコンピュータプログラムに関する。
【0017】
1つまたは複数の実施形態の詳細が、添付図面および以下の説明に記載されている。他の特徴、目的および利点は、明細書、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0018】
添付の図および図面を参照して、本発明の実施形態を以下でより詳細に説明する。
図1A】本発明の実施形態を実装するように構成されたビデオコーディングシステムの例を示すブロック図である。
図1B】本発明の実施形態を実装するように構成されたビデオコーディングシステムの別の例を示すブロック図である。
図2】本発明の実施形態を実装するように構成されたビデオエンコーダの例を示すブロック図である。
図3】本発明の実施形態を実装するように構成されたビデオデコーダの例示的な構造を示すブロック図である。
図4】エンコーディング装置またはデコーディング装置の例を示すブロック図である。
図5】エンコーディング装置またはデコーディング装置の別の例を示すブロック図である。
図6】クロマイントラ予測のための成分間線形モデルの概念を示す図面である。
図7】線形モデルパラメータ導出の簡略化された方法を示す図面である。
図8】参照ルマサンプルの最大値と最小値との間の差の発生確率分布を示す図面である。
図9】本発明の実施形態による例示的なルックアップテーブル生成処理を示すフローチャートである。
図10】例示的なルックアップテーブルのインデックス導出の実施形態を示すフローチャートを含む図面である。
図11】成分間線形モデルを適用することによるブロックのクロマサンプルの例示的なイントラ予測を示すフローチャートである。
図12】成分間線形モデルを適用することによりブロックのクロマサンプルのイントラ予測のための装置の例示的な構造を示すブロック図である。
図13】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
図14】端末デバイスの例の構造を示すブロック図である。以下では、別途明示的に指定されない場合、同一の参照符号は、同一または少なくとも機能的に同等の特徴を指す。
【発明を実施するための形態】
【0019】
以下の説明では、本開示の一部を形成し、かつ、本発明の実施形態の特定の態様または本発明の実施形態が用いられ得る特定の態様を実例として示す、添付図面を参照する。本発明の実施形態は他の態様で用いられてよく、図面に示されていない構造上または論理上の変更を含んでよいことが理解される。したがって、以下の詳細な説明は、限定的な意味に解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲により定義される。
【0020】
例えば、説明される方法に関連する開示が、当該方法を実行するように構成された対応するデバイスまたはシステムについても当てはまり得ること、そしてその逆も同様であることが理解される。例えば、1つまたは複数の特定の方法の段階が説明される場合、対応するデバイスは、説明される1つまたは複数の方法の段階を実行するための、例えば機能ユニットなどの1つまたは複数のユニット(例えば、1つまたは複数の段階を実行する1つのユニット、または複数の段階のうちの1つまたは複数を各々が実行する複数のユニット)を、そのような1つまたは複数のユニットが図において明示的に説明されていないかまたは示されていないときでも含み得る。他方で、例えば、特定の装置が、例えば機能ユニットなどの1つまたは複数のユニットに基づいて説明される場合、対応する方法は、1つまたは複数のユニットの機能を実行するために1つの段階(例えば、1つまたは複数のユニットの機能を実行する1つの段階、または複数のユニットのうちの1つまたは複数の機能を各々が実行する複数の段階)を、そのような1つまたは複数の段階が図において明示的に説明されていないかまたは示されていないときでも含み得る。さらに、特に別段の記載がない限り、本明細書において説明される様々な例示的な実施形態および/または態様の特徴が互いに組み合わされ得ることが理解される。
【0021】
ビデオコーディングは典型的には、ビデオまたはビデオシーケンスを形成する一連の画像の処理を指す。「画像」という用語の代わりに、「フレーム」または「イメージ」という用語が、ビデオコーディングの分野における同義語として用いられ得る。ビデオコーディング(または一般的にコーディング)は、ビデオエンコーディングおよびビデオデコーディングの2つの部分を含む。ビデオエンコーディングは、送信元側で実行され、典型的には、元のビデオ画像を(例えば、圧縮により)処理して、(より効率的な格納および/または送信のために、)ビデオ画像を表すために必要とされるデータの量を低減することを含む。ビデオデコーディングは、送信先側で実行され、典型的には、ビデオ画像を再構築するために、エンコーダと比較して逆の処理を含む。ビデオ画像(または一般的に画像)の「コーディング」に言及する実施形態は、ビデオ画像またはそれぞれのビデオシーケンスの「エンコーディング」または「デコーディング」に関すると理解されるものとする。エンコーディング部分とデコーディング部分との組み合わせは、コーデック(コーディングおよびデコーディング)とも称される。
【0022】
無損失ビデオコーディングの場合、(格納または送信中に送信損失または他のデータ損失がないと仮定すると、)元のビデオ画像が再構築され得る。すなわち、再構築されたビデオ画像は、元のビデオ画像と同じ品質を有する。不可逆ビデオコーディングの場合、デコーダにおいて完全には再構築され得ないビデオ画像を表すデータの量を低減するために、例えば量子化により、さらなる圧縮が実行される。すなわち、再構築されたビデオ画像の品質は、元のビデオ画像の品質と比較して低いかまたは悪い。
【0023】
いくつかのビデオコーディング規格は、「不可逆ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域内での空間的および時間的予測と、変換領域内での量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各画像は典型的には、非重複ブロックのセットへ区分化され、コーディングは典型的には、ブロックレベルで実行される。言い換えると、エンコーダでは、ビデオは、例えば、空間的(イントラ画像)予測および/または時間的(インター画像)予測を用いて予測ブロックを生成し、現在のブロック(現在処理されている/将来処理されるブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換し、変換領域内の残差ブロックを量子化して、送信されるデータの量を低減すること(圧縮)により、典型的には、ブロック(ビデオブロック)レベルで処理され、すなわちエンコードされ、一方、デコーダでは、表現のために現在のブロックを再構築するために、エンコーダと比較して逆の処理が、エンコードされたかまたは圧縮されたブロックに適用される。さらに、両方が後続のブロックを処理するために、すなわちコーディングするために同一の予測(例えば、イントラ予測およびインター予測)および/または再構築物を生成することになるように、エンコーダは、デコーダの処理ループを繰り返す。
【0024】
ビデオコーディングシステム10の以下の実施形態では、ビデオエンコーダ20およびビデオデコーダ30を図1から図3に基づいて説明する。
【0025】
図1Aは、本願の技術を利用し得る例示的なコーディングシステム10、例えばビデオコーディングシステム10(または略して、コーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(または略してエンコーダ20)およびビデオデコーダ30(または略してデコーダ30)は、本願において説明される様々な例に従って技術を実行するように構成され得るデバイスの例を表す。
【0026】
図1Aに示されるように、コーディングシステム10は、エンコードされた画像データ21を、エンコードされた画像データ21をデコードするために例えば送信先デバイス14に提供するように構成された送信元デバイス12を備える。
【0027】
送信元デバイス12は、エンコーダ20を備え、追加的に、すなわち任意選択的に、画像ソース16と、プリプロセッサ(または前処理ユニット)18、例えば画像プリプロセッサ18と、通信インタフェースまたは通信ユニット22とを備え得る。
【0028】
画像ソース16は、任意の種類の撮像デバイス、例えば、現実世界の画像を撮像するためのカメラ、および/または、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション化された画像を生成するためのコンピュータグラフィックスプロセッサ、または、現実世界の画像、コンピュータ生成された画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得および/または提供するための任意の種類の他のデバイスを備えてもよく、それらであってもよい。画像ソースは、上述の画像のいずれかを格納する任意の種類のメモリまたはストレージであってよい。
【0029】
プリプロセッサ18、および前処理ユニット18により実行される処理と区別して、画像または画像データ17は、生画像または生画像データ17とも称され得る。
【0030】
プリプロセッサ18は、(生)画像データ17を受信し、画像データ17に対して前処理を実行して前処理された画像19または前処理された画像データ19を取得するように構成される。プリプロセッサ18により実行される前処理は、例えば、トリミング、カラーフォーマット換算(例えば、RGBからYCbCrへのもの)、色補正またはノイズ除去を含み得る。前処理ユニット18は任意選択的な成分であってよいことが理解できる。
【0031】
ビデオエンコーダ20は、前処理された画像データ19を受信し、エンコードされた画像データ21を提供するように構成される(例えば図2に基づいて、さらなる詳細を以下で説明する)。送信元デバイス12の通信インタフェース22は、エンコードされた画像データ21を受信し、格納または直接的な再構築のために、通信チャネル13を介して、エンコードされた画像データ21(またはそのあらゆるさらに処理されたバージョン)を別のデバイス、例えば、送信先デバイス14または任意の他のデバイスへ送信するように構成され得る。
【0032】
送信先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を備え、追加的に、すなわち任意選択的に、通信インタフェースまたは通信ユニット28と、ポストプロセッサ32(または後処理ユニット32)と、ディスプレイデバイス34とを備え得る。
【0033】
送信先デバイス14の通信インタフェース28は、例えば、送信元デバイス12から直接、または、任意の他の送信元、例えば、ストレージデバイス、例えば、エンコードされた画像データ用のストレージデバイスから、エンコードされた画像データ21(またはそのあらゆるさらに処理されたバージョン)を受信し、エンコードされた画像データ21をデコーダ30に提供するように構成される。
【0034】
通信インタフェース22および通信インタフェース28は、送信元デバイス12と送信先デバイス14との間の直接的な通信リンク、例えば、直接的な有線接続もしくは無線接続を介して、または、任意の種類のネットワーク、例えば、有線ネットワークもしくは無線ネットワークもしくはそれらの任意の組み合わせ、もしくは任意の種類のプライベートネットワークおよびパブリックネットワークもしくはそれらの任意の種類の組み合わせを介して、エンコードされた画像データ21またはエンコードされたデータ13を送信または受信するように構成され得る。
【0035】
通信インタフェース22は、例えば、エンコードされた画像データ21を適切なフォーマット、例えばパケットへパッケージングし、および/または、通信リンクまたは通信ネットワークを介した送信のための任意の種類の送信エンコーディングまたは処理を用いて、エンコードされた画像データを処理するように構成され得る。
【0036】
通信インタフェース22の対応物を形成する通信インタフェース28は、例えば、送信されたデータを受信し、任意の種類の対応する送信デコーディングまたは処理および/またはデパッケージングを用いて送信データを処理してエンコードされた画像データ21を取得するように構成され得る。
【0037】
通信インタフェース22および通信インタフェース28は両方とも、図1Aにおいて送信元デバイス12から送信先デバイス14へ向いた通信チャネル13についての矢印により示されるような単方向通信インタフェース、または双方向通信インタフェースとして構成されてよく、例えば、メッセージを送信および受信し、例えば、接続を設定して、通信リンクおよび/またはデータ送信、例えば、エンコードされた画像データの送信に関連する任意の他の情報を確認およびやり取りするように構成されてよい。
【0038】
デコーダ30は、エンコードされた画像データ21を受信し、デコードされた画像データ31またはデコードされた画像31を提供するように構成される(例えば、図3または図5に基づいて、さらなる詳細を以下で説明する)。
【0039】
送信先デバイス14のポストプロセッサ32は、デコードされた画像データ31(再構築された画像データとも呼ばれる)、例えば、デコードされた画像31を後処理して、後処理された画像データ33、例えば、後処理された画像33を取得するように構成される。後処理ユニット32により実行される後処理は、例えば、デコードされた画像データ31を、例えば、ディスプレイデバイス34による表示のために準備する目的で、例えば、カラーフォーマット換算(例えば、YCbCrからRGBへのもの)、色補正、トリミングもしくは再サンプリングまたは任意の他の処理を含んでよい。
【0040】
送信先デバイス14のディスプレイデバイス34は、画像を例えばユーザまたは視聴者に対して表示するために、後処理された画像データ33を受信するように構成される。ディスプレイデバイス34は、再構築された画像を表すための任意の種類のディスプレイ、例えば、一体型または外付けのディスプレイまたはモニタであってもよく、これを備えてもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、シリコン上液晶(LCoS)、デジタル光プロセッサ(DLP)または任意の種類の他のディスプレイを備えてよい。
【0041】
図1Aは送信元デバイス12および送信先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態はまた、それらの両方または両方の機能、すなわち、送信元デバイス12または対応する機能および送信先デバイス14または対応する機能を備え得る。そのような実施形態では、送信元デバイス12または対応する機能および送信先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを用いて、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせにより実装され得る。
【0042】
説明に基づいて当業者には明らかになるように、図1Aに示されるような、異なるユニットの機能または送信元デバイス12および/または送信先デバイス14内の機能の存在および(厳密な)分割は、実際のデバイスおよび用途に応じて異なり得る。
【0043】
エンコーダ20(例えば、ビデオエンコーダ20)もしくはデコーダ30(例えば、ビデオデコーダ30)またはエンコーダ20とデコーダ30との両方は、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、ビデオコーディング専用またはそれらの任意の組み合わせなど、図1Bに示されるような処理回路を介して実装され得る。エンコーダ20は、図2のエンコーダ20および/または本明細書において説明される任意の他のエンコーダシステムまたはエンコーダサブシステムに関連して論じられる様々なモジュールを具現化するために、処理回路46を介して実装され得る。デコーダ30は、図3のデコーダ30および/または本明細書において説明される任意の他のデコーダシステムまたはデコーダサブシステムに関連して論じられる様々なモジュールを具現化するために、処理回路46を介して実装され得る。処理回路は、後で論じられるような様々な演算を実行するように構成され得る。図5に示されるように、これらの技術が部分的にソフトウェア内に実装される場合、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読記憶媒体に格納してよく、1つまたは複数のプロセッサを用いてハードウェア内の命令を実行して、本開示の技術を実行し得る。ビデオエンコーダ20およびビデオデコーダ30のいずれも、図1Bに示されるように、例えば、単一のデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0044】
送信元デバイス12および送信先デバイス14は、任意の種類のハンドヘルドデバイスまたは据え置き型デバイス、例えば、ノートブックコンピュータもしくはラップトップコンピュータ、携帯電話、スマートフォン、タブレットもしくはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、ブロードキャスト受信機デバイスまたはブロードキャスト送信機デバイス等を含む幅広い範囲のデバイスのいずれかを備えてよく、オペレーティングシステムを用いなくてもよく、任意の種類のオペレーティングシステムを用いてもよい。いくつかの場合、送信元デバイス12および送信先デバイス14は、無線通信用に備え付けられ得る。したがって、送信元デバイス12および送信先デバイス14は、無線通信デバイスであってよい。
【0045】
いくつかの場合、図1Aに示されるビデオコーディングシステム10は例に過ぎず、本願の技術は、エンコーディングデバイスとデコーディングデバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディングまたはビデオデコーディング)に適用され得る。他の例において、データは、ローカルメモリから取得される、またはネットワークを介してストリーミングされる等である。ビデオエンコーディングデバイスは、データをメモリにエンコードおよび格納してよく、および/または、ビデオデコーディングデバイスは、データをメモリから取得してデコードしてよい。いくつかの例において、エンコーディングおよびデコーディングは、互いに通信しないが、単にデータをメモリへエンコードし、および/またはメモリからのデータを取得およびデコードするデバイスにより実行される。
【0046】
説明の便宜上、例えば、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)により開発された次世代ビデオコーディング規格であるHigh-Efficiency Video Coding(HEVC)またはVersatile Video Coding(VVC)の参照ソフトウェアを参照して、本発明の実施形態を本明細書において説明する。当業者であれば、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
[エンコーダおよびエンコーディング方法]
【0047】
図2は、本願の技術を実装するように構成された例示的なビデオエンコーダ20の概略ブロック図を示す。図2の例において、ビデオエンコーダ20は、入力201(または入力インタフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、ループフィルタユニット220と、デコードされた画像用バッファ(DPB)230と、モード選択ユニット260と、エントロピーエンコーディングユニット270と、出力272(または出力インタフェース272)とを備える。モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、区分化ユニット262とを含み得る。インター予測ユニット244は、動き推定ユニットと動き補償ユニット(不図示)とを含み得る。図2に示されるようなビデオエンコーダ20は、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
【0048】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260は、エンコーダ20の順方向信号経路を形成すると言及されてよく、一方、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成すると言及されてよい。ビデオエンコーダ20の逆方向信号経路は、デコーダの信号経路に対応する(図3におけるビデオデコーダ30を参照のこと)。逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の「ビルトインデコーダ」を形成するとも言及される。
[画像および画像区分化(画像およびブロック)]
【0049】
エンコーダ20は、例えば入力201を介して、画像17(または画像データ17)、例えば、ビデオまたはビデオシーケンスを形成する一連の画像のうちのある画像を受信するように構成され得る。受信された画像または画像データは、前処理された画像19(または前処理された画像データ19)であってもよい。簡略化のために、以下の説明では、画像17を参照する。(特に、ビデオコーディングにおいて、現在の画像を他の画像、例えば、同じビデオシーケンス、すなわち、現在の画像も含むビデオシーケンスの以前にエンコードされたおよび/またはデコードされた画像と区別するために、)画像17は、現在の画像またはコーディングされる画像とも称され得る。
【0050】
(デジタル)画像は、強度値を有するサンプルの2次元のアレイまたは行列であるか、それとみなされ得る。アレイ内のサンプルは、画素(画像要素の省略形)またはペルとも称され得る。アレイまたは画像の水平および垂直方向(または軸)におけるサンプルの数により、画像のサイズおよび/または解像度が定まる。色の表現のために、典型的には、3つの色成分が使用される。すなわち、画像は、3つのサンプルアレイとして表され得るか、またはそれらを含み得る。RGB形式またはRGB色空間では、画像は、対応する赤、緑および青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各画素は典型的には、輝度およびクロミナンス形式または輝度およびクロミナンス色空間、例えば、Y(場合によっては、代わりにLも用いられる)により示される輝度成分と、CbおよびCrにより示される2つのクロミナンス成分とを含むYCbCrで表される。輝度(または略して、ルマ)成分Yは、明るさまたは(例えば、グレースケール画像でのような)グレーレベルの強度を表し、一方、2つのクロミナンス(または略して、クロマ)成分CbおよびCrは、色度成分または色情報成分を表す。したがって、YCbCr形式の画像は、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスサンプルアレイとを含む。RGB形式の画像は、YCbCr形式へ換算または変換されてよく、逆も同様であり、この処理は、色変換または色換算としても知られている。画像がモノクロである場合、この画像は、輝度サンプルアレイのみを含み得る。したがって、画像は、例えば、モノクロ形式のルマサンプルのアレイ、または、4:2:0、4:2:2および4:4:4のカラー形式でのルマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであってよい。
【0051】
ビデオエンコーダ20の実施形態は、画像17を複数の(典型的には非重複)画像ブロック203へ区分化するように構成された画像区分化ユニット(図2に示されていない)を含み得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)またはコーディングツリーブロック(CTB)もしくはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)とも称され得る。画像区分化ユニットは、ビデオシーケンスの全ての画像と、ブロックサイズを定める対応するグリッドとに同じブロックサイズを用いるか、または、画像もしくは画像のサブセットもしくはグループの間でブロックサイズを変更して各画像を対応するブロックへ区分化するように構成され得る。
【0052】
さらなる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つの、いくつかのまたは全てのブロックを直接的に受信するように構成され得る。画像ブロック203は、現在の画像ブロックまたはコーディングされる画像ブロックとも称され得る。
【0053】
画像17と同様に、画像ブロック203もやはり、画像17よりも寸法は小さいが強度値(サンプル値)を有するサンプルの2次元のアレイまたは行列であるか、それとみなされ得る。言い換えると、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合にはルマアレイ、または、カラー画像の場合にはルマアレイもしくはクロマアレイ)、または、3つのサンプルアレイ(例えば、カラー画像17の場合には1つのルマアレイおよび2つのクロマアレイ)、または、適用されるカラーフォーマットに応じた任意の他の数および/または種類のアレイを含み得る。ブロック203の水平および垂直方向(または軸)におけるサンプルの数により、ブロック203のサイズが定まる。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイまたは変換係数のM×Nアレイであってよい。
【0054】
図2に示されるようなビデオエンコーダ20の実施形態は、画像17をブロック毎にエンコードするように構成されてよく、例えば、エンコーディングおよび予測は、ブロック203毎に実行される。
[残差計算]
【0055】
残差計算ユニット204は、例えば、画像ブロック203のサンプル値から予測ブロック265のサンプル値をサンプル毎に(画素毎に)減算してサンプル領域内の残差ブロック205を取得することにより、画像ブロック203および予測ブロック265(予測ブロック265についてのさらなる詳細は後で提供される)に基づいて残差ブロック205(残差205とも称される)を計算するように構成され得る。
[変換]
【0056】
変換処理ユニット206は、変換、例えば、離散余弦変換(DCT)または離散正弦変換(DST)を残差ブロック205のサンプル値に対して適用して変換領域内の変換係数207を取得するように構成され得る。変換係数207は、変換残差係数とも称されてよく、変換領域内の残差ブロック205を表す。
【0057】
変換処理ユニット206は、H.265/HEVCについて指定された変換など、DCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較して、そのような整数近似は典型的には、特定の係数によりスケーリングされる。順変換および逆変換により処理される残差ブロックのノルムを保つべく、追加のスケーリング係数が変換処理の一部として適用される。スケーリング係数は典型的には、シフト演算についての2のべき乗であるスケーリング係数、変換係数のビット深度、確度と実装コストとの間のトレードオフ等のような特定の制約に基づいて選ばれる。例えば、特定のスケーリング係数が、例えば、逆変換処理ユニット212による逆変換(および、例えばビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)のために指定され、例えば、エンコーダ20における変換処理ユニット206による順変換のための対応するスケーリング係数が、それに応じて指定され得る。
【0058】
ビデオエンコーダ20の実施形態(それぞれ、変換処理ユニット206)は、例えば1回の変換または複数回の変換のタイプといった変換パラメータを、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードもしくは圧縮されてから出力するように構成されてよく、その結果、例えば、ビデオデコーダ30は、デコーディングのための変換パラメータを受信および使用し得る。
[量子化]
【0059】
量子化ユニット208は、例えばスカラ量子化またはベクトル量子化を適用することにより、変換係数207を量子化して量子化された係数209を取得するように構成され得る。量子化された係数209は、量子化変換係数209または量子化残差係数209とも称され得る。
【0060】
量子化処理により、変換係数207のうちのいくつかまたは全てに関連するビット深度が低減し得る。例えば、nビット変換係数は、量子化中にmビット変換係数へと端数が切り捨てられ得る。nはmよりも大きい。量子化の程度は、量子化パラメータ(QP)を調節することにより修正され得る。例えば、スカラ量子化の場合、より細かいまたはより粗い量子化を実現するために、異なるスケーリングが適用され得る。より小さい量子化段階サイズはより細かい量子化に対応し、一方、より大きい量子化段階サイズはより粗い量子化に対応する。適用可能な量子化段階サイズは、量子化パラメータ(QP)により示され得る。量子化パラメータは、例えば、適用可能な量子化段階サイズの予め定義されたセットのインデックスであってよい。例えば、小さい量子化パラメータは細かい量子化(小さい量子化段階サイズ)に対応してよく、大きい量子化パラメータは粗い量子化(大きい量子化段階サイズ)に対応してよく、または逆も同様である。量子化は、量子化段階サイズによる除算を含んでよく、例えば逆量子化ユニット210による対応するおよび/または逆の量子化解除は、量子化段階サイズによる乗算を含んでよい。例えばHEVCといったいくつかの規格による実施形態は、量子化パラメータを用いて量子化段階サイズを決定するように構成され得る。概して、量子化段階サイズは、除算を含む式の固定小数点近似を用いた量子化パラメータに基づき計算され得る。残差ブロックのノルムを復元するために、量子化および量子化解除に追加のスケーリング係数が導入されてよく、これは、量子化段階サイズおよび量子化パラメータについての式の固定小数点近似において用いられるスケーリングが原因で修正され得る。1つの例示的な実装において、逆変換および量子化解除のスケーリングは組み合わされ得る。代替的に、カスタマイズされた量子化テーブルが用いられ、例えばビットストリームにおいてエンコーダからデコーダへシグナリングされ得る。量子化は不可逆演算であり、量子化段階サイズが大きくなるにつれて損失が大きくなる。
【0061】
ビデオエンコーダ20の実施形態(それぞれ、量子化ユニット208)は、量子化パラメータ(QP)を、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードされてから出力するように構成され得る。その結果、例えば、ビデオデコーダ30は、デコーディングのための量子化パラメータを受信および適用し得る。
[逆量子化]
【0062】
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化段階サイズに基づいてまたはそれを用いて量子化ユニット208により適用された量子化スキームの逆を適用することにより、量子化された係数に対して量子化ユニット208の逆量子化を適用して、量子化解除された係数211を取得するように構成される。量子化解除された係数211は、量子化解除された残差係数211とも称されてよく、典型的には量子化による損失に起因して変換係数と同一ではないが、変換係数207に対応する。
[逆変換]
【0063】
逆変換処理ユニット212は、変換処理ユニット206により適用された変換の逆変換、例えば、逆離散余弦変換(DCT)もしくは逆離散正弦変換(DST)または他の逆変換を適用して、サンプル領域内の再構築された残差ブロック213(または対応する量子化解除された係数213)を取得するように構成される。再構築された残差ブロック213は、変換ブロック213とも称され得る。
[再構築]
【0064】
再構築ユニット214(例えば、加算器または合算器214)は、例えば、再構築された残差ブロック213のサンプル値および予測ブロック265のサンプル値をサンプル毎に加算することにより、変換ブロック213(すなわち、再構築された残差ブロック213)を予測ブロック265に加算して、サンプル領域内の再構築されたブロック215を取得するように構成される。
[フィルタリング]
【0065】
ループフィルタユニット220(または略して、「ループフィルタ」220)は、再構築されたブロック215をフィルタリングして、フィルタリングされたブロック221を取得するか、または一般的に、再構築されたサンプルをフィルタリングして、フィルタリングされたサンプルを取得するように構成される。ループフィルタユニットは、例えば、画素遷移を平滑化するか、またはそうでなければビデオ品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタ、もしくは、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化フィルタ、平滑化フィルタもしくは協調フィルタなど、1つまたは複数の他のフィルタ、または、それらの任意の組み合わせを含み得る。ループフィルタユニット220は、図2ではループ内フィルタであるものとして示されているが、他の構成では、ポストループフィルタとして実装され得る。フィルタリングされたブロック221は、フィルタリング済みの再構築されたブロック221とも称され得る。
【0066】
ビデオエンコーダ20の実施形態(それぞれ、ループフィルタユニット220)は、ループフィルタパラメータ(サンプル適応オフセット情報など)を、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードされてから出力するように構成され得る。その結果、例えば、デコーダ30は、デコーディングのために同じループフィルタパラメータまたはそれぞれのループフィルタを受信および適用し得る。
[デコードされた画像用バッファ]
【0067】
デコードされた画像用バッファ(DPB)230は、ビデオエンコーダ20によりビデオデータをエンコーディングするための参照画像または一般的に参照画像データを格納するメモリであってよい。DPB230は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗型RAM(RRAM)などの様々なメモリデバイスまたは他のタイプのメモリデバイスのいずれかにより形成され得る。デコードされた画像用バッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を格納するように構成され得る。デコードされた画像用バッファ230はさらに、同じ現在の画像または異なる画像、例えば以前に再構築された画像の他の以前にフィルタリングされたブロック、例えば以前に再構築済みのフィルタリングされたブロック221を格納するように構成されてよく、完全な、以前に再構築された、すなわちデコードされた画像(対応する参照ブロックおよび参照サンプル)および/または部分的に再構築された現在の画像(対応する参照ブロックおよび参照サンプル)を、例えばインター予測のために提供してよい。また、デコードされた画像用バッファ(DPB)230は、例えば、再構築されたブロック215がループフィルタユニット220によりフィルタリングされていない場合、1つまたは複数のフィルタリングされていない再構築されたブロック215もしくは一般的に、フィルタリングされていない再構築されたサンプル、または、再構築されたブロックもしくはサンプルの任意の他のさらに処理されたバージョンを格納するように構成され得る。
[モード選択(区分化および予測)]
【0068】
モード選択ユニット260は、区分化ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを備え、元の画像データ、例えば、元のブロック203(現在の画像17の現在のブロック203)、および、再構築された画像データ、例えば、同じ(現在の)画像の、および/または1つまたは複数の以前にデコードされた画像からの、例えば、デコードされた画像用バッファ230または他のバッファ(例えば、不図示のラインバッファ)からのフィルタリングされたおよび/またはフィルタリングされていない再構築されたサンプルまたはブロックを受信または取得するように構成される。再構築された画像データは、予測ブロック265または予測因子265を取得するために、予測、例えばインター予測またはイントラ予測のための参照画像データとして用いられる。
【0069】
モード選択ユニット260は、現在のブロック予測モード(区分化を含まない)および予測モード(例えば、イントラ予測モードまたはインター予測モード)のための区分化を決定または選択し、残差ブロック205の計算および再構築されたブロック215の再構築のために用いられる対応する予測ブロック265を生成するように構成され得る。
【0070】
モード選択ユニット260の実施形態は、区分化および予測モードを(例えば、モード選択ユニット260によりサポートされるか、またはモード選択ユニット260のために利用可能であるものから)選択するように構成され得る。これにより、最良のマッチング、または言い換えると、最小残差(最小残差は、送信または格納について圧縮率がより良好であることを意味する)もしくは最小シグナリングオーバヘッド(最小シグナリングオーバヘッドは、送信または格納の圧縮率がより良好であることを意味する)が提供されるか、または両方が考慮されるかもしくは両方のバランスが取られる。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分化および予測モードを決定するように、すなわち、最小レート歪みを提供する予測モードを選択するように構成され得る。この文脈における「最良」、「最小」、「最適」等のような用語は、全体的な「最良」、「最小」、「最適」等を必ずしも指さないが、値が閾値を超えるかもしくは下回ること、または潜在的に「準最適選択」につながるが複雑性および処理時間を低減する他の制約のような、終了または選択の基準の達成も指し得る。
【0071】
言い換えると、区分化ユニット262は、例えば、クアッドツリー区分化(QT)、バイナリ区分化(BT)もしくはトリプルツリー区分化(TT)またはそれらの任意の組み合わせを繰り返し用いてブロック203をより小さいブロックパーティションまたはサブブロック(ブロックを再び形成する)へ区分化し、例えば、ブロックパーティションまたはサブブロックの各々についての予測を実行するように構成され得る。モード選択は、区分化されたブロック203のツリー構造の選択を含み、予測モードは、ブロックパーティションまたはサブブロックの各々に適用される。
【0072】
以下では、例示的なビデオエンコーダ20により実行される、(例えば、区分化ユニット262による)区分化および(インター予測ユニット244およびイントラ予測ユニット254による)予測処理をより詳細に説明する。
[区分化]
【0073】
区分化ユニット262は、現在のブロック203をより小さいパーティション、例えば、正方形または矩形のサイズのより小さいブロックへ区分化(または分割)し得る。これらのより小さいブロック(サブブロックとも称され得る)は、さらにより小さいパーティションへさらに区分化され得る。これは、ツリー区分化または階層ツリー区分化とも称される。ルートブロック、例えば、ルートツリーレベル0(階層レベル0、深度0)が再帰的に区分化されてよく、例えば、次に低いツリーレベル、例えばツリーレベル1(階層レベル1、深度1)におけるノードの2つまたはそれよりも多くのブロックへ区分化されてよい。これらのブロックは、例えば、終了基準が満たされること、例えば、最大ツリー深度または最小ブロックサイズに到達したことで、区分化が終了されるまで、次に低いレベル、例えばツリーレベル2(階層レベル2、深度2)等の2つまたはそれよりも多くのブロックへ再び区分化され得る。さらに区分化されないブロックは、ツリーのリーフブロックまたはリーフノードとも称される。2つのパーティションへの区分化を用いるツリーは、バイナリツリー(BT)と称され、3つのパーティションへの区分化を用いるツリーは、ターナリツリー(TT)と称され、4つのパーティションへの区分化を用いるツリーは、クアッドツリー(QT)と称される。
【0074】
前に言及したように、本明細書において用いられるような「ブロック」という用語は、画像のある部分、特に、正方形または矩形の部分であってよい。例えばHEVCおよびVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)または変換ユニット(TU)および/または対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)または予測ブロック(PB)であってもよく、それらに対応してもよい。
【0075】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有する画像のルマサンプルのCTBおよびクロマサンプルの2つの対応するCTB、または、モノクロ画像の、もしくはサンプルをコーディングするために用いられる3つの別個のカラー平面および構文構造を用いてコーディングされた画像のサンプルのCTBであってもよく、それらを備えてもよい。これに応じて、コーディングツリーブロック(CTB)は、CTBへの成分の分割が区分化であるように、ある値NのサンプルのN×Nブロックであってよい。コーディングユニット(CU)は、3つのサンプルアレイを有する画像のルマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、または、モノクロ画像の、もしくはサンプルをコーディングするために用いられる3つの別個のカラー平面および構文構造を用いてコーディングされた画像のサンプルのコーディングブロックであってもよく、それらを備えてもよい。これに応じて、コーディングブロック(CB)は、コーディングブロックへのCTBの分割が区分化であるように、ある値MおよびNのサンプルのM×Nブロックであってよい。
【0076】
例えばHEVCに従ったいくつかの実施形態において、コーディングツリーユニット(CTU)は、コーディングツリーとして表されるクアッドツリー構造を用いることにより、CUへ分割され得る。インター画像(時間的)予測またはイントラ画像(空間的)予測のどちらを用いて画像エリアをコーディングするかの決定は、CUレベルで行われる。各CUは、PUの分割タイプに従って、1つ、2つまたは4つのPUへさらに分割され得る。1つのPUの内部では、同じ予測処理が適用され、関連情報がPUベースでデコーダへ送信される。PUの分割タイプに基づいて予測処理を適用することにより残差ブロックを取得した後、CUは、CUのコーディングツリーと同様の別のクアッドツリー構造に従って、変換ユニット(TU)へ区分化され得る。
【0077】
例えば、Versatile Video Coding(VVC)と称される現在開発中の最新のビデオコーディング規格に従った実施形態において、クアッドツリーおよびバイナリツリー(QTBT)区分化が、コーディングブロックを区分化するために用いられる。QTBTブロック構造では、CUは、正方形または矩形形状のいずれかを有し得る。例えば、コーディングツリーユニット(CTU)がまず、クアッドツリー構造により区分化される。クアッドツリーリーフノードは、バイナリツリーまたはターナリ(またはトリプル)ツリー構造によりさらに区分化される。区分化ツリーリーフノードは、コーディングユニット(CU)と呼ばれ、そのセグメンテーションは、いかなるさらなる区分化もなく、予測および変換処理のために用いられる。これは、CU、PUおよびTUがQTBTコーディングブロック構造内で同じブロックサイズを有することを意味する。並行して、複数回の区分化、例えば、トリプルツリー区分化をQTBTブロック構造と共に用いることも提案された。
【0078】
一例において、ビデオエンコーダ20のモード選択ユニット260は、本明細書において説明される区分化技術の任意の組み合わせを実行するように構成され得る。
【0079】
上で説明したように、ビデオエンコーダ20は、(予め決定された)予測モードのセットから最良のまたは最適な予測モードを決定または選択するように構成される。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを含み得る。
[イントラ予測]
【0080】
イントラ予測モードのセットは、35個の異なるイントラ予測モード、例えば、DC(または平均)モードおよび平面モードのような無方向性モード、または、例えばHEVCにおいて定義される方向性モードを含んでもよく、67個の異なるイントラ予測モード、例えば、DC(または平均)モードおよび平面モードのような無方向性モード、または、例えばVVCについて定義される方向性モードを含んでもよい。
【0081】
イントラ予測ユニット254は、同じ現在の画像の隣接ブロックの再構築されたサンプルを用いて、イントラ予測モードのセットからのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するように構成される。
【0082】
イントラ予測ユニット254(または一般的に、モード選択ユニット260)はさらに、イントラ予測パラメータ(または一般的に、ブロックについて選択されたイントラ予測モードを示す情報)を、エンコードされた画像データ21へ含めるために構文要素266の形態でエントロピーエンコーディングユニット270に出力するように構成され得る。その結果、例えば、ビデオデコーダ30は、デコーディングのための予測パラメータを受信および使用し得る。
[インター予測]
【0083】
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照画像(すなわち、例えばDPB230に格納された、以前の少なくとも部分的にデコードされた画像)および他のインター予測パラメータ、例えば、参照画像の全体または一部のみ、例えば、参照画像の現在のブロックのエリアの周囲の検索ウィンドウエリアが、最良のマッチングとなっている参照ブロックを検索するために用いられるかどうか、および/または、例えば、画素補間、例えば、ハーフ補間/セミペル補間および/またはクウォータペル補間が適用されるか否かに依存する。上記予測モードに加え、スキップモードおよび/または直接モードが適用され得る。
【0084】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(両方とも図2に示されていない)を含み得る。動き推定ユニットは、画像ブロック203(現在の画像17の現在の画像ブロック203)およびデコードされた画像231、または、例えば1つまたは複数の他の/異なる以前にデコードされた画像231の再構築されたブロックといった少なくとも1つまたは複数の以前に再構築されたブロックを動き推定のために受信または取得するように構成され得る。例えば、ビデオシーケンスは、現在の画像および以前にデコードされた画像231を含んでよく、または言い換えると、現在の画像および以前にデコードされた画像231は、ビデオシーケンスを形成する一連の画像の一部であってもよく、それらを形成してもよい。
【0085】
エンコーダ20は、例えば、複数の他の画像の同じまたは異なる画像の複数の参照ブロックから参照ブロックを選択し、参照画像(または参照画像インデックス)、および/または参照ブロックの位置(x座標、y座標)と現在のブロックの位置との間のオフセット(空間的オフセット)をインター予測パラメータとして動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0086】
動き補償ユニットは、インター予測パラメータを取得、例えば受信し、インター予測パラメータに基づいてまたはそれを用いてインター予測を実行してインター予測ブロック265を取得するように構成される。動き補償ユニットにより実行される動き補償は、動き推定により決定される動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によっては、サブ画素精度での補間を実行することを伴い得る。補間フィルタリングにより、既知の画素サンプルから追加の画素サンプルが生成され得る。したがって、画像ブロックをコーディングするために用いられ得る候補予測ブロックの数が潜在的に増える。現在の画像ブロックのPUについての動きベクトルを受信すると、動き補償ユニットは、参照画像リストのうちの1つにおいて動きベクトルが指し示す予測ブロックの位置を特定し得る。
【0087】
また、動き補償ユニットは、ビデオスライスの画像ブロックのデコーディングにおいてビデオデコーダ30により用いられるブロックおよびビデオスライスに関連する構文要素を生成し得る。
[エントロピーコーディング]
【0088】
エントロピーエンコーディングユニット270は、例えば、エントロピーエンコーディングアルゴリズムもしくはエントロピーエンコーディングスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応VLCスキーム(CAVLC)、算術コーディングスキーム、バイナリゼーション、コンテキスト適応型バイナリ算術コーディング(CABAC)、構文ベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率区間区分化エントロピー(PIPE)コーディングまたは別のエントロピーエンコーディング方法もしくはエントロピーエンコーディング技術)またはバイパス(無圧縮)を量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータおよび/または他の構文要素に対して適用して、例えばエンコードされたビットストリーム21の形態で出力272を介して出力され得るエンコードされた画像データ21を取得するように構成される。その結果、例えば、ビデオデコーダ30は、デコーディングのためのパラメータを受信および使用し得る。エンコードされたビットストリーム21は、ビデオデコーダ30へ送信されるか、またはビデオデコーダ30による後の送信もしくは取得のためにメモリに格納され得る。
【0089】
ビデオエンコーダ20の他の構造上の変形は、ビデオストリームをエンコードするために用いられ得る。例えば、非変換ベースエンコーダ20は、特定のブロックまたはフレームのための変換処理ユニット206なしに、残差信号を直接的に量子化できる。別の実装において、エンコーダ20は、単一のユニットへと組み合わされた量子化ユニット208および逆量子化ユニット210を有し得る。
[デコーダおよびデコーディング方法]
【0090】
図3は、本願の技術を実装するように構成されたビデオデコーダ30の例を示す。ビデオデコーダ30は、例えばエンコーダ20によりエンコード済みのエンコードされた画像データ21(例えば、エンコードされたビットストリーム21)を受信して、デコードされた画像331を取得するように構成される。エンコードされた画像データまたはビットストリームは、エンコードされた画像データをデコードするための情報、例えば、エンコードされたビデオスライスの画像ブロックと、関連する構文要素とを表すデータを含む。
【0091】
図3の例において、デコーダ30は、エントロピーデコーディングユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構築ユニット314(例えば、合算器314)と、ループフィルタ320と、デコードされた画像用バッファ(DPB)330と、インター予測ユニット344と、イントラ予測ユニット354とを備える。インター予測ユニット344は、動き補償ユニットであってもよく、それを含んでもよい。ビデオデコーダ30は、いくつかの例において、図2のビデオエンコーダ20に関連して説明されたエンコーディングパスとは概ね逆のデコーディングパスを実行し得る。
【0092】
エンコーダ20に関連して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の「ビルトインデコーダ」を形成するとも言及される。したがって、逆量子化ユニット310は、逆量子化ユニット210と機能的に同一であってよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってよく、再構築ユニット314は、再構築ユニット214と機能的に同一であってよく、ループフィルタ320は、ループフィルタ220と機能的に同一であってよく、デコードされた画像用バッファ330は、デコードされた画像用バッファ230と機能的に同一であってよい。したがって、ビデオエンコーダ20のそれぞれのユニットおよび機能について提供された説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に対応するように当てはまる。
[エントロピーデコーディング]
【0093】
エントロピーデコーディングユニット304は、ビットストリーム21(または一般的に、エンコードされた画像データ21)を解析し、例えばエントロピーデコーディングをエンコードされた画像データ21に対して実行して、例えば、量子化された係数309および/またはデコードされたコーディングパラメータ(図3には示されていない)、例えば、インター予測パラメータ(例えば、参照画像インデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはイントラ予測インデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータおよび/または他の構文要素のいずれかまたは全てを取得するように構成される。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関連して説明されたようなエンコーディングスキームに対応するデコーディングアルゴリズムまたはデコーディングスキームを適用するように構成され得る。エントロピーデコーディングユニット304はさらに、インター予測パラメータ、イントラ予測パラメータおよび/または他の構文要素をモード選択ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するように構成され得る。ビデオデコーダ30は、構文要素をビデオスライスレベルおよび/またはビデオブロックレベルで受信し得る。
[逆量子化]
【0094】
逆量子化ユニット310は、エンコードされた画像データ21から量子化パラメータ(QP)(または一般的に、逆量子化に関連する情報)および量子化された係数を(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信し、量子化パラメータに基づいて逆量子化をデコード済みの量子化された係数309に適用して、変換係数311とも称され得る量子化解除された係数311を取得するように構成され得る。逆量子化処理は、量子化の程度、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス内の各ビデオブロックについてビデオエンコーダ20により決定される量子化パラメータの使用を含み得る。
[逆変換]
【0095】
逆変換処理ユニット312は、変換係数311とも称される量子化解除された係数311を受信し、サンプル領域内の再構築された残差ブロック313を取得すべく、量子化解除された係数311に変換を適用するように構成され得る。再構築された残差ブロック313は、変換ブロック313とも称され得る。この変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換処理であってよい。逆変換処理ユニット312はさらに、エンコードされた画像データ21から変換パラメータまたは対応する情報を(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信して、量子化解除された係数311に適用される変換を決定するように構成され得る。
[再構築]
【0096】
再構築ユニット314(例えば、加算器または合算器314)は、例えば、再構築された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することにより、再構築された残差ブロック313を予測ブロック365に加算して、サンプル領域内の再構築されたブロック315を取得するように構成され得る。
[フィルタリング]
【0097】
(コーディングループ内またはコーディングループの後のいずれかにある)ループフィルタユニット320は、例えば、画素遷移を平滑化するか、またはそうでなければビデオ品質を改善するために、再構築されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタ、もしくは、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化フィルタ、平滑化フィルタもしくは協調フィルタといった1つまたは複数の他のフィルタ、または、それらの任意の組み合わせを含み得る。ループフィルタユニット320は、図3ではループ内フィルタであるものとして示されているが、他の構成では、ポストループフィルタとして実装され得る。
[デコードされた画像用バッファ]
【0098】
画像のデコードされたビデオブロック321は、その後、デコードされた画像331を他の画像の後続の動き補償のための、および/または出力またはそれぞれ表示するための参照画像として格納するデコードされた画像用バッファ330に格納される。
【0099】
デコーダ30は、例えば出力312を介して、ユーザに提示するかまたは視聴させるために、デコードされた画像311を出力するように構成される。
[予測]
【0100】
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってよく、イントラ予測ユニット354は、機能的にイントラ予測ユニット254と同一であってよく、エンコードされた画像データ21から(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信された区分化パラメータおよび/または予測パラメータまたはそれぞれの情報に基づいて、分割または区分化の決定および予測を実行する。モード選択ユニット360は、再構築された画像、ブロックまたはそれぞれのサンプル(フィルタリングされているか、またはフィルタリングされていない)に基づいて予測(イントラ予測またはインター予測)をブロック毎に実行して予測ブロック365を取得するように構成され得る。
【0101】
ビデオスライスがイントラコーディング(I)スライスとしてコーディングされる場合、モード選択ユニット360のイントラ予測ユニット354は、シグナリングイントラ予測モードと、現在の画像の以前にデコードされたブロックからのデータとに基づいて、現在のビデオスライスの画像ブロックについての予測ブロック365を生成するように構成される。ビデオ画像がインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされる場合、モード選択ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピーデコーディングユニット304から受信された動きベクトルおよび他の構文要素に基づいて、現在のビデオスライスのビデオブロックについての予測ブロック365を生成するように構成される。インター予測の場合、予測ブロックは、参照画像リストのうちの1つに含まれる参照画像のうちの1つから生成され得る。ビデオデコーダ30は、デフォルトの構築技術を用いて、DPB330に格納された参照画像に基づき、リスト0およびリスト1という参照フレームリストを構築し得る。
【0102】
モード選択ユニット360は、動きベクトルおよび他の構文要素を解析することにより現在のビデオスライスのビデオブロックについての予測情報を決定するように構成され、予測情報を用いて、デコードされている現在のビデオブロックについての予測ブロックを生成する。例えば、モード選択ユニット360は、受信された構文要素のうちのいくつかを用いて、ビデオスライスのビデオブロックをコーディングするために用いられる予測モード(例えば、イントラ予測またはインター予測)と、インター予測スライスタイプ(例えば、Bスライス、PスライスまたはGPBスライス)と、スライスについての参照画像リストのうちの1つまたは複数に関する構築情報と、スライスのインターエンコードされたビデオブロックの各々の動きベクトルと、スライスのインターコーディングされたビデオブロックの各々のインター予測ステータスと、現在のビデオスライス内のビデオブロックをデコードするための他の情報とを決定する。
【0103】
エンコードされた画像データ21をデコードするために、ビデオデコーダ30の他の変形が用いられ得る。例えば、デコーダ30は、ループフィルタリングユニット320なしに、出力ビデオストリームを生成できる。例えば、非変換ベースデコーダ30は、特定のブロックまたはフレームのための逆変換処理ユニット312なしに、残差信号を直接的に逆量子化できる。別の実装において、ビデオデコーダ30は、単一のユニットへと組み合わされた逆量子化ユニット310および逆変換処理ユニット312を有し得る。
【0104】
エンコーダ20およびデコーダ30では、現在の段階の処理結果がさらに処理され、その後、次の段階に出力され得ることを理解されたい。例えば、補間フィルタリング、動きベクトル導出またはループフィルタリングの後、補間フィルタリング、動きベクトル導出またはループフィルタリングの処理結果に対して、Clipまたはシフトなどのさらなる演算が実行され得る。
【0105】
現在のブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィンモード、平面モード、ATMVPモードでのサブブロック動きベクトルおよび時間的動きベクトル等を含むが、それらに限定されない)にさらなる演算が適用され得ることに留意されたい。例えば、動きベクトルの値は、その表現ビット数に従って予め定義された範囲に制限される。動きベクトルの表現ビットがbitDepthである場合、その範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1である。「^」は、べき乗を意味する。例えば、bitDepthが16に等しく設定されている場合、その範囲は-32768~32767であり、bitDepthが18に等しく設定されている場合、その範囲は-131072~131071である。例えば、導出された動きベクトル(例えば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックMVの整数部分間の最大差が、1個以下の画素など、N個以下の画素であるように制限される。ここで、bitDepthに従って動きベクトルを制約する2つの方法を提供する。
【0106】
方法1:以下の演算によりオーバフローMSB(最上位ビット)を除去する。
【数1】
【数2】
【数3】
【数4】
mvxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、mvyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは、中間値を示す。
【0107】
例えば、mvxの値が-32769である場合、式(1)および(2)を適用した後、結果として得られる値は32767である。コンピュータシステムにおいて、10進数は2の補数として格納される。-32769の2の補数は、1,0111,1111,1111,1111(17ビット)であり、その後、MSBが破棄されるので、結果として得られる2の補数は、式(1)および(2)を適用することによる出力と同じである0111,1111,1111,1111(10進数は32767である)である。
【数5】
【数6】
【数7】
【数8】
これらの演算は、式(5)から(8)に示されるように、mvpおよびmvdの合計中に適用され得る。
【0108】
方法2:値をクリッピングすることにより、オーバフローMSBを除去する。
【数9】
【数10】
vxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、vyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、x、yおよびzはそれぞれ、MVクリッピング処理の3つの入力値に対応し、関数Clip3の定義は、以下のとおりである。
【数11】
【0109】
図4は、本開示の実施形態によるビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書において説明される本開示の実施形態を実装するのに好適である。実施形態において、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであってよい。
【0110】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニットまたは中央処理装置(CPU)430と、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを格納するためのメモリ460とを備える。ビデオコーディングデバイス400は、光信号または電気信号の出口または入口のために、入口ポート410、受信機ユニット420、送信機ユニット440および出口ポート450に連結された光/電気(OE)コンポーネントおよび電気/光(EO)コンポーネントも備え得る。
【0111】
プロセッサ430は、ハードウェアおよびソフトウェアにより実装される。プロセッサ430は、1つまたは複数のCPUチップ、(例えば、マルチコアプロセッサとしての)コア、FPGA、ASICおよびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450およびメモリ460と通信する。プロセッサ430は、コーディングモジュール470を有する。コーディングモジュール470は、上で説明した、開示された実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング演算を実装、処理、準備または提供する。したがって、コーディングモジュール470を含むことにより、ビデオコーディングデバイス400の機能の実質的な改善が提供され、異なる状態へのビデオコーディングデバイス400の変換がもたらされる。代替的に、コーディングモジュール470は、メモリ460に格納されてプロセッサ430により実行される命令として実装される。
【0112】
メモリ460は、1つまたは複数のディスク、テープドライブおよびソリッドステートドライブを備えてよく、プログラムが実行のために選択された場合にそのようなプログラムを格納するための、かつ、プログラムの実行中に読み取られた命令およびデータを格納するためのオーバーフローデータストレージデバイスとして用いられてよい。メモリ460は、例えば、揮発性および/または不揮発性であってよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)および/またはスタティックランダムアクセスメモリ(SRAM)であってよい。
【0113】
図5は、例示的な実施形態による図1Aの送信元デバイス12および送信先デバイス14のいずれかまたは両方として用いられ得る装置500の簡略ブロック図である。
【0114】
装置500内のプロセッサ502は、中央処理装置であってよい。代替的に、プロセッサ502は、現存するかまたは今後開発される、情報を操作または処理できる任意の他のタイプのデバイスまたは複数のデバイスであってよい。開示される実装は、示されているような単一のプロセッサ、例えばプロセッサ502を用いて実施され得るが、速度および効率上の利点は、1つよりも多くのプロセッサを用いて実現され得る。
【0115】
実装において、装置500内のメモリ504は、リードオンリメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであってよい。任意の他の好適なタイプのストレージデバイスが、メモリ504として用いられ得る。メモリ504は、バス512を用いてプロセッサ502によりアクセスされるコードおよびデータ506を含み得る。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含んでよく、アプリケーションプログラム510は、本明細書において説明される方法をプロセッサ502が実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1からNを含んでよく、アプリケーション1からNは、本明細書において説明される方法を実行するビデオコーディングアプリケーションをさらに含む。
【0116】
装置500は、ディスプレイ518などの1つまたは複数の出力デバイスも含み得る。ディスプレイ518は、一例において、ディスプレイと、タッチ入力を検知するように動作可能なタッチセンサ式要素とを組み合わせたタッチセンサ式ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に連結され得る。
【0117】
ここでは単一のバスとして示されているが、装置500のバス512は、複数のバスから構成され得る。さらに、セカンダリストレージ514は、装置500の他のコンポーネントに直接的に連結されてもよく、ネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを備えてよい。したがって、装置500は、多種多様な構成で実装され得る。クロマサンプルのイントラ予測は、再構築されたルマブロックのサンプルを用いて実行され得る。
【0118】
HEVCの開発中に、成分間線形モデル(CCLM)クロマイントラ予測[J. Kim, S.-W. Park, J.-Y. Park, and B.-M. Jeon, Intra Chroma Prediction Using Inter Channel Correlation, document JCTVC-B021, Jul. 2010]が提案された。CCLMは、コーディングブロック内の対応する位置におけるクロマサンプルとルマサンプルとの間の線形相関を用いる。CCLMを用いてクロマブロックがコーディングされた場合、線形回帰により、再構築された隣接するルマサンプルおよびクロマサンプルから線形モデルが導出される。現在のブロック内のクロマサンプルは、その後、導出された線形モデルを用いて、現在のブロック内の再構築されたルマサンプルにより予測され得る(図6を参照のこと)。
【数12】
CおよびLはそれぞれ、クロマ値およびルマ値を示す。以下のとおり、最小2乗法により、パラメータαおよびβが導出される。
【数13】
M(A)は、Aの平均を表し、R(A,B)は、以下のとおり定義される。
【数14】
【0119】
エンコードされたかまたはデコードされた画像が、ルマ成分およびクロマ成分について異なる数のサンプルを指定する形式(例えば、4:2:0YCbCr形式、)を有する場合、ルマサンプルは、モデリングおよび予測の前にダウンサンプリングされる。
【0120】
方法は、VTM2.0における使用のために採用されている。具体的には、以下のとおり、パラメータの導出が実行される。
【数15】
【数16】
L(n)は、ダウンサンプリングされた上および左の隣接する再構築されたルマサンプルを表し、C(n)は、上および左の隣接する再構築されたクロマサンプルを表す。
【0121】
[G. Laroche, J. Taquet, C. Gisquet, P. Onno (Canon), "CE3: Cross-component linear model simplification (Test 5.1)", Input document to 12th JVET Meeting in Macao, China, Oct. 2018]において、αおよびβを導出する異なる方法が提案された(図7を参照のこと)。特に、線形モデルパラメータαおよびβは、以下の式に従って取得される。
【数17】
【数18】
【数19】
および
【数20】
は、ルマサンプルにおける最大値および最小値の位置である。
【0122】
表1において指定されるルックアップテーブル(LUT)に格納される数による乗算を用いて除算演算を実装することも提案された。この置換は、以下の方法を用いることにより可能である。
【数21】
Sは、精度を指定するシフトパラメータである。
【0123】
表1は、LUTに格納される値のリストとのLUTインデックス範囲(この表の最初の行において与えられる)のマッチングを提供する。各リストは、そのインデックス範囲に対応する。
【数22】
値が以下のとおり計算され得ることが分かる。
【数23】
【0124】
表1において定義される(または上記式を用いて同等に計算される)LUTを用いて、αの計算が以下のとおり実行される。
【数24】
【0125】
シフトパラメータSは、いくつかの部分に分解され得る、すなわち、
【数25】
である。なぜなら、αの値は、さらなる計算において用いられるからである。この分解により、異なるステージにおける計算精度の柔軟性が提供され、したがって、クロマ予測サンプルの値を取得する段階を介して乗算演算のビット深度を再分散することが可能である。特定の実装において、以下のとおりである。
【数26】
【数27】
【数28】
表1 数による乗算を用いて除算演算を実装するための例示的なLUTテーブル
【表1】
【0126】
この場合、線形モデル係数αは、小数値の固定小数点整数表現を有し、αの精度は、クロマ予測サンプルの値の取得において用いられる
【数29】
の値により決定される。
【数30】
【0127】
LUTのサイズは、エンコーダまたはデコーダのハードウェア実装においてかなり重要である。この問題を解決するための最も直接的なやり方は、指定される、すなわち表1内の初期LUTの各N番目(ここで、Nはサブサンプリング比である)要素だけを維持することにより、LUTを定期的にサブサンプリングすることである。
【0128】
Nの2のべき乗サブサンプリング比での通常のサブサンプリングの後に、LUTからのフェッチが、異なるように、つまり、
【数31】
の代わりに
【数32】
と定義される。
【0129】
自然な画像の場合、
【数33】
の確率は、小さい値を有し、この差が大きくなる確率よりも大きいことが分かる。言い換えると、表1の値の発生確率は、左の列から右の列へかけて減り、各列内で、この確率は、その列に属する最初の要素から最後の要素へかけて減る。
【数34】
の値に対する例示的な発生確率依存性が図8において与えられる。
【0130】
したがって、初期LUTの各N番目要素だけを維持するのは、最適には遠い。なぜなら、それは、当てはまらないその引数の等しい確率分布に対応しているからである。
【0131】
この分布を考慮することにより、通常のサブサンプリングが提供し得るよりも良い、LUTのサイズと計算の精度との間のトレードオフを実現することが可能である。
【0132】
具体的には、2つの隣接するLUTエントリが
【数35】
の異なる段階に対応し、この段階の値がエントリのインデックスと共に増すように、非線形インデックス化を用いてLUTを定義することが提案される。
【0133】
計算上効率的な解決手段のうちの1つが、
【数36】
のいくつかの最上位ビットを用いてLUT内のインデックスを決定することである。
【数37】
の最上位ビットの位置により、最上位ビットの位置に基づく精度(すなわち、LUTの2つの隣接するエントリ間の段階)が定義される。最上位ビットの位置の値が大きいほど、より低い精度およびより大きい段階値に対応する。
【0134】
特定の実施形態が図9および図10に示される。図9は、LUT値計算のフローチャートを示し、図10は、
【数38】
の入力値に対応するLUT内のインデックス「idx」をどのように取得するかを示す。
【0135】
図9に示される段階を用いることにより、CCLMモデリングにおけるさらなる使用のためにLUTに格納される値を取得することが可能である。図9において、「ctr」変数が、
【数39】
の全ての可能な値を通じて反復される。実際には、LUTはサブ範囲を有し、各サブ範囲は「colmax」エントリを含むことが分かる。サブ範囲「ctr」内では、値は、等しい「段階」値と共に増す。1よりも大きいインデックス「lut_shift+1」を有するサブ範囲は、「lut_shift」サブ範囲と比較して2倍に増えた対応する「段階」値を有する。最初の2つのサブ範囲は、「step=1<<max(0,lut_shift)」演算における閾値に起因して、1に等しい段階を有するであろう。
【0136】
図9に示されるように、フローチャートは、本発明の実施形態による例示的なルックアップテーブル生成処理を示す。段階902において、ビデオコーディングデバイスがルックアップテーブル生成処理を開始する。ビデオコーディングデバイスは、図1A図1B図3のビデオデコーダ30などのデコーダ、または、図1A図1B図2のビデオエンコーダ20などのエンコーダ、または、図4のビデオコーディングデバイス400、または、図5の装置500であってよい。
【0137】
段階904において、ctr=1、かつ、lut_shift=1にする。段階906においてインデックスlut_shift<lut_shiftmaxであるかどうかが判断される。lut_shift<lut_shiftmaxである場合、段階は、1<<max(0, lut_shift)、かつ、col=0として段階908において計算され、そうでなければ、生成処理は、段階922において終了する。段階910において、開始オフセットが「ctr=ctr+(step>>1)」段階により提供される。その後、col<colmaxであるかどうかが、段階912において判断される。col<colmaxである場合、段階914においてLUT[ctr]=(1<<S)/ctrであり、ここで、段階912から段階918において定義される予め計算されたLUT値によりLUTの1つの行が生成され、そうでなければ、段階920において、インデックスlut_shift= lut_shift+1にする。段階916において、各サブ範囲の開始地点に対応するctrの値は、ctrl+stepとして設定される。段階918において、生成処理は次の列に移り、その後、この処理は段階912に戻る。
【0138】
図9に示されるフローチャートを用いて生成された例示的なLUTが、表2において与えられる。この表の行は、「lut_shift」インデックスを有するサブ範囲に対応する。この表は、6に等しい「lut_shiftmax」と、3に等しい「colmax」とを用いて取得されており、したがって、LUT内に48個のエントリがもたらされている。各サブ範囲の開始地点に対応するctrの値(ゼロ「col」値)は、0、8、17、35、71、143、287である。
【0139】
これらの値は、常に2のべき乗であるわけではない。なぜなら、各サブ範囲内のサブサンプリングは、サブ範囲の中央に関連して実行されるからである。対応する開始オフセットが、図9に示される「ctr=ctr+(step>>1)」段階により提供される。0よりも大きくない「lut_shift」値に対する「段階」の値は、1に等しくなるように設定される。
表2 図9に示されるフローチャートを用いて生成された例示的なLUT
【表2】
【0140】
図10の(A)では、表2に示されるLUT内の対応するエントリの位置を決定すべく、入力値(例えば、差
【数40】
)の2進表現1001が処理されている。入力値の最上位非ゼロビットは、1002として示されている。このビットの位置により、「msb」値が決定される。実際には、msb値は、入力値1001のlog2()である。「msb」から1を減算すると、表2内の行を選択する「lut_shift」値が得られる。そうでなければ、段階は「1<<lut_shift」として計算される。
【0141】
列の選択は、「colmax」ビットを1002の隣に入れることにより実行される。表2内の「col」の値は、以下のとおりに取得される。
「high_bits」の値は、最上位ビット1020に続く「colmax+1」ビットを選択することにより取得され、
colは、1だけデクリメントされた「high_bits」に格納される値に等しくなるように設定される。
【0142】
位置合わせ段階「ctr=ctr+(step>>1)」が図9において実行されない場合には、「lut_shift」値の導出は同じであり、「col」値の導出はより単純でさえある(図10の(B))。「col」の値は、最上位ビット1020に続く「colmax」ビットを選択することにより取得される。このインデックス導出方法は、表3に対応する。各サブ範囲の開始地点(ゼロ「col」値)に対応する「ctr」の値(図9)は、0、8、16、32、64、128、256である。
表3 「ctr=ctr+(step>>1)」がスキップされる場合における、図9に示されるフローチャートを用いて生成された別の例示的なLUT
【表3】
【0143】
「col」の値を導出する場合、msbは、「colmax」よりも少ないかまたはそれに等しくてよい。この場合、「col」の値は、入力差1001の「colmax」最下位ビットに等しくなるように設定される。
【0144】
実際的な実装では、LUTインデックスは1次元のものである。表2および表3に示されるLUTは、
【数41】
に等しくなるように設定されたインデックスを用いて線形的に処理され得る、と典型的には理解されている。
【0145】
表2および表3に示されるLUTの両方とも、大きさが非常に異なる値を格納する。故に、LUTに格納された全ての値について同様の数のビットを有することが合理的である。LUTからフェッチされている値は、lut_shiftの値に従ってさらに左シフトされ得る。このルールからの唯一の例外は、この行内の最後の4つの値とは異なる精度を有する最初の4つの値である。しかしながら、この問題は、最初の4つの値についてこの追加のシフトを格納する追加のLUTにより解決され得る。本実施形態において、乗算器の値は、以下のとおり、LUTからフェッチされた値から復元される。
【数42】
ここで、
【数43】
である。δの値は、4よりも少ないかまたはそれに等しい「idx」値に対してそれぞれ、3、2、1、1に等しくなるように設定される。本実施形態のルックアップテーブルが、表4において与えられる。
表4 複数の範囲内で精度が等しい場合における、図9に示されるフローチャートを用いて生成された別の例示的なLUT
【表4】
【0146】
表4の最後の行が互いに非常に類似していることが分かる。故に、サブ範囲のいくつかの設定について1つの行だけを格納することにより、LUTのサイズを低減することが可能である。特定の実施形態において、lut_shiftの値が特定の閾値よりも大きい場合、lut_shiftの値は、この閾値に等しくなるように設定され、δの値は、初期値「lut_shift」と閾値との間の差だけ減る。
【0147】
図11は、成分間線形モデルを適用することによるブロックのクロマサンプルの例示的なイントラ予測を示すフローチャートである。段階1102において、ビデオコーディングデバイスが、再構築されたルマサンプルを取得する。ビデオコーディングデバイスは、図1A図1B図3のビデオデコーダ30などのデコーダ、または、図1A図1B図2のビデオエンコーダ20などのエンコーダ、または、図4のビデオコーディングデバイス400、または、図5の装置500であってよい。
【0148】
段階1104において、ビデオコーディングデバイスが、再構築されたルマサンプル内の最大の再構築されたサンプル値および最小の再構築されたサンプル値の位置を決定する。例えば、再構築されたルマサンプルは、クロマサンプルに対応する隣接する再構築されたルマサンプルである。
【0149】
段階1106において、ビデオコーディングデバイスが、再構築されたルマサンプルの最大値および最小値の差の値を取得する。
【0150】
段階1108において、ビデオコーディングデバイスが、LUTのインデックスを計算して、再構築されたルマサンプルの最大値および最小値の差の値に対応する乗算器の値をフェッチする。
【0151】
例えば、ビデオコーディングデバイスは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定し、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをLUTのインデックスとして用いて値をフェッチする。最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置は、差の2の対数として取得され得る。ビデオコーディングデバイスは、差の最上位ビットの位置に続くビットセットを決定する。可能な結果として、ビットセットは、4つのビットを含む。
【0152】
LUTは、位置合わせ段階の有無にかかわらず生成される。LUTは、取得された差の異なる段階に対応する、LUTに格納される少なくとも2つの隣接する値を含んでよく、この段階の値は、差の値と共に増すか、または一定である。
【0153】
例示的な表1から表4において開示されたように、LUTは、値のサブ範囲を含み得る。再構築されたルマサンプルの最大値および最小値の差の値の段階は、あるサブ範囲内で一定であり、異なる複数のサブ範囲の段階は異なる。例として、再構築されたルマサンプルの最大値および最小値の差の値の段階は、サブインデックスが増すと共に増す。例えば、再構築されたルマサンプルの最大値および最小値の差の値の段階は、サブインデックスの2のべき乗であってよい。
【0154】
LUTは、第1の値、第2の値および第3の値という少なくとも3つの値を含む。3つの値のうち、第1の値および第2の値は、2つの隣接する値であり、第2の値および第3の値は、2つの隣接する値である。第1の値と第2の値との間の段階(すなわち、精度または差)は、第2の値と第3の値との間の段階に等しくてもよく、それとは異なってもよい。第1の値には第1のビットセットによりインデックスが付され、第2の値には第2のビットセットによりインデックスが付される場合、第1のビットセットの値が第2のビットセットの値よりも大きいときは、第1の値は、第2の値よりも小さく、または、第1のビットセットの値が第2のビットセットの値よりも小さいときは、第1の値は、第2の値よりも大きい。
【0155】
LUTは、サブ範囲へ分割される。再構築されたルマサンプルの最大値および最小値の差の最上位非ゼロビットの位置を用いて、サブインデックスが決定される。例として、サブ範囲のサイズは8に設定され、サブ範囲の数は6である。別の例として、異なる隣接するサブ範囲は、同じ段階に対して値の増加が異なる。
【0156】
LUTは、非線形インデックスを含み得る。2つの隣接するLUTエントリが、L(B)-L(A)の異なる段階に対応する。L(B)は、再構築されたルマサンプルの最大値を表し、L(A)は、再構築されたルマサンプルの最小値を表す。このエントリの段階の値は、このエントリのインデックスと共に増し得る。
【0157】
LUTがL(B)-L(A)のいくつかの最上位ビットを用いる場合、L(B)-L(A)の最上位ビットの位置により、最上位ビットの位置に基づく精度(すなわち、LUTの2つの隣接するエントリ間の段階)が定義される。最上位ビットの位置の値が大きいほど、より低い精度およびより大きい段階値に対応し得る。
【0158】
段階1110において、ビデオコーディングデバイスが、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよびβを取得する。
【0159】
段階1112において、ビデオコーディングデバイスが、取得された線形モデルパラメータαおよびβを用いて、予測されるクロマサンプル値を計算する。
【0160】
図12は、成分間線形モデルを適用することによるブロックのクロマサンプルのイントラ予測のための装置1200の例示的な構造を示すブロック図である。
装置1200は、上記方法を実行するように構成され、
再構築されたルマサンプルを取得するように構成された取得ユニット1210と、
再構築されたルマサンプルに基づいて最大ルマサンプル値および最小ルマサンプル値を決定するように構成された決定ユニット1220と
を含んでよく、
取得ユニット1210はさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成され、
決定ユニット1220はさらに、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定するように構成される。例として、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置は、差の2の対数である。実装として、最上位ビットは、第1の非ゼロビットである。
【0161】
装置1200は、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをインデックスとして用いることによりルックアップテーブル(LUT)から値をフェッチし、フェッチされた値に基づいて線形モデルパラメータαおよびβを取得し、取得された線形モデルパラメータαおよびβを用いることにより予測されるクロマサンプル値を計算するように構成された計算ユニット1230をさらに含む。例えば、ビットセットは、4つのビットを含む。
【0162】
計算ユニットは、フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、線形モデルパラメータαおよびβを取得し得る。例えば、計算ユニットは、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよびβを取得する。
【0163】
[本発明の実施形態の利益]
1. LUTのインデックスが、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される。結果として、LUTから値をフェッチする効率が上がる。
2. LUTから値をフェッチする効率が上がるので、線形モデルパラメータαおよびβを取得するための乗算器の大きさが最小化される。
3. LUTのサイズが最小化される。本発明の実施形態における除算関数(双曲線として知られているf(x)=1/x)の曲線が、以下のやり方で近似された。
1) LUTテーブルのサイズは16であってよい。
i. (0から無限まで変化する導関数を有する1/x曲線の近似のための最小数のエントリ)
2) LUTの要素がエントリインデックスに対する非線形依存性を有する。
i. (1/x曲線を近似するため)
3) 乗算器(LUTの要素)が3ビットの符号なし整数(0…7)である。
i. (0から無限まで変化する導関数を有する1/x曲線の近似のための最小精度)
【0164】
以下は、上で言及された実施形態に示されるようなエンコーディング方法およびデコーディング方法のアプリケーションならびにそれらを用いたシステムの説明である。
【0165】
図13は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、撮像デバイス3102、端末デバイス3106を含み、任意選択的にディスプレイ3126を含む。撮像デバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上で説明した通信チャネル13を含み得る。通信リンク3104は、限定されるわけではないが、WiFi、イーサネット(登録商標)、ケーブル、無線(3G/4G/5G)もしくはUSBまたはそれらの任意の種類の組み合わせ等を含む。
【0166】
撮像デバイス3102は、データを生成し、上記実施形態に示されるようなエンコーディング方法により、データをエンコードし得る。代替的に、撮像デバイス3102は、データをストリーミングサーバ(図には示されていない)へ配信してよく、サーバは、データをエンコードし、エンコードされたデータを端末デバイス3106へ送信する。撮像デバイス3102は、限定されるわけではないが、カメラ、スマートフォンもしくはパッド、コンピュータもしくはラップトップ、ビデオ会議システム、PDA、車載デバイスまたはそれらのいずれかの組み合わせ等を含む。例えば、撮像デバイス3102は、上で説明したような送信元デバイス12を含み得る。データがビデオを含む場合、撮像デバイス3102に含まれるビデオエンコーダ20は、ビデオエンコーディング処理を実際に実行し得る。データがオーディオ(すなわち、音声)を含む場合、撮像デバイス3102に含まれるオーディオエンコーダは、オーディオエンコーディング処理を実際に実行し得る。いくつかの実際のシナリオでは、撮像デバイス3102は、エンコードされたビデオデータおよびオーディオデータを、それらを共に多重化することにより配信する。他の実際のシナリオでは、例えばビデオ会議システムにおいて、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。撮像デバイス3102は、エンコードされたオーディオデータおよびエンコードされたビデオデータを端末デバイス3106へ別個に配信する。
【0167】
コンテンツ供給システム3100において、端末デバイス310は、エンコードされたデータを受信および再現する。端末デバイス3106は、データ受信および回復機能を有するデバイス、例えば、上で言及したエンコードされたデータをデコードできるスマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車載デバイス3124、またはそれらのいずれかの組み合わせ等であってよい。例えば、端末デバイス3106は、上で説明したような送信先デバイス14を含み得る。エンコードされたデータがビデオを含む場合、端末デバイスに含まれるビデオデコーダ30は、ビデオデコーディングの実行を優先させる。エンコードされたデータがオーディオを含む場合、端末デバイスに含まれるオーディオデコーダは、オーディオデコーディング処理の実行を優先させる。
【0168】
ディスプレイを有する端末デバイス、例えば、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、パーソナルデジタルアシスタント(PDA)3122または車載デバイス3124について、端末デバイスは、デコードされたデータをそのディスプレイに供給できる。ディスプレイが備え付けられていない端末デバイス、例えば、STB3116、ビデオ会議システム3118またはビデオ監視システム3120について、外付けディスプレイ3126は、デコードされたデータを受信して示すために、内部で接触される。
【0169】
このシステム内の各デバイスがエンコーディングまたはデコーディングを実行する場合、上で言及した実施形態に示されるように、画像エンコーディングデバイスまたは画像デコーディングデバイスが用いられ得る。
【0170】
図14は、端末デバイス3106の例の構造を示す図である。端末デバイス3106が撮像デバイス3102からストリームを受信した後、プロトコル処理ユニット3202は、ストリームの送信プロトコルを分析する。プロトコルは、限定されるわけではないが、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキストトランスファープロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)またはそれらの任意の種類の組み合わせ等を含む。
【0171】
プロトコル処理ユニット3202がストリームを処理した後、ストリームファイルが生成される。このファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータを、エンコードされたオーディオデータおよびエンコードされたビデオデータへ分離できる。上で説明したように、いくつかの実際のシナリオでは、例えばビデオ会議システムにおいて、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。この状況において、エンコードされたデータは、逆多重化ユニット3204を通すことなく、ビデオデコーダ3206およびオーディオデコーダ3208へ送信される。
【0172】
逆多重化処理を介して、ビデオエレメンタリストリーム(ES)、オーディオESおよび任意選択的に字幕が生成される。上で言及した実施形態において説明したようなビデオデコーダ30を含むビデオデコーダ3206は、上で言及した実施形態に示されるようなデコーディング方法によりビデオESをデコードしてビデオフレームを生成し、このデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESをデコードしてオーディオフレームを生成し、このデータを同期ユニット3212に供給する。代替的に、ビデオフレームは、それを同期ユニット3212に供給する前に、バッファ(図14には示されていない)に格納し得る。同様に、オーディオフレームは、それを同期ユニット3212に供給する前に、バッファ(図14には示されていない)に格納し得る。
【0173】
同期ユニット3212は、ビデオフレームおよびオーディオフレームを同期させ、ビデオ/オーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、ビデオ情報およびオーディオ情報の提示を同期させる。情報は、コーディングされたオーディオデータおよびビジュアルデータの提示に関するタイムスタンプと、データストリーム自体の配信に関するタイムスタンプとを用いて、構文でコーディングされ得る。
【0174】
ストリームに字幕が含まれている場合、字幕デコーダ3210は、字幕をデコードし、それをビデオフレームおよびオーディオフレームと同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【0175】
本発明は、上で言及したシステムに限定されず、上で言及した実施形態における画像エンコーディングデバイスまたは画像デコーディングデバイスのいずれも、他のシステム、例えば自動車システムへ組み込まれ得る。
【0176】
本発明の実施形態を主にビデオコーディングに基づいて説明したが、コーディングシステム10、エンコーダ20およびデコーダ30(およびこれに応じてシステム10)の実施形態、ならびに本明細書において説明された他の実施形態は、静止画像の処理またはコーディング、すなわち、ビデオコーディングにおけるような任意の前の画像または連続する画像から独立した個々の画像の処理またはコーディングのために構成されてもよいことに留意されたい。一般的に、画像処理コーディングが単一の画像17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)のみが利用可能ではないことがある。ビデオエンコーダ20およびビデオデコーダ30の全ての他の機能(ツールまたは技術とも称される)は、静止画像処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分化262/362、イントラ予測254/354、および/またはループフィルタリング220、320ならびにエントロピーコーディング270およびエントロピーデコーディング304に等しく用いられ得る。
【0177】
例えばエンコーダ20およびデコーダ30の実施形態、ならびに、例えばエンコーダ20およびデコーダ30を参照して本明細書において説明された機能は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせに実装され得る。ソフトウェアに実装される場合、これらの機能は、コンピュータ可読媒体に格納されてもよく、通信媒体を介して1つまたは複数の命令またはコードとして送信され、ハードウェアベース処理ユニットにより実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、例えば通信プロトコルに従った、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は概して、(1)非一時的な有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技術の実装のための命令、コードおよび/またはデータ構造を取得するために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによりアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0178】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを格納するために用いられてよく、かつ、コンピュータによりアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、コンピュータ可読媒体と適切に称される。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、電波およびマイクロ波などの無線技術を用いて、ウェブサイト、サーバまたは他のリモート送信元から命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、電波およびマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号または他の一時的媒体を含まないが、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において用いられるようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再現するが、ディスク(disc)は、データをレーザで光学的に再現する。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0179】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)または他の同等の一体型もしくは離散型のロジック回路など、1つまたは複数のプロセッサにより実行され得る。したがって、本明細書において用いられる「プロセッサ」という用語は、前述の構造のいずれか、または本明細書において説明された技術の実装に好適な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書において説明された機能は、エンコーディングおよびデコーディングのために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供されてもよく、組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、1つまたは複数の回路またはロジック要素に完全に実装され得る。
【0180】
本開示の技術は、無線ハンドセット、集積回路(IC)またはICセット(例えば、チップセット)を含む多種多様なデバイスまたは装置に実装され得る。様々なコンポーネント、モジュールまたはユニットが、開示されている技術を実行するように構成されたデバイスの機能態様を強調するために本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアと共に、コーデックハードウェアユニットに組み合わされてもよく、上で説明したような1つまたは複数のプロセッサを含む相互運用ハードウェアユニットの集合により提供されてもよい。
[他の可能な項目]
(項目1)
成分間線形モデルを適用することによりブロックのクロマサンプルをイントラ予測する方法であって、
再構築されたルマサンプルを取得する段階と、
上記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
上記最大ルマサンプル値および上記最小ルマサンプル値の差を取得する段階と、
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の最上位ビットの位置を決定する段階と、
ビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、上記ビットセットは、上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置に続く、フェッチする段階と、
フェッチされた上記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された上記線形モデルパラメータαおよび上記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
(項目2)
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置は、上記差の2の対数として取得される、項目1に記載の方法。
(項目3)
上記差の上記最上位ビットの上記位置に続く上記ビットセットを決定することにより、4つのビットを含む上記ビットセットがもたらされる、項目1または2に記載の方法。
(項目4)
上記最上位ビットは、上記第1の非ゼロビットである、項目1から3のいずれか1つに記載の方法。
(項目5)
上記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得する段階
を備える、項目1から4のいずれか1つに記載の方法。
(項目6)
上記フェッチされた値を上記再構築されたクロマサンプルの上記最大値および上記最小値の上記差により乗算することにより、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得する段階
を備える、項目5に記載の方法。
(項目7)
上記LUTは、第1の値、第2の値および第3の値という少なくとも3つの値を含み、
上記3つの値のうち、上記第1の値および上記第2の値は2つの隣接する値であり、上記第2の値および上記第3の値は2つの隣接する値である、
項目1から6のいずれか1つに記載の方法。
(項目8)
上記第1の値と上記第2の値との間の段階は、上記第2の値と上記第3の値との間の段階に等しい、項目7に記載の方法。
(項目9)
上記第1の値と上記第2の値との間の段階は、上記第2の値と上記第3の値との間の段階とは異なる、項目7に記載の方法。
(項目10)
上記第1の値には第1のビットセットによりインデックスが付され、上記第2の値には第2のビットセットによりインデックスが付され、
上記第1のビットセットの値が上記第2のビットセットの値よりも大きい場合、上記第1の値は、上記第2の値よりも小さく、または、
上記第1のビットセットの値が上記第2のビットセットの値よりも小さい場合、上記第1の値は、上記第2の値よりも大きい、
項目7から9に記載の方法。
(項目11)
上記LUTは、複数の値の複数のサブ範囲を含み、任意の2つの隣接する値の段階は、1つのサブ範囲内で一定である、項目1から10に記載の方法。
(項目12)
成分間線形モデルを適用することによりブロックのクロマサンプルをイントラ予測するための装置であって、上記装置は、エンコーダまたはデコーダであり、上記装置は、
再構築されたルマサンプルを取得するように構成された取得ユニットであって、上記取得ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成される、取得ユニットと、
上記再構築されたルマサンプルに基づいて、上記最大ルマサンプル値および上記最小ルマサンプル値を決定するように構成された決定ユニットであって、上記決定ユニットはさらに、上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の最上位ビットの位置を決定するように構成される、決定ユニットと、
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置に続くビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチし、フェッチされた上記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得し、取得された上記線形モデルパラメータαおよび上記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算するように構成された計算ユニットと
を備える、装置。
(項目13)
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置は、上記差の2の対数である、項目12に記載の装置。
(項目14)
上記ビットセットは、4つのビットを含む、項目12または13に記載の装置。
(項目15)
上記最上位ビットは、上記第1の非ゼロビットである、項目12から14のいずれか1つに記載の装置。
(項目16)
上記計算ユニットは、上記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得するように構成される、項目12から15のいずれか1つに記載の装置。
(項目17)
上記計算ユニットは、上記フェッチされた値を上記再構築されたクロマサンプルの上記最大値および上記最小値の上記差により乗算することにより、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得するように構成される、
項目16に記載の装置。
(項目18)
項目1から11のいずれか1つに記載の方法を実行するための処理回路を備えるエンコーダ。
(項目19)
項目1から11のいずれか1つに記載の方法を実行するための処理回路を備えるデコーダ。
(項目20)
項目1から11のいずれか1つに記載の方法を実行するためのプログラムコードを備えるコンピュータプログラム製品。
(項目21)
デコーダであって、
1つまたは複数のプロセッサと、
上記プロセッサに連結され、上記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、上記プログラミングは、上記プロセッサにより実行された場合、項目1から11のいずれか1つに記載の方法を実行するよう上記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
(項目22)
エンコーダであって、
1つまたは複数のプロセッサと、
上記プロセッサに連結され、上記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、上記プログラミングは、上記プロセッサにより実行された場合、項目1から11のいずれか1つに記載の方法を実行するよう上記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
(項目23)
装置によりデコードされる予測エンコードされたビットストリームを備える非一時的記録媒体であって、上記ビットストリームは、項目1から11のいずれか1つに従って生成される、非一時的記録媒体。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10(A)】
図10(B)】
図11
図12
図13
図14
【手続補正書】
【提出日】2023-04-27
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2018年12月31日に出願された、「イントラ予測のためのクロスコンポーネント線形モデリングの方法および装置」と題する米国仮出願第62/786,563号の利益を主張する。当該出願は、参照により、本明細書に組み込まれる。
本願(開示)の実施形態は、概して、画像処理分野に関し、より具体的には、クロスコンポーネント線形モデリングを用いたイントラ予測に関する。
【背景技術】
【0002】
ビデオコーディング(ビデオエンコーディングおよびビデオデコーディング)は、幅広いデジタルビデオ用途、例えば、放送デジタルTV、インターネットおよびモバイルネットワークを介したビデオ送信、ビデオチャットなどのリアルタイム会話アプリケーション、ビデオ会議、DVDおよびブルーレイディスク、ビデオコンテンツ取得および編集システムならびにセキュリティ用途のカムコーダにおいて用いられている。
【0003】
比較的短いビデオを示すためにでさえ、必要とされるビデオデータの量はかなりのものになることがあり、限定的な帯域幅容量を有する通信ネットワークを介してデータがストリーミングされるか、またはそうでなければ通信される場合、困難が生じ得る。したがって、ビデオデータは概して、現代の電気通信ネットワークを介して通信される前に圧縮される。ビデオのサイズは、ビデオがストレージデバイスに格納される場合にも問題となり得る。なぜなら、メモリリソースが限定的であることがあるからである。ビデオ圧縮デバイスは、送信元におけるソフトウェアおよび/またはハードウェアを用いて、送信または格納の前にビデオデータをコーディングすることが多く、これにより、デジタルビデオイメージを表すために必要とされるデータの量を減らす。その後、圧縮されたデータは、ビデオデータをデコードするビデオ圧縮解除デバイスにより、送信先において受信される。ネットワークリソースが限定的であり、より高いビデオ品質の需要が増え続けていることから、画像品質をほとんどから全く犠牲にせずに圧縮比を改善する、改善された圧縮技術および圧縮解除技術が望ましい。
【発明の概要】
【0004】
本願の実施形態は、独立請求項に記載のエンコーディングおよびデコーディングのための装置および方法を提供する。
【0005】
前述の目的および他の目的は、独立請求項の主題により実現される。従属請求項、明細書および図から、さらなる実装形態が明らかになる。
【0006】
第1の態様によれば、本発明は、クロスコンポーネント線形モデルを適用することによりブロックのクロマサンプルをイントラ予測する方法に関する。方法は、再構築されたルマサンプルを取得する段階と、再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、最大ルマサンプル値および最小ルマサンプル値の差を取得する段階と、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定する段階とを含む。方法は、ビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、ビットセットは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続く、段階と、フェッチされた値に基づいて線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、取得された線形モデルパラメータαおよび線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階とも含む。
【0007】
本発明の第1の態様によれば、LUTのインデックスは、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される。結果として、LUTから値をフェッチする効率が上がる。
【0008】
そのような第1の態様による方法の可能な実装形態において、方法は、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよび線形モデルパラメータβを取得する。
【0009】
LUTから値をフェッチする効率が上がるので、線形モデルパラメータαおよびβを取得するための乗算器の大きさが最小化される。
【0010】
そのような第1の態様による方法の可能な実装形態において、LUTは、取得された差の異なる段階に対応する、LUTに格納される少なくとも2つの隣接する値を含み、この段階の値は、差の値と共に増すか、または一定である。LUTのインデックスは、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される、これに応じて、インデックスに対応するLUT内のエントリのサイズは最小化される。結果として、LUTのサイズが最小化される。
【0011】
クロスコンポーネント線形モデルを適用することによりブロックのクロマサンプルをイントラ予測するための装置が、本発明の第2の態様に従って提供される。本発明の第2の態様による装置は、取得ユニットと、決定ユニットと、計算ユニットとを含む。取得ユニットは、再構築されたルマサンプルを取得するように構成される。決定ユニットは、再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定するように構成される。取得ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成される。決定ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定するように構成される。計算ユニットは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをインデックスとして用いることによりルックアップテーブル(LUT)から値をフェッチし、フェッチされた値に基づいて線形モデルパラメータαおよびβを取得し、取得された線形モデルパラメータαおよびβを用いることにより予測されるクロマサンプル値を計算するように構成される。
【0012】
本発明の第2の態様によれば、装置は、2進表現内のいくつかのビットを抽出する洗練されたやり方でLUTのインデックスを計算する。結果として、LUTから値をフェッチする効率が上がる。
【0013】
第3の態様によれば、本発明は、プロセッサとメモリとを含む、ビデオストリームをデコーディングするための装置に関する。メモリは、第1の態様または第1の態様の任意の可能な実施形態による方法をプロセッサに実行させる命令を格納している。
【0014】
第4の態様によれば、本発明は、プロセッサとメモリとを含む、ビデオストリームをエンコーディングするための装置に関する。メモリは、第1の態様または第1の態様の任意の可能な実施形態による方法をプロセッサに実行させる命令を格納している。
【0015】
第5の態様によれば、実行された場合、1つまたは複数のプロセッサがビデオデータをコーディングするように構成されるようにする命令が格納されたコンピュータ可読記憶媒体が提案される。命令は、第1の態様または第1の態様の任意の可能な実施形態による方法を1つまたは複数のプロセッサに実行させる。
【0016】
第6の態様によれば、本発明は、コンピュータ上で実行された場合、第1の態様または第1の態様の任意の可能な実施形態による方法を実行するためのプログラムコードを備えるコンピュータプログラムに関する。
【0017】
1つまたは複数の実施形態の詳細が、添付図面および以下の説明に記載されている。他の特徴、目的および利点は、明細書、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0018】
添付の図および図面を参照して、本発明の実施形態を以下でより詳細に説明する。
図1A】本発明の実施形態を実装するように構成されたビデオコーディングシステムの例を示すブロック図である。
図1B】本発明の実施形態を実装するように構成されたビデオコーディングシステムの別の例を示すブロック図である。
図2】本発明の実施形態を実装するように構成されたビデオエンコーダの例を示すブロック図である。
図3】本発明の実施形態を実装するように構成されたビデオデコーダの例示的な構造を示すブロック図である。
図4】エンコーディング装置またはデコーディング装置の例を示すブロック図である。
図5】エンコーディング装置またはデコーディング装置の別の例を示すブロック図である。
図6】クロマイントラ予測のためのクロスコンポーネント線形モデルの概念を示す図面である。
図7】線形モデルパラメータ導出の簡略化された方法を示す図面である。
図8】参照ルマサンプルの最大値と最小値との間の差の発生確率分布を示す図面である。
図9】本発明の実施形態による例示的なルックアップテーブル生成処理を示すフローチャートである。
図10】例示的なルックアップテーブルのインデックス導出の実施形態を示すフローチャートを含む図面である。
図11クロスコンポーネント線形モデルを適用することによるブロックのクロマサンプルの例示的なイントラ予測を示すフローチャートである。
図12クロスコンポーネント線形モデルを適用することによりブロックのクロマサンプルのイントラ予測のための装置の例示的な構造を示すブロック図である。
図13】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
図14】端末デバイスの例の構造を示すブロック図である。以下では、別途明示的に指定されない場合、同一の参照符号は、同一または少なくとも機能的に同等の特徴を指す。
【発明を実施するための形態】
【0019】
以下の説明では、本開示の一部を形成し、かつ、本発明の実施形態の特定の態様または本発明の実施形態が用いられ得る特定の態様を実例として示す、添付図面を参照する。本発明の実施形態は他の態様で用いられてよく、図面に示されていない構造上または論理上の変更を含んでよいことが理解される。したがって、以下の詳細な説明は、限定的な意味に解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲により定義される。
【0020】
例えば、説明される方法に関連する開示が、当該方法を実行するように構成された対応するデバイスまたはシステムについても当てはまり得ること、そしてその逆も同様であることが理解される。例えば、1つまたは複数の特定の方法の段階が説明される場合、対応するデバイスは、説明される1つまたは複数の方法の段階を実行するための、例えば機能ユニットなどの1つまたは複数のユニット(例えば、1つまたは複数の段階を実行する1つのユニット、または複数の段階のうちの1つまたは複数を各々が実行する複数のユニット)を、そのような1つまたは複数のユニットが図において明示的に説明されていないかまたは示されていないときでも含み得る。他方で、例えば、特定の装置が、例えば機能ユニットなどの1つまたは複数のユニットに基づいて説明される場合、対応する方法は、1つまたは複数のユニットの機能を実行するために1つの段階(例えば、1つまたは複数のユニットの機能を実行する1つの段階、または複数のユニットのうちの1つまたは複数の機能を各々が実行する複数の段階)を、そのような1つまたは複数の段階が図において明示的に説明されていないかまたは示されていないときでも含み得る。さらに、特に別段の記載がない限り、本明細書において説明される様々な例示的な実施形態および/または態様の特徴が互いに組み合わされ得ることが理解される。
【0021】
ビデオコーディングは典型的には、ビデオまたはビデオシーケンスを形成する一連の画像の処理を指す。「画像」という用語の代わりに、「フレーム」または「イメージ」という用語が、ビデオコーディングの分野における同義語として用いられ得る。ビデオコーディング(または一般的にコーディング)は、ビデオエンコーディングおよびビデオデコーディングの2つの部分を含む。ビデオエンコーディングは、送信元側で実行され、典型的には、元のビデオ画像を(例えば、圧縮により)処理して、(より効率的な格納および/または送信のために、)ビデオ画像を表すために必要とされるデータの量を低減することを含む。ビデオデコーディングは、送信先側で実行され、典型的には、ビデオ画像を再構築するために、エンコーダと比較して逆の処理を含む。ビデオ画像(または一般的に画像)の「コーディング」に言及する実施形態は、ビデオ画像またはそれぞれのビデオシーケンスの「エンコーディング」または「デコーディング」に関すると理解されるものとする。エンコーディング部分とデコーディング部分との組み合わせは、コーデック(コーディングおよびデコーディング)とも称される。
【0022】
無損失ビデオコーディングの場合、(格納または送信中に送信損失または他のデータ損失がないと仮定すると、)元のビデオ画像が再構築され得る。すなわち、再構築されたビデオ画像は、元のビデオ画像と同じ品質を有する。不可逆ビデオコーディングの場合、デコーダにおいて完全には再構築され得ないビデオ画像を表すデータの量を低減するために、例えば量子化により、さらなる圧縮が実行される。すなわち、再構築されたビデオ画像の品質は、元のビデオ画像の品質と比較して低いかまたは悪い。
【0023】
いくつかのビデオコーディング規格は、「不可逆ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域内での空間的および時間的予測と、変換領域内での量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各画像は典型的には、非重複ブロックのセットへ区分化され、コーディングは典型的には、ブロックレベルで実行される。言い換えると、エンコーダでは、ビデオは、例えば、空間的(イントラ画像)予測および/または時間的(インター画像)予測を用いて予測ブロックを生成し、現在のブロック(現在処理されている/将来処理されるブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換し、変換領域内の残差ブロックを量子化して、送信されるデータの量を低減すること(圧縮)により、典型的には、ブロック(ビデオブロック)レベルで処理され、すなわちエンコードされ、一方、デコーダでは、表現のために現在のブロックを再構築するために、エンコーダと比較して逆の処理が、エンコードされたかまたは圧縮されたブロックに適用される。さらに、両方が後続のブロックを処理するために、すなわちコーディングするために同一の予測(例えば、イントラ予測およびインター予測)および/または再構築物を生成することになるように、エンコーダは、デコーダの処理ループを繰り返す。
【0024】
ビデオコーディングシステム10の以下の実施形態では、ビデオエンコーダ20およびビデオデコーダ30を図1から図3に基づいて説明する。
【0025】
図1Aは、本願の技術を利用し得る例示的なコーディングシステム10、例えばビデオコーディングシステム10(または略して、コーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(または略してエンコーダ20)およびビデオデコーダ30(または略してデコーダ30)は、本願において説明される様々な例に従って技術を実行するように構成され得るデバイスの例を表す。
【0026】
図1Aに示されるように、コーディングシステム10は、エンコードされた画像データ21を、エンコードされた画像データ21をデコードするために例えば送信先デバイス14に提供するように構成された送信元デバイス12を備える。
【0027】
送信元デバイス12は、エンコーダ20を備え、追加的に、すなわち任意選択的に、画像ソース16と、プリプロセッサ(または前処理ユニット)18、例えば画像プリプロセッサ18と、通信インタフェースまたは通信ユニット22とを備え得る。
【0028】
画像ソース16は、任意の種類の撮像デバイス、例えば、現実世界の画像を撮像するためのカメラ、および/または、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション化された画像を生成するためのコンピュータグラフィックスプロセッサ、または、現実世界の画像、コンピュータ生成された画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得および/または提供するための任意の種類の他のデバイスを備えてもよく、それらであってもよい。画像ソースは、上述の画像のいずれかを格納する任意の種類のメモリまたはストレージであってよい。
【0029】
プリプロセッサ18、および前処理ユニット18により実行される処理と区別して、画像または画像データ17は、生画像または生画像データ17とも称され得る。
【0030】
プリプロセッサ18は、(生)画像データ17を受信し、画像データ17に対して前処理を実行して前処理された画像19または前処理された画像データ19を取得するように構成される。プリプロセッサ18により実行される前処理は、例えば、トリミング、カラーフォーマット換算(例えば、RGBからYCbCrへのもの)、色補正またはノイズ除去を含み得る。前処理ユニット18は任意選択的な成分であってよいことが理解できる。
【0031】
ビデオエンコーダ20は、前処理された画像データ19を受信し、エンコードされた画像データ21を提供するように構成される(例えば図2に基づいて、さらなる詳細を以下で説明する)。送信元デバイス12の通信インタフェース22は、エンコードされた画像データ21を受信し、格納または直接的な再構築のために、通信チャネル13を介して、エンコードされた画像データ21(またはそのあらゆるさらに処理されたバージョン)を別のデバイス、例えば、送信先デバイス14または任意の他のデバイスへ送信するように構成され得る。
【0032】
送信先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を備え、追加的に、すなわち任意選択的に、通信インタフェースまたは通信ユニット28と、ポストプロセッサ32(または後処理ユニット32)と、ディスプレイデバイス34とを備え得る。
【0033】
送信先デバイス14の通信インタフェース28は、例えば、送信元デバイス12から直接、または、任意の他の送信元、例えば、ストレージデバイス、例えば、エンコードされた画像データ用のストレージデバイスから、エンコードされた画像データ21(またはそのあらゆるさらに処理されたバージョン)を受信し、エンコードされた画像データ21をデコーダ30に提供するように構成される。
【0034】
通信インタフェース22および通信インタフェース28は、送信元デバイス12と送信先デバイス14との間の直接的な通信リンク、例えば、直接的な有線接続もしくは無線接続を介して、または、任意の種類のネットワーク、例えば、有線ネットワークもしくは無線ネットワークもしくはそれらの任意の組み合わせ、もしくは任意の種類のプライベートネットワークおよびパブリックネットワークもしくはそれらの任意の種類の組み合わせを介して、エンコードされた画像データ21またはエンコードされたデータ13を送信または受信するように構成され得る。
【0035】
通信インタフェース22は、例えば、エンコードされた画像データ21を適切なフォーマット、例えばパケットへパッケージングし、および/または、通信リンクまたは通信ネットワークを介した送信のための任意の種類の送信エンコーディングまたは処理を用いて、エンコードされた画像データを処理するように構成され得る。
【0036】
通信インタフェース22の対応物を形成する通信インタフェース28は、例えば、送信されたデータを受信し、任意の種類の対応する送信デコーディングまたは処理および/またはデパッケージングを用いて送信データを処理してエンコードされた画像データ21を取得するように構成され得る。
【0037】
通信インタフェース22および通信インタフェース28は両方とも、図1Aにおいて送信元デバイス12から送信先デバイス14へ向いた通信チャネル13についての矢印により示されるような単方向通信インタフェース、または双方向通信インタフェースとして構成されてよく、例えば、メッセージを送信および受信し、例えば、接続を設定して、通信リンクおよび/またはデータ送信、例えば、エンコードされた画像データの送信に関連する任意の他の情報を確認およびやり取りするように構成されてよい。
【0038】
デコーダ30は、エンコードされた画像データ21を受信し、デコードされた画像データ31またはデコードされた画像31を提供するように構成される(例えば、図3または図5に基づいて、さらなる詳細を以下で説明する)。
【0039】
送信先デバイス14のポストプロセッサ32は、デコードされた画像データ31(再構築された画像データとも呼ばれる)、例えば、デコードされた画像31を後処理して、後処理された画像データ33、例えば、後処理された画像33を取得するように構成される。後処理ユニット32により実行される後処理は、例えば、デコードされた画像データ31を、例えば、ディスプレイデバイス34による表示のために準備する目的で、例えば、カラーフォーマット換算(例えば、YCbCrからRGBへのもの)、色補正、トリミングもしくは再サンプリングまたは任意の他の処理を含んでよい。
【0040】
送信先デバイス14のディスプレイデバイス34は、画像を例えばユーザまたは視聴者に対して表示するために、後処理された画像データ33を受信するように構成される。ディスプレイデバイス34は、再構築された画像を表すための任意の種類のディスプレイ、例えば、一体型または外付けのディスプレイまたはモニタであってもよく、これを備えてもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、シリコン上液晶(LCoS)、デジタル光プロセッサ(DLP)または任意の種類の他のディスプレイを備えてよい。
【0041】
図1Aは送信元デバイス12および送信先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態はまた、それらの両方または両方の機能、すなわち、送信元デバイス12または対応する機能および送信先デバイス14または対応する機能を備え得る。そのような実施形態では、送信元デバイス12または対応する機能および送信先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを用いて、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせにより実装され得る。
【0042】
説明に基づいて当業者には明らかになるように、図1Aに示されるような、異なるユニットの機能または送信元デバイス12および/または送信先デバイス14内の機能の存在および(厳密な)分割は、実際のデバイスおよび用途に応じて異なり得る。
【0043】
エンコーダ20(例えば、ビデオエンコーダ20)もしくはデコーダ30(例えば、ビデオデコーダ30)またはエンコーダ20とデコーダ30との両方は、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、ビデオコーディング専用またはそれらの任意の組み合わせなど、図1Bに示されるような処理回路を介して実装され得る。エンコーダ20は、図2のエンコーダ20および/または本明細書において説明される任意の他のエンコーダシステムまたはエンコーダサブシステムに関連して論じられる様々なモジュールを具現化するために、処理回路46を介して実装され得る。デコーダ30は、図3のデコーダ30および/または本明細書において説明される任意の他のデコーダシステムまたはデコーダサブシステムに関連して論じられる様々なモジュールを具現化するために、処理回路46を介して実装され得る。処理回路は、後で論じられるような様々な演算を実行するように構成され得る。図5に示されるように、これらの技術が部分的にソフトウェア内に実装される場合、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読記憶媒体に格納してよく、1つまたは複数のプロセッサを用いてハードウェア内の命令を実行して、本開示の技術を実行し得る。ビデオエンコーダ20およびビデオデコーダ30のいずれも、図1Bに示されるように、例えば、単一のデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0044】
送信元デバイス12および送信先デバイス14は、任意の種類のハンドヘルドデバイスまたは据え置き型デバイス、例えば、ノートブックコンピュータもしくはラップトップコンピュータ、携帯電話、スマートフォン、タブレットもしくはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、ブロードキャスト受信機デバイスまたはブロードキャスト送信機デバイス等を含む幅広い範囲のデバイスのいずれかを備えてよく、オペレーティングシステムを用いなくてもよく、任意の種類のオペレーティングシステムを用いてもよい。いくつかの場合、送信元デバイス12および送信先デバイス14は、無線通信用に備え付けられ得る。したがって、送信元デバイス12および送信先デバイス14は、無線通信デバイスであってよい。
【0045】
いくつかの場合、図1Aに示されるビデオコーディングシステム10は例に過ぎず、本願の技術は、エンコーディングデバイスとデコーディングデバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディングまたはビデオデコーディング)に適用され得る。他の例において、データは、ローカルメモリから取得される、またはネットワークを介してストリーミングされる等である。ビデオエンコーディングデバイスは、データをメモリにエンコードおよび格納してよく、および/または、ビデオデコーディングデバイスは、データをメモリから取得してデコードしてよい。いくつかの例において、エンコーディングおよびデコーディングは、互いに通信しないが、単にデータをメモリへエンコードし、および/またはメモリからのデータを取得およびデコードするデバイスにより実行される。
【0046】
説明の便宜上、例えば、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)により開発された次世代ビデオコーディング規格であるHigh-Efficiency Video Coding(HEVC)またはVersatile Video Coding(VVC)の参照ソフトウェアを参照して、本発明の実施形態を本明細書において説明する。当業者であれば、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
[エンコーダおよびエンコーディング方法]
【0047】
図2は、本願の技術を実装するように構成された例示的なビデオエンコーダ20の概略ブロック図を示す。図2の例において、ビデオエンコーダ20は、入力201(または入力インタフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、ループフィルタユニット220と、デコードされた画像用バッファ(DPB)230と、モード選択ユニット260と、エントロピーエンコーディングユニット270と、出力272(または出力インタフェース272)とを備える。モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、区分化ユニット262とを含み得る。インター予測ユニット244は、動き推定ユニットと動き補償ユニット(不図示)とを含み得る。図2に示されるようなビデオエンコーダ20は、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
【0048】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260は、エンコーダ20の順方向信号経路を形成すると言及されてよく、一方、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成すると言及されてよい。ビデオエンコーダ20の逆方向信号経路は、デコーダの信号経路に対応する(図3におけるビデオデコーダ30を参照のこと)。逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の「ビルトインデコーダ」を形成するとも言及される。
[画像および画像区分化(画像およびブロック)]
【0049】
エンコーダ20は、例えば入力201を介して、画像17(または画像データ17)、例えば、ビデオまたはビデオシーケンスを形成する一連の画像のうちのある画像を受信するように構成され得る。受信された画像または画像データは、前処理された画像19(または前処理された画像データ19)であってもよい。簡略化のために、以下の説明では、画像17を参照する。(特に、ビデオコーディングにおいて、現在の画像を他の画像、例えば、同じビデオシーケンス、すなわち、現在の画像も含むビデオシーケンスの以前にエンコードされたおよび/またはデコードされた画像と区別するために、)画像17は、現在の画像またはコーディングされる画像とも称され得る。
【0050】
(デジタル)画像は、強度値を有するサンプルの2次元のアレイまたは行列であるか、それとみなされ得る。アレイ内のサンプルは、画素(画像要素の省略形)またはペルとも称され得る。アレイまたは画像の水平および垂直方向(または軸)におけるサンプルの数により、画像のサイズおよび/または解像度が定まる。色の表現のために、典型的には、3つの色成分が使用される。すなわち、画像は、3つのサンプルアレイとして表され得るか、またはそれらを含み得る。RGB形式またはRGB色空間では、画像は、対応する赤、緑および青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各画素は典型的には、輝度およびクロミナンス形式または輝度およびクロミナンス色空間、例えば、Y(場合によっては、代わりにLも用いられる)により示される輝度成分と、CbおよびCrにより示される2つのクロミナンス成分とを含むYCbCrで表される。輝度(または略して、ルマ)成分Yは、明るさまたは(例えば、グレースケール画像でのような)グレーレベルの強度を表し、一方、2つのクロミナンス(または略して、クロマ)成分CbおよびCrは、色度成分または色情報成分を表す。したがって、YCbCr形式の画像は、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスサンプルアレイとを含む。RGB形式の画像は、YCbCr形式へ換算または変換されてよく、逆も同様であり、この処理は、色変換または色換算としても知られている。画像がモノクロである場合、この画像は、輝度サンプルアレイのみを含み得る。したがって、画像は、例えば、モノクロ形式のルマサンプルのアレイ、または、4:2:0、4:2:2および4:4:4のカラー形式でのルマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであってよい。
【0051】
ビデオエンコーダ20の実施形態は、画像17を複数の(典型的には非重複)画像ブロック203へ区分化するように構成された画像区分化ユニット(図2に示されていない)を含み得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)またはコーディングツリーブロック(CTB)もしくはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)とも称され得る。画像区分化ユニットは、ビデオシーケンスの全ての画像と、ブロックサイズを定める対応するグリッドとに同じブロックサイズを用いるか、または、画像もしくは画像のサブセットもしくはグループの間でブロックサイズを変更して各画像を対応するブロックへ区分化するように構成され得る。
【0052】
さらなる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つの、いくつかのまたは全てのブロックを直接的に受信するように構成され得る。画像ブロック203は、現在の画像ブロックまたはコーディングされる画像ブロックとも称され得る。
【0053】
画像17と同様に、画像ブロック203もやはり、画像17よりも寸法は小さいが強度値(サンプル値)を有するサンプルの2次元のアレイまたは行列であるか、それとみなされ得る。言い換えると、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合にはルマアレイ、または、カラー画像の場合にはルマアレイもしくはクロマアレイ)、または、3つのサンプルアレイ(例えば、カラー画像17の場合には1つのルマアレイおよび2つのクロマアレイ)、または、適用されるカラーフォーマットに応じた任意の他の数および/または種類のアレイを含み得る。ブロック203の水平および垂直方向(または軸)におけるサンプルの数により、ブロック203のサイズが定まる。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイまたは変換係数のM×Nアレイであってよい。
【0054】
図2に示されるようなビデオエンコーダ20の実施形態は、画像17をブロック毎にエンコードするように構成されてよく、例えば、エンコーディングおよび予測は、ブロック203毎に実行される。
[残差計算]
【0055】
残差計算ユニット204は、例えば、画像ブロック203のサンプル値から予測ブロック265のサンプル値をサンプル毎に(画素毎に)減算してサンプル領域内の残差ブロック205を取得することにより、画像ブロック203および予測ブロック265(予測ブロック265についてのさらなる詳細は後で提供される)に基づいて残差ブロック205(残差205とも称される)を計算するように構成され得る。
[変換]
【0056】
変換処理ユニット206は、変換、例えば、離散余弦変換(DCT)または離散正弦変換(DST)を残差ブロック205のサンプル値に対して適用して変換領域内の変換係数207を取得するように構成され得る。変換係数207は、変換残差係数とも称されてよく、変換領域内の残差ブロック205を表す。
【0057】
変換処理ユニット206は、H.265/HEVCについて指定された変換など、DCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較して、そのような整数近似は典型的には、特定の係数によりスケーリングされる。順変換および逆変換により処理される残差ブロックのノルムを保つべく、追加のスケーリング係数が変換処理の一部として適用される。スケーリング係数は典型的には、シフト演算についての2のべき乗であるスケーリング係数、変換係数のビット深度、確度と実装コストとの間のトレードオフ等のような特定の制約に基づいて選ばれる。例えば、特定のスケーリング係数が、例えば、逆変換処理ユニット212による逆変換(および、例えばビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)のために指定され、例えば、エンコーダ20における変換処理ユニット206による順変換のための対応するスケーリング係数が、それに応じて指定され得る。
【0058】
ビデオエンコーダ20の実施形態(それぞれ、変換処理ユニット206)は、例えば1回の変換または複数回の変換のタイプといった変換パラメータを、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードもしくは圧縮されてから出力するように構成されてよく、その結果、例えば、ビデオデコーダ30は、デコーディングのための変換パラメータを受信および使用し得る。
[量子化]
【0059】
量子化ユニット208は、例えばスカラ量子化またはベクトル量子化を適用することにより、変換係数207を量子化して量子化された係数209を取得するように構成され得る。量子化された係数209は、量子化変換係数209または量子化残差係数209とも称され得る。
【0060】
量子化処理により、変換係数207のうちのいくつかまたは全てに関連するビット深度が低減し得る。例えば、nビット変換係数は、量子化中にmビット変換係数へと端数が切り捨てられ得る。nはmよりも大きい。量子化の程度は、量子化パラメータ(QP)を調節することにより修正され得る。例えば、スカラ量子化の場合、より細かいまたはより粗い量子化を実現するために、異なるスケーリングが適用され得る。より小さい量子化段階サイズはより細かい量子化に対応し、一方、より大きい量子化段階サイズはより粗い量子化に対応する。適用可能な量子化段階サイズは、量子化パラメータ(QP)により示され得る。量子化パラメータは、例えば、適用可能な量子化段階サイズの予め定義されたセットのインデックスであってよい。例えば、小さい量子化パラメータは細かい量子化(小さい量子化段階サイズ)に対応してよく、大きい量子化パラメータは粗い量子化(大きい量子化段階サイズ)に対応してよく、または逆も同様である。量子化は、量子化段階サイズによる除算を含んでよく、例えば逆量子化ユニット210による対応するおよび/または逆の量子化解除は、量子化段階サイズによる乗算を含んでよい。例えばHEVCといったいくつかの規格による実施形態は、量子化パラメータを用いて量子化段階サイズを決定するように構成され得る。概して、量子化段階サイズは、除算を含む式の固定小数点近似を用いた量子化パラメータに基づき計算され得る。残差ブロックのノルムを復元するために、量子化および量子化解除に追加のスケーリング係数が導入されてよく、これは、量子化段階サイズおよび量子化パラメータについての式の固定小数点近似において用いられるスケーリングが原因で修正され得る。1つの例示的な実装において、逆変換および量子化解除のスケーリングは組み合わされ得る。代替的に、カスタマイズされた量子化テーブルが用いられ、例えばビットストリームにおいてエンコーダからデコーダへシグナリングされ得る。量子化は不可逆演算であり、量子化段階サイズが大きくなるにつれて損失が大きくなる。
【0061】
ビデオエンコーダ20の実施形態(それぞれ、量子化ユニット208)は、量子化パラメータ(QP)を、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードされてから出力するように構成され得る。その結果、例えば、ビデオデコーダ30は、デコーディングのための量子化パラメータを受信および適用し得る。
[逆量子化]
【0062】
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化段階サイズに基づいてまたはそれを用いて量子化ユニット208により適用された量子化スキームの逆を適用することにより、量子化された係数に対して量子化ユニット208の逆量子化を適用して、量子化解除された係数211を取得するように構成される。量子化解除された係数211は、量子化解除された残差係数211とも称されてよく、典型的には量子化による損失に起因して変換係数と同一ではないが、変換係数207に対応する。
[逆変換]
【0063】
逆変換処理ユニット212は、変換処理ユニット206により適用された変換の逆変換、例えば、逆離散余弦変換(DCT)もしくは逆離散正弦変換(DST)または他の逆変換を適用して、サンプル領域内の再構築された残差ブロック213(または対応する量子化解除された係数213)を取得するように構成される。再構築された残差ブロック213は、変換ブロック213とも称され得る。
[再構築]
【0064】
再構築ユニット214(例えば、加算器または合算器214)は、例えば、再構築された残差ブロック213のサンプル値および予測ブロック265のサンプル値をサンプル毎に加算することにより、変換ブロック213(すなわち、再構築された残差ブロック213)を予測ブロック265に加算して、サンプル領域内の再構築されたブロック215を取得するように構成される。
[フィルタリング]
【0065】
ループフィルタユニット220(または略して、「ループフィルタ」220)は、再構築されたブロック215をフィルタリングして、フィルタリングされたブロック221を取得するか、または一般的に、再構築されたサンプルをフィルタリングして、フィルタリングされたサンプルを取得するように構成される。ループフィルタユニットは、例えば、画素遷移を平滑化するか、またはそうでなければビデオ品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタ、もしくは、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化フィルタ、平滑化フィルタもしくは協調フィルタなど、1つまたは複数の他のフィルタ、または、それらの任意の組み合わせを含み得る。ループフィルタユニット220は、図2ではループ内フィルタであるものとして示されているが、他の構成では、ポストループフィルタとして実装され得る。フィルタリングされたブロック221は、フィルタリング済みの再構築されたブロック221とも称され得る。
【0066】
ビデオエンコーダ20の実施形態(それぞれ、ループフィルタユニット220)は、ループフィルタパラメータ(サンプル適応オフセット情報など)を、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードされてから出力するように構成され得る。その結果、例えば、デコーダ30は、デコーディングのために同じループフィルタパラメータまたはそれぞれのループフィルタを受信および適用し得る。
[デコードされた画像用バッファ]
【0067】
デコードされた画像用バッファ(DPB)230は、ビデオエンコーダ20によりビデオデータをエンコーディングするための参照画像または一般的に参照画像データを格納するメモリであってよい。DPB230は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗型RAM(RRAM)などの様々なメモリデバイスまたは他のタイプのメモリデバイスのいずれかにより形成され得る。デコードされた画像用バッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を格納するように構成され得る。デコードされた画像用バッファ230はさらに、同じ現在の画像または異なる画像、例えば以前に再構築された画像の他の以前にフィルタリングされたブロック、例えば以前に再構築済みのフィルタリングされたブロック221を格納するように構成されてよく、完全な、以前に再構築された、すなわちデコードされた画像(対応する参照ブロックおよび参照サンプル)および/または部分的に再構築された現在の画像(対応する参照ブロックおよび参照サンプル)を、例えばインター予測のために提供してよい。また、デコードされた画像用バッファ(DPB)230は、例えば、再構築されたブロック215がループフィルタユニット220によりフィルタリングされていない場合、1つまたは複数のフィルタリングされていない再構築されたブロック215もしくは一般的に、フィルタリングされていない再構築されたサンプル、または、再構築されたブロックもしくはサンプルの任意の他のさらに処理されたバージョンを格納するように構成され得る。
[モード選択(区分化および予測)]
【0068】
モード選択ユニット260は、区分化ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを備え、元の画像データ、例えば、元のブロック203(現在の画像17の現在のブロック203)、および、再構築された画像データ、例えば、同じ(現在の)画像の、および/または1つまたは複数の以前にデコードされた画像からの、例えば、デコードされた画像用バッファ230または他のバッファ(例えば、不図示のラインバッファ)からのフィルタリングされたおよび/またはフィルタリングされていない再構築されたサンプルまたはブロックを受信または取得するように構成される。再構築された画像データは、予測ブロック265または予測因子265を取得するために、予測、例えばインター予測またはイントラ予測のための参照画像データとして用いられる。
【0069】
モード選択ユニット260は、現在のブロック予測モード(区分化を含まない)および予測モード(例えば、イントラ予測モードまたはインター予測モード)のための区分化を決定または選択し、残差ブロック205の計算および再構築されたブロック215の再構築のために用いられる対応する予測ブロック265を生成するように構成され得る。
【0070】
モード選択ユニット260の実施形態は、区分化および予測モードを(例えば、モード選択ユニット260によりサポートされるか、またはモード選択ユニット260のために利用可能であるものから)選択するように構成され得る。これにより、最良のマッチング、または言い換えると、最小残差(最小残差は、送信または格納について圧縮率がより良好であることを意味する)もしくは最小シグナリングオーバヘッド(最小シグナリングオーバヘッドは、送信または格納の圧縮率がより良好であることを意味する)が提供されるか、または両方が考慮されるかもしくは両方のバランスが取られる。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分化および予測モードを決定するように、すなわち、最小レート歪みを提供する予測モードを選択するように構成され得る。この文脈における「最良」、「最小」、「最適」等のような用語は、全体的な「最良」、「最小」、「最適」等を必ずしも指さないが、値が閾値を超えるかもしくは下回ること、または潜在的に「準最適選択」につながるが複雑性および処理時間を低減する他の制約のような、終了または選択の基準の達成も指し得る。
【0071】
言い換えると、区分化ユニット262は、例えば、クアッドツリー区分化(QT)、バイナリ区分化(BT)もしくはトリプルツリー区分化(TT)またはそれらの任意の組み合わせを繰り返し用いてブロック203をより小さいブロックパーティションまたはサブブロック(ブロックを再び形成する)へ区分化し、例えば、ブロックパーティションまたはサブブロックの各々についての予測を実行するように構成され得る。モード選択は、区分化されたブロック203のツリー構造の選択を含み、予測モードは、ブロックパーティションまたはサブブロックの各々に適用される。
【0072】
以下では、例示的なビデオエンコーダ20により実行される、(例えば、区分化ユニット262による)区分化および(インター予測ユニット244およびイントラ予測ユニット254による)予測処理をより詳細に説明する。
[区分化]
【0073】
区分化ユニット262は、現在のブロック203をより小さいパーティション、例えば、正方形または矩形のサイズのより小さいブロックへ区分化(または分割)し得る。これらのより小さいブロック(サブブロックとも称され得る)は、さらにより小さいパーティションへさらに区分化され得る。これは、ツリー区分化または階層ツリー区分化とも称される。ルートブロック、例えば、ルートツリーレベル0(階層レベル0、深度0)が再帰的に区分化されてよく、例えば、次に低いツリーレベル、例えばツリーレベル1(階層レベル1、深度1)におけるノードの2つまたはそれよりも多くのブロックへ区分化されてよい。これらのブロックは、例えば、終了基準が満たされること、例えば、最大ツリー深度または最小ブロックサイズに到達したことで、区分化が終了されるまで、次に低いレベル、例えばツリーレベル2(階層レベル2、深度2)等の2つまたはそれよりも多くのブロックへ再び区分化され得る。さらに区分化されないブロックは、ツリーのリーフブロックまたはリーフノードとも称される。2つのパーティションへの区分化を用いるツリーは、バイナリツリー(BT)と称され、3つのパーティションへの区分化を用いるツリーは、ターナリツリー(TT)と称され、4つのパーティションへの区分化を用いるツリーは、クアッドツリー(QT)と称される。
【0074】
前に言及したように、本明細書において用いられるような「ブロック」という用語は、画像のある部分、特に、正方形または矩形の部分であってよい。例えばHEVCおよびVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)または変換ユニット(TU)および/または対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)または予測ブロック(PB)であってもよく、それらに対応してもよい。
【0075】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有する画像のルマサンプルのCTBおよびクロマサンプルの2つの対応するCTB、または、モノクロ画像の、もしくはサンプルをコーディングするために用いられる3つの別個のカラー平面および構文構造を用いてコーディングされた画像のサンプルのCTBであってもよく、それらを備えてもよい。これに応じて、コーディングツリーブロック(CTB)は、CTBへの成分の分割が区分化であるように、ある値NのサンプルのN×Nブロックであってよい。コーディングユニット(CU)は、3つのサンプルアレイを有する画像のルマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、または、モノクロ画像の、もしくはサンプルをコーディングするために用いられる3つの別個のカラー平面および構文構造を用いてコーディングされた画像のサンプルのコーディングブロックであってもよく、それらを備えてもよい。これに応じて、コーディングブロック(CB)は、コーディングブロックへのCTBの分割が区分化であるように、ある値MおよびNのサンプルのM×Nブロックであってよい。
【0076】
例えばHEVCに従ったいくつかの実施形態において、コーディングツリーユニット(CTU)は、コーディングツリーとして表されるクアッドツリー構造を用いることにより、CUへ分割され得る。インター画像(時間的)予測またはイントラ画像(空間的)予測のどちらを用いて画像エリアをコーディングするかの決定は、CUレベルで行われる。各CUは、PUの分割タイプに従って、1つ、2つまたは4つのPUへさらに分割され得る。1つのPUの内部では、同じ予測処理が適用され、関連情報がPUベースでデコーダへ送信される。PUの分割タイプに基づいて予測処理を適用することにより残差ブロックを取得した後、CUは、CUのコーディングツリーと同様の別のクアッドツリー構造に従って、変換ユニット(TU)へ区分化され得る。
【0077】
例えば、Versatile Video Coding(VVC)と称される現在開発中の最新のビデオコーディング規格に従った実施形態において、クアッドツリーおよびバイナリツリー(QTBT)区分化が、コーディングブロックを区分化するために用いられる。QTBTブロック構造では、CUは、正方形または矩形形状のいずれかを有し得る。例えば、コーディングツリーユニット(CTU)がまず、クアッドツリー構造により区分化される。クアッドツリーリーフノードは、バイナリツリーまたはターナリ(またはトリプル)ツリー構造によりさらに区分化される。区分化ツリーリーフノードは、コーディングユニット(CU)と呼ばれ、そのセグメンテーションは、いかなるさらなる区分化もなく、予測および変換処理のために用いられる。これは、CU、PUおよびTUがQTBTコーディングブロック構造内で同じブロックサイズを有することを意味する。並行して、複数回の区分化、例えば、トリプルツリー区分化をQTBTブロック構造と共に用いることも提案された。
【0078】
一例において、ビデオエンコーダ20のモード選択ユニット260は、本明細書において説明される区分化技術の任意の組み合わせを実行するように構成され得る。
【0079】
上で説明したように、ビデオエンコーダ20は、(予め決定された)予測モードのセットから最良のまたは最適な予測モードを決定または選択するように構成される。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを含み得る。
[イントラ予測]
【0080】
イントラ予測モードのセットは、35個の異なるイントラ予測モード、例えば、DC(または平均)モードおよび平面モードのような無方向性モード、または、例えばHEVCにおいて定義される方向性モードを含んでもよく、67個の異なるイントラ予測モード、例えば、DC(または平均)モードおよび平面モードのような無方向性モード、または、例えばVVCについて定義される方向性モードを含んでもよい。
【0081】
イントラ予測ユニット254は、同じ現在の画像の隣接ブロックの再構築されたサンプルを用いて、イントラ予測モードのセットからのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するように構成される。
【0082】
イントラ予測ユニット254(または一般的に、モード選択ユニット260)はさらに、イントラ予測パラメータ(または一般的に、ブロックについて選択されたイントラ予測モードを示す情報)を、エンコードされた画像データ21へ含めるために構文要素266の形態でエントロピーエンコーディングユニット270に出力するように構成され得る。その結果、例えば、ビデオデコーダ30は、デコーディングのための予測パラメータを受信および使用し得る。
[インター予測]
【0083】
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照画像(すなわち、例えばDPB230に格納された、以前の少なくとも部分的にデコードされた画像)および他のインター予測パラメータ、例えば、参照画像の全体または一部のみ、例えば、参照画像の現在のブロックのエリアの周囲の検索ウィンドウエリアが、最良のマッチングとなっている参照ブロックを検索するために用いられるかどうか、および/または、例えば、画素補間、例えば、ハーフ補間/セミペル補間および/またはクウォータペル補間が適用されるか否かに依存する。上記予測モードに加え、スキップモードおよび/または直接モードが適用され得る。
【0084】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(両方とも図2に示されていない)を含み得る。動き推定ユニットは、画像ブロック203(現在の画像17の現在の画像ブロック203)およびデコードされた画像231、または、例えば1つまたは複数の他の/異なる以前にデコードされた画像231の再構築されたブロックといった少なくとも1つまたは複数の以前に再構築されたブロックを動き推定のために受信または取得するように構成され得る。例えば、ビデオシーケンスは、現在の画像および以前にデコードされた画像231を含んでよく、または言い換えると、現在の画像および以前にデコードされた画像231は、ビデオシーケンスを形成する一連の画像の一部であってもよく、それらを形成してもよい。
【0085】
エンコーダ20は、例えば、複数の他の画像の同じまたは異なる画像の複数の参照ブロックから参照ブロックを選択し、参照画像(または参照画像インデックス)、および/または参照ブロックの位置(x座標、y座標)と現在のブロックの位置との間のオフセット(空間的オフセット)をインター予測パラメータとして動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0086】
動き補償ユニットは、インター予測パラメータを取得、例えば受信し、インター予測パラメータに基づいてまたはそれを用いてインター予測を実行してインター予測ブロック265を取得するように構成される。動き補償ユニットにより実行される動き補償は、動き推定により決定される動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によっては、サブ画素精度での補間を実行することを伴い得る。補間フィルタリングにより、既知の画素サンプルから追加の画素サンプルが生成され得る。したがって、画像ブロックをコーディングするために用いられ得る候補予測ブロックの数が潜在的に増える。現在の画像ブロックのPUについての動きベクトルを受信すると、動き補償ユニットは、参照画像リストのうちの1つにおいて動きベクトルが指し示す予測ブロックの位置を特定し得る。
【0087】
また、動き補償ユニットは、ビデオスライスの画像ブロックのデコーディングにおいてビデオデコーダ30により用いられるブロックおよびビデオスライスに関連する構文要素を生成し得る。
[エントロピーコーディング]
【0088】
エントロピーエンコーディングユニット270は、例えば、エントロピーエンコーディングアルゴリズムもしくはエントロピーエンコーディングスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応VLCスキーム(CAVLC)、算術コーディングスキーム、バイナリゼーション、コンテキスト適応型バイナリ算術コーディング(CABAC)、構文ベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率区間区分化エントロピー(PIPE)コーディングまたは別のエントロピーエンコーディング方法もしくはエントロピーエンコーディング技術)またはバイパス(無圧縮)を量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータおよび/または他の構文要素に対して適用して、例えばエンコードされたビットストリーム21の形態で出力272を介して出力され得るエンコードされた画像データ21を取得するように構成される。その結果、例えば、ビデオデコーダ30は、デコーディングのためのパラメータを受信および使用し得る。エンコードされたビットストリーム21は、ビデオデコーダ30へ送信されるか、またはビデオデコーダ30による後の送信もしくは取得のためにメモリに格納され得る。
【0089】
ビデオエンコーダ20の他の構造上の変形は、ビデオストリームをエンコードするために用いられ得る。例えば、非変換ベースエンコーダ20は、特定のブロックまたはフレームのための変換処理ユニット206なしに、残差信号を直接的に量子化できる。別の実装において、エンコーダ20は、単一のユニットへと組み合わされた量子化ユニット208および逆量子化ユニット210を有し得る。
[デコーダおよびデコーディング方法]
【0090】
図3は、本願の技術を実装するように構成されたビデオデコーダ30の例を示す。ビデオデコーダ30は、例えばエンコーダ20によりエンコード済みのエンコードされた画像データ21(例えば、エンコードされたビットストリーム21)を受信して、デコードされた画像331を取得するように構成される。エンコードされた画像データまたはビットストリームは、エンコードされた画像データをデコードするための情報、例えば、エンコードされたビデオスライスの画像ブロックと、関連する構文要素とを表すデータを含む。
【0091】
図3の例において、デコーダ30は、エントロピーデコーディングユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構築ユニット314(例えば、合算器314)と、ループフィルタ320と、デコードされた画像用バッファ(DPB)330と、インター予測ユニット344と、イントラ予測ユニット354とを備える。インター予測ユニット344は、動き補償ユニットであってもよく、それを含んでもよい。ビデオデコーダ30は、いくつかの例において、図2のビデオエンコーダ20に関連して説明されたエンコーディングパスとは概ね逆のデコーディングパスを実行し得る。
【0092】
エンコーダ20に関連して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコードされた画像用バッファ(DPB)230、インター予測ユニット244およびイントラ予測ユニット254は、ビデオエンコーダ20の「ビルトインデコーダ」を形成するとも言及される。したがって、逆量子化ユニット310は、逆量子化ユニット210と機能的に同一であってよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってよく、再構築ユニット314は、再構築ユニット214と機能的に同一であってよく、ループフィルタ320は、ループフィルタ220と機能的に同一であってよく、デコードされた画像用バッファ330は、デコードされた画像用バッファ230と機能的に同一であってよい。したがって、ビデオエンコーダ20のそれぞれのユニットおよび機能について提供された説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に対応するように当てはまる。
[エントロピーデコーディング]
【0093】
エントロピーデコーディングユニット304は、ビットストリーム21(または一般的に、エンコードされた画像データ21)を解析し、例えばエントロピーデコーディングをエンコードされた画像データ21に対して実行して、例えば、量子化された係数309および/またはデコードされたコーディングパラメータ(図3には示されていない)、例えば、インター予測パラメータ(例えば、参照画像インデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはイントラ予測インデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータおよび/または他の構文要素のいずれかまたは全てを取得するように構成される。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関連して説明されたようなエンコーディングスキームに対応するデコーディングアルゴリズムまたはデコーディングスキームを適用するように構成され得る。エントロピーデコーディングユニット304はさらに、インター予測パラメータ、イントラ予測パラメータおよび/または他の構文要素をモード選択ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するように構成され得る。ビデオデコーダ30は、構文要素をビデオスライスレベルおよび/またはビデオブロックレベルで受信し得る。
[逆量子化]
【0094】
逆量子化ユニット310は、エンコードされた画像データ21から量子化パラメータ(QP)(または一般的に、逆量子化に関連する情報)および量子化された係数を(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信し、量子化パラメータに基づいて逆量子化をデコード済みの量子化された係数309に適用して、変換係数311とも称され得る量子化解除された係数311を取得するように構成され得る。逆量子化処理は、量子化の程度、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス内の各ビデオブロックについてビデオエンコーダ20により決定される量子化パラメータの使用を含み得る。
[逆変換]
【0095】
逆変換処理ユニット312は、変換係数311とも称される量子化解除された係数311を受信し、サンプル領域内の再構築された残差ブロック313を取得すべく、量子化解除された係数311に変換を適用するように構成され得る。再構築された残差ブロック313は、変換ブロック313とも称され得る。この変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換処理であってよい。逆変換処理ユニット312はさらに、エンコードされた画像データ21から変換パラメータまたは対応する情報を(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信して、量子化解除された係数311に適用される変換を決定するように構成され得る。
[再構築]
【0096】
再構築ユニット314(例えば、加算器または合算器314)は、例えば、再構築された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することにより、再構築された残差ブロック313を予測ブロック365に加算して、サンプル領域内の再構築されたブロック315を取得するように構成され得る。
[フィルタリング]
【0097】
(コーディングループ内またはコーディングループの後のいずれかにある)ループフィルタユニット320は、例えば、画素遷移を平滑化するか、またはそうでなければビデオ品質を改善するために、再構築されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタ、もしくは、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化フィルタ、平滑化フィルタもしくは協調フィルタといった1つまたは複数の他のフィルタ、または、それらの任意の組み合わせを含み得る。ループフィルタユニット320は、図3ではループ内フィルタであるものとして示されているが、他の構成では、ポストループフィルタとして実装され得る。
[デコードされた画像用バッファ]
【0098】
画像のデコードされたビデオブロック321は、その後、デコードされた画像331を他の画像の後続の動き補償のための、および/または出力またはそれぞれ表示するための参照画像として格納するデコードされた画像用バッファ330に格納される。
【0099】
デコーダ30は、例えば出力312を介して、ユーザに提示するかまたは視聴させるために、デコードされた画像311を出力するように構成される。
[予測]
【0100】
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってよく、イントラ予測ユニット354は、機能的にイントラ予測ユニット254と同一であってよく、エンコードされた画像データ21から(例えばエントロピーデコーディングユニット304による、例えば解析および/またはデコーディングにより)受信された区分化パラメータおよび/または予測パラメータまたはそれぞれの情報に基づいて、分割または区分化の決定および予測を実行する。モード選択ユニット360は、再構築された画像、ブロックまたはそれぞれのサンプル(フィルタリングされているか、またはフィルタリングされていない)に基づいて予測(イントラ予測またはインター予測)をブロック毎に実行して予測ブロック365を取得するように構成され得る。
【0101】
ビデオスライスがイントラコーディング(I)スライスとしてコーディングされる場合、モード選択ユニット360のイントラ予測ユニット354は、シグナリングイントラ予測モードと、現在の画像の以前にデコードされたブロックからのデータとに基づいて、現在のビデオスライスの画像ブロックについての予測ブロック365を生成するように構成される。ビデオ画像がインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされる場合、モード選択ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピーデコーディングユニット304から受信された動きベクトルおよび他の構文要素に基づいて、現在のビデオスライスのビデオブロックについての予測ブロック365を生成するように構成される。インター予測の場合、予測ブロックは、参照画像リストのうちの1つに含まれる参照画像のうちの1つから生成され得る。ビデオデコーダ30は、デフォルトの構築技術を用いて、DPB330に格納された参照画像に基づき、リスト0およびリスト1という参照フレームリストを構築し得る。
【0102】
モード選択ユニット360は、動きベクトルおよび他の構文要素を解析することにより現在のビデオスライスのビデオブロックについての予測情報を決定するように構成され、予測情報を用いて、デコードされている現在のビデオブロックについての予測ブロックを生成する。例えば、モード選択ユニット360は、受信された構文要素のうちのいくつかを用いて、ビデオスライスのビデオブロックをコーディングするために用いられる予測モード(例えば、イントラ予測またはインター予測)と、インター予測スライスタイプ(例えば、Bスライス、PスライスまたはGPBスライス)と、スライスについての参照画像リストのうちの1つまたは複数に関する構築情報と、スライスのインターエンコードされたビデオブロックの各々の動きベクトルと、スライスのインターコーディングされたビデオブロックの各々のインター予測ステータスと、現在のビデオスライス内のビデオブロックをデコードするための他の情報とを決定する。
【0103】
エンコードされた画像データ21をデコードするために、ビデオデコーダ30の他の変形が用いられ得る。例えば、デコーダ30は、ループフィルタリングユニット320なしに、出力ビデオストリームを生成できる。例えば、非変換ベースデコーダ30は、特定のブロックまたはフレームのための逆変換処理ユニット312なしに、残差信号を直接的に逆量子化できる。別の実装において、ビデオデコーダ30は、単一のユニットへと組み合わされた逆量子化ユニット310および逆変換処理ユニット312を有し得る。
【0104】
エンコーダ20およびデコーダ30では、現在の段階の処理結果がさらに処理され、その後、次の段階に出力され得ることを理解されたい。例えば、補間フィルタリング、動きベクトル導出またはループフィルタリングの後、補間フィルタリング、動きベクトル導出またはループフィルタリングの処理結果に対して、Clipまたはシフトなどのさらなる演算が実行され得る。
【0105】
現在のブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィンモード、平面モード、ATMVPモードでのサブブロック動きベクトルおよび時間的動きベクトル等を含むが、それらに限定されない)にさらなる演算が適用され得ることに留意されたい。例えば、動きベクトルの値は、その表現ビット数に従って予め定義された範囲に制限される。動きベクトルの表現ビットがbitDepthである場合、その範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1である。「^」は、べき乗を意味する。例えば、bitDepthが16に等しく設定されている場合、その範囲は-32768~32767であり、bitDepthが18に等しく設定されている場合、その範囲は-131072~131071である。例えば、導出された動きベクトル(例えば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックMVの整数部分間の最大差が、1個以下の画素など、N個以下の画素であるように制限される。ここで、bitDepthに従って動きベクトルを制約する2つの方法を提供する。
【0106】
方法1:以下の演算によりオーバフローMSB(最上位ビット)を除去する。
【数1】
【数2】
【数3】
【数4】
mvxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、mvyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは、中間値を示す。
【0107】
例えば、mvxの値が-32769である場合、式(1)および(2)を適用した後、結果として得られる値は32767である。コンピュータシステムにおいて、10進数は2の補数として格納される。-32769の2の補数は、1,0111,1111,1111,1111(17ビット)であり、その後、MSBが破棄されるので、結果として得られる2の補数は、式(1)および(2)を適用することによる出力と同じである0111,1111,1111,1111(10進数は32767である)である。
【数5】
【数6】
【数7】
【数8】
これらの演算は、式(5)から(8)に示されるように、mvpおよびmvdの合計中に適用され得る。
【0108】
方法2:値をクリッピングすることにより、オーバフローMSBを除去する。
【数9】
【数10】
vxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、vyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、x、yおよびzはそれぞれ、MVクリッピング処理の3つの入力値に対応し、関数Clip3の定義は、以下のとおりである。
【数11】
【0109】
図4は、本開示の実施形態によるビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書において説明される本開示の実施形態を実装するのに好適である。実施形態において、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであってよい。
【0110】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニットまたは中央処理装置(CPU)430と、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを格納するためのメモリ460とを備える。ビデオコーディングデバイス400は、光信号または電気信号の出口または入口のために、入口ポート410、受信機ユニット420、送信機ユニット440および出口ポート450に連結された光/電気(OE)コンポーネントおよび電気/光(EO)コンポーネントも備え得る。
【0111】
プロセッサ430は、ハードウェアおよびソフトウェアにより実装される。プロセッサ430は、1つまたは複数のCPUチップ、(例えば、マルチコアプロセッサとしての)コア、FPGA、ASICおよびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450およびメモリ460と通信する。プロセッサ430は、コーディングモジュール470を有する。コーディングモジュール470は、上で説明した、開示された実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング演算を実装、処理、準備または提供する。したがって、コーディングモジュール470を含むことにより、ビデオコーディングデバイス400の機能の実質的な改善が提供され、異なる状態へのビデオコーディングデバイス400の変換がもたらされる。代替的に、コーディングモジュール470は、メモリ460に格納されてプロセッサ430により実行される命令として実装される。
【0112】
メモリ460は、1つまたは複数のディスク、テープドライブおよびソリッドステートドライブを備えてよく、プログラムが実行のために選択された場合にそのようなプログラムを格納するための、かつ、プログラムの実行中に読み取られた命令およびデータを格納するためのオーバーフローデータストレージデバイスとして用いられてよい。メモリ460は、例えば、揮発性および/または不揮発性であってよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)および/またはスタティックランダムアクセスメモリ(SRAM)であってよい。
【0113】
図5は、例示的な実施形態による図1Aの送信元デバイス12および送信先デバイス14のいずれかまたは両方として用いられ得る装置500の簡略ブロック図である。
【0114】
装置500内のプロセッサ502は、中央処理装置であってよい。代替的に、プロセッサ502は、現存するかまたは今後開発される、情報を操作または処理できる任意の他のタイプのデバイスまたは複数のデバイスであってよい。開示される実装は、示されているような単一のプロセッサ、例えばプロセッサ502を用いて実施され得るが、速度および効率上の利点は、1つよりも多くのプロセッサを用いて実現され得る。
【0115】
実装において、装置500内のメモリ504は、リードオンリメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであってよい。任意の他の好適なタイプのストレージデバイスが、メモリ504として用いられ得る。メモリ504は、バス512を用いてプロセッサ502によりアクセスされるコードおよびデータ506を含み得る。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含んでよく、アプリケーションプログラム510は、本明細書において説明される方法をプロセッサ502が実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1からNを含んでよく、アプリケーション1からNは、本明細書において説明される方法を実行するビデオコーディングアプリケーションをさらに含む。
【0116】
装置500は、ディスプレイ518などの1つまたは複数の出力デバイスも含み得る。ディスプレイ518は、一例において、ディスプレイと、タッチ入力を検知するように動作可能なタッチセンサ式要素とを組み合わせたタッチセンサ式ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に連結され得る。
【0117】
ここでは単一のバスとして示されているが、装置500のバス512は、複数のバスから構成され得る。さらに、セカンダリストレージ514は、装置500の他のコンポーネントに直接的に連結されてもよく、ネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを備えてよい。したがって、装置500は、多種多様な構成で実装され得る。クロマサンプルのイントラ予測は、再構築されたルマブロックのサンプルを用いて実行され得る。
【0118】
HEVCの開発中に、クロスコンポーネント線形モデル(CCLM)クロマイントラ予測[J. Kim, S.-W. Park, J.-Y. Park, and B.-M. Jeon, Intra Chroma Prediction Using Inter Channel Correlation, document JCTVC-B021, Jul. 2010]が提案された。CCLMは、コーディングブロック内の対応する位置におけるクロマサンプルとルマサンプルとの間の線形相関を用いる。CCLMを用いてクロマブロックがコーディングされた場合、線形回帰により、再構築された隣接するルマサンプルおよびクロマサンプルから線形モデルが導出される。現在のブロック内のクロマサンプルは、その後、導出された線形モデルを用いて、現在のブロック内の再構築されたルマサンプルにより予測され得る(図6を参照のこと)。
【数12】
CおよびLはそれぞれ、クロマ値およびルマ値を示す。以下のとおり、最小2乗法により、パラメータαおよびβが導出される。
【数13】
M(A)は、Aの平均を表し、R(A,B)は、以下のとおり定義される。
【数14】
【0119】
エンコードされたかまたはデコードされた画像が、ルマ成分およびクロマ成分について異なる数のサンプルを指定する形式(例えば、4:2:0YCbCr形式、)を有する場合、ルマサンプルは、モデリングおよび予測の前にダウンサンプリングされる。
【0120】
方法は、VTM2.0における使用のために採用されている。具体的には、以下のとおり、パラメータの導出が実行される。
【数15】
【数16】
L(n)は、ダウンサンプリングされた上および左の隣接する再構築されたルマサンプルを表し、C(n)は、上および左の隣接する再構築されたクロマサンプルを表す。
【0121】
[G. Laroche, J. Taquet, C. Gisquet, P. Onno (Canon), "CE3: Cross-component linear model simplification (Test 5.1)", Input document to 12th JVET Meeting in Macao, China, Oct. 2018]において、αおよびβを導出する異なる方法が提案された(図7を参照のこと)。特に、線形モデルパラメータαおよびβは、以下の式に従って取得される。
【数17】
【数18】
【数19】
および
【数20】
は、ルマサンプルにおける最大値および最小値の位置である。
【0122】
表1において指定されるルックアップテーブル(LUT)に格納される数による乗算を用いて除算演算を実装することも提案された。この置換は、以下の方法を用いることにより可能である。
【数21】
Sは、精度を指定するシフトパラメータである。
【0123】
表1は、LUTに格納される値のリストとのLUTインデックス範囲(この表の最初の行において与えられる)のマッチングを提供する。各リストは、そのインデックス範囲に対応する。
【数22】
値が以下のとおり計算され得ることが分かる。
【数23】
【0124】
表1において定義される(または上記式を用いて同等に計算される)LUTを用いて、αの計算が以下のとおり実行される。
【数24】
【0125】
シフトパラメータSは、いくつかの部分に分解され得る、すなわち、
【数25】
である。なぜなら、αの値は、さらなる計算において用いられるからである。この分解により、異なるステージにおける計算精度の柔軟性が提供され、したがって、クロマ予測サンプルの値を取得する段階を介して乗算演算のビット深度を再分散することが可能である。特定の実装において、以下のとおりである。
【数26】
【数27】
【数28】
表1 数による乗算を用いて除算演算を実装するための例示的なLUTテーブル
【表1】
【0126】
この場合、線形モデル係数αは、小数値の固定小数点整数表現を有し、αの精度は、クロマ予測サンプルの値の取得において用いられる
【数29】
の値により決定される。
【数30】
【0127】
LUTのサイズは、エンコーダまたはデコーダのハードウェア実装においてかなり重要である。この問題を解決するための最も直接的なやり方は、指定される、すなわち表1内の初期LUTの各N番目(ここで、Nはサブサンプリング比である)要素だけを維持することにより、LUTを定期的にサブサンプリングすることである。
【0128】
Nの2のべき乗サブサンプリング比での通常のサブサンプリングの後に、LUTからのフェッチが、異なるように、つまり、
【数31】
の代わりに
【数32】
と定義される。
【0129】
自然な画像の場合、
【数33】
の確率は、小さい値を有し、この差が大きくなる確率よりも大きいことが分かる。言い換えると、表1の値の発生確率は、左の列から右の列へかけて減り、各列内で、この確率は、その列に属する最初の要素から最後の要素へかけて減る。
【数34】
の値に対する例示的な発生確率依存性が図8において与えられる。
【0130】
したがって、初期LUTの各N番目要素だけを維持するのは、最適には遠い。なぜなら、それは、当てはまらないその引数の等しい確率分布に対応しているからである。
【0131】
この分布を考慮することにより、通常のサブサンプリングが提供し得るよりも良い、LUTのサイズと計算の精度との間のトレードオフを実現することが可能である。
【0132】
具体的には、2つの隣接するLUTエントリが
【数35】
の異なる段階に対応し、この段階の値がエントリのインデックスと共に増すように、非線形インデックス化を用いてLUTを定義することが提案される。
【0133】
計算上効率的な解決手段のうちの1つが、
【数36】
のいくつかの最上位ビットを用いてLUT内のインデックスを決定することである。
【数37】
の最上位ビットの位置により、最上位ビットの位置に基づく精度(すなわち、LUTの2つの隣接するエントリ間の段階)が定義される。最上位ビットの位置の値が大きいほど、より低い精度およびより大きい段階値に対応する。
【0134】
特定の実施形態が図9および図10に示される。図9は、LUT値計算のフローチャートを示し、図10は、
【数38】
の入力値に対応するLUT内のインデックス「idx」をどのように取得するかを示す。
【0135】
図9に示される段階を用いることにより、CCLMモデリングにおけるさらなる使用のためにLUTに格納される値を取得することが可能である。図9において、「ctr」変数が、
【数39】
の全ての可能な値を通じて反復される。実際には、LUTはサブ範囲を有し、各サブ範囲は「colmax」エントリを含むことが分かる。サブ範囲「ctr」内では、値は、等しい「段階」値と共に増す。1よりも大きいインデックス「lut_shift+1」を有するサブ範囲は、「lut_shift」サブ範囲と比較して2倍に増えた対応する「段階」値を有する。最初の2つのサブ範囲は、「step=1<<max(0,lut_shift)」演算における閾値に起因して、1に等しい段階を有するであろう。
【0136】
図9に示されるように、フローチャートは、本発明の実施形態による例示的なルックアップテーブル生成処理を示す。段階902において、ビデオコーディングデバイスがルックアップテーブル生成処理を開始する。ビデオコーディングデバイスは、図1A図1B図3のビデオデコーダ30などのデコーダ、または、図1A図1B図2のビデオエンコーダ20などのエンコーダ、または、図4のビデオコーディングデバイス400、または、図5の装置500であってよい。
【0137】
段階904において、ctr=1、かつ、lut_shift=1にする。段階906においてインデックスlut_shift<lut_shiftmaxであるかどうかが判断される。lut_shift<lut_shiftmaxである場合、段階は、1<<max(0, lut_shift)、かつ、col=0として段階908において計算され、そうでなければ、生成処理は、段階922において終了する。段階910において、開始オフセットが「ctr=ctr+(step>>1)」段階により提供される。その後、col<colmaxであるかどうかが、段階912において判断される。col<colmaxである場合、段階914においてLUT[ctr]=(1<<S)/ctrであり、ここで、段階912から段階918において定義される予め計算されたLUT値によりLUTの1つの行が生成され、そうでなければ、段階920において、インデックスlut_shift= lut_shift+1にする。段階916において、各サブ範囲の開始地点に対応するctrの値は、ctrl+stepとして設定される。段階918において、生成処理は次の列に移り、その後、この処理は段階912に戻る。
【0138】
図9に示されるフローチャートを用いて生成された例示的なLUTが、表2において与えられる。この表の行は、「lut_shift」インデックスを有するサブ範囲に対応する。この表は、6に等しい「lut_shiftmax」と、3に等しい「colmax」とを用いて取得されており、したがって、LUT内に48個のエントリがもたらされている。各サブ範囲の開始地点に対応するctrの値(ゼロ「col」値)は、0、8、17、35、71、143、287である。
【0139】
これらの値は、常に2のべき乗であるわけではない。なぜなら、各サブ範囲内のサブサンプリングは、サブ範囲の中央に関連して実行されるからである。対応する開始オフセットが、図9に示される「ctr=ctr+(step>>1)」段階により提供される。0よりも大きくない「lut_shift」値に対する「段階」の値は、1に等しくなるように設定される。
表2 図9に示されるフローチャートを用いて生成された例示的なLUT
【表2】
【0140】
図10の(A)では、表2に示されるLUT内の対応するエントリの位置を決定すべく、入力値(例えば、差
【数40】
)の2進表現1001が処理されている。入力値の最上位非ゼロビットは、1002として示されている。このビットの位置により、「msb」値が決定される。実際には、msb値は、入力値1001のlog2()である。「msb」から1を減算すると、表2内の行を選択する「lut_shift」値が得られる。そうでなければ、段階は「1<<lut_shift」として計算される。
【0141】
列の選択は、「colmax」ビットを1002の隣に入れることにより実行される。表2内の「col」の値は、以下のとおりに取得される。
「high_bits」の値は、最上位ビット1020に続く「colmax+1」ビットを選択することにより取得され、
colは、1だけデクリメントされた「high_bits」に格納される値に等しくなるように設定される。
【0142】
位置合わせ段階「ctr=ctr+(step>>1)」が図9において実行されない場合には、「lut_shift」値の導出は同じであり、「col」値の導出はより単純でさえある(図10の(B))。「col」の値は、最上位ビット1020に続く「colmax」ビットを選択することにより取得される。このインデックス導出方法は、表3に対応する。各サブ範囲の開始地点(ゼロ「col」値)に対応する「ctr」の値(図9)は、0、8、16、32、64、128、256である。
表3 「ctr=ctr+(step>>1)」がスキップされる場合における、図9に示されるフローチャートを用いて生成された別の例示的なLUT
【表3】
【0143】
「col」の値を導出する場合、msbは、「colmax」よりも少ないかまたはそれに等しくてよい。この場合、「col」の値は、入力差1001の「colmax」最下位ビットに等しくなるように設定される。
【0144】
実際的な実装では、LUTインデックスは1次元のものである。表2および表3に示されるLUTは、
【数41】
に等しくなるように設定されたインデックスを用いて線形的に処理され得る、と典型的には理解されている。
【0145】
表2および表3に示されるLUTの両方とも、大きさが非常に異なる値を格納する。故に、LUTに格納された全ての値について同様の数のビットを有することが合理的である。LUTからフェッチされている値は、lut_shiftの値に従ってさらに左シフトされ得る。このルールからの唯一の例外は、この行内の最後の4つの値とは異なる精度を有する最初の4つの値である。しかしながら、この問題は、最初の4つの値についてこの追加のシフトを格納する追加のLUTにより解決され得る。本実施形態において、乗算器の値は、以下のとおり、LUTからフェッチされた値から復元される。
【数42】
ここで、
【数43】
である。δの値は、4よりも少ないかまたはそれに等しい「idx」値に対してそれぞれ、3、2、1、1に等しくなるように設定される。本実施形態のルックアップテーブルが、表4において与えられる。
表4 複数の範囲内で精度が等しい場合における、図9に示されるフローチャートを用いて生成された別の例示的なLUT
【表4】
【0146】
表4の最後の行が互いに非常に類似していることが分かる。故に、サブ範囲のいくつかの設定について1つの行だけを格納することにより、LUTのサイズを低減することが可能である。特定の実施形態において、lut_shiftの値が特定の閾値よりも大きい場合、lut_shiftの値は、この閾値に等しくなるように設定され、δの値は、初期値「lut_shift」と閾値との間の差だけ減る。
【0147】
図11は、クロスコンポーネント線形モデルを適用することによるブロックのクロマサンプルの例示的なイントラ予測を示すフローチャートである。段階1102において、ビデオコーディングデバイスが、再構築されたルマサンプルを取得する。ビデオコーディングデバイスは、図1A図1B図3のビデオデコーダ30などのデコーダ、または、図1A図1B図2のビデオエンコーダ20などのエンコーダ、または、図4のビデオコーディングデバイス400、または、図5の装置500であってよい。
【0148】
段階1104において、ビデオコーディングデバイスが、再構築されたルマサンプル内の最大の再構築されたサンプル値および最小の再構築されたサンプル値の位置を決定する。例えば、再構築されたルマサンプルは、クロマサンプルに対応する隣接する再構築されたルマサンプルである。
【0149】
段階1106において、ビデオコーディングデバイスが、再構築されたルマサンプルの最大値および最小値の差の値を取得する。
【0150】
段階1108において、ビデオコーディングデバイスが、LUTのインデックスを計算して、再構築されたルマサンプルの最大値および最小値の差の値に対応する乗算器の値をフェッチする。
【0151】
例えば、ビデオコーディングデバイスは、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定し、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをLUTのインデックスとして用いて値をフェッチする。最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置は、差の2の対数として取得され得る。ビデオコーディングデバイスは、差の最上位ビットの位置に続くビットセットを決定する。可能な結果として、ビットセットは、4つのビットを含む。
【0152】
LUTは、位置合わせ段階の有無にかかわらず生成される。LUTは、取得された差の異なる段階に対応する、LUTに格納される少なくとも2つの隣接する値を含んでよく、この段階の値は、差の値と共に増すか、または一定である。
【0153】
例示的な表1から表4において開示されたように、LUTは、値のサブ範囲を含み得る。再構築されたルマサンプルの最大値および最小値の差の値の段階は、あるサブ範囲内で一定であり、異なる複数のサブ範囲の段階は異なる。例として、再構築されたルマサンプルの最大値および最小値の差の値の段階は、サブインデックスが増すと共に増す。例えば、再構築されたルマサンプルの最大値および最小値の差の値の段階は、サブインデックスの2のべき乗であってよい。
【0154】
LUTは、第1の値、第2の値および第3の値という少なくとも3つの値を含む。3つの値のうち、第1の値および第2の値は、2つの隣接する値であり、第2の値および第3の値は、2つの隣接する値である。第1の値と第2の値との間の段階(すなわち、精度または差)は、第2の値と第3の値との間の段階に等しくてもよく、それとは異なってもよい。第1の値には第1のビットセットによりインデックスが付され、第2の値には第2のビットセットによりインデックスが付される場合、第1のビットセットの値が第2のビットセットの値よりも大きいときは、第1の値は、第2の値よりも小さく、または、第1のビットセットの値が第2のビットセットの値よりも小さいときは、第1の値は、第2の値よりも大きい。
【0155】
LUTは、サブ範囲へ分割される。再構築されたルマサンプルの最大値および最小値の差の最上位非ゼロビットの位置を用いて、サブインデックスが決定される。例として、サブ範囲のサイズは8に設定され、サブ範囲の数は6である。別の例として、異なる隣接するサブ範囲は、同じ段階に対して値の増加が異なる。
【0156】
LUTは、非線形インデックスを含み得る。2つの隣接するLUTエントリが、L(B)-L(A)の異なる段階に対応する。L(B)は、再構築されたルマサンプルの最大値を表し、L(A)は、再構築されたルマサンプルの最小値を表す。このエントリの段階の値は、このエントリのインデックスと共に増し得る。
【0157】
LUTがL(B)-L(A)のいくつかの最上位ビットを用いる場合、L(B)-L(A)の最上位ビットの位置により、最上位ビットの位置に基づく精度(すなわち、LUTの2つの隣接するエントリ間の段階)が定義される。最上位ビットの位置の値が大きいほど、より低い精度およびより大きい段階値に対応し得る。
【0158】
段階1110において、ビデオコーディングデバイスが、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよびβを取得する。
【0159】
段階1112において、ビデオコーディングデバイスが、取得された線形モデルパラメータαおよびβを用いて、予測されるクロマサンプル値を計算する。
【0160】
図12は、クロスコンポーネント線形モデルを適用することによるブロックのクロマサンプルのイントラ予測のための装置1200の例示的な構造を示すブロック図である。
装置1200は、上記方法を実行するように構成され、
再構築されたルマサンプルを取得するように構成された取得ユニット1210と、
再構築されたルマサンプルに基づいて最大ルマサンプル値および最小ルマサンプル値を決定するように構成された決定ユニット1220と
を含んでよく、
取得ユニット1210はさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成され、
決定ユニット1220はさらに、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置を決定するように構成される。例として、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置は、差の2の対数である。実装として、最上位ビットは、第1の非ゼロビットである。
【0161】
装置1200は、最大ルマサンプル値および最小ルマサンプル値の差の最上位ビットの位置に続くビットセットをインデックスとして用いることによりルックアップテーブル(LUT)から値をフェッチし、フェッチされた値に基づいて線形モデルパラメータαおよびβを取得し、取得された線形モデルパラメータαおよびβを用いることにより予測されるクロマサンプル値を計算するように構成された計算ユニット1230をさらに含む。例えば、ビットセットは、4つのビットを含む。
【0162】
計算ユニットは、フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、線形モデルパラメータαおよびβを取得し得る。例えば、計算ユニットは、フェッチされた値を再構築されたクロマサンプルの最大値および最小値の差により乗算することにより、線形モデルパラメータαおよびβを取得する。
【0163】
[本発明の実施形態の利益]
1. LUTのインデックスが、2進表現内のいくつかのビットを抽出する洗練されたやり方で計算される。結果として、LUTから値をフェッチする効率が上がる。
2. LUTから値をフェッチする効率が上がるので、線形モデルパラメータαおよびβを取得するための乗算器の大きさが最小化される。
3. LUTのサイズが最小化される。本発明の実施形態における除算関数(双曲線として知られているf(x)=1/x)の曲線が、以下のやり方で近似された。
1) LUTテーブルのサイズは16であってよい。
i. (0から無限まで変化する導関数を有する1/x曲線の近似のための最小数のエントリ)
2) LUTの要素がエントリインデックスに対する非線形依存性を有する。
i. (1/x曲線を近似するため)
3) 乗算器(LUTの要素)が3ビットの符号なし整数(0…7)である。
i. (0から無限まで変化する導関数を有する1/x曲線の近似のための最小精度)
【0164】
以下は、上で言及された実施形態に示されるようなエンコーディング方法およびデコーディング方法のアプリケーションならびにそれらを用いたシステムの説明である。
【0165】
図13は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、撮像デバイス3102、端末デバイス3106を含み、任意選択的にディスプレイ3126を含む。撮像デバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上で説明した通信チャネル13を含み得る。通信リンク3104は、限定されるわけではないが、WiFi、イーサネット(登録商標)、ケーブル、無線(3G/4G/5G)もしくはUSBまたはそれらの任意の種類の組み合わせ等を含む。
【0166】
撮像デバイス3102は、データを生成し、上記実施形態に示されるようなエンコーディング方法により、データをエンコードし得る。代替的に、撮像デバイス3102は、データをストリーミングサーバ(図には示されていない)へ配信してよく、サーバは、データをエンコードし、エンコードされたデータを端末デバイス3106へ送信する。撮像デバイス3102は、限定されるわけではないが、カメラ、スマートフォンもしくはパッド、コンピュータもしくはラップトップ、ビデオ会議システム、PDA、車載デバイスまたはそれらのいずれかの組み合わせ等を含む。例えば、撮像デバイス3102は、上で説明したような送信元デバイス12を含み得る。データがビデオを含む場合、撮像デバイス3102に含まれるビデオエンコーダ20は、ビデオエンコーディング処理を実際に実行し得る。データがオーディオ(すなわち、音声)を含む場合、撮像デバイス3102に含まれるオーディオエンコーダは、オーディオエンコーディング処理を実際に実行し得る。いくつかの実際のシナリオでは、撮像デバイス3102は、エンコードされたビデオデータおよびオーディオデータを、それらを共に多重化することにより配信する。他の実際のシナリオでは、例えばビデオ会議システムにおいて、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。撮像デバイス3102は、エンコードされたオーディオデータおよびエンコードされたビデオデータを端末デバイス3106へ別個に配信する。
【0167】
コンテンツ供給システム3100において、端末デバイス310は、エンコードされたデータを受信および再現する。端末デバイス3106は、データ受信および回復機能を有するデバイス、例えば、上で言及したエンコードされたデータをデコードできるスマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車載デバイス3124、またはそれらのいずれかの組み合わせ等であってよい。例えば、端末デバイス3106は、上で説明したような送信先デバイス14を含み得る。エンコードされたデータがビデオを含む場合、端末デバイスに含まれるビデオデコーダ30は、ビデオデコーディングの実行を優先させる。エンコードされたデータがオーディオを含む場合、端末デバイスに含まれるオーディオデコーダは、オーディオデコーディング処理の実行を優先させる。
【0168】
ディスプレイを有する端末デバイス、例えば、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、パーソナルデジタルアシスタント(PDA)3122または車載デバイス3124について、端末デバイスは、デコードされたデータをそのディスプレイに供給できる。ディスプレイが備え付けられていない端末デバイス、例えば、STB3116、ビデオ会議システム3118またはビデオ監視システム3120について、外付けディスプレイ3126は、デコードされたデータを受信して示すために、内部で接触される。
【0169】
このシステム内の各デバイスがエンコーディングまたはデコーディングを実行する場合、上で言及した実施形態に示されるように、画像エンコーディングデバイスまたは画像デコーディングデバイスが用いられ得る。
【0170】
図14は、端末デバイス3106の例の構造を示す図である。端末デバイス3106が撮像デバイス3102からストリームを受信した後、プロトコル処理ユニット3202は、ストリームの送信プロトコルを分析する。プロトコルは、限定されるわけではないが、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキストトランスファープロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)またはそれらの任意の種類の組み合わせ等を含む。
【0171】
プロトコル処理ユニット3202がストリームを処理した後、ストリームファイルが生成される。このファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータを、エンコードされたオーディオデータおよびエンコードされたビデオデータへ分離できる。上で説明したように、いくつかの実際のシナリオでは、例えばビデオ会議システムにおいて、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。この状況において、エンコードされたデータは、逆多重化ユニット3204を通すことなく、ビデオデコーダ3206およびオーディオデコーダ3208へ送信される。
【0172】
逆多重化処理を介して、ビデオエレメンタリストリーム(ES)、オーディオESおよび任意選択的に字幕が生成される。上で言及した実施形態において説明したようなビデオデコーダ30を含むビデオデコーダ3206は、上で言及した実施形態に示されるようなデコーディング方法によりビデオESをデコードしてビデオフレームを生成し、このデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESをデコードしてオーディオフレームを生成し、このデータを同期ユニット3212に供給する。代替的に、ビデオフレームは、それを同期ユニット3212に供給する前に、バッファ(図14には示されていない)に格納し得る。同様に、オーディオフレームは、それを同期ユニット3212に供給する前に、バッファ(図14には示されていない)に格納し得る。
【0173】
同期ユニット3212は、ビデオフレームおよびオーディオフレームを同期させ、ビデオ/オーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、ビデオ情報およびオーディオ情報の提示を同期させる。情報は、コーディングされたオーディオデータおよびビジュアルデータの提示に関するタイムスタンプと、データストリーム自体の配信に関するタイムスタンプとを用いて、構文でコーディングされ得る。
【0174】
ストリームに字幕が含まれている場合、字幕デコーダ3210は、字幕をデコードし、それをビデオフレームおよびオーディオフレームと同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【0175】
本発明は、上で言及したシステムに限定されず、上で言及した実施形態における画像エンコーディングデバイスまたは画像デコーディングデバイスのいずれも、他のシステム、例えば自動車システムへ組み込まれ得る。
【0176】
本発明の実施形態を主にビデオコーディングに基づいて説明したが、コーディングシステム10、エンコーダ20およびデコーダ30(およびこれに応じてシステム10)の実施形態、ならびに本明細書において説明された他の実施形態は、静止画像の処理またはコーディング、すなわち、ビデオコーディングにおけるような任意の前の画像または連続する画像から独立した個々の画像の処理またはコーディングのために構成されてもよいことに留意されたい。一般的に、画像処理コーディングが単一の画像17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)のみが利用可能ではないことがある。ビデオエンコーダ20およびビデオデコーダ30の全ての他の機能(ツールまたは技術とも称される)は、静止画像処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分化262/362、イントラ予測254/354、および/またはループフィルタリング220、320ならびにエントロピーコーディング270およびエントロピーデコーディング304に等しく用いられ得る。
【0177】
例えばエンコーダ20およびデコーダ30の実施形態、ならびに、例えばエンコーダ20およびデコーダ30を参照して本明細書において説明された機能は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせに実装され得る。ソフトウェアに実装される場合、これらの機能は、コンピュータ可読媒体に格納されてもよく、通信媒体を介して1つまたは複数の命令またはコードとして送信され、ハードウェアベース処理ユニットにより実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、例えば通信プロトコルに従った、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は概して、(1)非一時的な有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明された技術の実装のための命令、コードおよび/またはデータ構造を取得するために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによりアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0178】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを格納するために用いられてよく、かつ、コンピュータによりアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、コンピュータ可読媒体と適切に称される。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、電波およびマイクロ波などの無線技術を用いて、ウェブサイト、サーバまたは他のリモート送信元から命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、電波およびマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号または他の一時的媒体を含まないが、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書において用いられるようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再現するが、ディスク(disc)は、データをレーザで光学的に再現する。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0179】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)または他の同等の一体型もしくは離散型のロジック回路など、1つまたは複数のプロセッサにより実行され得る。したがって、本明細書において用いられる「プロセッサ」という用語は、前述の構造のいずれか、または本明細書において説明された技術の実装に好適な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書において説明された機能は、エンコーディングおよびデコーディングのために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供されてもよく、組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、1つまたは複数の回路またはロジック要素に完全に実装され得る。
【0180】
本開示の技術は、無線ハンドセット、集積回路(IC)またはICセット(例えば、チップセット)を含む多種多様なデバイスまたは装置に実装され得る。様々なコンポーネント、モジュールまたはユニットが、開示されている技術を実行するように構成されたデバイスの機能態様を強調するために本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアと共に、コーデックハードウェアユニットに組み合わされてもよく、上で説明したような1つまたは複数のプロセッサを含む相互運用ハードウェアユニットの集合により提供されてもよい。
[他の可能な項目]
(項目1)
クロスコンポーネント線形モデルを適用することによりブロックのクロマサンプルをイントラ予測する方法であって、
再構築されたルマサンプルを取得する段階と、
上記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
上記最大ルマサンプル値および上記最小ルマサンプル値の差を取得する段階と、
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の最上位ビットの位置を決定する段階と、
ビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、上記ビットセットは、上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置に続く、フェッチする段階と、
フェッチされた上記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された上記線形モデルパラメータαおよび上記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
(項目2)
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置は、上記差の2の対数として取得される、項目1に記載の方法。
(項目3)
上記差の上記最上位ビットの上記位置に続く上記ビットセットを決定することにより、4つのビットを含む上記ビットセットがもたらされる、項目1または2に記載の方法。
(項目4)
上記最上位ビットは、上記第1の非ゼロビットである、項目1から3のいずれか1つに記載の方法。
(項目5)
上記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得する段階
を備える、項目1から4のいずれか1つに記載の方法。
(項目6)
上記フェッチされた値を上記再構築されたクロマサンプルの上記最大値および上記最小値の上記差により乗算することにより、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得する段階
を備える、項目5に記載の方法。
(項目7)
上記LUTは、第1の値、第2の値および第3の値という少なくとも3つの値を含み、
上記3つの値のうち、上記第1の値および上記第2の値は2つの隣接する値であり、上記第2の値および上記第3の値は2つの隣接する値である、
項目1から6のいずれか1つに記載の方法。
(項目8)
上記第1の値と上記第2の値との間の段階は、上記第2の値と上記第3の値との間の段階に等しい、項目7に記載の方法。
(項目9)
上記第1の値と上記第2の値との間の段階は、上記第2の値と上記第3の値との間の段階とは異なる、項目7に記載の方法。
(項目10)
上記第1の値には第1のビットセットによりインデックスが付され、上記第2の値には第2のビットセットによりインデックスが付され、
上記第1のビットセットの値が上記第2のビットセットの値よりも大きい場合、上記第1の値は、上記第2の値よりも小さく、または、
上記第1のビットセットの値が上記第2のビットセットの値よりも小さい場合、上記第1の値は、上記第2の値よりも大きい、
項目7から9に記載の方法。
(項目11)
上記LUTは、複数の値の複数のサブ範囲を含み、任意の2つの隣接する値の段階は、1つのサブ範囲内で一定である、項目1から10に記載の方法。
(項目12)
クロスコンポーネント線形モデルを適用することによりブロックのクロマサンプルをイントラ予測するための装置であって、上記装置は、エンコーダまたはデコーダであり、上記装置は、
再構築されたルマサンプルを取得するように構成された取得ユニットであって、上記取得ユニットはさらに、最大ルマサンプル値および最小ルマサンプル値の差を取得するように構成される、取得ユニットと、
上記再構築されたルマサンプルに基づいて、上記最大ルマサンプル値および上記最小ルマサンプル値を決定するように構成された決定ユニットであって、上記決定ユニットはさらに、上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の最上位ビットの位置を決定するように構成される、決定ユニットと、
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置に続くビットセットをインデックスとして用いることにより、ルックアップテーブル(LUT)から値をフェッチし、フェッチされた上記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得し、取得された上記線形モデルパラメータαおよび上記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算するように構成された計算ユニットと
を備える、装置。
(項目13)
上記最大ルマサンプル値および上記最小ルマサンプル値の上記差の上記最上位ビットの上記位置は、上記差の2の対数である、項目12に記載の装置。
(項目14)
上記ビットセットは、4つのビットを含む、項目12または13に記載の装置。
(項目15)
上記最上位ビットは、上記第1の非ゼロビットである、項目12から14のいずれか1つに記載の装置。
(項目16)
上記計算ユニットは、上記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得するように構成される、項目12から15のいずれか1つに記載の装置。
(項目17)
上記計算ユニットは、上記フェッチされた値を上記再構築されたクロマサンプルの上記最大値および上記最小値の上記差により乗算することにより、上記線形モデルパラメータαおよび上記線形モデルパラメータβを取得するように構成される、
項目16に記載の装置。
(項目18)
項目1から11のいずれか1つに記載の方法を実行するための処理回路を備えるエンコーダ。
(項目19)
項目1から11のいずれか1つに記載の方法を実行するための処理回路を備えるデコーダ。
(項目20)
項目1から11のいずれか1つに記載の方法を実行するためのプログラムコードを備えるコンピュータプログラム製品。
(項目21)
デコーダであって、
1つまたは複数のプロセッサと、
上記プロセッサに連結され、上記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、上記プログラミングは、上記プロセッサにより実行された場合、項目1から11のいずれか1つに記載の方法を実行するよう上記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
(項目22)
エンコーダであって、
1つまたは複数のプロセッサと、
上記プロセッサに連結され、上記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、上記プログラミングは、上記プロセッサにより実行された場合、項目1から11のいずれか1つに記載の方法を実行するよう上記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
(項目23)
装置によりデコードされる予測エンコードされたビットストリームを備える非一時的記録媒体であって、上記ビットストリームは、項目1から11のいずれか1つに従って生成される、非一時的記録媒体。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
エンコーダによりブロックのクロマサンプルをイントラ予測する方法であって、
ビットストリームをエンコードする段階であって、前記ビットストリームがクロスコンポーネント線形モデルを示す情報を含む、エンコードする段階と、
再構築されたルマサンプルを取得する段階と、
前記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
前記最大ルマサンプル値および前記最小ルマサンプル値の差を取得する段階と、
インデックスを用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差に対応する、フェッチする段階と、
フェッチされた前記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された前記線形モデルパラメータαおよび前記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
【請求項2】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差のlog2()に対応する、請求項1に記載の方法。
【請求項3】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差についてのいくつかの最上位ビットを用いて決定される、請求項1に記載の方法。
【請求項4】
前記LUTが、取得された前記差の異なる段階に対応する少なくとも2つの隣接する値を備え、前記段階の値は、差の値と共に増すか、または一定である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記フェッチされた値を前記再構築されたクロマサンプルの前記最大値および前記最小値の前記差により乗算することにより、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項5に記載の方法。
【請求項7】
前記LUTは、複数の値の複数のサブ範囲を含み、2つの隣接する値の段階は、1つのサブ範囲内で一定である、請求項1から6のいずれか一項に記載の方法。
【請求項8】
デコーダによりブロックのクロマサンプルをイントラ予測する方法であって、
ビットストリームを解析する段階であって、前記ビットストリームがクロスコンポーネント線形モデルを示す情報を含む、解析する段階と、
再構築されたルマサンプルを取得する段階と、
前記再構築されたルマサンプルに基づいて、最大ルマサンプル値および最小ルマサンプル値を決定する段階と、
前記最大ルマサンプル値および前記最小ルマサンプル値の差を取得する段階と、
インデックスを用いることにより、ルックアップテーブル(LUT)から値をフェッチする段階であって、前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差に対応する、フェッチする段階と、
フェッチされた前記値に基づいて、線形モデルパラメータαおよび線形モデルパラメータβを取得する段階と、
取得された前記線形モデルパラメータαおよび前記線形モデルパラメータβを用いることにより、予測されるクロマサンプル値を計算する段階と
を備える、方法。
【請求項9】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差のlog2()に対応する、請求項8に記載の方法。
【請求項10】
前記インデックスが、前記最大ルマサンプル値および前記最小ルマサンプル値の前記差についてのいくつかの最上位ビットを用いて決定される、請求項9に記載の方法。
【請求項11】
前記LUTが、取得された前記差の異なる段階に対応する少なくとも2つの隣接する値を備え、前記段階の値は、差の値と共に増すか、または一定である、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記フェッチされた値と、再構築されたクロマサンプルの最大値および最小値の差とに基づいて、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項8から11のいずれか一項に記載の方法。
【請求項13】
前記フェッチされた値を前記再構築されたクロマサンプルの前記最大値および前記最小値の前記差により乗算することにより、前記線形モデルパラメータαおよび前記線形モデルパラメータβを取得する段階
を備える、請求項12に記載の方法。
【請求項14】
前記LUTが、複数の値の複数のサブ範囲を備え、2つの隣接する値の段階は、1つのサブ範囲内で一定である、請求項8から13のいずれか一項に記載の方法。
【請求項15】
請求項1から7のいずれか一項に記載の方法を実行するための処理回路を備えるエンコーダ。
【請求項16】
請求項8から14のいずれか一項に記載の方法を実行するための処理回路を備えるデコーダ。
【請求項17】
プロセッサに、請求項1から14のいずれか一項に記載の方法を実行するためのプログラム。
【請求項18】
エンコーダであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに連結され、前記1つまたは複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1つまたは複数のプロセッサにより実行された場合、請求項1から7のいずれか一項に記載の方法を実行するよう前記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
【請求項19】
デコーダであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに連結され、前記1つまたは複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1つまたは複数のプロセッサにより実行された場合、請求項8から14のいずれか一項に記載の方法を実行するよう前記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
【請求項20】
請求項1から7のいずれか一項に従って生成される前記ビットストリームを備える非一時的記録媒体。
【外国語明細書】