(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化する符号化装置において、
GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合に、上記GOP内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、そのGOPの先頭ピクチャから上記第２のビットレートで各ピクチャを符号化した際の軌跡になるように、上記未符号化ピクチャのビット量を補正し、上記補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御手段と、
上記制御手段によって演算された目標ビット量に従って、上記符号化対象ピクチャを符号化する符号化手段と
を備えることを特徴とする符号化装置。
【請求項２】
上記制御手段は、上記指定ビットレートが上記第１のビットレートから上記第２のビットレートに変更されたとき、上記第１のビットレートと上記第２のビットレートとの差分に基づいて上記未符号化ピクチャのビット量を補正する
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
上記制御手段は、補正された上記未符号化ピクチャのビット量を、これから符号化しようとする１つの符号化対象ピクチャのピクチャタイプに応じて分配することにより、その符号化対象ピクチャの目標ビット量を演算する
ことを特徴とする請求項２に記載の符号化装置。
【請求項４】
上記制御手段は、上記第１のビットレートにおける１ピクチャあたりのビット量と上記第２のビットレートにおける１ピクチャあたりのビット量との差分に、未符号化ピクチャの枚数を乗算した値で上記未符号化ピクチャのビット量を補正する
ことを特徴とする請求項３に記載の符号化装置。
【請求項５】
上記符号化対象ピクチャの目標ビット量を演算するアルゴリズムは、
上記符号化手段による各ピクチャの符号化処理の結果発生した発生ビット量に基づいて、画面の複雑さを示す各ピクチャのグロバールコンプレクシティを演算し、このグローバルコンプレクシティと上記未符号化ピクチャのビット量とに基づいて上記符号化対象ピクチャの目標ビット量を演算するフィードバック型の演算アルゴリズムである
ことを特徴とする請求項４に記載の符号化装置。
【請求項６】
上記制御手段は、上記符号化対象ピクチャとそれ以降の未符号化ピクチャのビット量を、上記符号化対象ピクチャの直前のピクチャとそれ以降の未符号化ピクチャに割り当てられたビット量から上記直前のピクチャの符号化処理による発生ビット量を減算することによって求め、上記直前のピクチャまでを上記第１のビットレートで符号化し、上記符号化対象ピクチャから上記第２のビットレートで符号化する場合、求められた未符号化ピクチャのビット量をさらに補正する
ことを特徴とする請求項４に記載の符号化装置。
【請求項７】
上記制御手段は、上記符号化対象ピクチャの直前のピクチャまでを上記第１のビットレートで符号化し、上記符号化対象ピクチャから上記第２のビットレートで符号化した後、上記符号化対象ピクチャのGOPの次のGOPの先頭ピクチャを符号化する場合には、上記次のGOPの未符号化ピクチャに対して割り当てられるビット量を、上記符号化対象ピクチャとそれ以降の未符号化ピクチャに割り当てられたビット量に応じて生成された補正値で補正する
ことを特徴とする請求項６に記載の符号化装置。
【請求項８】
ビデオデータを符号化する符号化方法において、
GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合に、上記GOP内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、そのGOPの先頭ピクチャから上記第２のビットレートで各ピクチャを符号化した際の軌跡になるように、上記未符号化ピクチャのビット量を補正し、上記補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御工程と、
上記制御工程によって演算された目標ビット量に従って、上記符号化対象ピクチャを符号化する符号化工程と
を含むことを特徴とする符号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号化装置および符号化方法に関し、特に、GOPの途中でビットレートを変更できるようにし、もって、伝送路の容量を有効に利用することができるようにした、符号化装置および符号化方法に関する。
【０００２】
【従来の技術】
最近、画像データ等をデジタルデータとして送受信するデジタル放送が注目されている。デジタル放送の利点は、アナログ放送に比べて、同じ伝送路においてより多くの番組データ（以下、プログラムという）を伝送することが可能であるということである。これは画像データを圧縮して伝送できるということによるところが大きい。画像データの圧縮の方法としては、例えばＭＰＥＧ（Moving Picture Experts Group）規格で採用されている双方向予測符号化方式が用いられることが多い。この双方向予測符号化方式では、フレーム内符号化、フレーム間順方向予測符号化および双方向予測符号化の３つのタイプの符号化が行われ、各符号化タイプによる画像は、それぞれＩピクチャ（intra coded picture）、Ｐピクチャ（predictive coded picture）またはＢピクチャ（bidirectionally predictive coded picture）と呼ばれる。
【０００３】
デジタル放送における画像の圧縮符号化では、圧縮符号化後のデータ量（ビット量）を、伝送路の伝送容量以下に抑えつつ、画質を高品質に保つ必要がある。
【０００４】
所定の伝送容量の伝送路に対して、より多くの複数のプログラムを伝送する方法として、「統計多重」という手法がある。統計多重は、各プログラムの伝送レートを動的に変化させることにより、より多くのプログラムを伝送する手法である。この統計多重では、例えば、伝送レートを減らしても画質の劣化が目立たないプログラムについては伝送レートを減らすことにより、より多くのプログラムの伝送を可能にする。
【０００５】
ここで、図１および図２を参照して、統計多重について更に説明する。図１は、従来の固定レートにより多重化した場合の各プログラムに対する割当符号レートの一例を表したものであり、縦軸が各プログラムに対する割当符号レートを表し、横軸が時刻を表している。図１に示したように、例えば天気予報、ニュースおよびドラマといった多重化される各プログラムの割当符号レートは、初期値として割り当てられた符号レートのまま一定であり、時間の経過によって変動していない。各プログラムに対して初期値として割り当てられる符号レートは、各プログラムの画質の劣化が最も目立つ部分（時刻）における画質の劣化が許容範囲に収まるように割り当てられている。従って、画質の劣化が目立つ部分以外の部分には、必要以上の符号レートが割り当てられていることになる。
【０００６】
図２は、統計多重の手法を用いて、各プログラムに対する割当符号レートを動的に変化させて多重化した場合の各プログラムに対する割当符号レートの一例を表したものであり、縦軸が各プログラムに対する割当符号レートを表し、横軸が時刻を表している。統計多重は、各プログラムの画質の劣化が目立つ部分（時刻）が同一時間帯に重なることが稀であることを利用したものである。すなわち、あるプログラムでは画質劣化が目立つ部分であるとき、他のプログラムは符号レートを落としても画質劣化が目立たない場合が多いので、他のプログラムの符号レートを落として、画質劣化が目立つプログラムに対して符号レートを多く割り当てることができる。図２に示した例では、時刻ｔ1において、ドラマ（１）の画像は画質劣化が目立つ部分であるが、ニュースおよびドラマ（２）の画像は画質劣化が目立たない部分であるので、ニュースおよびドラマ（２）の画像の符号レートが落とされ、ドラマ（１）の画像に対してその分だけ符号レートが多く割り当てられている。このようにして、統計多重を用いることにより、通常よりも多くのプログラムを伝送することができる。
【０００７】
【発明が解決しようとする課題】
しかし、ここでGOP（Group of Picture）の位相の問題がある。通常、エンコーダは、TM５（Test Model Editing Committe:"Test Model5";ISO/IEC JTC/SC292/WG11/NO400(Apr.1993)）に代表されるように、画像を、GOP単位でレートコントロールしてエンコードする。すなわち、ビットレートは、GOPの途中では変更されない。その結果、各プログラムのGOPの位相があっている場合はよい（一般的には、このような場合はほとんどない）が、GOPの位相にずれがある場合（一般的にはこの場合がほとんどである）、GOPの先頭でしかプログラムのビットレートが変更されないので、一度に全てのプログラムのビットレートを変更することができず、図３に示すように、デッドスペース（いずれのプログラムにもビットレートが割り当てられていない部分）が生じて、伝送容量を全て有効に使用することができないという課題があった。
【０００８】
そこで、GOP単位でレートコントロールをせず、フレーム単位で個々に目標符号量を決めてエンコードする手法も考えられる。しかしながら、デジタル放送の場合、受信機（デコーダ）のVBV（Video Buffering Verifier）バッファをオーバーフローまたはアンダーフローさせないように発生符号量を厳しく制御する必要があるが、このように、フレーム単位で目標符号量を決定するようにすると、VBVバッファがオーバーフローまたはアンダーフローしないように制御することが困難になる。
【０００９】
本発明はこのような状況に鑑みてなされたもので、GOPの途中でもビットレートを変更できるようにし、もって、伝送路の容量を有効に利用することができるようにすることを目的とする。
【００１４】
【課題を解決するための手段】
請求項１に記載の符号化装置は、GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合に、GOP内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、そのGOPの先頭ピクチャから第２のビットレートで各ピクチャを符号化した際の軌跡になるように、未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御手段と、制御手段によって演算された目標ビット量に従って、符号化対象ピクチャを符号化する符号化手段とを備えることを特徴とする。
【００１５】
この符号化装置においては、GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第２のビットレートで各ピクチャを符号化していた時の軌跡になるように、未符号化ピクチャのビット量が補正され、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量が演算される。
【００２８】
請求項８に記載の符号化方法は、GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合に、GOP内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、そのGOPの先頭ピクチャから第２のビットレートで各ピクチャを符号化した際の軌跡になるように、未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御工程と、制御工程によって演算された目標ビット量に従って、符号化対象ピクチャを符号化する符号化工程とを含むことを特徴とする。
【００２９】
この符号化方法においては、GOPの途中において指定ビットレートが第１のビットレートから第２のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第２のビットレートで各ピクチャを符号化していた時の軌跡になるように、未符号化ピクチャのビット量が補正され、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量が演算される。
【００３８】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図４は、本発明を適用した画像多重化システム１の構成例を表す。画像多重化システム１は、それぞれ、本発明における番組データとしてのプログラムＰi（ｉ＝１，２，・・・，ｎ）を入力し、圧縮符号化する複数の画像符号化装置２−ｉと、各画像符号化装置２−ｉに対してフィードバック型のビットレート制御を行うコントローラ３と、各画像符号化装置２−ｉよりそれぞれ出力される圧縮符号化データｓｔiを多重化して、伝送路に対して画像データＳmを出力する多重化装置４とを備えている。画像符号化装置２−ｉは、プログラムＰiの複雑さ（グローバルコンプレクシティ）Ｃiを求め、コントローラ３に出力している。コントローラ３は、各画像符号化装置２−ｉからのグローバルコンプレクシティＣiに基づいて、統計多重により、各画像符号化装置２−ｉのビットレートbit_rate#iを決定し、各画像符号化装置２−ｉに出力している。
【００３９】
画像多重化システム１は、伝送システムとして用いられる場合には、多重化装置４より出力される画像データＳmを、伝送用データとして伝送路に対して出力する。また、画像多重化システム１は、放送システムとして用いられる場合には、多重化装置４より出力される画像データＳmを、放送用データとして、放送用の伝送路を介して受信装置側に送信する。
【００４０】
図５は、図４における画像符号化装置２−１（図示は省略するが、画像符号化装置２−２乃至２−ｎも同様に構成される）の詳細な構成を示すブロック図である。この図に示したように、画像符号化装置２−１は、プログラムＰ1を入力し、符号化する順番に従ってピクチャ（Ｉピクチャ，Ｐピクチャ，Ｂピクチャ）の順番を並べ替える画像並べ替え回路１１と、この画像並べ替え回路１１の出力データを入力し、フレーム構造かフィールド構造かを判別し、判別結果に応じた走査変換を行うとともに、１６×１６画素のマクロブロック化を行う走査変換マクロブロック化回路１２を備える。動き検出回路２１は、走査変換マクロブロック化回路１２の出力データに基づいて、圧縮符号化の対象となるピクチャにおいて注目マクロブロックを探すとともに、参照されるピクチャにおいて、注目マクロブロックとの間の画素値の差分の絶対値和あるいは自乗和が最小となるマクロブロック（予測マクロブロック）を探して、それらから、動きベクトルＭＶを検出して動き補償回路２２に送る。
【００４１】
減算回路１３は、走査変換マクロブロック化回路１２の出力から、動き補償回路２２が動き検出回路２１からの動きベクトルＭＶに基づいて生成した予測画像データ（予測マクロブロック）を減算し、DCT（Discrete Cosine Transform）回路１４に出力する。DCT回路１４は、入力されたデータをDCT変換し、量子化回路１５に出力する。量子化回路１５は、DCT回路１４より入力されたデータを、レートコントローラ２３の量子化スケールコード決定回路３３が出力する量子化スケールコードＱ1に基づいて量子化し、可変長符号化回路１６と、逆量子化回路１８に出力している。
【００４２】
可変長符号化回路１６は、量子化回路１５より入力されたデータを可変長符号化し、バッファメモリ１７を介して多重化装置４に出力する。バッファメモリ１７の使用可能な容量は、コントローラ２４により制御される。
【００４３】
逆量子化回路１８は、量子化回路１５より供給されたデータを逆量子化し、逆DCT回路１９に出力する。逆DCT回路１９は、逆量子化回路１８より供給されたデータを逆DCT変換し、加算回路２０に出力している。加算回路２０は、動き補償回路２２より出力された予測画像データと、逆DCT回路１９より出力されたデータとを加算し、加算して得られたもとの画像データ（局部的に復号された画像データ）を動き補償回路２２に出力し、内蔵するフレームメモリに記憶させる。
【００４４】
レートコントローラ２３は、図４のコントローラ３からの信号bit_rate#1と、バッファメモリ１７からの発生符号量Ｓ1に基づいて量子化スケールコードＱ1を生成し、量子化回路１５に出力している。このため、レートコントローラ２３の複雑さ計算回路３１は、次式に従ってグローバルコンプレクシティ（global comlpexity）Ｃ1（次式では、Ｘｉ，Ｘｐ，Ｘｂとして表されている）を算出する。このグローバルコンプレクシティＣ1は、画像の絵柄の複雑さを示すデータであり、次式に示すように、圧縮映像データの発生符号量（データ量）Ｓ1（バッファメモリ１７より供給される）と、量子化スケールコードＱ1（量子化スケールコード決定回路３３より供給される）とを乗算して得られる値である。
Ｘｉ＝Ｓｉ×Ｑｉ      ・・・（１）
Ｘｐ＝Ｓｐ×Ｑｐ      ・・・（２）
Ｘｂ＝Ｓｂ×Ｑｂ      ・・・（３）
【００４５】
なお、上記式において、Ｘｉ，Ｘｐ，Ｘｂは、それぞれ、Ｉピクチャ、Ｐピクチャ、またはＢピクチャのグローバルコンプレクシティＣ1を表し、Ｓｉ，Ｓｐ，Ｓｂは、それぞれＩピクチャ、Ｐピクチャ、またはＢピクチャを可変長符号化回路１６で符号化した際の発生符号量Ｓ1を表し、Ｑｉ，Ｑｐ，Ｑｂは、それぞれＩピクチャ、Ｐピクチャ、またはＢピクチャを生成する際の量子化スケールコードＱ1を表す。
【００４６】
このグローバルコンプレクシティＣ1は、図１７と図１８を参照して後述するフィードフォワード型のビットレート制御システムにおいて用いられる符号化難易度Ｄ1とは必ずしも一致しないが、量子化スケールコードＱ1が極端に大きかったり小さかったりしない限り、符号化難易度Ｄ1とほぼ一致する。
【００４７】
複雑さ計算回路３１は、以上のようにして、式（１）乃至式（３）に基づいて演算により求めたコンプレクシティＣ1（Ｘｉ，Ｘｐ，Ｘｂ）を、図４のコントローラ３に出力し、また、発生符号量Ｓ1（Ｓｉ，Ｓｐ，Ｓｂ）とともに、目標ビット量設定回路３２に出力する。目標ビット量設定回路３２は、コントローラ３より供給される信号bit_rate#1、複雑さ計算回路３１より供給されるコンプレクシティＣ1（Ｘｉ，Ｘｐ，Ｘｂ）、並びに発生符号量Ｓ1（Ｓｉ，Ｓｐ，Ｓｂ）に基づいて、目標ビット量Ｔ1を設定し、設定した目標ビット量Ｔ1を量子化スケールコード決定回路３３に出力する。量子化スケールコード決定回路３３は、入力された目標ビット量Ｔ1に対応して量子化スケールコードＱ1を決定し、量子化回路１５と複雑さ計算回路３１に出力している。
【００４８】
次に、図４に示した画像多重化システム１の動作について説明する。この画像多重化システム１では、各プログラムＰiは、それぞれ、各画像符号化装置２−ｉによって符号化される。画像符号化装置２−ｉは、プログラムＰiについて、既に符号化した画像の複雑さを表すグローバルコンプレクシティＣiを演算し、コントローラ３に出力する。コントローラ３は、統計多重の手法を用いて、入力された各グローバルコンプレクシティＣiに基づいて、各プログラムＰiに対する単位時間当たりの目標発生符号量である目標符号レートとしての目標ビットレートbit_rate#iを決定し、各画像符号化装置２−ｉに対して出力する。画像符号化装置２−ｉは、入力された目標ビットレートbit_rate#iに基づいて、プログラムＰiを圧縮符号化し、圧縮符号化データｓｔiを多重化装置４に出力する。多重化装置４は、入力された各圧縮符号化データｓｔiを多重化して、出力用の画像データＳmを生成し、伝送路に対して出力する。
【００４９】
次に、図５に示した画像符号化装置２−１の基本的な動作について説明する。まず、プログラムＰ1は、画像符号化装置２−１の画像並べ替え回路１１によって、符号化する順番に従ってピクチャ（Ｉピクチャ，Ｐピクチャ，Ｂピクチャ）の順番が並べ替えられる。次に、走査変換マクロブロック化回路１２は、そのピクチャがフレーム構造かフィールド構造かを判別し、判別結果に応じた走査変換およびマクロブロック化を行う。走査変換マクロブロック化回路１２の出力データは、動き検出回路２１と減算回路１３に送られる。
【００５０】
入力されたピクチャがＩピクチャの場合には、減算回路１３において予測画像データとの差分をとることなく、走査変換マクロブロック化回路１２の出力データがそのままDCT回路１４に入力され、DCT係数に変換される。DCT係数は、量子化スケールコード決定回路３３で決定された量子化スケールコードＱ1に基づいて量子化回路１５によって量子化された後、可変長符号化回路１６によって可変長符号化される。可変長符号化回路１６の出力データは、バッファメモリ１７によって一旦保持された後、ビットストリームからなる圧縮符号化データｓｔ1として、多重化装置４に出力される。
【００５１】
また、逆量子化回路１８は量子化回路１５の出力データを逆量子化する。逆DCT回路１９は逆量子化回路１８の出力データに対して逆DCTを行い、加算回路２０を介して動き補償回路２２に入力して保持させる。
【００５２】
入力されたピクチャがＰピクチャの場合には、動き補償回路２２によって、保持している過去のＩピクチャまたはＰピクチャに対応する画像データと、動き検出回路２１からの動きベクトルＭＶとに基づいて予測画像データが生成され、予測画像データが減算回路１３と加算回路２０に出力される。減算回路１３は、走査変換マクロブロック化回路１２の出力データと動き補償回路２２からの予測画像データとの差分を演算する。この差分データは、DCT回路１４によってDCT係数に変換され、量子化回路１５によって量子化される。可変長符号化回路１６は、量子化回路１５の出力データを可変長符号化し、バッファメモリ１７を介して、圧縮符号化データＳｔ1として、多重化装置４に出力する。
【００５３】
また、逆量子化回路１８は、量子化回路１５の出力データを逆量子化する。逆DCT回路１９は、逆量子化回路１８の出力データに対して逆DCTを行う。加算回路２０は、逆DCT回路１９の出力データと、動き補償回路２２が出力する予測画像データとを加算し、動き補償回路２２に入力して保持させる。
【００５４】
入力されたピクチャがＢピクチャの場合には、動き補償回路２２によって、保持されている過去および未来のＩピクチャまたはＰピクチャに対応する２つの画像データと、動き検出回路２１からの２つの動きベクトルＭＶとに基づいて、予測画像データが生成され、減算回路１３と加算回路２０に出力される。減算回路１３は、走査変換マクロブロック化回路１２の出力データと動き補償回路２２からの予測画像データとの差分を演算する。この差分データは、DCT回路１４によってDCT係数に変換され、量子化回路１５によって量子化される。可変長符号化回路１６は、量子化回路１５の出力データを可変長符号化し、バッファメモリ１７を介して圧縮符号化データｓｔ1として、多重化装置４に出力する。なお、Ｂピクチャは動き補償回路２２に保持されない。
【００５５】
次に、図６と図７のフローチャートを参照して、レートコントローラ２３とコントローラ２４によるレートコントロールの動作について説明する。なお、以下の説明においては、各プログラムＰiに対応する発生符号量Ｓi、グローバルコンプレクシティＣi、目標ビット量Ｔi、量子化スケールコードＱｉ、圧縮符号化データｓｔi、ビットレートbit_rate#iなどの添字ｉは、記号が複雑になるので、それらを個々に区別する必要がある場合を除き、基本的に省略する。
【００５６】
ステップＳ１において、レートコントローラ２３の目標ビット量設定回路３２は、次の式（４）乃至式（６）に基づいて、GOP（通常、１GOPは１５フレームのピクチャで構成される）のピクチャ（ｊ）に対する目標符号量Ｔｉ（ｊ），Ｔｐ（ｊ），Ｔｂ（ｊ）をそれぞれ演算する。
【００５７】
【数１】
0004035747.tif 000002
【００５８】
上記式において、Ｒ（ｊ）は、GOP内のまだ符号化していない（これから符号化する）ピクチャの符号量（ビット量）を表し、Ｎｐ，Ｎｂは、GOP内でまだ符号化されていないＰピクチャまたはＢピクチャの枚数を表し、Ｘｉ，Ｘｐ，Ｘｂは、それぞれＩピクチャ、Ｐピクチャ、またはＢピクチャのグローバルコンプレクシティＣを表している。ＫｐとＫｂは、Ｉピクチャの量子化スケールコードを基準としたＰピクチャとＢピクチャの量子化スケールコードの比率を表し、次式で示す値とされる。＄
Ｋｐ＝１．０      ・・・（７）
Ｋｂ＝１．４      ・・・（８）
【００５９】
すなわち、Ｐピクチャの量子化スケールコードは、Ｉピクチャの量子化スケールコードの１倍とされるが、Ｂピクチャの量子化スケールコードは、ＩピクチャとＰピクチャの量子化スケールコードの常に１．４倍とされる。これにより、Ｂピクチャが、ＩピクチャまたはＰピクチャに比較して、多少粗めに符号化されるので、Ｂピクチャで節約できる符号量をＩピクチャとＰピクチャの符号量に加えることができ、ＩピクチャとＰピクチャのＳ／Ｎが改善されるとともに、それを参照するＢピクチャのＳ／Ｎも改善されることとなり、総合的にＳ／Ｎが改善される。
【００６０】
なお、コンプレクシティＸｉ，Ｘｐ，Ｘｂの初期値は、目標レートであるbit_rate（ｊ）（ビット／秒）に基づいて次式で示す値に設定される。
【００６１】
Ｘｉ＝１６０×bit_rate（ｊ）／１１５      ・・・（９）
Ｘｐ＝６０×bit_rate（ｊ）／１１５      ・・・（１０）
Ｘｂ＝４２×bit_rate（ｊ）／１１５      ・・・（１１）
【００６２】
bit_rate（ｊ）は、コントローラ３よりピクチャ（ｊ）に対して指定されるビットレートを表す。pic_rateは、ピクチャレートを表し、例えば、NTSC方式の場合、３０（フレーム／秒）となる。さらに、max{A,B}は、ＡとＢのうち、大きい方を選択する関数を意味する。
【００６３】
Ｒ（ｊ），Ｎｐ，Ｎｂ，Ｋｐ，Ｋｂ，pic_rateの各値は、それぞれ各画像符号化装置２−ｉ毎に設けられているコントローラ２４（図５）から供給される値である。Ｘｉ，Ｘｐ，Ｘｂは、上述したように、複雑さ計算回路３１が式（１）乃至式（３）に従って演算した値である。
【００６４】
式（４）乃至（６）では、未符号化ピクチャ全体の発生する推定符号量が割当対象ピクチャの何枚分の符号量に相当するかが求められる。
【００６５】
例えば、式（４）の第１引数の分母の第２項のＮｐＸｐ／ＸｉＫｐは、GOP内のＮｐ枚の未符号化Ｐピクチャが、Ｉピクチャ何枚分の符号量に相当するかを表し、第３項のＮｂＸｂ／ＸｉＫｂは、GOP内のＮｂ枚の未符号化Ｂピクチャが、Ｉピクチャ何枚分の符号量に相当するかを表している。第１項の１は、GOP内のＩピクチャの数を表している（１GOP内のＩピクチャの数は、常に１とされている）ので、結局、式（４）の第１引数は、GOP内の残りの（Ｎ−ｊ＋１）枚のピクチャが、全てＩピクチャであると仮定した場合における１ピクチャ当たりの符号量を表している。
【００６６】
同様に、式（５）の第１引数の分母の第２項のＮｂＫｐＸｂ／ＫｂＸｐは、GOP内のＮｂ枚の未符号化Ｂピクチャが、Ｐピクチャ何枚分の符号量に相当するかを表している。従って、式（５）の第１の引数は、GOP内の残りの（Ｎ−ｊ＋１）枚のピクチャが、全てＰピクチャであると仮定した場合における１ピクチャ当たりの符号量を表している。
【００６７】
さらに、式（６）の第１引数の分母の第２項のＮｐＫｂＸｐ／ＫｐＸｂは、GOP内のＮｐ枚の未符号化Ｐピクチャが、Ｂピクチャ何枚分の符号量に相当するかを表しており、第１の引数は、GOP内の残りの（Ｎ−ｊ＋１）枚のピクチャが、全てＢピクチャであると仮定した場合における１ピクチャ当たりの符号量を表している。
【００６８】
基本的には、式（４）乃至式（６）の第１引数の値に、Ｉピクチャ、Ｐピクチャ、またはＢピクチャの目標符号量Ｔi（ｊ），Ｔp（ｊ），Ｔb（ｊ）（以下、Ｉピクチャ、Ｐピクチャ、またはＢピクチャの区別をする必要がないときは、単に、Ｔ（ｊ）とも記述する）が決定されるが、演算により求めたその値があまりにも小さい場合には、画像復号装置のVBVバッファがオーバーフローする恐れがあるので、式（４）乃至式（６）の第２引数に規定される値bit_rate（ｊ）／（８×pic_rate）が、目標符号量Ｔ（ｊ）として選択される。
【００６９】
ピクチャ（ｊ）がエンコードされる直前のVBVバッファの占有量をＢ*（ｊ）とすると、このピクチャ（ｊ）に対し、目標符号量Ｔ（ｊ）と同じ値だけのビット量が、実際に符号化により発生したとすると、次のピクチャ（ｊ＋１）のエンコード直前のVBVバッファの占有量Ｂ*（ｊ＋１）は、次の式で表される。ステップＳ２において、コントローラ２４は、次式に従って、この占有量Ｂ*（ｊ＋１）を演算する。
【００７０】
Ｂ*（ｊ＋１）＝Ｂ*（ｊ）−Ｔ（ｊ）＋（ｔj+1−ｔj）×bit_rate（ｊ＋１）・・・（１２）
【００７１】
また、ステップＳ２において、コントローラ２４は、次式からVBVバッファの使用範囲を決定する。
【００７２】
vbv_size（ｊ＋１）＝min｛τmax×bit_rate（ｊ＋１），vbv_size（０）｝・・・（１３）
【００７３】
なお、vbv_size（０）は、VBVバッファの遅延時間が最高の値τmaxとなる場合のビットレートの値を表しており、min｛Ａ，Ｂ｝は、ＡとＢのうち、小さい方を選択する関数を表す。
【００７４】
すなわち、この例では、VBVバッファの遅延時間の最高値が予め規定され、VBVバッファの遅延時間が、予め規定したこの最高値を上回るようなビットレートが使用される場合には、コントローラ２４がVBVバッファ（図５のバッファメモリ１７に対応する）の使用範囲を狭めて（VBVバッファの容量を等価的に小さくして）、その遅延時間が、最高値に等しくなるように制御する。最高値τmaxは、次式で表される。
【００７５】
τmax＝vbv_size（０）／bit_rate（０）      ・・・（１４）
【００７６】
ここで、vbv_size（０）は、VBVバッファの容量を表し、bit_rate（０）は、VBVバッファの遅延時間が最高値τmaxとなる場合におけるビットレートを表す。
【００７７】
次に、ステップＳ３において、コントローラ２４は、ステップＳ２で演算したVBVバッファの占有量Ｂ*（ｊ＋１）と、vbv_size（ｊ＋１）の大きさを比較し、Ｂ*（ｊ＋１）が、vbv_size（ｊ＋１）と等しいか、それより大きい場合（VBVバッファの容量vbv_size（ｊ＋１）をそのまま使用したのでは、VBVバッファの遅延時間が値τmaxを越えてしまい、目標符号量Ｔ（ｊ）を補正する必要がある場合）には、ステップＳ４に進み、ステップＳ１で計算した目標符号量Ｔ（ｊ）を、次式に従って、Ｂ*（ｊ＋１）とvbv_size（ｊ＋１）の差の分だけ補正する。
【００７８】
Ｔ（ｊ）＝Ｔ（ｊ）＋Ｂ*（ｊ＋１）−vbv_size（ｊ＋１）      ・・・（１５）
【００７９】
ステップＳ３において、Ｂ*（ｊ＋１）が、vbv_size（ｊ＋１）より小さいと判定された場合には、VBVバッファが使用できない範囲に入ることがないので、ステップＳ４の処理はスキップされる。
【００８０】
次に、ステップＳ５において、ピクチャ（ｊ）が、ステップＳ１で計算されたか、またはステップＳ４で補正された目標符号量Ｔi（ｊ），Ｔp（ｊ），Ｔb（ｊ）に基づいてエンコード（符号化処理）される。すなわち、量子化スケールコード決定回路３３は、目標ビット量設定回路３２が設定した目標符号量Ｔ1（Ｔi（ｊ），Ｔp（ｊ）またはＴb（ｊ））に対応する量子化スケールコードＱ1を決定し、量子化回路１５が、この量子化スケールコードＱ1に対応してピクチャ（ｊ）を量子化する。この場合の処理は、上述した通りであるので、ここでは、その説明を省略する。
【００８１】
以上までは、ピクチャ（ｊ）の処理であるが、ステップＳ６からは、ピクチャ（ｊ＋１）の処理が行われる。次にステップＳ６において、コントローラ２４は、次式に従って、ピクチャ（ｊ）を符号化する前の未符号化ピクチャの符号量Ｒ（ｊ）から、ピクチャ（ｊ）を符号化して発生した符号量Ｓ（ｊ）を減算して、次のピクチャ（ｊ＋１）を符号化する場合における符号量Ｒ（ｊ＋１）を求める。
【００８２】
Ｒ（ｊ＋１）＝Ｒ（ｊ）−Ｓ（ｊ）      ・・・（１６）
【００８３】
さらにステップＳ７において、コントローラ２４は、ステップＳ６で更新された符号量Ｒ（ｊ＋１）を、次式に従って、さらにVBVバッファ使用範囲の変化量｛vbv_size（ｊ）−vbv_size（ｊ＋１）｝で補正する。
【００８４】
Ｒ（ｊ＋１）＝Ｒ（ｊ＋１）＋｛vbv_size（ｊ）−vbv_size（ｊ＋１）｝・・・（１７）
【００８５】
以上のステップＳ７までの処理の意味を、図８乃至図１３を参照して、さらに説明する。コントローラ２４は、コントローラ３より指定されるビットレートbit_rate（ｊ）（この文字ｊは、図４のbit_rate#iにおける文字ｉ（プログラムＰiに対応する）を表すものではなく、ピクチャの順番を表す。両者をまとめて記述すれば、bit_rate#i(j)となる）が、VBVバッファの遅延時間が最高値τmaxとなる場合のビットレートbit_rate（０）（以下、閾値とも称する）に等しい場合、VBVバッファ（バッファメモリ１７）を、図８に示すように制御する。同図に示すように、VBVバッファの容量は、ビットレートbit_rate（０）で順次増加し、遅延時間τmaxだけ経過した時点で、VBVバッファの容量は、vbv_size（０）となる。以下、VBVバッファに記憶された画像データは、適宜読み出され、復号されるたびに減少される。また、新たな画像データが書き込まれると、そのデータ量は増加する。以上のような動作が、順次繰り返される。
【００８６】
一方、コントローラ３より指定されたビットレートbit_rate（１）が、閾値bit_rate（０）より大きい場合、コントローラ２４は、ステップＳ５のエンコード処理時において、バッファメモリ１７を制御し、時間τ1だけ、画像データの出力を遅延させる。この遅延時間τ1は、次式により演算される。
【００８７】
τ1＝τmax−τ2＝τmax−vbv_size（０）／bit_rate（１）  ・・・（１８）
【００８８】
VBVバッファには、この遅延時間τ1の後、ビットレートbit_rate（１）でデータが書き込まれ、書き込み開始後、時間τ2が経過した時点において、VBVバッファの容量は、vbv_size（１）＝vbv_size（０）となる。図９を図８と比較して明らかなように、VBVバッファの最大の遅延時間τmaxは、両者とも同一となっている。
【００８９】
一方、コントローラ３より指定されたビットレートbit_rate（２）が、閾値bit_rate（０）より小さいとき、コントローラ２４は、バッファメモリ１７を制御し、その容量を（使用可能な範囲を）vbv_size（２）以下に設定（制限）する。この演算は、図６のステップＳ２で行われる。すなわち、VBVバッファの容量vbv_size（０）のうち、vbv_size（２）を越える範囲は、この例の場合使用されない。その結果、VBVバッファの容量vbv_sizeは、遅延時間τmaxが経過した時点において、vbv_size（２）（＝τmax×bit_rate（２））となる。従って、この場合においても、VBVバッファの遅延時間は、τmaxとされる。すなわち、図８乃至図１０のいずれの場合においても、VBVバッファの遅延時間は、τmaxとして一定とされる。
【００９０】
これにより、ビットレートのシームレスな変更が広範囲にわたって可能となり、デジタル放送の生放送に適用可能となる。
【００９１】
図１０において、遅延時間τ3（＝vbv_size（０）／bit_rate（２））の時間だけVBVバッファにデータが書き込まれると、その容量は、vbv_size（０）となるが、この例では、容量vbv_size（２）以下の範囲だけが使用可能とされるので、実際には、その容量がvbv_size（０）に達することはない。
【００９２】
図１１は、ビットレートが、bit_rate（１）からbit_rate（２）に途中で変更された場合のVBVバッファの変化の様子を表している。時刻ｔ1までの時間において、ビットレートの値は、閾値bit_rate（０）より大きい値bit_rate（１）とされている。従って、この場合のVBVバッファの変化の様子は、図９に示した場合と同様となる。これに対して、時刻ｔ1において、ビットレートが閾値bit_rate（０）より小さいビットレートbit_rate（２）に変更されると、VBVバッファの容量は、vbv_size（２）（＝τmax×bit_rate（２））に制限される。
【００９３】
ＴＭ５のような固定レート、かつ固定のVBVバッファの容量を前提としたレート制御方式を使用した場合、VBVバッファの使用範囲を計算しただけでは、図１２に示したような問題が生じる。
【００９４】
すなわち、ビットレートが閾値bit_rate（０）より大きい値bit_rate（１）から小さい値bit_rate（２）に変更された場合（ただし、簡単のためビットレートレートの変更はGOPの先頭で行われたものとする）、制限されたVBVバッファの範囲内でデータの容量が推移するには、VBVバッファのデータ推移の軌跡は、図１２において実線で示すように変化する必要がある。しかしながら、ＴＭ５において、目標符号量は、VBVバッファの最大値に近い領域を推移するように決定されるので、使用範囲を制限しただけでは、VBVバッファは、図１２において点線で示すように、使用することができない範囲を推移してしまうことになる。
【００９５】
そこで、例えば、VBVバッファが狭くなったとき、最初のＩピクチャの発生ビット量だけ、スタッフィングにより増加するようにすることも考えられる。しかしながら、そのようにすると、最初のＩピクチャの発生ビット量が大きくなるので、ＴＭ５のGOPの残りのビット量Ｒ（ｊ）が、式（１６）（Ｒ（ｊ＋１）＝Ｒ（ｊ）−Ｓ（ｊ））に従って更新されると、Ｒ（ｊ＋１）が非常に小さい値となってしまい、GOPの残りのピクチャに割り当てるビット量が少なくなって、結局VBVバッファの軌跡は、図１２の上の方の使用できない範囲に戻ろうとしてしまう。
【００９６】
そこで、ステップＳ３において、上記した式（１２）により計算したバッファ占有量Ｂ*（ｊ＋１）と、式（１３）で求めたVBVバッファの容量vbv_size（２）の大きさを比較し、Ｂ*（ｊ＋１）が、vbv_size（２）より大きい場合には、式（１５）に示すように、その差分（Ｂ*（ｊ＋１）−vbv_size（２））だけ、ステップＳ１で演算した目標符号量Ｔ（ｊ）がステップＳ４で補正される。その結果、図１３に示すように、補正後の目標符号量Ｔ（ｊ）は、VBVバッファの容量vbv_size（２）より、差分（Ｂ*（ｊ＋１）−vbv_size（２））だけ小さい値となり、VBVバッファの使用不可の領域が使用されてしまうようなことが防止される。
【００９７】
以上のようにして、VBVバッファの使用可能範囲を制限するための処理が行われた後、図６に続く図７のフローチャートのステップＳ８以降の処理が行われる。ここでは、GOPの途中でビットレートが変更された場合の処理が行われる。
【００９８】
目標ビット量設定回路３２は、ステップＳ８でピクチャ（ｊ＋１）はGOPの先頭のピクチャであるか否かを判定する。ピクチャ（ｊ＋１）がGOPの先頭のピクチャでない場合には、ステップＳ９に進み、目標ビット量設定回路３２は、そのGOP内において、ビットレートの変更が、コントローラ３より指令されているか否かを判定する。ビットレートの変更が指令されていない場合には、ステップＳ１０に進み、目標ビット量設定回路３２は、処理対象がシーケンスエンドに達したか否かを判定し、達していない場合には、ステップＳ１に戻り、それ以降の処理が繰り返し実行される。処理対象がシーケンスエンドに達したと判定された場合、処理は終了される。
【００９９】
ステップＳ９において、ビットレートの変更が指令されたと判定された場合、目標ビット量設定回路３２は、ステップＳ１２に進み、次式に従って、ステップＳ７で補正した符号量Ｒ（ｊ＋１）を、GOPの残りのピクチャの枚数（Ｎ−ｊ）にピクチャ当たりのビット量の差分（bit_rate（ｊ＋１）−bit_rate（ｊ））／pic_rateを乗算した値で補正する。
【０１００】
Ｒ（ｊ＋１）＝｛bit_rate（ｊ＋１）−bit_rate（ｊ）｝×（Ｎ−ｊ）／pic_rate＋Ｒ（ｊ＋１）      ・・・（１９）
【０１０１】
すなわち、GOPの途中でビットレートが変更されない場合、符号量Ｒは、図１４に示すように、エンコードが進むに従って、初期値Ｒ1から漸次小さい値に変化する。なお、図１４において、実線は、各ピクチャが等しい符号量でエンコードされるものと仮定した場合のものであり、実際には、ＩピクチャやＰピクチャの発生ビット量が、Ｂピクチャよりも多くなるので、符号量Ｒは点線で示したように変化する。
【０１０２】
これに対して、GOPのピクチャ（ｊ）をエンコードした後、次のピクチャ（ｊ＋１）からビットレートを変更することが要求された場合、符号量Ｒ（ｊ＋１）がステップＳ１２で式（１９）で示すように補正される。すなわち、符号量Ｒが、ビットレートbit_rate（１）の割合で、初期値Ｒ1から、漸次減少するように制御されていたものが、ピクチャ（ｊ＋１）のタイミングにおいて、符号量が補正後の値Ｒ（ｊ＋１）に変更される。この補正後の値Ｒ（ｊ＋１）は、初めから、初期値をＲ2としてビットレートbit_rate（２）でエンコードしていたと仮定した場合のピクチャ（ｊ＋１）の符号量Ｒ（ｊ＋１）に等しい。これにより、GOPの途中におけるビットレートの変更が可能となる。
【０１０３】
次に、ステップＳ１３に進み、目標ビット量設定回路３２は、ステップＳ１２で補正した符号量Ｒ（ｊ＋１）が、予め設定してある所定の最小値Ｒminより小さいか否かを判定する。符号量Ｒ（ｊ＋１）が、最小値Ｒminと等しいか、それより大きい場合には、ステップＳ１４において、変数ｅに０が設定される。これに対して、符号量Ｒ（ｊ＋１）が、最小値Ｒminより小さい場合には、ステップＳ１５において、変数ｅに符号量Ｒ（ｊ＋１）と最小値Ｒminとの差（Ｒ（ｊ＋１）−Ｒmin）が設定される。この変数ｅは、ステップＳ１１で使用されるものである。この変数ｅの機能については後述する。
【０１０４】
ステップＳ１４または、ステップＳ１５の処理の後、ステップＳ１０に進み、それ以降の処理が繰り返し実行される。
【０１０５】
一方、ステップＳ８において、ピクチャ（ｊ＋１）が、GOPの先頭のピクチャであると判定された場合には、ステップＳ１１に進み、目標ビット量設定回路３２は、次式に従って、符号量Ｒ（ｊ＋１）を補正する。
【０１０６】
Ｒ（１）＝bit_rate（ｊ＋１）×Ｎ／pic_rate＋Ｒ（ｊ＋１）＋ｅ・・・（２０）
【０１０７】
その後、ステップＳ１０に戻り、それ以降の処理が繰り返し実行される。
【０１０８】
ここで、変数ｅの機能について説明する。ステップＳ１２で、式（１９）により補正された符号量Ｒ（ｊ＋１）が、予め設定されている所定の最小値Ｒminより小さくなった場合、これを放置して、次のGOPのビットレートを制御すると、VBVバッファがオーバーフローしてしまう恐れがある。
【０１０９】
そこで、GOPの途中でビットレートの変更が指令され、GOPの最後のピクチャ（Ｎ枚目のピクチャ）をエンコードした時点において、Ｒ（ｊ＋１）が、最小値Ｒminより小さい場合には、図１６に示すように、その差分ｅだけ、次のGOPの符号量Ｒの初期値Ｒ2を小さくさせ、値（Ｒ2−ｅ）を初期値として、そのGOPの符号量を設定させる。これにより、VBVバッファのオーバーフローが防止される。
【０１１０】
以上においては、各画像符号化装置２−ｉにおいて、実際に符号化されたデータのグローバルコンプレクシティＣiをコントローラ３にフィードバックすることにより、プログラムＰiを統計多重するようにしたが、フィードフォワード型の制御によりビットレートを制御することもできる。図１７は、この場合の構成例を表している。図１７に示した画像多重化システム１の構成は、基本的に図４に示した画像多重化システム１と同様であるが、各画像符号化装置２−ｉから、コントローラ３に出力されるのが、グローバルコンプレクシティＣiではなく、符号化難易度Ｄiとされている。その他の構成は、図４における場合と同様である。
【０１１１】
図１８は、図１７の画像符号化装置２−１（図示は省略するが、画像符号化装置２−２乃至２−ｎも、画像符号化装置２−１と同様に構成されている）の構成例を表している。その基本的な構成は、図５に示した場合と同様であるが、図１８の構成例においては、走査変換マクロブロック化回路１２と減算回路１３の間に、イントラＡＣ演算回路４１とFIFO（First In First Out）４２が設けられている。また、レートコントローラ２３には、ＭＥ残差計算回路５１と符号化難易度計算回路５２が付加されている。
【０１１２】
イントラＡＣ演算回路４１は、走査変換マクロブロック化回路１２の出力を入力し、ＩピクチャにおけるイントラＡＣを算出し、符号化難易度計算回路５２に出力している。イントラＡＣ演算回路４１はまた、走査変換マクロブロック化回路１２より供給された画像データをFIFO４２に出力する。FIFO４２は、入力された画像データを、少なくとも、目標ビット量設定回路３２が、目標ビット量を設定するのに必要な時間に対応する時間だけ、入力された画像データを遅延して演算回路１３に出力する。
【０１１３】
ＭＥ残差計算回路５１は、動き検出回路２１が出力するＭＥ残差データに基づいて、ＭＥ残差を計算し、符号化難易度計算回路５２に出力している。なお、ここでＭＥ残差とは、動き予測誤差の絶対値または２乗値を、ピクチャ全体について加算したものであり、ＭＥ残差データは、ＭＥ残差を求めるためのデータである。
【０１１４】
符号化難易度計算回路５２は、ＭＥ残差計算回路５１により算出されたＭＥ残差と、イントラＡＣ演算回路４１により演算されたイントラＡＣに基づいて、ピクチャの符号化の難易度を表す符号化難易度Ｄ1を算出し、コントローラ３に送出するとともに、目標ビット量設定回路３２に出力する。なお、この構成例においては、符号化難易度計算回路５２により演算された符号化難易度Ｄ1がコントローラ３に伝送されているため、複雑さ計算回路３１が演算により求めたグローバルコンプレクシティＣ1は、コントローラ３に供給されない。
【０１１５】
図１８の画像符号化装置２−１のその他の構成は、図５における場合と同様である。
【０１１６】
次に、図１８の画像符号化装置２−１の、主に、図５における場合と異なる構成の動作について説明する。イントラＡＣ演算回路４１は、走査変換マクロブロック化回路１２の出力する画像データから、イントラＡＣを演算する。イントラＡＣとは、Ｉピクチャにおいて、８×８画素のDCTブロック内の各画素の画素値と、DCTブロック内の画素値の平均値との差分の絶対値の総和を意味し、次式で表される。
【０１１７】
Intra_AC＝Σ｜ｆcurr（ｘ，ｙ）−（Σｆcurr）／Ｎ｜・・・（２１）
【０１１８】
なお、この式において、Intra_ACは、イントラＡＣを表し、ｆcurr（ｘ，ｙ）は、DCTブロック内の各画素の画素値を表し、Σｆcurrは、DCTブロック内の画素値の総和を表し、ＮはDCTブロック内の画素数を表している。また、Σは、マクロブロック内の各画素についての総和を表している。
【０１１９】
動き検出回路２１は、動きベクトルを求める際に、その値が、最小となったマクロブロック間における画素値の差分の絶対値和（あるいは自乗和でもよい）をＭＥ残差データとして、ＭＥ残差計算回路５１に出力する。ＭＥ残差計算回路５１は、動き検出回路２１からのＭＥ残差データをピクチャ全体について加算し、ＭＥ残差を計算する。すなわち、ＭＥ残差計算回路５１で次式が演算される。
【０１２０】
ＭＥ＿reside＝Σ｜ｆj（ｘ，ｙ）−ｆj-1（ｘ，ｙ）｜      ・・・（２２）
【０１２１】
上式において、ＭＥ＿resideはＭＥ残差を表し、ｆj（ｘ，ｙ），ｆj-1（ｘ，ｙ）は、各マクロブロックの画素値を表す。Σは、マクロブロック内の各画素についての総和を表している。
【０１２２】
符号化難易度計算回路５２は、イントラＡＣ演算回路４１より供給されたイントラＡＣと、ＭＥ残差計算回路５１より供給されたＭＥ残差に基づいて、符号化難易度を計算する。符号化難易度とは、ピクチャの符号化の難易度を表すものであって、符号化したときに同じ画質を保つために必要なデータ量の比率と言い換えることができる。イントラＡＣは、絵柄の複雑さを表し、ＭＥ残差は、映像の動きの早さ、および絵柄の複雑さを表し、それらは符号化の難易度と強い相関を有するので、これらを変数とする、例えば１次関数により、符号化難易度Ｄ1が、符号化難易度計算回路５２で演算される。
【０１２３】
このようにして、先読みした統計量（イントラＡＣ）に基づいて、精度の高い符号化難易度が演算される。コントローラ３は、この符号化難易度Ｄiに基づいて、目標ビットレートbit_rate#iを決定し、各画像符号化装置２−ｉに出力する。
【０１２４】
次に、図１８の目標ビット量設定回路３２とコントローラ２４の動作について、図１９と図２０のフローチャートを参照して説明する。ステップＳ３１乃至ステップＳ３７の処理は、基本的に、図６に示したステップＳ１乃至ステップＳ７の処理と同様の処理である。ただし、ステップＳ３１においては、上述した式（１）乃至式（３）に代えて、次の式に従って、ピクチャ（ｊ）の目標符号量Ｔ（ｊ）が演算される。なお、式（２３）においては、ピクチャタイプに対応する添え字ｉ，ｐ，ｂは省略されている。
【０１２５】
【数２】
0004035747.tif 000003
【０１２６】
ここで、Ｔ（ｊ）は、ピクチャ（ｊ）の目標符号量を表し、Ｒ’（ｊ）は、処理対象ピクチャから後の先読みするＬ枚（いまの場合、簡単のため、先読み枚数Ｌは１GOPの枚数Ｎと等しいものとする）のピクチャのビット量を表し、Ｄjは、ピクチャ（ｊ）の符号化難易度を表している。すなわち、上記式により、ピクチャ（ｊ）の目標符号量Ｔ（ｊ）が、Ｌ枚分のビット量Ｒ’（ｊ）を、そのピクチャの符号化難易度Ｄjと、Ｌ枚の先読みしたピクチャの符号化難易度Ｄjの和の比で重み付けして求められる。
【０１２７】
次のステップＳ３２乃至ステップＳ３５の処理は、図６のステップＳ２乃至ステップＳ５の処理と同様の処理であり、ここでは、その説明は省略する。ステップＳ３６では、式（１６）に代えて、次の式（２４）に基づいて、符号量Ｒ’（ｊ＋１）が更新される。
【０１２８】
Ｒ’（ｊ＋１）＝Ｒ’（ｊ）−Ｓ（ｊ）＋Ｆ（ｊ＋Ｌ）      ・・・（２４）
【０１２９】
なお、Ｒ’（ｊ）の初期値は、Ｌ枚分のピクチャの符号量に対応して次式で表される。
【０１３０】
Ｒ’（１）＝bit_rate（１）×Ｌ／pic_rate      ・・・（２５）
【０１３１】
上記式（２４）において、Ｆ（ｊ＋Ｌ）は、ピクチャ（ｊ＋Ｌ）のピクチャタイプに応じたビット量であり、例えば、次式により規定される。なお、式（２４）においては、式（２６）乃至式（２８）におけるピクチャタイプに対応する添え字ｉ，ｐ，ｂは省略されている。
【０１３２】
【数３】
0004035747.tif 000004
【０１３３】
上記式において、Ｇは、GOPの残りの符号量に対応し、図４と図５に示したフィードバック型のレートコントロールシステムにおける符号量Ｒに対応する。この符号量Ｇも、ステップＳ３６において、次式に従って更新される。
【０１３４】
Ｇ（ｊ＋Ｌ＋１）＝Ｇ（ｊ＋Ｌ）−Ｆ（ｊ＋Ｌ）      ・・・（２９）
【０１３５】
なお、式（２９）におけるＦ（ｊ）は、上記式（２６）乃至（２８）のうち、対応するピクチャタイプの式により表されるものである。
【０１３６】
符号量Ｒ’は、これから符号化されるＬ枚のピクチャの符号量を表すから、基本的には、図２１に実線で示すように、エンコードの進行状況に拘らず、常に一定の値となる。実際には、各ピクチャタイプ毎に符号量が変化するので、図２１において破線で示すように、実線で示す値の近傍で変化する。
【０１３７】
これに対して、符号量Ｇは、１GOPの符号量であるから、図２２に示すように、フィードバック型のレートコントロールにおける符号量Ｒと同様に、エンコードの進行にともなって、漸次小さい値に変化する。
【０１３８】
次に、ステップＳ３７で、図６のステップＳ７における式（１７）に代えて、式（３０）に従って、符号量Ｒ’（ｊ＋１）の更新処理が行われる。
【０１３９】
Ｒ’（ｊ＋１）＝Ｒ’（ｊ＋１）＋｛vbv_size（ｊ）−vbv_size（ｊ＋１）｝・・・（３０）
【０１４０】
以上のステップＳ３１乃至ステップＳ３７の処理は、フィードバック型レートコントロールの例において説明した場合のように、VBVバッファの使用する範囲を制限するために行われる処理である。
【０１４１】
次に、ステップＳ３８に進み、目標ビット量設定回路３２は、ピクチャ（ｊ＋１）が、GOPの先頭のピクチャであるか否かを判定する。ピクチャ（ｊ＋１）がGOPの先頭のピクチャでない場合には、ステップＳ３９に進み、GOPの途中においてビットレートの変更が指令されているか否かが判定される。ビットレートの変更が指令されていない場合には、ステップＳ４０に進み、エンコード処理がシーケンスエンドに達しているか否かが判定され、まだ達していない場合には、ステップＳ３１に戻り、それ以降の処理が繰り返し実行される。ステップＳ４０において、処理がシーケンスエンドまで達していると判定された場合、処理は終了される。
【０１４２】
ステップＳ３９において、GOPの途中においてビットレートが変更されていると判定された場合、ステップＳ４１に進み、目標ビット量設定回路３２は、次式に従って、符号量Ｒ’（ｊ＋１）と符号量Ｇ（ｊ＋１）を更新する。
【０１４３】
Ｒ’（ｊ＋１）＝｛bit_rate（ｊ＋１）−bit_rate（ｊ）｝×Ｌ／pic_rate＋Ｒ’（ｊ＋１）      ・・・（３１）
Ｇ（ｊ＋１）＝｛bit_rate（ｊ＋１）−bit_rate（ｊ）｝×（Ｎ−ｊ）／pic_rate＋Ｇ（ｊ＋１）      ・・・（３２）
【０１４４】
このように、ビットレートが、GOPの途中で変更された場合には、符号量Ｒ’は、図２３に示すように、所定の値Ｒ1から所定の値Ｒ2に変化する。
【０１４５】
一方、符号量Ｇは、図２４に示すように、初期値Ｒ1から、ビットレートbit_rate（１）でエンコードが行われてきたときの値Ｇ（ｊ＋１）から、最初から初期値Ｒ2でエンコードを行ってきた場合における値Ｇ（ｊ＋１）に変更される。このことは、図１５を参照して説明した符号量Ｒにおける場合と同様である。
【０１４６】
次に、ステップＳ４２に進み、目標ビット量設定回路３２は、符号量Ｇ（ｊ＋１）が、最小値Ｇminより小さいか否かを判定し、符号量Ｇが、最小値Ｇminと等しいか、それより大きい場合には、ステップＳ４３において、変数ｅに０を設定する。
【０１４７】
符号量Ｇ（ｊ＋１）が、最小値Ｇminより小さい場合には、ステップＳ４４において、変数ｅに、両者の差（Ｇ（ｊ＋１）−Ｇmin）が設定される。この処理は、図７におけるステップＳ１３乃至ステップＳ１５の処理と同様の処理である。この変数ｅは、後述するステップＳ４６、またはステップＳ４７の処理において用いられる。
【０１４８】
ステップＳ３８において、ピクチャ（ｊ＋１）が、GOPの先頭のピクチャであると判定された場合、ステップＳ４５に進み、目標ビット量設定回路３２は、ビットレートの変更が指令されているか否かを判定する。ここで、ビットレートの変更の有無の判定が行われ、図７のステップＳ８において、ピクチャ（ｊ＋１）がGOPの先頭のピクチャであると判定された場合に、ビットレートの変更処理が行われないのは、図７の処理の場合には、ピクチャ（ｊ＋１）がGOPの先頭のピクチャであっても、そうでなくても、ステップＳ１１で同一の式（２０）が用いられるので、ビットレートの変更判断が不要であるのに対して、図２０のフローチャートの処理においては、ピクチャ（ｊ＋１）がGOPの先頭のピクチャである場合においても、ビットレートの変更の有無により処理が異なるので、ステップＳ４５の判定処理が挿入されている。
【０１４９】
すなわち、ステップＳ４５において、ビットレートの変更が指令されていないと判定された場合には、ステップＳ４６において、目標ビット量設定回路３２は、次式に従って、符号量Ｇを更新する。
【０１５０】
Ｇ（１）＝bit_rate（ｊ＋１）×Ｎ／pic_rate＋Ｇ（ｊ＋１）＋ｅ・・・（３３）
【０１５１】
一方、ステップＳ４５において、ビットレートの変更が指令されていると判定された場合には、ステップＳ４７に進み、目標ビット量設定回路３２は、次式に従って、符号量Ｒ’（１）と符号量Ｇ（１）を更新する。
【０１５２】
Ｒ’（１）＝｛bit_rate（１）−bit_rate（ｊ）｝×Ｌ／pic_rate＋Ｒ’（Ｊ＋１）      ・・・（３４）
Ｇ（１）＝bit_rate（１）×Ｎ／pic_rate＋Ｇ（ｊ＋１）＋ｅ・・・（３５）
【０１５３】
ステップＳ４６の処理とステップＳ４７の処理を比較して明らかなように、ステップＳ４７の処理は、ステップＳ４６の処理に較べて、符号量Ｒ’（１）の更新処理が、符号量Ｇ（１）の処理に加えて付加されている。
【０１５４】
変数ｅの機能は、図１６を参照して説明した場合と同様であり、図２５に示すように、符号量Ｇの変化にともなってGOPの最後のピクチャの符号化が行われた直後において、ｅの値が０でない場合には、次のGOPの符号化時の符号量Ｇの初期値Ｒ2の値が、ｅの分だけ小さい値に調整される。
【０１５５】
ステップＳ４３，Ｓ４４，Ｓ４６，Ｓ４７の処理の後、ステップＳ４０に進み、それ以降の処理が繰り返し実行される。
【０１５６】
以上のフィードバック型、およびフィードフォワード型のビットレートコントロールの実施の形態のいずれにおいても、VBVバッファの使用範囲を制限するようにしたが、画質を考慮したとき、若干の問題が生じる場合がある。すなわち、図２６に示すように、最初のGOPにおいて、３Mbpsのビットレートが設定され、次のGOPにおいて、１．５Mbpsのビットレートが設定され、さらに、その次のGOPにおいて、再び３Mbpsのビットレートが設定されたとする。このとき、VBVバッファの容量を１．８Mbitとし、閾値bit_rate（０）を３．０Mbpsとすると、遅延時間τmax＝１．８／３．０＝０．６（秒）となる。
【０１５７】
このとき、各GOPにおけるＴＭ５の符号量Ｒの初期値は、bit_rate×Ｎ／pic_rateの式から次のように求められる。なお、GOPの枚数Ｎを１５とし、pic_rate＝３０とする。
【０１５８】
すなわち、最初のGOPにおいては、初期値Ｒは、１．５（＝３．０×１５／３０）Mbitsとなる。次のGOPにおいては、初期値は、０．７５（＝１．５×１５／３０）となるが、その値が、図６のステップＳ７の式（１７）に基づいて、VBVバッファの容量の差分（vbv_size（１）−vbv_size（２））で補正される変更前（前のGOP）のVBVバッファ容量vbv_size（１）は、１．８（＝τmax×bit_rate（１）＝０．６×３．０）とされているのに対して、第２番目のGOPにおけるVBVバッファの容量vbv_size（２）は、０．９（＝τmax×bit_rate（２）＝０．６×１，５）となるので、その差分は０．９（＝１．８−０．９）となり、結局、初期値Ｒは、１．６５（＝０．７５＋（１．８−０．９））Mbitsとなる。
【０１５９】
一方、第３番目のGOPにおいては、初期値は１．５（＝３．０×１５／３０）となるが、VBVバッファの変更前の容量vbv_size（２）は、０．９であるのに対して、このGOPにおける容量vbv_size（３）は１．８となる。従って、初期値Ｒは、０．６（＝１．５＋（０．９−１．８））Mbitsとなる。
【０１６０】
２番目のGOPにおいては、本来エンコードしやすい絵柄であるので、ビットレートを１．５Mbpsと小さい値に設定したにも拘らず、符号量Ｒの初期値は１．６５と大きな値に設定されてしまう。これに対して、第３番目のGOPにおいては、エンコードが難しい絵柄であるから、ビットレートを３．０Mbpsと大きくしたにも拘らず、符号量Ｒの初期値は０．６Mbpsと小さい値に設定されてしまう。すなわち、２番目のGOPの符号量の初期値Ｒが大きくなり、最後のGOPの符号量Ｒの初期値が非常に小さくなるという逆転現象が生じている。
【０１６１】
これは、図２７に示すように、ビットレートbit_rateの値が、閾値bit_rate（０）より小さくなったとき、急激にVBVバッファの容量vbv_sizeの使用範囲を制限するようにしたことに起因する。なお、図２７において、横軸は、ビットレートbit_rateを表し、縦軸は、VBVバッファの容量vbv_sizeを表している。そして、図２７において、影を付して示した範囲は、VBVバッファの使用が制限されている範囲を表している。
【０１６２】
そこで、図２８に示すように、閾値bit_rate（０）より大きい閾値bit_rate（０U）を設定し、さらに閾値bit_rate（０）より小さい閾値bit_rate（０L）を設定し、ビットレートbit_rateの値が、閾値bit_rate（０U）より小さくなったとき、VBVバッファの使用範囲をビットレートが閾値bit_rate（０L）になるまで、徐々に制限し、ビットレートが閾値bit_rate（０L）より小さくなった場合には、図２７に示した場合と同様に、さらに急激にVBVバッファの使用範囲を制限するようにすることができる。この場合、図６のステップＳ２の式（１３）におけるVBVバッファの使用範囲を規定する右辺の第１引数を、ビットレートがbit_rate（０L）以下のとき、τmax×bit_rate（ｊ＋１）とするが、ビットレートがbit_rate（０L）乃至bit_rate（０U）の間の値であるとき、次式に変更するようにすればよい。
【０１６３】
｛（vbv_size（０）−vbv_size（０L））×bit_rate＋vbv_size（０L）×bit_rate（０U）−vbv_size（０）×vbv_size（０L）｝    ／｛bit_rate（０U）−bit_rate（０L）｝      ・・・（３６）
【０１６４】
なお、vbv_size（０L）は、次式で表される。
【０１６５】
vbv_size（０L）＝vbv_size（０）×bit_rate（０L）／bit_rate（０）・・・（３７）
【０１６６】
なお、フィードフォワード型のビットレートコントロールにおいても、図１９のステップＳ３２における演算において、同様にVBVバッファの容量が演算される。
【０１６７】
図１８のイントラＡＣ演算回路４１において、イントラＡＣを演算するようにしたが、イントラＡＣに代えて、フラットネスを演算するようにしてもよい。フラットネスとは、画像の空間的な平坦さを表すデータである。この場合、８×８画素のDCTブロックが２画素×２画素の小ブロックに分割される。そして、各小ブロック内における対角線上に位置する画素データ（画素値）の差分が算出され、その差分の絶対値のうち小さい方が選択される。選択された差分値が、さらに所定の閾値と比較され、差分値が閾値より小さい小ブロックの総数が、フラットネスとしてピクチャ毎に求められる。
【０１６８】
なお、フラットネスの値は、画像の図柄が空間的に複雑であるほど小さくなり、平坦であれば大きくなる。このフラットネスは、符号化難易度Ｄjと、強い負の相関関係を有する。従って、圧縮符号化前にＩピクチャとなるピクチャの符号化難易度Ｄjをフラットネスから求め、このフラットネスからＩピクチャに対する目標符号量Ｔ（ｊ）を求めることができる。
【０１６９】
以上のように、固定ビットレートに用いるレートコントロール方法を用いながら、GOPの途中でビットレートが変更できるようにしたので、絵柄の符号が難易度の変化に速やかに対応して、ビットレートを変更することができる。その結果、各プログラムのGOPの位相が同期していないような場合においても、伝送容量を無駄なく有効に使用することができ、全体として画質の向上を図ることができる。
【０１７０】
また、固定ビットレートエンコードで使用されるレートコントロール方法を使用することにより、VBVバッファ（またはデコーダのバッファ）のアンダーフローまたはオーバーフローをおこさないようなレートコントロールが統計多重の場合にまで拡張することができる。
【０１７１】
本発明は、必ずしも統計多重に限らず、例えば、ハードディスクのような記録メディアに蓄積保存するためにデータをエンコードするような場合、固定レート符号化のレートコントロール方法を用いながら、シームレスにビットレートを変更するのに適用することができ、絵柄に応じてビットレートを変更し、結果的に所定の画質を実現する蓄積メディアの容量を節約することが可能となる。
【０１７２】
上述の実施の形態においては、ＴＭ５のアルゴリズムによりGOPを単位にして目標符号量を計算する場合について述べたが、本発明はこれに限らず、符号化処理するピクチャから所定数のピクチャを単位にして目標伝送レートによる符号量を計算して目標符号量を算出する場合等においても、広く適用することができる。
【０１７３】
また上述の実施の形態においては、残り符号量Ｒを補正することにより、ピクチャ単位でビットレートを変更する場合について述べたが、本発明はこれに限らず、GOP単位でビットレートを変更する場合等にも広く適用することができる。
【０１７４】
さらに上述の実施の形態においては、MPEGにより各プログラムを符号化処理して伝送する場合について述べたが、本発明はこれに限らず、種々の符号化方式により種々のプログラムを符号化処理して伝送する場合に広く適用することができる。
【０１７５】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものとする。
【０１７６】
また、上記したような処理を行うコンピュータプログラムをユーザに提供する提供媒体としては、磁気ディスク、CD-ROM、固体メモリなどの記録媒体の他、ネットワーク、衛星などの通信媒体を利用することができる。
【０１７９】
【発明の効果】
本発明によれば、GOPの途中において、指定ビットレートが第１のビットレートから第２のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第２のビットレートで各ピクチャを符号化していたときの軌跡になるように未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて符号化対象ピクチャに対して割り当てられる目標ビット量を演算するようにした。
【０１９１】
従って、画像データの統計多重時に、GOPの位相に不一致があったとしても、伝送効率の低下を抑制することができる。
【図面の簡単な説明】
【図１】固定レートによる多重化を説明する図である。
【図２】統計多重による多重化を説明する図である。
【図３】統計多重におけるGOPの位相があっていない場合における符号割当レートの変化を説明する図である。
【図４】本発明を適用した画像多重化システムの構成例を示すブロック図である。
【図５】図４の画像符号化装置２−１の構成例を示すブロック図である。
【図６】図５の画像符号化装置２−１の動作を説明するフローチャートである。
【図７】図５の画像符号化装置２−１の動作を説明するフローチャートである。
【図８】  VBVバッファの容量の変化を説明する図である。
【図９】  VBVバッファの容量の変化を説明する図である。
【図１０】  VBVバッファの容量の変化を説明する図である。
【図１１】  VBVバッファの容量の変化を説明する図である。
【図１２】  VBVバッファの容量の変化を説明する図である。
【図１３】  VBVバッファの容量の変化を説明する図である。
【図１４】符号量Ｒの変化を説明する図である。
【図１５】  GOPの途中でビットレートを変更した場合の符号量Ｒの変化を説明する図である。
【図１６】図７のステップＳ１１の値ｅの機能を説明する図である。
【図１７】本発明を適用した画像多重化システムの他の構成例を示すブロック図である。
【図１８】図１７の画像符号化装置２−１の構成例を示すブロック図である。
【図１９】図１８の画像符号化装置２−１の動作を説明するフローチャートである。
【図２０】図１８の画像符号化装置２−１の動作を説明するフローチャートである。
【図２１】符号量Ｒ’の変化を説明する図である。
【図２２】符号量Ｇの変化を説明する図である。
【図２３】  GOPの途中においてビットレートを変更した場合における符号量Ｒ’の変化を説明する図である。
【図２４】  GOPの途中においてビットレートを変更した場合における符号量Ｇの変化を説明する図である。
【図２５】図２０のステップＳ４６，Ｓ４７における値ｅの機能を説明する図である。
【図２６】符号量Ｒの逆転現象を説明する図である。
【図２７】符号量Ｒの逆転現象の原因を説明する図である。
【図２８】符号量Ｒの逆転現象を抑制する原理を説明する図である。
【符号の説明】
１  画像多重化システム，  ２−１乃至２−ｎ  画像符号化装置，  ３  コントローラ，  ４  多重化装置，  １１  画像並べ変え回路，  １２  走査変換マクロブロック化回路，  １３  減算回路，  １４  DCT回路，  １５  量子化回路，  １６  可変長符号化回路，  １７  バッファメモリ，  １８  逆量子化回路，  １９  逆DCT回路，  ２０  加算回路，  ２１  動き検出回路，  ２２  動き補償回路，  ２３  レートコントローラ，  ２４  コントローラ，  ３１  複雑差計算回路，  ３２  目標ビット量設定回路，  ３３  量子化スケールコード決定回路
【図１】
0004035747.tif 000005
【図２】
0004035747.tif 000006
【図３】
0004035747.tif 000007
【図４】
0004035747.tif 000008
【図５】
0004035747.tif 000009
【図６】
0004035747.tif 000010
【図７】
0004035747.tif 000011
【図８】
0004035747.tif 000012
【図９】
0004035747.tif 000013
【図１０】
0004035747.tif 000014
【図１１】
0004035747.tif 000015
【図１２】
0004035747.tif 000016
【図１３】
0004035747.tif 000017
【図１４】
0004035747.tif 000018
【図１５】
0004035747.tif 000019
【図１６】
0004035747.tif 000020
【図１７】
0004035747.tif 000021
【図１８】
0004035747.tif 000022
【図１９】
0004035747.tif 000023
【図２０】
0004035747.tif 000024
【図２１】
0004035747.tif 000025
【図２２】
0004035747.tif 000026
【図２３】
0004035747.tif 000027
【図２４】
0004035747.tif 000028
【図２５】
0004035747.tif 000029
【図２６】
0004035747.tif 000030
【図２７】
0004035747.tif 000031
【図２８】
0004035747.tif 000032