(57)【特許請求の範囲】
【請求項１】
複数のブロックによって構成される等長化単位毎に、目標符号量内で画像信号を量子化する画像信号の符号化装置において、
上記画像信号の上記ブロック毎にアクティビィティを検出し、検出したアクティビィティを上記ブロックのそれぞれに対する小数点以下の値を有するアクティビティ情報として出力するアクティビィティ検出手段と、
上記等長化単位毎に適用される複数の第１の量子化ステップが設定され、上記第１の量子化ステップを上記ブロック毎のアクティビティ情報によって修正してアクティビティを考慮した量子化ステップが設定され、上記アクティビティを考慮した量子化ステップで上記ブロック毎に量子化を行った場合の上記ブロック毎に発生する符号量をメモリに保持し、
上記第１の量子化ステップを変化させた場合の上記等長化単位毎の総符号量を上記保持されている符号量から求め、上記等長化単位で発生する総符号量が目標符号量を下回り、上記総符号量と上記目標符号量との差が最小となる第２の量子化ステップを上記等長化単位毎に決定すると共に、上記アクティビティ情報と上記第１の量子化ステップの２変数で規定される配列データである部分和を求める第１の決定手段と、
上記第２の量子化ステップに対して、上記アクティビティを考慮した複数の量子化ステップの決定時における上記丸め処理において、丸め処理後の量子化ステップを１ステップ下げた量子化ステップと、上記丸め処理前の量子化ステップとの差が小さい順に、上記アクティビィティの順番を求め、
上記アクティビィティの順番に基づいて、上記アクティビィティ部分和を使用して量子化ステップを一段階小として符号量の増加を調べ、総符号量が目標符号量を超えることなく目標符号量との差を最小とするアクティビィティを決定し、
上記等長化単位分の複数のブロックのそれぞれの上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティより早い場合に、当該ブロックの量子化ステップを１ステップ下げ、上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティと同じ場合に、量子化ステップを一段階下げることが可能か否かを調べ、上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティより遅い場合に、量子化ステップを一段階下げることを不可能とすることによって、第３の量子化ステップを決定する第２の決定手段とからなり、
上記第２の決定手段で決定された上記第３の量子化ステップによって各ブロックを量子化することを特徴とする画像信号の符号化装置。
【請求項２】
請求項１において、
さらに、予め上記アクティビィティの順番を求め、上記第１の量子化ステップ毎に上記順番の情報をルックアップテーブルとして持つようにした画像信号の符号化装置。
【請求項３】
複数のブロックによって構成される等長化単位毎に、目標符号量内で画像信号を量子化する画像信号の符号化方法において、
上記画像信号の上記ブロック毎にアクティビィティを検出す、検出したアクティビィティを上記ブロックのそれぞれに対する小数点以下の値を有するアクティビティ情報として出力するアクティビィティ検出ステップと、
上記等長化単位毎に適用される複数の第１の量子化ステップが設定され、上記第１の量子化ステップを上記ブロック毎のアクティビティ情報によって修正してアクティビティを考慮した量子化ステップが設定され、上記アクティビティを考慮した量子化ステップで上記ブロック毎に量子化を行った場合の上記ブロック毎に発生する符号量をメモリに保持し、
上記第１の量子化ステップを変化させた場合の上記等長化単位毎の総符号量を上記保持されている符号量から求め、上記等長化単位で発生する総符号量が目標符号量を下回り、上記総符号量と上記目標符号量との差が最小となる第２の量子化ステップを上記等長化単位毎に決定すると共に、上記アクティビティ情報と上記第１の量子化ステップの２変数で規定される配列データである部分和を求める第１の決定ステップと、
上記第２の量子化ステップに対して、上記アクティビティを考慮した複数の量子化ステップの決定時における上記丸め処理において、丸め処理後の量子化ステップを１ステップ下げた量子化ステップと、上記丸め処理前の量子化ステップとの差が小さい順に、上記アクティビィティの順番を求め、
上記アクティビィティの順番に基づいて、上記アクティビィティ部分和を使用して量子化ステップを一段階小として符号量の増加を調べ、総符号量が目標符号量を超えることなく目標符号量との差を最小とするアクティビィティを決定し、
上記等長化単位分の複数のブロックのそれぞれの上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティより早い場合に、当該ブロックの量子化ステップを１ステップ下げ、上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティと同じ場合に、量子化ステップを一段階下げることが可能か否かを調べ、上記アクティビィティ情報のアクティビィティの順番が決定された上記アクティビィティより遅い場合に、量子化ステップを一段階下げることを不可能とすることによって、第３の量子化ステップを決定する第２の決定ステップとからなり、
上記第２の決定ステップで決定された上記第３の量子化ステップによって各ブロックを量子化することを特徴とする画像信号の符号化方法。
【請求項４】
請求項３において、
さらに、予め上記アクティビィティの順番を求め、上記第１の量子化ステップ毎に上記順番の情報をルックアップテーブルとして持つようにした画像信号の符号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば動き補償とＤＣＴ(Discrete Cosine Transform)を用いた符号化に対して適用できる画像信号の符号化装置および符号化方法に関する。
【０００２】
【従来の技術】
ＭＰＥＧ(Moving Pictures Expert Group)規格に代表されるＤＣＴを用いた画像圧縮方式では、伝送路に送出されるビットストリームが所望のレートになるように、符号量制御を行なっている。例えば量子化ステップを表す量子化インデックスを制御することによって、符号量制御がなされる。ＭＰＥＧ２でＴＭ５として提案されている符号量制御では、仮想バッファの残量と、以前エンコードした際の量子化インデックスと発生符号量の関係を用いて量子化ステップをフィードバック制御している。
【０００３】
図１は、ＭＰＥＧのレイヤー構造を示すものである。シーケンス層、ＧＯＰ(Group Of Picture)層、ピクチャ層、スライス層、マクロブロック層からなる階層構造が規定されている。より具体的には、図１に示すように、スライス層や、マクロブロック層に含まれるデータ（Ｑスケールと呼ぶ）で量子化ステップを変化させることによって、１フレーム等の所定期間で発生する符号量を調節している。例えば（４：２：０）のフォーマットでは、４個の輝度信号のブロックと、色信号Ｕの１個のブロックと、色信号Ｖの１個のブロックとによって、マクロブロックが構成されている。
【０００４】
一例として、Ｑスケールの値q scaleとして、Ｑ１〜Ｑ３１の３１種類が用意されている。Ｑスケールの番号が大きくなるにしたがって、量子化ステップが大きい値となるようにされている。図２に示すように、量子化と合計符号長（適宜総符号量とも言う）の関係は、量子化ステップを大きくすると、量子化が粗くなり合計符号長が少なくなる。逆に、量子化ステップを小さくすると、量子化は細かくなり合計符号長が多くなる。また、量子化は離散値しかとれないため、合計符号長も離散的になる。
【０００５】
通信等のアプリケーションでは、以前の量子化ステップと総符号量の関係を用いて、現在の平均レートに対してフィードバックをかける方式が一般的である。すなわち、現在の平均レートが目標レートよりも高めならば量子化ステップを若干粗めにして総符号量を下げ、現在の平均レートが低めならば量子化ステップを若干細かくして総符号量を増やす。このようにして平均的に目標レートを実現するように制御を行う。すなわち、細かい時間で見ると総符号量は増減するものの、長いスパンで見ると平均的に総符号量を目標値とするものである。
【０００６】
しかしながら、編集等を前提としたＶＴＲのようアプリケーションでは、前述のような平均レートだけで制御すると不具合がおきてしまう。このようなアプリケーションでは、例えばフレーム毎での編集といった操作があるため、編集単位毎にその総符号量が一定量を絶対に超えないような制御が必要となる。以下、このような制御を固定長符号量制御と呼ぶことにする。
【０００７】
【発明が解決しようとする課題】
前述のフィードバック制御ではこの様な制御が困難なため、再生画像の破綻を来したり、あるいは符号量が超えないようにマージンを見込み過ぎて画質が劣化してしまうことがあった。そこで、予め異なる量子化ステップの固定量子化器を複数用いて量子化を行ない、そのときの総符号量に基づいて、量子化制御を行なうという技術が知られている。例えば、国際公開公報ＷＯ９６／２８９３７には、フィードフォワード方式の符号量制御が開示されている。
【０００８】
具体的には、図２に示される３１種類のＱスケールをそれぞれ持つ量子化器を設け、各量子化器で量子化された量子化ＤＣＴ係数の１フレーム期間の総符号量をそれぞれを求め、総符号量が目標符号量（図２におけるターゲットビットレングス）を超えず、且つ目標符号量に対する差が小さいＱスケールを決定する。図２の例では、Ｑ４がそのようなＱスケールに該当する。
【０００９】
しかしながら、この求められた例えば３１種類の量子化の時の総符号量をもとに、どのように量子化ステップを決めるのかが問題となる。Ｑスケールは、離散的なものであるので、ビットレートも離散的な値しかとれず細かな制御ができず、目標符号量との差が充分に小さくならない問題があった。
【００１０】
したがって、この発明の目的は、フィードフォワード方式の符号量制御において、アクティビティに応じて、目標符号量を超えないで、且つ目標符号量と総符号量との差をより小さくすることが可能な画像信号の符号化装置および符号化方法を提供することにある。
【００１１】
【課題を解決するための手段】
請求項１の発明は、複数のブロックによって構成される等長化単位毎に、目標符号量内で画像信号を量子化する画像信号の符号化装置において、
画像信号のブロック毎にアクティビィティを検出し、検出したアクティビィティをブロックのそれぞれに対する小数点以下の値を有するアクティビティ情報として出力するアクティビィティ検出手段と、
等長化単位毎に適用される複数の第１の量子化ステップが設定され、第１の量子化ステップをブロック毎のアクティビティ情報によって修正してアクティビティを考慮した量子化ステップが設定され、アクティビティを考慮した量子化ステップでブロック毎に量子化を行った場合のブロック毎に発生する符号量をメモリに保持し、
第１の量子化ステップを変化させた場合の等長化単位毎の総符号量を保持されている符号量から求め、等長化単位で発生する総符号量が目標符号量を下回り、総符号量と目標符号量との差が最小となる第２の量子化ステップを等長化単位毎に決定すると共に、アクティビティ情報と第１の量子化ステップの２変数で規定される配列データである部分和を求める第１の決定手段と、
第２の量子化ステップに対して、アクティビティを考慮した複数の量子化ステップの決定時における丸め処理において、丸め処理後の量子化ステップを１ステップ下げた量子化ステップと、丸め処理前の量子化ステップとの差が小さい順に、アクティビィティの順番を求め、
アクティビィティの順番に基づいて、アクティビィティ部分和を使用して量子化ステップを一段階小として符号量の増加を調べ、総符号量が目標符号量を超えることなく目標符号量との差を最小とするアクティビィティを決定し、
等長化単位分の複数のブロックのそれぞれのアクティビィティ情報のアクティビィティの順番が決定されたアクティビィティより早い場合に、当該ブロックの量子化ステップを１ステップ下げ、アクティビィティ情報のアクティビィティの順番が決定されたアクティビィティと同じ場合に、量子化ステップを一段階下げることが可能か否かを調べ、アクティビィティ情報のアクティビィティの順番が決定されたアクティビィティより遅い場合に、量子化ステップを一段階下げることを不可能とすることによって、第３の量子化ステップを決定する第２の決定手段とからなり、
第２の決定手段で決定された第３の量子化ステップによって各ブロックを量子化することを特徴とする画像信号の符号化装置である。
【００１２】
請求項３の発明は、複数のブロックによって構成される等長化単位毎に、目標符号量内で画像信号を量子化する画像信号の符号化方法において、
画像信号のブロック毎にアクティビィティを検出す、検出したアクティビィティをブロックのそれぞれに対する小数点以下の値を有するアクティビティ情報として出力するアクティビィティ検出ステップと、
等長化単位毎に適用される複数の第１の量子化ステップが設定され、第１の量子化ステップをブロック毎のアクティビティ情報によって修正してアクティビティを考慮した量子化ステップが設定され、アクティビティを考慮した量子化ステップでブロック毎に量子化を行った場合のブロック毎に発生する符号量をメモリに保持し、
第１の量子化ステップを変化させた場合の等長化単位毎の総符号量を保持されている符号量から求め、等長化単位で発生する総符号量が目標符号量を下回り、総符号量と目標符号量との差が最小となる第２の量子化ステップを等長化単位毎に決定すると共に、アクティビティ情報と第１の量子化ステップの２変数で規定される配列データである部分和を求める第１の決定ステップと、
第２の量子化ステップに対して、アクティビティを考慮した複数の量子化ステップの決定時における丸め処理において、丸め処理後の量子化ステップを１ステップ下げた量子化ステップと、丸め処理前の量子化ステップとの差が小さい順に、アクティビィティの順番を求め、
アクティビィティの順番に基づいて、アクティビィティ部分和を使用して量子化ステップを一段階小として符号量の増加を調べ、総符号量が目標符号量を超えることなく目標符号量との差を最小とするアクティビィティを決定し、
等長化単位分の複数のブロックのそれぞれのアクティビィティ情報のアクティビィティの順番が決定されたアクティビィティより早い場合に、当該ブロックの量子化ステップを１ステップ下げ、アクティビィティ情報のアクティビィティの順番が決定されたアクティビィティと同じ場合に、量子化ステップを一段階下げることが可能か否かを調べ、アクティビィティ情報のアクティビィティの順番が決定されたアクティビィティより遅い場合に、量子化ステップを一段階下げることを不可能とすることによって、第３の量子化ステップを決定する第２の決定ステップとからなり、
第２の決定ステップで決定された第３の量子化ステップによって各ブロックを量子化することを特徴とする画像信号の符号化方法である。
【００１３】
アクティビティを考慮した量子化情報は、離散的な値であるので、目標符号量と総符号量との間に差が存在する。これを小さくするために、例えば各マクロブロックの量子化ステップを一つずつ小にする。その場合に、量子化ステップ毎に局所的情報に関して順番を求め、順番の早いものから順に総符号量が目標符号量を超えない局所的情報を設定する。次に、処理ブロック単位で量子化ステップを制御する。その場合に、設定された局所的情報より順番が早い処理ブロックは、無条件に量子化ステップを一つ減じ、設定された局所的情報と同じ順番の処理ブロックは、量子化ステップを一つ減じることが可能かどうかが検証される。
【００１４】
【発明の実施の形態】
以下、この発明の一実施形態について図面を参照して説明する。図３は、この発明が適用されたエンコーダの全体的構成を示す。一例として、１フレーム、すなわち、１画面単位で合計符号長が固定長になるように制御する。図３において、参照符号１が走査変換部を示す。走査変換部１において、入力画像信号がマクロブロックに分割される。入力画像がプログレッシブ走査の場合では、そのままマクロブロックに分割され、インターレース走査の場合は、フィールド−フレーム変換してマクロブロックに分割される。ＭＰＥＧでは、輝度信号に関して、４個のＤＣＴブロックから構成される（１６×１６）のサイズのブロックが構成される。色差信号Ｃｒ、Ｃｂに関して、（４：２：０）の場合、それぞれが（８×８）のブロックが構成される。これらの合計６個のＤＣＴブロックをまとめて一つのマクロブロックが構成される。
【００１５】
走査変換部１においてマクロブロック化されたデータが本線系２および予測系３にそれぞれ入力される。本線系２は、参照符号４が付されたＦＩＦＯ、参照符号５が付されたＤＣＴ処理部、参照符号６が付された量子化部、参照符号７が付されたＶＬＣ(Variable Length Coding)  、参照符号８が付されたバッファとからなる。
【００１６】
ＤＣＴ処理部５では、イントラ符号化が行われ、入力画素値そのものがＤＣＴされる。なお、前フレームのローカル復号値を動き補償することによって形成された予測値と入力画素値とのフレーム間差分を求め、フレーム間差分をＤＣＴするようにしても良い。量子化部６には、予測系３においてマクロブロックmb毎に決定された第３の量子化ステップとしての量子化ステップＱ final[mb]が供給され、この量子化ステップＱ final[mb]でＤＣＴ係数が量子化される。ＦＩＦＯ４は、予測系３において、量子化ステップＱ finalが決定されるまでの時間を補償するための遅延素子である。
【００１７】
量子化部６からの量子化ＤＣＴ係数がＶＬＣ部７において可変長符号化される。ＶＬＣ部７の出力がバッファ８に供給される。バッファ８によって平滑化がなされ、ビットストリームが出力される。
【００１８】
予測系３は、参照符号９で示すＤＣＴ処理部と、参照符号１０−１，１０−２，・・・，１０−ｎで示すｎ個の量子化器と、参照符号１１−１，１１−２，・・・，１１−ｎで示すｎ個の符号量検出器と、参照符号１２で示すメモリと、参照符号１３で示す量子化ステップ決定部と、参照符号１４で示す作業用のメモリと、アクティビティ算出回路１５とからなる。量子化ステップ決定部１３からの量子化ステップが上述した本線系２の量子化部６に供給される。
【００１９】
ｎ個の量子化器１０−１，１０−２，・・・，１０−ｎは、それぞれ異なる量子化ステップで量子化する。各量子化器で発生した量子化ＤＣＴ係数が符号量検出器１１−１，１１−２，・・・，１１−ｎに供給され、各マクロブロックの符号量が符号量検出器１１−１，１１−２，・・・，１１−ｎからそれぞれ発生する。符号量検出器１１−１，１１−２，・・・，１１−ｎは、量子化ＤＣＴ係数をＶＬＣ部７と同様に可変長符号化し、可変長符号をマクロブロックについて集計する構成とされている。このようにして求められた各マクロブロックについての各量子化の符号量情報をバッファメモリ１２に保存する。
【００２０】
この発明と異なり、アクティビティを考慮しないとした場合には、メモリ１２上では、マクロブロックmbに対して、q scaIe で量子化した符号量をLength[mb,q sca1e]といった二次元配列の形で保存する。例えば１画面内のマクロブロック数が１３５０個で、量子化ステップの種類が３１個であれば、縦および横方向のアドレスの一方が（ｍｂ＝１）から（ｍｂ＝１３５０）までとされ、縦および横方向のアドレスの他方が（q scaIe ＝１）から（q scaIe ＝３１）までとされ、両者で指定されるメモリ上のアドレスに各マクロブロックの符号量のデータが格納される。
【００２１】
メモリ１２に格納された符号量情報を用いて、マクロブロック毎に１つの量子化ステップを選択しながら、１画面分を総和した時の符号量が目標符号量ＧＥＮ ＴＧＴ（図２参照）を上回らずに最も近くなる様な量子化ステップの組合せを探す。この量子化ステップの組合せを求める方法がこの発明に係わるものである。実際のアプリケーションでは、各マクロブロックの量子化ステップを同じにするのではなく、マクロブロック毎にその性質を加味して変化させるようになされる。このために、アクティビティ算出回路１５が設けられ、各マクロブロックの局所的情報Act(mb) が算出される。アクティビティAct(mb) がバッファメモリ１２に供給される。
【００２２】
量子化ステップ決定部１３は、第１の量子化ステップとしての参照量子化ステップＱrefの中で、メモリ１２の内容を使用して目標符号量を超えないで、且つ目標符号量との差が最小となる第２の量子化ステップとしての参照量子化min qqを求め、また、メモリ１２の内容を使用して、後述するように、最終的なものである、Ｑ finalを決定するものである。
【００２３】
量子化ステップ決定部１３には、各マクロブロックmbに対応して決定された量子化ステップがＱ final[mb]という配列の形で格納される。この情報は本線系２に伝送される。本線系２の量子化部６では、各マクロブロックmb no毎に検出された量子化ステップＱ final[mb]によってそのマクロブロックのＤＣＴ係数が量子化される。
【００２４】
このような処理により、等長化単位例えば１画面単位の合計符号長を所望の量以下にする、固定長符号量制御が実現できる。この制御において、目標符号量ＧＥＮ ＴＧＴを上回らず、これに最も近くなるような量子化ステップの組合せを見つける方法が重要である。図２の例では、Ｑ３では、合計符号長が目標符号量ＧＥＮ ＴＧＴを上回り、Ｑ４が合計符号長が目標符号量ＧＥＮ ＴＧＴを超えない範囲で、最も近いものである。そうであっても、Ｑ４を適用した場合、合計符号長と目標符号量ＧＥＮ ＴＧＴとの間の差が存在する。この差ができる限り小さいことが望ましい。
【００２５】
ここで、この差を小さくするために、マクロブロックのアクティビティ情報を用いて量子化ステップを変化させることが効果的である。アクティビティとは、画面内の局所的な画像の性質を表すものである。コンポーネント信号の場合では、輝度信号を使用してアクティビティが算出される。
【００２６】
マクロブロックのアクティビティとしては、従来から知られているように、差の絶対値の合計等いくつかのものが使用できるが、例えばアクティビティとして、下記の式１で示すようなマクロブロックを構成する複数の画素値の分散を使用できる。式１でＮは、マクロブロックを構成する画素の数であり、ｘが画素値であり、ΣがＮ画素についての集計を表し、ｘ＾がマクロブロックの画素値の平均値である。
【００２７】
Act(mb) ＝１／Ｎ・Σ（ｘ−ｘ＾）2        (1)
（ｘ＾＝１／Ｎ・Σｘ）
【００２８】
図４は、アクティビティ算出回路１５の構成を示す。参照符号１０１がマクロブロックの平均値算出回路であり、参照符号１０２が時間合わせ用の遅延素子としてのＦＩＦＯであり、参照符号１０３で示す減算器によって平均値に対する各画素値の差が演算される。差が参照符号１０４で示す二乗器で二乗され、さらに積算器１０５で積算され、積算値が１０６で示す割算回路で割り算される。割算回路１０６から式１で表されるアクティビティ情報Act(mb)が発生する。
【００２９】
予測系３の量子化器１０−１，１０−２，・・・１・１０−ｎでは、アクティビティを考慮した量子化を行なっていない。各量子化器では、Ｑスケールで１画面全体に渡ってＤＣＴ係数を量子化する。なお、図３におけるアクティビティ算出回路１５は、上述した図４の構成を有するものである。
【００３０】
そして、１画面全部に対して適用される一定値Ｑref に対して、各マクロブロックに適用するアクティビティを考慮した量子化ステップＱact (mb)が得られる。この量子化ステップで量子化した時のそのマクロブロックの符号量Length[mb,Ｑact (mb)] を使用して１画面の総符号量が求まる。次にＱref を変えていった時の総符号量のうちで、目標符号量ＧＥＮ ＴＧＴを超えないで、且つ目標符号量との差を最小とする総符号量を生じさせるＱref が参照量子化min qqとして量子化ステップ決定部１３によって求められる。
【００３１】
かかる参照量子化min ＿qqを求める方法について説明する。予測系３では、この発明と異なり、アクティビティを考慮しないとした場合には、上述したように、３１種類のＱスケールによって量子化を行ないそのときの総符号量Length[mb,q scaIe]をメモリ１２上に保存している。ここでは、アクティビティが考慮されていない。この時の量子化ステップq scaIe がある参照量子化ステップＱref に対して、当該マクロブロックのアクティビティを考慮した場合のものＱact の場合、求められた符号量を、Ｑref をインデックスとして１画面に渡り累算する。この結果、１画面分の予測系の処理が終った時には、各参照量子化Ｑref に対して、アクティビティを考慮した画面総和の符号量が得られることになる。
【００３２】
レートコントロールにおいては、Ｑref を離散的に変化させて、目標符号量ＧＥＮ ＴＧＴを超えないで目標符号量ＧＥＮ ＴＧＴとの差が最小になるような参照量子化を見つける。このようにしてmin qqが求められる。この処理は、Ｑref の総数に等しい回数の比較で済む。
【００３３】
以上の処理を実現するために、予測系３には、量子化ステップ決定部１３が設けられている。量子化ステップ決定部１３の一例の構成を図５に示す。入力として与えられるデータは、そのマクロブロック（mb番目のマクロブロック）のアクティビティ情報Act(mb)と、Ｑスケールと、Ｑスケールで量子化した時の符号量Length(mb)である。量子化ステップ決定部１３は、メモリ１２に対してアドレスを出力してアドレスに対応するLength(mb)を受け取るので、Ｑスケールの値が分かる。各マクロブロックごとにAct(mb)が一つ決定され、Ｑスケールは、量子化器１０−１，・・・，１０−ｎによって、各マクロブロック内で異なる値を並列に適用し、各々に対するLength(mb)が計算される。アクティビティ情報Act(mb)は、アクティビティ算出回路１５から供給される。符号量Length(mb)は、メモリ１２から読み出されたものである。量子化ステップ決定部１３に対する入力としては、ｎ個のＱスケールに対応する符号量Length(mb)が１画面の最初のマクロブロックに関するものからその最後のマクロブロックに関するものまで順に供給される。
【００３４】
参照符号３０１で示すマッピング部に対して、Act(mb)およびＱスケールが供給される。マッピング部３０１は、一例として下記の式２と逆の関係でもって入力されたＱスケール（Ｑact ）をＱref に変換するものである。すなわち、Ｑスケールをアクティビティを考慮したものと仮定し、アクティビティを考慮しない値Ｑrefをマッピング部３０１が出力する。
【００３５】
アクティビティが大きい箇所は比較的画質の劣化が目立ちにくく、量子化ステップを相対的に粗くすることが可能であり、また、アクティビティが小さい箇所は比較的画質の劣化が目立ちやすいため、量子化ステップを相対的に細かくする必要がある。アクティビティと量子化ステップを関連づける方法を以下に説明する。
【００３６】
参照量子化ステップＱref に対して、アクティビティを考慮した場合の量子化ステップ（実際に使用される量子化ステップ）をＱact (mb)とすると、次の式２でＱact (mb)が決定される。この場合、総符号量を目標符号量以下に制御することは無視されている。なお、参照量子化ステップＱref とは、アクティビティを考慮しないで、１画面全体を量子化する量子化ステップを意味する。この一実施形態は、画面の局所的情報としてのアクティビティを考慮するものであるので、仮想的なＱrefを導入し、Ｑrefをアクティビティに応じて変更するものである。変更する割合は、Ｑrefの値と無関係にアクティビティに応じて一定である。
【００３７】
Ｑact (mb)＝ｆmap （Ｑref (mb)，act(mb)）    (2)
【００３８】
ここで、関数ｆmap() は、act(mb) とＱref からＱact (mb)を計算するためのものである。例えばＭＰＥＧのＴＭ(Test Model)５で使用されているものを次の式３で示す。
【００３９】
ｆmap TM（Ｑref (mb)，act(mb)）
＝[(2.0×act(mb)＋Ｎ act)/(act(mb)＋2.0×Ｎ act)]×Ｑref (mb)   (3)
【００４０】
ここで、Ｎ act は、act(mb)の１画面の平均であるが、システムデイレイを考慮して、前画面の値を用いることもある。式３において、act(mb)＝Ｎ act であれば、Ｑref に対して乗じられる係数ｋが１となる。act(mb)＝０であれば、Ｑrefに対して乗じられる係数ｋが０．５となる。係数ｋは、0.5から２までの範囲の値をとりうる。このような関数ｆmap() を用いて、Ｑact (mb)を算出する。本来、アクティビティ情報Act(mb)は、連続値（小数点以下の値を有する値）であるが、適当に丸めた代表値、例えば１６ステップの代表値であっても画質的には十分である。
【００４１】
簡単な例として、１画面内に４個のマクロブロックが存在し、各マクロブロックのアクティビティ情報Act(mb)を考慮した量子化の操作が(×0.5,×1.0,×0.5,×2.0) であったとする。参照量子化Ｑref が例えば１０の場合では、各マクロブロックに対するアクティビティを考慮した量子化Ｑact は、Ｑref に対してAct(mb)を考慮した操作を行うことで、(5,10,5,20)となる。例えばマッピング部３０１に対してAct(mb)＝0.5 でＱact ＝１０が供給されるときには、Ｑref が２０であることが分かる。
【００４２】
マッピング部３０１からの参照量子化Ｑref がアドレス生成部３０２に供給される。アドレス生成部３０２は、Ｑref からメモリ３０３のアドレスを発生する。メモリ３０３は、予めフレームの先頭でクリアされる。Ｑref として３１通りのものが用意されている時には、Ｑref と対応して３１個のメモリ３０３のアドレスが存在する。１画面内のマクロブロック毎に３１種類のＱスケールと各Ｑスケールに対応したLengthが量子化ステップ決定部１３へ入力される。
【００４３】
あるアドレスがメモリ３０３に与えられると、そのアドレスに既に書かれているデータ量がメモリ３０３から読み出され、加算器３０４にフィードバックされる。そして、加算器３０４にて入力Lengthと加算されたものがメモリ３０３の同じアドレスに書き込まれ、積算動作がなされる。したがって、１画面の全てのマクロブロックの処理が終了すると、Ｑref のそれぞれについての総符号量がメモリ３０３上に格納される。
【００４４】
次に、参照符号３０５で示すカウンタのカウント値がアドレス生成部３０２およびレジスタ３０９に供給される。このカウント値は、Ｑref の３１通りの値に対応して例えば３０，２９，・・・，０とデクリメントするものである。Ｑref がデクリメントされるにしたがって総符号量が増大する。アドレス生成部３０２は、カウント値に応じてリードアドレス（すなわち、Ｑref ）をメモリ３０３に与える。メモリ３０３からそのアドレスの総符号量が読み出され、減算器３０６に総符号量が供給される。
【００４５】
減算器３０６には、目標符号量ＧＥＮ ＴＧＴが供給され、メモリ３０３から読み出された総符号量が目標符号量ＧＥＮ ＴＧＴから減算される。減算器３０６の出力が比較器３０７およびレジスタ３０８に供給される。比較器３０７の出力がレジスタ３０８および３０９に対してイネーブルとして供給される。比較器３０７の他方の入力としてレジスタ３０８の出力が供給される。
【００４６】
比較器３０７は、減算器３０６の減算出力とレジスタ３０８に蓄えられているレジスタデータとを比較し、減算出力がレジスタデータより小さい場合に、レジスタ３０８および３０９が入力を取り込むイネーブルとしての比較出力を発生する。減算出力が負の場合では、比較器３０７がイネーブルを発生しない。したがって、Ｑref の全てに対応するリードアドレスを発生し終えた時点では、レジスタ３０８には、最小の減算出力が格納され、レジスタ３０９には、最小減算出力を発生したＱref に対応するカウント値が格納されている。このカウント値がmin qqとして出力される。なお、減算出力が負となった時点で、カウンタ３０５のカウントを停止しても良い。
【００４７】
量子化ステップ決定部１３の処理について、図６を参照してより具体的に説明する。簡単のために、量子化ステップ（q scale)の種類が１，２，４，８，１６であり、アクティビティを考慮した量子化の操作（係数ｋ）が0.5,1.0,2.0 であるとする。この場合では、Ｑref とＱact とは、図６Ａに示すような関係となる。例えばＱref ＝２の例では、アクティビティを考慮した量子化ステップＱact がＱact ＝１，Ｑact ＝２，Ｑact ＝４となる。
【００４８】
今、４つのマクロブロックmb0,mb1,mb2,mb3 からなる１画面を考える。この場合には、上述した量子化ステップ（１，２，４，８，１６）のそれぞれで量子化を行った場合に、各マクロブロックで発生する符号量が符号量情報としてメモリ１２に保存されている。それぞれのアクティビティ情報（係数ｋ）を(2.0,0.5,2.0,1.0) とする。画面内のＱref を２，４，８とした場合、各マクロブロックmbn のアクティビティを考慮した量子化ステップは、図６Ｂに示すものとなる。Ｑref ＝１およびＱref ＝１６の場合には、操作後の値が規定の範囲からはみ出してしまうために除外している。すなわち、該当なしとして処理する。
【００４９】
したがって、Ｑref に対する１画面の総符号量total length( Ｑref ) は、符号量情報を参照して下記に示すように求まる。
【００５０】
total length(2)
＝Length[mb0,4]＋Length[mb1,1]＋Length[mb2,4]＋Length[mb3,2]
total length(4)
＝Length[mb0,8]＋Length[mb1,2]＋Length[mb2,8]＋Length[mb3,4]
total length(8)
＝Length[mb0,16]＋Length[mb1,4]＋Length[mb2,16]＋Length[mb3,8]
【００５１】
図３おける予測系３では、各マクロブロックに対して全ての量子化ステップ１，２，４，８，１６によってそれぞれ量子化を行う。まず、total length(2)、total length(4)、total length(8)が０に初期化される。最初のマクロブロックmb0について、Length[mb0,1]，Length[mb0,2]，Length[mb0,4]，Length[mb0,8]，Length[mb0,16]が得られる。mb0 のアクティビティを考慮した量子化ステップの操作（係数ｋ）が２であるので、図６Ａを参照してＱact からＱrefの関係を求めることにより下記のように各Ｑrefに対する符号量が分かる。
【００５２】
Length[mb0,1]・・・・該当無し（Ｑact が１になるようなＱrefが存在しないという意味である。）
Length[mb0,2]・・・・Ｑref ＝１でアクティビティを考慮した符号量
Length[mb0,4]・・・・Ｑref ＝２でアクティビティを考慮した符号量
Length[mb0,8]・・・・Ｑref ＝４でアクティビティを考慮した符号量
Length[mb0,16]・・・・Ｑref ＝８でアクティビティを考慮した符号量
【００５３】
図６Ａに示す表を参照するのがマッピング部３０１（図５参照）である。マッピング部３０１からのＱref に応じてメモリ３０３のアドレスを変化させて積算する。それによってマクロブロックmb0 だけでのtotal lengthは，下記のものとなる。
【００５４】
total length(2)＝Length[mb0,4]
total length(4)＝Length[mb0,8]
total length(8)＝Length[mb0,16]
【００５５】
マクロブロックmb1 については、アクティビティを考慮した量子化ステップの操作（係数ｋ）が0.5 であるので、図６Ａを参照して同様に符号量が分かる。
【００５６】
Length[mb1,1]・・・・Ｑref ＝２でアクティビティを考慮した符号量
Length[mb1,2]・・・・Ｑref ＝４でアクティビティを考慮した符号量
Length[mb1,4]・・・・Ｑref ＝８でアクティビティを考慮した符号量
Length[mb1,8]・・・・Ｑref ＝１６でアクティビティを考慮した符号量
Length[mb1,16]・・・・該当無し
【００５７】
これによりマクロブロックmb1 までのtotal lengthは，下記のものとなる。
【００５８】
total length(2)＝Length[mb0,4]＋Length(mb1,1]
total length(4)＝Length[mb0,8]＋Length(mb1,2]
total length(8)＝Length[mb0,16]＋Length(mb1,4]
【００５９】
マクロブロックmb2 については、アクティビティを考慮した量子化ステップの操作（係数ｋ）が2.0 であるので、図６Ａを参照して同様に符号量が分かる。
【００６０】
Length[mb2,1]・・・・該当無し
Length[mb2,2]・・・・Ｑref ＝１でアクティビティを考慮した符号量
Length[mb2,4]・・・・Ｑref ＝２でアクティビティを考慮した符号量
Length[mb2,8]・・・・Ｑref ＝４でアクティビティを考慮した符号量
Length[mb2,16] ・・・・Ｑref ＝８でアクティビティを考慮した符号量
【００６１】
これによりマクロブロックmb2 までのtotal lengthは，下記のものとなる。
【００６２】
total length(2)＝Length[mb0,4]＋Length[mb1,1]＋Length[mb2,4]
total length(4)＝Length[mb0,8]＋Length[mb1,2]＋Length[mb2,8]
total length(8)＝Length[mb0,16]＋Length[mb1,4]＋Length[mb2,16]
となる。
【００６３】
マクロブロックmb3 については、アクティビティを考慮した量子化ステップの操作（係数ｋ）が1.0 であるので、図６Ａを参照して同様に符号量が分かる。
【００６４】
Length[mb3,1]・・・・Ｑref ＝１でアクティビティを考慮した符号量
Length[mb3,2]・・・・Ｑref ＝２でアクティビティを考慮した符号量
Length[mb3,4]・・・・Ｑref ＝４でアクティビティを考慮した符号量
Length[mb3,8]・・・・Ｑref ＝８でアクティビティを考慮した符号量
Length[mb3,16] ・・・Ｑref ＝１６でアクティビティを考慮した符号量
【００６５】
これによりマクロブロックmb3 まで(すなわち、１画面）のtotal lengthは，下記のものとなる。
【００６６】
total length(2)
＝Length[mb0,4]＋Length[mb1,1]＋Length[mb2,4]＋Length[mb3,2]
total length(4)
＝Length[mb0,8]＋Length[mb1,2]＋Length[mb2,8]＋Length[mb3,4]
total length(8)
＝Length[mb0,16]＋Length[mb1,4]＋Length[mb2,16]＋Length[mb3,8]
となる。以上のようにして、２，４，８のＱref に対する１画面の総符号量が求められる。
【００６７】
以上の処理によって、目標符号量ＧＥＮ ＴＧＴを超えないで、目標符号量ＧＥＮ ＴＧＴとの差が最小の参照量子化Ｑref がmin qqとして求められる。しかしながら、Ｑref を離散的に操作しているので、ビットレートも離散的な値しかとれず細かな制御ができないため、目標符号量ＧＥＮ ＴＧＴとの差が充分に小さくならない可能性がある。そこで、この発明は、量子化ステップが飛び飛びの離散値しか選ぶことができず、実際に使用できるＱact (mb)が丸め等の処理によって近い値にマッピングをしていることを利用して、目標符号量ＧＥＮ ＴＧＴとの差をより小さくするものである。丸め処理を利用して細かくビットレートを調整する。
【００６８】
すなわち、ビットレートを若干下げたい場合には、いくつかのマクロブロックに対してＱスケールを大きくして総符号量を少なくすれば良い。このとき、アクティビティを考慮した際の丸め処理によって切り捨てられた量が大きいもの、すなわち、切り上げても弊害が少なそうなものから順に切り上げるようにする。逆に、ビットレートを若干上げたい場合には、いくつかのマクロブロックに対してＱスケールを小さくして総符号量を大きくすれば良い。このとき、丸め処理によって切り上げられた量が大きいものから順に切り捨てるようにする。それによって、アクティビティを考慮してＱスケールを変化させた時に、本来のＱスケールに対して誤差が少ないようにする。
【００６９】
次に例を示す。簡単のため、１画面が４個のマクロブロックによって構成されているとする。所望のビットレートを得るため各マクロブロックに対するアクティビティを考慮して連続値（小数点以下まで求められる値）の量子化ステップは、(3.2、5.9、4.1、10.5) とする。これを四捨五入で丸めをすると、（３、６、４、１１）となる。若し、この組み合わせにより得られるビットレートが所望のものよりも高く、ビットレートを下げたい場合には、下記の順にＱスケールを変化させる。（）内の値は、元の連続値に対する差を示す。
【００７０】
３→４(0.8)、４→５(0.9)、６→７(1.1)、１１→１２(1.5)
【００７１】
逆にビットレートが所望のものよりも低く、ビットレートを上げたい場合には、下記の順にする。（）内の値は、元の連続値に対する差を示す。
【００７２】
１１→１０(0.5)、６→５(0.9)、４→３(1.1)、３→２(1.2)
【００７３】
前述したmin qqは、目標符号量を超えないように設定されており、目標符号量までは、未だ余裕があるので、この余裕を利用してビットレートを上げようとするので、この場合は、ビットレートが所望のものよりも低く、ビットレートを上げたい場合に該当し、Ｑスケールを小さくする処理が必要である。しかしながら、処理の順序例えば画面の上の左端から順に下の右端に向かってＱスケールを小さくした時には、処理の最初の部分のＱスケールのみが制御され、後半の部分では、Ｑスケールが制御されず、画質の改善にとってそれほど有効ではない不都合が生じる。このような不都合を生じないで、アクティビティ情報に応じて量子化ステップを制御することが必要である。そのような処理を実現する方法（アクティビティ部分和法と称する）について以下に説明する。
【００７４】
アクティビティ部分和法は、予測系３で参照量子化min qqを求めるために符号量の集計をとると同時に、各アクティビティ毎の符号量の和を求めるようにする。すなわち、アクティビティAct(mb)とq scaIeの二変数でインデックスされる配列データact sub ttl[activity,q scaIe]を生成する。このデータをアクティビティ部分和と呼ぶことにする。アクティビティに離散値を用いれば、q scaIeも離散値であるので、このデータを格納するための容量は、実現可能なものである。
【００７５】
図７は、アクティビティ部分和算出回路の一例の構成を示す。前述した図５の構成と同様のものである。すなわち、量子化ステップ決定部１３には、図５の構成と共に、図７のアクティビティ部分和算出回路も設けられている。図５の構成では、１画面の全てのマクロブロックの処理が終了すると、Ｑref のそれぞれについての総符号量がメモリ上に格納される。一方、図７の構成では、１画面の全てのマクロブロックの処理が終了すると、アクティビティとq scaIeの二変数でインデックスされる積算符号量がメモリ上に格納される。
【００７６】
図７において、参照符号４０１がアドレス生成回路を示し、参照符号４０２がメモリを示す。アドレス生成回路４０１では、メモリ４０２に対する書き込みアドレスおよび読み出しアドレスを生成する。書き込みアドレスは、アクティビティAct(mb)とq scaIe(mb)との両者で決定される。読み出しアドレスとしては、任意のアドレスが与えられる。同じ書き込みアドレスが指定されると、メモリ４０２からの読み出しデータと入力データ（Length)とが加算器４０３が加算され、加算出力がメモリ４０２の同一アドレスに対して書き込まれる。メモリ４０２が１フレーム毎にクリアされる。したがって、メモリ４０２上には、アクティビティとq scaIeの二変数でインデックスされる１画面の積算符号量が格納される。各符号量がアクティビティ部分和である。
【００７７】
min qqを求めた後、参照量子化min qqに対して、「アクティビティを考慮した丸めない量子化ステップＱact（mb）」と「その量子化ステップを一段階小さくしたもの」との差が小さくなるアクティビティの順番を求める。これは、アクティビティおよびq scaIeが離散値であるので、あらかじめ計算でき、全てのq scaIeのそれぞれについて、アクティビティの順番をテーブルにしておくことで、容易に順番を求めることができる。
【００７８】
このアクティビティの順番に基づいて、アクティビティ部分和を用いて量子化ステップを一段階ずらしてその符号量の増加を調べる。すなわち、順番が早いものから順に量子化ステップを一つ下げる。総符号量が目標符号量ＧＥＮ ＴＧＴを超えることなく、ＧＥＮ ＴＧＴとの差が最小となるアクティビティを見つける。これをmin actとする。この処理は、アクティビティの総数に等しい回数によってなされる。
【００７９】
次に、マクロブロック単位で調べる。すなわち、アクティビティの順番がmin actよりも早いマクロブロックについては、無条件に量子化ステップを一段階下げる。アクティビティの順番がmin actと同じマクロブロックについては、量子化ステップを一段階下げることが可能か否かを調べる。アクティビティの順番がmin actより一つ遅いマクロブロックについては量子化ステップを一段階下げることが不可能とする。この処理は、マクロブロックの総数に等しい回数、行なわれる。
【００８０】
図８および図９は、上述したアクティビティ部分和法を説明するためのフローチャートである。図３の構成では、量子化ステップ決定部１３においてフローチャートで示す処理がなされる。これらの図は、一連の処理を示すものであるが、作図スペースの制約から二つの図に分けたものである。最初のステップＳ１では、テーブルを参照して現在のmin qqに対してアクティビティの順番act queue[ ]を求める。この順番は、最も早い順が０で、以下、１，２，・・・と遅くなる。最も遅い順位は、アクティビティの総数から１を減じたものである。
【００８１】
ステップＳ２では、アクティビティの順番を示す変数ｉが０に初期化される。ステップＳ３では、変数actにｉ番目のアクティビティを代入する。
【００８２】
ステップＳ４では、actとmin qqによってq scaIeを求める。ステップＳ５では、q scaIeを一ステップ下げた時の総符号量を求める。総符号量をtmpと表記する。
【００８３】
q scaIeを下げたことにより発生符号量の総和が増加するので、ステップＳ６では、総符号量tmpと目標符号量ＧＥＮ ＴＧＴとを比較する。総符号量がＧＥＮ ＴＧＴ以下であれば、量子化ステップを下げることができるので、処理が次のステップＳ７に進む。ステップＳ７では、アクティビティの順番を示す変数ｉを進め、ステップＳ８でtotalを更新し、ステップＳ３に戻る。次のアクティビティの順番に関して上述と同様の処理がなされる。
【００８４】
ステップＳ６において、発生符号量が目標符号量ＧＥＮ ＴＧＴより大と判定されれば、処理がステップＳ９に進む。ステップＳ９以降のフローが図９に示されている。図９のフローは、マクロブロック単位の処理である。ステップＳ９では、アクティビティの順番を示す変数ｉが一つ減じられる。この減じた結果のアクティビティの順番は、総符号量tmpが目標符号量ＧＥＮ ＴＧＴを超えないものである。
【００８５】
ステップＳ１０では、マクロブロックのインデックスである変数mbがゼロに初期化される。ステップＳ１１では、変数mbが総マクロブロック数MB NUMであるか否かが判定される。そうであれば、全マクロブロックの処理が終了したことになるので、処理が終了する。変数mbが総マクロブロック数MB NUMに達していないならば、ステップＳ１２に処理が移る。
【００８６】
ステップＳ１２では、mbで示されるマクロブロックのアクティビティの順番とステップＳ９のmin actとを比較する。順番がmin actより小の場合では、量子化ステップを無条件に下げることができるので、ステップＳ１７にジャンプし、そのマクロブロックmbの量子化ステップが一つ減じられる。順番がmin actより大の場合では、量子化ステップを下げることができないので、ステップＳ１８にジャンプし、量子化ステップを下げることなく、マクロブロックmbが進められる。順番がmin actと等しい場合では、量子化ステップを下げられる可能性があるので、検証のために次のステップＳ１３に進む。
【００８７】
ステップＳ１３では、actとmin qqによってq scaIeが求められる。ステップＳ１４では、マクロブロックmbのq scaIeを一つ減じた時の総符号量tmpが求められる。すなわち、q scaIeを一つ減じたことによる符号量の増加分が元の総符号量に加算された結果が総符号量tmpに代入される。
【００８８】
ステップＳ１５では、総符号量tmpと目標符号量ＧＥＮ ＴＧＴとを比較する。総符号量tmpがＧＥＮ ＴＧＴ以下であれば、量子化ステップを下げることができるので、処理が次のステップＳ１６に進む。そうでなければ、ステップＳ１８（mbを進める処理）にジャンプする。
【００８９】
ステップＳ１６では、総符号量を実際に更新する。そして、ステップＳ１７において、マクロブロックmbの量子化ステップを一つ減じる。ステップＳ１８において、mbを一つ進めて、ステップＳ１１（mbと総マクロブロック数MB NUMの比較）に戻る。
【００９０】
図１０は、アクティビティの順番を求める処理を説明するものである。各参照量子化Ｑref および各アクティビティ毎に、q scaleを変化させる順番の一例が示されている。ここで、ｋは、アクティビティ情報に応じて量子化ステップを操作するための係数、すなわち、式（３）において、Ｑref (mb)に乗じられる係数部分を表している。前述したように、アクティビティが大きいマクロブロックは、量子化ステップを粗くし、アクティビティが小さいマクロブロックは、量子化ステップを細かくする必要がある。すなわち、アクティビティが小さい場合では、係数が小さくされ、量子化ステップが細かくされ、逆に、アクティビティが大きい場合では、係数が大きくされ、量子化ステップが粗くされる。したがって、この係数ｋをアクティビティとして扱うことができる。図１０では、簡単のため、アクティビティｋが５種類の離散的な値（0.5,0.75,1.0,1.5,2.0) をとりうるものとしている。
【００９１】
この「アクティビティを考慮した丸めない量子化ステップＱact（mb）(5,7.5,10,15,20）」と「丸めた量子化ステップを一段階小さくしたもの(4,7,9,14,19)」との差が小さい順、すなわち、本来連続値でとるべき値との差が小さい順に順位が付けられる。
【００９２】
例えばＱref ＝１０の場合では、アクティビティｋを乗じた値が(5,7.5,10,15,20)となり、四捨五入で丸めた値が (5,8,10,15,20) となる。ビットレートを上げるために、丸め後の量子化から１を減算し、(4,7,9,14,19) を得る。差が小さい順に順番付けがなされる。この場合では、アクティビティが0.75が最も早い順位となる。Ｑref ＝１１の場合でも、同様に順位が求められる。例えば図２に示されるＱ１〜Ｑ３１の他のＱref についても同様にアクティビティの順番が求められる。この図１０に示すテーブルは、予め求めることができる。図８におけるステップＳ１では、テーブルを参照してアクティビティの順番を求めることができる。
【００９３】
なお、この発明においては、量子化の対象の信号が画像信号または画像信号と予測画像信号の差分の何れであっても良い。また、以上の説明では、変換符号化としてＤＣＴを用いたが、ＤＣＴに限られず、ウェーブレット変換、Haar変換、Ｋ−Ｌ変換等に対しても、この発明を適用することができる。
【００９４】
また、この発明は、圧縮符号化されたデータを磁気テープに記録したり、ハードディスク、光磁気ディスクに記録する場合に対して適用できる。
【００９５】
さらに、マクロブロックの構造としては、（４：２：０）に限らず、（４：２：２）、（４：４：４）、（４：１：１）等の構造であっても良い。マクロブロック内に含まれるＤＣＴブロックの個数も限定されるものではない。よりさらに、符号量を制御する等長化単位としては、１フレームに限らず、より短い期間を設定しても良い。
【００９６】
【発明の効果】
この発明は、フィードフォワード制御であるので、フィードバック制御における問題を回避することができる。すなわち、シーンチェンジ時のデータ量の急変による再生画像の破綻を来すことなく、ある決められた枚数のフレームをある決められたビットレートに押さえ込むように制御することができる。
【００９７】
また、この発明は、量子化ステップが画像の局所的性質により可変されるので、復号画像の画質を向上することができる。この場合、アクティビティ情報を離散値とし、アクティビティ情報の順番を求め、目標符号量を超えない範囲で、目標符号量との差が最も小さいアクティビティを設定する。次に、マクロブロック単位の処理を行う場合に、設定アクティビティと各マクロブロックのアクティビティ情報を比較することによって、量子化ステップを制御する必要のあるマクロブロックを限定することができるので、比較的簡単な処理で量子化ステップを決定できる。
【図面の簡単な説明】
【図１】量子化ステップのデータを伝送する方法の一例を示す略線図である。
【図２】量子化ステップに対する１フレームで発生する合計符号長の変化の一例を示す略線図である。
【図３】この発明の一実施例の全体的構成を示すブロック図である。
【図４】アクティビティ算出回路の一例のブロック図である。
【図５】この発明の一実施形態における量子化ステップ決定部の一例のブロック図である。
【図６】この発明の一実施形態における量子化ステップのＱref およびＱact の関係を説明するための略線図である。
【図７】この発明の一実施形態におけるアクティビティ部分和算出回路の一例のブロック図である。
【図８】この発明の一実施形態における量子化ステップの制御の方法を説明するためのフローチャートである。
【図９】この発明の一実施形態における量子化ステップの制御の方法を説明するためのフローチャートである。
【図１０】この発明の一実施形態においてアクティビティ情報に応じて量子化ステップを制御する方法を説明するための略線図である。
【符号の説明】
２・・・本線系、３・・・予測系、６・・・量子化部、１０−１〜１０−ｎ・・・量子化器、１３・・・量子化ステップ決定部、１５・・・アクティビティ算出部
【図１】
0004127006.tif 000002
【図２】
0004127006.tif 000003
【図３】
0004127006.tif 000004
【図４】
0004127006.tif 000005
【図５】
0004127006.tif 000006
【図６】
0004127006.tif 000007
【図７】
0004127006.tif 000008
【図８】
0004127006.tif 000009
【図９】
0004127006.tif 000010
【図１０】
0004127006.tif 000011