(57)【要約】【課題】少ないバッファメモリ容量にて画像の算術符号化処理を破綻させることなく行える画像符号化装置を提供することである。【解決手段】画像符号化装置１０は、可変長符号化部１０４と、算術符号化部１４２と、共有のバッファメモリ１１２とを備える。可変長符号化部１０４は、画像データを入力し、可変長符号化した２値化符号列を出力する。算術符号化部１４２は、可変長符号化部１０４から出力される符号列を算術符号化する。共有のバッファメモリ１１２は、可変長符号化部１０４及び算術符号化部１４２の間でデータの授受を行う。【選択図】図１
2008294669.tif 000002
【特許請求の範囲】
【請求項１】
画像データを入力し、可変長符号化した２値化符号列を出力する可変長符号化部と、
前記可変長符号化部から出力される前記符号列を算術符号化する算術符号化部と、
前記可変長符号化部及び前記算術符号化部の間でデータの授受を行う共有のバッファメモリと、
を具備したことを特徴とする画像符号化装置。
【請求項２】
画像データを入力し、可変長符号化した２値化符号列を出力する可変長符号化処理部を備え、該可変長符号化処理部は複数の別の符号化処理部と共にパイプライン動作を行う第１の符号化処理手段と、
前記第１の符号化処理手段で可変長符号化した画像データを、一時記憶するバッファメモリと、
前記バッファメモリから読み出した可変長符号化された画像データを算術符号化する算術符号化部を備えた第２の符号化処理手段と、
を具備したことを特徴とする画像符号化装置。
【請求項３】
前記可変長符号化部は、現在の入力状態に応じて可変長符号化テーブルを選択して可変長符号化を行うことを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
前記算術符号化部は、前記可変長符号化部からの入力データの状態を判定する手段を備え、その判定結果に応じて確率情報を選択的に切り替えて算術符号化を行うことを特徴とする請求項１乃至３のいずれか１つに記載の画像符号化装置。
【請求項５】
前記算術符号化部の入力データがH.264/AVC方式でのスライス単位又はピクチャ単位であることを特徴とする請求項４に記載の画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの算術符号化に至る一連の符号化処理を行う画像符号化装置に関する。
【背景技術】
【０００２】
「ITU-T Recommendation H.264／ISO/IEC 14496-10 AVC」では、MPEG2などと異なり算術符号化という新しいエントロピー符号化方式が採用されている。算術符号化は、シンボル系列の出現確率に応じて確率数直線を区分分割し、分割された区間内の位置を示す２進小数値をその系列に対する符号とするものであり、符号列を算術演算により逐次的に構成していく符号化である。
【０００３】
H.264/AVC（Advanced Video Coding）においてエントロピー符号化の一つとして用いられている算術符号の符号化処理は、１つのビットの符号化処理が完了しないと、それに続く次の符号化処理を開始することができないため、並列化が困難である。  
従来のMPEG2などの動画像符号化装置は、符号化処理を行う幾つかのハードウェア（ＤＣＴ部、量子化部、可変長符号化部、動き補償部など）が１つのＣＰＵに接続し、パイプラインを構成し、ブロック単位でパイプライン動作で処理していた。
【０００４】
しかしながら、H.264/AVCに準拠した動画像符号化装置においては、符号化処理を行うハードウェアとしては、算術符号化処理部、動き予測部、予測モード判定部、デブロッキングフィルタ部などが必要とされる。このようなハードウェア構成の場合は、動き予測部、予測モード判定部、デブロッキングフィルタ部などでの各処理はマクロブロック単位で行われる。
【０００５】
しかし、このようなH.264/AVCの装置では、動作周波数を算術符号化処理部以外のハードウェアに合わせると、算術符号の符号化処理が１つのマクロブロック処理用に割り当てられた時間内に終了しない場合があり、パイプライン処理が破綻してしまい目標とする性能を達成できない場合があった。
【０００６】
従来はこの問題を解決するために、ＣＰＵモジュール全体の周波数を上げて目標とする性能を満たす設計をする必要があった。しかし、算術符号化処理部の処理性能を上げて算術符号化処理部以外のハードウェアの処理時間と同等な処理時間とするように設計するには、高性能なＣＰＵを用いる等、回路規模を非常に大きくすることが必要であった。
【０００７】
例えば特許文献１には、H.264/AVCに準拠した算術符号化・復号の処理プロセスの具体的な実現方法として、高速処理可能な算術符号化・復号化装置が提案されている。しかしながら、この算術符号化・復号化装置は、算術符号化・復号化処理についてのみ述べられており、算術符号化処理以前及びその復号化処理以降に続く別の一連の符号化処理及び復号化処理については述べられてなく、特に別の一連の符号化処理及び復号化処理を所定のデータ単位（即ちマクロブロック単位）でパイプライン処理する例については全く記載されていない。
【特許文献１】特開２００５−１３００９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は上記の問題に鑑み、少ないバッファメモリ容量にて画像の算術符号化処理を破綻させることなく行える画像符号化装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本願発明の一態様によれば、画像データを入力し、可変長符号化した２値化符号列を出力する可変長符号化部と、前記可変長符号化部から出力される前記符号列を算術符号化する算術符号化部と、前記可変長符号化部及び前記算術符号化部の間でデータの授受を行う共有のバッファメモリと、を具備したことを特徴とする画像符号化装置が提供される。
【００１０】
また、本願発明のもう１つの態様によれば、画像データを入力し、可変長符号化した２値化符号列を出力する可変長符号化処理部を備え、該可変長符号化処理部は複数の別の符号化処理部と共にパイプライン動作を行う第１の符号化処理手段と、前記第１の符号化処理手段で可変長符号化した画像データを、一時記憶するバッファメモリと、前記バッファメモリから読み出した可変長符号化された画像データを算術符号化する算術符号化部を備えた第２の符号化処理手段と、を具備したことを特徴とする画像符号化装置が提供される。
【発明の効果】
【００１１】
本発明によれば、少ないバッファメモリ容量にて画像の算術符号化処理を破綻させることなく行える画像符号化装置を提供できる。
【発明を実施するための最良の形態】
【００１２】
発明の実施の形態について図面を参照して説明する。  
図１乃至図７で本発明の実施形態を説明する前に、図８を参照してH.264/AVCに準拠した画像符号化装置の一般的な構成例を説明する。以降、動画像符号化装置について説明する。
【００１３】
ここでは、動き補償予測を用いた、画像信号の予測符号化について説明する。伝送した過去の信号からこれから送信する信号の値を予測し、実際の信号値と予測値との予測誤差をエントロピー符号化（例えば算術符号化）して伝送する。時間方向の相関を用いたフレーム間予測では、画面上の動いている部分は静止している部分に比べて予測誤差が増加することを利用し、現フレームと前のフレームとを比較して移動した物体の画像の動きベクトルを検出し、検出した動きベクトルに応じて移動させた画像を予測値とする動き補償予測を行う。
【００１４】
図８に示す画像符号化装置２０は、符号化処理を行う複数（図では４つ）のハードウェア１５２〜１５５が１つのＣＰＵ１５１に接続し、パイプラインを構成している。ＣＰＵ１５１は、制御信号線１８１でＤＭＡ（Direct Memory Access）コントローラ１６１に接続する一方、制御信号線１８２で４つのハードウェア１５２〜１５５に接続している。４つのハードウェアは、動き予測部１５２，予測モード判定部１５３、算術符号化処理部１５４、デブロッキングフィルタ部１５５である。これらハードウェア１５２〜１５５は、ＣＰＵ１５１の制御信号線１８２と、ＤＭＡコントローラ１６１に接続したデータ転送線１７２との間に、入出力メモリ１５６〜１６０を介在して並列に接続されている。データ転送線１７１は、ＤＭＡコントローラ１６１とバッファメモリであるＤＲＡＭ（Dynamic Random Access Memory）１６２とを接続している。
【００１５】
動き予測部１５２は、現フレームと前フレームとを比較して動いている物体の動きベクトルを検出し、検出した動きベクトルに応じて前フレームを移動した画像を予測値とする機能を有する。  
予測モード判定部１５３は、現フレームの画像と、動き予測部１５２で前フレームを動き補償して得られかつブロッキング歪みを除いた予測画像との差分を求め、予測誤差として出力する機能や、ＤＣＴ及び量子化を行って出力する機能のほか、予測値としてどのマクロブロックタイプ（例えばＢタイプかＰタイプか）を使うのかを決定する機能を含む。
【００１６】
算術符号化処理部１５４は、予測モード判定部１５３からの予測誤差をＤＣＴ及び量子化した値を算術符号化して出力する機能を有する。算術符号化処理部１５４は、入力した量子化データを可変長符号化してから算術符号化することによって符号量の圧縮率をさらに上げるようになっている。
【００１７】
デブロッキングフィルタ部１５５は、予測モード判定部１５３での動き補償した予測画像を入力し、その画像のブロッキング歪みを除去して出力するためのフィルタであって、ブロッキング歪みを除去した予測画像を予測モード判定部１５３へ供給する機能を有している。
【００１８】
ＣＰＵ１５１は、４つのハードウェア１５２〜１５５の起動及び終了を含む動作を監視し制御する一方、ＤＭＡコントローラ１６１を制御する機能を有している。  
ＤＭＡコントローラ１６１は、ＣＰＵを介さずに各ハードウェア１５２〜１５５とＤＲＡＭ１６２との間で直接データ転送を行わせる機能を有する。  
ＤＲＡＭ１６２は、図示しない画像生成手段から供給されたデジタルの画像データを保持している。画像生成手段は、ＤＶＤなどの蓄積媒体に記録された画像データを記録再生する記録再生装置などで構成される。
【００１９】
このような構成の画像符号化装置では、符号化処理を行う幾つかのハードウェアが１つのＣＰＵ１５１に接続し、パイプラインを構成している。４つのハードウェア１５２〜１５５のうち、動き予測部１５２，予測モード判定部１５３、デブロッキングフィルタ部１５５の各処理は、マクロブロック単位で行われる。しかし、算術符号化処理部１５４での処理は、その特徴上、２値化したデータを１ビットごとに確率を決めて処理していかなければならず処理時間を見積もることが難しく、マクロブロック処理用の時間を超えることもある。従って、算術符号化処理部１５４の処理は、マクロブロック単位よりも大きな単位（即ち、スライス、ピクチャ、或いは、所定時間（例えば１秒）単位など）で行うことが望ましい。
【００２０】
言い換えると、動作周波数を算術符号化処理部以外のハードウェアに合わせると、算術符号の符号化処理が１つのマクロブロック処理用に割り当てられた時間内に終了しない場合があり、パイプライン処理が破綻してしまい目標とする性能を達成できない場合がある。この問題を解決するために、ＣＰＵモジュール全体の周波数を上げて目標とする性能を満たす設計をする必要があった。
【００２１】
このような図８の構成に対して、図９のように算術符号化処理部のハードウェアと算術符号化処理以前の処理のハードウェアとの２つの処理単位に分けた構成とすることにより、後者のハードウェアの中で必要以上に周波数を上げることなく、マクロブロック単位のパイプラインを構成でき、処理を行うことができる。  
図９は図８における算術符号化処理部のハードウェアとそれ以外のマクロブロック単位の処理を行うハードウェアとを分けた構成を示している。
【００２２】
図９において、画像符号化装置３０は、第１の符号化処理装置１５０と、第２の符号化処理装置１９０と、バッファメモリであるＤＲＡＭ１６２とを備えている。
【００２３】
第１の符号化処理装置１５０は、図８の構成から算術符号化処理部１５４と出力メモリ１５９を除いた構成となっている。つまり、第１の符号化処理装置１５０は、図８に示す算術符号化処理部１５４による算術符号化処理を除いた算術符号化処理以前の処理を行う、動き予測部１５２と、予測モード判定部１５３と、デブロッキングフィルタ部１５５と、制御信号線１８１及び１８２と、データ転送線１７１及び１７２と、入出力メモリ１５６〜１５８及び１６０とを備えたハードウェア（ＣＰＵモジュール）となっている。
【００２４】
第２の符号化処理装置１９０は、第１の符号化処理装置１５０の処理後に行う算術符号化処理を行う算術符号化処理部１９２（図８の算術符号化処理部１５４に同じ）と、入力メモリ１９３及び出力メモリ１９４と、ＣＰＵ１９１と、ＤＭＡコントローラ１９５と、ＣＰＵ１９１に接続した制御信号線１８３及び１８４と、ＤＭＡコントローラ１６１に接続したデータ転送線１７３及び１７４とを備えたハードウェア（ＣＰＵモジュール）となっている。算術符号化処理部１９２は、入力した量子化データを可変長符号化してから算術符号化することによって符号量の圧縮率をさらに上げるようになっている。
【００２５】
ＣＰＵ１９１は、制御信号線１８３でＤＭＡコントローラ１９５に接続する一方、制御信号線１８４で算術符号化処理部１９２に接続している。
【００２６】
算術符号化処理部１９２は、ＣＰＵ１９１の制御信号線１８４と、ＤＭＡコントローラ１９５に接続したデータ転送線１７４との間に、入力メモリ１９３及び出力メモリ１９４を介在して接続されている。データ転送線１７３は、ＤＭＡコントローラ１９５とバッファメモリであるＤＲＡＭ１６２とを接続している。
【００２７】
図９のような装置においては、図示しない画像生成手段から供給された画像データは予めＤＲＡＭ１６２に格納され、第１の符号化処理装置１５０内のＤＭＡコントローラ１６１及び入力メモリ１５６を経由して動き予測部１５２へ転送される。動き予測部１５２では、動いている物体の動きベクトルを検出し、検出した動きベクトルに応じて前フレーム画像を移動した画像を予測値として求める。この予測値は予測モード判定部１５３に入力される。一方、デブロッキングフィルタ部１５５は、予測モード判定部１５３での動き補償した予測画像を入力し、ブロッキング歪みを除去した予測画像を生成して予測モード判定部１５３へ供給する。予測モード判定部１５３では、現フレームの画像と、動き予測部１５２で前フレーム画像を動き補償して得られかつブロッキング歪みを除いた予測画像との差分を算出し、算出した予測誤差にＤＣＴ及び量子化を行って出力する。このとき、例えば、予測モード判定部１５３への入力信号を０〜２５５（８ビット）の範囲とすると、予測誤差として出力れる差分信号は−２５５〜＋２５５の範囲となり、その範囲は２倍になる。つまり、データ量（符号量）が増大する場合がある。
【００２８】
予測モード判定部１５３で算出した予測誤差に基づく量子化値はＤＲＡＭ１６２に一旦書き込まれ、その後にＤＲＡＭ１６２から読み出されて第２の符号化処理装置１９０へ転送される。転送されたデータは、第２の符号化処理装置１９０内のＤＭＡコントローラ１９５及び入力メモリ１９３を経由して算術符号化処理部１９２へ入力されて、算術符号化処理が行われる。その算術符号化処理されたデータは、出力メモリ１９４を経由してＤＲＡＭ１６２に記憶された後、ＤＲＡＭ１６２から読み出されて図示しないデコーダへ送出される。
【００２９】
図９のような装置では、算術符号化処理部１９２を含むモジュール１９０と算術符号化処理以前の処理を行うモジュール１５０とで実行処理単位を２つに分けてそれぞれ独立にすることにより、後者のモジュール１５０の中で必要以上に周波数を上げることなく、マクロブロック単位のパイプライン処理を行えると共に、前者のモジュール１９０では算術符号化処理をそれに相応した動作周波数で処理することができる。
【００３０】
しかしながら、図９の装置では、第1のモジュール１５０で生成した予測誤差に対応したデータをバッファメモリであるＤＲＡＭ１６２に一時記憶することになり、２つのＣＰＵモジュール１５０及び１９０間のバッファメモリで受け渡すデータ量がピクチャ１枚のデータ量の2倍となる場合があり、膨大なメモリ空間を必要とするという問題点がある。
【００３１】
そこで、以下に説明する本発明の実施形態では、図８又は図９に示した算術符号化処理部１５４又は１９２を可変長符号化部としてのbinValストリーム生成部と算術符号化部とに分けることにより、少ない容量のバッファメモリにて画像の符号化処理を破綻させることなく行えるようにする。。
【００３２】
［第１の実施形態］
図１は本発明の第１の実施形態の画像符号化装置を示すブロック図である。本実施形態では、動画像符号化装置について説明する。  
図１に示す画像符号化装置１０は、第１の符号化処理手段としての第１の符号化処理装置１００と、第２の符号化処理手段としての第２の符号化処理装置１４０と、バッファメモリとしてのＤＲＡＭ１１２とを備えている。
【００３３】
第１の符号化処理装置１００は、ＣＰＵ１０１と、動き予測部１０２と、予測モード判定部１０３と、可変長符号化部としてのbinValストリーム生成部１０４と、デブロッキングフィルタ部１０５と、入力メモリ１０６と、入出力メモリ１０７，１０８及び１１０と、出力メモリ１０９と、ＤＭＡコントローラ１１１と、ＣＰＵ１０１に接続した制御信号線１３１及び１３２と、ＤＭＡコントローラ１１１に接続したデータ転送線１２１及び１２２とを備え、算術符号化以前の複数の処理（動き予測部、予測モード判定部、binValストリーム生成部、及びデブロッキングフィルタ部の各処理）をマクロブロック単位でパイプライン動作で行うハードウェア（ＣＰＵモジュール）となっている。なお、binValストリームは、算術符号化処理の過程における中間データであり、例えばH.264/AVCに準拠した可変長の２値化符号列である。なお、「binVal」は、バイナリーバリュー（即ち２値）を意味する。
【００３４】
ＣＰＵ１０１は、プログラムやデータを格納するメモリ101-1を備え、制御信号線１３１及び１３２を介して、動き予測部１０２、予測モード判定部１０３、binValストリーム生成部１０４、デブロッキングフィルタ部１０５及びＤＭＡコントローラ１１１を制御する。
【００３５】
動き予測部１０２は、動いている物体の動きベクトルを検出し、検出した動きベクトルに応じて前フレーム画像を移動した画像を予測値として求め、次段の予測モード判定部１５３に供給する。  
デブロッキングフィルタ部１０５は、予測モード判定部１５３での動き補償した予測画像を入力し、ブロッキング歪みを除去した予測画像を生成して予測モード判定部１５３へ供給する。
【００３６】
予測モード判定部１０３は、現フレームの画像と、動き予測部１０２で前フレーム画像を動き補償して得られかつブロッキング歪みを除いた予測画像との差分を算出し、算出した予測誤差にＤＣＴ及び量子化を行って出力する。また、予測モード判定部１０３は、予測値としてどのマクロブロックタイプ（例えばＢタイプかＰタイプか）を使うのかを決定する機能を有している。
【００３７】
可変長符号化部としてのbinValストリーム生成部１０４は、予測モード判定部１０３からの予測誤差に基づく量子化値をbinValストリームデータ（可変長の２値化符号列）へ変換する機能を有している。変換されたbinValストリームデータは、出力メモリ１０９を経由してＤＲＡＭ１１２へ一旦格納される。このbinValストリームデータは、図９で述べた予測モード判定部からの予測誤差に基づくデータ（可変長符号化が行われていないデータ）に比べてデータ量（符号量）は減少している。
【００３８】
ＤＲＡＭ１１２は、第１の符号化処理装置１００と第２の符号化処理装置１４０がデータの授受（受け渡し）を行うための共有のバッファメモリである。ＤＲＡＭ１１２に対しては、符号化処理を行う過程において、図示しない画像生成装置から入力されるデジタルの画像データの書き込み及びそのデータの第１の符号化処理装置１００への読み出しと、第１の符号化処理装置１００内のbinValストリーム生成部１０４で生成されたbinValストリームデータ（可変長の２値化符号列）の書き込み及びそのデータの第２の符号化処理装置１４０への読み出しと、第２の符号化処理装置１４０内の算術符号化部１４２で算術符号化された画像データの書き込み及びそのデータの図示しないデコーダへの読み出しと、が行われる。
【００３９】
第２の符号化処理装置１４０は、ＣＰＵ１４１と、算術符号化部１４２と、入力メモリ１４３及び出力メモリ１４４と、ＤＭＡコントローラ１４５と、ＣＰＵ１４１に接続した制御信号線１３３及び１３４と、ＤＭＡコントローラ１４５に接続したデータ転送線１２３及び１２４とを備え、第１の符号化処理装置１００からＤＲＡＭ１１２に一時書き込まれたbinValストリームの可変長符号化された画像データを読み出して算術符号化部１４２に入力し、この画像データに対してマクロブロック単位よりも大きな単位（即ち、スライス、ピクチャ、或いは、予め決められた時間（例えば１秒）単位など）で算術符号化を行い、再びＤＲＡＭ１１２へ書き戻す。
【００４０】
ＣＰＵ１４１は、プログラムやデータを格納するメモリ141-1を備え、制御信号線１３３，１３４を介して、算術符号化部１４２及びＤＭＡコントローラ１４５を制御する。
【００４１】
算術符号化部１４２は、ＤＲＡＭ１１２から出力されるbinValストリームデータを入力メモリ１４３を介して入力し、算術演算によるエントロピー符号化を行う。算術符号化によって符号量が減少された画像データは一時ＤＲＡＭ１１２に格納された後、伝送路（図示せず）を介して図示しないデコーダへ出力される。
【００４２】
上記の構成において、図示しない画像生成手段から供給された画像データが予めＤＲＡＭ１１２に格納され、第１の符号化処理装置１００内の入力メモリ１０６を経由して動き予測部１０２に入力されマクロブロック単位で動きベクトルが検出されかつ動きベクトルを用いて予測画像が生成され、入出力メモリ１０７を経由して予測モード判定部１０３へ転送する。予測モード判定部１０３は、動き予測部１０２から予測画像を取得し、予測画像と現フレーム画像とを用いて予測誤差を算出し、入出力メモリ１０８を経由してbinValストリーム生成部１０４へ転送する一方、取得した予測画像を入出力メモリ１１０を介してデブロッキングフィルタ部１０５へ転送しデブロッキングフィルタリング（ブロック歪み軽減）して再び予測モード判定部１０３へフィードバックする。binValストリーム生成部１０４は、予測誤差に基づいた量子化値を入力しこれを可変長符号化してbinValストリーム（可変長の２値化符号列）を生成し、出力メモリ１０９を介してＤＲＡＭ１１２に一時格納する。予め決められた時間が経過すると、ＤＲＡＭ１１２はＤＭＡコントローラ１４５の制御によって、ＤＲＡＭ１１２内のbinValストリームデータを入力メモリ１４３を経由して第２の符号化処理装置１４０内の算術符号化部１４２へ転送する。
【００４３】
算術符号化部１４２の算術符号化処理は、予め決められた時間（例えば１秒間）ごとにその時間内に行われて、その算術符号化されたデータがＤＲＡＭ１１２に記憶され、その後に図示しないデコーダへ送出される。なお、デコーダへは、予測誤差に基づいた算術符号化データのほかに動きベクトルに基づいた算術符号化データも送信される。
【００４４】
算術符号化処理部を２つに分ける意義は、binValストリーム生成部１０４では他の処理と同様にマクロブロック単位で処理を行い、算術符号化部１４２ではビットストリームの１枚のピクチャ単位とかそれを幾つかに分けたスライス単位で処理を行うことによって処理の平均化が図ることができる。
【００４５】
例えば、１マクロブロックのビット量が少ない場合は１マクロブロック当たり５０サイクル（言い換えれば動作クロックが５０クロック分）とか１００サイクルで処理が終了することもあるが、１マクロブロックのビット量が多い場合はその２〜３倍或いは２０００サイクルといった長時間の処理となる場合がある。
【００４６】
算術符号化処理における前段の処理であるbinValストリーム（可変長の２値化符号列）処理を算術符号化処理から分離してやることによって、残りの後段の処理である算術符号化を時間を掛けて（例えば１ピクチャ分溜めてから）処理を行うことができる。これに対して、算術符号化以外の他の処理については、Ｉピクチャ、Ｐピクチャ及びＢピクチャのいずれの場合であっても同じ処理時間で１マクロブロックの処理を行わなければならないという前提がある。
【００４７】
算術符号化だけ別のモジュールとして１ピクチャ或いは１スライス単位で処理することによって、例えばＩピクチャだけビット量が多くて時間がかかってもＰピクチャやＢピクチャが早く処理が終了することによって、１ピクチャ或いは１スライス全体のストリームで見ると処理時間が平均化されて、他の処理との時間的なバランス（調整）を取ることができる。
【００４８】
図２はbinValストリーム生成部１０４の構成を示すブロック図である。  
図２において、binValストリーム生成部１０４は、可変長符号化部２０１と、状態保持部２０２と、出力バッファメモリ（以下単に出力バッファという）２０３と、を備えている。
【００４９】
可変長符号化部２０１は、可変長符号化テーブルを多数備えている。  
状態保持部２０２は、入力メモリ１０８（図１の入出力メモリ１０８に同じ）へデータが格納されると、入力メモリ１０８のどこにデータが格納されているかが分かっているので、その格納位置への読み込み要求を出してデータを取りに行く。言い換えれば、状態保持部２０２は、入力メモリ１０８に対してその中に格納されている動きベクトル及び予測誤差のデータを順次読み出す指示を出す。そして、どのデータが読み出されているかによって（例えば動きベクトルのデータかそれとも予測誤差のデータかによって）、可変長符号化部２０１内の多数の可変長符号化テーブルの内のどれを使うかというテーブル選択指示を出す。状態保持部２０２は、可変長符号化部２０１がbinValストリーム（可変長の２値化符号列）のどのシンボルを符号化しているかをカウントしている。どの可変長符号化テーブルを用いたらよいかは、binValストリームの２値化符号列から分かる。入力メモリ１０８から読み出されたデータがこの可変長符号化テーブルの符号と一致するとこのような意味となるから次はこのような別の可変長符号化テーブルを使用するというように、ストリームの可変長符号化が進行していく。
【００５０】
図３は算術符号化部１４２の構成を示すブロック図である。  
図３において、算術符号化部１４２は、入力バッファメモリ（以下単に入力バッファという）３０１と、算術符号化部３０２と、出力バッファ３０３と、入力比較部３０４と、状態保持部３０５と、確率情報保持部３０６と、を備えている。
【００５１】
状態保持部３０５は、入力されているデータの状態を保持するもので、文法上、どういう意味の符号列のものを符号化しているかの状態（１番目のデータ，２番目のデータ，…の状態、つまり、動きベクトルのデータか予測誤差のデータかを示す状態）を保持している。  
入力比較部３０４は、算術符号化を開始したか否かの判定をして、開始した段階で、このデータは何か（動きベクトルか予測誤差か）を判定し状態保持部３０５に保持する。
【００５２】
確率情報保持部３０６は、算術符号化部３０２がデータを確率情報を用いて算術符号化するので、次のデータの確率はどうなのかを知るためにある。確率情報保持部３０６は、データの次のビットを符号化するときに利用されるもので、確率の分かったものを算術符号化部３０２に入れて、次のビットの確率を計算している。つまり、確率情報保持部３０６は、状態保持部３０５でのデータの状態と、既に符号化したデータの結果によって、次のデータの符号化の確率を計算する。  
算術符号化部１４２では、binValストリームデータを入力し、１ビットずつ符号化していくと、算術符号化されたデータが出力される。
【００５３】
次に、図２のbinValストリーム生成部１０４での処理、図３の算術符号化部１４２での処理を、それぞれ図４のフローチャート、図５のフローチャートを参照して説明する。ＣＰＵ１０１，ＣＰＵ１４１のそれぞれの制御に基づく処理フローである。
【００５４】
以下に、図４を参照して、binValストリーム生成部１０４での処理を説明する。  
(1)状態保持部２０２は、入力メモリ１０８より取り込んだデータを可変長符号化部２０１へ入力する。状態保持部２０２は、可変長符号化部２０１内の複数の可変長符号化テーブルから、入力データの読み込み状態（動きベクトルのデータか予測誤差のデータかの状態）に基づき適宜の可変長符号化テーブルを選択する（ステップＳ1）。
【００５５】
(2)可変長符号化部２０１において、選択された可変長符化テーブルを用いて入力データの可変長符号への符号化を行い、出力バッファ２０３に格納する（ステップＳ2）。  
(3)可変長符化の終わったデータは出力バッファ２０３に保存される。そして、出力バッファ２０３がデータで満たされたか否かを判定し（ステップＳ3）、データが満たされたならば出力メモリ１０９にデータを出力する。このデータをbinValストリームとする（ステップＳ4）。
【００５６】
(4)入力データの状態が例えば動きベクトルのデータを終了し次の予測誤差のデータになったら、状態保持部２０２の状態を更新する。そして、１つのデータの可変長符化が終了状態か否かを判定し、終了状態でなければステップＳ1に戻り、次のデータのbinValストリーム生成処理を行う（ステップＳ5）。  
(5)状態保持部２０２の状態が終了状態であれば、binValストリーム生成の処理を終了し、データをＤＲＡＭ１１２へ書き込む（ステップＳ6）。
【００５７】
以下に、図５を参照して、算術符号化部１４２での処理を説明する。  
(1)ＤＲＡＭ１１２に書き込まれているbinValストリームデータを読み出す（ステップＳ11）。  
(2)入力メモリ１４３より取り込んだデータを入力バッファ３０１に一時保存する。入力バッファ３０１が空であるか否か判定し（ステップＳ12）、空であると、入力メモリ１４３よりbinValストリームデータを取り込み、取り込んだデータを入力バッファ３０１に一度保持する（ステップＳ13）。
【００５８】
(3)入力比較部３０４は、入力データを入力状態の遷移テーブルを用いて比較し、現在のデータの状態（動きベクトルのデータか予測誤差のデータかの状態）を判定する（ステップＳ14）。  
(4)現在のデータの状態により、符号化するデータの確率情報を確率情報保持部３０６で決定し、算術符号化部３０２に入力する（ステップＳ15）。  
(5)算術符号化部３０２では、入力バッファ３０１からのデータ、及び確率情報により算術符号への符号化を行い、出力バッファ３０３へ算術符号化されたデータを出力する（ステップＳ16）。
【００５９】
(6)出力バッファ３０３がデータで満たされたか否かを判定し（ステップＳ17）、データが満たされたならば出力メモリ１４４にデータを出力する（ステップＳ18）。  
(7)入力データの状態が例えば動きベクトルのデータを終了し次の予測誤差のデータになったら、状態保持部３０５の状態を更新する。そして、１つのデータの算術符号化が終了状態か否かを判定し、終了状態であれば、算術符号化の処理を終了し、終了状態でなければ、次のデータの算術符号化を行う（ステップＳ19）。算術符号化の処理を終了した後は、ＤＲＡＭ１１２へ書き出す（ステップＳ20）。
【００６０】
図６はＢスライス時のマクロブロックタイプの２値化変換テーブル（正確には、２値化用可変長符号化テーブル）を示し、図７はＢスライス時のサブマクロブロックタイプの２値化変換テーブルを示している。  
図６及び図７に示すようなBスライス時のマクロブロックタイプ、及びサブマクロブロックタイプの２値化変換テーブルが、H.264の規格書に定義されている。
【００６１】
図１におけるbinValストリーム生成部１０４の入力のマイクロブロックタイプ値(一部)が以下のようであった場合、
22(B_8x8) 3(B_Bi_8x8) 2(B_L1_8x8) 1(B_L0_8x8) 3(B_Bi_8x8)
binValストリーム生成部１０４中では、規格書に定義されている各符号列（シンタックス）の出現順及び図６及び図７の２値化変換テーブルを用いて以下のように復号を行う。
【００６２】
binValストリーム生成部の入力   算術符号化前
のマイクロブロックタイプ値     の２値列
22(B_8x8)           →       111111
3(B_Bi_8x8)        →       11000  
2(B_L1_8x8)        →       101
1(B_L0_8x8)        →       100
3(B_Bi_8x8)        →       11000
上記の場合、binValストリーム生成部１０４の出力は、以下のようになる。
【００６３】
1111111100010110011000
次に、以上述べた第１の実施形態の特徴及び効果について説明する。  
（１）第１の符号化処理装置１００と第２の符号化処理装置１４０との共有のバッファメモリであるＤＲＡＭ１１２に、第１の符号化処理装置１００で可変長符号化した中間データであるbinValストリームが書き込まれた後に、その書き込まれたデータが第２の符号化処理装置１４０に転送されて、算術符号化行われる。すなわち、ＤＲＡＭ１１２は、一時的に中間データを保存し、次の算術符号化の処理のために保持しておく機能を有し、画像符号化装置全体を通して共有のバッファメモリとして使用される。ここで、図９の構成例では、予測モード判定部１０３の後段にbinValストリーム生成部１０４が設けられていなかったので、予測モード判定部１０３から出力される差分信号である予測誤差のデータ量（符号量）が増大する場合があった。しかし、本発明に係る図１の構成では、予測モード判定部１０３から出力される予測誤差の信号は、後段のbinValストリーム生成部１０４に転送されて可変長の２値化信号にされるので、符号量が増大する虞はなく符号量はむしろ減少するので、ＤＲＡＭ１１２の容量は少なくて済むことになる。
【００６４】
（２）第１の符号化処理装置１００は、パイプライン処理を並列的に順次行う複数のハードウェアを備え、ＤＲＡＭ１１２に一時記憶されている画像データをマクロブロック単位で読み出して、順次ハードウェア１０２〜１０５でマクロブロック単位でそれぞれの符号化処理を行うので、並列的処理による高速化が可能となる。
【００６５】
（３）算術符号化処理を、算術符号化部１４２とbinValストリーム生成部１０４とに分けることにより、少ない容量のバッファメモリにて動画像の符号化処理を破綻させることなく行うことができる。binValストリーム生成部１０４による可変長符号化処理は、パイプライン処理側である第１の符号化処理装置１００に配置してbinValストリームをマクロブロック単位でパイプライン処理で行うことが可能である。従って、算術符号化処理の一部を高速化することができる。
【００６６】
（４）第１の符号化処理装置１００のbinValストリーム生成部１０４はマクロブロック単位で可変長の２値化符号生成処理を行い、ＤＲＡＭ１１２に書き込まれる。ＤＲＡＭ１１２では、予め決められた時間（例えば１秒）経過するごとに第２の符号化処理装置１４０へ転送していく。第２の符号化処理装置１４０に転送される際には、H.264/AVCで定義されている例えばスライス単位で転送される。第２の符号化処理装置１４０では、スライス単位で処理（内部的には１ビット単位で）して算術符号化を行っていき、スライス単位でＤＲＡＭ１１２に算術符号化データを格納処理していく。H.264/AVCでは、１秒間にどれくらいのデータ量を処理しなければならないかが、規格上決められている。スライス単位の処理時間をｔ1、H.264/AVCで予め決められた処理時間をｔ2とすれば、ｔ1≦ｔ2の関係となる。
【００６７】
（５）（４）のことから、第２の符号化処理装置１４０は算術符号化処理の時間が長くかかる場合が多く、処理時間を短くし、例えばマクロブロック単位の高速処理とするためには、回路規模が非常に大きくなる。これは、算術符号化の処理時間は、ばらつきが大きく、かなり高いパフォーマンスのハードウェアを構築しなければならないからである。しかし、第１の符号化処理装置１００でマクロブロック単位のパイプライン処理によって、算術符号化以前の符号化処理を行った後に、ＤＲＡＭ１１２に一旦蓄えてから次段の第２の符号化処理装置１４０にデータ転送して、算術符号化に移行することができるので、算術符号化ハードウェア１４０として処理能力の低いものを使っても、換言すれば算術符号化ハードウェア１４０の動作周波数を格別高くない周波数とすることが可能であり、処理速度として非常な高速なものを用意しなくても動作させることができる。
【００６８】
（６）算術符号化の処理単位を２つに分けることにより、算術符号化部１４２を含む装置１４０と算術符号化以前のbinValストリーム生成を含む符号化処理を行う装置１００の実行単位を独立にすることにより、後者の装置１００の中で必要以上に周波数を上げる（これは、例えば、２つの処理単位に分けて独立にしなかった場合に、仮に前者の装置１４０の周波数を高くして処理能力向上を図った場合の処置として後者の装置１００の周波数も上げざるを得ないことを意味している）ことなく、マクロブロック単位のパイプラインを構成でき、符号化処理を行うことができる。
【００６９】
（７）算術符号化以前の処理を行う第１のＣＰＵモジュール（１００）と可変長符号化処理を含む第２のＣＰＵモジュール（１４０）で分け、かつ第１，第２のＣＰＵモジュール間で共有のバッファメモリ（１１２）を有することにより、第１のＣＰＵモジュールで処理したデータをバッファメモリで保持し、この保持したデータを直ぐに第２のＣＰＵモジュールでの処理に使用することができ、各ＣＰＵモジュールごとにバッファメモリを設けるのに比べて、バッファメモリ上に保持するテンポラリのデータ量を削減できる。
【００７０】
尚、以上述べた本発明の実施形態では、画像符号化装置は動画像の符号化を行うものであったが、本発明は動画像の符号化に限らず、静止画像の符号化についても適用することが可能である。また、本発明の実施形態では、データを処理する際の単位としてマクロブロック単位について説明しているが、本発明はマクロブロック単位に限らず、ブロック単位などであってもよい。
【図面の簡単な説明】
【００７１】
【図１】本発明の第１の実施形態の画像符号化装置を示すブロック図。
【図２】図１におけるbinValストリーム生成部の構成を示すブロック図。
【図３】図１における算術符号化部の構成を示すブロック図。
【図４】図２のbinValストリーム生成部での処理のフローチャート。
【図５】図３の算術符号化部での処理のフローチャート。
【図６】Ｂスライス時のマクロブロックタイプの２値化変換テーブルを示す図。
【図７】Ｂスライス時のサブマクロブロックタイプの２値化変換テーブルを示す図。
【図８】H.264/AVCに準拠した画像符号化装置の一般的な構成例を示すブロック図。
【図９】図８の装置を改善した画像符号化装置の構成例を示すブロック図。
【符号の説明】
【００７２】
１０…画像符号化装置
１００…第１の符号化処理装置（第１の符号化処理手段）
１０２…算術符号化部
１０４…binValストリーム生成部（可変長符号化部）
１１２…ＤＲＡＭ（バッファメモリ）
１４０…第２の符号化処理装置（第２の符号化処理手段）
【図１】
2008294669.tif 000003
【図２】
2008294669.tif 000004
【図３】
2008294669.tif 000005
【図４】
2008294669.tif 000006
【図５】
2008294669.tif 000007
【図６】
2008294669.tif 000008
【図７】
2008294669.tif 000009
【図８】
2008294669.tif 000010
【図９】
2008294669.tif 000011