(57)【特許請求の範囲】
【請求項１】
複数の領域に分割された画像の領域ごと、画素ごとに誤差拡散処理を行う画像処理装置であって、
量子化済みの画素において発生した量子化誤差を保持する保持手段と、
注目画素を含む処理領域における前記注目画素の位置に応じて、前記注目画素の近傍の画素を量子化した際に発生した、前記保持手段が保持する量子化誤差を前記注目画素に拡散するための拡散係数セットを設定する設定手段と、
前記保持された量子化誤差と前記設定された拡散係数セットに基づき、前記近傍の画素それぞれに対応する量子化誤差と拡散係数を乗算し、それら乗算値と前記注目画素の画素値の総和を計算する計算手段と、
前記設定された拡散係数セットを参照する画素位置からの量子化誤差を拡散した前記注目画素を量子化する量子化手段とを有し、
前記設定手段は、前記注目画素が前記処理領域と前記処理領域の処理後に前記誤差拡散処理される未処理領域の境界の近傍に位置する場合、前記拡散係数セットとして、前記未処理領域から伝播されるべき量子化誤差の減少分を前記処理領域内における画素の量子化誤差を用いて補う拡散係数をもつ拡散係数セットを設定することを特徴とする画像処理装置。
【請求項２】
前記注目画素が前記境界の近傍に位置する場合、前記注目画素に対して量子化誤差を拡散すべき画素の一部は前記処理領域に存在しないことを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記処理領域において互いに異なる第一の方向と第二の方向が混在する走査が行われ、前記設定手段は、前記走査の方向と前記注目画素の位置に応じて前記拡散係数セットを設定することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
前記設定手段は、前記第一の方向の走査かつ前記注目画素が前記境界の近傍に位置しない場合に用いる第一の拡散係数セット、前記第一の方向の走査かつ前記注目画素が前記境界の近傍に位置する場合に用いる第二の拡散係数セット、前記第二の方向の走査かつ前記注目画素が前記境界の近傍に位置しない場合に用いる第三の拡散係数セット、前記第二の方向の走査かつ前記注目画素が前記境界の近傍に位置する場合に用いる第四の拡散係数セットの四つの拡散係数セットを保持することを特徴とする請求項3に記載された画像処理装置。
【請求項５】
前記保持手段は、前記処理領域の前記誤差拡散処理において量子化誤差を参照するために前記注目画素の量子化誤差を格納する第一のメモリ、および、前記未処理領域の前記誤差拡散処理において量子化誤差を参照するために、前記注目画素の位置に応じて前記注目画素の量子化誤差を格納する第二のメモリを備えることを特徴とする請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項６】
前記走査の方向は、前記領域の分割境界に直交する方向であることを特徴とする請求項3または請求項4に記載された画像処理装置。
【請求項７】
前記量子化手段は、前記注目画素が前記処理領域と、前記処理領域の前に前記誤差拡散処理された既処理領域の境界の近傍に位置する場合、前記第一および第二のメモリに保持された量子化誤差を参照することを特徴とする請求項5に記載された画像処理装置。
【請求項８】
前記保持手段は、前記注目画素が前記処理領域と前記未処理領域の境界の近傍に位置する場合、前記注目画素の量子化誤差を前記第二のメモリに格納することを特徴とする請求項5または請求項7に記載された画像処理装置。
【請求項９】
複数の領域に分割された画像の領域ごと、画素ごとに誤差拡散処理を行う画像処理方法であって、
量子化済みの画素において発生した量子化誤差を保持し、
注目画素を含む処理領域における前記走査の方向と前記注目画素の位置に応じて、前記注目画素の近傍の画素を量子化した際に発生した、前記保持する量子化誤差を前記注目画素に拡散するための拡散係数セットを設定し、
前記保持する量子化誤差と前記設定した拡散係数セットに基づき、前記近傍の画素それぞれに対応する量子化誤差と拡散係数を乗算し、それら乗算値と前記注目画素の画素値の総和を計算し、
前記設定した拡散係数セットを参照する画素位置からの量子化誤差を拡散した前記注目画素を量子化し、
前記注目画素が前記処理領域と前記処理領域の処理後に前記誤差拡散処理される未処理領域の境界の近傍に位置する場合、前記拡散係数セットとして、前記未処理領域から伝播されるべき量子化誤差の減少分を前記処理領域内における画素の量子化誤差を用いて補う拡散係数をもつ拡散係数セットを設定する画像処理方法。
【請求項１０】
コンピュータを請求項1から請求項8の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の誤差拡散処理に関する。
【背景技術】
【０００２】
インクジェットプリンタなど、一画素に付き、ドットのオン/オフの二階調しか表現できない画像出力装置において、多階調の画像を表現するには、多階調の画像データにハーフトーン処理を施す。ハーフトーン処理は、例えば二値のように少ない階調数で擬似的に多階調を表現するための画像処理である。ハーフトーン処理には様々な方法があるが、処理した画像の階調性と解像性に優れる誤差拡散法が広く用いられている。誤差拡散法は、注目画素の量子化前の画素値と、量子化後の画素値の差（量子化誤差）を、注目画素近傍の未処理の画素に所定の比率で拡散する処理を逐次的に行う画像処理である（非特許文献1）。
【０００３】
画像データを画像処理する場合、画像データをメモリに展開する必要がある。画像一枚分の画像データすべてを展開可能な記憶容量をもつメモリを機器に搭載することは、コスト面から難しい場合がある。とくに家庭用プリンタのように安価な機器は尚更である。そこで、画像を複数の部分領域に分割し、逐次的に、部分領域をメモリに展開して画像処理することが行われる。
【０００４】
機器のコストを増大させるもう一つの要因として、処理対象の画像データの近年の高解像度化による遅延メモリの記憶容量の増大が挙げられる。この問題の対策として、例えば特許文献1に開示された発明は、画像を複数のバンドに分割し、さらにバンドの分割方向に直交する方向に走査して画像処理を行う。従って、遅延メモリの記憶容量はバンドの高さに依存し、処理対象の画像データの解像度には依存しない画像処理装置が実現される。
【０００５】
しかし、画像を複数の領域に分割し、誤差拡散法を用いるハーフトーン処理を行うと、画質劣化が生じる場合がある。つまり、ある領域から次の領域へ誤差が拡散されず、領域の境界において誤差拡散処理の連続性が損われる。その結果、領域の境界において、ドットパターンの不整合が生じる。領域の境界におけるドットパターンの不整合は、条状に観察され、視覚的に非常に目立つ画質劣化になる。
【０００６】
この問題を解決する方法として、例えば特許文献2の発明は、領域の境界付近の画素を処理した際に拡散した誤差（拡散誤差）をメモリに格納し、次に処理する領域の境界付近の画素を処理する際にメモリに格納した拡散誤差を利用する技術を記載する。つまり、境界付近に誤差拡散処理のオーバラップ領域を設けて、領域の境界付近の画素に拡散されるべき誤差を近似する方法を開示する。しかし、特許文献2の発明を用いた場合でも、境界付近の画素に拡散されるべき誤差を正確に近似できない場合がある。
【０００７】
図1により画像をバンドに分割して誤差拡散処理を行う例を説明する。画像100はバンド101、102、103に分割され、バンドの長手方向に直交する方向（図1における上下方向）に画素を交互に走査して誤差拡散処理が行われる。このような走査を行うことで、誤差の拡散が同一方向に偏ることを防ぎ、画質を向上させることができる。
【０００８】
図2により誤差拡散マトリクスの一例を示す。図2(a)はバンドを下方向に走査する場合の誤差拡散マトリクスで、「＊」で示す注目画素の量子化誤差は、次の注目画素（下の画素）に7/16、次列に隣接する三画素に上から3/16、5/16、1/16の比率で拡散される。また、図2(b)はバンドを上方向に走査する場合の誤差拡散マトリクスで、注目画素の量子化誤差は、次の注目画素（上の画素）に7/16、次列に隣接する三画素に上から1/16、5/16、3/16の比率で拡散される。
【０００９】
図3によりオーバラップ領域を設けてバンドの画像を誤差拡散処理する例を説明する。図3(a)に示すように、バンド101の誤差拡散処理において、バンド102に例えば二画素幅分のオーバラップ領域401が設定される。まず、バンド101の左上端（ラインL0の最左端）の画素を注目画素として、下方向に画素を走査し、ラインL5の左端の画素が注目画素になるまで誤差拡散処理を行う。次に、ラインL5の二列目の画素を注目画素として、上方向に画素を走査し、ラインL0の二列目の画素が注目画素になるまで誤差拡散処理を行う。以降、最終列まで交互に走査を繰り返して、バンド101の誤差拡散処理を終了する。バンド101の誤差拡散処理が終了すると、図3(b)に示すように、バンド102と、バンド103の例えば二画素幅分のオーバラップ領域401を処理対象領域として誤差拡散処理を行い、同様の処理を最下端のバンドまで繰り返す。
【００１０】
このような誤差拡散処理を行うと、奇数列の処理において、注目画素の量子化誤差は図2(c)に示す画素eに7/16、画素fに3/16、画素gに5/16、画素hに1/16の比率で拡散される。また、偶数列の処理において、注目画素の量子化誤差は画素dに7/16、画素fに1/16、画素gに5/16、画素hに3/16の比率で拡散される。
【００１１】
図3(b)に示すバンド101の境界ラインL3上の偶数列にある注目画素404には、バンド101の誤差拡散処理において、バンド102の境界ラインL4上の画素406、405から誤差が拡散される（以下、拡散誤差A）。バンド102の誤差拡散処理において、画素406、405から注目画素404に（実際には拡散されないが）拡散される誤差（以下、拡散誤差B）がある。ここで、拡散誤差Aの値と拡散誤差Bの値が近似すればドットパターンの不整合は生じない。
【００１２】
バンド101の誤差拡散処理において、画素406、405から注目画素404に実際に拡散される拡散誤差Aは、画素の走査が双方向のため、オーバラップ領域401であるラインL5の量子化誤差の影響を受ける。一方、バンド102の誤差拡散処理において、画素406、405から注目画素404に実際には拡散されない拡散誤差Bは、ラインL5の量子化誤差だけでなく、さらに下方のラインの量子化誤差の影響を受ける。つまり、通常、拡散誤差Aの値と拡散誤差Bの値が近似することはない。特許文献2の発明においては、画素の走査を下方向にのみ行って誤差拡散処理を行うため、このような問題は発生しない。
【００１３】
このように、バンドを、その長手方向に直交する方向に双方向に走査して誤差拡散処理を行う場合、オーバラップ領域を設けても、境界部における条状の画質劣化を防ぐことはできない。また、オーバラップ領域を設ければ、その分、メモリの記憶容量を増やす必要があり、計算量も増加するので、実装コストが増加する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許第3733826号公報
【特許文献２】特開昭63-310269号公報
【非特許文献】
【００１５】
【非特許文献１】R. Floyd, L. Steinberg「An Adaptive Algorithm for Spatial Grayscale」Proceeding of the S.I.D. vol 17/2, 1976, p. 75-76
【発明の概要】
【発明が解決しようとする課題】
【００１６】
本発明は、画像から分割された領域ごとに誤差拡散処理を行う場合の領域の境界における画質劣化を低減することを目的とする。
【課題を解決するための手段】
【００１７】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１８】
本発明にかかる画像処理は、複数の領域に分割された画像の領域ごと、画素ごとに誤差拡散処理を行う際に、量子化済みの画素において発生した量子化誤差を保持し、注目画素を含む処理領域における前記走査の方向と前記注目画素の位置に応じて、前記注目画素の近傍の画素を量子化した際に発生した、前記保持する量子化誤差を前記注目画素に拡散するための拡散係数セットを設定し、前記保持する量子化誤差と前記設定した拡散係数セットに基づき、前記近傍の画素それぞれの量子化誤差と当該近傍の画素に対応する拡散係数を乗算し、それら乗算値と前記注目画素の画素値の総和を計算し、前記設定した拡散係数セットを参照する画素位置からの量子化誤差を拡散した前記注目画素を量子化し、前記注目画素が前記処理領域と前記処理領域の処理後に前記誤差拡散処理される未処理領域の境界の近傍に位置する場合、前記拡散係数セットとして、前記未処理領域から伝播されるべき量子化誤差の減少分を前記処理領域内における画素の量子化誤差を用いて補う拡散係数をもつ拡散係数セットを設定することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、画像から分割された領域ごとに誤差拡散処理を行う場合の領域の境界における画質劣化を低減することができる。
【図面の簡単な説明】
【００２０】
【図１】画像をバンドに分割して誤差拡散処理を行う例を説明する図。
【図２】誤差拡散マトリクスの一例を示す図。
【図３】オーバラップ領域を設けてバンドの画像を誤差拡散処理する例を説明する図。
【図４】実施例の画像処理装置の構成例を説明するブロック図。
【図５】実施例の誤差拡散処理を説明するフローチャート。
【図６】前領域の量子化誤差を拡散する必要がある画素か否かの判定を説明する図。
【図７】誤差拡散処理部(ED)の構成例を説明するブロック図。
【図８】誤差拡散処理部(ED)による一画素分の誤差拡散処理を説明するフローチャート。
【図９】量子化誤差の拡散量を説明する図。
【図１０】実施例2における領域分割を説明する図。
【図１１】誤差拡散マトリクスの一例および量子化誤差の拡散量を説明する図。
【図１２】実施例3における領域分割を説明する図。
【図１３】実施例4における領域分割を説明する図。
【発明を実施するための形態】
【００２１】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。以下では、副走査方向（縦方向）または主走査方向（横方向）の帯状（バンド状）に、画像を複数の領域に分割する。そして、分割した領域ごとに、領域の分割境界に直交する方向に、奇数行または列の画素の走査方向と偶数行または列の画素の走査方向が逆になるように注目画素を走査（以下、往復走査）して誤差拡散処理を行う画像処理を説明する。また、画像は縦横にタイル状またはブロック状に分割することもできる。その場合は、分割した領域ごとに、領域の横または縦方向に往復走査して誤差拡散処理を行う画像処理を説明する。
【実施例１】
【００２２】
［装置の構成］
図4のブロック図により実施例の画像処理装置の構成例を説明する。画像入力部600は、例えばスキャナであり、原稿画像を読み取ったRGBのアナログ信号をディジタル信号に変換した画像データを出力する。入力データ処理部610は、画像入力部600を制御して、原稿画像を複数の領域に分割した領域ごとに画像データを入力する。入力データメモリ620は、各分割領域の画像データを保持可能な記憶容量のメモリである。
【００２３】
つまり、入力データ処理部610は、入力データメモリ620に各分割領域の画像を展開し、輝度濃度変換、マスキング、下色除去、ガンマ補正などの画像処理を施す。そして、入力データメモリ620に展開した領域に対するハーフトーン処理部625の誤差拡散処理が終了すると、次の分割領域の画像を入力データメモリ620に上書きする。
【００２４】
ハーフトーン処理部625は、画像出力部680が処理可能な階調数のハーフトーン画像を生成する。例えば、画像出力部680が二階調しか表現できない場合、ハーフトーン処理部625は、連続階調の画像を二値化した二値画像を出力する。
【００２５】
ハーフトーン処理部625において、誤差拡散処理部(ED)630は、所定の閾値により入力画像の各画素を量子化し、量子化誤差を計算する。
【００２６】
量子化誤差メモリ640は、量子化誤差を保持する。以下では、各画素の量子化誤差を保持して、処理済みの画素の量子化誤差から計算した拡散誤差と注目画素の値を加算して、注目画素を量子化する方法を説明する。しかし、量子化誤差から計算した拡散誤差を誤差の拡散先の画素ごとに保持して、拡散誤差と注目画素の値を加算して、注目画素を量子化する方法を採用してもよい。
【００２７】
領域間の伝播量子化誤差を保持部する誤差バッファ670は、分割領域の内、現在の処理領域（以下、注目領域）に隣接する未処理の、次の処理領域（以下、次領域）に拡散する量子化誤差を保持する。画像出力部680は、例えばインクジェットプリントヘッドを有するプリンタエンジンであり、ハーフトーン処理部625から入力される画像データが表す画像を記録紙に印刷する。
【００２８】
つまり、量子化誤差メモリ640は、注目領域の誤差拡散処理において量子化誤差を参照するために量子化誤差を保持する第一のメモリである。また、誤差バッファ670は、次領域の誤差拡散処理において量子化誤差を参照するために量子化誤差を保持する第二のメモリである。
【００２９】
拡散係数設定部635の拡散係数メモリ660は、図2(a)(b)に示すような誤差拡散マトリクスを保持する。拡散係数選択部650は、例えば画素の走査方向や注目画素の位置に応じて、拡散係数メモリ660に保持された拡散係数セットから適切な拡散係数セットを選択し、選択した拡散係数セットを誤差拡散処理部630に設定する。
【００３０】
拡散係数メモリ660は、図2(a)(b)に示す誤差拡散マトリクスなどに対応する拡散係数セットを保持する。図2(a)(b)に示す誤差拡散マトリクスは注目画素の量子化誤差が拡散される画素（以下、被拡散画素）と、被拡散画素への拡散率を示す。一方、拡散係数メモリ660は、注目画素が被拡散画素の場合に、既に量子化が済んだ画素（以下、拡散元画素）から量子化誤差を加算するための拡散係数セットを保持する。つまり、拡散係数メモリ660が保持する拡散係数セットは、注目画素の近傍の画素を量子化した際の量子化誤差を注目画素に拡散するための誤差拡散マトリクスである。
【００３１】
［画像処理］
本実施例の画像処理装置は、図1に示すように、画像を複数のバンド（領域）に分割し、バンドを往復走査して誤差拡散処理を行う。つまり、バンド101の画像が入力データメモリ620に展開され、バンド101の誤差拡散処理が終了すると、バンド102の画像が入力データメモリ620に上書きされる。
【００３２】
バンドの高さ（画素数）は、各バンドで同じ必要はなく、各バンドで異なっていても構わない。言い替えれば、バンドの最大高は、原稿画像の横幅と入力データメモリ620の記憶容量によって決まり、最大高以下であればバンドの高さは任意である。
【００３３】
本実施例の画像処理装置は、注目領域の誤差拡散処理で発生した未拡散の量子化誤差を誤差バッファ670に保持して、次領域に拡散させて、バンドの境界においても連続的な誤差拡散処理を行う。
【００３４】
図5のフローチャートにより実施例1の誤差拡散処理を説明する。ED630は、注目画素が、隣接する既に処理が終了した、前の処理領域（以下、前領域）の量子化誤差を拡散する必要がある画素か否かを判定する(S700)。
【００３５】
図6により前領域の量子化誤差を拡散する必要がある画素か否かの判定を説明する。注目画素がバンド102の境界ラインL4上の偶数列に位置する場合、注目画素には図2(c)に示す左列の三画素a、b、cと下行の画素eから量子化誤差が拡散される。画素aは、現在入力データメモリ620に展開されたバンド102に含まれないため、誤差バッファ670に保持された画素aの量子化誤差を参照する必要がある。
【００３６】
また、注目画素がラインL4上の奇数列に位置する場合、注目画素には左列の三画素a、b、cと上行の画素dから量子化誤差が拡散される。画素a、dは、現在入力データメモリ620に展開されたバンド102に含まれていないため、誤差バッファ670に保持された画素a、dの量子化誤差を参照する必要がある。
【００３７】
このように、図2(a)(b)に示す誤差拡散マトリクスを用いる場合はラインL4上の画素が前領域の量子化誤差を拡散する必要がある画素である。ただし、誤差拡散マトリクスによっては、前領域の量子化誤差を拡散する必要がある画素がラインL4上の画素とは限らない。
【００３８】
ED630は、注目画素が前領域の量子化誤差を拡散する必要がある画素と判定した場合は、誤差バッファ670から前領域の拡散元画素の量子化誤差を読み出す(S701)。そして、注目画素を誤差拡散処理する(S702)。従って、前領域の量子化誤差を拡散する必要があると判定された注目画素は、前領域の拡散元画素の量子化誤差と、量子化誤差メモリ640が保持する注目領域の拡散元画素の量子化誤差を用いて誤差拡散処理される。また、前領域の量子化誤差を拡散する必要がないと判定された注目画素は、量子化誤差メモリ640が保持する注目領域の拡散元画素の量子化誤差を用いて誤差拡散処理される。
【００３９】
次に、ED630は、注目画素が次領域に量子化誤差を拡散する必要がある画素か否かを判定する(S703)。
【００４０】
図6において、注目画素がバンド101の境界ラインL3上の偶数列に位置する場合、図2(c)に示す右列の三画素f、g、hと上行の画素dに注目画素の量子化誤差が拡散される。画素hは、現在入力データメモリ620に展開されたバンド101に含まれないため、注目画素の量子化誤差を誤差バッファ670に保持する必要がある。
【００４１】
また、注目画素がバンド101の境界ラインL3上の奇数列に位置する場合、右列の三画素f、g、hと下行の画素eに注目画素の量子化誤差が拡散される。画素e、hは、現在入力データメモリ620に展開されたバンド101に含まれないため、注目画素の量子化誤差を誤差バッファ670に保持する必要がある。
【００４２】
このように、図2(a)(b)に示す誤差拡散マトリクスを用いる場合はラインL3上の画素が次領域に量子化誤差を拡散する必要がある画素である。ただし、誤差拡散マトリクスによっては、次領域に量子化誤差を拡散する必要がある画素がラインL3上の画素とは限らない。
【００４３】
ED630は、注目画素が次領域に量子化誤差を拡散する必要がある画素と判定した場合は、注目画素の量子化誤差を誤差バッファ670に書き込む(S704)。続いて、注目画素の量子化誤差を量子化誤差メモリ640に書き込む(S705)。従って、次領域に量子化誤差を拡散する必要があると判定された注目画素の量子化誤差は、誤差バッファ670および量子化誤差メモリ640に書き込まれる。また、次領域に量子化誤差を拡散する必要がないと判定された注目画素の量子化誤差は、量子化誤差メモリ640に書き込まれる。
【００４４】
次に、ED630は、注目画素の量子化結果を出力する(S706)。そして、入力データメモリ620に展開された領域の全画素の処理が終了したか否かを判定し(S707)、未了であれば処理をステップS700に戻し、ステップS700からS706の処理を繰り返す。
【００４５】
［誤差拡散処理］
図7のブロック図により誤差拡散処理部(ED)630の構成例を説明する。図8のフローチャートにより誤差拡散処理部(ED)630による一画素分の誤差拡散処理(S702)を説明する。ED630は、例えば、CMYK各色8ビットの画像データを入力し、CMYK各1ビットの画像データを出力する。
【００４６】
拡散係数選択部650は、注目画素の拡散係数セットを変更する必要があるか否かを判定する(S900)。拡散係数セットを変更する必要がない場合、拡散係数選択部650は、通常の誤差拡散マトリクス（例えば図2(a)または図2(b)）に対応する拡散係数セットを拡散係数メモリ660から読み出す。そして、当該拡散係数セットを積和演算器1000に設定する(S901)。また、拡散係数を変更する必要がある場合、拡散係数選択部650は、拡散係数メモリ660から読み出した後述する拡散係数セットを積和演算器1000に設定する(S902)。
【００４７】
領域分割によって、次領域から注目領域へ伝播（拡散）される量子化誤差がなくなる。従って、図2(a)(b)に示す誤差拡散マトリクスを用いる場合、図6に示す境界ラインL3やL7上の画素に拡散される量子化誤差は減少する。図9により量子化誤差の拡散量を説明する。
【００４８】
図9(a)は偶数列の注目画素に拡散される量子化誤差を示し、左列の三画素a、b、cと下行の画素eからそれぞれ1/16、5/16、3/16、7/16の比率で量子化誤差が拡散される。図9(b)は境界ライン上の偶数列の注目画素に拡散される量子化誤差を示し、左列の二画素a、bからそれぞれ1/16、5/16の比率で量子化誤差が拡散される。図9(c)は奇数列の注目画素に拡散される量子化誤差を示し、左列の三画素a、b、cと上行の画素dからそれぞれ3/16、5/16、1/16、7/16の比率で量子化誤差が拡散される。図9(d)は境界ライン上の奇数列の注目画素に拡散される量子化誤差を示し、左列の二画素a、bと上行の画素dからそれぞれ3/16、5/16、7/16の比率で量子化誤差が拡散される。なお、各領域の一列目の境界ライン上の画素は、左列に画素が存在せず、上行の画素dから量子化誤差が拡散されるだけであり、拡散される量子化誤差が減少することはない。
【００４９】
つまり、境界ライン上には拡散される量子化誤差がかなり減少する偶数列の画素（以下、激減画素）と、拡散される量子化誤差は僅かに減少する（一列目を除く）奇数列の画素（以下、微減画素）が存在する。ただし、通常使用する誤差拡散マトリクスによっては、激減画素、微減画素が境界ライン上の偶数列、奇数列の画素とは限らない。
【００５０】
そこで、激減画素、微減画素に対して、それを補正する拡散係数セットを用意する。激減画素が境界ライン上の偶数列の画素とすると、上述したように、その拡散元画素は左列の画素a、bである。従って、画素a、bから拡散される量子化誤差を大きくするために、画素a、bの量子化誤差に乗算する拡散係数を大きくして（例えば、1/16→6/16、5/16→10/16など）、拡散される量子化誤差の減少を補う。
【００５１】
また、微減画素が境界ライン上の奇数列の画素とすると、上述したように、その拡散元画素は左列の画素a、bと上行の画素dである。しかし、画素cからの1/16が減少するだけであるから、すべての拡散元画素に対応する拡散係数を大きくする必要はない。そこで、例えば、画素bから拡散される量子化誤差を大きくするために、画素bの量子化誤差に乗算する拡散係数を大きくして（例えば5/16→6/16など）、拡散される量子化誤差の減少を補う。
【００５２】
積和演算器1000は、誤差バッファ670および量子化誤差メモリ640、または、量子化誤差メモリ640から読み出した各画素の量子化誤差と、各画素に対応する拡散係数を乗算し、各乗算値と注目画素の値の総和を計算する(S903)。量子化器1010は、積和演算器1000の出力を所定の閾値によって量子化して、注目画素の量子化結果を出力する(S904)。逆量子化器1020は、注目画素の量子化結果を逆量子化する(S905)。減算器1030は、積和演算器1000の出力から逆量子化器1020の出力を減算した差分を注目画素の量子化誤差として出力する(S906)。上述したように、量子化誤差は量子化誤差メモリ640に格納され、必要に応じて、誤差バッファ670に格納される。
【００５３】
このように、分割領域を往復走査して誤差拡散処理する場合、注目領域の誤差拡散処理において前領域の量子化誤差を参照可能にするために誤差バッファ670を設ける。さらに、量子化誤差の拡散量が減少する画素に対しては、拡散量の減少を補うように拡散係数セットを設定する。従って、分割領域を往復走査して誤差拡散処理を行う場合に、オーバラップ領域を設けることなく、前述した拡散誤差Aの値と拡散誤差Bの値を近似させてドットパターンの不整合を防ぐことができる。
【実施例２】
【００５４】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００５５】
図10により実施例2における領域分割を説明する。実施例1においては、図1に示すように、縦長の画像100を横方向（主走査方向）に分割した各領域を往復走査して誤差拡散処理する例を説明した。実施例2においては、図10(a)に示すように、縦長の画像100を縦方向（副走査方向）に分割した各領域を、領域201、202、203の順に往復走査して誤差拡散処理する例を説明する。実施例2と実施例1は、領域の分割方法と画素の走査方向が異なる点を除いて、同一の処理になる。
【００５６】
図11により誤差拡散マトリクスの一例および量子化誤差の拡散量を説明する。図11(a)は領域を右方向に走査する場合の誤差拡散マトリクス、図11(b)は領域を左方向に走査する場合の誤差拡散マトリクスである。
【００５７】
図10(b)において、列R3、R6上に位置する画素は前領域の量子化誤差を拡散する必要がある画素である。従って、領域201、202の誤差拡散処理において、列R2、R5上の画素の量子化誤差を誤差バッファ670に格納する。
【００５８】
図10(c)において、境界列R2、R5に位置する画素の量子化誤差の拡散量が減少する。図11(d)から図11(g)に示すように、境界列において、右から左の走査が行われる偶数行の画素は激減画素である。また、境界列において、左から右に走査が行われる奇数行の画素は微減画素である。なお、各領域の一行目の境界列上の画素は、上列に画素が存在せず、左行の画素から量子化誤差が拡散されるだけであり、拡散される量子化誤差が減少することはない。
【００５９】
激減画素が境界列上の偶数行の画素とすると、図11(c)に示すように、その拡散元画素は上行の画素a、dである。従って、画素a、dから拡散される量子化誤差を大きくするために、画素a、dの量子化誤差に乗算する拡散係数を大きくして（例えば、1/16→6/16、5/16→10/16など）、拡散される量子化誤差の減少を補う。
【００６０】
また、微減画素が境界列上の奇数行の画素とすると、その拡散元画素は左列の画素bと上行の画素a、dである。しかし、画素fからの1/16が減少するだけであるから、すべての拡散元画素に対応する拡散係数を大きくする必要はない。そこで、例えば、画素dから拡散される量子化誤差を大きくするために、画素dの量子化誤差に乗算する拡散係数を大きくして（例えば5/16→6/16など）、拡散される量子化誤差の減少を補う。
【実施例３】
【００６１】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６２】
図12により実施例3における領域分割を説明する。実施例1、2においては、図1、図10に示すように、画像をバンド状の領域に分割する例を説明した。実施例3においては、図12(a)に示すように、画像100をタイル状に分割した各領域を、領域301、302、…、306の順に縦方向に往復走査して誤差拡散処理する例を説明する。実施例3と実施例1は、領域の分割方法が異なる点を除いて、同一の画像処理になる。
【００６３】
図12(b)において、列R4、ラインL4、L8上に位置する画素は既に処理が済んだ領域（以下、既処理領域）の量子化誤差を拡散する必要がある画素である。従って、領域301、302、303、304、305の誤差拡散処理において、列R3、ラインL3、L7上の画素の量子化誤差を注目領域の処理後に処理する領域（以下、未処理領域）の誤差拡散処理において参照するために誤差バッファ670に格納する。
【００６４】
図12(c)において、境界ラインL3、L7に位置する（一列目を除く）画素は量子化誤差の拡散量が減少する。図9(a)から図9(d)に示すように、境界ラインにおいて、偶数列の画素は激減画素である。また、境界ラインにおいて、奇数列の画素は微減画素である。激減画素、微減画素に対して、それを補正する拡散係数セットは実施例1と同様に用意すればよい。
【実施例４】
【００６５】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1から3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６６】
図13により実施例4における領域分割を説明する。実施例3においては、タイル状に分割した各領域を縦方向に往復走査して誤差拡散処理する例を説明した。実施例4においては、図13(a)に示すように、画像100をタイル状に分割した各領域を、領域501、502、…、506の順に横方向に往復走査して誤差拡散処理する例を説明する。実施例4と実施例1は、領域の分割方法が異なる点を除いて、同一の画像処理になる。
【００６７】
図13(b)において、列R4、ラインL4、L8上に位置する画素は既処理領域の量子化誤差を拡散する必要がある画素である。従って、領域501、502、503、504、505の誤差拡散処理において、列R3、ラインL3、L7上の画素の量子化誤差を未処理領域の誤差拡散処理において参照するために誤差バッファ670に格納する。
【００６８】
図13(c)において、境界ラインR3に位置する（一行目を除く）画素は量子化誤差の拡散量が減少する。図11(d)から図11(g)に示すように、境界列において、偶数ラインの画素は激減画素である。また、境界列において、奇数ラインの画素は微減画素である。激減画素、微減画素に対して、それを補正する拡散係数セットは実施例2と同様に用意すればよい。
【００６９】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
0005641822.tif 000002
【図２】
0005641822.tif 000003
【図３】
0005641822.tif 000004
【図４】
0005641822.tif 000005
【図５】
0005641822.tif 000006
【図６】
0005641822.tif 000007
【図７】
0005641822.tif 000008
【図８】
0005641822.tif 000009
【図９】
0005641822.tif 000010
【図１０】
0005641822.tif 000011
【図１１】
0005641822.tif 000012
【図１２】
0005641822.tif 000013
【図１３】
0005641822.tif 000014