(57)【要約】【課題】本発明の目的は、画質劣化のない粒状性の優れた出力画像を得るとともに、コスト増大を防ぐ画像処理装置、画像処理方法、及びプログラムを提供すること。【解決手段】画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成手段と、前記画素群生成手段で生成した画素群の第２の基準点を決定する画素群基準点決定手段と、前記画素群基準点決定手段で決定した前記第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与手段と、前記量子化画像データに対応するドットの重心点と前記第２の基準点との誤差に応じたデータ分だけ第１の画素の前記階調画像データを第２の画素に移動させる階調画像データ移動手段と、を備えた画像処理装置であることを特徴としている。【選択図】図６
2005341351.tif 000002
【特許請求の範囲】
【請求項１】
画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成手段と、
前記画素群生成手段で生成した画素群の第２の基準点を決定する画素群基準点決定手段と、
前記画素群基準点決定手段で決定した前記第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与手段と、
前記量子化画像データに対応するドットの重心点と前記第２の基準点との誤差に応じたデータ分だけ第１の画素の前記階調画像データを第２の画素に移動させる階調画像データ移動手段と、
を備えたことを特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、
前記第１の画素は未処理画素であって、前記量子化画像データが付与された画素から最も近い距離に位置する画素であることを特徴とする画像処理装置。
【請求項３】
請求項１記載の画像処理装置において、
前記第２の画素は未処理画素であって、前記第２の基準点から前記ドットの重心点に向う方向とは逆方向に前記第１の画素と隣り合う画素である、ことを特徴とする画像処理装置。
【請求項４】
請求項１記載の画像処理装置において、
前記誤差に応じた階調画像データは前記第２の基準点の位置座標と前記ドットの重心点の位置座標との差分に前記量子化画像データを積算したデータである、ことを特徴とする画像処理装置。
【請求項５】
請求項４記載の画像処理装置において、
前記量子化画像データ移動手段は前記第１の画素から前記第２の画素に前記誤差に応じたデータ分だけ前記階調画像データを移動させても前記誤差に値が残っているとき、再び第３の画素から第４の画素に残った前記誤差分だけ前記階調画像データを移動させる、ことを特徴とする画像処理装置。
【請求項６】
請求項１記載の画像処理装置において、
前記画素群生成手段は前記画素を選択するごとに前記第１の基準点を更新させる、ことを特徴とする画像処理装置。
【請求項７】
請求項１記載の画像処理装置において、
前記第１の基準点は前記画素群を構成する前記各画素の座標位置と当該画素の階調画像データとから決定した重心位置である、ことを特徴とする画像処理装置。
【請求項８】
請求項１記載の画像処理装置において、
前記第２の基準点は前記画素の座標位置と当該画素の階調画像データとから演算した前記画素群の重心位置である、ことを特徴とする画像処理装置。
【請求項９】
請求項１記載の画像処理装置において、
前記第１の基準点は固定点である、ことを特徴とする画像処理装置。
【請求項１０】
１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理装置であって、
前記セルの重心位置と前記ドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる制御手段、
を備えることを特徴とする画像処理装置。
【請求項１１】
画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成工程と、
前記画素群生成工程で生成した画素群の第２の基準点を決定する画素群基準点決定工程と、
前記画素群基準点決定工程で決定した前記第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与工程と、
前記量子化画像データに対応するドットの重心点と前記第２の基準点との誤差に応じたデータ分だけ第１の画素の前記階調画像データを第２の画素に移動させる階調画像データ移動工程と、
を備えたことを特徴とする画像処理方法。
【請求項１２】
１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理方法であって、
前記セルの重心位置と前記ドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる工程、
を備えることを特徴とする画像処理方法。
【請求項１３】
画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成処理と、
前記画素群生成処理で生成した画素群の第２の基準点を決定する画素群基準点決定処理と、
前記画素群基準点決定処理で決定した前記第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、
前記量子化画像データに対応するドットの重心点と前記第２の基準点との誤差に応じたデータ分だけ第１の画素の前記階調画像データを第２の画素に移動させる階調画像データ移動処理と、
をコンピュータに実行させることを特徴するプログラム。
【請求項１４】
１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理をコンピュータに実行させるためのプログラムであって、
前記セルの重心位置と前記ドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる処理、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レーザプリンタなどの画像処理装置における階調画像データのハーフトーン処理に関する。詳しくは、画素選択のための基準点を更新しながら複数の画素からなるセルを構成し、当該セルの重心位置にドットを発生させる処理において、セルの重心位置とドットの重心位置との重心誤差を階調値の移動により補正するようにしたハーフトーン処理に関する。
【背景技術】
【０００２】
従来から、プリンタなどの画像処理装置は、画素ごとに多値の階調値を有する階調データに対して、ドットの有無を表す２値の値に変換処理して印刷用紙に印刷を行うようになされている。一般には、多値の階調値を２値の値に変換する処理のことをハーフトーン処理と称されている。
【０００３】
かかるハーフトーン処理の方法としては、所定の閾値が格納された閾値マトリックスを利用して、入力階調値が閾値よりも大きいか小さいかにより２値化するディザ法や、閾値を設定しその閾値よりも大きいか小さいかにより２値化するとともにその誤差分をまわりの画素に分散して処理を進める誤差拡散法もある。
【０００４】
また、入力画像の各画素の階調値の合計が所定の閾値になるまでセルを構成する画素を選択し、セルの中心位置にドットを生成させるようにしたハーフトーン処理も知られている（例えば、以下の特許文献１）。さらに、かかるハーフトーン処理と誤差拡散法とを組み合わせた処理もある（例えば、以下の特許文献２）。
【０００５】
しかし、かかるハーフトーン処理ではセルを構成する画素を予め探索順が決められたテーブルを用いて探索しているために処理済みの画素を考慮しておらず、結果的に出力ドットが偏り画質劣化が生じていた。
【０００６】
そこで、セル内で重心位置を求め、その重心位置に最も近い画素を順次セルに取り込み、これを閾値に達するまで処理を繰り返すことによってドットの偏りがない分散性の向上したハーフトーン処理も提案されている（例えば、以下の特許文献３）
【特許文献１】特開平１１−２７５２８号公報
【特許文献２】特開２０００−２２９５２号公報
【特許文献３】特願２００３−１５４２０２号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特願２００３−１５４２０２号では、入力画像の中濃度（例えば、２５６階調で１２８に近い値など）領域においてすぐに閾値に達してしまうためセルサイズが小さくなってしまう。このため、セル形状が歪み、隣接するセルとの距離が近づきドットが繋がってしまうなど粒状的なドットを生じさせる問題があった。かかる粒状的なドットは画質劣化の原因でもあった。このような問題は、特開平１１−２７５２８号や特開２０００−２２９５２号でも生じる。
【０００８】
また、特開２０００−２２９５２号では、２つの処理を行わせるために、２つの処理部が必要である。かかる処理を実現するには計算量自体も多くなってしまい、さらに部品点数も多くなりその分装置全体のコストが増大するという問題がある。
【０００９】
そこで、本発明の目的は、中濃度の入力画像に対して画質劣化のない粒状性の優れた出力画像を得るとともに、コスト増大を防ぐ画像処理装置、画像処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明は、画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成手段と、画素群生成手段で生成した画素群の第２の基準点を決定する画素群基準点決定手段と、画素群基準点決定手段で決定した第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与手段と、量子化画像データに対応するドットの重心点と第２の基準点との誤差に応じたデータ分だけ第１の画素の階調画像データを第２の画素に移動させる階調画像データ移動手段と、を備えたことを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【００１１】
また、本発明は上記画像処理装置において、上記第１の画素は未処理画素であって、量子化画像データが付与された画素から最も近い距離に位置する画素であることを特徴としている。これにより、例えば、粒状性を改善した出力画像を得ることができる。
【００１２】
さらに、本発明は上記画像処理装置において、上記第２の画素は未処理画素であって、第２の基準点からドットの重心点に向う方向とは逆方向に第１の画素と隣り合う画素である、ことを特徴としている。これにより、例えば、重心誤差の方向とは逆方向に階調値を移動させることで、粒状性を改善した出力画像を得ることができる。
【００１３】
さらに、本発明は上記画像処理装置において、上記誤差に応じた階調画像データは第２の基準点の位置座標とドットの重心点の位置座標との差分に量子化画像データを積算したデータである、ことを特徴としている。これにより、例えば、容易に重心誤差の応じた階調値を演算することができる。
【００１４】
さらに、本発明は上記画像処理装置において、上記量子化画像データ移動手段は第１の画素から第２の画素に誤差に応じたデータ分だけ階調画像データを移動させても誤差に値が残っているとき、再び第３の画素から第４の画素に残った誤差分だけ階調画像データを移動させる、ことを特徴としている。これにより、例えば、重心誤差に応じた階調値すべてをドットが発生する画素の周辺から移動させることができ、粒状性のない出力画像を得ることができる。
【００１５】
さらに、本発明は上記画像処理装置において、上記画素群生成手段は画素を選択するごとに第１の基準点を更新させる、ことを特徴としている。これにより、例えば、画素選択のための基準点が固定でないので、セルが歪んだ形で成長することはなく、粒状性の優れたドットを打つことができる。
【００１６】
さらに、本発明は上記画像処理装置において、上記第１の基準点は画素群を構成する各画素の座標位置と当該画素の階調画像データとから決定した重心位置である、ことを特徴としている。これにより、例えば、これまで構成したセルの重心位置に最も近い画素からセルに取り込むべき画素を選択しているので、セルが円状に成長し易く、粒状性の優れたドットを打つことができる。
【００１７】
さらに、本発明は上記画像処理装置において、上記第２の基準点は画素の座標位置と当該画素の階調画像データとから演算した画素群の重心位置である、ことを特徴としている。これにより、例えば、円状に成長したセルの重心位置にドットを打つことができるので、隣り合うドットどうしが引っ付くことがなく、粒状性の優れた出力画像を得ることができる。
【００１８】
さらに、本発明は上記画像処理装置において、上記第１の基準点は固定点である、ことを特徴としている。これにより、複雑な演算を行うことなく処理を速くすることができる。
【００１９】
また、上記目的を達成するために本発明は、１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理装置であって、セルの重心位置とドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる制御手段、を備えることを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【００２０】
さらに、上記目的を達成するために本発明は、画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成工程と、画素群生成工程で生成した画素群の第２の基準点を決定する画素群基準点決定工程と、画素群基準点決定工程で決定した第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与工程と、量子化画像データに対応するドットの重心点と第２の基準点との誤差に応じたデータ分だけ第１の画素の階調画像データを第２の画素に移動させる階調画像データ移動工程と、を備えた画像処理方法であることを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【００２１】
さらに、上記目的を達成するために本発明は、１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理方法であって、セルの重心位置とドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる工程、を備えることを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【００２２】
さらに、上記目的を達成するために本発明は、画素選択のための第１の基準点に基づいて、画素ごとの階調画像データの総和が閾値以上となるまで画素を選択して画素群を構成する画素群生成処理と、画素群生成処理で生成した画素群の第２の基準点を決定する画素群基準点決定処理と、画素群基準点決定処理で決定した第２の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、量子化画像データに対応するドットの重心点と第２の基準点との誤差に応じたデータ分だけ第１の画素の階調画像データを第２の画素に移動させる階調画像データ移動処理と、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【００２３】
さらに、上記目的を達成するために本発明は、１又は複数の画素からなるセルを構成し、当該セルの重心位置に位置する画素にドットを発生させる画像処理をコンピュータに実行させるためのプログラムであって、セルの重心位置とドットの重心位置との重心誤差分だけ第１の画素の階調値を第２の画素に移動させる処理、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、中濃度領域に対する階調画像データに対しても粒状性を改善した画質劣化のない出力画像を得ることができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して本発明を実施するための最良の形態を説明する。図１は、本発明が適用されるシステム全体の構成を示す図である。全体としてホストコンピュータ１０と、画像処理装置２０とから構成される。
【００２５】
ホストコンピュータ１０は、アプリケーション部１１とラスタライズ部１２とから構成される。アプリケーション部１１では、文字データ、図形データ、ビットマップデータ等の印刷対象のデータが生成される。例えば、ワードプロセッサや図形ツールなどのアプリケーションプログラムを使用してキーボード等の操作により文字データや図形データなどが生成される。生成されたこれらのデータは、ラスタライズ部１２へ出力される。
【００２６】
ラスタライズ部１２では、アプリケーション部１１から出力された印刷対象のデータを画素ごと（又はドットごと）に８ビットの階調データに変換する。したがって、各画素０から２５５までの階調値（レベル値）を有することになる。ラスタライズ部１２における階調データの生成は、実際にはホストコンピュータ１０に実装されたドライバによって処理が行われる。ラスタライズ部１２から出力される階調データは、画像処理装置２０に出力される。なお、本実施例においてこの階調データはモノクロデータとして以下説明する。
【００２７】
画像処理装置２０は、全体として画像処理部２１と印刷エンジン２２とから構成される。画像処理部２１は、ハーフトーン処理部２１１と、パルス幅変換部２１２とから構成される。ハーフトーン処理部２１１は、ホストコンピュータ１０から出力された階調画像データが入力され、２値以上の多値の値（レベル値）に変換し、量子化画像データを出力する。ハーフトーン処理としては、本実施例では複数の画素からなるセルを構成してその重心点に位置（以下、重心位置）する画素にドットを生成させる、重心を利用した処理（Circular Cell法、以下ＣＣ法）を行う。本処理の具体的な内容は後述する。
【００２８】
パルス幅変調部２１２は、ハーフトーン処理部２１１から出力された量子化画像データが入力され、この量子化データに対してドットごとにレーザ駆動パルス有り又は無し等の駆動データを生成する。生成した駆動データは、印刷エンジン２２に出力される。
【００２９】
印刷エンジン２２は、レーザドライバ２２１とレーザーダイオード（ＬＤ）２２２とから構成される。レーザドライバ２２１は、パルス幅変調部２１２からの駆動データが入力され、その駆動データをもとに駆動パルスあり又はなし等を示す制御データを生成し、レーザーダイオード２２２に出力する。レーザーダイオード２２２は、レーザドライバ２２１から出力された制御データに基づいて駆動され、さらに図示しない感光ドラムや転写ベルトが駆動されて、実際に印刷用紙等の記録媒体にホストコンピュータ１０からのデータが印刷されることになる。本実施例では画像処理装置２０はプリンタとして機能する。
【００３０】
次に図２を参照して、画像処理装置２０の具体的構成について説明する。ここで、図１の画像処理装置２０のうち、ハーフトーン処理部２１１及びパルス幅変調部２１２は、図２におけるＣＰＵ２４、ＲＯＭ２５、及びＲＡＭ２６に対応する。
【００３１】
画像処理装置２０は、全体として、入力インターフェース（Ｉ／Ｆ）２３、ＣＰＵ２４、ＲＯＭ２５、ＲＡＭ２６、印刷エンジン２２とから構成され、バス２７を介して互いに接続されている。入力Ｉ／Ｆ２３は、ホストコンピュータ１０とも接続され、ホストコンピュータ１０と画像処理装置２０とのインターフェースの役割を果たす。入力Ｉ／Ｆ２３には、所定の伝送方式により伝送された、ホストコンピュータ１０からの階調画像データが入力され、画像処理装置２０で処理できるデータに変換する。変換された階調画像データは、一旦ＲＡＭ２６に格納される。
【００３２】
ＣＰＵ２４は、ＲＯＭ２５に格納されたプログラムを読み出して、本発明に係るＣＣ法によるハーフトーン処理を含む各種処理を行う。その詳細は後述する。ＲＡＭ２６は、ＣＰＵ２４で実行される各処理のワーキングメモリとして役割を果たし、処理中や処理後の各種データが格納される。また、印刷エンジン２２のレーザドライバ２２１を駆動させるための駆動データも格納される。
【００３３】
印刷エンジン２２は、図１の印刷エンジン２２と同様の構成で、ＲＡＭ２６に格納された駆動データがＣＰＵ２４の制御により入力されて、上述した印刷処理が行われることになる。
【００３４】
次に、このハーフトーン処理部２１１における処理について以下、具体的に説明するが、その前にＣＣ法についての概要を簡単に説明する。ＣＣ法によるハーフトーン処理は、まず初期画素を選択し、所定の閾値に達するまで初期画素周辺の未処理画素を選択して、複数画素からなるセル（１つ又は複数の画素から構成される画素群）を構成する。セルを構成する未処理画素選択の際、それまで構成したセルの重心位置（画素選択のための基準点）から最も近い画素を選択する。そして、閾値に達するとそのセルの重心位置に位置する画素にドット生成を示す値（例えば“２５５”）を割り当て、それ以外の画素はドットの生成を行わないことを示す値（例えば“０”）を割り当てる。ＣＣ法は、以上の処理を入力画像の全てのデータに対して行うことで、量子化された画像データを得るのである。
【００３５】
上述した特開平１１−２７５２８では、セルに取り込むべき未処理画素の選択にテーブルを利用して予め決められた位置の画素を選択するようにしている。しかし、かかる処理では、画素選択のための基準点に対して左上の画素は既に処理済みの画素である可能性が高く、セルが歪んだ形になりその中心にドットを発生させても隣り合うセル間でドットが近接する等、粒状的なドットが発生する。一方、ＣＣ法は重心位置を利用してセルに取り込むべき未処理画素を選択するようにしているため、特開平１１−２７５２８と比較して、セルが円状に成長し易く、ドット間距離を一定に保つことができ、ドットの分散性を向上させて視覚的に快適な印刷出力を得ることができるのである。
【００３６】
また、入力階調値と、所定のサイズからなる閾値マトリックス（変換テーブル）とを比較してドットを生成させるようにした、いわゆる網点処理によるハーフトーン処理も従来から知られている。しかし、かかる網点処理では網点（ドット）位置が固定されているため、解像性が網点周期程度に劣化し、例えば文字がギザつくジャギーが発生したり、小さく薄い文字が読みにくくなる等の問題があった。一方、ＣＣ法では重心位置にドットが発生して網点が形成されることになるので、細線やエッジの再現性が向上してジャギーが発生せず、小さく薄い文字が読み易くなり、高解像度の網点画像を生成する。すなわち、ＣＣ法は従来の網点処理と比較して解像度の高い出力画像を得ることができる。また、従来の網点処理の場合、大きい閾値によって入力階調値が切り捨てられ細い線が再現されなかったり、或いはその逆で入力階調値がドット生成を示す“２５５”に切り上げられ太線に変換されたり、入力階調値と出力階調値との不一致の問題があった。しかし、ＣＣ法ではセルに含まれる階調値の合計と同じ階調値を有する網点が生成されることになり、入力画像の階調値に忠実な出力を得ることができる。なお、以上の議論に鑑みて、本発明が適用されるのは図１に示す画像処理装置２０のみならず、同じ機能を有する網点画像生成装置に適用しても全く同様の効果を奏することが言える。
【００３７】
以下、本発明に係るＣＣ法によるハーフトーン処理の詳細について図面を参照しながら説明する。図３はその処理の動作を示すフローチャートである。まず、ＣＰＵ２４は本処理を実行するためのプログラムをＲＯＭ２５から読み出すことによって、処理を開始する（ステップＳ１０）。
【００３８】
ホストコンピュータ１０から出力された入力階調データはＲＡＭ２６に格納されているものとする。その例を図９（Ａ）に示す。この図に示すようにＲＡＭ２６には、入力階調データを格納するための入力バッファ領域２６２と、量子化データを格納するための出力バッファ領域２６４とを有する。ＣＰＵ２４の制御により各データが各領域２６２、２６４に格納される。
【００３９】
入力バッファ領域２６２において各座標位置は、全体画像の画素位置に対応するものである。例えば、（０，０）の座標位置は、全体画像の（０，０）に位置する画素に対応する。また、各座標位置に格納された値は当該画素の入力階調値を示す。なお、図９（Ａ）に示す例は４行３列の構成であるが、これは説明を容易にするためであって、例えば１ページ（１フレーム）分の画像を格納できる構成であってもよいし、この図より少ない行と列の構成であってもよい。また、出力バッファ領域２６４の構成は入力バッファ領域２６２と同様であり、各座標位置に格納される値はドット生成の有無を示す値（本実施例ではドットの生成を示す“２５５”とドットを生成しない“０”）である。ここで、図面上矢印Ａは主走査方向（レーザビームの走査方向）、矢印Ｂは副走査方向（紙送りの方向）を示す。出力バッファ２６４の方向も同様である。
【００４０】
図３に戻り、次いでＣＰＵ２４は、初期画素を決定し、基準点を初期画素の座標に設定する（ステップＳ１１）。初期画素とは、セルに取り込む最初の画素のことで、図９（Ａ）の例では、図面上最も左側の最も上に位置する未処理画素を初期画素としている。また、基準点とはセルに取り込むべき画素を選択するための基準点のことで、本実施例ではセルの重心位置である。重心位置の演算は、以下の数式を用いる。
[数１]
Ｘ重心＝｛｛（セルの重心のｘ座標）×（セルの階調値の合計）｝
＋｛（選択した未処理画素のｘ座標）×（選択した未処理画素の階調値）｝｝
／（セルの階調値の合計＋選択した未処理画素の階調値）
Ｙ重心＝｛｛（セルの重心のｙ座標）×（セルの階調値の合計）｝
＋｛（選択した未処理画素のｙ座標）×（選択した未処理画素の階調値）｝｝
／（セルの階調値の合計＋選択した未処理画素の階調値）
（Ｘ重心、Ｙ重心はセルの重心位置の座標、ｘ座標は主走査方向の座標成分、ｙ座標は副走査方向の座標成分）
この演算式はＲＯＭ２５に格納され、重心位置の演算のときにＣＰＵ２４がＲＯＭ２５から読み出して演算を行うことになる。ちなみに、初期画素の場合は、［数１］においてセルの重心のｘ座標、ｙ座標、及びセルの階調値の合計はともに０として演算される。なお、 “セルの重心”とあるのは、これまで構成したセルの重心のことである。初期画素の場合の重心を演算すると、（Ｘ重心，Ｙ重心）＝（０，０）となる。
【００４１】
図９（Ｂ）には、（０，０）の画素が初期画素としてセル２６２Ａ内に取り込まれた例を示し、さらに基準点である重心位置２６５も示す。なお、画素が選択されると入力バッファ２６２にはＣＰＵ２４によって“−１”が格納され、以後未処理画素として選択されないようになっている。
【００４２】
次いでＣＰＵ２４は、決定した画素が低濃度か否か判断する（ステップＳ１２）。高濃度の成分に対して、低濃度と同様に処理を行うと、すぐに閾値に達してしまいセル２６２Ａの大きさを確保することができない。そこで、低濃度成分の画素と高濃度成分の画素とを分けて処理を進めるためにかかる判断を行う。この判断は、ＣＰＵ２４がＲＯＭ２５内に格納された所定値（本実施例では“１２７”）を読み出し、選択画素の階調値がその値より大きいか小さいかで判断する。図９（Ｂ）の例では、（０，０）に位置する画素の階調値は“１００”で“１２７”より少ないので低濃度と判断される（“ＹＥＳ”）。
【００４３】
低濃度のとき（ステップＳ１２で“ＹＥＳ”のとき）、次いでＣＰＵ２４はセル２６２Ａを構成するために未処理画素を選択する（ステップＳ１３）。未処理画素の選択は、これまで構成したセル２６２Ａ内の基準点から最も近い未処理画素を選択する。セル２６２Ａを円状に成長させてドット間距離を保つためである。
【００４４】
図９（Ｂ）の例でこの重心位置２６５から最も近い未処理画素として、（１，０）と（０，１）の２つの画素が存在する。このように選択すべき未処理画素が複数存在したとき、ランダムにいずれか１つの画素を選択する。固定順（例えば次に選択すべき未処理画素は右隣の画素、次に選択すべき画素はその画素の下にある画素など）に選択すると、最終的に構成されるセル２６２Ａが規則的に並びすぎることによって、印刷出力のある領域でドットが周期的に発生する周期パターンが生じ、快適な印刷出力を得ることができないからである。図９（Ｂ）の例では、ＣＰＵ２４は、ランダムに（１，０）に位置する画素を選択する（図１０（Ａ）参照）。
【００４５】
図３に戻り、次いでＣＰＵ２４は選択した未処理画素を含めたセル２６２Ａの階調値の合計が閾値を超えるか否か判断する（ステップＳ１４）。本実施例では、この閾値を“２５５”とする。ドット発生を示す値と同じ値である。図１０（Ａ）の例では、画素（０，０）、（１，０）の階調値の合計は“２００”で閾値以下なので“ＮＯ”が選択される。
【００４６】
閾値を超えないと（ステップＳ１４で“ＮＯ”のとき）、次いでＣＰＵ２４は未処理画素を含めたセル２６２Ａ内の基準点を演算する（ステップＳ１５）。すなわち、上述した［数１］を用いて重心位置の演算を行う。図１０（Ａ）に例では、２つの画素（（０，０）と（１，０））から構成されたセル２６２Ａの重心位置２６５は、（Ｘ重心，Ｙ重心）＝（１，０）となる（図１０（Ａ）参照）。
【００４７】
次いで、ＣＰＵ２４はセル２６２Ａの階調値の合計を演算する（ステップＳ１６）。図１０（Ａ）の例では、“２００”となる。そして、その値が閾値である“２５５”と等しいか否かを判断する（ステップＳ１７）。等しくないと（“ＮＯ”のとき）、再び未処理画素を選択し（ステップＳ１３）、閾値と等しいか（ステップＳ１７で“ＹＥＳ”）、超えるまで（ステップＳ１４で“ＹＥＳ”）上述の処理を繰り返してセル２６２Ａを構成する画素の選択を行う。
【００４８】
図１０（Ａ）の例で処理を続けると、再び未処理画素の選択を行う（ステップＳ１３）。ここではランダムに（１，１）に位置する画素を選択する（図１０（Ｂ）参照）。そして、この画素を含めたセル２６２Ａの階調値の合計は“３００”となり、閾値を超えるので（ステップＳ１４で“ＹＥＳ”）、ＣＰＵ２４は閾値を超えた場合の階調値演算処理を行う（ステップＳ２４）。
【００４９】
図５に、かかる処理のフローチャートを示す。まず、ＣＰＵ２４は閾値から濃度の合計（階調値の合計）を減算する（ステップＳ２４１）。図１０（Ｂ）の例では、閾値“２５５”から濃度の合計“２００”（最後に選択した未処理画素を含めた階調値の合計ではなくステップＳ１６で演算した階調値の合計）を減算すると“５５”を得る。そして、最後に選択した未処理画素の階調値がこの減算値を有するものとして基準点、すなわち重心位置２６５の演算を行う（ステップＳ２４２）。重心位置２６５の演算は、以下の数式を用いる。
【００５０】
[数２]
Ｘ重心＝｛｛（セルの重心のｘ座標）×（セルの階調値の合計）｝
＋｛（選択した未処理画素のｘ座標）×（閾値までに必要な階調値）｝｝
／（セルの階調値の合計＋閾値までに必要な階調値）
Ｙ重心＝｛｛（セルの重心のｙ座標）×（セルの階調値の合計）｝
＋｛（選択した未処理画素のｙ座標）×（閾値までに必要な階調値）｝｝
／（セルの階調値の合計＋閾値までに必要な階調値）
（Ｘ重心、Ｙ重心はセルの重心位置の座標）
［数１］との違いは、最後に選択した未処理画素の階調値をそのまま用いるのではなく、ステップＳ２４１で減算した値（＝“閾値までに必要な階調値”）を用いる点が異なる。図１０（Ｂ）の例で［数２］を用いて重心位置２６５を演算すると、（Ｘ重心，Ｙ重心）≒（０．６１，０．２２）を得る。そして、閾値を超えた場合の階調値演算処理（ステップＳ２４）が終了して、処理は図４のステップＳ２５に移行する。
【００５１】
ステップＳ２５においてＣＰＵ２４は、重心位置２６５に黒ドットを生成し、残った濃度（階調値）を未処理画素に戻す。図１０（Ｂ）の例では、重心位置（０．６１，０．２２）に位置する画素は（１，０）に位置する画素である。よって出力バッファ領域２６４の当該画素位置に黒ドット生成を示す“２５５”を格納する（図１０（Ｂ）の出力バッファ２６４参照）。そして、（１，１）の画素に対して“５５”の階調値を有するものとして上述の処理を行ったが実際には当該画素の階調値は“１００”であり、その余りの階調値“４５”を（１，０）に戻す（図１０（Ｂ）の入力バッファ２６２参照）。
【００５２】
この余った濃度に関し、当該画素以外の画素であって、セル２６２Ａを構成する画素以外の画素に戻すことも考えられるが、それでは、戻し値が与えられた画素は本来の階調値でない値を有することになり、入力階調値に忠実なドットを生成させることができない。よって、最後に選択した画素に戻し値を与える。その後、処理は重心補正処理（ステップＳ２０）に移行する。
【００５３】
一方、閾値と等しいとき（図３のステップＳ１７で“ＹＥＳ”のとき）は、閾値分だけ画素を選択したことになるので、セル２６２Ａを構成するための画素選択を終了し、次いで重心位置２６５の演算（図４のステップＳ１８）、演算した重心位置２６５に位置する画素に黒ドット生成を示す“２５５”を出力バッファ２６４に格納する（ステップＳ１９）。重心位置の演算は上述した［数１］を用いる。そして、重心補正処理（ステップＳ２０）に移行する。
【００５４】
次に、ＣＰＵ２４は重心補正処理を行うがその処理を説明する前に、ＣＣ法による処理の問題点について考察する。上述した例でも理解されるように、入力階調値が中間階調の値（中濃度）を有するとき、少ない画素数ですぐに閾値に達してしまう。すなわち、中濃度領域の入力画像に対してＣＣ法による処理を行うと、セル２６２Ａの大きさを保てない。これでは、セル２６２Ａ内でドットを発生させると隣のセル２６２Ａで発生したドットと引っ付いて発生する可能性が高くなる。しかも、ランダムに引っ付いたりそうでなかったりするため、出力画像全体で見たときそのドットがムラとなって現れ、粒状的なドットを発生させることになる。
【００５５】
また、セル２６２Ａが円状になる程度に大きさが保たれていればセル２６２Ａの重心位置２６５そのものにドットの重心位置が位置するはずである。しかし、中濃度の領域ではセル２６２Ａの大きさが確保できないため、セル２６２Ａが円状に成長せず、セル２６２Ａの重心位置２６５とドットの重心位置とがずれてしまう。図１１（Ａ）は図１０（Ｂ）に示す出力バッファ２６４を拡大したものである。本来、３つの画素で構成したセル２６２Ａでドットを打つにはセル２６２Ａの重心位置２６５を中心にしたドット２６５Ａが打たれるべきである。しかし、実際にはドットの重心位置２６６を中心にしたドット２６６Ａが打たれてしまっている。
【００５６】
しかも、その重心位置のずれの方向（図１１（Ａ）では矢印で示す）は一定の方向にならずランダムに発生する。そのため出力画像は、例えばある領域では左方向に、またある領域では右方向にずれが生じ、ドットの周期性が崩れたものとなる。この周期性の破綻により、いわゆる低周波ノイズが発生し、粒状性を悪化させた出力画像となってしまう。図１２に低周波ノイズが発生した出力画像の例を示す。
【００５７】
そこで本発明は、中濃度領域で発生する、セル２６２Ａの重心位置２６５とドットの重心位置２６６とのずれに着目し、この位置ずれ（重心誤差）を補正することで粒状性を改善し、画質劣化のない出力画像を得るようにしている。重心誤差の補正は、図１１（Ｂ）に示すようにこの重心誤差分だけ周辺の未処理画素の階調値を移動させることで行う。移動させる方向は、重心誤差の発生する方向（図中、矢印Ｋで示す）と反対方向（図中、矢印Ｌで示す）に移動させる。これにより、注目セルの重心位置２６５とドットの重心位置２６６とのずれを補正する方向に、周辺の階調値が移動するため、注目セルで発生した重心誤差を相殺する最適な位置に周辺のドットが打たれやすくなる。すなわち、周辺ドットも含めた複数のドットによって、入力画像の階調値の重心が保存された、忠実かつ粒状性に優れた出力画像が得られるのである。
【００５８】
次にこの重心誤差の補正処理の詳細について、図６のフローチャート、及び図１３乃至図１６の具体例で説明する。
【００５９】
図６に示すように重心補正処理（ステップＳ２０）に移行すると、まずＣＰＵ２４は画素群（セル）の重心とドット重心の誤差を演算する（ステップＳ２０１）。重心の誤差は、ドットの重心位置２６６の座標と、セル２６２Ａの重心位置２６５の座標との差から演算する。図１０（Ｂ）の例では、セル２６２Ａの重心位置２６５は（０．６１，０．２２）で、ドットの重心位置２６６は（１，０）である。よって重心誤差は（０．３９，−０．２２）となる。
【００６０】
次いで、ＣＰＵ２４はドット出力画素に最も近い未処理画素を探索する（ステップＳ２０２）。階調値を移動させるときの移動元の画素を探索するためである。複数の未処理画素が存在するときはすべて選択するようにしてもよいし、いずれか１つ選択するようにしてもよい。図１３（Ａ）には、ドット出力画素（１，０）に最も近い未処理画素として（２，０）に位置する画素２６２Ｂが選択された例を示す（図中、移動元画素２６２Ｂを斜線で示す）。
【００６１】
次いで、ＣＰＵ２４は探索した画素２６２Ｂが未処理画素であるか否か判断する（ステップＳ２０３）。未処理画素か否かは入力バッファ２６２に“−１”が格納されたか否かで判断できる。図１３（Ａ）の例では選択した（２，０）の画素２６２Ｂは未処理画素のため（“−１”が格納されていないため）、本ステップで“ＹＥＳ”が選択される。一方、未処理画素がないと（本ステップで“ＮＯ”のとき）、階調値を移動できる画素２６２Ｂが存在しないことになるため重心演算処理自体が終了して、図４のステップＳ２１に移行する。
【００６２】
未処理画素があるとき（ステップＳ２０３で“ＹＥＳ”のとき）、重心誤差を補正できる階調値移動先画素を探索する（ステップＳ２０４）。すなわち、階調値を移動する移動先の画素を探索する。移動元画素２６２Ｂに隣接する画素であって、セルの重心位置２６５からドットの重心位置２６６への方向とは反対方向（以下、「重心誤差とは反対方向」）に位置する画素を探索する。図１３（Ａ）の例では、重心誤差は（０．３９，−０．２２）であるから、重心誤差と反対方向、すなわち移動元の画素（２，０）に対し主走査方向とは逆方向で副走査方向に位置する画素（１，１）が移動先の画素２６２Ｃとして探索される（図１３（Ｂ）参照、図中、移動先画素２６２Ｃを網点状で示す）。
【００６３】
次いで、ＣＰＵ２４は移動先画素２６２Ｃが存在するか否か判断する（ステップＳ２０５）。画像の端部では、探索した移動先画素２６２Ｃが存在しない場合もあるからである。図１３（Ｂ）の例では移動先画素２６２Ｃは存在するので、本ステップで“ＹＥＳ”が選択される。一方、移動先画素２６２Ｃが存在しないと（本ステップで“ＮＯ”のとき）、別の移動元の画素２６２Ｂと移動先の画素２６２Ｃとを探索すべくステップＳ２０２に移行し、上述の処理を繰り返す。
【００６４】
移動先画素２６２Ｃが存在するとき（ステップＳ２０５で“ＹＥＳ”のとき）、次いでＣＰＵ２４は補正用階調値を演算する（ステップＳ２０６）。すなわち、実際に移動すべき階調値を演算する。演算は以下の数式を用いる。
【００６５】
[数３]
補正用階調値＝重心誤差×ドットの重み
ここで、“ドットの重み”とは黒ドット生成を示す値のことである。本実施例では“２５５”がドットの重みとなる。図１３（Ｂ）に示す例では、補正用階調値は（０．３９，−０．２２）×２５５＝（９９．４５，−５６．１）となる。なお、この［数３］はＲＯＭ２５に予め格納され本処理の際にＣＰＵ２４によって読み出されて演算が行われる。
【００６６】
次いで、ＣＰＵ２４は階調値の移動を実行する（ステップＳ２０７）。すなわち、演算した補正階調値を移動元画素２６２Ｂから移動先画素２６２Ｃに移動させる。このとき補正用階調値は２次元座標として表現されるが、まず絶対値の少ない方の成分を用いて階調値を移動させる。図１３（Ｂ）の例では、補正用階調値は（９９．４５，−５６．１）で、少ない方の“５６．１”を移動させる。移動させる方向は、補正用階調値の各値とは逆方向である。すなわち、この例では主走査方向に“−５６．１”、副走査方向に“＋５６．１”である。移動後の階調値は図１４（Ａ）に示す状態となる。
【００６７】
次いで、ＣＰＵ２４は残り補正量から補正済み値を減算する（ステップＳ２０８）。すなわち、補正用階調値から実際に移動させた階調値を減算して残り補正量を求める。図１４（Ａ）の例では、補正用階調値は（９９．４５，−５６．１）、実際に移動させた階調値は“５６．１”であるから減算後の残り補正用階調値、すなわち残り補正量は（４３．３５，０）となる。
【００６８】
次いで、ＣＰＵ２４は残り補正量があるか否か判断する（ステップＳ２０９）。補正用階調値がなくなるまで階調値の移動を行うためである。したがって、残り補正量があれば（本ステップで“ＹＥＳ”のとき）、再び移動元の画素２６２Ｂの探索等を行うべくステップＳ２０２に移行して上述の処理を繰り返す。一方、残り補正量がなくなると階調値の移動がすべて終了したことになり、重心補正処理が終了して、図４のステップＳ２１に移行する。
【００６９】
図１４（Ａ）の例で処理を進めると、残り補正量は（４３．３５，０）で、残り補正量があるため（ステップＳ２０９で“ＹＥＳ”）、再び未処理画素のうちから移動元の画素２６２Ｂの探索を行う（ステップＳ２０２）。ドット出力画素に最も近い画素は（１，１）で、これを移動元画素２６２Ｂとして選択する（図１４（Ｂ）参照）。当該画素は未処理画素であり（ステップＳ２０３で“ＹＥＳ”）、次に移動先画素２６２Ｃを探索する（ステップＳ２０４）。探索は、上述したように移動元画素２６２Ｂに対して、重心誤差の方向とは反対方向に位置する画素を探索する。図１４（Ｂ）の例では、移動先画素２６２Ｃとして（０，１）の画素を選択する（図１４（Ｂ）参照）。移動先画素２６２Ｃが存在するので（ステップＳ２０５で“ＹＥＳ”）、次いで補正用階調値を演算する（ステップＳ２０６）。ここでは、残り補正量を用いる。そして、階調値を移動させる（ステップＳ２０７）。すなわち、移動元画素（１，１）から移動先画素（０，１）に“４３．３５”の階調値を移動させる。移動後の入力階調値の分布は図１５（Ａ）に示す状態となる。そして、残り補正量から補正済み値“４３．３５”を減算する（ステップＳ２０８）と、残り補正量は（０，０）となり、残り補正量がなくなるため（ステップＳ２０９で“ＮＯ”）、一連の重心補正処理（ステップＳ２０）が終了する。
【００７０】
なお、この階調値の移動であるが、ステップＳ２０２で移動元の画素２６２Ｂを複数探索したとき、ステップＳ２０４で移動先の画素２６２Ｃも複数存在することになるが、かかる場合に探索したすべての画素に対して均等に補正用階調値を移動させるようにしてもよい。例えば、“１５０”の階調値を移動させる場合に、移動先画素２６２Ｃが２つあれば、各画素に対し“７５”移動させ、移動先画素２６２Ｃが３つあれば、各画素“５０”移動させるようにすればよい。
【００７１】
一連の重心補正処理（ステップＳ２０）が終了すると、図４に戻り、次いでＣＰＵ２４は未処理画素があるか否か判断する（ステップＳ２１）。未処理画素があれば（ステップＳ２１で“ＹＥＳ”のとき）、再びセル２６２Ａを構成する画素を探索すべく、ステップＳ１１に移行し上述の処理を繰り返す。図１５（Ａ）の例では、（２，０）に位置する画素等が未処理画素である（“−１”が格納されていない）。よって処理は、再びステップＳ１１に移行する。ステップＳ１１で未処理画素の探索を行うと、図１５（Ｂ）に示すように、（２，０）に位置する画素を選択する。そして、上述の処理を行う。また、未処理画素がないと（ステップＳ２１で“ＮＯ”のとき）、すべての画素に対する処理を終了したことになるので一連の処理が終了する（ステップＳ２２）。
【００７２】
一方、図３のステップＳ１２で、初期画素が低濃度でないとき、すなわち、初期画素の階調値が“１２７”以上のとき（“ＮＯ”のとき）、白濃度処理（ステップＳ２７）に移行する。白濃度処理では、本来の入力階調値を、黒ドット生成を示す値から減算したものを当該画素の階調値として処理を進めるとともに、重心位置２６５に白ドット、それ以外のセル２６２Ａ内の画素には黒ドットを生成させるように処理を行う。
【００７３】
白濃度処理の動作を示すフローチャートを図７乃至図８に示す。ほぼ、低濃度のときの処理（図３のステップＳ１３からステップＳ２０、Ｓ２４、Ｓ２５）と同様である。セル２６２Ａを構成する画素が閾値と等しいか（ステップＳ２７７で“ＹＥＳ”）、超える（ステップＳ２７４で“ＹＥＳ”）まで重心位置（基準点）２６５から最も近い画素を選択し続ける。複数あればランダムに選択する。
【００７４】
そして、重心補正処理（図８のステップＳ２８０、その詳細は図６参照）も同様で、重心誤差を演算し（ステップＳ２０１）、ドット出力画素に最も近い画素を移動元画素２６２Ｂとし（ステップＳ２０２）、重心誤差の方向とは逆方向に位置する画素を移動先画素２６２Ｃとして選択する（ステップＳ２０４）。そして、補正用階調値を演算し（ステップＳ２０６、演算式は上述した［数３］）、実際に移動元画素２６２Ｂから移動先画素２６２Ｃに補正用階調値を移動させる。これを残り補正量がなくなるまで（ステップＳ２０９で“ＮＯ”のとき）、繰り返す。これにより、入力階調値が“１２７”以上の中濃度領域であっても、まわりの未処理画素の階調値の移動によって、周辺ドットも含めた複数のドットによって、入力画像の階調値の重心が保存された、忠実かつ粒状性の優れた出力画像を得ることができる。
【００７５】
この白濃度処理で低濃度の処理のときとの違いは、上述したように選択した未処理画素の階調値をそのまま使用するのではなく、入力階調値の最大値（ここでは“２５５”）からの差を演算して（ステップＳ２７２）、その値が当該画素の階調値として重心等の演算を行うようにする。例えば、図１６（Ａ）の例では未処理画素として選択した（０，０）の画素は“１５５”の階調値を有するが、最大値“２５５”から減算すると“１００”を得る。この値が当該画素の階調値としてセルの構成等の処理を行う。そして、この処理を各未処理画素選択のたびに行う。この場合、結局図９に示す入力階調値と同じ値を有するものとして処理が行われることになる。
【００７６】
また、低濃度の処理のときとの違いは、未処理画素を選択すると、対応する画素位置に黒ドットを生成することを示す値（ここでは“２５５”）を格納する（ステップＳ２７３）。図１６（Ｂ）に示すように（０，０）の画素を未処理画素として選択したとき、出力バッファ領域２６４の対応する（０，０）に“２５５”をＣＰＵ２４の制御によって格納されることになる。
【００７７】
さらに、セル２６２Ａを構成する画素の階調値の合計が閾値と等しい（ステップＳ２７７で“ＹＥＳ”）か、超える（ステップＳ２７４で“ＹＥＳ”）と重心位置２６５にドットを生成することになるが、低濃度のときとは異なり、ドットを生成しないことを示す値（ここでも“０”）、すなわち白ドット生成を示す値を重心位置２６５の存在する画素位置に割り当てるのである（図１７（Ａ）参照）。
【００７８】
さらに、階調値の合計が閾値を超えた場合に、低濃度のときは最後に選択した画素の階調値が丁度閾値と等しくなる値にし、残りの階調値を当該画素に戻していたが、白濃度処理も同様に残りの階調値を当該画素に戻す処理が行われる（図８のステップＳ２８３）。ただし、ステップＳ２７２で階調値の減算を行ったので、本来の階調値に直して戻すことになる。例えば、図１７（Ａ）に示すように最後に（１，０）を選択して当該画素の階調値を“５５”として演算し、残った階調値は“４５”で、この値を本来の階調値“１５５”に戻し（加算し）“２００”を得る（同図の入力バッファ領域２６２参照）。
【００７９】
ちなみに、この図１７（Ａ）の例で重心補正処理（ステップＳ２８０）を行うと、図１７（Ｂ）に示す状態となる。この場合も、（２，０）の階調値を重心誤差分だけ、まず（１，１）の画素に移動させ、次いで（１，１）の画素から（０，１）の画素に階調値を移動させることになる。処理自体は、図１３乃至図１５（Ａ）に示す例と同様である。
【００８０】
そして、白濃度処理（ステップＳ２０）における重心補正処理（ステップＳ２８０）が終了すると、再び図４のステップＳ２１に移行して上述の処理を繰り返すことになる。
【００８１】
その後、出力バッファ２６４に格納された各値が量子化データとしてパルス幅変調部２１２に出力され、“２５５”がドットオン、“０”がドットオフとして制御され、印刷用紙などの記録媒体に画像が形成される。なお、パルス幅変調部２１２において出力されるレーザ駆動用のパルス信号のタイミングとパルス幅を制御することでドット内の任意の位置に任意の面積の現像領域を確保することができる。すなわち、セル２６２Ａを構成するための閾値として“１２８”としたとき、１つのドット領域のうち半分の領域を現像領域にすることができ、また閾値を“６４”としたとき１／４の領域を現像領域とすることも可能である。したがって、必ずしもドット生成を示す値（＝セル２６２Ａを構成するための閾値）を“２５５”とする必要はなく任意の値でもよく、また量子化データも“０”と“２５５”の２値以外にも３値、４値等任意の値でもよい。
【００８２】
以上、ドットの重心位置とセルの重心位置の位置ずれを補正することで出力画像の粒状性を改善した例について説明した。図１８に本発明による出力画像の例を示す。低周波ノイズが発生している図１２の例と比較して、粒状性が改善されているのが理解される。
【００８３】
次に、階調値の移動によって粒状性がどのように改善できたかについて説明する。
【００８４】
例えば、図１９（Ａ）に示す入力バッファ２６２に入力階調値が格納されて例で説明する。このとき、図に示すように３つの画素（（２，２）、（２，３）、（３，２）に位置する画素））によりセル２６２Ａが構成され、この重心位置２６５に位置する画素（２，２）に他の２つの画素の階調値“１０”をそれぞれ集めた値“３０”に対応するドットを生成させることを考える。また、それ以外の画素位置には入力階調値に対応するドットを生成させるようにする。かかる状況で評価関数によって出力画像の粒状度を測定すると“１．０”となった。
【００８５】
一方、図１９（Ｂ）に示すようにセル２６２Ａ内のドットが発生する画素（２，２）に最も近い画素として、２つの移動元画素２６２Ｂ（（２，１）と（１，２）の画素）から階調値“５”ずつ、２つの移動先画素２６２Ｃ（（３，２）、（２，３）の画素）に移動させる。このとき、評価関数による粒状度を測定すると、“０．２６”となった。図１９（Ａ）の場合と比較して粒状度が低くなり、出力画像の粒状性は改善されることが言える。
【００８６】
しかしながら、実際の処理において、セル２６２Ａ内のドット出力画素に対して図面上、上の画素と左の画素に関してすでに処理済みの場合が多いので現実的には移動元、移動先の画素２６２Ｂ、２６２Ｃが図１９（Ｂ）のように選択されることは少ない。
【００８７】
そこで、図２０（Ａ）に示すように、ドット出力画素に対して図面上、右斜め下と左斜め下の２つ画素（（１，３）と（３，３））を移動元画素２６２Ｂとして選択して均等に階調値を移動させた。このとき、粒状度は“０．６２”となった。図１９（Ａ）と比較してその粒状度は低くなっているが、図１９（Ｂ）と比較すると粒状度は高くなっている。すなわち、粒状性は図１９（Ａ）と比較して改善されているものの図１９（Ｂ）と比較するとそれほど改善は見られない。
【００８８】
一方、図２０（Ｂ）に示すようにドット出力画素に対して左斜め下に位置する画素から階調値をすべて移動させた。このときの粒状度は“０．４９”となった。図２０（Ａ）と比較して粒状度の値が低くなり、出力画像の粒状性は改善される。
【００８９】
双方を比較すると、図２０（Ａ）では（３，３）の画素から（４，４）の画素に階調値を移動させており、ドット出力画素（２，２）から移動先の画素（４，４）への距離が図２０（Ｂ）と比較してより遠くの画素に移動させている。このことから、図２０（Ａ）の方が図２０（Ｂ）の場合よりも粒状度が悪くなったのは、セル２６２Ａ内のドット出力画素から遠くの画素に階調値を移動させていることが原因と考えられる。したがって、粒状性の優れた出力画像を得るには、ドット出力画素に近い画素間で階調値の移動を行うことが好ましいと言える。
【００９０】
以上説明してきたように、本発明によれは、セルの基準点に最も近い画素から順に閾値になるまで画素を選択してセル内に取り込み、セルの重心位置に位置する画素にドットを生成させるようにしたハーフトーン処理で、ドットの重心位置とセルの重心位置との重心誤差に着目し、ドット出力画素に最も近い未処理画素から重心誤差分だけ階調値を移動させることで、その誤差を補正するようにしたので、中濃度の入力画像に対しても粒状度の優れた画質劣化のない出力画像を得ることができる。また、ハーフトーン処理部２１１は画像処理装置２０内で１つの処理部で構成することができるので、コスト増大を招くことがなく、安価な画像処理装置２０を提供することができる。
【００９１】
上述の処理では、ホストコンピュータ１０からのモノクロデータに対する処理を説明したが、それ以外にも図２１に示すようにカラーデータに対しても同様に処理を行うことができる。この場合に、ラスタライズ部１２からＲＧＢ（レッド、グリーン、ブルー）の画像データが出力され、色変換処理部２１３でＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）のカラーデータに変換した後で、各色ごとに本発明にかかるハーフトーン処理を行う。カラーデータの場合でも粒状性の優れた出力画像が形成される。もちろん、カラーを表現する色成分としてＣ、Ｍ、Ｙ、Ｋの４色以外にもライトシアンやライトマゼンタを含めた６色や、さらにそれ以外の色成分を含めた複数色の場合でも同様の効果を奏する。
【００９２】
また、図２２に示すように、ホストコンピュータ１０で本発明にかかるハーフトーン処理部２１１を備える構成としてもよい。この場合、ハーフトーン処理後の量子化データが画像処理装置２０に出力され、画像処理装置２０では量子化データに対してパルス幅変調部２１２にてレーザ駆動用のパルス信号を形成するようにする。この場合でも上述の例と全く同様の効果を奏することができる。
【００９３】
さらに、画像処理装置２０の例としてプリンタを例にして説明したが、これ以外にも、例えばファクシミリやイメージスキャナ、複写機、ディスプレイ等であっても同様の作用効果を奏する。
【００９４】
さらに、本発明に係るハーフトーン処理部２１１を有する画像処理装置２０に接続されるのは、ホストコンピュータ１０以外にも例えば携帯電話や、デジタルカメラ、ＰＤＡ（Personal Digital Assistance）、その他の情報携帯端末であってもよい。さらには、かかる端末に本発明が適用されるハーフトーン処理部２１１を備えるようにしてもよい。これらの場合でも、上述した効果を得ることができる。
【００９５】
さらに、上述の例ではラスタライズ部１２において画像データを８ビット（２５６階調ｔ）にして処理を行う例を示したが、これ以外にも７ビット（１２８階調）、９ビット（５１２階調）等、任意のビット数の階調データにしても本発明を適用することができ同様の効果を奏する。
【００９６】
さらに、上述したＣＣ法による処理では、セル２６２Ａ内に取り込むべき画素を選択するときにこれまで構成したセル２６２Ａ内の重心位置２６５に最も近い画素から行うようにした。すなわち、画素選択のための基準点は、順次セル２６２Ａ内に画素を取り込むことで更新される。かかる処理以外にも、セル２６２Ａに取り込むべき画素を選択するときに予め決められた順に行うようにしてもよい。つまり、画素選択のための基準点が固定でかつ予め決められた順でセル２６２Ａに取り込む画素を選択するようにしてもよい。例えば、この順番をＲＯＭ２５などのメモリに記憶させて処理の際にＣＰＵ２４によって読み出されてセルを構成するようにする。この場合でも、中濃度領域でセル２６２Ａ内の重心位置２６５とドットの重心位置２６６の位置ずれが発生する可能性が高いので、上述した処理と同様に重心誤差を演算して、階調値の移動により補正することで粒状性の優れた出力画像を得ることができる。
【００９７】
さらに、上述したＣＣ法に処理で画素選択のための基準点として［数１］に示す重心位置として説明したが、それ以外にも、座標位置のみ考慮した中心位置を基準点としてセルを構成するようにしてもよい。この場合でも、中濃度領域での重心誤差を階調値の移動で補正することにより粒状性の優れた出力画像を得ることは言うまでもない。
【００９８】
さらに、上述したＣＣ法による処理では、セル２６２Ａ内に取り込むべき画素を順次選択するようにしたが、セル２６２Ａに取り込むべき画素数と画素位置とを予め決めておいてもよい。例えば、この画素数と画素位置の情報をＲＯＭ２５などのメモリに記憶させて処理の際にＣＰＵ２４によって読み出されてセル２６２Ａを構成するようにする。この場合でも、中濃度領域でセル２６２Ａ内の重心位置２６５とドットの重心位置２６６との位置ずれが発生する可能性が高いので、上述した処理と同様に重心誤差を演算して階調値の移動により補正することで粒状性の優れた出力画像を得ることができる。
【図面の簡単な説明】
【００９９】
【図１】本発明が適用されるシステム全体の構成を示す図である。
【図２】画像処理装置２０の具体的構成を示す図である。
【図３】ＣＣ法による処理の動作を示すフローチャートである。
【図４】ＣＣ法による処理の動作を示すフローチャートである。
【図５】閾値を超えた場合の階調値演算処理の動作を示すフローチャートである。
【図６】重心補正処理の動作を示すフローチャートである。
【図７】白濃度演算処理の動作を示すフローチャートである。
【図８】白濃度演算処理の動作を示すフローチャートである。
【図９】ＲＡＭ２６の内部構成の例を示す図である。
【図１０】ＲＡＭ２６の内部構成の例を示す図である。
【図１１】重心誤差が発生した例と、階調値の移動を示す概念図である。
【図１２】低周波ノイズが発生している出力画像の例である。
【図１３】ＲＡＭ２６の内部構成の例を示す図である。
【図１４】ＲＡＭ２６の内部構成の例を示す図である。
【図１５】ＲＡＭ２６の内部構成の例を示す図である。
【図１６】ＲＡＭ２６の内部構成の例を示す図である。
【図１７】ＲＡＭ２６の内部構成の例を示す図である。
【図１８】ＲＡＭ２６の内部構成の例を示す図である。
【図１９】本発明の処理による出力画像の例を示す図である。
【図２０】階調値の移動による粒状度の変化を説明するための図である。
【図２１】階調値の移動による粒状度の変化を説明するための図である。
【図２２】本発明が適用される他のシステム全体の構成を示す図である。
【符号の説明】
【０１００】
１０  ホストコンピュータ    ２０  画像処理装置    ２１  画像処理部    ２１１  ハーフトーン処理部    ２１２  パルス幅変調部    ２２  印刷エンジン    ２４  ＣＰＵ    ２５  ＲＯＭ    ２６  ＲＡＭ    ２６２  入力バッファ領域    ２６２Ａ  セル    ２６２Ｂ  移動元画素    ２６２Ｃ  移動先画素    ２６４  出力バッファ領域    ２６５  セルの重心位置    ２６６  ドットの重心位置
【図１】
2005341351.tif 000003
【図２】
2005341351.tif 000004
【図３】
2005341351.tif 000005
【図４】
2005341351.tif 000006
【図５】
2005341351.tif 000007
【図６】
2005341351.tif 000008
【図７】
2005341351.tif 000009
【図８】
2005341351.tif 000010
【図９】
2005341351.tif 000011
【図１０】
2005341351.tif 000012
【図１１】
2005341351.tif 000013
【図１２】
2005341351.tif 000014
【図１３】
2005341351.tif 000015
【図１４】
2005341351.tif 000016
【図１５】
2005341351.tif 000017
【図１６】
2005341351.tif 000018
【図１７】
2005341351.tif 000019
【図１８】
2005341351.tif 000020
【図１９】
2005341351.tif 000021
【図２０】
2005341351.tif 000022
【図２１】
2005341351.tif 000023
【図２２】
2005341351.tif 000024