(57)【特許請求の範囲】
【請求項１】
画像データを入力する入力手段と、
画像データをブロック単位に直交変換する直交変換手段と、
該直交変換手段で得られたブロックの周波数成分値を量子化する量子化手段と、
前記量子化手段によって量子化された前記ブロックに対応する周波数成分値を可変長符号化する符号化手段と、
前記符号化手段によって符号化された、前記ブロックに対応する符号化データ長を順次加算し、符号化処理中の合計符号長を検出する検出手段と、
前記符号化手段によって前記ブロック毎の符号化データが生成される度に、当該符号化データを記憶領域に記憶する記憶手段と、
前記検出手段によって検出された前記合計符号長が前記記憶領域の記憶許容範囲を越えるか否かを判断する判断手段と、
前記判断手段によって前記合計符号長が前記記憶領域の記憶許容範囲を越えていると判断した場合に、前記記憶手段の記憶動作を中止すると共に、前記符号化手段による符号化処理と前記検出手段による検出処理を、画像データ全体についての処理が完了するまで継続させ、当該完了時における前記検出手段の検出の結果に基づいて前記量子化手段で用いる量子化パラメータを設定する制御手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
前記制御手段は、前記量子化パラメータと符号長との対応関係を示すテーブルを有し、前記テーブルを参照し、前記記憶許容範囲に入る量子化パラメータを設定することを特徴とする請求項第１項に記載の画像符号化装置。
【請求項３】
前記入力手段は、画像データを直交変換する直交変換手段を含むことを特徴とする請求項第１項に記載の画像符号化装置。
【請求項４】
前記記憶手段は、入力手段によって入力された画像データを記憶することを特徴とする請求項第１項に記載の画像符号化装置。
【請求項５】
前記記憶手段は、前記量子化手段に供給される画像データを記憶することを特徴とする請求項第１項に記載の画像符号化装置。
【請求項６】
前記入力手段は、被写体象を撮像し、前記画像データを出力する撮像手段を含むことを特徴とする請求項第１項に記載の画像符号化装置。
【請求項７】
前記記憶手段に記憶された符号化された画像データを記録媒体に記録する記録手段を備えることを特徴とする請求項第１項に記載の画像符号化装置。
【請求項８】
前記記録手段は複数種の記録媒体に前記符号化された画像データを記録することを特徴とする請求項第７項に記載の画像符号化装置。
【請求項９】
前記撮影画像の画質モードを設定する画質モード設定手段と前記画質モード設定手段の出力に応じて前記記憶許容範囲を設定する記憶許容範囲設定手段とを有することを特徴とする請求項第１項に記載の画像符号化装置。
【請求項１０】
画像データを入力するステップと、
画像データをブロック単位に直交変換するステップと、
該直交変換工程で得られたブロックの周波数成分値をを量子化するステップと、
前記量子化された、前記ブロックに対応する周波数成分値を可変長符号化するステップと、
前記符号化された、前記ブロックに対応する符号化データ長を順次加算し、符号化処理中の合計符号長を検出するステップと、
前記ブロック毎の符号化データが生成される度に、当該符号化データをを記憶領域に記憶するステップと、
前記検出された前記合計符号長が前記記憶領域の記憶許容範囲を越えるか否かを判断するステップと、
前記合計符号長が記憶領域の記憶許容範囲を越えていると判断した場合に、前記記憶領域への記憶動作を中止すると共に、前記符号化処理と前記検出処理を画像データ全体についての処理が完了するまで継続させ、当該完了時における検出処理の結果に基づいて前記量子化処理で用いる量子化パラメータを設定するステップと
を備えることを特徴する画像符号化方法。
【請求項１１】
コンピュータが読み込み実行するプログラムコードを格納する記憶媒体であって、
画像データをブロック単位に直交変換する直交変換手段と、
該直交変換手段で得られたブロックの周波数成分値をを量子化する量子化手段と、
前記量子化された、前記ブロックに対応する周波数成分値を可変長符号化する可変長符号化手段と、
前記符号化された、前記ブロックに対応する符号化データ長を順次加算し、符号化処理中の合計符号長を検出する検出手段と、
前記ブロック毎の符号化データが生成される度に、当該符号化データをを記憶領域に記憶する記憶手段と、
前記検出された前記合計符号長が前記記憶領域の記憶許容範囲を越えるか否かを判断する判断手段と、
前記合計符号長が記憶領域の記憶許容範囲を越えていると判断した場合に、前記記憶領域への記憶動作を中止すると共に、前記符号化手段による符号化処理と前記検出手段による検出処理を画像データ全体についての処理が完了するまで継続させ、当該完了時における検出処理の結果に基づいて前記量子化手段で用いる量子化パラメータを設定する制御手段
として機能するコンピュータプログラムを格納したことを特徴とするコンピュータ可読な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は符号化装置及び方法及び記憶媒体、例えば、デジタルカメラに代表される画像データを生成および複数枚数の画像データを蓄積可能な装置等の、符号化装置及び方法及び記憶媒体に関するものである。
【０００２】
【従来の技術】
現在、多くのデジタルカメラが商品化されており、それらは複数枚数の画像データの記録蓄積を目的とした不揮発性記憶手段として、その装置内に不揮発性の半導体メモリあるいは磁気ディスク等を備えている。
【０００３】
多くのデジタルカメラに具備されているＣＣＤ等の固体撮像素子が生成するデジタル画像データはそのデータ量が極めて大きいため、通常は伸張復元時に明らかに視認できない、つまり、歪みが無い程度に、撮像した原画像データに圧縮符号化処理を施してから上記不揮発性記憶手段に記録蓄積される。
【０００４】
デジタル画像データの圧縮符号化処理の代表的な手法のひとつに、ブロック分割、直交変換さらには可変長符号を用いたエントロピー符号化を組み合わせた圧縮符号化手法が知られている。
【０００５】
この代表的な圧縮符号化手法では、一画面のデジタル原画像データを所定の大きさの複数の矩形ブロックに分割し、ブロック毎に２次元直交変換係数を求め、次に周波数座標系に並び直された直交変換係数を人間の視覚特性に基づいた量子化係数によって除算および量子化し、この量子化された直交変換係数のシーケンスに所定の可変長符号を割り当てることによって、最終的な結果として圧縮符号化された画像データを生成する。
【０００６】
しかし、上記圧縮符号化処理に要する演算回数は莫大なものである。このような圧縮符号化処理を汎用プロセッサ上のプログラムで実現する場合、あるいは専用のハードウェアによって実現する場合のいずれであっても、その演算処理速度を高める目的で、ＤＲＡＭ等の高速に読み出しおよび書き込み動作が可能な一時記憶手段を用いるのが一般的である。
【０００７】
この一時記憶手段上には、撮像素子から入力される原画像データ、直交変換係数に代表される演算の途中結果、そして圧縮符号化処理の結果として得られる圧縮符号化データが、それぞれ専用に割り当てられた領域に一時的に格納される。
【０００８】
上記の圧縮符号化処理が終了した後、結果として一時記憶手段上に展開された圧縮符号化データは、最終的な記録蓄積を目的とした前記不揮発性記憶手段に転送され格納される。これによって一連の撮影動作が終了し、ふたたび次の画像の撮影動作が開始できる状態に戻ることになる。
【０００９】
当然ながら、コストの観点から多くのデジタルカメラでは、この一時記憶手段の総容量は必要最低限に設定される。常に固定容量の領域を必要とする原画像データと演算の途中結果に対しては、それぞれ相当する固定容量の一時記憶手段上の領域が割り当てられる。
【００１０】
一方、可変長となる圧縮符号化データに対しては、ある程度充分なデータ長と想定される容量の一時記憶手段上の領域が割り当てられる。
【００１１】
上記可変長の圧縮符号化データのデータ長は、撮像素子から入力される原画像データの周波数分布や偏りによって大きく変化し、同一パラメータを用いて圧縮符号化処理を施しても、原画像データの統計学的な性質によって、圧縮符号化データの大きさがばらついてしまうことが知られている。
【００１２】
このような圧縮符号化処理を施すデジタルカメラにおいては、一般的に複数の撮影モード (圧縮符号化モード)が設けられている。すなわち、圧縮率が低く、多くの画像枚数を記録蓄積することはできないが、圧縮歪みの小さい高品質の画像データを記録蓄積できる撮影モード圧縮符号化モードと、比較的圧縮率が高く、多くの画像枚数を記録蓄積することはできるが、比較的圧縮歪みの大きい画像データを記録蓄積する撮影モード圧縮符号化モード等、の複数の撮影モード圧縮符号化モードが設けられ、それぞれのモードに応じた圧縮符号化処理を行うようにしている。
【００１３】
上述した代表的な圧縮符号化手法において、同一の原画像データに対する圧縮率を容易に制御することが可能な代表的なパラメータは量子化係数の値である。この値が量子化処理内の除算における除数に相当することから、大きな量子化係数値で量子化することによって圧縮率を高くすること、また逆に小さな量子化係数値で量子化することによって圧縮率を低くすることができる。
【００１４】
通常、デジタルカメラの操作者は、撮影動作の前に上記の複数の撮影モードの中からそのひとつを選択しておく。その際、操作者にとって必要な情報のひとつに、現在選択している撮影モード圧縮符号化モード及びその撮影モードで撮影・記録することができる画像の枚数がある。これは通常、不揮発性記憶手段の空き容量によって一意に決定され、一般にデジタルカメラに具備されたＬＣＤ等の情報表示手段に撮影モードの種別および撮影可能枚数その数値が表示される。
【００１５】
デジタルカメラ内で行われる画像データの圧縮符号化処理に不可欠なことは、圧縮符号化された画像データのデータ量があらかじめ定められた範囲の上限値を超えないように圧縮符号化することである。データ量制御手段によってなされるこの制御によって、撮影可能な残り枚数として操作者に表示している数値を保証することが可能になる。
【００１６】
また同時に、データ量制御手段は圧縮符号化された画像データのデータ量があらかじめ定められた範囲の下限値を下回らないように圧縮符号化することも必要とされる。データ量制御手段によってなされるこの制御によって、不必要に圧縮率が高く、圧縮歪みの大きい圧縮符号化データの生成を防ぐためである。
【００１７】
従来のデジタルカメラにおいては、所望のデータ量の圧縮符号化データを得るために、一回目一画面を構成する画像データの一部に対するの圧縮符号化処理によって得られた圧縮符号化データのデータ量を基に、所望のデータ量を生成する量子化計数値係数値を予測算出し、その新たな量子化計数値係数値を用いて再度圧縮符号化処理を行なう手法、あるいは量子化係数値を毎回変更しながら所定の範囲内に圧縮符号化データのデータ量が収まるまで、何回も圧縮符号化処理を繰り返すといった手法、さらには圧縮符号化処理に先んじて、別途手段により定量的に求めた原画像データの統計学的な性質 (例えばブロック毎のアクティビティ) を用いて最適な量子化係数値を予測するといった手法、などがとられている。
【００１８】
直交変換によって生成される直交変換係数は、後続の量子化演算とは独立で、同一の原画像データに対しては常に同じ直交変換係数値が生成される。したがって、一枚の原画像データに対して複数回の圧縮符号化処理を行なうような場合、一回目の圧縮符号化処理の際に生成された直交変換係数を一時記憶手段に格納し、二回目以降の圧縮符号化処理の際には、格納された直交変換係数を用いて、直交変換に関わる演算処理を省略する手法を用いると処理スピードの高速化に効果的である。
【００１９】
しかしいずれの手法を採用した場合でも、可変長符号化の結果として得られる可変長の圧縮符号化データが、あらかじめ想定していたデータ量の上限値を超えてしまい、圧縮符号化処理の途中段階で圧縮符号化データが一時記憶手段上に割り当てられた領域のすべてを消費してしまう状況、すなわちオーバーフローが発生してしまう。特に一回目の符号化処理では所定の量子化係数を用いて圧縮符号化処理するので上記オーバーフローが発生しやすい。
【００２０】
このような状況が発生した場合、多くのデジタルカメラでは、現在実行中の圧縮符号化処理を即座に中止し、量子化係数を一意的に現在より大きい値に変更して、ふたたび圧縮符号化処理をやり直すといった例外処理を行なっている。汎用プロセッサ上のプログラムによって、圧縮符号化処理を実現させているデジタルカメラの場合、一画面の原画像データを圧縮符号化するために要する処理時間は一般的に無視できるほど短くはない。従って、この時間が短いことが操作性を向上する上で重要になるが、その一方で、上記のように、それ以上継続しても意味の無い圧縮符号化処理を中止するといった例外処理も必要である。
【００２１】
また、このような例外処理の発生自体を防ぐ目的で、コスト的には不利であるが、圧縮符号化データの理論上の上限値に相当する充分な大容量の一時記憶手段上の領域を最初から割り当てる方法も取られている。
【００２２】
【発明が解決しようとする課題】
上記のように、可変長の圧縮符号化データに対する一時記憶手段上の領域の残容量が無くなった段階で、即座に圧縮符号化処理を中止してしまうと、その際に設定されていたパラメータ、すなわちその時の量子化係数値によって結果的に得られるはずだった圧縮符号化データの総データ量が不明なままで終わってしまう。
【００２３】
従って、更新すべき量子化係数値の予測精度は当然悪くなり、こうして求めた量子化係数値に変更して、圧縮符号化処理をやり直しても、ふたたび一時記憶手段上の領域のすべてを消費してしまう状況（オーバーフロー）の発生や、不必要にデータ量が短い圧縮符号化データを生成してしまう（アンダーフロー）危険性は避けられない。
【００２４】
また、上記従来例のごとく即座に圧縮符号化処理を中止してしまうと、直交変換係数の一時記憶手段への格納動作も途中で終わってしまうので、再度の圧縮符号化処理において、演算負荷の大きい直交変換演算処理から再開しなければならない。
【００２５】
上述したような背景から本願発明の一つの目的は、符号化データを一時記憶する記憶手段のデータ記憶許容範囲を越えてしまう場合にも、より正確な情報に基づいて再度の圧縮符号化を行う際の最適なパラメータを得ることで、データ記憶許容範囲内でありながらも画質を優先させて圧縮符号化させることを可能ならしめる画像符号化装置及びその方法並びにその符号化プログラムが記憶された記憶媒体を提供しようとするものである。
【００２６】
【課題を解決するための手段】
このため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを入力する入力手段と、
画像データをブロック単位に直交変換する直交変換手段と、
該直交変換手段で得られたブロックの周波数成分値を量子化する量子化手段と、
前記量子化手段によって量子化された前記ブロックに対応する周波数成分値を可変長符号化する符号化手段と、
前記符号化手段によって符号化された、前記ブロックに対応する符号化データ長を順次加算し、符号化処理中の合計符号長を検出する検出手段と、
前記符号化手段によって前記ブロック毎の符号化データが生成される度に、当該符号化データを記憶領域に記憶する記憶手段と、
前記検出手段によって検出された前記合計符号長が前記記憶領域の記憶許容範囲を越えるか否かを判断する判断手段と、
前記判断手段によって前記合計符号長が前記記憶領域の記憶許容範囲を越えていると判断した場合に、前記記憶手段の記憶動作を中止すると共に、前記符号化手段による符号化処理と前記検出手段による検出処理を、画像データ全体についての処理が完了するまで継続させ、当該完了時における前記検出手段の検出の結果に基づいて前記量子化手段で用いる量子化パラメータを設定する制御手段とを備える。
【００２７】
また、本発明の画像符号化方法は以下の構成を備える。すなわち、
画像データを入力するステップと、
画像データをブロック単位に直交変換するステップと、
該直交変換工程で得られたブロックの周波数成分値をを量子化するステップと、
前記量子化された、前記ブロックに対応する周波数成分値を可変長符号化するステップと、
前記符号化された、前記ブロックに対応する符号化データ長を順次加算し、符号化処理中の合計符号長を検出するステップと、
前記ブロック毎の符号化データが生成される度に、当該符号化データをを記憶領域に記憶するステップと、
前記検出された前記合計符号長が前記記憶領域の記憶許容範囲を越えるか否かを判断するステップと、
前記合計符号長が記憶領域の記憶許容範囲を越えていると判断した場合に、前記記憶領域への記憶動作を中止すると共に、前記符号化処理と前記検出処理を画像データ全体についての処理が完了するまで継続させ、当該完了時における検出処理の結果に基づいて前記量子化処理で用いる量子化パラメータを設定するステップとを備える。
【００２８】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００２９】
図１は本発明に係る実施形態のデジタルカメラの構成を示すブロック図である。
【００３０】
図１において、１００は被写体を撮像し、画像データを出力する撮像部、１０１はバッファメモリ、１０１ａはバッファメモリ１０１上の原画像データを記憶する原画像データ領域、１０１ｂはバッファメモリ１０１上の直交変換係数データを記憶する直交変換係数領域、１０１ｃはバッファメモリ１０１上の圧縮符号化データを記憶する圧縮符号化データ領域である。圧縮符号化データ領域１０１ｃに１画面分の符号化データが格納された後、所定の指示があると後述する記憶部１１５へ出力される。
【００３１】
１０２は直交変換部、１０３は量子化部、１０４は可変長符号化部、１０５は圧縮符号化データ列出力部、１０６は圧縮符号化データ長カウンタ、１０７は格納領域上限値レジスタ、１０８は比較器、１０９はスケーリング値設定部、１１０はスケーリング値レジスタ、１１１は量子化係数テーブル、１１２は量子化係数スケーリング部である。
【００３２】
１１３は記録部であり、記録部１１３には複数種の記憶媒体が装着できる。本実施形態ではメモリカード１１４、ＨＤ(ハードディスク)カード１１５が装着できる。尚、記録部１１３から装着されている記録媒体の種類及び残り記憶容量に関する記憶媒体情報が、後述するＣＰＵ１１７に出力されている。
【００３３】
１１６は、電源スイッチ、撮影モード及び記録媒体の選択スイッチ、画像記録のためのレリーズスイッチ等を備える操作部、１１７は操作部１１６の設定状態及び記録部１１３からの記憶媒体情報により撮像部１００、上限値レジスタ１０７、スケーリング値設定部１０９、量子化係数テーブル１１１、記録部１１３等を制御するＣＰＵである。
【００３４】
次に、上記のように構成されたデジタルカメラの画像記録処理の動作について、図２のフローチャートとともに説明する。
【００３５】
まず、操作者が操作部１１６を用いてあらかじめ選択した撮影モードがＣＰＵ１１７によって確認される（ステップＳ１０１）。尚、本実施形態においては、設定できる撮影モードとして、圧縮率が低く、多くの画像枚数を記録蓄積することはできないが、圧縮歪みの小さい高品質の画像データを記録蓄積できる“高画質撮影モード”と、比較的圧縮率が高く、多くの画像枚数を記録蓄積することはできるが、比較的圧縮歪みの大きい画像データを記録蓄積する“標準画質撮影モード”を有する。
【００３６】
次に、ＣＰＵ１１７によって、量子化係数テーブル１１１に所定の量子化係数がセットされる（ステップＳ１０２）。
【００３７】
本実施形態で用いられる量子化係数テーブル１１１の量子化係数の例としては図３に示すように配列されている。量子化処理の対象とするブロックが輝度成分を表わす場合は（ａ）の配列を用い、上記ブロックが色差成分を表わす場合は（ｂ）の配列が用いられる。
【００３８】
一組の量子化係数配列は８×８個の量子化係数で構成され、図３において右方向の係数ほど水平方向の空間周波数が高い直交変換係数に対応し、下方向の係数ほど垂直方向の空間周波数が高い直交変換係数に対応する。したがって、一番左上の量子化係数はブロック内でもっとも低い空間周波数成分、すなわち直流成分の直交変換係数の量子化に用いられ、また一番右下の量子化係数はブロック内でもっとも高い空間周波数成分の直交変換係数の量子化に用いられる。
【００３９】
量子化係数は画像における高い空間周波数成分の入力特性が、低い空間周波数成分の入力特性に比べて低いという人間の視覚特性に基づいて、一般的に図３に示すように右下の量子化係数ほど大きな値が用いられている。
【００４０】
次に、ＣＰＵ１１７によってスケーリング値設定部１０９を制御し、スケーリング値レジスタ１１０に所定の一回目のスケーリング値がセットされる（ステップＳ１０３）。
【００４１】
ここでセットされる一回目のスケーリング値は、前記ステップＳ１０１において確認された撮影モードのそれぞれに対応するスケーリング値が存在する。
【００４２】
すなわち、高画質撮影モードが選択されている場合は高画質撮影用の初期スケーリング値が、一方、標準画質撮影モードが選択されている場合は前記高画質撮影用の初期スケーリング値とは異なる標準画質撮影モード用の初期スケーリング値がそれぞれ設定される。
【００４３】
さらにＣＰＵ１１７によって、格納領域上限値レジスタ１０７に、バッファメモリ１０１上の圧縮符号化データ領域１０１ｃの容量に相当するバイト数がセットされる（ステップＳ１０４）。
【００４４】
つぎに、操作部１１６に備わるレリーズスイッチがＯＮされた否かを判断する（ステップＳ１０５）。レリーズスイッチがＯＮされれば撮像部１００により、ゲイン調整、ガンマ補正、ホワイト・バランス補正、ＣＣＤフィルタ・マトリックス補正、色空間変換操作等の必要な信号処理がなされた一画面分のデジタル原画像データをバッファメモリ１０１上の原画像データ領域１０１ａに記憶する（ステップＳ１０６）。尚、バッファメモリ１０１上に設けられた原画像データ用領域１０１ａは一画面分の原画像データを格納するのに充分な容量を有する。レリーズスイッチがＯＮされなければ現状を維持する。
【００４５】
レリーズスイッチがＯＮされた場合、一回目の圧縮符号化シーケンスが開始される（ステップＳ１０７）。
【００４６】
まず、直交変換部１０２ではバッファメモリ１０１上の原画像データ用領域１０１ａから原画像データを８×８画素で構成される矩形ブロック単位に順次読み出し、離散コサイン変換に代表される２次元直交変換の演算を行い、周波数座標系に並び直された計６４個の直交変換係数を順次出力するといった動作を、一画面分の原画像データに対する処理を終了するまで繰り返す。
【００４７】
直交変換部１０２で生成されたブロック単位の直交変換係数は、量子化部１０３に順次供給されるとともに、バッファメモリ１０１上に設けられた直交変換係数用領域１０１ｂに順次格納される。
【００４８】
直交変換係数用領域１０１ｂは一画面分の原画像データに対応するすべての直交変換係数を格納するのに充分な容量を有する。この格納された直交変換係数は、後述する二回目の圧縮符号化シーケンスに利用される。
【００４９】
量子化係数スケーリング部１１２は、スケーリング値レジスタ１１０にステップＳ１０３でセットされたスケーリング値を読み出して、これを乗数とするとともに、量子化係数テーブル１１１から読み出したそれぞれの量子化係数を被乗数として乗算を行う。そして、その積の小数点以下を四捨五入して得られる値の整数部分をスケーリングされた量子化係数として、量子化部１０３に順次与える。
【００５０】
本実施形態では、スケーリング値レジスタ１１０にセットされる、すなわち量子化係数スケーリング部１１２で用いられるスケーリング値は１／５０から５０／５０までの５０種類の値を設定することができる。小さな値が設定されるほど、スケーリング処理によって量子化係数テーブル１１１から読み出された量子化係数はより縮小される。
【００５１】
スケーリング値の設定可能な最大値である５０／５０が設定された場合、スケーリング処理は１を乗じることと等価になるので、結果的に量子化係数テーブル１１１から読み出された量子化係数は変更されずに、そのままの値で量子化部１０３に入力される。
【００５２】
量子化係数スケーリング部１１２の例外処理として、特に小さなスケーリング値が入力されたときに、小数点以下を四捨五入して得られた値の整数部分が０になってしまった場合は、例外として１をスケーリングされた量子化係数として出力する。これは後段の量子化部１０３において０による除算を避けるためである。
【００５３】
量子化部１０３では、直交変換部１０１から順次入力されるブロック単位の直交変換係数を、量子化係数スケーリング部１１２から順次入力されるスケーリングされた量子化係数を用いて、量子化処理を連続的に施し、計６４個の量子化された直交変換係数を可変長符号化部１０４に順次出力するといった動作を、一画面分の原画像データに対する処理を終了するまで繰り返す。
【００５４】
量子化部１０３で行なう量子化処理は、入力される直交変換係数を被除数とし、入力されるスケーリングされた量子化係数を除数とする除算を行ない、その商の小数点以下を四捨五入して得られた値の整数部分を量子化された直交変換係数として、可変長符号化部１０４に出力するというものである。
【００５５】
可変長符号化部１０４では、量子化部１０３から順次入力される６４個の量子化された直交変換係数に、所定の可変長符号を割り当てるという符号化処理を連続的に施し、圧縮符号化データ列を出力するといった動作を、一画面分の原画像データに対する処理を終了するまで繰り返す。
【００５６】
可変長符号化部１０４によって生成された圧縮符号化データ列は、圧縮符号化データ列出力部１０５に入力され、そこでバッファメモリ１０１上の圧縮符号化データ列用領域１０１ｃに順次格納されるべく圧縮符号化データの出力動作が連続的になされる。ただし、後述する比較器１０８から格納領域１０１ｃのすべてに格納したことの通知がされた場合は、データ出力部１０５は、その時点で即座にこの圧縮符号化データの圧縮符号化データ領域１０１ｃへの出力動作を中止し、領域１０１ｃを越えて格納されることを防ぐ。ただし、可変長符号化部１０４が継続して符号化処理を行わせるため、データ出力部１０５は可変長符号化部１０４に対してデータ受信可を示すステータス信号を出力し続ける。
【００５７】
また、可変長符号化部１０４によって生成された圧縮符号化データ列は圧縮符号化データ長カウンタ１０６によってそのデータ長が例えば８ビット単位で順次計測され、一画面分の画像データに対する圧縮符号化処理が終了した時点では、圧縮符号化データ長カウンタ１０６には、Ｓ１０３においてスケーリング値レジスタ１１０にセットされた一回目のスケーリング値によって生成された圧縮符号化データ列の総バイト数が格納される。
【００５８】
圧縮符号化データ長カウンタ１０６によって順次計数されたバイト数は比較器１０８に入力され、そこで格納領域上限値レジスタ１０７から読み出されたバッファメモリ１０１上の圧縮符号化データ領域１０１ｃの容量に相当するバイト数と順次比較される。
【００５９】
圧縮符号化データ長カウンタ１０６によって順次計数されたバイト数が、格納領域１０１ｃの容量に相当するバイト数に到達すると、比較器１０８はその事象の発生を上記圧縮符号化データ列出力部１０５に通知する。圧縮符号化データ列出力部１０５では、その通知に応じて、即座に、現在の圧縮符号化データの出力動作を中止する。
【００６０】
しかし、上記のように、圧縮符号化データ長カウンタ１０６によって順次計数されたバイト数が、格納領域１０１ｃの容量に相当するバイト数に到達してしまった場合であっても、直交変換部１０２による直交変換係数の生成および領域１０１ｂへの格納処理、量子化部１０３による直交変換係数の量子化処理、可変長符号化部１０４による圧縮符号化データの生成処理、さらに圧縮符号化データ長カウンタ１０６によるそのデータ長の計数処理までの一連の動作は、一画面分の画像データに対する処理が終了するまで、引き続き繰り返される。
【００６１】
可変長符号化部１０４が一画面分の原画像データに対するすべての可変長符号化処理を終えた時点で、上記一回目の圧縮符号化シーケンスが終了する（ステップＳ１０７）。
【００６２】
ＣＰＵ１１７によって制御されるスケーリング値設定部１０９によって、圧縮符号化データ長カウンタ１０６からその内容、すなわち圧縮符号化データ列のバイト数が読み出される（ステップＳ１０８）。
【００６３】
次に、この圧縮符号化データ列のバイト数が所定の許容範囲内であるか否かを判定する（ステップＳ１０９）。
【００６４】
ステップＳ１０９で、バイト数が許容範囲内であると判定された場合は、撮影動作に伴う一連の圧縮符号化処理は終了し、記録部１１３で操作部１１６により選択された記録媒体に対応する誤り検出訂正符号化処理等を行って圧縮符号化データを記録媒体に記録する（ステップＳ１１０）。
【００６５】
一方、ステップＳ１０９において、バイト数がそれぞれの撮影モードにおける許容範囲外であると判定された場合は、以下に述べる二回目の圧縮符号化シーケンスを開始すべく、その準備として新たなスケーリング値の予測を行う（ステップＳ１１１）。
【００６６】
図４に実施形態におけるスケーリング値と圧縮符号化データ列のデータ長（データ量）との関係を示す（図示では、垂直軸の上方向ほど圧縮符号化データ長が長く、水平軸の右方向ほどスケーリング値は大きくなる）。
【００６７】
図４において、実線で示される曲線は、現在の圧縮符号化処理による原画像データに対する圧縮符号化データ長とスケーリング値との関係を示している。その曲線の上下に点線で示す曲線は別の異なる原画像データに対する圧縮符号化データに相当するものである。
【００６８】
図４からわかるように、画像データの持つ統計学的な性質、すなわち空間周波数的な分布や偏りによって、対応する曲線は上下にシフトするものの、曲線の形や単調減少関数という性質には違いが見られない。本実施形態ではこの性質を利用して最適な符号化量が得られるスケーリング値を算出している。
【００６９】
これはスケーリング値とそれに対応する圧縮符号化データ列の長さの関係を示す曲線を、ある関数で近似でき、逆に所望の圧縮符号化データのバイト数を生み出すようなスケーリング値を、ある程度正確に予測算出できることを示している。
【００７０】
本実施形態においては、ステップＳ１０３で設定した一回目のスケーリング値とステップＳ１０８で読み出した対応する圧縮符号化データ列のバイト数、つまり曲線上のある１点を得る。装置内には予め基本となる曲線の基本近似式をきおくしておき、上記求められた点を通過する曲線の近似式を前記基本近似式からも求める。その近似式から選択された撮影モードに対応する所定の許容範囲内に収まるような圧縮符号化データ列を生成できる新たなスケーリング値を算出する（ステップＳ１１１）。新たなスケーリング値は、圧縮符号化データ列が前記所定の許容範囲の上限値に最も近くなる値とする。
【００７１】
また、上述したように近似式を生成するのではなく、図４に示すような曲線のデータを予め複数種類をルックアップテーブルとして用意しておき、１回目のスケーリング値とバイト数との関係から一番近い関係のテーブルを選択し、その選択テーブルに基づいて選択された撮影モードに対応する所定の許容範囲内に収まるスケーリング値を抽出するような方法でもよい。
【００７２】
そして、ＣＰＵ１１７によって制御されるスケーリング値設定部１０９によって、ステップＳ１１１で算出された新たなスケーリング値をスケーリング値レジスタ１１０にセットする（ステップＳ１１２）。
【００７３】
新たなスケーリング値がスケーリング値レジスタ１１０にセットされると、二回目の圧縮符号化シーケンスが開始される（ステップＳ１１３）。
【００７４】
量子化係数スケーリング部１１２はスケーリング値レジスタ１１０にステップＳ１１２でセットされた新たなスケーリング値を読み出して、一回目の圧縮符号化シーケンスと同様のスケーリング処理によって算出した値をスケーリングされた新たな量子化係数として、量子化部１０３に順次与える。
【００７５】
量子化部１０３ではバッファメモリ１０１上の領域１０１ｂから既に計算済みのブロック単位の直交変換係数を順次読み出し、量子化係数スケーリング部１１２から順次入力されるスケーリングされた新たな量子化係数を用いて、同様の量子化処理を連続的に施し、計６４個の量子化された新たな直交変換係数を可変長符号化部１０４に順次出力するといった動作を、一画面分の原画像データに対する処理を終了するまで繰り返す。
【００７６】
可変長符号化部１０４では、量子化部１０３から順次入力される６４個の量子化された新たな直交変換係数に、所定の可変長符号を割り当てるという同様の符号化処理を連続的に施し、新たな圧縮符号化データ列を出力するといった動作を、一画面分の原画像データに対する処理を終了するまで繰り返す。
【００７７】
可変長符号化部１０４によって生成された新たな圧縮符号化データ列は、圧縮符号化データ列出力部１０５に入力され、そこでバッファメモリ１０１上の圧縮符号化データ列用領域１０１ｃに順次格納されるべく圧縮符号化データの同様な出力動作が連続的になされる。
【００７８】
また、可変長符号化部１０４によって生成された新たな圧縮符号化データ列は圧縮符号化データ長カウンタ１０６によってそのデータ長が８ビット単位で順次計測され、一画面分の画像データに対する圧縮符号化処理が終了した時点では、圧縮符号化データ長カウンタ１０６には、ステップＳ１１２においてスケーリング値レジスタ１１０にセットされた二回目のスケーリング値によって生成された新たな圧縮符号化データ列の総バイト数が格納される。
【００７９】
可変長符号化部１０４が一画面分の原画像データに対するすべての可変長符号化処理を終えた時点で、上記二回目の圧縮符号化シーケンスが終了する（ステップＳ１１３）。その後、ステップＳ１０８に戻る。
【００８０】
こうしてバッファメモリ上の領域１０１ｃに格納され、そのバイト数が所定の許容範囲内に収まる圧縮符号化データが、圧縮符号化された画像データ・ファイルという形で、記録部１１３により記録媒体（メモリカード１１４、ＨＤカード１１５）に記録される。
【００８１】
以上説明してきた実施形態ではステップＳ１０３で設定した一回目のスケーリング値による圧縮符号化処理を一回目の圧縮符号化シーケンスで行ない、図４に示すようなスケーリング値とそれ対応する圧縮符号化データ列の長さの関係を表わす曲線上の１点を得て、１個の係数による関数式で曲線を近似していたが、２個の係数による関数式を用いてより正確な近似を行なうためには、２個のスケーリング値を用いた前述の実施形態と同様の拡張された構成で容易に可能である。
【００８２】
また、複数の撮影モード (圧縮符号化モード) すなわち圧縮符号化データに対する許容範囲が複数個存在しても、ステップＳ１０３で設定した一回目のスケーリング値としてそれぞれの撮影モードに対応する値を選択することによって、圧縮符号化データを撮影モードに対応する許容範囲に収めることが可能である。
【００８３】
なお、上記実施形態では、デジタルカメラに適用した例を説明したが、本発明はこれに限定されるものではない。つまり、記憶媒体に画像データの圧縮符号化して格納する際に、許容範囲を設けられる場合であれば適用できる。
【００８４】
また、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、上記の如く一つの機器からなる装置に適用してもよい。
【００８５】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８７】
以上述べてきたように、圧縮符号化処理によって生成された圧縮符号化データのデータ長が、一時記憶手段の特定領域を超えてしまった場合であっても、格納される予定であった圧縮符号化データのデータ長を知ることができるので、所定の許容範囲内に収まる圧縮符号化された画像データを生成する新たなスケーリング値をほぼ正確に予測することが可能になる。結果的に圧縮符号化された画像データの不揮発性メモリ上におけるメモリ管理、および正確な撮影可能な枚数を操作者に常に示すことが可能になる。
【００８８】
さらに、圧縮符号化処理によって生成された圧縮符号化データのデータ長が、一時記憶手段の特定領域を超えてしまった場合であっても、直交変換係数の一時記憶手段への格納動作は一画面分の原画像データに対する処理を完遂しているので、二回目のシーケンスではその処理に比較的長い時間を要する直交変換の演算処理を省略し、一時記憶手段に格納されている直交変換係数を再利用することにより、一回目〜二回目を通した全体の圧縮符号化処理時間を短縮することが可能である。
【００８９】
【発明の効果】
以上説明したように本発明によれば、画像データの符号長が許容範囲を越えてしまう場合にも、より正確な情報に基づいて圧縮符号化を行う際の最適なパラメータを得ることで、許容範囲内でありながらも画質を優先させて圧縮符号化させることが可能になる。
【図面の簡単な説明】
【図１】図１は、本発明に係る実施形態のデジタルカメラの構成を示すブロック図である。
【図２】図２は、本発明に係る実施形態のデジタルカメラの処理動作を説明するフローチャートである。
【図３】図３は、本実施形態の量子化係数テーブル１１１の量子化係数配列の例を示す図である。
【図４】図４は、スケーリング値と圧縮符号化データのデータ長との関係を示す図である。
【図１】
0003919426.tif 000002
【図２】
0003919426.tif 000003
【図３】
0003919426.tif 000004
【図４】
0003919426.tif 000005