(57)【特許請求の範囲】
【請求項１】
ラスタ画像を圧縮する方法であって、
前記ラスタ画像の各ラインについて、該ラスタ画像がテキスト画像を表すか、ハーフトーン化画像を表すかを判定するステップと、
前記ラスタ画像がテキストを表す場合は、サブピースを順次配置して１つのサブストリングにするステップと、
前記ラスタ画像がハーフトーン化画像を表す場合は、サブピースをインターリーブして少なくとも１つのサブストリングにするステップと、
各サブストリングの任意の予測ランおよびリテラルランにインデクス付けを行って少なくとも１つのインデクスサブストリングにするステップと、
各インデクスサブストリングを無損失圧縮するステップ
を含む、方法。
【請求項２】
ハフマンテーブルを使用するステップと、
前記ハフマンテーブルを再生成する必要があるという指示を待つステップと、
前記ハフマンテーブルを再生成するステップ
をさらに含む、請求項１の方法。
【請求項３】
前記指示が、閾値レベルと比較される実際の圧縮率である、請求項２の方法。
【請求項４】
前記無損失圧縮するステップが、ハフマン符号化法を使用する、請求項１の方法。
【請求項５】
前記無損失圧縮するステップが、ランペル・ジブ（Lempel-Ziv）符号化法を使用する、請求項１の方法。
【請求項６】
前記無損失圧縮するステップが、算術符号化法を使用する、請求項１の方法。
【請求項７】
画像を圧縮する方法であって、
画像をディザリングして、１ビット／画素のラスタデータを生成するステップと、
前記ラスタ画像の各ラインについて、該ラスタ画像がテキスト画像を表すか、ハーフトーン化画像を表すかを判定するステップと、
前記ラスタ画像がテキストを表す場合は、サブピースを順次配置して１つのサブストリングにするステップと、
前記ラスタ画像がハーフトーン化画像を表す場合は、サブピースをインターリーブして少なくとも１つのサブストリングにするステップと、
すべての予測ランおよびリテラルランにインデクス付けを行うことにより、各々のサブストリングを符号化して、複数のインデクスサブストリングのうちの１つのインデクスサブストリングにするステップと、
前記複数のインデクスサブストリングを無損失圧縮して圧縮データにするステップ
を含む、方法。
【請求項８】
前記圧縮データを復元して前記複数のインデクスサブストリングにするステップと、
データと共に前記予測ランおよび前記リテラルランにより前記複数のインデクスサブストリングを復号化して前記サブストリングにするステップと、
前記サブストリングをインターリーブして前記ラスタデータを再生成するステップ
をさらに含む、請求項７の方法。
【請求項９】
前記無損失圧縮するステップが、ランペル・ジブ（Lempel-Ziv）符号化法を使用する、請求項８の方法。
【請求項１０】
前記無損失圧縮するステップが、算術符号化法を使用する、請求項８の方法。
【請求項１１】
前記無損失圧縮するステップが、ハフマン符号化法を使用する、請求項７の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ圧縮に関し、特に、ラスタデータを圧縮する方法および装置に関する。
【０００２】
【従来の技術】
モノクロレーザプリンタの技術が進歩したため、プリンタは、より高解像度の画像を印刷することができる。また、画像を印刷するためにプリンタに送信する必要のあるラスタデータの量も増大し、プリンタの性能に悪影響を与えている。画像がプリンタに送信される前にスケーリングおよびディザリングされる場合、８×１０インチのラスタ画像には、３００ＤＰＩの装置の場合は０．９メガバイトのデータ、６００ＤＰＩの装置の場合は３．６メガバイト、１２００ＤＰＩの装置の場合は１４．４メガバイトのデータが必要である。
【０００３】
モノクロのHewlett-Packard LaserJets（登録商標）プリンタ等、プリンタおよびドライバによっては、カラーラスタデータまたはディザリングされたモノクロラスタデータのいずれかを印刷することができるものがある。カラーデータが送信されると、プリンタはスケーリングとディザリングとを実行し、ドライバがスケーリングおよびディザリングした場合に生成されたであろう画像と同じ画像を生成する。カラーデータかまたはディザリングされたモノクロデータを送信するという選択は、画像を印刷するために必要なＩ／Ｏの量を低減することに基づいている。カラー画像の方が、画素毎により多くのデータを有しているが、スケーリングおよびディザリングされたモノクロ画像の方が、通常、解像度がより高く、この場合６００または１２００ＤＰＩである。ソースカラー画像（すなわち、元の画像）が低解像度であるか、または大きく拡大されている場合、ソース画像のカラーまたはグレースケールバージョンを送信して、プリンタにスケーリングおよびディザリングを実行させるというＩ／Ｏの利点がある。実際には、ソースカラー画像は、通常、ドライバによって８ビット／画素のグレースケール画像に変換される。ソースカラー画像が高解像度であるかまたはそれほど拡大されていない場合、プリンタドライバがディザリングおよびスケーリングを実行し、印刷の用意ができているモノクロ画像をプリンタに送信すれば、Ｉ／Ｏはより少なくなる。レーザプリンタによっては、カラーデータまたはグレースケールデータを受入れる能力を有していないものもあり、そのため、スケーリングおよびディザリングは常にドライバによってホスト上で実行される。
【０００４】
ソース画像またはディザリングされたモノクロ画像を圧縮するために使用可能な圧縮には、いくつかの選択肢がある。大抵のものが、タグ付画像ファイルフォーマット（tagged image file format（ＴＩＦＦ改訂版４））およびデルタ行圧縮（delta row compression）の変形である。ディザマトリクスによって各行が先行する行と異なるものとなるため、デルタ行圧縮の使用可能なバージョンは、ディザリングされたモノクロ画像に対して有効ではない。ランレングス符号化ＴＩＦＦ圧縮法は、現時点で使用可能な最適な選択肢であり、ディザリングされた画像が大きく拡大される場合や、生成された画像が、ビジネス用のグラフィクスおよび図表などのように、同じ色の領域を多く含むものである場合に、適切に作用する。
【０００５】
１つのソース画素が多くの同様の出力画素を生成するため、画像のスケーリングは画像の圧縮性に影響を与え、ＴＩＦＦ方式を用いる圧縮性は、隣接する画素の類似性による。なお、スケーリングは、画像の物理的寸法を変化させるためだけに行われるのではなく、画像の解像度を変換するためにも使用される。例えば、ソース画像が、７２画素／インチの解像度を有し、寸法が５インチ×５インチの場合、１２９，６００画素を含むこととなる。１２００ＤＰＩのモノクロプリンタの場合、画像がスケーリングおよびディザリングされ、５インチ×５インチの画像として印刷されると、３６，０００，０００画素までスケーリングされることになる。
【０００６】
ラスタ画像をモノクロレーザプリンタで印刷する場合に最も問題となるのは、ラスタ画像が走査された写真（以下、走査写真）と同程度の高解像度画像を有する場合である。これらの画像の圧縮を困難にするものは、高周波数成分である。実験により、低解像度から中程度の解像度までの走査写真、ビジネス用グラフィクス、ラインアートおよび小さな高解像度画像は、LaserJet（登録商標）プリンタの性能で対応可能であることが分かっている。写真と同程度の大きな高解像度画像は、プリンタに送信されるＩ／Ｏの量が多いため、性能に対する要求が大きい。インターネットの使用が増大し、安価なスキャナ、デジタルカメラ、ビデオキャプチャ用コンピュータアクセサリおよび写真走査サービスを使用できるようになってきたため、高解像度ラスタ画像のソースがより広く使用されるようになっている。本発明は、ラスタ画像のような高解像度写真によって要求される性能の問題を対象とする。
【０００７】
Microsoft Windows（Windowsは、マイクロソフト社の登録商標である）は、ラスタ画像を結合するために使用されるラスタ演算（ＲＯＰ）のセットを定義する。Hewlett-Packard LaserJet（登録商標）プリンタは、画像がモノクロデータに変換される場合であっても、画像がプリンタに送信される前にホストコンピュータでスケーリングおよびディザリングすることによって、ＲＯＰを実行することができる。ＲＯＰ互換であるためには、ソースのＤＩＢから目的のモノクロビットマップへのすべての変換演算が、画素単位で決定論的（deterministic）でなければならず、これによりソース画素が変換される時はいつでも正確な結果が得られるようになる。アプリケーションプログラムがＸＯＲ（排他的論理和）ＲＯＰを用いてラスタ画像の中心に白色のウインドウを生成する例を考える。まず、アプリケーションプログラムは、カラー画像全体をドライバに送信し、そこでカラーデータはスケーリングおよびディザリングされてモノクロデータになる。このディザリングされた画像は、プリンタに送信されるが、このディザリングされた画像またはソースカラー画像のレコード（record）はいずれもドライバが使用できないままである。次に、アプリケーションは同じ画像のサブセットを選択し、それをプリンタに送信する。ドライバは、このサブセット画像をディザリングおよびスケーリングする。ＸＯＲ  ＲＯＰを正常に行うために、画像サブセットからディザリングされたデータの各画素は、画像サブセットの範囲内で元の画像の画素と正確に一致しなければならず、そのため、各ソース画像の画素に全く同じスケーリングおよびディザリングを行って、画像サブセットの各目的ドットが元の画像の目的ドットを正確に覆うように、ディザリングされたラスタセグメントを生成しなければならない。目的画素の値が近接する画素の値に依存して決まる「近傍」演算は、近接する画素が後続するＲＯＰで使用できない場合は、ＲＯＰ互換ではない。
【０００８】
近傍演算を使用する他の変換の例は、誤差拡散ディザリング、青色ノイズディザリング（blue noise dithering）および双一次スケーリング（bi-linear scaling）である。また、ＲＯＰ互換を保持したい場合は、非可逆（有損失）圧縮技術を排除しなければならない。ＲＯＰは、ラスタデータについて定義されるが、アプリケーションプログラムではめったに使用されない。上記の例において、白い矩形は、不透明描画モード（opaque drawing mode）で矩形の白色ラスタを送信することによって実現することができる。
【０００９】
従来から、ＲＯＰはWindows（登録商標、以下同じ）に対し、表示画面上のラスタグラフィクスを操作する高速で容易な方法を提供している。WindowsのＧＵＩは、同じグラフィカルコマンド（ＧＤＩ）のセットを用いて任意の装置に書込む手段を提供するため、部分的には成功している。すべてのWindows互換のラスタ装置は、直接にまたはＧＤＩにサポートを提供させることにより、ＲＯＰをサポートする。ＲＯＰはアプリケーションプログラムが使用するために定義され利用可能であるため、使用頻度に関係なく、機能的に完全なプリンタドライバはＲＯＰをサポートしなければならない。
【００１０】
近傍演算を行わず決定論的であり続けるための必要性を説明する他の例は、いくつかのアプリケーションプログラムは、画像データをセグメントで送信するという事実である。画像は、水平または垂直に分割されて１画素と同じ大きさのセグメントになる。アプリケーションプログラムがラスタ画像を分解するのは、Windowsが任意のラスタ回転をサポートしていないからであり、そのためアプリケーションはそれらをドライバに送信する前に画像を回転させる。アプリケーションによっては、セグメントで回転を処理し、それが完了するに従って各セグメントをドライバに送信し、印刷処理でセグメントから最終的な画像が組立てられるようにする。時々、回転された画像の先端および基部において、単一画素のコール（single pixel calls）が見つかる場合がある。これら画像セグメントを、プリンタに送信する前にプリンタドライバによってスケーリングおよびディザリングすることができる。各画像セグメントを継目無く隣接するセグメントに連結して、最終的な印刷画像を作成しなければならない。近傍演算の場合は、画像セグメントの境界に望ましくないアーティファクトが生じる場合がある。
【００１１】
【発明が解決しようとする課題】
本発明は、決定論的であるクラスタ化されたドットのオーダードディザリング（clustered dot ordered dithering）を使用し、継目の無い画像構成と共にＲＯＰをサポートする。Ulichney, R.による「Digital Halftoning」（MIT Press, Cambridge, Ma., 1987）を参照されたい。この決定論は、所定のソース画素がスケーリングおよびディザリングの関数として特定の目的画素のグループを生成し、それら目的画素の値が、１つのソース画素の値によって単に決定されるという事実に基づいている。
【００１２】
【課題を解決するための手段】
本発明を実現するために、ラスタ画像を圧縮する方法が提供される。この方法は、画像のサブピース（細分化された部分：sub pieces）を組み合わせて、少なくとも１つのサブストリング（または部分列）にすることによって実現される。各サブストリングには、任意の予測ラン（predicted run）およびリテラルラン（literal run）を符号化するためにインデクスが付される。生成されたインデクスサブストリングは、可逆（無損失）圧縮法を用いて圧縮される。
【００１３】
組み合わせるステップでは、また、ラスタ画像の各ラインについて、ラスタ画像がテキストを表すかまたはハーフトーン化された画像（以下、ハーフトーン画像）を表すかを判定する。ラスタ画像がテキストを表す場合は、サブピースは１つのサブストリングに逐次（または順次）配置される。ラスタ画像がハーフトーン画像を表す場合は、サブピースは複数のサブストリングにインターリーブされる。
【００１４】
また、圧縮データを復元（解凍）してラスタ画像にする方法も提供される。圧縮データは、可逆復元法を用いて複数のインデクスサブストリングに復元される。複数のインデクスサブストリングは、インデクステーブルを用いて予測ランおよびリテラルランをサブストリングのデータに変換することにより復号化される。サブストリングは、ラスタ画像を再生成するためにインターリーブされる。
【００１５】
添付の図面と共に以下の詳細な説明を考慮することにより、本発明をより良く理解することができる。
【００１６】
【発明の実施の形態】
本発明は、ラスタ画像の圧縮率を改善する。本発明の好ましい実施の形態は、写真と同程度の高解像度画像またはテキスト画像をディザリングおよび圧縮するために有用である。高解像度とは、ソース画像がディザリングされたモノクロ画像に変換される時に、あまりスケーリングされないことを意味する。本発明は、高解像度画像を印刷する際に、モノクロプリンタに生じる性能問題を扱うことを意図している。本発明は、概して、すべての画像に対して高圧縮率を達成する。本発明は１２００ＤＰＩプリンタ用に開発されたが、本明細書で説明する技術は、他のモノクロ装置に対しても直接適用できる。本発明において述べられている技術は、液体または固体のインクを使用するものを含む、任意のモノクロプリンタに対しても適用することができる。
【００１７】
本明細書で使用するいくつかの用語について以下に説明する。ＤＩＢは、Microsoft Windows（登録商標）オペレーティングシステムにおいて一般に使用されるラスタファイルフォーマットである装置独立ビットマップ（すなわち、装置に依存しないビットマップ）である。ＤＰＩは、インチ当たりのドット数を意味し、本明細書ではラスタファイルおよびプリンタの解像度を述べるために使用している。ＤＩＢにＤＰＩを適用することは適切ではないかもしれないが、以下では、ソース画像についてそれらが解像度を有しているものとして説明する。これは、ＤＩＢコールがプリンタドライバに到着するまでに、特定の解像度の装置（６００ＤＰＩプリンタ等）への呼出というコンテキストにおいて、ＧＤＩ（グラフィクス・ディスプレイ・インタフェース）がアプリケーションプログラムと協働して、ＤＩＢに対する解像度を決定するためである。ＲＯＰは、Windows文書によって記述されるようなラスタ演算である。ＲＬＥという用語は、ファイルのランレングス符号化を意味し、繰返しパターンを有する傾向にあるデータを圧縮するために使用される既知の方法である。
【００１８】
レーザプリンタにおいて、レーザは、他の印刷処理部に比べて比較的高い正確度で制御される。レーザのターゲット領域では、レーザ光により、静電荷が印刷ドラムを通って流れ出る。この電荷を使用して、レーザ光がドラムに当たる同じ位置で、ドラムに対して反対に帯電されたトナーを引寄せる。そして、帯電された用紙が、ドラムからその用紙にトナーを引寄せ、熱および圧力によりトナーは用紙に融着される。これは、精密な処理ではない。最終的な出力において、各ドットは、実際には用紙上で非対称な小滴となる。
【００１９】
この小滴のサイズは、ページに印刷されたテキストの品質を制御するために重要である。テキストが黒色であるため、見る人は、使用可能な最も黒く最も鮮明なテキストを望む。これは、実現可能な最小の小滴サイズを用いる一方で、黒のテキストおよびグラフィクスを完全にトナーで覆ったままにすることにより実現される。６００ＤＰＩのプリンタの論理上の画素は、正方形であり、各エッジが１インチの１／６００の長さを有している。トナーの理想的なドットは、正方形を完全に覆い、各角で正方形と交差する円である。このトナーの円は、充填された四角形の上部、右側、底部および左側に隣接する正方形にオーバラップする４つの弦を有している。正方形の領域が１正方形単位の領域に正規化される場合、円は、１．５７正方形単位の領域について、正方形の対角線に等しい直径を有する。隣接する正方形にオーバラップする弦の各々は、０．１４３正方形単位の領域を有する。
【００２０】
本発明は、本明細書で説明されている特定の実施の形態に限定されるものではない。特に図１を参照する。本技術分野では既知のことであるが、ディザマトリクス（Ｄ）は、従来の１６×１６画素ディザマトリクスである。一般に、これはB.E.Bayerによって先駆けて行われた研究に基づく伝統的なディザリング法である。Bayer, B.E.による「An optimum method for two-level rendition of continuous-tone picture」（Proceedings of IEEE International Conference in Communications, pp.26.11-26.15, 1973）を参照されたい。デジタルハーフトーン化に関する更なる情報については、Ulichney, Rによる「Digital Halftoning」（ISBN 0-262-21009-6（第４刷、1993））を参照されたい。なお、これらの開示内容は、この引用をもって本明細書に包含されたものとする。
【００２１】
１６×１６マトリクス（Ｄ）の各セクションは、１×４ニブルである。４×１セクションの各列は、図１に示されているようにＳ１、Ｓ２、Ｓ３およびＳ４とラベル付けされている。サブニブルの数は、ニブル内の画素数によって分割される（画素あたりの）ディザマトリクスの幅によって決定される。好ましい実施の形態では、ディザの幅は１６であり、ニブルのサイズは４ビットであるため、４つのストリングがある。
【００２２】
ドットがどのようにマトリクスを充填するかについて考える。グレーレベルが０（白色）である場合、マトリクスの中のいずれのドットもオンではない。グレーレベルが徐々に増大するに従い、マトリクス内に黒いドットが配置され、１６×１６マトリクス（Ｄ）全体のグレーレベルが暗く見えるようになる。
【００２３】
図３に示すように、ディザマトリクスＤは画像に全体にわたってタイル化されるため、Ｄ00の１つの画素が、Ｄ01の同じ画素位置ある画素と同じ値を有する可能性が高い。同様に、Ｄ00の１つの画素は、Ｄ10の同じ画素位置にある画素と同じ値を有する可能性が高い。この強い相関関係を使用することにより、ディザリング処理の結果生じるサブピースは、各行についてサブピース毎に編成される。好ましい実施の形態では、サブピースはニブルであるが、サブピースは、１つのビットまたは画素と同じ程度に小さくすることも、あるいは任意の大きさとすることもできる。
【００２４】
図２および図６を参照して、再順序付け（re-ordering）についてより詳細に説明する。まず、本技術分野では既知のように、ディザマトリクスＤを用いて画像をディザリング（すなわち、ディザをかける）およびスケーリングする（６０１）。次に、図２に示すように、行毎に画像をニブルに分割して、ストリングに組み合わせる。こうして、各行について、すべてのＳ１ニブルが第１のサブストリング（２０１）にあり、すべてのＳ２ニブルが第２のサブストリング（２０２）にあり、すべてのＳ３ニブルが第３のサブストリング（２０３）にあり、すべてのＳ４ニブルが第４のサブストリング（２０４）にあるようにする（６０２）。
【００２５】
行が再順序付けされると、各ニブルは、後述するようにインデクスによって符号化される（６０３）。置換の結果、図２のサブストリングは、図４に示すようにインデクスサブストリングに変換される。
【００２６】
最後に、各インデクスサブストリング（図４）は、後に詳述するように、圧縮方式を用いて圧縮される（６０４）。
【００２７】
上述したように、図２の各サブストリングは、図４のインデクスサブストリングに変換される。相関しているインデクスを緻密に検査することにより、図２のサブストリングの各々がｎ個のエントリを有し、インデクスサブストリングが互いに無関係な数のエントリを有していることに気づく。各インデクスは、ニブルの予測ラン（predicted run）またはリテラルラン（literal run）のいずれかを表す。図２を参照すると、現在の行のニブルが先行する行のニブルと一致する場合、そのニブルは予測ニブルの候補である。ニブルは、予測ニブルでない場合、リテラルニブルである。なお、予測ニブルであるニブルは、圧縮を容易にするためにリテラルニブルとして扱うことができる。
【００２８】
予測ランは、１ニブルの最小ラン長と、ストリングの数によって分割されるニブルにおける画像幅の最大ラン長と、を有することができる。リテラルランについても同じである。４ビットのニブルは１６のビットの組合せを有することができるため、１６の異なるタイプのリテラルランがある。好ましい実施の形態では、インデクスは８ビット数であり、そのため２５６の可能なインデクスを表すことができる。これら２５６のインデクスは、図５に示すように分割される。インデクス０〜６３は、種々の長さの予測ランを表し、インデクス６４〜２５５は、種々の長さのリテラルランを表す。
【００２９】
具体的には、好ましい実施の形態では、アレイエントリ０（インデクス０）は、長さ１のニブルの予測ランを表す。インデクス１は、長さ２のニブルの予測ランであり、同様にインデクス５９まで続く。インデクス６０は、長さが（画像幅）／（ストリングの数×８）の予測ランを表す。インデクス６２は、長さが（画像幅）／（ストリングの数×４）の予測ランを表す。インデクス６３は、長さが（画像幅）／（ストリングの数）の予測ランを表す。これにより、長さが６０以下のすべての予測ランをアレイ内で直接表すことができる。白色空間、黒色空間または画像全体が一定のグレーレベルである場合のように、画像が非常に長い予測ランを有する場合は、エントリ６０〜６３を使用することができる。予測ランが、アレイエントリ６０に当てはめるには小さすぎるが、アレイ５９に当てはめるには大きすぎる場合は、それを長さが６０ニブル以下の複数のセグメントに分割して、５９以下のエントリに配置する。
【００３０】
リテラルランのエントリについても同様の方式が使用される。リテラルランに対しては、アレイエントリ６４〜２５５が確保される。上記場合と同様に、１６の異なる種類のリテラルランがあり、インデクス６４〜２５５のアレイに１９２のエントリがある。これによって、各々の種類のリテラルランに対して１２のアレイエントリが割当てられる。アレイエントリ６４〜７９には、１ニブルのラン長を有する１６種のリテラルランすべてが含まれる。アレイエントリ８０〜９５には、２ニブルのラン長を有する１６種のリテラルランすべてが含まれる。このパターンは、異なるラン長を有する１２のグループすべてが２５６のアレイを満たすまで続く。このパターンは、圧縮器および復元器の単純化のために、所与のラン長およびニブルパターンに対して適切なインデクスを配置するために使用される。ニブルのグループのラン長は、整数演算を使用して（（インデクス／１６）−３）を計算することにより見いだすことができる。ニブルのビットパターンは、（インデクス％１６）である。長いリテラルランを容易にするために、１２のグループのラン長は、以下のように割当てられる。
【００３１】
【表１】
0004063487.tif 000002
【００３２】
好ましい実施の形態では、ラインが、グレー値を含んだディザリングされたラスタ画像からのものか、あるいはあるページのテキストのラスタ表現などの、白い背景に対する黒いラインからなるラスタ画像からのものかについて、判定を行う。ディザリングされた画像にインデクス付けする場合、予測ランは８ライン戻って参照されるが、「テキスト」モードでは、予測ランは１ラインしか戻らない。さらに、「テキスト」モードで動作しているときは、インターリーブされた複数のストリングＳ１〜Ｓ４は生成されず、インターリーブされたストリング（Ｓ１）のみが生成される。
【００３３】
予測行のランデータについては、ディザリングされた画像データの現在の行の、８ライン前の行に対する類似性が利用される。この類似性は、画像の性質、画像の拡大およびディザマトリクスによって与えられるパターンから生じるものであり、そのため、ディザマトリクスの大きさが異なれば、予測行に対するルックバック（戻り参照）は異なる場合がある。圧縮器は、比較のために出力データの８ラインをバッファリングし、８ライン戻ったデータの行を検査する。データが現在のデータと正確に一致している場合は、そのデータは予測行のランとして適したものである。予測行データは、プリンタに送信されない。予測行インデクスは、復元器に対し、それが８ライン前に復元したラインから指定された数のニブルをコピーして、そのデータを現在のラインに使用するように命令する。予測行が現在のラインデータと一致していない領域はすべて、リテラルニブルを用いて圧縮される。
【００３４】
理解を容易にするために、インデクス付け処理について例示する。ディザリングされたラスタ画像を処理して、データが既にニブルのストリングに組み合わされたものとする。以下のストリング（１６進数）が、画像の最初のストリングであるものとする。
【００３５】
ストリング ｙ＝ＡＡＡ０００ＡＡＡ００００ＢＢ００７７７
これは、画像の最初のラインであるため、予測ランは存在し得ず、リテラルランのみがある。代替的には、最初のストリングの場合であっても、すべてゼロ等、あるデフォルトパターンを比較の対象として使用することができる。説明のために、最初の行は、リテラルランにのみ限定されるものとする。
【００３６】
上述した表の一部は、以下のように展開される。各４ビットニブルについて、長さ４以下のリテラルランに対するインデクスを示す。
【００３７】
【表２】
0004063487.tif 000003
【００３８】
ストリングｙは、３つの「Ａ」ニブルのランで始まる。表を参照すると、３つの「Ａ」ニブルのリテラルランは、数字１０６（１６進数で６Ａ）でインデクス付けされている。次に、３つの「０」ニブルのランがあるが、それは９６（１６進数で６０）でインデクス付けされている。次に、３つの「Ａ」ニブルが続いており、それらは再び１０６（１６進数で６Ａ）でインデクス付けされている。４つほ「０」ニブルは、１１２（１６進数で７０）でインデクス付けされている。インデクス９１（１６進数で５Ｂ）は、２つの「Ｂ」ニブルのリテラルランを置換える。２つの「０」ニブルのリテラルランは、８０（１６進数で５０）でインデクス付けされており、最後の３つの「７」ニブルのリテラルランは、１０３（１６進数で６７）でインデクス付けされている。ニブルストリングｙの最終的なインデクスｙストリングは、次の通りである。
【００３９】
インデクスｙ＝１０６，９６，１０６，１１２，９１，８０，１０３  または、
インデクスｙ＝６Ａ，６０，６Ａ，７０，５Ｂ，５０，６７  （１６進数）。
【００４０】
ストリングｙの元の２０ビット（または、２０ニブル）が、インデクスｙの１４ビット（または、１４ニブル）で置換えられている。処理が進むに従い、結局ストリングは、予測ランを使用することができるようになる。ストリングｙからリテラルランと予測ランの両方を用いて、次のストリングｘを符号化することができるものとする。
【００４１】
ストリングｘ＝ＡＡＡ０００ＡＡＡ０００ＢＢ００Ｂ７７７。
【００４２】
ストリングｘをストリングｙと比較すると、最初の１２ニブル（ＡＡＡ０００ＡＡＡ０００）が一致していることがわかる。従って、ストリングｘの最初の１２のニブルは、インデクス１１（１６進数で０Ｂ）で置換えられる。これは、１２のニブルの予測ランがあることを示す。次に、ストリングｘの「Ｂ」ニブルに対するのは、ストリングｙの「０」ニブルであり、従って、この場合は予測ランは無い。「Ｂ」ニブルは、単一のリテラルとしてインデクス付けすることができるが、次のニブルもまた「Ｂ」であるため、２つの「Ｂ」ニブルのリテラルランがあり、これは９１（１６進数で５Ｂ）でインデクス付けすることが出来る。次に、２つの「０」ニブルのリテラルランがある。これをストリングｙと比較すると、予測ランが無いことがわかり、従って、それは、インデクス８０（１６進数で５０）で表される。次にストリングｘは、「Ｂ」という単一のニブルを含み、それは７５（１６進数で４Ｂ）でインデクス付けされる。ストリングｘは、３つの「７」ニブルで終わっている。ランは、予測ランとリテラルランとの両方である。ストリングｙはまったく同じニブルを有しているため、それは予測ランである。それが同じニブルのランであるため、それはリテラルランである。この場合、好ましい実施の形態では、これをリテラルラン１０３（１６進数で６７）としてインデクス付けする。各ストリングが「７」ではないもう１つの同じニブルを有している場合、予測ランはより有効になる。ニブルストリングｘについての最終的なインデクスストリングｘは、次のようになる。
【００４３】
インデクスｘ＝１１，９１，８０，７５，１０３  または、
インデクスｘ＝０Ｂ，５Ｂ，５０，４Ｂ，６７  （１６進数）。
ストリングｘの元の２０ビット（または、２０ニブル）は、インデクスｘにおいて１０ビット（または、１０ニブル）でインデクス付けされている。
【００４４】
再び図６を参照する。上述したようにニブルがインデクス付けされた後、そのインデクスは非可逆（有損失）圧縮アルゴリズムを用いて圧縮される（６０４）。いくつかの汎用的な目的において、可逆（無損失）データ圧縮処理は、従来技術では既知である。例えば、ハフマン法、シャノン・ファノ法、タンストール法、ランペル・ジブ（またはジブランペル圧縮）法および算術符号化法がある。ハフマン法は、周知でありまた広く使用されており、「A Method For Construction Of Minimum Redundancy Codes」（Proceedings IRE, 40, 10pp.1098-1100, Sept. 1952）と題されたD.A. Huffmanの論文に記載されており、引用をもってその内容を本明細書に組み込む。タンストールアルゴリズムは、「Synthesis of Noiseless Compression Codes」（Georgia Institute of Technology, Sept. 1967）と題されたB. P. Tunstallの博士論文に記載されており、引用をもってその内容を本明細書に組み込む。ランペル・ジブ処理については、「A Universal Algorithm For Sequential Data Compression」（IEEE Transactions on Information Theory, IT-23, 3, pp.337-343, May, 1977）と題されたJ. ZivおよびA. Lempelによって著された論文に記載されており、引用をもってその内容を本明細書に組み込む。算術符号化に関する追加の情報は、G. G. Langdon, Jr.による「An Introduction To Arithmetic Encoding」（IBM Journal of Research and Development, Vol. 28, n.2, March 1984, 135-149）と、D. R. Helman、G. G. Langdon, Jr.およびJ. J. Rissanenによる「Arithmetic Compression Code Control Parameters Approximation」（Vol. 23, n.11, April 1981, 5112-5114）、およびLangdon, Jr.他による米国特許第４，９０５，２９７号「Arithmetic Coding Encoder And Decoder System」に記載されており、引用をもってこれらの開示内容を本明細書に組み込む。
【００４５】
第１の汎用的なデータ圧縮処理の１つが、ハフマン法である。簡単に言うと、ハフマン法では、符号の全長セグメントを可変長ワードにマッピングする。ハフマン法では、各固定長入力セグメントが発生する確率が既知であるという想定の元に演算が行われる。ハフマン法のこの要件は、実際には、データの処理中に必要な統計値を累算する適応型処理を使用することにより満たすことができる。好ましい実施の形態では、ハフマン法を用いてインデクスを圧縮する。
【００４６】
上述した２５６のインデクス付けアレイは、圧縮されたデータストリームのハフマン符号化に対しても使用される。種々の長さの予測ランと種々の長さのリテラルランとを表すアレイがあると考える。これらエントリの各々は、所与のラスタ画像について起こりうる発生頻度を有している。好ましい実施の形態は、２つのタイプのラスタ画像、すなわち高解像度の走査写真等の複雑なラスタ画像と、グレー値の無い黒色のテキスト画像とを最適化するように構成されている。圧縮器を用いて、これら２つのグループの各々に対して典型的であると考えられる一組の画像を処理する。これから、２５６アレイの各要素に対して一組のデフォルトの確率を符号化する。各エントリについて生成されたハフマンビットパターンは、２５６アレイに格納される。
【００４７】
ラスタ画像が処理されると、圧縮器は、画像を表す一連のアレイインデクス値を生成する。圧縮器は、これらアレイインデクス値を用いて、２５６アレイに格納されたハフマンビットパターンを調べ、そのハフマンビットパターンを圧縮データストリームに添付する。復元器はハフマン圧縮データストリームを読出し、ハフマンデータを２５６のアレイインデクスに復号化し、そのアレイインデクスを処理して元の損失のないラスタ画像に戻す。
【００４８】
圧縮器と復元器は各々、ラスタ画像の処理を開始するために使用されるデフォルトのハフマンビットパターンの２つの全く同じセットを有している。ハフマンビットパターンの一方のセットは、主にグレー値を含むディザリングされたラスタ画像に対して使用され、他方のセットは、あるページのテキストのラスタ表現等の、白い背景に対する黒いラインからなるラスタ画像に対して使用される。圧縮器と復元器は、各々、処理されるラスタの各ラインに対して、テキスト用ハフマン値のセットとラスタ用ハフマン値のセットのいずれを使用するかを決定するアルゴリズムを有している。ラインが空白である等、ラインが不確定である場合には、プロトタイプ（または、試作品）はラスタ用ハフマン値のセットを使用するであろう。
【００４９】
テキストモードで圧縮する場合、予測ランは、８ラインではなく１ラインだけ戻って現在のデータを前のデータと比較する。テキストモードでは、インターリーブしているストリングＳ１〜Ｓ４は生成されず、圧縮データの１つのストリングのみが生成される。
【００５０】
テキストモードでは、リテラルランに対してハフマンデータの２つのセットを維持する。リテラルランはニブルから構成されており、大抵のテキストは６００ＤＰＩ及び１２００ＤＰＩにおいて４画素より大きいライン幅を有しているという考えである。リテラルランは、また、テキストのエッジが走査線に当たっているか、またはテキストの下の白い空間にある間、発生する傾向にある。これらの要因を組合せると、リテラルニブルが黒の画素で終了した場合は、次のリテラルニブルは黒の画素で開始することが好都合であり、リテラルニブルが白の画素で終了した場合は、次のリテラルなニブルが白のニブルで開始することが好都合である、という結論が得られる。リテラルニブルに対して２つのハフマン値のセットを保持している場合、リテラルニブルのセットのより好適なハフマン圧縮が得られる。これらの２つのセットを、１ハフマンテーブル及び０ハフマンテーブルと呼ぶことにする。リテラルニブルが１において終了する場合、圧縮器と復元器は、１のテーブルを用いて次の圧縮要素を符号化および復号化する。リテラルニブルが０で終了する場合、圧縮器と復元器は、０のテーブルを用いて次の圧縮要素を符号化および復号化する。次の圧縮要素が予測ランである場合、現在のハフマンテーブルは、符号化および復号化に使用され、そのテーブルは次の圧縮要素については変更されない。ハフマンテーブル１および０は、予測ランに対して同一の頻度で開始することができるが、リテラルランについての頻度は異なるため、符号化および復号化に使用されるすべてのハフマン値は、それらのテーブルが再平衡化された後は予測ランとリテラルランとの両方について異なる可能性がある。
【００５１】
ディザリングされたモードでは、それぞれ２５６サイズのハフマンデータの６４のセットが維持される。これにより、ディザマトリクスの各行について、ハフマンテーブルの別個のセットを有することができる。すなわち、各サブストリングに１つずつ、各行に関連する４つのハフマンテーブルがある。図７は、圧縮処理の高レベル図である。ストリングを圧縮できるようになるためには、その前に、適切なインデクスのハフマンテーブルを決定しなければならない。ストリングがディザリングされた画像からのものであると想定して、ディザマトリクスの現在の行とサブストリング数（またはストリング番号）とを決定する（７０１）ことにより、適切なハフマンテーブルを取り出す（７０３）ことができる。今や、圧縮器は、データおよび正しいテーブルを有しているため、２５６アレイに格納された予め決められたデフォルトのハフマンビットパターンを用いて、画像の最初の（または、第１の）セグメントを処理する。この画像セグメントが処理されている間、アレイインデクスの各々の使用回数が、２５６アレイに保持される。これは、ある時点で、画像内容に基づくハフマン値の新たなセットを計算する（７０５）ために有益となる。圧縮器は、いつ再計算を行うべきか（７０６）を判定し、復元器に対し、各画像ラインの最初に発生する信号ビットを使用することによって再計算するよう通知（指示）する。この方式により、圧縮器から復元器にいかなるハフマンモデルデータを送信することなく、ハフマン符号化に画像内容の影響を与えることができる。新たなハフマンビットパターンは、最近の画像データとデフォルトの画像データまたは画像の履歴データ（historical image data）との重み付けされた組合せを用いて再計算される（７０６）。
【００５２】
圧縮器は、現在の画像データがインデクスについての現在のハフマン値に適合しているか否かを監視する（７０５）。圧縮器は、インデクスについてのハフマン値が最適であった場合に最も有効であるが、この場合、画像を前処理し、復元器にハフマンモデルデータを送信する必要がある。これには、追加の処理と追加のデータ送信が必要である。使用されるシステムによるが、画像を２回処理（１回目は最適なハフマン符号化を決定し、２回目は実際にデータを圧縮する）せずに、圧縮器と復元器の両方に格納されているデフォルトデータを用いて画像を圧縮し、オンザフライで（すなわち、実行中に）ハフマン符号化を調整することにより、システム全体をより高速に動作させることが可能である。圧縮器が、ハフマン値が画像に対してもはや好適ではないと判定した場合、ハフマン値は圧縮器および復元器において再計算されることとなる。それらの新たなハフマン値は、部分的には最近の画像データに基づいており、圧縮器が再計算することが適していると再度判断するまで、画像の次のセグメントを圧縮するために使用される。これは、部分的にはうまく作用する。なぜなら、圧縮器が、プリンタ上で動作する復元器より通常多くの計算資源を有するホストコンピュータ上で動作し、２５６のアレイインデクスに対するハフマン値をいつ再計算するかを決定することについての全タスクを有しているからである。
【００５３】
データは、圧縮されるため、格納または送信を容易にするデータ構造内に配置されなければならない。１つの可能性のある構造については後述する。データは、画像をページ上に配置する場所の原点から開始する。これは、各々が３２ビット長のＸ値とＹ値とを有している。次の値は、画像のＸとＹの大きさ（または、ＸとＹの範囲：図８のそれぞれX-EXT、Y-EXT）を表す。これらの２つの３２ビット数は、画像の幅と高さを画素単位で規定する。
【００５４】
データは、各走査線に対して圧縮データを含む。（Ｙの大きさの）数の走査線がある。各走査線は、８ビット同期バイトで開始し、その後にアレイインデクスに復号化するハフマン圧縮値が続く。アレイインデクスを復元器で使用して、画像走査線を作成する。走査線データは、走査線を完成することによって範囲が決定される。圧縮データは、ニブルフォーマットであるため、ライン毎に３つまでの余分の画素を指定する場合がある。この余分の画素は、無視されなければならない。
【００５５】
ランペル・ジブ法を使用する際には、上述したような確率テーブルを使用する必要はない。このような簡略化は、ランペル・ジブ法による圧縮率が上述したハフマン法による圧縮率より小さくなるという可能性に対して、比較考量されなければならない。算術符号化法を使用する際には、圧縮率を増大させるために別のテキストおよびディザコンテキストモデルを使用することができる。
【００５６】
圧縮方法の選択は、圧縮器と復元器との間のシステムダイナミクスと送信媒体の帯域幅とによって決まる。当業者には既知であるが、圧縮方法の中には、圧縮器と復元器とで異なる計算労力および複雑性を必要とするものもある。好ましい実施の形態では、圧縮器は、ホストコンピュータ上で実行される。一般に、かかるシステムは、大きなメモリ資源と強力な計算能力を有している。さらに、ホストコンピュータは、一般に、リアルタイムのクリティカルモードでは動作していない。しかしながら、プリンタは一般に、メモリ資源がより少なく、リアルタイム環境で動作する。このため、計算強度をホストコンピュータにシフトすることにより、より単純で高速かつメモリ効率のよい復元器をリアルタイム環境で動作させることが可能となる。他のシステムでは異なるトレードオフが必要となる場合があるということは、当業者には明らかである。
【００５７】
画像走査線がデータで満たされると、次の圧縮要素が次のラインの同期バイトとなる。処理された走査線の数が、画像の開始時に規定されたＹの大きさに一致すると、画像全体が完了し、それ以上の画像データを使用することはできない。
【００５８】
圧縮データの各ラインの最初は、図８に示すような同期バイト（SYNC）２０で開始する。ディザマトリクスは、ページ指向アンカポインｔ(page oriented anchor point)を有している。同期バイト２０の目的は、ディザリングされた画像をディザマトリクスに同期させる方法を指定することである。また、同期バイトは、復元器に対し、２５６アレイのハフマンコードを再平衡化するよう通知する。同期バイトには８ビットある（図９）。最初の最も左側の高位ビットを用いて、ハフマン値に対する最平衡化動作を通知する。次のビットは、復元器に対して、復元されるラインがラスタであるか、あるいは、テキスト画像であるかを通知する。次の２つのビットは、画像を同期させるためにいくつのビットが必要であるかを示すが、その値は０、１、２または３ビットである。このディザリング変位（dithering displacement）は、画像が現在のアクティブ位置で開始したが、０〜３画素に対するディザテーブルエントリの開始端には出くわさないことを意味する。次の３つのビットは、画像を同期させるために必要な非圧縮画像データであるため、これらビットのうちの０、１、２または３つすべてが非圧縮ラインの始端に配置され、ラインの残りは圧縮されたニブルを使用して同期化される。最後のビットは、現在のところ使用されていない。
【００５９】
図１０は、好ましい実施の形態の完全なフローチャートを示す。元のモノクロビットマップのラインが読出される（８０２）。圧縮するラインがそれ以上無い場合（８０３）、処理は停止する（８０４）。圧縮モデルデータを生成する必要があるか判定し（８０５）、生成する必要があると判定した場合は、データを生成する（８０６）。かかる判定は、いくつかの方法で行うことができる。例えば、圧縮率を監視することができ、それが既定の閾値を超えた場合に、データを再生成する。代替的には、入力、または出力されるデータ量に基づいて、一定の間隔でデータを再生成することができる。次に、データがディザリングされた画像からのものであると想定することにより、ソースデータ（元データ）を４つのニブルストリングにグループ化する（８０７）。各ニブルストリングは、予測ランとリテラルランを示すインデクスにより符号化される（８０８および８０９）。符号化では、インデクス値のテーブル（８１０）を使用する。インデクスは、圧縮されている現在の行に対する現在の圧縮モデルデータ（８１２）を用いて圧縮される（８１１）。その後、圧縮データは、システムの要求に応じて送信されるか、または格納される。
【００６０】
図１１を参照して復元について説明する。まず、圧縮データのラインが取得される（９０１）。それ以上データが無い場合、処理は停止する（９０３）。同期バイトに基づいて、圧縮モデルデータを再生成する（９０４および９０５）。圧縮データは、まず、現在の圧縮モデルデータ（９０７）を用いてインデクスに復元される（９０６）。次に、そのインデクスは、インデクステーブル（９０９）を利用してニブルストリングに復号化される（９０８）。そして、これらのニブルストリングをインターリーブして、元のビットマップデータを再現する（９１１）。
【００６１】
本発明の創作段階で、予測行のデータを抽出するために、基準データの位置についていくつかの代替態様が考えられた。その代替態様のうちのいくつかは、４行戻って４画素参照すること、現在の行内で８画素戻って参照すること、８行戻って参照すること、および１６行戻って参照することであった。１６行戻って参照することは、１６：１より大きい比率で拡大される画像については良好な選択であった。それは、どの行も、１６ライン前か１６ライン先の行と一致することが保証されたためである。しかしながら、そのように大きく拡大される画像は、既に十分適切に圧縮されている。８より大きい比率でスケーリングされる画像もまた、Ｉ／Ｏ負荷の平衡（I/O load balancing）によりソース画像として送信することができる。４ライン戻って４画素を参照する場合、いくつかのグレーレベルに対しては適切には圧縮せず、垂直エッジの圧縮を利用しなかった。経験的に、ベースライン（基準ライン）に対して８ライン戻って参照することは、高解像度のラスタ画像について最適な選択であることが分かった。代替的には、圧縮器および復元器に対するデータの基準行の位置を決定するためにスケーリングファクター（または、倍率）を使用する。基準行は、１６以上の比率で拡大される画像に対しては１６ライン戻り、他のすべての画像に対しては８ライン戻る。これは、ラスタ画像をディザリングすることができないプリンタに対して適した代替態様となる。それらの製品の場合、すべての画像は、倍率に関係なく、ドライバによってスケーリングされ、ディザリングされる。
【００６２】
本願発明を要約すると、以下のようになる。最初にデータの再順序付け（reordering）を行う（６０２）ことによってラスタ画像を高圧縮する。次に、再順序付けされたデータにインデクスを付けて、任意の全ての予測ラン及びリテラルラン（図５）を符号化する。ラスタ画像の現在のラインの各部分（piece）を以前のラインと比較する。比較の結果、一致すれば、その現在の部分は予測ランであり、それに応じてインデクスを付けられる（６０３）。一致しなければ、その現在の部分はリテラルラン（図５）であり、それに応じてインデクスが付けられる（６０３）。予測ラン（図５）は、１つの部分の最小ラン長と、ストリングの数（またはストリングの番号）によって分割される部分における画像幅の最大ラン長を有することができる。リテラルラン（図５）についても同様である。ハフマン符号化のような無損失圧縮（可逆圧縮）を使用して、インデクスストリング（図４）を次に圧縮する（６０４）。ハフマン符号化を使用する場合は、ハフマンテーブルを事前に定義して、それが圧縮器と復元（解凍）器の両方に知られているようにする。圧縮器がインデクスストリングを圧縮する際には、ハフマンテーブルは適応化される（７０５、７０６）。復元器は、適応化されたテーブルをいつ使用すべきかを、圧縮器によって通知される。
【００６３】
本発明の好ましい実施の形態を図示し、説明したが、本発明の思想または特許請求の範囲から逸脱することなく、種々の修正をそれらに対して実施することができるということは、当業者には明らかである。
【００６４】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．ラスタ画像を圧縮する方法であって、
画像のサブピース（ｓ１，ｓ２，ｓ３，ｓ４）を組み合わせて少なくとも１つのサブストリング（図２）にするステップ（６０２）と、
各サブストリング（図２）の任意の予測ラン（図５）およびリテラルラン（図５）にインデクス付けを行って少なくとも１つのインデクスサブストリング（図４）にするステップ（６０３）と、
各インデクスサブストリング（図４）を可逆圧縮するステップ（６０４，図７）
からなる方法。
２．前記組み合わせるステップ（６０２）が、
前記ラスタ画像の各ラインについて、該ラスタ画像がテキスト画像を表すか、ハーフトン化画像を表すかを判定するステップ（７０１）と、
前記ラスタ画像がテキストを表す場合は、サブピース（ｓ１，ｓ２，ｓ３，ｓ４）を順次配置して１つのサブストリング（図２）にするステップと、
前記ラスタ画像がハーフトーン化画像を表す場合は、前記サブピース（図２）をインターリーブして前記少なくとも１つのサブストリング（図２）にするステップ
からさらになる、上項１の方法。
３．圧縮テーブルを再生成する必要があるという指示を待つステップ（７０５）と、
前記圧縮テーブルを再生成するステップ（７０６）
からさらになる、上項２の方法。
４．前記指示が、閾値レベルと比較される実際の圧縮率である（７０５）、上項３の方法。
５．画像を圧縮する方法であって、
画像をディザリングして、１ビット／画素のラスタデータを生成するステップ（６０１）と、
前記ラスタデータのサブピース（ｓ１，ｓ２，ｓ３，ｓ４）を組み合わせて複数のサブストリング（図２）にするステップ（６０２）と、
すべての予測ラン（図５）およびリテラルラン（図５）にインデクス付けを行う（６０３）ことにより、前記複数のサブストリング（図２）の各サブストリング（図２）を符号化して、複数のインデクスサブストリング（図４）のうちの１つのインデクスサブストリング（図４）にするステップ（６０３）と、
前記複数のインデクスサブストリング（図４）を可逆圧縮して圧縮データ（図８）にするステップ（６０４，図７）
からなる、方法。
６．前記圧縮データ（図８）を復元して前記複数のインデクスサブストリング（図４）にするステップ（９０６）と、
データと共に前記予測ラン（図５）および前記リテラルラン（図５）により前記複数のインデクスサブストリング（図４）を復号化して前記サブストリング（図２）にするステップと、
前記サブストリングをインターリーブして前記ラスタデータを再生成するステップ（９１１）
からさらになる、上項５の方法。
７．圧縮データ（図８）を復元してラスタ画像にする方法であって、
前記圧縮データ（図８）を複数のインデクスサブストリング（図４）に復元するステップ（９０６）と、
インデクステーブル（９０９）を用いて予測ラン（図５）およびリテラルラン（図５）をサブストリング（図２）のデータに変換することにより、前記複数のインデクスサブストリング（図４）を前記サブストリング（図２）に復号化するステップ（９０８）と、
前記サブストリングをインターリーブして前記ラスタデータを再生成するステップ（９１１）
からなる、方法。
８．前記複数のインデクスサブストリング（図４）の各インデクスサブストリング（図４）内の各インデクスについて、前記インデクステーブル（９０９）内の一致しているインデクスを見つけるステップと、
前記一致しているインデクスが予測ランである場合は、以前復元されたラスタデータを現在のラスタデータにコピーするステップ
からさらになる、上項７の方法。
【００６５】
【発明の効果】
本発明によれば、特に、写真並の高画質画像やテキスト画像を高い圧縮率で圧縮することができる。
【図面の簡単な説明】
【図１】従来からの１６×１６マトリクスを示す。
【図２】サブストリングに配置されたニブルを示す。
【図３】ディザマトリクスを画像全体にタイル化する（タイルのように並べる）やり方を示す。
【図４】インデクスをサブストリングに配置するやり方を示す。
【図５】インデクステーブルを分割するやり方を示す。
【図６】本発明による高レベルフローを示す簡易フローチャートである。
【図７】可逆圧縮処理の高レベルフローを示す簡易フローチャートである。
【図８】同期バイトを含むデータ構造の細部をグラフィカルに表現した図である。
【図９】同期バイトをより詳細に示す図である。
【図１０】圧縮処理全体を示すフローチャートである。
【図１１】復元処理全体を示すフローチャートである。
【符号の説明】
Ｄ  ディザマトリクス
２０  同期バイト
２６  データバイト
２０１〜２０４  サブストリング
４０１〜４０４  インデクスサブストリング
【図１】
0004063487.tif 000004
【図２】
0004063487.tif 000005
【図３】
0004063487.tif 000006
【図４】
0004063487.tif 000007
【図５】
0004063487.tif 000008
【図６】
0004063487.tif 000009
【図７】
0004063487.tif 000010
【図８】
0004063487.tif 000011
【図９】
0004063487.tif 000012
【図１０】
0004063487.tif 000013
【図１１】
0004063487.tif 000014