(57)【特許請求の範囲】
【請求項１】
少なくとも1つのマクロブロックを有する入力動画像を符号化するための装置であって、
該入力動画像に応答を示し、少なくとも1つの動きベクトルを生成する動き推定手段と、
該動き推定手段に結合され、該入力動画像の予測された画像信号を生成する動き補償手段と、
該入力動画像から該予測された画像信号を差し引き、予測残差信号を生成する差異手段と、
該動き補償手段および該差異手段に結合され、（i）選択された量子化スケールに従って、前記選択された量子化スケールにおいて複数のコード化モード毎に、該入力動画像の各マクロブロックの動きベクトルおよび予測残差信号をコード化するために必要とされるビットの総数をそれぞれ計算し、（ii）該計算した複数のコード化モード毎のビットの総数を比較して、最小量のビットを用いて該マクロブロックをコード化するように該マクロブロックのためのコード化モードを選択するモード決定手段であって、該予測残差信号をコード化するために必要とされる該計算されたビットの総数は、該予測残差信号の分散に比例するとともに該量子化スケールの値に反比例する、モード決定手段と、
該モード決定手段に結合され、当該装置のビットレートを制御すると共に該量子化スケールを選択し、該量子化スケールを該モード決定手段へ出力するレート制御手段を備える装置。
【請求項２】
該ビットの総数は、式
Ｂt’＝Ｂmv＋（Ｋ／（ｑ＋Ｃｑ2））Ｖres
に従って計算され、ここで、Ｂt’が該ビットの総数であり、Ｂmvは該動きベクトルをコード化するために必要とされるビット数であり、ｑは量子化スケールであり、Ｖresが該予測残差信号の分散であり、ＫおよびＣが定数である、請求項1に記載の装置。
【請求項３】
該モード決定手段に結合され、該予測残差信号を一組の相関のない係数に変換するための変換手段と、
該変換手段に結合され、該一組の相関のない係数を量子化するための量子化手段と、
該変換手段に結合され、該量子化された一組の相関のない係数および該動きベクトルをコード化するためのコード化手段と、
コード化手段に結合され、チャネルにわたる伝送のためにデータ・ストリームを格納するためのバッファ手段と、を備え、
該動き補償手段は、コード化された基準画像を復号化するための復号化手段を含む、請求項1に記載の装置。
【請求項４】
入力動画像信号のマクロブロック毎にコード化モードを選択するための方法であって、
（ａ）該入力動画像信号からマクロブロック毎に動きベクトルを生成するステップと、
（ｂ）該動きベクトルを使用して、コード化モード毎に該入力動画像信号の予測画像信号を生成するステップと、
（ｃ）該入力動画像信号から該予測画像信号を差し引き、予測残差信号を作成するステップと、
（ｄ）該予測残差信号のコード化のレートを制御するステップと、
（ｅ）該制御ステップ（ｄ）によって選択された量子化スケールに従って、マクロブロック毎にコード化モードを選択するステップと、を備え、
該ステップ（ｅ）は、
（ｅ１）該複数のコード化モード毎に各マクロブロックの該動きベクトルおよび該予測残差信号をコード化するために必要とされるビットの総数を計算するステップであって、該予測残差信号をコード化するために必要とされる該計算されたビットの総数は、該予測残差信号の分散に比例するとともに該量子化スケールの値に反比例する、ステップと、
（ｅ２）該計算した複数のコード化モード毎のビットの総数を比較して、最小量のビットを用いて該マクロブロックをコード化するように該マクロブロックのためのコード化モードを選択するステップと、を含む方法。
【請求項５】
ステップ（ｅ１）における該ビットの総数は、式
Ｂt’＝Ｂmv＋（Ｋ／（ｑ＋Ｃｑ2））Ｖres
に従って計算され、ここで、Ｂt’が該ビットの総数であり、Ｂmvが該動きベクトルをコード化するために必要とされるビット数であり、ｑが量子化スケールであり、Ｖresが該予測残差信号の分散であり、ＫおよびＣが定数である、請求項4の方法。
【請求項６】
（ｆ）該予測残差信号を一組の相関のない係数に変換するステップと、
（ｇ）該一組の相関のない係数を量子化するステップと、
（ｈ）該量子化された一組の相関のない係数および該動きベクトルをコード化するステップと、
（ｉ）チャネルにわたる伝送のためにデータ・ストリームを格納するステップと、
（ｊ）更に符号化するためにコード化された基準画像信号を復号化するステップと、を備える請求項4に記載の方法。
【発明の詳細な説明】
本発明は、動きのある画像（motion video）のコード化（coding）を最適化するための装置（apparatus）および付随した方法に関する。さらに特定すると、本発明は、マクロブロックのために選択された量子化スケールに基づいて、マクロブロック・コード化モードを選択する装置および方法に関する。
デジタル画像技術の開発の進展は、画像圧縮コーディングの高い費用を削減し、また異なる製造業者の設備の相互運用性（インタオペラビリティ）の問題を解決するというつねに大きくなり続ける問題を提示する。これらの目標を達成するために、メディア統合系動画像圧縮の国際標準（Moving Picture Experts Group、ＭＰＥＧ）が、（一般的にはＭＰＥＧ−１と呼ばれている）ＩＳＯ／ＩＥＣ国際規格１３８１８−１（１９９４年）および（一般的にはＭＰＥＧ−２と呼ばれている）１３８１８−２（１９９５年１月２０日草案）を作成していて、これらは参照することによって全体としてここに組込まれる。これらの規格の１つの目標は、デスクトップ・ビデオ・パブリッシング、ビデオ会議、デジタル記憶媒体、およびテレビ放送といった複数の異なった用途およびサービスを処理するために、十分な柔軟性を持つ標準的なコード化／復号化戦略を確立することである。
ＭＰＥＧ規格は、ＭＰＥＧに準拠したビットストリーム（）を生成するための一般的な汎用コード化方法およびシンタックスを指定しているが、多くのバリエションがパラメータの多くに対して指定された値において許されており、それにより広範囲にわたって応用および相互運用性を維持している（support）。実際、ＭＰＥＧは正当な（valid）ビット・ストリームを作成するために必要とされる特定のアルゴリズムを定義していない。さらに、ＭＰＥＧエンコーダの設計者は、画像前処理、動き推定、コード化モード決定、分解能可変性（スケーラビリティ、scalability）、およびレート（rate）制御といった領域において独自のＭＰＥＧ固有の（MPEG-specific）アルゴリズムを開発し、また実現する際に大きな柔軟性を授けられている。この柔軟性は、異なるＭＰＥＧ固有のアルゴリズムの開発および実現を助長し、それにより市場において製品の区別化に帰着する。しかしながら、ＭＰＥＧエンコーダ設計者の１つの共通した目標とは、規定されたビット・レートおよび動作遅延の制約に対して本来的な（subjective）歪み（distortion）を最小限に抑えることである。
コード化モード決定の領域では、ＭＰＥＧは、複数の異なるマクロブロックコード化モードを提供する。一般的には、これらのコード化モードは、２つの幅広い分類、インター・モード・コード化（インター・モード・コーディング）とイントラ・モード・コード化（イントラ・モード・コーディング）とにグループ化される。イントラ・モード・コード化は、そのマクロブロックまたはピクチャからのみの情報を使用する、マクロブロックまたはピクチャのコード化を伴う。反対に、インター・モード・コード化は、それ自体および異なる時間に起こるマクロブロックおよびピクチャの両方からの情報を使用する、マクロブロックまたはピクチャのコード化を伴う。具体的には、ＭＰＥＧ−２は、イントラ・モード、動き補償なしモード（no motion compensation、Ｎｏ ＭＣ）、順方向／逆方向／平均インター・モード、およびフィールド／フレームＤＣＴモードを含むマクロブロック・コード化モードを提供する。各コード化モードの詳細な説明については、ＭＰＥＧ−１とＭＰＥＧ−２用のＩＳＯ／ＩＥＣ国際規格を参照する。
これらのコード化モードは、マクロブロックをコード化するために必要なビット数において異なる効率を生み出す異なるコード化戦略（予測、prediction）を提供する。このため、各モードは、量子化スケールの粗さ（coarseness）、ピクチャ・タイプ、およびマクロブロック内での信号の性質といったある数の異なった因子に応じて、別のモードよりさらに効率的である。最適なコード化性能を達成するためには、各別個モードに対して特定のマクロブロックをコード化するために必要なビット数を計算し、また比較することによって、もっとも効率的なコード化モードを選択することが必要である。もっとも効率的なコード化モードは、マクロブロックを最も少ないビット量でコード化すべきである。しかしながら、最適解の決定は、運動ベクトルのＭＰＥＧ差分符号化および離散コサイン変換（ＤＣＴ）係数によりさらに複雑化されて、その決定は、スライス長に等しい期間、マクロブロックからマクロブロックへ持ち越される依存状態を導入する。スライスとは、ラスタ・スキャン順序で同じ水平の行に置かれるマクロブロックのシーケンスである。このような依存状態のため、「全検索」計算は、ここでは各個別マクロブロックを異なるモードでコード化できるスライスをコード化する（code）際に異なるモードの様々な組み合わせの効率を比較しなければならない。
例証すると、スライスが１０の長さのマクロブロックを有して、５つの異なったコード化モードがあると、各スライスに対して５10の利用可能なコード化組み合わせがある。全検索のための計算は、モードの数に基づいてスライス・サイズに指数関数的に比例している。このようにして、依存状態は、指数関数的に大きくなる関数に帰着し、それにより前記計算の複雑度を何倍にも増加させる。実際、上記の計算に関連した時間遅延は、多くのＭＰＥＧアプリケーションに対して容認しがたい。したがって、長い時間遅延および耐え難い計算オーバヘッドのため、全検索計算の結果に基づいてコード化モードを選択することは実用的ではない。
現在のＭＰＥＧコーディング戦略（例えば、テストモジュール４およびテストモジュール５（ＴＭ４とＴＭ５））では、各マクロブロックのためのコード化モードは、予測残差（エラー信号）のエネルギを比較することにより選択される。すなわち、イントラ／インター・モードの決定は、各コード化モードの予測残差の分散に対して、マクロブロック・ピクセルの分散（σ2）を比較することによって下される。しかしながら、この規準で選択されたコード化モードは、高い分散が必ずしもマクロブロックのコード化に必要なビット数の増加に転換しないので、最適コード化性能を達成しない場合がある。したがって、このような分散だけに基づいたコーディング戦略は、必ずしも最終的な圧縮ビット・カウントを削減しない場合がある。
したがって、技術分野において、最適解に近づき、また実用的な実現を促進するために比較的に簡略であるコード化モードを選択するための装置および方法に対する必要性が存在する。
本発明は、マクロブロックのために選択された量子化スケールに基づいて、マクロブロック・コード化モードを選択するための装置および方法である。ある特定のコード化モードの効率は、歪み（つまり、ある特定の量子化スケール）に対する動作点（operating point）によって影響される。例えば、マクロブロックを符号化する際に低い歪みを作り出すコード化モードが、実際には、マクロブロックを符号化する際に高い歪みが許容可能である場合に、不十分に機能する場合がある。このため、本発明は、マクロブロックのために選択される量子化スケールに従った適切なコード化モードを選択する。
具体的には、各マクロブロックをコード化するために必要とされるビットの総数は、運動ベクトルをコード化するために必要とされるビット、および予測残差をコード化するためのビットという、２つの部分から成る。動きベクトルをコード化するためのビット数は、一般には、ルックアップ・テーブルから獲得される。予測残差を符号化するためのビット数は、その分散の値に正比例し、また量子化器ステップ（量子化スケール）の値に反比例する、と仮定する推定によって獲得される。この推定を使用すると、マクロブロックをコード化するために必要なビット総数が計算され、そして各コード化モードについて比較される。もっとも少ないビット数を持つコード化モードを選択することによって、本発明は、実用的な実現のための低い複雑度のほぼ最適な解を達成する。
本発明の教示は、添付図面といっしょに、引き続く詳説な記述を考慮することにより容易に理解できる。
図１は、レート制御と共にモード選択を共同して（jointly）決定するための本発明のシステムのブロック図である。
図２は、マクロブロックのための最適モードの決定を導き出すためのフローチャートである。
図３は、予測残差信号をコード化するためのブロック図である。
理解を容易にするために、可能な場合には、図に共通している同一要素を示すために、同一の参照番号が使用された。
図１は、レート制御と連携してマクロブロックに対するコード化モードを決定するための本発明の装置１００のブロック図を示す。好ましい実施の形態では、装置１００は、エンコーダ、またはよりブロック・ベースの複雑な動き補償コード化システムの一部分である。装置１００は、動き推定モジュール１４０、動き補償モジュール１５０、モード決定モジュール１２０、レート制御モジュール１３０、ＤＣＴモジュール１６０、量子化モジュール１７０、可変長コード化モジュール１８０、バッファ（buffer）１９０、逆量子化モジュール１７５、逆ＤＣＴモジュール１６５、減算器１１５、および総和器（summer）１５５を備える。エンコーダ１００は複数のモジュールを備えているが、当業者は、様々なモジュールによって実行される機能が、図１に示されるように別々のモジュール内に隔離される必要がないことを理解するだろう。例えば、動き補償モジュール１５０、逆量子化モジュール１７５、および逆ＤＣＴモジュール１６５を含むモジュールの組が、一般には、「埋込デコーダ（embedded decorder）」として知られている。
図１は、ＭＰＥＧ規格に従って輝度および２つの色差信号（Ｙ、Ｃr、Ｃb）として表され、またデジタル化される入力動画像（画像シーケンス、画像列）１１０を図示する。これらの信号は、各ピクチャ（フレーム）が複数のマクロブロックによって表されるように、さらに複数の層に分割されている。各マクロブロックは、４個の輝度ブロック、１個のＣrブロック、および１個のＣbブロックを含み、ブロックは８×８のサンプル・アレイとして定義される。ピクチャのブロック・ユニットへ分割すると、２つの連続するピクチャ間の変更を認識する能力が向上し、また（以下に説明される）低振幅の変換係数の排除によって画像圧縮が改善される。デジタル化された信号は、オプションで、適切なウィンドウ、解像度、および入力フォーマットを選択するためのフォーマット変換といった前処理を経る場合がある。
入力動画像（input video image）１１０は、動きベクトルを推定するための動き推定モジュール１４０内に受け取られる。動きベクトルは、現在のピクチャ内のブロックの座標位置から基準フレームの座標へのオフセットを提供するために動き補償により使用される二次元ベクトルである。画像シーケンスの連続（consecutive）フレーム間に存在する高い冗長性のため、現在のフレームは、運動情報（動きベクトル）を使用することによって、以前の基準フレームと、現在のフレームおよび以前のフレームの間の差異とから再構築されることができる。動きベクトルを使用すると、チャネル上に伝送される情報量を削減することによって、画像圧縮が大幅に高まる。なぜなら、現在のフレーム内での変更だけがコード化され、伝送されるからである。現在では、動き推定を実現するために、様々な方法がエンコーダ設計者に利用可能となる。
動き推定モジュール１４０からの動きベクトルは、サンプル値の予測の効率を改善するために、動き補償モジュール１５０によって受け取られる。動き補償は、予測エラーを形成するために使用され以前の復号化サンプル値を含む過去若しくは将来の基準フレーム、またはその両方の基準フレームにオフセットを提供するために動きベクトルを使用する予測を伴う。すなわち、動き補償モジュール１５０は、以前に復号化されたフレームおよび動きベクトルを使用し、現在のフレームの推定を構築する。
さらに、与えられたマクロブロックに対して動き補償予測を実行するに先立って、コード化モードが選択されなければならない。前述したように、複数のコード化モードが使用可能であり、またコード化モードをマクロブロックごとに適切に選択すると、最適なコード化性能を生み出す。各コード化モードに対する予測は、動き補償モジュール１５０によって実行される。このため、コード化モードに応じて、動き補償モジュールは、過去若しくは将来の参照ピクチャ、または両方の参照ピクチャに基づいてブロックの内容の動き補償された予測（予測された画像）１５２を形成する。この動き補償された予測１５２は、現在のマクロブロック内の入力ビデオ画像１１０から減算器１１５を介して差し引かれ、エラー信号（ｅ）または予測残差を形成する。各マクロブロックのための全コード化モードの予測残差は、推定のためのモード決定モジュール１２０に転送される。
モード決定モジュール１２０は、レート制御と共に各マクロブロックのためのコード化モジュールの選択を共同して決定するために予測残差を使用する。ただ、最小の分散を生じさせるマクロブロックのためのコード化モードを単に選択するＴＭ４およびＴＭ５と異なって、モード決定モジュール１２０は、ある特定のコード化モードの効率に関する特定の量子化スケールの影響を考慮する方法を適用する。モード決定モジュール１２０は、各コード化モードに対して各マクロブロックをコード化するために必要とされるビットの総数を推定する。推定は、予測残差を符号化するためのビット数がその分散の値に正比例し、また量子化器ステップ（量子化スケール）の値に反比例するという仮定を用いて、予測残差をコード化するためのビット数を得る。この簡略化されたアプローチの下に、ほぼ最適な解が全検索の複雑さのほんの一部で得られる。この推定の詳細な記述は、図２を参照して以下に議論される。
マクロブロックのためのコード化モードを選択して、モード決定モジュール１２０は、選択されたコード化モードからの対応する予測残差信号をＤＣＴモジュール１６０に渡す。それから、ＤＣＴモジュールは、予測残差信号の各ブロックに順方向離散コサイン変換プロセスを適用し、ＤＣＴ係数の一組の８×８ブロックを作り出す。離散コサイン変換は、ＤＣＴ係数が一組のコサイン基底関数の振幅を表す可逆離散直交変換である。離散コサイン変換の１つの有利な点は、ＤＣＴ係数が非相関である（uncorrelated）ということである。ＤＣＴ係数のこの相関のないこと（decorrelation、相関が除去されていること）は、圧縮にとって重要である。なぜなら、各係数は、圧縮効率を失うことなく独立して処理されていることができるからである。さらに、ＤＣＴ基底関数またはサブバンド分解（decomposition）は、量子化の次のステップに重要である心理視覚の規準の効果的な使用する機会を与える（permit）。
結果として生じるＤＣＴ係数の８×８のブロックは、ＤＣＴ係数が量子化される量子化モジュール１７０によって受け取られる。量子化のプロセスは、一組の量子化値でＤＣＴ係数を除算し、整数値を生成するために適切に丸めることによってＤＣＴ係数が表現される精度を縮小する。量子化値は、（視覚的に重み付けされた量子化として知られている）基底関数の可視性に基づいた規準を使用して、各ＤＣＴ係数にに対して個別に設定されることができる。すなわち、量子化値は、与えられた基底関数の可視性のしきい値、つまり、人間の目によってちょうど検出可能な係数の振幅に一致する。ＤＣＴ係数をこの値を用いて量子化することによって、ＤＣＴ係数の多くはゼロに変換されて、それによって画像圧縮効率を改良する。量子化のプロセスは、鍵となる演算であり、また視覚的な品質を達成するために、そしてエンコーダの出力を所与のビットレートに一致させるためにエンコーダを制御する（レート制御）ための重要なツールである。異なる量子化値を各ＤＣＴ係数に適用きるので、一般には、「量子化マトリックス」が、基準テーブル、例えば輝度量子化テーブルまたは色差（chrominance）量子化テーブル、として確立される。このため、エンコーダは、変換されたブロック内の各周波数係数がどのように量子化されるのかを決定する量子化マトリックスを選択する。
しかしながら、量子化エラーの自覚的な知覚結果（subjective perception）は、周波数と共に大きく変化し、そしてより高い周波数のためにより粗い量子化値を使用することが有利である。すなわち、量子化エラーに対する人間の知覚感度は、より高い空間周波数に対してより低くなる。その結果とし、高い周波数は、低い周波数より少ない許容値を用いてもっと粗く量子化される。さらに、正確な量子化マトリックスは、意図された表示の特性、観察距離（viewing distance）、およびソースにおける雑音の量といった多くの外部パラメータに依存している。このため、アプリケーションのために、またはフレームの個々のシーケンスのためにさえ、ある特定の量子化マトリックスを仕立てることが可能である。一般的には、カスタマイズ化された量子化マトリックスは、圧縮された動画とともにコンテキストとして格納されることができる。再び、現在では、多くの方法が、量子化プロセスを実現するために、エンコーダ設計者に対して利用可能である。
次に、結果として生じる量子化されたＤＣＴ係数の８×８ブロックは、信号接続１７１を介して可変長コード化モジュール１８０によって受け取られて、この場合、量子化された係数の二次元ブロックが、そのブロックを量子化されたＤＣＴ係数の一次元文字列に変換するために「ジグザグ」順序で、走査される（scan）。ジグザグ・スキャン（zig-zag scanning）順序は、最低の空間周波数から最高の空間周波数までのＤＣＴ係数の近似的な順次的な順序である。量子化は、通常、高い空間周波数をゼロに縮小するので、量子化されたＤＣＴ係数の一次元文字列は、典型的にはゼロの文字列が後に続くいくつかの整数によって表現される。
それから、可変長コード化（ＶＬＣ）モジュール１８０が、量子化されたＤＣＴ係数の文字列、並びにマクロブロック・タイプおよび動きベクトルといったマクロブロックの全ての副次的な情報を符号化する。ＶＬＣモジュール１８０は、コード化効率を効率よく改善するために、可変長コード化（可変長コーディング）およびラン・レングス・コード化（run-length coding、ラン・レングス・コーディング）を利用する。可変長コード化は、頻繁なイベントにはより短いコード・ワードが割り当てられ、またあまり頻繁ではないイベントにはより長いコード・ワードが割り当てられる可逆コード化プロセスであるが、ラン・レングス・コード化は、単独記号を持つ一続き（run）のシンボルを符号化することによりコード化効率を上げる。これらのコーディング機構は、技術分野において周知であり、整数長コード・ワードが使用されるとき、しばしばハフマン・コード化として参照される。このため、ＶＬＣモジュール１８０は、入力画像を正当なデータ・ストリームに変換するという最終ステップを実行する。
データ・ストリームは、「先入れ先出し」（ＦＩＦＯ）バッファ１９０内に受け取られる。異なるピクチャ・タイプおよび可変長コード化を使用する結果は、総体的なビットレートが可変であるということである。すなわち、各フレームをコード化するために使用されるビット数は異なり得る。このため、固定レートのチャネルを伴う用途では、ＦＩＦＯバッファが使用され、ビットレートを平滑化するためにエンコーダ出力をチャネルに一致させる。このようにして、ＦＩＦＯバッファ１９０の出力信号は、入力ビデオ像（input video image）１１０の圧縮された表現であって、それは記憶媒体または遠隔通信チャネルに送られる。
レート制御モジュール１３０は、データ・ストリームの伝送後に（図示されていない受信機またはターゲット記憶デバイス内の）デコーダ側におけるオーバフローおよびアンダフローを防止するために、ＦＩＦＯバッファ１９０に入るデータ・ストリームのビットレートを監視し、また調整するために役立つ。固定レートチャネルは、（図示されていない）デコーダ内の入力バッファに一定レートでビットを搬送することを想定している。ピクチャ・レートによって決定される規則正しい間隔で、デコーダは、その入力バッファから次のピクチャのための全ビットを瞬間的に削除する。少なすぎるビットが入力バッファ内にある場合、すなわち次のピクチャのための全ビットが受け取られてはいないかった場合、入力バッファがアンダフローし、エラーに帰着する。同様に、多すぎるビットが入力バッファ内にある場合、すなわち入力バッファの容量がピクチャの始め部分の間において限界を越えている場合、入力バッファはオーバフローし、オーバフロー・エラーに帰着する。このため、エンコーダによって作成されるビットの数を制御して、それによってオーバフロー状態およびアンダフロー状態を防止するために、バッファ１９０のステータスをモニタすることが、レート制御モジュール１３０のタスクである。レート制御アルゴリズムは、画像品質および圧縮効率に影響を与えることにおいて重要な役割を果たす。
現在、ビットレートを制御する１つの方法は、量子化プロセスを改変する（alter）ことであり、これは入力画像の歪みに影響を及ぼす。量子化器スケール（ステップ・サイズ）を改変することによって、ビットレートが、変更され、そして制御されることができる。例示すれば、バッファがオーバフローに向かっている場合、量子化スケールが増加されるべきである。この動作は、量子化プロセスが追加のＤＣＴ係数をゼロに削減することを引き起こして、それによりマクロブロックをコード化するために必要なビット数を削減する。これは、実際には、ビットレートを削減して、潜在的なオーバフロー状態が解決されるはずである。
反対に、バッファがアンダフローに向かっている場合、量子化スケールは減少されるべきである。この動作は、量子化された非ゼロのＤＣＴ係数の数が増加させることを引き起こして、それによってマクロブロックをコード化するために必要なビットの数が増加する。このため、増加されたビットレートが、潜在的なアンダフロー条件を解決するはずである。
量子化スケールは、図１に説明されるようにコード化モードの適切な選択を決定するために使用される。このため、レート制御モジュール１３０は量子化スケールを改変しオーバフロー状態またはアンダフロー状態を訂正するため、モード決定モジュール１２０は、マクロブロックのために現在の量子化スケールの下で最適なコード化モードを選択することによって応答する。コード化モードの選択が量子化スケールによって影響を受ける方法は、以下の図２に参照して議論される。
さらに、量子化モジュール１７０からの結果として生じる量子化されたＤＣＴ係数の８×８ブロックが、信号接続１７２を介して逆量子化モジュール１７５によって受け取られる。この段階において、エンコーダは、データを復号化することによって入力ビデオ画像のＩ−フレームとＰ−フレームを、それらが以降の符号化の基準フレームとして使用されるために再生成する。逆量子化モジュール１７５は、量子化されたＤＣＴ係数を量子化を解除すること（dequantizing、逆量子化すること）によって、復号化プロセスを開始する。すなわち、量子化されたＤＣＴ係数は、一組の量子化値によって乗算され、整数値を作り出すために適切に丸められる。
結果として生じるＤＣＴ係数の量子化解除された（dequantized、逆量子化された）８×８ブロックは、逆ＤＣＴが各マクロブロックに適用され復号化されたエラー信号を作り出す逆ＤＣＴモジュール１６５に回される（pass）。このエラー信号は、加算器１５５を介して動き補償モジュールから予測信号に加算されて戻し、復号化された基準ピクチャを作り出す。一般には、Ｉ−フレームまたはＰ−フレームが復号化される場合、それは格納され、もっとも古い格納された基準を置き換える。このようにして、マクロブロックのために選択される量子化スケールに基づいてマクロブロック・コード化モードを選択する装置１００が、開示される。
制約された最適化の問題が、コード化モードの選択に定式化された。解決策は、コード化されているピクチャを構成する全マクロブロックのレート−歪み特性、またはＲ（Ｄ）曲線に基づいている。最適化された結果に基づいて、各マクロブロックに対してコード化モードを選択するための方法が提示される。
量子化スケールに従ったコード化モード選択の最適化に基づいたコード化性能における「上界（upper bound）」が、初期に得られる。上界は、一組の制約に対してほぼ最適な（near-optimal）解を表す。一旦、上界が計算されると、実際的な最適次善の（sub-optimal）方法の性能を査定するために使用される。
準最適な（near-optimum）解のための第１の制約は、以下の通りであり、
0004532607.tif 000002
これは、ピクチャに対する歪み、ＤPICTが、ピクチャ内のマクロブロックの数である全てのＮＭＢに対する個々のマクロブロック歪みＤMBの蓄積として測定されることを述べている。この目的関数は、個々のマクロブロック歪みＤiをピクチャにわたって同じにすることのよって、
Ｄ1＝Ｄ2＝  ．．．  ＝ＤNMB    （２）
そして、各マクロブロックをコード化することから生成されたビットＲMBiを、ピクチャ全体のターゲット・ビット割当て（ピクチャ・ビット・バジェット）ＲPICTに合計させることによって、最小化される。
0004532607.tif 000003
マクロブロック歪みの尺度ＤMBのための選択物（choice）は、マクロブロック内のピクセルにわたって平均平方和（mean-square-sum、ＭＳＥ）計算されることができ、マクロブロックをコード化する際に使用される量子化器スケールであり、または、その選択物は、本来的な（subjective）歪みをより正確に反映する尺度、例えば輝度および周波数で重み付けされたＭＳＥまたは空間的な活性度（spatial-activity）で重み付けされた量子化器スケール、であり得る。この最適化問題の解決策は、目的関数および個々のマクロブロックＲ（Ｄ）関数が単調であるという事実のために一意である。
上記のように、動きベクトルおよびＤＣＴ係数のＭＰＥＧ差分符号化による、最適解（全検索）の計算において膨大な計算のオーバヘッドがあり、これは、スライス長により指定される期間中に、マクロブロックからマクロブロックへ伝搬する依存性を持ち込む。全検索プロセスを回避するために、上界の計算は、依存性の問題を委ねる（address）ために「グリーディ（greedy、貪欲な）アルゴリズム」を採用する。グリーディ・アルゴリズムは、以前にコード化されたマクロブロックのために選択された最良のコード化モードに基づいてコード化モードを選択することによって、計算上のオーバヘッドを削減する。実際には、グリーディ・アルゴリズム・プロセスは、全検索プロセスでのようにスライスの全長に関して依存性を考える代わりに、以前にコード化されたマクロブロックにのみに依存性を制限する。したがって、上界は、大局的な最適解である代わりに、準最適な解である。
最適なコード化モードを得るために、同じ量子化スケールを用いて各コード化モードに対して各マクロブロックをコード化するために必要とされるビットの総数の計算および比較が実施される。各マクロブロックのビットの総数、Ｂtは、動きベクトルＢmvをコード化するために必要とされるビット、および予測残差Ｂresをコード化するために必要とされるビットという２つの部分から成る。Ｂresは、マクロブロック・タイプ、量子化器スケール、コード化されたブロック・パターン、およびＤＣＴ係数のビットといった副次的な情報（side information）をコード化するためのビットを含むことに注意すべきである。しかしながら、ＤＣＴ係数をコード化するために必要とされるビットは、一般にはＢresの大多数を含み、Ｂresの支配的な部分であると考えられる。このため、各マクロブロックをコード化するために必要とされるビットの総数は、
Ｂt＝Ｂmv＋Ｂres    （４）
によって表される。
動きベクトルＢmvをコード化するために必要とされるビット数は、典型的には、ルックアップ・テーブル（look-up table）から得られる。対照的に、予測残差Ｂresをコード化するために必要とされるビットの数Ｂresを得るためには、３つのステップ・プロセス２００が、図２に描かれるように必要とされる。
図２は、ＤＣＴ変換２１０、量子化２２０、およびラン・レングス（run length）・コーディング／可変長コーディング２３０のステップを含むプロセス２００を図示する。ステップ２１０では、ＤＣＴが、予測残差の８×８ピクセル入力ブロックに適用され、ＤＣＴ係数のブロックを作り出す。ＤＣＴ係数はステップ２２０において量子化され、量子化されたＤＣＴ係数の８×８ブロックを作り出す。最後に、ステップ２３０においては、量子化されたＤＣＴ係数が（ラン、レベル）対に変換される。すなわち、Ｂresは、ゼロが「連続する長さ（run length、ラン・レングス）」および量子化されたＤＣＴ係数の「レベル」に従って検索表（look-up table）を介して獲得される。ゼロの連続する長さは、量子化されたＤＣＴ係数の８×８ブロックのジグザグ・スキャニングにおいて継続する量子化された非ゼロのＤＣＴ係数の間にあるゼロの数を表すと同時に、レベルは量子化されたＤＣＴ係数の振幅を表す。ルックアップ・テーブルを使用することは、ラン・レングス・コーディング／可変長コーディングにおいては従来の実務である。このため、Ｂresは、ランおよびレベルの値の対に依存し、
Ｂres＝ｆ（ｒｕｎ，ｌｅｖｅｌ）    （５）
により表される。
要約すると、コード化性能についての上界を得るためには、全てのコード化モードに対して図２の３つのステップ・プロセスが各マクロブロックに対して実行されなければならない。次いで、もっとも少ない数のビットを使用するコード化モードが、最適なコード化モードとして選択される。上界方法の計算のオーバヘッドは中位であるが、それは全検索方法を越えるかなりの改善である。
図３は、ビット数Ｂresの近似を提供することによって、上界のさらに複雑な（involved）コード化手順をさらに簡略化する好ましい実施の形態を描いている。方法３００では、式（５）におけるランおよびレベルの対が、各マクロブロックのための残差Ｖresの分散および量子化器スケールｑの値に強く依存していると推定している。このため、マクロブロックを符号化するために必要とされるビット数は、その分散の値に正比例の相関、および量子化器スケールの値に反比例の相関を示すべきである。したがって、式（５）は、
0004532607.tif 000004
によって近似されて、ここでＫおよびＣは定数である。このため、式（４）は、
Ｂt’＝Ｂmv＋（Ｋ／（ｑ＋Ｃｑ2））Ｖres    （７）
によって近似され、ここで値Ｂt’は、各マクロブロックのために最適なコード化モードを選択するための基準として使用される。好ましい実施の形態においては、定数ＫおよびＣのための値は、それぞれ１および１２０である。他の定数値を利用できることに注意すべきである。
図３を参照すると、プロセス３００は、ステップ３１０において、マクロブロック上の動き補償を実行し、ある特定のコード化モードのための予測残差および対応する動きベクトルを作り出す。動きベクトルはステップ３２０に渡され、予測残差はステップ３３０に渡される。
ステップ３２０では、プロセス３００は、動きベクトル・ビット・カウントＢmvを決定する。好ましい実施の形態では、事前に定義されたルックアップ・テーブルが、各動きベクトルをコード化するために必要とされるビット数を確認するために提供される。
ステップ３３０では、プロセス３００は、予測残差Ｂresをコード化するために必要とされるビット数を計算する。式（６）に従って使用される残差分散の計算が実行され、予測残差ビット・カウントＢresを作り出す。
ステップ３４０では、プロセス３００は、動きベクトル・ビット・カウントＢmvおよび予測残差ビット・カウントＢresの総和を実行し、現在のコード化モードの下におけるマクロブロックの総ビット・カウントＢtを求める。結果は、ステップ３５０に渡される。
ステップ３５０では、プロセス３００は、現在のコード化モードに対して計算されたＢtが全てのコード化モード中で最も小さいかを決定する。決定が肯定的に回答されると、プロセス３００は、マクロブロックのためにそのコード化モードを選択し、ステップ３６０において次のマクロブロックのためにコード化モードを選択するために先に進む。決定が否定的に回答されると、プロセス３００は、ステップ３１０に進み、別のコード化モードを使用して、最も小さいＢtを持つコード化モードが選択されるまで、同じマクロブロックのために計算を再度開始する。
装置は試験され、ある数のシミュレーションを実行した。シミュレーションにおいては、３つのモード決定方法が比較された。第１のモード決定方法（例えば、ＴＭ４またはＴＭ５）は、動きベクトル・オーバヘッドに対する固定されたしきい値を加えたもっとも少ないの予測エラー・エネルギーを持つコード化モードを選択することに基づいており、ここでは、レート制御は独立に決定される（つまり、レート制御は、コード化モード決定の一部分ではなかった）。第２のモード決定方法（例えば、上界方法）は、マクロブロックをコード化するために必要とされる最小ビット数を持つコード化モードを選択することに基づいている。この第２の方法では、コード化モードの選択は、選択された量子化スケールに基づいて最適化され、またグリーディ・アルゴリズムが動きベクトルおよびＤＣＴ係数の差分符号化に適用された。最後に、第３の方法は、コード化モードの決定が、動きベクトル用のビット数を加えた予測残差をコード化するために必要とされるビット数の近似に基づく、本発明の好ましい実施の形態である。近似は、式（６）に表されるように、量子化スケールの値および残差の分散の値に基づいている。
これらの３つの方法のコード化性能を判断する際に、画像のシーケンスの再構築された同じ品質を得るために必要とされるビットの総数の比較が成された。シミュレーションでは、各マクロブロックに対する量子化スケールが、再構築された品質の基準として使用された。ＴＭエンコーダが、シーケンスをコード化するために最初に使用され、また対応するマクロブロックのための結果として生じる量子化器スケールが保存された。これらの同じ量子化器スケールは、上界エンコーダおよび本発明のエンコーダにおいて使用された。２つのシーケンス「花壇」と「自転車」（各々は１５０フレームから成る）が、コンピュータ・シミュレーションにおいて使用され、結果はそれぞれ以下の表１および表２に示されている。
結果は、モード選択およびレート制御の合同した最適化が、花壇のシーケンスについては従来のＴＭ方法から１４％の節約を、自転車のシーケンスについては２４％の節約を生み出すことを実証している。同様に、本発明の好ましい実施例は、ＴＭ方法を越えて、花壇のシーケンスについて９％を超える節約、および自転車のシーケンスについて１７％の節約を得た。好ましい方法はより小さい総ビット・カウントの節約をもたらしたが、削減された計算上のオーバヘッドおよび複雑度という観点において、１０％から１７％の間の節約がきわめて重要である。
このようにして、マクロブロックのために選択された量子化スケールに基づいてマクロブロック・コード化モードを選択する新規の装置および方法が示され、記述されてきた。しかしながら、主発明の多くの変更、改良、変形、並びにその他の使用および応用は、実施例を開示する本明細書および添付図面を考慮した後に当業者に明らかになるだろう。本発明の精神および範囲から逸脱しないこのようなすべての変更、改良、変形並びにその他の使用および用途は、本発明が及ぶことになると考えられ、本発明は引き続く請求項によってのみ制限されるべきであるる。例えば、Ｂmvはルックアップ・テーブルから得られる場合がある。また、ビットの総数は、公式
Ｂt＝Ｂmv＋Ｂres
に従って計算される場合がある。この場合、Ｂtはビット総数であり、Ｂmvは動きベクトルをコード化するために必要とされるビット数であり、Ｂresは予測残差信号をコード化するために必要とされるビット数であり、Ｂmvはルックアップ・テーブルから獲得され、ＢresはＤＣＴ変換、量子化、およびラン・レングス・コード化を予測残差信号に適用することにより獲得される。
【図１】
0004532607.tif 000005
【図２】
0004532607.tif 000006
【図３】
0004532607.tif 000007
【図４】
0004532607.tif 000008