特許第6078204号(P6078204)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ソニー株式会社の特許一覧 ▶ ソニー ヨーロッパ リミテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6078204
(24)【登録日】2017年1月20日
(45)【発行日】2017年2月8日
(54)【発明の名称】データ符号化及び復号化
(51)【国際特許分類】
   H04N 19/91 20140101AFI20170130BHJP
【FI】
   H04N19/91
【請求項の数】36
【全頁数】66
(21)【出願番号】特願2016-507051(P2016-507051)
(86)(22)【出願日】2014年4月4日
(65)【公表番号】特表2016-519903(P2016-519903A)
(43)【公表日】2016年7月7日
(86)【国際出願番号】GB2014051066
(87)【国際公開番号】WO2014167299
(87)【国際公開日】20141016
【審査請求日】2015年12月7日
(31)【優先権主張番号】1306334.2
(32)【優先日】2013年4月8日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】000002185
【氏名又は名称】ソニー株式会社
(73)【特許権者】
【識別番号】593081408
【氏名又は名称】ソニー ヨーロッパ リミテッド
(74)【代理人】
【識別番号】100104215
【弁理士】
【氏名又は名称】大森 純一
(74)【代理人】
【識別番号】100117330
【弁理士】
【氏名又は名称】折居 章
(74)【代理人】
【識別番号】100168181
【弁理士】
【氏名又は名称】中村 哲平
(74)【代理人】
【識別番号】100168745
【弁理士】
【氏名又は名称】金子 彩子
(74)【代理人】
【識別番号】100170346
【弁理士】
【氏名又は名称】吉田 望
(72)【発明者】
【氏名】シャーマン カール ジェームス
(72)【発明者】
【氏名】ガメイ ジェームス アレキサンダー
【審査官】 山▲崎▼ 雄介
(56)【参考文献】
【文献】 K. Sharman, et al.,CABAC Stream Termination,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting: Geneva, CH, 21-30 November, 2011,2011年11月 8日,JCTVC-G493,URL,HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/2011_11_G_Geneva/JCTVC-G493-v2.zip
【文献】 K. Sharman, et al.,AHG5: Range Extensions and High Bit Depths,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Incheon, KR, 18-26 Apr. 2013,2013年 4月 8日,JCTVC-M0178,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC-M0178-v1.zip
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00−19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
符号化のためのデータセットの入力データ値を符号化するデータ符号化装置であって、
現在の入力データ値の値に従って、範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、前記現在の入力データ値を前記選択されたサブレンジ内のコード値に割り当てるように構成された選択部と、
前記割り当てられたコード値及び前記選択されたサブレンジのサイズに基づいて前記一連のコード値を修正するように構成された修正部と、
前記一連のコード値を定義する前記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、前記一連のコード値のサイズが少なくとも前記所定の最小サイズになるまで前記範囲変数を連続的に増加させるように構成され、このようなサイズ増加動作に応答して、符号化されたデータビットを出力する検出部と、
1群の入力データ値を符号化した後、前記範囲変数をゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定するように構成された範囲変数設定部と
を具備するデータ符号化装置。
【請求項2】
請求項1に記載のデータ符号化装置であって、
前記利用可能な範囲変数値のサブセットは、256の値を含む
データ符号化装置。
【請求項3】
請求項1に記載のデータ符号化装置であって、
前記一連のコード値に対するサブレンジの比率は、前記入力データ値に関連付けられたコンテキスト変数によって定義される
データ符号化装置。
【請求項4】
請求項3に記載のデータ符号化装置であって、
入力データ値を符号化した後、次の入力データ値に関して使用するために、前記現在の入力データ値のために選択された前記サブレンジにおける前記一連のコード値の比率を増加させるように、前記コンテキスト変数を修正する
データ符号化装置。
【請求項5】
請求項1に記載のデータ符号化装置であって、
前記一連のコード値は、0から上限値までの範囲の値を有し、前記上限値は、前記範囲変数で定義され、前記所定の最小サイズから第2の所定値までの範囲にある
データ符号化装置。
【請求項6】
請求項5に記載のデータ符号化装置であって、
前記所定の最小サイズは256であり、前記第2の所定値は510である。
データ符号化装置。
【請求項7】
請求項1に記載のデータ符号化装置であって、
前記利用可能な範囲変数値のサブセットは、前記所定の最小サイズを含む
データ符号化装置。
【請求項8】
請求項5に記載のデータ符号化装置であって、
前記サブセットは、前記所定の最小サイズから前記第2の所定値までの範囲にある2つ以上の値を有する
データ符号化装置。
【請求項9】
請求項8に記載のデータ符号化装置であって、
前記範囲変数設定部は、前記範囲変数の現在の値に従って、上記サブセットから値を選択するように構成される
データ符号化装置。
【請求項10】
請求項9に記載のデータ符号化装置であって、
前記範囲変数設定部は、前記範囲変数の前記現在の値が特定の値から前記サブセット内の次に高い値よりも1低い値までの範囲にある場合、前記サブセットから前記特定の値を選択するように構成される
データ符号化装置。
【請求項11】
請求項1〜10のいずれか1項に記載のデータ符号化装置であって、
バイパスデータとしてデータセットを表さない係数を表すデータを符号化するように構成されたバイパスデータエンコーダと、
現在の配列と関連付けられたバイパスデータの量を検出するように構成されたバイパスデータ量検出部とをさらに具備し、
前記範囲変数設定部は、前記バイパスデータの量が閾値を超える場合、前記範囲変数を設定するが、そうでなければ、前記範囲変数を設定しないように構成される
データ符号化装置。
【請求項12】
請求項1〜11のいずれか1項に記載のデータ符号化装置であって、
前記入力データ値は、画像データを表し、
前記画像データは、複数の係数の配列を含む変換ユニットとして符号化され、
前記範囲変数設定部は、変形ユニットの符号化の終了時に、前記範囲変数を設定するように構成される
データ符号化装置。
【請求項13】
符号化のためのデータセットの入力データ値のデータ符号化方法であって、
現在の入力データ値に従って、範囲変数により定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
前記現在の入力データ値を前記選択されたサブレンジ内のコード値に割り当て、
前記割り当てられたコード値及び前記選択されたサブレンジのサイズに基づいて前記一連のコード値を修正し、
前記一連のコード値を定義する前記範囲変数が所定の最小サイズより小さいか否かを検出し、前記範囲変数が前記所定の最小サイズより小さい場合、前記一連のコード値が少なくとも前記所定の最小サイズになるまで前記範囲変数を連続的に増加させ、当該サイズ増加動作に応じて、符号化データビットを出力し、
1群の入力データ値を符号化した後、前記範囲変数をゼロに等しい少なくとも1つの最下位ビットを有する所定の利用可能な範囲変数値のサブセットから選択された値に設定する
データ符号化方法。
【請求項14】
請求項13に記載のデータ符号化方法であって、
前記利用可能な範囲変数値のサブセットは、256の値を有する
データ符号化方法。
【請求項15】
請求項13に記載のデータ符号化方法であって、
前記一連のコード値に対する前記サブレンジの比率は、前記入力データ値に関連付けられたコンテキスト変数により定義される
データ符号化方法。
【請求項16】
請求項15に記載のデータ符号化方法であって、
入力データ値を符号化した後、次の入力データ値に関して使用するために、前記現在の入力データ値のために選択された前記サブレンジ内の前記一連のコード値の比率を増加させるように前記コンテキスト変数を修正する
データ符号化方法。
【請求項17】
請求項13に記載のデータ符号化方法であって、
前記一連のコード値は、0から上限値までの範囲の値を含み、
前記上限値は、前記範囲変数で定義され、前記所定の最小サイズから第2の所定値までの範囲にある
データ符号化方法。
【請求項18】
請求項17に記載のデータ符号化方法であって、
前記所定の最小サイズは256であり、前記第2の所定値は510である
データ符号化方法。
【請求項19】
請求項13に記載のデータ符号化方法であって、
前記利用可能な範囲変数値のサブセットは、前記所定の最小サイズを含む
データ符号化方法。
【請求項20】
請求項17に記載のデータ符号化方法であって、
前記サブセットは、前記所定の最小サイズから前記第2の所定値までの範囲にある2つ以上の値を含む
データ符号化方法。
【請求項21】
請求項20に記載のデータ符号化方法であって、
前記設定は、前記範囲変数の現在の値に従って、前記サブセットから1つの値を選択することを含む
データ符号化方法。
【請求項22】
請求項21に記載のデータ符号化方法であって、
前記設定は、前記範囲変数の前記現在の値が特定の値から前記サブセット内の次に高い値より1低い値までの範囲にある場合、前記サブセットから前記特定の値を選択することを含む
データ符号化方法。
【請求項23】
請求項13に記載のデータ符号化方法であって、
データセット内で表されない係数を表すデータをバイパスデータとして符号化し、
現在の配列と関連付けられた前記バイパスデータの量を検出し、
前記バイパスデータの量が閾値を超えた場合、前記設定を適用するが、前記バイパスデータの量が前記閾値以下である場合、前記設定を適用しない
データ符号化方法。
【請求項24】
請求項13に記載のデータ符号化方法であって、
前記入力データ値は、画像データを表し、
前記画像データは、係数の複数の配列を含む変換ユニットとして符号化され、
前記変換ユニットの符号化の終了時に、前記設定を適用する
データ符号化方法。
【請求項25】
請求項13に記載のデータ符号化方法によって符号化されたデータ構造。
【請求項26】
請求項25に記載のデータ構造を記憶するデータ記憶媒体。
【請求項27】
請求項25に記載のデータ構造の配布インスタンス。
【請求項28】
請求項1に記載のデータ符号化装置を含む、ビデオデータキャプチャ・送信及び又は記憶装置。
【請求項29】
算術符号化データ値のシーケンスを復号化するためのデータ復号化装置であって、
現在の入力データ値の値に従って、範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択するように構成された選択部と、
前記選択されたサブレンジのサイズに基づいて前記一連のコード値を修正するように構成された修正部と、
符号化データ値を検出し、前記検出に応答して、前記一連のコード値のサイズを増加させ、前記範囲変数がゼロに等しい少なくとも1つの最下位ビットを有する利用可能な変数値の所定のサブセットから選択された値に設定される前記シーケンスの終端を検出するように構成された検出部と、
前記検出に応答して、前記範囲変数及び前記一連のコード値のサイズを前記選択された値に設定するように構成された範囲変数設定部と
を具備するデータ復号化装置。
【請求項30】
請求項29に記載のデータ復号化装置であって、
前記利用可能な変数値のサブセットは、256の値を有する
データ復号化装置。
【請求項31】
請求項29に記載のデータ復号化装置であって、
前記シーケンスの終端において、最後の符号化データ値から、1つ又は複数の等確率符号化データ値を検出するように構成された検出部をさらに具備する
データ復号化装置。
【請求項32】
算術符号化されたデータ値のシーケンスの復号化方法であって、
範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
前記選択されたサブレンジのサイズに基づいて一連のコード値を修正し、
符号化データ値を検出し、前記検出に応答して、前記一連のコード値のサイズを増加させ、
前記範囲変数がゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定される前記シーケンスの終端を検出し、
前記検出に応答して、前記範囲変数及び前記一連のコード値のサイズを前記選択された値に設定する
復号化方法。
【請求項33】
請求項32に記載の復号化方法であって、
前記利用可能な範囲変数値のサブセットは、256の値を含む
復号化方法。
【請求項34】
請求項32に記載の復号化方法であって、
前記シーケンスの終端において、最後の符号化データ値から、1つ又は複数の等確率符号化データ値を検出する
復号化方法。
【請求項35】
請求項13に記載のデータ符号化方法をコンピュータに実行させるコンピュータプログラム。
【請求項36】
請求項35に記載のコンピュータプログラムを記憶した非一時的機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ符号化及び復号化に関する。
【背景技術】
【0002】
本明細書の「背景技術」の記載は、本出願における背景を一般的に説明するためのものである。本発明者らの技術は、この背景技術の欄で説明される範囲において、本出願の出願時点で従来技術でないのであれば従来技術と見なしてはならない説明の側面と同様に、明示又は黙示を問わず、本出願に対する従来技術として認められるものではない。
【0003】
ビデオデータを周波数領域表現に変換し、得られた周波数領域係数を量子化し、その後、当該量子化された係数にある種のエントロピー符号化を適用するビデオデータ圧縮システム及びビデオデータ解凍システムが存在する。
【0004】
これに関して、エントロピーは1つのデータシンボル又は一連のシンボルの情報量を表していると考えられる。エントロピー符号化の目的は、(理想的には)一連のデータシンボルの情報量を表すのに必要な最小数の符号化データビットを用いた無損失な方法で、当該一連のデータシンボルを符号化することである。実際には、エントロピー符号化は、符号化されたデータのサイズが元の量子化係数のデータサイズよりも(ビット数に関して)小さくなるように実行される。より効率的なエントロピー符号化処理を行うことができれば、入力データサイズが同じ場合でも、出力データサイズを小さくすることができる。
【0005】
ビデオデータをエントロピー符号化する技術の1つとして、いわゆるコンテキスト適応バイナリ算術符号化(CABAC:context adaptive binary arithmetic coding)と呼ばれる技術がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、効率的なエントロピー符号化処理を行うことができるデータ符号化装置及びデータ符号化方法を提供することである。
【課題を解決するための手段】
【0007】
本発明によれば、請求項1に記載のデータ符号化装置、すなわち、符号化のためのデータセットの入力データ値を符号化するデータ符号化装置であって、現在の入力データ値の値に従って、範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、前記現在の入力データ値を前記選択されたサブレンジ内のコード値に割り当てるように構成された選択部と、前記割り当てられたコード値及び前記選択されたサブレンジのサイズに基づいて前記一連のコード値を修正するように構成された修正部と、前記一連のコード値を定義する前記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、前記一連のコード値のサイズが少なくとも前記所定の最小サイズになるまで前記範囲変数を連続的に増加させるように構成され、このようなサイズ増加動作に応答して、符号化されたデータビットを出力する検出部と、1群の入力データ値を符号化した後、前記範囲変数をゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定するように構成された範囲変数設定部とを具備するデータ符号化装置が提供される。
【0008】
本発明の各側面及び特徴は、添付の特許請求の範囲において定義される。
【0009】
なお、上述の一般的な説明及び以降の詳細な説明は、本発明の一例であり、本発明を限定するものではないことが理解されるべきである。
【図面の簡単な説明】
【0010】
図1】ビデオデータ圧縮及びビデオデータ解凍を行うオーディオ/ビデオ(A/V)データ送受信システムを示す概略図である。
図2】ビデオデータ解凍を行うビデオ表示システムを示す概略図である。
図3】ビデオデータ圧縮及びビデオデータ解凍を行うオーディオ/ビデオ記憶システムを示す概略図である。
図4】ビデオデータ圧縮を行うビデオカメラを示す概略図である。
図5】ビデオデータ圧縮・解凍装置を示す概略図である。
図6】予測画像の生成を示す概略図である。
図7】最大符号化ユニット(LCU:Largest Coding Unit)を示す概略図である。
図8】4つの符号化ユニット(CU:Coding Unit)の組を示す概略図である。
図9】小さな符号化ユニットに細分された図8の符号化ユニットを示す概略図である。
図10】小さな符号化ユニットに細分された図8の符号化ユニットを示す概略図である。
図11】予測ユニット(PU:Prediction Unit)の配列を示す概略図である。
図12】変換部(TU:Transform Unit)の配列を示す概略図である。
図13】部分的に符号化された画像を示す概略図である。
図14】考えられる一連の予測方向を示す概略図である。
図15】一連の予測モードを示す概略図である。
図16】ジグザグスキャンを示す概略図である。
図17】CABACエントロピーエンコーダを示す概略図である。
図18図18A図18Dは、CABAC符号化及び復号化動作を示す概略図である。
図19】CABACエンコーダを示す概略図である。
図20】CABACデコーダを示す概略図である。
図21】符号化システムの概要を示す概略図である。
図22】量子化パラメータ(QP)に対するビットレートのグラフである。
図23】変換スキップモードを有効にした6つのテストビットデプスについてのグリーンチャネルPSNRについてのビットレートのグラフである。
図24】変換スキップモードを無効にした6つのテストビットデプスについてのグリーンチャネルPSNRに対するビットレートのグラフである。
図25】14ビット変換行列による6つのテストビットデプスについてのグリーンチャネルPSNRに対するビットレートのグラフである。
図26】様々な精度DCT行列を比較する1つのテストシーケンスについてのビットレートに対するPSNRのグラフである。
図27】バイパス固定ビット符号化の使用を示す1つのテストシーケンスについてのビットレートに対するPSNRのグラフである。
図28】符号化プロファイルの例を提供する表である。
図29】CABAC処理の一部のバージョンを概略的に示すフローチャートである。
図30】CABAC処理の一部のバージョンを概略的に示すフローチャートである。
図31】CABAC処理の一部のバージョンを概略的に示すフローチャートである。
図32図32A図32Fは、異なるCABAC配列スキームを示す概略図である。
図33】CABAC処理の終了ステージのバージョンを概略的に示すフローチャートである。
図34】CABAC処理の終了ステージのバージョンを概略的に示すフローチャートである。
図35】CABAC処理の終了ステージのバージョンを概略的に示すフローチャートである。
【発明を実施するための形態】
【0011】
添付図面と共に以降の詳細な説明を参照することによって、本発明の完全な理解及びその優位性の多くが容易に理解される。
【0012】
次に各図面を参照すると、図1図4には、以下に説明する各実施形態に係る圧縮装置及び/又は解凍装置を利用する装置又はシステムが概略的に示されている。
【0013】
以下に説明する全てのデータ圧縮装置及び/又はデータ解凍装置は、ハードウェアで実現されてもよいし、例えば、特定用途向け集積回路(ASIC:application specific integrated circuit)又はフィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)、あるいはこれらの組み合わせ等のようなプログラム可能なハードウェアとして、汎用コンピュータ等の汎用データ処理装置上で動作するソフトウェアで実現されてもよい。ソフトウェア及び/又はファームウェアで実現される実施形態の場合、このようなソフトウェア及び/又はファームフェア、並びに、このようなソフトウェア及び/又はファームウェアが記憶又は提供される非一時的な機械可読データ記録媒体が、本発明の実施形態であると考えられることが理解されよう。
【0014】
図1は、ビデオデータ圧縮及びビデオデータ解凍を行うオーディオ/ビデオデータ送受信システムを示す概略図である。
【0015】
入力オーディオ/ビデオ信号10は、少なくともオーディオ/ビデオ信号10のビデオ要素を圧縮するビデオデータ圧縮装置20に供給され、例えば、ケーブル、光ファイバ、無線リンク等の送信ルート30に沿って送信される。圧縮された信号は、解凍装置40によって処理され、これにより、出力オーディオ/ビデオ信号50が提供される。リターンパスでは、圧縮装置60がオーディオ/ビデオ信号を圧縮し、当該オーディオ/ビデオ信号は送信ルート30に沿って解凍装置70に送信される。
【0016】
したがって、圧縮装置20及び解凍装置70は、送信リンクにおける1つのノードを構成することができる。また、解凍装置40及び圧縮装置60は、送信リンクにおける他の1つのノードを構成することができる。もちろん、送信リンクが単方向である場合は、一方のノードのみが圧縮装置を要求し、他方のノードのみが解凍装置を要求することになる。
【0017】
図2は、ビデオデータ解凍を行うビデオ表示システムを示す概略図である。具体的には、圧縮されたオーディオ/ビデオ信号100は解凍装置110によって処理され、これにより、表示装置120上で表示することができる解凍信号が提供される。解凍装置110は、例えば、表示装置120と同じケーシング内に設けることにより、表示装置120と一体的に形成してもよい。あるいは、解凍装置110は、(例えば、)いわゆるセットトップボックス(STB:Set Top Box)として提供されてもよい。なお、「セットトップ」という表現は、当該ボックスを表示装置120に対して特定の方向又は位置に配置する必要があることを意味するわけではない。この用語は、単に、周辺機器として表示部に接続可能なデバイスを示すために当該技術分野において使用しているにすぎない。
【0018】
図3は、ビデオデータ圧縮及びビデオデータ解凍を行うオーディオ/ビデオ記憶システムを示す概略図である。入力オーディオ/ビデオ信号130は、圧縮信号を生成する圧縮装置140に供給され、例えば、磁気ディスク装置、光ディスク装置、磁気テープ装置、又は半導体メモリやその他の記憶装置等の固体記憶装置等の記憶装置150に記憶される。再生時においては、圧縮データが記憶装置150から読み出され、解凍装置160に渡されて解凍される。これにより、出力オーディオ/ビデオ信号170が提供される。
【0019】
圧縮信号又は符号化信号、及び当該信号を記憶する記憶媒体又はデータキャリアは、本発明の実施形態であると考えられることが理解されよう。
【0020】
図4は、ビデオデータ圧縮を行うビデオカメラを示す概略図である。図4において、CCD(Charge Coupled Device)イメージセンサ及びそれに付随する制御・読出電子機器等の画像キャプチャ装置180は、圧縮装置190に渡されるビデオ信号を生成する。1つのマイクロフォン(あるいは複数のマイクロフォン)200は、圧縮装置190に渡されるオーディオ信号を生成する。圧縮装置190は、記憶及び/又は送信される(図4においては、ステージ220として包括的に表されている)圧縮オーディオ/ビデオ信号210を生成する。
【0021】
以下に説明する技術は、主に、ビデオデータ圧縮に関する。オーディオデータ圧縮を行うために、以降に説明するビデオデータ圧縮技術とともに多くの既存の技術を用いて圧縮オーディオ/ビデオ信号を生成してもよいことが理解されよう。したがって、オーディオデータ圧縮について別途説明は行わない。また、特に、放送品質ビデオデータにおいて、ビデオデータに関連するデータレートは、(圧縮及び非圧縮を問わず)一般的に、オーディオデータに関連するデータレートよりもはるかに高いことも理解されよう。したがって、非圧縮オーディオデータは、圧縮ビデオデータに追加することができ、これにより、圧縮オーディオ/ビデオ信号を形成できることが理解されよう。さらに、本発明の実施形態(図1図4参照)はオーディオ/ビデオデータに関するものであるが、以下に説明する技術は、単にビデオデータを扱う(すなわち、圧縮、解凍、記憶、表示、及び/又は送信する)システムに使用してもよいことが理解されよう。すなわち、これら実施形態は、必ずしもオーディオデータ処理と関連している必要はなく、ビデオデータ圧縮に適用することができる。
【0022】
図5は、ビデオデータ圧縮・解凍装置を示す概略図である。
【0023】
連続画像の入力ビデオ信号300は、加算部310及び画像予測部320に供給される。画像予測部320については、図6を参照して後で詳述する。加算部310は、「+」入力上で入力ビデオ信号300を受信し、「−」入力上で画像予測部320の出力を受信する事実上の減算(負の加算)動作を実行する。これにより、入力画像から予測画像が減算される。この結果、実画像と予測画像との差を表すいわゆる残差画像信号330が生成される。
【0024】
残差画像信号を生成する理由の1つは以下のとおりである。説明を行うデータ符号化技術、すなわち、残差画像信号に適用される技術は、符号化される画像において「エネルギー」が少ない場合に、より効率的に作用する傾向がある。ここで、「効率的」という用語は、生成した符号化データの量が少ないことを指す。特定の画像品質レベルにおいては、生成するデータができるだけ少ないことが望ましい(かつ、「効率的」と考えられる)。残差画像における「エネルギー」は、残差画像に含まれる情報量に関連する。仮に、予測画像と実画像とが同一だとすると、これら2つの画像の差(すなわち、残差画像)は、ゼロの情報(ゼロエネルギー)を含み、非常に容易に少量の符号化データに符号化できる。一般的に、予測処理をある程度良好に実行できる場合、残差画像データは、入力画像よりも情報が小さく(エネルギーが少ない)、容易に少量の符号化データに符号化することができると予想される。
【0025】
残差画像データ330は、残差画像データの離散コサイン変換(DCT:Discrete Cosine Transform)表現を生成する変換部340に供給される。このDCT技術自体は広く知られており、ここでの詳細な説明は行わない。しかしながら、特に、DCT動作が適用されるデータの様々なブロックの選択に関して、以降で詳細に説明する装置で用いられる技術の側面が存在する。これらについては、図7図12を参照して以降で説明する。
【0026】
なお、いくつかの実施形態では、DCTの代わりに、離散サイン変換(DST:discrete sine transform)を用いる。他の実施形態においては、変換を実行しなくてもよい。この変換は選択的に行うことができ、例えば、「変換スキップ」コマンド/モードの制御により、変換ステージが事実上バイパスされる。
【0027】
変換部340の出力、すなわち、画像データにおける各変換ブロックに対する一連の変換係数は、量子化部350に供給される。量子化スケーリング要素による単純な乗算から、量子化パラメータの制御下における複雑なルックアップテーブルの応用に至るまで、様々な量子化技術がビデオデータ圧縮の分野において広く知られている。その目的として一般的なものには2つある。1つ目は、変換データが取り得る値を量子化処理により減少させることである。2つ目は、変換データの値がゼロである可能性を量子化処理により増加させることである。これらにより、少量の圧縮ビデオデータの生成において、以下に説明するエントロピー符号化処理をより効率的に行うことができる。
【0028】
スキャン部360により、データスキャン処理が適用される。スキャン処理の目的は、非ゼロの量子化変換係数をできるだけひとまとめにするため、また、もちろん、これにより、ゼロ値の係数をできるだけひとまとめにするために、量子化変換データを再整理することである。これらの機能により、いわゆるランレングス符号化、又は同様の技術を効率的に適用することができる。したがって、スキャン処理は、(a)スキャンの一部として全ての係数が一度は選択されるように、かつ、(b)スキャンにより所望の再整理を行うことができるように、「スキャン順」にしたがって、量子化変換データ、及び、特に、変換及び量子化された画像データのブロックに対応する係数のブロックから係数を選択することを含む。スキャン順を選択する技術について以下に説明する。有効な結果をもたらすスキャン順の1つの例は、いわゆるジグザグスキャン順である。
【0029】
スキャンされた係数は、その後、エントロピーエンコーダ(EE)370に渡される。この場合もやはり、各種のタイプのエントロピー符号化を実行してもよい。以下に説明する2つの例は、いわゆるCABAC(Context Adaptive Binary Coding)システムの変形、及び、いわゆるCAVLC(Context Adaptive Variable-Length Coding)システムの変形である。一般的に、CABACは効率がよいと考えられている。ある研究では、CABACにおける符号化出力データの量は、同等の画像品質に対して、CAVLCよりも10〜20%少ないことが示されている。しかしながら、CAVLCが示す(実行する上での)複雑性のレベルは、CABACの複雑性のレベルよりもはるかに低いと考えられている。CABAC技術については、図17を参照して以降に説明し、CAVLC技術については、図18及び図19を参照して以降に説明する。
【0030】
なお、スキャン処理及びエントロピー符号化処理は、別々の処理として示されているが、実際には、組み合わせるか、又は、一緒に扱うことができる。すなわち、エントロピーエンコーダへのデータの読み出しは、スキャン順で行うことができる。これと同様の事は、以下に説明する各逆処理にも当てはまる。
【0031】
エントロピーエンコーダ370の出力により、例えば、予測部320が予測画像を生成する方法を定義する(上述及び/又は後述の)追加データと共に、圧縮出力ビデオ信号380が提供される。
【0032】
一方、予測部320自身の動作は解凍された圧縮出力データに依存するため、リターンパスも提供される。
【0033】
この機能の理由は以下の通りである。解凍処理(後述)における適切なステージで、解凍された残差データが生成される。この解凍残差データは、出力画像を生成するために、予測画像に追加する必要がある(なぜなら、元の残差データは、入力画像と予測画像との差であったため)。圧縮側と解凍側との間でこの処理が同等となるように、予測部320によって生成される予測画像は、圧縮処理中及び解凍処理中において、同一であるべきである。もちろん、装置は、解凍時において元の入力画像にアクセスすることができない。装置がアクセスできるのは、解凍画像のみである。したがって、圧縮時において、予測部320は、解凍された圧縮画像に基づいて(少なくとも、インター画像符号化について)その予測を行う。
【0034】
エントロピーエンコーダ370により実行されるエントロピー符号化処理は、「無損失(lossless)」であると考えられる。すなわち、エントロピーエンコーダ370に最初に供給されたデータと全く同じデータに置き換えることができる。したがって、リターンパスは、エントロピー符号化ステージよりも前に実装することができる。実際、スキャン部360によって実行されるスキャン処理も無損失であると考えられるが、本実施形態では、リターンパス390は、量子化部350の出力から、補足逆量子化部420の入力までとされている。
【0035】
一般的には、エントロピーデコーダ(ED)410、逆スキャン部400、逆量子化部420、逆変換部430は、それぞれ、エントロピーエンコーダ370、スキャン部360、量子化部350、及び変換部340の逆機能を提供する。ここでは、圧縮処理について説明を続け、入力圧縮ビデオ信号を解凍するための処理については、これとは別に後述する。
【0036】
圧縮処理において、量子化された係数は、リターンパス390により量子化部350から、スキャン部360の逆動作を実行する逆量子化部420に渡される。逆量子化処理及び逆変換処理がユニット420、430により実行され、圧縮−解凍残差画像信号440が生成される。
【0037】
画像信号440は、加算部450で予測部320の出力に追加され、再構築出力画像460が生成される。これにより、以下に説明するように、画像予測部320への1つの入力が構成される。
【0038】
受信した圧縮ビデオ信号470に適用される処理について説明する。圧縮ビデオ信号470は、まず、エントロピーデコーダ410に供給され、そこから逆スキャン部400、逆量子化部420、及び逆変換部430の順に供給される。その後、加算部450により画像予測部320の出力に追加される。単刀直入に言うと、加算部450の出力460は、出力解凍ビデオ信号480を形成する。実際には、信号の出力の前に、さらにフィルタリングを施してもよい。
【0039】
図6は、予測画像の生成を示す概略図であり、特に、画像予測部320の動作を示している。
【0040】
いわゆるイントラ画像予測、及びいわゆるインター画像予測又は動き補償(MC:Motion-Compensated)予測という2つの基本的な予測モードが存在する。
【0041】
イントラ画像予測は、同一画像内から得られるデータにおける画像ブロックの内容の予測を基礎としている。これは、他のビデオ圧縮技術における、いわゆるIフレーム符号化に対応する。画像全体がイントラ符号化されるIフレーム符号化とは対照的に、本実施形態では、イントラ符号化及びインター符号化の選択を、ブロック毎に行うことができる。他の実施形態では、当該選択が依然として画像毎に行われる。
【0042】
動き補償予測においては、他の隣接画像又は近接画像において、現在の画像において符号化される画像詳細のソースを定義しようとする動き情報が用いられる。したがって、理想的な例では、予測画像における画像データのブロックの内容は、隣接画像における同じ位置もしくはわずかに異なる位置にある対応ブロックを示す参照(動きベクトル)として、非常に容易に符号化することができる。
【0043】
図6に戻る。図6には(イントラ画像予測及びインター画像予測に対応する)2つの画像予測構成が示されており、その予測結果が、加算部310及び450に供給するための予測画像のブロックを提供するように、モード信号510の制御下において乗算部500によって選択される。当該選択は、どちらを選択すれば最小の「エネルギー」(上述のように、符号化を要求する情報量と考えてもよい)となるかに基づいて行われ、また、当該選択は、符号化出力データストリーム内でエンコーダに通知される。これに関して、例えば、入力画像から、2つのバージョンの予測画像の領域を試行減算し、差分画像の各ピクセル値を2乗し、乗算値を合計し、当該2つのバージョンのうち、その画像領域に関連する差分画像の平均乗算値が低いのはどちらのバージョンかを特定することによって、画像エネルギーを検出することができる。
【0044】
イントラ予測システムにおいて、実際の予測は、信号460の一部として受信された画像ブロックに基づいて行われる。すなわち、予測は、解凍装置において全く同じ予測を行うことができるように、符号化−復号化画像ブロックに基づいて行われる。しかしながら、データを入力ビデオ信号300から抽出して、イントラモード選択部520により、イントラ画像予測部530の動作を制御することもできる。
【0045】
インター画像予測では、動き補償(MC)予測部540は、例えば、動き推定部550によって入力ビデオ信号300から抽出された動きベクトル等の動き情報を用いる。これら動きベクトルは、インター画像予測のブロックを生成する動き補償予測部540によって、処理された再構築画像460に適用される。
【0046】
ここで、信号460に適用される処理について説明する。まず、信号460は、フィルタ部560によってフィルタリングされる。この処理では、変換部340により実行されるブロックに基づく処理及び後続の動作に対する影響を除去するか、少なくとも低減させるために「非ブロック化(deblocking)」フィルタが適用される。また、再構築信号460及び入力ビデオ信号300を処理することによって得られた係数を使用して、適応ループフィルタが適用される。この適応ループフィルタは、公知の技術を使用して、フィルタリング対象のデータに対して適応フィルタ係数を適用するフィルタの一種である。すなわち、フィルタ係数は、各種要素に基づいて変化し得る。どのフィルタ係数を用いるかを定義するデータは、符号化出力データストリームの一部に含められる。
【0047】
フィルタ部560からのフィルタリングされた出力は、実際には、出力ビデオ信号480を形成する。この信号は、1つ又は複数の画像記憶部570に記憶される。連続画像の記憶は、動き補償予測処理、特に、動きベクトルの生成において要求される。必要メモリを確保するため、画像記憶部570内の記憶画像は、圧縮形式で保持され、その後、動きベクトルの生成に用いるために解凍されてもよい。この特定の目的のために、公知のいかなる圧縮/解凍システムを用いてもよい。記憶画像は、より高い解像度の記憶画像を生成する補間フィルタ580に渡される。この例では、補間フィルタ580によって出力される補間画像の解像度が、画像記憶部570に記憶された画像の8倍(各寸法)となるように、中間サンプル(サブサンプル)が生成される。補間画像は、動き推定部550及び動き補間予測部540への入力として渡される。
【0048】
諸実施形態では、乗算部600を使用して、入力ビデオ信号のデータ値に因数4を乗算し(効率的には、単にデータ値を2ビット左にシフトさせる)、除算部又は右シフト部610を使用して、装置の出力で、対応する除算動作(2ビット右にシフト)を適用する任意のステージがさらに提供される。したがって、左へのシフト及び右へのシフトにより、単に装置の内部動作に対して、データが変更される。この方法により、あらゆるデータ丸め誤差の影響も低減されるので、装置内における高い計算精度を提供することができる。
【0049】
ここで、圧縮処理のために画像を分割する方法について説明する。基本的なレベルでは、圧縮される画像はサンプルブロックの配列として考えることができる。検討されているこのようなブロックの中で最大のものは、便宜的に、64×64サンプルの正方形配列を表すいわゆる最大符号化ユニット(LCU:largest coding unit)700とする(図7参照)。ここで、輝度サンプルについて説明する。4:4:4、4:2:2、4:2:0、又は4:4:4:4(GBR+キーデータ)等のクロミナンスモードによって、輝度ブロックに対応する、対応クロミナンスサンプルの数が異なる。
【0050】
符号化ユニット、予測ユニット、及び変換ユニットという基本的な3つの種類のブロックについて説明する。一般的には、LCUの再帰的な分割により、例えば、ブロックサイズ及びブロック符号化パラメータ(予測又は残差符号化モード等)が、符号化される画像の特定の特徴に応じて設定されるといった方法で、入力画像が分割される。
【0051】
LCUは、いわゆる符号化ユニット(CU)に分割されてもよい。符号化ユニットは、常に正方形であり、また、8×8サンプルから最大サイズのLCU700までのサイズを有している。符号化ユニットは、ある種のツリー構造として配置されてもよい。その結果、例えば、第1の分割が図8に示すように行われて、32×32サンプルの符号化ユニット710が与えられる。続いて行われる分割は、16×16サンプルの符号化ユニット720(図9)及び潜在的な8×8サンプルの符号化ユニット730(図10)が与えられるように、選択的な基準に基づいて行われてもよい。全体としては、この処理により、LCUと同じ大きさ、あるいは、8×8サンプルと同じ大きさを有するCUブロックの容量適応符号化ツリー構造を提供することができる。出力ビデオデータの符号化は、符号化ユニット構造に基づいて行われる。
【0052】
図11は、予測ユニット(PU)の配列を示す概略図である。予測ユニットは、画像予測処理に関連する情報を伝達するための基本的なユニットであり、換言すると、図5の装置からの出力ビデオ信号を形成するためのエントロピー符号化された残差画像データに追加される追加データである。一般的に、予測ユニットの形状は、正方形に限られない。これらは、最小(8×8)サイズより大きい限り、特に、1つの正方形符号化ユニットの半分を形成する長方形等、他の形状を採ることができる。その目的は、隣接する予測ユニットの境界が画像内の実オブジェクトの境界に(できるだけ近くに)合わせられるようにすることであり、その結果、様々な予測パラメータを異なる実オブジェクトに適用することができる。各符号化ユニットは、1つ又は複数の予測ユニットを含んでいてもよい。
【0053】
図12は、変換ユニット(TU)の配列を示す概略図である。変換ユニットは、変換・量子化処理における基本的なユニットである。変換ユニットは、常に正方形であり、4×4サンプルから32×32サンプルまでのサイズを採ることができる。各符号化ユニットは1つ又は複数の変換ユニットを含むことができる。図12における頭字語SDIP−Pは、いわゆる短距離イントラ予測分割を示している。この配列では、1次元の変換のみが行われる。したがって、4×NブロックがN回の変換により渡され、変換における入力データは、現在のSDIP−P内の既に復号化されている隣接ブロック及び既に符号化されている隣接線に基づく。
【0054】
ここで、イントラ予測処理について説明する。一般的に、イントラ予測には、同一画像内における既に符号化及び復号化されたサンプルから、サンプルの現在のブロック(予測ユニット)を予測することが含まれる。図13は、部分的に符号化された画像800を示す概略図である。ここで、画像800は、LCU基準で、左上から右下へと符号化されている。画像全体の処理により部分的に符号化されたLCUの一例がブロック810として示されている。ブロック810の上部及び左側の陰影領域820は既に符号化されている。ブロック810の内容のイントラ画像予測においては、いずれの陰影領域820も利用することができるが、その下部の陰影が付されていない領域を利用することはできない。
【0055】
ブロック810は、上述のように、イントラ画像予測処理を行うためのLCUを表しており、より小さな一連の予測ユニットに分割されてもよい。予測ユニット830の一例がLCU810内に示されている。
【0056】
イントラ画像予測においては、現在のLCU810の上部及び/又は左側に位置するサンプルが考慮される。要求されるサンプルは、ソースサンプルから予測される。当該ソースサンプルは、LCU810内の現在の予測ユニットに対して異なる位置又は方向に位置していてもよい。現在の予測ユニットに対してどの方向が適切であるかを決定するために、候補とされる各方向に基づく試行予測の結果を比較して、どの方向が入力画像の対応ブロックに最も近い結果をもたらすかを確認する。
【0057】
画像は、「スライス」基準で符号化されてもよい。1つの例では、スライスは、水平隣接グループのLCUである。しかしながら、より一般的には、残差画像全体でスライスを構成することができ、あるいは、スライスを単一のLCU又はLCUの行等とすることもできる。スライスは、独立ユニットとして符号化されるので、誤差に復元性をもたらすことができる。エンコーダ及びデコーダの状態は、スライス境界で完全にリセットされる。例えば、イントラ予測はスライス境界をまたいで実行されない。このため、スライス境界は、画像境界として扱われる。
【0058】
図14は、考えられる(候補となる)一連の予測方向を示す概略図である。8×8、16×16、又は32×32サンプルの予測ユニットに対して、全部で34の方向候補を利用可能である。予測ユニットサイズが、4×4サンプル又は64×64サンプルである特殊なケースでは、数を減らした一連の方向候補(それぞれ、17つの方向候補及び5つの方向候補)を使用することができる。方向は、現在のブロック位置に対する水平及び垂直移動により決定されるが、予測「モード」として符号化される。当該一連の方向を図15に示す。なお、いわゆるDCモードは、周囲にある上部及び左側のサンプルの単純算術平均を表す。
【0059】
図16は、スキャンパターンであるジグザグスキャンを示す概略図である。当該スキャンパターンは、スキャン部360により適用されてもよい。図16においては、DC係数がブロックの左上の位置840に位置し、増加する水平及び垂直空間周波数が左上の位置840の下側及び右側への距離を増加させる係数により表される、8×8変換係数のブロックの例についてのパターンが示されている。
【0060】
なお、いくつかの実施形態では、当該係数を逆順(図16の順番表記を利用すると右下から左上)にスキャンしてもよい。また、いくつかの実施形態では、最上段からいくつか(例えば、1から3)の水平行をまたいで左から右にスキャンを実行して、その後、残りの係数のジグザグスキャンを実行してもよい。
【0061】
図17は、CABACエントロピーエンコーダの動作を示す概略図である。
【0062】
諸実施形態に係る本機能のコンテキスト適応符号化において、データビットが1又は0である可能性の期待値又は予測値を表す確率モデル、すなわち、コンテキストに関してわずかなデータを符号化することがある。このため、入力データビットには、様々なコード値の2つ(又は、より一般的には、複数)の補足サブレンジのうち選択した1つのサブレンジ内のコード値が割り当てられ、サブレンジのそれぞれのサイズ(諸実施形態では、一連のコード値に対するサブレンジそれぞれの比率)は、コンテキスト(入力値に関連付けられ、そうでなければ関連のあるコンテキスト変数により順に定義される)により定義される。次のステップで、選択されたサブレンジの割り当てコード値及び現在のサイズに応答して、全範囲、すなわち、(次の入力データビット又は値に関して使用される)一連のコード値が修正される。その後、修正した範囲が所定の最小サイズ(例えば、元の範囲サイズの半分)を表す閾値よりも小さい場合、例えば修正した範囲を2倍(左にシフト)することによりサイズを増加させる。この倍増処理は、必要があれば、当該範囲が少なくとも当該所定の最小サイズになるまで連続して(2回以上)行うことができる。この時点で、出力符号化データビットが生成され、これにより、(複数の場合、それぞれの)倍増動作、すなわち、サイズ増加動作が行われたことが示される。別のステップにおいて、次の入力データビット又は値と共に使用するために、又は当該入力データビット又は値に関して(いくつかの実施形態では、符号化されるデータビット又は値の次のグループに関して)、当該コンテキストが修正される(すなわち、諸実施形態では、コンテキスト変数が修正される)。これは、現在のコンテキスト及び現在の「最も可能性の高いシンボル」の識別子(コンテキストによりどちらが現在0.5より大きな確率を有するかが示されていたとしても、1又は0)を新しいコンテキスト値のルックアップテーブルへの指数又は新しいコンテキスト変数を得られる適切な数式への入力として用いて実行してもよい。諸実施形態においては、コンテキスト変数の修正により、現在のデータ値のために選択されたサブレンジにおける一連のコード値の比率が増加する。
【0063】
CABACエンコーダは、バイナリデータ、すなわち、0及び1の2つのシンボルのみで表されるデータに関して動作する。当該エンコーダは、既に符号化されたデータに基づいて、次のデータに対する「コンテキスト」、すなわち、確率モデルを選択するいわゆるコンテキストモデリング処理を実行する。コンテキストの選択は、既に復号化されたデータに基づいて、デコーダに渡される符号化データストリームに追加される(コンテキストを特定する)別のデータを必要とすることなく、デコーダにおいて同じ決定が行われるように決定論的な方法で実行される。
【0064】
図17を参照して、符号化される入力データは、既にバイナリ形式でない限りバイナリコンバータ900に渡してもよい。データが既にバイナリ形式である場合、コンバータ900は(図のスイッチ910により)バイパスされる。本実施形態では、バイナリ形式への変換は、実際には、量子化変換係数データを一連のバイナリ「マップ」として表現することにより行う。バイナリマップについては後述する。
【0065】
バイナリデータは、その後、(別々の経路として概略的に示されているが、後述する諸実施形態では、わずかに異なるパラメータを用いるだけで同じ処理ステージで実際に実行することができる)「正規」経路及び「バイパス」経路の2つの処理経路のうちの1つにより処理してもよい。バイパス経路では、必ずしも正規経路と同じ形式のコンテキストモデリングを利用しないいわゆるバイパスコーダ920が用いられる。CABAC符号化のいくつかの例では、一連のデータを特に急速に処理する必要がある場合、当該バイパス経路を選択することができる。しかしながら、本実施形態では、いわゆる「バイパス」データの2つの特徴について言及する。1つ目の特徴は、バイパスデータは、50%の確率を表す固定コンテキストモデルを利用するだけでCABACエンコーダ(950,960)により処理されることである。2つ目の特徴は、バイパスデータは、一定のカテゴリーのデータに関するということである。当該データの特定例は、係数符号データである。バイパス経路を選択しない場合、図に示すスイッチ930,940により正規パスが選択される。これには、コンテキストモデラ950によって処理され、続いて符号化エンジン960によって処理されるデータが含まれる。
【0066】
図17に示すエントロピーエンコーダは、ブロック全体が0値のデータから構成される場合、データのブロック(すなわち、例えば、残差画像のブロックに関する係数のブロックに対応するデータ)を単一値として符号化する。このカテゴリーに含まれない各ブロック、すなわち、少なくともいくつかの非ゼロのデータを含むブロックに対しては、「重要性マップ」を作成する。重要性マップは、符号化されるデータのブロックにおける各位置に対して、ブロック内の対応する係数が非ゼロであるか否かを示す。バイナリ形式である重要性マップデータ自体は、CABAC符号化される。重要性マップを利用することは、重要性マップによってゼロであると示される大きさの係数に対してデータを符号化する必要はないため、圧縮に役立つ。また、重要性マップには、ブロックにおける最後の非ゼロ係数を示す特別なコードを含めることもできる。これにより、最後の高周波数/後置ゼロ(トレーリングゼロ)係数の全てを符号化から省略することができる。符号化ビットストリームにおいて、重要性マップの後には、重要性マップにより規定される非ゼロ係数の値を定義するデータが続く。
【0067】
また、別のレベルのマップデータも作成され、CABAC符号化される。その一例としては、重要性マップによって「非ゼロ」であると示されたマップ位置における係数データが実際には「1」の値を有するか否かをバイナリ値(1=yes,0=no)として定義するマップがある。他のマップは、重要性マップによって「非ゼロ」であると示されたマップ位置における係数データが実際には「2」の値を有するか否かを規定する。さらに別のマップは、重要性マップによって当該係数データが「非ゼロ」であると示されたこれらマップ位置に対し、当該データが「3以上の」値を有するか否かを示す。また、さらに別のマップは、「非ゼロ」として特定されたデータに対して、(+に対して1、−に対して0、あるいはその逆、等の所定のバイナリ表記を用いて)データ値の符号を示す。
【0068】
諸実施形態では、重要性マップ及びその他のマップは、例えば、スキャン部360により量子化変形係数から生成され、ジグザグスキャン処理(又はイントラ予測モードに係るジグザグ、水平ラスター、及び垂直ラスタースキャンから選択されたスキャン処理)を受け、その後、CABAC符号化される。
【0069】
いくつかの実施形態では、HEVC CABACエントロピーコーダは、以下の処理によりシンタックス要素を符号化する。
【0070】
TU内において(スキャン順に)最後の重要係数の位置を符号化する。
【0071】
各4×4係数グループ(これらグループは逆スキャン順に処理される)に対して、当該グループが非ゼロ係数を含むか否かを示す重要係数グループフラグを符号化する。このフラグは、最後の重要係数を含むグループには必要なく、(DC係数を含む)左上のグループに対して1であると仮定される。当該フラグが1である場合、そのグループに関する以下のシンタックス要素をそれに続いて直ちに符号化する。
【0072】
重要性マップ:
グループにおける各係数に対して、当該係数が重要である(非ゼロ値を有する)か否かを示すフラグを符号化する。最後の重要位置で示される係数に対して、フラグは必要ない。
【0073】
2以上マップ:
重要性マップの値が1である(グループの終端から逆に数えて)8つまでの係数に対して、その大きさが2以上であるか否かを示す。
【0074】
3以上マップ:
2以上マップの値が1である(グループの終端に最も近い)1つの係数に対して、その大きさが3以上であるか否かを示す。
【0075】
符号ビット:
全ての非ゼロ係数に対して、確率が等しいCABACビンとして符号ビットを符号化する。(逆スキャン順における)最後の符号ビットは、場合により、隠れている符号ビットを用いる際にパリティから推測される。
【0076】
エスケープコード:
初期のシンタックス要素により大きさが完全には表せない係数に対して、残りの係数をエスケープコードとして符号化する。
【0077】
一般的に、CABAC符号化は、既に符号化されている他のデータに基づいて、符号化対象の次のビットに対して、コンテキスト、すなわち、確率モデルを予測することを含む。次のビットが、確率モデルにより「最も確率が高い」と特定されたビットと同じである場合、「次のビットは確率モデルと一致する」という情報は、非常に効率よく符号化することができる。それと比較して、「次のビットは確率モデルと一致しない」という情報を符号化するのは効率的ではない。したがって、エンコーダの良好な動作のために、コンテキストデータの由来は重要である。「適用可能(adaptive)」という用語は、(まだ符号化されていない)次のデータに良好に適合させようとして、そのコンテキスト、すなわち、確率モデルを適用、又は符号化の間に変更することを意味する。
【0078】
簡単な例示として、書き言葉の英語において、「U」という文字は比較的珍しい。しかしながら、「Q」という文字の直後に位置する文字では、「U」は実際、一般的に用いられる。したがって、確率モデルは「U」の確率を非常に低い値に設定する可能性があるが、現在の文字が「Q」であれば、次の文字としての「U」に対する確率モデルは、非常に高い確率値に設定することができる。
【0079】
本構成では、少なくとも重要性マップ及び非ゼロ値が1又は2であるか否かを示すマップに対してCABAC符号化を行う。これら実施形態においてバイパス処理はCABAC符号化と同一であるが、確率モデルは1及び0の等しい(0.5:0.5)確率分布で固定されるという事実に対しては、少なくとも符号データ及び値が2を超えるか否かを示すマップに対して用いられる。2を超える値として特定されたこれらデータ位置に対して、いわゆるエスケープデータ符号化を個別に実行して、そのデータの実際の値を符号化することができる。この符号化は、ゴロムライス符号化技術を含んでもよい。
【0080】
CABACコンテキストモデリング及び符号化処理は、WD4:Working Draft 4 of High-Efficiency Video Coding, JCTVC-F803_d5, Draft ISO/IEC 23008-HEVC; 201x(E) 2011-10-28に詳細に記載されている。
【0081】
ここで、CABAC処理についてより詳細に説明する。
【0082】
少なくとも提案されているHEVCシステムで使用される限り、CABACは、符号化対象の次のビットに関する「コンテキスト」、すなわち確率モデルを得ることを含む。コンテキスト変数(CV:context variable)で定義されるコンテキストは、当該ビットを符号化する方法に影響を与える。一般的に、CVによって高確率予測値と定義される値と次のビットとが同一である場合、そのデータビットを定義するのに必要な出力ビットの数を低減する観点で利点がある。
【0083】
符号化処理には、符号化対象のビットをコード値の範囲にある位置にマッピングすることが含まれる。コード値の範囲は、図18Aに、下限のm_Lowから上限のm_highまでの一連の隣接整数として概略的に示されている。これら上限値と下限値との差はm_rangeであり、m_range=m_high−m_Lowである。以下に説明する様々な技術により、基本的なCABACシステムにおいて、m_rangeは128から254の間に制限される。より大きなビット数でm_rangeを表す別の実施形態では、m_rangeは256から510の間に制限されてもよい。m_Lowはいかなる値も取り得る。(例えば、)ゼロからスタートすることもできるが、後述の符号化処理の一部として変化し得る。
【0084】
コード値m_rangeの範囲は、コンテキスト変数に関して定義される境界1100により2つのサブレンジに分割される。当該境界の定義は以下のとおりである。
境界=m_Low+(CV*m_range)。
【0085】
したがって、コンテキスト変数により、全範囲は2つの補足サブレンジ、すなわち、一連のコード値のサブ位置に分割される。各サブレンジに割り当てられた一連のコード値の比率は、変数CVによって決定され、1つのサブレンジは、ゼロの(次のデータビットの)値と関連付けられ、他のサブレンジは、1の(次のデータビットの)値と関連付けられる。範囲の分割は、符号化対象の次のビットに対する2つのビット値のCVの生成により仮定される確率を表す。したがって、ゼロの値に関連するサブレンジが全範囲の半分より小さい場合、これは、次のシンボルとしてのゼロの可能性が1の可能性よりも少ないと考えられることを示す。
【0086】
考えられるデータビット値にサブレンジがどの方法を適用するかを定義するために、様々な確率が存在する。1つの例では、範囲の下側の領域(すなわち、m_Lowから境界まで)が、従来、ゼロのデータビット値に関連があるとして定義される。
【0087】
2以上のビットが単一の動作で符号化される場合、符号化対象の入力データの考えられる各値に対応するサブレンジをもたらすように3以上のサブレンジを提供することができる。
【0088】
エンコーダ及びデコーダは、どのデータビット値の確率が少ないか(多くの場合、「最小確率シンボル(LPS:least probable symbol)と称される)についての記録を維持する。CVはLPSを指す。したがって、CVは常に0から0.5の値を表す。
【0089】
ここで、次のビットは、境界により分割される時に、範囲m_rangeにマッピングされる。これは、以下に詳細に説明する技術を用いてエンコーダ及びデコーダにおいて確定的に行われる。次のビットが0である場合、m_Lowから境界までのサブレンジ内の位置を表す特定のコード値がそのビットに割り当てられる。次のビットが1である場合、境界1100からm_highまでのサブレンジにおける特定のコード値がそのビットに割り当てられる。これは、諸実施形態において現在の入力データビットの値に係る一連のコード値の複数のサブレンジの1つを選択する技術の一例、及び諸実施形態において現在の入力データ値を選択されたサブレンジの範囲内のコード値に割り当てる技術の一例を表している。
【0090】
下限m_Low及び範囲m_rangeは、その後、割り当てられたコード値(例えば、割り当てられたコード値がどのサブレンジに入るか)及び選択されたサブレンジのサイズに基づいて、一連のコード値を修正するように再定義される。符号化されたばかりのビットがゼロである場合、m_Lowは変化しないが、m_rangeはm_range*CVと等しくなるように再定義される。符号化されたばかりのビットが1である場合、m_Lowは、境界位置に移動させられ(m_Low+(CV*m_range))、m_rangeは、境界とm_highとの差分(すなわち、(1−CV)*m_range)として再定義される。
【0091】
このような修正を行った後、一連のコード値が所定の最小サイズより小さい(例えば、m_rangeが少なくとも128)か否かを検出する。
【0092】
これら変形例は、図18B及び図18Cに概略的に示されている。
【0093】
図18Bにおいて、データビットは1であり、そのため、m_Lowは以前の境界の位置に移動している。これにより、次のビット符号化配列で使用するための修正した一連のコード値が提供される。なお、いくつかの実施形態では、CVの値は、符号化されたばかりのビットの値に関して次のビット符号化のために少なくとも部分的に変えられる。これが、本技術が「適用可能」コンテキストを指す理由である。CVの修正値を利用して、新しい境界1100'を生成する。
【0094】
図18Cにおいて、0の値が符号化される。したがって、m_Lowは変化しないが、m_highは、以前の境界の位置に移動させられる。値m_rangeは、m_high−m_Lowの新しい値として再定義又は修正される。
【0095】
これにより、本例において、m_rangeが(128等の)最小可能値を下回ることになる。この結果が検出されたとき、値m_rangeは再正規化又はサイズ増加される。これは、本実施形態において、128から256の必要な範囲にm_rangeを修復するのに必要な限り何度でも倍増、すなわち、左に1ビットシフトされたm_rangeで表される。この一例を、図18Dに示す。図18Dは、必要な制限に準拠するように倍増した図18Cの範囲を表す。新しい境界1100''は、CVの次の値及び修正したm_rangeに由来する。なお、m_rangeが再正規化される場合、m_Lowも同様に再正規化又はサイズ増加される。これは、m_Lowとm_rangeとの比率を同一に維持するために行われる。
【0096】
このようにして範囲を倍増する必要があるときはいつでも、出力符号化データビットを各再正規化ステージに対して1つずつ生成する。
【0097】
このようにして、間隔m_range及び下限m_Lowは(デコーダで再生できる)CV値及び符号化ビットストリームの適応に基づいて、連続して修正され、再正規化される。一連のビットが符号化された後、得られた間隔及び再正規化ステージの数により、符号化ビットストリームは一意に定義される。このような最後の間隔を識別しているデコーダは、原理上、符号化データを再構築することができる。しかしながら、基本的な計算により、実際には、デコーダに間隔を定義する必要はないが、その間隔内にある1つの位置を定義する必要があることが実証されている。これが、エンコーダで維持されデータ符号化の終了時にデコーダに渡される、割り当てコード値の目的である。
【0098】
簡単な例を示すために、100の間隔に分割された確率空間について考える。この場合、m_Lowは確率空間の下部を表し、0及びm_Rangeは、そのサイズ(100)を表す。便宜的に、コンテキスト変数が(バイパス経路に関して)0.5に設定されると仮定すると、確率空間は50%の固定確率でバイナリビットを符号化するために用いられることになる。しかしながら、コンテキスト変数の適用可能値を用いる場合、エンコーダ及びデコーダにおいて同じ適応処理が行われるように、同じ原理が適用される。
【0099】
第1のビットに対して、各シンボル(0又は1)は50のシンボル範囲を有する。入力符号0は(例えば、)0から49(49を含む)までの値を割り当てられ、入力シンボル1は(例えば、)50から99(99を含む)までの値を割り当てられる。1が符号化対象の第1のビットである場合、ストリームの最後の値は50から99までの範囲に入る必要がある。したがって、m_Lowは50となり、m_Rangeも50となる。
【0100】
第2のビットを符号化するために、当該範囲は25のシンボル範囲にさらに分割される。0の入力シンボルは50から74の値を取り、1の入力シンボルは75から99の値を取る。以上のように、第2のビットとしてどのシンボルが符号化されても、最後の値は50から99までの範囲の値であり、第1のビットが保存される。しかしながら、第2のビットは同一の数字に符号化されている。同様に、第2のビットが第1のビットと異なる確率モデルを用いた場合でも、分割される範囲は50から99であるので、第1のビットの符号化に影響を及ぼさない。
【0101】
この処理は、各入力ビットに対して、エンコーダ側で続行され、必要なときはいつでも、例えば、m_Rangeが50を下回ったことに応答して、m_Range及びm_Lowを再正規化(例えば、倍増)する。符号化処理の終了時(ストリームが終了するとき)までに、最後の値がストリームに書き込まれる。
【0102】
デコーダ側では、最後の値がストリームから読み出される(したがって、m_Valueと呼ぶ)。例えば、その値は68である。デコーダは、最初の確率空間に分割された同一のシンボル範囲を適用し、どのシンボル範囲にあるか確認するため、その値を比較する。68は50から99までの範囲にあるため、1を第1のビットに対するシンボルとして復号化する。エンコーダと同一の方法により分割された第2の範囲を適用し、68は50から74までの範囲にあるので、例えば、0を第2のビットとして復号化する。
【0103】
実際の処理においては、エンコーダがm_Valueから各復号化シンボルの範囲の最小値を減算する(この場合、m_Valueから50が減算され、差が18となる)ことによりm_Lowを維持するので、デコーダはm_Lowを維持しなくてもよい。このシンボル範囲は、その後、常に0から(m_range−1)範囲の細分区分となる(したがって、50から74までの範囲は0から24となる)。
【0104】
このように、たとえ2ビットのみが符号化されたとしても、エンコーダは50から74までの範囲のあらゆる最終値を取ることができ、当該2ビットは同じ2ビットの「10」(1の後に0)に復号化されることが重要である。別のビットを符号化する場合にのみ、より高い精度が求められ、実際には、HEVCエンコーダは常に当該範囲の最小値の50を取る。本願において説明される実施形態は、残りのビットの値が何であるかに関わらず、適切に設定されたときに最終値が正確に復号化されることを保証する一定のビットを発見し、他の情報を伝達するために当該残りのビットを解放することにより未使用の範囲を利用しようとする。例えば、上述のサンプル符号化において、第1の数字が6(又は5)に設定された場合、第2の数字に関わらず、最終値は常に50から74までの範囲にある。したがって、第2の数字を使用して、他の情報を伝達することができる。
【0105】
以上のように、終わりのないビットのストリームを、同じ確率範囲(所与の無限精度比)を用いて繰り返し分割することにより符号化することができる。しかしながら、実際には無限精度は不可能であり、非整数は避けられる。このため、再正規化を行う。50から74までの範囲で第3のビットを復号化する場合、当該シンボル範囲は、通常、それぞれ12.5間隔を有する必要がある。しかしながら、その代わりに、m_Range及びm_Lowを倍増(そうでなければ、公約数で乗算)して、それぞれ、50及び100とすることができ、当該シンボル範囲は、100から149までの範囲の細分区分、すなわち、それぞれ25間隔となる。この動作は、最初の確率空間のサイズを遡及的に100から200に倍増することと等しい。デコーダは同一のm_Rangeを維持するので、エンコーダと同時に再正規化を適用することができる。
【0106】
コンテキスト変数CVは、CV=63における(1%等の)下限値からCV=0における50%の確率まで、様々な確率を連続的に示す(一実施形態では)64通りの考えられる状態を有するものとして定義される。
【0107】
適用可能システムにおいて、CVは、符号化対象のデータのブロックサイズによって異なる様々な周知の因子にしたがって、1ビットから次のビットに変更又は修正される。いくつかの例では、近隣及び以前の画像ブロックの状態を考慮してもよい。したがって、本明細書に記載の技術は、現在のデータ値に対して選択されたサブレンジにおける一連のコード値の比率を増加させるように、次の入力データ値に関して使用するためのコンテキスト変数を修正する例を示す。
【0108】
サブレンジを選択し、コード値に現在のビットを割り当て、一連のコード値を修正し、当該一連のコード値が最小サイズより小さいか否かを検出し、コンテキスト変数を修正する機能は、全て、一緒に動作するコンテキストモデラ950及び符号化エンジン960により実行されてもよい。したがって、それらは図17において説明を容易にするために別々の要素として記載されているが、協働してコンテキストモデリング及び符号化機能を提供してもよい。しかしながら、さらに明確にするため、これらの動作及び機能をより詳細に示す図19を参照する。
【0109】
割り当てコード値は、考えられるCVの値並びにm_rangeのビット6及びビット7の考えられる値それぞれに対して(なお、m_rangeのビット8は、m_rangeのサイズが限られるため、常に1である)、新しく符号化されたビットが関連するサブレンジにおけるコード値を割り当てられるべき位置又は位置のグループを定義するテーブルから生成される。
【0110】
図19は、上述の技術を用いたCABACエンコーダを示す概略図である。
【0111】
CVは、CV抽出部1120により、(第1のCVの場合)開始又は(それ以後のCVの場合)修正される。コード生成部1130は、CVにしたがって現在のm_rangeを分割し、サブレンジを選択し、例えば、上述のテーブルを用いて、適切なサブレンジの割り当てデータコードを生成する。範囲リセット部1140は、上述のように一連のコード値を修正するように、選択されたサブレンジのm_rangeにm_rangeをリセットする。正規化部1150は、得られたm_rangeの値が最小許容値を下回っているか否かを検出し、必要に応じて、m_rangeを1回又は2回以上、再正規化する。このような再正規化動作に対して、各出力符号化データビットが出力される。上述のように、処理の終了時に、割り当てコード値も出力される。
【0112】
図20に概略的に示すデコーダでは、CVは、エンコーダにおけるCV抽出部1120と同様に動作するCV抽出部1220により、(第1のCVの場合)開始又は(それ以後のCVの場合)修正される。コード適用部1230は、CVにしたがって、現在のm_rangeを分割し、当該データコードがどのサブレンジにあるかを検出する。範囲リセット部1240は、割り当てコード値及び選択されたサブレンジのサイズに基づいて一連のコード値を修正するように、選択されたサブレンジのm_rangeにm_rangeをリセットする。必要に応じて、正規化部1250は、受信したデータビットに応答して、m_rangeを正規化する。
【0113】
諸実施形態では、CABACストリームを終了させる技術が提供される。これら実施形態については、コード値の範囲が(上述の128ではなく)最大値である512を有し、そのため、当該範囲の上半分、すなわち、256から510に制限される1つ例のシステムに関連して説明する。
【0114】
当該技術により引き起こされる損失は、平均1.5ビットである(すなわち、従来のストリーム終了技術が引き起こす損失よりもはるかに少ない)。平均損失が1ビットである第2の変形例に係る方法も提案される。これら技術の適用には、IPCM(非周波数分離)データの送信前のCABACストリームの終了、及びスライス毎の行のためのストリームの終了が含まれることが示唆されている。当該技術は、ストリームの終了の際にCABAC変数を正確な範囲のあらゆる値に設定できるという認識に基づいている。したがって、CABAC変数は、多くの後置(最下位ビット)ゼロを有する値に設定される。その結果、当該値がデータストリームに流れていく際、ゼロは無視できるので効率的である。
【0115】
現在の技術では、CABACストリームを終了させると、8ビットがデータ・ストリームに流れる(すなわち、当該8ビットが損失又は無駄になる)。この技術は、各LCU又は画像スライスの後(すなわち、特定の各画像サブ領域に関する1群のデータ値を符号化した後)で、イントラフレームを終了し、係数バイパスデータ(符号ビット/エスケープコード)がRAW形式でビットストリームに配置される例として示される。
【0116】
CABACストリームを終了させる処理は、各スライスの終端においてIPCMデータに先立ち適用される。諸実施形態では、(便宜的に)この処理は、当該ストリームが終了される確率が平均0.54%で固定されると仮定する(データ値(1又は0)を符号化する場合、現在のm_rangeは、1又は0の確率をそれぞれ示す2つのシンボル範囲に分割される。特別な「終端ストリームフラグ」値について、1に対するシンボル範囲は常に2である。したがって、1であるデータ値の確率は、現在のm_rangeの値に依存する。いくつかの実施形態では、上述のように、m_rangeは256から510までの範囲で変化してもよいので、終了確率は、2/510=0.3922%及び2/256=0.7813%の範囲で変化する)。
【0117】
エンコーダに対して、この処理は、以下のように行われる。
【0118】
ストリームが終了されない場合、CABAC範囲m_rangeは2ずつ減らされ、CABACエンジンは、必要に応じて、1つの場所で再正規化され(すなわち、m_Low及びm_rangeが再正規化される)、現在のCABACストリームにおける処理が続行される。
【0119】
ストリームが終了される場合、CABAC「m_Low」は、「範囲−2」ずつ増やされ、当該範囲は2に設定され、CABACエンジンは、7カ所で再正規化され、それに続いて、バイナリ「1」を出力する。この処理は、8カ所の再正規化と等しく、再正規化された値は奇数にさせられる。
【0120】
上記処理が理想的でない、すなわち、ストリームの確率が変化し、又はより高い確率で固定され、又は確実(1の確率)である場合もある。
【0121】
諸実施形態によれば、たった2回の再正規化で、CABACストリームを速やかに終了できる方法が提供される。この方法における損失は(平均で)1.5ビットであり、デコーダ及びエンコーダの複雑性への影響は無視できるほど小さい。CABACデコーダの複雑性は増加するものの、オーバーヘッドをたった1ビットに減らすことができる変形例の方法も示されている。当該2つの方法は、終了の変数確率がある場合、一般的な適用可能コンテキスト変数とともに用いることができる。また、当該2つの方法は、(非適用可能コンテキスト変数と類似した)固定確率メカニズムとともに用いることもできる。
【0122】
なお、上述のように、m_Low及びm_Rangeは一緒に再正規化される。
【0123】
1 アルゴリズム
1.1 方法
エンコーダのステップは以下のとおりである。
【0124】
m_Low=(m_Low+128)&〜127{又はm_Low=(m_Low+127)&〜127}
m_Lowの再正規化を2ステージ強制的に行い、test_write_out()を呼び出す[その値をストリームに書き込む]。
次のCABACストリームの符号化に先立ち、m_Rangeを510,m_Lowを0に設定する。
【0125】
注記:&はAND操作であり、〜はバイナリ反転を示す(したがって、〜127は10進法の127に対応するバイナリ値をバイナリ反転させたものである。その結果、(最下位ビット又は1に等しいLSBを複数有する)10進法における127等の数字のバイナリ反転を伴うAND操作は、得られる値のLSBの数をゼロに設定することと等しくなる)。test_write_out()関数は、m_Lowの先端(MSB終端)の任意のビットが出力ストリームに送信されるのに適しているか否かを確認し、適している場合、それらを書き込む。上述の擬似コードに関連して、「強制再正規化」により作成された新しいビットが、この操作により書き込まれる。
【0126】
デコーダのステップは以下のとおりである。
【0127】
入力ストリームを7ビット戻す(すなわち、読み込み位置を7ビット移動させる)。
次のCABACストリームの復号化に先立ち、m_Rangeを0に設定し、ビットストリームからm_Valueを読み込む。
【0128】
この方法は、デコーダ及びエンコーダに対する処理の影響が少ない。
【0129】
なお、m_Lowに関して、繰り返しm_Lowに追加することで、エンコーダはストリームを生成する。デコーダは、エンコーダの最終結果で開始し、それから繰り返し減算することで、当該ストリームを読み出す。デコーダは、m_Lowではなくストリーム「m_uiValue」(又は、本明細書の注記にあるm_Value)から読み出したビットを呼び出す。当該ビットは、ビットストリームから読み込むべきものである。これは、諸実施形態において、デコーダがm_uiValueと同様にm_Lowを保持する必要があり、エンコーダの動作を把握している場合に関連する。この場合、エンコーダのm_Lowと全く同じ方法で、m_Lowはデコーダで生成される。
【0130】
変形例に係る方法
この方法では、デコーダがm_Lowを保持する必要があるので、現在のデコーダの複雑性が増加する。m_Lowの維持が他の提案で必要になる場合、複雑性の増加量は最小になる。
【0131】
エンコーダのステップは以下のとおりである。
【0132】
test256を(m_Low+255)&〜255にする。
(test256+256<m_Low+m_Range)の場合、
m_Low=m_test256
m_Lowの再正規化を1ステージ強制的に行い、test_write_out()を呼び出す。
それ以外の場合(上述のように)
m_Low=(m_Low+128)&〜127{又はm_Low=(m_Low+127)&〜127}
m_Lowの再正規化を2ステージ強制的に行い、test_write_out()を呼び出す。
次のCABACストリームの符号化に先立ち、m_Rangeを510,m_Lowを0に設定する。
【0133】
デコーダのステップは以下のとおりである。
【0134】
test256を(m_Low+255)&〜255にする。
(test256+256<m_Low+m_Range)の場合、
ストリームを8ビット戻す
それ以外の場合(上述のように)
ストリームを7ビット戻す
次のCABACストリームの復号化に先立ち、m_Rangeを0,m_Lowを0に設定し、ビットストリームからm_Valueを読み出す。
【0135】
理論
CABACエンコーダについて、m_Lowに連結されるストリームに書き込まれ(又は記憶され)るデータは、最終出力が取ることができる最小値を示すnビット値のlowである。最大値highは、low及びm_Rangeの合計であり、エンコーダによって256(256を含む)から511(511を除く)までの範囲に維持される変数である。ストリームの終端において、low(lowを含む)からhigh(highを除く)のあらゆる値を、復号化に影響することなく、最終出力値として選択することができる。復号化がn個のLSBの値に依存することなく行われる場合、当該n個のLSBは、ビットストリームの次のセクションから得られるデータで置き換えることができる。
【0136】
vをlowからhighの値とすると、n個のLSBは0であり、最後のn個のLSBが1の場合、得られる値Vは、依然としてhighより小さい。「high−low」は少なくとも256なので、値vは、常に、0である少なくとも7個のLSBを有するlowからhighまでの範囲にある。すなわち、値vは、128で割り切れるlowからhighまでの範囲にある第1の値である。
【0137】
これを実現する最も単純な方法は、一般的な2の累乗配列ルーチンである。例えば、v=(low+127)&〜127である。しかしながら、範囲は少なくとも256なので、v=(low+128)&〜127でも十分である(その結果、エンコーダは、わずかに小さくなる)。
【0138】
ビットストリームの現在の部分について、エンコーダは、下位7ビットを除いて、値「v」を出力する。これは、m_Lowを2箇所で再正規化することで実現される。ビットストリームの終端において、デコーダは、ビットストリームの次のセクションから7ビット読み込み、したがって、当該ビットストリームを7ビット「戻す」必要がある。
【0139】
ストリームを完全に復号化するために、下位8ビットが必要ない場合もある。最も簡単な実例は、「m_Low=0」であり、これらは代替アルゴリズムにより調査される。当該代替アルゴリズムにおいて、0のLSBを8個有するlowからhighまでの範囲にある値vが計算され、対応する値Vが存在するか否かを確認するためにtestが適用される。この決定処理には、low及びhighにおけるテストが必要である。また、デコーダも同じ決定をしなければならないので、当該デコーダはm_Lowを追跡する必要がある。
【0140】
エンコーダアルゴリズムの両方のバージョンにおいて、7ビットパスに対して異なるビットストリームをもたらす選択があるが、当該選択は同じデコーダで復号化することができる。
【0141】
上述の図19を参照して、ユニット1120及び1130は、一連のコード値の複数の補足サブレンジの1つを選択する諸実施形態のセレクタ及び現在の入力値をコード値に割り当てるデータ割り当て部を指す。ユニット1140は、一実施形態のデータ修正部を表す。ユニット1150は、一連のコード値が最小サイズより小さいか否かを検出する一実施形態の検出部を表し、これにより当該検出部の他の機能を実行する。また、ユニット1150は、上述及び下記のデータ終了機能を実行し、特に、いつストリームを終了するかに関する決定を行うことで、一実施形態のデータ終了部を表す。
【0142】
上述の図20を参照して、ユニット1220,1230,1240、及び1250は、これらのユニットに関して上述の機能を実行するよう動作可能である点で、まとめて諸実施形態のポインタコントローラ及び設定部を表す。
【0143】
適用例
上記構成について考えられる適用例は、以下のものを含む。
【0144】
1.特に、確率が0.54%よりも著しく高いことがある「スライス毎の行(row−per−slice)」スタイルの構成におけるスライスに対する最後の符号化LCUの終了。
この構成において、諸実施形態では、ビデオデータを表す連続入力データ値を符号化するデータ符号化方法が提供される。当該方法は、現在の入力データ値に係る一連のコード値の複数の補足サブレンジの1つを選択し(当該一連のコード値に関連するサブレンジの比率は、当該入力データ値と関連するコンテキスト変数によって定義される)、現在の入力データ値を選択されたサブレンジ内のコード値に割り当て、割り当てられたコード値及び選択されたサブレンジのサイズに基づいて一連のコード値を修正し、一連のコード値が所定の最小サイズより小さいか否かを検出し、小さい場合、少なくとも当該所定の最小サイズとなるまで一連のコード値のサイズを連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、現在のデータ値について選択されたサブレンジ内の一連のコード値の比率を増加させるように次の入力データビット又は値に関して使用するためにコンテキスト変数を修正し、他のビデオデータを参照することなく符号化されたビデオデータのスライス内にあるビデオデータの一連のブロックに対応する1群の入力データ値を符号化した後、一連のコード値の終端を定義する値をゼロに等しい複数の最下位ビットを有する値に設定し、一連のコード値のサイズを増加させ、一連のコード値の終端を定義する値を出力データに書き込むことで、出力データを終了することを含む。
【0145】
2.考えられる最後のスライスのLCUが確実になった後の、スライスに対する考えられる最後のLCUの終了。
この構成において、諸実施形態では、ビデオデータを表す連続入力データ値を符号化するデータ符号化方法が提供される。当該方法は、現在の入力データ値に係る一連のコード値の複数の補足サブレンジの1つを選択し(一連のコード値に関連するサブレンジの比率は、入力データ値に関連するコンテキスト変数で定義される)、現在の入力データ値を選択されたサブレンジ内のコード値に割り当て、割り当てコード値及び選択されたサブレンジのサイズに基づいて一連のコード値を修正し、一連のコード値が所定の最小サイズより小さいか否かを検出し、小さい場合、少なくとも当該所定の最小サイズまで一連のコード値のサイズを連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、現在のデータ値について選択されたサブレンジにおける一連のコード値の比率を増加するように、次の入力データビット又は値に関して使用できるようにコンテキスト変数を修正し、他のビデオデータを参照することなく符号化されるビデオデータのスライス全体を表す1群の入力データ値を符号化した後、一連のコード値の終端を定義する値をゼロに等しい複数の最下位ビットを有する値に設定し、一連のコード値のサイズを増加させ、一連のコード値の終端を定義する値を出力データに書き込むことにより、出力データを終了させることを含む。
【0146】
3.可能であればコンテキスト変数とともに行うIPCMデータに先立つ終了。
この構成において、諸実施形態では、周波数分離ビデオデータを表す連続入力データ値を符号化するデータ符号化方法が提供される。当該方法は、現在の入力データ値に係る一連のコード値の複数の補足サブレンジの1つを選択し(一連のコード値に関連するサブレンジの比率は、当該入力データ値と関連するコンテキスト変数によって定義される)、現在の入力データ値を選択されたサブレンジ内のコード値に割り当て、割り当てられたコード値及び選択されたサブレンジのサイズに基づいて、一連のコード値を修正し、一連のコード値が所定の最小サイズより小さいか否かを検出し、小さい場合、当該一連のコード値のサイズが少なくとも当該所定の最小サイズとなるまで連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、現在のデータ値について選択されたサブレンジ内の一連のコード値の比率を増加させるように、次の入力データビット又は値に関して使用するために、コンテキスト変数を修正し、符号化対象の次のグループのデータ値が非周波数分離ビデオデータを表すように1群の入力データ値を符号化した後、一連のコード値の終端を定義する値をゼロに等しい複数の最下位ビットを有する値に設定し、一連のコード値のサイズを増加させ、一連のコード値の終端を定義する値を出力データに書き込むことによって、出力データを終了することを含む。
【0147】
4.「未処理ビット」メカニズムが長くなるのを防ぐためのストリームの終了。
この構成において、諸実施形態では、連続入力データ値を符号化するデータ符号化方法が提供される。当該方法は、現在の入力データ値に係る一連のコード値の複数の補足サブレンジから1つを選択し(一連のコード値に関連するサブレンジの比率は、当該入力データ値と関連するコンテキスト変数によって定義される)、現在の入力データ値を選択されたサブレンジ内のコード値に割り当て、割り当てられたコード値及び選択されたサブレンジのサイズに基づいて、一連のコード値を修正し、一連のコード値が所定の最小サイズより小さいか否かを検出し、小さい場合、一連のコード値のサイズを少なくとも当該所定の最小サイズとなるまで連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、現在のデータ値について選択されたサブレンジにおける一連のコード値の比率を増加させるように、次の入力データビット又は値に関して使用するためにコンテキスト変数を修正し、異なる符号化技術により符号化される一連のデータ値が所定のサイズを超えているか否かを検出し、超えている場合、一連のコード値の終端を定義する値をゼロに等しい複数の最下位ビットを有する値に設定し、一連のコード値のサイズを増加させ、一連のコード値の終端を定義する値を出力データに書き込むことにより、出力データを終了することを含む。
【0148】
本明細書の以降の説明は、上述したエンコーダ及びデコーダ等の動作を、よりビデオ解像度が高く、それに応じて(負のQPを含む)QPが低い動作に発展させることに関する。コーデックが高いビット深さを正確にサポートする場合、動作QPは、場合により、低い必要がある。HEVCにより定義されるエンコーダ及びデコーダ等に存在する内部の精度制限により引き起こされる可能性がある、考えられる誤差源について説明する。これら精度に変化を与えることで、誤差を緩和することができ、これにより、HEVCの動作範囲が拡張される。また、エントロピー符号化における変化も提示される。
【0149】
本願の出願時点において、HEVCバージョン1は、8ビット及び10ビットのコーデックを表す。バージョン2は、12ビット及び14ビットの動作を含むことになっている。入力データビット深さを14まで可能にするために試験ソフトウェア又は実証ソフトウェアが書き込まれているが、14ビットを符号化するコーデックの能力は、コーデックが8ビット又は10ビット解像度データを処理する方法に対応するとは限らない。いくつかの例では、内部処理により、解像度の事実上の損失を招くノイズが発生することがある。例えば、14ビットの入力データに対するピーク信号対雑音比(PSNR:peak signal to noise ratio)が非常に低ければ、最下位2ビットはノイズに対して事実上低減され、コーデックは12ビットの解像度でのみ事実上動作する。したがって、出力データの事実上の(有効な)解像度を著しく減少させることに関して多くのノイズ、誤差、又は他の副作用を発生させることなしに、高解像度入力データ(例えば、12ビット又は14ビット解像度入力データ)を使用できるようにする内部動作機能をシステムに持たせようとすることは適切である。
【0150】
「ビットデプス」という用語及び変数bitDepthは、ここでは、入力データ及び/又はコーデック内で実行されるデータ処理の(文字に係る)解像度を示すために使用される(後者は、HEVCソフトウェア実証モデル用語を用いた「内部ビットデプス」としても知られている)。例えば、14ビットのデータ処理に対して、bitDepthは14である。
【0151】
8ビット及び10ビットのコーデックに関連して、正の範囲(0より大きい)の量子化パラメータ(QP)について説明する。しかしながら、入力データの解像度における(8を超える)各追加ビットに対して、最小可能QP(minQP)は、0よりも6小さくてもよい。すなわち、minQP=−6*(bitDepth−8)である。
【0152】
変数「PSNR」又はピークSNRは、平均2乗誤差(MSE)及びビットデプスの関数として以下のように定義される。
PSNR=10*log10(((2bitDepth)−1)/MSE)
【0153】
以下に説明する図23から分かるように、コーデック実行例の内部処理ビットデプスがどのような値を取っても、一般的な傾向として、PSNR曲線は90dB付近でピークを迎える。(PSNR曲線のピークに対応するQPよりも)負のQPに対しては、実際、PSNRパフォーマンスが低下する。
【0154】
PSNRの式を用いて、以下のような、所与のビットデプス及びMSEに対するPSNRの表が得られる。
【0155】
【表1】
【0156】
14ビットのコーデックが、72.2dBのPSNRを実現できるのみである場合、各出力値は、対応する元の値の±4の範囲でのみ正確となる。したがって、2つの最下位ビットは、事実上のノイズであり、コーデックは、出力に2つの追加ランダムビットを追加した12ビットのコーデックと同等のものとなる(なお、この分析は、平均に基づくものであり、実際には、画像のいくつかの部分において、平均よりも良好又は低質のものが得られることがある)。
【0157】
この議論を拡張して、純粋に数字上の方法でPSNRを比較すると、最善のシステムは、実際には、無損失な符号化を実行でき、無限のPSNR(MSE=0)を実現する8ビットシステムであると考えられる。しかしながら、これは最初にnビット(nはもともと、8ビットより大きい)から8ビットにビデオを丸める損失、あるいは切り取る損失を考慮していない。この手法は、以下の例によって一般化できる。
【0158】
無損失な(n−1)ビットシステムをnビットのデータを符号化するのに利用できる場合、出力において、観察されるnビットのMSEは(0+1)/2=0.5となる。
【0159】
無損失な(n−2)ビットシステムをnビットのデータを符号化するのに利用できる場合、出力において、観察されるnビットのMSEは(0+1+2+1)/4=1.5となる。
【0160】
無損失な(n−3)ビットシステムをnビットのデータを符号化するのに利用できる場合、出力において、観察されるnビットのMSEは(0+1+2+3+4+3+2+1)/8=5.5となる。
【0161】
無損失な(n−4)ビットシステムをnビットのデータを符号化するのに利用できる場合、出力において、観察されるnビットのMSEは(0+1+2+3+4+5+6+7+8+7+6+5+4+3+2+1)/16=21.5となる。
【0162】
したがって、前述の例に戻ると、14ビットシステムが21.5又はそれより少ない(71.0dBに等しい)MSEを実現しない場合、及び無損失な10ビットシステムのビットレートが類似している場合、数字的に言って、10ビットのみが事実上符号化される。
【0163】
「m」のMSEを有する損失の多い、低いビットデプスの(n−r)ビットシステムを考慮する。このシステムを用いてより高いビットデプスのnビットのデータを符号化する場合、(2mのMSEが与えられる。
【0164】
例えば、損失の多い(n−1)ビットシステムに対して、nビットシステムにおけるMSEは4m。損失の多い(n−2)ビットシステムに対して、nビットシステムにおけるMSEは16m。損失の多い(n−3)ビットシステムに対して、nビットシステムにおけるMSEは64m。損失の多い(n−4)ビットシステムに対して、nビットシステムにおけるMSEは256m。
【0165】
したがって、損失の多い低いビットデプスのシステムがより高い(n−ビット)ビットデプスのデータを符号化する場合について、一般的にnビットドメインにおいて観察されるMSEに影響を与えるのは、主にその損失である。したがって、単純なPSNR図を用いて、確実に品質を比較することができる。
【0166】
(本願の出願時における)HEVCエンコーダの実行は、(図23に示すように)90dBでピークを迎える。これは、11ビットデータの符号化には適切であると考えられる。この動作点において、これ以上の改善が得られるか否かについての問題については、以下に説明する。
【0167】
最初に、誤差の原因について説明する。
【0168】
コアHEVCシステム(バージョン1)は、8ビット及び10ビット動作に対して設計されている。ビット数が増えるにつれ、システムの部分の内部精度が、誤差、ノイズ、又は全解像度の事実上の損失につながる副作用の誤差の原因に関連性を有することがある。
【0169】
図21は、HEVCエンコーダ等の上述のタイプのエンコーダを通過するデータのフローを簡単に示す概略図である。図21に示す形式で、この処理を要約する目的は、システムにおける動作解像度の制限の可能性を示すことである。なお、このため、全てのエンコーダの機能性を図21に示しているわけではない。
【0170】
一定のビットデプスの入力データ1300は、イントラ予測又はインター予測を実行して実際の入力画像から予測画像を減算する予測ステージ1310に供給され、これにより、一定のビットデプスの残差データ1320が生成される。したがって、ステージ1300は、一般的に、図5に示すユニット320及び310に対応する。
【0171】
残差データ1320は、2D変換式における左右の行列乗算に対応する(ステージ1及びステージ2として表される)変換処理の複数のステージを含み、一定の解像度を有する1つ又は複数の組の変換行列1340にしたがって動作する変換ステージ1330により周波数変換される(変換は行列乗算処理により実行される)。MAX_TR_DYNAMIC_RANGEと称される変換処理の最大ダイナミックレンジ1350は、本処理において実行される計算に適用される。変換ステージの出力は、MAX_TR_DYNAMIC_RANGEに係る一連の変換係数1360である。変換ステージ1330は、一般的に、図5に示す変換部340に対応する。
【0172】
係数1360は、その後、一般的に図5に示す量子化部350に対応する量子化ステージ1370に渡される。当該量子化ステージは、(諸実施形態では、MAX_TR_DYNAMIC_RANGEと同じ)最大ダイナミックレンジENTROPY_CODING_DYNAMIC_RANGEのクリッピングを含む量子化係数・スケーリングリスト1380の制御のもと、乗算シフトメカニズムを用いてもよい。当該量子化ステージの出力は、(図示しないフルエンコーダにおいて)図5に示すスキャンユニット360及びエントロピーエンコーダ370によって表されたもの等のエントロピー符号化ステージに渡されるENTROPY_CODING_DYNAMIC_RANGEに係る一連の量子化係数1390である。
【0173】
図21に関して記載された表記を用いて、様々な予測及びRQT(残差四分木)によって引き起こされるノイズ形成及びレート歪み最適化による量子化(RDOQ:rate distortion optimized quantisation)決定処理を(便宜的に)無視して、HEVCにおける計算ノイズの主な原因について以下に説明する。
【0174】
・変換行列係数値
理想的には、変換係数に適用される逆変換により、元の入力値を再生する。しかしながら、これは計算上の整数の機能により制限される。HEVCにおいて、変換行列係数は6つの分数ビットを有する(すなわち、これらは既に6の左シフトを有する)。
【0175】
・各変換ステージ後のMAX_TR_DYNAMIC_RANGEへのシフト結果
先の変換により、bitDepth+log(size)ビットのサイズの値が得られる。第1ステージの変換後、ビットにおける係数の幅は、(追加ビットにより精度をより高く維持できるものの)少なくともbitDepth+log(size)である。しかしながら、HEVCにおいて、これら中間物は、MAX_TR_DYNAMIC_RANGEを超えないように先の(エンコーダのみ)変換においてシフトされる。第2ステージにおいても同様である。逆変換において、各ステージの出力における値は、MAX_TR_DYNAMIC_RANGEにクリップされる。
【0176】
MAX_TR_DYNAMIC_RANGEがbitDepth+log(size)より小さい場合、先の変換により得られる値は、実際には、量子化ステージにおいて(右ではなく)左にシフトされ、15ビット(ENTROPY_CODING_DYNAMIC_RANGE)にクリップされる。実際には、ENTROPY_CODING_DYNAMIC_RANGEがbitDepth+log2(size)+1より小さい場合、クリッピングはQPが(4−(6*(bitDepth−8)))より小さい場合に実行される。
【0177】
HEVCにおいて、32x32ブロックの係数はQP<−8のためにクリップされることもあるが、15のMAX_TR_DYNAMIC_RANGE(及びENTROPY_CODING_DYNAMIC_Range)が10ビットまでの動作に用いられる。また、内部精度のための上部空間が欠乏していると、低いQPに対して誤差が発生することもある。
【0178】
・量子化の際に追加されるノイズ
エンコーダ及びデコーダの量子化部及び逆量子化部は、量子化の際にノイズを追加させるものの、追加ノイズはスケーリングリストが適用される際に気付かずに追加されることがあり、また、アレイ「quantScales」及び「invQuantScales」において定義される量子化係数は必ずしも完全な逆数ではないので、気付かずに追加されることもある。
【0179】
変換行列の精度及びMAX_TR_DYNAMIC_RANGEの効果について以下に説明する。
【0180】
経験的データは、いわゆるSVTテストセット(4Kビデオからスケールダウンした16ビットで1920x1080 50p)からの5つのビデオシーケンスの符号化の(いわゆるイントラ符号化プロファイルにしたがった)分析により得られた。これらのシーケンスの中で、最初の150フレームのみが試験において使用された。Traffic_RGB(12ビットにおいて2560x1600 30p)と称される6番目の配列は、本願の出願時点でHEVCに適用可能な、一般的な範囲拡張(Range extensions)試験の条件によって定義される。
【0181】
経験的テストにおいて、ファイル(入力データ)ビットデプスが試験中の内部ビットデプス(コーデックの入力ビットデプス)よりも小さかった場合、サンプルにパディングをした(LSBを0に設定した)。ファイルビットデプスが内部ビットデプスより大きい場合、サンプルを縮小し、丸めた。
【0182】
以下の説明では、bitDepthを用いて入力データのビットデプスではなく内部ビットデプスについて記載している。16までの内部ビットデプス(bitDepth)を有するシステムについて考える。
【0183】
図22は、図21に示すエンコーダシステムの経験的性能を内部ビットデプスの数で概略的に示す量子化パラメータ(QP)に対するビットレートのグラフである。図23は、QPに対する(1つのチャンネルに対する経験的データを取得するのはより簡単であること、及びグリーンは出力ビデオの視聴者の認識に最も貢献するチャンネルであることに基づく)グリーンチャンネルについてのPSNRのグラフである。図22のグラフは、16ビット(QPは−48〜−26)、14ビット(QPは−24〜−14)、12ビット(QPは−12〜−2)、10ビット(QPは0〜10)及び8ビット(QPは12〜22)の処理に対するデータの合成により形成される。垂直ライン1400は、ビットデプスが変化する点を概略的に示す。図22における複数の曲線は、異なるテストシーケンスで得られる結果に対応する。
【0184】
図22は、ビットレートが一般的にQPに対して単調に変化することを示している。
【0185】
図23を参照して、bitDepth=8及びbitDepth=10に対するPSNRは、4以下(各曲線における1番右から3つのデータ点)のQPで明確に増加する。QP4において、8ビットに対する量子化約数は1(10ビットに対してQPは−8)であり、考えられる唯一の誤差源としてDCT及びIDCT並びに量子化及び逆量子化係数の間の不整合をもたらす。システムが無損失処理に向かうと、MSEはゼロに接近し、SNRは急上昇する。図24は、一連の異なる内部ビットデプス(8,10,12,14,16)における1つのテストシーケンスについてのビットレートに対するPSNRのグラフである。5つの曲線は、そのほとんどの範囲において相互にほぼ正確に重なっており、そのため、容易に区別することができない。
【0186】
同様の動作点における10ビットシステムは、主に2つの最下位ビットにおいて誤差を有し、8ビットの精度のみを考慮すると無損失な処理に近づいていることを示す。しかしながら、本明細書において示すように、10ビットビデオを8ビットビデオに変換する動作についても考慮しなければならない。これは、低い精度を考慮すると隠れている(すなわち、経験テストにおける結果として明確に示されていないが、依然としてより高い全SNRをもたらす)1.5のMSEを追加することになる。
【0187】
ピークSNRに対する内部精度に制限されないシステムにおいて、無損失処理に向かう増加は、QPが(4−(6*(bitDepth−8)))未満に減少する際の各bitDepthについて確認することができる。これは、MAX_TR_DYNAMIC_RANGE=21,ENTROIPY_CODING_DYNAMIC_RANGE=21ビット及び14ビット変換行列,RDOQ無効、及び変換スキップ無効のビットデプス(8,10,12,14,16)の範囲のビットレートに対するグリーンチャネルPSNRのグラフである図25に示されている。5つのカーブは、(8ビット曲線の)部分1420、(10ビット曲線の)部分1430、(12ビット曲線の)部分1440、(14ビット曲線の)部分1450、及び(16ビット曲線の)部分1460を除いて相互に重なっている。同じ数のビットについて、図24に示すものよりも著しく高いSNRが得られることが分かる。
【0188】
経験的結果により、本発明の諸実施形態では、変換行列の精度は、少なくともbitDepth−2であることが示された。図26は、様々な精度DCT行列と比較する、bitDepth=10及びMAX_TR_DYNAMIC_RANGE=17の1つのテストシーケンスのグリーンチャネルのビットレートに対するPSNRのグラフである。
【0189】
諸実施形態では、MAX_TR_DYNAMIC_RANGEは、bitDepthよりも少なくとも(log(size)の最小値である)5大きくすべきである。符号化効率をさらに改善するための追加精度について示した。
【0190】
諸実施形態では、ENTROPY_CODING_DYNAMIC_RANGEは、少なくともbitDepth(log(size)の最大値に対して(4−(6*(bitDepth−8)))+5より小さいQPによって適用された「量子化因子」について1)よりも6大きくすべきである。最小QP値に対するクリッピングと関係ない他の実施形態では、ENTROPY_CODING_DYNAMIC_RANGEは、少なくともbitDepthよりも5(log(size)の最小値)大きくすべきである。
【0191】
16ビットシステムに対して、変換行列精度は、14に設定すべきであり、MAX_TR_DYNAMIC_RANGEは21に設定すべきであり、ENTROPY_CODING_DYNAMIC_RANGEは22に設定すべきである。より高い内部精度を有することが有害とは考えにくいので、これらパラメータについても異なるbitDepthsで試験し、同じ数のビットについては著しく高いSNRが得られ、精度を上昇させたシステムは16までのbitDepthsに適したPSNR/MSE動作点を有することを実証する結果を得た。
【0192】
範囲拡張(Range Extensions)が全てのビットデプスに対する単一の新しいプロファイルの生成を意図している場合、上述のシステムは適切である。しかしながら、異なるプロファイルを異なる最大bitDepthsについて記載しようとする場合、異なるパラメータ値を有することは、最も高いプロファイルを必要としないシステムにおけるハードウェアの複雑性を低減するのに有用である可能性がある。いくつかの実施形態では、異なるプロファイルが変換行列精度、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEについて異なる値を定義することがある。
【0193】
他の実施形態では、プロファイルは、いくつか又は全ての変換行列精度、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEの値を(選択基準となる実行コストを有する)エンコーダ、又はbitDepth等のサイド情報の機能によって可能値のリストから選択することを可能にする。しかしながら、変換行列精度が変化し、そのため別の実施形態においてたった1つの変換行列精度がプロファイルに対して定義される場合、これは、複数組の変換行列を必要とすることがある。その変換行列精度は、プロファイルが設計される最大ビットデプスに対する最大ビットデプスの推奨値に対応する。考えられる一連のプロファイルを図28を参照して以下に示す。
【0194】
変換行列精度、MAX_TR_DYNAMIC_RANGE,ENTROPY_CODING_DYNAMIC_RANGE、及びbitDepthの値の例を以下の表に示す。
【0195】
【表2】
【0196】
このテーブルにおいて、「*」が付された値は、現在のHEVCの記述に一致して、15の最小値にクリップされる。「†」及び「‡」が付された値は、現在のHEVCの記述について規定されたものより大きく、それぞれ15及び6である。
【0197】
異なるプロファイルを用いようとする場合、本発明の諸実施形態では、これら仕様を最小値として用いることができる(なお、HEVCバージョン1の10ビットシステムは、これら標的に全く適合しない)。より高いビットレート(低いQP)についてPSNRを劣化させるものの、これら表示された最小値よりも低い値を用いることもできる。
【0198】
上述のCABACシステムの説明に戻り、いくつかの実施形態では、HEVC CABACエントロピーコーダは、以下の処理によりシンタックス要素を符号化する。
【0199】
TU内の(スキャン順において)最後の重要係数の位置が符号化される。
【0200】
各4x4係数グループ(グループは逆スキャン順で処理される)に対して、当該グループが非ゼロ係数を含むか否かを示す重要係数グループフラグが符号化される。このフラグは、最後の重要な係数を含むグループについては必要とされず、(DC係数を含む)左上のグループについては1であると仮定される。フラグが1である場合、当該グループに関する重要性マップ、2以上マップ、3以上マップ、シンボルビット、及びエスケープコードのシンタックス要素は、それに続いて即座に符号化される。
【0201】
この構成は、図29に概略的に示されている。ステップ1500では、現在のグループが最後の重要係数を含むか否かをCABACエンコーダが確認する。現在のグループが最後の重要係数を含む場合、処理は終了する。現在のグループが最後の重要係数を含まない場合、処理はステップ1510に進み、エンコーダは、現在のグループがDC係数を含む左上のグループか否かを確認する。現在のグループがDC係数を含む左上のグループである場合、処理はステップ1530に進む。現在のグループがDC係数を含む左上のグループでない場合、ステップ1520において、エンコーダは、現在のグループが非ゼロ係数を含むか否かを検出する。現在のグループが非ゼロ係数を含まない場合、処理は終了する。現在のグループが非ゼロ係数を含む場合、ステップ1530で、重要性マップが生成される。ステップ1540において、重要性マップの値が1である、当該グループの終端から逆に数えて8までの係数について、その大きさが1より大きいか否かを示す2以上マップが生成される。ステップ1550において3以上マップが生成される。(グループの終端に最も近い)2以上マップの値が1である1つの係数に対して、これは、大きさが2より大きいか否かを示す。ステップ1560において、符号ビットが生成され、ステップ1570において、初期のシンタックス要素により大きさが完全には記載されなかったあらゆる係数(すなわち、ステップ1530−1560のいずれかにおいて生成されたデータ)に対するエスケープコードが生成される。
【0202】
MSEが1より小さい動作点における16ビット、14ビット、又は12ビットシステム(QPは、典型的には、−34,−22、及び−10)に対して、当該システムでは、典型的には、ほとんど圧縮が行われない(16ビットに対して、実際には、ソースデータを膨張させる)。係数は、一般的に大きな数字であり、したがって、ほぼエスケープ符号化される。このため、各係数に対してビットストリーム内に固定数のLSB,Bを配置することでより高いビットデプスを可能にするために、エントロピーコーダに対して2つの変更が提案されている。基本的に、当該スキームにより、8ビット及び10ビット動作のために開発された現在のHEVC CABACエントロピーコーダは、16ビット等のより高いビットシステムを追加精度に対する代替パスを用いて10ビット等の低いビットシステムに事実上変換することにより、そのために設計された元のbitDepthで動作することができる。低いビットシステムの値は容易に予測でき、より複雑な符号化スキームを用いた符号化に適しているので、採用する分割方法の有効性が改善される。一方、より高いビットシステムに必要とされる追加精度は予測が難しく、したがって、圧縮が難しく、複雑な符号化スキームは有効でない。例えば、16ビットシステムは、Bが8となるような構成を有することができる。
【0203】
固定ビットスキームを用いることは、ビットストリーム内においてエンコーダにより示される。固定ビットの数の判定方法は、スキームを用いる場合、デコーダに対するエンコーダにより示される。これらの方法は、その数を直接符号化すること、又は、ビットストリームにおいて既に符号化された(QP、ビットデプス、及び/又はプロファイルを含む)ビットストリームに存在するパラメータから値Bを得る方法を示すこと、又はそれらの組み合わせを示す。エンコーダは、同じ方法を用いて、又はシーケンス、画像、スライス、又は先行のCUについて得られるB値に対するΔ値を示すことにより、異なる画像、スライス、及びCuに対して異なるB値を示す選択肢も有する。Bの値は、異なる変換部ブロックサイズ、異なる予測タイプ(インター/イントラ)、及び異なる色チャネル毎に異なるように構成することもできる。そこでは、ソースビデオの機能により、異なるパラメータの選択においてエンコーダが操作される。
【0204】
QPに基づくBの取得例は、以下のとおりである。
=max(0,int(QP/−6))
【0205】
ビットデプスに基づくBの取得例は、以下のとおりである。
=bitDepth−8
【0206】
変換部ブロックサイズ及びQPに基づくBの取得例は、以下のとおりである。
=max(0,int(QP/−6)+2−log(size))
【0207】
様々な値のBを、エンコーダにおいてプリコーダ(試行)構成を用いて決定、又は予め決まったルールに従うよう構成することができる。
【0208】
[エントロピー符号化の実施形態1]
より高いビットデプスでの処理を可能にするために、bitDepthより少ない数の固定ビットBに対するHEVCエントロピーコーダの処理を以下のように変更した。
【0209】
TUにおける(スキャン順で)最後の重要係数の位置を符号化する。
【0210】
各4x4係数グループ(グループは逆スキャン順で処理される)に対して、各係数Cを最高重要部分CMSB及び最下位部分CLSBに分割する。なお、CMSB=abs(C)>>B、CLSB=abs(C)−(CMSB<<B)であり、Bは、ビットストリームから決定される、使用する固定ビットの数である。
【0211】
グループがCMSBの非ゼロ値を含有するか否かを示す重要係数グループフラグを符号化する。このフラグは、最後の重要係数を含むグループに必要であり、(DC係数を含む)左上のグループに対して1であると仮定される。フラグが1である場合、当該グループに関連する以下のシンタックス要素は、それに続いて即座に符号化される。
【0212】
重要性マップ:
当該グループにおける各係数に対して、CMSBの値が重要か否か(非ゼロ値を有するか否か)を示すフラグを符号化する。このフラグは、最後の重要位置によって示される係数に対して符号化される。
【0213】
2以上マップ:
重要性マップの値が1である(グループの終端から後ろにカウントして)8までの係数に対して、このマップはCMSBが1より大きいか否かを示す。
【0214】
3以上マップ:
2以上マップの値が1である(グループの終端に最も近い)1つの係数に対して、このマップはCMSBが2より大きいか否かを示す。
【0215】
固定ビット:
グループにおける各係数に対して、等確率のCABACビンを用いて、CLSBの値をバイパスデータとして符号化する。
【0216】
符号ビット:
全ての非ゼロ係数に対して、確率が等しいCABACビンとして符号ビットを符号化する。(逆スキャン順における)最後の符号ビットは、場合により、隠れている符号ビットを用いる際にパリティから推測される。
【0217】
エスケープコード:
初期のシンタックス要素によってその大きさが完全には記載されないあらゆる係数に対して、残りのビットをエスケープコードとして符号化する。
【0218】
しかしながら、重要係数グループフラグが0である場合、当該グループに関連する固定ビット、符号ビットのシンタックス要素が、それに続いて即座に符号化される。
【0219】
固定ビット:
グループにおける各係数に対して、CLSBの値は等確率CABACビンとして符号化される。
【0220】
符号ビット:
全ての非ゼロ係数に対して、符号ビットが等確率CABACビンとして符号化される。(逆スキャン順で)最後の符号ビットは、場合により、隠れている符号ビットを用いる際にパリティから推測される。
【0221】
本発明の実施形態によれば、係数が非ゼロ(単にCMSBと同等ではない)であるか否かを示すために、重要係数グループフラグの解釈を変えることができる。この場合、逆スキャン順で最後の係数を含む係数グループは、(1となるから)示される必要はない。重要係数グループフラグが0である場合、追加シンタックス要素があったとしても符号化する必要はない。
【0222】
図30に後者の構成を概略的に示す。図30は多くの点で図29に対応する。2つの図面を比較すると、図30には図29のステップ1500に該当するものが記載されていないことが分かり、当該処理が最後の重要係数を含むグループに対しても実行されるという事実と一致する。ステップ1610及び1620は、一般的に、図29のステップ1510及び1520と対応する。新しく導入されたステップ1625において、係数は上述のようにMSB及びLSB部分に分割される。ステップ1630,1640、及び1650は、分割された係数のMSB部分でのみ作用する点を除いて、一般的に、図29のステップ1530,1540、及び1550にそれぞれ対応する。新たに導入したステップ1655は、分割された係数の上述の固定ビットとしてのLSB部分を符号化することに関与する。ステップ1660及び1670は、図29のステップ1560及び1570に対応する。
【0223】
この修正により、CABACエントロピーコーダがそのために設計された元のbitDepthで動作するシステムを、バイパス符号化されたより高いビットデプスのLSB(最も予測できないので、最も圧縮が難しい)を用いて、エンコーダの設計ビットデプスに等しい多くのMSBをCABAC符号化を通して渡せるようにBを選択することにより効果的に生成することができる。例えば、エンコーダが8ビット又は10ビットデプスエンコーダである場合、Bは8又は10と等しい。
【0224】
この提案の結果は、図27で確認することができる。図27は、バイパス固定ビット符号化を行う場合(曲線1680)と行わない場合(曲線1690)で同等の動作を示す、ビットデプスに係るDCT行列精度及びMAX_TR_DYNAMIC_RANGEの組を用いた1つのテストシーケンスについてのQPに対するPSNRのグラフである。(固定ビットを有しないシステムと関連する)固定ビットを有するシステムに対するビットレートの節約量は、QPが0における5%からQPが−48における37%まで変化する。Bの最良値は、シーケンス依存する。Bの1つの例は、上述のように8又は10である。
【0225】
[エントロピー符号化実施形態2]
他の実施形態において、同様のスキームが同様の処理ステップの多くに適用される。しかしながら、当該スキームは、重要性マップの元の機能を保持し、0のフラグ値は(エントロピー符号化実施形態1のように、係数のMSB部分に対する0の値ではなく)0の係数値を示す。これは、(典型的にはスムーズ)コンピュータにより生成されたビデオ(ゼロはより頻度が高いと予測される)を考慮する際に、より有用である。本実施形態は、bitDepthより小さい多くの固定ビットBに対する以下の処理ステップを含む。
【0226】
TUにおける(スキャン順において)最後の重要係数の位置が符号化される。
【0227】
各4x4係数グループ(グループは逆スキャン順で処理される)に対して、グループが非ゼロ係数か否かを示す重要係数グループフラグが符号化される。このフラグは、最後の重要係数を含むグループには必要なく、(DC係数を含む)左上のグループに対しては1であると仮定される。フラグが1である場合、各係数Cは、最上位部分CMSB及び最下位部分CLSBに分割される。なお、CMSB=(abs(C)−1)>>B、CLSB=(abs(C)−1)−(CMSB<<B)であり、当該グループに関連する以下のシンタックス要素が、それに続いて即座に符号化される。
【0228】
重要性マップ:
グループの各係数に対して、係数Cが重要である(非ゼロ値を有する)か否かを示すフラグが符号化される。最後の重要位置によって示される係数については、フラグは必要ない。
【0229】
2以上マップ:
重要性マップの値が1である(グループの終端から後ろにカウントして)8までの係数に対して、CMSBが1以上か否かを示す。
【0230】
3以上マップ:
2以上マップの値が1である(グループの終端に最も近い)1つの係数に対して、CMSBが2以上か否かを示す。
【0231】
符号ビット:
全ての非ゼロ係数に対して、確率が等しいCABACビンとして符号ビットを符号化する。(逆スキャン順における)最後の符号ビットは、場合により、隠れている符号ビットを用いる際にパリティから推測される。
【0232】
固定ビット:
グループにおける各非ゼロ係数に対して、CLSBの値が符号化される。
【0233】
エスケープコード:
初期のシンタックス要素によってその大きさが完全には記載されないあらゆる係数に対して、残りのビットがエスケープコードとして符号化される。
【0234】
この構成を図31のフローチャートに概略的に示す。ここで、ステップ1700−1770は、違いが特定されない限り、以下のように図31及び図32の各ステップに対応する。なお、ステップ1755は、図31のステップ1760(同様のステップ1655は、図30のステップ1660に先行する)に続く。
【0235】
ステップ1700は、一般的に、図29のステップ1500に対応する。これが最後の重要係数を含むグループでない場合、処理はステップ1710に移行する。ステップ1710及び1720は、図30のステップ1610及び1620にそれぞれ対応する。係数は、図30のステップ1625に対応するステップ1725で分割される。しかしながら、ステップ1730において、上述のステップ1630の構成とは対照的に、重要性マップの抽出に係数全体(ステップ1725で実行される分割は当面の間無視する)が用いられる。ステップ1740及び1750は、分割係数のMSB部分でのみ作用し、その機能はステップ1640及び1650に対応する。ステップの順番は図32図33でわずかに異なるように(一例として)示されているという事実以外は、ステップ1755,1760、及び1770は、ステップ1655,1660、及び1670の機能に対応する。
【0236】
これら2つのエントロピー符号化実施形態を比較した結果を、図28に示す。図28は、6つのテストシーケンスについて、エントロピー符号化実施形態1で得られる結果に対して(同一のパラメータにも関わらず)エントロピー符号化実施形態2で得られるビットレート%の改善を示すグラフである。
【0237】
エントロピー符号化実施形態2は、負のQPに対して、エントロピー符号化実施形態1よりもいくつかの原因物質に対する効果が平均で1%低いことが示されている。正のQPに対しては約3%上昇する。しかしながら、いくつかの軟らかい原因物質に対して、係数におけるゼロの数が増えることにより、その逆の現象が観察される。一実施形態では、エンコーダは、エントロピー符号化方法を選択し、当該選択をデコーダに通知することができる。
【0238】
正のQPに対する節約量は負のQPに対する節約量と比較して小さいので、エントロピー符号化の修正は、QPが負であるときにのみ有効とする。エントロピー符号化実施形態1が負のQPに対して37%までのビットの節約量を示すことを考慮して、エントロピー符号化変形を有しないシステムと比較すると、これら動作点において2つのエントロピー符号化実施形態にほとんど違いはない。
【0239】
符号化されるデータの量は一般的なHEVCバージョン1の動作点について観察されるものよりやや高いので、提案された両システムに適用可能な追加ステージ及び実際には既に提案されたシステムを有効にできない又は有効でないシステムについて、本発明の別の実施形態に関連して説明する。
【0240】
当該追加ステージは、各係数グループに対してバイパスデータを符号化するに先立ち、CABACストリームをビット配列させる。これにより、値をストリームから直接読むことができるので、バイパスデータの復号化をより早く(並列して)実行することができ、バイパスビンを復号化する際の長い除算の必要性がなくなる。
【0241】
これを実現する1つのメカニズムは、上述のCABAC終了方法を適用することである。
【0242】
しかしながら、本実施形態では、ビットストリームを終了する代わりに、CABAC状態をビット境界に配列する。
【0243】
ストリームをビット配列するために、エンコーダ及びデコーダにおいて、m_Rangeは単純に256に設定される。これにより、符号化及び復号化処理は著しく容易になり、バイナリデータをRAW形式のm_Valueから直接読むことが可能となる。したがって、デコーダにより、多くのビットを同時に処理することができる。いくつかの例において、値256は範囲変数m_Rangeの所定の最小値の一例と考えてもよい。
【0244】
なお、m_Rangeを256に設定する動作は、平均で、0.5ビットの損失を招く(m_Rangeが既に256であれば、損失はない。m_Rangeが510であれば、約1ビットの損失がある。したがってm_Rangeの有効値全ての平均は0.5ビットである)。
【0245】
多くの方法を用いて、これら技術により引き起こされる損失又は考えられるコストを緩和することができる。図33図35は、CABACエンコーダにより実行されるCABA処理の終了ステージのバージョンを概略的に示すフローチャートである。
【0246】
図33によれば、バイパス符号化データの予測量の推定値(例えば、2以上フラグの数が1に等しいこと)に応じて、ビット配列するか否かを選択することができる。予測されるバイパス符号化データがほとんどない場合、ビット配列するには(配列につき平均0.5ビット無駄にするので)コストがかかり、ビットレートが低くなる可能性が高いので不必要である。したがって、図33において、ステップ1800は、設定された2以上フラグの数を検出することでバイパス符号化データの推定量を検出し、並びにその数を閾値Thrと比較することに関する。推定値が閾値Thrを超えた場合、処理はステップ1810に移行する。ステップ1810では、ビット配列モードが選択される。推定値が閾値Thr以下である場合、処理はステップ1820に移る。ステップ1820において、非ビット配列モードが選択される。図34に示すステップは、例えば、各TUにおける各サブグループにおいて繰り返すことができる。
【0247】
図34を参照して、各係数グループの終端におけるコードバイパスデータではなく、TUに対するCABACビンデータの後にTUに対する全てのバイパスデータを合わせて符号化することができる。したがって、損失は、係数グループにつき0.5ビットではなく符号化TUにつき0.5ビットである。したがって、図34におけるステップ1830において、現在のグループがTU符号化の終端にあるか否かを検出するためにテストを適用する。現在のグループがTU符号化の終端になければ、ビット配列は適用されず(ステップ1840で概略的に示されている)、処理はステップ1830に戻る。しかしながら、現在のグループがTU符号化の終端にある場合、ビット配列はステップ1850で適用される。
【0248】
この配列メカニズムは、効率性を減少させる可能性があるがストリームの符号化を単純化することもある等確率のメカニズムで符号化されるストリーム内の他のデータ又は全てのデータに先立って用いてもよい。
【0249】
図35を参照し、変形例としての配列として、m_Rangeを単に256とするのではなく所定の値の数Nの1つに設定することができる(例えば、384は半ビットに配列する)。配列値は(再正規化を除いて範囲は増加することができないので)m_Rangeの元の値以下である必要があるので、配列毎損失は定期的に間隔をあけた値に対して(0.5/N)である。この方法は、依然として256以外の値に対して除算を必要とする。しかしながら、分母は予め知られており、したがって、当該除算はルックアップテーブルを用いて評価することができる。したがって、(ビット配列状態で適用される)ステップ1860において、m_rangeの値が検出され、ステップ1870において、ビット配列処理において使用するために、m_rangeにしたがって配列値が選択される。
【0250】
この変形例の配列方法に対するさらなる改良として、配列の直後の(1つ又は複数の)ビンを2の累乗の(同等でない)シンボル範囲を用いて符号化することができる。このようにして、次のビンに対する除算の全ての必要性を、ビット効率において(0.5/N)を超えるさらなる損失を招くことなく除去することができる。
【0251】
例えば、384に配列する際、次のビンに対する[0,1]のシンボル範囲は[256,128]とすることができる。
【0252】
0を符号化する場合、m_Rangeは256に設定され、ビンを符号化するコストを0.5ビットとなる。
【0253】
1を符号化する場合、m_Rangeは128に設定され(さらに、256がm_Valueに追加され)、システムは再正規化され(m_Rangeは再び256となる)、ビンを符号化するコストは1.5ビットとなる。
【0254】
0及び1は等しい確率で予測されるので、配列直後のビンを符号化する平均コストは、依然として1ビットである。N=2であり、2つの配列点が256及び384である場合に対して、当該方法を用いれば、現在のm_Range以下の最大配列点を取得できる。配列点が256の場合、CABACエンジンを配列するために、m_Rangeはちょうど256に設定される。配列点が384の場合、上記処理が必要となり、1つのシンボルの符号化が必要となる。
【0255】
これは、図32A及び32Bに示され、N=4の別の例は、図32C−32Fに示されている。
【0256】
CABACエンジンを配列する利点を示すために、当該配列ステージなしに等確率(EP:equiprobable)ビンを復号化する方法を以下のように表すことができる。
【0257】
(m_Value>=m_Range/2)の場合、
復号化EP値は1である。m_Range/2ずつm_Valueを減少させる。
それ以外の場合
復号化 EP値は0である。
ビットストリームから次のビットを読み込む。
m_Value=(m_Value*2)+ストリーム内の次のビット
【0258】
この変形例は以下のとおりである。
【0259】
m_Range=458、m_Value=303とし、ビットストリームにおける次のビットは1である。
サイクル1
m_Value>=229。したがって、次の符号化EP値は1である。m_Value=74
ビットストリームから次のビットを読み込む。m_Value=74*2+1=149
サイクル2
m_Value<229。したがって、EP値は0である(m_Value変化なし)。
ビットストリームから次のビットを読み込む。m_Value=149*2+1=299
【0260】
復号化等確率ビンは、長い除算の1つのステージに等しく、不等をテストするには計算が必要。2つのビンを復号化するために、本例の処理は2回実行され、2段階の長い除算処理が実行される。
【0261】
しかしながら、m_Rangeを2の最大有効累乗(9ビットHEVC CABACに対して256等)とする配列ステージを適用する場合、上記処理が簡略化される。
符号化EP値は、m_Valueの最も重要なビットである。
シフトレジスタとして処理することにより、ストリーム内の次のビットを最下位位置にシフトして、m_Valueを更新する。
【0262】
したがって、m_Valueは基本的にシフトレジスタとなり、EPビンは最上位位置から読み込まれる。一方、ビットストリームは最下位位置にシフトされる。したがって、単にm_Valueの上端からさらに複数ビットシフトすることで、複数のEPビットを読み込むことができる。
【0263】
この配列例の変形例は以下のように示される。
【0264】
m_Range=256、m_Value=189とし、ビットストリームの次の2ビットは1である。
サイクル1
次の符号化EP値は、m_Valueのビット7であり、1である。
ビット7をシフトし、ビットストリームから最下位位置に1をシフトすることでm_Valueを更新する。m_Valueは123となる。
サイクル2
次の符号化EP値は、0であるm_Valueのビット7である。
ビット7をシフトし、ビットストリームから最下位位置に1をシフトすることでm_Valueを更新する。m_Valueは247となる。
【0265】
選択された配列点の数Nは、実行の複雑性と配列のビットコストとのトレードオフとして確認することができる。配列点毎に多くのEPビンが存在する動作点については、損失はそれほど重要でなく、動作点が少ない配列システムでも十分である。逆に、配列点毎のEPビンが少ない動作点については、損失がより重要になり、動作点の多い配列システムが好ましい可能性がある。いくつかの動作点に対しては、配列アルゴリズムを完全に無効にするのが好ましいことがある。エンコーダ及びビットストリームは、データストリームのセクションの動作点に従って選択可能な、デコーダに使用される配列点の数を示すことができる。あるいは、当該示された数は、プロファイル及びレベル等のビットストリームに存在する他の情報から推測されてもよい。
【0266】
配列位置がちょうど256及び384である単純なケースでは、複数の配列位置を用いて、以下のように配列する。
【0267】
m_Range<384の場合、m_Rangeを256に設定し、復号化のために上述の変更例を参照する。
それ以外の場合、m_Range=384に設定し、以下の処理を次のEPビンを符号化するために実行する。
m_Range=384=256+128
256のシンボル範囲を0の値に割り当て、128のシンボル範囲を次の符号化対象のEPビンに対して1の値に割り当てる。
m_Value>=256の場合、(MSBビットテスト動作)
次のEP値は1である。
m_Value−=256(実際には、ビットクリア動作)
m_Range=128
再正規化(m_Range<256なので)
m_Range=256
m_Value=(m_Value*2)+ストリーム内の次のビット
それ以外の場合、
次のEP値は0である。
m_Range=256.
m_Range=256であり、上記単純な処理を次のEPビンの全てに対して実行することができる。
【0268】
上述のCABACビット配列メカニズムを有するエントロピー符号化実施形態1の結果を、図27に示す。図27は、N=1に対するビット配列メカニズムを有する又は有しない6つのシーケンスについてのQPに対するビットレートの違いを表すグラフである。正のビットレートの違い(垂直軸)は、ビット配列を有するシステムにより、ビット配列メカニズムを有しないスキームより高いビットレートが生成されることを示している。各シーケンスに対するビットレートの違いは、1秒につき1000の係数グループの数の約0.5倍である(トラフィックは、2560x1600 30p=11520、その他は1920x1080 50p=9720)。
【0269】
図30で設定される選択肢はプロファイルとして提案される。
【0270】
(1つ又は複数の)高いプロファイルが14までのbitDepthsをサポートする必要がある場合、変換行列係数精度、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEが12、19、及び20にそれぞれ設定されるよう提案される。
【0271】
これらプロファイルに加えて、イントラのみメイン(Main)/拡張(Extended)プロファイルを定義することができるが、イントラのみデコーダはイントラ・インターデコーダより著しく複雑性が少ないので、高いイントラプロファイルのみをここでは説明する。
【0272】
同様に、静止画を符号化するためのExtended/Highプロファイルは、依然として様々なクロマ形式で定義できる。
【0273】
低いプロファイルは、高いプロファイルで使用されるのと同様に、同じ行列精度、MAX_TR_DYNAMIC_RANGE及びENTROP_CODING_DYNAMIC_RANGEを使用する必要がある。そうでなければ、2つのプロファイルで生産されたビットストリームは適合しない。
【0274】
ここで、様々な選択肢について説明する。
【0275】
選択肢1
【0276】
【表3】
【0277】
この選択肢では、ビットデプスが変換行列精度、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEに影響する。これは、16までのビットデプスを支持する必要があるデコーダが異なる組の行列で13ビットのデータを処理する必要があり、当該デコーダは21までサポートすることができるものの、MAX_TR_DYNAMIC_RANGEに対して内部精度が18ビットに限定されることを意味する。しかしながら、高いプロファイルを用いて符号化された12ビットデータは、低いプロファイルに準拠したデコーダにより復号化することができる。
【0278】
選択肢2
【0279】
【表4】
【0280】
この選択肢では、オーバーラップビットデプスに対するビットパラメータが、低いプロファイルにより決定され、これにより、拡張プロファイルに準拠したデコーダを用いて復号可能な高いプロファイルを用いて符号化された12ビットデータを復号化する。また、13ビットデータの内部精度は、16ビットデータに対するものと同じである。また、行列精度は、選択肢1よりもサポートされる必要はない。
【0281】
この場合、1組の変換行列値を保存することができ、他の値は全てこれから得られる。
【0282】
なお、変換行列が14ビットの最初の精度を有する場合、一般的に、2で除算されるか丸められることにより低い精度が得られる。
【0283】
高い精度行列から低い精度行列を得るためにこの一般側を用いると、以下の例が与えられる。
【0284】
例1
選択肢1:High4:4:4 変換行列精度=14を定義する。
14から変換行列精度=13を得る。
Ext4:4:4 変換行列精度=14を定義する。
14から変換行列精度=10を定義する。
すなわち、「高い(High)」精度で記憶する。
【0285】
例2
選択肢1:High4:4:4 変換行列精度=10を定義する。
10から変換行列精度=14を得る。
Ext4:4:4 変換行列精度=10を定義する。
14から変換行列精度=10を得る。
すなわち、「拡張された(Extended)」精度で記憶する。
【0286】
よりよい品質のためには、「例1」が好ましい。しかしながら、例2は記憶必要メモリが少なくて済む。
【0287】
なお、変形例として、もちろん、各精度について変換行列の組を記憶することもできる。「例1」及び「例2」のルールは、「選択肢2」にも用いることができる。
【0288】
目的の1つは、品質を増加し、プロファイルに除算することであるので、1つの精度において1つの組から各変換行列の組が得られる場合、スケーリングエラーが生じる。
【0289】
「例1」の場合、システムは変換行列を14ビットからダウンスケールし、「例2」の場合、システムは、変換行列を10ビットからアップスケール若しくはダウンスケールする。
【0290】
選択肢3
【0291】
【表5】
【0292】
すなわち、12ビットビデオのビットデプスは、high4:4:4デコーダのみがhigh4:4:4スキームを用いて符号化されたストリームを復号化できるものの、「High4:4:4」又は「Ext4:4:4」として符号化することができる。
【0293】
選択肢4
【0294】
【表6】
【0295】
すなわち、「High4:4:4プロファイル」は、低い「Ext4:4:4プロファイル」をサポートする必要がある。この選択肢では、12ビットビデオを符号化するための選択肢は1つしかない。
【0296】
選択肢5
【0297】
【表7】
【0298】
この選択肢において、行列精度はプロファイルごとの1の値に限られ、エンコーダに対するオーバーヘッドを低減させる。また、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEはビットデプスにより決定されるので、13ビットデータを符号化する必要があるエンコーダは、追加の内部計算精度を用いることの実行オーバーヘッドを含むことを必要としない。
【0299】
選択肢6
【0300】
【表8】
【0301】
選択肢6は、選択肢5と同様であるが、拡張プロファイルのみが12ビットデータの符号化に対して定義される。
【0302】
まとめると、本発明の諸実施形態に係る提案された変化は、以下のとおりである。
【0303】
高い精度に対して設定された少なくとも1つの追加変換行列を用いる。
【0304】
マルチプロファイルエンコーダ・デコーダを簡略化するために、全ての高い精度のために、単一の組を有するのが好ましい。
【0305】
提案された変換行列は、変換行列精度7〜14のために提供される。以下の説明を参照する。
【0306】
14ビット精度変換行列はソフトウェアに対する16ビットデータタイプに適合し、16ビットビデオへの拡張を可能にするのに十分な精度をもたらすので、これらを使用することが示唆される。
【0307】
変換行列精度の選択は、入力データのビットデプス及びプロファイルにより構成され、あるいは、シーケンス、画像、又はスライスレベルで規定されるパラメータで交互に決定される。
【0308】
MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEは、高い精度に対して変更できる。
【0309】
MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEの複数の値は、マルチプロファイルエンコーダ・デコーダに対する問題を提起するべきではない。
【0310】
MAX_TR_DYNAMIC_RANGE=bitDepth+5及びENTROPY_CODING_DYNAMIC_RANGE=bitDepth+6を得ることが示唆されている。
【0311】
変換行列精度と同様に、MAX_TR_DYNAMIC_RANGE及びENTROPY_CODING_DYNAMIC_RANGEの選択は、入力データのビットデプス及びプロファイルで構成され、あるいは、シーケンス、画像、又はスライスレベルで規定されるパラメータ(場合により、DCT行列を選択したのと同一のパラメータ)により交互に決定される。
【0312】
エントロピー符号化は、低いQPでの圧縮を増加させるためにいくつかの固定ビット処理(エントロピー符号化実施形態1及び2を参照)を含むように変更することができる。
【0313】
固定ビットの有無は、シーケンスレベルで構成することができる。
【0314】
固定ビットBの数は、シーケンス、(画像パラメータセットは、シーケンスレベル設定を知らないので難しいものの)画像、スライス、又はCUレベルで(場合により、以前のシーケンス・画像・スライス・CU,ペアレントエンティティ、又はプロファイル定義に対する固定ビットの数からデルタを伝達することにより)構成することができる。
【0315】
エントロピー符号化は、長い除算を使用することなくバイパスビットをストリームから抽出できるようにCABACビット配列を含むように変更することができる(1つ又は複数の上述のビット損失緩和方法を適用するのも好ましい)。
【0316】
したがって、本発明の諸実施形態によれば、HEVCを通してより高いビットデプスのための範囲拡張(Range Extensions)権限に必要性を適応させるために、内部精度を上昇させることができる。様々なソースの誤差が研究され、推奨がなされている。また、符号化効率を改善するための変化が提供され、スループットを改善する変化も提供されている。
正確変換行列の増加
【0317】
以下においては、変換行列を様々なレベルの精度で説明する。
【0318】
4x4 DST
組み合わせ行列は、以下の形式である。
【0319】
【数1】
【0320】
格子内の値は、以下のテーブルに係る行列係数精度(比較のために含まれる6ビットHEVCバージョン1行列値)により定義される。
【0321】
【表9】
【0322】
組み合わせDCT行列
実行を容易にするために、単一の32x32DCT行列M32を記載することができる。それからは、以下のサブサンプリングを通して各小さいNxN DCT行列Mを得ることができる。
[x][y]=M32[x][(2(5 − log2(N)))y]
(ここで、x,y=0..(N−1))
【0323】
組み合わせ行列M32は、以下の形式である。
【0324】
【数2】
【0325】
以下のテーブルに係る行列係数精度で定義される格子の値(比較のために含まれる6ビットHEVCバージョン1行列値)
【0326】
【表10】
【0327】
情報に対して、32x32行列由来のより小さいDCT行列をここに示す。各格子の値は、上記テーブルに係る行列係数精度で定義される。
【0328】
4x4DCT
行列Mは、組み合わせ行列M32の8番目の行ごとの第1の4係数として定義される。
【0329】
【数3】
【0330】
8x8DCT
行列Mは、組み合わせ行列M32の全ての4番目の行の第1の8係数として定義される。
【0331】
【数4】
【0332】
16x16DCT
行列M16は、組み合わせ行列M32の全ての偶数行の第1の16係数として定義される。
【0333】
【数5】
【0334】
上述の実施形態は、以下の番号付けされた項によって定義される。
【0335】
1.データ値のシーケンスを符号化するデータ符号化方法であって、
値の最上位データ部分が当該値の複数の最上位ビットを表し、最下位データ部分が残りの最下位ビットを表すように、補足最上位データ部分及び最下位データ部分を上記入力データ値からそれぞれ生成し、
所定の大きさの最上位データ部分の上記値の配列に関連する位置を示す1つ又は複数のデータセットを生成し、
バイナリ符号化により、出力データストリームに対して上記データセットを符号化し、
上記出力データストリームに低重要位置を定義するデータを含める
データ符号化方法。
2.上記1に記載のデータ符号化方法であって、
上記データセットの1つは、非ゼロである最上位データ部分のデータ値に関連する位置を示す重要性マップである
データ符号化方法。
3.上記2に記載のデータ符号化方法であって、
上記重要性マップは、値の配列の所定の順番に従って、非ゼロ値を有する最後の最上位データ部分の位置を示すデータフラグを含む
データ符号化方法。
4.上記2又は3に記載のデータ符号化方法であって、
上記データセットは、2以上の最上位データ部分の値の配列に関連する位置を示す2以上マップと、3以上の最上位データ部分の値の配列に関連する位置を示す3以上マップとを含む
データ符号化方法。
5.上記1に記載のデータ符号化方法であって、
上記データセットは、1以上の最上位データ部分の値の配列に関連する位置を示す2以上マップと、2以上の最上位データ部分の値の配列に関連する位置を示す3以上マップとを含む
データ符号化方法。
6.上記5に記載のデータ符号化方法であって、
非ゼロ値の値に関連する位置を示す重要性マップである他のデータセットを生成することをさらに含む
データ符号化方法。
7.上記6に記載のデータ符号化方法であって、
上記重要性マップは、値の配列の所定の順番に従って、非ゼロ値を有する最後の最上位データ部分の位置を示すデータフラグを含む
データ符号化方法。
8.上記1〜7のいずれか1つに記載のデータ符号化方法であって、
上記出力データストリームに低重要位置を定義するデータを含めることは、上記最下位データ部分を表すシンボルがコード値範囲の比率に従って符号化される算術符号化により、上記最下位データ部分を符号化することを含み、
上記最下位データ部分を表す上記各シンボルに対する上記コード値範囲の上記比率はそれぞれ等しいサイズである
データ符号化方法。
9.上記1〜7のいずれか1つに記載のデータ符号化方法であって、
上記出力データストリームに低重要位置を定義するデータを含めることは、上記出力データストリーム内に上記最下位データ部分をRAWデータとして直接含めることを含む
データ符号化方法。
10.上記1〜9のいずれか1つに記載のデータ符号化方法であって、
上記データ値のシーケンスは、画像データビットデプスを有する画像データを表し、
上記データ符号化方法は、さらに、各最上位データ部分における上記複数の最上位ビットとして使用するビットの数を上記画像データビットデプスと等しくなるように設定することを含む
データ符号化方法。
11.上記1〜10のいずれか1つに記載のデータ符号化方法であって、
上記データ値のシーケンスは、周波数変換画像係数のシーケンスを含む
データ符号化方法。
12.上記11に記載のデータ符号化方法であって、
上記周波数変換入力画像係数は、利用可能な様々な量子化パラメータから選択された変数量子化パラメータに従って量子化された周波数変換入力画像係数であり、
上記データ符号化方法は、さらに、上記利用可能な量子化パラメータの範囲の第1の所定のサブレンジにおける量子化パラメータを用いて生成された係数に対して、上記最上位データ部分及び上記最下位データ部分に従って上記周波数変換入力画像係数の配列を符号化し、
上記利用可能な量子化パラメータの範囲の上記第1の所定のサブレンジにない量子化パラメータを用いて生成された係数に対して、各最上位データ部分におけるビットの数が当該係数のビットの数と等しくなり、各最下位データ部分がビットを含まないように上記周波数変換入力画像係数の配列を符号化することを含む
データ符号化方法。
13.上記11又は12に記載のデータ符号化方法であって、
入力画像データを周波数変換して、上記変換データの最大ダイナミックレンジに従って所定のデータ精度を有する変換行列を用いて行列乗算処理により周波数変換された入力画像係数の配列を生成し、
上記入力画像データのビットデプスに従って、上記最大ダイナミックレンジ及び上記変換行列の上記データ精度を選択する
データ符号化方法。
14.上記13に記載のデータ符号化方法であって、
上記選択は、
上記変換行列の上記データ精度を上記入力画像データの上記ビットデプスよりも小さい第1のビットオフセット数に設定することと、
上記変換データの上記最大ダイナミックレンジを上記入力画像データの上記ビットデプスよりも大きい第2のビットオフセット数に設定することとを含む
データ符号化方法。
15.上記14に記載のデータ符号化方法であって、
上記第1のビットオフセット数は2に等しく、上記第2のビットオフセット数は5に等しい
データ符号化方法。
16.上記13〜15のいずれか1つに記載のデータ符号化方法であって、
ソース変換行列から、それぞれ異なる必要とされるデータ精度で変換行列を得ることをさらに含む
データ符号化方法。
17.上記1〜16のいずれか1つに記載のデータ符号化方法であって、
上記符号化は、
範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを符号化のためのデータセットの現在の入力データ値に従って選択することと、
上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当てることと、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて上記一連のコード値を修正することと、
上記一連のコード値を定義する上記範囲変数が、所定の最小サイズより小さいか否かを検出し、小さい場合、上記一連のコード値が少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加させ、そのようなサイズ増加動作に応答して符号化データビットを出力することと、
1群の入力データ値を符号化した後、ゼロに等しい少なくとも1つの最下位ビットを含む利用可能な範囲変数値の所定のサブセットから選択された値に上記範囲変数を設定することと
を含む
データ符号化方法。
18.上記17に記載のデータ符号化方法であって、
上記一連のコード値に関連する上記サブレンジの比率は、上記入力データ値に関連付けられたコンテキスト変数によって定義される
データ符号化方法。
19.上記18に記載のデータ符号化方法であって、
データ値の符号化に続いて、上記現在のデータ値のために選択された上記サブレンジにおける上記一連のコード値の比率を増加させるように、次の入力データ値に関して使用するために上記コンテキスト変数を修正することを含む
データ符号化方法。
20.上記17〜19のいずれか1つに記載のデータ符号化方法であって、
上記一連のコード値は、0から上限値までの範囲にある値を含み、上記上限値は、上記範囲変数で定義され256から510までの範囲にある
データ符号化方法。
21.上記20に記載のデータ符号化方法であって、
上記範囲変数の利用可能な値のサブセットは、256の値を有する
データ符号化方法。
22.上記20に記載のデータ符号化方法であって、
上記利用可能な値のサブセットは、256と384の組を含み、
上記範囲変数の設定は、上記サブセットから上記範囲変数の現在の値に従って値を選択し、上記範囲変数の現在の値が256から383までの範囲にある場合、上記範囲変数を256に設定し、上記範囲変数の現在の値が384から510までの範囲にある場合、上記範囲変数を384に設定することを含む。
データ符号化方法。
23.上記20に記載のデータ符号化方法であって、
上記利用できる値のサブセットは、256,320,384、及び448の組を含み、
上記範囲変数の設定は、上記範囲変数の現在の値に従って上記サブセットから値を選択し、上記範囲変数の現在の値が256から319までの範囲にある場合、上記範囲変数を256に設定し、上記範囲変数の現在の値が320から383までの範囲にある場合、上記範囲変数を320に設定し、上記範囲変数の現在の値が384から447までの範囲にある場合、上記範囲変数を384に設定し、上記範囲変数の現在の値が448から510までの範囲にある場合、上記範囲変数を448に設定することを含む
データ符号化方法。
24.上記17〜23のいずれか1つに記載のデータ符号化方法であって、
データセットにおいてバイパスデータとして表されない値を示すデータを符号化し、
現在の配列と関連付けられたバイパスデータの量を検出し、
上記バイパスデータの量が閾値を超える場合、上記設定を適用し、それ以外の場合、上記設定を適用しない
データ符号化方法。
25.上記17〜24のいずれか1つに記載のデータ符号化方法であって、
上記データは、データ値の複数の配列を含む変換ユニットとして符号化され、
上記データ符号化方法はさらに、変換ユニットの符号化の終了時に、上記設定を適用することを含む
データ符号化方法。
26.画像データを符号化するデータ符号化方法であって、
入力画像データを周波数変換して、上記変換データの最大ダイナミックレンジに従って所定のデータ精度を有する変換行列を用いて行列乗算処理により周波数変換された入力画像係数の配列を生成し、
上記入力画像データのビットデプスに従って、上記最大ダイナミックレンジ及び上記変換行列の上記データ精度を選択する
データ符号化方法。
27.上記1〜26のいずれか1つに記載のデータ符号化方法により符号化された画像データ構造。
28.上記27に記載の画像データ構造を記憶するデータ記憶媒体。
29.データ値の配列を提供するためのデータを復号化するデータ復号化方法であって、
入力データストリームから上記データ値の最下位データ部分及び1つ又は複数の符号化データセットを分離し、
バイナリ復号化により上記データセットを復号化して上記データ値の最上位データ部分を生成し、
上記最上位データ部分と上記最下位データ部分とを組み合わせて、データ値に対して、各最上位データ部分が当該データ値の複数の最上位ビットを表し、各最下位データ部分が当該データの残りの最下位ビットを表すように、上記データ値を生成する
データ復号化方法。
30.画像データ復号化方法であって、
入力周波数変換画像データを周波数変換して、上記変換データの最大ダイナミックレンジに従って所定のデータ精度を有する変換行列を用いて行列乗算処理により出力画像データの配列を生成し、
上記出力画像データのビットデプスに従って、上記最大ダイナミックレンジ及び上記変換行列の上記データ精度を選択する
データ復号化方法。
31.コンピュータによって実行される際に、上記コンピュータに上記1〜30のいずれか1つに記載の方法を実行させるコンピュータプログラム。
32.上記31に記載のコンピュータプログラムが記憶された非一時的な機械可読記憶媒体。
33.データ値のシーケンスを符号化するデータ符号化装置であって、
値の最上位データ部分が当該値の複数の最上位ビットを表し、最下位データ部分が残りの最下位ビットを表すように、補足最上位データ部分及び最下位データ部分を上記入力データ値からそれぞれ生成し、所定の大きさの最上位データ部分の上記値の配列に関連する位置を示す1つ又は複数のデータセットを生成するように構成された生成部と、
バイナリ符号化により、出力データストリームに対して上記データセットを符号化し、上記出力データストリームに低重要位置を定義するデータを含めるエンコーダと
を具備するデータ符号化装置。
34.画像データを符号化するデータ符号化装置であって、
入力画像データを周波数変換して、上記変換データの最大ダイナミックレンジに従って所定のデータ精度を有する変換行列を用いて行列乗算処理により周波数変換された入力画像係数の配列を生成するように構成された周波数変換部と、
上記入力画像データのビットデプスに従って、上記最大ダイナミックレンジ及び上記変換行列の上記データ精度を選択するように構成された選択部と
を具備するデータ符号化装置。
35.データを復号化してデータ値の配列を提供するデータ復号化装置であって、
入力データストリームから、データ値の最下位データ部分及び1つ又は複数の符号化データセットを分離するように構成されたデータ分離部と、
バイナリ復号化により上記データセットを復号化して上記データ値の最上位データ部分を生成するように構成されたデコーダと、
上記最上位データ部分と上記最下位データ部分とを組み合わせて、データ値に対して、各最上位データ部分が当該データ値の複数の最上位ビットを表し、各最下位データ部分が当該データの残りの最下位ビットを表すように、上記データ値を生成するように構成された結合部と
を具備するデータ復号化装置。
36.画像データ復号化装置であって、
入力周波数変換画像データを周波数変換して、上記変換データの最大ダイナミックレンジに従って所定のデータ精度を有する変換行列を用いて行列乗算処理により出力画像データの配列を生成するように構成された周波数変換部と、
上記出力画像データのビットデプスに従って、上記最大ダイナミックレンジ及び上記変換行列の上記データ精度を選択するように構成された選択部と
を具備する画像データ復号化装置。
37.上記33〜36のいずれか1つに記載の装置を具備するビデオデータキャプチャ・送信・表示及び/又は記憶装置。
【0336】
他の実施形態は、以下の番号付けされた項によって定義される。
1.符号化のためのデータセットの入力データ値を符号化するデータ符号化装置であって、
現在の入力データ値に従って範囲変数で定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当てるように構成された選択部と、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正するように構成された修正部と、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも当該所定の最小サイズとなるまで上記範囲変数を連続的に増加させるように構成され、各サイズ増加動作に応答して符号化データビットを出力する検出部と、
1群の入力データ値を符号化した後、上記範囲変数をゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定するように構成された範囲変数設定部と
を具備するデータ符号化装置。
2.上記1に記載のデータ符号化装置であって、
上記利用可能な範囲変数値のサブセットは、256の値を有する
データ符号化装置。
3.上記1又は2に記載のデータ符号化装置であって、
上記一連のコード値に対する上記サブレンジの比率は、上記入力データ値に関連付けられたコンテキスト変数によって定義される
データ符号化装置。
4.上記3に記載のデータ符号化装置であって、
上記コンテキスト変数は、入力データ値の符号化に続いて、上記現在の入力データ値のために選択された上記サブレンジにおける上記一連のコード値の比率を増加させるように、次の入力データ値に関して使用するために修正される
データ符号化装置。
5.上記1〜4のいずれか1つに記載のデータ符号化装置であって、
上記一連のコード値は、0から上限値までの範囲にある値を含み、上記上限値は、上記範囲変数で定義され上記所定の最小サイズから第2の所定値までの範囲にある
データ符号化装置。
6.上記5に記載のデータ符号化装置であって、
上記所定の最小サイズは256であり、上記第2の所定値は510である
データ符号化装置。
7.上記1〜6のいずれかに記載のデータ符号化装置であって、
上記範囲変数の利用可能な値のサブセットは、上記所定の最小サイズを含む
データ符号化装置。
8.上記1に記載の装置であって、
上記サブセットは、上記所定の最小サイズから上記第2の所定値までの範囲にある2つ以上の値を含む
データ符号化装置。
上記8に記載のデータ符号化装置であって、
上記範囲変数設定部は、上記範囲変数の現在の値に従って、上記サブセットから値を選択するように構成される
データ符号化装置。
10.上記9に記載のデータ符号化装置であって、
上記範囲変数設定部は、上記範囲変数の現在の値が上記特定の値から上記サブセット内の次に高い値よりも1低い値までの範囲にある場合、上記サブセットから特定の値を選択するように構成される
データ符号化装置。
11.上記1〜10のいずれか1つに記載のデータ符号化装置であって、
バイパスデータとしてデータセットを表さない係数を表すデータを符号化するように構成されたバイパスデータエンコーダと、
現在の配列と関連付けられた上記バイパスデータの量を検出するように構成されたバイパスデータ量検出部と
をさらに具備し、
上記範囲変数設定部は、上記バイパスデータの量が閾値を超える場合、上記範囲変数を設定するが、そうでなければ、上記範囲変数を設定しないように構成される
データ符号化装置。
12.上記1〜11のいずれか1つに記載のデータ符号化装置であって、
上記入力データ値は、画像データを表し、
上記画像データは、複数の係数の配列を含む変換ユニットとして符号化され、
上記範囲変数設定部は、変換ユニットの符号化の終了時に、上記範囲変数を設定するように構成される
データ符号化装置。
13.符号化のためのデータセットの入力データ値のデータ符号化方法であって、
現在の入力データ値に従って、範囲変数により定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当て、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正し、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、
1群の入力データ値を符号化した後、上記範囲変数をゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定する
データ符号化方法。
14.上記13に記載のデータ符号化方法であって、
上記利用可能な範囲変数値のサブセットは、256の値を含む
データ符号化方法。
15.上記13又は14に記載のデータ符号化方法であって、
上記一連のコード値に対する上記サブレンジの比率は、上記入力データ値に関連付けられたコンテキスト変数によって定義される
データ符号化方法。
16.上記15に記載のデータ符号化方法であって、
入力データ値の符号化に続いて、上記現在の入力データ値のために選択された上記サブレンジにおける上記一連のコード値の比率を増加させるように、次の入力データ値に関して使用するために上記コンテキスト変数を修正する
データ符号化方法。
17.上記13〜16のいずれか1つに記載のデータ符号化方法であって、
上記一連のコード値は、0から上限値までの範囲にある値を含み、上記上限値は、上記範囲変数で定義され上記所定の最小サイズから第2の所定値までの範囲にある
データ符号化方法。
18.上記17に記載のデータ符号化方法であって、
上記所定の最小サイズは256であり、上記第2の所定値は510である
データ符号化方法。
19.上記13〜18のいずれか1つに記載のデータ符号化方法であって、
上記範囲変数の利用可能な値のサブセットは、上記所定の最小サイズを含む
データ符号化方法。
20.上記13に記載のデータ符号化方法であって、
上記サブセットは、上記所定の最小サイズから上記第2の所定値までの範囲にある2つ以上の値を含む
データ符号化方法。
21.上記20に記載のデータ符号化方法であって、
上記設定は、上記範囲変数の現在の値に従って上記サブセットから値を選択することを含む
データ符号化方法。
22.上記21に記載のデータ符号化方法であって、
上記設定は、上記範囲変数の現在の値が特定の値から上記サブセット内の次に高い値よりも1低い範囲にある場合、上記サブセットから上記特定の値を選択することを含む
データ符号化方法。
23.上記13〜22のいずれか1つに記載のデータ符号化方法であって、
バイパスデータとしてデータセットを表さない係数を表すデータを符号化し、
現在の配列に関連付けられた上記バイパスデータの量を検出し、
上記バイパスデータの量が閾値を超えた場合、上記設定を適用し、そうでなければ、上記設定を適用しない
データ符号化方法。
24.上記13〜23に記載のデータ符号化方法であって、
上記入力データ値は、画像データを表し、
上記画像データは、係数の複数の配列を含む変換ユニットとして符号化され、
上記データ符号化方法は、さらに、変換ユニットの符号化の終了時に、上記設定を適用することを含む
データ符号化方法。
25.上記13〜24のいずれか1つに記載のデータ符号化方法により符号化されたデータ構造。
26.上記25に記載のデータ構造を記憶するデータ記憶媒体。
27.上記25に記載のデータの配布インスタンス。
28.上記1〜12のいずれか1つに記載のデータ符号化装置を含むビデオデータキャプチャ・送信及び/又は記憶装置。
29.算術符号化されたデータ値のシーケンスを復号化するデータ復号化装置であって、
範囲変数で定義される一連のコード値の複数の補足サブレンジのうちの1つを選択するように構成された選択部と、
上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正するように構成された修正部と、
符号化されたデータ値を検出し、上記検出に応答して、上記一連のコード値のサイズを増加し、上記範囲変数がゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定される上記シーケンスの終端を検出するように構成された検出部と、
上記検出に応答して、上記範囲変数及び上記一連のコード値のサイズを上記選択された値に設定するように構成された範囲変数設定部と
を具備するデータ復号化装置。
30.上記29に記載のデータ復号化装置であって、
上記利用可能な範囲変数値のサブセットは、256の値を有する
データ復号化装置。
31.上記29又は30に記載のデータ復号化装置であって、
上記シーケンスの終端において最後の符号化データ値から1つ又は複数の等確率符号化データ値を検出するように構成された検出部
を具備するデータ復号化装置。
32.算術符号化されたデータ値のシーケンスの復号化方法であって、
範囲変数で定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正し、
符号化されたデータ値を検出し、上記検出に応答して、上記一連のコード値のサイズを増加し、
上記範囲変数がゼロに等しい少なくとも1つの最下位ビットを有する利用可能な範囲変数値の所定のサブセットから選択された値に設定される上記シーケンスの終端を検出し、
上記検出に応答して、上記範囲変数及び上記一連のコード値のサイズを上記選択された値に設定する
データ復号化方法。
33.上記32に記載のデータ復号化方法であって、
上記利用可能な範囲変数値のサブセットは、256の値を含む
データ復号化方法。
34.上記32又は33に記載のデータ復号化方法であって、
上記シーケンスの終端において最後の符号化データ値から1つ又は複数の等確率符号化データ値を検出する
データ復号化方法。
35.コンピュータによって実行される際に、上記コンピュータに上記13〜24及び32〜34のいずれか1つに記載の方法を実行させるコンピュータプログラム。
36.上記35に記載のコンピュータプログラムが記憶された非一時的な機械可読記憶媒体。
37.上記29〜31のいずれか1つに記載のデータ復号化装置を含むビデオデータキャプチャ・送信及び/又は記憶装置。
【0337】
他の特徴は、以下の番号付けされた項によって定義される。
1.符号化のためのデータセットの入力データ値を符号化するデータ符号化装置であって、
現在の入力データ値に従って範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当てるように構成された選択部と、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正するように構成された修正部と、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズよりも小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加させるように構成され、各サイズ増加動作に応答して符号化データビットを出力する検出部と、
1群の入力データ値を符号化した後、上記範囲変数を上記所定の最小サイズに設定するように構成された範囲変数設定部と
を具備するデータ符号化装置。
2.上記1に記載のデータ符号化装置であって、
上記所定の最小サイズは、256である
データ符号化装置。
3.符号化のためのデータセットの入力データ値を符号化するデータ符号化装置であって、
現在の入力データ値に従って範囲変数によって定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当てるように構成された選択部と、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正するように構成された修正部と、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズよりも小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加するように構成され、各サイズ増加動作に応じて符号化データビットを出力する検出部と、
1群の入力データ値を符号化した後、上記範囲変数を256に設定するように構成された範囲変数設定部と
を具備するデータ符号化装置。
4.データビットを範囲変数により定義される一連のコード値の複数の補足サブレンジの1つとして符号化するバイナリ算術符号化により符号化されたデータストリームからデータビットを復号化するように構成されたデータ復号化装置であって、
1群のデータビットを復号化した後、上記範囲変数を所定の値に設定するように構成された範囲変数設定部と、
上記データストリームの1つ又は複数の後続データビットを復号化データビットとして処理するように構成されたデータ出力部と
を具備するデータ復号化装置。
5.上記4に記載のデータ復号化装置であって、
上記所定の値は、256である
データ復号化装置。
6.符号化のためのデータセットの入力データ値のデータ符号化方法であって、
現在の入力データ値に従って範囲変数により定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当て、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正し、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、
1群の入力データ値を符号化した後、上記範囲変数を上記所定の最小サイズに設定する
データ符号化方法。
7.上記6に記載のデータ符号化方法であって、
上記所定の最小サイズは、256である
データ符号化方法。
8.符号化のためのデータセットの入力データ値のデータ符号化方法であって、
現在の入力データ値に従って範囲変数により定義される一連のコード値の複数の補足サブレンジのうちの1つを選択し、
上記現在の入力データ値を上記選択されたサブレンジ内のコード値に割り当て、
上記割り当てられたコード値及び上記選択されたサブレンジのサイズに基づいて、上記一連のコード値を修正し、
上記一連のコード値を定義する上記範囲変数が所定の最小サイズより小さいか否かを検出し、小さい場合、上記一連のコード値のサイズが少なくとも上記所定の最小サイズとなるまで上記範囲変数を連続的に増加させ、各サイズ増加動作に応答して符号化データビットを出力し、
1群の入力データ値を符号化した後、上記範囲変数を256に設定する
データ符号化方法。
9.範囲変数により定義される一連のコード値の複数の補足サブレンジのうちの1つを現在の入力データ値に従って選択するバイナリ算術符号化によるデータ値の符号化・復号化方法であって、
1群の入力データ値を符号化又は復号化した後、上記範囲変数を所定の値に設定する
符号化・復号化方法。
10.上記9に記載の符号化・復号化方法であって、
上記所定の値は、256である
符号化・復号化方法。
11.上記9又は10に記載の符号化・復号化方法であって、
上記所定の値は、上記範囲変数の最小可能値である
符号化・復号化方法。
12.データビットを範囲変数により定義される一連のコード値の複数の補足サブレンジの1つとして符号化するバイナリ算術符号化により符号化されるデータストリームからデータビットを復号化するデータ復号化方法であって、
1群のデータビットを復号化した後、上記範囲変数を所定の値に設定し、
上記データストリームの1つ又は複数の後続データビットを復号化データビットとして処理する
データ復号化方法。
13.上記12に記載のデータ復号化方法であって、
上記所定の値は、256である
データ復号化方法。
14.上記9〜11のいずれか1に記載のデータ復号化方法を実行するように構成された符号化・復号化装置。
15.コンピュータによって実行される際に、上記コンピュータに上記6〜13のいずれか1つに記載の方法を実行させるコンピュータプログラム。
16.上記15に記載のコンピュータプログラムが記憶された非一時的な機械可読記憶媒体。
【0338】
上記さまざまな項で定義される特徴は、技術的な意味で妨げられない限り、上記の他の項で定義される特徴と組み合わせてもよいことが理解されよう。
【0339】
上述のように、上記の項の装置機能は、上述のエンコーダ又はデコーダの機能により実行されてもよいことが理解されよう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35