(57)【要約】【課題】  誤差拡散法により多階調の画像を記録する画像処理方法において、発生する濃度誤差値を格納するメモリ容量を低減するとともに、粒状性のよい画像処理結果を得ることを目的とする。【解決手段】  注目画素が位置する処理ラインと同ラインの未処理画素に拡散する誤差ｅｒｒ＿ｍのＭ画素分の誤差合計値をＭ画素毎に処理ライン誤差バッファＥｒｒＭ［］に格納し、注目画素が位置する処理ラインの次の処理ラインの未処理画素に拡散する誤差ｅｒｒ＿ｎのＮ画素分の誤差合計値をＮ画素毎にＥｒｒＮ［］に格納する。【選択図】  図６
2006014042.tif 000002
【特許請求の範囲】
【請求項１】
多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理装置において、
画素毎に、補正された画素値と所定の閾値とを比較する比較手段と、
前記比較手段での比較処理に基づいて生じる誤差値を記憶する誤差バッファと、
を有し、
前記誤差バッファは、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値をＭ画素単位で加算した総和値で記憶し、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値をＮ（Ｍ＜Ｎ）画素単位で加算した総和値で記憶することを特徴とする画像処理装置。
【請求項２】
前記注目画素が位置するラインと同一の走査ラインの未処理画素へは、前記誤差バッファに記憶された前記Ｍ画素単位の誤差値の総和値を所定の第１の比率で配分した誤差を拡散し、前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素へは、前記誤差バッファに記憶された前記Ｎ画素単位の誤差値の総和値を所定の第２の比率で配分した誤差を拡散する誤差拡散手段を有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理装置において、
画素毎に、補正された画素値と所定の閾値とを比較する比較手段と、
前記比較手段での比較処理に基づいて生じる誤差値を記憶する誤差バッファと、
を有し、
前記誤差バッファは、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値をＭ画素単位で加算した総和値で記憶し、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値をＮ（Ｍ＜Ｎ）画素単位で加算した総和の平均値で記憶することを特徴とする画像処理装置。
【請求項４】
前記注目画素が位置するラインと同一の走査ラインの未処理画素へは、前記誤差バッファに記憶された前記Ｍ画素単位の誤差値の総和値を所定の第１の比率で配分した誤差を拡散し、前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素へは、前記誤差バッファに記憶された前記Ｎ画素単位の誤差値の総和の平均値を所定の第２の比率で配分した誤差を拡散する誤差拡散手段を有することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記注目画素が位置するラインと同一の走査ライン上の未処理画素に拡散される誤差の総和値を算出する対象となるＭ画素は、画素の主走査方向の位置をＭで割った値の余りと、画素の副走査方向の位置をＭで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項１または３に記載の画像処理装置。
【請求項６】
前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素に拡散される誤差の総和値または平均値を算出する対象となるＮ画素は、画素の主走査方向の位置をＮで割った値の余りと、画素の副走査方向の位置をＮで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項１または請求項３に記載の画像処理装置。
【請求項７】
前記注目画素が位置するラインと同一の走査ライン上の未処理画素に拡散される誤差の総和値を算出する対象となるＭ画素は、画素の主走査方向の位置をＭで割った値の余りと、画素の副走査方向の位置に対応する乱数値をＭで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項１または請求項３に記載の画像処理装置。
【請求項８】
前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素に拡散される誤差の総和値または平均値を算出する対象となるＮ画素は、画素の主走査方向の位置をＮで割った値の余りと、画素の副走査方向の位置に対応する乱数値をＮで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項１または請求項３に記載の画像処理装置。
【請求項９】
多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理方法において、
画素毎に、補正された画素値と所定の閾値とを比較する比較工程と、
前記比較工程での比較処理に基づいて生じる誤差値を誤差バッファに記憶させる誤差値記憶工程と、
を有し、
前記誤差値記憶工程は、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値はＭ画素単位で加算した総和値で前記誤差バッファに記憶させ、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値はＮ（Ｍ＜Ｎ）画素単位で加算した総和値で前記誤差バッファに記憶させることを特徴とする画像処理方法。
【請求項１０】
前記注目画素が位置するラインと同一の走査ラインの未処理画素へは、前記誤差バッファに記憶された前記Ｍ画素単位の誤差値の総和値を所定の第１の比率で配分した誤差で拡散し、前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素へは、前記誤差バッファに記憶された前記Ｎ画素単位の誤差値の総和値を所定の第２の比率で配分した誤差を拡散する誤差拡散工程を有することを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理方法において、
画素毎に、補正された画素値と所定の閾値とを比較する比較工程と、
前記比較工程での比較処理に基づいて生じる誤差値を誤差バッファに記憶させる誤差値記憶工程と、
を有し、
前記誤差値記憶工程は、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値はＭ画素単位で加算した総和値で誤差バッファに記憶させ、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値はＮ（Ｍ＜Ｎ）画素単位で加算した総和の平均値で誤差バッファに記憶させることを特徴とする画像処理方法。
【請求項１２】
前記注目画素が位置するラインと同一の走査ラインの未処理画素へは、前記誤差バッファに記憶された前記Ｍ画素単位の誤差値の総和値を所定の第１の比率で配分した誤差を拡散し、前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素へは、前記誤差バッファに記憶された前記Ｎ画素単位の誤差値の総和の平均値を所定の第２の比率で配分した誤差を拡散する誤差拡散工程を有することを特徴とする請求項１１に記載の画像処理方法。
【請求項１３】
前記注目画素が位置するラインと同一の走査ライン上の未処理画素に拡散される誤差の総和値を算出する対象となるＭ画素は、画素の主走査方向の位置をＭで割った値の余りと、画素の副走査方向の位置をＭで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項９または１１に記載の画像処理方法。
【請求項１４】
前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素に拡散される誤差の総和値または平均値を算出する対象となるＮ画素は、画素の主走査方向の位置をＮで割った値の余りと、画素の副走査方向の位置をＮで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項９または請求項１１に記載の画像処理方法。
【請求項１５】
前記注目画素が位置するラインと同一の走査ライン上の未処理画素に拡散される誤差の総和値を算出する対象となるＭ画素は、画素の主走査方向の位置をＭで割った値の余りと、画素の副走査方向の位置に対応する乱数値をＭで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項９または請求項１１に記載の画像処理方法。
【請求項１６】
前記注目画素が位置するラインの次の走査ライン以降の各ライン上の未処理画素に拡散される誤差の総和値または平均値を算出する対象となるＮ画素は、画素の主走査方向の位置をＮで割った値の余りと、画素の副走査方向の位置に対応する乱数値をＮで割った値の余りとが等しくなる画素位置からの連続した画素であることを特徴とする請求項９または請求項１１に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル階調画像から疑似中間調画像を作成する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
従来から、写真のような連続階調を持つ画像の印刷や表示は、微細なドットの大小に置き換えるか、微細なドットの密度を変えることにより表現している。特に、デジタル階調画像を２値またはデジタル階調画像の階調レベルよりも小さい多値の擬似中間調画像に変換する代表的なハーフトーン手法として、ディザ法と誤差拡散法の２つの処理方法が上げられる。
【０００３】
ディザ法の基本的な概念は、デジタル階調画像を構成する各画素の画素値（濃度値）を微細なドットの大小に置き換えて表現を行うものである。ディザ法は、ある大きさのマトリクスの各構成要素に規則的なパターンで並べられた閾値が埋め込まれているディザマトリクスに、デジタル階調画像を入力し、元画像上で繰り返し使用することで、入力画素ごとに対応する閾値と比較し、ディザマトリクスの各構成要素に対応する位置に存在する閾値と、当該閾値の配置位置に対応する位置に存在するデジタル階調画像の各画素の画素値を比較する。比較の結果、デジタル階調画像の入力画素値が閾値よりも大きい時にドットをＯＮとするための値を出力することでハーフトーン画像（疑似中間調画像）を生成する方法である。
【０００４】
このディザ法では、出力画像の階調性を良くするためにはディザマトリクスサイズを大きくする必要があり、逆に高分解能を得るためにはディザマトリクスを小さくしなければならない。
【０００５】
一方、誤差拡散法の基本的な概念は、微小なドットの密度を変えることにより表現を行うものである。誤差拡散法は、入力画素値と閾値との比較による２値化を行った際に生ずる誤差を所定の割合で主走査方向・副走査方向の隣接画素に拡散し、画像誤差の低減を行う方法である。
【０００６】
誤差拡散法は出力のためのドットをランダムに配置し、その密度によって階調を表現するため、画像を劣化させるモアレの発生を考慮する必要性がなく、階調性と高分解能を両立することが可能な手法である。なお、従来の誤差拡散法の具体的な処理手順については、後述する実施例の中で詳細に説明する。
【０００７】
通常、誤差拡散法では、階調性と高分解能を両立できるが、処理画素に対応する閾値と２値化を行い、発生した誤差を主走査方向及び副走査方向に存在する周囲の未処理画素に拡散するため、発生した誤差を記憶しておくために最低でも２ライン分の誤差バッファ（誤差メモリ）が必要であった。つまり、処理対象画素が存在しているラインと、当該ラインに隣接するラインの２ラインである。
【０００８】
このような誤差拡散法に関して、従来では、誤差データのビット数を入力された多値画像データに対応付けられた画像の品位に関する記録モードに応じて制限して誤差メモリに格納することにより、誤差メモリの容量を低減する方法が開示されている。（例えば、特許文献１参照）
【特許文献１】特開平２００３−２５９１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、近年、画像処理速度の高速化、印字ドットの微細化、画像データサイズの増加に伴い、入力画像データを保持するメモリや誤差バッファにさらに大容量のメモリサイズが必要となってきている。この課題に対応するために大容量のメモリを用いると、製品のコストが増大することになる。特許文献１に開示された技術も誤差バッファの容量削減という目的に対しては有効であるが、ビット数削減及び拡張の制御が複雑となるという課題が生じていた。
【００１０】
本発明は、多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理装置において、複雑な制御を必要とせず、効果的に誤差バッファを削減可能な画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明は、多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理装置において、画素毎に、補正された画素値と所定の閾値とを比較する比較手段と、前記比較手段での比較処理に基づいて生じる誤差値を記憶する誤差バッファと、を有し、前記誤差バッファは、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値をＭ画素単位で加算した総和値で記憶し、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値をＮ（Ｍ＜Ｎ）画素単位で加算した総和値で記憶する。
【００１２】
また、本発明は、多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理装置において、画素毎に、補正された画素値と所定の閾値とを比較する比較手段と、前記比較手段での比較処理に基づいて生じる誤差値を記憶する誤差バッファと、を有し、前記誤差バッファは、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値をＭ画素単位で加算した総和値で記憶し、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値をＮ（Ｍ＜Ｎ）画素単位で加算した総和の平均値で記憶する。
【００１３】
また、本発明は、多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理方法において、画素毎に、補正された画素値と所定の閾値とを比較する比較工程と、前記比較工程での比較処理に基づいて生じる誤差値を誤差バッファに記憶させる誤差値記憶工程と、を有し、前記誤差値記憶工程は、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値はＭ画素単位で加算した総和値で前記誤差バッファに記憶させ、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値はＮ（Ｍ＜Ｎ）画素単位で加算した総和値で前記誤差バッファに記憶させる。
【００１４】
また、本発明は、多値画像データを誤差拡散法を用いて前記多値画像データよりも小さい値の画像データを生成する画像処理方法において、画素毎に、補正された画素値と所定の閾値とを比較する比較工程と、前記比較工程での比較処理に基づいて生じる誤差値を誤差バッファに記憶させる誤差値記憶工程と、を有し、前記誤差値記憶工程は、前記注目画素が位置するラインと同一の走査ラインへ拡散するための誤差値はＭ画素単位で加算した総和値で誤差バッファに記憶させ、前記注目画素が位置するラインの次の走査ライン以降の各ラインへ拡散するための誤差値はＮ（Ｍ＜Ｎ）画素単位で加算した総和の平均値で誤差バッファに記憶させる。
【発明の効果】
【００１５】
以上説明したように、本発明によれば、誤差拡散処理に必要なメモリ容量を大幅に低減することができる。また、条件によって誤差の総和、または平均をとる位置を変化させることにより、粒状性の良い画像を得ることが出来る。
【発明を実施するための最良の形態】
【００１６】
（実施例１）
以下、本発明の詳細な実施例について説明する。なお、本発明は、ＡＳＩＣなどのハードウェアによって誤差拡散処理を実現するものであっても、プログラムなどのソフトウェアによって誤差拡散処理を実現するものであってもよい。
【００１７】
また、以下の各実施例は入力された多値画像データを２値化する場合の誤差拡散処理を用いて説明を行うが、量子化処理は２値化に限らず、入力された多値画像データの階調レベルよりも小さい多値データに量子化する、いわゆる多値誤差拡散処理においても適用可能である。
【００１８】
実施例１では、誤差分配手段によって分配された同一走査ラインへ拡散される２値化誤差は２画素単位で誤差の総和を誤差バッファに記憶する。また、次走査ラインへ拡散される２値化誤差は４画素単位で誤差の総和を誤差バッファに記憶する。そして、同一走査ライン上の未処理画素へは記憶されている２画素単位の誤差の総和から所定の割合で誤差を拡散し、次処理ライン以降の各ライン上の未処理画素へは記憶されている４画素単位の誤差の総和から所定の割合で誤差を拡散する方法の例を示す。
【００１９】
以下、主走査方向及び副走査方向に並べられた多値の画素によって構成される入力画像に対して、誤差拡散処理を行う注目画素が存在するラインと同一の走査ラインを処理ライン（誤差拡散処理対象であるライン）、当該処理ラインの次に誤差拡散処理が実行される走査ラインを次処理ライン（次に処理されるライン）と示す。
【００２０】
図１は従来の誤差拡散処理の概要を示すフローチャートである。図中のｘ（０〜）、ｙ（０〜）は処理ラインを構成する１画素単位に割り当てられた座標番号である。また、Ｉｎ［ｘ，ｙ］は注目画素（座標値Ｘ、Ｙ）の画素値である。
【００２１】
図１の処理について説明を行う。なお、図１の処理は、誤差拡散処理プログラムを制御するＣＰＵなどによって実行されるものとするが、誤差拡散処理を実行する手段については、プログラムによる処理以外の構成、例えば、ハードウェアによって構成された論理回路などであってもよい。
まず、ステップＳ１０１の処理により、誤差拡散処理を実行するプログラムに注目画素の画素値が入力される。
【００２２】
ステップＳ１０２では、前処理ラインで発生し、誤差バッファに記憶されている誤差の配列Ｅｒｒ［（Ｙ＋１）％２］［Ｘ］から補正値ｃｒｔ１（前処理ラインから注目画素に拡散される誤差値の合計値）を算出する。
【００２３】
ステップＳ１０３では、注目画素が配置されているラインの画素のうち、既に誤差拡散処理が実行された画素の誤差を記憶されている誤差バッファＥＲＲ［Ｙ％２］［Ｘ］から補正値ｃｒｔ２（処理ラインから注目画素に拡散される誤差値の合計）を算出する。これは、例えば図２に示すような割合で注目画素（※で示した画素）で発生した誤差値を注目画素の周囲の画素に拡散する場合、図３に示す前処理ラインで発生した誤差列と処理ラインで発生した誤差列から注目画素の画素値に加算する補正値ｃｒｔ１、ｃｒｔ２を算出する。
【００２４】
ｃｒｔ１は前処理ラインで発生した誤差値Ｅ１ｘ−１、Ｅ１ｘ、Ｅ１ｘ＋１から図２の誤差を拡散する割合により
（式１）
ｃｒｔ１＝１／８＊Ｅ１ｘ−１＋２／８＊Ｅ１ｘ＋１／８＊Ｅ１ｘ＋１
で算出できる。
【００２５】
また、Ｃｒｔ２は同様に処理ラインで発生した誤差値Ｅ２ｘ−１から
（式２）
ｃｒｔ２＝４／８＊Ｅ２ｘ−１
で算出することが出来る。
【００２６】
続いて、ステップＳ１０４でｃｒｔ１，ｃｒｔ２から注目画素に対する補正値Ｃｏｒｒｅｃｔ＝ｃｒｔ１＋ｃｒｔ２を算出する。
【００２７】
続いて、ステップＳ１０５において入力画素値に補正値を加えた値（Ｉｎ＋Ｃｏｒｒｅｃｔ）と注目画素位置に対応する予め定められた量子化閾値とを比較し、注目画素位置のドットのＯＮ、ＯＦＦを決定する。
【００２８】
入力画素値に補正値を加えた値が閾値よりも大きい場合はステップＳ１０６の処理により注目画素位置に対応するドットはＯＮ（Ｏｕｔ［ｘ，ｙ］＝２５５）とする。
【００２９】
また、入力画素値に補正値を加えた値が閾値以下の場合はステップＳ１０７の処理により注目画素位置に対応するドットはＯＦＦ（Ｏｕｔ［ｘ，ｙ］＝０）とする。
【００３０】
次に、ステップＳ１０８で濃度誤差値ｅｒｒが算出される。濃度誤差値は入力画素値に補正値を加えた値から出力値を減算することにより算出される（（Ｉｎ＋Ｃｏｒｒｅｃｔ）−Ｏｕｔ［ｘ，ｙ］）。この濃度誤差値は処理ラインで発生した誤差の誤差バッファＥｒｒ［Ｙ％２］［Ｘ］に格納され、１画素分の量子化処理が終了する。これが従来から知られている誤差拡散法の一般的な処理手順である。
【００３１】
一方、図４は本実施例の誤差拡散処理の概要を示すフローチャートである。以下、このフローチャートを用いて本発明の実施例を説明する。
【００３２】
まず、図４の処理を開始する。図４の処理は、誤差拡散処理プログラムを制御するＣＰＵなどによって実行されるものとするが、誤差拡散処理を実行する手段については、プログラムによる処理以外の構成、例えば、ハードウェアによって構成された論理回路などであってもよい。
【００３３】
まず、ステップＳ４０１の処理により誤差拡散処理を実行するプログラムに注目画素の画素値が入力される。
【００３４】
次に、ステップＳ４０２では、処理ラインの各画素で発生した誤差のうち、Ｍ画素分の合計誤差値を格納した誤差バッファＥｒｒＭ［］からｃｒｔ１を算出する。
【００３５】
次に、ステップＳ４０３では前処理ラインの各画素で発生した誤差のうち、Ｎ画素分の合計誤差値を格納した誤差バッファＥｒｒＮ［］からｃｒｔ２を算出する。算出に関する詳細な説明は後述する。
【００３６】
そして、ステップＳ４０４でｃｒｔ１，ｃｒｔ２から注目画素に対する補正値Ｃｏｒｒｅｃｔ＝ｃｒｔ１＋ｃｒｔ２を算出する。
【００３７】
次に、ステップＳ４０５において入力画素値に補正値を加えた値（Ｉｎ［ｘ，ｙ］＋Ｃｏｒｒｅｃｔ）と注目画素位置に対応する予め定められた量子化閾値とを比較し、注目画素位置のドットのＯＮ、ＯＦＦを決定する。
【００３８】
入力画素値に補正値を加えた値が閾値よりも大きい場合は、ステップＳ４０６の処理により注目画素位置に対応するドットはＯＮ（Ｏｕｔ［ｘ，ｙ］＝２５５）とする。
【００３９】
また、入力画素値に補正値を加えた値が閾値以下の場合は、ステップＳ４０７の処理により、注目画素位置に対応するドットはＯＦＦ（Ｏｕｔ［ｘ，ｙ］＝０）とする。
【００４０】
次に、ステップＳ４０８で濃度誤差値が算出される。濃度誤差値ｅｒｒは入力画素値に補正値を加えた値から出力値を減算することにより算出される（（Ｉｎ＋Ｃｏｒｒｅｃｔ）−Ｏｕｔ［ｘ，ｙ］）。
【００４１】
ステップＳ４０８において算出された濃度誤差値ｅｒｒを例えば図５に示すような所定の割合で、処理ラインに拡散する濃度誤差値ｅｒｒ＿ｍと次処理ラインに拡散する濃度誤差値ｅｒｒ＿ｎに分割する。図５は、誤差拡散マトリクスを示したものである。
【００４２】
続いて、図６に示すようにステップＳ４０９の処理を実行する。図６は、あるラインを誤差拡散処理した場合の誤差の拡散方法と、拡散される誤差を格納する誤差バッファを開示したものである。
【００４３】
図６（ａ）は、入力されたライン（この図では例として１ラインを８画素で示している）の各画素Ｉｎ［ｘ，ｙ］の値に補正値を加えた値に対して、所定の閾値で量子化した際の誤差を図５で示した誤差拡散マトリクスに従って拡散した場合の各誤差値を示したものである。
【００４４】
そして、これらの各誤差値は、図６（ｂ）に示した誤差バッファにそれぞれ記憶される。このとき、処理ラインに拡散する誤差ｅｒｒ＿ｍのＭ画素分（本実施例では２画素分）の誤差合計値をＭ画素毎に処理ライン誤差バッファＥｒｒＭ［］に格納する。
【００４５】
また、ステップＳ４１０の処理において、次処理ラインに拡散する誤差ｅｒｒ＿ｎのＮ画素分（本実施例では４画素分）の誤差合計値をＮ画素毎にＥｒｒＮ［］に格納する。そして、これらの誤差バッファに格納されたＥｒｒＭ［］、ＥｒｒＮ［］から、前述したｃｒｔ１、ｃｒｔ２、Ｃｏｒｒｅｃｔを算出する。
【００４６】
本実施例では、例えば同一走査ライン上の未処理画素へは２画素単位の誤差の総和から図７（ａ）の割合で誤差を拡散する。また、次処理ラインの各未処理画素へは、４画素単位の誤差の総和から図７（ｂ）の割合で誤差を拡散するものとする。
【００４７】
図８に示したように、これらの割合で誤差を拡散する場合、処理ラインへの誤差を格納する誤差バッファＥｒｒＭ［］と次処理ラインへの誤差を格納する誤差バッファＥｒｒＮ［］とから、例えば処理ライン上の注目画素（図８の※で示した画素）に加算される処理ラインからの補正値ｃｒｔ１は
（式３）
ｃｒｔ１＝１／２＊ＥｒｒＭ［１］
で算出できる。
【００４８】
また、注目画素に加算される前処理ラインからの補正値ｃｒｔ２は、前のラインを処理した際に次処理ライン誤差バッファに格納した値から、
（式４）
ｃｒｔ２＝１／１６＊ＥｒｒＮ［０］＋３／１６＊ＥｒｒＮ［１］
で算出される。
【００４９】
これらの算出された値を用いて、ステップＳ４０４で注目画素に対する補正値ｃｒｔ１、ｃｒｔ２からＣｏｒｒｅｃｔが算出される。
【００５０】
前記処理を行うことにより、本実施例では例えば１ラインの処理画素数が１００画素で、各画素で発生する誤差値が８ｂｉｔであるとすると、従来の方法では８ｂｉｔ×１００画素×２ライン＝１６００ｂｉｔの誤差バッファが必要であったのに対し、本実施例では８ｂｉｔ（処理ラインに拡散される誤差７ｂｉｔの２画素分の総和）×５０画素＋９ｂｉｔ（次処理ラインに拡散される誤差７ｂｉｔの４画素分の総和）×２５画素＋１７ｂｉｔ（処理ラインへ拡散する誤差を格納するためのテンポラリメモリ８ｂｉｔ＋次処理ラインへ拡散する誤差を格納するためのテンポラリメモリ９ｂｉｔ）＝６４２ｂｉｔで済む。つまり、従来の誤差バッファと比較して半分以下の容量があれば処理が可能となる。
【００５１】
また、Ｍ、Ｎの値を出力画質の高低に応じて適時選択することにより、誤差バッファの容量をさらに削減することができるとともに、格納された誤差値へのメモリアクセス回数も削減することができる。例えば、高画質での出力を望む場合は、誤差値を加算する対象とする画素数（Ｍ、Ｎ）の値を小さくとる。これは、複数の画素で発生した誤差を多くの画素分加算してしまうことによって、階調性が低下し、画像が鈍ってしまうためである。なお、Ｍ、Ｎの値に応じて、図７に示した誤差拡散の割合（比率）をチューニングすることによって、こうした画像劣化を抑えることも可能である。例えば、実験によって測定された値に基づいて、Ｍ、Ｎの組み合わせに対応する最適な誤差拡散比率を定義しておき、画質の高低に関する指示入力に応じて適宜選択することにより実現できるものである。
【００５２】
（実施例２）
以下、本発明に係る第２実施形態について説明する。なお、特別の記載が無い限り、本実施例の構成や処理などは実施例１と同様であるものとする。
【００５３】
本実施例では、誤差分配手段によって分配された、同一走査ラインへ拡散される２値化誤差は２画素単位の誤差の総和を誤差バッファに記憶する。この構成は上述した実施例１と同様であるが、本実施例では、次走査ラインへ拡散される２値化誤差は４画素単位の誤差の平均値を算出し、その平均値を誤差バッファに記憶するものである。
【００５４】
そして、同一走査ライン上の未処理画素へは誤差バッファに記憶されている２画素単位の誤差の総和から所定の割合で誤差を拡散する。また、次処理ライン以降の各ライン上の未処理画素へは前記誤差記憶手段に記憶されている４画素単位の誤差の平均から所定の割合で誤差を拡散するものである。
【００５５】
図９は本実施例の概要を示すフローチャートである。本実施例のステップで実施例１と異なる部分は、ステップＳ９０３のｃｒｔ２を算出する方法と、ステップＳ９１０からＳ９１２でＮ画素（本実施例では４画素）分の誤差の平均値を算出する部分であり、他のステップは同様の処理であるため説明を省略する。
【００５６】
ステップＳ９０８では、実施例１と同様に処理ラインに拡散する濃度誤差値ｅｒｒ＿ｍと次処理ラインに拡散する濃度誤差値ｅｒｒ＿ｎが算出される。
ステップＳ９０９では、処理ラインに拡散する誤差ｅｒｒ＿ｍのＭ画素分（本実施例では２画素分）の誤差合計値をＭ画素毎に処理ライン誤差バッファＥｒｒＭ［］に格納する。
【００５７】
続いて、ステップＳ９１０では、テンポラリバッファｔｍｐＮに前述のｅｒｒ＿ｎが画素毎に加算蓄積される。なお、テンポラリバッファｔｍｐＮは、平均値を算出するために一時的に誤差を格納するバッファである。
【００５８】
ステップＳ９１１において、画素のＸ座標値をＮで割った余りがＮ−１になった時、つまりｔｍｐＮにＮ画素分の次処理ラインに拡散する濃度誤差が蓄積された時に、ステップＳ９１２でＮ画素分の次処理ラインに拡散する濃度誤差の平均値（ｔｍｐＮ／Ｎ）を算出する。そして、算出された平均値を次処理ライン誤差バッファＥｒｒＮ［］に格納する。
【００５９】
本実施例ではＭ＝２、Ｎ＝４であるので、図１０に示すように処理ラインへの誤差を格納する誤差バッファＥｒｒＭ［］へは、各画素で発生する処理ラインへ拡散する濃度誤差値の２画素分の総和が２画素毎に格納され、次処理ラインへの誤差を格納する誤差バッファＥｒｒＮ［］へは、各画素で発生する次処理ラインへ拡散する濃度誤差値の４画素分の平均値が４画素毎に格納される。そして、この誤差バッファＥｒｒＭ［］、ＥｒｒＮ［］に格納された誤差値を用いてステップＳ９０２、Ｓ９０３でｃｒｔ１、ｃｒｔ２が算出される。
【００６０】
本実施例では、例えば同一走査ライン上の未処理画素へは２画素単位の誤差の総和から図１１（ａ）の割合で誤差を拡散する。また、次処理ラインへは、４画素単位の誤差の平均値から図１１（ｂ）の割合で誤差を拡散する。実施例１と異なっているのは、次処理ラインへの誤差を格納する誤差バッファＥｒｒＮ［］には、４画素分の平均値が格納されている点である。
【００６１】
また、本実施例では、ステップＳ９１２でＮ画素分の処理ラインに拡散する濃度誤差の平均値を算出した際に余りが発生した場合、図１１（ａ）のαの未処理画素にその余り分の誤差を拡散させる。なお、この余り分の誤差は処理ラインまたは次処理ラインの注目画素周辺の未処理画素に拡散すればよく、図１１（ａ）のαの部分に限られるものではない。
【００６２】
さて、前記の割合で誤差を拡散する場合、図１２に示す処理ラインへの誤差を格納する誤差バッファＥｒｒＭ［］と次処理ラインへの誤差を格納する誤差バッファＥｒｒＮ［］から、例えば処理ライン上の注目画素に拡散される処理ラインからの補正値ｃｒｔ１は
（式５）
ｃｒｔ１＝１／２＊ＥｒｒＭ［１］
で算出できる。
【００６３】
また、注目画素に拡散される前処理ラインからの補正値ｃｒｔ２は、前のラインを処理した際に次処理ライン誤差バッファに格納した値から、
（式６）
ｃｒｔ２＝１／８＊ＥｒｒＮ［０］＋３／８＊ＥｒｒＮ［１］
で算出される。よって、ステップＳ９０４の処理で注目画素に対する補正値ｃｒｔ１、ｃｒｔ２からＣｏｒｒｅｃｔが算出される。
【００６４】
前記処理を行うことにより、本実施例では例えば１ラインの処理画素数が１００画素で、各画素で発生する誤差値が８ｂｉｔであるとすると、従来の方法では８ｂｉｔ×１００画素×２ライン＝１６００ｂｉｔの誤差バッファが必要であったのに対し、本実施例では８ｂｉｔ（処理ラインに拡散される誤差７ｂｉｔの２画素分の総和）×５０画素＋７ｂｉｔ（次処理ラインに拡散される誤差７ｂｉｔの４画素分の平均値）×２５画素＋１７ｂｉｔ（処理ラインへ拡散する誤差を格納するためのテンポラリメモリ８ｂｉｔ＋次処理ラインへ拡散する誤差を格納するためのテンポラリメモリ９ｂｉｔ）＝５９２ｂｉｔと半分以下の誤差バッファを設ければ良い。そのため、実施例１と比較して、さらに誤差バッファの容量を大幅に削減することができる。
【００６５】
（実施例３）
以下、本発明に係る第３の実施例について説明する。なお、特別の記載が無い限り、本実施例の構成や処理などは実施例１と同様であるものとする。
【００６６】
実施例１または実施例２では、同一走査ライン上の未処理画素へは、図１３（ａ）の太枠で囲まれているように２画素単位で誤差の総和を算出し、この太枠で囲まれた２画素の位置から図７（ａ）に示されるような割合で前記２画素単位の誤差の総和が拡散されるように構成していた。
【００６７】
同様に、次走査ライン以降の各ライン上の未処理画素へは、図１３（ｂ）の太枠で囲まれているように４画素単位の誤差の総和もしくは平均値を算出し、この太枠で囲まれた４画素の位置から図７（ｂ）に示されるような割合で前記４画素単位の誤差の総和が拡散されるように構成していた。
【００６８】
本実施例においては、処理ライン上の未処理画素に拡散される誤差の総和を算出する対象となる２画素は、Ｘ（主走査方向の位置）％２＝Ｙ（ライン番号）％２の条件が成り立つ画素位置からの連続した２画素であり、次処理ライン上の未処理画素に拡散される誤差の総和を算出する対象となる４画素は、Ｘ（主走査方向の位置）％４＝Ｙ（ライン番号）％４の条件が成り立つ画素位置からの連続した４画素であるとする。ここで、記号％は剰余を表わしている。つまり、Ｘ％２＝Ｙ％２とは、ある画素位置において、Ｘを２で割った余りと、Ｙを２で割った余りが等しい、ということを意味している。そして、この条件を満たしている画素位置から連続する２画素を注目画素と同一処理ラインの未処理画素へ拡散する誤差の総和値とする対象となる画素とする。
【００６９】
よって、本実施例では、上記条件により、図１４（ａ）、（ｂ）の太枠で囲まれる２画素、または４画素が誤差の総和を算出する対象画素位置となる。
【００７０】
また、本実施例において、処理ライン上の未処理画素に拡散される誤差の総和を算出する対象となる２画素は、Ｘ（主走査方向の位置）％２＝Ｒ（乱数値）％２の条件が成り立つ画素位置からの連続した２画素であり、次処理ライン上の未処理画素に拡散される誤差の総和を算出する対象となる４画素は、Ｘ（主走査方向の位置）％４＝Ｒ（乱数値）％４の条件が成り立つ画素位置からの連続した４画素であるとすることも可能である。この場合は、ある画素位置（Ｘ、Ｙ）において、Ｙに対応して発生した乱数値ＲとＸのそれぞれを２または４で割った余りが等しい画素位置からの２画素または４画素を同一処理ラインまたは次処理ラインに拡散する誤差の総和値とする対象となる画素とする。
【００７１】
この場合、図１５（ａ）、（ｂ）の太枠で囲まれる２画素、または４画素が誤差の総和を算出する対象画素位置となる。ここで乱数値Ｒは、処理ラインの主走査方向の位置Ｘにおいて共通である。
【００７２】
なお、本実施例では、ラインの左端または右端において、誤差の総和、もしくは平均値を算出する対象とする画素数がＭ画素またはＮ画素以下になるが、この場合はＭ画素またはＮ画素以下の画素数の平均値をとり、他と同様の割合で誤差の拡散を行えばよい。
【００７３】
このように、実施例３では同一走査ライン上の未処理画素に拡散される誤差の総和を算出する対象とする連続するＭ画素、または、次処理ライン以降の未処理画素に拡散される誤差の総和、平均値を算出する対象とする連続するＮ画素を条件により変化させることにより、誤差の拡散が適度な不規則性を有するため、２値画像においてより粒状度のよい画像を得ることが出来る。
【００７４】
以上、実施例１から実施例３について説明したが、本発明はこれらの実施形態に限られるものではなく、その要旨を逸脱しない範囲で様々な形態による実施が可能である。例えば、実施例１、実施例２で誤差を拡散する割合として図２、図５、図７、図１１に示したマトリクスを用いることができる。また、誤差の総和、または平均値を算出する対象とする画素数をＭ＝２、Ｎ＝４としたが、本発明で使用する誤差を拡散する割合、あるいは誤差の総和、または平均値を算出する対象とする画素数は、それらの特定の値に限定されるものではない。用途に合わせて適切な値を選択すればよい。
【００７５】
また、本実施例では、２値化処理で発生する濃度誤差値を処理ラインと次処理ラインへ所定の割合で分配し、それぞれ誤差バッファにＭ画素分、Ｎ画素分の誤差を格納しているが、濃度誤差値を処理ラインと次処理ラインに分配せず、発生した濃度誤差値のＭ画素分の総和、または平均値を誤差バッファに格納するような形式でも可能である。
【００７６】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【００７７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成されることは言うまでもない。
【００７８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７９】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることが出来る。
【００８０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８２】
【図１】従来の誤差拡散処理を示すフローチャートである。
【図２】従来の誤差拡散処理において、誤差を拡散する割合を例示する図である。
【図３】従来の誤差拡散処理において、発生した誤差列を例示する図である。
【図４】実施例１における誤差拡散処理を示すフローチャートである。
【図５】実施例１における濃度誤差値を処理ラインと次処理ラインに拡散する割合を例示する図である。
【図６】実施例１における処理ライン、次処理ラインへの誤差を格納する方法を例示する図である。
【図７】実施例１における格納された処理ラインへの誤差を拡散する割合、格納された次処理ラインへの誤差を拡散する割合を例示する図である。
【図８】実施例１における注目画素に対する補正値の算出を説明する図である。
【図９】実施例２における誤差拡散処理を示すフローチャートである。
【図１０】実施例２における処理ライン、次処理ラインへの誤差を格納する方法を例示する図である。
【図１１】実施例２における格納された処理ラインへの誤差を拡散する割合、格納された次処理ラインへの誤差を拡散する割合を例示する図である。
【図１２】実施例２における注目画素に対する補正値の算出を説明する図である。
【図１３】実施例１または実施例２における誤差の総和を算出する画素単位を示す図である。
【図１４】実施例３において、ある条件での誤差の総和を算出する画素単位を示す図である。
【図１５】実施例３において、ある条件での誤差の総和を算出する画素単位を示す図である。
【図１】
2006014042.tif 000003
【図２】
2006014042.tif 000004
【図３】
2006014042.tif 000005
【図４】
2006014042.tif 000006
【図５】
2006014042.tif 000007
【図６】
2006014042.tif 000008
【図７】
2006014042.tif 000009
【図８】
2006014042.tif 000010
【図９】
2006014042.tif 000011
【図１０】
2006014042.tif 000012
【図１１】
2006014042.tif 000013
【図１２】
2006014042.tif 000014
【図１３】
2006014042.tif 000015
【図１４】
2006014042.tif 000016
【図１５】
2006014042.tif 000017