(57)【要約】      （修正有）【課題】表示品質の劣化の防止を実現する画像データ圧縮装置等を提供する。【解決手段】画像データを量子化する量子化部２０と、複数フレーム分の量子化データがバッファリングされるＦＩＦＯバッファ部３０と、書き込みと非同期でＦＩＦＯバッファ部３０から読み出した量子化データを符号化した符号化データを生成する符号化データ生成部４０と、量子化ステップを変化させて符号化データのデータサイズを制御するレートコントロール部５０とを含む。レートコントロール部５０は、１フレーム前の量子化データのサイズから該１フレーム前の符号化データの予測データサイズを求め、圧縮処理に割り当て可能な割り当て可能ビット数や残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除する。量子化パラメータ上限閾値を設定したときには、予測データサイズを用いて、量子化パラメータ上限閾値以下となるように前記量子化パラメータを求める。【選択図】図８
2005323168.tif 000002
【特許請求の範囲】
【請求項１】
画像データを圧縮するための画像データ圧縮装置であって、
画像データを、量子化パラメータに基づいて変化する量子化ステップで量子化する量子化部と、
前記量子化部によって量子化された複数フレーム分の量子化データがバッファリングされるＦＩＦＯバッファ部と、
前記ＦＩＦＯバッファ部への書き込みと非同期で前記ＦＩＦＯバッファ部から量子化データを読み出し、該量子化データを符号化した符号化データを生成する符号化データ生成部と、
フレーム毎に、前記量子化部の量子化ステップを変化させて符号化データのデータサイズを制御するレートコントロール部とを含み、
前記レートコントロール部が、
現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、
所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、
前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、
前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求めることを特徴とする画像データ圧縮装置。
【請求項２】
請求項１において、
前記量子化部に供給される画像データの生成処理をスキップさせるスキップ処理を行うフレームスキップ部を含み、
前記フレームスキップ部が、
前記量子化パラメータ上限閾値が解除されたときには、前記スキップ処理を行うことを特徴とする画像データ圧縮装置。
【請求項３】
請求項２において、
前記フレームスキップ部が、
少なくとも１フレームの間隔を置いて２回以上、前記スキップ処理を行うことを特徴とする画像データ圧縮装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記レートコントロール部が、
前記ビットレートを維持するための最大エンコードサイズの範囲内で設定された複数種類の基準ビット数の各基準ビット数と前記割り当て可能ビット数とを比較し、
前記ビットレートを維持するためのエンコードフレーム数の範囲内で設定された複数種類の基準フレーム数の各基準フレーム数と前記残りフレーム数とを比較し、
各基準ビット数と前記割り当て可能ビット数との比較結果、及び各基準フレーム数と前記残りフレーム数との比較結果に基づいて、前記量子化パラメータ上限閾値を設定又は解除することを特徴とする画像データ圧縮装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記レートコントロール部が、
前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつその値が設定可能な量子化パラメータ下限閾値以上となるように前記量子化パラメータを求めることを特徴とする画像データ圧縮装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
その値が設定可能な量子化パラメータ下限閾値が設定されている場合には、
前記レートコントロール部が、
前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつ前記量子化パラメータ下限閾値以上となるように前記量子化パラメータを求め、
前記量子化パラメータ上限閾値を解除したとき、更に前記量子化パラメータ下限閾値を解除すると共に、前記量子化パラメータ上限閾値及び前記量子化パラメータ下限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求めることを特徴とする画像データ圧縮装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記ＦＩＦＯバッファ部のアクセス回数に対応したカウントデータが保持されるカウントレジスタを含み、
前記レートコントロール部が、
前記カウントデータから前記予測データサイズを求め、該予測データサイズに基づいて前記量子化ステップを変化させることを特徴とする画像データ圧縮装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記予測データサイズは、前記１フレーム前の量子化データのデータサイズを１次変換することにより求められるデータサイズであることを特徴とする画像データ圧縮装置。
【請求項９】
請求項８において、
前記一次変換は、
前記符号化データ生成部の符号化効率に対応した係数を用いた変換であることを特徴とする画像データ圧縮装置。
【請求項１０】
請求項９において、
前記一次変換は、更に、
前記符号化データに付加されるヘッダサイズ分の補正を行う変換であることを特徴とする画像データ圧縮装置。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
量子化ステップ値を記憶する量子化テーブルを含み、
前記レートコントロール部が、
前記量子化パラメータと前記量子化ステップ値との積を用いて量子化を行うことで、前記量子化ステップを変化させることを特徴とする画像データ圧縮装置。
【請求項１２】
請求項１乃至１１のいずれかにおいて、
離散コサイン変換された前記画像データを、フレーム単位で前記量子化部に供給する離散コサイン変換部を含むことを特徴とする画像データ圧縮装置。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
動画像の画像データをハードウェアにより処理するハードウェア処理部と、
前記ＦＩＦＯバッファ部から読み出された量子化データをソフトウェアにより符号化処理して符号化データを生成するソフトウェア処理部とを含み、
前記ハードウェア処理部が、
前記量子化部と前記ＦＩＦＯバッファ部とを含み、
前記ソフトウェア処理部が、
前記符号化データ生成部と前記レートコントロール部とを含むことを特徴とする画像データ圧縮装置。
【請求項１４】
請求項１３において、
前記ハードウェア処理部が、
現在のフレームの入力画像データと現在のフレームの１フレーム前の過去画像データとの差分を動きベクトル情報として出力し、
該動きベクトル情報に対して離散コサイン変換を行って前記画像データとして前記量子化部に出力し、
前記量子化データに対して前記量子化ステップで逆量子化して求められる逆量子化データに基づいて、前記過去画像データを生成することを特徴とする画像データ圧縮装置。
【請求項１５】
請求項１４において、
前記ソフトウェア処理部が、
前記ＦＩＦＯバッファ部から読み出された量子化データを可変長符号に符号化することを特徴とする画像データ圧縮装置。
【請求項１６】
請求項１５において、
前記ソフトウェア処理部が、
前記ＦＩＦＯバッファ部から読み出された量子化データを並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化することを特徴とする画像データ圧縮装置。
【請求項１７】
請求項１６において、
前記ソフトウェア処理部が、
前記ＦＩＦＯバッファ部から読み出された量子化データからＤＣ成分及びＡＣ成分とを求め、前記ＤＣ成分及びＡＣ成分を並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化することを特徴とする画像データ圧縮装置。
【請求項１８】
画像データに対して圧縮処理を行うエンコーダであって、
画像データを入力するためのインタフェース処理を行う画像入力インタフェースと、
前記画像データを、量子化パラメータに基づいて変化する量子化ステップで量子化する量子化部と、
前記量子化部によって量子化された複数フレーム分の量子化データがバッファリングされるＦＩＦＯバッファ部と、
前記ＦＩＦＯバッファ部への書き込みと非同期で、前記ＦＩＦＯバッファ部に記憶された量子化データを読み出すホストとのインタフェース処理を行うホストインタフェースとを含み、
前記ホストが、
現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、
所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、
前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、
前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求め、
前記量子化部が、
前記ホストによって求められた量子化パラメータに基づいて量子化ステップを変化させることを特徴とするエンコーダ。
【請求項１９】
請求項１８において、
前記画像データの生成処理をスキップするためのスキップフラグレジスタを含み、
前記ホストが、
前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、
前記量子化パラメータ上限閾値を解除したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値に関わらず前記量子化パラメータを求めると共に前記スキップフラグレジスタをセットし、
前記スキップフラグレジスタがセットされたとき、現在のフレームの画像データの生成処理がスキップされることを特徴とするエンコーダ。
【請求項２０】
請求項１９において、
前記ホストが、
前記量子化パラメータ上限閾値を解除したときには、少なくとも１フレームの間隔を置いて２回以上、前記スキップフラグレジスタをセットすることを特徴とするエンコーダ。
【請求項２１】
請求項１８乃至２０のいずれかにおいて、
その値が設定可能な量子化パラメータ下限閾値が設定されている場合には、
前記ホストが、
前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつ前記量子化パラメータ下限閾値以上となるように前記量子化パラメータを求め、
前記量子化パラメータ上限閾値を解除したとき、更に前記量子化パラメータ下限閾値を解除すると共に、前記量子化パラメータ上限閾値及び前記量子化パラメータ下限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求めることを特徴とするエンコーダ。
【請求項２２】
請求項１乃至１７のいずれか記載の画像データ圧縮装置を含むことを特徴とする電子機器。
【請求項２３】
請求項１８乃至２１のいずれか記載のエンコーダを含むことを特徴とする電子機器。
【請求項２４】
画像データを圧縮するための画像データ圧縮方法であって、
フレーム単位で画像データが量子化される量子化データであって、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、
所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、
前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求めると共に、前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求め、
前記量子化パラメータに基づいて変化する量子化ステップで、前記現在のフレームの画像データを量子化し、前記画像データを符号化した符号化データのデータサイズを変化させ、
フレームごとに求められる前記量子化パラメータがスキップ閾値よりも大きくなるフレームが、スキップ連続回数閾値として設定された回数以上連続したとき、前記画像データの生成処理をスキップさせることを特徴とする画像データ圧縮方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データ圧縮装置、エンコーダ、電子機器及び画像データ圧縮方法に関する。
【背景技術】
【０００２】
静止画像又は動画像の画像データや音声データといったマルチメディア情報に対する汎用的な符号化方式として、ＭＰＥＧ−４（Moving Picture Experts Group Phase 4）が規格化されている。近年の携帯機器は、このＭＰＥＧ−４の規格に準拠した画像データのエンコード及びデコードを実現し、動画像の再生やネットワークを介した送受信ができる。
【０００３】
ＭＰＥＧ−４の規格では、動画像の画像データをエンコードした圧縮データを、一定のレートで生成する必要がある。ところが、動画像の画像データを圧縮する場合、画像データの内容に依存して圧縮効率が大きく変動してしまう。非特許文献１には、この変動を所定の範囲に収めるように、発生する符号量を制御することで、一定のレートで圧縮データを生成するレートコントロール方式が述べられている。
【非特許文献１】MPEG-4 Visual Part(勧告書ISO/IEC 14496-2:1999(E) Annex L)
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＭＰＥＧ−４のエンコード（圧縮）処理を行う場合、一連の処理をすべてハードウェアにより実施することが考えられる。しかしながら、この場合、回路規模が大きくなり、ＩＣ（半導体装置、集積回路）化した場合の小型化を図ることが困難となる。特に携帯電話機等の携帯機器では、機器の小型化への要請に応えられない。
【０００５】
一方、エンコードの一連の処理を、すべてソフトウェアを用いて実施することが考えられる。しかしながら、この場合、ソフトウェアを処理するＣＰＵ（Central Processing Unit）の負荷が増大してしまう。そのため、ＣＰＵが他の処理に費やす時間に制約が生じ、このＣＰＵを搭載する機器のパフォーマンスを低下させてしまう。またＣＰＵの処理時間の増加を招き、消費電力が大きくなってしまう。特に携帯電話機等の携帯機器では、バッテリの消耗を抑えるための低消費電力化への要請に応えられない。
【０００６】
そこで、エンコードの一連の処理をハードウェアとソフトウェアとに分担させることが考えられる。しかしながら、本発明者の検討の結果、エンコードの一連の処理についてハードウェアとソフトウェアとの分担の最適化を図る場合、非特許文献１に開示されたレートコントロール方式を実施できないということが判明した。即ち処理速度が異なるハードウェアの処理とソフトウェアの処理とに分担させる場合、処理速度の差を吸収するバッファが必要となる。ところが、このバッファを設けると、上述のレートコントロール方式を実施できなくなり、画像データの圧縮処理についてハードウェアとソフトウェアとの分担の最適化と、一定レートでの圧縮データの生成とを両立できないという問題があることが判明した。
【０００７】
また圧縮データの生成レートをコントロールできたとしても、非特許文献１に述べられているレートコントロール方式では、該圧縮データを伸張した画像にはブロックノイズが表示されることが多く、表示品質を劣化させる場合があるという問題がある。
【０００８】
その一方で表示品質の劣化を防止するために圧縮データの量が増え、所望のビットレートを維持できない場合も生ずるという問題もある。例えば所望のビットレートを維持するためにエンコード処理をする場合、エンコード時間を与えるとエンコードの結果として生成できる最大エンコードサイズが定まる。このとき、エンコード処理の前半で多くのビット数を使ってしまうと、ビットレートオーバーを起こす可能性が高くなり、所望のビットレートを維持することが困難になる。
【０００９】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、画像データの圧縮処理についてハードウェアとソフトウェアとの分担の最適化を図り、表示品質の劣化を防止しながら、一定レートで確実に圧縮データの生成を行う画像データ圧縮装置、エンコーダ、電子機器及び画像データ圧縮方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために本発明は、画像データを圧縮するための画像データ圧縮装置であって、画像データを、量子化パラメータに基づいて変化する量子化ステップで量子化する量子化部と、前記量子化部によって量子化された複数フレーム分の量子化データがバッファリングされるＦＩＦＯバッファ部と、前記ＦＩＦＯバッファ部への書き込みと非同期で前記ＦＩＦＯバッファ部から量子化データを読み出し、該量子化データを符号化した符号化データを生成する符号化データ生成部と、フレーム毎に、前記量子化部の量子化ステップを変化させて符号化データのデータサイズを制御するレートコントロール部とを含み、前記レートコントロール部が、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求める画像データ圧縮装置に関係する。
【００１１】
本発明においては、量子化部と符号化データ生成部との間にＦＩＦＯバッファ部を設けている。こうすることで、量子化部と符号化データ生成部との処理を非同期で、かつ並列に動作させることができる。そして、符号化データ生成部による符号化データの生成のレートを制御する場合、レートコントロール部が、ＦＩＦＯバッファ部に書き込まれる量子化データのデータサイズから、符号化データ生成部によって生成される符号化データの予測データサイズを求め、該予測データサイズに基づいて、量子化部の量子化ステップを変化させるようにしている。
【００１２】
これにより、量子化部と符号化データ生成部との処理を非同期で行うように構成した結果、非特許文献１に開示されたレートコントロール方式を実施できない場合であっても、符号化データの生成のレートを制御でき、一定のレートで画像データを圧縮した符号化データを生成できるようになる。
【００１３】
更にレートコントロール部が、量子化パラメータ上限閾値以下となるように量子化パラメータを求めるようにしたので、画質を劣化させない程度に、量子化データのサイズを小さくして符号化データのサイズを小さくできるようになる。
【００１４】
そして、この量子化パラメータ上限閾値を、所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、設定又は解除できるようにしたので、量子化パラメータ上限閾値が設定された状態では画質劣化を防止でき、量子化パラメータ上限閾値が解除された状態ではデータサイズを大幅に削減でき、画質の劣化を防止しながらビットレートを維持できるようになる。
【００１５】
また本発明に係る画像データ圧縮装置では、前記量子化部に供給される画像データの生成処理をスキップさせるスキップ処理を行うフレームスキップ部を含み、前記フレームスキップ部が、前記量子化パラメータ上限閾値が解除されたときには、前記スキップ処理を行うことができる。
【００１６】
また本発明に係る画像データ圧縮装置では、前記フレームスキップ部が、少なくとも１フレームの間隔を置いて２回以上、前記スキップ処理を行うことができる。
【００１７】
本発明においては、フレームスキップ部を設け、量子化パラメータ上限閾値が解除される場合に、スキップ処理を行うようにしている。従って、上述のレートコントロールの実施したとしても、画像（特に自然画像ではない画像）によっては符号化データのサイズが増加してビットレートを確実に維持できなくなるような場合に、フレームごとに生成される符号化データの増加量を抑え、ビットレートを維持させることができるようになる。
【００１８】
また本発明に係る画像データ圧縮装置では、前記レートコントロール部が、前記ビットレートを維持するための最大エンコードサイズの範囲内で設定された複数種類の基準ビット数の各基準ビット数と前記割り当て可能ビット数とを比較し、前記ビットレートを維持するためのエンコードフレーム数の範囲内で設定された複数種類の基準フレーム数の各基準フレーム数と前記残りフレーム数とを比較し、各基準ビット数と前記割り当て可能ビット数との比較結果、及び各基準フレーム数と前記残りフレーム数との比較結果に基づいて、前記量子化パラメータ上限閾値を設定又は解除することができる。
【００１９】
本発明によれば、量子化パラメータ上限閾値を、きめ細かく設定又は解除できるようになり、ビットレートの維持と画質劣化の防止を実現できる。
【００２０】
また本発明に係る画像データ圧縮装置では、前記レートコントロール部が、前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつその値が設定可能な量子化パラメータ下限閾値以上となるように前記量子化パラメータを求めることができる。
【００２１】
本発明では、レートコントロール部が、量子化パラメータ上限閾値以下となるように量子化パラメータを求めるようにしている。一般的に、量子化パラメータの値を大きくするほど、画像データを大きく間引いて量子化データのサイズを小さくし、符号化データのサイズを小さくできる。その反面、該符号化データをデコードした画像にはブロックノイズが目立つようになる。従って、本発明によれば、上述のようにレートコントロールを実施したとしても、エンコード後の圧縮データをデコードした画像にブロックノイズが目立つ事態を回避できるようになる。
【００２２】
またレートコントロール部が、量子化パラメータ下限閾値以上となるように量子化パラメータを求めるようにしている。一般的に、量子化パラメータの値を小さくするほど、画像データの間引き量が少なくなって量子化データのサイズを大きくなる。その反面、該符号化データをデコードした画像にはブロックノイズが少なくなる。従って、本発明によれば、上述のようにレートコントロールを実施したとしても、無駄にデータサイズを大きくすることがなくなる。
【００２３】
従って、本発明によれば、圧縮効率と画質との最適化を図るレートコントロールを容易に実現できる。
【００２４】
また本発明に係る画像データ圧縮装置では、その値が設定可能な量子化パラメータ下限閾値が設定されている場合には、前記レートコントロール部が、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつ前記量子化パラメータ下限閾値以上となるように前記量子化パラメータを求め、前記量子化パラメータ上限閾値を解除したとき、更に前記量子化パラメータ下限閾値を解除すると共に、前記量子化パラメータ上限閾値及び前記量子化パラメータ下限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求めることができる。
【００２５】
本発明によれば、量子化パラメータ下限閾値が設定されているときには該量子化パラメータ下限閾値以上となるように量子化パラメータを求めるようにしている。一般的に、量子化パラメータの値を小さくするほど、画像データの間引き量が少なくなって量子化データのサイズを大きくなる。その反面、該符号化データをデコードした画像にはブロックノイズが少なくなる。従って、本発明によれば、上述のようにレートコントロールを実施したとしても、無駄にデータサイズを大きくすることがなくなる。この場合、本発明によれば、圧縮効率と画質との最適化を図るレートコントロールを容易に実現できる。
【００２６】
更に、量子化パラメータ上限閾値が解除されたとき、更に量子化パラメータ下限閾値も解除するようにして、本来のレートコントロールに戻し、上記勧告書に記載された理論式に近い状態でビットレートを制御できるようになる。
【００２７】
また本発明に係る画像データ圧縮装置では、前記ＦＩＦＯバッファ部のアクセス回数に対応したカウントデータが保持されるカウントレジスタを含み、前記レートコントロール部が、前記カウントデータから前記予測データサイズを求め、該予測データサイズに基づいて前記量子化ステップを変化させることができる。
【００２８】
本発明によれば、簡素な構成で、量子化データのデータサイズと等価な情報を得ることができるので、非特許文献１で規定されたレートコントロール方式をより簡素な構成で実現できる画像データ圧縮装置を提供できる。
【００２９】
また本発明に係る画像データ圧縮装置では、前記予測データサイズは、前記１フレーム前の量子化データのデータサイズを１次変換することにより求められるデータサイズであってもよい。
【００３０】
また本発明に係る画像データ圧縮装置では、前記一次変換は、前記符号化データ生成部の符号化効率に対応した係数を用いた変換であってもよい。
【００３１】
また本発明に係る画像データ圧縮装置では、前記一次変換は、更に、前記符号化データに付加されるヘッダサイズ分の補正を行う変換であってもよい。
【００３２】
本発明においては、量子化データのデータサイズと符号化データのデータサイズとがほぼ線形関係にあることに着目し、この線形関係を表す１次変換式により予測データサイズを求めることができるようにしている。これにより、処理負荷を増加させることなく、正確なレートコントロールを実現させることができる。
【００３３】
また本発明に係る画像データ圧縮装置では、量子化ステップ値を記憶する量子化テーブルを含み、前記レートコントロール部が、前記量子化パラメータと前記量子化ステップ値との積を用いて量子化を行うことで、前記量子化ステップを変化させることができる。
【００３４】
また本発明に係る画像データ圧縮装置では、離散コサイン変換された前記画像データを、フレーム単位で前記量子化部に供給する離散コサイン変換部を含むことができる。
【００３５】
また本発明に係る画像データ圧縮装置では、動画像の画像データをハードウェアにより処理するハードウェア処理部と、前記ＦＩＦＯバッファ部から読み出された量子化データをソフトウェアにより符号化処理して符号化データを生成するソフトウェア処理部とを含み、前記ハードウェア処理部が、前記量子化部と前記ＦＩＦＯバッファ部とを含み、前記ソフトウェア処理部が、前記符号化データ生成部と前記レートコントロール部とを含むことができる。
【００３６】
ここで、量子化された動画像データは、ゼロデータが圧倒的に多く、量子化前のデータと比較すればデータの情報量の種類が圧倒的に少ない場合が多い。しかも、一般的に符号化のための演算自体の負荷も少ない。よって、情報量が少なく演算負荷の軽い処理をソフトウェア処理部で処理しても、その処理の負荷は小さい。逆に、量子化の処理の多くは、情報量が多い上に演算も複雑で、ソフトウェアで処理するには負荷が大きい。そして、これらは負荷が重い処理ではあるが、規格化されている場合には、変更の必要性は乏しく、また、繰り返し処理が多いため、ハードウェア処理部での処理に適している。また、ハードウェア処理部での処理後のデータ量が少ないので、ハードウェア処理部からソフトウェア処理部に伝送されるデータ量が少なく、伝送負荷も軽くなる。また、ソフトウェア処理部とハードウェア処理部との間には、ＦＩＦＯバッファ部が介在するので、ソフトウェア処理とハードウェア処理とを並列的に処理することができる。更に、ソフトウェア処理とハードウェア処理とを使い分けることで、装置の小型化と消費電力の低減の双方を実現できる。
【００３７】
なおソフトウェア処理部に、フレームスキップ部を更に含むように構成しても良い。
【００３８】
また本発明に係る画像データ圧縮装置では、前記ハードウェア処理部が、現在のフレームの入力画像データと現在のフレームの１フレーム前の過去画像データとの差分を動きベクトル情報として出力し、該動きベクトル情報に対して離散コサイン変換を行って前記画像データとして前記量子化部に出力し、前記量子化データに対して前記量子化ステップで逆量子化して求められる逆量子化データに基づいて、前記過去画像データを生成することができる。
【００３９】
また本発明に係る画像データ圧縮装置では、前記ソフトウェア処理部が、前記ＦＩＦＯバッファ部から読み出された量子化データを可変長符号に符号化することができる。
【００４０】
また本発明に係る画像データ圧縮装置では、前記ソフトウェア処理部が、前記ＦＩＦＯバッファ部から読み出された量子化データを並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化することができる。
【００４１】
また本発明に係る画像データ圧縮装置では、前記ソフトウェア処理部が、前記ＦＩＦＯバッファ部から読み出された量子化データからＤＣ成分及びＡＣ成分とを求め、前記ＤＣ成分及びＡＣ成分を並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化することができる。
【００４２】
また本発明は、画像データに対して圧縮処理を行うエンコーダであって、画像データを入力するためのインタフェース処理を行う画像入力インタフェースと、前記画像データを、量子化パラメータに基づいて変化する量子化ステップで量子化する量子化部と、前記量子化部によって量子化された複数フレーム分の量子化データがバッファリングされるＦＩＦＯバッファ部と、前記ＦＩＦＯバッファ部への書き込みと非同期で、前記ＦＩＦＯバッファ部に記憶された量子化データを読み出すホストとのインタフェース処理を行うホストインタフェースとを含み、前記ホストが、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求め、前記量子化部が、前記ホストによって求められた量子化パラメータに基づいて量子化ステップを変化させるエンコーダに関係する。
【００４３】
また本発明に係るエンコーダでは、前記画像データの生成処理をスキップするためのスキップフラグレジスタを含み、前記ホストが、前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求め、前記量子化パラメータ上限閾値を解除したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値に関わらず前記量子化パラメータを求めると共に前記スキップフラグレジスタをセットし、前記スキップフラグレジスタがセットされたとき、現在のフレームの画像データの生成処理がスキップされてもよい。
【００４４】
また本発明に係るエンコーダでは、前記ホストが、前記量子化パラメータ上限閾値を解除したときには、少なくとも１フレームの間隔を置いて２回以上、前記スキップフラグレジスタをセットすることができる。
【００４５】
また本発明に係るエンコーダでは、その値が設定可能な量子化パラメータ下限閾値が設定されている場合には、前記ホストが、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下で、かつ前記量子化パラメータ下限閾値以上となるように前記量子化パラメータを求め、前記量子化パラメータ上限閾値を解除したとき、更に前記量子化パラメータ下限閾値を解除すると共に、前記量子化パラメータ上限閾値及び前記量子化パラメータ下限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求めることができる。
【００４６】
本発明によれば、例えば撮像部からの動画像の画像データを圧縮するためのエンコードの処理を、エンコーダとホストとに分担させることができる。従って、上述のエンコードの処理の量子化と符号化データの生成とを並列的に実行することができる。更に、エンコーダとホストとを使い分けることで、このエンコーダを搭載する装置の小型化と消費電力の低減の双方を実現できる。
【００４７】
また本発明は、上記のいずれか記載の画像データ圧縮装置を含む電子機器に関係する。
【００４８】
また本発明は、上記のいずれか記載のエンコーダを含む電子機器に関係する。
【００４９】
本発明によれば、画像データの圧縮処理についてハードウェアとソフトウェアとの分担の最適化を図り、表示品質の劣化を防止しながら、一定レートで確実に圧縮データの生成を行う電子機器を提供できる。
【００５０】
また本発明は、画像データを圧縮するための画像データ圧縮方法であって、フレーム単位で画像データが量子化される量子化データであって、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、所定のビットレートを維持するために圧縮処理に割り当て可能な割り当て可能ビット数に基づき、或いは残りフレーム数に基づき、或いは該割り当て可能ビット数及び該残りフレーム数に基づき、量子化パラメータ上限閾値を設定又は解除し、前記量子化パラメータ上限閾値を設定したときには、前記予測データサイズを用いて、前記量子化パラメータ上限閾値以下となるように前記量子化パラメータを求めると共に、前記量子化パラメータ上限閾値を解除したときには、前記量子化パラメータ上限閾値に関わらず、前記予測データサイズを用いて前記量子化パラメータを求め、前記量子化パラメータに基づいて変化する量子化ステップで、前記現在のフレームの画像データを量子化し、前記画像データを符号化した符号化データのデータサイズを変化させ、フレームごとに求められる前記量子化パラメータがスキップ閾値よりも大きくなるフレームが、スキップ連続回数閾値として設定された回数以上連続したとき、前記画像データの生成処理をスキップさせる画像データ圧縮方法に関係する。
【発明を実施するための最良の形態】
【００５１】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００５２】
１．  ＭＰＥＧ−４
まずＭＰＥＧ−４のエンコード処理について簡単に説明する。またこのエンコード処理によって符号化された圧縮データを伸張するためのデコード処理についても説明する。
【００５３】
図１（Ａ）、（Ｂ）に、ＭＰＥＧ−４のエンコード処理と、デコード処理の説明図を示す。この処理の詳細については、例えば日本実業出版社の「JPEG&MPEG  図解でわかる画像圧縮技術」（越智宏、黒田英夫の共著）に説明されているので、本発明に関する処理についてのみ主として説明する。
【００５４】
図１（Ａ）に示すエンコード処理では、まず、連続する２枚（２フレーム）の画像間の動き検出（ＭＥ：Motion Estimation）が実施される（ステップＳ１）。具体的には２枚の画像間の同一画素同士の差分を求める。２枚の画像間で変化のない画像領域では差分が０になるので、情報量を少なくできる。この画像領域のゼロデータに加え、２枚の画像間で変化のある画像領域の差分（プラス・マイナス成分）が動き検出後の情報となる。
【００５５】
次に、離散コサイン変換（ＤＣＴ：Discrete Cosine Transform）が実施される（ステップＳ２）。この離散コサイン変換（ＤＣＴ）は、図２に示す８画素×８画素の１ブロック単位で演算され、１ブロック毎にＤＣＴ係数を求めるものである。離散コサイン変換後のＤＣＴ係数は、１ブロック内の画像の濃淡変化を、全体の明るさ（ＤＣ成分）と空間周波数（ＡＣ成分）とで表わしたものである。図３は、８画素×８画素の１ブロック内のＤＣＴ係数の一例を示している（上述の図書の第１１６頁の図５−６を引用）。その左上隅のＤＣＴ係数がＤＣ成分を示し、それ以外のＤＣＴ係数がＡＣ成分を示す。なお、ＡＣ成分のうち、高周波成分を省略しても画像認識への影響が少ない。
【００５６】
次に、ＤＣＴ係数の量子化が行われる（ステップＳ３）。この量子化は、１ブロック内の各ＤＣＴ係数を、量子化テーブル中の対応する位置の量子化ステップ値で除算して、情報量を少なくするために実施される。例えば、図３のＤＣＴ係数を図４の量子化テーブルを用いて量子化した１ブロック内のＤＣＴ係数を図５に示す（上述の図書の第１１７頁の図５−９及び図５−１０を引用）。図５に示す通り、特に、高周波成分のＤＣＴ係数を量子化ステップ値で除算し、その小数点以下を四捨五入すると、ほとんどがゼロデータとなり、情報量が大幅に減少している。
【００５７】
このエンコード処理には、現フレームと該現フレームの次のフレームとの間で上述の動き検出（ＭＥ）を実施するために、帰還ルートが必要となる。この帰還ルートでは、図１（Ａ）に示すように、逆量子化（ｉＱ）、逆ＤＣＴ及び動き補償（ＭＣ：Motion Compensation）が実施される（ステップＳ４〜Ｓ６）。なお、動き補償の詳細な動作については省略するが、この処理は図２に示す１６画素×１６画素の１マクロブロック単位で実施される。
【００５８】
本実施形態では、上述したステップＳ１〜Ｓ６の処理が、ハードウェアによって実施される。
【００５９】
図１（Ａ）のステップＳ７で実施されるＤＣ／ＡＣ（直流／交流成分）予測処理及びステップＳ８で実施されるスキャン処理は、共にステップＳ９の可変長符号（ＶＬＣ：Variable Length Code）の符号化の効率を高めるために必要な処理である。なぜなら、ステップＳ９の可変長符号への符号化は、ＤＣ成分については隣接ブロック間での差分を符号化し、ＡＣ成分についてはブロック内を周波数が低い側から高い側に向けてスキャン（ジグザグスキャンとも称する）して符号化の順序を決める必要があるからである。
【００６０】
ステップＳ９の可変長符号への符号化とは、エントロピー符号化とも称され、符号化原理として、出現頻度の多いものは少ない符号で表わすように符号化するものである。このエントロピー符号化には、ハフマン符号化が採用される。
【００６１】
そしてステップＳ７、ステップＳ８での結果を利用して、ＤＣ成分について隣接ブロック間での差分を符号化し、ＡＣ成分についてはスキャンされた順番で低周波側から高周波側から順にＤＣＴ係数値を符号化する。
【００６２】
ここで、画像データは、その画像の複雑さや動きの激しさによって情報の発生量が変動する。この変動を吸収し、一定の伝送レートで伝送するには符号発生量の制御が必要であり、これがステップＳ１０のレートコントロールである。レートコントロールのために通常バッファメモリが設けられ、そのバッファメモリがオーバーフローしないように蓄積情報量を監視し、情報発生量を抑えるようにする。具体的には、ステップＳ３での量子化特性を粗くして、ＤＣＴ係数値を表すビット数を減らしている。
【００６３】
本実施形態では、上述したステップＳ７〜Ｓ１０の処理が、ソフトウェアによって実施される。即ち、ステップＳ７〜Ｓ１０の処理が、ソフトウェアを読み込んだハードウェアによって実現される。
【００６４】
図１（Ｂ）は、図１（Ａ）のエンコード処理によって圧縮された画像データのデコード処理を示す。このデコード処理は図１（Ａ）のエンコード処理を逆順でかつ逆処理することで達成される。なお、図１（Ｂ）中の「ポストフィルタ」とは、ブロックノイズを消去するためのフィルタである。また図１（Ｂ）中の「ＹＵＶ／ＲＧＢ変換」とは、ポストフィルタの出力を、ＹＵＶフォーマットからＲＧＢフォーマットに変換することを指す。
【００６５】
２．  レートコントロール
次に、図１（Ａ）に示すステップＳ１０で実施されるレートコントロールに関し、非特許文献１に記載される手法について簡単に説明する。この手法では、エンコード時の量子化パラメータを変化させる。量子化パラメータを変化させることで、図１（Ａ）に示す量子化（ステップＳ３）の量子化ステップを変化させて量子化特性を変化させ、発生する符号量（データのサイズ）を制御する。
【００６６】
この手法では、フレームごとに量子化パラメータＱｃを設定して、１フレームを符号化したときの発生符号量Ｒの制御を行う。このとき、図６に示すモデル式に従って、量子化パラメータＱｃを求める。
【００６７】
図６において、Ｒは１フレームを符号化しときの発生符号量、Ｑｃは量子化パラメータ、Ｅｃはフレームの複雑度、Ｘ１、Ｘ２は本モデルのパラメータを示す。フレームの複雑度Ｅｃは、符号化対象とする画素の絶対値平均を用いる。ここでフレーム間符号化マクロブロックに関しては、フレームの複雑度Ｅｃは、現フレームと該現フレームの前のフレームとの差分値ｘ´ｉｊの絶対値の総和を面積Ａで除した値として、動き検出後に求められる。フレーム内符号化マクロブロックに関しては、現フレームと基準値μとの差分値の絶対値（｜ｘｉｊ−μ｜）の総和を面積Ａで除した値として求められる。なお基準値μは、マクロブロック内の全画素の平均値とすることができる。
【００６８】
このように、図６では、発生符号量はフレームの複雑度と量子化パラメータの逆数の２次式とによってモデル化される。
【００６９】
図７に、図６に示すモデル式を用いたレートコントロールの処理フローの一例を示す。
【００７０】
まず、初期フレームを、所定の量子化パラメータを用いてエンコードする（ステップＳ３０）。次に、モデルパラメータＸ１、Ｘ２の初期値を設定する（ステップＳ３１）。続いて、現フレームの複雑度Ｅｃを算出する（ステップＳ３２）。複雑度Ｅｃは、図６に示す式を用いて求めることができる。そして、エンコードに使用する符号量を、使用可能な残りの符号量及び前フレームで使用した符号量を基に求める（ステップＳ３３）。
【００７１】
更に、ステップＳ３１で設定されたモデルパラメータＸ１、Ｘ２、ステップＳ３２で求められた複雑度Ｅｃを、図６に示すモデル式に設定する。また、ステップＳ３３で求められたエンコードに使用する符号量から、前フレームで使用したビット数のうちヘッダや動きベクトル等の情報以外のビット数を減算した値を、１フレームを符号化したときの発生符号量Ｒとして図６に示すモデル式に設定する。そして、図６に示すパラメータをＱｃとする２次方程式を解いて、量子化パラメータＱｃを求める（ステップＳ３４）。
【００７２】
次に、ステップＳ３４で求められた量子化パラメータＱｃを用いてフレームの量子化と符号化とを行って（ステップＳ３５）、現フレームの１フレーム前にエンコードしたフレームの量子化パラメータと発生符号量等とを基に、図６に示すモデル式からモデルパラメータＸ１、Ｘ２を求めて更新する（ステップＳ３６）。
【００７３】
所定の条件でこの処理フローを終了するとき（ステップＳ３７：Ｙ）、一連の処理を終了し（エンド）、終了しないとき（ステップＳ３７：Ｎ）、ステップＳ３２に戻る。以上のような処理を毎フレーム行う。
【００７４】
このように非特許文献１に記載されるレートコントロール方式では、１フレーム前のエンコード結果を次のフレームのエンコードに反映させる必要がある。
【００７５】
３．  画像データ圧縮装置
ところで本実施形態は、上述したエンコードの一連の処理をハードウェアとソフトウェアとに分担させ、この分担の最適化を図る画像データ圧縮装置を提供するものである。
【００７６】
図８に、本実施形態における画像データ圧縮装置の構成の概要のブロック図を示す。
【００７７】
本実施形態における画像データ圧縮装置１０は、量子化部２０を有する画像データ処理部７０を含む。画像データ処理部７０は、フレーム単位に入力される画像データを圧縮するための処理を行う。量子化部２０は、図１（Ａ）に示すステップＳ３の処理を行う。量子化部２０は、フレーム単位で、画像データを、量子化パラメータに基づいて変化する量子化ステップで量子化する。量子化部２０では、フレームごとに設定される量子化パラメータが設定される。ここで画像データは、例えば図１（Ａ）に示すステップＳ２のＤＣＴ処理後のＤＣＴ係数により表わすことができる。この場合、図３に示すＤＣＴ係数が、図４に示す量子化テーブルの量子化ステップ値と量子化パラメータとの積で除算され、図５に示すように量子化される。
【００７８】
画像データ圧縮装置１０は、ＦＩＦＯバッファ部３０を含む。ＦＩＦＯバッファ部３０には、量子化部２０によって量子化された複数フレーム分の量子化データがバッファリングされる。フレーム単位で量子化部２０から出力される量子化データは、ＦＩＦＯバッファ部３０に順次書き込まれる。そしてＦＩＦＯバッファ部３０は、先入れ先出し記憶回路として機能する。
【００７９】
画像データ圧縮装置１０は、符号化データ生成部４０を含む。符号化データ生成部４０は、ＦＩＦＯバッファ部３０から１フレーム分の量子化データを読み出し、該量子化データを符号化した符号化データを生成する。この符号化データ生成部４０は、ＦＩＦＯバッファ部３０への書き込みと非同期で、ＦＩＦＯバッファ部３０から１フレーム分の量子化データを読み出す。
【００８０】
このように量子化部２０（画像データ処理部７０）と符号化データ生成部４０との間にＦＩＦＯバッファ部３０を設けることで、処理負荷の重い量子化部２０の処理をハードウェアに負担させ、処理負荷の軽い符号化データ生成部４０の符号化処理をソフトウェア処理で実現させると共に、両者の処理を並列に処理できるようになる。
【００８１】
以下では、量子化部２０（画像データ処理部７０）が例えば高速なハードウェアによって実現され、符号化データ生成部４０が例えば低速なソフトウェア処理によって実現されるものとして説明するが、これに限定されるものではなく、符号化データ生成部４０が、ＦＩＦＯバッファ部３０への書き込みと非同期でＦＩＦＯバッファ部３０から量子化データを読み出す場合に本実施形態を適用することができる。従って、量子化部２０（画像データ処理部７０）が例えば高速なハードウェアによって実現され、符号化データ生成部４０が例えば低速なハードウェアによって実現されてもよい。或いは量子化部２０（画像データ処理部７０）と符号化データ生成部４０がソフトウェアを読み込むハードウェアによって実現され、互いに非同期で処理するようにしてもよい。
【００８２】
画像データ圧縮装置１０は、レートコントロール部５０を含む。レートコントロール部５０は、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データのデータサイズを予測して予測データサイズとして求め、該予測データサイズに基づいて量子化ステップを変化させる。図５より明らかなように、量子化ステップを大きくすれば、量子化されたＤＣＴ係数のゼロデータが増える。一方、量子化ステップを小さくすれば、量子化されたＤＣＴ係数のゼロデータが減る。こうしてゼロデータが増減される量子化データは、ＦＩＦＯバッファ部３０に書き込まれる。その結果、ＦＩＦＯバッファ部３０から読み出した量子化データを、符号化データ生成部４０が符号化した符号化データのサイズも、量子化パラメータに応じて変更できるようになる。
【００８３】
上述のように非特許文献１に記載されたレートコントロール方式では、１フレーム前のエンコード結果を次のフレームのエンコードに反映させる必要がある。ところが、量子化部２０の量子化と符号化データ生成部４０の符号化とを、ハードウェアとソフトウェアとに分担させるようにすると、互いに非同期で処理されることになる。そのため、ＦＩＦＯバッファ部３０で読み出された量子化データが、量子化部２０で量子化されるデータの２フレーム以上過去のフレームのデータとなってしまうことがある。このため、１フレーム前のエンコード結果を次のフレームのエンコードに反映させた非特許文献１に記載されたレートコントロール方式を実現できなくなる。
【００８４】
そこで本実施形態では、レートコントロール部５０は、上述のように現在のフレームの１フレーム前の符号化データの予測データサイズを求め、該予測データサイズに基づいてレートコントロールを行う。この際、本実施形態では、以下のような特性に着目して、予測データサイズを求める。
【００８５】
図９に、量子化データのデータサイズと符号化データのデータサイズとの関係の説明図を示す。ここで量子化データは、量子化部２０から読み出されたデータであり、図１（Ａ）においてステップＳ３において生成されたデータである。また符号化データは、符号化データ生成部４０によって該量子化データを符号化したデータであり、図１（Ａ）においてステップＳ９において生成されたデータである。
【００８６】
図９に示すように、量子化データのデータサイズと符号化データのデータサイズとの間には線形関係がある。即ち、量子化データのデータサイズｘ、符号化データのデータサイズをｙとすると、ｘを変数としてｙを次の（１）式により近似的に求めることができる。
【００８７】
ｙ＝ａｘ−ｂ（ａ、ｂは正の実数）      ・・・（１）
従って、量子化データのデータサイズｘ０を１次変換（線形変換）することで符号化データのデータサイズの予測値ｙ０として求めることができる。（１）式において、ａは、符号化データ生成部４０の符号化効率に対応した係数である。この係数は、符号化データ生成部４０の処理の特性に対応して定められる。更に具体的には、この係数は、符号化データ生成部４０において行われるハフマン符号化のためのハフマンエンコード処理の圧縮係数ということもできる。
【００８８】
また（１）式において、ｂは符号化データ生成部４０によって生成される符号化データのヘッダ情報のデータサイズに対応する数値である。例えば符号化データがＭＰＥＧ−４のストリームデータである場合、ＭＰＥＧ−４のヘッダ情報のデータサイズをｂとする。これにより、（１）式の１次変換は、更に、符号化データに付加されるヘッダサイズ分の補正を行う変換ということができる。
【００８９】
以上のような（１）式のａ、ｂは、例えば複数種類の画像データについて、量子化データのデータサイズと符号化データのデータサイズとの関係を統計的に処理して求められる。
【００９０】
こうして求められた予測データサイズを１フレーム前のエンコード結果として次のフレームのエンコードに反映させることで、非特許文献１に記載されたレートコントロール方式を行う。これにより、画像データの圧縮処理についてハードウェアとソフトウェアとの分担の最適化と、より正確なレートコントロールの実現とを両立する。
【００９１】
なお図８では、量子化データのデータサイズから予測データサイズを求めるようにしていたが、これに限定されるものではない。量子化データのデータサイズと等価な情報から、該予測データサイズを求めることも可能である。
【００９２】
以下では、量子化データのデータサイズと等価な情報として、各フレームのＦＩＦＯバッファ部３０へのアクセス回数（書き込み回数又は読み出し回数）を用いる。ＦＩＦＯバッファ部３０への書き込みを所定バイト数単位で行って、各フレームのアクセス回数を各フレームの量子化データのデータサイズと等価な情報とすることができる。またＦＩＦＯバッファ部３０からの読み出しを所定バイト数単位で行って、各フレームのアクセス回数を各フレームの量子化データのデータサイズと等価な情報とすることができる。
【００９３】
図１０に、本実施形態におけるレートコントロールの手法の説明図を示す。但し、図８に示す画像データ圧縮装置１０と同一部分には同一符号を付し、適宜説明を省略する。なお図１０では、ＦＩＦＯバッファ部３０が、７フレーム分の量子化データを記憶できるものとする。
【００９４】
図１１に、図１０に示すレートコントロール手法の動作タイミングの模式図を示す。
【００９５】
量子化部２０は、フレーム単位で画像データを量子化する。例えば図４に示す量子化ステップ値が設定された量子化テーブル２２を設ける。そして、量子化部２０は、量子化テーブル２２に設定された量子化ステップ値とレートコントロール部５０からの量子化パラメータとに基づいて、フレーム単位で画像データを量子化する。より具体的には、量子化パラメータを量子化ステップ値の係数とし、量子化部２０が、該量子化パラメータと量子化ステップ値との積を用いて量子化を行うことで、量子化ステップを変化させる。
【００９６】
量子化部２０は、時刻ｔ１、ｔ２、・・・において、フレーム単位で画像データを量子化し、量子化データを第１のフレームＦ１、第２のフレームＦ２、・・・の順にＦＩＦＯバッファ部３０に書き込む。各フレームにおいてカウントレジスタ３２が保持するカウントデータは、毎フレームにおいて初期化され、ＦＩＦＯバッファ部３０への書き込みが発生する毎にインクリメントされて更新される。こうすることで、各フレームの量子化データの書き込みが完了した時点で、カウントレジスタ３２には、ＦＩＦＯバッファ部３０への書き込み回数に対応したカウントデータが設定されていることになる。
【００９７】
その一方で、符号化データ生成部４０は、ＦＩＦＯバッファ部３０への量子化データの書き込みタイミングとは非同期で、ＦＩＦＯバッファ部３０から量子化データをフレーム単位で読み出し、符号化処理を行う。
【００９８】
レートコントロール部５０は、符号化データ生成部４０の処理とは独立して、各フレームの量子化データの書き込みが完了した時点のカウントデータに基づいて、量子化部２０の量子化ステップを変化させて次のフレームに反映させる。これにより、量子化データの書き込みが完了したフレームの次のフレームでは、量子化部２０で量子化された量子化データのサイズが変化し、この結果として符号化データ生成部４０が生成する符号化データのサイズも変化する。
【００９９】
図１１では、符号化データ生成部４０がＦＩＦＯバッファ部３０から第１〜第４のフレームＦ１〜Ｆ４の量子化データを順次読み出して、各フレームの符号化データをそれぞれ生成して出力している。
【０１００】
カウントレジスタ３２には、第１のフレームＦ１の量子化データのＦＩＦＯバッファ部３０への書き込みが完了した時点で、カウントデータＤ１が保持される。カウントデータＤ１は、第１のフレームＦ１の量子化データのＦＩＦＯバッファ部３０への書き込み回数に対応したデータである。カウントデータＤ１は、第１のフレームＦ１の量子化データのデータサイズに対応づけられる。このカウントデータは、第２のフレームＦ２の開始時点で初期化され、第２のフレームＦ２の量子化データのＦＩＦＯバッファ部３０への書き込みが完了した時点で、カウントデータＤ２が保持される。カウントデータＤ２は、第２のフレームＦ２の量子化データのＦＩＦＯバッファ部３０への書き込み回数に対応したデータである。
【０１０１】
レートコントロール部５０は、ＦＩＦＯバッファ部３０への書き込みが終了する毎にカウントデータを読み出して、次のフレームの量子化ステップを変化させる。図１１では、第１のフレームＦ１の量子化データの書き込みが完了すると、レートコントロール部５０がカウントデータＤ１を読み出し、カウントデータＤ１から予測データサイズを求める。そして図６及び図７で説明したように、レートコントロール部５０は、この予測データサイズを用いて第２のフレームＦ２のエンコードに使用する符号量を算出して、量子化パラメータＱｃを求める。この結果、量子化部２０は、第２のフレームＦ２の画像データの量子化を、第１のフレームＦ１の符号化データの予測データサイズに基づいて求められた量子化パラメータＱｃと量子化テーブル２２の量子化ステップ値との積を用いて量子化する。この量子化結果が、ＦＩＦＯバッファ部３０に書き込まれる。こうして、フレームごとに１フレーム前の予測データサイズを用いることで、所望のレートで符号化データを生成できるようになる。
【０１０２】
３．１  量子化パラメータ上限閾値と量子化パラメータ下限閾値
また上述のようにレートコントロールを実施したとしても、エンコード対象の画像によっては、エンコード後の圧縮データをデコードした画像にブロックノイズが目立つ場合も想定される。これは、非特許文献１に述べられているレートコントロール方式により、圧縮データの生成レートをコントロールしたとしても、該圧縮データをデコード（伸張）した画像にはブロックノイズが表示されることが多く、表示品質を劣化させる場合があるからである。
【０１０３】
図１２に、量子化パラメータ、符号化データのデータサイズ及びブロックノイズの関係を模式的に示す。図１２では、横軸が量子化パラメータを表わし、縦軸がデータサイズ及びブロックノイズを表わす。なお、非特許文献１に記載されるレートコントロール方式では、量子化パラメータＱｃの値の範囲が１〜３１である。
【０１０４】
図１２に示すように、量子化パラメータの値を大きくするほど、画像データを大きく間引いてＤＣＴ係数をゼロデータにすることになり量子化データのサイズを小さくし、符号化データのサイズを小さくできる。その反面、該符号化データをデコードした画像にはブロックノイズが目立つようになる。即ち、データサイズが小さいほど、ブロックノイズが多くなる。
【０１０５】
そこで本実施形態では、量子化パラメータＱｃの値が一定値より大きくならないように、量子化パラメータ上限閾値QcUpperLimitを設けている。この量子化パラメータ上限閾値QcUpperLimitの値は、レートコントロールに先立って設定される。従って、レートコントロール部５０は、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、該予測データサイズを用いて、その値が設定可能な量子化パラメータ上限閾値以下となるように量子化パラメータを求める。このように、Ｑｃ≦QcUpperLimitとすることにより、上述のようにレートコントロールを実施したとしても、エンコード後の圧縮データをデコードした画像にブロックノイズが目立つ事態を回避できるようになる。
【０１０６】
一方、量子化パラメータの値を小さくするほど、画像データを間引く量が小さくなり、ＤＣＴ係数のゼロデータが少なくなる。そのため量子化データのサイズが大きくなり、符号化データのサイズも大きくなる。その反面、該符号化データをデコードした画像にはブロックノイズが少なくなる。即ち、データサイズが大きいほど、ブロックノイズが少なくなる。例えば量子化パラメータＱｃの値が１のとき、デコードした画像を最高画質にできるが、１フレーム分の符号化データとして使用されるデータ量が膨大となってしまう。このとき、人間の眼では確認できないような撮像部のノイズもすべて残った状態となる。
【０１０７】
そこで本実施形態では、量子化パラメータＱｃの値が一定値より小さくならないように、量子化パラメータ下限閾値QcLowerLimitを設けている。この量子化パラメータ下限閾値QcLowerLimitの値は、レートコントロールに先立って設定される。従って、レートコントロール部５０は、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、該予測データサイズを用いて、その値が設定可能な量子化パラメータ下限閾値以上となるように量子化パラメータを求める。このように、Ｑｃ≧QcLowerLimitとすることにより、上述のようにレートコントロールを実施したとしても、無駄にデータサイズを大きくすることがなくなる。
【０１０８】
以上のように、レートコントロール部５０は、予測データサイズを用いて量子化パラメータ上限閾値QcUpperLimit以上となるように又は量子化パラメータ下限閾値QcLowerLimit以上となるように量子化パラメータを求めるようにしてもよいが、これに限定されるものではない。
【０１０９】
レートコントロール部５０は、上述のように予測データサイズを用いて、量子化パラメータ上限閾値QcUpperLimit以下で、かつ量子化パラメータ下限閾値QcLowerLimit以上となるように量子化パラメータを求めるようにしてもよい。この場合、量子化パラメータＱｃの値を、図１２に示す範囲RangeQcとすることで、データサイズの範囲RangeDataとすることができ、圧縮効率と画質との最適化を図るレートコントロールを容易に実現できる。
【０１１０】
３．２  量子化パラメータ上限閾値の設定と解除
ところで、フレームごとに圧縮処理を行っていると、画像（特に自然画像ではない画像）によっては符号化データのサイズが増加し、ビットレートを確実に維持できない可能性がある。特に、上述のように量子化パラメータＱｃの量子化パラメータ上限閾値QcUpperLimitを設けた場合には、画質劣化を防止できる反面、個々のフレームでの符号化データのサイズが増加せざるを得ず、ビットレートの維持を阻害する可能性が高くなる。
【０１１１】
そこで本実施形態では、レートコントロール部５０が、一定の条件下で、量子化パラメータ上限閾値QcUpperLimitを設定又は解除できるようになっている。より具体的には、レートコントロール部５０は、所定のビットレートを維持するために圧縮処理に割り当て可能なビット数、残りフレーム数、又は該割り当て可能ビット数及び該残りフレーム数に基づいて量子化パラメータ上限閾値を設定又は解除する。量子化パラメータ上限閾値QcUpperLimitを設定する場合、レートコントロール部５０は、上述のように量子化パラメータ上限閾値QcUpperLimit以下となるように量子化パラメータＱｃを求める。一方、量子化パラメータ上限閾値QcUpperLimitを解除する場合、レートコントロール部５０は、量子化パラメータ上限閾値QcUpperLimitに関わらず、量子化パラメータＱｃを求める。
【０１１２】
こうすることで、量子化パラメータ上限閾値QcUpperLimitが設定された状態では画質劣化を防止でき、量子化パラメータ上限閾値QcUpperLimitが解除された状態ではデータサイズを大幅に削減でき、画質の劣化を防止しながらビットレートを維持できるようになる。
【０１１３】
図１３に、圧縮処理に割り当て可能なビット数についての説明図を示す。
【０１１４】
例えば１５フレーム毎秒（frame per second：ｆｐｓ）のフレームレートで、エンコード時間が１０秒の動画像の画像データを、６４ｋビット毎秒（bit per second：ｂｐｓ）のビットレートで生成する場合を考える。この場合、最大エンコードサイズは、８０ｋバイト（＝６４ｋ／８×１０）である。従って、所定のビットレートを維持するためにエンコード可能なデータサイズは８０ｋバイトとなる。
【０１１５】
そして、フレーム単位でエンコードされ符号化データが生成されるたびに、最大エンコードサイズの範囲内で使用ビット数が増加し、残り使用可能ビット数（圧縮処理に割り当て可能なビット数）が減少していく。
【０１１６】
ここで、レートコントロール部５０が、（ビットレートを維持するための）最大エンコードサイズの範囲内で設定された複数種類の基準ビット数の各基準ビット数と残り使用可能ビット数とを比較する。図１３では、基準ビット数として、１２０ｋビット（１５ｋバイト）、８０ｋビット（１０ｋバイト）、４０ｋビット（５ｋバイト）を設ける。図１３では、基準ビット数を３種類設けているが、２種類や、４種類以上であってもよい。
【０１１７】
そしてレートコントロール部５０は、残り使用可能ビット数と各基準ビット数との比較結果と、残りフレーム数とに応じて、量子化パラメータ上限閾値を設定又は解除する。より具体的には、エンコード処理が進むたびに減少する残り使用可能ビット数を、１２０ｋビット、８０ｋビット、４０ｋビットと比較し、各比較時点での残りフレーム数を考慮して、量子化パラメータ上限閾値を設定又は解除する。例えば、残り使用可能ビット数が基準ビット数に達した場合に、残りフレーム数が少ないと判断されるときには量子化パラメータ上限閾値を設定し、残りフレーム数が多いと判断されるときには量子化パラメータ上限閾値を解除する。
【０１１８】
図１４に、残りフレーム数についての説明図を示す。
【０１１９】
上述と同様に、例えば１５フレーム毎秒のフレームレートで、エンコード時間が１０秒の動画像の画像データを、６４ｋビット毎秒のビットレートで生成する場合を考える。この場合、エンコードフレーム数は、１５０フレーム（＝１５×１０）である。従って、所定のビットレートを維持するためにエンコード可能なフレーム数は１５０フレームとなる。
【０１２０】
例えば動画像の画像データのエンコード開始時のフレーム番号が、初期値である「１」から１ずつインクリメントされていくものとする。このとき、フレーム単位でエンコードされ符号化データが生成されるたびに、フレーム番号が増加し、最大エンコードフレーム番号が１５０となる。従って、残りフレーム数は、最大エンコードフレーム番号から現在のフレーム番号を減算することで求められる。
【０１２１】
ここで、レートコントロール部５０が、（ビットレートを維持するための）エンコードフレーム数の範囲内で設定された複数種類の基準フレーム数の各基準フレーム数と、残りフレーム数とを比較する。図１４では、基準フレーム数として、QcFrameLimitLow、QcFrameLimitMiddle、QcFrameLimitHigh（１≦QcFrameLimitLow＜QcFrameLimitMiddle＜QcFrameLimitHigh＜最大エンコードフレーム番号）を設ける。図１４では、基準フレーム数を３種類設けているが、２種類や、４種類以上であってもよい。
【０１２２】
そしてレートコントロール部５０は、残りフレーム数と各基準フレーム数との比較結果と、残り使用可能ビット数とに応じて、量子化パラメータ上限閾値を設定又は解除する。より具体的には、エンコード処理が進むたびに減少する残りフレーム数を、QcFrameLimitLow、QcFrameLimitMiddle、QcFrameLimitHighと比較し、各比較時点での残り使用可能ビ
ット数を考慮して、量子化パラメータ上限閾値を設定又は解除する。例えば、残りフレーム数が基準フレーム数に達した場合に、残り使用可能ビット数が多いと判断されるときには量子化パラメータ上限閾値を設定し、残り使用可能ビット数が少ないと判断されるときには量子化パラメータ上限閾値を解除する。
【０１２３】
なお、レートコントロール部５０は、後述のように、各基準ビット数と残り使用可能ビット数（割り当て可能なビット数）との比較結果、及び各基準フレーム数と残りフレーム数との比較結果に基づいて、量子化パラメータ上限閾値を設定又は解除することが望ましい。こうすることで、量子化パラメータ上限閾値を設定している状態では画質劣化を防止できる。一方、量子化パラメータ上限閾値を解除している状態では、動画像の一連の画像データのエンコード処理の前半で多くのビット数を使ってしまう場合、量子化パラメータ上限閾値を解除することで、符号化データのサイズをより小さくでき、その結果としてビットレートを維持できるようになる。
【０１２４】
更にビットレートの維持を確実にするためには、エンコードするフレームをスキップするスキップ処理を行うことが望ましい。そのため本実施形態では、図８に示すように、画像データ圧縮装置１０は、フレームスキップ部６０を含むことができる。
【０１２５】
フレームスキップ部６０は、画像データ処理部７０における画像データの生成処理をスキップさせるスキップ処理を行う。即ち、フレームスキップ部６０は、量子化部２０に供給される画像データの生成を中止させる。
【０１２６】
本実施形態では、レートコントロール部５０において量子化パラメータ上限閾値が解除されたとき、フレームスキップ部６０が、スキップ処理を行うことが望ましい。またフレームスキップ部６０がスキップ処理を行う場合、少なくとも１フレームの間隔を置いて２回以上、スキップ処理を行うことが望ましい。こうすることで、残り使用可能ビット数及び残りフレーム数が極端に少ない場合であっても、ビットレートを維持できるようになる。
【０１２７】
３．３  量子化パラメータＱｃの算出処理の具体例
次に、レートコントロール部５０で行われる量子化パラメータＱｃの算出処理について具体的に説明する。
【０１２８】
図１５及び図１６に、量子化パラメータＱｃの算出処理のフローの一例を示す。ここでは、図１７に示す量子化パラメータＱｃの算出処理で用いられる変数の説明図を参照しながら、図１５及び図１６に示すフローを説明する。図１５及び図１６示すフローが、毎フレーム行われる。
【０１２９】
まず前フレームで使用したビット数Ｓを算出する（ステップＳ４０）。ここで、変数Ｓに、前フレームで求められた、エンコードに使用したビット数（現フレームのエンコードに使用したビット数）Ｒｃの値が設定される。
【０１３０】
図１８に、エンコードに使用したビット数Ｒｃの値の算出処理のフローの一例を示す。ここでは、現在のフレームの１フレーム前の量子化データのデータサイズと等価な情報としてカウントレジスタ３２から読み出されたカウントデータをｘ０とし、（１）式に代入して現在のフレームの符号化データの予測データサイズｙ０を求める（ステップＳ６０）。
【０１３１】
そしてステップＳ６０で求めた予測データサイズｙ０を、エンコードに使用したビット数Ｒｃの値として設定する（ステップＳ６１）。
【０１３２】
こうして求められた変数Ｒｃの値は、次のフレームで変数Ｓに設定される。
【０１３３】
図１５に戻って、説明を続ける。変数Ｓの値が求められると、現フレームに割り当てるビット数Ｔを求める（ステップＳ４１）。ステップＳ４１では、残りの使用可能ビット数Ｒｒと、残りにエンコードフレーム数Ｎｒとにより、１フレーム当たりの平均割り当てビット数（Ｒｒ／Ｎｒ）を求め、その値と前フレームの割り当てビット数Ｓとの比で、現フレームに割り当てられるビット数Ｔを求める。ステップＳ４１では、例えば０．９５：０．０５となっている。そして、現フレームに割り当てられるビット数Ｔが、下限値であるＲｓ／３０の値を下回らないようにする。
【０１３４】
次に、現在のＦＩＦＯバッファ部３０の占有ビット数Ｂと、ＦＩＦＯバッファ部３０のビット数Ｂｓとの比から、現フレームに割り当てられるビット数Ｔを調整する（ステップＳ４２）。この結果、現在のＦＩＦＯバッファ部３０の占有ビット数Ｂが、ＦＩＦＯバッファ部３０のビット数Ｂｓの半分より小さい場合は、変数Ｔの値を大きくし、逆に大きい場合は変数Ｔの値を小さくする。
【０１３５】
そして、現在のＦＩＦＯバッファ部３０の占有ビット数Ｂと変数Ｔの加算値が、ＦＩＦＯバッファ部３０のビット数Ｂｓの９割を超えたか否かを判別する（ステップＳ４３）。該加算値が変数Ｂｓの値の９割を超えたと判別されたとき（ステップＳ４３：Ｙ）、変数Ｔの値が、ＦＩＦＯバッファ部３０のビット数Ｂｓの９割から変数Ｂの値を減算した値に設定（クリップ）される（ステップＳ４４）。即ち、現在のＦＩＦＯバッファ部３０の占有ビット数Ｂと変数Ｔの加算値が、ＦＩＦＯバッファ部３０のビット数Ｂｓの９割を超えないように設定される。また、ステップＳ４１と同様に、変数Ｔの値が、下限値であるＲｓ／３０の値を下回らないようにする。
【０１３６】
一方、ステップＳ４３において、該加算値が変数Ｂｓの値の９割を超えていないと判別されたとき（ステップＳ４３：Ｎ）、変数Ｔの値は、１フレームあたりの平均発生ビット数Ｒｐから変数Ｂの値を減算し、変数Ｂｓの値の１割を加算した値に設定される（ステップＳ４５）。即ち、変数Ｂｓと変数Ｔの加算値から１フレームあたりの平均発生ビット数Ｒｐを減算した値が、ＦＩＦＯバッファ部３０のビット数Ｂｓの１割を下回らないように設定される。
【０１３７】
ステップＳ４４又はステップＳ４５に続いて、変数Ｔの値が、残りの使用可能ビット数Ｒｒより大きくならないように設定する（ステップＳ４６）。次に、フレーム間で極端に変数Ｔの値が変化しないように、変数Ｔの値を調整する（ステップＳ４７）。
【０１３８】
次に、量子化パラメータＱｃの値を求めるため、図６に示したモデル式を、変数Ｑｃの２次方程式として解く。そのため図１６に示すように、まず変数ｔｍｐの値を求める（ステップＳ４８）。
【０１３９】
ここで、モデルパラメータＸ２が０のとき、或いは変数ｔｍｐの値が負の値のとき（ステップＳ４９：Ｙ）、１次方程式となるモデル式より量子化パラメータＱｃを求める（ステップＳ５０）。ここで、変数Ｒは、現フレームに割り当てられるビット数Ｔから、前のフレームで使用したビット数のうちヘッダ等の情報以外のビット数Ｈｐを減算した値となるため、Ｑｃ＝Ｘ１×Ｅｃ／（Ｔ−Ｈｐ）より求められる。また変数Ｅｃの値は、図６に示したようにフレームの画素の絶対値平均の値である。
【０１４０】
ステップＳ４９において、モデルパラメータＸ２が０ではなく、かつ変数ｔｍｐの値が０以上の値のとき（ステップＳ４９：Ｎ）、図６に示すモデル式から導かれる２次方程式の解を、量子化パラメータＱｃの値とする（ステップＳ５１）。
【０１４１】
ステップＳ５０又はステップＳ５１に続いて、量子化パラメータＱｃの値が前フレームの量子化パラメータＱｐとの差が２５パーセント以内に収まり、かつ量子化パラメータＱｃの値が１〜３１の値となるように処理する（ステップＳ５２、ステップＳ５３、ステップＳ５４、ステップＳ５５）。ステップＳ５２、ステップＳ５４において、ｃｅｉｌ（ｘ）は、ｘの値を正の方向に切り上げて整数にすることを意味する。
【０１４２】
本実施形態では、更にステップＳ５５で求められた量子化パラメータＱｃの値の調整処理を行い（ステップＳ５６）、一連の処理を終了する（エンド）。
【０１４３】
図１９に、量子化パラメータＱｃの値の調整処理のフローの一例を示す。
【０１４４】
まず、量子化パラメータ上限閾値が設定されているか、解除されているかを判別する（ステップＳ１００）。量子化パラメータ上限閾値を設定するか、解除するかの判定処理は、レートコントロール部５０によって行われる。レートコントロール部５０は、圧縮処理に割り当て可能なビット数、残りフレーム数、又は該割り当て可能ビット数及び該残りフレーム数に基づいて、この判定処理を行う。
【０１４５】
ステップＳ１００において、量子化パラメータ上限閾値が解除されていると判別されたとき（ステップＳ１００：Ｙ）、ステップＳ５５で求められた量子化パラメータＱｃの値をそのまま用いるために、一連の処理を終了する（図１９のエンド、図１６のエンド）。
【０１４６】
ステップＳ１００において、量子化パラメータ上限閾値が設定されていると判別されたとき（ステップＳ１００：Ｎ）、ステップＳ５５で求められた量子化パラメータＱｃの値が、この調整処理に先立ってその値が設定される量子化パラメータ上限閾値QcUpperLimit以上か否かを判別する（ステップＳ１０１）。
【０１４７】
量子化パラメータＱｃの値が、量子化パラメータ上限閾値QcUpperLimit以上であると判別されたとき（ステップＳ１０１：Ｙ）、量子化パラメータＱｃの値を量子化パラメータ上限閾値QcUpperLimitに設定し（ステップＳ１０２）、一連の処理を終了する（エンド）。
【０１４８】
量子化パラメータＱｃの値が量子化パラメータ上限閾値QcUpperLimit以上ではないと判別されたとき（ステップＳ１０１：Ｎ）、ステップＳ５５で求められた量子化パラメータＱｃの値をそのまま用いるために、一連の処理を終了する（エンド）。
【０１４９】
レートコントロール部５０は、以下のような判定処理を行って、量子化パラメータ上限閾値を設定又は解除する。
【０１５０】
図２０に、量子化パラメータ上限閾値の設定又は解除の判定処理のフローの一例を示す。図２０の処理は、図１９のステップＳ１００に先立って行われる。なお、図２０では、上述したように量子化パラメータ上限閾値が解除されたとき、フレームスキップ部６０がスキップ処理を行うようにフレームスキップ設定を行う場合のフローを示す。また、図２０では、図１３及び図１４に示した基準ビット数と基準フレーム数とを用いた処理を示している。
【０１５１】
まず、レートコントロール部５０は、残りの使用可能ビット数Ｒｃ（図１７参照）が、８０ｋビット（１０ｋバイト）以上で１２０ｋビット（１５ｋバイト）より小さく、かつ残りのエンコードフレーム数Ｎｒ（図１７参照）が、QcFrameLimitLowより小さいか否か
を判別する（ステップＳ１１０）。
【０１５２】
ステップＳ１１０において、残りの使用可能ビット数Ｒｃが８０ｋビットより小さい、残りの使用可能ビット数Ｒｃが１２０ｋビット以上である、或いは残りのエンコードフレーム数ＮｒがQcFrameLimitLow以上であると判別されたとき（ステップＳ１１０：Ｎ）、
ステップＳ１１１に進む。
【０１５３】
ステップＳ１１１では、残りの使用可能ビット数Ｒｃが、４０ｋビット（５ｋバイト）以上で８０ｋビットより小さく、かつ残りのエンコードフレーム数Ｎｒが、QcFrameLimitMiddleより小さいか否かが判別される。
【０１５４】
ステップＳ１１１において、残りの使用可能ビット数Ｒｃが４０ｋビットより小さい、残りの使用可能ビット数Ｒｃが８０ｋビット以上である、或いは残りのエンコードフレーム数ＮｒがQcFrameLimitMiddle以上であると判別されたとき（ステップＳ１１１：Ｎ）、ステップＳ１１２に進む。
【０１５５】
ステップＳ１１２では、残りの使用可能ビット数Ｒｃが、０ｋビット以上で４０ｋビットより小さく、かつ残りのエンコードフレーム数Ｎｒが、QcFrameLimitHighより小さいか否かが判別される。
【０１５６】
ステップＳ１１２において、残りの使用可能ビット数Ｒｃが４０ｋビット以上である、或いは残りのエンコードフレーム数ＮｒがQcFrameLimitHigh以上であると判別されたとき（ステップＳ１１２：Ｎ）、量子化パラメータ上限閾値を設定する処理を行い（ステップＳ１１３）、一連の処理を終了する（エンド）。量子化パラメータ上限閾値を設定する処理としては、例えば量子化パラメータ上限閾値解除フラグをリセットする。このような量子化パラメータ上限閾値解除フラグを設けることで、ステップＳ１００では、容易に量子化パラメータ上限閾値が設定されているか、解除されているかを判別できる。
【０１５７】
ステップＳ１１０において、残りの使用可能ビット数Ｒｃが８０ｋビット以上で１２０ｋビットより小さく、かつ残りのエンコードフレーム数ＮｒがQcFrameLimitLowより小さ
いと判別されたとき（ステップＳ１１０：Ｙ）、量子化パラメータ上限閾値を解除する処理を行う（ステップＳ１１４）。量子化パラメータ上限閾値を解除する処理としては、例えば量子化パラメータ上限閾値の解除フラグをセットする。その後、フレームスキップ設定を行って（ステップＳ１１５）、一連の処理を終了する（エンド）。フレームスキップ部６０は、ステップＳ１１５のフレームスキップ設定の内容に基づいてスキップ処理を行う。
【０１５８】
ステップＳ１１５におけるフレームスキップ設定では、画像データ処理部７０において現在のフレームの画像データの生成処理をスキップさせるための設定を行う。このフレームスキップ設定により、例えば画像データ処理部７０の少なくとも一部を初期化したり、該少なくとも一部の動作クロックを停止させたりすることができるようになっている。本発明は、スキップ処理を行うためのフレームスキップ設定の内容に限定されるものではなく、結果的に符号化データが生成されなければよい。
【０１５９】
ステップＳ１１１において、残りの使用可能ビット数Ｒｃが４０ｋビット以上で８０ｋビットより小さく、かつ残りのエンコードフレーム数ＮｒがQcFrameLimitMiddleより小さいと判別されたとき（ステップＳ１１１：Ｙ）、ステップＳ１１４に進む。
【０１６０】
ステップＳ１１２において、残りの使用可能ビット数Ｒｃが０ｋビット以上で４０ｋビットより小さく、かつ残りのエンコードフレーム数ＮｒがQcFrameLimitHighより小さいと判別されたとき（ステップＳ１１２：Ｙ）、ステップＳ１１４に進む。
【０１６１】
以上のようにして、レートコントロール部５０は、圧縮処理に割り当て可能なビット数及び残りフレーム数に基づいて量子化パラメータ上限閾値を設定又は解除するかを判定する。
【０１６２】
なお、レートコントロール部５０では、図１９の処理に加えて、この調整処理に先立ってその値が設定される量子化パラメータ下限閾値QcLowerLimit以上となるように、量子化パラメータＱｃの値を求めるようにしてもよい。即ち、その値が設定可能な量子化パラメータ下限閾値QcLowerLimitが設定されている場合には、レートコントロール部５０が、予測データサイズを用いて、量子化パラメータ上限閾値QcUpperLimit以下で、かつ量子化パラメータ下限閾値QcLowerLimit以上となるように量子化パラメータを求めることができる。そして、レートコントロール部５０は、量子化パラメータ上限閾値QcUpperLimitを解除したとき、更に量子化パラメータ下限閾値QcLowerLimitを解除すると共に、量子化パラメータ上限閾値QcUpperLimit及び量子化パラメータ下限閾値QcLowerLimitに関わらず量子化パラメータを求めるようにしてもよい。
【０１６３】
図２１に、量子化パラメータＱｃの値の調整処理のフローの他の例を示す。ここでは、量子化パラメータ上限閾値QcUpperLimit及び量子化パラメータ下限閾値QcLowerLimitが設定されている場合の処理例について説明する。
【０１６４】
まず、量子化パラメータ上限閾値が設定されているか、解除されているかを判別する（ステップＳ１２０）。量子化パラメータ上限閾値が設定されていると判別されたとき（ステップＳ１２０：Ｎ）、ステップＳ５５で求められた量子化パラメータＱｃの値が、この調整処理に先立ってその値が設定される量子化パラメータ上限閾値QcUpperLimit以上か否かを判別する（ステップＳ１２１）。
【０１６５】
量子化パラメータＱｃの値が、量子化パラメータ上限閾値QcUpperLimit以上であると判別されたとき（ステップＳ１２１：Ｙ）、量子化パラメータＱｃの値を量子化パラメータ上限閾値QcUpperLimitに設定し（ステップＳ１２２）、ステップＳ１２３に進む。
【０１６６】
量子化パラメータＱｃの値が量子化パラメータ上限閾値QcUpperLimit以上ではないと判別されたとき（ステップＳ１２１：Ｎ）、ステップＳ１２３に進む。
【０１６７】
次に、量子化パラメータＱｃの値が、この調整処理に先立ってその値が設定される量子化パラメータ下限閾値QcLowerLimit以下であるか否かを判別する（ステップＳ１２３）。量子化パラメータＱｃの値が、量子化パラメータ下限閾値QcLowerLimit以下であると判別されたとき（ステップＳ１２３：Ｙ）、量子化パラメータＱｃの値を量子化パラメータ下限閾値QcLowerLimitに設定する（ステップＳ１２４）。
【０１６８】
ステップＳ１２３において、量子化パラメータＱｃの値が量子化パラメータ下限閾値QcLowerLimit以下ではないと判別されたとき（ステップＳ１２３：Ｎ）、その時点の量子化パラメータＱｃの値が量子化部２０に供給されることになる（図２１のエンド、図１６のエンド）。
【０１６９】
一方、ステップＳ１２０において、量子化パラメータ上限閾値が解除されていると判別されたとき（ステップＳ１２０：Ｙ）、一連の処理を終了する（エンド）。即ち、量子化パラメータ下限閾値が設定されている場合には、レートコントロール部５０が、量子化パラメータ上限閾値QcUpperLimitを解除したとき、更に量子化パラメータ下限閾値QcLowerLimitを解除すると共に、量子化パラメータ上限閾値QcUpperLimit及び量子化パラメータ下限閾値QcLowerLimitに関わらず量子化パラメータを求める。但し、ステップＳ５３で、量子化パラメータＱｃの上限値が３１に設定されているため、この値より大きくなることはない。
【０１７０】
以上説明したようにして求められた量子化パラメータＱｃを量子化部２０に供給することで、量子化部２０の量子化ステップを変化させる。
【０１７１】
即ち、例えば図２２に示すように、ＤＣＴ係数により表わされる画像データのＤＣＴ係数Ｄｉｊを、量子化テーブルの対応する位置の量子化ステップ値Ｑｉｊと量子化パラメータＱｃとの積で除算して、量子化されたＤＣＴ係数ｄｉｊを求める。その結果、量子化されたＤＣＴ係数のゼロデータを増減させることができる。
【０１７２】
３．４  構成例
図２３に、本実施形態の画像データ圧縮装置の詳細な機能ブロック図を示す。但し、図８に示す画像データ圧縮装置１０と同一部分には同一符号を付し、適宜説明を省略する。
【０１７３】
図２３に示す画像データ圧縮装置１００は、ＭＰＥＧ−４に準拠した動画像の画像データの圧縮処理を行う。画像データ圧縮装置１００は、ハードウェア処理部１１０と、ソフトウェア処理部１５０とを含む。
【０１７４】
ハードウェア処理部１１０は、動画像の画像データをハードウェアにより処理する。このハードウェア処理部１１０は、量子化部２０を含む画像データ処理部７０と、ＦＩＦＯバッファ部３０と、ソフトウェア起動フラグレジスタ１３０と、スキップフラグレジスタ１３２とを含む。ハードウェア処理部１１０は、ソフトウェアを使用せず、ＡＳＩＣや専用回路等のハードウェアにより実現される。
【０１７５】
ソフトウェア処理部１５０は、ＦＩＦＯバッファ部３０から読み出された量子化データをソフトウェアにより符号化処理して符号化データを生成する。このソフトウェア処理部１５０は、符号化データ生成部４０と、レートコントロール部５０と、フレームスキップ部６０とを含む。ソフトウェア処理部１５０は、ソフトウェア（ファームウェア）によりその機能が実現される処理部であり、ソフトウェア（ファームウェア）を読み込んだＣＰＵ等（ハードウェア）によりその機能が実現される。
【０１７６】
より具体的にはハードウェア処理部１１０の画像データ処理部７０は、離散コサイン変換（ＤＣＴ）部１１２、動き検出部１１４、逆量子化部１１６、逆ＤＣＴ部１１８、動き補償部１２０を含む。ＤＣＴ部１１２は、図１（Ａ）に示すステップＳ２の処理を行う。動き検出部１１４は、図１（Ａ）に示すステップＳ１の処理を行う。逆量子化部１１６は、図１（Ａ）に示すステップＳ４の処理を行う。逆ＤＣＴ部１１８は、図１（Ａ）に示すステップＳ５の処理を行う。動き補償部１２０は、図１（Ａ）に示すステップＳ６の処理を行う。
【０１７７】
即ち、ハードウェア処理部１１０は、現在のフレームの入力画像データと現在のフレームの１フレーム前の過去画像データとの差分を動きベクトル情報として出力し、該動きベクトル情報に対して離散コサイン変換を行って画像データとして量子化部に出力する。更に、この量子化データに対して、上述の量子化ステップで逆量子化して求められる逆量子化データに基づいて、上記の過去画像データをする。
【０１７８】
そして、ソフトウェア起動フラグレジスタ１３０がセットされたときに、このようなハードウェア処理部１１０の処理が開始される。ソフトウェア起動フラグレジスタ１３０は、ソフトウェア処理部１５０によってセットされる。より具体的には、入力画像データの供給が開始されたことを示す割込処理において、ソフトウェア処理部１６０がソフトウェア起動フラグレジスタ１３０をセットする（ソフトウェア起動フラグ情報をセット状態に設定する）。
【０１７９】
またスキップフラグレジスタ１３２がセットされたとき、画像データ処理部７０において画像データの生成処理がスキップされる。より具体的には、フレームスキップ部６０が上述の条件でスキップ処理をすると判断したときに、ソフトウェア処理部１５０（フレームスキップ部６０）は、スキップフラグレジスタ１３２をセット（スキップフラグ情報をセット状態に設定する）。スキップフラグレジスタ１３２は、フレーム毎に一旦リセット状態に設定される。この場合、ハードウェアによってスキップフラグレジスタ１３２をリセット（リセット状態に設定）してもよいし、ソフトウェア処理部１５０によりフレーム毎にリセットされるようにしてもよい。
【０１８０】
なおハードウェア処理部１１０は、これら各部をすべて含んで構成される必要はなく、上記各部のうち少なくとも１つが省略される構成でもよい。
【０１８１】
ソフトウェア処理部１５０の符号化データ生成部４０は、ＤＣ／ＡＣ予測部１５２、スキャン部１５４、ＶＬＣ符号化部１５６を含む。ＤＣ／ＡＣ予測部１５２は、図１（Ａ）に示すステップＳ７の処理を行う。スキャン部１５４は、図１（Ａ）に示すステップＳ８の処理を行う。ＶＬＣ符号化部１５６は、図１（Ａ）に示すステップＳ９の処理を行う。
【０１８２】
なおソフトウェア処理部１５０は、これら各部をすべて含んで構成される必要はなく、上記各部のうち少なくとも１つが省略される構成でもよい。例えば、ソフトウェア処理部１５０は、ＦＩＦＯバッファ部３０から読み出された量子化データを可変長符号に符号化するようにしてもよい。また、ソフトウェア処理部１５０は、ＦＩＦＯバッファ部３０から読み出された量子化データを並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化するようにしてもよい。更にまた、ソフトウェア処理部１５０は、ＦＩＦＯバッファ部３０から読み出された量子化データからＤＣ成分及びＡＣ成分とを求め、このＤＣ成分及びＡＣ成分を並び換えるスキャン処理を行い、該スキャン処理の結果を可変長符号に符号化するようにしてもよい。
【０１８３】
ここで、本実施形態において、図１（Ａ）のステップＳ１〜Ｓ６をハードウェア処理し、ステップＳ７〜Ｓ１０をソフトウェア処理する理由は下記の通りである。まず、図１（Ａ）のステップＳ３の量子化後であれば、図５に示すように各ブロック内にはゼロデータが圧倒的に多く、量子化前のデータ（図３）と比較すればデータの情報量の種類が圧倒的に少ない。しかも、ステップＳ７〜Ｓ１０の演算自体の負荷も少ないので、図１（Ａ）のステップＳ７〜Ｓ１０をソフトウェアで処理しても、その処理の負荷は小さくなる。逆に、図１（Ａ）のステップＳ３の量子化、ステップＳ２のＤＣＴ、及びステップＳ５の逆ＤＣＴなどは、情報量が多い上に演算も複雑で、ソフトウェアで処理するには負荷が大きい。これらの量子化、ＤＣＴ、逆ＤＣＴ、動き補償などは、負荷が重い処理ではあるが規格が決まっているため変更の必要性は乏しく、また、図１（Ａ）のステップＳ１〜Ｓ６には繰り返し処理が多いため、ハードウェアでの処理に適している。また、上述した通りハードウェア処理部１１０にて処理された量子化後のデータ量が少ないので、ハードウェア処理部１１０からソフトウェア処理部１５０に伝送されるデータ量が少なく、データ転送制御の負担を軽くできる。
【０１８４】
図２４に、画像データ圧縮装置１００のハードウェア構成例を示す。ここでは、図２３に示すハードウェア処理部１１０が集積化され、エンコードＩＣ（集積回路）（広義にはエンコーダ）２００として半導体装置に実装される。また図２３に示すソフトウェア処理部１５０の機能は、ホスト２１０により実現される。なお図２４において、図２３に示すハードウェア処理部１１０と同一部分には同一符号を付し、説明を適宜省略する。
【０１８５】
ホスト２１０は、ＣＰＵ２１２とメモリ２１４とを含む。メモリ２１４には、符号化データ生成部４０、レートコントロール部５０及びフレームスキップ部６０の機能を実現するためのプログラムが格納される。ＣＰＵ２１２は、メモリ２１４に格納されたプログラムを読み出して、該プログラムに基づいて処理することで、符号化データ生成部４０、レートコントロール部５０及びフレームスキップ部６０の機能を実現する。
【０１８６】
ここでエンコードＩＣ２００は、図示しないカメラモジュール（広義には撮像部）において撮像により得られた動画像の画像データを、ＭＰＥＧ−４の規格に準拠してエンコードを行い、一定のレートで符号化データを生成する。このためエンコードＩＣ２００は、図２３に示すハードウェア処理部１１０の各部の機能を実現する回路の他に、ホストインタフェース（InterFace：Ｉ／Ｆ）２０２、カメラＩ／Ｆ（広義には画像入力インタフェース）２０４、量子化パラメータ設定レジスタ２０６、ソフトウェア起動フラグレジスタ１３０、スキップフラグレジスタ１３２を含む。
【０１８７】
ホスト２１０の処理において、スキップフラグレジスタ１３２がセットされる。スキップフラグレジスタ１３２がセットされると、画像データ処理部７０における画像データの生成処理がスキップされる。図２４では、スキップフラグレジスタ１３２がセットされると、動き検出部１１４の内部状態を初期化することによって、画像データ処理部７０における画像データの生成処理をスキップするようになっている。
【０１８８】
図２５に、図２４の動き検出部１１４のハードウェア構成例を示す。本発明は、図２５に示す動き検出部１１４の構成に限定されるものではない。
【０１８９】
動き検出部１１４は、シーケンサ５００と、動き検出演算部５１０とを含む。動き検出演算部５１０は、シーケンサ５００からの制御信号に基づいて動きベクトル情報等を演算し、画像データとしてＤＣＴ部１１２に出力する。シーケンサ５００は、予め決められた複数のステート間を遷移し、各ステートにおいて制御信号を出力し、動き検出演算部５１０の各部を制御して動き検出のための処理を制御するようになっている。
【０１９０】
動き検出演算部５１０では、入力画像データが入力バッファ５１２に保持される。また、動き補償部１２０からの過去画像データが、ローカルデコードデータバッファ５１４に保持される。動き検出部１１４は、入力画像データと過去画像データとの間で、各画素の絶対差分和が最小となるときの動きベクトル情報を出力する。そのため、探索用画素演算回路５１６は、ローカルデコードデータバッファ５１４に保持された過去画像データの画素について、探索用画素値（例えば、隣接する２点又は４点の輝度成分の平均値）を求める。そしてセレクタ５１８が、探索用画素演算回路５１６又はローカルデコードデータバッファ５１４のいずれかを出力する。
【０１９１】
絶対差分演算回路５２０は、例えばマクロブロック単位で、入力バッファ５１２に保持された入力画像データの画素とセレクタ５１８の出力の画素との間の絶対差分和を求める。最小誤差評価回路５２２は、この絶対差分和が最小値か否かを評価する。そして最小誤差評価回路５２２が、絶対差分演算回路５２０の演算結果が最小値であると判断すると、出力バッファ５２４に出力する。即ち、最小誤差評価回路５２２の評価によって絶対差分演算回路５２０の演算結果が最小値となるように、過去画像データの画素の値又は探索用画素の値を繰り返し演算していく。
【０１９２】
こうして出力バッファ５２４に出力された動きベクトル情報が、画像データとしてＤＣＴ部１１２に供給される。また複雑度演算回路５２６は、上述のように複雑度Ｅｃを求めて、該複雑度Ｅｃをホスト２１０に対して出力できるようになっている。
【０１９３】
このような動き検出部１１４のシーケンサ５００には、スキップフラグレジスタ１３２のスキップフラグ情報が入力される。そしてスキップフラグ情報がセット状態に設定されたとき、シーケンサ５００は、動き検出演算部５１０の内部状態を初期状態に戻す。即ち、スキップフラグレジスタ１３２がセットされると、動き検出部１１４は動き検出処理を直ちに中止することができるようになっている。
【０１９４】
本実施形態では、上述のようにＦＩＦＯバッファ部３０を有しているにも関わらず、ＦＩＦＯバッファ部３０のアクセス回数から符号化データのデータサイズを予測データサイズとして予測し、該予測データサイズに基づきビットレートを制御できる。しかも、所定のビットレートを実現できないと判断した場合には、動き検出部１１４の処理を中止して画像データの生成処理をスキップできる。即ち、現在のフレームの１フレーム前の量子化データのデータサイズから該１フレーム前の符号化データの予測データサイズを求め、該予測データサイズに基づいて現フレームの画像データの生成処理をスキップできるようになる。
【０１９５】
図２４において、エンコードＩＣ２００は、ＦＩＦＯ部２０８を含む。ＦＩＦＯ部２０８は、ＦＩＦＯバッファ部３０、カウントレジスタ３２、ＦＩＦＯアクセス部３４を含む。ＦＩＦＯアクセス部３４は、量子化部２０からの量子化データをＦＩＦＯバッファ部３０に書き込む制御を行うと共に、カウントレジスタ３２に保持されるカウントデータを更新する処理を行う。より具体的には、ＦＩＦＯアクセス部３４は、所定のバイト数単位で、量子化データをＦＩＦＯバッファ部３０に書き込む制御を行う。またＦＩＦＯアクセス部３４は、ＦＩＦＯバッファ部３０への書き込み制御を行う毎に、カウントデータをインクリメントしてカウントレジスタ３２を更新する処理を行う。そしてカウントレジスタ３２には、１フレーム分の量子化データがＦＩＦＯバッファ部３０に書き込まれた時点で、該量子化データのデータサイズに対応した書き込み回数（アクセス回数）の情報が保持されることになる。
【０１９６】
エンコードＩＣ２００とホスト２１０は、割り込み信号とデータをやり取りすることで、図８や図２３に示す画像データ圧縮装置の機能を実現する。
【０１９７】
ホストＩ／Ｆ２０２は、ホスト２１０とのインタフェース処理を行う。より具体的には、ホストＩ／Ｆ２０２は、エンコードＩＣ２００からホスト２１０に対する割り込み信号の生成や、ホスト２１０とエンコードＩＣ２００との間のデータの送受信の制御を行う。ホストＩ／Ｆ２０２は、ＦＩＦＯバッファ部３０、カウントレジスタ３２に接続される。
【０１９８】
カメラＩ／Ｆ２０４は、図示しないカメラモジュールからの動画像の入力画像データを入力するためのインタフェース処理を行う。カメラＩ／Ｆ２０４は、動き検出部１１４に接続される。
【０１９９】
図示しないカメラモジュールは、撮像により得られた動画像の画像データを、入力画像データとしてエンコードＩＣ２００に供給する。このときカメラモジュールは、入力画像データのフレームの区切りを指定するＶＳＹＮＣ信号（垂直同期信号）もエンコードＩＣ２００に供給する。エンコードＩＣ２００では、カメラＩ／Ｆ２０４がカメラモジュールからのＶＳＹＮＣ信号をＶＳＹＮＣ割り込みとして受け付けると、ホストＩ／Ｆ２０２を介してホスト２１０にカメラＶＳＹＮＣ割り込みとして通知する。これにより、エンコードを開始するのに先立って、ホスト２１０が、所与の付加処理を実施することができるようになる。
【０２００】
図２４において、動き検出が行われる段階では、少なくとも１フレーム分の量子化データがＦＩＦＯバッファ部３０に書き込まれる。動き検出部１１４の動き検出が完了すると、動き検出部１１４は、動き検出完了割り込み（ＭＥ割り込み）を、ホストＩ／Ｆ２０２を介してホスト２１０に通知する。
【０２０１】
図２６に、ホスト２１０で行われる割り込み受け付け処理のフローの一例を示す。メモリ２１４には、図２６に示す処理を実現するプログラムが格納される。ＣＰＵ２１２は、このプログラムを読み込んで、図２６に示す処理を実現する。
【０２０２】
まず、ＣＰＵ２１２は、割り込み入力を監視している（ステップＳ７０：Ｎ）。そして、ＣＰＵ２１２が、割り込みを検出したとき（ステップＳ７０：Ｙ）、その割り込みがカメラＶＳＹＮＣ割り込みであるか否かを判別する（ステップＳ７１）。
【０２０３】
ＣＰＵ２１２が、カメラＶＳＹＮＣ割り込みであると判別したとき（ステップＳ７１：Ｙ）、ソフトウェア起動フラグレジスタ１３０をセットする処理を行う（ステップＳ７２）。
【０２０４】
ステップＳ７１において、ＣＰＵ２１２が、カメラＶＳＹＮＣ割り込みではないと判別したとき（ステップＳ７１：Ｎ）、後述するＭＥ割り込みであるか否かを判別する（ステップＳ７３）。
【０２０５】
ＣＰＵ２１２が、ＭＥ割り込みであると判別したとき（ステップＳ７３：Ｙ）、後述するＭＥ割り込み処理を実行する（ステップＳ７４）。
【０２０６】
ステップＳ７３において、ＣＰＵがＭＥ割り込みではないと判別したとき（ステップＳ７３：Ｎ）、ＣＰＵ２１２が、後述するエンコード完了割り込みであるか否かを判別する（ステップＳ７５）。ＣＰＵ２１２が、エンコード完了割り込みであると判別したとき（ステップＳ７５：Ｙ）、後述するエンコード完了割り込み処理を実行する（ステップＳ７６）。
【０２０７】
ステップＳ７５において、ＣＰＵ２１２が、エンコード完了割り込みではないと判別したとき（ステップＳ７５：Ｎ）、所定の割り込み処理を実行する（ステップＳ７７）。
【０２０８】
ステップＳ７２、ステップＳ７４、ステップＳ７６又はステップＳ７７に続いて、終了ではないとき（ステップＳ７８：Ｎ）、ステップＳ７０に戻り、終了のとき（ステップＳ７８：Ｙ）、一連の処理を終了する（エンド）。
【０２０９】
図２４に戻って、説明を続ける。ホストＩ／Ｆ２０２を介してソフトウェア起動フラグレジスタ１３０が、ホスト２１０によってセットされると、エンコードＩＣ２００ではエンコードが開始される。
【０２１０】
動き検出部１１４は、エンコード開始後、最初に取り込まれる入力画像データについては動き検出を行わず、次のフレームの入力画像データが取り込まれてから動き検出を行う。ここで、動き検出の詳細については上述の通りであるため、逆量子化部１１６等の動作についての説明は省略する。動き検出部１１４の動き検出が完了すると、動き検出部１１４は、動き検出完了割り込み（ＭＥ割り込み）を、ホストＩ／Ｆ２０２を介してホスト２１０に通知する。
【０２１１】
図２７に、ＭＥ割り込み処理のフローの一例を示す。メモリ２１４には、図２７に示す処理を実現するプログラムが格納される。ＣＰＵ２１２は、このプログラムを読み込んで、図２７に示す処理を実現する。
【０２１２】
このＭＥ割り込み処理は、図２６のステップＳ７４で行われる。
【０２１３】
ＭＥ割り込みが検出されると、ＣＰＵ２１２は、ホストＩ／Ｆ２０２を介して、動き検出部１１４で生成される複雑度Ｅｃを読み出す（ステップＳ８０）。この複雑度Ｅｃは、図６に示す式に従って動き検出部１１４で生成される。
【０２１４】
続いてＣＰＵ２１２は、量子化パラメータＱｃを求める（ステップＳ８１）。より具体的には、ＣＰＵ２１２は、図１５〜図１９で説明したように量子化パラメータＱｃの値を求める。
【０２１５】
次にＣＰＵ２１２は、フレームスキップ処理を行う（ステップＳ８２）。フレームスキップ処理は、後述する処理であり、例えば図２０のフレームスキップ設定（ステップＳ１１５）は、現フレームをスキップする判断がされたという意味で、ソフトウェアフラグを設定するだけの処理である。
【０２１６】
その後、フレームスキップ処理の結果、ソフトウェアフラグが設定された場合（ステップＳ８３：Ｙ）、ホストＩ／Ｆ２０２を介してスキップフラグレジスタ１３２をＣＰＵ２１２がセットし（ステップ８４）、ソフトウェアフラグが設定されていない場合（ステップＳ８３：Ｎ）、ステップＳ８１で求めた量子化パラメータＱｃの値を、ホストＩ／Ｆ２０２を介して、量子化パラメータ設定レジスタ２０５に設定する。（ステップＳ８５）
ステップＳ８４及びＳ８５の後は、一連の処理を終了する（エンド）。
【０２１７】
図２８に、図２７のステップＳ８２におけるフレームスキップ処理のフローの一例を示す。メモリ２１４には、図２８に示す処理を実現するプログラムが格納される。ＣＰＵ２１２は、このプログラムを読み込んで、図２８に示す処理を実現する。
【０２１８】
このフレームスキップ処理では、図２０のステップＳ１１５において、図示しないフレームスキップ設定フラグがセットされるものとする。
【０２１９】
まず、カメラＶＳＹＮＣ割り込みが検出されると、ＣＰＵ２１２は、上述のように求められた量子化パラメータＱｃの値が、スキップ閾値SkipBorderValueより大きいか否かを判別する（ステップＳ１４０）。
【０２２０】
ステップＳ１４０において、量子化パラメータＱｃの値が、スキップ閾値SkipBorderValueより大きいと判別されたとき（ステップＳ１４０：Ｙ）、変数であるカウント値Countをインクリメントする（ステップＳ１４１）。カウント値Countは、初期化時に０にリセットされている。またステップＳ１４０において、量子化パラメータＱｃの値が、スキップ閾値SkipBorderValueより大きくないと判別されたとき（ステップＳ１４０：Ｎ）、カウント値Countを０に初期化して（ステップＳ１４９）、一連の処理を終了する（エンド）。
【０２２１】
ステップＳ１４１に続いて、カウント値Countがスキップ閾値SkipBorderCountより大きいか否かを判別する（ステップＳ１４２）。スキップ閾値SkipBorderCountの値は、この処理に先立って設定される。そして、カウント値Countがスキップ閾値SkipBorderCount以下であると判別されたとき（ステップＳ１４２：Ｎ）、処理を終了する（エンド）。こうすることで、フレームスキップ設定フラグがセットされたとしても、少なくとも１フレームの間隔を置いてスキップ処理が行われるようになる。より具体的には、スキップ閾値SkipBorderCountのフレーム数の間隔を置いてスキップ処理が行われる。
【０２２２】
ステップＳ１４２において、カウント値Countがスキップ閾値SkipBorderCountより大きいと判別されたとき（ステップＳ１４２：Ｙ）、変数であるフレームカウント値FCountをインクリメントする（ステップＳ１４３）。フレームカウント値FCountは、初期化時に０にリセットされている。
【０２２３】
その後、ＣＰＵ２１２が、ソフトウェアフラグをセットし（ステップＳ１４４）、カウント値Countを０に設定する（ステップＳ１４５）。
【０２２４】
次に、フレームカウント値FCountが、フレームリセット値FResetより大きいか否かを判別する（ステップＳ１４６）。フレームリセット値FResetの値は、この処理に先立って設定される。そして、フレームカウント値FCountがフレームリセット値FReset以下であると判別されたとき（ステップＳ１４６：Ｎ）、一連の処理を終了する（エンド）。
【０２２５】
ステップＳ１４６において、フレームカウント値FCountがフレームリセット値FResetより大きいと判別されたとき（ステップＳ１４６：Ｙ）、フレームスキップ設定フラグをリセットし（ステップＳ１４７）、フレームカウント値FCountに０を設定し（ステップＳ１４８）、一連の処理を終了する（エンド）。
【０２２６】
こうすることで、フレームスキップ設定フラグが設定された場合、少なくとも１フレームの間隔を置いて２回以上、スキップ処理が行われるようになる。より具体的には、スキップ閾値SkipBorderCountのフレーム数の間隔を置いて、フレームリセット値FResetの回
数だけスキップ処理が行われる。
【０２２７】
以上のようにして、ホスト２１０が、少なくとも１フレームの間隔を置いて２回以上、スキップ処理を行うことができる。
【０２２８】
なお、閾値SkipBorderValue、SkipBorderCountは、図２８に示す処理に先立って設定される。
【０２２９】
図２４に戻って、説明を続ける。エンコードＩＣ２００では、スキップフラグレジスタ１３２がセットされると、動き検出部１１４が初期化され、現在のフレームの画像データの生成処理がスキップされる。
【０２３０】
一方、エンコードＩＣ２００は、量子化パラメータ設定レジスタ２０６に量子化パラメータＱｃの値が設定されたことにより、ＤＣＴ部１１２の処理を開始する。そして上述のように量子化部２０では、量子化パラメータ設定レジスタ２０６に設定された量子化パラメータと、図示しない量子化テーブルの量子化ステップ値とを用いて、ＤＣＴ部１１２によって生成されたＤＣＴ係数（広義には画像データ）を量子化する。その結果である量子化データは、ＦＩＦＯバッファ部３０に書き込まれる。
【０２３１】
このとき、ＦＩＦＯアクセス部３４は、当該フレーム内においてＦＩＦＯバッファ部３０への書き込みが発生する毎にカウントデータをインクリメントしてカウントデータを更新する。そして、ＦＩＦＯバッファ部３０への量子化データの書き込みが完了すると、ＦＩＦＯ部２０８は、１フレームのエンコード処理が終了したことを示すエンコード完了割り込みを、ホストＩ／Ｆ２０２を介してホスト２１０に通知する。
【０２３２】
図２９に、エンコード完了割り込み処理のフローの一例を示す。メモリ２１４には、図２９に示す処理を実現するプログラムが格納される。ＣＰＵ２１２は、このプログラムを読み込んで、図２９に示す処理を実現する。
【０２３３】
エンコード完了割り込み処理は、図２６に示すステップＳ７６で行われる。
【０２３４】
ＣＰＵ２１２がエンコード完了割り込みを検出すると、カウントレジスタ３２に保持されたカウントデータを読み出す（ステップＳ９０）。続いて、図１８に示すように、ステップＳ９０で読み出されたカウントデータをｘ０として、予測データサイズｙ０を求め、所定のテンポラリ領域に保存する（ステップＳ９１）。
【０２３５】
次に、処理実行フラグＰＦＬＧが０であるか否かを判別する（ステップＳ９２）。処理実行フラグＰＦＬＧは、符号化データの生成処理（図１（Ａ）のステップＳ７〜Ｓ９の処理）を実行中か否かを示すフラグである。処理実行フラグＰＦＬＧが０ではないと判別したとき（ステップＳ９２：Ｎ）、符号化データ生成部４０の処理を実行中と判断し、一連の処理を終了する（エンド）。
【０２３６】
ステップＳ９２において、処理実行フラグＰＦＬＧが０であると判別したとき（ステップＳ９２：Ｙ）、符号化データの生成処理を実行する。
【０２３７】
この符号化データの生成処理では、まず処理実行フラグＰＦＬＧを１に設定する（ステップＳ９３）。これにより、該生成処理の処理中に、エンコード完了割り込みが発生した場合でも、次のフレームの符号化データの生成処理の実行を待たせることができる。
【０２３８】
そして、ＦＩＦＯバッファ部３０から所定のバイト数単位で１フレームの量子化データを読み出す（ステップＳ９４）。
【０２３９】
そしてＣＰＵ２１２は、マクロブロック単位で、ＤＣ／ＡＣ予測処理（ステップＳ９５）、スキャン処理（ステップＳ９６）及び可変長符号化処理（ステップＳ９７）を行って符号化データを生成する。
【０２４０】
次にＣＰＵ２１２は、ステップＳ９７で生成した符号化データにマクロブロックヘッダを付加する。このようにして得られた符号化データを１ＶＯＰ（Video Object Plane）分行って、既に求められた量子化パラメータを基にＧＯＶヘッダやＶＯＰヘッダを生成し（ステップＳ９８）、所定のフレーム数分のエンコードが終了したらＭＰＥＧ−４ファイルとして出力する（ステップＳ９９）。
【０２４１】
そして、ステップＳ９９に続いて、処理実行フラグＰＦＬＧを０に設定し（ステップＳ１００）、一連の処理を終了する（エンド）。
【０２４２】
以上のようにして、ハードウェア処理部１１０とソフトウェア処理部１５０とに分担して、画像データの圧縮処理を行う。
【０２４３】
以上のようなエンコードＩＣ２００のレートコントロールを行うために、本実施形態では、ホスト２１０が次のような１次変換を行う処理式を記憶しておき、上述のようなレートコントロールを行う。
【０２４４】
図３０に、カウントデータと予測データサイズとの関係図を示す。
【０２４５】
ここでは、ビットレートが６４キロビット毎秒（ｂｐｓ）、フレームレートが１５フレーム毎秒（ｆｐｓ）、画像サイズＱＣＩＦ（１７６×１４４ピクセル）とし、横軸をＦＩＦＯバッファ部３０のアクセス回数を示すカウントデータ、縦軸をＶＬＣ符号化後の符号化データのデータサイズ（バイト数）の実測値を示している。
【０２４６】
このように、カウントデータと符号化データのデータサイズとの関係が線形関係にあることがわかる。
【０２４７】
図３０に示す実測値に基づいて、（１）式において、例えばａを４／５、ｂを（１３．５６２５×９９×８）とすることで、図３０に示す線形関係を近似的に表現できる。従って、この１次変換式を用いて、予測データサイズを容易に求めることができる。
【０２４８】
３．５  効果
次に、本実施形態の比較例との対比において、本実施形態の効果について説明する。上述のような画像データの圧縮処理についてハードウェアとソフトウェアに分担させる場合、両者の処理能力を吸収するＦＩＦＯバッファ部３０が必要とされる。このような場合に、上述のレートコントロール方式を実現する比較例として、本実施形態と異なり、過去の複数フレームの符号化データのデータサイズに基づいて量子化ステップを変化させることが考えられる。
【０２４９】
図３１に、本実施形態の比較例における画像データ圧縮装置の構成の概要のブロック図を示す。比較例における画像データ圧縮装置２５０において、図８に示す本実施形態における画像データ圧縮装置１０と同一部分には同一符号を付し、適宜説明を省略する。
【０２５０】
本実施形態における画像データ圧縮装置１０に対して、比較例における画像データ圧縮装置２５０では、レートコントロール部２５２が、Ｎ（Ｎは２以上の整数）フレーム分の符号化データの平均データサイズに基づいて、量子化部２０の量子化ステップを変化させるようになっている。
【０２５１】
即ち、比較例では、レートコントロール部２５２は、量子化部２０で量子化される画像データのフレームより過去のＮフレーム分の各フレームの符号化データのデータサイズを平均化して平均データサイズを求め、該平均データサイズに基づいて、量子化ステップを変化させる。例えば、量子化部２０で量子化される画像データが第Ｌ（Ｌは正の整数）フレーム目であるとき、レートコントロール部２５２は、第Ｌフレームより過去のＮフレーム分の第（Ｌ−Ｐ）（但し、Ｌ＞Ｐ、Ｐは正の整数）フレーム目〜第（Ｌ−Ｐ−Ｎ＋１）（但し、Ｌ−Ｐ＞Ｎ−１）フレーム目までの符号化データのデータサイズを平均化して求めた平均データサイズに基づいて、量子化ステップを変化させる。
【０２５２】
図３２に、比較例におけるレートコントロールの手法の説明図を示す。但し、図３１に示す画像データ圧縮装置２５０と同一部分には同一符号を付し、適宜説明を省略する。
【０２５３】
図３３に、図３２に示すレートコントロール手法の動作タイミングの模式図を示す。
【０２５４】
量子化部２０は、時刻ｔ１、ｔ２、・・・において、フレーム単位で画像データを量子化し、量子化データを第１のフレームＦ１、第２のフレームＦ２、・・・の順にＦＩＦＯバッファ部３０に書き込む。符号化データ生成部４０は、ＦＩＦＯバッファ部３０への量子化データの書き込みタイミングとは非同期で、ＦＩＦＯバッファ部３０から量子化データをフレーム単位で読み出し、符号化処理を行う。
【０２５５】
そしてレートコントロール部２５２が、量子化部２０で量子化される画像データのフレーム（現在のフレーム）より過去の例えば４（Ｎ＝４）フレーム分の各フレームの符号化データのデータサイズを平均化して求めた平均データサイズに基づいて、量子化部２０の量子化ステップを変化させる。これにより、量子化部２０で量子化された量子化データのサイズが変化し、この結果として符号化データ生成部４０が生成する符号化データのサイズも変化する。
【０２５６】
図３３では、符号化データ生成部４０がＦＩＦＯバッファ部３０から第１〜第４のフレームＦ１〜Ｆ４の量子化データを順次読み出して、各フレームの符号化データをそれぞれ生成して出力している。このとき量子化部２０が第７のフレームＦ７の画像データの量子化を行うものとする。
【０２５７】
レートコントロール部２５２は、第１〜第４のフレームＦ１〜Ｆ４の各フレームの符号化データのサイズを記憶しており、第１〜第４のフレームＦ１〜Ｆ４における各フレームの符号化データのサイズの平均値を平均データサイズとして求める。そして図６及び図７で説明したように、レートコントロール部２５２は、この平均データサイズを用いて第７のフレームＦ７のエンコードに使用する符号量を算出して、量子化パラメータＱｃを求める。この結果、量子化部２０は、第７のフレームＦ７の画像データの量子化を、第１〜第４のフレームＦ１〜Ｆ７の符号化データのデータサイズの平均値に基づいて求められた量子化パラメータＱｃと量子化テーブル２２の量子化ステップ値との積を用いて量子化する。この量子化結果が、ＦＩＦＯバッファ部３０に書き込まれる。こうして、所望のレートで、符号化データを生成できるようになる。
【０２５８】
ここで、比較例と本実施形態における画像データ圧縮装置に設けられるＶＢＶバッファの空き容量の変化を比較する。
【０２５９】
図３４に、比較例における画像データ圧縮装置２５０に設けられるＶＢＶバッファの空き容量の変化の一例を示すシミュレーション結果を示す。
【０２６０】
図３５に、本実施形態における画像データ圧縮装置１０に設けられるＶＢＶバッファの空き容量の変化の一例を示すシミュレーション結果を示す。
【０２６１】
図３４及び図３５では、横軸にフレーム数、縦軸にＶＢＶバッファの空き容量のビット数を示している。
【０２６２】
ここでは、ＶＢＶバッファがオーバーフローしたりアンダーフローしたりしないように符号化データを生成するため、ＶＢＶバッファの空き容量が所定の閾値（約１１００００ビット）を下回ると、フレームスキップが実行される。空き容量が少なくなるタイミングで、そのフレームにおいてエンコード処理が行われたことを示している。また空き容量が多くなるタイミングで、エンコード処理結果がＶＢＶバッファに出力されないことを示している。こうして所定の空き容量を維持できるように符号化データを生成することで、一定のレートを実現する。
【０２６３】
図３４及び図３５では、全フレーム数が１５０、ビットレートが６４キロビット毎秒（ｋｂｐｓ）、フレームレートが１５フレーム毎秒（ｆｐｓ）、ＶＢＶバッファサイズが３２７６８０ビット、閾値が１０９２２６ビット、比較例において過去４フレーム分の符号化データの平均データサイズを用いるものとする。このような条件下で、図３２及び図３３では、当初の動きが少なく、次第に動きが激しくなる動画の画像データをエンコードした場合のシミュレーション結果を示している。
【０２６４】
図３４に示す比較例では、閾値の１０９２２６ビット付近に着目すると、空き容量が閾値を下回っているにもかかわらず、エンコード処理が行われており、一定のレートを実現するレートコントロールの精度がそれほど高いものではないことを示している。これは、過去の４フレーム分の平均データサイズを用いているため、レートコントロールの結果が反映されるフレームが１〜２フレーム遅れてしまうためである。
【０２６５】
これに対して、図３５に示す本実施形態では、ほぼ閾値付近になるように空き容量が維持される。これは、予測データサイズの予測の精度が高いことを意味する。即ち、１フレーム前のＦＩＦＯバッファ部３０への書き込み回数を１次変換することにより予測データサイズを求める精度が高いことを意味し、また該予測データサイズに基づくビットレートの制御の精度が高いことを意味する。従って、比較例との対比において、本実施形態では、ＶＢＶバッファのオーバーフローを発生させる可能性も低いことがわかる。
【０２６６】
４．  表示コントローラ
本実施形態におけるエンコードＩＣの機能は、表示コントローラに適用できる。
【０２６７】
図３６に、本実施形態における表示コントローラの構成例のブロック図を示す。
【０２６８】
表示コントローラ３００は、カメラＩ／Ｆ３１０と、エンコード処理部３２０と、メモリ３３０と、ドライバＩ／Ｆ３４０と、制御部３５０と、ホストＩ／Ｆ３６０とを含む。
【０２６９】
カメラＩ／Ｆ３１０は、図示しないカメラモジュールに接続される。このカメラモジュールは、撮像により得られた動画像の入力画像データをＹＵＶフォーマットで出力すると共に、１フレームの区切りを指定する同期信号（例えばＶＳＹＮＣ信号）を出力する。カメラＩ／Ｆ３１０は、カメラモジュールで生成された動画像の入力画像データを受信するためのインタフェース処理を行う。
【０２７０】
エンコード処理部３２０は、図２４のエンコードＩＣ２００のうちホストＩ／Ｆ２０２及びカメラＩ／Ｆ２０４の機能を省略したものである。即ち、エンコード処理部３２０は、図２４に示す量子化部２０、ＦＩＦＯ部２０８、ＤＣＴ部１１２、動き検出部１１４、逆量子化部１１６、逆ＤＣＴ部１１８、動き補償部１２０、量子化パラメータ設定レジスタ２０６、ソフトウェア起動フラグレジスタ１３０、スキップフラグレジスタ１３２の各部の機能を有する。
【０２７１】
メモリ３３０は、エンコード処理部３２０の出力である符号化データを記憶する。またメモリ３３０は、表示パネルに表示するための画像データを記憶しており、ドライバＩ／Ｆ３４０は、メモリ３３０から所定の周期で画像データを読み出し、該画像データを、表示パネルを駆動する表示ドライバに対して供給する。ドライバＩ／Ｆ３４０は、表示ドライバに対して画像データを送信するためのインタフェース処理を行う。
【０２７２】
制御部３５０は、カメラＩ／Ｆ３１０、エンコード処理部３２０、メモリ３３０及びドライバＩ／Ｆ３４０の制御を司る。制御部３５０は、例えばホストＩ／Ｆ３６０を介して図示しないホストからの指示に従って、カメラモジュールからの入力画像データの受信処理、該入力画像のエンコード処理、符号化データのメモリ３３０への書き込み処理、メモリ３３０からの表示用の画像データの読み出し処理、表示ドライバへの該画像データの送信処理を行う。
【０２７３】
図３７に、図３６に示す表示コントローラが適用される電子機器の構成例のブロック図を示す。ここでは、電子機器として、携帯電話機の構成例のブロック図を示す。但し、図３６と同一部分には同一符号を付し、適宜説明を省略する。
【０２７４】
携帯電話機４００は、カメラモジュール４１０を含む。カメラモジュール４１０は、ＣＣＤ（Charge-Coupled device）カメラを含み、ＣＣＤカメラで撮像した画像のデータを、ＹＵＶフォーマットで表示コントローラ３００に供給する。
【０２７５】
携帯電話機４００は、表示パネル４２０を含む。表示パネル４２０として、液晶表示パネルを採用できる。この場合、表示パネル４２０は、表示ドライバ４３０によって駆動される。表示パネル４２０は、複数の走査線、複数のデータ線、複数の画素を含む。表示ドライバ４３０は、複数の走査線の１又は複数本単位で走査線を選択する走査ドライバの機能を有すると共に、画像データに対応した電圧を複数のデータ線に供給するデータドライバの機能を有する。
【０２７６】
表示コントローラ３００は、表示ドライバ４３０に接続され、表示ドライバ４３０に対して画像データを供給する。
【０２７７】
ホスト４４０は、表示コントローラ３００に接続される。ホスト４４０は、表示コントローラ３００を制御する。またホスト４４０は、アンテナ４６０を介して受信された画像データを、変復調部４５０で復調した後、表示コントローラ３００に対して供給できる。表示コントローラ３００は、この画像データに基づき、表示ドライバ４３０により表示パネル４２０に表示させる。
【０２７８】
またホスト４４０は、図２４に示すホスト２１０の機能を有する。ホスト４４０は、カメラモジュール４１０で生成された画像データをエンコード処理部３２０でエンコードして変復調部４５０で変調した後、アンテナ４６０を介して他の通信装置への送信を指示できる。このとき、表示コントローラ３００は、カメラモジュール４１０で生成された画像データをエンコードし、エンコードして得られた符号化データをホスト４４０に出力できる。
【０２７９】
ホスト４４０は、操作入力部４７０からの操作情報に基づいて画像データの送受信処理、エンコード処理、カメラモジュール４１０の撮像、表示パネルの表示処理を行う。
【０２８０】
なお、図３７では、表示パネル４２０として液晶表示パネルを例に説明したが、これに限定されるものではない。表示パネル４２０は、エレクトロクミネッセンス、プラズマディスプレイ装置であってもよく、これらを駆動する表示ドライバに画像データを供給する表示コントローラに適用できる。
【０２８１】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２８２】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【０２８３】
【図１】図１（Ａ）、（Ｂ）はＭＰＥＧ−４のエンコード処理とデコード処理の説明図。
【図２】マクロブロックの説明図。
【図３】ＤＣＴ係数の一例の説明図。
【図４】量子化テーブルの一例の説明図。
【図５】量子化されたＤＣＴ係数の一例の説明図。
【図６】レートコントロール方式で用いられるモデル式の説明図。
【図７】図６に示すモデル式を用いたレートコントロールの処理の一例のフロー図。
【図８】本実施形態の画像データ圧縮装置の構成の概要のブロック図。
【図９】予測データサイズの説明図。
【図１０】本実施形態におけるレートコントロールの手法の説明図。
【図１１】図１０に示すレートコントロール手法の動作タイミングの模式図。
【図１２】量子化パラメータ、符号化データのデータサイズ及びブロックノイズの関係の模式図。
【図１３】圧縮処理に割り当て可能なビット数についての説明図。
【図１４】残りフレーム数についての説明図。
【図１５】量子化パラメータの算出処理の一例の前半のフロー図。
【図１６】量子化パラメータの算出処理の一例の後半のフロー図。
【図１７】量子化パラメータの算出処理で用いられる変数の説明図。
【図１８】エンコードに使用したビット数の値の算出処理の一例のフロー図。
【図１９】量子化パラメータの調整処理の一例のフロー図。
【図２０】量子化パラメータ上限閾値の設定又は解除の判定処理の一例のフロー図。
【図２１】量子化パラメータ上限閾値の設定又は解除の判定処理の他の例のフロー図。
【図２２】本実施形態の量子化処理の説明図。
【図２３】本実施形態の画像データ圧縮装置の詳細な機能ブロック図。
【図２４】図２３の画像データ圧縮装置のハードウェア構成例を示す図。
【図２５】動き検出部のハードウェア構成例を示す図。
【図２６】ホストで行われる割込受け付け処理の一例のフロー図。
【図２７】ＭＥ割り込み処理の一例のフロー図。
【図２８】図２７のフレームスキップ処理の一例のフロー図。
【図２９】エンコード完了割り込み処理の一例のフロー図。
【図３０】本実施形態におけるカウントデータと予測データサイズとの関係を示す図。
【図３１】本実施形態の比較例における画像データ圧縮装置の構成の概要のブロック図。
【図３２】比較例におけるレートコントロールの手法の説明図。
【図３３】図３２に示すレートコントロール手法の動作タイミングの模式図。
【図３４】比較例におけるＶＢＶバッファの空き容量の変化を示す図。
【図３５】本実施形態におけるＶＢＶバッファの空き容量の変化を示す図。
【図３６】本実施形態における表示コントローラの構成例のブロック図。
【図３７】図３６の表示コントローラが適用される電子機器の構成例のブロック図。
【符号の説明】
【０２８４】
１０、１００  画像データ圧縮装置、  ２０  量子化部、  ３０  ＦＩＦＯバッファ部、４０  符号化データ生成部、  ５０  レートコントロール部、
６０  フレームスキップ部、  ７０  画像データ処理部、
１１０  ハードウェア処理部、  １１２  離散コサイン変換（ＤＣＴ）部、
１１４  動き検出部、  １１６  逆量子化部、
１１８  逆離散コサイン変換（ｉＤＣＴ）部、  １２０  動き補償部、
１５０  ソフトウェア処理部、  １５２  ＤＣ／ＡＣ予測部、  １５４  スキャン部、
１５６  ＶＬＣ符号化部
【図１】
2005323168.tif 000003
【図２】
2005323168.tif 000004
【図３】
2005323168.tif 000005
【図４】
2005323168.tif 000006
【図５】
2005323168.tif 000007
【図６】
2005323168.tif 000008
【図７】
2005323168.tif 000009
【図８】
2005323168.tif 000010
【図９】
2005323168.tif 000011
【図１０】
2005323168.tif 000012
【図１１】
2005323168.tif 000013
【図１２】
2005323168.tif 000014
【図１３】
2005323168.tif 000015
【図１４】
2005323168.tif 000016
【図１５】
2005323168.tif 000017
【図１６】
2005323168.tif 000018
【図１７】
2005323168.tif 000019
【図１８】
2005323168.tif 000020
【図１９】
2005323168.tif 000021
【図２０】
2005323168.tif 000022
【図２１】
2005323168.tif 000023
【図２２】
2005323168.tif 000024
【図２３】
2005323168.tif 000025
【図２４】
2005323168.tif 000026
【図２５】
2005323168.tif 000027
【図２６】
2005323168.tif 000028
【図２７】
2005323168.tif 000029
【図２８】
2005323168.tif 000030
【図２９】
2005323168.tif 000031
【図３０】
2005323168.tif 000032
【図３１】
2005323168.tif 000033
【図３２】
2005323168.tif 000034
【図３３】
2005323168.tif 000035
【図３４】
2005323168.tif 000036
【図３５】
2005323168.tif 000037
【図３６】
2005323168.tif 000038
【図３７】
2005323168.tif 000039