(57)【要約】【課題】バイナリデータを蓄積する手段の容量が小さく、かつ、装置規模が小さく、更に、画像信号をリアルタイムに処理することができ、加えて、最終的に得られるデータに対する画像の品質の低下を抑えることができる画像符号化装置を提供する。【解決手段】画像信号を直交変換する直交変換部３と、直交変換部３によって得られた値を量子化する適応量子化部４と、適応量子化部４によって得られた符号値を２値化する２値化部３０と、２値化部３０によって得られたバイナリデータをエントロピ符号化するコンテキストモデリング部３２及び２値算術符号化部３３とを備え、適応量子化部４は、２値化部３０が行なう処理の特性を考慮することなく符号化を行なった場合に２値化部３０によって得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、上記特性を考慮して画像信号を符号化する。【選択図】図１
2007020141.tif 000002
【特許請求の範囲】
【請求項１】
画像信号を符号化する画像符号化手段と、
前記画像符号化手段によって得られた符号値を２値化する２値化手段と、
前記２値化手段によって得られたバイナリデータをエントロピ符号化するエントロピ符号化手段とを備え、
前記画像符号化手段は、前記２値化手段が行なう処理の特性を考慮することなく符号化を行なった場合に前記２値化手段によって得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、前記特性を考慮して前記画像信号を符号化する
画像符号化装置。
【請求項２】
更に、
前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、
前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、
前記画像符号化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記特性を考慮して前記画像信号を符号化する
請求項１記載の画像符号化装置。
【請求項３】
前記画像符号化手段は、前記画像信号を直交変換する直交変換手段と、前記直交変換手段によって得られた値を量子化する量子化手段とを有し、
前記量子化手段は、前記直交変換手段によって得られた値そのものを量子化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られるように、前記直交変換手段によって得られた値からオフセット値を減算し、減算結果を量子化する
請求項１記載の画像符号化装置。
【請求項４】
前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、
前記量子化手段は、Ｇｏｌｏｍｂ符号化する際に用いるテーブルに基づいて、前記直交変換手段によって得られた値そのものを量子化した第１の符号値をＧｏｌｏｍｂ符号化することにより得られる第１のバイナリデータのビット数が、前記第１の符号値より１小さい第２の符号値をＧｏｌｏｍｂ符号化することにより得られる第２のバイナリデータのビット数よりも多く、前記第１の符号値が特異点である場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化する
請求項３記載の画像符号化装置。
【請求項５】
前記量子化手段は、前記第１の符号値が１５、１７、２１、２９、及び４５のいずれかである場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化する
請求項４記載の画像符号化装置。
【請求項６】
前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、
前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られるバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記第１の符号値から前記オフセット値を減算した第２の符号値を２値化することにより得られるバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、前記量子化手段は、前記直交変換手段によって得られた値から前記オフセット値を減算する
請求項３記載の画像符号化装置。
【請求項７】
前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、
前記量子化手段は、（ａ）前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られる第１のバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記第１の符号値から前記オフセット値である１を減算した第２の符号値を２値化することにより得られる第２のバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、前記第２の符号値を出力し、（ｂ）前記第１のＧｏｌｏｍｂ符号長と前記第２のＧｏｌｏｍｂ符号長とが等しい場合、前記第１の符号値を出力する
請求項３記載の画像符号化装置。
【請求項８】
前記量子化手段は、（ａ）前記第１の符号値が１５、１７、２１、２９、及び４５のいずれかである場合、前記第２の符号値を出力し、（ｂ）前記第１の符号値が１５、１７、２１、２９、及び４５のいずれでもない場合、前記第１の符号値を出力する
請求項７記載の画像符号化装置。
【請求項９】
更に、
前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、
前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、
前記量子化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化する
請求項３記載の画像符号化装置。
【請求項１０】
前記量子化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が前記第１の蓄積量を超えた後に前記第１の蓄積量以下の量である第２の蓄積量に達したことを検出した場合、前記オフセット値を減算することを中止して、前記直交変換手段によって得られた値そのものを量子化する
請求項９記載の画像符号化装置。
【請求項１１】
前記画像符号化手段は、前記画像信号を直交変換する直交変換手段と、前記直交変換手段によって得られた値を量子化する量子化手段とを有し、
前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、
前記量子化手段は、（ａ）前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られるバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記直交変換手段によって得られた値にオフセット値を加算した結果を量子化した第２の符号値を２値化することにより得られるバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも短い場合、前記第１の符号値を出力し、（ｂ）前記第１のＧｏｌｏｍｂ符号長と前記第２のＧｏｌｏｍｂ符号長とが等しい場合、前記第２の符号値を出力する
請求項１記載の画像符号化装置。
【請求項１２】
前記量子化手段は、（ａ）前記第１の符号値が１４、１６、２０、２８、及び４４のいずれかである場合、前記第１の符号値を出力し、（ｂ）前記第１の符号値が１４、１６、２０、２８、及び４４のいずれでもない場合、前記第２の符号値を出力する
請求項１１記載の画像符号化装置。
【請求項１３】
前記画像符号化手段は、前記画像信号のフレーム間の動きベクトルを検出する動きベクトル検出手段を有し、
前記動きベクトル検出手段は、複数の参照画像マクロブロックそれぞれに対する動きベクトルのうちで、最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られる動きベクトルを選択する
請求項１記載の画像符号化装置。
【請求項１４】
前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、
（ａ）前記最小の評価値が得られる参照画像マクロブロックに対する第１の動きベクトルにおけるｘ座標の絶対値を２値化することにより得られる第１のバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記ｘ座標の絶対値より所定の値小さい第２の値を２値化することにより得られる第２のバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、及び／又は、（ｂ）前記第１の動きベクトルにおけるｙ座標の絶対値を２値化することにより得られる第３のバイナリデータの量である第３のＧｏｌｏｍｂ符号長が、前記ｙ座標の絶対値より所定の値小さい第４の値を２値化することにより得られる第４のバイナリデータの量である第４のＧｏｌｏｍｂ符号長よりも長い場合、前記動きベクトル検出手段は、前記第２の値及び／又は前記第４の値を有する第２の動きベクトルを選択する
請求項１３記載の画像符号化装置。
【請求項１５】
前記動きベクトル検出手段は、前記第１の動きベクトルにおけるｘ座標の絶対値又はｙ座標の絶対値が９、１７、及び３３のいずれかである場合、前記第２の動きベクトルを選択し、（ｂ）前記ｘ座標の絶対値又は前記ｙ座標の絶対値が９、１７、及び３３のいずれでもない場合、前記第１の動きベクトルを選択する
請求項１４記載の画像符号化装置。
【請求項１６】
前記評価値は、符号化対象画像マクロブロックと、参照画像マクロブロックとの差分絶対値の和である
請求項１３記載の画像符号化装置。
【請求項１７】
更に、
前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、
前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、
前記動きベクトル検出手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られる動きベクトルを選択する
請求項１３記載の画像符号化装置。
【請求項１８】
前記動きベクトル検出手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が前記第１の蓄積量を超えた後に前記第１の蓄積量以下の量である第２の蓄積量に達したことを検出した場合、前記最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを選択する
請求項１７記載の画像符号化装置。
【請求項１９】
画像信号を符号化する画像符号化ステップと、
前記画像符号化ステップにおいて得られた符号値を２値化する２値化ステップと、
前記２値化ステップにおいて得られたバイナリデータをエントロピ符号化するエントロピ符号化ステップとを含み、
前記画像符号化ステップでは、前記２値化ステップにおいて行なう処理の特性を考慮することなく符号化を行なった場合に前記２値化ステップにおいて得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、前記２値化ステップにおいて行なう処理の特性を考慮して前記画像信号を符号化する
画像符号化方法。
【請求項２０】
画像信号を符号化する画像符号化ステップと、
前記画像符号化ステップにおいて得られた符号値を２値化する２値化ステップと、
前記２値化ステップにおいて得られたバイナリデータをエントロピ符号化するエントロピ符号化ステップとをコンピュータに実行させるためのプログラムであって、
前記画像符号化ステップでは、前記２値化ステップにおいて行なう処理の特性を考慮することなく符号化を行なった場合に前記２値化ステップにおいて得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、前記２値化ステップにおいて行なう処理の特性を考慮して前記画像信号を符号化する
プログラム。
【請求項２１】
画像信号を符号化する画像符号化手段と、
前記画像符号化手段によって得られた符号値を２値化する２値化手段と、
前記２値化手段によって得られたバイナリデータをエントロピ符号化するエントロピ符号化手段とを備え、
前記画像符号化手段は、前記２値化手段が行なう処理の特性を考慮することなく符号化を行なった場合に前記２値化手段によって得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、前記２値化手段が行なう処理の特性を考慮して前記画像信号を符号化する
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像信号を符号化する画像符号化装置に関する。
【背景技術】
【０００２】
近年、カメラによって得られた動画像を符号化処理して得られた圧縮ストリームを、デジタル信号のまま記録媒体に記録するデジタルビデオカメラが普及している。上記符号化処理に用いる方法として、ＤＶＣ、ＭＰＥＧ２（ＩＳＯ／ＩＥＣ  １３８１８−２）、及び、ＭＰＥＧ４（ＩＳＯ／ＩＥＣ  １４４９６−２）等の符号化方法が多く用いられている。
【０００３】
更に近年、テレビ会議用の画像符号化を当初の目的としたＨ．２６４（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６４）という規格が標準化されている。Ｈ．２６４は、ＭＰＥＧ２やＭＰＥＧ４に比べて符号化及び復号化を実行する際の演算量が多くなるが、より高い符号化効率が得られる。
【０００４】
Ｈ．２６４において用いられるエントロピ符号化で高い符号化効率を得る方法として、ＣＡＢＡＣ（コンテキスト適応２値算術符号化）という符号化方法がある。ＣＡＢＡＣは、入力されたデータを２値化し、得られたバイナリデータの発生確率をコンテキスト（現在の符号化対象や周囲の状況）に応じて演算し、演算結果を符号化ビットとすることで、高効率な符号化を可能にしている。しかし入力データを直接変換するのではなく、発生確率を更新しつつ符号化ビットを不定期に確定するため、符号化すべきバイナリデータを一時的に蓄積しておくためのバッファ（Ｂｉｎバッファ）の容量を大きくしておく必要がある。
【０００５】
特許文献１により、ＣＡＢＡＣの処理負担量を一定量以下に抑える等の目的で、バイナリデータを生成する２値化部が出力するデータの量を監視し、所定の符号化単位において処理されるデータの量が所定の値に達した場合、それまでとは異なる符号化処理を実行する装置が提案されている。
【０００６】
特許文献１により提案されている画像符号化装置６００では、図８に示すように、制限監視部６２が設けられる。制限監視部６２は、所定の符号化単位において、ＣＡＢＡＣ処理部６１の２値化部３０がＢｉｎバッファ３１に出力するデータの量が第１の値に達しているか否かを監視する。また、制限監視部６２は、所定の符号化単位において、２値算術符号化部３３から出力されるデータの量が第２の値に達しているか否かを監視する。
【０００７】
２値化部３０が出力するデータの量が第１の値に達している場合、又は、２値算術符号化部３３から出力されるデータの量が第２の値に達している場合、制限監視部６２は符号化制御部６３に監視信号を出力する。符号化制御部６３は、直交変換部３や量子化部２２等に、その監視信号に対応する画像信号の処理をやり直させる。このように、２値化部３０が出力するデータの量が第１の値に達している場合、同じ画像信号に対する処理が繰り返される。そのため、その繰り返し処理が実行される時間の分だけ、Ｂｉｎバッファ３１に蓄積されていたバイナリデータの処理が進み、Ｂｉｎバッファ３１の空き容量が実質上増加する。その結果、Ｂｉｎバッファ３１の容量を小さくすることができる。
【特許文献１】特開２００４−１３５２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１により提案されている画像符号化装置６００では、監視信号が出力されると、直交変換部３や量子化部２２等が先に行なった処理と同様の処理を繰り返す。そのため、画像符号化装置６００は、画像信号をリアルタイムに処理する装置として適さない。また、直交変換部３や量子化部２２等が先に行なった処理と同じ処理を繰り返すと、監視信号が制限監視部６２から再度出力される可能性がある。それを防止するために、符号化制御部６３は、制限監視部６２によって監視されるデータの量が少なくなるように各構成部に設定すべきパラメータを変更して、直交変換部３や量子化部２２等に処理を繰り返させる。その結果、最終的に得られるデータに対する画像の品質（解像度等を含む）は低下する。
【０００９】
また、図９に示す技術も考えられている。すなわち、Ｂｉｎバッファ３１の容量を小さくするために、制限監視部６２が監視信号を出力すると、量子化部２２からの信号を、ＣＡＢＡＣ処理部６１に入力させずに、画像符号化装置７００の外部に出力させる技術も考えられている。しかしながらこの場合、量子化部２２からの信号をそのまま装置７００の外部に出力させることはできないので、量子化部２２からの信号を、外部に出力することができるように簡易に処理する信号処理部７５を設ける必要がある。また、ＣＡＢＡＣ処理部６１からの信号と、信号処理部７５からの信号とのいずれかを選択する選択部７６を設ける必要がある。そのため、装置規模が大きくなる。
【００１０】
本発明は、上記課題を考慮し、バイナリデータを蓄積する手段の容量が小さく、かつ、装置規模が小さく、更に、画像信号をリアルタイムに処理することができ、加えて、最終的に得られるデータに対する画像の品質の低下を抑えることができる画像符号化装置を提供することを目的とする。
【００１１】
また、本発明は、バイナリデータを蓄積する手段への入力データ量を減らすことにより、最終的に得られるデータの量を低減することができる画像符号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決し上記目的を達成するために、本発明の画像符号化装置は、画像信号を符号化する画像符号化手段と、前記画像符号化手段によって得られた符号値を２値化する２値化手段と、前記２値化手段によって得られたバイナリデータをエントロピ符号化するエントロピ符号化手段とを備え、前記画像符号化手段は、前記２値化手段が行なう処理の特性を考慮することなく符号化を行なった場合に前記２値化手段によって得られるバイナリデータの量よりも少ない量のバイナリデータが得られるように、前記特性を考慮して前記画像信号を符号化する。
【００１３】
このように、前記画像符号化手段は、前記２値化手段が行なう処理の特性を考慮して前記画像信号を符号化する。そのため、本発明の画像符号化装置では、装置規模を大きくすることなく、バイナリデータを蓄積するＢｉｎバッファの容量を小さくすることができる。また、本発明の画像符号化装置は、同一の画像信号を繰り返して処理しないので画像信号をリアルタイムに処理することができる。更に、前記画像符号化手段が上記特性を考慮することなく得られる符号値と僅かに異なる符号値が得られるように画像信号を処理することにより、本発明の画像符号化装置は、最終的に得られるデータに対する画像の品質の低下を抑えることができる。
【００１４】
本発明の画像符号化装置は、更に、前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、前記画像符号化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記特性を考慮して前記画像信号を符号化してもよい。
【００１５】
前記画像符号化手段は、前記画像信号を直交変換する直交変換手段と、前記直交変換手段によって得られた値を量子化する量子化手段とを有し、前記量子化手段は、前記直交変換手段によって得られた値そのものを量子化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られるように、前記直交変換手段によって得られた値からオフセット値を減算し、減算結果を量子化してもよい。
【００１６】
例えば、前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、前記量子化手段は、Ｇｏｌｏｍｂ符号化する際に用いるテーブルに基づいて、前記直交変換手段によって得られた値そのものを量子化した第１の符号値をＧｏｌｏｍｂ符号化することにより得られる第１のバイナリデータのビット数が、前記第１の符号値より１小さい第２の符号値をＧｏｌｏｍｂ符号化することにより得られる第２のバイナリデータのビット数よりも多く、前記第１の符号値が特異点である場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化する。
【００１７】
より具体的には、前記量子化手段は、前記第１の符号値が１５、１７、２１、２９、及び４５のいずれかである場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化してもよい。
【００１８】
また例えば、前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られるバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記第１の符号値から前記オフセット値を減算した第２の符号値を２値化することにより得られるバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、前記量子化手段は、前記直交変換手段によって得られた値から前記オフセット値を減算する。
【００１９】
また例えば、前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、前記量子化手段は、（ａ）前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られる第１のバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記第１の符号値から前記オフセット値である１を減算した第２の符号値を２値化することにより得られる第２のバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、前記第２の符号値を出力し、（ｂ）前記第１のＧｏｌｏｍｂ符号長と前記第２のＧｏｌｏｍｂ符号長とが等しい場合、前記第１の符号値を出力する。
【００２０】
より具体的には、前記量子化手段は、（ａ）前記第１の符号値が１５、１７、２１、２９、及び４５のいずれかである場合、前記第２の符号値を出力し、（ｂ）前記第１の符号値が１５、１７、２１、２９、及び４５のいずれでもない場合、前記第１の符号値を出力してもよい。
【００２１】
本発明の画像符号化装置は、更に、前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、前記量子化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記直交変換手段によって得られた値から前記オフセット値を減算し、減算結果を量子化してもよい。
【００２２】
その場合、前記量子化手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が前記第１の蓄積量を超えた後に前記第１の蓄積量以下の量である第２の蓄積量に達したことを検出した場合、前記オフセット値を減算することを中止して、前記直交変換手段によって得られた値そのものを量子化してもよい。
【００２３】
また例えば、前記画像符号化手段は、前記画像信号を直交変換する直交変換手段と、前記直交変換手段によって得られた値を量子化する量子化手段とを有し、前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、前記量子化手段は、（ａ）前記直交変換手段によって得られた値そのものを量子化した第１の符号値を２値化することにより得られるバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記直交変換手段によって得られた値にオフセット値を加算した結果を量子化した第２の符号値を２値化することにより得られるバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも短い場合、前記第１の符号値を出力し、（ｂ）前記第１のＧｏｌｏｍｂ符号長と前記第２のＧｏｌｏｍｂ符号長とが等しい場合、前記第２の符号値を出力する。
【００２４】
より具体的には、前記量子化手段は、（ａ）前記第１の符号値が１４、１６、２０、２８、及び４４のいずれかである場合、前記第１の符号値を出力し、（ｂ）前記第１の符号値が１４、１６、２０、２８、及び４４のいずれでもない場合、前記第２の符号値を出力してもよい。
【００２５】
前記画像符号化手段は、前記画像信号のフレーム間の動きベクトルを検出する動きベクトル検出手段を有し、前記動きベクトル検出手段は、複数の参照画像マクロブロックそれぞれに対する動きベクトルのうちで、最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られる動きベクトルを選択してもよい。
【００２６】
例えば、前記２値化手段は、Ｇｏｌｏｍｂ符号を用いて符号値を２値化し、（ａ）前記最小の評価値が得られる参照画像マクロブロックに対する第１の動きベクトルにおけるｘ座標の絶対値を２値化することにより得られる第１のバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、前記ｘ座標の絶対値より所定の値小さい第２の値を２値化することにより得られる第２のバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、及び／又は、（ｂ）前記第１の動きベクトルにおけるｙ座標の絶対値を２値化することにより得られる第３のバイナリデータの量である第３のＧｏｌｏｍｂ符号長が、前記ｙ座標の絶対値より所定の値小さい第４の値を２値化することにより得られる第４のバイナリデータの量である第４のＧｏｌｏｍｂ符号長よりも長い場合、前記動きベクトル検出手段は、前記第２の値及び／又は前記第４の値を有する第２の動きベクトルを選択する。
【００２７】
より具体的には、前記動きベクトル検出手段は、前記第１の動きベクトルにおけるｘ座標の絶対値又はｙ座標の絶対値が９、１７、及び３３のいずれかである場合、前記第２の動きベクトルを選択し、（ｂ）前記ｘ座標の絶対値又は前記ｙ座標の絶対値が９、１７、及び３３のいずれでもない場合、前記第１の動きベクトルを選択してもよい。
【００２８】
例えば、前記評価値は、符号化対象画像マクロブロックと、参照画像マクロブロックとの差分絶対値の和である。
【００２９】
本発明の画像符号化装置は、更に、前記２値化手段によって得られたバイナリデータを蓄積するための蓄積手段と、前記蓄積手段によって蓄積されていてエントロピ符号化されていないバイナリデータの量を監視する監視手段とを備え、前記動きベクトル検出手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が第１の蓄積量に達したことを検出した場合、前記最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが前記２値化手段によって得られる動きベクトルを選択してもよい。
【００３０】
その場合、前記動きベクトル検出手段は、前記監視手段が前記エントロピ符号化されていないバイナリデータの量が前記第１の蓄積量を超えた後に前記第１の蓄積量以下の量である第２の蓄積量に達したことを検出した場合、前記最小の評価値が得られる参照画像マクロブロックに対する動きベクトルを選択してもよい。
【００３１】
本発明は、本発明の画像符号化装置の特徴的な構成手段をステップとする画像符号化方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したり、上記特徴的な構成手段を含む集積回路として実現することもできる。上記のプログラムは、ＣＤ−ＲＯＭ等の記録媒体や通信ネットワーク等の伝送媒体を介して流通させることもできる。
【発明の効果】
【００３２】
本発明は、バイナリデータを蓄積するＢｉｎバッファの容量が小さく、かつ、装置規模が小さく、更に、画像信号をリアルタイムに処理することができ、加えて、最終的に得られるデータに対する画像の品質の低下を抑えることができる画像符号化装置を提供することができる。
【００３３】
また、本発明は、バイナリデータを蓄積する手段への入力データ量を減らすことにより、最終的に得られるデータの量を低減することができる画像符号化装置を提供することができる。
【００３４】
すなわち、本発明の画像符号化装置によれば、エントロピ符号化を行なうＣＡＢＡＣ処理部が実装されていても、大きな符号量制御回路を追加することなく、バイナリデータを蓄積するＢｉｎバッファの容量を小さくすることができ、更に、最終的に得られるデータに対する画質の劣化を抑えることができる。
【発明を実施するための最良の形態】
【００３５】
以下に、本発明を実施するための最良の形態について、図面を参照して説明する。
先ず、実施の形態の画像符号化装置１００の構成を、図１を用いて説明する。
【００３６】
図１は、実施の形態の画像符号化装置１００のブロック図である。画像符号化装置１００は、動画像信号を符号化する装置であって、図１に示すように、入力端子１と、減算器２と、直交変換部３と、適応量子化部４と、逆量子化部５と、逆直交変換部６と、加算器７と、デブロッキングフィルタ８と、フレームメモリ９と、動き補償部１０と、重み付き予測部１１と、面内予測部１２と、選択部１３と、動きベクトル検出部１４と、符号化制御部１５と、ＣＡＢＡＣ処理部１６と、出力端子１７とで構成されている。
【００３７】
入力端子１は動画像信号が入力される端子である。減算器２は入力端子１からの信号から選択部１３からの信号を減じることで予測残差信号を生成する。直交変換部３は減算器２からの予測残差信号を直交変換し変換係数を出力する。適応量子化部４は直交変換部３からの変換係数等を量子化する。なお、適応量子化部４の詳細な構成は後述する。逆量子化部５は適応量子化部４からの信号を逆量子化する。逆直交変換部６は逆量子化部５からの信号を逆直交変換する。
【００３８】
加算器７は逆直交変換部６からの信号と選択部１３からの信号とを加算し復号画像を形成する。デブロッキングフィルタ８は加算器７からの復号画像をデブロッキングフィルタ処理する。フレームメモリ９はデブロッキングフィルタ８によって得られた画像信号を蓄積する。動き補償部１０は、動きベクトル検出部１４によって得られた動きベクトルを利用して、フレームメモリ９に蓄積されている画像信号に対して動き補償を行なう。重み付き予測部１１は、動き補償部１０によって得られた画像に対して重み付き予測を行なう。
【００３９】
面内予測部１２は入力端子１からの信号に対して面内予測を行なう。選択部１３は、重み付き予測部１１からの信号と、面内予測部１２からの信号との一方を選択する。動きベクトル検出部１４は、フレームメモリ９に蓄積されている画像に対する符号化対象画像の動きベクトルを検出する。符号化制御部１５は入力端子１からの信号に基づいてその信号に対する符号化を制御する。ＣＡＢＡＣ処理部１６は、ＣＡＢＡＣ処理（コンテキスト適応２値算術符号化処理，エントロピ符号化処理）を行なう。なお、ＣＡＢＡＣ処理部１６の詳細な構成は後述する。出力端子１７はＣＡＢＡＣ処理部１６によって処理された信号を画像符号化装置１００の外部に出力するための端子である。
【００４０】
適応量子化部４は、減算部２０と、オフセット部２１と、量子化部２２とで構成されている。減算部２０は、直交変換部３からの信号から、オフセット部２１からのオフセット値を減算する。オフセット部２１は、ＣＡＢＡＣ処理部１６に設けられている監視部３４から第１の監視信号を受信した場合、直交変換部３からの信号に基づいてオフセット値を生成し、そのオフセット値を減算部２０に出力する。オフセット部２１は、直交変換部３からの信号そのものを量子化した後に後述する２値化部３０が２値化することによって得られるバイナリデータの長さ（第１のＧｏｌｏｍｂ符号長）より短いバイナリデータが２値化部３０によって得られるように、オフセット値を生成する。量子化部２２は減算部２０からの信号を量子化する。
【００４１】
ＣＡＢＡＣ処理部１６は、２値化部３０と、Ｂｉｎバッファ３１と、コンテキストモデリング部３２と、２値算術符号化部３３と、監視部３４とで構成されている。２値化部３０は、適応量子化部４及び動きベクトル検出部１４からの信号を、ｅｘｐ−Ｇｏｌｏｍｂを用いて２値化する。Ｂｉｎバッファ３１は２値化部３０によって得られたバイナリデータを蓄積する。コンテキストモデリング部３２は、適応量子化部４及び動きベクトル検出部１４からの信号に基づいて、コンテキストモデリングを行なう。２値算術符号化部３３は、コンテキストモデリング部３２によって得られた結果に基づいて、Ｂｉｎバッファ３１に蓄積されているバイナリデータを算術符号化する。監視部３４は、Ｂｉｎバッファ３１の使用状況を監視し、Ｂｉｎバッファ３１によって蓄積されていてエントロピ符号化されていないバイナリデータの量が第１の蓄積量Ｖ１（図４参照）に達したことを検出した場合、第１の監視信号を、適応量子化部４のオフセット部２１と、動きベクトル検出部１４とに出力する。
【００４２】
なお、本実施の形態では、本発明の画像符号化装置の、画像符号化手段の一例として直交変換部３、適応量子化部４、及び動きベクトル検出部１４を用い、２値化手段の一例として２値化部３０を用い、エントロピ符号化手段の一例としてコンテキストモデリング部３２及び２値算術符号化部３３を用いる。
【００４３】
次に、２値化部３０が適応量子化部４からの信号（量子化された符号値）に対して行なう２値化処理について、図２を用いて説明する。図２は、２値化部３０が２値化処理を行なう前の量子化値である「元の符号値」と、２値化部３０が「元の符号値」に対して２値化処理を行なった後の符号値である「２値化後の符号値」との関係を示す図である。
【００４４】
図２に示すように、２値化部３０は、元の符号値ｘが「１３」以下である場合、その値ｘをＴｒｕｎｃａｔｅｄ  Ｕｎａｒｙ（ＴＵ）で２値化する（ｃＭａｘ＝１４）。２値化部３０は、元の符号値ｘが「１４」以上である場合、値（ｘ−１４）をｅｘｐ＿Ｇｏｌｏｍｂで２値化し、その値を“１１１１１１１１１１１１１１”（１４ビット）の後ろに付加して元の符号値ｘのバイナリデータを得る。バイナリデータは、元の符号値ｘが「１４」であるとき「１５ビット」、元の符号値ｘが「１５」であるとき「１７ビット」、元の符号値ｘが「１７」であるとき「１９ビット」というように、元の符号値ｘが大きくなるにつれてビット数が多くなる。
【００４５】
次に、２値化部３０が動きベクトル検出部１４からの信号（符号化された動きベクトルの値）に対して行なう２値化処理について、図３を用いて説明する。図３は、２値化部３０が２値化処理を行なう前の動きベクトルの値である「元の符号値」と、２値化部３０が「元の符号値」に対して２値化処理を行なった後の符号値である「２値化後の符号値」との関係を示す図である。
【００４６】
図３に示すように、２値化部３０は、元の符号値ｘの絶対値が「８」以下である場合、元の符号値ｘをＴＵで２値化する。２値化部３０は、元の符号値ｘの絶対値が「９」以上である場合、元の符号値ｘが正であるのか負であるのかを考慮して、元の符号値ｘの絶対値から値「９」を減じた値をｅｘｐ＿Ｇｏｌｏｍｂで２値化し、その値を“１１１１１１１１１”（９ビット）の後ろに付加して元の符号値ｘのバイナリデータを得る。バイナリデータは、元の符号値ｘが「９」であるとき「１４ビット」、元の符号値ｘが「１７」であるとき「１６ビット」、元の符号値ｘが「３３」であるとき「１８ビット」というように、元の符号値ｘの絶対値が大きくなるにつれてビット数が多くなる。
【００４７】
本実施の形態の画像符号化装置１００では、監視部３４は、Ｂｉｎバッファ３１の使用状況を監視し、Ｂｉｎバッファ３１においてオーバーフローの発生が懸念されるような空き容量になった場合、すなわち、図４に示すように、Ｂｉｎバッファ３１によって蓄積されていてエントロピ符号化されていないバイナリデータの量が第１の蓄積量Ｖ１に達したことを検出した場合、第１の監視信号を、適応量子化部４のオフセット部２１と、動きベクトル検出部１４とに出力する。
【００４８】
（適応量子化部４の動作）
適応量子化部４のオフセット部２１は、第１の監視信号を受信すると、直交変換部３からの信号そのものを量子化した後に２値化部３０が２値化することによって得られるバイナリデータの長さより短いバイナリデータが２値化部３０によって得られるように、オフセット値を生成する。
【００４９】
例えば、直交変換部３からの変換係数絶対値を量子化した値（元の符号値）が「１７」である場合、図２に示すように、２値化部３０によって得られるバイナリデータの符号長は「１９ビット」である。それに対し、元の符号値が「１７」より「１」小さい値である「１６」である場合、図２に示すように、２値化部３０によって得られるバイナリデータの符号長は「１７ビット」である。すなわち、元の符号値が「１７」である場合と「１６」である場合とでは、バイナリデータの符号長は２ビット異なる。
【００５０】
一般に、直交変換部３から出力された変換係数絶対値を量子化した後の値が「１」程度変化しても画質に与える影響は軽微である。そこで、オフセット部２１は、第１の監視信号を受信すると、直交変換部３からの変換係数絶対値を量子化した値が「１７」であると予測することができる場合、量子化後に得られる値が「１６」となるようなオフセット値を生成する。
【００５１】
減算部２０は、直交変換部３からの信号から、オフセット部２１によって生成されたオフセット値を減算し、量子化部２２は減算部２０からの信号を量子化して値「１６」を得る。２値化部３０は、値「１６」を２値化して「１７ビット」のバイナリデータを生成し、それをＢｉｎバッファ３１に蓄積する。
【００５２】
直交変換部３からの信号そのものを量子化すると値「１７」が得られ、値「１７」を２値化すると「１９ビット」のバイナリデータが生成される。しかしながら本実施の形態では、オフセット部２１は、第１の監視信号を受信すると、直交変換部３からの信号そのものを量子化した値が「１７」であると予測することができる場合、量子化後に得られる値が「１６」となるようなオフセット値を生成する。値「１７」を２値化することにより得られるバイナリデータの長さが「１９ビット」であるのに対し、値「１６」を２値化することにより得られるバイナリデータの長さは「１７ビット」である。そのため、Ｂｉｎバッファ３１によって蓄積されるデータが２ビット減る。したがって、Ｂｉｎバッファ３１の容量を小さくすることができる。
【００５３】
このように、オフセット部２１は、第１の監視信号を受信すると、２値化部３０が２値化することによって得られるバイナリデータの量が少なくなるように、オフセット値を生成する。上述したように、変換係数絶対値を量子化した後の値が「１」程度変化しても画質への影響は軽微である。そこで、直交変換部３からの信号そのものを量子化することにより得られる値である第１の値より「１」小さい値である第２の値を２値化することにより得られる第２のバイナリデータの符号長が、第１の値を２値化することにより得られる第１のバイナリデータの符号長より短い場合、第２の値が量子化部２２によって得られるように、オフセット部２１はオフセット値を生成する。
【００５４】
上記以外の例として、例えば、図２に示すように、（１）直交変換部３からの信号そのものを量子化することにより得られる値（第１の値）が「１５」（２値化後のバイナリデータのビット数「１７」）である場合、オフセット部２１は、値「１４」（第２の値，２値化後のバイナリデータのビット数「１５」）が量子化部２２によって得られるように、オフセット値を生成する。また例えば、（２）第１の値が「２１」（２値化後のバイナリデータのビット数「２１」）である場合、オフセット部２１は、第２の値「２０」（２値化後のバイナリデータのビット数「１９」）が量子化部２２によって得られるように、オフセット値を生成する。また例えば、（３）第１の値が「２９」（２値化後のバイナリデータのビット数「２３」）である場合、オフセット部２１は、第２の値「２８」（２値化後のバイナリデータのビット数「２１」）が量子化部２２によって得られるように、オフセット値を生成する。更に例えば、（４）第１の値が「４５」（２値化後のバイナリデータのビット数「２５」）である場合、オフセット部２１は、第２の値「４４」（２値化後のバイナリデータのビット数「２３」）が量子化部２２によって得られるように、オフセット値を生成する。
【００５５】
ここで、例えば図２の「元の符号値」と「２値化後の符号値」との関係に基づいて、直交変換部３からの信号そのものを量子化した値（第１の値）をＧｏｌｏｍｂ符号化することにより得られる第２のバイナリデータのビット数が、第１の値より「１」小さい第２の値をＧｏｌｏｍｂ符号化することにより得られる第２のバイナリデータのビット数よりも多い場合、第１の値は「特異点」であると定義する。図２より、「特異点」は、「１５」、「１７」、「２１」、「２９」、及び「４５」等である。したがって、第１の値が「特異点」である場合、オフセット部２１は、第１の値より「１」小さい第２の値が量子化部２２によって得られるように、オフセット値を生成する。
【００５６】
これにより、本実施の形態の画像符号化装置１００は、Ｂｉｎバッファ３１の容量を小さくするための処理部を設けることなく、Ｂｉｎバッファ３１の容量を小さくすることができ、更にリアルタイムに画像信号を処理することができ、加えて、最終的に得られるデータに対する画像の品質（解像度等を含む）の低下を抑えることができる。
【００５７】
なお、オフセット部２１は、量子化後の値が「２」以上変化するように、オフセット値を生成してもよい。例えば、直交変換部３からの信号そのものを量子化することにより得られる値（第１の値）が「１９」（２値化後のバイナリデータのビット数「１９」）である場合、オフセット部２１は、第１の値より「３」小さい値である値「１６」（第２の値，２値化後のバイナリデータのビット数「１７」）が量子化部２２によって得られるように、オフセット値を生成してもよい。このように、オフセット部２１が、量子化後の値が「２」以上変化するようにオフセット値を決定する場合も、２値化部３０が２値化することによって得られるバイナリデータの量が少なくなる。そのため、Ｂｉｎバッファ３１の容量を小さくすることができる。また、リアルタイムに画像信号を処理することができる。しかしながら、最終的に得られるデータに対する画像の品質（解像度等を含む）は低下する。画質の低下を問題にしない場合、オフセット部２１は、量子化後の値が「２」以上変化するように、オフセット値を生成してもよい。
【００５８】
ところで、監視部３４は、第１の監視信号を出力した後に、上述した適応量子化部４の動作及び後述する動きベクトル検出部１４の動作によって、Ｂｉｎバッファ３１によって蓄積されていてエントロピ符号化されていないバイナリデータの量が第１の蓄積量Ｖ１より少ない第２の蓄積量Ｖ２に達したことを検出した場合（図４参照）、第２の監視信号を、適応量子化部４のオフセット部２１と、動きベクトル検出部１４とに出力する。
【００５９】
この場合、Ｂｉｎバッファ３１の空き容量が十分あるとみなされて、適応量子化部４では、オフセット部２１はオフセット値を生成することを中止し、量子化部２２は直交変換部３からの信号そのものを量子化する。
【００６０】
なお、第２の蓄積量Ｖ２は第１の蓄積量Ｖ１と等しくてもよい。
また、適応量子化部４は図５に示すように構成されていてもよい。オフセット部２１ａにおいて、レベル判定部２１１は、例えば図２の「元の符号値」と「２値化後の符号値」との関係を示す情報を保持しており、直交変換部３からの値そのものを量子化することにより得られる値（第１の値）が「特異点」であるか否かを判定する。第１の値が「特異点」であると判定された場合、オフセット制御部２１２は、監視部３４から第１の監視信号を受信すると、２値化部３０が２値化することによって得られるバイナリデータの量を少なくさせるために、直交変換部３からの値から「１」減算させる制御信号をセレクタ２１３ａに与える。セレクタ２１３ａは、オフセット制御部２１２から制御信号が与えられると、「１」を出力する。制御信号が与えられなければ、セレクタ２１３ａは「０」を出力する。減算部２０は、直交変換部３からの値から、オフセット部２１ａ（セレクタ２１３ａ）からのオフセット値を減算する。つまり、減算部２０は、オフセット制御部２１２が制御信号をセレクタ２１３ａに与えた場合のみ、直交変換部３からの値からオフセット値「１」を減算する。
【００６１】
すなわち、適応量子化部４は、（ａ）直交変換部３によって得られた値そのものを量子化した第１の符号値を２値化することにより得られる第１のバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、第１の符号値からオフセット値である「１」を減算した第２の符号値を２値化することにより得られる第２のバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも長い場合、第２の符号値を出力する。（ｂ）第１のＧｏｌｏｍｂ符号長と第２のＧｏｌｏｍｂ符号長とが等しい場合、適応量子化部４は、第１の符号値を出力する。この場合も、Ｂｉｎバッファ３１の容量を小さくするための処理部を設けることなく、Ｂｉｎバッファ３１の容量を小さくすることができ、更に、本実施の形態の画像符号化装置１００はリアルタイムに画像信号を処理することができ、加えて、最終的に得られるデータに対する画像の品質（解像度等を含む）の低下を抑えることができる。
【００６２】
また、適応量子化部４は図６に示すように構成されていてもよい。オフセット部２１ｂにおいて、レベル判定部２１１は、例えば図２の「元の符号値」と「２値化後の符号値」との関係を示す情報を保持しており、直交変換部３からの値そのものを量子化することにより得られる値（第１の値）が特異点より「１」小さい値（「特異点−１」）であるか否かを判定する。第１の値が「特異点−１」であると判定された場合、オフセット制御部２１２は、監視部３４から第１の監視信号を受信すると、２値化部３０が２値化することによって得られるバイナリデータの量を少なくさせるために、直交変換部３からの信号に「０」を加算させる制御信号をセレクタ２１３ｂに与える。セレクタ２１３ｂは、オフセット制御部２１２から制御信号が与えられると、「０」を出力する。制御信号が与えられなければ、セレクタ２１３ａは「０．５」を出力する。加算部２００は、直交変換部３からの信号にオフセット部２１ｂ（セレクタ２１３ｂ）からのオフセット値を加算する。つまり、加算部２００は、通常は直交変換部３からの値に「０．５」を加算し、オフセット制御部２１２が制御信号をセレクタ２１３ｂに与えた場合、「０．５」を加算する処理を中止する。量子化部２２は、量子化することによって得られた値を四捨五入する。
【００６３】
すなわち、適応量子化部４は、（ａ）直交変換部３によって得られた値そのものを量子化した第１の符号値を２値化することにより得られるバイナリデータの量である第１のＧｏｌｏｍｂ符号長が、直交変換部３によって得られた値にオフセット値を加算した結果を量子化することにより得られる第２の符号値を２値化することにより得られるバイナリデータの量である第２のＧｏｌｏｍｂ符号長よりも短い場合、第１の符号値を出力する。（ｂ）第１のＧｏｌｏｍｂ符号長と第２のＧｏｌｏｍｂ符号長とが等しい場合、適応量子化部４は第２の符号値を出力する。この場合も、Ｂｉｎバッファ３１の容量を小さくするための処理部を設けることなく、Ｂｉｎバッファ３１の容量を小さくすることができ、更に、本実施の形態の画像符号化装置１００はリアルタイムに画像信号を処理することができ、加えて、最終的に得られるデータに対する画像の品質（解像度等を含む）の低下を抑えることができる。
【００６４】
（動きベクトル検出部１４の動作）
上述したように、Ｂｉｎバッファ３１においてオーバーフローの発生が懸念されるような空き容量になった場合、すなわち、図４に示すように、Ｂｉｎバッファ３１によって蓄積されていてエントロピ符号化されていないバイナリデータの量が第１の蓄積量Ｖ１に達したことを検出した場合、監視部３４は、第１の監視信号を、適応量子化部４のオフセット部２１と、動きベクトル検出部１４とに出力する。
【００６５】
以下の動きベクトル検出部１４の動作の説明においては、動きベクトルの評価値として差分絶対値の和（ＳＡＤ）を用いる。
【００６６】
動きベクトル検出部１４は、第１の監視信号を受信すると、符号化対象であるマクロブロックに対して差分絶対値の和（ＳＡＤ）が最も小さい参照画像マクロブロック（第１の参照画像ＭＢ）とそのＳＡＤ値より大きいＳＡＤ値を有する複数の参照画像マクロブロックそれぞれに対する動きベクトルのうちで、差分絶対値の和が最も小さい参照画像マクロブロック（第１の参照画像ＭＢ）に対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量を基準としたときに、ＳＡＤ値がやや大きくともより少ない量のバイナリデータが２値化部３０によって得られる動きベクトルを選択する。
【００６７】
例えば、図７に示すように、差分絶対値の和（ＳＡＤ）が「１４」で最も小さい参照画像マクロブロック（第１の参照画像ＭＢ）２０２と、第１の参照画像ＭＢ２０２のＳＡＤ「１４」よりも「１」大きいＳＡＤ「１５」を有する参照画像ＭＢである第２の参照画像ＭＢ２０１及び第３の参照画像ＭＢ２０３とが存在する場合を想定する。また、符号化対象画像ＭＢ２００の、第１の参照画像ＭＢ２０２に対する動きベクトル２０２ｍが（１７，ｙ）で表され、第２の参照画像ＭＢ２０１に対する動きベクトル２０１ｍが（１６，ｙ）で表され、第３の参照画像ＭＢ２０３に対する動きベクトル２０３ｍが（１８，ｙ）で表される、場合を想定する。なお、第１の参照画像ＭＢ２０２、第２の参照画像ＭＢ２０１及び第３の参照画像ＭＢ２０３は、参照される画像全体のなかの一部を示すマクロブロックであり、動きベクトルを検出する際の参照画像ＭＢの候補である。
【００６８】
図７に示す三つの参照画像ＭＢについては、符号化対象画像ＭＢ２００の各参照画像ＭＢに対する各動きベクトルのｙ座標値は全て等しい。したがって、各動きベクトルのｘ座標値に着目する。符号化対象画像ＭＢ２００の第１の参照画像ＭＢ２０２に対する動きベクトル２０２ｍのｘ座標値は「１７」であるので、図３に示すように、それに基づいて２値化部３０によって得られるバイナリデータの符号長は「１６ビット」である。また、符号化対象画像ＭＢ２００の第２の参照画像ＭＢ２０１に対する動きベクトル２０１ｍのｘ座標値は「１６」であるので、図３に示すように、それに基づいて２値化部３０によって得られるバイナリデータの符号長は「１４ビット」である。更に、符号化対象画像ＭＢ２００の第３の参照画像ＭＢ２０３に対する動きベクトル２０３ｍのｘ座標値は「１８」であるので、図３に示すように、それに基づいて２値化部３０によって得られるバイナリデータの符号長は「１６ビット」である。
【００６９】
ＳＡＤが「１」程度変化しても、画質に与える影響は軽微である。そこで、動きベクトル検出部１４は、第１の監視信号を受信すると、第２の参照画像ＭＢ２０１に対する動きベクトル２０１ｍ、すなわち、ｘ座標値についての２値化部３０によって得られるバイナリデータの符号長が最も短い「１４ビット」である動きベクトル２０１ｍ（１６，ｙ）を選択する。
【００７０】
２値化部３０は、動きベクトルのｘ座標値について、ｘ座標値「１６」を２値化して「１４ビット」のバイナリデータを生成し、それをＢｉｎバッファ３１に蓄積する。
【００７１】
ＳＡＤが「１４」で最も小さい参照画像ＭＢ（第１の参照画像ＭＢ）２０２に対する、符号化対象画像ＭＢ２００の動きベクトル２０２ｍのｘ座標値「１７」を２値化すると、「１６ビット」のバイナリデータが生成される。しかしながら本実施の形態では動きベクトル検出部１４は、第１の監視信号を受信すると、第２の参照画像ＭＢ２０１に対する動きベクトル２０１ｍ（１５，ｙ）を選択する。この場合、上述したように、ｘ座標値についての２値化部３０によって得られるバイナリデータの符号長は「１４ビット」である。そのため、Ｂｉｎバッファ３１によって蓄積されるデータが２ビット減る。したがって、Ｂｉｎバッファ３１の容量を小さくすることができる。
【００７２】
このように、動きベクトル検出部１４は、第１の監視信号を受信すると、差分絶対値の和（ＳＡＤ）が最も小さい参照画像ＭＢ（第１の参照画像ＭＢ）のＳＡＤ値より大きいＳＡＤ値を有する複数の参照画像ＭＢそれぞれに対する動きベクトルのうちで、ＳＡＤ値が最も小さい参照画像ＭＢ（第１の参照画像ＭＢ）に対する動きベクトルを符号化し２値化することにより得られるバイナリデータの量より少ない量のバイナリデータが２値化部３０によって得られる動きベクトルを選択する。
【００７３】
例えば、ＳＡＤ値が最も小さい参照画像ＭＢ（第１の参照画像ＭＢ）に対する動きベクトルのｘ座標値の絶対値が「９」であり、第１の参照画像ＭＢのＳＡＤ値より「１」大きいＳＡＤ値を有する参照画像ＭＢ（第２の参照画像ＭＢ）に対する動きベクトルのｘ座標値の絶対値が「８」である場合を想定する。この場合、図３より、第１の参照画像ＭＢに対する動きベクトルのｘ座標値の絶対値「９」を２値化（Ｇｏｌｏｍｂ符号化）することにより得られる第１のバイナリデータの量は「１４ビット」であり、第２の参照画像ＭＢに対する動きベクトルのｘ座標値の絶対値「８」を２値化（Ｇｏｌｏｍｂ符号化）することにより得られる第２のバイナリデータの量は「１０ビット」である。したがって、動きベクトル検出部１４は、２値化後に少ない量のバイナリデータが得られる第２の参照画像ＭＢに対する動きベクトルを選択する。
【００７４】
上記以外の例として、例えば、ＳＡＤ値が最も小さい参照画像ＭＢ（第１の参照画像ＭＢ）に対する動きベクトルのｘ座標値の絶対値が「３３」であり、第１の参照画像ＭＢのＳＡＤ値より「１」大きいＳＡＤ値を有する参照画像ＭＢ（第２の参照画像ＭＢ）に対する動きベクトルのｘ座標値の絶対値が「３２」である場合を想定する。この場合、図３より、第１の参照画像ＭＢに対する動きベクトルのｘ座標値の絶対値「３３」を２値化（Ｇｏｌｏｍｂ符号化）することにより得られる第１のバイナリデータの量は「１８ビット」であり、第２の参照画像ＭＢに対する動きベクトルのｘ座標値の絶対値「３２」を２値化（Ｇｏｌｏｍｂ符号化）することにより得られる第２のバイナリデータの量は「１６ビット」である。したがって、動きベクトル検出部１４は、２値化後に少ない量のバイナリデータが得られる第２の参照画像ＭＢに対する動きベクトルを選択する。
【００７５】
上述したように、ＳＡＤ値が「１」程度変化しても、画質に与える影響は軽微である。したがって、ＳＡＤ値が最も小さい第１の参照画像ＭＢのＳＡＤ値より「１」大きいＳＡＤ値を有する複数の参照画像ＭＢそれぞれに対する動きベクトルの何れかを符号化し２値化することにより得られるバイナリデータの符号長が、第１の参照画像ＭＢに対する動きベクトルを符号化し２値化することにより得られるバイナリデータの符号長より短い場合、動きベクトル検出部１４は、バイナリデータの符号長が最も短い動きベクトルを選択する。
【００７６】
これにより、本実施の形態の画像符号化装置１００は、Ｂｉｎバッファ３１の容量を小さくするための処理部を設けることなく、Ｂｉｎバッファ３１の容量を小さくすることができ、更にリアルタイムに画像信号を処理することができ、加えて、最終的に得られるデータに対する画像の品質（解像度等を含む）の低下を抑えることができる。
【００７７】
なお、上記の記載では説明の簡単化のため、各参照画像に対する動きベクトルのｘ座標値に着目して、動きベクトル検出部１４が選択すべき動きベクトルについて説明した。ｘ座標値に着目する場合と同様に、ｙ座標値に着目して、動きベクトル検出部１４は動きベクトルを選択してもよい。
【００７８】
また、動きベクトル検出部１４は、最も小さいＳＡＤ値から「２」以上大きいＳＡＤ値が得られる参照画像ＭＢに対する動きベクトルを選択してもよい。しかしながらこの場合、最終的に得られるデータに対する画像の品質は低下する。
【００７９】
ところで、監視部３４は、第１の監視信号を出力した後に、上述した適応量子化部４及び動きベクトル検出部１４の動作によって、Ｂｉｎバッファ３１によって蓄積されていて処理されていないバイナリデータの量が第１の蓄積量Ｖ１より少ない第２の蓄積量Ｖ２に達したことを検出した場合、第２の監視信号を、適応量子化部４のオフセット部２１と、動きベクトル検出部１４とに出力する。
【００８０】
この場合、Ｂｉｎバッファ３１の空き容量が十分であるとみなされて、動きベクトル検出部１４は、符号化対象画像に対する差分絶対値の和が最も小さい参照画像マクロブロックに対する動きベクトルを選択する。
【００８１】
なお、第２の蓄積量Ｖ２は第１の蓄積量Ｖ１と等しくてもよい。
上述したように、本実施の形態の画像符号化装置１００は、Ｂｉｎバッファ３１によって蓄積されていてエントロピ符号化されていないバイナリデータの量が第１の蓄積量Ｖ１に達してオーバーフローの発生が懸念される場合、適応量子化部４及び動きベクトル検出部１４により、２値化部３０によって得られるバイナリデータの符号長を減少させる。これにより、Ｂｉｎバッファ３１の容量を小さくするための処理部を設けることなく、すなわち画像符号化装置１００の規模を大きくすることなく、Ｂｉｎバッファ３１の容量を小さくすることができ、更にリアルタイムに画像信号を処理することができ、加えて、最終的に得られるデータに対する画像の品質（解像度等を含む）の低下を抑えることができる。
【００８２】
なお、上述した実施の形態では、動きベクトルの評価値として差分絶対値の和（ＳＡＤ）を用いた。しかしながら、動きベクトルの評価値として、平均二乗誤差（ＭＳＥ）や平均絶対値誤差（ＭＡＥ）等を用いてもよい。
【００８３】
また、Ｂｉｎバッファ３１においてオーバーフローの発生が懸念される場合、適応量子化部４及び動きベクトル検出部１４の一方のみが、２値化部３０によって得られるバイナリデータの符号長を減少させる上記動作を行なってもよい。
【００８４】
また、Ｂｉｎバッファ３１においてオーバーフローの発生が懸念される場合以外であっても、適応量子化部４及び動きベクトル検出部１４の一方又は双方は、２値化部３０によって得られるバイナリデータの符号長を減少させる上記動作を行なってもよい。
【産業上の利用可能性】
【００８５】
本発明の画像符号化装置は、デジタルビデオカメラに実装される装置等として有用であり、特に、半導体メモリや光ディスク等の記録容量が限られている記録媒体に高圧縮率の符号化を行なったＡＶデータを記録するデジタルビデオカメラに実装される装置に適している。
【図面の簡単な説明】
【００８６】
【図１】実施の形態の画像符号化装置１００のブロック図
【図２】２値化部３０が２値化処理を行なう前の量子化値である「元の符号値」と、２値化部３０が「元の符号値」に対して２値化処理を行なった後の符号値である「２値化後の符号値」との関係を示す図
【図３】２値化部３０が２値化処理を行なう前の動きベクトルの値である「元の符号値」と、２値化部３０が「元の符号値」に対して２値化処理を行なった後の符号値である「２値化後の符号値」との関係を示す図
【図４】適応量子化部４及び動きベクトル検出部１４が、２値化部３０によって得られるバイナリデータの符号長を減少させる動作を行なうタイミングを示す図
【図５】適応量子化部４の構成例を示す第１図
【図６】適応量子化部４の構成例を示す第２図
【図７】複数の参照画像と、各参照画像に対する動きベクトルとを示す図
【図８】従来の画像符号化装置６００のブロック図
【図９】従来の画像符号化装置７００のブロック図
【符号の説明】
【００８７】
１  入力端子
２  減算器
３  直交変換部
４  適応量子化部
５  逆量子化部
６  逆直交変換部
７  加算器
８  デブロッキングフィルタ
９  フレームメモリ
１０  動き補償部
１１  重み付き予測部
１２  面内予測部
１３  選択部
１４  動きベクトル検出部
１５  符号化制御部
１６  ＣＡＢＡＣ処理部
１７  出力端子
２０  加算部
２１  オフセット部
２２  量子化部
３０  ２値化部
３１  Ｂｉｎバッファ
３２  コンテキストモデリング部
３３  ２値算術符号化部
３４  監視部
【図１】
2007020141.tif 000003
【図２】
2007020141.tif 000004
【図３】
2007020141.tif 000005
【図４】
2007020141.tif 000006
【図５】
2007020141.tif 000007
【図６】
2007020141.tif 000008
【図７】
2007020141.tif 000009
【図８】
2007020141.tif 000010
【図９】
2007020141.tif 000011