(57)【特許請求の範囲】
【請求項１】
ディザパターンを用いて擬似階調化された画像である擬似階調画像のデータを圧縮する方法であって、
前記擬似階調画像を所定の領域ごとに区画する第１のステップと、
前記各領域の代表値を決定する第２のステップと、
決定した代表値を用いて圧縮データを作成する第３のステップとを有してなり、
前記第２のステップにおいて、
前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行った場合に当該注目領域における前記擬似階調画像が再現されるような、そのような代表値を求めて当該注目領域の代表値として決定する、
ことを特徴とする画像データの圧縮方法。
【請求項２】
ディザパターンを用いて擬似階調化された画像である擬似階調画像のデータを圧縮する方法であって、
前記擬似階調画像を所定の領域ごとに区画する第１のステップと、
前記各領域の代表値を決定する第２のステップと、
決定した代表値を用いて圧縮データを作成する第３のステップとを有してなり、
前記第２のステップにおいて、
前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行って得られる画像データのドットの配列パターンと当該注目領域内の画像データのドットの配列パターンとが所定の誤差範囲内で一致するような、そのような代表値を求めて当該注目領域の代表値として決定する、
ことを特徴とする画像データの圧縮方法。
【請求項３】
前記第２のステップにおいて、前記代表値を、前記各領域の端部に位置する画素の濃度値に対応する値とする、
請求項１または２記載の画像データの圧縮方法。
【請求項４】
前記第２のステップにおいて、前記代表値として選択することの可能な値が所定の範囲を持っている場合に、その範囲における中央値を前記代表値として決定する、
請求項１ないし３のいずれかに記載の画像データの圧縮方法。
【請求項５】
前記補間ルールは、当該注目領域の代表値および当該注目領域に隣接する２つの領域のそれぞれの代表値の合計３つの代表値で定義される平面によって各画素の濃度を補間するものである、
請求項１ないし４のいずれかに記載の画像データの圧縮方法。
【請求項６】
前記第２のステップにおいて、前記注目領域内において代表値が決定できない場合に、当該注目領域における画像データを、当該注目領域の代替の代表値として決定する、
請求項１ないし５のいずれかに記載の画像データの圧縮方法。
【請求項７】
前記第２のステップにおいて、前記注目領域内において代表値が決定できない場合に、当該注目領域をさらに複数の小領域に区画し、各小領域内において代表値を決定する、
請求項１ないし５のいずれかに記載の画像データの圧縮方法。
【請求項８】
前記第２のステップにおいて、前記小領域内において代表値が決定できない場合に、当該小領域における画像データを、当該小領域の代替の代表値として決定する、
請求項７記載の画像データの圧縮方法。
【請求項９】
請求項１ないし８のいずれかに記載の方法によって圧縮されたデータを復元する方法であって、
圧縮されたデータから各領域の代表値を取得し、前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた前記補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行って擬似階調画像を復元する、
ことを特徴とする擬似階調画像の復元方法。
【請求項１０】
ディザパターンを用いて擬似階調化された画像である擬似階調画像のデータを圧縮する装置であって、
前記擬似階調画像を所定の領域ごとに区画する第１の手段と、
前記各領域の代表値を決定する第２の手段と、
決定した前記代表値を用いて圧縮データを作成する第３の手段とを有してなり、
前記第２の手段は、
前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行った場合に当該注目領域における前記擬似階調画像が再現されるような、そのような代表値を求めて当該注目領域の代表値として決定する、
ことを特徴とする画像データの圧縮装置。
【請求項１１】
前記第２の手段において前記注目領域内において代表値が決定できない場合に、当該注目領域をさらに複数の小領域に区画する手段を有し、前記第２の手段は、各小領域において代表値を決定する、
請求項１０記載の画像データの圧縮装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディザパターンを用いて擬似階調化された画像データを圧縮する方法および装置、並びに擬似階調画像の復元方法に関する。
【背景技術】
【０００２】
一般に、コンピュータとプリンタなどから構成されるプリントシステムが用いられている。このようなプリントシステムにおいては、プリントすべき画像データに対して、擬似階調化などの画像処理をコンピュータ側で行い、プリンタ側ではコンピュータから送信される画像データに対して特別な処理を行うことなく、そのまま出力して用紙にプリントするという方式がある。
【０００３】
従来より、この方式に使用されるプリンタとしてラスタプリンタが知られている。ラスタプリンタは、プリンタ側で特別な画像処理を行わないため、小規模なハードウェアを用いて安価に実現できる。しかし、その反面、そのまま用紙にプリント可能な画像データをプリンタに送信するため、送信するデータ量が大きくなってしまうという欠点がある。また、近年の高画質化への要請から画像データがますます大きくなり、その結果、プリンタに送信するデータ量がさらに大きくなってしまう。そのため、コンピュータからプリンタへの画像データの送信に多くの時間を要することとなる。
【０００４】
この問題を解消するために、コンピュータ側において画像データを圧縮する必要がある。しかし、圧縮のための処理が複雑であった場合には、圧縮処理自体に時間を要してしまい、プリンタ側においても展開処理に時間を要したりそのためのハードウェアの規模が大きくなって高価となる。
【０００５】
したがって、安価なプリンタの使用を可能とし、全体として処理を高速に行えるプリントシステムを実現するために、圧縮時の処理が軽く、小規模なハードウェアで展開でき、かつ高い圧縮率を実現できる圧縮技術が望まれる。
【０００６】
ところで、多階調の画像データをプリンタでプリントするには、多くの場合、その画像データを擬似階調化しなければならない。擬似階調化の方法として、ディザ法が従来からよく知られている。ディザ法では、ディザパターンを用い、ディザパターンの各しきい値と画像データの各画素の値とを比較して２値化または多値化する。
【０００７】
ディザパターンに着目した圧縮技術として、特許文献１に開示された方法がある。特許文献１に示された方法によると、２値化された画像データを所定の大きさのブロックに分割する。任意の画像ブロックに含まれるドットの個数に対応する基準パターンと当該画像ブロックとの比較を行い、画像ブロックと基準パターンとが一致した場合は基準パターンを示す符号を割当て、そうでない場合は比較結果を符号化する。
【０００８】
また、２値化された画像データのための圧縮技術として、ＩＴＵ（国際電気通信連合）−Ｔ勧告により採用が認められたＪＢＩＧ方式が知られている。
【０００９】
また、ディザパターンにより擬似階調化された画像データを圧縮する方法が特許文献２に開示されている。特許文献２に記載の方法によると、各画素についての画素値がしきい値と比較され、これによって各画素ごとにレンジが求められる。
【特許文献１】特開平６−１５２９８６
【特許文献２】ＵＳＰ６２０１６１４
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、上に述べた特許文献１の方法では、指定した画像ブロックと基準パターンが一致した場合に、基準パターンを符号化するため、基準パターンの符号の分だけ送信するデータ量が増大してしまう。さらに、画像データは、変化するのでブロック内で全ての画素が一致することは少なく、その場合は差分データを送信するのでデータ量がますます増大してしまう。
【００１１】
これに対して、ＪＢＩＧ方式では、圧縮処理が比較的軽く、コンピュータ上でも高速に圧縮処理を行うことができる。しかし、ＪＢＩＧ方式によると、ＬＺＳ方式またはＬＺＷ方式などの他の方式に比べて圧縮率があまり高くなく、特に中間調のデータが増えた場合に圧縮率が低下する。
【００１２】
また、特許文献２の方法では、各画素ごとに値を決定するので、それだけでは情報量が減らない。したがって、情報量を減らすためには別途圧縮する手段が必要である。
【００１３】
本発明は、上述の問題に鑑みてなされたもので、ディザパターンを用いて擬似階調化された画像データを高速でかつ高い圧縮率で圧縮することができ、しかも小規模なハードウェアで高速で復元することができる、画像データの圧縮方法および装置並びに擬似階調画像の復元方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る圧縮方法は、ディザパターンを用いて擬似階調化された画像である擬似階調画像のデータを圧縮する方法であって、前記擬似階調画像を所定の領域ごとに区画する第１のステップと、前記各領域の代表値を決定する第２のステップと、決定した代表値を用いて圧縮データを作成する第３のステップとを有してなり、前記第２のステップにおいて、前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行った場合に当該注目領域における前記擬似階調画像が再現されるような、そのような代表値を求めて当該注目領域の代表値として決定する。
【００１５】
または、前記第２のステップにおいて、前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行って得られる画像データのドットの配列パターンと当該注目領域内の画像データのドットの配列パターンとが所定の誤差範囲内で一致するような、そのような代表値を求めて当該注目領域の代表値として決定する。
【００１６】
好ましくは、前記第２のステップにおいて、前記代表値を、前記各領域の端部に位置する画素の濃度値に対応する値とする。
【００１７】
また、前記第２のステップにおいて、前記代表値として選択することの可能な値が所定の範囲を持っている場合に、その範囲における中央値を前記代表値として決定する。
【００１８】
また、前記補間ルールは、当該注目領域の代表値および当該注目領域に隣接する２つの領域のそれぞれの代表値の合計３つの代表値で定義される平面によって各画素の濃度を補間するものである。
【００１９】
また、前記第２のステップにおいて、前記注目領域内において代表値が決定できない場合に、当該注目領域における画像データを、当該注目領域の代替の代表値として決定する。
【００２０】
また、前記第２のステップにおいて、前記注目領域内において代表値が決定できない場合に、当該注目領域をさらに複数の小領域に区画し、各小領域内において代表値を決定する。
【００２１】
また、前記第２のステップにおいて、前記小領域内において代表値が決定できない場合に、当該小領域における画像データを、当該小領域の代替の代表値として決定する。
【００２２】
本発明に係る復元方法は、圧縮されたデータから各領域の代表値を取得し、前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた前記補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行って擬似階調画像を復元する。
【００２３】
本発明に係る圧縮装置は、ディザパターンを用いて擬似階調化された画像である擬似階調画像のデータを圧縮する装置であって、前記擬似階調画像を所定の領域ごとに区画する第１の手段と、前記各領域の代表値を決定する第２の手段と、決定した前記代表値を用いて圧縮データを作成する第３の手段とを有してなり、前記第２の手段は、前記領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらに前記ディザパターンを用いて擬似階調化を行った場合に当該注目領域における前記擬似階調画像が再現されるような、そのような代表値を求めて当該注目領域の代表値として決定する。
【発明の効果】
【００２４】
本発明によると、ディザパターンを用いて擬似階調化された画像データを高速でかつ高い圧縮率で圧縮することができ、しかも小規模なハードウェアで高速に復元することができる。これにより、安価なプリンタを使用しつつ、全体の処理を短時間で行うことが可能となる。
【発明を実施するための最良の形態】
【００２５】
本実施形態の説明においては、第１で、擬似階調化された２値の画像データを圧縮する場合について説明し、第２で、擬似階調化された４値の画像データを圧縮する場合について説明する。第２での説明は、第１との相違点について、その要点のみを説明する。
〔第１〕
２値の画像データを圧縮する場合についての実施形態
〔システム全体の構成〕
図１は本発明に係る画像データの圧縮方法を適用したプリントシステム１の全体構成を示す図である。
【００２６】
図１において、プリントシステム１は、コンピュータ本体１１、ディスプレイ１２、プリンタ１３、キーボード１４、およびマウス１５などから構成される。
【００２７】
コンピュータ本体１１は、外部から入力された画像データまたは内部で生成した画像データなど（原画像データ）を、ディザ法によりディザパターンを用いて擬似階調化する。原画像データは、例えばＲＧＢまたはＣＭＹ各色２５６階調の階調画像データである。擬似階調化は、ハーフトーン化と呼称されることもある。擬似階調化された画像は、擬似階調画像、ハーフトーン画像などという。本実施形態においては、擬似階調化として２値化を行い、２値画像データＤ１を生成する。そして、生成した２値画像データＤ１を圧縮して圧縮データＤ２を生成し、生成した圧縮データＤ２をプリンタ１３に送信する。プリンタ１３は、受信した圧縮データＤ２について、２値化に用いたディザパターンなどを参照して２値画像データ（ハーフトーン画像）を復元し、用紙などにプリントアウトする。なお、２値画像データＤ１とディザパターンとの関係については、図２９を参照することができる。
【００２８】
本実施形態において、圧縮処理に際しては、２値画像データＤ１をディザパターン情報成分と画像情報成分とに分離する。そして、画像情報成分のみを取り出し、ハフマン法による符号化処理を行って圧縮データＤ２とする。ディザパターン情報成分は圧縮データＤ２に含めない。因みに、従来においては、ディザパターン情報成分と画像情報成分の両方をまとめて圧縮処理を行っていた。
【００２９】
より詳しくは、本実施形態の圧縮処理の過程において、２値画像データＤ１を所定の領域（後述する低解像度領域ＴＬ）ごとに区画する（第１のステップ）。次に、各領域の代表値を決定する（第２のステップ）。そして、決定した代表値を用いて圧縮データを作成する（第３のステップ）。なお、代表値を「ａ」または「ＡＰ」で表すことがある。
【００３０】
この第２のステップにおいて、領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらにディザパターンを用いて擬似階調化を行った場合に当該注目領域における擬似階調画像が再現されるような、そのような代表値を求めて当該注目領域の代表値ａとして決定する。
【００３１】
代表値ａが決定された領域に隣接する領域を次の注目領域とし、注目領域を順次移動させて全ての領域について代表値ａを決定する。最初に注目領域とした領域については、既に代表値ａの決定された領域が存在しないので、その注目領域における周辺部または端部、特に頂点部に位置する画素の濃度値などを考慮して代表値ａを決定すればよい。
【００３２】
また、第２のステップにおいて、代表値を求める方法を次のように言うこともできる。つまり、領域のうちの１つの領域である注目領域について、当該注目領域の代表値および当該注目領域に隣接する１つまたは複数の領域の代表値を用い予め定められた補間ルールにしたがって当該注目領域における各画素の濃度を補間して求めさらにディザパターンを用いて擬似階調化を行って得られる画像データのドットの配列パターンと当該注目領域内の画像データのドットの配列パターンとが所定の誤差範囲内で一致するような、そのような代表値を求めて当該注目領域の代表値ａとして決定する。
【００３３】
また、第２のステップにおいて、代表値ａを、各領域の端部に位置する画素の濃度値に対応する値とする。また、代表値として選択することの可能な値が所定の範囲を持っている場合に、その範囲において例えば中央値を代表値ａとして決定する。なお、代表値として選択可能な所定の範囲のことを「代表値範囲」ということがある。
【００３４】
第２のステップにおいて、代表値ａを求める際に補間ルールを用いるが、次は補間ルールの例である。
（１）  当該注目領域の代表値および当該注目領域に隣接する２つの領域のそれぞれの代表値の合計３つの代表値で定義される平面によって各画素の濃度を補間する。また、平面以外を用いた直線補間とする。
（２）  当該注目領域の代表値および当該注目領域に隣接する３つの領域のそれぞれの代表値の合計４つの代表値で定義される曲面（ねじれ面）によって各画素の濃度を補間する。
（３）  当該注目領域の代表値および当該注目領域に隣接する複数の領域のそれぞれの代表値で定義されるスプライン曲面によって各画素の濃度を補間する。また、スプライン補間に代えて多項式補間とする。
【００３５】
このように、補間ルールは、記述したものの他、補間式、補間テーブルなどで表現することも可能である。なお、補間ルールは、圧縮処理や復元処理の前提として予め共通に定めておいてもよく、また、原画像データの種類などに応じて異なる補間ルールを適用して圧縮処理を行い、圧縮処理に用いた補間ルールを復元処理を行う側に通知するようにしてもよい。補間ルールは、具体的には、例えば補間ルールを実行する処理回路やプログラムまたは変換テーブルなどによって実現可能である。
【００３６】
ところで、代表値ａを求める別の方法として、各領域内における画像データのドットの配列パターンが２値化に用いられたディザパターンと一致するか否かを判別し、一致する場合にその領域における画像データの濃度に関する代表値を求めるという方法がある。この方法は、先に特願平２００４−３７７５７５として提案した。したがって、この方法を「先願方法」ということがある。先願方法は、本実施形態の方法とは異なるが、圧縮における「代表値」の基本的な概念は本実施形態と同じであり、「代表値」の意義を理解する上で大変参考となるので、本明細書においても必要に応じてなお書きなどによって言及する。
【００３７】
説明を元に戻して、各領域の代表値ａがそれぞれ決定すると、第３のステップでは、隣り合う領域間の代表値ａの差分情報を求め、求めた差分情報をハフマン法で符号化することによって圧縮データＤ２を得る。２値化に用いられたディザパターンがディザパターン情報成分であり、代表値ａが画像情報成分である。
【００３８】
２値化処理に際して、文字領域または画像領域など、領域の種類に応じて複数のディザパターンが切り換えられて用いられるので、圧縮処理の際にも、それら複数のディザパターンを切り換えて処理を行う。なお、先願方法では、複数のディザパターンを切り換えて各領域内における画像データのドットの配列パターンと一致するか否かを判別する。
【００３９】
第２のステップにおいて、注目領域内において代表値ａが決定できない場合には、当該注目領域をさらに複数の小領域（後述する中解像度領域ＴＭ）に区画し、各小領域において代表値ａを決定する。
【００４０】
なお、先願方法においては、いずれのディザパターンにも一致しない場合に、その領域をさらに複数の小領域に区画し、各小領域内における画像データのドットの配列パターンがディザパターンと一致するか否かを判別する。ここで一致した場合は、小領域に打たれたドット数を代表値とする。ここでも一致しなかった場合には、それら領域または小領域のドットの配列を符号化して圧縮データＤ２を得る。
【００４１】
コンピュータ本体１１は、得られた圧縮データＤ２をプリンタ１３に送信する。コンピュータ本体１１は、また、ディザパターンに関する情報、およびハフマン法による復元（復号）のためのテーブルであるデコード表ＤＣを、プリンタ１３に予め送信する。各領域における各画素の濃度を補間して求めるための上に述べた補間ルールについても、必要に応じてプリンタ１３に予め送信する。なお、デコード表ＤＣとして、低解像度領域、中解像度領域、および高解像度領域のそれぞれに対するデコード表ＤＣ１〜３が存在する。詳しくは後述する。
【００４２】
プリンタ１３では、コンピュータ本体１１から送信された圧縮データＤ２から、各領域の代表値ａを取得し、領域のうちの１つの領域である注目領域について、当該注目領域の代表値ａおよび当該注目領域に隣接する１つまたは複数の領域の代表値ａを用い、予め定められた補間ルールにしたがって、当該注目領域における各画素の濃度を補間して求め、これによって仮想階調画像を得て、さらに仮想階調画像に対して、ディザパターンを用いて擬似階調化を行って擬似階調画像を復元する。
【００４３】
なお、先願方法においては、プリンタ１３では、コンピュータ本体１１から送信された圧縮データＤ２から、各領域の代表値ａを取得し、取得した代表値ａと該当するディザパターンとを比較し、元の２値画像データＤ１と同じドットパターン（ドットの配列パターン）を再現する。
【００４４】
そのような復元処理（復号処理）において、ハフマン法による復元のためにデコード表ＤＣが用いられる。
【００４５】
コンピュータ本体１１として、パーソナルコンピュータ、ワークステーション、その他の種々のコンピュータが用いられ、プリンタ１３として、ラスタプリンタ、ＧＤＩプリンタ、その他の種々のプリンタが用いられる。
〔圧縮処理〕
次に、コンピュータ本体１１における圧縮処理についてさらに詳しく説明する。
【００４６】
図２はコンピュータ本体１１の機能的な構成を示すブロック図、図３はコンピュータ本体１１の圧縮データ作成部１００を機能的に示すブロック図、図４はプリンタ１３の機能的な構成を示すブロック図、図５は区画された低解像度領域ＴＬを説明するための図、図６は低解像度領域ＴＬとディザパターンＤＰの例を示す図、図７は互いにサイズの異なる低解像度領域ＴＬとディザパターンＤＰの例を示す図、図８は各低解像度領域ＴＬにおける代表値ａの位置を示す図、図９は低解像度領域ＴＬにおける各画素の濃度を補間で求める際の補間ルールＨＲの例を説明するための図、図１０は代表値ａの求め方を説明するための図である。なお、画像データは２次元であり、各低解像度領域ＴＬも２次元としているが、図１０においては説明の簡便化のために１次元の領域を模式的に示した。
【００４７】
図２に示すように、コンピュータ本体１１は、画像データベース１５０、ディザパターン記憶部１６０、擬似階調化部１７０、および圧縮データ作成部１００などから構成される。
【００４８】
画像データベース１５０は、階調性を有した多数の画像データ（原画像データ）ＦＤ１、ＦＤ２、…ＦＤｎを保持する。画像データＦＤ１〜ｎの全部または一部を「画像データＦＤ」と記載することがある。なお、画像データＦＤの多くはカラー画像であり、その場合に、１つの画像データＦＤが、Ｃ（シアン）、Ｍ（マジェンタ）、Ｙ（イエロー）、Ｋ（ブラック）の各色の画像データによって構成される。画像データＦＤは、例えば、スキャナ、デジタルカメラ、その他外部から入力し、または内部で編集したり生成することによって得られる。
【００４９】
ディザパターン記憶部１６０は、複数種類のディザパターンＤＰ１１〜１３、ＤＰ２１〜２３、ＤＰ３１〜３３、ＤＰ４１〜４３を保持する。これらの全部または一部を「ディザパターンＤＰ」と記載することがある。
【００５０】
ディザパターンＤＰは、Ｃ、Ｍ、Ｙ、Ｋの各色について、文字領域用ディザパターンＤＰ１１、２１、３１、４１、画像領域用ディザパターンＤＰ１２、２２、３２、４２、およびチャート領域用ディザパターンＤＰ１３、２３、３３、４３などがそれぞれ設けられている。
【００５１】
擬似階調化部１７０は、画像データベース１５０に格納された画像データＦＤに対し、ディザパターン記憶部１６０から選択したディザパターンＤＰを用いて２値化処理を行い、得られた２値画像データＤ１を圧縮データ作成部１００に送る。２値画像データＤ１についても、Ｃ、Ｍ、Ｙ、Ｋの各色の２値画像データによって構成される。
【００５２】
圧縮データ作成部１００は、２値画像データＤ１を圧縮して圧縮データＤ２を生成するとともに、生成した圧縮データＤ２、ディザパターンＤＰ、補間ルールＨＲ、およびデコード表ＤＣを出力してプリンタ１３に送信する。但し、コンピュータ本体１１とプリンタ１３との間で補間ルールが予め決められている場合には、補間ルールＨＲを送信する必要はない。
【００５３】
図３において、圧縮データ作成部１００は、低解像度領域区画部１０１、低解像度代表値算出部１０３、中解像度領域区画部１０４、中解像度代表値算出部１０６、ドットパターン抽出部１０７、符号化部１０８、データ送信部１０９、および補間ルール保持部１１０などから構成される。
〔低解像度領域の処理〕
低解像度領域区画部１０１は、擬似階調化部１７０から送られてきた２値画像データＤ１を、多数の小さな領域である低解像度領域ＴＬに区画する。低解像度領域ＴＬは、例えば図５に示すように、９６個（６×１６個）の画素ＴＰからなる矩形の領域である。図５の例では、２値画像データＤ１の全体の領域が、左上から右方へ順に、低解像度領域ＴＬ１１、ＴＬ１２、ＴＬ１３、…というように、次の行についてＴＬ２１、ＴＬ２２、ＴＬ２３、…というように、ＴＬｍｎまで、それぞれブロックに区画されている。
【００５４】
図６（ａ）に示す低解像度領域ＴＬにおいて、黒の画素が、ドットが打たれた画素である。画像データＦＤの各画素の濃度値が、図６（ｂ）に示すディザパターンＤＰの対応する画素のしきい値以上であったときに、その画素にドットが打たれる。つまり、濃度値が大きいほど濃度が高いものとして扱う。
【００５５】
なお、図６の例では、低解像度領域ＴＬのサイズがディザパターンＤＰのサイズと同じとなるように区画した例を示したが、これらのサイズが互いに異なってもよい。
【００５６】
例えば、図７に示すように、低解像度領域ＴＬｂのサイズがディザパターンＤＰｂのサイズよりも小さい場合でもよい。図７の例とは逆に、低解像度領域ＴＬのサイズがディザパターンＤＰのサイズよりも大きい場合でもよい。
【００５７】
低解像度代表値算出部１０３は、低解像度領域区画部１０１で区画された各低解像度領域ＴＬについて、補間ルール保持部１１０に記憶された補間ルールＨＲを参照して代表値ａを求める。代表値ａの求め方は次のとおりである。
〔代表値の求め方〕
代表値ａの求め方を説明するに際して、最初に代表値ａの位置である代表値位置ＡＰについて説明する。
【００５８】
図８において、２値画像データＤ１の一部について、各低解像度領域ＴＬにおける代表値ａの位置である代表値位置ＡＰが示されている。図８に示すように、各低解像度領域ＴＬｍｎの代表値位置ＡＰｍｎは、それぞれの低解像度領域ＴＬｍｎにおける右下端に位置する。２値画像データＤ１の領域外においても、低解像度領域ＴＬと同様な区画を行ったと仮定した場合のそれぞれの右下端に代表値位置ＡＰがある。なお、代表値ａの値を代表値位置を示す符号である「ＡＰｍｎ」で代用して示すことがある。
【００５９】
さて、代表値ａの求め方について、低解像度領域ＴＬが１次元であると仮定して説明する。
〔１次元の場合の代表値〕
図１０において、２値画像データＤ１について、それぞれ５つの画素ＴＰからなる１次元の低解像度領域ＴＬ１，２，３…が示されている。それぞれの画素ＴＰは、２値であるため、白または黒で示されている。例えば低解像度領域ＴＬ１では、各画素ＴＰの値は、白、白、白、黒、黒である。この２値画像データＤ１は、図に示す画像データ（原画像データ）ＦＤを、同じく図に示すディザパターンＤＰを用いて２値化処理を行うことにより得られたものである。つまり、画像データＦＤがディザパターンＤＰのしきい値以下であれば「白」、しきい値を越えれば「黒」となる。
【００６０】
まず、最初の代表値ＡＰ０を決める。最初の代表値ＡＰ０は、２値画像データＤ１の領域外であるので、どのような値でもとり得るが、低解像度領域ＴＬ１の左端の画素ＴＰの濃度値（ハーフトーンデータ）、ディザパターンＤＰのしきい値などに対応して適当な値とすればよい。例えば、濃度値としきい値とから算出される画像データの範囲の中間値としてもよい。
【００６１】
そして、最初のブロックである低解像度領域ＴＬ１を注目領域とし、注目領域における白画素に着目する。最初の代表値ＡＰ０から、注目領域の各白画素のしきい値に向かって直線ＬＧ１、２、３を引く。そのうち最も低い位置にある直線ＬＧ３を選択し、直線ＬＧ３を延長して当該注目領域の最後の画素ＴＰの位置との交点を上限位置とし、この上限位置における濃度値を注目領域における代表値上限ＡＰｍａｘとする。
【００６２】
白画素と同様の処理を黒画素についても行う。すなわち、最初の代表値ＡＰ０から、注目領域の各黒画素のしきい値に向かって直線ＬＧ４、５を引く。そのうち最も高い位置にある直線ＬＧ４を選択し、直線ＬＧ４を延長して当該注目領域の最後の画素ＴＰの位置との交点を下限位置とし、この下限位置における濃度値を注目領域における代表値下限ＡＰｍｉｎとする。
【００６３】
このようにして求めた代表値上限ＡＰｍａｘが代表値下限ＡＰｍｉｎより大きいとき、つまり次の（１）式、
ＡＰｍａｘ≧ＡＰｍｉｎ  ……（１）
が成り立つとき、代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとの間（代表値範囲）の値を、当該注目領域の代表値として選択することが可能である。本実施形態では、これら代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとの間の中央値を低解像度領域ＴＬ１の代表値ＡＰ１として決定する。
【００６４】
このようにして代表値ＡＰ１を決定しておくと、隣接する領域に相当する前回の代表値ＡＰ０と、注目領域に相当する今回の代表値ＡＰ１とを、直線ＬＡ１で結び、この直線ＬＡ１とディザパターンＤＰとを用いることによって、低解像度領域ＴＬ１における２値画像データＤ１を完全に再現することができる。
【００６５】
すなわち、前回の代表値ＡＰ０と今回の代表値ＡＰ１とを結ぶ直線ＬＡ１によって、低解像度領域ＴＬ１の各画素ＴＰの濃度を補間して求め、求めた各画素ＴＰの濃度からなる仮想階調画像をディザパターンＤＰを用いて擬似階調化することによって、図１０に示す再構成画像データＦＳが得られる。この再構成画像データＦＳは、低解像度領域ＴＬ１内において、元になった２値画像データＤ１と同一である。つまり、代表値ＡＰ０，１に基づいて２値画像データＤ１が再現されたのである。なお、各画素ＴＰの濃度からなる仮想階調画像は、これを連続的に表した場合には直線ＬＡ１となる。したがって、仮想階調画像データを「ＬＡ」で示すことがある。
【００６６】
したがって、この場合に、上のように求めた代表値ＡＰ１を当該低解像度領域ＴＬ１の代表値ａとして決定する。この場合の補間ルールＨＲは、注目領域の代表値ＡＰ１および注目領域に隣接する領域の代表値ＡＰ０の合計２つの代表値で定義される直線ＬＡ１によって各画素ＴＰの濃度を補間する、ということである。直線ＬＡ１は、通常、水平に対して傾きを持っている。しかし、実際には低解像度領域ＴＬは２次元であることが多く、したがって、その場合には、直線ＬＡ１によって補間するのではなく、平面によって補間することとなる。これは、上に述べた補間ルールＨＲの例の（１）に相当する。
【００６７】
もし、上の（１）式が成り立たない場合には、つまり、
ＡＰｍａｘ＜ＡＰｍｉｎ
の場合には、前回の代表値ＡＰ０を、その代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとの範囲内で修正する。修正した代表値ＡＰ０を用いて、再度、上のようにして当該注目領域の代表値ＡＰ１を求める。
【００６８】
それでも代表値ＡＰまたは代表値範囲が求まらない場合には、その旨を記録した上で、別途の処理を行う。別途の処理として、例えば、注目領域をさらに複数の小領域に区画し、各小領域内において上のような処理を行って代表値ＡＰＳを決定する。小領域として、例えば注目領域の半分の領域、または４分の１の領域などとする。小領域とすることによって、多くの場合に代表値ＡＰＳが求められる。
【００６９】
また、小領域において代表値ＡＰが求まらない場合に、代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとを適当に仮に定め、その範囲内の中間値を代表値ＡＰとして決定する。このようにした場合には、その領域においては元の２値画像データＤ１を正確に再現することができないが、ある程度の誤差があった場合でも許容することは可能である。
【００７０】
また、小領域内において代表値ＡＰＳが決定できない場合に、当該小領域における画像データを、当該小領域の代替の代表値ＡＰＤとして決定してもよい。また、小領域に区画することなく、当該注目領域における画像データを当該注目領域の代替の代表値ＡＰＤとして決定してもよい。この場合に、当然ではあるが、代替の代表値ＡＰＤおよび小領域の代表値ＡＰＳは、注目領域全体の通常の代表値ＡＰとは復元方法が異なる。
【００７１】
このようにして、１つの注目領域である低解像度領域ＴＬ１の代表値ＡＰ１が決定される。次には、それに隣接する低解像度領域ＴＬ２を注目領域とし、先に求めた代表値ＡＰ１を用いて、上と同様に代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとを求め、その中央値を代表値ＡＰ２とする。このような処理を繰り返して順次代表値ＡＰを求め、全ての領域について代表値ＡＰを求める。
【００７２】
なお、図１０の低解像度領域ＴＬ３については、通常の代表値ＡＰが求まらなかったので、低解像度領域ＴＬ２における代表値ＡＰ２をその代表値上限ＡＰｍａｘに修正し、且つ適当な代表値ＡＰ３を選択した例が示されている。この場合には、修正した代表値ＡＰ２および代表値ＡＰ３を用いて復元すると、図に示されるような再構成画像データＦＳが得られる。低解像度領域ＴＬ３についての再構成画像データＦＳは、２値画像データＤ１と一致しない。つまり、４番目と５番目の画素ＴＰの値が互いに逆となっている。しかしこの程度の誤差があっても再現性において許容されることがある。
【００７３】
なお、注目領域または小領域における画像データを代替の代表値ＡＰＤとする場合には、その代表値ＡＰＤ（画像データ）と元の２値画像データＤ１との差分をとり、差分を代表値ＡＰとしてもよい。
【００７４】
また、代表値ＡＰは画像の濃度に関係する値であるので、隣接する領域との間で関連が深く、近隣の領域においては代表値ＡＰが互いに接近している。つまり、近隣の領域では濃度の差分が小さく、そのため代表値ＡＰの差が小さい、という性質がある。したがって、ある低解像度領域ＴＬの代表値ＡＰについて、その直前に求めた低解像度領域ＴＬの代表値ＡＰとの差をとると、多くの場合に差が「０」となり、差の統計的な頻度の偏りが大きくなる。つまり、代表値ＡＰそれ自体に代えて、代表値ＡＰの差分を用いることにより、ハフマン法の符号化において高い圧縮率で圧縮することが可能となる。逆に言えば、差分ができるだけ０に近くなるように、そのような代表値ａを可能な範囲で選択することが望ましい。
〔２次元の場合の代表値〕
ところで、上の説明では、区画された低解像度領域ＴＬが１次元であると仮定して代表値ＡＰの求め方を説明した。しかし、実際には、低解像度領域ＴＬは図６〜図９に示すように２次元であることが多い。例えば、低解像度領域ＴＬは、上に述べたように６×１６画素または４×１６画素であったり（２値の場合）、４×４画素であったりする（１６値の場合）。このように低解像度領域ＴＬが２次元である場合については、１次元の場合の補間ルールＨＲにおける「直線」を「平面」に置き換えればよい。次に、図９（Ａ）（Ｂ）を参照して簡単に説明する。
【００７５】
図９（Ａ）（Ｂ）に示すように、まず、 最初の代表値ＡＰ００，１０，０１を決める。最初の代表値ＡＰ００，１０，０１は、２値画像データＤ１の領域外であるので、どのような値でもとり得るが、低解像度領域ＴＬ１１の代表値位置ＡＰに最も近い画素ＴＰについての濃度値（ハーフトーンデータ）と、それに対応するディザパターンＤＰのしきい値となどに基づいて算出される画像データの範囲の中間値とするのがよい。
【００７６】
そして、最初のブロックである低解像度領域ＴＬ１１を注目領域とし、注目領域を図９に示すように２つの三角形ＰＡ１，２に分ける。一方の三角形ＰＡ１の領域について、領域内の白画素に着目する。最初の代表値ＡＰ００，１０，０１のうち、三角形ＰＡ１の頂点に近い２つの代表値位置ＡＰ００，１０を通り、 かつ注目領域内の白画素に対応するしきい値を通る平面を求める。この平面は、図１０における直線ＬＧに相当する。
【００７７】
それらの平面のうち最も低い位置にある平面を選択し、その平面を延長して当該注目領域の最後の画素ＴＰの位置との交点を上限候補位置とする。他方の三角形ＰＡ２の領域についても、これと同様にして上限候補位置を求める。得られた２つの上限候補位置のうちの小さい方を、注目領域における代表値上限ＡＰｍａｘとする。
【００７８】
白画素と同様の処理を黒画素についても行い、注目領域における代表値下限ＡＰｍｉｎを求める。なお、図９（Ｂ）において、ＴＰは各画素に対応する位置を示している。
【００７９】
このようにして求めた代表値上限ＡＰｍａｘが代表値下限ＡＰｍｉｎよりの大きいとき、つまり上の（１）式が成り立つとき、代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとの間の値、例えばその中央値を、低解像度領域ＴＬ１１の代表値ＡＰ１１として決定する。
【００８０】
このようにして決定した代表値ＡＰ１１を用いると、隣接する領域のそれぞれの代表値ＡＰ００，１０または代表値ＡＰ００，０１とで定義される三角形ＰＡ１，２と、ディザパターンＤＰとを用いることによって、低解像度領域ＴＬ１１における２値画像データＤ１を完全に再現することができる。
【００８１】
もし、上の（１）式が成り立たない場合には、前回の代表値ＡＰ００，１０，０１を修正する。修正した代表値ＡＰを用いて、再度、上のようにして当該注目領域の代表値ＡＰ１１を求める。
【００８２】
それでも代表値ＡＰが求まらない場合には、代表値ＡＰが決定できない旨を記録した上で、別途の処理を行う。別途の処理として、１次元の場合と同様に、例えば、注目領域を半分または４分の１の小領域に区画し、各小領域内において上のような処理を行って代表値ＡＰＳを決定する。
【００８３】
また、小領域において代表値ＡＰが求まらない場合に、代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとを適当に仮に定め、その範囲内の中間値を代表値ＡＰとして決定する。      
【００８４】
また、小領域内において代表値ＡＰＳが決定できない場合などの処理についても、１次元の場合と同様に考えればよい。
【００８５】
このようにして、１つの注目領域である低解像度領域ＴＬ１１の代表値ＡＰ１１が決定される。次には、それに隣接する低解像度領域ＴＬ１２またはＴＬ２１を注目領域とし、先に求めた代表値ＡＰ１１などを用いて、上と同様の処理によって代表値ＡＰ１２または代表値ＡＰ２１を求める。このような処理を繰り返して順次代表値ＡＰを求め、全ての領域について代表値ＡＰを求める。
【００８６】
なお、２次元の場合の代表値ＡＰの求め方を上に説明したが、この方法以外に、代表値ＡＰから再構成される画像を、一方向にのみ傾斜する斜面であるとする方法としてもよい。すなわち、この方法では、１次元の場合において画素を結ぶ直線としたところを、画素を結ぶ平面と言い換えて行う。この場合に、代表値ＡＰが求まらなかった場合の領域の分割は２方向に行う。この方法によると、処理がシンプルで高速に処理できるが、上に述べた方法と比べて圧縮率が劣る。
【００８７】
なお、先願方法においては、注目領域内における画像データのドットの配列パターンがディザパターンＤＰと一致する場合に、その領域における画像データの濃度から代表値ａを求めた。これは、注目領域の全ての画素がある１つの濃度値を有した均一な画像データであると仮定した場合に、仮定した画像データを当該ディザパターンＤＰによって２値化したときに得られるドットパターンが、注目領域のドットパターンと等しくなる場合に、その注目領域のドットパターンは当該ディザパターンＤＰと一致することになる。そのような判別に用いる濃度値としてはどの様な値であってもよい。つまり、換言すれば、ディザパターンＤＰを用いてドットパターンを生成したときにドットパターンが互いに等しくなるような濃度値が存在する場合に、一致すると判別する、といえる。したがって、そのような濃度値は特定の１つの値の場合もあり、またある範囲における複数の値をとり得る場合もある。この濃度値が先願方法における代表値ａである。
【００８８】
本実施形態における代表値ａも先願方法における代表値ａも、代表値ａが分かればディザパターンＤＰから低解像度領域ＴＬのドットパターンを復元できるという点で共通である。つまり、画像情報成分として各領域におけるただ１つの代表値ａを求めるだけで、ディザパターンＤＰを用いてその領域の２値画像データＤ１を再現することが可能となるのである。
【００８９】
したがって、この代表値ａをプリンタ１３に伝えることによって、プリンタ１３において、２値画像データＤ１を得たときと同じ適当なディザパターンＤＰを用いて、２値画像データＤ１のドットパターンを再現できるのである。
【００９０】
なお、本実施形態における補間ルールＨＲは、上に述べたように複数の代表値ａで定義される直線または平面で補間することであるが、先願方法においては、その補間に用いる直線または平面が１つの代表値ａを高さ位置とした水平なつまり傾斜のない直線または平面であると見ることができる。
【００９１】
さて、画像データＦＤが各色について２５６階調であるとすると、代表値ａは、８ビットの情報量を持つことになる。本実施形態において、低解像度領域ＴＬは６×１６＝９６ビットの情報量を持っており、これを８ビットで表現できるので、情報量を概ね１０分の１に圧縮できることになる。また、代表値ａの差分を用いることにより、符号化において例えばさらに数分の１に圧縮することが可能である。
【００９２】
ところで、代表値ａの取り得る値の範囲は０〜２５５であるから、単純な引き算を行った場合には、差分の範囲は−２５５〜＋２５５となり、これを表すのに必要な情報量は９ビットとなる。しかし、本実施形態では、差分を単純な引き算によって求めるのではなく、代表値ａが０〜２５５の循環整数であるとして差分を求める。これによって、差分は、全て０〜２５５の整数で表され、これを表すのに必要な情報量は８ビットとなり、半分に減少する。
【００９３】
次に、循環整数であるとして差分を求める方法について説明する。説明を簡単化するため、０〜８の循環整数について説明する。
【００９４】
図１１は０〜８の循環整数を示す図である。
【００９５】
図１１において、ある数Ａを基準とし、これとある数Ｂとの差分Ｃを求めるには、循環整数の中の数Ａの示す位置から、数Ｂに相当する位置数を左方向に回転し、止まった位置の数値を差分Ｃとする。例えば、「５」と「３」の差分は、循環整数の「５」の位置から３つ左方向に回転して得られる「２」が答である。他の例では、「０」と「８」の差分は、循環整数の「０」の位置から８つ左方向に回転して得られる「１」が答である。さらに他の例では、「３」と「５」の差分は、循環整数の「３」の位置から５つ左方向に回転して得られる「７」が答である。このようにして、差分が０〜８の範囲内の整数値として得られる。
【００９６】
また、ある数Ｂに差分Ｃを加算することによってある数Ａが求まる。この場合には、循環整数のある数Ｂの示す位置から、差分Ｃに相当する位置数を右方向に回転し、止まった位置の数値を数Ａとする。このようにして完全に復元することができる。
【００９７】
図１２は画像における代表値ａの差分の出現頻度の分布を表す図である。
【００９８】
図１２に示すように、差分が「０」〜「２０」程度および「２３０」〜「２５５」程度の範囲で出現頻度が高い。このような分布は、画像の種類によらずほぼ同じであり、且つ偏りが非常に大きいので、差分を用いることによって大抵の画像をハフマン法によって大幅に圧縮することができる。
【００９９】
画像にもよるが、１つの低解像度領域ＴＬをｌ〜２ビット程度に圧縮できる。また、６×１６画素の低解像度領域ＴＬのドットパターンがディザパターンＤＰと一致する確率は、大抵の画像において９５％程度になる。つまり、画像全体の概ね９５％の領域で、元々９６ビットであったデータが１〜２ビットで表現できることとなり、この時点において数十倍という高い圧縮率で圧縮を行えることとなる。
【０１００】
なお、図１２において、代表値ａの差分である０〜２５５の後に、「２５６」「２５７」「２５８」の３つの値についての出現頻度が示されている。これは、所定の状態が生じたときにその状態を特定の３つの数値で示し、これによって情報量をさらに低減し、圧縮率をさらに高めるためのものである。
【０１０１】
例えば、画像において同じ濃度の画素が長く続くことも頻繁に起こるので、後述するように同じ濃度が５０領域にわたって続いた場合、つまり差分「０」が５０回続いた場合に、それを「２５７」という１つの属性コードで表すのである。「２５６」は、ある低解像度領域ＴＬで代表値ａが決定できなかったことを表す属性コード、「２５８」は、ディザパターンＤＰの切り換えを行ったこと、つまりある低解像度領域ＴＬにおいて切り換えられた他のディザパターンＤＰによって代表値ａが決定されたことを表す属性コードである。２回切り換えられたときは、「２５８」が２回出力される。
【０１０２】
上に述べたように、低解像度代表値算出部１０３においては、低解像度領域ＴＬについて、順に代表値ａが求められ、隣合う領域との間の差分が求められる。差分および属性値などによって、符号化部１０８に送るデータが作成される。
【０１０３】
例えば、差分として「０」が５０回連続した場合に、属性値「２５７」が符号化部１０８に出力される。差分「０」の値は出力されない。差分「０」が５０回連続しなかった場合は、それまで連続していた個数だけ「０」が出力され、その後に、「０」でない差分が出力される。ディザパターンＤＰの切り換えが行われた場合には、属性コード「２５８」が切り換え回数分出力される。代表値ａが決定されなかった場合には、属性コード「２５６」が出力される。この場合には、その低解像度領域ＴＬは、次に説明する中解像度領域区画部１０４によって処理される。
〔中解像度領域および高解像度領域の処理〕
図１３は低解像度領域ＴＬおよび中解像度領域ＴＭを示す図、図１４はドットパターンの数値化を説明するための図、図１５は各ドットパターンの出現頻度の分布を表す図である。
【０１０４】
中解像度領域区画部１０４では、低解像度領域ＴＬを、さらに図１３に示すような３×８画素の４つの中解像度領域ＴＭに区画する。
【０１０５】
中解像度代表値算出部１０６では、中解像度領域ＴＭにおいて、上に述べたと同様な処理によって代表値ａを求める。そして、得られた代表値に基づいて、隣合う中解像度領域ＴＭの間の代表値の差分が、上に述べた低解像度領域ＴＬの場合と同様にして算出される。ここでの差分は、上に述べた循環整数を用いるので、０〜２５５の範囲となる。
【０１０６】
なお、１つの低解像度領域ＴＬについての４つの中解像度領域ＴＭの処理が終わると、再度、低解像度領域ＴＬについての処理に戻る。
【０１０７】
ドットパターン抽出部１０７は、中解像度領域ＴＭにおいても代表値ａが求まらなかった場合に、中解像度領域ＴＭをさらに８画素の３つの高解像度領域ＴＳに区画し、この高解像度領域ＴＳのドットパターンを数値化する。ドットパターンの数値化においては、例えば、図１４に示すように、ドットの打たれている画素を「１」、打たれていない画素を「０」として２進数で表し、これを１０進数に変換し、これを属性コードとして出力する。
【０１０８】
図１５に示すように、特定の値に集中するかなり偏った分布であることが分かる。したがって、この場合においても、ハフマン法の符号化によって高い圧縮率を得ることができる。例えば２倍程度の圧縮率を得ることができる。
【０１０９】
なお、１つの中解像度領域ＴＭについての３つの高解像度領域ＴＳの処理が終わると、再度、中解像度領域ＴＭについての処理に戻る。
【０１１０】
符号化部１０８では、入力されるデータ、つまり、代表値ａの差分、ドット数の差分、および属性コードなどを、ハフマン法によって符号化する。ハフマン法による圧縮は、信号の頻度分布が大きく変化しない対象に対して非常に有効である。ハフマン法それ自体については公知であるのでここでの詳しい説明は省略する。
〔ハフマンコード表の説明〕
本実施形態においては、低解像度領域ＴＬについての代表値ａの差分および属性コード、中解像度領域ＴＭについてのドット数の差分および属性コード、高解像度領域ＴＳについての属性コードを、それぞれ別個独立したコード１〜３によって符号化する。そのために、それぞれに専用の３つのハフマンコード表ＦＨ１〜３が設けられている。
【０１１１】
図１６はハフマンコード表ＦＨ１〜３の例を示す図である。図１６（ａ）は低解像度領域用であるコード１のハフマンコード表ＦＨ１、図１６（ｂ）は中解像度領域用であるコード２のハフマンコード表ＦＨ２、図１６（ｃ）は高解像度領域用であるコード３のハフマンコード表ＦＨ３をそれぞれ示す。これらについて簡単に説明する。
【０１１２】
図１６（ａ）において、ハフマンコード表ＦＨ１には、入力、出力コード、出力桁数などの項目が設けられている。入力と出力コードとの関係は、各データの出現頻度に基づき、ハフマン法による符号化によって予め決められている。出力コードは、実際には、例えば４バイトのデータとしてメモリに格納されており、実質上４バイトに満たない符号は、上位の桁が「０」で埋まっている。
【０１１３】
入力されたデータに対して、それに一致する入力の項に対応する出力コードの項のデータを、その最下位桁から出力桁数の項で示される桁数分を読み出す。例えば、入力が「３」のときには、出力コード「…０００１０００１００」の７桁分である「１０００１００」が読み出される。読み出された「１０００１００」が圧縮データＤ２となる。
【０１１４】
図１６（ｂ）（ｃ）に示すハフマンコード表ＦＨ２，３についても、同様に、入力、出力コード、出力桁数などの項目が設けられている。これら入力と出力コードとの関係は、３つのハフマンコード表ＦＨ１〜３について互いに独立して、ハフマン法による符号化によって予め決められている。
【０１１５】
例えば、ハフマンコード表ＦＨ２において、入力が「１」のときには、出力コード「…０００１０１０」の４桁分である「１０１０」が読み出される。ハフマンコード表ＦＨ３において、入力が「１」のときには、出力コード「…０００１０１０」の４桁分である「１０１０」が読み出される。
【０１１６】
なお、これらのハフマンコード表ＦＨ１〜３によって同じ符号に変換される場合があるが、いずれのコード１〜３に対応して変換されたか、つまり高中低のいずれの解像度領域に対して圧縮が行われたかが認識可能になっているので、それに応じたデコード表ＤＣが選択されることとなり、完全な復元が可能である。
【０１１７】
例えば、符号化に際しては、データに「２５６」が現れるまでは、低解像度領域用のハフマンコード表ＦＨ１を用いたコード１の符号化が行われる。「２５６」が現れると、「２５６」がコード１で符号化された後、中解像度領域用のハフマンコード表ＦＨ２に切り換えられ、４つの中解像度領域ＴＭの符号化が完了するまでコード２の符号化が続行される。コード２の符号化を行っているときに「２５」が現れると、「２５」がコード２で符号化された後、高解像度領域用のハフマンコード表ＦＨ３に切り換えられ、３つの高解像度領域ＴＳの符号化が完了するまでコード３の符号化が続行される。３つの高解像度領域ＴＳの符号化が完了すれば、コード２の符号化に戻り、４つの中解像度領域ＴＭの符号化が完了すれば、再びコード１の符号化に戻る。以下、このルールにしたがって、入力されるデータが順次符号化され、圧縮データＤ２が作成される。
【０１１８】
また、圧縮データ作成部１００において、ハフマンコード表ＦＨ１〜３で符号化した圧縮データＤ２を復元するためのデコード表ＤＣ１〜３が作成される。
【０１１９】
データ送信部１０９は、符号化部１０８で作成した圧縮データＤ２をプリンタ１３に送信する。また、データ送信部１０９は、全てのディザパターンＤＰおよびデコード表ＤＣをプリンタ１３に予め送信する。
【０１２０】
なお、デコード表ＤＣは、データの出現頻度に基づいて作成される。各データの出現頻度は、本実施形態におけるアルゴリズムを実際に実行して求めることも可能である。例えば、そのような頻度表として、ＣＭＹＫの各色ごとに、文字領域用、画像領域用、およびチャート領域用の各ディザパターンＤＰについて求めた各頻度を全て合計して作成した表を用いることができる。頻度表は、圧縮する画像それぞれについて求めるのが理想的であるが、そのようにしなくとも、上記のように合計して作成した頻度表に基づいて、十分な圧縮性能を得ることができる。同様の理由で、ＣＭＹＫの各色に対して、文字領域、画像領域、チャート領域などの各領域に対しても、上記のようにして作成した同じ頻度表を用いることができる。
〔復元処理〕
次に、プリンタ１３における復元処理について説明する。
【０１２１】
図４において、プリンタ１３は、ディザパターン記憶部３６０、データ復元部３００、デコード表記憶部３７０、およびラインバッファ３８０などから構成される。
【０１２２】
ディザパターン記憶部３６０は、コンピュータ本体１１のディザパターン記憶部１６０に記憶されているディザパターンＤＰと同様のものを保持している。このディザパターンＤＰは、コンピュータ本体１１から予め送信されたものであるが、同じディザパターンＤＰを適当なメモリに格納したものを予めプリンタ１３に内蔵しておいてもよい。
【０１２３】
デコード表記憶部３７０は、コンピュータ１１から送信されたデコード表ＤＣを格納する。
【０１２４】
データ復元部３００は、所定のディザパターンＤＰ、デコード表ＤＣ、および補間ルールＨＲを参照して、コンピュータ１１から受信した圧縮データＤ２を復元し、ドットパターンを再現する。圧縮データＤ２の復元に際して、最初に低解像度領域用のデコード表ＤＣ１を用いてデコード１による復元処理が行われ、条件に応じて、中解像度領域用のデコード表ＤＣ２を用いたデコード２による復元処理、または高解像度領域用のデコード表ＤＣ３を用いたデコード３による復元処理がそれぞれ行われる。つまり、コード１，２，３で符号化した圧縮データＤ２に対して、それぞれ、デコード１，２，３で復元することとなる。なお、データ復元部３００には、圧縮データ作成部１００で用いる補間ルールＨＲと同じ補間ルールＨＲが、それを実行する処理回路やプログラムなどとして設けられている。
【０１２５】
図１７はデコード表ＤＣ２の例を示す図である。
【０１２６】
図１７において、デコード表ＤＣ２は、記号数、Ｒｏｏｔ、子０、子１などの項目を有する。入力されるデータをもとに、Ｒｏｏｔ＝２４の位置から表を順にたどることで元のデータを得ることができる。例えば、入力されたデータが「０１１０１１」であった場合に、データの先頭が「０」であるから、まず、Ｒｏｏｔ＝２４の子０より始める。Ｒｏｏｔ＝２４の子０の値が「２３」であり、データの次の値が「１」であるので、次は、Ｒｏｏｔ＝２３の子１を見る。Ｒｏｏｔ＝２３の子１の値が「２２」であり、データの次の値が「１」であるので、次は、Ｒｏｏｔ＝２２の子１を見る。以下同様の作業を繰り返し、子０または子１の値が負になった時点で終了する。最後に得られた値（負の値）と記号数（この場合「２６」）との和が、元のデータである。以下、データの次の値から同様の処理を行い、データの展開が完了するまで繰り返す。
【０１２７】
ドットパターンの再現においては、まずデコード１によって復元処理が行われる。デコード表ＤＣ１によって復元された値が「２５８」であった場合は、ディザパターンＤＰが切り換えられたことを示している。「２５８」が複数続く場合は、続いた回数分だけディザパターンＤＰが順に切り換えられ、切り換えた後のディザパターンＤＰが、以降使用するディザパターン（カレントディザパターン）ＤＰとして設定される。
【０１２８】
復元した値が「２５６」であった場合は、以降の処理が中解像度領域用のデコード表ＤＣ２を用いたデコード２による復元処理に切り換えられる。復元した値が「２５７」であった場合は、代表値の差分について「０」が５０回続いたことを表しているので、カレントディザパターンＤＰにより、５０領域分、前回算出した低解像度領域ＴＬの代表値と同じ値を用いてドットパターンが再現され、ラインバッファ３８０に送られる。５０領域分の処理が完了する前に行末に達したときは、その残りが次の行のデータとしてラインバッファ３８０に送られる。復元した値がこれいずれでもない場合は、その値は代表値の差分である。この場合は、前回算出した低解像度領域ＴＬの代表値ａを初期値とし、初期値に差分を加算することによって今回の代表値ａを得る。このように、差分を累計することによって全ての低解像度領域ＴＬの代表値ａが得られる。今回が初回であった場合は、初期値を「０」として代表値ａを得る。そして、得られた代表値ａ、カレントディザパターンＤＰ、および補間ルールＨＲとからドットパターンが再現され、ラインバッファ３８０に送られる。
【０１２９】
デコード２による復元処理では、中解像度領域用のデコード表ＤＣ２によって復元が行われる。デコード２によって復元された値が「２５６」であった場合は、以降の処理が高解像度領域用のデコード３の復元処理に切り換えられる。復元した値が「２５６」でない場合は、その値は中解像度領域ＴＭの代表値の差分である。この場合は、低解像度領域の場合と同様に累計によって代表値を求める。得られた代表値とカレントディザパターンＤＰとから、中解像度領域ＴＭのドットパターンが再現される。４つの中解像度領域ＴＭについての処理が終わると、デコード１に戻る。
【０１３０】
デコード３による復元処理では、高解像度領域用のデコード表ＤＣ３によって復元が行われる。デコード３によって復元された結果は、８画素分のドットの並びを表わしている。３つの高解像度領域ＴＳについての復元が繰り返され、これによって１つの中解像度領域ＴＭのドットパターンが再現される。これにより、中解像度領域ＴＭの復元処理が１つ完了したことがカウントされ、呼び出し元の処理のデコード２へ戻る。
【０１３１】
このように、属性コード「２５６」は、領域間におけるコード切り換え信号として機能し、これらの属性コードが現れることによって、間違いなくコード１からコード２へまたはコード２からコード３へ切り換えることができる。
【０１３２】
ラインバッファ３８０では、データ復元部３００より送られた２値画像データが一時的に格納される。ラインバッファ３８０に格納された２値画像データは、例えば６行分ごとに出力され、用紙にプリントアウトされる。
〔フローチャートによる説明〕
次に、コンピュータ本体１１およびプリンタ１３における処理について、フローチャートを参照して説明する。
【０１３３】
図１７はコンピュータ本体１１における圧縮処理の大まかな流れを示すフローチャート、図１８はプリンタ１３における復元処理の大まかな流れを示すフローチャートである。
【０１３４】
図１７において、準備としてディザパターンＤＰを読み込んだ後（＃１１）、２値画像データＤ１を読み込む（＃１２）。２値画像データＤ１を低解像度領域ＴＬに区画し（＃１３）、１つの低解像度領域ＴＬについて、代表値として選択することの可能な範囲（代表値範囲）があるか否かを判別する（＃１４）。
【０１３５】
このステップ＃１４において、上に述べたように、注目領域に隣接する領域の代表値ＡＰおよびディザパターンＤＰのしきい値に基づいて、注目領域における代表値上限ＡＰｍａｘおよび代表値下限ＡＰｍｉｎを求め、これらから代表値範囲が存在するか否かを判断し、存在する場合にその代表値範囲を取得する。
【０１３６】
ディザパターンＤＰが複数ある場合には、代表値範囲が見つかるまでディザパターンＤＰを切り換える。代表値範囲が見つかれば（＃１４でイエス）、代表値範囲内で代表値ａを求める（＃１５）。この場合に、例えば、代表値範囲の中央値を代表値ａとして決定する。そして、ここで決定した代表値ａと先に求めた代表値ａとの差分をとり（＃１６）、符号化する（＃１７）。
【０１３７】
ステップ＃１４で代表値範囲がない場合は、中解像度領域ＴＭに区画し（＃１９）、１つの中解像度領域ＴＭについて、代表値範囲があるか否かを判別する（＃２０）。代表値範囲があれば、ドットの個数を求め（＃２１）、その差分をとり（＃２２）、符号化する（＃２３）。ステップ＃２０で代表値範囲が見つからない場合は、高解像度領域ＴＳに区画し（＃２５）、１つの高解像度領域ＴＳについて、ドット配列を得て（＃２６）、それを符号化する（＃２７）。
【０１３８】
このような処理を、読み込まれた２値画像データＤ１の全部について終了するまで行う（＃１８、２４、２８）。
【０１３９】
図１９において、準備としてディザパターンＤＰおよびデコード表ＤＣを読み込む（＃３１、３２）。圧縮データＤ２を読み込んで（＃３３）、代表値ａを取得し（＃３４）、補間ルールＨＲを用いて各画素の濃度を算出し、ディザパターンＤＰを参照してドットパターンを得る（＃３５、３６）。なお、中解像度領域ＴＭおよび高解像度領域ＴＳの復元処理については説明を省略した。
【０１４０】
次に、さらに詳しいフローチャートを用いて説明する。
【０１４１】
図２０および図２１は圧縮データ作成部１００における圧縮処理のフローチャート、図２２は代表値範囲の確定処理の例を示すフローチャート、図２３および図２４はデータ復元部３００における復元処理のフローチャートである。なお、これらのフローチャートは、ＣＭＹＫの内の１つの色成分についての処理を示す。
【０１４２】
図２０および図２１において、まず、ディザパターンＤＰおよびデコード表ＤＣを読み込む（＃１０１，１０２）。また、これらディザパターンＤＰおよびデコード表ＤＣをプリンタ１３に送信しておく。２値画像データＤ１の内の６ライン分を入力し（＃１０４）、その左端から１つの低解像度領域ＴＬの分について、隣接する代表値ａを用いて、当該領域において代表値範囲があるか否かを判別する（＃１０５）。代表値範囲がある場合に、代表値範囲内で代表値ａを決定し（＃１０６）、代表値差分を算出する（＃１０７）。
【０１４３】
代表値差分が「０」であれば（＃１０８でイエス）、連続回数を示す変数ｎを１つ加算する（＃１０９）。変数ｎが「５０」になった場合に（＃１１０でイエス）、代表値差分「０」が５０回続いたことを示す属性コード「２５７」をコード１で符号化して圧縮データＤ２として出力し（＃１１１）、変数ｎを「０」に初期化する（＃１１２）。
【０１４４】
ステップ＃１０５でノーの場合、つまり代表値範囲がない場合には、代表値差分「０」をコード１でそれまでの回数分符号化して出力し（＃１２０）、変数ｎを「０」に初期化する（＃１２１）。そして、他のディザパターンＤＰの場合に代表値範囲があるか否かをチェックする（＃１２２）。代表値範囲の得られるディザパターンＤＰがあれば（＃１２２でイエス）、そのディザパターンＤＰに切り換え（＃１２３）、ディザパターンＤＰを切り換えたことを示す属性コード「２５８」をコード１で切り換え回数分符号化して出力し（＃１２４）、代表値ａを決定し（＃２２５）、ステップ＃１０７に移行する。
【０１４５】
ステップ＃１０８でノーの場合、つまり代表値差分が「０」でなければ（＃１０８でノー）、代表値差分「０」をコード１でそれまでの回数分符号化して出力し（＃１２６）、変数ｎを「０」に初期化する（＃１２７）。そして、その代表値差分をコード１で符号化して出力し（＃１２８）、ステップ＃１１３に戻る。
【０１４６】
入力した６ラインの右端まで処理が済んでいなければ（＃１１３でノー）、同じ６ラインについて順次右隣の低解像度領域ＴＬの処理を行うために、ステップ＃１０５以降を繰り返す。６ラインについての処理が終わり（＃１１３でイエス）、未処理のラインがあれば（＃１１４でノー）、２値画像データＤ１の次の６ライン分を入力し（＃１０４）、これを２値画像データＤ１の全部の処理が終了するまで繰り返す（＃１１４）。
【０１４７】
ステップ＃１２２でノー、つまり代表値範囲の得られるディザパターンＤＰがない場合には、低解像度領域ＴＬがいずれのディザパターンＤＰでも代表値範囲が得られなかったことを示す属性コード「２５６」をコード１で符号化して出力し（＃１２９）、中解像度領域ＴＭの処理であるステップ＃１３１以降に移行する。
【０１４８】
中解像度領域ＴＭの処理では、低解像度領域ＴＬを４つに区画した１つの中解像度領域ＴＭについて、いずれかのディザパターンＤＰで代表値範囲が得られるか否かを判別する（＃１３１）。代表値範囲が得られる場合は（＃１３１でイエス）、その中解像度領域ＴＭのドット数を取得してその差分を算出し（＃１３２）、ドット数差分をコード２で符号化して出力する（＃１３３）。これを４回繰り返してステップ＃１１３の低解像度領域ＴＬの処理に戻る。
【０１４９】
ステップ＃１３１でノー、つまり中解像度領域ＴＭがいずれのディザパターンＤＰでも代表値範囲が得られなかった場合には、得られなかったことを表す属性コード「２５」をコード２で符号化して出力し（＃１３５）、高解像度領域ＴＳの処理であるステップ＃１４１以降に移行する。
【０１５０】
高解像度領域ＴＳの処理では、中解像度領域ＴＭを３つに区画した１つの高解像度領域ＴＳについて、そのドットパターンを数値化し（＃１４１）、その数値をコード３で符号化して出力する（＃１４２）。これを３回繰り返し（＃１４３）、ステップ＃１３４の中解像度領域ＴＭの処理に戻る。
【０１５１】
図２２において、１つの注目領域について、それに隣接する領域の代表値ａを取得する（＃１５１）。当該注目領域における仮代表値を設定する（＃１５２）。仮代表値は、２値画像データＤ１およびディザパターンＤＰを参照して設定してもよいし、代表値ａの取り得る値の範囲である階調値、上の例では０〜２５５の値を順に設定していくことでもよい。隣接する領域の代表値および仮代表値を用い、補間ルールＨＲを適用して注目領域の各画素の濃度を求め、仮想階調画像を生成する（＃１５３）。生成した仮想階調画像を、ディザパターンＤＰを用いて擬似階調化し、再構成画像（上の例では再構成画像データＦＳ）を生成する（＃１５４）。再構成画像と元の擬似階調画像（上の例では２値画像データＤ１）とを比較し（＃１５５）、それらの一致度合いから再現性が良好であるか否かを判断する（＃１５６）。
【０１５２】
再現性が良好であるか否かの判断に際しては、例えば、再構成画像のドットの配列パターンと２値画像データＤ１のドットの配列パターンとが一致しているか、または所定の誤差範囲内に納まっているか、という点を判断する。一致している場合にのみ再現性が良好であると判断してもよい。または、所定の誤差範囲内に納まっているときには再現性が良好であると判断してもよい。所定の誤差範囲としては、例えば、当該注目領域において一致していない画素の総画素数に対する割合、または一致していない画素の個数などを判断のしきい値として用いることが可能である。一致していない画素の総画素数に対する割合のしきい値としては、例えば、写真画像の場合に１５〜５０％程度、文字画像の場合に５〜１５％程度である。
【０１５３】
再現性が良好であれば（＃１５６でイエス）、その仮代表値を代表値範囲の中に入れる（＃１５７）。再現性が良好でなければ（＃１５６でノー）、その仮代表値は捨てる。
【０１５４】
そして、予定した全ての仮代表値についての処理が終われば（＃１５８でイエス）、それまでに得られた代表値範囲を確定する（＃１５９）。その後においては、例えば図２０のステップ＃１０６において、代表値範囲の中から１つの代表値ａを決定する。なお、図２３に示す処理は、代表値範囲を確定するための処理の一例を示したに過ぎないものであり、他の種々の処理方法を適用することが可能である。
【０１５５】
図２３および図２４において、まず、ディザパターンＤＰおよびデコード表ＤＣを読み込む（＃２０１，２０２）。そして、コンピュータ本体１１から送信されてきた圧縮データＤ２を受信し、その先頭から順に復元のための処理を行う。最初はデコード１によって復元する（＃２０３）。
【０１５６】
復元によって得られた値ｄｃ１が属性コード「２５８」「２５６」「２５７」でない場合には（＃２０４〜２０６でノー）、値ｄｃ１は代表値ａの差分であるので、それまでの累計値ｋ１に値ｄｃ１を加算し、得られた値を新たな累計値ｋ１とする（＃２０６）。累計値ｋ１が「２５５」を超えた場合には（＃２０８でイエス）、代表値ａの最大値を超えているので、累計値ｋ１から「２５６」を差し引く（＃２０９）。そして、累計値ｋ１を代表値ａとして、所定の補間ルールＨＲを適用して各画素の濃度値を求め、パターン番号ｐｎで特定されるディザパターンＤＰを用いてドットパターンを復元する（＃２１０）。そのドットパターンをラインバッファに転送し（＃２１１）、領域番号ｎｂに１を加算する（＃２１２）。なお、領域番号ｎｂは、処理対象の低解像度領域ＴＬの６ライン内における位置を示す番号である。
【０１５７】
同じ６ライン分についての展開が終了するまで（＃２１３でノー）、ステップ＃２０３以降を繰り返す。６ライン分についての展開が終了すると（＃２１３でイエス）、領域番号ｎｂを「０」に初期化し（＃２１４）、展開した６ライン分のデータ（２値画像データ）をプリントアウトする（＃２１５）。全ての圧縮データＤ２についての処理が済むまで繰り返す（＃２１６）。
【０１５８】
ステップ＃２０４でイエス、つまり復元によって得られた値ｄｃ１が「２５８」である場合には、パターン番号ｐｎに「１」を加算する（＃２２１）。パターン番号ｐｎが「３」であった場合は（＃２２２でイエス）、パターン番号ｐｎから「３」を差し引く。つまり、パターン番号ｐｎは、「０」「１」「２」のいずれかの値となり、これによって３種類のディザパターンＤＰのいずれかが特定される。
【０１５９】
ステップ＃２０６でイエス、つまり値ｄｃ１が「２５７」である場合には、累計値ｋ１を代表値ａとして、補間ルールＨＲを適用して各画素の濃度値を求め、パターン番号ｐｎで特定されるディザパターンＤＰを用いてドットパターンを復元する（＃２３１）。そのドットパターンをラインバッファに転送し（＃２３２）、領域番号ｎｂに１を加算する（＃２３３）。これを５０回繰り返す（＃２３４）。これによって、差分「０」が５０回続いたときの代表値ａに基づいて５０個の低解像度領域ＴＬの２値画像データが再現される。なお、この処理中においてラインの右端まできたときは、一旦処理を中断し、ステップ＃２１４以降の処理を行い、新たに次のラインの先頭からドットパターンを書き込むようにする。
【０１６０】
ステップ＃２０５でイエス、つまり値ｄｃ１が「２５６」である場合には、中解像度領域ＴＭの処理であるステップ＃２５１に移行する。ステップ＃２５１において、データをデコード２によって復元する。デコード２によって得られた値ｄｃ２が「２５」でなければ（＃２５２でノー）、値ｄｃ２はドット数の差分であるので、それまでの累計値ｋ２に値ｄｃ２を加算し、得られた値を新たな累計値ｋ２とする（＃２５３）。累計値ｋ２が「２４」を超えた場合には（＃２５４でイエス）、ドット数の最大値を超えているので、累計値ｋ２から「２５」を差し引く（＃２５５）。そして、累計値ｋ２をドット数として、パターン番号ｐｎで特定されるディザパターンＤＰを用いてドットパターンを再現する（＃２５６）。これを４回繰り返す（＃２５７）。４回分のドットパターンをラインバッファに転送し（＃２５８）、領域番号ｎｂに１を加算する（＃２５９）。
【０１６１】
ステップ＃２５２でイエス、つまり値ｄｃ２が「２５」である場合には、高解像度領域ＴＳの処理であるステップ＃２６１に移行する。ステップ＃２６１において、データをデコード３によって復元する（＃２６１）。復元された値から、高解像度領域ＴＳの８ドットのパターンを再現する（＃２６２）。これを３回繰り返す（＃２６３）。
【０１６２】
上に述べたように、圧縮処理に際して、２値画像データＤ１をディザパターン情報成分と画像情報成分とに分離する。そして、画像情報成分のみを取り出し、ハフマン法による符号化の処理を行って圧縮データＤ２とする。圧縮データＤ２にはディザパターン情報成分を含めないので、高い圧縮率と高速処理を実現することができる。
【０１６３】
また、高解像度領域ＴＳの処理においては、８画素の画像データを１つの数値で読み替えるので、アドレス指示が速い。これによっても全体の処理時間の短縮が図られる。
【０１６４】
プリンタ１３において、圧縮データＤ２の復元のために用いるＡＳＩＣのコストは、オンチップメモリーの作業領域の大きさによって大きく左右される。データの展開処理を行うための作業領域としては、読み込んだディザパターンＤＰおよびデコード表ＤＣの格納領域、処理対象領域のデータの格納領域が必要である。これらのデータ量は、例えば、ディザパターンＤＰが数百バイト〜数Ｋバイト程度、デコード表ＤＣが２Ｋバイト程度であり、その他のバッファなどを含めても全体で３〜４Ｋバイト程度あれば十分である。したがって、３〜４Ｋバイト程度の小規模なＡＳＩＣをプリンタ１３に備えることによって、圧縮データＤ２の復元処理を高速で行うことができる。また、デコード表ＤＣをＲＯＭに格納することにより、さらに容量を小さくすることができる。このように、プリンタ１３において、小規模なハードウェアで圧縮データＤ２を高速に展開することができる。これにより、安価なプリンタ１３を使用しつつ、全体の処理を短時間で行うことが可能となる。
【０１６５】
上に述べた実施形態において、図３に示す低解像度領域区画部１０１は、２値画像データＤ１を低解像度領域ＴＬに区画するものであるが、その区画の仕方については、種々の方法を採用することが可能である。つまり、区画は仮想的なものでもよいので、２値画像データＤ１を領域ごとに実際に分割する必要はない。例えば、低解像度比較部１０２が比較すべき位置を指し示すためのアドレス指定を行うことでもよい。図３に示す圧縮データ作成部１００の構成は一例であり、種々の構成によって上に述べた機能を実現することが可能である。
【０１６６】
上に述べた実施形態においては、コンピュータ本体１１に擬似階調化部１７０が設けられ、ここで画像データＦＤの２値化処理を行ったが、コンピュータ本体１１の内部で２値化処理を行うことなく、外部から２値画像データＤ１を入力するようにしてもよい。その場合に、２値化処理に用いられたディザパターンＤＰなどの情報を取得しておけばよい。      
【０１６７】
上に述べた実施形態において、２値画像データＤ１は、それを構成する各画素にドットを打つか打たないかをフラグのあるなしで表現することが可能である。濃度の高い画素に対してドットを打つようにしてもよいし、濃度の低い画素に対してドットを打つようにしてもよい。
〔第２〕
４値の画像データを圧縮する場合についての実施形態
次に、擬似階調画像が多値である４値の画像データである場合について説明する。この場合においても２値の画像データを圧縮する場合と基本的には同じである。したがって、第１での説明および図面は、第２において対してもほぼ同様に適用することができ、多くの部分について、第１での説明における「２値」を第２では「４値」に読み替えることによって適用できる。ここでは主な相違点についてのみ説明する。
【０１６８】
図２５は区画された低解像度領域ＴＬを説明するための図、図２６は低解像度領域ＴＬとディザパターンＤＰの例を示す図、図２７は４値の画像データ（４値画像データ）Ｄ5 を説明するための図、図２８は２値の画像データ（２値画像データ）Ｄ１を説明するための図である。
〔４値画像データの説明〕
図２５の例では、４値画像データＤ５の全体の領域が、左上から順に、低解像度領域ＴＬ１、ＴＬ２、ＴＬ３、…というようにＴＬｍまで区画されている。図２６において、１つの低解像度領域ＴＬは、４８個（６×８個）の画素ＴＰからなる矩形の領域である。
【０１６９】
図２６（ａ）に示す低解像度領域ＴＬにおいて、黒の画素が、ドットが打たれた画素である。ドットの大きさは、画素値に応じて３段階に変化する。つまり、ドットが打たれていない状態を「０」とすると、１画素における約３分の１の領域にドットが打たれた状態を「１」、約３分の２の領域にドットが打たれた状態を「２」、１画素の全領域にドットが打たれた状態を「３」と表すことができる。
【０１７０】
図２７に示すように、各状態「０」「１」「２」「３」に対応して、例えばプリンタのレーザの発光時間を制御（パルス幅制御）することによって、画素の濃度を４段階に変化させることができる。このように、これらの状態「０」「１」「２」「３」は、階調値に対応している。
【０１７１】
すなわち、状態「０」では、レーザが発光せず、その画素は「白」となる。状態「１」では、レーザ光は画素幅の約３分の１の時間だけ発光し、画素の約３分の１の領域が「黒」となる。同様に、状態「２」または「３」では、それぞれ、レーザ光は画素幅の約３分の２または約３分の３の時間だけ発光し、画素の約３分の２の領域または全体が「黒」となる。つまり、状態の値に対応して４階調の濃度が得られる。４階調を表す４つの状態は、２ビットで表すことができる。したがって、８ビットによって、４階調の画素を４個表すことができる。
【０１７２】
なお、レーザの発光時間、それによって打たれるドットの大きさ、および、それをマクロ的に見た濃度について、これらの相互関係は複雑であり、上に述べた例は説明のための一例にすぎない。
【０１７３】
ディザパターンＤＰのしきい値は、０〜２５５の範囲の値であり、各画素に対して３つのしきい値が設定されている。各画素において、３つのしきい値に対して、低い順に、「１」「２」「３」のインデックス（番号）がそれぞれ与えられている。インデックスが「１」である最も低いしきい値よりも小さい濃度の画像データＦＤは、状態「０」となる。インデックス「１」のしきい値とインデックス「２」のしきい値との間の濃度の画像データＦＤは、状態「１」となる。インデックス「２」のしきい値とインデックス「３」のしきい値との間の濃度の画像データＦＤは、状態「２」となる。インデックスが「３」である最も高いしきい値よりも大きい濃度の画像データＦＤは、状態「３」となる。通常、画素が異なれば、同じインデックスに対するしきい値も異なる。
【０１７４】
なお、図２７において、仮想階調画像データＬＡがほぼ水平な直線で示されている。この仮想階調画像データＬＡが、擬似階調画像を再構成する際に原画像データＦＤに代えて用いられるのであり、代表値ａを用いて再現されるものである。
【０１７５】
なお、先願方法においては、この仮想階調画像データＬＡは、当該領域における代表値ａそれ自体である。
【０１７６】
ここで、比較のために２値画像データについても説明する。
【０１７７】
図２８に示すように、２値画像データでは、各状態「０」「１」に対応して、例えばプリンタのレーザをオンオフ制御することによって、画素の濃度を白黒２段階に変化させることができる。
【０１７８】
すなわち、状態「０」では、レーザが発光せず、その画素は「白」となる。状態「１」では、レーザ光が発光し、その画素は「黒」となる。つまり、状態の値に対応して２階調の濃度が得られる。
【０１７９】
図２８においても、図２７の場合と同様な仮想階調画像データＬＡがほぼ水平な直線で示されている。
〔代表値ａの求め方〕
図２９は代表値ａの求め方を説明するための図である。なお、第１の場合と同様に、ここでも低解像度領域ＴＬが１次元の領域であるとする。
【０１８０】
代表値ａは、多値の場合でも２値の場合とほとんど同じ処理で求めることができる。但し、多値の場合には、擬似階調画像の画像データによってそれぞれの画素ＴＰについて上限および下限がある点が異なる。
【０１８１】
図２９において、４値画像データＤ５について、４画素ＴＰからなる１次元の低解像度領域ＴＬ１が示されている。図におけるそれぞれの画素ＴＰの階調値は、左の画素ＴＰから順に、「１」「２」「３」「３」である。この４値画像データＤ５は、図に示す画像データＦＤを、同じく図に示すディザパターンＤＰを用いて４値化処理を行うことにより得られたものである。つまり、各インデックスに対して、画像データＦＤがディザパターンＤＰのしきい値以下であれば「白」、しきい値を越えれば「黒」となり、黒の個数によってその画素ＴＰの階調値が決まる。
【０１８２】
まず、最初の代表値ＡＰ０を決める。最初の代表値ＡＰ０は、４値画像データＤ５の領域外であるので、どのような値でもとり得るが、２値の場合と同様に適当な値とすればよい。
【０１８３】
そして、最初のブロックである低解像度領域ＴＬ１を注目領域とし、最初の代表値ＡＰ０から注目領域の各白インデックスのしきい値に向かって直線ＬＧ１、２、３、４を引く。そのうち最も低い位置にある直線ＬＧ４を選択し、直線ＬＧ４を延長して当該注目領域の最後の画素ＴＰの位置との交点を上限位置とし、この上限位置における濃度値を注目領域における代表値上限ＡＰｍａｘとする。
【０１８４】
白インデックスと同様の処理を黒インデックスについても行う。すなわち、最初の代表値ＡＰ０から、注目領域の各黒インデックスのしきい値に向かって直線ＬＧ５、６を引く。そのうち最も高い位置にある直線ＬＧ５を選択し、直線ＬＧ５を延長して当該注目領域の最後の画素ＴＰの位置との交点を下限位置とし、この下限位置における濃度値を注目領域における代表値下限ＡＰｍｉｎとする。
【０１８５】
このようにして求めた代表値上限ＡＰｍａｘが代表値下限ＡＰｍｉｎより大きいとき、つまり上の（１）式が成り立つとき、代表値上限ＡＰｍａｘと代表値下限ＡＰｍｉｎとの間を代表値範囲とする。そして、代表値範囲内の値を、当該注目領域の代表値ａとして決定する。
〔低解像度領域、中解像度領域、高解像度領域〕
図３０は低解像度領域ＴＬ、中解像度領域ＴＭ、および高解像度領域ＴＳを示す図である。
【０１８６】
図３０に示すように、低解像度領域ＴＬは６×８画素の領域である。低解像度領域ＴＬは、中解像度領域区画部１０４によって、３×４画素の４つの中解像度領域ＴＭに区画される。中解像度領域ＴＭは、必要に応じて、さらに４画素の３つの高解像度領域ＴＳに区画される。
〔中解像度領域の処理〕
図３１は画像におけるドット数の差分の出現頻度の分布を表す図である。
【０１８７】
中解像度代表値算出部１０６では、中解像度領域ＴＭにおいて、上に述べたと同様な処理によって代表値ａを求める。
【０１８８】
そして、得られた代表値ａに基づいて、隣合う中解像度領域ＴＭの間の代表値の差分が、低解像度領域ＴＬの場合と同様にして算出される。ここでの差分は、上に述べた循環整数を用いて、０〜２５５の範囲となる。
【０１８９】
図３１に示すように、差分が「０」〜「３０」程度および「２００」〜「２５５」程度の範囲で出現頻度が高い。差分である０〜２５５の後に、「２５６」の値についての出現頻度が示されている。これの趣旨は低解像度領域ＴＬの場合の属性コードと同様であり、「２５６」は、ある中解像度領域ＴＭで代表値ａを決定できないことを表す属性コードである。その場合に、コード２で「２５６」を出力し、領域をさらに高解像度領域ＴＳに区画する。
【０１９０】
なお、第１に示す２値の場合には、中解像度領域ＴＭは２４画素であり、最大で２４個のドットであったので、領域のドットの数を数えて代表値とした。しかし、第２に示す４値の場合では、共通化と処理の速さとを優先させ、上に述べたように濃度値を代表値とした。
〔フローチャートによる説明〕
次に、第２における処理について、フローチャートを参照して説明する。
【０１９１】
図３２はコンピュータ本体１１における圧縮処理の大まかな流れを示すフローチャートである。なお、図３２は第１の図１８に対応し、ステップ＃２１Ｂのみが異なる。
【０１９２】
つまり、図３２において、１つの中解像度領域ＴＭについて代表値範囲がある場合には（＃２０でイエス）、ステップ＃１５と同様にして代表値ａを求める（＃２１Ｂ）。そして、その差分をとり（＃２２）、符号化する（＃２３）。
【０１９３】
図３３および図３４は圧縮データ作成部１００における圧縮処理のフローチャート、図３５および図３６はデータ復元部３００における復元処理のフローチャートである。なお、図３３〜３６は、第１の図２０、２１、２３、２４に対応する。
【０１９４】
図３４において、いずれかのディザパターンＤＰで代表値範囲が得られる場合に（＃１３１でイエス）、その中解像度領域ＴＭにおいて代表値ａを取得してその差分を算出し（＃１３２Ｂ）、代表値差分をコード２で符号化して出力する（＃１３３Ｂ）。これを４回繰り返し、図３３のステップ＃１１３の低解像度領域ＴＬの処理に戻る。
【０１９５】
ステップ＃１３１でノー、つまり中解像度領域ＴＭがいずれのディザパターンＤＰでも代表値範囲が得られなかった場合には、得られなかったことを表す属性コード「２５６」をコード２で符号化して出力し（＃１３５Ｂ）、高解像度領域ＴＳの処理であるステップ＃１４１以降に移行する。
【０１９６】
図３６において、ステップ＃２５２Ｂにおいて、デコード２によって得られた値ｄｃ２が「２５６」でなければ、値ｄｃ２は代表値の差分であるので、それまでの累計値ｋ２に値ｄｃ２を加算し、得られた値を新たな累計値ｋ２とする（＃２５３）。累計値ｋ２が「２５５」を超えた場合には（＃２５４Ｂでイエス）、代表値の最大値を超えているので、累計値ｋ２から「２５６」を差し引く（＃２５５Ｂ）。そして、累計値ｋ２を代表値として、パターン番号ｐｎで特定されるディザパターンＤＰを用いてドットパターンを再現する（＃２５６）。
【０１９７】
ステップ＃２５２Ｂでイエス、つまり値ｄｃ２が「２５６」である場合には、高解像度領域ＴＳの処理であるステップ＃２６１に移行する。
【０１９８】
なお、復元処理において、圧縮データＤ２のヘッダー部に添付されたディザパターンＤＰを用いてディザ処理が行われる。
【０１９９】
上の実施形態において、擬似階調化として２値化および４値化を行ったが、３値化、８値化、１６値化など、種々の値の多値化を行うことも可能である。各領域における代表値位置ＡＰは、上に述べた以外の位置、例えば領域の中央、領域の他の頂点などとすることも可能である。
【０２００】
その他、コンピュータ本体１１、プリンタ１３、およびプリントシステム１の全体または各部の構成、機能、個数、ビット数、処理の内容または順序などは、本発明の趣旨に沿って適宜変更することができる。
【産業上の利用可能性】
【０２０１】
本発明は、ラスタプリンタやＧＤＩプリンタなどを含んだプリントシステムに利用され、擬似階調化された画像データの圧縮方法として利用可能である。
【図面の簡単な説明】
【０２０２】
【図１】本発明に係るプリントシステムの全体構成を示す図である。
【図２】コンピュータ本体の機能的な構成を示すブロック図である。
【図３】コンピュータ本体の圧縮データ作成部を機能的に示すブロック図である。
【図４】プリンタの機能的な構成を示すブロック図である。
【図５】区画された低解像度領域を説明するための図である。
【図６】低解像度領域とディザパターンの例を示す図である。
【図７】サイズの異なる低解像度領域とディザパターンの例を示す図である。
【図８】各低解像度領域における代表値の位置を示す図である。
【図９】低解像度領域における補間ルールの例を説明するための図である。
【図１０】代表値の求め方を説明するための図である。
【図１１】循環整数の例を示す図である。
【図１２】画像における代表値の差分の出現頻度の分布を表す図である。
【図１３】低解像度領域および中解像度領域を示す図である。
【図１４】ドットパターンの数値化を説明するための図である。
【図１５】各ドットパターンの出現頻度の分布を表す図である。
【図１６】ハフマンコード表の例を示す図である。
【図１７】デコード表の例を示す図である。
【図１８】圧縮処理の大まかな流れを示すフローチャートである。
【図１９】復元処理の大まかな流れを示すフローチャートである。
【図２０】圧縮データ作成部における圧縮処理のフローチャートである。
【図２１】圧縮データ作成部における圧縮処理のフローチャートである。
【図２２】代表値範囲の確定処理の例を示すフローチャートである。
【図２３】データ復元部における復元処理のフローチャートである。
【図２４】データ復元部における復元処理のフローチャートである。
【図２５】区画された低解像度領域を説明するための図である。
【図２６】低解像度領域とディザパターンの例を示す図である。
【図２７】４値の画像データを説明するための図である。
【図２８】２値の画像データを説明するための図である。
【図２９】代表値の求め方を説明するための図である。
【図３０】低解像度領域および中解像度領域を示す図である。
【図３１】画像におけるドット数の差分の出現頻度の分布を表す図である。
【図３２】圧縮処理の大まかな流れを示すフローチャートである。
【図３３】圧縮データ作成部における圧縮処理のフローチャートである。
【図３４】圧縮データ作成部における圧縮処理のフローチャートである。
【図３５】データ復元部における復元処理のフローチャートである。
【図３６】データ復元部における復元処理のフローチャートである。
【符号の説明】
【０２０３】
１  プリントシステム
１１  コンピュータ本体（画像データの圧縮装置）
１３  プリンタ
１００  圧縮データ作成部
１０１  低解像度領域区画部（第１の手段）
１０３  低解像度代表値算出部（第２の手段）
１０４  中解像度領域区画部（小領域に区画する手段）
１０６  中解像度代表値算出部
１０７  ドットパターン抽出部
１０８  符号化部（第３の手段）
１０９  データ送信部
３００  データ復元部
Ｄ１  ２値画像データ（擬似階調画像のデータ、画像データ）
Ｄ２  圧縮データ
Ｄ５  ４値画像データ（擬似階調画像のデータ、画像データ）
ＤＰ  ディザパターン
ＴＬ  低解像度領域（所定の領域）
ＴＭ  中解像度領域（所定の領域）
ＴＳ  高解像度領域（所定の領域）
ａ  代表値
ＡＰ  代表値
ＨＲ  補間ルール
ＡＬ  直線（擬似階調画像）
ＰＡ  三角形（平面）
ＦＳ  再構成画像データ（擬似階調画像、擬似階調化を行って得られる画像データ）
【図１】
0004696738.tif 000002
【図２】
0004696738.tif 000003
【図３】
0004696738.tif 000004
【図４】
0004696738.tif 000005
【図５】
0004696738.tif 000006
【図６】
0004696738.tif 000007
【図７】
0004696738.tif 000008
【図８】
0004696738.tif 000009
【図９】
0004696738.tif 000010
【図１０】
0004696738.tif 000011
【図１１】
0004696738.tif 000012
【図１２】
0004696738.tif 000013
【図１３】
0004696738.tif 000014
【図１４】
0004696738.tif 000015
【図１５】
0004696738.tif 000016
【図１６】
0004696738.tif 000017
【図１７】
0004696738.tif 000018
【図１８】
0004696738.tif 000019
【図１９】
0004696738.tif 000020
【図２０】
0004696738.tif 000021
【図２１】
0004696738.tif 000022
【図２２】
0004696738.tif 000023
【図２３】
0004696738.tif 000024
【図２４】
0004696738.tif 000025
【図２５】
0004696738.tif 000026
【図２６】
0004696738.tif 000027
【図２７】
0004696738.tif 000028
【図２８】
0004696738.tif 000029
【図２９】
0004696738.tif 000030
【図３０】
0004696738.tif 000031
【図３１】
0004696738.tif 000032
【図３２】
0004696738.tif 000033
【図３３】
0004696738.tif 000034
【図３４】
0004696738.tif 000035
【図３５】
0004696738.tif 000036
【図３６】
0004696738.tif 000037