(57)【要約】  符号化装置は、入力信号から生成された、複数のコンテキストを持つ、多値データを２値シンボル列に変換する２値化回路（１３１）と、２値シンボル列から所定の符号化単位の予測符号量を算出する算術符号量概算回路（２００）と、予測符号量に基づき入力信号に対する算術符号化を行う符号化回路（１０２）とを備える。算術符号量概算回路（２００）は、２値シンボル列をコンテキストに基づいて複数のグループに分ける選択器（２３０）と、複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路（２１１〜２１４）と、全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器（２３１）とを有する。
2008065814.tif 000002
【特許請求の範囲】
【請求項１】
入力信号から、複数のコンテキストを持ち、所定の符号化単位の多値データを生成するブロック化回路と、
前記ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、
前記２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、
前記予測符号量に基づいて、前記入力信号に対する算術符号化を行う符号化回路とを備え、
前記算術符号量概算回路は、
所定の符号化単位に含まれる前記２値シンボル列を前記コンテキストに基づいて複数のグループに分ける選択器と、
前記グループ毎に用意された回路であって、前記複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、
全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する、
ことを特徴とする符号化装置。
【請求項２】
前記符号量概算回路は、連続して同一のコンテキストを持つ前記２値シンボルをまとめた単位であるユニットに対して、前記区間の幅を前記ユニットの開始時に所定の初期値に設定することを特徴とする、請求項１に記載の符号化装置。
【請求項３】
前記符号量概算回路は、前記２値シンボル列の全ての符号パターンと全ての出現確率パターンを入力とするテーブルに基づいて整数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項１に記載の符号化装置。
【請求項４】
前記符号量概算回路は、前記ユニットの終了時に前記区間の幅の対数で近似されたテーブルに基づいて前記区間の幅を小数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項２に記載の符号化装置。
【請求項５】
第１の量子化パラメータを生成する量子化パラメータ発生回路と、
前記第１の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して前記多値データを生成する第１の量子化回路と、
第２の量子化パラメータを生成する量子化パラメータ算出回路と、
前記第２の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して第２の多値データを生成する第２の量子化回路と、
前記第２の多値データに対して算術符号化を行う算術符号化回路とをさらに備え、
前記量子化パラメータ算出回路は、前記第１の量子化パラメータと、前記所定の符号化単位の予測符号量と、符号化時に与えるべき所定の符号量とに基づいて、前記第２の量子化パラメータを算出する
ことを特徴とする請求項１記載の符号化装置。
【請求項６】
前記量子化パラメータ発生回路は、Ｑ個（Ｑは２以上の自然数）の代表量子化パラメータを設定しておき、前記Ｑ個の代表量子化パラメータから、前記所定の符号化単位毎に任意の一個の量子化パラメータを選択することにより、Ｎ個（Ｎは２以上の自然数）の前記係数データを量子化するための第１の量子化パラメータを生成する、ことを特徴とする請求項５に記載の符号化装置。
【請求項７】
前記ＮはＮ＝Ｌ×Ｑ（Ｌは自然数）を満たすことを特徴とする、請求項６に記載の符号化装置。
【請求項８】
前記Ｑ個の代表量子化パラメータは、量子化パラメータの最大値及び最小値を必ず含むように構成したことを特徴とする、請求項６に記載の符号化装置。
【請求項９】
前記入力信号は映像信号であり、前記係数データは、前記入力信号を周波数成分に変換した係数であることを特徴とする、請求項５に記載の符号化装置。
【請求項１０】
前記コンテキストは、少なくとも映像信号における輝度の係数データ及び色差の係数データの間で異なる値であり、前記選択器は、少なくとも前記輝度の係数データと前記色差の係数データを異なる前記グループに分けることを特徴とする、請求項９に記載の符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置及び方法に関し、特に、算術符号化を適用した符号化装置及び方法に関する。
【背景技術】
【０００２】
算術符号化は、情報源シンボルの発生確率に応じて情報量を理論限界まで可逆圧縮できる技術である。画像符号化の分野では、ＪＰＥＧ２０００規格（ＩＳＯ／ＩＥＣ１５４４４）、Ｈ．２６４／ＭＰＥＧ４−ＡＶＣ規格（非特許文献１参照。以下「Ｈ．２６４規格」と称す。）等に採用されている。Ｈ．２６４規格においては、コンテキスト適応算術符号化（ＣＡＢＡＣ：Ｃｏｎｔｅｘｔ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）として、シンタックスの確率特性に応じた効率の高い符号化を実現している。【０００３】
Ｈ．２６４規格におけるコンテキスト適応算術符号化について、図２２を用いて説明する。図２２は、コンテキスト適応算術符号化回路を説明する図である。【０００４】
図２２においてコンテキスト適応算術符号化回路１４５は、２値化回路１３０、コンテキスト計算回路５２０、及び算術符号化回路１４０から構成される。以下、この回路の動作について説明する。【０００５】
２値化回路１３０は変換係数データ、フラグ等の符号化情報からなる多値入力データに対して２値化を行う。２値化は、制御情報から、入力データの種類であるシンタックスエレメント（ｓｙｎｔａｘ  ｅｌｅｍｅｎｔ）を判別し、データの確率特性によって、表１に示すユーナリー・バイナライゼーション（ｕｎａｒｙ  ｂｉｎａｒｉｚａｔｉｏｎ）や固定長バイナライゼーション（ｆｉｘｅｄ−ｌｅｎｇｔｈ  ｂｉｎａｒｉｚａｔｉｏｎ）等の方式を用いて行われる。【０００６】
【表１】
2008065814.tif 000003
【０００７】
表１に示すユーナリー・バイナライゼーションでは、多値入力データ０，１，２，３，４，５・・・を、それぞれ２値シンボル（Ｂｉｎ  ｓｔｒｉｎｇ）０，１０，１１０，１１１０，１１１１０，１１１１１０・・・に変換することで２値化を行っている。２値化された２値シンボル（バイナリ）列は、（２値）算術符号化回路１４０に入力される。ユーナリー・バイナライゼーションは、変換係数のレベルを示すｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１において、１４以下の値を２値化するために用いられる。【０００８】
コンテキスト計算回路５２０は、シンタックスエレメントを示す制御情報に基づいて、２値シンボル列における現在の１ビットを符号化するために用いるコンテキストインデックス（以下「ｃｔｘＩｄｘ」と称す。）の値をＨ．２６４規格で定められた表２より求める。【０００９】
【表２】
2008065814.tif 000004
【００１０】
表２より、ｃｔｘＩｄｘは０から４５９までの４６０個の値を取りうる。１個のシンタックスエレメントに対して、スライスタイプによりｃｔｘＩｄｘの選択が異なる。また、例えばスライスタイプＩにおけるｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇのｃｔｘＩｄｘが７０−７２となっているように、ｃｔｘＩｄｘの値が複数個存在するシンタックスエレメントに対するｃｔｘＩｄｘの値を決定するには、オフセット値ｃｔｘＩｄｘＯｆｆｓｅｔ及び増分値ｃｔｘＩｄｘＩｎｃの値に基づき、ｃｔｘＩｄｘ＝ｃｔｘＩｄｘＯｆｆｓｅｔ＋ｃｔｘＩｄｘＩｎｃの演算により求められる。ｃｔｘＩｄｘＯｆｆｓｅｔは、表３（Ｈ．２６４規格の表より一部抜粋）に示すシンタックスエレメント固有の値であり、ｃｔｘＩｄｘＩｎｃはシンタックスエレメント毎に決められた規則（Ｈ．２６４規格参照）によって複数の値から一意に決定される。ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇの場合、ｃｔｘＩｄｘＯｆｆｓｅｔ＝７０であり、ｃｔｘＩｄｘＩｎｃは条件に応じて０から２のいずれかの値が選択される。【００１１】
コンテキスト計算回路５２０は、スライスの開始時に４６０個のｃｔｘＩｄｘの値毎に図２３に示す計算により発生確率情報を初期化して記憶する。発生確率情報とは、２値シンボルの０又は１のうち発生確率の高い方のシンボルを示すＭＰＳ（ｖａｌＭＰＳ）と、発生確率を示すｐＳｔａｔｅ（ｐＳｔａｔｅＩｄｘ）の組を含む。求められたｃｔｘＩｄｘの値に対応した発生確率情報を「コンテキスト情報」と呼ぶ。【００１２】
コンテキスト計算回路５２０は、コンテキスト情報を生成して算術符号化回路１４０に入力する。このように、算術符号化を行うシンタックスエレメントによって算術符号化回路１４０に入力されるシンボルの発生確率つまりコンテキスト情報が適応的に切り替わる。これにより、２値シンボルの発生確率が動的に変わる２値シンボル列に対して、最適な算術符号化が可能となる。ここで、一定区間の多値入力データを処理した際に発生した出力符号の総ビット長を「符号量」と呼ぶ。【００１３】
算術符号化回路１４０の動作概念を、図２４を用いて説明する。ｃｔｘＩｄｘがある値で一定となっており、コンテキスト情報から得た発生確率が、シンボル０は０．７５（２進数で０．１１）、シンボル１は０．２５であり、｛０，０，０，１｝のバイナリ列が入力された場合を考える。この場合、図２４（ａ）に示すように、現在のコンテキスト情報は、発生確率の高い方のシンボルを示すＭＰＳ＝０、発生確率ｐＳｔａｔｅ＝０．１１で表される。実際のｐＳｔａｔｅＩｄｘは、０から６３の範囲を取るインデックス値で表現されるが、ここでは簡単のため２進数の確率値とする。コンテキスト情報は、今回の２値算術符号化により更新され、コンテキスト計算回路５２０に戻される。コンテキスト計算回路５２０では、対応するｃｔｘＩｄｘの発生確率情報を更新する。この値は、次回に同じｃｔｘＩｄｘの符号化が行われる時に再利用される。【００１４】
図２４（ｂ）において、１個目の入力バイナリ値０が入力されると、［０，１］の区間が確率０．１１で区切られる０側の区間に狭められ、［０，０．１１］になる。２個目の入力０が入力されると、［０，０．１１］の区間が［０，０．１００１］に狭められる。ここで、０．１００１＝０．１１×０．１１である。同様にして、３個目の入力０により区間が［０，０．０１１０１１］になる。４個目の入力１は、１側の区間に狭められるため、最終的な区間が［０．０１０１０００１，０．０１１０１１］に狭められる。ここで、この最終的な区間に含まれる値のうち、最短の語長を持つものが符号語となる。０．０１１は、この区間に含まれるので、小数点以下の０１１が出力バイナリ列となり、４ビットの入力値が３ビットに圧縮されたことになる。【００１５】
算術符号化回路１４０の実際の動作では、前記区間を有限語長で扱うため、区間の左端の値をｃｏｄＩＬｏｗ（０．０１０１０００１等）、区間の幅をｃｏｄＩＲａｎｇｅ（０．０００１１０１１等）として、ｃｏｄＩＬｏｗ及びｃｏｄＩＲａｎｇｅの値に応じて出力ビットを確定し、ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗを１ビット左シフトして区間の分解能を上げるリノーマライゼーションと呼ぶ処理が行われる。実際の１ビットの算術符号化処理は図２５及び図２６のフローチャートに従って行われる。【００１６】
図２５は２値バイナリ（以下「Ｂｉｎ」と称す。）１個の入力に対する算術符号化処理（８２０）であり、変数の初期化（８２１）、ＢｉｎがＭＰＳであるかの判定（８２２）、ＭＰＳでない場合にはｃｏｄＩＬｏｗ及びｃｏｄＩＲａｎｇｅの更新（８２３）、ｐＳｔａｔｅＩｄｘの値の判定（８２４）、ＭＰＳの反転（８２５）、発生確率ｐＳｔａｔｅＩｄｘの更新（８２６、８２７）、リノーマライゼーション（８３０）から成る。図２５はリノーマライゼーション８３０の処理を示している。【００１７】
ところで、図２５及び図２６におけるｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗは内部状態変数であり、スライス先頭でのみ初期化される。図２４に示した４ビットの入力値を符号化した直後にｃｔｘＩｄｘが異なる入力値を符号化する場合でも、コンテキスト情報のみが変更され、ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗは４ビット符号化した直後の値が用いられる。変換係数データを算術符号化する際には、輝度６４係数のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、輝度６４係数のｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１、色差ＤＣ成分のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、色差ＡＣ成分のｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１といったｃｔｘＩｄｘの異なる多値入力データを連続して符号化するが、内部状態を初期化するのはスライス先頭のみであるため、これらを含む全てのシンタックスエレメントはスライス内では逐次符号化するしかなく、並列に処理できないことになる。【００１８】
一方、動画像符号化においては、様々な特性を持つ入力画像を所定のビットレートに圧縮するため、各マクロブロックを符号化する際の量子化パラメータを適切に制御して、符号量制御を行う必要がある。符号量制御の精度を高めるためには、スライス、フレーム、ＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）といった単位でパラメータを変更して繰り返し符号化を行うことが一般的である。繰り返し符号化には、主に符号量を予測するための仮符号化と、最終的な符号化の２種類の符号化が含まれる。【００１９】
従来の仮符号化の方式は、最終的な符号化と同様、実際にエントロピー符号化を行うものと、エントロピー符号化を行わずに代替の演算を行うものとに大別される。従来の符号化装置において前者の方式は、エントロピー符号化に可変長符号化（Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）を用いる場合が一般的であった。しかし、近年、エントロピー符号化として算術符号化を用いる方式が提案されている。前述のように算術符号化はビット単位の符号化処理でありスライス内で逐次符号化するしかないため、算術符号化を仮符号化に適用すると、膨大な処理量が必要となってしまう。故にリアルタイム処理の必要とされる回路において、算術符号化を仮符号化に適用することは非常に困難である。【００２０】
そのため、最終的な符号化において算術符号化を用いる場合の仮符号化の方式としては、後者の方式（エントロピー符号化の代替の演算を行う）が提案されている。例えば特許文献１は、算術符号化を行わず、入力２値シンボル量を出力符号量の予測値とすることで、最適な符号化モードを選択する際の処理量を削減する。また特許文献２のように関数を用いて予測する方式も提案されている。【００２１】
【特許文献１】特開２００５−３１８２９６号公報
【特許文献２】特開２００５−２０３９０５号公報
【非特許文献１】ＩＳＯ／ＩＥＣ１４４９６−１０  Ａｄｖａｎｃｅｄ  ｖｉｄｅｏ  ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、算術符号化を用いた符号化装置において、算術符号化を行わずに仮符号化を行う従来の方式では、符号量の予測を精度よく行うことができないという課題があった。【００２３】
すなわち、前述の特許文献１で示された方式では、複数の符号化モード間の相対比較としてはある程度機能するが、算術符号化を行わないため符号量の予測値を適切に算出することはできない。また、特許文献２で示された方式では、算術符号化の演算とは全く異なるため、正確な符号量の予測が行えない。【００２４】
本発明はこのような課題に鑑み、算術符号化を用いた符号化装置において、算術符号化の近似演算を行いながらも、回路での処理時間を大幅に削減した精度の高い符号量予測方式を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明は、仮符号化において、２値シンボル列をコンテキストに基づき複数のグループに分け、各グループに分類された２値シンボル列に対して並列に算術符号量概算処理を行うことで予測符号量を求める。【００２６】
より具体的には、本発明に係る符号化装置は、入力信号から、複数のコンテキストを持ち、所定の符号化単位（例えば、マクロブロック）の多値データを生成するブロック化回路と、ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、予測符号量に基づいて、入力信号に対する算術符号化を行う符号化回路とを備える。算術符号量概算回路は、所定の符号化単位に含まれる前記２値シンボル列をコンテキストに基づいて複数のグループに分ける選択器と、グループ毎に用意された回路であって、複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する。
【発明の効果】
【００２７】
本発明によれば、算術符号化を用いた符号化装置において、コンテキストに基づいて分けられた複数のグループに対する算術符号化の近似演算を並列に行うことが可能となり、算術符号化に近い演算を行いながらも算術符号化と比較して処理時間を大幅に削減できる。これにより動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号化装置を実現できる。また、高画質な映像符号化装置を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】映像符号化装置の構成図
【図２】算術符号量概算回路の構成図
【図３】算術符号量概算回路での並列処理を説明した図
【図４】算術符号量概算回路が処理対象とするシンタックスエレメントを示す図
【図５】逐次処理での１ユニットの符号量概算処理を示すフローチャート
【図６】ユニット初期化処理を示すフローチャート
【図７】１Ｂｉｎの符号量概算処理を示すフローチャート
【図８】１Ｂｉｎの符号量加算処理を示すフローチャート
【図９】１ユニットの微小符号量概算処理を示すフローチャート
【図１０】小数符号量テーブルを説明する図
【図１１】ユーナリー・バイナライゼーションの１ユニットの符号量概算処理を示す    フローチャート
【図１２】ユニット内の全Ｂｉｎに対する符号量概算処理を示すフローチャート
【図１３】整数符号量テーブルを説明する図
【図１４】整数符号量テーブルの初期化を説明する図
【図１５】バイパス時の１ユニットの符号量概算処理を示すフローチャート
【図１６】算術符号量概算回路の予測精度を示す図
【図１７】（ａ）１９２０×１０８０画素で構成される１フレームを示した図、（ｂ）１２０×６８マクロブロックで構成される１フレームを示す図
【図１８】仮量子化パラメータの選択例を示す図
【図１９】仮量子化パラメータの選択例を示す図
【図２０】符号量積算メモリに蓄積されるデータ例を示す図
【図２１】最適量子化パラメータの算出方法を説明するための図
【図２２】従来のコンテキスト適応算術符号化回路を説明する図
【図２３】発生確率情報の初期化を説明する図
【図２４】算術符号化の概念を説明する図
【図２５】１Ｂｉｎの入力に対する算術符号化処理を示すフローチャート
【図２６】リノーマライゼーション処理を示すフローチャート
【符号の説明】
【００２９】
１００    映像符号化装置
１０１    第一の符号化回路
１０２    第二の符号化回路
１１１    量子化パラメータ発生回路
１１２    量子化パラメータ算出回路
１２１    第一の量子化回路
１２２    第二の量子化回路
１２４    逆量子化回路
１３１    第一の２値化回路
１３２    第二の２値化回路
１４２    算術符号化回路
１５１    フレームメモリ
１５２    予測モードメモリ
１５３    符号量積算メモリ
１６１    第一のブロック化回路
１６２    第二のブロック化回路
１７１    第一のイントラ予測生成回路
１７２    第二のイントラ予測生成回路
１７３    予測モード検出回路
１８１    第一のＤＣＴ回路
１８２    第二のＤＣＴ回路
１８４    逆ＤＣＴ回路
１９１    映像信号入力
１９２    出力ビットストリーム/E
２００    算術符号量概算回路
２１１〜２１４    算術符号量概算回路
２３０    選択器
２３１    加算器
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態について図面を参照しながら説明する。【００３１】
１．映像符号化装置の構成
本実施の形態では、フレーム内で復号可能なイントラフレームを符号化対象として、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号量制御を行う映像符号化装置について説明する。【００３２】
図１に本発明の実施の形態による映像符号化装置の構成例を示す。図１において、映像符号化装置１００は、仮符号化を行う第一の符号化回路１０１、最終的な符号化を行う第二の符号化回路１０２、フレームメモリ１５１、予測モードメモリ１５２、及び符号量積算メモリ１５３から構成される。【００３３】
第一の符号化回路１０１は、入力信号をブロック化するための第一のブロック化回路１６１、予測モード検出回路１７３、第一のイントラ予測生成回路１７１、直交変換回路としての第一のＤＣＴ回路１８１、量子化パラメータ発生回路１１１、第一の量子化回路１２１、第一の２値化回路１３１、及び算術符号量概算回路２００から構成される。【００３４】
第二の符号化回路１０２は、第二のブロック化回路１６２、第二のイントラ予測生成回路１７２、第二のＤＣＴ回路１８２、量子化パラメータ算出回路１１２、第二の量子化回路１２２、第二の２値化回路１３２、算術符号化回路１４２、逆量子化回路１２４、及び逆ＤＣＴ回路１８４から構成される。【００３５】
以上のように構成された映像符号化装置について、以下その動作を説明する。【００３６】
２．映像符号化装置の動作
映像符号化装置は映像信号１９１をフレーム単位で入力し、処理する。以下では、説明の便宜上、１フレームの映像信号に対する処理の流れについて説明する。【００３７】
映像符号化装置１００に１フレームのディジタル映像信号１９１が入力されると、第一の符号化回路１０１は、入力した１フレームのディジタル映像信号に対して仮符号化を行う。この仮符号化において、予測モード検出回路１７３により検出された予測モード値が予測モードメモリ１５２に、算術符号量概算回路２００により出力された符号量が符号量積算メモリ１５３にそれぞれ格納される。【００３８】
映像符号化装置１００に入力されたディジタル映像信号１９１はフレームメモリ１５１に格納されて１フレーム以内の一定時間だけ遅延されて、第二の符号化回路１０２に出力される。第二の符号化回路１０２は１フレームのディジタル映像信号を符号化して得られたストリーム１９２を出力する。第二の符号化回路１０２での符号化においては、予測モードメモリ１５２に格納された予測モード値、及び符号量積算メモリ１５３に格納された符号量を入力して、同じフレームに対する符号化が行われる。以下、第一及び第二の符号化回路１０１、１０２それぞれの詳細な処理について説明する。【００３９】
２．１  第一の符号化回路による仮符号化
第一の符号化回路１０１による仮符号化の処理を説明する。
ブロック化回路１６１は、ディジタル映像信号１９１を受け、１フレーム分の映像信号を１６×１６画素からなる複数のマクロブロックにブロック化する。マクロブロックは、後述するＤＣＴやイントラ予測の単位となるブロックを複数個含む。【００４０】
イントラ予測生成回路１７１は、１６×１６画素のマクロブロック毎に、入力されたディジタル映像信号の画素と、入力されたディジタル映像信号１９１の画像に隣接する画素とから、そのマクロブロックの各画素の値を種々の予測モードで予測（イントラ予測）する。なお、イントラ予測は、マクロブロック単位の代わりに、８×８画素ブロックや４×４画素ブロックの単位でも行われる。【００４１】
予測モード検出回路１７３は入力したディジタル映像信号１９１から予測モード値の検出を行う。予測モード値には、フィールドマクロブロック復号フラグ（ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ）、輝度４×４イントラ予測モード（Ｉｎｔｒａ４ｘ４ＰｒｅｄＭｏｄｅ）、輝度８×８イントラ予測モード（Ｉｎｔｒａ８ｘ８ＰｒｅｄＭｏｄｅ）、色差イントラ予測モード（ｉｎｔｒａ＿ｃｈｒｏｍａ＿ｐｒｅｄ＿ｍｏｄｅ）が含まれる。検出された予測モード値は予測モードメモリ１５２に蓄積される。【００４２】
入力されたディジタル映像信号１９１において符号化対象のマクロブロックの各画素値と、イントラ予測生成回路１７１により作成された、符号化対象のマクロブロックの画素予測値との差分値が計算されて、１６×１６画素の差分値のブロックが生成され、ＤＣＴ回路１８１に出力される。このイントラ予測は、マクロブロック単位の代わりに、８×８画素ブロックや４×４画素ブロックの単位でも行われる。【００４３】
ＤＣＴ回路１８１は、差分値のブロックに対してＤＣＴ（離散コサイン変換）等の直交変換処理を行う。この処理は、通常４×４画素や８×８画素のブロック単位に行われ、周波数成分の係数データが出力される。係数データは量子化回路１２１に入力され、量子化パラメータ発生回路１１１により与えられた量子化パラメータにしたがい量子化される。量子化パラメータは、量子化パラメータ発生回路１１１により、複数のパラメータ候補の中から選択して決定される。【００４４】
量子化回路１２１により量子化された係数データは２値化回路１３１にて２値化される。算術符号量概算回路２００は、２値化された係数データから予測符号量を求め、出力する。算術符号量概算回路２００の出力する予測符号量は、符号量積算メモリ１５３に記録される。【００４５】
２．１．１  算術符号量概算回路の動作
算術符号量概算回路２００は、算術符号化に近い演算を行うことで、マクロブロック単位毎に予測符号量すなわち算術符号化の符号量の概算値を求める。図２に算術符号量概算回路２００の構成を示す。算術符号量概算回路２００は、コンテキスト計算回路５２１、選択器２３０、第一ないし第四の符号量概算回路２１１〜２１４、及び加算器２３１により構成される。第一ないし第四の符号量概算回路２１１〜２１４は、スライスに対するコンテキストインデックス（ｃｔｘｉｄｘ）の値に応じて選択される。【００４６】
以上のように構成される算術符号量概算回路２００について以下その動作を説明する。【００４７】
多値入力データ５０１は、２値化回路１３０において２値シンボル（バイナリ）列５０３に変換される。２値化回路１３１は、図２２におけるコンテキスト適応算術符号化回路１４５に含まれる２値化回路１３０と基本的には同じ回路であるが、２値シンボル列５０３は必ずしもシリアル出力でなくとも良く、パラレル出力としても良い。コンテキスト計算回路５２１は、多値入力データ５０１と同時に入力される制御情報５０２に基づいて、現在のコンテキストインデックス（ｃｔｘＩｄｘ）５０５を選択器２３０に出力する。選択器２３０は、コンテキストインデックス（ｃｔｘＩｄｘ）５０５に基づいて、現在の２値シンボル５０３を、第一ないし第四の符号量概算回路２１１〜２１４のいずれかに割り振る。第一及び第二の符号量概算回路２１１、２１２は輝度に関するデータを処理し、第三及び第四の符号量概算回路２１３、２１４は色差に関するデータを処理するように２値シンボルが割り振られる。【００４８】
算術符号量概算回路２００では、第一ないし第四の符号量概算回路２１１〜２１４において同時に符号量概算処理を実施するため、図３に示すように並列処理が可能となり、符号量概算のための処理時間を短縮できる。【００４９】
コンテキストインデックス（ｃｔｘＩｄｘ）に基づく、２値シンボル５０３の、符号量概算回路２１１〜２１４への割り振り方について図４を参照してより具体的に説明する。【００５０】
図４は、表１のｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に属するシンタックスエレメントに関して、ｃｔｘＩｄｘと、割り振られる第一ないし第四の符号量概算回路２１１〜２１４との対応を説明した図である。同図より、例えばｃｔｘＩｄｘ＝４０２であれば、輝度のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇに属するので、第一の符号量概算回路２１１が選択される。なお、ｃｏｅｆｆ＿ｓｉｇｎ＿ｆｌａｇは、算術符号化にてバイパスされるため表１には示されていないが、符号量概算回路ではバイパスとして扱い符号量の概算に用いられる。【００５１】
以上のようにして各符号量概算回路２１１〜２１４により算出された符号量は、加算器２３１にて加算され、一定区間毎に予測符号量２９０として出力される。【００５２】
各符号量概算回路２１１〜２１４で実行される処理は、図５、図１１及び図１５のそれぞれのフローチャートで示す３つの処理がある。図１１に示す処理は、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１のように、２値化処理においてユーナリー・バイナライゼーションを用いるシンタックスエレメントに対して適用される。図５に示す処理は、図１１に示す処理の適用対象でない通常のシンタックスエレメントに対して適用する逐次処理を示す。図１５に示す処理は、前述したバイパスとして扱われた２値シンボル（以下「Ｂｉｎ」と称す。）を適用対象とする処理である。図５、図１１及び図１５のそれぞれの処理はユニット単位で実行される。ユニットとは、２値シンボル（Ｂｉｎ）の集合であり、通常ｃｔｘＩｄｘの値が連続して同じとなるＢｉｎの集合に設定される。【００５３】
（ａ）逐次処理による算術符号量概算処理
図５〜図９を参照し、逐次処理による符号量概算処理を説明する。図５は、逐次処理による１ユニットの符号量概算処理のフローチャートを示している。本符号量概算処理では、最初に（ユニットの開始時に）ユニット初期化処理（Ｓ１１）を行い、次に１Ｂｉｎの符号量概算処理（Ｓ１２）をユニットが終了するまで繰返し（Ｓ１３）、最後に（ユニットの終了時に）１ユニットの微小符号量概算処理（Ｓ１４）を行って終了する。【００５４】
図６を参照し、上記ステップＳ１１のユニット初期化処理の詳細を説明する。ユニット初期化処理では、区間の幅（ｃｏｄＩＲａｎｇｅ）、ユニット符号量の整数部分（又は整数符号量）（ｃｏｄｅＬｅｎｇｔｈＩｎｔ）、ユニット符号量の小数部分（又は小数符号量）（ｃｏｄｅＬｅｎｇｔｈＦｒａｃ）をそれぞれ初期化する（Ｓ２１）。ユニット符号量は、このように整数部分と小数部分に分かれており、小数の精度で符号量概算が行われる。ｃｏｄｅＬｅｎｇｔｈＦｒａｃは、小数点以下を９ビット精度で表しており、０から５１１までの値を取り得る。【００５５】
図７を参照し、上記ステップＳ１２の１Ｂｉｎの符号量概算処理の詳細を説明する。１Ｂｉｎの符号量概算処理では、最初に変数の初期化（Ｓ３１）を行う。次にＢｉｎがＭＰＳであるかの判定を行う（Ｓ３２）。ＭＰＳでない場合にはｃｏｄＩＲａｎｇｅを更新し（Ｓ３３）、ｐＳｔａｔｅＩｄｘの値を判定する（Ｓ３４）。ｐＳｔａｔｅＩｄｘの値が０の場合、ＭＰＳの反転を行い（Ｓ３５）、発生確率ｐＳｔａｔｅＩｄｘを更新する（Ｓ３６）。ステップＳ３２にてＢｉｎがＭＰＳである場合には、ｐＳｔａｔｅＩｄｘの更新のみを行う（Ｓ３７）。最後に１Ｂｉｎの符号量加算処理（Ｓ３８）を行って処理を終了する。図７のフローチャートは、図２５に示した算術符号化処理のフローチャートに準じており、ステップＳ３３でｃｏｄＩＬｏｗを計算しない点と、図２５のリノーマライゼーションのステップ（Ｓ８３０）の代わりに１Ｂｉｎの符号量加算処理（Ｓ３８）を実施する点とが異なる。【００５６】
図８を参照し、上記ステップＳ３８の１Ｂｉｎの符号量加算処理の詳細を説明する。１Ｂｉｎの符号量加算処理では、ｃｏｄＩＲａｎｇｅが０ｘ１００以上の値になるまで、ｃｏｄＩＲａｎｇｅを１ビット左シフトしてユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを１加算する処理が繰り返される（Ｓ４１、Ｓ４２）。図８のフローチャートは、図２６に示したリノーマライゼーションのフローチャートにおいて、ｃｏｄＩＲａｎｇｅを操作する部分のみを抽出し、ｃｏｄＩＲａｎｇｅの左シフト回数を符号量に加算する処理を加えたものに等しい。【００５７】
図９を参照し、上記ステップＳ１４の１ユニットの微小符号量概算処理の動作を説明する。図９に示す１ユニットの微小符号量概算処理では、ユニット符号量の小数部分ｃｏｄｅＬｅｎｇｔｈＦｒａｃを、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＦｒａｃ（）によって求める（Ｓ５１）。図１０に、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＦｒａｃ（）を示す。小数符号量テーブルｍＴｂｌは２５６個の定数から構成される（図１０（ａ）参照）。小数符号量テーブルｍＴｂｌは、関数ｉｎｉｔＴａｂｌｅＣｄＦｒａｃ（）により初期化される（図１０（ｂ）参照）。小数符号量テーブルｍＴｂｌは、ｍＴｂｌ［０］＝５１１、ｍＴｂｌ［２５５］＝１となる対数のテーブルである。ｃｏｄＩＲａｎｇｅ＝２５６の時にｍＴｂｌ［０］＝５１１となり、ｃｏｄＩＲａｎｇｅ＝５１１の時にｍＴｂｌ［２５５］＝１となる。概念的にはｃｏｄＩＲａｎｇｅが５１２に近いほどＭＰＳが相対的に多く出現していたので、小数符号量が短くなる。また、ｃｏｄＩＲａｎｇｅが２５６に近いほどＬＰＳが相対的に多く出現していたので、小数符号量が長くなる。この関係がｉｎｉｔＴａｂｌｅＣｄＦｒａｃ（）内の式に示す対数のカーブにより高い精度で近似される。【００５８】
（ｂ）ユーナリー・バイナライゼーションを用いるシンタックスエレメントに対する符号量概算処理
図１１を参照し、ユーナリー・バイナライゼーションを用いるシンタックスエレメントに対する符号量概算処理を説明する。【００５９】
図１１に示す、ユーナリー・バイナライゼーションの符号量概算処理では、最初にユニット初期化処理（Ｓ６１）を行い、次にユニット内の全Ｂｉｎに対する符号量概算処理（Ｓ６２）を行って、最後に１ユニットの微小符号量概算処理（Ｓ６３）を行って終了する。図１１に示す１ユニットの符号量概算処理は、図５で示した逐次処理の１ユニットの符号量概算処理と比較し１て、１Ｂｉｎの符号量概算処理（Ｓ１２）のステップの繰り返し処理を、ユニット内の全Ｂｉｎに対する符号量概算処理（Ｓ６２）で置換えたものである。【００６０】
図１１に示すユーナリー・バイナライゼーションの符号量概算処理を適用するシンタックスエレメントを、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１を例として用いて説明する。ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１は、表１に示すＢｉｎの位置ｂｉｎＩｄｘによりｃｔｘＩｄｘが異なる。このため、ｂｉｎＩｄｘ＝０を除いて１≦ｂｉｎＩｄｘ≦１３の範囲のＢｉｎを１個のユニットとする。つまり、表１の「Ｖａｌｕｅ  ｏｆ  ｓｙｎｔａｘ  ｅｌｅｍｅｎｔ」の欄が１以上１４以下のものが対象となる。最大値が１４となるのは、最大値ｂｉｎＩｄｘ＝１３が符号「１」で終わるトランケーテッド（Ｔｒｕｎｃａｔｅｄ）形式になっているためである。ｂｉｎＩｄｘ＝１以降の符号「１」の数を変数ｒｕｎ＿ｌｅｎｇｔｈで表すと、ｒｕｎ＿ｌｅｎｇｔｈは０以上１３以下の値を取る。なお、ｂｉｎＩｄｘ＝１４以上はバイパスとなるから、この例ではｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１の値が１以上となる全ての係数に対して、バイパス部分を除いてユーナリー・バイナライゼーションの符号量概算処理が適用される。【００６１】
図１２を参照し、上記ステップＳ６２のユニット内の全Ｂｉｎに対する符号量概算処理の詳細を説明する。まず全Ｂｉｎに対する符号量の加算を行う（Ｓ７１）。この処理は、ユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＩｎｔ（）を用いて加算し、ｃｏｄＩＲａｎｇｅをテーブル参照関数ｒｅａｄＴａｂｌｅＲｎｇ（）を用いて更新することで行われる。次に全Ｂｉｎに対するコンテキスト情報の更新を行う（Ｓ７２）。この処理は、ｖａｌＭＰＳをテーブル参照関数ｒｅａｄＴａｂｌｅＭｐｓ（）を用いて更新し、ｐＳｔａｔｅＩｄｘをテーブル参照関数ｒｅａｄＴａｂｌｅＳｔａｔｅ（）を用いて更新することで行われる。【００６２】
ここで、図１３を参照し、各テーブル参照関数を説明する。図１３に示すように、ビットの最大値が１３であるため、ＭＡＸ＿ＲＵＮ＝１３と定義している。テーブル参照関数：ｒｅａｄＴａｂｌｅＣｄＩｎｔ（）、ｒｅａｄＴａｂｌｅＲｎｇ（）、ｒｅａｄＴａｂｌｅＭｐｓ（）、ｒｅａｄＴａｂｌｅＳｔａｔｅ（）は、それぞれ整数符号量テーブル（ｍＣｄｌＩｎｔＴｂｌ）、レンジテーブル（ｍＲｎｇＴｂｌ）、ＭＰＳテーブル（ｍＭｐｓＴｂｌ）、ｐＳｔａｔｅテーブル（ｍＳｔａｔｅＴｂｌ）を参照して値を返す。これらのテーブルは、２値シンボル列の全ての符号パターンと全ての出現確率パターンを入力とする。【００６３】
図１４を参照し、各テーブルの初期化処理の詳細を説明する。初期化関数ｉｎｉｔＴａｂｌｅＣｄＩｎｔ（）を、全てのｒｕｎ＿ｌｅｎｇｔｈ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘに対して実行することで、整数符号量テーブル（ｍＣｄｌＩｎｔＴｂｌ）、レンジテーブル（ｍＲｎｇＴｂｌ）、ＭＰＳテーブル（ｍＭｐｓＴｂｌ）、ｐＳｔａｔｅテーブル（ｍＳｔａｔｅＴｂｌ）が全て初期化される。この初期化処理は、図５に示す逐次処理による１ユニットの符号量概算処理の演算に従っている。図１４のＰｒｏｃ１Ｂｉｎ（ｂｉｎＶａｌ，＆ｖａｌＭＰＳ，＆ｐＳｔａｔｅＩｄｘ）は、図５の１Ｂｉｎの符号量概算処理（Ｓ１２）に対応しており、ｂｉｎＶａｌ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘ、ｃｏｄＩＲａｎｇｅに対して図７の処理と等価な処理が行われる。但し、図７の１Ｂｉｎの符号量加算処理（Ｓ３８）は、図１４内の２箇所のｗｈｉｌｅ処理にて行われる。以上により、全てのＢｉｎに対する符号量の整数部分が一括して計算可能な各テーブルが初期化される。【００６４】
（ｃ）バイパスとして扱われたＢｉｎに対する算術符号量概算処理
図１５を参照し、バイパスとして扱われたＢｉｎに対する１ユニットの符号量概算処理の詳細を説明する。本符号量概算処理は、ユニット初期化処理（Ｓ８１）を行った後、ユニットが終了するまでユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを１ずつ加算する（Ｓ８２、Ｓ８３）。つまり、本符号量概算処理は、１Ｂｉｎの符号量を単に１ビットの符号量としてカウントする。【００６５】
図２に示す加算器２３１は、以上の図５、図１１、図１５に示す３つの符号量概算処理により得られたユニット符号量の概算値から予測符号量を以下のように計算する。【００６６】
マクロブロックに含まれる全てのユニットに対して、全ての符号量概算回路２１１〜２１４から出力されたユニット符号量の整数部分（ｃｏｄｅＬｅｎｇｔｈＩｎｔ）及びユニット符号量の小数部分（ｃｏｄｅＬｅｎｇｔｈＦｒａｃ）をそれぞれ加算して、マクロブロックの予測符号量の整数部分（ＭＢｃｏｄｅＬｅｎｇｔｈＩｎｔ）、マクロブロックの予測符号量の小数部分（ＭＢｃｏｄｅＬｅｎｇｔｈＦｒａｃ）を計算する。最終的なマクロブロックの予測符号量ＭＢｃｏｄｅＬｅｎｇｔｈは、次式で求められる。
ＭＢｃｏｄｅＬｅｎｇｔｈ＝ＭＢｃｏｄｅＬｅｎｇｔｈＩｎｔ＋
（ＭＢｃｏｄｅＬｅｎｇｔｈＦｒａｃ＞＞９）    （１）【００６７】
次に、以上で説明した１ユニットの符号量概算処理（図５、図１１、図１５参照）が、ユニット毎に並列に処理可能である理由を説明する。【００６８】
前述したようにコンテキスト適応型算術符号化を並列処理するための障害であった内部状態ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗの２つに関して、ｃｏｄＩＲａｎｇｅは図６に示すユニット初期化処理にてユニット毎に固定値に初期化されており、ｃｏｄＩＬｏｗは図５から図１５に示した全体の処理の中に存在しない。よって各ユニットの符号量概算処理は、図３に示すように回路上で時間的に並列に実施することが可能となる。【００６９】
また図１１を参照して説明したように、１ユニットの符号量概算処理（ユーナリー・バイナライゼーション）は複数のＢｉｎを一括に処理可能である。これは一定範囲のユーナリー・バイナライゼーションの符号群と、全てのｖａｌＭＰＳと、全てのｐＳｔａｔｅＩｄｘとの組合せに基づくテーブルを用意することで可能となる。【００７０】
算術符号量概算回路２００が高い精度でマクロブロックの符号量を近似するための条件について説明する。【００７１】
その条件とは、図５、図１１、図１５に示す１ユニットの符号量概算処理を図２に示した第一から第四の符号量概算回路２１１〜２１４に適用した上で、図４に示したように符号量概算回路全体（＃１〜＃４の合計）で網羅するｃｔｘＩｄｘによる発生符号量のマクロブロック全体の発生符号量に占める割合が、１００％に近いことである。図４の例では、ｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に属するシンタックスエレメントの発生符号量がマクロブロック全体の発生符号量の１００％に近いという前提で、符号量概算処理に用いるシンタックスエレメントを選定している。よって、これら以外のシンタックスエレメントの占める発生符号量が無視できない場合には、そのシンタックスエレメントも符号量概算処理の対象とする必要がある。【００７２】
図１６は、本実施形態による算術符号量概算回路２００の予測符号量２９０の予測精度を示した図である。図１６は、マクロブロック単位の予測符号量と算術符号化による発生符号量との誤差の割合を、１フレーム（８１６０マクロブロック）に渡りプロットしたものである。統計的性質の異なる４種類のフレーム（Ｓｅｑｕｅｎｃｅ＃１〜＃４）に対して、平均０．４７％、標準偏差１．５５％の誤差であり、高い精度が得られている。【００７３】
２．２  第二の符号化回路による最終的な符号化
図１における第二の符号化回路１０２の符号化の動作を説明する。第一の符号化回路１０１により１フレームの仮符号化が終了すると、フレームメモリ１５１に蓄積された１フレームの映像信号が、ブロック化回路１６２に入力される。符号化対象のマクロブロックの各画素値は、予測モードメモリ１５２から読み出した予測モード値に基づいてイントラ予測生成回路１７２が生成した画素予測値との差分値が計算される。差分値のブロックに対してＤＣＴ回路１８２にてＤＣＴが行われ、周波数成分の係数データが出力される。係数データは量子化回路１２２に入力されて量子化される。この際の量子化パラメータは、量子化パラメータ算出回路１１２により算出される。量子化された係数データは２値化回路１３２にて２値シンボルに変換され、算術符号化回路１４２にて符号化されてビットストリーム１９２として出力される。【００７４】
２．３  第一の符号化回路１０１での仮符号化における量子化パラメータの設定
第一の符号化回路１０１における仮符号化の具体例を、図１７（ａ）に示すような１９２０×１０８０画素の１フレームの符号化においてスライス単位に最適な量子化パラメータを算出する例を用いて説明する。【００７５】
図１７（ｂ）に示すように１９２０×１０８０画素のフレームは、１６×１６画素のマクロブロックが８１６０（＝１２０×６８）個で構成される。フレームを分割するスライスは、任意の連続したマクロブロックの集合として定義できるが、一例として１個のスライスが２０４０個のマクロブロックを含み、１フレームが４個のスライスで構成される場合を考える。この場合、Ｎ＝Ｎｍｂ＝２０４０（＝８１６０／４）と設定できる。【００７６】
仮符号化の開始前に、第一の符号化回路１０１の量子化回路１２１で使用される仮量子化パラメータＱＰ１（ｎ）を決定する。仮量子化パラメータは、マクロブロック毎に複数の候補の中から１つを選択して設定される。すなわち１個のマクロブロックに対する仮量子化パラメータＱＰ１（ｎ）は、任意の異なるＱ種類の代表量子化パラメータｑｐ１（ｘ）（ｘ＝０，１，…，Ｑ−１）から１個を選んで、当該マクロブロックの仮量子化パラメータＱＰ１（ｎ）に設定することで決定できる。【００７７】
例えば、「０」と「２０」の２種類の代表量子化パラメータｑｐ１（ｘ）＝｛０，２０｝を与える場合を考える。ここで、Ｆ（ｘ）＝｛Ａ０，Ａ１，…，ＡＱ−１｝（Ａｎは整数）の表記は、Ｆ（０）＝Ａ０、Ｆ（１）＝Ａ１、…Ｆ（Ｑ−１）＝ＡＱ−１を意味するものとする。各マクロブロックの仮量子化パラメータは、各仮量子化パラメータの出現頻度が等しくなるように、２種類の代表量子化パラメータの中から選択する。この例では、半数のマクロブロックに量子化パラメータ「０」を、残り半数のマクロブロックに量子化パラメータ「２０」を与える。また、仮量子化パラメータがスライス内で偏るのを防ぐため、スライス内に交互又はランダムに仮量子化パラメータを配置する。例えば、プログレッシブ走査においては、図１８（ａ）に示すように通常のラスタスキャン順に交互に仮量子化パラメータを与え、インターレース走査では図１８（ｂ）に示すようにマクロブロックの対毎に交互に仮量子化パラメータを与えることができる。【００７８】
仮符号化における代表量子化パラメータｑｐ１（ｘ）の種類Ｑと、その値ｑｐ１（ｘ）（ｘ＝０，１，…，Ｑ−１）の決定方法について、図１９を用いて説明する。【００７９】
量子化回路１２１で用いられる代表量子化パラメータの種類Ｑは、２０４０（１スライスに含まれるマクロブロック数）の約数とすることができる、又はインターレース走査用の符号化を行うため、マクロブロックを対にする場合は、その１／２である１０２０の約数とすることができる。このようにして代表量子化パラメータの種類Ｑを設定すれば、スライス内で任意の代表量子化パラメータが出現する回数を一定にできる。例えばプログレッシブの場合、Ｑとしては２０４０の約数である５、１０、２０が選択できる。それぞれのＱの場合の、１個のスライス内における各代表量子化パラメータの出現回数は４０８回、２０４回、１０２回となる。【００８０】
代表量子化パラメータｑｐ１（ｘ）としては、エンコーダで選択できる量子化パラメータの範囲から異なる値をＱ個選択する。この場合、最適な符号化のための符号量予測が行い易くなるように、それらの値を適度に分散させるのが好ましい。例えば、１スライスに含まれるマクロブロック数が２０４０で、エンコーダで選択できる量子化パラメータＱＰが０から５１の範囲である場合、代表量子化パラメータｑｐ1として、図１９（ａ）に示すように、Ｑ＝１０、ｑｐ１（ｘ）＝｛０，４，８，１２，１６，２２，２８，３４，４２，５１｝を選択することができる。このとき、プログレッシブ方式の場合は、図１９（ｂ）に示すように仮量子化パラメータが適用され、インターレース方式の場合は、図１９（ｃ）に示すように仮量子化パラメータが割当られる。また、代表量子化パラメータには、量子化パラメータの最大値及び最小値が含まれるようにするのが好ましい。【００８１】
第一の符号化回路１０１における仮符号化の結果として符号量積算メモリ１５３に蓄積されるデータについて説明する。仮符号化では、Ｎ＝２０４０個のマクロブロックを含むスライス１個に対し、同じ代表量子化パラメータｑｐ１（ｘ）を使用したマクロブロック毎に、算術符号量概算回路２００から出力された予測符号量Ｒ１（ｎ）の総和を計算する。その総和をＱＰ別予測符号量ｒ１（ｘ）とし、符号量積算メモリ１５３に蓄積する。図２０の例では、ｑｐ１（ｘ）＝｛０，４，８，１２，１６，２２，２８，３４，４２，５１｝（ｘ＝０，１，…，９）の各々に対し、代表量子化パラメータ毎に予測符号量Ｒ１（ｎ）の総和を取ったＱＰ別予測符号量ｒ１（ｘ）＝｛９５６２６，８２２５２，６４４５１，４８６４８，３１７８５，１９０９８，１０３７３，５４３９，２２５９，１２６１｝を符号量積算メモリ１５３に蓄積することになる。【００８２】
２．４  第二の符号化回路での最終的な符号化における量子化パラメータの算出
第二の符号化回路１０２の量子化パラメータ算出回路１１２での最終的な符号化における最適量子化パラメータＱＰ２（ｎ）の算出方法を、図２１の具体例を用いて説明する。ここで、ビットレート、フレームレート、フレームの複雑度、スライスの符号化タイプなどの情報を用いて割り当てたスライスの目標符号量Ｔ＝３０００００ビットを仮定する。【００８３】
代表量子化パラメータｑｐ１（ｘ）とＱＰ別予測符号量ｒ１（ｘ）から、量子化パラメータＱＰとスライス予測符号量の関係を図２１のように座標軸にプロットすることができる。ｒ１（ｘ）は、各ｘ＝ＱＰに対して２０４個ずつのマクロブロックの予測符号量の総和になっているから、各ＱＰに対するスライス予測符号量は、ｒ１（ｘ）を１０倍することで求められる。また、プロットしたスライス予測符号量を線形補間して全てのＱＰ値（０≦ＱＰ≦５１）に対するスライス予測符号量のグラフを作成することができる。スライスの目標符号量Ｔ＝３０００００と、このグラフとの交点を求めることで、目標符号量を発生するのに最適な量子化パラメータＱＰｏｐｔを求めることができる。ＱＰｏｐｔの算出は、線形補間により、式（２）で求められる。
ＱＰｏｐｔ＝ｑ＋｛ＱＰ１（ｑ＋１）−ＱＰ１（ｑ）｝×｛Ｑ＊ｒ１（ｑ）−Ｔ｝／
｛Ｑ×ｒ１（ｑ）−Ｑ×ｒ１（ｑ＋１）｝            （２）【００８４】
但し、ｑは０≦ｑ≦Ｑ−１の整数であり、Ｑ×ｒ１（ｑ＋１）≦Ｔ≦Ｑ×ｒ１（ｑ）を満たす値とする。ここでは、１スライスを通じて１つの最適量子化パラメータを使用することとしている。また、すべてのｑに対しＴ＞Ｑ×ｒ１（ｑ）となる場合はｑ＝０、すべてのｑに対しＴ＜Ｑ×ｒ１（ｑ）となる場合はｑ＝Ｑ−１とする。【００８５】
スライスの目標符号量Ｔ＝３０００００ビットであるので、式（２）を用いて、ＱＰｏｐｔは１６．８４となる。
ＱＰｏｐｔ＝１６＋（２２−１６）×（３１７８５０−３０００００）／
（３１７８５０−１９０９８０）≒１６．８４【００８６】
量子化パラメータは整数であるので、１７を最適量子化パラメータＱＰｏｐｔとする。また、小数点以下の値によっては小さい側の値１６を選択する場合もある。【００８７】
以上のようにして最適量子化パラメータＱＰ２（ｎ）＝ＱＰｏｐｔを算出できる。また、ＱＰｏｐｔをＮ個のマクロブロックの符号化に対する初期値として用い、それ以降の量子化パラメータは動的に変更することも可能である。【００８８】
以上説明したように、本実施形態による算術符号量概算回路２００を用いて、映像符号化装置における出力ビットストリーム１９２を得ることができる。【００８９】
以上では、表２のｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に含まれるシンタックスエレメントを対象として算術符号量概算回路２００を構成する例を示したが、ｍｂ＿ｐｒｅｄ（）やｍａｃｒｏｂｌｏｃｋ＿ｌａｙｅｒ（）など他の全てのシンタックスエレメントを対象としてもよい。この場合、基本的には図４に示す、対象とするｃｔｘＩｄｘの範囲を拡張すればよい。【００９０】
３．変形例
本実施の形態では、イントラフレームのみを符号化対象として算術符号量概算回路２００を構成する例を説明したが、フレーム間予測を用いるＰフレームやＢフレームを符号化対象とする場合でも、適用可能である。ＰフレームやＢフレームでは動きベクトルに必要となる符号量が多くなるため、表２のｍｂ＿ｐｒｅｄ（）やｓｕｂ＿ｍｂ＿ｐｒｅｄ（）に含まれるシンタックスエレメントを処理対象に加えれば良い。【００９１】
本実施の形態では、図２に示すように４個の符号量概算回路を用いる例を説明したが、符号量概算回路の数は任意にできるのは明らかである。また、ユーナリー・バイナライゼーションを例にとってＢｉｎの逐次処理を行わずに一括処理できる例を説明したが、本実施の形態の思想が、ユーナリー・バイナライゼーション以外の２値化方法にも適用できることは明らかである。整数部のテーブルと小数部のテーブルを分けて説明したが、ｃｏｄＩＲａｎｇｅの値に基づいてテーブルを統合することも可能である。【００９２】
本実施の形態では、Ｎをスライス単位に含まれるマクロブロック数に設定した。しかし、より小さい単位で仮符号化と符号化を行うことで算術符号量概算回路２００から予測符号量Ｒ２（ｎ）を得て、その結果を仮量子化パラメータの選択に反映するような場合は、Ｎの値を、符号化単位に合わせた小さい値に設定してもよい。また、Ｎを固定値として説明したが、Ｎをフレーム単位又はその他の単位で動的に変化させることも可能である。また、スライス予測符号量のグラフを線形補間して求める例を示したが、スプライン補間等、高度な数値補間も可能である。【００９３】
本実施の形態では仮符号化を１回のみ行う例を示したが、リアルタイムの符号化が必要でない場合や、仮符号化をパイプライン化又は並列化することにより一定の遅延で多くの処理が行える場合には、仮符号化を何回行っても良い。【００９４】
本実施の形態を用いて符号化したビットストリームは、テープ、光ディスク、磁気ディスク、半導体メモリといった記録媒体に記録して、再配布可能な形式にすることができる。【００９５】
４．まとめ
以上のように本実施形態によれば、２値シンボル列のコンテキストに応じて設けられた複数の概算処理回路を並列動作させることで、コンテキストに基づいて分けられた複数のグループに対する算術符号化の近似演算を並列に行うことが可能とする。２値シンボル列に対する算術符号化の符号量の概算値を求める。これにより、算術符号化に近い演算を行いながらも正規の算術符号化と比較して処理時間を大幅に削減でき、よって、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号化装置を実現できる。そのような符号化装置を用いて高画質な映像符号化装置を提供することができる。
【産業上の利用可能性】
【００９６】
本発明によれば、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく、高画質な符号化装置を実現できるため、カメラレコーダや録画装置など小さい回路規模でリアルタイム動作が必要な記録装置にも有効である。【００９７】
本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願２００６−３２３３８４号（２００６年１１月３０日提出）に関連し、それらの内容は参照することにより本文中に組み入れられる。
【図１】
2008065814.tif 000005
【図２】
2008065814.tif 000006
【図３】
2008065814.tif 000007
【図４】
2008065814.tif 000008
【図５】
2008065814.tif 000009
【図６】
2008065814.tif 000010
【図７】
2008065814.tif 000011
【図８】
2008065814.tif 000012
【図９】
2008065814.tif 000013
【図１０】
2008065814.tif 000014
【図１１】
2008065814.tif 000015
【図１２】
2008065814.tif 000016
【図１３】
2008065814.tif 000017
【図１４】
2008065814.tif 000018
【図１５】
2008065814.tif 000019
【図１６】
2008065814.tif 000020
【図１７】
2008065814.tif 000021
【図１８】
2008065814.tif 000022
【図１９】
2008065814.tif 000023
【図２０】
2008065814.tif 000024
【図２１】
2008065814.tif 000025
【図２２】
2008065814.tif 000026
【図２３】
2008065814.tif 000027
【図２４】
2008065814.tif 000028
【図２５】
2008065814.tif 000029
【図２６】
2008065814.tif 000030
【手続補正書】
【提出日】平成20年12月26日(2008.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力信号から、複数のコンテキストを持ち、所定の符号化単位の多値データを生成するブロック化回路と、
前記ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、
前記２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、
前記予測符号量に基づいて、前記入力信号に対する算術符号化を行う符号化回路とを備え、
前記算術符号量概算回路は、
所定の符号化単位に含まれる前記２値シンボル列を前記コンテキストに基づいて複数のグループに分ける選択器と、
前記グループ毎に用意された回路であって、前記複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、
全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する、
ことを特徴とする符号化装置。
【請求項２】
前記符号量概算回路は、連続して同一のコンテキストを持つ前記２値シンボルをまとめた単位であるユニットに対して、前記区間の幅を前記ユニットの開始時に所定の初期値に設定することを特徴とする、請求項１に記載の符号化装置。
【請求項３】
前記符号量概算回路は、前記２値シンボル列の全ての符号パターンと全ての出現確率パターンを入力とするテーブルに基づいて整数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項１に記載の符号化装置。
【請求項４】
前記符号量概算回路は、前記ユニットの終了時に前記区間の幅の対数で近似されたテーブルに基づいて前記区間の幅を小数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項２に記載の符号化装置。
【請求項５】
第１の量子化パラメータを生成する量子化パラメータ発生回路と、
前記第１の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して前記多値データを生成する第１の量子化回路と、
第２の量子化パラメータを生成する量子化パラメータ算出回路と、
前記第２の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して第２の多値データを生成する第２の量子化回路と、
前記第２の多値データに対して算術符号化を行う算術符号化回路とをさらに備え、
前記量子化パラメータ算出回路は、前記第１の量子化パラメータと、前記所定の符号化単位の予測符号量と、符号化時に与えるべき所定の符号量とに基づいて、前記第２の量子化パラメータを算出する
ことを特徴とする請求項１記載の符号化装置。
【請求項６】
前記量子化パラメータ発生回路は、Ｑ個（Ｑは２以上の自然数）の代表量子化パラメータを設定しておき、前記Ｑ個の代表量子化パラメータから、前記所定の符号化単位毎に任意の一個の量子化パラメータを選択することにより、Ｎ個（Ｎは２以上の自然数）の前記係数データを量子化するための第１の量子化パラメータを生成する、ことを特徴とする請求項５に記載の符号化装置。
【請求項７】
前記ＮはＮ＝Ｌ×Ｑ（Ｌは自然数）を満たすことを特徴とする、請求項６に記載の符号化装置。
【請求項８】
前記Ｑ個の代表量子化パラメータは、量子化パラメータの最大値及び最小値を必ず含むように構成したことを特徴とする、請求項６に記載の符号化装置。
【請求項９】
前記入力信号は映像信号であり、前記係数データは、前記入力信号を周波数成分に変換した係数であることを特徴とする、請求項５に記載の符号化装置。
【請求項１０】
前記コンテキストは、少なくとも映像信号における輝度の係数データ及び色差の係数データの間で異なる値であり、前記選択器は、少なくとも前記輝度の係数データと前記色差の係数データを異なる前記グループに分けることを特徴とする、請求項９に記載の符号化装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置及び方法に関し、特に、算術符号化を適用した符号化装置及び方法に関する。
【背景技術】
【０００２】
算術符号化は、情報源シンボルの発生確率に応じて情報量を理論限界まで可逆圧縮できる技術である。画像符号化の分野では、ＪＰＥＧ２０００規格（ＩＳＯ／ＩＥＣ１５４４４）、Ｈ．２６４／ＭＰＥＧ４−ＡＶＣ規格（非特許文献１参照。以下「Ｈ．２６４規格」と称す。）等に採用されている。Ｈ．２６４規格においては、コンテキスト適応算術符号化（ＣＡＢＡＣ：Ｃｏｎｔｅｘｔ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）として、シンタックスの確率特性に応じた効率の高い符号化を実現している。
【０００３】
Ｈ．２６４規格におけるコンテキスト適応算術符号化について、図２２を用いて説明する。図２２は、コンテキスト適応算術符号化回路を説明する図である。
【０００４】
図２２においてコンテキスト適応算術符号化回路１４５は、２値化回路１３０、コンテキスト計算回路５２０、及び算術符号化回路１４０から構成される。以下、この回路の動作について説明する。
【０００５】
２値化回路１３０は変換係数データ、フラグ等の符号化情報からなる多値入力データに対して２値化を行う。２値化は、制御情報から、入力データの種類であるシンタックスエレメント（ｓｙｎｔａｘ  ｅｌｅｍｅｎｔ）を判別し、データの確率特性によって、表１に示すユーナリー・バイナライゼーション（ｕｎａｒｙ  ｂｉｎａｒｉｚａｔｉｏｎ）や固定長バイナライゼーション（ｆｉｘｅｄ−ｌｅｎｇｔｈ  ｂｉｎａｒｉｚａｔｉｏｎ）等の方式を用いて行われる。
【０００６】
【表１】
2008065814.tif 000031
【０００７】
表１に示すユーナリー・バイナライゼーションでは、多値入力データ０，１，２，３，４，５・・・を、それぞれ２値シンボル（Ｂｉｎ  ｓｔｒｉｎｇ）０，１０，１１０，１１１０，１１１１０，１１１１１０・・・に変換することで２値化を行っている。２値化された２値シンボル（バイナリ）列は、（２値）算術符号化回路１４０に入力される。ユーナリー・バイナライゼーションは、変換係数のレベルを示すｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１において、１４以下の値を２値化するために用いられる。
【０００８】
コンテキスト計算回路５２０は、シンタックスエレメントを示す制御情報に基づいて、２値シンボル列における現在の１ビットを符号化するために用いるコンテキストインデックス（以下「ｃｔｘＩｄｘ」と称す。）の値をＨ．２６４規格で定められた表２より求める。
【０００９】
【表２】
2008065814.tif 000032
【００１０】
表２より、ｃｔｘＩｄｘは０から４５９までの４６０個の値を取りうる。１個のシンタックスエレメントに対して、スライスタイプによりｃｔｘＩｄｘの選択が異なる。また、例えばスライスタイプＩにおけるｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇのｃｔｘＩｄｘが７０−７２となっているように、ｃｔｘＩｄｘの値が複数個存在するシンタックスエレメントに対するｃｔｘＩｄｘの値を決定するには、オフセット値ｃｔｘＩｄｘＯｆｆｓｅｔ及び増分値ｃｔｘＩｄｘＩｎｃの値に基づき、ｃｔｘＩｄｘ＝ｃｔｘＩｄｘＯｆｆｓｅｔ＋ｃｔｘＩｄｘＩｎｃの演算により求められる。ｃｔｘＩｄｘＯｆｆｓｅｔは、表３（Ｈ．２６４規格の表より一部抜粋）に示すシンタックスエレメント固有の値であり、ｃｔｘＩｄｘＩｎｃはシンタックスエレメント毎に決められた規則（Ｈ．２６４規格参照）によって複数の値から一意に決定される。ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇの場合、ｃｔｘＩｄｘＯｆｆｓｅｔ＝７０であり、ｃｔｘＩｄｘＩｎｃは条件に応じて０から２のいずれかの値が選択される。
【００１１】
コンテキスト計算回路５２０は、スライスの開始時に４６０個のｃｔｘＩｄｘの値毎に図２３に示す計算により発生確率情報を初期化して記憶する。発生確率情報とは、２値シンボルの０又は１のうち発生確率の高い方のシンボルを示すＭＰＳ（ｖａｌＭＰＳ）と、発生確率を示すｐＳｔａｔｅ（ｐＳｔａｔｅＩｄｘ）の組を含む。求められたｃｔｘＩｄｘの値に対応した発生確率情報を「コンテキスト情報」と呼ぶ。
【００１２】
コンテキスト計算回路５２０は、コンテキスト情報を生成して算術符号化回路１４０に入力する。このように、算術符号化を行うシンタックスエレメントによって算術符号化回路１４０に入力されるシンボルの発生確率つまりコンテキスト情報が適応的に切り替わる。これにより、２値シンボルの発生確率が動的に変わる２値シンボル列に対して、最適な算術符号化が可能となる。ここで、一定区間の多値入力データを処理した際に発生した出力符号の総ビット長を「符号量」と呼ぶ。
【００１３】
算術符号化回路１４０の動作概念を、図２４を用いて説明する。ｃｔｘＩｄｘがある値で一定となっており、コンテキスト情報から得た発生確率が、シンボル０は０．７５（２進数で０．１１）、シンボル１は０．２５であり、｛０，０，０，１｝のバイナリ列が入力された場合を考える。この場合、図２４（ａ）に示すように、現在のコンテキスト情報は、発生確率の高い方のシンボルを示すＭＰＳ＝０、発生確率ｐＳｔａｔｅ＝０．１１で表される。実際のｐＳｔａｔｅＩｄｘは、０から６３の範囲を取るインデックス値で表現されるが、ここでは簡単のため２進数の確率値とする。コンテキスト情報は、今回の２値算術符号化により更新され、コンテキスト計算回路５２０に戻される。コンテキスト計算回路５２０では、対応するｃｔｘＩｄｘの発生確率情報を更新する。この値は、次回に同じｃｔｘＩｄｘの符号化が行われる時に再利用される。
【００１４】
図２４（ｂ）において、１個目の入力バイナリ値０が入力されると、［０，１］の区間が確率０．１１で区切られる０側の区間に狭められ、［０，０．１１］になる。２個目の入力０が入力されると、［０，０．１１］の区間が［０，０．１００１］に狭められる。ここで、０．１００１＝０．１１×０．１１である。同様にして、３個目の入力０により区間が［０，０．０１１０１１］になる。４個目の入力１は、１側の区間に狭められるため、最終的な区間が［０．０１０１０００１，０．０１１０１１］に狭められる。ここで、この最終的な区間に含まれる値のうち、最短の語長を持つものが符号語となる。０．０１１は、この区間に含まれるので、小数点以下の０１１が出力バイナリ列となり、４ビットの入力値が３ビットに圧縮されたことになる。
【００１５】
算術符号化回路１４０の実際の動作では、前記区間を有限語長で扱うため、区間の左端の値をｃｏｄＩＬｏｗ（０．０１０１０００１等）、区間の幅をｃｏｄＩＲａｎｇｅ（０．０００１１０１１等）として、ｃｏｄＩＬｏｗ及びｃｏｄＩＲａｎｇｅの値に応じて出力ビットを確定し、ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗを１ビット左シフトして区間の分解能を上げるリノーマライゼーションと呼ぶ処理が行われる。実際の１ビットの算術符号化処理は図２５及び図２６のフローチャートに従って行われる。
【００１６】
図２５は２値バイナリ（以下「Ｂｉｎ」と称す。）１個の入力に対する算術符号化処理（８２０）であり、変数の初期化（８２１）、ＢｉｎがＭＰＳであるかの判定（８２２）、ＭＰＳでない場合にはｃｏｄＩＬｏｗ及びｃｏｄＩＲａｎｇｅの更新（８２３）、ｐＳｔａｔｅＩｄｘの値の判定（８２４）、ＭＰＳの反転（８２５）、発生確率ｐＳｔａｔｅＩｄｘの更新（８２６、８２７）、リノーマライゼーション（８３０）から成る。図２５はリノーマライゼーション８３０の処理を示している。
【００１７】
ところで、図２５及び図２６におけるｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗは内部状態変数であり、スライス先頭でのみ初期化される。図２４に示した４ビットの入力値を符号化した直後にｃｔｘＩｄｘが異なる入力値を符号化する場合でも、コンテキスト情報のみが変更され、ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗは４ビット符号化した直後の値が用いられる。変換係数データを算術符号化する際には、輝度６４係数のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、輝度６４係数のｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１、色差ＤＣ成分のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇ、色差ＡＣ成分のｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１といったｃｔｘＩｄｘの異なる多値入力データを連続して符号化するが、内部状態を初期化するのはスライス先頭のみであるため、これらを含む全てのシンタックスエレメントはスライス内では逐次符号化するしかなく、並列に処理できないことになる。
【００１８】
一方、動画像符号化においては、様々な特性を持つ入力画像を所定のビットレートに圧縮するため、各マクロブロックを符号化する際の量子化パラメータを適切に制御して、符号量制御を行う必要がある。符号量制御の精度を高めるためには、スライス、フレーム、ＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）といった単位でパラメータを変更して繰り返し符号化を行うことが一般的である。繰り返し符号化には、主に符号量を予測するための仮符号化と、最終的な符号化の２種類の符号化が含まれる。
【００１９】
従来の仮符号化の方式は、最終的な符号化と同様、実際にエントロピー符号化を行うものと、エントロピー符号化を行わずに代替の演算を行うものとに大別される。従来の符号化装置において前者の方式は、エントロピー符号化に可変長符号化（Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）を用いる場合が一般的であった。しかし、近年、エントロピー符号化として算術符号化を用いる方式が提案されている。前述のように算術符号化はビット単位の符号化処理でありスライス内で逐次符号化するしかないため、算術符号化を仮符号化に適用すると、膨大な処理量が必要となってしまう。故にリアルタイム処理の必要とされる回路において、算術符号化を仮符号化に適用することは非常に困難である。
【００２０】
そのため、最終的な符号化において算術符号化を用いる場合の仮符号化の方式としては、後者の方式（エントロピー符号化の代替の演算を行う）が提案されている。例えば特許文献１は、算術符号化を行わず、入力２値シンボル量を出力符号量の予測値とすることで、最適な符号化モードを選択する際の処理量を削減する。また特許文献２のように関数を用いて予測する方式も提案されている。
【００２１】
【特許文献１】特開２００５−３１８２９６号公報
【特許文献２】特開２００５−２０３９０５号公報
【非特許文献１】ＩＳＯ／ＩＥＣ１４４９６−１０  Ａｄｖａｎｃｅｄ  ｖｉｄｅｏ  ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、算術符号化を用いた符号化装置において、算術符号化を行わずに仮符号化を行う従来の方式では、符号量の予測を精度よく行うことができないという課題があった。
【００２３】
すなわち、前述の特許文献１で示された方式では、複数の符号化モード間の相対比較としてはある程度機能するが、算術符号化を行わないため符号量の予測値を適切に算出することはできない。また、特許文献２で示された方式では、算術符号化の演算とは全く異なるため、正確な符号量の予測が行えない。
【００２４】
本発明はこのような課題に鑑み、算術符号化を用いた符号化装置において、算術符号化の近似演算を行いながらも、回路での処理時間を大幅に削減した精度の高い符号量予測方式を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明は、仮符号化において、２値シンボル列をコンテキストに基づき複数のグループに分け、各グループに分類された２値シンボル列に対して並列に算術符号量概算処理を行うことで予測符号量を求める。
【００２６】
より具体的には、本発明に係る符号化装置は、入力信号から、複数のコンテキストを持ち、所定の符号化単位（例えば、マクロブロック）の多値データを生成するブロック化回路と、ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、予測符号量に基づいて、入力信号に対する算術符号化を行う符号化回路とを備える。算術符号量概算回路は、所定の符号化単位に含まれる前記２値シンボル列をコンテキストに基づいて複数のグループに分ける選択器と、グループ毎に用意された回路であって、複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する。
【発明の効果】
【００２７】
本発明によれば、算術符号化を用いた符号化装置において、コンテキストに基づいて分けられた複数のグループに対する算術符号化の近似演算を並列に行うことが可能となり、算術符号化に近い演算を行いながらも算術符号化と比較して処理時間を大幅に削減できる。これにより動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号化装置を実現できる。また、高画質な映像符号化装置を提供することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００２９】
１．映像符号化装置の構成
本実施の形態では、フレーム内で復号可能なイントラフレームを符号化対象として、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号量制御を行う映像符号化装置について説明する。
【００３０】
図１に本発明の実施の形態による映像符号化装置の構成例を示す。図１において、映像符号化装置１００は、仮符号化を行う第一の符号化回路１０１、最終的な符号化を行う第二の符号化回路１０２、フレームメモリ１５１、予測モードメモリ１５２、及び符号量積算メモリ１５３から構成される。
【００３１】
第一の符号化回路１０１は、入力信号をブロック化するための第一のブロック化回路１６１、予測モード検出回路１７３、第一のイントラ予測生成回路１７１、直交変換回路としての第一のＤＣＴ回路１８１、量子化パラメータ発生回路１１１、第一の量子化回路１２１、第一の２値化回路１３１、及び算術符号量概算回路２００から構成される。
【００３２】
第二の符号化回路１０２は、第二のブロック化回路１６２、第二のイントラ予測生成回路１７２、第二のＤＣＴ回路１８２、量子化パラメータ算出回路１１２、第二の量子化回路１２２、第二の２値化回路１３２、算術符号化回路１４２、逆量子化回路１２４、及び逆ＤＣＴ回路１８４から構成される。
【００３３】
以上のように構成された映像符号化装置について、以下その動作を説明する。
【００３４】
２．映像符号化装置の動作
映像符号化装置は映像信号１９１をフレーム単位で入力し、処理する。以下では、説明の便宜上、１フレームの映像信号に対する処理の流れについて説明する。
【００３５】
映像符号化装置１００に１フレームのディジタル映像信号１９１が入力されると、第一の符号化回路１０１は、入力した１フレームのディジタル映像信号に対して仮符号化を行う。この仮符号化において、予測モード検出回路１７３により検出された予測モード値が予測モードメモリ１５２に、算術符号量概算回路２００により出力された符号量が符号量積算メモリ１５３にそれぞれ格納される。
【００３６】
映像符号化装置１００に入力されたディジタル映像信号１９１はフレームメモリ１５１に格納されて１フレーム以内の一定時間だけ遅延されて、第二の符号化回路１０２に出力される。第二の符号化回路１０２は１フレームのディジタル映像信号を符号化して得られたストリーム１９２を出力する。第二の符号化回路１０２での符号化においては、予測モードメモリ１５２に格納された予測モード値、及び符号量積算メモリ１５３に格納された符号量を入力して、同じフレームに対する符号化が行われる。以下、第一及び第二の符号化回路１０１、１０２それぞれの詳細な処理について説明する。
【００３７】
２．１  第一の符号化回路による仮符号化
第一の符号化回路１０１による仮符号化の処理を説明する。
ブロック化回路１６１は、ディジタル映像信号１９１を受け、１フレーム分の映像信号を１６×１６画素からなる複数のマクロブロックにブロック化する。マクロブロックは、後述するＤＣＴやイントラ予測の単位となるブロックを複数個含む。
【００３８】
イントラ予測生成回路１７１は、１６×１６画素のマクロブロック毎に、入力されたディジタル映像信号の画素と、入力されたディジタル映像信号１９１の画像に隣接する画素とから、そのマクロブロックの各画素の値を種々の予測モードで予測（イントラ予測）する。なお、イントラ予測は、マクロブロック単位の代わりに、８×８画素ブロックや４×４画素ブロックの単位でも行われる。
【００３９】
予測モード検出回路１７３は入力したディジタル映像信号１９１から予測モード値の検出を行う。予測モード値には、フィールドマクロブロック復号フラグ（ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ）、輝度４×４イントラ予測モード（Ｉｎｔｒａ４ｘ４ＰｒｅｄＭｏｄｅ）、輝度８×８イントラ予測モード（Ｉｎｔｒａ８ｘ８ＰｒｅｄＭｏｄｅ）、色差イントラ予測モード（ｉｎｔｒａ＿ｃｈｒｏｍａ＿ｐｒｅｄ＿ｍｏｄｅ）が含まれる。検出された予測モード値は予測モードメモリ１５２に蓄積される。
【００４０】
入力されたディジタル映像信号１９１において符号化対象のマクロブロックの各画素値と、イントラ予測生成回路１７１により作成された、符号化対象のマクロブロックの画素予測値との差分値が計算されて、１６×１６画素の差分値のブロックが生成され、ＤＣＴ回路１８１に出力される。このイントラ予測は、マクロブロック単位の代わりに、８×８画素ブロックや４×４画素ブロックの単位でも行われる。
【００４１】
ＤＣＴ回路１８１は、差分値のブロックに対してＤＣＴ（離散コサイン変換）等の直交変換処理を行う。この処理は、通常４×４画素や８×８画素のブロック単位に行われ、周波数成分の係数データが出力される。係数データは量子化回路１２１に入力され、量子化パラメータ発生回路１１１により与えられた量子化パラメータにしたがい量子化される。量子化パラメータは、量子化パラメータ発生回路１１１により、複数のパラメータ候補の中から選択して決定される。
【００４２】
量子化回路１２１により量子化された係数データは２値化回路１３１にて２値化される。算術符号量概算回路２００は、２値化された係数データから予測符号量を求め、出力する。算術符号量概算回路２００の出力する予測符号量は、符号量積算メモリ１５３に記録される。
【００４３】
２．１．１  算術符号量概算回路の動作
算術符号量概算回路２００は、算術符号化に近い演算を行うことで、マクロブロック単位毎に予測符号量すなわち算術符号化の符号量の概算値を求める。図２に算術符号量概算回路２００の構成を示す。算術符号量概算回路２００は、コンテキスト計算回路５２１、選択器２３０、第一ないし第四の符号量概算回路２１１〜２１４、及び加算器２３１により構成される。第一ないし第四の符号量概算回路２１１〜２１４は、スライスに対するコンテキストインデックス（ｃｔｘｉｄｘ）の値に応じて選択される。
【００４４】
以上のように構成される算術符号量概算回路２００について以下その動作を説明する。
【００４５】
多値入力データ５０１は、２値化回路１３０において２値シンボル（バイナリ）列５０３に変換される。２値化回路１３１は、図２２におけるコンテキスト適応算術符号化回路１４５に含まれる２値化回路１３０と基本的には同じ回路であるが、２値シンボル列５０３は必ずしもシリアル出力でなくとも良く、パラレル出力としても良い。コンテキスト計算回路５２１は、多値入力データ５０１と同時に入力される制御情報５０２に基づいて、現在のコンテキストインデックス（ｃｔｘＩｄｘ）５０５を選択器２３０に出力する。選択器２３０は、コンテキストインデックス（ｃｔｘＩｄｘ）５０５に基づいて、現在の２値シンボル５０３を、第一ないし第四の符号量概算回路２１１〜２１４のいずれかに割り振る。第一及び第二の符号量概算回路２１１、２１２は輝度に関するデータを処理し、第三及び第四の符号量概算回路２１３、２１４は色差に関するデータを処理するように２値シンボルが割り振られる。
【００４６】
算術符号量概算回路２００では、第一ないし第四の符号量概算回路２１１〜２１４において同時に符号量概算処理を実施するため、図３に示すように並列処理が可能となり、符号量概算のための処理時間を短縮できる。
【００４７】
コンテキストインデックス（ｃｔｘＩｄｘ）に基づく、２値シンボル５０３の、符号量概算回路２１１〜２１４への割り振り方について図４を参照してより具体的に説明する。
【００４８】
図４は、表１のｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に属するシンタックスエレメントに関して、ｃｔｘＩｄｘと、割り振られる第一ないし第四の符号量概算回路２１１〜２１４との対応を説明した図である。同図より、例えばｃｔｘＩｄｘ＝４０２であれば、輝度のｓｉｇｎｉｆｉｃａｎｔ＿ｃｏｅｆｆ＿ｆｌａｇに属するので、第一の符号量概算回路２１１が選択される。なお、ｃｏｅｆｆ＿ｓｉｇｎ＿ｆｌａｇは、算術符号化にてバイパスされるため表１には示されていないが、符号量概算回路ではバイパスとして扱い符号量の概算に用いられる。
【００４９】
以上のようにして各符号量概算回路２１１〜２１４により算出された符号量は、加算器２３１にて加算され、一定区間毎に予測符号量２９０として出力される。
【００５０】
各符号量概算回路２１１〜２１４で実行される処理は、図５、図１１及び図１５のそれぞれのフローチャートで示す３つの処理がある。図１１に示す処理は、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１のように、２値化処理においてユーナリー・バイナライゼーションを用いるシンタックスエレメントに対して適用される。図５に示す処理は、図１１に示す処理の適用対象でない通常のシンタックスエレメントに対して適用する逐次処理を示す。図１５に示す処理は、前述したバイパスとして扱われた２値シンボル（以下「Ｂｉｎ」と称す。）を適用対象とする処理である。図５、図１１及び図１５のそれぞれの処理はユニット単位で実行される。ユニットとは、２値シンボル（Ｂｉｎ）の集合であり、通常ｃｔｘＩｄｘの値が連続して同じとなるＢｉｎの集合に設定される。
【００５１】
（ａ）逐次処理による算術符号量概算処理
図５〜図９を参照し、逐次処理による符号量概算処理を説明する。図５は、逐次処理による１ユニットの符号量概算処理のフローチャートを示している。本符号量概算処理では、最初に（ユニットの開始時に）ユニット初期化処理（Ｓ１１）を行い、次に１Ｂｉｎの符号量概算処理（Ｓ１２）をユニットが終了するまで繰返し（Ｓ１３）、最後に（ユニットの終了時に）１ユニットの微小符号量概算処理（Ｓ１４）を行って終了する。
【００５２】
図６を参照し、上記ステップＳ１１のユニット初期化処理の詳細を説明する。ユニット初期化処理では、区間の幅（ｃｏｄＩＲａｎｇｅ）、ユニット符号量の整数部分（又は整数符号量）（ｃｏｄｅＬｅｎｇｔｈＩｎｔ）、ユニット符号量の小数部分（又は小数符号量）（ｃｏｄｅＬｅｎｇｔｈＦｒａｃ）をそれぞれ初期化する（Ｓ２１）。ユニット符号量は、このように整数部分と小数部分に分かれており、小数の精度で符号量概算が行われる。ｃｏｄｅＬｅｎｇｔｈＦｒａｃは、小数点以下を９ビット精度で表しており、０から５１１までの値を取り得る。
【００５３】
図７を参照し、上記ステップＳ１２の１Ｂｉｎの符号量概算処理の詳細を説明する。１Ｂｉｎの符号量概算処理では、最初に変数の初期化（Ｓ３１）を行う。次にＢｉｎがＭＰＳであるかの判定を行う（Ｓ３２）。ＭＰＳでない場合にはｃｏｄＩＲａｎｇｅを更新し（Ｓ３３）、ｐＳｔａｔｅＩｄｘの値を判定する（Ｓ３４）。ｐＳｔａｔｅＩｄｘの値が０の場合、ＭＰＳの反転を行い（Ｓ３５）、発生確率ｐＳｔａｔｅＩｄｘを更新する（Ｓ３６）。ステップＳ３２にてＢｉｎがＭＰＳである場合には、ｐＳｔａｔｅＩｄｘの更新のみを行う（Ｓ３７）。最後に１Ｂｉｎの符号量加算処理（Ｓ３８）を行って処理を終了する。図７のフローチャートは、図２５に示した算術符号化処理のフローチャートに準じており、ステップＳ３３でｃｏｄＩＬｏｗを計算しない点と、図２５のリノーマライゼーションのステップ（Ｓ８３０）の代わりに１Ｂｉｎの符号量加算処理（Ｓ３８）を実施する点とが異なる。
【００５４】
図８を参照し、上記ステップＳ３８の１Ｂｉｎの符号量加算処理の詳細を説明する。１Ｂｉｎの符号量加算処理では、ｃｏｄＩＲａｎｇｅが０ｘ１００以上の値になるまで、ｃｏｄＩＲａｎｇｅを１ビット左シフトしてユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを１加算する処理が繰り返される（Ｓ４１、Ｓ４２）。図８のフローチャートは、図２６に示したリノーマライゼーションのフローチャートにおいて、ｃｏｄＩＲａｎｇｅを操作する部分のみを抽出し、ｃｏｄＩＲａｎｇｅの左シフト回数を符号量に加算する処理を加えたものに等しい。
【００５５】
図９を参照し、上記ステップＳ１４の１ユニットの微小符号量概算処理の動作を説明する。図９に示す１ユニットの微小符号量概算処理では、ユニット符号量の小数部分ｃｏｄｅＬｅｎｇｔｈＦｒａｃを、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＦｒａｃ（）によって求める（Ｓ５１）。図１０に、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＦｒａｃ（）を示す。小数符号量テーブルｍＴｂｌは２５６個の定数から構成される（図１０（ａ）参照）。小数符号量テーブルｍＴｂｌは、関数ｉｎｉｔＴａｂｌｅＣｄＦｒａｃ（）により初期化される（図１０（ｂ）参照）。小数符号量テーブルｍＴｂｌは、ｍＴｂｌ［０］＝５１１、ｍＴｂｌ［２５５］＝１となる対数のテーブルである。ｃｏｄＩＲａｎｇｅ＝２５６の時にｍＴｂｌ［０］＝５１１となり、ｃｏｄＩＲａｎｇｅ＝５１１の時にｍＴｂｌ［２５５］＝１となる。概念的にはｃｏｄＩＲａｎｇｅが５１２に近いほどＭＰＳが相対的に多く出現していたので、小数符号量が短くなる。また、ｃｏｄＩＲａｎｇｅが２５６に近いほどＬＰＳが相対的に多く出現していたので、小数符号量が長くなる。この関係がｉｎｉｔＴａｂｌｅＣｄＦｒａｃ（）内の式に示す対数のカーブにより高い精度で近似される。
【００５６】
（ｂ）ユーナリー・バイナライゼーションを用いるシンタックスエレメントに対する符号量概算処理
図１１を参照し、ユーナリー・バイナライゼーションを用いるシンタックスエレメントに対する符号量概算処理を説明する。
【００５７】
図１１に示す、ユーナリー・バイナライゼーションの符号量概算処理では、最初にユニット初期化処理（Ｓ６１）を行い、次にユニット内の全Ｂｉｎに対する符号量概算処理（Ｓ６２）を行って、最後に１ユニットの微小符号量概算処理（Ｓ６３）を行って終了する。図１１に示す１ユニットの符号量概算処理は、図５で示した逐次処理の１ユニットの符号量概算処理と比較し１て、１Ｂｉｎの符号量概算処理（Ｓ１２）のステップの繰り返し処理を、ユニット内の全Ｂｉｎに対する符号量概算処理（Ｓ６２）で置換えたものである。
【００５８】
図１１に示すユーナリー・バイナライゼーションの符号量概算処理を適用するシンタックスエレメントを、ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１を例として用いて説明する。ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１は、表１に示すＢｉｎの位置ｂｉｎＩｄｘによりｃｔｘＩｄｘが異なる。このため、ｂｉｎＩｄｘ＝０を除いて１≦ｂｉｎＩｄｘ≦１３の範囲のＢｉｎを１個のユニットとする。つまり、表１の「Ｖａｌｕｅ  ｏｆ  ｓｙｎｔａｘ  ｅｌｅｍｅｎｔ」の欄が１以上１４以下のものが対象となる。最大値が１４となるのは、最大値ｂｉｎＩｄｘ＝１３が符号「１」で終わるトランケーテッド（Ｔｒｕｎｃａｔｅｄ）形式になっているためである。ｂｉｎＩｄｘ＝１以降の符号「１」の数を変数ｒｕｎ＿ｌｅｎｇｔｈで表すと、ｒｕｎ＿ｌｅｎｇｔｈは０以上１３以下の値を取る。なお、ｂｉｎＩｄｘ＝１４以上はバイパスとなるから、この例ではｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｍｉｎｕｓ１の値が１以上となる全ての係数に対して、バイパス部分を除いてユーナリー・バイナライゼーションの符号量概算処理が適用される。
【００５９】
図１２を参照し、上記ステップＳ６２のユニット内の全Ｂｉｎに対する符号量概算処理の詳細を説明する。まず全Ｂｉｎに対する符号量の加算を行う（Ｓ７１）。この処理は、ユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを、テーブル参照関数ｒｅａｄＴａｂｌｅＣｄＩｎｔ（）を用いて加算し、ｃｏｄＩＲａｎｇｅをテーブル参照関数ｒｅａｄＴａｂｌｅＲｎｇ（）を用いて更新することで行われる。次に全Ｂｉｎに対するコンテキスト情報の更新を行う（Ｓ７２）。この処理は、ｖａｌＭＰＳをテーブル参照関数ｒｅａｄＴａｂｌｅＭｐｓ（）を用いて更新し、ｐＳｔａｔｅＩｄｘをテーブル参照関数ｒｅａｄＴａｂｌｅＳｔａｔｅ（）を用いて更新することで行われる。
【００６０】
ここで、図１３を参照し、各テーブル参照関数を説明する。図１３に示すように、ビットの最大値が１３であるため、ＭＡＸ＿ＲＵＮ＝１３と定義している。テーブル参照関数：ｒｅａｄＴａｂｌｅＣｄＩｎｔ（）、ｒｅａｄＴａｂｌｅＲｎｇ（）、ｒｅａｄＴａｂｌｅＭｐｓ（）、ｒｅａｄＴａｂｌｅＳｔａｔｅ（）は、それぞれ整数符号量テーブル（ｍＣｄｌＩｎｔＴｂｌ）、レンジテーブル（ｍＲｎｇＴｂｌ）、ＭＰＳテーブル（ｍＭｐｓＴｂｌ）、ｐＳｔａｔｅテーブル（ｍＳｔａｔｅＴｂｌ）を参照して値を返す。これらのテーブルは、２値シンボル列の全ての符号パターンと全ての出現確率パターンを入力とする。
【００６１】
図１４を参照し、各テーブルの初期化処理の詳細を説明する。初期化関数ｉｎｉｔＴａｂｌｅＣｄＩｎｔ（）を、全てのｒｕｎ＿ｌｅｎｇｔｈ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘに対して実行することで、整数符号量テーブル（ｍＣｄｌＩｎｔＴｂｌ）、レンジテーブル（ｍＲｎｇＴｂｌ）、ＭＰＳテーブル（ｍＭｐｓＴｂｌ）、ｐＳｔａｔｅテーブル（ｍＳｔａｔｅＴｂｌ）が全て初期化される。この初期化処理は、図５に示す逐次処理による１ユニットの符号量概算処理の演算に従っている。図１４のＰｒｏｃ１Ｂｉｎ（ｂｉｎＶａｌ，＆ｖａｌＭＰＳ，＆ｐＳｔａｔｅＩｄｘ）は、図５の１Ｂｉｎの符号量概算処理（Ｓ１２）に対応しており、ｂｉｎＶａｌ、ｖａｌＭＰＳ、ｐＳｔａｔｅＩｄｘ、ｃｏｄＩＲａｎｇｅに対して図７の処理と等価な処理が行われる。但し、図７の１Ｂｉｎの符号量加算処理（Ｓ３８）は、図１４内の２箇所のｗｈｉｌｅ処理にて行われる。以上により、全てのＢｉｎに対する符号量の整数部分が一括して計算可能な各テーブルが初期化される。
【００６２】
（ｃ）バイパスとして扱われたＢｉｎに対する算術符号量概算処理
図１５を参照し、バイパスとして扱われたＢｉｎに対する１ユニットの符号量概算処理の詳細を説明する。本符号量概算処理は、ユニット初期化処理（Ｓ８１）を行った後、ユニットが終了するまでユニット符号量の整数部分ｃｏｄｅＬｅｎｇｔｈＩｎｔを１ずつ加算する（Ｓ８２、Ｓ８３）。つまり、本符号量概算処理は、１Ｂｉｎの符号量を単に１ビットの符号量としてカウントする。
【００６３】
図２に示す加算器２３１は、以上の図５、図１１、図１５に示す３つの符号量概算処理により得られたユニット符号量の概算値から予測符号量を以下のように計算する。
【００６４】
マクロブロックに含まれる全てのユニットに対して、全ての符号量概算回路２１１〜２１４から出力されたユニット符号量の整数部分（ｃｏｄｅＬｅｎｇｔｈＩｎｔ）及びユニット符号量の小数部分（ｃｏｄｅＬｅｎｇｔｈＦｒａｃ）をそれぞれ加算して、マクロブロックの予測符号量の整数部分（ＭＢｃｏｄｅＬｅｎｇｔｈＩｎｔ）、マクロブロックの予測符号量の小数部分（ＭＢｃｏｄｅＬｅｎｇｔｈＦｒａｃ）を計算する。最終的なマクロブロックの予測符号量ＭＢｃｏｄｅＬｅｎｇｔｈは、次式で求められる。
ＭＢｃｏｄｅＬｅｎｇｔｈ＝ＭＢｃｏｄｅＬｅｎｇｔｈＩｎｔ＋
（ＭＢｃｏｄｅＬｅｎｇｔｈＦｒａｃ＞＞９）    （１）
【００６５】
次に、以上で説明した１ユニットの符号量概算処理（図５、図１１、図１５参照）が、ユニット毎に並列に処理可能である理由を説明する。
【００６６】
前述したようにコンテキスト適応型算術符号化を並列処理するための障害であった内部状態ｃｏｄＩＲａｎｇｅ及びｃｏｄＩＬｏｗの２つに関して、ｃｏｄＩＲａｎｇｅは図６に示すユニット初期化処理にてユニット毎に固定値に初期化されており、ｃｏｄＩＬｏｗは図５から図１５に示した全体の処理の中に存在しない。よって各ユニットの符号量概算処理は、図３に示すように回路上で時間的に並列に実施することが可能となる。
【００６７】
また図１１を参照して説明したように、１ユニットの符号量概算処理（ユーナリー・バイナライゼーション）は複数のＢｉｎを一括に処理可能である。これは一定範囲のユーナリー・バイナライゼーションの符号群と、全てのｖａｌＭＰＳと、全てのｐＳｔａｔｅＩｄｘとの組合せに基づくテーブルを用意することで可能となる。
【００６８】
算術符号量概算回路２００が高い精度でマクロブロックの符号量を近似するための条件について説明する。
【００６９】
その条件とは、図５、図１１、図１５に示す１ユニットの符号量概算処理を図２に示した第一から第四の符号量概算回路２１１〜２１４に適用した上で、図４に示したように符号量概算回路全体（＃１〜＃４の合計）で網羅するｃｔｘＩｄｘによる発生符号量のマクロブロック全体の発生符号量に占める割合が、１００％に近いことである。図４の例では、ｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に属するシンタックスエレメントの発生符号量がマクロブロック全体の発生符号量の１００％に近いという前提で、符号量概算処理に用いるシンタックスエレメントを選定している。よって、これら以外のシンタックスエレメントの占める発生符号量が無視できない場合には、そのシンタックスエレメントも符号量概算処理の対象とする必要がある。
【００７０】
図１６は、本実施形態による算術符号量概算回路２００の予測符号量２９０の予測精度を示した図である。図１６は、マクロブロック単位の予測符号量と算術符号化による発生符号量との誤差の割合を、１フレーム（８１６０マクロブロック）に渡りプロットしたものである。統計的性質の異なる４種類のフレーム（Ｓｅｑｕｅｎｃｅ＃１〜＃４）に対して、平均０．４７％、標準偏差１．５５％の誤差であり、高い精度が得られている。
【００７１】
２．２  第二の符号化回路による最終的な符号化
図１における第二の符号化回路１０２の符号化の動作を説明する。第一の符号化回路１０１により１フレームの仮符号化が終了すると、フレームメモリ１５１に蓄積された１フレームの映像信号が、ブロック化回路１６２に入力される。符号化対象のマクロブロックの各画素値は、予測モードメモリ１５２から読み出した予測モード値に基づいてイントラ予測生成回路１７２が生成した画素予測値との差分値が計算される。差分値のブロックに対してＤＣＴ回路１８２にてＤＣＴが行われ、周波数成分の係数データが出力される。係数データは量子化回路１２２に入力されて量子化される。この際の量子化パラメータは、量子化パラメータ算出回路１１２により算出される。量子化された係数データは２値化回路１３２にて２値シンボルに変換され、算術符号化回路１４２にて符号化されてビットストリーム１９２として出力される。
【００７２】
２．３  第一の符号化回路１０１での仮符号化における量子化パラメータの設定
第一の符号化回路１０１における仮符号化の具体例を、図１７（ａ）に示すような１９２０×１０８０画素の１フレームの符号化においてスライス単位に最適な量子化パラメータを算出する例を用いて説明する。
【００７３】
図１７（ｂ）に示すように１９２０×１０８０画素のフレームは、１６×１６画素のマクロブロックが８１６０（＝１２０×６８）個で構成される。フレームを分割するスライスは、任意の連続したマクロブロックの集合として定義できるが、一例として１個のスライスが２０４０個のマクロブロックを含み、１フレームが４個のスライスで構成される場合を考える。この場合、Ｎ＝Ｎｍｂ＝２０４０（＝８１６０／４）と設定できる。
【００７４】
仮符号化の開始前に、第一の符号化回路１０１の量子化回路１２１で使用される仮量子化パラメータＱＰ１（ｎ）を決定する。仮量子化パラメータは、マクロブロック毎に複数の候補の中から１つを選択して設定される。すなわち１個のマクロブロックに対する仮量子化パラメータＱＰ１（ｎ）は、任意の異なるＱ種類の代表量子化パラメータｑｐ１（ｘ）（ｘ＝０，１，…，Ｑ−１）から１個を選んで、当該マクロブロックの仮量子化パラメータＱＰ１（ｎ）に設定することで決定できる。
【００７５】
例えば、「０」と「２０」の２種類の代表量子化パラメータｑｐ１（ｘ）＝｛０，２０｝を与える場合を考える。ここで、Ｆ（ｘ）＝｛Ａ０，Ａ１，…，ＡＱ−１｝（Ａｎは整数）の表記は、Ｆ（０）＝Ａ０、Ｆ（１）＝Ａ１、…Ｆ（Ｑ−１）＝ＡＱ−１を意味するものとする。各マクロブロックの仮量子化パラメータは、各仮量子化パラメータの出現頻度が等しくなるように、２種類の代表量子化パラメータの中から選択する。この例では、半数のマクロブロックに量子化パラメータ「０」を、残り半数のマクロブロックに量子化パラメータ「２０」を与える。また、仮量子化パラメータがスライス内で偏るのを防ぐため、スライス内に交互又はランダムに仮量子化パラメータを配置する。例えば、プログレッシブ走査においては、図１８（ａ）に示すように通常のラスタスキャン順に交互に仮量子化パラメータを与え、インターレース走査では図１８（ｂ）に示すようにマクロブロックの対毎に交互に仮量子化パラメータを与えることができる。
【００７６】
仮符号化における代表量子化パラメータｑｐ１（ｘ）の種類Ｑと、その値ｑｐ１（ｘ）（ｘ＝０，１，…，Ｑ−１）の決定方法について、図１９を用いて説明する。
【００７７】
量子化回路１２１で用いられる代表量子化パラメータの種類Ｑは、２０４０（１スライスに含まれるマクロブロック数）の約数とすることができる、又はインターレース走査用の符号化を行うため、マクロブロックを対にする場合は、その１／２である１０２０の約数とすることができる。このようにして代表量子化パラメータの種類Ｑを設定すれば、スライス内で任意の代表量子化パラメータが出現する回数を一定にできる。例えばプログレッシブの場合、Ｑとしては２０４０の約数である５、１０、２０が選択できる。それぞれのＱの場合の、１個のスライス内における各代表量子化パラメータの出現回数は４０８回、２０４回、１０２回となる。
【００７８】
代表量子化パラメータｑｐ１（ｘ）としては、エンコーダで選択できる量子化パラメータの範囲から異なる値をＱ個選択する。この場合、最適な符号化のための符号量予測が行い易くなるように、それらの値を適度に分散させるのが好ましい。例えば、１スライスに含まれるマクロブロック数が２０４０で、エンコーダで選択できる量子化パラメータＱＰが０から５１の範囲である場合、代表量子化パラメータｑｐ1として、図１９（ａ）に示すように、Ｑ＝１０、ｑｐ１（ｘ）＝｛０，４，８，１２，１６，２２，２８，３４，４２，５１｝を選択することができる。このとき、プログレッシブ方式の場合は、図１９（ｂ）に示すように仮量子化パラメータが適用され、インターレース方式の場合は、図１９（ｃ）に示すように仮量子化パラメータが割当られる。また、代表量子化パラメータには、量子化パラメータの最大値及び最小値が含まれるようにするのが好ましい。
【００７９】
第一の符号化回路１０１における仮符号化の結果として符号量積算メモリ１５３に蓄積されるデータについて説明する。仮符号化では、Ｎ＝２０４０個のマクロブロックを含むスライス１個に対し、同じ代表量子化パラメータｑｐ１（ｘ）を使用したマクロブロック毎に、算術符号量概算回路２００から出力された予測符号量Ｒ１（ｎ）の総和を計算する。その総和をＱＰ別予測符号量ｒ１（ｘ）とし、符号量積算メモリ１５３に蓄積する。図２０の例では、ｑｐ１（ｘ）＝｛０，４，８，１２，１６，２２，２８，３４，４２，５１｝（ｘ＝０，１，…，９）の各々に対し、代表量子化パラメータ毎に予測符号量Ｒ１（ｎ）の総和を取ったＱＰ別予測符号量ｒ１（ｘ）＝｛９５６２６，８２２５２，６４４５１，４８６４８，３１７８５，１９０９８，１０３７３，５４３９，２２５９，１２６１｝を符号量積算メモリ１５３に蓄積することになる。
【００８０】
２．４  第二の符号化回路での最終的な符号化における量子化パラメータの算出
第二の符号化回路１０２の量子化パラメータ算出回路１１２での最終的な符号化における最適量子化パラメータＱＰ２（ｎ）の算出方法を、図２１の具体例を用いて説明する。ここで、ビットレート、フレームレート、フレームの複雑度、スライスの符号化タイプなどの情報を用いて割り当てたスライスの目標符号量Ｔ＝３０００００ビットを仮定する。
【００８１】
代表量子化パラメータｑｐ１（ｘ）とＱＰ別予測符号量ｒ１（ｘ）から、量子化パラメータＱＰとスライス予測符号量の関係を図２１のように座標軸にプロットすることができる。ｒ１（ｘ）は、各ｘ＝ＱＰに対して２０４個ずつのマクロブロックの予測符号量の総和になっているから、各ＱＰに対するスライス予測符号量は、ｒ１（ｘ）を１０倍することで求められる。また、プロットしたスライス予測符号量を線形補間して全てのＱＰ値（０≦ＱＰ≦５１）に対するスライス予測符号量のグラフを作成することができる。スライスの目標符号量Ｔ＝３０００００と、このグラフとの交点を求めることで、目標符号量を発生するのに最適な量子化パラメータＱＰｏｐｔを求めることができる。ＱＰｏｐｔの算出は、線形補間により、式（２）で求められる。
ＱＰｏｐｔ＝ｑ＋｛ＱＰ１（ｑ＋１）−ＱＰ１（ｑ）｝×｛Ｑ＊ｒ１（ｑ）−Ｔ｝／
｛Ｑ×ｒ１（ｑ）−Ｑ×ｒ１（ｑ＋１）｝            （２）
【００８２】
但し、ｑは０≦ｑ≦Ｑ−１の整数であり、Ｑ×ｒ１（ｑ＋１）≦Ｔ≦Ｑ×ｒ１（ｑ）を満たす値とする。ここでは、１スライスを通じて１つの最適量子化パラメータを使用することとしている。また、すべてのｑに対しＴ＞Ｑ×ｒ１（ｑ）となる場合はｑ＝０、すべてのｑに対しＴ＜Ｑ×ｒ１（ｑ）となる場合はｑ＝Ｑ−１とする。
【００８３】
スライスの目標符号量Ｔ＝３０００００ビットであるので、式（２）を用いて、ＱＰｏｐｔは１６．８４となる。
ＱＰｏｐｔ＝１６＋（２２−１６）×（３１７８５０−３０００００）／
（３１７８５０−１９０９８０）≒１６．８４
【００８４】
量子化パラメータは整数であるので、１７を最適量子化パラメータＱＰｏｐｔとする。また、小数点以下の値によっては小さい側の値１６を選択する場合もある。
【００８５】
以上のようにして最適量子化パラメータＱＰ２（ｎ）＝ＱＰｏｐｔを算出できる。また、ＱＰｏｐｔをＮ個のマクロブロックの符号化に対する初期値として用い、それ以降の量子化パラメータは動的に変更することも可能である。
【００８６】
以上説明したように、本実施形態による算術符号量概算回路２００を用いて、映像符号化装置における出力ビットストリーム１９２を得ることができる。
【００８７】
以上では、表２のｒｅｓｉｄｕａｌ＿ｂｌｏｃｋ＿ｃａｂａｃ（）に含まれるシンタックスエレメントを対象として算術符号量概算回路２００を構成する例を示したが、ｍｂ＿ｐｒｅｄ（）やｍａｃｒｏｂｌｏｃｋ＿ｌａｙｅｒ（）など他の全てのシンタックスエレメントを対象としてもよい。この場合、基本的には図４に示す、対象とするｃｔｘＩｄｘの範囲を拡張すればよい。
【００８８】
３．変形例
本実施の形態では、イントラフレームのみを符号化対象として算術符号量概算回路２００を構成する例を説明したが、フレーム間予測を用いるＰフレームやＢフレームを符号化対象とする場合でも、適用可能である。ＰフレームやＢフレームでは動きベクトルに必要となる符号量が多くなるため、表２のｍｂ＿ｐｒｅｄ（）やｓｕｂ＿ｍｂ＿ｐｒｅｄ（）に含まれるシンタックスエレメントを処理対象に加えれば良い。
【００８９】
本実施の形態では、図２に示すように４個の符号量概算回路を用いる例を説明したが、符号量概算回路の数は任意にできるのは明らかである。また、ユーナリー・バイナライゼーションを例にとってＢｉｎの逐次処理を行わずに一括処理できる例を説明したが、本実施の形態の思想が、ユーナリー・バイナライゼーション以外の２値化方法にも適用できることは明らかである。整数部のテーブルと小数部のテーブルを分けて説明したが、ｃｏｄＩＲａｎｇｅの値に基づいてテーブルを統合することも可能である。
【００９０】
本実施の形態では、Ｎをスライス単位に含まれるマクロブロック数に設定した。しかし、より小さい単位で仮符号化と符号化を行うことで算術符号量概算回路２００から予測符号量Ｒ２（ｎ）を得て、その結果を仮量子化パラメータの選択に反映するような場合は、Ｎの値を、符号化単位に合わせた小さい値に設定してもよい。また、Ｎを固定値として説明したが、Ｎをフレーム単位又はその他の単位で動的に変化させることも可能である。また、スライス予測符号量のグラフを線形補間して求める例を示したが、スプライン補間等、高度な数値補間も可能である。
【００９１】
本実施の形態では仮符号化を１回のみ行う例を示したが、リアルタイムの符号化が必要でない場合や、仮符号化をパイプライン化又は並列化することにより一定の遅延で多くの処理が行える場合には、仮符号化を何回行っても良い。
【００９２】
本実施の形態を用いて符号化したビットストリームは、テープ、光ディスク、磁気ディスク、半導体メモリといった記録媒体に記録して、再配布可能な形式にすることができる。
【００９３】
４．まとめ
以上のように本実施形態によれば、２値シンボル列のコンテキストに応じて設けられた複数の概算処理回路を並列動作させることで、コンテキストに基づいて分けられた複数のグループに対する算術符号化の近似演算を並列に行うことが可能とする。２値シンボル列に対する算術符号化の符号量の概算値を求める。これにより、算術符号化に近い演算を行いながらも正規の算術符号化と比較して処理時間を大幅に削減でき、よって、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号化装置を実現できる。そのような符号化装置を用いて高画質な映像符号化装置を提供することができる。
【産業上の利用可能性】
【００９４】
本発明によれば、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく、高画質な符号化装置を実現できるため、カメラレコーダや録画装置など小さい回路規模でリアルタイム動作が必要な記録装置にも有効である。
【００９５】
本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願２００６−３２３３８４号（２００６年１１月３０日提出）に関連し、それらの内容は参照することにより本文中に組み入れられる。
【図面の簡単な説明】
【００９６】
【図１】映像符号化装置の構成図
【図２】算術符号量概算回路の構成図
【図３】算術符号量概算回路での並列処理を説明した図
【図４】算術符号量概算回路が処理対象とするシンタックスエレメントを示す図
【図５】逐次処理での１ユニットの符号量概算処理を示すフローチャート
【図６】ユニット初期化処理を示すフローチャート
【図７】１Ｂｉｎの符号量概算処理を示すフローチャート
【図８】１Ｂｉｎの符号量加算処理を示すフローチャート
【図９】１ユニットの微小符号量概算処理を示すフローチャート
【図１０】小数符号量テーブルを説明する図
【図１１】ユーナリー・バイナライゼーションの１ユニットの符号量概算処理を示す    フローチャート
【図１２】ユニット内の全Ｂｉｎに対する符号量概算処理を示すフローチャート
【図１３】整数符号量テーブルを説明する図
【図１４】整数符号量テーブルの初期化を説明する図
【図１５】バイパス時の１ユニットの符号量概算処理を示すフローチャート
【図１６】算術符号量概算回路の予測精度を示す図
【図１７】（ａ）１９２０×１０８０画素で構成される１フレームを示した図、（ｂ）１２０×６８マクロブロックで構成される１フレームを示す図
【図１８】仮量子化パラメータの選択例を示す図
【図１９】仮量子化パラメータの選択例を示す図
【図２０】符号量積算メモリに蓄積されるデータ例を示す図
【図２１】最適量子化パラメータの算出方法を説明するための図
【図２２】従来のコンテキスト適応算術符号化回路を説明する図
【図２３】発生確率情報の初期化を説明する図
【図２４】算術符号化の概念を説明する図
【図２５】１Ｂｉｎの入力に対する算術符号化処理を示すフローチャート
【図２６】リノーマライゼーション処理を示すフローチャート
【符号の説明】
【００９７】
１００    映像符号化装置
１０１    第一の符号化回路
１０２    第二の符号化回路
１１１    量子化パラメータ発生回路
１１２    量子化パラメータ算出回路
１２１    第一の量子化回路
１２２    第二の量子化回路
１２４    逆量子化回路
１３１    第一の２値化回路
１３２    第二の２値化回路
１４２    算術符号化回路
１５１    フレームメモリ
１５２    予測モードメモリ
１５３    符号量積算メモリ
１６１    第一のブロック化回路
１６２    第二のブロック化回路
１７１    第一のイントラ予測生成回路
１７２    第二のイントラ予測生成回路
１７３    予測モード検出回路
１８１    第一のＤＣＴ回路
１８２    第二のＤＣＴ回路
１８４    逆ＤＣＴ回路
１９１    映像信号入力
１９２    出力ビットストリーム/E
２００    算術符号量概算回路
２１１〜２１４    算術符号量概算回路
２３０    選択器
２３１    加算器
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008065814.tif 000033
【図２】
2008065814.tif 000034
【図３】
2008065814.tif 000035
【図４】
2008065814.tif 000036
【図５】
2008065814.tif 000037
【図６】
2008065814.tif 000038
【図７】
2008065814.tif 000039
【図８】
2008065814.tif 000040
【図９】
2008065814.tif 000041
【図１０】
2008065814.tif 000042
【図１１】
2008065814.tif 000043
【図１２】
2008065814.tif 000044
【図１３】
2008065814.tif 000045
【図１４】
2008065814.tif 000046
【図１５】
2008065814.tif 000047
【図１６】
2008065814.tif 000048
【図１７】
2008065814.tif 000049
【図１８】
2008065814.tif 000050
【図１９】
2008065814.tif 000051
【図２０】
2008065814.tif 000052
【図２１】
2008065814.tif 000053
【図２２】
2008065814.tif 000054
【図２３】
2008065814.tif 000055
【図２４】
2008065814.tif 000056
【図２５】
2008065814.tif 000057
【図２６】
2008065814.tif 000058
【手続補正書】
【提出日】平成21年6月8日(2009.6.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力信号から、複数のコンテキストを持ち、所定の符号化単位の多値データを生成するブロック化回路と、
前記ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、
前記２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、
前記予測符号量と符号化時に与えるべき所定の符号量とに基づいて、量子化パラメータを制御することにより、前記入力信号に対する算術符号化を行う符号化回路とを備え、
前記算術符号量概算回路は、
所定の符号化単位に含まれる前記２値シンボル列を前記コンテキストに基づいて複数のグループに分ける選択器と、
前記グループ毎に用意された回路であって、前記複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、
全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する、
ことを特徴とする符号化装置。
【請求項２】
前記符号量概算回路は、連続して同一のコンテキストを持つ前記２値シンボルをまとめた単位であるユニットに対して、前記区間の幅を前記ユニットの開始時に所定の初期値に設定することを特徴とする、請求項１に記載の符号化装置。
【請求項３】
前記符号量概算回路は、前記２値シンボル列の全ての符号パターンと全ての出現確率パターンを入力とするテーブルに基づいて整数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項１に記載の符号化装置。
【請求項４】
前記符号量概算回路は、前記ユニットの終了時に前記区間の幅の対数で近似されたテーブルに基づいて前記区間の幅を小数符号量に変換し、前記グループの予測符号量に加算することを特徴とする、請求項２に記載の符号化装置。
【請求項５】
第１の量子化パラメータを生成する量子化パラメータ発生回路と、
前記第１の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して前記多値データを生成する第１の量子化回路と、
第２の量子化パラメータを生成する量子化パラメータ算出回路と、
前記第２の量子化パラメータに基づいて、前記入力信号に基づいて生成された係数データを量子化して第２の多値データを生成する第２の量子化回路と、
前記第２の多値データに対して算術符号化を行う算術符号化回路とをさらに備え、
前記量子化パラメータ算出回路は、前記第１の量子化パラメータと、前記所定の符号化単位の予測符号量と、符号化時に与えるべき所定の符号量とに基づいて、前記第２の量子化パラメータを算出する
ことを特徴とする請求項１記載の符号化装置。
【請求項６】
前記量子化パラメータ発生回路は、Ｑ個（Ｑは２以上の自然数）の代表量子化パラメータを設定しておき、前記Ｑ個の代表量子化パラメータから、前記所定の符号化単位毎に任意の一個の量子化パラメータを選択することにより、Ｎ個（Ｎは２以上の自然数）の前記係数データを量子化するための第１の量子化パラメータを生成する、ことを特徴とする請求項５に記載の符号化装置。
【請求項７】
前記ＮはＮ＝Ｌ×Ｑ（Ｌは自然数）を満たすことを特徴とする、請求項６に記載の符号化装置。
【請求項８】
前記Ｑ個の代表量子化パラメータは、量子化パラメータの最大値及び最小値を必ず含むように構成したことを特徴とする、請求項６に記載の符号化装置。
【請求項９】
前記入力信号は映像信号であり、前記係数データは、前記入力信号を周波数成分に変換した係数であることを特徴とする、請求項５に記載の符号化装置。
【請求項１０】
前記コンテキストは、少なくとも映像信号における輝度の係数データ及び色差の係数データの間で異なる値であり、前記選択器は、少なくとも前記輝度の係数データと前記色差の係数データを異なる前記グループに分けることを特徴とする、請求項９に記載の符号化装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
より具体的には、本発明に係る符号化装置は、入力信号から、複数のコンテキストを持ち、所定の符号化単位（例えば、マクロブロック）の多値データを生成するブロック化回路と、ブロック化回路により生成された多値データを２値シンボル列に変換する２値化回路と、２値シンボル列から、前記符号化単位の予測符号量を算出する算術符号量概算回路と、予測符号量と符号化時に与えるべき所定の符号量とに基づいて、量子化パラメータを制御することにより、入力信号に対する算術符号化を行う符号化回路とを備える。算術符号量概算回路は、所定の符号化単位に含まれる前記２値シンボル列をコンテキストに基づいて複数のグループに分ける選択器と、グループ毎に用意された回路であって、複数のグループに分けられた２値シンボル列を、少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出する、複数の符号量概算回路と、全ての符号量概算回路からの予測符号量を加算して、所定の符号化単位の予測符号量を出力する加算器とを有する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
代表量子化パラメータｑｐ１（ｘ）とＱＰ別予測符号量ｒ１（ｘ）から、量子化パラメータＱＰとスライス予測符号量の関係を図２１のように座標軸にプロットすることができる。ｒ１（ｘ）は、各ｘ＝ＱＰに対して２０４個ずつのマクロブロックの予測符号量の総和になっているから、各ＱＰに対するスライス予測符号量は、ｒ１（ｘ）を１０倍することで求められる。また、プロットしたスライス予測符号量を線形補間して全てのＱＰ値（０≦ＱＰ≦５１）に対するスライス予測符号量のグラフを作成することができる。スライスの目標符号量Ｔ＝３０００００と、このグラフとの交点を求めることで、目標符号量を発生するのに最適な量子化パラメータＱＰｏｐｔを求めることができる。ＱＰｏｐｔの算出は、線形補間により、式（２）で求められる。
ＱＰｏｐｔ＝ＱＰ１（ｑ）＋｛ＱＰ１（ｑ＋１）−ＱＰ１（ｑ）｝×｛Ｑ×ｒ１（ｑ）
−Ｔ｝／｛Ｑ×ｒ１（ｑ）−Ｑ×ｒ１（ｑ＋１）｝            （２）
【国際調査報告】
2008065814.tif 000059
2008065814.tif 000060
2008065814.tif 000061
2008065814.tif 000062