(57)【要約】【課題】  本発明は、画像データ等のデータを圧縮するデータ圧縮装置等に関し、圧縮率を向上させる。【解決手段】  被圧縮データを構成する数値の連続について隣接する数値どうしの差分を求め、その差分データ中に出現する数値のうちの特定の数値「ＹＹ」のみ符号化を行なう。その符号化にあたっては、その数値「ＹＹ」の連続数ＺがＺ＜１２８であるかＺ≧１２８であるかに応じて異なるビット数で連続数Ｚを表わす符号化を行なう。その符号化により得られたデータにさらに、画像の種別に応じたハフマンテーブルを用いてハフマン符号化を行なう。【選択図】        図４
2005260420.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
と表現される。
【００７６】
ここで、図４に示すデータ圧縮装置５００を構成する差分符号化部５１０では、上記のような画像データを入力し、副走査方向に隣接する画素どうしの差分が求められる。すなわち、Ｎ番目のラインと（Ｎ＋１）番目のラインとの差分であって、主走査方向に並ぶｊ番目の画素の差分をＳn,jとすると、この差分Ｓn,jは、
Ｓn,j＝Ｄn+1,j−Ｄn,j    （ｊ＝１〜ｍ）
と表現される。
【００７７】
この差分演算を具体的に説明する。
【００７８】
図８は、図４のデータ圧縮装置５００を構成する差分符号化部５１０における差分符号化処理を例示して示す図である。
【００７９】
ここでは、図７に示す副走査方向に並ぶある縦一列の画素値が、図８の「画像データ」
の欄に示すように、
「１２  ０１  ０２  ＦＦ  ６４  …  ４０  ４０  ３Ｆ  …」
であったとする。尚、ここでは、各画素値は、１６進２桁（１バイト＝８ビット）で表現されている。ここでは「ライン」は主走査方向に並ぶ画素を指している。
【００８０】
先ず、１ライン目の画素値「１２」については、そのまま出力する。
【００８１】
次に、２ライン目の画素値「０１」から１ライン目の画素値「１２」を引き算し、その結果を出力する。ここで、「０１」から「１２」を引き算した結果は負の数となり、９ビットで「１ＥＦ」と表わされるが、ＭＳＢの１ビットである「１」は省略し、下位８ビットである「ＥＦ」のみを出力する。
【００８２】
次に、３ライン目の画素値「０２」から２ライン目の画素値「０１」を引き算し、その結果の値「０１」を出力する。
【００８３】
次に、４ライン目の画素値「ＦＦ」から３ライン目の画素値「０２」を引き算し、その結果の値「ＦＤ」を出力する。
【００８４】
次に、５ライン目の画素値「６４」から４ライン目の画素値「ＦＦ」を引き算し、その結果の値から、ＭＳＢの１ビットである「１」を省略し、下位８ビットである「６５」を出力する。
【００８５】
以下、これと同じ演算を繰り返すことにより、図８の「差分エンコード（下位８ビット）」の欄に表わされている。
【００８６】
「（１２）  ＥＦ  ０１  ＦＤ  ６５  …  Ｌ０  ００  ＦＦ  …」
が出力される。
【００８７】
図１に示すインタフェース機器２００では、この差分符号化されたデータを復号化するにあたり、図８の右側に示す演算が行なわれる。
【００８８】
先ず１ライン目の画素値は「１２」のそのままである。
【００８９】
２ライン目の画素値は、差分値「ＥＦ」に１ライン目の画素値「１２」を足し算した結果のうちの下位８ビットで表わされる「０１」である。
【００９０】
３ライン目の画素値は、差分値「０１」に、上記で求めた２ライン目の画素値「０１」を足し算することにより求められる「０２」である。
【００９１】
４ライン目の画素値は、差分値「ＦＤ」に、上記で求めた３ライン目の画素値「０２」を足し算することにより求められる「ＦＦ」である。
【００９２】
５ライン目の画素値は差分値「６５」に、上記で求めた４ライン目の画素値「ＦＦ」を足し算した結果のうちの下位８ビットで表わされる「６４」である。
【００９３】
以下これと同様の演算を繰り返すことにより、差分符号化を行なう前のデータと同一のデータに復号化される。
【００９４】
ここでは、主走査方向の１ライン目に並ぶ各画素の画素値を演算における先頭の数値として、図８に例示した演算が行なわれる。すなわち、ここに示す例では、副走査方向の一列を、本発明にいう、「入力されてきたデータを構成する数値の連続を順次区切ったときの各区切り」として取り扱っており、１ライン目の画素値を、「各区切りごとの先頭の数値」として取り扱っている。
【００９５】
尚、ここでは副走査方向の一列を１つの区切りとしているが、どの単位で区切るかは任意であり、例えば副走査方向の一列を複数に区切ってもよく、副走査方向の複数の列をひとまとめにして１つの区切りとしてもよい。
【００９６】
図９は、差分符号化による作用説明図である。
【００９７】
図９（Ａ）は、画像の概念を表わしており、ここでは、図の縦方向を主走査方向、横方向を副走査方向とし、副走査方向（横方向）に引いた矢印Ａ上の各画素の画素値に着目している。尚、ここではＬＷ画像を圧縮対象として説明しているがＣＴ画像を圧縮対象とする場合も同様である。
【００９８】
この画像上には、主走査方向に延びる画素値「６３」の濃度を持つ直線Ｌ１と、画素値「ＦＦ」の濃度を持つ直線Ｌ２が描かれており、その右側には、ＣＴ画像があて嵌められるＣＴ画像領域が存在する。ＣＴ画像があて嵌められる領域は、画素値「００」で表わされている。
【００９９】
図９（Ａ）の矢印Ａ上に並ぶ画素の画素値は、図９（Ｂ）示すように、左側から順に、最初は「０１」が続き直線Ｌ１上では「６３」が続き、再度「０１」が続き、直線Ｌ２上では「ＦＦ」となり、再度「０１」に戻り、ＣＴ画像があて嵌められる領域では「００」が続き、ＣＴ画像領域が終わるともう一度「０１」が続く。ここで、画素値「０１」は、何も描かれていない領域（用紙の地の領域）であることを表わしている。
【０１００】
図９（Ｂ）に示す元データに対し、差分演算を行なうと図９（Ｃ）に示す差分後データとなり、「００」の出現確率が大きく増加する。図８を参照して説明した、図４の差分符号化部５１０では、ＭＳＢの１ビット（符号ビット）は省略するため、その差分符号化部５１０から出力されるデータは、図９（Ｄ）のようになる。この場合であっても、図８を参照して説明したように、最初の画素値（図８の場合の１ライン目の画素値「１２」）をそのまま伝えることによって、元データを順次復元することができる。
【０１０１】
図４に示す差分符号化部５１０で上記の差分符号化処理が行なわれた後のデータは、今度は、ランレングス符号化部５２０に入力される。
【０１０２】
ランレングス符号化部５２０では、差分符号化部５１０から受け取ったデータを構成する複数の数値のうちの特定の数値についてのみ符号化処理が行なわれる。このランレングス符号化部５２０では、特定数値検出部５２０では差分符号化部５１０から受け取ったデータの中からランレングス符号化処理を行なう数値（ここでは、この数値を「圧縮対象数値」と称する）と、その圧縮対象数値の連続数が検出される。
【０１０３】
本実施形態における、図４のランレングス符号化部５２０では、一例として、「０１」、「ＦＦ」および「００」の３つの数値を圧縮対象数値としている。
【０１０４】
ＬＷ画像の背景等は、用紙の地の色そのものを表わす「０１」が多いと考えられるため、ここでは、この「０１」を圧縮対象数値の１つとしている。
【０１０５】
また、「ＦＦ」は最大濃度を表わす値である。ＬＷ画像の文字の部分は画素値が「ＦＦ」とは限らないが、「ＦＦ」の出現頻度が比較的多いため、ここでは「ＦＦ」も圧縮対象数値の１つとしている。
【０１０６】
さらに、ＬＷ画像中の「００」は、図２に示すインタフェース機器内部処理中の合成／タグ付加処理においてＬＷデータではなくＣＴデータの方を選択することを指示する値であり、図１に示すプリンタ３００で最終的にプリントされる画像１枚中にＬＷ画像とＣＴ画像とが混在した画像である場合に、ＬＷデータ中「００」も出現頻度が高い画素値となる。このため、ここでは、この「００」も圧縮対象数値の１つとしている。
【０１０７】
ここでは、上記のとおり「０１」、「ＦＦ」、「００」の３つの数値を圧縮対象数値としているが、以下の理由から「ＦＤ」、「０２」も圧縮対象数値として指定してもよい。
【０１０８】
図４に示す実施形態では、図４のランレングス符号化部５２０の前段に差分符号化部５１０が置かれている。そこで、上記の出現頻度の高い３つの数値「００」、「ＦＦ」、「０１」の間の差分を求めると、符号ビットを除き、
ＦＦ−００＝ＦＦ
００−ＦＦ＝０１
０１−００＝０１
０１−０１＝ＦＦ
ＦＦ−０１＝ＦＥ
０２−ＦＦ＝０２
となるが、これら６つの差分値のうちの、「ＦＦ」と「０１」は既に上の理由により圧縮対象数値として挙げられており、残りの、「ＦＥ」と「０２」を圧縮対象数値として加えて、「０１」、「ＦＦ」、「００」、「ＦＥ」、および「０２」の５つを圧縮対象数値としてもよい。
【０１０９】
ただし、ここでは、「０１」、「ＦＦ」、「００」の３つが圧縮対象数値として指定されているものとして説明を続ける。
【０１１０】
図１０は、図４に示すランレングス符号化部５２０での符号化の説明図である。図１０の上のラインは、差分符号化部５１０から受け取ったデータ、下のラインは、ランレングス符号化部５２０での符号化処理を行なった後のデータである。
【０１１１】
ここでは、図１０の上のラインに示すように、差分符号化部５１０からは、
「０６  ０２  ０２  ０２  ０１  ０１  ０１  ０１  ０４  ０５  ００  …  」
なるデータが入力されたものとする。このとき、ランレングス符号化部５２０では、先頭の「０６」は圧縮対象数値ではなく、次に続く「０２  ０２  ０２」も圧縮対象数値ではなく、次に、圧縮対象数値である「０１」が４つ連続していること、次に、圧縮対象数値ではない「０４」、「０５」を間に置いて、圧縮対象数値である「００」が３２７６７個連続していることが検出される。
【０１１２】
図１１は、ランレングス符号化部における、圧縮対象数値を対象にした符号化のアルゴリズムを示す図である。
【０１１３】
この図１１中、Ｚは同一の圧縮対象数値の連続数、例えば図１０の上のラインの「０１」についてはＺ＝４、「００」についてはＺ＝３２７６７である。
【０１１４】
また、図１１中、「ＹＹ」は、１６進２桁で表わされた圧縮対象数値自体を表わしている。その「ＹＹ」に続く、「０」又は「１」は１ビットで表現された「０」又は「１」であり、さらにそれに続く「ＸＸ…」は、１つの「Ｘ」が１ビットを表わしており、この「ＸＸ…」でＺの値を表現している。
【０１１５】
すなわち、図１１は、圧縮対象数値「ＹＹ」がＺ＜１２８連続するときは、１バイト目で圧縮対象数値「ＹＹ」を表現し、それに続く１バイトで、先頭ビットが「０」、それに続く７ビットでＺの値を表現すること、また、圧縮対象数値「ＹＹ」がＺ≧１２８連続するときは、１バイト目で圧縮対象数値「ＹＹ」を表現し、それに続く２バイト（１６ビット）のうちの先頭の１ビットを「１」とすることで２バイトに跨って表現されていることを表現し、それに続く１５ビットで、Ｚの値を表現することを意味している。
【０１１６】
この図１１に示す規則に従って図１０に示す符号化の例について説明する。
【０１１７】
図４の差分符号化部５１０から入力されてきたデータ（上のライン）を構成する先頭の数値「０６」は圧縮対象数値ではないため、その「０６」のまま出力される。また、それに続く「０２  ０２  ０２」も、「０２」は圧縮対象数値ではなく、これら３つの「０２」もそのまま出力される。次に、圧縮対象数値である「０１」が４個連続するため、「０１  ０４」に符号化される。次の「０４」及び「０５」は圧縮対象数値ではないため、そのまま「０４  ０５」が出力される。
【０１１８】
次に「００」が３２７６７個連続しているため、「００」を置き、次の１バイトのうちの先頭の１ビットを「１」とし、次いで１５ビットで３２７６７−１２８を表現することにより、「００  ＦＦ  ７Ｆ」の３バイトで「００」が３２７６７個連続していることを表現する。すなわち、連続数１２８は、最初のビット「１」を除き、「００  ００」と表現される。
【０１１９】
図１２は、図４のランレングス符号化部５２０における、連続数に応じた符号化処理の例を示す図である。
・「００」が１２７個連続するときは、２バイトを用いて「００  ７Ｅ」に符号化され、
・「００」が３２７６７個連続するときは、３バイトを用いて「００  ＦＦ  ７Ｅ」に符号化され、
・「００」が３２８９５個連続するときは、３バイトを用いて「００  ＦＦ  ＦＦ」に符号化され、
・「００」が１２８個連続するときは、３バイトを用いて「００  ８０  ００」に符号化され、
・「ＦＦ」が４０９６個連続するときは、３バイトを用いて「ＦＦ  ８Ｆ  ８０」に符号化される。
【０１２０】
図４に示すランレングス符号化部５２０では、上記のような符号化処理が行なわれる。
【０１２１】
この場合、圧縮対象数値以外の数値についてはそのまま出力されるため、図３を参照して説明したＰａｃｋＢｉｔｓ符号化のような、かえって冗長になってしまうという事態が回避される。また、図３のＰａｃｋＢｉｔｓ符号化の場合は、最大圧縮率は１／６４であるが、本実施形態によるランレングス符号化部５２０によれば、最大圧縮率は、３／３２８９５＝１／１０，９６５にまで向上する。
【０１２２】
図４のランレングス符号化部５２０で上記の符号化処理の行なわれた後のデータは、次に図４のデータスキャニング部５３０およびハフマン符号化部５７０に入力される。
【０１２３】
データスキャニング部５３０では、１枚のＬＷ画像全体を構成する画素について画素値の出現頻度(ヒストグラム)か求められ、そのヒストグラムが画像判定部５４０と符号割当部５６０に伝えられる。
【０１２４】
図１３は、図４のデータスキャニング部５３０で求められたヒストグラムの例を示す図である。図１３（Ａ）、（Ｂ）は、それぞれＬＷデータ，ＣＴデータのヒストグラムである。
【０１２５】
ＬＷデータの場合、図４のランレングス符号化部５２０での符号化が行なわれた後においても、図１３（Ａ）に示すように、いくつかの特定の数値の頻度が高くなっている。一方、ＣＴデータの場合は、値０付近と値２５６（最大値）付近にピークがあるが、それら両端以外ではどの数値にも低い頻度で満遍なく分布している。
【０１２６】
図４の画像判定部では、ＬＷデータとＣＴデータとの上記の差異を利用して、例えば値０〜９および値２４７〜２５６の頻度を合わせたものが画像全体の画素数の７０％以上を占める場合をＣＴデータ、７０％未満の場合をＬＷデータとして判定される。
【０１２７】
ここでは、「Ａ１」の出現頻度が最も強く、以下順に、「Ａ２」、「Ａ３」、「Ａ４」、…の順であるとする。尚、これら「Ａ１」、「Ａ２」等は数値を直接表わしている訳ではなく、数値を表わす符号である。すなわち、「Ａ１」は例えば数値「００」、「Ａ２」は数値「ＦＦ」等である。また、ここでは、簡単のため、図４のランレングス符号化部５２０から送られてくるデータは全ての画素が「Ａ１」〜「Ａ１６」の１６個の数値のうちのいずれかの数値で表わされるものとする。
【０１２８】
図１４は、図４に示す符号割当部５６０における割当処理を例示した図である。
【０１２９】
ここでは、符号列「００  ０１  １００  １０１  １１０００  １１００１  …」は図４の画像判定部５４０での画像種別の判定結果に基づいてテーブル記憶部５５０から読み出されたハフマンテーブル上に並ぶ符号列である。
【０１３０】
ここでは、出現頻度の最も高い「Ａ１」は、２ビットで表わされた符号「００」に割り当てられ、次の「Ａ２」は、やはり２ビットで表わされた符号「０１」に割り当てられ、次の「Ａ３」、さらに次の「Ａ４」は、３ビットで表わされる、それぞれ、「１００」、「１０１」に割り当てられ、次の「Ａ５」〜「Ａ８」は、５ビットで表わされる各数値に割り当てられ、以下同様に、出現頻度が低い数値ほど多くのビット数で表わされた数値に割り当てられる。
【０１３１】
図４のハフマン符号化部５７０では、符号割当部５６０において上記のように数値を符号が割り当てられたハフマンテーブルを参照しながら、ランレングス符号化部５２０から入力されてきたデータ中の各数値が各符号に変換される。
【０１３２】
図１５、図１６は、ハフマンテーブルの各例を示す図である。図１５はＬＷデータ符号化用のハフマンテーブルの一例、図１６はＣＴデータ符号化用のハフマンテーブルの一例である。ここでは各符号列中の「，」よりも右側の一桁の数値がビット長を意味しており、その「，」の左から右側に向かってそのビット長分の２進符号が実際の符号を表わしている。例えば、図１５のＬＷデータ符号化用のハフマンテーブルの場合、右上の＃１の符号は「００」の２ビット、次の＃２の符号は「０１０」の３ビット、その次の＃３の符号は「１１１」の３ビット、さらにその次の＃４の符号は「１１００００００」の８ビットである。
【０１３３】
図４のテーブル記憶部５５０からは、今回圧縮を行なっているデータがＬＷデータであるときは図１５に示すＬＷデータ符号化用のハフマンテーブル５５０ａが読み出されて符号割当部５６０に入力され、一方、今回圧縮を行なっているデータがＣＴデータであるときは図１６に示すＣＴデータ符号化用のハフマンテーブル５５０ｂが読み出されて符号割当部５６０に入力され、符号割当部５６０では、このようにして入力されてきた、画像の種別に応じたハフマンテーブルに関し、データスキャニング部５３０で求められたヒストグラムに基づいて、図１４を参照して説明したようにして、数値の出現頻度順に、ナンバ＃の若い符号に出現頻度の高い数値が割り当てられる。
【０１３４】
図１７は、図４に示すデータ圧縮装置５００から出力される画像データのデータフォーマットの一例を示す図である。
【０１３５】
最初に画像データファイルの先頭であることを表わすＳＯＩ（Ｓｔａｒｔ  Ｏｆ  Ｉｍａｇｅ）を表わす符号が配置され、次いで画像のサイズ等の情報が記録されたヘッダが続き、さらにその後に、図４のデータ圧縮装置５００で、今回の入力画像ファイル中の画像データについて行なわれたデータ圧縮処理に関する圧縮情報が配置される。この圧縮情報には、ＣＴデータとＬＷデータとの区別を表わす情報、ハフマン符号化部５７０で用いられたハフマンテーブル（図１５，図１６参照）、およびそのハフマンテーブル中の各符号とその符号に割り当てた数値との対応など、図１のインタフェース機器２００での復号化に必要な全ての情報が含まれている。
【０１３６】
図１６に示すように、圧縮情報の後には、ハフマン符号化後の実際の画像データが続き、最後にＥＯＩ（Ｅｎｄ  Ｏｆ  Ｉｍａｇｅ）の符号で締め括られる。
【０１３７】
図４に示すデータ圧縮装置５００からは、図１６に示すように形式が整えられた画像データファイルが図１に示すインタフェース機器２００に転送され、インタフェース機器２００では、これまで説明してきた符号化とは逆の順序で復号化が行なわれることによりデータ伸長が行なわれ、図４に示すデータ圧縮装置５００に入力する前の入力画像ファイル内の画像データと同一の画像データに復元される。
【０１３８】
尚、図４のデータ圧縮装置５００には符号割当部５６０が備えられており、その符号割当部５６０では、テーブル記憶部５５０から読み出した、画像種別に応じたハフマンテーブル５５０ａ，５５０ｂに、出現頻度に応じた数値が割り当てられる旨説明したが、符号割当部５６０を備えずに、ハフマンテーブル５５０ａ，５５０ｂ中の各符号にあらかじめ固定的に各数値を割り当てておいてもよい。画像データ中の画素値の出現頻度が画像ごとに大きくは異ならない場合などには、固定的に数値を割り当てておくと一層の高速処理が可能となる。あるいは、例えばＬＷデータ符号化用のハフマンテーブル５５０ａについては符号割当部５６０で符号と数値との対応付けを行ない、ＣＴデータ符号化用のハフマンテーブル５５０ｂについては、符号にあらかじめ固定的に数値を割り当てておいてもまた
また、図４に示すデータ圧縮装置５００では、差分符号化部５１０を備えており、この差分符号化部５１０を備えると、前述したように数値「００」の出現頻度が増加するため好ましいが、本発明ではこの差分符号化部５１０を備えることは必ずしも必要ではなく、入力されてきたデータに差分符号化処理を行なうことなく、直接に図４に示すランレングス符号化部５２０に入力してもよい。あるいは、上述の差分符号化を行なう差分符号化部５１０に代えて、他のデータ圧縮処理を行なう符号化部をそこに配置してもよい。
【図面の簡単な説明】
【０１３９】
【図１】データ圧縮技術が適用されたプリントシステムの一例を示す図である。
【図２】プリントシステムにおけるデータ処理の流れを示す図である。
【図３】ＰａｃｋＢｉｔｓ符号化方式の説明図である。
【図４】本発明のデータ圧縮装置の一実施形態を示すブロック構成図である。
【図５】図１に示すホストコントローラのハードウェア構成図である。
【図６】本発明のデータ圧縮処理プログラムの模式構成図である。
【図７】図４のデータ圧縮装置に入力される入力画像ファイル中の画像データのデータ構造および差分符号化の概念を示す図である。
【図８】図４のデータ圧縮装置を構成する差分符号化部における差分符号化処理を例示して示す図である。
【図９】差分符号化による作用説明図である。
【図１０】図４に示すランレングス符号化部での符号化の説明図である。
【図１１】ランレングス符号化部における、圧縮対象数値を対象にした符号化のアルゴリズムを示す図である。
【図１２】図４のランレングス符号化部における、連続数に応じた符号化処理の例を示す図である。
【図１３】図４のデータスキャニング部で求められるヒストグラムの例を示す図である。
【図１４】図４に示す符号割当部における割当処理を例示した図である。
【図１５】ハフマンテーブルの一例を示す図である。
【図１６】ハフマンテーブルの他の例を示す図である。
【図１７】図４に示すデータ圧縮装置から出力される画像データのデータフォーマットの一例を示す図である。
【符号の説明】
【０１４０】
１１    データ
１２Ａ，１２Ｂ，１３Ａ，１３Ｂ，    ビットマップデータ
１４    圧縮データ
１５    ＬＷ可逆圧縮データ
１００    ホストコントローラ
１４０    ＣＤＲＯＭ
１５０    汎用インタフェース
２００    インタフェース機器
２５０    専用インターフェース
３００    プリンタ
５００    データ圧縮装置
５１０    差分符号化部
５２０    ランレングス符号化部
５３０    データスキャニング部
５４０    画像判定部
５５０    テーブル記憶部
５６０    符号割当部
５７０    ハフマン符号化部
６００    データ圧縮プログラム
６１０    差分符号化部
６２０    ランレングス符号化部
６３０    データスキャニング部
６４０    画像判定部
６５０    テーブル記憶部
６６０    符号割当部
６７０    ハフマン符号化部
【図１】
2005260420.tif 000003
【図２】
2005260420.tif 000004
【図３】
2005260420.tif 000005
【図４】
2005260420.tif 000006
【図５】
2005260420.tif 000007
【図６】
2005260420.tif 000008
【図７】
2005260420.tif 000009
【図８】
2005260420.tif 000010
【図９】
2005260420.tif 000011
【図１０】
2005260420.tif 000012
【図１１】
2005260420.tif 000013
【図１２】
2005260420.tif 000014
【図１３】
2005260420.tif 000015
【図１４】
2005260420.tif 000016
【図１５】
2005260420.tif 000017
【図１６】
2005260420.tif 000018
【図１７】
2005260420.tif 000019