【文献】
J. Chen et al.,Description of screen content coding technology proposal by Qualcomm,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 17th Meeting: Valencia,2014年 3月,JCTVC-Q0031,pp.1-18
【文献】
Bin Li et al.,Fix for adaptive color space coding in JCTVC-Q0035,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 17th Meeting: Valencia,2014年 3月,JCTVC-Q0213,pp.1-3
【文献】
鈴木 一樹 他2名,RGBカラー画像符号化の画質制御と主観評価,電子情報通信学会技術研究報告(IMQ2011−15−IMQ2011−21),社団法人電子情報通信学会,2011年11月,Vol.111,No.318,pp.7-10
(58)【調査した分野】(Int.Cl.,DB名)
前記1以上のシンタックス要素は、ピクチャレベルでシグナリングされ、前記1以上のシンタックス要素は、(a)前記第2の色空間の第1の色成分の初期量子化パラメータ値、又は、(b)前記第1の色空間の初期量子化パラメータ値に対する、前記第2の色空間の前記第1の色成分についてのオフセット、を示すシンタックス要素を含む、請求項6記載の方法。
前記1以上のシンタックス要素は、スライスレベルでシグナリングされ、前記1以上のシンタックス要素は、(a)ピクチャの初期量子化パラメータ値、又は、(b)前記第1の色空間の量子化パラメータ値、に対する、前記第2の色空間の第1の色成分についてのオフセットを示すシンタックス要素を含む、請求項6記載の方法。
前記1以上のシンタックス要素は、前記第1の色空間の第2の色成分及び第3の色成分の量子化パラメータ値に対する、前記第2の色空間の第2の色成分及び第3の色成分についてのオフセットを示すシンタックス要素をさらに含む、請求項7又は8記載の方法。
前記1以上のシンタックス要素は、前記第2の色空間の前記第1の色成分の量子化パラメータ値に対する、前記第2の色空間の第2の色成分及び第3の色成分についてのオフセットを示すシンタックス要素をさらに含む、請求項7又は8記載の方法。
前記1以上のシンタックス要素は、符号化ユニット又はブロックのシンタックスレベルでシグナリングされ、前記1以上のシンタックス要素は、前記第2の色空間の色成分についてのオフセットを示すシンタックス要素を含む、請求項6記載の方法。
前記成分ごとの色空間調整係数は、前記第2の色空間の色成分についての前記成分ごとの色空間調整係数を示すシンタックス要素をシグナリングすることなく、前記第2の色空間に応じてルールにより導出される、請求項1又は2記載の方法。
【発明を実施するための形態】
【0017】
詳細な説明は、適応符号化及び適応復号の領域におけるイノベーションを提示している。例えば、本イノベーションのうちのいくつかは、エンコーダが、符号化中にビデオシーケンス内のユニットの間で色空間を切り替えるときの量子化又はスケーリングの調整に関する。他のイノベーションは、デコーダが、復号中にビデオシーケンス内のユニットの間で色空間を切り替えるときの逆量子化又は逆スケーリングの調整に関する。これらのイノベーションは、符号化中及び復号中に色空間を切り替えるときの符号化効率を向上させることができる。
【0018】
本明細書に記載のオペレーションは、ビデオエンコーダ又はビデオデコーダにより実行されるものとして所々で説明されるが、多くの場合、このようなオペレーションは、別のタイプのメディア処理ツール(例えば、画像エンコーダ又は画像デコーダ)により実行することができる。例えば、このようなオペレーションは、静止画像符号化/復号、医療スキャンコンテンツ符号化/復号、マルチスペクトル画像コンテンツ符号化/復号等といった用途のために実行することができる。
【0019】
本明細書に記載のイノベーションのうちのいくつかは、H.265/HEVC規格に固有のシンタックス要素及びオペレーションを参照して示される。例えば、H.265/HEVC規格のドラフトバージョンJCTVC−P1005(”High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6”, JCTVC-P1005_v1, February 2014)及びJCTVC−P1003(”High Efficiency Video Coding (HEVC) Defect Report 3”, JCTVC-P1003_v1, February 2014)を参照する。本明細書に記載のイノベーションはまた、他の規格又はフォーマットのためにも実装することができる。
【0020】
より一般的に、本明細書に記載の例に対する様々な代替例が可能である。例えば、本明細書に記載の方法のうちのいくつかは、例えば、説明する方法動作の順番を変えることにより、所定の方法動作を分けることにより、所定の方法動作を繰り返すことにより、又は所定の方法動作を省略することにより、変更することができる。開示する技術の様々な態様が、組み合わせて又は別々に、使用され得る。様々な実施形態が、説明するイノベーションのうちの1以上を使用する。本明細書に記載のイノベーションのうちのいくつかは、背景技術において記した問題のうちの1以上に対処する。一般的に、所与の技術/ツールが、そのような問題の全てを解決するわけではない。
【0021】
I.例示的なコンピューティングシステム
図1は、説明するイノベーションのうちのいくつかを実装することができる適切なコンピューティングシステム(100)の一般化された例を示している。コンピューティングシステム(100)は、使用又は機能の範囲に関して限定を示唆するよう意図するものではない。なぜならば、本イノベーションは、多様な汎用コンピューティングシステム又は専用コンピューティングシステムにおいて実施することができるからである。
【0022】
図1を参照すると、コンピューティングシステム(100)は、1以上の処理装置(110、115)及びメモリ(120、125)を含む。処理装置(110、115)は、コンピュータ実行可能な命令を実行する。処理装置は、汎用中央処理装置(「CPU」)、特定用途向け集積回路(「ASIC」)におけるプロセッサ、又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、複数の処理装置が、処理能力を増大させるために、コンピュータ実行可能な命令を実行する。例えば、
図1は、中央処理装置(110)に加えて、グラフィックス処理装置又は共処理装置(115)も示している。有体のメモリ(120、125)は、1以上の処理装置によりアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)であってもよいし、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)であってもよいし、これら2つの何らかの組合せであってもよい。メモリ(120、125)は、1以上の処理装置による実行に適したコンピュータ実行可能な命令の形態で、色空間を切り替えるときに量子化/スケーリング又は逆量子化/スケーリングを調整するための1以上のイノベーションを実装するソフトウェア(180)を記憶する。
【0023】
コンピューティングシステムは、さらなる特徴を有することができる。例えば、コンピューティングシステム(100)は、ストレージ(140)、1以上の入力デバイス(150)、1以上の出力デバイス(160)、及び1以上の通信接続(170)を含む。バス、コントローラ、又はネットワーク等の相互接続機構(図示せず)が、コンピューティングシステム(100)のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア(図示せず)が、コンピューティングシステム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム(100)のコンポーネントの動作を調整する。
【0024】
有体のストレージ(140)は、着脱可能であっても着脱不可能であってもよく、磁気ディスク、磁気テープ、磁気カセット、CD−ROM、DVD、又は、情報を記憶するために使用することができ、コンピューティングシステム(100)内でアクセスされ得る任意の他の媒体を含む。ストレージ(140)は、色空間を切り替えるときに量子化/スケーリング又は逆量子化/スケーリングを調整するための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)は、H.265/HEVC規格の変形又は拡張、SMPTE 421M規格、ISO/IEC 14496−10規格(H.264又はAVCとしても知られている)、別の規格、又はプロプライエタリフォーマットに準拠する出力を生成することができ、対応するデコーダ(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)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、エンコーダシステム(300)は、ビデオソース(310)から、一連のソースビデオフレーム(311)を受信し、チャネル(390)への出力として符号化データを生成する。チャネルに出力される符号化データは、色空間、色サンプリングレート、及び/又は色深度の適応切り替えにより符号化されたコンテンツを含み得る。
【0038】
ビデオソース(310)は、カメラ、チューナカード、記憶媒体、スクリーンキャプチャモジュール、又は他のデジタルビデオソースとすることができる。ビデオソース(310)は、例えば、毎秒30フレームといったフレームレートで一連のビデオフレームを生成する。本明細書で使用されるとき、「フレーム」という用語は、一般に、ソースの符号化又は再構成された画像データを指す。プログレッシブスキャンビデオに関して、フレームは、プログレッシブスキャンビデオフレームである。インターレースビデオに関して、例示的な実施形態において、インターレースビデオフレームは、符号化の前にインターレース解除され得る(de-interlaced)。代替的に、2つの相補的インターレースビデオフィールドが、1つのビデオフレームとして一緒に符号化されてもよいし、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)は、選択されたフレーム(331)を符号化して、符号化フレーム(341)を生成するとともに、メモリ管理制御操作(「MMCO」)信号(342)又は参照ピクチャセット(「RPS」)情報を生成する。RPSは、現フレーム又は任意の後続フレームのための動き補償における参照のために使用され得るフレームのセットである。現フレームが、符号化された最初のフレームではない場合、符号化プロセスを実行するとき、エンコーダ(340)は、復号フレーム一時メモリ記憶領域(360)に記憶されている1以上の以前に符号化/復号されたフレーム(369)を使用することができる。そのような記憶されている復号フレーム(369)は、現ソースフレーム(331)のコンテンツのインターフレーム(フレーム間)予測のための参照フレームとして使用される。MMCO/RPS情報(342)は、どの再構成フレームが、参照フレームとして使用され得るかを、したがって、フレーム記憶領域に記憶されるべきかを、デコーダに示す。
【0041】
エンコーダ(340)は、特定の色空間(例えば、YUVタイプの色空間、RGBタイプの色空間)におけるビデオであって、特定の色サンプリングレート(例えば、4:4:4)であり1サンプル当たり特定のビット数(例えば、1サンプル当たり12ビット)のビデオを受け入れる。符号化中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、エンコーダ(340)は、色空間変換を実行して、YUVタイプの色空間とRGBタイプの色空間との間で、又は、何らかの他の色空間へ/から、変換することができる。エンコーダ(340)はまた、色空間変換を実行して、色成分を並べ替え、どの色成分がプライマリ成分であるかを変更することができる(例えば、RGBフォーマットとBGRフォーマットとGBRフォーマットとの間で変換することができる)。典型的な実装において、エンコーダ(340)は、様々な点(例えば、符号化モードについてのより多くのオプション、潜在的により低い量子化ステップサイズ)で、セカンダリ成分よりも慎重にプライマリ成分を符号化するよう適合されている。ほとんどの情報コンテンツ又はエネルギーを伴う色成分をプライマリ色成分にすることにより、エンコーダは、全体的な符号化効率を向上させることができる。符号化中、エンコーダ(340)はまた、再サンプリング処理を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色サンプリングレートを(例えば、4:4:4フォーマットと4:2:2フォーマットと4:2:0フォーマットとの間で)変更することができる。エンコーダ(340)はまた、符号化中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色深度を(例えば、1サンプル当たり12ビットと1サンプル当たり10ビットと1サンプル当たり8ビットとの間で)変更することができる。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、ピクチャごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。エンコーダ(340)が、符号化中に色空間を切り替えるとき、エンコーダ(340)は、本明細書で説明するように、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、量子化又はスケーリングを調整することができる。
【0042】
一般に、エンコーダ(340)は、タイルへの分割、色空間、色サンプリングレート、及び/又は色深度の適応、イントラ予測推定及び予測、動き推定及び動き補償、周波数変換、量子化、並びにエントロピ符号化等の符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ(340)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。出力される符号化データのフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0043】
エンコーダ(340)は、フレームを、同じサイズ又は異なるサイズの複数のタイルに分割することができる。例えば、エンコーダ(340)は、フレーム境界を用いてフレーム内のタイルの水平境界及び垂直境界を規定するタイル行及びタイル列に沿って、フレームを分割する。ここで、各タイルは矩形領域である。タイルは、並列処理のためのオプションを提供するために、しばしば使用される。フレームはまた、1以上のスライスとして編成され得る。ここで、スライスは、フレーム全体又はフレームの一領域であり得る。スライスは、フレーム内の他のスライスとは独立して復号することができ、これは、誤り耐性を向上させる。スライス又はタイルのコンテンツは、符号化及び復号のために、ブロック又はサンプル値の他のセットにさらに分割される。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、スライスごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。いくつかの例示的な実装において、エンコーダ(340)は、スライスごとに、量子化パラメータ(「QP」)値を設定することができる。
【0044】
H.265/HEVC規格に従ったシンタックスに関して、エンコーダは、フレーム(又はスライス若しくはタイル)のコンテンツを、符号化ツリーユニットに分割する。符号化ツリーユニット(「CTU」)は、1つのルマ符号化ツリーブロック(「CTB」)として編成されるルマサンプル値と、2つのクロマCTBとして編成される対応するクロマサンプル値と、を含む。CTU(及びそのCTB)のサイズは、エンコーダにより選択され、例えば、64×64サンプル値、32×32サンプル値、又は16×16サンプル値であり得る。CTUは、1以上の符号化ユニットを含む。符号化ユニット(「CU」)は、1つのルマ符号化ブロック(「CB」)と2つの対応するクロマCBとを有する。例えば、1つの64×64ルマCTBと2つの64×64クロマCTBとを有するCTU(YUV4:4:4フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの32×32クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。あるいは、別の例として、1つの64×64ルマCTBと2つの32×32クロマCTBとを有するCTU(YUV4:2:0フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの16×16クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。CUの最小許容可能サイズ(例えば、8×8、16×16)が、ビットストリームに含められてシグナリングされ得る。
【0045】
一般に、CUは、インター又はイントラ等の予測モードを有する。CUは、予測情報(例えば、予測モード詳細、変位値等)のシグナリング及び/又は予測処理のために、1以上の予測ユニットを含む。予測ユニット(「PU」)は、1つのルマ予測ブロック(「PB」)と2つのクロマPBとを有する。イントラ予測CUに関して、CUが最小サイズ(例えば、8×8)を有する場合を除いて、PUは、CUと同じサイズを有する。この場合、CUは、4つのより小さなPU(例えば、最小CUサイズが8×8である場合、それぞれ4×4である)に分割され得る、あるいは、PUは、CUについてのシンタックス要素により示される最小CUサイズを有し得る。CUはまた、残差符号化/復号のために、1以上の変換ユニットを有する。ここで、変換ユニット(「TU」)は、1つのルマ変換ブロック(「TB」)と2つのクロマTBとを有する。イントラ予測CU内のPUは、1つのTU(PUとサイズが等しい)又は複数のTUを含み得る。エンコーダは、ビデオをCTU、CU、PU、TU等にどのように分割するかを決定する。いくつかの例示的な実装において、エンコーダ(340)は、CTU、CU等について、符号化中、ユニットごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。
【0046】
H.265/HEVC実装において、スライスは、1つのスライスセグメント(独立スライスセグメント)を含み得る、又は、複数のスライスセグメント(1つの独立スライスセグメント及び1以上の従属スライスセグメント)に分割され得る。スライスセグメントは、1つのネットワーク抽象化レイヤ(「NAL」)ユニットに含まれる、タイルスキャンにおいて連続して順番付けられる整数個のCTUである。独立スライスセグメントに関して、スライスヘッダは、独立スライスセグメントについて適用されるシンタックス要素の値を含む。従属スライスセグメントに関して、短(truncated)スライスヘッダは、その従属スライスセグメントについて適用されるシンタックス要素の少しの値を含み、その従属スライスセグメントについての他のシンタックス要素の値は、復号順で先行する独立スライスセグメントについての値から推測される。
【0047】
本明細書で使用されるとき、「ブロック」という用語は、文脈に応じて、マクロブロック、予測ユニット、残差データユニット、すなわち、CB、PB、若しくはTB、又は、サンプル値の何らかの他のセットを示し得る。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、ブロックごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。
【0048】
図3に戻ると、エンコーダは、ソースフレーム(331)内の他の以前に再構成されたサンプル値からの予測の観点でそのソースフレーム(331)のイントラ符号化ブロックを表現する。イントラブロックコピー(「BC」)予測に関して、イントラピクチャ推定部が、他の以前に再構成されたサンプル値に対するブロックの変位を推定する。イントラフレーム予測参照領域とは、ブロックのためのBC予測値を生成するために使用される、フレーム内のサンプル値の領域である。イントラフレーム予測領域は、(ブロックベクトル(「BV」)推定において決定された)BV値により示され得る。ブロックのためのイントラ空間予測に関して、イントラピクチャ推定部が、ブロックへの、隣接する再構成されたサンプル値の外挿(extrapolation)を推定する。イントラピクチャ推定部は、予測情報(イントラBC予測のためのBV値やイントラ空間予測のための予測モード(方向)等)を出力することができ、この予測情報が、エントロピ符号化される。イントラフレーム予測予測部は、イントラ予測値を決定するために、予測情報を適用する。
【0049】
エンコーダ(340)は、参照フレームからの予測の観点でソースフレーム(331)のインターフレーム符号化予測ブロックを表現する。動き推定部は、1以上の参照フレーム(369)に対するブロックの動きを推定する。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き補償予測参照領域とは、現フレームのブロックのサンプル値のための動き補償予測値を生成するために使用される、1以上の参照フレーム内のサンプル値の領域である。動き推定部は、動きベクトル(「MV」)情報等の動き情報を出力し、この動き情報が、エントロピ符号化される。動き補償部は、インターフレーム予測のための動き補償予測値を決定するために、MVを参照フレーム(369)に適用する。
【0050】
エンコーダは、ブロックの予測値(イントラ又はインター)と対応するオリジナルの値との間の差(あれば)を決定することができる。このような予測残差値が、周波数変換、量子化、及びエントロピ符号化を用いて、さらに符号化される。例えば、エンコーダ(340)は、ピクチャ、スライス、符号化ユニット、及び/又はビデオの他の部分のためのQPの値を設定し、それに従って変換係数を量子化する。逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、エンコーダ(340)は、本明細書で説明するように、量子化又はスケーリングを調整することができる。エンコーダ(340)のエントロピ符号化部が、量子化された変換係数値に加えて、所定のサイド情報(例えば、MV情報、BV予測因子のインデックス値、BV差分、QP値、モード決定、パラメータ選択)も圧縮する。一般的なエントロピ符号化技術は、指数ゴロム符号化、ゴロムライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、「V2V(variable-length-to-variable-length)」符号化、「V2F(variable-length-to-fixed-length)」符号化、「LZ(Lempel-Ziv)」符号化、辞書符号化、「PIPE(probability interval partitioning entropy)」符号化、及びこれらの組合せを含む。エントロピ符号化部は、様々な種類の情報のための様々な符号化技術を使用することができ、複数の技術を組み合わせて適用することができ(例えば、ゴロムライス符号化を適用した後に算術符号化を適用することにより)、特定の符号化技術における複数の符号テーブルの中から選択することができる。
【0051】
復号フレーム内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、エンコーダ(340)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、適応ループフィルタリング(「ALF」)、又はサンプル適応オフセット(「SAO」)フィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
【0052】
エンコーダ(340)により生成された符号化データは、ビットストリームシンタックスの様々なレイヤについてのシンタックス要素を含む。H.265/HEVC規格に従ったシンタックスに関して、例えば、ピクチャパラメータセット(「PPS」)は、ピクチャに関連付けられ得るシンタックス要素を含むシンタックス構造である。いくつかの例示的な実装において、PPSは、1つのピクチャ(又は、PPSを使用する複数のピクチャ)について適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号に加えて、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する他の情報を含み得る。いくつかの例示的な実装において、PPSは、QP値(例えば、ピクチャの初期QP値、第2の色空間の初期QP値、又は第2の色空間のQP値についてのオフセット)を示す1以上のシンタックス要素を含み得る。PPSは、1つのピクチャについて使用されることもあるし、PPSは、シーケンス内の複数のピクチャについて再使用されることもある。PPSは、通常、ピクチャについての符号化データとは別にシグナリングされる(例えば、1つのNALユニットは、PPS用であり、1以上の他のNALユニットは、ピクチャについての符号化データ用である)。ピクチャについての符号化データにおいて、シンタックス要素は、ピクチャについてどのPPSを使用するかを示す。同様に、H.265/HEVC規格に従ったシンタックスに関して、シーケンスパラメータセット(「SPS」)は、ピクチャのシーケンスに関連付けられ得るシンタックス要素を含むシンタックス構造である。ビットストリームは、1つのSPS又は複数のSPSを含み得る。SPSは、通常、シーケンスについての他のデータとは別にシグナリングされ、他のデータにおけるシンタックス要素が、どのSPSを使用するかを示す。いくつかの例示的な実装において、シーケンスについてのSPSは、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する情報を含み得、これが、シーケンス内で、色空間、色サンプリングレート、及び/又は色深度を切り替えるときに、参照される。
【0053】
スライスレイヤに関して、スライスヘッダ(例えば、スライスセグメントヘッダ)は、スライス(例えば、独立スライスセグメント及びそれに続くあらゆる従属スライスセグメント)について適用されるシンタックス要素の値を含む。いくつかの例示的な実装において、スライスヘッダは、スライスについて適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含み得る。いくつかの例示的な実装において、スライスヘッダはまた、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する情報を含み得、これが、スライス内で、色空間、色サンプリングレート、及び/又は色深度を切り替えるときに、参照される。いくつかの例示的な実装において、スライスヘッダは、QP値(例えば、スライスのQP値についてのオフセット、スライスの色成分のQP値についてのオフセット、第2の色空間についてのオフセット、第2の色空間の色成分についてのオフセット)についての1以上のシンタックス要素を含み得る。ブロックレイヤに関して(例えば、CTUに関して)、シンタックス構造は、ブロックについて適用されるシンタックス要素の値を含む。いくつかの例示的な実装において、ブロックについてのシンタックス構造は、ブロックについて適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含み得、ブロックについて適用されるQP値(又は、ブロックについて異なる色空間に適用されるQP値)を示す1以上のシンタックス要素も含み得る。
【0054】
符号化フレーム(341)及びMMCO/RPS情報(342)(又は、フレームについての依存関係及び順番構造がエンコーダ(340)において既に知られているため、MMCO/RPS情報(342)と同等の情報)が、復号プロセスエミュレータ(350)により処理される。復号プロセスエミュレータ(350)は、例えば、参照フレームを再構成する復号タスク等のデコーダの機能の一部を実装している。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、所与の符号化フレーム(341)が、符号化される後続フレームのインターフレーム予測において参照フレームとして使用するために再構成されて記憶される必要があるかどうかを判定する。符号化フレーム(341)が記憶される必要がある場合、復号プロセスエミュレータ(350)は、符号化フレーム(341)を受信して対応する復号フレーム(351)を生成するデコーダにより行われるであろう復号プロセスを模擬する。そうする際に、エンコーダ(340)が、復号フレーム記憶領域(360)に記憶されている1以上の復号フレーム(369)を使用したとき、復号プロセスエミュレータ(350)は、復号プロセスの一部として、記憶領域(360)から1以上の復号フレーム(369)を使用する。
【0055】
復号フレーム一時メモリ記憶領域(360)は、複数のフレームバッファ記憶領域(361、362、...、36n)を含む。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、参照フレームとして使用するためにエンコーダ(340)によりもはや必要とされなくなったフレームを有する任意のフレームバッファ(361、362等)を識別するために、記憶領域(360)のコンテンツを管理する。復号プロセスを模擬した後、復号プロセスエミュレータ(350)は、このように識別されるフレームバッファ(361、362等)に、新たに復号されたフレーム(351)を記憶する。
【0056】
符号化フレーム(341)及びMMCO/RPS情報(342)は、一時符号化データ領域(370)にバッファされる。符号化データ領域(370)に収集される符号化データは、エレメンタリ符号化ビデオビットストリームのシンタックスの一部として、1以上のピクチャの符号化データを含む。符号化データ領域(370)に収集される符号化データはまた、(例えば、1以上の付加拡張情報(「SEI」)メッセージ又はビデオユーザビリティ情報(「VUI」)メッセージにおける1以上のパラメータとして、)符号化ビデオデータに関連するメディアメタデータを含み得る。
【0057】
一時符号化データ領域(370)からの収集されたデータ(371)は、チャネルエンコーダ(380)により処理される。チャネルエンコーダ(380)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1等のメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又は、IETF RFC 3550等のインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして伝送又は記憶するために、収集されたデータをパケット化及び/又は多重化することができる。そのような場合、チャネルエンコーダ(380)は、メディア伝送ストリームのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、チャネルエンコーダ(380)は、(例えば、ISO/IEC 14496−12等のメディアコンテナフォーマットに従って)ファイルとして記憶するために、収集されたデータを編成することができる。そのような場合、チャネルエンコーダ(380)は、メディア記憶ファイルのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、より一般的に、チャネルエンコーダ(380)は、1以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実装することができる。そのような場合、チャネルエンコーダ(380)は、1以上のプロトコルのシンタックスの一部として、シンタックス要素を付加することができる。チャネルエンコーダ(380)は、チャネル(390)への出力を提供する。チャネル(390)は、ストレージ、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ(380)又はチャネル(390)はまた、例えば、前方誤り訂正(「FEC」)符号化及びアナログ信号変調のための他の要素(図示せず)を含み得る。
【0058】
IV.例示的なデコーダシステム
図4は、いくつかの説明する実施形態を協働して実装することができる例示的なデコーダシステム(400)のブロック図である。デコーダシステム(400)は、リアルタイム通信のための低遅延復号モード及びファイル又はストリームからのメディア再生のためのより高遅延の復号モード等の複数の復号モードのうちのいずれかで動作することができる汎用復号ツールであってもよいし、そのような1つの復号モードのために適合された専用復号ツールであってもよい。デコーダシステム(400)は、特定のタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ)を復号するよう適合されてもよいし、複数の異なるタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ及び自然ビデオ)のうちの任意のコンテンツを復号するよう適合されてもよい。デコーダシステム(400)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、デコーダシステム(400)は、チャネル(410)から符号化データを受信し、出力先(490)への出力として再構成フレームを生成する。符号化データは、色空間、色サンプリングレート、及び/又は色深度の適応切り替えにより符号化されたコンテンツを含み得る。
【0059】
デコーダシステム(400)は、ストレージ、通信接続、又は入力としての符号化データのための別のチャネルを表し得るチャネル(410)を含む。チャネル(410)は、チャネル符号化された符号化データを生成する。チャネルデコーダ(420)は、符号化データを処理することができる。例えば、チャネルデコーダ(420)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1等のメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又は、IETF RFC 3550等のインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして伝送又は記憶するために収集されたデータを逆パケット化及び/又は逆多重化する。そのような場合、チャネルデコーダ(420)は、メディア伝送ストリームのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、チャネルデコーダ(420)は、(例えば、ISO/IEC 14496−12等のメディアコンテナフォーマットに従って)ファイルとして記憶するために収集された符号化ビデオデータを分離する。そのような場合、チャネルデコーダ(420)は、メディア記憶ファイルのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネルデコーダ(420)は、1以上のメディアシステム逆多重化プロトコル又はトランスポートプロトコルを実装することができる。そのような場合、チャネルデコーダ(420)は、1以上のプロトコルのシンタックスの一部として付加されたシンタックス要素を解析することができる。チャネル(410)又はチャネルデコーダ(420)はまた、例えば、FEC復号及びアナログ信号復調のための他の要素(図示せず)を含み得る。
【0060】
十分な量のデータが受信されるまで、チャネルデコーダ(420)から出力される符号化データ(421)は、一時符号化データ領域(430)に記憶される。符号化データ(421)は、符号化フレーム(431)及びMMCO/RPS情報(432)を含む。符号化データ領域(430)内の符号化データ(421)は、エレメンタリ符号化ビデオビットストリームのシンタックスの一部として、1以上のピクチャの符号化データを含む。符号化データ領域(430)内の符号化データ(421)はまた、(例えば、1以上のSEIメッセージ又はVUIメッセージにおける1以上のパラメータとして、)符号化ビデオデータに関連するメディアメタデータを含み得る。
【0061】
一般に、符号化データ(421)がデコーダ(450)により使用されるまで、符号化データ領域(430)は、そのような符号化データ(421)を一時的に記憶する。その時点で、符号化フレーム(431)及びMMCO/RPS情報(432)の符号化データが、符号化データ領域(430)からデコーダ(450)に伝送される。復号が進むにつれ、新たな符号化データが、符号化データ領域(430)に追加され、符号化データ領域(430)に残っている最も古い符号化データが、デコーダ(450)に伝送される。
【0062】
デコーダ(450)は、符号化フレーム(431)を復号して、対応する復号フレーム(451)を生成する。必要に応じて、復号プロセスを実行するとき、デコーダ(450)は、インターフレーム予測のための参照フレームとして、1以上の以前に復号されたフレーム(469)を使用することができる。デコーダ(450)は、復号フレーム一時メモリ記憶領域(460)から、そのような以前に復号されたフレーム(469)を読み出す。
【0063】
復号中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、デコーダ(450)は、色空間変換を実行して、YUVタイプの色空間とRGBタイプの色空間との間で、又は、何らかの他の色空間へ/から、変換することができる。デコーダ(450)はまた、色空間変換を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色成分を並べ替え、どの色成分がプライマリ成分であるかを変更することができる(例えば、RGBフォーマットとBGRフォーマットとGBRフォーマットとの間で変換することができる)。復号中、デコーダ(450)はまた、再サンプリング処理を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色サンプリングレート及び/又は色深度を変更することができる。いくつかの例示的な実装において、デコーダ(450)は、復号中、ピクチャごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。代替的に、デコーダ(450)は、復号中、スライスごとに、ブロックごとに、又は他のユニットごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えてもよい。デコーダ(450)が、復号中に色空間を切り替えるとき、デコーダ(450)は、本明細書で説明するように、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、逆量子化又は逆スケーリングを調整することができる。
【0064】
一般に、デコーダ(450)は、エントロピ復号、色空間、色サンプリングレート、及び/又は色深度の適応、イントラフレーム予測、動き補償インターフレーム予測、逆量子化、逆周波数変換、及びタイルのマージ等の復号タスクを実行する複数の復号モジュールを含む。デコーダ(450)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。
【0065】
例えば、デコーダ(450)は、圧縮フレーム又は一連のフレームの符号化データを受信し、復号フレーム(451)を含む出力を生成する。デコーダ(450)において、バッファは、圧縮フレームの符号化データを受け入れ、適切な時間に、受け入れた符号化データをエントロピ復号部に利用可能にする。エントロピ復号部は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化されたデータに加えて、エントロピ符号化されたサイド情報もエントロピ復号する。動き補償部は、再構成されているフレームのインター符号化ブロックの動き補償予測値を形成するために、動き情報を1以上の参照フレームに適用する。イントラフレーム予測モジュールは、隣接する以前に再構成されたサンプル値から、現ブロックのサンプル値を空間的に予測することができる、又は、イントラBC予測に関して、フレーム内のイントラフレーム予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測することができる。この参照領域は、BV値により示され得る。デコーダ(450)はまた、予測残差値を再構成する。逆量子化部は、エントロピ復号されたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリーム内のシンタックス要素に基づいて、ピクチャ、スライス、符号化ユニット、及び/又はビデオの他の部分のためのQPの値を設定し、それに従って変換係数を逆量子化する。逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、デコーダ(450)は、本明細書で説明するように、逆量子化又は逆スケーリングを調整することができる。逆周波数変換部は、量子化された周波数領域データを空間領域データに変換する。インターフレーム予測ブロックに関して、デコーダ(450)は、再構成された予測残差値を動き補償予測値と結合する。デコーダ(450)は、同様に、予測残差値を、イントラ予測からの予測値と結合することができる。復号フレーム(451)内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、ビデオデコーダ(450)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、ALF、又はSAOフィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
【0066】
復号フレーム一時メモリ記憶領域(460)は、複数のフレームバッファ記憶領域(461、462、...、46n)を含む。復号フレーム記憶領域(460)は、復号ピクチャバッファの一例である。デコーダ(450)は、MMCO/RPS情報(432)を使用して、復号フレーム(451)を記憶することができるフレームバッファ(461、462等)を識別する。デコーダ(450)は、そのフレームバッファに復号フレーム(451)を記憶する。
【0067】
出力シーケンサ(480)は、出力順で生成される次のフレームが復号フレーム記憶領域(460)内で利用可能になるときを識別する。出力順で生成される次のフレーム(481)が、復号フレーム記憶領域(460)内で利用可能になったとき、そのフレームが、出力シーケンサ(480)により読み出され、出力先(490)(例えば、ディスプレイ)に出力される。一般に、復号フレーム記憶領域(460)から出力シーケンサ(480)によりフレームが出力される順番は、デコーダ(450)によりフレームが復号される順番とは異なり得る。
【0068】
V.例示的なビデオエンコーダ
図5a及び
図5bは、いくつかの説明する実施形態を協働して実装することができる一般化されたビデオエンコーダ(500)のブロック図である。エンコーダ(500)は、現ピクチャを含む一連のビデオピクチャを、入力ビデオ信号(505)として受信し、符号化ビデオビットストリーム(595)内の符号化データを、出力として生成する。
【0069】
エンコーダ(500)は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、例えば、予測段階、周波数変換段階、及び/又はエントロピ符号化段階において等の様々な段階において、さらに細分割され得る。例えば、ピクチャは、64×64ブロック、32×32ブロック、又は16×16ブロックに分割され得、今度は、それらのブロックが、符号化及び復号のために、サンプル値のより小さなブロックに分割され得る。H.265/HEVC規格のための符号化の実装において、エンコーダは、ピクチャを、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に分割する。
【0070】
エンコーダ(500)は、イントラピクチャ符号化及び/又はインターピクチャ符号化を用いて、ピクチャを圧縮する。エンコーダ(500)のコンポーネントの多くが、イントラピクチャ符号化及びインターピクチャ符号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、圧縮される情報のタイプに応じて変わり得る。
【0071】
タイル化モジュール(510)は、任意的に、ピクチャを、同じサイズ又は異なるサイズの複数のタイルに分割する。例えば、タイル化モジュール(510)は、ピクチャ境界を用いてピクチャ内のタイルの水平境界及び垂直境界を規定するタイル行及びタイル列に沿って、ピクチャを分割する。ここで、各タイルは矩形領域である。H.265/HEVC実装において、エンコーダ(500)は、ピクチャを1以上のスライスに分割する。ここで、各スライスは、1以上のスライスセグメントを含む。
【0072】
一般符号化制御部(520)は、入力ビデオ信号(505)のピクチャに加えて、エンコーダ(500)の様々なモジュールからのフィードバック(図示せず)を受信する。概して、一般符号化制御部(520)は、符号化中に符号化パラメータを設定及び変更するために、他のモジュール(タイル化モジュール(510)、変換部/スケーリング部/量子化部(530)、スケーリング部/逆変換部(535)、イントラピクチャ推定部(540)、動き推定部(550)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。詳細には、一般符号化制御部(520)は、符号化中に、ピクチャごとに、スライスごとに、ブロックごとに、又は何らかの他のユニットごとに、色空間、色サンプリングレート、及び/又は色深度をどのように適応的に切り替えるかを決定することができる。エンコーダ(500)が、色空間を切り替えるとき、一般符号化制御部(520)は、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、量子化又はスケーリングをどのように調整するかを決定することができる。一般符号化制御部(520)はまた、符号化中に中間結果を評価することができる。一般符号化制御部(520)は、符号化中になされた決定を示す一般制御データ(522)を生成するので、対応するデコーダは、整合する決定を行うことができる。一般制御データ(522)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
【0073】
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き推定部(550)は、1以上の参照ピクチャに対する、入力ビデオ信号(505)の現ピクチャのサンプル値のブロックの動きを推定する。復号ピクチャバッファ(570)は、参照ピクチャとして使用するために、1以上の以前に再構成された符号化ピクチャをバッファする。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部(550)は、サイド情報として、MVデータ等の動きデータ(552)、マージモードインデックス値、及び参照ピクチャ選択データを生成する。動きデータ(552)は、ヘッダフォーマット化部/エントロピ符号化部(590)及び動き補償部(555)に提供される。
【0074】
動き補償部(555)は、復号ピクチャバッファ(570)からの1以上の再構成された参照ピクチャに、MVを適用する。動き補償部(555)は、現ピクチャのための動き補償予測を生成する。ピクチャについてのセカンダリ成分が、プライマリ成分と同じ解像度を有する場合(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットである場合)、セカンダリ成分ブロックについて適用されるMV値は、対応するプライマリ成分ブロックについて適用されるMV値と同じであり得る。一方、ピクチャについてのセカンダリ成分が、プライマリ成分より低い解像度を有する場合(例えば、フォーマットが、YUV4:2:0フォーマットである場合)、セカンダリ成分ブロックについて適用されるMV値は、低減され、可能であれば、解像度における差を調整するために丸められ得る(例えば、MV値の垂直成分及び水平成分を2で除算して、それらを整数値に切り捨てる又は丸めることにより)。
【0075】
エンコーダ(500)内の分離パス(separate path)において、イントラピクチャ推定部(540)は、入力ビデオ信号(505)の現ピクチャのサンプル値のブロックのためのイントラピクチャ予測をどのように実行するかを決定する。現ピクチャは、イントラピクチャ符号化を用いて、全体又は一部が符号化され得る。イントラ空間予測に関して、イントラピクチャ推定部(540)は、現ピクチャの再構成(538)の値を使用して、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値をどのように空間的に予測するかを決定する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ推定部(540)は、現ピクチャ内の異なる候補参照領域への、現ブロックのサンプル値の変位を推定する。
【0076】
イントラピクチャ推定部(540)は、サイド情報として、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測に関して)、及びBV値(イントラBC予測に関して)等のイントラ予測データ(542)を生成する。イントラ予測データ(542)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びイントラピクチャ予測部(545)に提供される。
【0077】
イントラピクチャ予測部(545)は、イントラ予測データ(542)に従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、イントラBC予測に関して、イントラピクチャ予測部(545)は、現ブロックのBV値により示されるイントラピクチャ予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。いくつかの場合において、BV値は、BV予測因子(予測されたBV値)であり得る。他の場合において、BV値は、その予測されたBV値とは異なり得、このような場合、BV差分が、予測されるBV値とBV値との差を示す。ピクチャについてのセカンダリ成分が、プライマリ成分と同じ解像度を有する場合(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットである場合)、セカンダリ成分ブロックについて適用されるBV値は、対応するプライマリ成分ブロックについて適用されるBV値と同じであり得る。一方、ピクチャについてのセカンダリ成分が、プライマリ成分より低い解像度を有する場合(例えば、フォーマットが、YUV4:2:0フォーマットである場合)、セカンダリ成分ブロックについて適用されるBV値は、低減され、可能であれば、解像度における差を調整するために丸められ得る(例えば、BV値の垂直成分及び水平成分を2で除算して、それらを整数値に切り捨てる又は丸めることにより)。
【0078】
イントラ/インタースイッチは、所与のブロックのための予測(558)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。非スキップモードブロックに関して、予測(558)のブロックと、入力ビデオ信号(505)のオリジナルの現ピクチャの対応する部分と、の間の差(あれば)が、残差(518)の値を提供する。非スキップモードブロックに関して、現ピクチャの再構成中に、再構成された残差値が、予測(558)と結合されて、ビデオ信号(505)からのオリジナルのコンテンツのおおよその又は正確な再構成(538)が生成される。(損失圧縮(lossy compression)では、いくつかの情報が、ビデオ信号(505)から失われる。)
【0079】
変換部/スケーリング部/量子化部(530)において、周波数変換部は、空間領域ビデオ情報を周波数領域(すなわち、スペクトル変換)データに変換する。ブロックベースのビデオ符号化に関して、周波数変換部は、離散コサイン変換(「DCT」)、その整数近似、又は別のタイプの順ブロック変換(例えば、離散サイン変換又はその整数近似)を予測残差データ(又は、予測(558)がヌルの場合にはサンプル値データ)のブロックに適用して、周波数変換係数のブロックを生成する。エンコーダ(500)はまた、そのような変換ステップがスキップされることを指示することができる。スケーリング部/量子化部は、変換係数をスケーリングして量子化する。例えば、量子化部は、ピクチャごとに、スライスごとに、ブロックごとに、周波数固有の単位で、又は他の単位で変わる量子化ステップサイズで、デッドゾーン(dead-zone)スカラ量子化を周波数領域データに適用する。逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、スケーリング部/量子化部は、本明細書で説明するように、量子化又はスケーリングを調整することができる。量子化された変換係数データ(532)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
【0080】
スケーリング部/逆変換部(535)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、スケーリング部は、本明細書で説明するように、逆量子化又は逆スケーリングを調整することができる。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。非スキップモードブロックに関して、エンコーダ(500)は、再構成された残差値を、予測(558)の値(例えば、動き補償予測値、イントラピクチャ予測値)と結合して、再構成(538)を生成する。スキップモードブロックに関して、エンコーダ(500)は、再構成(538)として、予測(558)の値を使用する。
【0081】
イントラピクチャ予測に関して、再構成(538)の値は、イントラピクチャ推定部(540)及びイントラピクチャ予測部(545)にフィードバックされ得る。また、再構成(538)の値は、後続ピクチャの動き補償予測のためにも使用され得る。再構成(538)の値は、さらにフィルタリングされ得る。フィルタリング制御部(560)は、ビデオ信号(505)の所与のピクチャについて、再構成(538)の値に対して、デブロックフィルタリング及びSAOフィルタリングをどのように実行するかを決定する。フィルタリング制御部(560)は、フィルタリング制御データ(562)を生成する。フィルタリング制御データ(562)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びマージ部/1以上のフィルタ(565)に提供される。
【0082】
マージ部/1以上のフィルタ(565)において、エンコーダ(500)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。エンコーダ(500)は、ピクチャ内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(562)に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、エンコーダ(500)の設定に応じて、選択的にフィルタリングされ得る又はフィルタリングされず、エンコーダ(500)は、そのようなフィルタリングが適用されたか否かを示すシンタックスを、符号化ビットストリーム内に提供することができる。復号ピクチャバッファ(570)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
【0083】
ヘッダフォーマット化部/エントロピ符号化部(590)は、一般制御データ(522)、量子化された変換係数データ(532)、イントラ予測データ(542)、動きデータ(552)、及びフィルタリング制御データ(562)をフォーマット化及び/又はエントロピ符号化する。一般制御データ(522)は、ピクチャ、スライス、ブロック、又はビデオの他のユニットについての色空間、色サンプリングレート、及び/又は色深度を示す信号を含む。そのような信号は、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造に含められ得、固定長の値としてエントロピ符号化又はシグナリングされ得る。ヘッダフォーマット化部/エントロピ符号化部(590)はまた、利用可能な色空間を識別又は規定する情報(例えば、予め定められた色空間のリスト、色空間変換演算のためのカスタム行列)、利用可能な色サンプリングレートを識別又は規定する情報(例えば、予め定められた色サンプリングレート、他の色サンプリングレート、又はダウンサンプリング及びアップサンプリングについての演算のアイデンティフィケーションのリスト)、及び/又は、利用可能な色深度を識別又は規定する情報(例えば、予め定められた色深度、他の色深度、又は色深度変換についての演算のアイデンティフィケーションのリスト)をフォーマット化及び/又はエントロピ符号化することができ、これらは、適応切り替え中にデコーダにより使用可能である。ヘッダフォーマット化部/エントロピ符号化部(590)はまた、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造に含められる、QP値を示すシンタックス要素をフォーマット化及び/又はエントロピ符号化することができる。
【0084】
ヘッダフォーマット化部/エントロピ符号化部(590)は、符号化データを、符号化ビデオビットストリーム(595)内に提供する。符号化ビデオビットストリーム(595)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0085】
実装及び所望の圧縮のタイプに応じて、エンコーダ(500)のモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダは、説明した技術のうちの1以上を実行する。エンコーダの特定の実施形態は、通常、エンコーダ(500)の変形又は補完バージョンを使用する。エンコーダ(500)内のモジュール間の示された関係は、エンコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0086】
VI.例示的なビデオデコーダ
図6は、いくつかの説明する実施形態を協働して実装することができる一般化されたデコーダ(600)のブロック図である。デコーダ(600)は、符号化ビデオビットストリーム(605)内の符号化データを受信し、再構成ビデオ(695)のためのピクチャを含む出力を生成する。符号化ビデオビットストリーム(605)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0087】
デコーダ(600)は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、様々な段階において、さらに細分割され得る。例えば、ピクチャは、64×64ブロック、32×32ブロック、又は16×16ブロックに分割され得、今度は、それらのブロックが、サンプル値のより小さなブロックに分割され得る。H.265/HEVC規格のための復号の実装において、ピクチャは、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に分割される。
【0088】
デコーダ(600)は、イントラピクチャ復号及び/又はインターピクチャ復号を用いて、ピクチャを伸張する。デコーダ(600)のコンポーネントの多くが、イントラピクチャ復号及びインターピクチャ復号の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、伸張される情報のタイプに応じて変わり得る。
【0089】
バッファは、符号化ビデオビットストリーム(605)内の符号化データを受け入れ、受け入れた符号化データを解析部/エントロピ復号部(610)に利用可能にする。解析部/エントロピ復号部(610)は、通常はエンコーダ(500)において実行されたエントロピ符号化の逆(例えば、コンテキスト適応バイナリ算術復号)を適用することにより、エントロピ符号化されたデータをエントロピ復号する。解析及びエントロピ復号の結果として、解析部/エントロピ復号部(610)は、一般制御データ(622)、量子化された変換係数データ(632)、イントラ予測データ(642)、動きデータ(652)、及びフィルタリング制御データ(662)を生成する。一般制御データ(622)は、ピクチャ、スライス、ブロック、又はビデオの他のユニットについての色空間、色サンプリングレート、及び/又は色深度を示す信号を含む。そのような信号は、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造に含められ得、固定長の値としてエントロピ符号化又はシグナリングされ得る。解析部/エントロピ復号部(610)はまた、利用可能な色空間を識別又は規定する情報(例えば、予め定められた色空間のリスト、色空間変換演算のためのカスタム行列)、利用可能な色サンプリングレートを識別又は規定する情報(例えば、予め定められた色サンプリングレート、他の色サンプリングレート、又はダウンサンプリング及びアップサンプリングについての演算のアイデンティフィケーションのリスト)、及び/又は、利用可能な色深度を識別又は規定する情報(例えば、予め定められた色深度、他の色深度、又は色深度変換についての演算のアイデンティフィケーションのリスト)を解析及び/又はエントロピ復号することができ、これらは、適応切り替え中にデコーダ(600)により使用可能である。解析部/エントロピ復号部(610)はまた、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造からの、QP値を示すシンタックス要素を解析及び/又はエントロピ復号することができる。
【0090】
一般復号制御部(620)は、一般制御データ(622)を受信し、復号中に復号パラメータを設定及び変更するために、他のモジュール(スケーリング部/逆変換部(635)、イントラピクチャ予測部(645)、動き補償部(655)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。詳細には、一般復号制御部(620)は、復号中に、ピクチャごとに、スライスごとに、ブロックごとに、又は何らかの他のユニットごとに、色空間、色サンプリングレート、及び/又は色深度を、デコーダ(600)に切り替えさせることができる。デコーダ(600)が、色空間を切り替えるとき、一般復号制御部(620)は、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、逆量子化又は逆スケーリングをどのように調整するかを決定することができる。
【0091】
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き補償部(655)は、MVデータ等の動きデータ(652)、参照ピクチャ選択データ、及びマージモードインデックス値を受信する。動き補償部(655)は、復号ピクチャバッファ(670)からの1以上の再構成された参照ピクチャに、MVを適用する。動き補償部(655)は、現ピクチャのインター符号化ブロックのための動き補償予測を生成する。復号ピクチャバッファ(670)は、参照ピクチャとして使用するために、1以上の以前に再構成されたピクチャを記憶する。
【0092】
デコーダ(600)内の分離パスにおいて、イントラピクチャ予測予測部(645)は、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測に関して)、及びBV値(イントラBC予測に関して)等のイントラ予測データ(642)を受信する。イントラ空間予測に関して、イントラピクチャ予測部(645)は、現ピクチャの再構成(638)の値を使用して、予測モードデータに従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ予測部(645)は、現ブロックのBV値により示されるイントラピクチャ予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。
【0093】
イントラ/インタースイッチは、所与のブロックのための予測(658)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。例えば、H.265/HEVCシンタックスに従うと、イントラ/インタースイッチは、イントラ予測CU及びインター予測CUを含み得るピクチャのCUについて符号化されたシンタックス要素に基づいて制御され得る。非スキップモードブロックに関して、デコーダ(600)は、予測(658)を、再構成された残差値と結合して、ビデオ信号からのコンテンツの再構成(638)を生成する。スキップモードブロックに関して、デコーダ(600)は、再構成(638)として、予測(658)の値を使用する。
【0094】
非スキップモードブロックについて残差を再構成するために、スケーリング部/逆変換部(635)は、量子化された変換係数データ(632)を受信して処理する。スケーリング部/逆変換部(635)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、スケーリング部は、本明細書で説明するように、逆量子化又は逆スケーリングを調整することができる。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換部は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似、又は別のタイプの逆周波数変換(例えば、逆離散サイン変換又はその整数近似)であり得る。
【0095】
イントラピクチャ予測に関して、再構成(638)の値は、イントラピクチャ予測部(645)にフィードバックされ得る。インターピクチャ予測に関して、再構成(638)の値は、さらにフィルタリングされ得る。マージ部/1以上のフィルタ(665)において、デコーダ(600)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。デコーダ(600)は、ピクチャ内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(662)とフィルタ適応のためのルールとに従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、デコーダ(600)の設定又は符号化ビットストリームデータ内のシンタックスインジケーションに応じて、選択的にフィルタリングされ得る又はフィルタリングされない。復号ピクチャバッファ(670)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
【0096】
デコーダ(600)はまた、後処理フィルタを含み得る。後処理フィルタ(608)は、デリンギングフィルタリング、適応ウィナーフィルタリング、フィルムグレイン再現フィルタリング(film-grain reproduction filtering)、SAOフィルタリング、又は別の種類のフィルタリングを含み得る。
【0097】
実装及び所望の伸張のタイプに応じて、デコーダ(600)のモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダは、説明した技術のうちの1以上を実行する。デコーダの特定の実施形態は、通常、デコーダ(600)の変形又は補完バージョンを使用する。デコーダ(600)内のモジュール間の示された関係は、デコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0098】
VII.色空間を切り替えるときの量子化/スケーリング又は逆量子化/スケーリングの調整
このセクションは、ビデオシーケンスのユニットのための適応符号化及び適応復号の様々な特徴を提示している。ユニットは、ビデオシーケンスのピクチャ、スライス、ブロック、又は他の部分であり得る。例えば、これらの特徴のうちのいくつかは、エンコーダが、符号化中にビデオシーケンス内のユニットの間で色空間を切り替えるときの量子化又はスケーリングの調整に関する。他の特徴は、デコーダが、復号中にビデオシーケンス内のユニットの間で色空間を切り替えるときの逆量子化又は逆スケーリングの調整に関する。これらの特徴は、符号化中及び復号中に色空間の間で切り替えるときの符号化効率を向上させることができる。
【0099】
一般に、色空間(時として色モデルと呼ばれる)は、1つの物理位置につきn(n≧1)個の値として色を表現するためのモデルであり、n個の値の各値は、その位置についての色成分値を提供する。例えば、YUV色空間において、ルマ(又はY)成分値は、ある位置におけるおおよその輝度を表し、複数のクロマ(又はU及びV)成分値は、その位置における色差を表す。色差値(及び、YUV色空間からRGB等の別の色空間へ変換演算、RGB等の別の色空間からYUV色空間への変換演算)の正確な定義は、実装に依存する。一般に、符号化及び復号の目的では、Y成分がプライマリ成分であり、U成分及びV成分がセカンダリ成分である。一般に、本明細書で使用されるとき、YUVタイプの色空間という用語は、1つのルマ(又はルミナンス)成分と1以上のクロマ(又はクロミナンス)成分とを有する任意の色空間を示し、Y’UV、YIQ、Y’IQ、及びYDbDrに加えて、YCbCr及びYCoCg等の変形を含む。
【0100】
使用される成分信号尺度(measure)は、非線形伝達特性関数(「ガンマプレ補償(gamma pre-compensation)」として一般に知られており、プライム記号を使用してしばしば表記されるが、プライム記号は、表記の都合上しばしば省略される)の適用を通じて調整され得る。あるいは、成分信号尺度は、光振幅と線形関係を有するドメインにあり得る。ルマ成分信号及びクロマ信号成分は、人間の視覚系についての輝度及び色の知覚に非常に沿ったものであり得る、あるいは、ルマ成分信号及びクロマ信号成分は、そのような尺度からいくらかそれたものであり得る(例えば、YCoCgの変形におけるように、色成分値の計算を単純化する式が適用される)。
【0101】
別の例として、RGB色空間において、赤(R)成分値は、ある位置における赤強度を表し、緑(G)成分値は、その位置における緑強度を表し、青(B)成分値は、その位置における青強度を表す。本明細書で使用されるとき、RGBタイプの色空間という用語は、R色成分、G色成分、及びB色成分を任意の順番で有する色空間を示す。例は、RGB色空間、BGR色空間、及びGBR色空間を含み、これらの色空間は、符号化及び復号の目的でのプライマリ成分の点で異なる。プライマリ成分は、色空間の最初の文字(例えば、RGBの場合はR)により示される。
【0102】
色サンプリングレート(時としてクロマサンプリングレートと呼ばれる)とは、色成分の間の相対空間解像度を指す。例えば、4:4:4という色サンプリングレートの場合、セカンダリ成分(例えば、YUVのU成分及びV成分)についての情報は、プライマリ成分(例えば、YUVのY成分)についての情報と同じ空間解像度を有する。4:2:2又は4:2:0という色サンプリングレートの場合、セカンダリ成分についての情報は、プライマリ成分についての情報に対してダウンサンプリングされる。YUV4:2:0フォーマットは、YUV4:4:4フォーマットと比べて、クロマ情報をサブサンプリングしたフォーマットであるので、クロマ解像度は、水平方向及び垂直方向の両方においてルマ解像度の半分である。YUV4:2:0フォーマットは、YUV4:4:4フォーマットと比べて、水平方向においてクロマ情報をサブサンプリングしたフォーマットであるので、クロマ解像度は、水平方向においてルマ解像度の半分である。色サンプリングレートの他の例は、4:1:1(セカンダリ成分が水平方向において1/4の解像度を有する)及び4:0:0(セカンダリ成分が欠如している)を含む。色サブサンプリングは、通常、YUVタイプの色空間に適用される。RGBタイプの色空間は、通常、4:4:4という色サンプリングレートを有するが、セカンダリ色成分がサブサンプリングされる異なる色サンプリングレートを有してもよい。
【0103】
YUV4:2:0フォーマットは、従来、ビデオ符号化及びビデオ復号のために使用されていたが、ビデオがよりリッチな色情報を有し、より高い色忠実度が妥当であろういくつかのユースケースが存在する。そのようなユースケースにおいて、YUV4:4:4クロマサンプリングフォーマットとYUV4:2:0クロマサンプリングフォーマットとの差が、観察者によってより容易に知覚される。例えば、コンピュータスクリーンテキストコンテンツ、人工的な鋭い境界を有するアニメーション化されたビデオコンテンツ、又はより一般的にビデオコンテンツの所定の特徴(スクロールするタイトル及び鋭いグラフィックス、又はクロマチャネルにおいて集結された情報を有するビデオ)の符号化/復号に関して、4:4:4フォーマットが、4:2:0フォーマットより好ましい場合がある。
【0104】
色深度とは、1サンプル値当たりのビット数を指す。一般的な色深度は、1サンプル当たり8ビット、1サンプル当たり10ビット、及び1サンプル当たり12ビットである。他の可能な色深度は、1サンプル当たり4ビット及び1サンプル当たり16ビットを含む。
【0105】
色空間、色サンプリングレート、及び/又は色深度の適応切り替えは、スクリーンキャプチャコンテンツ等の所定の「人工的に」作成されたビデオコンテンツを符号化する際のレート歪み性能又は自然ビデオと人工的に作成されたビデオコンテンツとの混合を符号化する際のレート歪み性能を向上させることができる。スクリーンキャプチャコンテンツの符号化/復号についての一般的なシナリオは、リモートデスクトップ会議、及び、自然ビデオ又は他の「混合コンテンツ」ビデオ上のグラフィカルオーバーレイの符号化/復号を含む。
【0106】
A.ビデオのタイプ
一般に、スクリーンキャプチャビデオは、コンピュータスクリーン又は他のディスプレイの出力を表す。
図7は、スクリーンキャプチャのための入力を提供することができる、コンテンツを含むコンピュータデスクトップ環境(710)を示している。例えば、スクリーンキャプチャビデオは、コンピュータデスクトップ(711)全体の一連の画像を表すことができる。あるいは、スクリーンキャプチャビデオは、ゲームコンテンツを含むアプリケーションウィンドウ(713)、ウェブページコンテンツを含むブラウザウィンドウ(712)、又はワードプロセッサコンテンツを含むウィンドウ(714)等の、コンピュータデスクトップ環境のウィンドウのうちの1つのウィンドウについての一連の画像を表すことができる。
【0107】
コンピュータにより生成される人工的に作成されるビデオコンテンツであるので、スクリーンキャプチャコンテンツは、ビデオカメラを使用してキャプチャされる自然ビデオコンテンツと比較して、相対的に少ない離散サンプル値を有する傾向にある。例えば、スクリーンキャプチャコンテンツの領域は、しばしば、単一の均一な色を含むのに対し、自然ビデオコンテンツ内の領域は、徐々に変化する色を含む可能性がより高い。また、スクリーンキャプチャコンテンツは、通常、当該コンテンツが空間的に移動され得るとしても、(例えば、スクロールに起因して)フレームからフレームへと正確に繰り返される異なる構造(例えば、グラフィックス、テキスト文字)を含む。スクリーンキャプチャコンテンツは、しばしば、高クロマサンプリング解像度を有するフォーマット(例えば、YUV4:4:4又はRGB4:4:4)で符号化されるが、より低いクロマサンプリング解像度を有するフォーマット(例えば、YUV4:2:0、YUV4:2:2)で符号化されてもよい。
【0108】
図8は、自然ビデオ(821)及び人工的に作成されたビデオコンテンツを含む混合ビデオ(820)を示している。人工的に作成されたビデオコンテンツは、自然ビデオ(821)の横にあるグラフィック(822)及び自然ビデオ(821)の下を横断するティッカー(ticker)(823)を含む。
図7に示されるスクリーンキャプチャコンテンツと同様に、
図8に示される人工的に作成されたビデオコンテンツは、相対的に少ない離散サンプル値を有する傾向にある。この人工的に作成されたビデオコンテンツはまた、(例えば、スクロールに起因して)フレームからフレームへと正確に繰り返される異なる構造(例えば、グラフィックス、テキスト文字)を有する傾向にある。
【0109】
B.適応切り替えの例
色空間の適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色空間で符号化される。例えば、これらのユニットのうちのいくつかは、YUVタイプの色空間(例えば、YCbCr、YCoCg)で符号化され、他のユニットは、RGBタイプの色空間(例えば、RGB、BGR、GBR)で符号化される。この場合、エンコーダ又はデコーダは、適切なときに、サンプル値に対して色空間変換演算を実行して、YUVタイプの色空間とRGBタイプの色空間との間で切り替える。通常、色空間変換演算は、位置ごとに実行される行列乗算演算として表され得、第1の色空間におけるある位置についてのn個のサンプル値が、n×n行列で乗算されて、第2の色空間におけるその位置についてのn個のサンプル値が生成される。実際には、色空間変換演算は、他の算術を用いて実施されてもよい。
【0110】
色空間の適応切り替えの別の例として、異なるユニットは、プライマリ成分と、成分が(例えば、残差データについて)シグナリングされる順番と、の観点で相違する異なるRGBタイプの色空間で符号化され得る。この場合、エンコーダ又はデコーダは、適切なときに、サンプル値のブロック又はプレーンに対して色空間並べ替え演算を実行して、どの色成分がプライマリ色成分であるかを変更する。
【0111】
いくつかの例示的な実装において、非可逆符号化に関して、エンコーダは、異なる色空間のうちの任意の色空間の間で切り替えることができる。しかしながら、可逆符号化に関して、エンコーダは、可逆色空間変換しか実行しない(例えば、RGB色空間とBGR色空間とGBR色空間との間の色成分の並べ替え、又は、いくつかの実装において、増加された中間色深度を用いたYCoCgへ/からの変換)。
【0112】
色サンプリングレートの適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色サンプリングレートで符号化される。例えば、これらのユニットのいくつかは、4:2:2フォーマット又は4:2:0フォーマット(YUV4:2:2又はYUV4:2:0等)で符号化されるのに対し、他のユニットは、4:4:4フォーマット(YUV4:4:4等)で符号化される。RGBタイプの色空間は、通常、4:4:4という色サンプリングレートを有するが、例えば、プライマリ色成分がセカンダリ色成分よりもはるかに支配的である場合、その色成分が、4:2:2又は4:2:0という色サンプリングレートに従って代わりにサブサンプリングされ得る。
【0113】
水平方向又は垂直方向においてセカンダリ成分のサンプル値をダウンサンプリングするとき、エンコーダ又はデコーダは、単純なサブサンプリング、ローパスフィルタリングとサブサンプリング、又は他のフィルタリングとサブサンプリングを実行することができる。セカンダリ成分のサンプル値の対応するアップサンプリングに関して、エンコーダ又はデコーダは、例えば、サンプル値繰り返し(sample values repetition)及び/又はフィルタリングを用いて、サブサンプリングを逆にする。
【0114】
色深度の適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色深度で符号化される。例えば、これらのユニットのいくつかは、12ビットサンプル値で符号化されるのに対し、他のユニットは、10ビットサンプル値又は8ビットサンプル値で符号化される。色深度の間で変換するとき、エンコーダ又はデコーダは、(丸め係数を追加して又は追加しないで)より高い色深度のサンプル値を切り捨てて、より低い色深度のサンプル値を生成することができる、又は、より低い色深度のサンプル値をスケーリングして、より高い色深度のサンプル値を生成することができる。
【0115】
エンコーダは、通常、12ビットサンプル値を有するRGB4:4:4等の所与のフォーマットの入力ビデオを受信する。エンコーダは、ビデオの所与のユニットについて、入力フォーマットと(異なる色空間、異なる色サンプリングレート、及び/又は異なる色深度を有する)別のフォーマットとの間で変換することができる。色空間適応は、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色サンプリングレート適応及び/又は色深度適応と組み合わせて、実行され得る。同様に、色サンプリングレート適応は、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色空間適応及び/又は色深度適応と組み合わせて、実行され得る。色深度適応も、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色空間適応及び/又は色サンプリングレート適応と組み合わせて、実行され得る。
【0116】
図9は、シーケンス(900)内のピクチャについてのピクチャ適応的な(picture-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。シーケンス(900)は、一連のピクチャを含む。必要とされるときに、エンコーダは、入力ビデオフォーマットから、所与のピクチャについて選択されたフォーマットに、入力ビデオを変換する。ピクチャ1のフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、ピクチャ2のフォーマットは、8ビットサンプル値を有するRGB4:4:4である。ピクチャ3及びピクチャ4は、BGR4:4:4ビデオであるが、ピクチャ3のサンプル値とピクチャ4のサンプル値とは、異なる色深度を有する。
【0117】
図10は、シーケンス内のピクチャ(1000)のスライスについてのスライス適応的な(slice-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。ピクチャ(1000)は、5つのスライスを含み、これらのスライスの境界が、破線で示されている。例えば、スライス0、スライス1、スライス3、及びスライス4は、スクリーンキャプチャコンテンツ又は他の人工的に作成されたビデオコンテンツに関連付けられたものであり得るのに対し、スライス2は、自然ビデオコンテンツに関連付けられている。スライス0及びスライス3のフォーマットは、10ビットサンプル値を有するBGR4:4:4である。スライス1は、GBR4:4:4ビデオの12ビットサンプル値を含む。スライス2のフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、スライス4のフォーマットは、8ビットサンプル値を有するRGB4:4:4である。
【0118】
図11は、シーケンス内のピクチャのスライス(1100)のブロックについてのブロック適応的な(block-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。スライス(1100)は、3つの異なるブロックサイズを有する16個のブロックを含む。最初の2つのブロックのフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、最後のブロックのフォーマットは、10ビットサンプル値を有するYCbCr4:2:0である。ブロック2〜ブロック15は、RGBタイプの色空間における4:4:4というサンプリングレートの12ビットサンプル値を含む。ブロック2〜ブロック15についての色空間は、RGBとBGRとGBRとの間で変化する。
【0119】
C.色空間を切り替えるときの量子化/スケーリング及び逆量子化/スケーリングの調整−序論
エンコーダが、ビデオのユニットの間で色空間を適応的に切り替えるとき、エンコーダは、量子化及び/又はスケーリングを調整することができる。対応するデコーダは、ビデオのユニットの間で色空間を切り替えるとき、逆量子化及び/又は逆スケーリングを調整することができる。例えば、エンコーダ及びデコーダは、色空間切り替えが生じるとき、異なる色成分について異なる量子化ステップサイズを使用することができる。符号化中の量子化/スケーリングの調整及び対応する復号中の逆量子化/スケーリングの調整は、色空間の間で切り替えるときの符号化効率を向上させることができる。
【0120】
RGB色空間とYCoCg色空間との間のブロックごとの適応切り替えの例について検討する。一般に、エンコーダ又はデコーダは、以下の演算に示されるように、RGB色空間からYCoCg色空間にサンプル値を変換することができる。
【数1】
YCoCg色空間における出力サンプル値のダイナミックレンジは、オフセットを加算することにより調整され得る。例えば、RGB色空間におけるある位置についてのサンプル値がそれぞれ、
Ps
R、Ps
G、及びPs
B
であり、現色深度が、
bit_depth
current
であると仮定する。最小サンプル値は、0であり、最大サンプル値は、
(1<<bit_depth
current)-1
(例えば、8ビットサンプル値については255)である。Co及びCgのダイナミックレンジを調整するために、項
add_value
が、
1<<(bit_depth
current-1)
(例えば、8ビットサンプル値については128、出力値を0...255のレンジ内に保つため)として定義される。YCoCg空間におけるその位置についてのサンプル値
Ps
Y、Ps
Co、及びPs
Cg
は、
Ps
Y=(Ps
R+(2*Ps
G)+Ps
B)>>2
Ps
Co=((Ps
R-Ps
B)>>1)+add_value
Ps
Cg=(((2*Ps
G)-Ps
R-Ps
B)>>2)+add_value
により算出され得る。サンプル値
Ps
Y、Ps
Co、及びPs
Cg
は、最小サンプル値と最大サンプル値とによって規定されるレンジ内にクリップされ得る。
【0121】
一般に、エンコーダ又はデコーダは、以下の演算に示されるように、YCoCg色空間からRGB色空間に戻すようにサンプル値を変換することができる。
【数2】
オフセットが、YCoCg色空間におけるサンプル値に加算されていた場合、そのオフセットが最初に減算される。例えば、YCoCg色空間におけるある位置についてのサンプル値がそれぞれ、
Rs
Y、Rs
Co、及びRs
Cg
であり、現色深度が、
bit_depth
current
であると仮定する。ダイナミックレンジを調整するために、項
add_value
が、
1<<(bit_depth
current-1)
(例えば、8ビットサンプル値については128、0...255のレンジ内)として定義される。RGB色空間におけるその位置についてのサンプル値
Rs
R、Rs
G、及びRs
B
は、
Rs
Co-=add_value
Rs
Cg-=add_value
Rs
R=Rs
Y+Rs
Co-Rs
Cg
Rs
G=Rs
Y+Rs
Cg
Rs
B=Rs
Y-Rs
Co-Rs
Cg
により算出され得る。サンプル値
Rs
R、Rs
G、及びRs
B
は、最小サンプル値と最大サンプル値とにより規定されるレンジ内にクリップされ得る。
【0122】
逆色空間変換行列に従うと、Y成分のサンプル値は、Rサンプル値、Gサンプル値、及びBサンプル値に対する影響を有することになる。逆色空間変換を通じたY成分についての総エネルギー寄与は、(1)
2+(1)
2+(1)
2=3である。Co成分のサンプル値は、Rサンプル値及びBサンプル値に対する影響を有することになり、逆色空間変換を通じたCo成分についての総エネルギー寄与は、(1)
2+(0)
2+(−1)
2=2である。同様に、Cg成分のサンプル値は、Rサンプル値、Gサンプル値、及びBサンプル値に対する影響を有することになり、逆色空間変換を通じたCg成分についての総エネルギー寄与は、(−1)
2+(1)
2+(−1)
2=3である。したがって、Y成分、Co成分、及びCg成分についてのエネルギー寄与の比は、3:2:3である。
【0123】
このエネルギー比に起因して、Y成分、Co成分、及びCg成分における量子化誤差のエネルギーは、逆色空間変換演算により増幅されることになる。スライス内又はピクチャ内のブロックが、同じQP値を有する場合、YCoCg空間で符号化されたブロックが、RGB空間に戻すように変換されたとき、(YCoCgドメインで符号化され次いでRGBドメインに戻すように変換された)これらのブロックについての量子化誤差のエネルギーは、RGB色空間で符号化されたブロックについての量子化誤差のエネルギーに対して、増幅されることになる。YCoCg符号化ブロックとRGB符号化ブロックとの間で量子化誤差の同等なレベルのエネルギーを有するために、エンコーダ及びデコーダは、RGB符号化ブロックに適用されるQP値又はスケーリングに対して、YCoCg符号化ブロックに適用されるQP値又はスケーリングを調整することができる。
【0124】
例えば、ピクチャ又はスライスのRGB符号化ブロックのR成分、G成分、及びB成分について使用されるQP値が、QP_RGBであると仮定する。そのピクチャ又はスライスのYCoCg符号化ブロックのY成分については、QP値はQP_Yである。所与の値のQP_RGBについて、量子化ステップサイズQSSは、
QSS=2
(QP_RGB-4)/6
により与えられる。QP_RGBが1だけ増加する又は1だけ減少すると、量子化ステップサイズは、2
1/6という係数分だけ増加又は減少する。所与のQP値についての量子化誤差のエネルギーは、概して、QSS
2の線形関数として測定され得る。したがって、QP_RGBについて、量子化誤差のエネルギーは、
(2
(QP_RGB-4)/6)
2=2
(QP_RGB-4)/3
として測定され得る。(a)RGBドメインで符号化されたブロックと(b)YCoCgドメインで符号化され次いでRGBドメインに戻すように変換されたブロックとの間で量子化誤差の同等なレベルのエネルギーを有するために、QP_Yの値が、QP_RGBの値に対して調整される。逆色空間変換を通じたY成分からのエネルギー寄与が、(1)
2+(1)
2+(1)
2=3であるので、この調整は、始めに、YCoCgブロックについての量子化誤差の増幅されたエネルギーと等しい、RGB符号化ブロックについての量子化誤差のエネルギーを設定することにより、以下の式に従って算出される。
2
(QP_RGB-4)/3=3*2
(QP_Y-4)/3
log
2(2
(QP_RGB-4)/3)=log
2(3)+log
2(2
(QP_Y-4)/3)
(QP_RGB-4)/3=log
2(3)+(QP_Y-4)/3
QP_Y=QP_RGB-3*log
2(3)=QP_RGB-4.755≒QP_RGB-5
したがって、QP_Yの値が、QP_RGB-5の値として近似され得る。同様に、QP_Co及びQP_Cgの値が、QP_RGBの値に対して調整される。逆色空間変換を通じたCo成分からのエネルギー寄与が、(1)
2+(0)
2+(−1)
2=2であるので、QP_Coの値は、
QP_RGB-3*log
2(2)=QP_RGB-3
の値である。QP_Yの値と同様、QP_Cgの値が、
QP_RGB-3*log
2(3)=QP_RGB-4.755≒QP_RGB-5
として近似され得る。したがって、Y成分、Co成分、及びCg成分をRGBドメインに戻す変換を行うときの3:2:3というエネルギー比を補償するために、Y成分、Co成分、及びCg成分について使用されるQP値は、R成分、G成分、及びB成分について使用されるQP値に対して、おおよそ−5、−3、及び−5である。例えば、QP_RGBが16である場合、
QP_Y=QP_Cg=11
であり、
QP_Co=13
である。あるいは、QP_RGBが28である場合、
QP_Y=QP_Cg=23
であり、
QP_Co=25
である。
【0125】
QP値に対する−5という調整は、2
5/6=1.78という係数分のスケーリングに対応する。QP値に対する−3という調整は、2
3/6=1.41という係数分のスケーリングに対応する。
【0126】
ピクチャ又はスライスのRGB符号化ブロックのR成分、G成分、及びB成分のQP値が異なる場合、Y成分、Co成分、及びCg成分のQP値又はスケーリング係数に対する調整は、次のように算出され得る。R成分、G成分、及びB成分のQP値が、Y成分、Co成分、及びCg成分に割り当てられ、次いで、逆色空間変換演算におけるY色成分、Co色成分、及びCg色成分についてのエネルギー増幅に基づくQP値調整係数分だけ調整される。例えば、QP_Rが19であり、QP_Gが28であり、QP_Bが33であると仮定する。この場合、エンコーダ及びデコーダは、これらのQP値を、第1の色成分、第2の色成分、及び第3の色成分に同じ順番で割り当て、次いで、以下のようにQP値調整を適用することができる:
QP_Y=19-5=14、
QP_Co=28-3=25、及び
QP_Cg=33-5=28
あるいは、エンコーダ及びデコーダは、例えば以下のように、上記のQP値を、第1の色成分、第2の色成分、及び第3の色成分に異なる順番で割り当て、次いで、QP値調整を適用することができる:
QP_Y=28-5=23、
QP_Co=33-3=30、及び
QP_Cg=19-5=14
あるいは、QP値調整は、第1の色空間における第1の色成分について使用されるQP値のみに依拠することもある。あるいは、QP値調整は、第1の色空間における色成分群について使用される最小QP値のみに依拠することもある。いずれにせよ、(色空間変換のない)RGB符号化ブロックについての量子化誤差のエネルギーは、RGB色空間に戻すように変換されたときのYCoCg符号化ブロックについての量子化誤差のエネルギーとおおよそ同等である。
【0127】
上述したように、量子化誤差は、概して、(QSS
2の線形関数として量子化誤差を測定する)QP値の関数としてモデル化され得る。詳細には、この関係は、より小さなQP値(及びQSS)について保たれる。しかしながら、この関係は、より高いQP値については正確でないことがある。したがって、いくつかの例示的な実装において、エンコーダ又はデコーダは、第1の色空間の色成分の1以上のQP値に応じて、第2の色空間の色成分について異なるQP値調整を用いることができる。例えば、エンコーダ/デコーダは、ルックアップテーブル又は他の構造体を使用して、第1の色空間について使用されるQP値に応じて、第2の色空間の色成分についてのQP値調整を決定することができる。ここで、ルックアップテーブル又は他の構造体は、(第2の色空間の色成分についての)異なるQP値調整を、第1の色空間について使用される異なるQP値に関連付けるものである。ルックアップテーブル又は他の構造体は、色空間の特定のペア(第1の色空間,第2の色空間)についての値を含み得る。例えば、ルックアップテーブルQPAdjustOffsetは、以下のように、第2の色空間の色成分(component_ID)及び第1の色空間におけるQP値(QP_CS1)により編成され得る。
QPAdjustOffset[component_ID][QP_CS1]
第2の色空間の所与の色成分component_IDについて、ルックアップテーブルは、第1の色空間において使用される異なるQP値QP_CS1についてのQP値調整を含む。第1の色空間において使用される所与のQP値QP_CS1及び第2の色空間の所与の色成分component_IDについて、エンコーダ/デコーダは、第2の色空間のその色成分component_IDについて使用するQP値調整を決定することができる。
【0128】
エンコーダ及びデコーダは、さらに、第1の色空間の第1の色成分、第2の色成分、及び第3の色成分から始めてQP値調整を適用することで、第2の色空間の色成分のQP値を調整することができる。例えば、エンコーダは、第2の色空間の色成分のうちの1つの色成分のQP値を増加させ(これは、量子化誤差の増幅されるエネルギーを増加させる)、次いで、この増加を補償するために、第2の色空間の別の色成分のQP値を減少させる。あるいは、エンコーダは、第2の色空間の色成分のうちの1つの色成分のQP値を減少させ(これは、量子化誤差の増幅されるエネルギーを減少させる)、次いで、この減少を補償するために、第2の色空間の別の色成分のQP値を減少させる。例えば、エンコーダは、
QP_Y=23、
QP_Co=30、及び
QP_Cg=14
から始めて、量子化誤差のエネルギー全体を著しく変えることなく、QP_Yを18に減少させ、QP_Cgを22に増加させることができる。((QP_Yを23から18に変更することによる)おおよそ166という、量子化誤差のエネルギーの減少は、(QP_Cgを14から22に変更することによる)おおよそ162という、量子化誤差のエネルギーの増加により相殺される。)
【0129】
同様に、エンコーダ及びデコーダは、符号化中又は復号中に他の色空間の間で切り替えるときに、逆色空間変換演算における第2の色空間のそれぞれの色成分についてのエネルギー増幅に応じて、色成分ごとの色空間調整を決定することができる。一般に、第1の色空間から第2の色空間への変換のための色空間変換行列CC_matrix
1_to_2は、
【数3】
として定義され得る。
出力のダイナミックレンジを調整するために、オフセットCC_offsets
1_to_2の行列が使用され得る。オフセットCC_offsets
1_to_2は、
【数4】
として定義され得る。
第1の色空間におけるある位置についてのサンプル値が、
Ps
CC1=[Ps
00, Ps
01, Ps
02]
T
であると仮定する。第2の色空間におけるその位置についてのサンプル値Ps
CC2は、
Ps
CC2=CC_matrix
1_to_2*Ps
CC1+CC_offsets
1_to_2
として算出され得る。
サンプル値Ps
CC2は、適切なレンジにクリップされる。
【0130】
第2の色空間から第1の色空間に戻す変換のための色空間変換行列CC_matrix
2_to_1は、
【数5】
として定義され得る。
出力のダイナミックレンジを調整するために、オフセットCC_offsets
2_to_1の行列が使用され得る。オフセットCC_offsets
2_to_1は、
【数6】
として定義され得る。
第2の色空間におけるある位置についてのサンプル値が、
Rs
CC2=[Rs
00, Rs
01, Rs
02]
T
であると仮定する。第1の色空間におけるその位置についてのサンプル値Rs
CC1は、
Rs
CC1=CC_matrix
2_to_1*(Rs
CC2+CC_offsets
2_to_1)
として算出され得る。
サンプル値Rs
CC1は、適切なレンジにクリップされる。
【0131】
成分ごとの色変換調整係数は、逆色空間変換演算における第2の色空間のそれぞれの色成分についてのエネルギー増幅(エネルギー比)に基づいて決定され得る。例えば、逆色空間変換における第1の成分についての総エネルギー寄与は、
cs2to1_0
contribution=(c'
00)
2+(c'
10)
2+(c'
20)
2
である。第2の成分についての総エネルギー寄与は、
cs2to1_1
contribution=(c'
01)
2+(c'
11)
2+(c'
21)
2
であり、逆色空間変換を通じた第3の成分についての総エネルギー寄与は、
cs2to1_2
contribution=(c'
02)
2+(c'
12)
2+(c'
22)
2
である。エンコーダ及びデコーダは、これらのエネルギー寄与から、第1の色空間のQP値QP_CS1に対する、第2の色空間のそれぞれの成分のQP値又はスケーリング係数に対する調整を決定することができる。第2の色空間の第1の成分のQP値QP_CS2_0は、
QP_CS2_0=QP_CS1-3*log
2(cs2to1_0
contribution)
として決定され得る。ここで、
-3*log
2(cs2to1_0
contribution)
が、QP値調整を示す。第2の色空間の第2の色成分及び第3の色成分のQP値QP_CS2_1及びQP値QP_CS2_2も同様に、cs2to1_1
contribution及びcs2to1_2
contributionを使用して決定され得る。代替的に、QP値調整に対応するスケーリング係数が算出されてもよい。
【0132】
第1の色空間の色成分のQP値が、異なる値(例えば、QP_CS1_R、QP_CS1_G、及びQP_CS1_B)を有する場合、第2の色空間の色成分のQP値は、上述したように、第1の色空間の色成分のQP値から始めてQP値調整を適用することで、割り当てられ得る。これらのQP値が割り当てられ調整された後、量子化誤差のエネルギーのレベルをおおよそ同一に保ちながら、第2の色空間の色成分のQP値が、上述したように増加又は減少され得る。
【0133】
いくつかの例示的な実装において(セクションVII.Dを参照されたい)、エンコーダは、ビットストリームに含められてシグナリングされるシンタックス要素を使用して、第2の色空間の色成分にQP値を割り当て、デコーダは、シグナリングされたシンタックス要素に従って、第2の色空間の色成分にQP値を割り当てる。これらの実装において、エンコーダは、最高のエネルギー又は情報コンテンツを有する、第2の色空間の色成分に、より低いQP値を割り当て、他の色成分により高いQP値を割り当てる、あるいは、エンコーダが適切であるとみなしたQP値を割り当てる柔軟性を有する。他の例示的な実装において(セクションVII.Eを参照されたい)、エンコーダ及びデコーダは、ルールに従って、色成分に、変更されたQP値を割り当てる。例えば、エンコーダ及びデコーダは、第1の色空間の色成分のQP値の順番で、第2の色空間の色成分に、変更されたQP値を割り当てる。あるいは、エンコーダ及びデコーダは、第2の色空間の第1の色成分(例えば、最高のエネルギー又は情報コンテンツを有することが予期される色成分)に、もしあれば、最低のQP値を割り当て、第2の色空間の他の色成分に、他のQP値を割り当てる。
【0134】
D.成分ごとの色空間調整係数についてのQP値を示すシンタックス要素の例
逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、エンコーダ及びデコーダは、第2の色空間における色成分について異なるQP値を使用することができる。エンコーダは、セクションVII.Cで説明したアプローチのうちのいずれかを使用して、第2の色空間の色成分のQP値を決定して割り当てることができる。QP値が割り当てられると、エンコーダは、ビットストリームに含められるシンタックス要素を使用して、これらのQP値をシグナリングすることができる。このセクションは、第2の色空間における色成分のQP値を示すシンタックス要素をシグナリングする様々な方法を示している。
【0135】
一般に、第2の色空間における色成分のQP値は、第1の色空間における対応する色成分についてのQP値に対する差分として(オフセットとして)シグナリングされ得る。あるいは、第2の色空間における第2の色成分及び第3の色成分のQP値は、第2の色空間における第1の色成分のQP値に対する差分として(オフセットとして)シグナリングされ得、第2の色空間における第1の色成分のQP値自体は、第1の色空間のQP値に対する差分としてシグナリングされ得る。あるいは、第2の色空間における色成分のQP値は、何らかの他の方法でシグナリングされ得る。
【0136】
例えば、第1の色空間及び第2の色空間のQP値は、スライスレベルで(例えば、スライスヘッダに含められて)シグナリングされ得る。いくつかのH.265/HEVCの実装において(JCTVC−P1003を参照されたい)、シンタックス要素slice_qp_deltaが、スライスヘッダに含められてシグナリングされ、このシンタックス要素は、スライスを含むピクチャの初期QP値に対する、スライスのQP値についてのオフセットを示す。
【0137】
スライスQPオフセットについての1つのシンタックス要素を使用する代わりに、2つの異なるシンタックス要素がそれぞれ、第1の色空間についてのスライスQPオフセット、及び、第2の色空間についてのスライスQPオフセットを示してもよい。例えば、第1の色空間がスライス内で使用されるときには、slice_qp_deltaが、スライスについてのQPオフセットを示してよく、第2の色空間がスライス内で使用されるときには、slice_qp_delta_cs2がスライスについてのQPオフセットを示してよい。シンタックス要素slice_qp_delta_cs2は、少なくとも2つの色空間が使用されるときに、条件付きでシグナリングされ得る。シンタックス要素slice_qp_delta_cs2は、第1の色空間についてのスライスのQP値に対する差を示すことができる。すなわち、第1の色空間についてのスライスのQP値は、
26+init_qp_minus_26+slice_qp_delta
であり、第2の色空間についてのスライスのQP値は、
26+init_qp_minus_26+slice_qp_delta+slice_qp_delta_cs2
である。代替的に、シンタックス要素slice_qp_delta_cs2は、ピクチャの初期QP値に対する差を示してもよい。すなわち、第2の色空間が使用されるときのスライスのQP値は、
26+init_qp_minus_26+slice_qp_delta_cs2
である。
【0138】
あるいは、スライスヘッダに含められる2つのQP値をシグナリングする代わりに、第2の色空間のQP値は、ピクチャレベルで(例えば、PPSに含められて)シグナリングされ得る。いくつかのH.265/HEVCの実装において、シンタックス要素init_qp_minus_26が、PPSに含められてシグナリングされ、このシンタックス要素は、ピクチャの初期QP値を示す。PPSに含められる別のシンタックス要素init_qp_diff_cs2は、第1の色空間についてのピクチャの初期QP値(init_qp_minus_26により示される)に対する、第2の色空間についてのピクチャ(又は、第2の色空間の第1の色成分)の初期QP値を示すことができる。すなわち、第2の色空間についてのピクチャのQP値は、
26+init_qp_minus_26+init_qp_diff_cs2
である。代替的に、PPSに含められるシンタックス要素init_qp_minus_26_cs2が、第2の色空間についてのピクチャ(又は、第2の色空間の第1の色成分)の初期QP値を直接的に示してもよい。いずれの場合でも、第1の色空間及び第2の色空間についてのスライスのQP値は、スライスQPオフセットを使用して導出され得る。例えば、第1の色空間についてのスライスのQP値は、第1の色空間についてのピクチャの初期QP値プラス slice_qp_deltaであり、第2の色空間についてのスライスのQP値は、第2の色空間についてのピクチャの初期QP値プラスslice_qp_deltaである。
【0139】
(スライス又はピクチャについて)各色空間について1つのQP値をシグナリングする代わりに、異なるQP値が、第2の色空間における異なる色成分についてシグナリングされ得る。例えば、ピクチャレベルで(例えば、PPSに含められて)、第2の色空間についてのピクチャの第2の色成分及び第3の色成分についてのオフセットが、ピクチャについての第1の色空間における対応する色成分のQP値に対するオフセットとしてシグナリングされ得る。いくつかのH.265/HEVCの実装において、シンタックス要素pps_cb_qp_offset及びシンタックス要素pps_cr_qp_offsetが、ピクチャ(第1の色空間の第1の色成分)の初期QP値に対する、第1の色空間(YCbCr又は別の色空間)の第2の色成分及び第3の色成分についてのオフセットを示す。2つのさらなるシンタックス要素pps_cb_qp_offset_cs2及びpps_cr_qp_offset_cs2はそれぞれ、第1の色空間の第2の色成分及び第3の色成分のQP値に対する、第2の色空間(YCbCr又は別の色空間)の第2の色成分及び第3の色成分についてのオフセットを示すことができる。あるいは、第2の色空間の第2の色成分及び第3の色成分についてのオフセットは、第2の色空間についてのピクチャの初期QP値に対するオフセットとしてシグナリングされ得る。例えば、シンタックス要素pps_cb_qp_offset_cs2及びシンタックス要素pps_cr_qp_offset_cs2は、第2の色空間についてのピクチャ(及び第1の色成分)のQP値に対する、第2の色空間の第2の色成分及び第3の色成分についてのオフセットを示すことができる。
【0140】
あるいは、スライスレベルで(例えば、スライスヘッダに含められて)、第2の色空間についてのスライスの第2の色成分及び第3の色成分についてのオフセットが、スライスについての第1の色空間における対応する色成分のQP値に対するオフセットとしてシグナリングされ得る。いくつかのH.265/HEVCの実装において、シンタックス要素slice_cb_qp_offset及びシンタックス要素slice_cr_qp_offsetが、スライス(第1の色空間の第1の色成分)のQP値に対する、第1の色空間(YCbCr又は別の色空間)の第2の色成分及び第3の色成分についてのオフセットを示す。2つのさらなるシンタックス要素slice_cb_qp_offset_cs2及びslice_cr_qp_offset_cs2はそれぞれ、第1の色空間の第2の色成分及び第3の色成分のQP値に対する、第2の色空間(YCbCr又は別の色空間)の第2の色成分及び第3の色成分についてのオフセットを示すことができる。あるいは、第2の色空間についてのスライスの第2の色成分及び第3の色成分についてのオフセットは、第2の色空間についてのスライスの第1の色成分のQP値に対するオフセットとしてシグナリングされ得る。例えば、シンタックス要素slice_cb_qp_offset_cs2及びシンタックス要素slice_cr_qp_offset_cs2は、第2の色空間についてのスライスの第1の色成分のQP値に対する、第2の色空間の第2の色成分及び第3の色成分についてのオフセットを示すことができる。
【0141】
このように、QP値は、第1の色空間及び第2の色空間についてのピクチャ又はスライスについてシグナリングされる。エンコーダ又はデコーダが、ユニットの間で(例えば、ピクチャのブロック又はスライスの間で、若しくは、スライスのブロックの間で)、色空間を切り替えるとき、エンコーダ又はデコーダは、適用すべき適切なQP値を有する。代替的に、第2の色空間の色成分のQP値を示すシンタックス要素が、何らかの他の方法でシグナリングされる。
【0142】
E.成分ごとの色空間調整係数についてのQP値の導出ルールの例
第2の色空間における色成分について異なるQP値をシグナリングする代わりに、エンコーダ及びデコーダは、第1の色空間における色成分のQP値から始めて、第2の色空間のアイデンティティに応じて、ルールに従って、QP値を導出することができる。このようにして、エンコーダ及びデコーダは、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、符号化中及び復号中に使用されるQP値を変更することができる。セクションVII.Cが、第2の色空間から第1の色空間に戻す変換を行うときに使用される逆色空間変換演算に応じて、QP値調整を決定する方法を示している。これらのアプローチのうちの1つのアプローチが、第2の色空間の色成分についてのQP値調整を示すシンタックス要素をシグナリングすることなく、エンコーダ及びデコーダにより自動的に適用され得る。
【0143】
エンコーダ及びデコーダは、第1の色空間の色成分のQP値が別途決定された後、第1の色空間の色成分の最終QP値を変更することができる。例えば、YCoCg色空間で符号化されたブロックについて、エンコーダ及びデコーダは、Y成分、Co成分、及びCg成分のそれぞれのQP値について、−5、−3、及び−5だけ、RGB符号化ブロックについて使用される最終QP値QP_RGBを調整することができる。(−5、−3、及び−5という調整係数の導出は、上述したとおりである。)いくつかのH.265/HEVCの実装において、変数Qp’Y、変数Qp’Cb、及び変数Qp’Cr(変数名は変わり得る)は、YCbCr、RGB、又は別の第1の色空間の第1の色成分、第2の色成分、及び第3の色成分の最終QP値を示す。YCoCg色空間が符号化のために使用される場合、Y色成分、Co色成分、及びCg色成分のQP値を決定するために、最終QP値Qp’Y、最終QP値Qp’Cb、及び最終QP値Qp’Crが、以下のように調整される:
Qp’Y-=5、
Qp’Cb-=3、及び
Qp’Cr-=5
−5、−3、及び−5という色成分ごとの色空間調整は、導出ルールの一部である。調整されたQP値は、最小の許容されるQP値においてクリップされ得る。
【0144】
別の第2の色空間について、同様に、最終QP値Qp’Y、最終QP値Qp’Cb、及び最終QP値Qp’Crに対する調整が、逆色空間変換演算におけるその第2の色空間のそれぞれの色成分についてのエネルギー増幅に応じて変更され得る。
【0145】
あるいは、第1の色空間の色成分の最終QP値を変更する代わりに、エンコーダ及びデコーダは、第1の色空間の色成分のうちの少なくとも一部の色成分の中間QP値を変更することができる。例えば、YCoCg色空間で符号化されたブロックについて、エンコーダ及びデコーダは、Co成分及びCg成分のそれぞれの中間QP値を調整することができる。いくつかのH.265/HEVCの実装において、変数qPiCb及び変数qPiCr(変数名は変わり得る)は、YCbCr、RGB、又は別の第1の色空間の第2の色成分及び第3の色成分の中間QP値を示し、変数QpYは、第1の色空間の第1の色成分の中間QP値を示す。YCoCg色空間が符号化のために使用される場合、Y色成分、Co色成分、及びCg色成分のQP値を決定するために、最終QP値Qp’Y、並びに中間QP値qPiCb及び中間QP値qPiCrが、以下のように決定される:
Qp’Y=QpY+QpBdOffsetY-5
qPiCb=Clip3(-QpBdOffsetC, 57, QpY-3 +pps_cb_qp_offset+slice_cb_qp_offset)
qPiCr=Clip3(-QpBdOffsetC, 57, QpY-5 +pps_cr_qp_offset+slice_cr_qp_offset)
これらの式では、色成分ごとの色変換調整を示すシンタックス要素ではなく、第1の色空間の色成分のQP値を示すシンタックス要素(例えば、pps_cb_qp_offset、slice_cb_qp_offset、pps_cr_qp_offset、及びslice_cr_qp_offset)が使用される。代わりに、−5、−3、及び−5という色成分ごとの色空間調整は、導出ルールの一部である。調整されたQP値は、最小の許容されるQP値においてクリップされ得る。
【0146】
別の第2の色空間について、同様に、中間QP値に対する調整が、逆色空間変換演算におけるその第2の色空間のそれぞれの色成分についてのエネルギー増幅に応じて変更され得る。
【0147】
ルールにより、エンコーダ及びデコーダは、第1の色空間の色成分のQP値の順番で、第2の色空間の色成分に、変更されたQP値を割り当てることができる。あるいは、ルールにより、エンコーダ及びデコーダは、第2の色空間の第1の色成分(例えば、最高のエネルギー又は情報コンテンツを有することが予期される色成分)に、もしあれば、最低の変更されたQP値を割り当て、第2の色空間の他の色成分に、他の変更されたQP値を割り当てることができる。
【0148】
F.成分ごとの色変換調整係数についてのスケーリング係数の例
逆色空間変換演算における量子化誤差の増幅を補償するためにQP値を変更する代わりに、エンコーダ及びデコーダは、変換係数をスケーリングするプロセスを変更することができる。
【0149】
例えば、変換係数に適用されることになるスケーリング係数のリストが変更され得る。周波数固有のスケーリング係数m[x][y]を決定した後、第2の色空間が使用される場合、m[x][y]が、スケーリングされている変換係数を有する色成分に応じて変更され得る。変数cIdxは、色成分のインデックスを示す。第1の色空間がRGBであり、第2の色空間がYCoCgである場合、例えば、m[x][y]は、Y成分、Co成分、及びCg成分のそれぞれについて、1.78、1.41、及び1.78という成分固有のスケーリング係数の分だけ変更され得る。1.78、1.41、及び1.78という成分固有のスケーリング係数はそれぞれ、2
5/6、2
3/6、及び2
5/6というQSS変化に対応し、−5、−3、及び−5というQP値調整におおよそ対応する。cIdxが0又は2である場合、
m[x][y]*=1.78
である。そうではなく、cIdxが1である場合、
m[x][y]*=1.41
である。代替的に、浮動小数点演算を使用する代わりに、m[x][y]は、整数演算を使用して変更されてもよい。
【0150】
別の第2の色空間について、成分固有のスケーリング係数が、逆色空間変換演算におけるその第2の色空間のそれぞれの色成分についてのエネルギー増幅に応じて変更される。
【0151】
あるいは、m[x][y]を変更することなく、エンコーダ及びデコーダは、スケーリング演算を実行するときに、第2の色空間の異なる色成分について、成分固有のスケーリング係数を別個に考慮することができる。例えば、配列factor[cIdx]は、第2の色空間の色成分についての成分固有のスケーリング係数を格納する。第2の色空間がYCoCgである場合、例えば、factor[cIdx]は、{1.78,1.41,1.78}である。別の第2の色空間について、成分固有のスケーリング係数が、逆色空間変換演算におけるその第2の色空間のそれぞれの色成分についてのエネルギー増幅に応じて変更される。配列TransCoeffLevel内の変換係数は、以下のように逆量子化及び逆スケーリングされる。
d[x][y]=Clip3(-32768, 32767, ((TransCoeffLevel[xTbY][yTbY][cIdx][x][y]*m[x][y]
*factor[cIdx]*levelScale[qP%6]<<(qP/6))+(1<<(bdShift-1)))>>bdShift)
【0152】
あるいは、エンコーダ及びデコーダは、整数のみの演算を使用して、スケーリング演算を実行することができ、ここで、factor1[cIdx]及びfactor2[cIdx]は、factor1[cIdx]/factor2[cIdx]がfactor[cIdx]を近似するように規定された整数値を含む。
d[x][y]=Clip3(-32768, 32767, ((TransCoeffLevel[xTbY][yTbY][cIdx][x][y]*m[x][y]
*factor1[cIdx]/factor2[cIdx]*levelScale[qP%6]<<(qP/6))+(1<<(bdShift-1)))>>bdShift)
【0153】
第2の色空間の色成分についての成分固有のスケーリング係数は、ビットストリームに含められてシグナリングされ得る、あるいは、エンコーダ及びデコーダにおいて、再構成ルールを使用して導出され得る。
【0154】
代替的に、エンコーダ及びデコーダは、異なる色空間について、又は、異なる色空間の異なる色成分について、異なる、周波数固有のスケーリング係数m[x][y]及びm_cs2[x][y]を使用してもよい。異なる色空間/色成分についての周波数固有のスケーリング係数は、ビットストリームに含められてシグナリングされ得る、あるいは、エンコーダ及びデコーダにおいて、再構成ルールを使用して導出され得る。
【0155】
G.さらなるエンコーダ側の変更の例
量子化又はスケーリングに対する変更とは別に、エンコーダ側の決定プロセスは、QP値又はスケーリングに対する調整を反映するように変更され得る。エンコーダは、異なる色空間の異なる色成分について使用されるQP値をマッチさせるように、レート歪み最適化量子化(「RDOQ」)において使用されるラグランジュ乗数λを変更することができる。例えば、QP値が1だけ増加する場合、関連するラグランジュ乗数は、2
1/3の分だけ増加される。すなわち、RDOQについて、
λ=λ*2
1/3
である。QP値が何らかの他の量だけ変化する場合、ラグランジュ乗数は、それに応じて増加又は減少される。したがって、Y成分、Co成分、及びCg成分のQP値が、R成分、G成分、及びB成分のQP値を−5、−3、及び−5だけ調整することにより決定された場合、RDOQについての対応するラグランジュ乗数はそれぞれ、
λ_Y=λ_RGB*2
-5/3、
λ_Co=λ_RGB*2
-3/3、及び
λ_Cg=λ_RGB*2
-5/3
に設定される。ここで、λ_RGBは、RGB色空間におけるRDOQについてのラグランジュ乗数である。
【0156】
代替的に、エンコーダは、QP値を変更することなく、第2の色空間におけるRDOQについてのラグランジュ乗数を変更してもよい。
【0157】
別の第2の色空間について、同様に、RDOQについてのラグランジュ乗数は、QP値又はスケーリングに対してなされる調整に応じて変更され得る。
【0158】
RDOQとは別に、別のレート歪み決定プロセスについてのラグランジュ乗数λが、QP値又はスケーリングに対してなされる調整に応じて変更され得る。例えば、第2の色空間における符号化のために符号化モード又は符号化オプション(例えば、イントラ予測方向)の間で決定するときにレート歪み分析において使用されるλ値が、第1の色空間と第2の色空間との間のQP値の差に応じて変更され得る。エンコーダは、第2の色空間についての変更されたλ値により重み付けされるレート歪みコストに応じて、最良のモード又はオプションを選択することができる。
【0159】
H.エンコーダ側の変更のみを伴う代替アプローチ
代替的に、エンコーダは、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、ユニットごとにQP値を調整してもよい。エンコーダは、それぞれのユニットのQP値を指定するための既存のシンタックス要素を使用して、ユニットごとにQP値を設定する。デコーダは、QP値に対する色空間調整を行うことなく、シグナリングされたシンタックス要素から、ユニットごとに、それぞれのユニットのQP値を決定する。例えば、第1の色空間(例えばRGB)で符号化される第1のユニットについて、エンコーダは、QP値の第1のセットを使用し、第1のユニットのQP値の第1のセットを示すシンタックス要素をシグナリングする。次いで、第2の色空間(例えばYCoCg)で符号化される第2のユニットについて、エンコーダは、QP値の第2のセットを使用し、第2のユニットのQP値の第2のセットを示すシンタックス要素をシグナリングする。QP値の第2のセットは、逆色空間変換演算における量子化誤差のエネルギーの増幅を補償するために、上述したように決定され得る。例えば、第2のユニットのQP値は、Y成分、Co成分、及びCg成分のそれぞれについて、−5、−3、及び−5という係数の分だけ調整される。別の第2の色空間について、QP値に対してなされる調整が、これに応じて変更される。
【0160】
色空間切り替えがCUごとに生じ得るときには、QP値に対する調整は、CUごとにシグナリングされ得る。いくつかのH.265/HEVCの実装において、QP値についてのオフセットは、異なるCUについてTUレベルシンタックスの一部としてシグナリングされる。例えば、シンタックス要素cu_qp_delta_abs及びシンタックス要素cu_qp_delta_sign_flagを使用して、RGB等の第1の色空間で符号化された第1のCUについての第1のQPオフセットを示すことができ、その後に、シンタックス要素cu_qp_delta_abs及びシンタックス要素cu_qp_delta_sign_flagを使用して、YCoCg等の第2の色空間で符号化された第2のCUについての第2のQPオフセットを示すことができる。第2の色空間における色成分ごとのQP値は、第2の色成分及び第3の色成分についての他のQPオフセット値を使用して決定され得る。
【0161】
あるいは、色空間切り替えがスライスごとに生じ得るときには、QP値に対する調整は、スライスごとにシグナリングされ得る。いくつかのH.265/HEVCの実装において、シンタックス要素slice_qp_delta、シンタックス要素slice_cb_qp_offset、及びシンタックス要素slice_cr_qp_offsetを使用して、QP値をスライスヘッダ内に設定して、所与のスライスのQP値を示すことができる。例えば、シンタックス要素slice_qp_delta、シンタックス要素slice_cb_qp_offset、及びシンタックス要素slice_cr_qp_offsetを使用して、RGB等の第1の色空間で符号化された第1のスライスのQP値を示すことができ、その後に、シンタックス要素slice_qp_delta、シンタックス要素slice_cb_qp_offset、及びシンタックス要素slice_cr_qp_offsetを使用して、YCoCg等の第2の色空間で符号化された第2のスライスのQP値を示すことができる。あるいは、色空間切り替えが何らかの他のユニットの間で生じ得るときには、QP値に対する調整は、何らかの他のユニットごとにシグナリングされ得る。
【0162】
I.符号化中又は復号中に色空間を切り替えるときに量子化/スケーリング又は逆量子化/スケーリングを調整することの例
図12は、符号化中に色空間を切り替えるときに量子化又はスケーリングを調整するための一般化された技術(1200)を示しており、
図13は、ユニットごとに色空間を切り替えるときに量子化又はスケーリングを調整するためのより詳細な例示的な技術(1300)を示している。
図3又は
図5a〜
図5bを参照して説明したエンコーダ等の画像エンコーダ若しくはビデオエンコーダ又は他のエンコーダが、技術(1200)又は技術(1300)を実行することができる。
【0163】
図14は、復号中に色空間を切り替えるときに逆量子化又は逆スケーリングを調整するための一般化された技術(1400)を示しており、
図15は、ユニットごとに色空間を切り替えるときに逆量子化又は逆スケーリングを調整するためのより詳細な例示的な技術(1500)を示している。
図4又は
図6を参照して説明したデコーダ等の画像デコーダ若しくはビデオデコーダ又は他のデコーダが、技術(1400)又は技術(1500)を実行することができる。
【0164】
図12を参照すると、エンコーダは、画像又はビデオのユニット(例えば、ピクチャ、スライス、CU、ブロック)を符号化して、符号化されたデータを生成する(1210)。この符号化の一部として、ユニットのうちの2つのユニットの間で第1の色空間から第2の色空間に切り替えるときに(例えば、RGBタイプの色空間からYUVタイプの色空間に切り替えるときに、又は、YUVタイプの色空間からRGBタイプの色空間に切り替えるときに)、エンコーダは、成分ごとの色空間調整係数に従って、第2の色空間の色成分について量子化又はスケーリングを調整する。エンコーダは、ビットストリームの一部として、符号化されたデータを出力する(1220)。
【0165】
図13を参照すると、エンコーダは、第2の色空間の成分についてQP値調整又はスケーリング係数を決定する(1310)。例えば、エンコーダは、本明細書で説明したアプローチのうちのいずれかを使用して、QP値調整又はスケーリング係数を決定する。エンコーダはまた、第1の色空間の成分のQP値及びスケーリング係数を決定する。エンコーダは、ビデオの次のユニット(例えば、ピクチャ、スライス、CU)を取得し(1320)、そのユニットについて色空間を設定する(1330)。例えば、エンコーダは、そのユニットについて、RGBタイプの色空間とYUVタイプの色空間(YCoCg等)との間で選択する。次いで、エンコーダは、選択された色空間について適切なQP値及びスケーリング係数を使用して、そのユニットを符号化する(1340)。エンコーダは、そのユニットについての色空間を示す1以上の信号を含む、そのユニットについての符号化されたデータを出力する(1350)。エンコーダは、次のユニットに進むかどうかをチェックし(1360)、次のユニットに進む場合、次のユニットを取得する(1320)。
【0166】
図14を参照すると、デコーダは、ビットストリームの一部として、符号化されたデータを受信する(1410)。デコーダは、符号化されたデータを復号して、画像又はビデオのユニット(例えば、ピクチャ、スライス、CU、ブロック)を再構成する。この復号の一部として、ユニットのうちの2つのユニットの間で第1の色空間から第2の色空間に切り替えるときに(例えば、RGBタイプの色空間からYUVタイプの色空間に切り替えるときに、又は、YUVタイプの色空間からRGBタイプの色空間に切り替えるときに)、デコーダは、成分ごとの色空間調整係数に従って、第2の色空間の色成分について逆量子化又は逆スケーリングを調整する。
【0167】
図15を参照すると、デコーダは、第2の色空間の成分についてQP値調整又はスケーリング係数を決定する(1510)。例えば、デコーダは、本明細書で説明したアプローチのうちのいずれかを使用して、QP値調整又はスケーリング係数を決定する。デコーダはまた、第1の色空間の成分のQP値及びスケーリング係数を決定する。デコーダは、ビデオの次のユニット(例えば、ピクチャ、スライス、CU)についての符号化されたデータであって、そのユニットについての色空間を示す1以上の信号を含む符号化されたデータを取得する(1520)。デコーダは、そのユニットについて色空間を決定する(1530)。例えば、デコーダは、上記1以上の信号に基づいて、そのユニットについて、RGBタイプの色空間とYUVタイプの色空間(YCoCg等)との間で選択する。デコーダは、選択された色空間について適切なQP値及びスケーリング係数を使用して、そのユニットを復号する(1540)。デコーダは、次のユニットに進むかどうかをチェックし(1550)、次のユニットに進む場合、次のユニットについての符号化されたデータを取得する(1520)。
【0168】
概して、成分ごとの色空間調整係数は、第2の色空間から第1の色空間に戻す変換を行うときの量子化誤差のエネルギーの増幅を補償する。あるいは、第1の色空間からのQP値及びスケーリング係数が、第2の色空間におけるサンプル値に単に適用される場合には、第2の色空間における量子化誤差が、第1の色空間に戻す逆色空間変換演算により増幅される。
【0169】
図12〜
図15に示される例について、ビットストリーム内の1以上のシンタックス要素は、成分ごとの色空間調整係数を示すことができる。1以上のシンタックス要素は、ピクチャレベルで、スライスレベルで、符号化ユニット若しくはブロックについてのシンタックスレベルで、又は何らかの他のシンタックスレベルで、シグナリングされ得る。1以上のシンタックス要素は、第2の色空間の第1の色成分のQP値を示すシンタックス要素に加えて、第2の色空間の第2の色成分及び第3の色成分についてのオフセットを示すシンタックス要素を含み得る。セクションVII.Dが、第2の色空間の色成分のQP値のシグナリングの例を示している。
【0170】
あるいは、第2の色空間の色成分についての成分ごとの色空間調整係数は、ビットストリーム内のシンタックス要素により示される代わりに、第1の色空間の色成分のQP値から始めて、第2の色空間に応じてルールにより導出され得る。セクションVII.Eが、第2の色空間の色成分のQP値の導出ルールの例を示している。
【0171】
量子化又は逆量子化を調整する動作は、第2の色空間の色成分のQP値を決定するために、第1の色空間の色成分の最終QP値又は中間QP値を調整することを含み得る。例えば、第1の色空間がRGBであり、第2の色空間がYCoCgである場合、成分ごとの色空間調整係数は、Y成分、Co成分、及びCg成分について、−5、−3、及び−5とすることができる。より一般的に、量子化及び逆量子化についての成分ごとの色空間調整係数は、逆色空間変換演算における第2の色空間のそれぞれの色成分についてのエネルギー増幅に依拠し得る。
【0172】
符号化中又は復号中の調整されるスケーリングは、成分ごとの色空間調整係数を使用して、変換係数をスケーリングすることを含み得る。このスケーリングは、整数のみの演算又は浮動小数点演算を使用し得る。成分ごとの色空間調整係数は、周波数固有のスケーリング係数に組み込まれることもあるし、別個に適用されることもある。例えば、第1の色空間がRGBであり、第2の色空間がYCoCgである場合、成分固有のスケーリング係数は、Y成分、Co成分、及びCg成分について、1.78、1.41、及び1.78とすることができる。より一般的に、スケーリングについての成分ごとの色空間調整係数は、逆色空間変換演算における第2の色空間のそれぞれの色成分についてのエネルギー増幅に依拠し得る。さらなる詳細については、セクションVII.Fを参照されたい。
【0173】
あるいは、復号中の対応する変更を必要としない、符号化中の変更について、エンコーダは、ユニットごとに、成分ごとのQP値を設定することができる。この場合、ビットストリームは、それぞれのユニットの成分ごとのQP値を示すシンタックス要素を含む。さらなる詳細については、セクションVII.Hを参照されたい。
【0174】
開示した本発明の原理を適用することができる多くの可能な実施形態の観点から、例示した実施形態は、本発明の好ましい例に過ぎないことを認識すべきであり、本発明の範囲を限定するものとして解釈すべきではない。そうではなく、本発明の範囲は、請求項により定められる。したがって、我々は、請求項の範囲及び主旨に含まれる全てを、我々の発明として特許請求する。