(57)【特許請求の範囲】
【請求項１】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶手段と、
前記記憶手段に記憶されたＮライン分のＮ画素の画像データのうちＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有する画像処理装置であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする画像処理装置。
【請求項２】
前記Ｎ個の要素プロセッサーが並列に処理する画像処理手段は、誤差拡散処理であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、隣接する要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記Ｎ個の要素プロセッサーを有する演算手段は、１ラインを構成するＸ画素をＮ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ個の誤差記憶手段を有することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
Ｙラインから構成される入力画像データをＮライン毎に分割したバンド数をＢＮＤとした場合、前記少なくともＢＬＫ×Ｎ個の誤差記憶手段に記憶された誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶工程と、
前記記憶工程によって記憶したＮライン分のＮ画素の画像データのうちＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有する画像処理方法であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする画像処理方法。
【請求項８】
前記Ｎ個の要素プロセッサーを用いて並列に処理する画像処理工程は、誤差拡散処理を実行することを特徴とする請求項７に記載の画像処理方法。
【請求項９】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、隣接する要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴とする請求項８に記載の画像処理方法。
【請求項１０】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴とする請求項８に記載の画像処理方法。
【請求項１１】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、１ラインを構成するＸ画素をＮ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ個の誤差を記憶する誤差記憶工程を有することを特徴とする請求項８に記載の画像処理方法。
【請求項１２】
Ｙラインから構成される入力画像データをＮライン毎に分割したバンド数をＢＮＤとした場合、前記誤差記憶工程で記憶する少なくともＢＬＫ×Ｎ個の誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴とする請求項１１に記載の画像処理方法。
【請求項１３】
請求項７乃至１２のいずれか１項に記載の画像処理方法をコンピュータに実行させるための制御プログラム。
【請求項１４】
請求項１３に記載の制御プログラムを記録したことを特徴とする記録媒体。
【請求項１５】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する手段と、
前記記憶する手段にＭライン分のＮ画素の画像データのうちＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有する画像処理装置であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする画像処理装置。
【請求項１６】
前記Ｎ個の要素プロセッサーのそれぞれは、１ライン中の連続する複数の画素の画像データを処理することを特徴とする請求項１５に記載の画像処理装置。
【請求項１７】
前記入力手段は、１ラインの画像データを１ライン中の奇数画素位置のＮ画素分の画像データと、偶数画素位置のＮ画素分の画像データとに分割して入力することを特徴とする請求項１５に記載の画像処理装置。
【請求項１８】
前記Ｎ個の要素プロセッサーが並列に処理する画像処理手段は、誤差拡散処理であることを特徴とする請求項１５に記載の画像処理装置。
【請求項１９】
前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、隣接する要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴とする請求項１８に記載の画像処理装置。
【請求項２０】
前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴とする請求項１８に記載の画像処理装置。
【請求項２１】
前記Ｎ個の要素プロセッサーを有する演算手段は、１ラインを構成するＸ画素をＮ×Ｍ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ×Ｍ個の誤差記憶手段を有することを特徴とする請求項１８に記載の画像処理装置。
【請求項２２】
Ｙラインから構成される入力画像データをＮライン毎に分割したバンドの数をＢＮＤとした場合、前記少なくともＢＬＫ×Ｎ×Ｍ個の誤差記憶手段に記憶された誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴とする請求項２１に記載の画像処理装置。
【請求項２３】
前記Ｎ個の要素プロセッサーのそれぞれは、１ライン入力画像データのライン方向に連続するＭ画素の画像データを処理することを特徴とする請求項１５に記載の画像処理装置。
【請求項２４】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する記憶工程と、
前記記憶工程によって記憶したＭライン分のＮ画素の画像データのうちＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有することを画像処理方法であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする画像処理方法。
【請求項２５】
前記Ｎ個の要素プロセッサーのそれぞれは、１ライン中の連続する複数の画素の画像データを処理することを特徴とする請求項２４に記載の画像処理方法。
【請求項２６】
前記入力工程は、１ラインの画像データを１ライン中の奇数画素位置のＮ画素分の画像データと、偶数画素位置のＮ画素分の画像データとに分割して入力することを特徴とする請求項２４に記載の画像処理方法。
【請求項２７】
前記Ｎ個の要素プロセッサーを用いて並列に処理する画像処理工程は、誤差拡散処理であることを特徴とする請求項２４に記載の画像処理方法。
【請求項２８】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、隣接する要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴とする請求項２７に記載の画像処理方法。
【請求項２９】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴とする請求項２７に記載の画像処理方法。
【請求項３０】
前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、１ラインを構成するＸ画素をＮ×Ｍ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ×Ｍ個の誤差を記憶する誤差記憶工程を有することを特徴とする請求項２７に記載の画像処理方法。
【請求項３１】
Ｙラインから構成される入力画像データをＮライン毎に分割したバンドの数をＢＮＤとした場合、前記誤差記憶工程で記憶する少なくともＢＬＫ×Ｎ×Ｍ個の誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴とする請求項３０に記載の画像処理方法。
【請求項３２】
請求項２４乃至３１のいずれか１項に記載の画像処理方法をコンピュータに実行させるための制御プログラム。
【請求項３３】
請求項３２に記載の制御プログラムを記録したことを特徴とする記録媒体。
【請求項３４】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶手段と、
前記記憶手段に記憶されたＮライン分のＮ画素の画像データのうち異なるラインの画像データを含むＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有することを特徴とする画像処理装置。
【請求項３５】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶工程と、
前記記憶工程によって記憶したＮライン分のＮ画素の画像データのうち異なるラインの画像データを含むＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有することを特徴とする画像処理方法。
【請求項３６】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する手段と、
前記記憶する手段にＭライン分のＮ画素の画像データのうち異なるラインの画像データを含むＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有することを特徴とする画像処理装置。
【請求項３７】
１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する記憶工程と、
前記記憶工程によって記憶したＭライン分のＮ画素の画像データのうち異なるラインの画像データを含むＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル信号で表される画像データをＳＩＭＤ型のプロセッサーに基づいて処理する画像処理装置、画像処理方法、制御プログラム及び記録媒体に関する。
【０００２】
【従来の技術】
現在、コピー機、ファクシミリ、プリンター、スキャナーといった画像処理装置の複合機として構成された、いわゆるＭＦＰ（Multi Function Printer）と呼ばれる画像処理装置がある。このようなＭＦＰの画像処理部に、ＳＩＭＤ（Single Instruction stream Multiple Data stream）型のプロッセッサーを使用することにより、高速、かつプログラマブルに画像を処理する技術が例えば特開平８−３１５１２６号公報に記載されている。
【０００３】
また、従来、ＭＦＰでは、スキャナーにて読み取られた多値の原稿画像データを２値プリンタに出力する際には、原稿画像データの中間調を擬似的に表現するための、誤差拡散処理を行なうものがある。誤差拡散処理は、注目画素を２値化する際に発生した２値化誤差に基づいて、後に２値化される注目画素の多値データの補正が行なわれる逐次処理である。
【０００４】
このような誤差拡散処理をＳＩＭＤ型の演算処理部と、逐次的な処理を補助演算部を用いて行なう技術が特開２００１−２７４９９３号公報に記載されている。
【０００５】
【発明が解決しようとする課題】
しかしながら上記従来例では、誤差拡散に代表される逐次処理を行なうために、ＳＩＭＤ型演算処理部の他に補助演算部を必要とするため、回路規模の増大、コストアップの要因となっていた。さらには、ＳＩＭＤ型演算処理部と、前記補助演算部とのインターフェース回路ブロックの増加、インターフェース制御等も必要となり、非効率的な構成となっていた。
【０００６】
本発明は上述した課題に鑑みてなされたものであり、その目的は、逐次処理を行なうための補助的な演算処理部を利用することなくＳＩＭＤ型演算処理部を用いて、例えば誤差拡散処理等の画像処理を行なうことが可能な画像処理装置、画像処理方法、制御プログラム及び記録媒体を提供することにあり、さらには、ラスタースキャンによる１ラインの入力画像データの画素数が、ＳＩＭＤ型プロセッサーが有する演算処理部の個数以上の場合であっても、ＳＩＭＤ型プロセッサーが有する複数の演算処理部を効率よく動作させながら逐次処理が可能な画像処理装置、画像処理方法、制御プログラム及び記録媒体を提供することにある。
【０００７】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するために、本発明に係わる画像処理装置は、１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶手段と、
前記記憶手段に記憶されたＮライン分のＮ画素の画像データのうちＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有する画像処理装置であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする。
【０００９】
また、この発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーが並列に処理する画像処理手段は、誤差拡散処理であることを特徴としている。
【００１０】
また、この発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、隣接する要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴としている。
【００１１】
また、この発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴としている。
【００１２】
また、この発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、１ラインを構成するＸ画素をＮ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ個の誤差記憶手段を有することを特徴としている。
【００１３】
また、この発明に係わる画像処理装置において、Ｙラインから構成される入力画像データをＮライン毎に分割したバンド数をＢＮＤとした場合、前記少なくともＢＬＫ×Ｎ個の誤差記憶手段に記憶された誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴としている。
【００１４】
また、本発明に係わる画像処理方法は、１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮライン分記憶する記憶工程と、
前記記憶工程によって記憶したＮライン分のＮ画素の画像データのうちＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有する画像処理方法であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする。
【００１６】
また、この発明に係わる画像処理方法において、前記Ｎ個の要素プロセッサーを用いて並列に処理する画像処理工程は、誤差拡散処理を実行することを特徴としている。
【００１７】
また、この発明に係わる画像処理方法において、前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、隣接する要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴としている。
【００１８】
また、この発明に係わる画像処理方法において、前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出させる工程を有し、各要素プロセッサ−に対し、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて入力された画像データを処理させることを特徴としている。
【００１９】
また、この発明に係わる画像処理方法において、前記Ｎ個の要素プロセッサーを用いて演算を行なう演算工程は、１ラインを構成するＸ画素をＮ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ個の誤差を記憶する誤差記憶工程を有することを特徴としている。
【００２０】
また、この発明に係わる画像処理方法において、Ｙラインから構成される入力画像データをＮライン毎に分割したバンド数をＢＮＤとした場合、前記誤差記憶工程で記憶する少なくともＢＬＫ×Ｎ個の誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴としている。
【００２１】
また、本発明に係わる制御プログラムは上記の画像処理方法をコンピュータに実行させることを特徴としている。
【００２２】
また、本発明に係わる記録媒体は、上記の制御プログラムを記録したことを特徴としている。
【００２３】
また、本発明に係わる画像処理装置は、１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理装置において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを有する演算手段と、
１ラインの画像データをＮ画素毎に分割して入力する入力手段と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する手段と、
前記記憶する手段にＭライン分のＮ画素の画像データのうちＮ個の画像データを前記演算手段のＮ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理手段とを有する画像処理装置であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする。
【００２５】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーのそれぞれは、１ライン中の連続する複数の画素の画像データを処理することを特徴としている。
【００２６】
また、この本発明に係わる画像処理装置において、前記入力手段は、１ラインの画像データを１ライン中の奇数画素位置のＮ画素分の画像データと、偶数画素位置のＮ画素分の画像データとに分割して入力することを特徴としている。
【００２７】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーが並列に処理する画像処理手段は、誤差拡散処理であることを特徴としている。
【００２８】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、隣接する要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴としている。
【００２９】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、Ｎ個の要素プロセッサー毎に誤差拡散処理にて発生した量子化誤差を誤差値として算出する手段を有し、各要素プロセッサ−は、少なくとも直前に該要素プロセッサーが算出した誤差値に基づいて各要素プロセッサーに入力された画像データを処理することを特徴としている。
【００３０】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーを有する演算手段は、１ラインを構成するＸ画素をＮ×Ｍ画素毎に分割したブロック数をＢＬＫとした場合、少なくともＢＬＫ×Ｎ×Ｍ個の誤差記憶手段を有することを特徴としている。
【００３１】
また、この本発明に係わる画像処理装置において、Ｙラインから構成される入力画像データをＮライン毎に分割したバンドの数をＢＮＤとした場合、前記少なくともＢＬＫ×Ｎ×Ｍ個の誤差記憶手段に記憶された誤差データは、異なるＢＮＤに属する画像データを処理する際に利用されることを特徴としている。
【００３２】
また、この本発明に係わる画像処理装置において、前記Ｎ個の要素プロセッサーのそれぞれは、１ライン入力画像データのライン方向に連続するＭ画素の画像データを処理することを特徴としている。
【００３３】
また、本発明の画像処理方法は、１ラインがＸ画素からなるＹライン分の入力画像データをＳＩＭＤ型プロセッサーを用いて処理する画像処理方法において、
Ｎ（Ｘ＞Ｎ＞１、Ｙ＞Ｎ＞１）個の並列動作可能な要素プロセッサーを用いて演算する演算工程と、
１ラインの画像データをＮ画素毎に分割して入力する入力工程と、
前記分割して入力されたＮ画素データをＮ×Ｍ（Ｍは自然数）ライン分記憶する記憶工程と、
前記記憶工程によって記憶したＭライン分のＮ画素の画像データのうちＮ個の画像データを前記Ｎ個の要素プロセッサーにそれぞれ供給し、各要素プロセッサーに同種の演算を並列に実行させる画像処理工程とを有することを画像処理方法であって、
前記Ｎ個の要素プロセッサーに供給され並列に処理されるＮ個の画像データは、それぞれ異なるラインの入力画像データであることを特徴とする。
【００３４】
また、本発明に係わる制御プログラムは上記の画像処理方法をコンピュータに実行させることを特徴としている。
【００３５】
また、本発明に係わる記録媒体は、上記の制御プログラムを記録したことを特徴としている。
【００３６】
【発明の実施の形態】
（画像処理装置の全体説明）
まず、本実施の形態にかかる画像処理装置の原理について説明する。図１は、この発明の本実施の形態にかかる画像処理装置の構成を機能的に示すブロック図である。図１において、画像処理装置は、以下に示す５つのユニットを含む構成である。
【００３７】
上記５つのユニットとは、画像データ制御ユニット１００と、画像データを入力する画像データ入力ユニット１０１と、画像を蓄積する画像メモリーを制御して画像データの書き込み／読み出しをおこなう画像メモリー制御ユニット１０２と、画像データに対し加工編集等の画像処理を施す画像処理ユニット１０３と、画像データを転写紙等に書き込む画像書込ユニット１０４である。
【００３８】
上記各ユニットは、画像データ制御ユニット１００を中心に構成されている。すなわち、画像データ入力ユニット１０１、画像メモリー制御ユニット１０２、画像処理ユニット１０３、画像書込ユニット１０４は、いずれも画像データ制御ユニット１００に接続されている。以下、この各ユニットについて、それぞれ説明する。
【００３９】
画像データ制御ユニット１００によりおこなわれる処理は以下である。
【００４０】
制御データバスインターフェース処理、全体システム制御、ローカルバス制御処理（システム・コントローラーを起動させるためのＲＯＭ、ＲＡＭ、アクセス制御処理）、画像データ入力ユニット１０１とのインターフェース処理、画像メモリ制御ユニット１０２とのインターフェース処理、画像処理ユニット１０３とのインターフェース処理、画像書込みユニット１０４とのインターフェース処理、ネットワーク制御処理等である。
【００４１】
画像データ入力ユニット１０１によりおこなわれる処理は以下である。
【００４２】
システム・コントローラーとのインターフェース制御処理、光学系による原稿反射光の読み取り処理、ＣＣＤ（Charge  Coupled  Device：電荷結合素子）等を用いた電気信号への変換処理、Ａ/Ｄ変換器でのディジタル化処理、シェーディング補正処理（光源の照度分布ムラを補正する処理）、読み取り系の濃度特性を補正する処理、ネットワークを介して入力されるＰＤＬ画像データのラスタライズ処理等である。
【００４３】
画像メモリー制御ユニット１０２によりおこなわれる処理は以下である。
【００４４】
システム・コントローラーとのインターフェース制御処理、メモリー部への書き込み・読み出し処理、メモリー・モジュールへのアクセス制御処理（複数のユニットからのメモリー・アクセス要求の調停処理）等である。
【００４５】
画像処理ユニット１０３によりおこなわれる処理は以下である。
【００４６】
色変換処理、色補正処理、ＭＴＦ補正処理、平滑化処理、主走査方向の任意変倍処理、濃度変換（γ変換処理：濃度調整キーに対応）、単純二値化処理、各種擬似中間調処理、ドット配置位相制御処理（ジャギー補正）、像域分離処理（色判定、属性判定、適応処理）、密度変換処理、等である。
【００４７】
画像書込ユニット１０４によりおこなわれる処理は以下である。
【００４８】
画像信号のパルス制御処理、パラレルデータとシリアルデータのフォーマット変換処理、等である。
【００４９】
（ディジタル複合機のハードウエア構成）
次に、本実施の形態にかかる画像処理装置がディジタル複合機を構成する場合のハードウエア構成について説明する。図２は本実施の形態にかかる画像処理装置のハードウエア構成の一例を示すブロック図である。
【００５０】
図２のブロック図において、本実施の形態にかかる画像処理装置は、読取ユニット２０１と、ＰＤＬ処理ユニット２０２と、画像データ制御部２０３と、画像処理プロセッサー２０４と、作像ユニット２０５、メモリ制御部２０６、メモリモジュール２０７、ネットワーク制御部２１４、ワーキングメモリ２１６とを備える。また、本実施の形態にかかる画像処理装置は、制御用データバス２０８を介して、システムコントローラー２０９と、ＲＯＭ２１０と、ＲＡＭ２１１、操作パネル２１２とを備える。さらに、ネットワーク２１３を介して、パーソナルコンピュータ２１５に接続されている。
【００５１】
上記した構成のうち、画像処理プロセッサー２０４は、画像に基づいて作成されたディジタル信号である画像データを顕像として出力できるように処理し、複数の画像形成動作を実現できるプログラマブルな画像処理手段である。また、画像データ制御部２０３は、画像データを伝送するデータバスと画像処理プロセッサー２０４による画像処理に用いられる処理ユニット間の画像データ伝送を一括して管理する画像データ伝送管理手段であり、読取ユニット２０１、ＰＤＬ処理ユニット２０２、画像処理プロセッサー２０４、メモリ制御部２０６、作像ユニット２０５、ネットワーク制御部２１４間のデータ伝送管理を行なう。なお、本発明は、主に画像処理プロセッサー２０４に関するもので、画像処理プロセッサー２０４の構成については、図３以降の図面を用いて詳細に説明するものとする。
【００５２】
また、本実施の形態にかかる画像処理装置は、画像データ記憶管理手段として、画像メモリー制御部２０６に接続されるメモリー・モジュール２０７を備える。
【００５３】
ここで、上記各構成部と、図１に示した各ユニット１００〜１０４との関係について説明する。すなわち、読取ユニット２０１およびＰＤＬ処理ユニット２０２により、図１に示した画像データ入力ユニット１０１の機能を実現する。また同様に、画像データ制御部２０３、システムコントローラ２０９、ＲＯＭ２１０、ＲＡＭ２１１、操作パネル２１２、ネットワーク制御部２１４により、画像データ制御ユニット１００の機能を実現する。また同様に、画像処理プロセッサー２０４、ワーキングメモリ２１６により画像処理ユニット１０３の機能を実現する。
【００５４】
また同様に作像ユニット２０５により画像書込ユニット１０４を実現する。また同様に、メモリー制御部２０６およびメモリー・モジュール２０７により画像メモリー制御ユニット１０２を実現する。
【００５５】
尚、システムコントローラ２０９は、制御用データバス２０８を介して接続されたＲＯＭ２１０に記憶された制御プログラムに基づき動作するものであり、ＲＡＭ２１１をワーク用メモリとして使用している。また、読取ユニット２０１、ＰＤＬ処理ユニット２０２、画像データ制御部２０３、画像処理プロセッサー部２０４、作像ユニット２０５、メモリ制御部２０６、ネットワーク制御部２１４、操作パネル２１２は、制御用データバス２０８を介して、システムコントローラ２０９に動作が制御されるものである。
【００５６】
各構成部の内容について説明する。原稿を光学的に読み取る読取ユニット２０１は、ランプとミラーとレンズ、受光素子から構成され、原稿に対するランプ照射の反射光をミラーおよびレンズにより受光素子に集光する。
【００５７】
受光素子、たとえばＣＣＤにおいて電気信号に変換された画像データはディジタル信号に変換された後、読取ユニット２０１より出力（送信）される。
【００５８】
ＰＤＬ処理ユニット２０２は、ネットワーク２１３に接続されたパーソナルコンピュータ２１５より出力されたＰＤＬ画像データをビットマップ画像へラスタライズするユニットである。ネットワーク２１３を介して入力されたＰＤＬ画像データがネットワーク制御部２１４を介して、ＰＤＬ処理ユニット２０２に入力されると、ＰＤＬ処理ユニット２０２は、入力されたＰＤＬ画像データに基づいたラスタライズを行ない、ビットマップ画像データを出力（送信）する。以上のように、読取ユニット２０１、 ＰＤＬ処理ユニット２０２より出力（送信）された画像データは画像データ制御部２０３に入力（受信）される。
【００５９】
読取ユニット２０１、 ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データは、画像データ処理プロセッサー部２０４、または、メモリ制御部２０６に出力される。
【００６０】
まず、画像処理プロセッサー部２０４に出力される場合の動作について説明する。
【００６１】
画像処理プロセッサ部２０４に入力された画像データは、ワーキングメモリー２１６を用いながら画像処理プロセッサー部２０４にて処理が行なわれた後、再度画像データ制御部２０３に出力される。画像処理プロセッサー部２０４より、画像データ処理部２０３に入力された画像データは、メモリ制御部２０６に出力され、メモリ制御部２０６を介して、メモリモジュール２０７に記憶される。
【００６２】
画像処理プロセッサー部２０４による１画面分の画像データの処理が終了し、１画面分の処理済みデータが、メモリモジュールに記憶された後、メモリー制御部２０６は、メモリーモジュール２０７に対する画像データの読み出しを行ない読み出された画像データを画像データ制御部２０３を介して、作像ユニット２０５に出力し、プリント出力を得る。あるいは、メモリモジュール２０７より読み出された画像データを画像データ制御部２０３より、ネットワーク制御部２１４に出力し、ネットワーク２１３を介して、パーソナルコンピュータ２１５に出力するように動作する。
【００６３】
次に、読取ユニット２０１、 ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データをメモリ制御部２０６に出力する場合の動作について説明する。画像データ制御部２０３より、メモリ制御部２０６に入力された画像データは、メモリモジュール２０７に記憶される。次に、メモリ制御部２０６は、メモリモジュール２０７より、記憶された画像データを読み出し、画像データ制御部２０３を介して、画像処理プロセッサー部２０４に出力する。画像処理プロセッサー部２０４では、入力された画像データを処理し、処理後の画像データを、再度画像データ制御部２０３、メモリ制御部２０６を介して、メモリモジュール２０７に記憶する。画像処理プロセッサー部２０４による１画面分の画像データの処理が終了し、１画面分の処理済みデータが、メモリモジュール２０７に記憶された後、メモリー制御部２０６は、メモリーモジュール２０７に対する画像データの読み出しを行ない読み出された画像データを画像データ制御部２０３を介して、作像ユニット２０５に出力し、プリント出力を得る。あるいは、メモリモジュール２０７より読み出された画像データを画像データ制御部２０３より、ネットワーク制御部２１４に出力し、ネットワーク２１３を介して、パーソナルコンピュータ２１５に出力するように動作する。
【００６４】
上記動作例は、読取ユニット２０１、 ＰＤＬ処理ユニット２０２より出力された画像データに対する処理を画像処理プロセッサー部２０４により行ない、１画面分の処理済み画像データがメモリモジュール２０７に記憶された後、メモリモジュール２０７より、処理済画像データの読み出しを行ない、作像ユニット２０５、あるいは、ネットワーク制御部２１４に出力する例を示したが、処理済み画像データの記憶が１画面分終了する前に、処理済みの画像データをメモリモジュール２０７より読み出しを開始するように制御してもよい。
【００６５】
さらには、メモリモジュール２０７に画像データを記憶させない動作例について説明する。
【００６６】
読取ユニット２０１、 ＰＤＬ処理ユニット２０２より画像データ制御部２０３が受信した画像データは、画像データ制御部２０３より、画像処理プロセッサー部２０４に出力される。画像処理プロセッサー部２０４では、入力された画像データに所定の処理を行ない、画像データ制御部２０３に出力する。画像処理プロセッサー部２０４より、画像データ制御部２０３に入力された画像データは、画像データ制御部２０３を介して、作像ユニット２０５、ネットワーク制御部２１４に出力される。
【００６７】
メモリー・モジュール２０７に処理済みの画像データ１面分を記憶する場合の動作例としては、１枚の原稿について複数枚を複写する場合に、読取ユニット２０１を１回だけ動作させ、読取ユニット２０１により読み取った画像データをメモリー・モジュール２０７に記憶し、記憶された画像データを複数回読み出すという方法がある。
【００６８】
メモリー・モジュール２０７に画像データを記憶させない動作例としては、１枚の原稿を１枚だけ複写する場合がある。読み取り画像データに対する処理済みデータを直接作像ユニット２０５に出力すればよいので、メモリー・モジュール２０７へのアクセスをおこなう必要はない。
【００６９】
尚、本装置の全体の動作は、操作パネル２１２より入力された、画像処理装置がおこなうべき処理に基づいてシステムコントローラ２０９により制御される。操作パネル２１２からは、処理の種類（複写、送信、画像読込、プリント等）および処理の枚数等を入力することができる。
【００７０】
図３は、図２に示した本実施の形態の画像処理プロセッサー部２０４の構成を説明するための図である。図示した画像処理プロセッサー部２０４は、ＦＩＦＯメモリ３０１、３０７と、演算処理ユニット３００から構成され、演算処理ユニット３００は、入力レジスタ３０２、出力レジスタ３０４、ＳＩＭＤ型のデータ演算処理部３０３からなるＳＩＭＤプロセッサー３０８と、制御プロセッサー部３０５、外部メモリインターフェース３０６を有している。なお、ＳＩＭＤとは、複数のデータに対し、単一の命令を並列に実行させるもので、本実施の形態では、１２８個のＰＥによりデータ演算処理部３０３が構成されている。ＦＩＦＯメモリ３０１は、読取ユニット２０１、または、ＰＤＬ処理ユニット２０２より入力される画像データ１ライン分(７１６８画素)の容量を有するファーストイン、ファーストアウトのメモリであり、書込みと読み出しが独立に制御される。画像データ制御部２０３のデータバスＡより入力された画像データは、ＦＩＦＯメモリ３０１に入力され、データ演算処理部３０３が有するＰＥの数と等しいレジスタ数で構成された入力レジスタ３０２に１２８個分の画像データとして５６分割して入力される。ＦＩＦＯメモリ３０１より、入力レジスタ３０２に入力された画像データは、データ演算処理部３０３、外部メモリインターフェース３０６に出力される。データ演算処理部３０３に入力された画像データは、データ演算処理部３０３にて所定の処理が行なわれ、処理後の画像データが、出力レジスタ３０４、外部メモリインターフェース３０６に出力される。尚、外部メモリインターフェース３０６には、データ演算処理部３０３で処理された中間データを出力することも、可能な構成となっている。出力レジスタ３０４は、入力レジスタ３０２と同様に、データ演算処理部３０３が有するＰＥ数と等しいレジスタ数で構成されている。出力レジスタ３０４の出力画像データは、画像データ１ライン分の容量を有するＦＩＦＯメモリ３０７に入力される。ＦＩＦＯメモリ３０７は、書込みと読み出しが独立に制御されるファーストイン、ファーストアウトのメモリである。ＦＩＦＯメモリ３０７より出力される画像データ信号は、データバスＢを介して画像データ制御部２０３に出力される。さらに、ＳＩＭＤプロセッサー３０８及び外部メモリーインターフェイス３０６は、図２に示した制御用データバス２０８に接続された制御プロセッサ部３０５と接続されている。制御プロセッサ部３０５は、データ演算処理部３０３のＰＥに対する命令の供給、各ＰＥのステータスの判断、各ＰＥに接続されたメモリ、レジスタへのデータの入出力等の制御及び外部メモリーインターフェイス部３０６を制御し、ＳＩＭＤプロセッサー３０８の内部メモリーやレジスターとワーキングメモリー２１６間のデータ制御を行なうものである。尚、制御プロセッサー３０５とＳＩＭＤプロセッサー３０８は互いに異なる処理を独立に実行することが可能である。
【００７１】
次に、ＳＩＭＤ型プロセッサーを構成するデータ演算処理部３０３を含む演算処理ユニット３００の概略ブロックを図４に示し説明する。
【００７２】
図４中、３０５は、図３に示した制御プロセッサー部を示し、制御プロセッサー４０１および、制御プロセッサ及びＳＩＭＤプロセッサーの動作を制御するプログラムが格納されたプログラムメモリ４０２、データメモリ４０３より構成される。４０４は、ＳＩＭＤプロセッサー３０８を構成するひとつのＰＥを示し、前述したように、本実施の形態におけるＳＩＭＤプロセッサー３０８は１２８個のＰＥ（ＰＥ０〜ＰＥ１２７）により構成されている。
【００７３】
図４に示したように、それぞれのＰＥは、８ビットの演算ユニット（ＡＬＵ）４０５と、８ビットのレジスタ１６本から構成される汎用レジスタ４０６、ＡＬＵの演算動作を実施するか否かを制御するマスクレジスタ４０７、演算途中のデータを格納するＰＥレジスタ４０８、出力レジスタ４０９、入力レジスタ４０８、２Ｋバイトの容量を有するメモリ４１１から構成される。ＡＬＵ４０５、ＰＥレジスタ４０８は、隣接するＰＥ間における同一構成要素との接続がなされており、データの入出力が可能な構成となっている。また、出力レジスタ４０９、入力レジスタ４１０も隣接するＰＥ間の同一構成要素との接続が行なわれており、１２８段のシフトレジスタとして動作する。尚、図３中の入力レジスタ３０２、出力レジスタ３０４に相当するブロックには同一符号を付して図４に示してある。
【００７４】
また、各ＰＥにおけるメモリ４１１は、外部メモリインターフェースを介して、データバスＣより、ワーキングメモリー２１６に接続される。
【００７５】
尚、同一ＰＥを構成するＡＬＵ４０５、汎用レジスタ４０６、マスクレジスタ４０７、ＰＥレジスタ４０８、出力レジスタ４０９、入力レジスタ４１０、メモリ４１３は、任意のブロック間におけるデータの入出力が可能な構成となっており、例えば、メモリ４１１からＰＥレジスタ４０８へのデータ入出力、ＰＥレジスタ４０８から外部メモリインターフェース３０６へのデータ入出力が可能な構成となっている。
【００７６】
各ＰＥに対する命令の供給は、制御プロセッサー４０１より、命令供給バス４１３を介して各ＰＥに同一内容で与えられ、全てのＰＥが同一の命令に従った動作を行なうように制御されるが、各ＰＥに与える処理対象のデータを異ならせることにより、各ＰＥが、異なる処理対象データに対する演算処理を並列に行なうように制御される。たとえば、画像データ１ライン中の１２８画素の内容を各画素ごとにＰＥレジスタに配置し、同一の命令コードでＰＥレジスタに対する演算処理をさせれば、１画素ずつ逐次処理するよりも短時間で１２８画素分の処理結果が得られる。
【００７７】
各ＰＥのＡＬＵ４０５における演算結果、および、ＰＥレジスタ４０８の内容は、隣接するＰＥ間で入出力可能な構成となっていることにより、隣接ＰＥのＰＥレジスタ４０８、および、ＡＬＵ４０５の演算結果を参照した演算処理が各ＰＥで行なうことも可能な構成となっている。さらに、各ＰＥのメモリ４１１および、入力レジスタ４１０、出力レジスタ４０９、ＰＥレジスタ４０８、マスクレジスタ４０７、汎用レジスタ４０６は、メモリ／レジスタアクセスバス４１４を介して制御プロセッサ４０１に接続され、メモリ、および、各レジスタデータの入出力が、制御プロセッサ４０１により制御される。
【００７８】
また、制御プロセッサ４０１は、制御用データバス２０８を介して、図２中のシステムコントローラ２０９と制御データの入出力が可能な構成となっている。さらに、制御プロセッサ４０１の動作を制御するプログラムメモリ４０２、および、データメモリ４０３は、制御用データバス２０８を介してシステムコントローラ２０９よりアクセス可能な構成となっており、 システムコントローラ２０９により、画像処理ユニット３００で行なう処理内容に応じて、制御プロセッサ４０１の動作を制御するプログラムメモリ４０２の書き換えが可能な構成となっている。
【００７９】
（第１の実施の形態）
本発明を誤差拡散処理に適用した第１の実施の形態を以下に詳細に説明する。
【００８０】
図５は、図２中の読取ユニット２０１より出力されるＡ４原稿画像データ配置を示す。図中の主走査方向が、読取ユニット２０１に設けられたＣＣＤの画素並び方向を表しこれをライン方向と呼ぶ。また、主走査（ライン）方向の読取領域を副走査方向に順次走査することにより、２次元的な原稿画像データの読取動作が行なわれる。なお、本実施の形態では、読取ユニット２０１の読取解像度は６００dpiと設定されており、Ａ４原稿画像は、主走査方向には、７１６８画素、副走査方向には、４９９２画素の２次元データとなる。上記は、読取ユニット２０１より出力される原稿画像データの例を示したが、ＰＤＬ処理ユニット２０２より出力される画像データが、Ａ４サイズのプリントデータに相当する場合には、図５に示した画像データと同一配置となる。以下では、読取ユニット２０１から出力された画像データを処理する例を説明するが、ＰＤＬ処理ユニット２０２からの出力画像データを処理する場合であっても同様である。
【００８１】
読取ユニット２０１から出力されたＡ４原稿画像データは、画像データ制御部２０３に入力され、図３に示した、画像処理プロセッサー部２０４のＦＩＦＯメモリ３０１に入力される。図６にＦＩＦＯメモリ３０１の動作の概要を示す。
【００８２】
ＦＩＦＯメモリ３０１は、１ライン分（７１６８画素）の容量を有するラインメモリであり、読取ユニット２０１が出力する原稿画像データに同期したクロックにより、ＦＩＦＯメモリ３０１に入力画像データをライトする。リードクロックは、画像処理ユニット３００より出力されるクロックであり、ＦＩＦＯメモリに１２８画素分の画像データがライトされた後の、リード開始（０）のタイミングより、１２８画素分の画像データのリード動作が開始される。なお、本実施の形態では、ＦＩＦＯメモリ３０１へのライトクロックが２０ＭＨｚ、リードクロックは、１００ＭＨｚと設定されており、ライトクロックに対してリードクロックが高速なものとなっている。ＦＩＦＯメモリ３０１より読み出された画像データは、ＦＩＦＯ３０１のリードクロックと同期したシフトクロックにより図３中の入力レジスタ３０１に入力される。入力レジスタ３０１に１２８画素分の画像データが入力されると、入力レジスタに入力された１２８画素分の画像データは、図３中の外部メモリインターフェース３０６を介してワーキングメモリ２１６に記憶される。なお、この間も連続的にＦＩＦＯ３０１には入力画像データのライト動作が行なわれている。さらに、ＦＩＦＯメモリに２５６画素分の画像データがライトされた後のリード開始（１）のタイミングより、１２８画素分の画像データのリード動作が開始され、上述したのと同様の動作にて、１２８〜２５６画素目の画像データが、ワーキングメモリ２１６に記憶される。
【００８３】
以上の動作を繰り返し、１ライン７１６８画素の画像データは、１２８画素づつ、５６回に分けてワーキングメモリ２１６に記憶される。さらに、連続するラインの画像データも同様にして、ワーキングメモリ２１６に、１２８画素単位で記憶される。なお、ＦＩＦＯメモリ３０１のライトクロックに対するリードクロックの速度は、ＦＩＦＯメモリに入力される画像データを取りこぼしなく、１２８画素単位で、入力レジスタに入力し、ワーキングメモリ２１６に転送することが可能な速度であれば、上記速度に限定されるものではない。
【００８４】
図７は、ワーキングメモリ２１６に記憶された画像データとワーキングメモリのアドレスとの関係を模式的に示した図である。ワーキングメモリのアドレスは、連続する１２８画素分のデータを１ラインとするデータブロック毎に０から割り振られているものであり、ワーキングメモリのラインアドレス０〜５５に記憶された画像データが、入力された画像データの先頭１ラインに相当するものである。なお、入力レジスタ３０２よりワーキングメモリ２１６へのデータ転送の起動および、ワーキングメモリのアドレス制御は、図３中の制御プロセッサー３０５により動作が制御されるものである。
【００８５】
次に、図３中のデータ演算処理部３０３における動作を図８のフローを用いて説明する。Step_１にて、１２８ライン分の入力画像データがワーキングメモリ２１６に取り込まれるまで待機する。ワーキングメモリ２１６に１２８ライン分の入力画像データ取り込みが終了するとフローは、Step_２に進む。なお、入力画像のワーキングメモリへの取り込みは、以下のフローを実施している間もＡ４サイズの原稿画像に相当する４９９２ライン分が取り込まれるまで継続して行なわれている。Step_２にて変数の初期化が行なわれる。ここで、変数に関して説明する。演算ユニット３００にて用いられる変数としては、データ演算処理部の各ＰＥが並列に持つ変数と、並列に持たない変数がある。各ＰＥが並列に持つ変数とは、各ＰＥそれぞれに割り当てられた変数でありこれをsep型変数と呼ぶ。sep型変数は各ＰＥ毎に異なる値として使用することが可能となっており、sep型で宣言された変数は、ひとつの変数につき本実施の形態のデータ演算処理部３０３を構成するＰＥの個数と等しい１２８個が設けられることになる。各ＰＥが並列に持たない変数を用いた演算を各ＰＥが並列に行なう場合には、各ＰＥが共通の変数値を参照するのに対して、各ＰＥが並列に持つ変数を用いた演算を各ＰＥが並列に行なう場合には、変数名が同一だが、各ＰＥがそれぞれ異なる変数値を参照することが可能となる。
【００８６】
Step_２では、変数Ｎ（ワーキングメモリのラインアドレス）、Ｌ（データ転送回数）、ＢＮＤ（バンド）、ＢＬＫ（ブロック）の初期化、および、sep型変数i(つなぎ誤差のインデックス）、 sep型変数ＥＲＲＢ［０］〜ＥＲＲＢ［５５］（つなぎ誤差データ５６個）の初期化を行なう。ここで、ＢＮＤ（バンド）とは、入力画像データの副走査方向の１２８ラインを１バンドとする変数、ＢＬＫ（ブロック）とは、入力画像データの主走査方向の１２８画素を１ブロックとする変数であり、Ａ４サイズの原稿画像データ；主走査画素数＝７１６８、副走査ライン数＝４９９２に対しては、ＢＮＤは、０〜３８、ＢＬＫおよびiは、０〜５５の値をとる。また、sep型変数ＥＲＲＢ［０］〜ＥＲＲＢ［５５］は、２値化処理により発生した２値化誤差の副走査方向への分配成分を記憶するメモリであり、各ＰＥそれぞれにつき５６個が設けられている。５６個とは上述した、主走査方向に配置されるＢＬＫ数と等しいものとなっている。２値化誤差の副走査方向への分配は、副走査方向に連続する同一ＢＬＫ間にて各ＰＥが行なうものである。
【００８７】
次にStep_３にて、ワーキングメモリ２１６のラインアドレスＮの１２８画素分のデータをデータ演算処理部３０３の各ＰＥが有するメモリ４１１に転送する。Ｌ％１２８は、Ｌを１２８で割り算した余りの数値を示し、Ｌを１２８で割り算した余りがメモリ４１１の転送先アドレスとなる。Ｌを１２８で割り算した余りとは、Ｌの下位７ビットの値と等価である。
【００８８】
図９の（ａ）は、Ｌ＝０の時に、ワーキングメモリ２１６よりメモリ４１１に転送された画像データの配置を示す。この場合には、最初の主走査１２８画素分の画像データが、各ＰＥが有するメモリ４１１のアドレス０に、１画素づつ記憶される。
【００８９】
次にsep型変数Ｋに、（Ｌ―ＰＥＮＵＭ）を１２８で割り算した余りを代入する。この演算は各ＰＥにて並列実行されるものである。ＰＥＮＵＭは、プロセッサーエレメントＰＥ０に対して０、ＰＥ１に対して１、・・・・、ＰＥ１２７に対して１２７が割り当てられたシステム定数であり、各ＰＥに対応するsep型変数Ｋの値は、Ｌの値に応じて図１０のように算出される。
【００９０】
次にフローはstep_４に進み、各ＰＥにおいて並列に、ＰＥＮＵＭ＝０、かつＢＬＫ＝０か否かが判定され、ＰＥＮＵＭ＝０、かつＢＬＫ＝０の場合には、step_５に、そうでない場合には、step_６に分岐する。ＰＥＮUＭ=０は、プロセッサエレメントＰＥ０に割り当てられたシステム定数であり、ＰＥ０以外のプロセッサーエレメントのＰＥＮＵＭが’０’と等しくなることはなく、ＰＥ１〜ＰＥ１２７のプロセッサエレメントにおいては常にStep_６が実行されることになる。
【００９１】
Step_５では、プロセッサーエレメントＰＥ０に対応したsep型変数ＥＲｈに０が代入される。Step_６では、ＰＥ１〜ＰＥ１２７のプロセッサエレメントに対応したsep型変数ＥＲｈにsep型変数ＥＲＲ’/２を代入する。ここで、変数ＥＲｈは注目画素を２値化した際の２値化誤差の主走査方向への分配値を示し、後述するsep型変数ＥＲｖは、副走査方向への誤差分配値を示す。図１１に注目画素を２値化した際に発生する２値化誤差の分配方法を示す。ＥＲＲは、注目画素を２値化した際に発生する２値化誤差が記憶されたsep型変数であり、ＥＲＲの１／２が、主走査方向への分配誤差ＥＲｈとなり、副走査方向への分配誤差ＥＲｖは、ＥＲＲ−ＥＲＲ／２となる。また、step_６に示した変数ＥＲＲ’はデータ演算処理部３０３中の各ＰＥについて、左に隣接するＰＥが有する変数ＥＲＲと同一変数を示し、ＰＥ１に対しては、ＰＥ０の変数ＥＲＲ、ＰＥ１２７に対しては、ＰＥ１２６の変数ＥＲＲに相当する。さらに、ＰＥ０に対しては、ＰＥ１２７の変数ＥＲＲが相当することになる。これらの動作は、図４中のリング状に接続されたＰＥレジスタに変数ＥＲＲの値を設定することにより、全てのＰＥが同時に隣接するＰＥの変数ＥＲＲを参照することにより実行される。
【００９２】
Step_５の処理は、主走査方向の先頭画素に対する処理に相当し、主走査方向の画素に分配される２値化誤差ＥＲｈに所定値’０’を設定するものである。以上のように、Step_５、Step_６の処理により、主走査方向の隣接画素より分配される２値化誤差ＥＲｈの算出が行なわれる。
【００９３】
次にStep_７にてsep型変数Ｋが’０’以下か否かが判定され、Step_８、またはStep_９の処理が行なわれる。Ｋが’０’ 以下の場合には、Step_８にて、副走査方向への隣接画素に対する分配誤差を表すsep型変数ＥＲｖにＥＲＲＢ「i」が代入され、Step_７の条件を満たさない場合には、Step_９にて、ＥＲＲ−ＥＲＲ／２が代入される。ここで、ＥＲＲＢ［i］とは、 ２値化処理により発生した２値化誤差の副走査方向への分配成分を記憶する変数であり、各ＰＥが有するメモリ４１１に設けられている。ここで、ＢＮＤ＝０かつＫ＝０となるＰＥが処理を行なうのは先頭主走査ラインの画像データに相当する。この場合には、先行する主走査ラインがないことより、注目画素の上部に隣接する画素より分配される２値化誤差ＥＲｖを’０’として、画像端部の２値化処理を行うようにしてもよい。また、ＢＮＤが’０’でない場合には、後述するStep_１７にて設定された２値化誤差の副走査方向への分配成分がＥＲｖに設定されることになる。
【００９４】
Step_９では、各ＰＥが自身のプロセッサーエレメントに属するsep型変数ＥＲＲを参照して、副走査方向に隣接する画素が発生した２値化誤差の分配成分であるＥＲｖを算出する。
【００９５】
次にStep_１０にてsep型変数ＤＡＴＡ［Ｋ］に隣接画素が発生した２値化誤差ＥＲｈ、ＥＲｖを加算し、誤差補正したsep型変数Ｄを算出する。ここで、ＤＡＴＡ［Ｋ］は、各ＰＥのメモリ４１１のアドレスＫ（Step_３にて算出）に記憶された入力画像データを示している。
【００９６】
次に、Step_１１にて、Ｄが１２７よりも大きいか否かが判別され、大きい場合には、Step_１２にて、sep型変数ＯＵＴに２５５を、大きくない場合には、Step_１３にてＯＵＴに０が代入される。Step_１２、Step_１３により誤差補正された８ビットの入力画像データが０または、２５５に２値化処理される。
【００９７】
Step_１４では、sep型変数Ｋが０以上かつ１２７以下か否かが判別され、Step_１５またはStep_１８に分岐する。変数Ｋが０以上１２７以下の範囲でないＰＥが算出した２値化処理結果は、Step_１５、Step_１６、Step_１７が実行されないことにより破棄されることになる。
【００９８】
Step_１５では、前述したメモリ４１１のＤＡＴＡ［Ｋ］の領域に２値化済みデータＯＵＴを記憶し、２値化誤差ＥＲＲにＤ−ＯＵＴを代入し、Step_１６に分岐する。
【００９９】
Step_１６では、Ｋが１２７に等しいか否かが判別され、等しい場合にはStep_１７に、等しくない場合にはStep_１８に分岐する。Step_１７は、隣接するバンドの先頭ラインの画素データに対する２値化誤差の分配値をＥＲＲＢ［i］に記憶する。さらに、iに１を加算した値を５６で割り算した余りをiに設定する処理を行なう。
【０１００】
次に、Step_１８では、Ｌに１を加算する。
【０１０１】
次にフローはStep_１９に進み、Ｌが１２７より大きいか否かが判別され、大きくない場合には Step_２０に進みＮに５６が加算され、 Step_２７を介してStep_３に分岐する。
【０１０２】
ここまでの処理では、図１０に示すとおり、sep型変数Ｋが０以上となるのは、ＰＥ０に対応した変数のみであるので、Step_１５では、ＰＥ０の２値化処理のみ有効となり、図９の（ａ）に黒背景で示した画素位置データ（０、０）の２値化処理のみが終了し入力画像データに変わって２値化済データが記憶されている。また、２値化誤差を記憶するsep型変数ＥＲＲに関しても、ＰＥ０に対応する変数ＥＲＲにはStep_１５にて２値化誤差が記憶されている。次にStep_２０からStep_２７を介してStep_３にフローが分岐し、Step_３を実行した時のデータ演算処理部３０３のメモリ４１１に転送されるデータは、図９の（Bｂ）に示したものとなる。また、この場合には、Ｌ＝１となっていることより、ＰＥ０では、Ｋ＝１、ＰＥ１では、Ｋ＝０となる。（図１０参照）。
【０１０３】
Step_４の判定において、ＰＥ１に対するフローはStep_６に分岐する。ＰＥ１の処理では、Step_６にて直前のStep_１５が実行された際にＰＥ０のＥＲＲに記憶された２値化誤差、すなわち、ＰＥ０が入力データ（０、０）を２値化した際に生じた２値化誤差ＥＲＲをＥＲＲ’として参照し、入力データ（０、１）に対する誤差補正値ＥＲｈを算出する。
【０１０４】
Step_４におけるＰＥ０に対する処理では、前回と同様にStep_５に分岐しＰＥ０に対応するＥＲｈは’０’となる。
【０１０５】
次に、Step_７では、ＰＥ０に対応する変数Ｋが’１’となっていることより、ＰＥ０に対するフローは、Step_９に分岐する。Step_９では、ＰＥ０に対応したsep型変数ＥＲＲを参照し、ＥＲｖを算出する。このときにＰＥ０が使用するＥＲＲの値は、前回のStep_１５の処理にて、ＰＥ０が入力データ（０、０）を２値化した際に算出された２値化誤差であり、Step_９でＰＥ０が算出したＥＲｖは、入力データ（０、０）から入力データ（１、０）に分配される２値化誤差に相当するものである。
【０１０６】
また、ＰＥ１に対する変数Ｋは’０’となっていることより、ＰＥ１に対するフローは、Step_７よりStep_８に進む。ここで、ＰＥ１に対応するsep型変数i=０、ＥＲＲＢ［ i］
=０によりＥＲｖには、初期設定値である’０’が設定されることになる。
【０１０７】
以降フローが進みStep_１４の判定にて０以上１２７以下の変数Ｋを有するプロセッサーエレメントは、ＰＥ０、とＰＥ１ということになり、Step_１５にて、ＰＥ０、ＰＥ１が算出した２値化結果が記憶されている変数ＯＵＴが、図９（ｂ）中の入力画像（１、０）、（０、１）が記憶されていたアドレスに有効な２値化結果として記憶されることになる。 以上のように、Ｌ＝１の場合にはＰＥ０、ＰＥ１の２個のプロセッサーエレメントが同時に入力画像データの２値化処理を行なうことになり。さらに、Step_１８にてＬが加算され、上記フローを繰り返す。
【０１０８】
以上説明したように、Ｌが加算されるにつれて、有効な２値化結果を算出するプロセッサーエレメントの数も増加していくことになる。
【０１０９】
次にＬ＝１２７となって、Step_２７を介してからStep_３に分岐した場合について説明する。
【０１１０】
Ｌ＝１２７の場合に、Step_３にてラインメモリアドレスＮの１２８画素データを内部メモリ４１１に転送した後の内部メモリ４１１の画素配置を図９の（ｃ）に示す。また、この時のsep型変数Ｋの値は、図１０よりＰＥ０〜ＰＥ１２７まで全てのＰＥに対して０以上１２７以下の値となり、全てのＰＥが並列に有効な２値化結果を算出することになる。このとき各ＰＥが並列に２値化処理を行なう画素位置は、図９（ｃ）に斜め線にて示されている。Ｌ＝１２７の時にフローがStep_１６に至るとＰＥ０のプロセッサーエレメントに対する変数Ｋが１２７と等しいことにより、ＰＥ０に対する処理は、Step_１６よりStep_１７に分岐し、Step_１７の処理が実行される。Step_１７では、ＰＥ０が演算した２値化誤差の副走査方向への分配成分を算出しＥＲＲＢ［i］に設定する。ここでは、iの値は、’０’となっていることよりＥＲＲＢ［０］に２値化誤差の副走査方向への分配成分が設定され、ＰＥ０に対応するsep型変数iには１が加算される。
【０１１１】
次に、Step_１８よりStep_１９に至ると、Step_１９よりStep_２１に進む。
【０１１２】
Step_２１では、変数Ｌを１２８で割り算した余りの値で示されるアドレス（この場合は、’０’）のメモリ４１１の値をワーキングメモリ２１６の対応するラインアドレスに転送する。対応するラインアドレスとは、図９（ｃ）に示すとおり、メモリ４１１のアドレス’０’に設定されている２値化済みの原稿画像データに対応する（０、０）より（０、１２７）が記憶されているラインアドレスに一致したものである。この場合には、ワーキングメモリのラインアドレス’０’が転送先のアドレスとして設定される。メモリ４１１からワーキングメモリ２１６へのデータ転送は、各ＰＥが並列で動作し、図９（ｃ）に示した、２値化済のデータ１２８画素分がワーキングメモリに転送され入力画像データ（０、０）より、（０、１２７）の１２８画素分が記憶されていたワーキングメモリ２１６の領域に、対応する２値化済データが上書きされることになる。
【０１１３】
次にフローはStep_２２に進み、変数Ｌを１２８で割り算した余りが’０’か否かが判定される。この場合には、Ｌ＝１２８となっているのでフローはStep_２３に進む。Step_２３にてＢＬＫはＢＬＫ＝１となり、Step_２４より、Step_２６に分岐する。Step_２６では、ＮにＢＬＫ＋ＢＮＤ×５６×１２８の値が代入される。この場合は、Ｎ＝１となる。そしてStep_２６よりStep_２７を介してStep_３にフローは分岐し、フローを繰り返す。
【０１１４】
Step_３では、ワーキングメモリのラインアドレス１に対応するデータが、内部メモリ４１１のアドレス’０’に転送される。この時の内部メモリの内容を図９の（ｄ）に示す。
【０１１５】
図９（ｄ）に示すように、内部メモリのアドレス０には原稿画像データの先頭ライン１２８〜２５５画素のデータが記憶されることになる。
【０１１６】
また、図１０に示したＬ＝１２８に対応する各ＰＥの変数Ｋの値より、この場合に各ＰＥが並列に２値化動作を行なう原稿画像データの配置は図９中の線で示したライン上、別の図示では、図１２中のＢの１２８画素となっている。このような場合にＰＥ０が担当する画素データ（０、１２８）に対する主走査方向からの２値化誤差分配値は、Step_６において、ＰＥ１２７の２値化誤差が記憶されている変数ＥＲＲを図４のリング上に接続されたＰＥレジスタを使用して、ＥＲＲ’として参照することにより、ＥＲｈに設定されることになる。さらに、Step_１７では、ＰＥ１に対応するＥＲＲＢ［０］に副走査方向への２値化誤差の分配値が設定される。
【０１１７】
上記のような動作によりフローを繰り返す。
【０１１８】
次に、Ｌ＝７１６７の時の内部メモリ４１１に転送された画像データを図９（e）に示す。この場合に各ＰＥが並列に２値化動作を行なう原稿画像データの配置は、図９（e）のライン上、別の図示では、図１２中のＣで示したライン上の１２８画素となっている。Ｌ＝７１６７の場合に、Step_３よりフローを実行し、Step２１に至った場合には、内部メモリ４１１のアドレス０の１２８画素の２値化処理済みデータがワーキングメモリ２１６の対応するラインアドレスに転送されることになる。これにより、原稿画像データの最初の１ライン：７１６８画素の２値化処理が全て終了したことになる。
【０１１９】
さらにフローは、Step_２２の判定を行ない、Ｌ＝（７１６７＋１）％１２８＝０より、Step_２３に進む。Step_２３、Step_２４からは、ＢＬＫ＝（５５＋１）％５６＝０より、Step_２５に進む。Step_２５では、ＢＮＤに１が加算され、Step_２６より、Step_２７に分岐する。Step_２６では、Ｎに、Ｎ＝ＢＮＤ×５６×１２８が設定される。この場合には、ＢＮＤ＝１となるので、Ｎ＝７１６８が設定され、Step_２７を介して、Step_３に分岐する。この時Step_３の実行後の内部メモリ４１１に転送されている画像データを図９（ｆ）に示す。図に示すように内部メモり４１１のアドレス０には、原稿画像データの１２８ラインの先頭から１２８画素が設定されていることになる。
【０１２０】
さらに、フローが進みStep_７に至ると、ＰＥ０に対するsep型変数ＫはＫ＝０となっていることにより、ＰＥ０に対するフローは、Step_８に進み、ＰＥ０に対応したＥＲＲＢ［０］が、副走査方向の隣接画素より分配される２値化誤差として、ＥＲｖに設定される。この値は、図１２中Ａのライン上の画像データを２値化処理した際に、Step_１７にてＰＥ０に対応するＥＲＲＢ［０］に設定された隣接する副走査方向へ分配される２値化誤差に相当するものである。
【０１２１】
同様にして、ＢＮＤ＝１の先頭ラインを処理する際には、それぞれのＰＥが対応する副走査方向の隣接画素より分配された２値化誤差であるＥＲＲＢ［０］をＥＲｖとして使用することにより、ＢＮＤ＝０の最終ライン画素からＢＮＤ＝１の先頭ライン画素への２値化誤差伝播が行なわれることになる。これを繰り返すことにより、ＢＮＤの最終ライン画素から隣接する副走査画素であるＢＮＤ＋１の先頭画素への２値化誤差伝播が行なわれることになる。
【０１２２】
以上のフローを繰り返して、Ｌ＝２７９５５１の時の、内部メモリ４１１に転送された画像データを図９（ｇ)に示す。Ｌ＝２７９５５２の時の、内部メモリ４１１に転送された画像データを図９（ｈ)に示す。これらは、いずれも ＢＮＤ＝３８、ＢＬＫ＝５５となる最終ブロックに対する処理となる。Ｌ＝２７９５５１では、ＰＥ０〜ＰＥ１２７までの全てのＰＥが有効な２値化処理を行なうが、Ｌ＝２７９５５２の場合には、ＰＥ０が行なう２値化処理は無効画素に対するものとなる。以降、無効画素を２値化するＰＥは順次増加していく。
【０１２３】
次にＬ＝２７９６７８の時の内部メモリ４１１に転送された画像データを図９（i）に示す。
【０１２４】
この場合には、ＰＥ１２７のみが有効な２値化処理を行なうことになる。この処理を行なったフローにおけるStep_２７の判定にて、Ｌ＝（２７９６７８＋１）＝２７９６７９となっていることよりフローを終了する。
【０１２５】
以上のようにして、Ａ４原稿画像１面分である７１６８×４９９２画素の２値化処理が終了し、２値化結果がワーキングメモリ２１６に記憶されることになる。
【０１２６】
ワーキングメモリメモリ２１６に記憶された２値化済データは、図３に示した演算ユニット３００の外部メモリインターフェース３０６を介して出力レジスタ３０４に入力される。次に、ワーキングメモリメモリ２１６より読み出された２値化済データは、出力レジスタ３０４からＦＩＦＯメモリ３０７に書き込まれる。ＦＩＦＯ３０７へのデータ書込みと読み出しの関係を図１３に示す。
【０１２７】
ＦＩＦＯメモリ３０７は、１ライン分（７１６８画素）の容量を有するラインメモリであり画像処理ユニット３００より出力されるクロックにより出力レジスタ３０４より出力された画像データをＦＩＦＯメモリ３０７にライトする。リードクロックは、作像エンジン２０５の動作に同期したクロックとなっている。なお、本実施の形態では、ＦＩＦＯメモリ３０７へのライトクロックが１００ＭＨｚ、リードクロックは、２０ＭＨｚと設定されており、リードクロックに対してライトクロックが高速なものとなっている。ＦＩＦＯメモリ３０７に０画素目の画像データがライトされた後の、リード開始（０）のタイミングより、０画素目の画像データの読み出しが開始される。図１３に示したように、ＦＩＦＯ３０７への２値化済データの書込みは、１２８画素単位で行なわれる。また、読み出しは、作像ユニット２０５動作に同期したクロックにより、１ライン毎に連続した画像データとなるように行なわれる。
【０１２８】
ＦＩＦＯ３０７から読み出された２値化済データは、作像ユニット２０５に入力され作像エンジン２０５入力データに応じたプリント処理をおこなわれることになる。
【０１２９】
以上のようにして読取ユニット２０１により読みとられたＡ４サイズの原稿画像データの２値化処理が行なわれプリント出力が得られることになる。
【０１３０】
本実施の形態では、読取ユニット２０１より読み取られた画像データを図７に示したように、１ラインを連続する５６アドレスに記憶しているが、記憶アドレスは、これに限定されるものではなく、図１４に示すように、主走査方向の先頭より、１２８画素単位で、連続するラインを連続するアドレスに記憶するようにしてもよい。
【０１３１】
さらに、読取ユニット２０１より画像処理プロセッサ−２０４に入力される画像クロック速度に対して、画像処理プロセッサ−の動作クロックが十分に高速で、リアルタイム処理が可能な場合には、入力画像データ読取ユニット２０１より読み取られた画像データをワーキングメモリ２１６に記憶することなく２値化処理を行なう構成としてもよい。その場合には、図３の入力レジスタ３０２より入力された画像データをデータ演算処理部３０３の内部メモリ４１１に取り込み、２値化処理が終了した画素位置の内部メモリを２値化データに書きかえるようにし、図１２に示した１バンド分の２値化処理が終了した時点より、内部メモリの２値化済データを出力レジスタを介して、作像ユニット２０５に出力させるようにする構成としてもよい。
【０１３２】
さらに、本実施の形態の誤差拡散処理における誤差データは、図１１に示した主走査、副走査方向それぞれ１画素に分配されているが、誤差拡散の方法はこれに限定されるものではなく図１５に示すような場合であっても適用可能なことは自明である。図１５には誤差を配分する画素を夫々３画素（パターン１）、４画素（パターン２）、７画素（パターン３）、９画素（パターン４）の例を示し、又各画素位置への誤差配分率の例を示したが、これらの例に限定される物では無い。図中＊印は夫々のＰＥが今同時に処理しようとする注目画素位置であり、誤差は該注目画素位置を含まず、注目画素位置に近い画素から約１０画素程度の画素に配分すれば良好な画像が得られる。
【０１３３】
尚、図中Ｘ印は各誤差の配分演算で生じた演算誤差を吸収する画素位置であり、誤差の総和から他の画素への配分誤差の総和を減算した余り誤差を割り当てる。
【０１３４】
又、図１５に示すパターンで誤差を配分する場合、先に説明した繋ぎ誤差ＥＲＲＢは各ＰＥで各バンドに対して数バイト必要になる。
【０１３５】
以上説明した如く、本発明の第１の実施の形態によれば、逐次処理を行うための補助的な演算処理部を利用することなく、逐次処理の代表例である誤差拡散処理をＳＩＭＤ型演算部用いて行うことが可能となり、補助的な演算処理部のコスト削減効果がある。
【０１３６】
さらには、1ラインの画素数、および、ライン数が、ＳＩＭＤ型演算部が有すプロセッサーエレメントの数を超える2次元画像データ入力信号に対しても、2次元画像データを分割して、ＳＩＭＤ型演算部のメモリに記憶し、処理を行うことにより、各プロセッサエレメントには、異なる画素位置の画像データを供給して、各プロセッサーエレメントを並列動作させることが可能となり、ＳＩＭＤ型プロセッサーの並列処理能力を有効利用した、高速な処理を行えるという効果がある。
【０１３７】
さらには、分割した領域間においても、誤差拡散処理にて発生した誤差の分配を行い、誤差補正処理を行うことにより入力信号の濃度を保存した高品位な誤差拡散処理画像が得られるという効果がある。
【０１３８】
（第２の実施の形態）
第２の実施の形態では、更に高画質を得るために誤差拡散処理にて発生した誤差データを拡散する画素位置の変更例に関して説明する。
【０１３９】
図１６に、第２の実施の形態にて拡散される誤差データの画素位置を示す。
【０１４０】
第２の実施の形態は、図１１、図１５に示した誤差データの拡散位置の例では行っていない注目画素に隣接する左斜め下、図１６の（ａ）中Ａにて示す画素位置へ誤差の拡散を行う場合に適用される。
【０１４１】
第１の実施の形態と同様にして、図５に示した原稿画像データは、図３中のＦＩＦＯメモリ３０１に入力される。本実施の形態では、７１６８画素で構成される１ラインデータを偶数番目と奇数番目の画素に振り分けて、演算処理ユニット３００中の入力レジスタ３０２に入力する。図１７に、ＦＩＦＯメモリ３０１の構成を示し、図１８にＦＩＦＯメモリ３０１より入出力される画像データとの関係を示す。図１７中１７００はデータ制御部２０３より入力される原稿画像データを奇数番目の画素の偶数番目の画素に振り分けるセレクタ、１７０１はセレクタ１７００より出力された偶数番目の画素データが入力されるＦＩＦＯ１メモリ、１７０２はセレクタ１７００より出力された奇数番目の原稿画像データが入力されるＦＩＦＯ２メモリ、１７０３はＦＩＦＯ１メモリ１７０１、ＦＩＦＯ２メモリ１７０２の出力データが入力され、どちらかの入力データを出力するセレクタであり、セレクタ１７０３の出力信号は、図３中の入力レジスタ３０２への入力信号となる。
【０１４２】
図１８は、図１７で構成されるＦＩＦＯメモリ３０１の動作を説明するタイムチャートである。７１６８画素で構成される１ラインのデータは、０ラインの０画素目より順に、データ制御部２０３よりスイッチ１７００に入力され、原稿画像データに同期したクロックにより、偶数番目の画素データ０、２、４、・・・・・７１６６が、ＦＩＦＯ１メモリ１７０１にライトされ、奇数番目の画素データ１、３、５、・・・・・７１６７が、ＦＩＦＯ２メモリ１７０１にライトされる。ＦＩＦＯ１メモリ１７０１に０〜２５４番目までの１２８画素分の画像データのライトが終了すると、リード開始タイミング（０）より、ＦＩＦＯ１メモリ１７０１から１２８画素分の画像データのリードが開始され、リードされた画像データは、セレクタ１７０３を介して、入力レジスタ３０２へ入力される。なお、ＦＩＦＯ１メモリ１７０１、ＦＩＦＯ２メモリ１７０２に対するリードクロックは、画像処理ユニット３００より出力されるクロックであり、前述したのと同様に、ライトクロックに対して、高速なクロックとなっている。
【０１４３】
ＦＩＦＯ１メモリ１７０１より０〜２５４番目までの１２８画素の画像データのリードが終了すると、次に、ＦＩＦＯ２メモリ１７０２より、原稿画像データの１〜２５５番目までの１２８画素分の画像データのリードが開始され、ＦＩＦＯ２より読み出された奇数番目の画像データは、セレクタ１７０３を介して、入力レジスタ２０２へ入力される。ＦＩＦＯ２メモリ１７０２から１２８画素分の画像データのリード動作が終了すると、再度、ＦＩＦＯ１メモリ１７０１より１２８画素分の原稿画像データのリード動作が開始され、２５６、２５８、・・・５１０までの、原稿画像データが、セレクタ１７０３を介して、入力レジスタに入力される。以降同様の動作を繰り返し、原稿画像データは、偶数番目の１２８画素と奇数番目の１２８画素が交互に、入力レジスタ３０２に入力され、入力レジスタ３０２に入力された画像データは、前述したようにワーキングメモリ２１６に記憶される。図１９に、ワーキングメモリ２１６に記憶される原稿画像データとワーキングメモリのアドレスとの関係を示す。図１９に示すように、ワーキングメモリ２１６には、偶数番目の画像データと奇数番目の画像データが１２８画素ずつ順に記憶される。
【０１４４】
以下に第２の実施の形態の動作に関して図２０を用いて詳細に説明する。なお、第１の実施の形態における図８の説明と重複する動作に関しては、説明を簡略化する。
【０１４５】
Step_１０１にて、１２８ライン分の入力画像データがワーキングメモリ２１６に取り込まれるまで待機する。ワーキングメモリ２１６に、１２８ライン分の入力画像データ取り込みが終了すると、フローは、Step_１０２に進み、変数の初期化が行なわれる。
【０１４６】
Step_１０２では、変数Ｎ（ワーキングメモリのラインアドレス）、Ｌ（データ転送回数）、ＢＮＤ（バンド）、ＢＬＫ（ブロック）の初期化、および、sep型変数i(つなぎ誤差のインデックス)、 sep型変数ＥＲＲＢＥ［０］〜ＥＲＲＢＥ［２７］（偶数番目画素用つなぎ誤差データ２８個）、および、sep型変数ＥＲＲＢＯ［０］〜ＥＲＲＢＯ［２７］ （奇数番目画素用つなぎ誤差データ２８個）の初期化を行う。ここで、ＢＮＤ（バンド）とは、入力画像データの副走査方向の１２８ラインを１バンドとする変数、ＢＬＫ（ブロック）とは、入力画像データの主走査方向の２５６画素を１ブロックとする変数である。ここでは、Ａ４サイズの原稿画像データ；主走査画素数＝７１６８、副走査ライン数＝４９９２とし、ＢＮＤは、０〜３８、ＢＬＫおよびiは、０〜２７の値をとる。また、sep型変数ＥＲＲＢＥ［０］〜ＥＲＲＢＥ［２７］、ＥＲＲＢＯ［０］〜ＥＲＲＢＯ［２７］は、各バンドの最終ラインの ２値化処理により発生した２値化誤差を記憶するメモリであり、各ＰＥそれぞれにつきブロック数に等しい２８個が設けられている。また、２値化誤差の配分は、図１６（ａ）に示した注目画素周辺の４画素に対して行なわれ、右斜め下、左斜め下、下に隣接する３画素それぞれに、注目画素が発生した２値化誤差の１／４が分配され、注目画素の右に隣接する１画素には、上記３画素に分配した残りの誤差が分配される。
【０１４７】
次にStep_１０３にて、ワーキングメモリ２１６のラインアドレスＮの１２８画素分のデータをデータ演算処理部３０３の各ＰＥが有するメモリ４１１の‘Ｌ％２５６’のアドレスに転送する。また、sep型変数Ｋの算出を行う。Ｋの算出値とＬの関係を図２１に示す、図２１中、Ｋの値が、０以上、２５５以下のＰＥが有効な２値化処理を行い、これ以外の、Ｋの値を有するＰＥが算出した２値化データは、無効データとして破棄される。また、Ｋが偶数のＰＥは、主走査ライン方向の偶数番目の画像データを、Ｋが奇数のＰＥは奇数番目の画像データを処理するように制御され、Ｋ=０のＰＥは、各ＢＮＤの先頭ラインの偶数画素位置、Ｋ=１のＰＥは、各ＢＮＤの先頭ラインの奇数画素位置、Ｋ＝２５４のＰＥは、各ＢＮＤの最終ラインの偶数画素位置、Ｋ=２５５のＰＥは、各ＢＮＤの最終ラインの奇数画素位置の画像データの処理を行うことになる。
【０１４８】
次にフローはstep_１０４に進み、ＰＥＮＵＭ＝０、かつ、Ｌ％２＝０、かつＢＬＫ＝０の場合には、step_１０５に、そうでない場合には、step_１０６０に分岐する。Step_１０５では、ＰＥＮＵＭ＝０の条件より、プロセッサーエレメントＰＥ０に対応したsep型変数ＥＲｈに０が代入される。Step_１０６０では、Ｌ％２＝０か否かが判別される。Ｌ％２＝０とは、Ｌが偶数の場合に相当し、Ｌが偶数の場合には、Step_１０６２に分岐することになる。
【０１４９】
ここで、以降のStepにて使用されるsep型変数ＥＲＲＥ［０］、ＥＲＲＥ［１］、ＥＲＲＯ［０］、ＥＲＲＯ［１］に関して説明する。
【０１５０】
本実施の形態では、後述するように、各ＰＥはそれぞれ、主走査方向に連続する２画素のデータの２値化処理するように制御され、上記sep型変数ＥＲＲＥ［０］、ＥＲＲＥ［１］、ＥＲＲＯ［０］、ＥＲＲＯ［１］は、それぞれのＰＥが２値化処理を行った際に発生する２値化誤差を記憶する領域として使用される。ＥＲＲＥ［０］、ＥＲＲＥ［１］には、各ＰＥが偶数番目の画素データを処理した際に発生する２値化誤差が記憶され、ＥＲＲＥ［０］には、直前に処理された偶数画素データの２値化誤差、ＥＲＲＥ［１］には、その前に処理された偶数画素番目の２値化誤差が記憶されている。同様に、ＥＲＲＯ［０］、ＥＲＲＯ［１］には、それぞれ、各ＰＥが奇数番目の画素データを処理した際に発生した２値化誤差が記憶されているものである。また、ＥＲＲＥ’［０］、ＥＲＲＥ’［１］は、各ＰＥに対して左に隣接したＰＥが有するＥＲＲＥ［０］、ＥＲＲＥ［１］に相当し、ＥＲＲＥ''［０］は、右に隣接したＰＥが有するＥＲＲＥ［０］、ＥＲＲＥ［１］に相当するものである。同様に、ＥＲＲＯ’［０］、ＥＲＲＯ’［１］は、各ＰＥの左に隣接するＰＥが有するＥＲＲＯ［０］、ＥＲＲＯ［１］に相当し、ＥＲＲＯ’’［０］、ＥＲＲＯ’’［１］は、それぞれ右に隣接するＰＥが有するＥＲＲＯ［０］、ＥＲＲＯ［１］に相当するものである。第１の実施の形態にて説明したのと同様にして、ＰＥ０の左隣接ＰＥには、ＰＥ１２７が相当し、ＰＥ１２７の右隣接ＰＥには、ＰＥ０が相当する。Step_１０５、Step_１０６１、Step_１０６２では、各ＰＥに対して、左隣接画素から分配される２値化誤差がＥＲｈに代入される。Step_１０５は、原稿画像データの主走査先頭画素を処理する際に実行されるステップを示し、ここでは、左隣接画素からの分配誤差を’０’としている。
【０１５１】
次に、Step_１０７にて、Ｋが１以下か否かが判別される。Ｋが１以下でない場合は、Step_１０９０に分岐し、Ｌが奇数か偶数かによって、Step_１０９１、Step_１０９２が実行される。Step_１０９１．Step_１０９２は、それぞれ、図１６（ｂ）中の１、２、３で示した画素位置から分配される２値化誤差データの総計をＥＲｖに代入するステップである。また、Step_１０７にてＫが１以下と判定された場合には、Step_１０８０にて、Ｌが奇数か偶数かによって、Step_１０８１、Step_１０８２が実行される。Step_１０８１、Step_１０８２は、各バンドの最初の主走査ラインの画像データを処理する際に実行されるステップであり、前バンドの最終主走査ラインの画像データを処理した際に発生した２値化誤差を参照して、各バンドの最初の主走査ラインの画像データに対する分配誤差を算出するステップである。なお、最初のバンドの先頭主走査ラインの画像データに対しては、先行する主走査ライン画像データより分配される２値化誤差はないことより、Step_１０８１、Step_１０８２で算出されるＥＲｖは、’０’と設定されるように制御される。さらに、各バンドにおける先頭ブロックにおいて、ＰＥ０が処理する偶数画素位置は、主走査先頭画素に相当し、図１６（ｂ）に示した、’１’の方向より２値化誤差を分配する画素が存在しないことより、この場合には、Step_１０９２における、ＥＲＲＯ’［１］／４を’０’に、さらに、Step_１０８２におけるＥＲＲＢＯ’［i］／４を’０’に設定するように制御して、画像端部の２値化処理を行うようにしてもよい。
【０１５２】
次にStep_１１０にてsep型変数ＤＡＴＡ［Ｋ］に隣接画素が発生した２値化誤差ＥＲｈ、ＥＲｖを加算し、誤差補正したsep型変数Ｄを算出する。ここで、ＤＡＴＡ［Ｋ］は、各ＰＥのメモリ４１１のアドレスＫに記憶された入力画像データを示している。
【０１５３】
次に、Step_１１１、Step_１１２、Step_１１３にて２値化処理が行われ、Step_１１４にて、Ｋが０以上、２５５以下か否かが判別される変数Ｋが０以上２５５以下の範囲でない場合は、Step_１１８に分岐し、２値化結果は破棄される。Step_１１５では、メモリ４１１のＤＡＴＡ［Ｋ］の領域に、２値化済みデータＯＵＴを記憶し、 Step_１１５０に分岐する。
【０１５４】
Step_１１５０では、Ｌが奇数か偶数かが判別され、奇数の場合には、Step_１１５１に分岐し、ＥＲＲＯ［１］にＥＲＲＯ［０］を代入し、ＥＲＲＯ［０］に２値化誤差Ｄ−ＯＵＴを代入する。Ｌが偶数の場合には、Step_１１５２に進み、ＥＲＲＥ［１］にＥＲＲＥ［０］を代入し、ＥＲＲＥ［０］に２値化誤差Ｄ−ＯＵＴを代入する。後述するが、Ｌが偶数の場合に各ＰＥが処理する画素位置は、主走査方向の偶数番目の画素位置に対応し、Ｌが奇数の場合に各ＰＥが処理する画素位置は、主走査方向の奇数番目の画素位置に対応している。Step_１１５１、Step_１１５２により、処理を行った画素位置に応じた２値化誤差の記憶が行われることになる。
【０１５５】
次に、Step_１１６にてＫが２５４か否かが判定され、２５４に等しい場合にはStep_１１６０に分岐し、２値化誤差ＥＲＲＥ［０］をＥＲＲＢＥ［i］に代入し、Step_１１８に分岐する。Step_１１７では、Ｋが２５５か否かが判定され、２５５に等しい場合にはStep_１１７０に分岐し、２値化誤差ＥＲＲＯ［０］をＥＲＲＢＥ［i］に代入し  iに１を加算して、２８で割り算した余りをiに代入する処理を行いStep_１１８に進む。Ｋが２５４に等しいＰＥが処理した画素位置は、各ＢＮＤの最終主走査ラインの偶数画素位置、Ｋが２５５に等しいＰＥが処理した画素位置は、各ＢＮＤの最終主走査ラインの奇数画素位置となることより、Step_１１６０、Step_１１７０により、各ＢＮＤの最終主走査ラインの画像データを処理した際に発生した２値化誤差が、ＥＲＲＢＥ［i］、ＥＲＲＢＯ［i］に記憶されることになる。
【０１５６】
次にStep_１１８にて、Ｌに１が加算され、Step_１１９にて、Ｌが２５４よりも大きいか否かが判別され、大きくない場合にはStep_１１９０に分岐する。Step_１１９０では、Ｌが奇数か偶数かが判別され、偶数の場合にはStep_１２０へ、奇数の場合にはStep_１１９１に分岐する。ここで、判別されるＬは、次に処理を行うライン番号に相当し、次に処理するラインが奇数の場合には、Ｎに１を加算し、偶数の場合には、５５を加算する。Ｎの値は、Step_１０３の処理にて、内部メモリに転送されるワーキングメモリのアドレスとなっており、ここで、アドレスの変更が順次行われることになる。
【０１５７】
次にフローは、Step_１２７に分岐し、さらに、Step_１０３に進んでフローを繰り返す。
【０１５８】
ここで、Step_１０２における初期化以降の動作より、Step_１０３以降のフローを繰り返す際の動作に関して説明する。図２２は、Ｌの値に応じて内部メモリ４１１の内容を示した図面である。図２２（ａ）はＬ＝０の時の場合を示す。初めて、Step_１０３を実行した際には、Ｎ=Ｌ=０により、ワーキングメモリのラインアドレス０の１２８画素のデータが、内部メモリ４１１のアドレス０に転送される。また、図２１に示すように、Ｌ=０の場合に０以上２５５以下のＫの値を有数ＰＥは、ＰＥ０のみとなるので、Ｌ=０の場合にはＰＥ０のみが有効な２値化処理を行うことになる。また、ＰＥ０に対しては、Step_１０５により主走査方向の左隣接画素より分配される２値化誤差ＥＲｈは’０’となり、さらに、Step_１０８２には図示していないが、前述したように先頭ＢＮＤの先頭ライン画素データであることにより、この場合には、Step_１０８２にてＥＲｖも’０’とされる。
【０１５９】
Step_１１０では、ＰＥ０は、Ｋ=０により、内部アドレスのアドレス’０’のデータ、原稿画像データの（０、０）の画像データがＤに代入され、Step_１１１、Step_１１２、Step_１１３にて２値化処理が行われる。さらに、Step_１１５にて、２値化結果が、内部アドレスのアドレス’０’に代入される。次に、Step_１１５２にて、２値化誤差が、ＥＲＲＥ［０］に記憶される。
【０１６０】
以上のようにして、図２２の（ａ）に示すように、Ｌ=０の場合には、原稿画像データの（０、０）のデータのみの２値化結果が内部メモリ４１１のアドレス０に記憶されることになる。次に、Step_１１８にて、Ｌ＝１となり、フローを進むと、フローは、Step_１１９１に至る。Step_１１９１では、Ｎに１が加算され、フローを進む。
【０１６１】
このようにして、再度Step_１０３を実行した際の内部メモリ４１１の様子を図２２の（ｂ）に示す。Ｎ=１となっていることより、図１９のワーキングメモリのラインアドレス１の１２８画素データが内部メモリに転送される。図２１より、この場合にも、有効なＫの値を有するＰＥは、ＰＥ０のみであることより、ＰＥ０のみが有効な２値化処理を行うことになる。Step_１０３よりフローが進むと、Step_１０４よりStep_１０６０をへて、Step_１０６１にフローは進む。ここでは、ＥＲｈに、ＥＲＲＥ［０］−３＊（ＥＲＲＥ［０］／４）が代入される。ここで、参照されるＥＲＲＥ［０］とは、ＰＥ０が最初に処理を行った２値化処理にて発生した２値化誤差であり、ここで、図１６（ａ）のＢで示す左隣接画素より分配される２値化誤差の算出が行われる。さらに、フローが進むとStep_１１５にて、ＰＥ０が算出した２値化結果が、内部アドレスのアドレス’１’に代入され、Step_１１５１にて、２値化誤差が、ＥＲＲＯ［０］に記憶される。
【０１６２】
Step_１１８にて、Ｌに１が加算され、Ｌ=２となり、Step_１１９、Step_１１９０を経てStep_１１２０にフローが至る。ここでは、Ｎに５５が加算され、Ｎ=５６となり、フローが進む。次にStep_１０３にフローが進んだ際には、ワーキングメモリのラインアドレスＮ=５６の１２８画素データが、内部メモリ４１１のアドレス２に転送される。さらに、図２１に示すように、ＰＥ１の変数Ｋが０となり、有効な２値化処理を行うＰＥとして、ＰＥ１が加わることになる。以上のようにして、フローを繰り返すごとに、有効な２値化結果を算出するＰＥの数が増加し、Ｌ=２５４の場合には、ＰＥ０〜ＰＥ１２７のすべてのＰＥが有効な２値化結果を算出するように動作する。実施の形態１にて説明したように、ＰＥ０〜ＰＥ１２７は、同時動作を行うプロセッサーエレメントであることより、Ｌ=２５４以降は、ＰＥ０〜ＰＥ１２７すべてのＰＥが同時に有効な２値化処理を行うように動作する。
【０１６３】
ここで、図２３に、Ｌの増加に対応して２値化処理が行われる原稿画像データの配置と、２値化処理の順番を示す。図中  ＰＥ０〜ＰＥ１２７の下方向に示される原稿画像データは、対応する同一のＰＥにより処理される画素位置であることを示している。また、上述した、ＢＮＤとＢＬＫの関係も示している。各ＢＮＤは、原稿画像データの１２８ラインに対応し、各ＢＬＫは、主走査画素数２５６画素に対応したものとなる。
【０１６４】
ここで、Ｌ=０の時に処理される２値化データは、図中  ’０’で示された画素位置のデータであり、これは、原稿画像の（０、０）位置データに相当する。
【０１６５】
Ｌ=１の時に処理される２値化データは、図中’１’で示された画素位置データであり、これは、原稿画像の（０、１）の位置データに相当する。
【０１６６】
Ｌ=２の時に処理される２値化データは、図中’２’で示された画素位置データであり、これは、原稿画像の（１、０）、（０、２）の位置データに相当する。
【０１６７】
以下同様にして、Ｌ=Ｍの時に処理される原稿画像の画素位置データには’Ｍ’の値が記入してある。図２３に示すように、本実施の形態では、主走査方向の原稿画像データを２画素一組として、同一のＰＥが処理を行うように構成されている。図２３に示したように、Ｌ=０、１では、有効な２値化処理を行うＰＥは、ＰＥ０のみであるが、Ｌが増加するにつれて、有効な２値化処理を行うＰＥの数が増加し、Ｌ=２５４以降は、１２８個のＰＥがすべて有効な２値化処理を行うことになる。
【０１６８】
ここで、図２３中のＬ=５の時に処理される画像データに対する２値化誤差の分配に関して詳細に説明する。Ｌ=５の時に処理される画像データは、図中’５’の番号を付した画素位置のものである。ここで’５’の番号を付した画素位置に注目すると、図１６（ｂ）に示した注目画素位置に対して２値化誤差を分配する周辺の４画素の画素位置データの番号がすべて５より小さくなっていることより、すでに２値化処理が終了していることがわかる。
【０１６９】
左隣接画素の番号’４’の値が付された画素位置からの分配誤差は、上述したStep_１０６１にて、
ＥＲｈ＝ＥＲＲＥ［０］−３＊（ＥＲＲＥ［０］／４）
として算出される。図２３中番号’４’が付された左隣接画素位置の２値化処理は、番号’５’が付されたＰＥと同一番号のＰＥが、直前に行った偶数番目の画像データに対する処理であることより、Step_１０６１では、同一ＰＥが有する偶数番目の画素位置を処理した際に発生した２値化誤差であるＥＲＲＥ［０］（Step_１１５２にて設定済み）より左隣接画素より分配される２値化誤差の算出を行っている。
【０１７０】
さらにStep_１０９１では、図２３中’２’、’３’、’４’と番号が付された１ライン上部の隣接画素位置より分配される２値化誤差の総和を、
ＥＲｖ＝ＥＲＲＥ［１］／４＋ＥＲＲＯ［０］／４＋ＥＲＲＥ’’［０］／４として算出する。
【０１７１】
ここで、ＥＲＲＥ［１］とは、図２３中’２’の番号が付された画素位置データを処理した際に発生した２値化誤差であり、これは、同一ＰＥが偶数番目の画素を処理した際に発生した２値化誤差として、Step_１１５２にて設定されたものである。また、ＥＲＲＯ［０］は、図２３中’３’の番号が付された画素位置データを処理した際に発生した２値化誤差であり同一ＰＥが、直前に処理した奇数番目の画素より発生した２値化誤差として、Step_１１５１にて設定されたものであり、さらに、ＥＲＲＥ’’［０］は、図２３中’４’の番号が付された画素位置データを処理した際に発生した２値化誤差であり、右隣接ＰＥが、直前に処理した偶数番目の画素より発生した２値化誤差として、Step_１１５１にて設定されたものである。
【０１７２】
上記の関係は、図２３中の番号’５’を付した画素位置データに対する２値化誤差の分配に関して説明したが、図２３中の奇数番号を付した画素位置データに対する２値化誤差の分配に関しても同様である。
【０１７３】
次に図２３中の番号’６’を付した画素位置データに対する２値化誤差の分配に関して説明する。番号’６’を付した画素位置データに対しては、番号’３’、’４’、’５’が付された画素位置を処理した際に発生した２値化誤差が分配されそれぞれ、すでに２値化処理は終了していることがわかる。
【０１７４】
左隣接画素の番号’５’が付された画素位置からの分配誤差は、Step_１０６２にて、
ＥＲｈ＝ＥＲＲＯ’［０］−３＊（ＥＲＲＯ’［０］／４）
として算出される。図２３中番号’５’が付された左隣接画素位置の２値化処理は、番号’６’が付されたＰＥの左隣接ＰＥが、直前に行った奇数番目の画像データに対する処理であることより、Step_１０６２では、左隣接ＰＥが有する奇数番目の画素位置を処理した際に発生した２値化誤差であるＥＲＲＯ’［０］（Step_１１５１にて設定済み）より左隣接画素より分配される２値化誤差の算出を行っている。
【０１７５】
さらにStep_１０９２では、図２３中’３’、’４’、’５’と番号が付された１ライン上部の隣接画素位置より分配される２値化誤差の総和を、
ＥＲｖ＝ＥＲＲＯ'［１］／４＋ＥＲＲＥ［０］／４＋ＥＲＲＯ［０］／４
として算出する。
【０１７６】
ここで、ＥＲＲＯ’［１］とは、図２３中’３’の番号が付された画素位置データを処理した際に発生した２値化誤差であり、これは、左隣接ＰＥが奇数番目の画素を処理した際に発生した２値化誤差として、Step_１１５１にて設定されたものであり、ＥＲＲＥ［０］は、図２３中’４’の番号が付された画素位置データを処理した際に発生した２値化誤差であり同一ＰＥが、直前に処理した偶数番目の画素より発生した２値化誤差として、Step_１１５２にて設定されたものであり、さらに、ＥＲＲＯ’［０］は、図２３中’５’の番号が付された画素位置データを処理した際に発生した２値化誤差であり、同一ＰＥが、直前に処理した奇数番目の画素をより、発生した２値化誤差として、Step_１１５１にて設定されたものである。
【０１７７】
上記の関係は、図２３中の番号’６’を付した画素位置データに対する２値化誤差の分配に関して説明したが、図２３中の偶数番号を付した画素位置データに対する２値化誤差の分配に関しても同様である。
【０１７８】
次にＬ=２５４の場合の動作に関して説明する。Ｌ=２５４にて、Step_１０３を実行すると、図２１に示すように、ＰＥ１２７の変数Ｋが’０’となり、ＰＥ０〜ＰＥ１２７までの１２８個のＰＥすべてが有効な２値化処理を実行することになる。図２２（ｄ）、および、図２３に示すように、このときＰＥ１２７が２値化を実施する画素位置は、最初の主走査ラインの２５５画素目であり、これは、原稿画像データの（０、２５４）の位置のデータとなる。また、ＰＥ０が２値化を実施するのは、原稿画像データの（１２７、０）の位置データとなる。Ｌ=２５４にて、フローが進むとＰＥ０のsep型変数Ｋが２５４と等しいことにより、ＰＥ０に対する処理は、Step_１１６より、Step_１１６０にフローは進み、Step_１１６０にて、ＥＲＲＢＥ［０］にＥＲＲＥ［０］が代入される。ここで、ＥＲＲＥ［０］とは、ＰＥ０がこのときに処理した原稿画像データの（１２７、０）の２値化誤差値であり、これが、ＥＲＲＢＥ［０］（このとき  i=０）に代入されることになる。これは、図２３中のＢ０で示した、ＢＮＤ＝０、ＢＬＫ=０における最終主走査ライン中のＰＥ０が担当する偶数画素位置にて発生した２値化誤差値となる。
【０１７９】
次にフローは、Step_１１８にて、Ｌ=２５４＋１とされて、Step_１１９より、Step_１２１にフローは至る。ここで、内部メモリ４１１のアドレス（Ｌ−２５５）％２５６の１２８画素のデータが、ワーキングメモリの対応するラインアドレスに転送される。この場合には、Ｌ=２５５となっていることより、内部メモリ４１１のアドレス’０’の１２８画素データが、ワーキングメモリのラインアドレス’０’に転送される。図２２の（ｄ）に示すように、この場合には、内部メモリ４１１の内部アドレス’０’の１２８画素データは、すべて２値化が終了していることにより、主走査方向の先頭より、偶数番目の原稿画像に対応する２値化結果が、１２８画素分ワーキングメモリに転送されることになる。次に、フローは、Step_１２２より、Step_１１９０に至り、Ｌ=２５５により、Step_１１９１にて、Ｎ=Ｎ＋１＝７１１２＋１＝７１１３  となり、フローを繰り返す。この場合Step_１０３では、ワーキングメモリのラインアドレス７１１３の１２８画素データが、内部メモリのアドレス’２５５’に転送され、ＰＥ０に対する変数Ｋは、’２５５’となり、以降のフローが繰り返される。図２２の（e）にＬ=２５５の時の内部メモリの画素データ配置を示す。この場合には、ＰＥ０に対する処理は、Step_１１７より、Step_１１７０にフローが至りここで、ＥＲＲＢＯ［i］ （このとき  i=０）にＥＲＲＯ［０］が代入される。こで、ＥＲＲＯ［０］とは、ＰＥ０がこのときに処理した原稿画像データの（１２７、１）の２値化誤差値であり、これが、ＥＲＲＢＯ［０］に代入されることになる。これは、図２３中のＢ１で示した、ＢＮＤ＝０、ＢＬＫ=０における最終主走査ライン中のＰＥ０が担当する奇数画素位置にて発生した２値化誤差値となる。また、ここで、ＰＥ０が有するsep型変数iには１が加算される。以降フローが進むと、Step_１１８にて、Ｌ＝２５５＋１＝２５６となり、Step_１２１にて、内部メモリアドレスの１ライン目の２値化結果をワーキングメモリに転送後、Step_１２２より、Step_１２３にフローは至る。ここで、ＢＬＫに１が加算され、この場合には、ＢＬＫ＝１となる。次にStep_１２４により、Step_１２６にて、Ｎ＝１×２＋０×２８×２５６＝２となり、Step_１２７を介して、フローは、Step_１０３に至る。
【０１８０】
Step_１０３では、Ｌ=２５６、Ｎ=２となっていることより、ワーキングメモリのラインアドレス’２’に記憶された１２８画素のデータが、内部メモリのアドレス’０’に転送されることになる。このときの内部メモリの内容を図２２の(f)に示す。このとき、内部メモリのアドレス’０’には、原稿画像データの先頭主走査ラインの（０、２５６）〜（０、５１２）までの偶数が素位置の１２８画素が記憶されていることになる。また、このときに、ＰＥ０に対するsep型変数ＫがＫ=０となっていることより、ＰＥ０は原稿画像データの（０、２５６）の画素位置の画像データの２値化処理を行うことになる。すなわち、ＰＥ０がＬ=２５６の時に２値化処理を行うのは、図２３のＣの画素位置に対応する原稿画像データということになる。すなわち、ＰＥ０が処理する原稿画像位置は、ＢＮＤ＝０、ＢＬＫ＝１の先頭主走査ラインの先頭画素となる。この場合に、ＰＥ０が処理する画素位置に対する２値化誤差の配分ＥＲｈは、Step_１０６２によりＰＥ１２７が有する２値化誤差メモリＥＲＲＯ’［０］より算出される。以降フローを繰り返し、Ｌ=２５７の場合の内部メモリの内容を図２２（ｇ）に示す。
【０１８１】
また、Ｌ＝７１６７の場合の動作に関して以下に説明する。Ｌ=７１６７の場合の内部メモリの内容を図２２（ｈ）に示す。また、図２３よりこの時に各ＰＥが処理を行う画素位置は、ＢＮＤ＝０のＢＬＫ=２７のブロックとなり、ＰＥ０は、最終主走査ラインの奇数画素目である（１２７、６９１５）の原稿画像データの処理を行うことになる。この場合に、前述したのと同様にして、Step_１０３より、Step_１１７にフローが至ると、ＰＥ０のsep型変数Ｋ＝２５５であることより、Step_１１７０にフローが進む。この場合のＰＥ０に属するsep型変数iは変数ＢＬＫと等しい数値である’２７’となっていることより、２値化誤差ＥＲＲＯ［０］がＥＲＲＢＯ［２７］に記憶され、i=(２７＋１)％２８＝０が設定される。さらにフローが進みStep_１２１にフローが至ると、Ｌ＝７１６８により、（Ｌ−２５５）％２５６＝１により、内部メモリのアドレス’１’の２値化結果がワーキングメモリのアドレス’５４’に転送され、フローは、Step_１２２より、Ｌ＝７１６８％２５６＝０により、Step_１２３に至る。ここで、ＢＬＫ＝（２７＋１）％２８＝０となり、Step_１２４より、Step_１２５に至り、ＢＮＤ=ＢＮＤ+１＝０＋１＝１となる。また、Step_１２６により、Ｎ=ＢＬＫ×２＋ＢＮＤ×２８×２５６＝０×２＋１×２８×２５６＝７１６８となり、Step_１２７よりStep_１０３に分岐する。Step_１０３でワーキングメモリのラインアドレスＮ＝７１６８の１２８画素データが、内部メモリのアドレスＬ％２５６＝７１６８％２５６＝０に転送される。このときの内部メモリの内容を図２２（i）に示す。
【０１８２】
図２２(i)、および、図２３に示すように、このときＰＥ０が処理する原稿画像のデータ位置は、（１２８、０）となり、原稿画像の１２９ライン目の主走査の先頭画像データなる。この場合の２値化誤差ＥＲｈ、および、ＥＲｖの算出し関して以下に説明する。
【０１８３】
Step_１０３より、Step_１０４に至るとＰＥ０のフローは、ＰＥＮＵＭ=０、Ｌ=７１６８、ＢＬＫ=１により、Step_１０４に至り、ＥＲｈ＝０が設定される。図２３に示すように、このときＰＥ０が処理する原稿画像データは１２９ライン目の主走査先頭画素位置にあることより、左隣接画素からの分配誤差ＥＲｈは’０’に設定される。次にStep_１０７にて、Ｋが１以下か否かが判別される。図２１に示すように、この場合には、Ｌ＝７１６８であることより、ＰＥ０のsep型変数ＫはＫ=０となっており、ＰＥ０のフローはStep_１０８２に至る。
【０１８４】
Step_１０８２では、
ＥＲｖ＝ＥＲＲＢＯ'［i］／４＋ＥＲＲＢＥ［i］／４＋ＥＲＲＢＯ［i］／４を算出する。
【０１８５】
ここで、ＰＥ０に関するsep型変数iは、Step_１１７０でi=０に設定されていることにより、
ＥＲｖ＝ＥＲＲＢＯ'［０］／４＋ＥＲＲＢＥ［０］／４＋ＥＲＲＢＯ［０］／４
が代入される。
【０１８６】
ここで、ＥＲＲＢＯ’［０］とは、ＰＥ０の左隣接画素のＰＥとして、ＰＥ１２７が有するsep型変数ＥＲＲＢＯ［０］に相当するが、ＢＬＫ=０の場合ＰＥ０は、主走査の先頭画素を処理することよりＥＲＲＢＯ'［０］＝０が代入される。また。ＥＲＲＢＥ［０］は、図２３中のＢ０の位置の画素が発生した２値化誤差を示し、ＰＥ０が、Ｌ＝２５４の時に処理した画素位置が発生した２値化誤差であり、これは、Step_１１６０にて、ＥＲＲＢＥ［０］に設定されていたものである。さらに、ＥＲＲＢＯ［０］は、図２３中のＢ１の位置の画素が発生した２値化誤差を示し、ＰＥ０が、Ｌ＝２５５の時に処理した画素位置が発生した２値化誤差であり、これは、Step_１１７０にて、ＥＲＲＢＯ［０］に設定されていたものである。以下同様にして、フローを繰り返す。
【０１８７】
ここで、ＢＮＤ=１、ＢＬＫ＝０の場合における主走査先頭画素以外の２値化誤差の分配に関してＬ＝７１６９の場合を例に説明する。Ｌ＝７１６９の場合、フローはStep_１０３、Step_１０４より、Step_１０６０より、Step_１０６１に至る。ここで、ＥＲｈの算出が行われる。これは、上述したのと同様にして、各ＰＥそれぞれが、偶数画素位置を処理した際に発生した２値化誤差が記憶されている同一ＰＥのsep型変数ＥＲＲＥ［０］を参照して実施される。次に、フローは、Step_１０７に至る。このとき、ＰＥ０のsep型変数Ｋは、’１’となっていることより、ＰＥ０の処理は、Step_１０７より、Step_１０８に至り、Ｌ＝７１６９であることより、Step_１０８１に至る。Step_１０８１では、
ＥＲｖ＝ＥＲＲＢＥ［０］／４＋ＥＲＲＢＯ［０］／４＋ＥＲＲＢＥ’’［０］／４
を算出する。
【０１８８】
ここで、ＥＲＲＢＥ［０］とは、ＥＲＲＢＥ［０］は、図２３中のＢ０の位置の画素が発生した２値化誤差を示し、ＰＥ０が、Ｌ＝２５４の時に処理した画素位置が発生した２値化誤差であり、これは、Step_１１６０にて、ＥＲＲＢＥ［０］に設定されていたものである。さらに、ＥＲＲＢＯ［０］は、図２３中のＢ１の位置の画素が発生した２値化誤差を示し、ＰＥ０が、Ｌ＝２５５の時に処理した画素位置が発生した２値化誤差であり、これは、Step_１１７０にて、ＥＲＲＢＯ［０］に設定されていたものである。さらに、ＥＲＲＢＥ’’［０］は、図２３中のＢ２の位置の画素が発生した２値化誤差を示し、ＰＥ１が、Ｌ＝２５６の時に処理した画素位置が発生した２値化誤差であり、これは、Step_１１６０にて、ＥＲＲＢＯ［０］に設定されていたものである。以上のように、ここで、算出されるＥＲｖは、図１６（ｂ）中の画素位置’１’、’２’、’３’で示す３画素から分配される２値化誤差の総和となる。
【０１８９】
同様にして、図２３に示した、ＢＮＤ＝１〜３８の先頭主走査ラインの各画素は、ひとつ上のＢＮＤの最終主走査ラインを処理した際に発生した２値化誤差を記憶したsep型変数ＥＲＲＢＥ［i］、 ＥＲＲＢＯ［i］（Step_１１６０、または、Step_１１７０にて記憶）を参照することにより、ＥＲｖとして、図１６（ｂ）中の画素位置’１’、’２’、’３’で示す３画素から分配される２値化誤差の総和を算出することになる。
【０１９０】
以下フローを繰り返し、Ｌ＝２７９８０６に達すると、Step_１２７にて、フローを終了しる。また、この場合には、図２３に示した原稿画像データのすべての２値化処理が終了することになる。
【０１９１】
以上説明したように、原稿画像データの２値化処理が終了すると、Ａ４原稿画像１面分である７１６８×４９９２画素の２値化処理が終了し、２値化結果がワーキングメモリ２１６に記憶されることになる。
【０１９２】
ワーキングメモリメモリ２１６に記憶された２値化済データは、ワーキングメモリのラインアドレス’０’より１２８画素毎に図３に示した、演算ユニット３００の外部メモリインターフェース３０６を介して、出力レジスタ３０４に入力される。次に、ワーキングメモリメモリ２１６より読み出された２値化済データは、出力レジスタ３０４からＦＩＦＯメモリ３０７に書き込まれる。ＦＩＦＯ３０７のブロック図を図２４に示す。図２４の２３００はスイッチであり、出力レジスタ３０４から出力される信号を１２８画素毎にＦＩＦＯ１（偶数画素データ）、２３０１とＦＩＦＯ２（奇数画素データ）２３０２に振り分けて出力する。ＦＩＦＯ１、ＦＩＦＯ２は、１／２ライン分（３５８４画素）の容量を有するラインメモリである。ＦＩＦＯ１、ＦＩＦＯ２の出力は、セレクタ２３０４に入力され、セレクタ２３０４では、２入力信号を１画素毎に切り換えて、画像データ制御部２０３へ出力する。図２５を用いて図２４のＦＩＦＯメモリ３０７の動作に関して説明する。
【０１９３】
画像処理ユニット３００より出力されるクロックにより、出力レジスタ３０４より出力された画像データを１２８画素単位で、ＦＩＦＯ１、ＦＩＦＯ２にライトする。リードクロックは、作像エンジン２０５の動作に同期したクロックとなっている。なお、本実施の形態では、ＦＩＦＯ１、ＦＩＦＯ２へのライトクロックが１００ＭＨｚ、リードクロックは、２０ＭＨｚと設定されており、リードクロックに対してライトクロックが高速なものとなっている。まず、出力レジスタ３０４の出力信号は、スイッチ２３００より、ＦＩＦＯ１に接続され、０〜２５４画素目までの、１２８画素がライトされるとスイッチ２３００が切り替わり、ＦＩＦＯ２に１〜２５５が素目までの１２８画素をライトする。以降１２８画素毎にスイッチを切り換えなら、０ライン目の偶数画素位置２値化済みデータは、ＦＩＦＯ１へ、奇数画素位置２値化済みデータＦＩＦＯ２へ、書き込まれることになる。また、ＦＩＦＯ２に２５５画素目の２値化済みデータの書き込みが終了すると、リード開始（０）のタイミングより、０画素目の画像データの読み出しが、作像ユニット２０５動作に同期したクロックにより開始される。図２５に示すように、ＦＩＦＯ１、ＦＩＦＯ２からの２値化済みデータの読み出しは、ＦＩＦＯ１、ＦＩＦＯ２からのリード動作を画素毎に切り換えることにより、セレクタ２３０４より出力される２値化済み画像データは、０、１、２、・・・・７１６７という１ライン毎に連続したデータとなる。以降これを繰り返し、７１６８ライン分の２値化済みデータが、セレクタ２３０４より画像データ制御部２０３へ出力されることになる。
【０１９４】
以上のように、ＦＩＦＯ３０７から読み出された２値化済データは、作像ユニット２０５に入力され、作像エンジン２０５入力データに応じたプリント処理をおこなわれることになる。
【０１９５】
以上のようにして、読取ユニット２０１により読みとられたＡ４サイズの原稿画像データの２値化処理が行なわれ、プリント出力が得られることになる。
【０１９６】
さらに、読取ユニット２０１より画像処理プロセッサ−２０４に入力される画像クロック速度に対して、画像処理プロセッサ−の動作クロックが十分に高速で、リアルタイム処理が可能な場合には、入力画像データ読取ユニット２０１より読み取られた画像データをワーキングメモリ２１６に記憶することなく２値化処理を行なう構成としてもよい。その場合には、図３の入力レジスタ３０２より入力された画像データをデータ演算処理部３０３の内部メモリ４１１に取り込み、２値化処理が終了した画素位置の内部メモリを２値化データに書きかえるようにし、図１２に示した１バンド分の２値化処理が終了した時点より、内部メモリの２値化済データを出力レジスタを介して、作像ユニット２０５に出力させるようにする構成としてもよい。
【０１９７】
または、ワーキングメモリ２１６に入力画像データ読取ユニット２０１より読み取られた画像データを所定ライン数（１２８ライン以上）記憶する領域と、２値化済みデータを所定ライン数記憶する領域を設けて、それぞれに記憶する画像データを更新しながら、Ａ４サイズの原稿画像データ全面の２値化処理を行うようにしてもよい。ただし、この場合には、図２０のStep_１２１における、内部メモリの２値化結果を転送するワーキングメモリの転送先アドレスは、対応する入力画像データが記憶されている領域とは異なり、上記、２値化済みデータを所定ライン数記憶する領域となる。
【０１９８】
さらに、本実施の形態の誤差拡散処理における誤差データは、図１６に示した隣接４画素に分配されているが、誤差拡散の方法はこれに限定されるものではなく、図２６に示すような場合であっても適用可能なことは自明である。図２６には誤差を配分する画素を１０画素とした場合の例を示し、又  各画素位置への誤差配分率の例を示したが、これらの例に限定される物では無い。図中＊印は夫々のＰＥが今同時に処理しようとする注目画素位置であり、誤差は該注目画素位置を含まず、注目画素位置に近い画素から１０画素程度の画素に配分すれば、良好な画像が得られる。
【０１９９】
尚、図中Ｘ印は各誤差の配分演算で生じた演算誤差を吸収する画素位置であり、誤差の総和から他の画素への配分誤差の総和を減算した余り誤差を割り当てる。また、図１６の誤差分配時に設けた、各ＰＥが有する、ＢＮＤ間の誤差分配用のsep型変数ＥＲＲＢＥ［０］〜ＥＲＲＢＥ［２７］、ＥＲＲＢＯ［０］〜ＥＲＲＢＯ［２７］のそれぞれ２８×２＝５６個の変数は、図２６に示すパターンで誤差を配分する場合には５６×２＝１１２個が必要になる。
【０２００】
さらには、図２３に示した、注目画素位置の番号よりも大きな番号が付された任意の画素位置は、注目画素の２値化処理が終了後に２値化処理が行われる画素位置を示したおり、これらの画素位置への誤差配分が可能なことは、自明である。
【０２０１】
また、本実施の形態では、０画素目より順番に入力される主走査方向の原稿画像データを奇数番目と偶数番目に振り分ける処理を図１７に示したＦＩＦＯメモリ３０１にて行っているが、奇数番目と偶数番目画素の振り分けを行う手段は、これに限定されるものではない。たとえば、ワーキングメモリ２１６への原稿画像データの入力は、第１の実施の形態にて説明した図７に示した形式で行い、ワーキングメモリ２１６より、内部メモリ４１１へのデータ転送時に、奇数番目と偶数番目の原稿画像データの振り分けを行うようにしてもよい。
【０２０２】
または、ワーキングメモリ２１６より、内部メモリ４１１への転送は、０画素番目より順番に行い、内部メモリ４１１への転送後に、内部メモリ４１１の内容を操作して、奇数番目と偶数番目画素の振り分けを行うようにしてもよい。
【０２０３】
または、ワーキングメモリ２１６より、内部メモリ４１１への転送は、０画素番目より順番に行い、奇数番目と偶数番目の原稿画像データの振り分けは、各ＰＥが内部メモリ４１１をアクセスする際に行うようにしてもよい。
【０２０４】
さらには、図７の形式にてワーキングメモリ２１６に記憶された原稿画像データを、ワーキングメモリ２１６の内容を操作することにより、奇数番目と偶数番目、それぞれの並びに変更された原稿画像データの並びをワーキングメモリ２１６に形成するようにしてもよい。
【０２０５】
同様に、奇数番目と偶数番目に振り分けられた原稿画像データの２値化処理結果を連続する並びデータに変換する手段も、図２４に示したＦＩＦＯメモリ３０７による手段に限定されるものではない。たとえば、２値化処理結果を内部メモリ４１１より、ワーキングメモリ２１６へ転送する際に、奇数番目と偶数番目に振り分けられた原稿画像データの２値化処理結果を連続する並びデータに変換するようにしてもよいし、内部メモリ４１１の内容を操作して、内部メモリ４１１に連続する並びのデータ列を形成した後に、ワーキングメモリ２１６への転送を行うようにしてもよい。さらには、各ＰＥが奇数画素と偶数画素に振り分けて処理を行った２値化結果を、連続するデータ並びとなるように、各ＰＥが内部メモリ４１１にライトするようにしてもよい。
【０２０６】
または、ワーキングメモリ２１６に転送された、奇数番目と偶数番目に振り分けられた原稿画像データの２値化処理結果をワーキングメモリ２１６の内容を操作することにより、連続する並びデータに変更された原稿画像データの並びをワーキングメモリ２１６に形成するようにしてもよい。
【０２０７】
このように第２の実施の形態によれば、第１の実施の形態の効果に加え、第１の実施の形態ではでは誤差の拡散が行なえなかった注目画素の斜め下に隣接する画素（図１６のＡ）への誤差拡散を行うことが可能となることにより、誤差拡散処理後の画像データに発生する不自然なテクスチャーを抑制することが可能となり、画像品質を向上させる効果がある。
【０２０８】
（第３実施の形態）
第３の実施の形態では、更に高画質を得るために注目画素の周辺１２画素へ誤差配分を行う場合の実施の形態を説明する。
【０２０９】
図２７に誤差の配分方向と、配分比率を示す。図中＊印は夫々のＰＥが今同時に処理しようとする注目画素位置であり、誤差は該注目画素位置を含まず、注目画素位置に近い画素から１２画素に配分する。尚 、図中Ｘ印は各誤差の配分演算で生じた演算誤差を吸収する画素位置であり、誤差の総和から他の画素への配分誤差の総和を減算した余り誤差を割り当てる。
【０２１０】
第２の実施の形態では、各ＰＥがそれぞれ、主走査方向に連続する２画素の処理を担当していたのに対して、第３の実施の形態では、各ＰＥがそれぞれ、主走査方向の連続する３画素の処理を担当することになる。
【０２１１】
第３の実施の形態におけるワーキングメモリ２１６に記憶される原稿画像データとワーキングメモリのアドレスとの関係を図２８に示す。図２８に示すように、ワーキングメモリ２１６には、主走査方向の３の倍数の画素位置データと、３の倍数＋１の画素位置データ、３の倍数＋２の画素位置データが、１２８画素ずつ順に記憶される。なお、本実施の形態では主走査方向の画素数を７１９６画素とした例を示している。
【０２１２】
第３の実施の形態は、第１、第２の実施の形態と同様に、図２８に示すワーキングメモリのアドレス’０’より原稿画像データを１２８画素ずつ、順番にデータ演算処理部３０３の内部メモリ４１１に転送し、内部メモリに転送された画像データを各ＰＥが並列に２値化処理を行うように動作する実施の形態である。
【０２１３】
なお、本実施の形態の詳細な処理フローは、第１の実施の形態、および、第２の実施の形態の説明より、容易に、類推可能なことより、詳細な動作説明は省略する。
【０２１４】
図２９に、主走査７２９６画素、副走査４９９２ラインのＡ４サイズの原稿画像データの２値化処理の順番と、各ＰＥが処理を担当する画素位置、および、各画素位置に対する処理の順番を示す。図２９に示すように、図２７に示した２値化誤差が分配される注目画素周辺の１２画素領域の２値化処理の順番は、注目画素の２値化処理の順番より遅れた順番となっていることより、図２７に示した２値化誤差の分配が行われることがわかる。
【０２１５】
また、第３の実施の形態では、各ＰＥがそれぞれ、主走査方向の連続する３画素の処理を担当しているが、これに限定されるものではなく４画素または、５画素としてもよい。
【０２１６】
各ＰＥそれぞれが処理を担当する主走査方向の連続する画素数を増加させることにより、より広範囲な画素位置への２値化誤差の分配が可能となる。
【０２１７】
このように第３の実施の形態によれば、第２の実施の形態の誤差拡散領域に対して、さらに注目画素の副走査方向に隣接するラインにおける主走査方向の2画素手前の画素位置への誤差拡散が可能となる。これにより、誤差拡散領域の対称性を向上させることが可能となり、誤差拡散処理後の画像データのテクスチャーをより好ましいものに改善することがきる。これより、更なる高画質化が図れるという効果がある。
【０２１８】
（他の実施の形態）
さらに、本実施の形態では入力画像データを２値化する誤差拡散処理を例に説明しているが、２値化処理に限定されるものではなく、３値化、４値化等の多値誤差拡散処理にも適用可能なことは、明らかである。
【０２１９】
さらには、本発明が適用される画像処理としては、誤差拡散に限定されたものではなく、各種誤差拡散法に従う改良された方式はもとより、前に行なった処理結果を利用して注目画素の処理が行なわれるいわゆる逐次処理を行なう場合にも適用可能なことは自明である。
【０２２０】
また、各実施形態の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２２１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２２２】
【発明の効果】
以上説明したように本発明によれば、逐次処理を行なうための補助的な演算処理部を利用することなくＳＩＭＤ型演算処理部を用いて、例えば誤差拡散処理等の画像処理を行なうことが可能となる。さらには、ラスタースキャンによる１ラインの入力画像データの画素数が、ＳＩＭＤ型プロセッサーが有する演算処理部の個数以上の場合であっても、ＳＩＭＤ型プロセッサーが有する複数の演算処理部を効率よく動作させながら逐次処理が可能となる。
【０２２３】
又、良好な画質を得るための画素位置へ２値化誤差を補正できる為、高品位な画像が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態にかかる画像処理装置の構成を機能的に示したブロック図である。
【図２】本実施の形態にかかる画像処理装置のハードウェア構成を示したブロック図である。
【図３】図２に示した画像処理プロセッサー部２０４の構成を説明するための図である。
【図４】ＳＩＭＤ型プロセッサーを構成する演算処理ユニット３００の構成を示したブロック図である。
【図５】図２中の読取ユニット２０１より出力されるＡ４原稿画像データを示した図である。
【図６】図３に示したＦＩＦＯメモリ３０１の動作を説明するための図である。
【図７】ワーキングメモリ２１６に記憶された画像データとワーキングメモリのアドレスとの関係を示した図である。
【図８】図３のデータ演算処理部３０３における動作を示したフローチャートである。
【図９】本実施の形態における２値化処理を説明するための図である。
【図１０】各ＰＥに対する、sep型変数Ｋの値を示した図である。
【図１１】２値化誤差の分配方法を示した図である。
【図１２】本実施の形態における２値化処理を説明するための図である。
【図１３】ＦＩＦＯメモリ３０７の動作を説明するための図である。
【図１４】ワーキングメモリ２１６に記憶された画像データとワーキングメモリのアドレスとの関係を示した図である。
【図１５】２値化誤差の配分方法を示した図である。
【図１６】第２の実施の形態における２値化誤差の配分方法を示した図である。
【図１７】ＦＩＦＯメモリ３０１の構成を示した図である。
【図１８】ＦＩＦＯメモリ３０１の動作を説明するためのタイムチャートである。
【図１９】第２の実施の形態における原稿画像データとワーキングメモリのアドレスとの関係を示した図である。
【図２０】第２の実施の形態における処理を示したフローチャートである。
【図２１】第２の実施の形態における各ＰＥに対する、sep型変数Ｋの値を示した図である。
【図２２】Ｌの値に応じた、内部メモリ４１１の内容を示した図である。
【図２３】Ｌの増加に対応した、２値化処理が行なわれる原稿画像データの配置と２値化処理の順番を示した図である。
【図２４】ＦＩＦＯメモリ３０７の構成を示した図である。
【図２５】ＦＩＦＯメモリ３０７の動作を説明するためのタイムチャートである。
【図２６】２値化誤差の配分方法を示した図である。
【図２７】第３の実施の形態における２値化誤差の配分方法を示した図である。
【図２８】第３の実施の形態におけるワーキングメモリ２１６に記憶される原稿画像データとワーキングメモリのアドレスとの関係を示した図である。
【図２９】第３の実施の形態における２値化処理を説明するための図である。
【符号の説明】
２０１  読取ユニット
２０２  ＰＤＬ処理ユニット
２０３  画像データ制御部
２０４  画像処理プロセッサー部
２０５  作像ユニット
２０６  メモリ制御部
２０７  メモリモジュール
２０８  制御用データバス
２０９  システムコントローラ
２１０  ＲＯＭ
２１１  ＲＡＭ
２１２  操作パネル
２１３  ネットワーク
２１４  ネットワーク制御部
２１５  パーソナルコンピュータ
２１６  ワーキングメモリ
【図１】
0004143302.tif 000002
【図２】
0004143302.tif 000003
【図３】
0004143302.tif 000004
【図４】
0004143302.tif 000005
【図５】
0004143302.tif 000006
【図６】
0004143302.tif 000007
【図７】
0004143302.tif 000008
【図８】
0004143302.tif 000009
【図９】
0004143302.tif 000010
【図１０】
0004143302.tif 000011
【図１１】
0004143302.tif 000012
【図１２】
0004143302.tif 000013
【図１３】
0004143302.tif 000014
【図１４】
0004143302.tif 000015
【図１５】
0004143302.tif 000016
【図１６】
0004143302.tif 000017
【図１７】
0004143302.tif 000018
【図１８】
0004143302.tif 000019
【図１９】
0004143302.tif 000020
【図２０】
0004143302.tif 000021
【図２１】
0004143302.tif 000022
【図２２】
0004143302.tif 000023
【図２３】
0004143302.tif 000024
【図２４】
0004143302.tif 000025
【図２５】
0004143302.tif 000026
【図２６】
0004143302.tif 000027
【図２７】
0004143302.tif 000028
【図２８】
0004143302.tif 000029
【図２９】
0004143302.tif 000030