(57)【特許請求の範囲】
【請求項１】
入力した多値の画像データを階調変換して出力する画像処理装置において、
乱数値を生成する乱数生成手段と、
前記乱数生成手段で生成された乱数値の振れ幅が所定値以上となるように制御すると共に、前記乱数値の振れ幅を前記画像データの画素値に応じて制御する乱数制御手段と、
前記画像データの各画素値に前記乱数制御手段で制御された乱数値を加算する加算手段と、
前記加算手段での加算結果を所定の除算定数で除算した結果のうちの商のみを用いて階調変換を行う階調変換手段とを有し、前記所定値は前記除算定数より１小さい値であることを特徴とする画像処理装置。
【請求項２】
前記乱数制御手段は、前記画素値が低濃度域及び高濃度域の値の場合には、前記乱数生成手段で生成された乱数値の振れ幅が前記所定値となるように制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記乱数制御手段は、前記画素値が中濃度域の値の場合には、前記乱数生成手段で生成された乱数値の振れ幅が前記所定値より大きい値となるように制御することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記乱数制御手段は、前記画素値が第１の規定値Ｎ１以下の場合及び第４の規定値Ｎ４（Ｎ１＜Ｎ４）以上の場合には前記乱数生成手段で生成された乱数値を定数で除算した値を出力することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記乱数制御手段は、前記画素値が前記第１の規定値Ｎ１より大きく、かつ第２の規定値Ｎ２（Ｎ１＜Ｎ２＜Ｎ４）以下の場合及び前記画素値が第３の規定値Ｎ３（Ｎ１＜Ｎ２＜Ｎ３）以上、かつ前記第４の規定値Ｎ４より小さい場合には前記乱数生成手段で生成された乱数値を前記定数で除算した値に、前記画素値及び前記規定値に応じた値を加算した値を出力することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記乱数生成手段は、振れ幅が前記所定値以上となる乱数値を生成することを特徴とする請求項１乃至５の何れか一項に記載の画像処理装置。
【請求項７】
前記加算手段は、前記除算定数によって除算した余りの最大値の１／２をバイアス値として更に加算することを特徴とする請求項１乃至６の何れか一項に記載の画像処理装置。
【請求項８】
前記除算定数が偶数の場合、前記階調変換手段は、前記画素値及び前記除算定数及び前記所定値を２倍にして階調変換処理を行うことを特徴とする請求項１乃至７の何れか一項に記載の画像処理装置。
【請求項９】
入力した多値の画像データを階調変換して出力する画像処理方法において、
乱数値を生成する乱数生成工程と、
前記乱数生成工程で生成された乱数値の振れ幅が所定値以上となるように制御すると共に、前記乱数値の振れ幅を前記画像データの画素値に応じて制御する乱数制御工程と、
前記画像データの各画素値に前記乱数制御工程で制御された乱数値を加算する加算工程と、
前記加算工程での加算結果を所定の除算定数で除算した結果のうちの商のみを用いて階調変換を行う階調変換工程とを有し、前記所定値は前記除算定数より１小さい値であることを特徴とする画像処理方法。
【請求項１０】
前記乱数制御工程は、前記画素値が低濃度域及び高濃度域の値の場合には、前記乱数生成工程で生成された乱数値の振れ幅が前記所定値となるように制御することを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
前記乱数制御工程は、前記画素値が中濃度域の値の場合には、前記乱数生成工程で生成された乱数値の振れ幅が前記所定値より大きい値となるように制御することを特徴とする請求項９又は１０に記載の画像処理方法。
【請求項１２】
前記乱数制御工程は、前記画素値が第１の規定値Ｎ１以下の場合及び第４の規定値Ｎ４（Ｎ１＜Ｎ４）以上の場合には前記乱数生成工程で生成された乱数値を定数で除算した値を出力することを特徴とする請求項９に記載の画像処理方法。
【請求項１３】
前記乱数制御工程は、前記画素値が前記第１の規定値Ｎ１より大きく、かつ第２の規定値Ｎ２（Ｎ１＜Ｎ２＜Ｎ４）以下の場合及び前記画素値が第３の規定値Ｎ３（Ｎ１＜Ｎ２＜Ｎ３）以上、かつ前記第４の規定値Ｎ４より小さい場合には前記乱数生成工程で生成された乱数値を前記定数で除算した値に、前記画素値及び前記規定値に応じた値を加算した値を出力することを特徴とする請求項１２に記載の画像処理方法。
【請求項１４】
前記乱数生成工程は、振れ幅が前記所定値以上となる乱数値を生成することを特徴とする請求項９乃至１３の何れか一項に記載の画像処理方法。
【請求項１５】
前記加算工程は、前記除算定数によって除算した余りの最大値の１／２をバイアス値としてさらに加算することを特徴とする請求項９乃至１４の何れか一項に記載の画像処理方法。
【請求項１６】
前記除算定数が偶数の場合、前記階調変換工程は、前記画素値及び前記除算定数及び前記所定値を２倍にして階調変換処理を行うことを特徴とする請求項９乃至１５に記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力した多値の画像データを階調変換して出力する画像処理装置及び方法に関するものである。
【０００２】
【従来の技術】
従来、中間調表現を行うための画像処理方法として誤差拡散法（以下「ＥＤ」と呼ぶ）や平均濃度保存法（以下「ＭＤ」と呼ぶ）などが一般に知られている。これらは、少ない階調数を用いて面積階調表現を行うことにより、マクロ的に中間調を表現しようとするものである。
【０００３】
しかし、これらの処理は入力画像（８ｂｉｔ）に対して行うため、処理負荷が大きかった。そのため、入力画像の８ｂｉｔを前処理で４ｂｉｔに変換し、処理負荷を小さくする手法が米国特許USP5,394,250やUSP5,436,736などで提案されている。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述の提案は、処理負荷を小さくすることができても、ＥＤやＭＤで処理したときに特定の濃度領域で問題となる独自なテクスチャを改善することができなかった。
【０００５】
そこで、図１に示すように、ｔ値化処理の前段で入力画像に所定の乱数を加算することにより、そのテクスチャを改善する手法が提案されている。その詳細を以下に述べる。
【０００６】
同図において、１０１は乱数発生部であり、乱数Ｒを生成する処理部である。図２は乱数生成部１０１の構成を示すブロック図である。また、図３は乱数発生をプログラム言語Ｃで示したものである。ここでは、説明の関係上、図３を用いて説明する。
【０００７】
まず、初期化で、ｐ［ii］：（０≦ii≦25）のレジスタに“０”を書き込み、ｐ［12］のレジスタのみに“１”を設定する。そして、乱数値を出力する前に、画素毎にｐ［０］＝（ｐ［25］＾ｐ［24］＾ｐ［23］＾ｐ［22］＆１）の演算を行った後、以下の演算により、−１７〜１７の乱数値を生成する。
【０００８】
乱数＝（１−２＊ｐ［22］）＊（（（ｐ［15］＊64＋ｐ［16］＊32＋ｐ［17］＊16＋ｐ［18］＊８＋ｐ［19］＊４＋ｐ［20］＊２＋ｐ［21］)＊17）／128）
ここで、±１７以上の乱数を生成し、最後に１２８で除算しているのは、乱数の発生率に偏りをなくすためである。
【０００９】
また、上式では、−１７〜１７の乱数を生成しているが、乱数発生部を以下のようにし、−１５〜１５までの乱数値を生成するように変更しても同様な効果が得られることは言うまでもない。
【００１０】
乱数＝（１−２＊ｐ［２］）＊（ｐ［18］＊８＋ｐ［19］＊４＋ｐ［20］＊２＋ｐ［21］
この乱数値は、乱数値の絶対値を大きくするとテクスチャ改善効果が大きくなり、絶対値を小さくするとテクスチャ改善効果が小さくなる傾向がある。
【００１１】
しかし、乱数値を大きくしすぎると、テクスチャの改善効果以上に画像が荒れてしまい、画質の低下につながることは言うまでもない。絶対値で７〜１７程度の値が実現的である。
【００１２】
図１に戻り、乱数発生部１０１から出力された乱数値は、符号反転及びデータ保持部１０２とセレクタ１０３に入力される。
【００１３】
符号反転及びデータ保持部１０２では、入力された乱数値の符号を一度反転し、“ｐ×Ｘ＋ｐ／２”（ｐ≧２の任意な偶数値、Ｘ：主走査方向のアドレス値）画素の間、その乱数値を保持した後、出力する構成となっている。
【００１４】
一方、セレクタ１０３では、入力された乱数値と、符号反転及びデータ保持部１０２との値を画像位置信号により、出力を切り替える構成となっている。
【００１５】
ここで、上述の画素位置信号とは、“ｐ×Ｘ”（ｐ≧２の任意な偶数値、Ｘ：主走査方向のアドレス値）の画素毎に乱数発生部１０１の値を出力させ、“ｐ×Ｘ＋ｐ／２”の画素毎に符号反転及びデータ保持部１０２の値を出力させる制御信号のことであり、Ｈｓｙｎｃ信号から生成される。それ以外の画素位置では、“０”の値を出力する構成となっている。
【００１６】
以上の処理により生成した乱数値を、入力多値信号Ｄが“０”又は“２５５”以外の場合、加算部１０４で入力多値信号Ｄに加算する構成となっている。この時、図示はしていないが、最小０、最大２５５でリミッタをかけている。
【００１７】
次に、除算部１０５では、入力画像信号を“１７”で割り、商と余りとを分離する処理を行っている。ここで、商（０〜１５）は、加算部１０７へ入力され、余り（０〜１６）は、コンパレータ１０６へ入力される構成となっている。
【００１８】
また、乱数発生部１０９では、上述の乱数発生部１０１と基本的に同様な手法で生成された０〜１６の正の乱数値が出力される構成となっている。その詳細は、乱数発生部１０１と同様なため、説明を省略するが、図４は乱数発生部１０９の乱数発生をプログラム言語Ｃで示したものである。
【００１９】
次に、コンパレータ１０６では、乱数発生部１０９から入力された乱数値（０〜１６）と除算部１０５から入力された余りの値（０〜１６）とを比較し、余りの方が乱数値より大きい場合の時のみ、“１”の値を出力し、それ以外は“０”を出力する構成となっている。この出力値は、加算部１０７で除算部１０５からの商の値（０〜１５）が加算され、４ｂｉｔ信号が後述するｔ値化処理部に出力される。
【００２０】
以上の処理により、入力信号を４ｂｉｔ信号に変換した後、ｔ（ｔ≦４）値化処理をｔ値化処理部１０８で施し、出力する構成となっている。
【００２１】
しかし、上述した図１に示した手法の場合、加算部１０４と加算部１０７とで、入力画像に２度乱数を加えていることになり、ハード規模が大きくなるだけでなく、画質の低下にもつながるという問題点があった。
【００２２】
本発明は、上記課題を解決するためになされたもので、ハードウェアの簡略化を図ると共に、多値画像データの階調変換処理を高画質に行うことを目的とする。
【００２３】
【課題を解決するための手段】
上記目的を達成するために、本発明は、入力した多値の画像データを階調変換して出力する画像処理装置において、乱数値を生成する乱数生成手段と、前記乱数生成手段で生成された乱数値の振れ幅が所定値以上となるように制御すると共に、前記乱数値の振れ幅を前記画像データの画素値に応じて制御する乱数制御手段と、前記画像データの各画素値に前記乱数制御手段で制御された乱数値を加算する加算手段と、前記加算手段での加算結果を所定の除算定数で除算した結果のうちの商のみを用いて階調変換を行う階調変換手段とを有し、前記所定値は前記除算定数より１小さい値であることを特徴とする。
【００２４】
また上記目的を達成するために、本発明は、入力した多値の画像データを階調変換して出力する画像処理方法において、乱数値を生成する乱数生成工程と、前記乱数生成工程で生成された乱数値の振れ幅が所定値以上となるように制御すると共に、前記乱数値の振れ幅を前記画像データの画素値に応じて制御する乱数制御工程と、前記画像データの各画素値に前記乱数制御工程で制御された乱数値を加算する加算工程と、前記加算工程での加算結果を所定の除算定数で除算した結果のうちの商のみを用いて階調変換を行う階調変換工程とを有し、前記所定値は前記除算定数より１小さい値であることを特徴とする。
【００２５】
【発明の実施の形態】
以下、図面を参照しながら本発明に係る実施の形態について詳細に説明する。尚、本実施形態では、本発明をカラー複写機の２値化処理に適用した場合を例に説明する。
【００２６】
●処理概略
図５は、実施形態におけるカラー複写機の概略構成を示すブロック図である。同図において、５０９は画像読取部であり、レンズ５０１、ＣＣＤセンサ５０２、アナログ信号処理部５０３により構成される。ここで、レンズ５０１を介してＣＣＤセンサ５０２に結像された原稿５００の画像情報が、ＣＣＤセンサ５０２によりＲ（Ｒｅｄ），Ｇ（Ｇｒｅｅｎ），Ｂ（Ｂｌｕｅ）のアナログ電気信号に光電変換される。変換された画像信号は、アナログ信号処理部５０３に入力され、Ｒ，Ｇ，Ｂ，の各色毎にサンプル＆ホールド、ダークレベルの補正等が行われた後にアナログ・デジタル（Ａ／Ｄ）変換される。そして、デジタル変換されたフルカラー画像信号は、５０４の画像処理部に入力される。
【００２７】
画像処理部５０４では、シェーディング補正、色補正、Υ補正等の画像読取系で必要な補正処理や、スムージング処理、エッジ強調、その他の処理、加工等が行われ、５０５のプリンタ部に出力される。
【００２８】
プリンタ部５０５は、レーザ等からなる露光制御部（図示せず）、画像形成部（図示せず）、転写紙の搬送制御部（図示せず）等により構成され、入力された画像信号により転写紙上に画像を記録する。
【００２９】
５１０はＣＰＵ回路部であり、ＣＰＵ５０６，ＲＯＭ５０７，ＲＡＭ５０８等により構成され、画像読取部５０９、画像処理部５０４、プリンタ部５０５等を制御し、本装置のシーケンスを統括的に制御する。
【００３０】
●画像処理部
次に、上述の画像処理部５０４について詳細に説明する。図６は、実施形態における画像処理部５０４の構成を示すブロック図である。同図において、６０１はシェーディング補正部、６０２は階調補正部、６０３はカラー／モノクロ変換部、６０４は階調変換処理部である。
【００３１】
上記の構成において、まずアナログ信号処理部５０３より出力されるデジタル画像信号は、シェーディング補正部６０１に入力される。シェーディング補正部６０１では、原稿を読み取るセンサのばらつきや原稿照明用ランプの配光特性の補正を行っている。次に、補正演算された画像信号は、輝度信号から濃度データに変換するために階調補正部６０２に入力され、濃度画像データが作成される。濃度データに変換された画像信号は、カラー／モノクロ変換部６０３に入力され、モノクロデータとして出力される。そして、カラー／モノクロ変換部６０３から出力されたデータは、階調変換処理部６０４に入力され、擬似中間調表現として誤差拡散処理（ＥＤ処理）若しくは平均濃度保存処理（ＭＤ処理）が行われる。
【００３２】
次に、本発明に係る階調変換処理部６０４について詳細に説明する。
【００３３】
●階調変換処理部
図７は、実施形態における階調変換処理部６０４の詳細な構成を示すブロック図である。尚、実施形態においては、テクスチャ制御を可能とした２値のＭＤ法を例に挙げて説明する。
【００３４】
カラー／モノクロ変換部６０３からの画像信号Ｄに後述する乱数が加算され、更に後述する定数“１７”による除算処理が行われた信号ＤＲ’と、２値化処理で発生した誤差データＥとが誤差補正部７０２に入力される。そして、後述する誤差補正を行い、画像信号ＤＥとして２値化部７０１に出力する。
【００３５】
２値化部７０１は、誤差補正された画像信号ＤＥと、後述する２値化スライス値Ｓと、後述する平均濃度値ｍとを入力し、画像信号ＤＥと２値化スライス値Ｓとを比較することによって２値出力Ｎを求める。また、画像信号ＤＥと平均濃度値ｍとを減算処理することによって２値化誤差データＥを算出する。
【００３６】
２値化結果遅延部７０３は、２値化された２値出力Ｎを入力し、所定のライン数の遅延を行い、遅延されたデータを複数ライン２値化結果Ｎｍｎ及びＢ＊ｉｊとして平均濃度算出部７０４、及びしきい値算出部７０５に送出する。
【００３７】
平均濃度算出部７０４は、遅延された複数ライン２値化結果Ｎｍｎを入力し、予め設定してある係数と積和演算を行って平均濃度値ｍを算出し、加算部７０６及び２値化部７０１へ平均濃度値ｍを出力する。
【００３８】
しきい値算出部７０５は、上述の２値化結果遅延部７０３の複数ライン２値化結果Ｂ＊ｉｊと、入力多値データＤと、ヒステリシス制御量算出部７０８の出力Ｔとを入力し、過去の２値化状況（パターン）であるＢ＊ｉｊ信号に応じて任意の領域におけるしきい値制御量を算出して、それを２値化スライス値Ｓ’として加算部７０６へ送出する。
【００３９】
加算部７０６は、平均濃度算出部７０４の平均濃度値ｍと、しきい値算出部７０５の２値化スライス値Ｓ’との信号を入力し、加算処理を行って、その結果を２値化スライス値として２値化部７０１へ出力する。
【００４０】
乱数発生部７１０は、後述する手法により「−１７〜１７」のｍ系列の乱数Ｒを発生させ、セレクタ７１２と符号反転及びデータ保持部７１１へ出力する。
【００４１】
符号反転及びデータ保持部７１１は、乱数発生部７１０から入力した乱数Ｒの符号反転を行い、後述する一定画素間だけデータを保持した後、セレクタ７１２に保持乱数を出力する。
【００４２】
セレクタ７１２は、後述するタイミングの画素位置信号に基づき、乱数発生部７１０から入力した乱数Ｒと符号反転及びデータ保持部７１１からの保持乱数とを切り替えて出力する。
【００４３】
加算量制御部７１３は、画像信号Ｄの値に応じて、後述する手法を用いて乱数出力値の制御を行う。
【００４４】
加算部７０７は、入力された画像信号Ｄと加算量制御部７１３との加算処理を行う。ヒステリシス制御量算出部７０８は、加算部７０７からの信号によって後述する手法でヒステリシスの制御量を算出し、しきい値算出部７０５へ出力する。除算部７０９は、入力された画像信号ＤＲを定数１７で除算し、その商のみを出力する。この時、余りはすべて切り捨てている。
【００４５】
以上の構成により、階調変換処理部６０４で２値化処理が行われる。
【００４６】
次に、階調変換処理部６０４の各処理部について詳細に説明する。まず、乱数発生部７１０は、前述した図１と同様な構成で乱数が生成される。
【００４７】
まず、初期化で、ｐ［ii］：（０≦ii≦25）のレジスタに“０”を書き込み、ｐ［12］のレジスタのみに“１”を設定する。そして、乱数値を出力する前に、画素毎にｐ［０］＝（ｐ［25］＾ｐ［24］＾ｐ［23］＾ｐ［22］＆１）の演算を行った後、以下の演算により、−１７〜１７の乱数値を生成する。
【００４８】
乱数＝（１−２＊ｐ［22］）＊（（（ｐ［15］＊64＋ｐ［16］＊32＋ｐ［17］＊16＋ｐ［18］＊８＋ｐ［19］＊４＋ｐ［20］＊２＋ｐ［21］）＊17／128）
実施形態では、−１７〜１７の乱数を用いているが、乱数発生部を以下の演算により、−１５〜１５までの乱数値を生成するように変更してもよい。
【００４９】
乱数＝（１−２＊ｐ［２］）＊（ｐ［18］＊８＋ｐ［19］＊４＋ｐ［20］＊２＋ｐ［21］）
ここで、重要なことは、生成した乱数の最大値（実施形態では１７）が、後述する除算部７０９で除算する数（実施形態では１７）の１／２以上（少数部切り捨て）にする必要があることである。
【００５０】
尚、実施形態では、除算部７０６で除算する数が１７であるため、１７／２＝８（少数部切り捨て）となり、乱数発生部７１０の最大乱数生成値は８以上の値に設定する必要があることになる（実施形態では８以上の１７に設定している）。もし、除算部７０６で除算する数が７であるならば、７／２＝３（少数部切り捨て）となり、乱数発生手段３１０の最大乱数生成値は、３以上の値にする必要があることは言うまでもない。
【００５１】
このように、乱数生成を全ての画素に対して行う。
【００５２】
次に、乱数反転及びデータ保持部７１１では、“ｐ×Ｘ”（ｐ≧２の偶数、Ｘ：主走査方向のアドレス値）の画素位置で生成した乱数発生部７１０の乱数値を、符号のみ反転して、“ｐ／２”画素の間保持した後、出力構成となっている。例えば、ｐの値が“２”の場合、“ｐ×Ｘ”の画素位置、つまり、画素位置が“０，２，４，６，８，１０，１２，１４，…”で発生した乱数値を一時的に保持し、画素位置が“１，３，５，７，９，１１，１３，１５，…”で保持していた乱数値の符号を反転して出力することになる。無論、全ての画素の乱数値を保持し続ける必要はなく、一画素ずつリフレッシュしていく構成で十分である。
【００５３】
一方、セレクタ７１２は、画素毎に生成される乱数発生部７１０の乱数値と、符号反転及びデータ保持部７１１とからの乱数値を、画素位置信号によって切り替えて出力する構成となっている。
【００５４】
この画素位置信号とは、“ｐ×Ｘ＋ｐ／２”（ｐ≧２の偶数、Ｘ：主走査方向のアドレス値）の画素位置のときのみ、符号反転及びデータ保持部７１１からの乱数値をセレクトし、それ以外のときは、すべて、乱数発生部７１０からの乱数値をセレクトするものである。
【００５５】
加算量制御部７１３は、上述の乱数発生部７１０における量大乱数値が、後述する除算部７０９で割る数（実施形態では１７）の１／２（少数部切り捨てで８）より大きい場合に、その大きい乱数に対してのみ、入力多値信号Ｄに応じた出力制御を行う構成が重要なポイントとなっている。
【００５６】
図８は、加算量制御部７１３の加算量制御をプログラム言語Ｃで示したものである。ここで、重要なことは、セレクタ７１２の出力ＲＤを定数ＳＬで除算する定数ＳＬの設定法である。
【００５７】
定数ＳＬは、ＲＤ／ＳＬの結果が、除算部７０９で割る数の１／２になるように決定してある。つまり、実施形態では、除算部７０９で割る数が１７であるため、１７／２＝８（少数部切り捨て）となり、ＲＤ／ＳＬ＝８、１７／ＳＬ＝８（少数部切り捨て）からＳＬ値を“２”に設定する必要がある。
【００５８】
入力多値信号ＤがＮ１（例えば１６）以下の場合には、“Ｐ１＝ＲＤ／ＳＬ”の演算により、必要最小限の乱数が加算されることになる。ここでいう必要最小限の乱数とは、除算部７０９において“１７”で除算するため、乱数の振れ幅を“−８〜８”に設定したということである。つまり、乱数の振れ幅をα（ここでは、１６）とすると、除算部７０９で割る数は、（α＋１）（ここでは、１７）となる関係になる。
【００５９】
また、入力多値信号ＤがＮ１より大きくＮ２（例えば３２）以下の場合には、“Ｐ１＝（ＲＤ−ＲＤ／ＳＬ）＊（Ｄ−Ｎ１）／（Ｎ２−Ｎ１）＋ＲＤ／ＳＬ”の演算により、振幅制御された乱数が加算されることになる。ここでのポイントは、必要最小限の乱数以上の部分に対してのみ、振幅制御されると言うことである。その部分が、上式の中の“（ＲＤ−ＲＤ／ＳＬ）＊（Ｄ−Ｎ１）／（Ｎ２−Ｎ１）”である。
【００６０】
同様に、入力多値信号ＤがＮ３（例えば２０１）以上でＮ４（例えば２３３）より小さい場合には、“Ｐ１＝（ＲＤ−ＲＤ／ＳＬ）＊（Ｎ４−Ｄ）／（Ｎ４−Ｎ３）＋ＲＤ／ＳＬ”の演算により、上述した処理と同様に振幅制御された乱数が加算されることになる。このとき、必要以上の乱数で振幅制御されている部分は同様に“（ＲＤ−ＲＤ／ＳＬ）＊（Ｎ４−Ｄ）／（Ｎ４−Ｎ３）”である。
【００６１】
また、入力多値信号ＤがＮ４以上の場合には、“Ｐ１＝ＲＤ／ＳＬ”の演算により、必要最小限の乱数のみが加算される。更に、入力多値信号Ｄが上記の範囲外の場合は、入力された乱数ＲＤすべてが加算量制御部７１３から乱数Ｐ１として出力される構成となっている。
【００６２】
加算部７０７は、上述した乱数Ｐ１と入力多値信号Ｄと定数８とを加算する処理を行う。定数８を加算するということが、ここでも重要なポイントとなっている。これは、後述する除算部７０９で割る定数が“１７”であるため、除算した余りが最大１６になることから、加算する乱数の振幅を１６以上の偶数にする必要があり、１６／２の演算から定数８が求められている。これが、バイアス成分として加算されている。
【００６３】
無論、もし、除算部７０９で割る数が“５”の場合には、加算部７０７で加算する定数を“２”とすることになる。図示はしていないが、加算結果が“０”，“２５５”の範囲に入るようにリミッタがかけられている。そして、この加算部７０７からの信号は、除算部７０９とヒステリシス制御量算出部７０８とに入力されている。
【００６４】
除算部７０９は、既に上述したように、定数１７で除算する演算を行っている。このとき、出力する信号は除算を行った商のみであり、余りはすべて切り捨てていることを特徴としている。つまり、実施形態では、従来例で用いられていた“除算した余り”と“乱数”とを比較するコンパレータを必要とせず、除算処理の商のみで８ｂｉｔ信号化する処理が可能となっている。無論、４ｂｉｔ化された画質は、従来例以上であることは言うまでもない。この除算部７０９からの出力信号ＤＲ’は、後述する誤差補正部７０２に入力され、誤差補正処理が行われる。
【００６５】
次に、テクスチャ制御を行う２値化手法について説明する。上述したように、誤差補正部７０２は、画像信号ＤＲと２値化誤差データＥとを入力し、画像信号ＤＲ’に誤差補正を行った画像信号ＤＥを算出し、２値化部７０１へと出力するもので、図９に示すように構成されている。
【００６６】
入力された２値化誤差データＥは、除算回路９０１によって１／２にされる。その結果は２系統に分岐され、その一方は減算回路９０２に入力され、もう一方はラインバッファ９０３に入力される。減算回路９０２では、２値化誤差データＥとＥ／２との差ＥＢ（＝Ｅ−Ｅ／２）を算出し、加算回路９０４にその結果を入力する。この時、図示していないが、リミッタ処理により、２値化誤差データＥの取り得る値を、“−６〜＋６”にしてある。
【００６７】
加算回路９０４では、複数ビット（実施形態の場合は３ビット）１ライン分のラインバッファ９０３によって１ライン分遅延されたＥＡと減算回路からのＥＢとの和を算出し、加算回路９０５に出力する。加算回路９０５では、加算結果のＥＡ＋ＥＢと、画像信号ＤＲ’との和を算出し、画像信号ＤＥとして出力する。つまり、誤差補正部７０２では、図１０に示すように、注目画素「＊」に対して１ライン上の画素Ａを２値化したときの２値化誤差ＥＡと、１画素前の画素Ｂを２値化したときの２値化誤差ＥＢの値を注目画素の値に加算する処理を行う。
【００６８】
次に、２値化部７０１は、前述した画像信号ＤＥと、後述する２値化スライス値Ｓと、後述する平均濃度算出値ｍとを入力し、これらを比較することにより、２値出力Ｎ及び２値化誤差データＥを出力するもので、図１１に示すように構成されている。
【００６９】
入力された画像信号ＤＥは、２系統に分岐され、その一方は比較回路１１０１に入力され、もう一方は減算回路１１０２に入力される。比較回路１１０１では、画像信号ＤＥと２値化スライス値Ｓとの値を比較し、以下のように２値出力Ｎを出力する。
【００７０】
ＤＥ＞Ｓ  の時は、Ｎ＝１
ＤＥ≦Ｓ  の時は、Ｎ＝０
また、減算回路１１０２では、平均濃度算出値ｍから画像信号ＤＥの値を差し引き、２値化誤差データＥとして出力する。
【００７１】
Ｅ＝ｍ−ＤＥ
この時、前述したように、図示していないが、Ｅの値が“−６〜＋６”の範囲に入るようにリミッタ処理が行われている。
【００７２】
次に、２値化結果遅延部７０３は、２値化部７０１からの２値出力Ｎを入力し、所定のライン数の遅延を行い、複数ライン２値化結果Ｎｍｎ，Ｂ＊ｉｊとして平均濃度算出部７０４及びしきい値算出部７０５にデータを送るもので、図１２に示すように構成されている。
【００７３】
まず、入力された２値出力Ｎは１ビット１ライン分のラインバッファ１２０１からラインバッファ１２０２へと送られていき、データがライン毎に遅延されていく。また同時に、１画素分の遅延回路からなる遅延１２０３から遅延１２０８によって次々と１画素分の遅延がなされる。そして、遅延１２０６の出力、遅延１２０７の出力をそれぞれＮ１４，Ｎ１５として出力する。
【００７４】
ラインバッファ１２０１によって１ライン分遅延がなされた２値化データは、遅延１２０９から遅延１２１４によって遅延され、遅延１２０９から遅延１２１３の出力がＮ２１からＮ２５として出力される。また、ラインバッファ１２０２によって更に１ライン分遅延がなされた２値化データは、遅延１２１５から遅延１２２０によって遅延され、遅延１２１５から遅延１２１９の出力がＮ３１からＮ３５として出力される。
【００７５】
同時に、遅延１２０６から遅延１２０８の各出力をそれぞれＢ１０，Ｂ２０，Ｂ３０として出力する。また、ラインバッファ１２０１によって１ライン分遅延がなされた２値化データは、遅延された後、それぞれＢ３２からＢ０２、Ｂｉ１２からＢｉ３２として出力する。更に、ラインバッファ１２０２によって更に１ライン分遅延がなされた２値化データは、遅延された後、それぞれＢ３１からＢ０１、Ｂｉ１１からＢｉ３１として出力される。
【００７６】
つまり、平均濃度算出部７０４には、２次元の画像を２値化したデータが複数ライン、複数画素の遅延処理が施され、複数ライン２値化結果Ｎｍｎとして、図１３に示すような状態で平均濃度算出部７０４に入力される。
【００７７】
次に、平均濃度算出部７０４は、複数ライン２値化結果Ｎｍｎを入力し、予め設定してある係数と遅延された２値結果とから積和演算を行い、２値化部７０１と加算部７０６とで使用するデータｍの出力を行うもので、図１４に示すように構成されている。
【００７８】
つまり、乗算回路１４０１では、２値化データＮ１５と係数Ｍ１５とを入力し、両者の乗算結果を出力する。また乗算回路１４０２では、２値化データＮ１４と係数Ｍ１４とを入力し、両者の乗算結果を出力する。以下同様に、上述の演算を乗算回路１４０３から乗算回路１４１２の各々の回路によって行い、それらの乗算結果を加算回路１４１３によって全て足し込む。その結果を平均濃度算出値ｍとして出力する。図１５は、平均濃度算出の処理を行うときの係数の例を示す図である。
【００７９】
次に、ヒステリシス制御量算出部７０８は、入力信号ＤＲに応じて定数ＡＬＦ（＝３２）の値を変化させてＳ’信号として出力する。これは、任意の濃度領域で、ヒステリシス量を調整するためである。つまり、これにより任意の濃度領域でテクスチャ制御が可能となっている。
【００８０】
図１６は、ヒステリシス制御量の算出処理をプログラム言語Ｃで示したものである。入力された信号ＤＲが定数ＬＲ１（＝１６）以下の場合、ｌｌを“０”に設定するような処理を行い、入力された信号ＤＲが定数ＬＲ１より大きく、かつ定数ＬＲ２（＝４８）以下の場合には、ｌｌを次式により求める。
【００８１】
ll=((DR-LR1)*(ALF*256/(LR2-LR1)))/256;
この演算により、入力信号ＤＲの値が定数ＬＲ１から定数ＬＲ２に増加するに従い、ｌｌの値は、徐々に０から定数ＡＬＦ（＝３２）に近づくことになる。
【００８２】
一方、入力信号ＤＲが定数ＬＲ２より大きく、かつ定数ＬＲ３（＝２３３）以下の場合には、ｌｌを一定な定数ＡＬＦとして出力する。また、入力信号ＤＲが定数ＬＲ３より大きく、かつ定数ＬＲ４（＝２５５）以下の場合には、ｌｌを次式により求める。
【００８３】
ll=ALF-((DR-LR3)*(ALF*256/(LR4-LR3)))/256;
これは、入力信号ＤＲの値がＬＲ３から定数ＬＲ４に増加するに従い、出力ｌｌが、徐々に定数ＡＬＦから０に近づくことを示している。また、入力信号ＤＲがＬＲ４より大きい場合には、ｌｌを０に設定するような処理が行われる。
【００８４】
以上の処理後、ｌｌから定数ＡＬＦｍ（＝１６）を減算したものが、出力信号Ｔとして出力される。この減算を行う目的は、ヒステリシス制御量算出部７０８の信号Ｔを負の値から正の値まで変化させるためである。これにより、ラチチュードが広い範囲で任意の濃度領域におけるテクスチャ制御が可能となる。
【００８５】
次に、しきい値算出部７０５について説明する。図１７は、しきい値算出処理をプログラム言語Ｃで示したものである。
【００８６】
まず、しきい値算出部７０５は、入力されたヒステリシス制御量算出部７０８の信号Ｔの値を、それぞれ定数ＬＴ１（＝２），ＬＴ２（＝４），ＬＴ３（＝８），ＬＴ４（＝１６）で割って、内部で用いる変数Ａ（＝Ｔ／ＬＴ１），Ｂ（＝Ｔ／ＬＴ２），（Ｃ（＝Ｔ／ＬＴ３），Ｄ（＝Ｔ／ＬＴ４）を求める。
【００８７】
次に、後述する手法で、２値化結果遅延部７０３からの出力Ｂ’＊ｉｊの２値化結果配置状態（パターン）に応じて２値化スライス値Ｓ’の値を変数Ａ，Ｂ，Ｃ，Ｄと定数で制御する。図１８は、２値化結果配置状態（パターン）を示す図である。この例では、高速処理のために注目画素の１つ前の画素を参照していない。無論、十分高速なロジックが組める場合は、注目画素の１つ前の画素を参照しても問題無いことは言うまでもない。
【００８８】
次に、実際に２値化結果の配置（パターン）に応じて、２値化スライス値Ｓを制御する処理について説明する。
【００８９】
注目画素の周りの２値化状況が以下の場合には、２値化スライス値Ｓを強制的にｍａｘの定数１５にして出力する。これは、強制的にドットを打ちにくくするためである。
【００９０】
B32==0&&B22==1&&B12==0&&B21==0&&B11==1&&B01==0 or
Bi12=0&&Bi22==1&&Bi32==0&&B01==0&&Bi11==1&&Bi21==0
また、注目画素の周りの２値化状況が以下で、かつ入力値データＤが、３１（０〜２５５中の３１）未満の場合にも、２値化スライス値Ｓを強制的にｍａｘの定数１５にして出力する。これも、上記の条件のときに、強制的にドットを打ちにくくするためである。
【００９１】
B12==0&&B02==0&&Bi12==0&&Bi22==0&&Bi32==0&&
B11==0&&B01==0&&Bi11==1&&Bi21==0&&Bi31==0&&B20==0
一方、上記の条件で、入力多値データＤが３１（０〜２５５中の３１）以上の場合には、２値化スライス値Ｓを平均濃度算出値ｍに設定して出力を行う。これは、過去の２値化結果が特定の配列（パターン）になった場合には、テクスチャ制御を行わないようにするためである。無論、ここで定数３１は、決まった値ではなく、パラメータであり、４８や６４などの別な値にも設定可能である。
【００９２】
このとき、３１の値を大きくすると、積極的にテクスチャ制御がかかりやすくなり、逆に、小さくするとテクスチャ制御がかかりにくくなることは言うまでもない。
【００９３】
注目画素の周りの２値化状況が、以下の場合には、２値化スライス値Ｓを平均濃度算出値ｍから、変数Ａを減算した値（Ｓ＝ｍ−Ａ）に設定して出力する。
【００９４】
B02==0&&Bi12==0&&B11==0&&B01==1&&Bi11==1&&Bi21==0&&B20==0
これは上記の条件のときに、強制的にドットを打ち易くするためである。このときも、注目画素直前の２値化結果は参照しないで処理をおこなっている。
【００９５】
同様に、各２値化結果のパターンに応じて、注目画素直前の結果を参照せずに２値化スライス値Ｓの値を内部変数Ａ，Ｂ，Ｃ，Ｄと定数とを用いて２値化スライス値Ｓ’を制御していく。その結果、ヒステリシス制御量算出値Ｔが正の場合には、ドットが打たれやすい方に制御され、ヒステリシス制御量算出値Ｔが負の場合には、ドットが打たれにくい方に制御される。
【００９６】
以上のような処理を各画素に関して順次行っていくと、ヒステリシス制御量算出値Ｔの値に応じて任意の濃度領域で、かつ、２値化結果遅延部の出力値Ｂ’＊ｉｊの値に応じて任意の形のテクスチャに制御が可能となる。
【００９７】
実施形態では、２×２の画素単位のテクスチャになるような制御を行っている。これにより、プリンタの特性で一画素が安定しない領域で任意の数のドットを集めて安定化させた画像形成が可能となる。
【００９８】
このようにして求められた２値化スライス値Ｓ’は、平均濃度算出部７０４の出力ｍと共に、加算部７０６に入力されて加算処理が行われる。このとき、Ｓ’の信号が１５のときには、２値化スライス値Ｓを１５として出力し、それ以外のときには、Ｓ＝Ｓ’＋ｍの演算を行って出力している。図１９は、上述の演算をプログラム言語Ｃで示したものである。
【００９９】
上述の加算処理により、２値化スライス値Ｓが求められた後、上述した２値化部７０１により２値化処理が行われ、その２値信号が階調変換処理部６０４から出力され、プリンタ部５０５でプリントアウトされるように構成されている。
【０１００】
［変形例］
次に、前述した階調変換処理部の変形例について説明する。変形例は、図７に示した乱数発生部周辺の構成を簡略化したものである。
【０１０１】
図２０は、変形例における階調変換処理部の詳細な構成を示すブロック図である。図７に示す構成と同様なものには同一符号を付け説明を省略する。
【０１０２】
図２０において、２００１は乱数発生部であり、０から１６までの正の乱数を生成する。具体的な構成は、図２に示した構成と同様である。つまり、初期化でｐ［ii］：（０≦ii≦25）のレジスタに“０”を書き込み、ｐ［12］のレジスタのみに“１”を設定する。そして、乱数値を出力する前に、画素毎に
ｐ［０］＝（ｐ［25］＾ｐ［24］＾ｐ［23］＾ｐ［22］＆１）
の演算を行った後、以下の演算により、０〜１６の乱数値を生成している。
乱数＝（（ｐ［15］＊64＋ｐ［16］＊32＋ｐ［17］＊16＋ｐ［18］＊８＋ｐ［19］＊４＋ｐ［20］＊２＋ｐ［21］＊16）／128）
ここで、１６以上の乱数を生成し、最後に１２８で除算しているのは、乱数の発生率に偏りをなくすためである。
【０１０３】
また、２００２は加算部であり、入力された乱数Ｒと入力多値データとを加算する処理を行う。変形例の特徴は、図７に示した加算部７０７と異なり、除算部７０９で除算した最大余り値１６の１／２をバイアス成分として加算していないことである。これは、加算する乱数が正の値のみをとり、負の値をとらないため、バイアス成分が必要なくなっているからである。
【０１０４】
加算部２００２からの出力値は、図７に示した構成と同様に、除算部７０９で除算処理され、商の値のみが出力される構成となっている。これにより、従来例で行っていた除算した結果の余りと乱数とを比較するコンパレータが省略可能となり、ハードウェア規模の簡略化を実現している。
【０１０５】
以降、前述した実施形態と同様な処理の２値化処理が行われ、その２値信号が階調変換処理部６０４から出力され、プリンタ部５０５でプリントアウトされるように構成されている。
【０１０６】
この変形例におけるポイントは、除算部７０９で除算する数が１７であるため、乱数発生部２００１で生成する最大乱数値を１６以上（除算部７０９で除算する数；１７−１）に設定していることである。無論、入力多値データが“０”，“２５５”以外の時に加算する乱数の量を多くすると、テクスチャの改善効果が大きくなることは言うまでもないが、大きな値に設定すると画質も低下する傾向がある。よって、３１以下に設定することが好ましい。
【０１０７】
また、前述した実施形態では、符号反転及びデータ保持部７１１において±に規則正しく変化する乱数を生成し、入力多値データＤに加算したが、本発明は、これに限定するものではなく、符号反転及びデータ保持部７１１を用いず無作為に±に変化する乱数発生部の乱数を加算しても同様な効果が得られることは言うまでもない。
【０１０８】
これにより、ハードウェアの規模を小さくすることができる。但し、実施形態で示した±に規則正しく変化する乱数の方が、低周波成分が低くなるため、画質の劣化が少ない傾向にある。
【０１０９】
更に、前述した実施形態において、必要最小限の乱数８（絶対値で［除算部７０９の数値；１７／２］、演算結果の少数部は切り捨て）のみを加算するときは、加算量制御部７１３が省略できることも言うまでもない。
【０１１０】
そして、前述した実施形態の除算部７０９で除算する数が偶数（例えば１８）の場合は、入力多値データを１ｂｉｔシフトにより、２倍にして演算する構成とすることができる。
【０１１１】
これは、１８で除算する場合、除算した余りが最大１７となるため、加算する乱数の振幅を１７以上の奇数にする必要があるのだが、この奇数の振幅を均等な±に振り分けることはできないからである（バイアス成分が１７／２＝８．５となり割り切れないため）。言いかえると、加算部７０７でバイアス成分を８．５という数値に設定することができないためである。
【０１１２】
よって、入力多値データを２倍にして処理を行うように構成しても良い。
【０１１３】
入力多値データを２倍し、除算部７０９で除算する数も２倍の３６にし（１８×２）、加算部７０７のバイアス成分を１７（［除算部７０９の数値；３６／２−１］）に設定することにより、加算する乱数の振幅を均等な±１７に分割することが可能となる。これにより、除算部７０９で除算する数が偶数の場合でも、前述した構成で実現できることになる。
【０１１４】
前述した実施形態と変形例では、２値化について説明したが、本発明はこれに限定するものではない。つまり、４値化、８値化などの前処理にも適用ができると共に、前述した平均濃度保存法（ＭＤ法）に限定するものでもなく、一般的な誤差拡散法（ＥＤ法）にも適用できることは言うまでもない。
【０１１５】
また、本発明は、白黒（単色）の処理のみに限らず、カラーの信号に対しても適用できることも言うまでもない。
【０１１６】
以上説明したように、実施形態によれば、テクスチャを改善する乱数加算処理とｔ値化処理の前処理として乱数を用いた８ビット→４ビット変換処理とを一つに纏めることにより、乱数加算量を減らしながらも、従来と同様なテクスチャの改善を図ることができ、かつ、入力データ８ビットを４ビットに変換する前処理が可能となる。
【０１１７】
また、ハードウェア規模を小さくでき、画質も向上させることができる。
【０１１８】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【０１１９】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１２０】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２１】
プログラムコードを供給するための記憶媒体としては、例えばフロッピーディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１２２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２３】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２４】
【発明の効果】
以上説明したように、本発明によれば、ハードウェアの簡略化を図ると共に、多値画像データの階調変換処理を高画質に行うことができる。
【０１２５】
【図面の簡単な説明】
【図１】ｔ値化処理の前処理における従来例の構成を示す図である。
【図２】図１に示す乱数生成部１０１の構成を示すブロック図である。
【図３】乱数発生をプログラム言語Ｃで示したものである。
【図４】乱数発生部１０９の乱数発生をプログラム言語Ｃで示したものである。
【図５】実施形態におけるカラー複写機の概略構成を示すブロック図である。
【図６】図５に示す画像処理部５０４の構成を示すブロック図である。
【図７】図６に示す階調変換処理部６０４の詳細な構成を示すブロック図である。
【図８】加算量制御部７１３の加算量制御をプログラム言語Ｃで示したものである。
【図９】誤差補正部７０２の詳細な構成を示す図である。
【図１０】誤差補正部７０２で２値化誤差を注目画素に加算する処理を示す図である。
【図１１】２値化部７０１の詳細な構成を示す図である。
【図１２】２値化結果遅延部７０３の詳細な構成を示す図である。
【図１３】２値化結果遅延部７０３で用いるデータの構成を示す図である。
【図１４】平均濃度算出部７０４の詳細な構成を示す図である。
【図１５】平均濃度算出部７０４で用いる係数の構成を示す図である。
【図１６】ヒステリシス制御量の算出処理をプログラム言語Ｃで示したものである。
【図１７】しきい値算出部７０５の処理をプログラム言語Ｃで示したものである。
【図１８】２値化結果配置状態（パターン）を示す図である。
【図１９】２値化スライス値Ｓの演算をプログラム言語Ｃで示したものである。
【図２０】変形例における階調変換処理部の詳細な構成を示すブロック図である。
【図１】
0003809274.tif 000002
【図２】
0003809274.tif 000003
【図３】
0003809274.tif 000004
【図４】
0003809274.tif 000005
【図５】
0003809274.tif 000006
【図６】
0003809274.tif 000007
【図７】
0003809274.tif 000008
【図８】
0003809274.tif 000009
【図９】
0003809274.tif 000010
【図１０】
0003809274.tif 000011
【図１１】
0003809274.tif 000012
【図１２】
0003809274.tif 000013
【図１３】
0003809274.tif 000014
【図１４】
0003809274.tif 000015
【図１５】
0003809274.tif 000016
【図１６】
0003809274.tif 000017
【図１７】
0003809274.tif 000018
【図１８】
0003809274.tif 000019
【図１９】
0003809274.tif 000020
【図２０】
0003809274.tif 000021