(57)【要約】【課題】出力画像のぼやけをなくし、入力に忠実な出力を得る画像処理装置、画像処理方法、及び画像処理プログラムを提供すること。【解決手段】入力画像を複数画素から構成される画素群に分割し、当該画素群単位に多値ディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理装置において、前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定手段と、前記画素群の重心位置に前記多値ディザマトリックスの中心を配置させる配置手段と、前記配置された多値ディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力手段と、を備えることを特徴としている。【選択図】  図１１
2006352837.tif 000002
【特許請求の範囲】
【請求項１】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理装置において、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定手段と、
前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置手段と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、
前記出力手段は、前記画素群内の前記入力階調値の合計に基づく理想階調値が得られたとき、前記画素群内における前記出力階調値を得る処理を終了させることを特徴とする画像処理装置。
【請求項３】
請求項１記載の画像処理装置において、
前記出力手段は、前記重心位置に最も近い画素から順番に出力階調値を得ることを特徴とする画像処理装置。
【請求項４】
請求項１記載の画像処理装置において、
前記ディザマトリックスには、前記入力階調値と前記出力階調値との対応関係を示すテーブルのテーブル番号が格納され、
前記出力手段は、前記画素群に含まれる各画素位置に対応する前記ディザマトリックスのテーブル番号を参照することで前記入力階調値に対応する出力階調値を得ることを特徴とする画像処理装置。
【請求項５】
請求項１記載の画像処理装置において、
前記ディザマトリックスには閾値が格納され、
前記出力手段は、前記閾値と前記入力階調値とを比較することで前記出力階調値を得ることを特徴とする画像処理装置。
【請求項６】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理装置において、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定手段と、
前記画素群の重心位置と、前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置手段と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力手段と、
を備えることを特徴とする画像処理装置。
【請求項７】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理方法において、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定工程と、
前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置工程と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力工程と、
を備えることを特徴とする画像処理方法。
【請求項８】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理方法において、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定工程と、
前記画素群の重心位置と、前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置工程と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力工程と、
を備えることを特徴とする画像処理方法。
【請求項９】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理をコンピュータに実行させる画像処理プログラムにおいて、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定処理と、
前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置処理と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力処理と、
をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項１０】
入力画像を複数画素から構成される画素群に分割し、当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理をコンピュータに実行させる画像処理プログラムにおいて、
前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定処理と、
前記画素群の重心位置と、前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置処理と、
前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力処理と、
をコンピュータに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，画像処理装置，画像処理方法，及び画像処理プログラムに関する。詳しくは，出力画像のぼやけをなくし，入力に忠実な出力画像を得る画像処理装置等に関する。
【背景技術】
【０００２】
従来から，プリンタなどの画像処理装置は，画素ごとに多値の階調値を有する入力画像データに対して，ハーフトーン処理により，それよりも低い階調数（例えば２値）の出力画像データに変換して，印刷用紙に印刷が行われている。
【０００３】
ハーフトーン処理としては，ドット集中型ディザ法（多値ディザ法）による処理が知られている。多値ディザ法は，所定の大きさのマトリックス内に中央部からドットが成長するように閾値が配分され，各画素の入力階調値との比較により処理を行う。
【０００４】
しかし，入力画像に閾値マトリックスを適用した場合に，閾値の大きい領域では画素の入力階調値は消失し，逆に閾値の小さい領域では必要以上に大きな出力値に変換される場合がある。例えば閾値マトリックス内に細線があるとその細線が切れる画像が出力されてしまう。従って，多値ディザ法による処理では出力画像の画質面で問題があった。
【０００５】
そこで，従来は，ドットの成長特性の異なる複数の閾値マトリックスを用意し，網点生成領域ごとに所望のドットサイズが得られるマトリックスを判定して，使用する閾値マトリックスを切り替える方法がある（例えば，以下の特許文献１）。
【０００６】
しかし，かかる方法では複数の閾値マトリックスを記録するためのメモリが必要である。また，マトリックス切り替えの際に入力画像の全画素に対して複数回ディザ処理を行うため計算量が多くなる。更に，かかる方法を含め多値ディザ法による処理では，ドット位置が所定間隔で固定されているため，入力された階調値分布を再現するのに最適な位置にドットを発生させることができず，入力に忠実でない低解像度の画像が出力されることもある。
【特許文献１】特開平４−１９５１３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで，これらの問題点を解決するため，複数画素から構成されるセル内の各画素の階調値から重心位置を求め，その重心位置に各画素の階調値の和に対応するドットを生成させるようにしたものを，本出願人は提案した（例えば特願２００４−１３７３２６号（未公開），以下「ＡＡＭ（Advanced ＡＭスクリーン）法」と称す）。
【０００８】
しかしながら，ＡＡＭ法では，セル内の重心位置からドットが成長するため，例えばセル内に細線があると円形ドットとしてまとめられしまい，出力画像がぼやけてしまう問題があった。
【０００９】
そこで，本発明は上記問題点に鑑みてなされたもので，その目的は，出力画像のぼやけをなくし，入力画像に忠実な出力画像を得る画像処理装置，画像処理方法，及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために，本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理装置において，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定手段と，前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置手段と，  前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力手段と，を備えることを特徴としている。これにより，例えば，画素群の重心位置にディザマトリックスの中心が配置されるため，入力画像を忠実に再現するのに最も適した位置にドットが生成される。
【００１１】
また，本発明は上記画像処理装置において，前記出力手段は，前記画素群内の前記入力階調値の合計に基づく理想階調値が得られたとき，前記画素群内における前記出力階調値を得る処理を終了させることを特徴としている。これにより，例えば，出力すべき理想的なドットサイズの出力画像が得られた時点で出力処理が終了するため，ドットの太りすぎを抑え入出力画像間での濃度が保存される。
【００１２】
更に，本発明は上記画像処理装置において，前記出力手段は，前記重心位置に最も近い画素から順番に出力階調値を得ることを特徴としている。これにより，例えば，確実に重心位置に最も近い画素にドットが生成され，入力画像に忠実な出力画像を得る。
【００１３】
更に，本発明は上記画像処理装置において，前記ディザマトリックスには，前記入力階調値と前記出力階調値との対応関係を示すテーブルのテーブル番号が格納され，前記出力手段は，前記画素群に含まれる各画素位置に対応する前記ディザマトリックスのテーブル番号を参照することで前記入力階調値に対応する出力階調値を得ることを特徴としている。これにより，例えば，入力階調値が「０」の画素にはドットの生成を示す出力階調値が出力されないため，円形ドットの出力画像が生成されず出力画像のぼやけを防止することができる。
【００１４】
更に，本発明は上記画像処理装置において，前記ディザマトリックスには閾値が格納され，前記出力手段は，前記閾値と前記入力階調値とを比較することで前記出力階調値を得ることを特徴としている。これにより，例えば，出力画像のぼやけを防止することができる。
【００１５】
また，上記目的を達成するために本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理装置において，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定手段と，前記画素群の重心位置と，前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置手段と，  前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力手段と，を備えることを特徴としている。
【００１６】
更に，上記目的を達成するために本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理方法において，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定工程と，前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置工程と，前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力工程と，を備えることを特徴としている。
【００１７】
更に，上記目的を達成するための本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理方法において，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定工程と，前記画素群の重心位置と，前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置工程と，  前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力工程と，を備えることを特徴としている。
【００１８】
更に，上記目的を達成するために本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理をコンピュータに実行させる画像処理プログラムにおいて，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定処理と，前記画素群の重心位置に前記ディザマトリックスの中心を配置させる配置処理と，前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力処理と，をコンピュータに実行させる画像処理プログラムであることを特徴としている。
【００１９】
更に，上記目的を達成するために本発明は，入力画像を複数画素から構成される画素群に分割し，当該画素群単位にディザマトリックスを適用することで入力階調値に対して２種類以上の階調を有する出力階調値に変換する画像処理をコンピュータに実行させる画像処理プログラムにおいて，前記画素群に含まれる前記各画素の前記入力階調値から前記画素群の重心位置を決定する重心位置決定処理と，前記画素群の重心位置と，前記ディザマトリックスで最もドットが生成され易い画素位置とが略一致するように前記ディザマトリックスを配置する配置処理と，前記配置されたディザマトリックスと前記画素群に含まれる前記各画素の前記入力階調値とを比較して前記出力階調値を得る出力処理と，をコンピュータに実行させる画像処理プログラムであることを特徴としている。
【発明を実施するための最良の形態】
【００２０】
以下，図面を参照して本発明を実施するための最良の形態を説明する。図１は，本発明が適用されるシステム全体の構成を示す図である。本システムは，全体としてホストコンピュータ１０と画像処理装置２０とから構成される。
【００２１】
ホストコンピュータ１０は，アプリケーション部１１とラスタライズ部１２とから構成される。
【００２２】
アプリケーション部１１は，ワードプロセッサや図形ツールなどのアプリケーションプログラムにより文字データや図形データ等の印刷対象のデータを生成する。ラスタライズ部１２は，印刷対象のデータを画素ごと（又はドットごと）に８ビットの入力画像データに変換して画像処理装置２０に出力する。従って，入力画像データは各画素「０」から「２５５」までの階調値を有する。尚，入力画像データはモノクロデータとして以下説明する。
【００２３】
画像処理装置２０は，画像処理部２１と印刷エンジン２２とから構成される。また，画像処理部２１はハーフトーン処理部２１１とパルス幅変調部２１２とから構成される。
【００２４】
ハーフトーン処理部２１１は，ホストコンピュータ１０から入力画像データが入力され，２種類以上の量子化データを有する出力画像データに変換する。パルス幅変調部２１２は，この量子化データに対してドットごとにレーザ駆動パルス有り又は無しを示す駆動データを生成し，印刷エンジン２２に出力する。
【００２５】
印刷エンジン２２は，レーザドライバ２２１とレーザダイオード（ＬＤ）２２２とから構成される。レーザドライバ２２１は，駆動データに対して駆動パルス有り又は無し等を示す制御データを生成してＬＤ２２２に出力する。ＬＤ２２２は，制御データに基づいて駆動され，更に，感光体ドラム等の駆動により実際に印刷用紙にホストコンピュータ１０で生成した印刷データが印刷される。
【００２６】
本発明は，図１に示すようにハードウェアとして構成された画像処理装置２０に適用しても良いし，図２に示す画像処理装置２０においてソフトウェアとして適用しても良い。ここで，ＣＰＵ２４，ＲＯＭ２５，及びＲＡＭ２６が図１におけるハーフトーン処理部２１１やパルス幅変調部２１２に対応する。
【００２７】
次に，本発明に係るハーフトーン処理の詳細について説明するが，その前に簡単に本発明の概要について説明する。
【００２８】
図３に示すように，繰り返しマトリックスＭを入力画像１００に順次適用する。この繰り返しマトリックスＭには複数の多値ディザマトリックス２００（以下，「ディザマトリックス」と称す。図３の例では８個のディザマトリックス２００）があり，各ディザマトリックス２００を入力画像１００のうち複数画素から構成される画素群（以下，「セル」と称す）に適用する。ディザマトリックス２００にはテーブル番号（インデックス）が格納され，各画素位置において参照されるテーブル番号が決定される。
【００２９】
そして，図４に示すように，決定したテーブル番号からその番号のテーブルを参照することで，当該画素位置における入力階調値に対する出力階調値（量子化データ）を得る。
【００３０】
なお，ディザマトリックス２００は，ドット集中型のマトリックスとなっている。ディザマトリックス２００の中心ほど，番号の小さなインデックスが格納され，テーブル番号が小さい程，小さな階調値でもドットが生成され易くなるようにテーブルが構成される。
【００３１】
本発明では，このディザマトリックス２００を適用する際に，そのまま入力画像１００に適用するのではなく，セルに含まれる画素の入力階調値から重心位置を決定し，ディザマトリックス２００の中で最もドットが生成され易い画素位置と，セルの重心位置とが一致するようにディザマトリックス２００をシフトさせる（図５参照）。
【００３２】
このようにディザマトリックス２００をセルの重心位置にシフトさせることで，入力画像を忠実に再現するのに最も適した位置にドットを生成させることができる。従って，入力に忠実なドットが生成される。従来のディザ法で問題となっていた解像度の低下を抑え，解像性の高い出力画像を得ることができる。
【００３３】
また，本発明では重心位置にディザマトリックス２００をシフトさせた後，各画素位置でテーブルを参照して出力階調値を得るようにしている。従って，入力階調値「０」の画素位置では出力階調値は「０」となるため，当該画素位置にドットは形成されない。
【００３４】
前述したＡＡＭ法では，重心位置に近い画素から順に出力階調値が割り当てられるため，入力階調値「０」の画素位置に「０」以外の階調値が割り当てることがある（図６（Ａ），（Ｂ）参照）。本発明ではかかる事態が発生しないため，ＡＡＭ法で問題となる円形ドットは生成されず，出力画像にぼやけは生じない。
【００３５】
更に，本発明では，ディザマトリックス２００内での処理を行っているときに，理想的なドットサイズ（又は理想階調値，例えばセルに含まれる画素の入力階調値の合計）が得られるとその時点で処理が終了する。理想階調値が得られた時点で処理が終了するため，必要以上にドットが大きく（太く）なるのを防止できる。即ち，入力画像１００と出力画像との間で出力濃度が略一致し，従来のディザ法では備えていなかった入出力画像間での濃度保存性を満たすことになる。
【００３６】
逆に理想階調値が十分得られないとき，本発明では補足処理を行うことで理想的なドットサイズに近づけるようにしている。理想階調値が十分得られないときとは，例えば，セル内で入力階調値が偏在している場合である（図７（Ａ）参照）。ディザマトリックス２００の中心から離れた画素位置では番号の大きいテーブルが適用されるため，入力階調値よりも少ない出力階調値となり易く(図７（Ｂ）参照)，その結果，セル内における出力階調値の合計が理想階調値より十分低い値となるからである。補足処理の詳細は後述する。
【００３７】
次に，本発明に係る処理の具体例を説明する。図８乃至図９は，全体処理の動作を示すフローチャートである。本処理は，ＣＰＵ２４によって行われるものとして説明する。勿論，ハーフトーン処理部２１１が行うものとしてもよい。
【００３８】
順次説明すると，まず，ＣＰＵ２４はＲＯＭ２５から本処理を実行するためのプログラムを読み出すことで処理を開始する（Ｓ１０）。
【００３９】
次いで，ＣＰＵ２４は入力画像１００を読み込む（Ｓ１１）。例えば，ＣＰＵ２４は入力画像１００をＲＡＭ２６に格納する。
【００４０】
次いで，ＣＰＵ２４は繰り返しマトリックスＭを入力画像１００の左上に設定する（Ｓ１２）。入力画像１００に対して左上から順にラスタ方向に処理を進めるためである。なお，ＣＰＵ２４はディザマトリックス２００の番号を示す「Ｎ」に「１」を格納する。
【００４１】
次いで，ＣＰＵ２４はＮ番目のディザマトリックス２００が適用されるセル内の入力階調値の合計を演算する（Ｓ１３）。重心演算の際に必要だからである。
【００４２】
次いで，ＣＰＵ２４はその合計が「０」より大きいか否か判断する（Ｓ１４）。合計値が「０」とは，セル内の画素の入力階調値がすべて「０」の場合である。従って，この場合（ＮＯの場合），ドット生成等の処理を何ら行うことなくＳ１８（図９）に移行する。かかる領域すべて処理する場合と比較して処理がスキップされるためその分計算量を少なくすることができる。
【００４３】
一方，階調値の合計が「０」より大きいとき（Ｓ１４でＹＥＳ），ＣＰＵ２４はセル内の画素の重心を演算する（Ｓ１５）。ディザマトリックス２００をどの位置にシフトさせるかの判断に必要だからである。重心位置を（Ｘ重心，Ｙ重心）としたとき，演算は以下の式を用いる。
【００４４】
【数１】
2006352837.tif 000003
これらの式は，例えばＲＯＭ２５に格納され，本処理の際にＣＰＵ２４が読み出すことで式が適用される。例えば，図５（Ｂ）の場合，左上の画素を（０，０），右方向をＸ座標，下方向をＹ座標とすると，重心位置は，（Ｘ重心，Ｙ重心）＝（１，０）となる。
【００４５】
次いで，ＣＰＵ２４はドット生成処理を行う（Ｓ１６）。このドット生成処理により，量子化データを得る。上述した重心位置へのシフトや，補足処理等もドット生成処理内で行われる。ドット生成処理の詳細を図１０に示す。
【００４６】
まず，ＣＰＵ２４は，セル内に出力すべき理想階調値を演算する（Ｓ１６１）。理想階調値は，所定の関数によりセル内の画素の入力階調値の合計から求められる。例えば，理想階調値は，セル内の入力階調値の合計値である。
【００４７】
次いで，ＣＰＵ２４は濃度制限付多値ディザ処理を行う（Ｓ１６２）。濃度制限付き多値ディザ処理の詳細を図１１に示す。
【００４８】
まず，ＣＰＵ２４はＳ１５で求めたセルの重心位置にディザマトリックス２００の中心をシフトさせる（Ｓ１６２１）。前述の例では，図５（Ｄ）のようにシフトさせる。
【００４９】
次いで，ＣＰＵ２４は重心位置に最も近いドット未出力画素を探索する（Ｓ１６２２）。図５（Ｄ）の例では，（１，０）の位置を探索する。
【００５０】
次いで，ＣＰＵ２４は探索した画素位置に対応するガンマテーブルを参照して出力階調値を得る（Ｓ１６２３）。例えば，ＣＰＵ２４は図４（Ｂ）に示すようなテーブルを参照する。
【００５１】
その際にＣＰＵ２４は，出力階調値の合計が理想階調値を超えるか否か判断する（Ｓ１６２４）。前述したように，理想的なサイズのドットよりも大きなドットが生成される（理想階調値を超える出力階調値を得る）ことを防止するためである。
【００５２】
従って，その合計値が理想階調値よりも大きいと（ＹＥＳ），理想階調値と等しくなるように出力階調値を調整する（Ｓ１６２６）。その合計値が理想階調値を超えないと（Ｓ１６２４でＮＯ），調整することなく処理はＳ１６２５に移行する。
【００５３】
そして，Ｓ１６２５でＣＰＵ２４は，実際に探索した画素に出力階調値を出力する（Ｓ１６２５）。
【００５４】
次いで，ＣＰＵ２４は理想階調値に達したか否か判断し（Ｓ１６２７），達したときは濃度制限付き多値ディザ処理が終了する（Ｓ１６４へ）。この場合は，理想的なドットサイズが得られたことになる。
【００５５】
一方，理想階調値に達しておらず（Ｓ１６２７でＮＯ），セル内の画素全て処理していないときは（Ｓ１６２８でＮＯ），再びセル内のドット未出力画素を探索し（Ｓ１６２２），上述の処理が繰り返される。
【００５６】
理想階調値に達していなくても，ディザマトリックス２００が適用されるセル内の画素全て処理したとき（Ｓ１６２８でＹＥＳ）も濃度制限付き多値ディザ処理は終了する。この場合，理想階調値に達していないため，十分なサイズのドットが出力されない。後述の補足処理で調整される。
【００５７】
濃度制限付き多値ディザ処理が終了すると，図１０に戻り，この処理で出力した出力階調値の合計と理想階調値とを比較して理想階調値全て出力したか否か判断する（Ｓ１６４）。
【００５８】
理想階調値全て出力したとき（ＹＥＳ）は，セル内で理想的なドットサイズ（例えば，セル内の入力階調値の合計と同じ出力階調値）が出力されたことになり，本発明に係る一連の処理が終了して，ディザマトリックス２００の移動処理（図９のＳ１８以降の処理）に移行する。例えば，図６（Ｄ）のような出力が得られた場合である。
【００５９】
一方，理想階調値全て出力できなかったとき（Ｓ１６４でＮＯ），ＣＰＵ２４は上述した補足処理を行う。例えば，図７（Ｂ）のような出力を得た場合に処理が行われる。
【００６０】
補足処理は以下のようになる。まず，図１０に示すように，ＣＰＵ２４は理想階調値のうち８０％以上出力階調値を出力できたか否か判断する（Ｓ１６５）。出力できないと（ＮＯ），濃度制限付き多値ディザ処理（Ｓ１６２）で得られた出力階調値をリセットし（Ｓ１６８），別途出力階調値を得るために，ＣＡＰＩＸ法を参考にした処理（Ｓ１６９）を行う。
【００６１】
図７（Ｂ）の例では，セル内の出力階調値の合計は「１００」で，理想階調値をセル内の入力階調値の合計「４００」とすると，５０％しか出力階調値を出力できていない。この場合，ＣＡＰＩＸ法を参考にした処理（Ｓ１６９）が行われる。
【００６２】
一方，８０％以上出力できても（Ｓ１６５でＹＥＳ），セル内において理想階調値全て出力できたわけではないため，ＣＰＵ２４はその不足分の階調値を追加する処理（Ｓ１６６）を行う。
【００６３】
なお，Ｓ１６５で「８０％」以上としているがこれは一例であって，それ以外の数字でもよい。
【００６４】
まず，ＣＡＰＩＸ法を参考にした処理（Ｓ１６９）について詳細に説明する。ＣＡＰＩＸ法を参考にした処理とは，ディザマトリックス２００が適用されるセル内の入力階調値の合計を求め，入力階調値の高い画素に優先して高い出力階調値を再配分する処理のことである。画素単位で出力階調値が割り当てられてドットが生成されるため，解像度の高い出力が得られる。
【００６５】
その詳細を図１２に示す。まず，ＣＰＵ２４は，セル内の画素を入力階調値の大きい順にソートする（Ｓ１６９１）。例えば，図７（Ａ）の例では，入力階調値「２００」の２つの画素，次いで，「０」の７つの画素とする。
【００６６】
次いでＣＰＵ２４は，理想階調値を残余階調値に代入する（Ｓ１６９２）。理想階調値を入力階調値の合計値とすると，図７（Ａ）の例では，理想階調値は「４００」となり，この値が残余階調値となる。
【００６７】
次いで，ＣＰＵ２４は，ソートした画素リストの先頭の未処理画素に残余階調値を加算し，その値が画素の出力最大値を超えるか否か判断する（Ｓ１６９３）。８ビット出力の出力最大値は，「２５５」となる。
【００６８】
そして，ＣＰＵ２４は，最大値を超えると（ＹＥＳ），最大値と等しくなるように加算する値を調整し（Ｓ１６９５），その値を先頭の未処理画素に加算する（Ｓ１６９６）。一方最大値を越えないと（Ｓ１６９３でＮＯ），残余階調値を画素に加算する値とし（Ｓ１６９４），その値を先頭の未処理画素に加算する（Ｓ１６９６）。
【００６９】
図７（Ａ）の例では，残余階調値「４００」を入力階調値「２００」のいずれか一方の画素に加算すると最大階調値「２５５」を超えるため（Ｓ１６９３でＹＥＳ），加算値が「２５５」に調整され（Ｓ１６９５），当該画素に「２５５」が加算される（Ｓ１６９６）。
【００７０】
次いで，ＣＰＵ２４は残余階調値から加算した階調値を減算して（Ｓ１６９７），残余階調値が「０」になるまで処理が繰り返される（Ｓ１６９８）。
【００７１】
図７（Ａ）の例では，残余階調値が「１４５」（＝４００−２５５）となり，入力階調値「２００」の一方の未処理画素にこの値を加算して処理が終了する。処理後の出力例を図７（Ｃ）に示す。
【００７２】
なお，このＣＡＰＩＸ法を参考にした処理は，一例であって，例えば，図１３に示す高線数ディザ処理（Ｓ１７０）を行うようにしてもよい。高線数多値ディザ処理では，サンプリングポイントが増加するようにテーブル番号が配置されたディザマトリックス２００を用いる。例えば，図４（Ａ）に示すディザマトリックス２００でテーブル番号「１」のインデックスが番号「８」の位置にもあるようなディザマトリックス２００である。複雑な入力でもドットとして再現され易く，解像度の高い出力を得ることができる。
【００７３】
高線数多値ディザ処理は，セルの重心位置にディザマトリックス２００の中心をシフトする以外は濃度制限付き多値ディザ処理(図１１)と略同じである。
【００７４】
ＣＰＵ２４は，セル中心に最も近いドット未出力画素を探索し（Ｓ１７０１），探索した画素についてテーブルを参照する（Ｓ１７０２）。そして，テーブルから出力階調値を得てその合計が理想階調値を超えると（Ｓ１７０３でＹＥＳ），理想階調値と等しくなるように出力階調値を調整して（Ｓ１７０４），探索画素に出力階調値を出力する（Ｓ１７０５）。
【００７５】
一方，理想階調値を越えないと（Ｓ１７０３でＮＯ），テーブルから得られた出力階調値を探索画素に出力する（Ｓ１７０５）。
【００７６】
そして，出力階調値の合計が理想階調値に達するか（Ｓ１７０７でＹＥＳ），又は達しなくてもセル内の画素全て処理すると（Ｓ１７０７でＮＯ，Ｓ１７０８でＹＥＳ），高線数多値ディザ処理は終了する。
【００７７】
セル内の画素全て処理していないと（Ｓ１７０８でＮＯ），再びドット未出力画素を探索して（Ｓ１７０１），上述の処理を繰り返す。なお，この高線数多値ディザ処理は，ＣＡＰＩＸ法を参考にした処理と比較してソート処理（Ｓ１６９１）を行わない分処理が速い。
【００７８】
ＣＡＰＩＸ法を参考にした処理（Ｓ１６９），高線数多値ディザ処理（Ｓ１７０）は，いずれも理想階調値を８０％以上出力していない場合である。一方，８０％以上出力した場合（図１０のＳ１６５でＹＥＳ）は不足分階調値の重心近傍画素への追加処理を行う（Ｓ１６６）。
【００７９】
追加処理の詳細を図１４に示す。まず，ＣＰＵ２４は不足階調値を演算する（Ｓ１６６１）。理想階調値から実際にこれまでに出力した出力階調値の合計値を減算することで演算する。
【００８０】
次いで，ＣＰＵ２４は重心から最も近いドット未出力画素を探索して（Ｓ１６６２），探索した画素に不足階調値を加算する（Ｓ１６６３）。その際に，加算値が出力最大値（８ビット出力の場合は「２５５」）を超えると（Ｓ１６６４でＹＥＳ），最大値に等しくなるように調整する（Ｓ１６６５）。
【００８１】
加算値が出力最大値を超えないとき（Ｓ１６６４でＮＯ）や，出力値の調整（Ｓ１６６５）後，ＣＰＵ２４は不足階調値から加算値を減算する（Ｓ１６６６）。そして，減算後の不足階調値が「０」になるか（Ｓ１６６７でＹＥＳ），「０」にならなくても（Ｓ１６６７でＮＯ）セル内の画素全て処理したとき（Ｓ１６６８でＹＥＳ）に本追加処理が終了し，それ以外は（Ｓ１６６８でＮＯ），Ｓ１６６２に移行して処理が繰り返される。
【００８２】
この追加処理（Ｓ１６６）又はＣＡＰＩＸ法を参考にした処理（Ｓ１６９）若しくは高線数多値ディザ処理（Ｓ１７０）が終了すると，ドット生成処理が終了して（図１０参照），ディザマトリックス２００を他のセルの領域に適用するための移動処理（図９参照）が行われる。
【００８３】
即ち，ＣＰＵ２４はディザマトリックス２００の番号「Ｎ」が「Ｎｍａｘ」か否か判断する（Ｓ１８）。「Ｎｍａｘ」とは，繰り返しマトリックスＭに含まれるディザマトリックス２００の数である。図３の例では，「Ｎｍａｘ」は「８」となる。ここでは，繰り返しマトリックスＭ内のすべての画素に対してディザマトリックス２００を適用して処理が終了したか否か判断している。
【００８４】
繰り返しマトリックスＭ内ですべてのディザマトリックス２００の適用が終了していないと（ＮＯ），ディザマトリックス番号「Ｎ」に「１」を加算し，上述の処理を繰り返す（Ｓ１３乃至Ｓ１８）。
【００８５】
一方，繰り返しマトリックスＭ内ですべてのディザマトリックス２００の適用が終了すると（Ｓ１８でＹＥＳ），繰り返しマトリックスＭ右端より右に未処理画素があるか否か判断する（Ｓ２０）。もし，未処理画素があれば（ＹＥＳ），繰り返しマトリックスＭを右に移動して，ディザマトリックス番号「Ｎ」を「１」として，上述の処理が繰り返される（Ｓ１３乃至Ｓ１８）。
【００８６】
未処理画素がなければ（Ｓ２０でＮＯ），入力画像１００の１ライン分の処理が終了したことになり，次いでＣＰＵ２４は繰り返しマトリックスＭ下端より下に未処理画素があるか否か判断する（Ｓ２２）。
【００８７】
繰り返しマトリックスＭ下端より下に未処理画素があれば（ＹＥＳ），繰り返しマトリックスＭを１段下の最左位置に移動して（Ｓ２３），再び上述の処理が繰り返される（Ｓ１３乃至Ｓ１８）。一方，下端より下に未処理画素がなければ（Ｓ２２でＮＯ），１頁分の入力画像１００すべての画素に対して処理が終了したことになり，上述した一連の処理が終了する（Ｓ２４）。
【００８８】
図１５は，入力画像に対する出力画像の例である。細線の入力画像（図１５（Ａ）参照）に対して，従来の多値ディザ法による出力画像は，図１５（Ｂ）に示すように，所々で線が切れているが，本発明による出力画像は図１５（Ｃ）に示すようにかかる事態は発生しない。
【００８９】
また，従来の多値ディザ法の出力画像（図１５（Ｂ））では，入力画像に対して線が太くなっている部分が存在するが，本発明による出力画像はかかる事態も発生していない。即ち，本発明による出力画像は入力に忠実なものとなる。
【００９０】
なお，本発明のよる効果は上述した以外にも以下のものが上げられる。即ち，本発明はディザマトリックス２００を適用するのは入力画像１００の各セルに対して１回のみであるため，複数回繰り返す場合と比較して高速な処理を行い得る。
【００９１】
また，ドット成長特性の異なる複数のディザパターンを画像処理装置２０のメモリ内（ＲＯＭ２５やＲＡＭ２６等）に記録する必要がないため，メモリに記録容量の削減を図り装置２０自体のコストダウンを実現できる。
【００９２】
上述した例は，本発明にかかるハーフトーン処理が画像処理装置２０で行われるものとして説明したが，図１６に示すようにホストコンピュータ１０側で行われてもよい。この場合，ホストコンピュータ１０が本発明に係る画像処理装置として機能する。
【００９３】
また，上述した例は入力画像データをモノクロデータとして説明した。それ以外にも，図１７に示すようにＣＭＹＫのカラーデータに対して本発明が適用されてもよい。この場合に，ラスタライズ部１２からはＲＧＢカラーデータが出力され，画像処理装置２０内の色変換処理部２１３によりＣＭＹＫのカラーデータに変換される。
【００９４】
この際に本発明は，ＣＭＹＫのプレーンごとに繰り返しマトリックスＭが適用され，プレーンごとに上述した処理が繰り返される。また，モアレ縞が発生しないように，マトリックスＭ内のディザマトリックス２００が配列される。
【００９５】
更に，本発明は，色変換処理部２１３がホストコンピュータ１０に設けられている場合や，色変換処理２１３とハーフトーン処理部２１１とがホストコンピュータ１０に設けられている場合でもよい。いずれの場合も上述した例と同様の作用効果を奏する。
【００９６】
更に，上述した例では，多値ディザマトリックス２００内に参照すべきテーブル番号が格納されている例を示したが，これ以外にもディザマトリックス２００に閾値が直接格納されていてもよい。この場合でも上述した例と同様の作用効果を奏する。
【００９７】
更に，上述した例は，入力画像データの階調数は「０」から「２５５」までの２５６階調（８ビット），量子化データも同様に２５６階調（８ビット）として説明した。勿論，これ以外にも，１２８階調（７ビット）や５１２階調（９ビット）等種々の階調数であっても同様の作用効果を奏する。
【００９８】
更に，上述した例では，画像処理装置２０の例としてプリンタを例にした説明した。勿論，複写機やファクシミリ，これらの機能を有する複合機等であってもよいし，また，ホストコンピュータ１０も携帯電話やＰＤＡ（Personal Digital Assistance），デジタルカメラなどの情報携帯端末でもよい。
【００９９】
[第２の実施の形態]
図１８は，第２の実施の形態における画像処理装置を含むシステム全体構成図である。このシステムは，画像入力装置１０と，画像処理装置２０と，画像出力装置３０とから構成される。これらの装置は基本的にコンピュータまたはコンピュータによって制御される装置であり，所定のオペレーティングシステムのもとで所定のプログラムが実行されることによって動作する。
【０１００】
画像入力装置１０は，アプリケーション部１１とラスタライズ部１２とから構成される。アプリケーション部１１は，文字データ，図形データ，ビットマップデータ等の印刷対象となるデータを生成する。例えば，画像入力装置１０でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用して，図示しないキーボード等の操作により文字データや図形データなどを生成する。そして生成したこれらのデータを，ラスタライズ部１２へ出力する。画像入力装置１０は，図示しないスキャナやデジタルスチルカメラなどの画像データ取得機器から出力される画像データを入力し，その入力画像データをラスタライズ部１２へ供給する構成であってもよい。
【０１０１】
ラスタライズ部１２は，アプリケーション部１１から供給された印刷対象のデータを，画素ごとに複数色の画像データに変換して出力する。本実施の形態では，Ｒ（レッド），Ｇ（グリーン），Ｂ（ブルー）の３色それぞれについて，画素ごとに８ビットの多階調値で表された画像データを出力する。つまり，各画素は２４ビットの画像データになる。したがって，出力画像データは，画素ごとに「０」から「２５５」までの２５６階調を有する。ラスタライズ部１２における画像データの生成処理は，画像入力装置１０に実装された図示しないプリンタドライバなどによって行われる。そして，ラスタライズ部１２から出力される画像データは，画像処理装置２０に出力される。
【０１０２】
画像処理装置２０は，基本的にコンピュータであり，色変換部２１３とハーフトーン処理部２１１とで構成される。画像処理装置２０は，画像入力装置１０から出力された画像データに対して，色変換処理とハーフトーン処理を行い，所定の階調データＤＲを画像出力装置３０へ出力する。
【０１０３】
色変換部２１３は，画像入力装置１０から出力される２５６種類の階調値を有するＲＧＢ各８ビット（計２４ビット）の画像データを受信し，画像出力装置３０が出力する色剤の色成分に合わせて色変換処理を行う。本実施の形態では，ＲＧＢからＣＭＹＫの画像データＤＴに色変換処理を行う。ここで，Ｃはシアン，Ｍはマゼンダ，Ｙはイエロー，Ｋはブラックを示す。ただし，モノクロ画像データの場合は，このような色変換処理は行わなくてもよい。
【０１０４】
ハーフトーン処理部２１１は，色変換部２１３から出力されるＣＭＹＫの画像データＤＴを入力し，画素ごとに量子化データ（２値や１２８値など，２種類以上の多値の階調値）に変換し，この変換された量子化データ（所定の階調データＤＲ）を，画素ごとの出力階調値として画像出力装置３０に出力する。ハーフトーン処理部２１１が，本実施の形態にかかる種々の画像処理を行う。具体的な画像処理内容は後述する。
【０１０５】
画像出力装置３０は，パルス幅変調部３１と印刷エンジン３５とから構成され，印刷エンジン３５は，レーザドライバ３６とレーザダイオード（ＬＤ）３７とから構成される。画像出力装置３０では，画像処理装置２０から出力された各画素の出力階調値に従って印刷エンジン３５が駆動され，この印刷エンジン３５によって印刷用紙等の記録媒体に各色成分のドットが，使用するＡＭスクリーンに応じた所定の網点位置に基づいて形成される。この形成されたドットによって，網点画像が生成され，印刷物として画像が出力される。
【０１０６】
パルス幅変調部３１は，ハーフトーン処理部２１１から出力された出力階調値を入力し，この出力階調値からレーザ駆動パルスのデータを生成する。そして，この駆動パルスデータをレーザドライバ３６に出力する。レーザドライバ３６は，入力された駆動パルスデータから，レーザダイオード３７を駆動する駆動パルスを生成し，レーザダイオード３７に出力する。レーザダイオード３７は，レーザドライバ３６から出力された制御パルスに基づいて駆動され，さらに図示しない感光ドラムや転写ベルトが駆動されて，最終的に印刷用紙等の記録媒体に，駆動パルスのパルス幅とパルス数に応じて所定の色成分のドットが所定の位置に所定数出力される。こうして，記録媒体に各色のドットが形成され画像入力装置１０にて生成された印刷対象となるデータが印刷される。
【０１０７】
図１９は，本実施の形態における画像処理を行うハーフトーン処理部を含む画像処理装置の具体的なハードウェア構成図である。図１８の画像処理装置２０を構成する色変換部２１，ハーフトーン処理部２２は，図１９におけるＣＰＵ２４，ＲＡＭ２６およびＲＯＭ２５に対応する。
【０１０８】
画像処理装置２０は，入出力インターフェイス２３，ＣＰＵ２４，ＲＡＭ２６，ＲＯＭ２５，ハードディスク２９などから構成され，それらはバスを介して互いに接続されている。入出力インターフェイス２３は，画像入力装置１０と画像処理装置２０とのインターフェイス，及び画像処理装置２０と画像出力装置３０のインターフェイスの機能を有する。入出力インターフェイス２３には，所定の伝送方式により伝送された画像入力装置１０からのＲＧＢの画像データが入力され，画像処理装置２０で処理可能なデータに変換される。ＲＧＢの画像データは，一旦ＲＡＭ２６に格納される。そして，入出力インターフェイス２３から画像出力装置３０に，画素ごとの出力階調データを所定の伝送方式で送出する。
【０１０９】
ＣＰＵ２４は，バスを介してハードディスク２９またはＲＯＭ２５に格納されたプログラムを読み出し，この読み出したプログラムを所定のオペレーティングシステムのもとで実行することによって，画像処理装置２０として機能し，所定の処理を実行する。
【０１１０】
ハーフトーン処理部２１１は，ＡＭスクリーンに応じた網点位置に基づいて，入力画像データを複数画素からなるセルに分割する。さらに，セル内の各画素の入力階調値と座標からセルの重心位置を算出する。そして，所定のセルに対して算出された重心位置座標に所定値を加算若しくは減算して整数化処理を行って，重心位置の画素を決定する。そして，決定された重心位置の画素に階調変換用のディザマトリックスの中心を対応させる。さらに，対応させたディザマトリックスの階調変換テーブルを参照して，セル内の各画素の入力階調値を出力階調値に階調変換する。具体的には後述する図２４および図２５のフローチャートに示した処理を実行する。
【０１１１】
これらの処理を実行するプログラムは，あらかじめハードディスク２９やＲＯＭ２５内に格納されていてもよいし，例えばＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなどのコンピュータが読み取り可能な記録媒体によって外部から供給され，図示しないプログラム読み取り手段を介してハードディスク２９に記憶することによって格納されてもよい。さらに，インターネットなどのネットワーク手段を介して，プログラムを供給するサーバー等にアクセスし，データをダウンロードすることによってハードディスク２９やＲＡＭ２６に格納されてもよい。
【０１１２】
以上説明したように，本実施の形態では，色変換部２１３が出力するＣＭＹＫの画像データＤＴである入力画像データは，各色８ビットずつの多階調データであり，各色「０」から「２５５」まで２５６種類の階調値を有する。また，ハーフトーン処理部２１１が，各色成分について形成されるドットの大きさを制御する量子化データに変換する量子化処理を行う。画像出力装置３０は，前述したように，階調変換された所定の階調データ，つまり画素ごとの出力階調値に対応して，駆動パルスを生成し，各色成分のドットの出力を制御して印刷を行う。
【０１１３】
［階調変換処理の概略］
次に，ハーフトーン処理部２１１が行う階調変換処理について，その概要を図２０〜図２２を参照して説明する。この概略説明は，本実施の形態の画像処理について，後述する図２３，図２４の処理フローチャートの説明に対する理解を容易にするために行う。
【０１１４】
図２０は，本実施の形態におけるスクリーン構造を示している。マトリクス状の入力画像データ１００に対して，スクリーンを構成する網点位置（図中，黒丸）の画素が規則的に設定され，この網点位置を中心に入力画像データ１００が太線で示したセルCに分割される。図２０では，マトリクス状の画素に対して，８画素からなるセルCが割り当てられている。そして，セル内の階調値が均一の場合は，各セルCの中心付近の画素（黒丸が示された画素）がセル内に形成される網点の中心画素に対応する。図２０では８ｘ８画素の入力画像データ１００に対して１３個のセルCが対応付けられている。
【０１１５】
図２１は，本実施の形態において図２０のセルＣに適用されるディザマトリクス２００の例を示す図である。このディザマトリクスは，図２１（Ａ）のインデックスマトリクスと図２１（Ｂ）ガンマテーブルとで構成される。インデックスマトリクスは，セル内の各画素がどのガンマテーブルを参照すべきかを示すテーブル番号を有し，ガンマテーブルは，入力階調値に対する出力階調値を対応付けた４種類のテーブル１，２，３，４を有する。テーブル１は入力階調値が低い領域で最高出力階調値になっているので，網点中心画素に対応付けられる。すなわち，図２０の黒丸の網点位置に対応づけられる。テーブル２，３，４は，順に入力階調値がより高くなるにしたがって最高出力階調値になるので，網点位置の画素の周囲の画素に対応付けられる。したがって，入力階調値が４０とすると，ガンマテーブル１では出力階調値が２５５になるが，ガンマテーブル２では出力階調値は１６になり，ガンマテーブル３，４では出力階調値は０である。
【０１１６】
ディザマトリクス２００の対応するガンマテーブルを参照することで，セル内の各画素の入力階調値が，出力階調値に変換される。よって，ディザマトリクス２００は，階調変換マトリクスとも称され，ガンマテーブルは階調変換テーブルとも称される。
【０１１７】
本実施形態では、ガンマテーブルは，８ビットの入力階調値に対応して複数ビット（８ビット）の出力階調値を有するが、出力階調値が１ビットで構成されてもよい。この場合は，出力画像値は画素にドットを形成するまたは形成しないの情報になる。
【０１１８】
出力階調値が複数ビットで構成される場合は，出力画像値は画素内のドット形成領域を示す多階調データになる。
【０１１９】
ディザマトリクスによる出力階調値が画素にドットを形成するまたは形成しないの１ビット情報の場合は，ディザマトリクスの各画素には閾値データが格納されてもよい。その場合は，入力階調値と閾値データとが比較され，その大小関係に応じてドットを形成するまたは形成しないが決定される。また，出力階調値が１ビットの場合，ガンマテーブルの出力階調データが「１」「０」で構成されてもよい。そして，出力階調値が複数ビット，例えば８ビット，の場合は，ガンマテーブルの出力階調値も複数ビットのデータになる。
【０１２０】
次に，セルの各画素について行われる階調変換処理を図２２を参照して説明する。本実施の形態では，図２０に示したようにマトリクス状の画素にディザマトリクス２００を画一的に割り当てるのではなく，各セルＣの重心画素にディザマトリクスの中心位置（ガンマテーブル１の画素）が対応付けられるようにする。そのために，セルの重心位置を求めて，ディザマトリクスをシフトする処理が必要になる。
【０１２１】
図２２（Ａ）では，セルＣに対して横方向のＸ軸と縦方向のＹ軸の座標が定義されている。そして，算出されたセルＣの重心位置ＧＣ（図中白丸）が座標（３，２）であるのに対して，セルＣに対応するディザマトリクス２００の中心位置である網点位置ＡＭＴが座標（２，２）である。つまり，ディザマトリックス２００の網点中心位置ＡＭＴとセルＣの重心位置ＧＣとがＸ軸方向に１つずれている。なお階調変換マトリックス２００内の数字は，格納された階調変換用のガンマテーブル番号を示す。
【０１２２】
上記の場合，本実施の形態では，図２２（Ｂ）に示したように，セルＣの重心位置ＧＣにディザマトリックス２００の中心位置ＡＭＴをシフトして，両者を対応付ける。つまり，この例では右に１画素，マトリックス２００をシフトする。その結果，ディザマトリクス２００の網点位置ＡＭＴとセルＣの重心位置とが一致することになる。このようなシフト処理を行うことにより，入力画像の高い階調画素に対してより確実に網点が形成されることになり，出力画像において細い線がとぎれることなどが回避される。
【０１２３】
シフトされたディザマトリックス２００の周囲には，図２２（Ｂ）で破線で例示したように，同じディザマトリックスが取り囲むように連続して存在しているものとして，セル内画素とディザマトリクスのガンマテーブル番号との対応を行う。そして，セル内の各画素の階調変換に際して，各画素の入力階調値が太線のディザマトリックス２００または破線の隣接するディザマトリックスのガンマテーブルに基づいて出力階調値に階調変換される。
【０１２４】
図２２の例では，図２２（Ａ）では，重心画素ＧＣ（座標（３，２））が参照するテーブル番号は「２」であったが，図２２（Ｂ）のシフト処理の結果，テーブル番号は「１」になっている。このようにディザマトリックス２００をシフトすることによって，セルＣの重心位置にドットが形成されやすくなり，重心位置が網点位置になる確率が高くなり，入力画像にできるだけ忠実な出力画像を得ることが可能となる。
【０１２５】
本実施の形態の階調変換処理は，上記のシフト処理によるディザマトリクスの対応付けに加えて，セル内の出力階調値の合計が入力階調値から得られる理想的なドットサイズを超えないようにする出力制限処理を行う。この処理により，出力階調値により形成されるセル内のドットが必要以上に大きくなるのを防止し，入力画像と出力画像間の出力濃度をほぼ一致させることができる。
【０１２６】
図２３は，本実施の形態における理想出力合計値を説明する図である。図２３には，セルの平均入力階調値と理想出力合計値との対応を示すテーブル例が示されている。このテーブルには，横軸の平均入力階調値０〜２５５（８ビット，２５６階調）に対応して，縦軸の理想出力合計値０〜２０４０（＝２５５×８）が設定されている。理想出力合計値の最大値が２０４０（＝２５５×８）となっているのは，画素の最大階調値２５５にセル内の画素数８を乗じた値である。
【０１２７】
一点鎖線のテーブル３００は，平均入力階調値に対して理想出力合計値がリニアな関係になっている。また，実線のテーブル３１０は，平均入力階調値に対応する理想出力合計値がノンリニアな関係になっていて，このノンリニアな関係は，印刷エンジンのデバイス特性（階調データに対する出力濃度の特性）を補正するように設定されている。図２３の例では，低い平均入力階調値の領域では理想出力合計値はより低く，高い平均入力階調値の領域では理想出力合計値はより高く設定されている。これ以外にも，デバイス特性に依存して異なる特性の変換テーブルが利用可能である。
【０１２８】
上記のように，理想出力合計値を平均入力階調値に対してリニアな関係にする以外に，実線３１０のようにデバイス特性を補正するように設定することで，出力階調値の濃度制限と共にデバイス特性に対応した濃度制限を行うことができる。
【０１２９】
［階調変換処理の詳細］
次にハーフトーン処理部による階調変換処理をフローチャートなどを参照して詳細に説明する。図２４は，本実施の形態における階調変換処理のフローチャート図である。また，図２５は，階調変換処理内のドット生成処理のフローチャート図である。図２４のフローチャートは，図８，９と同等である。また，図２５のフローチャートは，図１０，１１と同等であり，ただし補足処理Ｓ１６４，Ｓ１６５，Ｓ１６６，Ｓ１６８，Ｓ１６９を有していない。よって，同じ処理には同じ引用番号を与えている。これらのフローチャートに示した各処理は，図１９のＣＰＵ２４が，本処理を実行するためのプログラムや演算式を，例えばＲＯＭ２５から適宜読み出したり，必要な処理データを例えばＲＡＭ２６に適宜格納したり読み出したりして行われる。
【０１３０】
まず，図２４に示されるように，ＣＰＵ２４が本処理を実行するプログラムをＲＯＭ２５から読み出して処理を開始する（Ｓ１０）。そして，ハーフトーン処理つまり階調変換処理の対象となる入力画像データを読み込む（Ｓ１１）。入力画像データはマトリックス状の画素毎の入力階調データで構成され，ここでは一例として色成分シアンの画像データを入力画像データとして読み込む。ただし，階調変換処理は入力画像データの色成分シアンだけでなく全ての色成分の画像データに対して行なわれる。また，モノクロ画像の場合は単色の入力階調データに対して階調変換処理が行われる。
【０１３１】
次に，読み込んだ入力画像データを複数の画素群からなるセルに分割する（Ｓ１１ａ）。セルへの分割は，所定の間隔で配置された網点位置を基準にして，網点位置にセルの中心が一致するように行われる。前述したようにＣＭＹＫなどの複数の色成分の入力階調データを処理する場合は，各色成分の相互干渉によるモアレの発生を防止する目的のために，各色成分について使用するスクリーンを相互に回転したり又は位置をずらしたり，あるいは異なるスクリーンを使用したりすることがある。よって，各色成分毎に網点位置が異なり，各色成分の入力画像データが異なる形状のセルに分割されてもよい。
【０１３２】
次に，分割された複数のセル群の左上のセルからラスタ順に，セル処理番号Ｎを設定するとともに，階調変換マトリックス２００を入力画像データ１００の左上のＮ＝１のセルに対応させる（Ｓ１２）。これ以降の処理Ｓ１３〜Ｓ１６が，全てのセルに対して繰り返される（Ｓ１８，Ｓ１９）。
【０１３３】
まず，処理対象のセル内の画素の入力階調値の合計を算出し（Ｓ１３），その入力階調の合計が「０」より大きいか否かを判定する（Ｓ１４）。合計が「０」より大きくない場合（Ｓ１４：ＮＯ）は，セル内の全ての画素の入力階調値が「０」であるので，ドット形成のための階調変換処理Ｓ１５，Ｓ１６を行うことなく，ステップＳ１８に進む。この場合は入力階調値がそのまま出力階調値（全て「０」）となる。こうすることで，階調変換処理に関する負荷が軽減できる。
【０１３４】
入力階調の合計が「０」より大きい場合（Ｓ１４：ＹＥＳ）は，セル内の画素の重心位置を算出する（Ｓ１５）。セルの重心位置の座標を（ＸＧ，ＹＧ）としたとき，以下の式により各座標が算出される。この式は，前述の式と同じである。
ＸＧ＝〔Σ｛（各画素のＸ座標）×（各画素の階調値）｝〕／セルの階調値合計
ＹＧ＝〔Σ｛（各画素のＹ座標）×（各画素の階調値）｝〕／セルの階調値合計
次に，セル内画素の階調変換処理を含むドット生成処理を行う（Ｓ１６）。この処理では，セルにディザマトリックスを対応付け，セル内の各画素に対応する階調変換テーブルを参照して，各画素の入力階調値をドットを形成するための出力階調値に階調変換する。
【０１３５】
次に，上記の処理Ｓ１３，Ｓ１４，Ｓ１５，Ｓ１６は，セル番号Ｎが最大値Ｎｍａｘになるまで繰り返される。図２０の例ではＮｍａｘ＝１３となる。セル番号Ｎが最大値Ｎｍａｘでない場合（Ｓ１８：ＮＯ），セル番号ＮをＮ＋１にインクリメントして（Ｓ１９），ステップＳ１３に戻り，次の階調変換対象となるセルについてステップＳ１３からＳ１６までの処理を繰り返す。一方，セル番号Ｎが最大値Ｎｍａｘに達すると（Ｓ１８：ＹＥＳ），階調変換の対象となる全ての画素について，出力階調値への階調変換が終了したことになりハーフトーン処理が終了する。
【０１３６】
図２５のドット生成処理Ｓ１６では，セル内で出力すべき理想出力合計階調値を求め（Ｓ１６Ａ），セル内の画素について重心画素に近い順に処理順を決定し（Ｓ１６Ｂ），重心位置にディザマトリクスの中心をシフトして対応付ける（Ｓ１６Ｃ）。そして，セル内の全ての画素（セル数ｍ＝８）に対して（Ｓ１６Ｄ，Ｓ１６Ｉ），対応付けられたガンマテーブルを参照して出力階調値を取得し（Ｓ１６Ｅ），出力階調値をＲＡＭ内の出力バッファに出力する（Ｓ１６Ｇ）。ただし，セルの出力階調値の合計が理想出力合計階調値を超えない範囲で出力階調値が出力され（Ｓ１６ＦのＮＯ），超える場合（Ｓ１６ＦのＹＥＳ）はその出力階調値は，出力合計値が理想出力合計階調値と等しくなるように調整されて出力される（Ｓ１６Ｊ）。出力合計値が理想値を超えるか（Ｓ１６ＦのＹＥＳ），セル内の全ての画素について階調変換が終了すると（Ｓ１６ＨのＹＥＳ），ドット生成処理は終了する。
【０１３７】
本実施の形態では，図１０のステップＳ１６４以降に示した，出力合計値が理想値に達しない場合の補足処理（Ｓ１６９，Ｓ１６６）は行わない。
【０１３８】
次に，具体例を示して上記のハーフトーン処理を説明する。
【０１３９】
図２６は，第１の入力階調データ例に対するハーフトーン処理を示す図である。図２６（Ａ）に示されるとおり，この入力階調データは全ての画素で階調値が「４０」の均一画像に対するものである。したがって，図２６（Ｂ）に示されるとおり，工程Ｓ１３によりセルＣの入力階調値の合計「３２０」が求められ，工程Ｓ１５により重心座標（２．３，２）が求められる。さらに，工程Ｓ１６Ａにより図２３の理想出力合計値テーブルを参照して理想出力合計値「３２０」が求められる。図２６（Ｃ）にはセルＣの重心１１０が黒点で示されている。
【０１４０】
そして，図２６（Ｄ）に示されるように，工程Ｓ１６Ｂにて，重心画素に近い順に階調変換処理の順番が決定される。これによれば，中心画素が１番目で，その上下左右の画素が２〜５番目で，その斜めの画素が６，７番目で，最後の１つの画素が８番目になる。
【０１４１】
さらに，セルの重心位置とディザマトリクスの中心位置を一致させるようにシフト処理Ｓ１６Ｃが行われる。この例では，重心位置と中心位置が一致しているので，シフトする必要はない。その結果，図２６（Ｅ）のように，ディザマトリクス２００のインデックステーブルが割り当てられる。つまり，中心画素がテーブル「１」で，上下左右の画素がテーブル「２」で，斜めの画素がテーブル「３」で，残りの画素がテーブル「４」になっている。
【０１４２】
そして，上記の処理の順番に各画素の入力階調値が出力階調値に変換される。処理順番「１」の画素では，図２１のガンマテーブル１を参照して，入力階調値「４０」が出力階調値「２５５」に変換されて（Ｓ１６Ｅ），出力バッファに出力される（Ｓ１６Ｇ）。図２６（Ｆ）は出力階調値が出力される出力バッファ４００を示している。次に，処理順番「２」〜「５」の画素では，図２１のガンマテーブル２を参照して，入力階調値「４０」が出力階調値「１６」にそれぞれ変換される（Ｓ１６Ｅ）。そして，これらの出力階調値の合計は，「３１９（＝２５５＋１６ｘ４）」であり，理想出力合計値「３２０」を超えていないので（Ｓ１６ＦのＮＯ），全て出力バッファに出力される（Ｓ１６Ｇ）。残りの処理順番「６」「７」「８」の画素では，ガンマテーブル３または４が参照され，いずれも出力階調値「０」に変換され，出力バッファに出力される。全ての画素の変換処理が終了して，図２４，２５のハーフトーン処理における階調変換処理が終了する。
【０１４３】
図２７は，第２の入力階調データ例に対するハーフトーン処理を示す図である。図２７（Ａ）に示されるとおり，この入力階調データはセルＣ内の左端の２画素で階調値が「６０」「４０」で，残りの画素は全て階調値「０」の画像に対するものである。したがって，図２７（Ｂ）に示されるとおり，工程Ｓ１３によりセルＣの入力階調値の合計「１００」が求められ，工程Ｓ１５により重心座標（１，２．４）が求められる。さらに，工程Ｓ１６Ａにより理想出力合計値「１００」が求められる。図２７（Ｃ）には左端の画素にセルＣの重心１１０が黒点で示されている。
【０１４４】
そして，図２７（Ｄ）に示されるように，工程Ｓ１６Ｂにて，重心画素に近い順に階調変換処理の順番が決定される。これによれば，左端の画素が１番目で，その右，下の画素が２，３番目で，その斜めの画素が４，５番目で，残りの３つの画素が６，７，８番目になる。
【０１４５】
さらに，セルＣの重心位置とディザマトリクス２００の中心位置を一致させるようにシフト処理Ｓ１６Ｃが行われる。この例では，重心位置が中心位置よりＸ軸方向に−１ずれているので，シフト量は（−１，０）となる。その結果，図２７（Ｅ）のように，ディザマトリクス２００のインデックステーブルが割り当てられる。つまり，左端画素がテーブル「１」で，上下左右の画素がテーブル「２」で，斜めの画素がテーブル「３」で，残りの画素がテーブル「３」「４」になっている。
【０１４６】
そして，上記の処理の順番に各画素の入力階調値が出力階調値に変換される。処理順番「１」の画素では，ガンマテーブル１を参照して，入力階調値「６０」が出力階調値「２５５」に変換され（Ｓ１６Ｅ），その出力階調値「２５５」は理想出力合計値「１００」を超えているので（Ｓ１６ＦのＹＥＳ），理想出力合計値「１００」に一致するように出力階調値も「１００」に調整される（Ｓ１６Ｊ）。すでに出力階調値の合計が理想出力合計値を超えているので，残りの画素の階調変換を行われない。その結果，図１７（Ｆ）の出力バッファ４００の出力階調値の状態で，図２４，２５のハーフトーン処理における階調変換処理が終了する。入力階調データの高階調画素にドットが形成されるので，出力画像の画質は向上する。また，入力階調値の合計と出力階調値の合計が一致しているので，出力画像のセルの濃度は入力画像と同じ濃度に再生される。
【０１４７】
図２８は，第３の入力階調データ例に対するハーフトーン処理を示す図である。図２８（Ａ）に示されるとおり，この入力階調データはセルＣ内の左右両端の画素で階調値が「２００」「２５５」の濃度が不均一な画像に対するものである。したがって，図２８（Ｂ）に示されるとおり，工程Ｓ１３によりセルＣの入力階調値の合計「４５５」が求められ，工程Ｓ１５により重心座標（２．７，２）が求められる。さらに，工程Ｓ１６Ａにより理想出力合計値「４５５」が求められる。図２８（Ｃ）にはセルＣの重心１１０が黒点で示されている。そして，図２８（Ｄ）に示されるように，工程Ｓ１６Ｂにて，重心画素に近い順に階調変換処理の順番が決定される。
【０１４８】
さらに，セルの重心位置とディザマトリクスの中心位置を一致させるようにシフト処理Ｓ１６Ｃが行われる。この例では，重心位置１１０が中心位置よりＸ軸方向に＋１ずれているので，シフト量（１，０）でシフト処理される。その結果，図２８（Ｅ）のように，ディザマトリクス２００のインデックステーブルが割り当てられる。
【０１４９】
そして，上記の処理の順番に各画素の入力階調値が出力階調値に変換される。処理順番「１」の画素では，ガンマテーブル１を参照して，入力階調値「０」が出力階調値「０」に変換されて（Ｓ１６Ｅ），出力バッファに出力される（Ｓ１６Ｇ）。次に，処理順番「２」の画素では，ガンマテーブル２を参照して，入力階調値「２５５」が出力階調値「２５５」に変換され（Ｓ１６Ｅ），出力バッファに出力される（Ｓ１６Ｇ）。さらに，処理順番「３」〜「７」の画素では，ガンマテーブル２または３を参照して，出力階調値「０」が出力される。最後に，処理順番「８」の画素では，ガンマテーブル４を参照して，入力階調値「２００」が出力階調値「１４」に変換され，出力合計値「２６９」が理想出力合計値「４５５」を超えていないので（Ｓ１６ＦのＮＯ），出力バッファに出力される（Ｓ１６Ｇ）。これで全ての画素の処理が終了し，図２５，図２６のハーフトーン処理が終了する。図２８（Ｆ）が階調変換された出力バッファ４００の出力階調値である。
【０１５０】
なお，上記の第３の入力階調データの場合，出力階調値の合計が「２６９」であり，理想出力値「４５５」よりもかなり小さい。このように，セル内の画素に高い階調値の画素が分かれて存在すると，このような結果になり，出力画像の濃度が入力画像の濃度と大きく異なってしまう。
【０１５１】
このような場合は，図１０で説明したような補足処理Ｓ１６９，Ｓ１６６を実行することで濃度の変動を最小限に抑えることができる。例えば，図１２のＣＡＰＩＸ法により処理を行うと，以下のようになる。
【０１５２】
ＣＡＰＩＸ法の処理とは，ディザマトリックス２００が適用されるセル内の入力階調値の合計を求め，入力階調値の高い画素に優先して高い出力階調値を再配分する処理である。つまり，セル内の網点中心位置を決めずに，画素単位で出力階調値が割り当てられるので，入力階調データの高階調値の画素にはそれに対応して高階調値の出力階調データが得られ，解像度を保って出力値を得ることができる。
【０１５３】
図２８の入力階調データを例にして図１２を説明すると，ＣＰＵ２４は，セル内の画素を入力階調値の大きい順にソートし（Ｓ１６９１），入力階調値「２５５」「２００」の２つの画素が先頭に，次いで，入力階調値「０」の６つの画素がその次の順番になる。次いでＣＰＵ２４は，理想階調値「４５５」を残余階調値に代入する（Ｓ１６９２）。そして，ＣＰＵ２４は，ソートした画素リストの先頭の未処理画素に残余階調値を加算し，その値が画素の出力最大値を超えるか否か判断する（Ｓ１６９３）。画素の出力最大値は「２５５」である。最大値を超えていると（Ｓ１６９３のＹＥＳ），出力最大値と等しくなるように加算する値を調整し（Ｓ１６９５），その値を先頭の未処理画素に加算する（Ｓ１６９６）。一方，出力最大値を越えないと（Ｓ１６９３でＮＯ），残余階調値を画素に加算する値とし（Ｓ１６９４），その値を先頭の未処理画素に加算する（Ｓ１６９６）。
【０１５４】
図２８の入力階調データの例では，残余階調値「４５５」を入力階調値「２５５」の画素に加算すると最大階調値「２５５」を超えるため（Ｓ１６９３でＹＥＳ），加算値が「２５５」に調整され（Ｓ１６９５），当該画素に出力階調値「２５５」が与えられる（Ｓ１６９６）。そして，ＣＰＵ２４は残余階調値「４５５」から与えた出力階調値「２５５」を減算して（Ｓ１６９７），残余階調値が「０」になるまで処理を繰り返す（Ｓ１６９８）。この例では，残余階調値が「２００」（＝４００−２５５）となり，入力階調値「２００」の画素にこの値を出力して処理が終了する。その結果，出力階調データは入力階調データと同じになり，濃度が大きく変動することが回避され解像度も維持される。
【０１５５】
図１３の高線数ディザ処理，図１４の重心近傍画素への不足階調値の追加処理も同様にして行うことができる。
【０１５６】
以上の通り，第２の実施の形態のハーフトーン処理では，セルの重心の画素にディザマトリクスの網点中心画素が対応するようにシフト処理を行い，各画素に対応するガンマテーブルを参照して入力階調値を出力階調値に変換処理を行う。そして，出力階調値の合計値が理想出力合計値を超えないように変換された出力階調値を調整する。そして，出力階調値の合計値が理想出力合計値に達しない場合でも，高速処理の観点から補足処理を行わなくても良い。
【０１５７】
また，ガンマテーブルの出力階調値は１ビットであっても複数ビットであってもよい。さらに，ガンマテーブルには閾値データを格納して，入力階調値と閾値とを比較して１ビットの出力データを生成してもよい。
【０１５８】
本実施の形態は，レーザプリンタ以外の他の印刷エンジン形式の画像形成装置にも適用可能である。
【図面の簡単な説明】
【０１５９】
【図１】本発明が適用されるシステム全体の構成図である。
【図２】画像処理装置の構成を示す図である。
【図３】繰り返しマトリックスの例を示す図である。
【図４】セルとテーブルとの関係を示す図である。
【図５】入力画像の重心位置にセルの中心をシフトさせる場合の例を示す図である。
【図６】入力階調値と出力階調値の例を示す図である。
【図７】入力階調値と出力階調値の例を示す図である。
【図８】全体処理の動作を示すフローチャートである。
【図９】全体処理の動作を示すフローチャートである。
【図１０】ドット生成処理の動作を示すフローチャートである。
【図１１】濃度制限付き多値ディザ処理の動作を示すフローチャートである。
【図１２】ＣＡＰＩＸ法を参考にした処理の動作を示すフローチャートである。
【図１３】高線数の多値ディザ処理の動作を示すフローチャートである。
【図１４】重心近傍の画素への不足分階調値の追加処理の動作を示すフローチャートである。
【図１５】入力画像の例と出力画像の例を示す図である。
【図１６】本発明が適用される他のシステム全体の構成を示す図である。
【図１７】本発明が適用される他のシステム全体の構成を示す図である。
【図１８】第２の実施の形態における画像処理装置を含むシステム全体構成図である。
【図１９】本実施の形態における画像処理を行うハーフトーン処理部を含む画像処理装置の具体的なハードウェア構成図である。
【図２０】入力画像データと繰り返しマトリクスの関係を示す図である。
【図２１】本実施の形態におけるディザマトリクスの例を示す図である。
【図２２】本実施の形態における階調変換処理を説明する図である。
【図２３】本実施の形態における理想出力合計値を説明する図である。
【図２４】本実施の形態における階調変換処理のフローチャート図である。
【図２５】本実施の形態における階調変換処理内のドット生成処理のフローチャート図である。
【図２６】第１の入力階調データ例に対するハーフトーン処理を示す図である。
【図２７】第２の入力階調データ例に対するハーフトーン処理を示す図である。
【図２８】第３の入力階調データ例に対するハーフトーン処理を示す図である。
【符号の説明】
【０１６０】
１０  ホストコンピュータ，２０  画像処理装置，２４  ＣＰＵ，２５  ＲＯＭ，２６  ＲＡＭ，１００  入力画像，２００  多値ディザマトリックス，２１１  ハーフトーン処理部，Ｍ  繰り返しマトリックス，Ｎ  多値ディザマトリックス番号
【図１】
2006352837.tif 000004
【図２】
2006352837.tif 000005
【図３】
2006352837.tif 000006
【図４】
2006352837.tif 000007
【図５】
2006352837.tif 000008
【図６】
2006352837.tif 000009
【図７】
2006352837.tif 000010
【図８】
2006352837.tif 000011
【図９】
2006352837.tif 000012
【図１０】
2006352837.tif 000013
【図１１】
2006352837.tif 000014
【図１２】
2006352837.tif 000015
【図１３】
2006352837.tif 000016
【図１４】
2006352837.tif 000017
【図１５】
2006352837.tif 000018
【図１６】
2006352837.tif 000019
【図１７】
2006352837.tif 000020
【図１８】
2006352837.tif 000021
【図１９】
2006352837.tif 000022
【図２０】
2006352837.tif 000023
【図２１】
2006352837.tif 000024
【図２２】
2006352837.tif 000025
【図２３】
2006352837.tif 000026
【図２４】
2006352837.tif 000027
【図２５】
2006352837.tif 000028
【図２６】
2006352837.tif 000029
【図２７】
2006352837.tif 000030
【図２８】
2006352837.tif 000031