(57)【要約】【課題】  ＣＴデータの圧縮に適用可能な新たな好ましい可逆圧縮処理を行うことができるデータ圧縮装置を提供する。【解決手段】  被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めて新たな被圧縮データを生成する差分生成部と、  差分生成部によって生成された新たな被圧縮データを構成する各数値を所定値だけオフセットさせるオフセット部と、  数値がオフセットされた被圧縮データの各数値を上位ビット部分と下位ビット部分とに分ける分割部と、  上位ビット部分からなる上位データに可逆圧縮処理を施す上位データ圧縮部と  下位ビット部分からなる下位データにハフマン符号化を含む可逆圧縮処理を施す下位データ圧縮部と、  ハフマン符号化に用いられるハフマンテーブルを被圧縮データに基づいて作成して下位データ圧縮部に渡すテーブル作成部とを備えている。【選択図】        図３
2006279208.tif 000002
【特許請求の範囲】
【請求項１】
所定の単位ビット数で表わされる数値の連続からなる被圧縮データにデータ圧縮処理を施すデータ圧縮装置において、
被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めることにより該差分を表わす数値の連続からなる新たな被圧縮データを生成する差分生成部と、
前記差分生成部によって生成された新たな被圧縮データを構成する各数値を所定値だけオフセットさせるオフセット部と、
前記オフセット部によって数値がオフセットされた被圧縮データの各数値を、前記単位ビット数よりも小さい所定の分割ビット数のところで上位ビット部分と下位ビット部分とに分けることによって、該被圧縮データを、各数値における上位ビット部分の連続からなる上位データと各数値の下位ビット部分の連続からなる下位データとに分割する分割部と、
前記分割部によって分割された上位データに対して可逆圧縮処理を施す上位データ圧縮部と、
前記分割部によって分割された下位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施す下位データ圧縮部と、
前記下位データ圧縮部における可逆圧縮処理に先だって、前記テーブルに、前記エントロピー符号化が施される被圧縮データ中で出現頻度の高い数値ほど符号長の短かい符号を割り当てる割当部とを備えたことを特徴とするデータ圧縮装置。
【請求項２】
前記下位データ圧縮部が、前記符号化処理として、ハフマンテーブルを用いてハフマン符号化を施す符号化処理を行うものであり、
前記割当部が、前記下位データ圧縮部のハフマンテーブルに符号を割り当てるものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項３】
前記割当部が、画像を表す被圧縮データ中の、該画像の一部分に相当する数値を分析することによって前記出現頻度を求めるものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項４】
前記割当部が、画像を表す被圧縮データ中の、該画像の一部分に相当する数値に対し、前記差分生成部、前記オフセット部、および前記分割部のそれぞれにおける処理と同等の処理を施して分析用データを作成し、その分析用データを分析することによって前記出現頻度を求めるものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項５】
前記上位データ圧縮部が、前記上位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施すものであり、
前記割当部が、画像を表す被圧縮データ中の、該画像の一部分に相当する数値を分析することによって、前記上位データ圧縮部および前記下位データ圧縮部の各被圧縮データにおける数値の出現頻度を求め、それらの出現頻度に基づいて、前記上位データ圧縮部と前記下位データ圧縮部とのそれぞれにおける前記テーブルに、出現頻度の高い数値ほど符号長の短かい符号を割り当てるものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項６】
前記上位データ圧縮部が、前記上位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施すものであり、
前記割当部が、画像を表す被圧縮データ中の、該画像の一部分に相当する数値に対し、前記差分生成部、前記オフセット部、および前記分割部のそれぞれにおける処理と同等の処理を施して分析用データを作成し、その分析用データを分析することによって、前記上位データ圧縮部および前記下位データ圧縮部の各被圧縮データにおける数値の出現頻度を求め、それらの出現頻度に基づいて、前記上位データ圧縮部と前記下位データ圧縮部とのそれぞれにおける前記テーブルに、出現頻度の高い数値ほど符号長の短かい符号を割り当てるものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項７】
前記上位データ圧縮部が、前記符号化処理として、ハフマンテーブルを用いてハフマン符号化を施す符号化処理を行うものであり、
前記割当部が、前記上位データ圧縮部のハフマンテーブルに符号を割り当てるものであることを特徴とする請求項５または６記載のデータ圧縮装置。
【請求項８】
前記上位データ圧縮部が、上位データ中、１つもしくは複数の所定の圧縮対象数値を除く数値についてはそのまま出力するとともに、圧縮対象数値については、該圧縮対象数値と、該圧縮対象数値と同一の圧縮対象数値の連続数を表わす数値とに符号化して出力する第１の符号化部を備えたものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項９】
前記下位データ圧縮部が、圧縮省略の指示を受けて下位データを無圧縮で出力するものであることを特徴とする請求項１記載のデータ圧縮装置。
【請求項１０】
プログラムを実行する情報処理装置内に組み込まれて該情報処理装置に、所定の単位ビット数で表わされる数値の連続からなる被圧縮データに対するデータ圧縮処理を実行させるデータ圧縮プログラムにおいて、
前記情報処理装置上に、
被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めることにより該差分を表わす数値の連続からなる新たな被圧縮データを生成する差分生成部と、
前記差分生成部によって生成された新たな被圧縮データを構成する各数値を所定値だけオフセットさせるオフセット部と、
前記オフセット部によって数値がオフセットされた被圧縮データの各数値を、前記単位ビット数よりも小さい所定の分割ビット数のところで上位ビット部分と下位ビット部分とに分けることによって、該被圧縮データを、各数値における上位ビット部分の連続からなる上位データと各数値の下位ビット部分の連続からなる下位データとに分割する分割部と、
前記分割部によって分割された上位データに対して可逆圧縮処理を施す上位データ圧縮部と、
前記分割部によって分割された下位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施す下位データ圧縮部と、
前記下位データ圧縮部における可逆圧縮処理に先だって、前記テーブルに、前記エントロピー符号化が施される被圧縮データ中で出現頻度の高い数値ほど符号長の短かい符号を割り当てる割当部とを構築することを特徴とするデータ圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データ等のデータを圧縮するデータ圧縮装置、およびコンピュータ等の情報処理装置をデータ圧縮装置として動作させるデータ圧縮プログラムに関する。
【背景技術】
【０００２】
従来より、記憶容量の低減化や通信量の低減化等のために、画像データ等のデータを圧縮する技術が広く採用されている。
【０００３】
例えば、特許文献１には、原画像から代表色を選定しＣＬＵＴ（カラールックアップテーブル）を構成する際に、連続する色番号が近い値の色データを持つように色番号を割り当て、次にＣＬＵＴに対応したビットマップを作成して隣接画素間の色番号の差分を求め、差分が大きな値を取る場合、画質劣化を起こさない範囲でビットマップの色番号を変更し、差分を小さな値に偏らせ、差分データに対してランレングス符号化を施すという技術が開示されている。
【０００４】
また、特許文献２には、各色に対応してそれぞれ割り当てられたデータが複数集まって構成される画像用データを非可逆圧縮して符号化し、そして、データの１つを透明色に割り当てると共に、その透明色を可逆とし、画像用データを即値（差分符号化の際の最初の値）とその即値に続く複数の差分値（差分符号化の際の前の値）とで構成し、それらの値を非可逆圧縮して符号化等する際、透明色を表す即値と差分値とを可逆とし、さらに、透明色を表す即値を、各一色のデータ値の中間の値としたり、透明色を表す差分値を「０」としたりするという技術が提案されている。
【０００５】
また、特許文献３には、数を予測された数（ｓ'（ｊ））と実際の数（ｓ（ｊ））との差分によって符号化することが提案されている。
【０００６】
さらに、特許文献４には、ｎ列目の画素データ列に対して、副走査方向の同一画素データの分布状況を認識するとともに、主走査方向の同ー画素データの分布状況を認識し、これらの認識結果を基に、副走査方向に連続する同ー画素データを圧縮処理するか、あるいは主走査方向に連続する同一画素データを圧縮処理するかを決定する画像圧縮装置が提案されている。
【０００７】
ここで、データ圧縮技術を適用した１つのシステムを紹介する。
【０００８】
図１は、データ圧縮技術が適用されたプリントシステムの一例を示す図、図２は、プリントシステムにおけるデータ処理の流れを示す図である。
【０００９】
このプリントシステムは、図１に示すように、ホストコントローラ１００と、インターフェース機器２００と、プリンタ３００とで構成されており、ホストコントローラ１００とインターフェース機器２００との間はＳＣＳＩ等の汎用インターフェースケーブル１５０で接続され、さらにインターフェース機器２００とプリンタ３００との間は専用インターフェースケーブル２５０で接続されている。
【００１０】
ホストコントローラ１００の内部では、図２に示すように、ＰＤＦ，ＰＳ，ＴＩＦＦ等、様々な言語やフォーマットで記述された文字や画像のデータ１１が、画像（ＣＴ；Ｃｏｎｔｉｎｕｏｕｓ  Ｔｏｎｅ）データと文字やライン等（ＬＷ；Ｌｉｎｅ  Ｗｏｒｋ）のデータとに分けられて、それぞれについてＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ）を行なうことによりビットマップデータ１２Ａ，１３Ａが生成され、さらにそれぞれについてデータ圧縮処理が行なわれて、ＣＴについては非可逆の圧縮データ１４、ＬＷについては可逆の圧縮データ１５が生成される。これらの圧縮データ１４，１５は、図１に示す汎用インターフェースケーブル１５０を経由して、ホストコントローラ１００からインターフェース機器２００に転送される。インターフェース機器２００では、転送されてきた圧縮データ１４，１５にデータ伸長処理を施して、ホストコントローラ１００でデータ圧縮処理を行なう前の状態のビットマップデータ１２Ａ，１３Ａに対応するビットマップデータ１２Ｂ，１３Ｂを生成する。ここで、ＣＴデータについてはホストコントローラ１００でのデータ圧縮の際非可逆圧縮処理が行なわれているため、データ伸長後のＣＴデータ（ビットマップデータ１２Ｂ）は完全にはデータ圧縮前のＣＴデータ（ビットマップデータ１２Ａ）には戻らないが、ほぼ同一のビットマップデータが復元される。ＬＷデータについては、ホストコントローラ１００でのデータ圧縮の際可逆圧縮処理が行なわれているため、データ伸長後のＬＷデータ（ビットマップデータ１３Ｂ）は、データ圧縮前のＬＷデータ（ビットマップデータ１３Ａ）と同一のデータに復元される。
【００１１】
インターフェース機器２００では、データ伸長後のＣＴデータ（ビットマップデータ１２Ｂ）とＬＷデータ（ビットマップデータ１３Ｂ）とが合成され、さらに網点情報等がタグとして付加されてプリンタ３００に送られる。プリンタ３００では、インターフェース機器２００から受け取ったビットマップデータとそれに付加されたタグ情報とに従って画像がプリント出力される。
【００１２】
ホストコントローラ１００とインターフェース機器２００とが例えば相互に離れている場合、あるいは、インターフェース機器２００が複数台のホストコントローラから画像データを受信するシステムの場合など、ホストコントローラ１００とインターフェース機器２００を別々の装置として構成する必要がある場合には、図２に示すような、ホストコントローラ１００でデータ圧縮を行なってインターフェース機器２００にデータ転送しインターフェース機器でデータ伸長するように構成することにより、ホストコントローラ１００からインターフェース機器２００へのデータ転送時間を短縮することができ、プリントの生産性が向上する。
【００１３】
ここで、一般的には、ＣＴデータについては、非可逆ではあるが圧縮率の高いＪＰＥＧ等の圧縮方式が採用され、ＬＷデータについてはＰａｃｋＢｉｔｓ等の可逆圧縮方式が採用される。
【特許文献１】特開平５−３２８１４２号公報
【特許文献２】特開平１０−１６４６２０号公報
【特許文献３】特表２００１−５−２０８２２号公報
【特許文献４】特開平９−２００５４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、ＪＰＥＧ等の圧縮方式では、ソフトウェアでの圧縮処理に時間を要し、圧縮処理のシステム全体としての処理能力を劣化させる要因となっていた。
【００１５】
また、ＪＰＥＧ等は非可逆な圧縮処理であるため画質の劣化を必然的に伴うが、近年、高画質化への要求がますます高まってきており、ＣＴデータについても画質の劣化を招かないよう可逆圧縮を行うことが検討されてきている。
【００１６】
本発明は上記事情に鑑み、ＣＴデータの圧縮に適用可能な新たな好ましい可逆圧縮処理を行うことができるデータ圧縮装置およびデータ圧縮プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成する本発明のデータ圧縮装置は、
所定の単位ビット数で表わされる数値の連続からなる被圧縮データにデータ圧縮処理を施すデータ圧縮装置において、
被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めることによりその差分を表わす数値の連続からなる新たな被圧縮データを生成する差分生成部と、
上記差分生成部によって生成された新たな被圧縮データを構成する各数値を所定値だけオフセットさせるオフセット部と、
上記オフセット部によって数値がオフセットされた被圧縮データの各数値を、上記単位ビット数よりも小さい所定の分割ビット数のところで上位ビット部分と下位ビット部分とに分けることによって、その被圧縮データを、各数値における上位ビット部分の連続からなる上位データと各数値の下位ビット部分の連続からなる下位データとに分割する分割部と、
上記分割部によって分割された上位データに対して可逆圧縮処理を施す上位データ圧縮部と、
上記分割部によって分割された下位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施す下位データ圧縮部と、
上記下位データ圧縮部における可逆圧縮処理に先だって、上記テーブルに、上記エントロピー符号化が施される被圧縮データ中で出現頻度の高い数値ほど符号長の短かい符号を割り当てる割当部とを備えたことを特徴とする。
【００１８】
ここで、上記の『被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めることにより』における『隣接する』とは、データストリーム上で隣接してもよいが、必ずしもそれに限定されるものではない。例えば、２次元画像データが１次元ストリーム状のデータとして扱われている場合であれば、２次元的な画像上で見て隣接してもよい。以下においても同様である。
【００１９】
この本発明のデータ圧縮装置は、
上記下位データ圧縮部が、上記符号化処理として、ハフマンテーブルを用いてハフマン符号化を施す符号化処理を行うものであってもよい。
【００２０】
また、本発明のデータ圧縮装置は、
上記割当部が、画像を表す被圧縮データ中の、その画像の一部分に相当する数値を分析することによって前記出現頻度を求めるものであることが好ましい。
【００２１】
さらに、本発明のデータ圧縮装置は、
上記割当部が、画像を表す被圧縮データ中の、その画像の一部分に相当する数値に対し、上記差分生成部、上記オフセット部、および上記分割部のそれぞれにおける処理と同等の処理を施して分析用データを作成し、その分析用データを分析することによって前記出現頻度を求めるものであることが、より好ましい。
【００２２】
また、本発明のデータ圧縮装置は、
上記上位データ圧縮部が、上記上位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施すものであり、
上記割当部が、画像を表す被圧縮データ中の、その画像の一部分に相当する数値を分析することによって、上記上位データ圧縮部および上記下位データ圧縮部の各被圧縮データにおける数値の出現頻度を求め、それらの出現頻度に基づいて、上記上位データ圧縮部と上記下位データ圧縮部とのそれぞれにおける上記テーブルに、出現頻度の高い数値ほど符号長の短かい符号を割り当てるものであることが好ましい。
【００２３】
また、本発明のデータ圧縮装置は、
上記上位データ圧縮部が、上記上位データに対して、符号と数値を対応づけるテーブルを用いてエントロピー符号化を施す符号化処理を含む可逆圧縮処理を施すものであり、
上記割当部が、画像を表す被圧縮データ中の、その画像の一部分に相当する数値に対し、上記差分生成部、上記オフセット部、および上記分割部のそれぞれにおける処理と同等の処理を施して分析用データを作成し、その分析用データを分析することによって、上記上位データ圧縮部および上記下位データ圧縮部の各被圧縮データにおける数値の出現頻度を求め、それらの出現頻度に基づいて、上記上位データ圧縮部と上記下位データ圧縮部とのそれぞれにおける上記テーブルに、出現頻度の高い数値ほど符号長の短かい符号を割り当てるものであることが、より好ましい。
【００２４】
ここで、これらの本発明のデータ圧縮装置において、上記上位データ圧縮部が、上記符号化処理として、ハフマンテーブルを用いてハフマン符号化を施す符号化処理を行うものであり、
上記割当部が、上記上位データ圧縮部のハフマンテーブルに符号を割り当てるものであってもよい。
【００２５】
また、本発明のデータ圧縮装置は、
上記上位データ圧縮部が、上位データ中、１つもしくは複数の所定の圧縮対象数値を除く数値についてはそのまま出力するとともに、圧縮対象数値については、その圧縮対象数値と、圧縮対象数値と同一の圧縮対象数値の連続数を表わす数値とに符号化して出力する第１の符号化部を備えたものであることが好ましい。
【００２６】
また、本発明のデータ圧縮装置は、
上記下位データ圧縮部が、圧縮省略の指示を受けて下位データを無圧縮で出力するものであることも好適である。
【００２７】
上記目的を達成する本発明のデータ圧縮プログラムは、
プログラムを実行する情報処理装置内に組み込まれて該情報処理装置に、所定の単位ビット数で表わされる数値の連続からなる被圧縮データに対するデータ圧縮処理を実行させるデータ圧縮プログラムにおいて、
上記情報処理装置上に、
被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求めることによりその差分を表わす数値の連続からなる新たな被圧縮データを生成する差分生成部と、
差分生成部によって生成された新たな被圧縮データを構成する各数値を所定値だけオフセットさせるオフセット部と、
オフセット部によって数値がオフセットされた被圧縮データの各数値を、上記単位ビット数よりも小さい所定の分割ビット数のところで上位ビット部分と下位ビット部分とに分けることによって、その被圧縮データを、各数値における上位ビット部分の連続からなる上位データと各数値の下位ビット部分の連続からなる下位データとに分割する分割部と、
分割部によって分割された上位データに対して可逆圧縮処理を施す上位データ圧縮部と、
分割部によって分割された下位データに対して可逆圧縮処理を施す下位データ圧縮部とを構築することを特徴とする。
【００２８】
なお、本発明にいうデータ圧縮プログラムについては、ここではその基本形態のみを示すのにとどめるが、これは単に重複を避けるためであり、本発明にいうデータ圧縮プログラムには、上記の基本形態のみではなく、前述したデータ圧縮装置の各形態に対応する各種の形態が含まれる。
【００２９】
また、本発明のデータ圧縮プログラムがコンピュータ上に構成する差分生成部などといった要素は、１つの要素が１つのプログラム部品によって構築されるものであってもよく、１つの要素が複数のプログラム部品によって構築されるものであってもよく、複数の要素が１つのプログラム部品によって構築されるものであってもよい。また、これらの要素は、そのような作用を自分自身で実行するものとして構築されてもよく、あるいは、コンピュータに組み込まれている他のプログラムやプログラム部品に指示を与えて実行するものとして構築されても良い。
【発明の効果】
【００３０】
上記本発明のデータ圧縮装置ないしデータ圧縮プログラムによれば、元の被圧縮データから差分生成部によって生成されてオフセット部によって数値がオフセットされた新たな被圧縮データが上位データと下位データとに分割され、それぞれ上位データ圧縮部と下位データ圧縮部とで可逆圧縮処理が施される。一般に、ＣＴデータから得られる新たな被圧縮データの場合には、後で詳述するように、上位データと下位データとではデータ中の数値の分布傾向が顕著に異なっているので、各データに適した可逆圧縮処理が存在し、本発明による圧縮処理によって全体として大きな圧縮率が達成される。また、下位データには、データ毎に最適化されたテーブルが用いられてエントロピー符号化（典型的にはハフマン符号化）が施されるので大きな圧縮率が安定的に得られる。更に、各データに施される可逆圧縮処理としては、アルゴリズムが単純な処理が適用可能であるため、圧本発明による圧縮処理は処理時間が短い。このように、本発明のデータ圧縮装置ないしデータ圧縮プログラムによれば、ＣＴデータの圧縮に適用すると特に好ましい新たな可逆圧縮処理が実現される。
【００３１】
また、上記割当部が、画像の一部分に相当する数値の分析によって出現頻度を求めるものであると、出現頻度の精度を維持しつつ演算の負担を軽減することができる。
【００３２】
また、上記割当部が、上記の分析用データを分析することによって出現頻度を求めるものであると、画像を一部分ずつ処理していく場合であっても、画像全体の傾向に最適化されたテーブルで適切に処理することができる。
【００３３】
また、上記の上位データ圧縮部もエントロピー符号化（典型的にはハフマン符号化）をデータに施すものである場合には、上記割当部が上位データ圧縮部用のテーブルについても最適なテーブルを作成するものであると、圧縮率の一層の向上が見込まれる。
【００３４】
また、上記の上位データ圧縮部が第１の符号化部を備えると、圧縮対象数値のみが、その圧縮対象数値と連続数とを表わす数値とに符号化されるため、原データよりも冗長度が増すという事態が回避され、圧縮率が向上する。
【００３５】
さらに、上記の下位データ圧縮部が、圧縮省略の指示を受けて下位データを無圧縮で出力するものであると、そのような指示によってより高速な圧縮処理を選択することができる。
【発明を実施するための最良の形態】
【００３６】
以下において説明する実施形態は、図１に示す全体システムの中のホストコントローラに組み込まれる画像圧縮装置であり、さらに具体的には、図２に示すホストコントローラ内のＣＴのビットマップデータ１２Ａについてデータ圧縮を行なう処理に関するものである。したがって、ここでは、図１，図２を参照して説明したＣＴデータについてのデータ圧縮処理が以下に説明する本発明の実施形態としてのデータ圧縮処理に置き換わり、インターフェース機器内でのデータ伸長（解凍）処理もその本発明の実施形態としてのデータ圧縮処理に対応したデータ伸長（解凍）処理に置き換わるものと理解し、図１に示す全体システムおよび図２に示す処理の流れについて重複した図示および重複説明は省略する。
【００３７】
図３は、本発明のデータ圧縮装置の一実施形態に相当する画像圧縮装置を示すブロック構成図である。
【００３８】
この図３に示す画像圧縮装置５００は、差分符号化部５１０、オフセット部５２０、プレーン分割部５３０、Ｌプレーン圧縮部５４０、Ｈプレーン圧縮部５５０、および最適ハフマンテーブル生成部５６０を備えている。各部５１０〜５６０の詳細は後述するが、この画像圧縮装置５００内での画像データの流れは以下のとおりである。
【００３９】
入力画像ファイルＤ０（本実施形態では、図２に示すように、ビットマップに展開されたＣＴデータ１２Ａが格納されたファイル）は、図４に示すデータ圧縮装置５００の、差分符号化部５１０と最適ハフマンテーブル生成部５６０との双方に入力され、差分符号化部５１０に入力されたデータには圧縮処理が施されて圧縮データが作成され、最適ハフマンテーブル生成部５６０に入力されたデータは、ハフマンテーブルの最適化に用いられる。
【００４０】
差分符号化部５１０では、２次元差分符号化処理、すなわち、入力されてきたデータを構成する数値の連続について、画像上で見てその数値に複数方向それぞれに隣接する複数の数値に基づいた２次元的な差分を求めることによりその差分を表わす８ビットの数値の連続からなる画像データを生成する処理が行なわれる。この差分符号化部５１０は、本発明にいう差分生成部の一例に相当する。
【００４１】
差分符号化部５１０で生成された、差分を表わす数値の連続からなる画像データは、オフセット部５２０に入力されて所定値だけオフセットされる。その後、プレーン分割部５３０で、画像データ中の８ビットの各数値が下位４ビットと上位４ビットとに分けられることにより、画像データは、下位４ビットの数値の連続からなる下位サブプレーンＤ１Ｌと上位４ビットの数値の連続からなる上位サブプレーンＤ１Ｈに分割される。このオフセット部５２０は、本発明にいうオフセット部の一例に相当し、プレーン分割部５３０は、本発明にいう分割部の一例に相当する。また、下位サブプレーンＤ１Ｌおよび上位サブプレーンＤ１Ｈは、それぞれ、本発明にいう下位データおよび上位データの各一例に相当する。
【００４２】
プレーン分割部５３０で分割された下位サブプレーンＤ１Ｌおよび上位サブプレーンＤ１Ｈは、それぞれ、Ｌプレーン圧縮部５４０およびＨプレーン圧縮部５５０に入力されて可逆圧縮が施される。これらＬプレーン圧縮部５４０およびＨプレーン圧縮部５５０は、それぞれ、本発明にいう下位データ圧縮部および上位データ圧縮部の各一例に相当する。
【００４３】
Ｌプレーン圧縮部５４０のハフマン符号化部５４１では、数値と符号とを対応づけるハフマンテーブルに従って、そのハフマン符号化部５４１に入力されてきた下位サブプレーンＤ１Ｌを構成する数値をそのハフマンテーブルに従う符号に置き換える符号化処理が行なわれる。このハフマン符号化は、エントロピー符号化の一種である。なお、Ｌプレーン圧縮部５４０にはモード切換部５４２が組み込まれており、このモード切換部５４２は、ユーザから、高速モードと通常モードとの切り換えを指示されて、上記のハフマン符号化部５４１によるハフマン符号化を経る通常モードと、ハフマン符号化を省略して下位サブプレーンＤ１Ｌをそのまま出力する高速モードとを切り換える。このようなＬプレーン圧縮部５４０からは、下位サブプレーンＤ１Ｌが圧縮された下位圧縮データＤ２Ｌが出力されるが、高速モードの場合には下位圧縮データＤ２Ｌは下位サブプレーンＤ１Ｌそのものである。
【００４４】
一方、Ｈプレーン圧縮部５５０には、ランレングス符号化部５５１とハフマン符号化部５５３が備えられており、上位サブプレーンＤ１Ｈはランレングス符号化部５５１に入力される。
【００４５】
ランレングス符号化部５５１では、先ず、入力されてきた上位サブプレーンＤ１Ｈのデータの中から１つもしくは複数の圧縮対象数値の存在及び同一の圧縮対象数値の連続数が検出される。次いで、ランレングス符号化部５５１では、その検出結果を受けて、上位サブプレーンＤ１Ｈのデータ中、圧縮対象数値を除く数値についてはそのまま出力すると共に、圧縮対象数値については、その圧縮対象数値と、その圧縮対象数値と同一の圧縮対象数値の連続数を表わす数値とに符号化して出力するという符号化処理が行なわれる。このランレングス符号化部５５１では、その符号化処理にあたっては、同一の圧縮対象数値の連続数に応じ、その連続数を異なるビット数で表現する符号化が行なわれる。ここでは、具体的には、同一の圧縮対象数値の連続数が所定数以下のときはその連続数を１単位ビット数で表現し、その連続数が所定数を越えるときは２単位ビット数で表現する符号化が行なわれる。本実施形態では、このランレングス符号化部５５１が、本発明にいう第１の符号化部の一例に相当する。
【００４６】
また、ランレングス符号化部５５１での符号化後のデータは、次に、ハフマン符号化部５５３に入力される。ハフマン符号化部５５３では、そのハフマン符号化部５５３に入力されてきたデータを構成する数値を、ハフマンテーブルに従う符号、すなわち、出現頻度の高い数値ほど短かいビット長で表わされる符号に置き換える符号化処理が行なわれる。
【００４７】
ハフマン符号化部５５３でハフマン符号化された後のデータは、データスキャニング部５５２で割り当てられた数値と符号との割当テーブルを含む圧縮情報が添付され、上位サブプレーンＤ１Ｈが圧縮された上位圧縮データＤ２ＨとしてＨプレーン圧縮部５５０から出力される。
【００４８】
上述したＬプレーン圧縮部５４０およびＨプレーン圧縮部５５０のそれぞれで行われるハフマン符号化には、圧縮対象の画像に対して最適化されたハフマンテーブルが用いられる。このようなハフマンテーブルは、最適ハフマンテーブル生成部５６０で作成され、この最適ハフマンテーブル生成部５６０は、本発明にいう割当部の一例に相当する。
【００４９】
最適ハフマンテーブル生成部５６０に渡された画像データは、先ず、プレスキャン部５６１に入力され、そのプレスキャン部５６１では、その画像データから、画像の一部に相当する部分データを抽出し、その部分データに対して、上述した差分符号化部５１０、オフセット部５２０、プレーン分割部５３０、およびランレングス符号化部５５１の処理と同じ処理を施す。
【００５０】
プレスキャン部５６１の処理を経たデータはヒストグラム解析部５６２に入力され、ヒストグラム解析部５６２では、そのデータ中に出現する全ての数値の出現頻度（ヒストグラム）が求められる。
【００５１】
ヒストグラム解析部５６２によって求められたデータヒストグラム（数値の出現頻度）はテーブル作成部５６３に渡され、テーブル作成部５６３では、そのデータヒストグラムに基づき、被圧縮データの圧縮に最適なハフマンテーブルを、Ｌプレーン圧縮部５４０およびＨプレーン圧縮部５５０それぞれ用に作成される。
【００５２】
このように作成された作成されたハフマンテーブルは、Ｌプレーン圧縮部５４０およびＨプレーン圧縮部５５０それぞれのハフマン符号化部５４１，５５３に渡され、それらのハフマン符号化部５４１，５５３では、その渡されたハフマンテーブルに従ってハフマン符号化が行われ、下位圧縮データＤ２Ｌおよび上位圧縮データＤ２Ｈが出力される。
【００５３】
このようにＬプレーン圧縮部５４０およびＨプレーン圧縮部５５０のそれぞれから出力される下位圧縮データＤ２Ｌと上位圧縮データＤ２Ｈとの組は、元々の画像データが可逆圧縮された可逆圧縮データを構成し、この可逆圧縮データは、図１に示すＳＣＳＩ等の汎用インターフェース１５０を経由してインターフェース機器２００に転送される。インターフェース機器２００では、その受け取った可逆圧縮データにデータ伸長処理が施されるが、このデータ伸長処理にあたっては、図３で説明した各種の符号化処理に対応する復号化処理が施されて元の入力画像ファイル中の画像データと同一の画像データが復元される。
【００５４】
図４は、図１に示すホストコントローラのハードウェア構成図である。
【００５５】
図１に示すホストコントローラ１００は、図４に示す構成のコンピュータシステムで構成されている。
【００５６】
この図４に示す、コンピュータシステムで構成されたホストコントローラ１００には、ＣＰＵ１１１、ＲＡＭ１１２、通信インターフェース１１３、ハードディスクコントローラ１１４、ＦＤドライブ１１５、ＣＤＲＯＭドライブ１１６、マウスコントローラ１１７、キーボードコントローラ１１８、ディスプレイコントローラ１１９、および通信用ボード１２０が備えられており、これらはバス１１０で相互に接続されている。
【００５７】
ハードディスクコントローラ１１４は、このホストコントローラ１００に内蔵されているハードディスク１０４のアクセスを制御するものであり、ＦＤドライブ１１５、ＣＤＲＯＭドライブ１１６は、このホストコントローラ１００に取出し自在に装填されるフレキシブルディスク（ＦＤ）１３０、ＣＤＲＯＭ１４０のアクセスを制御するものである。また、マウスコントローラ１１７、キーボードコントローラ１１８は、このホストコントローラ１００に備えられたマウス１０７、キーボード１０８の操作を検出してＣＰＵ１１１に伝達する役割を担っている。さらに、ディスプレイコントローラ１１９は、このＣＰＵ１１１の指示に基づいて、ホストコントローラ１００に備えられた画像ディスプレイ１０９の表示画面上に画像を表示する役割を担っている。
【００５８】
通信用ボード１２０は、ＳＣＳＩ等の汎用インターフェースプロトコルに準拠した通信を担っており、圧縮後の画像データをインターフェースケーブル１５０を介してインターフェース機器２００（図１参照）に転送する役割を担っている。
【００５９】
さらに、通信用インターフェース１１３は、インターネット等の汎用の通信を担っており、このホストコントローラ１００は、この通信用インターフェース１１３を経由して画像データを取り込むこともできる。
【００６０】
ＲＡＭ１１２には、ハードディスク１０４に格納されているプログラムが読み出されてＣＰＵ１１１での実行のために展開され、ＣＰＵ１１１では、そのＲＡＭ１１２に展開されたプログラムが読み出されて実行される。
【００６１】
図５は、本発明のデータ圧縮プログラムの一実施形態に相当する画像圧縮処理プログラムの模式構成図である。
【００６２】
ここでは、この画像圧縮プログラム６００は、ＣＤＲＯＭ１４０に記憶されている。
【００６３】
この画像圧縮プログラム６００は、差分符号化部６１０、オフセット部６２０、プレーン分割部６３０、Ｌプレーン圧縮部６４０、Ｈプレーン圧縮部６５０、および最適ハフマンテーブル生成部６６０から構成されている。このＣＤＲＯＭ１４０には、ここに示す画像圧縮プログラム６００のほか、図１に示すホストコントローラ１００における一連の処理を実行するための各種プログラムが記憶されているが、それらについては従来と同様であるため図示および説明は省略する。
【００６４】
この図５に示すＣＤＲＯＭ１４０が、図４に示すホストコントローラ１００に装填されＣＤＲＯＭドライブ１１６でアクセスされてそのＣＤＲＯＭ１４０に記憶されているプログラムがこのホストコントローラ１００にアップロードされ、ハードディスク１０４に記憶される。このハードディスク１０４に記憶されたプログラムがそのハードディスク１０４から読み出されてＲＡＭ１１２に展開されＣＰＵ１１１で実行されると、このホストコントローラ１００は、図３に示す画像圧縮装置５００としての処理を含む、ホストコントローラとしての各種処理を実行する装置として動作する。
【００６５】
ここで、図５に示す画像圧縮プログラム６００は、ホストコントローラ１００にインストールされてＣＰＵ１１１で実行されることにより、そのホストコントローラ１００内に図３に示す画像圧縮装置５００を実現するものであり、差分符号化部６１０、オフセット部６２０、プレーン分割部６３０、Ｌプレーン圧縮部６４０、Ｈプレーン圧縮部６５０、および最適ハフマンテーブル生成部６６０は、ＣＰＵ１１１で実行されることにより、そのホストコントローラ１００を、図３に示す画像圧縮装置５００を構成する、それぞれ、差分符号化部５１０、オフセット部５２０、プレーン分割部５３０、Ｌプレーン圧縮部５４０、Ｈプレーン圧縮部５５０、および最適ハフマンテーブル生成部５６０として動作させるプログラム部品である。つまり、これらのプログラム部品により、画像圧縮装置５００の構成要素がホストコントローラ１００上に実質的に構築されることとなる。
【００６６】
図５の画像圧縮プログラム６００を構成する各部６１０〜６６０の、ＣＰＵ１１１で実行されたときの作用は、それぞれ、図３の画像圧縮装置５００を構成する各部５１０〜５６０の作用そのものである。したがって、図３の画像圧縮装置５００の各部５１０〜５６０に関する、これまでの説明、および、以下に説明する詳細説明をもって、図５の画像圧縮プログラム６００を構成する各部６１０〜６６０の説明を兼ねるものとする。
【００６７】
図６は、図３のデータ圧縮装置５００に入力される入力画像ファイル中の画像データのデータ構造を示す図である。
【００６８】
図６に示すように、図３に示すデータ圧縮装置５００に入力される画像データは、所定の主走査方向に画素がＭ個並んでいる。その主走査方向とは直角な副走査方向に教えていったときのＮ番目のラインについて、主走査方向に並ぶ各画素の画素値は、その並び順に、
Ｄn,1，Ｄn,2，…，Ｄn,m-2，Ｄn,m-1，Ｄn,m
と表現される。
【００６９】
これと同様に、副走査方向の（Ｎ＋１）番目のラインについて、主走査方向に並ぶ各画素の画素値は、その並びの順に、
Ｄn+1,1，Ｄn+1,2，…，Ｄn+1,m-2，Ｄn+1,m-1，Ｄn+1,m
と表現される。
【００７０】
ここで、図３に示すデータ圧縮装置５００を構成する差分符号化部５１０には、上記のような画像データが入力されて２次元差分符号化処理が施され、主走査方向に隣接する画素どうしの差分における副走査方向での更なる差分が求められる。
【００７１】
この２次元差分符号化処理を具体的に説明する。
【００７２】
図７は、図３のデータ圧縮装置５００を構成する差分符号化部５１０における２次元差分符号化処理を例示して示す図である。
【００７３】
この図の左側（パート（Ａ））に示す各数値のうち、四角で囲われた数値「１２  １８  ０９  １Ａ  …  ０１  ０３  ０７  Ｆ０  …」が画像データを構成する画素値であり、丸で囲まれた数値「１２  １８  ０９  １Ａ  …  ０１  ＦＣ  １５  Ｄ８  …」が２次元差分符号化処理で出力される出力値である。以下の説明では、主走査方向（図の横方向）に並ぶ画素を「ライン」と称する。
【００７４】
２次元差分符号化処理では、先ず、１ライン目の各画素値「１２  １８  ０９  １Ａ  …」については、そのまま出力する。また、主走査方向に隣接する画素値どうしの差分「１８−１２＝０６」「０９−１８＝ＥＦ」…が算出される。ここで、例えば「０９」から「１８」を引き算した結果は負の数となり、９ビットで「１ＥＦ」と表わされるが、ＭＳＢの１ビットである「１」は省略し、下位８ビットである「ＥＦ」のみを出力する。
【００７５】
次に、２ライン目については、先頭の画素値「０１」のみがそのまま出力され、主走査方向に隣接する画素値どうしの差分「０３−０１＝０２」「０７−０３＝０４」…が算出される。そして、１ライン目の差分「０６  ＥＦ  １１  …」と２ライン目の差分「０２  ０４  Ｅ９  …」との更なる差分「０２−０６＝ＦＣ」「０４−ＥＦ＝１５」…が求められて出力される。
【００７６】
次に、３ライン目についても２ライン目と同様に処理されて、３ライン目の先頭の画素値「７３」のみがそのまま出力され、主走査方向に隣接する画素値どうしの差分「６０−７３＝ＥＤ」「４０−６０＝Ｅ０」…が算出される。そして、２ライン目の差分「０２  ０４  Ｅ９  …」と３ライン目の差分「ＥＤ  Ｅ０  Ｆ０  …」との更なる差分「ＥＤ−０２＝ＥＢ」「Ｅ０−０４＝ＤＣ」…が求められて出力される。
【００７７】
以下、これと同じ演算を繰り返すことにより、図７で丸が付いた数値「１２  １８  ０９  １Ａ  …  ０１  ＦＣ  １５  Ｄ８  …７３  ＥＢ  ＤＣ  ０７  …  ＦＦ  ０７  ＢＢ  １３  …」が出力される。
【００７８】
図１に示すインターフェース機器２００では、このように２次元差分符号化されたデータを復号化するにあたり、図７の右側（パート（Ｂ））に示す演算が行なわれる。
【００７９】
先ず１ライン目の各画素値は「１２  １８  ０９  １Ａ  …」のそのままである。
【００８０】
また、２ライン目以降の各ラインの先頭画素値も「０１」「７３」「ＦＦ」…のそのままである。
【００８１】
ここで、２ライン目の２番目以降の差分値「ＦＣ  １５  Ｄ８  …」を例として、差分値から元の画素値が復号化される手順について説明する。
【００８２】
画素値の復号化に際しては、対象画素に対し、同ラインの前位置（図の左側）の画素と、前ライン（図の上側）の同位置の画素と、前ラインの前位置の画素との３つの画素それぞれにおける３つの画素値が用いられる。
【００８３】
２ライン目の２番目の画素の差分値「ＦＣ」については、１ライン目の先頭画素の画素値「１２」と、１ライン目の２番目の画素の画素値「１８」と、２ライン目の先頭画素の画素値「０１」が用いられ、まず、１ライン目の２番目と先頭との差分「１８−１２＝０６」が求められる。そして、その差分「０６」が対象の差分値「ＦＣ」に加算された結果のうちの下位８ビットで表わされる「０２」が得られ、その値「０２」に２ライン目の先頭画素の画素値「０１」が加算された結果のうちの下位８ビットで表わされる「０３」が２ライン目の２番目の画素値として復号化される。
【００８４】
２ライン目の３番目の画素値は、差分値「１５」に、１ライン目の３番目と２番目との差分「０９−１８＝ＥＦ」が加算された結果のうちの下位８ビットで表わされる「０４」に、更に２ライン目の２番目の画素値「０３」が加算された結果のうちの下位８ビットで表わされる「０７」である。
【００８５】
２ライン目の４番目の画素値は、差分値「Ｄ８」に、１ライン目の４番目３番目との差分「１Ａ−０９＝１１」が加算された結果のうちの下位８ビットで表わされる「Ｅ９」に、更に２ライン目の３番目の画素値「０７」が加算された結果のうちの下位８ビットで表わされる「Ｆ０」である。
【００８６】
以下これと同様の演算を繰り返すことにより、各差分値が、２次元差分符号化を行なう前の画素値と同一の画素値に復号化される。
【００８７】
図３の差分符号化部５１０では、以上説明したような２次元差分符号化が画像データに施される。この２次元差分符号化によって得られるデータは、図３のオフセット部５２０に入力され、そのデータの各数値について所定のオフセット値が加算される。
【００８８】
ここで、このような差分符号化およびオフセットの効果について、具体的なＣＴの画像データを例に用いて説明する。
【００８９】
図８は、ＣＴの画像データの例を示す図である。
【００９０】
この図８のパート（Ａ）には、ＣＴの画像データが表しているＣＴ画像の一例としてモノクロの風景画像が示されており、本実施形態では、このようなＣＴ画像の各画素における色の濃度が８ビットの数値で表現された画像データが用いられる。図８のパート（Ｂ）には、パート（Ａ）に示す風景画像を表す画像データにおけるデータ値のヒストグラムが示されており、このヒストグラムの横軸はデータ値、縦軸はデータ数（画素数）を表している。ＣＴ画像では一般に、ヒストグラムの幅が広く、ヒストグラム中でデータ数の山谷は生じてもヒストグラムの途中にデータ数が「０」の領域が生じることは極めてまれである。
【００９１】
図９は、ＣＴの画像データに対する差分符号化およびオフセットの効果を示す図である。
【００９２】
この図９のパート（Ａ）には、図８に示したＣＴの画像データに対して差分符号化が施されて得られるデータのヒストグラムが示されており、このヒストグラムの横軸はデータ値、縦軸は出現頻度を表している。ＣＴの画像データに対して、図６および図７で説明した差分符号化が施されると、データのヒストグラムは、一般に、この図９のパート（Ａ）に示すような、最小データ値と最大データ値の双方に鋭いピークを有するヒストグラムとなる。そして、このようなデータに対してオフセットが施されると、データのヒストグラムは、図９のパート（Ｂ）に示すような、オフセット値のところに鋭いピークを持つヒストグラムとなる。本実施形態ではオフセット値として「８」が用いられており、オフセットの結果、値が「１６」以上となるデータの頻度はほとんど「０」となっている。
【００９３】
このように差分符号化およびオフセットによってヒストグラムが変形されたデータは、図３のプレーン分割部５３０によって下位サブプレーンと上位サブプレーンとに分割される。
【００９４】
図１０は、プレーン分割部５３０によるデータ分割の効果を説明する図である。
【００９５】
この図１０には、図９のパート（Ｂ）に示すヒストグラムがデータ値「１５」とデータ値「１６」との間で切り離されたヒストグラムが示されており、図３のプレーン分割部５３０によるデータ分割は、まさにこのようなヒストグラムの分割に相当する効果を生じる。すなわち、本実施形態では、データを構成している８ビットの各数値が上位４ビットと下位４ビットとに分割されることで、下位４ビットが表す数値の連続からなる下位サブプレーンと上位４ビットが表す数値の連続からなる上位サブプレーンとが得られる。そして、下位サブプレーンを構成する４ビットの数値が値「０」から値「１５」までの各数値をそのまま表現していて、上位サブプレーンを構成する４ビットの数値の場合は、値「１６」から値「２５６」までの、１６間隔１６種類の数値を表現していると解釈すると、下位サブプレーンのヒストグラムは、この図１０の左側に示されたヒストグラムとほぼ同じものとなり、上位サブプレーンのヒストグラムは、図１０の右側に示されたヒストグラムとほぼ同じものとなる。ただし、上位サブプレーンのヒストグラムについては、図１０の右側に示されたヒストグラムのデータ値「１６」のところに、図１０の左側に示されたヒストグラムの面積に等しい高さのピークが付加されたものとなる。
【００９６】
このような上位サブプレーンは、図３に示すＨプレーン圧縮部５５０を構成するランレングス符号化部５５１に入力される。
【００９７】
本実施形態では、処理の都合上、ランレングス符号化部５５１で、上位サブプレーンを構成する連続した４ビットの数値が２つで１つの８ビットの数値として取り扱われ、１６進数表示で値「００」から値「ＦＦ」までの数値の連続に対して以下の符号化処理が適用される。
【００９８】
この符号化処理では、複数の８ビットの数値のうちの特定の数値についてのみ符号化処理が行なわれる。このため、このランレングス符号化部５５１では、受け取ったデータの中から、符号化処理を行なう数値（ここでは、この数値を「圧縮対象数値」と称する）と、その圧縮対象数値の連続数が検出される。
【００９９】
本実施形態では、一例として、「０１」、「ＦＦ」および「００」の３つの数値を圧縮対象数値としている。
【０１００】
図１１は、図３に示すランレングス符号化部５５１での符号化の説明図である。
【０１０１】
図１１の上のラインは、上位サブプレーンを構成するデータ、下のラインは、ランレングス符号化部５５１での符号化処理を行なった後のデータである。
【０１０２】
ここでは、図１１の上のラインに示すように、量子化処理部５５１からは、
「０６  ０２  ０２  ０２  ０１  ０１  ０１  ０１  ０４  ０５  ００  …  」
なるデータが入力されたものとする。このとき、図３のランレングス符号化部５５１では、先頭の「０６」は圧縮対象数値ではなく、次に続く「０２  ０２  ０２」も圧縮対象数値ではなく、次に、圧縮対象数値である「０１」が４つ連続していること、次に、圧縮対象数値ではない「０４」、「０５」を間に置いて、圧縮対象数値である「００」が３２７６７個連続していることが検出される。
【０１０３】
図１２は、ランレングス符号化部における、圧縮対象数値を対象にした符号化のアルゴリズムを示す図である。
【０１０４】
この図１２中、Ｚは同一の圧縮対象数値の連続数、例えば図１１の上のラインの「０１」についてはＺ＝４、「００」についてはＺ＝３２７６７である。
【０１０５】
また、図１２中、「ＹＹ」は、１６進２桁で表わされた圧縮対象数値自体を表わしている。その「ＹＹ」に続く、「０」又は「１」は１ビットで表現された「０」又は「１」であり、さらにそれに続く「画像圧縮装置…」は、１つの「Ｘ」が１ビットを表わしており、この「画像圧縮装置…」でＺの値を表現している。
【０１０６】
すなわち、図１２は、圧縮対象数値「ＹＹ」がＺ＜１２８連続するときは、１バイト目で圧縮対象数値「ＹＹ」を表現し、それに続く１バイトで、先頭ビットが「０」、それに続く７ビットでＺの値を表現すること、また、圧縮対象数値「ＹＹ」がＺ≧１２８連続するときは、１バイト目で圧縮対象数値「ＹＹ」を表現し、それに続く２バイト（１６ビット）のうちの先頭の１ビットを「１」とすることで２バイトに跨って表現されていることを表現し、それに続く１５ビットで、Ｚの値を表現することを意味している。
【０１０７】
この図１２に示す規則に従って図１１に示す符号化の例について説明する。
【０１０８】
図３のプレーン分割部５３０から入力されてきた上位サブプレーンのデータ（上のライン）を構成する先頭の数値「０６」は圧縮対象数値ではないため、その「０６」のまま出力される。また、それに続く「０２  ０２  ０２」も、「０２」は圧縮対象数値ではなく、これら３つの「０２」もそのまま出力される。次に、圧縮対象数値である「０１」が４個連続するため、「０１  ０４」に符号化される。次の「０４」及び「０５」は圧縮対象数値ではないため、そのまま「０４  ０５」が出力される。
【０１０９】
次に「００」が３２７６７個連続しているため、「００」を置き、次の１バイトのうちの先頭の１ビットを「１」とし、次いで１５ビットで３２７６７−１２８を表現することにより、「００  ＦＦ  ７Ｆ」の３バイトで「００」が３２７６７個連続していることを表現する。すなわち、連続数１２８は、最初のビット「１」を除き、「００  ００」と表現される。
【０１１０】
図１３は、図３のランレングス符号化部５５１における、連続数に応じた符号化処理の例を示す図である。
・「００」が１２７個連続するときは、２バイトを用いて「００  ７Ｆ」に符号化され、
・「００」が３２７６７個連続するときは、３バイトを用いて「００  ＦＦ  ７Ｅ」に符号化され、
・「００」が３２８９５個連続するときは、３バイトを用いて「００  ＦＦ  ＦＦ」に符号化され、
・「００」が１２８個連続するときは、３バイトを用いて「００  ８０  ００」に符号化され、
・「ＦＦ」が４０９６個連続するときは、３バイトを用いて「ＦＦ  ８Ｆ  ８０」に符号化される。
【０１１１】
図３に示すランレングス符号化部５５１では、上記のような符号化処理が行なわれる。
【０１１２】
本実施形態によるランレングス符号化部５５１によれば、最大圧縮率は、３／３２８９５＝１／１０，９６５にまで向上する。また、このランレングス符号化部５５１が符号化処理の対象としている上位サブプレーンのデータは、図１０のヒストグラムで説明したように、４ビットの数値のほとんどが、データ値「１６」を表現した数値「０」であり、その４ビットの数値から作られる８ビットの数値も、多くが、１６進数表示で数値「００」となる。このためランレングス符号化部５５１における符号化処理によって大幅なデータ圧縮が期待される。
【０１１３】
図３のランレングス符号化部５５１で上記の符号化処理の行なわれた後のデータは、次に図３のＨプレーン圧縮部５５０を構成するハフマン符号化部５５３に入力される。このハフマン符号化部５５３では、各画像データに最適化されたハフマンテーブルが用いられるがそのような最適化の手順についての説明は後に回し、ここでは、ハフマンテーブルの概念について説明する。
【０１１４】
図１４は、ハフマンテーブルにおける符号と数値の対応関係を表す概念図である。
【０１１５】
ここでは、「Ａ１」の出現頻度が最も強く、以下順に、「Ａ２」、「Ａ３」、「Ａ４」、…の順であるとする。尚、これら「Ａ１」、「Ａ２」等は数値を直接表わしている訳ではなく、数値を表わす記号である。すなわち、「Ａ１」は例えば数値「００」、「Ａ２」は数値「ＦＦ」等である。また、ここでは、簡単のため、図３のランレングス符号化部５５１から送られてくるデータは全てのデータ値が「Ａ１」〜「Ａ１６」の１６個の数値のうちのいずれかの数値であるものとする。そして、このような１６個の数値それぞれに対して、出現頻度に応じた符号が割り当てられてハフマンテーブルが作成されている。即ち、出現頻度の最も高い「Ａ１」には、２ビットで表わされた符号「００」が割り当てられ、次の「Ａ２」には、やはり２ビットで表わされた符号「０１」が割り当てられ、次の「Ａ３」、さらに次の「Ａ４」には、３ビットで表わされる、それぞれ、符号「１００」、符号「１０１」が割り当てられ、次の「Ａ５」〜「Ａ８」には、５ビットで表わされる各符号が割り当てられ、以下同様に、出現頻度が低い数値ほど多くのビット数で表わされた符号が割り当てられている。
【０１１６】
図１５は、ハフマンテーブルの概念を表す図である。
【０１１７】
このハフマンテーブルは、図１４と一致させてあり、出現頻度が高い数値ほど短かいビット数で表わされた符号に置き換えられるように並べられた、符号化前（置き換え前）の数値と符号化後（置き換え後）の数値との対応テーブルである。
【０１１８】
図３のＨプレーン圧縮部５５０を構成するハフマン符号化部５５３では、このようなハフマンテーブルに従ってデータの数値が符号化され、その結果、多くの数値が短かいビット数の符号に置き換えられることとなってデータ圧縮が実現される。
【０１１９】
このように、図３のＨプレーン圧縮部５５０に入力される上位サブプレーンＤ１Ｈについては、ランレングス符号化部５５１による符号化とハフマン符号化部５５３による符号化が施されることにより高い圧縮率で圧縮されて上位圧縮データＤ２Ｈとなる。
【０１２０】
図３のＬプレーン圧縮部５４０のハフマン符号化部５４１では、Ｈプレーン圧縮部５５０のランレングス符号化部５５１と同様に、４ビットの数値の２つ分が１つの８ビットの数値とみなされて処理される。また、このハフマン符号化部５４１による符号化処理では、Ｌプレーン用のハフマンテーブルが用いられる点を除いて、Ｈプレーン圧縮部５５０のハフマン符号化部５５３による符号化処理と同様な処理が実行される。この結果、下位サブプレーンＤ１Ｌは下位圧縮データＤ２Ｌとなる。
【０１２１】
ここで、ハフマンテーブルを個々の画像データに対して最適化する手順と最適化の効果について説明する。
【０１２２】
図３の最適ハフマンテーブル生成部５６０には、上述した差分符号化部５１０に入力された画像データと同じ画像データが入力される。
【０１２３】
最適ハフマンテーブル生成部５６０に入力された画像データは、先ず、プレスキャン部５６１に渡され、そのプレスキャン部５６１では、その画像データから、画像の一部に相当する部分データを抽出する。部分データの抽出は、画像の各部に及ぶが１箇所から抽出される部分データは所定数の画素の塊（例えば８画素×８画素）となっている。本実施形態では、元の画像データの総画素のうち約１００分の１程度の画素に相当する部分データが抽出される。そして、プレスキャン部５６１では、そのように抽出したその部分データに対して、上述した差分符号化部５１０、オフセット部５２０、およびプレーン分割部５３０における処理と同様の処理を施して上位データと下位データを作成する。また、上位データに対しては、上述したランレングス符号化部５５１の処理と同じ処理を施す。
【０１２４】
このようにして得られた処理後の上位データと下位データは図３のヒストグラム解析部５６２に入力され、ヒストグラム解析部５６２では、各データ中に出現する全ての数値の出現頻度（ヒストグラム）が求められる。このヒストグラムは、元の画像データの約１００分の１程度の部分データに基づいたものではあるが、その部分データは、元の画像データが表す画像の各部から抽出されたものであるので、個々の画像におけるデータ分布の特徴を十分に反映したものとなっている。ここで求められるデータヒストグラムは、個々の画像の特徴に応じて、ピークの幅や裾野の伸び方などが異なったものとなる。
【０１２５】
ヒストグラム解析部５６２によって求められたデータヒストグラム（数値の出現頻度）はテーブル作成部５６３に渡され、テーブル作成部５６３では、そのデータヒストグラムにおけるデータ分布の特徴に適した符号列がハフマンテーブルに用意される。
【０１２６】
図１６および図１７は、ハフマンテーブルに用意される符号列の例を示す図である。
【０１２７】
図１６は、データがピークに特に集中した場合の例で、図１７は、ピークの裾野がやや広い場合の例である。
【０１２８】
ここでは各符号列中の「，」よりも右側の一桁の数値がビット長を意味しており、その「，」の左から右側に向かってそのビット長分の２進符号が実際の符号を表わしている。例えば、図１６の符号列の場合、左上の第１番目の符号は「１１」の２ビット、次の２番目の符号は「０１１」の３ビット、その次の３番目の符号は「０１０」の３ビット、さらにその次の４番目の符号は「１０１０」の４ビットである。
【０１２９】
図１６の符号列の場合には、３番目までは３ビット以下の非常に短い符号であるが、１２番目以降は９ビット以上の長い符号となっている。これに対し、図１７の符号列の場合には、３ビット以下の非常に短い符号は１番目のみであるが、１３番目までは６ビット以下のそれなりに短い符号となっている。
【０１３０】
このような符号列が上位データと下位データのそれぞれについて用意され、次に、その符号列に対して数値が割り当てられてハフマンテーブルが完成する。この数値の割当の概念は図１４を参照して説明した概念そのものであるので重複説明は省略する。
【０１３１】
このような最適ハフマンテーブル生成部５６０によるハフマンテーブルの作成は、元のデータの１００分の１程度の部分データに基づくので、短時間で実行される。また、画像データの圧縮は、通常、画像を８ライン毎に分けて順次に実行されるが、ハフマンテーブルとしては画像全体に対して１つのテーブルを用意することが必要である。上述の最適ハフマンテーブル生成部５６０によれば、いわば別ルートでハフマンテーブルが作成されるので、画像の最初の８ラインに対しても、画像全体の特徴が反映された最適なハフマンテーブルで符号化処理が可能となる。
【０１３２】
このように最適ハフマンテーブル生成部５６０で作成されたハフマンテーブルが、Ｌプレーン圧縮部５４０およびＨプレーン圧縮部５５０それぞれのハフマン符号化部５４１，５５３に渡されて、上述したようにハフマン符号化が行われる。
【０１３３】
図１８は、最適化されたハフマンテーブルが用いられることによるデータ圧縮の効果を示す図である。
【０１３４】
この図１８には、１０種類の典型的なＣＴ画像のデータに対する圧縮率が示されており、比較のために、従来の圧縮技術のうちで特に高い圧縮率が得られる圧縮方式として知られている、可逆圧縮方式のＪＰＥＧ２０００による圧縮率も示されている。また、この図１８のパート（Ａ）には、図１６に示した符号列が固定的に用いられた場合の圧縮率が示されており、パート（Ｂ）には、各画像データに適した符号列が用いられた場合の圧縮率が示されている。なお、圧縮率は、元のデータを１００％とする率で表現されており、いわゆる「高い圧縮率」とは、圧縮率の数値が小さいことを意味している。
【０１３５】
図１８のパート（Ａ）に示すように、符号列が固定的である場合には、ＪＰＥＧ２０００による圧縮率にかなり迫っているものの、５％〜１０％程度の差が残っている。これに対し、各画像データに適した符号列が用いられた場合には、図１８のパート（Ｂ）に示すように、ＪＰＥＧ２０００による圧縮率に対してほぼ遜色のない程度にまで迫っており、可逆圧縮にもかかわらず高い圧縮率が実現されている。
【０１３６】
以上説明したような各種の処理が図３に示す画像圧縮装置５００の各部で実行されることにより、画像圧縮装置５００は、画像データを可逆圧縮によって圧縮することができ、特にＣＴ画像のデータについては大幅な圧縮が実現される。
【０１３７】
なお、上記説明では、本発明の実施形態としてのデータ圧縮がＣＴ画像のデータのみに施される例が示されているが、本発明のデータ圧縮装置は、ＣＴ画像とＬＷ画像との双方のデータに対してデータ圧縮を施すものであってもよく、さらには、画像以外の情報を表したデータに対してデータ圧縮を施すものであってもよい。
【０１３８】
また、上記説明では、本発明にいう差分生成部の一例として、２次元差分符号化処理を行うものが示されているが、本発明にいう差分生成部は、主走査方向や副走査方向の１次元的な差分を求めるものであってもよい。
【図面の簡単な説明】
【０１３９】
【図１】データ圧縮技術が適用されたプリントシステムの一例を示す図である。
【図２】プリントシステムにおけるデータ処理の流れを示す図である。
【図３】本発明のデータ圧縮装置の一実施形態に相当する画像圧縮装置を示すブロック構成図である。
【図４】図１に示すホストコントローラのハードウェア構成図である。
【図５】本発明のデータ圧縮プログラムの一実施形態に相当する画像圧縮処理プログラムの模式構成図である。
【図６】図３のデータ圧縮装置に入力される入力画像ファイル中の画像データのデータ構造を示す図である。
【図７】図３のデータ圧縮装置を構成する差分符号化部における２次元差分符号化処理を例示して示す図である。
【図８】ＣＴの画像データの例を示す図である。
【図９】ＣＴの画像データに対する２次元差分符号化およびオフセットの効果を示す図である。
【図１０】プレーン分割部によるデータ分割の効果を説明する図である。
【図１１】図３に示すランレングス符号化部での符号化の説明図である。
【図１２】ランレングス符号化部における、圧縮対象数値を対象にした符号化のアルゴリズムを示す図である。
【図１３】図３のランレングス符号化部における、連続数に応じた符号化処理の例を示す図である。
【図１４】ハフマンテーブルにおける符号と数値の対応関係を表す概念図である。
【図１５】ハフマンテーブルの概念を示す図である。
【図１６】ハフマンテーブルに用意される符号列の例を示す図である。
【図１７】ハフマンテーブルに用意される符号列の別の例を示す図である。
【図１８】最適化されたハフマンテーブルが用いられることによるデータ圧縮の効果を示す図である。
【符号の説明】
【０１４０】
１１    画像のデータ
１２Ａ，１２Ｂ，１３Ａ，１３Ｂ    ビットマップデータ
１４    非可逆の圧縮データ
１５    可逆の圧縮データ
１００    ホストコントローラ
１４０    ＣＤＲＯＭ
１５０    汎用インターフェースケーブル
２００    インターフェース機器
２５０    専用インターフェースケーブル
３００    プリンタ
５００    画像圧縮装置
５１０    差分符号化部
５２０    オフセット部
５３０    プレーン分割部
５４０    Ｌプレーン圧縮部
５４１    ハフマン符号化部
５４２    モード切換部
５５０    Ｈプレーン圧縮部
５５１    ランレングス符号化部
５５２    データスキャニング部
５５３    ハフマン符号化部
５６０    最適ハフマンテーブル生成部
５６１    プレスキャン部
５６２    ヒストグラム解析部
５６３    テーブル作成部
６００    画像圧縮プログラム
６１０    差分符号化部
６２０    オフセット部
６３０    プレーン分割部
６４０    Ｌプレーン圧縮部
６５０    Ｈプレーン圧縮部
６６０    最適ハフマンテーブル生成部
【図１】
2006279208.tif 000003
【図２】
2006279208.tif 000004
【図３】
2006279208.tif 000005
【図４】
2006279208.tif 000006
【図５】
2006279208.tif 000007
【図６】
2006279208.tif 000008
【図７】
2006279208.tif 000009
【図８】
2006279208.tif 000010
【図９】
2006279208.tif 000011
【図１０】
2006279208.tif 000012
【図１１】
2006279208.tif 000013
【図１２】
2006279208.tif 000014
【図１３】
2006279208.tif 000015
【図１４】
2006279208.tif 000016
【図１５】
2006279208.tif 000017
【図１６】
2006279208.tif 000018
【図１７】
2006279208.tif 000019
【図１８】
2006279208.tif 000020