(57)【特許請求の範囲】
【請求項１】
少なくとも１つの入力フレームを有する画像シーケンスをエンコード化するための装置（１００、３００）であって、
現入力フレームの予測画像を発生するための運動補償器（１４０、１５０、３０４）と、
前記運動補償器に結合され、前記現入力フレームと前記予測画像との間の差信号に、複数の係数を生成する変換を適用するための変換モジュール（１６０、３０６）と、
前記変換モジュールに結合され、少なくとも１つの量子化器スケールを用いて前記複数の係数を量子化するための量子化器（１７０、３０６）と、
前記量子化器に結合され、前記現入力フレームに対する前記量子化器スケールを選択的に調整するための制御器（１３０、３１０）と、
を備え、
前記量子化器スケールは、
Ｔ＝Ｘ1ＥＱ-1＋Ｘ2ＥＱ-2
に従って調整され、ここで、Ｔは該入力フレームをエンコード化するための目標ビット数を表し、Ｑは前記量子化器スケールを表し、Ｅは前記現入力フレームと直前のエンコード化された部分との差を表す量であり、Ｘ1及びＸ2はパラメータであって、前記量子化器スケールＱを使用して前記現入力フレームをエンコードすることによって生じる実際のビット数を用いて次の入力フレームのために更新されるパラメータである、
装置。
【請求項２】
前記直前のエンコード化された部分は、直前にエンコードされたフレームである、請求項１に記載の装置。
【請求項３】
前記直前のエンコードされた部分は、直前にエンコードされた１以上のフレームである、請求項１に記載の装置。
【請求項４】
少なくとも１つのフレームを有する画像信号を量子化するために量子化器スケールを発生する方法であって、
（ａ）現フレームのための少なくとも１つの量子化器スケールを計算するステップであって、前記量子化器スケールは、
Ｔ＝Ｘ1ＥＱ-1＋Ｘ2ＥＱ-2
に従って調整され、ここで、Ｔは該入力フレームをエンコード化するための目標ビット数を表し、Ｘ1及びＸ2はパラメータであり、Ｑは前記量子化器スケールを表し、Ｅは前記現フレームと直前のエンコード化された部分との差を表す量である、該ステップと、
（ｂ）前記計算された量子化スケールを前記現フレームに適用するステップと、
（ｃ）パラメータＸ1及びＸ2を、前記少なくとも一つの量子化器スケールＱを用いて前記現入力フレームをエンコード化することによって生じる実際のビット数を用いて更新するステップと、
（ｄ）前記画像信号における次のフレームに対して、前記ステップ（ａ）〜（ｃ）を繰り返すステップと、
を含む方法。
【請求項５】
前記Ｅは、前記現フレームと前フレームとの間の平均絶対差である、請求項４に記載の方法。
【発明の詳細な説明】
この出願は、1997年2月12日に出願された出願番号60/037,056の米国プロビジョナル出願の利益を主張し、プロビジョナル出願は参照されることによってここに包含される。
本出願は、運動映像のコード化を最適化するための装置および付随する方法に関連する。さらに、この出願は、コード化レートを最適化しながら運動映像の全体にわたる品質を維持するために、各フレーム毎に量子化器スケールを再帰的に調整する装置および方法に関する。
発明の背景
モーション・ピクチャ・エキスパート・グループ（ＭＰＥＧ）は、コード化/デコード化の方針（strategy）を制定するためにISO/IECインターナショナル・スタンダード11172および13818（一般的には、MPEG-1、MPEG-2フォーマットとして引用される）を創り出した。これらのMPEG標準は、一般的なコード化方法論、およびMPEG準拠のビットストリームを生成するためのシンタックスを詳述しているけれども、多くの変形が、デスクトップ・ビデオ・パブリッシング、ビデオ会議開催、ディジタル記憶媒体、およびテレビ放送といった複数の異なる応用およびサービスを適用するために許容されている。
現在のMPEGコード化の方針（例えば、様々なMPEGテストモデル）において、各フレームに対する量子化器スケールは、同じタイプの全てのピクチャが一群のピクチャ内に同一の複雑度（complexity）を有するということを仮定することによって選択される。しかしながら、各ピクチャの複雑度が時間とともに変動するので、この判定基準によって選択された量子化器スケールは最適なコード化性能を達成しなことがある。
さらに、グローバル型変換、例えば、ウエーブレット変換（他には、階層的サブバンド分解として知られているもの）、を利用するエンコーダは、類似の問題を持っている。例えば、ウエーブレット変換は、低いビットレートの画像コード化の重要な面、つまり、非ゼロ値の場所を示すビットマップ（ウエーブレット・ツリー）のコード化、他には変換係数の重要性マップ（シグニフィカンスマップ）として知られているもの、に適用される。それから、量子化およびエントロピコード化は、非常に低いビットレートを達成するために使用される。重要性マップ（ウエーブレットツリー）をエンコードするための量子化器スケールを適切に選択することにおいて意味のある改善をすると、圧縮効率およびコード化レートにおいて意味のある改善が起こる、ということが引き続く。
したがって、この技術分野において、コード化レートを最適化しながらビデオ画像の全体にわたる品質を維持するために、各フレーム毎の量子化器スケールを再帰的に調整する装置および方法に関して要求がある。
発明の要約
本発明は、コード化レートを最適化しながらビデオ画像の全体にわたる品質を維持するために、各フレーム毎に量子化器スケールを選択するための装置および方法である。すなわち、量子化器スケールは、ピクチャの全体シーケンスにわたる一様な視覚品質を維持しながらピクチャに対する目標となるビットレートが達成されるように、各フレーム（ピクチャ）毎に選択される。
【図面の簡単な説明】
本発明の教えは、添付図面を参照しながら、引き続く詳細な説明を考慮することによって容易に理解される。
図１は、本発明の装置のブロック図である。
図２は、装置のビットレートを制御するために複雑度に従う最良の量子化器スケールを導くための流れ図である。
図３は、本発明の装置の第２の実施例のブロック図である。
図４は、ウエーブレット・ツリーを図面で表したものである。
図５は、本発明のエンコードシステムである。
理解を容易にするために、図面に共通な同一要素を指し示すために、可能な場合には、同一の参照符号が使用される。
詳細な説明
図１は、コード化レートを制御しながらビデオ画像の全体にわたる品質を維持するために、各フレーム毎に量子化器スケールを導くための本発明の装置１００のブロック図を示している。本発明はMPEG準拠のエンコーダを参照しながら以下に記述されるけれども、当業者は、他のコード化/デコード化標準に準拠している他のエンコーダに本発明が適用され得ることを理解するでしょう。
本発明の好ましい実施の形態では、装置１００は、エンコーダ、またはブロックに基づくもっと複雑な運動補償コード化システムの一部である。装置１００は、運動評価モジュール１４０、運動補償モジュール１５０、レート制御モジュール１３０、ＤＣＴモジュール１６０、量子化（Ｑ）モジュール１７０、可変長コード化モジュール（ＶＬＣ）１８０、バッファ１９０、逆量子化（Ｑ-1）モジュール１７５、逆ＤＣＴ（ＤＣＴ-1）変換モジュール１６５、引き算器１１５、および総和器１５５、を備える。装置は複数のモジュールを備えるけれども、当業者は、ざまざまなモジュールによって実行される機能を図１に示されるように別個のモジュールへ分離することが必要でないことを理解するであろう。例えば、運動補償モジュール１５０、逆量子化モジュール１７５、および逆ＤＣＴモジュール１６５を備えるモジュールの組は、一般に「エンベデットデコーダ」として知られている。
図１は、MPEG標準に従う輝度信号および２つの色差信号（Ｙ、Ｃr、Ｃb）としてデジタル化され、且つ表示される信号経路上の入力ビデオ画像を図示している。これらの信号は、各ピクチャ（フレーム）が複数のマクロブロックによって表示されるように、複数のレイヤ（シーケンス、ピクチャ群、ピクチャ、スライス、マクロブロック、およびブロック）へさらに分割される。各マクロブロックは、４つの輝度ブロック、１つのＣrブロック、およびＣbブロックを備え、ここでは、ブロックは８×８サンプル・アレイとして定義される。ブロックユニットへピクチャを分割すると、（以下に議論される）低い振幅の変換された係数の削除を介して画像圧縮が改善される。ディジタル化された信号は、適切なウインドウ、解像度および入力フォーマットを選択するためのフォーマット変換といった前処理をオプション的に受けることができる。
パス１００上の入力ビデオ画像は、運動ベクトルを評価するために運動評価モジュール１４０へ受け取られる。運動ベクトルは、現ピクチャにおけるブロックの座標位置から参照フレームにおける座標へのオフセットを与えるように、運動補償によって使用される２次元ベクトルである。参照フレームは、前（previous）フレーム（P-フレーム）、または前および/若しくは将来フレーム（B-フレーム）であり得る。運動ベクトルを使用すると、チャネル上に伝送される情報の量を減少することによって、圧縮が大幅に高まる。なぜなら、現在フレームと参照フレームとの間の変化のみがコード化され伝送されるからである。
運動評価モジュール１４０からの運動ベクトルは、サンプル値の予測効率を改善するために運動補償モジュール１５０によって受け取られる。運動補償は、予測誤差を形成するために使用される以前にデコード化されたサンプル値を含む過去および/または将来の参照フレームへオフセットを与えるように運動ベクトルを使用する予測を伴う。つまり、運動補償モジュール１５０は、現在のフレームの見積を構築するために、以前にデコードされたフレームおよび運動ベクトルを使用する。さらに、当業者は、運動評価モジュールおよび運動補償モジュールによって実行される機能が、組み合わされたモジュール、例えば単一の運動補償器、によって実現されることができることを理解する。
さらに、与えられたマクロブロックのために運動補償予測を実行するに先立って、コード化モードを選択しなくてはならない。コード化モード決定の分野では、MPEGは、複数の異なるマクロブロックコード化モードを提供する。具体的には、MPEG-2は、イントラモード、無運動補償モード（No MC）、フレーム/フィールド/デュアル−プライム運動補償インタモード、前方/後方/平均インタモード、およびフィールド/フレームＤＣＴモードを含むマクロブロックコード化モードを提供する。
いったん、コード化モードが選択されると、運動補償のモジュール１５０は、過去および/または将来の参照フレームピクチャに基づいてブロックの内容の運動補償された予測（予測された画像）をパス１５２上に発生する。パス１５２上のこの運動補償された予測は、現マクロブロックにおいてパス１１０上のビデオ画像から引き算器を介して差し引かれ、パス１５３上に誤差信号または予測残差信号を形成する。予測残差信号を形成すると、入力ビデオにおける余剰の情報が除かれる。現フレームがI-フレームとしてエンコードされると、そのときは、パス１５３上の信号は、単に元の信号であり、予測残差信号でない。
ＤＣＴモジュール１６０が前方離散コサイン変換プロセスを予測残差信号の各ブロックに適用し、一組の８×８ＤＣＴ係数のブロックを生成する。ＤＣＴ基本関数、またはサブバンド分解によれば、量子化の次のステップのために重要である精神視覚学の判定基準を効果的に使用することが可能になる。
結果として生じる８×８ＤＣＴ係数ブロックは、ＤＣＴ係数が量子化される量子化モジュール１７０によって受け取られる。量子化のプロセスは、一組の量子化値でＤＣＴ係数を除算し適切に丸めて整数値を形成することよって、ＤＣＴ係数が表現される正確さを低くする。量子化値は、（視覚的に重み付けられた量子化として知られている）基本関数の視覚性に基づく判定基準を使用して、各ＤＣＴ係数のために個別に設定される。すなわち、量子化値は、所与の基本関数の視覚性に関するしきい値、つまり人間の目によってちょうど検出可能な係数振幅、に対応する。この値でＤＣＴ係数を量子化することによって、ＤＣＴ係数の多くは値「ゼロ」に変換され、それによって画像圧縮効率を改善する。量子化のプロセスは鍵となる演算であり、視覚的な品質を達成するための、またエンコーダを制御しその出力を所与のビットレートに合わせる（レート制御）ための、重要な道具である。異なる量子化値が各ＤＣＴ係数に適用されるので、「量子化マトリックス」は、一般的には、参照テーブル、例えば輝度量子化テーブルまたは色量子化テーブル、として作られる。このため、エンコーダは、変換されたブロックにおける各周波数係数がどのように量子化されるかを決定する量子化マトリックスを選ぶ。
しかしながら、量子化誤差の主観的な認知は周波数と共に変化し、またより高い周波数に対して粗い量子化値を使用することが便利である。すなわち、量子化誤差の人間の認知感度はより高い空間周波数に対して低くなる。結果として、高い周波数は、低い周波数よりもより少ない許容された値でより粗く量子化される。さらに、正確な量子化マトリックスは、意図されたディスプレイの特徴、見る距離、およびソースにおけるノイズ量といった多くの外部パラメータに依存する。このため、応用のために、または個々のシーケンスのフレームのためにさえも、特定の量子化マトリックスを仕立てることができる。一般的には、特注製の（カスタマイズされた）量子化マトリックスは、圧縮されたビデオ画像と一緒に、コンテクストとして格納されることができる。量子化器スケールの適当な選択は、レート制御モジュール１３０によって実現される。
次いで、結果として得られる８×８量子化されたＤＣＴ係数は、信号接続１７１を経由して可変長コード化（ＶＬＣ）モジュール１８０によって受け取られ、ここでは、量子化係数の２次元ブロックは、シグザグ順序でスキャンされ量子化係数の１次元ストリング（列）に変換される。このジグザグ走査は、最も低い空間周波数から最も高い空間周波数へのＤＣＴ係数の近似的な順次的な順序付けである。それから、可変長コード化モジュール１８０は、可変長コード化およびランレグス（run-length）符号化を使用して、マクロブロックに関する全ての副次的な情報、および量子化ＤＣＴ係数のストリング列をエンコード化する。
データストリームは、「ファーストイン・ファーストアウト」（FIFO）バッファ１９０に受け取られる。異なるピクチャ・タイプおよび可変長コード化を使用することの結果は、FIFOへの全体のわたるビットレートが可変であるということである。すなわち、各フレームをコード化するために使用されるビット数は異なりうる。固定されたレートチャネルを伴う応用では、FIFOバッファは、ビットレートを滑らかにするためにエンコーダ出力をチャネルに合わせるように使用される。このため、パス１９５上のFIFOバッファ１９０の出力信号は、パス１１０上の入力ビデオ画像の圧縮された表現（または入力画像と予測された画像との間の圧縮された差信号）であり、ここでは、それは、パス１９５を経由して遠距離通信チャネルまたは記憶媒体に送られる。
レート制御モジュール１３０は、FIFOバッファ１９０に入力するデータストリムのビットレートを監視しまた調整し、データストリームの伝送の後のデコーダ側（図示されていない受信器または対象の記憶デバイス）のオーバフローおよびアンダーフローを避ける。このため、バッファ１９０の状態を監視しエンコータによって発生されたビット数を制御することが、レート制御モジュール１３０のタスクである。
本発明の好ましい実施の形態では、レート制御モジュール１３０は、コード化レートを制御しながらビデオ画像の全体にわたる品質を維持するように、各フレームに対して量子化器スケールを選択する。すなわち、量子化器スケールは、ピクチャ全体にわたって一様な視覚品質を維持しながらピクチャのため目標となるビットレートが達成されるように各フレーム毎に選択される。
本発明は、時間的（例えば、運動評価/補償）および空間的（例えば、離散コサイン変換）なエンコード化を実現するエンコーダと一緒に記述されているけれども、本発明はそのようには限定されない、ことを理解すべきである。いかなる空間的および時間的エンコーダを使用しないことも含んで、他の時間的エンコード化法およぶ空間的エンコード法を使用することができる。
具体的には、レート制御モジュール１３０は、初期的には、前にエンコードされたピクチャから、または、様々なMPEGテストモジュールを実現することによって、特定のタイプのピクチャ（I,P,B）の複雑度の粗い評価を得る。この評価された複雑度は、各フレームをコード化するために必要な予測ビット数を導くために使用される。この知識を用いて、量子化器スケールは、多項式形式を有する複雑度メジャ（complexity measure、複雑度測度）に従ってフレームに対して計算される。この複雑度メジャは、フレームに対する選択された量子化器スケールがピクチャのための目標ビットレートに接近すべきであるという制約に合わせるために導かれる。一旦、フレームがエンコードされると、レート制御モジュールは、多項式回帰プロセス（polynomial regression process）を介して複雑度メジャを再帰的に調整する。つまり、マクロブロックをコード化するために必要な実際のビット数は、次のフレームのための量子化器スケールの予測を改善するために複雑度メジャをより正確にするように使用される。量子化器スケールの選択法の詳細な記述は、図２を参照しながら以下に議論される。
図１を参照すると、量子化器モジュール１７０からの結果となる８×８量子化されたＤＣＴ係数は、また、信号接続１７２を経由して逆量子化モジュール１７５によって受け取られる。この段階で、エンコーダは、引き続くエンコード化のための参照フレームとして入力ビデオ画像のI-フレームおよびP-フレームが使用されるようにするために、データをデコード化することによってI-フレームおよびP-フレームを再生成する。
逆ＤＣＴが各マクロブロックに適用されデコードされた誤差信号を生成する逆ＤＣＴモジュール１６５に、結果となる非量子化された（dequantized）８×８ＤＣＴ係数ブロックを通す。この誤差信号は、総和器１５５を経由して運動補償モジュールから予測信号に加算され戻され、デコードされた参照ピクチャ（再構成された画像）を生成する。
図２は、本発明の好ましい実施の形態における装置のビットレートを制御するために、複雑度メジャに従って最良の量子化器スケールを導くためのフローチャートである。図２に描かれるように本発明の方法２００は、各フレーム毎に量子化器スケールを導くために定式化されている。その解は、一方のピクチャまたは別のピクチャからの相対的に一様な視覚品質を維持しながら、目標ビットレートを満足すべきである。
図２を参照すると、方法は、ステップ２０５に始まり、
Ｔ＝Ｘ1ＥＱ-1＋Ｘ2ＥＱ-1                                        （1）
の関係を有する初期メジャを採用するステップ２１０に進む。Ｔは特定のフレームをエンコード化するために利用可能な（エンコード化ビットカウント）目標ビット数を表す。Ｑは、フレームのために選択された量子化レベルまたはスケールを表す。Ｅは、変形メジャ（distortion measure）を表す。好ましい実施の形態では、Ｅは、運動補償を実行した後の現フレームに関する平均絶対差を表す。すなわち、メジャEは、シーケンス内の連続したフレーム間の差を捕捉する（account for）ために、フレームのビット割り当て（budget）を調整する方法を提供する。Ｅは、現フレームと前フレームとの間の差をブロックからブロックへ総和しまた平均絶対差メジャを計算することによって計算される。換言すれば、現フレームと前フレームとの間の差が大ききければ大きいほど、現フレームをコード化するために必要とされるビット数が大きくなる。さらに、他の変形メジャが使用されることができ、その結果、Ｅは平均二乗誤差または丁度可視差異（jnd：２つの刺激間の感知できる最小の感覚的差異）を表す。
式（1）のパラメータおよび他の関係のあるパラメータが、以下に簡潔に記述され、更に以下のようにサブスクリプトと一緒に規定されている：
Ｒs：シーケンス（またはセグメント）のためのビットレート。
（例えば、24000ビット/秒）
Ｒf：第１のフレームのために使用されているビット。
（例えば、10000ビット）
Ｒc：現フレームのために使用されるビット。それは、エンコード化の後に得られるビットカウントである。
Ｒp：ピクチャ当たりのバッファから除かれるべきビット。
Ｔs：シーケンス（またはセグメント）のための秒数。（例えば、10秒）
Ｅc：運動補償の後の現フレームのための平均絶対差。
Ｑc：現フレームのために使用されている量子化レベル。
Ｎr：エンコード化のために残っているＰフレーム数。
Ｎs：エンコードされたフレーム間の距離。（例えば、7.5fpsの対して4）
Ｒr：このフレーム（またはセグメント）をエンコード化するために残っているビット数。
Ｔ：現フレームに使用されるべき目標ビット。
Ｓp：前フレームをエンコード化するために使用されるビット数。
Ｈc：現フレームで使用されたヘッダおよび運動ベクトルのビット。
Ｈp：前フレームで使用されたヘッダおよび運動ベクトルのビット。
Ｑp：前フレームで使用された量子化レベル。
Ｂs：バッファサイズ、例えばＲs／２。
Ｂ：現バッファレベル、例えば、Ｒs／４−バッファの中間から開始。
より具体的には、ステップ２１０では、パラメータＸ1およびＸ2は、以下のように初期化される。
X1=(Rs*Ns)/2
X2=0                                (2)
Ｒsは、シーケンス（またはセグメント）のビットレート、例えば、１秒当たり24000ビット、を表す。Ｎsは、エンコードされたフレーム間の距離を表す。つまり、低ビットレートの応用のため、シーケンス内のあるフレームは、エンコード化されることができず（飛び越され）、例えば、エンコーダは４フレーム毎のみエンコード化する。飛び越されるフレームの数は、特定の応用の要求に合わせて仕立てられることができるを理解すべきである。
本発明は、一連のフレーム、例えば１シーケンス当たり300フレーム、を参照して以下に記述されるけれども、当業者は、本発明はそれに限定されないことを理解するであろう。事実、本発明は、連続的なシーケンス（実時間）または任意の長さのシーケンスに適用されることができ、そこでは、その方法は、周期的に、または予め規定された間隔で初期化される。
パラメータＸ1およびＸ2の値の場合、そのときは、方法２００は、以下のような他のパラメータ
Rr=Ts*Rs-Rf                          (3)
Rp=Rr/Nr                              (4)
を初期化する。
Ｒrは、シーケンス（またはセグメント）をエンコード化するための残りのビット数を表す。Ｔsは、シーケンス（またはセグメント）のための秒数を表し、例えば、シーケンスが毎秒３０フレームのレートで３００フレームを含むと、そのときＴsは３００／３０秒である。Ｒfは、第１のフレームのために使用されるビット数を表し、ここでは、典型的は、そのフレームは「Ｉ」フレームとしてエンコードされる。方法２００は、特別の値、例えば１００００ビットをＲfに割り当てる。
Ｒrを用いて、方法２００は、バッファから除かれるべきフレーム当たりのビット数を表すＲpを計算する。Ｎｒは、エンコード化するための残りのフレーム数（Ｐ）を表す。
一旦、初期化が完了すると、方法２００はステップ２２０へ進み、ステップ２２０では、メジャに関するパラメータＸ1およびＸ2が更新される。しかしながら、メジャは、一般的には、初期化の後に更新されず、なぜならば、メジャをより一層正確にするため、例えば第１のフレームをエンコード化するために、その時点では不十分な情報しかないからである。それにもかかわらず、メジャの更新に利用できる先行情報があるかもしれない状況、例えば、中断した後の再初期化または所定のシーケンスにおける再初期化がある。ステップ２２０およびステップ２２５は、以下に議論される。そのようなものとして、方法２００は、（図２において破線で示されるように）ステップ２３０に直接に進む。
ステップ２３０では、方法２００は、現フレームをエンコードする前に次のように
T=Max(Rs/30,Rr/Nr*a+Sp*b)                (5)
現フレームのための目標ビットレートを計算する。Ｔは、現フレームのために使用されるべき目標ビットレートを表す。Ｓpは、前のフレームをエンコードするために使用されるビット数を表す。好ましい実施形態では、式（5）において、値0.95および0.05が、それぞれ、定数ａおよびｂのために選択される。しかしながら、本発明は、そのようには制限されない。他の値を参照することができる。事実、これらの値は、時間的に調整される。
式（5）は、Ｔが２つの可能な値を大きい方をとることを可能にするということに注目すべきである。まず、目標ビットレートは、利用できるビットおよび最後にエンコードされたフレームビットに基づいて計算される。最後のフレームが複雑でありまた多くのビットを含むならば、それは、より多くのビットが現フレームに割り振られるべきであるという前提に導く。しかしながら、この割り当てを増加すると、残りのフレームをエンコードするための利用可能なビット数が少なくなり、このため、このフレームに対して、割り当てが増加されることを制限する。重み付けされた平均は、式（5）の第２項に表されるように、これらの２つの要因の妥協案を反映している。
第２に、目標レート（Ｒs／３０）の下限は、最小量の品質を補償し、あるいは維持するために使用され、例えば８００ビット／フレームが最小として設定されることができる。最小量の品質が維持されることができないならば、エンコーダは、現フレームを完全に飛び越すためのオプションを有する。
式（5）の目標ビットレートは、それから、アンダーフローおよびオーバフローの両方を避けるためにバッファの状態に従って、次のように
T′=T*(B+c*(Bs-B))/(c*B+(Bs-B))                    (6)
調整される。
Ｔ′は、調整された目標ビットレートであり、Ｂsは全バッファサイズであり、ｃは値２（他の値を使用できる）であるように選択された定数であり、Ｂはデコーダに送られるべきビットを含むバッファ部分である。このようなものとして、Ｂs−Ｂは、バッファの残りの空間である。式（6）は、バッファが半分を超えて満たされているならば、目標ビットレートＴ′は減少される。この逆に、バッファが半分より少なく満たされているならば、目標ビットレートＴ′は増加される。バッファが正確に半分ならば、調整は必要とされず、式（6）はＴ′＝Ｔに変わる。
さらに、目標ビットレートの調整は、
if(B+T′>0.9*Bs),then T″=Max(Rs/30,0.9*Bs-B)            (7a)
if(B-Rp+T′<0.1*Bs),then T″=Rp-B+0.1*Bs            (7b)
と表現される式（7a）、（7b）に従って調整を受けなければならないことがある。ここで、Ｔ”は第２の調整された目標ビットレートである。式（７a）は、目標ビットレートの調整を制限する（押しつける（clamp））ことによって、オバーフロー条件を回避するように設計されている。つまり、現フレームに関する計算された目標ビットレートＴ′の合計および現バッファの満杯度は、バッファ容量の９０％を越えてはならない。バッファ容量に近すぎる運転は、差し迫っているオバーフロー条件を作り出す危険にエンコーダを置く、つまり、次のフレームの複雑度に急な変化、例えば余分な運動または場面の削除、がある場合である。再び、Ｔ”が下限（Ｒs／３０）未満であると、そのとき、エンコーダはフレームの飛び越し（skipping）のオプションを有する。
対照的に、式（７b）は、目標ビットレートの調整を修正することによってアンダーフロー条件を回避するように設計されている。つまり、計算された目標ビットレートＴ′の合計および現バッファの満杯度は、バッファ容量の１０％を下回ってはならない。空のバッファに近すぎる運転は、差し迫っているアンダーフロー条件を作り出す危険にエンコーダを置く。つまり、次のフレームの複雑度にほとんど変化ない場合、例えば次のフレームにおいて全く運動がない場合である。一旦、目標ビットレートが計算されると、方法２００はステップ２４０に進む。
ステップ２４０では、方法２００は、現フレームに関する量子化レベルおよび量子化スケールを以下のように計算する。
T″′=Max(Rp/3+Hp,T”)                       (8a)
if(X2=0)     Qc=X1*Ec/(T”’-Hp)               (8b);
else Qc=(2*X2*Ec)/(sqrt((X1*Ec)2+4*X2*Ec*(T”’-Hp))-X1*Ec)  (8c)
ここで、Ｑcは、現フレームに関する計算された量子化スケールであり、Ｈpは前フレームのヘッダおよび運動ベクトルをエンコードするために使用されるビット数であり、Ｅcは運動補償した後の現フレームに関する平均絶対差である。つまり、式（８b）および式（８c）は、それぞれ、１次および２次オーダの方程式であり、ここで、Ｑcは容易に計算される。式（８a）は、ヘッダに対して指定されたビットレートより目標ビットレートが確実に大きくなるように採用された別の目標ビットレート調整である。
本発明の好ましいな実施の形態は、２次オーダの式を用いる複雑度メジャを採用するけれども、他のオーダの式、例えば多くの計算コストをかける３次オーダ等を使用できることを理解すべきである。加えて、本発明の好ましいな実施の形態は一続きの目標ビットレート調整を採用するけれども、計算のオバーヘッドを縮小するために、これらの目標ビットレート調整を省略できることを理解すべきである。しかしながら、目標ビットレート調整がないと、アンダーフロー状態またはオバーフロー状態の危険が増す。
さらに、現フレームのための目標ビットレートは、ヘッダ、運動ベクトル、および現フレームに関連づけられた他の情報をエンコードするために必要とされるビット量によって調整される。ヘッダおよび他の情報は、一般に、フレームからフレームに大きく変化することはないので、前フレームに関するヘッダ情報をエンコードするために使用されるビット数Ｈpは、現フレームに関するヘッダ情報をエンコードするために必要とされる適切な近似のビット数を提供する。
このようなものとして、量子化レベルの選択はヘッダおよび運動ベクトルのコード化に影響を与えないので、式（1）を表現する別の方法は、
Ｔ−Ｈp＝Ｘ1ＥＱ-1+Ｘ2ＥＱ-2                                    （9）
である。
加えて、計算された量子化スケールＱcは、フレームからフレームへ一様な視覚品質を確実にするために、以下のように調整されなくてはならないことがある。
Qc′=Min(ceil(Qp*1.25),Qc,31)                 (10a)
Qc′=Max(ceil(Qp*0.75),Qc,1)                  (10b)
ここで、Ｑc′は調整された量子化スケールであり、Ｑpは前フレームにおいて使用された量子化レベルである。計算されたＱcは、式（10a）および式（10b）に従って限定（limit）または制限（clip）されない。つまり、Ｑc′は、計算されたＱc、前フレームＱpにおいて使用された前量子化レベルの１２５％、または（ＭＰＥＧ標準によって設定された）最大量子化レベル３１のいすれかより小さい値を選択することによって、式（10a）に従って計算される。同様に、Ｑc′は、計算されたＱc、前フレームＱpに使用された前量子化レベルの７５％、または（ＭＰＥＧ標準によって設定された）最小量子化レベル１のいすれかのより大きい値を選択することによって、式（10b）に従って計算される。一般的に、量子化レベルは、整数値に丸められる。式（10a）は、Ｑc＞Ｑpの条件の下にＱc′を計算するために使用され、他の場合には、式（10b）が使用される。
式（10a）および式（10b）は、フレーム間の量子化レベルにおける急激な変化を制限するために役立ち、その変化は、次には、デコードされたピクチャの視覚品質における顕著な変化を引き起こすことがある。この方法では、量子化器レベルは、コード化レートを最適化する一方で、運動映像の全体にわたる品質を維持するために、各フレーム毎に計算される。一旦、量子化レベルが現レベルに対して計算されると、方法２００はステップ２５０に進む。
ステップ２５０では、この方法は、現フレームをエンコードすることから生じる実際のビット数を表すＲcを生成するためにステップ２４０から計算された量子化レベルを使用して現フレームをエンコードする。Ｒcを用いて、複雑度メジャの、あるパラメータは、以下のように更新される。
B=B+Rc-Rp                          (11)
Rr=Rr-Rc                           (12)
Sp=Rc                              (13)
Hp=Hc                              (14)
Qp=Qc                              (15)
Nr=Nr-1                            (16)
第１に、バッファ満杯度Ｂが、ビットＲcの追加およびビットＲpの削除（トランスミッション）によって更新される。第２に、シーケンスに利用可能な残りの全ビット数Ｒrは、Ｒc量によって更新される。第３に、ＳpはＲcで置き換えられる。第４に、Ｈpは、Ｈcで置き換えられる。第５に、Ｑpは、Ｑcで置き換えられる。最後に、Ｎrは、１づつ減数される。
ステップ２６０では、方法２００は、現シーケンスにおいてコード化されるように残されている追加のフレームがあるか否かを問い合わせる。その問い合わせが肯定的に回答されると、方法２００は、ステップ２２０に戻り、ステップ２２０では、方法２００が、式（1）または式（9）の複雑度メジャをさら向上させるために、更新されたＱc、Ｒc、Ｈc、およびＥcを２次回帰モデル（quadratic regression model）または多項式回帰モデルにおいて適用する。つまり、定数Ｘ1、Ｘ2は、フレームに割り当てられたビット数と、特定の量子化レベルに関してフレームをコード化するために必要とされる実際のビット数との間の不一致を埋め合わせる（account for）ように更新される。回帰モデルは、当該技術分野において良く知られている。様々な回帰モデルの詳細な議論に関しては、例えば、Bowerman及びO′Connell著，Forecasting and Time Series, 3ed Edition, Duxbury Press,（1993, chapter 4）を参照されたい。複雑度メジャを更新するための第２の実施の形態が以下に与えられる。方法２００は、そのとき、ステップ２２５へ進む。
ステップ２２５では、方法２００は、シーケンスにおける次のフレームが跳び越されるべきが否かを問い合わせる。問い合わせが否定的に回答されると、方法２００はステップ２３０へ進む。問い合わせが肯定的に回答されると、方法２００はステップ２２０に戻り、ステップ２２０では、ＢおよびＲpが更新される。フレームを跳び越す決定は、
if(B>0.8*Bs)then skip next frame                (17)
に従って決定される。つまり、バッファ満杯度は、例えば８０％収容を越えるといったバッファの収容能力に近すぎないかを決定するために、再びチェックされる。バッファ満杯度の検証は、エンコーダが、現フレームに関する目標レートを計算するために必要か否かを速やかに決定することを可能にする。バッファがその収容能力にとても近いと、例えば伝送チャネルがダウンしているとか、またはエンコーダがいくつかのとても複雑なフレームを受け取る、といったオバーフロー条件が差し迫っている公算がある。リアルタイム要求のため、エンコーダは、フレームを処分するために速やかにその決定をすることができ、計算サイクルを費やさなくてはならなく無く、且つ後に同じ決定に達しなければならないことが無い。８０％が好ましい実施の形態に対して選択されるけれども、他のバッファ収容能力の限界が特定の応用のために選択されることができる。
フレームが処分されると、方法２００はステップ２２０に戻り、ステップ２２０では、パラメータＮrおよびＢは、以下のように更新される。
Ｂ＝Ｂ−Ｂp                                           （18）
Ｎr＝Ｎr−１                                          （19）
方法２００は、それから、ステップ２２５に戻り、再び、シーケンスにおける次のフレームが跳び越されるべきかを問い合わせる。問い合わせが否定的に回答されると、方法２００は、上記のように、ステップ２３０に進む。問い合わせが肯定的に回答されると、方法２００は、別のフレームなどを跳び越す。方法２００は、全てのフレームがシーケンスに対してエンコードされるときに、ステップ２７０において終了する。
本発明には、複雑度メジャを更新するために第２の実施の形態が与えられる。その議論は、以下の定義を使用する。
Ｑp［w］：過去のフレームに関する量子化レベル
Ｒp［w］：過去のフレームにために使用されている変倍エンコード化複雑度。
W：エンコードされた過去のフレーム数。
X：マトリックスはＱpを含む。
Y：マトリックスはＱp＊（Ｒc−Ｈc）。
Ｅp：前フレームに対する平均絶対差。これは、Ｙ成分のみに関する運動補償の後に計算される。メジャがＥpの線形関数であるので、規格化は必要とされない。
この方法は、以前にエンコードされたフレームに関する様々な情報を集める。より具体的には、いくつかの量子化レベルのいくつか（または、ウインドウｗ）、および前フレームに対して使用された変倍されたエンコード複雑度が、２個の行列、つまり、
0004111351.tif 000002
に集められる
ｗの選択は、
ｗ＝Ｍｉｎ（total_data_number，２０）                        （20）
に従って選択される。すなわち、ウインドウサイズは、最大値２０に制限される。その理由は、「より昔の」エンコードされたフレームに関連する情報は、現フレームの複雑度に関する情報量があまりないということがある。ウインドウサイズを制限することによって、計算の費用が最小化される。
しかしながら、ｗに対する値は、「スライドするウインドウ」ｗ′を生成するために、
if(Ep>Ec),then w′=ceil(Ec/Ep*w);
else w=ceil(Ep/Ec*w)                        (21)
に従って適応的に調整されることができる。データ点はウインドウを用いて選択され、そのウインドウのサイズは、複雑度における変化に依存する。その複雑度が著しく変化すると、より最近のデータ点（以前にエンコードされたフレーム）を持つより小さいウインドウが使用される。つまり、前フレームおよび現フレームに関する平均絶対差が、所定のサイズｗを縮小するように使用される。Ｅcを持つ各フレームにならってＥpが更新される。
この方法は、
if(all Qp[i]are the same), then X1=y[i]/w and X2=0
else b=(x_Transpose*x)-1*x_Transpose*y;            (22)
2x1=(2xw*wx2)-1*(2xw)*(w*1)
X1=b(1,1)and X2=b(2,1)
に従ってＸ1およびＸ2を決定するために、評価（エスティメータ（estimator））関数を実行する。ここで、ｘ＝［１，Ｑp［i］-1）（i＝1,2，．．．ｗ）］（デメンションwx2 ２）およびｙ＝［Ｑp［i］-1（i＝1,2，．．．ｗ）］（デメンションwx1）である。
一旦、Ｘ1およびＸ2が決定されると、その方法は、
std+=((X1*EcQp[i]-1+X2*Ec*Qp[i]-2-Rp[i]*Ec))2;
error[i]=X1*Ec*Qp[i]-1+X2*Ec*Qp[i]-2-Rp[i]*Ec;        (23)
set threshold=sqrt(std/w);
if(abs(error)[i])>threshold), then remove data point I from matrix x and y for the estimator above.
abs(error[i])>thresholdならば、上記エスティメータの対するマトリックスｘおよびｙからデータ点Ｉを除く、に従って「Remove Outlier（部外点削除）」操作を実行する。
つまり、式（23）の操作は、上式（22）の評価操作に影響を与えあるしきい値を越えているデータ点を削除するために役立つ。一旦、「Remove Outlier」操作が完了すると、方法が、式（22）の評価関数に再び戻り、部外データ点を用いずにＸ1およびＸ2を再び決定する。このため、複雑度メジャは、部外データ点を除くことによって再びキャリブレーションされる。削除判定基準は、予測誤差が１標準偏差よりも大きいとき、データ点が廃棄されるということである。
図３は、本発明を包含するウエーブレットに基づくエンコーダ３００を示している。エンコーダは、ブロック運動補償器（BMC）および運動ベクトルコード化器３０４、引き算器３０２、離散ウエーブレット変換（DWT）コード化器３０６、ビットレート制御器３１０、DWTデコーダ、並びに出力バッファ３１４を含む。
一般的に、上記のように、入力信号はビデオ画像である（ビデオシーケンスにおけるフレームを規定するピクセル（pels）の２次元アレイである）。低ビットチャネルを介して画像を正確に伝送するために、ビデオフレームシーケンスにおける空間的および時間的な冗長性は、実質的に縮小される。これは、一般的に、連続するフレーム間の差のみを伝送し、またコード化することによって達成される。エンコーダは、３個の機能を有する：第１に、その機能は、ＢＭＣおよびそれのコード化器を使用して、フレーム間に起こる運動を表す複数の運動ベクトルを生成する；第２に、その機能は、運動ベクトルと組み合わされた前フレームの再構築バージョン（版）を使用して現フレームを予測する；第３に、予測されたフレームは、現フレームから差し引かれ、運動ベクトルと一緒に受け手（レシーバ）に向けて伝送され、また符号化される１フレームの残余を生成する。
離散ウエーブレット変換は、ウエーブレット階層的サブバンド分解を実行し、入力画像の在来型ウエーブレット・トリーを生成する。このような画像分解を達成するために、画像は、２回のサブサンプリングを用いて、高い水平周波数−高い垂直周波数の（ＨＨ）サブバンド、高い水平周波数−低い垂直周波数の（ＨＬ）サブバンド、低い水平周波数−高い垂直周波数の（ＬＨ）サブバンド、低い水平周波数−低い垂直周波数の（ＬＬ）サブバンド、に分解される。ＬＬサブバンドは、さらに２回サブサンプリングされ、一組のＨＨサブバンド、ＨＬサブバンド、ＬＨサブバンド、ＬＬサブバンドを生成する。このサブサンプルは、再帰的に達成され、図４に示されるような１アレイのサブバンドを生成し、図４では、３つのサブサンプリングが使用されている。好ましくは、６回のサブサンプリングが実際においては使用される。サブバンド間の親子の依存状態は、親ノードのサブバンドから子ノードのサブバンドへ指し示されている矢印として図示されている。最低の周波数サブバンドは、左上のＬＬ1であり、また最高の周波数サブバンドは右下のＨＨ3である。この例では、全ての子ノードは、１個の親ノードを持つ。サブバンド分解の詳細な議論は、J. M. Shapiro著、「Embedded Image Coding Using Zerotrees of Wavelet Coefficients」, IEEE Trans. On Signal Processing, Vol. 41, No. 12, pp.3445-62, December 1993に表されている。
図３のＤＷＴコード化器は、幅優先パターンまたは深さ優先パターンのいずれかでウエーブレット・トリーの係数を符号化する。幅優先パターンは、ビットプレーンパターンによってビットパターンにおけるウエーブレット・トリーを詳しく検討する。すなわち、全親ノード、それから全子供、それから全孫、等を量子化する。対照的に、深さ優先パターンは、低低サブバンド（ＬＬ1）における根元から子供を介して（トップダウン）、または子供における根元から低低サブバンドを介して（ボトムアップ）、各トリーを詳しく検討する。レート制御器３１０による適当な量子化レベルの選択は、上記のように、シーケンス内部の各フレームに対してビットレートを制御することである。
そのようなものとして、本発明は、異なる変換を使用する様々なタイプのエンコーダに適用されることができる。さらには、本発明は、フレームに対する量子化レベルの適当な選択に制限されることはない。本発明は、マクロブロック、スライス、またはオブジェクト、例えば、ある人間の部分、背景、または前景、に適用することができる。すなわち、レート制御方法は、マクロブロック、スライス、またはオブジェクトに適用されることができ、これらでは、複雑度メジャが、以前にエンコードされた画像シーケンスの部分、例えば以前にエンコードされたマクロブロック、スライス、またはオブジェクトおよびそれらのウインドウ、を用いてエンコーダに対する最適のレート制御スキームをもたらす（effect）ように、現在のマクロブロック、スライス、またはオブジェクトに対する目標ビットレートを決定するために適用される。例示すればビデオ電話といった特定に応用において、前景オブジェクト、例えば話者の頭および肩は、背景オブジェクトよりも更なる正確さで量子化のために選択される。
最終的には、上記の発明は、Ｐフレームを参照しながら議論されてきたけれども、本発明は、同様にＢフレームにも適用できる。
図５は、本発明のエンコード化システム５００を図示している。エンコード化システムは、汎用計算機５１０および様々な入力/出力デバイス５２０を備える。汎用計算機は、中央処理装置（ＣＰＵ）５１２、メモリ５１４、および１シーケンスの画像を受けまたエンコード化するためにエンコーダ５１６を備える。
好ましい実施の形態では、エンコーダ５１６は、既に議論したように、単に、エンコーダ１００および／またはエンコーダ３００である。エンコーダ５１６は、通信チャネルを介してＣＰＵ５１２へ結合される物理的なデバイスであることができる。代わりに、エンコーダ５１６は、格納デバイスからロードされ、またコンピュータのメモリ５１２に存在するソフトウエア・アプリケーションによって表されることができる。このようなものとして、本発明のエンコーダ１００および３００は、コンピュータで可読な媒体上に格納されることができる。
コンピュータ５１０は、キーボード、マウス、カメラ、カムコーダ、ビデオモニタといった複数の入出力デバイス５２０、任意の数の画像化デバイス、または、以下のものに限定されるものではないが、テープドライブ、フロッピィドライブ、ハードディスクドライブ、若しくはコンパクトディスクドライブを含む記憶デバイス、に結合されることができる。入力デバイスは、エンコード化されたビデオビットストリームを生成するためのコンピュータへの入力を提供するために、または、記憶デバイスまたは画像化デバイスからのビデオ画像のシーケンスを受けるために、役立つ。
コード化レートを最適化する一方で、ビデオ画像の全体品質を維持するように、各フレーム毎に量子化器スケールを再帰的に調整する新規な方法および装置が記述され、また示されてきた。主題の発明の多くの変化、修正、変形並びに他の使用および応用は、しかしながら、これらの実施例を開示した添付図面およびこの明細書を考慮した後に、当業者に明らかになるであろう。本発明の精神および範囲から逸脱しない、このような全ての変化、修正、変形並びに他の使用および応用は、本発明によってカバーされるべきと思われる。
【図１】
0004111351.tif 000003
【図２】
0004111351.tif 000004
【図３】
0004111351.tif 000005
【図４】
0004111351.tif 000006
【図５】
0004111351.tif 000007