(57)【要約】  【課題】  処理時間が短く、必要なメモリ量が小さく、高い圧縮性能を発揮し得るデータ符号化装置等を提供する。  【解決手段】  ブロック単位のデータを適応的に予測し予測誤差データを算出する予測部１２および減算器１３と、予測誤差データを絶対値化する絶対値化部１４と、絶対値化された予測誤差データが連続して所定の閾値以下となる数を検出し、検出した数が所定数となるランセットの数を検出する平坦度検出部１５と、検出したランセットの数に応じて予め記憶している複数の符号化テーブルの中の何れか一の符号化テーブルを選択するハフマンテーブル選択部１６と、選択された符号化テーブルに基づいて予測誤差データを符号化し符号化データを生成するハフマン符号化部１７と、を備えたデータ符号化装置１。【選択図】図１
2006345320.tif 000002
【特許請求の範囲】
【請求項１】
予め設定された複数の符号化テーブルを記憶する符号化テーブル記憶手段と、
データが連続して所定の範囲内となる数を検出するためのランカウンタと、
上記ランカウンタにより検出した数が所定数となるランセットの数を検出するためのランセットカウンタと、
上記ランセットカウンタにより検出したランセットの数に応じて、上記符号化テーブル記憶手段に記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択する符号化テーブル選択手段と、
上記符号化テーブル選択手段により選択された符号化テーブルに基づいて上記データを符号化し符号化データを生成する符号化手段と、
を具備したことを特徴とするデータ符号化装置。
【請求項２】
過去に読み出された符号化対象データに基づき、注目する符号化対象データを予測し予測データを算出する予測手段と、
注目する符号化対象データと、上記予測手段により算出された予測データと、の差分をとることにより予測誤差データを生成する予測誤差演算手段と、
をさらに具備し、
上記データは、上記予測誤差演算手段により生成された予測誤差データであることを特徴とする請求項１に記載のデータ符号化装置。
【請求項３】
上記符号化テーブルは、上記データの有意ビット数を表すカテゴリと、このカテゴリに対応する符号語と、の対応関係を表にしたものであり、
上記符号化手段は、上記符号語と上記データの有意ビット部分とを対応付けて符号化データを生成するものであることを特徴とする請求項１に記載のデータ符号化装置。
【請求項４】
上記所定の範囲は複数種類設定可能となっており、
上記ランカウンタは、設定された複数種類の所定の範囲のそれぞれに対して、データが連続して該所定の範囲内となる数を検出するものであり、
上記ランセットカウンタは、上記ランカウンタにより検出した数が所定数となるランセットの数を、上記複数種類の所定の範囲のそれぞれに対応して、検出するものであり、
上記符号化テーブル選択手段は、上記ランセットカウンタにより上記複数種類の所定の範囲のそれぞれに対応して検出されたランセットの数に応じて、上記符号化テーブル記憶手段に記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択するものであることを特徴とする請求項３に記載のデータ符号化装置。
【請求項５】
上記所定の範囲は、上記データの絶対値が所定の閾値以下となる範囲であり、
上記ランカウンタは、設定された複数種類の閾値のそれぞれに対して、データの絶対値が連続して該所定の閾値以下となる数を検出するものであることを特徴とする請求項４に記載のデータ符号化装置。
【請求項６】
上記符号化テーブル記憶手段は、最も符号長の短い符号語が割り当てられるカテゴリが異なる複数の符号化テーブルを記憶するものであり、
上記符号化テーブル選択手段は、上記ランセットカウンタにより上記複数種類の閾値のそれぞれに対応して検出されたランセットの数が所定数以上であるか否かを各々判定し、所定数以上となった最も低い閾値が、低いときには平坦度が高く、高いときには平坦度が低いと判定し、平坦度が高いときには平坦度が低いときに比して、最も符号長の短い符号語が割り当てられるカテゴリがより小さい有意ビット数を表すカテゴリとなる符号化テーブルを選択するものであることを特徴とする請求項５に記載のデータ符号化装置。
【請求項７】
上記符号化テーブル選択手段により選択された符号化テーブルの種類を示す情報と、上記符号化手段により生成された符号化データと、は一のファイルとして出力されるものであることを特徴とする請求項１に記載のデータ符号化装置。
【請求項８】
データが連続して所定の範囲内となる数を検出し、
検出した数が所定数となるランセットの数を検出し、
検出したランセットの数に応じて、予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、
選択した符号化テーブルに基づいて上記データを符号化し符号化データを生成する、
ことを特徴とするデータ符号化方法。
【請求項９】
データが連続して所定の範囲内となる数を検出し、
検出した数が所定数となるランセットの数を検出し、
検出したランセットの数に応じて、予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、
選択した符号化テーブルに基づいて上記データを符号化し符号化データを生成する、
処理をコンピュータに実行させるためのプログラム。
【請求項１０】
データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化するためのデータ復号化装置であって、
上記選択された符号化テーブルの種類を示す情報に基づいて、符号化に用いられた符号化テーブルを再現する符号化テーブル再現手段と、
上記符号化テーブル再現手段により再現された符号化テーブルに基づいて、上記符号化データを復号化しデータを再現する復号化手段と、
を具備したことを特徴とするデータ復号化装置。
【請求項１１】
データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化するためのデータ復号化方法であって、
上記選択された符号化テーブルの種類を示す情報に基づいて、符号化に用いられた符号化テーブルを再現し、
再現された符号化テーブルに基づいて、上記符号化データを復号化しデータを再現する、
ことを特徴とするデータ復号化方法。
【請求項１２】
データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化する処理をコンピュータに実行させるためのプログラムであって、
上記選択された符号化テーブルの種類を示す情報に基づいて、符号化に用いられた符号化テーブルを再現し、
再現された符号化テーブルに基づいて、上記符号化データを復号化しデータを再現する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化テーブルに基づいてデータを符号化または復号化するデータ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラムに関する。
【背景技術】
【０００２】
デジタルカメラ等の撮像装置では、例えば一眼レフレックスタイプの機種などにおいて、ＲＡＷデータと呼ばれる撮像データを記録媒体に記録することが行われている。このＲＡＷデータは、撮像素子から得られる画像信号に簡単なアナログ処理を施した後にデジタルデータに変換しただけのものである。ところで、近年、デジタルカメラの撮像素子の高画素化が進んでいるために、こうしたＲＡＷデータのデータサイズが大きくなってきている。従って、ＲＡＷデータに圧縮処理を行って、データサイズの縮小を図っているデジタルカメラも存在している。ただし、ＲＡＷデータは、ユーザによりレタッチされることが想定されるものであり、圧縮処理を行う場合にはロスレス（Lossless）圧縮であることが望ましい。
【０００３】
圧縮方式は、一般に、圧縮率が高いことが望まれるが、デジタルカメラ等の撮像装置に適用される圧縮方式の場合には、単体のパーソナルコンピュータ等に適用される圧縮方式の場合と異なって、仕様上の制限等から、さらに幾つかの望ましい条件があり、例えば以下のようになっている。  
（１）処理時間が短いこと
（２）処理に要するバッファ量が小さいこと
【０００４】
これらの内の条件（１）は、例えば、連写性能や、バッテリの消耗などに関連する条件である。また、条件（２）は、デジタルカメラのコストやサイズ、重量などに関連する条件となっている。
【０００５】
しかし、条件（１）と条件（２）とをともに満足させようとすると、今度は、圧縮性能が低下してしまう可能性が高くなる。
【０００６】
ところで、符号化には様々な方式があるが、ＪＰＥＧ等における画像圧縮などに用いられているハフマン符号化は、よく知られた可変長符号化方式の１つである。このハフマン符号化を行う際には、適切な符号化テーブルを用いることにより、より効率的な圧縮を行うことが可能であるために、符号化テーブルをどのように選択するかについて、従来より種々の提案がなされている。
【０００７】
例えば、特開平９−６５３３４号公報には、符号化テーブルを、零係数信号の割合に基づいて選択する技術が記載されている。従って、該公報に記載の技術は、零係数信号の割合が大きい場合、例えば、量子化を伴うロッシー（Lossy）な圧縮方式の場合などに、高い圧縮率を達成することができると考えられる。
【特許文献１】特開平９−６５３３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ロスレス圧縮においては、零係数信号の割合が比較的小さい場合が多いために、特開平９−６５３３４号公報に記載されたような零係数のみに基づく技術では、選択すべき符号化テーブルを高精度に判定することは困難である。さらに、該公報に記載されたような零係数信号の割合に基づいて評価する技術では、画像ブロック内における零係数以外の値に対する符号化効率（圧縮効率）が考慮されていないために、特にエッジを含む画像ブロックに対する処理を行う場合には、符号化効率が極端に低下する可能性がある。
【０００９】
従って、ロッシーな圧縮だけでなく、ロスレスな圧縮においても、上述した条件（１）および条件（２）を満たしながら、高い圧縮性能を発揮し得る圧縮方式が望まれている。
【００１０】
本発明は上記事情に鑑みてなされたものであり、処理時間が短く、必要なメモリ量が小さく、高い圧縮性能を発揮し得るデータ符号化装置、データ符号化方法、プログラムを提供することを目的としている。
【００１１】
また、本発明は、上記圧縮されたデータを、短い処理時間、かつ、小さな必要なメモリ量で復号化し得るデータ復号化装置、データ復号化方法、プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、第１の発明によるデータ符号化装置は、予め設定された複数の符号化テーブルを記憶する符号化テーブル記憶手段と、データが連続して所定の範囲内となる数を検出するためのランカウンタと、上記ランカウンタにより検出した数が所定数となるランセットの数を検出するためのランセットカウンタと、上記ランセットカウンタにより検出したランセットの数に応じて上記符号化テーブル記憶手段に記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択する符号化テーブル選択手段と、上記符号化テーブル選択手段により選択された符号化テーブルに基づいて上記データを符号化し符号化データを生成する符号化手段と、を具備したものである。
【００１３】
また、第２の発明によるデータ符号化装置は、上記第１の発明によるデータ符号化装置において、過去に読み出された符号化対象データに基づき注目する符号化対象データを予測し予測データを算出する予測手段と、注目する符号化対象データと上記予測手段により算出された予測データとの差分をとることにより予測誤差データを生成する予測誤差演算手段と、をさらに具備し、上記データは、上記予測誤差演算手段により生成された予測誤差データである。
【００１４】
さらに、第３の発明によるデータ符号化装置は、上記第１の発明によるデータ符号化装置において、上記符号化テーブルが、上記データの有意ビット数を表すカテゴリとこのカテゴリに対応する符号語との対応関係を表にしたものであり、上記符号化手段は、上記符号語と上記データの有意ビット部分とを対応付けて符号化データを生成するものである。
【００１５】
第４の発明によるデータ符号化装置は、上記第３の発明によるデータ符号化装置において、上記所定の範囲が複数種類設定可能となっており、上記ランカウンタは、設定された複数種類の所定の範囲のそれぞれに対してデータが連続して該所定の範囲内となる数を検出するものであり、上記ランセットカウンタは、上記ランカウンタにより検出した数が所定数となるランセットの数を上記複数種類の所定の範囲のそれぞれに対応して検出するものであり、上記符号化テーブル選択手段は、上記ランセットカウンタにより上記複数種類の所定の範囲のそれぞれに対応して検出されたランセットの数に応じて上記符号化テーブル記憶手段に記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択するものである。
【００１６】
第５の発明によるデータ符号化装置は、上記第４の発明によるデータ符号化装置において、上記所定の範囲が、上記データの絶対値が所定の閾値以下となる範囲であり、上記ランカウンタは、設定された複数種類の閾値のそれぞれに対して、データの絶対値が連続して該所定の閾値以下となる数を検出するものである。
【００１７】
第６の発明によるデータ符号化装置は、上記第５の発明によるデータ符号化装置において、上記符号化テーブル記憶手段が、最も符号長の短い符号語が割り当てられるカテゴリが異なる複数の符号化テーブルを記憶するものであり、上記符号化テーブル選択手段は、上記ランセットカウンタにより上記複数種類の閾値のそれぞれに対応して検出されたランセットの数が所定数以上であるか否かを各々判定し、所定数以上となった最も低い閾値が、低いときには平坦度が高く、高いときには平坦度が低いと判定し、平坦度が高いときには平坦度が低いときに比して、最も符号長の短い符号語が割り当てられるカテゴリがより小さい有意ビット数を表すカテゴリとなる符号化テーブルを選択するものである。
【００１８】
第７の発明によるデータ符号化装置は、上記第１の発明によるデータ符号化装置において、上記符号化テーブル選択手段により選択された符号化テーブルの種類を示す情報と、上記符号化手段により生成された符号化データと、は一のファイルとして出力されるものである。
【００１９】
第８の発明によるデータ符号化方法は、データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化し符号化データを生成する方法である。
【００２０】
第９の発明によるプログラムは、データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化し符号化データを生成する処理をコンピュータに実行させるためのプログラムである。
【００２１】
第１０の発明によるデータ復号化装置は、データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化するためのデータ復号化装置であって、上記選択された符号化テーブルの種類を示す情報に基づいて符号化に用いられた符号化テーブルを再現する符号化テーブル再現手段と、上記符号化テーブル再現手段により再現された符号化テーブルに基づいて上記符号化データを復号化しデータを再現する復号化手段と、を具備したものである。
【００２２】
第１１の発明によるデータ復号化方法は、データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化するためのデータ復号化方法であって、上記選択された符号化テーブルの種類を示す情報に基づいて符号化に用いられた符号化テーブルを再現し、再現された符号化テーブルに基づいて、上記符号化データを復号化しデータを再現する方法である。
【００２３】
第１２の発明によるプログラムは、データが連続して所定の範囲内となる数を検出し、検出した数が所定数となるランセットの数を検出し、検出したランセットの数に応じて予め設定し記憶された複数の符号化テーブルの中の何れか一の符号化テーブルを選択し、選択した符号化テーブルに基づいて上記データを符号化して生成された符号化データ、を復号化する処理をコンピュータに実行させるためのプログラムであって、上記選択された符号化テーブルの種類を示す情報に基づいて符号化に用いられた符号化テーブルを再現し、再現された符号化テーブルに基づいて上記符号化データを復号化しデータを再現する処理をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００２４】
本発明のデータ符号化装置、データ符号化方法、プログラムによれば、短い処理時間、かつ、小さな必要なメモリ量で、高い圧縮性能を発揮することが可能となる。
【００２５】
また、本発明のデータ復号化装置、データ復号化方法、プログラムによれば、上記圧縮されたデータを、短い処理時間、かつ、小さな必要なメモリ量で復号化することが可能となる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の実施の形態を説明する。
【００２７】
［実施形態１］
図１から図２１は本発明の実施形態１を示したものであり、図１はデータ符号化装置の構成を示すブロック図、図２はデータ復号化装置の構成を示すブロック図である。
【００２８】
図１に示すように、データ符号化装置１は、ブロック化部１１と、予測部１２と、減算器１３と、絶対値化部１４と、平坦度検出部１５と、ハフマンテーブル選択部１６と、ハフマン符号化部１７と、を含んで構成されている。これらの内の、ブロック化部１１には画像データが入力され、ハフマンテーブル選択部１６からは選択された符号化テーブルの種類を示す情報として符号化テーブルデータが出力され、符号化手段たるハフマン符号化部１７からは符号化データが出力されるようになっている。さらに、ハフマンテーブル選択部１６は、後述するような予め設定された複数種類のハフマン符号化テーブルを記憶する符号化テーブル記憶手段となっており、また、符号化テーブル選択手段として機能することにより、これら複数種類のハフマン符号化テーブルから一のハフマン符号化テーブルを選択するようになっている。このデータ符号化装置１の詳細については、後で図４、図６〜図８等を参照しながら作用に沿って説明する。
【００２９】
また、このデータ符号化装置１により圧縮されたデータは、図２に示すようなデータ復号化装置２により復号化されるようになっている。すなわち、データ復号化装置２は、符号化テーブル再現手段たる復号テーブル作成部２１と、復号化手段たるハフマン復号化部２２と、加算器２３と、メモリ２４と、予測部２５と、を含んで構成されている。これらの内の、復号テーブル作成部２１には符号化テーブルデータが入力され、ハフマン復号化部２２には符号化データが入力され、加算器２３からは画像データが出力されるようになっている。このデータ復号化装置２の詳細については、後で図５等を参照しながら作用に沿って説明する。
【００３０】
なお、図１、図２において、各ブロック間の相互の動作タイミングの調整は、図示しないタイミング調整回路により行うようになっている。
【００３１】
さらに、データ符号化装置１の平坦度検出部１５は、図３に示すように構成されている。図３は平坦度検出部の構成を示すブロック図である。
【００３２】
平坦度検出部１５は、比較部３１と、ランカウンタ３２と、比較部３３と、ランセットカウンタ３４と、比較部３５と、を含んで構成されている。これらの内の、比較部３１には予測誤差データと閾値ｔｈとが入力され、ランカウンタ３２には外部カウントリセット信号が入力され、比較部３３には閾値ｔｈ＿ｒｕｎが入力され、ランセットカウンタ３４には外部カウントリセット信号が入力され、比較部３５には閾値ｔｈ＿ｒｕｎ＿ｓｅｔが入力されるようになっている。
【００３３】
この平坦度検出部１５の詳細についても、後で作用に沿って説明する。
【００３４】
次に、図４はデータ符号化装置１による圧縮処理を示すフローチャート、図６は平坦度検出の処理の画素単位分の処理を示すフローチャート、図７は平坦度検出の処理のライン単位分の処理を示すフローチャート、図８は平坦度検出の処理のブロック単位分の処理を示すフローチャート、図９は画像データをブロックに分割する様子を示す図、図１０はブロックの画素データの例を示す図、図１１は注目画素と注目画素以前に読み出される近傍画素との配置を示す図、図１２は図１０の画素データから得られるブロックの予測誤差データを示す図、図１３は図１２の予測誤差データを絶対値化して得られる絶対値化された予測誤差データを示す図、図１４は平坦度検出において用いられる各閾値や設定値を示す図表、図１５は図１３の絶対値化された予測誤差データに対して図１４の各閾値や設定値を適用して得られる平坦度検出の結果を示す図表、図１６は平坦度の高中低に応じて予め設定された符号化テーブルの例を示す図表、図１７はハフマン符号の構造を示す図、図１８は予測誤差データの一例を示す図、図１９は図１８の予測誤差データを符号化して得られるハフマン符号を示す図である。
【００３５】
この処理を開始すると、まず、ブロック化部１１が、入力される画像データを図９に示すようにブロックに分割する（ステップＳ１）。この図９には、縦３２×横５６画素でなる画像データを、８×８画素でなるブロックに分割する例を示し、分割した結果、Ｂ１〜Ｂ２８までの横７×縦４個のブロックが生成される。なお、ここでは１つの画像データを２８個のブロックに分割し、かつ１ブロックを６４画素で構成しているが、これに限るものではないために、ブロックの個数をより一般的にｎ個、ブロック内の画素数をより一般的にｍ個、であるとする。また、１つの画像データを複数に分割するに限るものではなく、画像データ全体を１つのブロックとして処理しても構わない。
【００３６】
次に、分割して得られた複数のブロックの内の１つのブロック（具体例としては、図１０に示すように画素データが配列されたブロック）を処理対象として、予測部１２が、ブロック内の画素の画素データを順に読み出しながら、ブロック内における注目画素の画素データを、ブロック内で既に読み出された画素データに基づき予測する（ステップＳ２）。ここで、図１１に示すように、ブロック内における注目画素をｘで示すとすると、この注目画素ｘよりも以前に読み出されるブロック内の画素は、例えば、注目画素ｘの左隣の画素ａと、注目画素ｘの上隣の画素ｂと、注目画素ｘの左上隣の画素ｃと、である。なお、ここでは、画素の読み出し順序が、ブロック内のあるラインについて左端の画素から右端の画素へ向けて順に読み出し、そのラインの読み出しが終了したらブロック内の次のラインの読み出しを同様に行う場合を例に説明するが、読み出し順序はこれに限るものではない。
【００３７】
そして、各画素ａ，ｂ，ｃの画素値をそれぞれＲａ，Ｒｂ，Ｒｃとし、注目画素ｘの予測値（予測データ）をＰｘとすると、予測値Ｐｘは、このような画素データの空間相関性に基づいて、予測手段たる予測部１２により、例えば次の数式１に示すような予測式を用いて算出される。  
［数１］
Ｐｘ＝ｍａｘ（Ｒａ，Ｒｂ）    （Ｒｃ＜ｍｉｎ（Ｒａ，Ｒｂ）のとき）
Ｐｘ＝ｍｉｎ（Ｒａ，Ｒｂ）    （Ｒｃ＞ｍａｘ（Ｒａ，Ｒｂ）のとき）
Ｐｘ＝Ｒａ＋Ｒｂ−Ｒｃ        （その他のとき）
ここに、記号ｍａｘ（ｘ，ｙ）は、ｘとｙとの小さくない方の値をとることを意味し、記号ｍｉｎ（ｘ，ｙ）は、ｘとｙとの大きくない方の値をとることを意味しており、以下でも同様に用いることにする。
【００３８】
なお、ここでは、数式１に示すような、エッジ検出に適した予測式を用いる例を説明したが、適用可能な予測式はこれに限るものではなく、その他の種々の予測式を用いることも可能である。例えば、以下の数式２〜数式８を、予測式の幾つかの例として挙げる。まず、数式２は、注目画素の左隣の画素ａの画素値Ｒａを、注目画素ｘの予測値Ｐｘとするものである。これは、水平方向の画素同士の相関性が高い場合に、精度の良い予測値を得ることができると考えられる。  
［数２］
Ｐｘ＝Ｒａ
【００３９】
次に、数式３は、注目画素の上隣の画素ｂの画素値Ｒｂを、注目画素ｘの予測値Ｐｘとするものである。これは、垂直方向の画素同士の相関性が高い場合に、精度の良い予測値を得ることができると考えられる。  
［数３］
Ｐｘ＝Ｒｂ
【００４０】
さらに、数式４は、注目画素の左上隣の画素ｃの画素値Ｒｃを、注目画素ｘの予測値Ｐｘとするものである。これは、左上から右下にかけての斜め方向の画素同士の相関性が高い場合に、精度の良い予測値を得ることができると考えられる。  
［数４］
Ｐｘ＝Ｒｃ
【００４１】
そして、数式５は、注目画素ｘの左隣の画素ａの画素値Ｒａと注目画素ｘの上隣の画素ｂの画素値Ｒｂとを加算し、そこから注目画素ｘの左上隣の画素ｃの画素値Ｒｃを減算して、注目画素ｘの予測値Ｐｘとするものである。これは、左上から右下にかけての斜め方向の画素の画素値の変化率に規則性がある場合に、精度の良い予測値を得ることができると考えられる。  
［数５］
Ｐｘ＝Ｒａ＋Ｒｂ−Ｒｃ
【００４２】
加えて、数式６は、注目画素ｘの左隣の画素ａの画素値Ｒａに、注目画素ｘの上隣の画素ｂの画素値Ｒｂから注目画素ｘの左上隣の画素ｃの画素値Ｒｃを減算して２で割ったものを加算し、注目画素ｘの予測値Ｐｘとするものである。これは、水平方向の画素の画素値の変化率に規則性がある場合に、精度の良い予測値を得ることができると考えられる。  
［数６］
Ｐｘ＝Ｒａ＋｛（Ｒｂ−Ｒｃ）／２｝
【００４３】
また、数式７は、注目画素ｘの上隣の画素ｂの画素値Ｒｂに、注目画素ｘの左隣の画素ａの画素値Ｒａから注目画素ｘの左上隣の画素ｃの画素値Ｒｃを減算して２で割ったものを加算し、注目画素ｘの予測値Ｐｘとするものである。これは、垂直方向の画素の画素値の変化率に規則性がある場合に、精度の良い予測値を得ることができると考えられる。  
［数７］
Ｐｘ＝Ｒｂ＋｛（Ｒａ−Ｒｃ）／２｝
【００４４】
さらに、数式８は、注目画素ｘの左隣の画素ａの画素値Ｒａと注目画素ｘの上隣の画素ｂの画素値Ｒｂとの平均値を、注目画素ｘの予測値Ｐｘとするものである。これは、周辺画素との相関性が高い場合（例えば、比較的平坦な場合）に、精度の良い予測値を得ることができると考えられる。  
［数８］
Ｐｘ＝（Ｒａ＋Ｒｂ）／２
【００４５】
なお、上述したような各予測式は、１つの画像データに対して１つのみを用いるに限るものではなく、組み合わせて用いることも可能である。すなわち、例えば、基本的には数式２に示すような予測式を用いるとしても、ライン上の左端の画素が注目画素となっているときには、そのさらに左側には画素が存在しないために、数式３に示す予測式を用いる、などの組み合わせが考えられる。そして、上述した各予測式に限るものではなく、注目画素よりも前に読み出される画素であって、注目画素に空間的な距離が近接する画素であれば、任意の１以上の画素の画素データを用いて予測値を算出することが可能である。
【００４６】
また、図１０に示す画素データから図１２に示すような予測誤差データを算出する例においては、予測誤差データを算出する前の予測値算出の際に、ブロック内の左上角の画素については画素のダイナミックレンジ０〜２５５の半分の値１２７を予測値とし、ブロック内の２ライン目から８ライン目までの左端の画素については数式３を用いて予測値を算出し、それ以外の画素については数式２を用いて予測値を算出している。
【００４７】
次に、予測誤差演算手段たる減算器１３は、数式９に示すように、注目画素の実際の画素値ＲｘからステップＳ１で予測した予測値Ｐｘを減算することにより、予測誤差値pred_diff を算出する（ステップＳ３）。  
［数９］
pred_diff ＝Ｒｘ−Ｐｘ
【００４８】
このようにして算出された予測誤差値pred_diff が、ハフマン符号化の対象となるデータであって、後で説明するステップＳ１４の処理に用いられるとともに、ハフマン符号化テーブルを選択するための指標となる平坦度を決定するために、以下に説明するように用いられるようになっている。なお、図１０に示したようなブロックの画素データについて、上述したように予測値Ｐｘを算出したときには、図１２に示すような予測誤差値pred_diff が得られる。
【００４９】
続いて、絶対値化部１４が、予測誤差値pred_diff を絶対値化して、絶対値化された予測誤差値abs_pred_diff を算出する（ステップＳ４）。図１２に示す予測誤差値pred_diff を図１３に示す予測誤差値abs_pred_diff に変換する絶対値化は、負の値である場合に、その負符号を取り除くことにより行っている。
【００５０】
なお、絶対値化の手段はこれに限るものではなく、例えば、次の数式１０に示すように行っても構わない。  
［数１０］
abs_pred_diff ＝pred_diff                   （pred_diff ≧０のとき）
abs_pred_diff ＝ａｂｓ（pred_diff ）−１    （pred_diff ＜０のとき）
ここに、第２式右辺のａｂｓ（）は、絶対値をとることを示している。
【００５１】
そして、絶対値化にはこれら以外にも種々の手段があるために、こうした他の手段を適用するようにしても勿論構わない。
【００５２】
次に、平坦度検出部１５が、第１の閾値との比較に基づく平坦度検出１の処理の画素単位分の処理（ステップＳ５）と、第２の閾値との比較に基づく平坦度検出２の処理の画素単位分の処理（ステップＳ６）と、を行う。
【００５３】
なお、ステップＳ５の平坦度検出１の処理と、ステップＳ６の平坦度検出２の処理とは、所定の範囲を示す閾値ｔｈの値が異なる以外は同一の処理を行うものであるために、図６を参照して、これらの処理をまとめて説明する。また、具体的な閾値ｔｈとしては、図１４に示すように、ステップＳ５の平坦度検出１の処理では３（閾値ｔｈ１）を、ステップＳ６の平坦度検出２の処理では３１（閾値ｔｈ２、ここにｔｈ２＞ｔｈ１を満たす）を、それぞれ用いるようになっている。そして、後述するような所定のラン長を示す閾値th_runとしては、具体的には、ステップＳ５とステップＳ６とで共通して４を用いるようになっている。
【００５４】
この平坦度検出の処理の画素単位分の処理を開始すると、まず、比較部３１が、絶対値化された予測誤差値abs_pred_diff が所定の閾値ｔｈ以下であるか否かを判定する（ステップＳ３１）。
【００５５】
ここで、閾値ｔｈ以下である場合には、ランカウンタ３２が、内部に備えるランカウンタrun_count をカウントアップ（ここでは、カウントアップを、記号「run_count +1」により示している）する（ステップＳ３２）。このランカウンタrun_count は、閾値ｔｈ以下である絶対値化された予測誤差値abs_pred_diff が何画素連続しているかを示すカウンタである。
【００５６】
そして、比較部３３は、ランカウンタrun_count が、所定のラン長を示す閾値th_run以上であるか否かを判定する（ステップＳ３４）。
【００５７】
ここで、閾値th_run以上である場合には、ランセットカウンタ３４が、ランセットカウンタrun_set_count をカウントアップ（ここでも上述と同様に、カウントアップを、記号「run_set_count +1」により示している）する（ステップＳ３５）。このランセットカウンタrun_set_count は、閾値ｔｈ以下の絶対値化された予測誤差値abs_pred_diff が閾値th_run個連続するセット（ランセット）が、ブロック内で幾つ検出されているかを示すカウンタである。
【００５８】
その後、ランカウンタ３２は、ステップＳ３５の結果を受けてランカウンタrun_count を初期化（つまり、「０」を格納）する（ステップＳ３６）。
【００５９】
一方、ステップＳ３１において、絶対値化された予測誤差値abs_pred_diff が所定の閾値ｔｈよりも大きいと判定された場合にも、ランカウンタ３２は、ランカウンタrun_count を初期化する（ステップＳ３３）。
【００６０】
こうして、ステップＳ３３またはステップＳ３６が終了するか、あるいはステップＳ３４においてランカウンタrun_count が閾値th_run未満であると判定された場合には、この処理から図４に示した処理に復帰する。
【００６１】
上述したようにステップＳ５およびステップＳ６の処理が終了したら、続いて、ブロック内における１ライン分の処理が終了したか否かを判定する（ステップＳ７）。ここで１ライン分の処理が終了していない場合には、ステップＳ２へ戻って、同一ラインの次の画素について上述したような処理を行う。
【００６２】
また、１ライン分の処理が終了したと判定された場合には、平坦度検出部１５が、上述したステップＳ５に対応する平坦度検出１の処理のライン単位分の処理（ステップＳ８）と、上述したステップＳ６に対応する平坦度検出２の処理のライン単位分の処理（ステップＳ９）と、を行う。
【００６３】
なお、ステップＳ８の処理とステップＳ９の処理とは、基本的に同一の処理を行うものであるために、図７を参照して、これらの処理をまとめて説明する。
【００６４】
この処理を開始すると、ランカウンタ３２が、外部の図示しない制御手段等から入力される外部カウントリセット信号を受けて、内部に備えるランカウンタrun_count をリセットし（ステップＳ４１）、この処理から図４に示した処理に復帰する。
【００６５】
こうしてステップＳ８およびステップＳ９の処理が終了したら、続いて、ｍ画素分の処理が終了したか否か、つまり、注目している１つのブロック分の処理が終了したか否かを判定する（ステップＳ１０）。ここで１つのブロック分の処理が終了していない場合には、ステップＳ２へ戻って、同一ブロック内の次のラインについて上述したような処理を行う。
【００６６】
一方、１つのブロック分の処理が終了したと判定された場合には、平坦度検出部１５が、上述したステップＳ５およびステップＳ８に対応する平坦度検出１の処理のブロック単位分の処理（ステップＳ１１）と、上述したステップＳ６およびステップＳ９に対応する平坦度検出２の処理のブロック単位分の処理（ステップＳ１２）と、を行う。
【００６７】
なお、ステップＳ１１の処理とステップＳ１２の処理とは、基本的に同一の処理を行うものであるために、図８を参照して、これらの処理をまとめて説明する。なお、この処理では、所定のランセット数を示す閾値th_run_setが用いられるが、具体的な数値としては、図１４に示すように、４を用いるようになっている。
【００６８】
この処理を開始すると、比較部３５が、ランセットカウンタ３４によりカウントされたランセットカウンタrun_set_count が上述した閾値th_run_set以上であるか否かを判定する（ステップＳ５１）。
【００６９】
ここで、比較部３５は、閾値th_run_set以上であると判定した場合には、平坦度検出結果を示すランフラグrun_flagに１を代入して出力し（ステップＳ５２）、閾値th_run_set未満であると判定した場合には、平坦度検出結果を示すランフラグrun_flagに０を代入して出力する（ステップＳ５３）。ここに、図１４に示したような閾値や設定値に基づいて、図１３に示したような絶対値化された予測誤差値abs_pred_diff の判定を行った結果は、図１５に示すようになり、１ブロック分の処理を終えたところで、平坦度検出１によるランセットカウンタrun_set_count は５、平坦度検出２によるランセットカウンタrun_set_count は８となる。そして、閾値th_run_setは上述したように４に設定されているために、平坦度検出１によるランフラグrun_flagと、平坦度検出２によるランフラグrun_flagと、の何れもが、図１５に示すように１となる。
【００７０】
こうしてステップＳ５２またはステップＳ５３の処理が終了したら、この処理から図４に示した処理に復帰する。
【００７１】
上述したようにステップＳ１１およびステップＳ１２の処理が終了したら、次に、ステップＳ１１の処理により出力されたランフラグrun_flag（これをrun_flag1 とする）と、ステップＳ１２の処理により出力されたランフラグrun_flag（これをrun_flag2 とする）と、に基づき、ハフマンテーブル選択部１６が、ハフマン符号化テーブルの選択を行う（ステップＳ１３）。ここに、ハフマン符号化テーブルは、図１６に示すように、ブロックの平坦度に応じて３つが用意されており、１つは高い平坦度に応じたハフマン符号化テーブル、もう１つは中程度の平坦度に応じたハフマン符号化テーブル、最後の１つは低い平坦度に応じたハフマン符号化テーブルとなっている。
【００７２】
なお、高い平坦度に応じたハフマン符号化テーブルは、予測誤差が０となるときに最も短い符号長のカテゴリ符号（符号語）を割り当て、０に近い予測誤差に対して短い符号長のカテゴリ符号を割り当てるようなハフマン符号化テーブルとなっている。
【００７３】
また、中程度の平坦度に応じたハフマン符号化テーブルは、絶対値が２または３となる予測誤差に対して最も短い符号長のカテゴリ符号を割り当て、絶対値が２または３に近い予測誤差に対してなるべく短い符号長のカテゴリ符号を割り当てるようなハフマン符号化テーブルとなっている。
【００７４】
さらに、低い平坦度に応じたハフマン符号化テーブルは、絶対値が１６〜３１となる予測誤差に対して最も短い符号長のカテゴリ符号を割り当て、絶対値が１６〜３１に近い予測誤差に対してなるべく短い符号長のカテゴリ符号を割り当てるようなハフマン符号化テーブルとなっている。
【００７５】
そして、ハフマンテーブル選択部１６は、ランフラグrun_flag1 が１であるとき（このときには、ランフラグrun_flag2 も１となる）にはブロックの平坦度が高いと判定し、ランフラグrun_flag1 が０であってかつランフラグrun_flag2 が１であるときにはブロックの平坦度は中程度であると判定し、ランフラグrun_flag2 が０であるとき（このときには、ランフラグrun_flag1 も０となる）にはブロックの平坦度は低いと判定するようになっている。こうした平坦度の判定に基づき、ハフマンテーブル選択部１６は、図１６に示したようなハフマン符号化テーブルの何れかを選択する。
【００７６】
続いて、ハフマンテーブル選択部１６により選択された符号化テーブルを用いて、符号化手段たるハフマン符号化部１７が、上記ステップＳ３において算出された予測誤差値pred_diff のハフマン符号化を行う（ステップＳ１４）。
【００７７】
ハフマン符号は、よく知られているように、カテゴリ符号と、有意ビット（ここでは、予測誤差データの有意ビット）と、により構成されている（図１７参照）。カテゴリ符号は、有意ビット部分の符号長を示す符号となっており、例えば図１８に示すような９ビットの予測誤差データ「０００００１０１１」（１０進数で表して「１１」となる）が得られたとすると、有意ビットは下位４ビット分であるために、図１６を参照して、カテゴリは「４」となる。このカテゴリ４に対して、平坦度が高い場合および平坦度が中程度である場合のハフマン符号化テーブルではカテゴリ符号「１０１」が割り当てられ、平坦度が低い場合のハフマン符号化テーブルではカテゴリ符号「１００」が割り当てられるようになっている。そして、上述した例においては、平坦度が高いハフマン符号化テーブルが選択されているために、カテゴリ符号としては「１０１」が用いられ、従って、ハフマン符号化データは、図１９に示すように、「１０１１０１１」の７ビットとなって、データの圧縮が行われていることが分かる。
【００７８】
こうして、１つのブロック内の各画素データについて、ハフマン符号化の処理が終了したら、次に、ｎ個のブロックについて処理が終了したか否か、つまり、処理対象の画像データ全体の処理が終了したか否かを判定する（ステップＳ１５）。ここで画像データ全体の処理が終了していない場合には、ブロック単位での処理に用いる各種のパラメータ等のリセットを必要に応じて行ってから、ステップＳ２へ戻って、同一画像データ内の次のブロックについて上述したような処理を行う。また、画像データ全体の処理が終了している場合には、この圧縮処理の終了となる。
【００７９】
圧縮処理が行われた画像データは、ファイルシステム等を介して記録媒体等へ記録するために、所定のファイルフォーマットに基づいたファイル化が行われる。図２０は、圧縮された画像データを記録するためのファイルフォーマットの一例を示す図である。
【００８０】
圧縮された画像ファイルは、符号化データと、この符号化データに付随して設けられるヘッダおよびタグと、を有して構成されている。
【００８１】
そして、上述したような３つのハフマン符号化テーブルの内の、どのハフマン符号化テーブルがどのブロックに対して適用されたかの情報は、例えば、圧縮画像ファイルを生成する際に、タグ部分に記録されるようになっている。
【００８２】
ここで、図２１は、ファイルフォーマットにおけるタグの構造を示す図である。
【００８３】
タグは、タグの種類を示すタグＩＤと、タグの中に記録されている値の型を示すタイプと、このタイプで示される型の値が何個あるかを示すカウントと、タグ中において値が格納されているアドレスを示す値へのオフセットと、を含んで構成されている。
【００８４】
そして、ブロックに対して用いられたハフマン符号化テーブルの種類を示すために、タグ情報として、例えば以下のような情報が格納される。
【００８５】
まず、タグＩＤに、例えば「値として格納されているのがブロック毎のハフマン符号化テーブルの種類の情報であること」を実質的に示す情報が格納される。
【００８６】
次に、タイプとして、データ量を示す型（具体的な例としては、プログラミング言語Ｃにおいて用いられているような、１バイトのデータを示す「char」など）が格納される。なお、上述した例においては、ハフマン符号化テーブルの種類が３種類（例えば、平坦度高に「０」、平坦度中に「１」、平坦度低に「２」を割り当てるなど）であり、２ビット分のデータ量で済むために、なるべくデータ量の小さな型を用いる方がファイルサイズを小さくするのに有効である。ただし、実用上は、データが１バイト単位で格納されることが多いために、上述した例においては、例えば４ブロック分のデータをまとめて１バイト中に格納することも考えられる。
【００８７】
さらに、カウントとしては、例えば、ブロック数が格納される。ただし、４ブロック分のデータをまとめて１バイト中に格納する例では、ブロック数を４で割って、その数を超えない最大の整数に１を加えた値を格納する、等になる。
【００８８】
そして、オフセットとしては、例えばタグＩＤの先頭から値が格納されているアドレスまでの相対的なデータ移動量、あるいは、図２０に示すタグ領域の先頭から値が格納されているアドレスまでのデータ移動量、などが格納される。
【００８９】
このようにして、各ブロックに対応する値の組として格納された、ブロック毎のハフマン符号化テーブルの種類の情報が、上述した符号化テーブルデータ（ハフマンテーブル選択部１６から出力されるデータであり、復号テーブル作成部２１へ入力されるデータ）である。
【００９０】
なお、データ符号化装置１に記憶されている平坦度に応じた複数のハフマン符号化テーブル（つまり、例えば図１６に示したようなハフマン符号化テーブル）がデータ復号化装置２（の例えば復号テーブル作成部２１）にも記憶されている場合には、各ブロックに適用されたハフマン符号化テーブルの種類の情報のみを上述したようにタグに記録すれば、データ復号化装置２においてハフマン符号化テーブルの種類の情報に基づき記憶している複数のハフマン符号化テーブルから一のハフマン符号化テーブルを選択することにより、符号化に用いられたハフマン符号化テーブルを再現することが可能である。これに対して、データ復号化装置２にデータ符号化装置１と同一の複数のハフマン符号化テーブルが存在しない場合、あるいは存在しない可能性があると想定する場合（例えば、複数のハフマン符号化テーブルが存在するデータ復号化装置と、複数のハフマン符号化テーブルが存在しないデータ復号化装置と、の何れにおいても復号化を行うと想定する場合など）には、これらに加えて、さらに各ハフマン符号化テーブル自体をタグ情報として記録する必要がある。このときには、データ復号化装置２は、ハフマン符号化テーブルの種類の情報に基づき、タグ情報として記録されている複数のハフマン符号化テーブルから一のハフマン符号化テーブルを選択して読み出すことにより、符号化に用いられたハフマン符号化テーブルを再現することが可能である。
【００９１】
次に、図５は、データ復号化装置２による伸張処理を示すフローチャートである。
【００９２】
この処理を開始すると、まず、復号テーブル作成部２１が、画像ファイルから符号化テーブルデータを読み込んで、ブロック毎に対応するハフマン符号化テーブルを再現し、ハフマン復号化部２２へ出力する（ステップＳ２１）。
【００９３】
続いて、ハフマン復号化部２２が、画像ファイルから符号化データを読み込んで、ブロック内の画素毎に、ハフマン符号化テーブルに基づいて復号化することにより予測誤差値pred_diff を再現する（ステップＳ２２）。
【００９４】
そして、予測部２５が、メモリ２４に記憶されている既に算出された画素値に基づいて、図４のステップＳ２において説明したのと同様に予測値Ｐｘの算出を行う（ステップＳ２３）。
【００９５】
次に、ステップＳ２２で復号化された予測誤差値pred_diff と、ステップＳ２３で算出された予測値Ｐｘと、に基づいて、次の数式１１に示すように、画素値Ｒｘを算出する（ステップＳ２４）。  
［数１１］
Ｒｘ＝Ｐｘ＋pred_diff 
【００９６】
その後、ブロック内における１ライン分の処理が終了したか否かを判定し（ステップＳ２５）、終了していない場合にはステップＳ２２へ戻って同一ライン内の次の画素について、上述したような処理を繰り返して行う。
【００９７】
また、ステップＳ２５において、ブロック内における１ライン分の処理が終了したと判定された場合には、次に、ｍ画素分の処理が終了したか否か、つまり１つのブロック分の処理が終了したか否かを判定し（ステップＳ２６）、終了していない場合には、上記ステップＳ２２へ戻って、同一ブロック内の次のラインについて、上述したような処理を繰り返して行う。
【００９８】
一方、ステップＳ２６において、１つのブロック分の処理が終了したと判定された場合には、ｎ個のブロックの全てについて処理が終了したか否か、つまり１枚の画像データ全体の処理が終了したか否かを判定し（ステップＳ２７）、終了していない場合には、上記ステップＳ２１へ戻って、次のブロックに係る符号化テーブルデータを読み込むなどを行って、上述したような処理を行う。
【００９９】
こうしてステップＳ２７において、画像データ全体の処理が終了したと判定された場合には、この伸張処理を終了する。
【０１００】
なお、上述では、処理対象となるデータとして、画像データを例に挙げたが、データ符号化装置１やデータ復号化装置２により処理し得るデータは、これに限るものではないことは勿論である。
【０１０１】
また、上述では、データ符号化装置１やデータ復号化装置２により処理を行っているが、既存の演算器等にデータ符号化方法やデータ復号化方法を適用することにより処理するようにしても構わない。あるいは、データ符号化装置１やデータ復号化装置２と同等の処理を行うためのプログラムにより、コンピュータで処理させるようにしても良い。
【０１０２】
さらに、上述では、予測誤差データを絶対値化してから所定の閾値と比較して平坦度を検出しているが、これに限るものではない。例えば、絶対値化していない予測誤差データが所定範囲内に入るか否かに応じて、平坦度を検出するようにしても構わない。
【０１０３】
そして、上述では、ハフマン符号化を行う対象であり平坦度を検出する対象であるデータを、予測誤差データとしているが、これに限るものではなく、その他の種々のデータを対象とすることが可能である。
【０１０４】
加えて、上述では、選択する符号化テーブルとしてハフマン符号化テーブルを例に挙げたが、これに限るものではなく、その他の符号化方式における符号化テーブルを予め複数用意しておいて、平坦度に応じて符号化に使用するテーブルを選択することも可能である。
【０１０５】
このような実施形態１によれば、ブロック単位で平坦度を検出し、複数の平坦度に対応して予め設定されている複数のハフマン符号化テーブルの中から、検出された平坦度に応じたハフマン符号化テーブルを選択してハフマン符号化するようにしたために、高い圧縮性能を発揮することが可能となる。
【０１０６】
そして、所定の閾値以下の絶対値化された予測誤差が所定数連続してなるランセット、の数を検出し、ランセットが所定数以上である場合に平坦である、と判定するようにしているために、複雑な処理を要することなく、短い時間で高速に平坦度を検出することが可能となる。
【０１０７】
さらに、絶対値化された予測誤差と比較する所定の閾値を複数種類用意しているために、平坦度の検出を、きめ細かく行うことが可能となる。
【０１０８】
加えて、平坦度を検出する際に、ランカウンタやランセットカウンタによるカウントを行うだけで良いために、ハフマン符号化テーブルを選択する際に必要なメモリ量の増加をほぼ抑制することができ、省メモリで構成することが可能となる。
【０１０９】
また、圧縮されたデータを、短い処理時間、かつ、小さな必要なメモリ量で復号化することが可能となる。
【０１１０】
なお、本発明は上述した実施形態に限定されるものではなく、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることは勿論である。
【産業上の利用可能性】
【０１１１】
本発明は、符号化テーブルに基づいてデータを符号化または復号化するデータ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラムに好適に利用することができる。
【図面の簡単な説明】
【０１１２】
【図１】本発明の実施形態１におけるデータ符号化装置の構成を示すブロック図。
【図２】上記実施形態１におけるデータ復号化装置の構成を示すブロック図。
【図３】上記実施形態１における平坦度検出部の構成を示すブロック図。
【図４】上記実施形態１のデータ符号化装置による圧縮処理を示すフローチャート。
【図５】上記実施形態１のデータ復号化装置による伸張処理を示すフローチャート。
【図６】上記実施形態１における平坦度検出の処理の画素単位分の処理を示すフローチャート。
【図７】上記実施形態１における平坦度検出の処理のライン単位分の処理を示すフローチャート。
【図８】上記実施形態１における平坦度検出の処理のブロック単位分の処理を示すフローチャート。
【図９】上記実施形態１において画像データをブロックに分割する様子を示す図。
【図１０】上記実施形態１におけるブロックの画素データの例を示す図。
【図１１】上記実施形態１において注目画素と注目画素以前に読み出される近傍画素との配置を示す図。
【図１２】上記図１０の画素データから得られるブロックの予測誤差データを示す図。
【図１３】上記図１２の予測誤差データを絶対値化して得られる絶対値化された予測誤差データを示す図。
【図１４】上記実施形態１の平坦度検出において用いられる各閾値や設定値を示す図表。
【図１５】上記図１３の絶対値化された予測誤差データに対して図１４の各閾値や設定値を適用して得られる平坦度検出の結果を示す図表。
【図１６】上記実施形態１において平坦度の高中低に応じて予め設定された符号化テーブルの例を示す図表。
【図１７】上記実施形態１におけるハフマン符号の構造を示す図。
【図１８】上記実施形態１における予測誤差データの一例を示す図。
【図１９】上記図１８の予測誤差データを符号化して得られるハフマン符号を示す図。
【図２０】上記実施形態１において圧縮された画像データを記録するためのファイルフォーマットの一例を示す図。
【図２１】上記実施形態１のファイルフォーマットにおけるタグの構造を示す図。
【符号の説明】
【０１１３】
１…データ符号化装置
２…データ復号化装置
１１…ブロック化部
１２…予測部（予測手段）
１３…減算器（予測誤差演算手段）
１４…絶対値化部
１５…平坦度検出部
１６…ハフマンテーブル選択部（符号化テーブル記憶手段、符号化テーブル選択手段）
１７…ハフマン符号化部（符号化手段）
２１…復号テーブル作成部（符号化テーブル再現手段）
２２…ハフマン復号化部（復号化手段）
２３…加算器
２４…メモリ
２５…予測部
３１…比較部
３２…ランカウンタ
３３…比較部
３４…ランセットカウンタ
３５…比較部
【図１】
2006345320.tif 000003
【図２】
2006345320.tif 000004
【図３】
2006345320.tif 000005
【図４】
2006345320.tif 000006
【図５】
2006345320.tif 000007
【図６】
2006345320.tif 000008
【図７】
2006345320.tif 000009
【図８】
2006345320.tif 000010
【図９】
2006345320.tif 000011
【図１０】
2006345320.tif 000012
【図１１】
2006345320.tif 000013
【図１２】
2006345320.tif 000014
【図１３】
2006345320.tif 000015
【図１４】
2006345320.tif 000016
【図１５】
2006345320.tif 000017
【図１６】
2006345320.tif 000018
【図１７】
2006345320.tif 000019
【図１８】
2006345320.tif 000020
【図１９】
2006345320.tif 000021
【図２０】
2006345320.tif 000022
【図２１】
2006345320.tif 000023