(57)【特許請求の範囲】
【請求項１】
注目画素の入力画像データに、前記注目画素の周辺画素の誤差データから算出された前記注目画素に対する拡散誤差積算値を加算する補正手段と、
前記拡散誤差積算値が加算された画像データを、量子化閾値を用いて量子化する量子化手段と、
前記量子化の結果と、前記拡散誤差積算値が加算された画像データから、前記注目画素の誤差データを算出する算出手段と、
前記注目画素の入力画像データに応じた量子化結果を有する、前記注目画素の周辺画素を検出し、該検出された周辺画素に応じた範囲内の周辺画素の入力画像データと量子化結果の誤差データの加算値を求め、該加算値に応じて該注目画素に対する前記量子化閾値を設定する設定手段とを有し、
前記設定手段は、前記注目画素が存在する領域が暗領域か明領域かを判定し、前記注目画素が暗領域にあると判定した場合は白画素を示す量子化結果を有する周辺画素を検出し、前記注目画素が明領域にあると判定した場合は黒画素を示す量子化結果を有する周辺画素を検出することを特徴とする画像処理装置。
【請求項２】
前記設定手段は、前記注目画素の入力画像データに応じた量子化結果を有する周辺画素を検出することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記設定手段は、前記入力画像データの逆数にほぼ等しいドット間距離が得られるように前記量子化閾値を設定することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
前記設定手段は、誤差拡散法または平均誤差最小法に基づき前記量子化閾値を設定することを特徴とする請求項1から請求項3の何れか一項に記載された画像処理装置。
【請求項５】
注目画素の入力画像データに、前記注目画素の周辺画素の誤差データから算出された前記注目画素に対する拡散誤差積算値を加算し、
前記拡散誤差積算値が加算された画像データを、量子化閾値を用いて量子化し、
前記量子化の結果と、前記拡散誤差積算値が加算された画像データから、前記注目画素の誤差データを算出し、
前記注目画素の入力画像データに応じた量子化結果を有する、前記注目画素の周辺画素を検出し、該検出された周辺画素に応じた範囲内の周辺画素の入力画像データと量子化結果の誤差データの加算値を求め、該加算値に応じて該注目画素に対する前記量子化閾値を設定し、
前記周辺画素の検出は、前記注目画素が存在する領域が暗領域か明領域かを判定し、前記注目画素が暗領域にあると判定した場合は白画素を示す量子化結果を有する周辺画素を検出し、前記注目画素が明領域にあると判定した場合は黒画素を示す量子化結果を有する周辺画素を検出することを特徴とする画像処理方法。
【請求項６】
誤差拡散法または平均誤差最小法により画像データを階調変換処理する画像処理装置であって、
入力画像データを構成する注目画素に対する量子化閾値を設定する設定手段と、
前記誤差拡散法または前記平均誤差最小法により、前記設定された量子化閾値を用いて前記注目画素に対応するデータを量子化し、前記注目画素の出力値を生成する生成手段とを有し、
前記設定手段は、前記注目画素が明領域にある場合は前記注目画素に近い位置にある量子化結果の黒画素によって決まる範囲内の画素で発生した誤差の積算値に基づき前記量子化閾値を設定し、前記注目画素が暗領域にある場合は前記注目画素に近い位置にある量子化結果の白画素によって決まる範囲内の画素で発生した誤差の積算値に基づき前記量子化閾値を設定することを特徴とする画像処理装置。
【請求項７】
誤差拡散法または平均誤差最小法により画像データを階調変換処理する画像処理方法であって、
入力画像データを構成する注目画素に対する量子化閾値を設定し、
前記誤差拡散法または前記平均誤差最小法により、前記設定された量子化閾値を用いて前記注目画素に対応するデータを量子化し、前記注目画素の出力値を生成し、
前記注目画素が明領域にある場合は前記注目画素に近い位置にある量子化結果の黒画素によって決まる範囲内の画素で発生した誤差の積算値に基づき前記量子化閾値が設定され、前記注目画素が暗領域にある場合は前記注目画素に近い位置にある量子化結果の白画素によって決まる範囲内の画素で発生した誤差の積算値に基づき前記量子化閾値が設定されることを特徴とする画像処理方法。
【請求項８】
コンピュータを請求項1から請求項4、請求項6の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の階調情報の量子化処理に関するものである。
【背景技術】
【０００２】
スキャナなどの画像入力装置によって読み取った多階調の画像データや、コンピュータによって作成・編集された多階調グラフィックの画像データは、ディスプレイ、プリンタ、ファクシミリ、ディジタル複写機などによって再現される。その際、多階調の画像データを保存、転送するために画像データのデータ量を減らす場合、各画素の階調数を減らす階調変換処理を行う。また、プリンタやオフセット印刷機などの画像出力装置の一画素当りの階調表現能力に応じて階調変換を行う場合も階調変換処理が必要になる。
【０００３】
階調を減らすための階調変換には様々な手法があるが、例えば、誤差拡散法、および、誤差拡散法とほぼ等価な平均誤差最小法は、好ましい画質を実現する手法として広く用いられる。
【０００４】
しかし、誤差拡散法や平均誤差最小法には、次の問題がある。
【０００５】
第一の問題点は画素生成の遅延である。つまり、低濃度から中高濃度に濃度が増加する濃度域（以下、立ち上がり部）における黒画素の生成が遅れ、同様に、高濃度から中低濃度に濃度が低下する濃度域（以下、立ち下がり部）における白画素の生成が遅れる。なお、画素の生成が遅れるとは、例えばラスタ順に画素値を調べた場合、多階調の画像データは低濃度域から中高濃度域へ遷移しているのに、対応する階調変換された画像データは低濃度域から中高濃度域への遷移が完了していない状態を意味する。同様に、多階調の画像データは高濃度域から中低濃度域へ遷移しているのに、対応する階調変換された画像データは高濃度域から中低濃度域への遷移が完了していない状態を意味する。
【０００６】
第二の問題点は、細線の再現性である。つまり、背景領域との濃度差が小さく、幅の細い線は、その途中が切れて再現されたり（以下、途切れ）、再現されない（以下、消失）ことがある。
【０００７】
このような問題は、拡散される誤差が周辺画素に悪影響を及ぼすために発生する。特許文献1は、このような問題を解決するために、下式によって二値化閾値Tを設定する。
T(x, y) = {I(x, y)×(K - 1) + 128}/K      …(1)
ここで、I(x, y)は画素位置(x, y)の原画像の画素値、
Kは2以上の任意の自然数。
【０００８】
二値化閾値T(x, y)を原画像のデータI(x, y)から一意に設定する上記手法は、画素生成の遅延には一定の効果が認められるが、細線の再現性は不充分であり、途切れや消失が発生する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2002-374412号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、階調変換処理における画素生成の遅延と細線の再現性を改善することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１２】
本発明にかかる画像処理は、注目画素の入力画像データに、前記注目画素の周辺画素の誤差データから算出された前記注目画素に対する拡散誤差積算値を加算し、前記拡散誤差積算値が加算された画像データを、量子化閾値を用いて量子化し、前記量子化の結果と、前記拡散誤差積算値が加算された画像データから、前記注目画素の誤差データを算出し、前記注目画素の入力画像データに応じた量子化結果を有する、前記注目画素の周辺画素を検出し、該検出された周辺画素に応じた範囲内の周辺画素の入力画像データと量子化結果の誤差データの加算値を求め、該加算値に応じて該注目画素に対する前記量子化閾値を設定し、前記周辺画素の検出は、前記注目画素が存在する領域が暗領域か明領域かを判定し、前記注目画素が暗領域にあると判定した場合は白画素を示す量子化結果を有する周辺画素を検出し、前記注目画素が明領域にあると判定した場合は黒画素を示す量子化結果を有する周辺画素を検出することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、階調変換処理における画素生成の遅延と細線の再現性を改善することができる。
【図面の簡単な説明】
【００１４】
【図１】実施例1の画像処理装置の機能構成例を説明するブロック図。
【図２】誤差拡散マトリクスの一例を説明する図。
【図３】実施例2の閾値制御部による画素間情報Ck、Cwの計算方法を説明するフローチャート。
【図４】本実施例の処理結果を説明する図。
【図５】Pkの一例を示すグラフ。
【図６】平均誤差を算出する際に使用する近傍画素の発生誤差に与える重み係数の一例を示す図。
【図７】実施例1の閾値制御部による画素間情報Ck、Cwの計算方法を説明するフローチャート。
【図８】座標(u, v)を更新する座標順序の一例を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。以下では、本発明を誤差拡散法に適用する例を示すが、平均誤差最小法に適用してもよい。また、以降の説明において、階調変換後の階調数を「2」とするが、階調変換後の階調数は「2」に限定されるわけではない。また、以下では、説明の簡単のために、画像の走査方向をx軸（水平）方向として説明するが、画像の走査方向は限定されず、y軸（垂直）方向でもよい。
【実施例１】
【００１６】
［装置の構成］
図1のブロック図により実施例1の画像処理装置の機能構成例を説明する。
【００１７】
画像データ入力部101は、m値（mは自然数）の階調数を有する原画像データI(x, y)を入力する。ここで、(x, y)は画素位置を表し、I(x, y)は画素位置(x, y)における正規化された濃度値（0.0≦I(x,y)≦1.0）である。勿論、I(x, y)は、濃度値に限定されず輝度値など任意の画像信号でよいし、正規化された値ではなくディジタル値（例えば0-255）でもよい。
【００１８】
閾値設定部103は、原画像データ（入力画像データ）I(x, y)、および、後述する画素間情報Ck、Cwに基づき、下式により、二値化閾値T(x, y)（0≦T≦1）を設定する。
T(x, y) = Tb + N(x, y) - PkCk - PwCw      …(2)
ここで、Tbは原画像データI(x, y)から決定される基準閾値、
N(x, y)は画素位置に応じて設定される閾値ノイズ、
Pk、Pwは原画像データI(x, y)から決定される、平均ドット間距離を制御するためのパラメータ。
【００１９】
閾値設定部103は、黒画素間情報Ckが大きくなるほど黒画素が生成し易く、白画素間情報Cwが大きくなるほど白画素を生成し易いように閾値T(x, y)を設定する。また、詳細は後述するが、ドット間距離は原画像データの逆数1/I(x, y)にほぼ等しくなることが好しい。なお、閾値ノイズN(x, y)は高周波ノイズが好しい。
【００２０】
量子化部105は、式(3)によって、データ補正部104が出力する補正データF(x, y)を量子化した出力データ（出力画像データ）O(x, y)を出力する。
if (F(x, y)＞T(x, y))
O(x, y) =‘1’；
else
O(x, y) =‘0’；                …(3)
【００２１】
加算器106は、発生誤差E(x, y)として、式(4)により量子化前後の画像データの差分（誤差データ）を計算する。
E(x, y) = F(x, y) - O(x, y)      …(4)
ここで、F(x, y) = I(x, y) + D(x, y)、
D(x, y)は拡散誤差積算値。
【００２２】
画像データ出力部108は、量子化部105から出力される量子化結果の画像データO(x, y)を印刷装置などに出力する。例えばインクジェット方式の印刷装置は、例えば、O(x, y)=‘1’ならばインクを吐出して記録紙などにドットを形成し、O(x, y)=‘0’ならばインクを吐出せずにドットを形成しない。
【００２３】
誤差拡散部107は、加算器106が出力する発生誤差E(x, y)を、誤差拡散マトリクスを用いて注目画素の近傍画素における複数の未量子化画素に拡散する。そして、各画素位置に対して拡散された拡散誤差を積算することにより、拡散誤差積算値D(x, y)を計算する。図2に誤差拡散マトリクスの一例を示す。図2において「＊」で示す注目画素の量子化で発生した誤差E(x, y)は、図2に示す割合で、図2に示す注目画素の近傍画素に拡散される。図2に示す拡散拡散マトリクスを適用する場合、画像端の画素を除き、任意の画素は、近傍の四画素から拡散される誤差の和を受け取る。ある画素(x, y)が受け取る誤差の和が拡散誤差積算値D(x, y)である。
【００２４】
データ補正部104は、画素位置(x, y)に対応する拡散誤差積算値D(x, y)を原画像データI(x, y)に加算して、補正データF(x, y)を得る。
【００２５】
［閾値制御部］
閾値制御部102は、原画像データI(x, y)および出力データO(x, y)から、黒画素、白画素の生起し易さを制御する画素間情報Ck、Cwを計算する。
【００２６】
図7のフローチャートを用いて、閾値制御部102が行う、画素間情報Ck、Cwの計算方法を説明する。なお、図7は一画素分の処理を示し、閾値制御部102は、画像データ入力部101に入力された各画像データに対して（つまり画素ごとに）図7に示す処理を行う。
【００２７】
閾値制御部102は、注目画素位置の画像データの量子化処理が開始されると、画素間情報を初期化(Ck=Cw=0)し、参照画素座標(u, v)を初期化(u=x, v=y)する(S101)。ここで、初期化された参照画素座標(x, y)は、注目画素である入力された画像データIの座標である。
【００２８】
閾値制御部102は、入力データI(x, y)を入力し、I(x ,y)＜0.5か否かを判定し(S102)、判定結果に応じて以下の処理（S103またはS106）に分岐する。なお、この判定は、注目画素が存在する領域が明領域か暗領域かの判定が目的であり、ステップS102の判定における閾値は0.5ではなく、0.4など、他の値を使用しても構わない。また、O(x-1, y)=‘1’か否かを判定するなど他の方法を使用しても構わない。
【００２９】
閾値制御部102は、I(x, y)＜0.5の場合、注目画素が存在する領域が明領域と判断し、黒画素間情報Ckを算出する。まず、検出対象の画素の座標(u, v)を取得する(S103)。座標(u, v)は、ステップS104において量子化結果を参照する近傍画素（以下、参照画素）の座標位置を示す。座標(u, v)は、予め定められた座標順序に従って更新される。座標順序の一例を図8に示す。図8において「*」は注目画素の位置(x, y)である。注目画素の位置から距離が近い順に座標を更新する。例えば、図8(a)の座標順序を用いた場合、(u, v)=(x, y)の場合、ステップS103において取得される新しい(u, v)は、(u,v)=(x-1, y)である。同様に、ステップS103を実行する度に(u, v)=(x, y-1)、(u, v)=(x-1, y)、(u, v)=(x-1, y-1)と更新されていく。なお、座標順序は任意に設定可能であり、例えば図8(b)のように設定してもよい。
【００３０】
次に、閾値制御部102は、参照画素の量子化値（出力値）O(u, v)を入力し、O(u, v)=‘1’（黒画素）か否かを判定する(S104)。つまり、注目画素の位置(x, y)に近い位置にある黒画素を検出する。ステップS104の判定結果が真の場合、閾値制御部102は、処理を終了する。また、(u, v)が所定の範囲の上限に達した場合、閾値制御部102は、処理を終了する。一方、ステップS104の判定結果が偽の場合、閾値制御部102は、入力値I(u, v)を入力し、下式によって画素間情報Ckを更新し(S105)、その後、処理をステップS103へ戻し、(u, v)の取得、画素間情報Ckの更新を行う。
Ck = Ck + I(u, v)      …(5)
【００３１】
ステップS104の判定結果が偽（O(u, v)=‘0’）の画素は白画素で出力されることになり、入力データと出力データの誤差はI(x, y)-0（白画素の出力データ）=I(u, v)となる。
【００３２】
このように、注目画素が明領域にある場合、画素間情報Ckとして、注目画素に近い位置にある黒画素を検出し、検出された黒画素に応じた範囲内の周辺画素の入力データの積算値を求める。これは、入力画像における、検出された黒画素に応じた範囲内（面内）における局所黒濃度を求めることを意味する。
【００３３】
閾値制御部102は、I(x, y)≧0.5の場合も、参照画素の座標(u, v)を取得する(S106)。この処理はステップS103と同一でよい。閾値制御部102は、I(x, y)≧0.5の場合、注目画素が存在する領域が暗領域であると判断し、白画素間情報Cwを算出する。
【００３４】
閾値制御部102は、画像上の座標(u, v)を取得し(S106)、その後、出力値O(u, v)を入力し、O(u, v)=‘0’か否かを判定(S107)する。つまり、注目画素の位置(x, y)に近い位置にある白画素を検出する。ステップS107の判定結果が真の場合、閾値制御部102は、処理を終了する。また、(u, v)が所定の範囲の上限に達した場合も、閾値制御部102は、処理を終了する。一方、ステップS107の判定結果が偽の場合、閾値制御部102は、入力値I(u, v)を入力し、下式よって画素間情報Cwを更新し(S108)、その後、処理をステップS106へ戻し、(u, v)の取得、画素間情報Cwの更新を行う。
Cw = Cw + I(u, v) - 1      …(6)
【００３５】
ステップS108の判定結果が偽（O(u, v)=‘1’）の画素は黒画素で出力されることになり、入力データと出力データの誤差は、I(x,y)-1（黒画素の出力データ）となる。
【００３６】
このように、注目画素が暗領域にある場合、画素間情報Cwとして、注目画素からの距離が近い白画素を検出し、検出された白画素に応じた範囲内の周辺画素の入力データと出力データの誤差の積算値を求める。これは、入力画像における、検出された白画素に応じた範囲内（面内）における局所白濃度を求めることを意味する。
【００３７】
つまり、閾値制御部102と閾値設定部103は、注目画素の入力画像データに応じた量子化結果を有する、注目画素の周辺画素を検出する。そして、該検出された周辺画素に応じた範囲内の周辺画素の入力画像データと量子化結果の誤差データの加算値を求め、該加算値に応じて該注目画素に対する量子化閾値を設定する。
【００３８】
以上の処理により、近傍に黒ドットが不足している場合には閾値T(x, y)が減少し、白ドットが不足している場合には閾値T(x, y)が増加する。即ち、黒ドットが不足している場合には黒ドットが打たれ易くなり、白ドットが不足している場合には白ドットが打たれ易くなる効果が得られる。これにより、適正なドット間隔が保たれ、細線の良好な再現を実現することができる。
【実施例２】
【００３９】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００４０】
実施例1では、近傍画素位置(u, v)における入力値I(u, v)および出力値O(u, v)を保持する必要がある。つまり、既処理画素の状態を保持するためのメモリを備えることが必要になる。実施例2では、探索範囲を横方向に限定することにより、既処理画素の状態を保持するためのメモリ量が削減できる構成について述べる。実施例1と異なる点は、閾値制御部102である。
【００４１】
図3のフローチャートにより閾値制御部102による画素間情報Ck、Cwの計算方法を説明する。なお、図3は走査1ライン分の処理を示し、閾値制御部102は、階調変換すべき画像のライン数分、図3に示す処理を繰り返す。
【００４２】
閾値制御部102は、あるラインの画像データの量子化処理が開始されると、画素間情報を初期化(Ck=Cw=0)する(S201)。さらに、原画像データI(x, y)および出力データO(x, y)から、黒画素、白画素の生起し易さを制御する画素間情報Ck、Cwを計算する。
【００４３】
閾値制御部102は、出力データO(x, y)を入力し、O(x, y)=‘1’か否かを判定し(S202)、判定結果に応じて以下の演算により画素間情報Ck、Cwを更新する(S203, S204)。そして、注目画素がラインの終端の画素（例えば画像の右端）に達したか否かを判定し(S205)、達していない場合は処理をステップS202に戻し、達した場合は1ライン分の処理を終了する。
if (O(x, y) ==‘1’) {
Ck = 0；
Cw = Cw + I(x, y) - O(x, y) = Cw + I(x, y) - 1；
} else {
Ck = Ck + I(x, y) - O(x, y) = Ck + I(x, y)；
Cw = 0；
}                                  …(7)
【００４４】
式(7)は出力が二値の誤差拡散法に対応する画素間情報Ck、Cwの演算方法を示す。画素間情報Ck、Cwの演算方法をn値（n＜m、nは自然数）の誤差拡散法に一般化すると、n個の変数Ci（1≦i≦n）は、下式で計算される。
if (O(x, y) == i/n) {
Ci = 0；
Ci+1 = Ci+1 + I(x, y) - O(x, y)；
Ci-1 = Ci-1 + I(x, y) - O(x, y)；
}                                  …(8)
【００４５】
式(7)(8)から明らかなように、閾値制御部102が計算する画素間情報Ck、Cwは、量子化の注目画素より前に量子化された画素の原画像データと出力データの差分の和に依存する。つまり、量子化された画素数に依存するが、単純な画素間距離（画素数）ではない。しかし、画素間情報Ck、Cwを式(9)で計算してもよい。式(9)によって得られる画素間情報Ck、Cwは、量子化の注目画素より前に量子化された画素の画素数により依存し、画素間情報としては直感的に理解し易い。
if (O(x, y) ==‘1’) {
Ck = 0；
Cw = Cw + 1；
} else {
Ck = Ck + 1；
Cw = 0；
}                                  …(9)
【００４６】
発明者は、式(9)により得られる画素間情報を用いた出力データO(x, y)が再現する画像の画質が、式(7)によって得られる画素間情報を用いた出力データO(x, y)が再現する画像の画質に比べて劣ることを実験によって確認した。その原因の一つは、任意の入力画素値I（0.0≦I≦1.0）に対する適正なドット間距離1/Iが一般に整数にならないためと考えられる。また、入力画素値I(x, y)が画素位置に応じて変化する場合を考慮しないことも原因と考えられる。これらの問題を解決するための一例として、式(7)に示すような、適正なドット間距離に相当する値を用いることが好しい。つまり、本実施例における「画素間情報」とは、適正なドット間距離を示す値であることが重要で、単純な画素間距離（画素数）には限定されない。
【００４７】
図4により本実施例の処理結果を説明する。図4(a)はx軸方向に伸びる細線がy軸方向に複数配置された画像を示している。図4(b)は、図4(a)の画像を従来の誤差拡散法によって量子化した結果を示す。また、図4(c)は、図4(a)の画像を本実施例の誤差拡散法によって量子化した結果を示す。図4(b)と図4(c)を比較すれば、本実施例の誤差拡散法が、より良好に細線を再現することが理解される。言い替えれば、画素間情報に基づき量子化閾値を変動させることで、階調変換処理における画素生成の遅延と細線の再現性を改善することができる。
【００４８】
［Pk、Pwの設定方法］
下記ではPk、Pwの設定方法の一例を示すが、Pk、Pwの設定方法は下記に限定されるわけではない。
【００４９】
まず、黒ドット間の距離を規定するパラメータPkについて説明する。x=0およびx=nにおいて黒画素が生成され、x=1からx=n-1の間において黒画素が生成されない場合のドット間距離をnとする。このnが1/I(x, y)になるPkを導出する。
【００５０】
始めに、モデルを簡易にするため、二つの仮定を設定する。第一の仮定は、0≦x≦nの範囲において入力画素値I(x, y)が一定値Iであるとする。第二の仮定は、走査方向以外の方向に拡散される誤差の影響が無視できるほど小さいとする。この仮定は、走査方向をx軸方向とする場合、1ライン上の画素から受け取る誤差が充分に小さいと見做すことに相当する。なお、これら仮定は、白背景に一本の一画素幅の横線が描かれた画像を対象にすることと等価であるが、発明者は、このモデルにより導かれるパラメータは、その他の多様な画像においても有効であることを実験により確認した。
【００５１】
x軸方向への誤差拡散係数をa（0.0≦a＜1.0）で表すと、補正データF(n, y)は以下の漸化式により得られる。
F(n, y) = I + aF(n-1, y)
= I + a{I + aF(n-2, y)}
= I + aI +a2I + a3I + … + an-1I + an{F(0, y) - 1}
= {(1-an)/(1-a)}I + an{F(0, y) - 1}                …(10)
【００５２】
ここで、黒画素が生成される場合は、補正データと閾値が近い値になっていると考えられるため、F(0, y)≒T(0, y)≒T(n, y)と近似する。F(0, y)=T(n, y)として式(10)に代入すると、nが以下の不等式を満たす場合、黒画素が生成されることになる。
{(1-an)/(1-a)}I + an{T(n, y) - 1}≧T(n, y)      …(11)
【００５３】
式(11)を1-an＞0を踏まえて整理すると式(12)が得られる。
I/(1-a) - an/(1-an)≧T(n, y)      …(12)
【００５４】
一方、1≦x≦(n-1)においては黒画素が生成されないためCk=(n-1)I、Cw=0になり、T(n, y)は下式で表される。
T(n, y) = Tb + N(n, y) - Pk(n-1)I      …(13)
【００５５】
式(12)(13)から次の不等式が得られる。
I/(1-a) - an/(1-an)≧Tb + N(n, y) - Pk(n-1)I      …(14)
【００５６】
不等式(14)を満たす最小のnが1/Iと等しくなるようにPkを定めれば、ドット間距離の平均を1/Iにすることができる。すなわち、n=1/Iを代入した以下の式を満たせばよい。
I/(1-a) - a1/I/(1-a1/I)≧Tb + N(n, y) - Pk{(1/I)-1}I      …(15)
【００５７】
式(15)をPkについて整理すると次式が得られる。
Pk = 1/(I-1){I/(1-a) - a1/I/(1-a1/I) - Tb - N(n, y)}      …(16)
【００５８】
式(16)により好適なPkが得られる。ただし、I=1.0は除く。また、補正が不要な階調においてはPk＜0になるためPk=0とする。なお、ノイズの変動を考慮するには、ノイズが確率的に変動した時のnの期待値を計算することが望ましい。
【００５９】
Pwについても上記と同様の原理により好適な値を設定することができる。
【００６０】
図5のグラフによりPkの一例を示す。グラフの横軸は入力値I、縦軸はPkを表す。図5に示すグラフは、基準閾値Tbを入力値Iにかかわらず0.5（画像データが0-255の場合は127）とし、誤差拡散係数aを入力値Iにかかわらず7/16、閾値ノイズNは0とした例である。
【００６１】
［変形例］
上記の実施例において、Pk、Pwは、原画像データI(x, y)の値から一意に決定されるとしたが、Pk、Pwは定数にしてもよい。また、閾値ノイズNの加算も好適ではあるが必須ではない。さらに、式(2)に示すように閾値に直接ノイズ閾値を加えず、式(7)に示す画素間情報の算出においてノイズを加える形態にしてもよい。勿論、誤差拡散係数や走査方向に関しても、任意の設定を適用することが可能である。
【００６２】
つまり、本発明は、適正な濃度再現になるように、画素間情報を取得し制御することが特徴であり、画素間情報の取得、制御方法は限定されない。また、本発明は、数多く提案されている誤差拡散法に類する階調変換手法に対しても適用可能である。
【００６３】
例えば、本発明を誤差拡散法ではなく平均誤差最小法に適用する場合、各画素における発生誤差E(x, y)を保持しておき、誤差拡散部107において注目画素近傍の平均誤差としてD(x, y)を算出する。図6により平均誤差D(x, y)を算出する際に使用する近傍画素の発生誤差E(x, y)に与える重み係数の一例を示す。平均誤差最小法と誤差拡散法を比較すると、計算の手順が異なるため必要なメモリ量に差があるが、処理としては等価であり、本発明を適用可能である。
【００６４】
また、上述の実施例においては、プリンタを例に色材としてインクを示したが、これに限るものではなく、電子写真方式のプリンタや複写機を例にトナーを色材としてもよい。つまり、電子写真方式の印刷装置は、例えば、O(x, y)=‘1’ならばトナーによりドットを形成し、形成したドットを記録紙などに転写する。また、O(x, y)=‘0’ならばトナーによるドットを形成しない。また、出力データO(x, y)の出力先は印刷装置に限らず、画像表示装置やメモリでもよい。
【００６５】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
0005508031.tif 000002
【図２】
0005508031.tif 000003
【図３】
0005508031.tif 000004
【図５】
0005508031.tif 000005
【図６】
0005508031.tif 000006
【図８】
0005508031.tif 000007
【図４】
0005508031.tif 000008
【図７】
0005508031.tif 000009