(57)【要約】【課題】マスクパターンを用いたマルチパス印字を行う画像形成装置において、パス間のドットの分散性が確保されないため、印字された画質が劣化する。【解決手段】各パスで印字する印字データを誤差拡散法によって算出する。すでに印字した画素については印字しないように、各パスで行う誤差拡散法に制約を指定する。また、各パスで印字されるドットが同程度になるように、印字デューティを設定する。【選択図】図９
2009262454.tif 000002
【特許請求の範囲】
【請求項１】
画像データを印字画素と非印字画素とを含む印字データに変換し、複数のパスに分割して印字する画像形成装置であって、
誤差拡散法により前記画像データを変換して第１の印字データと複数の第２の印字データとを生成する変換手段と、
前記複数の第２の印字データを印字する印字手段と
を備え、
前記変換手段は、
前記誤差拡散法によって前記画像データを前記第１の印字データに変換する第１の変換を行い、
前記第１の印字データにおける非印字画素を、前記第２の印字データにおける非印字画素として指定する制約データを生成し、
前記制約データを利用した前記誤差拡散法によって前記画像データを前記複数のパスのいずれかにおいてそれぞれ使用される前記複数の第２の印字データに変換する第２の変換を行い、
前記印字手段は、前記複数のパスのそれぞれにおいて、前記複数の第２の印字データのうち対応する第２の印字データを印字することにより、前記画像データの表す画像を形成する
ことを特徴とする画像形成装置。
【請求項２】
前記変換手段は、前記複数の第２の印字データのうち、
前記複数のパスのうち最も先行して行われるパスに使用される前記第２の印字データを、前記制約データを利用した誤差拡散法により前記画像データを変換して生成し、
該最も先行して行われるパスの後続パスに使用される前記第２の印字データを、前記後続パスに先行するすべてのパスにおける印字画素を非印字画素として更に指定した前記制約データを利用した誤差拡散法により前記画像データを変換して生成する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記変換手段は、前記複数の第２の印字データのうち最も後行して行われるパスに使用される前記第２の印字データにおける印字画素を、前記第１の印字データにおける印字画素のうち、該パスに先行するいずれのパスにおいても非印字画素となった画素とすることを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記第２の変換は、前記画像データの画素値に所定の定数を乗算して得られる画像データを変換することを特徴とする請求項１乃至３のいずれか１項に記載の画像形成装置。
【請求項５】
前記第２の変換は、変換後の画素値を所定の定数で除算した値と変換前の画素値との差分を誤差拡散法における誤差として用いることを特徴とする請求項１乃至３のいずれか１項に記載の画像形成装置。
【請求項６】
前記所定の定数は、パスの回数の逆数であることを特徴する請求項４又は５に記載の画像形成装置。
【請求項７】
前記制約データを記憶する記憶手段をさらに備え、
前記第２の変換は、前記記憶手段に記憶された前記制約データを利用する
ことを特徴とする請求項１乃至６のいずれか１項に記載の画像形成装置。
【請求項８】
前記変換手段は、前記第２の変換を行うごとに、該第２の変換に利用される前記制約データを生成することを特徴とする請求項１乃至６のいずれか１項に記載の画像形成装置。
【請求項９】
画像データを印字画素と非印字画素とを含む印字データに変換し、複数のパスに分割して印字する画像形成装置の制御方法であって、
変換手段が、誤差拡散法により前記画像データを変換して第１の印字データと複数の第２の印字データとを生成する変換工程と、
印字手段が、前記複数の第２の印字データを印字する印字工程と
を備え、
前記変換工程において、
前記誤差拡散法によって前記画像データを前記第１の印字データに変換する第１の変換を行い、
前記第１の印字データにおける非印字画素を、前記第２の印字データにおける非印字画素として指定する制約データを生成し、
前記制約データを利用した前記誤差拡散法によって前記画像データを前記複数のパスのいずれかにおいてそれぞれ使用される前記複数の第２の印字データに変換する第２の変換を行い、
前記印字工程において、前記複数のパスのそれぞれにおいて、前記複数の第２の印字データのうち対応する第２の印字データを印字することにより、前記画像データの表す画像を形成する
ことを特徴とする画像形成装置の制御方法。
【請求項１０】
コンピュータを請求項１乃至８のいずれか１項に記載の画像形成装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像形成技術に関し、特にマルチパス印字による画像形成技術に関する。
【背景技術】
【０００２】
インクジェットプリンタ等の画像形成装置で印刷を行うために、入力された多値画像データを誤差拡散法などによって二値化又は階調を落した印字データに変換する。さらに、ヘッドの特性やメカの制御誤差等によるドットのばらつきを目立たなくするために、１回のスキャンで印字可能な印字データの領域を複数回のパスに分割して印字する。この印字方法をマルチパス印字とよぶ。マルチパス印字を行うためには、印字データを複数のパス印字データに分割する必要がある。特許文献１には、パスごとに異なるマスクパターンを事前に用意し、マスクパターンと生成した印字データとの論理積を取得してパス印字データを算出する方法が記載されている。マルチパス印字では、各パス印字データの印字結果が印字データに等しくなる必要がある。そのため、マスクパターンは、任意の画素を何れか一つのマスクパターンに含むように生成される。各パスのパス印字データにおけるドットの分散性を高めるため、マスクパターンのドットに位置は極力ランダムになるように設計される。
【０００３】
特許文献１に記載の技術は、マルチパス印字を行うためのパス分割を事前に設定されたマスクパターンによって行う。一つのマスクパターンの大きさは、印刷する画像の画素数分の大きさが必要となり、ｎパスに分割する場合には、ｎ個のマスクパターンが必要となる。そのため、マスクパターンはプリンタ装置内の限られたメモリ領域を圧迫することになる。
【０００４】
また、事前に設定されたマスクパターンとは独立して印字データは作成される。マスクパターンは、印字データが各パスにランダムに割振られるように設計される。これに対し、印字データは、入力された画像に依存し、明るい部分では生成ドットは少なく、暗い部分では生成ドットが多くなるように生成される。入力に依存する印字データと無関係に設計されたマスクパターンとの間で、論理積を取ってパス分割を行う際に、印字データとマスクパターンとの干渉により理想的なパス分割にはならず、形成された画像の劣化を生じることがある。これは、入力に依存する印字データと印字データとは無関係に設計されたマスクパターンとの間で、論理積を取ってパス分割を行うために、パス間のドットの分散性が保証されないためである。例えば、パス分割を行った際に、あるパスでは印字ドット数が多く、別のパスでは印字ドット数が少ないといった不具合が起ることがある。以上により、マスクパターンを用いたマルチパス印字では、形成された画像が劣化する場合がある。
【特許文献１】特開平０５−０３１９２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、従来はパス印字データ間のドットの独立性・分散性を確保しつつ、マルチパス印字を行うことが困難であった。
【０００６】
そこで、本発明はパス印字データ間のドットの独立性・分散性を確保しつつ、マルチパス印字可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る画像形成装置は、
画像データを印字画素と非印字画素とを含む印字データに変換し、複数のパスに分割して印字する画像形成装置であって、
誤差拡散法により前記画像データを変換して第１の印字データと複数の第２の印字データとを生成する変換手段と、
前記複数の第２の印字データを印字する印字手段と
を備え、
前記変換手段は、
前記誤差拡散法によって前記画像データを前記第１の印字データに変換する第１の変換を行い、
前記第１の印字データにおける非印字画素を、前記第２の印字データにおける非印字画素として指定する制約データを生成し、
前記制約データを利用した前記誤差拡散法によって前記画像データを前記複数のパスのいずれかにおいてそれぞれ使用される前記複数の第２の印字データに変換する第２の変換を行い、
前記印字手段は、前記複数のパスのそれぞれにおいて、前記複数の第２の印字データのうち対応する第２の印字データを印字することにより、前記画像データの表す画像を形成する
ことを特徴とする。
【発明の効果】
【０００８】
本発明により、パス印字データ間のドットの独立性・分散性を確保しつつ、マルチパス印字を行うことが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、添付の図面を参照しながら本発明の実施形態について詳細に説明する。以下の実施形態では、画像形成装置の例としてプリンタを扱う。本明細書において「画像」とはプリンタによって記録紙などの印刷メディアに印刷される対象であり、文字や記号だけからなる文書等も含む。また、「印字」とはインク等を吐出して画像を形成することであり、文字を印刷するだけに限られない。
【００１０】
＜第１の実施形態＞
図１を用いて本発明に係るプリンタのハードウェア構成を説明する。図１は、プリンタ１００のハードウェア構成の一例を表すブロック図である。
【００１１】
プリンタ１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、二値化処理部１０６、印字処理部１０７、メカ制御部１０８、及びプリンタエンジン部１０９を備える。
【００１２】
ＣＰＵ１０１はプリンタ１００全体の制御を司る。ＲＯＭ１０２はＣＰＵ１０１が実行するプログラムやテーブルデータなどを格納する。ＲＡＭ１０３は変数やデータなどや、後述する誤差バッファ、制約バッファなどを記憶する。
【００１３】
二値化処理部１０６はプリンタ１００に入力された多値の入力画像データを印字可能な形式である二値の印字データに変換する。印字処理部１０７は印字データをプリンタエンジン部１０９に出力し、印字データの印字を行う。メカ制御部１０８は印字を行うためにプリンタエンジン部１０９を制御する。プリンタエンジン部１０９は、インクを吐出する複数のノズルを含むヘッド１１０や、紙送り機構１１１、キャリッジ送り機構などを備える。ヘッド１１０は、印字処理部１０７から入力された印字データに基づいてインクを吐出し、入力画像データを印刷する。
【００１４】
プリンタ１００は、ＵＳＢデバイスインターフェース１０４及びＵＳＢホストインターフェース１０５をさらに備える。ＵＳＢデバイスインターフェース１０４はパソコン１２０から画像データを受け付ける。ＵＳＢホストインターフェース１０５はデジタルカメラ１３０などから画像データを受け付ける。
【００１５】
デジタルカメラ１３０によって撮影された画像をプリンタ１００に直接送信し、印刷する例を説明する。デジタルカメラ１３０により撮影された画像は、圧縮されたＪＰＥＧデータとしてデジタルカメラ１３０内のメモリ（図示せず）に格納される。デジタルカメラ１３０は接続ケーブル１３１によりプリンタ１００のＵＳＢホストインターフェース１０５に接続される。デジタルカメラ１３０のメモリに格納されたＪＰＥＧデータは、ＵＳＢホストインターフェース１０５を介してプリンタ１００内のＲＡＭ１０３に一時的に記憶される。ＣＰＵ１０１はデジタルカメラ１３０から取得したＪＰＥＧデータを解凍して得られる入力画像データを再びＲＡＭ１０３に記憶する。
【００１６】
ＲＡＭ１０３に記憶された入力画像データは、二値化処理部１０６により印字可能な形式である印字データに変換され、さらにマルチパス印字を行うための複数の部分印字データが作成される。パス分割処理については後で詳しく述べる。部分印字データは、印字処理部１０７により、ヘッドの駆動順に合わせて、ヘッド１１０に送られる。メカ制御部１０８とこれにより制御されるプリンタエンジン部１０９とが同期して、インク滴が吐出することにより印刷メディア上に画像が形成される。
【００１７】
続いて、図２から図６を用いて誤差拡散法について説明する。
【００１８】
誤差拡散法は画像データを変換して情報量を低減する手法の一つである。本実施形態では画像データの各画素の画素値を二値化する場合を扱う。図２に示す画像データが入力画像データ２００として与えられたとする。図２は入力画像データの一例を説明する図である。入力画像データ２００の各画素には濃度に応じた画素値が与えられる。数値が大きいほど濃度が高いことを意味する。本実施形態において、各画素の画素値は８ビットの情報量を有するとし、画素値の取り得る範囲は０以上２５５以下の整数値とする。また、説明のために、ｘｙ座標系２０１を設定する。以後の画像データについても同様の座標系が設定されているものとする。
【００１９】
図３は、入力画像データ２００を誤差拡散法によって二値化した結果の印字データ３００の一例である。印字データ３００の各画素の画素値は０又は２５５のいずれかをとるとする。以下において、誤差拡散法より入力画像データを印字データに変換することを、「入力画像データを誤差拡散する」と表現することもある。
【００２０】
誤差拡散法は、各画素における二値変換で生じた誤差を周辺の画素の画素値に反映することで、画像データ全体としての誤差を最小にする方法である。誤差拡散法において二値化処理は画素ごとに逐次処理される。例えば、図２に示す入力画像データ２００の左上に位置する画素２０２から二値化処理を開始し、ｘ軸正方向の順に各画素の二値化処理を行う。入力画像データ２００の右端に位置する画素２０３まで二値化処理を完了したら、ｙ軸正方向の次の行の左端に位置する画素２０４から二値化処理を続ける。これを繰り返し、入力画像データ２００の右下の画素２０５まで二値化処理を行うことで、入力画像データ２００の二値変換を行う。これにより、各画素はドットが吐出される印字画素とドットが吐出されない非印字画素に分類される。
【００２１】
各画素（ｘ，ｙ）における二値化処理は以下の式（１）から（３）によって行われる。
B(x, y) = 255  （I’(x, y) ≧ Tの場合）  …(1)
B(x, y) = 0    （I’(x, y) ＜ Tの場合）  …(2)
（ただし、I’(x, y) = I(x, y) + Err(x, y)とする。）  …(3)
ここで、Ｉ（ｘ，ｙ）、Ｂ（ｘ，ｙ）はそれぞれ入力画像データ２００、印字データ３００の画素（ｘ，ｙ）のおける画素値である。また、Ｔは所定の閾値であり、画素値が０以上２５５以下の範囲の値を取り得る場合には、例えば１２８とする。Ｅｒｒ（ｘ，ｙ）は、画素（ｘ，ｙ）における累積誤差である。Ｉ´（ｘ，ｙ）は、累積誤差を反映した入力画像データ２００の画素（ｘ，ｙ）における画素値である。
【００２２】
図４は発生した誤差の拡散規則の一例を説明するための図である。図４（ａ）の画像データ４００は入力画像データ２００の一部に注目したものである。二値化処理により、累積誤差を反映した入力画像データ２００の画素値Ｉ´（ｘ，ｙ）は、二値の画素値Ｂ（ｘ，ｙ）に変換される。そのため、注目画素（ｘ，ｙ）４０１において、Ｉ´（ｘ，ｙ）−Ｂ（ｘ，ｙ）（＝Ｅと置く）の誤差が生じる。この誤差Ｅを周辺の画素のうち、二値化処理がまだ行われていない画素に拡散する。具体的には、以下の式（４）から（７）による処理を行う。
Err(x+1, y  ) = Err(x+1, y  ) + K1 * E …(4)
Err(x-1, y+1) = Err(x-1, y+1) + K2 * E …(5)
Err(x  , y+1) = Err(x  , y+1) + K3 * E …(6)
Err(x+1, y+1) = Err(x+1, y+1) + K4 * E …(7)
ここで、Ｋ１からＫ４は所定の定数である。好適な例では合計値が１になるように規定し、例えば、Ｋ１＝７／１６、Ｋ２＝３／１６、Ｋ３＝５／１６、及びＫ４＝１／１６とする。
【００２３】
累積誤差を反映した補正後の画素値Ｉ´（ｘ，ｙ）よりも二値データＢ（ｘ，ｙ）が小さい場合には、Ｅの値は正となり、周辺の画素における累積誤差を反映した画素値は増加する。それにより、画素値が増加した画素を二値化処理する場合に、入力画像データの画素値Ｉ（ｘ，ｙ）をそのまま閾値と比較するよりも、閾値を超えやすくなる。Ｅの値が負となる場合も同様のことが言える。これにより、画像データ全体で考えたときに、単純に画素値を閾値と比較して二値変換する場合に比べて、自然な印字データを作成することが可能となる。
【００２４】
例えば、図２に示す画素２０６の画素値は１５０であり、閾値の１２８を超えているが、周辺の画素で生じた誤差を反映した結果、図３に示す印字データ３００において、対応する画素３０１の画素値は０となる。本実施形態では注目画素において発生した誤差を周辺の四つの画素に拡散しているが、それ以上の個数の画素に拡散することも可能である。
【００２５】
なお、図４（ｂ）のように、注目画素（ｘ，ｙ）４１１が入力画像データ２００の左端に位置する場合には以下の式（８）から（１０）による処理を行う。
I(x+1, y  ) = I(x+1, y  ) + K1      * E …(8)
I(x  , y+1) = I(x  , y+1) + (K2+K3) * E …(9)
I(x+1, y+1) = I(x+1, y+1) + K4      * E …(10)
また、図４（ｃ）のように、注目画素（ｘ，ｙ）４２１が入力画像データ２００の右端に位置する場合には以下の式（１１）、（１２）による処理を行う。
I(x-1, y+1) = I(x-1, y+1) + K2         * E …(11)
I(x  , y+1) = I(x  , y+1) + (K1+K3+K4) * E …(12)
つづいて、図５を用いて制約が与えられた場合の誤差拡散法について説明する。図５は制約データ５００とそれに基づく印字データ５１０との一例を説明する図である。
【００２６】
制約とは、二値化処理において事前に指定された変換後の画素値のことである。例えば、入力画像データ２００に対する制約は、図５（ａ）に示す制約データ５００のような２次元配列で与えられる。制約データ５００の要素が入力画像データの画素に対応する。制約データ５００において、入力画像データの両端に位置するすべての画素における変換後の画素値が０に指定されている。そのため、この制約を利用して誤差変換を行った結果の印字データでは、両端に位置する画素の画素値がすべて０になる必要がある。例えば、制約データ５００を利用して、図２に示す入力画像データ２００の誤差拡散を行うと、図５（ｂ）に示す印字データ５１０が得られる。制約データ５００において画素値が指定されていない画素については、印字データ５１０において０又は２５５のいずれの値をとることができる。
【００２７】
制約が与えられた場合の誤差拡散法の処理について説明する。制約データ５００によって画素値が指定される画素については、式（１）から（３）による処理を行わずに、指定された画素値をそのまま印字データ５１０の画素値Ｂ（ｘ，ｙ）とする。制約が与えられていない画素については、制約が与えられない誤差拡散法と同様に、式（１）から（３）により二値化処理を行う。誤差の拡散については、制約の有無にかかわらず、式（４）から（１２）により処理を行う。その結果、図５（ｂ）に示す印字データ５１０が得られる。図３に示す制約が与えられない場合における印字データ３００とは異なる結果となる。
【００２８】
さらに、図６を用いて印字デューティが設定された場合の誤差拡散法について説明する。図６は印字デューティが設定された場合の印字データの一例を説明する図である。印字デューティとは印字率のことであり、ヘッド１１０により吐出されるドット数の割合を規定する。例えば、印字デューティが５０％に設定された場合の印字データは、印字デューティが設定されない場合又は１００％に設定された場合の印字データと比較して、吐出されるドット数が５０％となる。
【００２９】
印字デューティが設定された二値化処理を行うには、入力画像データ２００の各画素の画素値に印字デューディを乗算した値を画素値とする画像データ６００を誤差拡散すればよい。それにより、図６（ｂ）に示す印字データ６１０に変換される。印字データ６１０の印字で吐出されるドット数、つまり画素値が２５５である画素の数は、図３に示す印字データ３００の印字に使用されるドット数の約５０％となる。誤差拡散法では、二値化処理で生じた誤差を周辺の画素に拡散するため、変換前の入力画像データ２００の各画素値の合計と変換後の印字データ３００の各画素値の合計とはほぼ等しくなる。したがって、入力画像データ２００の各画素の画素値に印字デューティを乗算した画像データを誤差拡散すれば、所望の印字デューティを満たす印字データに変換できる。なお、式（１）及び（２）で用いる閾値Ｔは印字デューティ乗算後の画像データにおける画素値の範囲に合わせて設定するのが望ましい。例えば印字デューティが５０％の場合には、画素値の取りうる範囲は０以上１２７以下となるため、閾値Ｔを６４に設定する。以上が誤差拡散法についての説明である。
【００３０】
つづいて、図７を用いてマルチパス印字について説明する。図７はマルチパス印字を行った場合における画像形成の遷移の一例を説明する図である。マルチパス印字とは、紙などの印刷メディア７０２を複数の印字領域に分割し、それぞれの印字領域を複数回のヘッド１１０のスキャンに分けて印字を行う方法である。ヘッド１１０のスキャンとは、ヘッド１１０がインクを吐出しつつ、印刷メディア７０２上を走査することである。また、一つの印字領域に注目したスキャンをパスと呼ぶ。本実施形態では一つの印字領域を４回のスキャンに分けて印字する４パス印字を例として説明するが、パス数は４回に限定されるものではない。
【００３１】
複数のノズルを備えるヘッド１１０は矢印７０１の方向にスキャンを行い、各ノズルが印刷対象の印字データに基づいて印刷メディア７０２にインクを吐出する。スキャン終了後に紙送り機構１１１は矢印７０３の方向に印刷メディア７０２を所定の長さだけ紙送りする。
【００３２】
ｎ回のパスに分割するｎパス印字では、一般的にヘッド１１０に含まれるノズルをｎ個のグループに分割し、１回のスキャンごとに、ヘッド１１０の幅の１／ｎずつ紙送りする。これにより、印刷メディア７０２の各印字領域に対して、計ｎ回のスキャンが行われる。また、ｎ回のスキャンごとにヘッド１１０の幅ずつ紙送りしてもｎパス印字を行うことはできるが、本実施形態では扱わない。
【００３３】
本実施形態では４パス印字であるため、ヘッド１１０に含まれるノズルをノズル・グループＡ７０４からノズル・グループＤ７０７の四つに分割する。各ノズル・グループには同数のノズルが含まれるとする。例えば、ヘッド１１０に５１２個のノズルが含まれるとすると、各ノズル・グループには１２８個のノズルが含まれる。そして、図７（ａ）に示すように、１回目のスキャンでノズル・グループＡ７０４による印刷メディア７０２の第１の印字領域７０８に対する１パス目の印字を行い、紙送りする。
【００３４】
図７（ｂ）に示すように、２回目のスキャンで、第１の印字領域７０８に対してノズル・グループＢ７０５による２パス目の印字が行われ、第２の印字領域７０９に対してノズル・グループＡ７０４による１パス目の印字が行われる。
【００３５】
続いて、図７（ｃ）に示すように、３回目のスキャンで第１の印字領域７０８に対してノズル・グループＣ７０６による３パス目の印字が行われ、第２の印字領域７０９に対してノズル・グループＢ７０５による２パス目の印字が行われる。なお、簡略化のため、印刷メディア７０２の第３の印字領域以降については説明を省略するが、同様の処理が行われる。
【００３６】
続いて、図７（ｄ）に示すように、４回目のスキャンで第１の印字領域７０８に対してノズル・グループＤ７０７による４パス目の印字が行われ、第２の印字領域７０９に対してノズル・グループＣ７０６による２パス目の印字が行われる。以上の処理により、４回目のスキャンによって、印刷メディア７０２の第１の印字領域７０８に対する印字が完了する。これを繰り返すことで、印刷メディア７０２に対する印字が完了する。
【００３７】
マルチパス印字を行う際には、画素ごとに何番目のパスでインクを吐出するかを決定する必要があり、本発明ではこれを誤差拡散法により決定する。図８を用いて、誤差拡散法を用いたパス分割の方法の概要を説明する。図８は各パスにおいて与えられる制約と印字データとの遷移の一例を説明する図である。
【００３８】
まず、一つのノズル・グループが１回のスキャンで印字できる画素数に応じて、入力画像データを部分画像データに分割する。例えば、ノズル・グループに１２８個のノズルが含まれる場合には、ｙ軸方向に１２８画素を含み、ｘ軸方法にプリンタ１００の印字幅に等しい画素を含む部分画像データに分割する。図８に示す部分画像データ８００を例として扱う。部分画像データ８００は例えば図７に示す第１の印字領域７０８に印字される。
【００３９】
部分画像データ８００に対する１パス目の処理において、部分画像データ８００を制約なしで誤差拡散し、部分印字データに変換する。この部分印字データを全パス印字データ８０１と呼ぶ。第１の変換によって得られる第１の印字データである全パス印字データ８０１において画素値が２５５である画素が最終的にドットが吐出される画素となる。この段階では４回行われるスキャンのうち、いずれのスキャンにおいてドットが吐出されるかは未定であるが、いずれか１回のスキャンで必ずドットが吐出される。一方、全パス印字データ８０１において画素値が０である画素は、どのスキャンにおいても必ずドットが吐出されない。
【００４０】
さらに、最も先行するパスである１パス目の処理において、全パス印字データ８０１に基づいて１パス目制約データ８１０を定め、この制約を利用した誤差拡散により、部分画像データ８００を１パス目印字データ８１１に変換する。この第２の変換により、第２の印字データであるパスごとの印字データが得られる。この誤差拡散では印字デューティを２５％に設定する。１パス目印字データ８１１を１パス目のスキャンで印字する。さらに、１パス目印字データは後続パスの誤差拡散の制約としても利用される。
【００４１】
マルチパス印字においては、各パスにおいて吐出されるドット数が同程度になることが望ましい。そこで４パス印字の場合には、印字デューティを２５％として二値化処理を行い、得られた印字データを印字する。また、全パス印字データ８０１において画素値が０である画素については、１パス目印字データ８１１においても画素値が０となるべきである。そこで、全パス印字データ８０１の画素値が０の画素を、１パス目制約データ８１０において制約値を０に指定する。全パス印字データ８０１において画素値が２５５である画素については、１パス目印字データ８１１で２５５となってもよいし、以降のパスの印字データで２５５となってもよいので制約は指定しない。
【００４２】
次に２パス目の処理において、全パス印字データ８０１と１パス目印字データ８１１とに基づいて２パス目制約データ８２０を定め、この制約を与えた誤差拡散により、部分画像データ８００を２パス目印字データ８２１に変換する。この誤差拡散においても印字デューティを２５％に設定する。２パス目印字データ８２１を２パス目のスキャンで印字する。
【００４３】
デューティを２５％に設定するのは先程と同様の理由からである。また、全パス印字データ８０１において画素値が０である画素については、２パス目印字データ８２１においてもやはり画素値が０となるべきである。さらに、１パス目で印字された画素、すなわち１パス目印字データ８１１において画素値が２５５となる画素は、２パス目において印字する必要はない。そこで、１パス目印字データ８１１において画素値が２５５である画素の制約値を０とする制約を１パス目制約データ８１０に追加する。それにより、２パス目制約データ８２０が得られる。太枠で囲まれた要素は２パス目制約データ８２０において新たに制約が追加された要素である。
【００４４】
３パス目の処理においても同様に、全パス印字データ８０１、１パス目印字データ８１１、及び２パス目印字データ８２１に基づいて３パス目制約データ８３０を定める。誤差拡散の結果、部分画像データ８００は３パス目印字データ８３１に変換され、これを印字する。
【００４５】
最も後行するパスである４パス目の処理においては、誤差拡散を行わずに、全パス印字データ８０１のうち、３パス目までの処理でまだ印字されていない画素を印字する。先程と同様に作成した４パス目制約データ８４０で制約が指定されていない要素は、ドットを吐出すべき画素のうち、いままでのパスのいずれにおいてもドットが吐出されていない画素である。そこで、制約が指定されていない画素の画素値を２５５とした４パス目印字データ８４１を作成し、これを印字する。
【００４６】
以上により、部分画像データ８００を４パスに分割して印字できる。
【００４７】
つづいて、マルチパス印字の詳細を図９から図１５を用いて詳細に説明する。
【００４８】
図９は、二値化処理部９００の構成を表すブロック図の一例である。二値化処理部９００は図１に示す二値化処理部１０６に対応する。二値化処理部９００はＲＡＭ１０３から入力画像データの部分画像データの画素値９１０を逐次読み出す。印字デューティ設定部９０２は誤差拡散に用いる印字デューディを設定する。乗算器９０１は入力画像データの画素値９１０に印字デューティ設定部９０２が設定した印字デューティを乗算する。加算器９０３は、乗算器９０１の出力に誤差バッファ９３０から読み込んだ注目画素における累積誤差を加算する。閾値設定部９０４は誤差拡散で用いる閾値Ｔを設定する。二値データ出力部９０６は、加算器９０３から入力された画素値、閾値設定部９０４からの入力された閾値Ｔ、及び制約バッファ９２０から読み込んだ注目画素における制約値から、印字データの画素値９０９を算出し、出力する。制約処理部９０５は印字データの画素値９０９に基づいて、制約バッファ９２０が記憶する制約データを更新する。減算器９０７は二値データ出力部９０６からの出力と、加算器９０３からの出力との差分を取り、誤差処理部９０８に出力する。誤差処理部９０８は注目画素で発生した誤差を他の画素に拡散し、その結果をもとに誤差バッファ９３０を更新する。
【００４９】
制約バッファ９２０は誤差拡散で用いる制約データを記憶し、ＲＡＭ１０３に格納される。誤差バッファ９３０は各画素の累積した誤差を記録する、ＲＡＭ１０３に格納される。印字バッファ９４０は印字データの画素値９０９を記憶し、ＲＡＭ１０３に格納される。
【００５０】
つづいて、図１０を用いて二値化処理部９００の動作について説明する。図１０は二値化処理部９００の動作の一例を説明するフローチャートである。このフローチャートに基づく処理は、ＲＯＭ１０２に書き込まれたコンピュータプログラムをＣＰＵ１０１が実行することによって行われる。また、実行の一部をハードウェア的に行っても良い。
【００５１】
ステップＳ１００１で、二値化処理部９００は部分画像データの画素値９１０を読み出す。
【００５２】
ステップＳ１００２で、乗算器９０１は、印字デューティ設定部が設定した印字デューティを、部分画像データの画素値９１０に乗算し、加算器９０３に出力する。印字デューティ設定部は、入力画像データを全パス印字データに変換する場合には印字デューティを１００％とし、入力画像データを各パスの部分印字データに変換する場合には印字デューティを２５％に設定する。
【００５３】
ステップＳ１００３で、加算器９０３は、乗算器９０１からの入力に、誤差バッファ９３０から読み出した注目画素の累積誤差を加算し、二値データ出力部９０６に出力する。
【００５４】
ステップＳ１００４で、二値データ出力部９０６は制約バッファ９２０を参照して、注目画素に対して制約値が指定されているか否かを判定する。注目画素の制約バッファ９２０の値が０の場合は制約値が０に指定されているものとし、１の場合は制約値が指定されていないものとする。なお、誤差拡散を行う前に、制約バッファ９２０のすべての要素は１に初期化されているものとする。
【００５５】
制約が指定されている場合（ステップＳ１００４において「ＹＥＳ」）にはステップＳ１００６に移行して、二値データ出力部９０６は制約にしたがって０を出力する。
【００５６】
制約が指定されていない場合（ステップＳ１００４において「ＮＯ」）にはステップＳ１００５に移行する。
【００５７】
ステップＳ１００５で、二値データ出力部９０６は加算器９０３からの入力値と閾値設定部９０４が設定した閾値とを比較する。閾値設定部９０４は印字デューティに応じて閾値を設定する。例えば、印字デューティが１００％の場合には閾値を１２８とし、印字デューティが２５％の場合には閾値を３２とする。
【００５８】
加算器９０３からの入力の方が小さい場合（ステップＳ１００５において「ＹＥＳ」）には、ステップＳ１００６に移行する。ステップＳ１００６で、二値データ出力部９０６は０を出力する。
【００５９】
加算器９０３からの入力の方が小さくない場合（ステップＳ１００５において「ＮＯ」）には、ステップＳ１００７に移行する。ステップＳ１００７で、二値データ出力部９０６は２５５を出力する。
【００６０】
ステップＳ１００８で、制約バッファ９２０を更新する。入力画像データを全パス印字データに変換する誤差拡散の場合には、０が出力された画素の制約値を０に変更する。入力画像データを各パスの印字データに変換する誤差拡散の場合には、２５５が出力された画素の制約値を０に変更する。
【００６１】
ステップＳ１００９で、減算器９０７は注目画素で生じた誤差を算出し、誤差処理部９０８に入力する。誤差処理部９０８は入力された誤差を元に、式（４）から（１２）にしたがって注目画素の周辺の画素における累積誤差を更新する。
【００６２】
ステップＳ１０１０で、二値化処理部９００は部分画像データのすべての画素について二値化処理が終了したか否かを判定する。終了していない場合（ステップＳ１０１０において「ＮＯ」）には、ステップＳ１００１に戻り、次の画素を処理する。終了した場合（ステップＳ１０１０において「ＹＥＳ」）には、部分画像データの二値化処理を終了する。
【００６３】
つづいて、図１１と図１２とを用いて制約バッファ９２０の詳細について説明する。
【００６４】
図１１は制約バッファ９２０の構造の一例を説明する図である。一つの誤差拡散に使用される制約データを記憶する制約記憶領域は、ｘ軸方向要素数１１０１がプリンタ１００の印字幅に等しく、ｙ軸方向要素数１１０２が一つのノズル・グループに含まれるノズル数に等しい。ｎパス印字において、同時に行われる誤差拡散は最大でｎ個であるため、制約バッファ９２０はｎ個の制約データを記憶できれば良い。ここで、ｎパス印字では、ヘッド１１０をｎ個のノズル・グループに分割するため、制約バッファ９２０のｙ軸方向要素数１１０３はヘッドの含まれるノズル数に等しい。つまり、制約バッファ９２０には、プリンタ１００の印字幅×ヘッドのノズル数の領域が必要となる。各領域には１ビットの情報が保持される。
【００６５】
図１２は入力画像データを二値変換する際における制約バッファ９２０の遷移の一例を説明する図である。本実施形態では４パス印字を例として扱う。制約バッファ９２０は第１の制約記憶領域１２０１から第４の制約制約記憶領域１２０４に分割される。
【００６６】
１回目のスキャンにおいて、第１の部分画像データについての制約なしの誤差拡散と１パス目の誤差拡散とが行われる。これらの誤差拡散に必要な制約データが第１の制約記憶領域１２０１に記憶される。第１の制約記憶領域１２０１には、例えば図８に示す１パス目制約データ８１０が記憶される。以上の結果、制約バッファ９２０の状態は、制約バッファ１２１０のようになる。
【００６７】
２回目のスキャンにおいて、第１の部分画像データについての２パス目の誤差拡散が行われる。この誤差拡散に必要な制約データは第１の制約記憶領域１２０１に記憶されている制約データを更新したものである。第１の制約記憶領域１２０１には、例えば図８に示す２パス目制約データ８２０が記憶される。また、第２の部分画像データについての制約なしの誤差拡散と１パス目の誤差拡散とが処理される。これらの誤差拡散に必要な制約データを第２の制約記憶領域１２０２に記憶される。以上の結果、制約バッファ９２０の状態は、制約バッファ１２２０のようになる。
【００６８】
３回目のスキャン、４回目のスキャンにおいても同様の処理を行い、スキャン終了後の制約バッファ９２０の状態は、それぞれ制約バッファ１２３０、１２４０となる。
【００６９】
４回目までのスキャンをもって第１の部分画像データの印字は終了しているため、第１の制約記憶領域１２０１に記憶されている第１の部分画像データに関する制約データは必要ない。そこで、５回目のスキャンにおいて、第５の部分画像データについての１パス目の誤差拡散に必要な制約データを第１の制約記憶領域１２０１に記憶する。
【００７０】
以上のように、制約バッファ９２０をリングバッファのように用いて、それぞれの誤差分散に必要な制約データを記憶する。なお、４回目のスキャンにおいて、第１の部分画像データについての４パス目の処理を、第４の部分画像データについての１パス目の処理に先立って行うことで、第１の制約記憶領域１２０１に第４の部分画像データに必要な制約を記憶させることができる。これにより、制約バッファ９２０に必要な領域を、制約記憶領域一つ分だけ節約することが可能となる。
【００７１】
つづいて、図１３と図１４とを用いて制約バッファ９２０の詳細について説明する。
【００７２】
図１３は誤差バッファ９３０の構造の一例を説明する図である。ｎパス印字においては、全パス印字データ、及び１パス目印字データからｎ−１パス目印字データを算出するための合計ｎ回の誤差拡散が１回のスキャンごとに処理される。前述の通り、ｎパス目印字データへの変換は誤差拡散を用いない。図４を用いて説明したとおり、本実施形態における誤差拡散では、注目画素を含む行と、その次の行に誤差が拡散される。そのため、一つの誤差拡散で必要となる誤差バッファ９３０の誤差記憶領域は、ｘ軸方向要素数１３０１がプリンタ１００の印字幅、ｙ軸方向要素数が２となる。したがって、誤差バッファ９３０のｙ軸方向要素数１３０３は２ｎとなる。以上より、ｎパス印字で必要となる誤差バッファ９３０には、プリンタ１００の印字幅×２ｎの領域が必要となる。一つの領域には累積誤差が取りうる値に合わせたビット数が必要となる。なお、この必要な領域は誤差を拡散する周辺の画素の範囲によって変動する。
【００７３】
図１４は入力画像データを二値変換する際における誤差バッファ９３０の遷移の一例を説明する図である。本実施形態では４パス印字を例として扱う。誤差バッファ９３０は第１の誤差記憶領域１４０１から第４の誤差記憶領域１４０４に分割される。
【００７４】
１回目のスキャンにおいて、第１の部分画像データを全パス印字データと１パス目印字データとに変換する誤差拡散を行う。これらの誤差拡散において、部分画像データは共通するものの、制約及び印字デューティが異なるために、別々の誤差記憶領域が必要となる。そこで、それぞれの誤差を第１の誤差記憶領域１４０１、第２の誤差記憶領域１４０２に記憶する。
【００７５】
２回目のスキャンにおいて、第１の部分画像データを２パス目印字データに変換する誤差拡散及び第２の部分画像データを全パス印字データと１パス目印字データとに変換する誤差拡散を行う。ここで、第２の部分画像データを全パス印字データに変換する誤差拡散と、１回目のスキャンで行った第１の部分画像データを全パス印字データに変換する誤差拡散は同一の条件で行われる。そのため、１回目のスキャンで全パス印字データの変換において用いた誤差データを、第２の部分画像データを全パス印字データに変換する誤差拡散において引き継いで使用する。それにより、第２の部分画像データにおいて１行目に含まれる画素の二値化もそれ以前の画素の処理で生じた誤差を反映して行うことができる。第１の画像データについての１パス目の誤差拡散と、第２の部分画像データについての２パス目の誤差拡散とについても同様の関係が成り立つ。第１の部分画像データについての２パスの誤差については、第３の誤差記憶領域１４０３に記憶する。以降のスキャンについても同様に誤差バッファ９３０を使用する。前述の通り、４パス印字においては誤差バッファ１４３０に示すとおり四つの誤差記憶領域があれば足りる。
【００７６】
最後に図１５を用いて入力画像データのマルチパス印字について説明する。図１５は入力画像データをマルチパス印字するフローチャートの一例である。このフローチャートに基づく処理は、ＲＯＭ１０２に書き込まれたコンピュータプログラムをＣＰＵ１０１が実行することによって行われる。また、実行の一部をハードウェア的に行っても良い。
【００７７】
ステップＳ１５０１で、プリンタ１００は印刷のための準備を行う。例えば、デジタルカメラ１３０等から入力画像データを読み出し、ＲＡＭ１０３に書き込む。また、紙送り機構１１１が印刷メディアを所定の位置まで紙送りする。なお、入力画像データは一括してＲＡＭ１０３に書き込んでも良いし、印字対象の部分画像データごとにＲＡＭ１０３に書き込んでも良い。
【００７８】
ステップＳ１５０２で変数ｉを１に初期化する。変数ｉは全体で何番目のスキャンを処理しているかを表す。
【００７９】
ステップＳ１５０３で、第ｉの部分画像データを誤差拡散し、全パス印字データに変換する。変換後の印字データは例えば図８で示した全パス印字データ８０１に対応する。全パス印字データへの変換は図１０に示したフローチャートの処理に従う。この処理において、制約は特に指定されず、印字デューティは１００％に設定される。
【００８０】
ステップＳ１５０４で、変数ｊを１に初期化する。変数ｊは１回のスキャンにおいて何回目の部分画像データの二値化処理であるかを表す。
【００８１】
ステップＳ１５０５で、第ｉ＋１−ｊの部分画像データをｊパス目印字データに変換する。例えば、ｉ＝３、ｊ＝１であったとする。この場合、３回目のスキャンにおいて、１回目の部分画像データの二値変換を行うことになる。ここでは、第３の部分画像データを１パス目印字データに変換する。ｊパス目印字データへの変換は図１０に示したフローチャートの処理に従う。この処理において、制約バッファ９２０に記憶された制約データを用いて、印字デューティは２５％を用いる。二値変換データを印字バッファ９４０に記憶する。
【００８２】
ステップＳ１５０６で、ｊとｎとが一致するか否かを判定する。ここで、ｎはパス数である。４パス印字の場合にはｎ＝４となる。
【００８３】
ステップＳ１５０６においてｊ≠ｎの場合（ステップＳ１５０６において「ＮＯ」）には、ステップＳ１５０７においてｊの値を１だけ増分して、ステップＳ１５０５に戻る。ステップＳ１５０７において、例えばｉ＝３、ｊ＝２となり、第２の部分画像データを２パス目印字データに変換する。二値変換データを印字バッファ９４０に記憶する。
【００８４】
ステップＳ１５０６においてｊ＝ｎの場合（ステップＳ１５０６において「ＹＥＳ」）には、ステップＳ１５０８において、第ｉ＋１−ｎの部分画像データをｎパス目印字データに変換する。この二値変換は先に説明したとおり、誤差分散は用いずに、制約バッファ９２０に記憶されている制約データから算出される。
【００８５】
ステップＳ１５０９で、プリンタエンジン部１０９は印字バッファ９４０に記録された印字データに基づいてヘッド１１０をスキャンして印刷メディアに印字を行う。４パス印字の場合には、四つの部分画像データの印字が同時に行われる。
【００８６】
ステップＳ１５１０で、入力画像データの印字が完了したか否かを判定する。
【００８７】
印字が完了していない場合（ステップＳ１５１０において「ＮＯ」）には、ステップＳ１５１１で紙送り機構１１１が所定の長さだけ印刷メディアを紙送りし、ステップＳ１５１２でｉの値を１だけ増分して、ステップＳ１５０３に戻る。
【００８８】
印字が完了した場合（ステップＳ１５１０において「ＹＥＳ」）には、処理を終了する。
【００８９】
以上により、本実施形態では、各パスの印字データ間のドットの独立性・分散性を確保しつつ、マルチパス印字を行うことが可能となる。
【００９０】
なお、本実施形態において、各パスの誤差拡散における印字デューティをすべて２５％に設定したが、他の設定を用いても各パスにおいて吐出されるドット数を均等にすることは可能である。図１６を用いて他の設定を説明する。図１６は各パスにおいて与えられる制約と印字データとの遷移の一例を説明する図である。
【００９１】
図８を用いた説明と同様にして、部分画像データ１６００を全パス印字データ１６０１に変換し、１パス目制約データ１６１０を作成する。
【００９２】
次に、１パス目制約データ１６１０を制約として、印字デューティを７５％に設定して二値化処理を行う。その結果、部分画像データ１６００は１パス目印字データ１６１１に変換される。その後、全パス印字データ１６０１における画素値が２５５であるが１パス目印字データ１６１１における画素値が０となる画素を１パス目で印字する。これにより、１パス目において、全パス印字データのうち２５％のドットを印字できる。また、１パス目で印字した画素の制約値を０とする制約を１パス目制約データ１６１０に追加して、２パス目制約データ１６２０を作成する。
【００９３】
次に、２パス目制約データ１６２０を制約として、印字デューティを５０％に設定して二値化処理を行う。その結果、部分画像データ１６００は２パス目印字データ１６２１に変換される。そして、１パス目印字データ１６１１における画素値が２５５であるが、２パス目印字データ１６２１における画素値が０となる画素を２パス目で印字する。これにより、２パス目において、全パス印字データのうち２５％のドットを印字できる。また、２パス目で印字した画素の制約値を０とする制約を２パス目制約データ１６２０に追加して、３パス目制約データ１６３０を作成する。
【００９４】
同様に、印字デューティを２５％に設定して３パス目印字データ１６３１を作成し、２パス目印字データ１６２１と３パス目印字データ１６３１との差分を印字する。
【００９５】
最後に４パス目において、４パス目制約データ１６４０で設定値が設定されていない画素を印字する。
【００９６】
以上により、全パス印字データ１６０１を、ドット数が均等となる４パスに分割して印字することが可能となる。
＜第２の実施形態＞
第１の実施形態では、誤差拡散を行うための制約データを制約バッファ９２０に記憶した。しかし、制約バッファ９２０はヘッド１１０のノズル数×プリンタ１００の印字幅の領域を必要とするため、ノズル数や印字幅が増加すると、ＲＡＭ１０３を圧迫することになる。そこで、本実施形態では、制約バッファ９２０を用いずに誤差拡散法を用いてマルチパス印字を行う方法を説明する。
【００９７】
本実施形態においても各パスの誤差拡散に用いられる制約データや印字される印字データは図８に示す例の通りである。しかし、制約データを制約バッファ９２０に記憶させないようにするため、１回のスキャンで印字するパスについて必要なすべての誤差拡散を毎回行う。
【００９８】
例えば、あるスキャンにおいて、部分画像データ８００の２パス目印字データ８２１を印字する場合を考える。本実施形態では、制約バッファ９２０に記憶された２パス目制約データ８２０から制約値を取得することができない。２パス目制約データ８２０において制約値が０となる画素は、全パス印字データ８０１において画素値が０となり、１パス目印字データ８１１において画素値が２５５となる画素である。そこで、２パス目印字データ８２１に変換する誤差拡散を行う際に、全パス印字データ８０１を算出する誤差拡散及び１パス目印字データ８１１を算出する誤差拡散も同時に行い、２パス目印字データ８２１を算出する誤差拡散にそれらの出力を使用する。
【００９９】
本実施形態における二値化処理部１０６について図１７を用いて説明する。図１７は制約バッファを用いない二値化処理部１０６の構成の一例を説明するブロック図である。図９に示す二値化処理部９００と同じ動作をする要素は同じ参照番号を付して説明を省略する。
【０１００】
図１に示す二値化処理部１０６は複数の二値化処理部で構成される。一つの二値化処理部が一つの誤差拡散を行う。例えば、図１７に示す第１の二値化処理部１７００が部分画像データ８００を全パス印字データ８０１に変換する誤差拡散を行う。また、第２の二値化処理部１７１０が部分画像データ８００を１パス目印字データ８１１に変換する誤差拡散を行う。いずれの誤差拡散においても入力画像データは共通のため、入力画像データの画素値９１０はすべての二値化処理部に入力される。各二値化処理部は第１の実施形態で説明したのと同様の動作を行う。しかし、第２の二値化処理部１７１０において、制約データは制約バッファから取得するのではなく、第１の二値化処理部１７００の出力値１７０１を使用する。第２の二値化処理部１７１０からの出力値１７１１が１パス目印字データ８１１の画素値となる。
【０１０１】
同様に、２パス目印字データ８２１を出力する場合には、三つの二値化処理部が必要となる。他のパスの印字データにおいても、必要な誤差拡散の回数分の二値化処理部が必要となる。
【０１０２】
つづいて、図１８を用いて本実施形態における二値化処理部１０６の動作について説明する。図１８は二値化処理部１０６の動作の一例を説明するフローチャートである。このフローチャートに基づく処理は、ＲＯＭ１０２に書き込まれたコンピュータプログラムをＣＰＵ１０１が処理することによって行われる。また、処理の一部をハードウェア的に行っても良い。
【０１０３】
ステップＳ１８０１で、部分画像データの画素値９１０を読み出し、すべての二値化処理部に含まれる乗算器９０１に入力する。続いて、第１の二値化処理部１７００に対してステップＳ１８０２からステップＳ１８０８までの処理を実行し、第１の誤差拡散を行う。
【０１０４】
ステップＳ１８０２で、乗算器９０１は、印字デューティ設定部が設定した印字デューティを、部分画像データの画素値９１０に乗算し、加算器９０３に出力する。印字デューティ設定部は、入力画像データを全パス印字データに変換する場合には印字デューティを１００％とし、入力画像データを各パスの部分印字データに変換する場合には印字デューティを２５％に設定する。
【０１０５】
ステップＳ１８０３で、加算器９０３は、乗算器９０１からの入力に、誤差バッファ９３０から読み出した注目画素の累積誤差を加算し、二値データ出力部９０６に出力する。
【０１０６】
ステップＳ１８０４で、他の二値化処理部に含まれる二値データ出力部９０６からの出力値に基づいて、注目画素に対して制約値が指定されているか否かを判定する。第１の二値化処理部１７００は他の二値化処理部に含まれる二値データ出力部９０６からの出力を受けない。これは、全パス印字データを算出する誤差拡散では制約が指定されないことに対応する。
【０１０７】
制約が指定されている場合（ステップＳ１８０４において「ＹＥＳ」）にはステップＳ１８０６に移行して、二値データ出力部９０６は制約にしたがって０を出力する。
【０１０８】
制約が指定されていない場合（ステップＳ１８０４において「ＮＯ」）にはステップＳ１８０５に移行する。
【０１０９】
ステップＳ１８０５で、二値データ出力部９０６は加算器９０３からの入力値と閾値設定部９０４が設定した閾値とを比較する。閾値設定部９０４は印字デューティに応じて閾値を設定する。例えば、印字デューティが１００％の場合には閾値を１２８とし、印字デューティが２５％の場合には閾値を３２とする。
【０１１０】
加算器９０３からの入力の方が小さい場合（ステップＳ１８０５において「ＹＥＳ」）には、ステップＳ１８０６に移行する。ステップＳ１８０６で、二値データ出力部９０６は０を出力する。
【０１１１】
加算器９０３からの入力の方が小さくない場合（ステップＳ１８０５において「ＮＯ」）には、ステップＳ１８０７に移行する。ステップＳ１８０７で、二値データ出力部９０６は２５５を出力する。出力値は他の二値化処理部に入力されるか、印字バッファ９４０に入力される。
【０１１２】
ステップＳ１８０８で、減算器９０７は注目画素で生じた誤差を算出し、誤差処理部９０８に入力する。誤差処理部９０８は入力された誤差を元に、式（４）から（１２）にしたがって注目画素の周辺の画素における累積誤差を更新する。
【０１１３】
ステップＳ１８０９で、すべての誤差拡散が終了したか否かを判定する。例えば、全パス印字データを算出する場合には、１回の誤差拡散を行うだけでよいし、２パス目印字データを算出する場合には、３回の誤差拡散を行う必要がある。
【０１１４】
すべての誤差拡散が終了した場合（ステップＳ１８０９において「ＹＥＳ」）には、ステップＳ１８１０に移行する。終了していない誤差拡散がある場合（ステップＳ１８０９において「ＮＯ」）には、次の誤差拡散を行うため、次の二値化処理部においてステップＳ１８０２からの処理を繰り返す。
【０１１５】
ステップＳ１８１０で、二値化処理部１０６は部分画像データのすべての画素について二値化処理が終了したか否かを判定する。終了していない場合（ステップＳ１８１０において「ＮＯ」）には、ステップＳ１８０１に戻り、次の画素を処理する。終了した場合（ステップＳ１８１０において「ＹＥＳ」）には、部分画像データの二値化処理を終了する。
【０１１６】
入力画像データのマルチパス印字については第１の実施形態において説明した図１５のフローチャートと同様であるため、説明を省略する。
【０１１７】
以上により、本実施形態では、ＲＡＭ１０３に記憶されるデータ量を抑制しながらも、各パスの印字データ間のドットの独立性・分散性を確保しつつ、マルチパス印字を行うことが可能となる。本実施形態においても誤差バッファ９３０は必要となる。しかし、図１３を用いて説明したとおり、誤差バッファ９３０は制約バッファ９２０と比較してサイズが小さいので影響は少ない。
【０１１８】
なお、第１の実施形態と同様に、本実施形態においても各パスにおける印字デューティをすべて２５％に設定する以外の設定を用いても、各パスにおいて吐出されるドット数を均等にすることは可能である。
【０１１９】
＜第３の実施形態＞
本実施形態では、二値化処理部の別の形態を説明する。図９に示す二値化処理部９００において、入力画像データに対して印字デューティを乗算する。印字デューティは１以下の数値であるため、回路で実現した場合に丸め誤差が生じてしまう。この丸め誤差を防ぐため、図１９に示す二値化処理部１９００では乗算器９０１の代わりに除算器１９０１を用いる。図１９は二値化処理部１９００の構成の一例を説明するブロック図である。
【０１２０】
図１９において、図９に示す二値化処理部９００と同じ機能を有する要素は同じ参照番号を付して説明を省略する。除算器１９０１は二値データ出力部９０６からの出力を印字デューティで除算して、減算器９０７に入力する。印字デューティは１以下のため、除算器１９０１は、印字デューティの逆数を掛けることになる。これは、除算器１９０１への入力値を左にビットをシフトすることに等しい。例えば、印字デューティが２５％の場合、２ビット分をシフトすることになる。この結果、入力画像データに対して印字デューティ設定部９０２に設定された小数点の乗算を行う二値化処理部９００と比較して、丸め誤差の影響を少なくすることが出来る。
【０１２１】
二値化処理部１９００によっても設定した印字デューティに応じた印字データに変換することは可能である。二値データ出力部９０６からの出力が０の場合には、印字デューティの値にかかわらず、誤差Ｅの値は変わらない。しかし、出力が２５５の場合には、印字デューティの値が小さいほど、誤差Ｅの値は大きくなる。出力が２５５の場合には誤差Ｅは負の値になるため、印字デューティの値が小さいほど、周辺の画素における累積誤差を反映した画素値は小さくなる。そのため、印字データ全体として、印字デューティの値が小さいほど、画素値が２５５となる画素数が少なくなる。
【０１２２】
＜その他の実施形態＞
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１２３】
また、本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【０１２４】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【０１２５】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施形態におけるプリンタ１００のハードウェア構成の一例を表すブロック図である。
【図２】本発明の実施形態における入力画像データの一例を説明する図である。
【図３】本発明の実施形態における入力画像データ２００を誤差拡散法によって二値化した結果の印字データ３００の一例である。
【図４】本発明の実施形態における発生した誤差の拡散規則の一例を説明するための図である。
【図５】本発明の実施形態における制約データ５００とそれに基づく印字データ５１０との一例を説明する図である。
【図６】本発明の第１及び第２の実施形態における印字デューティが設定された場合の印字データの一例を説明する図である。
【図７】本発明の実施形態におけるマルチパス印字を行った場合の画像形成の遷移の一例を説明する図である。
【図８】本発明の実施形態における各パスにおいて与えられる制約と印字データとの遷移の一例を説明する図である。
【図９】本発明の第１の実施形態における二値化処理部９００の構成を表すブロック図の一例である。
【図１０】本発明の第１の実施形態における二値化処理部９００の動作の一例を説明するフローチャートである。
【図１１】本発明の第１の実施形態における制約バッファ９２０の構造の一例を説明する図である。
【図１２】本発明の第１の実施形態における入力画像データを二値変換する際の制約バッファ９２０の遷移の一例を説明する図である。
【図１３】本発明の実施形態における誤差バッファ９３０の構造の一例を説明する図である。
【図１４】本発明の実施形態における入力画像データを二値変換する際における誤差バッファ９３０の遷移の一例を説明する図である。
【図１５】本発明の実施形態における入力画像データをマルチパス印字するフローチャートの一例である。
【図１６】本発明の第２の実施形態における各パスにおいて与えられる制約と印字データとの遷移の一例を説明する図である。
【図１７】本発明の第２の実施形態における二値化処理部１０６の構成の一例を説明するブロック図である。
【図１８】本発明の第２の実施形態における二値化処理部１０６の動作の一例を説明するフローチャートである。
【図１９】本発明の第３の実施形態における二値化処理部１９００の構成の一例を説明するブロック図である。
【符号の説明】
【０１２７】
１００  プリンタ
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＵＳＢデバイスインターフェース
１０５  ＵＳＢホストインターフェース
１０６  二値化処理部
１０７  印字処理部
１０８  メカ制御部
１０９  プリンタエンジン部
１１０  ヘッド
１１１  紙送り機構
１２０  パソコン
１３０  デジタルカメラ
１３１  接続ケーブル
【図１】
2009262454.tif 000003
【図２】
2009262454.tif 000004
【図３】
2009262454.tif 000005
【図４】
2009262454.tif 000006
【図５】
2009262454.tif 000007
【図６】
2009262454.tif 000008
【図７】
2009262454.tif 000009
【図８】
2009262454.tif 000010
【図９】
2009262454.tif 000011
【図１０】
2009262454.tif 000012
【図１１】
2009262454.tif 000013
【図１２】
2009262454.tif 000014
【図１３】
2009262454.tif 000015
【図１４】
2009262454.tif 000016
【図１５】
2009262454.tif 000017
【図１６】
2009262454.tif 000018
【図１７】
2009262454.tif 000019
【図１８】
2009262454.tif 000020
【図１９】
2009262454.tif 000021