(57)【特許請求の範囲】
【請求項１】
周期的に変化し、該変化の周期の長さが互いに異なる複数の信号値を格納する格納部を備え、着目画素の座標値から前記格納部に格納された複数の信号値を取り出し、該信号値と該信号値に各々対応する重み値とを乗算した値に基いて閾値修正値を求め、該閾値修正値により固定閾値を修正することにより修正閾値を求める閾値設定部と、
前記閾値設定部で求められた修正閾値を用いて擬似階調画像処理を行う擬似階調画像処理部と
を有する擬似階調画像処理装置。
【請求項２】
上記信号値の周期的変化が水平走査線に沿う、一次元的なものであることを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項３】
上記信号値の周期的変化が、二次元的なものであることを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項４】
上記信号値が原画像信号の座標値に対応するものであり、上記重み値が原画像階調値に依存するものであり、上記信号値と上記信号値に各々対応する重み値を掛けて重み付けされた上記複数の信号値を加算し、該加算結果を用いてｎ値化（ｎは２以上の自然数）のための閾値の修正を行うことを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項５】
上記閾値設定部は、上記加算結果に、調整係数（α）を乗算し、この乗算結果（ΔＴｈ）を固定の閾値（Ｔｈ）に加算することにより、上記ｎ値化のための閾値を得ることを特徴とする請求項４に記載の擬似階調画像処理装置。
【請求項６】
上記複数の信号値のそれぞれに掛けられる重み値が、所定の原画像階調値の所定の範囲においてゼロ以外の値であり、上記所定の範囲以外においてゼロであることを特徴とする請求項４に記載の擬似階調画像処理装置。
【請求項７】
上記所定の範囲において、上記重み値が正弦波状に変化することを特徴とする請求項６に記載の擬似階調画像処理装置。
【請求項８】
上記複数の信号値のうち、周期のより短いもののための重み値がゼロ以外の値となる上記所定の範囲が、より高い原画像階調値を含むものであることを特徴とする請求項７に記載の擬似階調画像処理装置。
【請求項９】
上記複数の信号値のための重み値がゼロ以外の値となる上記所定の範囲が、一部互いに重なりあっていることを特徴とする請求項８に記載の擬似階調画像処理装置。
【請求項１０】
上記擬似階調画像処理部が、誤差拡散法による画像処理を行なうものであることを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項１１】
上記ｎが２であることを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項１２】
上記ｎが３以上の値であることを特徴とする請求項１に記載の擬似階調画像処理装置。
【請求項１３】
上記擬似階調画像処理部が、処理画像をｍ画素×ｎライン（1≦m,n）のブロックの各々の内部で発生したｎ値量子化誤差の総和を近傍のブロックに重み値を掛けて拡散し、拡散されたブロック内で拡散誤差を所定の比率でブロック内の各画素に分配し、各画素では分配された誤差を原画像階調値に加算することにより、原画像の画素の階調値を修正する誤差拡散を行うことを特徴とする請求項３に記載の擬似階調画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、従来原画像を表わす多値画像入力信号を受け、それよりも低い階調（例えば２値）の信号を用い、特定の階調の画素の（例えば黒画素の）密度を変化させることにより、元の多値画像と同じ濃淡を感じさせるようにする擬似階調画像処理装置に関する。
【０００２】
【従来の技術】
従来、上記のごとき擬似階調画像処理方法として、誤差拡散法やディザ法がある。
【０００３】
誤差拡散法は、量子化する入力画素の階調値と出力画素の階調値との差を誤差とし、量子化する画素の周辺の画素の誤差に重み付けを施した後に量子化する画素の階調値に加算し、その加算値を固定閾値で量子化する方法であり、階調変換の際に発生する量子化誤差による階調差を補正するのに効果的である。出力画素が２値で表わされ、拡散法を一次元的に行なう場合を図１９に示す。
【０００４】
入力画素の階調Ｉに対する処理の順序は、図の左から右である。先ず、図１９（ｂ）に示す第１の画素Ｐ１は、固定閾値Ｔｈより大きいので、白（以後シンボル１と呼ぶ）と出力される。ここで、白は、図１９（ａ）に示す線の値（階調値の最大値）であり、これと入力値との差（入力値−出力値）が誤差Ｅ１（負の値）となる。この誤差Ｅ１に、該誤差を拡散させる画素が１つなので、重み値１を掛けて右隣りの第２の画素Ｐ２に加算する。第２の画素Ｐ２は、前記誤差Ｅ１を加算して修正した後の値（修正階段調値）を固定閾値Ｔｈで２値化する。ここでの出力は黒（以後シンボル０と呼ぶ）であり、生じた誤差Ｅ２（正の値）を隣の第３の画素Ｐ３に加算する。このようにして、順次誤差Ｅ１，Ｅ２，Ｅ３，．．．を加算して固定閾値Ｔｈで２値化するのが一次元の誤差拡散法である。
【０００５】
図２０は、二次元の誤差拡散法の説明図であり、主走査方向ｘ及び副走査方向ｙとして、注目画素Ｐ１に対して誤差を拡散させる近傍画素Ｐ1A，Ｐ1B，Ｐ1C，Ｐ1Dと、その近傍画素Ｐ1A，Ｐ1B，Ｐ1C，Ｐ1Dに対する重み値７／１６，３／１６，５／１６,１／１６が示されている。
【０００６】
この二次元の誤差拡散法では、一次元の誤差拡散法と同様に（入力値−出力値）の誤差を求め、この求めた誤差に、所定の重み値を掛けて走査方向ｘ，ｙの画素の階調値に拡散して加算し、その加算値を固定閾値Ｔｈで２値化している。いま２値化しようとしている着目画素Ｐ２からみると、既に処理済みの近傍４画素Ｐ2A，Ｐ2B，Ｐ2C，Ｐ2D から図２１に示すように拡散誤差が集められることと等価となる。
【０００７】
【発明が解決しようとする課題】
しかしながら前記従来方法では、プリンタ等の出力装置の特性に合わせた、画素配置の最適化を行うことができなかった。
【０００８】
即ち、変換された出力データの個々の値は、量子化誤差の値によってランダムに決定されるので、ある階調ではある特定の並びの出力データパターンにするのが好ましい場合であっても、そのような操作は不可能であった。例えば、階調が５０％の近傍のグレーの入力であった場合、チェッカーフラッグ状のパターンで擬似階調を表すのが好ましいが、そうはならない。
【０００９】
【課題を解決するための手段】
本発明の擬似階調画像処理装置は、周期的に変化し、該変化の周期の長さが互いに異なる複数の信号値を格納する格納部を備え、着目画素の座標値から前記格納部に格納された複数の信号値を取り出し、該信号値と該信号値に各々対応する重み値とを乗算した値に基いて閾値修正値を求め、該閾値修正値により固定閾値を修正することにより修正閾値を求める閾値設定部と、前記閾値設定部で求められた修正閾値を用いて擬似階調画像処理を行う擬似階調画像処理部とを有するものである。
【００１０】
本発明を用いれば、モノクロプリンタやカラープリンタで出力できる２値ないし数階調程度の階調数で、擬似的に階調を再現することができる。
【００１１】
【発明の実施の形態】
最初に本発明の基本概念を説明する。
【００１２】
まず、簡単のために一次元の場合について説明する。図１の上部には、一次元的に１６個の画素が配置されている。この階調値が最大値に対して１２／１６で、１６個の画素の内４個を黒、残りの１２個を白にしたい場合を考える。この場合、図１の下部に示すような周波数が異なる２種の周期信号を固定閾値Ｔｈに重畳して２値化すれば、図１の上部に示した画素配置が得られる。このように任意の画素配置制御は、白画素と黒画素の比率（階調値）に依存する形で、周期が互いに異なる周期信号を重ね合わせ、これにより固定閾値（Ｔｈ＝Imax/2：Imax：階調最大値）を周期的に修正することで行うことができる。
【００１３】
二次元的に処理する場合には、上記一次元の周期波形の代わりに図２（ａ）〜（ｄ）に示す閾値パターンマトリクスを用い、これを繰返して用いることにより、画面に周期性を持たせる。
【００１４】
図２（ａ）〜（ｄ）に示すパターンマトリクスＰＭ１〜ＰＭ４は、２×２、４×４、８×８、１６×１６の４種類からなる。このパターンマトリクスを画面全体に繰返し、画面全体をこのパターンマトリクスで埋め尽くすことにより、２次元の周期性を持たせる。なお、図３は、パターンマトリクスＰＭ１を画面全体で繰返す場合の配列を示し、図４は、パターンマトリクスＰＭ２を画面全体で繰返す場合の配列を示す。図３及び図４において、実線がパターンマトリスクの境界を示し、点線は一つのパターンマトリクス内の画素の境界を示す。
【００１５】
２×２のパターンマトリクスＰＭ１は周波数が高い最も周期パターンを構成し、１６×１６のパターンマトリクスＰＭ４は周波数が低い周期パターンを構成する。パターンマトリクスＰＭ１〜ＰＭ４は、各々第１ないし第４象限において異なる値（信号値）を有し、これを元に各画素に対する閾値が修正される。
【００１６】
本発明においては、入力信号の階調値は、最小値（黒色）が０、最大（白色）が２５５であるものとする。
【００１７】
この場合、誤差拡散法により２値化する場合の閾値は図５(a)から(c)に示すように、基本的には２５５／２＝１２８となる。
【００１８】
本発明においては、この閾値を下記複数のテーブル（パターンマトリクスの信号値を記憶するもの）に記憶された値（信号値）に基づき定められた値（閾値調整値）を重畳して図５(a)又は(b)のように変化させることにより入力に合わせた規則的な閾値変化を行う。
【００１９】
これら各信号値は、最大値を１２７、最小値を−１２８とすることにより、基本的な閾値１２８を０〜２５５の間で変化させることができる。又、最大値及び最小値を１２７、−１２８として割り付けたことにより、その間を３等分する値として図５(c)に示すように、４２（＝１２７−２５６／３）と−４３（１２７−２×２５６／３）を選んだ。この４つの値を第１ないし第４象限に割当て、この４つの値を元にして、入力信号に対する各象限の信号値を定めている。閾値修正に当っては、上記の４つの値に対し、入力画素値に応じたテーブル毎の重み値（重み付け係数）Ｗが乗じられ、それぞれのテーブルについて得られた値を加算し、さらに、加算結果に対して修正の度合いを調整するベース係数α（例えば、０．５程度の値が好ましい）が乗じられ、これにより、基本閾値１２８に近い範囲で調整される。
【００２０】
次に、各パターンマトリクスについて説明する。パターンマトリクス２を例にとると、これは４×４のマトリクスで、左上の象限の２×２の４つの画素に対する信号値は全て−１２８の値であり、同様に右上の象限の２×２の４つの画素に対する信号値は全て１２７の値を取る。他の象限の信号値も同様に全て同じ値を取る。他のパターンマトリクスの信号値も４つに分けた象限毎に同じ値を取るように構成されている。
【００２１】
尚、印刷する画像の総ドット数が大きい場合は、３２×３２のマトリクス、６４×６４のマトリクスと更にマトリクスの種類を増加していくと、より精度が向上する。
【００２２】
各テーブルにおける横方向に隣接する象限同士で信号値を正負逆とし、絶対値を略同じ（−１２８と１２７、４２とー４３）とする理由はフーリエ級数展開に用いる周期関数として例えば（正の期間と負の期間が同じ）正弦波を用いるのと同様に、＋の範囲（周期でいえば正の期間に相当）と−の範囲（負の期間）を同じにする為である。又、４つの象限の信号値の合計をほぼ０とすることにより、擬似階調化することによる画像濃度の変化を避けることができる。逆に言えば、この信号値の総和が０以下であれば、変換後の画像は白っぽくなり、０以上であれば黒っぽくなる。
【００２３】
尚、本発明において−１２８、１２７、４２、−４３の値を用いたが、これを−１２８，１２７，１２７，−１２８とすれば、横方向のみならず、縦方向のフーリエ展開も同時に可能となる。
【００２４】
重み値は、上記のように、各パターンマトリクスの信号値に掛けられるもので、各テーブルに対応した重み値をＷ１〜Ｗ４とすると、その値は、入力画素値に対して例えば図６に示すように変化する。各所定の入力画素値範囲でゼロ以外の値を取り、該所定の範囲以外ではゼロである。また、上記所定の入力画素値範囲内においては例えば図示のように正弦波の正側の半波の形状である。そして、より小さな周期のパターンマトリクスに対応する重み値の上記所定入力画素値範囲（ゼロ以外の値となる範囲）が、より高い入力画素値の領域に設定されている。また、パターンマトリクスを大きさ順を並べたとき、隣合うパターンマトリクスに対応した重み値の上記所定範囲は互に重なり合っている。より具体的には、最も小さいパターンマトリクスに対応した重み値Ｗ１は、上記所定範囲が１７０から２５５であり、２５５においてピークとなる正弦半波（の左半分）の形状である。２番目に小さいテーブルに対応した重み値Ｗ２は、上記所定範囲が８５から２５５であり、１７０においてピークとなる正弦半波の形状である。３番目に小さいパターンマトリクスに対応した重み値Ｗ３は、上記所定範囲が０から１７０であり、８５においてピークとなる正弦半波の形状である。最も大きいパターンマトリクスに対応した重み値Ｗ４は、上記所定範囲が０から８５であり、０においてピークとなる正弦半波（の右半分）の形状である。重み値曲線のピークはすべて１であり、互いに重なりあう範囲において、一方が次第に小さくなるに連れ、他方が次第に大きくなっており、重なり合う重み値の和が１に近い値になるように設定されている。（位相が９０度異なる正弦波を重ね合わせると、１〜１．４の範囲で変動するが、ここでは１．４も１に近い値と見る。）
このように、入力画素の画面内の位置を、図２に示す基本周期パターンマトリクスに対応付けて、その画素の位置に応じて信号値を読み出すとともに、入力画素値によって、重み値Ｗ１〜Ｗ４を決め、上記閾値調整値の元となる値（パターンマトリクスの信号値）にそれぞれ対応する重み値を乗算し、乗算結果を加算することでフーリエ積分が実現できる。
【００２５】
第１の実施の形態
図７は、本発明の第１の実施の形態の画像処理装置を示すブロック図である。図示のようにこの画像処理装置は、入力画像メモリ２と、誤差拡散部１０と、閾値設定部３０と、制御部１０と、アドレス生成部４とを有する。
【００２６】
入力画像メモリ２は、外部から入力される画素信号（０から２５５までの値を取る、２５６階調値で表わされる）を受け、各々画面内の位置に対応したアドレス（ｘ’，ｙ’で表わされる）に記憶する。
【００２７】
アドレス生成部４は、後述の制御部１０から、画面上の位置を表わすアドレスないし座標値ｘ，ｙを受け、入力画像メモリ２への書込み及び読み出しのためのアドレス（ｘ’，ｙ’）を生成する。
【００２８】
画像メモリ２に蓄えられた画素値は順に読み出され、誤差拡散部１０、閾値設定部３０による処理を受ける。読み出しの順序はラスタスキャンと同様、画面上の水平走査線に沿い、上から下へと読み出される。画面上の位置に対応したメモリ内の位置から順に読み出される。
【００２９】
誤差拡散部１０は、誤差拡散法により多値階調データを２値階調データに変換する回路ブロックである。
【００３０】
閾値設定部３０は、誤差拡散部１０で用いられる閾値を設定するである。
【００３１】
一画面分の処理が終わると、画像メモリ２の内容が書換えられる。書換えの時間中処理が中断するのを防ぐため、２画面分の容量を持つ画像メモリを用意し、２つの画面に対応する領域を交互に使うようにしても良い。
【００３２】
誤差拡散部１０は、加算部１１と、比較部１２と、０／１処理部１３と、画像出力部１４と、減算部１５と、誤差メモリ１６と、フィルタ１７とを有する。
【００３３】
加算部１１は、画像メモリ２からの出力（入力原画像の画素の階調値）にフィルタ１７からの出力を加算して修正階調値を発生し、これを比較部１２に送る。
【００３４】
比較部１２は、加算部１１からの出力Ｉ’（修正された階調値）を、閾値設定部３０からの出力（修正された閾値）Ｔｈ’と比較し、前者が後者以上であれば出力をＩmax＝２５５とし、そうでなければ出力をＩmin＝０とする。
【００３５】
０／１処理部１３は、比較部１２の出力がＩmax＝２５５のときはその出力を１（シンボル１）とし、比較部１２の出力がＩmin＝０のときはその出力を０（シンボル０）にする。
【００３６】
画像出力部１４は、０／１処理部１３の出力を、画面内の座標値を表わす情報（ｘ，ｙ）に対応づけて出力する。
【００３７】
減算部１５は、加算部１１の出力（修正階調値）と比較部１２の出力（＊変形例では、２値−２５６値変換部４’の出力）の差（２値化に伴う誤差）を求める。
【００３８】
即ち、誤差＝（修正階調値）−（２値化階調値）
で求められる。２値化階調値はＩmax＝２５５またはＩmin＝０の値を取る。
【００３９】
誤差メモリ１６は減算部１５で計算された誤差（２値化によって発生した誤差）をその時の画素位置に対応するメモリ位置に記憶する。このため、誤差メモリ１６は、２ライン分の記憶容量を有し、現在処理されている画素と同じ水平走査線上の、それより左のすべての画素、及び現在処理されている画素の属する水平走査線より一つ上の水平走査線上のすべての画素について誤差を記憶している。その誤差の計算法については後で詳細に説明する。
【００４０】
フィルタ１７は、誤差メモリ１６に記憶されている誤差を元に、現に画像メモリ２から出力されている画素（着目画素）に対して適用すべき誤差を計算して出力する。この誤差の計算に当っては、着目画素を基準とし、そのそれより前に処理された画素、具体的には、図２１に示すように着目画素の左隣の画素、着目画素の真上の画素、その左隣及び右隣の画素についての誤差を読み出し、これに近さの程度に応じた重み付け係数を掛けて加算し、加算結果を誤差として出力する。このような処理を誤差フィルタリングと言う。
【００４１】
図２１は、重み付け係数の一例をも示している。右上の画素から重み付け係数が左上の画素からの重み付け係数よりも大きいのは、処理の順の関係で、着目画素の右側の誤差を考慮に入れることができないため、これを補償するためである。
【００４２】
以上のようにして誤差拡散部１０は、誤差拡散法により擬似階調処理を行なう。
【００４３】
本発明の特徴は、誤差拡散部１０で用いる修正閾値Ｔｈ’の作成法、言換えると、これを設定する閾値設定部３０の構成にある。
【００４４】
閾値構成部３０は、４つのテーブルＴ１、Ｔ２、Ｔ３、Ｔ４と、重み付けテーブル３１と、乗算部Ｍ１〜Ｍ４と、加算部３２と、乗算部３３と加算部３４とを有する。
【００４５】
テーブル部Ｔ１〜Ｔ４は、それぞれ、周期の異なる二次元周期信号のパターンマトリクスＰＭ１〜ＰＭ４を記憶している。信号値のアドレスは、(x,y)座標値に対応付けられている。
【００４６】
パターンマトリクスＰＭ１〜ＰＭ４は図３及び図４に示すように、画面全体に繰返されているが、画面全体に対応したアドレスを持つテーブルを用意する代りに、一つのパターンマトリクスを記憶したテーブルを用意し、アドレス変換により同じ部分を繰返しアクセスすることで所望の結果を得ることができる。
【００４７】
パターンマトリクスの大きさ（画素数で表わされた大きさ）が２のべきである場合、上記アドレス変換は、例えば図８のように、アドレスの下位ビットのみを用いることで実現できる。例えば、テーブルＴ１に対しては最下位ビットのみでアクセスする。テーブルＴ２に対しては、下位２ビットでアクセスする。テーブルＴ３には下位３ビットを用いる。テーブルＴ４には下位４ビットを用いる。これにより、画像メオリ２内の全画素が順に読み出される間に、テーブルＴ１〜Ｔ４内の各位置が繰返しアクセスされる。
【００４８】
テーブルの他の例が図９に示されている。この例では、各テーブルとも記憶位置は４つ（２×２）ずつであり、一方ｘ，ｙアドレスも各１ビットずつしか入力されない。即ち、テーブルＴ１には最下位ビットのみが供給され、テーブルＴ２には下位から２番目のビットのみが供給され、テーブルＴ３には下位から３番目のビットのみが供給され、テーブルＴ４には下位から４番目のビットのみが供給される。このような構成であれば、テーブル内の同じ位置が繰返しアクセスされる。例えば、テーブルＴ４の場合、画像メモリ２の８つの画素が出力される間、テーブルＴ４内の同じ位置が繰返しアクセスされ、同じ値が出力される。
【００４９】
重み付けテーブル３１は、画像メモリから出力される入力画素値を入力とし、それに対応して重み値Ｗ１〜Ｗ４を出力する。重み値Ｗ１〜Ｗ４はそれぞれテーブルＴ１〜Ｔ４に対応する。入力画素値と重み値Ｗ１〜Ｗ４の関係は図６に示す通りである。
【００５０】
この重み値テーブル３１は入力画素の階調値により図６のグラフに対応するいずれかの値を出力する。尚、重み値として図６のような正弦波を用いる場合はテーブルに代え計算により算出するようにしてもよい。
【００５１】
乗算部Ｍ１〜Ｍ４はテーブルＴ１〜Ｔ４の出力と、対応する重み値Ｗ１〜Ｗ４を乗算する。即ち、乗算部Ｍ１はテーブルＴ１の出力と重み値Ｗ１を乗算する。乗算部Ｍ２はテーブルＴ２の出力と重み値Ｗ２を乗算する。乗算部Ｍ３はテーブルＴ３の出力と重み値Ｗ３を乗算する。乗算部Ｍ４はテーブルＴ４の出力と重み値Ｗ４を乗算する。
【００５２】
加算部３２は、乗算部Ｍ１〜Ｍ４の出力を加算する。
【００５３】
各テーブルの出力である信号値は各乗算部により重み値テーブル３１の出力である係数Ｗと掛け合わされた後加算されることにより、フーリエ展開される。
【００５４】
乗算部３３は、加算部３２の出力にベース係数αを掛ける。ベース係数αの値は制御部１０から与えられる。ベース係数の値は０．５程度に定められる。ベース係数αとの乗算により、閾値変化の範囲が調整される。
【００５５】
加算部３４は、乗算部３３の出力ΔＴｈを固定の閾値Ｔｈに加算する。閾値Ｔｈは１２８（０と２５５の中間）に定められる。
【００５６】
加算部３４の出力が修正された閾値Ｔｈ’として誤差拡散部１０の比較部１２に入力される。
【００５７】
重み値テーブル３１の値及びベース係数αの値は、出力装置（例えばプリンタ）の特性に応じて設定される。
【００５８】
なお、重み値テーブルの関数を一例として余弦波、正弦波としたが、出力装置の特性に合わせて半円あるいは三角波を用いることもできる。更に、ベース係数も出力装置の特性に応じて規則性を減じたい場合には０．４等、０．５より小さい値を用い、逆に規則性を大きくしたい場合には０．６等、０．５より大きな値を用いるとよい。
【００５９】
次に、上記の装置の動作を図１０及び図１１のフローチャートを用いて説明する。
【００６０】
step 1：最初に、入力原画像の座標値、即ち、画面上の座標値を初期化する。この初期化処理は制御部１０が行う(step 1)。
【００６１】
step 2 ：誤差メモリ１の内容を全て「０」で初期化する。メモリの初期化処理も制御部１０が行う。
【００６２】
step 3 ：誤差メモリ１６の内容の内、着目画素(図２１のＰ（ｘ，ｙ）の近傍４画素の位置に対応する誤差値（図２１参照）を読み出し、重み付き和
Ｅ(x,y)
＝Ａ(x-1,y-1)・Ｅ(x-1,y-1)
＋Ａ(x,y-1)・Ｅ(x,y-1)
＋Ａ(x+1,y-1)・Ｅ(x+1,y-1)
＋Ａ(x-1,y)・Ｅ(x-1,y)
を求め、これをフィルタリング値Ｅ(x,y)とする。ここでＥ(x-1,y-1)，Ｅ(x,y-1)，Ｅ(x+1,y-1)，Ｅ(x-1,y)はそれぞれ着目画素の近傍の画素の誤差であり、Ａ(x-1,y-1)，Ａ(x,y-1)，Ａ(x+1,y-1)，Ａ(x-1,y)は近傍の画素に与えられる重み付け計数である。このフィルタリングは、フィルタ１７が誤差メモリ１６を使用し行う処理である。
【００６３】
step 4 ：入力原画像の画素の階調値Ｉ(x,y)にＥ(x,y)を加えた修正階調値Ｉ'(x,y)を求める。この加算演算は加算部１１が行う。
【００６４】
step 5 ：着目画素の座標値(x,y)から４個のテーブルＴ１〜Ｔ４を参照し、(x,y)の値に依存したテーブル値（パターンマトリクスＰＭの信号値）Ｋｊ(x,y)とする（但し、ｊ＝１，２，３又は４）。
【００６５】
step 6 ：４個のテーブル値Ｋ(x,y))にそれぞれ対応する重み値Ｗ１〜Ｗ４を掛け、その積の総和
Ｋ１(x,y)・Ｗ１ ＋ Ｋ２(x,y)・Ｗ２
＋ Ｋ３(x,y)・Ｗ３ ＋ Ｋ４(x,y)・Ｗ４
＝Ｑ
を求める。総和Ｑを求める計算は加算部３２で行なう。
【００６６】
次に加算部３２での加算結果Ｑにαを乗算し、閾値修正値ΔＴｈ(x,y)を求める。この乗算は乗算部３３で行なう。ΔＴｈ(x,y)と固定閾値Ｔｈを加算して、修正閾値Ｔｈ'(x,y)を求める。この加算は加算部３４が行う。
【００６７】
step 7 ：Ｔｈ'(x,y)とI'(x,y)の大小比較を行う。大小比較は比較部１２が行う。Ｔｈ'(x,y)＜I'(x,y)ならば、step 8に分岐する。そうでなければstep 10に分岐する。
【００６８】
step 8 ：座標(x,y)の２値化出力シンボルを１とする。この処理は、０／１処理部１３が行う。
【００６９】
step 9 ：座標(x,y)での２値化誤差をＥ(x,y)=Ｉ'(x,y)-Ｉmaxで求め、誤差メモリ１６の所定の位置に格納する。Ｅ(x,y)の計算（Ｉ'(x,y)-Ｉmaxの減算）は減算部１５が行う。その後、step 12 （図１１）に進む。
【００７０】
step 10 ：座標(x,y)の２値化出力シンボルを０とする。この処理は０／１処理部１３が行う。
【００７１】
step 11：座標(x,y)での２値化誤差をＥ(x,y)=Ｉ'(x,y)-Ｉminで求め、誤差メモリ１６の所定の位置に格納する。Ｅ(x,y)の減算は減算部１５が行う。その後step 12に進む。
【００７２】
step 12：xがxmaxに達しているかどうか判定する。ここでxmaxは画面上の右端のx座標値である。達していれば、step 14に分岐する。達していなければstep 13に分岐する。
【００７３】
step 13：xを１だけ大きくする。その後step 2に戻る。
【００７４】
step 14：yがymaxに達しているかどうか判定する。ここでymaxは画面上の下端のx座標値である。達していれば、終了する。達していなければstep 15に分岐する。
【００７５】
step 15：xを0に戻し、yを１だけ大きくする。その後step 2に戻る。
【００７６】
以上にように、step 12〜step 15において、上記step 1 〜step 11の処理が画面上のすべの画素について行なわれたかどうかを判断し、終っていなければ、座標値制御を行ない、step 3に分岐し、次の画素について処理を行なうこととする。すべての画素について処理が終った場合、一旦処理を終了し、次の画面についての処理の開始命令を待つ。
【００７７】
以上説明した実施の形態によれば、階調特性に依存した二次元空間周波数の画素配置構造の枠組みに拘束され、拘束位置を中心にランダム性を持って変動する画素配置構造を持つ（言換えれば、大きな枠の規則性を有する）画像を生成することができる。このことにより、階調値に依存したプリンタドットのノイズ特性のキャンセルや、階調値に依存したカラードットの重なり合わせ特性の制御を行うことができ、プリンタデバイスの特性に合わせた、高品質の擬似階調画像を生成できる。
【００７８】
また、上記のようなテーブルＴ１〜Ｔ４を用いることにより、各テーブルの第２象限、第４象限の位置の画素は信号値に応じて白く変換され易くなり、第１象限、第３象限の画素は信号値に応じて黒く変換され易くなる。この様な枠組みがテーブルＴ４〜テーブルＴ１に至る階層構造で得られこれら各象限の枠組みと言う規則の中でランダムな画素変換がなされるようになる。
【００７９】
尚、擬似階調画像処理部として、誤差拡散法による処理を行なうものを用い、誤差拡散法の代りにディザ法による処理を行なうものを用いてもよい。この場合は、周期信号の信号値がディザマトリクスの数だけ存在するが、擬似階調処理を行う対象のディザ閾値にフーリエ展開された信号値を加算した結果の閾値を用いて擬似階調処理を行う。
【００８０】
第２の実施の形態
図１２は、本発明の第２の実施の形態を示すブロック図である。図７と同一の符号は同一又は対応する部材を示す。
【００８１】
図１２の画像処理装置は図７のものと類似である。異なるのは、誤差拡散部１０内の、減算部１５と誤差メモリ１６の間に、累加算部１７を挿入し、フィルタ１７と加算部１１の間に割算部２１を挿入し、制御部１０とアドレス生成部４の間に座標値変換部６を挿入したことである。
【００８２】
この実施の形態は、誤差拡散が画素毎にではなく、ブロック毎に行なわれる。ここでブロックとは、例えば図１３に示す縦ｍ個、横ｎ個（ｍ，ｎ≧１）の画素マトリクスからなる矩形の領域である。画面全体には、このような複数の矩形領域は縦横に配列されている。
【００８３】
誤差拡散部１０における画素の処理順は、第１の実施の形態のように水平走査線毎にではなく、ブロック毎に行なう。即ち、最初に最も上の行の、最も左のブロックが選択され、その中の画素を順次選択する。ブロック内における画素の選択順は、水平走査線を上から下へ、各水平走査線内では左から右へと言う順である。
【００８４】
このような順で処理を行なうため、制御部１０は、処理すべきブロックのアドレスxb, yb及びブロック内の画素の順位i (iは0からm×nの範囲で変化する）を順に出力する。座標変換部６は、xb,yb,iに基づきx,yを出力する。
【００８５】
累加算部１７は、減算部１５から供給される誤差を累積加算し、ブロックごとの総和を求める。このため、各ブロックの始めに制御部１０によりリセットされ、そのブロックのすべての画素についての誤差の累積加算が終ったら、これが誤差メモリ１６に記憶される。
【００８６】
誤差メモリ１６は、各画素についての誤差ではなく、各ブロックについての誤差を記憶する。着目画素を含むブロックと同じ行で左側の全てのブロックと、一つ上の行の全てのブロック全部とについて、誤差を記憶している。（図１４参照。）
割算部２１は、処理ブロックの誤差を画素数Ｌで割り、１画素あたりの誤差を求める。
【００８７】
上記のように、誤差拡散部１０においてブロック毎に処理を行なうのに伴い、閾値設定部３０における画素の処理順も第１の実施の形態とは異なる。しかし、その他の点では、第２の実施の形態は第１の実施の形態と同じである。
【００８８】
以下本実施の形態の動作を、図１５及び図１６のフローチャートを参照して説明する。
【００８９】
step 101 ：入力原画像の処理ブロックの座標値を初期化する。初期化処理は制御部１０が行う。
【００９０】
step 102 ：誤差メモリ１６の内容を全て０で初期化する。メモリの初期化処理は制御部１３が行う。
【００９１】
step 103 ：誤差メモリ１６の内容のうち、着目画素を含むブロックの近傍の４つのブロック（図１４参照）の誤差値を読み出し、重み付き和
Ｅb(xb,yb)
＝Ａb(xb-1,yb-1)・Ｅb(xb-1,yb-1)
＋Ａb(xb,yb-1)・Ｅb(x,yb-1)
＋Ａb(xb+1,yb-1)・Ｅb(xb+1,yb-1)
＋Ａb(xb-1,yb)・Ｅb(xb-1,yb)
を求め、これをフィルタリング値Ｅb(x,y)とする。ここでＥb(xb-1,yb-1)，Ｅ(xb,yb-1)，Ｅ(xb+1,yb-1)，Ｅ(xb-1,yb)はそれぞれ着目画素を含むブロックの近傍のブロックの誤差であり、Ａb(xb-1,yb-1)，Ａb(xb,yb-1)，Ａb(xb+1,yb-1)，Ａ(x-1,y)は近傍の画素に与えられる重み付け計数である。このフィルタリングは、フィルタ１７が誤差メモリ１６を使用して行う処理である。
【００９２】
step 104 ：座標(xb,yb)のブロック内の画素インデックスｉを初期化する。この画素インデクスｉは、ブロック内における画素の処理順を示す番号であり、左への画素が１、右下の最後の画素がｍ×ｎである。
【００９３】
step 105 ：インデックスｉの画素の階調値Ｉ(xb,yb,i)をstep 103でもとめたＥb(xb,yb)で修正し、Ｉ'(xb,yb,i)とする。この修正は加算部１１が行う。ここでＬは１ブロック内に含まれる画素数であり、Ｅb(xb,yb)の１／Ｌが各画素での修正値となる。ｍ×ｎが２のべきである場合には、Ｌで割る計算は、割算部８をシフタで構成することにより容易に行なえる。
【００９４】
step 106 ：xb,yb, i から４個のテーブルを読み、テーブル値をＫ１〜Ｋ４を得る。
【００９５】
step 107 ：４個のテーブル値Ｋ１〜Ｋ４に、乗算部Ｍ１〜Ｍ４でそれぞれ重み付け計数を掛けて、加算部３２で総和Ｑを求める。
【００９６】
step 108 ：加算部３２の出力Ｑにベース係数αをかけ、閾値の修正値ΔＴｈ(xb,yb,i)を求める。次に、加算部３４で閾値修正値ΔＴｈ（xb,yb,i)を固定閾値Ｔｈに加算して、修正閾値Ｔｈ'(xb,yb,i)とする。
【００９７】
step 109 ：比較部１２で、Ｔｈ(xb,yb,i)とＩ'(xb,yb,i)の大小比較を行う。
Ｔｈ'(xb,yb,i)＜Ｉ'(xb,yb,i)ならば、step 110に分岐し、そうでなければstep 112に分岐する。
【００９８】
step 110：座標(xb,yb,i)の２値化出力シンボルを１とする。
【００９９】
step 111：２値化誤差Ｅ(xb,yb,i)をＥ(xb,yb,i)＝Ｉ'(xb,yb,i)−Ｉmaxで求める。その後、step 114に進む。
【０１００】
step 112：座標(xb,yb,i)の２値化出力シンボルを０とする。
【０１０１】
step 113：２値化誤差Ｅ(xb,yb,i)をＥ(xb,yb,i)＝Ｉ'(xb,yb,i)−Ｉminで求める。
【０１０２】
step 114：インデックスｉを１つインクリメントし、ｉ≦Ｌならばstep 115に戻る。
【０１０３】
step 115：そうでなければ、step 116に進む。
【０１０４】
step 116：１ブロック内で発生した誤差の総和Ｅ(xb,yb)を求め、誤差メモリの所定の位置に格納する。
【０１０５】
step 117：xbがxbmaxに達しているかどうか判定する。ここでxbmaxは画面上の右端のブロックのxb座標値である。達していれば、step 119に分岐する。達していなければstep 118に分岐する。
【０１０６】
step 118：xbを１だけ大きくする。その後step 103に戻る。
【０１０７】
step 119：ybがybmaxに達しているかどうか判定する。ここでybmaxは画面上の下端のブロックのxb座標値である。達していれば、終了する。達していなければstep 120に分岐する。
【０１０８】
step 120：xbを0に戻し、ybを１だけ大きくする。その後step 103に戻る。
【０１０９】
このように、step 117〜step 120では、全てのブロックについて、処理が終了したならば処理を終了する。そうでなければ、ブロック座標位置制御を行い、step 113に戻る。
【０１１０】
第２の実施の形態によれば、階調特性に依存した二次元空間周波数の構造の枠組みの中でランダム性を持って変動する画素配置構造を持つ画像を生成することができる。このランダム性は、処理ブロックが大きくなる程減少し、ランダム製の制御も可能となる。またランダム性も制御可能である。このことにより、階調値に依存したプリンタドットのノイズ特性のキャンセルや、階調値に依存したカラードットの重なり合わせ特性の制御を行うことができ、プリンタデバイスの特性に合わせた、高品質の擬似階調画像を生成できる。
【０１１１】
なお、上記の説明では、誤差を拡散されたブロック内で各画素に対しブロック内の画素数で割って、誤差を各画素に均等に割り当てているが、各画素に対し重みを付けて分配しても良い。この重みは、例えば、ブロック内の画素の位置を考慮して定めることしても良い。
【０１１２】
第３の実施の形態
第１の実施の形態、第２の実施の形態では、２値化を行う実施の形態を示したが、多値（＞２）化を行うものに拡張することもできる。
【０１１３】
図１７に多値の一次元誤差拡散の説明図を示す。この例は４値（g0，g1，g2，g3）化を行うものであり、g0とg1の中間、g1とg2の中間、g2とg3の中間にそれぞれ閾値Ｔｈ1，Ｔｈ2，Ｔｈ3が設定されている。４値のいずれかに量子化されたときの量子化誤差が次に処理する画素の階調値を修正し、以下同様の処理を繰り返す。図１７の原画像階調値に対しては、誤差の拡散により、階調値が図の破線のように逐次修正され、量子化シンボルは、g3，g2，g3…となっている。
【０１１４】
この多値誤差拡散法についても、発明が解決しようとする課題で述べた問題があり、第１の実施の形態、第２の実施の形態と同様の構成で解決することができる。
【０１１５】
第１の実施の形態、第２の実施の形態において、比較部１２をＴｈ1，Ｔｈ2，Ｔｈ3の閾値についての４値化の比較機能を持つようにし、０／１処理部１３の代りに0/1/2/3処理部を用い、４値のシンボルを生成するようにする。他は第１の実施の形態の図７のブロック図と同様の機能で、第１の実施の形態、第２の実施の形態の多値化が行える。
【０１１６】
第４の実施の形態
入力画像が複数色プレーンによって構成されるカラー画像になっている場合を考える。図１８は第１の実施の形態において、カラー画像が入力される場合の実施の形態のブロック図を示すものである。この場合、色プレーンは３であり、各色プレーンに対応して別個の入力画像メモリ２Ｃ（シアン用）、２Ｍ（マゼンタ用）、２Ｙ（イエロー用）を有する。
【０１１７】
３つの色の信号は順に処理される。即ち、ある色（例えばＣ）について１画面分の処理が行なわれ、同じ画面について別の色（Ｍ）が処理され、最後に第３の色（Ｙ）が処理され、その後次の画面の処理に移る。
【０１１８】
図示の装置は図７に示すものと類似であるが、入力画像メモリが３つのプレーン２Ｃ、２Ｍ、２Ｙを有し、その出力側に選択器２２が設けられ、制御部８は、座標値ｘ，ｙのほか色を指定する信号ｊを出力し、閾値設定部３０は割算器３５を有する。
【０１１９】
制御部８からの座標値ｘ，ｙに基づき、アドレス発生器４からアドレスｘ’，ｙ’が発生され、これが３つの色プレーン２Ｃ、２Ｍ、２Ｙに同時に入力される。制御部８からの信号ｊにより選択器２２が制御される。即ち処理すべき色に応じて色プレーン２Ｃ、２Ｍ、２Ｙの出力の何れかが選択される。選択された色信号が符号Ｚで表わされている。
【０１２０】
Ｚ＝Ｃ、Ｍ又はＹ
である。
【０１２１】
信号Ｚに対する誤差拡散部１０内の処理は第１の実施の形態で述べたのと同様である。
【０１２２】
色プレーン２Ｃ、２Ｍ、２Ｙの出力信号及び選択器２２の信号Ｚは割算器３５に供給される。割算器では、
Ｚ／（Ｃ＋Ｍ＋Ｙ）×Ｉｍａｘ
の計算を行ない、その出力を重みテーブル３１に供給する。重みテーブル３１では、入力されるＺ／（Ｃ＋Ｍ＋Ｙ）×Ｉｍａｘに基づいて重み値Ｗ１〜Ｗ４を出力する。これ以外の点では、閾値設定部３０は第１の実施の形態と同様に動作する。
【０１２３】
Ｚ／（Ｃ＋Ｍ＋Ｙ）
の計算を行なうことにより、インクの総量に示す各色の比率で重み値を制御することができ、他の色のインクによって占有される面積も考慮して画素配置を制御することができる。即ち、インクの総量に示す比率が低い場合、比較的分散して配置し、インクの総量に示し比率が高い場合、比較的集中して配置することとなる。
【０１２４】
上記の実施の形態によれば、Ｃ、Ｍ、Ｙの各色の値が小さい場合、各色のドットをできるだけ重ねないように制御する（色毎に２次元空間配置の位相がずれるように画素配置構造の枠組を設定）ことで、ドットを分散配置し、粒状感の少ないカラー階調を再現することができる。
【０１２５】
また、Ｃ、Ｍ、Ｙの各色の値が大きい場合、色ドットをできるだけ重ねるように制御することで、ドットを集中配置（色毎に２次元空間の位相が合うように画素配置構造の枠組みを設定）し、階調特性に優れたカラー階調を再現することができる。
【０１２６】
なお、第２の実施の形態についても、テーブル部Ｔ１〜Ｔ４の構成を同様にすることで、色プレーン間の色重ね合わせの制御を行うことができる。
【０１２７】
【発明の効果】
以上のように本発明によれば、周期的に変化し、該変化の周期が互いに異なる信号値を、信号値に対応する重み値で重畳し、固定閾値に加算して固定閾値の値を修正することで、画素値配置構造の拘束条件の中で、誤差拡散法によるランダムに変動する画素配置を実現することができ、これにより、階調値に依存したプリンタドットのノイズ特性のキャンセルや、階調値に依存したカラードットの重なり合わせ特性の制御を行うことができ、プリンタデバイスの特性に合わせた、高品質の擬似階調画像を生成できる。
【図面の簡単な説明】
【図１】  本発明における一次元の誤差拡散法で得られる出力画素の一例、及び本発明で用いられる周波数の異なる２つの周期信号及びそれによる閾値の修正を示す図である。
【図２】  本発明による二次元誤差拡散法で用いられる異なる大きさのパターンマトリクスを示す図である。
【図３】  ２×２パターンマトリクスの画面上における配列を示す図である。
【図４】  ４×４パターンマトリクスの画面上における配列を示す図である。
【図５】  パターンの各象限の、閾値修正値の元となる信号値の設定の仕方を示す図である。
【図６】  入力画素の階調値に対する各パターンマトリクスに対するの重み値の変化を示す図である。
【図７】  第１の実施の形態の画像処理装置を示すブロック図である。
【図８】  一つの構成例における、パターンマトリクステーブルと、該テーブルに与えるアドレス信号を示す図である。
【図９】  他の構成例における、パターンマトリクステーブルと、該テーブルに与えるアドレス信号を示す図である。
【図１０】  図７の装置の動作を示すフローチャートである。
【図１１】  図７の装置の動作を示すフローチャートである。
【図１２】  第２の実施の形態の画像処理装置を示すブロック図である。
【図１３】  画素のブロックの構成及びその配列を示す図である。
【図１４】  着目画素を含むブロックと、その処理の際誤差を参照する近傍のブロックとの位置関係を示す図である。
【図１５】  図１２の装置の動作を示すフローチャートである。
【図１６】  図１２の装置の動作を示すフローチャートである。
【図１７】  多値の一次元誤差拡散の説明図である。
【図１８】  カラー画像を処理する装置を示すブロック図である。
【図１９】  一次元誤差拡散法を説明するための図である。
【図２０】  ある画素と、その画素における誤差を拡散する相手の画素との位置関係を示す図である。
【図２１】  着目画素とその処理の際誤差を参照する近傍の画素との位置関係を示す図である。
【符号の説明】
２：入力画像メモリ；    ８：制御部；    １０：誤差拡散部；    ３０：閾値設定部；    Ｔ１〜Ｔ４：テーブル；    ３１：重み値テーブル；    Ｍ１〜Ｍ４，３３：乗算部；    ３２、３４：加算部。
【図１】
0003698541.tif 000002
【図２】
0003698541.tif 000003
【図３】
0003698541.tif 000004
【図４】
0003698541.tif 000005
【図５】
0003698541.tif 000006
【図６】
0003698541.tif 000007
【図７】
0003698541.tif 000008
【図８】
0003698541.tif 000009
【図９】
0003698541.tif 000010
【図１０】
0003698541.tif 000011
【図１１】
0003698541.tif 000012
【図１２】
0003698541.tif 000013
【図１３】
0003698541.tif 000014
【図１４】
0003698541.tif 000015
【図１５】
0003698541.tif 000016
【図１６】
0003698541.tif 000017
【図１７】
0003698541.tif 000018
【図１８】
0003698541.tif 000019
【図１９】
0003698541.tif 000020
【図２０】
0003698541.tif 000021
【図２１】
0003698541.tif 000022