(57)【要約】【課題】画像データを分割した各バンド先頭付近の１つのラインに対して、量子化を伴わない誤差拡散処理を繰り返し、得られた誤差値に基づいて、各バンドの先頭から順に誤差拡散処理を行って量子化出力する画像処理装置を提供する。【解決手段】画像処理装置１は、入力多値画像データを複数のバンドに分割する分割部９１と、分割された各バンドに誤差拡散処理を行って各画素を量子化する誤差拡散処理部２１と、分割部９１及び誤差拡散処理部２１を制御する制御部９２とを備える。誤差拡散処理部２１は、制御部９２からの制御に従って、各バンドの所定のライン（先頭ラインなど）に含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、第１のモードで得られた誤差値に基づいて、各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備える。【選択図】図１
2007281629.tif 000002
【特許請求の範囲】
【請求項１】
入力多値画像データを複数のバンドに分割する分割部と、該分割された各バンドに誤差拡散処理を行って各画素を量子化する誤差拡散処理部と、前記分割部及び前記誤差拡散処理部を制御する制御部とを備えた画像処理装置において、
前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの各注目画素に対して量子化せずに誤差値を算出し、該算出した誤差値を前記各注目画素の周辺画素へ拡散することを特徴とする画像処理装置。
【請求項２】
前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、該第１のモードで得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
入力多値画像データを複数のバンドに分割する分割部と、該分割された各バンドに誤差拡散処理を行って各画素を量子化する誤差拡散処理部と、前記分割部及び前記誤差拡散処理部を制御する制御部とを備えた画像処理装置において、
前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、該第１のモードで得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備えることを特徴とする画像処理装置。
【請求項４】
前記所定のラインは、前記各バンドの先頭ラインあるいは該先頭ライン近傍のラインであることを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記第１のモードにおける周辺画素の数は、前記第２のモードにおける周辺画素の数と異なることを特徴とする請求項２又は３に記載の画像処理装置。
【請求項６】
前記第１のモードにおける周辺画素への配分は、前記第２のモードにおける周辺画素への配分と異なることを特徴とする請求項２又は３に記載の画像処理装置。
【請求項７】
画像形成部を備え、該画像形成部で画像形成される画像データのページ間で他の画像データを処理する場合、前記誤差拡散処理部は、前記制御部からの制御に従って、前記画像データに対してはページ毎に誤差拡散処理を行い、前記他の画像データに対しては前記画像データのページ間でバンド毎に誤差拡散処理を行うことを特徴とする請求項２又は３に記載の画像処理装置。
【請求項８】
入力多値画像データをもとの階調よりも少ない階調数の画像データに変換する際に、変換後の画像データにおける各画素の階調値と前記入力多値画像データにおける各画素の階調値との誤差を周囲の画素に拡散させる誤差拡散処理方法において、
前記入力多値画像データを複数のバンドに分割するステップと、該分割された各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返すステップと、これにより得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力するステップとを有することを特徴とする誤差拡散処理方法。
【請求項９】
請求項８に記載の誤差拡散処理方法を実行するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、誤差拡散処理方法、及びプログラム、より詳細には、バンド単位で誤差拡散処理を行う画像処理装置、該装置による誤差拡散処理方法、及びそのためのプログラムに関する。
【背景技術】
【０００２】
従来、原画像をもとの階調よりも少ない階調数の画像に変換するときに、変換後の画像における各画像の階調値と原画像における階調値との誤差を周囲の画素に拡散させる誤差拡散法が知られている。この誤差拡散法によれば、階調変換によって生じる誤差を周囲画素に分散できるため、変換後の画像において濃度ムラが低減される。
【０００３】
上記誤差拡散法の基本原理について以下の図９乃至図１２に基づいて説明する。なお、以下では２５６階調の中間調画像を０または２５５の２値化変換する場合を例示する。まず、図９に示す原画像における任意の注目画素に対して、濃度値を所定の閾値と比較することによって０または２５５のいずれかに変換する。注目画素は、左上隅の画素から始まって主走査方向に移動し、主走査方向に１ライン分の処理が終了すると副走査方向に沿って次ラインに移動するものとする。ここでは、上記閾値を２５６階調の中間値である１２８とする。
【０００４】
図９に示す原画像において、左隅の画素（注目画素）の濃度値１２９を、閾値１２８と比較すると、注目画素の濃度値１２９のほうが閾値１２８よりも大きいため、注目画素の濃度値は２５５に変換される。この注目画素を１２９から２５５に変換することにより、２５５−１２９＝１２６の誤差（差分値）が生じる。この誤差は図１０に示す誤差拡散処理テーブルに基づいて周囲の画素に拡散される。この誤差拡散処理テーブルの例は、予め設定された拡散係数をマトリクス形式で示したもので、注目画素における差分値に拡散係数を乗じた値を周囲画素に振り分ける。
【０００５】
なお、図１０に示すように、誤差拡散処理テーブルに５×３のマトリクスを用いる場合の振りまき範囲は５×３となる。誤差拡散処理の前と後で、画像濃度が保たれるように、誤差拡散処理テーブルにおける拡散係数の総和は１になるように設定される。
【０００６】
図１０において、注目画素の右隣りの画素は、１２６（注目画素の差分値）×１０／６４（当該画素の拡散係数）≒２０（小数点以下は四捨五入あるいは切り捨てとする）が振り分け値となる。この際、振り分け値の符号は、画像全体の濃度を保存するために注目画素の差分値と逆になり、−２０が注目画素の右隣りの画素に加算される。
【０００７】
上記誤差拡散処理テーブルに基づいて周囲の画素に振り分けられる値を同様に計算すると、図１１に示すようになる。さらに、図１１に示した振り分け値を原画像において振り分けると、図１２に示すようになる。
【０００８】
最初の注目画素の画素拡散が終了すると、当該注目画素の右隣りの画素を新たな注目画素として誤差拡散を行う。このときの注目画素の濃度値１０９が閾値１２８と比較され、以下同様の処理が繰り返される。このように、注目画素を順次ずらしていきながら、全ての画素について誤差拡散を行い、原画像をもとの階調よりも少ない階調数の画像に変換する。
【０００９】
ここで、コピージョブ間の時間を利用してスキャナデータの誤差拡散処理を行う場合、スキャナデータを分割して誤差拡散すると、図１３に示すようにバンドの境目で不自然な境界線が発生することがわかっている。これは、誤差拡散する際に、直前ラインまで溜まった誤差値が全てクリアされるため、直前ラインまでの濃度値を考慮にいれた誤差拡散ができないことに起因する。特に中間調などの誤差値が大きい画像濃度では、適正な誤差レベルになるまで複数ライン処理しなくてはならない。
【００１０】
上記不具合に対して、バンドの切り替えで異なる画像を処理する場合、ラインメモリに記憶させた誤差値を別の大容量メモリに退避させ、続きを処理する方法が知られている。これについて図１４に示すフローに基づいて説明する。
【００１１】
図１４は、従来の誤差拡散処理方法を説明するためのフロー図である。まず、画像処理装置は、誤差値をセットするＦＩＦＯ（ラインメモリ）や誤差拡散ブロックをリセットし（ステップＳ１０１）、ライン数ｉ＝１をセットする（ステップＳ１０２）。次に、ページの先頭ラインかどうかを判断し（ステップＳ１０３）、ページの先頭ラインの場合（ＹＥＳの場合）、バンドのｉラインデータを大容量メモリから読み出す（ステップＳ１０４）。また、ステップＳ１０３において、ページの先頭ラインでない場合（ＮＯの場合）、大容量メモリから前回までの誤差値を読み出し、ＦＩＦＯにセットし、ステップＳ１０４に移行する（ステップＳ１０５）。
【００１２】
次に、画像処理装置は、ステップＳ１０４で読み出したｉラインデータから、バンドのｉラインに対して誤差拡散処理を行い（ステップＳ１０６）、ｉライン目の印字データを大容量メモリに格納し（ステップＳ１０７）、ｉ＝ｉ＋１をセットし、次のラインに移る（ステップＳ１０８）。
【００１３】
次に、画像処理装置は、ｉライン目がバンドの終了かどうかを判断し（ステップＳ１０９）、バンドの終了の場合（ＹＥＳの場合）、ＦＩＦＯにセットされた誤差値を大容量メモリに格納する（ステップＳ１１０）。また、ステップＳ１０９において、バンドの終了でない場合（ＮＯの場合）、ステップＳ１０４に戻り処理を繰り返す。
【００１４】
このように、従来方法の場合、前回までの誤差値を大容量メモリから読み出し、ＦＩＦＯにセットしてから誤差拡散処理を開始する。バンド終了時には、ＦＩＦＯの誤差値を大容量メモリに移動させておく必要があるため、誤差値をリード／ライトするためのコントローラをハードウェア回路として設計しなくてはならず、回路規模が増加してしまう。
【００１５】
これに対して、例えば、特許文献１には、バンド境界における画像の不自然さを除去するために、誤差バッファを用いて、隣接するバンド毎に誤差バッファを通じて依存関係をもたせ、複数のバンドからなるサブページにＰＤＬデータを分割してレンダリングする方法が提案されている。
【００１６】
また、特許文献２では、ブロックに分けて誤差拡散処理を行う場合、ブロック境界のピクセルは同じブロック内の隣接するピクセルから誤差配分を受けるようにする方法が提案されている。
【特許文献１】特開２００２−２３７９５２号公報
【特許文献２】特開２００５−０２０７３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、誤差バッファを用いる方法では次のバンドへ引き継ぐために誤差バッファのデータの退避と呼び出し処理が煩雑になる。特許文献１に記載の処理では、ＰＤＬのレンダリングに限定され、処理単位もＰＤＬデータに依存するため、コピージョブの合間に処理するようなバンドサイズが制約される場合には適していない。また、特許文献２に記載の処理では、２次元の誤差配分が制限され単一のピクセルからの誤差配分しか受けられない。
【００１８】
本発明は、上述のごとき実情に鑑みてなされたものであり、画像データを分割した各バンド先頭付近の１つのラインに対して、量子化を伴わない誤差拡散処理を繰り返し、得られた誤差値に基づいて、各バンドの先頭から順に誤差拡散処理を行って量子化出力する画像処理装置、該装置による誤差拡散処理方法、及びそのためのプログラムを提供すること、を目的とする。
【課題を解決するための手段】
【００１９】
上記課題を解決するために、本発明の第１の技術手段は、入力多値画像データを複数のバンドに分割する分割部と、該分割された各バンドに誤差拡散処理を行って各画素を量子化する誤差拡散処理部と、前記分割部及び前記誤差拡散処理部を制御する制御部とを備えた画像処理装置において、前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの各注目画素に対して量子化せずに誤差値を算出し、該算出した誤差値を前記各注目画素の周辺画素へ拡散することを特徴としたものである。
【００２０】
第２の技術手段は、第１の技術手段において、前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、該第１のモードで得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備えることを特徴としたものである。
【００２１】
第３の技術手段は、入力多値画像データを複数のバンドに分割する分割部と、該分割された各バンドに誤差拡散処理を行って各画素を量子化する誤差拡散処理部と、前記分割部及び前記誤差拡散処理部を制御する制御部とを備えた画像処理装置において、前記誤差拡散処理部は、前記制御部からの制御に従って、前記各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、該第１のモードで得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備えることを特徴としたものである。
【００２２】
第４の技術手段は、第２又は第３の技術手段において、前記所定のラインは、前記各バンドの先頭ラインあるいは該先頭ライン近傍のラインであることを特徴としたものである。
【００２３】
第５の技術手段は、第２又は第３の技術手段において、前記第１のモードにおける周辺画素の数は、前記第２のモードにおける周辺画素の数と異なることを特徴としたものである。
【００２４】
第６の技術手段は、第２又は第３の技術手段において、前記第１のモードにおける周辺画素への配分は、前記第２のモードにおける周辺画素への配分と異なることを特徴としたものである。
【００２５】
第７の技術手段は、第２又は第３の技術手段において、画像形成部を備え、該画像形成部で画像形成される画像データのページ間で他の画像データを処理する場合、前記誤差拡散処理部は、前記制御部からの制御に従って、前記画像データに対してはページ毎に誤差拡散処理を行い、前記他の画像データに対しては前記画像データのページ間でバンド毎に誤差拡散処理を行うことを特徴としたものである。
【００２６】
第８の技術手段は、入力多値画像データをもとの階調よりも少ない階調数の画像データに変換する際に、変換後の画像データにおける各画素の階調値と前記入力多値画像データにおける各画素の階調値との誤差を周囲の画素に拡散させる誤差拡散処理方法において、前記入力多値画像データを複数のバンドに分割するステップと、該分割された各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返すステップと、これにより得られた誤差値に基づいて、前記各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力するステップとを有することを特徴としたものである。
【００２７】
第９の技術手段は、第８の技術手段における誤差拡散処理方法を実行するためのプログラムである。
【発明の効果】
【００２８】
本発明によれば、画像データを分割した各バンド先頭付近の１つのラインに対して、量子化を伴わない誤差拡散処理を繰り返し、得られた誤差値に基づいて、各バンドの先頭から順に誤差拡散処理を行って量子化出力できるため、バンド単位で誤差値を別のメモリに退避させることなく、簡単な回路構成により、バンドの境目における不自然な境界線の発生を抑えることができる。
【発明を実施するための最良の形態】
【００２９】
以下、添付図面を参照しながら、本発明に係る画像処理装置、該装置による誤差拡散処理方法、及びそのためのプログラムの好適な実施形態について説明する。
【００３０】
図１は、本発明の一実施形態に係る画像処理装置の要部構成例を示すブロック図で、図中、１は画像処理装置で、該画像処理装置１は、画像処理コントローラ２、ＣＰＵ３、ＲＯＭ／ＲＡＭなどのメモリ４、システムコントローラ５、エンジンコントローラ６、外部メモリ７、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）コントローラ８、画像データコントローラ９、ＨＤＤ（ハードディスク）１０、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）コントローラ１１、ＩＦ（インタフェース）コントローラ１２、及びシステム（ＰＣＩ）バス１３を備える。
【００３１】
画像処理コントローラ２は、誤差拡散処理部２１を備え、入力多値画像データをもとの階調よりも少ない階調数の画像データに変換する際に、変換後の画像データにおける各画素の階調（濃度）値と、入力多値画像データにおける各画素の階調（濃度）値との誤差を周囲の画素に拡散させる誤差拡散処理を実行する。
【００３２】
システムコントローラ５は、画像処理装置１の動作を制御するための演算手段であるＣＰＵ３と、画像処理装置１の動作を制御するための制御プログラムやデータなどを格納したＲＯＭやＲＡＭなどの半導体メモリであるメモリ４と接続される。
【００３３】
また、システムコントローラ５は、画像データなどを格納するためのＨＤＤ１０と、ＬＡＮ等のネットワークに接続するためのＬＡＮコントローラ１１と、各種入出力機器と接続するためのＩＦコントローラ１２と、ＰＣＩバス１３を介して接続される。
【００３４】
また、システムコントローラ５は、画像処理コントローラ２と、画像データコントローラ９と互いに通信可能に接続され、これらのコントローラ間で制御データのやり取りを行えるようにしている。
【００３５】
画像データコントローラ９は、画像処理コントローラ２と接続され、入力多値画像データを複数のバンドに分割する分割部９１と、この分割部９１及び画像処理コントローラ２内の誤差拡散処理部２１を制御する制御部９２を備える。
【００３６】
また、画像データコントローラ９は、ＣＣＤコントローラ８と接続され、図示しないスキャナ（ＣＣＤ）により光学的に読み取られた原稿の画像データを入力し、この画像データを画像処理コントローラ２に送り、誤差拡散処理部２１などで所定の画像処理が施される。そして、画像データコントローラ９は、画像処理コントローラ２で画像処理された画像データをエンジンコントローラ６、ＨＤＤ１０、外部メモリ７のいずれかに出力する。
【００３７】
エンジンコントローラ６は、画像形成処理を行うための本発明の画像形成部に相当するもので、図示しないレーザスキャンニングユニット（ＬＳＵ）により感光体ドラムの表面にレーザ光が照射され、この感光体ドラムの表面に原稿画像データに応じた静電潜像が形成される。この静電潜像はトナーにより可視像化され、このトナー像は転写チャージャにより記録紙に転写され、定着ローラにより熱定着された後、所定の排紙トレイに排紙される。
【００３８】
外部メモリ７は、画像データなどを格納可能なＵＳＢメモリやメモリカードなどの外部記憶媒体であって、画像処理装置１に着脱可能に接続される。
【００３９】
本発明の主たる特徴部分である誤差拡散処理部２１は、制御部９２からの制御に従って、分割部９１で分割された各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返す第１のモードと、第１のモードで得られた誤差値に基づいて、各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力する第２のモードとを備える。なお、第１のモードにおいては、所定のラインとして、各バンドの先頭ラインあるいは先頭ライン近傍のラインに対して処理を行うものとし、以下の図２に基づいて説明する。
【００４０】
図２は、本発明に係る誤差拡散処理に用いる誤差拡散処理テーブルの一例を示す図である。本例では、誤差拡散処理テーブルのマトリクスサイズを５×３としているため、誤差の振りまき範囲も５×３となる。原画像中の注目画素Ｐ（ｘ，ｙ）における階調（濃度）値をＰ、誤差値をＥｒｒ、閾値をＴｈ、拡散係数をＷｉ（但し、以下のΣＷｉ＝１）としたときに、誤差値Ｅｒｒは以下の式で定義される。
【００４１】
Ｐ≧Ｔｈの場合、  Ｅｒｒ＝Ｐ−２５５（符号は“−”）  …式（１）
Ｐ＜Ｔｈの場合、  Ｅｒｒ＝Ｐ−０（符号は“＋”）      …式（２）
【００４２】
図２において、上記式（１），（２）から得られた誤差値Ｅｒｒを、注目画素Ｐの周囲の画素であるＰａ〜Ｐｌ（ここでは１２画素）の原画像の階調値に加えて、新たな階調値Ｐａ′〜Ｐｌ′を求める。これら新たな階調値Ｐａ′〜Ｐｌ′は次式（３）〜（１４）により求められる。なお、Ｐ≧Ｔｈの場合には、注目画素における階調値が２５５に変換されるため、階調値は増加し、一方、Ｐ＜Ｔｈの場合には、注目画素における階調値が０に変換されるため、階調値は減少する。そこで、画像全体の階調を維持するために、Ｐ≧Ｔｈの場合には誤差値を負とし、Ｐ＜Ｔｈの場合には誤差値を正とする。
【００４３】
Ｐａ′＝Ｐａ＋Ｅｒｒ＊Ｗａ…式（３）  Ｐｇ′＝Ｐｇ＋Ｅｒｒ＊Ｗｇ…式（９）
Ｐｂ′＝Ｐｂ＋Ｅｒｒ＊Ｗｂ…式（４）  Ｐｈ′＝Ｐｈ＋Ｅｒｒ＊Ｗｈ…式（１０）
Ｐｃ′＝Ｐｃ＋Ｅｒｒ＊Ｗｃ…式（５）  Ｐｉ′＝Ｐｉ＋Ｅｒｒ＊Ｗｉ…式（１１）
Ｐｄ′＝Ｐｄ＋Ｅｒｒ＊Ｗｄ…式（６）  Ｐｊ′＝Ｐｊ＋Ｅｒｒ＊Ｗｊ…式（１２）
Ｐｅ′＝Ｐｅ＋Ｅｒｒ＊Ｗｅ…式（７）  Ｐｋ′＝Ｐｋ＋Ｅｒｒ＊Ｗｋ…式（１３）
Ｐｆ′＝Ｐｆ＋Ｅｒｒ＊Ｗｆ…式（８）  Ｐｌ′＝Ｐｌ＋Ｅｒｒ＊Ｗｌ…式（１４）
【００４４】
注目画素Ｐに対する誤差拡散処理が終わると、次に、注目画素Ｐの右隣りの画素Ｐａを新たな注目画素として同様の誤差拡散処理を行う。この注目画素Ｐａに対しては、階調値Ｐａではなく、上記式（３）で求めたＰａ′をもとの階調値として同様の処理を行う。この一連の処理を、例えばバンドの先頭ラインの左端から右端までラスタスキャン順に所定回数繰り返し行うようにする。これにより当該バンドにおいて適正な誤差値を得ることができる。
【００４５】
ここまでの処理が前述の第１モードの処理に相当し、制御部９２からの制御に従って、誤差拡散処理部２１により実行される。この第１のモードにおいては、先頭ラインあるいは先頭ライン近傍のラインの各画素に対して、量子化することなく、誤差拡散処理のみを所定回数繰り返して行い、適正な誤差値を得るようにしている。この適正な誤差値を得るまでに要する繰り返し数は、誤差の振りまき範囲に含まれる周辺画素の数（あるいは拡散係数）によって変化するが、概ね２４回程度処理すれば適正な誤差値を得ることができる。
【００４６】
上記第１モードの処理が終了すると、誤差拡散処理部２１は、さらに、第２モード、すなわち、第１モードで得られた誤差値に基づいて、各バンドの先頭ラインから順に従来（図９乃至図１２に示した方法）の誤差拡散処理を行って量子化出力を行い、一連の誤差拡散処理を終了する。
【００４７】
ここで、第１モードにおける周辺画素の数を、第２モードにおける周辺画素の数よりも小さくしてもよい。例えば、第１モードでは３×２の振りまき範囲とし、第２モードでは５×３の振りまき範囲とする。これにより、第１モードにおいて一回あたりの周辺画素への振りまき量（誤差値）が多くなるため、繰り返し回数を減らすことができる。
【００４８】
また、第１モードにおける周辺画素への配分（すなわち、拡散係数）を、第２モードにおける周辺画素への配分よりも大きくしてもよい。これにより、上記と同様に、第１モードにおいて一回あたりの周辺画素への振りまき量（誤差値）が多くなるため、繰り返し回数を減らすことができる。
【００４９】
また、エンジンコントローラ６で画像形成される画像データのページ間で他の画像データを処理する場合、例えば、ページ単位で処理されるコピージョブ間の時間を利用してスキャナデータを分割して誤差拡散処理するような場合、誤差拡散処理部２１は、制御部９２からの制御に従って、画像形成される画像データに対してはページ毎に誤差拡散処理を行い、スキャナデータなどの他の画像データに対しては上記画像データのページ間でバンド毎に誤差拡散処理（第１モード及び第２モード）を行うようにしてもよい。
【００５０】
以下、図３乃至図６に基づいて、本発明に係る誤差拡散処理を行うための基本的な回路構成例について説明する。
【００５１】
図３は、本発明に係る誤差拡散処理部２１の詳細構成例を示す回路図である。図中、誤差拡散処理部２１は、加算器２１１、マスク部２１２、拡散誤差演算部２１３、及びラッチ／加算器２１４を備える。本例に示す誤差拡散処理部２１は、誤差拡散法を用いて２値化処理を行うための回路であって、拡散誤差はラインメモリ（ＦＩＦＯ）とラッチ回路によって加算対象の画素毎に蓄積され、２値化処理の直前に元データに加算される。
【００５２】
誤差拡散処理部２１に入力される信号について説明する。
ＺＯＯＭＯ[７：０]は前段処理からの入力データで、加算器２１１に入力される。ＩＤＥＮ１は有効入力データイネーブル信号で、マスク部２１２に入力され、マスク部２１２により非有効データがマスクされる。ＯＣＬＫはデータ転送クロック信号で、ラッチ／加算器２１４ａ〜２１４ｃ、拡散誤差演算部２１３に入力される。ＣＬＲはオールクリア信号で、ＯＣＬＫと同様に、ラッチ／加算器２１４ａ〜２１４ｃ、拡散誤差演算部２１３に入力される。ＦＩＦＯ１_ＤＯ[７：０]はラインメモリＦＩＦＯ１の出力データで、ラッチ／加算器２１４ａに入力される。また、ＦＩＦＯ２_ＤＯ[７：０]はラインメモリＦＩＦＯ２の出力データで、ラッチ／加算器２１４ｂに入力される。
【００５３】
次に、誤差拡散処理部２１から出力される信号について説明する。
ＳＤＡＴは２値のシリアル出力信号で、拡散誤差演算部２１３から出力される。ＦＩＦＯ１_ＤＩ[７：０]はラインメモリＦＩＦＯ１への入力データで、ラッチ／加算器２１４ｂから出力される。また、ＦＩＦＯ２_ＤＩ[７：０]はラインメモリＦＩＦＯ２への入力データで、ラッチ／加算器２１４ｃから出力される。
【００５４】
次に、誤差拡散処理部２１の内部における信号について説明する。
Ｅ_Ａ[７：０]〜Ｅ_Ｌ[７：０]は、誤差拡散処理における各画素の拡散誤差で、拡散誤差演算部２１３から各ラッチ／加算器２１３ａ〜２１３ｃに入力される。これらのＥ_Ａ[７：０]〜Ｅ_Ｌ[７：０]は前述の図２に示した画素Ｐａ〜Ｐｌに対応している。ＥＲＲ_ＳＵＭ[７：０]は誤差拡散処理における拡散誤差の積算値（拡散誤差積算値）で、ラッチ／加算器２１４ａから加算器２１１に入力される。
【００５５】
図４は、図３に示した拡散誤差演算部２１３の詳細構成例を示す回路図である。図中、拡散誤差演算部２１３は、誤差量算出部２１３ａ、比較器２１３ｂ、乗算器２１ａ〜２１ｌ、及びデコーダ２２ａ〜２２ｌを備える。この拡散誤差演算部２１３は、前述の図１０に示した誤差拡散処理テーブルに基づいて振り分け値を算出する。注目画素の拡散誤差積算値ＥＲＲ_ＳＵＭと閾値ＴＨとが入力として与えられる。なお、ここでの注目画素の拡散誤差積算値ＥＲＲ_ＳＵＭは、先に誤差拡散処理のなされた画素の振り分け値が加算された後の値である。拡散誤差積算値ＥＲＲ_ＳＵＭと閾値ＴＨは、比較器２１３ｂおよび誤差量算出部２１３ａに入力される。
【００５６】
比較器２１３ｂでは拡散誤差積算値ＥＲＲ_ＳＵＭと閾値ＴＨとを比較することにより、注目画素の階調値が０または２５５に変換される。この変換処理は図５に示す拡散誤差算出条件に従って行われる。閾値ＴＨに基づいて入力データを２値化する際に、図５に示す拡散誤差算出条件に従って誤差を算出し、この誤差に拡散係数（Ｗ_Ａ〜Ｗ_Ｌ）を乗じて周辺１２画素への分配誤差を算出する。拡散係数（Ｗ_Ａ〜Ｗ_Ｌ）は、例えば図１０に示したように、予め用意された１セットの係数が選択される。
【００５７】
２５５＞ＥＲＲ_ＳＵＭ（ＤＡＴＡ）≧ＴＨの場合、上記注目画素の階調値は２５５に変換される。また、ＴＨ＞ＥＲＲ_ＳＵＭ（ＤＡＴＡ）＞０の場合、上記注目画素の階調値は０に変換される。なお、２値化データにおいては、その出力は０または１であり、階調値が２５５の場合は２値化データの１に相当する。したがって、ＥＲＲ_ＳＵＭ（ＤＡＴＡ）≧ＴＨの場合には比較器２１３ｂの出力はＳＤＡＴ＝１としてドットを形成し、ＴＨ＞ＥＲＲ_ＳＵＭ（ＤＡＴＡ）の場合には比較器２１３ｂの出力はＳＤＡＴ＝０でドットを形成しない。
【００５８】
一方、誤差量算出部２１３ａにおいては、２値化された注目画素における誤差量ＥＲＲが算出される。すなわち、ＥＲＲ_ＳＵＭ≧ＴＨである場合、上述したように上記注目画素の階調値は２５５に変換されるため、ＥＲＲ＝２５５−ＥＲＲ_ＳＵＭとなる。また、ＴＨ＞ＥＲＲ_ＳＵＭである場合、上記注目画素の階調値は０に変換されるため、ＥＲＲ＝ＥＲＲ_ＳＵＭ−０となる。こうして算出された誤差値ＥＲＲは、乗算器２１ａ〜２１ｌへ送られる。同時に、上記各乗算器２１ａ〜２１ｌには誤差拡散処理テーブルに対応する拡散係数Ｗ_Ａ〜Ｗ_Ｌが与えられ、誤差値ＥＲＲとそれぞれの拡散係数Ｗ_Ａ〜Ｗ_Ｌとの積が計算される。
【００５９】
ここで、誤差値ＥＲＲと拡散係数Ｗ_Ａ〜Ｗ_Ｌとの積は拡散誤差の大きさを示し、乗算器２１ａ〜２１ｌのそれぞれに接続されたデコーダ２２ａ〜２２ｌに入力される。また、誤差値ＥＲＲは、ＥＲＲ_ＳＵＭ≧ＴＨ，ＴＨ＞ＥＲＲ_ＳＵＭの場合の何れにおいても０以上の値となるが、ＥＲＲ_ＳＵＭ≧ＴＨの場合には、注目画素における階調値が２５５に変換されることにより、階調値は増加することとなる。逆に、ＴＨ＞ＥＲＲ_ＳＵＭの場合には、注目画素における階調値は減少する。
【００６０】
したがって、画像全体の濃度を維持するためには、ＥＲＲ_ＳＵＭ≧ＴＨの場合には拡散誤差は負の値とする必要があり、誤差量算出部２１３ａより各デコーダ２２ａ〜２２ｌに符号信号ＳＩＧＮ＝０が与えられる。０であるＳＩＧＮは、拡散誤差の符号が負であることを示し、この時、各デコーダ２２ａ〜２２ｌは、誤差値ＥＲＲと拡散係数Ｗ_Ａ〜Ｗ_Ｌとの積の符号を負として、拡散誤差Ｅ_Ａ〜Ｅ_Ｌを出力する。
【００６１】
一方、ＴＨ＞ＥＲＲ_ＳＵＭの場合には、誤差量算出部２１３ａより各デコーダ２２ａ〜２２ｌに符号信号ＳＩＧＮ＝１が与えられる。１であるＳＩＧＮは、拡散誤差の符号が正であることを示し、この時、各デコーダ２２ａ〜２２ｌは、誤差値ＥＲＲと拡散係数Ｗ_Ａ〜Ｗ_Ｌとの積の符号を正として、拡散誤差Ｅ_Ａ〜Ｅ_Ｌを出力する。上記拡散誤差Ｅ_Ａ〜Ｅ_Ｌは、注目画素に対して図２に示したマトリクス配列（Ｐａ〜Ｐｌ）に対応して形成される。
【００６２】
上述のようにして求まった拡散誤差は、注目画素の周囲画素に振りまかれ、順次移動する注目画素の拡散誤差積算値ＥＲＲ_ＳＵＭが変化する。この注目画素の拡散誤差積算値ＥＲＲ_ＳＵＭを求めるための演算回路を以下の図６に示す。
【００６３】
図６は、図３に示したラッチ／加算器２１４の詳細構成例を示す回路図である。図中、ラッチ／加算器２１４は、加算器２３ａ，２３ｃ，２３ｄ，２３ｅ，２３ｆ，２３ｈ，２３ｉ，２３ｊ，２３ｋ，２５、データレジスタ２４ａ〜２４ｌ、ラインメモリ（ＦＩＦＯ）２６，２７を備える。本例のラッチ／加算器２１４の場合、誤差拡散の際に２値化する画素の誤差を周辺１０画素に分配するが、逆に言えば、周辺１０画素から誤差拡散を受け取ることになる。ラッチ／加算器２１４は、このとき拡散された誤差を蓄積するためのラッチ回路と加算器を備える。
【００６４】
ラッチ／加算器２１４に入力される信号について説明する。
Ｅ_Ａ〜Ｅ_Ｌ[５：０]は拡散誤差演算部２１３から入力される拡散誤差で、対応する加算器に入力される。ＦＩＦＯ１_ＤＯ[７：０]はラインメモリ２６（ＦＩＦＯ１）の出力データで、加算器２５に入力される。また、ＦＩＦＯ２_ＤＯ[７：０]はラインメモリ２７（ＦＩＦＯ２）の出力データで、加算器２３ｅに入力される。
【００６５】
次に、ラッチ／加算器２１４から出力される信号について説明する。
ＥＲＲ_ＳＵＭ[７：０]は拡散誤差の蓄積結果の値で、図３に示した加算器２１１へ出力され、２値化前の入力データに加算される。ＦＩＦＯ１_ＤＩ[７：０]はラインメモリ２６（ＦＩＦＯ１）への入力データで、データレジスタ２４ｃから出力される。また、ＦＩＦＯ２_ＤＩ[７：０]はラインメモリ２７（ＦＩＦＯ２）への入力データで、データレジスタ２４ｈから出力される。
【００６６】
図６において、まず、第１番目の注目画素（原画像における左上隅画素）について、前述の図４に示した拡散誤差演算部２１３によって注目画素に対する拡散誤差Ｅ_Ａ〜Ｅ_Ｌが算出される。算出された拡散誤差Ｅ_Ａ〜Ｅ_Ｌは、前述の図１０に示した誤差拡散処理テーブルと同サイズのマトリクスで表される拡散誤差ブロック（ここでは５列×３行とする）に格納される。この誤差拡散ブロックにより拡散誤差の累積加算およびその加算結果（蓄積結果）の保存を行う。
【００６７】
図６において、拡散誤差演算部２１３によって算出された拡散誤差Ｅ_Ａ，Ｅ_Ｃ，Ｅ_Ｄ，Ｅ_Ｅ，Ｅ_Ｆ，Ｅ_Ｈ，Ｅ_Ｉ，Ｅ_Ｊ，Ｅ_Ｋのそれぞれは、加算器２３ａ，２３ｃ，２３ｄ，２３ｅ，２３ｆ，２３ｈ，２３ｉ，２３ｊ，２３ｋを介してデータレジスタ２４ａ，２４ｃ，２４ｄ，２４ｅ，２４ｆ，２４ｈ，２４ｉ，２４ｊ，２４ｋに格納される。また、拡散誤差Ｅ_Ｂ，Ｅ_Ｇ，Ｅ_Ｌは加算器を介さずに直接データレジスタ２４ｂ，２４ｇ，２４ｌにそれぞれ格納される。
【００６８】
次いで、第２番目の注目画素に移って拡散誤差を算出する時には、注目画素の移動に伴って拡散誤差ブロック（図示せず）も１列分だけ移動する。そして、移動された拡散誤差ブロックにおいて、上記と同様に、２番目の注目画素に対して算出された拡散誤差が加算される。
【００６９】
図６において、拡散誤差ブロックが１列分移動することは、拡散誤差ブロック内に格納されているデータが拡散誤差ブロックの移動方向と逆の方向に１列分移動することと同じであり、例えば、第１番目の注目画素に対する拡散誤差Ｅ_Ｂは、データレジスタ２４ｂの位置からデータレジスタ２４ａの位置に移動することとなる。
【００７０】
また、上記拡散誤差ブロックには、同時に２番目の注目画素に対するＥ_Ａ〜Ｅ_Ｌが格納されるため、データレジスタ２４ａの位置を例にとると、ここには、１番目の注目画素に対する拡散誤差Ｅ_Ｂと２番目の注目画素に対する拡散誤差Ｅ_Ａとの加算値が格納される。例えば、データレジスタ２４ｂに格納されているデータ（１番目の注目画素に対する拡散誤差Ｅ_Ｂ）と２番目の注目画素に対する拡散誤差Ｅ_Ａとが加算器２３ａに入力されて、これらの加算値がデータレジスタ２４ａに送られる。
【００７１】
また、データレジスタ２４ａに格納されているデータは、加算器２５において原画像における注目画素の初期階調値ＩＤＩＮと加算され、ＥＲＲ_ＳＵＭとして出力される。こうして出力されたＥＲＲ_ＳＵＭが、拡散誤差演算部２１３の比較器２１３ｂにおいて閾値ＴＨと比較され２値化される。
【００７２】
さらに、上記拡散誤差ブロックが移動することによって、拡散誤差ブロックからはみ出すデータは、ラインメモリ（ＦＩＦＯ）に送られて格納される。すなわち、拡散誤差ブロックの１列目にある拡散誤差Ｅ_ＣおよびＥ_Ｈが、ラインメモリ２６および２７にそれぞれ格納される。すなわち、データレジスタ２４ｈにおけるデータがラインメモリ２７に送られ、データレジスタ２４ｃにおけるデータがラインメモリ２６に送られることを示している。なお、上記ラインメモリ２６および２７において格納可能なデータの個数は、原画像の列数をｎ、拡散誤差ブロックの列数をｍとした場合、ｎ−ｍとなる。
【００７３】
第３番目以降の注目画素においても、各データレジスタに格納されているデータの移動、および注目画素に対して算出された拡散誤差の加算が同様に行われ、拡散誤差ブロック、ラインメモリ２６および２７にデータが格納される。最終的に原画像の全ての画素について上記誤差拡散処理が行われる。
【００７４】
図７は、本発明に係る誤差拡散処理方法の一例を説明するためのフロー図である。まず、画像処理装置１は、誤差値をセットするＦＩＦＯ（ラインメモリ）や誤差拡散ブロックをリセットし（ステップＳ１）、ライン数ｉ＝１をセットする（ステップＳ２）。次に、バンドのｉラインデータを大容量メモリから読み出して（ステップＳ３）、バンドのｉラインに対して誤差拡散処理（Ｎ×Ｍの振りまき）を行う（ステップＳ４）。
【００７５】
次に、画像処理装置１は、ｉラインに対する誤差拡散処理の繰り返し回数が、適正な誤差値が得られる所定回数（Ｌ回）になったかどうかを判断し（ステップＳ５）、繰り返し回数がＬ回になった場合（ＹＥＳの場合）、ｉライン目の印字データを大容量メモリに格納する（ステップＳ６）。また、ステップＳ５において、繰り返し回数がＬ回に満たない場合（ＮＯの場合）、ステップＳ３に移行して処理を繰り返す。
【００７６】
次に、画像処理装置１は、ライン数ｉ＝ｉ＋１をセットし（ステップＳ７）、バンドのｉラインデータを大容量メモリから読み出して（ステップＳ８）、バンドのｉラインに対して誤差拡散処理（Ｎ×Ｍの振りまき）を行う（ステップＳ９）。
【００７７】
最後に、画像処理装置１は、ｉライン目がバンドの終了かどうかを判断し（ステップＳ１０）、バンドの終了の場合（ＹＥＳの場合）、そのまま処理を終了し、一方、ステップＳ１０において、バンドの終了でない場合（ＮＯの場合）、ステップＳ６に戻り処理を繰り返す。
【００７８】
上記フローにより、各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返し、これにより得られた誤差値に基づいて、各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力することができる。なお、ステップＳ５における“Ｌ”は、適正な誤差値となる繰り返し回数である。この繰り返し回数はどのような拡散係数を用いるかによって変化するが、概ね２４回程度の繰り返しで適正な誤差値が得られている。
【００７９】
図８は、本発明に係る誤差拡散処理方法の他の例を説明するためのフロー図である。まず、画像処理装置１は、誤差値をセットするＦＩＦＯ（ラインメモリ）や誤差拡散ブロックをリセットし（ステップＳ１１）、ライン数ｉ＝１をセットする（ステップＳ１２）。次に、バンドのｉラインデータを大容量メモリから読み出して（ステップＳ１３）、バンドのｉラインに対して誤差拡散処理（ｎ×ｍ（＜Ｎ×Ｍ）の振りまき）を行う（ステップＳ１４）。これは、例えば、Ｎ×Ｍを５×３とすると、ｎ×ｍを３×２とする。
【００８０】
次に、画像処理装置１は、ｉラインに対する誤差拡散処理の繰り返し回数が、適正な誤差値が得られる所定回数（Ｌ回）になったかどうかを判断し（ステップＳ１５）、繰り返し回数がＬ回になった場合（ＹＥＳの場合）、ｉライン目の印字データを大容量メモリに格納する（ステップＳ１６）。また、ステップＳ１５において、繰り返し回数がＬ回に満たない場合（ＮＯの場合）、ステップＳ１３に移行して処理を繰り返す。
【００８１】
次に、画像処理装置１は、ライン数ｉ＝ｉ＋１をセットし（ステップＳ１７）、バンドのｉラインデータを大容量メモリから読み出して（ステップＳ１８）、バンドのｉラインに対して誤差拡散処理（Ｎ×Ｍの振りまき）を行う（ステップＳ１９）。
【００８２】
最後に、画像処理装置１は、ｉライン目がバンドの終了かどうかを判断し（ステップＳ２０）、バンドの終了の場合（ＹＥＳの場合）、そのまま処理を終了し、一方、ステップＳ２０において、バンドの終了でない場合（ＮＯの場合）、ステップＳ１６に戻り処理を繰り返す。
【００８３】
上記フローにより、各バンドの所定のラインに含まれる各注目画素に対して、量子化を伴わない誤差拡散処理を所定回数繰り返し、これにより得られた誤差値に基づいて、各バンドの先頭ラインから順に誤差拡散処理を行って量子化出力することができる。本例においては、誤差の振りまきはＮ×Ｍ（例えば５×３）で実行されるが、適正誤差になるまではｎ×ｍ（例えば３×２）で実行されるため、図７に示した例と比べ、繰り返し回数“Ｌ”は小さくてすむ。
【００８４】
以上、本発明の画像処理装置における各機能を中心に各実施形態を説明してきたが、本発明は、画像処理装置における各ステップを実行する方法としても説明したように誤差拡散処理方法としての形態もとることができる。また、この誤差拡散処理方法を、コンピュータに実行させるためのプログラムとしての形態も、また、そのプログラムを記録した記録媒体としての形態も可能である。
【００８５】
本発明による各ステップを実行するためのプログラムやデータを記憶した記録媒体の実施形態について説明する。記録媒体としては、具体的には、ＣＤ−ＲＯＭ（−Ｒ／−ＲＷ）、光磁気ディスク、ＤＶＤ−ＲＯＭ（−Ｒ／−ＲＷ／−ＲＡＭ）、ＦＤ、ＨＤ、ＢＤ、フラッシュメモリ、メモリカードや、メモリスティック及びその他各種ＲＯＭやＲＡＭ等が想定でき、これら記録媒体に上述した本発明の各実施形態の誤差拡散処理方法をコンピュータに実行させ、本発明に係る各ステップを実行するためのプログラムを記録して流通させることにより、当該ステップの実行を容易にする。そしてコンピュータ等の情報処理装置に上記のごとくの記録媒体を装着して情報処理装置によりプログラムを読み出すか、若しくは情報処理装置が備えている記憶媒体に当該プログラムを記憶させておき、必要に応じて読み出すことにより、本発明に関わる各ステップを実行することができる。
【００８６】
以上説明したように、本発明によれば、画像データを分割した各バンド先頭付近の１つのラインに対して、量子化を伴わない誤差拡散処理を繰り返し、得られた誤差値に基づいて、各バンドの先頭から順に誤差拡散処理を行って量子化出力できるため、バンド単位で誤差値を別のメモリに退避させることなく、簡単な回路構成により、バンドの境目における不自然な境界線の発生を抑えることができる。
【図面の簡単な説明】
【００８７】
【図１】本発明の一実施形態に係る画像処理装置の要部構成例を示すブロック図である。
【図２】本発明に係る誤差拡散処理に用いる誤差拡散処理テーブルの一例を示す図である。
【図３】本発明に係る誤差拡散処理部の詳細構成例を示す回路図である。
【図４】図３に示した拡散誤差演算部の詳細構成例を示す回路図である。
【図５】拡散誤差算出条件の一例を示す図である。
【図６】図３に示したラッチ／加算器の詳細構成例を示す回路図である。
【図７】本発明に係る誤差拡散処理方法の一例を説明するためのフロー図である。
【図８】本発明に係る誤差拡散処理方法の他の例を説明するためのフロー図である。
【図９】２値化における誤差拡散処理が施される前の原画像の階調値の一例を示す図である。
【図１０】誤差拡散処理で使用される誤差拡散処理テーブルの一例を示す図である。
【図１１】誤差拡散処理テーブルを用いた場合に、原画像に対する最初の注目画素における拡散誤差の演算結果を示す図である。
【図１２】拡散誤差を原画像に対して振りまいた後の階調値を示す図である。
【図１３】バンドの境目で発生する不具合を説明するための図である。
【図１４】従来の誤差拡散処理方法を説明するためのフロー図である。
【符号の説明】
【００８８】
１…画像処理装置、２…画像処理コントローラ、３…ＣＰＵ、４…メモリ、５…システムコントローラ、６…エンジンコントローラ、７…外部メモリ、８…ＣＣＤコントローラ、９…画像データコントローラ、１０…ＨＤＤ、１１…ＬＡＮコントローラ、１２…ＩＦコントローラ、１３…システムバス、２１…誤差拡散処理部、９１…分割部、９２…制御部２１１…加算器、２１２…マスク部、２１３…拡散誤差演算部、２１４…ラッチ／加算器。
【図１】
2007281629.tif 000003
【図２】
2007281629.tif 000004
【図３】
2007281629.tif 000005
【図４】
2007281629.tif 000006
【図５】
2007281629.tif 000007
【図６】
2007281629.tif 000008
【図７】
2007281629.tif 000009
【図８】
2007281629.tif 000010
【図９】
2007281629.tif 000011
【図１０】
2007281629.tif 000012
【図１１】
2007281629.tif 000013
【図１２】
2007281629.tif 000014
【図１３】
2007281629.tif 000015
【図１４】
2007281629.tif 000016