(57)【特許請求の範囲】
【請求項１】
圧縮処理の圧縮比の関数に応じて、一連の入力データの該圧縮の方式を調整するシングルパス圧縮方法であって、
ａ）先頭ブロックと中間ブロックと最終ブロックとを含む一連のブロックへとソース画像を変換するステップであって、該一連のブロックのそれぞれが１以上の色を含むものである、変換するステップと、
ｂ）前記ソース画像のデータについての目標圧縮比に基づいて、ベースライン目標ブロック・サイズを決定するステップと、
ｃ）前記先頭ブロックの現行目標ブロック・サイズが、前記ベースライン目標ブロック・サイズであり、前記中間ブロックと前記最終ブロックとの現行目標ブロック・サイズが、前記現行ベースライン目標ブロック・サイズと前記一連のブロック内のそれまでのブロックに関連して累積された節約分とを加えたものに等しくなるように、各ブロックについて順番に現行目標ブロック・サイズを決定するステップと、
ｄ）各ブロックについて順番に、結果として得られた圧縮ブロックが、ステップｃで決定された当該対応する目標ブロック・サイズに適合するように、前記各ブロック内の色の数に基づいて圧縮モードを選択するステップと、
ｅ）各ブロックについて順番に、ステップｄにおいて選択された前記圧縮モードを使用して前記ブロックを圧縮し、対応する圧縮ブロックを出力するステップと
を含んでなる、圧縮処理方法。
【請求項２】
ｆ）前記先頭ブロックと前記中間ブロックとについて順番に、ステップｅにおいて得られた前記圧縮ブロックのサイズの関数として部分的に前記累積された節約分を決定するステップをさらに含む請求項１に記載の方法。
【請求項３】
前記ステップｆが、前記ステップｅによって結果として得た前記圧縮ブロックのサイズを決定し、前記サイズの関数として前記節約分を決定するステップを含む請求項２に記載の方法。
【請求項４】
前記ステップｄが、前記ブロックの前記内容を分析し、該分析の結果の関数として前記圧縮モードを選択するステップを含む請求項１に記載の方法。
【請求項５】
前記関数が、目標ブロック・サイズに関して、再配分されたメモリをできるだけ早く消費するように調整する処理を行う請求項１に記載の方法。
【請求項６】
そのそれぞれが１以上の色を含む一連のソース画像ブロックを順次に圧縮するために、それぞれの所定の最大圧縮ブロック・サイズを備える複数の圧縮モードを実現するエンコーダと、
前記エンコーダに結合され、前記ソース画像ブロックのうちの所与の１つのブロックを圧縮する前記圧縮モードのうちの少なくとも１つの圧縮モードを選択するモード・セレクタであって、現行ソース画像ブロックの目標ブロック・サイズに適合するように前記ソース画像ブロック内の色の数に基づいて前記圧縮モードのうちの１つを選択するモード・セレクタと、
前記ソース画像のそれぞれの前記目標ブロック・サイズを決定する評価器と、
前記ソース画像についての目標圧縮比に基づいてベースライン目標ブロック・サイズを決定するためのアロケータであって、前記ソース画像ブロックの前記現行目標ブロック・サイズが、前記ベースライン目標ブロック・サイズであり、前記ソース画像ブロックに後続する一連のブロックの現行目標ブロック・サイズが、前記現行ベースライン目標ブロック・サイズと前記一連のブロック内のそれまでのブロックに関連して累積された節約分とを加えたものに等しくなるように、各ブロックについて順番に現行目標ブロック・サイズを決定するものである、アロケータと
を含んでなるシングルパス画像圧縮システム。
【請求項７】
前記評価器が、それぞれのソース画像ブロックの圧縮で得られる圧縮ブロックの前記ブロック・サイズを決定するブロック・サイズ・リーダを含み、前記評価器が、前記圧縮ブロックの前記サイズの関数として前記目標ブロック・サイズを決定する請求項６に記載のシステム。
【請求項８】
前記モード・セレクタが、前記ソース画像ブロックのいくつかのｎ色圧縮モードをｎ色モード・ファミリに割り当て、他のソース画像ブロックをＢＴＣ−ＶＱ圧縮モードのＢＴＣ−ＶＱモード・ファミリに割り当てる請求項６に記載のシステム。
【請求項９】
前記モード・セレクタが、前記ソース画像ブロックのいくつかを、非圧縮未処理モードを含むモードの未処理モード・ファミリに割り当てる請求項６に記載のシステム。
【発明の詳細な説明】
【発明の属する技術分野】
【０００１】
本発明は、データ処理に関し、より詳細には、データ圧縮に関する。本発明のいくつかの実施形態は、（テキストと図形と写真画像との任意の組合せを含む）連続階調複合文書の高速で高品質なシングルパスのフィットが保証された（guaranteed-fit）圧縮を実現する。
【０００２】
【従来の技術】
モデムの進歩の多くは、より迅速で複雑なデータ処理を可能にしたコンピュータ技術の進歩と関連している。しかしながら、処理されるデータの量は、処理能力の向上に簡単に追いついてきている。例えば、解像度２４ビット色（連続階調）、３００ドット／インチ（ｄｐｉ）で８×１０インチの画像を走査すると、約２０ＭＢのデータになる。解像度が６００ｄｐｉの場合には、データ量はほぼ８０ＭＢであり、画像の取り扱いおよび処理は、リソースを多く使用するタスクである。
【０００３】
多くの用途において、画像を表すのに必要なデータ量を減少させるために、データ圧縮が使用される。データ圧縮は、データをより密度の高い形で再符号化することである。圧縮データを展開して（圧縮されていない）元のデータを再現することができる場合には、この圧縮は、「無損失（lossless）」と呼ばれる。これができない場合には、圧縮に損失があると言われる。原則的には無損失な圧縮が好ましいが、損失のある圧縮は、データをきわめて大幅に縮小できることがある。いくつかの画像の事例において、画像品質の低下が知覚できない程度の損失のある圧縮を使用して、データを大幅に縮小することができる。他の事例では、画像品質に許容できる妥協により、より大幅に縮小することができる。
【０００４】
一部のレーザプリントの用途などの一部の用途では、フルサイズの非圧縮画像を記憶するにはメモリが不十分である。そのような用途では、圧縮画像全体が所定の記憶容量の範囲に収まるように画像を圧縮しなければならない。目標画像サイズにフィット（適合）することを保証する圧縮方式は、「フィット保証（guaranteed fit）」と呼ばれる。さらに、高速動作要件および低メモリ要件を考慮して、画像は、受け取ったとき、すなわち「シングルパス（single pass）」においても圧縮されなければならない。
【０００５】
シングルパスフィット保証（single pass guaranteed-fit）の応用例には、すべての画像圧縮方式が適しているとは限らない。ウェーブレット・ベース（wavelet-based）のＪＰＥＧ２０００は、適合を保証することができるが、画像全体に一般に作用する（したがって、「シングルパス」とは言えない）。さらに、ウェーブレット・ベースの圧縮方式は、プロセッサを集中的に使用し、したがって性能上の不利益を強要することになる。
【０００６】
ブロック・ベース（block-based）の圧縮方式は、シングルパス圧縮によく適している。ブロック・ベースの圧縮方式は、（例えば、８×８画素の）ブロックに画像を一般に分割し、ブロックを個別に圧縮する。そのような２つのブロック・ベースの圧縮方式は、一般的なＪＰＥＧおよびブロック切捨て符号化（block-truncation coding：以下、「ＢＴＣ」とよぶ）である。
【０００７】
一般的なＪＰＥＧ圧縮方式は、ブロック・ベース（block-based）であるので、シングルパス圧縮に使用することができるが、シングルパスにおいて指定されたバッファ内で適合を保証しない。また、希にある異常な画像に対しては、圧縮ではなくむしろ展開される場合がある。
【０００８】
（１９７９年にE. J. DelpとO. R. Mitchellによる論文「Image Compression using block truncation coding」IEEE Trans. Comm., Vol. COM-27, pp.1335-42で最初に提案された）「Block Truncation Coding」（ＢＴＣ）は、（一般に、４×４の）白黒画像の小さなブロックを、それぞれ８ビットの２つの中間調レベルと、各画素に使用するレベルを示す１ビット／画素の２値マスクとにより表現する一群の符号化技術を指す。この符号化方式は、基本的には損失があるが、画像のテキスト部分と図形部分とに一般に現れるような２つのレベルだけを有するブロックの場合には、この方式は無損失になることに注意されたい。ＢＴＣ符号化の総合的な調査は、P. Franti, O. Nevalainen, T. Kaukorantaによる論文「Compression of digital Images by bloc truncation coding： a survey」, Computer Journal, col.37, no.4, pp.308-32, 1994に表されている。
【０００９】
ベクトル量子化（vector quantization：以下、「ＶＱ」とよぶ）は、多数のスカラ要素がグループ化され、いくつかのベクトル再現レベルを使用して再現される一般的な信号圧縮方式を指す。ＶＱは、A.GershoとR.M.Grayによる論文「Vector Quantization and Signal Compression」Boston, MA: Kluwer, 1992において考察されている。ＲＧＢカラー画像に関しては、Y. WuとD. C. Collによる論文「Single bit-map block  truncation coding of color images」IEEE J Selected Areas in Comm.，  Vol.10, pp.952-959と、T. KuritaとN.Otsuによる論文「A method for bloc truncation coding for color image compression」IEEE trance. Commun., Vol.41, No.9, pp.1270-74において１９９３年９月に開示されているように、ＢＴＣをＶＱと組み合わせてＢＴＣ−ＶＱとよばれる一群の技法を生み出すことができる。ＢＴＣ−ＶＱは、ＲＧＢカラー画像の（一般に４×４の）小さなブロックが、それぞれ２４ビットの２つのＲＧＢ再現レベルと、１ビット／画素の２値マスクとによって表される。したがって、４×４ブロックには６：１の圧縮比が直ちに達成される。
【００１０】
ＢＴＣ−ＶＱは、８×８ブロックを使用して６：１に対応するシングルパスフィット保証圧縮を達成し、さらに大きいブロックを使ってより優れたフィット保証圧縮を達成することができる。しかしながら、ＢＴＣ−ＶＱは、連続階調の写真画像、特に６：１以上の圧縮が望まれ、より大きいブロックの使用が強制される場合には、目に見えるアーティファクト（artifacts）を生じさせる場合がある。
【００１１】
Ｃｏｍｍｏｎ  ＪＰＥＧは、連続階調の写真画像を備えた有効なブロック・ベース圧縮方式である。ＪＰＥＧは、「品質因子（quality factor）」の選択によって、圧縮とその結果として得られる画像品質との間のフレキシブルなトレードオフを可能にする。通常、フィット保証は、ＪＰＥＧでは、品質因子の試行錯誤の選択によって達成され、それぞれの「試行（trial）」は個別のパスである。
画像に関係なく１つのパスでフィット保証を達成するためには、十分に低い品質因子を選択しなければならない。そのような低い品質因子を使用すると、特に複合文書のテキスト部分と図形部分とにおいて、得られる画像品質が目に見えるほど低下することがある。
【００１２】
【発明が解決しようとする課題】
CaereによるOmnipage等のいくつかの光学文字認識プログラムやその他のプログラムは、２つのタイプのブロックを別々に処理することができるように事前の走査によりテキスト・ブロックと非テキスト・ブロックとに画像を分割している。しかしながら、そのような事前の走査の技法は、シングルパス条件を満たさない。したがって、今もなお、複合文書のための高品質で高速なシングルパスのフィット保証圧縮方式が必要である。
【００１３】
【課題を解像度するための手段】
本発明は、圧縮の進行中の尺度（in-progress measure）の関数に応じてデータ圧縮の際の圧縮方式を調整する方法を提供する。先行データの圧縮がその目標値を超える程度まで、生じた未使用メモリが、後続データの目標メモリ・サイズを調整するために再配分される。この圧縮方式は、フィット保証の制限がある場合に再配分されたメモリをできるだけ早く消費するように調整されるという点で「貧欲的（greedy）」であることが好ましい。
【００１４】
例えば、ターゲット画像に６：１の圧縮が必要な場合には、最初のブロックは、６：１圧縮を保証するように設計された圧縮モードを使って圧縮される。実際に１２：１圧縮が達成された場合には、最初のブロックに「予約（reserved）」されたメモリの半分が未使用のままである。そして、この未使用メモリは、第２のブロックに再配分されるため、第２のブロックの圧縮はより弱いものでもよく、この事例では、圧縮方式は、第２のブロックに９：１圧縮を保証するように調整される。十分なメモリが節約された場合には、（圧縮しないで）未処理でブロックを送ることができることに注意されたい。
【００１５】
目標ブロック・サイズへの適合を保証するモードの中で、１組の最高期待品質モードを識別することができ、この組は、最高期待品質のモードと、期待品質が最高期待品質とは大部分がわずかに異なる任意のモードとを含む。１組の最高期待品質モードから、次のブロックを圧縮するために節約されるメモリを最大にする最も高い圧縮率のモードが選択される。
【００１６】
ブロックのために選択される圧縮モードは、そのブロックの内容と適合するように最良に選択されたモードのファミリから選択される。したがって、ＢＴＣ−ＶＱは、デフォルトのモード・ファミリとして働くことができるが、（テキストおよび単純な図形にしばしば存在するような）色のほとんどないブロックは、ｎ色圧縮モードを使用してより効果的に圧縮することができる。
【００１７】
本発明は、ＢＴＣ−ＶＱとｎ色モードとの他に、ブロック分析によりブロック内に表されている階調度が小さいことが分かったときに特に有効な補間圧縮モードのファミリを提供する。上に示したように、画像ブロックは、割り当てられた目標サイズが十分なときは圧縮せずに送ることができる。より一般的には、非圧縮伝送は、「切捨て未処理（truncated raw）」モードも含む未処理モードのファミリのうちの１つと考えることができ、カラー・データは、単純に最下位ビットを除外することによって圧縮される。圧縮される画像のタイプと使用可能な処理能力とによって、本発明に他のモード・ファミリを使用することができる。
【００１８】
本発明は、速度と有効性との関係の様々な条件を満たし、様々なソース画像解像度を処理する様々な方式を提供する。例えば、速度が特に優れている場合には、乗算をすること無く３００ｄｐｉの画像を６：１に圧縮することができるが、本発明の高性能の実施形態を使用して、１つのエンコーダ段に乗算をほとんど使用せずに同じ画像を１２：１に容易に圧縮することができる。本発明の高解像度の実施形態は、６００ｄｐｉの画像を１５：１に圧縮することができる。
【００１９】
これらの実施形態のうちのいずれも、提案されたエンコーダとデコーダとの複雑さは、既知の他の画像圧縮アルゴリズムよりもはるかに小さい。多くても、エンコーダのどの段にもほんの少しの乗算器しか必要なく、デコーダ内にはまったく必要ない。複合文書の場合には、テキストは常に無損失で圧縮され、画像のタイプに依存して達成される実際の圧縮比は２００：１以上になる場合がある。
【００２０】
ブロックごとの画像分析に基づいて適応画像圧縮を実現するので、この創意に富む圧縮方式は、どの固定モードの圧縮方式よりも複合文書によく適応する。全体として、本発明は、ＪＰＥＧ−ＬＳやＪＰＥＧ等のより高価なアルゴリズムときわめて競争力の高い性能を提供し、この性能は、ソフトウェアとハードウェアにおいてずっと低いコストのシングルパスにより達成される。本発明のいくつかの実施形態は、添付図面に関する以下の説明から明らかなように、以上説明したものの他またはその代わりの利点を提供する。
【００２１】
【発明の実施の形態】
本発明によれば、図１に示したように、圧縮システムＡＰ１は、画像ソース９８から画像データを受け取り、圧縮した画像データを画像ターゲット９９に提供する。圧縮システムＡＰ１は、やはり画像記憶バッファの形の画像ターゲット９９を含むカラー・レーザ・プリンタに組み込むことができる。画像ソース９８は、例えばホスト・コンピュータでありうる。ソース画像データは、圧縮システムＡＰ１によって常にアクセス可能である必要はない。その代わりに、画像ソース・データは、圧縮システムＡＰ１に提示するために、例えば一連のブロックとして直列化される。
【００２２】
圧縮システムＡＰ１は、圧縮器エンコーダ１１と、モード・セレクタ１３と、評価器１５と、ベースライン・ブロック目標アロケータ１７とを含む。ベースライン・ブロック目標アロケータ１７は、画像の所望の目標サイズを達成するために必要な圧縮量を決定する。この決定は、（一般に、ソース画像ファイルのヘッダに示されている）ソース画像サイズと、画像ターゲット９９の既知の容量とを比較することによって行われる。
【００２３】
モード・セレクタ１３は、エンコーダ１１によって実施される特定の符号化モードを選択する。モード・セレクタ１３は、各ソース画像ブロックを分析して、各ブロックの圧縮に最適なモード・ファミリを決定する。モード・ファミリは、ＢＴＣ−ＶＱモード、ｎ色（n-color）モード、未処理（raw）モード、任意選択的に補間モードを含む。各モード・ファミリは、図１のモード・セレクタ１３からエンコーダ１１への矢印で示されているように、様々なレベルの圧縮を達成する複数のモードを含みうる。説明のために、圧縮レベルが概略的に示されていることに注意されたい。
【００２４】
ブロック目標サイズ加算器２１と圧縮ブロック・サイズ・リーダとを含む評価器１５が、ブロック目標サイズを決定する。最初のブロックの目標サイズは、アロケータ１７によって決定されたベースライン目標サイズである。続くブロックの場合には、目標サイズは、ベースライン目標サイズと（加算器２１によって記憶された）前のブロックの目標サイズとを加えたものから、前の圧縮ブロックのサイズを引いたものである。リーダ２３は、圧縮ブロック・ファイルのヘッダから、それまでに圧縮されたブロックのサイズを読み取る。
【００２５】
図２に、圧縮システムＡＰ１によって実施される圧縮方法Ｍ１をフローチャートで示す。ステップＳ１で、方法Ｍ１は、各ブロックに適合した場合に圧縮画像の望ましい全体目標サイズが得られるベースライン・ブロック目標サイズを決定する。一般に、全体目標サイズは、全体システムＡＰ１によって事前に決定されるが、ソース画像サイズは、ソース画像データのヘッダから一般に読み取られる。ベースライン・ブロック目標サイズは、ソース画像ブロック・サイズを目標画像サイズで割った比率を、ソース画像ブロック・サイズに掛けたものである。換言すると、ブロックのベースライン圧縮比は、全体画像の目標圧縮比と同じである。
【００２６】
例えば、ソース画像が８０ＭＢであり、圧縮画像に利用可能なメモリが１０ＭＢの場合には、目標圧縮比は８：１である。ソース画像ブロック・サイズは、一般に、８×８画素で２４ビット／画素であり、これは、１５３６ビット、すなわち１９２バイトと等価である。目標ブロック・サイズは、ソース・ブロック・サイズを目標圧縮比で割ったものであり、この場合には１９２／８＝２４バイトである。
【００２７】
ステップＳ２で、現行目標ブロック・サイズが決定される。ステップＳ２の最初の繰り返しの間、現行目標ブロック・サイズは、ステップＳ１で決定されたベースライン目標ブロック・サイズと等しい。ステップＳ２の次の繰り返しの間、現行目標ブロック・サイズは、ベースライン目標ブロック・サイズと、ステップＳ８で前のブロックに決定された「節約分（saving）」を加えたものである。
【００２８】
ステップＳ３で、ソース画像データは、連続的に受け取られ処理される。本明細書において、「連続的に(serially)」という言葉は、データが、一度にすべて処理されるのではなくなんらかの順序で処理されることを意味し、それにより先行する画像データからのフィードバックを使用して後続の画像データの圧縮に影響を及ぼすことができる。この目的のため、処理は、画像の様々な部分が並列に処理される場合でもそれぞれの並列なストリームが直列に処理される場合は直列である。ステップＳ２およびステップＳ３は、因果的に連結されず、したがって逆の順序または並列に行うことができることに注意されたい。
【００２９】
ソース画像１０１は、トゥルーカラー（true-color）（２４ビット／画素）のＲＧＢフォーマットである。図３に示したように、この画像は、一連のストリップ１０３として受け取られ、各ストリップは、一連のブロック１０５として受け取られ、各ブロックは、一連の画素（画素）１０７として受け取られる。この事例において、ステップＳ３とその後のステップとが、ブロックごとに適用される。したがって、ステップＳ３の第１の繰り返しでは、第１のソース画像ブロックを受け取る。
【００３０】
より一般的には、ソース画像を他の方法で直列化することができる。例えば、最初に粗いブロックで画像を提示し、次にその粗いブロックからの偏差として符号化された細かいブロックで提示することができる。また、フラクタル画像データ（fractal image data）を受け取ることもできる。もちろん、圧縮方式は、ソース画像データ・フォーマットに対応するように選択される。
【００３１】
図２のステップ５４では、ブロック内容が分析される。例えば、ブロック内の別個の色の数を確認して、ブロックを圧縮するためにｎ色モードを使用すべきかどうかを決定することができる。後に詳細に示す環境に依存して、モード選択の終りの方で、色範囲とクラスタ化と階調度との特性を調べることができる。
【００３２】
ステップＳ５では、ブロックの圧縮モードを選択する。ステップＳ２で決定された現行目標ブロック・サイズに対する適合を保証できないモードは、検討から除外される。残りのモードから、１組の最高期待品質モード（highest-expected-quality）が決定される。この１組は、最高期待品質の１つのモードと、最高期待品質モードとはわずかに異なる期待品質の他の任意のモードとを含む。この組から、次のブロックの節約分を最適化するように最も強い圧縮を達成するモードが選択される。最終ブロックの改良では、節約分に関係なく最高期待品質モードが選択される。
【００３３】
ステップＳ６で、現行画像ブロックが、ステップＳ５で選択された圧縮モードに従って圧縮される。図２において、ステップＳ６から下方に延びている矢印は、圧縮されたデータがターゲット記憶領域に向けられていることを示す。方法Ｍ１は、ステップＳ６が最終ブロックに実行された後で完了する。ステップＳ７とステップＳ８とは、最後を除くすべてのブロックに適用される。
【００３４】
ステップＳ７では、ステップＳ６で得られた圧縮ブロックのサイズが、圧縮ブロック・サイズ・リーダ１９（図１）によって決定される。決定された圧縮ブロック・サイズと現行ブロックの目標ブロック・サイズとの差が、能力の「節約分（saving）」である。ブロックの圧縮ブロック・サイズが目標ブロック・サイズと等しい場合には、節約分はゼロである。しかしながら、よくあるように、圧縮ブロック・サイズがブロックの目標ブロック・サイズより小さい場合には、その差が節約分である。ステップＳ８で決定された節約分は、次の画像ブロックに関するステップＳ２の次の繰り返しの目標サイズを決定するベースラインに加えられる。ステップＳ４とＳ５のファミリとモードの選択により、圧縮ブロック・サイズが、どのブロックの目標ブロック・サイズより大きくならないことが保証される。
【００３５】
方法Ｍ１は、高速で高性能な高解像度の変形例を提供する。方法Ｍ１の「高速」の変形例を、図４にＭ２として図示する。この「高速」の変形例の主な目的は、エンコーダとデコーダの両方の側できわめて高速に動作し、内容に関係なくすべての文書で６：１の保証された圧縮比を達成する複合文書コーデックを生成することである。品質は、解像度３００ｄｐｉ以上のすべてのコンピュータ生成文書では目に見えるような損失はない。符号化操作と復号化操作のどのステップでも、乗算器は使用されない。実際に、高速な方法Ｍ２の複雑さは、既知のどの複合文書エンコーダよりもはるかに低い。
【００３６】
ステップＳ２１では、画像ブロックが受け取られ、その目標ブロック・サイズは、既に決定されている。ステップＳ２２およびステップＳ２３は、ブロックを圧縮モードに共同で指定する。ステップＳ２２では、ブロックが４色以下の色を有する場合には、そのブロックはｎ色モード・ファミリに指定される。ブロックが４色を超える色を有する場合には、そのブロックはブロックを未処理で送信する余裕がないならば、ステップＳ２３でＢＴＣ−ＶＱモード・ファミリに指定される。後者の事例では、ステップＳ２３は、高速な方法Ｍ２において１つのモード、すなわち切捨て未処理（untruncated raw）モードのみを含む「未処理」モード・ファミリにブロックを指定する。
【００３７】
ステップＳ３０では、符号化が実行される。ステップＳ２２では、ブロックが、（テキストまたは単純な図形の場合のように）４色以下の色を有するように決定された場合には、そのブロックは、ステップＳ３１で２４ビット・カラーを有する１色、２色、または４色のモードを使って無損失にエンコードされる。圧縮をさらに促進するために、４エントリの適応色辞書（adaptive color dictionary）が使用される。辞書にない色だけを未処理のままでエンコードする必要がある。辞書にある色を辞書インデックスとして送ることができる。使用可能なバイトが、色を未処理で送るのに十分でない場合には、各色は、１２ビットに量子化され、辞書を使用せずにビット・ストリームに含まれる。そして、ｎ色ビット・ストリームが、ランレングス符号化される。
【００３８】
ｎ色モードにおいて、新しくまたは辞書から必要とされる色は、２値または４値のマスク・データと共に、明示的ヘッダと共にデコーダに送られる。３つの色が見つかった場合には、そのブロックは、ダミー辞書色と共に４色ブロックとして送られる。１つの色が見つかった場合には、ランレングス符号化が使用される。
【００３９】
ステップＳ２３では、ブロックが、（連続階調画像の一部分である場合にその可能性が高い）４つを超える数の色を有すると決定され、十分なターゲット容量（１９２バイト）がある場合には、ステップＳ３３で、そのブロックを非圧縮（未処理）のままにすることができる。
【００４０】
ブロックが、４つを超える色を有し、ターゲット容量が切捨て未処理伝送に不十分な場合には、ステップＳ３４〜ステップＳ３６で、ＢＴＣ−ＶＱ符号化がブロックに適用される。高速な方法Ｍ２では、２４ビット色による４×４ＢＴＣ−ＶＱモードだけが使用される。例示された実施形態において、ステップＳ３４では、ブロックの輝度が計算される。ステップＳ３５では、ブロック変換符号化が輝度マップに適用される。この場合には、８×８画素ブロックが、４つの４×４画素に分割される。ステップＳ３６では、２４ビット色が符号化され、２値マスクと一緒に送られる。通常、４×４のサブブロックのマスク・データのそれぞれは、２バイトを必要とする。しかしながら、適応マスク圧縮を有効にしたときは、４×４サブブロックのために１バイトを送ることができる。図５を参照して、非圧縮マスク１２１と圧縮マスク１２２とを比較されたい。
【００４１】
ステップＳ３２とステップＳ３３とステップＳ３６からの圧縮データは、現行ブロックに関する限り方法Ｍ２の終了を表す。しかしながら、そのブロックが５つ以上の色を有する場合には、次のブロックの未処理の伝送の余裕があるかどうかを決定するために、圧縮度は、ステップＳ２３の次の繰り返しにおいて使用されるようにフィードバックされる。ｎ色モードと４×４ＢＴＣ−ＶＱモードとが６：１圧縮を達成するので、フィードバックは、未処理モードが使用されているかどうか決定するためにのみ利用される。
【００４２】
図４に示した方法Ｍ２のステップと図２に示した方法Ｍ１のステップとの対応性に注意されたい。ステップＳ２１は、画像ブロックを受け取るステップＳ３に対応する。ステップＳ２２は、ステップＳ４に対応する。ステップＳ２３とステップＳ３０への線とは、ステップＳ５に対応する。ステップＳ３０は、ステップＳ６に対応する。ステップ４０は、ステップＳ７およびステップＳ８にほぼ対応する。
【００４３】
高速エンコーダの複雑さの大きな部分は、ＢＴＣ−ＶＱに起因する。したがって、速度を最適化することが重要である。高速の変形例において、ＢＴＣ−ＶＱエンコーダは、各４×４サブブロック用の２レベル・ベクトル量子化器（ＶＱ）であり、画素用の（Ｒ、Ｇ、Ｂ）のトリプレット（３つ組）がトレーニング・セットとして働く。最適な方策は、Y. Unde, A. BuzoおよびR.M.Grayによる論文「An algorithm for vector quantizer design」IEEE Trans. Commun., Vol.COM-28, No.１, pp.84-95によって１９８０年１月に教示され、符号化規則の最適化と復号化規則の最適化との間の収束するまで繰り返すＬＢＧ−ＶＱ設計手順を使用するものであるが、この方式の複雑さは、高速の変形例Ｍ２を目標とするものに対しては高すぎる。したがって、以下のように、準最適であるが高速の設計手順が使用される。
【００４４】
一次元空間と、S.P.Lloydによる論文「Least Squares Quantization in PCM」IEEE Trans. Inform. Theory, Vol. IT-28, pp.127-35に１９８２年３月に記載されているLloydの設計手順の単一繰り返しとに対して、３次元ＲＧＢベクトルがマッピングされる。この設計手順は、Ｌ無限歪み測定により合成スカラ・トレーニング・セット上で使用される。特に、３次元空間から１次元空間へのマッピングは、近似的輝度変換（Ｒ＋２Ｇ＋Ｂ）／４によって、または、単にサブブロック内で最大散布度を有するＲ、Ｇ、あるいはＢの色の選択によって達成される。最大散布度を有する色を探索すると、通常、符号化が輝度変換よりも遅くなるが、歪みも少なくなる。
【００４５】
各４×４ブロックの一次元空間において、最小値ｍと最大値Ｍとが決定される。中間値＝（Ｍ＋ｍ＋１）／２とし、Ｍ１＞中間値になるようなＭ１をブロック内の最小値とし、ｍ１＜中間値になるようなｍ１をブロック内の最大値とする。再構成点は、（ＲＧＢ（Ｍ１）＋ＲＧＢ（Ｍ）＋１）／２および（ＲＧＢ（ｍ１）＋ＲＧＢ（ｍ）＋１）／２の値として計算される。ここで、ＲＧＢ（ｘ）は、ｘの値に対応する元のＲＧＢ値を示す。分類のしきい値は、中間値である。この実施態様は、きわめて単純であり、４×４ブロック全体で３つのパスしか必要としない。
【００４６】
図６に示した「高性能（high-performance）」な変形例の方法Ｍ３は、より高い処理能力を利用して高速の変形例Ｍ２よりも高い圧縮を達成する。方法Ｍ３は、内容に関係なくすべての文書について最大１２：１の圧縮比を保証するフレキシブルな複合文書の符号器または復号器（CODEC）を使用するが、符号化と復号化の複雑さのレベルを、既知のほとんどのアルゴリズムよりも低く維持する。この比較的に高い圧縮比を達成するために、可能な場合は必ず、ほとんどすべてのステップでレート帰還を使用してバイトを節約する。
【００４７】
品質は、コンピュータ生成文書と高品質走査文書との両方に対して、解像度３００ｄｐｉ以上では、目に見える損失はない。方法Ｍ３は、（方法Ｍ２よりも）走査ノイズに対してある程度強い。さらに、所望の最小圧縮比が、パラメータとしてエンコーダに供給される。１２：１の制限は、単に注意を促すものであり、完全に品質考慮要素に基づく。実際に、エンコーダを１２：１よりも大きい所望の最小圧縮比で動作させることは可能であり、１２：１を超えると品質の劣化はなだらかである。
【００４８】
方法Ｍ３は、ステップＳ５０で画像ブロックを受け取ることから開始し、その目標サイズが、変形例Ｍ２の前の繰り返しにおいて決定される。方法Ｍ３によって、現行ブロックは、ｎ色モードＳ５１と、補間モードＳ５２と、未処理モードＳ５３と、ＢＴＣ−ＶＱモードＳ５４とに従って符号化される。
【００４９】
ステップＳ６１のモード選択は、現在使用可能なバイトによってｎ色モードで送ることができる最大色数ｍ≦８を決定することから開始する。この数は、ｍの色を１２ビット色のｍ色モードで送るのに必要なバイト数に基づいて得られる。現在使用可能なバイトの数は、目標圧縮比とステップＳ５５からのレート帰還との関数である。
【００５０】
実際には、ステップＳ６１は、分類方式を選択する。この分類方式は、ステップＳ６２では、圧縮にｎ色モードＳ５１を使用するかどうかを決定するために使用される。８つのｎ色レベル（ｎ＝１〜８）が、１２ビット色または２４ビット色のどちらかと共に使用され、適応される色辞書は、ほとんどのｎ色モードに使用される。
【００５１】
ステップＳ６２で、色カウント・ルーチンが、厳密な２４ビットの色マッチングを使用してブロック内にｍまたはそれより少ない数の異なる色があるかどうかを調べる。特に、画素が、順次に走査され、前に現れた色の画素と色が厳密に等しいことを見つけるか、または新しい色を作成するために使用される。現行ブロック内の色の数が、（例えば、テキストや単純な図形等を示す）ｍ以下の場合には、得られた色は、ｎ色モードで送られる。色辞書を最初に調べて、その中に既に異なる色がないかどうかを確認する。しかしながら、最終的には、現在使用可能なバイトにより、２４ビット色が辞書と一緒にまたは１２ビット色が色辞書なしに送られる。（連続調画像ブロックの場合に可能性が高いように）色数がｍより大きい場合には、方法Ｍ３は、ステップＳ６３に進む。
【００５２】
ステップＳ６３は、８×８ブロック内のＲ成分とＧ成分とＢ成分とのｍａｘ［Ｒmax−Ｒmin’，Ｇmax−Ｇmin'，Ｂmax−Ｂmin'］により
与えられる最大の色の範囲が、大きい（しきい値ＴHCより大きい）か小さい（ＴHC以下）かどうかを決定する。計算した色の範囲が、しきい値より小さい場合には、ステップＳ５４で、ブロックが、ＢＴＣ−ＶＱを使って圧縮される。方法Ｍ３では、４×４と、８×４と、８×８とのＢＴＣ−ＶＱモードが、１２ビット色または２４ビット色のいずれかで使用され、適応マスク圧縮が使用される。色範囲がしきい値以下の場合には、方法Ｍ３は、ステップＳ６４に進む。
【００５３】
ステップＳ６４で、色クラスタ化ルーチンが、色をｍ以下の色のクラスタにクラスタ化できるかどうかを判定する。色クラスタ化ルーチンは、シングルパス・クラスタ化技法を使用し、画素が順次に走査され、画素が、十分に近い場合には前のクラスタのうちの１つのクラスタに含まれ、それまでに作成したすべてのクラスと大きく異なる場合には、新しいクラスタを作成するために使用される。ｍ個以下のクラスタが得られた場合には、ブロックは、代表的な色がそれぞれのクラスタの平均または中間点であるｎ色モードで表される。色の符号化のために、別個の色の事例と同じように、２４ビット色が辞書と共にまたは１２ビット色が辞書なしで、使用可能なバイトの数に基づいて使用される。このクラスタ化ステップが、アルゴリズムにおける走査ノイズに対する頑強性を実現することに注意されたい。必要なクラスタの数が、ｍよりも大きい場合には、方法Ｍ３は、ステップＳ６５に進む。
【００５４】
ステップＳ６５では、水平方向および垂直方向の階調度の最大値が、しきい値ＴGRに対して比較される。最大色階調度が、このしきい値よりも小さい場合には、ブロックは、ステップＳ５２で、補間モードを使って圧縮される。
【００５５】
ステップＳ５２では、補間モードは、平均化によってファクター４×４だけダウンサンプリングし、１２ビット色または２４ビット色を使ってビット・ストリーム内の４つのダウンサンプリング画素を送ることによってブロックを符号化する。補間モードは、複雑なビジネス・グラフィックスの階調度および画像内で滑らかに変化する色によく適している。
【００５６】
ステップＳ５２で、最大色階調度が、しきい値ＴGRと等しいかまたはそれより大きい場合には、方法Ｍ３は、ステップＳ６６に進む。ステップＳ６６は、少なくとも８ビット切捨て未処理モードのために現行ブロックを未処理で送る余裕があるかどうかを判定する。十分な余裕がある場合には、ブロックを送るために、使用可能な目標ブロック・サイズによって対応することができる、２４ビット未処理モードと１２ビット切捨て未処理モードと８ビット切捨て未処理モードのうちから選択した最も深いモードが使用される。この事例では、１２ビットおよび８ビットの切捨て未処理モードが提供され、したがって、しきい値は、方法Ｍ２の対応するステップのものよりも小さい。（バウンディングボックス・モード（bounding-box mode）は使用されない。）
【００５７】
ステップＳ６６のしきい値は、図６においてステップＳ６６までの破線矢印で示されているように、現行の目標ブロック・サイズに依存する。最も切捨て未処理モードの余裕がある場合には、方法Ｍ３は、ステップＳ５３に進む。そうでない場合には、ステップＳ５４で、ＢＴＣ−ＶＱモードが選択される。モード・タイプの１つが選択された後に、図６においてステップＳ５１とステップＳ５２とステップＳ５３とステップＳ５４とに破線により示されているように、選択された特定モードは現行目標ブロック・サイズの関数である。
【００５８】
ステップＳ５４でモードのＢＴＣファミリにおいて、どの支援ブロック・サイズ（４×４、４×８、８×４、または８×８）を使用するかの判断が、部分的には、使用可能なバイトの数によって、また部分的には、それぞれ４×４、４×８、８×４、または８×８の支援ブロックの（以前に定義された）最大色範囲によって行われる。この意図は、使用可能なバイトの数を超えることなくできるだけ小さな色範囲の支援ブロックを選択することである。選択された支援ブロック・サイズにより、必要な数の色が、それぞれ２４ビットまたは１２ビットで送られる。さらに、少なくとも１対の色が、互いに近いことが判明した場合には、マスクの適応損失圧縮が有効にされる。
【００５９】
ＢＴＣ−ＶＱモードでの色量子化レベルの決定は、高速な近似ＶＱ設計手順によって達成される。ＶＱ設計が、符号化プロセスでの最も複雑な障害になっているものの１つであるので、複雑さと性能の様々なトレードオフによって、ＶＱ設計の３つの異なるアルゴリズムが、「最良」と「標準」と「高速」とで実施される。最良符号化方法では、２乗平均誤差歪み測定（mean-squared-error distortion major）によるY.Linde,A.BuzoおよびR.M.Grayの論文「An algorithm for vector quantizer design」IEEE Trans.Commun.,Vol.COM-28,no.１,pp.84-95の１９８０年１月のＬＢＧ設計手順の単一繰り返しをＲＧＢ３ビットバイトに使用する。標準符号化方法は、２乗平均誤差歪み測定によるS.P.Lloydの論文「Least Squares Quantization in PCM」IEEE Trans.Inform.Theory,Vol.IT-28,pp.1217-35の１９８２年３月のＬｌｏｙｄのスカラ量子化器設計手順の単一繰り返しを、最大範囲を有するＲ色成分、Ｇ色成分、またはＢ色成分に使用する。高速符号化方法は、Ｌ＝（Ｒ＋２Ｇ＋Ｂ）／４として計算された画素の近似的輝度値に、２乗平均誤差歪み測定によるLloydのスカラ量子化器設計手順の単一繰り返しを使用する。さらに、高速な方法において、様々な決定機構において最初に現れた範囲計算はすべて、近似的輝度値である（Ｌmax−Ｌmin）に基づく。最良と標準と高速との方法は、同じ名前を有するプリンタでのプリント品質の設定値と類似している。
【００６０】
方法Ｍ３の変形例は、処理能力を高速にするために補間モードＳ５２を省略しており、その結果、画像品質にわずかな劣化が生じる可能性がある。この変形例において、ステップＳ６４において色クラスタの数が多いとき、変形例の方法は、階調度しきい値ステップＳ６５を省略して、未処理のための余裕（room-for-raw）ステップＳ６６に直接に進む。この変形例は、ブロック内の水平方向と垂直方向との階調度の最大値を計算する複雑さが高くなるのを防ぐ。しかしながら、補間モードを含めると、滑らかな画像領域に関してより高い圧縮率でより良い再現が行われる。
【００６１】
方法Ｍ３は、１２：１よりも高い比率の圧縮を実現するが、品質および／または処理時間が犠牲になる。例えば、方法Ｍ３は、６００＋ｄｐｉの文書に、アーティファクトのなしに１５：１の最低の所望圧縮比で実行することができるが、１画像当たりの圧縮／復号化時間が長くなりすぎる（スループットに悪影響を及ぼす）。
【００６２】
高解像度のデジタル化文書は、大量の記憶容量を必要とする。例えば、単色のレターサイズのページは、６００ｄｐｉでほぼ１００ＭＢの記憶容量を必要とし、１２００ｄｐｉでほぼ４００ＭＢの記憶容量を必要とする。この解像度で、ハードコピー・ビジネスにおいて価格と性能の点で競争力を維持するためには、きわめて低い複雑さで高い圧縮率を達成する複合文書エンコーダを設計することが絶対必要になる。
【００６３】
本発明の高解像度の実施形態（図示せず）は、解像度６００ｄｐｉ以上の複合文書に関して、アーティファクトをプリントすることなくきわめて低い複雑さで最大１５：１の圧縮を達成する。この高解像度の方法は、高性能な方法Ｍ３よりも低い複雑さで、高速な方法Ｍ２よりもかなり高い圧縮比を達成する。トレードオフは、低解像度文書に関する性能にある。
【００６４】
高解像度の方法は、方法Ｍ２および方法Ｍ３と全く同じ符号化モードを使用するが、要素の処理単位のサイズは、方法Ｍ２および方法Ｍ３よりも大きい。高解像度の方法は、８×８ブロックに対して１２×１２ブロックを使用する。ＢＴＣ−ＶＱモードにおいて、支援ブロックは、サイズ６×６、６×１２、１２×６、または１２×１２のものが可能である。
【００６５】
ｎ色モードにおいて、唯一の違いは、図７に示したマスク・データのために送られるバイト数にある。１色モードは、マスク・データを必要としない。２色モードは、合計１４４画素に１８バイトのマスク・データを必要とする。ビットは、走査順にＭＳＢ（最上位のビット）からＬＳＢ(最下位のビット)にバイト内に入れられる。３色モードはマスク・データ用に２９バイトを必要とし、各バイトは５つの記号の情報を走査順に含む。４色モードは、マスク・データ用に３６バイトを必要とし、１画素当たり１バイトの方式でＭＳＢからＬＳＢまで走査順に２ビットが入れられる。５色モードおよび６色モードは、マスク・データ用に４８バイトを必要とし、各バイトは、３つの記号を走査順に含む。最後に、７色モードおよび８色モードは、マスク・データ用に５４バイトを必要とし、各画素に３ビットを備える。
【００６６】
未処理モードと切捨て未処理モードでは、画素の数が多いため、送らなければならないバイト数が増える。ヘッダとは別に、８ｂｐｐモードと、１２ｂｐｐモードと、２４ｂｐｐモードとで、１４４バイトと、２１６バイトと、４３２バイトとがそれぞれ送られる。
【００６７】
補間モードでは、画素の数が多くなるので、補間モードで送らなければならないバイトの数は当然に変化する。ダウンサンプリング画像は、現在３□３であり、したがって、１２ビット／画素モードで１４バイト（使用されていない最終バイトの上側のニブルを備える２７ニブル）、２４ビット／画素モードでは２７バイトをヘッダとは別に必要とする。
【００６８】
代替の実施形態では、ハードウェア実装の容易さにより、主流のフィット保証のために８ライン・バッファに対して４ライン・バッファを使用する圧縮アルゴリズムの必要性が高い。これは、ビット・ストリーム・シンタックスの変更を最小にして、フィット保証構造の範囲内で容易に対応することができる。基本ブロック・サイズは、単純に８×８から４×１６に変更され、４つの４×４サブブロックが、その中に並んで配列される。画素走査パターンは、各４×４サブブロック内の行列の順序であり、サブブロックを左から右に一度で横切る。この場合には、ほとんどのモードを何も修正せずに使用することができる。４×１６フィット保証用に許容されるＢＴＣモードは、４×４と４×８と４×１６とであり、これは、画素走査順序を考慮して、８×８フィット保証用の４×４と８×４と８×８とのＢＴＣモードにそれぞれ類似するであろう。８×８フィット保証の４×８ＢＴＣモードは、このシナリオでは実用的でなく、使用不能とすることができる。他のモードはすべて、一切修正なしにそのまま使用することができる。
【００６９】
次のブロックの圧縮モードの選択に各ブロックの圧縮の結果を用いることによって、この圧縮方式は最適化される。しかしながら、これは、性能を制限することがあり、性能を高めるためにブロックが並列に処理される場合は適切でない。したがって、本発明は、直前のブロックよりも前のブロックに達成された圧縮の関数になるように、所定の任意のブロックと関連付けられた圧縮方式を提供する。ブロックのストリップが、並列に処理される場合には、それぞれの並列の「ストリップ（strip）」が、方法Ｍ１を個別に実施することができる。代わりに、並列のプロセスが、モデル選択を最適化する情報を互いに提供することができる。つまり、１つのストリップの節約分を別のストリップのために役立てることができる。
【００７０】
以上に、特定の符号化形態および符号化特性により本発明を説明してきたが、他の形態および特性を使用することができる。例示された実施形態において、圧縮はブロック・ベースである。代わりに、本発明は、階層的なフォーマットまたは非画素ベースのフォーマットで表されるデータを提供する。例示された実施形態において、データは画像データであるが、実際には、本発明はデータの意味とは無関係に適用される。この基本的な手法は、多くのタイプのビデオと音声と図形とのデータに使用することができる。例示されたシステムは、プリンタに組み込まれるように設計されることが望ましいが、本発明は画像や他のデータが制限のあるスペースに記憶されたり制限のある帯域幅で送られたりするときにはいつでも工業的適用性を有する。例示された実施形態に対する以上その他の変形例および修正は本発明によって提供され、その範囲は特許請求の範囲によって規定される。
【図面の簡単な説明】
【図１】本発明によれる圧縮システムの概略図である。
【図２】図１のシステムの状況で実行される本発明の一般化した方法の流れ図である。
【図３】画像の走査順序を示す画像の様々なレベルの詳細の概略図である。
【図４】図２の方法の「高速」な実施態様のフローチャートである。
【図５】図２の方法の高速で高品質の実施態様で使用される適応マスク圧縮におけるマスクの使用を示す概略図である。
【図６】図２の方法の「高性能」な実施態様のフローチャートである。
【図７】図２の方法の「高解像度」の実施態様において使用される適応マスク圧縮におけるマスクの使用を示す概略図である。
【符号の説明】
１１  エンコーダ
１３  モード・セレクタ
１５  評価器
２３  圧縮ブロック・サイズ・リーダ
【図１】
0004152724.tif 000002
【図２】
0004152724.tif 000003
【図３】
0004152724.tif 000004
【図４】
0004152724.tif 000005
【図５】
0004152724.tif 000006
【図６】
0004152724.tif 000007
【図７】
0004152724.tif 000008