(57)【要約】【課題】多値画像を２値化画像に変換して印刷する際に、少ないメモリ容量で即座に印刷を開始できる画像処理方法を提供する。【解決手段】本発明の画像処理方法は、画像ブロックを２値化した際にはＹ方向の後の画像ブロックに伝播する誤差を第２のブロック伝播誤差群Ｅｇ２を記録し、画像ブロックを２値化した際にはＸ方向の後の画像ブロックに伝播する誤差を第１のブロック伝播誤差群Ｅｇ１として記録する。したがって、ある画像ブロックＢ５を２値化する際には予め記録されている第１の伝播誤差群Ｅｇ１および第２のブロック伝播誤差群Ｅｇ２を利用することにより、画像ブロックＢ５に対する２値化処理を余計な誤差計算を行うことなく即座に開始できる。これにより、多値画像を２値化画像に変換して印刷する際に、少ないメモリ容量で高速の印刷が可能となる。【選択図】        図１
2004260770.tif 000002
【特許請求の範囲】
【請求項１】
２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群および第２の方向に先行するドットから伝播する第２の誤差群を利用する画素処理工程を有し、この画素処理工程は、
当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、前記第１の方向の前記先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群から前記第１の誤差群を選択可能とする第１の入力工程と、
前記第２の方向の前記先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群から前記第２の誤差群を選択可能とする第２の入力工程と、
当該画像ブロックに対して後で２値化される前記第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第１のブロック伝播誤差群として記録する第１の出力工程と、
前記第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第２のブロック伝播誤差群として記録する第２の出力工程とを備えている画像処理方法。
【請求項２】
請求項１において、前記画素処理工程では、前記第１の方向の前記先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を当該画像ブロックの前記第２の方向に隣接するドットに伝播し、前記第２の方向の前記先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を当該画像ブロックの前記第１の方向に隣接するドットに伝播する、画像処理方法。
【請求項３】
２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群および第２の方向に先行するドットから伝播する第２の誤差群を利用する画素処理部と、
当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、前記第１の方向の前記先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群から前記第１の誤差群を選択可能とする第１のデータ入力部と、
前記第２の方向の前記先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群から前記第２の誤差群を選択可能とする第２のデータ入力部と、
当該画像ブロックに対して後で２値化される前記第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第１のブロック伝播誤差群として記録する第１のデータ出力部と、
前記第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第２のブロック伝播誤差群として記録する第２のデータ出力部とを有する画像処理装置。
【請求項４】
請求項３において、前記第１の誤差群を格納する第１のメモリと、前記第２の誤差群を格納する第２のメモリとを有し、
前記第１のデータ入力部は、前記第１のブロック伝播誤差群を前記第１のメモリにセットし、前記第２のデータ入力部は、前記第２のブロック伝播誤差群を第２のメモリにセットする画像処理装置。
【請求項５】
請求項３において、前記画素処理部は、前記第１の方向の前記先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を当該画像ブロックの前記第２の方向に隣接するドットに伝播し、前記第２の方向の前記先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を当該画像ブロックの前記第１の方向に隣接するドットに伝播する画像処理装置。
【請求項６】
請求項３に記載の画像処理装置と、この画像処理装置により２値化された画像データを印刷する手段とを有する印刷装置。
【請求項７】
２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群が記録された第１のメモリの値、および第２の方向に先行するドットから伝播する第２の誤差群が記録された第２のメモリの値を利用する画素処理工程をコンピュータで実行する命令を有し、さらに、この画素処理工程は、
当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、前記第１の方向の前記先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群を前記第１のメモリにセットして前記第１の誤差群を利用可能とする第１の入力工程と、
前記第２の方向の前記先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群を前記第２のメモリにセットして前記第２の誤差群を利用可能とする第２の入力工程と、
当該画像ブロックに対して後で２値化される前記第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第１のブロック伝播誤差群としてストレージに記録する第１の出力工程と、
前記第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を前記第２のブロック伝播誤差群としてストレージに記録する第２の出力工程とを備えている、画像処理用プログラム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、多値画像を２値化画像に変換する画像処理方法に関するものである。
【０００２】
【従来の技術】
多値の画像を２値化画像に変換する方法として誤差拡散法が知られている。この誤差拡散法は、ある１つの画素（またはドット、ピクセル）を注目画素としたときに、この注目画素で生じた濃度誤差を周囲の画素に振り分け、全体として誤差が最小になるようにしている。
【０００３】
【特許文献１】
特開２００２−７７６１２号公報
【０００４】
【発明が解決しようとする課題】
誤差拡散法では、誤差を周囲の画素、すなわち、誤差を２次元の方向に拡散するので、ある範囲に含まれるドットは誤差拡散の影響を受ける。したがって、ライン毎に印刷するなどのシーケンシャルな動作を伴う印刷方法であると、誤差が拡散する範囲と、あるタイミングで印刷する範囲（たとえば、ライン幅）とが、すべてのタイミングにおいて矛盾することなく解決されていないと、誤差の伝播が中断されることになり画質が劣化する。すなわち、ある範囲を印刷するタイミングでは、その範囲の誤差拡散による２値化処理が終了していると共に、誤差が伝播する他の範囲においても２値化処理が終了している必要がある。このためには、十分に大きな容量のメモリを用意し、誤差拡散と印刷処理との間に、処理時間および処理データ量に十分な余裕ができるようなシステムおよび制御方法を採用する必要がある。その結果、印刷処理が誤差拡散の制約を受けて待たされることになるので、印刷を開始するタイミングが遅くなり、それが印刷速度の低下として感じられることになる。この問題は処理速度の速い高価なＣＰＵあるいは専用ＬＳＩを用いて誤差拡散の処理速度を上げることにより向上できるかもしれないが、ハードウェアのコストが高騰してしまう。
【０００５】
誤差拡散の範囲とは独立して、あるタイミングで印刷されるライン幅などの印刷する単位と同じあるいはそれに近い、ある有限の範囲または限定された範囲のデータを任意に誤差拡散できるようになれば、その有限の範囲に対して誤差拡散処理が終了したら即座に印刷処理を開始できる。このような処理を実現できれば、必要なメモリ容量も小さくて済み、印刷速度を上げることができる。
【０００６】
特開２００２−７７６１２号公報に開示された方法では、ブロック単位で誤差拡散処理を開始するために、ある注目画素の近傍の数ドット前の画素に遡って注目画素に伝播されるべき誤差を擬似的に計算してから注目画素の処理を開始する。
【０００７】
しかしながら、この方法であると、有限の範囲を誤差拡散をするために、その周りのデータを必要とし、重なり合う部分の誤差拡散を繰り返し計算することになるので、有限の範囲を小さくすればするほど、誤差拡散の計算量は増加する。したがって、ブロック単位で２値化できるというメリットはあり、メモリ容量を低減できる可能性があるが、ページ全体でみると、誤差拡散の処理時間は増加するのでページ全体の印刷速度は低下する。
【０００８】
一方、誤差拡散の処理時間の増加を低減するために、数ドット前の画素に遡って擬似的な誤差を計算する量を減らすと、誤差の拡散する範囲は限定されたものとなる。したがって、ページ全体にわたり誤差を拡散する処理とは異なり、ブロック単位で処理する誤差にギャップが生ずるために筋が入るなどの画質の劣化が生じる。
【０００９】
そこで、本発明においては、ある有限の範囲、すなわちブロック毎のデータを個別に誤差拡散でき、少ないメモリ容量で２値化処理ができると共に、印刷を開始するタイミングを早めて印刷速度を高めることができる画像処理方法および画像処理装置を提供することを目的としている。また、ブロック毎に筋が入るなどの画質を劣化させることなく多値画像を２値化画像に変換して高速で印刷できる画像処理方法および画像処理装置を提供することも本発明の目的である。
【００１０】
【課題を解決するための手段】
本発明においては、ブロック単位で２値化する際に、それぞれのブロックから２次元方向に伝播する誤差をブロック伝播誤差として適当なストレージに記憶し、そのブロック伝播誤差の影響を受ける他のブロックを２値化する際に、ブロック伝播誤差を使用してブロック単位で２値化できるようにしている。
【００１１】
このため、本発明の画像処理方法は、２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群および第２の方向に先行するドットから伝播する第２の誤差群を利用する画素処理工程を有し、この画素処理工程は、当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、第１の方向の先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群から第１の誤差群を選択可能にする第１の入力工程と、第２の方向の先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群から第２の誤差群を選択可能にする第２の入力工程とを備えている。さらに、画素処理工程は、当該画像ブロックに対して後で２値化される第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を第１のブロック伝播誤差群として記録する第１の出力工程と、第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を第２のブロック伝播誤差群として記録する第２の出力工程とを備えている。これら第１および第２の入力工程は同時に行っても良い。また、第１および第２の出力工程を同時に行うことが可能である。
【００１２】
この画像処理方法は、２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群および第２の方向に先行するドットから伝播する第２の誤差群を利用する画素処理部と、当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、第１の方向の先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群から第１の誤差群を選択可能にする第１のデータ入力部と、第２の方向の先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群から第２の誤差群を選択可能にする第２のデータ入力部と、当該画像ブロックに対して後で２値化される第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を第１のブロック伝播誤差群として記録する第１のデータ出力部と、第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を第２のブロック伝播誤差群として記録する第２のデータ出力部とを有する画像処理装置を用いることにより実行できる。
【００１３】
第１の誤差群を格納する第１のメモリと、第２の誤差群を格納する第２のメモリとを有する画像処理装置においては、第１のデータ入力部は、第１のブロック伝播誤差群を第１のメモリにセットし、第２のデータ入力部は、第２のブロック伝播誤差群を第２のメモリにセットする。誤差群に複数の誤差値が含まれる場合は、個々にセットしても良く、一群のデータをセットすることも可能である。
【００１４】
本発明の画像処理は、上記の処理を行う専用回路を備えたＬＳＩで実行することも可能であり、また、コンピュータまたは汎用のＣＰＵを備えた汎用ＬＳＩにおいて行うことも可能である。コンピュータまたは汎用のＣＰＵを用いて本発明の処理を実行させるプログラムとしては、２次元画像を複数に分割した画像ブロックを構成する各ドットを２値化する際に、第１の方向に先行するドットから伝播する第１の誤差群が記録された第１のメモリの値、および第２の方向に先行するドットから伝播する第２の誤差群が記録された第２のメモリの値を利用する画像処理工程をコンピュータで実行する命令を有し、さらに、この画像処理工程は、当該画像ブロックに対して先行して２値化された先の画像ブロックの誤差拡散の影響を受けるドットについては、第１の方向の先の画像ブロックを２値化する際に求められた第１のブロック伝播誤差群を第１のメモリにセットして第１の誤差群を利用可能とする第１の入力工程と、第２の方向の先の画像ブロックを２値化する際に求められた第２のブロック伝播誤差群を第２のメモリにセットして第２の誤差群を利用可能とする第２の入力工程と、当該画像ブロックに対して後で２値化される第１の方向の後の画像ブロックに含まれるドットに伝播する誤差を第１のブロック伝播誤差群としてストレージに記録する第１の出力工程と、第２の方向の後の画像ブロックに含まれるドットに伝播する誤差を第２のブロック伝播誤差群としてストレージに記録する第２の出力工程とを備えているプログラムを提供する。
【００１５】
この画像処理プログラムは、ＲＯＭなどの適当な記録媒体に記録して提供することができ、パーソナルコンピュータにインストールしたり、ＣＰＵで実行可能にすることにより、本発明の画像処理方法を実行できる。この画像処理用プログラムは、インターネットなどのコンピュータネットワークを介して提供することも可能である。
【００１６】
あるドットを２値化処理すると、誤差が周囲のドット、すなわち、２次元方向に伝播する。このため、ある方向を第１の方向、それに直交する方向を第２の方向としたとき、複数のドットが含まれる長方形あるいは正方形の画像ブロックを２値化すると、後の画像ブロックに伝播する誤差は、第１の方向に伝播する誤差は第２の方向に連なった誤差群となり、第２の方向に伝播する誤差は第１の方向に連なった誤差群となる。本発明の画像処理装置および画像処理方法では、先行する画像ブロックを２値化した際に、これら２つの方向の誤差群を第１のブロック伝播誤差群と第２のブロック伝播誤差群として記録する。したがって、後続の画像ブロックを２値化する際には、それに隣接する、先行する画像ブロックの第１および第２のブロック伝播誤差群が用意されている。このため、再計算しなくても、その画像ブロックに含まれるドットを２値化処理のために必要な誤差が既に準備されており、さらに、その誤差は先行する画像ブロックを２値化処理した誤差なので精度の高い誤差群である。したがって、これらの第１および第２のブロック伝播誤差群から後続の画像ブロックの各ドットを２値化する第１および第２の誤差群を選択することにより、後続の画像ブロックに含まれるドットの２値化処理を即座に、そして精度良く実行できる。
【００１７】
このため、本発明の画像処理方法により、冗長な処理を経ずに限られた範囲の画像ブロックを独立して２値化処理することが可能となる。すなわち、画像ブロックを２値化するために数ドット前に遡って擬似的な誤差を計算する処理は不要であり、その擬似的な誤差による画像ブロック間の偏差の発生も防止できる。したがって、本発明の画像処理方法により、有限の範囲を独立して２値化できるので、印刷処理を開始するタイミングを早くすることができる。さらに、第１および第２のブロック伝播誤差群を記憶するだけで後続の画像ブロックに誤差を伝播できるので、誤差伝播のために必要なメモリあるいはストレージの容量を低減できる。
【００１８】
したがって、本発明の画像処理装置と、この画像処理装置により２値化された画像データを印刷する手段とを有する印刷装置により、２値化処理された画像を少ないメモリ容量で素早く印刷を開始できる印刷装置を提供できる。
【００１９】
誤差拡散は２次元方向に伝播するので、誤差伝播関数によっては、第１の方向の先の画像ブロックに含まれるドットに伝播する誤差や、第２の方向の先の画像ブロックに含まれるドットに伝播する誤差も発生することがある。このような誤差の伝播を無視すると、画像ブロックの境界における誤差に偏差が発生するので画像ブロックの境界に筋が入るなどの画質の劣化を招く。しかしながら、先行する画像ブロックに後続する画像ブロックから誤差を戻すことは不可能である。
【００２０】
そこで、本発明においては、後続の画素ブロックの画像処理工程において、第１の方向の先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を画像ブロックの第２の方向に伝播し、第２の方向の先の画像ブロックに含まれるドットに伝播する誤差があれば、その誤差を画像ブロックの第１の方向に隣接するドットに伝播するようにする。先行する画素ブロックに反映される誤差を先行する画素ブロックとの境界をなすドットに伝播することにより先行する画像ブロックとの間の誤差の偏差を抑制することが可能となり、画像ブロックの境界で筋が発生することを防止できる。したがって、本発明の画像処理方法は、先行する画像ブロックに誤差が伝播するような誤差伝播関数を用いた２値化処理にも適応でき、筋やむらのない高画質の２値化画像を印刷できる。
【００２１】
【発明の実施の形態】
以下に図面を参照して本発明をさらに詳しく説明する。図１に本発明に係る画像処理方法の概要を示してある。この画像処理方法では、多値の２次元画像１０をマトリクス状に長方形あるいは正方形の複数の画像ブロックＢに分割して２値化する。したがって、各々の画像ブロックＢには複数のドットが含まれている。なお、以下の説明では、第１の方向をＸ方向、行方向または横方向、第２の方向をＹ方向、列方向または縦方向とする。
【００２２】
図１において、左上から右下に向けて２値化処理する場合、あるドットを処理する際は、Ｘ方向に先行するドット（図面の左側において隣接するドットであって、左側のドットだけではなく、この左側の上下のドットを含む）から伝播する誤差と、さらに、Ｙ方向に先行するドット（図面の上側において隣接するドットであって、真上のドットだけではなく、その真上のドットの左右のドットを含む）から伝播する誤差を含めて２値化する。
【００２３】
図２に誤差マトリクスの一例を示してある。この誤差マトリクス１８では、あるドットｄ０を２値化処理する際に発生した誤差の１／１６、３／１６、および５／１６がＸ方向に伝播し、７／１６がＹ方向に伝播する。このため、図１に示した画像ブロックＢ５を２値化する際は、画像ブロックＢ５を構成する各ドットのうち、左に隣接する画像ブロックＢ４との境界となる１列分のドットと、上に隣接する画像ブロックＢ２との境界となる１行分のドットとは少なくとも先行して２値化された画像ブロックＢ４およびＢ２から伝播される誤差の影響を受けることになる。
【００２４】
本発明に係る画像処理方法では、ある画像ブロック（たとえば画像ブロックＢ２）を２値化した際に、Ｘ方向の後続の画像ブロック（たとえば画像ブロックＢ３）に含まれるドットに伝播する誤差を第１のブロック伝播誤差群Ｅｇ１として記録する。また、その画像ブロックＢ２を２値化した際に、Ｙ方向の後の画像ブロック（たとえば画像ブロックＢ５）に含まれるドットに伝播する誤差を第２のブロック伝播誤差群Ｅｇ２として記録する。したがって、本発明の画像処理方法によれば、各画像ブロックＢ１〜Ｂ９を、各画像ブロック毎に２値化処理することが可能である。このため、ブロックＢ１〜Ｂ９を、ブロックＢ１、Ｂ２の順番で２値化しても良く、ブロックＢ１、Ｂ４の順番で２値化することも可能である。また、ブロック伝播誤差群Ｅｇ１およびＥｇ２を記憶すれば、他の画像ブロックに対する誤差伝播は処理される状況となるので、後続の他の画像ブロックの２値化処理を待たずに先行する画像ブロックのデータを印刷したり、破棄することができる。さらに、いったんブロック伝播誤差群Ｅｇ１およびＥｇ２が記憶されれば、その後はどの画像ブロックからであっても必要に応じて２値化することができる。したがって、本発明の画像処理方法によれば、画像の２値化を狭い範囲でほぼ独立して実行できるようになるので、２値化後のデータをすべて記憶しておくようなメモリ容量は不要であり、また、誤差伝播が終了するまですべてのドットにおける誤差を保存するようなメモリ容量も不要となる。
【００２５】
この画像処理方法は、画像を部分的に２値化する処理のすべてにおいて有用であるが、特に、画像を、Ｙ方向を走査方向として印刷する際に、画像ブロックをＢ１、Ｂ２の方向に２値化しなくても良く、画像ブロックＢ１、Ｂ４の方向に２値化できるので印刷をスタートする時間を大幅に短縮できるというメリットがある。さらに、画像ブロックＢ１、Ｂ４の順番で印刷するときに、本来の２値化処理の順番にそって、画像ブロックＢ２、Ｂ３を２値化してそれらをデータとして保持していなくても良いので、メモリ容量も大幅に削減できる。
【００２６】
図３に、本発明の画像処理方法により２値化したデータを印刷するプリンタを示してある。本例のプリンタ１は、パーソナルコンピュータなどのホスト装置やデジタルカメラなどの周辺機器から多値の画像データφ１を取得して、２値化して印刷する。画像データφ１は、コンパクトフラッシュ（登録商標）やメモリスティック（登録商標）などのストレージに入出力可能なインターフェイス、またはホスト装置との通信を可能とするＵＳＢなどの通信インターフェイス１１を介して得ることができる。多値画像データφ１がＪＰＥＧなどの適当なフォーマットで圧縮されている場合は、それを伸長する機能も本例のプリンタ１は備えている。
【００２７】
プリンタ１は、印刷用紙２にインク滴を吐出する複数のノズル３を備えた印刷ヘッド４と、この印刷ヘッド４をシャフト５に沿って紙幅方向に往復動するためのモータ７と、印刷用紙２を紙送り方向にフィードするローラ６を駆動するためのモータ８を有している。また、プリンタ１は、ＣＰＵ、ＲＡＭ、ＲＯＭなどによって構成される制御部１２を有しており、この制御部１２によりモータ７および８が制御され、さらに、ノズル３からインク滴を吐出するタイミングが制御される。プリンタ１はメモリ１３を備えており、このメモリ１３は、インターフェイス１１から取得した多値画像データφ１を記録する部分１３ｃ、第１および第２のブロック伝播誤差群を記録する部分１３ａ、２値化された印刷データφ２を記憶する部分１３ｂを備えている。さらに、プリンタ１は、ブロック内のドットを２値化する際の伝播誤差を記録するレジスタ群ＲＳＧを備えている。このレジスタ群ＲＳＧは、メモリ１３の一部を用いて実現することも可能である。また、ブロック伝播誤差群Ｅｇ１およびＥｇ２を共通のメモリ１３に記録しており、第１のブロック伝播誤差群Ｅｇ１が記録される領域が第１のメモリに相当し、第２のメモリブロック伝播誤差群Ｅｇ２が記録される領域が第２のメモリに相当する。
【００２８】
制御部１２は、多値画像データφ１を２値化して印刷用データφ２に変換する画像処理装置１５と、印刷データφ２に基づいてモータ７、８およびヘッド４を制御してプリントアウトする機構制御部１６とを備えている。画像処理装置１５は、画像データφ１を複数に分割した画像ブロックの単位で２値化する画素処理部２１と、ドットを縦方向に拡大する機能２５ａおよびドットを横方向に拡大する機能２５ｂを備えた拡大処理部２５と、後続の画像ブロックに伝播する誤差（ブロック伝播誤差群Ｅｇ１およびＥｇ２）をメモリに出力する誤差データ出力部２３と、メモリ１３に記録されているブロック伝播誤差群Ｅｇ１およびＥｇ２を、画像ブロックを２値化する際に用いられるワーク用のレジスタ群に初期セットする誤差データ入力部２２とを有している。
【００２９】
本例の画像処理装置１５においては、後述するように、Ｙ方向にブロック間で伝播する誤差Ｅｇ２を入力するＹ方向の誤差データ入力部（第２のデータ入力部）２２ｙと、Ｙ方向にブロック間で伝播する誤差Ｅｇ２を出力するＹ方向の誤差データ記憶部（第２のデータ出力部）２３ｙとがハードウェアで実現され、画素処理部２１と共に１つのチップ２９に搭載されている。一方、Ｘ方向にブロック間で伝播する誤差群Ｅｇ１を入力するＸ方向の誤差データ入力部（第１のデータ入力部）２２ｘと、Ｘ方向にブロック間で伝播する誤差群Ｅｇ１を出力するＸ方向の誤差データ記憶部（第１のデータ出力部）２３ｘとはソフトウェアにより実現されている。
【００３０】
すなわち、上位の印刷用のアプリケーションあるいはファームウェアにより実現されるＸ方向の誤差データ入力部２２ｘにより、所望の画像ブロックを２値化する際に、その画像ブロックＢの２値化に必要なブロック伝播誤差群Ｅｇ１がワーク用のＸ方向の伝播誤差を記憶するレジスタ群ＲＳＧにセットされる。また、上位の印刷用のアプリケーションあるいはファームウェアにより実現されるＸ方向の誤差データ出力部２３ｘにより、その画像ブロックの２値化が終了するとレジスタ群ＲＳＧの値をブロック間で伝播する誤差群Ｅｇ１としてメモリ１３に出力される。
【００３１】
図４に画像処理装置１５の概略を示してある。本例の画像処理装置１５は、画像ブロックの単位で画像データφ１を２値化する画素処理部２１が、１つの画像処理用のチップ（ＬＳＩあるいはＡＳＩＣ）２９として提供されており、レジスタ群ＲＳＧをワーキング用のメモリとして利用して２値化を行う。この画像処理チップ２９は、Ｘ方向に３２ドット、Ｙ方向に４ドットの区画を１つの画像ブロックＢとして処理する。レジスタ群ＲＳＧは、誤差値（たとえば８ビット）ＥＲｎ（ｎは０〜３３）を保持可能な３４個のレジスタを備えている。すなわち、Ｙ方向のドットの個数より２つ多い３４個のレジスタ群ＲＳＴｎがＸ方向に伝播する誤差（第１の誤差群）を記憶するために用意されている。その他に３つのレジスタＲＳＴ３４、ＲＳＴ３５およびＲＳＴ３６が他のブロックとの境界領域のドットの誤差を伝播するために設けられている。
【００３２】
また、この画像処理チップ２９は、Ｙ方向の誤差データ入力部２２ｙと、Ｙ方向の誤差データ出力部２３ｙと、Ｙ方向に伝播する誤差（第２の誤差群）を記憶するためのレジスタ（フリップフロップ）ＲＳＴ３９を備えている。レジスタＲＳＴ３９に対しては、最初のＹ方向のドットを処理する際に、すなわち、最初のＲＯＷの処理の前に、誤差データ入力部２２ｙにより、Ｙ方向にブロック間で伝播する誤差（第２のブロック伝播誤差）Ｅｇ２がセットされる。また、誤差データ出力部２３ｙにより、最後のＹ方向のドットを処理した後、すなわち、最後のＲＯＷの処理の後にＹ方向に続く画像ブロックＢに伝播する誤差がメモリ１３に出力される。第２のブロック伝播誤差Ｅｇ２の入出力を一括して行い、メモリ１３とのアクセス時間を短くするために、第２のブロック伝播誤差Ｅｇ２を一時的にストアするレジスタ群を設けることも可能であり、そのレジスタ群とメモリ１３との入出力を第１のブロック伝播誤差Ｅｇ１と同様にソフトウェアで行うことも可能である。
【００３３】
本例では、画像処理部２１はＹ方向に連続するドット、すなわち列方向に連続する一連のドットを処理し、列の処理が終了すると行方向に１つ移動して次の列方向に連続した一連のドットを処理する。あるドットから隣接するドットに伝播させる誤差は、図２に示した誤差マトリクス１８に従う。したがって、画素処理部２１は、画像データφ１を２値化処理した際に発生した誤差から、３／１６誤差ＥＡ、５／１６誤差ＥＢ、１／１６誤差ＥＣ、７／１６誤差ＥＤを生成する。これらの誤差のうち、７／１６誤差ＥＤを除いた３つの誤差ＥＡ、ＥＢおよびＥＣは、行方向に隣接する次の列のドットに伝播するものであり、画像処理チップ２９から第１の伝播誤差としてレジスタ群ＲＳＴｎに出力される。レジスタ群ＲＳＴｎのレジスタＲＳＴ０〜３３の内の３２個は次の列のドットに対応付けられており、前の列の１つのドットから斜め上方向に伝播される誤差ＥＡ、横方向に伝播される誤差ＥＢ、斜め下方向に伝播される誤差ＥＣの伝播は、その都度、対応するのレジスタＲＳＴ０〜３３の内に３２個で加算される。したがって、画像処理部２１において１つの列の処理が終了するレジスタＲＳＴ０〜３３の内の３２個には次の列のドットに対してＸ方向に伝播する第１の誤差群が用意される。
【００３４】
一方、７／１６誤差ＥＤは下のドットに伝播するものであり、画像処理チップ２９の内部において、レジスタＲＳＴ３９を介して次の列方向に続くドットの２値化処理の入力として利用される。
【００３５】
図５（ａ）に、画素処理部２１とレジスタ群ＲＳＧとの関係を示してある。Ｘ方向への誤差を一時的に記憶するレジスタ群ＲＳＴｎ（ｎは０〜３３）は、画素処理部２１が、図示したようにチェーン状に連続してアクセスできるようにアレンジされている。すなわち、最終のレジスタＲＳＴ３３に続いてレジスタＲＳＴ０にアクセスできるようになっている。したがって、このレジスタ群ＲＳＴｎをサイクリックに使用して、前に計算された誤差を失わずに、次の列に伝播する誤差を蓄積することができる。たとえば、最初の列の１番目のドット（０）から３２番目のドット（３１）の誤差はレジスタＲＳＴ０〜３３の内、レジスタＲＳＴ０〜３１にセットする。レジスタＲＳＴ０に記憶されていたＥＲ０を利用してドット０を２値化処理した誤差のＥＡ成分は、レジスタＲＳＴ３２に出力し、ＥＢ成分はレジスタＲＳＴ３３に出力し、ＥＣ成分はレジスタＲＳＴ０に出力する。レジスタＲＳＴ３２および３３は利用されていないので、すでにセットされている誤差群に影響を与えることなく記憶できる。レジスタＲＳＴ０の誤差はすでに利用されたので、このレジスタＲＳＴ０を書き換えても問題はない。
【００３６】
このようにドット（０）からドット（３１）までの２値化処理を行うと、Ｘ方向に伝播する第１の誤差群はレジスタＲＳＴ０〜３３のうち、レジスタＲＳＴ３３からレジスタＲＳＴ３０に格納される。したがって、図５（ｂ）に示すように、次の列を２値化処理するときはレジスタＲＳＴ３３〜３０をＥＲ０〜３１として利用することにより、同一の回路、すなわち、同一の画素処理部２１により前の列の誤差を利用して２値化処理を実行できる。この際、最後のドット（３１）から斜め下方向に伝播される成分ＥＣは、レジスタＲＳＴ３６に記憶され、次の列の最後のドット（３１）から下方に伝播される成分ＥＤとの合計が下方の画像ブロックに伝播されるブロック伝播誤差Ｅｇ２としてＹ方向の誤差データ出力部２３ｙから出力される。したがって、ドット（３１）を計算した際にレジスタＲＳＴ３１に出力されるデータは意味を持たず、次の列の誤差計算においては無視される。
【００３７】
また、ドット（０）を計算した際にレジスタＲＳＴ３２に出力されるＥＡ成分は、本来、先行する画像ブロックに反映される誤差データであり、そのままでは意味を持たない。したがって、次の列の誤差計算においては無視される。その代わり、本例においては、レジスタＲＳＴ３５に出力してストアし、１つ後の列の最初のドット（０）に７／１６（すなわちドット（０）の誤差の３／１６×７／１６）を伝播させ、２つ後の列の最初のドット（０）に残りの３／１６（すなわちドット（０）の誤差の３／１６×９／１６×３／１６）を伝播させる。これにより、先行する画像ブロックの最終行のドットに本来反映させる誤差から伝播する誤差をこの画像ブロックの先頭行、すなわち、先行する画像ブロックとの境界のドット行に反映させることができる。
【００３８】
図４に示した画像処理チップ２９の構成をさらに詳しく説明する。画像処理チップ２９に搭載された画素処理部２１は、画素値と誤差値の和から２値化データを計算する２値化部５０と、２値化されなかった誤差から、他のドットの伝播する誤差を計算する誤差処理部４０とを備えている。２値化部５０は、レジスタＲＳＴ３９を介してＹ方向に伝播される誤差成分ＥＤ（第２の誤差群）が設定されるアキュームレータ５１と、レジスタ群ＲＳＴｎを介してＸ方向に伝播される誤差成分ＥＡ〜ＥＣの和（第１の誤差群）が設定されるアキュームレータ５２と、アキュームレータ５１および５２の和を計算する加算器５４と、メモリ１３から該当するドットの８ビットの画像データを取得する画像データ入力部５３と、加算器５４から出力された誤差と、入力された画像データの和を計算する加算器５５と、加算器５５の出力を閾値により２値化する演算器５６と、２値化されたデータをメモリ１３に出力する出力部５８と、２値化されなかった誤差が設定されるアキュームレータ５７とを備えている。
【００３９】
誤差処理部４０は、２値化部５０で２値化した際に求められたアキュームレータ５７の８ビットの誤差を、１／４誤差、１／８誤差、１／１６誤差に分配する演算器４１、４２および４３と、演算器４２で算出された１／８誤差と、演算器４３で算出された１／１６誤差を加算して３／１６の誤差成分ＥＡを生成する加算器４４と、演算器４１で算出された１／４誤差と、演算器４３で算出された１／１６誤差を加算して５／１６の誤差ＥＢを生成する加算器４５と、演算器４２で算出された１／８誤差と、加算器４５で生成された５／１６誤差を加算して７／１６の誤差成分ＥＤを生成する加算器４６とを備えている。１／１６の誤差成分ＥＣは演算器４３の出力が用いられる。また、これらの誤差ＥＡ〜ＥＤを所定のレジスタに出力する出力回路部４７ａ〜４７ｄを備えている。
【００４０】
さらに、画素処理部２１は、境界領域の誤差を計算する境界値処理部６０を備えている。この例では、先行する画像ブロックとの関係において、Ｙ方向、すなわち、斜め上方向に伝播する誤差の処理が残される。したがって、レジスタＲＳＴ３５に格納された１つ前の列の最初のドット（０）の誤差値から７／１６の値を求める演算器６１と、その残りをレジスタＲＳＴ３４に出力する演算器６３と、レジスタＲＳＴ３４に格納された２つ前の列のドット（０）の誤差の残りから３／１６を計算する演算器６２とを備えている。演算器６１の出力と演算器６２の出力は、Ｙ方向の誤差データ入力回路２２ｙにおいて、加算器６５によりブロック伝播誤差Ｅｇ２の値と加算されて最初のドット（０）の誤差値としてレジスタＲＳＴ３９に格納される。
【００４１】
また、画像処理チップ２９には、Ｙ方向の誤差データ入力回路２２ｙと共にＹ方向の誤差データ出力回路２３ｙが搭載されている。誤差データ出力回路２３ｙは、レジスタＲＳＴ３６に格納された１つ前の列の最終ドット（３１）から斜め下方に伝達される誤差成分ＥＣと、その列の最終ドット（３１）から下方に伝播される誤差成分ＥＤとの和を計算する加算器６６を備えており、この加算器６６の出力がＹ方向に続く後続の画像ブロックに伝播するブロック伝播誤差群Ｅｇ２としてメモリ１３に記憶される。
【００４２】
図６にプリンタ１における印刷処理のフローチャートを示してある。まず、ステップ７１において、印刷指示があってから、ステップ７２において、２値化前の画像データ（多値画像のデータ）が取得されると、ステップ７３において、印刷モードが確認される。たとえば、等倍の印刷、４倍に拡大した印刷、８倍に拡大した印刷などの印刷サイズのモードが確認される。等倍モードにおいては、１つの８ビットの画素データが１ドットに変換されて印刷される。４倍モードにおいては、１つの８ビットの画素データが縦４ドット、横４ドットに拡大して印刷される。したがって、この４倍モードにおいては縦４ドットおよび横４ドットを画素処理部２１において計算する際に画素アキュームレータ５３に入力される値は同じになる。８倍モードにおいては、１つの８ビットの画素データが縦８ドット、横８ドットに拡大して印刷される。これらの横方向および縦方向の拡大は拡大処理部２５により行われる。
【００４３】
これらの印刷モードにしたがってステップ７４において画像ブロックの単位で２値化処理が行われる。ステップ７５において印刷ヘッド４で１ライン分の印刷ができる印刷データφ２が準備されると、ステップ７６で印刷が即座に開始される。ステップ７７において、全範囲が印刷されると印刷ジョブが終了する。
【００４４】
図７にステップ７４における画像ブロック単位での２値化処理のフローチャートを示してある。また、図８は所定のドットが２値化されたときに誤差が伝播される様子を示してある。なお、図８においては縦横にそれぞれ４倍して印刷する４倍モードのときの誤差伝播の例を示してある。まず、ステップ８１において、メモリ１３に記憶された先行する画像ブロックからＸ方向に伝播する第１のブロック伝播誤差群Ｅｇ１をレジスタＲＳＴｎにセットする（第１の入力工程）。すなわち、第１の伝播誤差群Ｅｇ１が第１の誤差群として選択または利用される。ステップ８２において、アキュームレータ５２にレジスタＲＳＴｎから２値化するドットに対応する誤差値をセットする。ステップ８３において、アキュームレータ５３に、画像データφ１から２値化するドットに対応する画素値をセットする。ステップ８４において、列の最初のドットを２値化する場合は、ステップ８５において、アキュームレータ５１に、レジスタＲＳＴ３９を介して、Ｙ方向に伝播する第２のブロック伝播誤差群Ｅｇ２から該当する列の誤差値をセットする（第２の入力工程）。すなわち、第２の伝播誤差群Ｅｇ２が第２の誤差群として選択または利用される。この際、境界値処理部６０の機能により第２のブロック伝播誤差Ｅｇ２に加えて境界に沿って伝播される誤差も含まれた値がアキュームレータ５１にセットされる。列の最初のドットでない場合は、ステップ８６において、前のドットを２値化した際の誤差成分ＥＤがアキュームレータ５１にセットされる。
【００４５】
次に、ステップ８７において、アキュームレータにセットされた誤差値および画素値の和が閾値、たとえば、２５６階調の半分（１２８）より大きい場合は、ステップ８８において、そのドットが「１」、すなわち、黒に設定される。一方、小さい場合は、ステップ８９において、そのドットは「０」、すなわち、白ドットに設定される。さらに、ステップ９０において、他のドットに伝播する誤差成分ＥＡ〜ＥＤが計算される。ステップ９１において列の最後のデータまでこの処理が繰り返される。本例では、３２ドット分繰り返すことにより１列の処理が終了する。このため、ステップ９２において、Ｙ方向に後続する次の画像ブロックに伝播するブロック誤差群Ｅｇ２をメモリ１３に記録する（第２の出力工程）。
【００４６】
ステップ９３において、画像ブロックＢに次の列が残っている場合は、ステップ８２に戻って次の列の各ドットに対して上記の処理を繰り返す。そして、画像ブロックＢに含まれるすべての列の処理が終了すると、ステップ９４において、レジスタＲＳＴｎに出力されたＸ方向に伝播する誤差群をブロック伝播誤差Ｅｇ１としてメモリ１３に出力する（第１の出力工程）。Ｘ方向に連続する画像ブロックＢを２値化処理する場合は、レジスタＲＳＴｎにセットされた誤差群をブロック伝播誤差Ｅｇ１として利用できるので、ステップ９４を省略することも可能である。
【００４７】
本例の画像処理装置１５では、これらの処理を図４に示した画像処理用ＬＳＩ２９を用いてハードウェアとソフトウェアとで行っているが、上記の各ステップをすべてソフトウェアで行うことも可能である。すなわち、適当なリソースを備えたコンピュータ、あるいは適当なリソースと共にデータ処理装置を構成するＣＰＵにおいて上記の処理を実行する命令を有するプログラムとして本発明を提供することが可能であり、ＣＤ−ＲＯＭなどの適当な記録媒体に記録して提供したり、インターネットなどのコンピュータネットワークを介して提供できる。
【００４８】
このように、本例の画像処理装置１５では、１つの画像を複数に分割した画像ブロックのドットを２値化する際に、Ｘ方向およびＹ方向の後の画像ブロックに伝播する誤差値を第１のブロック伝播誤差群Ｅｇ１と第２のブロック伝播誤差群Ｅｇ２として記録するようにしている。したがって、後の画像ブロックに含まれるドットを２値化する際には既に用意されているブロック伝播誤差群Ｅｇ１およびＥｇ２を用いて２値化することが可能であり、先の画像ブロックと後の画像ブロックとを連続して処理しなくても画像ブロック単位で２値化することができる。また、画像ブロックを２値化するために、数ドット前のドットに遡って擬似的な誤差を計算するような余分な処理は不要であり、小さな画像ブロックに分割したとしても誤差計算量が増えることもない。したがって、有限の範囲の画像ブロックに含まれるドットを、画像ブロック単位で無駄なく、高速で２値化できる。
【００４９】
これにより、画像を有限の範囲に分けて印刷するプリンタにおいては、印刷する範囲の２値化データ、すなわち印刷データを即座に用意できる。このため、画像処理装置１５を搭載することにより、多値画像を２値画像に変換して短時間に印刷を開始するプリンタ１を提供できる。すなわち、画像処理装置１５により、あるタイミングで印刷されるライン幅と同じあるいはそれに近い有限の範囲のデータを任意に２値化処理することが可能になり、誤差が影響する範囲をすべて２値化しなくても印刷を開始することができる。また、誤差が影響する範囲のデータをすべて保持する必要はなく、ブロック伝播誤差Ｅｇ１およびＥｇ２を記憶する程度のメモリ容量あるいはストレージ容量を確保すれば良いので、少ないメモリ容量で高速の印刷が可能なプリンタ１を提供できる。
【００５０】
図９に本例の画像処理装置１５を用いた印刷処理の一例を示してある。この印刷処理では、画像ブロックＢ００に含まれるドットを２値化処理し、Ｘ方向の後の画像ブロックＢ０１に伝播する第１のブロック伝播誤差群Ｅｇ１とＹ方向の後の画像ブロックＢ０４に伝播する第１のブロック伝播誤差群Ｅｇ２とを記録する。次に、Ｙ方向の後の画像ブロックＢ０４の２値化処理し、Ｘ方向の後の画像ブロックＢ０５に伝播する第１のブロック伝播誤差群Ｅｇ１を記録する。ただし、２値化したデータは記録しない。次に、１行目に戻って画像ブロックＢ０２の２値化処理して、Ｘ方向の後の画像ブロックＢ０２に伝播する第１のブロック伝播誤差群Ｅｇ１を記録し、Ｙ方向の後の画像ブロックＢ０５に伝播する第２のブロック伝播誤差群Ｅ２を記録する。このようような順序で２値化処理およびブロック伝播誤差Ｅｇ１およびＥｇ２を記録することにより、２行目の画像ブロックＢ０５〜Ｂ０７の各々に伝播する第１のブロック伝播誤差群Ｅｇ１および第２のブロック伝播誤差群Ｅｇ２が用意される。したがって、２行目の画像ブロックは、画像ブロックＢ０７、画像ブロックＢ０６、画像ブロックＢ０５、画像ブロックＢ０４の順序で２値化処理することが可能になり、矢印で示すような双方向印刷が可能になる。
【００５１】
誤差拡散のように周囲の画素との演算順序に依存関係がある方式の場合、双方印刷の逆方向時には通常、１行分作りおきした２値データを印刷するしかないが、上記のような処理方法を採用することにより、Ｘ方向の画像ブロックの数、すなわち、分割数をｎとしたときに、作りおきした２値データをバッファリングするためのメモリ容量を１／ｎに削減できる。図９に示した例では、メモリ容量を１／４に削減できる。
【００５２】
なお、この方法であれば、Ｘ方向に分割する数を増やせば２値データをバッファリングするために必要な容量をさらに減らすことができるが、各画像ブロックの第１のブロック伝播誤差群Ｅｇ１および第２のブロック伝播誤差群Ｅｇ２を保存する領域は増えることになる。このため、プリンタに搭載するメモリ容量との関係から分割数を決定することが望ましい。
【００５３】
また、図９では、画像ブロックをＸ方向に２値化処理しているが、画像ブロックをＹ方向に２値化処理する場合であっても、第１のブロック伝播誤差Ｅｇ１および第２のブロック伝播誤差Ｅｇ２を記録しておくことにより、Ｙ方向に印刷する際でも双方向印刷することが可能である。
【００５４】
図１０にドットを拡大するときの処理、すなわち、図７に示したステップ８３における画素値の設定の処理をフローチャートを用いて示してある。まず、ステップ１２１において、拡大処理部２５の横方向の拡大機能２５ｂにより行方向の画素設定が行われ、ステップ１２２において、拡大処理部２５の縦方向の拡大機能２５ａにより列方向の画素設定が行われる。そして、ステップ１２３において、横方向の倍数の分だけステップ１２２の縦方向の画素設定が行われることになる。行または横方向に画素を拡大する場合、１列分のドットの２値化処理を連続して必要回数実行すればよい。また、この場合に、画素値は同じなので１回設定すれば画素値の再設定は不要である。計算に用いられる直前の列（カラム）から伝播される第１のブロック伝播誤差群Ｅｇ１はレジスタ群ＲＳＧにあるので、ブロックＢの最初の列を処理するときを除きブロック誤差群Ｅｇ１の再設定も不要である。
【００５５】
図１１に、縦または列方向の画素設定の処理をフローチャートにより示してある。本例のプリンタ１は、列方向に３２ドット分の誤差を記録できるレジスタ群ＲＳＴｎを持っている。このため、ステップ１０１において、縦方向に８倍に拡大して印刷する場合は、ステップ１０２〜ステップ１０５において、画素処理部２１の画素アキュームレータ５３に対して８回同じドットの画素値が入力されるようにする。また、ステップ１０６において、縦方向に４倍で拡大して印刷する場合は、ステップ１０７〜１１４において、画素処理部２１の画素アキュームレータ５３に対して４回同じドットの画素値が入力されるようにする。これにより、縦４倍モードにおいては、１つの画素データを縦４ドットに拡大して印刷でき、縦８倍モードにおいては、１つの画素データを縦８ドットに拡大して印刷できる。その他のモードであれば、ステップ１１５において、そのモードに従った画素を選択することにより適当な倍率で拡大することが可能である。このため、拡大する倍率は８倍や４倍に限定されずに、レジスタ群ＲＳＴｎの数により自由に選択することが可能である。
【００５６】
なお、本例の画像処理装置１５では、画像ブロックを構成する各ドットを左から右に向けて２値化しているが、右から左に向けて２値化することも可能である。さらに、多値画像の全てに対して誤差拡散処理を行って、すべての画像ブロックについて、第１のブロック伝播誤差群Ｅｇ１および第２のブロック伝播誤差群Ｅｇ２を適当なストレージに記録しても良い。このようにすると、任意の画像ブロックから２値化処理を開始することができる。ただし、この方法の場合、第１および第２のブロック伝播誤差群を記録するメモリ領域が増えるので、必要なメモリ容量が増える可能性がある。
【００５７】
【発明の効果】
以上に説明したように、本発明においては、ブロック単位で２値化する際に、それぞれのブロックから２次元方向に伝播する誤差をブロック伝播誤差として適当なストレージに記憶するようにしている。したがって、画像ブロックに含まれるドットを２値化する際には既に用意されているブロック伝播誤差群を用いて２値化することが可能であり、先の画像ブロックと後の画像ブロックとを連続して処理しなくても画像ブロック単位で２値化することができる。また、画像ブロックを２値化するために、数ドット前のドットに遡って擬似的な誤差を計算するような余分な処理が不要なので、小さな画像ブロックに分割したとしても誤差計算量が増えることもない。したがって、有限の範囲の画像ブロックに含まれるドットを、画像ブロック単位で無駄なく、高速で２値化できる。このため、本発明により、少ないメモリ容量で、多値画像を２値画像に変換して短時間に印刷を開始できるプリンタを提供できる。
【図面の簡単な説明】
【図１】本発明の画像処理方法を説明するための図である。
【図２】誤差マトリクスを示す図である。
【図３】本発明に係る画像処理装置が搭載されたプリンタの概略を示す図である。
【図４】画像処理装置のハードウェア構成を示す図である。
【図５】図５（ａ）は画像ブロックのあるドットを２値化した際に発生した誤差がレジスタ群に反映される様子を示す図であり、図５（ｂ）は次の列をドットを２値化処理するときに使用される誤差を説明するための図である。
【図６】本例のプリンタにおける印刷処理を示すフローチャートである。
【図７】画像ブロック単位の２値化処理を示すフローチャートである。
【図８】周囲のドットに誤差が伝播される様子を示す図である。
【図９】本発明の画像処理方法を用いて双方向印刷する様子を示す図である。
【図１０】ドットを拡大する際の処理を示すフローチャートである。
【図１１】縦方向にドットを拡大する際の処理を示すフローチャートである。
【符号の説明】
１    プリンタ
１３    メモリ
１５    画像処理装置
２１    画素処理部
２２    誤差データ入力部
２２ｘ    Ｘ方向の誤差データ入力部（第１のデータ入力部）
２２ｙ    Ｙ方向の誤差データ入力部（第２のデータ入力部）
２３    誤差データ出力部
２３ｘ    Ｘ方向の誤差データ記憶部（第１のデータ出力部）
２３ｙ    Ｙ方向の誤差データ記憶部（第２のデータ出力部）
４０    誤差処理部
５０    ２値化部
６０    境界値処理部
Ｅｇ１    第１のブロック伝播誤差群
Ｅｇ２    第２のブロック伝播誤差群
【図１】
2004260770.tif 000003
【図２】
2004260770.tif 000004
【図３】
2004260770.tif 000005
【図４】
2004260770.tif 000006
【図５】
2004260770.tif 000007
【図６】
2004260770.tif 000008
【図７】
2004260770.tif 000009
【図８】
2004260770.tif 000010
【図９】
2004260770.tif 000011
【図１０】
2004260770.tif 000012
【図１１】
2004260770.tif 000013