(57)【特許請求の範囲】
【請求項１】
インクジェット・プリントヘッドの１つのカラムに対応するピクセル画像値を含むＳ個の色空間ピクセル画像値を前記１つのカラムに対応する誤差拡散された色空間ピクセル画像値を含むＳ個の誤差拡散された色空間ピクセル画像値に変換するステップと、
以下の式で定義される合計数の記憶位置を有するＮ行×ｍ列の記憶位置のマトリクス・アレイのバッファ・メモリに、前記Ｓ個の誤差拡散された色空間ピクセル画像値を格納するステップ
Ｓ＝（Ｎ×Ｎ＋Ｎ）／２
ここで、Ｎはインクジェット・プリントヘッドの１つのカラムにおけるノズルの合計数である、と、
前記Ｎ行×ｍ列のマトリクス・アレイのバッファ・メモリ中の単一の列に格納されている前記バッファ・メモリからの誤差拡散された前記１つのカラムに対応するＮ個の色空間ピクセル画像値を前記プリントヘッドに受け渡し、印字媒体上に１カラムのインク滴を形成するステップと、
前記変換するステップ、格納するステップおよび受け渡すステップを、前記プリントヘッドが前記印字媒体上に画像情報の完全なスウォスを形成するのに十分な回数繰り返すステップと
を含むことを特徴とする誤差拡散方法。
【請求項２】
前記繰り返すステップは、前記プリントヘッドが前記印字媒体上を掃引する時にオン・ザ・フライで実行されることを特徴とする請求項１記載の誤差拡散方法。
【請求項３】
Ｎをインクジェット・プリントヘッドの１つのカラム中のノズルの合計数とするとき、Ｎ行×ｍ列の記憶位置を有し、以下の式で定義される合計数の記憶位置を有するバッファ・メモリであって
Ｓ＝（Ｎ×Ｎ＋Ｎ）／２
インクジェット・プリントヘッドの１つのカラムに対応するピクセル画像値を含むＳ個の色空間ピクセル画像値を前記１つのカラムに対応する誤差拡散されたピクセル画像値を含むＳ個の誤差拡散された色空間ピクセル画像値に変換するプロセッサと、
前記プロセッサに格納され、前記Ｓ個の誤差拡散された色空間ピクセル画像値が前記バッファ・メモリに格納されるようにし、前記Ｎ行×ｍ列のバッファ・メモリ中の単一の列に格納されている、前記バッファ・メモリからのＮ個の前記１つのカラムに対応する格納され誤差拡散された色空間ピクセル画像値を前記プリントヘッドに受け渡すことにより、印字媒体上に１カラムのインク滴を形成する制御プログラムとを具備し、
前記プロセッサは、前記制御プログラムの制御により、他のＳ個の色空間ピクセル画像値をＳ個の誤差拡散された色空間ピクセル画像値に変換し、前記プリントヘッドが前記印字媒体上に画像情報の完全なスウォスを形成するのに十分な回数、それらを前記バッファ・メモリに格納してそのバッファ・メモリから受け渡すこと
を特徴とする誤差拡散システム。
【請求項４】
前記プロセッサおよび制御プログラムにより、前記変換、格納、および受け渡し処理が、前記プリントヘッドが前記印字媒体上を掃引する時にオン・ザ・フライで実行されることを特徴とする請求項３記載の誤差拡散システム。
【請求項５】
Ｎをインクジェット・プリントヘッドの１つのカラムにおけるノズルの合計数とし、また、Ｓ＝（Ｎ×Ｎ＋Ｎ）／２とするとき、インクジェット・プリントヘッドの１つのカラムに対応するピクセル画像値を含むＳ個の色空間ピクセル画像値を前記１つのカラムに対応する誤差拡散された色空間ピクセル画像値を含むＳ個の誤差拡散された色空間ピクセル画像値に変換する手段と、
前記Ｓ個の誤差拡散された色空間ピクセル画像値をＳ個の合計数の記憶位置を有するＮ行×ｍ列の記憶位置のマトリクス・アレイに格納する手段と、
を具備し、
前記変換する手段は、前記Ｎ行×ｍ列のマトリクス・アレイ中の単一の列に格納されている、前記格納する手段からの前記１つのカラムに対応するＮ個の誤差拡散された色空間ピクセル画像値を前記プリントヘッドに受け渡すことにより、印字媒体上に１カラムのインク滴を形成し、
前記変換する手段は、前記プリントヘッドが前記印字媒体上に画像情報の完全なスウォスを形成することができる回数、画像情報の変換、格納および受け渡し処理を繰返すことを特徴とする誤差拡散システム。
【請求項６】
前記変換する手段は、前記プリントヘッドが前記印字媒体を横切って掃引する時にオン・ザ・フライで画像情報の変換、格納および受け渡し処理を行うことを特徴とする請求項５記載の誤差拡散システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本出願は、コンピュータ・システム・プリンタであって、他のシステム周辺装置からの色空間をそのプリンタに対応する異なる種類の色空間に変換するプリンタに関する。特にこの出願は、色空間を変換して結果として生じる誤差を独自のサブカラム（部分列）処理順序で隣接するピクセルにオン・ザ・フライで拡散する前進的なカラム誤差拡散システムを備えたラスタ・スキャン・プリンタに関する。
【０００２】
【従来の技術】
一般に、何億もの色を含む色空間画像は、インクジェット・プリンタで直接再生あるいは再現することはできない。この点に関して、大抵のカラー・インクジェット・プリンタは、基本的な８色の組、すなわち赤、緑、青、シアン、黄、マゼンタ、黒、および場合によっては他の色合いのシアンおよび他の色合いのマゼンタを生成することができるだけである。このため、このようなプリンタは、何百、何千、または何千万もの色を再生することができるが、確かに何億もの色を再生することはできない。
【０００３】
インクジェット・プリンタは、そのような多くの色を再生することができないため、一般に、当業者に公知のハーフトーニング処理を採用している。ハーフトーニングは、受信媒体上で達し得ない色を、媒体表面の異なるインクの色の滴またはドットをクラスタ化して、所望の色に近づけるようそれらを「平均化する」ことによって、近づけるアルゴリズム処理である。
【０００４】
たとえば、上述したような８つの色を生成するインクジェット・プリンタの場合、オレンジ色は、媒体表面上で赤および黄のドットの集団をきわめて接近して互いにクラスタ化することにより、知覚的に再生することができる。人間の目で見た場合、各赤および黄のドットのクラスタはオレンジ色として知覚される。この場合、人間の目は個々のドットを解像することができない。このため人間の目はドットを平均化しており、見る人はオレンジ色を見ているように知覚する。
【０００５】
ある色空間を他の色空間に変換するのに利用されるハーフトーニング方法には、多くの異なる方法がある。しかしながら、最高画質の色空間画像を生成すると考えられる方法は、誤差拡散方法と呼ばれている方法である。
【０００６】
誤差拡散方法は、他の装置における色空間のピクセル・カラーのプリンタ・ピクセル・カラーと非常によく一致するプリンタ・ピクセル・カラーを選択し、選択した色を印字する処理を伴う。プリンタ・カラーは、通常、他の色空間のピクセル・カラーのプリンタ・カラーとまったく同じ色ではないため、ある色空間から他の色空間への変換処理に関連した色誤差が発生する。そして、この誤差は分割され、印字されたピクセルのすぐ近傍にあるまだ印字されていないピクセルの色に拡散される。
【０００７】
このため、例えば他の色空間のピクセル・カラーがオレンジであり、誤差拡散処理が最も近いプリンタ・ピクセル・カラーとして赤を選択した場合、赤が多すぎて黄が足りないという誤差が結果として発生する。この場合、誤差拡散処理は、印字される周囲のピクセルの色に少しの黄を加え、周囲のピクセルの色から少しの赤を除く。この手続きに続いて、次のピクセルが処理された時、プリンタは、この修正した色（すなわち、少しの黄が加えられ少しの赤が除かれた、元のピクセル・カラー）に最も近い色を選択することになる。この新たなピクセルが印字された時、それもまた関連した色誤差を有することになり、これは、新たな位置を囲むピクセルに順次伝搬される。この処理は、１行のピクセルが処理された時、すなわち次の行が処理される時まで続く。この誤差拡散の形態は、最初に、Robert FloydおよびLouis Steinbergによって、彼らの発行された論文「An Adaptive Algorithm Spatial Grey Scale（空間的グレイスケール適応型アルゴリズム）」（Society of Information Display:Vol.17, No.75(1975)）で提案された。要するに、Floyd等による処理によれば、各ピクセルの変換に関連する誤差値を隣接するピクセルに拡散することによって、異なる色空間画像間における移行がより円滑になる。
【０００８】
Floyd等のアルゴリズムを実現するプロセッサは、画質を改良するのを助けるという点では成功しているが、もたらされた改良画質は、高価であり時間がかかる。このため、Floyd等の処理は、ラスタ・スキャン型プリンタに適用する場合、ある行からの誤差を、次の行を処理することができる前に認識しなければならないため、画像データを行単位で次々に処理する必要がある。このため、データが処理されるのに伴い、十分な行が処理されて印字に使用できるようになるまで画像データの変換された行を記憶装置に保持しなければならない。
【０００９】
当業者に周知のように、一般的なインクジェット・プリンタは、ラスタ・スキャン印字処理を行うために、印字媒体がたどる移動の経路の方向を横切って、プリントヘッドをスウィープすなわち掃引させる。この場合、プリントヘッドが印字媒体上を移動するに伴い、プリントヘッド上の一続きのインクジェット・ノズルが、媒体に向かって下方向にインクを噴出または発射し、プリントヘッド・ノズルのカラム高さによって決定される多くのピクセル行から構成される水平な「スウォス(swath)」あるいは「一噴きの列」を生成する。例えば、プリントヘッドが２００のノズルの列（カラム）を有し、ノズル毎に１ピクセルが印字される場合、スウォスの印字が開始できる前に、画像ピクセルの２００行すべてを処理し、メモリに格納しなければならない。ノズルのある行が少ない部分的なスウォスを印字することは、オプションではない。このため、部分的な掃引を実行するには時間がかかりすぎ、これによってプリンタのスループットがひどく低下することとなる。要するに、多くの画像データを変換および格納しなければならないため、多くのプリンタ・メモリが必要であり、それによってプリンタのコストが非常に増大する。
【００１０】
【発明が解決しようとする課題】
従って、大きく高価なランダム・アクセス・メモリ記憶装置を使用する必要なく、パイプライン方式で、オン・ザ・フライで高速かつ効率的に変換および処理を行うことを可能とする誤差拡散システムを備えた、新しくかつ改良されたプリンタを提供することが非常に望ましい。
【００１１】
【課題を解決するための手段】
本発明の好ましい実施の形態によれば、新規な誤差拡散方法は、ピクセル単位で画像データを処理し、画像情報のサブカラム（部分列）の集団が結果として生じるまで、独自の順序で、処理した画像データを格納する。一旦、処理された画像情報のサブカラム（部分列）が使用可能となると、その情報が印字の目的で検索される。各サブカラム（部分列）は、インクジェット・プリンタ内のプリントヘッドのカラム高さ全体に配置されたノズルの数に対応する所与の数のバッファ・メモリ位置を有している。バッファ・メモリの読出しおよび書込みのサイクルは、プリントヘッドのスウォス掃引レートに同期しており、これにより、メモリ記憶の量を制限して、パイプライン化したオン・ザ・フライの誤差拡散処理が可能となる。
【００１２】
【発明の実施の形態】
本発明の好ましい実施の形態の上述した特徴、およびそれらを得る方法は、明らかとなるであろう。また、本発明自体は、添付した図面と共に本発明の実施の形態についての以下の説明を参照することにより、最もよく理解されることであろう。
【００１３】
ここで、図面、特に図１および図２を参照すると、本発明の好ましい実施の形態に従って構成された新しくかつ改良されたインクジェット・プリンタ１０が示されている。インクジェット・プリンタ１０は、ビデオ・モニタ１２および中央処理装置１３を有するコンピュータ・システム８に接続されている。中央処理装置１３は、インクジェット・プリンタ１０およびビデオ・モニタ１２に対して駆動または画像データ信号を生成することによって、画像データが、印字媒体３０（図３）上にハードコピーの形態で視覚的に表示および再生できるようにする。
【００１４】
ここで、図２を参照してインクジェット・プリンタ１０についてより詳細に考慮すると、インクジェット・プリンタ１０は、一般に、数１で定義されるような記憶空間位置の量が制限されたバッファ・メモリ・ユニット１４と、プリンタ・プロセッサあるいはコントローラ２０とを含む。プロセッサ２０は、画像データがビデオ・モニタの色空間のようなある色空間において受信されると、中央処理装置１３に応答し、この画像データをプリンタ１０によって再生可能な他の色空間に変換する。特に、プロセッサ２０は、最初にＳ個の変換されていない色空間ピクセル画像値を受信して、バッファ・メモリ・ユニット１４に格納する。一旦、変換されていない画像データが格納されると、画像処理または誤差拡散プログラム７００（図７）の制御下のプロセッサ２０は、それを検索し、変換して、その変換された画像データを格納する。変換された画像データは、プリンタ１０による再生に適したＳ個の誤差拡散した色空間ピクセル画像値の形態で、バッファ・メモリ・ユニット１４に格納される。以下詳細に説明するように、誤差拡散プログラム７００で制御されるプロセッサ２０は、結果として生じる色誤差を、個々の変換された色空間ピクセル画像値に拡散することにより、オン・ザ・フライで画像データを処理する。
【００１５】
上述した画像処理プログラム７００は、従来からの誤差拡散方法を具体化するが、最小の量の記憶空間でオン・ザ・フライの変換を可能にする独自の順序で、個々のピクセル画像値を処理する。特に、新規な誤差拡散方法は、従来からの行単位の方法とは対照的にサブカラム（部分列）単位で画像データを処理する。このため、バッファ・メモリ・ユニット１４は、サイズ上、画像情報のスウォス全体に対応するマトリクス・アレイで構成される。マトリクス・アレイのカラム（列）の寸法は、図４に示すインクジェット・プリントヘッド１６のような従来からのインクジェット・プリントヘッド内のカラム型のノズルの数に一致するよう選択されている。マトリクス・アレイの行の寸法は、メモリ効率を最大にするように選択されており、このため、その寸法は、数１によって与えられ、画像情報のスウォスを印字している間にオン・ザ・フライの変換を可能とするのに十分な位置の数である。新規な処理方法は、画像品質に妥協せず、変換処理から結果として生じる誤差が従来からの誤差拡散方法に従って拡散されても、画像が印字されている間にオン・ザ・フライの処理を可能とするという重要な利点がある。上述した点から、当業者は、新規な方法が、プリント・マスクしたデータを同様に格納するのに必要なメモリが少ないという点で、実質的なコストを節約すると共にスループットを非常に向上させる、ということを認めるであろう。
【００１６】
ここで、新規な方法についてより詳細に検討すると、本処理方法は、コンピュータ・ビデオ・モニタ１２のような色空間周辺装置によって供給されるＳ個の色空間ピクセル画像値を、Ｓ個の誤差拡散された色空間ピクセル画像値に変換する処理を含む。そして、Ｓ個の誤差拡散された色空間ピクセル画像値は、格納された値をインクジェット・プリントヘッド１６のようなインクジェット・プリントヘッドに容易にゲート（受け渡し）できるように、バッファ・メモリ・ユニット１４に一時的に格納される。図４で最もよく示されるように、プリントヘッド１６は、インクジェット・ノズル４２のようなインクジェット・ノズルの少なくとも１つのカラム型の組４０を含む。
【００１７】
バッファ・メモリ１４は、合計してＳ個の記憶位置を備える。ここで、Ｓは、数１によって定義される。数１に表されるＮの値は、インクジェット・ノズルの組４０内のノズルの合計数と同じである。上述したことから、当業者にて、例えばプリントヘッドが１カラム内に１００のノズルを有する場合、バッファ・メモリは、一度に５０５０の誤差拡散されたピクセルを保持するのに十分な大きさである必要がある、ということが理解されるであろう。同様に、プリントヘッドが図４に示すように４つのノズルを有する場合、バッファ・メモリは、一度に１０の誤差拡散されたピクセルを保持すればよい。
【００１８】
（数１）
Ｓbuffer＝（Ｎ2 ＋ Ｎ）／２
ここで、Ｎは、ペン・カラム内のノズルの数であり、Ｓbufferは、バッファされた誤差拡散されたピクセルの数である。
【００１９】
一旦、誤差拡散された色空間ピクセル画像値の１つのカラムがバッファ・メモリ１４に格納されると、格納されたカラムは、プリントヘッドに対してゲート・アウト（出力）される。情報のカラムをゲートすることにより、そのカラムは、オン・ザ・フライで拡散される色空間ピクセル画像値の他の組をすぐに格納可能である。
【００２０】
ここで、新規な方法についてさらに詳細に検討すると、図５および図６は、塗りつぶされ始めるにつれて三角形となるバッファ構成を示す。図５に示す最左のカラムの高さが一旦ペン・ノズル・カラム２２の高さに達した時、図示的に述べると、新たな対角線が処理されるにつれてバッファが右へスライドするが、高さはカラムの高さで固定されたままである。
【００２１】
バッファ方式の最大効率は、そこで直前に処理された最左のカラムからの画像データを、直前に保持していたバッファ・メモリの位置に、処理されたデータの各カラムが格納されることによって、達成される。これにより、メモリのアドレス指定の順序は、各ピクセルについて決定された読出しおよび書込みの位置を使用して、各ピクセルをオン・ザ・フライで処理するよう確立される。この目的を達成する多くの異なるバッファ方式を使用することができる。従って、以下は、単なる例であり、ここでは、ペン・カラム内のノズルの数を４ノズルとし、バッファ・メモリ記憶位置の数を、数１に基づいて１０としている。
【００２２】
図５に示すようなボックスのグループ５００は、図式的に、高さが４ピクセルで幅が１６ピクセルの画像３０（図３）の一部を表している。ボックス５０２のような各ボックスは、画像３０内の１つのピクセルを表しており、各ボックス内の数は、例示するバッファ・メモリにおける物理アドレスを表している。要するに、画像３０内の所与のピクセルのデータは、例えばボックス５０４内のアドレスで示されるメモリ・アドレスに格納される。
【００２３】
例示するバッファ・メモリ内のアドレスは、１０個の位置全体に対して０から９の範囲であり、それは、以下のように数１をこの例に適用させた数２によって得られる数である。
【００２４】
（数２）
Ｓbuffer＝（４2＋４）／２＝（１６＋４）／２＝（２０）／２＝１０
【００２５】
図５に示すように、ボックスのいくつかは、影付きボックス５０４のよう影が付けられることによって、印字された情報のスウォスにおいて異なる場所でバッファが使用されている状態を示す。ここで、画像情報のスウォスが、印字媒体を横切って左から右へ印字することによって処理されるに従い、バッファ・メモリの三角状に影が付けられたバッファ部分は、同様に、図示するようなバッファ・メモリ位置を横切って左から右へ掃引される。このため、スウォス・データの処理は、バッファ・メモリにおける画像データの格納と同期する。
【００２６】
上述したことから、図５に示す１０個の位置各々が、どの影付き領域においても１回だけ現れ、各影付き領域の左側に隣接している完成したカラムは、隣接する影付き領域の対角線と同じアドレスを含むことに注目する。このため、例えば影付き領域５１０において、そこにある対角線全体は、順にメモリ位置４、７、９、０を含み、隣接するカラムは、０、４、７、９の順序で同じメモリ位置を含む。従って、バッファ・メモリは、可能な最も効率的な方法で最大限に利用される。すなわち、１つのカラムが終了した時、処理された画像情報と共に格納されるカラム内の各位置が検索され、印字の目的で転送されることを意味し、そのカラム内で直前に利用されたメモリ位置が、次の対角線シーケンスによってすぐに再利用される。このようにして、対角線に沿ったアドレス・シーケンスは、各アドレスを一連の差分として容易に計算できる、式（ｎ2＋ｎ）／２についての離散的な数列に従う。このような一連の差分は、図５に明示されている。
【００２７】
図３に示すような４つ分のノズルの高さを有するカラムを備えたペンに対応する図５の全マトリクス・アレイは、以下のように表１に表すことができる。
【００２８】
（表１）
０１２３４５６７８９
４５６７８９０１２３
７８９０１２３４５６
９０１２３４５６７８
【００２９】
上記全マトリクス・アレイから、当業者は、カラム内の第１の指標および第２の指標間の差分が、スウォスにおける行の数（この例の場合４）に常に等しいことが分かるであろう。このため、降順の方向で３と９の間の距離が４であることから、第１のカラムについて、（４−０＝４）ということが分かり、最後のカラムについて、（３−９＝４）ということが分かる（すなわち、３、２、１、０、９から、３と９の間の距離は、４と０の間の距離４、３、２、１、０と同じである）。
【００３０】
指標の全アレイは、固定の量によってオフセットすることができる。しかしながら、ある位置から次の位置への指標間の差分は、同じでなければならない。当業者は、指標値の計算が他の選択肢に比べて比較的簡単であるため、ここで説明している指標の差分を用いた方法が、集積回路の複雑性の観点から、最も効率的な指標付け法（indexing method)であることが分かるであろう。指標付けシーケンスには、例えばそれが下方へデクリメントすることが可能になるような、いくつかの変形例がある。しかしながら、前進あるいは昇順(progression)の項は容易に決定されるため、最も簡単な方法は、（ｎ2＋ｎ）／２の前進に基づく数列を利用する方法である。
【００３１】
ここで、プリンタ１０についてより具体的に見ると、プリンタ１０は、マルチパス・プリンタであり、さらに、ピクセル単位で変換された画像データのマスキングを容易にする４パス疑似ランダム・マスキング・ジェネレータの組２２を有するマスキング・システム２１を備えている。疑似ランダム・マスキング・ジェネレータの組２２は、共に係属中の米国特許出願番号０９／０７０，５５０号により十分に説明されており、ここではより具体的には説明しないこととする。なお、疑似ランダム・マスキングは、ピクセル情報をマスキング・システムに転送するモジュールによって、カラム単位、行単位、または個々のピクセル単位で実行することができる。このため、当業者は、本発明の好ましい実施の形態において、ここで示す前進的カラム誤差拡散モジュールからのピクセル情報はカラムによって構成されるが、マスキング・システムに関連して限定しようとするものではないことが理解できるであろう。要するに、ピクセル・データがマスクされる順序は任意である。各ピクセルは、他のピクセル毎に関してランダムであるようにマスキングされ、そのため、マスキングの順序は、限定的ではない。このため、ここで示すような前進的カラム順序誤差拡散を利用するとしても、ハーフトーン化されたデータは、考えられるところでは中間バッファに格納することができ、どのような順序でも、すなわち、カラム毎に、対角線毎に、またはランダムにマスクすることができる。
【００３２】
また、マスクされた変換済みの画像情報のプリントヘッドに対するゲート処理を容易にするために、マスキング・システム２１はゲート・アレンジメント２４も含む。ゲート・アレンジメント２４により、変換およびマスクされた画像情報が、動作のマルチパス・モードにおける個々の掃引に対応してゲートされることができる。このため、ゲート処理は、カラム単位で渡される誤差拡散モジュールからのピクセル情報により、４つの掃引各々について行われる。
【００３３】
例として、受信画像データを処理する１つの方法について説明する。ここで説明する方法は、処理シーケンスを理解することを容易にするための簡単なバイナリ変換処理に関するが、それに限定されるものではない。しかしながら、本発明の真の範囲および精神において、他の色空間変換技術も考えられる。すなわち、例えば、誤差拡散されたデータの色の全範囲が、元のデータのものよりも少ないように、データが全範囲的に縮小されるようにしてもよい。この場合、プリンタが、所定の媒体位置で各インクの８つの異なるレベルのみを印字する場合、画像の各色８ビットを各色３ビットに下げるか、または８レベルに下げる誤差拡散が可能となる。バイナリ・プリンタには、１ビットに下げるバイナリ誤差拡散が適当である。そこで、バイナリ誤差拡散の例を示すが、各インクの色が４または８レベルであるようなマルチ・レベル・プリンタが、本発明の真の範囲および精神の内で考えられるため、このような処理シーケンスは、限定することを意図するものではない。
【００３４】
図６において、例として、４行×１６カラム（列）のマトリクス・アレイのバッファ・メモリについて、シーケンス・ステップを図式で表す。バッファ・メモリ内のカラムは、（Ｊ＋ｎ、ここでｎは０と１６の間）という表記法で認識され、行は、（Ｉ＋ｍ、ここでｍは０と４の間）という表記法で認識される。図７は、図６に関して参照として示す。この場合、図６における所与の行およびカラム（列）の影付きのボックスは、図７において、同じ所定の行およびカラムの影付きのボックスと相互に参照される。
【００３５】
ここで、図６および図７を参照して、処理シーケンスの例についてより詳細に見る。図7に示されるように、処理プログラム７００は、図８Ａないし図８Ｆの各フローチャートを図示のような関係に配置して記述されている。図８Ａないし図８Ｆのフローチャートの各ブロックの内容は以下の通りである。
【００３６】
図８Ａのフローチャート
８００：開始
８０１：現在の行と現在の列のピクセル（Ｒi，Cj）のグレイスケール値をアクセスする
８０２：現在のピクセル（Ｒi，Ｃj）の補正したグレイスケール値を計算する
８０３：現在のピクセル（Ｒi，Ｃj）のバイナリ値を計算する
Ｇi＞Ｔなら、Ｐi,j＝１
Ｇi＜Ｔなら、Ｐi,j＝０
８０４：現在のピクセル（Ｒi，Ｃj）の誤差拡散バッファに決定したバイナリ値を格納する
８０５：現在の行と次の列の次のピクセル（Ｒi，Ｃj+1）のグレイスケール値をアクセスする
８０６：Ａ
８１０：Ａ
８１１：直前にアクセスしたピクセル（Ｒi，Ｃj）をグレイスケール値からバイナリ値へ変換したことから属性付き誤差値を計算する
８１２：誤差蓄積バッファレジスタから、同じ行で直前の列の直前のピクセル（Ｒi，Ｃj）から発生した属性付き誤差をアクセスする
８１３：現在の行で次の列の次のピクセル（Ｒi，Ｃj+1）の補正したグレイスケール値を計算する
８１４：ピクセル（Ｒi，Ｃj+1）のバイナリ値を計算する
Ｇi,j+1＞Ｔなら、Ｐi,j+1＝１
Ｇi,j+1＜Ｔなら、Ｐi,j+1＝０
８１５：現ピクセル（Ｒi，Ｃj+1）の誤差拡散バッファに決定したバイナリ値を格納する
８１６：Ｂ
【００３７】
図８Ｂのフローチャート
８２０：Ｂ
８２１：次の行で直前の列のピクセル（Ｒi+1，Ｃj）のグレイスケール値をアクセスする
８２２：ピクセル（Ｒi，Ｃj）と（Ｒi，Ｃj+1）から属性付き誤差値を計算する８２３：誤差蓄積バッファからピクセル（Ｒi，Ｃj）と（Ｒi，Ｃj+1）から発生した属性付き誤差値をアクセスする
８２４：現在のピクセル（Ｒi+1，Ｃj）の補正したグレイスケール値を計算する８２５：ピクセル（Ｒi+1，Ｃj）のバイナリ値を計算する
Ｇi+1,j＞Ｔなら、Ｐi+1,j＝１
Ｇi+1,j＜Ｔなら、Ｐi+1,j＝０
８２６：現在のピクセル（Ｒi+1，Ｃj）の誤差拡散バッファに決定したバイナリ値を格納する
８２７：Ｃ
８３０：Ｃ
８３１：現在の行で次の列の次のピクセル（Ｒi，Ｃj+2）のグレイスケール値をアクセスする
８３２：誤差蓄積バッファレジスタから直前のピクセル（Ｒi，Ｃj+2）と（Ｒi+1，Ｃj）からの属性付き誤差値を計算する
８３３：現在のピクセル（Ｒi，Ｃj+3）の補正したグレイスケール値を計算する８３４：現在のピクセル（Ｒi，Ｃj+2）のバイナリ値を計算する
Ｇi,j+2＞Ｔなら、Ｐi,j+2＝１
Ｇi,j+2＜Ｔなら、Ｐi,j+2＝０
８３５：現在のピクセル（Ｒi，Ｃj+2）の誤差拡散バッファに決定したバイナリ値を格納する
８３６：Ｄ
【００３８】
図８Ｃのフローチャート
８４０：Ｄ
８４１：次のピクセル（Ｒi+1，Ｃj+1）のグレイスケール値をアクセスする
８４２：ピクセル（Ｒi，Ｃj）、（Ｒi，Ｃj+1）、（Ｒi+1，Ｃj）、（Ｒi，Ｃj+2）から属性付き誤差値を計算する
８４３：誤差蓄積バッファレジスタからピクセル（Ｒi，Ｃj）、（Ｒi，Ｃj+1）、（Ｒi+1，Ｃj）、（Ｒi，Ｃj+2）から発生した属性付き誤差をアクセスする
８４４：現在のピクセル（Ｒi+1，Ｃj+1）の補正したグレイスケール値を計算する
８４５：現在のピクセル（Ｒi+1，Ｃj+1）のバイナリ値を計算する
Ｇi+1,j+1＞Ｔなら、Ｐi+1,j+1＝１
Ｇi+1,j+1＜Ｔなら、Ｐi+1,j+1＝０
８４６：現在のピクセル（Ｒi+1，Ｃj+1）の誤差拡散バッファに決定したバイナリ値を格納する
８４７：Ｅ
８５０：Ｅ
８５１：ピクセル（Ｒi+2，Ｃj）のグレイスケール値をアクセスする
８５２：ピクセル（Ｒi+1，Ｃj）と（Ｒi+1，Ｃj+1）から属性付き誤差値を計算する
８５３：誤差蓄積バッファレジスタからピクセル（Ｒi+1，Ｃj+1）から発生した属性付き誤差をアクセスする
８５４：現在のピクセル（Ｒi+2，Ｃj）の補正したグレイスケール値を計算する８５５：現在のピクセル（Ｒi+2，Ｃj）のバイナリ値を計算する
Ｇi+2,j＞Ｔなら、Ｐi+2,j＝１
Ｇi+2,j＜Ｔなら、Ｐi+2,j＝０
８５６：現在のピクセル（Ｒi+2，Ｃj）の誤差拡散バッファに決定したバイナリ値を格納する
８５７：Ｆ
【００３９】
図８Ｄのフローチャート
８６０：Ｆ
８６１：ピクセル（Ｒi，Ｃj+3）のグレイスケール値をアクセスする
８６２：ピクセル（Ｒi，Ｃj+2）と（Ｒi+2，Ｃj）から属性付き誤差値を計算する
８６３：誤差蓄積バッファレジスタからピクセル（Ｒi，Ｃj+2）と（Ｒi+2，Ｃj）から発生した属性付き誤差をアクセスする
８６４：現在のピクセル（Ｒi，Ｃj+3）の補正したグレイスケール値を計算する８６５：現在のピクセル（Ｒi，Ｃj+3）のバイナリ値を計算する
Ｇi,j+3＞Ｔなら、Ｐi,j+3＝１
Ｇi,j+3＜Ｔなら、Ｐi,j+3＝０
８６６：現在のピクセル（Ｒi，Ｃj+3）の誤差拡散バッファに決定したバイナリ値を格納する
８６７：Ｇ
８７０：Ｇ
８７１：ピクセル（Ｒi+1，Ｃj+2）のグレイスケール値をアクセスする
８７２：ピクセル（Ｒi，Ｃj+1）、（Ｒi，Ｃj+2）、（Ｒi+1，Ｃj+1）、（Ｒi，Ｃj+3）から属性付き誤差値を計算する
８７３：誤差蓄積バッファレジスタからピクセル（Ｒi+1，Ｃj+1）と（Ｒi，Ｃj+3）から発生した属性付き誤差をアクセスする
８７４：現在のピクセル（Ｒi+1，Ｃj+2）の補正したグレイスケール値を計算する
８７５：現在のピクセル（Ｒi+1，Ｃj+2）のバイナリ値を計算する
Ｇi+1,j+2＞Ｔなら、Ｐi+1,j+2＝１
Ｇi+1,j+2＜Ｔなら、Ｐi+1,j+2＝０
８７６：現在のピクセル（Ｒi+1，Ｃj+2）の誤差拡散バッファに決定したバイナリ値を格納する
８７７：Ｈ
【００４０】
図８Ｅのフローチャート
８８０：Ｈ
８８１：ピクセル（Ｒi+2，Ｃj+1）のグレイスケール値をアクセスする
８８２：ピクセル（Ｒi+1，Ｃj）、（Ｒi+2，Ｃj）、（Ｒi+1，Ｃj+1）、（Ｒi+1，Ｃj+2）から属性付き誤差値を計算する
８８３：誤差蓄積バッファレジスタからピクセル（Ｒi+1，Ｃj）、（Ｒi+2，Ｃj）、（Ｒi+1，Ｃj+1）、（Ｒi+1，Ｃj+2）から発生した属性付き誤差をアクセスする
８８４：現在のピクセル（Ｒi+2，Ｃj+1）の補正したグレイスケール値を計算する
８８５：現在のピクセル（Ｒi+2，Ｃj+1）のバイナリ値を計算する
Ｇi+2,j+1＞Ｔなら、Ｐi+2,j+1＝１
Ｇi+2,j+1＜Ｔなら、Ｐi+2,j+1＝０
８８６：現在のピクセル（Ｒi+2，Ｃj+1）の誤差拡散バッファに決定したバイナリ値を格納する
８８７：Ｉ
８９０：Ｉ
８９１：ピクセル（Ｒi+3，Ｃj）のグレイスケール値をアクセスする
８９２：ピクセル（Ｒi+2，Ｃj）と（Ｒi+2，Ｃj+1）から属性付き誤差値を計算する
８９３：誤差蓄積バッファレジスタからピクセル（Ｒi+2，Ｃj+1）から発生した属性付き誤差をアクセスする
８９４：現在のピクセル（Ｒi+3，Ｃj）の補正したグレイスケール値を計算する８９５：現在のピクセル（Ｒi+3，Ｃj）のバイナリ値を計算する
Ｇi+3,j＞Ｔなら、Ｐi+3,j＝１
Ｇi+3,j＜Ｔなら、Ｐi+3,j＝０
８９６：現在のピクセル（Ｒi+3，Ｃj）の誤差拡散バッファに決定したバイナリ値を格納する
８９７：Ｊ
【００４１】
図８Ｆのフローチャート
９００：Ｊ
９０１：列Ｃjの中味をマスキング・システムに転送する
９０２：最後の列か？
９０３：続く
９０４：終わり
【００４２】
処理プログラム７００は、マトリクス・アレイのバッファ・メモリ・ユニット１４の第１行Ｉおよび第１カラムＪからの変換されていないグレイスケールピクセル値にアクセスすることから開始する。そして、プロセッサ２０は、現ピクセル（ＲIＣJ）について補正したグレイスケール値を計算する。補正されたグレイスケール値が一旦計算されると、プログラムは、現ピクセルについて、以下の数３の式を利用してバイナリ値を計算する。
【００４３】
（数３）
ＧI＞Ｔ、ＰI,J＝１  および  ＧI＜Ｔ、ＰI,J＝０
【００４４】
そして、現ピクセルについて決定されたバイナリは、変換されていないグレイスケール値に替えて、バッファ・メモリの現ピクセルの位置（Ｉ，Ｊ）に格納される。
【００４５】
そして、プログラムは、現在の行および現在のカラムにおける次のピクセルメモリの位置（Ｉ，Ｊ＋１）のグレイスケール値にアクセスするのに進む。次に、プログラムにより、プロセッサ２０は、直前にアクセスしたピクセル（Ｉ，Ｊ）をそのグレイスケール値からバイナリ値（ＧI）に変換することから、属性付き（attributed）誤差値を計算する。一旦属性付き誤差値が決定されると、プログラムは、直前のピクセルから発生する属性付き誤差値に進み、アクセスする。そして、プログラムにより、プロセッサ２０は、次のピクセル（Ｉ，Ｊ＋１）の補正されたグレースケール値を計算または決定する。補正されたグレースケール値が決定されると、プログラムは、図８Ａに示す次のステップに進み、数３の式を使用して位置（Ｉ，Ｊ＋１）の現ピクセルについてバイナリ値を計算する。そして、決定されたバイナリ値は、現ピクセルのメモリの位置（Ｉ，Ｊ＋１）に格納される。
【００４６】
ここで、図６に最もよく示すように、プログラムにより、次の行（Ｉ＋１）および第１または直前のカラム（Ｊ）の次のピクセルのグレースケール値が、アクセスされる。そして、第１のピクセルの位置（Ｉ，Ｊ）および第２のピクセルの位置（Ｉ，Ｊ＋１）からの属性付き誤差が計算される。ピクセルのメモリ位置（Ｉ，Ｊ）および（Ｉ，Ｊ＋１）から発生する決定された誤差値がアクセスされ、それによって、現ピクセル（Ｉ＋１，Ｊ）の補正されたグレースケール値を、次のステップで計算することができるようになる。一旦、現ピクセル（Ｉ＋１，Ｊ）の補正されたグレースケール値が計算されると、プログラムは、プロセッサに、図８Ｂに示す一般式を利用してその現ピクセル（Ｉ＋１，Ｊ）のバイナリ値を計算させる。そして、決定されたバイナリ値は、バッファ・メモリ１４の現位置（Ｉ＋１，Ｊ）に格納される。
【００４７】
再び図６に示すように、ここで、プログラムは第１の行（Ｉ）および次のカラム（Ｊ＋２）にある次のピクセルを処理する。この時、プログラムにより、プロセッサ２０は、メモリ位置（Ｉ，Ｊ＋２）にあるピクセルのグレースケール値にアクセスし、（Ｉ，Ｊ＋２）および（Ｉ＋１，Ｊ）における直前のピクセル変換から属性付きの誤差を計算する。そして、プログラムにより、位置（Ｉ，Ｊ＋３）の現ピクセルについて、補正されたグレースケール値が計算される。次に、プログラムは、以下の数４の式を利用して、現ピクセル（Ｉ，Ｊ＋２）のバイナリ値を計算する。
【００４８】
（数４）
ＧI,J+2＞Ｔ、ＰI,J+2＝１  および  ＧI,J+2＜Ｔ、ＰI,J+2＝０
【００４９】
次に、プログラムは、現メモリ位置（Ｉ，Ｊ＋２）に、決定されたバイナリ値を格納する。処理順は、図６および図７に最もよく示されるものと同様で、第１カラム（Ｊ）のすべてのピクセル情報が処理されるまで続く。そして、第１カラムにおける変換されたピクセル情報はマスキング・システムに転送され、そこでデータはプリントヘッド１６にゲートされる。
【００５０】
次に、プログラムは、図７Ｆに最もよく示されるように、変換されたサブカラム（部分列）情報がプリントヘッド１６の現在の掃引における最後のカラムであったか否かを判断する判断命令に進む。カラムが最後のカラムであった場合、プログラムは終了コマンドに進み、次の掃引の変換されていないデータがバッファ・メモリ１４にロードされるのを待つ。カラムが最後のカラムでなかった場合、プログラムは変換された画像情報の最後のカラムが印字の目的でプリントヘッド１６に転送されるまで、同様に、オン・ザ・フライでデータ処理を続ける。
【００５１】
そして、結論として、誤差伝搬は、どのピクセルの色誤差が、あるピクセルの色に影響を与えるかに関する。処理伝搬、または処理命令の流れは、各ピクセルが処理される順序である。例えば、以下の表２で示されるピクセル・アレイを想定する。
【００５２】
（表２）
ＡＢＣＤ
ＥＦＧＨ
ＩＪＫＬ
ＭＮＯＰ
【００５３】
カラム順序および通常の誤差拡散の両方が、同じ誤差伝搬アルゴリズムを採用する。例えば、ピクセルＧが処理される時、その色誤差は、処理される前にピクセルＨ、Ｊ、Ｋ、Ｌに伝搬される。ピクセルＧからの伝搬された誤差は格納されて、ピクセルＨ、Ｊ、Ｋ、Ｌが処理される時に、後でそれらの処理に使用することができるようにする。ピクセルＧが処理され、その色誤差が格納されると、次のピクセルが処理される。通常の（前進的な行の）誤差拡散では、次のピクセルはＨであるが、本発明の前進型カラム誤差拡散の開示した好ましい実施の形態では、次のピクセルはＪである。ピクセルＪの処理時、ピクセルＪの位置についての誤差（ピクセルＥ、Ｆ、Ｇ、Ｉから伝搬された誤差の格納された合計である）が、誤差バッファから読み出され、ピクセルＪの処理において利用される。ピクセルＪが処理される時、その色誤差は、ピクセルＫ、Ｍ、Ｎ、Ｏに伝搬される。誤差伝搬は、どのピクセルの色誤差が周囲のピクセルの位置に影響を与えるかを決定する。処理順により、いつこれらの誤差がこれらのピクセルの位置で画像ピクセルを処理するのに利用されるか決定される。
【００５４】
本発明の特定の実施の形態について開示してきたが、あらゆる異なる変形例が可能であり、添付の特許請求の範囲の真の精神および範囲内において考えられることが理解されるべきである。従って、ここで示す要約書または明細書に厳密に限定することは意図されていない。
【００５５】
【発明の効果】
以上のように、本発明を用いると、大きく高価なランダム・アクセス・メモリ記憶装置を使用する必要なく、パイプライン方式で、オン・ザ・フライで高速かつ効率的に変換および処理を行う誤差拡散処理が可能となる。
【図面の簡単な説明】
【図１】本発明の好ましい実施の形態に従って構成されたインクジェット・プリンタの斜視図である。
【図２】図１のインクジェット・プリンタに組込まれた誤差拡散システムの構成を示すブロック図である。
【図３】４×１６ピクセルのマトリクス・アレイ状に配置された画像データのスウォスを示す構成図である。
【図４】高さにおいて図３に示す画像データのスウォスに対応する１カラムのノズルを有するプリントヘッドの表面を示す図である。
【図５】図２の誤差拡散システムの一部を形成するバッファ・メモリ・ユニットにおけるピクセル画像データの記憶状態を示す図である。
【図６】画像データを処理し結果として生じる色の誤差を拡散する方法を説明する図である。
【図７】画像データを処理する際に図２の誤差拡散システムによって実行されるプログラムのフローチャートを示す図である。
【図８Ａ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【図８Ｂ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【図８Ｃ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【図８Ｄ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【図８Ｅ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【図８Ｆ】図７のフローチャートの一部分を詳細に示す部分フローチャートである。
【符号の説明】
１４：バッファ・メモリ、格納手段
１６：インクジェット・プリントヘッド
３０：印字媒体
４０：カラム
４２：ノズル
１０：インクジェット・プリンタ、誤差拡散システム
２０：コントローラ、プロセッサ
７００：制御プログラム
２０、７００：変換手段
【図１】
0003687772.tif 000002
【図２】
0003687772.tif 000003
【図３】
0003687772.tif 000004
【図４】
0003687772.tif 000005
【図５】
0003687772.tif 000006
【図６】
0003687772.tif 000007
【図７】
0003687772.tif 000008
【図８Ａ】
0003687772.tif 000009
【図８Ｂ】
0003687772.tif 000010
【図８Ｃ】
0003687772.tif 000011
【図８Ｄ】
0003687772.tif 000012
【図８Ｅ】
0003687772.tif 000013
【図８Ｆ】
0003687772.tif 000014