予測差分もしくは原画像に対して直交変換を行う周波数変換部と、該周波数変換部が出力する変換係数に対して量子化を行う量子化部と、該量子化された変換係数およびヘッダ情報に対して符号の発生頻度に応じた符号化を行う可変長符号化部と、該可変長符号化部が出力する符号化ストリームを所望のビットレートレートに保つよう制御するレート制御部とを有し、前記可変長符号化部または前記レート制御部は、前記符号化の前のビット列の長さと該ビット列に含まれるシンボルの発生頻度に基づいて、符号化後の符号量を推定し、前記レート制御部は、該推定された符号量に基づいてレート制御を行うことを特徴とする画像符号化装置。前記シンボルの単位は1ビットであって、前記シンボルの発生頻度は前記ビット列に含まれる0または1の数を計数して得るものであり、前記可変長符号化部は、ピクチャ、スライスもしくはブロックの単位でのレート制御を受けて算術符号化を行うものであり、該単位の中で前記可変長符号化が完了した部分では実符号量を用い、未完了の部分では前記推定された符号量を用いて、該単位の発生符号量を計算することを特徴とする請求項2記載の画像符号化装置。予測差分もしくは原画像に対して周波数変換を行い、続いて変換係数に対して量子化を施し、さらに変換係数およびヘッダ情報に対して可変長符号化を行う画像符号化方式において、符号化前のビット列長及び該ビット列に含まれるシンボルの発生頻度から符号化後の発生符号量を推定してレート制御を行うことを特徴とする画像符号化方法。しかしながら、算術符号化処理を独立に動作させた場合、その結果をマクロブロック単位で逐次的に取得して発生符号量を測定することが困難であるため、設定ビットレートと発生符号量の関係に基づいて量子化パラメータの値を決定するレート制御がうまく動作しないといった問題があった。本発明では、量子化パラメータの値を決定する際に算術符号化処理の結果を利用できない場合にでも、好適にレート制御を行うことができる動画像符号化装置等を提供する。本発明に係る動画像符号化装置は、算術符号化後の発生符号量を推定し、設定ビットレートと推定符号量の関係に基づいてレート制御を行う。特に、上記発生符号量の推定を、算術符号化前の符号長と各符号の出現割合に基づいて、例えば統計的データに基づいて設計された近似関数を用いて行うことを特徴とする。具体的には、予測差分もしくは原画像に対して直交変換を行う周波数変換部と、該周波数変換部が出力する変換係数に対して量子化を行う量子化部と、該量子化された変換係数およびヘッダ情報に対して符号の発生頻度に応じた符号化を行う可変長符号化部と、該可変長符号化部が出力する符号化ストリームを所望のビットレートレートに保つよう制御するレート制御部とを有し、前記可変長符号化部または前記レート制御部は、前記符号化の前のビット列の長さと該ビット列に含まれるシンボルの発生頻度に基づいて、符号化後の符号量を推定し、前記レート制御部は、該推定された符号量に基づいてレート制御を行うことを特徴とする。また、本発明の動画像符号化装置において、前記シンボルの単位は1ビットであって、前記シンボルの発生頻度は前記ビット列に含まれる0または1の数を計数して得るものであり、前記可変長符号化部は、ピクチャ、スライスもしくはブロックの単位でのレート制御を受けて算術符号化を行うものであり、該単位の中で前記可変長符号化が完了した部分では実符号量を用い、未完了の部分では前記推定された符号量を用いて、該単位の発生符号量を計算することを特徴とする。本発明によれば、量子化パラメータの値を決定する際に算術符号化処理の結果を利用できない場合にでも、好適にレート制御を行うことができ、もって所望のビットレートで効率的に動画像を符号化することができる。以下、本発明の実施例に係る動画像符号化装置を、図面を参照して説明する。本例の動画像符号化装置は、H264AVCに基づいて符号化を行うものであり、最初に、H264AVC符号化について概説する。図3は、マクロブロック単位の符号化処理を説明する模式図である。H264AVCは、符号化処理が完了した画像情報を利用して符号化対象画像を予測し、原画像との予測差分を符号化するものであり、その際には、画像を細かく分割したブロック単位でDCTDiscreteCosineTransformを施し、各係数値を量子化して可変長符号化を行う。各ブロックは、固定サイズ16×16画素のマクロブロックを分割したものである。図3に示すとおり、符号化処理は、対象画像に対してラスタースキャンの順序矢印で示す31に従い、マクロブロック単位で実行される。図4は、H264AVCの画面間予測処理の動作に関する概念的な説明図である。41は、動画像符号化装置に入力される映像時系列の画像群であり、参照画像は43及び符号化対象画像43はそれぞれ、映像41に含まれる1フレームである。画面間予測を行う際には、符号化対象画像43と同じ元映像41に含まれる符号化済みの画像の復号画像を参照画像42とし、符号化対象画像43中の対象ブロック44と相関の高いブロック予測画像45を参照画像42中から探索する。このとき、両ブロックの差分として計算される予測差分に加えて、予測に必要なヘッダ情報として、両ブロックの座標値の差分として表される動きベクトル46を符号化する。一方復号化の際には上記の逆の手順を行えばよく、復号化された予測差分を参照画像中のブロック45に加算することにより、復号化画像を取得できる。図5は、H264AVCによる画面内予測処理の動作に関する概念的な説明図である。画面内予測では、符号化対象ブロックの左、左上、上、右上に隣接する符号化済みのブロックの復号画像を用いて予測を行う。すなわち、予測にはこれらの隣接ブロックに含まれる13個の復号画素を参照画素51として利用し、予測方向ベクトル52を傾きとする同一直線上の画素はすべて同一の参照画素から予測される。予測方向ベクトル52には、縦、横、斜めなど、8種類の予測方向の中から最適なものをブロック単位で選択することができる。ただし、上記のような方向性に基づく予測モードに加えて、参照画素の平均値によって符号化対象ブロックに含まれるすべての画素を予測するDC予測予測モード2も用意されており、これら9種類の予測モードの中からどのモードを選択したのかを示す情報は、ヘッダ情報として予測差分とともに符号化される。図6は、予測時のブロックサイズ決定に関する概念的な説明図である。H264AVCでは、マクロブロックをさらに小さなサイズのブロックに階層分割して予測を行うことができ、図6は画面間予測を行う際に許容されているマクロブロックの分割パターンについて示している。すなわち、対象画像61の中のすべてのマクロブロック例えば62は、あらかじめ定義された16×16画素サイズから8×8画素サイズまでの4種類の分割パターンの中から最適なものを選択して予測を行うことができ、8×8画素サイズの分割パターン63が選ばれた場合はさらに細かなサブブロックに分割可能であり、各ブロックに対して8×8画素サイズから4×4画素サイズまでの4種類のパターンの中から最適なものを選択できる。こういったマクロブロックの分割パターンは、予測方法の識別子と組み合わせて符号化モードとし、ヘッダ情報として符号化される。図7は、符号化モードに関する概念的な説明図であり、符号化モードは少なくとも、単方向画面間予測71と、画面間予測72とに分類できる。単方向画面間予測71の識別子はPPredictiveであり、画面間予測72の識別子はIIntraである。図8は、CABACに関する概念的な説明図であり、上述のヘッダ情報や予測差分情報を可変長符号化する手順について示している。H264AVCでは、可変長符号として、処理量の低いCAVLCContextbasedAdaptiveVariableLengthCodingと、処理量は高いが高い符号化効率を実現できるCABACContextbasedBinaryArithmeticCodingの2種類が規定されている。CABACでは、まずヘッダ情報や予測差分情報などのSyntax要素81に対して2値化処理82を行い、0/1の2値で構成されるビット列BinString83に変換される。続いて、BinStringに対して算術符号化84を行って圧縮を実行し、符号化ストリーム85を生成する。図9は、レート制御に関する概念的な説明図である。図9ではまず、スライス単位のレート制御を行い、対象スライスにおいて基準となるQPQuantizationParameter:量子化パラメータを決定する。続いて対象スライス内のMBMacroBlock:マクロブロック単位のレート制御により、上記基準QPに基づいて各MBのQPを最終決定する。具体的には、スライス単位のレート制御では、過去スライスで発生した符号量と設定ビットレートのセット91から、対象スライスにて許容できる発生符号量符号量予算を計算し、それに応じたQPの基準値基準QP93を決定する。続いて、MB単位のレート制御では、各MBで実際に発生した符号量をフィードバックして符号量の変動を検知し、符号量予測に対して補正を行って残りの各MBのQPを決定する。しかし前述の通り、算術符号化を他の処理とは別に実行した場合、MB単位のレート制御において各MBの発生符号量を検知することが困難である。また、過去スライスの中にも、まだ算術符号化が完了していないMBが存在する可能性も高く、スライス単位のレート制御もうまく働かない。そのため、算術符号化処理が未完了のMBに対しては、発生符号量を推定することが必要である。図10は、本例の特徴である、発生符号量の推定方法に関する概念的な説明図である。この方法ではまず、Syntax要素を2値化して生成されたBinString83に対して、01シンボルの長さと出現確率86をそれぞれ計算し、これらの情報に基づいて推定符号量87を算出する。図11は、マクロブロック単位のBinString長と発生符号量の関係を示すシミュレーション結果である。両者の間にはある程度の相関性が観測されるものの、分散値が比較的に大きい。もし、MB単位の発生符号量を、予測差分情報を2値化したBinString長のみから推定しようとすると、推定精度はそれほど高くないことが分かる。図12及び図13は、BinString長と発生符号量、およびシンボル発生割合の関係を示すシミュレーション結果である。このシミュレーションでは、ITE社映像情報メディア学会の評価映像26種類の開始後30フレームをつなぎ合わせた映像を用いた。カテゴリ分けは、対象MB内の量子化済み変換係数CoeffのBinStringにおける0の発生割合を0.1刻みで10分割したものとし、横軸をBinString長、縦軸を発生符号量として示してある。このように同一シンボルの発生割合が近いMB群カテゴリの夫々において、特徴点が局所集中するようになり、発生符号量の推定精度が改善する。例えば、Coeffに関してシンボル0の発生割合が06以上07未満であるカテゴリに属するMBの場合、BinString長と発生符号量の関係は領域131内に集中することになる。他のカテゴリにおいても分散値が劇的に減少するものがあり、カテゴリごとにBinString長と発生符号量の関係をモデル化することによりBinString長とシンボルの発生割合から発生符号量の推定が可能となり、推定精度が大幅に向上する。上記モデル化はどのような手法を用いて行っても良いが、発生符号量のランダム性を除去するため、最小二乗法などを用いて近似関数を計算すると効果的である。図18は、図12などと同条件でBinString長毎に平均化して示したグラフであるが、0発生割合が低いときはサンプル自体が少ないこともあり凹凸が生じるので、これらを平坦化することが望ましい。近似関数は、区分的直線近似折れ線グラフでもよく、予め用意しておいても良いし、符号化を行う際に動的に関数を更新しても良い。BinString長と発生符号量の関係の局在化は、画面内予測と画面間予測の違いやQPなどに若干依存するため、モデルはそれらに応じて複数設けてもよい。なお、シンボルの発生割合の計算方法は特に問わない。本例では対象MBの予測差分情報に対してのみ発生割合の計算を行っており、それで十分な精度が得られることを確認しているが、動きベクトルや符号化モードなどの別Syntax要素を含んでいても問題はなく、Syntax要素ごとの発生割合を計算し、それらの加重和として計算しても良い。また、対象MBだけでなく、例えば1つ前のMBなど符号化済みの周辺MBにおけるシンボルを考慮しても良い。さらに本例ではMB単位で符号量の推定を行っているが、例えば画像単位、スライス単位、ブロック単位などどのような処理単位で符号量推定を行っても構わない。図14は、過去スライスの発生符号量を推定する方法の概念的な説明図である。スライス単位のレート制御では、符号化順で先行する過去スライス142等の符号量と設定ビットレートに基づいて対象スライス141の基準QPを決定するが、算術符号化の処理量は極端に高いため、過去スライス142においても算術符号化が完了していない可能性が高い。この場合、過去スライスは算術符号化が完了した完了領域143と、まだ未完了領域144に分割されるが、すでに完了した領域に対しては算術符号化後の実符号量を、一方でまだ完了していない領域についてはすでに述べた方法で各MBの発生符号量を推定した結果を利用し、それらの和を計算することによって符号量推定を行う。図1は、実施例1に係る動画像符号化装置のブロック図である。本例の動画像符号化装置は、入力された原画像101を保持する入力画像メモリ102と、入力画像を小領域に分割するブロック分割部103と、ブロック単位で画面内予測を行う画面内予測部105と、動き探索部104にて検出された動き量をもとにブロック単位で画面間予測を行う画面間予測部106と、画像の性質に合った予測モード予測手段およびブロックサイズを決定するモード選択部107と、予測差分を生成するための減算部108と、予測差分を量子化済み変換係数へ処理する周波数変換部109および量子化処理部110と、量子化済み変換係数等のシンタックス要素を符号化する可変長符号化部111と、符号化ストリームが所望のビットレートに納まるように量子化パラメータを制御するレート制御部112と、量子化済み変換係数から予測差分を復元復号化する逆量子化処理部113および逆周波数変換部114と、復元された予測差分を用いて復号化画像を生成するための加算部115と、復号化画像を保持して後の予測に活用するための参照画像メモリ116を有する。このように、図1に現れる範囲では、本例の動画像符号化装置の構成は、従来と同等である。入力画像メモリ102は、原画像101映像41と同義の中から一枚の画像を符号化対象画像として保持し、これをブロック分割部103にて細かなブロックに分割し、動き探索部104、画面内予測部105、画面間予測部106、および減算部108に渡す。動き探索部104では、参照画像メモリ116に格納されている復号化済み画像を用いて該当ブロックの動き量を計算し、動きベクトルを画面間予測部106に渡す。画面内予測部105および画面間予測部106は、それぞれ、周辺ブロックの原画像を用いた画面内予測処理および符号化済みの別画像を参照した画面間予測処理を、複数のブロックサイズで実行する。モード選択部107は、両予測部において複数のブロックサイズで実行された中から、最適な予測モードを選択し、その予測画像を減算部108および加算部115に送る。減算部108は、対象ブロックの原画像と、モード選択部107で選択された予測画像との差分予測差分を生成し、周波数変換部109に渡す。周波数変換部109および量子化処理部110は、送られてきた予測差分に対して指定された大きさのブロック単位で、DCTなどによる直交変換および量子化マトリクスによる量子化処理をそれぞれ行い、得られた量子化済み直交変換係数を可変長符号化部111および逆量子化部113に渡す。可変長符号化処理部111は、量子化済み直交変換係数とヘッダ情報を、記号の発生確率に基づいて符号化し符号化ストリームを生成するとともに、符号化レート制御に必要な情報符号量推定値を符号化完了前に算出してレート制御部112へ送る。レート制御部112は、送られてきた情報を基に最適なQPの値を決定して量子化処理部110へ送る。詳細は図17等で後述する。逆量子化処理部113および逆周波数変換部114では、量子化済み直交変換係数に対して、それぞれ逆量子化および逆DCTなどの逆直交変換を施し、予測差分を取得して加算部115に送る。続いて加算部115では、予測画像と復号化済み予測差分を加算して復号化画像を生成し、参照画像メモリ116に格納する。図2は、本実施例1における可変長符号化部111について、その詳細の一例を示したものである。可変長符号化部は、各シンタックス要素に対して2値化処理を行うための2値化処理部201と、2値化により得られるBinStringを格納するためのBinString格納メモリ202と、図9等で前述した方法にてMB単位の発生符号量を推定する符号量推定部203と、BinString格納メモリ202に蓄えられた2値情報に対して算術符号化を別プロセスで行う算術符号化部204を有する。2値化処理部201は、従来の2値化処理82に相当し、モード選択部107や量子化処理部110から入力されたシンタックス要素を、01の2値で構成される文字列BinStringに変換し、BinString格納メモリ202と符号量推定部203へと送る。符号量推定部203は、BinString長と、01シンボルの出現割合の両方に基づいてMB単位の発生符号量を推定し、レート制御部112へと送る。算術符号化部204は、従来の算術符号化84に相当し、BinString格納メモリに蓄えられた2値情報に対して算術符号化を別プロセスで行う。図15は、本例における1スライス分の符号化処理の流れ図である。まず151では、レート制御部112が、図9で概説したスライス単位のレート制御図16で詳述を行い、対象スライスの基準QPを決定する。次に152では、対象スライス内のすべてのMBに対してループ1内の153~155の処理が完了するまで該ループ1を続ける。なお、予測符号化モード選択DCT処理153は、動き探索部104~周波数変換部109により行われ、MB単位のレート制御154図17で詳述はレート制御部112で行われ、量子化2値化処理155は、量子化処理部110と2値化処理部201で行われる処理である。ループ1を抜けると次に、すべてのMBに対してループ2内の157の処理が完了するまで該ループ2を続ける。157は、別プロセスにてBinStringを算術符号化する処理であり、算術符号化部204で行われる。ループ2を抜けると、1スライス分のレート制御が終了する158。図16は、本例における1スライス分のスライス単位レート制御151の流れ図である。まず、対象スライスが最初のスライスである場合161、目標ビットレートに応じてあらかじめ設定しておいた基準QPを取得する162。一方で最初のスライスでない場合、図14で説明した手順で過去スライスの発生符号量を推定し163、推定された符号量と設定ビットレートの関係から該当スライスにて許容できる発生量符号量予算を算出する164。なお163は、過去スライスの領域全てで算術符号化が完了しているのであれば、推定ではなく実符号量でよい。続いて、符号量予算の大きさに基づいて対象スライスの基準QPを決定し165、1スライス分のスライス単位レート制御を終了する166。図17は、MB単位レート制御154について、1スライス分の処理を示す流れ図である。171では、対象スライス内のすべてのMBに対して、ループ内の172~177の処理が完了するまで該ループを続ける。すなわち、対象MBが対象スライス内で最初のMBである場合172、スライス単位のレート制御で決定した基準QPを対象MBに適用する173。一方、最初のMBでない場合は、符号量推定部203が、前MBのSyntax要素に対してBinString長と01シンボルの割合を計算し174、図12と図13の説明で述べた方法で前MBの発生符号量を推定する175。続いてレート制御部112が、推定された前MBの発生符号量を用いて符号量予算の値を更新し176、更新後の符号量予算に基づいて対象MBのQPを決定する177。以上の処理をすべてのMBに対して完了すれば、1スライス分のMB単位レート制御処理を終了する178。本実施例1の説明では、予測および周波数変換をブロック単位で行うものとしたが、それ以外にも例えば画像の背景から分離したオブジェクト単位で行っても良い。また、周波数変換の一例としてDCTを挙げているが、DSTDiscreteSineTransformation:離散サイン変換、DWTDiscreteWaveletTransformation:離散ウェーブレット変換、DFTDiscreteFourierTransformation:離散フーリエ変換、KLTKarhunenLoeveTransformation:カルーネンレーブ変換など、画素間相関除去に利用する直交変換ならどのようなものでも構わない。また、イントラモードでは特に画面内予測を行わなくても、MPEG1やMPEG2のイントラ符号化や静止画の符号化方式JPEGやJPEG2000のように、原画像に対して直接周波数変換を施しても構わない。また、可変長符号化方式としてはCABACに限らず、算術符号化を用いる方式ならどのようなものでも構わないし、特に算術符号化でなくてもシンボルの発生頻度の偏りを用いて圧縮を行うものならどのような符号化方式を用いても良い。