(57)【特許請求の範囲】
【請求項１】
２値表示で連続画像を２値表示で描画するために用いられる誤差拡散処理からの誤差値を累積する方法であって、
個々の画素位置について所定の技術によって原稿を走査し、前記原稿の画素値の列を識別するステップと、
走査された原稿の画素位置に対応する描画された画素位置で前記２値表示によって表示される２値出力を決定する調整画素値を決定するために、前記原稿の画素値を累積誤差値によって調整するステップと、
調整画素誤差値からなる、前記２値出力と前記調整画素値の差を計算するステップと、
所定の重み付け技術にしたがって各画素位置に影響を及ぼす中間画素誤差値に基づいて、各画素位置毎に拡散調整画素誤差値を生成するために、前記調整画素誤差値を所定の重み付け技術によって拡散させるステップと、
走査技術の列にしたがって誤差革新列を順次累積するために、前記中間画素誤差値のうち相対的な１組を千鳥状に配列された中間レジスタに配置するステップと、
前記中間画素誤差値を前記中間レジスタに順次累積することによって、前記累積誤差値を記憶するために前記調整画素値に関連するメモリ位置に繰り返しアクセスする動作を避けるように、前記中間画素誤差値の和を備える誤差バッファに前記累積誤差値を記憶するステップと、
前記誤差バッファに前記累積誤差値を記憶する前に、前記拡散誤差値を圧縮するステップと、
を有することを特徴とする誤差値累積方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理システムの技術に関し、特に、２値出力装置で印刷または表示を行う目的のために、連続階調画像を２値ドットパターンに描画（レンダリング）するための誤差拡散に関する。本発明は、特に、誤差拡散技術によって発生した誤差革新列（error innovation sequence ）をより効率的に処理するとともに、列からの累積誤差値を圧縮してラインバッファの記憶サイズを小さくする処理システムに適用することができる。本発明は、向上したメモリ効率および小さなメモリサイズという重要な利点と、プロセッサチップに対する外部メモリの必要性を回避することを、２値印刷または表示装置に提供する。しかしながら、当業者には、本発明は、他の適用、例えば、同様のデータストリームを順次累積してラインバッファ型レジスタに記憶するような場合に用いられるように容易に適合させることができることは明らかである。
【０００２】
【従来の技術】
誤差拡散は、２値装置で印刷または表示を行う目的のために、連続階調画像をドットパターンに描画するための公知の技術である。多くの場合、誤差拡散技術は、低〜中解像度の装置（６００ドット／インチ未満）にとって好適な技術である。特に、誤差拡散法は従来のクラスタドット・スクリーニング技術（clustered dot screening technique ）のように所定のしきい値配列を含まないからである。このような構造化されたセルがないために、誤差拡散は入力データ位置を迅速にトラッキングし、高周波部分の描画をより良好にできる。代替の方法は、高品質の再生に必要なのと同じくらい十分に多数のグレイレベルを累積するのに、大サイズのアレイを必要とする（人間の目は約２００のグレイシェード（shades of gray）を識別することができるとした）。このような大サイズのアレイは出力の際に視覚的に目立つようになるおそれがあるので、アレイサイズおよびそれに相当する数のグレイレベルは所望の画質に反して妥協しなければならない。
【０００３】
通常、誤差拡散法は、入力画像全体にわたる走査装置による１つのパスを含み、このとき、各画素は順次処理される。従来のプロセスは、入力画素値のしきい値処理と、入力画素値を２つの値、オンまたはオフのうち１つに置換する処理とからなる。各画素がこのように変換される際、誤差が画像の局所グレイレベルに導入される。誤差とは、走査で決定した原稿の画素値と「オン」または「オフ」の密度で印刷または表示された値とのグレイレベルでの差である。この誤差は、隣接する画素の値を調整することによって、隣接する画素に拡散され、観察者の目に見えたしきい値処理前の局所グレイレベルを保持する。画像全体にわたり何重にも通過するのを避けるために、誤差は、未処理の後続画素の間にだけ（例えば、左から右への走査順の場合、現在の画素の右および下に位置する画素に）伝搬（または「拡散」）される。誤差を隣接する画素の間にどのように分配するかを決定するいくつかの方法は公知である。
【０００４】
図２は、特によく知られたフィルタ方式をともなう誤差拡散技術の原理を示す。図２の拡散方式は本来フロイドおよびスタインバーグによって導出され、ここでは、例示の目的のために含まれているにすぎないことは記憶されるべきである。しかしながら、この例は、主題の発明の技術、その実施を示し、主題の発明と従来の誤差拡散技術との違いを明示するためにも用いることができる。
【０００５】
図２において、正方形１０は、入力走査装置から決定されたラスタ格子上の入力画像画素を示す。黒画素１２および白画素１４は既に処理され、しきい値処理が行われ、２値化され、オンまたはオフのいずれかになっている。陰影の付いた画素１６はまだ処理されていない。濃い枠で囲まれた中心画素１８は次に処理される画素である。現在の画素から重み付き値▲１▼、▲３▼、▲５▼および▲７▼への矢印は、現在のしきい値誤差を隣接する画素にどのように分配するかを示す。それは文献において「誤差拡散フィルタ」と呼ばれる場合が多い。なぜならば、特定の重み付け方式を適用することは、実際には、各画素毎にスキャナが検出するものとプリンタが印刷するものとの間で算出される誤差のフィルタリングをすることであるからである。矢印の番号は、（変動する可能性がある）非正規化相対近傍重みを説明する。例えば、現在の画素１８のすぐ右側にある画素に関連する番号▲７▼は、誤差の７／１６を用いてこの画素を調整することを示し、ここで、１６は重みの総和に等しい正規化係数である。これらの近傍をそれぞれこのように調整すると、それに関連するグレイ値は変化し（誤差の徴候によって、暗くなったり明るくなったりする）、更新された値は、隣接する画素のしきい値処理に用いられる。
【０００６】
上記に基づいて、従来の誤差拡散技術は以下の３つの基本的なステップからなる。
第１に、しきい値処理ステップにおいて、現在の原稿の画素値を所定のしきい値と比較して、印刷または表示画素の出力を決定し、
第２に、誤差計算ステップにおいて、原稿の画素値からこの２値出力レベルを減じることによって、誤差を計算し、
第３に、誤差は選択した重み付け方式にしたがってフィルタリングされ、隣接する画素に分配される。
その後、行の終わりに達するまで、この処理は１画素ずつ進み、繰り返される。
【０００７】
従来の誤差拡散処理は図３に示されている。ここで、ｘ（ｉ，ｊ）は現在の画素値、ｅ（ｉ，ｊ）は誤差、Δｘ（ｉ，ｊ）は位置（ｉ，ｊ）の画素に対する補正値（compensation value）を示す。また、小さい矩形はデータレジスタを示し、太線はバスを示し、細線は２値を示す。
【０００８】
【発明が解決しようとする課題】
図３から分かるように、従来の方法では、補正値列を累積するには、メモリに多数回アクセスする必要がある。処理された各画素毎に、システムは、隣接する画素に対して多数の誤差値を読み込み、誤差値を修正し、その結果をメモリに戻して書き込む必要がある。これは、すべての画素の値をこのように多数回調整しなければならないので、明らかに非効率的である。例えば、図２中で陰影の付いた画素▲５▼の値は、現在のサイクルで発生した誤差につき１回「読み出し−修正−書き込み」が行われ、その結果、処理が次の画素に移行すると、再び、「読み出し−修正−書込み」が行われる（このときは、左から右への処理と仮定すると、▲３▼のフィルタ重みによる）。
【０００９】
メモリに繰り返しアクセスすることは、時間消費の点からコストがかかり、データ処理が非効率的であり、主題の発明が克服しようとする１つの特有の課題である。
【００１０】
従来の誤差拡散システムにともなう別の特有の課題は、メモリサイズである。１回のラスタ走査のために関連する誤差値を記憶および累積するために必要なメモリ量は、通常、処理チップに対する外部メモリを用いなければならない程の大きさである。また、追加的なコストをともなうだけでなく、外部メモリにアクセスすることの非効率さは、実質的に、誤差拡散技術をリアルタイムに適用する場合の読み取り内容のメモリ量を最小化する必要があることを表す。
【００１１】
図３に示される誤差拡散方法では、現在の画素誤差が、その下にある、およそ走査線１本分離れた画素の値を直接修正するので、メモリ内に少なくとも１行分の内容を記憶する必要がある。実際、この内容はかなり大きい可能性がある。例えば、６００ｄｐｉで印刷された典型的な８．５インチ幅の４色ページの場合には、メモリ内に少なくとも２０，０００個のデータセルを保持する必要がある。ここで、各セルは１つの画素を処理するのに必要なすべての情報を含むのに十分な大きさである。以下に詳細に示す理由から、セル当たり８ビットの精度を用いても十分ではないおそれがある。セル当たり１２ビットを用いると仮定すると、この例の場合、全体の記憶要件は約３０Ｋバイトのメモリになる。このような記憶サイズは、現在の低コストのシリコン技術を用いる単一チップで実施するにはコスト効率が良くなく、外部メモリ装置を用いてより良好に利用される。したがって、実質的には、画質を妥協することなく、圧縮技術を適用してセルサイズを大幅に小さくし、総メモリサイズを小さくすることによって、システム全体のコストを低減する必要がある。
【００１２】
最小のセルサイズについて考えると、人間の視覚システムが約２００を超えるグレイシェードを識別できないことはよく知られており、このことは画素当たり８ビットがグレイスケール画像表現には十分であることを意味する。現行の実施例では、通常、８ビットのシステムを用い、各連続階調画像分解をコンパクトに符号化している。このため、カラー画像は、通常、３つ以上の８ビット分解、例えば、「赤、緑および青」または「シアン、マジェンタおよび黄」のような３色、「シアン、マジェンタ、黄および黒」のような４色、または、ハイファイ色再生をともなう上記以上の色を用いて、符号化される。８ビットのシステムは、上記の誤差フィルタ処理／フィードバック機構を操作することができない。いずれの単一画素誤差の値も、補正グレイレベルとしきい値の最大絶対差と同じ大きさになる可能性があり、この場合、後者は他のいくつかの向上技術の一部としての処理によって変化するおそれもある。所定の画素に対する誤差分配の総和は画像内容および過去の誤差伝播履歴に依存し、大きい値になることもある。また、これらの分配は負または正でありうるが、画素値は正の整数のみであると考えられる。これらの寄与を隣接する画素値に加えると、これらの寄与によって、結果全体が８ビットのレンジをオーバーフローし、大きくなりすぎたり、負になったりする。したがって、通常、より大きなレンジ、すなわち、より大きなビットが必要になる。
【００１３】
さらに、描画に伴う種々の人工生成物（artifact）を除去する通常の実施例のように、ノイズもまた導入されなければならないので、誤差値のサイズが増大してしまう。上記に例示したフロイドおよびスタインバーグの方法は、決定型誤差拡散フィルタ（deterministic error diffusion filter）を用いる。すなわち、誤差を隣接する画素に分配する方法は、すべての画素に対して一定かつ固定された状態である。フロイドおよびスタインバーグは、実験に基づいて、図２に示されるフィルタが許容可能な描画品質を生成するのに必要な（重み数に換算して）最小のフィルタサイズを有するという結論を出した。しかしながら、描画に伴う人工生成物は、出力時に、特に、いくつかの特定のグレイレベルで目に見える状態のままであるおそれがある。通常、これらの人工生成物は「くねくねした人工生成物（worming artifact）」として現れ、観察者には、いくつかの散在するドットが互いにつながり短い線分を形成しているように見える。これらの人工生成物をさらに除去する効果的な方法の１つは、追加的な擬似ランダムノイズを処理に導入することである。ノイズはしきい値を中心としたドット位置を「ディザー（dither）」するのに役立ち、それによって、線分構造を切り離し、より小さく目に見えないものにする。より大きなノイズレベルは上記の人工生成物を除去するのにより効果的であるが、画像の「粒状性（graininess）」の見かけのレベルを増大させるおそれもある。これが、誤差値当たり１０〜１２ビットを通常の実施に用いられる場合が多い理由である。
【００１４】
誤差拡散技術のランダム性および関連する高周波部分のため、誤差拡散画像を圧縮することが比較的困難であることはよく知られている。利用できる大抵の標準的な圧縮技術は高い圧縮比を生成することができない。一般に、同様のことが誤差列の圧縮にも当てはまる。しかし、８ビットの連続階調画像を紙上またはディスプレイ上に２値出力する際、情報内容が大幅に削減されることは明らかである。
【００１５】
本発明は新しく改良された装置および方法を図り、本装置および方法は上記すべての問題およびその他を克服し、新しい誤差拡散システムを提供し、本システムは、経済的に製造され、様々な次元でのデータ特性を有する複数の拡散技術に容易に適合でき、残留誤差ストリームの改良された圧縮と、好適な誤差拡散技術においてメモリのより効率的な操作とを提供する。
【００１６】
【課題を解決するための手段】
本発明によると、連続画像を描画するために用いられる誤差拡散処理から誤差値を累積する方法において、誤差値は本システムによってより効率的に処理され、コンパクトな形式に変換され、誤差バッファに記憶される方法を提供する。本システムは、個々の画素位置について所定の技術によって原稿を走査し、前記原稿の原稿画素値の列を識別し、入力バッファに読み込む。前記原稿の画素値は、隣接する画素が現在の画素に及ぼす全影響に対応する累積誤差値によって調整され、原稿の画素に対応する位置でプリンタまたはディスプレイによって表示される出力を決定可能な調整画素値を決定する。調整画素誤差値は、前記調整画素値と前記表示装置への出力との間で決定される。前記調整画素誤差値は所定の重み付け技術によって重み付けされ、複数の隣接する画素位置の間へ拡散され、複数の中間画素誤差値を生成する。前記中間画素誤差値は、前記調整ステップで前記原稿の画素値と組み合わされる前に、誤差バッファに累積および記憶され、それによって、前記調整画素値に関連した前記累積誤差値を記憶するメモリ位置に、繰り返しアクセスする動作を、前記中間画素誤差値を中間レジスタに累積することによって避ける。
【００１７】
本発明の別の側面によると、圧縮器（compressor）が拡散器（diffuser）と誤差バッファの中間に配置され、累積誤差値として誤差バッファに記憶する前に、拡散誤差値を圧縮する。好ましくは、圧縮器は量子化器（quantizer ）を備え、拡散誤差値を表現するのに必要なビット数を低減する。圧縮誤差値はメモリに記憶され、解凍され、拡散調整画素誤差値と組み合わされて、順次の累積を修正し、ディスプレイまたはプリンタでの十分なグレイレベルを改良されたやり方でメンテナンスする。
【００１８】
本発明の別の側面によると、２値重み付き画像誤差拡散を行うシステムのための特定の回路構成を提供し、この構成において、分配処理の各除算で発生した残りのビットを次の加算器の桁上げ入力（carry-in）に送るので、累積ハードウェアをさらに設ける必要がない。
【００１９】
本発明の別の側面によると、誤差バッファは水平誤差バッファおよび垂直誤差バッファを備える。中間レジスタは順方向誤差バッファおよび逆方向誤差バッファを備え、これらのバッファは、最後に垂直誤差バッファに累積および記憶する前に、垂直誤差状態値を順次累積する。
【００２０】
本発明によって得られる恩恵の１つは、フィルタサイズに関わらず、アクセスサイクルの総数を１つの画素につきたった１回のメモリ読み込みおよび１回のメモリ書き込み動作に低減することによって、誤差拡散システムのメモリ効率を大幅に向上させることである。
【００２１】
本発明から得られる別の恩恵は、誤差値をコンパクトな形式に変換し、誤差拡散メモリの使用率を大幅に向上させる一方、十分な局所グレイレベルを保持し、画質が目立って低下することはないことである。
【００２２】
主題の新しい誤差拡散システムおよび方法の他の恩恵および利点は、本明細書を読んで理解したとき、当業者には明らかになるだろう。
【００２３】
【発明の実施の形態】
主題の発明は、従来の誤差拡散技術を改良するとともにさらに向上させ、上記困難および制限を改善する。特に、本発明は新しく効率的な方法を提供し、フィルタサイズに関わらず、アクセスサイクルの総数を１つの画素につきたった１回のメモリ読み込みおよび１回のメモリ書き込み動作に低減することによって、メモリ効率を大幅に向上させる。これは、動作の順序を「逆にして」、メモリのラインバッファに対する「読み込み」の前に「書き込み」を行うことによって、行われる。各誤差が拡散されているときラインバッファ内のすべての関連する画素値を更新する代わりに、本発明は、まず、中間のΔｘ（ｉ，ｊ）の画素の更新値を局所レジスタに累積する。所定の画素に対して起こりうるすべての誤差の寄与が合計されたときのみ、累積結果がラインバッファに書き込まれる。最後に、誤差拡散が進み、（ｉ，ｊ）の位置にある画素を処理するときになり、実際の画素値ｘ（ｉ，ｊ）が入力で利用できるようになった場合、更新された合計値をラインバッファから読み出し、直ちに、その値を用いてｘ（ｉ，ｊ）を補正する。
【００２４】
ラインバッファメモリおよび帯域幅の極めて効率的な使用は、その内容を適正に構成することで、達成することができる。提案される方法は、調整された画素誤差を２つの成分、すなわち、水平誤差状態および垂直誤差状態に分解する。水平誤差状態ｅＸは、処理の高速走査方向に送られた誤差である。垂直誤差ｅＹは、現在の行から未処理の行に向かう低速走査方向に送られた誤差である。水平誤差に含まれる情報ははるかに短い語（term）を有するので、水平誤差の方が垂直状態より処理コストがかなり低いことは明らかである。水平誤差は生成された後、いくつかの画素にわたって短時間で消費される。一方、垂直状態情報は数行にわたって保持されなければならない。
【００２５】
各誤差拡散サイクルで、１つの垂直誤差がラインバッファから検索され、その垂直誤差を用いて、現在の画素、例えば、ｉ番目の画素を補正する。この位置は自由になると、次の行のｉ番目の画素のための新しい垂直誤差で書き換えられる。当然、誤差拡散フィルタのスパン（span）を考慮して、書き込み動作は遅延される。このため、効率は、各画素につき１回の「書き込み」動作の前に行われる１回の「読み込み」動作によって表される。
【００２６】
必要な総メモリ量は、垂直誤差状態を記憶する１つのラインバッファと水平状態を記憶する数個の局所レジスタ分である。このようなレジスタの数は、誤差拡散フィルタの水平スパンから１を引いた数に等しい。
【００２７】
図面を参照すると、これらの図面は本発明の好適な実施の形態を例示するためのものにしかすぎず、本発明を限定するためのものではない。図１は、スキャナによって生成され、ビデオ画面またはプリンタ等の２値表示で正確に再生される原稿の画素値を処理する一方で、十分な局所グレイレベルを維持する記憶システムのブロック図を示す。本発明は従来の誤差拡散技術に適用することができ、原稿の画素値と２値出力の差を計算し、表示の隣接する画素に沿って拡散させ、観察者には、局所グレイレベルが保持されているように見える。主題の発明は、特に、隣接する画素からの特定の画素に適用される誤差革新列を処理および記憶し、表示のグレイレベルの所望の保持を維持する場合に適用することができる。
【００２８】
図１は、本発明に基づくとともに、上記フロイドおよびスタインバーグによる隣接する画素の重み付け技術の例に対応して実施される誤差拡散技術の１つの可能な実施例を示す。図４のフローチャートを対応させながら参照すると、本発明は、まず、原稿を走査し（ステップ４０）、現在の走査線の原稿の画素値または現在の画素値を獲得する、その画素値の行方向の位置は黒く図示されている、すなわち、ブロック６１である。図１の実施の形態において、現在の画素値は割り当てられていない８ビットから構成され、原稿上の、たとえあるとしても、ただ１つの色分解から原稿のグレイスケール画像またはテキスト画素を十分に示す。処理要素６２は現在の画素値を対応する累積誤差値に組み合わせることによって現在の画素値を調整し、調整画素値を生成し、この調整画素値は出力を決定可能であり、この出力は表示上の対応する画素位置で２値表示によって表示される。調整処理はこれらの値の合計処理を含む。図１において、累積誤差値は、垂直誤差状態値を保持する垂直誤差バッファｅＹ６４および水平誤差状態値を保持する水平誤差バッファｅＸ６６に記憶される。処理要素６２はこれらの３つの数量すべてを同時に組み合わせ、出力を決定する調整画素値を生成することができる。調整画素値はしきい値６８と比較される（ステップ４４）。尚、しきい値６８は、７０に示されるように、２値出力がオン、すなわち、「１」かオフ、すなわち、「０」かを決定する。さらに、オン状態またはオフ状態は、スキャナによって用いられるグレイスケールまたは範囲に対応する出力値７２に割り当てられる（ステップ４６）。図３では、８ビットを用いているので、出力のオンの値は「２５５」、出力のオフの値は「０」である。但し、２値誤差拡散の場合、１つの比較器７４で十分である。マルチレベルの誤差拡散の場合は、より多くの比較器（およびしきい値）が必要になる。しきい値レジスタ６８は、出力をさらに向上させるとともにいくつかの人工生成物を除去するため、固定されてもよいし画素から画素に変動してもよい。
【００２９】
好ましくは、処理要素７６は加算器を備え、加算器は調整画素値を対応する出力のグレイレベル、２５５または０と組み合わせ（ステップ４８）、それらの調整画素誤差値を決定する。例えば、調整画素値が２００で、しきい値がそれより小さい場合、対応する画素出力は「オン」になり、対応する補正値は「２５５」になり、調整画素誤差値は「−５５」になる。主題の発明の方式は、適当な選択論理（ロジック）の前に多数の比較器および加算器を用いて、多数の決定を行うマルチレベルの誤差拡散をサポートするように容易に拡張することもできることは記憶すべきである。
【００３０】
調整画素誤差値は拡散器８０の論理に送られ、この論理は種々の誤差の大きさを計算し（ステップ５０）、これらの大きさは、どのような所定の重み付け技術が選択された誤差拡散フィルタに適用されても、それにしたがって、隣接する画素に分配される。本発明のサンプルの場合、拡散器８０は、図２に示される重み付け／分配方式にしたがって、４つのフィルタタップ（tap ）（１／１６、３／１６、５／１６および７／１６）の中で誤差値を計算する。正確かつ完全な誤差値を確実に分配させるように注意しなければならない。もしそうでなければ、有限数精度および／または丸め誤差から生じる小さな誤差が印刷ページまたはディスプレイ全体にわたって累積する。本例で用いられるような整数フィルタの重みを用いれば、簡単な加算演算を用いることによって拡散を容易に行うことができる。
【００３１】
実際の拡散器の実施は、当然、性能面での要求に強く依存する。最大速度の場合、平行論理を用いて、４つすべての誤差タップを一度に生成することができる。しかしながら、外部装置が（本発明の回路の内部クロック速度と比較して）低速で動作する場合、誤差値を一度に１つ生成することができ、それによって、１つの重み論理を何回も再構成および共有することによってコストを削減する。後者の場合、タップを計算する順番を、ハードウェアの記憶および複雑さを最小限にするように決めることができる。このため、例えば、まず、（新しい水平状態誤差値に対応する）７／１６の誤差タップ８２の内容（context ）を生成し、その直後に、水平誤差バッファｅＸのレジスタ６６に記憶し、不要になった古い値と置き換える。
【００３２】
図１の実施の形態と図３の実施の形態との違いは、本発明によって計算された調整画素誤差値は、誤差計算用の現在の画素値でなく、加算器６２によって生成された調整画素値に基づくことである。図３の従来のシステムでは、現在の画素値ｘ（ｉ，ｊ）は既に原稿の画素値と累積誤差とのコンパイレーション（compilation ）でなければならず、その累積処理は、記憶の前、または、現在の画素値を記憶するラインバッファで行わなければならない。
【００３３】
本発明を続けると、計算される第２のタップ８４は３／１６タップであり、このタップは、現在の画素のちょうど左下に位置する画素（図２）に対する現在の誤差の寄与を含む。第３のタップは５／１６タップ８６、第４のタップは１／１６タップ８８である。後の３つのタップ８４、８６、８８はすべて圧縮器９０に入力され、圧縮器９０は１組の中間レジスタセットおよび圧縮器を含み、この圧縮器は誤差を圧縮累積誤差値に圧縮し、垂直バッファｅＹ６４によりコンパクトに記憶する。圧縮器９０は、中間レジスタｅＦＷＤ９２およびｅＢＫＤ９４と、加算器９６、９８と、量子化器１００とを備える。中間レジスタ９２、９４における拡散調整画素誤差値の順次累積５２は、図２に示される左から右への走査列に対応する順序で行われる。したがって、垂直誤差状態値を累積する場合、特定の画素に対して、１／１６タップ８８が計算され、ｅＦＷＤレジスタ９２に記憶される。現在の画素が誤差が累積されている画素の真上にあるようにして走査が続くので、以下により詳細に説明するように、加算器９８によって、量子化器１００からの余りｒとともに、次の５／１６タップはｅＦＷＤレジスタ９２に含まれる値に加算される。その後、加算器９８からの値は第２の中間レジスタｅＢＫＤ９４に記憶され、対象の画素のために誤差寄与を累積し続ける。最後に、現在の画素が対象の画素の右上に移動すると、加算器９６によって、３／１６タップ８４からの値をｅＢＫＤレジスタ９４の内容に加算される。加算器９６からの値は、大きくなり十分に累積された垂直誤差状態値からなる。その特定の画素を処理するときまで、その値をメモリ６４に書き込み、記憶することができる。
【００３４】
本発明の特徴は、加算器９６からの最後に累積された誤差値が、誤差バッファ６４に記憶される前に、圧縮される（ステップ５４）ことである。したがって、その結果は量子化器（ＱＴＺ１００）によって量子化され、例えば４ビットに圧縮されるが、品質保持と圧縮程度との間の望しいのトレードオフによって、他のサイズを用いることができ、その後、量子化出力ｑとして誤差拡散バッファに書き込まれる。上記のように、結果として生じる量子化誤差（量子化器１００からの余りｒの出力）はフィードバックされ、順方向レジスタｅＦＷＤ９２の値を修正する。実際、この重要なステップは余りの誤差を次の行の次の画素に送ることによって、正確なグレイレベル全体を維持する。代替例として、余りｒは、加算器９８の代わりに加算器７６または加算器９６に直接入力されることもでき、次に、量子化誤差を用いて、次の画素値のためにフィルタの重み付けを行う。これは、人工生成物の除去に役立つ。このため、「圧縮」処理は誤差拡散処理とともに行われ、正確なグレイレベルを保持し、同時に、生じる誤差ストリームのサイズを小さくする。この意味で、圧縮は「目に見える損失はない（visually lossless ）」。圧縮器９０からの結果は圧縮誤差バッファ６４に記憶され（ステップ５６）、このため、その結果は垂直誤差状態の圧縮を含む。バッファ６４のサイズは、加算器６２で特定の垂直誤差状態を水平誤差バッファ６６内の水平誤差状態および原稿の画素値に組み合わせる必要が生じる前に、十分な垂直誤差状態を記憶できるような大きさにされる。しかしながら、圧縮状態の記憶は、ラインバッファ６４のサイズの条件を大幅に低減する。処理要素６２でこれらの値を加算する前に、符号付きの４ビットとして示される圧縮値を展開器１０２によって符号付きの９ビットに展開する（ステップ５８）。その後、システムは次の画素位置に移動し（ステップ５９）、繰り返すことができる。
【００３５】
各行の始めと終わりでの境界条件については、１つの手法（多くの場合、ハードウェアによる実施において好ましい）は、行サイズおよび誤差バッファを、それぞれ、各側で数画素分（誤差拡散フィルタ幅より１小さい値に相当する）大きくし、これらに対して知られている値（通常、白、または、各行の最初／最後の画素値の複製のいずれか）を仮定することである。第２の代替例は、最初の数画素でフィルタタップを調整し、真の行限界からはみ出さないようにする。例えば、１行の最初の画素に対しては、上記例の誤差拡散フィルタは３／１６タップを７／１６タップに組み合わせ、１０／１６の重み等で１つの真下のタップを生成する等。第１の方法（ハードウェアによる実施の場合に好ましい）は、行延長（すなわち、より大きなバッファ記憶、より大きな拡散サイクル）を犠牲にして、拡散フィルタを固定した状態を保つという利点がある。
【００３６】
特に、図５を参照すると、２値幅分配パターンを用いる画像−誤差拡散描画を行うときに誤差値を分配させるシステムが示されている。
【００３７】
より大きなサイズの２値重み付き分配パターンは、上記の本来のフロイドおよびスタインバーグの重み付けシステムの良い代替例であり、２値の乗算はシフトとして示されるので、実施をより簡単になるという利点を有することが分かった。良い一例は、それぞれ、８、４、２、１、１（図５に示されるような分配ｗｔ＿ｘｘ、ｗｔ＿０、ｗｔ＿１、ｗｔ＿２、ｗｔ＿ｙ３の場合）である。重みはそれぞれ２値のべき乗であり、重みの合計も２値のべき乗である。これによって、２による除算が単に１桁のシフトなので、各分配項に加算されるべき誤差の総数の計算が容易になる。図５の装置によって実施される方法は、各除算の余りを分配させ、分配処理が情報を失わないようにする経済的な方法である。これは、種々の余りビットを既存の加算器の桁上げ入力に送ることによって、行われる。重要な点は、分配に対する余りが４つしかないので余分のハードウェアを設ける必要はなく、また、他の理由のため分配誤差の５つの指定値のうち４つは既に加算器を有することである。特に、剰余を入力の桁上げによって順次累積することができるので、除算の剰余のために累積器は必要ない。
【００３８】
特に、図５は、現在の画素に隣接する複数の画素の間に拡散される調整画素誤差値を記憶する拡散誤差バッファ１１０を示す。複数の中間レジスタＹ０、Ｙ１、Ｙ２およびＹ３は、中間画素誤差値を保持しながら配置されている。例えば、拡散誤差バッファのサイズは、符号付きの９ビットの誤差値を保持する大きさである。１／４で除算して１／４重みタップをレジスタＹ０に割り当てる処理は、誤差バッファ１１０を２桁桁送りし、２つの最下位ビットを落とし、６つの最上位ビットをＹ０にロードすることだけである。走査技術によると、１／４重みタップが１／８重みタップと合計された場合、誤差値Ｙ０は累積器１１２で累積され、レジスタＹ１に記憶されることができる。同様に、順次走査が続くにつれて、拡散誤差バッファにロードされる連続する値は１／４＋１／８＋１／１６＋１／２のように累積される。ｘｘの値は、水平誤差状態値の重み付けに相当する。累積器１１４、１１６、１１８は中央累積処理を行う。累積器１１８への誤差入力１２０は、垂直誤差状態値の累積処理からなる。累積器１１８からの出力が、誤差入力＋ｘｘは、誤差バッファに記憶されるべき値である。
【００３９】
本発明の特徴は、それぞれの重み付けタップを割り当てる桁送りからの除算の剰余は失われないが、各累積器の入力の桁上げによって累積器セットに順次分配されることである。
【００４０】
２値数を２で割るには、最下位ビットの左のビットを選択しさえすればよい。次に、最下位ビットは除算の剰余になり、桁上げおよび入力に分配される。従来のシステムはこの分配誤差を累積し、別個の演算を用いて、その誤差を目的の１つに加えていた。主題の発明はより均一な分配を行い、これらの分配誤差を合計する累積器のハードウェア使用を回避する。
【００４１】
主題の発明が、誤差データが圧縮されているか否かに関わらず、上記メモリアクセスについて効率的であることは特記すべきである。圧縮をすべて省くには、量子化ブロックＱＴＺ１００を除去し、代わりに、未処理の入力を圧縮器９０のｑ出力に単に送るだけの配線を用いれば十分であり、常に、余り出力ｒで０に戻る。簡単であるが重要な圧縮を可能にするためには、入力スペースの均一な量子化を適用することができ、この処理において、ＱＴＺブロック１００は上位数桁のビット（最上位ビット）だけを取り込む。代替例として、（対数スケールのような）非線形写像によって入力スペースを引き延ばすように量子化器１００を設計し、小さいルックアップテーブルを追加するという犠牲をはらって、より良好な圧縮を行うことができる。
【００４２】
上記のように、主題の発明についてフロイドおよびスタインバーグの例を用いて説明してきたが、基本的な技術は極めて一般的であり、カスタマイズして、任意の誤差拡散フィルタ、マルチレベル誤差拡散、ランダム化しきい値処理および他の品質向上の変形例とともに機能することができる。
【００４３】
主題の発明は、コピー機、プリンタおよび多機能装置に適用することができる。本発明は、他のシステムよりかなり低い描画コストを可能にすることによってプリンタ／コピー機／ファックス等の電子機器のコストを大幅に削減することができ、さらに、向上させる可能性を示す。
【００４４】
本発明について好適な実施の形態および代替の実施の形態を参照して説明してきた。本明細書を読んで理解したとき、変形および変更が行われるであろうことは明らかである。このようなすべての変形および変更が特許請求の範囲またはそれの等価物の範囲内にある限り、本発明はこれらの変形および変更を含む。
【図面の簡単な説明】
本発明はある部品および部品の配置において物理的な形態をとり、本発明の好適な実施の形態について本明細書で詳細に説明するとともに添付図面に例示する。
【図１】本発明の好適な実施の形態のブロック図である。
【図２】従来の誤差拡散の走査／重み付け技術を示す説明図である。
【図３】従来の誤差拡散システムのブロック図である。
【図４】本発明の好適な実施の形態の方法のフローチャートである。
【図５】２値重み付き誤差拡散システムに用いる拡散器の１つの特定のハードウェアの実行を示す説明図である。
【符号の説明】
１０  正方形
１２  黒画素
１４  白画素
１６  画素
１８  中心画素
５２  累積器
６２  加算器
６４  垂直誤差バッファｅＹ
６６  水平誤差バッファｅＸ
６８  しきい値レジスタ
７２  出力値
７４  比較器
７６  加算器
８０  拡散器
８２、８４、８６、８８  誤差タップ
９０  圧縮器
９２  中間レジスタｅＦＷＤ
９４  中間レジスタｅＢＫＤ
９６、９８  加算器
１００  量子化器
１０２  展開器
１１０  拡散誤差バッファ
１１２、１１４、１１６、１１８  累積器
Ｙ０、Ｙ１、Ｙ２、Ｙ３  中間レジスタ
【図１】
0004100782.tif 000002
【図２】
0004100782.tif 000003
【図３】
0004100782.tif 000004
【図４】
0004100782.tif 000005
【図５】
0004100782.tif 000006