(57)【要約】【課題】付加ビットが目標符号量内に収まらない場合でも、符号語のみを用いて直交変換係数を符号化して格納し、目標符号量に収まる直交変換係数の情報量を増やす。【解決手段】係数データを順次取得し、第１の符号表を参照して、係数データを符号語と画像の周波数を表す付加ビットとからなる符号に変換して出力する。また、第２の符号表を参照して、係数データを符号語へと変換し、符号語を第１の符号化手段が出力する符号よりもデータ量の少ない符号として出力する。順次出力した符号語長と付加ビット長とを積算して積算値とし、積算値が固定長を超えない場合には第１の符号表を用いて変換した符号を選択する。また、積算値が固定長を超える場合には第２の符号表を用いて変換した符号を選択する。選択した符号を順次連結して蓄積し、蓄積したデータを出力することで、固定長化により欠落する周波数情報を減らす。【選択図】  図１
2010118871.tif 000002
【特許請求の範囲】
【請求項１】
画像の周波数を表す、ゼロランと係数とからなる係数データ群を符号化して、符号化データとして出力する符号化装置を有する画像処理装置であって、
前記符号化装置が、
前記係数データを順次取得する入力手段と、
第１の符号表を参照して、前記係数データを符号語と画像の周波数を表す付加ビットとからなる符号に変換して出力する第１の符号化手段と、
第２の符号表を参照して、前記係数データを符号語へと変換し、当該符号語を前記第１の符号化手段が出力する符号よりもデータ量の少ない符号として出力する第２の符号化手段と、
前記第１の符号化手段が順次出力した符号語の符号語長と付加ビットの付加ビット長とを積算して積算値とし、当該積算値が取得した固定長を超えていない場合には前記第１の符号化手段が出力した符号を選択し、当該積算値が前記固定長を超えていた場合には前記第２の符号化手段が出力した符号を選択して、選択した符号を順次連結して蓄積し、当該蓄積したデータを出力する符号選択手段と、
を備えることを特徴とする、画像処理装置。
【請求項２】
前記第１の符号表は、ゼロラン長と当該ゼロランに続く付加ビットの長との組と、前記符号語とを対応付けることを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記第２の符号表は、ゼロラン長と当該ゼロランに続く係数との組を、前記符号語と対応付けることを特徴とする、請求項１又は２に記載の画像処理装置。
【請求項４】
前記第２の符号表は、ゼロラン長、付加ビット長及び符号語とを対応付ける原符号表を取得し、当該ゼロラン長、付加ビット長及び符号語のセットを用いて、最上位ビットが１でその他のビットが０である当該付加ビット長の付加ビットが示す係数と、当該ゼロラン長との組に対して、当該符号語を割り当てる処理を各セットについて順次行って得た符号表であることを特徴とする、請求項３に記載の画像処理装置。
【請求項５】
前記第２の符号表は、ゼロラン長、付加ビット長及び符号語とを対応付ける原符号表を取得し、当該ゼロラン長、付加ビット長及び符号語のセットを用いて、最上位ビットが０でその他のビットが１である当該付加ビット長の付加ビットが示す係数と、当該ゼロラン長との組に対して、当該符号語を割り当てる処理を各セットについて順次行って得た符号表であることを特徴とする、請求項３に記載の画像処理装置。
【請求項６】
前記第２の符号表は、ゼロラン長、付加ビット長及び符号語とを対応付ける原符号表を取得し、当該ゼロラン長、付加ビット長及び符号語のセットを用いて、
最上位ビットが１である当該付加ビット長の付加ビットが示す任意の係数と、当該ゼロラン長との組に対して、当該符号語を割り当てると共に、
最上位ビットが１でその他のビットが０である当該付加ビット長の付加ビットが示す係数と、当該ゼロラン長との組を割り当てるように、変換処理を順次行って得た符号表であることを特徴とする、請求項３に記載の画像処理装置。
【請求項７】
前記第２の符号表は、ゼロラン長と付加ビット長との組と、符号語とを対応付ける原符号表を変換して得た符号表であって、
当該原符号表から、符号語長が特定の長さである、符号語とゼロラン長と付加ビット長とのセットを抽出し、付加ビット長が最も小さいセットから順番に選択を行い、選択したセットのに含まれる付加ビット長を持つ付加ビットによって表される複数の係数を取得し、当該係数と当該ゼロラン長との組を前記特定の長さの符号語のいずれかに順次割り当て、この処理を他の長さの符号語についても順次行って得た符号表であることを特徴とする、請求項３に記載の画像処理装置。
【請求項８】
請求項１乃至７の何れか１項に記載の画像処理装置が出力した符号化データを復号する復号化装置を有する画像処理装置であって、
前記復号化装置が、
前記符号化データを取得する、頭出し手段と、
前記第１の符号表を参照して、前記符号化データ中の符号語と付加ビットとから、係数と、符号語長及び付加ビット長を順次取得する第１の復号手段と、
前記第２の符号表を参照して、前記符号化データ中の符号語から係数を順次取得する第２の復号手段と、
前記符号語長と付加ビット長とを積算値として積算して、当該積算値が取得した固定長を超えない場合には前記第１の復号手段が取得した係数を選択し、当該積算値が取得した固定長を超える場合には前記第２の復号手段が取得した係数を順次選択し、選択した係数を出力する係数選択手段と、
を備えることを特徴とする、画像処理装置。
【請求項９】
前記係数選択手段は、前記積算値をシフト量として前記頭出し手段に入力し、
前記頭出し手段は、取得したシフト量に応じて当該符号化データを頭出しして頭出しデータとして出力し、
前記第１の復号手段は、前記頭出しデータの先頭に位置する符号語及び続く付加ビットから係数を取得し、
前記第２の復号手段は、前記頭出しデータの先頭に位置する符号語から係数を取得することを特徴とする、請求項８に記載の画像処理装置。
【請求項１０】
画像の周波数を表す、ゼロランと係数とからなる係数データ群を符号化して、符号化データとして出力するための手段を備える装置が行う画像処理方法であって、
前記係数データを順次取得する入力工程と、
第１の符号表を参照して、前記係数データを符号語と画像の周波数を表す付加ビットとからなる符号に変換して出力する第１の符号化工程と、
第２の符号表を参照して、前記係数データを符号語へと変換し、当該符号語を前記第１の符号化手段が出力する符号よりもデータ量の少ない符号として出力する第２の符号化工程と、
前記第１の符号化工程で順次出力した符号語の符号語長と付加ビットの付加ビット長とを積算して積算値とし、当該積算値が取得した固定長を超えていない場合には前記第１の符号化工程で出力した符号を選択し、当該積算値が前記固定長を超えていた場合には前記第２の符号化工程で出力した符号を選択して、選択した符号を順次連結して蓄積し、当該蓄積したデータを出力することで、固定長化により欠落する周波数情報を減らす符号選択工程と、
を備えることを特徴とする、画像処理方法。
【請求項１１】
請求項１０に記載の画像処理方法で出力した符号化データを復号するための手段を備える装置が行う画像処理方法であって、
前記符号化データを取得する、頭出し工程と、
前記第１の符号表を参照して、前記符号化データ中の符号語と付加ビットとから、係数と、符号語長及び付加ビット長を順次取得する第１の復号工程と、
前記第２の符号表を参照して、前記符号化データ中の符号語から係数を順次取得する第２の復号工程と、
前記符号語長と付加ビット長とを積算値として積算して、当該積算値が取得した固定長を超えない場合には前記第１の復号工程で取得した係数を選択し、当該積算値が取得した固定長を超える場合には前記第２の復号工程で取得した係数を順次選択し、選択した係数を出力する係数選択工程と、
を備えることを特徴とする、画像処理方法。
【請求項１２】
コンピュータを、請求項１乃至９の何れか１項に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の符号化技術及び復号技術に関する。
【背景技術】
【０００２】
従来より、画像を圧縮する技術として直交変換を利用した技術が多く使われている。例えば、画像をブロック化し、直交変換を行って直交変換係数を算出する。次に直交変換係数に対して量子化を行い、直交変換係数の絶対値を小さくする。そのようにして算出した値を、以降で付加ビットと呼ぶ。付加ビットに係るゼロのランレングスデータ（以降、ゼロランと呼ぶ）と付加ビット長とを符号化のインデックスとしたエントロピー符号化を行い、結果を符号化データとして出力する。このような方法で符号化されたデータは可変長符号であり、同じ処理を同じサイズの画像に施したとしても、画像の傾向によって出力される符号量は異なり、メモリへの格納やデータ転送等の取り扱いが非常に難しくなるという問題がある。
【０００３】
画像によって異なる符号量を揃えるために、符号量制御が行われている。符号量制御の一方法として打ち切りがある。例えば、特許文献１に記載の符号量制御について、図８を用いて説明する。
【０００４】
図８は、画像の１ブロックに係る符号化データの構造を示したものである。最初の符号語及び付加ビットがＤＣ成分を表わし、続く符号語０と付加ビット０との組から符号語２と付加ビット２との組までがＡＣ成分を表わしている。最後にＥＯＢがついて１ブロックのデータが終了する。
【０００５】
従来例では、平均符号長と呼ばれる累積の符号量と目標符号量とを比較して、ＥＯＢを付ける場所をコントロールすることで符号量制御をしていた。例えば、符号語１や付加ビット１の途中で目標符号量に到達した場合は、（ａ）の部分にＥＯＢを配置し、ＥＯＢ以降の符号語と付加ビットの符号化を打ち切ることで、符号量制御をしていた。逆に１ブロックの符号量が目標符号量よりも小さい場合は、特に符号量制御は行わず、（ｃ）の位置にＥＯＢを配置していた。
【特許文献１】特開平０５−３０４６１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来例では符号語や付加ビットの途中で目標符号量に到達した場合は、符号語の先頭まで遡ってＥＯＢに変更してしまう。例え符号語は目標符号量内に収まっても、その後に付加ビットを続けると目標符号量を超えてしまう場合には、符号語までもが打ち切られていた。
【０００７】
本発明は、付加ビットが目標符号量（固定長）内に収まらない場合には、符号語のみを用いて直交変換係数を符号化することで、目標符号量に収まる情報量を増やすことを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【０００９】
すなわち、
画像の周波数を表す、ゼロランと係数とからなる係数データ群を符号化して、符号化データとして出力する符号化装置を有する画像処理装置であって、
前記符号化装置が、
前記係数データを順次取得する入力手段と、
第１の符号表を参照して、前記係数データを符号語と画像の周波数を表す付加ビットとからなる符号に変換して出力する第１の符号化手段と、
第２の符号表を参照して、前記係数データを符号語へと変換し、当該符号語を前記第１の符号化手段が出力する符号よりもデータ量の少ない符号として出力する第２の符号化手段と、
前記第１の符号化手段が順次出力した符号語の符号語長と付加ビットの付加ビット長とを積算して積算値とし、当該積算値が取得した固定長を超えていない場合には前記第１の符号化手段が出力した符号を選択し、当該積算値が前記固定長を超えていた場合には前記第２の符号化手段が出力した符号を選択して、選択した符号を順次連結して蓄積し、当該蓄積したデータを出力することで、固定長化により欠落する周波数情報を減らす符号選択手段と、
を備えることを特徴とする。
【００１０】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１１】
すなわち、
画像の周波数を表す、ゼロランと係数とからなる係数データ群を符号化して、符号化データとして出力するための手段を備える装置が行う画像処理方法であって、
前記係数データを順次取得する入力工程と、
第１の符号表を参照して、前記係数データを符号語と画像の周波数を表す付加ビットとからなる符号に変換して出力する第１の符号化工程と、
第２の符号表を参照して、前記係数データを符号語へと変換し、当該符号語を前記第１の符号化手段が出力する符号よりもデータ量の少ない符号として出力する第２の符号化工程と、
前記第１の符号化工程で順次出力した符号語の符号語長と付加ビットの付加ビット長とを積算して積算値とし、当該積算値が取得した固定長を超えていない場合には前記第１の符号化工程で出力した符号を選択し、当該積算値が前記固定長を超えていた場合には前記第２の符号化工程で出力した符号を選択して、選択した符号を順次連結して蓄積し、当該蓄積したデータを出力することで、固定長化により欠落する周波数情報を減らす符号選択工程と、
を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、付加ビットが目標符号量（固定長）内に収まらない場合には、符号語のみを用いて直交変換係数を符号化することで、目標符号量に収まる情報量を増やすことが可能である。
【発明を実施するための最良の形態】
【００１３】
以下、本発明に係る実施形態の例を、図面を参照して詳細に述べる。ただし、発明の範囲は以下の実施形態に限定されるものではない。
【００１４】
＜実施形態１＞
本実施形態に係る固定長符号化装置の構成について、図１のブロック図を参照して説明する。
【００１５】
図１において１００は入力部であり、画像を取得して従来の方法で直交変換及び量子化を行い、ゼロ以外の直交変換係数値（以下、単に係数と呼ぶ）とゼロランとを含む、画像の周波数成分を示す係数データ群を生成し、係数データを順次出力する。１０１はサイズ検出部であり、入力部１００から係数データを順次取得して、取得した係数から付加ビットの符号量（以降、付加ビット長と呼ぶ）を計算し、ゼロラン長と続く付加ビット長とをセットにしたデータ（以降、シンボルデータと呼ぶ）を出力する。１０２は第１のシンボルエンコーダであり、シンボルデータをサイズ検出部１０１から取得し、第１の符号表を参照してシンボルデータを符号語へ変換する（第１の符号化手段）。変換した符号語を出力すると共に、符号語のサイズである符号語長と付加ビット長も出力する。１０３は第２のシンボルエンコーダであり、入力部１００からゼロランと係数とを取得し、第２の符号表に従って符号語を出力する（第２の符号化手段）。第２のシンボルエンコーダ１０３が出力する符号語は、単独でゼロランと係数とを復号できる符号となる。第１のシンボルエンコーダ１０２が出力する符号語は、後述の係数処理部１０６が出力した付加ビットと組となって符号となり、係数の復元には符号語と付加ビットの双方が必要である。このため、第２のシンボルエンコーダ１０３は、第１のシンボルエンコーダ１０２と係数処理部１０６とが出力する符号よりもデータ量の少ない符号を出力する。１０４は制御部であり、第１のシンボルエンコーダから取得した符号語長と付加ビット長を符号量として積算して、符号量に応じた制御信号を出力する。１０５は選択部であり、制御部１０４が入力する制御信号に応じて、第１のシンボルエンコーダから取得した符号語と第２のシンボルエンコーダから取得した符号語とのうち一方を選択して出力する（符号選択手段）。１０６は係数処理部であり、入力部１００から取得した係数を付加ビットに変換して出力する。１０７は出力部であり、選択部１０５から取得した符号語と係数処理部１０６から取得した係数とを交互に順次連結しながら蓄積し、固定長での打ち切り処理を行って出力する。
【００１６】
次に各構成要素について詳細に説明していく。サイズ検出部１０１は、入力部１００から取得した係数から付加ビットのサイズを算出し、出力する。第１のシンボルエンコーダ１０２は、サイズ検出部１０１から取得したシンボルデータを、第１の符号表を用いて符号語に変換して出力する。第１の符号表は、ゼロラン長と付加ビット長との組、すなわちシンボルデータと、符号語とを対応付けて相互変換を可能とする表であれば良い。符号表はシンボルエンコーダ内部に論理回路で構成しても良いし、非図示の記憶装置を参照して取得する構成にしても良い。ここでは例として、ＪＰＥＧ標準のハフマン符号表を第１の符号表として使用するものとする。
【００１７】
第２のシンボルエンコーダ１０３は、入力部１００から取得したゼロラン長と係数とから、第２の符号表を参照して符号語を取得し、出力する。第２の符号表は、ゼロラン長と係数との組を、符号語と対応付け、相互変換を可能とする表である。第２の符号表は、第１の符号表とは対応付ける要素が異なる別の符号表であり、ＪＰＥＧ標準の符号表とは異なる符号表である。実施形態１では打ち切りによって固定長から外れてしまった付加ビットが正の最小値だった時に、その付加ビットを復号化することを可能にする第２の符号表を利用する。以下、本実施形態に係る第２の符号表の作成方法について説明する。
【００１８】
第２の符号表は、ゼロラン長と付加ビット長との組と、符号語とを対応付ける原符号表を変換して得た符号表である。原符号表中のゼロラン長、付加ビット長、符号語のセットを用いて、付加ビット長の長さを持ち、最上位ビットが１でその他のビットが０である付加ビットが示す係数と、ゼロラン長との組に対して、符号語を割り当てる。この変換処理を順次行って第２の符号表を取得する。ここで原符号表としては任意の符号表を使うことができるが、例えば第１の符号表でも良く、ＪＰＥＧ標準の符号表でも良い。
【００１９】
例えば、ＪＰＥＧ標準の符号表において、符号語ＣＣが対応している付加ビットのサイズはＮＮビット、ゼロラン長はＬＬであるとする。ＮＮビットで表される正の最小値はバイナリ表記で１００・・・（０はＮＮ−１個続き、値は２の（ＮＮ−１）乗）である。この場合、第２の符号表は、値が２の（ＮＮ−１）乗である係数及びＬＬのゼロラン長に対して、符号語ＣＣを割り当てる。
【００２０】
この場合、符号語が割り当てられない係数とゼロラン長との組が生じる。第２のシンボルエンコーダは、符号語が割り当てられていない係数とゼロラン長との組に対しては、対応する符号語が存在しないことを示す符号語を出力すれば良い。例えば、ＪＰＥＧ標準のＥＯＢ符号を出力する。
【００２１】
ＪＰＥＧ標準の符号語表を例として挙げると、符号語“００”のゼロランは０で、付加ビットのサイズは１である。１ビットで表される正の最小値は１なので、第２の符号表は、ゼロラン「０」及び係数「１」の組に対して、符号語として“００”を対応付ける。符号化の際には、ゼロランが「０」であっても、係数が「１」以外の値の時（つまり「−１」の時）は、ＥＯＢ符号を出力する。図３には、この手順で作成した第２の符号表を、符号語長が２〜４のものについて抜粋して示す。
【００２２】
制御部１０４は、内部に符号量カウンタと符号量判定部を持っており、符号語長及び付加ビット長を積算して、積算値が固定長を超えるかどうかを判定する。なお、固定長は予め制御部１０４内で定義されていても良いし、外部から取得しても良い。入力部１００が１つの画像ブロックの処理を開始する時に、符号量カウンタは初期化される。符号量カウンタは、第１のシンボルエンコーダ１０２から取得した符号語長と付加ビット長とを、符号量として順次積算する。符号量カウンタの値が固定長以下の時は、符号量カウンタは判定信号として“１”を出力するが、固定長を超えた時は判定信号として“０”を出力する。制御部１０４は、符号語長を積算した時に符号量カウンタの値が固定長以下であり、付加ビット長を積算した時に符号量カウンタの値が固定長を超える場合に、制御信号として”１”を出力することで選択部１０５に通知を発する。すなわち、符号語長を加算した際に判定信号が“１”であり、続く付加ビットのサイズを加算した際に判定信号が“０”となる場合に、制御信号として“１”を出力する。一方、符号語長を加算した際に判定信号が“０”となった時は、制御信号として“０”を出力する。即ち、固定長内に符号語だけが完全な形で格納され、付加ビットが不完全な形で格納され、あるいは１ビットも格納されない時に、制御信号として“１”を出力する。それ以外の時は、“０”を出力する。
【００２３】
選択部１０５は、制御部１０４から入力される制御信号に応じて、符号語を選択する。制御信号が“０”であれば、積算値は固定長を超えないものと判断して、第１のシンボルエンコーダからの出力を符号語として出力する。制御信号が“１”であれば、積算値が固定長を超えたものと判断し、第２のシンボルエンコーダからの出力を符号語として出力する。
【００２４】
係数処理部１０６は、入力部１００から取得した係数を付加ビットの形に変換して出力する。変換の方法はＪＰＥＧ標準の方法を用いる。１０７は出力部であり、選択部１０５から取得した符号語と係数処理部１０６から取得した係数とを順次交互に連結し、固定長での打ち切り処理を行って出力する。
【００２５】
以上述べた、本実施形態に係る符号化装置の処理を、図９を参照して説明する。
【００２６】
ステップＳ９０１で、入力部１００は画像を取得して直交変換及び量子化を行い、係数とゼロランとを出力する。ステップＳ９０２で、サイズ検出部１０１は、入力部１００から取得した係数から付加ビット長を計算し、シンボルデータを出力する。
【００２７】
ステップＳ９０３で、第１のシンボルエンコーダ１０２は、シンボルデータをサイズ検出部１０１から取得し、第１の符号表を用いてシンボルデータを符号語へ変換する。変換した符号語を出力すると共に、符号語のサイズである符号語長と付加ビット長も出力する。ステップＳ９０４では、第２のシンボルエンコーダ１０３が、入力部１００からゼロランと係数とを取得し、第２の符号表に従って符号語を出力する。
【００２８】
ステップＳ９０５で、制御部１０４は、第１のシンボルエンコーダから取得した符号語長と付加ビット長とを符号量として積算する。ステップＳ９０６において、制御部１０４は符号量が固定長を超えるか否かを判断し、符号量が固定長を超える場合はステップＳ９０８へ、符号量が固定長を超えない場合はステップＳ９０７へと進む。ステップＳ９０７では、制御部１０４は選択部１０５に制御信号を送り、選択部１０５は第１のシンボルエンコーダ１０２から符号語を取得して出力し、ステップＳ９０９に進む。ステップＳ９０８では、制御部１０４は選択部１０５に制御信号を送り、選択部１０５は第２のシンボルエンコーダ１０３から符号語を取得して出力する。
【００２９】
ステップＳ９０９では、ステップＳ９０７又はステップＳ９０８で取得した符号語がＥＯＢ符号であるかどうかを判断する。ステップＳ９０７又はステップＳ９０８で取得した符号語がＥＯＢ符号では無い場合は、ステップＳ９１０に進む。ステップ９１０では、係数処理部１０６が、入力部１００から係数を取得して、付加ビットへと変換して出力する。最後にステップＳ９１１で、出力部１０７は、選択部１０５から符号語を取得し、係数処理部１０６から付加ビットを取得する。逐次取得する符号語と付加ビットとを交互に連結して符号化データとして格納し、ステップＳ１００１に戻って次の係数の符号化を行う。一方、ステップＳ９０９でステップＳ９０７又はステップＳ９０８で取得した符号語がＥＯＢ符号ではないと判断した場合は、ステップ９１２に進む。ステップＳ９１２では、出力部１０７は格納した符号化データに対し固定長化処理を行って出力する。
【００３０】
次に、本実施形態に係る復号化装置の構成について図２を参照して説明をする。図２において２０１は頭出し部であり、制御部２０５が入力するシフト量に応じて符号をシフトして頭出しを行い、頭出しデータとして出力する。２０２は第１のシンボルデコーダであり、頭出し部２０１から取得した頭出しデータの先頭に位置する符号語を第１の符号表を用いて解読し、対応するシンボルデータを出力する（第１の復号手段）。また、第１のシンボルデコーダ２０２は、頭出しデータに含まれる符号語の符号語長と付加ビット長も出力する。２０３は付加ビット処理部であり、第１のシンボルデコーダ２０２から取得したシンボルデータを用い、頭出し部２０１から取得した頭出しデータから付加ビットを切り出し、係数に変換してゼロランと共に出力する。２０４は第２のシンボルデコーダであり、頭出し部２０１から取得した頭出しデータの先頭に位置する符号語を第２の符号表を用いて解読し、対応するゼロランと係数とを出力する（第２の復号手段）。２０５は制御部であり、第１のシンボルデコーダ２０２から符号語長と付加ビット長とを取得し、符号量を計算して、符号量に応じた制御信号とシフト量とを出力する。２０６は選択部であり、制御部２０５が入力する制御信号に応じてゼロラン及び係数とを選択して出力する（係数選択手段）。２０７は出力部であり、選択部２０６から取得したゼロラン及び係数を、従来の方法で逆量子化及び逆直交変換し、画像を取得して出力する。
【００３１】
次に、各構成要素について詳細に説明していく。頭出し部２０１はビット単位でシフトが可能なシフタで構成されている。制御部２０５から取得するシフト量に応じて、取得した符号化データに対してシフト処理を行い、符号の頭出しを行って頭出しデータとして出力する。
【００３２】
第１のシンボルデコーダ２０２は、第１の符号表を参照して、符号化データ中の符号語を解読する。具体的には、頭出しデータの先頭に合致する符号語を第１の符号表から検索し、対応するシンボルデータを出力する。第１の符号表は、論理回路でシンボルデコーダ２０２の内部に構成していても良いし、ＬＵＴにアクセスして参照する方式でも良い。また、第１のシンボルデコーダ２０２は、符号語を解読してシンボルデータを出力すると共に、その符号語長も出力する。
【００３３】
付加ビット処理部２０３は、頭出し部２０１が出力した頭出しデータから、付加ビットを切り出し、係数に変換してゼロランとセットにして出力する。その際、第１のシンボルデコーダ２０２から取得したシンボルデータに含まれる付加ビット長と、符号語長とを、付加ビットの切り出しに用いる。
【００３４】
第１のシンボルデコーダ２０２は、制御部２０５から固定長までの残りのビット数を取得し、符号化データ中の符号語を、残りのビット数以下の範囲で第２の符号表を参照して解読する。具体的には、頭出しデータの先頭に残りのビット数以下の範囲で合致する符号語を第２の符号表から検索し、対応するゼロランと係数とを出力する。もし対応するゼロランと係数が見つからなければ｛残りのビット数＋１｝の値を出力する。第２のシンボルデコーダ２０４は、第一のシンボルデコーダ２０２が符号語と付加ビットを参照してゼロランと係数を出力するのと異なり、符号語だけを参照してゼロランと係数を出力する。第２の符号表に従うと、符号語が決まれば出力するゼロランと係数は一意に決まるので、第２のシンボルデコーダ２０４は付加ビット処理部を介すことなしに直接ゼロランと係数とを出力する。
【００３５】
制御部２０５は内部に符号量カウンタを持っており、１ブロックの固定長符号化データの復号を開始する際に、符号量カウンタを初期化する。まず、固定長から符号量カウンタの値を減算して固定長までの残りのビット数を算出し第１のシンボルデコーダへ出力する。次に、第１のシンボルデコーダ２０２から符号語長と付加ビットのサイズとを取得すると、符号語長及び付加ビット長をカウンタに積算する。この際、符号語長を積算した時点でカウンタ値が固定長を超えた場合には、制御信号として“２”を、付加ビット長を積算した時点でカウンタ値が固定長を超えた場合には、制御信号として“１”を出力する。一方、カウンタ値が固定長の符号量以下の時は、制御信号として“０”を出力する。すなわち、第１のシンボルデコーダ２０２が処理した符号語と付加ビットの両方が固定長に収まっており、打ち切られていない場合は制御信号“０”を選択部２０６に入力する。また、第１のシンボルデコーダ２０２が処理した符号語が固定長に収まっていない場合は、符号語が打ち切りにより欠落しているか、あるいは１ビットも格納されておらず、この時は制御信号として“２”を選択部２０６に入力する。また、第１のシンボルデコーダ２０２が処理した付加ビットが固定長に収まっていない場合は、付加ビットが打ち切りにより欠落しているか、あるいは１ビットも格納されておらず、この時は制御信号として”１”を選択部２０６に入力する。
【００３６】
選択部２０６は、制御部２０５が入力した制御信号に応じて、ゼロランと係数を順次選択して出力する。制御信号が“０”の時は、付加ビットは固定長化により打ち切られていないと判断し、付加ビット処理部２０３から取得したゼロランと係数とを選択する。制御信号が“１”の時は、付加ビットは固定長化により打ち切られていると判断し、第２のシンボルデコーダ２０４から取得したゼロランと係数とを出力する。制御信号が“２”の時は、符号語は固定長化により打ち切られていると判断し、残りの係数が全てゼロであるようなゼロランと係数を出力する。
【００３７】
出力部２０７は、選択部２０６から取得したゼロラン及び係数を、従来の方法で逆量子化及び逆直交変換し、画像を取得して出力する。
【００３８】
次に、本実施形態に係る復号化装置が行う処理を、図１０を参照して説明する。
【００３９】
ステップＳ１００１において、頭出し部２０１は符号化データを取得する。ステップＳ１００２で、頭出し部２０１は制御部２０５が入力するシフト量に応じて符号をシフトして頭出しを行い、頭出しデータとして出力する。
【００４０】
ステップＳ１００３で、第１のシンボルデコーダ２０２は、制御部２０５から固定長までの残りのビット数を取得する。固定長までの残りのビット数は、制御部２０５が固定長から符号量カウンタの値を減算して算出する。そして、頭出し部２０１から取得した頭出しデータを第１の符号表を用いて解読し、対応するシンボルデータを出力する。また、第１のシンボルデコーダ２０２は、頭出しデータに含まれる符号語の符号語長と付加ビット長も出力する。もし対応するゼロランと係数が見つからなければ｛残りのビット数＋１｝の値を出力する。ステップＳ１００４で、付加ビット処理部２０３は、第１のシンボルデコーダ２０２から取得したシンボルデータを用い、頭出し部２０１から取得した頭出しデータから付加ビットを切り出し、係数に変換してゼロランと共に出力する。ステップＳ１００５では、第２のシンボルデコーダ２０４が、頭出し部２０１から取得した頭出しデータを第２の符号表を用いて解読し、対応するゼロランと係数とを出力する。
【００４１】
ステップＳ１００６で制御部２０５は、第１のシンボルデコーダ２０２から符号語長と付加ビット長とを取得し、符号量として積算する。ステップＳ１００７で制御部２０５は、符号量が固定長を超えるか否かを判断する。符号量が固定長を超える場合は、ステップＳ１０１０に進む。符号量が固定長以下の場合は、ステップＳ１００８に進む。
【００４２】
ステップＳ１００８で、制御部２０５は選択部２０６に制御信号を送り、選択部２０６は付加ビット処理部２０３から取得したゼロランと係数とを出力する。続いてステップＳ１００９で制御部２０５は符号量をシフト量として頭出し部２０１に入力し、ステップＳ１００２に戻る。
【００４３】
ステップＳ１０１０では、ステップＳ１００６において符号語長を積算した時点でカウンタ値が固定長を超えた場合には、選択部２０６は残りの係数が全てゼロであるようなゼロランと係数を出力する。また、ステップＳ１００６において付加ビット長を積算した時点でカウンタ値が固定長を超えた場合には、選択部２０６は第２のシンボルデコーダ２０４から取得したゼロランと係数とを出力する。そして、ステップＳ１０１１で、出力部２０７は選択部２０６から取得したゼロラン及び係数を、従来の方法で逆量子化及び逆直交変換し、画像を取得して出力する。
【００４４】
以上説明したように、実施形態１に係る符号化装置は、２つのシンボルエンコーダを備え、生成する固定長の符号化データにおいて付加ビットが打ち切られずに格納できるか否かに応じてシンボルエンコーダを切り替える。また、実施形態１に係る復号化装置は、２つのシンボルデコーダを備え、取得した固定長の符号化データにおいて付加ビットが打ち切られていないか否かに応じてシンボルデコーダを切り替える。よって、固定長符号化における目標符号量による打ち切りによって、符号語のみしか符号化データに格納できず、続く付加ビットが不完全となる場合であっても、係数の復号を可能とする。よって、固定長化により欠落する周波数情報を減らし、画像品質を向上できる。
【００４５】
実施形態１に係る第２の符号表の取得のために、上述の通り、原符号表中のゼロラン長、付加ビット長、符号語のセットを用いた変換処理を行った。この時、付加ビット長の長さを持ち、最上位ビットが１でその他のビットが０である付加ビットが示す係数と、ゼロラン長との組に対して、符号語を割り当てる変換処理を順次行った。しかし、付加ビットで表すことの出来る範囲の値であれば、必ずしも正の最小値である必要はない。例えば、原符号表中のゼロラン長、付加ビット長、符号語のセットを用いて、付加ビット長の長さを持ち、最上位ビットが０でその他のビットが１である付加ビットが示す係数と、ゼロラン長との組に対して、符号語を割り当てる。この変換処理を順次行って、第２の符号表を得ても良い。しかし、係数の出現確率を考慮すると付加ビットとしては正の最小値（１００・・・）か、負の最大値（０１１・・・）を選ぶのが適当であろう。
【００４６】
＜実施形態２＞
実施形態１においては、固定長符号の最後に符号語は格納されたが、後続する付加ビットが打ち切られることなく格納されなかった場合の処理について述べた。すなわち、末端の付加ビットを打ち切らないと格納できない場合、符号化においては第２のシンボルエンコーダ１０３を用いて符号化を行う。また、復号化においては第２のシンボルエンコーダ１０３に対応する第２のシンボルデコーダ２０４を用いて復号化することで、付加ビットを利用せずに符号化・復号化を可能にする。実施形態２では実施形態１よりも、付加ビットを使用せずに符号化が可能な係数の範囲を広くする。具体的には、実施形態１では付加ビットが正の最小値である場合に符号化を行っていたものを、実施形態２では付加ビットが何れかの正の値である場合に復号化を行う。
【００４７】
装置の構成は実施形態１と変わらず、第２のシンボルエンコーダ１０３が用いる第２の符号表が異なるのみであるので、第２の符号表の作成方法を説明する。
【００４８】
第２の実施形態に係る第２の符号表は、係数に含まれるゼロラン長と係数を変換して得る付加ビット長との組と、符号語とを対応付ける原符号表を変換して得た符号表である。原符号表中のゼロラン長、付加ビット長、符号語のセットを用いて、付加ビット長の長さを持ち、最上位ビットが１である付加ビットが示す任意の係数と、ゼロラン長との組に対して、符号語を割り当てる。また、符号語に対して、付加ビット長の長さを持ち、最上位ビットが０でその他のビットが１である付加ビットが示す係数と、ゼロラン長との組を割り当てる。この変換処理を順次行って得た符号表を第２の符号表とする。
【００４９】
例えば、ＪＰＥＧ標準の符号表において、符号語ＣＣが対応している付加ビットのサイズはＮＮビット、ゼロラン長はＬＬであるとする。付加ビット長の長さを持つビット列であって、最上位ビットが１である係数とは、バイナリ表記で１＊＊・・（＊は任意の値であり、＊はＮＮ−１個続く）の値を持つ係数である。この場合、第２の符号表は、値が１＊＊・・である係数及びＬＬのゼロラン長に対して、符号語ＣＣを割り当てる。すなわち、係数が正の値を持ち、ゼロラン長がＬＬである場合に、符号語ＣＣを割り当てる。一方、係数が負の値の時は、ＥＯＢを示す符号語を出力すれば良い。
【００５０】
図４には、ＪＰＥＧ標準の符号語表を変換して得た実施形態２に係る第２の符号表について、符号語長が２，３，４の時を抜粋して示す。図４（ａ）は符号化に用いる第２の符号表であり、取得した係数とゼロランとが符号語表の中にあれば、左に書かれている符号語を出力し、無ければＥＯＢを示す符号を出力する。図４（ｂ）は復号化に用いる第２の符号表であり、符号語を取得して、係数とゼロランを出力する。
【００５１】
本実施形態では、固定長化により末端の付加ビットが打ち切られる場合、付加ビットの示す係数が正の値であれば、符号化及び復号化の後、付加ビット長のビットで示される正の最小値を係数として出力する。係数が正の値だった場合には、復号化後に係数の値は変わってしまうものの、元の係数に近い値を復元することができる。
【００５２】
＜実施形態３＞
次に実施形態３を説明する。実施形態３では、より出現頻度の高い係数を優先的に、付加ビットを用いずに符号語のみで符号化するよう作成した、第２の符号表を用いて符号化を行う。具体的には、付加ビット長の小さい係数を優先的に符号化できるように、第２の符号表を構成する。実施形態３でも装置の構成は実施形態１と変わらず、変更があるのは第二のシンボルエンコーダ１０３と第二のシンボルデコーダ２０４が使用する第２の符号表のみである。よって、第２の符号表の作成方法のみを説明する。
【００５３】
実施形態３においても、第２の符号表は、ゼロラン長と付加ビット長との組と、符号語とを対応付ける原符号表を変換して得た符号表である。当該原符号表から、特定の長さの符号語長に係るゼロラン長、付加ビット長、符号語のセットを抽出し、付加ビット長が最も小さいセットから順番に選択を行う。選択したセットの付加ビット長を持つ付加ビットによって表される複数の係数を取得し、当該係数と当該ゼロラン長との組を前記特定の長さの符号語のいずれかに順次割り当てる。この処理を他の長さの符号語についても順次行って、第２の符号表を取得する。
【００５４】
本実施形態に係る第２の符号表を作成する方法について、図５のフローチャートを用いて詳細に説明する。図５は、符号語長がＬビットである符号語と、付加ビット長及びゼロランの組とを対応付ける符号表を、符号語長がＬビットである符号語と、係数及びゼロラン長の組とを対応付ける符号表に変換する処理を示す。なお、変換元の符号表を符号表Ａ、変換先の符号表を符号表Ｂとし、図５の処理の開始時点では、符号表Ｂは符号表Ａを複製したものである。
【００５５】
ステップＳ５０１では、符号表Ａ及び符号表Ｂにおいて、符号語長がＬビットである符号語を並べ替える。並べ替えの順番は、まず符号語を付加ビットのサイズが小さい順に並べ替える。付加ビットのサイズが同じ符号語がある場合は、符号語自体の値が小さい順に並べ替えを行う。ここで、ＥＯＢを表わす符号語とＺＲＬを表わす符号語は除いておき、それらの符号語には本来の意味を持たせることにする。次に、並べ替えの終わった符号表を用いてゼロランと係数の対応付けを行っていく。符号表Ａの符号を読み出して符号表Ｂに対応付けを行うのだが、対応付けが終わった符号表Ｂ中の符号語には対応付け済みフラグを付加するものとする。符号表Ｂにおいてまだ対応付けを行っていない符号語の中で先頭の符号語をＣ０、末尾の符号語をＣ１として以降の説明を行う。つまり、ステップＳ５０１終了時のＣ０は、符号語長がＬビットで、付加ビットのサイズが最小で、付加ビットのサイズが最小の符号語の中で符号語自体の値が最小の符号語である。また、Ｃ１は、符号語長がＬビットで、付加ビットのサイズが最大で、付加ビットのサイズが最大の符号語の中で符号語自体の値が最大の符号語である。
【００５６】
ステップＳ５０２では、付加ビット長を示すパラメータＳを０に初期化し、ステップＳ５０３へ進む。
【００５７】
ステップＳ５０３では、Ｓを１だけインクリメントし、キューＱ０を空に初期化して、ステップＳ５０４へ進む。
【００５８】
ステップＳ５０４では、符号表Ａに付加ビット長がＳである符号語がいくつあるかを調べる。ここでは、そのような符号語がＮ個あったとして、ステップＳ５０５へ進む。Ｎは符号表において、付加ビット長Ｓと組になるゼロラン長の個数に相当する。
【００５９】
ステップＳ５０５では、ステップＳ５０６で「Ｙｅｓ」と判定することを２（Ｓ−１）回行ったかを判定し、行っていなければステップＳ５０６へ進む。一方、行っていればステップＳ５０３へ進む。Ｓビットの付加ビットに対応する係数は正負合わせて２×２（Ｓ−１）個ある。ステップＳ５０６以降では正負の係数を２つずつ処理するため、ステップＳ５０５では付加ビット長がＳの場合に以下の処理を２（Ｓ−１）回繰り返す。
【００６０】
ステップＳ５０６では、ステップＳ５０７からステップＳ５１６までの処理をＮ回行ったかを判定し、行っていなければステップＳ５０７へ進む。一方、行っていればステップＳ５０４へ進む。すなわち、１つの係数に対して、Ｎ個のゼロラン長を割り当てるまで、以下の処理を繰り返す。
【００６１】
ステップＳ５０７では、ステップＳ５０５でのループが１回目かどうかを判断し、１回目であればステップＳ５０８へ進む。２回目以降であればステップＳ５１２へ進む。ここではループの回数がＫ回目であったとする。
【００６２】
ステップＳ５０８以降は、付加ビット長がＳである係数のうち、正の最小の係数及び負の最大の係数を割り当てる処理である。正の最小の係数は符号表Ｂの先頭から、負の最大の係数は符号表Ｂの末尾から、順番に割り当てていく。ステップＳ５０８では、符号語Ｃ０が存在するかどうかを判断し、存在しない場合は、フローを終了する。一方、存在する場合は、符号語Ｃ０からゼロラン長Ｌ０を取得し、ゼロラン長Ｌ０をキューＱ０に格納して、ステップＳ５０９へ進む。ゼロラン長Ｌ０をキューＱ０に格納するのは、付加ビット長Ｓと組になっているゼロラン長を記憶しておき、付加ビット長Ｓに対応する係数を割り当てる時に付加ビット長Ｓと組になっているゼロラン長を割り当てるためである。
【００６３】
ステップＳ５０９では、符号語Ｃ０に係数として２（Ｓ−１）を、ゼロラン長としてＬ０を対応付け、対応付け済みフラグを付加する。次にステップＳ５１０へ進む。
【００６４】
ステップＳ５１０では、符号語Ｃ１が存在するかどうかを判断し、存在しない場合は、フローを終了する。一方、存在する場合は、ステップＳ５１１へ進む。
【００６５】
ステップＳ５１１では、符号語Ｃ１に係数として−２（Ｓ−１）を、ゼロラン長としてＬ０を対応付け、対応付け済みフラグを付加する。次にステップＳ５１６へ進む。
【００６６】
一方、ステップＳ５１２以降は、係数（２（Ｓ−１）＋（Ｋ−１））及び（−２（Ｓ−１）−（Ｋ−１））を符号表Ｂに割り当てる処理である。ステップＳ５０８以降の処理とは異なり、正の係数及び負の係数の双方を、符号表Ｂの末尾から順番に割り当てていく。ステップＳ５１２では、符号語Ｃ１が存在するかどうかを判断し、存在しない場合は、フローを終了する。一方、存在する場合は、キューＱ０からゼロラン長Ｌ０を取得し、Ｌ０を再びキューＱ０に格納して、ステップＳ５１３へ進む。
【００６７】
ステップＳ５１３では、符号語Ｃ１に係数として２（Ｓ−１）＋（Ｋ−１）を、ゼロラン長としてＬ０を対応付け、対応付け済みフラグを付加する。次にステップＳ５１４へ進む。
【００６８】
ステップＳ５１４では、符号語Ｃ１が存在するかどうかを判断し、存在しない場合は、フローを終了する。一方、存在する場合は、ステップＳ５１５へ進む。
【００６９】
ステップＳ５１５では、符号語Ｃ１に係数として−２（Ｓ−１）−（Ｋ−１）を、ゼロラン長としてＬ０を対応付け、対応付け済みフラグを符号に対して付加する。次にステップＳ５１６へ進む。
【００７０】
このフローを符号語の存在する全ての符号語長Ｌに関して行い、符号表Ｂを完成させる。
【００７１】
ここで、符号語のビット数が１６ビットの時の例を示す。ここではＪＰＥＧ標準の符号語を例に用いて説明する。符号語のビット数が１６ビットの符号語は“１１１１１１１１１０００００１０”から“１１１１１１１１１１１１１１１０”までの１２５個ある。これらを付加ビットのサイズが小さい順、付加ビットのサイズが同じであれば符号語自体の値の小さい順に並べなおす（ステップＳ５０１）と、図６のようになる。図６は変換の元となる符号表Ａであって、図６から図７に示す符号表Ｂを生成する。図６では説明に必要な部分だけを抜粋し、途中を省略した図を示している。
【００７２】
まず、図６の中で付加ビットが１ビットの符号語は２つある（ステップＳ５０４）。１ビットの符号語の中で符号語自体の値が最も小さい符号語は“１１１１１１１１１１１０１０１１”（図６中、Ｃ００１。以下同じ）であり、そのゼロラン長は１４であるから、Ｌ０を１４とする（ステップＳ５０８）。この符号語に係数として１を対応付ける（ステップＳ５０９）。一方、付加ビットのサイズが最大であり、且つ最も符号語自体の値の大きい符号語は“１１１１１１１１１１１１１１１０”（Ｃ１２５）である。よって、この符号語に係数−１を対応付けると共に、ゼロラン長としてＬ０、すなわち１４を対応付ける（ステップＳ５１１）。
【００７３】
続いて、Ｓ５０６での２回目のループへ移行する。残った符号語の中で、付加ビットのサイズが１であり、且つ符号語自体の値が最も小さい符号語は“１１１１１１１１１１１１０１０１”（Ｃ００２）であり、ゼロラン長は１５である。従って、Ｌ０を１５として（ステップＳ５０８）、この符号語に係数１を対応付ける（ステップＳ５０９）。一方、残った符号語の中で付加ビットのサイズが最大であり、且つ最も符号語自体の値の大きい符号語は“１１１１１１１１１１１１０１００”（Ｃ１２４）である。よって、この符号語に係数−１を対応付けると共に、ゼロラン長にＬ０、すなわち１５を対応付ける（ステップＳ５１６）。
【００７４】
付加ビットが１ビットの符号語が終了したので、次は付加ビットが２ビットの符号語の対応付けを行う。付加ビットが２ビットの符号語は全部で７個あり（ステップＳ５０４）、これらにまず係数２，−２との対応付けを行う（ステップＳ５０７でのＹｅｓ側）。付加ビットが１ビットの時と同様の手順を繰り返すと“１１１１１１１１１０１１１１１０”（Ｃ００３）に係数２を対応付ける（ステップＳ５０９）。一方、“１１１１１１１１１１１０１０１０”（Ｃ１２３）に係数−２を対応付け、ゼロラン「９」を対応付ける（ステップＳ５１１）。このような手順で“１１１１１１１１１０１１１１１０”（Ｃ００３）から“１１１１１１１１１１１１０１１０”（Ｃ００９）までプラスの係数を対応付ける。また、“１１１１１１１１１１１０１０１０”（Ｃ１２３）から“１１１１１１１１１０１１０１０１”（Ｃ１１７）までマイナスの係数を対応付ける。合計７回のループを行う（ステップＳ５０６）ことで、符号語の対応付けを行う。
【００７５】
係数２，−２となる符号語が全て終わると、次に３，−３の対応付けを行う（ステップＳ５０７でのＮｏ側）。すなわち、“１１１１１１１１１０１０１１０１”（Ｃ１１６）に係数３を対応付け（ステップＳ５１３）、“１１１１１１１１１０１００１０１”（Ｃ１１５）に係数−３を対応付ける（ステップＳ５１５）。これらの時に、ゼロラン長としては１回目のループ時の符号語“１１１１１１１１１０１１１１１０”（Ｃ００３）と同じゼロラン長「９」を、キューから取得して対応付ける。これを７回繰り返す（ステップＳ５０６）。以上で、Ｓ５０５のループにおいて処理を２回行ったと判断できるので、次の付加ビットのサイズが３の場合の処理に移行する（Ｓ５０３）。
【００７６】
以上の手順で作成した符号語表を図７に示す。図７では図６に載せた符号語と同じ符号語を記載した。上記では符号語長が１６ビットの時を例にして説明したが、これを全ての符号語長に対して行う。そして、このような手順で作成された符号表を実施形態１に示した符号化装置のシンボルエンコーダ、復号化装置のシンボルデコーダに使用する。
【００７７】
＜実施形態４＞
以上の実施形態では、図１又は図２に示した各装置を構成する各部はハードウェアで実装しているものとしているが、ソフトウェアで実装しても良い。この場合、係るソフトウェアは、コンピュータが有する各種記憶装置内に保持されており、ＣＰＵがこのソフトウェアを実行することで、コンピュータは、図１又は図２に示した各部の機能を実現することになる。
【００７８】
図１１は、本実施形態適用可能なコンピュータのハードウェア構成を示すブロック図である。コンピュータ１１０１は、一般に普及しているパーソナルコンピュータ等の汎用の情報処理装置である。コンピュータ１１０１の内部では、バス１１０７により後述する各ブロックが接続され、種々のデータの受け渡しが可能である。
【００７９】
なお、本コンピュータ１１０１を適用する装置によっては、図１１に示した全ての構成要素は必須なものではないので、適宜省略しても良い。また、同種の機能を有するハードウェアで置換しても良いし、複数のコンピュータ機体によってコンピュータ１１０１が構成されていても良い。
【００８０】
図１１において１１０２はＣＰＵで、主記憶装置１１０３にロードされているプログラムやデータを用いて本コンピュータ１１０１全体の制御を行うと共に、本コンピュータ１１０１を適用した画像処理装置が行う上述の各処理を実行する。
【００８１】
１１０３はＲＡＭに代表される主記憶装置である。主記憶装置１１０３は、各種記憶装置から読み込んだプログラムやデータを一時的に記憶する為のエリアを有する。記憶装置には、ＨＤＤ（ハードディスクドライブ）１１０４、ＣＤドライブ１１０９、ＤＶＤドライブ１１１０、ＦＤＤ（フロッピー（登録商標）ディスクドライブ）１１１１等を含む。更に主記憶装置１１０３は、スキャナ１１１７から、Ｉ／Ｆ（インターフェース）１１１５を介して取得した画像のデータを一時的に記憶するためのエリアも有する。更に主記憶装置１１０３は、ＣＰＵ１１０２が各種の処理を実行する際に用いるワークエリアも有する。以上を含め、主記憶装置１１０３は、各種の情報記録場所を適宜提供することができる。
【００８２】
１１０４はＨＤＤで、ここにはＯＳ（オペレーティングシステム）や、各種の画像（文書画像を含む）を保持している。更にＨＤＤ１１０４には、図１１が示す各部の機能をＣＰＵ１１０２に制御させるための、あるいは本コンピュータ１１０１を適用した画像処理装置３０が行う上述の各処理をＣＰＵ１１０２に実行させるためのプログラムやデータも保存されている。ＨＤＤ１１０４が保持しているプログラムやデータは、ＣＰＵ１１０２による制御に従って主記憶装置１１０３に適宜ロードされ、ＣＰＵ１１０２による処理対象となる。なお、主記憶装置１１０３に記憶するものとして説明した情報の幾つかについてはＨＤＤ１１０４に保存するようにしても良い。
【００８３】
１１０５はビデオコントローラで、主記憶装置１１０３やＨＤＤ１１０４等から受けた画像データや文字データといった表示データを信号としてモニタ１１０６に送出するものである。モニタ１１０６はＣＲＴや液晶画面等により構成されており、ビデオコントローラ１１０５から受けた信号に基づいた画像や文字等を表示する。
【００８４】
１１０８は、本コンピュータ１１０１にプリンタ１１１６を接続するためのＩ／Ｆである。本コンピュータ１１０１はこのＩ／Ｆ１１０８を介してプリンタ１１１６に対して印刷データを送信し、プリンタ１１１６が送信するプリンタ１１１６の状態情報を受信できる。
【００８５】
１１０９はＣＤドライブで、記憶媒体としてのＣＤに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１１０４や主記憶装置１１０３等に送出する。
【００８６】
１１１０はＤＶＤドライブで、記憶媒体としてのＤＶＤに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１１０４や主記憶装置１１０３等に送出する。
【００８７】
１１１１はＦＤＤで、記憶媒体としてのフロッピー（登録商標）ディスクに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１１０４や主記憶装置１１０３等に送出する。
【００８８】
１１１３、１１１４はそれぞれ、操作入力装置としてのマウス、キーボードである。本コンピュータ１１０１のユーザは、このマウス１１１３やキーボード１１１４を操作することで、各種の指示をＣＰＵ１１０２に対して入力することができる。
【００８９】
１１１２は、キーボード１１１４、マウス１１１３をバスに接続するためのＩ／Ｆである。マウス１１１３やキーボード１１１４からユーザが入力した操作指示は信号としてＩ／Ｆ１１１２を介してＣＰＵ１１０２に送出される。
【００９０】
１１１５は、原稿やフィルム等を読み取ることで画像データを生成するスキャナ１１１７を本コンピュータ１１０１に接続するためのものである。スキャナ１１１７が生成した画像データはこのＩ／Ｆ１１１５を介してＨＤＤ１１０４や主記憶装置１１０３等に送出される。
【００９１】
１１１８は、他のコンピュータ等の電子機器との情報をやりとりするためのＩ／Ｆである。ＣＰＵ１１０２の指示によりネットワーク１１１９から取得された画像データを含む情報は、このＩ／Ｆ１１１８を介してＨＤＤ１１０４や主記憶装置１１０３等に送出される。
【００９２】
＜その他の実施形態＞
また、本発明の目的は、以下のようにすることによっても達成されることは言うまでもない。即ち、前述した実施形態の機能を実現するコンピュータプログラムのコードを記録した記録媒体（又は記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード、及びそれを記録した記録媒体は本発明を構成することになる。
【００９３】
また、コンピュータが読み出したコンピュータプログラムのコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う場合がある。その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【００９４】
更に、記録媒体から読み出されたコンピュータプログラムのコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることも言うまでもない。
【図面の簡単な説明】
【００９５】
【図１】実施形態１に係る画像符号化装置を示すブロック図である。
【図２】実施形態１に係る画像復号化装置を示すブロック図である。
【図３】実施形態１において第２のシンボルエンコーダ及び第２のシンボルデコーダが参照する符号表である。
【図４】実施形態２において第２のシンボルエンコーダが参照する符号表と、第２のシンボルデコーダで参照する符号表である。
【図５】実施形態３に係る符号語表を作成するフローチャートである。
【図６】図５のステップＳ５０１で符号語の並べ替えを行った後の符号表である。
【図７】実施形態３において第２のシンボルエンコーダ及び第２のシンボルデコーダが参照する符号表である。
【図８】従来の打ち切りによる符号量制御方法を示す図である。
【図９】実施形態１に係る画像符号化装置の処理を示すフローチャートである。
【図１０】実施形態１に係る画像復号化装置の処理を示すフローチャートである。
【図１１】実施形態４に係るコンピュータの電気的構成を示すブロック図である。
【符号の説明】
【００９６】
１００  入力部
１０１  サイズ検出部
１０２  第１のシンボルエンコーダ
１０３  第２のシンボルエンコーダ
１０４  制御部
１０５  選択部
１０６  係数処理部
１０７  出力部
２０１  頭出し部
２０２  第１のシンボルデコーダ
２０３  付加ビット処理部
２０４  第２のシンボルデコーダ
２０５  制御部
２０６  選択部
２０７  出力部
【図１】
2010118871.tif 000003
【図２】
2010118871.tif 000004
【図３】
2010118871.tif 000005
【図４】
2010118871.tif 000006
【図５】
2010118871.tif 000007
【図６】
2010118871.tif 000008
【図７】
2010118871.tif 000009
【図８】
2010118871.tif 000010
【図９】
2010118871.tif 000011
【図１０】
2010118871.tif 000012
【図１１】
2010118871.tif 000013