(57)【特許請求の範囲】
【請求項１】
入力画像の各画素の濃度値変換を行う際に、前記入力画像の相隣する２画素それぞれを注目画素とした誤差拡散演算を同じクロックに同期して行うこととし、前記２画素における誤差拡散演算から得られる誤差拡散結果を互いの誤差拡散演算に使用し合う誤差拡散処理装置において、
前記２画素それぞれについての誤差拡散演算における誤差拡散結果を切り捨てる切り捨て回路と、前記誤差拡散結果を四捨五入する四捨五入回路とを並列的に設けてあり、
前記切り捨て回路の出力値と前記四捨五入回路の出力値との差分を求める差分手段と、該差分手段の出力を前記入力画像に加算する第１加算手段と、該第１加算手段により前記差分手段の出力が加算された前記入力画像に前記切り捨て回路での切り捨て結果を加算する第２加算手段とを備えることを特徴とする誤差拡散処理装置。
【請求項２】
入力画像の各画素の濃度値変換を行う際に、前記入力画像の相隣する２画素それぞれを注目画素とした誤差拡散演算を同じクロックに同期して行うこととし、前記２画素における誤差拡散演算から得られる誤差拡散結果を互いの誤差拡散演算に使用し合う誤差拡散処理方法において、
前記２画素それぞれについての誤差拡散演算における誤差拡散結果を切り捨てる切り捨て演算と、前記誤差拡散結果を四捨五入する四捨五入演算とを並列的に行うこととし、
前記切り捨て演算による演算結果と前記四捨五入演算による演算結果との差分を求め、求めた差分を前記入力画像に加算し、前記差分が加算された前記入力画像に前記切り捨て演算による演算結果を加算することを特徴とする誤差拡散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤差拡散法により、原画像の各画素の濃度値を変換する誤差拡散処理装置及び誤差拡散処理方法に関する。
【背景技術】
【０００２】
レーザプリンタ、インクジェットプリンタなどの記録装置にあっては、原画像の階調数を少なくして印字を行うことが多い。多値原画像を元の階調数よりも少ない階調数の画像に変換する方法の１つとして誤差拡散法が、従来から採用されている。
【０００３】
この誤差拡散法は、変換後の画像と原画像とにおける各画素の階調値（濃度値）の誤差を求め、求めた誤差に重みを付けて周囲の画素に分散させて、画像全体の階調特性を維持する処理である。画像処理の高速化に対する要求は常にあり、誤差拡散処理においても当然考慮すべき課題となっている。このような高速化の一例として特許文献１の画像処理装置には、２つの誤差拡散演算回路を並列に配置構成することにより、主走査方向の連続する２画素を同じクロックに同期して処理する方法が示されている。
【特許文献１】特開２００３−２８３８２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように主走査方向の連続する２画素を同時に処理して誤差拡散処理の高速化を実現する場合、一方の誤差拡散演算回路での演算結果により生成された誤差は自身の回路だけでなく、他方の誤差拡散演算回路に対しても振りまかれて使用されることになる。１クロックについて２画素に対する処理を行う必要があるため、１クロックで処理しなければならない演算量が必然的に多くなってしまう。この結果、所望の高速化を実現できなくなることがあるという問題がある。
【０００５】
本発明は斯かる事情に鑑みてなされたものであり、相隣する２画素それぞれを注目画素とした誤差拡散演算を同時に行う際に、誤差拡散演算による演算値を求めるために切り捨て回路と四捨五入回路とを並列的に設けることにより、画像の階調特性を良好に維持しながら、誤差拡散演算処理の高速化を実現できる誤差拡散処理装置及び誤差拡散処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る誤差拡散処理装置は、入力画像の各画素の濃度値変換を行う際に、前記入力画像の相隣する２画素それぞれを注目画素とした誤差拡散演算を同じクロックに同期して行うこととし、前記２画素における誤差拡散演算から得られる誤差拡散結果を互いの誤差拡散演算に使用し合う誤差拡散処理装置において、前記２画素それぞれについての誤差拡散演算における誤差拡散結果を切り捨てる切り捨て回路と、前記誤差拡散結果を四捨五入する四捨五入回路とを並列的に設けてあり、前記切り捨て回路の出力値と前記四捨五入回路の出力値との差分を求める差分手段と、該差分手段の出力を前記入力画像に加算する第１加算手段と、該第１加算手段により前記差分手段の出力が加算された前記入力画像に前記切り捨て回路での切り捨て結果を加算する第２加算手段とを備えることを特徴とする。
【０００７】
本発明に係る誤差拡散処理方法は、入力画像の各画素の濃度値変換を行う際に、前記入力画像の相隣する２画素それぞれを注目画素とした誤差拡散演算を同じクロックに同期して行うこととし、前記２画素における誤差拡散演算から得られる誤差拡散結果を互いの誤差拡散演算に使用し合う誤差拡散処理方法において、前記２画素それぞれについての誤差拡散演算における誤差拡散結果を切り捨てる切り捨て演算と、前記誤差拡散結果を四捨五入する四捨五入演算とを並列的に行うこととし、前記切り捨て演算による演算結果と前記四捨五入演算による演算結果との差分を求め、求めた差分を前記入力画像に加算し、前記差分が加算された前記入力画像に前記切り捨て演算による演算結果を加算することを特徴とする。
【０００８】
本発明にあっては、２画素のそれぞれにおける誤差拡散演算による誤差拡散結果を求めるための切り捨て回路と四捨五入回路とを並列的に設けて、切り捨て演算と四捨五入演算とを並列的に行っている。演算結果を互いの誤差拡散演算に相互に利用し合うクリティカルパスにあって、演算量が多い四捨五入回路に代えて演算量が少ない切り捨て回路を設ける。よって、クリティカルパスでの演算量が少なくなって誤差拡散処理の高速化を図れる。切り捨て回路に代えることにより階調特性が劣化することが懸念されるため、切り捨て演算と並行して四捨五入回路にて四捨五入演算を行う。よって、良好な階調特性を維持できる。
【００１１】
本発明にあっては、切り捨て回路の出力値と四捨五入回路の出力値との差分を注目画素の濃度値に加算する。よって、切り捨て回路を設けたことによる濃度値の減少を防止して正確な濃度値が得られる。
【発明の効果】
【００１２】
本発明では、２画素のそれぞれにおける誤差拡散演算による誤差拡散結果を求めるための切り捨て回路と四捨五入回路とを並列的に設けて、切り捨て演算と四捨五入演算とを並列的に行うようにしたので、演算結果を互いの誤差拡散演算に相互に利用し合うクリティカルパスにあって、演算量が多い四捨五入回路に代えて演算量が少ない切り捨て回路を設けるため、クリティカルパスでの演算量が少なくなって誤差拡散処理の高速化を図ることができるとともに、切り捨て演算と並行して四捨五入回路にて四捨五入演算を行うため、良好な階調特性を維持することができる。
【００１３】
本発明では、切り捨て回路の出力値と四捨五入回路の出力値との差分を注目画素の濃度値に加算するようにしたので、クリティカルパスに切り捨て回路を設けたことによる濃度値の減少を防止できて正確な濃度値を得ることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明をその実施の形態を示す図面を参照して説明する。尚、本発明は、以下の実施の形態に限定されるものではない。
【００１５】
まず、誤差拡散法の基本原理について説明する。尚、以下の説明では、２５６階調の中間調画像を０または２５５の階調値（濃度値）に２値化変換する場合を例とする。
【００１６】
まず、図１に示すような原画像について、ある注目画素に対して、その濃度値を所定の閾値と比較することによって０または２５５の何れかに変換する。この注目画素は、最初、左上隅の画素から始まって主走査方向に移動し、主走査方向に１ライン分の処理が終了すると副走査方向に沿って次ラインに移動するものとする。また、閾値は、ここでは、２５６（階調）の中間値である１２８であるとする。
【００１７】
最初、原画像における左上隅の画素の濃度値は１２９であるため、これを閾値１２８と比較すると、（注目画素の濃度値）＞（閾値）となるため、注目画素の濃度値は２５５に変換される。このとき、注目画素の濃度値を１２９から２５５に変換することにより２５５−１２９＝１２６の誤差（差分値）が生じるため、この誤差を図２に示す誤差拡散処理テーブルに基づいて周囲の画素に分散する。誤差拡散処理テーブルは、予め設定された拡散係数をマトリクス形式で示すものであり、注目画素における差分値に拡散係数を乗じた値を周囲画素に振り分ける。
【００１８】
尚、図２のように、誤差拡散処理テーブルに３×５のマトリクスを用いる場合の振りまき範囲は３×５である。誤差拡散法においては、この振りまき範囲が大きいほど、変換後の画像において高周波成分を残した写真画質に良好な画質が得られる。また、誤差拡散処理の前と後とで画像濃度が全体で保たれるように、誤差拡散処理テーブルにおける拡散係数の総和は１となるようにする。
【００１９】
ここで、例えば、注目画素の右側の画素においては、１２６（注目画素の差分値）×１０／６４（当該画素における拡散係数）≒２０（小数点以下は必要精度に応じて計算するが、本説明では簡単のため整数標記する）が振り分け値となる。但し、この振り分け値の符号は、画像全体の濃度を保存するために注目画素の差分値とは逆となり、−２０が注目画素の右側の画素に加算される。
【００２０】
図２に示す誤差拡散処理テーブルに基づいて、注目画素の周囲の画素に振り分けられる値を同様に計算すると、図３のようになる。また、図３に示した振り分け値を原画像に加算すると、図４のようになる。
【００２１】
以上により最初の注目画素についての誤差拡散が終了したため、次に、この注目画素の右側の画素を新たな注目画素として誤差拡散を行う。新たな注目画素は、先の注目画素の誤差拡散によってその濃度値が１０９となっている（図４参照）。この濃度値を先の閾値と比較した場合、（注目画素の濃度値）≦（閾値）となっているため、この注目画素の濃度値は０に変換される。このとき、注目画素を１０９から０に変換することにより０−１０９＝−１０９の誤差（差分値）が生じるため、この誤差を図２に示す誤差拡散処理テーブルに基づいて周囲の画素に分散すると、その振り分け値は図５のようになる。また、図５に示した振り分け値を図４の濃度値に加算すると、図６のようになる。
【００２２】
このように、注目画素を順次ずらしていきながら、全ての画素について誤差拡散を行うことにより、原画像をもとの階調数よりも少ない階調数（本例では０か２５５かの２階調）の画像に変換することができる。
【００２３】
次に、上述したような誤差拡散処理を実施するための装置の構成について説明する。図７は、誤差拡散処理テーブルに基づいて振り分け値を算出するための拡散誤差演算回路の構成を示す図である。拡散誤差演算回路は、比較器７０１と、誤差量算出部７０２と、乗算器７０３Ａ〜７０３Ｌと、デコーダ７０４Ａ〜７０４Ｌと、フリップフロップ（ＦＦ）７０５，７０６とを備えている。
【００２４】
比較器７０１は、入力される濃度値ＥＲＲ ＳＵＭと閾値ＴＨとを比較し、濃度値が閾値より大きい場合には、出力値ＳＤＡＴ＝１を出力し、濃度値が閾値以下である場合には、出力値ＳＤＡＴ＝０を出力する。誤差量算出部７０２は、注目画素における誤差量ＥＲＲとその誤差量の正負を示す符号信号ＳＩＧＮとを求め、求めた誤差量ＥＲＲを各乗算器７０３Ａ〜７０３Ｌへフリップフロップ７０５を介して出力するともに、求めた符号信号ＳＩＧＮを各デコーダ７０４Ａ〜７０４Ｌへフリップフロップ７０６を介して出力する。各乗算器７０３Ａ〜７０３Ｌは、入力される誤差量ＥＲＲと、誤差拡散処理テーブルに対応した拡散係数Ｗ Ａ〜Ｗ Ｌとを乗算し、その乗算結果を対応する各デコーダ７０４Ａ〜７０４Ｌへ出力する。各デコーダ７０４Ａ〜７０４Ｌは、この乗算結果に符号信号ＳＩＧＮで示される正または負の符号を付して、拡散誤差Ｅ Ａ〜Ｅ Ｌを出力する。
【００２５】
以下、このような構成をなす拡散誤差演算回路の動作について説明する。拡散誤差演算回路には、注目画素の濃度値ＥＲＲ ＳＵＭと閾値ＴＨとが入力として与えられる。尚、ここでの注目画素の濃度値ＥＲＲ ＳＵＭは、先に誤差拡散処理がなされた画素の振り分け値を加算された後の値である。これらの濃度値ＥＲＲ ＳＵＭ及び閾値ＴＨは、比較器７０１と誤差量算出部７０２とに入力される。
【００２６】
比較器７０１では濃度値ＥＲＲ ＳＵＭと閾値ＴＨとを比較することにより、注目画素の濃度値が０または２５５に変換される。すなわち、ＥＲＲ ＳＵＭ＞ＴＨである場合には、注目画素の濃度値は２５５に変換され、ＥＲＲ ＳＵＭ≦ＴＨである場合には、注目画素の濃度値は０に変換される。尚、２値化データにおいては、その出力は０または１であり、濃度値「２５５」は２値化データの「１」に相当する。したがって、ＥＲＲ ＳＵＭ＞ＴＨの場合には、比較器７０１の出力はＳＤＡＴ＝１としてドットを形成し、ＥＲＲ ＳＵＭ≦ＴＨの場合には、比較器７０１の出力はＳＤＡＴ＝０でドットを形成しない。      
【００２７】
一方、誤差量算出部７０２においては、２値化された注目画素における誤差量ＥＲＲが算出される。すなわち、ＥＲＲ ＳＵＭ＞ＴＨである場合には、上述したように注目画素の濃度値は２５５に変換されるため、ＥＲＲ＝２５５−ＥＲＲ ＳＵＭとなる。また、ＥＲＲ ＳＵＭ≦ＴＨである場合には、注目画素の濃度値は０に変換されるため、ＥＲＲ＝ＥＲＲ ＳＵＭとなる。こうして算出された誤差量ＥＲＲは、乗算器７０３Ａ〜７０３Ｌへ送られる。同時に、各乗算器７０３Ａ〜７０３Ｌには誤差拡散処理テーブルに対応する拡散係数Ｗ Ａ〜Ｗ Ｌが与えられ、誤差量ＥＲＲとそれぞれの拡散係数Ｗ Ａ〜Ｗ Ｌとの積が計算される。
【００２８】
ここで、誤差量ＥＲＲと拡散係数との乗算値は、拡散誤差の大きさを示し、乗算器７０３Ａ〜７０３Ｌのそれぞれに接続されたデコーダ７０４Ａ〜７０４Ｌに入力される。また、誤差量ＥＲＲは、ＥＲＲ ＳＵＭ＞ＴＨの場合、ＥＲＲ ＳＵＭ≦ＴＨの場合の何れにおいても０以上の値となるが、ＥＲＲ ＳＵＭ＞ＴＨの場合には、注目画素における濃度値が２５５に変換されることにより、その濃度値は増加することとなる。逆に、ＥＲＲ ＳＵＭ≦ＴＨの場合には、注目画素における濃度値は減少する。
【００２９】
したがって、画像全体の濃度を維持するためには、ＥＲＲ ＳＵＭ＞ＴＨの場合には拡散誤差は負の値とする必要があり、誤差量算出部７０２より各デコーダ７０４Ａ〜７０４Ｌに符号信号ＳＩＧＮ＝０が与えられる。０であるＳＩＧＮは、拡散誤差の符号が負であることを示し、このとき、各デコーダ７０４Ａ〜７０４Ｌは、誤差量ＥＲＲと拡散係数との乗算値の符号を負として、拡散誤差Ｅ Ａ〜Ｅ Ｌを出力する。一方、ＥＲＲ ＳＵＭ≦ＴＨの場合には、誤差量算出部７０２より各デコーダ７０４Ａ〜７０４Ｌに符号信号ＳＩＧＮ＝１が与えられる。１であるＳＩＧＮは、拡散誤差の符号が正であることを示し、このとき、各デコーダ７０４Ａ〜７０４Ｌは、誤差量ＥＲＲと拡散係数との乗算値の符号を正として、拡散誤差Ｅ Ａ〜Ｅ Ｌを出力する。これらの拡散誤差Ｅ Ａ〜Ｅ Ｌは、注目画素に対して図８に示すようなマトリクス配列を形成する。
【００３０】
上述のようにして求まった拡散誤差は、注目画素の周囲の画素に振りまかれ、順次移動する注目画素の濃度値ＥＲＲ ＳＵＭが変化する。この注目画素の濃度値ＥＲＲ ＳＵＭを求める演算手順について、図９、図１０〜１２、図１３及び図１４，１５を参照して説明する。
【００３１】
図９は、注目画素の濃度値を演算するための濃度値演算回路の構成を示す図である。濃度値演算回路は、加算器９０１Ａ〜９０１Ｋと、フリップフロップ（ＦＦ）９０２Ａ〜９０２Ｌと、加算器９０３と、ラインメモリ（ＦＩＦＯ）９０４，９０５と、リミッタ９０６，９０７と、フリップフロップ（ＦＦ）９０８〜９１２と、四捨五入回路９１３とを備えている。
【００３２】
フリップフロップ９０２Ａ〜９０２Ｋは、図７に示す前述した拡散誤差演算回路によって算出された拡散誤差Ｅ Ａ〜Ｅ Ｋのそれぞれを加算器９０１Ａ〜９０１Ｋを介して格納する。また、フリップフロップ９０２Ｌは、拡散誤差Ｅ Ｌを加算器を介さずに直接格納する。ラインメモリ９０４，９０５は、後述する拡散誤差ブロック１００１の移動に伴ってそこからはみ出た拡散誤差のデータを格納する。四捨五入回路９１３は、前段のフリップフロップ９０２Ａのデータを四捨五入して、その四捨五入結果を加算器９０３ヘ出力する。加算器９０３は、この四捨五入結果と、フリップフロップ９０８〜９１０を介して入力された原画像における初期濃度値ＩＤＩＮとを加算し、その加算結果を濃度値ＥＲＲ ＳＵＭとして出力する。
【００３３】
以下、このような構成をなす濃度値演算回路の動作について説明する。まず、第１番目の注目画素（原画像における左上隅画素）について、図７に示した拡散誤差演算回路によってこの注目画素に対する拡散誤差Ｅ Ａ〜Ｅ Ｌが算出される。算出された拡散誤差Ｅ Ａ〜Ｅ Ｌは、概念的には図１０〜１２に示すような拡散誤差ブロック１００１に格納されることとなる。
【００３４】
ここで、拡散誤差ブロック１００１は、誤差拡散処理テーブルと同サイズのマトリクスで表されるものであり、拡散誤差の累積加算及びその加算結果（累積結果）の保存を行うためのものである。すなわち、第１番目の注目画素について拡散誤差Ｅ Ａ〜Ｅ Ｌが算出されると、これらの拡散誤差は、図１０に示すように、拡散誤差ブロック１００１に格納される。尚、図１０の表記において、例えば、Ｅ１Ａは、第１番目の注目画素に対する拡散誤差Ｅ Ａを意味している。
【００３５】
これを図９に示す濃度値演算回路において説明すると以下のようになる。図７に示す拡散誤差演算回路によって算出された拡散誤差Ｅ Ａ〜Ｅ Ｋのそれぞれは、加算器９０１Ａ〜９０１Ｋを介してフリップフロップ９０２Ａ〜９０２Ｋに格納される。また、拡散誤差Ｅ Ｌは加算器を介さずに直接フリップフロップ９０２Ｌに格納される。このとき、フリップフロップ９０２Ａ〜９０２Ｌに格納されている値が、図１３に示すマトリクス配列となって拡散誤差ブロック１００１をなすものとする。
【００３６】
次いで、第２番目の注目画素に移って拡散誤差が算出される際には、図１１に示すように、注目画素の移動に伴って拡散誤差ブロック１００１も１列分だけ移動する。そして、移動された拡散誤差ブロック１００１において、第２番目の注目画素に対して算出された拡散誤差が加算される。尚、上記図１１の表記において、例えば、拡散誤差ブロック１００１の４列目のデータを例にとると、その表記の意味は以下の数１によって示される。
【００３７】
【数１】
0004906784.tif 000002
【００３８】
これを図９に示す濃度値演算回路において説明すると以下のようになる。すなわち、拡散誤差ブロック１００１が１列分移動することは、拡散誤差ブロック１００１内に格納されているデータが拡散誤差ブロック１００１の移動方向と逆の方向に１列分移動することと同じであり、例えば、第１番目の注目画素に対する拡散誤差Ｅ Ｂは、フリップフロップ９０２Ｂの位置からフリップフロップ９０２Ａの位置に移動することとなる（図１３参照）。
【００３９】
また、拡散誤差ブロック１００１には、同時に第２番目の注目画素に対するＥ Ａ〜Ｅ Ｌが格納されるため、図１１における拡散誤差ブロック１００１のフリップフロップ９０２Ａの位置を例にとると、ここには、第１番目の注目画素に対する拡散誤差Ｅ Ｂと第２番目の注目画素に対する拡散誤差Ｅ Ａとの加算値が格納される。すなわち、図９に示す濃度値演算回路においては、例えば、フリップフロップ９０２Ｂに格納されているデータ（第１番目の注目画素に対する拡散誤差Ｅ Ｂ）と第２番目の注目画素に対する拡散誤差Ｅ Ａとが加算器９０１Ａに入力されて、これらの加算値がフリップフロップ９０２Ａに送られる。
【００４０】
また、図１０に示す拡散誤差ブロック１００１においてフリップフロップ９０２Ａに対応する位置の画素は、図１１に示す拡散誤差ブロック１００１においては注目画素の位置となる。したがって、フリップフロップ９０２Ａに格納されているデータは、原画像におけるこの注目画素の初期濃度値ＩＤＩＮと加算器９０３において加算され、濃度値ＥＲＲ ＳＵＭとして出力される。こうして出力された濃度値ＥＲＲ ＳＵＭが、図７に示す拡散誤差演算回路の比較器７０１において閾値と比較されて２値化されることは、前述した通りである。
【００４１】
さらに、拡散誤差ブロック１００１が移動することによって、拡散誤差ブロック１００１からはみ出すデータは、ラインメモリ９０４，９０５に送られて格納される。すなわち、図１０に示す拡散誤差ブロック１００１においてその１列目にある拡散誤差Ｅ Ｃ，Ｅ Ｈが、図１１においては、ラインメモリ９０４，９０５にそれぞれ格納される。これは、図９に示す濃度値演算回路においては、フリップフロップ９０２Ｈにおけるデータがラインメモリ９０５に送られ、フリップフロップ９０２Ｃにおけるデータがラインメモリ９０４に送られることを示している。尚、ラインメモリ９０４，９０５において格納可能なデータの個数は、原画像の列数をｎ、拡散誤差ブロック１００１の列数をｍとした場合、ｎ−ｍとなる。
【００４２】
第３番目の注目画素に移って拡散誤差を算出する場合にも、各フリップフロップに格納されているデータの移動、及びこの注目画素に対して算出された拡散誤差の加算が同様に行われ、拡散誤差ブロック１００１、ラインメモリ９０４，９０５に格納されるデータは図１２に示すようになる。
【００４３】
こうした演算を繰り返すことにより、ｔ番目の注目画素においては、拡散誤差ブロック１００１、ラインメモリ９０４，９０５に格納されるデータは図１４に示すようになる。但し、ｔ≧２ｎ＋２であり、この場合の注目画素は原画像においては３行２列目以降となる。尚、図１４における表記において、例えば、拡散誤差ブロック１００１の１行４列目のデータを例にとると、その表記の意味は以下の数２によって示される。
【００４４】
【数２】
0004906784.tif 000003
【００４５】
上述したような誤差拡散処理は、実際には原画像の全ての画素について行われるものであるが、３行２列目よりも前の画素を注目画素としている時点では、ラインメモリ９０４，９０５に格納可能な最大数分までデータが格納されていない。例えば、原画像の１行１列目の画素を注目画素とする処理時には、ラインメモリ９０４，９０５の何れにもデータが格納されていないので、ラインメモリ９０４，９０５から拡散誤差ブロック１００１にフィードバックされる誤差値は０である。
【００４６】
原画像における３行２列目以降の画素を注目画素としている時点では、ラインメモリ９０４，９０５の両方において、データが格納可能な最大数分まで格納されている。したがって、この時点から次の注目画素に移る際には、ラインメモリ９０４，９０５において最も早く入力されたデータが読み出されて、拡散誤差ブロック１００１にフィードバックされる。これは、図９に示す濃度値演算回路においては、ラインメモリ９０５から読み出されたデータがフリップフロップ９１１及び加算器９０１Ｇを介してフリップフロップ９０２Ｇに送られ（ここで、注目画素に対する拡散誤差Ｅ Ｇが加算される）、ラインメモリ９０４から読み出されたデータがフリップフロップ９１２及び加算器９０１Ｂを介してフリップフロップ９０２Ｂに送られる（ここで、注目画素に対する拡散誤差Ｅ Ｂが加算される）ことを示している。
【００４７】
図１５は、上記図７に示した拡散誤差演算回路と上記図９に示した濃度値演算回路とを結合した誤差拡散処理装置の構成を示す図である。図１５において、図７または図９と同様の部材には同一番号を付している。また、図１５では、以降の説明を簡単化するために本願の発明に直接関係しない部材については簡略化して図示している。
【００４８】
具体的に、図７に関しては、拡散誤差Ｅ Ａを求める乗算器７０３Ａ及びデコーダ７０４ＡをまとめてＣＷＡ７０７とブロック化し、同じく拡散誤差Ｅ Ｂを求める乗算器７０３Ｂ及びデコーダ７０４ＢをまとめてＣＷＢ７０８とブロック化し、残りの拡散誤差を求める乗算器７０３Ｃ〜７０３Ｌ及びデコーダ７０４Ｃ〜７０４Ｌをまとめて２，３ライン後誤差演算部７０９とブロック化している。また、図９に関しては、１ライン前及び２ライン前からの誤差拡散結果を取得するための回路部分をまとめてＦＩＦＯ入出力誤差演算部９２０とブロック化している。
【００４９】
図１６は、高速化を図るべく、入力画像において相隣する２画素、つまり入力画像における主走査方向に連続する２画素を同時に処理するようにした誤差拡散処理装置の構成を示す図である。図１６において、図１５と同様の部材には同一番号を付している。この図１６に示す誤差拡散処理装置では、連続する２画素、つまり奇数画素と偶数画素とを同じタイミングで入力して並列処理するため、図１５の回路構成を２つ並設する構成とし、さらに演算結果から得られた誤差拡散結果を互いの演算に相互に利用し合う構成となる。
【００５０】
図１５の回路構成と図１６の回路構成とを比較すると分かるように、高速化を図った図１６の誤差拡散処理装置において、図１５の誤差拡散処理装置の回路構成から変更・削除されたものはなく、図１５と全く同等のアルゴリズムで動作する回路構成となっている。しかし、ここで問題となるのが１クロックで処理しなければならない演算量の増加である。図１５と全く同じ演算処理を２画素に対して同時に実行しているので、１クロックの間に処理する演算量は単純に考えると２倍になる。よって、この演算量の増加を抑制する工夫が必要である。
【００５１】
図１７は、図１６内で最も１クロック内で処理する演算量が多くなるパス（クリティカルパス）を抜き出して示している。このクリティカルパスにおいて、高速化を図ることを考慮した場合、演算量の抑制を簡単に図れる工夫として四捨五入演算を切り捨て演算に変更することが考えられる。四捨五入演算は条件判定が必要であるが、切り捨て演算は下位ビットを切り捨てるだけであるので、演算を必要としないため高速化が可能である。
【００５２】
しかし、単純に切り捨て演算に変更してしまうと、演算精度が落ちるので、誤差拡散処理後に得られる画像全体の濃度値が原画像の濃度値と比べて下がってしまうという課題がある。この課題を解決するために更なる工夫が必要である。
【００５３】
図１８は、処理の高速化を維持しながら、濃度値の低下も抑制できるようにした本発明の誤差拡散処理装置におけるクリティカルパスを抜き出した図である。図１８において、図１７と同様の部材には同一番号を付している。
【００５４】
図１８における誤差拡散処理装置の回路構成では、図１７の回路構成と比べて、クリティカルパスにおける四捨五入回路９１３を単純に切り捨て回路１６１に変更している。また、誤差拡散処理装置は、クリティカルパス外に、四捨五入回路１６２と、フリップフロップ１６３，１６４と、減算器１６５と、加算器１６６とを備えている。
【００５５】
四捨五入回路１６２は、加算器９０１Ａの出力をフリップフロップ１６３を介して四捨五入して、その四捨五入結果を減算器１６５ヘ出力する。また、切り捨て回路１６１は、加算器９０１Ａの出力を切り捨てて、その切り捨て結果をフリップフロップ１６４を介して減算器１６５へ出力するとともに加算器９０３へ出力する。減算器１６５は、四捨五入回路１６２からの四捨五入結果から切り捨て回路１６１からの切り捨て結果を減算し、その減算結果を加算器１６６ヘ出力する。加算器１６６は、この減算結果を原画像における初期濃度値ＩＤＩＮ１，ＩＤＩＮ２に加算する。
【００５６】
このような構成をなす本発明の誤差拡散処理装置では、単純に切り捨て回路に変更するだけでなく、図１８のような工夫を加えることで画像全体の濃度値が下がる問題を解決している。切り捨て回路１６１による切り捨て演算と平行して、四捨五入回路１６２による四捨五入演算を並列実行する。このとき、演算量が多い四捨五入演算をクリティカルパスから分断するために、加算器９０１Ａでの加算結果を一度フリップフロップ１６３でラッチしておく必要がある。
【００５７】
そして、四捨五入結果から切り捨て結果を減算器１６５で引き算し、減算結果を得る。この減算結果は、四捨五入演算と切り捨て演算との差異によって生じる濃度値の減少を引き起こす値である。したがって、この値をクリティカルパスとは異なる位置に加算することによって画像全体の濃度値が下がる問題を解決することができる。そこで、本発明では、加算器１６６にて入力画素ＩＤＩＮ１，ＩＤＩＮ２にこの減算結果を足し合わせている。この画素は誤差拡散演算の注目画素の１画素前の位置にあたるが、２画素前等であっても画像全体の濃度が変わることはない。
【００５８】
尚、図１８に示す回路構成では、２系統の両方において切り捨て演算及び四捨五入演算を並列で行うようにしているが、どちらか一方の系統の回路変更によって高速化が可能であれば、他方の系統については通常通り四捨五入回路を利用するようにしても良い。
【図面の簡単な説明】
【００５９】
【図１】２値化における誤差拡散処理が施される前の原画像の一例を示す図である。
【図２】誤差拡散処理で使用される誤差拡散処理テーブルの一例を示す図である。
【図３】図２の誤差拡散処理テーブルを用いた場合の最初の注目画素における拡散誤差の演算結果を示す図である。
【図４】図３に示す拡散誤差を図１の原画像に対して振りまいた後の濃度値を示す図である。
【図５】図２の誤差拡散処理テーブルを用いた場合の２番目の注目画素における拡散誤差の演算結果を示す図である。
【図６】図５に示す拡散誤差を図４の画像に対して振りまいた後の濃度値を示す図である。
【図７】拡散誤差演算回路の構成を示す図である。
【図８】図７の拡散誤差演算回路での演算に使用される誤差拡散処理テーブルを示す図である。
【図９】濃度値演算回路の構成を示す図である。
【図１０】注目画素を順次移動させることに伴う拡散誤差ブロック内のデータの変化を示す図である。
【図１１】注目画素を順次移動させることに伴う拡散誤差ブロック内のデータの変化を示す図である。
【図１２】注目画素を順次移動させることに伴う拡散誤差ブロック内のデータの変化を示す図である。
【図１３】図９の濃度値演算回路での演算に使用される拡散誤差ブロックを概念的に示す図である。
【図１４】図９の濃度値演算回路での演算において拡散誤差ブロック及びラインメモリに格納されるデータを示す図である。
【図１５】図７及び図９を結合した誤差拡散処理装置の構成を示す図である。
【図１６】主走査方向の２画素を同時に処理する誤差拡散処理装置の構成を示す図である。
【図１７】図１６に示す誤差拡散処理装置でのクリティカルパスを抜き出した図である。
【図１８】クリティカルパスの高速動作を図るための誤差拡散処理装置の構成を示す図である。
【符号の説明】
【００６０】
１６１  切り捨て回路
１６２  四捨五入回路
１６３，１６４  フリップフロップ
１６５  減算器
１６６  加算器
【図１】
0004906784.tif 000004
【図２】
0004906784.tif 000005
【図３】
0004906784.tif 000006
【図４】
0004906784.tif 000007
【図５】
0004906784.tif 000008
【図６】
0004906784.tif 000009
【図７】
0004906784.tif 000010
【図８】
0004906784.tif 000011
【図９】
0004906784.tif 000012
【図１０】
0004906784.tif 000013
【図１１】
0004906784.tif 000014
【図１２】
0004906784.tif 000015
【図１３】
0004906784.tif 000016
【図１４】
0004906784.tif 000017
【図１５】
0004906784.tif 000018
【図１６】
0004906784.tif 000019
【図１７】
0004906784.tif 000020
【図１８】
0004906784.tif 000021