(57)【特許請求の範囲】
【請求項１】
多値データが２値化された２値シンボル列が算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置であり、
２値シンボル列における各２値シンボルの発生確率と、前記２値シンボルにおいて発生確率の高い方の２値シンボルを示す優勢シンボル情報との組合せに対応し、予め統計的に求められた前記２値シンボルを算術符号化した際の予測符号量が記憶された第１符号量テーブルと、
各２値シンボルに対応する前記発生確率と前記優勢シンボル情報を読み出して前記第１符号量テーブルの参照情報とするとともに、実際に発生した２値シンボルに対応して前記発生確率と前記優勢シンボル情報を更新するコンテキスト演算部と、
前記発生確率と前記優勢シンボル情報とに対応して読み出された前記予測符号量を、２値シンボル列における全ての２値シンボルの処理毎に加算し、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算部と
を有し、
同一のコンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列に対し、当該コンテキスト値の種別と、２値シンボルの発生確率の初期値と、発生確率が高い方の２値シンボルを示す優勢シンボル情報の初期値と、発生した２値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記２値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第２符号量テーブルをさらに有し、
前記コンテキスト演算部が、
前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列でない場合、前記第１符号量テーブルにより、当該２値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、
一方、前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列である場合、前記第２符号量テーブルにより、当該２値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新し、
前記符号量加算部が、
読み出した予測符号量を加算して、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力し、
前記第１符号量テーブル及び前記第２符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、
前記２値シンボルが算術符号化処理される際、前記２値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記２値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められる
ことを特徴とする符号量予測装置。
【請求項２】
前記コンテキスト演算部が前記２値シンボル列の入力に対して並列に複数個設けられ、複数の前記２値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする請求項１に記載の符号量予測装置。
【請求項３】
多値データが２値化された２値シンボル列を算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置の動作をコンピュータに実行させるプログラムであり、
２値シンボル列における各２値シンボルの発生確率と、発生確率が高い方の２値シンボルを示す優勢シンボル情報とにより、前記発生確率と、前記優勢シンボル情報との組合せに対応し、予め統計的に求められた前記２値シンボルを算術符号化した際の予測符号量が記憶された第１符号量テーブルを参照するとともに、実際に発生した２値シンボルに対応して前記発生確率と前記シンボル情報を更新する第１のコンテキスト演算手段と、
前記２値シンボル列における前記シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する第２のコンテキスト演算手段と、
前記発生確率と前記シンボル情報とに対応して読み出された前記予測符号量を、２値シンボル列における全ての２値シンボルの処理毎に加算し、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算手段と
して機能させ、
前記予測符号量を求める対象の２値シンボル列が同一のコンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列でない場合、前記第１符号量テーブルにより、当該２値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、一方、前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列である場合、同一の前記コンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列に対し、当該コンテキストの種別と、２値シンボルの発生確率の初期値と、発生確率が高い方の２値シンボルを示す優勢シンボル情報の初期値と、発生した２値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記２値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第２符号量テーブルにより、当該２値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新する第３のコンテキスト演算手段と、
読み出した予測符号量を加算して、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する手段と
して機能させ、
前記第１符号量テーブル及び前記第２符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、
前記２値シンボルが算術符号化処理される際、前記２値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記２値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められている
プログラム。
【請求項４】
前記第１のコンテキスト演算手段、前記第２のコンテキスト手段及び前記第３のコンテキスト手段が前記２値シンボル列の入力に対して並列に複数個設けられ、複数の前記２値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする請求項３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像のディジタル信号を、例えば、ＭＰＥＧ（Moving Picture Expert Group）方式やＩＴＵ−Ｔ（International Telecommunication Union Telecommunication Standardization Sector）Ｈシリーズ方式に従ってリアルタイムに符号化する映像符号化における符号予測装置及びプログラムに関するものである。
【背景技術】
【０００２】
動画像や音声などのディジタル信号を圧縮符号化する技術として、例えばＭＰＥＧ方式が知られている。
デジタル放送やＤＶＤ（Digital Versatile Disc）への動画の記録などの高画質（高ビットレート）用途に対し、ＭＰＥＧ−２符号化方式が、また携帯電話におけるテレビ視聴などの低画質（低ビットレート）用途はＭＰＥＧ−４符号化方式が広く用いられている。
また、最近では、ＩＴＵ−Ｔと、ＩＳＯ（International Organization for Standardization）／ＩＥＣ（International Electrotechnical Commission）ＪＴＣ（Joint Technical Committee ）とが共同で標準化を行ったＨ．２６４／ＡＶＣ（Advanced Video Coding）符号化方式が、高画質と高圧縮率とを両立する新たな符号化方式として注目を集めている。
【０００３】
Ｈ．２６４／ＡＶＣ符号化方式は、信号の符号化の最終段に位置するエントロピー符号化方式として、従来のハフマン符号化に比較してより高い符号化効率を実現するための可逆符号化であるコンテキスト型の算術符号化（ＣＡＢＡＣ：Context-based Adaptive. Binary Arithmetic Coding）処理を使用することができる。
【０００４】
図１０は、従来の映像符号化装置の構成を示すブロック図である。すなわち、図１０は、このＨ．２６４／ＡＶＣ符号化方式における算術符号化処理の概要を説明する図である。
図示しない映像符号化器の前段部において、画像予測処理、直交変換、量子化などを経て、マクロブロックのスライス・ヘッダ情報（モード情報や動き情報）や量子化された変換係数情報である輝度・色差レベル情報等をシンタックスエレメント（シンタックス要素）とする多値シンボルが生成される。この生成された多値シンボルが、前段部から映像符号化器に供給され、算術符号化処理が行われる。
【０００５】
映像符号化器が行う算術符号化処理において、２値化処理部２１は、Ｈ．２６４／ＡＶＣ符号化方式標準で定められた順序に従い、「０」及び「１」のみから記述される２値シンボルの列に変換する。この多値シンボルを２値シンボルに変換する処理は、バイナライゼーションとも示される。また、２値シンボルはビンとも示される。
このとき、２値化処理部２１は、多値データを構成するシンタックスエレメントを判別し、データの確率特性によりユーナリーバイナライゼーションや固定長バイナライゼーションのテーブルを用い、多値シンボルを２値シンボルの列、すなわちビン系列に変換する。
【０００６】
２値化処理部２１は、生成した２値シンボルを、後段に配置された中間バッファ２２に書き込み、一旦蓄積する。
このとき、２値化処理部２１の処理は、多値シンボル毎に対して原理的に独立に行うことができ、複数の多値シンボルの各々の２値化処理を並列に行うことも可能である。
【０００７】
算術符号化処理部３は、中間バッファ２２の後段に配置され、Ｈ．２６４／ＡＶＣ符号化方式標準で定められた順序に従い、中間バッファ２２から２値化シンボルのビン系列を読み出して算術符号化の処理を行う。
算術符号化処理部３は、Ｈ．２６４／ＡＶＣ符号化方式標準における算術符号化として、バイパス符号化を行うバイパスコーダ３４と、レギュラー符号化を行うレギュラーコーダ３３とを有している。いずれのコーダを選択するかはＨ．２６４／ＡＶＣ符号化方式標準で定められている。
【０００８】
バイパスコーダ３４は、中間バッファ２２からビン系列が供給されると、H.264/AVC符号化標準でレギュラー符号化するよう指示されていない場合、このビン系列をバイパス符号化し、符号化ストリームとして出力する。算術符号化された符号化ストリームをビットともいう。
このとき、バイパスコーダ３４は、２値シンボルのビン系列と同一長のビット数からなる符号化ストリームを、算術符号化処理の結果として出力する。すなわち、1 ビン=1ビットの関係が成り立つ。
【０００９】
一方、算術符号化処理部３は、中間バッファ２２からビン系列が供給され、H.264/AVC符号化標準でレギュラー符号化するよう指示されている2値シンボル（ビン）について、レギュラーコーダ３３による符号化を行うため、入力されるビン系列をまずコンテキスト演算部３１に対して供給する。
コンテキスト演算部３１は、レギュラーコーダ３３において算術符号化処理を行うにあたり、ビン系列を構成するそれぞれのビンについて、2値シンボル0および1がどのような確率で発生するか、その発生確率を算出するとともに、この発生確率の値を更新してゆく役割を持つ。すなわち、コンテキスト演算部３１は、レギュラーコーダ３３において算術符号化処理が行われる毎に、ビン系列を構成するそれぞれのビンの発生確率を算出するとともに、この発生確率の値を更新する処理を行う。
【００１０】
H.264/AVC符号化標準では、ビン系列の種別と、各ビン系列において先頭から何個目のビンであるかに呼応して、コンテキスト値ＣｔｘＩｄｘが定義されており、このＣｔｘＩｄｘごとに、発生確率の値が管理される。したがって、コンテキスト状態保持バッファ３２には、それぞれのビンに対する上記発生確率の値が、各々のＣｔｘＩｄｘ値に対応する形で格納されている。発生確率の値としては、当該のビンについて発生確率の高い方の２値シンボルが０か１かのいずれであるかを示すｖａｌＭＰＳ値と、その発生確率を示す値ｐＳｔａｔｅＩｄｘが対で格納されている。
【００１１】
ここで、コンテキスト値ＣｔｘＩｄｘの算出については、隣接マクロブロックの符号化結果なども参照されるが、その算出の詳細はＨ．２６４／ＡＶＣ符号化方式標準に記載されて、周知技術であるため省略する。
【００１２】
コンテキスト演算部３１は、コンテキスト値ＣｔｘＩｄｘをテーブル引きの見出しとし、コンテキスト状態保持バッファ３２から、現在の２値シンボル（ビン）のコンテキスト値ＣｔｘＩｄｘに対応する発生確率を示す値ｐＳｔａｔｅＩｄｘと、ｖａｌＭＰＳ値とを、コンテキスト状態保持バッファ３２から読み出して、レギュラーコーダ３３へ出力する。
【００１３】
レギュラーコーダ３３は、コンテキスト演算部３１から２値シンボル（ビン）をあらかじめ定められた順序に従って１つづつ、現在のビンに対応する発生確率を示す値ｐＳｔａｔｅＩｄｘと、ｖａｌＭＰＳ値とともに入力し、この２値シンボルの算術符号化の演算を行う。
このレギュラーコーダ３３は、周知技術としての算術符号化の処理として、数直線上の０から１までの有限精度の範囲に、２値シンボル０または１の発生確率に対応する幅に分割区間を設定し、実際に発生した２値シンボルに対応する区間を新たな区間として、算術符号化の進行に伴い分割区間をさらに分割して狭めていく。
【００１４】
ここで、区間をさらに分割する場合、予想される２値シンボル（ビン）の発生確率を示す値ｐＳｔａｔｅＩｄｘに応じて、すなわちｐＳｔａｔｅＩｄｘによって表される異なる２値シンボルの発生確率の比に応じて、発生しやすい２値シンボル（０か１のいずれか一方の優勢シンボル）には長い分割区間を、発生し難い２値シンボル（０か１のいずれか他方の劣勢シンボル）には短い分割区間を割り当てることで、発生確率に応じて最適な符号化を実現することができる。
Ｈ．２６４／ＡＶＣ符号化方式標準においては、この分割区間の長さがｃｏｄＩＲａｎｇｅ値で管理されており、２５６から５１０までの値をとり、算術符号化を開始する際の初期値は５１０である。
レギュラーコーダ３３は、内部の記憶部に現在の分割区間の長さを示すｃｏｄＩＲａｎｇｅ値を保持している。
【００１５】
また、レギュラーコーダ３３は、保持しているｃｏｄＩｒａｎｇｅ値の示す分割区間の長さをさらに２つに分割する際に、２値シンボル０と１との各々に対し、それぞれの分割区間の長さをどう割り振るかの設定を行う。
レギュラーコーダ３３は、この分割区間の割り振りを、２値シンボルと共に供給された発生確率を示す値ｐＳｔａｔｅＩｄｘと、ｖａｌＭＰＳ値とにより、Ｈ．２６４／ＡＶＣ符号化方式標準で定められたテーブルを用いて、このテーブルに記載されている規則により実施する。
発生確率を示す値ｐＳｔａｔｅＩｄｘが０の場合、０と１とがほぼ５０％の確率で発生することを意味しており、発生確率を示す値ｐＳｔａｔｅＩｄｘが大きければ大きいほど、ｖａｌＭＰＳ値で示されるシンボルが発生しやすくなることを示している。
【００１６】
このため、レギュラーコーダ３３は、例えば、ｖａｌＭＰＳ値で示される２値シンボルが１である場合、すなわち２値シンボル（ビン）の発生確率が１のほうが０より高い。このため、レギュラーコーダ３３は、ｐＳｔａｔｅＩｄｘの値が大きいほど、１に対応する分割区間を長く設定し、０に対応する分割区間を短く設定することになる。
次に、レギュラーコーダ３３は、入力された２値シンボル（ビン）に対応する分割区間として、上記のいずれかの分割区間を選択する。
そして、レギュラーコーダ３３は、選択した分割区間に基づいて、ｃｏｄＩＲａｎｇｅ値を狭める処理を行う。
【００１７】
このとき、レギュラーコーダ３３は、出力する分割区間においてｃｏｄＩＲａｎｇｅ値が一定値未満となった場合、例えば、分割区間のｃｏｄＩＲａｎｇｅ値が２５６未満となった場合、分割区間のｃｏｄＩＲａｎｇｅ値が予め設定された閾値である２５６以上となるまで、ｃｏｄＩＲａｎｇｅ値を２倍とするリノーマライゼーション処理（正規化処理）を行う。
【００１８】
そして、レギュラーコーダ３３は、このリノーマライゼーション処理を１回行う毎に、符号化ストリームとして１ビットを出力する。また、例えば、レギュラーコーダ３３は、分割区間のｃｏｄＩＲａｎｇｅ値が２５６未満とならなくとも、出力すべき区間の上位ビットが確定した際、この確定した上位ビットを符号化ストリームの１ビットとして出力し、リノーマイゼーション処理を行うよう構成されている場合もある。
【００１９】
また、この符号化処理毎に、コンテキスト演算部３１は、入力される２値シンボル（ビン）に合わせ、コンテキスト状態保持バッファ３２のｐＳｔａｔｅＩｄｘとｖａｌＭＰＳ値との更新を行う。
すなわち、コンテキスト演算部３１は、ｖａｌＭＰＳ値で示されたものと同一の２値シンボルが符号化された場合、Ｈ．２６４／ＡＶＣ符号化方式標準で定められた方法により従い、ｐＳｔａｔｅＩｄｘの値を上昇させる。この処理は、ｖａｌＭＰＳ値として示されている、発生確率の高い方の２値シンボルの発生確率が高くなったことを、ｐＳｔａｔｅＩｄｘに反映させるために行われる。
【００２０】
一方、コンテキスト演算部３１は、ｖａｌＭＰＳ値の示す２値シンボルと異なる２値シンボルが符号化された場合、Ｈ．２６４／ＡＶＣ符号化方式標準で定められた方法により従い、ｐＳｔａｔｅＩｄｘの値を減少させる。この処理は、ｖａｌＭＰＳ値として示されている、発生確率の高い方の２値シンボルの発生確率が低下したことを、ｐＳｔａｔｅＩｄｘに反映させるために行われる。
また、コンテキスト演算部３１は、発生確率を示す値ｐＳｔａｔｅＩｄｘが０となった後、ｖａｌＭＰＳ値の示す２値シンボルと異なる２値シンボルが発生した場合、ｖａｌＭＰＳ値の示す２値シンボルの入れ替え、例えば１であると０とし、逆に０であると１に変更する。
【００２１】
上述したように、コンテキスト演算部３１は、算術符号化処理を行っているＣｔｘＩｄｘ値に対応する、コンテキスト状態保持バッファ３２に格納されているｐＳｔａｔｅＩｄｘ及びｖａｌＭＰＳ値を変更して、コンテキスト状態保持バッファ３２に書き戻す。このようにして、コンテキスト演算部３１は、同一のＣｔｘＩｄｘ値を有する次の２値シンボルの算術符号化の処理に用いる発生確率を示す値ｐＳｔａｔｅＩｄｘ及びｖａｌＭＰＳ値の再設定を行う。
【００２２】
ところで、上述した映像符号化器においては、画質制御及びビットレート制御の観点から、符号化ストリームビットのビット数である発生符号量を、目標とする目標発生符号量（ビット数）に近づける処理が行われている。
そして、映像符号化器は、実際に符号化処理結果として出力された符号化ストリームの量であるビット数を監視し、符号化ストリームの発生符号量が目標発生符号量を超える場合、マクロブロック予測残差を量子化する際の量子化ステップ（ＱＰ値）を大きくする。
【００２３】
一方、映像符号化器は、符号量が少ない場合、マクロブロック予測残差を量子化する際の量子化ステップを小さくし、発生符号量の制御を行う。
上述した理由から、供給される動画像（映像）の符号化単位のデータ、算術符号化により実時間で符号化するリアルタイム符号化器の場合、画質制御及びビットレート制御等の安定性を実現するため、符号化を行った結果として、実際に出力される符号化ストリームの発生符号量をなるべく早く得て、量子化ステップ（ＱＰ値）の加減により符号量を調整するフィードバックをなるべく早く行うことが望ましい。
【００２４】
しかしながら、ＣＡＢＡＣ符号化においては、算術符号化処理において、特に、レギュラーコーダ３３において、ｃｏｄＩＲａｎｇｅ値の分割処理及びリノーマライゼーション処理を、予め定められた順序で供給される２値シンボル（ビン）に対し、逐次的に行う構成となっている。
この算術符号化処理は、供給される２値シンボル（ビン）を用い、順次符号化ストリームを生成するため、処理自体を並列に行うことができない。
【００２５】
したがって、リアルタイム符号化器において、２値シンボル（ビン）が局所的に多く発生した場合、レギュラーコーダ３３がこの多く発生したデータ量の多い（ビンの数が多い）ビン系列を逐次処理することになる。
この逐次処理により、中間バッファ２２において、２値化処理部２１からの２値シンボルの待ち行列が生じることなり、リノーマライゼーション処理後の符号化ストリームの出力の遅延が大きくなる現象が発生する。
【００２６】
そして、この符号化ストリームの出力の遅延により、量子化ステップを調整して発生符号量の制御を行おうとしても、算術符号化処理を終了するまでの間、発生符号量が確定するタイミングが大きく遅れることになる。
このように、発生符号量の確定が遅れている間にも、算術符号化以前の符号化処理は実時間で継続して行われるため、結果として発生符号量の大小を量子化ステップの制御に反映するタイミングが遅れる、すなわち符号量制御のフィードバックループ遅延が長くなることで、発生符号量の制御が不安定となってしまう。
したがって、発生符号量の制御を安定させるため、算術符号化処理後の発生符号量を、算術符号化処理の前に予測する手段が必要となる。
【００２７】
この符号化処理の前に発生符号量を推定する方法として、入力される２値シンボル量を発生符号量の予測値として用いる手法が開示されている（例えば、特許文献１参照）。
また、符号化処理の前に発生符号量を推定する方法として、関数を用いてマクロブロックから得られる予測残差により、発生符号量を予測する手法も開示されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【００２８】
【特許文献１】特開２００５−３１８２９６号公報
【特許文献２】特開２００５−２０３９０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００２９】
しかしながら、特許文献１及び特許文献２に示す予測方法にあっては、発生符号量の予測を精度良く行うことができない。
すなわち、２値シンボルを符号化ストリームとした際の発生符号量は、２値シンボル量や予測残差の影響もあるが、実質的に符号化対象である画像の性質によって異なるため、２値シンボル量や予測残差からでは単純に発生符号量を予測することができない。
このため、量子化ステップを変更するフィードバック情報として用いても、発生符号量を精度良く制御することができず、かつ画質を安定化させることもできない。
【００３０】
本発明は、このような事情に鑑みてなされたもので、従来に比較して精度の高い発生符号量の予測値を、算術符号化処理が終了する前に得ることができる符号量予測装置を提供することを目的とする。
【課題を解決するための手段】
【００３１】
本発明の符号量予測装置は、多値データが２値化された２値シンボル列が算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置であり、２値シンボル列における各２値シンボルの発生確率と、前記２値シンボルにおいて発生確率の高い方の２値シンボルを示す優勢シンボル情報との組合せに対応し、予め統計的に求められた前記２値シンボルを算術符号化した際の予測符号量が記憶された第１符号量テーブルと、各２値シンボルに対応する前記発生確率と前記優勢シンボル情報を読み出して前記第１符号量テーブルの参照情報とするとともに、実際に発生した２値シンボルに対応して前記発生確率と前記優勢シンボル情報を更新するコンテキスト演算部と、前記発生確率と前記優勢シンボル情報とに対応して読み出された前記予測符号量を、２値シンボル列における全ての２値シンボルの処理毎に加算し、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算部とを有し、同一のコンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列に対し、当該コンテキスト値の種別と、２値シンボルの発生確率の初期値と、発生確率が高い方の２値シンボルを示す優勢シンボル情報の初期値と、発生した２値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記２値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第２符号量テーブルをさらに有し、前記コンテキスト演算部が、前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列でない場合、前記第１符号量テーブルにより、当該２値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、一方、前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列である場合、前記第２符号量テーブルにより、当該２値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新し、前記符号量加算部が、読み出した予測符号量を加算して、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力し、前記第１符号量テーブル及び前記第２符号量テーブルに記憶されている前記予測符
号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、前記２値シンボルが算術符号化処理される際、前記２値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記２値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められることを特徴とする。
【００３４】
本発明の符号量予測装置は、前記コンテキスト演算部が前記２値シンボル列の入力に対して並列に複数個設けられ、複数の前記２値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする。
【００３５】
本発明のプログラムは、多値データが２値化された２値シンボル列を算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置の動作をコンピュータに実行させるプログラムであり、２値シンボル列における各２値シンボルの発生確率と、発生確率が高い方の２値シンボルを示す優勢シンボル情報とにより、前記発生確率と、前記優勢シンボル情報との組合せに対応し、予め統計的に求められた前記２値シンボルを算術符号化した際の予測符号量が記憶された第１符号量テーブルを参照するとともに、実際に発生した２値シンボルに対応して前記発生確率と前記シンボル情報を更新する第１のコンテキスト演算手段と、前記２値シンボル列における前記シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する第２のコンテキスト演算手段と、前記発生確率と前記シンボル情報とに対応して読み出された前記予測符号量を、２値シンボル列における全ての２値シンボルの処理毎に加算し、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算手段として機能させ、前記予測符号量を求める対象の２値シンボル列が同一のコンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列でない場合、前記第１符号量テーブルにより、当該２値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、一方、前記予測符号量を求める対象の２値シンボル列が前記同一コンテキスト２値シンボル列である場合、同一の前記コンテキスト値に属する前記２値シンボルが複数連続している同一コンテキスト２値シンボル列に対し、当該コンテキストの種別と、２値シンボルの発生確率の初期値と、発生確率が高い方の２値シンボルを示す優勢シンボル情報の初期値と、発生した２値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記２値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第２符号量テーブルにより、当該２値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新する第３のコンテキスト演算手段と、読み出した予測符号
量を加算して、加算結果を前記２値シンボル列の算術符号化された発生符号量の予測値として出力する手段として機能させ、前記第１符号量テーブル及び前記第２符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、前記２値シンボルが算術符号化処理される際、前記２値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる２値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を２分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記２値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められているプログラムである。
【００３６】
本発明のプログラムは、前記第１のコンテキスト演算手段、前記第２のコンテキスト手段及び前記第３のコンテキスト手段が前記２値シンボル列の入力に対して並列に複数個設けられ、複数の前記２値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする。
【発明の効果】
【００３７】
この発明によれば、映像符号化装置が出力する符号化ストリームの発生符号量を予測する際、２値シンボルのビン系列、発生確率を示す値ｐＳｔａｔｅＩｄｘ、及びｖａｌＭＰＳ値が得られれば、算術符号化処理を行うことなく、予め設定された予測値テーブルから、ビン系列、ｐＳｔａｔｅＩｄｘ及びｖａｌＭＰＳ値に対応する予測値を読み出すことにより、容易に精度の高い発生符号量の予測値を高速に求めることができる。
【００３８】
また、この発明によれば、各コンテキスト値（ＣｔｘＩｄｘ）の示すビン系列の各々を独立して、予測値テーブルから読み出すことが可能であるため、予測精度の高い符号予測回路を並列に形成することができる。
【図面の簡単な説明】
【００３９】
【図１】この発明の第１の実施形態による符号量予測装置を用いた映像符号化装置の構成例を示すブロック図である。
【図２】図１の映像符号化装置における算術符号化処理の動作例を示すプログラムの概念図である。
【図３】図１の映像符号化装置における予測値の算出処理の動作例を示すプログラムの概念図である。
【図４】この発明の第２の実施形態による符号量予測装置を用いた映像符号化装置の構成例を示すブロック図である。
【図５】ｐＳｔａｔｅＩｄｘ値、ｖａｌＭＰＳ値および符号化対象２値シンボル（ビン）のデータの組み合わせと、この組み合わせから求められた予測符号量とを対応付けた予測符号量テーブルの構成を示す図である。
【図６】符号量Ａテーブル１４ａの構成を示す図である。
【図７】符号量Ｂテーブル１４ｂの構成を示す図である。
【図８】複数のビンからなるビン系列の符号量予測値を計算する処理の動作例を示すプログラムの概念図である。
【図９】現在のｐＳｔａｔｅＩｄｘ値と、ｖａｌＭＰＳ値により変化した次のｐＳｔａｔｅＩｄｘ値との対応を示すテーブルの構成を示す図である。
【図１０】従来の映像符号化装置の構成を示すブロック図である。
【発明を実施するための形態】
【００４０】
＜第１の実施形態＞
以下、図面を参照して、本発明の第１の実施形態について説明する。図１は、この発明の第１の実施形態による符号量予測装置を用いた映像符号化装置（ＣＡＢＡＣ符号化器）の構成例を示す概略ブロック図である。同図において、図１０の各部に対応する部分には同一の符号を付け、その説明を省略する。
図１における映像符号化装置には、図１０の２値化処理部２１、中間バッファ２２、算術符号化処理部３に加えて、符号量予測部１が設けられている。本願実施形態においては、図１０の従来の映像符号化装置と異なる構成がこの符号量予測部１であり、以下、この符号化予測部１について、詳細に説明する。
【００４１】
符号量予測部１は、レギュラーコーダ３３の生成する符号化ストリームの発生符号量を予測するものであり、コンテキスト演算部１１、コンテキスト状態保持バッファ１２、符号量テーブル及び符号量加算部１６を有している。
コンテキスト演算部１１は、コンテキスト演算部３１と同様に、それぞれの２値シンボル（ビン）に対して、対応するコンテキスト値ＣｔｘＩｄｘをテーブル引きの見出しとして、コンテキスト状態保持バッファ１２から２値シンボル（ビン）のｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値を読み出すとともに、実際に発生した２値シンボル（ビン）に対応したｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値の更新処理を行い、コンテキスト状態保持バッファ１２に上書きして更新する。ここで、コンテキスト状態保持バッファ１２は、コンテキスト状態保持バッファ３２と同様の構成をしている。また、ｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値の読み出しおよび更新処理も、背景技術等において従前に説明した通りである。
【００４２】
また、コンテキスト演算部１１は、テーブル参照情報１３を符号量テーブル１４に出力する。テーブル参照情報１３の構成については後述する。
符号量加算部１６は、コンテキスト演算部１１が出力したテーブル参照情報１３に応じて、符号量テーブル１４から読み出された予測符号量１５を、符号量加算部１６に対して出力する。符号量テーブル１４に格納されている予測符号量１５を予め生成する方法については後述する。
符号量加算部１６は、入力されるビット符号量を累算し、合計予測符号量１７として出力する。
【００４３】
次に、図を用いて、符号量テーブル１４に予め格納される予測符号量１５の生成方法について説明する。この説明に先立ち、算術符号化において処理が遅延する原因について説明する。図２は、図１の映像符号化装置における算術符号化処理の動作例を示すプログラムの概念図である。すなわち、図２は、レギュラーコーダ３３が算術符号化を行う際の処理の動作例を疑似コードとして記載した図である。以下の説明は、図２の処理を予めコンピュータを用いたシミュレーションにより実行することを想定して行う。
擬似コードにおける整数（ｉｎｔ）ｒａｎｇｅが、レギュラーコーダ３３の動作説明における分割区間の長さを示すｃｏｄＩＲａｎｇｅに相当している。
また、ｕｐｄａｔｅ＿ｒａｎｇｅ（ｒａｎｇｅ，ｂｉｎ［ｉ］）関数が、レギュラーレコーダ３３において行われる算術符号化処理自体に相当し、ビン系列ｂｉｎ［ｉ］の先頭のビン（２値シンボル）から符号化処理を順次行う。
【００４４】
具体的には、コンピュータの記憶部に２値シンボルのビン系列ｂｉｎ［ｉ］が記憶される領域と、このビン系列のそれぞれの２値シンボル（ビン）に対するＣｔｘＩｄｘ値に対応してｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値を記憶するコンテキスト状態保持バッファとを設け、図２に示す処理が、コンピュータにより実行される。
コンピュータは、ｂｉｎ［ｉ］から２値シンボルを順次読み出す。また、それぞれの２値シンボル（ビン）に対応するＣｔｘＩｄｘ値により、コンテキスト状態保持バッファからｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値を読み出して取得するが、この処理は本説明の中心事項ではないため、図２の擬似コードでは省略している。
取得した後、コンピュータは、この読み出した２値シンボル（ビン）と、取得したｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳとにより、ｕｐｄａｔｅ＿ｒａｎｇｅ（ｒａｎｇｅ，ｂｉｎ［ｉ］）関数によるｒａｎｇｅの再分割を行う。
【００４５】
そして、コンピュータは、すでに述べたコンテキスト演算部３１と同様の処理として、再分割毎に、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値との更新処理を行うとともに、更新したｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値とを、ＣｔｘＩｄｘ値に対応させて、テキスト状態保持バッファにおいて直前のデータに上書きして記憶させるが、この処理は本説明の中心事項ではないため、図２の擬似コードでは省略している。
次に、コンピュータは、図２のリストに記載されたｗｈｉｌｅ文の処理において、コンテキスト演算部３１が行うリノーマライゼーションと同様の処理を行う。
【００４６】
すなわち、コンピュータは、狭められた分割区間の長さを示すｃｏｄＩＲａｎｇｅ値が、２５６より大きくなるまで、ｃｏｄＩＲａｎｇｅ値の左へのビットシフト、すなわち２倍にする処理を繰り返す。
このとき、コンピュータは、符号化ストリームのビット数を求めるため、ビットシフトを行う毎に、ビット出力に対応したｎｒ＿ｏｕｔｂｉｔｓのインクリメント（＋＋ｎｒ＿ｏｕｔｂｉｔｓ）を行う。これにより、１つのビンを算術符号化した際に出力される符号化ビットのビット数を求めることができる。
そして、ｆｏｒ（ｉｎｔ ｉ；ｉ＜ｎｒ＿ｂｉｎ；＋＋ｉ）｛｝により、１つのビン系列の算出符号化処理における符号化ストリームのビット数を求めることができる。
【００４７】
さて、算術符号化の処理が遅延する原因、言い換えると算術符号化を並列に処理することができない原因について考えてみると、ｂｉｎ［ｉ］を算術符号化するためにはｂｉｎ［ｉ−１］まで符号化した状態でのｒａｎｇｅ値が必要となるためであることがわかる。
すなわち、ｂｉｎ［ｉ］を符号化する際のｒａｎｇｅ値がわからなければ、算術符号化を行うことができない。
ここで、ｂｉｎ［ｉ］で発生する符号量を、ｒａｎｇｅ値が分からない状態でも、何らかの形で予想したいと考える。このとき、ｒａｎｇｅの値が２５６、２５７から５１０まで確率的に均一に分布しているとの前提が成り立つとする。そのうえで、ｒａｎｇｅの値が２５６の場合、２５７の場合から５１０の場合それぞれについて、ｕｐｄａｔｅ＿ｒａｎｇｅ（）処理およびリノーマライゼーション処理を行ってｎｒ＿ｏｕｔｂｉｔｓの値を求め、その平均値をとる。するとこの平均値は、ｒａｎｇｅ値が分からない状態において、ｂｉｎ［ｉ］を算術符号化した際に発生する符号量の期待値（すなわち、統計的手法によって求められた期待値）を示していることになる。
【００４８】
そこで、ｂｉｎ［ｉ］を構成するある２値シンボル（ビン）に対応するｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値が与えられた場合に、ｒａｎｇｅの値が２５６〜５１０の２５５通りについて、図２で説明した擬似コードをひとつのｉについて実行し、ｎｒ＿ｏｕｔｂｉｔｓの平均値を算出すれば、発生符号量の予測が可能となることがわかる。
このため、すべての２値シンボル（ビン）に対して発生符号量の予測を可能とするためには、すべてのｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組み合わせに対して、上記の平均値を算出しておけば、発生符号量の予測が可能となる。
【００４９】
以下、図３を用いて、この１つの２値シンボルを算術符号化する際に発生する符号化ストリームのビット数の予測値を求める方法について説明する。
図３は、図１の映像符号化装置における予測値の算出処理の動作例を示すプログラムの概念図である。すなわち、図３は、符号量テーブル１４に格納する、２値シンボル毎の予測符号量を事前生成する処理例を示すコードを示す図である。
この図３において、ｕｐｄａｔｅ＿ｒａｎｇｅ＿ａｎｄ＿ｒｅｎｏｒｍｌｉｚｅ（ａｓｓｕｍｅｄ＿ｒａｎｇｅ）の関数は、図２における２値シンボルの算術符号化処理を行うｕｐｄａｔｅ＿ｒａｎｇｅ（ｒａｎｇｅ，ｂｉｎ［ｉ］）の関数と、リノーマライゼーションを行うｗｈｉｌｅ文とをまとめた関数である。
【００５０】
そして、コンピュータは、図３に記載された関数により、２値シンボルを算術符号化処理した際に発生するビット数であるビット積算値ｎｒ＿ｏｕｔｂｉｔｓを、ｆｏｒ（ｉｎｔ ａｓｓｕｍｅｄ＿ｒａｎｇｅ＝２５６；ａｓｓｕｍｅｄ＿ｒａｎｇｅ＜５１１；＋＋ａｓｓｕｍｅｄ＿ｒａｎｇｅ）｛  ｝の関数により、ｒａｎｇｅが２５６から５１０の場合の全てで算出し、積算値ｓｕｍ＿ｏｆ＿ｎｒ＿ｏｕｔｂｉｔｓとして算出する。
次に、コンピュータは、ｒａｎｇｅが２５６から５１０の場合の全てのビット積算値の合計であるｓｕｍ＿ｏｆ＿ｎｒ＿ｏｕｔｂｉｔｓを２５５で除算し、ｒａｎｇｅが２５６から５１０の範囲内における２５５個種類のｒａｎｇｅでの平均値を算出し、予測符号量として出力する。
【００５１】
コンピュータは、この予測ビット量を、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組合せ毎に、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組合せの全てに対して算出する。
また、２値シンボルが０及び１の各々の場合についても算出する。
そして、コンピュータは、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組合せの全てにおいて、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組合せと、対応する予測ビット量とを対応付けて、符号量テーブル１４に書き込む。
また、図３においては、記載されているｒａｎｇｅが２５６から５１０までの範囲におけるビット積算値の合計値の平均を求めているが、ｒａｎｇｅの範囲を２５６から５１１までの２５６個とし、平均値を求める演算を２５６で除算することとし、除算を右へ８ビット分シフトさせるシフト演算のみで構成しても良い。
【００５２】
上述した符号量テーブル１４を検索するインデックスとなるのテーブル参照情報１３は、ｐＳｔａｔｅＩｄｘ値（例えば、６ビット）、ｖａｌＭＰＳ値（１ビット）、ｂｉｎ［ｉ］における１ビンの２値シンボル（１ビット）の各数値から構成する。
ここで、Ｈ．２６４／ＡＶＣ符号化標準においては、ｖａｌＭＰＳ値と、２値シンボルとが同一か否かにより、算術符号化処理が行われる。
【００５３】
このため、ｖａｌＭＰＳ値（１ビット）と、０か１かを示す２値シンボルのデータ（１ビット）とを集約し、ｖａｌＭＰＳ値及び２値シンボルが同一か否かを示す判定データ（１ビット）とすることができる。これにより、ｐＳｔａｔｅＩｄｘ値（例えば、６ビット）、ｖａｌＭＰＳ値とｂｉｎ［ｉ］における１ビンの２値シンボル（１ビット）とが等しいか否かを示す判定データ（１ビット）の７ビットにより、テーブル参照情報１３を構成することができ、インデックスとしてのビット数を削減することができる。
【００５４】
上述としたテーブル参照情報１３により、予測符号量を検索できるように、符号量テーブル１４を構成する必要がある。
したがって、符号量テーブル１４は、ｐＳｔａｔｅＩｄｘ値と判定データとの組合せと、この組合せに対応した予測符号量とが対応付けて記憶された構成として生成される。
このとき、コンピュータは、符号量テーブル１４に書き込む予測ビット量を計算する際、ｐＳｔａｔｅＩｄｘ値毎に、ｖａｌＭＰＳ値と算術符号化する２値シンボルとが同一の場合、及び異なる場合の各々で予測符号量を算出する。
例えば、コンピュータは、ｖａｌＭＰＳ値が０であるとし、２値シンボルが０である（同一）場合と、２値シンボルが１である（非同一）場合、とにおいて、算術符号化を行い、予測符号量を算出する。
そして、コンピュータは、ｐＳｔａｔｅＩｄｘ値と、同一及び非同一のいずれかを示す判定信号との組合せに関連づけて、予測符号量を符号量テーブル１４に書き込む。
【００５５】
次に、図１の符号量予測部１の動作例を説明する。
コンテキスト演算部１１は、中間バッファ２２からビン系列ｂｉｎ［ｉ］の２値シンボルを順次読み込み、内部に記憶する。
このとき、符号量加算部１６は、内部に積算結果として記憶している合計予測符号量を０に初期化する。
そして、コンテキスト演算部１１は、ビン系列ｂｉｎ［ｉ］の先頭の２値シンボル（ビン）から順次、当該の２値シンボル（ビン）に対応するコンテキスト値ＣｔｘＩｄｘにより、コンテキスト状態保持バッファ１２からｖａｌＭＰＳ値を読み出し、この読み出したｖａｌＭＰＳ値と、当該の２値シンボル（ビン）が等しいか否かの判定を行い、この判定結果により判定データを生成する。
【００５６】
そして、コンテキスト演算部１１は、コンテキスト値ＣｔｘＩｄｘにより、コンテキスト状態保持バッファ１２からｐＳｔａｔｅＩｄｘ値を読み出し、求めた判定データとともに、テーブル参照情報１３とし、符号量テーブル１４に対して出力する。
これにより、符号量テーブル１４は、入力されるテーブル参照情報１３により、このテーブル参照情報１３に対応して記憶されている予測符号量を読み出し、符号量加算部１６へ出力する。
予測符号量が入力されると、符号量加算部１６は、内部に記憶されている合計予測符号量に対し、入力された予測符号量を加算し、予測符号量の積算を行う。
【００５７】
次に、コンテキスト演算部１１は、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新された値を求め、コンテキスト状態保持バッファ１２において、対応するコンテキスト値ＣｔｘＩｄｘのｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値とに、新たに求めたｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値とを上書きし、データの更新を行う。
【００５８】
上述した処理を、コンテキスト演算部１１は、ビン系列における２値シンボルが無くなるまで続け、２値シンボルが無くなり処理が終了すると、符号量加算部１６に対して終了信号を出力する。
そして、符号量加算部１６は、終了信号が入力されると、符号化ストリームの発生符号量の予測値として、終了信号の入力時点における合計予測符号量を、発生符号量の予測結果として出力する。
【００５９】
上述したように、本実施形態によれば、符号予測部１により、算術符号化処理部３の符号化処理を終了せずとも、ビン系列の算術符号化処理の結果としての発生符号量の予測を高速に行うことができる。
また、本実施形態においては、符号予測部１内においてコンテキスト演算部１１、コンテキスト状態保持バッファ１２を複数有し、複数のビン系列の符号量の算出を同時に並列に行う構成としてもよいし、複数の符号予測部１を並列に設け、複数のビン系列の符号量の算出を同時に並列に行う構成としてもよい。
ここで、中間バッファ２２に対し、すなわちビン系列の入力に対して、コンテキスト演算部１１を並列に設ける、または符号化予測部１を並列に設ける構成としてもよい。この構成によれば、複数のビン系列の予測符号量の算出を並列に行うことができる。
【００６０】
本実施形態によれば、符号化ストリームとして出力される発生符号量を、合計予測符号量として予測しているため、従来に比較して高速に発生符号量を得ることができ、映像符号化器などにおける目標発生符号量と、この合計予測符号量とを比較し、マクロブロック予測残差を量子化する際の量子化ステップ（ＱＰ値）を制御する操作を行うため、供給される動画像（映像）の符号化単位のデータ、算術符号化により実時間で符号化するリアルタイム符号化器の場合、画質制御及びビットレート制御等の安定性を実現することができる。
【００６１】
＜第２の実施形態＞
以下、図面を参照して、本発明の第２の実施形態について説明する。図４は、この発明の第２の実施形態による符号量予測装置を用いた映像符号化装置（ＣＡＢＡＣ符号化器）の構成例を示す概略ブロック図である。同図において、図１の第１の実施形態の各部に対応する部分には同一の符号を付け、その説明を省略する。
図４における映像符号化装置には、図１０の２値化処理部２１、中間バッファ２２、算術符号化処理部３に加えて、第１の実施形態と同様に、符号量予測部１が設けられている。本願実施形態においては、図１０の従来の映像符号化装置と異なる構成がこの符号量予測部１であり、以下、この符号化予測部１の第１の実施形態と異なる点について、詳細に説明する。
【００６２】
図４の符号量予測部１は、レギュラーコーダ３３の生成する符号化ストリームの発生符号量を予測するものであり、コンテキスト演算部１１、コンテキスト状態保持バッファ１２、符号量テーブル１４、及び符号量加算部１６を有している。
また、第１の実施形態と異なる点は、符号量テーブル１４が、符号量Ａテーブル１４ａと符号量Ｂテーブル１４ｂとから構成されていることである。この符号量Ａテーブル１４ａは、第１の実施形態で記載した符号量テーブル１４と同様な構成である。一方、符号量Ｂテーブル１４ｂは、第２の実施形態において、後述するように、予測符号量、ｖａｌＭＰＳ値及びｐＳｔａｔｅＩｄ値のみでなく、実際に発生した２値シンボル（ビン）に対応したｖａｌＭＰＳ値とｐＳｔａｔｅＩｄ値との更新値（発生確率更新情報１４ｃ）が記憶された構成であり、符号量テーブル１４に対して新たに付加された符号量テーブルである。
この符号量Ｂテーブル１４ｂは、テーブル参照情報１３がテーブル引きの見出し、すなわち検索キーとして供給されると、予測符号量１５をコンテキスト演算部１１に対して出力するとともに、発生確率更新情報１４ｃをコンテキスト演算部１１に戻す機能が新たに設けられている。すなわち、コンテキスト演算部１１は、符号量Ｂテーブル１４ｂの構成については後述する。
【００６３】
本実施形態において、コンテキスト演算部１１は、ビン系列を構成するビンそれぞれのコンテキスト値ＣｔｘＩｄｘが互いに異なる場合には、符号量Ａテーブル１４ａを用いて、第１の実施形態と同様の動作を行う。
一方、コンテキスト演算部１１は、ビン系列を構成する複数のビンが連続して同一のＣｔｘｉｄｘ値に対応しているビン系列の場合には、符号量Ｂテーブル１４ｂを用いて、予測符号量を求めるとともに、ｖａｌＭＰＳ値とｐＳｔａｔｅＩｄ値とを読み出し、コンテキスト状態保持バッファ１２の更新処理を行う。
したがって、コンテキスト演算部１１は、ビン系列を構成する複数個のビンにおいて同一のＣｔｘｉｄｘ値に対応しているビンが２個以上連続しているか否かの検出を行い、ビン系列のビンの各々が異なるＣｔｘｉｄｘ値である場合、符号量Ａテーブル１４ａを用い、一方、２個以上の複数のビンが同一のＣｔｘｉｄｘ値に対応している場合、符号量Ｂテーブル１４ｂを用いる。
【００６４】
上述したコンテキスト演算部１１は、ビン系列を構成する連続する複数のビンが同一のＣｔｘｉｄｘ値に対応しているか否かの判定を、Ｃｔｘｉｄｘ値の数値が予め自身内部に設定されている、ビン系列を構成する複数のビンが連続して同一であるＣｔｘｉｄｘ値と同一であるか否かを比較することにより行う。
すなわち、コンテキスト演算部１１は、自身内部に設定されているビン系列を構成する複数のビンが同一であるＣｔｘｉｄｘ値と、符号化対象のビン系列のＣｔｘｉｄｘ値とが一致する場合、ビン系列を構成する連続する複数のビンが同一のＣｔｘｉｄｘ値に対応していると判定し、一方、符号化対象のビン系列のＣｔｘｉｄｘ値とが一致しない場合、ビン系列のビンの各々が異なるＣｔｘｉｄｘ値と判定する。
【００６５】
すなわち、ビン系列のビンの各々が異なるＣｔｘｉｄｘ値である場合、コンテキスト演算部１１は、それぞれの２値シンボル（ビン）に対して、対応するコンテキスト値ＣｔｘＩｄｘを、符号量Ａテーブル１４ａに対するテーブル参照情報１３として、コンテキスト状態保持バッファ１２から２値シンボル（ビン）の発生確率であるｐＳｔａｔｅＩｄｘ値と、この発生確率の高い方の２値シンボルが０か１かのいずれであるかを示すｖａｌＭＰＳ値とを供給し、符号量Ａテーブル１４ａから予測符号量を読み出す。
そして、コンテキスト演算部１１は、実際に発生した２値シンボル（ビン）に対応したｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値とを求める更新処理を行い、コンテキスト状態保持バッファ１２に上書きして更新する。
また、コンテキスト演算部１１は、符号量テーブル参照情報１３を符号量Ａテーブル１４ａに出力する。この符号量テーブル参照情報１３に含まれる情報は、コンテキスト状態保持バッファ１２から読み出した前述のｖａｌＭＰＳ値、ｐＳｔａｔｅＩｄｘ値、および、符号化対象となる２値シンボル（ビン）である。
【００６６】
符号量加算部１６は、コンテキスト演算部１１が出力したテーブル参照情報１３に応じて符号量Ａテーブル１４ａから出力される予測符号量１５を読み込む。
符号量加算部１６は、読み込んだ予測符号量であるビット符号量をビン系列毎に累算し、合計予測符号量１７として出力する。
【００６７】
次に、符号量Ａテーブル１４ａに格納されている予測符号量の算出方法について説明する。コンピュータは、第１の実施形態と同様に図２のプログラムを用い、符号量Ａテーブル１４ａに格納されている予測符号量の算出処理を行う。
この図２において、擬似コードにおける整数（ｉｎｔ）ｒａｎｇｅが、レギュラーコーダ３３の動作説明における分割区間の長さを示すｃｏｄＩＲａｎｇｅに相当している。
また、ｕｐｄａｔｅ＿ｒａｎｇｅ（ｒａｎｇｅ，ｂｉｎ［ｉ］）関数が、レギュラーレコーダ３３において行われる算術符号化処理自体に相当し、ビン系列ｂｉｎ［ｉ］の先頭のビン（２値シンボル）から符号化処理を順次行う。
【００６８】
具体的には、コンピュータの記憶部に２値シンボルのビン系列ｂｉｎ［ｉ］が記憶される領域と、このビン系列のそれぞれの２値シンボル（ビン）に対するＣｔｘＩｄｘ値に対応してｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値を記憶するコンテキスト状態保持バッファとを設け、図２に示す処理が、コンピュータにより実行される。
コンピュータは、ｂｉｎ［ｉ］から２値シンボルを順次読み出す。また、それぞれの２値シンボル（ビン）に対応するＣｔｘＩｄｘ値により、コンテキスト状態保持バッファからｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値を読み出して取得するが、この処理は本説明の中心事項ではないため、図２の擬似コードでは省略している。
取得した後、コンピュータは、この読み出した２値シンボル（ビン）と、取得したｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳとにより、ｕｐｄａｔｅ＿ｒａｎｇｅ（ｒａｎｇｅ，ｂｉｎ［ｉ］）関数によるｒａｎｇｅの再分割を行う。
【００６９】
そして、コンピュータは、すでに述べたコンテキスト演算部３１と同様の処理として、再分割毎に、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値との更新処理を行うとともに、更新したｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値とを、ＣｔｘＩｄｘ値に対応させて、テキスト状態保持バッファにおいて直前のデータに上書きして記憶させるが、この処理は本説明の中心事項ではないため、図２の擬似コードでは省略している。
次に、コンピュータは、図２のリストに記載されたｗｈｉｌｅ文の処理において、コンテキスト演算部３１が行うリノーマライゼーションと同様の処理を行う。
【００７０】
すなわち、コンピュータは、狭められた分割区間の長さを示すｃｏｄＩＲａｎｇｅ値が、２５６より大きくなるまで、ｃｏｄＩＲａｎｇｅ値の左へのビットシフト、すなわち２倍にする処理を繰り返す。
このとき、コンピュータは、符号化ストリームのビット数を求めるため、ビットシフトを行う毎に、ビット出力に対応したｎｒ＿ｏｕｔｂｉｔｓのインクリメント（＋＋ｎｒ＿ｏｕｔｂｉｔｓ）を行う。これにより、１つのビンを算術符号化した際に出力される符号化ビットのビット数を求めることができる。
そして、ｆｏｒ（ｉｎｔ ｉ；ｉ＜ｎｒ＿ｂｉｎ；＋＋ｉ）｛  ｝により、１つのビン系列の算出符号化処理における符号化ストリームのビット数を求めることができる。
【００７１】
例えば、いま、あるｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値が与えられ、かつ、符号化対象となる２値シンボル（ビン）がひとつ与えられているとする。
このとき、Ｈ．２６４／ＡＶＣ符号化方式でのｃｏｄＩＲａｎｇｅ値にあたるｒａｎｇｅ値が、２５６の場合、２５７の場合、…、５１０の場合のすべてについて、コンピュータは、実際の算術符号化処理にあたるupdate_range_and_renormalize();関数を実行する。
そして、コンピュータは、発生した符号量の総計sum_of_nr_outbitsの平均を求めることにより、当該のｐＳｔａｔｅＩｄｘ値、ｖａｌＭＰＳ値および符号化対象２値シンボル（ビン）の組合せに対する予測符号量とする。図５は、ｐＳｔａｔｅＩｄｘ値、ｖａｌＭＰＳ値および符号化対象２値シンボル（ビン）のデータの組み合わせと、この組み合わせから求められた予測符号量とを対応付けた予測符号量テーブルを示している。
【００７２】
すなわち、コンピュータのシミュレーションとして生成される予測符号量テーブルとしては、上述した図５に示すように、ｐＳｔａｔｅＩｄｘ値、ｖａｌＭＰＳ値及び２値シンボルの３つの組合せに対して、それぞれの組み合わせに対応する符号量予測値が格納されることになる。
実際には、第１の実施形態において述べたように、Ｈ．２６４／ＡＶＣ符号化標準においては、ｖａｌＭＰＳ値と、符号化対象２値シンボルとが同一か否かをパラメータとして算術符号化処理が行われている。
このため、ｖａｌＭＰＳ値と、符号化対象２値シンボルの２つは、「ｖａｌＭＰＳ値と符号化対象２値シンボルが同一か否か」を示す情報として１つに集約することができ、実際の符号量Ａテーブル１４ａは図６に示すような構成とし、図５と比較して行数を１／２に削減することができる。
したがって、コンテキスト演算部１１は、ビン系列を構成する複数のビンが同一のＣｔｘＩｄｘ値となっていない場合、符号量Ａテーブル１４ａを参照するため、テーブル参照情報１３として、ｐＳｔａｔｅＩｄｘ値と、ｖａｌＭＰＳ値と符号化対象２値シンボルが同一か否かを示す値の２つの情報を出力する。
【００７３】
これに対し、ビン系列を構成する複数のビンが連続して同一のＣｔｘＩｄｘ値に対応しているようなビン系列が発生した場合に、以下のような動作を行う。
まず、コンテキスト演算部１１は、コンテキスト値ＣｔｘＩｄｘをテーブル引きの見出しとして、コンテキスト状態保持バッファ１２から２値シンボル（ビン）の発生確率であるｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値を読み出す。
このコンテキスト状態保持バッファ１２から、コンテキスト演算部１１により読み出されたｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値は、同一のＣｔｘＩｄｘ値に対応する連続した２値シンボル（ビン）を有するビン系列を算術符号化するにあたっての初期値に相当する。
その上で、コンテキスト演算部１１は、どのコンテキスト値ＣｔｘＩｄｘのビン系列の予測を今から行うかの種別情報（すなわち、ＣｔｘＩｄｘ値そのもの）、このｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値ｔの初期値、および、同一のＣｔｘＩｄｘ値に属する２値シンボル（ビン）が連続しているビン系列（後述するビン系列の種類）の合計４つの情報をテーブル参照情報１３として、符号量Ｂテーブル１４ｂに出力する。
【００７４】
符号量Ａテーブル１４ａを参照した第１の実施形態においては、単独の２値シンボル（ビン）が出力された。
しかしながら、第２の実施形態の場合には、同一のＣｔｘＩｄｘ値に属する連続した複数の２値シンボル（ビン）からなるビン系列の符号量予測値、また更新に用いるｖａｌＭＰＳ値及びｐＳｔａｔｅＩｄｘ値を一括して出力するところが第１の実施形態と異なる。
符号量Ｂテーブル１４ｂは、このテーブル参照情報１３をもとに内部のテーブル参照を行う。符号量Ｂテーブル１４ｂの構成の詳細については後述する。
【００７５】
テーブル参照情報１３が入力されると、符号量Ｂテーブル１４ｂは、予測符号量１５を符号量加算部１６に対して供給する。
ここで、符号量Ｂテーブル１４ｂから出力される予測符号量１５は、ビン系列における上述した同一のＣｔｘＩｄｘ値に属する連続した２値シンボル（ビン）全てを符号化した際に発生するであろう符号量予測値である。
この符号量予測値の事前の生成方法の詳細については後述する。また、符号量加算部１６以降の処理は、第１の実施形態の場合と同様のため説明を省略する。
【００７６】
また、符号量Ｂテーブル１４ｂからは、上述した予測符号量１５とともに、発生確率更新情報１４ｃが合わせて、コンテキスト演算部１１に対して出力される。
この発生確率更新情報１４ｃは、すでに述べたｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値を初期値とし、ビン系列における同一のＣｔｘＩｄｘ値に属する連続した２値シンボル（ビン）すべてを符号化した際に得られる符号化後のｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値を示すものである。この発生確率更新情報１４ｃの事前生成方法についても、後に詳細に説明する。
そして、コンテキスト演算部１１は、自分自身ではｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値の更新処理を行わず、発生確率更新情報１４ｃにより得られたｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値をコンテキスト状態保持バッファ１２に上書きして更新する。
【００７７】
次に、図７は符号量Ｂテーブル１４ｂの構成を示す図である。この図７を用いて、符号量Ｂテーブル１４ｂに格納される予測符号量１５および発生確率更新情報１４ｃの形態について説明する。この図７においては、Ｈ．２６４／ＡＶＣのイントラ符号化（ピクチャ間予測を行わない、画面内予測のみによる符号化）を行う場合の構成が示されている。
Ｈ．２６４／ＡＶＣのイントラ符号化において、ビン系列を構成する複数のビンが同一のＣｔｘＩｄｘ値に対応しているようなビン系列が発生するのは、mb_qp_delta（ＣｔｘＩｄｘ値＝６３）、coeff_abs_level_minus1（ＣｔｘＩｄｘ値＝２３２、２３３など）、intra_chroma_pred_mode（ＣｔｘＩｄｘ値＝６７）、rem_intra8x8_pred_mode（ＣｔｘＩｄｘ値＝６９）という４つの要素の場合である。この４つの要素それぞれに対して、符号量テーブル１４１、１４２、１４３及び１４４が割り当てられる。以下の説明は、intra_chroma_pred_mode用符号量テーブル１４１を例として行う。
【００７８】
intra_chroma_pred_modeの要素の場合に発生するビン系列は、０、１０，１１の全３種類である。従って、発生し得るｖａｌＭＰＳ値の初期値（０ないし１の２種類）、ｐＳｔａｔｅＩｄｘ値の初期値（０から６３までの６４種類）、そしてビン系列（３種類）のすべての組合せである。このため、２ｘ６４ｘ３＝３８４行のテーブルが、intra_chroma_pred_mode用符号量テーブル１４１として用意される。
そして、intra_chroma_pred_mode用符号量テーブル１４１には、それぞれの行におけるｖａｌＭＰＳ値、ｐＳｔａｔｅＩｄｘ値及びビン系列の種類に対応した符号量予測値と、更新されたｖａｌＭＰＳ値とｐＳｔａｔｅＩｄｘ値とが、対応付けて格納されている。
【００７９】
次に、図８は複数のビンからなるビン系列の符号量予測値を計算する処理の動作例を示すプログラムの概念図である。
この図８を用いて、事前にコンピュータシミュレーションにより、計算されて格納されている符号量予測値の計算方法について示す。以下の説明において、コンピュータは各数値を、メモリ上に書き込みまたは読み出して、シミュレーションの処理を行う。
図８おいて、符号量予測値を求めるための基本的概念は、算術符号化の分割区間の長さを示す値であるｃｏｄＩＲａｎｇｅ値に相当するassumed_range値が、算術符号化開始において、２５６から５１０まで等確率に分布していると仮定することである。この仮定に基づいて、assumed_range値が２５６の場合、２５７の場合、…、５１０の場合それぞれの場合において、複数のビンからなるビン系列の算術符号化を行い、結果として発生した符号量の平均を符号量予測値とする考え方をとる。
【００８０】
次に、プログラムに従ったコンピュータの具体的なシミュレーションの動きについて説明する。いま、ｐＳｔａｔｅＩｄｘ＝２、ｖａｌＭＰＳ＝０で、ビン系列１０の予測符号量を求める場合、予測符号量を求める関数estimate_nr_outbits_nの引数として与えられるのはｐＳｔａｔｅＩｄｘ＝２、ｖａｌＭＰＳ＝０、ｂｉｎ＿ｖａｌは［１，０］という合計２の配列、ｎｕｍ＿ｂｉｎはビン系列の長さである２である。
コンピュータは、２５６から５１０までのそれぞれのassumed_range値を初期値として、current_rangeに対して代入するとともに、current_pStateIdxには初期値として２を代入し、curent_valMPSには初期値として０を代入する。
【００８１】
そして、コンピュータは、まず変数ｉが０の状態において、先頭のビンである「１」について、算術符号化およびリノーマライゼーション処理に相当するupdate_range_and_renormalize()の関数による演算処理が実行される。このupdate_range_and_renormalize()の関数による処理は、Ｈ．２６４／ＡＶＣ符号化標準に沿って行われるため説明は省略する。
このupdate_range_and_renormalize()の関数による演算処理の結果として、発生した符号量nr_outbitsと、新しいrangeの値であるnew_rangeが求められる。
コンピュータは、発生した符号量nr_outbitsを、符号量を累算するsum_of_nr_outbits変数に加算して、累算処理を行う。
また、コンピュータは、current_range値に対し、新しいmew_range値を代入することにより、current_range値を更新する。
【００８２】
次に、コンピュータは、ビンを１つ算術符号化した後、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理をupdate_context()関数を用いて行う。
また、このupdate_context()関数で表現される、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値との更新手順はＨ．２６４／ＡＶＣ符号化標準に定められており、具体的には図９に示すような状態遷移を示すテーブルによって定義される。この図９は、現在のｐＳｔａｔｅＩｄｘ値と、ｖａｌＭＰＳ値により変化した次のｐＳｔａｔｅＩｄｘ値との対応を示すテーブルである。
この図９のテーブルの見方を説明すると、現在のｐＳｔａｔｅＩｄｘ値を「ｐＳｔａｔｅＩｄｘ」として、ｖａｌＭＰＳ値と異なる２値シンボル（ビン）が発生した場合には「ｔｒａｎｓＩｄｘＬＰＳ」で示された値が次のｐＳｔａｔｅＩｄｘ値となる。逆に、ｖａｌＭＰＳと同一のビンが発生した場合には「ｔｒａｎｓＩｄｘＭＰＳ」で示された値が次のｐＳｔａｔｅＩｄｘ値となるように設定されている。
この図９のテーブルにおいて、ｐＳｔａｔｅＩｄｘ＝０の状態で、現在のｖａｌＭＰＳ値と異なるビンが発生した場合のみ、ｐＳｔａｔｅＩｄｘ値が反転（１ならば０、０ならば１）する設定となっている。
【００８３】
コンピュータは、この図９のテーブル表に従って処理を行い、例えば、current_pStateIdx＝２、current_valMPS＝０であり、かつcurrent_valMPSと異なるビンである「１」が発生した場合、「ｐＳｔａｔｅＩｄｘ」＝２の列の「ｔｒａｎｓＩｄｘＬＰＳ」に記載されている「１」が新たなｐＳｔａｔｅＩｄｘ値、すなわちnew_pStateIdxとする。
また、コンピュータは、このときｖａｌＭＰＳ値の変更を行わない。コンピュータは、最後にnew_pStateIdxとnew_valMPS（実際に発生した２値シンボルの値）との各々を求め、current_pStateIdxとcurrent_valMPSとのそれぞれに代入する。
【００８４】
そして、コンピュータは、先頭のビン系列におけるビン「１」の処理が終了した時点において、current_pSteteIdxが１、current_valMPSが０、current_rangeをupdate_range_and_renormalize()関数による算術符号化処理を行った後の値に書き換えて変化させている。
次に、コンピュータは、変数ｉが１の状態において、２つめのビンである「０」について、算術符号化およびリノーマライゼーション処理に相当するupdate_range_and_renormalize()関数による演算処理が実行される。
コンピュータは、update_range_and_renormalize()関数による演算処理の結果と得られた、発生した符号量nr_outbitsと、新しいrangeの値であるnew_rangeとが得られる。
そして、コンピュータは、この発生した符号量nr_outbitsを、符号量を累算するsum_of_nr_outbits変数に加算し、累算処理を行う。
また、コンピュータは、累算処理とともに、current_range値に新しいｒａｎｇｅ値を代入して、current_range値の更新を行う。
【００８５】
次に、コンピュータは、ビンを１つ算術符号化したあとの、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理を、update_context()関数を用いて行う。
すなわち、コンピュータは、図９のテーブルに従って処理を行い、current_pStateIdx＝１、current_valMPS＝０であり、かつcurrent_valMPSと同じビンである「０」が発生した場合、「ｐＳｔａｔｅＩｄｘ」＝１の列の「ｔｒａｎｓＩｄｘＭＰＳ」に記載されている「２」を、新たなｐＳｔａｔｅＩｄｘ値、すなわちnew_pStateIdxとして求める。このとき、コンピュータは、このときｖａｌＭＰＳ値の変更を行わない。コンピュータは、最後にnew_pStateIdxとnew_valMPSとの各々を求め、current_pStateIdxとcurrent_valMPSのそれぞれに代入される。
次に、コンピュータは、ふたつめのビン「０」の処理が終了したこの時点で、current_pSteteIdxが２、current_valMPSが０、current_range値をupdate_range_and_renormalize()関数による算術符号化処理を行った後の値に書き換えて変化させている。
【００８６】
コンピュータは、以上に述べたような処理を、assumed_rangeが２５６から５１０までのすべての場合について行う。
そして、コンピュータは、最後にsum_of_nr_ourbitsを２５５で除算して平均値を取った値を、intra_chroma_pred_mode用符号量テーブル１４１における、ｐＳｔａｔｅＩｄｘ＝２、ｖａｌＭＰＳ＝０、ビン系列＝１０の行に格納される符号量予測値として出力する。
また、この行に格納される更新されたｐＳｔａｔｅＩｄｘ値、ｖａｌＭＰＳ値は、上述したあるassumed_range値における予測符号量算出処理を終了した状態におけるcurrent_pStateIdx値とcurrent_valMPS値とである。
すなわち、上述した例の場合、「２」であったcurrent_pStateIdx値と、「０」であったcurrent_valMPS値が、ビン系列の最初のビンの処理後に、current_pStateIdx値が「１」となり、current_valMPS値が「０」となっている。
また、ビン系列の最初のビンの処理後に、「１」となったcurrent_pStateIdx値と、「０」となったcurrent_valMPS値が、２つめのビンの処理後に、current_pStateIdx値が「２」に、current_valMPS値が「０」に戻っている。
【００８７】
そして、コンピュータは、この２つめのビンの処理後に、図７におけるintra_chroma_pred_mode用符号量テーブル１４１において、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値との各々の初期値と、ビン系列との組み合わせに対応する該当行の更新されたｐＳｔａｔｅＩｄｘ値として「２」を、また更新されたｖａｌＭＰＳ値として「０」を書き込んで記憶させる。
この書き込まれる数値は、すなわち、それぞれのｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の初期値に対して、それぞれのビン系列を算術符号化したあとの最終的なｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値を示すものであって、assumed_rangeの値が２５６、２５７…５１０のいずれかによらず同じ値である。
【００８８】
このようにして作成された図７に示すテーブル構成によれば、intra_chroma_pred_modeの符号量を予測する際に、符号量テーブル参照情報１３として「予測対象のＣｔｘＩｄｘ＝６７、ｐＳｔａｔｅＩｄｘ初期値＝２、ｖａｌＭＰＳ初期値＝０、ビン系列＝１０」が与えられた場合、符号量Ｂテーブル１４ｂは、ＣｔｘＩｄｘ＝６７に相当するintra_chroma_pred_mode用符号量テーブル１４１の中で、先ほど説明した行を参照する。
そして、符号量Ｂテーブル１４ｂは、予測符号量１５として上記の通り求めた符号量予測値を符号量加算部１６に対して出力する。
また、符号量Ｂテーブル１４ｂは、発生確率更新情報１４ｃとして、更新されたｐＳｔａｔｅＩｄｘ値として「２」を、またｖａｌＭＰＳ値として「０」を、コンテキスト演算部１１に対して出力する。
【００８９】
この結果、符号量加算部１６は、第１の実施形態と同様に、符号量Ｂテーブル４ｂから出力される符号量を累算し、合計予測符号量１７の算出処理を行うことができる。
また、コンテキスト演算部１１は、自らｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の更新処理を行なう必要が無い。
すなわち、コンテキスト演算部１１は、複数のビンからなるビン系列を算術符号化することによって更新されるｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値を、符号量Ｂテーブル１４ｂから発生確率更新情報１４ｃとして得て、コンテキスト状態保持バッファ１２に書き込み、コンテキスト状態保持バッファ１２を変更することができる。
【００９０】
上述したintra_chroma_pred_mode用符号量テーブル１４１以外のＣｔｘＩｄｘ値に相当するmb_qp_delta（ＣｔｘＩｄｘ値＝６３）のmb_qp_delta用符号量テーブル１４４、coeff_abs_level_minus1（ＣｔｘＩｄｘ値＝２３２、２３３など）のcoeff_abs_level_minus1用符号量テーブル１４２、rem_intra8x8_pred_mode（ＣｔｘＩｄｘ値＝６９）のrem_intra8x8_pred_mode用符号量テーブル１４３などついても、コンピュータのシミュレーションにより、同様に符号量テーブルを事前に生成する。
それぞれのテーブルの行数は、発生し得るビン系列の種類によって増減し、図７に示すように、最大７５個のビンが発生する可能性のあるmb_qp_deltaの要素のmb_qp_delta用符号量テーブル１４４がもっとも大きなテーブル構成となる。
【００９１】
ただし、最大７５個のビンが発生するとはいってもビンの種類は２７５ではなく、たかだか７４種類であるので、行数は６４x２x７４=９４７２行にとどまる。
なお、この最大７５個のビンが発生する場合、符号量テーブル参照情報１３に含まれるビン系列として、最大７５ビットの情報を送るのは無駄である。
すなわち、７４種類のビン系列のどれかを示す情報（例えば、０〜７３などのビン系列の種別の数を示す番号）に置き換えれば、情報量として７ビットで済むため、符号量テーブル参照情報１３を７４種類のビン系列のどれかを示す情報を用いて構成してもよいことは自明である。
【００９２】
以上述べたように、本実施形態においては、複数のビンからなるビン系列に対して１回のテーブル引きで、符号量予測値と、更新されたｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値を得ることができる符号量Ｂテーブル１４ｂを予め用意する。
これにより、本実施形態においては、同一のＣｔｘＩｄｘ値に属して複数のビンが発生するようなビン系列であっても、処理を遅延させることなく、符号量予測を行う処理を可能とすることができる。
【００９３】
ここで、今一度、符号量Ｂテーブル１４ｂを構成することで処理を遅延させることなく符号量予測が可能となる理由について説明をする。
そもそも、第１の実施形態において説明されているように、算術符号化において並列化処理が行えない主たる理由は、あるビン系列が与えられたとき、あるｒａｎｇｅの値を初期値として、算術符号化処理と、リノーマライゼーション処理を直列的に処理しながら、ｒａｎｇｅ値を逐次更新していくことが避けられないことが原因である。
【００９４】
そのため、第１の実施形態においては、ｒａｎｇｅの値が２５６、２５７、…、５１０まで確率的に均一に分布しているとの前提が成り立つとして、ｒａｎｇｅの値が２５６の場合、２５７の場合、…、５１０の場合それぞれについて、算術符号化処理およびリノーマライゼーション処理を行う。そして、出力ビット数の総和を求め、その平均値を求めている。
ここで得た平均値は、ｒａｎｇｅ値が分からない状態において、ある１つのビンを算術符号化した際に発生する符号量の期待値を示していることになる。
【００９５】
こうして求めた平均値を発生符号量の期待値とし、全てのｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の組合せに対して、上記の平均値を算出してテーブルにあらかじめ収めることによって、テーブルの参照によって符号量の予測を行うのが、第１の実施形態で説明した方法であった。
しかしながら、ビン系列を構成する複数のビンが連続して同一のＣｔｘＩｄｘ値に対応していた場合、第１の実施形態の場合には、同一のＣｔｘＩｄｘ値のビンの先頭から順次、テーブルの参照と、ｐＳｔａｔｅＩｄｘ値及びｖａｌＭＰＳ値の更新処理を逐次的に行う必要がある。
【００９６】
この理由としては、複数のビンが同一のＣｔｘＩｄｘ値を持っている以上、あるビンにおけるｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値との更新処理が完了した後に、新たなｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値とが確定しなければ、続くビンに対するテーブル参照の処理ができない構成となっているからである。
したがって、第１の実施形態においては、同一のＣｔｘＩｄｘ値を持った連続した複数のビンからなるビン系列をテーブル参照によって符号量予測しようとしても、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の遷移を結局は逐次的に処理しなければならない。
【００９７】
例えば、第１の実施形態における予測方法にあっては、すでに説明したように、画像の性質等によらない統計的な予測値に基づいて発生符号量を予測することができる。
しかしながら、コンテキスト演算部１１は、あるコンテキスト値ＣｔｘＩｄｘに対して発生符号量を予測するために符号量テーブル１４を一度参照する毎に、符号量テーブル１４における当該ＣｔｘＩｄｘに対応するｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理が必要となる。
このＣｔｘＩｄｘに対応するｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理に伴う問題について、以下に説明する。
【００９８】
まず、コンテキスト演算部１１は、ビン系列を構成するビンそれぞれのコンテキスト値ＣｔｘＩｄｘが互いに異なる場合、符号量テーブル１４の参照と更新処理とをビンごとに独立して並列に行う。
このとき、コンテキスト演算部１１は、符号量テーブル１４のｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理も独立して並列に行うことができる。このため、コンテキスト演算部１１の行う発生符号量の予測が遅延することはない。
【００９９】
しかし、ビン系列を構成する複数のビンが同一のＣｔｘＩｄｘ値に対応している場合、コンテキスト演算部１１は、同一のＣｔｘＩｄｘ値のビンの先頭から順次、符号量テーブル１４の参照と、更新処理を逐次的に行うことになる。
すなわち、複数のビンが同一のＣｔｘＩｄｘ値に属しているため、あるビンにおけるｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理が完了する必要がある。更新処理が完了し、新たなｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値が確定しなければ、コンテキスト演算部１１は、続くビンのテーブルの参照ができない。
したがって、上述したように、ビン系列を構成する複数のビンが同一のＣｔｘＩｄｘ値に対応している場合、コンテキスト演算部１１は、発生符号量予測を逐次的にしか処理することができず、結果として発生符号量の予測に遅延が発生する。
【０１００】
例えば、マクロブロックの量子化ステップ（ＱＰ値）の差分を示す値であるｍｂ＿ｑｐ＿ｄｅｌｔａでは、同一のコンテキスト値ＣｔｘＩｄｘに属するビンが最大７５個発生する可能性がある。
この同一のコンテキスト値ＣｔｘＩｄｘに属する発生符号量を予測するため、コンテキスト演算部１１は、符号量テーブル１４の参照と更新処理とを最大７５回、逐次的に反復して処理しなければならない。このため、予測値を得るまでに大きな遅延が発生する可能性がある。
【０１０１】
一方、第２の実施形態においては、同一のＣｔｘＩｄｘ値を持った複数のビンからなるビン系列の符号量の予測を行うため、同一のＣｔｘＩｄｘ値を持って発生し得るすべてのビン系列と、ｐＳｔａｔｅＩｄｘとｖａｌＭＰＳの初期値のすべての組み合わせに対して、あらかじめｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値との遷移後の数値として、逐次的に処理して得た予測符号量の合計値を、符号量Ｂテーブル１４ｂに保持しているため、逐次処理を発生させずに符号量予測が可能になる。
このため、第２の実施形態は、同一のＣｔｘＩｄｘ値を持った複数のビンからなるビン系列の符号量予測を行うための構成であり、同一のＣｔｘＩｄｘを持つビン系列に対しては符号量Ｂテーブル１４ｂを用いて、ｐＳｔａｔｅＩｄｘ値とｖａｌＭＰＳ値の更新処理も含めて複数のビンに対する処理を一度に行うことができる。
【０１０２】
すなわち、第２の実施形態は、上述した第１の実施形態における遅延の発生に対応させたものであり、前述のように同一のコンテキスト値ＣｔｘＩｄｘに属するビンが複数連続するビン系列においても、符号量予測を逐次的に反復することなく実行することができる符号量予測装置を提供することができる。
したがって、上述したように、本実施形態によれば、符号予測部１により、算術符号化処理部３の符号化処理を終了せずとも、ビン系列の算術符号化処理の結果としての発生符号量の予測を高速に行うことができる。
【０１０３】
本実施形態によれば、符号化ストリームとして出力される発生符号量を、合計予測符号量として予測しているため、第１の実施形態に比較してより高速に発生符号量を得ることができ、映像符号化器などにおける目標発生符号量と、この合計予測符号量とを比較し、マクロブロック予測残差を量子化する際の量子化ステップ（ＱＰ値）を制御する操作を行うため、供給される動画像（映像）の符号化単位のデータ、算術符号化により実時間で符号化するリアルタイム符号化器の場合、画質制御及びビットレート制御等の安定性を実現することができる。
【０１０４】
また、図１及び図４におけるコンテキスト演算部１１、３１，符号量加算部１６、レギュラーコーダ３３、バイパスコーダ３４、２値化処理部２１の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより符号量予測処理、及び算術符号化処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機部等のハードウェアを含むものとする。
【０１０５】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１０６】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１０７】
１…符号量予測部
３…算術符号化処理部
１１，３１…コンテキスト演算部
１２，３２…コンテキスト状態保持バッファ
１４…符号量テーブル
１４ａ…符号量Ａテーブル
１４ｂ…符号量Ｂテーブル
１６…符号量加算部
２１…２値化処理部
２２…中間バッファ
３３…レギュラーコーダ
３４…バイパスコーダ
【図１】
0005632328.tif 000002
【図２】
0005632328.tif 000003
【図３】
0005632328.tif 000004
【図４】
0005632328.tif 000005
【図５】
0005632328.tif 000006
【図６】
0005632328.tif 000007
【図７】
0005632328.tif 000008
【図８】
0005632328.tif 000009
【図９】
0005632328.tif 000010
【図１０】
0005632328.tif 000011