(57)【特許請求の範囲】
【請求項１】
ビデオエンコーダで使用する方法であって、
ビデオピクチャシーケンスに対する差分量子化間隔を判定することであって、前記差分量子化間隔は間隔番号によって示される、ことと、
前記ビデオピクチャシーケンス中の複数の予測された差分量子化ピクチャに対する差分量子化を実施するときに前記差分量子化間隔を用いることであって、前記差分量子化間隔により、前記エンコーダは、前記差分量子化が実施される予測された差分量子化ピクチャの間の予測ピクチャに対する差分量子化をスキップする、ことと、
前記ビデオピクチャシーケンスに対するエンコードされたデータを出力することと
を含むことを特徴とする方法。
【請求項２】
前記差分量子化は、
前記複数の予測された差分量子化予測ピクチャのうち前記差分量子化が実施される第１の予測ピクチャ用の１つまたは複数の差分量子化ステップサイズを選択することであって、前記１つまたは複数の差分量子化ステップサイズは、前記第１の予測ピクチャ用のピクチャ量子化ステップサイズとは異なる、ことと、
前記複数の予測された差分量子化予測ピクチャのうち前記差分量子化が実施される第２の予測ピクチャ用の前記１つまたは複数の差分量子化ステップサイズを前記第１の予測ピクチャ用の１つまたは複数の差分量子化ステップサイズとは異なるように変えることであって、前記第２の予測ピクチャは、前記第１の予測ピクチャから前記差分量子化間隔だけ離れている、ことと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記複数の予測された差分量子化ピクチャは、少なくとも１つのＰピクチャを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数の予測された差分量子化ピクチャは、少なくとも１つのＢピクチャを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記差分量子化間隔は一定間隔であることを特徴とする請求項１に記載の方法。
【請求項６】
前記差分量子化間隔は、適応的に調整可能な間隔であることを特徴とする請求項１に記載の方法。
【請求項７】
請求項１に記載の方法をコンピュータに実施させるコンピュータ実行可能命令を格納したことを特徴とするコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像におけるテクスチャレベルに基づいて量子化を調整する技術及びツールに関する。
【背景技術】
【０００２】
ＤＶＤ、インターネットを介した音楽配信及びデジタルカメラがますます普及するのに伴い、デジタルメディアが一般的になっている。エンジニアは、品質を保ちながら、様々な技術を用いて、デジタル音声、映像及び画像を効率的に処理する。こうした技術を理解するために、音声、映像及び画像情報がコンピュータにおいてどのようにして表され処理されるかを理解することが助けとなる。
【０００３】
Ｉ．コンピュータにおけるメディア情報の表現
コンピュータは、メディア情報を、その情報を表す一連の数字として処理する。例えば、ある１つの数字は、ピクチャの各基本小領域に対する明るさの強度または赤、緑もしくは青など、色成分の強度を表すことができ、その結果、ピクチャのデジタル表現は、このような数字の１つまたは複数の配列からなる。このような各数字は、サンプルと呼ぶこともできる。カラー画像の場合、従来は、各要素領域の色を表すのに複数のサンプルを使ったが、通常は３つのサンプルが使われる。要素領域用のこうしたサンプルの組は、ピクセルと呼ぶことができ、「ピクセル」という言葉は、「ピクチャ要素」という概念を指す短縮形である。例えば、１つのピクセルは、要素領域を表すのに必要な赤、緑及び青色光の強度を表す３つのサンプルからなり得る。このようなピクセルタイプは、ＲＧＢピクセルと呼ばれる。（映像に対する）サンプルの深さ、解像度及びフレームレートを含むいくつかの要因が、メディア情報の品質に影響する。
【０００４】
サンプルの深さは、サンプルを表すのに使うことができる数の範囲を示す、一般にビット単位で測定される属性である。サンプル用により多くの値が可能な場合、強度のより微妙な変化及び／またはより大きな範囲の値を数がとらえ得るので、品質はより高くなり得る。解像度は概して、ある程度の継続期間（音声の場合）または空間（画像もしくは個々のビデオピクチャの場合）に渡るサンプルの数を指す。解像度がより高い画像は、他の画像よりくっきりと見え、より認識可能な有用な細部を含む傾向にある。フレームレートは、映像に対する時間分解能に関する一般的な用語である。フレームレートがより高い映像は、自然物の滑らかな動きを他の映像よりうまくまねる傾向にあり、同様に、時間的次元でのより詳細な細部を含むものと見なすことができる。こうした要因すべてに対して、高品質のための妥協点は、表１が示すような、サンプル深さ、解像度及びフレームレートを表すのに必要なビットレートによって情報を格納し伝送するコストである。
【０００５】
【表１】
0005391290.tif 000002
【０００６】
高品質映像（ＨＤＴＶなど）を格納し送るには高ビットレートが必要なのにも関わらず、企業及び消費者は、高品質コンテンツを作成し、配信し、再生するために、コンピュータにますます依存している。こうした理由により、技術者は、圧縮（ソース符号化及びソース復号化とも呼ばれる）を用いてデジタル映像のビットレートを削減する。圧縮により、情報をより低いビットレートの形にコンバートすることによって情報を格納し伝送するコストが下がる。圧縮において損失をなくすことができる場合は、映像の品質は低下しないが、ビットレートの減少は、映像の複雑さによって制限を受ける。または、圧縮において損失があり得る場合は、映像の品質は低下するが、ビットレートの減少はより目ざましい。圧縮解除（復号化とも呼ばれる）は、圧縮された形から、元の情報のバージョンを復元する。「コーデック」とは、エンコーダ／デコーダシステムである。
【０００７】
概して、映像圧縮技術は、「イントラ（intra）」圧縮、及び「インター（inter）」すなわち予測圧縮を含む。映像フレームではイントラ圧縮技術は、一般にＩフレームまたはキーフレームと呼ばれる個々のフレームを圧縮する。インター圧縮技術は、先行フレーム及び／または後続フレームを参照してフレームを圧縮し、インター圧縮されたフレームは一般に予測フレーム、Ｐフレーム、またはＢフレームと呼ばれる。
【０００８】
ＩＩ．Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８及びバージョン９におけるインター圧縮及びイントラ圧縮
本件特許出願人のＷｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８［ＷＭＶ８］は、ビデオエンコーダ及びビデオデコーダを含む。ＷＭＶ８エンコーダは、イントラ圧縮及びインター圧縮を使用し、ＷＭＶ８デコーダは、イントラ圧縮解除及びインター圧縮解除を使用する。Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９［ＷＭＶ９］では、多くの操作に対して同様のアーキテクチャを使用する。
【０００９】
Ａ．イントラ圧縮
図１は、ＷＭＶ８エンコーダにおける、キーとなるフレーム中のサンプルのブロック１０５の、ブロックに基づいたイントラ圧縮１００を示す。ブロックとは、１組のサンプル、例えば、８×８配置のサンプルである。ＷＭＶ８エンコーダは、キーとなるビデオフレームを８×８ブロックに分け、ブロック１０５などの個々のブロックに８×８離散コサイン変換（ＤＣＴ）１１０を適用する。ＤＣＴとは、８×８ブロックのサンプル（空間情報）を、周波数情報である８×８ブロックのＤＣＴ係数１１５にコンバートするタイプの周波数変換である。ＤＣＴ演算自体は、無損失（lossless）またはほぼ無損失である。ただし、元のサンプル値に比較して、ＤＣＴ係数は、エンコーダが圧縮するのにより効率的である。というのは、重要な情報のほとんどが低周波係数（従来通りには、ブロック１１５の左上）に集中し、高周波係数の多く（従来通りには、ブロック１１５の右下）が、ゼロまたはゼロに近い値を有するからである。
【００１０】
エンコーダは次いで、ＤＣＴ係数を量子化し（１２０）、結果として、８×８ブロックの量子化されたＤＣＴ係数１２５を生じる。量子化は損失性（lossy）である。低周波数ＤＣＴ係数は、比較的高い値をもつ傾向にあるので、量子化は通常、結果として精度を損なわせるが、係数の情報を完全には損なわせない。一方、高周波数ＤＣＴ係数は、ゼロまたはゼロに近い値をもつ傾向にあるので、高周波係数の量子化は通常、結果として、値がゼロの隣接領域を生じる。さらに、いくつかのケースでは、高周波数ＤＣＴ係数は、低周波数ＤＣＴ係数より粗く量子化され、結果として、高周波数ＤＣＴ係数の精度／情報をより多く損なわせる。
【００１１】
エンコーダは次いで、無損失圧縮の形をしたエントロピーエンコーディング用に８×８ブロックの量子化されたＤＣＴ係数１２５を用意する。エントロピーエンコーディングの正確なタイプは、係数がＤＣ係数（最低周波数）、最上位行または左列にあるＡＣ係数（他の周波数）、それとも別のＡＣ係数であるかに応じて変わり得る。
【００１２】
エンコーダは、ＤＣ係数１２６を、隣接する８×８ブロックのＤＣ係数１３６との差分としてエンコードする。このブロックは、エンコードされたブロックの以前エンコードされた隣（例えば、最上位または左）にある。（図１は、フレーム中の、エンコードされたブロックの左に位置している隣のブロック１３５を示す）。エントロピーエンコーダは、その差分をエンコードする（１４０）。
【００１３】
エントロピーエンコーダは、左列または最上位行のＡＣ係数を、隣接する８×８ブロックの対応する左列または最上位行との差分としてエンコードすることができる。これは、ＡＣ係数予測の例である。図１は、左列１３７の（実際には、左に）隣接するブロック１３５との差分１４７としてエンコードされた、左列１２７のＡＣ係数を示す。差分符号化により、差分係数がゼロ値をもつ機会が増える。残っているＡＣ係数は、ブロック１２５の量子化されたＤＣＴ係数からのものである。
【００１４】
エンコーダは、８×８ブロック１４５の量子化されたＡＣ  ＤＣＴ係数を、１次元配列１５５に取り込み（１５０）、次いで、取り込まれたＡＣ係数を、ランレングス符号化１６０の変形を用いてエントロピー符号化する。エンコーダは、１つまたは複数のラン／レベル／ラストテーブル１６５からエントロピーコードを選択し、エントロピーコードを出力する。
【００１５】
Ｂ．インター圧縮
ＷＭＶ８エンコーダにおけるインター圧縮は、ブロックベースでの動き補償予測符号化を使用し、この予測符号化の後には、見逃しエラー（residual error）の変換符号化が続く。図２及び図３は、ＷＭＶ８エンコーダにおける、予測フレームに対するブロックに基づいたインター圧縮を示す。具体的には、図２は、予測フレーム２１０に対する動き推定を示し、図３は、予測フレームの、動きを補償したブロックに対する予測残差（prediction residual）の圧縮を示す。
【００１６】
例えば、図２では、ＷＭＶ８エンコーダは、予測フレーム２１０中のマクロブロック２１５用の動きベクトルを計算する。動きベクトルを計算するために、エンコーダは、参照フレーム２３０のサーチエリア２３５内をサーチする。サーチエリア２３５内部で、エンコーダは、完全に一致する候補マクロブロックを見つけるために、予測フレーム２１０にあるマクロブロック２１５を、様々な候補マクロブロックと比較する。エンコーダは、一致するマクロブロック用の（エントロピー符号化された）動きベクトルを指定する情報を出力する。動きベクトルは、動きベクトル予測子を参照して差分符号化される。
【００１７】
動きベクトル予測子に差分を加えることによって動きベクトルを再構成した後、デコーダは、参照フレーム２３０からの情報を使ってマクロブロック２１５に対する予測マクロブロックを計算するために動きベクトルを使う。参照フレーム２３０は、エンコーダ及びデコーダで利用可能な、先行して再構成されたフレームである。予測が完全であることはまれなので、エンコーダは通常、予測マクロブロックとマクロブロック２１５自体の間の、ピクセル差分からなるブロック（エラーブロックまたは残差ブロックとも呼ばれる）をエンコードする。
【００１８】
図３は、ＷＭＶ８エンコーダにおける、エラーブロック３３５の計算及びエンコードの例を示す。エラーブロック３３５は、予測ブロック３１５と元の現在のブロック３２５との間の差分である。エンコーダは、エラーブロック３３５にＤＣＴ３４０を適用し、その結果、係数からなる８×８ブロック３４５を生じさせる。エンコーダは次いで、ＤＣＴ係数を量子化（３５０）し、その結果、量子化されたＤＣＴ係数３５５からなる８×８ブロックを生じさせる。エンコーダは、８×８ブロック３５５を走査（３６０）して１次元配列３６５にし、そうすることによって、係数が、概して最も低い周波数から最も高い周波数の順に並べられるようにする。エンコーダは、ランレングス符号化３７０の変形を用いて、走査された係数をエントロピー符号化する。エンコーダは、１つまたは複数のラン／レベル／ラストテーブル３７５からエントロピーコードを選択し、エントロピーコードを出力する。
【００１９】
図４は、インター符号化ブロック用の対応する復号化処理４００の例を示す。図４を要約すると、デコーダが、１つまたは複数のラン／レベル／ラストテーブル４１５を用いた可変長復号化４１０、及びランレングス復号化４２０を用いて、予測残差を表すエントロピー符号化情報を復号する（４１０、４２０）。デコーダは、エントロピー復号された情報を格納する１次元配列４２５を逆走査（４３０）して、２次元ブロック４３５にする。デコーダは、データを逆量子化し逆ＤＣＴし（共に４４０）、その結果、再構成されたエラーブロック４４５を生じさせる。別個の動き補償経路において、デコーダは、参照フレームからの置換のための動きベクトル情報４５５を用いて、予測ブロック４６５を計算する。デコーダは、予測ブロック４６５を、再構成されたエラーブロック４４５と組み合わせて（４７０）、再構成されたブロック４７５を形成する。エンコーダは、逆量子化、逆ＤＣＴ、動き補償及び参照フレームとして使用するためにフレームを復元するための合成も実施する。
【００２０】
ＩＩＩ．損失性圧縮及び量子化
先行セクションでは、量子化、損失性圧縮のための機構、及び無損失圧縮とも呼ばれるエントロピー符号化に言及した。無損失圧縮は、忠実性を全く低下させずに情報から冗長性を除去することによって、情報のビットレートを削減する。例えば、すべてが正確に同じ色合いの赤である、一連の１０個の連続したピクセルは、特定の色合いの赤に対するコードとして、１０という数は連続したピクセルの「ランレングス」として表すことができ、この連続は、圧縮解除によって、その色合いの赤に対するコード及びその色合いの赤を有する指示された数（１０）の連続したピクセルから完璧に復元される。無損失圧縮技術は、品質を全く犠牲にせずにビットレートを削減するが、ビットレートを一定の点まで削減し得るだけである。ビットレートの低下は、ソースエントロピーと呼ばれる、入力データの統計的特徴抽出における、固有の量の変動性によって制限される。
【００２１】
対照的に、損失性圧縮を用いると、品質はある程度損なわれるが、到達する可能性のあるビットレートの低下はより劇的である。例えば、それぞれがわずかに異なる色合いの赤である一連の１０個のピクセルは、正確に同じ特定の近似の赤色の１０個のピクセルとして近似することができる。損失性圧縮技術を用いると、ビットレートを、無損失圧縮技術より削減することができるが、ビットレート削減の一部は、品質を低下させることによって達成され、損なわれた品質は完全に回復することができない。損失性圧縮はしばしば、損失性圧縮が情報の近似を確立し無損失圧縮技術が近似を表すのに適用されるシステム設計において、無損失圧縮とともに用いられる。例えば、それぞれがわずかに異なる色合いの赤である一連の１０個のピクセルは、ある特定の色合いの赤に対するコードとして、１０という数は連続したピクセルのランレングスとして表すことができる。概して、エンコーダは、品質とビットレートとの兼ね合いをはかるために、量子化を変化させる。比較的粗い量子化により、結果として品質がより大きく低下されるが、ビットレートもより大きく削減される。圧縮解除において、元の連続は次いで、近似された同じ赤色の１０個のピクセルとして復元されることになる。
【００２２】
可能な一定義によると、量子化は、損失性圧縮に共通して使われる不可逆マップ関数の近似に使われる用語であり、特定された１組の可能な出力値があり、その１組の可能な出力値の各メンバは、結果としてその特定の出力値を選択させる、関連づけられた１組の入力値を有する。スカラーまたはベクトル、一様または非一様、及び適応または非適応量子化を含む、様々な量子化技術が開発されている。
【００２３】
Ａ．スカラー量子化法
可能な一定義によると、スカラー量子化法とは、入力値ｘの、時には復元された値と呼ばれる、被量子化値Ｑ［ｘ］への近似機能的マッピングｘ→Ｑ［ｘ］である。図５は、スカラー量子化法用の「階段」Ｉ／Ｏ関数５００を示す。水平軸は、実数入力変数ｘに対する数直線であり、垂直軸は、対応する被量子化値Ｑ［ｘ］を示す。数直線は、閾値５１０などの閾値によって分割される。１対の隣接閾値の間の所与の範囲内のｘの各値には、同じ被量子化値Ｑ［ｘ］が割り当てられる。例えば、範囲５２０内のｘの各値には、同じ被量子化値５３０が割り当てられる。（ある閾値で、可能な２つの被量子化値の一方が、システムに応じて入力ｘに割り当てられる）。全体的に、被量子化値Ｑ［ｘ］は、不連続な階段パターンを呈する。マッピングが数直線に沿って続く距離は、システムに依存し、通常、有限個数の閾値の後に終わる。数直線上の閾値の配置は、（図５に示すように）均一に間隔をあけてもよく、不均一に間隔をあけてもよい。
【００２４】
スカラー量子化法は、２つの別個の段階に分解することができる。第１の段階は分類法段階であり、ここで分類法関数マッピングｘ→Α［ｘ］は、入力ｘを、整数値であることが多い量子化索引Α［ｘ］にマップする。本質的に、分類法は、入力数直線またはデータセットをセグメント化する。図６Ａは、汎用化された分類法６００及びスカラー量子化法用の閾値を示す。図５のように、実数変数ｘに対する数直線は、閾値６１０などの閾値によってセグメント化される。範囲６２０など、所与の範囲内のｘの各値には、同じ被量子化値Ｑ［ｘ］が割り当てられる。図６Ｂは、分類法６５０及びスカラー量子化法用の閾値の数字の例を示す。
【００２５】
第２段階では、リコンストラクタ機能マッピングｋ→β［ｋ］が、各量子化索引ｋを復元値β［ｋ］にマップする。本質的に、リコンストラクタは、分類法によって判定される各領域の復元のために、入力数線分に相対したある特定の高さを有するステップを配置する（または、データセット値のサブセットを選択する）。リコンストラクタ機能マッピングは、例えば、ルックアップテーブル使って実装することができる。全体的に、分類法は、以下のようなリコンストラクタに関する。
Ｑ［ｘ］＝β［Α［ｘ］］  （１）
【００２６】
一般的な使用において、「量子化」という用語はしばしば、エンコーディング中に実施される分類法段階を説明するのに使われる。「逆量子化」という用語は、同様に、エンコーディングまたは復号化どちらの間に実施されるのかに関わらず、リコンストラクタ段階を説明するのに使われる。
【００２７】
このような量子化法を使うことによって混入される歪みは、差分に基づく歪み測度ｄ（ｘ−Ｑ［ｘ］）で計算することができる。通常、このような歪み測度は、ｘ−Ｑ［ｘ］がゼロからそれるのに従ってｄ（ｘ−Ｑ［ｘ］）が増大するプロパティを有し、通常は各復元値は対応する分類領域の範囲内にあるので、関数方程式Ｑ［ｘ］＝ｘによって形成されることになる直線は、階段図（図５に示す）のすべてのステップを通過することになり、したがってＱ［Ｑ［ｘ］］は通常、Ｑ［ｘ］に等しくなる。概して、量子化法は、量子化法が結果として、所与のビットレートの出力に対して他の量子化法より低い平均値の歪みを生じる場合、速度歪み期間中に比較的深く検討される。より形式的には、量子化法は、ソースランダム変数Ｘに対して、期待される（すなわち、平均または統計的中央）値の歪み測度
【００２８】
【数１】
0005391290.tif 000003
【００２９】
がΑ［Ｘ］の等価な、またはより低いエントロピーＨに対してより低い場合、より深く検討される。最も共通して使われる歪み測度は、二乗エラー歪み測度であり、ｄ（｜ｘ−ｙ｜）＝｜ｘ−ｙ｜2である。二乗エラー歪み測度が使われるとき、歪み測度
【００３０】
【数２】
0005391290.tif 000004
【００３１】
の期待値は、平均二乗エラーと呼ばれる。
【００３２】
Ｂ．デッドゾーン＋均一閾値量子化法
不均一量子化法は、すべての分類法領域に対して、均一に間隔をあけられていない閾値を有する。可能な一定義によると、デッドゾーンプラス均一閾値量子化法（「ＤＺ＋ＵＴＱ」）は、ゼロ入力値（デッドゾーン（「ＤＺ」）と呼ばれる）を含むものを除くすべての分類法領域に対して均一に間隔をあけられた閾値をもつ量子化法である。一般的な意味では、ＤＺサイズが他の分類法領域とは異なるので、ＤＺ＋ＵＴＱは、不均一量子化法である。
【００３３】
ＤＺ＋ＵＴＱは、２つのパラメータに基づいて表現することができる分類法索引マッピング規則ｘ→Α［ｘ］を有する。図７は、ＤＺ＋ＵＴＱに対する階段Ｉ／Ｏ関数７００を示し、図８Ａは、汎用化された分類法８００及びＤＺ＋ＵＴＱに対する閾値を示す。０より大きいパラメータｓは、ＤＺ以外のすべてのステップに対するステップサイズを示す。数学的に、ｉ≠０に関して、すべてのｓiはｓに等しい。０以上のパラメータｚは、ＤＺサイズと、他のステップのサイズとの比を示す。数学的に、ｓ0＝ｚ・ｓである。図８Ａにおいて、ｚは２なので、ＤＺは、他の分類ゾーンの２倍の広さである。
【００３４】
ＤＺ＋ＵＴＱに対する索引マッピング規則ｘ→Α［ｘ］は、
【００３５】
【数３】
0005391290.tif 000005
【００３６】
と表現することができ、上式（２）で、
【００３７】
【数４】
0005391290.tif 000006
【００３８】
は、引数以下の最小の整数を示し、ｓｉｇｎ（ｘ）は、
【００３９】
【数５】
0005391290.tif 000007
【００４０】
として定義される関数である。
【００４１】
図８Ｂは、分類法８５０及びｓ＝１、ｚ＝２のＤＺ＋ＵＴＱに対する閾値の数字の例を示す。図５、図６Ａ、図６Ｂは、ｚ＝１の特殊なケースのＤＺ＋ＵＴＱを示す。ＵＴＱ形の量子化法は、様々な統計ソースに対して良好な性能をもつ。具体的には、ＤＺ＋ＵＴＱ形は、ラプラシアンソースとして知られる統計的ランダム変数ソースに対して最適である。
【００４２】
一部のシステム設計（図示せず）では、ＤＺ＋ＵＴＱ分類規則を十分に特徴づけるために、追加検討する必要があり得る。実用的な理由により、分類関数Α［ｘ］から結果として生じ得る値の範囲を、何らかの合理的な有限範囲に限定する必要があり得る。この限定は、クリッピングと呼ばれる。例えば、いくつかのこのようなシステムでは、分類規則は、より厳密に、
【００４３】
【数６】
0005391290.tif 000008
【００４４】
と定義することができ、上式（４）で、ｇはΑ［ｘ］の絶対値に対する極限値である。
【００４５】
各量子化索引に対する復元値を判定するのに、異なる復元規則を用いることができる。相互運用性の達成にのみ焦点を当てている標準及び製品仕様ではしばしば、必ずしも分類規則を特定せずに復元値を指定する。言い換えると、一部の仕様では、機能的マッピングｘ→Α［ｘ］を定義せずに機能的マッピングｋ→β［ｋ］を定義している場合がある。これにより、標準／仕様に準拠するように構築されたデコーダが、情報を正しく復元することができる。対照的に、エンコーダにはしばしば、依然として標準／仕様に準拠したままで、望み通りに分類法を変更する自由が与えられる。
【００４６】
量子化閾値を調整する多数のシステムが開発されている。多くの標準及び製品は、単純化するために、（例えば、典型的な単純分類規則のための）典型的な中央値復元規則に対応する復元値を指定する。しかし、分類のために、閾値は実際には、一定の入力値がより一般的な（したがって、より低いビットレートの）索引にマップされるように調整される場合があり、復元値は最適により近づく。
【００４７】
多くのシステムでは、量子化の程度は、量子化ステップサイズによって測定される。比較的粗い量子化では、より広範囲の入力値に対応する、より大きい量子化ステップサイズを用いる。比較的細かい量子化では、比較的小さい量子化ステップサイズを用いる。しばしば、シグナリング及び復元のために、量子化ステップサイズは、最小の量子化ステップサイズの倍数としてパラメータ化される。
【００４８】
Ｃ．量子化アーチファクト
上述したように、損失性圧縮は、品質の低下を引き起こす傾向にある。例えば、わずかに異なる値の一連の１０個のサンプルは、正確に同じ特定の近似値をもつ１０個のサンプルとして、量子化を用いて近似することができる。この種類の量子化は、一連の１０個のサンプルをエンコードするためのビットレートを削減し得るが、元の１０個のサンプルの細部が損なわれる。
【００４９】
いくつかのケースでは、量子化は、詳細部の単純損失より人工的に見え視覚的に混乱させる傾向にある、可視的なアーチファクトを生じる。例えば、平滑な、テクスチャ加工されていないコンテンツは、輪郭化アーチファクト（contouring artifacts）、すなわち異なる２つの量子化出力値の領域の間に現れるアーチファクトの影響を受けやすい。というのは、人間の視覚システムは、平滑コンテンツにおける微妙な変化（特に輝度の違い）に敏感だからである。上記の例を用いて、一連の１０個のサンプルの輝度値が第１のサンプルから第１０のサンプルまで徐々に、継続的に変わるケースを検討する。量子化は、最初の５個のサンプル値を１つの値として、最後の５個のサンプル値を別の値として近似することができる。この種類の量子化は、マスキング効果によりテクスチャ加工されたエリア内で可視的なアーチファクトを作成し得るが、平滑領域では、２組の５個のサンプルの間の復元された画像中に可視線またはステップを作成し得る。
【００５０】
ＩＶ．ＶＣ−１における差分量子化
差分量子化において、エンコーダは、ピクチャの異なる部分に対して、量子化ステップサイズ（本明細書では、量子化パラメータまたは一部の実装形態ではＱＰとも呼ぶ）を変化させる。通常、マクロブロックレベルまたは他のサブピクチャレベルでのＱＰを変化させることを伴う。エンコーダは、ＱＰをどのようにして変化させるかの決定を行い、そうした決定を、必要に応じてデコーダに信号通知する。
【００５１】
例えば、ＶＣ−１エンコーダは、任意選択で、圧縮のための差分量子化を選ぶ。エンコーダは、ＱＰが個々のピクチャ中のマクロブロックの間で変わり得るかどうかを示すために、ピクチャレベルの上のシンタクスレベルでビットストリーム要素（ＤＱＵＡＮＴ）を送る。エンコーダは、ピクチャＱＰを示すために、ピクチャレベルのビットストリーム要素、すなわちＰＱＩＮＤＥＸを送る。ＤＱＵＡＮＴ＝０の場合、ＰＱＩＮＤＥＸによって指し示されるＱＰは、ピクチャ中のすべてのマクロブロックに対して使われる。ＤＱＵＡＮＴ＝１または２の場合、同じピクチャ中の異なるマクロブロックを、異なるＱＰに対して使うことができる。
【００５２】
ＶＣ−１エンコーダは、差分量子化に対して複数の手法を用いることができる。１つの手法では、ただ２つの異なるＱＰがピクチャに対して使われる。これは、二値差分量子化と呼ばれる。例えば、ピクチャエッジにあるマクロブロックに対して１つのＱＰが使われ、ピクチャのそれ以外の部分にあるマクロブロックに対して別のＱＰが使われる。これは、全体的な表示品質を保つのに詳細部が比較的重要でない、ピクチャエッジでビットを節約するのに有用であり得る。または、マクロブロックごとに信号通知される１ビット値が、使用可能な２つのＱＰ値のどちらをマクロブロックに対して使うべきか示す。多値差分量子化と呼ばれる別の手法では、より多数の異なるＱＰを、ピクチャ中の個々のマクロブロックに対して使うことができる。
【００５３】
エンコーダは、ＤＱＵＡＮＴが非ゼロのとき、ピクチャレベルのビットストリーム要素、すなわちＶＯＰＤＱＵＡＮＴを送る。ＶＯＰＤＱＵＡＮＴは、可能性としては、ピクチャのどの部分が、ピクチャＱＰ以外のＱＰを使うことができるかを示すＤＱＰＲＯＦＩＬＥを含む他の要素からなる。異なる任意のマクロブロックがピクチャＱＰ以外のＱＰを使うことができることをＤＱＰＲＯＦＩＬＥが示す場合、ビットストリーム要素ＤＱＢＩＬＥＶＥＬが存在する。ＤＱＢＩＬＥＶＥＬ＝１の場合、各マクロブロックは、２つのＱＰの一方を使う（二値量子化）。ＤＱＢＩＬＥＶＥＬ＝０の場合、各マクロブロックは、どのＱＰを使ってもよい（多値量子化）。
【００５４】
ビットストリーム要素ＭＱＤＩＦＦは、二値量子化用のマクロブロックに対する１ビットセレクタを信号通知するために、マクロブロックレベルで送られる。多値量子化の場合、ＭＱＤＩＦＦは、ピクチャＱＰとマクロブロックＱＰまたはマクロブロックに対するエスケープ符号化された絶対ＱＰとの間の差分を示す。
【００５５】
Ｖ．他の標準及び製品
多数の国際標準では、ビデオデコーダの側面及び圧縮された映像情報用の形式を指定している。直接的に、または暗黙により、こうした標準では、一定のエンコーダの詳細も指定しているが、他のエンコーダ詳細は特定されていない。一部の標準では、静止画像の圧縮／圧縮解除に対処し、他の標準では、音声の圧縮／圧縮解除に対処している。多数の企業では、音声、静止画像及び映像用のエンコーダ及びデコーダを生産している。他の様々な種類の信号（例えば、ハイパースペクトル画像、グラフィックス、テキスト、財務情報など）も、圧縮技術を用いて、普通に表され、格納され、または伝送される。
【００５６】
様々な映像標準では、異なるピクチャタイプに対して異なる量子化ステップサイズの使用を認め、レート及び品質管理のための量子化ステップサイズの変化を認めている。
【００５７】
標準では通常、量子化法の設計を十分には指定していない。ほとんどが、エンコーダ分類規則ｘ→Α［ｘ］及び／またはデコーダ復元規則ｋ→β［ｋ］において、何らかの変形を認めている。ＤＺ比ｚ＝２以上の使用は、いくつかのエンコーディング設計において暗黙であった。例えば、一部の標準における、予測される領域に対する復元値の間隔をあけることは、ｚ≧２の使用を含意している。標準にあるこうした例における復元値は、ｚ＝２であるＤＺ＋ＵＴＱ分類の使用のために、適切に間隔をあけられる。ｚ＝１（または少なくともｚ＜２）に基づく設計が、いくつかの標準では量子化に使われてきた。こうしたケースにおいて、復元値は、ゼロの辺りで、かつゼロから離れて等しく間隔をあけられる。
【００５８】
デジタル映像に対する映像圧縮の決定的な重要性が明らかになっているので、映像圧縮が十分に発展した分野であることは意外ではない。しかし、従来の映像圧縮技術の利益がどのようなものであっても、以下に述べる技術及びツールの利点は有していない。
【発明の概要】
【発明が解決しようとする課題】
【００５９】
本出願は、映像におけるテクスチャレベルに基づいて量子化を調整する技術及びツールを記載する。
【課題を解決するための手段】
【００６０】
例えば、ビデオエンコーダが、エンコーディング中にビットを割り振るときの平滑領域用の適応平滑化閾値及び平滑領域の時間分析を用いて、映像の知覚品質を向上させる。
【００６１】
本要約は、詳細な説明においてさらに後で説明する一そろいの概念を、簡素化された形で導入するためにある。本要約は、本特許請求対象の主要な特徴または本質的な特徴を識別することは意図しておらず、本特許請求対象の範囲を限定するのに使われることも意図していない。
【００６２】
一態様において、ビデオエンコーダは、ビデオピクチャシーケンス中の現在のビデオピクチャの現在の平滑領域（例えば、階調傾斜領域）を識別する。シーケンスは、先行ピクチャの表示が現在のピクチャの表示の前に起こり、将来ピクチャの表示が現在のピクチャの表示の後に起こる表示順序を有する。エンコーダは、現在の平滑領域に対して時間分析を実施する。時間分析は、先行及び／または将来ピクチャの少なくとも１つの中にある対応する領域が平滑であるかどうか判定することを含む。時間分析に少なくとも部分的に基づいて、エンコーダは、現在の平滑領域内で、量子化を調整する（例えば、輪郭化アーチファクトの混入を避けるように、量子化ステップサイズを低下させる）。時間分析は、調整可能な数の将来ピクチャに対して実施することができる。時間分析は、現在のピクチャに時間的により近い将来ピクチャの対応する領域における平滑性に、より大きな重みがあるとし得る。エンコーダは、テクスチャマップを分析して、現在の平滑領域を識別することができ、時間分析における平均輝度値を分析することができる。
【００６３】
別の態様では、ビデオエンコーダは、ビデオピクチャシーケンスに対する差分量子化間隔（例えば、一定または適応的に調整可能な間隔）を判定し、該間隔は間隔番号を含む。エンコーダは、シーケンス中の予測された差分量子化ピクチャに対する差分量子化を実施するときに間隔を用いる。間隔に従い、エンコーダは、予測された差分量子化ピクチャの１つの後の、少なくともその間隔番号の予測ピクチャに対する差分量子化をスキップする。例えば、差分量子化は、第１の予測ピクチャ用の１つまたは複数の差分量子化ステップサイズを選択すること、及び第２の予測ピクチャ用の１つまたは複数の差分量子化ステップサイズを変更することを含み、１つまたは複数の差分量子化ステップサイズは、第１の予測ピクチャ用のピクチャ量子化ステップサイズとは異なり、第２の予測ピクチャは、第１の予測ピクチャからの間隔の外にある。
【００６４】
別の態様では、ビデオエンコーダは、現在のビデオピクチャにおけるテクスチャを（例えば、テクスチャマップを分析することによって）分析し、分析されたテクスチャに少なくとも部分的に基づいて、現在のピクチャ用の平滑化閾値を設定する。エンコーダは、現在のピクチャのテクスチャデータを平滑化閾値と比較し、平滑化閾値に従い、現在のピクチャ中の少なくとも１つの平滑領域の発見に基づいて、現在のピクチャの少なくとも一部に対する差分量子化を調整する。エンコーダは、ブロック階調値の階調値ヒストグラムにスライディングウィンドウを適用することによって、テクスチャを分析することができる。差分量子化を調整するために、エンコーダは、現在のピクチャ中の平坦なブロックのパーセンテージを判定し、このパーセンテージを１つまたは複数のパーセント閾値と比較することができる。あるいは、エンコーダは、現在のピクチャ中のテクスチャ領域内の分離された平坦なブロックを識別し、分離された平坦なブロック向けの差分量子化をスキップすることができる。
【００６５】
上記及び他の目的、特徴及び利点は、添付の図面を参照して進められる以下の詳細な説明から、より明らかになるであろう。
【図面の簡単な説明】
【００６６】
【図１】８×８ブロックのサンプルの、ブロックに基づいたイントラフレーム圧縮を示す図である。
【図２】ビデオエンコーダにおける動き推定を示す図である。
【図３】ビデオエンコーダにおける８×８ブロックの予測残差に対するブロックに基づいた圧縮を示す図である。
【図４】ビデオエンコーダにおける８×８ブロックの予測残差に対するブロックに基づいた圧縮解除を示す図である。
【図５】スカラー量子化法用の階段Ｉ／Ｏ関数を示すチャートである。
【図６Ａ】スカラー量子化法用の分類法及び閾値を示すチャートである。
【図６Ｂ】スカラー量子化法用の分類法及び閾値を示すチャートである。
【図７】ＤＺ＋ＵＴＱに対する階段Ｉ／Ｏ関数を示すチャートである。
【図８Ａ】ＤＺ＋ＵＴＱに対する分類法及び閾値を示すチャートである。
【図８Ｂ】ＤＺ＋ＵＴＱに対する分類法及び閾値を示すチャートである。
【図９】説明したいくつかの実施形態を実装することができる適切なコンピューティング環境を示すブロック図である。
【図１０】説明したいくつかの実施形態を実装することができる、一般化したビデオエンコーダシステムを示すブロック図である。
【図１１】説明したいくつかの実施形態において用いられるマクロブロック形式を示す図である。
【図１２】適応ビデオエンコーディング方法を示すフローチャートである。
【図１３】ブロックに対する輝度及び彩度データを用いたピクセル階調の計算を示す図である。
【図１４】図１３のブロックに対する複数のピクセル階調を示すヒストグラムグラフである。
【図１５】例示的ブロック値特徴抽出フレームワークを示すグラフである。
【図１６】テクスチャ情報に基づく差分量子化を適用する汎用化された技術を示すフローチャートである。
【図１７】時間分析を用いてテクスチャＤＱ決定を行う技術を示すフローチャートである。
【図１８】パーセント閾値及び分離平滑ブロックフィルタリングを使ってテクスチャＤＱ決定を行う技術を示すフローチャートである。
【図１９】高テクスチャピクチャに対するテクスチャレベル閾値を選択的に調整する技術を示すフローチャートである。
【図２０】適応テクスチャレベル閾値を判定する例示的疑似コードを示すコード図である。
【図２１】階調傾斜領域の２つの例を示す図である。
【図２２Ａ】階調傾斜領域、テクスチャ加工された領域、シャープエッジ領域及び平坦領域を有する例示的フレームを示す図である。
【図２２Ｂ】図２２Ａの階調傾斜領域内の輪郭化アーチファクトを示す図である。
【図２２Ｃ】図２２Ｂの輪郭化アーチファクトのマクロブロックレベルの細部を示す図である。
【図２３】汎用化された領域に基づく階調傾斜検出技術を示すフローチャートである。
【図２４】一実装形態による例示的階調傾斜検出装置を示すブロック図である。
【図２５】異常な階調傾斜方向を引き起こす可能性があるフィルム粒子を有する階調傾斜領域の４：１ダウンサンプリングを示す図である。
【図２６】１６×１６コンパスオペレータＫH、ＫVを示す式図である。
【図２７】図２６のコンパスオペレータを使って領域に対する階調方向を計算する例示的疑似コードを示すコード図である。
【図２８】階調傾斜領域に対する一貫性チェックを実施する技術を示すフローチャートである。
【図２９】バケット投票技術におけるバケットを示す図である。
【図３０】１つまたは複数の非ゼロＡＣ係数を維持するのを助けるためのマクロブロックＱＰを選択する例示的技術を示すフローチャートである。
【図３１】量子化及び逆量子化後の、階調傾斜領域内の３つの隣接ブロックにおけるＤＣシフトを示す図である。
【図３２】ＤＣシフトエリア内での輪郭化アーチファクトの混入を削減し、または避けるように量子化を調整する汎用化された技術を示すフローチャートである。
【図３３】量子化アーチファクトの混入を削減し、または避けるようにＤＣシフトエリア内での量子化を適応させる複合技術を示すフローチャートである。
【発明を実施するための形態】
【００６７】
本出願は、映像の効率的な圧縮のための技術及びツールに関する。記載する様々な実施形態において、ビデオエンコーダは、ビデオをエンコードする技術、及びビットストリーム形式または異なる層もしくはレベルを含むシンタクスとともに使用するための、対応するシグナリング技術を組み込んでいる。記載する技術及びツールのいくつかは、インターレースまたはプログレッシブフレームに適用することができる。
【００６８】
本明細書において記載する実装形態に対する様々な代替形態が可能である。例えば、フローチャート図を参照して記載する技術は、フローチャートに示す段階の順序を変更することによって、あるいは特定の段階を繰り返しまたは省くことなどによって、変えることができる。例えば、分析における初期段階（例えば、ピクチャに対するテクスチャ情報を取得することや、平滑領域を検出する際にテクスチャ分析を実施すること）は、以降の段階（例えば、ピクチャ用のエンコーディングの決定を行うことや、平滑領域を検出する際に時間分析を実施すること）が始まる前に完了してもよく、異なる段階に対する動作は、ブロック単位、マクロブロック単位、または他の領域単位で交互に行ってもよい。別の例として、いくつかの実装形態は具体的なマクロブロック形式を参照して記載してあるが、他の形式を用いてもよい。
【００６９】
様々な技術及びツールは、組み合わせても、それぞれ独立しても用いることができる。異なる実施形態が記載した技術及びツールの１つまたは複数を実装する。本明細書において記載するいくつかの技術及びツールは、ビデオエンコーダにおいても、ビデオエンコーディングに具体的に限定されない他の何らかのシステムにおいても用いることができる。
【００７０】
Ｉ．コンピューティング環境
図９は、説明する実施形態のいくつかを実装することができる適切なコンピューティング環境９００の一般化した例を示す。コンピューティング環境９００は、使用または機能の範囲に対するどのような限定を示すことも意図していない。というのは、こうした技術及びツールは、多様な汎用または専用コンピューティング環境において実装することができるからである。
【００７１】
図９を参照すると、コンピューティング環境９００は、少なくとも１つの処理ユニット９１０及びメモリ９２０を含む。図９において、この最も基本的な構成９３０は、破線内に含まれている。処理ユニット９１０は、コンピュータ実行可能命令を実行し、実プロセッサでも仮想プロセッサでもよい。多重処理システムでは、処理能力を向上するために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ９２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこの２つの何らかの組合せでよい。メモリ９２０は、記載した技術及びツールの１つまたは複数を有するビデオエンコーダを実装するソフトウェア９８０を格納する。
【００７２】
コンピューティング環境は、追加の特徴を有することもできる。例えば、コンピューティング環境９００は、記憶装置９４０、１つまたは複数の入力デバイス９５０、１つまたは複数の出力デバイス９６０、及び１つまたは複数の通信接続９７０を含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティング環境９００のコンポーネントを相互接続する。一般に、オペレーティングシステムソフトウェア（図示せず）が、コンピューティング環境９００において実行される他のソフトウェアのための動作環境を提供し、コンピューティング環境９００のコンポーネントの活動を調整する。
【００７３】
記憶装置９４０は、取外し可能でも固定型でもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、あるいは情報を格納するのに使うことができるとともにコンピューティング環境９００においてアクセスすることができる他のどの媒体も含む。記憶装置９４０は、ビデオエンコーダを実装するソフトウェア９８０用の命令を格納する。
【００７４】
入力デバイス（群）９５０は、キーボード、マウス、ペン、またはトラックボールなどのタッチ式入力デバイス、音声入力デバイス、走査デバイス、あるいはコンピューティング環境９００への入力を実現する別のデバイスでよい。音声またはビデオエンコードのためには、入力デバイス（群）９５０は、サウンドカード、ビデオカード、ＴＶチューナカードでも、アナログまたはデジタルの形で、あるいはコンピューティング環境９００に音声またはビデオサンプルを読み込ませるＣＤ−ＲＯＭまたはＣＤ−ＲＷで音声またはビデオ入力を受け入れる類似のデバイスでもよい。出力デバイス（群）９６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境９００からの出力を実現する別のデバイスでよい。
【００７５】
通信接続（群）９７０は、別の計算エンティティへの、通信媒体を介した通信を可能にする。こうした通信媒体は、コンピュータ実行可能命令、音声またはビデオ入出力、あるいは他のデータなどの情報を、変調データ信号の形で伝える。変調データ信号とは、情報を信号にエンコードするような方式で設定または変更される信号特性の１つまたは複数を有する信号である。限定ではなく例として、通信媒体は、電気、光学、ＲＦ、赤外線、音響、または他のキャリアを有して実現される有線または無線技術を含む。
【００７６】
こうした技術及びツールは、コンピュータ可読媒体という一般的な状況において説明することができる。コンピュータ可読媒体は、コンピューティング環境においてアクセスすることができる、利用可能などの媒体でもよい。限定ではなく例として、コンピューティング環境９００の場合、コンピュータ可読媒体は、メモリ９２０、記憶装置９４０、通信媒体、及び上記のどの組合せも含む。
【００７７】
こうした技術及びツールは、コンピュータ実行可能命令、例えばコンピューティング環境において、ターゲットである実プロセッサまたは仮想プロセッサ上で実行される、プログラムモジュールに含まれるコンピュータ実行可能命令という一般的な状況で説明することができる。概して、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態での要望に応じて、組み合わせることも、プログラムモジュールの間に振り分けることもできる。プログラムモジュール用のコンピュータ実行可能命令は、ローカルまたは分散コンピューティング環境において実行することができる。
【００７８】
提示として、詳細な説明では、コンピューティング環境におけるコンピュータ動作を記述するのに、「決定する」及び「分析する」のような用語を用いる。こうした用語は、コンピュータによって実施される動作を高度に抽象化したものであり、人間によって実施される行為と混同すべきではない。こうした用語に対応する実際のコンピュータ動作は、実装形態に応じて変わる。
【００７９】
ＩＩ．一般化したビデオエンコーダ
図１０は、説明するいくつかの実施形態を実装することができる、一般化したビデオエンコーダ１０００のブロック図である。エンコーダ１０００は、現在のピクチャ１００５を含む一連のビデオピクチャを受け取り、圧縮された映像情報１０９５を、記憶装置、バッファ、または通信接続への出力として生じる。出力ビットストリームの形式は、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  ＶｉｄｅｏまたはＶＣ−１形式、ＭＰＥＧ−ｘ形式（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、もしくはＭＰＥＧ−４）、Ｈ．２６ｘ形式（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、もしくはＨ．２６４）、あるいは他の形式でよい。
【００８０】
エンコーダ１０００は、ビデオピクチャを処理する。ピクチャという用語は概して、ソースの、符号化されたまたは復元された画像データを指す。プログレッシブ映像の場合、ピクチャは、プログレッシブ映像フレームである。インターレース映像の場合、ピクチャは、コンテキストに応じて、インターレース映像フレーム、フレームの上位フィールド、またはフレームの下位フィールドを指し得る。エンコーダ１０００はブロックに基づき、フレームに対して４：２：０のマクロブロック形式を使用する。図１１に示すように、マクロブロック１１００は、４つの８×８輝度（またはｌｕｍａ）ブロック（Ｙ１からＹ４）及び２つの８×８彩度（またはｃｈｒｏｍａ）ブロック（Ｕ及びＶ）を含み、こうした彩度ブロックは、４つの輝度ブロックと同じ位置に配置されるが、従来の４：２：０マクロブロック形式に従って水平及び垂直方向の解像度が半分である。フィールドに対しては、同じまたは異なるマクロブロック組織及び形式を使うことができる。こうした８×８のブロックは、異なる段階、例えば、周波数変換段階及びエントロピー符号化段階でさらに下位分割することができる。エンコーダ１０００は、８×８ブロック及び１６×１６マクロブロックとは異なるサイズまたは構成のサンプルの組に対して、操作を実施することができる。あるいは、エンコーダ１０００は、オブジェクトに基づき、または異なるマクロブロックまたはブロック形式を使用する。
【００８１】
図１０に戻ると、エンコーダシステム１０００は、予測ピクチャ及びイントラ符号化されたキーピクチャを圧縮する。提示として、図１０は、エンコーダシステム１０００を通過するキーピクチャ用の経路、及び予測ピクチャ用の経路を示す。エンコーダシステム１０００のコンポーネントの多くは、キーピクチャ及び予測ピクチャ両方の圧縮に使われる。そうしたコンポーネントによって実施される正確な動作は、圧縮される情報のタイプに応じて変わり得る。
【００８２】
予測ピクチャ（例えば、プログレッシブＰフレームまたはＢフレーム、インターレースＰフィールドまたはＢフィールド、あるいはインターレースＰフレームまたはＢフレーム）は、１つまたは複数の他のピクチャ（一般に、参照ピクチャまたはアンカと呼ばれる）からの予測（または差）によって表される。予測残差とは、予測されたものと元のピクチャの間の差である。対照的に、キーピクチャ（例えば、プログレッシブＩフレーム、インターレースＩフィールド、またはインターレースＩフレーム）は、他のピクチャを参照せずに圧縮される。
【００８３】
現在のピクチャ１００５が予測ピクチャである場合、動き推定装置１０１０は、１つまたは複数の参照ピクチャ、例えばピクチャストア１０２０にバッファリングされている、圧縮解除された先行ピクチャ１０２５を参照して、マクロブロックまたは現在のピクチャ１００５の他のサンプルの組の動きを推定する。現在のピクチャ１００５が双方向予測ピクチャである場合、動き推定装置１０１０は、現在のピクチャ１００５における動きを、圧縮解除された最大４つの参照ピクチャ（例えば、インターレースＢフィールド用）を参照して推定する。一般に、動き推定装置は、時間的に先行する１つまたは複数の参照ピクチャ、及び１つまたは複数の将来の参照ピクチャを参照して、Ｂピクチャにおける動きを推定するが、Ｂピクチャは、異なる時間方向から予測される必要はない。エンコーダシステム１０００は、多様な参照ピクチャ用に別々のストア１０２０及び１０２２を使うことができる。
【００８４】
動き推定装置１０１０は、１サンプル、１／２サンプル、１／４サンプル、または他のインクリメントによって動きを推定することができ、動き推定の精度を、ピクチャ単位または他の単位で切り換えることができる。動き推定装置１０１０（及び補償装置１０３０）も、（例えば、双三次と双線形の間の）参照ピクチャサンプル補間タイプを、フレームごとに、または他の単位で切り換えることができる。動き推定の精度は、水平方向及び垂直方向において同じでも異なってもよい。動き推定装置１０１０は、差分動きベクトル情報などの動き情報１０１５をサイド情報として出力する。エンコーダ１０００は、例えば、動きベクトル用に１つまたは複数の予測子を計算すること、動きベクトルと予測子の間の差分を計算すること、及び差分をエントロピー符号化することによって、動き情報１０１５をエンコードする。動きベクトルを再構成するために、動き補償装置１０３０は、予測子を差分動きベクトル情報と合成する。
【００８５】
動き補償装置１０３０は、再構成されたピクチャ（群）１０２５に再構成された動きベクトルを適用して、動きが補償された現在のピクチャ１０３５を形成する。ただし、予測が完璧であることはまれであり、動きが補償された現在のピクチャ１０３５と元の現在のピクチャ１００５との間の差が予測残差１０４５である。以降のピクチャ復元の間、予測残差１０４５は、動きが補償された現在のピクチャ１０３５に加えられて、元の現在のピクチャ１００５により近い復元ピクチャを取得する。ただし、損失性圧縮では、何らかの情報が依然として元の現在のピクチャ１００５から失われる。あるいは、動き推定装置及び動き補償装置は、別のタイプの動き推定／補償を適用する。
【００８６】
周波数変換装置１０６０は、空間ドメイン映像情報を周波数ドメイン（すなわち、スペクトル）データに変換する。ブロックベースのビデオピクチャに対して、周波数変換装置１０６０は、サンプルデータまたは予測残差データのブロックにＤＣＴ、ＤＣＴの変形、または他のブロック変換を適用し、周波数変換係数のブロックを生じる。代替的には、周波数変換装置１０６０は、フーリエ変換など別の従来の周波数変換を適用し、あるいはウェーブレットまたはサブバンド分析を用いる。周波数変換装置１０６０は、８×８、８×４、４×８、４×４または他のサイズの周波数変換を適用することができる。
【００８７】
量子化装置１０７０が次いで、スペクトルデータ係数のブロックを量子化する。量子化装置１０７０は、ピクチャ単位または他の単位（例えば、マクロブロック単位）によって変わるステップサイズで、スペクトルデータに均一なスカラー量子化を適用する。あるいは、量子化装置１０７０は、スペクトルデータ係数に別のタイプの量子化、例えば、均一でない量子化、ベクトル量子化、または非適応量子化を適用し、あるいは周波数変換を使わないエンコーダシステムにおいて、空間ドメインデータを直接量子化する。ある実装における量子化に関連する技術及びツールは以下で説明する。
【００８８】
適応量子化に加え、エンコーダ１０００は、フレームドロップ、適応フィルタリング、またはレート制御のための他の技術を使うことができる。
【００８９】
エンコーダ１０００は、特定のタイプの情報をもたない（例えば、マクロブロックに対する差分動きベクトルも残差情報ももたない）マクロブロックである、スキップされたマクロブロックに対して特殊なシグナリングを用いることができる。
【００９０】
再構成された現在のピクチャが、後続の動き推定／補償用に必要とされる場合、逆量子化装置１０７６が、量子化されたスペクトルデータ係数に対して逆量子化を実施する。逆周波数変換装置１０６６が次いで、周波数変換装置１０６０の動作の逆を実施し、（予測ピクチャに対する）再構成された予測残差、または再構成されたキーピクチャを生じる。現在のピクチャ１００５がキーピクチャだった場合、再構成されたキーピクチャは、再構成された現在のピクチャ（図示せず）と見なされる。現在のピクチャ１００５が予測ピクチャだった場合、再構成された予測残差が、動き補償された現在のピクチャ１０３５に追加されて、再構成された現在のピクチャを形成する。ピクチャストア１０２０、１０２２の一方または両方が、動きが補償された予測に使うために、再構成された現在のピクチャをバッファリングする。いくつかの実施形態では、エンコーダは、再構成されたフレームに非ブロック化フィルタを適用して、ピクチャにおける不連続及び他のアーチファクトを適合的に平滑化する。
【００９１】
エントロピーコーダ１０８０が、量子化装置１０７０の出力、ならびに特定のサイド情報（例えば、動き情報１０１５、量子化ステップサイズ（ＱＰ））を圧縮する。一般的なエントロピー符号化技術は、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、ＬＺ符号化、ディクショナリ符号化及び上記の組合せを含む。エントロピーコーダ１０８０は一般に、異なる種類の情報（例えば、ＤＣ係数、ＡＣ係数、異なる種類のサイド情報）に対して異なる符号化技術を使用し、ある特定の符号化技術において、複数のコードテーブルの中から選択を行うことができる。
【００９２】
エントロピーコーダ１０８０は、多重化装置（ＭＵＸ）１０９０に、圧縮された映像情報１０９５を提供する。ＭＵＸ１０９０は、バッファを含むことができ、バッファレベル指示子（indicator）は、コントローラにフィードバックすることができる。ＭＵＸ１０９０の前または後で、圧縮された映像情報１０９５は、ネットワークを介した伝送用にチャネル符号化することができる。チャネル符号化は、圧縮された映像情報１０９５に、誤差検出及び修正データを適用することができる。
【００９３】
コントローラ（図示せず）は、動き推定装置１０１０、周波数変換器１０６０、量子化装置１０７０、逆量子化装置１０７６、エントロピーコーダ１０８０及びバッファ１０９０など、様々なモジュールから入力を受け取る。コントローラは、エンコーディング中に中間結果を評価し、例えば、歪みを推定し、他の速度歪み分析を実施する。コントローラは、動き推定装置１０１０、周波数変換器１０６０、量子化装置１０７０及びエントロピーコーダ１０８０などのモジュールと連携して、エンコーディング中に符号化パラメータを設定し変更する。エンコーダは、エンコーディング中に異なる符号化パラメータ選択肢を評価するとき、異なるパラメータ設定を評価するために、特定の段階（例えば、量子化及び逆量子化）を繰り返し実施することができる。エンコーダは、ある段階で、次の段階に進む前に、パラメータを設定することができる。あるいは、エンコーダは、異なる符号化パラメータを連帯して評価してもよい。評価されるべき符号化パラメータ決定のツリー及び対応するエンコーディングのタイミングは、実装に依存する。
【００９４】
エンコーダ１０００内部のモジュールの間に示される関係は、エンコーダ内の情報の全体的な流れを示す。他の関係は、単純化するために図示していない。具体的には、図１０は通常は、ビデオシーケンス、ピクチャ、マクロブロック、ブロックなどに対して使われるエンコーダ設定、モード、テーブルなどを示すサイド情報を見せない。このようなサイド情報は、完成されると、出力ビットストリームに入れて、通常はサイド情報のエントロピーエンコーディングの後に送られる。
【００９５】
ビデオエンコーダの特定の実施形態は通常、汎用化されたエンコーダ１０００の変形または補完バージョンを用いる。実装及び所望される圧縮のタイプに応じて、エンコーダのモジュールは、追加し、省略し、多様なモジュールに分け、他のモジュールと結合し、かつ／または同様のモジュールと置き換えることができる。例えば、コントローラは、エンコーダの異なるモジュールに関連づけられた多様なコントローラモジュールに分けることができる。代替実施形態では、異なるモジュール及び／または他の構成のモジュールを有するエンコーダが、記載した技術の１つまたは複数を実施する。
【００９６】
ＩＩＩ．知覚モデルを用いた映像コンテンツの特徴抽出
映像コンテンツは、知覚モデルを用いて特徴づけることができる。このことは、エンコーダが異なる種類の映像コンテンツに対して適切なエンコーディング決定を行うのを助け得る。エンコーダは、エンコーディング前にピクチャを分析して、ピクチャの異なる部分（例えば、ブロック、マクロブロックなど）におけるコンテンツの特徴抽出（characterization）を行うことができる。例えば、青い空など、ビデオピクチャの比較的平滑な部分は、歪みを混入させるのには比較的受容可能でないと特徴づけることができる。というのは、一定の種類の品質劣化（例えば、量子化アーチファクト）が、平滑領域内で人間によってより簡単に知覚されるからである。対照的に、歪みは概して、テクスチャ領域内で比較的目立ちにくい（したがって、より受容可能）。
【００９７】
図１２を参照すると、図１０を参照して上述したようなビデオエンコーダが、ビデオピクチャの部分（例えば、マクロブロックのブロック、マクロブロック、または他の領域）を（例えば、平滑領域、エッジ領域、テクスチャ領域などとして）特徴づけ、特徴抽出に従って１つまたは複数のエンコーディング技術を適応させるプロセス１２００において、適応エンコーディング技術を実装する。記載した技術の多くは、ブロック、マクロブロックまたは他の領域上など、ピクチャ内部の適応エンコーディングを提供する。こうした技術は、画像の異なる部分を分類しそれに従ってエンコードするのに、情報を用いる。より具体的には、ビデオエンコーダが、コンテンツをその知覚特性に基づいて分類するために、ピクチャの部分を特徴づける。
【００９８】
段階１２１０で、ビデオエンコーダは、ビデオピクチャの１つまたは複数の部分を特徴づける。例えば、エンコーダは、ビデオピクチャのブロックを、ブロック内部の強度分散に基づいて特徴づける。一実装形態では、エンコーダは、ブロックまたはブロックのダウンサンプリングされたバージョン中のピクセルに対して、ピクセルとその隣接ピクセルとの間の差分の和を計算する。この差分値の和は、ピクセルとその周辺ピクセルとの間の強度分散を測定する。例えば、周辺ピクセルは、ピクセルの上または下、左または右、あるいは対角線など、ピクセルに隣接する、またはほぼ隣接する他の２つ以上のピクセルを含む。ピクセルの強度とその周辺ピクセルの強度との間の差分は、輝度及び／または彩度データにおける差分に基づいて計算される。言い換えると、差分は、輝度サンプル及び／または彩度サンプルを用いて計算される。計算された平均差分値は、ピクセル（例えば、ピクセル階調）に割り当てられる。差分値は、ブロック中のピクセルに対して（例えば、ブロック階調）、またはそのサブサンプリングされた何らかのセットに対して、このようにして計算される。ブロック中のピクセルに割り当てられた差分値は、ブロック値を表現することができる、ブロックに対する特徴抽出または分類（例えば、平滑、エッジ、またはテクスチャ。テクスチャまたは非テクスチャ。平滑または非平滑、など）を判定するために評価される。一例では、ブロック中のピクセルに対するピクセル階調は、ブロックの階調に対する中央差分値（例えば、ブロック中央値）を判定するために評価される。したがって、ブロック内部のピクセルの間の強度差により、ブロック、マクロブロック、または他のビデオピクチャ領域に対する強度分散を測定する。
【００９９】
ブロック中央値は、ブロック値を判定するのに必要とされない。強度分散またはブロック特徴抽出は、ブロック中のピクセルに割り当てられた差分値に対する平均値（例えば、ブロック平均）にも基づき得る。ブロック中央値または平均は、ブロックを分類するのに使うことができ、かつ／または、より微細化された制御機能への入力として使うことができる。特徴抽出または制御機能は、エンコーディングの１つまたは複数の側面を適応的に変化させる。
【０１００】
あるいは、ブロックを特徴づけるための強度分散を計算する代わりに、エンコーダは、別の基準値を用いる。
【０１０１】
段階１２２０で、エンコーダは、特徴抽出に基づいて、ビデオピクチャを適応的にエンコードする。一実装形態では、輪郭化アーチファクトの除去または削減のためのエンコーディング技術が、ブロックの特徴抽出に基づいて実施される。例えば、階調傾斜検出、ＤＣシフト検出、ＡＣ係数保存及び適応差分量子化が、一定の平滑領域に対して実施され、テクスチャ加工された領域が、ビットレートを保護するためにより強く量子化される。
【０１０２】
図１２は、ピクチャの多様な部分に対する適応エンコーディング段階１２２０に先行する特徴抽出段階１２１０を示すが、こうした段階は、ピクチャにおいてブロック単位で繰り返し起こっても、他の何らかの単位で並べられてもよい。
【０１０３】
段階１２３０で、エンコーダは、適応エンコードされたビットストリームを信号通知する。ブロック特徴抽出に基づいてエンコードするためにエンコーダによって差分量子化が使われる場合、例えば、ビデオエンコーダは、ビデオデコーダに差分量子化を信号通知するシグナリング方式を用いて情報を圧縮されたビットストリームの中にエンコードする。
【０１０４】
段階１２４０で、対応するビデオデコーダが、ビデオピクチャに関するエンコードされたデータを含む、適応エンコードされたビットストリームを読む。例えば、ビデオデコーダは、信号通知された差分量子化情報を読む。段階１２５０で、デコーダは、圧縮されたビットストリームを復号化し、例えば、信号通知された差分量子化情報に従ってブロックを逆量子化する。
【０１０５】
Ａ．ブロックに基づいた例示的特徴抽出
図１３は、輝度及び／または彩度データを用いてブロックを特徴づける、ブロックに基づいた操作を示す図である。輝度ブロック「Ｙ」（１３０２）は、４：２：０のマクロブロック形式の、８×８ブロックのマクロブロックである。そうすることが必要なわけではないが、この例では、ピクセルブロック向けの対応する彩度ブロック１３０４、１３０６も、階調ブロック１３０８を計算する際に使われる。そうすることが必要なわけではないが、この例に示すように、輝度ブロック１３０２は、因子２で水平に、かつ垂直に（例えば、サンプルのペアの単純平均化によって）ダウンサンプリングされて（１３１２）、４×４次元の彩度ブロックに合致する輝度ブロック１３１０を作成する。
【０１０６】
ダウンサンプリングされた輝度ブロック１３１０に示すように、ピクセル１３１４に対する輝度サンプルの強度値は、ダウンサンプリングされた輝度ブロック１３１０中のピクセル１３１４に近い４ピクセルに対するサンプルと比較され、ピクセル１３１４に対するサンプルとその周辺の垂直及び水平ピクセルに対するサンプルとの間の差分の平均和が計算される。この例では、ピクセル１３１４は、位置Ｙ’（ｒ，ｃ）に位置する。その周辺ピクセルと比較した、このピクセル１３１４向けの輝度強度値に対する差分の平均和は、以下のようになる。
ＬI（ｒ，ｃ）＝［｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ，ｃ−１）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ−１、ｃ）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ，ｃ＋１）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ（ｒ＋１，ｃ）｜］／４                      （５）
【０１０７】
上に示すように、Ｙ’（ｒ，ｃ）は、ダウンサンプリングされたブロックＹ’中の行ｒ及び列ｃにあるピクセル１３１４の輝度成分である。ＬI（ｒ，ｃ）は、ピクセル１３１４が、ブロックＹ’中のその隣のピクセルとは輝度強度がどの程度異なるかを指し示す。この輝度強度差の測定値は、ピクセル階調の例である。
【０１０８】
任意選択で、彩度データ１３０４、１３０６は、強度差を判定するために、輝度データの代わりに独自に検討することもでき、輝度データと一緒に検討することもできる。ピクセル１３１４の輝度強度値及び彩度強度値に対する差の平均和は、以下の式に示すように、周辺ピクセルに対するサンプルの強度値における差の平均として表すことができる。
ＧI（ｒ，ｃ）＝｛［｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ，ｃ−１）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ−１，ｃ）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ，ｃ＋１）｜＋｜Ｙ’（ｒ，ｃ）−Ｙ’（ｒ＋１，ｃ）｜］＋［｜Ｕ（ｒ，ｃ）−Ｕ（ｒ，ｃ−１）｜＋｜Ｕ（ｒ，ｃ）−Ｕ（ｒ−１、ｃ）｜＋｜Ｕ（ｒ，ｃ）−Ｕ（ｒ，ｃ＋１）｜＋｜Ｕ（ｒ，ｃ）−Ｕ（ｒ＋１，ｃ）｜］＋［｜Ｖ（ｒ，ｃ）−Ｖ（ｒ，ｃ−１）｜＋｜Ｖ（ｒ，ｃ）−Ｖ（ｒ−１、ｃ）｜＋｜Ｖ（ｒ，ｃ）−Ｖ（ｒ，ｃ＋１）｜＋｜Ｖ（ｒ，ｃ）−Ｖ（ｒ＋１，ｃ）｜］｝／１２              （６）
【０１０９】
ＧI（ｒ，ｃ）は、ダウンサンプリングされたブロック中の（ｒ，ｃ）に位置するピクセルに対するピクセル階調の例であり、ピクセル階調は、ピクセル１３１４が、その周辺にある隣のピクセルとは輝度及び彩度強度がどの程度異なるかを指示する。この例では、ピクセル階調値ＧI（ｒ，ｃ）は、直接的に垂直または水平なピクセルに基づくが、近隣にある他のピクセルは検討しない。他のピクセルデータは、他の変形におけるピクセル階調の作成において検討できることも企図される。例えば、対角線ピクセルは、与えられた配置の一部、またはその代わりと見なすことができよう。あるいは、より長い範囲（例えば、２または３ピクセル）に渡る強度差を検討することもできよう。
【０１１０】
ＧI（ｒ，ｃ）は、単一のピクセルが、その隣とは輝度及び彩度強度がどの程度異なるかを指し示す。ブロック全体に対する強度分散を特徴づけるために、ブロック内部の複数のまたはすべてのピクセルに対して同じ分析が実施される。このような一例において、複数のピクセル階調のブロック１３０８が作成され、そこからブロック階調が導出される。上述したように、ピクセル階調またはブロック階調の計算は、輝度比較のみ、彩度比較のみ、または輝度及び彩度比較の両方を合わせて含み得る。
【０１１１】
そうすることが望ましい場合、ＧI（ｒ，ｃ）を見つけるための上記の式は、欠けているブロック境界値を明らかにするように変形させることができる。例えば、ブロック外のサンプルは、境界値を明らかにするように式ＧI（ｒ，ｃ）を適応させる場合、ブロック内部の他の隣接サンプルと同じになるように外挿することも、仮定することもできる。あるいは、例えば、式の分母を通分することができ、例えば特定の方向の周辺サンプルがブロック外であるときは、そうした周辺サンプルは、比較において無視してよい。図示したように、複数のピクセル階調のブロック１３０８は、そのブロック中のすべてのピクセルに対するピクセル階調データを提供し得る。あるいは、複数のピクセル階調のブロック１３０８は、そのブロック中のすべてのピクセルに対するピクセル階調データを含み得るわけではない。
【０１１２】
図１４は、図１３のブロック１３０８中の複数のピクセル階調のヒストグラムである。より具体的には、ヒストグラム１４００は、ブロックがどのように特徴づけられ、または値をつけられるかを視覚化する。この例では、３０より下の８個のピクセル階調値、及び３０より上の８個のピクセル階調値がある。したがって、このブロック階調に対する中央値は３０である。（偶数個の候補の場合、中央値は、２つの中間候補値の平均として、または２つの中間候補値の一方もしくは他方として計算することができる）。中央値は、ブロックを平滑、テクスチャまたはエッジとして特徴づけるのに使うことができる。当然ながら、ピクセル階調または複数のピクセル階調のブロックが取得されると、ブロックを特徴づけるのに、他の基準を用いることもできる。例えば、ブロックは、ピクセル階調値の平均によって特徴づけることができる。ブロック値は、割り当てられると、特徴抽出方式において（例えば、平滑または非平滑。平滑、テクスチャ、エッジなど）、またはより微細化された制御機能において使うことができる。ブロック値は、適応エンコーディング戦略においてブロックがどのように扱われるか判定するのに使うことができる。
【０１１３】
ブロック値は、複数のピクセル階調を並べ替え、並べられた値から中央階調値を選択することによって選択することができる。例えば、ブロック内部の１組のピクセル階調、例えば｛１０、１４、２８、３６、３８｝は、その組の中の中央値ピクセル階調、すなわち２８に等しい、割り当てられたブロック値を有する。別の例では、ブロック値は、数値例に先行するその組の中の平均階調、すなわち２５．２に基づいて判定される。当然ながら、こうした組は、完全なブロック階調またはそのサブセットから取得することができる。
【０１１４】
Ｃ．特徴抽出情報の例示的な使用
図１５は、図１３、１４の例に続く、例示的ブロック特徴抽出フレームワークのグラフである。図示したように、０から最大３０までを含む範囲のブロック値をもつブロックが、平滑ブロックとして特徴づけられることになる。３０より大きいが６０以下の範囲のブロック値をもつブロックは、テクスチャブロックとして特徴づけられることになり、６０より大きいブロック値をもつブロックは、エッジブロックとして特徴づけられることになる。
【０１１５】
あるいは、エンコーダは、別の特徴抽出フレームワーク、例えば、ブロックまたはビデオピクチャの他の部分に対する他の及び／または追加の特徴抽出を含むものを用いる。異なる階調及び基準に対して、フレームワークは、スケール及び／または次元数が変わり得る。
【０１１６】
エンコーダは、エンコーディング決定を行うとき、ブロックまたはビデオピクチャの他の部分の特徴抽出を用いることができる。表２は、例示的適応符号化方式の特徴を、図１５を参照して記載したブロック特徴抽出に関係づける。図示したように、異なるように特徴づけられたブロックは、１つまたは複数の適応特徴によって異なるように扱われる。
【０１１７】
【表２】
0005391290.tif 000009
【０１１８】
表２に示す様々な適応特徴については、本文書全体を通して論じ、後でさらに論じる。あるいは、エンコーダは、ブロック特徴抽出への、適応特徴決定の別のマッピングを用いる。さらに、本明細書において記載するいくつかの特徴は、映像コンテンツの特徴抽出を検討する必要はない。
【０１１９】
ＩＶ．テクスチャレベルに基づく差分量子化
差分量子化において、エンコーダは、ピクチャの異なる部分に対して、量子化ステップサイズ（本明細書では、量子化パラメータまたは一部の実装形態ではＱＰとも呼ぶ）を変化させる。通常、マクロブロックまたは他のサブピクチャレベルでのＱＰを変化させることを伴う。エンコーダは、ＱＰをどのようにして変化させるかの決定を行い、そうした決定を、必要に応じてデコーダに信号通知することができる。
【０１２０】
以前のエンコーダでは、二値差分量子化（２つのＱＰの間で変化させる）及び多値差分量子化（３つ以上のＱＰの間で変化させる）を用いていた。例えば、ある二値差分量子化手法では、ピクチャエッジにあるマクロブロックに対して１つのＱＰが使われ、ピクチャのそれ以外の部分にあるマクロブロックに対して別のＱＰが使われる。これは、全体的な表示品質を保つのに詳細部が比較的重要でない、ピクチャエッジでビットを節約するのに有用であり得る。多値差分量子化手法では、より多数の異なるＱＰを、ピクチャ中の個々のマクロブロックに対して使うことができる。例えば、エンコーダは、マクロブロックに対してＱＰを選び、現在のピクチャに対するＱＰとマクロブロックに対するＱＰとの間の差分を信号通知することができる。
【０１２１】
量子化アーチファクトに対する知覚感度は、空間及び時間ドメイン両方におけるビデオのテクスチャレベルと大いに関連する。高テクスチャレベルはしばしば、品質劣化及び量子化アーチファクトを隠し得るマスキング効果を結果として生じる。ただし、テクスチャレベルがより低い領域（例えば、平滑領域）では、劣化及び量子化アーチファクトは、より可視的である。以前のエンコーダでは、ビデオピクチャの一部の部分（例えば、ピクチャエッジ）に対して量子化調整を行っていたが、本明細書において記載するより包括的なコンテンツに基づく差分量子化戦略により、多くのシナリオにおいて速度歪み性能が向上する。
【０１２２】
したがって、記載する技術及びツールの多くでは、テクスチャに基づく差分量子化（本明細書では、テクスチャＤＱと呼ばれる）を用いて、様々なテクスチャレベルに基づいてビットを割り振り、より優れた知覚品質を達成する。テクスチャＤＱから、テクスチャ情報に基づいて、かついくつかのケースでは、時間分析情報など他の情報に基づいて映像を符号化するための異なるＱＰが選ばれる。エンコーダは、テクスチャ情報（及び可能であれば他の情報）を分析し、ピクチャ中の８×８ブロックやまたはマクロブロックなど、適切な領域（テクスチャＤＱ領域）にテクスチャＤＱを適用する。記載する技術及びツールの多くでは、潜在テクスチャＤＱ領域として平滑領域に焦点を当てる。平滑領域は、平坦な領域（不変またはほぼ不変の色のエリア）及び階調傾斜領域（領域に渡る、不変またはほぼ不変の速度で変化する色のエリア）を含む。平滑領域は、ノイズ、フィルム粒子、または他の色変化の小さいエリアに割り込まれても、平滑と見なすことができる。
【０１２３】
図１６は、テクスチャ情報に基づいて差分量子化を適用する、汎用化された技術１６００を示すフローチャートである。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術１６００を実施する。
【０１２４】
段階１６１０で、エンコーダは、現在のピクチャのテクスチャ情報（例えば、異なる領域が平滑、エッジ、またはテクスチャ領域のいずれであるかを示す特徴抽出やブロック値）を取得する。段階１６２０で、エンコーダは、現在のピクチャ中のテクスチャＤＱ領域（例えば、輪郭化アーチファクトが存在し得る平滑領域）またはテクスチャＤＱ領域群を見つける。段階１６３０で、エンコーダは、テクスチャＤＱ領域（群）にテクスチャＤＱを適用し、ピクチャをエンコードする。例えば、平滑領域が、高テクスチャ領域より小さいＱＰで符号化される。エンコードするべきより多くのピクチャがある場合、エンコーダは、段階１６４０で次のピクチャを入手し、必要に応じて次のピクチャにテクスチャＤＱを選択的に適用する。エンコーダは、ビデオピクチャに対するエンコードされたデータを、例えば記憶装置、通信接続、またはバッファに出力する。
【０１２５】
領域が平滑領域として扱われるべきかどうか判定するのに、異なるテクスチャＤＱ領域検出技術を用いることができる。例えば、エンコーダは、ある特定の領域がテクスチャＤＱ領域と見なされるべきかどうか判定するのに、異なるテクスチャ基準及び／または異なるテクスチャ閾値を用いることができる（かつ、閾値を適応的に調整することができる）。より優れた知覚ビデオ品質のためのビットを割り振るのに、適応量子化値マッピングを用いることができる。差分量子化決定は、時間分析にも基づき得る（すなわち、将来ピクチャを考察して、長期にわたる領域の特性に基づく決定を行う）。
【０１２６】
差分量子化決定は、イントラピクチャ及び予測ピクチャ両方に対して行うことができる。予測ピクチャの場合、差分量子化ピクチャの間のＰピクチャ及びＢピクチャ差分量子化間隔を制御することができる。さらに、優的な（dominant）高テクスチャエリアが存在する場合のピクチャのテクスチャを観察することによって、平滑領域テクスチャ閾値を、比較的小さいＱＰで（優的な高テクスチャエリアに比較して）比較的平滑な領域を符号化するように緩和することができる。
【０１２７】
上のセクションＩＩＩで図１２〜１５を参照して記載したのと同様の技術は、現在のピクチャに対するテクスチャマップを生成するのに用いることができる。例えば、エンコーダは、セクションＩＩＩで記載したように、ピクチャに対するテクスチャレベル用の階調を、ピクチャに対するＹ、Ｕ、Ｖチャネル中の第１の導出物（差）として算出する。マクロブロック形式が４：２：０の場合、算出プロセスを高速化するために、エンコーダは、Ｙチャネルを２：１の因子で水平及び垂直にダウンサンプリングすることができる。エンコーダは、各ピクセルに対するＹ、Ｕ、Ｖの階調を水平及び垂直方向両方に合計する。最大解像度の８×８ブロックの場合、エンコーダは、ダウンサンプリングされたピクチャ中の対応する４×４ブロックにおける階調の和の平均を計算して、ブロック階調値として使う。階調の平均の計算は、計算上、セクションＩＩＩで記載した中央値の計算より複雑でない。
【０１２８】
あるいは、エンコーダは、ピクチャのテクスチャ情報を、他の何らかのやり方で取得する。例えば、エンコーダは、階調を算出する異なる階調方向を選び、輝度チャネルに対してのみ階調を算出する、などを行う。テクスチャ情報は、どのようにして取得されまたは算出されようとも、次いで、テクスチャＤＱ決定を行うのに使うことができる。
【０１２９】
テクスチャマップは、ピクチャの相異なる部分のテクスチャレベルを示す。例えば、テクスチャマップは、ピクチャ中の平滑領域（例えば、ブロック、マクロブロック、エッジ、または他のエリア）及びテクスチャ加工された領域を識別するのに使うことができる。記載した差分量子化技術は、テクスチャマップ中の情報に基づいて、ピクチャの適切な部分に対して実施することができる。あるいは、エンコーダは、最初にテクスチャマップを作成することなく、テクスチャ情報を用いる。
【０１３０】
Ａ．時間分析（temporal analysis）
現在のビデオピクチャからのテクスチャ情報に加えて、正確な差分量子化決定を行うのに、時間分析を用いることができる。時間分析を用いる理由の１つは、平滑領域がいくつかのピクチャに渡って平滑なままである場合、特に他のピクチャが動き補償において平滑領域を参照するとき、平滑領域に対して比較的小さいＱＰを使う際の影響力が、より大きくなるからである。逆に、平滑ブロックが将来ピクチャ中の高テクスチャまたはエッジブロックで置き換えられた場合、比較的小さいＱＰを使うことの利益が１つ失われる。したがって、エンコーダは、現在のピクチャ中に平滑領域を見つけた後で将来ピクチャを考察し、領域の平滑性が将来ピクチャ中でどのように変わるかに基づいて差分量子化決定を行う。エンコーダは、先行ピクチャ、例えば、表示順序において現在のビデオピクチャに先行するＢピクチャを考察するが、動き補償において現在のビデオピクチャを参照することもできる。
【０１３１】
図１７は、時間分析を用いてテクスチャＤＱ決定を行う例示的技術１７００を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術１７００を実施する。
【０１３２】
段階１７１０で、エンコーダは、ビデオシーケンスにある現在のピクチャ中の現在のブロックに対してテクスチャ分析を実施する。例えば、エンコーダは、ブロックの階調情報を考察する。エンコーダは、階調情報を、ブロックに対する階調閾値と比較し、ブロックを平滑または非平滑（例えば、テクスチャ、エッジ）と分類することができ、この場合、階調閾値は、固定され、または現在のピクチャまたはビデオシーケンスの他の部分に対して動的に設定される。あるいは、エンコーダは、現在のピクチャ中の他の何らかの部分向けにテクスチャ分析を実施する。
【０１３３】
段階１７２０で、エンコーダは時間分析を実施する。エンコーダは、自動的に、または現在のブロックが平滑ブロックと分類された場合のみ、時間分析を実施することができる。例えば、エンコーダは、現在のピクチャ中の平滑ブロックが、将来ピクチャ中で平滑なままであるかどうか判定する。平滑な場合、現在のピクチャ中の平滑領域は、後で比較的小さいＱＰで符号化される。あるいは、エンコーダは、現在のピクチャ中の平滑ブロックが先行ピクチャ中、または先行及び将来のピクチャ両方の中でも平滑だったかどうか判定する。
【０１３４】
エンコーダが分析する先行及び／または将来のピクチャの数は、実装に応じて変わり得る。平滑領域が将来ピクチャ（例えば、次のピクチャまたは他の何らかの時間的に近いピクチャ）中で、テクスチャ加工された領域で置き換えられた場合、現在のピクチャ中の平滑領域は、より大きいＱＰで符号化することができよう。というのは、比較的小さいＱＰを使うことの利点は、おそらく持続性がないからである。一実装形態では、差分量子化決定を行う際、時間的により近いピクチャが、より離れたピクチャより重く重みづけされる。エンコーダが考察する先行及び／または将来ピクチャの重みづけ及び数は、実装に応じて変わり得る。
【０１３５】
算出を簡単にするために、エンコーダは、将来ピクチャ中の現在のブロックと、対応するブロックを比較するための単一の値を見つけることができる。例えば、輝度値は平滑ブロック中でかなり一貫性があるので、将来ピクチャ中の対応するブロックの類似を測定するために、ブロックに対する輝度値の平均値が算出される。以下の例式（７）で、将来ピクチャ中の対応するブロックの将来の平滑性の「強度」Ｓ（ｔ）は、現在のブロック中の平均輝度値と将来ピクチャ中の対応するブロックとの間の重みづけされた絶対差、２つの将来ピクチャ中の対応するブロックの平均輝度値などの和によって算出される。
【０１３６】
【数７】
0005391290.tif 000010
【０１３７】
上式（７）で、ｎは時間的な「先見」ピクチャの総数であり、Ｃ（ｎ）は、２／（ｎ＊（ｎ＋１））となるように定義される規格化因子であり、Ｍ（ｔ）は、時間ｔでのピクチャ中のブロック（または対応するブロック）に対する輝度値の平均値である。エンコーダは、将来の平滑性の代わりに、またはそれに加えて、過去の平滑性を測定することもできる。あるいは、エンコーダは、平滑性の時間分析において別の重みづけシステム及び／または平滑性基準値を用いる。
【０１３８】
図１７を再度参照すると、段階１７３０で、エンコーダは、テクスチャ分析及び時間分析の結果を用いて、ブロックをテクスチャＤＱブロックと分類するかどうか判定する。例えば、エンコーダは、平滑ブロック（ただし他のブロックではなく）に対する平滑性強度Ｓ（ｔ）を計算し、平滑性強度Ｓ（ｔ）を時間平滑化閾値と比較する。時間平滑化閾値は、固定することもでき、動的に設定することもできる。
【０１３９】
図１７において、エンコーダが、現在のブロックが平滑ブロックであること、及び先行及び／または将来ピクチャ中の対応するブロックも平滑であることを発見した場合、エンコーダは、段階１７４０で、テクスチャＤＱブロックのカウントに現在のブロックを加える。エンコーダは、テクスチャＤＱブロックのカウントを使って、ピクチャに対してテクスチャＤＱを実施するかどうか判定することができる。あるいは、エンコーダは、時間分析を他の何らかのやり方で用いて、テクスチャＤＱ決定を行う。
【０１４０】
分析するべきブロックがそれ以上ある場合、エンコーダは、段階１７５０で次のブロックを入手し、図１７に示すプロセスを繰り返す。これは、エンコーダが現在のビデオピクチャのブロックを評価するまで続く。その時点で、エンコーダは、エンコーディング決定において平滑ブロックのカウントまたは時間分析の他の結果を用いる。
【０１４１】
図１７は、ブロック単位での時間分析を実施するエンコーダを示すが、代替的には、エンコーダは、時間分析をマクロブロック単位で、または他の何らかの領域単位で実施する。
【０１４２】
Ｂ．テクスチャＤＱ閾値及び分離平滑ブロックフィルタリング
エンコーダが時間分析を用いても用いなくても、エンコーダは、テクスチャＤＱをいつ適用するか決定する際、他のいくつかの機構を用いることができる。エンコーダは、ＤＱを実施するかどうかについての決定を行い、行う場合、テクスチャＤＱ領域に対してＱＰがどの程度細かければよいか決定するのに、１つまたは複数の普及閾値（例えば、ピクチャ中の平滑ブロックのパーセンテージ）を使うことができる。例えば、ピクチャ中の平滑ブロックの数またはパーセンテージが閾値より上の場合、エンコーダは、平滑コンテンツを小さいＱＰでエンコードするあまりに多くのビットを費やすことを避けるために、比較的粗いステップサイズを選ぶことができる。エンコーダは、平滑ブロックの数またはパーセンテージが、ピクチャ中で少しでもテクスチャＤＱを使うのに十分かどうか判定するためのより低い閾値も有し得る。
【０１４３】
別のビットレート削減法は、特定の平滑ブロックが、大部分がテクスチャ加工された領域内にあるときは、そうした平滑ブロックをテクスチャブロックとして扱うことである。これは分離平滑ブロックフィルタリングと呼ぶことができる（平滑ブロックは、このようにしてフィルタリングされるように完全に「分離される」必要があるわけではないが）。例えば、テクスチャ加工されたブロックで囲まれる平滑ブロックは、テクスチャ加工されたブロックより小さいＱＰで符号化される必要はない。というのは、平滑ブロック中の量子化アーチファクトは、テクスチャ加工された周辺コンテンツによっておそらくマスクされるからである。その結果、エンコーダは、分離平滑ブロックに対してテクスチャＤＱを実施しないことを選ぶことができる。エンコーダは、ピクチャ中の平滑ブロックの数またはパーセンテージを算出するときに、分離平滑ブロックを軽視してもよい。
【０１４４】
図１８は、閾値及び分離平滑ブロックフィルタリングを用いてテクスチャＤＱ決定を行う例示的技術１８００を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術１８００を実施する。
【０１４５】
段階１８１０で、エンコーダは、現在のピクチャ中に平滑ブロックを見つける。例えば、エンコーダは、図１７を参照して記載したテクスチャ分析及び時間分析を実施する。あるいは、エンコーダは、他の何らかのやり方で、現在のピクチャ中に平滑ブロックを見つける。
【０１４６】
段階１８２０で、エンコーダは、分離平滑ブロックフィルタリングを実施する。例えば、エンコーダは、現在のピクチャ中で非平滑ブロックによって囲まれる単平滑ブロックを削除する。エンコーダは、異なる多くの決定モデルを使って、分離平滑ブロックフィルタリングを実施することができる。例えば、エンコーダは、平滑ブロックを、そのすべての隣接ブロックがテクスチャ加工されたブロックであるときのみ、テクスチャ加工されたブロックとして扱うことを選ぶことができる。あるいは、エンコーダは、平滑ブロックを、その一定数の隣接ブロックがテクスチャ加工されている場合に、テクスチャ加工されたブロックとして扱うことを選ぶことができる。あるいは、エンコーダは、分離平滑ブロックを、より大きい（例えば、２もしくは３）グループごとにまとめて、かつ／またはブロック（群）が分離されるかどうかについての他の何らかのテストを用いて削除する。
【０１４７】
段階１８３０で、エンコーダは、ピクチャ中の平滑ブロックのパーセンテージを、低閾値（例えば、ピクチャ中の総ブロックの１〜２％）と突き合わせる。平滑ブロックのパーセンテージが低閾値を下回る場合、エンコーダは、このピクチャに対してテクスチャＤＱが使われないと判定する（段階１８４０）。平滑ブロックのパーセンテージが低閾値を上回る場合、エンコーダは、段階１８５０で、パーセンテージを、高閾値と突き合わせる。この高い方の閾値が、平滑ブロックに対するＱＰを選ぶのに使われる。パーセンテージが高閾値より高い場合、エンコーダは、テクスチャＤＱを実施するが、ビットレートを削減するために、平滑ブロックに対して、比較的粗いＱＰを選ぶ（段階１８６０）。パーセンテージが高閾値より低い場合、エンコーダは、平滑ブロックに対して比較的細かいＱＰを選ぶ（段階１８７０）。分析するべきピクチャがそれ以上ある場合（段階１８８０）、エンコーダは、他のピクチャに対してプロセスを繰り返すことができる。閾値の数及び閾値パーセンテージ値は、実装に応じて変わり得る。
【０１４８】
代替的には、エンコーダは、テクスチャＤＱ閾値を用いずに分離平滑ブロックフィルタリングを実施し、または分離平滑ブロックフィルタリングなしでテクスチャＤＱ閾値を使う。あるいは、エンコーダは、分離平滑ブロックフィルタリングなしで、またはＤＱ閾値を使わずにテクスチャＤＱを実施する。
【０１４９】
Ｃ．適応テクスチャレベル閾値
エンコーダは、固定されたテクスチャレベルまたは平滑化閾値を使って、所与のブロックがテクスチャＤＱブロック（例えば、平滑ブロック）と見なされるべきかどうか判定することができる。ＤＱシグナリングのビットレートコスト（例えば、「すべてのマクロブロック」二値ＤＱシグナリングシナリオにおいて、マクロブロックごとに１ビット）及びピクチャのいくつかの部分を比較的小さいＱＰで量子化するビットレートコストを考慮に入れると、閾値は、テクスチャＤＱのコストに対するチェックとして作用する。例えば、エンコーダは、（図１３、１４を参照して記載した技術または他の何らかの技術を用いて）ブロックに対するブロック値を取得し、ブロック値を固定されたテクスチャレベル／平滑化閾値（例えば、図１５を参照して記載した閾値）と比較する。
【０１５０】
エンコーダは、テクスチャレベル／平滑化閾値を適応的に変更することもできる。例えば、平滑ブロックの知覚性はたくさんの高テクスチャコンテンツを有するピクチャ中で変わり得るので、ブロックを平滑ブロックと分類するテクスチャレベル閾値は、中間テクスチャまたは高テクスチャピクチャ中で緩和してよい。これは、適応テクスチャレベル閾値の例である。エンコーダは、ある閾値範囲内の、いくつかの異なる閾値を選択させる。一実装形態では、平滑ブロックに対する適応テクスチャレベル閾値は、ブロック値１４とブロック値３０の間で変化させることができる。異なるテクスチャレベル閾値に対して、異なる差分量子化マッピングを用いることができる。適応テクスチャレベル閾値は、より平滑な領域内で品質を向上させるために、より高いテクスチャフレーム中のより平滑な領域にビットを割り振るのに有用であり得る。
【０１５１】
図１９は、高テクスチャピクチャに対するテクスチャレベル閾値を選択的に調整する技術１９００を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術１９００を実施する。エンコーダは、ピクチャ中の優的な高テクスチャコンテンツの存在を検出することによって、テクスチャレベル閾値を調整するかどうか判定する。一実装形態では、高テクスチャコンテンツの検出は、テクスチャヒストグラムにおけるサイズが１０のスライディングウィンドウ中のテクスチャ「エネルギー」の算出によって実装される。
【０１５２】
図１９を参照すると、エンコーダは、適応テクスチャレベル閾値技術１９００における段階１９１０で、ピクチャのテクスチャ情報（例えば、テクスチャレベルヒストグラム）を取得する。例えば、エンコーダは、上述したようにテクスチャマップを取得し、情報からテクスチャレベルヒストグラムを作成する。
【０１５３】
段階１９２０で、エンコーダは、ピクチャが高テクスチャピクチャであるかどうかチェックする。ピクチャが高テクスチャピクチャの場合、エンコーダは、段階１９３０で、ピクチャに対するテクスチャレベル閾値を調整する。ピクチャが高テクスチャピクチャでない場合、エンコーダは、テクスチャレベル閾値を調整せずにピクチャを処理する（段階１９４０）。エンコーダは次いで、他のピクチャに対するテクスチャレベル閾値を分析し選ぶことができる（段階１９５０）。あるいは、エンコーダは、ピクチャ中の異なるレベルの高テクスチャコンテンツに対して、スライド式の異なるテクスチャレベル閾値を適用する。
【０１５４】
例えば、ピクチャ中の優的な高テクスチャコンテンツの程度をチェックするために、エンコーダは、ピクチャに対するテクスチャヒストグラムを計算する。エンコーダは、テクスチャヒストグラムにおけるスライディングウィンドウを適用して、テクスチャエネルギーを算出し、ピークまたは顕著な高テクスチャ帯域を判定する。式（８）は、エンコーダがウィンドウにおけるテクスチャエネルギーを算出するための一方法を示す。スライディングウィンドウは、最小テクスチャレベル閾値ｇ０（デフォルトで３０）からスライドし始め、エンコーダは、ｇ０でのウィンドウ値Ｗ（ｇ）を計算する。スライディングウィンドウは、そのウィンドウに対するテクスチャエネルギーの算出の後に右へ１シフトし、エンコーダは、新規値ｇ０で始まる次のウィンドウ値Ｗ（ｇ）を計算する。これは、エンコーダがヒストグラムにおいて表されるテクスチャレベルの最大に達するまで続く。
【０１５５】
Ｆ（ｇ）をピクセルごとのテクスチャレベルのヒストグラムとする。Ｅ（ｇ）を、そのテクスチャレベルに対するテクスチャエネルギーとし、Ｅ（ｇ）＝Ｆ（ｇ）＊ｇである。エンコーダは、スライディングウィンドウのテクスチャエネルギーＷ（ｇ）を以下のように算出する。
【０１５６】
【数８】
0005391290.tif 000011
【０１５７】
最大スライディングウィンドウエネルギーＷ（ｇ）が、全体的なピクチャエネルギーのある特定のパーセント閾値を超えた場合、その最大スライディングウィンドウエネルギーＷ（ｇ）に対するｇ０が、平滑領域に対する閾値を調整するのに使われる。
【０１５８】
図２０は、ｇ０からの新しい適応平滑領域閾値を判定するのに使われる疑似コード２０００を示す。ｇ０が１００を超える場合、適応閾値は３０に設定される。エンコーダは、ｇ０が３０より小さいかどうかもチェックし、小さい場合、適応閾値を１４に設定する。３０≦ｇ０＜１００の場合、適応閾値は、テーブルｇ＿ｉＦｌａｔＴｈＴａｂｌｅにある値に設定される。ビデオ品質を保つのを助けるために、最後の適応閾値との新しい適応閾値の最大差は、シーン変更キーピクチャを除くすべてのピクチャに対して＋／−４を上限とする。適応平滑閾値は、テクスチャ加工されたブロックを識別するのに使われる閾値を超えるべきでない。例えば、図２０において、最高適応閾値は３０である。
【０１５９】
あるいは、エンコーダは、他の何らかのやり方で（例えば、異なるテクスチャ強度またはエネルギー基準値で、スライディングウィンドウなしで、異なるように構成されたスライディングウィンドウで、テーブルまたは他のデータ構造中の異なる閾値で、適応閾値の間の差に上限を設けずに、他の何らかのやり方で適応閾値における差に上限を設けて、など）、テクスチャレベル閾値を適応的に調整する。
【０１６０】
Ｄ．Ｉピクチャ及びＰピクチャの差分量子化
記載した差分量子化技術及びツールは、イントラピクチャ及び予測ピクチャ上で単独でも、組み合わせても用いることができる。Ｉピクチャ差分量子化（ＩピクチャＤＱ）という用語は、Ｉピクチャへの差分量子化の適用を指し、Ｐピクチャ差分量子化（ＰピクチャＤＱ）という用語は、Ｐピクチャへの差分量子化の適用を指す。ＩピクチャＤＱを使用すると、結果としてより高い品質Ｉピクチャを生じ、品質の向上は、これらＩピクチャに従属する予測ピクチャに対して、より長く保つことができる。ＰピクチャＤＱは、イントラ及びインターブロック両方においてＰピクチャの品質をさらに向上させ得るが、そうしたＰピクチャの品質は、予測の元になるピクチャの品質にも依存することになる。同様に、以後の予測ピクチャの品質に与えるＰピクチャＤＱの影響力は、以後の予測ピクチャの、予測の元になるピクチャとの類似性に依存することになる。
【０１６１】
Ｅ．差分量子化間隔
ＩピクチャＤＱ及びＰピクチャＤＱは両方とも、本明細書において記載する技術の１つまたは複数を用いて、異なるテクスチャレベルブロックに対して異なるＱＰを適用するかどうか決定する。品質とビット使用の釣合いをとるために、ＰピクチャＤＱに対して費やされるビットの量を制御するのに、ＰピクチャＤＱ間隔を用いることができる。例えば、エンコーダは、ｎ≧１であるｎ個のＰピクチャごとに、１つに対してＰピクチャＤＱを使うことを選ぶが、差分量子化Ｐピクチャの間の間隔中のピクチャに対してはＰピクチャＤＱをスキップする。エンコーダは、いくつかのＰピクチャの知覚品質を向上させるように、差分量子化用にビットを費やし、そうした品質向上は、他の予測ピクチャに持ち越される。同時に、ＤＱ間隔は、エンコーダが予測ピクチャの差分量子化用に費やすビットの全体数を制限するのを助ける。
【０１６２】
代替的には、エンコーダは別の間隔を選択する。例えば、エンコーダは、Ｉピクチャごとにただ１つのＰピクチャに対してＰピクチャＤＱを使うことを選んでも、他の何らかの間隔を選んでもよい。間隔は、固定でも適応でもよい。例えば、エンコーダは、エンコードされるコンテンツのタイプに基づいて、ＰピクチャＤＱ間隔を適応的に調整してよい。
【０１６３】
Ｖ．階調傾斜検出
映像圧縮において混入される可視的な様々なアーチファクトのうち、輪郭化が、量子化によって引き起こされ得る特定の１つのアーチファクトである。輪郭化アーチファクトは、そうでなければ連続する、非常に平滑な領域であるもの、例えば空、水などにおける、構造化された階調の不連続として、人間の目によって知覚される。このような不連続は、非常に混乱させるものとなる場合があり、ピクチャの他の部分が可視的な歪みがほとんどなく符号化されていても、人間観察者に、ピクチャ全体がひどく歪んでいると結論づけさせる可能性がある。
【０１６４】
階調傾斜領域は、輪郭化アーチファクトを生じさせ得る。一定義によると、領域が平滑または比較的平滑であるが領域内部でピクセル値が徐々に変わる場合、領域は、階調傾斜領域であると見なされる。したがって、階調傾斜領域及び平面領域が両方とも平滑領域であると見なされるが、階調傾斜領域は、平面領域とは異なる。一定義によると、平面領域は、平面領域全体を通して不変または比較的不変なピクセル値によって特徴づけられる。階調傾斜領域は通常、はっきりとしたエッジ及び広範なテクスチャ細部を欠いている。
【０１６５】
図２１は、階調傾斜領域の２つの例を示す。各領域内の階調傾斜方向は、矢印で表される。階調傾斜領域２１００内で、輝度値は、領域の上から下に向かって徐々に増大する。階調傾斜領域２１００内の傾斜の方向は、領域の各部分において同じである。階調傾斜領域２１１０内で、輝度値は、領域の中心からエッジに向かって徐々に増大する。階調傾斜の方向は、階調傾斜領域２１１０内部で変化する。ただし、狭い近隣にある各点での階調傾斜方向は、中心点を含む近隣を除いた、近隣にある他の点での階調傾斜方向の小さい角θ内である。図２１に示すように、階調傾斜領域は、階調傾斜方向が領域全体において不変の領域、及び階調傾斜方向が近隣において小さく変化する領域を含む。
【０１６６】
図２２Ａは、階調傾斜領域２２１０、テクスチャ加工された領域２２２０、シャープエッジ領域２２３０及び平坦領域２２４０を有する例示的ピクチャ２２００を示す図である。図２２Ｂは、階調傾斜領域２２１０内での量子化の結果を示す図である。現在見えている（例えば、マクロブロック２２５０内部の）バンド効果は、輪郭アーチファクトである。図２２Ｃは、マクロブロック２２５０の詳細を示す。マクロブロック２２５０中の輝度サンプルの上半分に対する変換係数の量子化は、ＤＣ値６８に起因する均一な値を結果として生じる。マクロブロック２２５０中の輝度サンプルの下半分に対する変換係数の量子化は、ＤＣ値７０に起因する均一な値を結果として生じる。したがって、輝度サンプルに対する変換係数の量子化により、マクロブロック２２５０中の上半分の８×８ブロックと下半分の８×８ブロックとの間の可視的な輪郭アーチファクトが作成されている。
【０１６７】
多くの既存ビデオエンコーダでは、ピクチャ中の輪郭化アーチファクトを削減しようとする試みにおいてビデオピクチャ全体に適用される技術を用いている。このような技術は、特に輪郭化アーチファクトをほとんどまたは全く含まない領域内で、ビットの浪費を結果として生じ得る。したがって、記載するいくつかの技術及びツールにより、エンコーダは、輪郭化アーチファクトが起こりそうな階調傾斜領域を検出することができる。階調傾斜領域が検出されると、エンコーダは、階調傾斜領域内での輪郭化アーチファクトの混入を削減し、または避ける符号化決定（例えば、ＱＰの調整）を行うことができる。そうすることによって、エンコーダは、ビットをより効果的に割り振り、より優れた表示品質を達成することができる。
【０１６８】
階調傾斜領域を検出するために、エンコーダは、以下の技術の１つまたは複数を実装することができる。  
１．検出された領域（群）内での輪郭化アーチファクトの混入の削減または除去に注目した符号化決定を用いた階調傾斜領域検出。  
２．計算コストを削減し、かつ／またはフィルム粒子などの異常があるにも関わらず正確な階調傾斜領域検出を可能にするための、領域に基づく階調推定及びダウンサンプリング。  
３．局所的な近隣における漸進階調変化を検出するための階調一貫性チェック。  
４．ピクチャ中の階調傾斜領域（群）の存在に関するバイナリ決定を行うためのバケット投票（bucket voting）。  
５．エンコーダが適切な符号化決定を行うのを助けるための（例えば、マクロブロックレベルでの）階調傾斜マスク及び階調方向マップの生成。
【０１６９】
図２３は、汎用化された領域に基づく階調傾斜検出技術２３００を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術２３００を実施する。いくつかのケースでは、領域に基づく階調傾斜検出技術２３００は、ピクチャ中の各ピクセルに対する階調傾斜方向を見つける必要をなくすことによって、階調傾斜コンテンツのより速い検出を可能にする。例えば、ピクチャは、同じサイズの非重複矩形領域に分けられる。領域のサイズは、実装形態に応じて変わり得る。一実装形態では、領域は、１６×１６マクロブロック（４つの８×８ブロック）である。好ましくは、領域は、マクロブロック整列を可能にするサイズである。
【０１７０】
段階２３１０で、エンコーダは、現在の領域が平滑領域であるかどうかチェックする。例えば、それに割り当てられたブロック階調値が３０より小さい場合、エンコーダは、８×８ブロックが平滑として特徴づけられるピクチャのテクスチャマップを用い、またはエンコーダは、セクションＩＩＩまたはＩＶで記載した別の技術を用いて、現在の領域が平滑であるかどうかチェックする。領域が多様なブロックを含むとき、領域は、領域内に含まれるすべてのブロックが平滑である場合は（または代替的には、ほぼ最小数のブロックが平滑である場合は）平滑領域であると見なされる。異なる実装形態では、ある特定の領域またはブロックが平滑であるかどうか判定するための異なる基準を用いてよい。例えば、ピクチャがダウンサンプリングされる場合、領域が平滑であるかどうか判定するための基準は、異なり得る。
【０１７１】
領域が平滑でない場合、次の領域が処理される（段階２３２０）。平滑領域に対して、エンコーダは、段階２３３０で階調方向を見つける。例えば、エンコーダは、図２６、２７を参照して記載したような技術を用いて階調方向を見つける。あるいは、エンコーダは、他の何らかの技術を用いて階調方向を見つける。
【０１７２】
段階２３４０で、エンコーダは、領域に対する階調方向を見つけるのに用いられる技術及び基準に依存する閾値及び／または決定実行論理を使って、領域に対して階調傾斜決定を行う。処理されるべき領域がそれ以上ある場合、エンコーダは、次の領域を処理する（段階２３２０）。一実装形態では、ピクチャ中の異なる領域に対する初期階調方向を計算した後、エンコーダは、ピクチャ中でスライディングウィンドウを適用することによって、異なる領域内に階調傾斜が存在するかどうかを示すバイナリマスクを生成する。バイナリマスクにおける情報により、エンコーダは、正確な階調傾斜決定を行うことができる。
【０１７３】
図２４は、図１０に示したようなビデオエンコーダ内の例示的な階調傾斜領域（gradient slope region）検出装置（ＧＳＲ検出装置）２４００のブロック図である。ＧＳＲ検出装置２４００は、現在のピクチャ２４０５から入力としてピクセルデータを入手する。
【０１７４】
ピクチャサイズ及び可能性としては他の因子に応じて、ＧＳＲ検出装置２４００は、ダウンサンプリングモジュール２４１０においてダウンサンプリングを実施するかどうか判定する。例示的ダウンサンプリング技術については、後で説明する。
【０１７５】
階調算出器２４２０は、（おそらくはダウンサンプリングされた）ピクセルデータ及びテクスチャマップ２４２５を入力として入手し、平滑領域に対する階調を算出する。例えば、階調算出器２４２０は、図２６、２７を参照して記載したような技術を用い、または他の何らかの技術を用いる。階調算出における例示的領域サイズは１６×１６であるが、領域のサイズは、実装に応じて変わり得る。ダウンサンプリングが適用されるかどうか、及びどの程度適用されるかに応じて、階調が算出される対象の領域は、元のピクチャ２４０５中で異なる量のエリアを表し得る。階調算出器２４２０は、平滑領域に対する階調方向を示すマップまたは他のデータ構造を出力する。
【０１７６】
一貫性チェッカー２４３０は、平滑領域に対する算出された階調を入手し、例えば、後で説明するように、そうした階調の角の一貫性をチェックする。一貫性チェッカー２４３０は、一貫性マップまたは算出された階調に対する一貫性情報を示す他のデータ構造を生じる。
【０１７７】
決定モジュール２４４０は、（一貫性チェックの後で）追加の決定規則を使って、平滑領域が階調傾斜領域と見なされるべきかどうか判定する。例示的決定規則及び基準については、後で説明する。決定モジュール２４４０は、一貫性マップまたは一貫性情報を示す他のデータ構造を検討し、算出された階調方向または他の情報を検討してもよい。決定モジュール２４４０は、階調算出において使われる領域サイズと同じまたは異なるサイズの領域に対する、マップまたは他のデータ構造における決定情報を出力する。
【０１７８】
各領域に対する決定は、マスクジェネレータ２４５０に与えられ、マスクジェネレータ２４５０は、ピクチャ中の領域に対する階調傾斜決定を示す階調傾斜マスク及び／またはバイナリ階調傾斜決定マスク２４９５を生じる。例えば、マスク２４９５は、各階調傾斜領域に対して「１」に等しいビット及び他の領域に対して「０」に等しいビットを含む。算出された階調を入力として受諾し、マスクジェネレータ２４５０は、ダウンサンプリング及びマスク決定を明らかにする、元のピクチャの異なる領域に対する最終的な階調傾斜を示す別のマスク２４９５を生じ得る。ＧＳＲ検出装置２４００が、階調算出の前にダウンサンプリングを実施すると、マスクジェネレータ２４５０は、ダウンサンプリングされた領域に対する階調傾斜を、元のピクチャの対応する領域に割り当てることができる。
【０１７９】
ＧＳＲ検出装置２４００のコンポーネントは、図２４において別々のモジュールとして示してあるが、こうしたコンポーネントの機能は、実装形態に応じて、異なるモジュールに再構成し、結合し、または分けることができる。さらに、ＧＳＲ検出装置２４００のコンポーネントは、他の実装形態では省略することができる。例えば、ダウンサンプリングは必要とされない。ＧＳＲ検出装置は、テクスチャマップを入力としてとる必要がなく、その代わりに、領域が平滑であるかどうかの指示を他の何らかのソースから受け取ることができる。ＧＳＲ検出装置は、一貫性チェッカーを使う必要がない。ＧＳＲ検出装置は、領域が階調傾斜領域であるかどうかについて何らかの種類の決定を行うことになるが、決定がどのようにして行われるかの詳細（決定モジュールにおける決定規則を含む）は、実装に応じて変わり得る。階調傾斜決定は、バイナリマスクに含まれる必要はなく、他の何らかのやり方で、エンコーダの他の部分に伝達することができる。
【０１８０】
Ａ．ダウンサンプリングを用いた領域に基づく階調方向推定
計算コストを削減するために、領域に対する階調方向を見つけるのに先立って、ダウンサンプリングを用いることができる。一実装形態では、元のピクチャ幅が１２８０より大きく高さが７２０より大きい場合、元のピクチャは、４：１ダウンサンプリングされる。例えば、ピクチャ幅が１９２０ピクセルかつピクチャ高さが１０８０ピクセルの１０８０ｐ配置において、デコーダは、幅が４８０ピクセルかつ高さが２７０ピクセルのダウンサンプリングされたピクチャを生じる。
【０１８１】
通常、ダウンサンプリングされたピクチャは、同じサイズの複数の非重複矩形領域に分けられる。例えば、ダウンサンプリングの後、各１６×１６領域は、元の最大解像度ピクチャの４つのマクロブロック（１６ブロック）に対応する。ダウンサンプリングされたピクチャ中の領域は、領域が対応する少なくとも１２個のブロックが平滑である場合、平滑領域であると見なされる。領域サイズは、実装に依存し、階調推定における領域と元のピクチャ中の領域との間の関係は、ダウンサンプリング比に応じて変化する。
【０１８２】
ダウンサンプリングは、フィルム粒子などの異常が存在するのにも関わらず、階調傾斜領域検出の正確さを向上させるのにも有用である。例えば、図２５に示すようなＤＣ値のブロックをもつ、ピクチャの一部分２５００を検討する。ピクチャ部分２５００の大部分は、ピクチャ部分の上から下に向かって徐々に増大するＤＣ値で示したように、一貫した階調傾斜方向を有する。ただし、白いサンプル値は、最大解像度で異常な階調傾斜方向を生じるフィルム粒子によって影響を受けるＤＣ値を表す。単純２：１ダウンサンプリングを水平かつ垂直に行うことにより、暗色の縁のあるサンプル値が、階調傾斜方向を算出するのに使われる。ダウンサンプリングされた値は一貫した階調傾斜を保つので、フィルム粒子は、階調傾斜の検出に影響を与えない。
【０１８３】
ダウンサンプリングは、他のピクチャ解像度に対して用いることができ、他のダウンサンプリング比も用いることができる。
【０１８４】
Ｂ．階調傾斜方向の算出
一実装形態では、平滑領域に対する階調傾斜方向を算出するために、（図２６において定義される）２つの１６×１６コンパスオペレータＫH及びＫVが領域に適用される。こうすることにより、領域に対して２つの階調ｇX、ｇYが生じ、一方は水平方向用で一方は垂直方向用である。１６×１６領域に対して、コンパスオペレータは、領域の一部の値に正の重み、及び領域の他の値に負の重みを与える。あるいは、コンパスオペレータは、階調を他の何らかのやり方で計算する。
【０１８５】
θで示される、階調方向の角度表示は、２つの階調から導出され、［０、２５５］内の整数にマップされる。図２７の疑似コード２７００は、図２６のコンパスオペレータを使って、領域に対する階調方向を計算する例示的手順（
【０１８６】
【数９】
0005391290.tif 000012
【０１８７】
は、要素ごとの積を示す）を示す。領域がテクスチャ加工された領域またはエッジ領域の場合、ルーチンは−２を返す。領域が平滑だが平坦である（領域に対する階調ｇX及びｇY向けの低絶対値によって指示される）場合、ルーチンは−１を返す。それ以外の場合、ルーチンは、階調傾斜を、同じ逆正接値に対する傾斜方向の間を区別するためのオフセット（例えば、正の逆正接値が、右上傾斜、それとも左下傾斜を示すのか）を用いて、水平階調ｇXに対する垂直階調ｇYの逆正接として計算し、傾斜値の範囲を正の数として表す。
【０１８８】
あるいは、階調方向は、他の何らかのやり方で計算される。例えば、エンコーダは、異なるコンパスオペレータ、傾斜領域に対する異なる閾値、傾斜を計算するための異なる論理、及び／または傾斜情報の異なる表現を用いる。
【０１８９】
Ｃ．近隣階調一貫性チェック
エンコーダは、領域が階調傾斜領域と見なされるべきかどうかについて正確な決定を行うのを助けるために、領域に対する階調一貫性チェックを実施することができる。階調一貫性チェックは、階調傾斜コンテンツ検出における「虚報」を避けるのを助ける。一実装形態では、階調傾斜一貫性チェックは、階調傾斜の一貫性を判定するための、３×３スライディングウィンドウ（３領域かける３領域）の使用を伴う。
【０１９０】
図２８は、階調傾斜領域に対する一貫性チェックを実施する技術を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術２８００を実施する。
【０１９１】
段階２８１０で、エンコーダは、スライディングウィンドウをピクチャ中の現在の領域に位置決めする。段階２８２０で、エンコーダは、スライディングウィンドウ中の領域の階調方向をチェックする。次いで、段階２８３０で、エンコーダは、現在の領域に対する一貫性決定を行う。例えば、（可能性としてはダウンサンプリングされた）ピクチャ中の検出された平滑領域の階調方向を与えられて、階調一貫性チェックが、３×３の隣接領域を含むスライディングウィンドウを用いて実施される。ウィンドウは、ラスタ走査順に動かされることにより、ウィンドウは、（例えば、ウィンドウを領域上でセンタリングし、一貫性チェックを実施し、次いで、ウィンドウをピクチャを横断するように左から右に動かすことによって）ピクチャ中の領域上に位置決めされる。所与のウィンドウ値に対して、一貫性チェックは、ウィンドウ内部の９個すべての領域の最大階調方向と最小階調方向（例えば、図２７を参照）との間の差が、３２より小さくなる（傾斜が０から２５５の数で表されるとき、４５度に等しい）よう要求する。この条件が満たされる場合、３×３組の領域に対する移動するウィンドウの値は１となり、満たされない場合は０となる。あるいは、エンコーダは、異なる機構を用いて、例えば、異なるサイズのスライディングウィンドウ、最大傾斜〜最小傾斜に対する異なる傾斜範囲閾値、傾斜一貫性に対する分散などの異なる測度、及び／または異なるチェックパターンを用いて、傾斜方向の一貫性をチェックし、あるいは領域の組とは反対の各領域に対するスライディングウィンドウ値を計算する。一貫性チェックは、異なる表現の傾斜情報に対しては変化する。
【０１９２】
エンコーダは次いで、次の領域の組を処理することができる（段階２８４０）。出力として、エンコーダは、マスクまたは決定情報を示す他のデータ構造を生じる。例えば、エンコーダは、スライディングウィンドウを位置決めし、ピクチャ中の領域の組に対して一貫性チェックを実施し、領域の各組に１（一貫した傾斜）または０という決定を割り当てることによって取得されたバイナリ一貫性マスク（本明細書では、ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋと呼ばれる）を生じる。
【０１９３】
任意選択で、エンコーダは、決定情報に対してさらに処理を実施する。一部の実装形態では、エンコーダは、ピクチャに対する階調一貫性決定を改善するのを助けるために、一貫性マスクに対するモーフォロジー演算（morphological operation）を実施する。２つの可能なモーフォロジー演算は、Ｅｒｏｄｅ及びＤｉｌａｔｅである。
【０１９４】
例えば、Ｅｒｏｄｅ演算は、ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋ中のすべてのビットに対して実施され、その後にＤｉｌａｔｅ演算が続く。Ｅｒｏｄｅ演算において、最も近い４つのピクセル（ここでは、ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋ中の値）中で、複数が最初に０の印をつけられた場合、最初に１の印をつけられたビットには、０の印がつけられる。Ｄｉｌａｔｅ演算において、最も近い４つのピクセル中で、複数が最初に１の印をつけられた場合、最初に０の印をつけられたビットには、１の印がつけられる。
【０１９５】
あるいは、エンコーダは、モーフォロジー演算も決定情報の他の後処理も使わずにマスクを生成する。
【０１９６】
Ｄ．決定規則及びバケット投票
一貫性チェックを実施した後でも、平滑領域の発生率は相当低い場合もあり、平滑領域が相当分離される場合もあるので、平滑領域を特別にエンコードするのは非効率的であろう。例えば、モーフォロジー演算を適用した後でも、依然として、差分量子化を必要としないように十分に分離される、ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋで表される階調傾斜領域が存在する場合がある。一部の実装形態において、エンコーダは、決定規則（例えば、バケット投票を含む）を使って、ピクチャ中の階調傾斜領域にＤＱが適用されるべきかどうか決定するのを助ける。図２４のＧＳＲ検出装置２４００では、決定モジュール２４４０がこのような決定を行う。
【０１９７】
一実装形態では、エンコーダは、現在のピクチャが、ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋに基づく重要な階調傾斜を含むかどうかに関する１つまたは複数のバイナリ決定を行う。マスクｃｏｎｓｉｓｔｅｎｃｙＭａｓｋは、同じサイズの２５個の矩形領域（バケットと呼ばれる）に分けられ、各行に５バケット、各列に５バケットがある。（したがって、「バケット」領域は、決定に使われる領域及び階調算出に使われる領域より大きい）。各バケット内部の１がカウントされる。Ｂｕｃｋｅｔｓ［ｉ］［ｊ］を、場所（ｉ，ｊ）でバケットに含まれる１の数とし、０≦ｉ，ｊ≦４である。水平及び垂直バケットの見積もり、すなわち、それぞれバケットの各列中の１の数及びバケットの各行中の１の数も、以下の関係によって算出される。
【０１９８】
【数１０】
0005391290.tif 000013
【０１９９】
本実装形態において、ピクチャは、以下の条件のどれかが満たされる場合、重要な階調傾斜を含むものと見なされる。  
１．（バケット分散に関係なく）ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋにおけるピクセルの少なくとも６％が１の印をつけられている、あるいは
２．バケットの１つまたは複数において、ピクセルの少なくとも７５％が１の印をつけられている、あるいは
３．バケット見積もりの１つまたは複数において、ピクセルの少なくとも２０％が１の印をつけられている。
【０２００】
例えば、サイズが９６０×１４４０のダウンサンプリングされたピクチャに対する１６×１６領域は、サイズが２０×３０のマスクで表され（各値は、ダウンサンプリングされたピクチャの３×３組の領域用）、マスクは、２５バケットに分けられ、各バケットは、一貫性マスクの２４領域に対応する。各バケットは、総計が２５×２４＝６００ビットであるｃｏｎｓｉｓｔｅｎｃｙＭａｓｋのうち２４ビットを含む。エンコーダは、図２９に示すように分散した、各バケット中の１の数をカウントする。エンコーダは、１の総数がすべてのビットの６％より大きいかどうかチェックする。この場合、（図２９に示す）１の総数は８３であり、これはすべてのビットの６％より大きい。したがって、この場合のエンコーダは、上記条件１を満たすことにより、バケット見積もりをスキップするはずである。１の総数が条件１に対する閾値より下だった場合、エンコーダは、いずれかのバケット中のビットの７５％が１である（条件２）かどうかチェックし、必要な場合は、水平及び垂直バケット見積もり（条件３）をチェックして、階調傾斜領域であると指示される領域が、後で説明するマクロブロックレベル階調傾斜マスクなど、階調傾斜マスク及び決定マスクが生成されるべきようなものであるかどうか判定する。
【０２０１】
あるいは、エンコーダは、マスクｃｏｎｓｉｓｔｅｎｃｙＭａｓｋまたは他の表現における一貫性情報を処理する、他の決定規則を使う。例えば、条件１、２、３に示すパーセント閾値は、実装に応じて変わり得る。あるいは、条件の１つまたは複数が省略され、または条件が、他の条件（例えば、バケット見積もりに対する異なる方向など）で順序付けられ、置き換えられ、もしくは補完される。一貫性情報のチェックとは別に、エンコーダは、ＤＱがピクチャ中の階調傾斜領域に適用されるべきかどうか、またはどの程度のＤＱが適用されるべきか決定する際、階調値及び／または他の情報を検討することもできる。別の代替形態として、エンコーダは、こうした決定規則を完全に省いても、単に階調傾斜マスクを生成する際にｃｏｎｓｉｓｔｅｎｃｙＭａｓｋを使ってもよい。
【０２０２】
Ｅ．マクロブロックレベル階調傾斜マスク生成
階調傾斜情報を、以後のエンコーダ決定実行に有用な形で提供するために、エンコーダは、情報をマップ、マスク、または他のデータ構造に入れる。情報は、階調傾斜領域存在／不在情報ならびに階調傾斜領域に対する実際の階調方向値を含み得る。
【０２０３】
階調傾斜存在／不在情報に対しては、階調傾斜領域が検出された場合、エンコーダは、階調傾斜マスクを生じる。例えば、エンコーダは、領域レベルマスク（ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋなど）を元のピクチャに対するマクロブロックレベルに戻すようにコンバートすることによって、マクロブロックレベル階調傾斜マスク（本明細書では、ＭＢＳｌｏｐｅＭａｓｋと呼ばれる）を生じることにより、可能なダウンサンプリングを検討する。ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋ中の各値は、元のピクチャ中の９つのマクロブロック、またはピクチャが４：１ダウンサンプリングされている場合は３６のマクロブロックに対応することに留意されたい。ｃｏｎｓｉｓｔｅｎｃｙＭａｓｋ中の、値が１の各ビットに対しては、エンコーダは、平滑でないマクロブロックを除く、ＭＢＳｌｏｐｅＭａｓｋ中の対応するマクロブロックに１の印をつける。平滑性チェックはやはり、階調傾斜検出における虚報を避けるのを助ける。例えば、一実装形態では、エンコーダは、テクスチャマップを使ってマクロブロック中のブロックに関するテクスチャ情報を取得し、マクロブロックは、マクロブロック内部の４つすべてのブロックが平滑である場合のみ、平滑と見なされる。
【０２０４】
あるいは、エンコーダは、階調決定情報を他の何らかの形で提供し、かつ／またはマクロブロック平滑性に対して他の何らかの決定を用いる。
【０２０５】
階調方向情報に対して、各領域の階調方向を、それに対応するすべての平滑なマクロブロックを割り当てることによって、階調方向マップが生成される。そうする際、エンコーダは、階調算出前のダウンサンプリングによる、元のピクチャのマクロブロックと階調領域との間の可能なサイズ差を明らかにする。
【０２０６】
生成された階調傾斜マスク及び階調方向マップは次いで、エンコーダにおいて、より優れた符号化決定を行うのに使われる。概して、階調傾斜領域検出装置によって生成された結果は、エンコーダによって、他の符号化決定を行うのに用いることができる。例えば、エンコーダは、生成された階調傾斜マスク及び／または階調方向マップに基づいて量子化決定を行うことができる。可能なエンコーダ決定のいくつかについては、後で説明する。
【０２０７】
ＶＩ．非ゼロＡＣ係数を維持するための量子化調整
通常、ピクチャは、エンコーダ内のレート制御ユニットによってピクチャレベル量子化パラメータを割り当てられる。同じピクチャレベルＱＰを使うと、高度にテクスチャ加工されたマクロブロックを表すのに使われるビットの量は通常、低テクスチャ加工されたマクロブロックを表すのに使われるビットの量よりはるかに大きい（１０〜５０倍も大きい）。しかし、人間の視覚システムは、高度にテクスチャ加工された密なエリア内では、歪みに対して、低くテクスチャ加工された平滑なエリア内よりも鈍感なので、低テクスチャ加工されたマクロブロックに対しては比較的小さいＱＰ、及び高度にテクスチャ加工されたマクロブロックに対してはより大きいＱＰを使うことは意味のあることである。
【０２０８】
このことは、マクロブロックを人間の視覚の重要性によって分類し（通常、ブロックの分散またはブロック内部の階調の強度を用いる）、目標数のビットを、何らかの知覚重みづけに比例して割り当てる、よく用いられる戦略につながる。修正されるべき、各マクロブロックに対する量子化パラメータは、ピクチャレベル量子化法を重みづけによって修正することによって選択される。
【０２０９】
変化が非常に少ない平滑領域内では、ブロックがしばしば、妥当な低さのＱＰでも、ＤＣ係数のみの（非ゼロＡＣ係数は残らない）エネルギーをもつように量子化されることが、実験により示されている。驚くべきことに、極度に平滑な領域内の隣接ブロック中のＤＣ値は、ブロックごとに１だけ変化し、知覚されるブロック状の、輪郭化アーチファクトは、絶対項におけるこのような小さい差で予期するよりずっと激しい。そうでなければ満足に符号化されていたピクチャ中の比較的小さい領域内でのこのタイプのアーチファクトの出現により、ピクチャ全体に対する知覚される全体的品質が低下させられる。
【０２１０】
従来の速度歪みに基づくとともに知覚に基づくマクロブロックＱＰ選択技術は、この状況をうまく扱わない。速度歪みの最適化により、平滑ブロックは、絶対項における歪みが小さいので満足に符号化されたと見なされることになり、したがって、こうしたブロックに対してそれ以上ビットが費やされることはない。一方、典型的な知覚に基づく方法では、マクロブロックを知覚クラスに分類し、マクロブロックの知覚クラスに従って、事前定義されたオフセットをピクチャレベル量子化パラメータに加え、または引くことによって、量子化パラメータを各マクロブロックに割り当てる。事前定義されたオフセットが非常に強度（例えば、平滑領域に対するＱＰを１に削減する）でない限り、このような方法は、変化の小さい平滑ブロックが単一の非ゼロＤＣ係数に量子化されず、すべてのＡＣ係数がゼロに量子化されることを保証できない。しかし、非常に強度なオフセットの設定により、知覚品質を向上させるのにビットを必要としなくてもよいマクロブロック中で費やされるビットが増加する場合があり、ビットレートを非効率的に上昇させ、エンコーダによってレート制御用に選択されたピクチャレベル量子化パラメータと衝突する。
【０２１１】
したがって、後で説明するいくつかの技術及びツールは、ブロッキングまたは輪郭アーチファクトの混入を削減し、または取り除くのに十分なビットが平滑領域に割り振られるように、ピクチャ中でビットを選択的に、思慮深く割り振る。
【０２１２】
例えば、エンコーダは、Ｉピクチャ中の各マクロブロックに対してＱＰを算出し、量子化パラメータを選択して、平滑ブロックに十分なビットを割り振り、そうすることによって、Ｉピクチャにおける、知覚されるブロッキングアーチファクトを削減する。１つまたは複数の平滑ブロックを有する各マクロブロックに対して、マクロブロックのブロックごとに量子化された少なくともＮ個の非ゼロＡＣ係数があるように、ＱＰが選択され、ここでＮは１以上の整数である。しばしば、維持されるＡＣ係数は、変換の最低周波数ＡＣ基底関数に対する係数であり、この関数は、漸進値の変化をブロックに渡り水平に及び／または垂直に特徴づける。これは、特に変化が少ない平滑領域に対して、各ブロックの、知覚される表示品質をもち直す傾向にある。一実装形態では、エンコーダは、依然としてＡＣ係数を所望通りに維持する、ピクチャＱＰを超えない最大ＱＰを選択する。非ゼロＡＣ係数が維持されない状況（例えば、非常に平坦なブロック）があり得る。ただし、概して、このように、エンコーダは、比較的小さいＱＰでビットを費やすことに過度に積極的ではなく、ピクチャＱＰとの衝突を削減し、または避ける。
【０２１３】
妥当なＮ値により、選択されたＱＰは、ほとんどのマクロブロックに対して変わらない。すなわち、ほとんどのマクロブロックに対してはピクチャＱＰと同じであり、ごくわずかの平滑ブロックが影響を受ける。Ｎの妥当な値は１、２、３または４である。選択されたＱＰは、低テクスチャのマクロブロックに対して比較的変わりやすい。一実装形態では、Ｎ＝１または２であると、ピクチャのビットレートが増大し過ぎずに、知覚される品質が向上する。
【０２１４】
図３０は、１つまたは複数の非ゼロＡＣ係数を維持するのを助けるためのマクロブロックＱＰを選択する例示的技術３０００を示す。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術３０００を実施する。
【０２１５】
段階３０１０で、エンコーダは、マクロブロックの各輝度ブロックのＮ番目に大きいＡＣ係数を見つける。例えば、Ｎ＝２の場合、エンコーダは、１６×１６マクロブロックの４つの８×８ブロックそれぞれの２番目に大きいＡＣ係数を見つける。ＡＣ（０）、ＡＣ（１）、ＡＣ（２）、ＡＣ（３）を、それぞれ、４つの輝度ブロック０、１、２、３に対するＮ番目に大きい係数とする。マクロブロック中の異なるブロック組織の場合、Ｎ番目の係数は、マクロブロック中のより多くの、またはより少ないブロックに由来する。
【０２１６】
段階３０２０で、エンコーダは、こうしたＮ番目の係数値のうち、最小のものを見つける。４つのブロックのうちＮ番目の係数に対して、ＡＣmin＝ｍｉｎ（ＡＣ（０）、ＡＣ（１）、ＡＣ（２）、ＡＣ（３））である。他のブロック番号に対しては、ＡＣminは異なるやり方で計算される。
【０２１７】
段階３０３０で、エンコーダは、マクロブロックに対するＱＰを、ＡＣminがそのＱＰに対するデッドゾーン閾値外となるように設定する。デッドゾーン閾値は、ＱＰの値が量子化に使われるときにＡＣ係数をゼロに量子化する「カットオフ」閾値である。デッドゾーン閾値は通常、所与のＱＰに対して所定であり、それに比例する。デッドゾーン閾値は、０と第１の復元ポイントとの間のいずれかのポイントで選択される。エンコーダが、均一量子化法または不均一量子化法のどちらかを使うとき、第１の復元ポイントは、ＱＰ値、及び均一それとも不均一量子化が用いられるかに依存する。一実装形態では、第１の復元ポイントは、量子化された係数レベル＝１の復元された値であり、レベルは、均一量子化用には２＊ＱＰであり、不均一量子化用には３＊ＱＰである。均一量子化の場合、カットオフ閾値は０と２＊ＱＰの間となる。不均一量子化の場合、カットオフ閾値は０と３＊ＱＰの間となる。例えば、デッドゾーン閾値Ｚ（ＱＰ）は、均一量子化用にはＺ（ＱＰ）＝６＊ＱＰ／５、不均一量子化用にはＺ（ＱＰ）＝２＊ＱＰとして選択される。あるいは、他のカットオフ閾値を使うこともできる。
【０２１８】
ＡＣ係数ＡＣは、Ａｂｓ（ＡＣ）＜Ｚ（ＱＰ）の場合、ゼロに量子化される。マクロブロック向けにＱＰを設定する（段階３０３０）ために、エンコーダは、ＡＣminをＱＰの候補値に対するＺ（ＱＰ）と比較し、ピクチャＱＰで開始し、量子化法に対する最小ＱＰに達し（例えば、ＱＰ＝１）または不等式Ａｂｓ（ＡＣmin）＞＝Ｚ（ＱＰ）が満たされるまでＱＰを減少させることによって、少なくともＮ個のＡＣ係数を維持することになる、マクロブロック向けＱＰ（ＱＰm）を見つけることができる。不等式Ａｂｓ（ＡＣmin）＞＝Ｚ（ＱＰ）が満たされる場合、エンコーダは、マクロブロックに対する閾値ＱＰを、不等式を満たす第１のＱＰ（すなわち、最高適格ＱＰ）となるように設定する。あるいは、エンコーダは、他の論理を用いて、マクロブロックに対するＱＰを計算し、例えば、最低ＱＰから始め、またはＱＰ値のバイナリサーチを用いる。
【０２１９】
マクロブロック中のすべてのブロックを量子化するためのＱＰmを用いるプロセスは、無制約ビットレート量子化と呼ぶことができる。制約ビットレート量子化技術において、エンコーダは、上述したように、単独でマクロブロックの輝度ブロックそれぞれに対して所望の数の非ゼロＡＣ係数を生じるのに必要とされる最大ＱＰ（ピクチャＱＰ以下）を判定する（例えば、それぞれ、ブロック０、１、２、３に対してＱＰ0、ＱＰ1、ＱＰ2、ＱＰ3）。その結果、ＱＰmは、ＱＰ0、ＱＰ1、ＱＰ2、ＱＰ3の最小に等しくなる。ビット使用を削減するために、エンコーダは、ＱＰmの代わりにブロックｉ（ｉ＝０、１、２、３、など）を量子化するのにＱＰiを使うことができる。マクロブロック全体に対して単一のＱＰを指定するエンコーダにおいて、エンコーダは代わりに、ＱＰmを使ってブロックを量子化するとき、各ブロックｉ用のＱＰiを使って量子化される際に非ゼロであるＡＣ係数だけを保持すればよく、それにより、ブロック中の他のＡＣ係数がＱＰmによる量子化で維持されることになっても、所与のブロック中の最上位のＮ個の非ゼロＡＣ係数のみを保存する。図３０に示す量子化プロセスに対して、各輝度ブロックに対する量子化プロセスは、２パスプロセスとして実施することができる。最初のパスにおいて、エンコーダは、係数がＺ（ＱＰi）より小さい場合はＤＣＴ係数をゼロに「閾値化」し、それ以外の場合は、同じＤＣＴ係数を保持する。次いで、「閾値化」されたＤＣＴ係数は、ＱＰmを使う同じやり方で量子化される。
【０２２０】
あるいは、エンコーダは、非ゼロＡＣ係数を他の何らかのやり方で維持する。例えば、エンコーダは、マクロブロック単位以外の単位（例えば、ブロック単位）でＱＰを選択することができる。エンコーダは、Ｉピクチャ、Ｐピクチャ、またはＢピクチャ、あるいはその組合せに対するＡＣ係数を維持することができる。
【０２２１】
可能な最小ＱＰで、量子化された非ゼロ係数の数がＮより小さい場合、Ｎは、それにしたがって調整してよい。
【０２２２】
ＶＩＩ．ＤＣシフトに対する差分量子化
典型的な損失性エンコーディングシナリオでは、量子化されたすべてのＤＣ及びＡＣ係数を、逆量子化後に正確に回復することができるわけではない。例えば、一部のビデオコーデックでは、ＤＣ係数値は、いくつかのＱＰ及びＤＣ係数値に対して１だけシフトする（すなわち、事前量子化値に対して相対して１だけ増大または低下する）。この現象はＤＣシフトの例である。いくつかのＤＣ係数値の表現は、１つまたは複数のより低いＱＰでの量子化及び逆量子化を通して無損失であるが、他の、より高いＱＰでは損失性である。
【０２２３】
ＡＣ係数すべてが０に量子化され、ＤＣ係数を正確に回復することができない、いくつかのブロックを有する領域は、ＤＣシフトエリア内で可視的な輪郭化アーチファクトを呈する。輪郭化アーチファクトのあるこのような領域はしばしば、空、水または光線など、平滑な階調傾斜領域である。図３１は、量子化及び逆量子化後の階調傾斜領域内の３つの隣接し合うブロックにおけるＤＣシフトを示す図である。階調傾斜領域内の３つの隣接し合うブロック３１０２、３１０４、３１０６のＤＣ値は、それぞれ、量子化より前には６８、６９、７０である。量子化及び逆量子化の後、ブロック３１０４のＤＣ値は７０にシフトされる。図３１に示すように、３つの隣接し合うブロックのＤＣ値は現在、６８、７０、７０である。このようなブロックが階調傾斜領域内にあるとき、量子化されたＤＣ値は、知覚可能な輪郭化アーチファクトを引き起こし得る。例えば、図２２Ａ〜Ｃを再度参照すると、階調傾斜領域２２１０が量子化されており、結果として、図２２Ｂにおいて可視的な輪郭化アーチファクトを生じる。図２２Ｃに示すように、マクロブロック２２５０の上半分のブロックに対するＤＣ係数の量子化は、結果として、ＤＣ値６８から復元された均一な値を生じ、下半分のブロックに対するＤＣ係数の量子化は、結果として、ＤＣ値７０から復元された均一な値を生じる。
【０２２４】
したがって、後で説明するいくつかの技術及びツールは、ビデオエンコーダによって、ＤＣシフトエリアを検出し、ＤＣシフトエリアへの輪郭化アーチファクトの混入を削減し、または避けるように量子化を調整するのに用いられる。
【０２２５】
図３２は、ＤＣシフトエリアへの輪郭化アーチファクトの混入を削減し、または避けるように量子化を調整する、汎用化された技術３２００を示すフローチャートである。図１０のエンコーダ１０００などのエンコーダまたは他のツールが技術３２００を実施する。
【０２２６】
段階３２１０で、エンコーダは、シフトエリアを検出する。ＤＣシフトエリアの検索は、前の階調傾斜検出で手伝うことができる。例えば、エンコーダは、後で説明するように、１つまたは複数の階調傾斜領域を検出し（または以前計算された階調傾斜検出情報を用い）、次いで、階調傾斜領域（群）内のＤＣシフトブロックを識別することによって、ＤＣシフトエリアを検出する。
【０２２７】
段階３２２０で、エンコーダは、ＤＣシフトエリア内の量子化を調整する。例えば、エンコーダは、ＤＣシフトによって引き起こされる輪郭化アーチファクトの混入を削減し、または避けるために、差分量子化（ＤＱ）を用いて、ＤＣシフトブロックを符号化することができる。エンコーダは、いくつかのマクロブロック（ＤＣシフトブロックを有するもの）に対するＱＰを削減するが、他のブロック用のＱＰは変更しない。ＤＣシフトブロックを有するマクロブロック用のＱＰを削減することにより、マクロブロック用のＤＣ値を無損失に保つのが助けられ、そうすることによって、輪郭化アーチファクトの混入を削減しまたは避けることができる。エンコーダは、二値ＤＱまたは多値ＤＱを使って、ＤＣシフト問題を解決することができ、そうすることによって、ビット使用を制御しながら表示品質を向上させる。分析するべきピクチャがそれ以上ある場合、エンコーダは、次のピクチャを処理する（段階３２３０）。
【０２２８】
あるいは、エンコーダは、ＤＣシフトエリア向けの量子化を、マクロブロック単位で、または他の何らかの単位で調整する。
【０２２９】
Ａ．階調傾斜検出
階調傾斜検出は、ピクチャ中の１つまたは複数の階調傾斜領域を識別するのに用いることができる。階調傾斜領域（群）は、特に量子化後に領域（群）内のブロックが非ゼロＤＣ係数値及びゼロだけのＡＣ係数をもつ時、輪郭化アーチファクトを呈する傾向にある。見つけられると、このような領域（群）は、輪郭化アーチファクトの原因となり得るＤＣシフトブロックに対してチェックしてよい。
【０２３０】
例えば、エンコーダは、本明細書において記載した技術（セクションＶ）または他の何らかの技術を用いて階調傾斜領域を見つける。ブロック中の非ゼロのみの係数が量子化後にＤＣ係数である場合、エンコーダは、そのブロックを、ＤＣシフトエリア調整用の候補として扱う。あるいは、エンコーダは、追加ブロックを、ＤＣシフトエリア調整用の候補として検討する。
【０２３１】
Ｂ．ＤＣシフトブロックの識別
エンコーダは、特定の候補ブロックを、ＤＣシフトブロックとして識別する。ＤＣシフトブロックの識別は、ブロックを圧縮するのに使われる量子化法及びＱＰの詳細に依存する。例えば、いくつかの復元されたＤＣ係数が、あるＱＰでの元の値からシフトするが、比較的粗いＱＰでシフトする。
【０２３２】
あるエンコーダにおける異なるＱＰ用のＤＣシフト係数の例を、以下のテーブルに挙げる。テーブルは、ＱＰの異なる値に対するＤＣシフトを呈するＤＣ係数値を示し、ＱＰは、パラメータＰＱＩｎｄｅｘ（及び、可能性としては、ハーフステップパラメータ）から明示的に、またはパラメータＰＱＩｎｄｅｘ（及び、可能性としては、ハーフステップパラメータ）から暗黙的に導出される。テーブルに列挙されていないＤＣ値は、例示的エンコーダにおける指示されたＱＰに対して無損失であり、３を下回るＱＰに対するＤＣ値（テーブルには示していない）はすべて無損失である。例示的エンコーダは、テーブルに示すものより高いＱＰに対して、ＤＣシフト調整を実施しない。例示的エンコーダにおいて、ＤＣ係数の量子化は、異なる量子化法（例えば、均一、不均一）に対して同じである。どのＤＣ係数値がＤＣシフト係数であるかは、異なるビデオコーデックにおいて異なる。ＤＺ係数の量子化が異なる量子化法において異なる場合、異なる量子化法（例えば、均一、不均一）が、結果として、異なるシフトパターンを生じ得る。
【０２３３】
【表３】
0005391290.tif 000014
【０２３４】
【表４】
0005391290.tif 000015
【０２３５】
【表５】
0005391290.tif 000016
【０２３６】
【表６】
0005391290.tif 000017
【０２３７】
【表７】
0005391290.tif 000018
【０２３８】
表３に示すＤＣシフト係数を有する例示的エンコーダは概して、テクスチャ加工された領域に対して、平滑領域とは異なるＱＰを使う。例示的エンコーダは通常、３〜５の範囲のＱＰを使って、平滑領域をエンコードする。上の表３に示すように、ＱＰ３〜５に対して、シフトされたＤＣ値はすべて、元のＤＣ値より１多い。他のエンコーダは、テクスチャ領域と比較して、平滑領域用に異なるＱＰを使い得る。
【０２３９】
ＤＣシフトブロックが検出される際の輪郭化アーチファクトの混入を削減し、または避けるのを助けるために、例示的エンコーダは、ＤＣ値をマクロブロック中で無損失に保つためのＤＣシフトブロックを含むそうしたマクロブロック用のＱＰを変更する。具体的には、例示的エンコーダは、ＤＣシフトブロックを含むマクロブロック用ＱＰをＱＰ＝２に削減する。（他のエンコーダは、ＤＣシフトエリア向けに他の何らかのＱＰを使い得る）。概して、エンコーダは結果として、マクロブロックのブロックのＤＣ係数を無損失に取り扱うことになる、使用可能な最大ＱＰを選択することができる。
【０２４０】
エンコーダは、階調傾斜領域（群）内のＤＣシフトブロックを判定するために、ブロックごとの平均輝度値を算出する。というのは、平均輝度値は、（変換における拡張を補償した後の）ＤＣシフト値に対応するからである。平均輝度値により、エンコーダは、どのブロックがＤＣシフトを有するか推定し、または予測する。あるいは、エンコーダは、現実のＤＣ値を算出し、それらの値をＤＣシフトテーブル中でルックアップして、どのブロックがシフトを有するかを正確に識別する。
【０２４１】
エンコーダは、階調傾斜領域（群）内で、特定の分離ＤＣシフトブロックを排除するための追加処理を実施することができる。例示的エンコーダにおいて、現在のブロックが、階調傾斜領域内に配置されたＤＣシフトブロックと識別されると、周辺にある４つの隣接ブロックがチェックされる。周辺にある４つの隣接ブロックのいずれかが平滑ブロックであり、現在のブロックのシフトされたＤＣ値より低いＤＣ値をもつ場合、エンコーダは、ＤＣ値を無損失に保つために、現在のブロックを含むマクロブロックに対してＱＰ＝２を使う。代替的には、エンコーダは、隣接ブロックのチェックを行わず、または、隣接ブロックの他の何らかの配置をチェックして、ＤＣシフトエリア用のＱＰを変化させるかどうか判定する。
【０２４２】
Ｃ．多値差分量子化コストモデル
二値ＤＱ及び多値ＤＱは通常、異なるビットレートコストを有する。一実装形態では、「すべてのマクロブロック」二値ＤＱにおけるピクチャＱＰまたは代替ＱＰを信号通知するのに、マクロブロックごとに１ビットが使われ、多値ＤＱにおけるピクチャＱＰまたは代替ＱＰを信号通知するのに、マクロブロックごとに少なくとも３ビットが使われる。
【０２４３】
エンコーダは、多値ＤＱを使ってＤＣシフトブロックを含む平滑領域内のＱＰを削減させることができるが、エンコーダはその代わりに、二値ＤＱシナリオにおいて、すべての平滑領域用のＱＰを（例えば、ＱＰ＝２に）調整し、ピクチャの残りには比較的粗いピクチャＱＰを使うことを選ぶことができる。例えば、エンコーダは、多値ＤＱのシグナリングコストが二値ＤＱのコストに相対して高すぎることがわかった場合、上記のことを行うことができる。
【０２４４】
一実装形態では、それぞれＱＰ＝３、４、５、６からＱＰ＝２に進む平滑ブロックのコストを算出するのに、以下のテーブルが使われる。  
ｇ＿ｉＳｍｏｏｔｈＢｌｏｃｋＤｉｆｆＱＰＣｏｓｔ［４］＝｛１８、２２、２８、３６｝
このテーブルは、二値ＤＱコストＢ（ＱＰ）のコスト算出の以下の例において使われる。  
Ｂ（ＱＰ）＝ｃｏｕｎｔｓ＿ｏｆ＿ｔｏｔａｌ＿ＭＢｓ＋（ｃｏｕｎｔｓ＿ｏｆ＿ｂｉＬｅｖｅｌ＿Ｄｑｕａｎ＿ＭＢｓ−ｃｏｕｎｔｓ＿ｏｆ＿ＤＣ＿Ｓｈｉｆｔ＿Ｂｌｏｃｋｓ）＊ｇ＿ｉＳｍｏｏｔｈＢｌｏｃｋＤｉｆｆＱＰＣｏｓｔ［ＱＰ−３］
【０２４５】
コストＢ（ＱＰ）は、マクロブロックごとの二値コストシグナリングのコストを明らかにし、ブロックに対して３、４、５、または６ではなくＱＰ＝２を使う際の増大したビットコストを推定する。多値ＤＱコストＭ（ＱＰ）は、以下のように算出される。  
Ｍ（ＱＰ）＝（ｃｏｕｎｔｓ＿ｏｆ＿ｆｒａｍｅＱＰ＿ＭＢｓ＊３）＋（ｃｏｕｎｔｓ＿ｏｆ＿ｂｉＬｅｖｅｌ＿Ｄｑｕａｎ＿ＭＢｓ−ｃｏｕｎｔｓ＿ｏｆ＿ＤＣ＿Ｓｈｉｆｔ＿Ｂｌｏｃｋｓ）＊８＋（ｃｏｕｎｔｓ＿ｏｆ＿ＤＣ＿Ｓｈｉｆｔ＿Ｂｌｏｃｋｓ＊３）
【０２４６】
コストＭ（ＱＰ）は、多値ＤＱのシグナリングコストを明らかにし、それにより、いくつかのマクロブロック量子化パラメータに対するエスケープ符号化を仮定する。Ｂ（ｑｐ）＜Ｍ（ｑｐ）の場合、二値ＤＱが使われることになり、すべての平滑ブロックに対してＱＰ＝２が使われることになる。それ以外の場合、多値ＤＱが使われることになる。
【０２４７】
あるいは、エンコーダは、異なるタイプまたは構成のＤＱに対して、他のコストモデルを使う。あるいは、エンコーダは、ＤＣシフトブロックが検出されると、ピクチャ全体に対するＱＰを削減し、または他の何らかの技術を用いて、ＤＣシフトブロックが検出されるときに輪郭化アーチファクトの混入を削減し、または避けるように量子化を変更する。
【０２４８】
Ｄ．ピクチャＱＰ切換え
例示的な一エンコーダでは、多値ＤＱは、ピクチャＱＰからピクチャＱＰ＋６までのどのＱＰを信号通知するのにも３ビットを必要とする。この範囲外のどのＱＰも、エスケープ符号化により８ビットで信号通知されることになる。平滑領域用に使われる代替ＱＰは一般に、ピクチャＱＰより小さく、したがってエスケープ符号化を必要とする。
【０２４９】
したがって、ピクチャＱＰを切り換えることにより、多値ＤＱに対する符号化オーバーヘッドをセーブすることができる。例えば、エンコーダは、上述した多値ＤＱコストモデルを使ってピクチャＱＰを選ぶことができる。例えば、３値のシナリオ（例えば、ピクチャＱＰ、平滑領域ＱＰ及びＤＣシフトＱＰ）の場合、ピクチャＱＰ用の異なる候補値に対して多値ＤＱコストが計算される。エンコーダは、オーバーヘッドコストが最小のピクチャＱＰを選択することができる。
【０２５０】
あるいは、エンコーダは、他の基準を使ってピクチャＱＰを切り換え、またはピクチャＱＰ切換えを実施しない。
【０２５１】
Ｅ．高テクスチャマクロブロック用の粗い量子化
多値ＤＱを使うという決定が行われた場合、ピクチャＱＰより高い（比較的粗い）ＱＰを高テクスチャマクロブロックに割り当てることによって、高テクスチャマクロブロック用に粗い量子化を用いることができる。ピクチャに対して多値ＤＱを（例えば、ＤＣシフトマクロブロックに対して比較的小さいＱＰを使うために）使うという決定は、ピクチャＱＰより高いマクロブロックごとの粗いＱＰを信号通知するための追加オーバーヘッドコストがないことを意味する。例えば、ピクチャＱＰ＋１は、量子化レベルでの目立ちやすい差を避けるために、粗いＱＰとして使うことができ、または他の何らかのＱＰを使うこともできる。テクスチャ閾値は、現在のピクチャ用に多値ＤＱを使うことをエンコーダが決定した後で、どのマクロブロックが粗いＱＰで量子化されることになるか判定するのに使うことができる。
【０２５２】
あるいは、エンコーダは、他の基準を使って、特定の領域（例えば、マクロブロック）が粗いＱＰを使うべきかどうか判定し、または粗いＱＰを使わない。
【０２５３】
Ｆ．ＤＣシフト量子化のための例示的技術
図３３は、ＤＣシフトエリア内での量子化を、量子化アーチファクトの混入を削減し、または避けるように適合させる複合技術３３００を示すフローチャートである。図１０のエンコーダ１０００などのエンコーダまたは他のツールが、技術３３００を実施する。この複合技術は、上述した態様のいくつかを組み合わせた例である。他の技術では、この例を参照して記載した態様すべては用いず、または態様を異なる順序もしくは代替的なやり方で実施する。
【０２５４】
段階３３１０で、エンコーダは、例えば、セクションＶで記載したように、現在のピクチャ中の１つまたは複数の階調傾斜領域を検出する。段階３３２０で、エンコーダは、階調傾斜領域（群）内のＤＣシフトブロックを、例えばＤＣシフトテーブルを使って検出する。
【０２５５】
エンコーダは次いで、ピクチャをどのようにして量子化するか決定する。段階３３３０で、エンコーダは、ピクチャに対して二値ＤＱを使うかどうか決定する。二値ＤＱを使う場合、エンコーダは、ＤＣシフトエリア（段階３３４０）及び他の平滑エリア用のピクチャＱＰより小さいＱＰを使う。二値ＤＱを使わない場合、段階３３５０で、エンコーダは、ピクチャに対して多値ＤＱを使うかどうか決定する。多値ＤＱを使う場合、エンコーダは、ＤＣシフトエリア用のピクチャＱＰより小さいＱＰを使い（段階３３６０）、他の平滑エリアに対しては異なるＱＰを使うことができ、高テクスチャマクロブロックが存在する場合は、高テクスチャマクロブロックに対して粗いＱＰ（ピクチャＱＰより大きいようなものなど）を使う（段階３３７０）。エンコーダが、二値ＤＱも多値ＤＱも選ばない場合、エンコーダは、ピクチャＱＰを削減し、削減されたピクチャＱＰをＤＣシフトエリア（段階３３８０）ならびに他のエリアに対して使う。あるいは、二値ＤＱ及び多値ＤＱのコストが両方とも高すぎる場合、エンコーダは、ＤＣシフトエリアに対するＱＰ削減をスキップする。エンコーダが、量子化方式を選んだら、エンコーダは、段階３３９０でピクチャを圧縮し、処理されるべきピクチャがどれか残っている場合は、次のピクチャを処理する（段階３３９５）。
【０２５６】
以上、様々な実施形態を参照して本発明の原理を説明し示したが、こうした様々な実施形態は、このような原理から逸脱することなく、構成及び細部において変更できることが理解されよう。本明細書において説明したプログラム、処理、または方法は、特にそう示さない限り、特定のどのタイプのコンピューティング環境にも関連せず、限定されないことを理解されたい。様々なタイプの汎用または専用コンピューティング環境が、本明細書において説明した教示とともに使うことができ、そうした教示に従って動作を実施することができる。ソフトウェアで示した実施形態の要素は、ハードウェアでも実装することができ、その逆も可能である。
【０２５７】
本発明の原理を適用することができる可能な多くの実施形態を鑑み、本発明として、このようなすべての実施形態が添付の特許請求の範囲及び等価物の範囲及び精神内であると主張する。
【図１】
0005391290.tif 000019
【図２】
0005391290.tif 000020
【図３】
0005391290.tif 000021
【図４】
0005391290.tif 000022
【図５】
0005391290.tif 000023
【図６Ａ】
0005391290.tif 000024
【図６Ｂ】
0005391290.tif 000025
【図７】
0005391290.tif 000026
【図８Ａ】
0005391290.tif 000027
【図８Ｂ】
0005391290.tif 000028
【図９】
0005391290.tif 000029
【図１０】
0005391290.tif 000030
【図１１】
0005391290.tif 000031
【図１２】
0005391290.tif 000032
【図１３】
0005391290.tif 000033
【図１４】
0005391290.tif 000034
【図１５】
0005391290.tif 000035
【図１６】
0005391290.tif 000036
【図１７】
0005391290.tif 000037
【図１８】
0005391290.tif 000038
【図１９】
0005391290.tif 000039
【図２０】
0005391290.tif 000040
【図２１】
0005391290.tif 000041
【図２２Ａ】
0005391290.tif 000042
【図２２Ｂ】
0005391290.tif 000043
【図２２Ｃ】
0005391290.tif 000044
【図２３】
0005391290.tif 000045
【図２４】
0005391290.tif 000046
【図２５】
0005391290.tif 000047
【図２６】
0005391290.tif 000048
【図２７】
0005391290.tif 000049
【図２８】
0005391290.tif 000050
【図２９】
0005391290.tif 000051
【図３０】
0005391290.tif 000052
【図３１】
0005391290.tif 000053
【図３２】
0005391290.tif 000054
【図３３】
0005391290.tif 000055