(57)【要約】【課題】  並列に符号化する画素ブロックの数と境界ビット位置の候補数を、画像のサイズに応じて決定することで、符号化速度、符号化効率を適正に設定する。【解決手段】  ユーザモード設定部１０７は、符号化対象の画像サイズを設定する。エントロピー符号化制御部１０８は、設定された画像サイズが大きい程、大きなＮ１を決定するとともに、設定された画像サイズが大きいほど小さなＮ２を決定する。そして、係数データ取得部１０６は、Ｎ１個の画素ブロックの係数値を、境界ビット位置決定部１０９に供給することで、各画素ブロックについてＮ２個の境界ビット位置の候補を算出させる。また、係数データ取得部１０６は、Ｎ１個の画素ブロックの係数値を、Ｎ２個のエントロピー符号化部にそれぞれ供給する。符号量比較部１１１は、１つの画素ブロックの係数値から生成されたＮ２個の符号化データ中の最小符号化データ量となる符号化データを選択し、出力することをＮ１回行なう。【選択図】  図１
2009260747.tif 000002
【特許請求の範囲】
【請求項１】
多値画像データから画素ブロックを単位に、周波数変換、量子化処理を行ない、当該量子化処理で得られた多値の各係数を符号化する画像符号化装置であって、
前記画素ブロックの各係数値を、設定された境界ビット位置より上位の上位ビット部、前記設定された境界ビット位置以下の下位ビット部に分離し、前記上位ビット部についてはランレングス符号化を行ない、前記下位ビット部についてはビットプレーンを単位に符号化する、複数の符号化手段と、
着目画素ブロックの各係数について、最上位から最下位のビットに向かって最初に“１”となるビット位置から最下位ビットまでのビット数を有効ビット数として検出し、検出した有効ビット数の出現回数に基づき、前記着目画素ブロックの各係数に対する前記境界ビット位置の複数の候補を決定する境界ビット位置決定手段と、
符号化対象の画像のサイズを設定する設定手段と、
前記複数の符号化手段の個数をＮ０、並列して符号化する画素ブロックの数をＮ１、各画素ブロックの符号化する際に参照する境界ビット位置の候補数をＮ２としたとき、前記設定手段で設定したサイズが大きい程、大きな前記Ｎ１を決定するとともに、前記設定手段で設定したサイズが大きいほど小さな前記Ｎ２を決定する符号化パラメータ決定手段と、
該符号化パラメータ決定手段で決定されたＮ１個の画素ブロックの係数値を、前記境界ビット位置決定手段に供給することで、各画素ブロックについてＮ２個の境界ビット位置の候補を算出させ、各画素ブロックの係数値を、Ｎ２個の符号化手段のそれぞれに供給するとともに、前記Ｎ２個の境界ビット位置の候補を各Ｎ２個の符号化手段に設定することで、各画素ブロック毎にＮ２個の符号化データを生成させる符号化制御手段と、
１つの画素ブロックの係数値から生成されたＮ２個の符号化データ中の最小符号化データ量となる符号化データを選択し、出力することを、Ｎ１個の画素ブロックのそれぞれについて行なう出力手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
前記境界ビット位置決定手段は、
前記有効ビット数ｂの出現回数をＮ（ｂ）と定義し、出現回数が１以上の最大の有効ビット数をｂmaxと定義し、変数ｂ＝０、１、２…に対する次式の合算関数：
Ｓ（ｂmax−ｂ）＝ΣＮ（ｂmax−ｉ）  （ｉ＝０，１，…、ｂ）
において、予め設定された閾値Ｔｈに対し、
Ｓ（ｂmax−ｂ）＞Ｔｈ
を満たす最大整数ｂを求め、当該最大整数ｂを前記境界ビット位置の第１候補、当該第１候補からのビットの距離順に第２候補以降を決定することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
更に撮像手段を備え、
前記設定手段は前記撮像手段による撮像する画像のサイズを設定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
更に、撮像手段と、当該撮像手段を用いて動画像撮影モード、又は、静止画撮影モードのいずれかを選択する選択手段と、
該選択手段で動画像撮影モードが選択された場合に限って、前記符号化パラメータ決定手段は前記Ｎ１をＮ０に設定し、前記Ｎ２を“１”に設定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項５】
更に、符号化した画像データを格納する記憶媒体の空き容量を検出する検出手段を備え、
該検出手段で検出した空き容量が予め設定された容量以下である場合に限って、前記符号化パラメータ決定手段は前記Ｎ１をＮ０に設定し、前記Ｎ２を“１”に設定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項６】
更に、省電力モードと非省電力モードのいずれかを選択する選択手段を備え、
該選択手段で省電力モードが選択された場合に限って、前記符号化パラメータ決定手段は前記Ｎ１をＮ０に設定し、前記Ｎ２を“１”に設定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項７】
多値画像データから画素ブロックを単位に、周波数変換、量子化処理を行ない、当該量子化処理で得られた多値の各係数を符号化する画像符号化装置の制御方法であって、
前記画素ブロックの各係数値を、設定された境界ビット位置より上位の上位ビット部、前記設定された境界ビット位置以下の下位ビット部に分離し、前記上位ビット部についてはランレングス符号化を行ない、前記下位ビット部についてはビットプレーンを単位に符号化する、複数の符号化工程と、
着目画素ブロックの各係数について、最上位から最下位のビットに向かって最初に“１”となるビット位置から最下位ビットまでのビット数を有効ビット数として検出し、検出した有効ビット数の出現回数に基づき、前記着目画素ブロックの各係数に対する前記境界ビット位置の複数の候補を決定する境界ビット位置決定工程と、
符号化対象の画像のサイズを設定する設定工程と、
前記複数の符号化工程の個数をＮ０、並列して符号化する画素ブロックの数をＮ１、各画素ブロックの符号化する際に参照する境界ビット位置の候補数をＮ２としたとき、前記設定工程で設定したサイズが大きい程、大きな前記Ｎ１を決定するとともに、前記設定工程で設定したサイズが大きいほど小さな前記Ｎ２を決定する符号化パラメータ決定工程と、
該符号化パラメータ決定工程で決定されたＮ１個の画素ブロックの係数値を、前記境界ビット位置決定工程に供給することで、各画素ブロックについてＮ２個の境界ビット位置の候補を算出させ、各画素ブロックの係数値を、Ｎ２個の符号化工程のそれぞれに供給するとともに、前記Ｎ２個の境界ビット位置の候補を各Ｎ２個の符号化工程に設定することで、各画素ブロック毎にＮ２個の符号化データを生成させる符号化制御工程と、
１つの画素ブロックの係数値から生成されたＮ２個の符号化データ中の最小符号化データ量となる符号化データを選択し、出力することを、Ｎ１個の画素ブロックのそれぞれについて行なう出力工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項８】
コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項１乃至６のいずれか１項に記載の画像符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データを符号化する技術に関するものである。
【背景技術】
【０００２】
静止画の符号化技術として知られているものにＪＰＥＧ符号化方式がある。ＪＰＥＧ符号化では、まず、入力画像データを垂直方向８画素、水平方向８画素で構成される画素ブロックに分割する。そして、この画素ブロックを単位に、ＤＣＴ変換処理を行ない、８×８個の周波数成分係数（以下、ＤＣＴ係数）を得る。そして、８×８個のＤＣＴ係数の左上隅の１つの係数がＤＣ（直流）成分、残りの６３係数がＡＣ（交流）成分を表す。次いで、各ＤＣＴ係数を、予め設定された量子化テーブルを参照して、量子化する。量子化された各ＤＣＴ係数は、エントロピ符号化され、符号化デーとして出力される。エントロピ符号化の方式としては、ハフマン符号化と算術符号化とがあり、ＤＣ係数とＡＣ係数とではそれぞれ異なる手順がとられ、符号化が施される。
【０００３】
ＪＰＥＧ Ｂａｓｅｌｉｎｅでは、係数のエントロピ符号化手法としてハフマン符号化を採用している。ＤＣ係数とＡＣ係数とではそれぞれ異なる手順で符号化される。着目画素ブロックのＤＣ成分は、直前の画素ブロックのＤＣ成分（予測値）との差分値を算出された後、符号化される。一方、着目画素ブロック内の各ＡＣ成分は、ゼロの連続数（ゼロラン）と非ゼロの係数値の組み合わせによりハフマン符号化される。
【０００４】
ＪＰＥＧ Ｂａｓｅｌｉｎｅに見られるように、ゼロの連続数を符号化する符号化手法において、符号化が効率的に行われるためには、０となる係数がある程度存在しなければならない。換言すれば、６３個のＡＣ係数の全てが非ゼロであるような場合には、符号化効率は非常に悪くなる。
【０００５】
ＡＣ係数を量子化する場合、ゼロの出現数を多くするためには、量子化ステップ値を大きな値にすることである。しかしながら、量子化ステップ値を大きくすればするほど、復号して得られた画像の画質が低くなるという問題がある。
【０００６】
そこで、符号化を効率的に機能させるため、各係数を境界ビット位置を境にして、上位ビット部と下位ビット部に分離して、上位ビット部分に対してはランレングス符号化を適用するといった手法が考えられる。かかる分離処理を介在させると、量子化後のＤＣＴ係数が非ゼロであっても、境界ビット位置を適度な位置にすれば、上位ビット部は“０”となる確率が高くなり、効率的な符号化データを生成することができる。かかる技術を開示する文献としては、特許文献１が挙げられる。
【０００７】
また、符号化の際に効率良く圧縮するための最適なパラメータを探索し、適用する方法も知られている（例えば特許文献２）。この方法は、Ｇｏｌｏｍｂ−Ｒｉｃｅ符号化するための、最適なｋパラメータを探索するものであり、各ｋパラメータに対してＧｏｌｏｍｂ−Ｒｉｃｅ符号化を行い、符号化データを生成するため、符号化効率の良いｋパラメータを見つけるものである。
【特許文献１】特開２０００−０１３７９７号公報
【特許文献２】特開２０００−１１５７８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、例えば特許文献１に開示された技術では、ＤＣＴ係数を上位ビット部と、下位ビット部分を分割する際のビット分割位置は固定であり、ＤＣＴ係数の内容によっては、必ずしも符号化効率の良い結果を得ることはできない。また、境界ビット位置を最適な位置に設定しようとする場合、全てのビット位置での符号化を行ない、その中から最も符号量を見つけ出すことが必要になる。すなわち、ソフトウェアで実現するためには符号化処理に多くの時間を必要とし、ハードウェアで実現する場合には回路規模が大きなものとなり、装置の大型化、コスト高、消費電力増大といった問題が残る。
【０００９】
本発明は上記従来例に鑑みてなされたものであり、複数の符号化処理部を有する装置において、並列に符号化する画素ブロックの数と、境界ビット位置の候補数を画像のサイズに応じて決定することで、符号化速度、符号化効率を適正に設定できる技術を提供しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
多値画像データから画素ブロックを単位に、周波数変換、量子化処理を行ない、当該量子化処理で得られた多値の各係数を符号化する画像符号化装置であって、
前記画素ブロックの各係数値を、設定された境界ビット位置より上位の上位ビット部、前記設定された境界ビット位置以下の下位ビット部に分離し、前記上位ビット部についてはランレングス符号化を行ない、前記下位ビット部についてはビットプレーンを単位に符号化する、複数の符号化手段と、
着目画素ブロックの各係数について、最上位から最下位のビットに向かって最初に“１”となるビット位置から最下位ビットまでのビット数を有効ビット数として検出し、検出した有効ビット数の出現回数に基づき、前記着目画素ブロックの各係数に対する前記境界ビット位置の複数の候補を決定する境界ビット位置決定手段と、
符号化対象の画像のサイズを設定する設定手段と、
前記複数の符号化手段の個数をＮ０、並列して符号化する画素ブロックの数をＮ１、各画素ブロックの符号化する際に参照する境界ビット位置の候補数をＮ２としたとき、前記設定手段で設定したサイズが大きい程、大きな前記Ｎ１を決定するとともに、前記設定手段で設定したサイズが大きいほど小さな前記Ｎ２を決定する符号化パラメータ決定手段と、
該符号化パラメータ決定手段で決定されたＮ１個の画素ブロックの係数値を、前記境界ビット位置決定手段に供給することで、各画素ブロックについてＮ２個の境界ビット位置の候補を算出させ、各画素ブロックの係数値を、Ｎ２個の符号化手段のそれぞれに供給するとともに、前記Ｎ２個の境界ビット位置の候補を各Ｎ２個の符号化手段に設定することで、各画素ブロック毎にＮ２個の符号化データを生成させる符号化制御手段と、
１つの画素ブロックの係数値から生成されたＮ２個の符号化データ中の最小符号化データ量となる符号化データを選択し、出力することを、Ｎ１個の画素ブロックのそれぞれについて行なう出力手段とを備える。
【発明の効果】
【００１１】
本発明によれば、並列に符号化する画素ブロックの数と、境界ビット位置の候補数を画像のサイズに応じて決定することで、符号化速度、符号化効率を適正に設定できるようになる。
【発明を実施するための最良の形態】
【００１２】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１３】
本実施形態で説明する画像符号化装置は、画素ブロックを単位に、周波数変換、量子化処理を行なう。そして、量子化処理して得られた多値の係数値を、境界ビット位置（その設定については後述）よりも上位の上位ビット部と境界ビット位置以下の下位ビット部に分離し、それぞれ符号化するものである。
【００１４】
［第１の実施形態］
図１は、本実施形態に係る画像符号化装置のブロック構成図である。尚、この画像符号化装置は、デジタルカメラ内に画像符号化処理部として組み込まれるものとして説明する。デジタルカメラには、光学部、撮像素子、表示部、操作部、書き換え可能な不揮発性記憶媒体を収納する収納部があるが、これらは、本願発明の主体である符号化処理装置とは直接には関係が無く、且つ、公知の構成と同じであるものとしてその説明は省略する。但し、実施形態におけるデジタルカメラは、ユーザは撮影に先立ち、操作部を操作して撮影画像の解像度（サイズ）を設定できるものとする。選択可能なサイズ（解像度）には、Ｌ、Ｍ、Ｓの３通りがある。Ｌサイズは水平方向４０００画素、垂直方向３０００画素（以下、４０００×３０００画素という）であり、Ｍサイズは２０００×１５００画素、Ｓサイズは１６００画素×１２００画素であるものとする。
【００１５】
図１に示すように、実施形態の画像符号化装置は、画像データ入力部１０１、ブロック分割部１０２、系列変換部１０３、係数量子化部１０３、係数バッファ１０３、係数データ取得部１０６を備える。また、本装置は、ユーザモード設定部１０７、エントロピ符号化制御部１０８、境界ビット位置決定部１０９、エントロピ符号化処理部１１０、符号量比較部１１１、画像データ出力部１１２も備える。エントロピ符号化処理部１１０は、複数のエントロピー符号化部で構成される。実施形態の場合、エントロピ符号化処理部１１０は４つのエントロピー符号化部１１０ａ、１１０ｂ、１１０ｃ、１１０ｄで構成されている。
【００１６】
ユーザモード設定部１０７は、不図示の操作部に設けられ、以下の３つの項目について設定可能である。
・画質レベル（実施形態では高画質と標準画質の２種類）
・符号化モード（符号化速度優先／符号量抑制優先／オートの３種類）
・画像サイズ（Ｌ，Ｍ，Ｓの３種類）
ユーザモード設定部１０７は、例えば、デジタルカメラが有する表示部と操作キーで構成できる。図１５は、表示部の設定画面の例を示している。ユーザは、操作部のキーを操作して、３つの項目について設定を行なう。図１５の例では、画質レベルが「高画質」、符号化モードは「Ａｕｔｏ」、画像サイズが「Ｌ」が設定されている例を示している。
【００１７】
ユーザモード設定部１０７は、上記の３つの項目のうち、設定された画質レベルを示す信号を、後述の係数量子化部１０４に出力する。また、ユーザモード設定部１０７は、他の２つの項目、すなわち、｛符号化速度優先モードor符号量抑制優先モードorオートモード｝、｛Ｌ or Ｍ or Ｓ｝をエントロピー符号化制御部１０８に出力する。
【００１８】
ところで、通常、デジタルカメラは、１画素につき、Ｒ、Ｇ、Ｂの３成分のデータを生成するが、本実施形態が適用するデジタルカメラの撮像素子は、輝度成分のみのモノクロ多値画像データ（１画素当たり８ビット＝２５６階調）を出力するものとする。これは、便宜的なものであって、以下の説明を簡単なものとするためである。１画素がＲＧＢの３成分の場合、各成分につき、以下に説明する処理を行なえば良いのは明らかである。また、色空間は輝度１成分の空間、ＲＧＢ色空間に限らず、Ｌｕｖ空間、ＹＣｂＣｒ空間、ＹＭＣＫ空間等でも構わず、本発明はその色空間の種類を問わない。また、本実施形態の画像符号化装置をデジタルカメラ以外に適用する場合、例えば、デジタル複写機等に適用するのであれば、画像入力源はイメージスキャナとなる。また、ＰＣに適用するのであれば、画像入力源はイメージスキャナやビデオカメラであっても良いし、場合によっては非圧縮の画像データファイルを格納したコンピュータ可読記憶媒体であっても構わない。つまり、画像データ入力源の種類によって本発明が限定されるものではない。
【００１９】
以下、図１を参照して、各処理部の処理内容を説明する。
【００２０】
画像データ入力部１０１は、不図示の撮像素子による撮像されたモノクロ多値画像データをラスタースキャン順に入力し、ブロック分割部１０２に出力する。ブロック分割部１０２は、画像データ入力部１０１からの画像データを一時的に格納するための内部バッファメモリを有し、８×８画素で構成される画像（以下、画素ブロックという）を単位に係数変換部１０３に出力する。
【００２１】
系列変換部１００３は、ブロック分割部１００２から出力される画素ブロックを周波数変換することで、８×８個の係数値を生成し、係数量子化部１０４に出力する。
【００２２】
ここで述べる周波数変換は、ＪＰＥＧ（ＩＳＯ／ＩＥＣ  １５４４４−１）で用いられるＤＣＴ（離散コサイン変換）を適用するものとする。ＪＰＥＧの離散コサイン変換処理については、以下に示す国際標準勧告書に記載されているので、ここでの詳述は省略する。
『ITU-T Recommendation T.81 | ISO/IEC 10918-1:1994, Information technology - Digital compression and coding of continuous-tone still images: Requirements and guidelines.』
【００２３】
なお、ＪＰＥＧの場合と同様に、離散コサイン変換の適用に先立ち、画素値から中間値を減算するレベルシフト処理を行うものとする。本実施形態における１画素は８ビットで表わされる輝度成分値を持つので、画素値から１２８を減じた上で、離間コサイン変換を行なうことになる。
【００２４】
係数量子化部１０４は、係数変換部１０３から出力されてきた、画素ブロック毎に、その画素ブロック内に含まれる各ＤＣＴ係数値を、ユーザモード設定部１０７で設定された画質レベルに対応する量子化マトリクスを用いて、量子化する。画質レベルが高画質である場合、選択される量子化マトリクス内の各量子化ステップ値は、標準画質用のそれよりも小さな値を持つことになる。係数量子化部１０４は、量子化後の各係数値を係数バッファ１０５へと格納する。なお、以降の説明において、量子化の有無を区別する必要がない場合、係数バッファ１０５に格納されている「量子化された係数値」を単に「係数値」と記す。また、係数量子化部１０４が生成する１個の係数値は、正負の符号を示す１ビットと絶対値部分を示す８ビットの計９ビットであるものとする。但し、係数値を表現するビット数はこれに限らない。特に、精度を高くするのであれば１０ビット以上でも構わない。
【００２５】
先に説明したように、ユーザモード設定部１０７からエントロピー符号化制御部１０８には、｛符号化速度優先モードor符号量抑制優先モードorオートモード｝、｛Ｌ or Ｍ or Ｓ｝を示す信号が供給される。
【００２６】
このエントロピー符号化制御部１０８は、係数データ取得部１０６、及び、境界ビット位置決定部１０９に与える符号化パラメータを決定する符号化パラメータ決定部として機能する。具体的には、符号化速度優先モードが選択された場合のエントロピー符号化制御部１０８の処理は、いずれの画像サイズが指定されても、｛オートモード＆画像Ｌサイズ｝と等価の処理となるように各処理部を設定する。また、符号量抑制優先モードが選択された場合のエントロピー符号化制御部１０８の処理は、画像サイズＬ，Ｍ，Ｓのいずれが指定された場合であっても、｛オートモード＆画像Ｓサイズ｝と等価の処理となるように各処理部を設定する。従って、符号化速度優先モード、符号量抑制優先モードについては、以下に説明するオートモードの記述に従って把握されたい。
【００２７】
以下、オートモードが選択された場合について説明する。
【００２８】
エントロピ符号化制御部１０８は、オートモードが設定されたことを示す情報を受信すると、ユーザが選択した画像サイズに応じた制御信号（符号化パラメータ）を、係数データ取得部１０６、境界ビット位置決定部１０９、及び、符号量比較部１１１に出力する。
【００２９】
係数データ取得部１０６、境界ビット位置決定部１０９、及び、符号量比較部１１１の処理は次の通りである。なお、係数データ取得部１０６は、ラスタースキャン順に画素ブロックの係数値を係数バッファ１０５から取得する。画像の左上隅の画素ブロックを０番目と定義し、その画素ブロックをＭＢ0と定義する。そして、ｉ番目の画素ブロックを着目画素ＭＢiと表わすこととする。ここで、ｉは０≦ｉ≦画素ブロックの総数−１の関係にある。
【００３０】
・画像サイズＬの場合：
係数データ取得部１０６は、着目画素ブロックＭＢiと、それに後続する３つの画素ブロックＢＭi+1、ＢＭi+2、ＢＭi+3の計４つの画素ブロックの係数値を係数バッファ１０５から取得する。そして、係数データ取得部１０６は、着目画素ブロックＭＢiの６４個の係数値をエントロピー符号化処理部１１０内のエントロピー符号化部１１０ａに出力する。また、係数データ取得部１０６は、着目画素ブロックの次の画素ブロックＭＢi+1の６４個の係数値を、エントロピー符号化部１１０ｂに出力する。また、係数データ取得部１０６は、着目画素ブロックＭＢi+2の６４個の係数値を、エントロピー符号化部１１０ｃに出力する。そして、係数データ取得部１０６は、着目画素ブロックＭＢi+3の６４個の係数値を、エントロピー符号化部１１０ｄに出力する。
【００３１】
また、係数データ取得部１０６は、画素ブロックＭＢi、ＭＢi+1、ＭＢi+2、ＭＢi+3の４つの画素ブロックの各係数値を、この順番に境界ビット位置決定部１０９に出力する。
【００３２】
境界ビット位置決定部１０９は、画素ブロックＭＢiの係数値から、複数の境界ビット位置の候補を算出する。そして、境界ビット位置決定部１０９は第１位の境界ビット位置の候補を、エントロピー符号化部１１０ａに出力する。同様に、境界ビット位置決定部１０９は画素ブロックＭＢi+1、ＭＢi+2、ＭＢi+3それぞれの第１位の境界ビット位置の候補を、エントロピー符号化部１１０ｂ、１１０ｃ、１１０ｄに出力する。
【００３３】
この結果、エントロピー符号化部１１０ａ乃至１００ｄは、それぞれ、画素ブロックＭＢi、ＭＢi+1、ＭＢi+2、画素ブロックＭＢi+3を、与えられた境界ビット位置を用いて符号化し、符号化データを符号量選択部１１１に出力する。
【００３４】
符号量比較部１１１は、エントロピー符号化部１１０ａ、１１０ｂ、１１０ｃ、１００ｄからの符号化データを、この順番に符号化データ出力部１１２に出力する。
【００３５】
上記のようにして、４つの画素ブロックが並列的に符号化される。従って、４つの画素ブロックの符号化処理を終えると、係数データ取得部１０６は画素ブロックＭＢi+4を着目画素ブロックと見なして、上記処理を行なうことにない、最終画素ブロックの符号化が終わるまで、この処理を繰り返す。従って、生成される符号化データ量が、最小となるとは限らないものの、エントロピー符号化処理部１１０の稼働率を１００％となり、高速な符号化処理を実現できる。
【００３６】
・画像サイズＭの場合：
係数データ取得部１０６は、着目画素ブロックＭＢiと、それに後続する画素ブロックＢＭi+1の計２つの画素ブロックの係数値を係数バッファ１０５から取得する。そして、係数データ取得部１０６は、着目画素ブロックＭＢiの６４個の係数値をエントロピー符号化処理部１１０内のエントロピー符号化部１１０ａ、１１０ｂに出力する。また、係数データ取得部１０６は、着目画素ブロックの次の画素ブロックＭＢi+1の６４個の係数値を、エントロピー符号化部１１０ｃ、１１０ｄに出力する。
【００３７】
境界ビット位置決定部１０９は、画素ブロックＭＢiの係数値から、上位２つの境界ビット位置の候補を、エントロピー符号化部１１０ａ、１１０ｂに出力する。同様にして、画素ブロックＭＢi+1から、境界ビット位置の上位２つの候補を、エントロピー符号化部１１０ｃ、１１０ｄに出力する。
【００３８】
この結果、エントロピー符号化部１１０ａ乃至１００ｄは、それぞれ与えられた係数値を符号化し、符号化データを符号量選択部１１１に出力する。
【００３９】
符号量比較部１１１は、先ず、エントロピー符号化部１１０ａ、１１０ｂからの符号化データのデータ量を比較する。そして、データ量の少ない符号化データを着目画素ブロックの符号化データとして選択し、符号化データ出力部１１２に出力する。次いで、符号量比較部１１１は、エントロピー符号化部１１０ｃ、１１０ｄからの符号化データのデータ量を比較する。そして、データ量の少ない符号化データを着目画素ブロックの次の画素ブロックの符号化データとして選択し、符号化データ出力部１１２に出力する。
【００４０】
上記のようにして、２つの画素ブロックについて、４つのエントロピー符号化部が符号化処理を行なうことになる。つまり、エントロピー符号化処理部１１０の稼働率を１００％にできる。また、画像サイズがＭの場合、１つの画素ブロックについて２つの符号化処理を行ない、符号化データ量の少ない方が選択されるので、符号化効率を更に高くすることができる。
【００４１】
・画像サイズＳの場合：
係数データ取得部１０６は、着目画素ブロックＭＢiの係数値を係数バッファ１０５から取得する。そして、係数データ取得部１０６は、着目画素ブロックＭＢiの６４個の係数値をエントロピー符号化処理部１１０内のエントロピー符号化部１１０ａ、１１０ｂ、１１０ｃ、１１０ｄに出力する。
【００４２】
境界ビット位置決定部１０９は、画素ブロックＭＢiの係数値から、境界ビット位置の上位４つ候補をエントロピー符号化部１１０ａ乃至１１０ｄに出力する。
【００４３】
符号量比較部１１１は、エントロピー符号化部１１０ａ乃至１１０ｄからの４つの符号化データのデータ量を比較する。そして、データ量が最小の符号化データを着目画素ブロックの符号化データとして選択し、符号化データ出力部１１２に出力する。
【００４４】
上記の結果、１つの画素ブロックについて、４つの境界位置での符号化を行なうことになるので、エントロピー符号化処理部１１０の稼働率を１００％にできる。また、１つの画素ブロックについて４つの符号化処理を行ない、符号化データ量の少ない方が選択されるので、符号化効率を更に高くすることができる。また、画像サイズがＳの場合の画素ブロックの総数は、画像サイズＭ、Ｌのそれと比較して、少ないので、符号化に要する時間は問題にならない。
【００４５】
以上、オートモードが選択された場合の各画像サイズ（解像度）に応じた処理を説明した。
【００４６】
なお、符号化速度優先モードが選択された場合、画像サイズとは無関係に連続する４つの画素ブロックについて、４つのエントロピー符号化部１１０ａ乃至１１０ｄが符号化処理を行なうことになる。また、符号量抑制優先モードが選択された場合、画像サイズとは無関係に、１つの画素ブロックについて、異なる４つの境界ビット位置に従い４つエントロピー符号化部１１０ａ乃至１１０ｄそれぞれが符号化処理を行ない、最小の符号化データを選択し、出力することになる。
【００４７】
次に、境界ビット位置決定部１０９、及び、エントロピー符号化処理部１１０について更に詳しく説明する。
【００４８】
先ず、境界ビット位置決定部１０９について説明する。図３は、境界ビット位置決定部１０９のブロック構成図である。境界ビット位置決定部１０９は、有効ビット判定部３０１、頻度テーブル生成部３０２、頻度テーブルバッファ３０３、境界ビット選択部３０４を有する。
【００４９】
説明を簡単にするため、１つの画素ブロック（着目画素ブロック）の境界ビット位置を決定する処理について説明する。また、着目画素ブロック内の６４個の各係数値をＣｎと表わす。
【００５０】
有効ビット判定部３０１は入力される各係数値Ｃｎの有効ビット数Ｂ（Ｃｎ）を求める。有効ビット数とは係数値Ｃｎの絶対値を自然２進数表記した場合に、上位から下位ビットに探索した際に最初に“１”が出現するビット位置を示す。例えば、着目する係数値Ｃｎが“−５”である場合、その絶対値“５”について自然２進表記すると、“０…０１０１”となる。最上位の“１”は最下位から３桁目であるので、Ｂ(−５)＝３となる。言い換えれば、絶対値が“５”の係数値の有効なビット数は、最下位ビットから３ビットであると言うことができる。なお、Ｃｎ＝０である場合、“１”のビットは存在しないので、有効ビット数Ｂ（Ｃｎ）は０となる。要するに、有効ビット数Ｂ（Ｃｎ）は、係数Ｃｎの絶対値｜Ｃｎ｜に対して｜Ｃｎ｜＜２Pの条件を満たす最小の正の整数値Ｐであると言える。
【００５１】
頻度テーブル生成部３０２は有効ビット数判定部３０１から出力されるＢ（Ｃｎ）について、頻度テーブルバッファ３０３に保持する発生頻度テーブルを更新する。実施形態における係数Ｃｎは、その正負の符号ビットを除くと、８ビットで表わされる。従って、頻度テーブルバッファ３０３は、有効ビット数０乃至８それぞれの出現頻度Ｎ（０）乃至Ｎ（８）を格納する容量を有する。頻度テーブルバッファ３０８は、１つの画素ブロックの頻度を求める際に、“０”で初期化されるものとする。そして、有効ビット判定部３０１が着目係数値Ｃｎの有効ビット数Ｂ（Ｃｎ）を決定した場合、頻度テーブル生成部３０２は頻度テーブルバッファ３０３内のＮ（Ｂ（Ｃｎ））を“１”だけ増加させる。つまり、頻度テーブル生成部３０２は、有効ビット判定部３０１によって１つの係数値の有効ビットを判定する度に、頻度テーブルバッファ３０３を更新する。
【００５２】
図４は、上記のようにして求めた、着目画素ブロック内の全係数値の有効ビットの出現頻度をグラフにして示した例を示している。図４では、有効ビット数が０乃至７が存在し、有効ビット数８の出現回数は０回であった例を示している。
【００５３】
さて、着目する矩形ブロックのすべての係数値について、有効ビット数の判定、頻度テーブルの更新処理が行われると、境界ビット選択部３０４は、着目矩形ブロックにおける境界ビットの候補を算出を行なう。具体的には、次の通りである。
【００５４】
境界ビット選択３０４は、まず、頻度テーブルバッファ３０３に格納される各有効ビット数ｂの出現回数Ｎ（ｂ）（ｂは任意の整数値）を、有効ビット数の最大値から最小値に向けて累積加算することで、図５のような累積頻度のテーブルＳ（ｂ）へと変換を行う。着目画素ブロックにおいて、出現回数が１以上の有効ビット数の最大値をｂmax（図４の場合にはｂmax＝７）とするとき、境界ビット選択部３０４は、変数ｂ＝ｂmax，ｂmax−１，ｂmax−２…と更新して、次式で示される累積頻度テーブルＳ（ｂ）を求める。
Ｓ（ｂ）＝Ｎ（ｂ）                ｂ＝ｂmaxの場合
Ｓ（ｂ）＝Ｎ（ｂ）＋Ｓ（ｂ＋１）  ｂ≠ｂmaxの場合
【００５５】
上記は、逆に変数ｂ＝０、１、２、…、ｂmaxと更新する場合、合算関数Σを用いて次のように表わすこともできる。
Ｓ（ｂmax−ｂ）＝ΣＮ（ｂmax−ｉ）  （ｉ＝０，１，…，ｂ）
【００５６】
累積頻度テーブルＳ（ｂ）は、要するに、ｂ≠０の場合、絶対値が２＾ｂ以上となる係数値の個数を表すことを示している。また、Ｓ（０）は着目矩形ブロック内の全係数値の個数に等しい。
【００５７】
累積頻度テーブルＳ（ｂ）を得た後、境界ビット選択部３０４は、有効ビット数の最大値から最小値に向けて、すなわち、降順にＳ（ｂ）の値を調べ、予め設定された閾値Ｔｈを超える最大整数ｂを探索する。そして、境界ビット選択部３０４は、得られたｂを境界ビット位置の第１候補Ｂ１として決定する。
【００５８】
ここで閾値Ｔｈは係数値の総数（実施形態の場合、画素ブロックは８×８画素のサイズなので、係数値の総数は６４個）に対して、所定の比率となるように設定する。この閾値Ｔｈはユーザが適宜設定もしくは選択可能にすることができるものとするが、統計的に見ると、この閾値Ｔｈは矩形ブロック内の全係数の個数の１／４乃至１／３が適当である。例えば、比率１／３を採用するなら、閾値Ｔｈは“２１”（≒６４／３）である。
【００５９】
また、境界ビット選択部３０４は、第１候補Ｂ１からのビットの距離順に第２候補以降を決定する。例えば、「Ｂ１＋１」を第２候補Ｂ２、「Ｂ１−１」を第３候補Ｂ３、「Ｂ１＋２」を第４候補Ｂ４として決定する。言い換えれば、境界ビット選択部３０４は、第１候補Ｂ１が決定した場合、それを中心にして距離が長くなる順に第２候補以降を決定する。
【００６０】
詳細は後述するが、エントロピー符号化処理部１１０内の各エントロピー符号化部１１０ａ乃至１１０ｄは、係数値Ｃｎを境界ビットＢで上位と下位に分離し、上位ビット部に対してゼロの連続数の符号化、即ち、ランレングス符号化を適用する。従って、ここでの閾値Ｔｈの役割は、係数値の上位ビット部が非ゼロの係数とゼロの係数値の比を調整するためのものであり、ランレングス符号化を有効に機能させることを狙いとして設定されるものであると言える。図５に示した例では、“５”が閾値Ｔｈを超える最大のｂとなる場合、第１候補の境界ビット位置Ｂ１は“５”となる。また、第２候補Ｂ２は、“６”、第３候補Ｂ３は“４”、そして、第４候補Ｂ４は“７”となる。なお、候補を選定する際に、その候補の値が、係数Ｃｎの取り得る範囲を超える場合には、その値を無視して、有効な範囲内で決定するものとする。例えば、境界ビット位置Ｂが仮に“８”となった場合、７、６、５が第２乃至第４候補の値として決定される。
【００６１】
ここで、先に説明したオートモードが選択された場合の境界ビット位置決定部１０９の処理をまとめると次の通りである。なお、以下の説明で、着目画素ブロックＭＢiに対する境界ビット位置の第１候補をＢ１i、第２候補をＢ２i、第３候補をＢ３i、第４候補をＢ４iと表わすこととする。
・画像サイズがＬの場合：
境界ビット位置決定部１０９は、着目画素ブロックを含む計４つの画素ブロックＭＢi、ＭＢi+1,ＭＢi+2、ＭＢi+3それぞれから第１候補の境界ビット位置Ｂ１i,Ｂ１i+1,Ｂ１i+2,Ｂ１i+3を算出する。言い換えれば、境界ビット位置決定部１０９は、各画素ブロックの第２候補以降の境界ビット位置を出力しない。そして、境界ビット位置決定部１０９は、境界ビット位置Ｂ１iをエントロピー符号化部１１０ａに出力する。同様に、境界ビット位置決定部１０９は、境界ビット位置Ｂ１i+1、Ｂ１i+2,Ｂ１i+3それぞれを、エントロピー符号化部１１０ｂ、１１０ｃ、１１０ｄに出力する。
・画像サイズがＭの場合：
境界ビット位置決定部１０９は、着目画素ブロックとその次の画素ブロックの計２画素ブロックのＭＢi、ＭＢi+1それぞれから第１候補、第２候補の境界ビット位置Ｂ１i,Ｂ２i,Ｂ１i+1,Ｂ２i+1を算出する。そして、境界ビット位置決定部１０９は、境界ビット位置Ｂ１iをエントロピー符号化部１１０ａに出力し、境界ビット位置Ｂ２iをエントロピー符号化部１１０ｂに出力する。同様に、境界ビット位置決定部１０９は、境界ビット位置Ｂ１i+1、Ｂ２i+1を、エントロピー符号化部１１０ｃ、１１０ｄに出力する。
・画像サイズがＳの場合：
境界ビット位置決定部１０９は、着目画素ブロックＭＢiから第１乃至第４候補の境界ビット位置Ｂ１i,Ｂ２i,Ｂ３i,Ｂ４iを算出する。そして、境界ビット位置決定部１０９は、境界ビット位置Ｂ１i,Ｂ２i,Ｂ３i,Ｂ４iそれぞれを、エントロピー符号化部１１０ａ乃至１１０ｄに出力する。
【００６２】
次に、エントロピー符号化処理部１１０について説明する。図１に示すように、実施形態におけるエントロピー符号化処理部１１０は、４つのエントロピー符号化部１１０ａ乃至１１０ｄを有する。各エントロピー符号化部は、係数データ取得部１０６から入力した１画素ブロック内の各係数Ｃｎ（６４個）を、境界ビット位置決定部１０９から入力した境界ビット位置に従って符号化するものであり、その構成は互いに同じである。それ故、以下では、エントロピー符号化部１１０ａについてのみ説明することとする。
【００６３】
図２は、エントロピー符号化部１１０ａのブロック構成図である。図示の如く、エントロピー符号化部１１０ａは、上位／下位ビット分離部２００、上位ビット符号化部２０１、下位ビット符号化部２０２、符号バッファ２０３、符号列形成部２０４を有する。
【００６４】
以下、境界ビット位置決定部１０９からエントロピー符号化部１１０ａに設定される境界ビット位置を“Ｂ”として説明する。
【００６５】
上位／下位ビット分離部２００は、係数データ取得部１０６から出力された着目画素ブロックの係数値Ｃｎについて、その符号絶対値表現における下位Ｂビットを取り除いて得られる上位ビット部と、境界ビット位置以下の下位Ｂビット部とに分離する。但し、正負の符号ビットは処理対象外とする。より具体的には、上位／下位ビット分離部２００は、着目係数値Ｃｎの、上位ビット部Ｕｎ（＝Ｃｎ＞＞Ｂ）と、下位ビット部Ｌｎ（＝｜Ｃｎ｜＆（（１＜＜Ｂ）−１））を求める。ここでＹ＞＞Ｘは、値ＹをＸビットだけ下位方向にシフトすることを示し、Ｙ＜＜Ｘは値ＹをＸビットだけ上位方向にシフトすることを示している。また、｜Ｙ｜は値Ｙの絶対値を、Ｘ＆Ｙは値Ｘと値Ｙとのビット単位の論理積（ＡＮＤ）を示す。
【００６６】
上位／下位ビット分離部２００は、着目係数値Ｃｎの上記ビット部Ｕｎを上位ビット符号化２０１に出力し、下位ビット部Ｌｎを下位ビット符号化部２０２へと出力する。
【００６７】
なお、上位ビット部Ｕｎの正負符号ビットを除く値が“０”である係数Ｃｎについては、係数Ｃｎの正負を表す符号も下位ビット符号化部２０２へと引き渡されるものとする。
【００６８】
図６に、係数値Ｃｎの一例として“−４１、−７、２８、−１、…”が入力され、境界ビット位置Ｂ＝４で上位ビット部Ｕｎと下位ビット部Ｌｎに分離した例を示す。
【００６９】
図示の場合、上位／下位ビット分離部２００は、正負符号の１ビットを含む６４個の上位ビット部Ｕｎを上位ビット符号化部２０１に出力する。
【００７０】
上位ビット符号化部２０１は、入力される上位ビット部Ｕｎの正負符号ビットを除外した４ビットで表わされる値が“０”の場合、ここではその正負符号ビットの符号化は行なわない。上位ビット部Ｕｎにおいて、正負符号ビットを除外した４ビットで表わされる値が“０”となるのは、図６の場合、係数値Ｃｎ＝“−７”、“−１”である。また、上位ビット部Ｕｎの正負符号ビットを除く、４ビットで表わされる値が非“０”の場合、その正負符号ビットを含む上位ビット部Ｕｎがそのままランレングス符号化対象となる。
【００７１】
従って、図６の場合、上位ビット符号化部２０１は、１０進数表記の多値データ“−２”、“０”、“１”、“０”…の順に、ランレングス符号化を行なうことになる。この結果、上位ビット部が“０”となる確率が高くなり、符号化効率が高めることができる。
【００７２】
なお、１つの画素ブロックからは、１個のＤＣ係数と、６３個のＡＣ係数が得られる。そして、実施形態における上位ビット符号化部２０１の符号化はＪＰＥＧのＢａｓｅｌｉｎｅでのＤＣ，ＡＣ係数の符号化と同じ方法を用いる。すなわち、着目画素ブロックのＤＣ係数の上位ビット部Ｕｎを符号化する場合には、直前の画素ブロック（既に符号化済みのブロックでもある）のＤＣ係数の上位ビット部Ｕｎを予測値として用いる。そして、着目画素ブロックの上位ビット部Ｕｎと予測値との差分を算出し、その差分に基づきハフマン符号化を行う。そして、ＡＣ係数の上位ビット部Ｕｎについては、ゼロの連続数と非ゼロの係数を組み合わせてハフマン符号化を行う。ブロックの最後がゼロの連続で終わる場合にはＥＯＢ（Ｅｎｄ Ｏｆ Ｂｌｏｃｋ）を表す特殊符号を用いる点についてもＪＰＥＧ Ｂａｓｅｌｉｎｅと同様である。
【００７３】
一方、上位／下位ビット分離部２００は、着目矩形ブロックの６４個の下位ビット部Ｌｎを下位ビット符号化部２０２に出力する。ただし、先に説明したように、上位／下位ビット分離部２００は、上位ビット部Ｕｎの正負符号ビットを除く４ビットの値が“０”である係数Ｃｎについては、その正負符号ビットを下位ビット部Ｌｎに付加して下位ビット符号化部２０２に出力する。
【００７４】
正負符号ビットを除く上位ビット部Ｕｎの値が“０”となるのは、図６の例では、係数値“−７”と、“−１”である。そこで、正負符号ビットの付加位置は、下位ビット部Ｌｎの上位から下位に向かって最初に“１”が出現する位置とする。図６の場合には、斜線で示される位置が正負ビットを挿入する位置になる。
【００７５】
下位ビット符号化部２０２は上位／下位ビット分離部２００から出力された下位ビット部Ｌｎの符号化を行う。上位ビット部Ｕｎに対し、下位ビット部Ｌｎは一般に圧縮しにくいデータであるので、本実施形態の下位ビット符号化部２０２は、下位ビット部Ｌｎを非圧縮で出力する（但し、圧縮性能を追求する場合には算術符号などを適用しても良い）。非圧縮であるので、基本的には入力データがそのまま符号化データとなるが、画質への影響度に応じてビットデータが配置されるように、言い換えれば、復号装置がプログレッシブ再生できるようにするため、ビットプレーン順に並び替えて出力する。
【００７６】
図６の場合、下位ビット符号化部２０２は、入力した下位ビット部Ｌｎを不図示の内部バッファに格納し、各下位ビット部Ｌｎの最上位のビット桁（Ｂ番目の桁）で構成されるビットプレーンを出力する。この処理を最下位のビット桁（１番目の桁）まで繰り返す。
【００７７】
図６に示した係数値列“−４１、−７、２８、−１、…”の場合（境界ビット位置Ｂ＝４）における、下位ビット符号化部２０２が出力するデータの例を、図７に示す。
【００７８】
下位ビット部Ｌｎの最初に出力されるプレーン（同一ビット位置のビット情報）はＢ桁のビットプレーン“１０１０…”となる。この中の“１”に対応するのは、係数値“−４１”、“２８”である。係数値“−４１”、“２８”の正負符号ビットを除く上位ビット部Ｕｎが表わす値は非０であるので、正負符号ビットは挿入されない。
【００７９】
次のＢ−１桁のビットプレーンに着目すると、係数値“−７”を表わす最初の“１”のビットが出現する（図６参照）。また、係数値“−７”の正負符号ビットを除く上位ビット部Ｕｎの値は“０”となる。それ故、図示の如く、係数値“−７”を表わす最初の“１”に後続する位置に、正負の符号ビットを挿入する。以下、Ｂ−２桁のビットプレーン、Ｂ−３桁のビットプレーンを出力していく。Ｂ−３桁のビットプレーンでは、係数値“−１”を表わす最初の“１”が出現するので、それに後続して正負符号ビットが挿入される。
【００８０】
符号化バッファ２０３には、上位ビット符号化部２０１、下位ビット符号化部２０２から出力される画素ブロックを単位とする符号化データが格納される。また、符号化バッファ２０３には、境界ビット位置決定部１０９から設定された境界ビット位置の情報も格納されるものとする。
【００８１】
符号列形成部２０４は、符号バッファ２０３に格納された１画素ブロックの符号化データから、図８に示すような構造の画素ブロックの符号化データを形成し、符号量比較部１１１に出力する。図８において、ブロックヘッダには着目画素ブロックの境界ビット位置Ｂの情報が格納される。また、それに後続して、上位ビット部Ｕｎの符号化データ、下位ビット部Ｌｎの符号化データが格納されることになる。
【００８２】
以上、エントロピー符号化部１１０ａの処理内容について説明した。他のエントロピー符号化部１１０ｂ、１１０ｃ、１１０ｄは、与えられる係数値、又は、境界ビット位置が、エントロピー符号化部１１０ａのそれと異なるだけである。
【００８３】
符号量比較部１１１については、既に説明した通りであるが、これまでの説明に基づいてまとめると次の通りである。以下もユーザがユーザモード設定部１０７を操作してオートモードが選択された場合の説明である。
【００８４】
なお、符号量比較部１１１内には、適当な容量の内部バッファを備えているものとする。
・画像サイズがＬの場合：
エントロピー符号化部１１０ａ乃至１１０ｄは、画素ブロックＭＢi,ＭＢi+1,ＭＢi+2,ＭＢi+3の符号化データを出力する。従って、符号量比較部１１１は各符号化データが画素ブロックＭＢi,ＭＢi+1,ＭＢi+2,ＭＢi+3の符号化データであるものとし、そのまま符号化データ出力部１１２に出力する。
・画像サイズがＭの場合：
エントロピー符号化部１１０ａ、１１０ｂは、画素ブロックＭＢiの境界ビット位置の第１候補Ｂ１i、第２候補Ｂ２iをパラメータとする符号化データを出力する。そこで、符号量比較部１１１は、この２つの符号化データのデータ量を比較し、符号量の小さい方を画素ブロックＭＢiの符号化データとして選択し、符号化データ出力部１１２に出力する。また、符号量比較部１１１は、非選択の符号化データを破棄する。
【００８５】
また、エントロピー符号化部１１０ｃ、１１０ｄは、画素ブロックＭＢi+1の境界ビット位置の第１候補Ｂ１i+1、第２候補Ｂ２i+1の符号化データを出力する。そこで、符号量比較部１１１は、この２つの符号化データのデータ量を比較し、符号量の小さい方を画素ブロックＭＢi+1の符号化データとして選択し、符号化データ出力部１１２に出力する。また、符号量比較部１１１は、非選択の符号化データを破棄する。
・画像サイズがＳの場合：
エントロピー符号化部１１０ａ乃至１１０ｄは、画素ブロックＭＢiの境界ビット位置の第１候補Ｂ１i、第２候補Ｂ２i、第３候補Ｂ３i、第４候補Ｂ４iの符号化データを出力する。そこで、符号量比較部１１１は、これら４つの符号化データのデータ量を比較し、最小符号量となる符号化データを、画素ブロックＭＢiの符号化データとして選択し、符号化データ出力部１１２に出力する。また、符号量比較部１１１は、非選択の３つの符号化データを破棄する。
【００８６】
次に、符号化データ出力部１１２について説明する。
【００８７】
符号化データ出力部１１２は、符号量比較部１１１からの符号化データを入力するに先立ってファイルヘッダを生成し、出力する。このファイルヘッダには、画像の水平方向画素数、垂直方向画素数や、色成分の数（実施形態でモノクロ画像の例であるので色成分の数は１つ）、各画素のビット数など、復号に必要な各種情報がヘッダとして付与される。
【００８８】
この後、符号化データ出力部１１２は、符号量比較部１１１からの各画素ブロックの符号化データを、先に生成したファイルヘッダに後続するように出力する。図９は、実施形態における符号化画像データのファイル構造を示している。
【００８９】
なお、最終的に生成される符号化画像データのファイル構造は図９に限らない。例えば、図１０に示すファイル構造であっても良い。
【００９０】
例えば、図１０のように、ファイルヘッダには、画像の水平方向画素数、垂直方向画素数や、色成分の数、各画素のビット数など、復号に必要な各種情報がヘッダとして付与する。このヘッダには全てのブロックについての境界ビット位置情報も含まれる。即ち、復号側ではこのヘッダを解析すれば、各ブロックの境界ビット位置を得ることができるということである。ヘッダの後に、画像の全ブロックについて上位ビット符号化データが配置され、その後に、下位ビット符号化データが並ぶ。図中、Ｎはブロックの総数を表し、Ｌは全ブロックについて探索した境界ビット位置Ｂの最大値を表す。上位ビット符号化データは、ラスタースキャンの順番で各ブロックの上位ビット部符号化データを連結して構成される。下位ビット符号化データは各ブロックの下位ビット部符号化データをビットプレーン順に配置して構成される。ビットプレーンｉはラスタースキャンの順番で各ブロックのビットプレーンｉのデータを集めて構成されるが、境界ビットＢ＜ｉとなるブロックからのデータは含まれないため、必ずしもすべてのブロックからデータが集められるわけではない。
【００９１】
以上実施形態の画像符号化装置の構成とその処理について説明した。上記実施形態を分かりやすくまとめると次の通りである。
【００９２】
先ず、エントロピー符号化処理部１１０が有するエントロピー符号化部の数をＮ０個（実施形態ではＮ０＝４の場合であった）とする。また、連続する位置の符号化対象の画素ブロックの個数をＮ１、１つの画素ブロックを符号化する際の用いる境界ビット位置の候補の数をＮ２と定義する。ここでＮ０，Ｎ１，Ｎ２の関係は、Ｎ０＝Ｎ１×Ｎ２である。
【００９３】
かかる定義の下で、本実施形態の符号化処理を説明すると、画像のサイズが大きいほど、符号化パラメータであるＮ１を大きくし、Ｎ２を小さくして符号化処理を行なう。逆に、画像のサイズが小さいほど、Ｎ１を小さくし、Ｎ２を大きくして符号化処理を行なう。そして、決定されたＮ１個の画素ブロックの各係数値を、前記境界ビット位置決定部１０９に供給することで、各画素ブロックについてＮ２個の境界ビット位置の候補を算出させる。そして、各画素ブロックの係数値を、Ｎ２個のエントロピー符号化部のそれぞれに供給するとともに、Ｎ２個の境界ビット位置の候補を各Ｎ２個のエントロピー符号化部に設定することで、各画素ブロック毎にＮ２個の符号化データを生成させる。この結果、１つの画素ブロックの係数値からは、Ｎ２個の符号化データが生成される。そして、符号量比較部１１１は、Ｎ２個の符号化データ中の最小符号化データ量となる符号化データを選択し、出力する。符号量比較部１１１はこの処理をＮ１個の画素ブロックのそれぞれについて行なう。
【００９４】
この結果、画像のサイズが大きいほど、単位時間当たりの符号化対象の画素ブロック数が増える。一方、画像サイズが小さいほど、単位時間当たりの符号化対象の画素ブロックの数は減るが、符号化効率を高めることができる。
【００９５】
なお、実施形態では、Ｎ０＝Ｎ１×Ｎ２を満たすものとして説明したが、必ずしもこの要件を満たす必要はない。
【００９６】
例えば、Ｎ０＝４の場合、ブロックＭＢiについては、２つの境界ビット位置の候補を用い、ブロックＢＭi+1、ＭＢi+2については、それぞれ１つの境界ビット位置候補を用いて符号化しても構わない。この場合、ブロックＭＢiについては、符号化データ量の少ない方が選択されるが、いずれを選んだとしても画質には影響はない。エントロピー符号化そのものは可逆であり、画質は係数量子化部１０４による量子化ステップ値で決まるからである。要するに、高速符号化が望まれるほど境界ビット位置の候補数を減らす、換言すれば、符号化効率を高めるほど境界ビット位置を多くするようにすればよい。この結果、３種類を超える解像度で撮影可能なデジタルカメラに対しても対処できる。
【００９７】
なお、上記実施形態では、画素ブロックのサイズを８×８画素とし、この画素ブロックを単位に境界ビット位置を決定するものとして説明した。しかしながら、本発明はこれに限定されるものではない。例えば、１画素ブロックがｎ×ｍ画素（ｎ，ｎは２以上の整数）のサイズとし、系列変換、係数量子化はこの画素ブロックを単位に実行する。そして、境界ビット位置決定部１０９は、複数の画素ブロック（ｐ×ｎ）×（ｑ×ｍ）で構成されるマクロブロックを単位に境界位置を決定し、各エントロピー符号化部もマクロブロックを単位に、上位ビット部と下位ビット部に分離して、マクロブロックを単位に符号化しても構わない。この場合、１つのマクロブロック内の先頭の画素ブロックのＤＣ成分を符号化する際に用いる予測値を“０”とすることが望ましい。また、２番目以降の画素ブロックのＤＣ成分を符号化する場合には、その直前の画素ブロックのＤＣ成分値を予測値として用いる。このようにすると、マクロブロックを単位に単独で復号することも可能になる。
【００９８】
また、実施形態では、画像のサイズとして３種類、符号化部（実施形態におけるエントロピー符号化部）の数が４つの例を説明したが、この数によって本発明が限定されるものではない。
【００９９】
以上説明したように本実施形態によれば、オートモードが選択された場合、符号化しようとする画像のサイズ（解像度）に応じて、複数の符号化部の稼働率を１００％にすることができる。また、サイズの大きい画像を符号化する場合には、多少とも符号化効率が下がる可能性があるものの、高速に符号化することが可能になる。一方、サイズの小さい画像の場合には、符号化処理する単位であるブロック数が少ないので、その分だけ符号化効率を高める処理を行なうことが可能になる。
【０１００】
なお、実施形態では、デジタルカメラに適用する例を説明したが、画像データの入力源はイメージスキャナを搭載する、もしくは接続可能な装置（例えばデジタル複写機）に適用しても構わない。この場合、「画像のサイズ」は、「原稿サイズ」と置き換えれば理解しやすいであろう。また、イメージスキャナの読み取り解像度が可変の場合には、上記実施形態がそのまま利用できる。
【０１０１】
［第１の実施形態の変形例］
上記第１の実施形態と同等の処理を、コンピュータプログラムによって実現する例を第１の実施形態の変形例として以下に説明する。
【０１０２】
図１４は、本変形例における情報処理装置（例えばパーソナルコンピュータ）のブロック構成図である。
【０１０３】
図中、１４０１はＣＰＵで、ＲＡＭ１４０２やＲＯＭ１４０３に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。１４０２はＲＡＭで、外部記憶装置１４０７や記憶媒体ドライブ１４０８、若しくはＩ／Ｆ１４０９を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、ＲＡＭ１４０２は、ＣＰＵ１４０１が各種の処理を実行する際に使用するワークエリアも備える。１４０３はＲＯＭで、ブートプログラムや本装置の設定プログラムやデータを格納する。１４０４、１４０５は夫々キーボード、マウスで、ＣＰＵ１４０１に対して各種の指示を入力することができる。
【０１０４】
１４０６は表示装置で、ＣＲＴや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。１４０７はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置１４０７には、ＯＳ（オペレーティングシステム）や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、ＣＰＵ１４０１は、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードし、実行することになる。
【０１０５】
１４０８は記憶媒体ドライブで、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されたプログラムやデータを読み出してＲＡＭ１４０２や外部記憶装置１４０７に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ１４０８は、ＣＰＵ１４０１による制御によって、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードする。
【０１０６】
１４０９はＩ／Ｆで、このＩ／Ｆ１４０９によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のＲＡＭ１４０２や外部記憶装置１４０７、あるいは記憶媒体ドライブ１４０８に入力することもできる。１４１０は上述の各部を繋ぐバスである。
【０１０７】
上記構成において、本装置の電源がＯＮになると、ＣＰＵ１４０１はＲＯＭ１４０３のブートプログラムに従って、外部記憶装置１４０７からＯＳをＲＡＭ１４０２にロードする。この結果、キーボード１４０４、マウス１４０５の入力が可能となり、表示装置１４０６にＧＵＩを表示することが可能になる。ユーザが、キーボード１４０４やマウス１４０５を操作し、外部記憶装置１４０７に格納された画像符号化処理用アプリケーションプログラムの起動の指示を行なうと、ＣＰＵ１４０１はそのプログラムをＲＡＭ１４０２にロードし、実行する。これにより、本装置が画像符号化装置として機能することになる。
【０１０８】
以下、ＣＰＵ１４０１が実行する画像符号化処理用のアプリケーションプログラムの処理手順を図１１のフローチャートに従って説明する。基本的に、このプログラムは、図１に示す各構成要素に相当する関数を備えることになる。ただし、図１における係数バッファ１０５、図２の符号バッファ２０３、図３の頻度テーブルバッファ３０３の各領域はＲＡＭ１４０２内に予め確保することになる。なお、本変形例では、符号化対象の画像データは外部記憶装置１４０７にファイルとして格納されており、符号化処理した結果も外部記憶装置１４０７にファイルとして保存する例を説明する。但し、画像データの入力源は、インタフェース１４０９に接続されたイメージスキャナであっても良いし、符号化画像データの出力先もネットワークであっても構わない。
【０１０９】
ユーザが符号化対象となる画像ファイルを指定すると、ＣＰＵ１４０１は、そのファイルヘッダを解析することで、画像のサイズ（画素数）が判定できる。ステップＳ１では、ＣＰＵ１４０１は、この判定した画像のサイズと、予め設定された閾値と比較し、Ｌ，Ｍ，Ｓのいずれに該当するかを判定する。
【０１１０】
ステップＳ１にて、符号化対象の画像がサイズＳであると判定した場合、ステップＳ２に進んで、並列的に符号化する画素ブロックの数を定義する変数Ｐｎに“１”に設定する。また、参照する境界ビット位置の候補数を定義する変数Ｑｎに“４”を設定する。
【０１１１】
また、ステップＳ１にて、符号化対象の画像がサイズＭであると判定した場合、ステップＳ３に進んで、並列的に符号化する画素ブロックの数を定義する変数Ｐｎに“２”に設定する。また、参照する境界ビット位置の候補数を定義する変数Ｑｎに“２”を設定する。
【０１１２】
また、ステップＳ１にて、符号化対象の画像がサイズＬであると判定した場合、ステップＳ４に進んで、並列的に符号化する画素ブロックの数を定義する変数Ｐｎに“４”に設定する。また、参照する境界ビット位置の候補数を定義する変数Ｑｎに“１”を設定する。
【０１１３】
上記ステップＳ２乃至Ｓ４の処理は、図１のエントロピー符号化制御部１０８に対応するものである。
【０１１４】
次いで、ステップＳ５に処理を進め、Ｐｎ個の画素ブロックを入力する。これは、係数データ取得部１０６に相当する処理である。
【０１１５】
そして、ステップＳ６に進んで、Ｐｎ個の画素ブロックそれぞれに対し、Ｑｎ個の境界ビット位置の候補を算出する。これは境界ビット位置決定部１０９に相当する処理である。
【０１１６】
ステップＳ７では、Ｐｎ個の画素ブロックそれぞれに、Ｑｎ個の境界ビット閾値を用いてＰｎ×Ｑｎ個の符号化データを生成させる（エントロピー符号化処理部１１０に相当）。
【０１１７】
そして、ステップＳ８にて、符号量比較＆出力処理を行なう。この処理の内容は、先に説明した符号量比較部１１１と同じである。
【０１１８】
ステップＳ９では、全画素ブロックの符号化処理を終えたか否かを判定し、否の場合には次のＰｎ個の画素ブロックの符号化を行なうため、ステップＳ５以降の処理を行なう。
【０１１９】
また、ステップＳ９にて、全画素ブロックの符号化処理を終えたと判断した場合には、本処理を終了する。
【０１２０】
以上説明したように本変形例によると、先に説明した第１の実施形態と同等の処理を、コンピュータプログラムとしてコンピュータにより実現できる。
【０１２１】
［第２の実施形態］
第２の実施形態を説明する。本第２の実施形態の装置構成は、図１と同じであるが、ユーザモード設定部１０７は、更に、動画像撮影モードと静止画撮影モードのいずれかを設定できる点が異なる。従って、装置構成は図１を参照して説明する。なお、説明を簡単なものとするため、静止画撮影モードでは、第１の実施形態のオートモードが設定されるものとして説明する。また、動画像撮影モードでは、入力される１枚の画像は動画像における１フレームに対応するものとし、動画像撮影の停止指示が入力されるまで、動画像の撮影が継続するものとして説明する。
【０１２２】
図１２は、エントロピー符号化制御部１０８の処理内容を示すフローチャートである。以下、同図に従ってエントロピー符号化制御部１０８の処理手順を説明する。
【０１２３】
先ず、ステップＳ２１において、エントロピー符号化制御部１０８は、ユーザモード設定部１０７より、撮影モードを取得する。そして、ステップＳ２２にて、設定された撮影モードが動画像撮影モードであるか、静止画撮影モードであるかを判定する。動画像撮影モードであると判定した場合、処理はステップＳ２３に進み、並列的に符号化する画素ブロックの数を定義する変数Ｐｎに“４”に設定する。また、参照する境界ビット位置の候補数を定義する変数Ｑｎに“１”を設定する。動画像の場合、フレームレートが３０フレーム／秒とするなら、１フレーム当たりの符号化は１／３０秒以内に行なわなければならい。そこで、実施形態では、変数Ｐｎに“４”に、変数Ｑｎに“１”を決定する。
【０１２４】
一方、ステップＳ２２にて、静止画撮影モードが設定されていると判断した場合、処理はステップＳ２４に進む。静止画撮影モードの場合、１枚の画像の符号化に要する時間は、動画像ほどの高速性は要求されない。そこで、このステップＳ２４では、第１の実施形態のオートモードに従って変数Ｐｎ、変数Ｑｎを決定する。すなわち、画像サイズがＬの場合には、Ｐｎを“４”、変数Ｑｎを“１”に決定する。また、画像サイズがＭの場合には、Ｐｎを“２”、Ｑｎを“２”に決定する。そして、画像サイズがＳの場合には、Ｐｎを“１”、Ｑｎを“４”に決定する。
【０１２５】
この後、ステップＳ２５に進み、エントロピー符号化制御部１０８は、決定したＰｎ，Ｑｎを係数データ取得部１０６、境界ビット位置決定部１０９にそれぞれ出力する。
【０１２６】
係数データ取得部１０６の処理は第１の実施形態と同じである。境界ビット位置決定部１０９の処理は、第１の実施形態と同じであっても良いし、より高速に処理する必要がある場合には、全ての画素ブロックに対して境界ビット位置にある固定のビット位置を設定しても構わない。例えば８ビットで係数のビット数列が形成されている場合に、境界ビット位置を下位から３ビット目であるとったように決めてしまっても良い。
【０１２７】
以上本第２の実施形態を説明した。本第２の実施形態によれば、動画像撮影モードでは、リアルタイムに各フレームを符号化する必要があることに鑑み、境界ビット位置の候補数を“１”とし、４つのエントロピー符号化部１１０ａ乃至１１０ｄに４つの連続する画素ブロックを符号化を行なう。この結果、符号化速度を上げ、フレームの欠落をなくして符号化を行なうことが可能になる。
【０１２８】
なお、第２の実施形態では、図１の構成を採用したので、エントロピー符号化部の個数が４つの例であったが、この数によって本願発明が限定されるものではない。その理由は先の第１の実施形態で説明した通りである。
【０１２９】
［第３の実施形態］
第３の実施形態では、圧縮符号化した画像データを格納する記憶媒体（ＣＦメモリカード等）の空き容量に応じて、静止画の符号化の変数Ｐｎ、変数Ｑｎを設定する例を説明する。なお、説明を簡単なものとするため、
装置構成は第１の実施形態と同じとし、その説明は省略する。但し、符号化データ出力部１１２の出力先の記憶媒体の空き容量を検出する構成が増える点であるが、通常のデジタルカメラでも記憶媒体のファイルシステムにアクセスし、その空き容量を検出することを行なっているので、その構成については省略する。
【０１３０】
図１３は、本第３の実施形態におけるエントロピー符号化制御部１０８の処理手順を示すフローチャートである。以下、同図に従って説明する。
【０１３１】
先ず、ステップＳ３１において、エントロピー符号化制御部１０８は、記憶媒体の空き容量Ｍｃを取得する。そして、ステップＳ３２にて、取得した空き容量Ｍｃが予め設定された閾値Ｔｈｍ以下であるか否かを判定する。Ｍｃ≦Ｔｈｍであると判定した場合、すなわち、空き容量が閾値Ｔｈｍで示される容量以下であると判定した場合、処理はステップＳ３３に進み、並列的に符号化する画素ブロックの数を定義する変数Ｐｎに“１”に設定する。また、参照する境界ビット位置の候補数を定義する変数Ｑｎに“４”を設定する。この結果、高い圧縮率の符号化データが生成されることになる。
【０１３２】
一方、ステップＳ３２にて、Ｍｃ＞Ｔｈｍ、すなわち、記憶媒体に十分な空き容量があると判定した場合、処理はステップＳ３４に進む。このステップＳ３４では、第１の実施形態のオートモードに従って変数Ｐｎ、変数Ｑｎを決定する。すなわち、画像サイズがＬの場合には、Ｐｎを“４”、変数Ｑｎを“１”に決定する。また、画像サイズがＭの場合には、Ｐｎを“２”、Ｑｎを“２”に決定する。そして、画像サイズがＳの場合には、Ｐｎを“１”、Ｑｎを“４”に決定する。
【０１３３】
この後、ステップＳ３５に進み、エントロピー符号化制御部１０８は、決定したＰｎ，Ｑｎを係数データ取得部１０６、境界ビット位置決定部１０９にそれぞれ出力する。
【０１３４】
係数データ取得部１０６、境界ビット位置決定部１０９の処理は、第１の実施形態と同じである。
【０１３５】
以上説明したように本第３の実施形態によれば、記憶媒体の空き容量が少なくなった場合、圧縮率を上げるためのパラメータに切り換わるので、保存可能な写真枚数を多くすることが可能になる。
【０１３６】
［その他の実施形態］
第４の実施形態を説明する。本第４の実施形態における装置構成も、第１の実施形態と同じであるものとする。但し、バッテリー駆動モードとして省電力モードと通常モード（非省電力モード）のいずれかを設定できるようにする点で異なる。この設定は、不図示の操作パネルから行なうものとする。
【０１３７】
さて、省電力モード、通常モードのいずれでもエントロピー符号化処理部１１０の稼働率が１００％であるとする。この場合、電力消費量を少なくする為には符号化に要する時間を短くすることである。
【０１３８】
そこで、省電力モードが設定されている場合には、Ｐｎ＝４、Ｑｎ＝１とし、通常モードの場合には第１の実施形態と同様の処理を行なえば良いであろう。
【０１３９】
以上、本発明にかかる各実施形態を説明したが、先に説明した第１の実施形態の変形例と同様、第２乃至第４の実施形態にかかる処理を、コンピュータプログラムでもって実現できることは明らかである。また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されており、それをコンピュータが有する読取り装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピーもしはインストールすることで実行可能になる。従って、かかるコンピュータ可読記憶媒体も本発明の範疇にあることは明らかである。
【図面の簡単な説明】
【０１４０】
【図１】第１の実施形態に係る画像符号化装置のブロック構成図である。
【図２】第１の実施形態におけるエントロピ符号化部のブロック構成図である。
【図３】第１の実施形態に係る境界ビット位置決定部のブロック構成図である。
【図４】第１の実施形態における頻度テーブルバッファに格納された頻度をグラフにして示す図である。
【図５】第１の実施形態における累積頻度テーブルのデータの例を示す図である。
【図６】上位／下位ビット分離部による係数値の分離の概略を示す図である。
【図７】下位ビット部のビット符号化データの例を示す図である。
【図８】符号化された画素ブロックのデータ構造を示す図である。
【図９】第１の実施形態における符号化画像データファイルのデータ構造を示す図である。
【図１０】第１の実施形態における符号化画像データファイルのデータ構造の他の例を示す図である。
【図１１】第１の実施形態の変形例の処理手順を示すフローチャートである。
【図１２】第２の実施形態におけるエントロピー符号化制御部の処理手順を示すフローチャートである。
【図１３】第３の実施形態におけるエントロピー符号化制御部の処理手順を示すフローチャートである。
【図１４】コンピュータのブロック構成図である。
【図１５】実施形態で採用するジタルカメラにおけるモード設定の画面の一例を示す図である。
【図１】
2009260747.tif 000003
【図２】
2009260747.tif 000004
【図３】
2009260747.tif 000005
【図４】
2009260747.tif 000006
【図５】
2009260747.tif 000007
【図６】
2009260747.tif 000008
【図７】
2009260747.tif 000009
【図８】
2009260747.tif 000010
【図９】
2009260747.tif 000011
【図１０】
2009260747.tif 000012
【図１１】
2009260747.tif 000013
【図１２】
2009260747.tif 000014
【図１３】
2009260747.tif 000015
【図１４】
2009260747.tif 000016
【図１５】
2009260747.tif 000017