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