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

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

▶ フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ.の特許一覧

特開2022-169656依存スカラー量子化に好適な変換係数のエントロピーコーディング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022169656
(43)【公開日】2022-11-09
(54)【発明の名称】依存スカラー量子化に好適な変換係数のエントロピーコーディング
(51)【国際特許分類】
   H04N 19/13 20140101AFI20221101BHJP
   H04N 19/14 20140101ALI20221101BHJP
   H04N 19/176 20140101ALI20221101BHJP
   H04N 19/46 20140101ALI20221101BHJP
   H04N 19/91 20140101ALI20221101BHJP
【FI】
H04N19/13
H04N19/14
H04N19/176
H04N19/46
H04N19/91
【審査請求】有
【請求項の数】39
【出願形態】OL
(21)【出願番号】P 2022130075
(22)【出願日】2022-08-17
(62)【分割の表示】P 2020573158の分割
【原出願日】2019-07-01
(31)【優先権主張番号】18181293.4
(32)【優先日】2018-07-02
(33)【優先権主張国・地域又は機関】EP
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Blu-ray
(71)【出願人】
【識別番号】500242786
【氏名又は名称】フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ.
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】ハイコ・シュヴァルツ
(72)【発明者】
【氏名】ファン・ホアン・トゥン・グエン
(72)【発明者】
【氏名】デトレフ・マルペ
(72)【発明者】
【氏名】トーマス・ヴィーガント
(57)【要約】      (修正有)
【課題】変換係数のブロックをコーディングする概念を提示する装置を提供する。
【解決手段】装置は、変換係数を走査する1以上の第1のパスにおいて、コンテキスト適応型エントロピー復号を使用して、変換係数の量子化インデックスがゼロであるか否かを示す変換係数のための有意性フラグを復号し、変換係数のパリティを示す変換係数のためのパリティフラグを復号し、1以上の第1のパスのうちの1以上の複数を含むか又は除外する変換係数を走査する1以上の複数の第2のパスにおいて、コンテキスト適応型エントロピー復号を使用して、量子化インデックスがゼロでない変換係数のための1以上の複数の大なりフラグを復号し、1以上の複数の第3のパスにおいて、等確率性エントロピー復号を使用して、1以上の複数の大なりフラグが正である変換係数の量子化インデックスの残りと、量子化インデックスがゼロでない変換係数の量子化インデックスの符号とを復号する。
【選択図】図1
【特許請求の範囲】
【請求項1】
変換係数(12)のブロック(10)を復号するための装置であって、
前記変換係数を走査する1つまたは複数の第1のパス(20)において、
コンテキスト適応型エントロピー復号を使用して、前記変換係数の量子化インデックスがゼロであるか否かを示す、前記変換係数のための有意性フラグを復号(16)すること、
前記変換係数のパリティを示す、前記変換係数のためのパリティフラグを復号(18)すること、
前記1つまたは複数の第1のパス(20)のうちの1つまたは複数を含むかまたは除外する、前記変換係数を走査する1つまたは複数の第2のパス(22)において、
コンテキスト適応型エントロピー復号を使用して、前記量子化インデックスがゼロでない変換係数のための1つまたは複数の大なりフラグを復号(24)すること、
1つまたは複数の第3のパス(26、27)において、
等確率性エントロピー復号を使用して、
その前記1つまたは複数の大なりフラグが正である前記変換係数の前記量子化インデックスの残りと、
前記量子化インデックスがゼロでない前記変換係数の前記量子化インデックスの符号と
を復号(28、30)すること
を行うように構成された、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、ピクチャまたはビデオをコーディングするためなどの変換係数レベルのエントロピーコーディングに関する。
【背景技術】
【0002】
量子化パラメータの設定において、エンコーダは妥協しなければならない。量子化を粗くレンダリングすることによって、ビットレートが下がるが、量子化ひずみが増大し、量子化をより細かくレンダリングすることによって、ひずみが減少するが、ビットレートが上がる。利用可能な量子化レベルの所与の領域のためのコーディング効率を高める概念を、手元に有することが好都合となる。1つのそのような可能性は、依存量子化の使用であり、その場合、量子化が、前に量子化およびコーディングされたデータに応じて着実に適応されるが、量子化における依存性もまた、量子化およびコーディングされることになるデータ項目の間の相互関係に影響を与え、したがって、コンテキスト適応型エントロピーコーディングのための情報の利用可能性に影響を与える。依存量子化に好適であり、コーディング効率に関して、エントロピーコーディングによって有効に実装可能な方法で、変換ブロックの係数のコーディングを可能にする概念を有することが好都合となる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の目的は、変換係数のブロックをコーディングするためのそのような概念を提供することである。
【課題を解決するための手段】
【0004】
この目的は、本出願の独立請求項の主題によって達成される。
【0005】
有利な態様は、従属請求項の主題である。本出願の好ましい実施形態について、図に関して以下で説明する。
【図面の簡単な説明】
【0006】
図1】以下で説明する実施形態のいずれかに従って動作するように具現化され得るピクチャエンコーダのための一例としての、例示的なビデオエンコーダのブロック図である。
図2a】ブロックベース変換コーディングの基本的な手法を例示するための、変換エンコーダのブロック図である。
図2b】ブロックベース変換コーディングの基本的な手法を例示するための、変換デコーダのブロック図である。
図3】一様再構成量子化器(uniform reconstruction quantizer)を示す分布のヒストグラムである。
図4a】ここでは、例示的に、H.265|MPEG-H HEVCにおいて使用されるものである、変換係数レベルの走査のための一例を例示するための、サブブロックに再分割された変換ブロックの概略図であり、具体的には、16×16変換ブロックを4×4サブブロックに区分すること、およびサブブロックのコーディング順序を示す。再分割は、それらのフラグおよび残りの復号における係数のパスのために、ならびに同じものの逆量子化における状態遷移のために、本出願の実施形態において例示的に使用され得る。
図4b】ここでは、例示的に、H.265|MPEG-H HEVCにおいて使用されるものである、変換係数レベルの走査のための一例を例示するための、サブブロックの概略図であり、具体的には、4×4サブブロックの内部の変換係数レベルのコーディング順序を示す。再分割は、それらのフラグおよび残りの復号における係数のパスのために、ならびに同じものの逆量子化における状態遷移のために、本出願の実施形態において例示的に使用され得る。
図5a】独立スカラー量子化(independent scalar quantization)である、2つの変換係数の単純な場合のための、変換係数ごとに1軸が張られた多次元出力空間、および許容可能な再構成ベクトルのロケーションの概略図である。
図5b】依存スカラー量子化(dependent scalar quantization)のための一例である、2つの変換係数の単純な場合のための、変換係数ごとに1軸が張られた多次元出力空間、および許容可能な再構成ベクトルのロケーションの概略図である。
図6】依存スカラー量子化を使用し、それによって、本出願によるメディアデコーダの一実施形態を形成する、変換デコーダのブロック図である。(独立スカラー量子化器を用いた)従来の変換コーディングと比較した変更は、図2bとの比較によって導出可能である。対応する方法において、依存スカラー量子化を使用して、変換ブロックを符号化するための実施形態は、図2aのエンコーダを同様に変更することによって取得され得る。
図7】依存量子化の一実施形態について、単一の量子化ステップサイズΔによって完全に決定される再構成レベルの2つのセットを示す概略図である。再構成レベルの2つの利用可能なセットは、強調して示されたセット0(上部ライン)およびセット1(下部ライン)である。セットの内部の再構成レベルを示す量子化インデックスのための例が、丸の下の数字によって与えられる。中空の丸および黒丸は、再構成レベルのセットの内部の2つの異なるサブセットを示し、サブセットが、再構成順序における次の変換係数のための再構成レベルのセットを決定するために使用され得る。両方のセットが、ゼロに等しい再構成レベルを含むが、さもなければ互いに素であり、両方のセットが、ゼロの周りで対称である。
図8】変換係数のための再構成プロセスのための一例を示す、擬似コードを示す図である。kは、現在の変換係数の再構成順序を指定するインデックスを表し、現在の変換係数のための量子化インデックスは、level[k]によって示され、現在の変換係数に適用される量子化ステップサイズΔkは、quant_step_size[k]によって示され、trec[k]は、再構成された変換係数t'kの値を表す。変数setId[k]は、現在の変換係数に適用される再構成レベルのセットを指定する。再構成順序において先行する変換係数に基づいて、setId[k]の可能な値が0および1であることが決定される。変数nは、量子化ステップサイズの整数係数を指定し、再構成レベルの選ばれたセット(すなわち、setId[k]の値)、および送信された量子化インデックスlevel[k]によって与えられる。
図9図8における擬似コードの代替実装形態を示す、擬似コードを示す図である。主な変更は、量子化ステップを用いた乗算が、スケールパラメータおよびシフトパラメータを使用する整数実装形態を使用して表されることである。典型的には、シフトパラメータ(shiftによって表される)は、変換ブロックについて一定であり、スケールパラメータ(scale[k]によって与えられる)のみが、変換係数のロケーションに依存し得る。変数addは、丸めオフセットを表し、典型的には、add=(1<<(shift-1))に等しく設定される。Δkが変換係数のための公称量子化ステップである状態で、パラメータshiftおよびscale[k]は、我々がΔk≒scale[k]・2-shiftを有するように選ばれる。
図10】再構成レベルのセットを2つのサブセットに分割するための一例の概略図である。2つの図示された量子化セットは、図7の例の量子化セットである。量子化セット0の2つのサブセットには、「A」および「B」を使用してラベルが付けられ、量子化セット1の2つのサブセットには、「C」および「D」を使用してラベルが付けられる。
図11】変換ブロックのための変換係数の再構成プロセスのための一例を示す、擬似コードを示す図である。配列levelは、変換ブロックのための送信された変換係数レベル(量子化インデックス)を表し、配列trecは、対応する再構成された変換係数を表す。2dテーブルstate_trans_tableは、状態遷移テーブルを指定し、テーブルsetIdは、状態に関連付けられる量子化セットを指定する。
図12】依存スカラー量子化における状態遷移をトレリス構造として示す概略図である。水平軸は、再構成順序における異なる変換係数を表す。垂直軸は、依存量子化および再構成プロセスにおける異なる可能な状態を表す。図示された接続は、異なる変換係数のための状態の間の利用可能な経路を指定する。
図13】基本トレリスセルの一例を示す図である。
図14】背景を塗りつぶすことによってその位置が示される、コーディング順序における最初の非ゼロ量子化インデックスの位置のシグナリングの例示のための変換ブロックの概略図である。最初の非ゼロ変換係数の位置に加えて、影つきの係数のためのビンのみが送信され、白のマークが付けられた係数が、0に等しいと推論される。
図15】サブブロックに分割されない変換ブロックの復号上に、および係数の復号上に(すなわち、「コーディング」を「復号」によって置き換えることによって)容易に移され得る、サブブロックなどの係数のブロックのための変換係数レベルのコーディングのための比較例を示す、擬似コードを示す図である。ここでは、1つのパスが、符号フラグを除いて、係数のためのすべてのフラグおよび残りをコーディングするために使用される。
図16】変換ブロックの概略図であり、確率モデルを選択するために使用されるテンプレートを示す図である。黒い正方形は、現在の走査位置を指定し、影つきの正方形は、コンテキストモデルを導出するために使用される局所近傍を表す。
図17】コスト測度(ラグランジュコスト測度D+λ・Rなど)を最小化する量子化インデックスのシーケンス(または、ブロック)を決定するために活用され得る、例示的なトレリス構造の概略図である。トレリスは、8つの変換係数(または、量子化インデックス)について示される。(一番左の)最初の状態は、0に等しく設定される、初期状態を表す。
図18】サブブロックに分割されない変換ブロックの復号上に、および係数の復号上に(すなわち、「コーディング」を「復号」によって置き換えることによって)容易に移され得る、サブブロックなどの係数のブロックのための変換係数レベルのコーディングのための一実施形態を示す、擬似コードを示す図である。ここでは、1つのパスが、符号フラグを除いて、係数のためのすべてのフラグおよび残りをコーディングするために使用される。ここでは、図15の共通のパスが、3つのパスに分割される。
図19】サブブロックに分割されない変換ブロックの復号上に、および係数の復号上に(すなわち、「コーディング」を「復号」によって置き換えることによって)容易に移され得る、サブブロックなどの係数のブロックのための変換係数レベルのコーディングのための一実施形態を示す、擬似コードを示す図である。ここでは、1つのパスが、符号フラグを除いて、係数のためのすべてのフラグおよび残りをコーディングするために使用される。ここでは、図15の共通のパスが、2つのパスに分割され、一方が残りのためのものであり、他方が符号フラグ以外のフラグのためのものである。
図20】サブブロックに分割されない変換ブロックの復号上に、および係数の復号上に(すなわち、「コーディング」を「復号」によって置き換えることによって)容易に移され得る、サブブロックなどの係数のブロックのための変換係数レベルのコーディングのための一実施形態を示す、擬似コードを示す図である。ここでは、1つのパスが、符号フラグを除いて、係数のためのすべてのフラグおよび残りをコーディングするために使用される。ここでは、図15の共通のパスが、いくつかのパスに分割され、パリティフラグが、それぞれ、絶対レベルの前にコーディングされるか、またはいずれかの他のフラグの前にコーディングされる。
【発明を実施するための形態】
【0007】
次に説明する実施形態によれば、変換係数レベルのエントロピーコーディングが、依存量子化、およびコンテキスト適応型バイナリ算術コーディングなどのコンテキスト適応型エントロピーコーディングとともに、有効な実装形態に好適な方法で行われる。これらの実施形態は、依存スカラー量子化を用いる変換コーディングのコンテキストにおける、変換係数レベルのエントロピーコーディングのために特に有利である。しかしながら、これらの実施形態はまた、従来の独立スカラー量子化とともに使用される場合にも使用可能であり、有利である。すなわち、これらの実施形態はまた、従来の独立スカラー量子化を用いる変換コーディングのコンテキストにおける、変換係数レベルのエントロピーコーディングのためにも適用可能である。その上、以下で説明する実施形態は、依存量子化を用いる変換コーディングと、従来の独立量子化を用いる変換コーディングとの間の、(たとえば、シーケンス、ピクチャ、スライス、タイル、またはブロックレベルにおける)切替えをサポートするコーデックのために適用可能である。
【0008】
以下で説明する実施形態では、変換コーディングが、サンプルのセットを変換するために使用される。依存スカラー量子化として、または代替的に、独立スカラー量子化として具現化され得る量子化は、得られた変換係数を量子化するために使用され、取得された量子化インデックスのエントロピーコーディングが行われる。デコーダ側では、再構成されたサンプルのセットが、量子化インデックスのエントロピー復号、変換係数の依存再構成(または代替的に、独立再構成)、および逆変換によって取得される。依存スカラー量子化と従来の独立スカラー量子化との間の違いは、依存スカラー量子化では、変換係数のための許容可能な再構成レベルのセットが、再構成順序において現在の変換係数に先行する送信された変換係数レベルに依存することである。この態様は、許容可能な再構成レベルの異なるセットのために確率モデルの異なるセットを使用することによって、エントロピーコーディングにおいて活用される。効率的なハードウェア実装形態を可能にするために、ブロックまたはサブブロックの変換係数レベルに関連する二分決定(ビンと呼ばれる)が、複数のパスにおいてコーディングされる。変換係数レベルの2値化、および複数のパスにわたる二分決定(ビンとも呼ばれる)の分布は、第1のパスにおいてコーディングされたデータが次の走査位置のための許容可能な再構成レベルのセットを一意に決定する方法で選ばれる。このことは、第1のパスにおけるビンの一部のための確率モデルが、(対応する変換係数のための)許容可能な再構成レベルのセットに応じて選択され得るという利点を有する。
【0009】
以下の実施形態の説明は、画像およびビデオコーデックにおける予測誤差サンプルのブロックの不可逆コーディングを主に対象とするが、これらの実施形態はまた、他の分野の不可逆コーディングにも適用され得る。具体的には、矩形ブロックを形成するサンプルのセットへの制限はなく、予測誤差サンプル(すなわち、元の信号と予測信号との間の差)を表すサンプルのセットへの制限もない。
【0010】
国際ビデオコーディング規格H.264|MPEG-4 AVCおよびH.265|MPEG-H HEVCなど、すべての最先端のビデオコーデックは、ハイブリッドビデオコーディングの基本的な手法に従うものである。ビデオピクチャは、ブロックに区分され、ブロックのサンプルは、イントラピクチャ予測またはインター予測を使用して予測され、得られた予測誤差信号のサンプル(元のサンプルと予測信号のサンプルとの間の差)は、変換コーディングを使用してコーディングされる。
【0011】
図1は、典型的な現代のビデオエンコーダの簡略ブロック図を示す。ビデオシーケンスのビデオピクチャは、コーディング順序と呼ばれる、ある順序でコーディングされる。ピクチャのコーディング順序は、キャプチャおよび表示順序とは異なり得る。実際のコーディングでは、各ビデオピクチャがブロックに区分される。ブロックは、特定の色成分の矩形エリアのサンプルを備える。同じ矩形エリアに対応するすべての色成分のブロックのエンティティは、ユニットと呼ばれることが多い。ブロック区分の目的に応じて、H.265|MPEG-H HEVCでは、コーディングツリーブロック(CTB)と、コーディングブロック(CB)と、予測ブロック(PB)と、変換ブロック(TB)との間で区別される。関連付けられたユニットは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)と呼ばれる。
【0012】
典型的には、ビデオピクチャは、最初に固定サイズのユニット(すなわち、すべての色成分のための整合された固定サイズのブロック)に区分される。H.265|MPEG-H HEVCでは、これらの固定サイズのユニットは、コーディングツリーユニット(CTU)と呼ばれる。各CTUは、複数のコーディングユニット(CU)にさらに分割され得る。コーディングユニットは、そのためにコーディングモード(たとえば、イントラまたはインターピクチャコーディング)が選択されるエンティティである。H.265|MPEG-H HEVCでは、1つまたは複数のCUへのCTUの分解が、4分木(QT)シンタックスによって指定され、ビットストリームの一部として送信される。CTUのCUは、いわゆるz走査順序で処理される。つまり、分割から生じる4つのブロックが、ラスタ走査順序で処理され、それらのブロックのいずれかがさらに区分される場合、対応する4つのブロック(含まれたより小さいブロックを含む)が、より高い分割レベルの次のブロックが処理される前に、処理される。
【0013】
CUがイントラコーディングモードでコーディングされる場合、ルーマ信号のためのイントラ予測モード、および、ビデオ信号がクロマ成分を含む場合、クロマ信号のための別のイントラ予測モードが送信される。ITU-T H.265|MPEG-H HEVCでは、CUサイズが(シーケンスパラメータセットにおいてシグナリングされるような)最小CUサイズに等しい場合、ルーマブロックはまた、4つの等しいサイズのブロックに分割され得、その場合、これらのブロックの各々について、別個のルーマイントラ予測モードが送信される。実際のイントラ予測およびコーディングは、変換ブロックに基づいて行われる。イントラピクチャコード化CUの各変換ブロックについて、予測信号が、同じ色成分のすでに再構成されたサンプルを使用して導出される。変換ブロックのための予測信号を生成するために使用されるアルゴリズムは、送信されたイントラ予測モードによって決定される。
【0014】
インターピクチャコーディングモードでコーディングされるCUは、複数の予測ユニット(PU)にさらに分割され得る。予測ユニットは、ルーマ、および、カラービデオの場合、(同じピクチャエリアをカバーする)2つの関連付けられたクロマブロックのエンティティであり、そのために予測パラメータの単一のセットが使用される。CUは、単一の予測ユニットとしてコーディングされ得るか、または、2つの非正方形(対称および非対称分割がサポートされる)もしくは4つの正方形予測ユニットに分割され得る。各PUについて、動きパラメータの個々のセットが送信される。動きパラメータの各セットは、動き仮説(motion hypothesis)の数(H.265|MPEG-H HEVCでは、1つまたは2つ)、ならびに各動き仮説について、参照ピクチャ(参照ピクチャのリストへの参照ピクチャインデックスを介して示される)、および関連付けられた動きベクトルを含む。加えて、H.265|MPEG-H HEVCは、いわゆるマージモードを提供し、マージモードでは、動きパラメータが明示的に送信されないが、空間的または時間的に隣接するブロックの動きパラメータに基づいて導出される。CUまたはPUがマージモードでコーディングされる場合、動きパラメータ候補のリスト(このリストは、空間的および時間的に隣接するブロックの動きデータを使用して導出される)へのインデックスのみが送信される。インデックスは、使用される動きパラメータのセットを完全に決定する。インターコード化PUのための予測信号は、動き補償予測によって形成される。(参照ピクチャおよび動きベクトルによって指定された)各動き仮説について、予測信号が、指定された参照ピクチャ内の変位されたブロックによって形成され、ただし、現在のPUに対する変位が、動きベクトルによって指定される。変位は、典型的には、サブサンプル精度で指定される(H.265|MPEG-H HEVCでは、動きベクトルは、1/4ルーマサンプルの精度を有する)。非整数動きベクトルでは、予測信号は、(典型的には、可分離(separable)FIRフィルタを使用して)再構成された参照ピクチャを補間することによって生成される。多重仮説予測(multi-hypothesis prediction)を用いたPUの最終的な予測信号は、個々の動き仮説のための予測信号の加重和によって形成される。典型的には、動きパラメータの同じセットが、PUのルーマブロックおよびクロマブロックのために使用される。最先端のビデオコーディング規格が、参照ピクチャに対する現在のエリア(サンプルのブロック)の動きを指定するために、並進変位ベクトル(translational displacement vector)を使用するにもかかわらず、より高次の動きモデル(たとえば、アフィン動きモデル)を採用することも可能である。その場合、追加の動きパラメータが、動き仮説のために送信されなければならない。
【0015】
イントラピクチャコード化CUとインターピクチャコード化CUの両方では、予測誤差信号(残差信号とも呼ばれる)が、典型的には変換コーディングを介して送信される。H.265|MPEG-H HEVCでは、CUのルーマ残差サンプルのブロック、ならびにクロマ残差サンプルのブロック(存在する場合)が、変換ブロック(TB)に区分される。変換ブロックへのCUの区分は、残差4分木(RQT)とも呼ばれる4分木シンタックスによって示される。得られた変換ブロックは、変換コーディングを使用してコーディングされる。2d変換が残差サンプルのブロックに適用され、得られた変換係数が、独立スカラー量子化を使用して量子化され、得られた変換係数レベル(量子化インデックス)が、エントロピーコーディングされる。PスライスおよびBスライス内で、CUシンタックスの最初に、skip_flagが送信される。このフラグが1に等しい場合、対応するCUが、マージモードでコーディングされた単一の予測ユニットからなる(すなわち、merge_flagが1に等しいと推論される)こと、および、すべての変換係数がゼロに等しい(すなわち、再構成信号が予測信号に等しい)ことを示す。その場合、skip_flagに加えて、merge_idxのみが送信される。skip_flagが0に等しい場合、予測モード(インターまたはイントラ)がシグナリングされ、その後に上記で説明したシンタックス機能が続く。
【0016】
すでにコーディングされたピクチャは、後に続くピクチャにおけるブロックの動き補償予測のために使用され得るので、ピクチャは、エンコーダにおいて完全に再構成されなければならない。(量子化インデックスおよび逆変換が与えられると、変換係数を再構成することによって取得された)ブロックのための再構成された予測誤差信号が、対応する予測信号に加算され、結果が、現在のピクチャのためのバッファに書き込まれる。ピクチャのすべてのブロックが再構成された後、1つまたは複数のループ内フィルタが適用され得る(たとえば、デブロッキングフィルタ、およびサンプル適応オフセットフィルタ)。次いで、最終的な再構成されたピクチャが、復号ピクチャバッファ内に記憶される。
【0017】
以下で説明する実施形態は、予測誤差信号の変換コーディングなど、変換コーディングのための概念を提示する。この概念は、イントラピクチャコード化ブロックとインターピクチャコード化ブロックの両方のために適用可能である。この概念はまた、非矩形サンプル領域の変換コーディングにも適用可能である。従来の変換コーディングとは対照的に、変換係数は、以下で説明する実施形態によれば、独立して量子化されない。少なくとも、変換係数は、依存量子化を使用して量子化されるために適している。依存量子化によれば、特定の変換係数のための利用可能な再構成レベルのセットは、他の変換係数のための選ばれた量子化インデックスに依存する。量子化インデックスのエントロピーコーディングのための変更について、以下で説明し、この変更は、コーディング効率を高め、依存スカラー量子化と組み合わせられる能力を維持する。
【0018】
すべての主要なビデオコーディング規格(最先端の規格H.265|MPEG-H HEVCを含む)は、予測誤差サンプルのブロックをコーディングするための変換コーディングの概念を利用する。ブロックの予測誤差サンプルは、元の信号のサンプルと、ブロックのための予測信号のサンプルとの間の差を表す。予測信号は、イントラピクチャ予測によって(その場合、現在のブロックのための予測信号のサンプルが、同じピクチャの内部の隣接ブロックのすでに再構成されたサンプルに基づいて導出される)、またはインターピクチャ予測によって(その場合、予測信号のサンプルが、すでに再構成されたピクチャのサンプルに基づいて導出される)のいずれかで取得される。元の予測誤差信号のサンプルは、現在のブロックのための元の信号のサンプル値から、予測信号のサンプルの値を減算することによって取得される。
【0019】
サンプルブロックの変換コーディングは、線形変換、スカラー量子化、および量子化インデックスのエントロピーコーディングからなる。エンコーダ側では(図2a参照)、元のサンプルのN×Mブロックが、線形解析変換(linear analysis transform)Aを使用して変換される。その結果は、変換係数のN×Mブロックである。変換係数tkは、異なる信号空間(または、異なる座標系)における元の予測誤差サンプルを表す。N×M変換係数が、N×M独立スカラー量子化器を使用して量子化される。各変換係数tkが、変換係数レベルとも呼ばれる量子化インデックスqkにマッピングされる。取得された量子化インデックスqkが、エントロピーコーディングされ、ビットストリームに書き込まれる。
【0020】
図2bに示されるデコーダ側では、変換係数レベルqkが、受信されたビットストリームから復号される。各変換係数レベルqkが、再構成された変換係数t'kにマッピングされる。再構成されたサンプルのN×Mブロックが、線形合成変換(linear synthesis transform)Bを使用して、再構成された変換係数のブロックを変換することによって取得される。
【0021】
ビデオコーディング規格が、合成変換(synthesis transform)Bのみを指定するにもかかわらず、合成変換Bの逆が、エンコーダにおいて解析変換(analysis transform)Aとして使用され、すなわち、A=B-1であることが、一般的な慣行である。その上、実際的なビデオコーディングシステムにおいて使用される変換は、直交変換(B-1=BT)、またはほぼ直交変換を表す。直交変換では、信号空間内の平均2乗誤差(MSE)ひずみが、変換領域内のMSEひずみに等しい。直交性は、元のサンプルブロックと再構成されたサンプルブロックとの間のMSEひずみが、独立スカラー量子化器を使用して最小化され得るという、重要な利点を有する。エンコーダにおいて使用される実際の量子化プロセスが、(上記のエントロピーコーディングの説明によって導入された)変換係数レベルの間の依存性を考慮に入れる場合でも、直交変換の使用によって、量子化アルゴリズムが著しく簡略化される。
【0022】
典型的な予測誤差信号では、変換は、信号エネルギーが少数の変換係数に集中するという効果を有する。元の予測誤差サンプルと比較すると、得られた変換係数の間の統計的依存性が低減される。
【0023】
最先端のビデオコーディング規格では、可分離の離散コサイン変換(タイプII)、またはその整数近似が使用される。しかしながら、この変換は、変換コーディングシステムの他の態様を変更することなく、容易に置き換えられ得る。文献において、または標準化文書において示唆されている改善についての例には、以下が含まれる。
【0024】
・(場合によっては、イントラ予測モード、および/またはブロックサイズに応じた)イントラピクチャ予測されたブロックのための離散サイン変換(DST)の使用。H.265|MPEG-H HEVCが、イントラピクチャ予測された4×4変換ブロックのためのDSTをすでに含むことに留意されたい。
・切替え変換(switched transform):エンコーダは、あらかじめ定義された変換のセットの中で、実際に使用される変換を選択する。利用可能な変換のセットは、エンコーダとデコーダの両方によって知られているので、利用可能な変換のリストへのインデックスを使用して、効率的にシグナリングされ得るようになる。利用可能な変換のセット、およびリスト内のそれらの順序付けは、選ばれたイントラ予測モードなど、ブロックのための他のコーディングパラメータに依存し得る。特殊な場合には、使用される変換は、イントラ予測モードなどのコーディングパラメータによって完全に決定されるので、変換を指定するためのシンタックス要素が送信される必要がなくなる。
・非分離変換(non-separable transform):エンコーダおよびデコーダにおいて使用される変換は、非分離変換を表す。切替え変換の概念が、1つまたは複数の非分離変換を含み得ることに留意されたい。複雑さの理由のために、非分離変換の使用は、いくつかのブロックサイズに制限され得る。
・マルチレベル変換:実際の変換は、2つ以上の変換段階からなる。第1の変換段階は、計算的に低複雑度の可分離変換からなり得る。また、第2の段階では、得られた変換係数のサブセットが、非分離変換を使用してさらに変換される。変換ブロック全体のための非分離変換と比較すると、2段階手法は、より複雑な非分離変換がより少数のサンプルに適用されるという利点を有する。マルチレベル変換の概念は、切替え変換の概念と効率的に組み合わせられ得る。
【0025】
変換係数が、スカラー量子化器を使用して量子化される。量子化の結果として、変換係数のための許容可能な値のセットが低減される。言い換えれば、変換係数は、いわゆる再構成レベルの可算セット(実際には、有限セット)にマッピングされる。再構成レベルのセットは、可能な変換係数値のセットの適切なサブセットを表す。後に続くエントロピーコーディングを簡略化するために、許容可能な再構成レベルは、ビットストリームの一部として送信される、量子化インデックス(変換係数レベルとも呼ばれる)によって表される。デコーダ側では、量子化インデックス(変換係数レベル)が、再構成された変換係数にマッピングされる。再構成された変換係数のための可能な値は、再構成レベルのセットに対応する。エンコーダ側では、スカラー量子化の結果は、変換係数レベル(量子化インデックス)のブロックである。
【0026】
最先端のビデオコーディング規格では、一様再構成量子化器(URQ)が使用される。それらの基本設計が、図3に示されている。URQは、再構成レベルsが等間隔に離間しているという特性を有する。2つの隣接する再構成レベルの間の距離Δは、量子化ステップサイズと呼ばれる。再構成レベルのうちの1つは、0に等しい。したがって、利用可能な再構成レベルの完全セットが、量子化ステップサイズΔによって一意に指定される。量子化インデックスqから再構成された変換係数t'へのデコーダマッピングは、原理上は、単純な公式によって与えられる。
t'=q・Δ
【0027】
このコンテキストでは、「独立スカラー量子化」という用語は、任意の変換係数のための量子化インデックスqが与えられると、関連付けられた再構成された変換係数t'を、他の変換係数のためのすべての量子化インデックスから独立して決定することができるという特性を指す。
【0028】
ビデオデコーダは、典型的には、標準精度(たとえば、32ビット)の整数演算を利用するので、規格において使用される実際の公式は、単純な乗算とはわずかに異なり得る。変換係数のためのサポートされたダイナミックレンジへのクリッピングを無視するとき、H.265|MPEG-H HEVCにおける再構成された変換係数は、以下によって取得され、
t'=(scale・q+(1<<(shift-1)))>>shift
ただし、演算子「<<」および「>>」は、それぞれ左および右のビットシフトを表す。我々が整数演算を無視するとき、量子化ステップサイズΔは、以下の項に対応する。
Δ=scale・2-shift
【0029】
H.262|MPEG-2 Videoなど、より古いビデオコーディング規格もまた、そのための再構成レベルゼロと最初の非ゼロ再構成レベルとの間の距離が公称量子化ステップサイズに対して(たとえば、公称量子化ステップサイズΔの3/2に)増加する、変更されたURQを指定する。
【0030】
変換係数のための量子化ステップサイズ(または、スケールパラメータおよびシフトパラメータ)は、2つの係数によって決定される。
【0031】
・量子化パラメータQP:量子化ステップサイズは、典型的にはブロックベースで変更され得る。そのために、ビデオコーディング規格は、量子化ステップサイズのあらかじめ定義されたセットを提供する。使用される量子化ステップサイズ(または、同等に、上記で導入されたパラメータ「scale」および「shift」)は、量子化ステップサイズのあらかじめ定義されたリストへのインデックスを使用して示される。インデックスは、量子化パラメータ(QP)と呼ばれる。H.265|MPEG-H HEVCでは、QPと量子化ステップサイズとの間の関係は、以下によって近似的に与えられる。
【0032】
【数1】
【0033】
スライスQPは、典型的にはスライスヘッダ内で送信される。一般に、ブロックに基づいて、量子化パラメータQPを変更することが可能である。そのために、DQP(デルタ量子化パラメータ)が送信され得る。使用される量子化パラメータは、送信されたDQPと、すでにコーディングされた(典型的には隣接する)ブロックのQPを使用して導出される、予測されたQP値とによって決定される。
【0034】
・量子化重み行列(quantization weighting matrix):ビデオコーディング規格は、個々の変換係数のために異なる量子化ステップサイズを使用するための可能性を提供することが多い。これは、いわゆる量子化重み行列wを指定することによって達成され、量子化重み行列wは、エンコーダによって、典型的にはシーケンスまたはピクチャレベルで選択され得、ビットストリームの一部として送信される。量子化重み行列wは、変換係数の対応するブロックと同じサイズを有する。変換係数tikのための量子化ステップサイズΔikは、以下によって与えられ、
Δik=wik・Δblock
ただし、Δblockは、検討されるブロックのための量子化ステップサイズ(ブロック量子化パラメータQPによって示される)を示し、iおよびkは、変換ブロックの内部の現在の変換係数を指定する座標を表し、wikは、量子化重み行列w内の対応するエントリを表す。
【0035】
量子化重み行列の主な意図は、知覚的に有意味な方法で、量子化雑音を導入するための可能性を提供することである。適切な重み行列を使用することによって、人間の視覚の空間コントラスト感度が、ビットレートと主観的な再構成品質との間のより良いトレードオフを達成するために活用され得る。それにもかかわらず、多数のエンコーダは、(高レベルシンタックス要素を使用して、効率的に送信され得る)いわゆるフラットな量子化行列を使用する。この場合、同じ量子化ステップサイズΔが、ブロック内のすべての変換係数のために使用される。次いで、量子化ステップサイズが、量子化パラメータQPによって完全に指定される。
【0036】
変換係数レベル(変換係数のための量子化インデックス)のブロックは、エントロピーコーディングされる(すなわち、ビットストリームの一部として、可逆的な方法で送信される)。線形変換は、線形依存性のみを低減することができるので、変換係数レベルのためのエントロピーコーディングは、典型的には、ブロック内の変換係数レベルの間の残りの非線形依存性が効率的なコーディングのために活用され得る方法で設計される。よく知られている例は、MPEG-2 Videoにおけるランレベル(run-level)コーディング、H.263およびMPEG-4 Visualにおけるランレベルラスト(run-level-last)コーディング、H.264|MPEG-4 AVCにおけるコンテキスト適応型可変長コーディング(CAVLC)、ならびにH.264|MPEG-4 AVCおよびH.265|MPEG-H HEVCにおけるコンテキストベース適応型バイナリ算術コーディング(CABAC)である。
【0037】
最先端のビデオコーディング規格H.265|MPEG-H HEVCにおいて指定されているCABACは、多種多様な変換ブロックサイズのために適用され得る一般的な概念に従うものである。4×4サンプルよりも大きい変換ブロックは、4×4サブブロックに区分される。この区分は、図4aおよび図4bにおいて、16×16変換ブロックの例について示されている。図4aに示された4×4サブブロックのコーディング順序、ならびに、図4bに示されたサブブロックの内部の変換係数レベルのコーディング順序は、一般に、それらの図において示された逆対角走査(reverse diagonal scan)によって指定される。いくつかのイントラピクチャ予測ブロックでは、(実際のイントラ予測モードに応じて)水平または垂直走査パターンが使用される。コーディング順序は、常に高周波ロケーションから開始する。
【0038】
H.265|MPEG-H HEVCでは、変換係数レベルが、4×4サブブロックに基づいて送信される。変換係数レベルの可逆コーディングは、以下のステップを含む。
【0039】
1. いずれかの非ゼロ変換係数レベルが変換ブロック内にあるか否かをシグナリングする、シンタックス要素coded_block_flagが送信される。coded_block_flagが0に等しい場合、それ以上のデータが変換ブロックのためにコーディングされない。
2. コーディング順序(たとえば、図4に示されたブロックごとの逆対角走査順序)における、最初の非ゼロ変換係数レベルのx座標およびy座標が送信される。これらの座標の送信は、プレフィックスおよびサフィックス部分に分割される。規格は、シンタックス要素last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、およびlast_sig_coeff_y_suffixを使用する。
3. コーディング順序における最初の非ゼロ変換係数レベルを含んでいる4×4サブブロックから開始して、4×4サブブロックがコーディング順序で処理され、ただし、サブブロックのコーディングは、以下の主なステップを含む。
a. サブブロックがいずれかの非ゼロ変換係数レベルを含んでいるか否かを示す、シンタックス要素coded_sub_block_flagが送信される。最初および最後の4×4サブブロック(すなわち、最初の非ゼロ変換係数レベルまたはDCレベルを含んでいるサブブロック)では、このフラグが送信されないが、1に等しいと推論される。
b. 1に等しいcoded_sub_block_flagをもつサブブロックの内部のすべての変換係数レベルについて、シンタックス要素significant_coeff_flagは、対応する変換係数レベルがゼロに等しくないか否かを示す。このフラグは、その値を、すでに送信されたデータに基づいて推論することができない場合にのみ、送信される。具体的には、このフラグは、(送信されたx座標およびy座標によって指定された)最初の有意な走査位置のために送信されず、DC係数が(コーディング順序において)最初の非ゼロ係数とは異なるサブブロック内に位置し、最後のサブブロックのためのすべての他のsignificant_coeff_flagがゼロに等しい場合、DC係数のために送信されない。
c. (もしあれば)1に等しいsignificant_coeff_flagをもつ最初の8つの変換係数レベルについて、フラグcoeff_abs_level_greater1_flagが送信される。このフラグは、変換係数レベルの絶対値が1よりも大きいか否かを示す。
d. (もしあれば)1に等しいcoeff_abs_level_greater1_flagをもつ最初の変換係数レベルについて、フラグcoeff_abs_level_greater2_flagが送信される。このフラグは、変換係数レベルの絶対値が2よりも大きいか否かを示す。
e. 1に等しいsignificant_coeff_flagをもつすべてのレベルについて(例外については以下で説明する)、変換係数レベルの符号を指定するシンタックス要素coeff_sign_flagが送信される。
f. そのための絶対値が、significant_coeff_flag、coeff_abs_level_greater1_flag、およびcoeff_abs_level_greater2_flagの値によってすでに完全に指定されていない、すべての変換係数レベルについて(送信されたフラグのいずれかがゼロに等しい場合、絶対値が完全に指定される)、絶対値の残りが、マルチレベルシンタックス要素coeff_abs_level_remainingを使用して送信される。
【0040】
H.265|MPEG-H HEVCでは、すべてのシンタックス要素が、コンテキストベース適応型バイナリ算術コーディング(CABAC)を使用してコーディングされる。すべての非バイナリシンタックス要素は、最初に、ビンとも呼ばれる、一連の二分決定上にマッピングされる。得られたビンシーケンスは、バイナリ算術コーディングを使用してコーディングされる。そのために、各ビンは、コンテキストとも呼ばれる確率モデル(二項確率質量関数(binary probability mass function))に関連付けられる。大部分のビンでは、コンテキストは適応確率モデルを表し、このことは、関連付けられた二項確率質量関数が、実際にコーディングされたビン値に基づいて更新されることを意味する。条件付き確率が、すでに送信されたデータに基づいて、いくつかのビンのためのコンテキストを切り替えることによって活用され得る。CABACはまた、固定確率質量関数(fixed probability mass function)(0.5,0.5)が使用される、いわゆるバイパスモードを含む。
【0041】
coded_sub_block_flagのコーディングのために選ばれるコンテキストは、すでにコーディングされた隣接サブブロックのためのcoded_sub_block_flagの値に依存する。significant_coeff_flagのためのコンテキストは、サブブロックの内部の走査位置(x座標およびy座標)、変換ブロックのサイズ、および隣接サブブロック内のcoded_sub_block_flagの値に基づいて選択される。フラグcoeff_abs_level_greater1_flagおよびcoeff_abs_level_greater2_flagについては、コンテキスト選択は、現在のサブブロックがDC係数を含むか否か、および、1に等しいいずれかのcoeff_abs_level_greater1_flagが隣接サブブロックのために送信されたか否かに依存する。coeff_abs_level_greater1_flagについては、コンテキスト選択は、サブブロックのためのすでにコーディングされたcoeff_abs_level_greater1_flagの数および値にさらに依存する。
【0042】
符号coeff_sign_flag、および絶対値の残りcoeff_abs_level_remainingは、バイナリ算術コーダのバイパスモードでコーディングされる。coeff_abs_level_remainingをビン(二分決定)のシーケンス上にマッピングするために、適応2値化方式が使用される。2値化は、サブブロックのためのすでにコーディングされた値に基づいて適応される、単一のパラメータによって制御される。
【0043】
H.265|MPEG-H HEVCはまた、いわゆる符号データ隠蔽モードも含み、このモードでは(いくつかの条件下で)サブブロックの内部のその最後の非ゼロレベルのための符号の送信が省略される。その代わりに、このレベルのための符号が、対応するサブブロックのレベルのための絶対値の和のパリティに埋め込まれる。エンコーダは、適切な変換係数レベルの決定において、この態様を考慮しなければならないことに留意されたい。
【0044】
ビデオコーディング規格は、ビットストリームシンタックス、および再構成プロセスのみを指定する。我々が、元の予測誤差サンプルの所与のブロック、および所与の量子化ステップサイズのための変換コーディングを検討する場合、エンコーダは、かなりの自由を有する。変換ブロックのための量子化インデックスqkが与えられると、エントロピーコーディングは、データをビットストリームに書き込む(すなわち、算術コードワードを構成する)ための、一意に定義されたアルゴリズムに従わなければならない。しかしながら、予測誤差サンプルの元のブロックが与えられて、量子化インデックスqkを取得するためのエンコーダアルゴリズムは、ビデオコーディング規格の範囲外である。さらに、エンコーダは、ブロックベースで量子化パラメータQPを選択するための自由を有する。以下の説明では、我々は、量子化パラメータQP、および量子化重み行列が与えられると仮定する。したがって、各変換係数のための量子化ステップサイズが知られている。我々は、エンコーダが、元の変換係数tkを取得するための指定された合成変換の逆(または、逆の極めて近い近似)である、解析変換を実行するとさらに仮定する。これらの条件下でも、エンコーダは、各元の変換係数tkのための量子化器インデックスqkを選択するための自由を有する。変換係数レベルの選択は、ひずみ(または、再構成/近似品質)とビットレートの両方を決定するので、使用される量子化アルゴリズムは、生じたビットストリームのレートひずみ性能にかなりの影響を与える。
【0045】
最も単純な量子化方法は、元の変換係数tkを最も近い再構成レベルに丸める。典型的に使用されるURQでは、対応する量子化インデックスqkが、以下に従って決定され得、
【0046】
【数2】
【0047】
ただし、sgn()は、符号関数であり、演算子[・]は、その引数以下である最大の整数を返す。この量子化方法は、MSEひずみ
【0048】
【数3】
【0049】
が最小化されることを保証するが、得られた変換係数レベルqkを送信するために必要とされるビットレートを完全に無視する。典型的には、丸めがゼロの方に偏る場合、より良い結果が取得される。
【0050】
【数4】
【0051】
ただし、
【0052】
【数5】
【0053】
レートひずみの意味で最良の結果は、量子化プロセスがラグランジュ関数D+λ・Rを最小化する場合に取得され、ただし、Dは、変換ブロックのひずみ(たとえば、MSEひずみ)を表し、Rは、ブロックの変換係数レベルを送信するために必要とされるビット数を指定し、λは、ラグランジュ乗数である。QPと量子化ステップサイズとの間の関係
【0054】
【数6】
【0055】
を使用するコーデック(H.264|MPEG-4 AVC、またはH.265|MPEG-H HEVCなど)では、ラグランジュ乗数λとブロック量子化パラメータQPとの間の以下の関係が使用されることが多く、
【0056】
【数7】
【0057】
ただし、c1およびc2は、スライスまたはピクチャのための定数係数を表す。
【0058】
ひずみおよびレートのラグランジュ関数D+λ・Rを最小化することを目指す量子化アルゴリズムは、レートひずみ最適量子化(RDOQ:rate-distortion optimized quantization)とも呼ばれる。我々が、MSEまたは重み付きMSEを使用して、ひずみを測定する場合、変換ブロックのための量子化インデックスqkは、以下のコスト測度が最小化されるような方法で決定されるべきである。
【0059】
【数8】
【0060】
ここでは、変換係数インデックスkは、変換係数レベルのコーディング順序(または、走査順序)を指定する。項R(qk|qk-1,qk-2,...)は、量子化インデックスqkを送信するために必要とされるビット数(または、その推定値)を表す。この条件は、(組合せ確率または条件付き確率の使用のために)特定の変換係数レベルqkのためのビット数が、典型的には、コーディング順序において先行する変換係数レベルqk-1、qk-2などのために選ばれた値に依存することを示す。上記の式における係数αkは、たとえば、人間の視覚のコントラスト感度をモデリングするために、個々の変換係数の寄与に重み付けするために使用され得る。以下では、我々は、概して、すべての重み係数αkが1に等しいと仮定する(が、アルゴリズムは、異なる重み係数を考慮に入れることができる方法で、簡単に変更され得る)。
【0061】
H.265|MPEG-H HEVCにおける変換係数コーディングでは、大部分の二分決定が、適応確率モデルを使用してコーディングされるので、レート項の正確な計算が極めて複雑である。しかしながら、我々が、確率モデル選択のいくつかの態様を無視し、確率モデルが変換ブロックの内部で適応されることを無視する場合、適当な複雑さをもつRDOQアルゴリズムを設計することが可能である。H.265|MPEG-H HEVCのための参照ソフトウェアにおいて実装されたRDOQアルゴリズムは、以下の基本的な処理ステップからなる。
【0062】
1. 各走査位置kについて、変換係数レベルqkが、そのレベルがゼロに等しいと推論されないという仮定の下に、ラグランジュコストDk(qk)+λ・Rk(qk)を最小化することによって選択される。Dk(qk)は、(重み付き)2乗誤差Dk(qk)=αk・(tkk・qk)2を示し、Rk(qk)は、qkを送信するために必要とされるビット数の推定値を表す。
2. 4×4サブブロックのためのフラグcoded_sub_block_flagが、以下の2つの場合、すなわち、(a)ステップ1で選択された変換係数レベルが使用される場合、(b)シンタックス要素coded_sub_block_flagがゼロに等しく設定され、したがって、4×4サブブロックのすべての変換係数レベルがゼロに等しく設定される場合のための、ラグランジュコストを比較することによって決定される。
3. 最初の非ゼロ変換係数レベルのロケーションが、(ステップ2の後の)非ゼロ変換係数レベルのうちの1つを、コーディング順序における最初の非ゼロ変換係数レベル(先行する変換係数レベルがゼロに等しく設定される)として選ぶことによって取得される、ラグランジュコストを比較することによって決定される。
4. coded_block_flagが、ステップ3の後に取得された変換係数レベルのシーケンスのためのラグランジュコストと、変換ブロックの内部のすべての変換係数レベルがゼロに等しく設定される場合のためのラグランジュコストとを比較することによって決定される。
【0063】
[3]では、変換コーディングのための変更された概念が提案され、その概念について、以下でより詳細に説明する。従来の変換コーディングと比較した主な変更は、変換係数が独立して量子化および再構成されないということである。代わりに、変換係数のための許容可能な再構成レベルが、再構成順序において先行する変換係数のための選択された量子化インデックスに依存する。依存スカラー量子化の概念が、変更されたエントロピーコーディングと組み合わせられ、ここにおいて、変換係数のための確率モデル選択(または代替的に、コードワードテーブル選択)は、許容可能な再構成レベルのセットに依存する。
【0064】
変換係数の依存量子化の利点は、許容可能な再構成ベクトルが、N次元信号空間内でより密にパッキングされることである(ただし、Nは、変換ブロック内のサンプルまたは変換係数の数を示す)。変換ブロックのための再構成ベクトルは、変換ブロックの順序付けされた再構成された変換係数(または代替的に、順序付けされた再構成されたサンプル)を参照する。この効果は、2つの変換係数の最も簡単な場合について、図5aおよび図5bに示されている。図5aは、独立スカラー量子化のための(2d平面における点を表す)許容可能な再構成ベクトルを示す。見てわかるように、第2の変換係数t'1のための許容可能な値のセットは、第1の再構成された変換係数t'0のための選ばれた値に依存しない。図5bは、依存スカラー量子化のための一例を示す。独立スカラー量子化とは対照的に、第2の変換係数t'1のための選択可能な再構成値は、第1の変換係数t'0のための選ばれた再構成レベルに依存することに留意されたい。図5bの例では、(異なる色によって示された)第2の変換係数t'1のための利用可能な再構成レベルの2つの異なるセットがある。第1の変換係数t'0のための量子化インデックスが偶数(...,-2,0,2,...)である場合、第1のセット(青い点)の任意の再構成レベルが、第2の変換係数t'1のために選択され得る。また、第1の変換係数t'0のための量子化インデックスが奇数(...,-3,-1,1,3,...)である場合、第2のセット(赤い点)の任意の再構成レベルが、第2の変換係数t'1のために選択され得る。この例では、第1のセットおよび第2のセットのための再構成レベルが、量子化ステップサイズの1/2だけシフトされる(第2のセットの任意の再構成レベルが、第1のセットの2つの再構成レベルの間に位置する)。
【0065】
変換係数の依存スカラー量子化は、N次元ユニット量ごとの所与の平均数の再構成ベクトルについて、変換係数の所与の入力ベクトルと、最も近い利用可能な再構成ベクトルとの間の距離の期待値が低減されるという効果を有する。結果として、変換係数の入力ベクトルと、再構成された変換係数のベクトルとの間の平均ひずみが、所与の平均ビット数について低減され得る。ベクトル量子化では、この効果は、空間充填利得(space-filling gain)と呼ばれる。変換ブロックのための依存スカラー量子化を使用すると、高次元ベクトル量子化のための潜在的な空間充填利得の大部分が活用され得る。また、ベクトル量子化とは対照的に、再構成プロセス(または、復号プロセス)の実装の複雑さは、独立スカラー量子化器を用いる従来の変換コーディングの実装の複雑さに匹敵する。
【0066】
依存スカラー量子化を用いる変換デコーダのブロック図が、図6に示されている。主な変更は、依存量子化が、上から下へと指す矢印につながることに関する。これらの垂直の矢印によって示されるように、再構成順序インデックスk>0をもつ、再構成された変換係数t'kは、関連付けられた量子化インデックスqkのみに依存するのではなく、再構成順序において先行する変換係数のための量子化インデックスq0、q1、...、qk-1にも依存する。依存量子化では、変換係数の再構成順序が一意に定義されなければならないことに留意されたい。量子化インデックスqkに関連付けられた再構成レベルのセットについての知識も、エントロピーコーディングにおいて活用される場合、変換コーデック全体の性能が改善され得る。つまり、変換係数に適用される再構成レベルのセットに基づいて、コンテキスト(確率モデル)またはコードワードテーブルを切り替えることが有利である。
【0067】
従来の変換コーディングの場合のように、本明細書で概説する実施形態による変換符号化は、解析変換に加えて、量子化アルゴリズムおよびエントロピーコーディングを伴う。解析変換として、典型的には、合成変換の逆(または、逆の近い近似)が使用され、エントロピーコーディングは、エントロピー復号プロセスが与えられると、通常は一意に指定される。しかしながら、従来の変換コーディングの場合と同様に、元の変換係数が与えられると、量子化インデックスを選択するための多くの自由がある。
【0068】
変換係数の依存量子化は、変換係数のための利用可能な再構成レベルのセットが、(同じ変換ブロックの内部の)再構成順序において先行する変換係数のための選ばれた量子化インデックスに依存するという概念を指す。現在の変換係数のための許容可能な再構成レベルのセットは、再構成レベルの2つのあらかじめ定義されたセットの中で、(コーディング順序において先行する変換係数のための量子化インデックスに基づいて)選択される。
【0069】
従来の独立スカラー量子化の場合と同様に、ブロックベース量子化パラメータ(QP)は、量子化ステップサイズΔ(または、上記で説明したように、対応するスケールパラメータおよびシフトパラメータ)を決定し、(再構成レベルのすべてのセット内の)すべての再構成レベルは、量子化ステップサイズΔの整数の倍数を表す。しかしながら、再構成レベルの各セットは、量子化ステップサイズΔの整数の倍数のサブセットのみを含む。依存量子化のためのそのような構成では、再構成レベルのすべてのセットのためのすべての可能な再構成レベルが量子化ステップサイズの整数の倍数を表し、そのような構成は、一様再構成量子化器(URQ)の拡張と見なされ得る。その基本的な利点は、再構成された変換係数が、計算的な複雑さが極めて低いアルゴリズムによって計算され得ることである。
【0070】
特定の変換係数tkのための量子化ステップサイズΔk(kは再構成順序を示す)は、ブロック量子化パラメータQPのみによって決定されるとは限らないことがあり、特定の変換係数tkのための量子化ステップサイズΔkは、量子化重み行列およびブロック量子化パラメータによって決定されることも可能である。典型的には、変換係数tkのための量子化ステップサイズΔkは、(量子化重み行列によって指定される)変換係数tkのための重み係数wkと、(ブロック量子化パラメータによって指定される)ブロック量子化ステップサイズΔblockとの積によって与えられる。
Δk=wk・Δblock
【0071】
再構成された変換係数t'kの実際の計算(または、再構成レベルの実際の計算)が、整数実装形態または他の実装形態の態様のために、理想的な乗算からわずかに逸脱し得ることに留意されたい。Δkが、特定の変換係数tkのための量子化ステップサイズであるとし、nkが、(たとえば、量子化インデックスqkによって与えられる)量子化ステップサイズの公称の整数係数を指定するとする。理想的な乗算では、再構成された変換係数t'kは、以下によって与えられる。
t'k=nk・Δk
【0072】
整数実装形態への制限のために、再構成された変換係数t'k(または、対応する再構成レベル)は、実際には以下の
t'k=(nk・scale+(1<<(shift-1)))>>shift、ただし、scale・2-shift≒Δk
または同様の手順に従って決定され得る。我々が、以下の説明において、量子化ステップサイズの整数の倍数について話す場合、対応するテキストもまた、上記で指定されたものと同様の整数近似に当てはまる。
【0073】
[3]で提案された変換係数のための依存スカラー量子化は、再構成レベルの2つの異なるセットを使用し、変換係数tkのための2つのセットのすべての再構成レベルは、(ブロックベース量子化パラメータによって少なくとも部分的に決定される)この変換係数のための量子化ステップサイズΔkの整数の倍数を表す。量子化ステップサイズΔkは、両方のセット内の許容可能な再構成値のためのスケーリング係数のみを表すことに留意されたい。変換ブロックの内部の異なる変換係数tkのための可能な個々の量子化ステップサイズΔk(および、したがって、個々のスケーリング係数)を除いて、再構成レベルの同じ2つのセットが、すべての変換係数のために使用される。
【0074】
図7では、再構成レベルtの2つのセットのための好ましい構成が示されている。第1の量子化セット(図においてセット0というラベルが付けられている)内に含まれている再構成レベルは、量子化ステップサイズの偶数の整数の倍数を表す。第2の量子化セット(図においてセット1というラベルが付けられている)は、量子化ステップサイズのすべての奇数の整数の倍数、および追加として、ゼロに等しい再構成レベルを含んでいる。両方の再構成セットが、ゼロの周囲で対称であることに留意されたい。ゼロに等しい再構成レベルが、両方の再構成セット内に含まれており、さもなければ、これらの再構成セットが互いに素である。両方の再構成セットの和集合は、量子化ステップサイズのすべての整数の倍数を含んでいる。
【0075】
エンコーダが許容可能な再構成レベルの中で選択する再構成レベルは、ビットストリームの内部で送信される。従来の独立スカラー量子化の場合のように、このことは、変換係数レベルとも呼ばれる、いわゆる量子化インデックスを使用して達成され得る。量子化インデックス(または、変換係数レベル)は、量子化セットの内部(すなわち、再構成レベルのセットの内部)の利用可能な再構成レベルを一意に識別する整数である。量子化インデックスは、(任意のエントロピーコーディング技法を使用して)、ビットストリームの一部としてデコーダに送られる。デコーダ側では、再構成された変換係数が、(コーディング/再構成順序において先行する量子化インデックスによって決定される)再構成レベルの現在のセット、および現在の変換係数のための送信された量子化インデックスに基づいて、一意に計算され得る。
【0076】
再構成レベルのセット(または、量子化セット)の内部の再構成レベルへの量子化インデックスの割当ては、図7で見られるように、以下のルールに従い得る。すなわち、0に等しい量子化インデックスが、0に等しい再構成レベルに割り当てられる。1に等しい量子化インデックスが、0よりも大きい、最小の再構成レベルに割り当てられ、2に等しい量子化インデックスが、0よりも大きい次の再構成レベル(すなわち、0よりも大きい、2番目に小さい再構成レベル)に割り当てられる、などとなる。または、言い換えれば、0よりも大きい再構成レベルには、それらの値の昇順に、0よりも大きい整数で(すなわち、1、2、3などで)ラベルが付けられる。同様に、量子化インデックス-1が、0よりも小さい、最大の再構成レベルに割り当てられ、量子化インデックス-2が、0よりも小さい次の(すなわち、2番目に大きい)再構成レベルに割り当てられる、などとなる。または、言い換えれば、0よりも小さい再構成レベルには、それらの値の降順に、0よりも小さい整数(すなわち、-1、-2、-3など)でラベルが付けられる。変換係数のための再構成プロセスは、図8の擬似コードにおいて指定されたアルゴリズムと同様に実装され得る。
【0077】
図8の擬似コードでは、level[k]は、変換係数tkのために送信される量子化インデックスを示し、setId[k](0または1に等しい)は、再構成レベルの現在のセット(以下でより詳細に説明するように、再構成順序において先行する量子化インデックスに基づいて決定される)の識別子を指定する。変数nは、量子化インデックスlevel[k]およびセット識別子setId[k]によって与えられた、量子化ステップサイズの整数の倍数を表す。変換係数が、量子化ステップサイズΔkの偶数の整数の倍数を含んでいる、再構成レベルの第1のセットを使用してコーディングされる場合(setId[k]==0)、変数nは、送信された量子化インデックスの2倍である。変換係数が、再構成レベルの第2のセットを使用してコーディングされる場合(setId[k]==1)、我々は、以下の3つの場合を有し、すなわち、(a)level[k]が0に等しい場合、nも0に等しい、(b)level[k]が0よりも大きい場合、nは、量子化インデックスlevel[k]の2倍-1に等しい、および(c)level[k]が0未満である場合、nは、量子化インデックスlevel[k]の2倍+1に等しい。これは、符号関数を使用して指定され得る。
【0078】
【数9】
【0079】
次いで、第2の量子化セットが使用される場合、変数nは、量子化インデックスlevel[k]の2倍-量子化インデックスの符号関数sign(level[k])に等しい。
【0080】
変数n(量子化ステップサイズの整数係数を指定する)が決定されると、再構成された変換係数t'kが、量子化ステップサイズΔkでnを乗算することによって取得される。
【0081】
上述のように、量子化ステップサイズΔkを用いた正確な乗算の代わりに、再構成された変換係数t'kは、整数近似によって取得され得る。これは、図9における擬似コードにおいて示されている。ここでは、変数shiftは、右へのビットシフトを表す。その値は、典型的には、ブロックのための量子化パラメータのみに依存する(が、シフトパラメータがブロックの内部の異なる変換係数のために変更され得ることも可能である)。変数scale[k]は、変換係数tkのためのスケーリング係数を表し、ブロック量子化パラメータに加えて、たとえば、量子化重み行列の対応するエントリに依存し得る。変数「add」は、丸めオフセットを指定し、典型的には、add=(1<<(shift-1))に等しく設定される。図9の擬似コード(最後の行)において指定された整数演算は、丸めを除いて、以下によって与えられる、量子化ステップサイズΔkを用いた乗算と等しいことに留意されたい。
Δk=scale[k]・2-shift
【0082】
図8と比較して、図9における別の(純粋に表面的な)変更は、再構成レベルの2つのセットの間の切替えが、Cプログラミング言語などのプログラミング言語から知られている、3項if-then-else演算子(a?b:c)を使用して実装されることである。
【0083】
上記で説明した再構成レベルのセットの選択に加えて、変換コーディングにおける依存スカラー量子化における別のタスクは、定義された量子化セット(再構成レベルのセット)の間で切り替えるために使用されるアルゴリズムである。使用されるアルゴリズムは、変換係数のN次元空間において(および、したがって、再構成されたサンプルのN次元空間においても)達成され得る、「パッキング密度」を決定する。より高いパッキング密度は、最終的にコーディング効率の上昇をもたらす。
【0084】
[3]で提示した概念では、次の変換係数のための再構成レベルのセットは、図10に示されるように、量子化セットの区分に基づいて決定される。2つの量子化セットの各々は、2つのサブセットに区分される。第1の量子化セット(セット0というラベルが付けられている)は、2つのサブセット(AおよびBというラベルが付けられている)に区分され、第2の量子化セット(セット1というラベルが付けられている)もまた、2つのサブセット(CおよびDというラベルが付けられている)に区分される。図7および図10では、サブセットへの量子化セットの区分は、中空の丸および黒丸によって示される。以下の区分ルールが適用される。
【0085】
・サブセットAは、量子化セット0のすべての偶数の量子化インデックスからなる。
・サブセットBは、量子化セット0のすべての奇数の量子化インデックスからなる。
・サブセットCは、量子化セット1のすべての偶数の量子化インデックスからなる。
・サブセットDは、量子化セット1のすべての奇数の量子化インデックスからなる。
【0086】
使用されるサブセットは、ビットストリームの内部で明示的に示されない。代わりに、使用されるサブセットは、使用される量子化セット(たとえば、セット0またはセット1)、および実際に送信された量子化インデックスに基づいて導出され得る。サブセットは、送信された量子化インデックスlevelおよび1のビット単位の「and」演算によって導出され得る。サブセットAは、そのための(level&1)が0に等しい、セット0のすべての量子化インデックスからなり、サブセットBは、そのための(level&1)が1に等しい、セット0のすべての量子化インデックスからなり、サブセットCは、そのための(level&1)が0に等しい、セット1のすべての量子化インデックスからなり、サブセットDは、そのための(level&1)が1に等しい、セット1のすべての量子化インデックスからなる。
【0087】
量子化セット(セット0とセット1と)の間の遷移は、4つの可能な値(0、1、2、3)を有する、状態変数によって表される。一方では、状態変数は、現在の変換係数のために使用される量子化セットを指定する。量子化セット0は、状態変数が0または1に等しい場合、およびその場合にのみ使用され、量子化セット1は、状態変数が2または3に等しい場合、およびその場合にのみ使用される。他方では、状態変数はまた、量子化セットの間の可能な遷移も指定する。Table 1(表1)は、使用される状態遷移テーブルを示す。現在の状態が与えられると、Table 1(表1)は、現在の変換係数のための量子化セット(第2の列)を指定する。Table 1(表1)は、選ばれた量子化インデックスに関連付けられる経路に基づいて、状態遷移をさらに指定する(量子化セットが与えられる場合、経路は、使用されるサブセットA、B、C、またはDを指定する)。ブロックのための変換係数の再構成においては、状態変数を更新し、使用される量子化インデックスの経路を決定すれば十分である。
【0088】
【表1】
【0089】
経路は、量子化インデックスのパリティによって与えられる。level[k]が現在の量子化インデックスである場合、経路は、以下によって決定され得、
path=(level[k]&1)
ただし、演算子&は、2の補数整数演算におけるビット単位の「and」を表す。
【0090】
状態遷移の概念を使用して、現在の状態、および、したがって、現在の量子化セットが、(再構成順序における)前の状態と、本例では、そのパリティなど、前の量子化インデックスとによって一意に決定される。変換ブロックのための最初の状態は、0に等しく設定される。
【0091】
依存スカラー量子化のための状態遷移の概念によって、デコーダにおける変換係数の再構成のための低複雑度の実装形態が可能になる。単一の変換ブロックの変換係数の再構成プロセスのための好ましい例が、Cスタイルの擬似コードを使用して、図11に示されている。
【0092】
図11の擬似コードでは、インデックスkは、変換係数の再構成順序を指定する。例示的なコードでは、インデックスkが再構成順序において減少することに留意されたい。最後の変換係数は、k=0に等しいインデックスを有する。最初のインデックスkstartは、最初の再構成された変換係数の再構成インデックス(または、より正確には、逆再構成インデックス)を指定する。変数kstartは、変換ブロック内の変換係数の数-1に等しく設定され得るか、または(たとえば、最初の非ゼロ量子化インデックスのロケーションが、適用されたエントロピーコーディング方法において送信される場合)、コーディング/再構成順序における最初の非ゼロ量子化インデックスのインデックスに等しく設定され得る。後者の場合、すべての先行する変換係数(インデックスk>kstartである)は、0に等しいと推論される。各単一の変換係数のための再構成プロセスは、図9の例の場合と同じである。図9における例に関しては、量子化インデックスは、level[k]によって表され、関連付けられた再構成された変換は、trec[k]によって表される。状態変数は、stateによって表される。図11の例では、stateは、変換ブロックの最初に0に等しく設定されることに留意されたい。1dテーブルsetId[]は、状態変数の異なる値に関連付けられる量子化セットを指定し、2dテーブルstate_trans_table[][]は、現在のstate(第1の引数)およびpath(第2の引数)が与えられると、状態遷移を指定する。pathは、(ビット単位のand演算子&を使用して)量子化インデックスのパリティによって与えられる。
【0093】
テーブルsetId[]の代わりに、たとえば、右へのビットシフトなど、単純な算術演算が使用され得る。
setId[state]=state>>1
【0094】
同様に、テーブルstate_trans_table[][]もまた、単純な算術演算を使用して実装され得る。たとえば、以下の通りである。
state_trans_table[state][path]=
(32040>>((state<<2)+(path<<1)))&3
【0095】
ここにおいて、完全な状態遷移テーブルが、16ビット値「32040」によって与えられる。値「32040」を「0」で置き換えることによって、我々は、依存量子化と独立量子化との間で容易に切り替えることができることに留意されたい。値「0」は、状態0、および、したがって、従来の一様再構成量子化器Q0を常に選ぶ、状態遷移テーブルを表す。
【0096】
依存量子化における状態遷移はまた、図12に示されるような、トレリス構造を使用して表され得る。この図に示されているトレリスは、Table 1(表1)において指定された状態遷移に対応する。各状態について、現在の変換係数のための状態を、再構成順序における次の変換係数のための2つの可能な状態と接続する、2つの経路がある。これらの経路には、経路0および経路1というラベルが付けられ、この数は、上記で導入された経路変数に対応する(好ましい実施形態では、その経路変数は、量子化インデックスのパリティに等しい)。各経路は、量子化インデックスのためのサブセット(A、B、C、またはD)を一意に指定することに留意されたい。図12では、サブセットが丸括弧内で指定される。初期状態(状態0)が与えられると、トレリスを通る経路が、送信された量子化インデックスによって一意に指定される。
【0097】
図12における例では、状態(0、1、2、および3)は、以下の特性を有する。
【0098】
・状態0:前の量子化インデックスlevel[k-1]が、セット0の再構成レベルを指定し、現在の量子化インデックスlevel[k]が、セット0の再構成レベルを指定する。
・状態1:前の量子化インデックスlevel[k-1]が、セット1の再構成レベルを指定し、現在の量子化インデックスlevel[k]が、セット0の再構成レベルを指定する。
・状態2:前の量子化インデックスlevel[k-1]が、セット0の再構成レベルを指定し、現在の量子化インデックスlevel[k]が、セット1の再構成レベルを指定する。
・状態3:前の量子化インデックスlevel[k-1]が、セット1の再構成レベルを指定し、現在の量子化インデックスlevel[k]が、セット1の再構成レベルを指定する。
【0099】
トレリスは、いわゆる基本トレリスセルの連結からなる。基本トレリスセルは、図13に示されている。
【0100】
上記で概説したような依存スカラー量子化の一態様は、変換係数のための許容可能な再構成レベルの異なるセット(量子化セットとも呼ばれる)があることである。現在の変換係数のための量子化セットは、先行する変換係数のための量子化インデックスの値に基づいて決定される。我々が2つの量子化セットを比較する場合、ゼロに等しい再構成レベルと、隣接する再構成レベルとの間の距離が、セット1内よりもセット0内でより大きいことは明らかである。したがって、量子化インデックスが0に等しい確率は、セット0が使用される場合、より高く、セット1が使用される場合、より小さい。効率的なコーディングのために、この態様は、現在の量子化インデックスのために使用される量子化セット(または、状態)に基づいて、確率モデルを切り替えることによって、エントロピーコーディングにおいて活用される。
【0101】
確率モデルの好適な切替えのために、すべての先行する量子化インデックスの経路(使用される量子化セットのサブセットとの関連付け)が、現在の量子化インデックス(または、現在の量子化インデックスの対応する二分決定)をエントロピー復号するときに、知られているべきであることに留意されたい。そのために、[3]で提案されたコーデックでは、変換係数が再構成順序においてコーディングされる。量子化インデックスは、H.264|MPEG-4 AVC、またはH.265|MPEG-H HEVCと同様のバイナリ算術コーディングを使用してコーディングされる。非バイナリ量子化インデックスは、最初に、一連の二分決定(一般にビンと呼ばれる)上にマッピングされる。量子化インデックスは、絶対値、および、0よりも大きい絶対値の場合、符号として送信される。
【0102】
HEVCの場合と同様に、変換ブロックの変換係数レベルは、サブブロックに基づいてコーディングされる。最初に、変換ブロックがいずれかの非ゼロ変換係数レベルを含んでいるか否かを指定する、フラグcoded_block_flagが送信される。coded_block_flagが0に等しい(すなわち、ブロックがいかなる非ゼロレベルも含んでいない)場合、変換ブロックのためのさらなる情報が送信されない。他の場合(coded_block_flagが1に等しい)、以下が適用される。
【0103】
・コーディング順序における最初の非ゼロレベルのx座標およびy座標。図14に示されるように、送信された最初の非ゼロレベルのロケーションは、コーディング順序において識別された係数に先行するすべての変換係数(図14において白のマークが付けられている)が、ゼロに等しいと推論されることを指定する。さらなるデータは、指定されたロケーションにおける係数(図14において黒のマークが付けられている)、および、コーディング順序においてこの係数の後に続く係数(図14において影つきのマークが付けられている)のためにのみ送信される。図14における例は、4×4サブブロックをもつ16×16変換ブロックを示すが、使用されるコーディング順序は、H.265|MPEG-H HEVCにおいて指定されたサブブロックごとの対角走査である。
・(送信されたx座標およびy座標によって示された)最初の非ゼロレベルを含んでいるそのサブブロックに先行するサブブロックについて、サブブロックがいずれかの非ゼロ変換係数レベルを含んでいるか否かを指定する、フラグcoded_subblock_flagが送信される。例外として、coded_subblock_flagは、DC係数を含んでいるサブブロックのために送信されない。このサブブロックでは、coded_subblock_flagが1に等しいと推論される。
【0104】
最後に、1に等しいcoded_subblock_flagをもつすべてのサブブロックについて、ならびに、コーディング順序において最初の非ゼロレベルを含んでいるサブブロックについて、変換係数レベルの値が、図15における擬似コードによって示されるようにコーディングされる。ここにおいて、firstScanIdSbbは、サブブロックの内部の最初の走査インデックスを表す。(送信されたx座標およびy座標によって示された)最初の非ゼロレベルを含んでいるサブブロックでは、firstScanIdSbbは、送信された(x,y)座標に対応する走査インデックスfirstNonZeroに等しい。他の送信されたサブブロックでは、firstScanIdSbbは、サブブロックの内部の最初の走査インデックスを指定する。走査インデックスlastScanIdSbbは、サブブロックの内部の最後の走査インデックスを指定する。サブブロックの内部のすべての係数が、コーディング順序における次のサブブロックのいかなる係数がコーディングされるよりも前にコーディングされることに留意されたい。
【0105】
サブブロックのレベルは、2つのパスにおいてコーディングされる。ゼロに等しくない絶対値をもつすべての係数について、第1のパスでは、絶対値が送信され、第2のパスでは、符号が送信される。絶対値は、以下のようにコーディングされる。
【0106】
・絶対レベルがゼロよりも大きいか否かを指定する、フラグsig_flagが送信される。このフラグは、1に等しいと推論され得る場合、すなわち、以下の条件のいずれかが当てはまるとき、送信されない。
○現在の走査インデックスkが、(送信されたx座標およびy座標によって示されるような)最初の非ゼロレベルの走査インデックスに等しい。
○現在の走査インデックスが、サブブロックの内部の最後の走査インデックスであり、1に等しいcoded_subblock_flagがサブブロックのために送信されており、サブブロック内のすべての前のレベルが0に等しい。
・sig_flagが1に等しい(すなわち、絶対レベルが0よりも大きい)場合、絶対レベルが1よりも大きいか否かを指定する、別のフラグgt1_flagが送信される。
・sig_flagおよびgt1_flagが、1に等しい(すなわち、絶対レベルが1よりも大きい)場合、絶対レベルが2よりも大きいか否かを指定する、別のフラグgt2_flagが送信される。
・sig_flag、gt1_flag、およびgt2_flagが、1に等しい(すなわち、絶対レベルが2よりも大きい)場合、絶対レベルが3よりも大きいか否かを指定する、別のフラグgt3_flagが送信される。
・sig_flag、gt1_flag、gt2_flag、およびgt3_flagが、1に等しい(すなわち、絶対レベルが3よりも大きい)場合、絶対レベルが4よりも大きいか否かを指定する、別のフラグgt4_flagが送信される。
・sig_flag、gt1_flag、gt2_flag、gt3_flag、およびgt4_flagが、1に等しい(すなわち、絶対レベルが4よりも大きい)場合、絶対値-5を指定する、シンタックス要素gt3_flagが送信される。
【0107】
サブブロックのすべてのレベルのための絶対値が送信された後、符号ビットsign_flagが、ゼロに等しくない絶対レベルをもつすべての係数のために送信される。
【0108】
フラグsig_flag、gt1_flag、gt2_flag、gt3_flag、およびgt4_flagは、適応確率モデル(コンテキストとも呼ばれる)を使用してコーディングされる。これらのフラグでは、複数の適応確率モデルのうちの1つが、以下のように選択される。
【0109】
stateが、変換係数のための状態変数の現在の値であるとする(状態変数は、コーディング順序においてすでにコーディングされたレベルのパリティに基づいて決定される)。diagが、現在の走査位置の対角位置を指定するとする(diag=x+y、ただし、xおよびyは、走査位置のx座標およびy座標を指定する)。さらに、sumAbsTemplateが、図16において示された局所近傍においてすでにコーディングされた絶対値の和であるとし、対応する近傍が、そのビンが現在コーディングされている、黒で描かれている係数の、近傍に属するそれらの係数を影つきにすることによって示されている。また、numSigTemplateが、同じ局所近傍において0よりも大きい絶対レベルの数であるとする。
【0110】
sig_flagでは、選択される確率モデルが、以下に依存する。
・現在の走査位置の対角(x座標およびy座標の和によって与えられる)、
・現在の変換係数のために使用される量子化器(state>>1によって与えられる、Q0またはQ1)、
・sumAbsTemplateによって与えられた、局所近傍においてすでにコーディングされた絶対レベルの和。
【0111】
gt1_flagでは、選択される確率モデルが、以下に依存する。
・現在の走査位置の対角(x座標およびy座標の和によって与えられる)、
・現在の変換係数のために使用される量子化器(state>>1によって与えられる、Q0またはQ1)、
・sumAbsTemplate-numSigTemplateの値(すなわち、局所近傍における絶対値の和-局所近傍において0よりも大きい絶対レベルの数)。
【0112】
gt2_flag、gt3_flag、およびgt4_flagでは、同じ確率モデルが使用される。同じ確率モデルは、以下に応じて選択される。
・現在の走査位置の対角(x座標およびy座標の和によって与えられる)、
・sumAbsTemplate-numSigTemplateの値(すなわち、局所近傍における絶対値の和-局所近傍において0よりも大きい絶対レベルの数)。
【0113】
最初に2値化された(すなわち、ビンのシーケンスにマッピングされた)非バイナリシンタックス要素、およびビンが、(pmf{0.5,0.5}とともに、非適応確率モデルを使用して)算術コーディングエンジンのバイパスモードでコーディングされる。2値化では、ライスゴロムコードが使用され、ライスゴロムコードは、いわゆるライスパラメータによってパラメータ化される。ライスパラメータは、(sumAbsTemplate-numSigTemplate)の値に応じて選択される。最後に、符号フラグが、算術コーディングエンジンのバイパスモードを使用してコーディングされる。
【0114】
ひずみ(再構成品質)とビットレートとの間の極めて良好なトレードオフをもたらすビットストリームを取得するために、量子化インデックスは、ラグランジュコスト測度
【0115】
【数10】
【0116】
が最小化される方法で選択されるべきである。独立スカラー量子化の場合、そのような量子化アルゴリズム(レートひずみ最適量子化、またはRDOQと呼ばれる)については、上記で説明した。しかしながら、独立スカラー量子化と比較すると、我々は、追加の困難を有する。再構成された変換係数t'k、および、したがって、それらのひずみDk=(tk-t'k)2は、関連付けられた量子化インデックスqkのみに依存するのではなく、コーディング順序において先行する量子化インデックスの値にも依存する。
【0117】
しかしながら、我々が上記で説明したように、変換係数の間の依存性は、トレリス構造を使用して表され得る。さらなる説明のために、我々は、一例として、図10において与えられた好ましい実施形態を使用する。8つの変換係数のブロックの例のためのトレリス構造が、図17に示されている。トレリスを(左から右へ)通る経路は、量子化インデックスのための可能な状態遷移を表す。2つのノード間の各接続が、特定のサブセット(A、B、C、D)の量子化インデックスを表すことに留意されたい。我々が、量子化インデックスqkを、サブセット(A、B、C、D)の各々から選び、対応するレートひずみコスト
Jk=Dk(qk|qk-1,qk-2,...)+λ・Rk(qk|qk-1,qk-2,...)
を、2つのトレリスノード間の関連付けられた接続に割り当てる場合、全体的なレートひずみコストD+λ・Rを最小化する、量子化インデックスのベクトル/ブロックを決定する問題は、(図17において左から右へ)トレリスを通る最小コスト経路をもつ経路を発見することに等しい。我々が、(RDOQと同様の)エントロピーコーディングにおけるいくつかの依存性を無視する場合、この最小化問題は、よく知られているビタビアルゴリズムを使用して解決され得る。
【0118】
変換ブロックのための好適な量子化インデックスを選択するための例示的な符号化アルゴリズムは、以下の主なステップからなり得る。
【0119】
1. 初期状態のためのレートひずみコストを、0に等しく設定する。
2. コーディング順序におけるすべての変換係数について、以下を行う。
a. 各サブセットA、B、C、Dについて、所与の元の変換係数のためのひずみを最小化する、量子化インデックスを決定する。
b. 現在の変換係数のためのすべてのトレリスノード(0、1、2、3)について、以下を行う。
i. 先行する変換係数のための状態を現在の状態と接続する、2つの経路のためのレートひずみコストを計算する。コストは、先行する状態のためのコスト、およびDk+λ・Rkの和として与えられ、ただし、DkおよびRkは、検討されている接続に関連付けられるサブセット(A、B、C、D)の量子化インデックスを選ぶための、ひずみおよびレートを表す。
ii. 計算されたコストの最小値を現在のノードに割り当て、最小コスト経路を表さない前の変換係数の状態への接続をプルーニングする。
【0120】
注:このステップの後、現在の変換係数のためのすべてのノードは、先行する変換係数のためのいずれかのノードへの単一の接続を有する。
【0121】
3. (コーディング順序において最後の係数のための)4つの最終的なノードのコストを比較し、最小コストをもつノードを選ぶ。このノードは、トレリスを通る一意の経路に関連付けられる(すべての他の接続は、前のステップでプルーニングされた)ことに留意されたい。
4. (最後のノードによって指定された)選ばれた経路を逆順にたどり、トレリスノード間の接続に関連付けられる量子化インデックスを収集する。
【0122】
次に、本出願の実施形態について説明する。本出願の実施形態は、独立的に提示されるが、上記で説明した図への参照が行われることがある。具体的には、以下の説明では、上記の例との違いに焦点を合わせており、したがって、これらの違いが、さらなる実施形態を生じるために、上記の説明を変更するために使用されることがあり、その逆も同様であり、コンテキスト選択、量子化、逆量子化、変換、再変換、エントロピーコーディング/復号に関するものなど、上記で説明した個々のタスクが、なおさらなる実施形態を生じるために、後で説明する実施形態を変更、またはさらに指定するために、個々にまたは組み合わせて使用されることがある。
【0123】
上記で説明したような依存スカラー量子化を用いる変換コーディング[3]は、概して、従来の独立スカラー量子化を用いる変換コーディングと比較して、コーディング効率を高める。しかしながら、上記の図15において説明した依存量子化インデックス(変換係数レベル)のエントロピーコーディングには、高スループットハードウェア設計を達成することを困難にする、以下の2つの問題がある。
【0124】
・算術コーディングエンジンの通常コーディングモードでコーディングされるビン(sig_flag、gt1_flag、gt2_flag、gt3_flag、およびgt4_flag)が、バイパスモードでコーディングされるビン(シンタックス要素remainderのビン)とともにインターリーブされる。算術コーディングエンジンのバイパスモードは、通常モードよりも効率的に実装され得る。また、さらに、算術コーディングのバイパスモードは、むしろ多数のバイパスビンが連続的にコーディングされるとき、特に効率的に実装され得る。通常モードとバイパスモードとの間の頻繁な切替えは、ハードウェア実装形態にとって不利である。
【0125】
・大部分のビンのための確率モデルは、直接先行するビンの値に直接依存する。たとえば、sig_flagのために使用される確率モデルは、(前のレベルのための最後のビンが読み取られる前に知られていない)前の絶対レベルのパリティに依存する。次いで、sig_flagの値は、次のビンがgt1_flagであるか、または別のsig_flagであるかを決定する。gt1_flagが読み取られる場合、その値は、次のビンがgt2_flagであるか、sig_flagであるかを決定する、などとなる。これらの直接的な依存性は、算術復号プロセスの効率的なパイプライン化を妨げる。直接的な依存性の数を低減して、ビンの算術復号がある程度までパイプライン化され得るようにすることが好ましくなる。
【0126】
最先端の残差コーディング設計の複雑さを低減する手法は、いくつかの走査パスにおけるコーディングである。各走査パスにおいて、レベルの部分情報が送信され、完全なレベル情報が、最後の走査パスの後にのみ利用可能であるようになる。しかしながら、この設計は、依存量子化技法に適合しない。ビンの並べ替えは、以下の理由のために、依存量子化にとって簡単ではないことに留意されたい。
【0127】
・特に、フラグsig_flagについては、我々は、2つのサポートされた量子化器のための著しく異なる確率質量関数を有する。我々が、現在の変換係数のための量子化器(Q0またはQ1)を知らない場合、圧縮効率が著しく低下することになる。しかしながら、使用される量子化器は、すべての変換係数レベルのパリティに依存し、すべての変換係数レベルのパリティは、すべての前の変換係数のすべてのビンが現在の変換係数のための最初のビン(sig_flag)の前にコーディングされる場合にのみ知られる。
【0128】
・ビンのためのコンテキストモデリングもまた、局所近傍においてすでに送信された絶対レベルについての知識に依存する。典型的には、隣接する変換係数レベルについてのより良い知識によって、コーディング効率が高まる。
【0129】
率直に言えば、以下でさらに説明する実施形態は、以下の設計態様のうちの1つまたは複数によって、言及した問題を克服する。
【0130】
・サブブロック(または、ブロック)の変換係数レベルに関連するビンが、すべての走査位置上の複数のパスにおいてコーディングされる。
・走査位置上の最初のパス-または、最初の複数のパス-は、sig_flag、および、sig_flagが1に等しい場合、パリティフラグpar_flag(変換係数レベルのパリティを指定する)のコーディングを含む。最初のパスは、追加のデータを含んでもまたは含まなくてもよい。専用パリティフラグをコーディングすることによって、変換係数のために使用される量子化器が知られ、この知識が、sig_flagの効率的なコンテキストモデリングのために使用され得ることに留意されたい。
・サブブロック(または、ブロック)のためのシンタックス要素remainderのすべてのバイパスビンが、別個のパスにおいてコーディングされる。つまり、サブブロック(または、ブロック)のすべてのバイパスビンが、連続的にコーディングされる。
【0131】
以下では、第1に、パリティ情報を必要とする量子化方法に適合し、第2に、完全な絶対レベル情報のコーディングよりも少ない複雑さを受け継ぐ、設計手法について説明する。中心概念は、各絶対レベルのためのパリティ情報を、専用シンタックス要素として送信することである。異なるロケーション、たとえば、有意性フラグの前、有意性フラグの後、いずれかの「レベルの大なり(is level greater than)」情報の後などが可能である。パリティ情報の後に続くシンタックス要素のセマンティックスは、パリティシンタックス要素の送信のための選択されたロケーションに応じて交替する。パリティ情報が利用可能であるとき、残りの絶対レベル情報が、2で除算され、シンタックス要素のための異なる条件付き確率が生じ得る。
【0132】
ビンのコーディング順序、および関連するコンテキストモデリングについてのさらなる詳細について、以下で説明する。
【0133】
一実施形態では、HEVCと同様に、変換ブロックの変換係数レベルは、サブブロックに基づいてコーディングされる。最初に、変換ブロックがいずれかの非ゼロ変換係数レベルを含んでいるか否かを指定する、フラグcoded_block_flagが送信される。coded_block_flagが0に等しい(すなわち、ブロックがいかなる非ゼロレベルも含んでいない)場合、変換ブロックのためのさらなる情報が送信されない。他の場合(coded_block_flagが1に等しい)、以下が適用される。
【0134】
・コーディング順序における最初の非ゼロレベルのx座標およびy座標が送信される。図14に示されるように、送信された最初の非ゼロレベルのロケーションは、コーディング順序において識別された係数に先行するすべての変換係数(図14において白のマークが付けられている)が、ゼロに等しいと推論されることを指定する。
・コーディング順序において(送信されたx座標およびy座標によって示された)最初の非ゼロレベルを含んでいるそのサブブロックの後に続くサブブロックについて、サブブロックがいずれかの非ゼロ変換係数レベルを含んでいるか否かを指定する、フラグcoded_subblock_flagが送信される。例外として、coded_subblock_flagは、DC係数を含んでいるサブブロックのために送信されない。このサブブロックでは、coded_subblock_flagが1に等しいと推論される。
【0135】
最後に、1に等しいcoded_subblock_flagをもつすべてのサブブロックについて、ならびに、コーディング順序において最初の非ゼロレベルを含んでいるサブブロックについて、変換係数レベルの値が、以下で説明するようにコーディングされる。
【0136】
サブブロックの変換係数レベルをコーディングするための好ましい実施形態が、図18における擬似コードによって示されている。ここにおいて、firstScanIdSbbは、サブブロックの内部の最初の走査インデックスを表す。(送信されたx座標およびy座標によって示された)最初の非ゼロレベルを含んでいるサブブロックでは、firstScanIdSbbは、送信された(x,y)座標に対応する走査インデックスfirstNonZeroに等しい。他の送信されたサブブロックでは、firstScanIdSbbは、サブブロックの内部の最初の走査インデックスを指定する。走査インデックスlastScanIdSbbは、サブブロックの内部の最後の走査インデックスを指定する。
【0137】
level[k]およびabsLevel[k]=abs(level[k])が、走査位置kにおける変換係数レベル、および変換係数レベルの絶対値を表すとする。変換係数レベルのコーディングは、サブブロックの内部の走査位置上の4つのパスにおいて進む。
【0138】
第1のパスでは、バイナリシンタックス要素sig_flag、par_flag、およびgt1_flagが送信される。
【0139】
・バイナリシンタックス要素sig_flag[k]は、走査位置kにおける変換係数レベルの絶対値が0よりも大きいか否かを指定し、すなわち、sig_flag[k]=(absLevel[k]>0?1:0)である。
【0140】
sig_flagは、1に等しいと推論され得る場合、すなわち、以下の条件のいずれかが当てはまるとき、送信されない。
○現在の走査インデックスkが、(送信されたx座標およびy座標によって示されるような)最初の非ゼロレベルの走査インデックスに等しい。
○現在の走査インデックスが、サブブロックの内部の最後の走査インデックスであり、1に等しいcoded_subblock_flagがサブブロックのために送信されており、サブブロック内のすべての前のレベルが0に等しい。
【0141】
・sig_flag[k]が1に等しい場合、バイナリシンタックス要素par_flag[k]、およびgt1_flag[k]が送信される。
【0142】
par_flag[k]は、変換係数レベルのパリティを指定する。本発明の好ましい実施形態では、par_flag[k]は、絶対値-1のパリティ(変換係数レベルの逆パリティを表す)に等しく設定される。
par_flag[k]=(absLevel[k]-1)&1
【0143】
gt1_flag[k]は、(sig_flag[k]=1およびpar_flag[k]の値によって与えられた)残りがゼロよりも大きいか否かを指定し、
gt1_flag[k]=(((absLevel[k]-1)>>1)>0?1:0)
ただし、演算子「>>」は、右へのビットシフト(すなわち、2による整数除算)を指定する。
【0144】
第2のパスでは、バイナリシンタックス要素gt2_flagが送信される。
・バイナリシンタックス要素gt2_flag[k]は、そのための1に等しいgt1_flag[k]が第1のパスにおいて送信された、それらの走査位置kのためにのみコーディングされる。gt2_flag[k]は、(sig_flag[k]=1およびpar_flag[k]の値によって与えられた)残りが1よりも大きいか否かを指定する。
gt2_flag[k]=(((absLevel[k]-1)>>1)>1?1:0)
【0145】
第3のパスでは、シンタックス要素remainderが送信される。
・シンタックス要素remainder[k]は、そのための1に等しいgt2_flag[k]が第2のパスにおいて送信された、それらの走査位置kのためにのみコーディングされる。remainder[k]は、(sig_flag[k]=1、gt1_flag[k]=1、gt2_flag[k]=1、およびpar_flag[k]の値によって与えられた)絶対値の残りを指定する。
remainder[k]=((absLevel[k]-1)>>1)-2
【0146】
最後に、第4のパスでは、シンタックス要素sign_flagが送信される。
・シンタックス要素sign_flag[k]は、そのための1に等しいsig_flag[k]が第1のパスにおいて送信または推論された、それらの走査位置kのためにのみコーディングされる。sign_flag[k]は、変換係数レベルが負であるか否かを指定する。
sign_flag[k]=(level[k]<0?1:0)
【0147】
デコーダ側では、シンタックス要素sig_flag[k]、par_flag[k]、gt1_flag[k]、gt2_flag[k]、remainder[k]、およびsign_flag[k]が、同様にビットストリームから復号される。送信されないシンタックス要素par_flag[k]、gt1_flag[k]、gt2_flag[k]、remainder[k]、およびsign_flag[k]のすべての値が、0に等しいと推論されることに留意されたい。sig_flag[k]が、1に等しいcoded_subblock_flagをもつサブブロックのために送信されない場合では、その値が1に等しいと推論される。
【0148】
コーディングおよび推論された値が与えられると、走査位置kにおける変換係数レベルの絶対値は、次のように再構成され得る。
absLevel[k]=
sig_flag[k]+par_flag[k]+2*(gt1_flag[k]+gt2_flag[k]+remainder[k])
【0149】
また、0に等しくない絶対レベルのためのsign_flag[k]が与えられると、変換係数レベルは、以下によって与えられる。
level[k]=(sign_flag[k]?-absLevel[k]:absLevel[k])
【0150】
上記で説明した特定の実施形態は、たとえば、以下の1つまたは複数の態様において変更され得る。
【0151】
・変換係数レベルのコーディングが、サブブロックに基づかないことがある。つまり、変換係数レベルのコーディングをサブブロックに分割する代わりに、変換ブロックのすべての変換係数レベルが一度にコーディングされ得る。この場合、上記で説明したパスは、完全な変換ブロックの内部のすべての走査位置上のパスを表す。この手法は、依然として、coded_block_flagのコーディング、ならびに、(たとえば、x位置およびy位置を送信することによる、または何らかの他の手段による)コーディング順序における最初の非ゼロレベルの走査位置の指示と組み合わせられ得る。この手法はまた、大きい領域の内部のすべての変換係数レベルが0に等しいことを指定する(coded_block_flagと同様の)指示と組み合わせられ得る。これらの領域は、サブブロック、連続した走査位置、または変換係数ロケーションの任意の他の明確なサブセットを表し得る。対応する指示は、実際の変換係数レベルの前にコーディングされ得るか、または第1のパスのビンとともにインターリーブコーディングされ(coded interleaved)得る。
・フラグpar_flagおよびgt1_flagフラグのコーディング順序が、変更され得る。これらのフラグは、互いに依存せず、したがって、par_flagがgt1_flagの前にコーディングされ得るか、またはgt1_flagがpar_flagの前にコーディングされ得ることに留意されたい。
【0152】
・パリティフラグpar_flagの意味が変更され得る。絶対レベル-1のパリティをシグナリングする代わりに、絶対レベルのパリティが送信され得る(絶対レベル-2のパリティと同じである)。
【0153】
・gt1_flagの意味が変更され得る。(absLevel-1)>>1が0よりも大きいか否か(上記参照)をシグナリングする代わりに、我々は、(absLevel-1-par_flag)が0よりも大きいか否かをシグナリングすることもできる。または、par_flagの意味が、上記で示したように変更される場合、gt1_flagは、(absLevel-1)が0よりも大きいか否かを示し得る。両方の場合において、再構成の公式が、以下のように変更になり、
absLevel[k]=sig_flag[k]+par_flag[k]+gt1_flag[k]+
2*(gt2_flag[k]+remainder[k])
また、gt2_flagおよびremainderの意味が、以下のように変更になる。
gt2_flag[k]=(((absLevel[k]-2)>>1)>0?1:0)
remainder[k]=((absLevel[k]-2)>>1)-1
【0154】
たとえば、図19を見ると、その場合、フラグがパス上に異なるように分散されており、量子化インデックスの再構成は、absQIdx=sig_flag+gt1_flag+par_flag+2*(gt3_flag+remainder)を伴い、図19に示された第1のパスの後に実行可能な部分的再構成は、absQIdx1=sig_flag+gt1_flag+par_flag+2*gt3_flagである。
【0155】
・第1のパスが、sig_flagおよびpar_flagのみがこのパスにおいて送信される方法で変更され得る。gt1_flagが、第2のパスに移動され得るか、または、説明した第1のパスと第2のパスとの間の別個のパスにおいて送信され得る。
代替的に、追加のフラグ(たとえば、gt2_flag)が、第1のパスの一部としてコーディングされ得る。
【0156】
・第2のパス(gt2_flagを伴う)が省略され得、その場合、シンタックス要素remainderを伴うパスが、第1のパスの後に直接コーディングされることになる。一実施形態では、第2のパスが省略され、その理由は、gt2_flagが、第1のパスの一部としてすでにコーディングされているからである(上記参照)。別の実施形態では、第2のパスが省略され、その理由は、gt2_flagがまったく送信されないからである。後者の場合、シンタックス要素remainderの意味が、以下のように変更になり、
remainder[k]=((absLevel[k]-1)>>1)-1
また、再構成の公式が、以下のように変更になり、
absLevel[k]=
sig_flag[k]+par_flag[k]+2*(gt1_flag[k]+remainder[k])
または、gt1_flagの意味が、上記で説明したように変更になるとき、再構成の公式が、以下のように変更になる。
absLevel[k]=
sig_flag[k]+par_flag[k]+gt1_flag[k]+2*remainder[k]
【0157】
代替的に、第2のパスが、追加のフラグを含み得る。たとえば、以下の意味をもつ追加のgt3_flag
gt3_flag[k]=(((absLevel[k]-1)>>1)>2?1:0)
が送信され得る。または、上述のように、gt1_flagが、第1のパスから第2のパスに移動され得る。これはまた、gt3_flagと組み合わせられ得る。
【0158】
現在の走査位置のために送信されるgtx_flagの最大数が、すでにコーディングされたデータに基づいて(たとえば、すでにコーディングされたデータに基づいて導出され得る、局所近傍における絶対値の和に基づいて)、適応的に決定されることも可能である。
【0159】
・通常コード化ビンを伴う1つまたは複数の追加のパスが、第2のパス(gt2_flagを伴う)と第3のパス(シンタックス要素remainder)との間でコーディングされ得る。たとえば、gt3_flagが、追加のパスにおいて送信され得る。
【0160】
・シンタックス要素remainderのバイパスコード化ビン、およびバイパスコード化sign_flagが、単一のパスにおいてインターリーブコーディングされ得る。
【0161】
上記でリストされた点のうちの2つ以上もまた、組み合わせられ得る。
【0162】
上記の実施形態を手短に要約しながら、以下で、さらなる実施形態について、再度説明する。そうする際に、我々は、上記で説明した図を指し示す参照符号を使用する。
【0163】
具体的には、上記の実施形態では、変換ブロック10がサブブロック14に再分割されてもまたはされなくてもよい、変換係数12のブロック(10)を復号するための概念について説明した。
【0164】
この復号は、パスにおいて行われる。変換係数を走査する1つまたは複数の第1のパスにおいて、変換係数の量子化インデックスがゼロであるか否かを示す、現在の変換係数のための有意性フラグの復号、および、変換係数のパリティを示す、変換係数のためのパリティフラグの復号が行われる。図における擬似コードは、「コーディング」を「復号」に変えることによって、同様に復号手順を示すので、今述べたタスクが、16および18でそれぞれ行われる。それらのタスクは、図18では、1つの第1のパス20中に含まれているが、代替物によれば、2つの別個のパス上に分散され得る。タスク16および18の両方が、コンテキスト適応型バイナリ算術復号であり得る、コンテキスト適応型エントロピー復号を使用して行われる。
【0165】
変換係数を走査する1つまたは複数の第2のパス22において、量子化インデックスがゼロでない変換係数のための1つまたは複数の大なりフラグ(greatness flag)の復号24が行われる。図18では、2つのそのようなパス22'および22''がある。1つまたは複数の大なりフラグパス22は、1つまたは複数の第1のパス20とは別個である必要はない。図18では、gt1_flag復号24'がパス22'において行われ、パス22'は、同時に第1のパス20であり、gt2_flag復号24''が、別個のパス22''において行われる。図19は、1つまたは複数の第1のパス20、および1つまたは複数の第2のパス22が、一致し得ることを示す。ここで、図19では、復号16、18および24が同じパスにおいて行われる。図19では、有意性/パリティパス20ならびに大なりフラグパス22として働くそのパスを示す中括弧によって示された、例示的に1つのそのようなパスがある。再び、タスク24が、コンテキスト適応型バイナリ算術復号であり得る、コンテキスト適応型エントロピー復号を使用して行われる。図18および図19では、例示的に2つの大なりフラグが復号されるが、これは単なる一例である。
【0166】
1つまたは複数の第3のパス26、27、すなわち、図18および図19の場合には、パス20、22に対して別個である、2つの相互に別個のパスにおいて、すなわち、その大なること(greatness)が大なることを確認/承認するそれらの係数のうちの1つであることによって示されるなど、その1つまたは複数の大なりフラグが正である変換係数の量子化インデックスの残りの復号28と、量子化インデックスがゼロでない変換係数の量子化インデックスの符号の復号30とが、行われる。タスク28および30は、等確率性バイナリ算術復号(equiprobability binary arithmetic decoding)であり得る、等確率性エントロピー復号(equiprobability entropy decoding)を使用して行われる。具体的には、復号28は、2値化のビン、および、その1つまたは複数の大なりフラグが正である変換係数の量子化インデックスの絶対値の残りの2値化のビンの等確率性バイナリ算術復号を使用することを伴い得る。
上記の方法のいずれかで、パスを分離する利点は、上記で動機づけされており、たとえば、逆量子化および/またはコンテキスト導出の実行における以下の可能性の説明からも明らかになるが、その詳細は、後続の特許請求の範囲を限定しないものと見なされるべきである。その利点は、依存量子化、および、コンテキスト適応型バイナリ算術コーディングなどのコンテキスト適応型エントロピーコーディングを使用して、有効にコーディング可能である、変換ブロックの説明の基礎を提供することにある。
【0167】
図18および図19に示されるように、1つの第1のパス20において、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のための有意性フラグの復号16が行われ得、次いで、32でチェックされるとき、有意性フラグが、現在走査されている変換係数の量子化インデックスがゼロでないことを示す場合、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のためのパリティフラグの復号18が行われる。代替的に、別個の第1のパス20が、両方のフラグのために使用されていることがある。1つまたは複数の第2のパス22、すなわち、図18における22'および22''、ならびに図19の場合には、同時にパス20である22のうちの1つにおいて、現在走査されている変換係数について、その状況が32でチェックされる、現在走査されている変換係数の量子化インデックスがゼロでない場合、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のための大なりフラグの復号24'、24''が行われる。この第1の大なりフラグは、上記で説明したように、異なる定義を有することがあり、gt1_flagまたはgt3_flagであり得ることに留意されたい。図19の場合には復号18、ならびに、図18および図19の場合には復号24''さえもが、その状況が34でチェックされる、現在走査されている変換係数のための大なりフラグgt1_flagが正であった場合にのみ、行われる。すなわち、現在走査されている係数について、フラグのコーディング/復号の順序は、有意性フラグ、大なりフラグgt1_flag、パリティフラグ、および図18の場合には、大なりフラグgt2_flag、および図19の場合には、大なりフラグgt3_flagである。
【0168】
上述のように、言及したフラグからの、あらかじめ決定された変換係数についての、量子化インデックスの計算は、図18および図19の場合には、和を伴うことがあり、その加数が、以下によって形成され、すなわち、1つの加数が、あらかじめ決定された変換係数の有意性フラグによって形成され、1つの加数が、あらかじめ決定された変換係数のパリティフラグによって形成され、1つの加数が、あらかじめ決定された変換係数の残りと、1つの大なりフラグ、すなわち、図18の場合にはgt2_flag、および図19の場合にはgt3_flagとの和の2倍によって形成される。
【0169】
1つまたは複数の第2のパス22、すなわち、図18における22''、および図19の場合には、同時にパス20である22のうちの1つにおいて、現在走査されている変換係数について、現在走査されている変換係数の前の大なりフラグが正である場合、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のためのさらなる大なりフラグ、すなわち、図18の場合にはgt2_flag、および図19の場合にはgt3_flagの、復号24''が行われる。図18の場合には、あらかじめ決定された変換係数について、量子化インデックスの絶対値が、和に従って計算され、その加数が、あらかじめ決定された変換係数の有意性フラグである1つの加数と、あらかじめ決定された変換係数のパリティフラグである1つの加数と、あらかじめ決定された変換係数の残り、第1の大なりフラグ、および第2の大なりフラグの和の2倍である1つの加数とによって形成される。しかしながら、たとえば、排他的ではないが、図19によるものなど、大なりフラグの異なる定義を使用すると、その場合、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のための有意性フラグの復号16が行われ、次いで、32でチェックされるとき、有意性フラグが、現在走査されている変換係数の量子化インデックスがゼロでないことを示す場合、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のための大なりフラグgt1_flagの復号24'が行われ、次いで、34でチェックされるとき、この大なりフラグが正である場合、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、パリティフラグの復号18と、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のためのさらなる大なりフラグgt3_flagの復号24''とが行われ、現在のものなど、あらかじめ決定された変換係数のための量子化インデックスの絶対値が、和に従って計算され、その加数が、あらかじめ決定された変換係数の有意性フラグである1つの加数と、あらかじめ決定された変換係数のパリティフラグである1つの加数と、あらかじめ決定された変換係数の大なりフラグgt1_flagである1つの加数と、あらかじめ決定された変換係数の残り、およびさらなる大なりフラグgt3_flagの和の2倍である1つの加数とによって形成される。第1の大なりフラグおよび第2の大なりフラグの復号24'および24''は、図18に示されるように別個の第2のパス22'および22''において、または図19に示されるように1つにおいて行われ得る。
【0170】
図12の代替として、1つまたは複数の第1のパスのうちの1つにおいて、現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、現在走査されている変換係数のための有意性フラグを復号16すること、および次いで、1つの第1のパスの後、1つまたは複数の第2のパスにおいて、コンテキスト適応型エントロピー復号を使用して、変換係数のための2つ以上の大なりフラグのシーケンスを復号24'、24''すること、および次いで、1つまたは複数の第2のパスの後、1つまたは複数の第1のパスのうちのさらなる1つにおいて、等確率性エントロピー復号を使用して、量子化インデックスがゼロでない変換係数のためのパリティフラグを復号することが可能となる。
【0171】
すでに上述したように、コーディング/復号は、変換係数がサブブロックごとに復号されるように、サブブロックにおいて行われ得、その場合、サブブロックの走査位置上のすべてのパスが、次のサブブロックの第1のパスが復号される前に、復号される。
【0172】
その2値化、すなわち、すべての有意性フラグ、パリティフラグ、および大なりフラグ、ならびに残りおよび符号が復号された、各係数は、それぞれの変換係数について、複数の再構成レベルセット、すなわち、上記の例では、図7および図10における2つの「セット0」および「セット1」の中から、再構成レベルのセットを選択することによって、量子化インデックスがゼロでない各変換係数の量子化インデックスを逆量子化することによって、再構成され得る。これは、「setId[state]」による、現在の状態stateの使用によって行われる。次に、stateが、走査順序に沿って、それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、すなわち、たとえば、図11における40で、後者のパリティによって、前に逆量子化された係数のために使用されたstateを更新することによって、導出される。選択の後、それぞれの変換係数を、setIdによってインデックス付けされる、再構成レベルの選択されたセットのうちの1つのレベル上に逆量子化することが行われる。このレベルは、それぞれの変換係数の量子化インデックスによってインデックス付けされたものである。説明したように、それぞれの変換係数についての、再構成レベルセットの中からの、再構成レベルのセットの選択は、状態遷移がそれぞれの変換係数のために仮定する状態に基づいて、すなわち、図11における42で、複数の再構成レベルセットの中から、再構成レベルの正しいセットを一意に選択すること、および、それぞれの変換係数の量子化インデックスのパリティに応じて、走査順序において後続する変換係数のための状態遷移の状態を更新40することによって、状態遷移を使用して行われる。したがって、走査順序は、ここでは、パス20、22、27、および30のために使用される同じものである。例については、上記で提示した。1つが、図4において、矢印44によって例示されている。やはり、サブブロックごとの係数の復号と同じように、サブブロック再分割は随意であり、すなわち、各パスは、次に進む前に、1つのサブブロックのためのすべてのパスを実行するのではなく、代替的に、次のパスが開始される前に、続けてサブブロックをトラバースし得る。状態遷移のための4つの異なる状態が存在し得る。遷移は、後に続く係数のための状態を生じるために、それへのルックアップが実行される、Table 1(表1)に示されるようなテーブルを使用して、および45で、または、たとえば、状態が46で現れる図12に示されるようなトレリス線図を使用して、実装され得る。
【0173】
上記で説明したように、複数の再構成レベルセットは、図7および図10に示されるように、あらかじめ決定された量子化ステップサイズΔによってパラメータ化され得る。あらかじめ決定された量子化ステップサイズについての情報が、データストリームにおいて搬送され得る。再構成レベルセットの各々は、共通の水平軸tを使用して、図7および図10に示されるように、複数の再構成レベルセットについて一定であるか、またはその中で等しい、このあらかじめ決定された量子化ステップサイズの倍数からなり得る。再構成レベルセットの数は、図7および図10に示されるように、2つであり得、第1の再構成レベルセットは、図7および図10におけるセット0など、ゼロ、およびあらかじめ決定された量子化ステップサイズの偶数の倍数を備え得、第2の再構成レベルセットは、図7および図10におけるセット1のように、ゼロ、およびあらかじめ決定された量子化ステップサイズの奇数の倍数を備え得る。Table 1(表1)に示されるように、第1の再構成レベルセットは、状態値0および1のために選択され得、第2の再構成レベルセットは、状態値2および3のために選択され得る。
【0174】
上記の依存量子化方式が使用される場合、ある係数のパリティの復号18の後、次の係数の量子化セットを定義する状態変数stateが定義されるか、または決定され得ること、および、このstateが、次の係数の有意性およびパリティフラグをコーディングするために使用され得ることに留意されたい。
【0175】
次に、我々は、復号16、18、および24を実行するためのコンテキスト選択に注目し、有利なコンテキストモデリング概念について説明する。
【0176】
好ましい実施形態では、通常コード化ビンのために使用される適応確率モデルが、複数の適応確率モデルのセットの中で選ばれる。確率モデルは、コンテキストとも呼ばれ、確率モデルの選択は、コンテキストモデリングとも呼ばれる。好ましい実施形態では、選択された確率モデルは、以下の特性のうちの1つまたは複数に依存する。
【0177】
・色平面。典型的には、ルーマ変換係数およびクロマ変換係数は、異なる統計的特性を有し、したがって、典型的には、確率モデルの異なるセットがルーマおよびクロマのために使用される場合、コーディング効率を高めることができる。確率モデルの別個のセットが、各色平面(たとえば、Y、Cb、Cr)のために使用されることも可能である。
【0178】
・変換ブロックの内部のx座標およびy座標の和によって与えられる対角位置、diag=x+y。平均すると、変換係数の絶対値は、対角位置diagの減少とともに増加する。その理由のために、典型的には、対角位置が2つ以上のクラスに区分され、確率モデルの別個のセットが各クラスのために使用される場合、圧縮効率を高めることができる。
【0179】
・現在の変換係数に適用される状態変数。上述のように、2つの量子化器Q0およびQ1は、許容可能な再構成レベルの異なるセットを有する。結果として、2つの量子化器のための確率質量関数は、著しく異なる。この態様は、sig_flag(変換係数レベルが0に等しくないか否かを示す)のための確率に、最大の影響を与える。したがって、確率モデルの異なるセットが2つの量子化器のために使用される場合、圧縮効率を高めることができる。この概念の拡張として、確率モデルの異なるセットが、(4つの可能な値、すなわち、0、1、2、3を取ることができる)状態変数の異なる値のために使用され得る。または、確率モデルの異なるセットが、状態変数の定義された関数の異なる値のために使用され得る。2つの異なる量子化器のために確率モデルの異なるセットを使用することは、後者の手法の特殊な場合を表すことに留意されたい。
【0180】
状態変数への依存性は、すべてのビンにとって好適であるとは限らないことがあり、その理由は、それによって確率モデルの総数が増加し、したがって、確率適応の速度が低下するからである。したがって、状態変数の関数の異なる値のための確率モデルの異なるセットは、通常コード化ビンのサブセットのためにのみ使用され得る。たとえば、sig_flagのためのみ。または、sig_flagおよびpar_flag(または、任意の他のサブセット)のためのみ。
【0181】
・現在の走査位置の周囲の局所近傍の内部のアクティビティ測度。典型的には、現在の変換係数の絶対値があるしきい値を超える尤度は、局所近傍の内部のアクティビティとともに増加しており、ただし、アクティビティは、たとえば、近傍における絶対変換係数レベルの和を指す。この態様は、異なる局所アクティビティ測度のために異なる確率測度を使用することによって、圧縮効率を高めるために活用され得る。しかしながら、我々は、複数のパスにおいて絶対値をコーディングするので、あるパスにおいて利用可能であるそれらのデータのみが使用され得ることに留意されたい。
【0182】
以下では、我々は、コンテキストモデリング(確率モデルの選択)のための例示的なセットアップについて、より詳細に説明する。この例は、図18において指定されたビンのコーディング順序を参照する。しかしながら、この概念は、この特定の例に制限されず、たとえば、図19が言及するものなど、上記で説明したコーディング順序の変更に容易に移され得る。
【0183】
局所アクティビティ測度を導出するために、図16に示された局所テンプレートが、好ましい実施形態において使用され得る。異なるテンプレート、たとえば、より多いまたは少ない隣接する走査位置を含むテンプレートを使用することも可能である。典型的には、使用されるテンプレートが、コーディング順序44において現在の走査位置に先行する走査位置のみを含む場合、好ましい。
【0184】
T(k)が、局所テンプレート52における走査位置のセットを示すとする。次いで、sumAbsが、以下によって与えられる、局所テンプレートにおける絶対値の和であるとする。
【0185】
【数11】
【0186】
さらに、numSigが、局所テンプレートにおいてゼロよりも大きい絶対レベルの数であるとする。
【0187】
【数12】
【0188】
現在の変換ブロックの外部の位置を参照するabsLevel[i]およびsig_flag[i]の値は、0に等しいと推論される。
【0189】
測度numSigは、sig_flagの値に基づいて、すでに導出され得る。しかしながら、絶対レベルの和sumAbsは、第3の(および、第4の)パス、26および27においてのみ利用可能である。第1のパス20および第2のパス22''において、情報のサブセットのみがコーディングされ、したがって、情報のこのサブセットのみが、コンテキストモデリングのために使用され得る。
【0190】
図18の擬似コードにおいて示された好ましい実施形態によれば、ビンsig_flag、par_flag、およびgt1_flagが、第1のパス20/22'において送信される。ある変換係数レベルについてのこれらのデータに基づいて、我々は、以下のように結論を下すことができる。
【0191】
・sig_flagが0に等しい場合、変換係数レベルが0に等しい:level=0、
・sig_flagが1に等しく、par_flagが0に等しく、gt1_flagが0に等しい場合、変換係数レベルが1に等しい:level=1、
・sig_flagが1に等しく、par_flagが1に等しく、gt1_flagが0に等しい場合、変換係数レベルが2に等しい:level=2、
・sig_flagが1に等しく、par_flagが0に等しく、gt1_flagが1に等しい場合、変換係数レベルが3以上である:level>=3、
・sig_flagが1に等しく、par_flagが1に等しく、gt1_flagが1に等しい場合、変換係数レベルが4以上である:level>=4。
【0192】
したがって、我々は、以下に従って、絶対変換係数レベルのための最小値を少なくとも導出することができる。
minAbs1[k]=sig_flag[k]+par_flag[k]+2*gt1_flag[k]
【0193】
第2のパスにおいて、我々は、gt2_flagのその値をさらに知り、したがって、以下の最小値を導出することができる。
minAbs2[k]=sig_flag[k]+par_flag[k]+2*(gt1_flag[k]+gt2_flag[k])
【0194】
最小絶対値の対応する和は、sumAbs1およびsumAbs2によって示され、以下によって与えられる。
【0195】
【数13】
【0196】
および
【0197】
【数14】
【0198】
現在の変換ブロックの外部の位置を参照するminAbs1[i]およびminAbs2[i]の値は、0に等しいと推論される。
【0199】
このコンテキストでは、minAbs1[k]およびminAbs2[k](ならびに、結果として、sumAbs1[k]およびsumAbs2[k]のための最終的な値)を計算するための正確な式は、どのビンが第1のパス中に含まれるか、ならびにこれらのビンのセマンティックス(すなわち、意味)に依存することに留意されたい。たとえば、gt2_flag[k]が第1のパス中に含まれる場合、またはgt1_flag[k]の意味が変更される場合(両方の代替物については、上記で説明した)、minAbs1[k]を計算するための式は、それに応じて変更されなければならない。たとえば、この最小値は、図19の場合、第1のパス20/22の間の、minAbs1=sig_flag+gt1_flag+par_flag+2*(gt3_flag+remainder)である。いずれの場合も、minAbs1[k]は、第1のパスにおいてコーディングされるビンに基づいて導出され得る、絶対レベルの最小値を表す。
【0200】
値sumAbs、numSig、sumAbs1、およびsumAbs2、またはこれらの値の関数が、コンテキストモデリングのための局所アクティビティ測度として使用され得る。詳細な例について、以下で説明する。
【0201】
代替実施形態では、値sumAbs、minAbs1、およびminAbs2は、送信された変換係数レベルに基づいて決定されるのではなく、量子化ステップサイズのための関連付けられた乗算係数(絶対値)に基づいて決定される。これらのデータは、変換係数レベル、および関連付けられた状態変数に基づいて導出され得る。絶対レベルabsLevel[k]、および関連付けられた状態変数state[k]が与えられると、量子化ステップサイズのための乗算係数qIdx[k]は、以下に従って決定され得る。
qIdx[k]=2*absLevel[k]-(state[k]>>1)
【0202】
minAbs1およびminAbs2と置き換わる同様の値が、以下に従って導出され得る。
minQIdx1[k]=2*minAbs1[k]-(state[k]>>1)
minQIdx2[k]=2*minAbs2[k]-(state[k]>>1)
【0203】
これらの値が与えられると、sumAbs、sumAbs1、およびsumAbs2と置き換わる代替値sumQAbs、sumQAbs1、およびsumQAbs2が、以下に従って導出され得る。
【0204】
【数15】
【0205】
以下の説明では、我々は、値sumAbs、sumAbs1、およびsumAbs2を使用する。しかしながら、これらの値が、値sumQAbs、sumQAbs1、およびsumQAbs2で置き換えられ得ることに留意されたい。値sumQAbs、sumQAbs1、およびsumQAbs2を使用するとき、コンテキスト導出において、これらの値の異なる関数を使用することが好ましくなり得る。
【0206】
有意性フラグsig_flagのためのコンテキストモデリング
現在のsig_flagをコーディングするための適応確率モデルが、確率モデルのセットの中で選ばれる。簡単のために、利用可能な確率モデルが4次元配列において編成されると仮定し、
probModelSig[cSig][sSig][dSig][aSig]
ただし、cSigは、現在のカラーチャネルに依存するインデックスを指定し、sSigは、状態変数に依存するインデックスを指定し、dSigは、変換ブロックの内部の対角位置(またはより一般的には、xおよびyロケーション)に依存するインデックスを指定し、aSigは、局所アクティビティ測度に依存するインデックスを指定する。確率モデルの実際の編成は、実際の実装形態の一態様である。確率モデルは、たとえば、1-d配列として編成され得、その場合、組み合わせられたインデックスが、cSig、sSig、dSig、およびaSigの値に基づいて導出され得る。
【0207】
以下では、我々は、インデックスcSig、sSig、dSig、およびaSigを導出するための例示的な方法について説明する。しかしながら、これらのインデックス(または、インデックスの一部)を導出する異なる方法が可能であることに留意されたい。
【0208】
カラーチャネルインデックスcSig
好ましい実施形態では、現在のカラーチャネルが、ルーマチャネル(または、より一般には、第1のカラーチャネル)を表す場合、およびその場合にのみ、カラーチャネルインデックスcSigが、0に等しく設定される。また、現在のカラーチャネルが、クロマチャネル(または、より一般には、第1のカラーチャネルではない)を表す場合、およびその場合にのみ、cSigが1に等しく設定される。
cSig=(現在のチャネルがルーマであるか? 0:1)
【0209】
代替として、cSigは、ルーマチャネルについては0に等しく、Cbチャネルについては1に等しく、およびCrチャネルについては2に等しく設定され得る。
【0210】
状態インデックスsSig
好ましい実施形態では、インデックスsSigが、以下に等しく設定される。
【0211】
【数16】
【0212】
つまり、確率モデルの1つのセットが、0および1に等しい状態変数のために使用され、第2のセットが、2に等しい状態変数のために使用され、第3のセットが、3に等しい状態変数のために使用される。
【0213】
代替として、インデックスsSigは、状態変数に等しく設定され得(sSig=state)、その場合、確率モデルの別個のセットが、状態変数の各可能な値のために使用されることになる。または、別の代替として、インデックスsSigは、sSig=state>>1に従って設定され得、その場合、コンテキストモデルの別個のセットが、2つの量子化器Q0およびQ1の各々のために使用されることになる(stateが0または1に等しいとき、量子化器Q0が使用され、stateが2または3に等しいとき、量子化器Q1が使用されることに留意されたい)。
【0214】
ロケーションインデックスdSig
好ましい実施形態では、インデックスdSigが、以下のように設定される。
【0215】
・インデックスcSigが0に等しい(すなわち、現在のカラーチャネルがルーマチャネルを表す)場合、dSigが以下に従って設定される。
【0216】
【数17】
【0217】
・インデックスcSigが1に等しい(すなわち、現在のカラーチャネルがクロマチャネルを表す)場合、dSigが以下に従って設定される。
【0218】
【数18】
【0219】
ここで、diagは、diag=x+yによって与えられる対角位置を表し、ただし、xおよびyは、変換ブロックの内部の現在の走査位置のx座標およびy座標を表す。
【0220】
代替的に、対角位置の任意の他のクラスタリングが可能である。または代替的に、変換ブロックの内部の(x,y)ロケーションが、複数のクラスに区分され得、インデックスdSigが、対応するクラスインデックスに等しく設定され得る。
【0221】
局所アクティビティインデックスaSig
最後に、本発明の好ましい実施形態では、インデックスaSigが、以下に従って設定され、
aSig=min(5,sumAbs1)
ただし、sumAbs1は、第1のパス(上記参照)において送信されたデータによって与えられる、局所テンプレートにおける最小絶対変換係数レベルの和を指す。代替として、sumAbs1の異なる最大値または異なる関数が使用され得る。
【0222】
パリティフラグpar_flagのためのコンテキストモデリング
現在のpar_flagをコーディングするための適応確率モデルが、確率モデルのセットの中で選ばれる。同様に、有意性フラグの場合のように、利用可能な確率モデルが4次元配列において編成されると仮定し、
probModelPar[cPar][sPar][dPar][aPar]
ただし、cParは、現在のカラーチャネルに依存するインデックスを指定し、sParは、状態変数に依存するインデックスを指定し、dParは、変換ブロックの内部の対角位置(またはより一般的には、xおよびyロケーション)に依存するインデックスを指定し、aParは、局所アクティビティ測度に依存するインデックスを指定する。
【0223】
カラーチャネルインデックスcPar
同様に、有意性フラグの場合のように、好ましい実施形態では、カラーチャネルインデックスcSigが、以下に従って設定される。
cPar=(現在のチャネルがルーマであるか? 0:1)
代替的に、cSigについて上記で説明した代替物が使用され得る。
【0224】
状態インデックスsPar
好ましい実施形態では、インデックスsParが、0に等しく設定される。つまり、選ばれた確率モデルは、状態変数に依存しない。
代替的に、sSigについて上記で説明した方法のいずれかが使用され得る。
【0225】
ロケーションインデックスdPar
好ましい実施形態では、インデックスdParが、以下のように設定される。
・インデックスcParが0に等しい(すなわち、現在のカラーチャネルがルーマチャネルを表す)場合、dParが以下に従って設定される。
【0226】
【数19】
【0227】
・インデックスcParが1に等しい(すなわち、現在のカラーチャネルがクロマチャネルを表す)場合、dParが以下に従って設定される。
【0228】
【数20】
【0229】
ここで、diagは、diag=x+yによって与えられる対角位置を表し、ただし、xおよびyは、変換ブロックの内部の現在の走査位置のx座標およびy座標を表す。ブール変数firstNonZeroは、現在の走査位置がコーディング順序において最初の非ゼロレベルの走査位置(すなわち、コード化ブロックフラグの後に送信されるx座標およびy座標(または、同様の手段)によって識別される位置)を表すか否かを指定する。したがって、コーディング順序において最初の非ゼロレベルのために、確率モデルの異なるセットが使用される(対角位置とは無関係)。
代替的に、対角位置の任意の他のクラスタリングが可能である。または代替的に、変換ブロックの内部の(x,y)ロケーションが、複数のクラスに区分され得、インデックスdParが、対応するクラスインデックスに等しく設定され得る。
【0230】
局所アクティビティインデックスaPar
最後に、本発明の好ましい実施形態では、インデックスaParが、以下に従って設定され、
aPar=min(4,sumAbs1-numSig)
ただし、sumAbs1は、第1のパス(上記参照)において送信されたデータによって与えられる、局所テンプレートにおける最小絶対変換係数レベルの和を指す。また、numSigは、局所テンプレート(上記の説明参照)における非ゼロレベルの数(すなわち、1に等しいsig_flagの数)を指す。代替として、sumAbs1およびnumSigの異なる最大値または異なる関数が使用され得る。
【0231】
フラグgt1_flagのためのコンテキストモデリング
現在のgt1_flagをコーディングするための適応確率モデルが、確率モデルのセットの中で選ばれる。同様に、有意性フラグの場合のように、利用可能な確率モデルが4次元配列において編成されると仮定し、
probModelGt1[cGt1][sGt1][dGt1][aGt1]
ただし、cGt1は、現在のカラーチャネルに依存するインデックスを指定し、sGt1は、状態変数に依存するインデックスを指定し、dGt1は、変換ブロックの内部の対角位置(またはより一般的には、xおよびyロケーション)に依存するインデックスを指定し、aGt1は、局所アクティビティ測度に依存するインデックスを指定する。
【0232】
本発明の好ましい実施形態では、インデックスcGt1、sGt1、dGt1、およびaGt1が、上記で説明したインデックスcPar、sPar、dPar、aParと同様の方法で導出される。
cGt1=cPar
sGt1=sPar
dGt1=dPar
aGt1=aPar
【0233】
同じコンテキストインデックスを使用することは、同じ確率モデルを使用することとは異なることに留意されたい。コンテキストモデルインデックスの導出は、gt1_flagおよびpar_flagについて同じであるが、確率モデルのセットは、互いに素である。つまり、確率モデルのあるセットがpar_flagのために使用され、確率モデルの別のセットがgt1_flagのために使用される。
【0234】
gt1_flagのためのコンテキスト選択が、直接先行するpar_flagの値に依存しないことに留意されたい。
【0235】
代替的に、インデックスcGt1、sGt1、dGt1、およびaGt1は、有意性フラグに関して上記で説明した方法のいずれかによって導出され得る。
【0236】
さらに、選択された確率モデルは、追加として、直接先行するパリティフラグpar_flagの値に依存することができるので、確率モデルの異なるセットが2つのパリティ値の各々のために使用されるようになる。しかしながら、これによって、par_flagとgt1_flagとの間に直接的な依存性が導入されることになる。
【0237】
フラグgt2_flagのためのコンテキストモデリング
現在のgt2_flagをコーディングするための適応確率モデルが、確率モデルのセットの中で選ばれる。同様に、有意性フラグの場合のように、利用可能な確率モデルが4次元配列において編成されると仮定し、
probModelGt2[cGt2][sGt2][dGt2][aGt2]
ただし、cGt2は、現在のカラーチャネルに依存するインデックスを指定し、sGt2は、状態変数に依存するインデックスを指定し、dGt2は、変換ブロックの内部の対角位置(またはより一般的には、xおよびyロケーション)に依存するインデックスを指定し、aGt2は、局所アクティビティ測度に依存するインデックスを指定する。
【0238】
好ましい実施形態では、インデックスcGt2、sGt2、dGt2、およびaGt2が、上記で説明したインデックスcGt1、sGt1、dGt1、aGt1と同様の方法で導出される。
cGt2=cGt1
sGt2=sGt1
dGt2=dGt1
aGt2=aGt1
【0239】
同様に、gt1_flagの場合のように、(コンテキストインデックスが、gt1_flagおよびgt2_flagをコーディングするために同じであるにもかかわらず)一般に、確率モデルの異なるセットが、gt1_flagおよびgt2_flagのために使用されることに留意されたい。しかしながら、特殊な場合として、これらの2つのフラグのためにまったく同じ確率モデルを使用することも可能である。
【0240】
代替的に、インデックスcGt2、sGt2、dGt2、およびaGt2は、上述のフラグに関して説明した方法のいずれかによって導出され得る。
【0241】
さらに、局所アクティビティインデックスaGt2を導出するために、局所近傍におけるgt2_flagの追加の情報が使用され得る(gt2_flagが、第2のパスにおいてコーディングされる場合)。たとえば、アクティビティインデックスが、以下に従って設定され得、
aGt2=min(4,sumAbs2-numSig)
ただし、sumAbs2は、第1のパスおよび第2のパス(上記参照)において送信されたデータによって与えられる、局所テンプレートにおける最小絶対変換係数レベルの和を指す。
【0242】
代替として、sumAbs2、sumAbs1、およびnumSigの異なる最大値または異なる関数が使用され得る。
【0243】
次に、図18および図19の説明を参照すると、このことは、言い換えれば、以下を意味する。説明したように、あらかじめ決定された変換係数のための有意性フラグの復号16は、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、復号16を実行するためのコンテキストを選択することを伴い得る。この位置は、図18および図19において、パラメータkによってインデックス付けされる。追加または代替として、図16に関して上記で示されたような、あらかじめ決定された変換係数50のための有意性フラグは、あらかじめ決定された変換係数50の周囲の、またはあらかじめ決定された変換係数50の位置に配置された、局所テンプレート52内の隣接する変換係数51のセットのための、あらかじめ決定された変換係数の有意性フラグより前に復号されたフラグのセットに基づいて、局所アクティビティを決定すること、および局所アクティビティに応じて、コンテキストを選択することによって、復号される。図18および図19において行われたように、たとえば、有意性フラグ、パリティフラグ、および1つもしくは複数の大なりフラグのうちの1つ、または図19の場合のように、すべての大なりフラグが、1つのパスにおいてコーディング/復号され得、テンプレート52における係数51のために復号されたフラグのセットが、テンプレート52において隣接する変換係数51のセットのために復号されたようなこれらのフラグを備えるようになり、アクティビティは、隣接する変換係数51の各々のための加数を有する和に基づいて計算され得、加数が、それぞれの隣接する変換係数のために前に復号された上記のフラグに基づいて決定された、それぞれの隣接する変換係数51のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す。最小に仮定された値は、それぞれの隣接する係数が、それぞれの隣接する係数51のために導出された前のフラグの解析に基づいて最小に仮定する、量子化インデックスまたは再構成レベルのための最小しきい値を意味する。最小値は、絶対という意味で定義され得る。図19の場合には、たとえば、この最小値は、残りのみが任意の係数について欠落していることがあるので、各係数51について、sig_flag+gt1_flag+par_flag+2*gt3_flagとして計算され得る。その前にコーディング/復号されたフラグセットが、par_flagおよびgt3_flagなど、いくつかのフラグを除外する、係数51では、gt1_flagがゼロであるので、次いで、それぞれのフラグは、ゼロのデフォルト値を有する。あらかじめ決定された変換係数のための有意性フラグは、さらに追加または代替として、状態遷移がこのあらかじめ決定された変換係数のために仮定する状態46に応じて選択される、コンテキストを使用してコーディング/復号され得る。たとえば、あるコンテキストセットが状態0および1のために、別のコンテキストセットが状態2のために、ならびに、第3のコンテキストセットが状態3のために定義および選択され得る。選択されたコンテキストセット内で、次いで、最後に使用されるコンテキストの選択が、局所アクティビティに応じてなど、前述の依存性のいずれかを使用して実行され得る。状態の代わりに、現在選ばれている再構成セット、たとえば、setIdが使用され得る。
【0244】
パリティフラグでは、コンテキスト選択性が同様に設計され得る。すなわち、あらかじめ決定された変換係数のためのパリティフラグは、1)あらかじめ決定された変換係数の係数位置、2)あらかじめ決定された変換係数50の周囲の局所テンプレート52内の隣接する変換係数51のセットのための、あらかじめ決定された変換係数のパリティフラグより前にコーディング/復号されたフラグのセットに基づく、局所アクティビティ、3)その再構成レベルがゼロでない、あらかじめ決定された変換係数の周囲の局所テンプレート52内の変換係数51の数、または4)局所アクティビティと変換係数の数との間の差のうちの1つまたは複数に応じて選択される、コンテキストを使用してコーディング/復号され得る。
【0245】
gt1_flag、gt2_flag、およびgt3_flagのいずれかなど、大なりフラグでは、コンテキスト選択性が同様に設計され得る。すなわち、大なりフラグは、あらかじめ決定された変換係数について、1)あらかじめ決定された変換係数の係数位置、2)あらかじめ決定された変換係数の周囲の、もしくはあらかじめ決定された変換係数に位置する、局所テンプレート52内の隣接する変換係数51のセットのための、あらかじめ決定された変換係数の第1の大なりフラグより前にコーディング/復号されたフラグのセットに基づいて決定された、局所アクティビティ、3)その再構成レベルがゼロでない、局所テンプレート52内の変換係数の数、および/または4)局所アクティビティと変換係数の数との間の差のうちの1つまたは複数に応じて選択される、コンテキストを使用してコーディング/復号され得る。
【0246】
残りの2値化については、以下の有利な概念が使用され得る。
【0247】
好ましい実施形態では、シンタックス要素remainderが、算術コーディングエンジンのバイパスモードにおいてコーディングされる(上記参照)。圧縮効率は、使用される2値化に依存する。HEVCでは、同様のシンタックス要素が、ゴロムライスコードと呼ばれる2値化コードのクラスを使用してコーディングされる。このコードのクラスは、いわゆるライスパラメータによってパラメータ化される。HEVCでは、ライスパラメータは、コーディング中に調整されて、使用される2値化が前のシンタックス要素に依存するようになる。
【0248】
好ましい実施形態では、HEVCの場合のように、ゴロムライスコードの同じクラス(または、まったく同様のクラス)が、シンタックス要素remainderを2値化するために使用される。HEVCと対照的に、remainderのレベル情報が2で除算されるので、ライスパラメータの導出が変更されなければならない。
【0249】
好ましい構成では、ライスパラメータは、局所テンプレートによってカバーされた隣接するレベルの絶対和、sumAbs(上記参照)を使用して導出される。特に好ましい実施形態では、ライスパラメータRPが、以下に従って導出される。
【0250】
【数21】
【0251】
他の構成では、ライスパラメータを切り替えるためのしきい値が変更され得る。または、ライスパラメータは、局所テンプレートの他のアクティビティ測度に基づいて導出され得る。その上、ライスパラメータがサブブロック内でより小さくなることが認められないことが、追加として指定され得る。
【0252】
代替として、ライスパラメータは、HEVCの場合と同様の方法で変更され得る。すなわち、ライスパラメータ選択は、remainderの復号28において実行され得る。
【0253】
たとえば、上記で説明した、図18の実施形態では、パリティシンタックス要素が、有意性情報の直後に送信される。この構成では、直接的なビン対ビンの依存性が、有意性とパリティ情報との間にのみ存在する。パリティ情報のコーディング/復号後、gt1_flagがコーディングされ、それによって、第1のパスにおける現在の走査位置のためのレベル情報のコーディングが終了する。第1の走査パス20/22'を終了した後、gt2_flagが、第2の走査パス22''において送信される。最後に、remainderが、走査パス26において送信される。この設計は、有意性およびパリティシンタックス要素への直接的なビン対ビンの依存性を最小化する。その上、より多くのレベル情報が、有意性フラグのためのコンテキストモデリングについて評価され、それによって、より高い圧縮効率が可能になり得る。パリティフラグのためのコンテキストモデリングは、より少ない論理、および、したがって、より少ない複雑さを生じる、gt1フラグおよびgt2フラグの場合と全く同じである。
【0254】
代替実施形態では、パリティ情報が、図20の擬似コードに示されるように、絶対レベル情報の前に最初に送信される。ここでは、パリティフラグが、パス20''において有意性フラグを送信する前に、次いで、パス22'における第1の大なりフラグと、その後に続くパス22''における第2の大なりフラグが送信される前に、パス20'において送信される。有意性フラグは、パリティ情報が0に等しいときにのみ必要とされるが、パリティフラグが1に等しいとき、有意性フラグは、1に等しいと推論される。この構成の利点は、直接的なビン対ビンの依存性が存在しないことである。パリティフラグが第1のパスにおいて送信された後、状態変数の値、および、したがって、個々の変換係数のために使用される量子化器が知られる。
【0255】
sig_flagを伴うパスと、バイパスコード化remainderを伴うパスとの間のパスの数は、図19の場合など、ゼロに等しくなるように、またはゼロよりも大きい任意の値に等しくなるように選ばれ得る。さらに、複数のフラグが、パスの内部で送信され得る。
【0256】
上記の説明のさらなる変更は、以下に関する。パリティフラグpar_flagのために選択される確率モデルは、以下のパラメータのうちの1つまたは複数に依存し得る。
【0257】
・カラーチャネル、
・状態変数、
・現在の走査位置の周囲の局所テンプレートにおけるパリティフラグ、
・走査位置(たとえば、対角位置をクラスタリングすることによる)。
【0258】
パリティの後に続くシンタックス要素のためのコンテキストモデリングは、異なるコンテキストモデルセットがパリティに応じて採用されるように、パリティ情報が条件とされ得る。加えて、シンタックス要素は、パリティフラグについて前に説明したパラメータのいずれかに依存し得る。
【0259】
この構成では、コンテキストモデルを使用するビンの数が、たとえば、6まで増加する(次いで、最後のコンテキストコード化シンタックス要素がGT5である)。次いで、条件付き確率がほぼ等確率であるので、パリティ情報がバイパスモードで送信される。この構成は、完全な情報が各走査位置のために送信される設計の圧縮効率が達成され得るという利益を有する。
【0260】
独立スカラー量子化を使用する場合のエントロピーコーディングについては、以下のことが言われる。
【0261】
上記で説明したエントロピーコーディングは、依存量子化を用いる変換コーディングのために特に有利であるにもかかわらず、従来の独立量子化を用いる変換コーディングにも有利に適用され得る。変更される必要があるただ1つの態様は、状態変数の導出である。実際には、従来の独立量子化の場合、状態変数は、常に0に等しく設定され得る。量子化器Q0は、従来の一様再構成量子化器を表すことに留意されたい。
【0262】
従来のスカラー量子化の代替物もまた、状態遷移テーブルを以下に変更することによって達成され得る。
state_trans_table[4][2]={{0,0},{0,0},{0,0},{0,0}}
【0263】
状態遷移テーブルが、単一の16ビット整数として表され得るので(上記の説明参照)、同じ実装形態が、依存および独立スカラー量子化のために使用され得る。使用される量子化方法は、状態遷移テーブルを表す16ビット値によって構成され得る。したがって、説明したエントロピーコーディングのための方法はまた、(たとえば、シーケンス、ピクチャ、スライス、タイル、またはブロックレベルで)依存量子化と独立量子化との間の切替えをサポートするコーデックのためにも好適である。
【0264】
さらなる実施形態は、以下に関する。
【0265】
1. 変換係数のブロックを復号するための装置であって、a)変換係数を走査する1つまたは複数の第1のパスにおいて、コンテキスト適応型バイナリ算術復号を使用して、変換係数の量子化インデックスがゼロであるか否かを示す、変換係数のための有意性フラグと、変換係数のパリティを示す、変換係数のためのパリティフラグと、量子化インデックスがゼロでない変換係数のための1つまたは複数の大なりフラグとを復号すること、およびb)1つまたは複数の第2のパスにおいて、等確率性バイナリ算術復号を使用して、その1つまたは複数の大なりフラグが正である変換係数の量子化インデックスの絶対値の残りの2値化のビンと、量子化インデックスがゼロでない変換係数の量子化インデックスの符号とを復号することを行うように構成された、装置。
【0266】
2. 1つの第1のパスにおいて、現在走査されている変換係数について、コンテキスト適応型バイナリ算術復号を使用して、現在走査されている変換係数のための有意性フラグを復号すること、および、有意性フラグが、現在走査されている変換係数の量子化インデックスがゼロでないことを示す場合、現在走査されている変換係数について、コンテキスト適応型バイナリ算術復号を使用して、現在走査されている変換係数のためのパリティフラグを復号することを行うように構成された、実施形態1の装置。
【0267】
3. 1つまたは複数の第1のパスにおいて、現在走査されている変換係数について、現在走査されている変換係数の量子化インデックスがゼロでない場合、コンテキスト適応型バイナリ算術復号を使用して、現在走査されている変換係数のための第1の大なりフラグを復号することを行うように構成された、実施形態1または2の装置。
【0268】
4. あらかじめ決定された変換係数について、量子化インデックスの絶対値を、和に従って計算することであって、その加数が、あらかじめ決定された変換係数の有意性フラグと、あらかじめ決定された変換係数のパリティフラグと、あらかじめ決定された変換係数の残り、および第1の大なりフラグの和の2倍とによって形成される、ことを行うように構成された、実施形態3の装置。
【0269】
5. 1つまたは複数の第2のパスにおいて、現在走査されている変換係数について、現在走査されている変換係数の第1の大なりフラグが正である場合、コンテキスト適応型バイナリ算術復号を使用して、現在走査されている変換係数のための第2の大なりフラグを復号することを行うように構成された、実施形態3の装置。
【0270】
6. あらかじめ決定された変換係数について、量子化インデックスの絶対値を、和に従って計算することであって、その加数が、あらかじめ決定された変換係数の有意性フラグと、あらかじめ決定された変換係数のパリティフラグと、あらかじめ決定された変換係数の第1の大なりフラグと、あらかじめ決定された変換係数の残り、および第2の大なりフラグの和の2倍とによって形成される、ことを行うように構成された、実施形態5の装置。
【0271】
7. 1つまたは複数の第1のパスの各々の後、1つまたは複数の第2のパスの各々を実行するように構成された、実施形態1から6のいずれかの装置。
【0272】
8. 変換ブロックの変換係数がサブブロックに区分され、変換係数が、サブブロックごとに復号され、サブブロックの走査位置上のすべてのパスが、次のサブブロックの第1のパスが復号される前に、復号される、先行する実施形態のいずれかの装置。
【0273】
9. 量子化インデックスがゼロでない各変換係数の量子化インデックスを、逆量子化することであって、逆量子化が、それぞれの変換係数について、走査順序に沿って、それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルのセットを選択すること、および、それぞれの変換係数を、それぞれの変換係数の量子化インデックスによってインデックス付けされる、再構成レベルのセットのうちの1つのレベル上に逆量子化することによる、ことを行うように構成された、実施形態1から8のいずれかの装置。
【0274】
10. それぞれの変換係数についての、複数の再構成レベルセットの中からの、再構成レベルのセットの選択を、状態遷移を使用して実行することであって、実行が、状態遷移がそれぞれの変換係数のために仮定する状態に基づいて、複数の再構成レベルセットの中から、再構成レベルのセットを一意に選択すること、それぞれの変換係数の量子化インデックスのパリティに応じて、走査順序において後続する変換係数のための状態遷移の状態を更新することによる、ことを行うように構成された、実施形態9の装置。
【0275】
11. 走査順序に沿って、1つもしくは複数の第1のパス、および/または、1つもしくは複数の第2のパスを実行するように構成された、実施形態10の装置。
【0276】
12. 状態遷移を4つの異なる状態の間で実行するように構成された、実施形態10または11の装置。
【0277】
13. あらかじめ決定された量子化ステップサイズによって、複数の再構成レベルセットをパラメータ化すること、および、データストリームから、あらかじめ決定された量子化ステップサイズについての情報を導出することを行うように構成された、実施形態9から12のいずれかの装置。
【0278】
14. 複数の再構成レベルセットの各々が、複数の再構成レベルセットについて一定である、あらかじめ決定された量子化ステップサイズの整数の倍数からなる、実施形態9から13のいずれかの装置。
【0279】
15. 複数の再構成レベルセットのうちの再構成レベルセットの数が、2つであり、複数の再構成レベルセットが、ゼロ、およびあらかじめ決定された量子化ステップサイズの偶数の倍数を備える、第1の再構成レベルセットと、ゼロ、およびあらかじめ決定された量子化ステップサイズの奇数の倍数を備える、第2の再構成レベルセットとを備える、実施形態9から14のいずれかの装置。
【0280】
16. 状態値0および1のために、第1の再構成レベルセットを選択し、状態値2および3のために、第2の再構成レベルセットを選択するように構成された、実施形態15の装置。
【0281】
17. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための有意性フラグを復号することであって、復号が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から16のいずれかの装置。
【0282】
18. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための有意性フラグを復号することであって、復号が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数の有意性フラグより前に復号されたフラグのセットに基づいて、局所アクティビティを決定すること、および、局所アクティビティに応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から17のいずれかの装置。
【0283】
19. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて復号することであって、フラグのセットが、隣接する変換係数のセットのために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、局所アクティビティを計算することであって、加数が、隣接する変換係数のために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態18の装置。
【0284】
20. a)それぞれの変換係数についての、複数の再構成レベルセットの中からの、再構成レベルのセットの選択を、状態遷移を使用して実行することであって、実行が、状態遷移がそれぞれの変換係数のために仮定する状態に基づいて、複数の再構成レベルセットの中から、再構成レベルのセットを一意に選択すること、および、それぞれの変換係数の量子化インデックスのパリティに応じて、走査順序において後続する変換係数のための状態遷移の状態を更新することによる、こと、b)走査順序に沿って、1つまたは複数の第1のパスを実行すること、ならびにc)コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための有意性フラグを復号することであって、復号が、状態遷移があらかじめ決定された変換係数(50)のために仮定する状態に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から19のいずれかの装置。
【0285】
21. 状態に応じて、コンテキストを備えるコンテキストセットを選択すること、および、あらかじめ決定された変換係数の周囲の局所アクティビティ、またはあらかじめ決定された変換係数の係数位置に応じて、コンテキストセットの中からコンテキストを選択することによって、コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための有意性フラグを復号することを行うように構成された、実施形態20の装置。
【0286】
22. 状態0および1のために第1のコンテキストセット、状態2のために第2のコンテキストセット、ならびに状態3のために第3のコンテキストセットを選択するように構成された、実施形態21の装置。
【0287】
23. a)量子化インデックスがゼロでない各変換係数の量子化インデックスを、逆量子化することであって、逆量子化が、それぞれの変換係数について、走査順序に沿って、それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルのセットを選択すること、および、それぞれの変換係数を、それぞれの変換係数の量子化インデックスによってインデックス付けされる、再構成レベルのセットのうちの1つのレベル上に逆量子化することによる、こと、b)走査順序に沿って、1つまたは複数の第1のパスを実行すること、ならびにc)コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための有意性フラグを復号することであって、復号が、あらかじめ決定された変換係数のために選択された再構成レベルのセットに応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から22のいずれかの装置。
【0288】
24. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のためのパリティフラグを復号することであって、復号が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から23のいずれかの装置。
【0289】
25. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のためのパリティフラグを復号することであって、復号が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数のパリティフラグより前に復号されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、あらかじめ決定された変換係数の周囲の局所テンプレート内の変換係数の数を決定すること、ならびに、局所アクティビティおよび/または変換係数の数に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から24のいずれかの装置。
【0290】
26. 局所アクティビティと変換係数の数との間の差に応じて、コンテキストを選択するように構成された、実施形態25の装置。
【0291】
27. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて復号することであって、フラグのセットが、隣接する変換係数のセットのために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、アクティビティを計算することであって、加数が、隣接する変換係数のために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態25または26の装置。
【0292】
28. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための1つまたは複数の大なりフラグのうちの第1のものを復号することであって、復号が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から27のいずれかの装置。
【0293】
29. コンテキスト適応型バイナリ算術復号を使用して、あらかじめ決定された変換係数のための第1の大なりフラグを復号することであって、復号が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数の第1の大なりフラグより前に復号されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、あらかじめ決定された変換係数の周囲の局所テンプレート内の変換係数の数を決定すること、ならびに、局所アクティビティおよび/または変換係数の数に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態1から28のいずれかの装置。
【0294】
30. 局所アクティビティと、変換ブロックの内部の変換係数の数との間の差に応じて、コンテキストを選択するように構成された、実施形態29の装置。
【0295】
31. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて復号することであって、フラグのセットが、隣接する変換係数のセットのために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、アクティビティを計算することであって、加数が、隣接する変換係数のために復号された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態29または30の装置。
【0296】
32. ゴロムライスコードを使用して、および、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットの中からの各々のための加数にわたる和に依存する、ライスパラメータを使用して、あらかじめ決定された変換係数のための残りを復号することであって、加数が、それぞれの隣接する変換係数のための量子化インデックスまたは再構成レベルに依存する、ことを行うように構成された、実施形態1から31のいずれかの装置。
【0297】
33. 変換係数のブロックを符号化するための装置であって、a)変換係数を走査する1つまたは複数の第1のパスにおいて、コンテキスト適応型バイナリ算術符号化を使用して、現在の変換係数の量子化インデックス(たとえば、level[k])がゼロであるか否かを示す、現在の変換係数のための有意性フラグ(たとえば、sig_flag[k])と、変換係数のパリティを示す、変換係数のためのパリティフラグ(たとえば、par_flag[k])と、量子化インデックスがゼロでない変換係数のための1つまたは複数の大なりフラグ(たとえば、gt#_flag[k])とを符号化すること、およびb)1つまたは複数の第3のパスにおいて、等確率性バイナリ算術符号化(equiprobability binary arithmetic encoding)を使用して、その1つまたは複数の大なりフラグが正である変換係数の量子化インデックスの残り(たとえば、remainder[k])と、量子化インデックスがゼロでない変換係数の量子化インデックスの符号(たとえば、sign[k])とを符号化することを行うように構成された、装置。
【0298】
34. 1つの第1のパスにおいて、現在走査されている変換係数について、a)コンテキスト適応型バイナリ算術符号化を使用して、現在走査されている変換係数のための有意性フラグを符号化すること、およびb)有意性フラグが、現在走査されている変換係数の量子化インデックスがゼロでないことを示す場合、現在走査されている変換係数について、コンテキスト適応型バイナリ算術符号化を使用して、現在走査されている変換係数のためのパリティフラグを符号化することを行うように構成された、実施形態33の装置。
【0299】
35. 1つまたは複数の第2のパスにおいて、現在走査されている変換係数について、現在走査されている変換係数の量子化インデックスがゼロでない場合、コンテキスト適応型バイナリ算術符号化を使用して、現在走査されている変換係数のための第1の大なりフラグを符号化することを行うように構成された、実施形態33または34の装置。
【0300】
36. あらかじめ決定された変換係数について、量子化インデックスが、和に従って取得可能であり、その加数が、あらかじめ決定された変換係数の有意性フラグと、あらかじめ決定された変換係数のパリティフラグと、あらかじめ決定された変換係数の残り、および第1の大なりフラグの和の2倍とによって形成されるように構成された、実施形態35の装置。
【0301】
37. 1つまたは複数の第2のパスにおいて、現在走査されている変換係数について、現在走査されている変換係数の第1の大なりフラグが正である場合、コンテキスト適応型バイナリ算術符号化を使用して、現在走査されている変換係数のための第2の大なりフラグを符号化することを行うように構成された、実施形態36の装置。
【0302】
38. あらかじめ決定された変換係数について、量子化インデックスが、和に従って取得可能であり、その加数が、あらかじめ決定された変換係数の有意性フラグと、あらかじめ決定された変換係数のパリティフラグと、あらかじめ決定された変換係数の第1の大なりフラグと、あらかじめ決定された変換係数の残り、および第2の大なりフラグの和の2倍とによって形成されるように構成された、実施形態37の装置。
【0303】
39. 1つまたは複数の第1のパスの各々の後、1つまたは複数の第2のパスの各々を実行するように構成された、実施形態33から38のいずれかの装置。
【0304】
40. 変換ブロックの変換係数がサブブロックに区分され、変換係数が、サブブロックごとに符号化され、サブブロックの走査位置上のすべてのパスが、次のサブブロックの第1のパスが符号化される前に、符号化される、先行する実施形態のいずれかの装置。
【0305】
41. 量子化インデックスがゼロでない各変換係数の量子化インデックスを、量子化することであって、量子化が、それぞれの変換係数について、走査順序に沿って、それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルのセットを選択すること、および、それぞれの変換係数を、それぞれの変換係数の量子化インデックスによってインデックス付けされる、再構成レベルのセットのうちの1つのレベル上に量子化することによる、ことを行うように構成された、実施形態33から40のいずれかの装置。
【0306】
42. それぞれの変換係数についての、複数の再構成レベルセットの中からの、再構成レベルのセットの選択を、状態遷移を使用して実行することであって、実行が、状態遷移がそれぞれの変換係数のために仮定する状態に基づいて、複数の再構成レベルセットの中から、再構成レベルのセットを一意に選択すること、それぞれの変換係数の量子化インデックスのパリティに応じて、走査順序において後続する変換係数のための状態遷移の状態を更新することによる、ことを行うように構成された、実施形態41の装置。
【0307】
43. 走査順序に沿って、1つまたは複数の第1のパス、および、1つまたは複数の第2のパスを実行するように構成された、実施形態42の装置。
【0308】
44. 状態遷移を4つの異なる状態の間で実行するように構成された、実施形態42または43の装置。
【0309】
45. あらかじめ決定された量子化ステップサイズによって、複数の再構成レベルセットをパラメータ化すること、および、データストリームから、あらかじめ決定された量子化ステップサイズについての情報を導出することを行うように構成された、実施形態40から43のいずれかの装置。
【0310】
46. 複数の再構成レベルセットの各々が、複数の再構成レベルセットについて一定である、あらかじめ決定された量子化ステップサイズの倍数からなる、実施形態40から45のいずれかの装置。
【0311】
47. 複数の再構成レベルセットのうちの再構成レベルセットの数が、2つであり、複数の再構成レベルセットが、ゼロ、およびあらかじめ決定された量子化ステップサイズの偶数の倍数を備える、第1の再構成レベルセットと、ゼロ、およびあらかじめ決定された量子化ステップサイズの奇数の倍数を備える、第2の再構成レベルセットとを備える、実施形態40から46のいずれかの装置。
【0312】
48. 状態値0および1のために、第1の再構成レベルセットを選択し、状態値2および3のために、第2の再構成レベルセットを選択するように構成された、実施形態47の装置。
【0313】
49. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための有意性フラグを符号化することであって、符号化が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から48のいずれかの装置。
【0314】
50. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための有意性フラグを符号化することであって、符号化が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数の有意性フラグより前に符号化されたフラグのセットに基づいて、局所アクティビティを決定すること、および、局所アクティビティに応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から49のいずれかの装置。
【0315】
51. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて符号化することであって、フラグのセットが、隣接する変換係数のセットのために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、局所アクティビティを計算することであって、加数が、隣接する変換係数のために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態50の装置。
【0316】
52. a)それぞれの変換係数についての、複数の再構成レベルセットの中からの、再構成レベルのセットの選択を、状態遷移を使用して実行することであって、実行が、状態遷移がそれぞれの変換係数のために仮定する状態に基づいて、複数の再構成レベルセットの中から、再構成レベルのセットを一意に選択すること、それぞれの変換係数の量子化インデックスのパリティに応じて、走査順序において後続する変換係数のための状態遷移の状態を更新することによる、こと、b)走査順序に沿って、1つまたは複数の第1のパスを実行すること、ならびにc)コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための有意性フラグを符号化することであって、符号化が、状態遷移があらかじめ決定された変換係数(50)のために仮定する状態に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から51のいずれかの装置。
【0317】
53. 状態に応じて、コンテキストを備えるコンテキストセットを選択すること、および、あらかじめ決定された変換係数の周囲の局所アクティビティ、またはあらかじめ決定された変換係数の係数位置に応じて、コンテキストセットの中からコンテキストを選択することによって、コンテキスト適応型エントロピー符号化を使用して、あらかじめ決定された変換係数のための有意性フラグを符号化することを行うように構成された、実施形態52の装置。
【0318】
54. 状態0および1のために第1のコンテキストセット、状態2のために第2のコンテキストセット、ならびに状態3のために第3のコンテキストセットを選択するように構成された、実施形態53の装置。
【0319】
55. a)量子化インデックスがゼロでない各変換係数の量子化インデックスを、量子化することであって、量子化が、それぞれの変換係数について、走査順序に沿って、それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルのセットを選択すること、および、それぞれの変換係数を、それぞれの変換係数の量子化インデックスによってインデックス付けされる、再構成レベルのセットのうちの1つのレベル上に量子化することによる、こと、b)走査順序に沿って、1つまたは複数の第1のパスを実行すること、ならびにc)コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための有意性フラグを符号化することであって、符号化が、あらかじめ決定された変換係数(50)のために選択された再構成レベルのセットに応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から54のいずれかの装置。
【0320】
56. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のためのパリティフラグを符号化することであって、符号化が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から55のいずれかの装置。
【0321】
57. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のためのパリティフラグを符号化することであって、符号化が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数のパリティフラグより前に符号化されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、あらかじめ決定された変換係数の周囲の局所テンプレート内の変換係数の数を決定すること、ならびに、局所アクティビティおよび/または変換係数の数に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から56のいずれかの装置。
【0322】
58. 局所アクティビティと変換係数の数との間の差に応じて、コンテキストを選択するように構成された、実施形態57の装置。
【0323】
59. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて符号化することであって、フラグのセットが、隣接する変換係数のセットのために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、アクティビティを計算することであって、加数が、隣接する変換係数のために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態57または58の装置。
【0324】
60. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための1つまたは複数の大なりフラグのうちの第1のものを符号化することであって、符号化が、変換ブロックの内部のあらかじめ決定された変換係数の係数位置に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から59のいずれかの装置。
【0325】
61. コンテキスト適応型バイナリ算術符号化を使用して、あらかじめ決定された変換係数のための第1の大なりフラグを符号化することであって、符号化が、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、あらかじめ決定された変換係数の第1の大なりフラグより前に符号化されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、あらかじめ決定された変換係数の周囲の局所テンプレート内の変換係数の数を決定すること、ならびに、局所アクティビティおよび/または変換係数の数に応じて、コンテキストを選択することによる、ことを行うように構成された、実施形態33から60のいずれかの装置。
【0326】
62. 局所アクティビティと変換係数の数との間の差に応じて、コンテキストを選択するように構成された、実施形態61の装置。
【0327】
63. 有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを、1つの第1のパスにおいて、逐次、符号化することであって、フラグのセットが、隣接する変換係数のセットのために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグを備えるようになる、こと、ならびに、隣接する変換係数の各々のための加数にわたる和に基づいて、アクティビティを計算することであって、加数が、隣接する変換係数のために符号化された、有意性フラグ、パリティフラグ、および1つまたは複数の大なりフラグに基づいて決定された、隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、ことを行うように構成された、実施形態61または62の装置。
【0328】
64. ゴロムライスコードを使用して、および、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットの中からの各々のための加数にわたる和に依存する、ライスパラメータを使用して、あらかじめ決定された変換係数のための残りを符号化することであって、加数が、それぞれの隣接する変換係数のための量子化インデックスまたは再構成レベルに依存する、ことを行うように構成された、実施形態33から63のいずれかの装置。
【0329】
65. 上記の実施形態のいずれかによる装置によって実行される方法。
【0330】
66. コンピュータプログラムを実行するコンピュータに、実施形態65による方法を実行するように命令するための、コンピュータプログラム。
【0331】
67. 実施形態33から64のいずれかによる装置によって生成された、データストリーム。
【0332】
いくつかの態様について、装置のコンテキストにおいて説明したが、これらの態様がまた、対応する方法の説明を表すことは明確であり、その場合、ブロックまたはデバイスは、方法ステップ、または方法ステップの特徴に対応する。同様に、方法ステップのコンテキストにおいて説明した態様はまた、対応する装置の対応するブロック、またはアイテム、または特徴の説明を表す。方法ステップの一部または全部は、たとえば、マイクロプロセッサ、プログラマブルコンピュータ、または電子回路のような、ハードウェア装置によって(または、それを使用して)実行され得る。いくつかの実施形態では、最も重要な方法ステップのうちの1つまたは複数が、そのような装置によって実行され得る。
【0333】
本発明の符号化データストリームは、デジタル記憶媒体上に記憶され得るか、またはインターネットなど、ワイヤレス伝送媒体もしくはワイヤード伝送媒体などの伝送媒体上で送信され得る。
【0334】
いくつかの実装要件に応じて、本発明の実施形態は、ハードウェアにおいて、またはソフトウェアにおいて実装され得る。実装は、電子的可読制御信号がその上に記憶されており、それぞれの方法が実行されるように、プログラマブルコンピュータシステムと協調する(または、協調することが可能である)デジタル記憶媒体、たとえば、フロッピーディスク、DVD、Blu-Ray、CD、ROM、PROM、EPROM、EEPROM、またはフラッシュメモリを使用して実行され得る。したがって、デジタル記憶媒体は、コンピュータ可読であり得る。
【0335】
本発明によるいくつかの実施形態は、本明細書で説明する方法のうちの1つが実行されるように、プログラマブルコンピュータシステムと協調することが可能である、電子的可読制御信号を有するデータキャリアを備える。
【0336】
一般に、本発明の実施形態は、プログラムコードをもつコンピュータプログラム製品として実装され得、プログラムコードは、コンピュータプログラム製品がコンピュータ上で稼働するとき、方法のうちの1つを実行するために動作可能である。プログラムコードは、たとえば、機械可読キャリア上で記憶され得る。
【0337】
他の実施形態は、機械可読キャリア上に記憶された、本明細書で説明する方法のうちの1つを実行するためのコンピュータプログラムを備える。
【0338】
言い換えれば、したがって、本発明の方法の一実施形態は、コンピュータプログラムがコンピュータ上で稼働するとき、本明細書で説明する方法のうちの1つを実行するためのプログラムコードを有する、コンピュータプログラムである。
【0339】
したがって、本発明の方法のさらなる実施形態は、その上に記録された、本明細書で説明する方法のうちの1つを実行するためのコンピュータプログラムを備える、データキャリア(またはデジタル記憶媒体、またはコンピュータ可読媒体)である。データキャリア、デジタル記憶媒体、または記録された媒体は、典型的には有形および/または非遷移性である。
【0340】
したがって、本発明の方法のさらなる実施形態は、本明細書で説明する方法のうちの1つを実行するためのコンピュータプログラムを表す信号のデータストリームまたはシーケンスである。信号のデータストリームまたはシーケンスは、たとえば、データ通信接続を介して、たとえば、インターネットを介して転送されるように構成され得る。
【0341】
さらなる実施形態は、本明細書で説明する方法のうちの1つを実行するように構成または適応された、処理手段、たとえば、コンピュータ、またはプログラマブル論理デバイスを備える。
【0342】
さらなる実施形態は、本明細書で説明する方法のうちの1つを実行するためのコンピュータプログラムをその上にインストールしている、コンピュータを備える。
【0343】
本発明によるさらなる実施形態は、本明細書で説明する方法のうちの1つを実行するためのコンピュータプログラムを、受信機に(たとえば、電子的または光学的に)転送するように構成された、装置またはシステムを備える。受信機は、たとえば、コンピュータ、モバイルデバイス、メモリデバイスなどであり得る。装置またはシステムは、たとえば、コンピュータプログラムを受信機に転送するためのファイルサーバを備え得る。
【0344】
いくつかの実施形態では、プログラマブル論理デバイス(たとえば、フィールドプログラマブルゲートアレイ)は、本明細書で説明する方法の機能の一部または全部を実行するために使用され得る。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書で説明する方法のうちの1つを実行するために、マイクロプロセッサと協調し得る。一般に、方法は、好ましくは、任意のハードウェア装置によって実行される。
【0345】
本明細書で説明する装置は、ハードウェア装置を使用して、またはコンピュータを使用して、または、ハードウェア装置およびコンピュータの組合せを使用して実装され得る。
【0346】
本明細書で説明する装置、または本明細書で説明する装置の任意の構成要素は、ハードウェアにおいて、および/またはソフトウェアにおいて、少なくとも部分的に実装され得る。
【0347】
本明細書で説明する方法は、ハードウェア装置を使用して、またはコンピュータを使用して、または、ハードウェア装置およびコンピュータの組合せを使用して実行され得る。
【0348】
本明細書で説明する方法、または本明細書で説明する装置の任意の構成要素は、ハードウェアによって、および/またはソフトウェアによって、少なくとも部分的に実行され得る。
【0349】
上記で説明した実施形態は、本発明の原理について例示するものにすぎない。本明細書で説明した配置および詳細の変更形態および変形形態が、他の当業者には明らかになることは理解されよう。したがって、以下に続く特許請求の範囲によってのみ限定され、本明細書の実施形態の記載および説明として提示した具体的な詳細によって限定されないことが意図される。
【0350】
参考文献
[1]ITU-TおよびISO|IEC、「Advanced video coding for audiovisual services」、ITU-T Rec. H.264およびISO|IEC 14406-10(AVC)、2003。
[2]ITU-TおよびISO|IEC、「High efficiency video coding」、ITU-T Rec. H.265およびISO|IEC 23008-10(HEVC)、2013。
[3]Abrecht他、「Description of SDR, HDR, and 360°video coding technology proposal by Fraunhofer HHI」、Joint Video Experts Team(JVET)、doc. JVET-J0014、2018年4月。
【符号の説明】
【0351】
10 変換ブロック、ブロック
12 変換係数
14 サブブロック
16、18 タスク、復号
20 第1のパス、有意性/パリティパス、パス、第1の走査パス
20'、20'' パス
22 第2のパス、大なりフラグパス、パス、第1のパス
22' パス、第1のパス、第1の走査パス
22'' パス、第2のパス、第2の走査パス
24、28 復号、タスク
24' gt1_flag復号、復号
24'' gt2_flag復号、復号
26 第3のパス、走査パス
27 第3のパス、パス
30 復号、タスク、パス
40、45 更新
42 選択
44 矢印、コーディング順序、走査順序
46 状態
50 あらかじめ決定された変換係数
51 隣接する変換係数、係数、隣接する係数、変換係数
52 局所テンプレート、テンプレート
図1
図2a
図2b
図3
図4a
図4b
図5a
図5b
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
【手続補正書】
【提出日】2022-09-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
変換係数(12)のブロック(10)を含む画像を復号するための画像デコーダであって、前記画像デコーダは、プロセッサおよびメモリを含み、前記プロセッサは、前記メモリと協働して、
前記変換係数を走査する1つまたは複数の第1のパス(20)において、
コンテキスト適応型エントロピー復号を使用して、それぞれの変換係数について、前記それぞれの変換係数の量子化インデックスがゼロであるか否かをその各々が示す、前記変換係数のための有意性フラグを復号(16)すること、
それぞれの変換係数について、前記それぞれの変換係数のパリティをその各々が示す、前記変換係数のためのパリティフラグを復号(18)すること、
コンテキスト適応型エントロピー復号を使用して、前記量子化インデックスがゼロでない変換係数の各々のための1つまたは複数の大なりフラグを復号(24)すること、
1つまたは複数のさらなるパス(26、27)において、
等確率性エントロピー復号を使用して、
その前記1つまたは複数の大なりフラグが正である変換係数の各々の前記量子化インデックスの残りと、
前記量子化インデックスがゼロでない前記変換係数の各々の前記量子化インデックスの符号と
を復号(28、30)すること
を行うように構成された、画像デコーダ。
【請求項2】
1つの第1のパス(20)において、現在走査されている変換係数について、
コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための前記有意性フラグを復号すること、および
前記有意性フラグが、前記現在走査されている変換係数の前記量子化インデックスがゼロでないことを示す場合、前記現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための前記パリティフラグを復号すること
を行うように構成された、請求項1に記載の画像デコーダ。
【請求項3】
前記1つまたは複数の第1のパスのうちの1つにおいて、現在走査されている変換係数について、
コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための前記パリティフラグを復号すること、および
前記1つまたは複数の第1のパスのうちのさらなる1つにおいて、現在走査されている変換係数について、
前記パリティフラグが、前記現在走査されている変換係数の前記量子化インデックスが偶数であることを示す場合、前記現在走査されている変換係数について、コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための前記有意性フラグを復号すること
を行うように構成された、請求項1に記載の画像デコーダ。
【請求項4】
前記1つまたは複数の第1のパスにおいて、現在走査されている変換係数について、
前記現在走査されている変換係数の前記量子化インデックスがゼロでない場合、コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための第1の大なりフラグを復号すること
を行うように構成された、請求項1から3のいずれか一項に記載の画像デコーダ。
【請求項5】
あらかじめ決定された変換係数について、前記量子化インデックスを、和に従って計算することであって、その加数が、
前記あらかじめ決定された変換係数の前記有意性フラグと、
前記あらかじめ決定された変換係数の前記パリティフラグと、
前記あらかじめ決定された変換係数の前記残り、および前記第1の大なりフラグの和の2倍と
によって形成される、こと
を行うように構成された、請求項4に記載の画像デコーダ。
【請求項6】
前記1つまたは複数の第1のパスにおいて、現在走査されている変換係数について、
前記現在走査されている変換係数の前記第1の大なりフラグが正である場合、コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための第2の大なりフラグを復号すること
を行うように構成された、請求項4に記載の画像デコーダ。
【請求項7】
あらかじめ決定された変換係数について、量子化インデックスの絶対値を、和に従って計算することであって、その加数が、
前記あらかじめ決定された変換係数の前記有意性フラグと、
前記あらかじめ決定された変換係数の前記パリティフラグと、
前記あらかじめ決定された変換係数の前記残り、前記第1の大なりフラグ、および前記第2の大なりフラグの和の2倍と
によって形成される、こと
を行うように構成された、請求項6に記載の画像デコーダ。
【請求項8】
あらかじめ決定された変換係数について、量子化インデックスの絶対値を、和に従って計算することであって、その加数が、
前記あらかじめ決定された変換係数の前記有意性フラグと、
前記あらかじめ決定された変換係数の前記パリティフラグと、
前記あらかじめ決定された変換係数の前記第1の大なりフラグと、
前記あらかじめ決定された変換係数の前記残り、および前記第2の大なりフラグの和の2倍と
によって形成される、こと
を行うように構成された、請求項6に記載の画像デコーダ。
【請求項9】
前記画像デコーダが、
別個のパスにおいて、前記第1の大なりフラグおよび前記第2の大なりフラグの前記復号を実行するように構成され、かつ/または
前記1つまたは複数の第1のパスのうちの別個のものにおいて、一方では、前記有意性フラグおよび前記パリティフラグ、ならびに他方では、前記1つまたは複数の大なりフラグの前記復号を実行するように構成される、請求項6から8のいずれか一項に記載の画像デコーダ。
【請求項10】
内部で前記有意性フラグおよび前記パリティフラグが一方では復号される、前記1つまたは複数の第1のパスのうちのさらなる1つまたは複数とは別個であり、その後である、前記1つまたは複数の第1のパスのうちの1つまたは複数における、前記1つまたは複数の大なりフラグの前記復号、ならびに
前記1つまたは複数の第1のパスの各々の後、前記1つまたは複数のさらなるパスの各々
を実行するように構成された、請求項1から9のいずれか一項に記載の画像デコーダ。
【請求項11】
前記1つまたは複数の第1のパスが、内部で前記変換係数(12)の前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグが復号される、1つのパスである、請求項1から10のいずれか一項に記載の画像デコーダ。
【請求項12】
前記1つまたは複数の第1のパスのうちの1つにおいて、現在走査されている変換係数について、
コンテキスト適応型エントロピー復号を使用して、前記現在走査されている変換係数のための前記有意性フラグを復号すること、
前記1つの第1のパスの後、前記1つまたは複数の第1のパスのうちの第2のものにおいて、
コンテキスト適応型エントロピー復号を使用して、前記変換係数のための2つ以上の大なりフラグのシーケンスを復号すること、
前記1つまたは複数の第1のパスのうちの前記第2のものの後、前記1つまたは複数の第1のパスのうちの第3のパスにおいて、
等確率性エントロピー復号を使用して、前記量子化インデックスがゼロでない前記変換係数のための前記パリティフラグを復号すること
を行うように構成された、請求項1に記載の画像デコーダ。
【請求項13】
前記ブロックの前記変換係数がサブブロック(14)に区分され、前記変換係数が、サブブロックごとに復号され、サブブロック(14)の各変換係数が、次のサブブロックの前記変換係数の前に復号されるようにする、請求項1から12のいずれか一項に記載の画像デコーダ。
【請求項14】
バイナリ算術復号が、エントロピー復号として使用され、前記残りが、前記変換係数の前記量子化インデックスの絶対値の2値化のビンを復号することによって復号される、請求項1から13のいずれか一項に記載の画像デコーダ。
【請求項15】
前記量子化インデックスがゼロでない各変換係数の前記量子化インデックスを、逆量子化することであって、前記逆量子化が、
前記それぞれの変換係数について、走査順序(44)に沿って、前記それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルセットを選択(42)すること、および
前記それぞれの変換係数を、前記それぞれの変換係数の前記量子化インデックスによってインデックス付けされる、前記再構成レベルセットのうちの1つのレベル上に逆量子化すること
による、こと
を行うように構成された、請求項1から14のいずれか一項に記載の画像デコーダ。
【請求項16】
前記それぞれの変換係数についての、複数の再構成レベルセットの中からの、前記再構成レベルセットの前記選択を、状態遷移を使用して実行することであって、前記実行が、
前記状態遷移が前記それぞれの変換係数のために仮定する状態に基づいて、前記複数の再構成レベルセットの中から、前記再構成レベルセットを一意に選択(42)すること、
前記それぞれの変換係数の前記量子化インデックスの前記パリティに応じて、前記走査順序において後続する変換係数のための前記状態遷移の前記状態を更新(45)すること
による、こと
を行うように構成された、請求項15に記載の画像デコーダ。
【請求項17】
前記走査順序に沿って、
前記1つまたは複数の第1のパス、および/または
前記1つまたは複数のさらなるパス
を実行するように構成された、請求項16に記載の画像デコーダ。
【請求項18】
前記状態遷移を4つの異なる状態の間で実行するように構成された、請求項16または17に記載の画像デコーダ。
【請求項19】
あらかじめ決定された量子化ステップサイズによって、前記複数の再構成レベルセットをパラメータ化すること、および、データストリームから、前記あらかじめ決定された量子化ステップサイズについての情報を導出すること
を行うように構成された、請求項15から18のいずれか一項に記載の画像デコーダ。
【請求項20】
前記複数の再構成レベルセットの各々が、前記複数の再構成レベルセットについて一定である、あらかじめ決定された量子化ステップサイズの倍数からなる、請求項15から18のいずれか一項に記載の画像デコーダ。
【請求項21】
前記複数の再構成レベルセットのうちの再構成レベルセットの数が、2つであり、前記複数の再構成レベルセットが、
ゼロ、およびあらかじめ決定された量子化ステップサイズの偶数の倍数を備える、第1の再構成レベルセットと、
ゼロ、および前記あらかじめ決定された量子化ステップサイズの奇数の倍数を備える、第2の再構成レベルセットと
を備える、請求項15から20のいずれか一項に記載の画像デコーダ。
【請求項22】
状態値0および1のために、前記第1の再構成レベルセットを選択し、前記状態値2および3のために、前記第2の再構成レベルセットを選択するように構成された、請求項21に記載の画像デコーダ。
【請求項23】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記有意性フラグを復号することであって、前記復号が、
変換ブロックの内部の前記あらかじめ決定された変換係数の係数位置
に応じて、コンテキストを選択することによる、こと
を行うように構成された、請求項1から22のいずれか一項に記載の画像デコーダ。
【請求項24】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数(50)のための前記有意性フラグを復号することであって、前記復号が、
前記あらかじめ決定された変換係数の周囲の局所テンプレート(52)内の隣接する変換係数(51)のセットのための、前記あらかじめ決定された変換係数の前記有意性フラグより前に復号されたフラグのセットに基づいて、局所アクティビティを決定すること、および
前記局所アクティビティに応じて、コンテキストを選択すること
による、こと
を行うように構成された、請求項1から23のいずれか一項に記載の画像デコーダ。
【請求項25】
前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの第1のものを、1つの第1のパスにおいて、逐次、復号することであって、前記フラグのセットが、前記隣接する変換係数のセットのために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものを備えるようになる、こと、ならびに、前記隣接する変換係数の各々のための加数にわたる和に基づいて、前記アクティビティを計算することであって、前記加数が、前記隣接する変換係数のために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものに基づいて決定された、前記隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、こと
を行うように構成された、請求項24に記載の画像デコーダ。
【請求項26】
前記それぞれの変換係数についての、複数の再構成レベルセットの中からの、前記再構成レベルセットの選択を、状態遷移を使用して実行することであって、前記実行が、
前記状態遷移が前記それぞれの変換係数のために仮定する状態に基づいて、前記複数の再構成レベルセットの中から、前記再構成レベルセットを一意に選択すること、
前記それぞれの変換係数の前記量子化インデックスの前記パリティに応じて、走査順序において後続する変換係数のための前記状態遷移の前記状態を更新すること
による、こと、
前記走査順序に沿って、前記1つまたは複数の第1のパスを実行すること、および
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記有意性フラグを復号することであって、前記復号が、
前記状態遷移が前記あらかじめ決定された変換係数(50)のために仮定する前記状態
に応じて、コンテキストを選択することによる、こと
を行うように構成された、請求項1から25のいずれか一項に記載の画像デコーダ。
【請求項27】
前記状態に応じて、前記コンテキストを備えるコンテキストセットを選択すること、および、あらかじめ決定された変換係数の周囲の局所アクティビティ、または前記あらかじめ決定された変換係数の係数位置に応じて、前記コンテキストセットの中から前記コンテキストを選択することによって、コンテキスト適応型エントロピー復号を使用して、前記あらかじめ決定された変換係数のための前記有意性フラグを復号すること
を行うように構成された、請求項26に記載の画像デコーダ。
【請求項28】
状態0および1のために第1のコンテキストセット、状態2のために第2のコンテキストセット、ならびに状態3のために第3のコンテキストセットを選択するように構成された、請求項27に記載の画像デコーダ。
【請求項29】
前記量子化インデックスがゼロでない各変換係数の前記量子化インデックスを、逆量子化することであって、前記逆量子化が、
前記それぞれの変換係数について、走査順序に沿って、前記それぞれの変換係数に先行する変換係数の量子化インデックスのパリティに応じて、複数の再構成レベルセットの中から、再構成レベルセットを選択すること、および
前記それぞれの変換係数を、前記それぞれの変換係数の前記量子化インデックスによってインデックス付けされる、前記再構成レベルセットのうちの1つのレベル上に逆量子化すること
による、こと
前記走査順序に沿って、前記1つまたは複数の第1のパスを実行すること、ならびに
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記有意性フラグを復号することであって、前記復号が、
前記あらかじめ決定された変換係数のために選択された前記再構成レベルセット
に応じて、コンテキストを選択することによる、こと
を行うように構成された、請求項1から28のいずれか一項に記載の画像デコーダ。
【請求項30】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記パリティフラグを復号することであって、前記復号が、
前記あらかじめ決定された変換係数の係数位置
に応じて、コンテキストを選択することによる、こと
を行うように構成された、請求項1から29のいずれか一項に記載の画像デコーダ。
【請求項31】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記パリティフラグを復号することであって、前記復号が、
前記あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、前記あらかじめ決定された変換係数の前記パリティフラグより前に復号されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、前記あらかじめ決定された変換係数の周囲の前記局所テンプレート内の変換係数の数を決定すること、ならびに
前記局所アクティビティおよび/または前記変換係数の数に応じて、コンテキストを選択すること
による、こと
を行うように構成された、請求項1から30のいずれか一項に記載の画像デコーダ。
【請求項32】
前記局所アクティビティと前記変換係数の数との間の差に応じて、前記コンテキストを選択するように構成された、請求項31に記載の画像デコーダ。
【請求項33】
前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの第1のものを、1つの第1のパスにおいて、逐次、復号することであって、前記フラグのセットが、前記隣接する変換係数のセットのために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものを備えるようになる、こと、ならびに、前記隣接する変換係数の各々のための加数にわたる和に基づいて、前記アクティビティを計算することであって、前記加数が、前記隣接する変換係数のために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものに基づいて決定された、前記隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、こと
を行うように構成された、請求項31または32に記載の画像デコーダ。
【請求項34】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための前記1つまたは複数の大なりフラグのうちの第1のものを復号することであって、前記復号が、
前記あらかじめ決定された変換係数の係数位置
に応じて、コンテキストを選択することによる、こと
を行うように構成された、請求項1から33のいずれか一項に記載の画像デコーダ。
【請求項35】
コンテキスト適応型エントロピー復号を使用して、あらかじめ決定された変換係数のための第1の大なりフラグを復号することであって、前記復号が、
前記あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットのための、前記あらかじめ決定された変換係数の前記第1の大なりフラグより前に復号されたフラグのセットに基づく、局所アクティビティ、および/または、その再構成レベルがゼロでない、前記あらかじめ決定された変換係数の周囲の前記局所テンプレート内の変換係数の数を決定すること、ならびに
前記局所アクティビティおよび/または前記変換係数の数に応じて、コンテキストを選択すること
による、こと
を行うように構成された、請求項1から34のいずれか一項に記載の画像デコーダ。
【請求項36】
前記局所アクティビティと前記変換係数の数との間の差に応じて、前記コンテキストを選択するように構成された、請求項35に記載の画像デコーダ。
【請求項37】
前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの第1のものを、1つの第1のパスにおいて、逐次、復号することであって、前記フラグのセットが、前記隣接する変換係数のセットのために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものを備えるようになる、こと、ならびに、前記隣接する変換係数の各々のための加数にわたる和に基づいて、前記局所アクティビティを計算することであって、前記加数が、前記隣接する変換係数のために復号された、前記有意性フラグ、前記パリティフラグ、および前記1つまたは複数の大なりフラグのうちの前記第1のものに基づいて決定された、前記隣接する変換係数のための最小に仮定されたインデックス、または最小に仮定された再構成レベルを示す、こと
を行うように構成された、請求項35または36に記載の画像デコーダ。
【請求項38】
ゴロムライスコードを使用して、および、あらかじめ決定された変換係数の周囲の局所テンプレート内の隣接する変換係数のセットの中からの各々のための加数にわたる和に依存する、ライスパラメータを使用して、あらかじめ決定された変換係数のための前記残りを復号することであって、前記加数が、それぞれの隣接する変換係数のための量子化インデックスまたは再構成レベルに依存する、こと
を行うように構成された、請求項1から37のいずれか一項に記載の画像デコーダ。
【請求項39】
変換係数のブロックを含む画像を符号化するための画像エンコーダであって、前記画像エンコーダは、プロセッサおよびメモリを含み、前記プロセッサは、前記メモリと協働して、
前記変換係数を走査する1つまたは複数の第1のパスにおいて、
コンテキスト適応型エントロピー符号化を使用して、それぞれの変換係数について、それぞれの現在の変換係数の量子化インデックスがゼロであるか否かをその各々が示す、前記現在の変換係数のための有意性フラグを符号化すること、
それぞれの変換係数について、前記それぞれの変換係数のパリティをその各々が示す、前記変換係数のためのパリティフラグを符号化すること、
コンテキスト適応型エントロピー符号化を使用して、前記量子化インデックスがゼロでない変換係数の各々のための1つまたは複数の大なりフラグを符号化すること、
1つまたは複数のさらなるパスにおいて、
等確率性エントロピー符号化を使用して、
その前記1つまたは複数の大なりフラグが正である変換係数の各々の前記量子化インデックスの残りと、
前記量子化インデックスがゼロでない前記変換係数の各々の前記量子化インデックスの符号と
を符号化すること
を行うように構成された、画像エンコーダ。