(57)【特許請求の範囲】
【請求項１】
原画像をもとの階調よりも少ない階調数の画像に変換する時に、注目画素の濃度変換によって生じる誤差を該注目画素の周囲画素に振りまく処理を、注目画素を移動させて原画像の全ての画素に対して行う誤差拡散処理方法において、
各注目画素に施す処理として、
注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換工程と、
上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出工程と、
注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出工程とを備えており、
各注目画素の上記拡散誤差算出工程で算出された拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換工程前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、
ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされることを特徴とする誤差拡散処理方法。
【請求項２】
各注目画素の上記拡散誤差算出工程では、誤差拡散処理テーブルの２行目の拡散係数が同一列の複数ライン分の拡散係数の加算値として与えられており、同一列の２行目以降の複数ライン分の拡散誤差が加算した状態で算出されることを特徴とする請求項１に記載の誤差拡散処理方法。
【請求項３】
上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定されることを特徴とする請求項１または２に記載の誤差拡散処理方法。
【請求項４】
上記拡散誤差算出工程では、拡散係数の設定が異なる複数の誤差拡散処理テーブルが予め用意されており、各注目画素における拡散誤差の算出に用いられる誤差拡散処理テーブルは、上記複数の誤差拡散処理テーブルの中からランダムに選択されると共に、
上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする時には、その分配比を、選択された誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定することを特徴とする請求項１ないし３の何れかに記載の誤差拡散処理方法。
【請求項５】
上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、予め用意された複数の分配比の中からランダムに選択されることを特徴とする請求項１または２に記載の誤差拡散処理方法。
【請求項６】
原画像をもとの階調よりも少ない階調数の画像に変換する時に、注目画素の濃度変換によって生じる誤差を該注目画素の周囲画素に振りまく処理を、注目画素を移動させて原画像の全ての画素に対して行う誤差拡散処理装置において、
各注目画素に処理を施す手段として、
注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換手段と、
上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出手段と、
注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出手段とを備えており、
上記拡散誤差算出手段で算出された各注目画素の拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換手段にて注目画素の濃度値が変換される前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、
ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされるようになっていることを特徴とする誤差拡散処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、原画像をもとの階調よりも少ない階調数の画像に変換する時に、変換後の画像における各画像の階調値と原画像における階調値との誤差を周囲の画素に分散する誤差拡散法に基づいて画像処理を行う場合の誤差拡散（誤差分散）処理方法および誤差拡散処理装置に関するものである。
【０００２】
【従来の技術】
従来より、原画像をもとの階調よりも少ない階調数の画像に変換する時には誤差拡散法という方法が採用されている。上記誤差拡散法は、変換後の画像における各画像の階調値と原画像における階調値との誤差を周囲の画素に分散する方法である。
【０００３】
上記誤差拡散法の基本原理について説明する。尚、以下の説明では、２５６階調の中間調画像を０または２５５の２値化変換する場合を例示する。
【０００４】
まず、図１３に示すような原画像に対して、ある注目画素に対して、濃度値を所定の閾値と比較することによって０または２５５の何れかに変換する。上記注目画素は、最初、左上隅の画素から始まって主走査方向に移動し、主走査方向に１ライン分の処理が終了すると副走査方向に沿って次ラインに移動するものとする。また、上記閾値は、ここでは、２５６（階調）の中間値である１２８であるとする。
【０００５】
最初、原画像における上記左上隅の画素の濃度値は１２９であるため、これを閾値１２８と比較すると、
（注目画素の濃度値）＞（閾値）
となり、該注目画素の濃度値は２５５に変換される。この時、上記注目画素を１２９から２５５に変換することにより２５５−１２９＝１２６の誤差（差分値）が生じるため、この誤差を図１４に示す誤差拡散処理テーブルに基づいて周囲の画素に分散する。上記誤差拡散処理テーブルは、予め設定された拡散計数をマトリクス形式で示す一例のものであり、上記注目画素における差分値に拡散計数を乗じた値を周囲画素に振り分ける。
【０００６】
尚、上記図１４のように、誤差拡散処理テーブルに３×５のマトリクスを用いる場合の振りまき範囲は３×５である。誤差拡散法においては、上記振りまき範囲が大きいほど、変換後の画像において高周波成分を残した写真画質に良好な画質が得られる。また、誤差拡散処理の前と後で、画像濃度が保たれるように上記誤差拡散処理テーブルにおける拡散計数の総和は１となるようにする。
【０００７】
ここで、例えば、注目画素の右側の画素においては、
１２６（注目画素の差分値）×１０／６４（当該画素における拡散計数）
≒２０（小数点以下は四捨五入、もしくは切捨てとする）
が振り分け値となる（但し、該振り分け値の符号は、画像全体の濃度を保存するために注目画素の差分値とは逆となり、−２０が注目画素の右側の画素に加算される）。上記誤差拡散処理テーブルに基づいて周囲の画素に振り分けらる値を同様に計算すると、図１５のようになる。上記図１５に示した振り分け値を原画像において振り分けると図１６のようになる。
【０００８】
以上により最初の注目画素についての誤差拡散が終了したため、次に、該注目画素の右側の画素を新たな注目画素として誤差拡散を行う。新たな注目画素は、先の注目画素の誤差拡散によってその濃度値が１０９となっており、この濃度値を先の閾値と比較すると、
（注目画素の濃度値）≦（閾値）
となっているため、該注目画素の濃度値は０に変換される。この時、上記注目画素を１０９から０に変換することにより０−１０９＝−１０９の誤差（差分値）が生じるため、この誤差を図１４に示す誤差拡散処理テーブルに基づいて周囲の画素に分散すると、その振り分け値は図１７のようになる。上記図１７に示した振り分け値を原画像において振り分けると図１８のようになる。
【０００９】
このように、注目画素を順次ずらしていきながら、全ての画素について誤差拡散を行うことにより、原画像をもとの階調よりも少ない階調数の画像に変換することができる。
【００１０】
以上は、誤差拡散法の基本原理を示したものであるが、続いて上記演算を実際に行うためのハード構成について説明する。
【００１１】
先ず、上述の誤差拡散処理テーブルに基づいて振り分け値を算出するための拡散誤差演算回路の構成を図１９に示す。上記拡散誤差演算回路には、注目画素の濃度値ＥＲＲ−ＳＵＭと閾値ＴＨとが入力として与えられる。尚、ここでの注目画素の濃度値ＥＲＲ−ＳＵＭは、先に誤差拡散処理のなされた画素の振り分け値を加算された後の値である。上記濃度値ＥＲＲ−ＳＵＭおよび閾値ＴＨは、比較器１０１および誤差量算出部１０２に入力される。
【００１２】
比較器１０１では濃度値ＥＲＲ−ＳＵＭと閾値ＴＨとを比較することにより、注目画素の濃度値が０または２５５に変換される。すなわち、ＥＲＲ−ＳＵＭ＞ＴＨである場合には、上記注目画素の濃度値は２５５に変換される。また、ＥＲＲ−ＳＵＭ≦ＴＨである場合には、上記注目画素の濃度値は０に変換される。尚、２値化データにおいては、その出力は０または１であり、濃度値が２５５は２値化データの１に相当する。したがって、ＥＲＲ−ＳＵＭ＞ＴＨの場合には比較器１０１の出力はＳＤＡＴ＝１としてドットを形成し、ＥＲＲ−ＳＵＭ≦ＴＨの場合には比較器１０１の出力はＳＤＡＴ＝０でドットを形成しない。
【００１３】
一方、誤差量算出部１０２においては、２値化された注目画素における誤差量ＥＲＲが算出される。すなわち、ＥＲＲ−ＳＵＭ＞ＴＨである場合には、上述したように上記注目画素の濃度値は２５５に変換されるため、ＥＲＲ＝２５５−ＥＲＲ−ＳＵＭとなる。また、ＥＲＲ−ＳＵＭ≦ＴＨである場合には上記注目画素の濃度値は０に変換されるため、ＥＲＲ＝ＥＲＲ−ＳＵＭとなる。こうして算出された誤差量ＥＲＲは、乗算器１０３Ａないし１０３Ｌへ送られる。同時に、上記各乗算器１０３Ａないし１０３Ｌには誤差拡散処理テーブルに対応する拡散計数Ｗ−ＡないしＷ−Ｌが与えられ、誤差量ＥＲＲとそれぞれの拡散計数Ｗ−ＡないしＷ−Ｌとの積が計算される。
【００１４】
ここで、誤差量ＥＲＲと拡散計数との積は拡散誤差の大きさを示し、乗算器１０３Ａないし１０３Ｌのそれぞれに接続されたデコーダ１０４Ａないし１０４Ｌに入力される。また、上記誤差量ＥＲＲは、ＥＲＲ−ＳＵＭ＞ＴＨの場合、ＥＲＲ−ＳＵＭ≦ＴＨの場合の何れにおいても０以上の値となるが、ＥＲＲ−ＳＵＭ＞ＴＨの場合には、注目画素における濃度値が２５５に変換されることにより、該濃度値は増加することとなる（逆に、ＥＲＲ−ＳＵＭ≦ＴＨの場合には、注目画素における濃度値は減少する）。
【００１５】
したがって、画像全体の濃度を維持するためには、ＥＲＲ−ＳＵＭ＞ＴＨの場合には拡散誤差は負の値とする必要があり、誤差量算出部１０２より各デコーダ１０４Ａないし１０４Ｌに符号信号ＳＩＧＮ＝０が与えられる。０であるＳＩＧＮは、拡散誤差の符号が負であることを示し、この時、各デコーダ１０４Ａないし１０４Ｌは、誤差量ＥＲＲと拡散計数との積の符号を負として、拡散誤差Ｅ−ＡないしＥ−Ｌを出力する。ＥＲＲ−ＳＵＭ≦ＴＨの場合には、誤差量算出部１０２より各デコーダ１０４Ａないし１０４Ｌに符号信号ＳＩＧＮ＝１が与えられる。１であるＳＩＧＮは、拡散誤差の符号が正であることを示し、この時、各デコーダ１０４Ａないし１０４Ｌは、誤差量ＥＲＲと拡散計数との積の符号を正として、拡散誤差Ｅ−ＡないしＥ−Ｌを出力する。上記拡散誤差Ｅ−ＡないしＥ−Ｌは、注目画素に対して図２０に示すマトリクス配列を形成する。
【００１６】
上述のようにして求まった拡散誤差は、上述したように注目画素の周囲画素に振りまかれ、順次移動する注目画素の濃度値ＥＲＲ−ＳＵＭが変化する。この注目画素の濃度値ＥＲＲ−ＳＵＭを求める演算手順を図２１および図２２（ａ）〜（ｃ）を参照して説明する。上記演算を行う演算回路は図２１に示される。
【００１７】
先ず、第１番目の注目画素（原画像における左上隅画素）について、上記図１９に示した拡散誤差演算回路によって該注目画素に対する拡散誤差Ｅ−ＡないしＥ−Ｌが算出される。算出された拡散誤差Ｅ−ＡないしＥ−Ｌは、概念的には図２２（ａ）〜（ｃ）に示す拡散誤差ブロック１０５に格納されることとなる。ここで、上記拡散誤差ブロック１０５は、誤差拡散処理テーブルと同サイズのマトリクスで表されるものであり、拡散誤差の累積加算およびその加算結果（蓄積結果）の保存を行うためのものである。すなわち、第１番目の注目画素について拡散誤差Ｅ−ＡないしＥ−Ｌを算出すると、これらの拡散誤差は、図２２（ａ）に示すように、拡散誤差ブロック１０５に格納される。尚、上記図２２（ａ）の表記において、例えば、Ｅ１  Ａ  は、第１番目の注目画素に対する拡散誤差Ｅ−Ａを意味する。
【００１８】
これを図２１に示す演算回路において説明すると以下のようになる。図１９に示す上記拡散誤差演算回路によって算出された拡散誤差Ｅ−ＡないしＥ−Ｋのそれぞれは、加算器１０６Ａないし１０６Ｋを介してデータレジスタ１０７Ａないし１０７Ｋに格納される。また、拡散誤差Ｅ−Ｌ  は加算器を介さずに直接データレジスタ１０７Ｌに格納される。この時、上記データレジスタ１０７Ａないし１０７Ｌに格納されている値が図２３に示すマトリクス配列となって拡散誤差ブロック１０５をなすものとする。
【００１９】
次いで、第２番目の注目画素に移って拡散誤差を算出する時には、図２２（ｂ）に示すように、注目画素の移動に伴って拡散誤差ブロック１０５も１列分だけ移動する。そして、移動された拡散誤差ブロック１０５において、２番目の注目画素に対して算出された拡散誤差が加算される。尚、上記図２２（ｂ）の表記において、例えば、拡散誤差ブロック１０５の１行４列目のデータを例にとると、その表記の意味は以下の数１によって示される。
【００２０】
【数１】
0003632830.tif 000002
【００２１】
これを図２１に示す演算回路において説明すると以下のようになる。すなわち、拡散誤差ブロック１０５が１列分移動することは、該拡散誤差ブロック１０５内に格納されているデータが拡散誤差ブロック１０５の移動方向と逆の方向に１列分移動することと同じであり、例えば、第１番目の注目画素に対する拡散誤差Ｅ−Ｂは、データレジスタ１０７Ｂの位置からデータレジスタ１０７Ａの位置に移動することとなる（図２３参照）。
【００２２】
また、上記拡散誤差ブロック１０５には、同時に２番目の注目画素に対するＥ−ＡないしＥ−Ｌが格納されるため、図２２（ｂ）における拡散誤差ブロック１０５のデータレジスタ１０７Ａの位置を例にとると、ここには、１番目の注目画素に対する拡散誤差Ｅ−Ｂと２番目の注目画素に対する拡散誤差Ｅ−Ａとの加算値が格納される。すなわち、図２１に示す演算回路においては、例えば、データレジスタ１０２Ｂに格納されているデータ（１番目の注目画素に対する拡散誤差Ｅ−Ｂ  ）と２番目の注目画素に対する拡散誤差Ｅ−Ａとが加算器１０６Ａに入力されて、これらの加算値がデータレジスタ１０７Ａに送られる。
【００２３】
また、図２２（ａ）に示す拡散誤差ブロック１０５においてデータレジスタ１０７Ａに対応する位置の画素は、図２２（ｂ）に示す拡散誤差ブロック１０５においては注目画素の位置となる。したがって、データレジスタ１０７Ａに格納されているデータは、加算器１０８において原画像における該注目画素の初期濃度値ＩＤＩＮと加算され、ＥＲＲ−ＳＵＭとして出力される。こうして出力されたＥＲＲ−ＳＵＭが、図１９に示す拡散誤差演算回路の比較器１０１において閾値と比較され２値化されることは、既に説明した通りである。
【００２４】
さらに、上記拡散誤差ブロック１０５が移動することによって、該拡散誤差ブロック１０５からはみ出すデータは、ラインメモリ（ＦＩＦＯ）に送られて格納される。すなわち、図２２（ａ）に示す拡散誤差ブロック１０５において該拡散誤差ブロック１０５の１列目にある拡散誤差Ｅ−ＣおよびＥ−Ｈが、図２２（ｂ）においては、ラインメモリ１０９および１１０に格納される。これは、図２１に示す演算回路においては、データレジスタ１０７Ｈにおけるデータがラインメモリ１１０に送られ、データレジスタ１０７Ｃにおけるデータがラインメモリ１０９に送られることを示している。尚、上記ラインメモリ１０９および１１０において格納可能なデータの個数は、原画像の列数をｎ、拡散誤差ブロック１０５の列数をｍとした場合、ｎ−ｍとなる。
【００２５】
第３番目の注目画素に移って拡散誤差を算出する場合にも、各データレジスタに格納されているデータの移動、および該注目画素に対して算出された拡散誤差の加算が同様に行われ、拡散誤差ブロック１０５、ラインメモリ１０９および１１０に格納されるデータは図２２（ｃ）に示すようになる。
【００２６】
こうした演算を繰り返すことにより、ｔ番目の注目画素においては、拡散誤差ブロック１０５、ラインメモリ１０９および１１０に格納されるデータは図２４に示すようになる。但し、ｔ≧２ｎ＋２であり、この時の注目画素は原画像においては３行２列目以降となる。尚、上記図２４における表記において、例えば、拡散誤差ブロック１０５の１行４列目のデータを例にとると、その表記の意味は以下の数２によって示される。
【００２７】
【数２】
0003632830.tif 000003
【００２８】
上記誤差拡散処理は、実際には原画像の全ての画素について行われるものであるが、３行２列目よりも前の画素を注目画素としている時点では、ラインメモリ１０９および１１０に格納可能な最大数分までデータが格納されていない。例えば、原画像の１行１列目の画素を注目画素とする処理時には、ラインメモリ１０９および１１０の何れにもデータが格納されていないのでラインメモリ１０９および１１０から拡散誤差ブロック１０５にフィードバックされる誤差値は０である。
【００２９】
注目画素が原画像における３行２列目以降の時点では、ラインメモリ１０９および１１０の両方において、データが格納可能な最大数分格納されている。したがって、この時点から次の注目画素に移る時には、ラインメモリ１０９および１１０において最も早く入力されたデータが読み出され、拡散誤差ブロック１０５にフィードバックされる。これは、図２１に示す演算回路においては、ラインメモリ１１０から読み出されたデータが加算器１０６Ｇを介してデータレジスタ１０７Ｇに送られ（ここで、注目画素に対する拡散誤差Ｅ−Ｇが加算される）、ラインメモリ１０９から読み出されたデータが加算器１０６Ｂを介してデータレジスタ１０６Ｂに送られる（ここで、注目画素に対する拡散誤差Ｅ−Ｂが加算される）ことを示している。
【００３０】
【発明が解決しようとする課題】
ところが、上記従来の構成では、振りまき範囲が３×５の場合、副走査方向の２行分の拡散誤差を保存するために２つのラインメモリを用いて処理を行っていた。すなわち、従来の誤差拡散処理方法では、（振りまき範囲の行数−１）の数のラインメモリが必要であり、画像処理の精度を上げるために振りまき範囲を大きくすると、演算処理回路におけるコストアップを招来するという問題が生じる。
【００３１】
本発明は、上記の問題点を解決するためになされたもので、その目的は、振りまき範囲を大きくとっても演算処理回路におけるコストアップを招来することなく、画像処理の精度を上げることができる誤差拡散処理方法を提供することにある。
【００３２】
【課題を解決するための手段】
本発明の誤差拡散処理方法は、上記の課題を解決するために、原画像をもとの階調よりも少ない階調数の画像に変換する時に、注目画素の濃度変換によって生じる誤差を該注目画素の周囲画素に振りまく処理を、注目画素を移動させて原画像の全ての画素に対して行う誤差拡散処理方法において、各注目画素に施す処理として、注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換工程と、上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に副走査方向の行数が３ライン以上である所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出工程と、注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出工程とを備えており、各注目画素の上記拡散誤差算出工程で算出された拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換工程前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされることを特徴としている。
【００３３】
また、本発明の誤差拡散処理装置は、上記の課題を解決するために、原画像をもとの階調よりも少ない階調数の画像に変換する時に、注目画素の濃度変換によって生じる誤差を該注目画素の周囲画素に振りまく処理を、注目画素を移動させて原画像の全ての画素に対して行う誤差拡散処理装置において、各注目画素に処理を施す手段として、注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換手段と、上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出手段と、注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出手段とを備えており、上記拡散誤差算出手段で算出された各注目画素の拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換手段にて注目画素の濃度値が変換される前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされるようになっていることを特徴としている。
【００３４】
上記の構成によれば、原画像をもとの階調よりも少ない階調数の画像に変換するために、上記注目画素濃度値変換工程にて注目画素の濃度を閾値と比較することにより該注目画素の濃度値を変換し、上位拡散誤差算出工程にて上記注目画素の濃度変換によって生じる誤差を該注目画素の周囲画素に振りまく。振りまかれる拡散誤差は、所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じることで算出される。また、上記誤差拡散処理テーブルにおいて、各拡散係数は注目画素の位置関係が設定されている。
【００３５】
上記拡散係数は、上記誤差拡散処理テーブルと同サイズのマトリクスで表される拡散誤差ブロックに格納されていくことで、各注目画素に対して先の注目画素で算出された拡散誤差の累積値が保存される。拡散誤差ブロックに保存される値は、各画素が注目画素となって注目画素濃度値変換工程が行われる前に、注目画素濃度値算出工程にて注目画素の初期濃度値に加算される。
【００３６】
上記各工程は、注目画素を移動させることにより原画像の全ての画素に対して施されるが、上記拡散誤差ブロックは注目画素と所定の位置関係をもって設定されるため、注目画素の移動に伴って上記拡散誤差ブロックからはみ出すデータが生じる。このようなデータはラインメモリに一旦格納され、注目画素濃度値算出工程前に上記拡散誤差ブロックにフィードバックされる。但し、この時、上記拡散誤差ブロックはその行数が３ライン以上であるため、同一列の２ライン分以上のデータが同時に該拡散誤差ブロックからはみ出し、これら複数のライン分のデータが加算された状態でラインメモリに格納される。そして、上記ラインメモリから拡散誤差ブロックにフィードバック時には、元のライン数分に分配されてフィードバックされる。
【００３７】
これにより、画像処理の精度を上げるために、振りまき範囲（特に、上記マトリクスの行数）を大きくとっても使用するラインメモリ数の増加を招かず、演算処理回路におけるコストアップの回避することができる。
【００３８】
また、上記誤差拡散処理方法では、各注目画素の上記拡散誤差算出工程で、誤差拡散処理テーブルの２行目の拡散係数が同一列の複数ライン分の拡散係数の加算値として与えられ、同一列の２行目以降の複数ライン分の拡散誤差が加算した状態で算出される構成とすることができる。
【００３９】
上記構成によれば、上記拡散誤差算出工程において、算出すべき拡散誤差の数を削減することができ、演算処理回路の構成をより簡略化することができる。
【００４０】
また、上記誤差拡散処理方法では、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定される構成とすることができる。
【００４１】
上記構成によれば、ラインメモリへの格納時に一旦加算されてデータを、加算前の元の比率に近い値に分配することができ、注目画素濃度値算出工程にて適切な量のデータを注目画素にフィードバックすることができる。
【００４２】
また、上記誤差拡散処理方法では、上記拡散誤差算出工程にて、拡散係数の設定が異なる複数の誤差拡散処理テーブルが予め用意されており、各注目画素における拡散誤差の算出に用いられる誤差拡散処理テーブルは、上記複数の誤差拡散処理テーブルの中からランダムに選択されると共に、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする時には、その分配比を、選択された誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定する構成、あるいは、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、予め用意された複数の分配比の中からランダムに選択される構成とすることができる。
【００４３】
上記構成によれば、ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする時の分配比について、各画素毎に変化が与えられる。この場合、一定の分配比で処理を行なう場合に比べて、２値化時の周期性が緩和され、従来の誤差拡散で発生しやすい中間調付近でのテクスチャ（周期的模様）を解消することができる。
【００４４】
また、前者の構成では、選択された誤差拡散処理テーブルの各行における拡散係数の比率を出力する演算装置を装備し、各注目画素毎に分配比を算出する必要があるが、実際には、上記分配比は、必ずしも各行における拡散係数の比率に連動させる必要はなく、後者の構成のように、予め複数の分配比を格納するテーブルを装備して、これら複数の分配比の中からランダムに選択することで、上記演算装置を省いて回路を小さくし、かつ高速処理を行なうことが可能となる。
【００４５】
【発明の実施の形態】
本発明の実施の一形態について図１ないし図１２に基づいて説明すれば、以下の通りである。本発明の誤差拡散処理方法は、例えば、画像形成装置等において適用されるものであり、本実施の形態に係る画像形成装置の構成を図２に例示する。
【００４６】
上記画像形成装置は、上面に透明なガラス等からなる原稿台５１を有している。この原稿台５１の下方には、スキャナ光学系５２が配されている。このスキャナ光学系５２は原稿台５１上に載置される原稿に光を照射する露光用光源５３と、原稿からの反射光を、例えば図中の破線で示すように、このスキャナ光学系５２内の結像レンズ５４を通した向こう側（右側）に配置された光電変換素子（ＣＣＤ）５５に導く複数の反射鏡と、光路中に配される前記結像レンズ５４と、前記ＣＣＤ５５とを備えている。以上がスキャナ部の説明である。
【００４７】
上記ＣＣＤ５５によって読み取られた原稿画像データは、所定の画像処理が施され、レーザスキャニングユニット（以下、ＬＳＵと称する）５６により感光体５７の表面に照射されるレーザ光を制御する。これにより、上記感光対５７の表面には上記原稿画像データに応じた静電潜像が形成される。感光体５７は、矢印Ａ方向に回転駆動されるドラム形状をなしており、この感光体５７の周囲には、レーザ照射点から感光体の回転方向に向かって、レーザによって露光された感光体５７表面の静電潜像をトナーにより可視像化する現像装置５８、感光体５７上のトナー像を用紙に転写する転写チャージャ５９、感光体５７表面の残留トナーを除去するクリーニング装置６０、感光体５７を所定の電位に帯電させる主帯電器６１、および感光体５７のレーザ照射点に向かってレーザを照射させる前記ＬＳＵ５６等が順に設けられる。以上が画像形成部の説明である。
【００４８】
また、転写紙は用紙カセット６２に収められる。用紙カセット６２の先端部には転写紙Ｐを給紙するための半月状ローラ６３が配されており、下流側に向かって（便宜上、転写紙Ｐの流れ出すカセット側を上流、排紙側を下流とする）転写紙の通過を検知するためのレジスト前検知スイッチ６４、前記レジスト前検知スイッチ６４の信号を基に感光体上のトナー像と転写紙の位置あわせを行なうレジストローラ６５、感光体上のトナー像を転写紙Ｐに転写する転写チャージャ５９、転写紙上のトナー像を熱により定着させる上定着ローラ，下定着ローラからなる定着部６６、定着ローラを転写紙が通過したことを検知する定着紙検知スイッチ６７、排紙ローラ側で転写紙が通過したことを検知する排紙検知スイッチ６８、転写紙を排出するための前記排紙ローラ６９が配置されている。
【００４９】
転写紙は、前記画像形成部の横に排紙される。かつ、その排紙は前記用紙カセット６２の上部且つ前記スキャナの下部に排出される。
【００５０】
以下に本発明の誤差拡散処理方法について、実施例１ないし４を挙げて説明する。
【００５１】
〔実施例１〕
振りまき範囲が３×５の場合を例にとると、本発明の誤差拡散処理方法では、従来２つのラインメモリにおいて格納されていた２ライン分の拡散誤差を１つのラインメモリにまとめて保存することで演算処理回路のコストダウンを図ると共に、３×５の振りまき範囲を近似的に実現して高精度な誤差拡散処理を行うことができる。
【００５２】
すなわち、注目画素の移動に伴って拡散誤差ブロックからラインメモリに移行するデータは、振りまき範囲が３×５の時、該誤差拡散ブロックの２行目および３行目におけるデータであり、２ライン分存在するため、従来ではこれらのデータを２つのラインメモリに格納していた。これに対し、本実施例１に係る誤差拡散処理では、拡散誤差ブロックからラインメモリに移行する２ライン分のデータを１つのラインメモリにまとめて保存する。上記１つのラインメモリに格納されたデータは、誤差拡散処理演算が進むと、再び拡散誤差ブロックにフィードバックされるが、その時点で所定比率に応じて再度２ライン分のデータに分配され、誤差拡散ブロックの注目画素が存在する１行目と、２行目とにフィードバックされる。これにより、近似的に従来の誤差拡散処理を少ないラインメモリで実現できる。
【００５３】
本実施例１の誤差拡散処理を実際に行うためのハード構成について以下に説明する。
【００５４】
先ず、注目画素に対して拡散誤差を算出する拡散誤差演算回路の構成は、従来と同じく図１９に示すものとなる。すなわち、図１９における比較器１０１が、特許請求の範囲に記載の注目画素濃度値変換手段に相当する。また、図１９における誤差量算出部１０２、および乗算器１０３Ａないし１０３Ｌが、特許請求の範囲に記載の拡散誤差算出手段に相当する。そして、上述のようにして求まった拡散誤差を注目画素の周辺画素に振りまき、注目画素を順次移動した時の拡散誤差ブロック内のデータ演算を行う演算回路は図１に示すものとなる。
【００５５】
上記図１に示す演算回路では、図１９に示す拡散誤差演算回路によって求まった拡散誤差Ｅ−ＡないしＥ−Ｇ，Ｅ−ＩないしＥ−Ｋのそれぞれは、加算器１Ａないし１Ｇ，１Ｉないし１Ｋを介してデータレジスタ２Ａないし２Ｇ，２Ｉないし２Ｋに格納される。拡散誤差Ｅ−Ｈは、加算器１Ｈおよび１Ｃを介してデータレジスタ２Ｃに格納される。すなわち、上記データレジスタ２Ｃには、図２３に示す拡散誤差ブロックにおいて、データレジスタ１０７Ｃおよび１０７Ｈに格納されるべき値が加算された状態で格納されることとなる。また、拡散誤差Ｅ−Ｌは加算器を介さずに直接データレジスタ２Ｌに格納される。したがって、この時、上記データレジスタ２Ａないし２Ｋ，２Ｉないし２Ｌに格納されている値が図３に示すマトリクス配列となって拡散誤差ブロック３をなすものとする。
【００５６】
そして、注目画素を次の画素に移動すると、上記データレジスタ２Ｃに格納されている値がラインメモリ４に格納される。すなわち、上記誤差拡散処理方法では、上記データレジスタ２Ｃに格納されている値は拡散誤差ブロックの同一列の２ライン分（すなわち、同一列の２行目及び３行目における２画素分）加算値であるため、１つのラインメモリ４によって２ライン分の拡散誤差を保存できる。そして、この時、上記ラインメモリ４から読み出される値があれば、これも２画素分の拡散誤差の加算値であるため、再び２画素分の拡散誤差に分配され誤差拡散ブロック３に戻される。
【００５７】
これを図１に示す演算回路において説明すると以下のようになる。すなわち、上記ラインメモリ４から読み出されたデータは、データレジスタ５および加算器１Ｂを介してその一部（４４／６４）がデータレジスタ２Ｂへ入力され、残り（２０／６４）が加算器１Ｇを介してデータレジスタ２Ｇへフィードバックされる。つまり、本実施例１における誤差拡散処理では、ラインメモリ４から読み出された値に４４／６４を乗じた値、および２０／６４を乗じた値のそれぞれが、図２１に示す従来構成において、ラインメモリ１０９から読み出された値、およびラインメモリ１１０から読み出された値に相当する。
【００５８】
また、データレジスタ２Ａに格納されているデータは、加算器６において原画像における注目画素の初期濃度値ＩＤＩＮと加算され、ＥＲＲ−ＳＵＭとして出力される。すなわち、上記加算器６が、特許請求の範囲に記載の注目画素濃度値算出手段に相当する。こうして出力されたＥＲＲ−ＳＵＭが、図１９に示す拡散誤差演算回路の比較器１０１において閾値と比較され２値化されることは、既に説明した通りである。
【００５９】
尚、上記説明における分配比率である４４／６４および２０／６４は、適切な値を任意に設定可能であるが、拡散誤差の算出時に使用される誤差拡散処理テーブルが図４に示すような拡散係数を有する場合には、１行目の拡散係数の総和をＳ０（＝Ｗ−Ａ＋Ｗ−Ｂ）、２行目の拡散係数の総和をＳ１（＝Ｗ−Ｃ＋Ｗ−Ｄ＋Ｗ−Ｅ＋Ｗ−Ｆ＋Ｗ−Ｇ）、３  行目の拡散係数の総和をＳ２（＝Ｗ−Ｈ＋Ｗ−Ｉ＋Ｗ−Ｊ＋Ｗ−Ｋ＋Ｗ−Ｌ）とした場合、データレジスタ２Ｂへ入力される値の分配値を（Ｓ０＋Ｓ１）／（Ｓ０＋Ｓ１＋Ｓ２）、データレジスタ２Ｇへフィードバックされる値の分配値をＳ２／（Ｓ０＋Ｓ１＋Ｓ２）とするのが望ましい。また、上記２つの分配値の和は１となる必要がある。
【００６０】
また、近年では、６００ｄｐｉと１２００ｄｐｉとの解像度の異なった印字モードを同一の装置で切り替えて印字可能な画像形成装置が商品化されている。このような画像形成装置では、解像度を上げると主走査方向の画素数も増加するため、例えばＡ４サイズの場合、６００ｄｐｉ印字時には約７５００画素のラインメモリ２本を使用して通常の誤差拡散を行い、１２００ｄｐｉ印字時には約１５０００画素（７５００画素の２倍の画素数）のラインメモリ２本を必要とするのが従来の構成であった。
【００６１】
しかしながら、このような手法では、ラインメモリの増加を招き、誤差拡散のためのコストが高くなる。このため、本実施の形態に係る誤差拡散処理では、誤差拡散を施す原画像データを原画像誤差拡散ブロックと補間画像誤差拡散ブロックとに分離し、それぞれのブロックにて７５００画素のラインメモリ１本ずつを使用して誤差拡散処理を行う。すなわち、原画像誤差拡散ブロックと補間画像誤差拡散ブロックとのそれぞれにおいて、上述した誤差拡散処理を行うことで、１２００ｄｐｉの画像であっても誤差拡散の周波数をむやみに上げることなく、ラインメモリの本数も少なくすることが可能となり、ラインメモリコストの低減を図ることが可能となる。
【００６２】
ここで、原画像データを原画像誤差拡散ブロックと補間画像誤差拡散ブロックとに分離する方法について、図５を参照して説明する。
【００６３】
上記原画像誤差拡散ブロックのデータは、原画像データをレジスタ７および８によってラッチし、２クロック遅延させて転送することによって得られる。また、補間画像誤差拡散ブロックのデータは補間回路９によって生成されるものであり、該補間回路９には原画像データとレジスタ７によって１クロック遅延された出力データとが入力される。上記補間回路９では、入力される上記２つのデータを加算器９ａにて加算し、さらに加算されたデータを１ＢＩＴ右シフトすることで原画像間の補間データを生成する。上記補間回路９で生成された補間データは、レジスタ１０により１クロックラッチされることで上記原画像誤差拡散ブロックのデータの転送タイミングと同期がとられ、補間画像誤差拡散ブロックとして転送される。
【００６４】
上記図５の回路によって、２クロックで入力された原画像データから原画像誤差拡散ブロックのデータと補間画像誤差拡散ブロックのデータとを同時に転送することができる。
【００６５】
尚、原画像誤差拡散ブロックおよび補間画像誤差拡散ブロックのそれぞれに対応して出力された２ｂｉｔの出力データは、再度ラインバッファ（ラインメモリ）調整して出力することで、元の画像とすることができる。
【００６６】
〔実施例２〕
上記実施例１では、拡散誤差ブロック３の２行目、３行目の拡散誤差を別々に算出した後、同一列の拡散誤差を加算してラインメモリ４に格納している。これに対し、本実施例２に係る処理では、拡散誤差の算出段階で２行目、３行目の拡散誤差を別々に算出することは行わず、２行目、３行目の拡散誤差を加算した状態で算出している。
【００６７】
本実施例２における誤差拡散処理テーブルを図６に示す。上記誤差拡散処理テーブルを実施例１で用いた誤差拡散処理テーブル（図４参照）と比較すると以下のような違いがある。すなわち、図６の誤差拡散処理テーブルを用いて図４の誤差拡散処理テーブルと同じ演算結果を得ようとする場合には、図６に示す上記誤差拡散処理テーブルの１行目の拡散係数Ｗ−ＡおよびＷ−Ｂは、図４の誤差拡散処理テーブルと同じ拡散係数が与えらるが、図６の誤差拡散処理テーブルの２行目には、同一列の２ライン分（２画素分）の拡散誤差をまとめて算出するための拡散係数Ｗ−Ｃ’およびＷ−Ｇ’が与えられる。ここで、例えば、拡散係数Ｗ−Ｃ’は、図４の誤差拡散処理テーブルにおける同一列の２行目および３行目の拡散係数Ｗ−ＣおよびＷ−Ｈの和となる値とすればよい。
【００６８】
図６の誤差拡散処理テーブルを用いて拡散誤差を算出する場合の拡散誤差演算回路を図７に示す。上記拡散誤差演算回路では、図１９に示した拡散誤差演算回路と同様に、注目画素の濃度値ＥＲＲ−ＳＵＭと閾値ＴＨとが入力として与えられ、比較器１１および誤差量算出部１２に入力される。上記比較器１１および誤差量算出部１２は、図１９における比較器１０１および誤差量算出部１０２と同様の構成であり、上記比較器１１は濃度値ＥＲＲ−ＳＵＭと閾値ＴＨとを比較することにより注目画素の２値化を行い、上記誤差量算出部１２は２値化された注目画素における誤差量ＥＲＲを算出する。すなわち、本実施例２の構成では、比較器１１が特許請求の範囲に記載の注目画素濃度値変換手段に相当し、誤差量算出部１２および乗算器１３Ａ〜１３Ｇが拡散誤差算出手段に相当する。
【００６９】
上記誤差量算出部１２にて算出された誤差量ＥＲＲは、乗算器１３Ａないし１３Ｇへ送られる。同時に、上記各乗算器１３Ａないし１３Ｇには誤差拡散処理テーブルに対応する拡散計数Ｗ−Ａ，Ｗ−Ｂ，Ｗ−Ｃ’〜Ｗ−Ｇ’が与えられ、誤差量ＥＲＲとそれぞれの拡散計数Ｗ−Ａ，Ｗ−Ｂ，Ｗ−Ｃ’〜Ｗ−Ｇ’との積が計算される。
【００７０】
ここで、誤差量ＥＲＲと拡散計数Ｗ−Ａ，Ｗ−Ｂとの積は１画素分の拡散誤差の大きさを示すが、誤差量ＥＲＲと拡散計数Ｗ−Ｃ’〜Ｗ−Ｇ’との積は同一列の２ライン分（２画素分）の拡散誤差が加算された値を示している。また、乗算器１３Ａないし１３Ｇでの算出値は、該乗算器１３Ａないし１３Ｇのそれぞれに接続されたデコーダ１４Ａないし１４Ｇに入力される。
【００７１】
上記デコーダ１４Ａないし１４Ｇにおいて、ＥＲＲ−ＳＵＭ＞ＴＨの場合には誤差量算出部１２より符号信号ＳＩＧＮ＝０が与えられて誤差量ＥＲＲと拡散計数との積の符号を負とすると共に、ＥＲＲ−ＳＵＭ≦ＴＨの場合には、誤差量算出部１０２より各デコーダ１０４Ａないし１０４Ｌに符号信号ＳＩＧＮ＝１が与えられて誤差量ＥＲＲと拡散計数との積の符号を正とすることは、図１９に示す拡散誤差演算回路と同様である。これにより、上記デコーダ１４Ａないし１４Ｇからは、拡散誤差Ｅ−Ａ，Ｅ−Ｂ，Ｅ−Ｃ’〜Ｅ−Ｇ’が出力される（但し、拡散誤差Ｅ−Ｃ’〜Ｅ−Ｇ’は、同一列の２ライン分（２画素分）の拡散誤差の加算値である）。
【００７２】
次に、上記拡散誤差演算回路にて求められた拡散誤差を用い、拡散誤差ブロックの演算および注目画素の濃度値ＥＲＲ−ＳＵＭを演算する演算回路を図８に示す。上記演算回路では、拡散誤差Ｅ−Ａ，Ｅ−Ｂ，Ｅ−Ｃ’〜Ｅ−Ｇ’のそれぞれは、加算器１５Ａないし１５Ｇを介してデータレジスタ１６Ａないし１６Ｇに格納される。
【００７３】
そして、注目画素を次の画素に移動すると、上記データレジスタ１６Ｃに格納されている値がラインメモリ１７に格納される。すなわち、上記誤差拡散処理方法では、上記データレジスタ１６Ｃに格納されている値は拡散誤差ブロックの同一列の２ライン分（２画素分）の加算値であるため、実施例１のラインメモリ４と同様に、１つのラインメモリ１７によって２ライン分の拡散誤差を保存できる。そして、この時、上記ラインメモリ１７から読み出される値があれば、これも２画素分の拡散誤差の加算値であるため、再び２画素分の拡散誤差に分配され誤差拡散ブロックに戻される。
【００７４】
これを図８に示す演算回路において説明すると以下のようになる。すなわち、上記ラインメモリ１７から読み出されたデータは、データレジスタ１８および加算器１５Ｂを介してその一部（４４／６４）がデータレジスタ１６Ｂへ入力され、残り（２０／６４）が加算器１５Ｇを介してデータレジスタ１６Ｇへフィードバックされる。
【００７５】
また、データレジスタ１６Ａに格納されているデータは、加算器１９において原画像における注目画素の初期濃度値ＩＤＩＮと加算され、ＥＲＲ−ＳＵＭとして出力される。すなわち、本実施例２の構成では、上記加算器１９が特許請求の範囲に記載の注目画素濃度値算出手段に相当する。
【００７６】
以上のように、本実施例２に係る誤差拡散処理では、拡散誤差の算出段階で２行目、３行目の拡散誤差を別々に算出することは行わず、２行目、３行目の拡散誤差を加算した状態で算出している。このため、図７に示す拡散誤差演算回路および図８に示す演算回路において、乗算器、デコーダ、加算器、およびデータレジスタ等の数を減らすことができ、回路規模を小さくすることができる。
【００７７】
〔実施例３〕
上記実施例１および２の誤差拡散処理では、誤差拡散処理テーブルはただ一つであり、ラインメモリから拡散誤差ブロックへフィードバックする時の分配比率も固定である。
【００７８】
これに対し、本実施例３に係る誤差拡散処理では、図９（ａ）に示すように、誤差拡散処理テーブルを予め複数設定しておき、カウンタ等を用いて誤差拡散処理テーブルを注目画素の１ドット毎に変更する。同時に、選択された誤差拡散処理テーブルの拡散係数に基づいて、拡散誤差ブロックへフィードバックされるデータの分配値を決定する。尚、ここでは、実施例１で説明した図１の演算回路を用いて誤差拡散処理を行う場合を例示している。
【００７９】
拡散誤差の算出時に使用される誤差拡散処理テーブルが決定されると、実施例１で説明したのと同様に、該誤差拡散処理テーブル１行目の拡散係数の総和をＳ０（＝Ｗ−Ａ＋Ｗ−Ｂ）、２行目の拡散係数の総和をＳ１（＝Ｗ−Ｃ＋Ｗ−Ｄ＋Ｗ−Ｅ＋Ｗ−Ｆ＋Ｗ−Ｇ）、３行目の拡散係数の総和をＳ２（＝Ｗ−Ｈ＋Ｗ−Ｉ＋Ｗ−Ｊ＋Ｗ−Ｋ＋Ｗ−Ｌ）とし、データレジスタ２Ｂへ入力される値の分配値Ｐ（＝（Ｓ０＋Ｓ１）／（Ｓ０＋Ｓ１＋Ｓ２））、データレジスタ２Ｇへフィードバックされる値の分配値Ｌ（＝Ｓ２／（Ｓ０＋Ｓ１＋Ｓ２））を演算する。尚、分配値ＰおよびＬの総和は１となる必要がある。
【００８０】
尚、上記分配値ＰおよびＬの値は誤差拡散処理テーブルが選択される度に演算するのではなく、図９（ｂ）に示すように、予め各誤差拡散処理テーブル毎に、データレジスタ２Ｂへ入力される値の分配値Ｐｎとデータレジスタ２Ｇへフィードバックされる値の分配値をＬｎとを演算した結果をテーブル化しておいてもよい。
【００８１】
また、各注目画素において拡散誤差の演算に用いる誤差拡散処理テーブルに対するアドレス値は、昇順または降順ではなく、乱数機を用いてランダムにアクセスしＷ−ＡないしＷ−Ｌまでの１組の拡散係数を得てもよい。
【００８２】
乱数を求めるには、例えば、図１０に示すような回路を用いればよい。上記回路は、複数のレジスタを直列に組み合わせ、うち２カ所の所定レジスタを排他的論理和したデータを最下位ｂｉｔに入力させてループすることで実現できる。図１０の回路では、４つのレジスタ２０〜２３を用意し、レジスタ２０および２１の出力を排他的論理和したデータを最下位ｂｉｔであるレジスタ２３入力している。
【００８３】
各レジスタ２０〜２３のデータはクロックをトリガにして右シフトし、図１１に示すように、最下位３ｂｉｔを図９（ａ）、（ｂ）に示す複数の誤差拡散処理テーブルのテーブルナンバー０〜７と対応させることでランダムに拡散係数を変化させることができる。
【００８４】
以上のように、本実施例３の構成では、ラインメモリから拡散誤差ブロックへフィードバックされるデータの分配比（分配値ＰｎおよびＬｎの比）が注目画素の１ドット毎に変更される。このため、２値化時の周期性が緩和され、従来の誤差拡散処理で発生しやすい中間調付近のテクスチャ（周期的模様）を解消することができる。
【００８５】
〔実施例４〕
上記実施例３では、拡散係数の異なる誤差拡散処理テーブルを予め複数設定しておき、データレジスタ２Ｂへ入力される値の分配値Ｐ、およびデータレジスタ２Ｇへフィードバックされる値の分配値Ｌを各誤差拡散処理テーブル毎に演算して、ラインメモリから拡散誤差ブロックへフィードバックされるデータ量を分配している。
【００８６】
これに対し、本実施例４に係る誤差拡散処理では、図１２に示すように、誤差拡散処理テーブルの拡散係数は固定とし、拡散係数とは関係なく分配値ＰｎおよびＬｎの組み合わせを予め複数用意して、上記実施例３と同様にカウンタ若しくは乱数を用いて用いる分配値を注目画素毎に決定する。
【００８７】
この方法であれば、上記実施例３と同様に、２値化時の周期性が緩和され中間調付近のテクスチャ（周期的模様）を解消することができると共に、複数の誤差拡散処理テーブルを持つ必要がなく、また、分配値を演算する回路も廃止でき、簡単な回路構成を実現できる。
【００８８】
以上のように、本実施の形態に係る誤差拡散処理方法は、原画像をもとの階調よりも少ない階調数の画像に変換する時に、変換後の画像における各画像の階調値と原画像における階調値との誤差を周囲の画素に分散するために、注目画素を閾値と比較することによって濃度値を変換し、この濃度変換によって生じる注目画素の誤差を所定のマトリクスによって表される周囲画素に分散させる誤差拡散処理方法において、上記マトリクスの副走査方向のライン数が３以上であり、２行目以下の拡散誤差を注目画素として閾値と比較されるまでの間、複数ライン分の拡散誤差を同一のラインメモリにまとめて保存し、該ラインメモリに保存された拡散誤差を読み出す時に元のライン数分に分配して、その一部を注目画素ラインに入力するものである。
【００８９】
これにより、振りまき範囲（マトリクス）を大きくとってもラインメモリ数の増加を招かず、演算処理回路におけるコストアップを招来することなく、画像処理の精度を上げることができる。
【００９０】
【発明の効果】
本発明の誤差拡散処理方法は、以上のように、各注目画素に施す処理として、注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換工程と、上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に副走査方向の行数が３ライン以上である所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出工程と、注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出工程とを備えており、各注目画素の上記拡散誤差算出工程で算出された拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換工程前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされる構成である。
【００９１】
また、本発明の誤差拡散処理装置は、以上のように、各注目画素に処理を施す手段として、注目画素の濃度を閾値と比較することによって、該注目画素の濃度値を変換する注目画素濃度値変換手段と、上記注目画素の濃度変換前と変換後の濃度差を誤差とし、該誤差に所定サイズのマトリクスにて表される誤差拡散処理テーブルの各要素である拡散係数を乗じて、誤差と拡散係数との積をテーブルに各拡散係数と同一位置にある周囲画素に振りまかれる拡散誤差として算出する拡散誤差算出手段と、注目画素の原画像における初期濃度値に、先に注目画素としての処理が行われた他の画素において算出された拡散誤差を加算して、該注目画素の変換直前の濃度値を算出する注目画素濃度値算出手段とを備えており、上記拡散誤差算出手段で算出された各注目画素の拡散誤差は、上記注目画素との周囲に上記誤差拡散処理テーブルと同サイズの拡散誤差ブロックを設けて、該拡散誤差ブロックに注目画素の周囲画素に分散される拡散誤差の累積値として格納していき、注目誤差の移動に伴って、拡散誤差ブロックからはみ出す拡散誤差については、同一列の複数ライン分の拡散誤差を加算して１つのラインメモリへ格納し、注目画素濃度値変換手段にて注目画素の濃度値が変換される前に、ラインメモリから読み出して再度拡散誤差ブロックにフィードバックされるようにすると共に、ラインメモリから出力されて上記拡散誤差ブロックへフィードバックされるデータは、ラインメモリへの格納時における加算前の元のライン数分に分散してフィードバックされるようになっている構成である。
【００９２】
それゆえ、注目画素の移動に伴って上記拡散誤差ブロックからはみ出すデータはラインメモリに一旦格納され、注目画素濃度値算出工程前に上記拡散誤差ブロックにフィードバックされが、この時、同一列の２ライン分以上のデータが加算された状態でラインメモリに格納され、上記ラインメモリから拡散誤差ブロックにフィードバック時には、元のライン数分に分配されてフィードバックされる。これにより、画像処理の精度を上げるために、振りまき範囲（特に、上記マトリクスの行数）を大きくとっても使用するラインメモリ数の増加を招かず、演算処理回路におけるコストアップの回避することができるという効果を奏する。
【００９３】
また、上記誤差拡散処理方法では、各注目画素の上記拡散誤差算出工程で、誤差拡散処理テーブルの２行目の拡散係数が同一列の複数ライン分の拡散係数の加算値として与えられ、同一列の２行目以降の複数ライン分の拡散誤差が加算した状態で算出される構成とすることができる。
【００９４】
それゆえ、上記拡散誤差算出工程において、算出すべき拡散誤差の数を削減することができ、演算処理回路の構成をより簡略化することができるという効果を奏する。
【００９５】
また、上記誤差拡散処理方法では、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定される構成とすることができる。
【００９６】
それゆえ、ラインメモリへの格納時に一旦加算されてデータを、加算前の元の比率に近い値に分配できるため、適切な量のデータを注目画素にフィードバックすることができるという効果を奏する。
【００９７】
また、上記誤差拡散処理方法では、上記拡散誤差算出工程にて、拡散係数の設定が異なる複数の誤差拡散処理テーブルが予め用意されており、各注目画素における拡散誤差の算出に用いられる誤差拡散処理テーブルは、上記複数の誤差拡散処理テーブルの中からランダムに選択されると共に、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする時には、その分配比を、選択された誤差拡散処理テーブルの各行における拡散係数の比率に応じて設定する構成、あるいは、上記ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする分配比が、予め用意された複数の分配比の中からランダムに選択される構成とすることができる。
【００９８】
それゆえ、ラインメモリに保存された拡散誤差を読み出して拡散誤差ブロックへフィードバックする時の分配比について、各画素毎に変化が与えられ、２値化時の周期性が緩和されて、従来の誤差拡散で発生しやすい中間調付近でのテクスチャ（周期的模様）を解消することができるという効果を奏する。
【００９９】
また、後者の構成では、予め複数の分配比を格納するテーブルを装備して、これら複数の分配比の中からランダムに選択することで、回路を小さくし、かつ高速処理を行なうことが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すものであり、実施例１の誤差拡散処理装置において拡散誤差ブロック内のデータ演算を行う演算回路の構成を示す回路図である。
【図２】本発明の誤差拡散処理装置を適用可能な画像形成装置の概略構成を示す断面図である。
【図３】図１の演算回路での演算に使用される拡散誤差ブロックを概念的に示す説明図である。
【図４】実施例１の拡散誤差演算回路での演算に使用される誤差拡散処理テーブルを示す説明図である。
【図５】原画像データを原画像誤差拡散ブロックと補間画像誤差拡散ブロックとに分離する回路を示すを回路図である。
【図６】実施例２の拡散誤差演算回路での演算に使用される誤差拡散処理テーブルを示す説明図である。
【図７】実施例２の誤差拡散処理装置において、拡散誤差演算回路の構成を示す回路図である。
【図８】実施例２の誤差拡散処理装置において、拡散誤差ブロック内のデータ演算を行う演算回路の構成を示す回路図である。
【図９】図９（ａ）は、実施例３の誤差拡散処理装置において、複数設定された誤差拡散処理テーブルを示す説明図であり、図９（ｂ）は、各誤差拡散処理テーブルにおける分配値の演算結果テーブルを示す説明図である。
【図１０】図９（ａ）および図９（ｂ）に示す複数の誤差拡散処理テーブルからランダムに誤差拡散処理テーブルを選択する場合に用いる乱数機の一例を示す回路図である。
【図１１】上記乱数機により決定される乱数を示す説明図である。
【図１２】実施例４の誤差拡散処理装置において、１組の誤差拡散処理テーブルに対して分配値が複数設定された例を示す説明図である。
【図１３】２値化における誤差拡散処理が施される前の原画像の一例を示す説明図である。
【図１４】上記誤差拡散処理で使用される誤差拡散処理テーブルの一例を示す説明図である。
【図１５】上記誤差拡散処理テーブルを用いた場合に、図１３の原画像に対して最初の注目画素における拡散誤差の演算結果を示す説明図である。
【図１６】図１５に示す拡散誤差を図１３の原画像に対して振りまいた後の濃度値を示す説明図である。
【図１７】図１４に示す誤差拡散処理テーブルを用いた場合に、図１３の原画像に対して２つ目の注目画素における拡散誤差の演算結果を示す説明図である。
【図１８】図１７に示す拡散誤差を図１６の原画像に対して振りまいた後の濃度値を示す説明図である。
【図１９】従来の誤差拡散処理装置において、拡散誤差演算回路の構成を示す回路図である。
【図２０】上記拡散誤差演算回路での演算に使用される誤差拡散処理テーブルを示す説明図である。
【図２１】従来の誤差拡散処理装置において、拡散誤差ブロック内のデータ演算を行う演算回路の構成を示す回路図である。
【図２２】図２２（ａ）〜（ｃ）は、図１９および図２１の誤差拡散処理装置において、注目画素を順次移動させることに伴う、拡散誤差ブロック内のデータの変化を示す説明図である。
【図２３】図２１の演算回路での演算に使用される拡散誤差ブロックを概念的に示す説明図である。
【図２４】図２１の演算回路での演算において、拡散誤差ブロックおよびラインメモリに格納されるデータを示す説明図である。
【符号の説明】
３                                  拡散誤差ブロック
４、１７                            ラインメモリ
６、１９                            加算器（注目画素濃度値算出手段）
１１、１０１                        比較器（注目画素濃度値変換手段）
１２、１０２                        誤差量算出部（拡散誤差算出手段）
１３Ａ〜１３Ｇ、１０３Ａ〜１０３Ｇ  乗算器（拡散誤差算出手段）
【図１】
0003632830.tif 000004
【図２】
0003632830.tif 000005
【図３】
0003632830.tif 000006
【図４】
0003632830.tif 000007
【図５】
0003632830.tif 000008
【図６】
0003632830.tif 000009
【図７】
0003632830.tif 000010
【図８】
0003632830.tif 000011
【図９】
0003632830.tif 000012
【図１０】
0003632830.tif 000013
【図１１】
0003632830.tif 000014
【図１２】
0003632830.tif 000015
【図１３】
0003632830.tif 000016
【図１４】
0003632830.tif 000017
【図１５】
0003632830.tif 000018
【図１６】
0003632830.tif 000019
【図１７】
0003632830.tif 000020
【図１８】
0003632830.tif 000021
【図１９】
0003632830.tif 000022
【図２０】
0003632830.tif 000023
【図２１】
0003632830.tif 000024
【図２２】
0003632830.tif 000025
【図２３】
0003632830.tif 000026
【図２４】
0003632830.tif 000027