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