(57)【要約】【課題】  出力画像に紋様やざらつき感を生じにくくする。【解決手段】  −２５５〜２５５の範囲で乱数値を発生させて変数Ｔ１に代入し（Ｓ１５１）、この値が２２４より大きいか否かを判定する（Ｓ１５２）。そして、２２４より大きいと判定した場合には（Ｓ１５２：ＹＥＳ）、−２５５〜２５５の範囲で乱数値を発生させ、この値を４で割り１２８を加えた値（６４〜１９２の乱数値）を、誤差拡散処理に用いるしきい値Ｔの値に決定する（Ｓ１５３）。一方、２２４以下であると判定した場合には（Ｓ１５２：ＮＯ）、しきい値Ｔの値を２に決定する（Ｓ１５４）。このため、値の低いしきい値Ｔ（Ｔ＝２）が高確率で選択されつつ、値の高いしきい値Ｔ（６４〜１９２の乱数）が低確率でランダムに選択される。したがって、濃度が低い入力画像に対して２値化処理を行った場合にも、出力画像に紋様やざらつき感を生じにくくすることができる。【選択図】  図１２
2005078317.tif 000002
【特許請求の範囲】
【請求項１】
多階調の入力画像データに対して誤差拡散処理を行うことにより、該入力画像データの階調数よりも低い階調数の出力画像データを生成する画像処理装置において、
前記誤差拡散処理に用いられるしきい値を設定する複数の設定手段と、
当該画像処理装置が前記誤差拡散処理を実行する際に、処理対象の各画素について前記複数の設定手段の中からランダムに１つの設定手段を選択し、その選択した設定手段に当該画素についてのしきい値を設定させるしきい値選択手段と、
を備え、
前記複数の設定手段には、第１の設定手段と、該第１の設定手段に比べ平均的に高いしきい値を設定する第２の設定手段とが含まれていること、
を特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記しきい値選択手段は、前記第１の設定手段を前記第２の設定手段に比べ高い割合で選択すること、
を特徴とする画像処理装置。
【請求項３】
請求項１又は請求項２に記載の画像処理装置において、
前記第２の設定手段は、前記しきい値として乱数値を設定すること、
を特徴とする画像処理装置。
【請求項４】
請求項３に記載の画像処理装置において、
前記第１の設定手段は、前記しきい値として、前記第２の設定手段により設定されるしきい値の振れ幅より小さい振れ幅の乱数値を設定すること、
を特徴とする画像処理装置。
【請求項５】
請求項１ないし請求項３の何れか１項に記載の画像処理装置において、
前記第１の設定手段は、前記しきい値として固定値を設定すること、
を特徴とする画像処理装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載の画像処理装置において、
前記しきい値選択手段は、複数の乱数が格納された乱数発生器から所定の順序で参照した乱数に基づき前記設定手段を選択すること、
を特徴とする画像処理装置。
【請求項７】
請求項６に記載の画像処理装置において、
前記しきい値選択手段は、ｎライン分（ｎは自然数）の画素を処理するごとに異なる乱数発生器を用いること、
を特徴とする画像処理装置。
【請求項８】
請求項６に記載の画像処理装置において、
前記しきい値選択手段は、
前記乱数発生器における乱数の各格納位置を示す値をとるとともに、その値が処理対象の画素ごとに所定の順序で変化する変数を用いて、該変数の示す格納位置から乱数を参照するようになっており、さらに、ｎライン分（ｎは自然数）の画素を処理するごとに、前記変数を、初期値の異なる複数の変数のうちの何れか１つに切り替えること、
を特徴とする画像処理装置。
【請求項９】
請求項６に記載の画像処理装置において、
前記しきい値選択手段は、
前記乱数発生器における乱数の各格納位置を示す値をとるとともに、その値が処理対象の画素ごとに所定の順序で変化する変数を用いて、該変数の示す格納位置から乱数を参照するようになっており、さらに、ｎライン分（ｎは自然数）の画素を処理するごとに前記変数の値をランダムに変更すること、
を特徴とする画像処理装置。
【請求項１０】
請求項１ないし請求項５の何れか１項に記載の画像処理装置において、
前記しきい値選択手段は、乱数を計算により発生させる乱数計算手段を有しており、該乱数計算手段が発生した乱数に基づき前記設定手段を選択すること、
を特徴とする画像処理装置。
【請求項１１】
請求項１ないし請求項１０の何れか１項に記載の画像処理装置において、
当該画像処理装置は、
複数の色が重なり合うことでカラー画像を表現する各色の入力画像データに対して前記誤差拡散処理を行うことにより、各色の出力画像データを生成するものであり、
複数の乱数が格納された乱数発生器から所定の順序で参照した乱数を使用して前記誤差拡散処理を行うようになっており、
さらに、前記誤差拡散処理で使用する乱数を参照するための乱数発生器を、該誤差拡散処理で処理対象となっている入力画像データの色に応じて、複数の乱数発生器の中から選択する乱数発生器選択手段を備えていること、
を特徴とする画像処理装置。
【請求項１２】
請求項１１に記載の画像処理装置において、
前記複数の乱数発生器の種類は、前記複数の色の種類よりも少ないこと、
を特徴とする画像処理装置。
【請求項１３】
請求項１ないし請求項１０の何れか１項に記載の画像処理装置において、
当該画像処理装置は、
複数の色が重なり合うことでカラー画像を表現する各色の入力画像データに対して前記誤差拡散処理を行うことにより、各色の出力画像データを生成するものであり、
複数の乱数が格納された乱数発生器における各乱数の格納位置を示す値をとるとともに、その値が処理対象の画素ごとに所定の順序で変化する変数を用いて、該乱数発生器における該変数の示す格納位置から参照した乱数を使用して前記誤差拡散処理を行うようになっており、
さらに、前記誤差拡散処理で使用する乱数を参照するための変数を、該誤差拡散処理で処理対象となっている入力画像データの色に応じて、初期値の異なる複数の変数の中から選択する変数選択手段を備えていること、
を特徴とする画像処理装置。
【請求項１４】
多階調の入力画像データに対して誤差拡散処理を行うことにより、該入力画像データの階調数よりも低い階調数の出力画像データを生成する画像処理方法であって、
前記誤差拡散処理を実行する際に、処理対象の各画素について、該誤差拡散処理に用いられるしきい値を設定する複数の設定パターンであって第１の設定パターンと該第１の設定パターンに比べ平均的に高いしきい値を設定する第２の設定パターンとが含まれた複数の設定パターンの中から、ランダムに１つの設定パターンを選択し、その選択した設定パターンで当該画素についてのしきい値を設定すること、
を特徴とする画像処理方法。
【請求項１５】
多階調の入力画像データに対して誤差拡散処理を行うことにより、該入力画像データの階調数よりも低い階調数の出力画像データを生成する画像処理装置としてコンピュータを機能させる画像処理プログラムであって、
コンピュータを、
前記誤差拡散処理に用いられるしきい値を設定する複数の設定手段であって第１の設定手段と該第１の設定手段に比べ平均的に高いしきい値を設定する第２の設定手段とが含まれた複数の設定手段、
前記誤差拡散処理を実行する際に、処理対象の各画素について前記複数の設定手段の中からランダムに１つの設定手段を選択し、その選択した設定手段に当該画素についてのしきい値を設定させるしきい値選択手段、
として機能させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多階調の入力画像データから低階調数の出力画像データを生成する誤差拡散処理に関するものである。
【背景技術】
【０００２】
従来、多階調の入力画像データから低階調数（例えば２値）の出力画像データを生成する技術として、誤差拡散処理が知られている。
ここで、２５６階調の入力画像データを２値化する場合の誤差拡散処理について簡単に説明する。
【０００３】
まず、入力画像データにおける処理対象の画素（注目画素）の画素濃度Ｉを、この注目画素の周辺画素についての２値化誤差ｅを加味して補正することにより、補正濃度Ｉ’を算出する。すなわち、既に２値化処理が完了した画素については、その２値化処理によって生じた２値化誤差ｅが記憶されるようになっており、この２値化誤差ｅを、注目画素に対する位置に応じた割合でその注目画素の画素濃度Ｉに加えることにより、補正濃度Ｉ’を求めるのである。ここで、２値化誤差ｅを加える割合は、例えば図１９に示す誤差分配マトリクスに基づき決定する。この誤差分配マトリクスにおいて、各数値は、注目画素（＊）に対する周辺画素の位置に応じた重み付け係数を表している。そして、この誤差分配マトリクスに従い、周辺画素についての２値化誤差ｅとその周辺画素に対応する重み付け係数とを乗算した値を注目画素の画素濃度Ｉに加えることで、補正濃度Ｉ’が算出される。
【０００４】
続いて、このようにして算出した補正濃度Ｉ’と、あらかじめ決められている固定のしきい値Ｔ（例えば１２８）とを比較する。この比較の結果、補正濃度Ｉ’がしきい値Ｔ以上であれば、出力濃度Ｏを２５５とし、補正濃度Ｉ’がしきい値Ｔ未満であれば、出力濃度Ｏを０とする。
【０００５】
そして、補正濃度Ｉ’と出力濃度Ｏとの差を、当該画素について生じた２値化誤差ｅとして記憶する。
以上のような処理を入力画像データの各画素について行うことにより、２値化された出力画像データが生成される。
【０００６】
ところで、こうした誤差拡散処理には、低濃度かつ均一濃度の画像を処理した場合にドットの規則的な発生による紋様が生じやすいという欠点がある。このため、サイズの大きい誤差分配マトリクスを用いて紋様を生じにくくする必要があるが、誤差分配マトリクスのサイズが大きいほど処理時間が長くなってしまう。
【０００７】
これに対し、しきい値Ｔの値を処理対象の画素ごとにランダムに設定することで紋様の発生を防止するようにしたものがある（例えば、特許文献１参照。）。
【特許文献１】特開昭５７−１２５５７９号公報（第２−３頁、第２図）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述のように、しきい値Ｔの値を処理対象の画素ごとにランダムに設定すれば、ドットの規則的な発生が解消されるため、紋様の発生を防止することができる。
しかしながら、この手法では、ドットの不規則な発生によってざらつき感が生じるという欠点がある。
【０００９】
本発明は、こうした問題にかんがみてなされたものであり、出力画像に紋様やざらつき感を生じにくくすることを目的としている。
【課題を解決するための手段】
【００１０】
上記目的を達成するためになされた請求項１に記載の画像処理装置は、多階調の入力画像データに対して誤差拡散処理を行うことにより、その入力画像データの階調数よりも低い階調数の出力画像データを生成するものである。そして、本装置は、誤差拡散処理に用いられるしきい値を設定する複数の設定手段と、当該画像処理装置が誤差拡散処理を実行する際に、処理対象の各画素について複数の設定手段の中からランダムに１つの設定手段を選択し、その選択した設定手段に当該画素についてのしきい値を設定させるしきい値選択手段とを備えている。また、本装置において、複数の設定手段には、第１の設定手段と、この第１の設定手段に比べ平均的に高いしきい値を設定する第２の設定手段とが含まれている。
【００１１】
このため、本画像処理装置によれば、低濃度かつ均一濃度の入力画像に対して誤差拡散処理を行った場合にも、出力画像に紋様やざらつき感を生じにくくすることができる。以下、この理由について説明する。
【００１２】
例えば、誤差拡散処理に用いられるしきい値を固定値にした場合には、ドットを均等に分散させる効果は高いが、ドットが周期的に発生することで紋様が生じやすいという問題がある。このため、サイズの大きい誤差分配マトリクスを用いて紋様の発生を抑制する必要があり、処理時間が大幅に長くなってしまう。
【００１３】
一方、誤差拡散処理に用いられるしきい値を乱数値にした場合には、ドットの周期的な発生が防止されることから紋様は生じにくくなるが、ドットを均等に分散させる効果が低いため、全体としてざらついた感じとなる。
【００１４】
これに対し、本画像処理装置では、複数の設定手段の中からランダムに選択した設定手段にしきい値を設定させるため、例えば、第１の設定手段により設定される平均的に低い値のしきい値によってドットを均等に分散しつつ、第２の設定手段により設定される平均的に高い値のしきい値によって紋様の発生を抑制する、といったことが可能となる。このため、サイズの小さい誤差分配マトリクスを用いて処理時間を短縮しつつ、紋様やざらつきの発生を防止することができる。
【００１５】
次に、請求項２に記載の画像処理装置は、上記請求項１の装置において、しきい値選択手段が第１の設定手段を第２の設定手段に比べ高い割合で選択すること、を特徴としている。本画像処理装置によれば、誤差拡散処理に用いられるしきい値として、第１の設定手段により設定される平均的に低い値のしきい値が、第２の設定手段により設定される平均的に高い値のしきい値に比べ高い割合で設定されることとなるため、ドットを均等に分散してざらつきを生じにくくする効果を高くすることができる。
【００１６】
次に、請求項３に記載の画像処理装置は、上記請求項１又は２の装置において、第２の設定手段が、誤差拡散処理に用いられるしきい値として乱数値を設定すること、を特徴としている。このため、本画像処理装置によれば、第２の設定手段によってしきい値が設定された場合におけるドットの発生の規則性を低下させることで、紋様の発生を防止する効果を高くすることができる。
【００１７】
次に、請求項４に記載の画像処理装置は、上記請求項３の装置において、第１の設定手段が、誤差拡散処理に用いられるしきい値として、第２の設定手段により設定されるしきい値の振れ幅より小さい振れ幅の乱数値を設定すること、を特徴としている。このため、本画像処理装置によれば、第１の設定手段によってしきい値が設定された場合におけるドットの発生の分散性を向上させることで、ドットを均等に分散してざらつきを生じにくくする効果を高くすることができる。
【００１８】
次に、請求項５に記載の画像処理装置は、上記請求項１〜３の何れかの装置において、第１の設定手段が、誤差拡散処理に用いられるしきい値として固定値を設定すること、を特徴としている。このため、本画像処理装置によれば、第１の設定手段によってしきい値が設定された場合におけるドットの発生の分散性を向上させることで、ドットを均等に分散してざらつきを生じにくくする効果を高くすることができる。
【００１９】
次に、請求項６に記載の画像処理装置は、上記請求項１〜５の何れかの装置において、しきい値選択手段が、複数の乱数が格納された乱数発生器から所定の順序で参照した乱数に基づき設定手段を選択すること、を特徴としている。このため、本画像処理装置によれば、設定手段の選択を行うごとに乱数を計算して発生させる構成に比べ、処理速度を向上させることができる。
【００２０】
次に、請求項７に記載の画像処理装置は、上記請求項６の装置において、しきい値選択手段が、ｎライン分（ｎは自然数）の画素を処理するごとに異なる乱数発生器を用いること、を特徴としている。このため、本画像処理装置によれば、ドットの規則的な発生をより確実に防止することができる。すなわち、仮に、１ライン分の画素を処理するためにしきい値選択手段が乱数発生器から参照する乱数の個数が、その乱数発生器に格納されている乱数の個数と一致すると、すべてのラインで同じように乱数が用いられることとなり、ドットを規則的に発生させてしまうことが考えられるが、本画像処理装置では、ｎライン分の画素を処理するごとに異なる乱数発生器を用いるようにしているため、そのような問題が生じないようにすることができる。
【００２１】
次に、請求項８に記載の画像処理装置は、上記請求項６の装置において、しきい値選択手段が、乱数発生器における乱数の各格納位置を示す値をとるとともにその値が処理対象の画素ごとに所定の順序で変化する変数を用いて、この変数の示す格納位置から乱数を参照するようになっており、さらに、ｎライン分（ｎは自然数）の画素を処理するごとに、上記変数を、初期値の異なる複数の変数のうちの何れか１つに切り替えること、を特徴としている。このため、本画像処理装置によっても、上記請求項７の装置と同様、ドットの規則的な発生をより確実に防止することができる。
【００２２】
次に、請求項９に記載の画像処理装置は、上記請求項６の装置において、しきい値選択手段が、乱数発生器における乱数の各格納位置を示す値をとるとともにその値が処理対象の画素ごとに所定の順序で変化する変数を用いて、この変数の示す格納位置から乱数を参照するようになっており、さらに、ｎライン分（ｎは自然数）の画素を処理するごとに上記変数の値をランダムに変更すること、を特徴としている。このため、本画像処理装置によっても、上記請求項７又は８の装置と同様、ドットの規則的な発生をより確実に防止することができる。
【００２３】
次に、請求項１０に記載の画像処理装置は、上記請求項１〜５の何れかの装置において、しきい値選択手段が、乱数を計算により発生させる乱数計算手段を有しており、その乱数計算手段が発生した乱数に基づき設定手段を選択すること、を特徴としている。このため、本画像処理装置によれば、ドットの規則的な発生を生じにくくすることができる。
【００２４】
次に、請求項１１に記載の画像処理装置は、上記請求項１〜１０の何れかの装置において、複数の色が重なり合うことでカラー画像を表現する各色の入力画像データに対して誤差拡散処理を行うことにより、各色の出力画像データを生成するものである。そして、本装置は、複数の乱数が格納された乱数発生器から所定の順序で参照した乱数を使用して誤差拡散処理を行うようになっている。さらに、本装置は、誤差拡散処理で使用する乱数を参照するための乱数発生器を、その誤差拡散処理で処理対象となっている入力画像データの色に応じて、複数の乱数発生器の中から選択する乱数発生器選択手段を備えている。このため、本画像処理装置によれば、各色の出力画像データごとにドットの発生パターンを変えることができ、この結果、印刷された出力画像の彩度を向上させることができる。すなわち、印刷された画像の色は、基本的には、各印刷色のドットが重なることにより減法混色で表現されるが、ドットが重ならずに横に並ぶ場合には、加法混色の効果が得られるからである。なお、加法混色は、減法混色に比べ高彩度であることが知られている。
【００２５】
次に、請求項１２に記載の画像処理装置は、上記請求項１１の装置において、複数の乱数発生器の種類は、複数の色の種類よりも少ないこと、を特徴としている。例えば、ブラック（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）の４色の入力画像データに対して誤差拡散処理を行う場合に、その誤差拡散処理で処理対象となっている入力画像データの色がブラック（Ｋ）又はシアン（Ｃ）であれば第１の乱数発生器を選択し、マゼンタ（Ｍ）又はイエロー（Ｙ）であれば第２の乱数発生器を選択するようにすれば、乱数発生器は２種類でよいこととなる。このため、本画像処理装置によれば、乱数発生器を記憶するために必要な記憶容量を小さくすることができる。
【００２６】
次に、請求項１３に記載の画像処理装置は、上記請求項１〜１０の何れかの装置において、複数の色が重なり合うことでカラー画像を表現する各色の入力画像データに対して誤差拡散処理を行うことにより、各色の出力画像データを生成するものである。そして、本装置は、複数の乱数が格納された乱数発生器における各乱数の格納位置を示す値をとるとともに、その値が処理対象の画素ごとに所定の順序で変化する変数を用いて、その乱数発生器におけるその変数の示す格納位置から参照した乱数を使用して誤差拡散処理を行うようになっている。さらに、本装置は、誤差拡散処理で使用する乱数を参照するための変数を、その誤差拡散処理で処理対象となっている入力画像データの色に応じて、初期値の異なる複数の変数の中から選択する変数選択手段を備えている。このため、本画像処理装置によっても、上記請求項１１の装置と同様、各色の出力画像データごとにドットの発生パターンを変えることができ、この結果、印刷された出力画像の彩度を向上させることができる。
【００２７】
次に、請求項１４に記載の画像処理方法は、多階調の入力画像データに対して誤差拡散処理を行うことにより、その入力画像データの階調数よりも低い階調数の出力画像データを生成するためのものである。そして、本画像処理方法は、誤差拡散処理を実行する際に、処理対象の各画素について、その誤差拡散処理に用いられるしきい値を設定する複数の設定パターンであって第１の設定パターンとその第１の設定パターンに比べ平均的に高いしきい値を設定する第２の設定パターンとが含まれた複数の設定パターンの中から、ランダムに１つの設定パターンを選択し、その選択した設定パターンで当該画素についてのしきい値を設定すること、を特徴としている。このため、本画像処理方法によれば、上記請求項１の装置について述べた効果と同様の効果を得ることができる。
【００２８】
次に、請求項１５に記載の画像処理プログラムは、多階調の入力画像データに対して誤差拡散処理を行うことにより、その入力画像データの階調数よりも低い階調数の出力画像データを生成する画像処理装置としてコンピュータを機能させるものである。そして、本画像処理プログラムは、コンピュータを、誤差拡散処理に用いられるしきい値を設定する複数の設定手段であって第１の設定手段とその第１の設定手段に比べ平均的に高いしきい値を設定する第２の設定手段とが含まれた複数の設定手段、誤差拡散処理を実行する際に、処理対象の各画素について複数の設定手段の中からランダムに１つの設定手段を選択し、その選択した設定手段に当該画素についてのしきい値を設定させるしきい値選択手段、として機能させることを特徴としている。このため、本画像処理プログラムによれば、コンピュータを上記請求項１の装置と同様の装置として機能させることができる。なお、本画像処理プログラムは、コンピュータ読み取り可能な記録媒体（例えば、ＣＤ−ＲＯＭやフロッピー（登録商標）ディスク等）に記録されていてもよい。
【発明を実施するための最良の形態】
【００２９】
以下、本発明が適用された実施形態について、図面を用いて説明する。
図１は、第１実施形態の画像処理装置としてのプリンタ１００の概略構成を表すブロック図である。
【００３０】
このプリンタ１００は、２５６階調（０〜２５５）の入力画像データを誤差拡散処理によって２値化することにより疑似中間調の出力画像データを生成する機能を有しており、同図に示すように、ＣＰＵ１１０、ＲＡＭ１２０及びＲＯＭ１３０を備え、これらはバス１４０によって通信可能に接続されている。
【００３１】
ＲＡＭ１２０には、入力画像データを記憶するための入力画像記憶部１２１と、入力画像データを２値化して得られる出力画像データを記憶するための出力画像記憶部１２２と、２値化処理によって生じる２値化誤差ｅを記憶するための誤差記憶部１２３とが確保されている。
【００３２】
ここで、入力画像データとは、カラー画像を印刷するための各印刷色に対応したブラック（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）の４種類の入力画像データのことであり、プリンタ１００は、これらの入力画像データに対応した各印刷色の出力画像データを生成する。そして、これらの出力画像データに基づく各印刷色の画像が用紙上で重なり合うように印刷されることで、カラー画像が表現されることとなる。
【００３３】
ＲＯＭ１３０には、２５６階調の入力画像データを２値化した出力画像データを生成するためのハーフトーン処理をＣＰＵ１１０に行わせるハーフトーン処理プログラム（画像処理プログラムに相当）１５１が記憶されている。
【００３４】
また、ＲＯＭ１３０には、図２に示す誤差分配マトリクス１５２が記憶されている。同図に示すように、本プリンタ１００で用いる誤差分配マトリクス１５２は、従来技術で説明した誤差分配マトリクス（図１９）に比べ、極めて小さいサイズのものである。
【００３５】
さらに、ＲＯＭ１３０には、−２５５〜２５５の整数値が不規則な順序で乱数として格納された第１乱数テーブル１６１及び第２乱数テーブル１６２と、６４〜１９２の整数値が不規則な順序で乱数として格納された第３乱数テーブル１６３及び第４乱数テーブル１６４とが記憶されている。なお、第１乱数テーブル１６１と第２乱数テーブル１６２は、乱数の配列が互いに異なっている。同様に、第３乱数テーブル１６３と第４乱数テーブル１６４も、乱数の配列が互いに異なっている。
【００３６】
次に、ＲＯＭ１３０に記憶されているハーフトーン処理プログラム１５１に従いＣＰＵ１１０が行うハーフトーン処理について、図３のフローチャートを用いて説明する。なお、本ハーフトーン処理を開始する際には、ＲＡＭ１２０の誤差記憶部１２３を０に初期化する。
【００３７】
このハーフトーン処理が開始されると、まずＳ１０１で、各乱数テーブル１６１〜１６４における乱数の参照位置を示す変数ｎ１〜ｎ４の値を初期値に設定する。具体的には、第１乱数テーブル１６１における乱数の参照位置を示す変数ｎ１の値、第２乱数テーブル１６２における乱数の参照位置を示す変数ｎ２の値、第３乱数テーブル１６３における乱数の参照位置を示す変数ｎ３の値、及び、第４乱数テーブル１６４における乱数の参照位置を示す変数ｎ４の値を、それぞれ初期値０にする。なお、各乱数テーブル１６１〜１６４における乱数の参照位置を示す変数ｎ１〜ｎ４は、各乱数テーブル１６１〜１６４における乱数の各格納位置を示す値をとるようになっている。例えば、第１乱数テーブル１６１には、―２５５〜２５５の間の５１１個の乱数が格納されていることから、変数ｎ１は、−２５５〜２５５の乱数の各格納位置を示す０〜５１０の整数値をとる。このため、例えば変数ｎ１の値を１ずつインクリメントすると、０→１→２→…→５０９→５１０→０→１→…というように周期的に値が変化する。第２乱数テーブル１６２は、上述したとおり第１乱数テーブル１６１とは互いに乱数配列が異なるものの、第１乱数テーブル１６１と同様に−２５５〜２５５の間の５１１個の乱数が格納されていることから、変数ｎ２も−２５５〜２５５の乱数の各格納位置を示す０〜５１０の整数値をとることとなる。また、第３乱数テーブル１６３には、６４〜１９２の間の１２９個の乱数が格納されていることから、変数ｎ３は、６４〜１９２の乱数の各格納位置を示す０〜１２８の整数値をとる。このため、例えば変数ｎ３の値を１ずつインクリメントすると、０→１→２→…→１２７→１２８→０→１→…というように周期的に値が変化する。第４乱数テーブル１６４は、上述したとおり第３乱数テーブル１６３とは互いに乱数配列が異なるものの、第３乱数テーブル１６３と同様に６４〜１９２の間の１２９個の乱数が格納されていることから、変数ｎ４も６４〜１９２の乱数の各格納位置を示す０〜１２８の整数値をとることとなる。
【００３８】
続いて、Ｓ１０２及びＳ１０３では、２値化処理を行う処理対象の画素（注目画素）の位置を判別するための変数ｘ，ｙの値を初期値である０に設定する。
続いて、Ｓ１０４では、入力画像記憶部１２１に記憶されているブラック（Ｋ）の入力画像データについて、この入力画像データにおける注目画素（ｘ，ｙ）を２値化した出力濃度Ｏを求めて出力画像記憶部１２２に記憶させるＫ画素２値化処理を行う。なお、このＫ画素２値化処理の具体的内容については後述する。
【００３９】
続いて、Ｓ１０５では、Ｓ１０４と同様の処理として、入力画像記憶部１２１に記憶されているシアン（Ｃ）の入力画像データについて、この入力画像データにおける注目画素（ｘ，ｙ）を２値化した出力濃度Ｏを求めて出力画像記憶部１２２に記憶させるＣ画素２値化処理を行う。
【００４０】
続いて、Ｓ１０６では、Ｓ１０４，Ｓ１０５と同様の処理として、入力画像記憶部１２１に記憶されているマゼンタ（Ｍ）の入力画像データについて、この入力画像データにおける注目画素（ｘ，ｙ）を２値化した出力濃度Ｏを求めて出力画像記憶部１２２に記憶させるＭ画素２値化処理を行う。
【００４１】
続いて、Ｓ１０７では、Ｓ１０４〜Ｓ１０６と同様の処理として、入力画像記憶部１２１に記憶されているイエロー（Ｙ）の入力画像データについて、この入力画像データにおける注目画素（ｘ，ｙ）を２値化した出力濃度Ｏを求めて出力画像記憶部１２２に記憶させるＹ画素２値化処理を行う。
【００４２】
続いて、Ｓ１０８では、１ラスタ分（１ライン分）の２値化処理が終了したか否かを判定する。つまり、主走査方向（ｘ方向）の２値化処理が終了したか否かを判定するようになっている。
【００４３】
そして、Ｓ１０８で、１ラスタ分の２値化処理が終了していないと判定した場合には、Ｓ１０９へ移行し、変数ｘの値に１を加算することで注目画素の主走査方向の位置ｘを１つ増加させた後、再度Ｓ１０４から処理を繰り返す。
【００４４】
一方、Ｓ１０８で、１ラスタ分の２値化処理が終了したと判定した場合には、Ｓ１１０へ移行し、変数ｙの値に１を加算することで注目画素の副走査方向（ｙ方向）の位置ｙを１つ増加させる。
【００４５】
続いて、Ｓ１１１では、１ページ分の２値化処理が終了したか否かを判定する。
このＳ１１１で、１ページ分の２値化処理が終了していないと判定した場合には、再度Ｓ１０３から処理を繰り返す。
【００４６】
一方、Ｓ１１１で、１ページ分の２値化処理が終了したと判定した場合には、本ハーフトーン処理を終了する。
以上のようなハーフトーン処理が行われることで、各印刷色についての出力画像データが出力画像記憶部１２２に生成される。
【００４７】
次に、上記ハーフトーン処理（図３）のＳ１０４で実行されるＫ画素２値化処理について、図４のフローチャートを用いて説明する。なお、本Ｋ画素２値化処理は、基本的には従来の２値化処理と同じであるが、後述するＳ１２３のしきい値決定処理でしきい値Ｔを決定するようにしている点が従来と異なる。また、上記ハーフトーン処理のＳ１０５，Ｓ１０６，Ｓ１０７で実行されるＣ画素２値化処理、Ｍ画素２値化処理及びＹ画素２値化処理については、処理対象の画像データの印刷色が異なる点を除いてＫ画素２値化処理と同一の内容であるため、説明を省略する。
【００４８】
このＫ画素２値化処理が開始されると、まずＳ１２１で、入力画像記憶部１２１からブラック（Ｋ）の入力画像データにおける注目画素（ｘ，ｙ）の画素濃度Ｉ（０≦Ｉ≦２５５）を読み出す。
【００４９】
続いて、Ｓ１２２では、Ｓ１２１で読み出した画素濃度Ｉを、誤差記憶部１２３に記憶されている周辺画素についての２値化誤差ｅを加味して補正することで、補正濃度Ｉ’を算出する。具体的には、ＲＯＭ１３０に記憶されている誤差分配マトリクス１５２（図２）に基づき、注目画素（＊）に対して重み付け係数（この例では１／２）が設定されている各周辺画素について、下記式（１）に示すように、当該周辺画素についてのブラック（Ｋ）の２値化誤差ｅと当該周辺画素に対応する重み付け係数とを乗算した値の総和を画素濃度Ｉに加算することによって補正濃度Ｉ’を算出する。なお、式（１）において、ｉｊは、注目画素を基準とした相対位置を示す。本実施形態では、（ｉ，ｊ）＝（−１，０）の周辺画素と、（ｉ，ｊ）＝（０，−１）の周辺画素とについて、ブラック（Ｋ）の２値化誤差ｅと重み付け係数との積を求めることとなる。
【００５０】
【数１】
2005078317.tif 000003
【００５１】
続いて、Ｓ１２３では、しきい値Ｔを決定するためのしきい値決定処理を行う。なお、このしきい値決定処理の具体的内容については後述する。
続いて、Ｓ１２４では、Ｓ１２２で算出した補正濃度Ｉ’が、Ｓ１２３で決定したしきい値Ｔ以上であるか否かを判定する。
【００５２】
そして、Ｓ１２４で、補正濃度Ｉ’がしきい値Ｔ以上であると判定した場合には、Ｓ１２５へ移行し、注目画素（ｘ，ｙ）についてのブラック（Ｋ）の出力濃度Ｏを２５５とした後、Ｓ１２７へ移行する。
【００５３】
一方、Ｓ１２４で、補正濃度Ｉ’がしきい値Ｔ以上でない（しきい値Ｔ未満である）と判定した場合には、Ｓ１２６へ移行し、注目画素（ｘ，ｙ）についてのブラック（Ｋ）の出力濃度Ｏを０とした後、Ｓ１２７へ移行する。
【００５４】
Ｓ１２７では、注目画素（ｘ，ｙ）についてのブラック（Ｋ）の出力濃度Ｏの値を出力画像記憶部１２２に格納する。
続いてＳ１２８では、この２値化処理によって生じた２値化誤差ｅを下記式（２）から算出し、この算出値を画素（ｘ，ｙ）についてのブラック（Ｋ）の２値化誤差ｅとして誤差記憶部１２３に記憶させた後、本Ｋ画素２値化処理を終了する。
【００５５】
ｅ＝Ｉ’−Ｏ  …式（２）
次に、上記Ｋ画素２値化処理（図４）のＳ１２３で実行されるしきい値決定処理について、図５のフローチャートを用いて説明する。なお、本しきい値決定処理は、上記ハーフトーン処理（図３）におけるＫ画素２値化処理（Ｓ１０４）、Ｃ画素２値化処理（Ｓ１０５）、Ｍ画素２値化処理（Ｓ１０６）及びＹ画素２値化処理（Ｓ１０７）で実行される共通の処理である。
【００５６】
このしきい値決定処理が開始されると、まずＳ１３１で、変数ｙを２進数で表したときの下位１ビットが０であるか否かを判定する。
そして、Ｓ１３１で、下位１ビットが０であると判定した場合には、Ｓ１３２へ移行し、第１乱数テーブル１６１における変数ｎ１の示す参照位置に存在する乱数を、変数Ｔ１に代入する。さらに、Ｓ１３３へ移行し、変数ｎ１の値に１を加算した後、Ｓ１３６へ移行する。
【００５７】
一方、Ｓ１３１で、下位１ビットが０でない（１である）と判定した場合には、Ｓ１３４へ移行し、第２乱数テーブル１６２における変数ｎ２の示す参照位置に存在する乱数を、変数Ｔ１に代入する。さらに、Ｓ１３５へ移行し、変数ｎ２の値に１を加算した後、Ｓ１３６へ移行する。
【００５８】
Ｓ１３６では、変数Ｔ１の値が２２４より大きいか否かを判定する。
そして、Ｓ１３６で、変数Ｔ１の値が２２４より大きくない（２２４以下である）と判定した場合には、Ｓ１３７へ移行し、しきい値Ｔの値を２に決定した後、本しきい値決定処理を終了する。
【００５９】
一方、Ｓ１３６で、変数Ｔ１の値が２２４より大きいと判定した場合には、Ｓ１３８へ移行し、現在処理している入力画像データの印刷色がブラック（Ｋ）又はシアン（Ｃ）であるか否かを判定する。つまり、前述したハーフトーン処理（図３）におけるＳ１０４のＫ画素２値化処理、又は、Ｓ１０５のＣ画素２値化処理で本しきい値決定処理が実行された場合には、現在処理している入力画像データの印刷色がブラック（Ｋ）又はシアン（Ｃ）であると判定する。一方、Ｓ１０６のＭ画素２値化処理、又は、Ｓ１０７のＹ画素２値化処理で本しきい値決定処理が実行された場合には、現在処理している入力画像データの印刷色がブラック（Ｋ）又はシアン（Ｃ）でない（マゼンタ（Ｍ）又はイエロー（Ｙ）である）と判定する。
【００６０】
そして、Ｓ１３８で、ブラック（Ｋ）又はシアン（Ｃ）であると判定した場合には、Ｓ１３９へ移行し、しきい値Ｔの値を、第３乱数テーブル１６３における変数ｎ３の示す参照位置に存在する乱数の値に決定する。そして、Ｓ１４０へ移行し、変数ｎ３の値に１を加算した後、本しきい値決定処理を終了する。
【００６１】
一方、Ｓ１３８で、ブラック（Ｋ）又はシアン（Ｃ）でない（マゼンタ（Ｍ）又はイエロー（Ｙ）である）と判定した場合には、Ｓ１４１へ移行し、しきい値Ｔの値を、第４乱数テーブル１６４における変数ｎ４の示す参照位置に存在する乱数の値に決定する。そして、Ｓ１４２へ移行し、変数ｎ４の値に１を加算した後、本しきい値決定処理を終了する。
【００６２】
このように、上記しきい値決定処理では、値の低いしきい値Ｔ（Ｔ＝２）と、値の高いしきい値Ｔ（６４〜１９２の乱数）との何れか一方が、Ｓ１３６の判定処理によりランダムに選択される。Ｓ１３６の判定処理により変数Ｔ１の値が２２４より大きいと判定されれば、６４〜１９２の間の１２９個の乱数を格納している第３乱数テーブル１６３又は第４乱数テーブル１６４からしきい値Ｔの値が決定されるからである。ここで、変数Ｔ１は、第１乱数テーブル１６１又は第２乱数テーブル１６２に格納された乱数の値（−２５５〜２５５）をとることから、変数Ｔ１が−２５５〜２２４の値をとった場合に、Ｓ１３６で変数Ｔ１の値が２２４以下であると判定され、変数Ｔ１が２２５〜２５５の値をとった場合に、Ｓ１３６で変数Ｔ１の値が２２４より大きいと判定される。したがって、値の低いしきい値Ｔが選択される場合と値の高いしきい値Ｔが選択される場合との比率は、４８０：３１（約１６：１）である。つまり、値の高いしきい値Ｔに比べ、値の低いしきい値Ｔが極めて高い確率で選択されるようになっている。なお、この比率としては、１：１〜６３：１程度が好ましい。値の高いしきい値Ｔが選択される場合の比率が１：１以上の場合には、ざらつきの発生度合いが大きくなりすぎるからであり、逆に、６３：１以下の場合には、紋様の発生を低減する効果がほとんど得られなくなるからである。
【００６３】
このように、本プリンタ１００のハーフトーン処理では、値の低いしきい値Ｔ（Ｔ＝２）が高い確率で選択されるため、固定しきい値で誤差拡散処理を行った場合と同様に、ドットを均等に分散させる効果を得ることができる。しかも、本ハーフトーン処理では、値の高いしきい値Ｔ（６４〜１９２の乱数）が低い確率でランダムに選択されるため、固定しきい値で誤差拡散処理を行った場合のようなドットの規則的な発生を生じにくくすることができる。
【００６４】
ここで、低濃度かつ均一濃度の画像を２値化処理した場合の実際のドットの発生状態について、図６を用いて説明する。
同図において、（ａ）は、本プリンタ１００のハーフトーン処理を行った場合のドットの発生状態、（ｂ）は、固定しきい値で誤差拡散処理を行った場合のドットの発生状態、（ｃ）は、しきい値を処理対象の画素ごとにランダムに設定して誤差拡散処理を行った場合のドットの発生状態を示す。なお、各処理とも誤差分配マトリクスは図２に示すものを用いている。
【００６５】
図６（ｂ）に示すように、固定しきい値で誤差拡散処理を行った場合には、ドットを均等に分散させる効果は高いものの、ドットの規則的な発生により紋様（この例では、ドットが横方向に波線状に並んでいるように見える。）が生じやすい。
【００６６】
また、図６（ｃ）に示すように、しきい値を処理対象の画素ごとにランダムに設定して誤差拡散処理を行った場合には、紋様の発生は防止されるが、入力画像が均一濃度であるにもかかわらず、ドットが略均一に分散して発生しているようには見えず、ざらつき感が生じる。
【００６７】
これに対し、図６（ａ）に示すように、本プリンタ１００のハーフトーン処理を行った場合には、紋様の発生が防止されるとともに、ドットも略均一に分散して発生しているのでざらつき感も生じにくくなる。
【００６８】
なお、本第１実施形態のプリンタ１００では、しきい値決定処理（図５）におけるＳ１３７，Ｓ１３９，Ｓ１４１の処理が、設定手段に相当し、特に、Ｓ１３７の処理が、第１の設定手段に相当し、Ｓ１３９，Ｓ１４１の処理が、第２の設定手段に相当している。また、Ｓ１３１〜Ｓ１３６の処理が、しきい値選択手段に相当し、Ｓ１３８の処理が、乱数発生器選択手段に相当し、各乱数テーブル１６１〜１６４が、乱数発生器に相当している。
【００６９】
以上説明したように、本第１実施形態のプリンタ１００では、しきい値決定処理により、値の低いしきい値Ｔ（Ｔ＝２）が高い確率で選択されつつ、値の高いしきい値Ｔ（６４〜１９２の乱数）が低い確率でランダムに選択される。このため、本プリンタ１００によれば、低濃度かつ均一濃度の入力画像に対して２値化処理を行った場合にも、出力画像に紋様やざらつき感を生じにくくすることができる。これにより、サイズの小さい誤差分配マトリクス１５２を用いて処理時間を短縮することができる。
【００７０】
また、本プリンタ１００では、値の高いしきい値Ｔを６４〜１９２の乱数としている。このため、本プリンタ１００によれば、ドットの規則的な発生を防止する効果を高くすることができる。
【００７１】
さらに、本プリンタ１００では、第１〜第４乱数テーブル１６１〜１６４を用いて乱数を発生させるようにしている。このため、本プリンタ１００によれば、乱数を計算して発生させる場合に比べ、処理速度を向上させることができる。
【００７２】
特に、本プリンタ１００では、しきい値決定処理（図５）において、変数ｙの下位１ビットが０である場合と１である場合とで、変数Ｔ１の値を決定するために用いる乱数テーブル（第１乱数テーブル１６１及び第２乱数テーブル１６２）を切り替えるようにしている（Ｓ１３１）。このため、本プリンタ１００によれば、ドットの規則的な発生をより確実に防止することができる。すなわち、仮に、変数ｙの下位１ビットに関係なく同一の乱数テーブルを用いるようにしたとすると、万が一、入力画像データを１ライン分処理するためにその乱数テーブルから参照する乱数の個数と、その乱数テーブルに格納されている乱数の個数とが一致した場合に、隣り合うラインの処理において、値の低いしきい値と値の高いしきい値とが全く同じ順序で選択されてしまうため、副走査方向（ｙ方向）にドットを規則的に発生させてしまうことが考えられる。これに対し、本第１実施形態のしきい値決定処理では、１ラインごとに変数Ｔ１の値を決定するために用いる乱数テーブル１６１，１６２を切り替えるようにしているため、このようなことを防止することができる。
【００７３】
加えて、本プリンタ１００では、しきい値決定処理（図５）において、現在処理している入力画像データの印刷色に応じて、しきい値Ｔを決定するために用いる乱数テーブル（第３乱数テーブル１６３及び第４乱数テーブル１６４）を切り替えるようにしている（Ｓ１３８）。このため、本プリンタ１００によれば、印刷色ごとにドットの発生パターンを変えることができ、各印刷色のドットが重なりにくくすることができる。この結果、カラー画像の彩度を向上させることができる。すなわち、印刷された画像の色は、基本的には、各印刷色のドットが重なることにより減法混色で表現されるが、ドットが重ならずに横に並ぶ場合には、加法混色の効果が得られるからである。
【００７４】
なお、上記第１実施形態のプリンタ１００では、しきい値決定処理（図５）におけるＳ１３１で、変数ｙを２進数で表したときの下位１ビットが０であるか否かを判定するようにしているが、これに限ったものではない。
【００７５】
例えば、Ｓ１３１で、変数ｙを２進数で表したときの下位２ビットが０であるか否かを判定するようにしてもよい。このようにすれば、４ラスタ分の処理のうち、１ラスタ分の処理で第１乱数テーブル１６１が用いられ、残りの３ラスタ分の処理で第２乱数テーブル１６２が用いられる。
【００７６】
また、例えば、１ラスタ分の処理が終了するごとに値の変化する乱数を発生させ、Ｓ１３１では、その乱数を２進数で表したときの下位１ビットが０であるか否かを判定するようにしてもよい。このようにすれば、１ラスタ分の処理ごとに、第１乱数テーブル１６１と第２乱数テーブル１６２とがランダムに選択されるため、ドットの規則的な発生を防止する効果を一層向上させることができる。
【００７７】
一方、上記第１実施形態のプリンタ１００では、しきい値決定処理（図５）におけるＳ１３８で、現在処理している入力画像データの印刷色がブラック（Ｋ）又はシアン（Ｃ）であるか否かを判定して、第３乱数テーブル１６３及び第４乱数テーブル１６４の何れか一方を用いるようにしているが、これに限ったものではない。例えば、４種類の乱数テーブルを用意し、各印刷色で異なる乱数テーブルを用いるようにしてもよい。ただし、ＲＯＭ１３０に記憶すべき乱数テーブルを少なくすることができるという面では、上記第１実施形態のように２種類とした方が有利である。
【００７８】
また、上記第１実施形態のプリンタ１００では、変数Ｔ１の値を決定するために用いる乱数テーブル（第１乱数テーブル１６１及び第２乱数テーブル１６２）や、しきい値Ｔの値を決定するために用いる乱数テーブル（第３乱数テーブル１６３及び第４乱数テーブル１６４）を切り替えて用いるようにしているが、これに限ったものではない。例えば、図７に示すように、変数Ｔ１の値を決定するために用いる乱数テーブルを共通にするとともに、しきい値Ｔの値を決定するために用いる乱数テーブルを共通にしてもよい。すなわち、図７に示すしきい値決定処理においては、Ｓ１３２及びＳ１３４で共に第１乱数テーブル１６１を用いるようにしており、また、Ｓ１３９及びＳ１４１で共に第３乱数テーブル１６３を用いるようにしている。ただし、この場合には、ハーフトーン処理（図３）のＳ１０１で、変数ｎ１の値と変数ｎ２の値とを異なる初期値に設定するとともに（例えば、ｎ１＝０，ｎ２＝１００）、変数ｎ３の値と変数ｎ４の値とを異なる初期値に設定する（例えば、ｎ３＝０，ｎ４＝５０）。このようにすることで、変数Ｔ１の値を決定するための乱数テーブルを共通の乱数テーブルとし、更にしきい値Ｔの値を決定するための乱数テーブルを共通の乱数テーブルとしたとしても、図５に示すしきい値決定処理のように乱数テーブルを切り替える場合と同様の効果を得ることができる。なお、図７のしきい値決定処理では、Ｓ１３８の処理が、変数選択手段に相当する。
【００７９】
また更に、変数Ｔ１の値を決定するために用いる乱数テーブルとしきい値Ｔの値を決定するために用いる乱数テーブルとを共通にしてもよい。すなわち、図８に示すしきい値決定処理においては、Ｓ１３２，Ｓ１３４，Ｓ１３９そしてＳ１４１で共に第１乱数テーブル１６１を用いるようにしている。ただし、この場合には、−２５５〜２５５の間の５１１個の乱数が格納されている第１乱数テーブル１６１を共通に用いるため、各変数ｎ１〜ｎ４もそれぞれ−２５５〜２５５の乱数の各格納位置を示す０〜５１０の整数値をとる。このため、ハーフトーン処理（図３）のＳ１０１で、各変数ｎ１〜ｎ４の値をそれぞれ異なる初期値に設定すればよい（例えば、ｎ１＝０，ｎ２＝１００，ｎ３＝２００，ｎ４＝３００）。このようにすることで、変数Ｔ１の値を決定するための乱数テーブルとしきい値Ｔの値を決定するための乱数テーブルとを共通の乱数テーブルとしたとしても、図５に示すしきい値決定処理のように乱数テーブルを切り替える場合と同様の効果を得ることができる。なお、図８のしきい値決定処理では、Ｓ１３８の処理が変数選択手段に相当する。また、Ｓ１３９やＳ１４１の算出値が小数となった場合には、小数点以下の値を、四捨五入、切上げ又は切下げすることにより整数にすればよい。さらに、Ｓ１３９やＳ１４１の算出値が、６４より小さくなった場合には６４とみなし、１９２より大きくなった場合には１９２とみなすようにしてもよい。
【００８０】
また、図９に示すしきい値決定処理においては、Ｓ１３２及びＳ１３９で共に第１乱数テーブル１６１を用いるようにしており、また、Ｓ１３４及びＳ１４１で共に第２乱数テーブル１６２を用いるようにしている。ただし、この場合にも、−２５５〜２５５の間の５１１個の乱数が格納されている第１乱数テーブル１６１及び第２乱数テーブル１６２を共通に用いるため、各変数ｎ１〜ｎ４もそれぞれ−２５５〜２５５の乱数の各格納位置を示す０〜５１０の整数値をとる。このため、ハーフトーン処理（図３）のＳ１０１で、変数ｎ１と変数ｎ３の値、そして変数ｎ２と変数ｎ４の値をそれぞれ異なる初期値に設定すればよい（例えば、ｎ１＝０，ｎ３＝１００，ｎ２＝０，ｎ４＝１００）。このようにすることで、変数Ｔ１の値を決定するための乱数テーブルとしきい値Ｔの値を決定するための乱数テーブルとを共通の乱数テーブルとしたとしても、図５に示すしきい値決定処理のように乱数テーブルを切り替える場合と同様の効果を得ることができる。なお、図８の場合と同様、Ｓ１３９やＳ１４１の算出値が小数となった場合には、小数点以下の値を、四捨五入、切上げ又は切下げすることにより整数にすればよい。さらに、Ｓ１３９やＳ１４１の算出値が、６４より小さくなった場合には６４とみなし、１９２より大きくなった場合には１９２とみなすようにしてもよい。
【００８１】
また、図１０に示すしきい値決定処理においては、Ｓ１３２，Ｓ１３４，Ｓ１３９そしてＳ１４１で共に第３乱数テーブル１６３を用いるようにしている。ただし、この場合には、６４〜１９２の間の１２９個の乱数が格納されている第３乱数テーブル１６３を共通に用いるため、各変数ｎ１〜ｎ４もそれぞれ６４〜１９２の乱数の各格納位置を示す０〜１２８の整数値をとる。このため、ハーフトーン処理（図３）のＳ１０１で、各変数ｎ１〜ｎ４の値をそれぞれ異なる初期値に設定すればよい（例えば、ｎ１＝０，ｎ２＝３０，ｎ３＝６０，ｎ４＝９０）。このようにすることで、変数Ｔ１の値を決定するための乱数テーブルとしきい値Ｔの値を決定するための乱数テーブルとを共通の乱数テーブルとしたとしても、図５に示すしきい値決定処理のように乱数テーブルを切り替える場合と同様の効果を得ることができる。なお、図１０のしきい値決定処理では、Ｓ１３８の処理が変数選択手段に相当する。また、Ｓ１３２やＳ１３４の算出値が、−２５５より小さくなった場合には−２５５とみなし、２５５より大きくなった場合には２５５とみなすようにしてもよい。
【００８２】
また、図１１に示すしきい値決定処理においては、Ｓ１３２及びＳ１３９で共に第３乱数テーブル１６３を用いるようにしており、また、Ｓ１３４及びＳ１４１で共に第４乱数テーブル１６４を用いるようにしている。ただし、この場合にも、６４〜１９２の間の１２９個の乱数が格納されている第３乱数テーブル１６３及び第４乱数テーブル１６４を共通に用いるため、各変数ｎ１〜ｎ４もそれぞれ６４〜１９２の乱数の各格納位置を示す０〜１２８の整数値をとる。このため、ハーフトーン処理（図３）のＳ１０１で、変数ｎ１と変数ｎ３の値、そして変数ｎ２と変数ｎ４の値をそれぞれ異なる初期値に設定すればよい（例えば、ｎ１＝０，ｎ３＝５０，ｎ２＝０，ｎ４＝５０）。このようにすることで、変数Ｔ１の値を決定するための乱数テーブルとしきい値Ｔの値を決定するための乱数テーブルとを共通の乱数テーブルとしたとしても、図５に示すしきい値決定処理のように乱数テーブルを切り替える場合と同様の効果を得ることができる。なお、図１０の場合と同様、Ｓ１３２やＳ１３４の算出値が、−２５５より小さくなった場合には−２５５とみなし、２５５より大きくなった場合には２５５とみなすようにしてもよい。
【００８３】
また、上記第１実施形態のプリンタ１００では、各印刷色の各画素について、しきい値決定処理（図５）を実行してしきい値Ｔを決定するようにしているが、これに限ったものではない。例えば、補正濃度Ｉ’の算出値が１以下の場合には、しきい値決定処理を実行することなく出力濃度Ｏを０にし、また、補正濃度Ｉ’の値が１９２以上の場合には、しきい値決定処理を実行することなく出力濃度Ｏを２５５にするようにしてもよい。
【００８４】
また、上記第１実施形態のプリンタ１００では、第１〜第４乱数テーブル１６１〜１６４を用いて乱数を発生させるようにしているが、これに限ったものではなく、乱数テーブルを用いない処理としてもよい。
【００８５】
すなわち、図１２に示すしきい値決定処理では、まずＳ１５１で、−２５５〜２５５の範囲で乱数値を計算により発生させ、この発生させた乱数値を変数Ｔ１に代入する。
続いて、Ｓ１５２では、変数Ｔ１の値が２２４より大きいか否かを判定する。
【００８６】
そして、Ｓ１５２で、変数Ｔ１の値が２２４より大きいと判定した場合には、Ｓ１５３へ移行し、Ｓ１５１と同様に−２５５〜２５５の範囲で乱数値を計算により発生させ、この発生させた乱数値を４で割り、その値に１２８を加えた値を、しきい値Ｔの値に決定した後、本しきい値決定処理を終了する。ここで、算出値が小数となった場合には小数点以下の値を四捨五入することとすると、上記第１実施形態と同様、値の高いしきい値Ｔが６４〜１９２の乱数値をとる。なお、小数点以下の値を切上げ又は切下げするようにしてもよい。
【００８７】
一方、Ｓ１５２で、変数Ｔ１の値が２２４より大きくない（２２４以下である）と判定した場合には、Ｓ１５４へ移行し、しきい値Ｔの値を２に決定した後、本しきい値決定処理を終了する。
【００８８】
このように、図１２のしきい値決定処理によれば、上記第１実施形態のしきい値決定処理（図５）と同様の処理を、乱数テーブルを用いることなく行うことができる。このため、ＲＯＭ１３０に必要な記憶容量を小さくすることができる。なお、図１２のしきい値決定処理では、Ｓ１５１，Ｓ１５２の処理が、しきい値選択手段に相当し、特に、Ｓ１５１の処理が、乱数計算手段に相当する。また、Ｓ１５３，Ｓ１５４の処理が、設定手段に相当し、特に、Ｓ１５３の処理が、第２の設定手段に相当し、Ｓ１５４の処理が、第１の設定手段に相当する。
【００８９】
次に、第２実施形態のプリンタについて説明する。
図１３は、第２実施形態のプリンタ２００の概略構成を表すブロック図である。
同図に示すように、このプリンタ２００は、前述した第１実施形態のプリンタ１００（図１）と比較すると、下記の（１）及び（２）の点が異なっている。なお、図１３において、図１に示したプリンタ１００と同じ構成要素については、同一の符号を付しているため、詳細な説明は省略する。
【００９０】
（１）：ＲＯＭ１３０には、第１実施形態のハーフトーン処理プログラム１５１に代えて、このハーフトーン処理プログラム１５１とは処理の一部が異なるハーフトーン処理プログラム２５１が記憶されている。
【００９１】
（２）：ＲＯＭ１３０には、第１実施形態の第１〜第４乱数テーブル１６１〜１６４のうち、第２乱数テーブル１６２と第４乱数テーブル１６４とが記憶されておらず、これに代えて、０〜３２の整数値が不規則な順序で乱数として格納された第５乱数テーブル２６５と、０〜１６の整数値が不規則な順序で乱数として格納された第６乱数テーブル２６６とが記憶されている。
【００９２】
次に、ＲＯＭ１３０に記憶されているハーフトーン処理プログラム２５１に従いＣＰＵ１１０が行うハーフトーン処理について、図１４のフローチャートを用いて説明する。なお、本第２実施形態のハーフトーン処理は、前述した第１実施形態のハーフトーン処理（図３）と比較すると、Ｓ１０１の処理に代えてＳ２０１の処理を行う点と、Ｓ１１０とＳ１１１との間でＳ２２３及びＳ２２４の処理を行う点とが異なる。また、Ｓ１０４〜Ｓ１０７の処理において実行されるしきい値決定処理の内容も異なる。その他、同一内容の処理については、同一の符号を付しているため、詳細な説明は省略する。
【００９３】
Ｓ２０１では、各乱数テーブル１６１，１６３，２６５，２６６における乱数の参照位置を示す変数ｎ１，ｎ３，ｎ５，ｎ６の値を初期値に設定する。具体的には、第１乱数テーブル１６１における乱数の参照位置を示す変数ｎ１の値、第３乱数テーブル１６３における乱数の参照位置を示す変数ｎ３の値、第５乱数テーブル２６５における乱数の参照位置を示す変数ｎ５の値、及び、第６乱数テーブル２６６における乱数の参照位置を示す変数ｎ６の値を、それぞれ０にする。
【００９４】
Ｓ２２３では、第５乱数テーブル２６５における変数ｎ５の示す参照位置に存在する乱数の値を、変数ｎ１に加算する。
続いて、Ｓ２２４では、変数ｎ５の値に１を加算する。
【００９５】
つまり、本ハーフトーン処理では、１ラスタ分の処理が終了するごとに、変数ｎ１の値をランダムに変更する処理を行うようになっている。
次に、本第２実施形態で実行されるしきい値決定処理について、図１５のフローチャートを用いて説明する。
【００９６】
このしきい値決定処理が開始されると、まずＳ２３１で、第１乱数テーブル１６１における変数ｎ１の示す参照位置に存在する乱数を、変数Ｔ１に代入する。
続いて、Ｓ２３２では、変数ｎ１の値に１を加算する。
【００９７】
続いて、Ｓ２３３では、変数Ｔ１の値が２２４より大きいか否かを判定する。
そして、Ｓ２３３で、変数Ｔ１の値が２２４より大きいと判定した場合には、Ｓ２３４へ移行し、しきい値Ｔの値を、第３乱数テーブル１６３における変数ｎ３の示す参照位置に存在する乱数の値に決定する。そして、Ｓ２３５へ移行し、変数ｎ３の値に１を加算した後、本しきい値決定処理を終了する。
【００９８】
一方、Ｓ２３３で、変数Ｔ１の値が２２４より大きくない（２２４以下である）と判定した場合には、Ｓ２３６へ移行し、しきい値Ｔの値を、第６乱数テーブル２６６における変数ｎ６の示す参照位置に存在する乱数の値に決定する。そして、Ｓ２３７へ移行し、変数ｎ６の値に１を加算した後、本しきい値決定処理を終了する。
【００９９】
このように、本第２実施形態のしきい値決定処理では、値の低いしきい値Ｔの値が、０〜１６の乱数値をとる。そして、第１実施形態と同様、値の高いしきい値Ｔ（６４〜１９２の乱数）に比べ、値の低いしきい値Ｔが極めて高い確率で選択されるようになっており、基本的には値の低いしきい値Ｔが選択される。ここで、値の低いしきい値Ｔは、第１実施形態とは異なりランダムな値をとるが、その振れ幅（０〜１６）は、値の高いしきい値Ｔの振れ幅（６４〜１９２）に比べて極めて小さいことから、固定しきい値で誤差拡散処理を行った場合と同様に、ドットを均等に分散させる効果を得ることができる。しかも、第１実施形態と同様、値の高いしきい値Ｔ（６４〜１９２の乱数）が低確率でランダムに選択されるため、固定しきい値で誤差拡散処理を行った場合のようなドットの規則的な発生を生じにくくすることができる。
【０１００】
なお、本第２実施形態のプリンタ２００では、しきい値決定処理（図１５）におけるＳ２３１〜Ｓ２３３の処理が、しきい値選択手段に相当し、Ｓ２３４，Ｓ２３６の処理が、設定手段に相当し、特に、Ｓ２３４の処理が、第２の設定手段に相当し、Ｓ２３６の処理が、第１の設定手段に相当している。
【０１０１】
以上説明したように、本第２実施形態のプリンタ２００では、しきい値決定処理により、値の低いしきい値Ｔ（０〜１６の乱数）が高確率で選択されつつ、値の高いしきい値Ｔ（６４〜１９２の乱数）が低確率でランダムに選択される。このため、本プリンタ２００によれば、第１実施形態と同様、低濃度かつ均一濃度の入力画像に対して２値化処理を行った場合にも、出力画像に紋様やざらつき感を生じにくくすることができる。これにより、サイズの小さい誤差分配マトリクス１５２を用いて処理時間を短縮することができる。
【０１０２】
また、本プリンタ２００では、第１実施形態と同様、値の高いしきい値Ｔを６４〜１９２の乱数としているため、ドットの規則的な発生を防止する効果を高くすることができる。
【０１０３】
さらに、本プリンタ２００では、第１実施形態と同様、乱数テーブルを用いて乱数を発生させるようにしているため、乱数を計算して発生させる場合に比べ、処理速度を向上させることができる。
【０１０４】
特に、本プリンタ２００では、ハーフトーン処理（図１４）において、１ラスタ分の処理が終了するごとに、変数ｎ１の値をランダムに変更する処理を行うようにしている（Ｓ２２３，Ｓ２２４）。このため、本プリンタ２００によれば、第１実施形態と同様、ドットの規則的な発生をより確実に防止することができる。すなわち、仮に、変数ｎ１の値をランダムに変更する処理を行わないとすると、万が一、入力画像データを１ライン分処理するために第１乱数テーブル１６１から参照する乱数の個数と、その第１乱数テーブル１６１に格納されている乱数の個数とが一致した場合に、隣り合うラインの処理において、値の低いしきい値と値の高いしきい値とが全く同じ順序で選択されてしまうため、副走査方向（ｙ方向）にドットを規則的に発生させてしまうことが考えられる。これに対し、本第２実施形態のしきい値決定処理では、変数Ｔ１の値を決定するために用いる第１乱数テーブル１６１における乱数の参照位置を示す変数ｎ１を１ラインごとにランダムに変更するようにしているため、このようなことを防止することができる。
【０１０５】
なお、上記第２実施形態のプリンタ２００では、ハーフトーン処理（図１４）において、１ラスタ分の処理が終了するごとに、変数ｎ１の値をランダムに変更するようにしているが、これに限ったものではない。
【０１０６】
例えば、図１６に示すように、Ｓ１１０の処理の後、Ｓ２２２で、変数ｙを２進数で表したときの下位２ビットが０であるか否かを判定するようにして、下位２ビットが０であると判定した場合にのみＳ２２３，Ｓ２２４の処理を行うようにしてもよい。このようにすれば、４ラスタ分の処理につき１回、変数ｎ１の値がランダムに変更される。
【０１０７】
また、例えば、１ラスタ分の処理が終了するごとに値の変化する乱数を発生させ、図１６のＳ２２２では、その乱数を２進数で表したときの下位１ビットが０であるか否かを判定するようにしてもよい。このようにすれば、１ラスタ分の処理が終了するごとに、変数ｎ１の値を変更するか否かがランダムに選択される。
【０１０８】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記各実施形態では、値の高いしきい値Ｔを乱数値としているが、これに限ったものではなく、固定値としてもよい。
【０１０９】
また、上記各実施形態では、値の低いしきい値Ｔと、値の高いしきい値Ｔとの何れか一方をランダムに選択するようにしているが、これに限ったものではなく、３つ以上のしきい値の候補からランダムに選択するようにしてもよい。
【０１１０】
さらに、上記各実施形態では、図２に示す誤差分配マトリクス１５２を用いるようにしているが、これに限ったものではない。例えば、図１７や図１８に示す誤差分配マトリクスであっても、従来技術で説明した誤差分配マトリクス（図１９）に比べれば極めてサイズが小さいことから、処理時間の短縮を図ることができる。
【０１１１】
また、上記各実施形態では、２５６階調の入力画像データを誤差拡散処理によって２値化することにより疑似中間調の出力画像データを生成する例について説明したが、これに限ったものではない。すなわち、上記各実施形態においては、補正濃度Ｉ’がしきい値Ｔ以上であるか否かにより出力濃度Ｏを２５５又は０の２値化するようにしているが、これに対し、異なる大きさのドットを出力できる場合には、そのドットの種類に応じた複数種類の出力濃度Ｏで表す（多値化する）ようにしてもよい。具体的には、例えば、大，中，小の３種類の大きさのドットを出力可能である場合、補正濃度Ｉ’が、上記各実施形態で決定されるしきい値Ｔに１２８を加えた値以上であれば大ドット、しきい値Ｔに６４を加えた値以上であれば中ドット、しきい値Ｔ以上であれば小ドットというようにすることができる。
【０１１２】
また、同色で濃度の異なる色材（ライトインク）のドットを出力できる場合には、１つの出力画像データの各画素を表現するための色材を、各画素についての補正濃度Ｉ’の値に応じて使い分けるようにしてもよい。例えば、同色で濃度の異なる２種類の色材のドットを出力可能である場合、補正濃度Ｉ’が、上記各実施形態で決定されるしきい値Ｔに１２８を加えた値以上であれば濃い方の色材のドット、しきい値Ｔに１２８を加えた値未満であるがしきい値Ｔ以上であれば薄い方の色材のドットというようにすることができる。
【０１１３】
一方、本発明は、プリンタに限らず、コピー機やパソコン等にも適用することができる。
【図面の簡単な説明】
【０１１４】
【図１】第１実施形態のプリンタの概略構成を表すブロック図である。
【図２】誤差分配マトリクスの説明図である。
【図３】第１実施形態のハーフトーン処理のフローチャートである。
【図４】Ｋ画素２値化処理のフローチャートである。
【図５】第１実施形態のしきい値決定処理のフローチャートである。
【図６】ドットの発生状態の説明図である。
【図７】変形例（その１）としてのしきい値決定処理のフローチャートである。
【図８】変形例（その２）としてのしきい値決定処理のフローチャートである。
【図９】変形例（その３）としてのしきい値決定処理のフローチャートである。
【図１０】変形例（その４）としてのしきい値決定処理のフローチャートである。
【図１１】変形例（その５）としてのしきい値決定処理のフローチャートである。
【図１２】変形例（その６）としてのしきい値決定処理のフローチャートである。
【図１３】第２実施形態のプリンタの概略構成を表すブロック図である。
【図１４】第２実施形態のハーフトーン処理のフローチャートである。
【図１５】第２実施形態のしきい値決定処理のフローチャートである。
【図１６】変形例としてのハーフトーン処理のフローチャートである。
【図１７】変形例（その１）としての誤差分配マトリクスの説明図である。
【図１８】変形例（その２）としての誤差分配マトリクスの説明図である。
【図１９】従来の誤差分配マトリクスの説明図である。
【符号の説明】
【０１１５】
１００，２００…プリンタ、１１０…ＣＰＵ、１２０…ＲＡＭ、１２１…入力画像記憶部、１２２…出力画像記憶部、１２３…誤差記憶部、１３０…ＲＯＭ、１４０…バス、１５１，２５１…ハーフトーン処理プログラム、１５２…誤差分配マトリクス、１６１…第１乱数テーブル、１６２…第２乱数テーブル、１６３…第３乱数テーブル、１６４…第４乱数テーブル、２６５…第５乱数テーブル、２６６…第６乱数テーブル
【図１】
2005078317.tif 000004
【図２】
2005078317.tif 000005
【図３】
2005078317.tif 000006
【図４】
2005078317.tif 000007
【図５】
2005078317.tif 000008
【図６】
2005078317.tif 000009
【図７】
2005078317.tif 000010
【図８】
2005078317.tif 000011
【図９】
2005078317.tif 000012
【図１０】
2005078317.tif 000013
【図１１】
2005078317.tif 000014
【図１２】
2005078317.tif 000015
【図１３】
2005078317.tif 000016
【図１４】
2005078317.tif 000017
【図１５】
2005078317.tif 000018
【図１６】
2005078317.tif 000019
【図１７】
2005078317.tif 000020
【図１８】
2005078317.tif 000021
【図１９】
2005078317.tif 000022