(57)【特許請求の範囲】
【請求項１】
画像データを圧縮する画像圧縮装置において、
画像データを入力する入力手段と、
前記入力手段により入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算手段と、
同じピクチャタイプの直前のフレームの前記Qスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値から前記Qスケール値の下限値を選択し、演算結果とする第２の演算手段と、
前記第１の演算手段により演算されたQスケール値と、前記第２の演算手段により演算された下限値とを比較する比較手段と、
前記比較手段の比較結果に基づいて、前記下限値よりも前記Qスケール値が小さい場合、前記Qスケール値を前記下限値に制限する制限手段と
を含むことを特徴とする画像圧縮装置。
【請求項２】
画像データを圧縮する画像圧縮装置の画像圧縮方法において、
画像データを入力する入力ステップと、
前記入力ステップの処理で入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算ステップと、
同じピクチャタイプの直前のフレームの前記Qスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値から前記Qスケール値の下限値を選択し、演算結果とする第２の演算ステップと、
前記第１の演算ステップの処理で演算されたQスケール値と、前記第２の演算ステップの処理で演算された下限値とを比較する比較ステップと、
前記比較ステップの処理の比較結果に基づいて、前記下限値よりも前記Qスケール値が小さい場合、前記Qスケール値を前記下限値に制限する制限ステップと
を含むことを特徴とする画像圧縮方法。
【請求項３】
画像データを圧縮する画像圧縮装置を制御するコンピュータに、
画像データを入力する入力ステップと、
前記入力ステップの処理で入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算ステップと、
同じピクチャタイプの直前のフレームの前記Qスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値から前記Qスケール値の下限値を選択し、演算結果とする第２の演算ステップと、
前記第１の演算ステップの処理で演算されたQスケール値と、前記第２の演算ステップの処理で演算された下限値とを比較する比較ステップと、
前記比較ステップの処理の比較結果に基づいて、前記下限値よりも前記Qスケール値が小さい場合、前記Qスケール値を前記下限値に制限する制限ステップと
を含む処理を実行させるプログラムが格納されているプログラム格納媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像圧縮装置および方法、並びにプログラム格納媒体に関し、特に、ブロック毎に設定されるQ(Quantiser)スケール値に下限値を設定し、ブロック毎の極端な情報量の偏りが生じないようにマクロブロックの情報量を制御するようにした画像圧縮装置および方法、並びにプログラム格納媒体に関する。
【０００２】
【従来の技術】
MPEG(Moving Picture Experts Group)2に代表される画像圧縮技術は、放送やAV(Audio Visual)機器などに用いられる符号化方式であり、広く一般に用いられるようになっている。
【０００３】
図１は、従来の画像圧縮装置の構成例を示している。画像圧縮装置は、画像入力装置１、演算器２、DCT(Discrete Cosine Transform)器４、量子化器５、可変長符号化器６、逆量子化器７、逆DCT器８、演算器９，フレームメモリ１１、動き検出器１２、動き補償器１３、バッファ１４、および情報制御器１５を有している。
【０００４】
画像入力装置１は、画像データを取り込む。画像入力装置１により取り込まれた画像データが、動き補償を必要としないIピクチャである場合、スイッチ３は端子３ｂに切り替えられ、その画像データは、DCT器４に出力される。画像入力装置１により取り込まれた画像データが、動き補償を必要とするPピクチャ、または、Bピクチャである場合、スイッチ３は端子３ａに切り替えられ、取り込まれた画像データは演算器２に出力されると共に、動き検出器１２に出力される。
【０００５】
演算器２は、画像入力装置１から入力された画像データ（動き補償を必要とするPピクチャ、または、Bピクチャである）に動き補償器１２から出力される補償画像を差し引き、スイッチ３を介して、DCT器４に出力する。
【０００６】
DCT器４は、入力された画像データをDCT変換し、画像データを周波数毎に並び替え、視覚特性上重要性の高い順に置き換えて、量子化器５に出力する。
【０００７】
量子化器５は、DCT器４から入力されたDCT変換されたデータ（DCT係数）を、情報制御器１５から入力される同じピクチャで直前のフレームのQスケール値と量子化マトリクスの積で割り算することにより量子化した後、可変長符号化器６に出力する。
【０００８】
可変長符号化器６は、量子化されたデータを可変長符号に変換し、バッファ１４に出力する。
【０００９】
バッファ１４は、可変長符号化器６から入力された可変長符号化されたビットストリームを一旦記憶した後、後段の装置へ出力すると共に、記憶するデータ量（符号量）に対応する信号を情報制御器１５に出力する。情報制御器１５は、入力された符号量からQスケール値を求め、量子化器５および逆量子化器７に出力する。
【００１０】
逆量子化器７は、情報制御器１５から入力されるQスケール値に基づいて、量子化器５から入力される量子化されたデータを逆量子化し、逆DCT器８に出力する。逆DCT器８は、入力された逆量子化されたデータを逆DCT変換し、演算器９に出力する。
【００１１】
入力された画像が、Iピクチャの場合、スイッチ１０は、端子１０ｂに接続されるので、演算器９は、入力された画像データをそのまま、フレームメモリ１１および動き検出器１２に出力する。また、入力された画像データのピクチャの種類がPピクチャまたはBピクチャの場合、スイッチ１０が、端子１０ａに接続されるので、演算器９は、逆DCT器８から出力される画像データに、動き補償器１３から出力される補償画像を加算し、フレームメモリ１１および動き検出器１２に出力する。
【００１２】
フレームメモリ１１は、入力された画像データを格納し、必要に応じて、動き検出器１２および動き補償器１３に出力する。
【００１３】
動き検出器１２は、画像入力装置１から入力された画像データと、フレームメモリ１１に格納されている画像データから動きベクトルを検出し、動き補償器１３に出力する。動き補償器１３は、動き検出器１２から入力された動きベクトルに基づいて、フレームメモリ１１から読み出された画像に対して動き補償を施して動き補償画像を生成し、演算器２および演算器９（PピクチャまたはBピクチャの場合）に出力する。
【００１４】
次に画像圧縮装置の動作について説明する。最初に、画像入力装置１に入力された画像データが、Iピクチャである場合について説明する。このとき、スイッチ３は、端子３ｂに切り替えられ、画像入力装置１から出力された画像データは、スイッチ３の端子３ｂを介して、DCT器４に出力される。DCT器４に出力された画像データは、DCT変換され、量子化器５に出力される。
【００１５】
量子化器５は、入力されたDCT変換された画像データを、情報制御器１５からのQスケール値に基づいて量子化し、可変長符号化器６および逆量子化器７に出力する。
【００１６】
逆量子化器７に入力された量子化された画像データは、情報制御器１５からのQスケール値に基づいて逆量子化され、逆DCT器８に出力される。逆DCT器８は、逆量子化された画像データを逆DCT変換し、演算器９に出力する。演算器９に出力された逆DCT変換された画像データは、スイッチ１０が端子１０ｂに切り替えられているので、そのままフレームメモリ１１に出力され、格納される。
【００１７】
動き検出器１２は、フレームメモリ１１から入力された画像データと、画像入力装置１から入力された画像データとから動きベクトルを生成し、動き補償器１３に出力する。
【００１８】
動き補償器１３は、入力された動きベクトルに基づいてフレームメモリ１１からの画像データに動き補償を施し、演算器２に出力する。
【００１９】
可変長符号化器６に入力された量子化された画像データは、可変長符号に変換され、バッファ１４に出力され、格納される。バッファ１４に格納されたデータは、適宜読み出され、懇談に出力される。
【００２０】
情報制御器１５はバッファ１４に格納されている符号量に基づいてQスケール値を決定する。
【００２１】
次に、画像圧縮装置の画像入力装置１に入力された画像データが、Pピクチャ、または、Bピクチャの場合、スイッチ３が端子３ａに切り替えられる。画像入力装置１から出力された画像データは、動き検出器１２に出力されると共に、演算器２に入力される。
【００２２】
演算器２は、画像入力装置１が出力する画像データから動き補償器１３から出力された動き補償画像を差し引き、DCT器４に出力する。以下、逆DCT器８までは、上述のIピクチャの場合と同様に処理される。
【００２３】
Pピクチャの場合、スイッチ１０は、端子１０ａに切り替えられる。逆DCT変換された画像データは、演算器９において、動き補償器１３から出力された動き補償画像が加算され、元の画像に復元され、フレームメモリ１１に出力される。それ以降の処理は、Iピクチャと同様である。
【００２４】
次に、上述の量子化器５の量子化処理について説明する。MPEGの規格においては、量子化については、逆量子化についてのみ、詳細な規定がなされているため、量子化を行う際には、逆量子化の規定に含まれるいくつかのパラメータを変化させ、その自由度の範囲で量子化特性を制御することにより、高画質化や視覚特性を反映した符号化を行うことになる。
【００２５】
量子化マトリクスは、ブロック内DCT係数値間での相対的な量子化精度を設定するために設けられたマトリクスである。このマトリクスを用いることにより、たとえば、視覚的に劣化の目立ち難い高域成分のDCT係数値を、視覚的に劣化の目立ちやすい低域DCT係数値に比較して、粗く量子化するといった処理が可能となり、量子化特性を視覚特性に合致することができる。また、量子化マトリクスは、ピクチャ単位での設定が可能である。
【００２６】
図２は、量子化マトリクスの例を示している。量子化マトリクスは、ユーザがピクチャ単位で設定可能であるが、設定がなされていない場合、図２に示すこのデフォルト値が用いられる。図２（Ａ）は、イントラマクロブロックの量子化マトリクスであり、図２（Ｂ）は、ノンイントラマクロブロックの量子化マトリクスである。また、テストモデル５(TM5)においては、図２（Ｃ）のノンイントラマブロックの量子化マトリクスが使用される。
【００２７】
Qスケール値は、量子化特性のスケーリングを行うことにより発生符号量を制御するためのパラメータであり、ピクチャ単位で設定されるQスケールタイプと、マクロブロック単位で設定される量子化スケールコードにより決定される。
【００２８】
図３にQスケールタイプ別のQスケール値とQスケールコードの関係を示す。Qスケールタイプが０であるときは、線形量子化となり、Qスケールコード（１乃至３１）の2倍の値がQスケール値（２乃至６２）となる。Qスケールタイプが１であるときは、非線型量子化となり、Qスケールコード（１乃至３１）は、小さい量子化スケールコードでは、より細かく、大きなスケールコードでは、より粗くスケーリングすることにより、Qスケールコードタイプが０の場合と比べて、広い範囲のQスケール値（１乃至１１２）に変換される。
【００２９】
このQスケール値は、以下に示す３つの段階を経て求められる。
【００３０】
第１段階では、フレーム毎のターゲットビットレートが設定される。すなわち、GOP(Group of Picture)の各ピクチャに対する割り当てビット量が、割り当て対象ピクチャを含めGOP内でまだ符号化されていないピクチャに対して割り当てられるビット量Rを基準として配分される。この配分はGOP内の符号化ピクチャ順に繰り返される。
【００３１】
次に、この配分について、具体的に説明する。まず、各ピクチャを符号化する際に用いる平均化Qスケールコードと発生符号量との積は、画面が変化しない限り、ピクチャタイプ毎に一定であると仮定する。
【００３２】
そこで、各ピクチャを符号化した後、各ピクチャタイプ毎に、画面のグローバルコンプレキシティを示すパラメータXi,Xp,Xbを式（１）乃至式（３）により定義する。このパラメータXi,Xp,Xbにより次のピクチャを符号化する際のQスケールコードと発生符号量の関係を推定することができる。
【００３３】
Xi＝SiQi・・・（１）
Xp＝SpQp・・・（２）
Xb＝SbQb・・・（３）
ここで、Si, Sp, Sbは、それぞれ、Iピクチャ、Pピクチャ、または、Bピクチャのピクチャ符号化時の発生符号ビット量を表し、Qi, Qp, Qbは、それぞれ、Iピクチャ、Pピクチャ、または、Bピクチャのピクチャ符号化時の平均Qスケールコードを表している。
【００３４】
また、Iピクチャの量子化スケールコードを基準としたPピクチャおよびBピクチャのQスケールコードの比率を、それぞれ、Kp, Kbとして、式（４）と式（５）により定義する。
【００３５】
Kp＝Qp／Qi・・・（４）
Kb＝Qb／Qi・・・（５）
上記の仮定より、GOP中のそれぞれ、Iピクチャ、Pピクチャ、または、Bピクチャの各ピクチャに対する割り当てビット量Ti, Tp, Tbは、以下の式（６）乃至式（８）で示される。
【００３６】
Ti＝max{R／(1＋NpXp／XiKp＋NbXb／XiKb), bit rate/(8×picture rate)}・・・（６）
Tp＝max{R／(Np＋NbKpXb／XbKp), bit rate/(8×picture rate)}・・・（７）
Tb＝max{R／(Nb＋NpKbXp／XpKb), bit rate/(8×picture rate)}・・・（８）
ここで、Np, Nbは、GOP内でまだ、符号化されていないPピクチャおよびBピクチャの数を表している。すなわち、まず、GOP内の未符号化ピクチャのうち、割り当て対象となるピクチャとピクチャタイプの異なるピクチャについては、画質最適化条件のもとで、そのピクチャの発生する符号量が、割り当て対象ピクチャの発生符号量の何倍となるかが推定される。
【００３７】
次に、未符号化ピクチャ全体の発生する推定符号量が、割り当て対象ピクチャの何枚分の符号量に相当するかが求められる。
【００３８】
例えば、式（６）の第１引数の分母の第２項のNpXp／XiKpは、GOP内のNp枚の未符号化PピクチャがIピクチャ何枚分の符号量に相当するかを表すものであり、NpにPピクチャ発生符号化ビット数のIピクチャ発生符号化ビット数に対する割合Sp／Siを乗じ、Sp，Siを式（１）、式（２）、式（４）、および式（５）を用いてXi,Xp,Kpで表すことにより得られる。
【００３９】
第２段階として、第１段階で求められた各ピクチャに対する割り当てビット量Ti, Tp, Tbと、実際の発生符号量を一致させるため、各ピクチャタイプ毎に独立に設定した３種類のバッファの容量を基準に、Qスケールコードが、マクロブロック単位のフィードバック制御で求められる。
【００４０】
そこで、j番目のマクロブロック符号化に対応する仮想バッファの占有率を以下の式（９）乃至式（１１）に示す。
【００４１】
dji＝d0i＋Bj-1−Ti×（j−1）／MB cnt・・・（９）
djp＝d0p＋Bj-1−Tp×（j−1）／MB cnt・・・（１０）
djb＝d0b＋Bj-1−Tb×（j−1）／MB cnt・・・（１１）
d0i, d0p, d0bは、各仮想バッファの初期占有率、Bjは、ピクチャの先頭からj番目のマクロブロックまでの発生ビット量、MB cntは、１ピクチャ内のマクロブロック数である。
【００４２】
各ピクチャ符号化終了時の仮想バッファ占有量dMB cnti, dMB cntp, dMB cntbは、それぞれ同一のピクチャタイプで、次のピクチャタイプに対する仮想バッファ占有率の初期値d0i, d0p, d0bとして用いられる。
【００４３】
次に、j番目のマクロブロックに対するQスケールコードは、以下の式（１２）として定義される。
【００４４】
Qj＝di×31／r・・・（１２）
ここで、rは、リアクションパラメータと呼ばれるフィードバックループの応答速度を制御するパラメータであり、式（１３）で与えられる。
【００４５】
r＝2×bit rate/picture rate・・・（１３）
尚、シーケンスの最初における仮想バッファ初期値は、以下の式（１４）乃至式（１６）で表される。
【００４６】
d0i＝10×r／31・・・（１４）
d0p＝Kp d0i・・・（１５）
d0b＝Kb d0i・・・（１６）
第３段階として、第２段階で求められたQスケールコード（式（１２）より）が、視覚的に劣化の目立ちやすい平坦部でより細かく量子化し、劣化の比較的目立ち難い絵柄の複雑な部分でより粗く量子化するように、各ブロック毎のアクティビティによって変化される。
【００４７】
アクティビティは、予測誤差ではなく原画の輝度信号画素値を用い、フレームDCT符号化モードにおける４個のブロックとフィールドDCT符号化モードにおける４個のブロックとの合計８個のブロックの画素値を用いて、以下の式（１７）乃至式（１９）で与えられる。
【００４８】
【数１】
0004110345.tif 000002
【００４９】
【数２】
0004110345.tif 000003
【００５０】
【数３】
0004110345.tif 000004
【００５１】
ここで、Pkは、原画の輝度信号ブロック内画素値である。式（１７）において、最小値を採るのは、マクロブロック内の一部だけでも平坦部分がある場合には、量子化を細かくするためである。
【００５２】
さらに、以下の式（２０）によって、その値が、0.5乃至2の範囲をとる正規化アクティビティNactjが求められる。
【００５３】
Nactj＝（2×actj＋avg act）／（actj＋2×avg act）・・・（２０）
ここで、avg actは、直前に符号化したピクチャでのactjの平均値である。
【００５４】
そして、視覚特性を考慮したQスケールコードmquantjは、第２段階で得られたQスケールコードQjに基づいて以下の式（２１）で求められる。
【００５５】
mquantj＝Qj× Nactj・・・（２１）
【００５６】
【発明が解決しようとする課題】
しかしながら、上述のように求められたQスケール値は、MPEG2のフォーマットで許されている範囲に収まっているか否かの判定がなされ、その範囲が制限されるのみである。そのため、このままでは、ブロックの特徴量次第では、本来与えられたビットレートと、入力画像の兼ね合いに比べると、きわめて小さなQスケール値が求まり、過大な情報を割り当てられ、さらに過大に割り当てられるブロックが存在するため、画像の他の領域への配分が不足するといった場合があるという課題があった。
【００５７】
本発明はこのような状況に鑑みてなされたものであり、上記のように求められるQスケール値に下限値を設定することにより、Qスケール値が小さくなりすぎた一部のマクロブロックに過大な情報が割り振られないようにし、他の領域に有効に情報量を割り当てることができるようにさせるものである。
【００５８】
【課題を解決するための手段】
請求項１に記載の画像圧縮装置は、画像データを入力する入力手段と、入力手段により入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算手段と、同じピクチャタイプの直前のフレームのQスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値からQスケール値の下限値を選択し、演算結果とする第２の演算手段と、第１の演算手段により演算されたQスケール値と、第２の演算手段により演算された下限値とを比較する比較手段と、比較手段の比較結果に基づいて、下限値よりもQスケール値が小さい場合、Qスケール値を下限値に制限する制限手段とを含むことを特徴とする。
【００５９】
請求項２に記載の画像圧縮方法は、画像データを入力する入力ステップと、入力ステップの処理で入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算ステップと、同じピクチャタイプの直前のフレームのQスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値からQスケール値の下限値を選択し、演算結果とする第２の演算ステップと、第１の演算ステップの処理で演算されたQスケール値と、第２の演算ステップの処理で演算された下限値とを比較する比較ステップと、比較ステップの処理の比較結果に基づいて、下限値よりもQスケール値が小さい場合、Qスケール値を下限値に制限する制限ステップとを含むことを特徴とする。
【００６０】
請求項３に記載の媒体は、画像データを入力する入力ステップと、入力ステップの処理で入力された画像データのマクロブロック単位のQスケール値を演算する第１の演算ステップと、同じピクチャタイプの直前のフレームのQスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値からQスケール値の下限値を選択し、演算結果とする第２の演算ステップと、第１の演算ステップの処理で演算されたQスケール値と、第２の演算ステップの処理で演算された下限値とを比較する比較ステップと、比較ステップの処理の比較結果に基づいて、下限値よりもQスケール値が小さい場合、Qスケール値を下限値に制限する制限ステップとを含むことを特徴とするプログラムを実行させる。
【００６１】
請求項１に記載の画像圧縮装置、請求項２に記載の画像圧縮方法、および請求項３に記載の媒体においては、画像データが入力され、入力された画像データのマクロブロック単位のQスケール値が演算され、同じピクチャタイプの直前のフレームのQスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値が演算され、演算された結果の最小値、および最大値からQスケール値の下限値が選択されて、演算結果とされ、演算されたQスケール値と、演算された下限値とが比較され、比較結果に基づいて、下限値よりもQスケール値が小さい場合、Qスケール値が下限値に制限される。
【００６２】
【発明の実施の形態】
図４は、本発明を適用した画像圧縮装置の構成例を示したブロック図である。その基本的な構成は、図１に示した場合と同様であるが、この例においては、入力装置２１、CPU２２、フレームコンプレキシティ演算装置２３、アクティビティ演算装置２４、および残差演算装置２５が設けられている。
【００６３】
入力装置２１は、ボタンやタッチパネルなどから構成され、Qスケール値の下限値の指定方法を決定するとき、ユーザにより操作される。すなわち、Qスケール値の演算における下限値を設定するために、バッファ１４から入力される直前のQスケール値、フレームコンプレキシティ演算装置２３から入力されるフレームコンプレキシティC、アクティビティ演算装置２４から入力されるアクティビティA、または、残差演算装置２５から入力される残差成分Bdのいずれを利用するかが決定される。尚、Qスケール値の下限値の指定方法の詳細については後述する。
【００６４】
CPU２２は、入力装置２１から入力された信号に基づいて、スイッチ２３ａ乃至２５ａを切り替える。また、CPU２２は、この入力装置２１からの信号に基づいて、情報制御器１５にQスケール値の下限値の設定に、どのパラメータを利用するかを指令する。
【００６５】
フレームコンプレキシティ演算装置２３は、画像入力装置１からスイッチ２３ａを介して入力された画像データから、フレームコンプレキシティ（フレームの高域成分を示すパラメータ）Cを演算し、情報制御器１５に出力する。フレームコンプレキシティCは、i番目の画素の輝度レベルをYi、フレームの総画素数をNとしたとき、具体的には以下の式（２２）を演算することによって求められる。
【００６６】
【数４】
0004110345.tif 000005
【００６７】
アクティビティ演算装置２４には、逆DCT器８から出力され、演算器９によって復号処理された画像データが、スイッチ２４ａを介して、入力される。アクティビティ演算装置２４は、入力された画像データのアクティビティ（ブロック単位の高域成分を示すパラメータ）を演算する。具体的には、まず、以下の式（２３）により、入力画像aijから低域成分画像fmnが生成される。
【数５】
0004110345.tif 000006
続いて、アクティビティが以下の式（２４）より演算される。
【００６８】
【数６】
0004110345.tif 000007
…（２４）
【００６９】
式（２３）と式（２４）からアクティビティAは、以下の式（２５）のように演算される。
【００７０】
【数７】
0004110345.tif 000008
…（２５）
【００７１】
残差演算装置２５は、動き検出器１２と動き補償器１３で動き補償処理が実行される際、同時に出力される残差成分Bdを演算し、情報制御器１５に出力する。
【００７２】
情報制御器１５は、CPU２２から入力される信号に対応して、バッファ１４から入力される直前のQスケール値、フレームコンプレキシティ演算装置２３から入力されるフレームコンプレキシティC、アクティビティ演算装置２４から入力されるアクティビティA、または、残差演算装置２５から入力される残差成分Bdのいずれかを利用して、下限値を設定する。さらに、情報制御器１５は、演算した視覚特性を考慮したQスケール値と、この下限値とを比較し、演算結果が、下限値より小さい場合は、これを下限値に置き換え、Qスケール値を決定し、量子化器５および逆量子化器７に出力する。
【００７３】
CPU２２の指令に基づいて、情報制御器１５が、バッファ１４から入力される直前のQスケール値に対応して、Qスケール値の下限値を制限する場合、バッファ１４に記憶される直前のフレームの平均Qスケール値のAvgQに対応して、Qスケール値の下限値Thは、定数Kを用いて以下の式（２６）のように定義される。
【００７４】
Th＝AvgQ／K・・・（２６）
式（２６）のように下限値Thを設定することにより、直前のフレームでのQスケール値と比較し、Qスケール値が極端に小さな値となることを防止することができる。
【００７５】
CPU２２の指令に基づいて、情報制御器１５が、フレームコンプレキシティ演算装置２３から入力されるフレームコンプレキシティCに対応して、Qスケール値の下限値Thを制限する場合、下限値Thは、定数K1を用いて以下の式（２７）により定義される。
【００７６】
Th＝K1×C/bit rate・・・（２７）
所定のK1を設定することによりフレームコンプレキシティ(C)に対応した下限値Thを設定することにより、Qスケール値が極端に小さな値となることを防止することができる。
【００７７】
次に、CPU２２の指令に基づいて、情報制御器１５が、アクティビティ演算装置２４から入力されるアクティビティAに対応して、Qスケール値の下限値を制限する場合、下限値Thは、定数K2を用いて以下の式（２８）により定義される。
【００７８】
Th＝K2×A/bit rate・・・（２８）
式（２８）により所定のK2を設定することによりアクティビティAに対応した下限値Thを設定することにより、Qスケール値が極端に小さな値となることを防止することができる。
【００７９】
さらに、CPU２２の指令に基づいて、情報制御器１５が、残差演算装置２５から入力される残差成分Bdに基づいて、Qスケール値の下限値を制限する場合、下限値Thは、定数K3を用いて以下の式（２９）のように定義される。
【００８０】
Th＝K3×Bd/bit rate・・・（２９）
式（２９）に所定のK3を設定することにより残差成分に対応した下限値Thを設定することにより、Qスケール値が極端に小さな値となることを防止することができる。
【００８１】
次に、図５のフローチャートを参照して、Qスケール値を、直前のフレームのQスケール値から得られる値を下限値として設定する場合（式（２６）をQスケール値の下限値として設定する場合）の情報制御器１５の処理について説明する。
【００８２】
ユーザが入力装置２１を操作し、Qスケール値の下限値を直前のフレームのQスケール値に対応した値で制御することを指令すると、CPU２２は、これに基づいて情報制御器１５に対して指令を出すと共に、スイッチ２３ａ，２４ａ，２５ａをオフにする。そして、画像データが、画像入力装置１を介してDCT器４入力され、DCT変換された後、量子化器５に入力されると処理が開始される。
【００８３】
ステップＳ１において、情報制御器１５は、目標とする記録レートを決定する。すなわち、情報制御器１５は、式（１）乃至式（３）に示されるXi,Xp,Xbの初期値を設定する。この初期値は、情報制御器１５に内蔵されているメモリに予め記憶されている。
【００８４】
ステップＳ２において、情報制御器１５は、ステップＳ１の処理で決定された記録レートに基づいて、次のGOP単位の目標情報量を決定する。すなわち、情報制御器１５は、ステップＳ１の処理で決定されたXi,Xp,Xbの初期値と直前の平均Qスケール値（Qi, Qp, Qb）から、次の目標情報量であるSi, Sp, Sbを設定する。
【００８５】
ステップＳ３において、情報制御器１５は、残りのビット量などから次のフレーム単位での目標情報量を設定する。すなわち、情報制御器１５は、式（６）乃至式（８）から、次のフレームでの目標情報量を演算し、割り当てビット量Ti, Tp, Tbを設定する。
【００８６】
ステップＳ４において、情報制御器１５は、発生情報量およびマクロブロック毎の特徴量を取得する。すなわち、情報制御器１５は、式（９）乃至式（１１）を演算し、d0i, d0p, d0bを求めて発生情報量を得ると共に、式（１２）を演算し、Qスケールコードを演算する。また、情報制御器１５は、マクロブロックの特徴量として式（１７）乃至式（１９）を演算し、さらに、式（２０）の正規化アクティビティを求める。
【００８７】
ステップＳ５において、情報制御器１５は、次の１ブロック単位のQスケール値（mquantj）を演算する。すなわち、式（２１）を演算し、最終的なQスケール値を求める。
【００８８】
ステップＳ６において、情報制御器１５は、ステップＳ５の処理で得られたmquantjが、下限値Thとして式（２６）で定義された値以上であるか否かを判定する。mquantjが下限値Th以上の値の場合、ステップＳ７の処理に進み、情報制御器１５は、求められたQスケール値を量子化器５に出力し、量子化させ、可変長符号化器６で、可変長符号化させる。
【００８９】
ステップＳ６において、情報制御器１５は、Qスケール値が下限値Th以上ではないと判定した場合、ステップＳ１０において、演算されたQスケール値を、下限値として設定された値で置き換え、ステップＳ７の処理に進む。
【００９０】
ステップＳ８において、情報制御器１５は、フレームの最後か否かを判定する。フレームの最後ではない場合、ステップＳ４の処理に戻り、それ以降の処理が繰り返される。また、フレームの最後であると判定された場合、ステップＳ９の処理に進む。ステップＳ９において、情報制御器１５は、この処理がGOPの最後か否かを判定する。GOPの最後ではないとき、ステップＳ３に戻り、それ以降の処理が繰り返される。GOPの最後であるとき、ステップＳ２の処理に戻り、それ以降の処理が繰り返される。
【００９１】
以上Qスケール値の下限値を、直前のフレームでのQスケール値を用いて制御する場合について説明したが、ユーザが、入力装置２１を操作し、フレームコンプレキシティ演算装置２３から入力されるフレームコンプレキシティC、アクティビティ演算装置２４から入力されるアクティビティA、または、残差演算装置２５から入力されるBdを選択した場合、CPU２２がそれぞれの選択に応じてスイッチ２３ａ乃至２５ａを切り替えて、それぞれの下限値Thを情報制御器１５に出力し、それに基づいて、図５のステップＳ６の処理が実行される。
【００９２】
以上においては、Qスケール値の下限値の設定をユーザによって選択的に実行してきたが、それぞれの下限値Thを演算し、下限値としてもっとも大きな値、または、もっとも小さな値を選択し、下限値を設定することにより、圧縮率優先の圧縮とするか画質優先の圧縮とするかを選択できるようにしてもよい。
【００９３】
Qスケール値の下限値の制御以外の動作は、図１の場合と基本的に同様であるので、ここでは省略する。
【００９４】
次に、図６を参照して、上述した一連の処理を実行するプログラムをコンピュータにインストールし、コンピュータによって実行可能な状態とするために用いられる媒体について説明する。
【００９５】
プログラムは、図６（Ａ）に示すように、画像圧縮装置３１に内蔵されている記録媒体としてのハードディスク３２あるいはメモリ３３に予めインストールした状態でユーザに提供することができる。
【００９６】
あるいはまた、プログラムは、図６（Ｂ）に示すように、フロッピーディスク４１、CD-ROM(Compact Disk-Read Only Memory)４２、MO(Magneto-Optical)ディスク４３、DVD(Digital Versatile Disk)４４、磁気ディスク４５、半導体メモリ４６などの記録媒体に、一時的あるいは永続的に格納し、パッケージソフトウェアとして提供することができる。
【００９７】
さらに、プログラムは、図６（Ｃ）に示すように、ダウンロードサイト５１から、無線で衛星５２を介して、画像圧縮装置５３に転送したり、ローカルエリアネットワーク、インターネットといったネットワーク６１を介して、有線または無線で画像圧縮装置５３に転送し、画像圧縮装置５３において、内蔵するハードディスクなどにダウンロードさせるようにすることができる。
【００９８】
本明細書における媒体とは、これら全ての媒体を含む広義の概念を意味するものである。
【００９９】
また、本明細書において、媒体により提供されるプログラムを記述するステップは、経時的な要素を含む処理だけでなく、並列的あるいは個別に実行される処理も含むものである。
【０１００】
【発明の効果】
請求項１に記載の画像圧縮装置、請求項２に記載の画像圧縮方法、および請求項３に記載の媒体によれば、同じピクチャタイプの直前のフレームのQスケール値の平均値に対応する値、フレーム毎の高域成分に対応する値、マクロブロック毎の高域成分に対応する値、または動き補償を行うフレームの残差成分に対応する値を演算し、演算した結果の最小値、および最大値からQスケール値の下限値を選択し、演算結果とするようにしたので、極端に小さなQスケール値の発生を防止し、過多の情報を割り当てられるブロックの発生を抑え、画面全体にわたって情報配分が適正に行われるようになる。さらに、下限値として最小値または最大値を求めるようにすることで、必要に応じて圧縮優先の圧縮とするか、画質有線の圧縮とするかを選択して圧縮することが可能となる。
【図面の簡単な説明】
【図１】従来の画像圧縮装置の構成例を示すブロック図である。
【図２】量子化マトリクスのデフォルト値を示す図である。
【図３】  Qスケール値とQスケールコードの関係を示す図である。
【図４】本発明を適用した画像圧縮装置の構成例を示すブロック図である。
【図５】図４の情報制御器の処理を説明するフローチャートである。
【図６】媒体を説明する図である。
【符号の説明】
１  画像入力装置，４  DCT器，５  量子化器，６  可変長符号化器，７  逆量子化器，８  逆DCT器，１１  フレームメモリ，１２  動き検出器，１３  動き補償器，１４  バッファ，１５  情報制御器，２１  入力装置，２２  CPU，２３  フレームコンプレキシティ演算装置，２４  アクティビティ演算装置，２５  残差演算装置
【図１】
0004110345.tif 000009
【図２】
0004110345.tif 000010
【図３】
0004110345.tif 000011
【図４】
0004110345.tif 000012
【図５】
0004110345.tif 000013
【図６】
0004110345.tif 000014