【文献】
Jun Xu et al.,Chroma QP extension and signalling enhancement,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,9th Meeting: Geneva, CH,2012年 4月,JCTVC-I0265_r1,pp.1-11
【文献】
Geert Van der Auwera et al.,AHG6: Chroma QP Offsets and Chroma Deblocking Filtering,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,9th Meeting: Geneva, CH,2012年 4月,JCTVC-I0283_r1,pp.1-5
【文献】
Geert Van der Auwera and Marta Karczewicz,AHG6: Chroma QP Offsets and Chroma Deblocking Filter,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,10th Meeting: Stockholm, SE,2012年 7月,JCTVC-J0091_r1,pp.1-5
【文献】
Gary J. Sullivan et al.,Chroma QP range extension,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,10th Meeting: Stockholm, SE,2012年 7月,JCTVC-J0342,pp.1-8
【文献】
Sandeep Kanumuri and Gary J. Sullivan,Use of Chroma QP offsets in Deblocking,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,10th Meeting: Stockholm, SE,2012年 7月,JCTVC-J0343,pp.1-2
【文献】
Wade Wan and Tim Hellman,Consistent chroma QP derivation in the deblocking and inverse quantization,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,11th Meeting: Shanghai, CN,2012年10月,JCTVC-K0145r1,pp.1-5
【文献】
Sandeep Kanumuri and Gary J. Sullivan,Use of Chroma QP offsets in Deblocking,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,11th Meeting: Shanghai, CN,2012年10月,JCTVC-K0220,pp.1-3
(58)【調査した分野】(Int.Cl.,DB名)
イメージ・デコーダ又はビデオ・デコーダを実装したコンピューティング・デバイスであって、前記コンピューティング・デバイスは、処理装置及びメモリを備え、前記コンピューティング・デバイスは、
量子化パラメータ(QP)の値がルマ成分とクロマ成分との間の関係に従って変化する符号化されたイメージ・コンテンツ又はビデオ・コンテンツを含むビットストリームの少なくとも一部分を受信することと、
前記符号化されたイメージ・コンテンツ又はビデオ・コンテンツの少なくとも一部分を復号化することであって、前記復号化することは、
ピクチャのスライスを復号化するために、ピクチャ・パラメータ・セットの1以上のシンタックス要素に基づくピクチャ・レベル・クロマQPオフセットと、前記スライスのスライス・ヘッダの1以上のシンタックス要素に基づくスライス・レベル・クロマQPオフセットであって、クロマQP値を決定するために使用されるスライス・レベル・クロマQPオフセットと、を設定することと、
前記スライスの少なくとも一部分のデブロック・フィルタリングを実行することであって、前記スライスの前記少なくとも一部分の前記デブロック・フィルタリングのための制御パラメータの導出は、前記ピクチャ・レベル・クロマQPオフセットを考慮に入れるが、前記スライス・レベル・クロマQPオフセットを考慮に入れず、前記制御パラメータは、
qPI=(((QPQ+QPP+1)>>1)+cqp_offset)
として導出される変数qPIに依存し、変数QPQ及び変数QPPは、デブロック・フィルタリングが実行される、前記スライスの前記少なくとも一部分におけるエッジの一方のサイドのブロックのルマQP値を表し、変数cqp_offsetは、前記ピクチャ・レベル・クロマQPオフセットを表す、実行することと、
を含む、復号化することと、
を含む動作を実行するよう構成されている、コンピューティング・デバイス。
【発明を実施するための形態】
【0014】
複数成分の色空間表現を使用するビデオ・コンテンツ及び他のイメージ・コンテンツの圧縮にとって、設計の重要な側面は、色成分の各々に対する量子化の粒度の制御である。そのような制御は、通常、1つの色成分(しばしば、プライマリ成分と呼ばれる)に関連付けられた量子化ステップ・サイズと、他の色成分(しばしば、セカンダリ成分と呼ばれる)に関連付けられた量子化ステップ・サイズとの間のスケーリング関係を設定することにより実現される。通常、プライマリ成分はルマ成分であり、1以上のセカンダリ成分は1以上のクロマ成分である。
【0015】
例えば、ITU−T H.264規格において、ルマ成分及びクロマ成分のQP間の関係は、QPの値、ルックアップ・テーブル、及びエンコーダにより制御されるオフセットとともに、時として周波数固有のスケーリング・ファクタを設定するための量子化スケーリング・マトリックスに従って決定される。QPの符号化制御のこの側面に関する既存の設計にはいくつかの不都合な点が存在する。例えば、H.264におけるクロマ成分のQPの最大値(クロマに関する最も粗い量子化を示す)は、ルマ成分のためにサポートされるQPの最大値(ルマに関する最も粗い量子化を示す)よりも実質的に小さい値に制限される。量子化の粗さが、クロマのQPの最大値により制限される場合、これは、ビデオ・コンテンツのクロマ成分を符号化するために使用される過度の量のビットを生じさせ得る。これは、ビデオ・コンテンツのルマ成分を符号化するために使用されるより少ないビットをもたらし、全体的な品質の低下をもたらし得る。
【0016】
詳細な説明は、プライマリ成分の量子化に関連してセカンダリ成分の量子化の粒度を制御する様々な手法を提供する。多くの場合、これらの手法は、従来手法の欠点を軽減する。具体的には、詳細な説明は、拡張範囲を有するクロマQP値の使用のためのイノベーションを提供する。
【0017】
例えば、説明する手法は、プライマリ色成分とセカンダリ色成分との間の関係を設定するために使用することができるルックアップ・テーブルの拡張サイズの使用を含む。別の例として、そのようなルックアップ・テーブルにより設定されたQP値における関数関係が、代替的に、単純な数学的演算を使用することにより提供され得る。ビデオ符号化及びビデオ復号化におけるQP値の制御のさらなる革新的側面についても説明する。説明する技術は、ビデオ符号化/復号化以外の静止画像符号化/復号化、医用スキャン・コンテンツ符号化/復号化、マルチスペクトル画像コンテンツ符号化/復号化等のさらなる用途に適用されてもよい。本明細書で説明するオペレーションは、エンコーダ(例えば、ビデオ・エンコーダ)又はデコーダ(例えば、ビデオ・デコーダ)により実行されるものとして所々で説明されるが、多くの場合、このようなオペレーションは、代替的に、別のタイプのメディア処理ツールにより実行することができる。
【0018】
本明細書で説明するイノベーションのいくつかは、HEVC規格に固有のシンタックス要素及びオペレーションを参照して示される。例えば、HEVC規格のドラフト・バージョンJCTVC−I1003(2012年4月にジュネーブで開催された第9回会合の”High efficiency video coding (“HEVC”) text specification draft 7”, JCTVC-I1003_d5)を参照する。本明細書で説明するイノベーションはまた、他の規格又はフォーマットのためにも実装することができる。
【0019】
本明細書で説明するイノベーションのいくつかは、YCbCrフォーマットの色成分に関するシンタックス要素及びオペレーションを参照して示される。本明細書で説明するイノベーションはまた、Y’UV、YIQ、Y’IQ、及びYDbDrに加えて、YCoCg等の変形といった他のルマ/クロマ・フォーマットのためにも実装することができる。Cb成分及びCr成分に関する例は、クロマ成分が、U及びVである場合、I及びQである場合、Db及びDrである場合、Co及びCgである場合、又は別のフォーマットのクロマ成分である場合にも等しく適用されるものと理解すべきである。
【0020】
より一般的に、本明細書で説明する例に対する様々な代替例が可能である。例えば、本明細書で説明する方法のいくつかは、説明する方法動作の順番を変えることにより、所定の方法動作を分けることにより、所定の方法動作を繰り返すことにより、又は所定の方法動作を省略することにより、変更することができる。開示する技術の様々な態様が、組み合わせることにより、又は別々に使用され得る。様々な実施形態が、説明するイノベーションのうちの1以上を使用する。本明細書で説明するイノベーションのいくつかは、背景技術において記した問題のうちの1以上に対処する。一般的に、所与の技術/ツールが、そのような問題の全てを解決するわけではない。
【0021】
I.例示的なコンピューティング・システム
図1は、説明するイノベーションのいくつかを実装することができる適切なコンピューティング・システム(100)の一般化された例を示している。コンピューティング・システム(100)は、使用又は機能の範囲に関して限定を示唆するよう意図するものではない。というのは、このイノベーションは、多様な汎用コンピューティング・システム又は専用コンピューティング・システムにおいて実施することができるからである。
【0022】
図1を参照すると、コンピューティング・システム(100)は、1以上の処理装置(110、115)及びメモリ(120、125)を含む。
図1において、この最も基本的な構成(130)は破線内に含まれる。処理装置(110、115)はコンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置(CPU)、特定用途向け集積回路(ASIC)におけるプロセッサ、又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいて、複数の処理装置が、処理能力を増大させるために、コンピュータ実行可能命令を実行する。例えば、
図1は、中央処理装置(110)に加えて、グラフィックス処理装置又は共処理装置(115)も示している。有体のメモリ(120、125)は、1以上の処理装置によりアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)であってもよいし、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュ・メモリ等)であってもよいし、それら2つの何らかの組合せであってもよい。メモリ(120、125)は、1以上の処理装置による実行に適したコンピュータ実行可能命令の形態でソフトウェア(180)を記憶する。このソフトウェア(180)は、デブロック・フィルタリングにおいてクロマQPオフセットを使用するための1以上のイノベーションを実装する。
【0023】
コンピューティング・システムは追加の特徴を有することができる。例えば、コンピューティング・システム(100)は、ストレージ(140)、1以上の入力デバイス(150)、1以上の出力デバイス(160)、及び1以上の通信コネクション(170)を含む。バス、コントローラ、又はネットワーク等の相互接続機構(図示せず)が、コンピューティング・システム(100)のコンポーネントを相互接続する。通常、オペレーティング・システム・ソフトウェア(図示せず)が、コンピューティング・システム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティング・システム(100)のコンポーネントの動作を調整する。
【0024】
有体のストレージ(140)は、取り外し可能であっても取り外し不可能であってもよく、磁気ディスク、磁気テープ若しくは磁気カセット、CD−ROM、DVD、又は、情報を記憶するために使用することができ、コンピューティング・システム(100)内でアクセスされ得る任意の他の媒体を含む。ストレージ(140)は、デブロック・フィルタリングにおいてクロマQPオフセットを使用するための1以上のイノベーションを実装するソフトウェア(180)の命令を記憶する。
【0025】
1以上の入力デバイス(150)は、キーボード、マウス、ペン、又はトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャニング・デバイス、又はコンピューティング・システム(100)に入力を提供する別のデバイスとすることができる。ビデオ符号化に関して、1以上の入力デバイス(150)は、カメラ、ビデオ・カード、TVチューナ・カード、若しくはアナログ形態あるいはデジタル形態でビデオ入力を受信する同様のデバイス、又はビデオ・サンプルをコンピューティング・システム(100)に読み込むCD−ROMあるいはCD−RWとすることができる。1以上の出力デバイス(160)は、ディスプレイ、プリンタ、スピーカ、CDライタ、又はコンピューティング・システム(100)からの出力を提供する別のデバイスとすることができる。
【0026】
1以上の通信コネクション(170)は、通信媒体を介した別のコンピューティング・エンティティへの通信を可能にする。通信媒体は、変調されたデータ信号により、コンピュータ実行可能命令、オーディオ入力、ビデオ入力、オーディオ出力、ビデオ出力、又は他のデータ等の情報を伝達する。変調されたデータ信号とは、信号内の情報を符号化するように設定又は変更された特性の1以上を有する信号である。例えば、通信媒体は、電気信号、光信号、RF、赤外線、又は他のキャリアを使用することができるが、これらに限定されるものではない。
【0027】
イノベーションは、コンピュータ読み取り可能媒体の一般的なコンテキストにおいて説明することができる。コンピュータ読み取り可能媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有体の媒体である。例えば、コンピューティング・システム(100)において、コンピュータ読み取り可能媒体は、メモリ(120、125)、ストレージ(140)、及びそれらの組合せを含むが、これらに限定されるものではない。
【0028】
イノベーションは、コンピュータ実行可能命令の一般的なコンテキストにおいて説明することができる。コンピュータ実行可能命令は、例えば、プログラム・モジュールに含まれ、コンピューティング・システムにおいて、ターゲット実プロセッサ又は仮想プロセッサ上で実行される。一般に、プログラム・モジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラム・モジュールの機能は、様々な実施形態において、必要に応じて、組み合わされてもよいし、プログラム・モジュール間で分割されてもよい。プログラム・モジュールのコンピュータ実行可能命令は、ローカル・コンピューティング・システム又は分散コンピューティング・システム内で実行され得る。
【0029】
「システム」及び「デバイス」という語は、本明細書において置き換え可能に使用される。文脈が別途明確に示さない限り、これらの語は、コンピューティング・システム又はコンピューティング・デバイスのタイプに関して、いかなる限定も示すものではない。一般に、コンピューティング・システム又はコンピューティング・デバイスは、ローカルであってもよいし、分散されてもよく、専用ハードウェア及び/又は汎用ハードウェアと、本明細書で説明する機能を実装するソフトウェアとの任意の組合せを含み得る。
【0030】
開示する方法は、開示する方法のいずれかを実行するよう構成された専用コンピューティング・ハードウェアを用いて実装することもできる。例えば、開示する方法は、開示する方法のいずれかを実行するよう特別に設計又は構成された集積回路(例えば、特定用途向け集積回路(「ASIC」)(ASICデジタル信号処理装置(「DSP」)、グラフィックス処理装置(「GPU」)、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)等のプログラマブル・ロジック・デバイス(「PLD」)等)により実装することができる。
【0031】
プレゼンテーションの目的上、詳細な説明では、コンピューティング・システムにおけるコンピュータ・オペレーションを説明するための「決定する」及び「使用する」のような語が使用される。これらの語は、コンピュータにより実行されるオペレーションの高レベル抽象表現であって、人間により実行される動作と混同すべきではない。これらの語に対応する実際のコンピュータ・オペレーションは、実装に応じて変化する。
【0032】
II.例示的なネットワーク環境
図2a及び
図2bは、ビデオ・エンコーダ(220)及びビデオ・デコーダ(270)を含む例示的なネットワーク環境(201、202)を示している。エンコーダ(220)及びデコーダ(270)は、適切な通信プロトコルを用いて、ネットワーク(250)を介して接続される。ネットワーク(250)は、インタネット又は別のコンピュータ・ネットワークを含み得る。
【0033】
図2aに示されるネットワーク環境(201)において、各リアルタイム通信(「RTC」)ツール(210)は、双方向通信のためのエンコーダ(220)及びデコーダ(270)の両方を含む。所与のエンコーダ(220)は、SMPTE 421M規格、ISO−IEC 14496−10規格(H.264又はAVCとしても知られている)、HEVC規格、別の規格、又はプロプライエタリ・フォーマットに準拠する出力を生成することができ、対応するデコーダ(270)は、エンコーダ(220)から符号化データを受信することができる。双方向通信は、ビデオ会議、ビデオ通話、又は他の2パーティの通信シナリオの一部であり得る。
図2aのネットワーク環境(201)は、2つのリアルタイム通信ツール(210)を含むが、ネットワーク環境(201)は、マルチパーティ通信に参加する3以上のリアルタイム通信ツール(210)を含んでもよい。
【0034】
リアルタイム通信ツール(210)は、エンコーダ(220)による符号化を管理する。
図3は、リアルタイム通信ツール(210)に含まれ得る例示的なエンコーダ・システム(300)を示している。代替的に、リアルタイム通信ツール(210)は、別のエンコーダ・システムを使用してもよい。リアルタイム通信ツール(210)はまた、デコーダ(270)による復号化も管理する。
図4は、リアルタイム通信ツール(210)に含まれ得る例示的なデコーダ・システム(400)を示している。代替的に、リアルタイム通信ツール(210)は、別のデコーダ・システムを使用してもよい。
【0035】
図2bに示されるネットワーク環境(202)において、符号化ツール(212)は、デコーダ(270)を含む複数の再生ツール(214)に伝送するためのビデオを符号化するエンコーダ(220)を含む。一方向通信は、ビデオが符号化されて1つのロケーションから1以上の他のロケーションに送信される、ビデオ監視システム、ウェブ・カメラ・モニタリング・システム、リモート・デスクトップ会議プレゼンテーション、又は他のシナリオのために提供され得る。
図2bのネットワーク環境(202)は、2つの再生ツール(214)を含むが、ネットワーク環境(202)は、それより多い又はそれより少ない再生ツール(214)を含んでもよい。一般に、再生ツール(214)は、再生ツール(214)が受信するビデオのストリームを判定するために、符号化ツール(212)と通信する。再生ツール(214)は、ストリームを受信し、適切な期間の間受信した符号化データをバッファし、復号化及び再生を開始する。
【0036】
図3は、符号化ツール(212)に含まれ得る例示的なエンコーダ・システム(300)を示している。代替的に、符号化ツール(212)は、別のエンコーダ・システムを使用してもよい。符号化ツール(212)はまた、1以上の再生ツール(214)との接続を管理するためのサーバ・サイド・コントローラ・ロジックも含み得る。
図4は、再生ツール(214)に含まれ得る例示的なデコーダ・システム(400)を示している。代替的に、再生ツール(214)は、別のデコーダ・システムを使用してもよい。再生ツール(214)はまた、符号化ツール(212)との接続を管理するためのクライアント・サイド・コントローラ・ロジックも含み得る。
【0037】
III.例示的なエンコーダ・システム
図3は、いくつかの説明する実施形態を協働して実装することができる例示的なエンコーダ・システム(300)のブロック図である。エンコーダ・システム(300)は、リアルタイム通信のための低レイテンシ符号化モード、トランスコーディング・モード、及びファイル又はストリームからのメディア再生のための通常の符号化モード等の複数の符号化モードのうちいずれかで動作することができる汎用符号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用符号化ツールであってもよい。エンコーダ・システム(300)は、オペレーティング・システム・モジュールとして、アプリケーション・ライブラリの一部として、又はスタンドアロン・アプリケーションとして、実装することができる。概して、エンコーダ・システム(300)は、ビデオ・ソース(310)から一連のソース・ビデオ・フレーム(311)を受信し、チャネル(390)への出力として符号化データを生成する。チャネルに出力される符号化データは、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。
【0038】
ビデオ・ソース(310)は、カメラ、チューナ・カード、記憶媒体、又は他のデジタル・ビデオ・ソースとすることができる。ビデオ・ソース(310)は、例えば、毎秒30フレームといったフレーム・レートで一連のビデオ・フレームを生成する。本明細書で使用されるとき、「フレーム」という語は、一般に、ソースの符号化された又は再構築されたイメージ・データを指す。プログレッシブ・ビデオでは、フレームはプログレッシブ・ビデオ・フレームである。インタレース・ビデオでは、例示的な実施形態において、インタレース・ビデオ・フレームは、符号化の前にインタレース効果が除かれる(de-interlaced)。代替的に、2つの相補的インタレース・ビデオ・フィールドが、インタレース・ビデオ・フレーム又は別々のフィールドとして符号化されてもよい。プログレッシブ・ビデオ・フレームを示すかは別にして、「フレーム」という語は、単一の対でないビデオ・フィールド、相補的な一対のビデオ・フィールド、所与の時間におけるビデオ・オブジェクトを表すビデオ・オブジェクト・プレーン、又はより大きなイメージにおける関心領域を示し得る。ビデオ・オブジェクト・プレーン又は領域は、シーンの複数のオブジェクト又は領域を含むより大きなイメージの一部であり得る。
【0039】
到着ソース・フレーム(311)は、複数のフレーム・バッファ記憶領域(321、322、...、32n)を含むソース・フレーム一時メモリ記憶領域(320)に記憶される。フレーム・バッファ(321、322等)は、ソース・フレーム記憶領域(320)内で1つのソース・フレームを保持する。ソース・フレーム(311)のうちの1以上がフレーム・バッファ(321、322等)に記憶された後、フレーム・セレクタ(330)が、ソース・フレーム記憶領域(320)から個々のソース・フレームを定期的に選択する。エンコーダ(340)への入力のためにフレーム・セレクタ(330)によりフレームが選択される順番は、ビデオ・ソース(310)によりフレームが生成される順番とは異なり得る。例えば、一時的に後方予測を容易にするために、あるフレームが前になる場合がある。エンコーダ(340)の前に、エンコーダ・システム(300)は、符号化の前に選択されたフレーム(331)の前処理(例えば、フィルタリング)を実行するプリ・プロセッサ(図示せず)を含み得る。前処理は、符号化するためのプライマリ成分及びセカンダリ成分への色空間変換も含み得る。
【0040】
エンコーダ(340)は、符号化フレーム(341)を生成するために、選択されたフレーム(331)を符号化するとともに、メモリ管理制御操作(「MMCO」)信号(342)又は参照ピクチャ・セット(「RPS」)情報を生成する。現フレームが、符号化された最初のフレームではない場合、符号化プロセスを実行するとき、エンコーダ(340)は、復号化フレーム一時メモリ記憶領域(360)に記憶された1以上の以前に符号化/復号化されたフレーム(369)を使用することができる。そのような記憶された復号化フレーム(369)は、現ソース・フレーム(331)のコンテンツのフレーム間予測のための参照フレームとして使用される。一般に、エンコーダ(340)は、動き推定及び動き補償、周波数変換、量子化、並びにエントロピ符号化等の符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ(340)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。出力される符号化データのフォーマットは、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、HEVCフォーマット、又は他のフォーマットであり得る。
【0041】
例えば、エンコーダ(340)において、インタ符号化された予測フレームが、参照フレームからの予測の観点で表される。動き推定部が、1以上の参照フレーム(369)に関して、ソース・フレーム(341)のサンプルのブロック又は他のセットの動きを推定する。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部は、エントロピ符号化される動きベクトル情報等の動き情報を出力する。動き補償部は、動き補償予測値を決定するために、動きベクトルを参照フレームに適用する。エンコーダは、ブロックの動き補償予測値と対応するオリジナルの値との間の差(あれば)を決定する。このような予測残差値が、周波数変換、量子化、及びエントロピ符号化を用いて、さらに符号化される。この量子化が、クロマQPの値を使用し得る。例えば、エンコーダ(340)は、ピクチャ、スライス、及び/又はビデオの他の部分のためのルマQP及びクロマQPの値を設定し、それに従って変換係数を量子化する。同様に、イントラ予測では、エンコーダ(340)は、ブロックに関するイントラ予測値を決定し、予測残差値を決定し、(周波数変換、量子化、及びエントロピ符号化を用いて)予測残差値を符号化することができる。具体的には、エンコーダ(340)のエントロピ符号化部が、量子化された変換係数値に加えて、所定のサイド情報(例えば、動きベクトル情報、QP値、モード決定、パラメータ選択)も圧縮する。一般的なエントロピ符号化技術は、指数ゴロム符号化、算術符号化、差分符号化、ハフマン符号化、ラン・レングス符号化、「V2V(variable-length-to-variable-length)」符号化、「V2F(variable-length-to-fixed-length)」符号化、LZ符号化、辞書符号化、「PIPE(probability interval partitioning entropy coding)」符号化、及びこれらの組合せを含む。エントロピ符号化部は、様々な種類の情報のための様々な符号化技術を使用することができ、特定の符号化技術における複数の符号テーブルの中から選択することができる。
【0042】
符号化フレーム(341)及びMMCO/RPS情報(342)が、復号化プロセス・エミュレータ(350)により処理される。復号化プロセス・エミュレータ(350)は、例えば、動き推定及び動き補償においてエンコーダ(340)により使用される参照フレームを再構築する復号化タスク等のデコーダの機能の一部を実装している。復号化プロセス・エミュレータ(350)は、所与の符号化フレーム(341)が、符号化される後続フレームのフレーム間予測において参照フレームとして使用するために再構築されて記憶される必要があるかどうかを判定するために、MMCO/RPS情報(342)を使用する。MMCO/RPS情報(342)により、符号化フレーム(341)が記憶される必要があると示される場合、復号化プロセス・エミュレータ(350)は、符号化フレーム(341)を受信して対応する復号化フレーム(351)を生成するデコーダにより行われるであろう復号化プロセスを模擬する。そうする場合、エンコーダ(340)が、復号化フレーム記憶領域(360)に記憶された1以上の復号化フレーム(369)を使用したとき、復号化プロセス・エミュレータ(350)は、復号化プロセスの一部として、記憶領域(360)から1以上の復号化フレーム(369)を使用する。
【0043】
復号化フレーム一時メモリ記憶領域(360)は、複数のフレーム・バッファ記憶領域(361、362、...、36n)を含む。復号化プロセス・エミュレータ(350)は、参照フレームとして使用するためにエンコーダ(340)によりもはや必要とされなくなったフレームを有する任意のフレーム・バッファ(361、362等)を識別するために、MMCO/RPS情報(342)を使用して、記憶領域(360)のコンテンツを管理する。復号化プロセスを模擬した後、復号化プロセス・エミュレータ(350)は、このように識別されるフレーム・バッファ(361、362等)に、新たに復号化されたフレーム(351)を記憶する。
【0044】
符号化フレーム(341)及びMMCO/RPS情報(342)はまた、一時符号化データ領域(370)にバッファされる。符号化データ領域(370)に収集される符号化データは、エレメンタリ符号化ビデオ・ビットストリームのシンタックスの一部として、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。符号化データ領域(370)に収集される符号化データはまた、(例えば、1以上の「SEI(supplemental enhancement information)」メッセージ又は「VUI(video usability information)」メッセージにおける1以上のパラメータとして、)符号化ビデオ・データに関連するメディア・メタデータを含み得る。
【0045】
一時符号化データ領域(370)からの収集されたデータ(371)は、チャネル・エンコーダ(380)により処理される。チャネル・エンコーダ(380)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)メディア・ストリームとして伝送するために、収集されたデータをパケット化することができる。そのような場合、チャネル・エンコーダ(380)は、メディア伝送ストリームのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、チャネル・エンコーダ(380)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)ファイルとして記憶するために、収集されたデータを編成することができる。そのような場合、チャネル・エンコーダ(380)は、メディア記憶ファイルのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、より一般的に、チャネル・エンコーダ(380)は、1以上のメディア・システム多重化プロトコル又は伝送プロトコルを実装することができる。そのような場合、チャネル・エンコーダ(380)は、1以上のプロトコルのシンタックスの一部として、シンタックス要素を付加することができる。チャネル・エンコーダ(380)は、チャネル(390)への出力を提供する。チャネル(390)は、ストレージ、通信コネクション、又は出力のための別のチャネルを表す。
【0046】
IV.例示的なデコーダ・システム
図4は、いくつかの説明する実施形態を協働して実装することができる例示的なデコーダ・システム(400)のブロック図である。デコーダ・システム(400)は、リアルタイム通信のための低レイテンシ復号化モード及びファイル又はストリームからのメディア再生のための通常の復号化モード等の複数の復号化モードのうちいずれかで動作することができる汎用復号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用復号化ツールであってもよい。デコーダ・システム(400)は、オペレーティング・システム・モジュールとして、アプリケーション・ライブラリの一部として、又はスタンドアロン・アプリケーションとして、実装することができる。概して、デコーダ・システム(400)は、チャネル(410)から符号化データを受信し、出力先(490)への出力として再構築フレームを生成する。符号化データは、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。
【0047】
デコーダ・システム(400)は、ストレージ、通信コネクション、又は入力としての符号化データのための別のチャネルを表し得るチャネル(410)を含む。チャネル(410)は、チャネル符号化された符号化データを生成する。チャネル・デコーダ(420)は、符号化データを処理することができる。例えば、チャネル・デコーダ(420)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)メディア・ストリームとして伝送するために収集されたデータを脱パケット化する。そのような場合、チャネル・デコーダ(420)は、メディア伝送ストリームのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、チャネル・デコーダ(420)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)ファイルとして記憶するために収集された符号化ビデオ・データを分離する。そのような場合、チャネル・デコーダ(420)は、メディア記憶ファイルのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネル・デコーダ(420)は、1以上のメディア・システム逆多重化プロトコル又は伝送プロトコルを実装することができる。そのような場合、チャネル・デコーダ(420)は、1以上のプロトコルのシンタックスの一部として付加されたシンタックス要素を解析することができる。
【0048】
十分な量のデータが受信されるまで、チャネル・デコーダ(420)から出力される符号化データ(421)は、一時符号化データ領域(430)に記憶される。符号化データ(421)は、符号化フレーム(431)及びMMCO/RPS情報(432)を含む。符号化データ領域(430)内の符号化データ(421)は、エレメンタリ符号化ビデオ・ビットストリームのシンタックスの一部として、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。符号化データ領域(430)内の符号化データ(421)はまた、(例えば、1以上のSEIメッセージ又はVUIメッセージにおける1以上のパラメータとして、)符号化ビデオ・データに関連するメディア・メタデータを含み得る。一般に、そのような符号化データ(421)がデコーダ(450)により使用されるまで、符号化データ領域(430)は、符号化データ(421)を一時的に記憶する。その時点で、符号化フレーム(431)及びMMCO/RPS情報(432)の符号化データが、符号化データ領域(430)からデコーダ(450)に伝送される。復号化が進むにつれ、新たな符号化データが、符号化データ領域(430)に追加され、符号化データ領域(430)に残っている最も古い符号化データが、デコーダ(450)に伝送される。
【0049】
デコーダ(450)は、対応する復号化フレーム(451)を生成するために、符号化フレーム(431)を定期的に復号化する。必要に応じて、復号化プロセスを実行するとき、デコーダ(450)は、フレーム間予測のための参照フレームとして、1以上の以前に復号化されたフレーム(469)を使用することができる。デコーダ(450)は、復号化フレーム一時メモリ記憶領域(460)から、そのような以前に復号化されたフレーム(469)を読み込む。一般に、デコーダ(450)は、エントロピ復号化、逆量子化(これがクロマQPの値を使用し得る)、逆周波数変換、及び動き補償等の復号化タスクを実行する複数の復号化モジュールを含む。デコーダ(450)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。
【0050】
例えば、デコーダ(450)は、圧縮フレーム又は一連のフレームの符号化データを受信し、復号化フレーム(451)を含む出力を生成する。デコーダ(450)において、バッファは、圧縮フレームの符号化データを受け入れ、受け入れた符号化データをエントロピ復号化部に利用可能にする。エントロピ復号化部は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化データに加えて、エントロピ符号化されたサイド情報もエントロピ復号化する。動き補償部は、再構築されているフレームのサブ・ブロック及び/又はブロック(一般に、ブロック)の動き補償予測を形成するために、動き情報を1以上の参照フレームに適用する。イントラ予測モジュールは、隣接する以前に再構築されたサンプル値から、現ブロックのサンプル値を空間的に予測する。デコーダ(450)はまた、予測残差を再構築する。逆量子化部は、クロマQPの値を用いて、エントロピ復号化されたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリームにおけるシンタックス要素に基づいて、ピクチャ、スライス、及び/又はビデオの他の部分のためのルマQP及びクロマQPの値を設定し、それに従って変換係数を逆量子化する。逆周波数変換部は、量子化された周波数領域データを空間領域情報に変換する。予測フレームに関して、デコーダ(450)は、再構築フレームを形成するために、再構築された予測残差を動き補償予測と結合する。デコーダ(450)は、同様に、予測残差を、イントラ予測からの空間予測と結合することができる。ビデオ・デコーダ(450)における動き補償ループは、適応デブロッキング・フィルタを含み、適応デブロッキング・フィルタは、復号化フレーム(451)内のブロック境界ロー及び/又はカラムにわたる不連続さを平滑化する。
【0051】
復号化フレーム一時メモリ記憶領域(460)は、複数のフレーム・バッファ記憶領域(461、462、...、46n)を含む。復号化フレーム記憶領域(460)はDPBの一例である。デコーダ(450)は、復号化フレーム(451)を記憶することができるフレーム・バッファ(461、462等)を識別するために、MMCO/RPS情報(432)を使用する。デコーダ(450)は、そのフレーム・バッファに復号化フレーム(451)を記憶する。
【0052】
出力シーケンサ(480)は、出力順で生成される次のフレームが復号化フレーム記憶領域(460)内で利用可能になるときを識別するために、MMCO/RPS情報(432)を使用する。出力順で生成される次のフレーム(481)が、復号化フレーム記憶領域(460)内で利用可能になったとき、そのフレームが、出力シーケンサ(480)により読み込まれ、出力先(490)(例えば、ディスプレイ)に出力される。一般に、復号化フレーム記憶領域(460)から出力シーケンサ(480)によりフレームが出力される順番は、デコーダ(450)によりフレームが復号化される順番とは異なり得る。
【0053】
V.例示的なビデオ・エンコーダ
図5は、いくつかの説明する実施形態を協働して実装することができる一般化されたビデオ・エンコーダ(500)のブロック図である。エンコーダ(500)は、現フレーム(505)を含む一連のビデオ・フレームを受信し、出力として符号化データ(595)を生成する。
【0054】
エンコーダ(500)は、ブロックベースであり、実装に依存するブロック・フォーマットを使用する。ブロックは、例えば、周波数変換段階及びエントロピ符号化段階において等の様々な段階において、さらに分割され得る。例えば、フレームは、64x64ブロック、32x32ブロック、又は16x16ブロックに分割され得、今度は、それらのブロックが、符号化及び復号化のために、ピクセル値のより小さなブロック及びサブ・ブロックに分割され得る。
【0055】
エンコーダ・システム(500)は、予測フレーム及びイントラ符号化されたフレームを圧縮する。プレゼンテーションの目的上、
図5は、フレーム内符号化のためのエンコーダ(500)を介した「イントラ・パス」と、フレーム間符号化のための「インタ・パス」とを示している。エンコーダ(500)のコンポーネントの多くが、フレーム内符号化及びフレーム間符号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、圧縮される情報のタイプに応じて変わり得る。
【0056】
現フレーム(505)が予測フレームである場合、動き推定部(510)は、1以上の参照フレームに関して、現フレーム(505)のピクセル値のブロック、サブ・ブロック、又は他のセットの動きを推定する。フレーム・ストア(520)は、参照フレームとして使用するために、1以上の再構築された以前のフレーム(525)をバッファする。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部(510)は、サイド情報として、差分動きベクトル情報等の動き情報(515)を出力する。
【0057】
動き補償部(530)は、動き補償された現フレーム(535)を形成するとき、再構築された動きベクトルを、1以上の再構築された参照フレーム(525)に適用する。動き補償された現フレーム(535)のサブ・ブロック、ブロック等とオリジナルの現フレーム(505)の対応する部分との間の差(あれば)が、サブ・ブロック、ブロック等の予測残差(545)である。オリジナルの現フレーム(505)により近い再構築フレームを得るために、現フレームの後の再構築の間に、再構築された予測残差が、動き補償された現フレーム(535)に付加される。しかしながら、不可逆圧縮(lossy compression)では、それでも、いくつかの情報が、オリジナルの現フレーム(505)から失われる。イントラ・パスは、イントラ予測モジュール(図示せず)を含み得る。イントラ予測モジュールは、隣接する以前に再構築されたピクセル値から、現ブロック又はサブ・ブロックのピクセル値を空間的に予測する。
【0058】
周波数変換部(560)は、空間領域ビデオ情報を周波数領域(すなわち、スペクトル変換)データに変換する。ブロックベースのビデオ・フレームに関して、周波数変換部(560)は、離散コサイン変換とその整数近似、又は別のタイプの前方ブロック変換をピクセル値データ又は予測残差データのブロック又はサブ・ブロックに適用して、周波数変換係数のブロック/サブ・ブロックを生成する。次いで、量子化部(570)は、変換係数を量子化する。例えば、量子化部(570)は、フレームごとに、スライスごとに、ブロックごとに、又は他の単位で変わるステップ・サイズで、一様でないスカラ量子化を周波数領域データに適用する。量子化部(570)は、セクションVIIで説明するように、クロマQP値を含む、ルマ成分及びクロマ成分のQP値を使用することができる。例えば、エンコーダ(500)は、ピクチャ、スライス、及び/又はcoding unit等のビデオの他の部分のためのルマQP及びクロマQPの値を設定し、それに従って変換係数を量子化する。
【0059】
後続の動き推定/動き補償のために現フレームの再構築されたバージョンが必要とされる場合、逆量子化部(576)が、量子化された周波数係数データに対して逆量子化を実行する。逆量子化部(576)も、クロマQP値を使用し得る。逆周波数変換部(566)は、逆周波数変換を実行し、再構築された予測残差又はピクセル値のブロック/サブ・ブロックを生成する。予測フレームに関して、エンコーダ(500)は、再構築フレーム(505)を形成するために、再構築された予測残差(545)を動き補償された予測(535)と結合する。(
図5には示されていないが、イントラ・パスにおいては、エンコーダ(500)は、予測残差を、イントラ予測からの空間予測と結合することができる。)フレーム・ストア(520)は、後続の動き補償予測において使用するために、再構築された現フレームをバッファする。
【0060】
量子化及び他の不可逆処理は、フレームのブロック間又はサブ・ブロック間の境界における目に見えるラインをもたらし得る。例えば、(空領域等の)ピクチャの滑らかに変化する領域における隣接ブロックが、異なる平均レベルに量子化される場合、そのような「ブロッキング・アーチファクト」が生じ得る。ブロッキング・アーチファクトを低減させるために、エンコーダ及びデコーダは、参照フレーム内のブロック間及び/又はサブ・ブロック間の境界の不連続さを平滑化する「デブロック」フィルタリングを使用することができる。そのようなフィルタリングは、動き補償ループ内で生じるという点で、「ループ内」である。エンコーダ及びデコーダは、符号化/復号化において後で使用される参照フレームに対して、そのようなフィルタリングを実行する。ループ内デブロック・フィルタリングは、通常、符号化中可能であり、そのような場合、デコーダも、正しい復号化のために、ループ内デブロック・フィルタリングを実行する。デブロック・フィルタリングの詳細は、コーデック規格又はフォーマットに応じて変わるものであり、極めて複雑であり得る。しばしば、デブロック・フィルタリングを適用するルールは、コンテンツ/滑らかさ、符号化モード(例えば、イントラ又はインタ)、境界の異なるサイド上のブロック/サブ・ブロックの動きベクトル、ブロック/サブ・ブロックのサイズ、符号化されている/符号化されていないステータス(例えば、変換係数情報がビットストリームにおいて伝達されるかどうか)等のファクタに応じて変わり得る。
【0061】
図5において、エンコーダ(500)における動き補償ループは、フレーム・ストア(520)の前又は後に、適応ループ内デブロック・フィルタ(510)を含む。エンコーダ(500)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、ループ内フィルタリングを再構築フレームに適用する。セクションVIIにおいて、デブロック・フィルタリングがクロマQPオフセットの値に応じて変化する例を説明する。
【0062】
エントロピ符号化部(580)は、量子化部(570)の出力に加えて、動き情報(515)及び所定のサイド情報(例えば、QP値)も圧縮する。エントロピ符号化部(580)は、符号化データ(595)をバッファ(590)に供給し、バッファ(590)は、符号化データを出力ビットストリームに多重化する。符号化データは、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。セクションVIIにおいて、そのようなシンタックス要素の例を説明する。
【0063】
コントローラ(図示せず)は、エンコーダの様々なモジュールから入力を受信する。コントローラは、符号化中、中間結果を評価し、例えば、QP値を設定して、レート−歪み解析を実行する。コントローラは、他のモジュールと協働して、符号化中、符号化パラメータを設定し変更する。具体的には、コントローラは、符号化中、ルマ成分及びクロマ成分の量子化を制御するために、QP値及び他の制御パラメータを変更することができる。
【0064】
いくつかの実施例において、コントローラは、ピクチャ・レベルで、スライス・レベルで、又はスライス内のcoding unitレベルで量子化を制御するために、符号化中、ピクチャ・レベル・ルマQP値、スライス・レベル・ルマQP値、又はcoding unitレベル・ルマQP値を設定することができる。所与のスライスに関して、ルマQP値は、ピクチャ・レベル・ルマQP又はスライス・レベル・ルマQPに設定され得る。スライス・レベル・ルマQPは、ビットストリームにおいて、ピクチャ・レベル・ルマQP+スライス・レベル・ルマQPオフセットで表される。あるいは、コントローラは、スライス内の所与のcoding unitに関して、ルマQP値を設定してもよい。この場合、coding unitレベル・ルマQP値を示すために、スライス・レベル・ルマQPオフセット及びピクチャ・レベル・ルマQP値とともに、coding unitレベル・ルマQPオフセットが、ビットストリームにおいて伝達される。したがって、ピクチャ内の異なるスライスは、指定された異なるルマQP値を有してよく、スライス内の異なるcoding unitは、指定された異なるルマQP値を有してよい。コントローラはまた、ピクチャ・レベル・クロマQP値又はスライス・レベル・クロマQP値を設定することができる。スライス・レベル・クロマQP値は、ビットストリームにおいて、1以上のクロマQPオフセットで示される。クロマQPオフセットは、クロマQP値を直接的に指定するのではなく、クロマQP値を決定するために、(セクションVIIで説明する)導出プロセスにおいて使用される。コントローラはまた、ルマ成分及び/又はクロマ成分の係数のための周波数固有のスケーリング・ファクタを設定するための量子化スケーリング・マトリックスを指定することができる。
【0065】
QP値は、ルマ変換係数及びクロマ変換係数の量子化の粗さを制御する。例えば、QP値は、定められた関係に従って、量子化ステップ・サイズ(「QSS」)としても知られているスケーリング・ファクタを制御することができる。例えば、QP値は、ビットストリームにおいて、QP−26として伝達され、QSSは、S*2
(QP/6)であるか、又はおおよそS*2
(QP/6)である。ここで、Sは、固定値定数等のスケーリング・ファクタ、変換固有のスケーリング・ファクタ、又は周波数固有のスケーリング・ファクタである。いくつかの実施例において、整数ベースのフォーミュラ(formula)は、S*2
(QP/6)に近いQSSを示す。この関係において、QPの高い値は、高い(すなわち、粗い)QSSを表し、QPの低い値は、低い(すなわち、細かい)QSSを表す。代替的に、QPは、QSSと逆相関であってもよい。例えば、QP値は、ビットストリームにおいて、25−QPとして伝達され、QSSは、S*2
((51−QP)/6)であるか、又はおおよそS*2
((51−QP)/6)である。この例において、同じQSS値が実際上伝達され得るが、QPの高い値は低いQSSを表し、QPの低い値は高いQSSを表す。より一般的に、本明細書で説明するイノベーションは、QPとQSSとの間の様々な関係に適用することができる。QPとQSSとの間の関係は、上述した関係に加えて、QPが、H.263規格においてQUANTと呼ばれるパラメータ等のパラメータである関係や、QPが、H.262規格においてquantiser_scaleと呼ばれるパラメータ等のパラメータである関係も含む。
【0066】
一般に、コントローラは、ピクチャ、スライス、又はビデオの他の部分に対してルマQP及びクロマQPを設定することができ、次いで、品質及び/又はビット・レートの観点でコンテンツの符号化の結果(例えば、変換係数を量子化し、且つ/又は量子化した変換係数をエントロピ符号化した結果)を評価することができる。結果が満足のいくものであれば、コントローラは、設定されたルマQP及びクロマQPを選択することができる。結果が満足のいくものでなければ、コントローラは、ルマQP及び/又はクロマQPを調整することができる。例えば、符号化されたクロマ・コンテンツの品質が、符号化されたルマ・コンテンツの品質と比べて高過ぎる場合、コントローラは、レート及び/又は品質の全般的な目標を考慮に入れながら、ルマ成分とクロマ成分との間の品質のバランスを取るために、クロマQSSを増大させ、且つ/又はルマQSSを低減させるようQPを調整することができる。あるいは、符号化されたクロマ・コンテンツの品質が、符号化されたルマ・コンテンツの品質と比べて低過ぎる場合、コントローラは、レート及び/又は品質の全般的な目標を考慮に入れながら、ルマ成分とクロマ成分との間の品質のバランスを取るために、クロマQSSを低減させ、且つ/又はルマQSSを増大させるようQPを調整することができる。ルマQP及びクロマQPの設定及び調整は、ピクチャごとに、スライスごとに、又は何らかの他の単位で繰り返すことができる。
【0067】
実装及び所望の圧縮のタイプに応じて、エンコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダは、説明した技術のうちの1以上を実行する。エンコーダの特定の実施形態は、通常、エンコーダ(500)の変形又は補完バージョンを使用する。エンコーダ(500)内のモジュール間の示された関係は、エンコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0068】
VI.例示的なビデオ・デコーダ
図6は、いくつかの説明する実施形態を協働して実装することができる一般化されたデコーダ(600)のブロック図である。デコーダ(600)は、圧縮フレーム又は一連のフレームの符号化データ(695)を受信し、再構築フレーム(605)を含む出力を生成する。プレゼンテーションの目的上、
図6は、フレーム内復号化のためのデコーダ(600)を介した「イントラ・パス」と、フレーム間復号化のための「インタ・パス」とを示している。デコーダ(600)のコンポーネントの多くが、フレーム内復号化及びフレーム間復号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、伸張される情報のタイプに応じて変わり得る。
【0069】
バッファ(690)は、圧縮フレームの符号化データ(695)を受け入れ、受け入れた符号化データを解析部/エントロピ復号化部(680)に利用可能にする。符号化データは、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセット等のクロマ用に設定されるQP値を示すシンタックス要素を含み得る。セクションVIIにおいて、そのようなシンタックス要素の例を説明する。解析部/エントロピ復号化部(680)は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化データに加えて、エントロピ符号化されたサイド情報もエントロピ復号化する。
【0070】
動き補償部(630)は、再構築されているフレーム(605)のサブ・ブロック及び/又はブロックの動き補償予測(635)を形成するために、動き情報(615)を1以上の参照フレーム(625)に適用する。フレーム・ストア(620)は、参照フレームとして使用するために、1以上の以前に再構築されたフレームを記憶する。
【0071】
イントラ・パスは、イントラ予測モジュール(図示せず)を含み得る。イントラ予測モジュールは、隣接する以前に再構築されたピクセル値から、現ブロック又はサブ・ブロックのピクセル値を空間的に予測する。インタ・パスにおいて、デコーダ(600)は、予測残差を再構築する。逆量子化部(670)は、クロマQPの値を用いて、エントロピ復号化されたデータを逆量子化する。例えば、デコーダ(600)は、ビットストリームにおけるシンタックス要素に基づいて、ピクチャ、スライス、及び/又はcoding unit等のビデオの他の部分のためのルマQP及びクロマQPの値を設定し、逆量子化部(670)は、それに従って変換係数を逆量子化する。
【0072】
いくつかの実施例において、デコーダは、ピクチャ・レベル・ルマQP値、スライス・レベル・ルマQPオフセット(存在すれば)、及びcoding unitレベル・ルマQPオフセット(存在すれば)を含む、ビットストリームにおけるシンタックス要素により示されるように、復号化中、ピクチャ・レベル・ルマQP値、スライス・レベル・ルマQP値、又はcoding unitレベル・ルマQP値を設定することができる。ピクチャ内の異なるスライスは、指定された異なるルマQP値を有してよく、スライス内の異なるcoding unitは、指定された異なるルマQP値を有してよい。デコーダはまた、ピクチャ・レベル・クロマQP値又はスライス・レベル・クロマQP値を設定する。スライス・レベル・クロマQP値は、ビットストリームにおいて、1以上のクロマQPオフセットで示される。デコーダはまた、ルマ成分及び/又はクロマ成分の係数のための周波数固有のスケーリング・ファクタを設定するための量子化スケーリング・マトリックスを使用することができる。QP値は、上述したように、定められた関係に従った量子化ステップ・サイズ(「QSS」)を表す。
【0073】
逆周波数変換部(660)は、再構築された周波数領域データを空間領域情報に変換する。例えば、逆周波数変換部(660)は、逆ブロック変換を周波数変換係数に適用して、ピクセル値データ又は予測残差データを生成する。逆周波数変換は、逆離散コサイン変換とその整数近似、又は別のタイプの逆周波数変換であり得る。
【0074】
予測フレームに関して、デコーダ(600)は、再構築フレーム(605)を形成するために、再構築された予測残差(645)を動き補償予測(635)と結合する。(
図6には示されていないが、イントラ・パスにおいては、デコーダ(600)は、予測残差を、イントラ予測からの空間予測と結合することができる。)デコーダ(600)における動き補償ループは、フレーム・ストア(620)の前又は後に、適応ループ内デブロック・フィルタ(610)を含む。デコーダ(600)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、ループ内フィルタリングを再構築フレームに適用する。復号化中のデブロック・フィルタリングの詳細(例えば、コンテンツ/滑らかさ、符号化モード、境界の異なるサイド上のブロック/サブ・ブロックの動きベクトル、ブロック/サブ・ブロックのサイズ、符号化されている/符号化されていないステータス等のファクタに依存するルール)は、通常、符号化中のデブロック・フィルタリングの詳細に似ている。
【0075】
図6において、デコーダ(600)はまた、後処理デブロック・フィルタ(608)を含む。後処理デブロック・フィルタ(608)は、任意的に、再構築フレーム内の不連続さを平滑化する。(デリング・フィルタリング等の)他のフィルタリングも、後処理フィルタリングの一部として適用することができる。
【0076】
実装及び所望の伸張のタイプに応じて、デコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダは、説明した技術のうちの1以上を実行する。デコーダの特定の実施形態は、通常、デコーダ(600)の変形又は補完バージョンを使用する。デコーダ(600)内のモジュール間の示された関係は、デコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0077】
VII.拡張範囲クロマQP値の制御及び使用
このセクションは、クロマQP値を制御し使用するための様々なイノベーションを提供する。
【0078】
JCTVC−I1003におけるHEVC設計では、クロマのQPは、8のビット深度に対して[0,39]の範囲に制限される。一方、ルマのQPは、8のビット深度に対して[0,51]の範囲を変わり得る。より高いビット深度に対して、ルマ及びクロマ両方の範囲は、適切に増大される。この設計によれば、クロマのために使用されるQP値は、ルマのために使用されるQP値と比較して、かなり小さな値に飽和する。すなわち、クロマのために使用される最高のQP値(及び最高のQSS)は、ルマのために使用される最高のQP値(及び最高のQSS)よりもかなり小さい。ルマ成分と比較してクロマ成分の符号化に対して過度の(不十分な、不当な)量のビットが割り当てられたとき、この制限が、低ビット・レート・アプリケーションにおけるレート制御の問題を引き起こし得る。また、この設計は、多様な色フォーマットにはあまり適していない。
【0079】
具体的には、JCTVC−I1003におけるHEVC設計に従うと、クロマ成分Cb及びCrのために使用されるQP(すなわち、QP
Cb及びQP
Cr)は、ルマ成分のために使用されるQP(QP
Y)から、以下のように導出される。QP
Cb及びQP
Crの値は、中間QPインデックスqP
Iのためのルックアップに基づいて表1で規定されるQP
Cの値と等しい。表1は、qP
Iの関数としてのQP
Cを規定している。
【表1】
【0080】
中間QPインデックスqP
Iは、(Cbクロマ成分に関する)qP
ICb、又は(Crクロマ成分に関する)qP
ICrであり得る。これらは以下のように導出される。
【数1】
ここで、Clip3は、次のように定義される関数である。Clip3(x,y,z)は、z<xの場合xであり、z>yの場合yであり、他の場合zである。値cb_qp_offset及び値cr_qp_offsetは、ピクチャ・パラメータ・セット(「PPS」)において伝達され得るピクチャ・レベル・クロマQPオフセット値である。QP
YはルマのQP値である。QpBdOffset
Cは、クロマ・ビット深度に依存するクロマQP範囲オフセットである(ビット深度が高いほど増大する)。QpBdOffset
Cの値の例は、0、6、12、18、24、及び36である。ここで、QpBdOffset
C=6*bit_depth_chroma_minus8であり、bit_depth_chroma_minus8は、1サンプル当たり8〜14ビットのビット深度に対して、0〜6の範囲(0と6を含む)である。
【0081】
JCTVC−I1003におけるHEVC設計では、ビット深度に基づいて、ルマ及びクロマのQPに対してさらなる調整がなされ得る。このタイプの調整は、以下で説明するイノベーションの一態様である。すなわち、ビット深度に対するそのような調整は、以下で説明するイノベーションのためになされ得る。明瞭さの目的のため、JCTVC−I1003におけるHEVC設計でのこの調整を表す式は以下のとおりである。
QP’
Y=QP
Y+QpBdOffset
Y
QP’
Cb=QP
Cb+QpBdOffset
C
QP’
Cr=QP
Cr+QpBdOffset
C
【0082】
したがって、クロマQP値(例えば、QP’
Cb又はQP’
Cr)を導出する全体的プロセスは、(1)ルマQP値(QP
Y)及びピクチャ・レベル・クロマQPオフセット(例えば、cb_qp_offset又はcr_qp_offset)から中間QPインデックスqP
I(例えば、qP
ICb又はqP
ICr)を決定し、(2)テーブル・ルックアップ・オペレーションを介して、値QP
C(例えば、QP
Cb又はQP
Cr)を決定し、(3)QpBdOffset
CだけQP
Cの値を調整することである。
【0083】
A.クロマのQPを表現する新たな手法
本明細書で説明する様々なイノベーションが、ルマのQP範囲に対応するようにクロマのQP範囲を拡張する。本明細書で説明するいくつかのイノベーションは、JCTVC−I1003におけるHEVC設計と比較して、QP
YからQP
Cb及びQP
Crを導出するプロセスを修正する。
【0084】
このセクションで説明する新たな手法では、クロマQP値(例えば、QP’
Cb又はQP’
Cr)を導出する全体的プロセスは次のとおりである。まず、中間QPインデックスqP
I(例えば、qP
ICb又はqP
ICr)が、ルマQP値(QP
Y)及びクロマQPオフセットから決定される。クロマQPオフセットは、ピクチャ・レベル・クロマQPオフセットを含む。いくつかの新たな手法において、クロマQPオフセットはまた、スライス・レベル・クロマQPオフセットを含み得る。次いで、値QP
C(例えば、QP
Cb又はQP
Cr)が、テーブル・ルックアップ・オペレーション又は他のマッピング・オペレーションを介して決定される。次いで、QP
Cの値が、QpBdOffset
Cだけ調整される。
QP’
Cb=QP
Cb+QpBdOffset
C又は
QP’
Cr=QP
Cr+QpBdOffset
C
QpBdOffset
Cが0である場合、最後の段階は省略され得る。再度、QpBdOffset
Cの値の例は、0、6、12、18、24、及び36である。
【0085】
1.新たな手法1
新たな手法1では、QP
Cb及びQP
Crの値は、インデックスqP
Iの値に依存する、表2で規定されるQP
Cの値に等しい。
【表2】
【0086】
表1と比較すると、表2は、インデックスqP
Iに関して、51から71に拡張されている。また、表1と比較すると、クロマQP値QP
Cは、43を超えるインデックスqP
Iの値に関して、異なっている。インデックスqP
I(qP
ICb又はqP
ICr)は以下のように導出される。これらの式において、上限は、51ではなく、71である。
【数2】
【0087】
QP
CとqP
Iとの間の関係は、インデックスqP
Iの全ての値に関して、テーブルとして規定することができる。代替的に、5エントリのみ含むテーブルが必要とされ、残りの部分は、以下のように表されるロジックを用いて実装され得る。ここで、「>>1」は、2つの補数算術において表される整数の算術右シフトを表す。
【数3】
【0088】
2.新たな手法2
新たな手法2では、QP
Cb及びQP
Crの値は、インデックスqP
Iの値に依存する、表3で規定されるQP
Cの値に等しい。
【表3】
【0089】
表1と比較すると、クロマQP値QP
Cは、43を超えるインデックスqP
Iの値に関して、異なっている。インデックスqP
I(qP
ICb又はqP
ICr)は以下のように導出される。これらの式において、上限は、51ではなく、57であり、これは、qP
I=57まで表3を効果的に拡張する。
【数4】
【0090】
QP
CとqP
Iとの間の関係は、インデックスqP
Iの全ての値に関して、テーブルとして規定することができる。代替的に、5エントリのみ含むテーブルが必要とされ、残りの部分は、以下のように表されるロジックを用いて実装され得る。
【数5】
【0091】
3.新たな手法3
新たな手法3では、QP
Cb及びQP
Crの値は、インデックスqP
Iの値に依存する、表4で規定されるQP
Cの値に等しい。
【表4】
【0092】
表1と比較すると、表4は、インデックスqP
Iに関して、51から71に拡張されている。また、表1と比較すると、クロマQP値QP
Cは、インデックスqP
Iが34のときと、43を超えるインデックスqP
Iの値とに関して、異なっている。インデックスqP
I(qP
ICb又はqP
ICr)は以下のように導出される。これらの式において、上限は、51ではなく、71である。
【数6】
【0093】
QP
CとqP
Iとの間の関係は、インデックスqP
Iの全ての値に関して、テーブルとして規定することができる。代替的に、関係は、区分的線形関数として規定されてもよく、以下のように表されるロジックを用いて実装され得る。
【数7】
【0094】
4.新たな手法4
新たな手法4では、QP
Cb及びQP
Crの値は、インデックスqP
Iの値に依存する、表5で規定されるQP
Cの値に等しい。
【表5】
【0095】
表1と比較すると、クロマQP値QP
Cは、インデックスqP
Iが34のときと、43を超えるインデックスqP
Iの値とに関して、異なっている。インデックスqP
I(qP
ICb又はqP
ICr)は以下のように導出される。これらの式において、上限は、51ではなく、57であり、これは、qP
I=57まで表5を効果的に拡張する。
【数8】
【0096】
QP
CとqP
Iとの間の関係は、インデックスqP
Iの全ての値に関して、テーブルとして規定することができる。代替的に、関係は、区分的線形関数として規定されてもよく、以下のように表されるロジックを用いて実装され得る。
【数9】
【0097】
5.新たな手法5
新たな手法5は、新たな手法3を、スライス・レベル・クロマQPオフセットの使用と組み合わせる。スライス・レベル・クロマQPオフセットの使用は、シーケンス・パラメータ・セット(「SPS」)、PPS、又は他のより高いレベルのシンタックス構造において伝達されるフラグを用いて、有効/無効にされ得る。新たな手法5は、インデックスqP
Iの値が以下のように導出される点を除いて、新たな手法3と同一である。
【数10】
変数slice_qp_delta_cb及び変数slice_qp_delta_crは、それぞれ、スライス・ヘッダにおいて伝達され得るCb成分及びCr成分のスライス・レベル・クロマQPオフセット値である。
【0098】
6.新たな手法6
同様に、新たな手法6は、新たな手法4を、スライス・レベル・クロマQPオフセットの使用と組み合わせる。スライス・レベル・クロマQPオフセットの使用は、SPS、PPS、又は他のより高いレベルのシンタックス構造において伝達されるフラグを用いて、有効/無効にされ得る。新たな手法6は、インデックスqP
Iの値が以下のように導出される点を除いて、新たな手法4と同一である。
【数11】
【0099】
7.新たな手法の利点
このセクションにおける新たな手法のそれぞれについて、qP
Iの関数としてのQP
Cを決定するためのテーブルが、(QPとQSSとの間の関係の例に従って、クロマに関するQSSのより高い値を示す)クロマQPのより高い値に到達するのを可能にするよう、効果的に拡張されている。具体的には、クロマに関するQPの最大可能値が、(JCTVC−I1003における)39ではなく、51であるように、テーブルが効果的に拡張されている。高QPシナリオにおいて、これにより、クロマ成分のより積極的な(すなわち、粗い)量子化が可能となり、これが、クロマ成分のビット・レートを低減させる。節約されたビットは、その代わりに、全体的品質を向上させるために、ルマ成分のために使用され得る。また、新たな手法のそれぞれについて、テーブルは、上述した単純な式/ロジックを用いて実装することができる。
【0100】
新たな手法2、4、及び6は、以下のさらなる利点を有する。
【0101】
第1に、ルマのQP値及び対応するクロマのQP値により表される量子化ステップ・サイズ間の差が、特に拡張テーブルの高い端におけるQP値に関して、極端になり過ぎるのが防止される。通常、量子化ステップ・サイズ(「QSS」)は、定められた式に従ってQP値に依存する(例えば、おおまかに対数関係で;いくつかの実施例においては、QSSが指数関係においてQPと正比例するように、おおよそQSS=2
(QP/6)である)。クロマQPオフセットのデフォルト値が使用される場合(すなわち、オフセットが0に設定される場合)、クロマのQSSに対する(ルマのQPから導出される)QPインデックスにより表されるQSSの比率は、JCTVC−I1003におけるHEVC設計では、4であり得る(例えば、51のルマQP及び39のクロマQPに対しておおまかに2
8.5対2
6.5である)。一方、新たな手法2、4、及び6では、比率は最大で2である(例えば、51のルマQP及び45のクロマQPに対しておおまかに2
8.5対2
7.5である)。量子化が粗くなるよう意図される場合、QSSの比率を制限することは、クロマ成分の過度のビット使用を防止するのに役立ち得る。
【0102】
第2に、クロマのQPの変化に対するルマのQPの変化の比率に関して、高QP(高QSS)オペレーションにおいて、1の傾きが可能になる。高QP条件では(qP
I>43の場合)、ルマQPの+1の変化は、クロマQPの+1の変化をもたらすか、又はルマQPの−1の変化は、クロマQPの−1の変化をもたらす。これは、QP値を変えるとき(例えば、レート制御中に全体的品質及びビット・レートを調整するとき)、符号化コントローラがルマとクロマとの間のバランスを保つのを助ける。QP値のこの範囲では、ルマ量子化ステップ・サイズとクロマ量子化ステップ・サイズとの間の比率は、一定を保ったままであり、これは、ルマとクロマとの間のバランスを取るために、突然の変化なくビット・レートのきめの細かい制御を容易にする。
【0103】
第3に、(高QPオペレーションにおいて、QP
CがqP
I−6である)いくつかの実施例において、6の固定クロマQPオフセットを使用して、高QP(高QSS)オペレーションにおいて、ルマ及びクロマの等しいQSSを実現することができる。場合によっては、エンコーダは、(QP
Y=QP
Cのときに可能となる)同じQSSを用いて、全てのプレーンを符号化することを望むことがある。JCTVC−I1003における設計では、これは、クロマQPオフセットが、QPに応じて調整される必要があり得ることを意味する。というのは、QP
YとQP
Cとの間の関係は、かなりの差を有するからである(表1参照)。一方、新たな手法2、4、及び6においては、43を超えるqP
Iの値に関して、QP
C=qP
I−6である。したがって、qP
IとQP
Cとの間の差は、この範囲では、6に保たれ、6の固定クロマQPオフセットは、目的(QP
Y=QP
C)を達成することができる。
【0104】
第4に、(ルマのQSSとクロマのQSSとの間の)所望の相対的関係を実現するために必要とされるクロマQPオフセットは、JCTVC−I1003においてよりもかなり小さい。例えば、JCTVC−I1003では、エンコーダが、ルマ及びクロマの両方に関して39のQPを使用することを望む場合、必要なクロマQPオフセットは12である。表1が、端部で見られる同一の傾きで単純に拡張された場合、オフセットのこの値は、かなり大きくなる。しかしながら、新たな手法2、4、及び6では、同一の相対的関係が、6というかなり小さなオフセットを用いて実現され得る。
【0105】
第5に、クロマQP値の拡張範囲は、(細かい量子化及び中間範囲の量子化の)低QP値及び中間範囲QP値を有する通常の使用条件のレート−歪み性能にそれほど重大な影響を与えない。というのは、新たな手法における修正は、大体は、通常の使用条件において使用されるQP値の範囲外で適用されるからである。しかしながら、同時に、高QP(高QSS)状況では、レート−歪み性能及びクロマQPの拡張範囲を用いるエンコーダ・フレキシビリティの点で利点がある。通常の高QP状況では、(拡張範囲クロマQPを用いた粗い量子化、ビットの節約等に基づく)クロマ品質の劣化は、ルマ品質の増大によるオフセットよりも大きい。
【0106】
ルマのQPの関数としてクロマのQPを表現する新たな手法のいずれもが、ルマ成分及び/又はクロマ成分の係数のための周波数固有のスケーリング・ファクタを設定するための量子化スケーリング・マトリックスとともに使用され得る。
【0107】
B.クロマQPオフセットの値に対する制約
クロマQPオフセットの値に対する制約は、ルマとクロマとの間の大きな品質の差を制限するために、新たな手法1〜6の実施例等の例示的な実施例において有用である。具体的には、例示的な実施例において、クロマQPオフセットに関して、−12〜12の範囲が効果的である。(H.264/AVC規格では、クロマQPオフセットは、同様に−12〜12(−12と12を含む)の範囲に制限される。)この範囲は、有用な特性を有する。例えば、新たな手法4の高QPにおいて、6のクロマQPオフセットは、ルマQPがクロマQPに等しい場合を表すので、12のオフセットは、0のオフセットに対するカウンタ・ポイントを表す。これらのクロマQPオフセットの両方(すなわち、0及び12のオフセット)において、QPとQSSとの間の例示的な関係に関して、より大きなQSSは、より小さなQSSの正確に2倍である(例えば、57のクロマQPに対する2
9.5のQSSは、51のクロマQPに対する2
8.5のQSSの2倍であり、これは、45のクロマQPに対する2
7.5のQSSの2倍である)。
【0108】
新たな手法1〜4の場合、クロマQPオフセットの値に対する制約は、cb_qp_offset及びcr_qp_offsetに対して課せられ得る。新たな手法5及び6では、クロマQPオフセットの値に対する制約は、値(cb_qp_offset+slice_qp_delta_cb)及び値(cr_qp_offset+slice_qp_delta_cr)に対して課せられ得る。代替的に、新たな手法5及び6では、クロマQPオフセットの値に対する制約は、cb_qp_offset、slice_qp_delta_cb、cr_qp_offset、及びslice_qp_delta_crの個々の値に対して課せられてもよい。
【0109】
C.スライス・レベル・クロマQPオフセットの値のシンタックス及びセマンティクス
新たな手法5及び6では、ビットストリーム・シンタックス及びセマンティクスは、スライス・レベル・クロマQPオフセットの伝達をサポートする。スライス・レベル・クロマQPオフセットは、エンコーダに、ピクチャ内の様々な領域のクロマQPを正確に制御するより優れた能力を提供する。例示的な実施例に関して、
図7aは、PPS RBSPシンタックスにおける新たなフラグslicelevel_chroma_qp_flagを示し、
図7bは、スライス・ヘッダ・シンタックスにおける新たな値slice_qp_delta_cb及びslice_qp_delta_crを示している。エントロピ符号化された値slice_qp_delta_cb及びslice_qp_delta_crは、適用PPS内のslicelevel_chroma_qp_flagの値に応じて、スライス・ヘッダ内に条件付きで存在する。したがって、スライス・レベル・クロマQPオフセットが使用されない場合、スライス・レベル・シンタックス・オーバヘッドは回避される。
図7aに示されるPPSシンタックス・フラグメント(701)において、値cb_qp_offset及び値cr_qp_offsetは、それぞれ、上記で規定されたQP
Cb及びQP
Crを得る際に使用される基準オフセットを規定する。1に等しい値slicelevel_chroma_qp_flagは、シンタックス要素slice_qp_delta_cb及びslice_qp_delta_crが、関連するスライス・ヘッダ内に存在することを規定する。そうでない場合、シンタックス要素slice_qp_delta_cb及びslice_qp_delta_crは、関連するスライス・ヘッダ内に存在しない。
【0110】
(
図7bのシンタックス・フラグメント(702)に示される)スライス・ヘッダにおいて、slice_qp_deltaは、coding unitレイヤにおけるcu_qp_deltaの値により変更されるまでスライス内の全ての符号化ブロックのために使用されるQP
Yの初期値を規定する。スライスの初期QP
Y量子化パラメータは以下のように計算される。
【数12】
ここで、slice_qp_deltaの値は、SliceQP
Yが、−QpBdOffset
Y〜+51(−QpBdOffset
Yと+51を含む)の範囲となるように制限される。
【0111】
値slice_qp_delta_cb及び値slice_qp_delta_crは、それぞれ、新たな手法5及び6で規定されたQP
Cb及びQP
Crを得る際に使用される差分オフセットを規定する。存在しない場合、これらのシンタックス要素の値は0であると推定される。
【0112】
D.クロマのための修正されたデブロック・フィルタリングの手法の第1のセット
JCTVC−I1003におけるHEVC設計では、クロマ成分のブロック・エッジをデブロックする間に使用されるフィルタ「強度」(t
Cパラメータ)が、値QP
Cを用いて決定される。変数QP
Cは、以下のように導出されるインデックスqP
Iを用いて、表1で規定されるように決定される。
qP
I=((QP
Q+QP
P+1)>>1)
ここで、QP
Q及びQP
Pは、エッジの一方のサイドに存在するブロックのルマQP値を表す。一般的な着想は、エッジ周辺のサンプルを量子化するために使用されるQP値に基づいて、フィルタ強度を調整することである。クロマ・デブロック・フィルタリングのためのqP
Iを決定するこの手法は、クロマQPオフセット(cb_qp_offset及びcr_qp_offset)が0に等しくない場合、不十分である。クロマQPオフセットの0でない様々な値に関して、クロマ成分のために使用されるQPは異なるであろうが、フィルタ強度は同一のままである。
【0113】
いくつかの例示的な実施例において、クロマ・デブロック・フィルタリングのためのqP
Iを決定する際に、クロマQPオフセットの効果が考慮に入れられる。これらの実施例において、インデックスqP
Iは以下のように導出される。
【数13】
ここで、cqp_offsetは、成分Cb及び成分Crのcb_qp_offset及びcr_qp_offsetをそれぞれ表す。これらの例示的な実施例において、ルマのQPの関数としてクロマのQPを表現する場合、クロマ・デブロック・フィルタリングのためのインデックスqP
Iの導出は、クロマQPオフセットの効果を考慮に入れるが、その他は、JCTVC−I1003においてqP
Iが導出される方法に基づく。
【0114】
他の例示的な実施例において、ルマのQPの関数としてクロマのQPを表現する方法のために、上述した新たな手法のうちの1つが採用される場合、デブロック・フィルタリングのためのインデックスqP
Iは、以下のように導出され得る。
【数14】
ここで、QP
max及びcqp_offsetは、使用される新たな手法によって決まる。新たな手法1、3、及び5では、例えば、QP
maxは、71に等しい。新たな手法2、4、及び6では、例えば、QP
maxは、57に等しい。新たな手法1〜4では、cqp_offsetは、成分Cb及び成分Crのcb_qp_offset及びcr_qp_offsetをそれぞれ表す。新たな手法5及び6では、cqp_offsetは、成分Cb及び成分Crの(cb_qp_offset+slice_qp_delta_cb)及び(cr_qp_offset+slice_qp_delta_cr)をそれぞれ表す。より一般的に、デブロック・フィルタリングのためのインデックスqP
Iの値が導出される場合、(QP
Q+QP
P+1)>>1がQP
Yに取って代わり、クロマQPオフセットが考慮に入れられる。
【0115】
変数qP
Iがデブロック・フィルタリングにおいて使用される方法は実装に依存する。例えば、変数qP
Iは、上記の表5で規定された変数QP
Cを決定するために使用される。別の変数Qは以下のように導出される。
【数15】
ここで、bSは、符号化モード(イントラ又はインタ)、ブロックにおける0でない変換係数の存在、動きベクトル値、及び/又は他のファクタに応じて設定される境界フィルタリング強度であり、slice_tc_offset_div2は、フィルタリングされるエッジのサイド上の最初のサンプルを含むスライスに関するシンタックス要素slice_tc_offset_div2の値である。次いで、変数t
C’の値が、以下のテーブルに示されるQからt
C’へのマッピングに基づいて決定される。
【表6】
最後に、制御パラメータt
Cが以下のように導出される。
t
C=t
C’*(1<<(BitDepthC−8))
【0116】
E.クロマのための修正されたデブロック・フィルタリングの手法の第2のセット
JCTVC−K0030におけるHEVC設計では、クロマ成分のブロック・エッジをデブロックする間に使用されるフィルタ「強度」(t
Cパラメータ)が、値QP
Cを用いて決定される。変数QP
Cは、以下のように導出されるインデックスqP
Iを用いて、表1で規定されるように決定される。
qP
I=((QP
Q+QP
P+1)>>1)
ここで、QP
Q及びQP
Pは、エッジの一方のサイドに存在するブロックのルマQP値を表す。一般的な着想は、エッジ周辺のサンプルを量子化するために使用されるQP値に基づいて、フィルタ強度を調整することである。qP
Iを決定するこの手法は、クロマQPオフセット(すなわち、pic_cb_qp_offset+slice_cb_qp_offset及びpic_cr_qp_offset+slice_cr_qp_offset)が0に等しい場合、意味をなす。しかしながら、qP
Iを決定するこの手法は、クロマQPオフセットが0に等しくない場合、意味をなさない。クロマQPオフセットの0でない様々な値に関して、クロマ成分のために使用されるQPは異なるであろうが、フィルタ強度は同一のままである。したがって、JCTVC−K0030において記述されたデブロック・フィルタリング設計は、デブロッキング・フィルタ・プロセスの強度の成分固有のカスタマイズを提供しない。
【0117】
このセクションでは、クロマ成分のデブロック・フィルタリングを制御するためのパラメータt
Cを決定する際にクロマQPオフセットの効果を考慮に入れる手法を説明する。このような手法は、0でないQPオフセットが使用される場合、クロマのために使用される実際のQPを適切に反映するのに役立つ。いくつかの例示的な実施例において、クロマ・デブロック・フィルタリングのためのqP
Iを決定する際、クロマQPオフセットの効果が考慮に入れられる。
【0118】
これは、符号化ツリー・ユニット(「CTU」)単位でクロマQP値を記憶することを含み得る。多くの場合、この目的でクロマQP値を記憶する計算の複雑性に対する影響は比較的小さく、とにかく、実際のクロマQP値を考慮に入れる適応デブロック・フィルタリングの利点の方が、通常、複雑性に対する影響よりも重要である。
【0119】
しかしながら、計算の複雑性に対する影響が非常に大きいと考えられる場合、追加的な記憶コストとクロマQP値の変化に対する反応性との間の妥協を提供する他の手法が使用されてもよい。妥協的手法において、デブロック・フィルタリングは、スライス・レベル・クロマQPオフセット(又は、ピクチャ内の他のきめの細かいクロマQPオフセット)を考慮に入れることなく、ピクチャ・レベル・クロマQPオフセットを考慮に入れ得る。このような妥協的手法は、エンコーダ及びデコーダに利用可能でありビットストリームにおいて伝達される、クロマQPオフセットに関するいくつかの情報を無視するが、実際のクロマQP値のバッファリングの要件を除外する。このような妥協的手法は、それでも、デブロッキング・フィルタ・プロセスにおいてクロマQP値を完全に無視する現在のスキームよりは良い性能を提供する。
【0120】
1つの例示的な手法(非妥協的手法)では、ピクチャ・レベルのクロマQPオフセットの効果に加えて、スライス・レベルのクロマQPオフセットの効果が考慮に入れられる。修正された式は以下のとおりである。
【数16】
ここで、cqp_offsetは、Cbに関するpic_cb_qp_offset+slice_cb_qp_offsetを表し、cqp_offsetは、Crに関するpic_cr_qp_offset+slice_cr_qp_offsetを表す。
【0121】
別の例示的な手法(非妥協的手法)では、ピクチャ・レベル及びスライス・レベル両方のクロマQPオフセットの効果が考慮に入れられる。前の手法と異なり、クリッピング操作は、単純化のため回避される。修正された式は以下のとおりである。
qP
I=(((QP
Q+QP
P+1)>>1)+cqp_offset)
ここで、cqp_offsetは、Cbに関するpic_cb_qp_offset+slice_cb_qp_offsetを表し、cqp_offsetは、Crに関するpic_cr_qp_offset+slice_cr_qp_offsetを表す。
【0122】
別の例示的な手法(妥協的手法)では、ピクチャ・レベルで指定されたクロマQPオフセットの効果のみ考慮に入れられる。すなわち、スライス・レベル・クロマQPオフセットが使用され、ビットストリームにおいて伝達されたとしても(あるいは、ピクチャ内の他のきめの細かいクロマQPオフセットが使用され、ビットストリームにおいて伝達されたとしても)、そのようなスライス・レベルの/きめの細かいオフセットは、デブロック・フィルタリングの制御の一部として、考慮されない。この妥協的手法は、ピクチャ・レベル及びスライス・レベル両方のクロマQPオフセットを考慮に入れる場合よりも単純であり、より低いメモリ要件しか有し得ない。修正された式は以下のとおりである。
【数17】
ここで、cqp_offsetは、Cbに関するpic_cb_qp_offsetを表し、cqp_offsetは、Crに関するpic_cr_qp_offsetを表す。
【0123】
さらに別の例示的な手法(妥協的手法)では、ピクチャ・レベルで指定されたクロマQPオフセットの効果のみ考慮に入れられる。再度、これは、ピクチャ・レベル及びスライス・レベル(又は、ピクチャ内の他のきめの細かいクロマQPオフセット)両方のクロマQPオフセットを考慮に入れる場合よりも単純であり、より低いメモリ要件しか有し得ない。クリッピング操作は、さらなる単純化のため回避される。修正された式は以下のとおりである。
qP
I=(((QP
Q+QP
P+1)>>1)+cqp_offset)
ここで、cqp_offsetは、Cbに関するpic_cb_qp_offsetを表し、cqp_offsetは、Crに関するpic_cr_qp_offsetを表す。
【0124】
このセクションにおける第1の2つの手法(非妥協的手法)は、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットの両方を考慮に入れ得るが、第2の2つの手法(妥協的手法)は、ピクチャ・レベルで指定されるクロマQPオフセットのみ考慮に入れる(スライス・レベルで指定されるクロマQPオフセットは考慮に入れない)単純形である。2つの妥協的手法によれば、デブロッキング・フィルタのオペレーションに関して、クロマQP値又はクロマQPオフセットは、スライス単位又はCTU単位で記憶される必要がない。その代わりに、ピクチャ・レベル・オフセットのみ(1ピクチャにつき2つ)が記憶される。
【0125】
エンコーダは、レート制御のために、スライス・レベル・クロマQPオフセット(及び/又は他のきめの細かいクロマQPオフセット)をそれでも使用することができる。そのような状況においてさえ、デブロック・フィルタリングの強度を調整するために、ピクチャ・レベル・クロマQPオフセットのみを考慮に入れることが十分な場合がある。多くのシナリオにおいて、(クロマQPをルマQPに対応させるために、クロマQPオフセットが0でない必要がある場合、)クロマ・プレーンは、ルマ・プレーンと同じくらい、又はルマ・プレーンよりも重要であると考えられる。したがって、ピクチャ・レベル・クロマQPオフセットが、クロマ成分をいかにしてデブロック・フィルタリングするかを制御するために考慮に入れられる場合、ピクチャ・レベル・クロマQPオフセットは、一般に、(スライス・レベル・クロマQPオフセットよりも)大きな影響を及ぼす。いくつかのエンコーダは、レート制御のために、スライス・レベル・クロマQPオフセットを使用せず、ピクチャ・レベル・クロマQPオフセットのみを使用することができる。したがって、利用可能なスライス・レベル・クロマQPオフセット(又は、他の利用可能なきめの細かいクロマQPオフセット)が、デブロック・フィルタリングを制御する際に考慮に入れられなかったとしても、ピクチャ・レベル・クロマQPオフセットを考慮に入れることには利点がある。
【0126】
変数qP
Iがデブロック・フィルタリングにおいて使用される方法は実装に依存する。例えば、変数qP
Iは以下のように導出される。
qP
I=((QP
Q+QP
P+1)>>1)+cQpPicOffset
ここで、変数cQpPicOffsetは、ピクチャのCb成分又はCr成分に関するピクチャ・レベルQPオフセットの値の調整を提供するが、Cb成分又はCr成分に関するスライス・レベルQPオフセットの値の調整を含めないことにより、ピクチャ内の調整の量を変える必要性を回避する。次いで、変数qP
Iは、上記の表5で規定された変数QP
Cを決定するために使用される。次いで、別の変数Qは、QP
Cから以下のように導出される。
【数18】
ここで、bSは、符号化モード(イントラ又はインタ)、ブロックにおける0でない変換係数の存在、動きベクトル値、及び/又は他のファクタに応じて設定される境界フィルタリング強度であり、slice_tc_offset_div2は、フィルタリングされるエッジのサイド上の最初のサンプルを含むスライスに関するシンタックス要素slice_tc_offset_div2の値である。次いで、変数t
C’の値が、表6に示されるQからt
C’へのマッピングに基づいて決定される。最後に、制御パラメータt
Cが以下のように導出される。
t
C=t
C’*(1<<(BitDepthC−8))
【0127】
図8は、符号化中にデブロック・フィルタリングを制御するためにクロマQPオフセットを使用するための一般化された技術(800)を示している。
図5を参照して上述したビデオ・エンコーダ等のビデオ・エンコーダ、又は他のイメージ・エンコーダ若しくはビデオ・エンコーダが、技術(800)を実行する。
【0128】
エンコーダは、QPの値がルマ成分とクロマ成分との間の関係に従って変化するイメージ・コンテンツ又はビデオ・コンテンツを符号化する。符号化の一部として、エンコーダは、ピクチャのスライスを符号化するために、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットを設定する(810)。エンコーダは、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットにより示されるクロマQPにより調整されるように、スライスの1以上の部分の変換係数を量子化する。エンコーダは、レート制御のために、符号化中、ピクチャ・レベル・クロマQPオフセット及び/又はスライス・レベル・クロマQPオフセットを調整することができ、エンコーダは、ピクチャの異なるスライスに対して、異なるスライス・レベル・クロマQPオフセットを設定することができる。エンコーダは、デブロック・フィルタリングにおいて使用するために、ピクチャ・レベル・クロマQPオフセットを記憶するが、エンコーダは、デブロック・フィルタリングにおいて使用するために、スライス・レベル・クロマQPオフセットを記憶する必要はない。
【0129】
エンコーダはまた、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットを用いて符号化されたスライスの少なくとも一部分のデブロック・フィルタリングを実行する(820)。デブロック・フィルタリングでは、エンコーダは、ピクチャ・レベル・クロマQPオフセットを考慮に入れるがスライス・レベル・クロマQPオフセットは考慮に入れない制御パラメータを導出する。例えば、制御パラメータは、以下のように導出される変数qP
Iに依存する。
qP
I=(((QP
Q+QP
P+1)>>1)+cqp_offset)
ここで、変数QP
Q及び変数QP
Pは、デブロック・フィルタリングが実行されるスライスの一部分におけるエッジの一方のサイドのブロックのルマQP値を表し、変数cqp_offsetは、(スライス・レベル・クロマQPオフセットではなく、)ピクチャ・レベル・クロマQPオフセットを表す。変数qP
I及び制御パラメータの値が、ピクチャの2つの異なるクロマ成分(例えば、Cb及びCr)に関して、別々に計算されるように、ピクチャ・レベル・クロマQPオフセットは、2つの異なるクロマ成分に関して、別々に伝達され得る。
【0130】
エンコーダは、符号化コンテンツを含むビットストリームの少なくとも一部分を出力する(830)。ビットストリームは、ピクチャに関するピクチャ・レベル・クロマQPオフセットを示す1以上のシンタックス要素と、スライスに関するスライス・レベル・クロマQPオフセットを示す1以上のシンタックス要素とを含み得る。ピクチャ・レベル・クロマQPオフセットは、ピクチャの異なるクロマ成分それぞれに関して、ビットストリームにおいて別々に伝達されてもよいし、ピクチャの異なるクロマ成分が、ビットストリームにおいて伝達される同一のピクチャ・レベル・クロマQPオフセットを使用してもよい。スライス・レベル・クロマQPオフセットは、スライスの異なるクロマ成分それぞれに関して、ビットストリームにおいて別々に伝達されてもよいし、スライスの異なるクロマ成分が、ビットストリームにおいて伝達される同一のスライス・レベル・クロマQPオフセットを使用してもよい。
【0131】
図9は、復号化中にデブロック・フィルタリングを制御するためにクロマQPオフセットを使用するための一般化された技術(900)を示している。
図6を参照して上述したビデオ・デコーダ等のビデオ・デコーダ、又は他のイメージ・デコーダ若しくはビデオ・デコーダが、技術(900)を実行する。
【0132】
デコーダは、符号化されたイメージ・コンテンツ又はビデオ・コンテンツを含むビットストリームの少なくとも一部分を受信する(910)。イメージ・コンテンツ又はビデオ・コンテンツでは、QPの値が、ルマ成分とクロマ成分との間の関係に従って変化する。例えば、ビットストリームは、ピクチャに関するピクチャ・レベル・クロマQPオフセットを示す1以上のシンタックス要素と、ピクチャ内のスライスに関するスライス・レベル・クロマQPオフセットを示す1以上のシンタックス要素とを含む。ピクチャ・レベル・クロマQPオフセットは、ピクチャの異なるクロマ成分それぞれに関して、ビットストリームにおいて別々に伝達されてもよいし、ピクチャの異なるクロマ成分が、ビットストリームにおいて伝達される同一のピクチャ・レベル・クロマQPオフセットを使用してもよい。スライス・レベル・クロマQPオフセットは、スライスの異なるクロマ成分それぞれに関して、ビットストリームにおいて別々に伝達されてもよいし、スライスの異なるクロマ成分が、ビットストリームにおいて伝達される同一のスライス・レベル・クロマQPオフセットを使用してもよい。
【0133】
デコーダは符号化コンテンツを復号化する。復号化の一部として、デコーダは、ピクチャのスライスを復号化するために、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットを設定する(920)。デコーダは、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットにより示されるクロマQPにより調整されるように、スライスの1以上の部分の変換係数を逆量子化する。デコーダは、ピクチャの異なるスライスに対して、異なるスライス・レベル・クロマQPオフセットを設定することができる。デコーダは、デブロック・フィルタリングにおいて使用するために、ピクチャ・レベル・クロマQPオフセットを記憶するが、デコーダは、デブロック・フィルタリングにおいて使用するために、スライス・レベル・クロマQPオフセットを記憶する必要はない。
【0134】
デコーダはまた、ピクチャ・レベル・クロマQPオフセット及びスライス・レベル・クロマQPオフセットを用いて符号化されたスライスの少なくとも一部分のデブロック・フィルタリングを実行する(930)。デブロック・フィルタリングでは、デコーダは、ピクチャ・レベル・クロマQPオフセットを考慮に入れるがスライス・レベル・クロマQPオフセットは考慮に入れない制御パラメータを導出する。例えば、制御パラメータは、以下のように導出される変数qP
Iに依存する。
qP
I=(((QP
Q+QP
P+1)>>1)+cqp_offset)
ここで、変数QP
Q及び変数QP
Pは、デブロック・フィルタリングが実行されるスライスの一部分におけるエッジの一方のサイドのブロックのルマQP値を表し、変数cqp_offsetは、(スライス・レベル・クロマQPオフセットではなく、)ピクチャ・レベル・クロマQPオフセットを表す。変数qP
I及び制御パラメータの様々な値が、ピクチャの2つの異なるクロマ成分(例えば、Cb及びCr)に関して、別々に計算されるように、ピクチャ・レベル・クロマQPオフセットは、2つの異なるクロマ成分に関して、別々に伝達され得る。
【0135】
F.代替例
例示の目的上、詳細な説明は、いくつかのパラメータ及び変数に関する特定の名前を伴う様々な例を含む。本明細書で説明したイノベーションは、そのような名前を有するパラメータ又は変数を伴う実施例に限定されない。代わりに、本明細書で説明したイノベーションは、様々なタイプのパラメータ及び変数を用いて実装されてもよい。
【0136】
例えば、本明細書で説明した例のいくつかは、パラメータslicelevel_chroma_qp_flag、cb_qp_offset、cr_qp_offset、slice_qp_delta_cb、及びslice_qp_delta_crを含む。JCTVC−K1003におけるHEVC規格のバージョンでは、slicelevel_chroma_qp_flagは、pic_slice_chroma_qp_offsets_present_flagとして再ラベル化されているが、実質的に同じ意味を有する。ピクチャ・レベル・クロマQPオフセットは、cb_qp_offset及びcr_qp_offsetではなく、pic_cb_qp_offset及びpic_cr_qp_offsetと呼ばれる。スライス・レベル・クロマQPオフセットは、slice_qp_delta_cb及びslice_qp_delta_crではなく、slice_cb_qp_offset及びslice_cr_qp_offsetと呼ばれる。本明細書で説明した例はまた、再ラベル化されたパラメータにも適用される。
【0137】
本明細書で説明したいくつかの例において、QP値は、ビットストリームにおいて、QP−26として伝達され、QSSは、S*2
(QP/6)であるか、又はおおよそS*2
(QP/6)である。ここで、Sは、固定値定数等のスケーリング・ファクタ、変換固有のスケーリング・ファクタ、又は周波数固有のスケーリング・ファクタである。この関係において、QPの高い値は、高い(すなわち、粗い)QSSを表し、QPの低い値は、低い(すなわち、細かい)QSSを表す。代替的に、QPは、QSSと逆相関であってもよい。例えば、QP値は、ビットストリームにおいて、25−QPとして伝達され、QSSは、S*2
((51−QP)/6)であるか、又はおおよそS*2
((51−QP)/6)である。この例において、同じQSS値が実際上伝達され得るが、QPの高い値は低いQSSを表し、QPの低い値は高いQSSを表す。より一般的に、本明細書で説明したイノベーションは、QPとQSSとの間の様々な関係に適用することができる。QPとQSSとの間の関係は、上述した関係に加えて、QPが、H.263規格においてQUANTと呼ばれるパラメータ等のパラメータである関係や、QPが、H.262規格においてquantiser_scaleと呼ばれるパラメータ等のパラメータである関係も含む。
【0138】
開示した本発明の原理を適用することができる多くの可能な実施形態の観点から、例示した実施形態は、本発明の好ましい例に過ぎないことを認識すべきであり、本発明の範囲を限定するものとして解釈すべきではない。むしろ、本発明の範囲は、請求項により定められる。したがって、私は、このような請求項の範囲及び精神に含まれる全てを、私の発明として特許請求する。