(57)【特許請求の範囲】
【請求項１】
入力階調毎に、誤差拡散処理で用いる誤差拡散係数を決定する画像処理装置であって、
前記入力階調毎に、複数の候補誤差拡散係数を生成する生成手段と、
前記入力階調毎に、前記生成手段により生成された複数の候補誤差拡散係数を用いて入力画像に対して誤差拡散処理を施して多値画像データを生成し、該多値画像データに基づき２値画像を生成する２値画像生成手段と、
前記入力階調毎に、前記２値画像生成手段により生成された、前記複数の候補誤差拡散係数毎の２値画像の画質を評価する評価手段と、
前記入力階調毎に、前記評価手段による評価結果に基づいて、前記複数の候補誤差拡散係数の中から１の候補誤差拡散係数を決定する決定手段とを有し、
前記評価手段は、前記２値画像をドットの重なりによる濃度変化に基づき多値画像に変換し、該多値画像を評価することにより前記２値画像の画質を評価し、
前記決定手段は、注目階調の前記評価結果と、該注目階調の近隣階調の前記評価結果とに基づいて、該注目階調の候補誤差拡散係数を決定することを特徴とする画像処理装置。
【請求項２】
入力階調毎に、誤差拡散処理で用いる誤差拡散係数を決定する画像処理方法であって、
前記入力階調毎に、複数の候補誤差拡散係数を生成する生成工程と、
前記入力階調毎に、前記生成工程により生成された複数の候補誤差拡散係数を用いて入力画像に対して誤差拡散処理を施して多値画像データを生成し、該多値画像データに基づき２値画像を生成する２値画像生成工程と、
前記入力階調毎に、前記２値画像生成工程により生成された、前記複数の候補誤差拡散係数毎の２値画像の画質を評価する評価工程と、
前記入力階調毎に、前記評価工程による評価結果に基づいて、前記複数の候補誤差拡散係数の中から１の候補誤差拡散係数を決定する決定工程とを有し、
前記評価工程は、前記２値画像をドットの重なりによる濃度変化に基づき多値画像に変換し、該多値画像を評価することにより前記２値画像の画質を評価し、
前記決定工程は、注目階調の前記評価結果と、該注目階調の近隣階調の前記評価結果とに基づいて、該注目階調の候補誤差拡散係数を決定することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多階調の入力画像を、入力画像の階調数より少ない階調数を有する画像に変換する画像処理装置及び画像処理方法に関するものである。
【０００２】
【従来の技術】
従来、多値画像データを２値（或いは２値以上で入力画像の階調数より少ない階調数を有する）画像に変換する手段として、R.Floydらによる誤差拡散法("An adaptive algorithm for spatial gray scale", SID International Symposium Digest of Technical Paperes,vol4.3,1975,pp.36-37)がある。この誤差拡散法は、ある画素で生じた２値化誤差を以降の複数画素へ拡散することにより擬似的に階調表現を行うものである。一般的な誤差拡散法では、２値化誤差を拡散する際の重み付け（拡散係数）を入力データの値に関わらず固定としていた。
【０００３】
しかし、拡散係数を固定とする誤差拡散法では、ハイライト部及びシャドー部においてドットが均一に分散されず、鎖状に連なって発生するなどの問題点がある。このため、特開平１０−３１２４５８号には、入力階調に応じて異なる拡散係数を用いる誤差拡散法が開示されている。
【０００４】
この方法では、ハイライト部及びシャドー部における第１の拡散係数と、中間階調における第２の拡散係数とを定義し、ハイライト部から中間階調、及び中間階調からシャドー部への領域には、これら２つの拡散係数を線形補間したものを用いている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記従来例による方法では、ハイライト部及びシャドー部と、中間階調領域に用いる拡散係数は定義されているが、これ以外の入力階調領域においては、２つの拡散係数を線形補間した拡散係数を用いており、全ての階調において最適な拡散係数が定義されていない。また既に拡散係数が定義されている階調においても、定義された拡散係数が最適である根拠はない。更に画像の解像度などの諸条件により、最適な拡散係数が異なるという問題点がある。
【０００６】
本発明は、上述の課題を解決するためになされたもので、多階調の入力画像を入力画像の階調数より少ない階調数を有する画像に変換する処理に際し、全階調に対して良好な処理結果を得られる画像処理装置及び画像処理方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明は、入力階調毎に、誤差拡散処理で用いる誤差拡散係数を決定する画像処理装置であって、
前記入力階調毎に、複数の候補誤差拡散係数を生成する生成手段と、
前記入力階調毎に、前記生成手段により生成された複数の候補誤差拡散係数を用いて入力画像に対して誤差拡散処理を施して多値画像データを生成し、該多値画像データに基づき２値画像を生成する２値画像生成手段と、
前記入力階調毎に、前記２値画像生成手段により生成された、前記複数の候補誤差拡散係数毎の２値画像の画質を評価する評価手段と、
前記入力階調毎に、前記評価手段による評価結果に基づいて、前記複数の候補誤差拡散係数の中から１の候補誤差拡散係数を決定する決定手段とを有し、
前記評価手段は、前記２値画像をドットの重なりによる濃度変化に基づき多値画像に変換し、該多値画像を評価することにより前記２値画像の画質を評価し、
前記決定手段は、注目階調の前記評価結果と、該注目階調の近隣階調の前記評価結果とに基づいて、該注目階調の候補誤差拡散係数を決定することを特徴とする。
【０００８】
また上記目的を達成するために、本発明は、入力階調毎に、誤差拡散処理で用いる誤差拡散係数を決定する画像処理方法であって、
前記入力階調毎に、複数の候補誤差拡散係数を生成する生成工程と、
前記入力階調毎に、前記生成工程により生成された複数の候補誤差拡散係数を用いて入力画像に対して誤差拡散処理を施して多値画像データを生成し、該多値画像データに基づき２値画像を生成する２値画像生成工程と、
前記入力階調毎に、前記２値画像生成工程により生成された、前記複数の候補誤差拡散係数毎の２値画像の画質を評価する評価工程と、
前記入力階調毎に、前記評価工程による評価結果に基づいて、前記複数の候補誤差拡散係数の中から１の候補誤差拡散係数を決定する決定工程とを有し、
前記評価工程は、前記２値画像をドットの重なりによる濃度変化に基づき多値画像に変換し、該多値画像を評価することにより前記２値画像の画質を評価し、
前記決定工程は、注目階調の前記評価結果と、該注目階調の近隣階調の前記評価結果とに基づいて、該注目階調の候補誤差拡散係数を決定することを特徴とする。
【０００９】
【発明の実施の形態】
以下、図面を参照しながら本発明に係る実施の形態を詳細に説明する。
【００１０】
［第１の実施形態］
図１は、第１の実施形態による画像処理装置の構成を示すブロック図である。同図において、１０１は画像生成ユニットであり、例えば画像を光学的に読み取り、多値画像データを出力する。１０２は画像メモリであり、画像生成ユニット１０１により生成された画像データを格納する。１０３は画像２値化ユニットであり、後述する方法により画像メモリ１０２に格納されている多値画像データの２値化を行う。１０４は拡散係数テーブルであり、画像２値化ユニット１０３において画素を２値化し誤差配分処理を行う際に用いる、階調データ毎の重み付け（拡散係数）が格納されたテーブルである。１０５は候補拡散係数生成ユニットであり、拡散係数テーブル１０４に格納する係数の候補として検討する拡散係数を順次生成する。
【００１１】
１０６は２値画像メモリであり、画像２値化ユニット１０３により２値化された２値画像データが格納される。１０７は画像評価値演算ユニットであり、２値画像の評価値を求める。画像評価値演算ユニット１０７において求めた２値画像評価値データは１０８の画像評価値メモリに格納される。１０９は拡散係数選択ユニットであり、画像評価値メモリ１０８に格納された２値画像評価値データに基づき候補拡散係数の中から一つの拡散係数を選択する。そして、拡散係数選択ユニット１０９において選択された拡散係数が最終的に拡散係数テーブル１０４に格納される。
【００１２】
図２は、第１の実施形態による誤差拡散係数テーブル１０４の一例を示す図である。図示するように、横一列の各ます目の値が注目画素の２値化誤差を周辺画素に分配する際の拡散係数であり、“０”から“１”の範囲内の実数が格納される。ここで、欄外左の数字は入力画素値を表し、欄上の文字は２値化誤差を分配する画素の注目画素に対する位置を表している。
【００１３】
図３は、図１に示す画像２値化ユニット１０３の詳細な構成を示すブロック図である。同図において、３０１はデータ入力端子であり、各画素値が“０”から“２５５”の範囲内の８ビットの入力画像を読み込む。３０２は入力バッファであり、入力画像の一ライン分の各画素値を記憶する。３０３は入力補正ユニットであり、入力画像の１画素に処理済みの画素からの累積誤差を加算する。３０４は２値化ユニットであり、入力補正ユニット３０３において補正された入力画像の画素値を所定の閾値に基づき２値化する。３０５は出力バッファであり、２値化ユニット３０４において２値化されたデータを一ライン分記憶する。３０６は差分演算ユニットであり、注目画素に対する２値化誤差を求める。３０７は誤差配分ユニットであり、差分演算ユニット３０６で求めた２値化誤差を周辺画素に拡散する処理を行う。３０８は誤差バッファであり、注目画素の周辺画素に拡散した誤差を記憶するメモリである。３０９は出力レベル０又は２５５の２値信号の出力端子である。
【００１４】
尚、上述の入力画像とは、各画素値が８ビットで“０”から“２５５”の範囲内の値をもつ多値画像データを指す。また、図示されない方法により入力画像の横サイズ（画素数）Ｗ、縦サイズＨが指定されているものとする。
【００１５】
図４は、第１の実施形態による入力バッファ３０２の構成を示す図である。各ます目内の値が入力画像の画素値であり、“０”から“２５５”の何れかの整数値が記憶される。
【００１６】
図５は、第１の実施形態による出力バッファ３０５の構成を示す図である。各ます目内の値が出力されるデータであり、“０”か“２５５”のどちらかの値が記憶される。
【００１７】
図６は、第１の実施形態による誤差バッファ３０８の構成を示す図である。各ます目内の値が２値化処理済みの画素からの累積誤差であり、“−２５５”から“２５５”の範囲の実数が記憶される。また、誤差バッファ３０８には、ライン端の処理に対応するために入力画像の横サイズＷよりも２画素分余裕をもたせている。
【００１８】
以上の構成からなる画像処理装置において、多値の入力画像を２値画像に変換する処理について説明する。
【００１９】
図７は、第１の実施形態による入力多値画像を２値画像に変換する手順を示すフローチャートである。尚、このフローチャートでは、副走査方向のライン番号をｙ、主走査方向のドット番号をｘとし、２値化の処理は画像左上端から右下端へ順に行うものとする。
【００２０】
まず、ライン番号ｙを“１”に初期化し、図６に示した誤差バッファ３０８を“０”に初期化する（ステップＳ７０１）。つまり、この誤差バッファ３０８のＥ(１)からＥ(Ｗ＋２)とＥtempの値をそれぞれ“０”に設定する。
【００２１】
次に、ｙライン目の画素値データを入力バッファ２２に読み込む（ステップＳ７０２）。即ち、ｙライン目のｘドット目の入力データをＩ(ｘ)に代入する作業をｘ＝１からｘ＝Ｗについて行う。
【００２２】
このようにして一ライン分の入力データを読み込んだ後、画素位置ｘを初期値“１”に設定し（ステップＳ７０３）、ｘ番目の入力データＩ(ｘ)に詳細は後述する処理済み画素からの拡散誤差Ｅ(ｘ＋１)を加え、補正データＩ'(ｘ)とする（ステップＳ７０４）。そして、この補正データＩ'(ｘ)を閾値１２７と比較し（ステップＳ７０５）、Ｉ'(ｘ)が閾値１２７よりも大きければ、“２５５”を結果値Ｐ(ｘ)に代入し（ステップＳ７０６）、大きくなければＰ(ｘ)を“０”とする（ステップＳ７０７）。そして、注目画素の補正データＩ'(ｘ)と求めた結果値Ｐ(ｘ)との差を、２値化誤差Ｅrrとして求める（ステップＳ７０８）。
【００２３】
次に、この２値化誤差Ｅrrを周辺画素に分配する処理を行う。このとき、配分の重み付け（拡散係数）は入力データＩ(ｘ)によって異なる。まず、入力データＩ(ｘ)の値に対応する拡散係数を拡散係数テーブル１０４より読み込み（ステップＳ７０９）、その重み付けに従って２値化誤差Ｅrrを周辺画素に分配する処理を行う。本実施形態では、図２に示した拡散係数テーブル１０４より読み込んだ拡散係数Ｋ1、Ｋ2、Ｋ3、Ｋ4を、図８に示すように注目画素周辺の未処理画素に２値化誤差Ｅrrを分配する。ここで、分配する２値化誤差Ｅrrは、誤差バッファ３０８に次のように格納される（ステップＳ７１０）。
【００２４】
Ｅ(ｘ＋２)＝Ｅ(ｘ＋２)＋Ｋ1・Ｅrr
Ｅ(ｘ)＝Ｅ(ｘ)＋Ｋ2・Ｅrr
Ｅ(ｘ＋１)＝Ｅtemp＋Ｋ3・Ｅrr
Ｅtemp＝Ｋ4・Ｅrr
次に、注目画素位置ｘがラインの端まで到達しているかを判断し（ステップＳ７１１）、到達していなければ注目画素を主走査方向に１つ移動し（ステップＳ７１２）、ステップＳ７０４からステップＳ７１１の処理を繰り返す。そして、端まで処理が終了した時点で、一ライン分の結果値Ｐ（１）からＰ（Ｗ）を出力し、Ｅtempを“０”にリセットする（ステップＳ７１３）。その後、ライン番号ｙが最大値Ｈに到達したかを判断する（ステップＳ７１４）。ｙがＨより小さければ、ライン番号ｙをインクリメントし（ステップＳ４１５）、ステップＳ７０２からステップＳ７１４の処理まで繰り返す。その後、ｙがＨに到達していれば、本処理を終了する。
【００２５】
尚、本実施形態では、一ラインを処理する方向は固定としているが、ライン毎に左右交互或いは予め定められた順序で方向を切り替えてもよい。例えば、右端から左方向に２値化処理を行う場合は、２値化の誤差を図９に示すように、図８に示す拡散係数の位置を左右逆にした位置に分配する。
【００２６】
次に、本実施形態による拡散係数テーブル１０４を作成する方法について説明する。
【００２７】
図１０は、候補拡散係数生成ユニット１０５により生成される全候補拡散係数を示す図である。ここで、記号「＊」は注目画素を表す。各階調データ値毎に、全候補拡散係数の中から一つの係数が選ばれ、上述の拡散係数テーブル１０４に格納される。
【００２８】
図１１は、第１の実施形態による拡散係数の設定処理を示すフローチャートである。まず、階調データ値ｇの初期値を“１”に設定し（ステップＳ１１０１）、その後全画素の値がｇである縦２０４８画素、横５１２画素の入力画像を生成する（ステップＳ１１０２）。
【００２９】
次に、図１０に示した全侯補拡散係数について順次以下の処理を行う。まず、侯補拡散係数を設定し（ステップＳ１１０３）、拡散係数テーブル１０４のｇに対応する位置に格納する。そして、生成した入力画像を上述の方法により２値化し、この２値画像から図１２に示すように下中央部分の縦横２５６画素分を切り取る（ステップＳ１１０４）。
【００３０】
次に、上述のように作成した縦横２５６画素の２値画像の画質評価値を詳細は後述する方法によって計算し（ステップＳ１１０５）、画像評価値メモリ１０８に格納する。その後、候補拡散係数の全てについて評価値演算を終了したか否かを確認し（ステップＳ１１０６）、終了していなければステップＳ１１０３からステップＳ１１０６の処理を繰り返す。
【００３１】
また、全候補拡散係数についての評価値演算が終了していれば、階調データ値ｇをインクリメントし（ステップＳ１１０７）、ｇの値と“２５５”を比較する（ステップＳ１１０８）。ここで、ｇの値が“２５５”より小さければステップＳ１１０２からステップＳ１１０８の処理を繰り返すが、ｇの値が“２５５”に達していれば、画像評価値メモリ１０８に格納された評価値に基づき階調データ値ｇ毎に全侯補拡散係数の中から詳細は後述の方法により一つの拡散係数を選択し、拡散係数テーブル１０４に格納し（ステップＳ１１０９）、上述の拡散係数テーブル作成過程を終了する。
【００３２】
尚、上述の処理では、階調データ値ｇが“０”と“２５５”の場合の拡散係数は作成していないが、階調データ値ｇが“０”の場合はｇ＝１における拡散係数を、同様にｇの値が“２５５”の場合はｇ＝２５４における拡散係数を拡散係数テーブル１０４に格納する。
【００３３】
次に、上述の画像評価値演算ユニット１０７における評価値演算方法について説明する。
【００３４】
図１３は、第１の実施形態による２値画像の評価値演算処理を示すフローチャートである。まず、図１１に示すステップＳ１１０４において、階調データ値ｇ毎に設定した候補拡散係数を用いて作成された２値画像を読み込む（ステップＳ１３０１）。その後、実際のプリンタにおけるインクの重なりを考慮するため、読み込んだ２値画像を詳細は後述する方法により多値画像に変換する（ステップＳ１３０２）。
【００３５】
その後、その多値画像の２次元フーリエ変換を行い、２次元パワースペクトルＰＷ(i,j)を求める（ステップＳ１３０３）。ここで、ｉ，ｊは“−１２８”〜“１２８”の範囲の値であり、２次元パワースペクトル上の位置を表す。図１４に、２次元パワースペクトルの一例を示す。
【００３６】
次に、上述のようにして求めた２値画像の２次元パワースペクトルを１次元化する（ステップＳ１３０４）。この処理は、図１５に示すように、２次元パワースペクトルＰＷ(i,j)を同心円状の輪帯で区切り、周波数帯域ｆ毎のパワースペクトルの平均値を求める処理である。即ち、次式により求められる。
【００３７】
【数１】
0004035284.tif 000002
【００３８】
ここで、ＩＮＴは小数点以下の切り上げ処理を表す。また、周波数ｆは“０”〜“１８１”までの整数、Ｎ(ｆ)はｆ＝ＩＮＴ(√(ｉ2＋ｊ2))を満たす画素位置（ｉ，ｊ）の数である。
【００３９】
図１６は、横軸に周波数ｆを、縦軸に各輪帯内のパワースペクトル平均値ＲＡＰＳ(ｆ)をとったグラフの一例である。
【００４０】
次に、上述の処理により一次元化したパワースペクトルＲＡＰＳ(ｆ)に対して、視覚特性フィルタ（ＶＴＦ）処理を行う（ステップＳ１３０５）。本実施形態で用いる視覚特性フィルタは、次の式で表される。
【００４１】
【数２】
0004035284.tif 000003
【００４２】
ここで、ｆ'は空間周波数であり、視野角１度あたりの周期(cycles/degree)として与えられている。観察距離を３００ｍｍとし、２値画像の解像度を１２００ｄｐｉに設定した場合、ｆ'を上述のｆに変換すると、上式は次のようになる。
【００４３】
【数３】
0004035284.tif 000004
【００４４】
図１７は、視覚特性フィルタの一例を示す図であり、ｆを横軸、ＶＴＦ(ｆ)を縦軸にとったグラフである。
【００４５】
次に、上述の処理により求めた視覚特性フィルタＶＴＦ(ｆ)を用いて、ＲＡＰＳ(ｆ)に視覚特性フィルタ処理を行い、Filtered＿ＲＡＰＳ(ｆ)を求める。即ち、“０”〜“１８１”までの周波数ｆの値について次の演算を行う。
【００４６】
Filtered＿ＲＡＰＳ(ｆ)＝ＶＴＦ2(ｆ)×ＲＡＰＳ(ｆ)  ０≦ｆ≦１８１
こうして視覚特性フィルタ処理を行った１次元パワースペクトルFiletered＿ＲＡＰＳ(ｆ)の総和を求め（直流成分は除く）、画像評価値とする（ステップＳ３０５）。即ち、次式で表される値を求め、画像評価値演算処理を終了する。
【００４７】
【数４】
0004035284.tif 000005
【００４８】
次に、２値画像の、ドットの重なりを考慮した多値画像への変換処理について説明する。
【００４９】
図１８は、紙面上に形成されたドットが隣接するドットの領域にはみだす様子を例示したものである。図１９は、第１の実施形態による２値画像を多値化する処理を示すフローチャートである。
【００５０】
まず、全ての画素位置ｘ，ｙについて、上述した隣接するドットへのはみだしによる濃度修正値Ｆ（ｘ，ｙ）を“０”に初期化する（ステップＳ１９０１）。次に、入力２値画像の副走査方向のライン番号ｙを“１”に初期化し（ステップＳ１９０２）、入力２値画像の主走査方向のドット番号ｘを“１”に初期化する（ステップＳ１９０３）。そして、入力２値画像の位置（ｘ，ｙ）における画素値Ｐ(x,y)を読み込み、以下の式により、Ｆ(x+i,y+j)の値を更新する（ステップＳ１９０４）。
【００５１】
【数５】
0004035284.tif 000006
【００５２】
ここで、Ｃijは、注目するドットがはみ出した部分における隣接ドット領域の面積に占める割合である。また、Ｄ1は紙の白を基準としたドットの濃度であり、Ｄ2はドットを２回重ねた際の濃度とする。図２０に、Ｃijの一例を示す。
【００５３】
その後、ドット番号ｘをインクリメントし（ステップＳ１９０５）、ｘと入力２値画像の横サイズＷとを比較する（ステップＳ１９０６）。ここで、ｘがＷを超えていなければ、ステップＳ１９０４からステップＳ１９０６の濃度修正値の更新処理を繰り返す。また、ｘがＷより大きければ、次のラインを処理するためにｙをインクリメントし（ステップＳ１９０７）、ｙと入力２値画像の縦サイズＨとを比較する。ここで、ｙがＨに達していなければ、ステップＳ１９０３からステップＳ１９０８を繰り返す。また、ｙがＨより大きければ、全ての入力２値画像の画素値Ｐ(x,y)に濃度修正値Ｆ（ｘ，ｙ）を加算し（ステップＳ１９０９）、２値画像を多値画像に変換する処理を終了する。
【００５４】
次に、拡散係数選択ユニット１０９における拡散係数の選択方法について説明する。
【００５５】
図２１は、第１の実施形態による拡散係数の選択処理を示すフローチャートである。まず、階調データ値ｇを“１”に初期化する（ステップＳ２１０１）。次に、画像評価値メモリ１０８に格納された全候補拡散係数についての２値画像評価値を読み込み、同評価値が最小となる候補拡散係数を拡散係数テーブル１０４のｇ番目に格納する（ステップＳ２１０２）。そして、ｇの値をインクリメントし（ステップＳ２１０３）、ｇの値と“２５５”とを比較する（ステップＳ２１０４）。ここで、ｇの値が“２５５”よりも小さければステップＳ２１０２からステップＳ２１０４の処理を繰り返す。また、ｇの値が“２５５”に達すると、本処理を終了する。
【００５６】
第１の実施形態によれば、画像評価関数を用いて入力階調毎に拡散係数を選ぶことにより、各階調に適した２値化処理を行うことが可能となる。
【００５７】
［第２の実施形態］
前述した第１の実施形態では、拡散係数選択ユニット１０９において各階調毎の拡散係数を決定する際に、該当する一階調の評価値データのみを参照しているが、第２の実施形態では複数の階調における評価値データを参照する。
【００５８】
図２２は、第２の実施形態による拡散係数の選択処理を示すフローチャートである。まず、評価範囲を示す値ＩＮＴＶＬを設定する（ステップＳ２２０１）。尚、ここでは、ＩＮＴＶＬの値を“４”とする。次に、階調データ値ｇを“１”に初期化し（ステップＳ２２０２）、画像評価値メモリ１０８に格納された２値画像評価値を読み込み、候補拡散係数毎に階調ｇ−ＩＮＴＶＬからｇ＋ＩＮＴＶＬにおける２値画像評価値の和Ｓを求める（ステップＳ２２０３）。このとき、ｇがＩＮＴＶＬよりも小さい場合は、階調“１”からｇ＋ＩＮＴＶＬまでの評価値の和をＳとする。またｇが“２５５”−ＩＮＴＶＬよりも小さい場合は、階調ｇ−ＩＮＴＶＬから“２５４”までの評価値の和をＳとする。即ち、各候補係数について、以下のように求める。
【００５９】
【数６】
0004035284.tif 000007
【００６０】
その後、評価値の和Ｓが最小となる候補拡散係数を求めて、拡散係数テーブル１０４のｇ番目に格納する（ステップＳ２２０４）。そして、ｇの値をインクリメントし（ステップＳ２２０５）、ｇの値と“２５５”を比較する（ステップＳ２２０６）。ここで、ｇの値が“２５５”よりも小さければステップＳ２２０３からステップＳ２２０６の処理を繰り返す。また、ｇの値が“２５５”に達すると、本処理を終了する。
【００６１】
第２の実施形態によれば、一階調だけでなく近隣の階調における２値化画像の評価値も考慮することにより、選ばれる係数が１階調毎に大きく変化することがなくなる。このため、階調変化が滑らかな画像の２値化が可能となる。
【００６２】
［第３の実施形態］
前述した第１の実施形態では、画像評価値演算ユニット１０７における画像評価値演算処理の際、ドットのはみ出しによる濃度変化を加味するために入力２値画像を同サイズの多値画像に変換したが、第３の実施形態では画像の１ドットを複数の画素で近似した多値画像に変換する。
【００６３】
図２３は、真円の一ドットを複数の画素を用いて近似した例である。隣接するドット間の距離をドットの直径より小さくすることにより、出力ドットのはみ出しや複数のドットの重なりを表す。
【００６４】
図２４は、第３の実施形態による入力２値画像から多値画像への変換を示す図である。図２４に示す（ａ）は入力２値画像であり、同（ｂ）は変換された多値画像である。また、Ｄ1はドットを一回打った際の紙面を基準とした濃度、Ｄ2は複数のドットが重なった際の濃度に対応する値である。
【００６５】
このようにして入力２値画像から変換された多値画像に対し、前述した図１３に示すステップＳ１３０３からステップＳ１３０６の処理を行い、画像評価値を求める。
【００６６】
第３の実施形態によれば、複数の画素を用いて出力１ドットを表現するため、よりプリンタ出力画像に近い画像データの評価を行うことが可能となる。
【００６７】
［第４の実施形態］
前述した第１乃至第３の実施形態では、図１３に示す２値画像の評価値を求める処理において、実際のプリンタにおけるインクの重なりやドットのはみだしによる濃度変化を考慮するために２値画像を多値画像に変換しているが、２値画像のまま評価値を求めることも可能である。
【００６８】
図２５は、第４の実施形態による２値画像の評価値演算処理を示すフローチャートである。まず、図２５に示すように、階調データ値ｇ毎に設定した候補拡散係数を用いて作成された２値画像を読み込む（ステップＳ２５０１）。その後、その２値画像の２次元フーリエ変換を行い、２次元パワースペクトルＰＷ(i,j)を求める（ステップＳ２５０２）。これ以降の処理は、図１３に示したステップＳ１３０４〜Ｓ１３０６と同様であり、その説明は省略する。
【００６９】
第４の実施形態によれば、プリンタの特徴を考慮しなくても良い場合、高速に２値画像の評価を行うことが可能となる。
【００７０】
［第５の実施形態］
前述した実施形態では、画像２値化ユニット１０３において入力画像の２値化処理を行う際、誤差バッファ３０８の初期値を“０”としたが、第５の実施形態では乱数を初期値とする。
【００７１】
図２６は、第５の実施形態による入力画像の２値化処理を示すフローチャートである。まず、誤差バッファ３０８のＥtempとＥ（１）からＥ（Ｗ＋２）の初期値を“−６４”〜“６４”の範囲内の乱数（整数）に設定する（ステップＳ２６０１）。これ以降のステップＳ２６０２からステップＳ２６１２の処理は、図７に示したステップＳ７０２からステップＳ７１２の処理と同様であり、その説明を省略する。
【００７２】
次に、一ライン分のデータの２値化処理が終了した後、“−６４”〜“６４”の何れかの整数をランダムに選択し、Ｅtempに代入する（ステップＳ２６１３）。続くステップＳ２６１４、Ｓ２６１５は、図７に示したステップＳ７１４、Ｓ７１５と同様であり、ライン番号ｙが入力画像の縦サイズＨに達した時点で２値化処理を終了する。
【００７３】
第５の実施形態によれば、誤差バッファの初期値を“０”とした場合に生じるドットが横一列に規則的に並ぶ現象を緩和することが可能となる。
【００７４】
［第６の実施形態］
前述した各実施形態では、拡散係数テーブル１０４に格納する、階調データ値ｇが“０”（ｇ＝０）の場合の拡散係数を、ｇが“１”（ｇ＝１）の場合の拡散係数と同じとしたが、この第６の実施形態ではｇ＝０の場合は２値化誤差を拡散しないものとする。また、階調データ値ｇ＝２５５の場合も、２値化誤差を拡散しないものとする。図２７は、第６の実施形態による拡散係数テーブルの一例を示す図である。
【００７５】
第６の実施形態によれば、入力画像が白や黒の領域（入力階調が０か２５５の領域）によって区切られた多値画像であっても、２値化処理済みの部分の誤差が白黒の区切りを超えて影響を及ぼすことがなく、より鮮鋭な２値化が可能となる。
【００７６】
尚、本発明は、前述した複数の実施形態における各処理を組み合わせて処理を行うことも可能である。
【００７７】
また、本発明は複数の機器（例えば、ホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【００７８】
更に、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００７９】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８０】
プログラムコードを供給するための記憶媒体としては、例えばフロッピーディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００８１】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８２】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８３】
【発明の効果】
以上説明したように、本発明によれば、多階調の入力画像を入力画像の階調数より少ない階調数を有する画像に変換する処理に際し、入力階調毎に最適なパラメータを用いることにより、全階調に対して良好な処理結果を得ることが可能となる。
【図面の簡単な説明】
【図１】第１の実施形態による画像処理装置の構成を示すブロック図である。
【図２】第１の実施形態による誤差拡散係数テーブル１０４の一例を示す図である。
【図３】画像２値化ユニット１０３の詳細な構成を示すブロック図である。
【図４】第１の実施形態による入力バッファ３０２の構成を示す図である。
【図５】第１の実施形態による出力バッファ３０５の構成を示す図である。
【図６】第１の実施形態による誤差バッファ３０８の構成を示す図である。
【図７】第１の実施形態による入力多値画像を２値画像に変換する手順を示すフローチャートである。
【図８】誤差拡散の様子を説明するための図である。
【図９】誤差拡散の処理方向を逆にした様子を説明するための図である。
【図１０】候補拡散係数生成ユニット１０５により生成される全候補拡散係数を示す図である。
【図１１】第１の実施形態による拡散係数の設定処理を示すフローチャートである。
【図１２】２値画像評価の対象とする部分を示す図である。
【図１３】第１の実施形態による２値画像の評価値演算処理を示すフローチャートである。
【図１４】２次元パワースペクトルの一例を示す図である。
【図１５】２次元パワースペクトルの一次元化を説明するための図である。
【図１６】１次元パワースペクトルの一例を示す図である。
【図１７】視覚特性フィルタの一例を示す図である。
【図１８】紙面上におけるインクドットの重なり、はみ出しを示す図である。
【図１９】第１の実施形態による２値画像を多値化する処理を示すフローチャートである。
【図２０】ドットの隣接ドット領域における重なり面積率の一例を示す図である。
【図２１】第１の実施形態による拡散係数の選択処理を示すフローチャートである。
【図２２】第２の実施形態による拡散係数の選択処理を示すフローチャートである。
【図２３】第３の実施形態による一ドットを複数の画素を用いて近似した例である。
【図２４】第３の実施形態による入力２値画像から多値画像への変換を示す図である。
【図２５】第４の実施形態による２値画像の評価値演算処理を示すフローチャートである。
【図２６】第５の実施形態による入力画像の２値化処理を示すフローチャートである。
【図２７】第６の実施形態による拡散係数テーブルの一例を示す図である。
【符号の説明】
１０１  画像生成ユニット
１０２  画像メモリ
１０３  画像２値化ユニット
１０４  拡散係数テーブル
１０５  候補拡散係数生成ユニット
１０６  ２値画像メモリ
１０７  画像評価値演算ユニット
１０８  画像評価値メモリ
１０９  拡散係数選択ユニット
【図１】
0004035284.tif 000008
【図２】
0004035284.tif 000009
【図３】
0004035284.tif 000010
【図４】
0004035284.tif 000011
【図５】
0004035284.tif 000012
【図６】
0004035284.tif 000013
【図７】
0004035284.tif 000014
【図８】
0004035284.tif 000015
【図９】
0004035284.tif 000016
【図１０】
0004035284.tif 000017
【図１１】
0004035284.tif 000018
【図１２】
0004035284.tif 000019
【図１３】
0004035284.tif 000020
【図１４】
0004035284.tif 000021
【図１５】
0004035284.tif 000022
【図１６】
0004035284.tif 000023
【図１７】
0004035284.tif 000024
【図１８】
0004035284.tif 000025
【図１９】
0004035284.tif 000026
【図２０】
0004035284.tif 000027
【図２１】
0004035284.tif 000028
【図２２】
0004035284.tif 000029
【図２３】
0004035284.tif 000030
【図２４】
0004035284.tif 000031
【図２５】
0004035284.tif 000032
【図２６】
0004035284.tif 000033
【図２７】
0004035284.tif 000034