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