(57)【要約】      （修正有）【課題】画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供する。【解決手段】画像データをブロック単位で取得する取得手段と、前記取得した所定の数の画像ブロックを保持する保持手段と、前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段とを備え、前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定する。【選択図】図３
2010205142.tif 000002
【特許請求の範囲】
【請求項１】
画像データをブロック単位で取得する取得手段と、
前記取得した所定の数の画像ブロックを保持する保持手段と、
前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段と
を備え、
前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とする画像処理装置。
【請求項２】
前記ハーフトーン処理は、誤差拡散処理であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ハーフトーン処理は、平均濃度保存法による処理であることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記決定手段は、前記ハーフトーン処理の誤差分配の影響範囲に応じて前記注目画素を決定することを特徴とする請求項１から請求項３のいずれか１つに記載の画像処理装置。
【請求項５】
前記ハーフトーン処理手段により処理された複数の前記注目画素を前記画像ブロック単位で出力する出力手段を備えることを特徴とする請求項１から請求項４のいずれか１つに記載の画像処理装置。
【請求項６】
前記取得手段により取得する画像ブロックのサイズは、画像データのデータ形式に応じて決定されることを特徴とする請求項１から請求項５のいずれか１つに記載の画像処理装置。
【請求項７】
複数の前記ハーフトーン処理手段を備え、
前記複数のハーフトーン処理手段は、複数の前記注目画素に対して、並列して前記ハーフトーン処理を行うこと
を特徴とする請求項１から請求項６のいずれか１つに記載の画像処理装置。
【請求項８】
前記複数のハーフトーン処理手段は、複数の前記画像ブロックにおける前記注目画素に対して、並列して前記ハーフトーン処理を行うこと
を特徴とする請求項７に記載の画像処理装置。
【請求項９】
画像データをブロック単位で取得する取得ステップと、
前記取得した所定の数の画像ブロックを保持する保持ステップと、
前記保持ステップに保持された画像ブロックにおける注目画素を決定する決定ステップと、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理ステップと
を備え、
前記保持ステップにより保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定ステップは、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とする画像処理方法。
【請求項１０】
コンピュータに、
画像データをブロック単位で取得する取得ステップと、
前記取得した所定の数の画像ブロックを保持する保持ステップと、
前記保持ステップに保持された画像ブロックにおける注目画素を決定する決定ステップと、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理ステップと
を実行させるためのプログラムであって、
前記保持ステップにより保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定ステップは、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像入力センサから画像データを取得し、誤差拡散処理して２値画像を得る画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
プリンタあるいは複写機等の画像形成装置に用いられる画像記録方式として、電子写真方式が知られている。電子写真方式は、レーザビームを利用して感光ドラム上に潜像を形成して、帯電した色材（以下、トナーと称する）により現像するものである。画像の記録は、現像されたトナーによる画像を転写紙に転写して定着させることにより行う。
【０００３】
昨今の技術の進歩に伴いその画像データの高解像度化が進み、上記電子写真機器からの出力解像度はいまや１２００ｄｐｉ（ｄｏｔ  ｐｅｒ  ｉｎｃｈ）や２４００ｄｐｉといった値にまで至っている。そういった高解像度のディジタル画像の処理を実時間で行うためにはハードウェアを用いる事が多い。複写機に代表される大型の事務機器の場合スキャナから取り込んだ画像を実時間でプリント出力する事が求められ、そのプリント速度が機器の性能を示すひとつの尺度になっていることがハードウェアでの実時間画像処理が必要になる大きな理由である。しかしながらハードウェアでの画像処理を考えた場合、その処理の複雑度や処理画像の大きさに比例しそのハードウェア回路規模、内蔵するメモリの増大によるコストアップというトレードオフの問題を常に抱えている。
【０００４】
上記のような高解像度画像を高速にそして低コストに処理するための画像処理技術に関しては数々の技術が知られている。その中のひとつとして、画像を複数のブロックに分割し最後に結合するといった手法がある。
【０００５】
従来より、ディジタルプリンタ、ディジタル複写機等において、中間調を表現するための２値化手法として、非特許文献１の中で提案された誤差拡散法がある。この手法は、２値化処理で発生した誤差を周辺の画素に分散し、画像濃度を保存することに特徴があるものである。
【０００６】
ここで、誤差拡散法に入力される画像を複数のブロックに分割して処理するための技術として、例えば、特許文献１がある。特許文献１では、次の領域へ繰り越す累積誤差を記憶するメモリを用いて、次の領域より受け取る誤差成分をオーバーラップ処理により近似する方法を開示している。この方法は、近似誤差が少なく、また誤差配分マトリクスを自由に選べることから、２値化の際に発生する粒状性ノイズの少ない画像を得やすいという特徴があるため、最も多く用いられているものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平３−１１８６７４号公報
【特許文献２】特開２００５−２８４６６２号公報
【非特許文献】
【０００８】
【非特許文献１】Ｆｌｏｉｄ、Ｓｔｅｉｎｂｅｒｇ著「Ａｎ  Ａｄａｐｔｉｖｅ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｓｐａｔｉａｌ  ＧｒａｙＳｃａｌｅ」ＳＩＤ  ＤＩＧＥＳＴ、１９７５年
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１においても、接合部分で画質劣化を招いてしまい、ブロック単位で処理できないという問題がある。
【００１０】
また、特許文献２においては、誤差の分散領域に応じて分割画像のサイズを決定することで画像劣化を招かずに処理する方法を開示している。
【００１１】
この方法は、図１４に示すような誤差の拡散範囲の場合には、ブロックの副走査方向のサイズは１画素に固定される。また、図１５に示すような誤差の拡散範囲の場合には、ブロックの副走査方向のサイズを任意に決定することができる。しかし、図１５に示すような誤差の拡散範囲の場合には、誤差が周囲に十分に伝播することができず、画像劣化が発生する。
【００１２】
画像劣化を招かずに処理を行うには、処理中の副走査位置における主走査方向の全てのブロックを展開するためのラインメモリが必要になる。主走査幅が大きいほど、また１画素あたりのビット数が多いほどそのメモリサイズは大きくなる。１２００ｄｐｉＡ３の画像が入力の場合その主走査画素数は１４０００画素にものぼり、１画素あたりＣＭＹＫ４色、１０ビットとなるとメモリサイズは７０Ｋｂｙｔｅにものぼる。
【００１３】
また、複写機で画像データを圧縮する際にはＪＰＥＧ圧縮が一般的である。ＪＰＥＧは、画像を固定サイズ８×８画素のブロックに分割し、そのブロック単位で、離散コサイン変換を用いて、空間領域から周波数領域へ変換する。複写機内では同じ画像サイズで画像のハンドリングを行うことが望ましい。これは、入力する画像サイズが処理によって異なる場合は画像サイズを変換する処理やその処理のためのメモリを保有する必要があり、コストがかかってしまうためである。
【００１４】
本発明は上記問題に鑑みてなされたものであり、その課題は、画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供することである。
【課題を解決するための手段】
【００１５】
本発明に係る画像処理装置は、画像データをブロック単位で取得する取得手段と、前記取得した所定の数の画像ブロックを保持する保持手段と、前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段とを備え、前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係る画像形成装置の概略構成を示すブロック図である。
【図２】本発明の一実施形態に係る画像処理部の構成を示すブロック図である。
【図３】本発明の一実施形態に係るハーフトーン処理部の構成を示すブロック図である。
【図４】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みを示す図である。
【図５】本発明の一実施形態に係る画像形成装置の処理フローを示すフロー図である。
【図６】本発明の一実施形態に係るハーフトーン処理部の処理フローを示すフロー図である。
【図７】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図８】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図９】本発明の一実施形態に係る画像ブロックを示す図である。
【図１０】注目ブロックの注目画素に分配される誤差を説明する図である。
【図１１】注目ブロックを処理するために必要な領域を説明する図である。
【図１２】本発明の一実施形態に係る誤差拡散処理への画像入力の順を示す図である。
【図１３】本発明の一実施形態に係る誤差拡散処理への画像入力の順を示す図である。
【図１４】誤差拡散処理の誤差分配の重みの例を示す図である。
【図１５】誤差拡散処理の誤差分配の重みの例を示す図である。
【図１６】本発明の一実施形態に係る平均濃度算出時の重みを示す図である。
【図１７】本発明の一実施形態に係る平均濃度保存法の誤差分配の様子を示す図である。
【図１８】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みの例を示す図である。
【図１９】注目ブロックの注目画素に分配される誤差を説明する図である。
【図２０】注目ブロックを処理するために必要な領域を説明する図である。
【図２１】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みの例を示す図である。
【図２２】本発明の一実施形態に係る誤差拡散処理部の構成を示す図である。
【図２３】本発明の一実施形態に係る重み付け演算器の構成を示す図である。
【図２４】本発明の一実施形態に係る誤差制御部の構成を示す図である。
【図２５】本発明の一実施形態に係る誤差バッファの構成を示す図である。
【図２６】本発明の一実施形態に係るメモリセレクタの構成を示す図である。
【図２７】本発明の一実施形態に係るメモリセレクタの構成を示す図である。
【図２８】本発明の一実施形態に係るハーフトーン処理部の構成を示すブロック図である。
【図２９】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図３０】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図３１】本発明の一実施形態に係る画像処理部の構成を示す図である。
【図３２】本発明の一実施形態に係るハーフトーン処理部の制御を説明するための図である。
【図３３】本発明の一実施形態に係るハーフトーン処理部の処理フローを示すフロー図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の好適な一実施形態を説明する。ただし、この説明は単に例示であり、発明の範囲をこれに限定するものではない。
【００１９】
[実施形態１]
［画像形成装置の構成］
図１は本発明の実施形態に係る画像形成装置の構成を示すブロック図である。
【００２０】
図１に示すように、画像形成装置は、画像読取部１０１、画像処理部１０２、記憶部１０３、ＣＰＵ１０４および画像出力部１０５を備える。なお、画像形成装置は、画像データを管理するサーバ、プリントの実行を指示するパーソナルコンピュータ（ＰＣ）などにネットワークなどを介して接続可能である。
【００２１】
画像読取部１０１は、原稿の画像を読み取り、画像データを出力する。
【００２２】
画像処理部１０２は、濃度調整処理や、色変換処理、プリンタガンマ補正処理、誤差拡散などのハーフトーン処理等が行われる。画像処理部１０２の処理の詳細については後述する。
【００２３】
記憶部１０３は、ＲＯＭ、ＲＡＭ、ハードディスク（ＨＤ）などから構成される。ＲＯＭは、ＣＰＵ１０４が実行する各種の制御プログラムや画像処理プログラムを格納する。ＲＡＭは、ＣＰＵ１０４がデータや各種情報を格納する参照領域や作業領域として用いられる。このＲＡＭとＨＤ上で画像データを蓄積し、ページのソートや、ソートされた複数ページにわたる原稿を蓄積し、複数部プリント出力を行う。
【００２４】
画像出力部１０５は、記録紙などの記録媒体にカラー画像を形成して出力する。符号１０６は上述の各部を繋ぐ画像形成装置の内部バスである。
【００２５】
次に図２及び図５を参照して、画像処理部１０２での画像処理全体のフローを詳細に説明する。図２は画像処理部１０２の構成を示す図である。図５は画像形成装置の処理フローを示す図である。
【００２６】
通常プリンタ画像処理としては、Ｓ６０１〜Ｓ６０６に示されるような画像処理が用意されている。本実施形態では、全ての画像処理を８×８画素のブロック単位でこの処理を行う。
【００２７】
まず、画像読取部１０１で取得した画像データを記憶部１０３のＨＤへ格納するために圧縮処理部３０２でＪＰＥＧという圧縮手法を使って圧縮処理を行なう(ステップＳ６０１)。このとき、ＣＰＵ１０４は記憶部１０３のＲＡＭから画像データを８×８画素のブロック単位で画像処理部１０２に入力する。画像処理部１０２は、８×８画素のブロック単位でデータを圧縮し、記憶部１０３のＲＡＭを経由して記憶部１０３のＨＤに格納する。
【００２８】
続いてその圧縮されたデータを記憶部１０３のＨＤから読み出し、展開処理しラスタ画像へ戻す処理を展開処理部３０３で行なう(ステップＳ６０２)。圧縮されたデータは８×８画素のブロック単位で順次展開され、記憶部１０３のＲＡＭに格納される。
【００２９】
その画像データを出力の色空間にあわせるための色変換処理を色変換処理部３０４で行い(ステップＳ６０３)、濃度の調整を濃度調整処理部３０５で(ステップＳ６０４)、出力ガンマ補正をガンマ補正処理部３０６で行なう(ステップＳ６０５)。このとき、ＣＰＵ１０４は記憶部１０３のＲＡＭから画像データを８×８画素のブロック単位で画像処理部１０２に入力する。
【００３０】
色変換された画像データは誤差拡散法によるハーフトーン処理が実施される（ステップＳ６０６）。ここでのハーフトーン処理とは、原画像データの階調値（本実施形態では２５６階調）を、画像出力部１０５で印字が可能な２値のデータに変換することをいう。符号３０９は上述の各部を繋ぐ画像処理装置１０２の内部バスである。
【００３１】
通常は、誤差拡散法の特性上、ブロック単位で誤差拡散処理を行った場合には画像劣化が発生する。このため、ステップＳ６０３を実行する前に、ブロックを一度ラインメモリに展開してから画像データを１画素ラインごとに転送、処理する必要がある。このとき、処理中の副走査位置における主走査方向のブロック全てを展開するためのラインメモリが必要になってしまう。しかし、本実施形態ではハーフトーン処理部３０７の後述する制御によって、ブロック単位で処理を行っても画像劣化を招くことなく処理が可能である。また、画像ブロックを展開するためのラインメモリも不要である。すなわち、ハーフトーン処理に必要な画像ブロックを展開するために必要なメモリ容量を低減することができる。ハーフトーン処理部３０７による処理の制御の詳細について以下に説明する。
【００３２】
［ハーフトーン処理］
本実施形態におけるハーフトーン処理部３０７の処理内容について説明する。図３はハーフトーン処理部３０７の構成を示すブロック図である。図６は本実施形態におけるハーフトーン処理の流れを示すフローチャートである。
【００３３】
図９は本実施形態における８×８画素の画像ブロックを示す図である。今、図４に示すような誤差拡散マトリクスを前提に、図１０に示す注目画素＊に伝播される誤差について考えてみる。注目画素に対して誤差を伝播するためには、図４の誤差拡散マトリクスに相当する領域の周辺の誤差が必要になる。すなわち、この注目画素に対する誤差伝播は、注目ブロックの画像データだけでなく右隣の画像ブロックの画素が有する誤差の影響を受ける。このことから、注目ブロックの処理をするのに、図１０に示す右隣の画像ブロックの領域を処理する必要がある。よって、本実施形態では、注目ブロックを処理する際に注目ブロックの右隣の画像ブロックと二つ右隣の画像ブロック（すなわち、合計３つの画像ブロック）を画像データから取得し、注目ブロック内の注目画素の推移を制御する。このようにすることで、注目ブロックを処理するのに必要な領域の処理を行う。本実施形態では、画像データから３つの画像ブロックを取得することとしたが、これに限定されず、任意の数の画像ブロックを取得することとしてもよい。例えば、誤差拡散処理の誤差分配の影響範囲に応じて定められた所定の数の画像ブロックを取得することとしてもよい。
【００３４】
また、注目ブロックを処理するためには、右隣のブロックを半分以上処理する必要がある。注目ブロックを処理するために、注目ブロック、右隣のブロック、二つ右隣のブロックを処理すると通常より３倍の時間がかかってしまう。よって本実施形態では、注目画素の推移を制御することで、未処理の画素についてのみ処理を行う。注目画素の制御フローについての詳細は、図７及び図８等を参照して後述する。
【００３５】
図６に示すハーフトーン処理において、まず、画像入力部４０１は入力された画像ブロックを入力画像ブロックメモリ４０２へ格納する（ステップＳ７０１）。すなわち、本実施形態において、画像入力部４０１は、画像データから画像ブロックを取得する手段として機能する。さらに、入力画像ブロックメモリ４０２は、画像ブロックを保持する手段として機能する。
【００３６】
次に、入力画素制御部４０３は、位置情報が保持されているカウンタ４０４の情報を基にして誤差拡散処理部４０５に入力される注目画素を決定する。すなわち、本実施形態において、入力画素制御部４０３は、注目画素決定制御手段として機能する。入力画素制御部４０３は、入力画像ブロックメモリ４０２から画像データを読み出し、決定した注目画素を誤差拡散処理部４０５に入力する。本件の特徴である入力画素制御部４０３による処理の制御方法の詳細は、図７及び図８等を参照して後述する。
【００３７】
誤差拡散処理部４０５では、入力された画素に対して誤差拡散処理が行われ（ステップＳ７０２）、処理した画素データを出力画像ブロックメモリ４０６に格納する。誤差拡散処理部４０５における処理の詳細は、図２２から図２７等を参照して後述する。
【００３８】
注目ブロックに対する処理が終了する（ステップＳ７０３）と、画像出力部４０７が出力画像ブロックメモリ４０６から読み出した画像データをハーフトーン処理部３０７から出力する（ステップＳ７０４）。すなわち、画像出力部４０７は、誤差拡散処理が行われた画素を画像ブロック単位で出力する。
【００３９】
そして、全てのブロックについて処理が終了したか否かが判断され（ステップＳ７０５）、終了していない場合には、上記ステップＳ７０１〜ステップ７０５の処理が行われる。
【００４０】
次に、本実施形態のハーフトーン処理における、入力画素制御部４０３による処理内容について説明する。
【００４１】
図７と図８は本実施形態における入力画素制御部４０３により注目画素を推移させる処理の流れを示すフローチャートである。図７は画像データの左端の画像ブロックに対する注目画素の推移の制御を示すフローチャートである。図８は画像データの左端以外の画像ブロックに対する注目画素の移動の制御を示すフローチャートである。
【００４２】
まず、図７を参照して、注目ブロックが画像の左端の画像ブロックだった場合について説明する。
【００４３】
注目画素の主操作位置ｘｉと副走査位置ｙｉは図３のカウンタ４０４で保持されている。入力画素制御部４０３は、副走査方向の画素位置カウンタの変数ｃｎｔｙに０を設定する。主走査方向の画素終了位置の変数ＸＥＮＤは、次の式に従う。  
ＸＥＮＤ＝２×ｂｌ−２
上記式より算出された値をＸＥＮＤに代入する。ここで、変数ｂｌとは画像ブロックの一辺の画素数であり、第一の実施形態ではｂｌ＝８なので、ＸＥＮＤは次の値になる。  
ＸＥＮＤ＝２×ｂｌ−２＝２×８−２＝１６−２＝１４
従って、ＸＥＮＤに１４を設定し（ステップＳ８０１）、さらに主走査方向の画素位置カウンタの変数ｃｎｔｘに０を設定し（ステップＳ８０２）、変数の初期化を行う。
【００４４】
注目画素の主走査方向の位置の変数ｘｉにｃｎｔｘを設定し、注目画素の副走査方向の位置の変数ｙｉにｃｎｔｙを設定する（ステップＳ８０３）。
【００４５】
そして、入力画像ブロックメモリ４０２にある（ｘｉ,ｙｉ）の位置の画素を誤差拡散処理部４０５に入力する（ステップＳ８０４）。誤差拡散処理部４０５による処理の詳細については後述する。
【００４６】
ｃｎｔｘに１を足して（ステップＳ８０５）、ｃｎｔｘがＸＥＮＤより大きくになった場合には（Ｓ８０６；ＹＥＳ）、注目画素を次の副走査へ、条件を満たしていない場合には（Ｓ８０６；ＮＯ）、上記ステップＳ８０３からステップＳ８０５の処理が行われる。
【００４７】
ｃｎｔｙに１を足し、ＸＥＮＤから２を引く（ステップＳ８０７）。ｃｎｔｙがｂｌより大きくなった場合には（ステップＳ８０８；ＹＥＳ）、注目ブロックに対する処理が全て終了したと判断され、終了していない場合には（ステップＳ８０８；ＮＯ）、上記ステップＳ８０２からステップＳ８０７の処理が行われる。図１２は、図７に示した制御による注目画素の推移を示した図である。
【００４８】
以上の処理によれば、注目画素の決定は、変数ＸＥＮＤの値に依存し、変数ＸＥＮＤの値の変化は、画像ブロックのサイズ（変数ｂｌ）に依存する。すなわち、注目画素の決定は、画像ブロックのサイズに依存する。しかしながら、注目画素の決定は、この方法に限定されず、任意の方法とすることができる。例えば、後に詳細に説明する誤差拡散処理における誤差分配の影響範囲に応じて、注目画素を決定することとしてもよい。以降に説明する注目画素の決定方法においても同様である。
【００４９】
次に、図８を参照して、注目ブロックが画像の左端の画像ブロック以外である場合について説明する。
【００５０】
入力画素制御部４０３は、副走査方向の画素位置カウンタの変数ｃｎｔｙに０を設定し（ステップＳ９０１）、さらに主走査方向の画素位置カウンタの変数ｃｎｔｘに０を設定し（ステップＳ９０２）、変数の初期化を行う。
【００５１】
次に注目画素の主走査方向の位置の変数ｘｉに１４＋ｃｎｔｘを設定し、注目画素の副走査方向の位置の変数ｙｉにｃｎｔｙを設定する（ステップＳ９０３）。
【００５２】
そして、入力画像ブロックメモリ４０２にある（ｘｉ,ｙｉ）の位置の画素を誤差拡散処理部４０５に入力する（ステップＳ９０４）。誤差拡散処理部４０５による処理の詳細については後述する。
【００５３】
ｃｎｔｘに１を足して（ステップＳ９０５）、ｃｎｔｘがｂｌより大きい場合には（Ｓ９０６；ＹＥＳ）、注目画素を次の副走査へ、条件を満たしていない場合には（Ｓ９０６；ＮＯ）、上記ステップＳ９０３からステップＳ９０５の処理が行われる。
【００５４】
ｃｎｔｙに１を足して（ステップＳ９０７）、ｃｎｔｙがｂｌより大きくなった場合には（Ｓ９０８；ＹＥＳ）、注目ブロックに対する処理が全て終了したと判断される。終了していない場合には（Ｓ９０８；Ｎｏ）、上記ステップＳ９０２からステップＳ９０７の処理が行われる。図１３は、図８に示した制御による注目画素の推移を示した図である。
【００５５】
このような方法で注目画素を決定することで、蓄積された複数の画像ブロックに対して必要最小限の処理することが可能となる。
【００５６】
そして、上記の方法によってハーフトーン処理部３０７に任意のブロックサイズで画像の入力を行っても、注目ブロックの処理に必要な右隣の画像ブロック２つをハーフトーン処理部３０７に入力することで、画像劣化を招かずにブロック単位で処理が可能となる。すなわち、合計３ブロックを入力することで、画像劣化を招かずにブロック単位で処理が可能となる。その結果、処理中の副走査位置における主走査方向の画像ブロック全てをラインメモリに展開する場合と比較して、ハーフトーン処理に必要なメモリ容量が小さくて済む。たとえばブロックのサイズが８×８画素の画像ブロック、６００ｄｐｉの場合、１／７２のメモリ容量で済むことになる。
【００５７】
本実施形態では、８×８画素の画像ブロックに分割している。よって、ＪＰＥＧ処理における処理単位と同じなので、処理単位が異なることで発生する画像サイズの変換処理やその処理で必要となるバッファメモリの増加を抑えることができる。それによって、低コストで画像を出力することが可能である。本実施形態では、画像ブロックのサイズをＪＰＥＧ処理における処理単位と同じサイズにしたが、これに限定されず、他のデータ形式の画像データ処理における処理単位に応じた画像サイズにしてもよい。
【００５８】
また、誤差分配の領域が図１８のような形をしていた場合には、図１９、図２０に示すように右隣のブロックの処理を行う必要がある。この場合、注目ブロックを処理するために必要なブロックは右隣のブロックのみとなり、図３の入力画像ブロックメモリ４０２、出力画像ブロックメモリ４０６の容量を削減することができる。
【００５９】
そして、誤差分配の領域が図２１のような形をしていた場合には、右隣のブロックを参照する必要がなくなる。この場合、注目ブロックを処理するために必要なブロックは注目ブロックのみとなり、図３の入力画像ブロックメモリ４０２、出力画像ブロックメモリ４０６の容量を削減することができる。よって、誤差分配の領域がどんな形をしていても画像劣化を招かずに処理することができる。
【００６０】
なお、今回はすべて８×８画素の画像ブロック分割で説明を行ったが、それに限定するものではない。また誤差拡散処理の出力ビット数を１ビットとして説明したが、入力多値のビット数より小さい出力であれば、それに限るものではない。
【００６１】
図２２は誤差拡散処理部４０５の詳細な構成を示すブロック図である。
【００６２】
誤差拡散処理部４０５に入力された多値のデータＤは加算器２３０１により、この注目画素における誤差データＥが加算され、Ｆ＝Ｄ＋Ｅが出力される。
【００６３】
次に、比較器２３０２において、誤差データを付加された注目画素のデータＦは、２値化閾値Ｔｈと比較され、Ｆ＞＝Ｔｈの際には２値信号Ｂ＝“１”が出力され、Ｆ＜Ｔｈの際には２値化信号Ｂ＝“０”が出力される。この出力結果から、２値化処理時の２値化誤差Ｅ´が減算器２３０３によりＥ´＝Ｆ−Ｂ´として算出される。ここで、Ｂ´は入力データが２５６階調（０〜２５５）である場合、Ｂ´＝Ｂ×２５５となる。したがって、例えば、入力多値データがＤ＝２３０、２値化の閾値がＴｈ＝１２８である場合、２値化後の出力データはＢ＝１であり、２値化誤差Ｅ´は、次のような値になる。  
Ｅ´＝Ｄ−Ｂ×２５５＝２３０−１×２５５＝−２５
この２値化誤差Ｅ´は、重み付け誤差演算器２３０４において、所定の誤差マトリクスに従ってこれ以降処理される画素のデータに対して分配するために、誤差制御部２３０５に格納される。さらに、次の画素の多値データに加算器２３０１により加算され誤差データの伝播が行われる。すなわち、上記の例では入力多値データ２３０に対して２５の誤差が生じる。したがって、入力Ｄ＝２３０における誤差データ２５５に対する誤差２５を２値化誤差とし、この誤差を重み付け誤差演算器２３０４で、誤差マトリクスを用いて、未処理の画素の誤差制御部２３０５へ誤差分配し、以降の画素での２値化処理に反映される。
【００６４】
重み付け誤差演算器２３０４について、図２３を使って詳細を説明する。  
誤差バッファ２４０１は、注目画素と同じ主走査への分配誤差を算出するための回路である。誤差バッファ２４０２は、注目画素に対して副走査方向に一つ下の画素への分配画素を算出するための回路である。誤差バッファ２４０３は、注目画素に対して副走査方向に二つ下の画素への分配画素を算出するための回路である。
【００６５】
図２２の減算器２３０３から出力された誤差データは誤差バッファ２４０１、誤差バッファ２４０２、誤差バッファ２４０３に入力される。誤差バッファ２４０１は次の画素へ分配される誤差を出力する。
【００６６】
誤差バッファ２４０２に入力された画素データはレジスタ２４００１に格納される。レジスタ２４００１からレジスタ２４００５はシフトレジスタであり、画素毎にシフトされる。レジスタ２４００２には一つ前の画素の誤差が格納されている。加算器２４００６は、レジスタ２４００１の出力に重み付け係数３を乗じた値とレジスタ２４００２の出力に重み付け係数５を乗じた値とを加算し、加算器２４００８へ供給する。加算器２４００７は、レジスタ２４００３の出力に重み付け係数７を乗じた値とレジスタ２４００４の出力に重み付け係数５を乗じた値とを加算し、加算器２４００８へ供給する。加算器２４００８は、加算器２４００６の出力と加算器２４００７の出力を加算し、加算器２４００９へ供給する。加算器２４００９は、加算器２４００８の出力とレジスタ２４００５の出力に重み付け係数３を乗じた値とを加算し、図２２の誤差制御部２６０５に供給する。
【００６７】
誤差バッファ２４０３に入力された画素データはレジスタ２４０００１に格納される。レジスタ２４０００１からレジスタ２４０００５はシフトレジスタであり、画素毎にシフトされる。レジスタ２４０００２には一つ前の画素の誤差が格納されている。加算器２４０００６は、レジスタ２４０００１の出力とレジスタ２４０００２の出力に重み付け係数３を乗じた値とを加算し、加算器２４０００８へ供給する。加算器２４０００７は、レジスタ２４０００３の出力に重み付け係数５を乗じた値とレジスタ２４０００４の出力に重み付け係数３を乗じた値とを加算し、加算器２４０００８へ供給する。加算器２４０００８は、加算器２４０００６の出力と加算器２４０００７の出力を加算し、加算器２４０００９へ供給する。加算器２４０００９は、加算器２４０００８の出力とレジスタ２４０００５の出力とを加算し、図２２の誤差制御部２６０５に供給する。
【００６８】
誤差バッファ２４０１の構成について、図２５を使って説明する。  
図２２の減算器２６０３から出力された誤差データはセレクタ２６０１に入力される。セレクタ２６０１は制御信号によって、回路２６００１〜回路２６００８のうち、どの回路にデータを入力するか制御する。セレクタ２６０１には、ｃｎｔｙの値が入力される。そして、下記のようにデータを入力する回路を選択する。ｃｎｔｙが０なら回路２６００１。ｃｎｔｙが１なら回路２６００２。ｃｎｔｙが２なら回路２６００３。ｃｎｔｙが３なら回路２６００４。ｃｎｔｙが４なら回路２６００５。ｃｎｔｙが５なら回路２６００６。ｃｎｔｙが６なら回路２６００７。ｃｎｔｙが７なら回路２６００８。
【００６９】
セレクタから回路に入力されたデータはレジスタ２６００１１に格納される。加算器２６００１３は、レジスタ２６００１１の出力に重み付け係数７を乗じた値とレジスタ２６００１２の出力に重み付け係数５を乗じた値を加算し、セレクタ２６０２に供給する。
【００７０】
セレクタ２６０２はセレクタ２６０１と同様に制御信号によって選ばれた回路の出力データを出力し、図２２の誤差制御部２３０５に供給する。
【００７１】
誤差制御部２３０５について、図２４を使って説明する。  
図２３の誤差バッファ２４０２から出力されたデータと誤差バッファ２４０３から出力されたデータがメモリセレクタ２５０１に入力される。メモリセレクタ２５０１は制御信号３カウントカウンタ２５０３とカウンタからの信号によって、誤差データを書き込む誤差メモリ、誤差ラインメモリを選択する。メモリセレクタ２５０２は、制御信号によってアクセスする誤差メモリ、誤差ラインメモリを決定し、誤差データを読み出す。メモリセレクタ２５０１とメモリセレクタ２５０２の詳細については後述する。加算器２５０４は、メモリセレクタ２０８２から出力された注目画素に分配される誤差と注目画素に分配される誤差を加算し、加算器２５０５に供給する。加算器２５０５は、加算器２５０４の出力と図２３の誤差バッファ２４０１からの出力を加算し、図２２の加算器２６０１に注目画素へ分配される誤差として供給する。
【００７２】
図２４のメモリセレクタ２５０１のアクセスするメモリの制御方法について図２６を使って説明する。
【００７３】
セレクタ２７０１は、制御信号によって出力を選択する。制御信号は図２４の３カウントカウンタの出力信号である。３カウントカウンタは、副走査方向の画素位置ｃｎｔｙを３で割った余りが出力される。３カウントカウンタの出力が２のとき、セレクタ２７０１は図２３の誤差バッファ２４０３の出力を誤差メモリ２５００１に供給する。誤差メモリ２５００１への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７４】
セレクタ２７０２は、セレクタ２７０１同様に３カウントカウンタの出力で出力を切り替える。３カウントカウンタの出力が０のとき、セレクタ２７０２は図２３の誤差バッファ２４０２の出力を誤差メモリ２５００２に供給する。誤差メモリ２５００２への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７５】
セレクタ２７０３は、セレクタ２７０１同様に３カウントカウンタの出力で出力を切り替える。３カウントカウンタの出力が０のとき、誤差バッファ２４０３の出力を誤差メモリ２５００３に供給する。誤差メモリ２５００３への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７６】
セレクタ２７０４は、セレクタ２７０１同様に３カウントカウンタの出力で出力を切り替える。３カウントカウンタの出力が１のとき、誤差バッファ２４０２の出力を誤差メモリ２５００４に供給する。誤差メモリ２５００４への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７７】
セレクタ２７０５は、セレクタ２７０１同様に３カウントカウンタの出力で出力を切り替える。３カウントカウンタの出力が１のとき、誤差バッファ２４０３の出力を誤差メモリ２５００５に供給する。誤差メモリ００５への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７８】
セレクタ２７０６は、セレクタ２７０１同様に３カウントカウンタの出力で出力を切り替える。３カウントカウンタの出力が２のとき、誤差バッファ２４０３の出力を誤差メモリ２５００６に供給する。誤差メモリ２５００６への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００７９】
セレクタ２７０７は、主走査カウンタから信号が出力される。信号はｃｎｔｙが６のとき１を出力する。それ以外のときは０が出力される。制御信号が１のときに誤差バッファ２４０３の出力を誤差ラインメモリ２５００７に供給する。
【００８０】
セレクタ２７０８は、主走査カウンタから信号が出力される。信号はｃｎｔｙが７のとき１を出力する。それ以外のときは０が出力される。制御信号が１のときに誤差バッファ２４０２の出力を誤差ラインメモリ２５００８に供給する。また、誤差バッファ２４０３の出力を誤差ラインメモリ２５００９に供給する。誤差ラインメモリ２５００７、２５００８、２５００９への書き込むアドレスはカウンタから入力されるｃｎｔｘに２を加算した値を使用する。
【００８１】
図２４のメモリセレクタ２５０２のアクセスするメモリの制御方法について図２７を使って説明する。
【００８２】
セレクタ２８０１は、制御信号によって出力を切り替える。セレクタ２８０１に入力される制御信号は図２４の３カウントカウンタの出力信号である。３カウントカウンタは、副走査方向の画素位置ｃｎｔｙを３で割った余りが出力される。３カウントカウンタの出力が０とき、誤差メモリ２８００６からの出力をセレクタ２８０６に供給する。３カウントカウンタの出力が１とき、誤差メモリ２５００２からの出力をセレクタ２８０６に供給する。３カウントカウンタの出力が２とき、誤差メモリ２５００４からの出力をセレクタ２８０６に供給する。
【００８３】
セレクタ２８０２は、セレクタ２８０１同様、制御信号によって出力を切り替える。３カウントカウンタの出力が０とき、誤差メモリ２５００５からの出力をセレクタ２８０７に供給する。３カウントカウンタの出力が１とき、誤差メモリ２５００１からの出力をセレクタ２８０７に供給する。３カウントカウンタの出力が２とき、誤差メモリ２５００３からの出力をセレクタ２８０７に供給する。
【００８４】
上記セレクタがアクセスするメモリのアドレスはいずれもカウンタより出力されるｃｎｔｘがアドレスとして使用される。
【００８５】
セレクタ２８０３は、制御信号によって出力を切り替える。カウンタ４０４から出力されるｃｎｔｙの値によって制御される。ｃｎｔｙが０のとき、誤差ラインメモリ２５００７の出力をセレクタ２８０６に供給する。
【００８６】
セレクタ２８０４は、制御信号によって出力を切り替える。カウンタ４０４から出力されるｃｎｔｙの値によって制御される。ｃｎｔｙが０のとき、誤差ラインメモリ２５００８の出力をセレクタ２８０７に供給する。
【００８７】
セレクタ２８０５は、制御信号によって出力を切り替える。カウンタ４０４から出力されるｃｎｔｙの値によって制御される。ｃｎｔｙが１のとき、誤差ラインメモリ２５００９の出力をセレクタ２８０７に供給する。
【００８８】
セレクタ２８０６は、制御信号によって出力を切り替える。カウンタ４０４から出力されるｃｎｔｙの値によって制御される。ｃｎｔｙが０のとき、セレクタ２８０３の出力を図２４の加算器２５０４に供給する。ｃｎｔｙが０以外のとき、セレクタ２８０１の出力を図２４の加算器２５０４に供給する。
【００８９】
セレクタ２８０７は、制御信号によって出力を切り替える。カウンタ４０４から出力されるｃｎｔｙの値によって制御される。ｃｎｔｙが０のとき、セレクタ２８０５の出力を図２４の加算器２５０４に供給する。ｃｎｔｙが１のとき、セレクタ２８０６の出力を図２４の加算器２５０４に供給する。ｃｎｔｙが０、１以外のとき、セレクタ２８０２の出力を図２４の加算器２５０４に供給する。
【００９０】
誤差ラインメモリのアクセスアドレスとしては、カウンタ４０４から出力されるｘｉが使用される。
【００９１】
このような方法で誤差を制御することで、画像データを複数のブロックに分割し、各々で処理しても誤差の分配を正しく行うことができる。すなわち、画像の劣化を低減させた画像処理を行うことができる。
【００９２】
以上のように、本実施形態によれば、画像劣化が低減された画像処理を低容量のメモリで行うことができる。
【００９３】
[実施形態２]
以下、本発明の第２の実施形態に係る画像処理を説明する。  
本実施形態においては、ハーフトーン処理を行う際に、周辺の平均濃度を保持しつつ２値化を行っていく平均濃度保存法を行った場合を例として説明する。
【００９４】
本実施形態でも画像処理部１０２で行われる図５の工程は変わらないので詳細の説明は割愛する。第１の実施形態との差分としは誤差拡散法を使った２値化ではなく、平均濃度保存法による２値化である点なので、その点の説明を詳細に行う。
【００９５】
図を用いてその平均濃度保存法の代表的な手法を例にとり説明を行う。今回説明の用いる平均濃度保存法では、注目画素に対して、その周辺で注目画素以前に２値化されている画素に対して図１６のようなマスクをかけ、そこから求まる閾値に対して、注目画素の画素値の大小比較を行い、２値化していく。またそのとき発生した誤差は隣接１画素へ分配していく（図１７）。平均濃度保存法が前述の誤差拡散法に対して有利な点として、誤差拡散処理では誤差メモリとして多値２ライン必要なのに対し、平均濃度保存法で必要となる誤差メモリは２値２ライン＋多値１ラインで済む。これは注目画素を処理する際に必要になるデータが蓄積してある２値化済みのデータである点である。誤差拡散法では拡散させる誤差データを２ライン先まで伝播させるため、２ライン分多値データとして蓄積しておく必要がある。平均濃度保存法では蓄積データは閾値を算出するための２値化済みデータなので、同じ２ラインでもそのメモリ容量が小さく済む。またそこから求まる誤差データの分配は閾値が画素ごとに動的に求まるため遠い画素まで拡散させる必要がなく、高々隣接２画素で十分であることも有利な点である。
【００９６】
また、同様に、注目ブロックを処理するためには図１１に示す領域の処理が必要であり、入力画素制御部４０３における制御は実施形態１と同様で、図７、図８のフローである。
【００９７】
なお、以上の説明において、ハーフトーン処理を行うために、誤差拡散処理又は平均濃度保存法を用いる場合について説明したが、これらに限定されず、誤差分配を行う任意の処理を用いることができる。
【００９８】
[実施形態３]
以下、本発明の第３の実施形態に係る画像処理を説明する。  
本実施形態においては、ブロック内で誤差拡散処理を並列化した場合を例として説明する。
【００９９】
本実施形態でも画像処理部１０２で行われる図５の工程は変わらないので詳細の説明は割愛する。他の実施形態との差分としては、図２のハーフトーン処理部の構成が変わることである。その点について詳細に説明を行う。
【０１００】
ハーフトーン処理部３０７の処理内容について説明する。図２８は、本実施形態における図２のハーフトーン処理部３０７の構成図である。図２９と図３０はハーフトーン部３０７の処理の流れを示すフローチャートである。
【０１０１】
まず、図２９を参照して、注目ブロックが画像データに対して左端だった場合について説明する。  
入力画素制御部２９０３は、カウンタ２９０４のｃｎｔｙを０、ＸＥＮＤを１４に設定することで変数の初期化を行う（ステップＳ３００１）。さらに、ｃｎｔｘを０に設定する（ステップＳ３００２）。ｘｉにｃｎｔｘを代入、ｙｉにｃｎｔｙを代入する（ステップＳ３００３）。
【０１０２】
ここから並列に誤差拡散処理が行われる。ｃｎｔｘが９でないとき（ステップＳ３００４；ＹＥＳ）、入力画素制御部２９０３は画素（ｘｉ,ｙｉ）を入力画像ブロックメモリ２９０２から読み出して誤差拡散処理部２９０５へ出力する（ステップＳ３００５）。また、並行してｃｎｔｘが０でないとき（ステップＳ３００６；ＹＥＳ）、入力画素制御部２９０３は画素（ｘｉ−３,ｙｉ−１）を入力画像ブロックメモリ２９０２から読み出して誤差拡散処理部２９０６へ出力する（ステップＳ３００７）。
【０１０３】
ｃｎｔｘに１を足して（ステップＳ３００８）、ｃｎｔｘがＸＥＮＤ＋１より大きい場合は（ステップ３００９；ＹＥＳ）、ステップＳ３０１０に移行し、条件を満たさない場合には、ステップＳ３００３からステップＳ３００９の処理が行われる。
【０１０４】
ｃｎｔｙに２を足し、ＸＥＮＤから４を引き（ステップＳ３０１０）、ｃｎｔｙがｂｌより大きい場合は（ステップ３０１１；ＹＥＳ）、注目ブロックに対する処理が終了したと判断する。条件を満たさない場合（ステップ３０１１；ＮＯ）には、ステップＳ３００２からステップＳ３０１１の処理が行われる。
【０１０５】
次に、図２９を参照して、注目ブロックが画像データに対して左端以外だった場合について説明する。
【０１０６】
入力が素制御部２９０３は、カウンタ２９０４のｃｎｔｙを０、ｃｎｔｘを０に設定することで初期化を行う（ステップＳ３１０１、ステップＳ３１０２）。ｘｉに１４＋ｃｎｔｘを代入、ｙｉにｃｎｔｙを代入する（ステップＳ３１０３）。
【０１０７】
ここから誤差拡散処理を並列に実行する。ｃｎｔｙが９でないときは（ステップＳ３１０４；ＹＥＳ）、入力画素制御部２９０３は画素（ｘｉ、ｙｉ）を入力画像ブロックメモリ２９０２から読み出して誤差拡散処理部２９０５へ出力する（ステップＳ３１０５）。並行して、ｃｎｔｙが０でないときは（ステップＳ３１０６；ＹＥＳ）、入力画素制御部２９０３は画素（ｘｉ−３、ｙｉ−１）を入力画像ブロックメモリ２９０２から読み出して誤差拡散処理部２９０５へ出力する（ステップＳ３１０７）。
【０１０８】
ｃｎｔｘに１を足して（ステップＳ３１０８）、ｃｎｔｘがｂｌより大きい場合には（ステップＳ３１０９；ＹＥＳ）、ステップＳ３１１０に移行し、条件を満たさない場合には、ステップＳ３１０３からステップＳ３１０９の処理を行う。
【０１０９】
ｃｎｔｙに２を足して（ステップＳ３１１０）、ｃｎｔｙがｂｌより大きい場合には（ステップＳ３１１１；ＹＥＳ）、注目ブロックに対する処理が終了したと判断する。上記条件を満たさない場合には、ステップＳ３１０２からステップＳ３１１１の処理を行う。
【０１１０】
このような方法で入力画素制御部２９０３を制御することで、画像劣化を招かずにブロック内で誤差拡散処理を並列して実行することが可能となる。
【０１１１】
本実施形態では、２個の並列処理を例にしたが、並列にする個数はこれに限定するものではない。また、本実施形態では、ハーフトーン処理を行うために、誤差拡散処理を用いる場合について説明したが、この方法に限定されず、平均濃度保存法など、他の処理を用いても良い。
【０１１２】
[実施形態４]
以下、本発明の第４の実施形態に係る画像処理を説明する。  
本実施形態においては、ハーフトーン処理を並列化した場合を例として説明する。
【０１１３】
本実施形態でも画像処理部１０２で行われる図５の工程は変わらないので詳細の説明は割愛する。他の実施形態との差分としては、図２のハーフトーン処理部の数が複数に増え、図６のフローチャートが複数のハーフトーン処理部のための制御が増えることである。その点について詳細に説明を行う。
【０１１４】
図３１は画像処理部１０２の構成を示した図である。図３２は本実施形態で並列に誤差拡散処理を行うためのブロック制御を説明するための図である。図３３は画像処理部１０２の処理フローを示すフロー図である。
【０１１５】
図３２に示すように、入力画像は複数のブロックに分割されている。各ブロックはブロック位置情報ＢＸ、ＢＹによって表現することができる。Ｘ方向の位置をＢＸ、Ｙ方向の位置をＢＹとする。また、画像データは、Ｘ方向にＸＳＩＺＥ個、Ｙ方向にＹＳＩＺＥ個、合計ＸＳＩＺＥ×ＹＳＩＺＥ個のブロックがあるとする。
【０１１６】
図３３に示すように、まず、ブロック（０、０）とブロック（１、０）を図３２のハーフトーン処理部３２０７のメモリへ格納する（ステップＳ３４０１）。ブロック（０、１）とブロック（１、１）を図３２のハーフトーン処理部３２０８のメモリへ格納する（ステップＳ３４０２）。
【０１１７】
ＢＸとＢＹをそれぞれ０に設定する（ステップＳ３４０３）。  
ここから誤差拡散処理の並列処理を行う。ＢＸがＸＳＩＺＥより小さいとき（ステップＳ３４０４；ＹＥＳ）、ブロック（ＢＸ＋２、ＢＹ）をハーフトーン処理部３２０７のメモリに格納する（ステップＳ３４０５）。そして、ブロック（ＢＸ、ＢＹ）に対して誤差拡散処理をハーフトーン処理部３２０７で行う（ステップＳ３４０６）。
【０１１８】
ＢＸが３より大きいとき（ステップＳ３４０７；ＹＥＳ）、ブロック（ＢＸ＋２、ＢＹ＋１）をハーフトーン処理部３２０８のメモリに格納する（ステップＳ３４０８）。そして、ブロック（ＢＸ−３、ＢＹ＋１）に対して誤差拡散処理をハーフトーン処理部３２０８で行う（ステップＳ３４０９）。
【０１１９】
ＢＸに１を足して（ステップＳ３４０１）、ＢＸがＸＳＩＺＥ＋３より大きい場合は（ステップＳ３４１１；ＹＥＳ）、ステップＳ３４１２へ移行する。上記条件を満たさない場合は、ステップＳ３４０４からステップＳ３４１１の処理を行う。
【０１２０】
ＢＹに２を足して（ステップＳ３４１２）、ＢＹがＹＳＩＺＥより大きいとき（ステップＳ３４１３；ＹＥＳ）、全てのブロックに対する処理が終了したと判断する。上記条件を満たさない場合は、ステップＳ３４０４からステップＳ３４１３の処理を行う。
【０１２１】
このような方法で転送、処理するブロックを制御することで、画像劣化を招かずにブロック単位で誤差拡散処理を並列に処理することが可能となる。本実施形態では、実施形態３で必要なブロック内での誤差情報の受け渡しなどを制御する複雑な回路が必要でないので、実装がより容易である。
【０１２２】
本実施形態では、２個の並列処理を例にしたが、並列にする個数はこれに限定するものではない。また、本実施形態では、ハーフトーン処理を行うために、誤差拡散処理を用いる場合について説明したが、この方法に限定されず、平均濃度保存法など、他の処理を用いても良い。
【０１２３】
（その他の実施形態）
本発明は、複数の機器（例えばコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用することも、１つの機器からなる装置（複合機、プリンタ、ファクシミリ装置など）に適用することも可能である。
【０１２４】
前述した実施形態の機能を実現するように前述した実施形態の構成を動作させるプログラムを記憶媒体に記憶させ、該記憶媒体に記憶されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も上述の実施形態の範疇に含まれる。即ちコンピュータ読み取り可能な記憶媒体も実施例の範囲に含まれる。また、前述のコンピュータプログラムが記憶された記憶媒体はもちろんそのコンピュータプログラム自体も上述の実施形態に含まれる。
【０１２５】
かかる記憶媒体としてはたとえばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ―ＲＯＭ、磁気テープ、不揮発性メモリカード、ＲＯＭを用いることができる。
【０１２６】
また前述の記憶媒体に記憶されたプログラム単体で処理を実行しているものに限らず、他のソフトウエア、拡張ボードの機能と共同して、ＯＳ上で動作し前述の実施形態の動作を実行するものも前述した実施形態の範疇に含まれる。
【符号の説明】
【０１２７】
４０１  画像入力部
４０２  入力画像メモリ
４０３  入力画素制御部
４０４  カウンタ
４０５  誤差拡散処理部
４０６  出力画像メモリ
４０７  画像出力部
【図１】
2010205142.tif 000003
【図２】
2010205142.tif 000004
【図３】
2010205142.tif 000005
【図４】
2010205142.tif 000006
【図５】
2010205142.tif 000007
【図６】
2010205142.tif 000008
【図７】
2010205142.tif 000009
【図８】
2010205142.tif 000010
【図９】
2010205142.tif 000011
【図１０】
2010205142.tif 000012
【図１１】
2010205142.tif 000013
【図１２】
2010205142.tif 000014
【図１３】
2010205142.tif 000015
【図１４】
2010205142.tif 000016
【図１５】
2010205142.tif 000017
【図１６】
2010205142.tif 000018
【図１７】
2010205142.tif 000019
【図１８】
2010205142.tif 000020
【図１９】
2010205142.tif 000021
【図２０】
2010205142.tif 000022
【図２１】
2010205142.tif 000023
【図２２】
2010205142.tif 000024
【図２３】
2010205142.tif 000025
【図２４】
2010205142.tif 000026
【図２５】
2010205142.tif 000027
【図２６】
2010205142.tif 000028
【図２７】
2010205142.tif 000029
【図２８】
2010205142.tif 000030
【図２９】
2010205142.tif 000031
【図３０】
2010205142.tif 000032
【図３１】
2010205142.tif 000033
【図３２】
2010205142.tif 000034
【図３３】
2010205142.tif 000035