(57)【要約】【課題】  画素ブロックを単位に周波数変換、量子化を行なう画像符号化処理において、少ないメモリ量で、簡易かつ高画質に、目標符号量以下となるように符号化する技術を提供する。【解決手段】画像データはブロック分割部１０２、系列変換１０３を経て低周波帯域データと高周波帯域データとに分解される。係数量子化部１０５、係数符号化１０６、符号量制御部１０８の動作により高周波帯域データを所定値以下に符号化する。そして、高周波帯域データの符号化処理が完了すると、その高周波帯域データの発生符号量に応じて低周波帯域データの量子化パラメータを設定する。そして、係数量子化部１１０、係数符号化部１１１、符号量検出部１１２、量子化パラメータ更新部１１３の動作により、低周波帯域目標符号量以下の符号となるよう低周波帯域データを符号化する。【選択図】  図１
2010041624.tif 000002
【特許請求の範囲】
【請求項１】
画像データを符号化し、目標符号量Ｌ以内の符号化データを生成する画像符号化装置であって、
符号化対象画像データから、複数画素で構成される画素ブロックの画像データを入力する入力手段と、
入力した画素ブロックの画像データを周波数変換して、高周波帯域データと低周波帯域データを生成する周波数変換手段と、
該周波数変換手段で得られた前記低周波帯域データをバッファメモリに格納する格納手段と、
前記周波数変換手段で得られた高周波帯域データを量子化、符号化を行ない、得られた符号化データを符号列格納用メモリに格納する第１の符号化手段と、
該第１の符号化手段によって生成された高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを検出する検出手段と、
前記符号化対象画像データの全画素ブロックの高周波帯域データの前記第１の符号化手段による符号化処理を終えた場合、前記目標符号量Ｌから前記高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを減じた容量を低周波帯域目標符号量とし、当該低周波帯域目標符号量に基づいて前記低周波帯域データの符号化パラメータを決定する決定手段と、
該決定手段で決定された符号化パラメータに従って、前記バッファメモリに格納された低周波帯域データを符号化し、得られた符号化データを前記符号列格納用メモリに格納する第２の符号化手段と、
該第２の符号化手段による全画素ブロックの低周波帯域データの符号化処理を終えた場合、前記符号列格納用メモリに格納された低周波帯域データの符号化データ、及び、高周波帯域データの符号化データを、予め設定された形式のデータ構造にして出力する出力手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
前記周波数変換手段は、
着目画素ブロックの画像データを、複数のサブ画素ブロックの部分画像データに分割する分割手段と、
該分割手段で得られた各サブ画素ブロックの部分画像データを１つのＤＣ成分値と複数のＡＣ成分値に周波数変換する第１の系列変換手段と、
該第１の系列変換手段で得られた各サブ画素ブロックのＤＣ成分値を、再度、１つのＤＣ成分値と複数のＡＣ成分値に周波数変換する第２の系列変換手段と、
前記第１の系列変換手段で得られた各サブ画素ブロックのＡＣ成分値を前記高周波帯域データとして出力し、前記第２の系列変換手段で得られた変換結果を前記低周波帯域データとして出力する手段と
を備えることを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第１の符号化手段は、
着目画素ブロックの高周波帯域データを量子化する量子化手段と、
前記着目画素ブロックよりも前の画素ブロックを符号化する際に決定された境界ビット位置情報に従い、前記着目画素ブロックの高周波帯域データを構成する各係数値を前記境界ビット位置情報で示される境界ビット位置より上位の上位ビット部と、前記境界ビット位置以下の下位ビット部とに分離する分離手段と、
前記上位ビット部をランレングス符号化し、上位ビット符号化データとして生成する上位ビット部符号化手段と、
前記下位ビット部を各ビットの位置に応じたビットプレーンのデータに変換し、下位ビット符号化データとして生成する下位ビット部符号化手段と、
前記上位ビット部の分布に基づき、前記境界ビット位置を更新する更新手段と、
前記上位ビット符号化データと前記下位ビット符号化データを前記第１の符号化手段の符号化データとして出力する手段と
を備えることを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
前記第１の符号化手段による前記符号化対象画像データの全画素ブロックの高周波帯域データの符号化が完了する以前に、前記検出手段が検出した前記高周波帯域データの総符号量ＣＬ＿Ｈが予め設定された許容符号量に達した場合、
高周波帯域データの総符号量ＣＬ＿Ｈが予め設定された許容符号量よりも小さくなるまで、前記符号列格納用メモリに格納された高周波帯域データの符号化データのうち、前記下位ビット符号化データ、前記上位ビット符号化データの順に破棄させ、
且つ、前記第１の符号化手段に対して、前記破棄したビット位置以下の符号化データの出力を禁止させる手段を更に備える
ことを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
更に、前記第２の符号化手段による低周波帯域データの符号化データの総符号量ＣＬ＿Ｌを検出する手段と、
前記第２の符号化手段による前記符号化対象画像データの全画素ブロックの低周波帯域データの符号化が完了する以前に、検出された前記総符号量ＣＬ＿Ｌが前記低周波帯域目標符号量に達した場合、
前記符号列格納用メモリに格納された低周波帯域データの全符号化データを破棄させ、
前記第２の符号化手段の符号化圧縮率を更に高めるため、符号化パラメータを更新するとと共に、
前記第２の符号化手段に対して先頭の画素ブロックの低周波帯域データから再符号化を実行させる手段と
を備えるとする請求項１乃至４のいずれか１項に記載の画像符号化装置。
【請求項６】
更に、前記第２の符号化手段による低周波帯域データの符号化データの総符号量ＣＬ＿Ｌを検出する手段と、
符号量を調整する第１、第２の符号量制御手段のいずれか一方を選択する選択手段とを備え、
前記第１の符号量制御手段は、
前記第２の符号化手段による前記符号化対象画像データの全画素ブロックの低周波帯域データの符号化が完了する以前に、前記総符号量ＣＬ＿Ｌが前記低周波帯域目標符号量に達した場合、
前記符号列格納用メモリに格納された低周波帯域データの全符号化データを破棄させる手段と、
前記第２の符号化手段の符号化圧縮率を更に高めるため、符号化パラメータを更新する手段と、
前記第２の符号化手段に対して先頭の画素ブロックの低周波帯域データから再符号化を実行させる手段とを含み、
前記第２の符号量制御手段は、
前記第２の符号化手段による前記符号化対象画像データの全画素ブロックの低周波帯域データの符号化が完了する以前に、前記総符号量ＣＬ＿Ｌが前記低周波帯域目標符号量に達した場合、画素ブロックの低周波帯域データの平均符号量から、符号化対象画像データの全画素ブロックの低周波帯域データの推定符号量ＰＣＬ＿Ｌを算出する算出手段と、
該算出手段で算出された推定符号量ＰＣＬ＿Ｌ、前記高周波帯域データの総符号量ＣＬ＿Ｈ、及び前記目標符号量との関係が、
ＰＣＬ＿Ｌ＋ＣＬ＿Ｈ＜前記目標符号量
を満たすまで、予め設定された優先順位に従って、前記符号列格納用メモリに格納された前記高周波帯域データの符号化データ中の部分符号化データを削除する削除手段とを含む
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像符号化装置。
【請求項７】
前記選択手段は、符号化対象画像データのサイズ、又は、符号化対象画像データが単数か複数かに応じて、前記第１、第２の符号量制御手段のいずれか一方を選択することを特徴とする請求項６に記載の画像符号化装置。
【請求項８】
画像データを符号化し、目標符号量Ｌ以内の符号化データを生成する画像符号化装置の制御方法であって、
符号化対象画像データから、複数画素で構成される画素ブロックの画像データを入力する入力工程と、
入力した画素ブロックの画像データを周波数変換して、高周波帯域データと低周波帯域データを生成する周波数変換工程と、
該周波数変換工程で得られた前記低周波帯域データをバッファメモリに格納する格納工程と、
前記周波数変換工程で得られた高周波帯域データを量子化、符号化を行ない、得られた符号化データを符号列格納用メモリに格納する第１の符号化工程と、
該第１の符号化工程によって生成された高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを検出する検出工程と、
前記符号化対象画像データの全画素ブロックの高周波帯域データの前記第１の符号化工程による符号化処理を終えた場合、前記目標符号量Ｌから前記高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを減じた容量を低周波帯域目標符号量とし、当該低周波帯域目標符号量に基づいて前記低周波帯域データの符号化パラメータを決定する決定工程と、
該決定工程で決定された符号化パラメータに従って、前記バッファメモリに格納された低周波帯域データを符号化し、得られた符号化データを前記符号列格納用メモリに格納する第２の符号化工程と、
該第２の符号化工程による全画素ブロックの低周波帯域データの符号化処理を終えた場合、前記符号列格納用メモリに格納された低周波帯域データの符号化データ、及び、高周波帯域データの符号化データを、予め設定された形式のデータ構造にして出力する出力工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項９】
コンピュータに読込ませ実行させることで、前記コンピュータを請求項１乃至７のいずれか１項に記載の画像符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項１０】
請求項９に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像符号化技術、特に、画像データを周波数空間のデータへと変換し、得られた変換係数を符号化することで符号化画像データを生成する技術に関するものである。
【背景技術】
【０００２】
従来、画像の符号化手法として、画像データを周波数空間のデータへと変換して符号化を行う変換符号化が用いられる。静止画符号化の国際標準方式として勧告されるＪＰＥＧは周波数空間への変換手法としてＤＣＴ（Discrete Cosine Transform）を利用した変換符号化の代表例である。以下、ＪＰＥＧの符号化処理過程を簡単に述べる。
【０００３】
符号化対象の画像は、矩形領域のブロックに分割され、各ブロック内の各画素値にＤＣＴ変換が適用される。変換によって得られた係数を、所望の画質レベル、符号量に応じて量子化し、量子化後の変換係数をエントロピ符号化する。ＪＰＥＧ  Ｂａｓｅｌｉｎｅでは、係数のエントロピ符号化手法としてハフマン符号化を採用している。１ブロックは８×８画素（＝６４画素）であるので、ＤＣＴ変換によって１個のＤＣ成分値と、６３個のＡＣ成分値が生成される。ＤＣ成分値は直前のブロックとの差分値として符号化され、ＡＣ成分値はゼロの連続数（ゼロラン）と非ゼロの係数値の組み合わせによりハフマン符号化される。
【０００４】
ＪＰＥＧ Ｂａｓｅｌｉｎｅに見られるように、ゼロの連続数を符号化する符号化手法において、符号化が効率的に行われるためには、量子化後の係数値が０となる個数が多いほど良い。このためには、量子化する際に用いる量子化ステップ値を大きくすることである。しかしながら、量子化ステップ値を大きな値にすればするほど、復号して得られる画像とオリジナルの画像との差が大きくなる。すなわち、復号して得られる画像の画質が劣化したものとなる。
【０００５】
従って、画質を優先するのであれば量子化ステップ値は小さい程よいが、この場合、逆に高い符号化効率が望めない。
【０００６】
さて、量子化ステップ値を小さい値にしながらも、符号化を効率的に機能させるため、各係数値を上位ビット部と下位ビット部に分離して、上位ビット部に対してのみランレングス符号化を適用するといった手法が提案されている。
【０００７】
このような従来技術を用いた画像処理装置、画像処理方法の一例が特許文献１に開示されている。
【０００８】
一方、画像符号化を行う場合において、符号量が所定値以下となるように符号量制御することが必要となる場合がある。例えば、デジタルカメラなどでは、ある限られた容量の記憶媒体に一定の枚数の画像データを格納することが求められる。また、画像符号化装置の内部のメモリ量を削減する目的においても符号量制御が必要となる。
【０００９】
符号量制御の手段としては、種々の方法が提案されているが、最も単純な方法は目標符号量になるまで、量子化ステップの調整と、符号化処理を繰り返すものであろう。
【００１０】
また、簡易な手法として、例えば、係数の下位ビットを切り捨てる方法など、生成した符号化データの一部分を破棄することで符号量制御を行う方式が知られている。
【特許文献１】特開２０００−１３７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述の量子化ステップを調整して目標符号量に制御する符号量制御手段では、細かな量子化ステップの設定が可能となるため、定められた符号量内で良好な画質を得ることができるが、再符号化に演算コスト、処理時間を要す。
【００１２】
さらに、再符号化のためには、係数値を復元しなければならず、画像、または係数値を保持する場合には、多くのメモリを必要とする。一旦、符号化したデータから係数を復号して再符号化する場合には、復号のための演算コストが掛かり、さらに、一度量子化した値を別の量子化ステップで量子化するため、細やかな制御ができなくなる。
【００１３】
また、上述の符号の一部を破棄する手法は、下位ビットを切り捨てることは選択可能な量子化ステップを２のべき乗の倍数に限定することに等価の処理である。従って、やはり細やかな量子化ステップ設定ができないために、再生画質に問題を起こす可能性がある。
【００１４】
本願発明は、上述の問題点に鑑みてなされたものであり、画素ブロックを単位に周波数変換、量子化を行なう画像符号化処理において、少ないメモリ量と少ない処理時間で、かつ、良好な画質の画像を再生可能な符号化技術を提供しようとするものである。
【課題を解決するための手段】
【００１５】
かかる課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを符号化し、目標符号量Ｌ以内の符号化データを生成する画像符号化装置であって、
符号化対象画像データから、複数画素で構成される画素ブロックの画像データを入力する入力手段と、
入力した画素ブロックの画像データを周波数変換して、高周波帯域データと低周波帯域データを生成する周波数変換手段と、
該周波数変換手段で得られた前記低周波帯域データをバッファメモリに格納する格納手段と、
前記周波数変換手段で得られた高周波帯域データを量子化、符号化を行ない、得られた符号化データを符号列格納用メモリに格納する第１の符号化手段と、
該第１の符号化手段によって生成された高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを検出する検出手段と、
前記符号化対象画像データの全画素ブロックの高周波帯域データの前記第１の符号化手段による符号化処理を終えた場合、前記目標符号量Ｌから前記高周波帯域データの符号化データの総符号量ＣＬ＿Ｈを減じた容量を低周波帯域目標符号量とし、当該低周波帯域目標符号量に基づいて前記低周波帯域データの符号化パラメータを決定する決定手段と、
該決定手段で決定された符号化パラメータに従って、前記バッファメモリに格納された低周波帯域データを符号化し、得られた符号化データを前記符号列格納用メモリに格納する第２の符号化手段と、
該第２の符号化手段による全画素ブロックの低周波帯域データの符号化処理を終えた場合、前記符号列格納用メモリに格納された低周波帯域データの符号化データ、及び、高周波帯域データの符号化データを、予め設定された形式のデータ構造にして出力する出力手段とを備える。
【発明の効果】
【００１６】
本発明によれば、視覚的に良好で、かつ、メモリコスト、演算コストの少なくし、目標符号量以下の符号化データを生成することが可能になる。
【発明を実施するための最良の形態】
【００１７】
以下添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１８】
［第１の実施形態］
図１は、実施形態における画像符号化装置のブロック構成図である。
【００１９】
本実施形態の画像符号化装置は、符号化対象となる画像データを外部から入力し、画素ブロックを単位として符号化処理を行い、所定の目標符号量Ｌ以内となる符号列を生成するものである。本実施形態では目標符号量Ｌにヘッダ等の付加情報を含めないものとするが、ヘッダ等を含めて符号量を調整するようにしても構わない。なお、画像データの入力源は、イメージスキャナとするが、画像データをファイルとして格納している記憶媒体等であっても良く、その種類は問わない。
【００２０】
なお、符号化の対象となる画像データは輝度成分のみのモノクロ多値画像データとし、輝度成分は８ビット（０乃至２５５の２５６階調）として説明する。但し、これは実施形態の説明を簡単なものとするためであって、１画素が複数成分（例えば、ＲＧＢやＣＭＹＫ）でも構わず、その色空間の種類は問わないし、１成分のビット数も８ビットに限らず、８ビットを超えるビット数でも構わない。また、更に、符号化対象の画像は水平方向Ｗ画素、垂直方向Ｈ画素により構成され、説明簡易化のため、Ｗ、Ｈは１６の整数倍であるとして説明する。
【００２１】
以下、図１における画像符号化装置における符号化処理を説明する。図中、１１６は図１の画像符号化装置全体の動作を制御する制御部である。各処理部は制御部１１６の制御によって協調して動作する。以下、各処理部の処理内容を説明する。
【００２２】
まず、画像入力部１０１は、符号化対象となる画像データが順に入力する。画素データの入力順序はラスタースキャン順とする。１画素の値は８ビットであり、０乃至２５５の範囲の非負の整数値とする。画像の左上隅を座標（０，０）とし、水平右方向の画素位置ｘ、垂直下方向の画素位置ｙにある画素の値をＰ（ｘ，ｙ）と表すこととする。例えば、位置（ｘ、ｙ）＝（３，４）にある画素が、１２８という輝度値を持つ場合、Ｐ（３，４）＝１２８と表現する。また、以下の説明では、位置（ｘ、ｙ）の“画素”を表現する場合にも“Ｐ（ｘ，ｙ）”という表現を用いることとする。
【００２３】
ブロック分割部１０２は画像入力部１０１から供給される画素データを適宜不図示の内部バッファに格納する。そして、ブロック分割部１０２は、複数画素で構成される矩形のブロック（実施形態では１６×１６画素とする）の画像データを単位として順番に出力する。以下、この１６×１６画素で構成される矩形ブロックを画素ブロックという。ブロック分割部１０２はこのように画素ブロックを単位に出力する。ここで、実施形態では、画像の左上端の画素ブロックを識別番号を“０”とし、ラスタースキャンの順序で、昇順に識別番号を付与することで、１つの画素ブロックを特定する。このため、第ｉ番目の画素ブロックをＭＢ(i)と表わす。また、画素ブロックの総数をＮとすると、Ｎ＝Ｗ／１６×Ｈ／１６である。つまり、変数ｉが取り得る範囲は［０、１、２、…、Ｗ／１６×Ｈ／１６−１］である。
【００２４】
系列変換部１０３では、ブロック分割部１０２から出力される画素ブロックのデータ（以下、単に画素ブロックデータという）を不図示の内部バッファに格納して、これを周波数変換を基本とする系列変換処理を行なう。ここでは、系列変換処理として４×４画素を単位とするアダマール変換を用いるものとして説明するが、画素ブロックデータを周波数成分に分離する変換であれば良く、別の実施形態では離散コサイン変換を用いても良い。以下、系列変換（ここではアダマール変換）の対象となる４×４画素で構成される部分画像データの矩形ブロックをサブ画素ブロックと呼ぶ。
【００２５】
ブロック分割部１０２により切り出される１６×１６画素の大きさの画素ブロックＭＢ（ｉ）と、サブ画素ブロックとの関係を図２に示す。同図に示すように、１つの画素ブロックには、１６（＝４×４）個のサブ画素ブロックが含まれる。
【００２６】
系列変換部１０３は、系列変換処理を２つのステージに分けて処理する。以下、各ステージについて説明する。
【００２７】
［第１ステージ（第１の系列変換）］
系列変換部１０３は、１６個のサブ画素ブロックそれぞれについて２次元のアダマール変換を実行し、各サブ画素ブロックにつき１つのＤＣ係数と１５個のＡＣ係数を生成する。図３は、画素ブロックＭＢ（ｉ）内の各サブ画素ブロックに対して、４×４回のアダマール変換を適用して得られる２５６個の係数の概要を示している。図中、網かけで示した係数は各サブ画素ブロックのＤＣ係数値を表し、白領域がＡＣ係数値を表す。図示の通り、１つの画素ブロックには１６個のサブ画素ブロックが含まれるので、１つの画素ブロックからは１６（＝４×４）個のＤＣ係数値と、２４０（＝１６×１６−１６）個のＡＣ係数値が得られる。この変換結果で得られる２４０個のＡＣ係数値が係数量子化部１０５に供給され、１６個のＤＣ係数値が次に説明する第２ステージのアダマール変換に利用される。
【００２８】
［第２ステージ（第２の系列変換）］
系列変換部１０３は各サブ画素ブロックのＤＣ係数を集めて、図４の参照符号４０のように新たな４×４個のＤＣ係数で構成されるＤＣブロックを作る。そして、系列変換部１０３は、このＤＣブロック４０について再度アダマール変換を行ない、同図の参照符号４１に示す１個のＤＣ係数（図中、黒色の係数）と１５個のＡＣ係数で構成される変換係数データ４１を得る。この第２ステージで得られるＤＣ係数及びＡＣ係数と、第１ステージで得られるＤＣ係数及びＡＣ係数とを区別するため、第２ステージで得られるＤＣ係数、ＡＣ係数を、ＤＣＤＣ係数、ＤＣＡＣ係数と言う。
【００２９】
さて、本実施形態における符号化処理では、系列変換部１０３で生成した係数を大きく２つに分けて処理する。ひとつは、第２ステージの処理にて得られた１個のＤＣＤＣ係数と１５個のＤＣＡＣ係数で構成される変換係数データ４１であり、以降、これらのデータを総称して低周波帯域データと呼ぶことにする。もうひとつは、第１ステージの処理にて得られたＤＣ係数を除く２４０個のＡＣ係数で構成されるデータであり、以降、これらを総称して高周波帯域データと呼ぶ。
【００３０】
ここで、系列変換部１０３は、低周波帯域データをバッファメモリとして機能する低周波帯域用メモリ１０４に格納し、高周波帯域データを係数量子化部１０５に出力する。
【００３１】
また、実施形態では、符号化対象の画像データについて高周波帯域データの符号化処理を完了した後に、低周波帯域データの符号化処理を開始する。そのため、低周波帯域データを低周波帯域用メモリ１０４に一旦格納する。
【００３２】
以下、高周波帯域データの符号化処理について説明し、その後で低周波帯域データの符号化処理を説明する。
【００３３】
［高周波帯域データの符号化］
係数量子化部１０５は系列変換部１０３により得られた高周波帯域データ（第１ステージにおける２４０個のＡＣ係数）を、予め周波数帯域毎に設定される量子化ステップを用いて量子化処理を実行する。
【００３４】
１つのサブ画素ブロックの高周波帯域データは、図５に示すように、帯域の異なる１５個のＡＣ係数から構成されている。この１５種の帯域のそれぞれに量子化ステップ値を設定しておく。これらの量子化ステップ値はいくつかのサンプル画像を用いて、予め設定した目標符号量Ｌに近似し、且つ、復号画像が許容範囲の画質となるような値を用いればよい。
【００３５】
ただし、この量子化ステップ値の設定は後述する符号量削減処理の実行頻度に関係する。例えば、目標符号量Ｌよりも少なくなるように量子化ステップを調整しておけば、符号量削減処理が行われる可能性は低くなるが、高周波帯域を必要以上に除去してしまう可能性がある（スピード重視）。一方、目標符号量Ｌよりも多くなるように調整した場合には、符号量削減処理の実施される可能性は高くなるが、高周波帯域データをできるだけ多く残しておくことになる（画質重視）。これらは利用形態に応じて設定すれば良い。
【００３６】
さて、係数量子化部１０５は、高周波帯域データの量子化結果である各係数値を係数符号化部１０６へと出力する。以降、特に量子化の有無を区別する必要がない場合、量子化された係数値を単に、係数値と記す。また、実施形態では、１個の係数値は、９ビット（うち１ビットは正負の符号）で表わされるものとして説明するが、精度を向上させるため１０ビット以上であっても構わない。
【００３７】
係数符号化部１０６は係数量子化部１０５からの高周波帯域データの２４０個の量子化後の係数値を符号化する。具体的には、係数符号化部１０６は１つの係数値（９ビット）を、境界ビットＢで示されるビット位置より上位の上位ビット部と、境界ビットＢ以下の下位ビット部に分離し、上位ビット部に対してゼロの連続数の符号化、即ち、ランレングス符号化を適用する。生成される符号列は、符号列格納用メモリ１０７に符号列を順次格納される。上位ビット部と下位ビット部に分離するための境界ビット位置情報で示される境界ビット位置Ｂは、画像の符号化開始時点で初期値として設定しておく。そして、係数符号化部１０６は、１つの画素ブロックを符号化する毎にその境界ビット位置Ｂのビット位置を更新する。
【００３８】
なお、復号装置でも、復号開始時には符号化装置と同じ初期の境界ビット位置Ｂを設定し、復号する境界ビット位置Ｂの更新アルゴリズムを符号化装置のそれと同じにする。この結果、境界ビット位置Ｂにかかる情報を、最終的に得られる符号化データファイルに格納することが不要にできる。
【００３９】
以下、係数符号化部１０６の処理と境界ビット位置Ｂの更新アルゴリズムについて説明する。
【００４０】
図６は係数符号化部１０６のブロック構成図である。係数符号化部１０６は、係数バッファ６０１、上位／下位ビット分離部６０２、上位ビット符号化部６０３、下位ビット符号化部６０４から構成される。以下、同図を用いて係数符号化部１０６の処理について説明する。
【００４１】
係数符号化部１０６に入力される高周波帯域データの２４０個の量子化係数値は、一旦、係数バッファ６０１に格納される。
【００４２】
上位／下位ビット分離部６０２は、係数バッファ６０１から所定の順番で係数値を読み出し、その符号絶対値表現における境界ビット位置Ｂより上位の上位ビット部と、境界ビット位置Ｂ以下の下位ビット部とに分離する。但し、正負の符号ビットは処理対象外とする。係数値の読み出し順は、どのような順序でも構わない。ここでは、画素ブロックＭＢ（ｉ）を構成する１６個のサブ画素ブロックをラスタースキャン順に読出し、１つのサブ画素ブロック内の量子化係数値（ＡＣ係数値）については、ジグザグスキャン順で読むこととする。但し、この順序は、復号装置と共通になれば良いので、必ずしもこれに限らない。
【００４３】
詳細については後述するが、後段の上位ビット符号化部６０３において、係数の上位ビット部をゼロの連続数と非ゼロの係数値の組み合わせにより符号化する。この際にゼロの連続数が長くなるなスキャン順が都合が良い。例えば、いくつかのスキャンパターンから適切な方法を選択するようにしても良い。また、過去に符号化したブロックにおける係数の分布を参照して係数のパワーの大きいものから小さいものへと並ぶように動的にスキャン順序を変えるなどしても構わない。
【００４４】
着目するサブ画素ブロック内のｎ番目（１≦ｎ≦１５）の係数値をＣｎと表すとき、上位／下位ビット分離部６０２は、上位ビット部Ｕｎ（＝Ｃｎ＞＞Ｂ）と、下位ビット部Ｌｎ（＝｜Ｃｎ｜＆（（１＜＜Ｂ）−１））を求める。ここで「Ｙ＞＞Ｘ」は、値ＹをＸビットだけ下位方向にシフトすることを示し、Ｙ＜＜Ｘは値ＹをＸビットだけ上位方向にシフトすることを示している。また、｜Ｙ｜は値Ｙの絶対値を、Ｘ＆Ｙは値Ｘと値Ｙとのビット単位の論理積（ＡＮＤ）を示す。
【００４５】
上位／下位ビット分離部６０２は、着目係数値Ｃｎの境界ビット位置より上位の上位ビット部Ｕｎを上位ビット符号化部６０３に出力し、境界ビット位置以下の下位ビット部Ｌｎを下位ビット符号化部６０４へと出力する。
【００４６】
なお、正負符号ビットを除く上位ビット部Ｕｎの値が“０”である係数Ｃｎについては、その係数Ｃｎの正負を表す符号も下位ビット符号化部６０４へと引き渡されるものとする。
【００４７】
図７に、係数値Ｃｎの一例として“−４１、−７、２８、−１、…”が入力され、境界ビット位置Ｂ＝４で上位ビット部Ｕｎと下位ビット部Ｌｎに分離した例を示す。
【００４８】
図示の場合、上位／下位ビット分離部６０２は、ひとつのサブ画素ブブロックについて、正負符号の１ビットを含む１５個の上位ビット部Ｕｎを上位ビット符号化部６０３に出力する。
【００４９】
上位ビット符号化部６０３は、入力される上位ビット部Ｕｎの正負符号ビットを除外した４ビットで表わされる値が“０”の場合、ここではその正負符号ビットの符号化は行わない。上位ビット部Ｕｎにおいて、正負符号ビットを除外した４ビットで表わされる値が“０”となるのは、図７の場合係数値Ｃｎ＝“−７”、“−１”である。また、上位ビット部Ｕｎの正負符号ビットを除く、４ビットで表わされる値が非“０”の場合、その正負符号ビットを含む上位ビット部Ｕｎがそのままランレングス符号化対象となる。
【００５０】
従って、図７の場合、上位ビット符号化部６０３は、１０進数表記の多値データ“−２”、“０”、“１”、“０”…の順に、ランレングス符号化を行うことになる。この結果、上位ビット部が“０”となる確率が高くなり、符号化効率が高めることができる。
【００５１】
上記は、１つのサブ画素ブロックのＡＣ係数値の上位ビットの符号化処理である。着目画素ブロックには、４×４個のサブ画素ブロックが含まれるので、上記処理を４×４回行うことになる。
【００５２】
実施形態における上位ビット符号化部６０３の符号化はＪＰＥＧのＢａｓｅｌｉｎｅでのＡＣ係数の符号化と同じ方法を用いる。すなわち、着目するサブ画素ブロックのＡＣ係数の上位ビット部Ｕｎ（１５個）については、ゼロの連続数と非ゼロの係数を組み合わせてハフマン符号化を行う。サブ画素ブロックの最後がゼロの連続で終わる場合にはＥＯＢ（Ｅｎｄ Ｏｆ Ｂｌｏｃｋ）を表す特殊符号を用いる点についてもＪＰＥＧ Ｂａｓｅｌｉｎｅと同様である。ＪＰＥＧ ＢａｓｅｌｉｎｅでのＡＣ係数の符号化方法についての詳細は、以下の国際標準勧告書等に記載されているので、ここでは説明を割愛する。
“ITU-T Recommendation T.81 | ISO/IEC 10918-1:1994, Information technology - Digital compression and coding of continuous-tone still images: Requirements and guidelines.”
【００５３】
なお、上位ビット符号化部６０３では、上位ビット部の符号化を行いながら、上位ビット部の値が０である係数値の数ＮＺをカウントする。このカウントは画素ブロック（サブ画素ブロックではない）を単位として行い、ひとつの画素ブロックの符号化開始時点でＮＺ＝０とし、Ｕｎとして０が入力される毎にカウンタをインクリメントしていく。ひとつの画素ブロックの符号化が終了した時点で、ＮＺの値をしらべ、所定の閾値Ｔｈ以下であれば境界ビット位置Ｂの値を１つインクリメントする。つまり、境界ビット位置Ｂのビット位置を１つ上位ビット方向に更新する。反対に、ＮＺ＞Ｔｈであれば境界ビット位置の値を１つデクリメントする。但し、境界ビット位置Ｂの値は、０乃至８の間である。例えば、更新後の値が−１になった場合には、０に戻す。このようにして更新された境界ビット位置Ｂを用いて、次の画素ブロックのＡＣ成分値の境界ビット位置位置が決定されていく。
【００５４】
一方、上位／下位ビット分離部６０２は、着目ブロックの２４０個の下位ビット部Ｌｎ（１≦ｎ≦２４０）を下位ビット符号化部１１２に出力する。ただし、先に説明したように、上位／下位ビット分離部１１０は、上位ビット部Ｕｎの正負符号ビットを除く４ビットの値が“０”である係数Ｃｎについては、その正負符号ビットを下位ビット部Ｌｎに付加して下位ビット符号化部１１２に出力する。
【００５５】
正負符号ビットを除く上位ビット部Ｕｎの値が“０”となるのは、図７の例では、係数値“−７”と、“−１”である。そこで、正負符号ビットの付加位置は、下位ビット部Ｌｎの上位から下位に向かって最初に“１”が出現する位置とする。図７の場合には、斜線で示される位置が正負ビットを挿入する位置になる。
【００５６】
下位ビット符号化部６０４は上位／下位ビット分離部６０２から出力された下位ビット部Ｌｎの符号化を行う。上位ビット部Ｕｎに対し、下位ビット部Ｌｎは一般に圧縮しにくいデータであるので、下位ビット符号化部６０４では下位ビット部を非圧縮で出力する。非圧縮であるので、基本的には入力データがそのまま符号化データとなるが、画質への影響度に応じてビットデータが配置されるようにする。具体的には、必要に応じて下位ビットプレーンを削除することによる符号量調整がし易いようにするため、ビットプレーン順に出力する。
【００５７】
図７の場合、下位ビット符号化部６０４は、入力した下位ビット部Ｌｎ（１≦ｎ≦２４０）を不図示の内部バッファに格納し、まず、各下位ビット部Ｌｎの最上位のビット桁（Ｂ番目の桁）で構成されるビットプレーンを出力する。この処理を最下位のビット桁（１番目の桁）まで繰り返す。
【００５８】
なお、詳細は後述するが、符号量制御部１０８によって既に符号量制御処理が行われ、符号列格納用メモリ１０７に格納するビットプレーンの下限ビット位置が決定されている場合、制御部１１６は、係数符号化部１０６に対して、下限ビット位置より低い桁のプレーンを出力を禁止させる。つまり、下限ビット位置が決定されている場合には、その下限ビット位置より下位のビットプレーンは符号列格納用メモリ１０７に格納されない。例えば、符号列格納用メモリ１０７の内部で保持している下限ビット位置がＢｍｉｎである場合、Ｂｍｉｎ未満の桁については、その符号長Ｃｌ（ｉ）＝０（但し、ｉ＜Ｂｍｉｎ）とし、Ｂｍｉｎ未満のビットプレーンは符号列格納用メモリ１０７に格納しない。
【００５９】
図７に示した係数値列“−４１、−７、２８、−１、…”の場合（境界ビット位置Ｂ＝４）における、下位ビット符号化部６０４が出力するデータの例を、図８に示す。
【００６０】
下位ビット部Ｌｎの最初に出力されるプレーン（同一ビット位置のビット情報）はＢ桁のビットプレーン“１０１０…”となる。この中の“１”に対応するのは、係数値“−４１”、“２８”である。係数値“−４１”、“２８”の符号ビットを除く上位ビット部Ｕｎが表す値は非０であるので、正負符号ビットは挿入されない。
【００６１】
次のＢ−１桁のビットプレーンに着目すると、係数値“−７”を表す最初の“１”のビットが出現する（図７参照）。また、係数値“−７”の正負符号ビットを除く上位ビット部Ｕｎの値は“０”となる。それ故、図示の如く、係数値“−７”を表す最初の“１”に後続する位置に、正負の符号ビットを挿入する。以下、Ｂ−２桁のビットプレーン、Ｂ−３桁のビットプレーンを出力していく。Ｂ−３桁のビットプレーンでは、係数値“−１”を表す最初の“１”が出現するので、それに後続して正負符号ビットが挿入される。
【００６２】
以上の処理により、係数符号化部１０６からは上位ビット部に対応する符号列と下位ビット部に対応する符号列の２つが生成され、符号列格納用メモリ１０７へと格納される。以下、符号列格納用メモリ１０７をメモリ１０７と略記する。メモリ１０７は内部に少なくとも目標符号量Ｌのメモリ容量を有する。このメモリ１０７には２つの領域があり、１つは高周波帯域の符号化処理においては目標符号量Ｌのα倍（０＜α＜１．０）の容量（高周波帯域の許容符号量）を割り当てられている。そして、残りの領域（Ｌ×(１−α)の領域）には、後述する低周波帯域の符号化処理で生成された符号化データを格納するための領域に割り当てられている。
【００６３】
図９（ａ）は、メモリ１０７のうち、高周波帯域用に割り当てられたＬのα倍（α＜１．０）の領域について、画像の符号化開始時点での様子を示した図である。符号化開始時点では何も格納されておらず、その全容量が利用可能な状態である。乗数αは、目標符号量Ｌにおいて、高周波帯域データの符号量が占める割合の目安であり、かつ、高周波帯域データの格納に必要なメモリ容量を決定するものである。あらかじめ幾つかの画像サンプルを用いて、目標符号量Ｌで視覚的に良好な復号画質となるように量子化ステップを調整してみて、高周波帯域の符号量の占める割合の平均を求めるなどして、乗数αを設定すれば良い。例えば、このようにして求めた高周波帯域の符号量比が６割であるならば、αを０．６とし、符号列格納用メモリ１０７としてＬ×０．６の容量を高周波帯域用の符号化データ格納用領域として確保する。
【００６４】
係数符号化部１０６から出力される２つの符号列（上位ビット部と下位ビット部の符号化データ）はメモリ１０７の先頭からと末尾からとに分けて格納される。先に説明したとおり、下位ビット部は非圧縮で出力されるので、上位／下位ビット分離を行った段階で符号量が明確になっているため、符号列の格納を開始する番地を算出することができ、メモリの末尾から格納することも容易であることが理解できよう。例えば、ｉ番目の画素ブロックＭＢ（ｉ）の下位ビット部に対応する符号列の格納を開始する番地をＡＤＲ（ｉ）と表すとき、画素ブロックＭＢ（ｉ）の下位ビット部の符号量がＣｌ（ｉ）と分かれば、
ＡＤＲ（ｉ）＝  Ｌ×α  −  Ｃｌ（ｉ）      ・・・ ｉ＝０の場合
ＡＤＲ（ｉ）＝  ＡＤＲ（i−１）−Ｃｌ（ｉ） ・・・ ｉ≠０の場合
により、格納開始の番地を定め、その番地からＭＢ（ｉ）の下位ビット符号化データを格納すればよい。但し、ここではメモリ１０７の先頭番地を０番地としている。
【００６５】
なお、符号量制御部１０８は、各画素ブロックの上位ビット部、下位ビット部それぞれに対する符号列の長さＣｕ（ｉ）、Ｃｌ（ｉ）を保持する。図１１は、ｎ番目の画素ブロックＭＢ（ｎ）まで符号化が終了した時点で、符号量制御部１０８が保持、及び、管理する各画素ブロックの符号長についての情報を図示したものである。ｎ＋１番目以降の部分（斜線部）についてはこの時点では、まだ値が入っていない。
【００６６】
さらに、符号量制御部１０８は、各画素ブロックの境界ビット位置と各ビットプレーンの符号長を含んだ下位ビット部符号長情報を保持する。以降、画素ブロックＭＢ（ｉ）について、境界ビット位置をＢ（ｉ）、ｂ桁（１≦ｂ≦Ｂ（ｉ））のプレーンの符号長をＣｐ（ｉ，ｂ）と記す。図１２はひとつのブロックについて格納される下位ビット部符号長情報を図示したものである。
【００６７】
図９（ｂ）は、ｎ番目の画素ブロックＭＢ（ｎ）まで符号化が終了した時点でのメモリ１０７の様子を示している。図に示すように、高周波帯域の係数の上位ビット部に対応する符号列は、メモリ１０７の先頭番地から、ブロックＭＢ（０）からＭＢ（ｎ）まで順番に格納される。一方、下位ビット部に対応する符号列についてはメモリ１０７の末尾の番地から先頭番地に向けて格納されていく。
【００６８】
符号量制御部１０８は、メモリ１０７の空きメモリ容量Ｗを監視し、ひとつの画素ブロックの最悪符号長ＢＬと比較して、Ｗ＜ＢＬであれば、メモリ１０７に格納される符号量の削減を行う。ｎ番目のブロックの符号化終了時点で、メモリ１０７に格納されている上位ビット部符号化データの容量をＣＬ＿Ｈu、下位ビット部符号化データの容量をＣＬ＿Ｈlとすると、
ＣＬ＿Ｈu  ＝  Σ  Ｃｕ（ｉ）  （但し、ｉ＝０、１、２…ｎ）
ＣＬ＿Ｈk  ＝  Σ  Ｃｌ（ｉ）  （但し、ｉ＝０、１、２…ｎ）
である。さらに符号量の総和をＣＬ＿Ｈとすると、空きのメモリ容量Ｗは
Ｗ＝Ｌ×α−ＣＬ＿Ｈ ＝ Ｌ×α−（ＣＬ＿Ｈu＋ＣＬ＿Ｈl）
で表すことができる。
【００６９】
図１０（ａ）はｍ番目の画素ブロックＭＢ（ｍ）の符号化により、空きのメモリ容量Ｗがブロックの最悪符号長ＢＬよりも少なくなった状態を図示している。この場合、ブロックＭＢ（ｍ）が画像の最後のブロックでない（ｍ≠Ｎ−１）ならば、符号量制御部１０８は下位ビット部の符号化データを削除して、メモリの空き容量を増やす。
【００７０】
図１３はｍ番目の画素ブロックの符号化により、Ｗ＜ＢＬとなった場合に、符号量制御部１０８により行われる符号量削減の処理を示すフローチャートである。以下、同図を参照して、符号量制御部１０８における符号量削減の処理の流れを説明する。以下の説明からもわかるように、ビットプレーンの下位から上位に向かう優先順位に従って、ビットプレーンを削除していく。
【００７１】
まず、メモリ１０７に格納される上位ビット部符号化データの１画素ブロック当たりの平均符号量（平均符号長）を算出する（ステップＳ１３０１）。これはＣＬ＿Ｈｕを符号化済のブロック数ｍ＋１で割ることにより算出される。
【００７２】
次に、内部に保持する下位ビット部符号長情報を参照して、各画素ブロックにおける境界ビット位置の最大値Ｂｍａｘを取得し、変数ｉに格納する（ステップＳ１３０２）。
【００７３】
続いて、ｉプレーンよりも上位（ｉプレーンは含まない）の推定符号量ＰＬ（ｉ）を算出する。推定符号量とは、符号化済の画素ブロックの平均符号量から、符号化対象画像データの予想される高周波帯域データの最終符号量である。ｉがＢｍａｘである場合には高周波帯域データを上位ビット部だけで構成した場合に推定される符号量であり、以下の式により求める。
【００７４】
ＰＬ(ｉ)＝ＣＬ＿Ｈｕ／（ｍ＋１）×Ｎ      （ｉ＝Ｂｍａｘの場合）
【００７５】
また、ｉがＢｍａｘでない場合（ｉ＜Ｂｍａｘの場合）、ＰＬ（ｉ）は上位ビット部の符号化データと下位ビット部のi＋１以上の桁のプレーンにより高周波帯域データを構成した場合に推定される符号量である。ｉ桁のプレーンの平均符号長をＳ（ｉ）とするとき、以下の式でＰＬ（ｉ）を求めることができる。
【００７６】
Ｓ（ｉ）  ＝  ΣＣｐ（ｊ，ｉ）／（ｍ＋１）  （ｊ＝０〜ｍまで）
ＰＬ（ｉ）＝ＰＬ（ｉ＋１）＋ Ｓ（ｉ＋１）×Ｎ  (ｉ≠Ｂｍａｘの場合)
【００７７】
ＰＬ（ｉ）＋ＢＬが、メモリ１０７の容量（Ｌ×α）以下であるか否かを判定する（ステップＳ１３０４）。ＢＬはひとつのブロックの最悪符号長であり、ＢＬを加えて比較することにより、符号量削減後に最低でも１ブロックの符号化データを格納できることを保証する。ＰＬ（ｉ）＋ＢＬ＜Ｌ×αであるならば変数ｉをデクリメントし（ステップＳ１３０５）、再び、ステップＳ１３０３の処理に戻る。そうでない場合には、ステップＳ１３０６へと処理を移す。
【００７８】
ステップＳ１３０６ではｉ以下の桁のプレーンをメモリ１０７から削除し、下位ビット部の符号列を再配置する。符号量制御部に保持される下位ビット部符号長情報を参照することにより、所定のプレーンの情報が削除できることが理解されるであろう。図１０（ｂ）はｉ以下の桁のプレーンを削除することにより、符号量削減が行われた後の様子を示す。このとき、図１１に示した各ブロックの下位ビット部符号長Ｃｌ（ｉ）も符号長の削減に伴って更新される。なお、ｉ以下の下位プレーンのデータを削除した場合、メモリ１０７に格納される最も低いプレーンの番号として“ｉ＋１”を変数Ｂｍｉｎ（下限ビット位置）として保持する。
【００７９】
ステップＳ１３０７では、変数ｉがＢｍａｘであるか否かを判定し、ｉ＝Ｂｍａｘである場合にはステップＳ１３０８へ、そうでない場合には符号量削減の処理を終了する。
変数ｉがＢｍａｘである場合、即ち、上位ビット部の符号化データのみで高周波帯域データを構成する場合、現在の上位ビット部の総符号量ＣＬ＿ＨｕにＢＬを加えて、メモリ容量Ｌ×αと比較する（ステップＳ１３０８）。この判定は上位ビット部の符号化データのみをメモリ１０７内に残した場合の空き容量がＢＬ以上であるか否かを判定していることになる。ＣＬ＿Ｈｕ＋ＢＬ＜Ｌ×αの場合は処理を終了する。また、ＣＬ＿Ｈｕ＋ＢＬ≧Ｌ×αである場合、すなわち、空き容量がＢＬ未満の場合にはステップＳ１３０９へと処理を移す。
【００８０】
ステップＳ１３０９ではメモリ１０７の内部に格納された高周波帯域データを全て削除する。高周波帯域データを全て破棄してしまうため、解像度が落ちることになる。この処理はメモリの破綻を引き起こさないための回避措置として適用する手段であり、出来る限りこのような状態を引き起こさないように係数量子化部１０５の量子化ステップを設定しておく必要がある。
【００８１】
以上の処理により、符号化対象が最後の画素ブロックに至る以前では、メモリ１０７内に少なくとも１ブロックの最悪符号長ＢＬ以上の空き容量が常に確保される。そして、符号化対象の画像データを構成する全ての画素ブロックの高周波帯域の符号化データが、係数量子化部１０５、係数符号化部１０６、及び、符号量制御部１０８の動作により、符号列格納用メモリ１０７に格納されることになる。なお、係数量子化部１０５及び係数符号化部１０６によって、本発明の第１の符号化部１００１を構成する。
【００８２】
［低周波帯域データの符号化］
以下に説明する係数量子化部１１０及び係数符号化部１１１によって、本発明の第２の符号化部１００１を構成する。詳細は後述するが、係数量子化部１１０は、量子化パラメータ設定部、及び、量子化パラメータ更新部１１３より設定される符号化パラメータに従って量子化処理を行うものである。
【００８３】
さて、上記のようにして、符号化対象の画像データの上記高周波帯域データの符号化処理が完了すると、制御部１１６は、係数量子化部１１０、係数量子化部１１０、係数符号化部１１１、符号量検出部１１２を制御し、低周波帯域データの符号化処理を開始させる。このとき、制御部１１６は、目標符号量Ｌから、符号列格納用メモリ１０７に格納された高周波帯域データの総符号化データ量ＣＬ＿Ｈを減じた値（後述する低周波帯域目標符号量に対応する）を、符号量検出部１１２に設定する。
【００８４】
さて、低周波帯域データの符号化を開始するとき、低周波帯域用メモリ１０４には、符号化対象の画像データの全画素ブロックＭＢ（０）乃至ＭＢ（Ｎ−１）それぞれの低周波帯域データ（図４参照）が既に格納されている点に注意されたい。ここで、Ｎは総画素ブロック数である。また、符号列格納用メモリ１０７には、既に高周波帯域データの符号化データが格納されて、最終的な符号化データ量ＣＬ＿Ｈも確定している点についても注意されたい。
【００８５】
先に説明したように、符号列格納用メモリ１０７には、高周波帯域データの符号化データを格納するための領域（その容量はＬ×α）が確保されている。しかし、実際の高周波帯域データの符号量ＣＬ＿Ｈは、ＣＬ＿Ｈ≦Ｌ×αの関係にある。換言すれば、符号列格納用メモリ１０７中の、高周波帯域データの符号化データを格納するために確保したメモリ容量には、Ｗ（＝Ｌ×α−ＣＬ＿Ｈ）だけの空き領域があることを意味する。
【００８６】
そこで、本実施形態では、符号列格納用メモリ１０７のＬ×（１−α）として確保された領域と、高周波帯域データの符号化データを格納した領域中の未使用のＷの領域とを、低周波帯域データの格納可能な領域として決定し、低周波帯域データの符号化を行う。「Ｌ×（１−α）＋Ｗ」は、低周波帯域データの符号化データの許容符号量であるので、これ以降、「Ｌ×（１−α）＋Ｗ」を低周波帯域目標符号量Ｌ’と記す。これは、先に説明したように、符号量検出部１１２に設定する情報でもある。
【００８７】
以下、実施形態の低周波帯域データの符号化処理を説明する。
【００８８】
量子化パラメータ設定部１０９は、低周波帯域目標符号量Ｌ’に基づいて決定されるデフォルトの量子化パラメータｑを係数量子化部１１０に設定する。
【００８９】
発明者は、予めいくつかのサンプル画像で、低周波帯域目標符号量Ｌ’と量子化パラメータの関係を調べておき、低周波帯域目標符号量Ｌ’と量子化パラメータを対応づける図１８に示すルックアップテーブルを作成した。そして、このテーブルを、量子化パラメータ設定部１０９内の不図示のメモリに格納するようにした。そして、量子化パラメータ設定部１０９は、図１８のルックアップテーブルを参照して、低周波帯域目標符号量Ｌ’から、量子化パラメータｑを決定した。
【００９０】
この量子化パラメータｑは、符号列格納用メモリ１０７のＬ×（１−α）のときに“１．０”となる値であって、Ｗが大きい程小さくなる。
【００９１】
係数量子化部１１０は、低周波帯域データ（実施形態では４×４個の係数値）を量子化するための、４×４個の基準となる量子化ステップ値を保持するメモリを有する。そして、量子化パラメータ設定部１０９から設定された量子化パラメータｑを、各基準の量子化ステップ値に乗算することで、実際に量子化する際の量子化ステップ値を算出する。
【００９２】
この後、係数量子化部１１０は、低周波帯域用メモリ１０４に格納された各画素ブロックの低周波帯域データ（１６個の係数値；図４参照）を単位に量子化し、その量子化結果を係数符号化部１１１に出力する。
【００９３】
係数符号化部１１１は係数量子化部１１０から出力される係数量子化値を、ゼロの連続数と非ゼロの係数値の組み合わせによりランレングス符号化する。ここでの符号化は特にこの方式に限定されるものではなく、例えば、係数符号化部１０６と同じように、係数値をビット分離して、上位ビット部分のみをランレングス符号化するといった方法を用いても良い。低周波帯域符号化データは符号列格納用メモリ１０７へと格納される。低周波帯域データの符号化データは、符号列格納用メモリ１０７の内部にあらかじめ確保した低周波帯域用の領域Ｌ×（１−α）に順番に書き込まれる。また、低周波帯域用の領域が一杯になった時には、高周波帯域符号化用として使用していたＬ×αの領域のうちの空きメモリ領域（Ｗ）を使用する。
【００９４】
ここで、低周波帯域データの符号化処理で得られた符号化データの現時点での総符号量をＣＬ＿Ｌと定義する。高周波帯域データの符号化処理で得られた符号量は既に説明したようにＣＬ＿Ｈとして確定しているので、これらの合計符号量“ＣＬ＿Ｌ＋ＣＬ＿Ｈ”は、目標符号量Ｌ以下でなければならない。言い換えれば、その常時、低周波帯域データの総符号量ＣＬ＿Ｌが低周波帯域目標符号量Ｌ’以下でなければならない。
【００９５】
先に説明したデフォルトの量子化パラメータｑは、統計的に求めたものであるので、着目している画像データを符号化処理中に、
ＣＬ＿Ｌ＋ＣＬ＿Ｈ＞Ｌ（ｏｒ  ＣＬ＿Ｌ＞Ｌ’）
になってしまうことが起こり得る。つまり、目標符号量Ｌをオーバーフローすることが起こり得る。
【００９６】
そこで、ＣＬ＿Ｌ＞Ｌ’となると判定した場合、量子化パラメータ更新部１１３に量子化パラメータｑの変更を指示すると共に、制御部１１６にその旨を通知する。制御部１１６がこの通知を受けた場合、低周波帯域データの符号化処理を実行する各処理部を停止し、メモリ１０７に格納された、それまでの低周波帯域データの全符号化データを破棄させる。
【００９７】
この後、量子化パラメータ更新部１１３は、生成される符号量がより少なくするため、量子化パラメータｑを更新するためのパラメータ（更新パラメータｒという）を係数量子化部１１０に設定する。量子化パラメータ更新部１１３が設定する更新パラメータｒは、１以上の値であり、量子化パラメータ設定部１０９が設定した量子化パラメータｑに乗算するために使用される。すなわち、量子化パラメータ１０９が持つ基準となる量子化ステップ値をＱ０とした場合、係数量子化部１１０は、Ｑ＝Ｑ０×ｑ×ｒを新たな量子化ステップ値として算出する。この新たな量子化ステップ値Ｑは、それ以前の量子化ステップ値Ｑ０×ｑよりも大きな値になっていることに注意されたい。なお、２回め以降のオーバーフローが発生した場合、量子化パラメータ更新部１１３は、前回よりも大きな更新パラメータｒを設定することになる。
【００９８】
なお、ここでは、Ｑ＝Ｑ０×ｑ×ｒを、新たな量子化ステップ値とする例を説明したが、これによって本願発明が限定されるものではない。例えば、係数量子化部１０９には、量子化ステップ値を格納する複数の量子化テーブルを格納するメモリを有し、ｑ、ｒをアドレスとして入力し、一義的に決まる量子化テーブルを選択して、量子化ステップ値を決定しても構わない。重要な点は、ＣＬ＿Ｌ＞Ｌ’と判断される度に、その時点で使用していた量子化ステップ値よりも大きな値を持つ量子化ステップ値を用い、符号化圧縮率を上げるようにすることである。
【００９９】
いずれにせよ、係数量子化部１１０が、量子化パラメータ更新部１１３から、量子化パラメータの更新のためのパラメータｒを入力したとする。この場合、制御部１１６は、低周波帯域用メモリ１０４の先頭の画素ブロックの低周波帯域データから量子化処理を再度実行を開始させる。そして、係数符号化部１１１による再符号化を開始する。
【０１００】
従って、符号量制御部１０８を第１の符号量制御部とするなら、量子化パラメータ設定部１０９、量子化パラメータ更新部１１３、符号量検出部１１２は第２の符号量制御部として機能することになる。
【０１０１】
上記のようにして、低周波帯域目標符号量Ｌ’に収まる範囲で全ての画素ブロックについて低周波帯域符号化データが格納されると、符号列形成部１１４により、所定の形式の符号化データを生成し、符号出力部１１５に出力する。
【０１０２】
符号出力部１１５は、符号化対象の画像データを入力する際に、出力先（例えばハードディスク装置）にファイルヘッダを生成し、それに後続して、符号列形成部１１４で生成された符号列を出力し、１個の符号化データファイルを生成することになる。
【０１０３】
図１５に本実施形態の画像符号化装置から出力される符号化データファイルの構造を示す。ファイルヘッダには画像の水平方向画素数、垂直方向画素数や、色成分の数（実施形態でモノクロ画像の例であるので色成分の数は１つ）、各画素のビット数など、復号に必要な各種情報がヘッダとして付与される。このヘッダには高周波帯域符号化データの有無や、符号列に含まれる最下位のプレーンの番号Ｂｍｉｎの情報が含まれる。ファイルヘッダの後に、画像の画素ブロックについて低周波帯域の符号化データが配置され、その後に高周波帯域の符号化データが並ぶ。また、高周波帯域符号化データの中には、まず、全ての画素ブロックについて上位ビット符号化データが配置され、その後に、下位ビット符号化データが並ぶ。図中、Ｎは画素ブロックの総数を表す。上位ビット符号化データは、画素ブロックを単位とするラスタースキャンの順番で、各画素ブロックの上位ビット部符号化データを連結して構成される。下位ビット符号化データは各画素ブロックの下位ビット部符号化データをビットプレーン順に配置して構成される。ビットプレーンｉはラスタースキャンの順番で各画素ブロックのビットプレーンｉのデータを集めて構成される。但し、境界ビットＢ（ｎ）＜ｉとなるブロックＭＢ（ｎ）が存在することもあるので、必ずしもすべての画素ブロックからデータが集められるわけではない。
【０１０４】
図１５に示した符号の構造は、あくまでもその一例であり、低周波帯域符号化データと、上位ビット部と下位ビット部に分離されて符号化された高周波帯域符号化データを格納するのに適した形態であれば良い。例えば、図１５の構造に変えて、複数の画素ブロックで構成されるマクロブロック、又は、そのマクロブロックを複数包含するタイルを単位とするデータ構造としても構わない。
【０１０５】
本実施形態の画像符号化装置で生成した符号化データは、上位ビット部を境界ビット位置Ｂで表されるビット数分上位にシフトして、必要な画質レベルに応じて下位ビット部を復元し、符号化と逆の過程で復号することにより、再生できる。
【０１０６】
以上のように、本実施形態の画像符号化装置は、複数の画素で構成される画素ブロック（実施形態では１６×１６画素のサイズ）で、系列変換を行い、低周波帯域データと高周波帯域データとに分離する。視覚的に重要な低周波帯域データはメモリ（低周波帯域用メモリ１０４）に確保しておき、先に高周波帯域データを、上位ビット部と下位ビット部に分離してそれぞれ符号化する。このとき、下位ビット部は非圧縮としてビットプレーン順のデータを構成し、生成符号量に応じて下位のビットを破棄することにより、高周波帯域データの符号量を一定の範囲（実施形態ではＬ×α）に限定することができる。高周波帯域データを符号化した後に、高周波帯域データの発生符号量に基づいて量子化ステップを設定し、低周波帯域データの符号化を行う。これにより、低周波帯域データの量子化を細かく制御することができ、目標符号量を高画質に実現することが可能となる。
【０１０７】
［第１の実施形態の変形例］
上記第１の実施形態と同等の処理を、コンピュータが読込み実行するコンピュータプログラムによって実現する例を第１の実施形態の変形例として以下に説明する。
【０１０８】
図１４は、本変形例における情報処理装置（例えばパーソナルコンピュータ）のブロック構成図である。
【０１０９】
図中、１４０１はＣＰＵで、ＲＡＭ１４０２やＲＯＭ１４０３に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。１４０２はＲＡＭで、外部記憶装置１４０７や記憶媒体ドライブ１４０８、若しくはＩ／Ｆ１４０９を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、ＲＡＭ１４０２は、ＣＰＵ１４０１が各種の処理を実行する際に使用するワークエリアも備える。１４０３はＲＯＭで、ブートプログラムや本装置の設定プログラムやデータを格納する。１４０４、１４０５は夫々キーボード、マウスで、ＣＰＵ１４０１に対して各種の指示を入力することができる。
【０１１０】
１４０６は表示装置で、ＣＲＴや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。１４０７はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置１４０７には、ＯＳ（オペレーティングシステム）や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、ＣＰＵ１４０１は、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードし、実行することになる。
【０１１１】
１４０８は記憶媒体ドライブで、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されたプログラムやデータを読み出してＲＡＭ１４０２や外部記憶装置１４０７に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ１４０８は、ＣＰＵ１４０１による制御によって、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードする。
【０１１２】
１４０９はＩ／Ｆで、このＩ／Ｆ１４０９によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のＲＡＭ１４０２や外部記憶装置１４０７、あるいは記憶媒体ドライブ１４０８に入力することもできる。１４１０は上述の各部を繋ぐバスである。
【０１１３】
上記構成において、本装置の電源がＯＮになると、ＣＰＵ１４０１はＲＯＭ１４０３のブートプログラムに従って、外部記憶装置１４０７からＯＳをＲＡＭ１４０２にロードする。この結果、キーボード１４０４、マウス１４０５の入力が可能となり、表示装置１４０６にＧＵＩを表示することが可能になる。ユーザが、キーボード１４０４やマウス１４０５を操作し、外部記憶装置１４０７に格納された画像符号化処理用アプリケーションプログラムの起動の指示を行なうと、ＣＰＵ１４０１はそのプログラムをＲＡＭ１４０２にロードし、実行する。これにより、本装置が画像符号化装置として機能することになる。
【０１１４】
以下、ＣＰＵ１４０１が実行する画像処理用のアプリケーションプログラムの処理手順を図１６のフローチャートに従って説明する。基本的に、このプログラムは、図１に示す各構成要素に相当する関数を備えることになる。ただし、図１における低周波帯域用メモリ１０４、符号列格納用メモリ１０７等の各領域はＲＡＭ１４０２内に予め確保することになる。
【０１１５】
まず、ステップＳ１６００において、符号化を開始する前の初期化処理が行われる。ここでは、処理する画素ブロックの番号を保持する変数ｉを０に初期化する。
【０１１６】
次に、ステップＳ１６０１においてＩ／Ｆ１４０９によって接続される外部装置から符号化対象の画像データを順次入力し、ＲＡＭ１４０２に格納しながら、ｉ番目の画素ブロックデータを形成する（画像入力部１０１、ブロック分割部１０２の処理に相当）。このとき、画像データのヘッダを参照することで、その画像に含まれる画素ブロックの総数を算出しておく。
【０１１７】
次に、ステップＳ１６０２において、着目する画素ブロックＭＢ（ｉ）についてアダマール変換等の系列変換処理を施し、対応する変換係数データ（高周波帯域データ、低周波帯域データ）をＲＡＭ１４０２内に格納する（系列変換部１０３の処理に相当）。
【０１１８】
続いて、ステップＳ１６０３で、画素ブロックＭＢ（ｉ）の高周波帯域データの符号化を行う（係数量子化部１０５、係数符号化部１０６の処理に相当）。生成された符号列はＲＡＭ１４０２の内部に格納する。
【０１１９】
次いで、ステップＳ１６０４にて、高周波帯域符号化データの符号量ＣＬ＿Ｈ＋ＢＬと目標符号量Ｌ×αの比較を行う。ＣＬ＿Ｈ＋ＢＬ＜×αの場合には、処理をステップＳ１６０６へと移し、そうでない場合には下位のビットプレーンから削除していくことにより高周波帯域の符号量削減を行う（ステップＳ１６０５）。ステップＳ１６０４とステップＳ１６０５の処理は符号量制御部１０８の処理に相当する。
【０１２０】
ステップＳ１６０６では、符号化処理を行った画素ブロックＭＢ（ｉ）が符号化対象画像の最後のブロックであるか否かを判定する。すなわち、ブロック番号ｉがＮ−１であるか否かを調べ、Ｎ−１である場合には処理をステップＳ１６０８へと移す。Ｎ−１でない場合には、ステップＳ１６０７でブロック番号ｉをインクリメントし、次のブロックについてステップＳ１６０１から処理を繰り返す。
【０１２１】
処理がステップＳ１６０８に移ったときには、すべてのブロックについて高周波帯域データの符号化が終了しており、その総符号量ＣＬ＿Ｈは判明する。従って、低周波帯域目標符号量Ｌ’を算出し、初期の量子化ステップを決定する（量子化パラメータ設定部１０９の処理に相当）。
【０１２２】
ステップＳ１６０９では、低周波帯域データの符号化開始の準備として、ブロック番号を保持する変数ｉに０を設定する。
【０１２３】
ステップＳ１６１０では、着目する画素ブロックＭＢ（ｉ）について、ＲＡＭ１４０２内に格納される低周波帯域データを読み出す。読み出された画素ブロックＭＢ（ｉ）の低周波帯域データは、ステップＳ１６０８により決定された量子化ステップを用いて量子化された後、符号化を行う（ステップＳ１６１１）。これらの処理は係数量子化部１１０、係数符号化部１１１の処理に相当する。生成された符号化データはＲＡＭ１４０２の内部に格納される。
【０１２４】
ステップＳ１６１２では、既に符号化済の高周波帯域データの符号量ＣＬ＿Ｈと、ここまでに発生した低周波帯域データの符号量ＣＬ＿Ｌとの和を目標符号量Ｌとを比較する。なお、この代りに、符号量ＣＬ＿Ｌと低周波帯域目標符号量Ｌ’と比較しても構わない。
【０１２５】
ＣＬ＿Ｈ＋ＣＬ＿Ｌ＜Ｌの場合（or ＣＬ＿Ｌ＜Ｌ’の場合）には、ステップＳ１６１４へと処理を移し、そうでない場合には、ステップＳ１６１３へと処理を移す（符号量検出部１１２の処理に相当）。
【０１２６】
ステップＳ１６１３では量子化ステップが大きくなるように量子化パラメータを更新して、ステップＳ１６０９へと戻り、更新された量子化ステップにより再度ＭＢ（０）の低周波帯域データから符号化処理を再開する（量子化パラメータ更新部の処理に相当）。このとき、ＲＡＭ１４０２に格納される低周波帯域データの符号は破棄する。
【０１２７】
ステップＳ１６１４では符号化したブロックＭＢ（ｉ）が符号化対象画像の最後のブロックであるか否かを判断する。最後のブロックの場合、すなわちブロック番号ｉがＮ−１である場合、ステップＳ１６１６へと移る。最後のブロックでない場合（ｉ≠Ｎ−１）、ステップＳ１６１５にてブロック番号を保持する変数ｉをインクリメントし、次のブロックについてステップＳ１６１０から処理を繰り返す。
【０１２８】
ステップＳ１６１６では、ＲＡＭ１４０２に格納された全ブロックの符号化データから、最終的な符号化データを生成して、Ｉ／Ｆ１４０９を解して外部装置へと出力する（符号列形成部１１４、符号出力部１１５の処理に相当）。
【０１２９】
以上説明したように本変形例によっても、第１の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。すなわち、高周波帯域データの切り捨てにより高周波帯域データの符号量を調整した後、低周波帯域データの量子化ステップを設定して目標符号量になるように符号化する。この結果、少ないメモリ量で、簡易かつ高画質の目標符号量以下の符号化データを生成することができる。
【０１３０】
［第２の実施形態］
上記第１の実施形態及びその変形例では、低周波帯域データと高周波帯域データに分離し、まず、高周波帯域データを符号化した。その後、高周波帯域データの符号量に基づいて低周波帯域の量子化パラメータを設定し、目標符号量以下となるように量子化パラメータを繰り返して調整して符号化を行った。しかしながら、たとえば、一定時間内に多くの画像を符号化処理しなければならない場合など、再符号化に伴う処理の時間が問題となる場合もある。
【０１３１】
そこで、本第２の実施形態として、単写モードと連写モードを切り替え可能なデジタルカメラ等に好適な実施形態について説明する。一枚の画像の符号化処理にかかる時間制約が厳しくない単写モードでは第１の実施形態と同様に必要に応じて低周波帯域データの再符号化を行う。一方、高速な符号化処理が必要とされる連写モードの場合には低周波帯域データの再符号化を実施しない。上記を言い換えると、符号化する画像データの個数／単位時間を言い換えてもよい。
【０１３２】
なお、本第２の実施形態でも、対象の画像データは、説明を簡単にするためにモノクロ画像データとするが、ＲＧＢ画像データや、ＣＭＹＫカラー画像データに適用しても良い。また、画像は水平方向Ｗ画素、垂直方向Ｈ画素により構成されるものとする。
【０１３３】
本第２の実施形態に係る画像符号化装置のブロック図は、第１の実施形態で説明した図１のブロック図と基本的に同じである。ブロック全体の動作を制御する制御部１１６に不図示の操作部からの動作モードを指示入力がある点が異なる。
【０１３４】
以下、第２の実施形態の処理について、第１の実施形態と動作が異なる部分について説明する。
【０１３５】
本第２の実施形態の画像符号化装置に入力される動作モード信号は“０”,“１”の２値であるとする。動作モード信号が“０”である場合を符号化対象画像データが単数である「通常モード」とする。また“１”である場合には、符号化対象画像データが複数であるので「高速モード」とする。処理時間にゆとりがあり、第１の実施形態の説明における、低周波帯域データの再符号化による符号量制御を許容する場合には通常モードが選択される。一方、低周波帯域データの再符号化を行わず、高速に符号化処理を終了したい場合には高速モードが選択される。
【０１３６】
通常モードが選択される場合、即ち、動作モード信号が“０”である場合には、本第２の実施形態の画像符号化装置は第１の実施形態で説明した通りの動作を行う。
【０１３７】
一方、高速モードが選択される場合、即ち、動作モード信号が“１”である場合には、高周波帯域データの符号化と、低周波帯域データ用の量子化パラメータの設定までは第１の実施形態で説明した動作と同じである。しかしながら、低周波帯域データの符号化時に、符号量制御部１０８を動作させることにより低周波帯域データの複数回の符号化を行わず、メモリ１０７内の高周波帯域データの符号化データ中の部分符号化データを削除する点が異なる。
【０１３８】
図１７はｍ番目の画素ブロックＭＢ(ｍ)の低周波帯域データの符号化により、メモリ１０７の空き容量が少なくなったと判定した場合の、符号量制御部１０８により行われる符号削減処理の流れを示すフローチャートである。以下、同図を参照して、符号量制御部１０８により行われる符号量削減処理の流れを説明する。
【０１３９】
まず、メモリ１０７に格納される低周波帯域データの画素ブロックの平均符号長を算出する（ステップＳ１７０１）。これはこれまでに出力された低周波帯域データの符号量ＣＬ＿Ｌを符号化済のブロック数ｍ＋１で割ることにより算出される。
【０１４０】
次に、算出した平均符号長とブロック総数Ｎの積を計算することにより、最後のブロックまで符号化した場合の、低周波帯域データの推定符号量ＰＣＬ＿Ｌを求める（ステップＳ１７０２）。ＰＣＬ＿Ｌは以下の式で表すことができる。
ＰＣＬ＿Ｌ＝ＣＬ＿Ｌ／（ｍ＋１）×Ｎ
ここで、上式の右辺第一項はステップＳ１７０１で求めたブロック平均符号長である。
【０１４１】
次に、変数ｉに高周波帯域データの下位ビット部として保持される最下位のプレーンＢｍｉｎを設定する（ステップＳ１７０３）。
【０１４２】
続いて、変数ｉと境界ビット位置Ｂの最大値Ｂｍａｘとを比較し（ステップＳ１７０４）、ｉ≦Ｂｍａｘである場合にはステップＳ１７０５へ、そうでない場合にはステップＳ１７０９へと処理を移す。
【０１４３】
ステップＳ１７０５ではｉ以下のプレーンを削除した場合の高周波帯域データの符号量Ｌ（ｉ）を算出する。ｉ桁のプレーンの符号量をＰ（ｉ）とするとき、
Ｌ（ｉ）＝ＣＬ＿Ｈu      （ｉ＝Ｂｍａｘの場合）
Ｐ（ｉ）＝ΣＣｐ（ｊ，ｉ）          （ｊ＝０〜ｍまで）
Ｌ（ｉ）＝Ｌ（ｉ＋１）＋Ｐ（ｉ＋１）（ｉ≠Ｂｍａｘの場合）
により求められる。
【０１４４】
ステップＳ１７０６では低周波帯域データの推定符号量ＰＣＬ＿Ｌと、ｉプレーン以下の削除した場合の高周波帯域データの符号量Ｌ（ｉ）の和を目標符号量Ｌと比較する。ＰＣＬ＿Ｌ＋Ｌ（ｉ）＜Ｌとなる場合にはステップＳ１７１０へと処理を移し、そうでない場合にはステップＳ１７０８へと処理を移す。
【０１４５】
ステップＳ１７０８では変数ｉをインクリメントし、再びステップＳ１７０４へと処理を移す。
【０１４６】
ステップＳ１７１０ではｉ以下の桁のプレーンをメモリ１０７から削除し、下位ビット部の符号列を再配置する。この処理は第１の実施形態の符号量制御部の動作でステップＳ１３０６の動作と同じである。
【０１４７】
一方、ｉがＢｍａｘを越えてしまう場合、即ち、下位ビット部の符号化データをすべて削除しても十分な空き容量が確保できない場合にはステップＳ１７０９に至る。この場合、メモリ１０７から高周波帯域符号化データのすべてを削除する。即ち、高周波帯域データの上位ビット部の符号化データ、下位ビット部の符号化データの両方を削除する。なお、場合によっては高周波帯域データのすべてを削除しても空き容量が不足となることも起こりえる。しかしながら、本実施形態では係数量子化部１１０の量子化ステップとメモリ１０７の容量の設定により、低周波帯域データだけでメモリオーバーフローは起こらないものとする。
【０１４８】
以上の処理により、低周波帯域の符号量が多くなる場合には、符号化済の高周波帯域の符号化データを削除して空き容量を確保しながら、符号化対象画像を所定の符号量以下で符号化する。
【０１４９】
以上説明したように本第２の実施形態によれば、画質優先の符号量制御を行う通常モードと、処理速度有線の符号量制御を行う高速モードの２つを備え、用途に応じて切り替えて動作させることができる。
【０１５０】
なお、本第２の実施形態と同等の処理をコンピュータプログラムでもって実現できることは、先に説明した第１の実施形態の変形例から明らかであるので、その説明については省略する。
【０１５１】
［第３の実施形態］
上記第２の実施形態の画像処理装置では、画像の撮影モード符号量制御の方法を切り替えた。しかし、これ以外の情報に基づいて、切り替えることもできる。本第３の実施形態では、撮影する画像の大きさから符号量制御方法を切り替える例について説明する。
【０１５２】
本第３の実施形態で、第２の実施形態と動作が異なるのは、制御部に入力される動作モード信号の設定方法のみである。
【０１５３】
本第３の画像符号化装置では、水平・垂直方向の画素数が異なる３種類の画像を符号化する。小さいほうから順にＳ，Ｍ，Ｌと記す。Ｌの場合、即ち、解像度が高い場合には、符号化処理する画素数が多く、Ｓ，Ｍに比べて処理時間が掛かり、かつ、高周波帯域の劣化が目につきにくい。反対に解像度が低い場合には、低周波帯域が主成分であり、視覚的な劣化が目に付きやすい。よって、高解像度で撮像される場合（本実施形態では画像のタイプがＬの場合）には、動作モード信号として“１”を入力し、高速モードとする。一方、Ｓまたは、Ｍの場合には通常モードを設定する。
【０１５４】
なお、本第３の実施形態に相当する処理をコンピュータプログラムでもって実現できることは、先に説明した第１の実施形態の変形例と同様、明らかである。
【０１５５】
本第３の実施形態では高周波成分の歪の許容範囲が大きい場合には、高速モードを選択し、歪の許容範囲が小さい場合には通常モードを適用するものである。従って、画像の大きさ以外でも例えば、画質設定（低、中、高）に基づいてモード選択を行っても同様に効果がある。例えば、高画質の場合には高速モードを選択し、中、低画質の場合には通常モードとしても良い。
【０１５６】
［その他の実施形態］
上記各実施形態では周波数帯域のデータへの変換に４×４画素を単位とするアダマール変換を２回適用したが、これに限らず、ＤＣＴなど、他の周波数変換手段を用いても構わない。また、周波数帯域のデータへの変換を独立のブロックで実施する必要もなく、例えば、ブロックを跨って変換処理を行う重複直交変換や重複双直交変換などを用いても良い。更には、第１ステージと第２ステージで適用する系列変換を別のものとしても構わない。
【０１５７】
また、上位ビット部の符号化にＪＰＥＧ Ｂａｓｅｌｉｎｅと同様の手法を用いる例について示した。しかしながら、ビットプレーンを単位として２値の算術符号化を行うなど、別のエントロピ符号化技術を用いても良い。また、上述の実施形態では１６×１６画素を画素ブロックとして周波数帯域への変換を行ったがブロックの大きさはこれに限定されるものではなく、８×８や３２×３２など、別のブロックサイズとしても良い。
【０１５８】
また、実施形態では、モノクロ画像データの符号化を例に説明したが、画像の色空間は、ＲＧＢ、ＣＭＹＫ、Ｌａｂ、ＹＣｒＣｂなど様々なタイプの画像データに適用可能であるのは明らかである。従って、色成分の数や色空間の種類によって本発明が限定されるものではない。
【０１５９】
また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置（ＣＤ−ＲＯＭドライブ）にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【図面の簡単な説明】
【０１６０】
【図１】第１の実施形態に係る画像符号化装置のブロック構成図である。
【図２】符号化処理の単位となるブロックとサブ画素ブロックの関係を示す図である。
【図３】ブロックを構成する１６個のサブ画素ブロックを周波数変換して得られるDC成分とAC成分を表す図である。
【図４】各サブ画素ブロックから集められた４×４のＤＣ成分と、それに対して再度周波数変換を行った結果を表す図である。
【図５】ＡＣ係数の識別番号を示す図である。
【図６】係数符号化部１０６の内部構造を表すブロック構成図である。
【図７】係数のビット分離の概略を示す図である。
【図８】下位ビット符号化データの例を示す図である。
【図９】符号列格納用メモリ１０７の高周波帯域データの符号化データを格納する領域とその符号化データの格納状態を表す図である。
【図１０】符号量制御部１０８による、符号列格納用メモリ１０７の内部に格納される符号量の削減の様子を表す図である。
【図１１】符号量制御部１０８の内部に保持される各ブロックの符号長に関する情報の概要を示す図である。
【図１２】符号量制御部１０８の内部に保持される各ブロックの下位ビットの符号長に関する情報の概要を示す図である。
【図１３】符号量制御部１０８の処理の流れを示すフローチャートである。
【図１４】第１の実施形態の変形例に係る情報処理装置のブロック構成図である。
【図１５】第１の実施形態の画像符号化装置の出力する符号化データの構造を示す図である。
【図１６】第１の実施形態の変形例に係る処理の流れを示すフローチャートである。
【図１７】第２の実施形態において、符号量制御部１０８の処理の流れを示すフローチャートである。
【図１８】第１の実施形態における低周波帯域目標符号量と符号化パラメータとの相関関係を示す図である。
【図１】
2010041624.tif 000003
【図２】
2010041624.tif 000004
【図３】
2010041624.tif 000005
【図４】
2010041624.tif 000006
【図５】
2010041624.tif 000007
【図６】
2010041624.tif 000008
【図７】
2010041624.tif 000009
【図８】
2010041624.tif 000010
【図９】
2010041624.tif 000011
【図１０】
2010041624.tif 000012
【図１１】
2010041624.tif 000013
【図１２】
2010041624.tif 000014
【図１３】
2010041624.tif 000015
【図１４】
2010041624.tif 000016
【図１５】
2010041624.tif 000017
【図１６】
2010041624.tif 000018
【図１７】
2010041624.tif 000019
【図１８】
2010041624.tif 000020