(57)【要約】【課題】  本発明の課題は、平均濃度保存法及び、誤差拡散法をハードウェア上で実行するために必要な処理を高速化することができる装置を提供することである。【解決手段】  上記課題を解決するために、本発明に係る装置は、画像に含まれる各画素における画素データを、各画素に対する閾値を用いてＮ（Ｎは２以上の整数）値化することで、各画素におけるＮ値化結果を得るＮ値化手段と、各画素に対する閾値を算出する算出手段とを備え、算出手段は、各画素より前にＮ値化手段でＮ値化されて得られた複数の画素におけるＮ値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで閾値を算出し、さらに、複数の画素のうちの特定画素の画素データのＮ値化手段におけるＮ値化よりも、算出手段における、特定画素の画素データにおけるＮ値化結果に対して係数を掛ける処理が後ではないことを特徴とする。【選択図】  図６
2010193420.tif 000002
【特許請求の範囲】
【請求項１】
画像に含まれる各画素における画素データを、前記各画素に対する閾値を用いてＮ（Ｎは２以上の整数）値化することで、前記各画素におけるＮ値化結果を得るＮ値化手段と、
前記各画素に対する閾値を算出する算出手段とを備え、
前記算出手段は、前記各画素より前に前記Ｎ値化手段でＮ値化されて得られた複数の画素におけるＮ値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで前記閾値を算出し、さらに、前記複数の画素のうちの特定画素の画素データの前記Ｎ値化手段におけるＮ値化よりも、前記算出手段における、前記特定画素の画素データにおけるＮ値化結果に対して係数を掛ける処理が後ではないことを特徴とする装置。
【請求項２】
前記Ｎ値化と同時に前記処理を前記算出手段で行うために、事前に、前記算出手段は、前記特定画素の画素データにおけるＮ値化結果を想定することを特徴とする請求項１に記載の装置。
【請求項３】
前記算出手段は、前記特定画素の画素データにおけるあらゆるＮ値化結果を想定するが、Ｎ値化結果が０となる場合は想定しないことを特徴とする請求項２に記載の装置。
【請求項４】
画像に含まれる各画素における画素データを、前記各画素に対する閾値を用いてＮ（Ｎは２以上の整数）値化することで、前記各画素におけるＮ値化結果を得るＮ値化ステップと、
前記各画素に対する閾値を算出する算出ステップとを備え、
前記算出ステップは、前記各画素より前に前記Ｎ値化ステップでＮ値化されて得られた複数の画素におけるＮ値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで前記閾値を算出し、さらに、前記複数の画素のうちの特定画素の画素データの前記Ｎ値化ステップにおけるＮ値化よりも、前記算出ステップにおける、前記特定画素の画素データにおけるＮ値化結果に対して係数を掛ける処理が後ではないことを特徴とする方法。
【請求項５】
前記Ｎ値化と同時に前記処理を前記算出ステップで行うために、事前に、前記算出ステップは、前記特定画素の画素データにおけるＮ値化結果を想定することを特徴とする請求項４に記載の方法。
【請求項６】
前記算出ステップは、前記特定画素の画素データにおけるあらゆるＮ値化結果を想定するが、Ｎ値化結果が０となる場合は想定しないことを特徴とする請求項５に記載の方法。
【請求項７】
請求項４乃至６のいずれかに記載された方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置、方法、プログラムおよび記憶媒体に関する。
【背景技術】
【０００２】
近年、プリンタの普及により、多値の入力画像データを、２値もしくは数段階の濃度に変換する画像処理技術が、頻繁に用いられている。
【０００３】
多値の入力画像データを、２値もしくは数段階の濃度に変換する画像処理技術として、一般的に、平均濃度保存法や、誤差拡散法などの量子化処理が用いられる。
【０００４】
しかし、平均濃度保存法や、誤差拡散法などの量子化処理では、注目画素の量子化結果や、量子化結果の誤差データなどに対して様々な演算（住算や除算あるいは足し算）を行い、その演算結果を、注目画素の次の画素の量子化に用いる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１３６５１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来は、まず、注目画素の量子化が行われ、量子化により得られた情報（量子化結果や、量子化結果の誤差データ）に演算が行われる。そして、演算結果を用いて、注目画素の次の画素の量子化が行われていたので、以下のような課題があった。
【０００７】
すなわち、どうしても、注目画素の量子化の後すぐに、注目画素の次の画素の量子化を行うことができなかった。なぜなら、注目画素の量子化の後と、注目画素の次の画素の量子化との間に、計算時間のかかる演算が入ってしまうからである。
【０００８】
その結果、量子化処理を高速化できなかった。
【０００９】
とはいえ、現在、量子化処理の高速化が望まれている。そのため、注目画素の量子化の後すぐに注目画素の次の画素の量子化を行えるようにする必要がある。このためには、注目画素の量子化が終了する際（同時、又は、それより早く）に、注目画素の量子化結果を用いた演算が終了している必要がある。
【００１０】
そこで、本発明は、注目画素の量子化が終了してすぐに、上記演算結果を用いて、次の画素の量子化を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明に係る装置は、画像に含まれる各画素における画素データを、各画素に対する閾値を用いてＮ（Ｎは２以上の整数）値化することで、各画素におけるＮ値化結果を得るＮ値化手段と、各画素に対する閾値を算出する算出手段とを備え、算出手段は、各画素より前にＮ値化手段でＮ値化されて得られた複数の画素におけるＮ値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで閾値を算出し、さらに、複数の画素のうちの特定画素の画素データのＮ値化手段におけるＮ値化よりも、算出手段における、特定画素の画素データにおけるＮ値化結果に対して係数を掛ける処理が後ではないことを特徴とする。
【発明の効果】
【００１２】
本発明により、平均濃度保存法及び、誤差拡散法をハードウェア上で実行するために必要な処理を高速化することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態及び、平均濃度保存法の従来技術における注目画素、２値化結果の加重演算を行う範囲、誤差分配を行う範囲を示す図である。
【図２】第１の実施形態及び、平均濃度保存法の従来技術における、２値化結果の加重演算を行う場合の係数を示す図である。
【図３】第１の実施形態及び、平均濃度保存法の従来技術における、２値化結果の例を示す図である。
【図４】従来技術における、平均濃度保存法のハードウェアを示す図である。
【図５】従来技術における、平均濃度保存法のクロックエッジと演算処理の内容を示す図である。
【図６】第１の実施形態における、ハードウェアを示す図である。
【図７】第１の実施形態における、クロックエッジと演算処理の内容を示す図である。
【図８】第２の実施形態及び、従来技術における注目画素、２値化結果の加重演算を行う範囲、誤差分配を行う範囲を示す図である。
【図９】第２の実施形態及び、従来技術における、２値化結果の加重演算を行う場合の係数を示す図である。
【図１０】第２の実施形態及び、従来技術における、２値化結果の例を示す図である。
【図１１】従来技術における、ハードウェアを示す図である。
【図１２】従来技術における、クロックエッジと演算処理の内容を示す図である。
【図１３】第２の実施形態における、ハードウェアを示す図である。
【図１４】第２の実施形態における、クロックエッジと演算処理の内容を示す図である。
【図１５】第３の実施形態及び、従来技術における注目画素、４値化結果の加重演算を行う範囲、誤差分配を行う範囲を示す図である。
【図１６】第３の実施形態及び、従来技術における、４値化結果の加重演算を行う場合の係数を示す図である。
【図１７】第３の実施形態及び、従来技術における、４値化結果の例を示す図である。
【図１８】従来技術における、ハードウェアを示す図である。
【図１９】第３の実施形態における、ハードウェアを示す図である。
【図２０】第３の実施形態における、クロックエッジと演算処理の内容を示す図である。
【図２１】第４の実施形態及び、誤差拡散法の従来技術における注目画素、誤差分配を行う範囲を示す図である。
【図２２】第１の実施形態及び、、誤差拡散法の従来技術における、２値化結果の加重演算を行う場合の係数を示す図である。
【図２３】従来技術における、誤差拡散法のハードウェアを示す図である。
【図２４】従来技術における、誤差拡散法のクロックエッジと演算処理の内容を示す図である。
【図２５】第４の実施形態における、ハードウェアを示す図である。
【図２６】第４の実施形態における、クロックエッジと演算処理の内容を示す図である。
【発明を実施するための形態】
【００１４】
従来の平均濃度保存法は、閾値算出、２値化処理、および誤差分配の３つの処理を、以下で説明するように繰り返す方法である。
【００１５】
平均濃度保存法の閾値算出の処理において、注目画素から前の、すでに２値化の完了している画素の２値化結果を用いて、２値化結果に対応する、注目画素に対する閾値が算出される。
【００１６】
平均濃度保存法の２値化処理において、注目画素の画像データは、以前の画素の２値化誤差により誤差補正が行われた後、上述した閾値算出の処理で算出された閾値と比較され、２値化処理が行われる。
【００１７】
平均濃度保存法の誤差分配の処理において、２値化のときに出た誤差（閾値と誤差補正後の画像データとの差）は、以降、処理されるべき画像データに誤差補正値として渡される。
【００１８】
以下で、従来の平均濃度保存法の各処理に関する説明を行う。
【００１９】
＜従来の平均濃度保存法の閾値算出の処理＞
２値化処理の対象となる注目画素を（ｎ，ｍ）としたとき、ｍラインで、ｎ−１以前の画素に関しては、既に２値化処理が完了していて、２値の画像データ（「１」または「０」）が存在する。ここで、（ｎ，ｍ）は、画素の位置を表す。例えば、ｎは、記録装置における主走査方向の位置を示し、ｍは、記録装置における副走査方向の位置を示す。
【００２０】
同様に、ｍ−１以前のラインに関しても、既に２値化処理が完了していて、２値の画像データが存在する。
【００２１】
閾値算出の処理では、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する加重演算を行うことにより、注目画素の閾値の算出が行われる。
【００２２】
ここで、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
【００２３】
以下で、図１を用いて、平均濃度保存法の閾値算出の処理の説明を行う。
【００２４】
図１において、閾値算出に用られる画素の範囲は、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の４画素である。
【００２５】
図２は、上記の４画素に対する加重係数を示している。図２に示されているように、（ｎ−１，ｍ−１）の画素に対する加重係数は、「１」である。そして、（ｎ，ｍ−１）の画素に対する加重係数は、「２」である。そして、（ｎ＋１，ｍ−１）の画素に対する加重係数は、「１」である。そして、（ｎ−１，ｍ）の画素に対する加重係数は、「２」である。
【００２６】
ここで、注目画素以前の２値化処理結果に対して、色を出力する部分の値を「画像データのＭａｘ値」（例えば、「２５５」）、色を出力しない部分の値を「０」として、加重演算処理が行われる。
【００２７】
よって、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理を行うことにより算出される。
【００２８】
まず、加重演算処理では、各画素の係数との乗算が、以下のように行われる。
Ｓ（ｎ−１，ｍ−１）＝（ｎ−１，ｍ−１）の加重係数×（ｎ−１，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ，ｍ−１）＝（ｎ，ｍ−１）の加重係数×（ｎ，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ＋１，ｍ−１）＝（ｎ＋１，ｍ−１）の加重係数×（ｎ＋１，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ−１，ｍ）＝（ｎ−１，ｍ）の加重係数×（ｎ−１，ｍ）の２値化処理結果値×画像データのＭａｘ値
【００２９】
次に、加重演算処理では、各画素の乗算結果の和の算出が、以下のように行われる。
Ｓｓｕｍ（ｎ，ｍ）＝Ｓ（ｎ−１，ｍ−１）＋Ｓ（ｎ，ｍ−１）＋Ｓ（ｎ＋１，ｍ−１）＋Ｓ（ｎ−１，ｍ）
【００３０】
次に、加重演算処理では、上記乗算結果の和に対する補正が、以下のように行われる。
ＳＬ（ｎ，ｍ）＝Ｓｓｕｍ（ｎ，ｍ）／｛（ｎ−１，ｍ−１）の加重係数＋（ｎ，ｍ−１）の加重係数＋（ｎ＋１，ｍ−１）の加重係数＋（ｎ−１，ｍ）の加重係数｝
【００３１】
よって、注目画素以前の２値化処理結果が、図３のような場合、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理により算出される。
ＳＬ（ｎ，ｍ）＝｛（１×１×２５５）＋（２×０×２５５）＋（１×１×２５５）＋（２×１×２５５）｝／（１＋２＋１＋２）＝１７０
【００３２】
＜従来の平均濃度保存法の２値化処理＞
次に、注目画素の画像データは、以前の画素の２値化誤差により誤差補正が行われた後、閾値と比較され、２値化処理が行われる。
【００３３】
２値化処理では、図１のように、注目画素のラインの注目画素の次の画素と、注目画素の１ライン下のラインの注目画素と同じ位置に誤差が分配される。このため、注目画素に対して、注目画素のラインの注目画素の１画素前の画素からの誤差データと、注目画素の１ライン前の同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
【００３４】
ここで、（ｎ，ｍ）の注目画素の入力データをＤｉｎ（ｎ，ｍ）とし、注目画素のラインの注目画素の１画素前の２値化処理誤差データをＥｒ（ｎ−１，ｍ）とする。そして、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データをＥｄ（ｎ，ｍ−１）とする。このとき、誤差補正後の注目画素の画像データであるＤ（ｎ，ｍ）の算出は、下記のような演算により行われる。
Ｄ（ｎ，ｍ）＝Ｄｉｎ（ｎ，ｍ）＋Ｅｒ（ｎ−１，ｍ）＋Ｅｄ（ｎ，ｍ−１）
例えば、Ｄｉｎ（ｎ，ｍ）＝１２０、Ｅｒ（ｎ−１，ｍ）＝１４、Ｅｄ（ｎ，ｍ−１）＝−８の場合、誤差補正後のデータであるＤ（ｎ，ｍ）は、下記のような値となる。
Ｄ（ｎ，ｍ）＝１２０＋１４＋（−８）＝１２６
誤差データＥｒ及びＥｄに関しては、後述する。
【００３５】
次に、Ｄ（ｎ，ｍ）と、先に算出された、注目画素に対する閾値であるＳＬ（ｎ，ｍ）との比較を行い、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、２値化結果の出力であるＢｉｎ（ｎ，ｍ）が決定される。
例えば、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、色の出力を行うと判断され、Ｂｉｎ（ｎ，ｍ）＝１と決定される。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、色の出力が行われず、Ｂｉｎ（ｎ，ｍ）＝０と決定される。
例えば、上述した例では、Ｄ（ｎ，ｍ）＝１２６、ＳＬ（ｎ，ｍ）＝１７０であるので、「Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）」となり、注目画素には色の出力が行われないと判断され、Ｂｉｎ（ｎ，ｍ）＝０と決定される。
【００３６】
＜従来の平均濃度保存法の誤差分配の処理＞
次に、従来の平均濃度保存法では、以下のような、閾値であるＳＬ（ｎ，ｍ）と、誤差補正後の画像データであるＤ（ｎ，ｍ）との差が、２値化誤差であるＥ（ｎ，ｍ）として、以降の処理画素に分配される。
Ｅ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）−Ｄ（ｎ，ｍ）
誤差分配の処理では、図１のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【００３７】
ここで、注目画素のラインの注目画素の１画素右の画素へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素の２箇所に対して、Ｅ（ｎ，ｍ）の１／２ずつ、分配される。
この場合、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２となる。
例えば、上述した例では、Ｄ（ｎ，ｍ）＝１２６、ＳＬ（ｎ，ｍ）＝１７０であるので、Ｅ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）−Ｄ（ｎ，ｍ）＝１７０−１２６＝４４と算出される。そして、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝４４／２＝２２、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝４４／２＝２２となる。
上記のＥｒ（ｎ，ｍ）は、Ｄｉｎ（ｎ＋１，ｍ）の誤差補正に用いられ、Ｅｄ（ｎ，ｍ）は、Ｄｉｎ（ｎ，ｍ＋１）の誤差補正に用いられる。
【００３８】
＜従来の平均濃度保存法を実行するためのハードウェア＞
次に、従来の平均濃度保存法を実行するためのハードウェアに関する説明を、図４を用いて、以下で行う。図４に示されているように、従来の平均濃度保存法を実行するためのハードウェアは、閾値算出部４０１と、２値化処理部４１４と、誤差分配部４１８とを有する。
【００３９】
＜閾値算出部４０１＞
以下で、図４の閾値算出部４０１について説明する。
【００４０】
図１の注目画素（ｎ，ｍ）の周囲のｍ−１のラインに関しては、既に２値化処理が完了していて、２値化された画像データが存在する。
【００４１】
それらの２値化された画像データは、２値化結果格納用メモリ４０２に格納されている。
【００４２】
閾値算出部４０１は、２値化結果格納用メモリ４０２に格納されている２値化処理の終わった画像データに対する加重演算を行い、注目画素の閾値の算出を行う。
【００４３】
図４の閾値算出用加重係数１（４０３）は、（ｎ−１，ｍ−１）の画素に対する加重係数を記憶している。
図４の閾値算出用加重係数２（４０４）は、（ｎ，ｍ−１）の画素に対する加重係数を記憶している。
図４の閾値算出用加重係数３（４０５）は、（ｎ＋１，ｍ−１）の画素に対する加重係数を記憶している。
図４の閾値算出用加重係数４（４０９）は、（ｎ−１，ｍ）の画素に対する加重係数を記憶している。
図４の閾値算出用加重係数の和（４１１）は、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の画素に対する加重係数の和を記憶している。
図４の閾値算出部４０１は、２値化結果格納用メモリ４０２から、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）の３画素の２値化された画像データの出力を行う。
【００４４】
そして、乗算回路１（４０６）は、（ｎ−１，ｍ−１）の画素の２値化された画像データに対して、（ｎ−１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
また、乗算回路２（４０７）は、（ｎ，ｍ−１）の画素の２値化された画像データに対して、（ｎ，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
また、乗算回路３（４０８）は、（ｎ＋１，ｍ−１）の画素の２値化された画像データに対して、（ｎ＋１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
【００４５】
閾値算出部４０１は、（ｎ−１，ｍ）の画素の２値化された画像データとして、直前の２値化処理で出力された２値化結果Ｂｉｎ（ｎ，ｍ）を、そのまま乗算回路４（４１０）に入力する。そして、乗算回路４（４１０）は、閾値算出用加重係数４（４０９）に記憶されている（ｎ−１，ｍ）の画素の加重係数と、画像データのＭａｘ値との乗算を行う。
そして、閾値算出部４０１は、乗算回路１（４０６）、乗算回路２（４０７）、乗算回路３（４０８）、乗算回路４（４１０）からの出力値を、加算回路１（４１２）に入力し、Ｓｓｕｍ（ｎ，ｍ）を算出する。
そして、閾値算出部４０１は、除算回路１（４１３）により、加算回路１（４１２）から出力されるＳｓｕｍ（ｎ，ｍ）を、閾値算出用加重係数の和４１１に記憶されている加重係数の和の値で割り、注目画素に対する閾値であるＳＬ（ｎ，ｍ）の算出を行う。
【００４６】
＜２値化処理部４１４＞
２値化処理部４１４は、注目画素の画像データに対して、以前の画素の２値化誤差により誤差補正が行われたＤ（ｎ，ｍ）と、閾値算出部４０１で算出された閾値であるＳＬ（ｎ，ｍ）とを比較し、２値化処理を行う。
【００４７】
図４の２値化処理部４１４の加算回路２（４１６）には、（ｎ，ｍ）の注目画素の入力データＤｉｎ（ｎ，ｍ）と、後述する誤差分配部４１８から出力される、注目画素の１画素前の２値化処理により算出された誤差データＥｒ（ｎ−１，ｍ）とが入力される。
【００４８】
誤差データ（Ｅｄ）格納用メモリ４１５は、注目画素以前の画素の２値化誤差のうち、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データであるＥｄ（ｎ，ｍ−１）を格納している。
【００４９】
誤差データＥｒ及びＥｄに関しては、後述する。
【００５０】
図４に示されているように、２値化処理部４１４には、以下の３つのデータが入力される。すなわち、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）とが２値化処理部４１４に入力される。
【００５１】
２値化処理部４１４の加算回路２（４１６）は、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）の３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【００５２】
次に、２値化処理部４１４の比較回路１（４１７）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、閾値算出部４０１によって算出された、注目画素に対する閾値ＳＬ（ｎ，ｍ）との比較を行う。そして、２値化処理部４１４の比較回路１（４１７）は、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝１）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化結果の出力を行う。
【００５３】
比較回路１（４１７）は、以下のようにして、Ｂｉｎ（ｎ，ｍ）＝１かＢｉｎ（ｎ，ｍ）＝２かの判断を行う。すなわち、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、比較回路１（４１７）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝１と判断する。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、比較回路１（４１７）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０と判断する。
【００５４】
比較回路１（４１７）により出力された注目画素の２値化結果であるＢｉｎ（ｎ，ｍ）は、２値化結果格納用メモリ４０２と、閾値算出部４０１の乗算回路４（４１０）にそれぞれ入力される。
【００５５】
２値化結果格納用メモリ４０２に格納されたＢｉｎ（ｎ，ｍ）のデータは、２値化処理が終了したラインの次のラインの２値化処理時の閾値算出に用いられる。
【００５６】
閾値算出部４０１の乗算回路４（４１０）に入力されたＢｉｎ（ｎ，ｍ）のデータは、２値化処理が終了した画素の次の画素の２値化処理時の閾値算出に用いられる。
【００５７】
＜誤差分配部４１８＞
誤差分配部４１８は、閾値算出部４０１によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差を２値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【００５８】
まず、誤差分配部４１８の減算回路１（４１９）は、閾値算出部４０１によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【００５９】
誤差分配部４１８が実行する処理では、図１のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【００６０】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右への誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素への誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）の算出は、除算回路２（４２０）によって行われる。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）の算出は、除算回路３（４２１）によって行われる。
【００６１】
ここで、誤差算出用係数１（４２２）には、２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数１（４２２）から読み出されて、除算回路２（４２０）に、入力される。
【００６２】
また、誤差算出用係数２（４２３）には、２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数２（４２３）から読み出されて、除算回路３（４２１）に、入力される。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素への誤差データであるＥｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ４１５に格納される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右への誤差データであるＥｒ（ｎ，ｍ）は、２値化処理部４１４の加算回路２（４１６）に入力される。
【００６３】
誤差データ（Ｅｄ）格納用メモリ４１５に格納された誤差データ（Ｅｄ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素のラインの次のラインの２値化処理時の２値化処理部４１４での誤差補正に用いられる。
【００６４】
２値化処理部４１４の加算回路２（４１６）に入力された誤差データ（Ｅｒ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素の次の画素の２値化処理時の２値化処理部４１４での誤差補正に用いられる。
【００６５】
次に、図５を用いて、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【００６６】
クロックのエッジ２の立ち上がりで注目画素の２値化を行う際には、図５に示されている処理が行われる。
【００６７】
クロックのエッジ１の立ち上がりで１画素前の２値化が完了し２値データの出力が行われたときと同じタイミングで、２値化結果格納用メモリ４０２から入力された、注目画素の閾値算出に用いる１ライン前の２値化結果が入力される。
【００６８】
そして、上記１ライン前の２値化結果から１ライン前のエリアに関する加重演算が行われる。
【００６９】
同時に、１画素前の２値化結果から１画素前の画素に関しての係数との乗算を行い、その結果と、１ライン前のエリアに関する加重演算の結果とから、注目画素に対する閾値の算出が行われる。
【００７０】
また、上記の処理と並行して、Ｄｉｎ（ｎ，ｍ）に対して、Ｅｒ（ｎ−１，ｍ）と、誤差データ（Ｅｄ）格納用メモリ４１５から入力された、Ｅｄ（ｎ，ｍ−１）により、注目画素に対する誤差補正が行われる。
【００７１】
そして、上記処理によって算出された注目画素に対する閾値ＳＬ（ｎ，ｍ）と、注目画素の誤差補正データＤ（ｎ，ｍ）との比較が行われ、クロックのエッジ２の立ち上がりで注目画素の２値化が実行され、２値化処理部４１４から出力される。
【００７２】
以降、次のエッジ３では、１画素後ろの画素を注目画素として、同じ処理が繰り返される。
【００７３】
以上のように、平均濃度保存法の処理結果を１クロックに付き、１画素ずつ出力させるためには、閾値算出処理、２値化処理、誤差分配処理の全ての処理を１クロック以内で完了させる必要がある。
【００７４】
つまり、図４の閾値算出部４０１、２値化処理部４１４、誤差分配部４１８の全ての処理を１クロック以内で完了させる必要がある。
【００７５】
そこで、例えば特許文献１では、１画素前の演算処理とそれ以外の演算処理を２つの演算器に分け、先行して行える演算に関しては先に実行しておくという処理方法が提案されている。
【００７６】
現在、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、従来以上に平均濃度保存法に必要な演算の負荷が大きくなってきている。
【００７７】
そのため、早い周波数での動作を行おうとした場合、１クロック以内では、平均濃度保存法に必要な各種演算処理が完了しないため、平均濃度保存法の高速動作ができない。
【００７８】
そこで、本発明は、平均濃度保存法が注目画素で実行する演算の付加を軽くし、平均濃度保存法に必要な処理を高速化することを目的とする。
【００７９】
次に、誤差拡散法に関する詳細な説明を行なう。
【００８０】
従来の誤差拡散法は、前画素の２値化誤差算出、注目画素データの誤差補正、および２値化処理、の３つの処理を、以下で説明するように繰り返す方法である。
【００８１】
誤差拡散法の注目画素データの誤差補正の処理において、注目画素から前の、すでに２値化の完了している画素の２値化誤差を用いて、注目画素に対する誤差補正値が算出される。
【００８２】
誤差拡散法の誤差分配の処理において、２値化のときに出た誤差（出力値と誤差補正後の画像データとの差）は、以降、処理されるべき画像データに誤差補正値として渡される。
【００８３】
誤差拡散法の２値化処理において、注目画素の画像データは、以前の画素の２値化誤差により誤差補正が行われた後、予め設定された閾値と比較され、２値化処理が行われる。
【００８４】
以下で、従来の誤差拡散法の各処理に関する説明を行う。
【００８５】
＜従来の誤差拡散法の誤差算出処理＞
従来の誤差拡散法では、注目画素の１画素前の２値化誤差データ値も、注目画素の誤差補正処理に使用する事となる。
【００８６】
よって、注目画素（ｎ，ｍ）に対する処理は、１画素前（ｎ−１，ｍ）の２値化誤差データ値の算出から始める事となる。
【００８７】
ここで、（ｎ，ｍ）は、画素の位置を表す。例えば、ｎは、記録装置における主走査方向の位置を示し、ｍは、記録装置における副走査方向の位置を示す。
【００８８】
以下のように、１画素前の誤差補正後の画像データであるＤｅｒ（ｎ−１，ｍ）と、１画素前の２値化結果出力値Ｂｉｎ（ｎ−１，ｍ）（本例の場合、０もしくは２５５とする）の差が、１画素前の２値化誤差Ｅｒ（ｎ−１，ｍ）となる。
【００８９】
２値化結果出力値が「０」の場合
Ｅｒ（ｎ−１，ｍ）＝Ｄｅｒ（ｎ−１，ｍ）−０
２値化結果出力値が「２５５」の場合
Ｅｒ（ｎ−１，ｍ）＝Ｄｅｒ（ｎ−１，ｍ）−２５５
前記２値化誤差Ｅｒ（ｎ−１，ｍ）は、注目画素の誤差補正に使用されるとともに、２値化誤差格納手段に格納され、後述するように、１ライン後の画素の２値化を行なう際の誤差補正に使用される事となる。
【００９０】
２値化誤差格納手段は、ラインメモリ等の記憶媒体からなり、本例においては、１ライン分の２値化誤差の格納を行う事となる。
【００９１】
＜従来の誤差拡散法の注目画素データの誤差補正処理＞
２値化処理の対象となる注目画素を（ｎ，ｍ）としたとき、ｍラインで、ｎ−１以前の画素に関しては、既に２値化処理が完了していて、２値の画像データ（「２５５」または「０」）及び、２値化誤差データが存在する。
【００９２】
同様に、ｍ−１以前のラインに関しても、既に２値化処理が完了していて、２値の画像データ及び、２値化誤差データが存在する。
【００９３】
注目画素データの誤差補正処理では、注目画素以前のすでに２値化処理の終わった画素の２値化誤差データに対する加重演算を行うことにより、注目画素値の補正処理が行われる。
【００９４】
ここで、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
【００９５】
以下で、図２１を用いて、誤差拡散法の注目画素データの誤差補正処理の説明を行う。
【００９６】
図２１において、注目画素データの誤差分配される画素の範囲は、誤差分配範囲で示されている、（ｎ＋１，ｍ）、（ｎ＋２，ｍ）、（ｎ，ｍ＋１）、（ｎ＋１，ｍ＋１）、（ｎ＋２，ｍ＋１）の５画素である。
【００９７】
図２２は、上記の５画素に対する加重係数を示している。図２２に示されているように、（ｎ＋１，ｍ）及び（ｎ，ｍ＋１）の画素に対する加重係数は、「４」である。そして、（ｎ＋２，ｍ）及び（ｎ＋１，ｍ＋１）の画素に対する加重係数は、「２」である。そして、（ｎ＋２，ｍ＋１）の画素に対する加重係数は、「１」である。
【００９８】
よって注目画素（ｎ，ｍ）の誤差補正を行なう場合の、加重誤差の集計を行なう範囲は、図２２における、加重誤差集計範囲に示される、（ｎ−２，ｍ−１）、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の５画素となる。
【００９９】
また、その加重係数は、（ｎ，ｍ−１）及び（ｎ−１，ｍ）の画素に対する加重係数は「４」、（ｎ−１，ｍ−１）及び（ｎ−２，ｍ）の画素に対する加重係数は「２」、（ｎ−２，ｍ−１）の画素に対する加重係数は「１」となる。
【０１００】
以降の説明に関しては、前記注目画素に対して、前の画素の加重係数を元に説明を行う事とする。
【０１０１】
注目画素（ｎ，ｍ）の入力データＤｉｎ（ｎ，ｍ）に対する誤差補正後のデータＤｅｒ（ｎ，ｍ）は、下記のような加重演算処理を行うことにより算出される。
【０１０２】
加重演算処理では、まず最初に、各画素の２値化誤差データ（Ｅｒ）と加重係数との乗算が、以下のように行われる。
Ｅ（ｎ−２，ｍ−１）＝（ｎ−２，ｍ−１）の加重係数×（ｎ−２，ｍ−１）の２値化誤差データ値
Ｅ（ｎ−１，ｍ−１）＝（ｎ−１，ｍ−１）の加重係数×（ｎ−１，ｍ−１）の２値化誤差データ値
Ｅ（ｎ，ｍ−１）＝（ｎ，ｍ−１）の加重係数×（ｎ，ｍ−１）の２値化誤差データ値
Ｅ（ｎ−２，ｍ）＝（ｎ−２，ｍ）の加重係数×（ｎ−２，ｍ）の２値化誤差データ値
Ｅ（ｎ−１，ｍ）＝（ｎ−１，ｍ）の加重係数×（ｎ−１，ｍ）の２値化誤差データ値
【０１０３】
次に、加重演算処理では、各画素の乗算結果の和の算出が、以下のように行われる。
Ｅｓｕｍ（ｎ，ｍ）＝Ｅ（ｎ−２，ｍ−１）＋Ｅ（ｎ−１，ｍ−１）＋Ｅ（ｎ，ｍ−１）＋Ｅ（ｎ−２，ｍ）＋Ｅ（ｎ−１，ｍ）
Ｅｒｒｏｒ（ｎ，ｍ）＝Ｅｓｕｍ（ｎ，ｍ）／｛（ｎ−２，ｍ−１）の加重係数＋（ｎ−１，ｍ−１）の加重係数＋（ｎ，ｍ−１）の加重係数＋（ｎ−２，ｍ）の加重係数＋（ｎ−１，ｍ）の加重係数｝
【０１０４】
注目画素データの誤差補正処理は、以下のように、入力された注目画素のデータに、前記誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）を加算することとなる。
Ｄｅｒ（ｎ，ｍ）＝Ｄｉｎ（ｎ，ｍ）＋Ｅｒｒｏｒ（ｎ，ｍ）
【０１０５】
＜従来の誤差拡散法の２値化処理＞
注目画素の画像データは、以前の画素の２値化誤差により誤差補正が行われた後、閾値と比較され、２値化処理が行われる。
【０１０６】
先に算出された、注目画素に対して誤差補正を行なった値であるＤｅｒ（ｎ，ｍ）と、予め設定されている２値化閾値（ＳＬ）の比較を行う。そして、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、２値化結果の出力であるＢｉｎ（ｎ，ｍ）が決定される。
【０１０７】
例えば、Ｄｅｒ（ｎ，ｍ）≧ＳＬの場合、色の出力を行うと判断され、Ｂｉｎ（ｎ，ｍ）＝２５５と決定される。一方、Ｄｅｒ（ｎ，ｍ）＜ＳＬの場合、色の出力が行われず、Ｂｉｎ（ｎ，ｍ）＝０と決定される。
【０１０８】
＜従来の誤差拡散法を実行するためのハードウェア＞
次に、従来の誤差拡散法を実行するためのハードウェアに関する説明を、図２３を用いて、以下で行う。図２３に示されているように、従来の誤差拡散法を実行するためのハードウェアは、誤差算出部２３０１、誤差補正２３０２、２値化処理部２３０３とを有する。
【０１０９】
＜誤差算出部２３０１＞
誤差算出部２３０１は、注目画素の１画素前の２値化処理結果の誤差データ値の算出を行う。
【０１１０】
誤差算出部２３０１には、１画素前の誤差補正後の画像データであるＤｅｒ（ｎ−１，ｍ）と、１画素前の２値化結果出力値Ｂｉｎ（ｎ−１，ｍ）（本例の場合、０もしくは２５５とする）が入力され、１画素前の２値化誤差Ｅｒ（ｎ−１，ｍ）が出力される。
【０１１１】
誤差算出部２３０１内の減算回路２３１では、１画素前の２値化処理結果が、「０」の場合の２値化誤差データ値の算出を行なうため、下記の演算が実施される。
Ｅｒ＿０（ｎ−１，ｍ）＝Ｄｅｒ（ｎ−１，ｍ）−０
誤差算出部２３０１内の減算回路２３２では、１画素前の２値化処理結果が、「２５５」の場合の２値化誤差データ値の算出を行なうため、下記の演算が実施される。
Ｅｒ＿２５５（ｎ−１，ｍ）＝Ｄｅｒ（ｎ−１，ｍ）−２５５
誤差算出部２３０１内のセレクタ２３１では、前記２つの２値化誤差データ値Ｅｒ＿０（ｎ−１，ｍ）、Ｅｒ＿２５５（ｎ−１，ｍ）の入力を行う。そして、１画素前の２値化処理結果Ｂｉｎ（ｎ−１，ｍ）を元にして、以下を行う。即ち、Ｂｉｎ（ｎ−１，ｍ）＝０の時は、Ｅｒ（ｎ−１，ｍ）＝Ｅｒ＿０（ｎ−１，ｍ）、Ｂｉｎ（ｎ−１，ｍ）＝２５５の時は、Ｅｒ（ｎ−１，ｍ）＝Ｅｒ＿２５５（ｎ−１，ｍ）として出力を行う。
【０１１２】
前記２値化誤差Ｅｒ（ｎ−１，ｍ）は、注目画素の誤差補正に使用されるとともに、２値化誤差格納用メモリ２３０７に格納され、後述するように、１ライン後の画素の２値化を行なう際の誤差補正処理に使用される事となる。
【０１１３】
２値化誤差格納用メモリは、ラインメモリ等の記憶媒体からなり、本例においては、１ライン分の２値化誤差の格納を行う事となる。
【０１１４】
＜誤差補正部２３０２＞
以下で、図２３の誤差補正部２３０２について説明する。
【０１１５】
図２２の注目画素（ｎ，ｍ）の周囲のｍ−１のラインに関しては、既に２値化処理が完了していて、２値化誤差データが存在する。
【０１１６】
ｍ−１のラインの２値化誤差データは、２値化誤差格納用メモリ２３０７に格納されている。
【０１１７】
誤差補正部２３０２は、２値化誤差格納用メモリ２３０７に格納されている２値化誤差データ及び、（ｎ−２，ｍ）、（ｎ−１，ｍ）の２値化誤差データを使用して、２値化誤差データに対する加重演算を行い、注目画素の誤差補正値の算出を行う。
【０１１８】
図２３の誤差補正用加重係数１（２３０８）は、（ｎ−２，ｍ−１）の画素に対する加重係数を記憶している。
図２３の誤差補正用加重係数２（２３０９）は、（ｎ−１，ｍ−１）の画素に対する加重係数を記憶している。
図２３の誤差補正用加重係数３（２３１０）は、（ｎ，ｍ−１）の画素に対する加重係数を記憶している。
図２３の誤差補正用加重係数４（２３１５）は、（ｎ−２，ｍ）の画素に対する加重係数を記憶している。
図２３の誤差補正用加重係数５（２３１７）は、（ｎ−１，ｍ）の画素に対する加重係数を記憶している。
図２３の誤差補正用加重係数の和（２３２０）は、（ｎ−２，ｍ−１）、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の画素に対する加重係数の和を記憶している。
【０１１９】
まず、図２３の誤差補正部２３０２では、２値化結果誤差格納用メモリ２３０７から、（ｎ−２，ｍ−１）、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）の３画素の２値化誤差データの出力を行う。
【０１２０】
そして、乗算回路２３１（２３１１）は、（ｎ−２，ｍ−１）の画素の２値化誤差データに対して、（ｎ−２，ｍ−１）の加重係数との乗算を行う。また、乗算回路２３２（２３１２）は、（ｎ−１，ｍ−１）の画素の２値化誤差データに対して、（ｎ−１，ｍ−１）の加重係数との乗算を行う。また、乗算回路２３３（２３１３）は、（ｎ，ｍ−１）の画素の２値化誤差データに対して、（ｎ，ｍ−１）の加重係数との乗算を行う。また、乗算回路２３４（２３１６）は、（ｎ−２，ｍ）の画素の２値化誤差データに対して、（ｎ−２，ｍ）の加重係数との乗算を行う。その為、乗算回路２３４への誤差データ入力は、１画素前の誤差データに対して、フリップフロップ（以降ＦＦとする）ＦＦ２３１等で１クロック分遅延を行なったデータを入力値とする事となる。また、乗算回路２３５（２３１８）は、（ｎ−１，ｍ）の画素の２値化誤差データに対して、（ｎ−１，ｍ）の加重係数との乗算を行う。その為、乗算回路２３５への誤差データ入力は、１画素前の誤差データを入力値とする事となる。
【０１２１】
そして、誤差補正部２３０２は、乗算回路２３１（２３１１）、乗算回路２３２（２３１２）、乗算回路２３３（２３１３）、乗算回路２３４（２３１６）、乗算回路２３５（２３１８）からの出力値を、加算回路２３１（２３１９）に入力する。そして、Ｅｓｕｍ（ｎ，ｍ）を算出する。そして、誤差補正部２３０２は、除算回路２３１（２３２１）により、加算回路２３１（２３１９）から出力されるＥｓｕｍ（ｎ，ｍ）を、加重係数の和（２３２０）に記憶されている加重係数の和の値で割る。これにより、注目画素に対する誤差補正値であるＥｒｒｏｒ（ｎ，ｍ）の算出を行う。その後、加算回路２３２（２３２２）によって、入力された注目画素データ値Ｄｉｎ（ｎ，ｍ）と、前記誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）の加算を行なう事により、誤差補正後の注目画素データ値Ｄｅｒ（ｎ，ｍ）の出力を行う事となる。
【０１２２】
＜２値化処理部２３０３＞
２値化処理部２３０３は、比較回路２３１（２３２３）によって、誤差補正後の注目画素の画像データＤｅｒ（ｎ，ｍ）に対して、予め設定された閾値であるＳＬとを比較する。そして、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝２５５）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化処理を行う。Ｄｅｒ（ｎ，ｍ）≧ＳＬの場合、比較回路２３１（２３２３）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝２５５の出力を行なう。一方、Ｄｅｒ（ｎ，ｍ）＜ＳＬの場合、比較回路２３１（２３２３）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０の出力を行なう。
【０１２３】
注目画素の２値化結果Ｂｉｎ（ｎ，ｍ）は、データ出力用のＦＦであるＦＦ２３２（２３２４）を介して、プリンタ等の印字手段に送られる事となる。
【０１２４】
また、誤差補正後の注目画素の画像データＤｅｒ（ｎ，ｍ）は、次の注目画素（ｎ＋１，ｍ）の２値化処理の際に、前画素の誤差補正値算出用のデータとして使用される事となる。
【０１２５】
次に、図２４を用いて、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０１２６】
クロックのエッジ３の立ち上がりで注目画素の２値化を行う際には、図２４に示されている処理が行われる。
【０１２７】
クロックのエッジ１の立ち上がりで２画素前の２値化が完了し２値データの出力が行われ、エッジ２の立ち上がりまでに２画素前の画素の２値化誤差値の算出が行なわれる。
【０１２８】
前記２画素前の画素の２値化誤差値は、図２３におけるＦＦ２３１（２３１４）によって、エッジ２のタイミングで１サイクル分遅延が行なわれる事となる。
【０１２９】
クロックのエッジ２の立ち上がりで１画素前の２値化が完了し２値データの出力が行われる。
【０１３０】
その時と同じタイミングで、２値化誤差格納用メモリ２３０７から入力された、注目画素の誤差補正処理に用いる１ライン前の２値化誤差値が入力される。
【０１３１】
そして、上記１ライン前の２値化誤差値から１ライン前のエリアに関する係数との乗算が行われる。
【０１３２】
同時に、２画素前の２値化誤差値から２画素前の画素に関しての係数との乗算が行なわれる。
【０１３３】
また同時に、１画素前の２値化結果と、誤差補正後データから、１画素前の２値化誤差値の算出が行なわれ、その値に対しても１画素前の画素に関しての係数との乗算が行なわれる。
【０１３４】
前記各誤差に対する乗算結果に対して、先に説明を行なったように、全ての乗算結果の加算、その加算値に対しての係数の和による除算を行う事により、注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）が算出される事となる。
【０１３５】
前記注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）と、入力された注目画素のデータ値Ｄｉｎ（ｎ，ｍ）の和から、注目画素の誤差補正値Ｄｅｒ（ｎ，ｍ）の算出を行なう。そして、予め設定されている閾値ＳＬとの比較が行う事により、クロックのエッジ３の立ち上がりで注目画素の２値化が実行され、２値化処理部２３０３から出力される。
【０１３６】
以降、１画素後ろの画素を注目画素として、同様な処理が繰り返される事となる。
【０１３７】
以上のように、誤差拡散法の処理結果を１クロックに付き、１画素ずつ出力させるためには、誤差算出処理、誤差補正処理、２値化処理の全ての処理を１クロック以内で完了させる必要がある。
【０１３８】
つまり、図２３の誤差算出部２３０１、誤差補正部２３０２、２値化処理部２３０３の全ての処理を１クロック以内で完了させる必要がある。
【０１３９】
現在、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、従来以上に誤差拡散法に必要な演算の負荷が大きくなってきている。
【０１４０】
そのため、早い周波数での動作を行おうとした場合、１クロック以内では、誤差拡散法に必要な各種演算処理が完了しないため、誤差拡散法の高速動作ができない。
【０１４１】
そこで、本発明は、誤差拡散法が注目画素で実行する演算の付加を軽くし、誤差拡散法に必要な処理を高速化することを目的とする。
【０１４２】
＜第１の実施形態＞
第１の実施形態における平均濃度保存法を実現するハードウェアは、図６に示されている。
【０１４３】
＜閾値算出部１１（６０１）＞
以下では、ｍ−１のラインに関しては、既に２値化処理が完了していて、２値の画像データが存在し、２値の画像データは、２値化結果格納用メモリ６０２に格納されているものとして、第１の実施形態について説明する。
【０１４４】
閾値算出部１１（６０１）は、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する加重演算を行い、特に注目画素より前のラインに関する加重演算を行う。
【０１４５】
なお、本発明において、注目画素とは、複数の画素のうちの特定画素を指す。
【０１４６】
また、本発明において、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
【０１４７】
以下で、図６を元に、第１の実施形態について詳細な説明を行う。
閾値算出用加重係数１（６０３）には、メモリ等を用いて、（ｎ−１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数２（６０４）には、メモリ等を用いて、（ｎ，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数３（６０５）には、メモリ等を用いて、（ｎ＋１，ｍ−１）の加重係数が記憶されている。
【０１４８】
ここで、加重係数とは、後述する加重演算で用いられる係数である。
閾値算出用加重係数の和（６０６）には、メモリ等を用いて、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の加重係数の和が記憶されている。
【０１４９】
次に、乗算回路１１（６０７）は、２値化結果格納用メモリ（６０２）から、（ｎ−１，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ−１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行い出力する。ここで、画像データのＭａｘ値は、例えば、「２５５」である。
【０１５０】
また、乗算回路１２（６０８）は、２値化結果格納用メモリ（６０２）から、（ｎ，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ，ｍ−１）の加重係数と、画像データのＭａｘ値（例えば、「２５５」）との乗算を行い出力する。
【０１５１】
また、乗算回路１３（６０９）は、２値化結果格納用メモリ（６０２）から、（ｎ＋１，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ＋１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行い出力する。ここで、画像データのＭａｘ値は、例えば、「２５５」である。
【０１５２】
次に、加算回路１１（６１３）は、ＦＦ１１（６１０）を経由して、乗算回路１１（６０７）の出力値を受信する。
また、加算回路１１（６１３）は、ＦＦ１２（６１１）を経由して、乗算回路１２（６０８）の出力値を受信する。
また、加算回路１１（６１３）は、ＦＦ１３（６１２）を経由して、乗算回路１３（６０９）の出力値を受信する。
【０１５３】
そして、加算回路１１（６１３）は、乗算回路１１（６０７）の出力値と、乗算回路１２（６０８）の出力値と、乗算回路１３（６０９）の出力値とを加算し、注目画素より前のラインの各画素の乗算結果の和（Ｓｓｕｍ＿Ｌ）を算出して出力する。
【０１５４】
次に、除算回路１１（６１５）は、ＦＦ１４（６１４）を経由して、加算回路１１（６１３）の出力値（Ｓｓｕｍ＿Ｌ）を受信し、閾値算出用加重係数の和（６０６）に記憶されている値を受信する。そして、除算回路１１（６１５）は、Ｓｓｕｍ＿Ｌを、閾値算出用加重係数の和（６０６）に記憶されている値で割り、注目画素より１ライン前の注目画素に対する閾値（ＳＬ＿Ｌ（ｎ，ｍ））の算出を行い出力する。以上の演算が、閾値算出部１１（６０１）が行う加重演算である。
【０１５５】
＜閾値算出部１２（６１７）、閾値算出部１３（６２７）＞
閾値算出部１２（６１７）は、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する係数との演算を行い、特に注目画素の１画素前の画素の２値化結果に対する演算を行う。
【０１５６】
閾値算出部１２（６１７）は、注目画素の１画素前の２値化処理が終了する前に、注目画素の１画素前の２値化処理結果が、「１」の場合と、「０」の場合の２通りの場合を想定して、事前に、予め注目画素の１画素前の係数との乗算および除算を行う。
【０１５７】
本実施形態では、注目画素の１画素前の２値化処理結果が、「１」の場合の注目画素の１画素前の係数との乗算および除算結果を、ＳＬ＿１（ｎ，ｍ）とする。また、本実施形態では、注目画素の１画素前の２値化処理結果が、「０」の場合の注目画素の１画素前の係数との乗算および除算結果を、ＳＬ＿０（ｎ，ｍ）とする。
【０１５８】
その後、閾値算出部１３（６２７）は、注目画素の１画素前の２値化処理結果が出た時点で、その出力を元に、ＳＬ＿１（ｎ，ｍ）、又はＳＬ＿０（ｎ，ｍ）のどちらかを選択する。そして、閾値算出部１３（６２７）は、予め算出していた注目画素より前のラインの注目画素に対する閾値（ＳＬ＿Ｌ（ｎ，ｍ））に加算を行い、注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行う。
【０１５９】
以下、図６を用いて、閾値算出部１２（６１７）及び閾値算出部１３（６２７）について、詳細な説明を行う。
閾値算出用加重係数４（６１９）には、メモリ等を用いて、（ｎ−１，ｍ）の加重係数が記憶されている。
閾値算出用加重係数の和（６０６）には、メモリ等を用いて、（ｎ−１，ｍ）の加重係数の和が記憶されている。
【０１６０】
乗算回路１４（６２１）は、画像データのＭａｘ値６１８と、閾値算出用加重係数４（６１９）に記憶されている（ｎ−１，ｍ）の加重係数との乗算を実行する。
【０１６１】
その後、除算回路１２（６２３）は、乗算回路１４（６２１）から出力される注目画素の１画素前の画素の係数との乗算結果を、閾値算出用加重係数の和（６０６）に記憶されている値で割る。そして、除算回路１２（６２３）は、この演算により、注目画素の１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）の算出を行う。
【０１６２】
乗算回路１５（６２２）は、画像データの最小値（６２０）（本実施形態では「０」）と、閾値算出用加重係数４（６１９）に記憶されている（ｎ−１，ｍ）の加重係数との乗算を実行する。
【０１６３】
その後、除算回路１３（６２４）は、乗算回路１５（６２２）から出力される注目画素の１画素前の画素の乗算結果を、閾値算出用加重係数の和（６０６）に記憶されている値で割る。そして、除算回路１３（６２４）は、この演算により、注目画素の１画素前の注目画素に対する閾値（ＳＬ＿０（ｎ，ｍ））の算出を行う。
【０１６４】
閾値算出部１３（６２７）は、セレクタ１１（６２８）と、加算回路１２（６２９）とを有する。
【０１６５】
セレクタ１１（６２８）は、注目画素の１画素前の２値化結果を元に、閾値算出部１２（６１７）から出力されるＳＬ＿１（ｎ，ｍ）と、ＳＬ＿０（ｎ，ｍ）のどちらかの選択を行い、その値を加算回路１２（６２９）に入力する。
【０１６６】
加算回路１２（６２９）は、予め算出されているＳＬ＿Ｌ（ｎ，ｍ）と、セレクタ１１から出力された、注目画素の１画素前の注目画素の閾値（ＳＬ＿１（ｎ，ｍ）の値又はＳＬ＿０（ｎ，ｍ）の値）の加算を行う。そして、加算回路１２（６２９）は、この演算により、注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行い、誤差分配部１（６３４）に出力する。
【０１６７】
＜２値化処理部１（６３０）＞
２値化処理部１（６３０）は、注目画素の誤差補正後のデータ（Ｄ（ｎ，ｍ））と、閾値算出部１３（６２７）で算出された閾値ＳＬ（ｎ，ｍ）とを比較し、２値化処理を行う。
【０１６８】
Ｅｒ（ｎ−１，ｍ）は、後述する誤差分配部１（６３４）から出力された、注目画素の１画素前の２値化結果から算出された誤差データである。
【０１６９】
誤差データ（Ｅｄ）格納用メモリ（６３１）は、注目画素以前の画素の２値化誤差のうち、Ｅｄ（ｎ，ｍ−１）に関する誤差データを格納している。
【０１７０】
誤差データＥｒ及びＥｄに関しては、後述する。
【０１７１】
２値化処理部１（６３０）には、図６に示されているように、以下の３つのデータが入力される。
【０１７２】
すなわち、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）とが２値化処理部１（６３０）に入力される。ここで、Ｄｉｎ（ｎ，ｍ）は、注目画素の入力データである。また、Ｅｒ（ｎ−１，ｍ）は、注目画素のラインの注目画素の１画素前の２値化処理誤差データである。また、Ｅｄ（ｎ，ｍ−１）は、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データである。
【０１７３】
加算回路１３（６３２）は、上記３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【０１７４】
次に、２値化処理部１（６３０）の比較回路１１（６３３）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、閾値算出部１３（６２７）によって算出された、注目画素に対する閾値ＳＬ（ｎ，ｍ）との比較を行う。そして、比較回路１１（６３３）は、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝１）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化結果の出力を行う。
【０１７５】
比較回路１１（６３３）は、以下のようにして、Ｂｉｎ（ｎ，ｍ）＝１かＢｉｎ（ｎ，ｍ）＝２かの判断を行う。すなわち、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、比較回路１１（６３３）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝１と判断する。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、比較回路１１（６３３）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０と判断する。
【０１７６】
比較回路１１（６３３）により出力された注目画素の２値化結果であるＢｉｎ（ｎ，ｍ）は、２値化結果格納用メモリ６０２と、閾値算出部１３（６２７）のセレクタ１１（６２８）にそれぞれ入力される。
【０１７７】
２値化結果格納用メモリ（６０２）に格納されたデータは、２値化処理が終了したラインの次のラインの２値化処理時の閾値算出に用いられる。
【０１７８】
閾値算出部１３（６２７）のセレクタ１１（６２８）に入力されたデータは、２値化処理が終了した画素の次の画素の２値化処理時の閾値算出に用いられる。
【０１７９】
＜誤差分配部１（６３４）＞
誤差分配部１（６３４）は、閾値算出部１３（６２７）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差を２値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【０１８０】
まず、誤差分配部１（６３４）の減算回路１１（６３５）は、閾値算出部１３（６２７）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【０１８１】
誤差分配部１（６３４）が実行する処理では、図１のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０１８２】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）の算出は、除算回路１４（６３６）によって行われる。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）の算出は、除算回路１５（６３７）によって行われる。
【０１８３】
ここで、誤差算出用係数１（６３８）には、メモリ等を用いて、２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数（本実施形態では「１／２」）が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数１（６３８）から読み出されて、除算回路１４（６３６）に入力される。
【０１８４】
また、誤差算出用係数２（６３９）には、メモリ等を用いて、２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数（本実施形態では「１／２」）が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数２（６３９）から読み出されて、除算回路１５（６３７）に入力される。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ６３１に入力される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）は、２値化処理部１（６３０）の加算回路１３（６３２）に入力される。
【０１８５】
誤差データ（Ｅｄ）格納用メモリ６３１に格納された誤差データ（Ｅｄ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素のラインの次のラインの２値化処理時の２値化処理部１（６３０）での誤差補正に用いられる。
【０１８６】
２値化処理部１（６３０）の加算回路１３（６３２）に入力された誤差データ（Ｅｒ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素の次の画素の２値化処理時の２値化処理部１（６３０）での誤差補正に用いられる。
【０１８７】
次に、図７を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０１８８】
クロックのエッジ５の立ち上がりで注目画素の２値化を行う際には、図７に示されている処理が行われる。
【０１８９】
図６の閾値算出部１１（６０１）における、注目画素より１ライン前の注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）の算出は、エッジ１から開始され、エッジ４にて処理が完了する。
【０１９０】
具体的には、クロックのエッジ１によって、２値化結果格納用メモリ（６０２）から、注目画素の前のラインの２値化結果データの入力が行われる。
【０１９１】
その後、図６の乗算回路１１（６０７）、乗算回路１２（６０８）、乗算回路１３（６０９）、によって各画素の係数との乗算が実行される。そして、その乗算結果は、クロックのエッジ２のタイミングで、それぞれフリップフロップ（以降「ＦＦ」とする）ＦＦ１１（６１０）、ＦＦ１２（６１１）、ＦＦ１３（６１２）によって叩かれる。
【０１９２】
ＦＦ１１（６１０）、ＦＦ１２（６１１）、ＦＦ１３（６１２）によって叩かれたデータは、図６の加算回路１１（６１５）に入力され、Ｓｓｕｍ＿Ｌが算出される。
【０１９３】
Ｓｓｕｍ＿Ｌのデータは、クロックのエッジ３のタイミングでＦＦ１４（６１４）によって、叩かれる。
【０１９４】
ＦＦ１４（６１４）によって叩かれたデータは、図６の除算回路１１（６１５）に入力され、注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）が算出される。
【０１９５】
ＳＬ＿Ｌ（ｎ，ｍ）のデータは、クロックのエッジ４のタイミングでＦＦ１５（６１６）によって、叩かれて閾値算出部１１（６０１）から出力される。
【０１９６】
図６の閾値算出部１２（６１７）における、注目画素の１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）と、注目画素１画素前の注目画素に対する閾値ＳＬ＿０（ｎ，ｍ）は、エッジ４にて処理が完了する。
【０１９７】
具体的には、クロックのエッジ３のタイミングで、閾値算出部１２（６１７）で必要となる各種データの入力が行われる。そして、乗算回路１４（６２１）及び除算回路１２（６２３）、乗算回路１５（６２２）及び除算回路１３（６２４）、の演算処理が実行され、ＳＬ＿１（ｎ，ｍ）及び、ＳＬ＿０（ｎ，ｍ）の値が算出される。
【０１９８】
ＳＬ＿１（ｎ，ｍ）及び、ＳＬ＿０（ｎ，ｍ）の値は、クロックのエッジ４のタイミングで、それぞれＦＦ１６（６２５）、ＦＦ１７（６２６）によって叩かれて、閾値算出部１２（６１７）から出力される。
【０１９９】
クロックのエッジ４のタイミングで出力された、注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）及び、注目画素１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）と、ＳＬ＿０（ｎ，ｍ）は、閾値算出部１３（６２７）に入力される。
【０２００】
以降、説明を行う処理に関しては、クロックのエッジ４からエッジ５の１サイクルの間で実行される。
【０２０１】
図６の閾値算出部１３（６２７）に入力された、注目画素１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）と、ＳＬ＿０（ｎ，ｍ）は、エッジ４のタイミングで出力される１画素前の２値化の処理結果を元に、どちらかの値が選択される。
【０２０２】
上記の選択されたデータと、閾値算出部１３（６２７）に入力された、注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）の加算が、図６の加算回路１２（６２９）により行われる。そして、注目画素の閾値ＳＬ（ｎ，ｍ）が閾値演算部１３（６２７）から出力される。
【０２０３】
また、それと同時に、図６の２値化処理部１（６３０）は、Ｄｉｎ（ｎ，ｍ）に対して、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）により、注目画素に対する誤差補正を行う。
【０２０４】
そして、上記処理によって算出された注目画素に対する閾値ＳＬ（ｎ，ｍ）と、注目画素の誤差補正データＤ（ｎ，ｍ）との比較が行われ、クロックのエッジ５の立ち上がりで注目画素の２値化が実行され、２値化処理部１（６３０）から出力される。
【０２０５】
以上のように、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の１画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
【０２０６】
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
【０２０７】
また、注目画素に対して１画素前の画素の係数との乗算、除算に関しては、２画素前の画素を処理するタイミングで、１画素前の処理結果が「１」の場合と「０」の場合の両方を想定して、事前に、演算される。そして、１画素前の２値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
【０２０８】
つまり、１画素前の画素の係数との乗算、除算に関しては、予め１画素前の２値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
【０２０９】
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することが可能となる。
【０２１０】
＜第２の実施形態＞
第２の実施形態では、平均濃度保存法をハードウェアで構成するにあたり、注目画素のラインの２画素以上前の２値化結果を閾値算出に用いる。
【０２１１】
第２の実施形態の説明を行うにあたり、注目画素のラインの２画素以上前の２値化結果を閾値算出に用いる従来技術の説明もあわせて行う。
【０２１２】
まず、注目画素のラインの２画素以上前の２値化結果を閾値算出に用いる従来技術について詳細な説明を行う。
【０２１３】
従来技術については、平均濃度保存法に関して、閾値算出、２値化処理、誤差分配のような３つの処理を元にして、詳細な説明を行う。
【０２１４】
＜従来技術における閾値算出＞
２値化処理を行う注目画素を（ｎ，ｍ）とした時、ｍラインで、ｎ−１以前の画素に関しては、既に２値化処理が完了していて、２値の画像データ（「１」または「０」）が存在する。
【０２１５】
同様に、ｍ−１以前のラインに関しても、既に２値化処理が完了していて、２値の画像データが存在する。
【０２１６】
閾値算出処理では、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する加重演算を行うことで、注目画素の閾値の算出を行う。
【０２１７】
以下で、図８を用いて、従来技術における閾値算出について詳細な説明を行う。
【０２１８】
ここで、図８に示されているように、閾値算出に用いる画素の範囲を、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の５画素の範囲とする。
【０２１９】
図９に示されているように、上記の各画素に対する加重係数が、（ｎ−１，ｍ−１）には「１」、（ｎ，ｍ−１）には「２」、（ｎ＋１，ｍ−１）には「１」、（ｎ−２，ｍ）には「１」、（ｎ−１，ｍ）には「２」と、設定される。
【０２２０】
次に、注目画素以前の画素の２値化処理結果に対して、色を出力する部分の値を「画像データのＭａｘ値」（本実施形態では「２５５」とする）、色を出力しない部分の値を「０」として、加重演算処理が行われる。
【０２２１】
そして、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理を行うことにより求められる。
【０２２２】
まず、各画素の係数との乗算が以下のように行われる。
Ｓ（ｎ−１，ｍ−１）＝（ｎ−１，ｍ−１）の加重係数×（ｎ−１，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ，ｍ−１）＝（ｎ，ｍ−１）の加重係数×（ｎ，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ＋１，ｍ−１）＝（ｎ＋１，ｍ−１）の加重係数×（ｎ＋１，ｍ−１）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ−２，ｍ）＝（ｎ−２，ｍ）の加重係数×（ｎ−２，ｍ）の２値化処理結果値×画像データのＭａｘ値
Ｓ（ｎ−１，ｍ）＝（ｎ−１，ｍ）の加重係数×（ｎ−１，ｍ）の２値化処理結果値×画像データのＭａｘ値
【０２２３】
次に、各画素の乗算結果の和の算出が行われる。
Ｓｓｕｍ（ｎ，ｍ）＝Ｓ（ｎ−１，ｍ−１）＋Ｓ（ｎ，ｍ−１）＋Ｓ（ｎ＋１，ｍ−１）＋Ｓ（ｎ−２，ｍ）＋Ｓ（ｎ−１，ｍ）
【０２２４】
次に、上記の乗算結果の和に対する補正が行われる。
ＳＬ（ｎ，ｍ）＝Ｓｓｕｍ（ｎ，ｍ）／｛（ｎ−１，ｍ−１）の加重係数＋（ｎ，ｍ−１）の加重係数＋（ｎ＋１，ｍ−１）の加重係数＋（ｎ−２，ｍ）の加重係数＋（ｎ−１，ｍ）の加重係数｝
したがって、例えば、注目画素以前の画素の２値化処理結果が、図１０のような場合、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理が行われる。
ＳＬ（ｎ，ｍ）＝｛（１ｘ０ｘ２５５）＋（２ｘ０ｘ２５５）＋（１ｘ１ｘ２５５）＋（１ｘ１ｘ２５５）＋（２ｘ１ｘ２５５）｝／（１＋２＋１＋１＋２）＝１４６
【０２２５】
＜従来技術における２値化処理＞
注目画素の画像データは、以前の画素の２値化誤差により誤差補正が実行された後、閾値と比較され、２値化処理が行われる。
【０２２６】
本処理では、実施形態１と同様に、図８に示されているように、注目画素のラインの注目画素の次の画素と、注目画素の１ライン下のラインの注目画素と同じ位置に誤差が分配される。このため、注目画素に対して、注目画素のラインの注目画素の１画素前の画素からの誤差データと、注目画素の１ライン前の同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
【０２２７】
ここで、（ｎ，ｍ）の注目画素の入力データをＤｉｎ（ｎ，ｍ）とする。また、注目画素のラインの注目画素の１画素前の２値化処理誤差データをＥｒ（ｎ−１，ｍ）とする。また、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データをＥｄ（ｎ，ｍ−１）とする。このとき、誤差補正後の注目画素の画像データであるＤ（ｎ，ｍ）の算出は、下記のような演算により行われる。
Ｄ（ｎ，ｍ）＝Ｄｉｎ（ｎ，ｍ）＋Ｅｒ（ｎ−１，ｍ）＋Ｅｄ（ｎ，ｍ−１）
例えば、Ｄｉｎ（ｎ，ｍ）＝１２０、Ｅｒ（ｎ−１，ｍ）＝１４、Ｅｄ（ｎ，ｍ−１）＝−８の場合、誤差補正後のデータであるＤ（ｎ，ｍ）は、下記のような値となる。
Ｄ（ｎ，ｍ）＝１２０＋１４＋（−８）＝１２６
【０２２８】
誤差データＥｒ及びＥｄに関しては、後述する。
【０２２９】
次に、Ｄ（ｎ，ｍ）と、先に算出された、注目画素に対する閾値であるＳＬ（ｎ，ｍ）との比較を行い、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、２値化結果の出力であるＢｉｎ（ｎ，ｍ）が決定される。
例えば、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、色の出力を行うと判断され、Ｂｉｎ（ｎ，ｍ）＝１と決定される。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、色の出力が行われず、Ｂｉｎ（ｎ，ｍ）＝０と決定される。
例えば、上述した例では、Ｄ（ｎ，ｍ）＝１２６、ＳＬ（ｎ，ｍ）＝１４６であるので、「Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）」となり、注目画素には色の出力が行われないと判断され、Ｂｉｎ（ｎ，ｍ）＝０と決定される。
【０２３０】
＜従来技術における誤差分配＞
次に、閾値であるＳＬ（ｎ，ｍ）と、誤差補正後の画像データであるＤ（ｎ，ｍ）との差が、２値化誤差であるＥ（ｎ，ｍ）として、以降の処理画素に分配される。
Ｅ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）−Ｄ（ｎ，ｍ）
誤差分配の処理では、図８のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０２３１】
ここで、注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、注目画素の１ライン下の注目画素と同じ位置の画素への分配される誤差データをＥｄ（ｎ，ｍ）とする。このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素の２箇所に対して、Ｅ（ｎ，ｍ）の１／２ずつ、分配される。
【０２３２】
この場合、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２となる。
【０２３３】
例えば、上述した例では、Ｅ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）−Ｄ（ｎ，ｍ）＝１４６−１２６＝２０と算出される。そして、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝２０／２＝１０、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝２０／２＝１０となる。
【０２３４】
上記のＥｒ（ｎ，ｍ）は、Ｄｉｎ（ｎ＋１，ｍ）の誤差補正に用いられ、Ｅｄ（ｎ，ｍ）は、Ｄｉｎ（ｎ，ｍ＋１）の誤差補正に用いられる。
【０２３５】
＜従来技術のハードウェア＞
従来例２における平均濃度保存法を実現するハードウェアは、図１１に示されているようになる。
【０２３６】
＜閾値算出部２（１１０１）＞
注目画素（ｎ，ｍ）の周囲のｍ−１のラインに関しては、既に２値化処理が完了していて、２値化された画像データが存在する。
【０２３７】
それらの２値化された画像データは、２値化結果格納用メモリ１１０２に格納されている。
【０２３８】
閾値算出部２（１１０１）は、２値化結果格納用メモリ１１０２に格納されている２値化処理の終わった画像データに対する加重演算を行い、注目画素の閾値の算出を行う。
【０２３９】
閾値算出用加重係数１（１１０３）には、メモリ等を用いて、（ｎ−１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数２（１１０４）には、メモリ等を用いて、（ｎ，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数３（１１０５）には、メモリ等を用いて、（ｎ＋１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数４（１１０８）には、メモリ等を用いて、（ｎ−１，ｍ）の加重係数が記憶されている。
閾値算出用加重係数５（１１０６）には、メモリ等を用いて、（ｎ−２，ｍ）の加重係数が記憶されている。
【０２４０】
閾値算出用加重係数（１１０９）には、メモリ等を用いて、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の画素に対する加重係数の和が記憶されている。
【０２４１】
図１１の閾値算出部２（１１０１）は、２値化結果格納用メモリ１１０２から、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）の３画素の２値化された画像データの出力を行う。
【０２４２】
そして、乗算回路２１（１１１０）は、（ｎ−１，ｍ−１）の画素の２値化された画像データに対して、（ｎ−１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
【０２４３】
また、乗算回路２２（１１１１）は、（ｎ，ｍ−１）の画素の２値化された画像データに対して、（ｎ，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
【０２４４】
また、乗算回路２３（１１１２）は、（ｎ＋１，ｍ−１）の画素の２値化された画像データに対して、（ｎ＋１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行う。
【０２４５】
閾値算出部２（１１０１）は、（ｎ−１，ｍ）の画素の２値化された画像データとして、直前の２値化処理で出力された２値化結果Ｂｉｎ（ｎ，ｍ）を、そのまま乗算回路２４（１１１４）に入力する。そして、乗算回路２４（１１１４）は、閾値算出用加重係数４（１１０８）に記憶されている（ｎ−１，ｍ）の画素の加重係数と、画像データのＭａｘ値との乗算を行う。
【０２４６】
また、閾値算出部２（１１０１）は、（ｎ−２，ｍ）の画素の２値化された画像データとして、直前の２値化処理で出力された２値化結果Ｂｉｎ（ｎ，ｍ）をＦＦ２１（１１０７）で１クロック分叩き出したデータを、乗算回路２５（１１１３）に入力する。そして、乗算回路２５（１１１３）は、閾値算出用加重係数５（１１０６）に記憶されている（ｎ−２，ｍ）の画素の加重係数と、画像データのＭａｘ値との乗算を行う。
【０２４７】
そして、閾値算出部２（１１０１）は、乗算回路２１（１１１０）、乗算回路２２（１１１１）、乗算回路２３（１１１２）、乗算回路２４（１１１４）、乗算回路２５（１１１３）、からの出力値を、加算回路２１（１１１５）に入力する。そして、閾値算出部２（１１０１）は、この演算により、Ｓｓｕｍ（ｎ，ｍ）を算出する。
【０２４８】
そして、閾値算出部２（１１０１）は、除算回路２１（１１１６）により、加算回路２１（１１１５）から出力されるＳｓｕｍ（ｎ，ｍ）を、閾値算出用加重係数の和（１１０９）に記憶されている加重系数の和の値で割る。そして、閾値算出部２（１１０１）は、この演算により、注目画素に対する閾値であるＳＬ（ｎ，ｍ）の算出を行う。
【０２４９】
＜２値化処理部２（１１１７）＞
２値化処理部２（１１１７）は、注目画素の画像データに対して、以前の画素の２値化誤差により誤差補正が行われたＤ（ｎ，ｍ）と、閾値算出部２（１１０１）で算出された閾値であるＳＬ（ｎ，ｍ）とを比較し、２値化処理を行う。
【０２５０】
図１１の２値化処理部２（１１１７）の加算回路２２（１１１９）には、Ｄｉｎ（ｎ，ｍ）と、後述する誤差分配部２（１１２１）から出力される、注目画素の１画素前の２値化処理により算出された誤差データＥｒ（ｎ−１，ｍ）とが入力される。
【０２５１】
誤差データ（Ｅｄ）格納用メモリ（１１１８）は、注目画素以前の画素の２値化誤差のうち、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データであるＥｄ（ｎ，ｍ−１）を格納している。
【０２５２】
誤差データＥｒ及びＥｄに関しては、後述する。
【０２５３】
図１１に示されているように、２値化処理部２（１１１７）には、以下の３つのデータが入力される。すなわち、Ｄｉｎ（ｎ，ｍ）と、注目画素のラインの注目画素の１画素前の２値化処理誤差データＥｒ（ｎ−１，ｍ）と、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データＥｄ（ｎ，ｍ−１）とが２値化処理部２（１１１７）に入力される。ここで、Ｄｉｎ（ｎ，ｍ）は、注目画素の入力データである。
【０２５４】
２値化処理部２（１１１７）の加算回路２２（１１１９）は、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）の３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【０２５５】
次に、２値化処理部２（１１１７）の比較回路２１（１１２０）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、閾値算出部２（１１０１）によって算出された、注目画素に対する閾値ＳＬ（ｎ，ｍ）との比較を行う。そして、２値化処理部２（１１１７）の比較回路２１（１１２０）は、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝１）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化結果の出力を行う。
【０２５６】
比較回路２１（１１２０）は、以下のようにして、Ｂｉｎ（ｎ，ｍ）＝１かＢｉｎ（ｎ，ｍ）＝２かの判断を行う。すなわち、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、比較回路２１（１１２０）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝１と判断する。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、比較回路２１（１１２０）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０と判断する。
【０２５７】
比較回路２１（１１２０）により出力された注目画素の２値化結果であるＢｉｎ（ｎ，ｍ）は、２値化結果格納用メモリ１１０２と、閾値算出部２（１１０１）の乗算回路２４（１１１４）、またＦＦ２１（１１０７）にそれぞれ入力される。
【０２５８】
２値化結果格納用メモリ１１０２に格納されたデータは、２値化処理が終了したラインの次のラインの２値化処理時の閾値算出に用いられる。
【０２５９】
閾値算出部２（１１０１）の乗算回路２４（１１１４）に入力されたデータは、次の画素の２値化処理時の閾値算出に用いられる。
【０２６０】
ＦＦ２１（１１０７）に入力されたデータは、ＦＦ２１（１１０７）によってい１ロック叩かれることにより、２画素後ろを注目画素とした場合の２値化処理時の閾値算出に用いられる。
【０２６１】
＜誤差分配部２（１１２１）＞
誤差分配部２（１１２１）では、閾値算出部２（１１０１）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差を２値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【０２６２】
まず、誤差分配部２（１１２１）の減算回路２１（１１２１）は、閾値算出部２（１１０１）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【０２６３】
誤差分配部２（１１２１）が実行する処理では、図８のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０２６４】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
【０２６５】
このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素の２箇所に対して、１／２ずつ、誤差データが分配される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）の算出は、除算回路２２（１１２４）によって行われる。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）の算出は、除算回路２３（１１２５）によって行われる。
【０２６６】
ここで、誤差算出用係数１（１１２２）には、２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数１（１１２２）から読み出されて、除算回路２２（１１２４）に入力される。
【０２６７】
また、誤差算出用係数２（１１２３）には、２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数が記憶されている。２値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数２（１１２３）から読み出されて、除算回路２３（１１２５）に入力される。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ（１１１８）に格納される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）は、２値化処理部２（１１１７）の加算回路２２（１１１９）に入力される。
【０２６８】
誤差データ（Ｅｄ）格納用メモリ（１１１８）に格納された誤差データ（Ｅｄ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素のラインの次のラインの２値化処理時の２値化処理部２（１１１７）での誤差補正に用いられる。
【０２６９】
２値化処理部の加算回路２２（１１１９）に入力された誤差データ（Ｅｒ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素の次の画素の２値化処理時の２値化処理部２（１１１７）での誤差補正に用いられる。
【０２７０】
＜従来技術の問題点＞
上記の従来技術では、平均濃度保存法の処理結果を１クロックに付き、１画素ずつ出力させるためには、閾値算出処理、２値化処理、誤差分配処理の全ての処理を１クロック以内で完了させる必要がある。
【０２７１】
つまり、図１１の閾値算出部２（１１０１）、２値化処理部２（１１１７）、誤差分配部２（１１２１）の全ての処理を１クロック以内で完了させる必要がある。
【０２７２】
次に、図１２を用いて、従来技術における、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０２７３】
クロックのエッジ３の立ち上がりで注目画素の２値化を行う際には、図１２のような処理が行われる。
【０２７４】
クロックのエッジ３の立ち上がりで１画素前の２値化が完了し２値データの出力が行われたときと同じタイミングで、２値化結果格納用メモリ１１０２から入力された、注目画素の閾値算出に用いられる１ライン前の２値化結果が入力される。
【０２７５】
次に、１ライン前の２値化結果から１ライン前のエリアに関する加重演算が行われる。
【０２７６】
２画素前の２値化結果に関しては、ＦＦ２１（１１０７）により、クロックのエッジ２によって、１クロック遅延処理が行われ、２画素前の画素に関しての加重係数との乗算及び、除算の演算が行われる。
【０２７７】
また同時に、１画素前の２値化結果から１画素前の画素に関しての加重係数との乗算及び除算が行われる。そして、その乗算及び除算の結果と、２画素前の画素に関する演算の結果及び、１ライン前のエリアに関する加重演算の結果から、注目画素に対する閾値の算出が行われる。
【０２７８】
上記の処理と並行して、Ｄｉｎ（ｎ，ｍ）に対して、２値化処理誤差データ（Ｅｒ（ｎ−１，ｍ））と、誤差データ（Ｅｄ）格納用メモリ（１１１８）から入力された、２値化処理誤差データ（Ｅｄ（ｎ，ｍ−１））により、注目画素に対する誤差補正が行われる。
【０２７９】
そして、上記処理によって算出された注目画素に対する閾値ＳＬ（ｎ，ｍ）と、注目画素の誤差補正データＤ（ｎ，ｍ）との比較が行われ、クロックのエッジ３の立ち上がりで注目画素の２値化が実行され、２値化処理部２（１１１７）から出力される。
【０２８０】
以降、次のエッジ４では、１画素後ろの画素を注目画素として、同じ処理が繰り返される。
【０２８１】
現状では、閾値算出処理時の乗算や加算、除算、誤差分配処理時の減算や除算などを、順次行っていく必要がある。
【０２８２】
また、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、これまで以上に演算の負荷が大きくなってきている。
【０２８３】
その為、早い周波数での動作を行おうとした場合、１クロック以内では、各種演算処理が完了しないため、高速動作が出来ないという問題が起きている。
【０２８４】
以下で、第２の実施形態に関して、詳細な説明を行う。
【０２８５】
まず、図１３を用いて、第２の実施形態におけるハードウェアについて、詳細な説明を行う。
【０２８６】
＜閾値算出部３１（１３０１）＞
注目画素（ｎ，ｍ）の周囲のｍ−１のラインに関しては、既に２値化処理が完了していて、２値化された画像データが存在する。
【０２８７】
それらの２値化された画像データは、２値化結果格納用メモリ１３０２に格納されている。
【０２８８】
閾値算出処理部３１（１３０１）は、２値化結果格納用メモリ１３０２に格納されている２値化処理の終わった画素データに対する加重演算を行う。閾値算出処理部３１（１３０１）は、特に注目画素より前のラインに関する加重演算を行う。
【０２８９】
閾値算出用加重係数１（１３０３）には、メモリ等を用いて、（ｎ−１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数２（１３０４）には、メモリ等を用いて、（ｎ，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数３（１３０５）には、メモリ等を用いて、（ｎ＋１，ｍ−１）の加重係数が記憶されている。
【０２９０】
閾値算出用加重係数の和（１３０６）には、メモリ等を用いて、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の画素に対する加重係数の和が記憶されている。
【０２９１】
図１３の閾値算出部３１（１３０１）は、２値化結果格納用メモリ１３０２から、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）の３画素の２値化された画像データの出力を行う。
【０２９２】
そして、乗算回路３１（１３０７）は、２値化結果格納用メモリ（１３０２）から、（ｎ−１，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ−１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行い出力する。ここで、画像データのＭａｘ値は、例えば、「２５５」である。
【０２９３】
また、乗算回路３２（１３０８）は、２値化結果格納用メモリ（１３０２）から、（ｎ，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行い出力する。ここで、画像データのＭａｘ値は、例えば、「２５５」である。
【０２９４】
また、乗算回路３３（１３０９）は、２値化結果格納用メモリ（１３０２）から、（ｎ＋１，ｍ−１）の画素の２値化されたデータを受信し、２値化されたデータと、（ｎ＋１，ｍ−１）の加重係数と、画像データのＭａｘ値との乗算を行い出力する。ここで、画像データのＭａｘ値は、例えば、「２５５」である。
【０２９５】
次に、加算回路３１（１３１３）は、ＦＦ３１（１３１０）を経由して、乗算回路３１（１３０７）の出力値を受信する。
また、加算回路３１（１３１３）は、ＦＦ３２（１３１１）を経由して、乗算回路３２（１３０８）の出力値を受信する。
また、加算回路３１（１３１３）は、ＦＦ３３（１３１２）を経由して、乗算回路３３（１３０９）の出力値を受信する。
【０２９６】
そして、加算回路３１（１３１３）は、乗算回路３１（１３０７）の出力値と、乗算回路３２（１３０８）の出力値と、乗算回路３３（１３０９）の出力値とを加算し、注目画素より前のラインの各画素の係数との乗算結果の和（Ｓｓｕｍ＿Ｌ）を算出する。そして、算出結果を出力する。
【０２９７】
次に、除算回路３１（１３１５）は、ＦＦ３４（１３１４）を経由して、加算回路３１（１３１３）の出力値（Ｓｓｕｍ＿Ｌ）を受信し、閾値算出用加重係数の和（１３０６）に記憶されている値を受信する。そして、除算回路３１（１３１５）は、加算回路３１（１３１３）から出力される注目画素より前のラインの各画素の係数との乗算結果の和Ｓｓｕｍ＿Ｌを、閾値算出用加重係数の和（１３０６）に記憶されている値で割り、ＳＬ＿Ｌ（ｎ，ｍ）の算出を行う。そして、算出結果を出力する。ここで、ＳＬ＿Ｌ（ｎ，ｍ）は、注目画素より１ライン前の注目画素に対する閾値である。以上の演算が、閾値算出部３１（１３０１）が行う加重演算である。
【０２９８】
＜閾値算出部３２（１３２１）＞
閾値算出部３２（１３２１）は、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する係数との乗算及び除算を行い、特に注目画素の１画素前の画素の２値化結果に対する演算を行う。
【０２９９】
閾値算出部３２（１３２１）は、注目画素の１画素前の２値化処理が終了する前に、注目画素の１画素前の２値化処理結果が、「１」の場合を想定して、事前に、予め注目画素の１画素前の係数との乗算及び除算を行う。
【０３００】
本実施形態では、注目画素の１画素前の２値化処理結果が、「１」の場合の注目画素の１画素前の係数との乗算及び除算結果を、ＳＬ＿１（ｎ，ｍ）とする。
【０３０１】
本実施形態では、注目画素の１画素前の２値化処理結果が、「０」の場合、閾値算出部３４（１３２７）で加算される値は、「０」となる為、特に演算回路を用いず、閾値算出部３４（１３２７）において、「０」の値をセレクタ３１（１３２９）に入力される。
【０３０２】
その後、閾値算出部３４（１３２７）は、注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行う。
【０３０３】
以下、図１３を用いて、閾値算出部３２（１３２１）について、詳細な説明を行う。
【０３０４】
閾値算出用加重係数４（１３２３）には、（ｎ−１，ｍ）の加重係数が記憶されている。
【０３０５】
閾値算出用加重係数の和（１３０６）には、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の加重係数の和が記憶されている。
【０３０６】
乗算回路３５（１３２４）は、画像データのＭａｘ値１３２２と、閾値算出用加重係数４（１３２３）に記憶されている（ｎ−１，ｍ）の加重係数との乗算を実行する。
【０３０７】
その後、除算回路３２（１３２５）は、乗算回路３５（１３２４）から出力される注目画素の１画素前の画素の係数との乗算結果を、閾値算出用加重係数の和（１３０６）に記憶されている値で割る。そして、除算回路３２（１３２５）は、この演算により、注目画素の１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）の算出を行う。
【０３０８】
＜閾値算出部３３（１３１８）＞
閾値算出部３３（１３１８）は、注目画素以前のすでに２値化処理の終わった画素の２値化結果に対する係数との乗算を行い、特に注目画素２画素前の係数との乗算を行う。
【０３０９】
注目画素２画素前の係数との乗算を行う場合、従来技術では、図１１のように、２画素前の２値化処理から出力される２値出力データＢｉｎ（ｎ，ｍ）を、ＦＦ２１（１１０７）により１回叩くことにより、１クロック分遅延させる。その後、乗算回路２５（１１１３）、加算回路２１（１１１５）、除算回路２１（１１１６）が、演算処理を行って、注目画素の閾値ＳＬ（ｎ，ｍ）を算出する。
【０３１０】
しかし、本実施形態では、２画素前の２値化処理から出力される２値化結果であるＢｉｎ（ｎ，ｍ）が、閾値算出部３３（１３１８）にそのまま入力され、乗算回路３４（１３１９）による演算処理が行われる。その後、乗算回路３４（１３１９）の出力がＦＦ３７（１３２０）により１回叩かれる。
【０３１１】
そして、その後の除算処理は、閾値算出部３４（１３２７）の除算回路３３（１３３０）により行われる。また、注目画素の前のラインや１画素前の２値化結果から算出される閾値との加算は、加算回路３２（１３３１）により行われる。
【０３１２】
すなわち、本実施形態では、２画素前の２値化処理結果に対する係数との演算については、１サイクル以内で、その演算に含まれる乗算、加算、除算の全ての処理は行われない。
【０３１３】
つまり、本実施形態では、２画素前の２値化処理結果に対する乗算及び除算の結果は、注目画素の２値化処理を行うまでに完了して、その値を用いることができるようになっている。よって、本実施形態では、２画素前の２値化処理結果に対する係数との演算は、２サイクルで処理が行われる。
【０３１４】
これにより、本実施形態では、１サイクル以内で、行う演算処理が分散され、より高い周波数のクロックでの動作の実現が可能となる。
【０３１５】
以下で、図１３を用いて、閾値算出部３３に関して詳細な説明を行う。
【０３１６】
閾値算出用加重係数５（１３１７）には、（ｎ−２，ｍ）の加重係数が記憶されている。
【０３１７】
乗算回路３４（１３１９）は、２値化処理部３（１３３２）から入力された２値データと、閾値算出用加重係数５（１３１７）に記憶されている（ｎ−２，ｍ）の加重係数との乗算を実行する。そして、乗算回路３４（１３１９）は、その乗算から得られた値を、ＳＬ＿２（ｎ，ｍ）として、ＦＦ３７（１３２０）を経由して、閾値算出部３３（１３１８）から出力する。
【０３１８】
＜閾値算出部３４（１３２７）＞
閾値算出部３４（１３２７）は、除算回路３３（１３３０）と、セレクタ３１（１３２９）と、加算回路３２（１３３１）とを有する。
【０３１９】
除算回路３３（１３３０）は、閾値算出部３３（１３１８）からの出力値ＳＬ＿２（ｎ，ｍ）を、閾値算出用加重係数の和（１３０６）に記憶されている、各画素の加重係数の和によって除算を行う。そして、除算回路３３（１３３０）は、除算結果ＳＬ＿３（ｎ，ｍ）の出力を行う。
【０３２０】
セレクタ３１（１３２９）は、ＳＬ＿１（ｎ，ｍ）と、注目画素の１画素前の２値化結果が「０」である場合を想定した、注目画素１画素前の注目画素に対する閾値「０」（１３２８）のどちらかの選択を行い、その値を加算回路３２（１３３１）に入力する。
【０３２１】
加算回路３２（１３３１）は、予め算出されている、ＳＬ＿Ｌ（ｎ，ｍ）と、セレクタ３１（１３２９）から出力された、注目画素の１画素前の注目画素の閾値（ＳＬ＿１（ｎ，ｍ）の値又は「０」の値）と、ＳＬ＿３（ｎ，ｍ）との加算を行う。そして、加算回路３２（１３３１）は、その加算から得られる注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行う。
【０３２２】
＜２値化処理部３（１３３２）＞
２値化処理部３（１３３２）は、注目画素の誤差補正後のデータ（Ｄ（ｎ，ｍ））と、閾値算出部３４（１３２７）で算出された閾値ＳＬ（ｎ，ｍ）とを比較し、２値化処理を行う。
【０３２３】
Ｅｒ（ｎ−１，ｍ）は、後述する誤差分配部３（１３３６）から出力された、注目画素の１画素前の２値化結果から算出された誤差データである。
【０３２４】
誤差データ（Ｅｄ）格納用メモリ（１３３３）は、注目画素以前の画素の２値化誤差のうち、Ｅｄ（ｎ，ｍ−１）に関する誤差データを格納している。
【０３２５】
誤差データＥｒ及びＥｄに関しては、後述する。
【０３２６】
２値化処理部３（１３３２）には、図１３に示されているように、以下の３つのデータが入力される。
【０３２７】
すなわち、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）、Ｅｄ（ｎ，ｍ−１）とが２値化処理部３（１３３２）に入力される。ここで、Ｄｉｎ（ｎ，ｍ）は、注目画素の入力データである。また、Ｅｒ（ｎ−１，ｍ）は、注目画素のラインの注目画素の１画素前の２値化処理誤差データである。また、Ｅｄ（ｎ，ｍ−１）は、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データである。
【０３２８】
加算回路３３（１３３４）は、上記３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【０３２９】
次に、２値化処理部３（１３３２）の比較回路３１（１３３５）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、閾値算出部３４（１３２７）によって算出された、注目画素に対する閾値ＳＬ（ｎ，ｍ）との比較を行う。そして、比較回路３１（１３３５）は、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝１）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化結果の出力を行う。
【０３３０】
比較回路３１（１３３５）は、以下のようにして、Ｂｉｎ（ｎ，ｍ）＝１かＢｉｎ（ｎ，ｍ）＝２かの判断を行う。すなわち、Ｄ（ｎ，ｍ）≧ＳＬ（ｎ，ｍ）の場合、比較回路３１（１３３５）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝１と判断する。一方、Ｄ（ｎ，ｍ）＜ＳＬ（ｎ，ｍ）の場合、比較回路３１（１３３５）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０と判断する。
【０３３１】
比較回路３１（１３３５）により出力されたＢｉｎ（ｎ，ｍ）は、２値化結果格納用メモリ（１３０２）と、閾値算出部３３（１３１８）の乗算回路３４（１３１９）及び、閾値算出部３４（１３２７）のセレクタ３１（１３２９）にそれぞれ入力される。
【０３３２】
２値化結果格納用メモリ（１３０２）に格納されたデータは、２値化処理が終了したラインの次のラインの２値化処理時の閾値算出に用いられる。
【０３３３】
閾値算出部３３（１３１８）の乗算回路３４（１３１９）に入力されたデータは、２値化処理が終了した画素の２画素後の画素の２値化処理時の閾値算出に用いられる。
【０３３４】
閾値算出部３４（１３２７）のセレクタ３１（１３２９）に入力されたデータは、２値化処理が終了した画素の次の画素の２値化処理時の閾値算出に用いられる。
【０３３５】
＜誤差分配部３（１３３６）＞
誤差分配部３（１３３６）は、閾値算出部３４（１３２７）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差を２値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【０３３６】
まず、誤差分配部３（１３３６）の減算回路３１（１３３７）は、閾値算出部３４（１３２７）によって算出された注目画素の閾値であるＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【０３３７】
誤差分配部３（１３３６）が実行する処理では、図８のように、注目画素に対して、注目画素のラインの１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０３３８】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
【０３３９】
本実施形態では、演算処理の軽減の為、注目画素の閾値ＳＬ（ｎ，ｍ）と、注目画素の誤差補正後のデータＤ（ｎ，ｍ）との差Ｅ（ｎ，ｍ）の値に対して除算回路による処理が行われない。その代わり、ビットシフト３１（１３３８）によって、データＥ（ｎ，ｍ）の最下位１ビットを削除することにより、データＥ（ｎ，ｍ）を２で除算したのと同等の値が、Ｅｄ（ｎ，ｍ）およびＥｒ（ｎ，ｍ）として出力される。
【０３４０】
そして、Ｅｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ（１３３３）に入力される。
【０３４１】
また、Ｅｒ（ｎ，ｍ）は、２値化処理部３（１３３２）の加算回路３３（１３３４）に入力される。
【０３４２】
誤差データ（Ｅｄ）格納用メモリ（１３３３）に格納されたデータは、注目画素のラインの次のラインの２値化処理時の２値化処理部での誤差補正に用いられる。
【０３４３】
２値化処理部３（１３３２）の加算回路３３（１３３４）に入力されたデータは、注目画素の次の画素の２値化処理時の２値化処理部３（１３３２）での誤差補正に用いられる。
【０３４４】
次に、第２の実施形態でのクロックと処理のタイミングに関して、詳細な説明を行う。
【０３４５】
具体的には、図１４を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０３４６】
クロックのエッジ５の立ち上がりで注目画素の２値化を行う際には、図１４に示されている処理が行われる。
【０３４７】
図１３の閾値算出部３１（１３０１）における、注目画素より１ライン前の注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）の算出は、エッジ１から開始され、エッジ４にて処理が完了する。
【０３４８】
具体的には、クロックのエッジ１によって、２値化結果格納用メモリ（１３０２）から、注目画素の前のラインの２値化結果データの入力が行われる。
【０３４９】
その後、図１３の乗算回路３１（１３０７）、乗算回路３２（１３０８）、乗算回路３３（１３０９）、によって各画素の係数との乗算が実行される。、その乗算の結果は、クロックのエッジ２のタイミングで、それぞれＦＦ３１（１３１０）、ＦＦ３２（１３１１）、ＦＦ３３（１３１２）によって叩かれる。
【０３５０】
ＦＦ３１（１３１０）、ＦＦ３２（１３１１）、ＦＦ３３（１３１２）によって叩かれたデータは、図１３の加算回路３１（１３１３）に入力され、Ｓｓｕｍ＿Ｌが算出される。
【０３５１】
Ｓｓｕｍ＿Ｌのデータは、クロックのエッジ３のタイミングでＦＦ３４（１３１４）によって、叩かれる。
【０３５２】
ＦＦ３４（１３１４）によって叩かれたデータは、図１３の除算回路３１（１３１５）に入力され、注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）が算出される。
【０３５３】
ＳＬ＿Ｌ（ｎ，ｍ）のデータは、クロックのエッジ４のタイミングでＦＦ３５（１３１６）によって、叩かれて閾値算出部３１（１３０１）から出力される。
【０３５４】
図１３の閾値算出部３２（１３２１）における、注目画素の１画素前の注目画素に対する閾値ＳＬ＿１（ｎ，ｍ）は、エッジ４にて処理が完了する。
【０３５５】
具体的には、クロックのエッジ３のタイミングで、閾値算出部３２（１３２１）で必要となる各種データの入力が行わる。そして、乗算回路３５（１３２４）及び除算回路３２（１３２５）の演算処理が実行され、ＳＬ＿１（ｎ，ｍ）の値が算出される。
【０３５６】
ＳＬ＿１（ｎ，ｍ）の値は、クロックのエッジ４のタイミングで、ＦＦ３６（１３２６）によって叩かれて、閾値算出部３２（１３２１）から出力される。
【０３５７】
図１３の閾値算出部３３（１３１８）における、注目画素の２画素前の注目画素に対する閾値ＳＬ＿２（ｎ，ｍ）は、エッジ４にて処理が完了する。
【０３５８】
具体的には、クロックのエッジ３のタイミングで、閾値算出部３３（１３１８）で必要となる閾値算出用の加重係数と、２値化処理部３（１３３２）から出力される２値化結果のデータの入力が行われ、乗算回路３４（１３１９）の演算処理が実行される。この演算処理により、ＳＬ＿２（ｎ，ｍ）が算出される。
【０３５９】
ＳＬ＿２（ｎ，ｍ）の値は、クロックのエッジ４のタイミングで、ＦＦ３７（１３２０）によって叩かれて、閾値算出部３３（１３１８）から出力される。
【０３６０】
クロックのエッジ４のタイミングで出力された、ＳＬ＿Ｌ（ｎ，ｍ）、ＳＬ＿１（ｎ，ｍ）、ＳＬ＿２（ｎ，ｍ）は、閾値算出部３４（１３２７）に入力される。
【０３６１】
以降、説明を行う処理に関しては、クロックのエッジ４からエッジ５の１サイクルの間で実行される。
【０３６２】
セレクタ３１（１３２９）は、エッジ４のタイミングで出力される１画素前の２値化の処理結果を元に、ＳＬ＿１（ｎ，ｍ）と、閾値「０」（１３２８）のどちらかの値を選択する。
【０３６３】
注目画素の２画素前の注目画素に対する閾値ＳＬ＿２（ｎ，ｍ）は、閾値算出部３４（１３２７）に入力され、除算回路３３（１３３０）によって除算処理が実行され、２画素前の注目画素の乗算及び除算結果ＳＬ＿３（ｎ，ｍ）が出力される。
【０３６４】
加算回路３２（１３３１）は、セレクタ３１（１３２９）に選択されたデータと、閾値算出部３４（１３２７）に入力された、ＳＬ＿Ｌ（ｎ，ｍ）及び、ＳＬ＿３（ｎ，ｍ）を全て合計し、注目画素に対する閾値ＳＬ（ｎ，ｍ）を算出する。
【０３６５】
また、上記の処理と並行して、図１３の２値化処理部３（１３３２）は、Ｄｉｎ（ｎ，ｍ）に対して、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）により、注目画素に対する誤差補正を行う。
【０３６６】
そして、上記処理によって算出された注目画素に対する閾値ＳＬ（ｎ，ｍ）と、注目画素の誤差補正データＤ（ｎ，ｍ）との比較が行われ、クロックのエッジ５の立ち上がりで注目画素の２値化が実行され、２値化処理部３（１３３２）から出力される。
【０３６７】
以上のように、注目画素に対してそれより前のラインの加重演算に関しては、注目画素の１画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
【０３６８】
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
【０３６９】
注目画素に対して、同じラインで、２画素以前の係数との乗算および除算に関しては、注目画素の１画素前の処理を行うタイミングで、演算が終了するように、マルチサイクルで処理を行う。
【０３７０】
つまり、注目画素に対して、同じラインで、２画素以前の係数との乗算および除算に関しても、演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷を軽減する。
【０３７１】
また、注目画素に対して１画素前の画素の係数との乗算及び除算に関しては、２画素前の画素を処理するタイミングで、１画素前の処理結果が「１」の場合と「０」の場合の両方を想定して、事前に、演算が行われる。そして、１画素前の２値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
【０３７２】
つまり、１画素前の画素の係数との乗算および除算に関しては、予め１画素前の２値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷を軽減する。
【０３７３】
また、誤差分配部３の処理のように、２のべき乗の除算や乗算の演算に関しては、演算回路を用意せずに、ビットシフトを用いることによって、演算の付加を軽減する。
【０３７４】
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することができる。
【０３７５】
＜第３の実施形態＞
第１の実施形態及び、第２の実施形態では、平均濃度保存法による量子化のうち、２値化の処理を元に実施形態の説明を行ってきた。
【０３７６】
第３の実施形態では、平均濃度保存法による量子化のうち多値化の処理をハードウェアで実行する。
【０３７７】
第３の実施形態の説明を行うにあたり、平均濃度保存法による量子化のうち多値化の処理を行う場合の従来技術の説明も行う。
【０３７８】
まず、以下で、従来技術における平均濃度保存法に関して、閾値算出処理、２値化処理、誤差分配処理のような３つの処理について、詳細な説明を行う。
【０３７９】
＜従来技術における平均濃度保存法＞
本実施形態および従来技術で、４値化において、最小の出力値（出力濃度１）を「０」とし、最大の出力値（出力濃度４）を「２５５」とする。
【０３８０】
そして、それ以外の２つの出力地を薄い方から順に、「８５」（出力濃度２）、「１７０」（出力濃度３）と設定する。
【０３８１】
従来技術に係る平均濃度保存法による多値化の処理は、以下のようになる。
【０３８２】
＜閾値算出処理＞
閾値算出処理では、Ｎ値化（Ｎ＞１（Ｎは２以上の整数である。）とする）を行う場合、Ｎ−１種類の閾値の設定が行われる。
【０３８３】
この場合、注目画素から前の、すでに２値化の完了している画素の２値化結果を用いて、１つの注目画素に対する閾値が算出され、その閾値を元にして、Ｎ−１種類の閾値が生成される。
【０３８４】
＜４値化処理＞
注目画素の画像データは、以前の画素のＮ値化誤差により誤差補正が実行された後、閾値と比較され、Ｎ値化処理が行われる。
【０３８５】
この場合、誤差補正後の画像データの値が、複数の閾値のどの閾値の間に有るかによって、Ｎ値の出力のどの値で出力を行うかが決定される。
【０３８６】
＜誤差分配処理＞
Ｎ値化時に出た誤差（出力値と誤差補正後の画像データとの差）は、以降、処理されるべき画像データに誤差補正値として渡される。
【０３８７】
＜従来技術に係る閾値算出処理＞
４値化処理を行う注目画素を（ｎ，ｍ）としたとき、ｍラインで、ｎ−１以前の画素に関しては、既に４値化処理が完了していて、４値の画像データ（「０」、「８５」、「１７０」または「２５５」）が存在する。
【０３８８】
同様に、ｍ−１以前のラインに関しても、既に４値化処理が完了していて、４値の画像データが存在する。
【０３８９】
閾値算出処理では、注目画素以前のすでに４値化処理の終わった画素の４値化結果に対する加重演算を行うことで、注目画素の閾値の算出が行われる。
【０３９０】
次に、図１５を用いて、閾値算出に用いる画素の範囲に関して詳細な説明を行う。
【０３９１】
閾値算出に用いる画素の範囲を図１５のように、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の４画素の範囲とする。
【０３９２】
その各画素に対する加重係数は、図１６のように（ｎ−１，ｍ−１）には「１」、（ｎ，ｍ−１）には「２」、（ｎ＋１，ｍ−１）には「１」、（ｎ−１，ｍ）には「２」と、設定される。
【０３９３】
注目画素以前の４値化処理結果のそれぞれの出力値に対して、上記の加重係数を元にして、加重演算処理が行われる。
【０３９４】
よって、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理を行うことにより求められる。
【０３９５】
まず始めに各画素の係数との乗算が、以下のように実行される。
Ｓ（ｎ−１，ｍ−１）＝（ｎ−１，ｍ−１）の加重係数×（ｎ−１，ｍ−１）の４値化処理結果値
Ｓ（ｎ，ｍ−１）＝（ｎ，ｍ−１）の加重係数×（ｎ，ｍ−１）の４値化処理結果値
Ｓ（ｎ＋１，ｍ−１）＝（ｎ＋１，ｍ−１）の加重係数×（ｎ＋１，ｍ−１）の４値化処理結果値
Ｓ（ｎ−１，ｍ）＝（ｎ−１，ｍ）の加重係数×（ｎ−１，ｍ）の４値化処理結果値
Ｓｓｕｍ（ｎ，ｍ）＝Ｓ（ｎ−１，ｍ−１）＋Ｓ（ｎ，ｍ−１）＋Ｓ（ｎ＋１，ｍ−１）＋Ｓ（ｎ−１，ｍ）
【０３９６】
次に、各画素の係数との乗算結果の和に対する補正に関する説明を行う。
【０３９７】
注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理を行うことにより求められる。
ＳＬ（ｎ，ｍ）＝Ｓｓｕｍ（ｎ，ｍ）／｛（ｎ−１，ｍ−１）の加重係数＋（ｎ，ｍ−１）の加重係数＋（ｎ＋１，ｍ−１）の加重係数＋（ｎ−１，ｍ）の加重係数｝
よって、注目画素以前の４値化処理結果が、図１７のような場合、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）は、下記のような加重演算処理により求められる。
ＳＬ（ｎ，ｍ）＝｛（１×２５５）＋（２×０）＋（１×８５）＋（２×１７０）｝／（１＋２＋１＋２）＝１３３
【０３９８】
次に、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）を元にして、Ｎ値化を行う為のＮ−１種類の閾値の生成が行われる。
【０３９９】
４値化処理を行う為、閾値は３種類生成される。そして、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）に対して、予め設定された数「α」を加算及び、減算することによって、３種類の閾値の生成が行われる。
【０４００】
例えば、３種類の閾値を、値の小さい方から、ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）、の３種類とすることができる。
【０４０１】
よって、注目画素以前の４値化処理結果が、図１７のような場合、注目画素（ｎ，ｍ）に対する閾値ＳＬ（ｎ，ｍ）の値が「１３３」となるとき、「α」の値が「５０」と設定されていた場合、３種類の各閾値は以下のような値となる。
ＳＬ＿Ｌｏ（ｎ，ｍ）＝１３３−５０＝８３
ＳＬ＿Ｍｄ（ｎ，ｍ）＝１３３
ＳＬ＿Ｈｉ（ｎ，ｍ）＝１３３＋５０＝１８３
【０４０２】
＜従来技術に係る４値化処理＞
注目画素の画像データは、以前の画素のＮ値化誤差により誤差補正が実行された後、閾値と比較され、Ｎ値化処理が行われる。
【０４０３】
４値化処理本処理では、図１５のように、注目画素に対して、注目画素のラインの注目画素の１画素前の画素からの誤差データと、注目画素の１ライン前の注目画素と同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
【０４０４】
まず、注目画素の入力データをＤｉｎ（ｎ，ｍ）、注目画素のラインの注目画素の１画素前の２値化処理誤差データをＥｒ（ｎ−１，ｍ）、注目画素の１ライン前の注目画素と同じ位置の画素の２値化処理誤差データをＥｄ（ｎ，ｍ−１）とする。
【０４０５】
この場合、誤差補正後のデータＤ（ｎ，ｍ）の算出は、下記のような演算により行われる。
Ｄ（ｎ，ｍ）＝Ｄｉｎ（ｎ，ｍ）＋Ｅｒ（ｎ−１，ｍ）＋Ｅｄ（ｎ，ｍ−１）
例えば、Ｄｉｎ（ｎ，ｍ）＝１２１、Ｅｒ（ｎ−１，ｍ）＝１４、Ｅｄ（ｎ，ｍ−１）＝−８となっていた場合、Ｄ（ｎ，ｍ）＝１２１＋１４＋（−８）＝１２７となる。
【０４０６】
誤差データＥｒ及びＥｄに関しては、後述する。
【０４０７】
Ｎ値化処理は、誤差補正後のデータＤ（ｎ，ｍ）と、先に算出された、注目画素に対するＮ−１種類の閾値との比較を行い、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、Ｎ値化結果Ｎ（ｎ．ｍ）の出力を行う。
【０４０８】
例えば、４値化処理の場合は、誤差補正後のデータＤ（ｎ，ｍ）と、先に算出された、注目画素に対する３種類の閾値ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）との比較が行われる。そして、注目画素に対して、出力濃度１から出力濃度４のどの濃度によって出力を行うかの判断が行われ、４値化結果Ｎ（ｎ．ｍ）の出力が行われる。
【０４０９】
そのときの判断とは、下記のようになる。
【０４１０】
すなわち、Ｄ（ｎ，ｍ）≦ＳＬ＿Ｌｏ（ｎ，ｍ）の場合、出力濃度１の出力を行うと判断され、Ｎ（ｎ，ｍ）＝０となる。
また、ＳＬ＿Ｌｏ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｍｄ（ｎ，ｍ）の場合、出力濃度２の出力を行うと判断され、Ｎ（ｎ，ｍ）＝８５となる。
また、ＳＬ＿Ｍｄ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、出力濃度３の出力を行うと判断され、Ｎ（ｎ，ｍ）＝１７０となる。
また、Ｄ（ｎ，ｍ）＞ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、出力濃度４の出力を行うと判断され、Ｎ（ｎ，ｍ）＝２５５となる。
【０４１１】
具体的には、Ｄ（ｎ，ｍ）＝１２７の場合、注目画素に対する閾値はそれぞれ、ＳＬ＿Ｌｏ（ｎ，ｍ）＝８３、ＳＬ＿Ｍｄ（ｎ，ｍ）＝１３３、ＳＬ＿Ｈｉ（ｎ，ｍ）＝１８３となっている。したがって、ＳＬ＿Ｌｏ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｍｄ（ｎ，ｍ）となり、出力濃度２の出力を行うと判断される。
【０４１２】
つまり、４値化出力結果は、Ｎ（ｎ，ｍ）＝８５となる。
【０４１３】
＜従来技術に係る誤差分配処理＞
次に、誤差分配処理では、誤差補正後のデータとＮ値化の出力値との差をＮ値化誤差として、以降の処理画素に分配される。
Ｅ（ｎ，ｍ）＝Ｄ（ｎ，ｍ）−Ｎ（ｎ，ｍ）
誤差分配処理では、図１５のように、注目画素に対して、注目画素と同じラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０４１４】
ここで、注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、注目画素と１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。
【０４１５】
このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素の２箇所に対して、１／２ずつ、誤差が分配される。
【０４１６】
すなわち、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２であり、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２である。
【０４１７】
そして、誤差データＥ（ｎ，ｍ）は、下記のように算出される。
Ｅ（ｎ，ｍ）＝Ｄ（ｎ，ｍ）−Ｎ（ｎ，ｍ）＝１２７−８５＝４２
この場合、Ｅｒ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝４２／２＝２１であり、Ｅｄ（ｎ，ｍ）＝Ｅ（ｎ，ｍ）／２＝４２／２＝２１である。
【０４１８】
上記注目画素の各誤差データは、Ｅｒ（ｎ，ｍ）に関しては、Ｄｉｎ（ｎ＋１，ｍ）の誤差補正に、Ｅｄ（ｎ，ｍ）に関しては、Ｄｉｎ（ｎ，ｍ＋１）の誤差補正に用いられる。
【０４１９】
次に、４値化処理の従来技術における、ハードウェアの詳細な説明を行う。
【０４２０】
従来技術における４値化の平均濃度保存法を実現するハードウェアは、図１８に示されている。
【０４２１】
以下で、閾値算出部４（１８０１）に関して詳細な説明を行う。
【０４２２】
ｍ−１のラインに関しては、既に４値化処理が完了していて、４値の画像データが存在する。
【０４２３】
それらの４値化結果データは、４値化結果格納用メモリ（１８０２）に格納されている。
【０４２４】
閾値算出部４（１８０１）では、注目画素以前のすでに４値化処理の終わった画素の４値化結果に対する加重演算を行うことで、注目画素の閾値の算出が行われる。
【０４２５】
図１８をもとにして、詳細説明を以下におこなう。
【０４２６】
閾値算出用加重係数１（１８０３）には、メモリ等を用いて、（ｎ−１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数２（１８０４）には、メモリ等を用いて、（ｎ，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数３（１８０５）には、メモリ等を用いて、（ｎ＋１，ｍ−１）の加重係数が記憶されている。
閾値算出用加重係数４（１８０９）には、メモリ等を用いて、（ｎ−１，ｍ）の加重係数が記憶されている。
【０４２７】
閾値算出用加重係数の和には、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の加重係数の和がメモリ等を用いて、記憶されている。
【０４２８】
４値化結果格納用メモリ（１８０２）から、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）の３画素の４値化結果データの出力が行われる。そして、それぞれの４値化結果データに対して、（ｎ−１，ｍ−１）の加重係数、（ｎ，ｍ−１）の加重係数、（ｎ＋１，ｍ−１）の加重係数との乗算が、それぞれ、乗算回路４１（１８０８）、乗算回路４２（１８０９）、乗算回路４３（１８１０）で行われる。
【０４２９】
（ｎ−１，ｍ）の２値化結果に関しては、直前の処理で出力された４値化結果Ｎがそのまま乗算回路４４（１８１１）に入力され、閾値算出用加重係数４（１８０６）に記憶されている（ｎ−１，ｍ）の加重係数との乗算が実行される。
【０４３０】
各画素の加重係数との乗算結果の和の算出に関しては、乗算回路４１（１８０８）、乗算回路４２（１８０９）、乗算回路４３（１８１０）、乗算回路４４（１８１１）、からの出力値が、加算回路４１（１８１２）に入力される。そして、加算回路４１（１８１２）は、各画素の加重係数との乗算結果の和Ｓｓｕｍ（ｎ，ｍ）を算出する。
【０４３１】
除算回路４１（１８１３）は、加算回路４１（１８１２）から出力される各画素の加重係数との乗算結果の和Ｓｓｕｍ（ｎ，ｍ）を、閾値算出用加重係数の和（１８０７）に記憶されている値で割り、注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行う。
【０４３２】
加算回路４２（１８１４）は、注目画素に対する閾値ＳＬ（ｎ，ｍ）に対して、複数の閾値生成用の係数（本例の場合「α」と「−α」）をそれぞれ加算し、ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）の出力を行う。
【０４３３】
この場合、各閾値として、ＳＬ＿Ｌｏ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋（−α）、ＳＬ＿Ｍｄ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋αの値が出力される。
【０４３４】
＜４値化処理部４（１８１５）＞
４値化処理部４（１８１５）は、注目画素以前の画素の４値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部４（１８０１）で算出された閾値とを比較し、４値化処理を行う。
【０４３５】
Ｅｒ（ｎ−１，ｍ）は、後述する誤差分配部４（１８１９）から出力された、注目画素の１画素前の４値化結果から算出された誤差データである。
【０４３６】
誤差データ（Ｅｄ）格納用メモリ（１８１６）には、注目画素以前の画素の４値化誤差のうち、Ｅｄ（ｎ，ｍ−１）に関する誤差データが格納されている。
【０４３７】
誤差データＥｒ及びＥｄに関しては、後述する。
【０４３８】
４値化処理部４（１８１５）には、図１８に示されているように、以下の３つのデータが入力される。
【０４３９】
すなわち、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）、Ｅｄ（ｎ，ｍ−１）とが４値化処理部４（１８１５）に入力される。ここで、Ｄｉｎ（ｎ，ｍ）は、注目画素の入力データである。また、Ｅｒ（ｎ−１，ｍ）は、注目画素のラインの注目画素の１画素前の４値化処理誤差データである。また、Ｅｄ（ｎ，ｍ−１）は、注目画素の１ライン前の注目画素と同じ位置の画素の４値化処理誤差データである。
【０４４０】
加算回路４３（１８１７）は、上記３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【０４４１】
次に、４値化処理部４（１８１５）の比較回路４１（１８１８）は、Ｄ（ｎ，ｍ）と、閾値ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）、との比較を行う。そして、比較回路４１（１８１８）は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、Ｎ値化結果Ｎ（ｎ，ｍ）の出力を行う。
【０４４２】
比較回路４１（１８１８）は、以下のようにして、Ｎ（ｎ，ｍ）について判断を行う。
【０４４３】
すなわち、Ｄ（ｎ，ｍ）≦ＳＬ＿Ｌｏ（ｎ，ｍ）の場合、比較回路４１（１８１８）は、出力濃度１の出力を行うと判断し、Ｎ（ｎ，ｍ）＝０と判断する。
【０４４４】
また、ＳＬ＿Ｌｏ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｍｄ（ｎ，ｍ）の場合、比較回路４１（１８１８）は、出力濃度２の出力を行うと判断し、Ｎ（ｎ，ｍ）＝８５と判断する。
【０４４５】
また、ＳＬ＿Ｍｄ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、比較回路４１（１８１８）は、出力濃度３の出力を行うと判断し、Ｎ（ｎ，ｍ）＝１７０と判断する。
【０４４６】
また、Ｄ（ｎ，ｍ）＞ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、比較回路４１（１８１８）は、出力濃度４の出力を行うと判断し、Ｎ（ｎ，ｍ）＝２５５と判断する。
【０４４７】
比較回路４１（１８１８）により出力された注目画素の４値化結果Ｎ（ｎ，ｍ）は、４値化結果格納用メモリ（１８０２）と、閾値算出部４（１８０１）の乗算回路４４（１８１１）にそれぞれ入力される。
【０４４８】
４値化結果格納用メモリ（１８０２）に格納されたデータは、４値化処理が終了したラインの次のラインの４値化処理時の閾値算出に用いられる。
【０４４９】
閾値算出部４（１８０１）の乗算回路４４（１８１１）に入力されたデータは、４値化処理が終了した画素の次の画素の４値化処理時の閾値算出に用いられる。
【０４５０】
＜誤差分配部４（１８１９）＞
誤差分配部４（１８１９）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、４値化処理部４（１８１５）によって算出された注目画素のＮ（ｎ，ｍ）との差を４値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【０４５１】
減算回路４１（１８２０）は、注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）と、４値化処理部４（１８１５）によって算出された注目画素のＮ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【０４５２】
誤差分配部４（１８１９）が実行する処理では、図１５のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０４５３】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素のラインの１ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
【０４５４】
このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ一の画素の２箇所に対して、１／２ずつ、誤差データが分配される。
【０４５５】
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）の算出は、除算回路４２（１８２３）によって行われる。
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）の算出は、除算回路４３（１８２４）によって行われる。
【０４５６】
ここで、誤差算出用係数１（１８２１）には、４値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数が記憶されている。４値化誤差であるＥ（ｎ，ｍ）からＥｒ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数１（１８２１）から読み出されて、除算回路４２（１８２３）に入力される。
【０４５７】
また、誤差算出用係数２（１８２２）には、４値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数が記憶されている。４値化誤差であるＥ（ｎ，ｍ）からＥｄ（ｎ，ｍ）が算出される際の係数は、誤差算出用係数２（１８２２）から読み出されて、除算回路４３（１８２４）に入力される。
【０４５８】
（ｎ，ｍ）の注目画素の１ライン下の注目画素と同じ位置の画素へ分配される誤差データであるＥｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ（１８１６）に入力される。
（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データであるＥｒ（ｎ，ｍ）は、４値化処理部４（１８１５）の加算回路４３（１８１７）に入力される。
【０４５９】
誤差データ（Ｅｄ）格納用メモリ（１８１６）に格納された誤差データ（Ｅｄ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素のラインの次のラインの４値化処理時の４値化処理部４（１８１５）での誤差補正に用いられる。
【０４６０】
４値化処理部４（１８１５）の加算回路４３（１８１７）に入力された誤差データ（Ｅｒ（ｎ，ｍ））は、（ｎ，ｍ）の注目画素の次の画素の４値化処理時の４値化処理部４（１８１５）での誤差補正に用いられる。
【０４６１】
＜従来技術における問題点＞
上記本例のような、平均濃度保存法の処理結果を１クロックに付き、１画素ずつ出力させるためには、閾値算出処理、Ｎ値化処理、誤差分配処理の全ての処理を１クロック以内で完了させる必要がある。
【０４６２】
現状では、閾値算出処理時の乗算や加算、除算、誤差分配処理時の減算や除算などを、順次行っていく必要がある。
【０４６３】
また、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、これまで以上に演算の負荷が大きくなってきている。
【０４６４】
その為、早い周波数での動作を行おうとした場合、１クロック以内では、各種演算処理が完了しないため、高速動作が出来ないという問題が起きている。
【０４６５】
そこで、第３の実施形態では以下のような処理を行う。
【０４６６】
注目画素を処理する際の閾値算出時の加重演算に関して、下記のような処理を行う。
【０４６７】
注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の１画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理を行う。
【０４６８】
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷を軽減する。
【０４６９】
注目画素に対して１画素前の画素の係数との乗算及び除算に関しては、２画素前の画素を処理するタイミングで、１画素前の処理結果が「２５５」、「１７０」、「８５」、「０」の各場合を想定して、事前に、演算が行われる。そして、１画素前の４値化結果が出た時点で、上記の演算結果が選択されて、後の処理に用いられる。
【０４７０】
つまり、１画素前の画素の係数との乗算及び除算に関しては、予め１画素前の４値化結果の全ての出力を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷を軽減する。
【０４７１】
次に、第３の実施形態に関して、詳細な説明を行う。
【０４７２】
第３の実施形態における平均濃度保存法を実現するハードウェアは、図１９に示されている。
【０４７３】
＜閾値算出部５１（１９０１）＞
ｍ−１のラインに関しては、既に４値化処理が完了していて、４値の画像データが存在する。
【０４７４】
それらの４値化結果データは、４値化結果格納用メモリ（１９０２）に格納されている。
【０４７５】
閾値算出部５１（１９０１）は、注目画素以前のすでに４値化処理の終わった画素の４値化結果に対する加重演算を行うことで、特に注目画素より前のラインに関する加重演算を行う。
【０４７６】
この場合、従来技術に係る処理では、加重演算を行う場合、メモリ等に予め加重係数を記憶させておき、その加重係数と４値化結果の乗算を行う。
【０４７７】
しかし、本実施形態では、図１６のような加重係数が用いられるので、加重係数が「１」の画素の乗算に関しては、４値化結果の値がそのまま次の処理の入力として出力される。そして、加重係数が「２」の画素の乗算に関しては、１ビットシフトすることにより「２」を掛けた結果と同じ値が、次の処理の入力として出力される。
【０４７８】
これによって、複雑な乗算回路を準備する必要が無く、演算の付加も軽くなることにより、処理の高速化が実現できる。
【０４７９】
具体的には、下記のような処理が行われる。
【０４８０】
（ｎ−１，ｍ−１）の閾値算出用加重係数１は、「１」なので、そのまま次の加算回路５１（１９０８）へ入力する。
（ｎ，ｍ−１）の閾値算出用加重係数２は、「２」なので、ビットシフト５１（１９０４）により、１ビットシフトシフトを行い、次の加算回路５１（１９０８）へ入力する。
（ｎ＋１，ｍ−１）の閾値算出用加重係数１は、「１」なので、そのまま次の加算回路５１（１９０８）へ入力する。
【０４８１】
加算回路５１（１９０８）は、上記各入力値の加算を行い、注目画素より前のラインの各画素の係数との乗算結果の和Ｓｓｕｍ＿Ｌを算出する。
【０４８２】
閾値算出用加重係数の和（１９０３）には、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ＋１，ｍ−１）、（ｎ−１，ｍ）の加重係数の和が記憶されている。
【０４８３】
除算回路５１（１９１０）は、加算回路５１（１９０８）から出力される注目画素より前のラインの各画素の係数との乗算結果の和Ｓｓｕｍ＿Ｌを、閾値算出用加重係数の和（１９０３）に記憶されている値で割る。そして、除算回路５１（１９１０）は、この演算により、注目画素より１ライン前の注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）の算出を行う。
【０４８４】
＜閾値算出部５２（１９１２）＞
閾値算出部５２（１９１２）は、注目画素以前のすでに４値化処理の終わった画素の４値化結果に対する係数との乗算及び除算を行うことで、特に注目画素１画素前の係数との乗算及び除算を行う。
【０４８５】
閾値算出部５２（１９１２）は、注目画素の１画素前の４値化処理が終了する前に、注目画素の１画素前の４値化処理結果が、「０」、「８５」、「１７０」、「２５５」の各場合を想定して、事前に、予め注目画素の１画素前の係数との乗算及び除算を行う。
【０４８６】
本実施形態では、注目画素の１画素前の４値化処理結果が、出力濃度２、つまり「８５」の場合の注目画素の１画素前の係数との乗算及び除算結果を、ＳＬ＿Ａ（ｎ，ｍ）とする。
【０４８７】
本実施形態では、注目画素の１画素前の４値化処理結果が、出力濃度３、つまり「１７０」の場合の注目画素の１画素前の係数との乗算及び除算結果を、ＳＬ＿Ｂ（ｎ，ｍ）とする。
【０４８８】
本実施形態では、注目画素の１画素前の４値化処理結果が、出力濃度４、つまり「２５５」の場合の注目画素の１画素前の係数との乗算及び除算結果を、ＳＬ＿Ｃ（ｎ，ｍ）とする。
【０４８９】
本実施形態では、注目画素の１画素前の２値化処理結果が、「０」の場合、閾値算出部５２（１９１２）で行われる他の出力濃度と同等な処理を行った場合の出力は、「０」となる。このため、特に演算回路を用いず、閾値算出部５３（１９２５）において、「０」の値（１９２６）が入力され、セレクタ５１（１９２７）によって選択される。
【０４９０】
＜閾値算出部５３（１９２５）＞
閾値算出部５３（１９２５）は、セレクタ５１（１９２７）と、加算回路５２（１９２８）、加算回路５３（１９２９）から構成されている。
【０４９１】
セレクタ５１（１９２７）は、複数の閾値ＳＬ＿Ａ（ｎ，ｍ）、ＳＬ＿Ｂ（ｎ，ｍ）、ＳＬ＿Ｃ（ｎ，ｍ）、もしくは「０」のどちらかの選択を行い、その値を加算回路５２（１９２８）に入力する。
【０４９２】
その場合、セレクタ５１（１９２７）は、１画素前の４値化結果Ｎが、「０」の場合は「０」を、「８５」の場合は「ＳＬ＿Ａ（ｎ，ｍ）」を、「１７０」の場合は「ＳＬ＿Ｂ（ｎ，ｍ）」を、「２５５」の場合は「ＳＬ＿Ｃ（ｎ，ｍ）」を、選択する。
【０４９３】
加算回路５２（１９２８）では、予め算出していた注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）と、セレクタ５１（１９２７）からの出力値の加算を行い、注目画素に対する閾値ＳＬ（ｎ，ｍ）の算出を行う。
【０４９４】
加算回路５３（１９２９）では、注目画素に対する閾値ＳＬ（ｎ，ｍ）に対して、複数の閾値生成用の係数（本実施形態の場合「α」と「−α」）をそれぞれ加算し、ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）の出力を行う。
【０４９５】
この場合、各閾値は、ＳＬ＿Ｌｏ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋（−α）、ＳＬ＿Ｍｄ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋αの値が出力される。
【０４９６】
＜４値化処理部５（１９３０）＞
４値化処理部５（１９３０）は、注目画素の画像データに対して、注目画素以前の画素の４値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部５３（１９２５）で算出された閾値とを比較し、４値化処理を行う。
【０４９７】
Ｅｒ（ｎ−１，ｍ）は、後述する誤差分配部５（１９３４）から出力された、注目画素の１画素前の４値化結果から算出された誤差データである。
【０４９８】
誤差データ（Ｅｄ）格納用メモリ（１９３１）には、注目画素以前の画素の４値化誤差のうち、Ｅｄ（ｎ，ｍ−１）に関する誤差データが格納されている。
【０４９９】
誤差データＥｒ及びＥｄに関しては、後述する。
【０５００】
４値化処理部５（１９３０）には、図１９に示されているように、以下の３つのデータが入力される。
【０５０１】
すなわち、Ｄｉｎ（ｎ，ｍ）と、Ｅｒ（ｎ−１，ｍ）、Ｅｄ（ｎ，ｍ−１）が、４値化処理部５（１９３０）に入力される。ここで、Ｄｉｎ（ｎ，ｍ）は、注目画素の入力データである。また、Ｅｒ（ｎ−１，ｍ）は、注目画素のラインの注目画素の１画素前の４値化処理誤差データである。また、Ｅｄ（ｎ，ｍ−１）は、注目画素の１ライン前の注目画素と同じ位置の画素の４値化処理誤差データである。
【０５０２】
加算回路５４（１９３２）は、上記３つのデータの加算を行い、注目画素の誤差補正後のデータＤ（ｎ，ｍ）の算出を行う。
【０５０３】
次に、４値化処理部５（１９３０）の比較回路５１（１９３３）は、Ｄ（ｎ，ｍ）と、閾値算出部５３（１９２５）によって算出された、閾値ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）、との比較を行う。そして、比較回路５１（１９３３）は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、Ｎ値化結果Ｎ（ｎ，ｍ）の出力を行う。
【０５０４】
比較回路５１（１９３３）は、以下のようにしてＮ（ｎ，ｍ）についての判断を行う。
【０５０５】
すなわち、Ｄ（ｎ，ｍ）≦ＳＬ＿Ｌｏ（ｎ，ｍ）の場合、比較回路５１（１９３３）は、出力濃度１の出力を行うと判断し、Ｎ（ｎ，ｍ）＝０と判断する。
また、ＳＬ＿Ｌｏ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｍｄ（ｎ，ｍ）の場合、比較回路５１（１９３３）は、出力濃度２の出力を行うと判断し、Ｎ（ｎ，ｍ）＝８５と判断する。
また、ＳＬ＿Ｍｄ（ｎ，ｍ）＜Ｄ（ｎ，ｍ）≦ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、比較回路５１（１９３３）は、出力濃度３の出力を行うと判断し、Ｎ（ｎ，ｍ）＝１７０と判断する。
また、Ｄ（ｎ，ｍ）＞ＳＬ＿Ｈｉ（ｎ，ｍ）の場合、比較回路５１（１９３３）は、出力濃度４の出力を行うと判断し、Ｎ（ｎ，ｍ）＝２５５と判断する。
【０５０６】
比較回路５１（１９３３）により出力された注目画素の４値化結果Ｎ（ｎ，ｍ）は、４値化結果格納用メモリ（１９０２）と、閾値算出部５３（１９２５）のセレクタ５１（１９２７）にそれぞれ入力される。
【０５０７】
４値化結果格納用メモリ（１９０２）に格納されたデータは、４値化処理が終了したラインの次のラインの４値化処理時の閾値算出に用いられる。
【０５０８】
閾値算出部５３（１９２５）のセレクタ５１（１９２７）に入力されたデータは、４値化処理が終了した画素の次の画素の４値化処理時の閾値算出に用いられる。
【０５０９】
＜誤差分配部５（１９３４）＞
誤差分配部５（１９３４）は、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、注目画素のＮ（ｎ，ｍ）との差を４値化誤差Ｅ（ｎ，ｍ）として、処理される画素に分配する。
【０５１０】
減算回路５１（１９３５）は、４値化処理部５（１９３０）によって算出された注目画素の誤差補正後のデータであるＤ（ｎ，ｍ）と、注目画素のＮ（ｎ，ｍ）との差であるＥ（ｎ，ｍ）の算出を行う。
【０５１１】
誤差分配部５（１９３４）が実行する処理では、図１５のように、注目画素に対して、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
【０５１２】
ここで、（ｎ，ｍ）の注目画素のラインの注目画素の１画素右へ分配される誤差データを、Ｅｒ（ｎ，ｍ）とし、（ｎ，ｍ）の注目画素のラインの１ライン下注目画素と同じ位置の画素へ分配される誤差データを、Ｅｄ（ｎ，ｍ）とする。そして、（ｎ，ｍ）の注目画素の右と下の各画素に、誤差データが分配される。
【０５１３】
このとき、注目画素のラインの注目画素の１画素右の画素と、注目画素の１ライン下の注目画素と同じ一の画素の２箇所に対して、１／２ずつ、誤差データが分配される。
【０５１４】
よって本実施形態では、演算処理の軽減の為、注目画素の誤差補正後のデータＤ（ｎ，ｍ）と、注目画素のＮ（ｎ，ｍ）との差Ｅ（ｎ，ｍ）の値を除算回路による処理が行われない。その代わり、ビットシフト（１９３６）によって、データＥ（ｎ，ｍ）の最下位１ビットを削除することにより、データＥ（ｎ，ｍ）を２で除算したのと同等の値が、Ｅｄ（ｎ，ｍ）およびＥｒ（ｎ，ｍ）として出力される。
【０５１５】
そして、Ｅｄ（ｎ，ｍ）は、誤差データ（Ｅｄ）格納用メモリ（１９３１）に入力される。
【０５１６】
また、Ｅｒ（ｎ，ｍ）は、４値化処理部５（１９３０）の加算回路５４（１９３２）に入力される。
【０５１７】
誤差データ（Ｅｄ）格納用メモリ（１９３１）に格納されたデータは、注目画素のラインの次のラインの４値化処理時の４値化処理部５（１９３０）での誤差補正に用いられる。
【０５１８】
４値化処理部５（１９３０）の加算回路５４（１９３２）に入力されたデータは、注目画素の次の画素の４値化処理時の４値化処理部５（１９３０）での誤差補正に用いられる。
【０５１９】
次に、第３の実施形態でのクロックと処理のタイミングに関して、詳細な説明を行う。
【０５２０】
具体的には、図２０を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０５２１】
クロックのエッジ５の立ち上がりで注目画素の４値化を行う際には、図２０に示されている処理が行われる。
【０５２２】
図１９の閾値算出部５１（１９０１）における、注目画素より１ライン前の注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）の算出は、エッジ１から開始され、エッジ４にて処理が完了する。
【０５２３】
具体的には、クロックのエッジ１によって、４値化結果格納用メモリ（１９０２）から、注目画素の前のラインの４値化結果データの入力が行われる。
【０５２４】
その後、図１９のビットシフト５１（１９０４）によって係数との乗算と同様の処理が実行され、その結果は、クロックのエッジ２のタイミングで、それぞれＦＦ５１（１９０５）、ＦＦ５２（１９０６）、ＦＦ５３（１９０７）によって叩かれる。
【０５２５】
ＦＦ５１（１９０５）、ＦＦ５２（１９０６）、ＦＦ５３（１９０７）によって叩かれたデータは、図１９の加算回路５１（１９０８）に入力され、Ｓｓｕｍ＿Ｌが算出される。
【０５２６】
Ｓｓｕｍ＿Ｌのデータは、クロックのエッジ３のタイミングでＦＦ５４によって、叩かれる。
【０５２７】
ＦＦ５４（１９０９）によって叩かれたデータは、図１９の除算回路５１（１９１０）に入力され、注目画素より前のラインの注目画素に対する閾値ＳＬ＿Ｌ（ｎ，ｍ）が算出される。
【０５２８】
ＳＬ＿Ｌ（ｎ，ｍ）のデータは、クロックのエッジ４のタイミングでＦＦ５５（１９１１）によって、叩かれて閾値算出部５１（１９０１）から出力される。
【０５２９】
図１９の閾値算出部５２（１９１２）における、注目画素の１画素前の注目画素に対する各種閾値ＳＬ＿Ａ（ｎ，ｍ）、ＳＬ＿Ｂ（ｎ，ｍ）、ＳＬ＿Ｃ（ｎ，ｍ）、の算出は、エッジ４にて処理が完了する。
【０５３０】
具体的には、クロックのエッジ３のタイミングで、閾値算出部５２（１９１２）で必要となる各種データの入力が行われる。そして、ビットシフト５２（１９１６）、ビットシフト５３（１９１７）、ビットシフト５４（１９１８）、及び除算回路５２（１９１９）、除算回路５３（１９２０）、除算回路５４（１９２１）、の演算処理が実行される。そして、ＳＬ＿Ａ（ｎ，ｍ）、ＳＬ＿Ｂ（ｎ，ｍ）、ＳＬ＿Ｃ（ｎ，ｍ）の各値が算出される。
【０５３１】
ＳＬ＿Ａ（ｎ，ｍ）、ＳＬ＿Ｂ（ｎ，ｍ）、ＳＬ＿Ｃ（ｎ，ｍ）の各値は、クロックのエッジ４のタイミングで、ＦＦ５８（１９２２）、ＦＦ５８（１９２３）、ＦＦ５８（１９２４）によってそれぞれ叩かれて、閾値算出部５２（１９１２）から出力される。
【０５３２】
以降、説明を行う処理に関しては、クロックのエッジ４からエッジ５の１サイクルの間で実行される。
【０５３３】
セレクタ５１（１９２７）は、閾値ＳＬ＿Ａ（ｎ，ｍ）、ＳＬ＿Ｂ（ｎ，ｍ）、ＳＬ＿Ｃ（ｎ，ｍ）及び、注目画素の１画素前の２値化結果が「０」であると想定した、注目画素１画素前の注目画素に対する閾値「０」（１９２６）のうちのいずれかを選択する。上記のセレクタ５１（１９２７）による選択は、エッジ４のタイミングで出力される１画素前の４値化の処理結果に基づく。
【０５３４】
加算回路５２（１９２８）は、セレクタ５１（１９２７）に選択されたデータと、閾値算出部５３（１９２５）に入力された、ＳＬ＿Ｌ（ｎ，ｍ）を全て合計し、注目画素に対する閾値ＳＬ（ｎ，ｍ）が算出する。
【０５３５】
そして、加算回路５３（１９２９）は、注目画素に対する閾値ＳＬ（ｎ，ｍ）に対して、複数の閾値生成用の係数（本実施形態の場合「α」と「−α」）をそれぞれ加算し、ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）の出力を行う。
【０５３６】
この場合、各閾値として、ＳＬ＿Ｌｏ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋（−α）、ＳＬ＿Ｍｄ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）＝ＳＬ（ｎ，ｍ）＋αの値が出力される。
【０５３７】
また、それと同時に、図１９の４値化処理部５（１９３０）は、Ｄｉｎ（ｎ，ｍ）に対して、Ｅｒ（ｎ−１，ｍ）と、Ｅｄ（ｎ，ｍ−１）により、注目画素に対する誤差補正を行う。
【０５３８】
そして、比較回路５１（１９３３）は、Ｄ（ｎ，ｍ）と、閾値ＳＬ＿Ｌｏ（ｎ，ｍ）、ＳＬ＿Ｍｄ（ｎ，ｍ）、ＳＬ＿Ｈｉ（ｎ，ｍ）、との比較を行う。そして、比較回路５１（１９３３）は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、Ｎ値化結果Ｎ（ｎ，ｍ）の出力を行う。
【０５３９】
以上のように、平均濃度保存法を用いた多値の量子化に関しても、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の１画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
【０５４０】
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
【０５４１】
また、注目画素に対して注目画素の１画素前の画素の係数との乗算及び除算に関しては、注目画素の２画素前の画素を処理するタイミングで、注目画素の１画素前の処理結果の全てのパターンを想定して、事前に、演算が行われる。そして、注目画素の１画素前の量子化結果が出た時点で演算結果が選択されて後の処理に用いられる。
【０５４２】
つまり、注目画素の１画素前の画素の係数との乗算及び除算に関しては、予め注目画素の１画素前の量子化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
【０５４３】
また、閾値算出部５１、閾値算出部５２、誤差分配部５の処理のように、２のべき乗の除算や乗算の演算に関しては、演算回路を用意せずに、ビットシフトを用いることによって、演算の付加が軽減される。
【０５４４】
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することができる。
【０５４５】
上記の実施形態により、具体的には、例えば、１３０ｎｍプロセスのような、世代の古いプロセスのＡＳＩＣや、８０ｎｍや６５ｎｍのような最新のプロセスのＡＳＩＣでも、平均濃度保存法を実行することができる。
【０５４６】
また、上記実施形態により、例えば、６５ｎｍプロセスのＦＰＧＡ等、最新のプロセスのＦＰＧＡを用いて、平均濃度保存法を実行することができる。
【０５４７】
なお、上記で説明した発明に係る装置で実行される方法を、コンピュータに実行させるためのコンピュータプログラムとして、コンピュータで読取可能な記憶媒体に記録して用いても良い。
【０５４８】
＜第４の実施形態＞
第１、第２、第３の実施形態では、平均濃度保存法に関する実施形態を例としてあげた。第４の実施形態では、誤差拡散法に関しての、実施形態を例として詳細な説明を行なう。本明細書における、誤差拡散法を実現するハードウェアを、図２５に示す。
【０５４９】
＜誤差補正部２５１（２５０１）＞
以下では、ｍ−１のラインに関しては、既に２値化処理が完了していて、２値の画像データ及び、２値化誤差データが存在し、２値化誤差データは、２値化誤差格納用メモリ（２５０４）に格納されているものとして、第４の実施形態について説明する。
【０５５０】
誤差補正部２５１（２５０１）は、注目画素以前のすでに２値化処理の終わった画素の２値化誤差に対する加重演算を行う。なお、本発明において、注目画素とは、複数の画素のうちの特定画素を指す。また、本発明において、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
【０５５１】
以下で、図２５を元に、第４の実施形態について詳細な説明を行う。
【０５５２】
誤差補正用加重係数１（２５０５）には、メモリ等を用いて、（ｎ−２，ｍ−１）の加重係数が記憶されている。
誤差補正用加重係数２（２５０６）には、メモリ等を用いて、（ｎ−１，ｍ−１）の加重係数が記憶されている。
誤差補正用加重係数３（２５０７）には、メモリ等を用いて、（ｎ，ｍ−１）の加重係数が記憶されている。
【０５５３】
ここで、加重係数とは、後述する加重演算で用いられる係数である。誤差補正用加重係数の和（２５２２）には、メモリ等を用いて、（ｎ−２，ｍ−１）、（ｎ−１，ｍ−１）、（ｎ，ｍ−１）、（ｎ−２，ｍ）、（ｎ−１，ｍ）の加重係数の和が記憶されている。次に、乗算回路２５１（２５０８）は、２値化誤差格納用メモリ（２５０４）から、（ｎ−２，ｍ−１）の画素の２値化誤差データを受信し、２値化誤差データと、（ｎ−２，ｍ−１）の加重係数との乗算を行い出力する。また、乗算回路２５２（２５０９）は、２値化誤差格納用メモリ（２５０４）から、（ｎ−１，ｍ−１）の画素の２値化誤差データを受信し、２値化誤差データと、（ｎ−１，ｍ−１）の加重係数との乗算を行い出力する。また、乗算回路２５３（２５１０）は、２値化誤差格納用メモリ（２５０４）から、（ｎ，ｍ−１）の画素の２値化誤差データを受信し、２値化誤差データと、（ｎ，ｍ−１）の加重係数との乗算を行い出力する。
【０５５４】
次に、加算回路２５１（２５１４）は、ＦＦ２５１（２５１１）を経由して、乗算回路２５１（２５０８）の出力値を受信する。また、加算回路２５１（２５１４）は、ＦＦ２５２（２５１２）を経由して、乗算回路２５２（２５０９）の出力値を受信する。また、加算回路２５１（２５１４）は、ＦＦ２５３（２５１３）を経由して、乗算回路２５３（２５１０）の出力値を受信する。そして、加算回路２５１（２５１４）は、乗算回路２５１（２５０８）の出力値と、乗算回路２５２（２５０９）の出力値と、乗算回路２５３（２５１０）の出力値とを加算し、注目画素より前のラインの各画素の乗算結果の和（Ｅｓｕｍ＿Ｌ）を算出して出力する。
【０５５５】
前記注目画素より前のラインの各画素の乗算結果の和（Ｅｓｕｍ＿Ｌ）は、ＦＦ２５４（２５１５）を経由して、加算回路２５２（２５２１）へと入力される。加算回路２５２（２５１２）は、ＦＦ２５４（２５１５）を経由して、加算回路２５１（２５１４）の出力値を受信する。誤差補正用加重係数４（２５１６）には、メモリ等を用いて、（ｎ−２，ｍ）の加重係数が記憶されている。また、乗算回路２５４（２５１７）は、セレクタ２５１（２５１９）からの、（ｎ−２，ｍ）の画素の２値化誤差データを受信し、２値化誤差データと、（ｎ−２，ｍ−１）の加重係数との乗算を行い出力する。
【０５５６】
加算回路２５２（２５１２）は、ＦＦ２５５（２５１８）を経由して、乗算回路２５４（２５１７）の出力値を受信する。
【０５５７】
セレクタ２５１（２５１９）では、（ｎ−１，ｍ）の画素の２値化結果を想定した２つの誤差補正値の入力（Ｅｒ＿０，Ｅｒ＿２５５）を行う。そして、（ｎ−１，ｍ）の画素の２値化結果Ｂｉｎ（ｎ−１，ｍ）を元に、（ｎ−１，ｍ）の画素の２値化誤差Ｅｒ（ｎ−１，ｍ）の出力を行なう。
【０５５８】
セレクタ２５１（２５１９）では、２値化結果Ｂｉｎ（ｎ−１，ｍ）＝０の場合は、Ｅｒ＿０の値を２値化誤差Ｅｒ（ｎ−１，ｍ）として出力を行なう。また、２値化結果Ｂｉｎ（ｎ−１，ｍ）＝２５５の場合は、Ｅｒ＿２５５の値を２値化誤差Ｅｒ（ｎ−１，ｍ）として出力を行なう事となる。
【０５５９】
２値化誤差Ｅｒ（ｎ−１，ｍ）は、次に乗算回路２５５（２５２７）へと入力される。
【０５６０】
誤差補正用加重係数５（２５２５）には、メモリ等を用いて、（ｎ−１，ｍ）の加重係数が記憶されている。
【０５６１】
乗算回路２５５（２５２７）は、セレクタ２５１（２５１９）からの、（ｎ−１，ｍ）の画素の２値化誤差データを受信し、２値化誤差データと、（ｎ−１，ｍ）の加重係数との乗算を行い出力する。
【０５６２】
前記乗算回路２５５（２５２７）からの出力は、ＦＦ２５６（２５２０）を経由して、加算回路２５２（２５２１）へと入力される。
【０５６３】
加算回路２５２（２５１２）は、加算回路２５１（２５１４）からの出力と、乗算回路２５４（２５１７）及び、乗算回路２５５（２５２７）の出力値とを加算し、注目画素より前のライン及び、前の画素の各画素の乗算結果の和（Ｅｓｕｍ）を算出して出力する。
【０５６４】
次に、除算回路２５１（２５２３）は、加算回路２５２（２５１２）の出力値（Ｅｓｕｍ）と、誤差補正用加重係数の和（２５２２）に記憶されている値を受信する。そして、除算回路２５１（２５２３）は、Ｅｓｕｍを、誤差補正用加重係数の和（２５２２）に記憶されている値で割り、注目画素より前の注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）の算出を行い出力する。
【０５６５】
加算回路２５３（２５２４）は、前記除算回路２５１（２５２３）から出力される注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）と、注目画素のデータ入力値Ｄｉｎ（ｎ，ｍ）とを入力する。そして、注目画素のデータ入力値Ｄｉｎ（ｎ，ｍ）に対して、注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）を加算することにより、注目画素に対する２値化処理済の画素の誤差補正を行う事となる。
【０５６６】
加算回路２５３（２５２４）によって、誤差補正が行なわれた画像データＤｅｒ（ｎ，ｍ）は、誤差補正部２５０１から出力され、誤差算出部２５１（２５０２）と、２値化処理部２５１（２５０３）へと入力される事となる。
【０５６７】
また、２値化誤差Ｅｒ（ｎ−１，ｍ）は、次の画素を処理する際に、２画素前の２値化誤差データ値として使用されるために、乗算回路２５５（２５２７）へと入力される。また、次のラインを処理する際に、前のラインの２値化誤差データ値として使用されるために、２値化誤差格納用メモリ（２５０４）へと入力される。
【０５６８】
以上の演算が、誤差補正部２５１（２５０１）が行う加重演算である。
【０５６９】
＜誤差算出処理部２５１（２５０２）＞
２値化誤差算出は、従来では、注目画素の２値化処理を行う際に、１画素前の２値化処理結果と、誤差補正後の画像データを元に、注目画素の２値化処理を行うタイミングで、処理を行っていた。
【０５７０】
しかし、本実施例においては、注目画素の２値化を行なう際に、予め２値化結果を想定して、その時に算出される２値化誤差値を算出し、次の画素の２値化を行なう際に、注目画素の２値化結果を元に、誤差補正値の選択を行なう事とする。
【０５７１】
これによって、従来、誤差補正処理の前に誤差算出部で実施していた２値化誤差の算出のための計算負荷を、前の画素の処理中に行う事が可能となり、１サイクル内で行う処理の負荷分散が可能となる。
【０５７２】
２値化誤差算出処理は、図２５の誤差算出部２５１（２５０２）によって処理が行われる事となる。
【０５７３】
誤差算出部２５１（２５０２）には、前記誤差補正部２５１（２５０１）から、誤差補正処理後の画像データＤｅｒ（ｎ，ｍ）が入力される。そして、注目画素の２値化結果が「０」の場合と、「２５５」の場合の２つの場合を考慮して、それぞれの場合の誤差補正値（Ｅｒ＿０、Ｅｒ＿２５５）の出力を行なう。
【０５７４】
減算回路２５１（２５２６）では、出力値が「０」を想定した場合の２値化誤差の算出を行なう。
減算回路２５１（２５２６）で実施される減算は、下記のようになる。
Ｅｒ＿０（ｎ，ｍ）＝Ｄｅｒ（ｎ，ｍ）−０
減算回路２５２（２５２８）では、出力値が「２５５」を想定した場合の２値化誤差の算出を行なう。
減算回路２５２（２５２８）で実施される減算は、下記のようになる。
Ｅｒ＿２５５（ｎ，ｍ）＝Ｄｅｒ（ｎ，ｍ）−２５５
誤差算出部２５１（２５０２）から出力される、注目画素の２値化結果が「０」の場合を想定した誤差補正値Ｅｒ＿０及び、注目画素の２値化結果が「２５５」の場合を想定した誤差補正値Ｅｒ＿２５５は、以下に入力される。即ち、先に説明を行なった誤差補正部２５１（２５０１）に入力される。そして、次の画素を注目画素とした時の誤差補正処理に使用される事となる。
【０５７５】
以上の演算が、誤差算出部２５１（２５０２）が行う処理である。
【０５７６】
＜２値化処理部２５１（２５０３）＞
２値化処理部２５１（２５０３）は、注目画素の誤差補正後のデータＤｅｒ（ｎ，ｍ）と、予め設定された閾値ＳＬとを比較し、２値化処理を行う。
【０５７７】
２値化処理部２５１（２５０３）には、図２５に示されているように、注目画素の誤差補正後のデータＤｅｒ（ｎ，ｍ）と、予め設定された閾値ＳＬの２つのデータが入力される。
【０５７８】
２値化処理部２５１（２５０３）の比較回路２５１（２５２９）は、前記２つのデータの比較を行う。そして、比較回路２５１（２５２９）は、注目画素に対して、色を出力する（Ｂｉｎ（ｎ，ｍ）＝２５５）か、色を出力しない（Ｂｉｎ（ｎ，ｍ）＝０）かの判断を行い、２値化結果の出力を行う。
【０５７９】
比較回路２５１（２５２９）は、以下のようにして判断を行う。
【０５８０】
すなわち、Ｄｅｒ（ｎ，ｍ）≧ＳＬの場合、比較回路２５１（２５２９）は、色の出力を行うと判断し、Ｂｉｎ（ｎ，ｍ）＝２５５と判断する。一方、Ｄｅｒ（ｎ，ｍ）＜ＳＬの場合、比較回路２５１（２５２９）は、色の出力行わないと判断し、Ｂｉｎ（ｎ，ｍ）＝０と判断する。
【０５８１】
比較回路２５１（２５２９）により出力された注目画素の２値化結果であるＢｉｎ（ｎ，ｍ）は、プリンタ等の出力装置に送られるとともに、誤差補正部２５１（２５０１）のセレクタ２５１（２５１９）にそれぞれ入力される。
【０５８２】
次に、図２６を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
【０５８３】
クロックのエッジ４の立ち上がりで注目画素の２値化を行う際には、図２６に示されている処理が行われる。
【０５８４】
図２５の誤差補正部２５１（２５０１）における、注目画素より１ライン前の注目画素に対する誤差補正値Ｅｓｕｍ＿Ｌ（ｎ，ｍ）の算出は、エッジ１から開始され、エッジ３の前にて処理が完了する。
【０５８５】
具体的には、クロックのエッジ１によって、２値化誤差格納用メモリ（２５０４）から、注目画素の前のラインの２値化誤差データの入力が行われる。
【０５８６】
その後、図２５の乗算回路２５１（２５０８）、乗算回路２５２（２５０９）、乗算回路２５３（２５１０）、によって各画素の係数との乗算が実行される。そして、その乗算結果は、クロックのエッジ２のタイミングで、それぞれＦＦ２５１（２５１１）、ＦＦ２５２（２５１２）、ＦＦ２５３（２５１３）によって叩かれる。
【０５８７】
ＦＦ２５１（２５１１）、ＦＦ２５２（２５１２）、ＦＦ２５３（２５１３）によって叩かれたデータは、図２５の加算回路２５１（２５１４）に入力され、Ｅｓｕｍ＿Ｌ（ｎ，ｍ）が算出される。
【０５８８】
Ｅｓｕｍ＿Ｌ（ｎ，ｍ）のデータは、クロックのエッジ３のタイミングでＦＦ２５４（２５１５）によって、叩かれ、加算回路２５２（２５２１）に入力される。
【０５８９】
注目画素と、同じラインの誤差補正値に関しては、以下のように処理が行なわれる事となる。
【０５９０】
注目画素の１画素前の誤差補正値に関しては、エッジ３のタイミングで、図２５の誤差算出部２５１（２５０２）から出力される、注目画素の２値化結果が「０。」の場合を想定した誤差補正値Ｅｒ＿０及び、注目画素の２値化結果が「２５５」の場合を想定した誤差補正値Ｅｒ＿２５５が、誤差補正部２５１（２５０１）に入力される。
【０５９１】
また、同様にエッジ３のタイミングで、注目画素の１画素前の２値化処理結果が入力される。
【０５９２】
図２５の誤差補正部２５１（２５０１）内のセレクタ２５１（２５１９）によって、注目画素の１画素前の２値化処理結果を元に、注目画素の１画素前の誤差データが選択され、図２５の乗算回路２５５（２５２７）により、加重係数との乗算が実行される。
【０５９３】
前記乗算処理結果は、１画素前の誤差補正値として、図２５の加算回路２５２（２５２１）に入力される。
【０５９４】
注目画素の２画素前の誤差補正値に関しては、図２５の誤差補正部２５１（２５０１）内のセレクタ２５１（２５１９）からの２値化誤差データに対して、乗算回路２５４（２５１７。）により、加重係数との乗算が実行されエッジ３のタイミングで、２画素前の誤差補正値として、加算回路２５２（２５２１）に入力される。
【０５９５】
以降の処理に関しては、クロックのエッジ３からエッジ４の１サイクル以内で行う処理となる。
【０５９６】
図２５の加算回路２５２（２５２１）に入力された、各誤差補正値は、加算処理が行われた後、除算回路２５１（２５２３）に入力され、注目画素に対する誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）が算出される。
【０５９７】
前記誤差補正値Ｅｒｒｏｒ（ｎ，ｍ）は、図２５の加算回路２５３（２５２４）によって、入力された注目画素データＤｉｎ（ｎ，ｍ）との加算が行なわれ、誤差補正後のデータＤｅｒ（ｎ，ｍ）が算出される。
【０５９８】
前記誤差補正後のデータＤｅｒ（ｎ，ｍ）は、図２５の２値化処理部２５１（２５０３）によって、予め設定された閾値ＳＬとの比較が行なわれ、２値化データＢｉｎ（ｎ，ｍ。）が出力されるとともに、誤差算出部２５１（２５０２）によって、注目画素の２値化出力を想定した２値化誤差データ（Ｅｒ＿０，Ｅｒ＿２５５）の算出が行なわれる事となる。
【０５９９】
以上のように、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の１画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
【０６００】
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
【０６０１】
また、注目画素に対して１画素前の画素の２値化誤差の算出を行なう、減算、除算に関しては、１画素前の処理結果が「１」の場合と「０」の場合の両方を想定して、事前に、演算される。そして、１画素前の２値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
【０６０２】
つまり、１画素前の画素の減算、除算に関しては、予め１画素前の２値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
【０６０３】
これにより、誤差拡散法のハードウェアでの処理の、高速化を実現することが可能となる。
【０６０４】
以上のように、本実施例における装置の一態様は、以下となる。即ち、対象とする画素における画素データを、前記対象とする画素に対する閾値を用いてＮ（Ｎは２以上の整数）値化することで、前記対象とする画素におけるＮ値化結果を得るＮ値化手段を有する。また、前記Ｎ値化手段において前記対象とする画素のＮ値化結果を得る前に、
前記対象とする画素のＮ値化結果として考えられ得る全てのＮ値化結果（Ｎが２の場合は、０と１。Ｎが３の場合は、０と１と２。）を用いて、当該全てのＮ値化結果の一つ一つに対応する、前記対象とする画素の次の画素の閾値を算出する算出手段を有する。そして、前記Ｎ値化手段において前記対象とする画素のＮ値化結果が得られた後で、当該得られた前記対象とする画素におけるＮ値化結果に対応する閾値を、前記算出手段で算出された閾値の中から選択する。そして、当該選択された閾値を用いて前記次の画素のＮ値化を行う。
【０６０５】
以上のように、本実施例における装置の一態様は、以下となる。Ｎ値化手段によってＮ値化処理を行った結果、算出されるＮ値化誤差値を算出する誤差算出手段を有する。また、前記誤差算出手段から算出される誤差値を使用して、各画素データの値の補正を行ない、誤差補正後の画像データとして出力を行なう誤差補正手段を有する。
【０６０６】
前記誤差補正後の画像データと、予め設定されている閾値を用いてＮ（Ｎは２以上の整数）値化することで、前記各画素におけるＮ値化結果を得るＮ値化手段を有する。そして、前記誤差補正手段は、前記各画素より前に前記誤差算出手段で得られた複数の画素におけるＮ値化誤差値の夫々に対して係数を掛ける処理を行って、その総和を求めることで誤差補正値を算出する。さらに、前記複数の画素のうちの特定画素の画素データの前記Ｎ値化手段におけるＮ値化よりも、前記誤差補正手段における、前記特定画素の画素データにおけるＮ値化誤差値に対して係数を掛ける処理が後ではないことを特徴とする。
【０６０７】
また、前記Ｎ値化と同時に前記処理を前記誤差補正手段で行うために、事前に、前記誤差算出手段は、前記特定画素の画素データにおけるＮ値化誤差値を想定することもその特徴の一つである。
【０６０８】
あるいは、本実施例における装置の一態様は、以下となる。対象とする画素における画素データを、予め設定されている閾値を用いてＮ（Ｎは２以上の整数）値化することで、前記対象とする画素におけるＮ値化結果を得るＮ値化手段を有する。そして、前記Ｎ値化手段において前記対象とする画素のＮ値化結果を得る前に、前記対象とする画素のＮ値化結果として考えられ得る全てのＮ値化結果を用いて。当該全てのＮ値化結果の一つ一つに対応する、Ｎ値化誤差値を算出するＮ値化誤差算出手段とを有する。そして、前記Ｎ値化手段において前記対象とする画素のＮ値化結果が得られた後で、当該得られた前記対象とする画素におけるＮ値化結果に対応するＮ値化誤差値を、前記Ｎ値化誤差算出手段で算出されたＮ値化誤差値の中から選択する。そして、当該選択されたＮ値化誤差値を用いて前記次の画素のデータ値の補正を行う。
【符号の説明】
【０６０９】
４０１  閾値算出部
４１４  ２値化処理部
４１８  誤差分配部
【図１】
2010193420.tif 000003
【図２】
2010193420.tif 000004
【図３】
2010193420.tif 000005
【図４】
2010193420.tif 000006
【図５】
2010193420.tif 000007
【図６】
2010193420.tif 000008
【図７】
2010193420.tif 000009
【図８】
2010193420.tif 000010
【図９】
2010193420.tif 000011
【図１０】
2010193420.tif 000012
【図１１】
2010193420.tif 000013
【図１２】
2010193420.tif 000014
【図１３】
2010193420.tif 000015
【図１４】
2010193420.tif 000016
【図１５】
2010193420.tif 000017
【図１６】
2010193420.tif 000018
【図１７】
2010193420.tif 000019
【図１８】
2010193420.tif 000020
【図１９】
2010193420.tif 000021
【図２０】
2010193420.tif 000022
【図２１】
2010193420.tif 000023
【図２２】
2010193420.tif 000024
【図２３】
2010193420.tif 000025
【図２４】
2010193420.tif 000026
【図２５】
2010193420.tif 000027
【図２６】
2010193420.tif 000028