(57)【特許請求の範囲】
【請求項１】
少なくとも１つのブロックに区分される少なくとも１つの入力フレームを有する入力画像シーケンスを符号化するための装置において、
前記ブロックに対する動きベクトルを計算し、該動きベクトルを用いて予測画像を生成するためのブロック動き補償器と、
該ブロック動き補償器に結合されており、前記入力フレームと前記予測画像との間の差信号に対する変換として、複数の係数を発生する変換を行うための変換モジュールと、
該変換モジュールに結合されており、前記複数の係数を或る量子化スケールで量子化するための量子化器と、
該量子化器に結合されており、直前の符号化された部分からの符号化情報に応答して、現在ブロックに対する前記量子化スケールを、前記ブロックに割り当てられたビット数が量子化スケールの逆数の２次以上の関数で表される複雑度モデルを用いて選択的に調整するためのコントローラと、
前記量子化器に結合されており、前記複数の量子化された係数を符号化するための符号化器とを備えて入力画像シーケンスを符号化するための装置。
【請求項２】
前記変換モジュールがＤＣＴを行い、前記ブロックから複数のＤＣＴブロックを生成する請求項１記載の装置。
【請求項３】
前記複雑度モデルを前記２次以上の関数の定数項をブロック単位に更新することで調整する請求項１記載の装置。
【発明の詳細な説明】
本願は、１９９５年１０月２５日に出願された米国仮特許出願第60/007,014号、１９９５年１０月２５日に出願された同第60/007,016号および１９９６年６月２８日に出願された同第60/020,872号の権利を請求するものである。
本発明は、動画ビデオの符号化を最適にするための装置および関連する方法に関する。より詳細には、本発明は符号化レートを最適にしながら動画ビデオの全体の画質を維持するよう、マクロブロック毎に量子化器のスケールを再帰的に調節する方法および装置に関する。
発明の背景
デジタルビデオ技術が多く開発されるにつれ、ビデオ圧縮コーデック（符号化器／復号器）の高コストを低減し、異なるメーカーの機器の相互作動性を解決するという課題が増大した。これら目標を達成するため、ＭＰＥＧ（Moving Picture Experts Group：動画専門家グループ）は国際規格１１１７２および１３８１８（これら規格の全体を本願で参考例として引用する）を定めた。
レート制御の分野ではＭＰＥＧは符号化器のビットレートを制御するための特定のアルゴリズムを規定していない。符号化の設計者の仕事は復号化器の入力バッファがオーバーフローやアンダーフローを生じないようにビットレートを制御するためのレート制御プロセスを考え付くことにある。従って、符号化器にオーバーフローおよびアンダーフロー状態を防止するように、符号化によって発生されるビット数をモニタさせるようにすることは符号化器のタスクである。
現在では、ビットレートを制御する１つの方法は、入力ビデオ画像のひずみに影響する量子化プロセスを変更することである。量子化器のスケールを変えることによりビットレートを変更し、制御できる。量子化器のスケールを変えることは、符号化器のレート制御を実現する有効な方法であるが、良好でないレート制御プロセスは実際にビデオ画像の可視画質を劣化することが判っている。
現在のＭＰＥＧ符号化方針では、同一タイプのすべての画像は画像グループ内で同じ複雑度となっていることを仮定してマクロブロックごとの量子化器のスケールを選択している。しかしながらこの基準によって選択された量子化器のスケールは各画像の複雑度が時間と共に変化するので、最適な符号化特性を得ることはできない。
更にグローバルタイプの変換を利用する符号化器は、同様な問題を有する。音響学、音声および信号処理に関する国際会議の議事録、カリフォルニア州サンフランシスコ、１９９２年３月、第ＩＶ巻、６５７〜６６０ページには、例えばかかるグローバルタイプの圧縮技術が記載されており、この文献では階層的サブバンド分解、又はウェーブレット変換を行い、ゼロツリーを組入れた階層的な連続近似エントロピー符号化量子化を行う信号圧縮システムが開示されている。マルチ解像階層的サブバンド表示を使用する信号データの表示は、バート、外著、通信に関するＩＥＥＥトランザクション、Vol Com-31、No.４、１９８３年４月、５３３ページに開示されている。クリチカルにサンプリングされる直交ミラーフィルタ（ＱＭＦ：Quadrature-Mirror Filter）サブバンド表示としても知られるウェーブレットピラミッドは、画像の特殊なタイプのマルチ解像階層的サブバンド表示である。ウェーブレットピラミッドはペントランド、外著、データ圧縮会議議事録（１９９１年８月８日〜１１日、ユタ州スノーバード）に開示されている。ＱＭＦサブバンドピラミッドは「サブバンド画像符号化」、Ｊ.Ｗ.ウッズ編、クルーエル・アカデミック・パブリッシャー、１９９１年、およびＩ.ドベッシー著「ウェーブレットに関する１０講」、工業および応用数学学会（ＳＩＡＭ）ペンシルバニア州フィラデルフィア、１９９２年に記載されている。更に、１９９５年５月２日に発行され、本願で参考例として引用する米国特許第5,412,741号は、高い圧縮度で情報を符号化するための装置および方法を開示している。
ビデオ符号化器からの出力ビットストリームはシーンの内容および符号化器が使用する符号化プロセスの性質に従って変動する可変ビットレートを有する性質がある。このように符号化器はチャンネルレートを信号の質の最小損失に合わせるよう、出力ビットレートを制御する機構を必要としている。
このように、当該技術分野では符号化レートを最適にしながら、ビデオ画像の全体の画質を維持するための装置および方法に対するニーズが存在する。同様に、ウェーブレット変換のようなグローバルタイプの変換を利用する符号化器は従来のレート制御技術では満たされない特殊な条件を有する。
発明の概要
本発明は符号化レートを最適にしながらビデオ画像の全体の画質を維持するように、最適な量子化器のスケールを選択するための方法および装置に関する。すなわち画像全体にわたって一様な主観画質を発生するよう、連続するマクロブロックに対して最適な量子化器のスケール比を維持しながら、画像に対する目標ビットレートが得られるよう、マクロブロックごとに量子化器のスケールを選択する。一実施例ではこの方法をフレームレベルに対して実行するが、他の実施例ではウェーブレット変換と組み合わせてこの方法を実行する。
【図面の簡単な説明】
添付図面を参照し、次の詳細な説明を検討すれば、本発明の教示内容について容易に理解できよう。
図１は、本発明の装置のブロック図を示す。
図２は、装置のビットレートを制御するための複雑度モデルに従った最適な量子化器のスケールを求めるためのフローチャートを示す。
図３は、最適な量子化比の制限に基づき、量子化スケールに対するモディファイアを求めるためのフローチャートを示す。
図４は、次のマクロブロックに対する量子化器のスケールを直接計算するために符号化プロセスから生じた実際のデータを使用するレート制御方法のためのフローチャートを示す。
図５は、第ｎフレームに対するビットＴp（ｎ）の予定数を計算するためのフローチャートを示す。
図６は、本発明を実施するウェーブレットに基づく符号化器のブロック図を示す。
図７は、ウェーブレットツリーのグラフである。
図８は、図６のウェーブレットに基づく符号化器における量子化器の符号化レートを制御するためのレートコントローラの詳細なブロック図である。
図９は、図８のレートコントローラによって実行されるフレームレイヤービット割り当てプロセスのフローチャートである。
図１０は、図９のプロセスのサブルーチンであるウェーブレットツリーレイヤービット割り当てプロセスのフローチャートである。
本発明の理解を容易にするよう異なる図にわたって共通する同一要素を表示するのに、可能な場合には同一参照番号を使用した。
詳細な説明
図１は符号化レートを制御しながらビデオ画像の全体の画質を維持するよう、各マクロブロックに対する符号化器スケールを求めるための本発明の装置１００のブロック図を示す。本発明の好ましい実施例では、装置１００は符号化器またはより複雑なブロックに基づく動き補償符号化システムのうちの一部である。この装置１００は動き予測モジュール１４０と、動き補償モジュール１５０と、レートコントロールモジュール１３０と、ＤＣＴ（Discrete Cosine Transform）モジュール１６０と、量子化（Ｑ）モジュール１７０と、可変長符号化（ＶＬＣ：Variable Length Coding）モジュール１８０と、バッファ１９０と、逆量子化（Ｑ-1）モジュール１７５と、逆ＤＣＴ（ＤＣＴ-1）モジュール１６５と、減算器１１５と、加算器１５５とを含む。装置１００は複数のモジュールを含むが、当業者であれば図１に示されるような別個のモジュールに分離する必要がないようにした、種々のモジュールによってこれらの機能を実現できよう。例えば動き補償モジュール１５０、逆量子化モジュール１７５および逆ＤＣＴモジュール１６５を含むモジュールの組は、一般に「埋込み復号化器」として知られている。
図１は、入力ビデオ画像（画像シーケンス１１０）を示し、このビデオ画像はＭＰＥＧ規格に従った１つの輝度信号および２つの色差信号（Ｙ、Ｃr、Ｃb）としてデジタル表示される。これら信号は各画像（フレーム）が複数のマクロブロックで表示されるように、更に複数のレイヤー（シーケンス、画像のグループ、画像、スライス、マクロブロックおよびブロック）に分割される。各マクロブロックは４つの輝度ブロックと１つのＣbブロックと、１つのＣrブロックから成り、ここで１つのブロックは８×８のサンプルアレイで表示される。画像をブロックユニットに分割することにより、２つの連続する画像の間の変化を弁別する能力が改善され、振幅の小さい、変換された係数（後述する）を除くことにより、画像圧縮が改善される。デジタル化された信号に対しオプションとして前（プリ）処理、例えば適当なウィンドー、解像度および入力フォーマットを選択するためのフォーマット変換を行ってもよい。
動きベクトルを予測するための動き予測モジュール１４０内にパス１１０上の入力ビデオ画像が受信される。動きベクトルは二次元ベクトルであり、このベクトルは動き補償によって使用され、基準フレーム内の座標に対する現在の画像における１つのブロックの座標位置からのずれを示す。ビデオ画像シーケンスの連続するフレームの間に存在する高い冗長性のために、動き情報（動きベクトル）を使用することにより基準フレームおよび現在フレームと基準フレームとの間の差から現在フレームを再構成できる。基準フレームは過去のフレーム（Ｐ−フレーム）でもよいし、過去の、および／または将来のフレーム（Ｂ−フレーム）でもよい。現在フレームと基準フレームとの間の変化の符号化および伝送しか行わないので、チャンネルを通して伝送される情報量を低減することにより、動きベクトルの使用は画像圧縮を大幅に高めることができる。現在では、動きの予測を実現するのに符号化器の設計者は種々の方法を利用できる。
動き予測モジュール１４０からの動きベクトルは動き補償モジュール１５０によって受信され、サンプル値の予測の効率を改善する。動き補償は予測エラーを形成するのに使用された、先に符号化されたサンプル値を含む過去および／または将来の基準フレームにオフセットを与えるよう、動きベクトルを利用した予測を行う。すなわち動き補償モジュール１５０は先に符号化されたフレームおよび動きベクトルを使って現在フレームの予測値を構成する。更に、当業者であれば、動き予測モジュールおよび動き補償モジュールによって実行される機能を、組み合わされたモジュール、例えば単一ブロックの動き補償器内で実現できることが理解できよう。
更に、所定のマクロブロックに対する動き補償予測を実行する前に符号化モードを選択しなければならない。符号化モード決定の分野において、ＭＰＥＧは複数の異なるマクロブロックの符号化モードを提供している。一般に、これら複数モードは２つの広義の分類、すなわちインター（フレーム間）モード符号化とイントラ（フレーム内）モード符号化にグループ分けされる。イントラモード符号化とは、マクロブロックまたは画像からの情報だけを使用してマクロブロックまたは画像の符号化を行うものであり、逆に、インターモード符号化とはマクロブロックまたは画像からの情報、および異なる時間で生じるマクロブロックまたは画像の情報を使用するマクロブロックまたは画像の符号化を行うものである。特にＭＰＥＧ−２はマクロブロック符号化モードを規定しており、これら符号化モードには、イントラモードと、動き補償なしモード（Ｎｏ  ＭＣ）と、フレーム／フィールド／デュアルプライム動き補償インターモードと、順方向／逆方向／平均インターモードと、フィールド／フレームＤＣＴモードとが含まれる。各マクロブロックに対して符号化モードを適正に選択することにより符号化特性が改善される。更に現在では、符号化モードの決定を行うのに符号化器設計者にとって種々の方法を利用できる。
一旦、符号化モードを選択すると、動き補償モジュール１５０は過去および／または将来の基準画像に基づき、ブロックの内容の動き補償予測（予測された画像像）をパス１５２上に発生する。現在マクロブロックにおけるパス１１０上のビデオ画像から減算器１１５によりパス１５２上の動き補償予測が減算され、パス１５３上にエラー信号、すなわち予測残余信号が形成される。この予測残余信号の形成は入力ビデオ画像における冗長情報を効果的に除くためのものである。すなわち伝送チャンネルを介し、実際のビデオ画像を伝送する代わりに、ビデオ画像の予測およびこれら予測のエラーを発生するのに必要な情報だけを伝送し、よって伝送に必要なデータ量を大幅に低減するようになっている。更にビットレートを低減するために、パス１５３上の予測残余信号をＤＣＴモジュール１６０へ送り、符号化を行う。
ＤＣＴモジュール１６０は予測残余信号の各ブロックに対し、順方向の離散コサイン変換プロセスを実行し、ＤＣＴ係数の８×８ブロックのセットを発生する。離散コサイン変換とは逆変換可能な離散変換であり、ここでＤＣＴ係数はコサイン基底関数の組の振幅を示す。この離散コサイン変換の１つの利点は、ＤＣＴ係数に相関性がないことである。このようなＤＣＴ係数の無相関性は、圧縮する上で重要であり、その理由は、圧縮効率を低下することなく、各係数を別々に処理できるからである。更に、ＤＣＴ基底関数（basis function）あるいはサブバンド分解は、量子化の次のステップに重要な心理視覚的（psychovisual）基準を有効に利用できるようにする。
こうして得られた８×８ブロックのＤＣＴ係数は量子化モジュール１７０により受信され、ここでＤＣＴ係数が量子化される。この量子化プロセスは整数値を形成するように適当な丸めを行った量子化値の組（セット）にＤＣＴ係数を分けることにより、そのＤＣＴ係数を表現する精度を低下させる。（通常、視覚的な重み付け量子化として知られる）基底関数の可視性に基づく基準を使用して、各ＤＣＴ係数に対して量子化値を別々設定できる。すなわち、量子化値は所定の基底関数の可視性に対するスレッショルド、すなわち人の眼が検出できる係数の振幅に対応する。この値により、ＤＣＴ係数を量子化することによりＤＣＴ係数の多くをゼロの値に変換し、よって画像圧縮効率を改善できる。この量子化プロセスは、キーとなる演算であり、画質を改善し、出力を所定のビットレートに一致させる（レート制御）ために符号化器を制御する上での重要な手段である。各ＤＣＴ係数に対し、異なる量子化値を利用できるので、一般に「量子化マトリックス」が基準テーブル、例えば輝度量子化テーブルまたはクロミナンス（色度）量子化テーブルとして設定される。
従って、符号化器は変換ブロック内の各周波数係数をどのように量子化するかを決定する量子化マトリックスを選択する。
しかしながら、量子化誤差の主観的知覚の度合は周波数と共に大きく変化し、より高い周波数に対してはより粗い量子化値を使用すると有利である。すなわち量子化誤差による人の認識感度は空間周波数が高くなるにつれ、低くなる。この結果、高い周波数はより粗く量子化され、低い周波数よりも少数の値しか許容されない。更に、正確な量子化マトリックスは多くの外部パラメータ、例えば意図するディスプレイの特性、可視距離およびソース内のノイズ量に依存する。従って、応用例または個々のフレームシーケンスに対しても、特別な量子化マトリックスを適応させることも可能である。一般に、適応量子化マトリックスは圧縮されたビデオ画像と共にコンテクストとして記憶できる。量子化器のスケールの適正な選択はレート制御モジュール１３０によって実現される。
次に、量子化されたＤＣＴ係数の、こうして得られる８×８ブロックは、信号接続部１７１を介して可変長符号化（ＶＬＣ）モジュール１８０によって受信され、このモジュールで量子化された係数の二次元ブロックがジグザグ順序でスキャンされ、ブロックを量子化されたＤＣＴ係数の一次元ストリングに変換する。このジグザグスキャン順序は、近似的に最低空間周波数から最高空間周波数までの順番にＤＣＴ係数を並べ変える順序である。量子化は一般に、高い空間周波数のＤＣＴ係数をゼロまで低下させるので、量子化されたＤＣＴ係数の一次元ストリングは数個の整数と、その後続くゼロ列によって一般に表示される。
可変長符号化（ＶＬＣ）モジュール１８０は、量子化されたＤＣＴ係数のストリングおよびマクロブロックに対するすべてのサイド情報、例えばマクロブロックタイプおよび動きベクトルを符号化する。このＶＬＣモジュール１８０は符号化効率を効率的に改善するよう、可変長符号化およびランレングス符号化を利用する。可変長符号化は反転可能な符号化プロセスであり、より頻繁に生じるイベント（event）に対しては、より短い符号ワードが割り当てられ、あまり頻繁でないイベントに対しては、より長い符号ワードが割り当てられ、一方ランレングス符号化はシンボルの実行を単一シンボルで符号化することにより符号化効率を高める。これら符号化方式は、当業者には周知のものであり、整数長符号ワードを使用する時はハフマン符号化として称されることが多い。従って、ＶＬＣモジュール１８０は入力ビデオ画像を有効データストリームに変換するための最終ステップを実行する。当業者であれば、ＶＬＣモジュールは他のタイプのエントロピー符号化器と置換できることが理解できよう。
データストリームは先入れ先出し（ＦＩＦＯ）バッファ１９０に受信され、異なる画像タイプおよび可変長符号化を使用する結果、ＦＩＦＯへの全体のビットレートは可変となる。すなわち各フレームを符号化するのに使用されるビット数を変えることができる。固定レートチャンネルを利用する応用例では、ビットレートを平滑化するために符号化器の出力をチャンネルに整合するのにＦＩＦＯバッファが使用される。従って、ＦＩＦＯバッファ１９０の出力信号はパス１１０上では入力ビデオ画像の圧縮表示信号であり、ここではパス２９５を介して記憶媒体または通信チャンネルへ送られる。
レート制御モジュール１３０はデータストリームを伝送した後、（受信機または目標記憶デバイス（図示せず）における）復号化器側でのオーバーフローおよびアンダーフローを防止するために、ＦＩＦＯバッファ１９０に進入するデータストリームのビットレートをモニタし、調節するように働く。従って、レート制御モジュール１３０の目的は、符号器によって発生されるビット数を制御するよう、バッファ１９０の状態をモニタすることである。
本発明の好ましい実施例では、レート制御モジュール１３０は符号化レートを制御しながらビデオ画像の全体の画質を維持するために、各マクロブロックに対する量子化器のスケールを選択する。すなわち画像全体にわたって一様な主観画質を発生するように、連続するマクロブロックに対し、最適な量子化スケール比を維持しながら、画像に対する目標ビットレートが得られるよう、各マクロブロックに対する量子化器のスケールが選択される。
より詳細に説明すれば、レート制御モジュール１３０は、まず先に符号化された画像から、またはＴＭ４およびＴＭ５の方法を実行することにより、特定タイプの画像（Ｉ、Ｐ、Ｂ）の複雑度のラフな予測値を得る。この予測された複雑度は各マクロブロックを符号化するのに必要な予測ビット数を導き出すのに使用される。こうした知識を用いることにより、多項式の複雑度モデルに従い、マクロブロックに対する量子化器のスケールが計算される。この複雑度モデルはマクロブロックに対する選択された量子化器のスケールを画像に対する目標ビットレートに近付ける制限条件を満たすように導き出される。
更に、量子化器のスケールは画像全体に対し、一定の画質を維持するための制限条件を満たすように導き出されたモディファイアによって適性化される。すなわちこの制限は、連続するマクロブロックに対し最適な量子化スケール比を維持することを求めるものである。レート制御モジュールはこのモディファイアを量子化器のスケールに適用し、マクロブロックを符号化するのに使用される最適な符号化器スケールを発生する。一旦、マクロブロックが符号化されると、レート制御モジュールは多項式の繰り返しプロセスを使用することにより複雑度モデルを再帰的に調節する。すなわちマクロブロックを符号化するのに必要な実際のビット数を使用して、符号化モデルを改良し、次のマクロブロックに対する量子化器のスケー”の予測を改善する。この量子化器のスケールの選択方法の詳細について、図２および図３を参照して後述する。
図１に戻ると、信号接続部１７２を介し、逆量子化モジュール１７５により、量子化モジュール１７０からの量子化されたＤＣＴ係数の、その結果得られる８×８ブロックも受信される。この段階で、符号化器はデータがその後の符号化のための基準フレームとして使用されるようにデータを復号することにより、入力ビデオ画像のＩフレームおよびＰフレームを再生する。逆量子化モジュール１７５は、量子化されたＤＣＴ係数を逆量子化することにより、復号プロセスを開始する。すなわち量子化されたＤＣＴ係数は整数値を発生するように適当に丸められた量子化値の組（セット）により乗算される。
ＤＣＴ係数の、この結果得られる逆量子化された８×８ブロックは、逆ＤＣＴモジュール１６５に送られ、ここで各マクロブロックに対し、逆ＤＣＴが加えられ、復号されたエラー信号が発生される。このエラー信号は加算器１５５を介し、動き補償モジュールからの予測信号に再び加算され、復号された基準画像（再構成された画像）を発生する。一般に、ＩフレームまたはＰフレームが復号された場合、このフレームは最も古く記憶された基準と置き換えられるように記憶される。従って、符号化レートを最適にしながらビデオ画像全体の画質を維持するために、各マクロブロックに対する量子化器のスケールを選択するための装置１００が開示される。
図２は、本発明の好ましい実施例における装置のビットレートを制御するための複雑度モデルに従い、最適量子化器のスケールを求めるためのフローチャートを示す。本発明の好ましい実施例を開発するために、量子化器のスケールの選択に対する最適化問題を明確にした。この解決案は符号化を行っている画像を組み立てるマクロブロックのすべてに対するレートひずみ特性、すなわちＲ（Ｄ）曲線に基づくものである。これらの結果に基づき、実際の実現例に対する複雑度の低い、各マクロブロックに対する量子化器のスケールを選択するための方法が提示される。
最適な解決方法のための第１制限式は次のとおりである。
0003739094.tif 000002
この式は画像に対する目標ビットレートを記述し、Ｔは個々のマクロブロックＲiに割り当てられたビット数を画像内のマクロブロックの総数Ｍのすべてについて累積した値である。
最適解のための第２の制限式は次のとおりである。
Ｑl×ｋl＝……＝ＱN×ｋn  （２）
この式は一定の画質を維持するには、量子化器のスケールＱiのマクロブロックｉと人の視覚系の重みｋiとの積が画像上の他のマクロブロックのＱとｋとの積に等しくなければならないことを意味している。実際には下記のように別の式で表現できる等しい画像全体が均一な画質を有するような、最適な量子化スケール比ｋi′…ｋN-1′の組が存在する。
0003739094.tif 000003
ここで、ｋi′＝ｋ1／ｋ2，…，ｋN-1′＝ｋN-1／ｋNである。
最適解に対する第３の制限式は次のとおりである。
Ｑi×Ｒi＝Ｘi（Ｖi）  （４）
この式はマクロブロックｉに対する複雑度の度合いＸiが測定値Ｖiの関数であり、また、マクロブロックｉのビットレートと量子化器のスケールの積で記述できることを示している。この関数の関係は、画像レイヤーおよびスライスレイヤーでも暗黙に仮定される。好ましい実施例では、測定値ｖiはマクロブロックｉにおけるピクセルにわたって計算された変化量である。
図２に示された本発明の方法２００は、上記制限式を満たす各マクロブロックに対する量子化器のスケールを導き出すように定められる。この解は１つの画像すなわちフレーム内で主観画質が一様となるように、すべての量子化器のスケールの相対比を維持しながら目標ビットレートを達成する。
図２を参照すると、この方法はステップ２０５で開始し、ステップ２１０に進み、ここでＲi、すなわち現在のマクロブロックｉを符号化するのに割り当てられるビットを予測するための、Ｒi＝ＸiＱi-1の関係式（式４）を有する初期モデルを適用する。この初期モデルは先の画像を実際に符号化することにより、または他のモデル、例えばＴＭ４およびＴＭ５によりそれぞれ画像Ｉ、ＰおよびＢの各タイプに対する複雑度Ｘ1、ＸPおよびＸBの初期予測値を得る。各画像を符号化することにより発生されるビット数および画像内のマクロブロックを量子化するのに使用される符号化器スケールの平均値から、各タイプの画像に対する複雑度が導き出される。初期モデルは同一タイプの画像は同様な複雑度を有すると仮定しているので、先に符号化された画像からの現在のマクロブロックに対するＲiがステップ２１０で短時間で予測できる。現在のマクロブロックに対する予測Ｒiはステップ２２０に送られ、適当な量子化器のスケールを計算する。
ステップ２２０ではこの方法は量子化器のスケールを計算するのに、次のように表記されるより正確な複雑度モデルを使用する
0003739094.tif 000004
ここでＲiはマクロブロックｉに割り当てられたビットであり、Ｑiはマクロブロックｉの量子化器のスケールであり、Ｘ0、Ｘ1およびＸ2は定数である。符号化プロセスの開始時に定数Ｘ0およびＸ2はゼロに設定される。これにより式（５）は事実上式（４）の初期モデルに簡単化される。符号化プロセスのこのような初期段階では不充分なデータしかないので、現在のマクロブロックに対する符号化器スケールのラフな予測値を得るのに式（４）が使用される。すなわち選択される符号化器スケールは先の画像におけるマクロブロックを符号化するのに使用された符号化器スケールの平均値である。
ステップ２３０では、この方法は最適な量子化スケール比の組を維持するという制限に基づくモディファイアγを計算する。このモディファイアは量子化器のスケールに対して乗算され、画像全体にわって一定の視覚的な画質が得られるように、最適な量子化器のスケールＱi(optimal)を発生する。モディファイアを発生するための方法については図３を参照して後に詳述する。
ステップ２４０ではこの方法はステップ２３０から計算された最適な量子化器ステップを使用することによりマクロブロックｉを符号化する。この符号化方法はマクロブロックｉを符号化するのに必要な実際のビット数を発生し、このビット数はステップ２５０へ送られる。
ステップ２５０ではこの方法はマクロブロックｉを符号化するのに使用される最適な量子化器のスケール、および多項式回帰モデルまたは２次回帰モデルでマクロブロックｉを符号化するのに必要な実際のビット数を使用し、ステップ２２０の複雑度モデルを改良する。すなわちマクロブロックｉに割り当てられるビットと、特定の量子化器のスケールに対するマクロブロックを符号化するのに必要な実際のビット数との差を考慮して、定数Ｘ0、Ｘ1およびＸ2を更新する。当業者には回帰モデルは周知のものである。種々の回帰モデルを詳細に検討するには、例えば、ボーワーマンおよびオッコーネル著「予測および時間シリーズ」第３版、ダクスベリープレス（１９９３年第４章）を参照されたい。
ステップ２６０において方法２００は、現在の画像で符号化するのに残っている別のマクロブロックがあるかどうかを問い合わせる。この質問に対し肯定的な回答がなされれば、方法２００はステップ２２０にリターンし、更新された定数Ｘ0、Ｘ1およびＸ2を有する次のマクロブロックに対する新しい量子化器のスケールを計算する。問い合わせに対して否定的な回答がなされた場合、方法２００は次の画像を符号化するように進むか、終了する。
図３は、最適な量子化スケール比の制限に基づく量子化器のスケールに対するモディファイアを導き出すための方法３００（図２のステップ２３０）を示す。この方法はステップ３０５で開始し、ステップ３１０へ進み、ここで次の式に従って、人の視覚系の重みｋi....ｋNの組を計算する。
0003739094.tif 000005
および
Ａｃｔi＝１＋ｍｉｎ（Ｖａｒ_ａｂｌｋ）  （７）
ここでＡｃｔiはマクロブロックｉに対する空間的な活動度の度合であり、このＡｃｔiはフレーム構成された４つの輝度のサブブロックおよびフィールド構成された４つの輝度のサブブロックのうちの最小のものからの最初のピクセル値を使用して計算される。Ｖａｒ＿ｓｂｌｋは次のように表記される。
0003739094.tif 000006
および
0003739094.tif 000007
ここでＰkは元の８×８サブブロックにおける元のピクセル値である。
ステップ３１０の好ましい実施例では、人の視覚系の重みの組を計算するのに使用される測定基準はマクロブロックｉにおけるピクセルにわたって計算される変化量である。画像に対するすべてのマクロブロックに対する人の視覚系の重みの組は、符号化前に計算される。
ステップ３２０では、この方法は画像に対する人の視覚系の重みの合計を示す度合Ｋを導き出すのに、人の視覚系の重みの組を合計する。従って、Ｋは次のように表記される。
0003739094.tif 000008
ステップ３３０ではこの方法は次のように表現されるｋi-1までの人の視覚系の重みのすべての合計を得る。
0003739094.tif 000009
実際にこのステップは、先のマクロブロックｉ−１までの人の視覚系の重みのすべての合計を計算する。
ステップ３４０では、画像全体に対するビットの予定数Ｔpは次の式によって計算される。
0003739094.tif 000010
ここで、Ｂi-1は先のマクロブロックｉ−１を含むマクロブロックまでの現在のフレームを符号化するのに使用されたすべてのビットの合計である。
ステップ３５０において、この方法はビットの予定数Ｔpを画像に対するビットの目標数Ｔで割ることにより、次のように表示されるモディファイア、すなわちビット活動インデックス比γを計算する。
0003739094.tif 000011
このモディファイアはステップ２２０で計算された量子化器のスケールＱiに対して乗算され、よって一定の画質が維持されるようにＱi(optimal)を発生する。
本発明の好ましい実施例では、ステップ２２０で表示される複雑度モデルは二次の多項式である。しかしながら線形複雑度モデルと二次多項式複雑度モデルと三次多項式複雑度モデルの性能を比較するためにフラワーガーデンシーケンスでのシミュレーションを行った。これら３つの方法の性能を判断する際に、実際のデータに対するモデルの適合の比較、すなわち平均二乗誤差の平方根計算を行い、比較した。下記の表１にこの結果を示す。
0003739094.tif 000012
この結果は、二次多項式の複雑度モデルは画像の複雑度を予測する際に線形モデルに対して７１％強の改善率をもたらすことから、符号化器の全体のレート制御を改善することを示している。更に、この結果は三次の多項式の複雑度モデルは線形モデルと比較して、改善率を７６％強にすることを示している。三次多項式の複雑度モデルのほうが良好な予測をするが、より高度の計算オーバーヘッドも必要となる。従って、符号化器の設計者は適当な複雑度モデルを選択するにあたり、予測性能と計算オーバーヘッドとをバランスさせなければならない。好ましい実施例では、二次多項式の複雑度モデルは適当な計算オーバーヘッドで正確な予測値を提供する。更に計算オーバーヘッドは特定の応用例に対し重要な制約となる場合、レート制御プロセスを簡略化するため、図３に示されるようなステップ２３０を省略してもよい。
本発明の第２実施例では、次のマクロブロックに対する量子化器のスケールを計算するのに、符号化プロセスから得られた実際のデータが直接使用される。この最適化プロセスは次の式から定式化される。
Ｒ（Ｄ）＝Ｆ（Ｄ）＋λ*Ｅ  （１４）
ここで、Ｒ（Ｄ）は画像を符号化するのに使用されるビット総数であり、Ｆ（Ｄ）は現在ブロックのレートひずみ関数であり、Ｅはこの画像で使用すべきビットの目標数であり、λはラグランジュ乗数である。実際に、画像に対する目標ビット割り当てＥの制約の下でレートひずみ関数Ｆ（Ｄ）を最小にするのにラグランジュ乗数プロセスが使用される。この最適化プロセスについては図４を参照して後述する。
図４は次のマクロブロックに対する量子化器のスケールを直接計算するために、符号化プロセスから得られた実際のデータを使用するレート制御方法４００のためのフローチャートを示す。この方法はステップ４０５で開始し、ステップ４１０まで進み、ここで、この方法はＩフレーム、ＰフレームおよびＢフレームのためのそれぞれの目標ビットレートＴI、PおよびＴBを計算するためにＴＭ４またはＴＭ５のような初期モデルを採用する。別のモデルは先のＩ、ＰおよびＢフレームを符号化するのに必要なビットの実際の数から、単に目標ビットレートＴI、ＴP、およびＴBを割り当てることである。
方法４００はステップ４１５において次のようにフレーム内の各マクロブロックに対するバッファの充満度の度合を計算する。
0003739094.tif 000013
ここで、Ｒiはｉ番目のマクロブロックを符号化する前のバッファの充満度であり、
Ｒ0は初期のバッファの充満度であり、
Ｂi-1はｉ−１個のマクロブロックを含む、このｉ−１番目のマクロブロックまでのすべてのマクロブロックを符号化することによって発生されるビット数であり、
Ｔは先のＩ、ＰまたはＢフレームにおけるＩ、ＰまたはＢフレームのための目標ビットバジェットであり、
ＮMBは現在のフレームにおけるマクロブロックの総数である。
バッファの充満度Ｒiは現在、符号化されたビットによって満たされている出力バッファの量に関するインジケータである。この度合は、符号化器がバッファをアンダーフローまたはオーバーフローさせないようにし、この結果、データが失われないように補償するものである。従って、この方法は出力バッファの充満度に応じて変化する量子化器のスケールを設定する。
この方法は次に、ステップ４２０でｉ番目のマクロブロックのための量子化器のスケールＱiを次のように計算する。
0003739094.tif 000014
0003739094.tif 000015
ステップ４２５では、この方法はステップ４２０にて計算されたマクロブロックに対する量子化器のスケールにより、ｉマクロブロックＭＢｉを符号化する。この結果得られるマクロブロックに対する符号化された信号はステップ４３０へ送られる。
ステップ４３０では符号化された信号からマクロブロックに対するひずみＤを計算する。このひずみＤは入力画像の対応する元のマクロブロックと量子化器されたマクロブロックとの間の実際のひずみである。計算されたひずみは比較のためにステップ４３５へ送られる。
ステップ４３５ではこの方法は、先の計算と比較してひずみが減少したかどうかを問い合わせる。最初の問い合わせに対し常に否定的な回答がなされるようにＤはゼロにセットされている。問い合わせに対する答えが否定的である場合、方法はステップ４４０に進み、ここでＴはＴ−ΔＴに置換される。ここでΔＴは次のように表示される。
0003739094.tif 000016
次に、ステップ４１５に戻り、量子化器のスケールの選択およびマクロブロックの符号化のプロセスを繰り返す。問い合わせに対する回答が肯定的である場合、この方法はステップ４５０に進む。実際に、この方法ではＴを調節する際にひずみが減少したことを示す実際のデータから判断した。
ステップ４５０では、Ｔを調節する所定の回数の繰り返しを行ったかどうかを問い合わせる。この問い合わせに対する回答が否定的であればステップ４５５へ進み、ここで式（１８）に従ってＴは再びＴ−Δに置換される。この方法は、所定の回数の繰り返しが満たされるまで繰り返される。問い合わせに対する回答が肯定的であればステップ４６５まで進む。好ましい実施例では、Ｔは２０回調節される。しかしながら他の要素、例えば速度、計算オーバーヘッドおよびひずみに合わせるように繰り返し回数を調節できる。
ステップ４６５ではこの方法はひずみを最小とするＴを選択する。このＴはステップ４１５において次のマクロブロックに対して使用される。
ステップ４７０では、この方法はｉを１だけインクリメントする。ステップ４７５では、更に別のマクロブロックがあるかどうかを問い合わせる。問い合わせに対する回答が肯定的であればステップ４１５に進み、次のマクロブロックに対し全体の方法を繰り返す。問い合わせに対する回答が否定的であれば、ステップ４８０に進み、ここでこの方法は終了するか、次の画像またはフレームに進む。
第３実施例では、図３のステップ３４０に開示されているようなビット予定数Ｔは先のフレームまたは画像の符号化情報を用いて計算できる。より詳細には、連続するフレームは密接に関連しているのが多いので、ｎ番目のフレームに対するビットの予定数Ｔp（ｎ）を導き出すのに、先のフレームを符号化するのに使用したビット数が用いられる。
図５は、先のフレームを符号化するのに使用されたビット数およびチャンネルの全ビットレート（または画像のグループ（ＧＯＰ）に対するビットバジェット）に従って、ｎ番目のフレームに対するビットの予定数Ｔp（ｎ）を計算するための方法５００のフローチャートを示す。この方法５００はすべての画像タイプに使用できるが、特にＰ画像に対するビット数を予測するのに特に適す。しかしながら、当業者であればＩおよびＢ画像の予測を改善するのに、方法５００を調整できることが理解できよう。
図５を参照すると、方法５００はステップ５１０で開始し、ステップ５２０まで進み、ここで方法５００はＴP(AVG)を計算する。ここでＴP(AVG)は次のように表示される。
ＴP(AVG)＝Ｍａｘ（ビットレート/フレームレート,Ｒ/Ｎ）  （１９）
ここで、ＴP(AVG)は残りのフレームを符号化するのに必要なビットの予定平均数であり、Ｒはビットの残りの数であり、Ｎはフレームの残りの数である。すなわち、ステップ５２０にて方法５００はチャンネルビットレートをフレームレートで割った値、またはＧＯＰにおけるビットの残りの数（すなわちＧＯＰのためのビットバジェットの残り）をＧＯＰにおけるフレームの残りの数で割った値のうちの大きいほうを選択することにより、残りのフレームを符号化するのに必要なビットの予定平均数を導出する。式（１９）はフレームに対するビットバジェットに大きく影響するチャンネルビットレートの変化を方法５００が考慮できるようにするものである。最後に、フレームレートは一般に毎秒３０枚のフレームに設定される。
しかしながらＴP(AVG)の計算は連続するフレーム内の内容の密接な相関性を考慮するものではない。すなわちこの計算が内容と独立しており、利用できるビットを残りのフレームに等しく分散させるものである。
ステップ５３０では、方法５００はＴP(AVG)からのｎ番目のフレームに対するビットの予定数Ｔp（ｎ）を計算する。ここで、ＴP（ｎ）は次のように表示される。
ＴP(ｎ)＝ＴP(AVG)*(１−ｗ)+Ｂ(ｎ−１)*ｗ  （２０）
ここで、Ｂ（ｎ−１）は先のフレームを符号化するのに使用されたビット数であり、ｗは０．０５にセットされた重み付け係数である。従って、ｎ番目のフレームに対するビットの予定数Ｔp（ｎ）は先のフレームを符号化するのに使用されたビット数を考慮した要素を含むので、１つのフレームを符号化するのに使用されるビット数の予定値を改善する。次にＴp（ｎ）は図２〜４にてこれまで説明したように、効率的なレート制御を行うための、量子化器のスケール変更に使用できる。最後に方法５００はステップ５４０で終了する。
更に、当業者であれば、使用されたビット数と残りのビット数の関係を評価することにより、方法５００を実現できることが理解できよう。更に他の応用例に合わせるように、重み付け係数ｗを他の値に調節したり、ＧＯＰ内の内容に応答して調節できる。
更に、今後採用されるＭＰＥＧ４規格で提案されている検証モデル（ＶＭ：Verification Models）と比較して方法５００に示されたレート制御方法の有効性を実証するのに、アペンディクスＡを添付した。
図６は、本発明の第４実施例を含む符号化器６００を示す。この符号化器はブロック動き補償器（ＢＭＣ）および動きベクトル符号化器６０４と、減算器６０２と、離散ウェーブレット変換（ＤＷＴ）符号化器６０６と、ビットレートコントローラ６１０と、ＤＷＴ復号化器６１２と、出力バッファ６１４とを含む。
一般に、入力信号はビデオ画像（ビデオシーケンスでフレームを定めるピクセル（ペル）の二次元アレイ）である。低ビットレートチャンネルを通して画像を正確に伝送するには、ビデオフレームシーケンスにおける空間的、かつ時間的冗長性を実質的に低減しなければならない。これは一般的に、連続するフレームの間の差のみを符号化し、伝送することによって達成される。符号化器は３つの機能を有する。第１の機能としてＢＭＣおよび符号化器６０４を使用してフレーム間で生じる動きを示す複数の動きベクトルを発生する。第２の機能として、この動きベクトルと組み合わされた先のフレームの再構成されたバージョンを使用して、現在フレームを予測する。第３の機能として、現在フレームから予測されたフレームを減算し、残余フレームを生成し、この残余フレームを符号化し、動きベクトルと共に受信機へ伝送する。受信機では復号器は符号化された残余信号および動きベクトルを使用して各ビデオフレームを再構成する。図６に示されているような一般的な構造を有するウェーブレットに基づくビデオ復号器は、１９９５年１０月２５日に出願された米国仮特許出願第60/007,012号（代理人整理番号１１９０８）（本願は        年    月    日に出願された米国特許出願第           号に変更（代理人整理番号ＤＳＲＣ１１９０８））および１９９５年１０月２５日に出願された米国仮特許出願第60/007,013号（代理人整理番号１１７３０）（本願は１９９６年１０月２３日に出願された米国特許出願第          号に変更（代理人整理番号ＤＳＲＣ１１７３０））の双方に開示されており、いずれの出願も本願で参考例として引用する。これら双方の出願は、ビデオ信号を符号化するのにウェーブレット変換を使用することを記載している。
本発明はウェーブレット符号化器の符号化レートを制御する技術に焦点を合わせている。ビデオシーケンスからウェーブレットを生成するための符号化器の一般的な機能は、本発明の一部を構成するものではなく、単に図６に示され、本発明を実施化するための背景をなすものとして以下に説明するにすぎない。
離散ウェーブレット変換は入力画像の従来のウェーブレットツリー表示を生成するように、ウェーブレット階層サブバンド分解を実行する。かかる画像分解を行うには高水平−高垂直（ＨＨ）、高水平−低垂直（ＨＬ）、低水平−高垂直（ＬＨ）および低水平−低垂直（ＬＬ）周波数サブバンドへの、２回サブサンプリングを使用して画像を分解する。更にＬＬサブバンドはＨＨ、ＨＬ、ＬＨおよびＬＬサブバンドの組を生成するように、更に２回サブサンプリングされる。このサブサンプリングは、３回のサブサンプリングを使用する図７に示されているようなサブバンドアレイを生成するよう再帰的に行われる。実際には、好ましくは６回のサブサンプリングを使用する。サブバンドの間のペアレント（親）とチャイルド（子）の従属性は、ペアレントのノードのサブバンドからチャイルドノードのサブバンドを指す矢印のように示される。最低周波数のサブバンドは左側頂部のＬＬ1であり、最高周波数のサブバンドは底部右側のＨＨ3である。本例では、すべてのチャイルドノードは１つのペアレントを有する。サブバンド分解の詳細な説明は、Ｊ.Ｍ.シャピロ著「ウェーブレット係数のゼロツリーを使用する埋め込み画像符号化」信号処理に関するＩＥＥＥトランザクション、第４１巻第１２号、３４４５〜６２ページ、１９９３年１２月に記載されている。
図６のＤＷＴ符号化器は「ブレス第１」または「デプス第１」パターンのいずれかでウェーブレットツリーの係数を符号化する。ブレス第１パターンはビット平面毎のパターンによりビット平面内のウェーブレットツリーを横断し、すなわちすべてのペアレントノードを量子化し、次にすべてのチャイルドノードを量子化し、次にすべてのグランドチャイルド（孫）ノード等を量子化する。これと対照的に、デプス第１パターンは低−低サブバンド（ＬＬ1）のルートからチャイルドノードを通って（トップダウン）、またはチャイルドノードから低−低サブバンドを通って（ボトムアップ）、各ツリーを横断する。
図８は、レートコントローラ６１０およびそのＤＷＴ符号化器６０６との相互接続部の詳細なブロック図である。ＤＷＴ符号化器は量子化器８０４と直列に接続されたＤＷＴ８０２を含み、量子化器８０４はエントロピー符号化器８０６と直列に接続されている。この量子化器の出力はＤＷＴ復号器６１２にも接続されている。エントロピー符号化器からの出力信号は出力バッファ６１４へ送られる。ＤＷＴ符号化器への入力信号は一般に、動き補償された残余信号を含む、あるシーケンスのフレームである。しかしながら一般的には、この入力シーケンスは任意の二次元データを含む一連のフレームでよい。フレーム内のこのデータの特定の性質は、本発明の作動と無関係である。
量子化器８０４はウェーブレット変換の係数を量子化するのに使用される。本発明に係わるレートコントローラ６１０は、符号化プロセス中に所定の連続したフレームに対する所定ビットバジェットを越えないように多数のパラメータに応じて量子化器のスケール（ステップサイズ）を制御する。本発明は、あるシーケンスのビデオフレーム内のフレーム（任意に第１フレーム）を統計学的に分析することに基づき、次のフレーム（第２フレーム）のためのビットバジェットを生成する。この統計学的分析は変換前のフレームに対して行われるので、この分析はフレームレイヤーで行うべきである。変換後行う処理は、ウェーブレットツリーレイヤー内で行うべきである。低−低サブバンドから延びる各ツリーにフレームレイヤービットバジェットが割り当てられる。ツリー毎の所定の数のビットの割り当てはシーケンス内の先のフレームを符号化するのに既に使用されたビット数、現在フレームの符号化の複雑度および出力バッファによって提供されるバッファの充満情報に従って行われる。ツリー内の各係数に対する量子化パラメータは、そのツリーに対するビット割り当てに基づき計算される。
符号化器への入力ビデオシーケンスは２つのタイプの一連のフレーム、すなわちイントラフレーム（Ｉフレーム）および予測フレーム（Ｐフレーム）を含むものと仮定する。更に、例えばシーケンスが....ＩＰＰＰＰＰＰ....ＰＰＰＩＰＰ....となるようにＦ個のＰフレーム毎にシーケンス内で１つのＩフレームが発生すると仮定する。
Ｉフレームから次のＩフレームに広がるフレームのグループを符号化するのに必要なビットの総数Ｇは次のとおりである。
0003739094.tif 000017
従って、１２０個のフレーム毎に１つのＩフレームが伝送され、６４ｋｂｐｓで作動し、毎秒３０フレームが伝送されるシステム内の符号化器に対しては、グループ内のすべてのフレームを符号化するのに必要なビット総数は２５６ｋビット、すなわちシーケンスに対するビットバジェットは２５６ｋビットとなる。このように少数のビットしか作用させない場合、ビットバジェットを種々のフレームに最適に割り当てるレート制御技術が望ましいものであることが明らかである。
この最適割り当てを行うためにレートコントローラ６１０はフレームレイヤービット割り当て器８０８と、ウェーブレットツリーレイヤービット割り当て器８１０と、量子化器パラメータマスク発生器８１２とを含む。フレームレイヤー割り当て器８０８はウェーブレットツリーレイヤー割り当て器８１０に接続され、これら双方の割り当て器は量子化器パラメータマスク発生器８１２に接続されている。マスク発生器は量子化器パラメータの二次元アレイを発生する。このアレイはＤＷＴ符号化器６０６により最適なビットレートが発生されるよう、量子化器の公称スケール値に変えるのに使用される。フレームレイヤービット割り当て器の作動については図９を参照して説明し、ウェーブレットツリーレイヤービット割り当て器の作動については図１０を参照して説明する。
Ａ．フレームレイヤーにおけるビットの割り当て
図９は、フレームレイヤービット割り当て器を作動させるプロセス９００のフローチャートを示す。このプロセスはステップ９０２で開始し、ステップ９０４に続く。最初のＩフレームを符号化する前に、レート制御プロセスは総ビットバジェットＧに等しい、フレームのグループを符号化するために残っているビット数を表示する変数Ｒをステップ９０４で設定する。次にこのプロセスは、次の式に従って、第１Ｉフレームに対する目標ビットレートをステップ９０６で確立する。
0003739094.tif 000018
ここで、
Ｔiは、第１のフレームに対する目標ビットレートであり、
Ｎp＝Ｆ−１は、シーケンスにおけるＰフレームの数であり、
Ｔpは、Ｐフレームに対して設定された平均ビットバジェットであり、
Ｒは、割り当てに利用できる残りビットであり、
Ｘpは、所定のＰフレームに対する複雑度の度合であり、
Ｘiは、所定のＩフレームに対する複雑度の度合であり、
Ｋiは、Ｉフレームに対する重み付け係数であり、
Ｋpは、Ｐフレームに対する重み付け係数である。
ＸpおよびＸiの値は次のように、所望するビットレートの関数として最初に設定される。
0003739094.tif 000019
その後、プロセスが繰り返される毎にＸpおよびＸiの更新された値が発生される。フレームが符号化される際に、複雑度の度合ＸpおよびＸiが更新される。この複雑度の度合を更新するのに使用される方法は、最も簡単な形態では、先のフレームに対して発生された量子化パラメータの平均値を、先の画像を符号化するのに使用したビット数で乗算することにより更新される。初期の符号化の値を設定し、この値を更新する簡単な方法については、ＩＳＯ（International Organization for standardization）、画像およびオーディオの符号化表現：テストモデル５、ＩＳＯ−ＩＥＣ／ＪＴＣ１／ＳＣ２９／ＷＧ１１、バージョン１、６１〜６４ページ、１９９３年４月、に開示されている。上記の図２〜３には、複雑度の良好な度合が開示されている。本方法には複雑度の度合を計算するいずれの方法も利用できる。
ＫpおよびＫiの値は「普遍的定数」であり、この定数は量子化スケール値ＱＴ（後述する）によって定められる。一般にＱＴは単一の値ではなく、むしろフレームにおける各ツリーに対する公称量子化スケールを設定する値のマトリックスである。重み付け関数ＫpおよびＫiに対する代表的な値は、それぞれ１.４および１.０である。
Ｉフレームに対し符号化が完了した後に、プロセスはステップ９０８でＲの値を更新する。
Ｒ＝Ｒ−Ｔi  （２４）
このプロセスは、ステップ９１０でフレームのグループ内でｎ番目のフレーム、すなわちＰフレーム、に対する目標ビットレートを下記のように設定する。
Ｔpn＝Ｒ／Ｎp  （２５）
ここで、Ｔpnはｎ番目のフレームに対する目標ビットレートである。
ステップ９１２では、プロセスは現在の（ｎ番目の）フレーム内に含まれるウェーブレットツリーの各々に対するビット割り当てを計算する。この計算は図１０のウェーブレットツリーレイヤービット割り当てプロセスを実行することによって達成される。このプロセスについては後に詳述する。
ステップ９１４ではシーケンス内のフレームのすべてが処理されたかどうか、すなわちｎ＝Ｆであるかどうかを問い合わせる。この問い合わせに対する回答が肯定的であれば、フレームのすべて、すなわち１つのＩフレームおよび（Ｆ−１）個のＰフレームが処理されており、プロセスはステップ９０４に戻り、フレームの次のグループを処理する。問い合わせに対する回答が否定的であれば、プロセスはステップ９１６に進む。
フレームを符号化する毎に式（２１）の変数はステップ９１６で次のように更新される。
Ｎp＝Ｎp−１  （２６）
Ｒ＝Ｒ−ＢNTn  （２７）
ｎ＝ｎ＋１  （２８）
ここで、ＢNTnはｎ番目のフレームを符号化するのに使用されるビットの実際の数であり、
ＮＴは、各フレームを表示するウェーブレットツリーの総数である。
このポイントではＤＷＴ符号化器によって符号化される次のフレーム（ｎ番目のフレーム）に対するビットバジェットは既に計算されている。次に、プロセスはｎ番目のフレームを含む各ツリーに対し、フレームレイヤービットバジェットを割り当てなければならない。
Ｂ．ウェーブレットツリーに対するビットの割り当て
図１０は、ウェーブレットツリーレイヤービットの割り当て器の作動を示す、ウェーブレットツリーレイヤービット割り当てプロセス１０００のフローチャートを示す。このプロセス１０００はステップ１００２においてプロセス９００から入る。上記のように、各フレームは分解された入力フレームの低−低バンドから延びた複数のウェーブレットツリーによって表示される。従って、ｎ番目のフレームに割り当てられる符号化ビットはツリーｊに割り当てられなければならない。プロセス１０００はステップ１００４にて次のようにフレーム内の各ツリーに対するバッファ充満度を計算する。
0003739094.tif 000020
ここで、
Ｒjnは、ｊ番目のツリーを符号化する前のバッファの充満度であり、
Ｒonは、初期のバッファ充満度であり、
Ｂjnは、ｊ番目のツリーまで（このｊ番目のツリーを含む）、ｎ番目のフレーム内のすべてのウェーブレットツリーを符号化することによって生じるビットの数であり、
Ｔnは、先のＩまたはＰフレームにおける目標ビットバジェット（すなわちこの値はバッファから先のフレームが抽出された際に、バッファ内で自由となるビットの近似数である）であり、
ＮＴは、現在フレームにおけるウェーブレトツリーの総数である。
バッファの充満度Ｒjnは、現在、符号化されたビットで満たされている出力バッファの量に関するインジケータである。この度合は、符号化器がバッファをアンダーフローまたはオーバーフローさせて、結果データを失わせないように補償するものである。従って、このプロセスは出力バッファの充満度に応じて変化する量子化スケールを設定する。
次に、ステップは１００６でｊ番目のウェーブレットツリーに対する量子化パラメータＱjnを次のように計算する。
0003739094.tif 000021
0003739094.tif 000022
この量子化パラメータはかかるパラメータのアレイ内に記憶され、このアレイは、後述するように、各ツリー内でウェーブレット係数を最適に量子化するのに使用できるマスクを形成する。
ステップ１００８では、プロセスは現在フレームにおけるツリーの全てが処理されたかどうか、すなわちｊ＝ＮＴであるかどうかを問い合わせる。この問い合わせに対する回答が否定的であれば、プロセスはステップ１０１０でツリーインデックスを増加し（ｊ＝ｊ＋１）、次にステップ１００４へ戻り、フレーム内の次のツリーに対するバッファの充満度を計算する。次に、プロセスはｊ＝ＮＴとなるまで、すべてのｊ個の値に対して繰り返すことにより、フレーム内のすべてのツリーが処理されるまで、このループを回る。ステップ１００８における問い合わせに対する回答が肯定的であれば、プロセスはＹＥＳパスに沿ってステップ１０１２へ進む。ステップ１０１２では、ｊ＝ＮＴの時にｎ番目のフレームに対するバッファ充満度をｎ＋１フレーム番目のフレームに対する初期バッファ充満度として使用するよう、初期バッファ充満度を更新するのに最終バッファ充満度の値を使用する。すなわち次のようになる。
Ｒon＝ＲNTn  （３２）
一旦完了すると、フレーム内のツリー毎のビットの割り当ての計算を終了し、ステップ１０１４でフレームレイヤービット割り当てプロセス９００に戻る。このポイントで、レートコントローラは現在フレームに対する量子化マスクの発生を完了している。このように、現在フレームをこれから量子化し、符号化できる。
Ｃ．適応量子化
各フレームに対する目標ビットレートを生じさせるような量子化ステップサイズ（量子化器のスケール）を設定するのに、量子化パラメータマスクを使用する。量子化ステップ（ｍ＿ｑｕａｎｔ）を次のように計算する。
ｍ_ｑｕａｎｔ＝Ｑjn*ＱＴ  （３３）
ここで、ＱＴは公称量子化スケール値でありフレームの全シーケンスに対し一定とすることができるが、この値は、フレーム毎に変わり得るが、各フレーム内で一定にしてもよいし、あるいは、各フレーム内で変化してもよい。
このように、式（３３）における値の各々をマトリックス量とすることができる。実際の量子化パラメータはビットバジェットを維持し、ウェーブレットに基づくビデオ符号化器の出力におけるビットレートをほぼ一定とすることを保証するように、公称量子化スケールの値を変更する。
以上で、符号化レートを最適にしながら、ビデオ画像の全画質を維持するよう、各マクロブロックに対し量子化器のスケールを再帰的に調整する新規な装置および方法について図示し、説明した。しかしながら、当業者が本発明の実施例を開示した本明細書および添付図面を検討すれば、本発明の多くの変形例、改変例、変更例およびその他の使用法および応用例について明らかとなろう。本発明の要旨および範囲から逸脱しないかかる変形例、改変例、変更例およびその他の用途および応用例は、次の請求の範囲のみによって限定される本発明によりカバーされるものとなる。
アペンディクスＡ
３．実験結果
これらはクラスＡおよびＢのシーケンスに対する符号化の結果である。Ｉフレームに対し、我々は量子化ステップを１０を設定し、Ｐフレームに対し、クラスＡのシーケンスで１０、２４、４８ｋｂｐｓに対し、量子化ステップ１５、１０、６をそれぞれ設定した。クラスＢのシーケンスで２４、４８、１１２ｋｂｐｓに対し、量子化ステップ１５、１０、６をそれぞれ設定した。この量子化ステップのセットを用いて、ＶＭレート制御が目標レートを達成することができない場合、目標レートに達するまで微調整を行う。Ｑ２方法は初期の量子化ステップを必要としない。
３．１．クラスＡシーケンス
0003739094.tif 000023
0003739094.tif 000024
0003739094.tif 000025
0003739094.tif 000026
３．２．クラスＢシーケンス
0003739094.tif 000027
0003739094.tif 000028
0003739094.tif 000029
0003739094.tif 000030
【図１】
0003739094.tif 000031
【図２】
0003739094.tif 000032
【図３】
0003739094.tif 000033
【図４】
0003739094.tif 000034
【図５】
0003739094.tif 000035
【図６】
0003739094.tif 000036
【図７】
0003739094.tif 000037
【図８】
0003739094.tif 000038
【図９】
0003739094.tif 000039
【図１０】
0003739094.tif 000040