(57)【要約】【課題】  計算量の少ない処理により、粒状性に優れた画像を得ることができる画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体を提供すること。【解決手段】  ハーフトーン処理部２１は、注目セルを設定する注目セル設定部５０と、注目セル内の入力画像データの階調値の総和を演算する階調値総和演算部５１と、注目セルのセル重心位置を演算するセル重心位置演算部５２と、生成するドットのドット重心位置を演算するドット重心位置演算部５３と、セル重心位置とドット重心位置との誤差を演算する重心誤差演算部５４と、誤差により選択した画素に階調値を付与する階調値付与部５５と、を有している。【選択図】      図２
2006340128.tif 000002
【特許請求の範囲】
【請求項１】
入力画像を複数の画素群に分割し、前記画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理装置であって、
前記画素群を構成する前記入力画像の画素についての画素群重心位置を演算する画素群重心位置演算部と、
前記画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算するドット重心位置演算部と、
前記画素群重心位置と前記ドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与部と、を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記ドット重心位置演算部は、前記画素群を構成する画素のうちから階調値を付与する候補として複数の付与候補画素を設定して、前記複数の付与候補画素のうち順次１つの画素に所定の階調値を付与することにより、複数のドット重心位置を演算し、
前記階調値付与部は、前記画素群重心位置と前記複数のドット重心位置との誤差に基づいて前記複数の付与候補画素のうちから選択した画素に、前記所定の階調値を付与することを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において、
前記階調値付与部は、前記画素群重心位置と前記ドット重心位置との誤差が最小となる付与候補画素に、前記所定の階調値を付与することを特徴とする画像処理装置。
【請求項４】
請求項２または３に記載の画像処理装置において、
前記ドット重心位置演算部は、前記画素群に含まれる全画素のうち、前記階調値付与部が付与した出力階調値の累積値が１画素に付与することができる最大の階調値に満たない画素を、前記付与候補画素に設定することを特徴とする画像処理装置。
【請求項５】
入力画像を複数の画素群に分割し、前記画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理方法であって、
前記画素群を構成する前記入力画像の画素についての画素群重心位置を演算する画素群重心位置演算工程と、
前記画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算するドット重心位置演算工程と、
前記画素群重心位置と前記ドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与工程と、を備えることを特徴とする画像処理方法。
【請求項６】
入力画像を複数の画素群に分割し、前記画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理プログラムであって、
前記画素群を構成する前記入力画像の画素についての画素群重心位置を演算し、画素群重心位置の値を記憶部に記憶する画素群重心位置演算工程、
前記画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算し、ドット重心位置の値を記憶部に記憶するドット重心位置演算工程、
前記記憶部から前記画素群重心およびドット重心の値を読み出し、前記画素群重心位置と前記ドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与工程、をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項７】
請求項６に記載の画像処理プログラムを記録した、コンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
プリンタなどの画像処理装置におけるハーフトーン処理に関し、特に、入力画像を分割したセルごとに入力画像の階調値を変換することにより、出力画像を生成する画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
従来、レーザプリンタやインクジェットプリンタなど画像出力装置では、入力画像にディザ法または誤差拡散法などのハーフトーン処理を施すことにより、ドットを生成するための出力画像を生成している。出力画像に従って生成するドットの大きさ・位置を制御することにより、印刷用紙などの記録媒体上に画像を印刷している。
【０００３】
また、ハーフトーン処理としては、入力画像をセルに分割し、セルごとにドットを生成するための階調値を付与することにより出力画像を生成する方法もある（例えば、特許文献１参照）。しかし、階調値を画素単位に付与しているために、付与した階調値の重心位置とセルの重心位置とに誤差が生じてしまう。特に、セル形状に偏りがある場合には、付与した階調値の重心位置とセルの重心位置との誤差がさらに大きくなってしまう。このような誤差がセルごとに積み重なると、セルごとに生成するドット間の距離がばらついてしまうので、出力画像の粒状感が大きくなってしまうことがあった。
【０００４】
そこで、出力画像の粒状性を改善する方法として、特許文献２では、ハーフトーン処理を施した出力画像について、ドットを生成する画素を複数の修正候補の位置に修正して、画像の低周波成分が最も少なくなる修正候補の位置にドットを生成させるように画像を修正している。このようにすれば、画像の低周波成分が少なくなるので、出力画像の粒状性を改善することができる。
【０００５】
【特許文献１】特開平１１−２７５２８号公報
【特許文献２】特開２００２−３６９００５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２に記載の技術では、出力画像の低周波成分を求めるためにフーリエ変換を行う必要があるので、処理に要する計算量が多くなる。さらに、粒状性を改善できる最適な修正位置を見つけるために複数の修正候補ごとにフーリエ変換を行う必要があるので、計算量が膨大な量になってしまうという課題があった。
【０００７】
そこで、本発明は、計算量の少ない処理により、粒状性に優れた画像を得ることができる画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明の画像処理装置は、入力画像を複数の画素群に分割し、画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理装置であって、画素群を構成する入力画像の画素についての画素群重心位置を演算する画素群重心位置演算部と、画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算するドット重心位置演算部と、画素群重心位置とドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与部と、を備えることを特徴とする。
【０００９】
この構成によれば、入力画像を分割した画素群の画素群重心位置と画素群を構成する画素のうち階調値が付与された画素のドット重心位置とを演算し、画素群の重心位置とドット重心位置との誤差に基づいて選択した画素に階調値を付与するので、画素群の重心位置と生成したドット重心位置との誤差を小さくすることができる。したがって、画素群ごとに生成したドット間の距離のばらつきを抑え、粒状性に優れた画像を得ることができる。
【００１０】
また、本発明の画像処理装置では、計算量の多いフーリエ変換を行う必要がなく、特許文献２に記載の技術に比べると計算量が少なくなる。したがって、より高速に処理を行うことができる。
【００１１】
ここで、ドット重心位置演算部は、画素群を構成する画素のうちから階調値を付与する候補として複数の付与候補画素を設定して、複数の付与候補画素のうち順次１つの画素に所定の階調値を付与することにより、複数のドット重心位置を演算し、階調値付与部は、画素群重心位置と複数のドット重心位置との誤差に基づいて複数の付与候補画素のうちから選択した画素に、所定の階調値を付与することが好ましい。
【００１２】
このようにすれば、画素群を構成する画素のうちの複数の付与候補画素について、１つの付与候補画素に所定の階調値を付与したドット重心位置を、複数の付与候補画素について、順次算出する。複数のドット重心位置の値を用いて、画素群重心位置とドット重心位置との誤差が小さくなる付与候補画素に所定の階調値を付与するので、画素群の重心位置と生成したドット重心位置との誤差を小さくすることができる。したがって、粒状性に優れた画像を得ることができる。
【００１３】
ここで、階調値付与部は、画素群重心位置とドット重心位置との誤差が最小となる付与候補画素に、所定の階調値を付与することが好ましい。
【００１４】
このようにすれば、画素群の重心位置と生成したドット重心位置との誤差を最小にすることができるので、さらに粒状性に優れた画像を得ることができる。
【００１５】
ここで、ドット重心位置演算部は、画素群に含まれる全画素のうち、階調値付与部が付与した出力階調値の累積値が１画素に付与することができる最大の階調値に満たない画素を、付与候補画素に設定することが好ましい。
【００１６】
このようにすれば、画素群の全画素のうちさらに階調値を付与することができる画素を付与候補画素に設定するので、画素群の全画素のうちから階調値を付与する画素を選択することができる。したがって、さらに粒状性に優れた画像を得ることができる。
【００１７】
また、本発明は、方法の発明とすることもできる。すなわち、本発明の画像処理方法は、入力画像を複数の画素群に分割し、画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理方法であって、画素群を構成する入力画像の画素についての画素群重心位置を演算する画素群重心位置演算工程と、画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算するドット重心位置演算工程と、画素群重心位置とドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与工程と、を備えることを特徴とする。
【００１８】
さらに、本発明は、プログラムまたはそのプログラムを記憶した記録媒体とすることもできる。すなわち、本発明の画像処理プログラムは、入力画像を複数の画素群に分割し、画素群を構成する画素のうち順次選択した画素にドットを生成するための階調値を付与することにより、出力画像を生成する画像処理プログラムであって、画素群を構成する入力画像の画素についての画素群重心位置を演算し、画素群重心位置の値を記憶部に記憶する画素群重心位置演算工程、画素群を構成する画素のうち階調値が付与された画素についてのドット重心位置を演算し、ドット重心位置の値を記憶部に記憶するドット重心位置演算工程、記憶部から画素群重心およびドット重心の値を読み出し、画素群重心位置とドット重心位置との誤差に基づいて選択した画素に、階調値を付与する階調値付与工程、をコンピュータに実行させることを特徴とする。また、このプログラムを記録した記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＩＣカード、メモリカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を具体化した第１の実施形態について図面に従って説明する。
【００２０】
図１は、本発明が適用されるシステム全体の構成を示した図である。本システムは全体として、印刷対象としてのデータを供給するホストコンピュータ１と、ホストコンピュータ１に接続され、ホストコンピュータ１から入力された画像データを出力する画像出力装置２とを備えている。
【００２１】
ホストコンピュータ１は、アプリケーション部１０とラスタライズ部１１とを備えている。アプリケーション部１０は、文字データ、図形データ、ビットマップデータ等の印刷対象のデータを生成する。例えば、ホストコンピュータ１でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用してキーボード等の操作により文字データや図形データなどを生成する。
【００２２】
ラスタライズ部１１は、アプリケーション部１０が生成したデータを画素ごと（又はドットごと）に８ビットの画像データに変換する。８ビットの階調データを画素ごとに有する画像データを画像出力装置２に出力する。したがって、出力される画像データは、画素ごとに「０〜２５５」の２５６種類のうちいずれかの階調値を有することになる。なお、本実施形態では、ラスタライズ部１１が出力する画像データはモノクロ画像のデータとして説明する。
【００２３】
画像出力装置２は、ホストコンピュータ１から入力された画像データに所定の画像処理を施した画像を印刷するものであり、図１に示すように、画像出力装置２は、入力された画像データに各種の画像処理を行う画像処理装置２０と、画像処理を施したデータに基づき印刷用紙などの記録媒体に画像を印刷する印刷エンジン３０とを備えている。より具体的には、本実施形態の画像出力装置２はレーザプリンタである。
【００２４】
次に、画像処理装置２０の構成について説明する。画像処理装置２０は、入力された画像データにハーフトーン処理を行い、ドットを生成するための出力画像データを生成するハーフトーン処理部２１と、出力画像データから印刷エンジン３０へ出力するパルス信号を生成するパルス信号生成部２２と、を備えている。
【００２５】
図２は、ハーフトーン処理部２１の構成を示した図である。図２に示すように、ハーフトーン処理部２１は、注目セルを設定する注目セル設定部５０と、注目セル内の入力画像データの階調値の総和を演算する階調値総和演算部５１と、セル重心位置を演算するセル重心位置演算部５２と、ドット重心位置を演算するドット重心位置演算部５３と、セル重心位置とドット重心位置との誤差を演算する重心誤差演算部５４と、誤差により選択した画素に階調値を付与する階調値付与部５５と、を有している。
【００２６】
注目セル設定部５０は、入力された画像データの入力画像を、予め定められたセルパターンに従って複数のセル（画素群）に分割し、複数のセルのうちから注目するセルを設定する。図３は、本実施形態で用いるセルパターンの一例を示した図である。図３に示すように、セルパターンＣＰは、形状がランダムにばらついているセルが隙間なく並ぶように配列されている。また、セルパターンＣＰの各セルにはセル番号が付与されていて、注目セル設定部５０は、セル番号に従って順番に注目セルを設定する。
【００２７】
なお、本実施形態では、セルパターンＣＰが入力画像１ページ分の大きさをもつものとして説明する。すなわち、セルパターンＣＰの全セルについて、以下に説明する処理を施すと、１ページ分の入力画像に対するハーフトーン処理が行われるものとして説明する。もっとも、セルパターンＣＰとしては画像１ページの大きさより小さいセルパターンを繰り返し配列するようにして、１ページ分の大きさの画像に対応するようにしてもよい。
【００２８】
階調値総和演算部５１は、入力画像について注目セルに含まれる画素の階調値の総和を演算する。
【００２９】
セル重心位置演算部５２は、入力画像について注目セルに含まれる画素の重心位置（以下、セル重心位置）を演算する。
【００３０】
ドット重心位置演算部５３は、階調値付与部５５が階調値を付与した画素のドット重心位置を演算する。また、ドット重心位置を求める際には、階調値付与部５５により既に付与された階調値に加えて、注目セル内でさらに階調値を付与することができる画素を全て付与候補画素として、付与候補画素のいずれか１つに所定の階調値を付与したときの重心位置をドット重心位置として複数個求める。本実施形態では、所定の階調値の一例として階調値「１」を付与することとする。
【００３１】
また、第１の実施形態では、１つの画素に階調値「０〜２５５」の階調値に相当するドットを生成することができるものとする。したがって、例えば、注目セル内に既に付与された階調値が最大階調値の「２５５」未満である画素が付与候補画素になる。
【００３２】
重心誤差演算部５４は、セル重心位置とドット重心位置との誤差を演算する処理を行う。また、ドット重心位置演算部５３は、複数のドット重心位置を求めているので、１つのセル重心位置に対して、複数のドット重心位置との誤差をそれぞれ算出する。
【００３３】
階調値付与部５５は、重心誤差演算部５４が算出した複数の重心誤差のうち、最も小さい重心誤差を算出した付与候補画素の画素に対して階調値「１」を実際に付与することにより、出力画像を生成する。出力画像の出力画像データはパルス信号生成部２２に出力する。
【００３４】
パルス信号生成部２２は、出力画像データからレーザ駆動用のパルス信号を生成する。生成したパルス信号は印刷エンジン３０に出力することにより、印刷エンジン３０に入力画像を印刷する処理を行わせる。
【００３５】
図４は、画像処理装置２０の具体的ハードウェア構成を示した図である。画像処理装置２０は、入力インターフェース（以下、入力Ｉ／Ｆ）４０、ＣＰＵ４１、ＲＯＭ４２、ハードディスク４３、ＲＡＭ（記憶部）４４、メモリスロット４５および出力インターフェース（以下、出力Ｉ／Ｆ）４６を備えており、それらはバスを介して互いに接続されている。
【００３６】
入力Ｉ／Ｆ４０は、ホストコンピュータ１と画像出力装置２とのインターフェースである。所定の伝送方式により伝送されたホストコンピュータ１からの画像データが入力Ｉ／Ｆ４０に入力されると、入力Ｉ／Ｆ４０は画像出力装置２が処理を行うことのできるデータに変換し、一旦ＲＡＭ４４に格納する。
【００３７】
また、ＲＡＭ４４の記録領域上には、図２に示すように、入力画像データの各画素の階調値を格納する入力バッファ領域４４０、出力画像データの各画素の階調値を格納する出力バッファ領域４４１およびセル情報記憶領域４４２が設定されている。なお、入力バッファ領域４４０および出力バッファ領域４４１には、データが格納される前の初期値としては、各画素に階調値「０」のデータが格納されている。
【００３８】
ＣＰＵ４１は、ハードディスク４３またはＲＯＭ４２に格納された画像処理プログラムを読み出して、実行することにより画像処理装置２０としての各種の画像処理を行う。すなわち、ＣＰＵ４１が画像処理プログラムを実行することにより、画像処理装置２０の各構成が機能するようにしている。この画像処理プログラムは、予めハードディスク４３やＲＯＭ４２に格納されていることとしてもよいし、例えば、メモリカード４７などのコンピュータが読み取り可能な記録媒体によって外部から供給され、メモリスロット４５を介して画像出力装置２に備えられたハードディスク４３に記憶することによって格納されるものとしてもよい。もっとも、インターネットなどのネットワーク手段を介して、プログラムを供給するサーバー等にアクセスし、データをダウンロードすることによって格納されるものとしてもよい。
【００３９】
出力Ｉ／Ｆ４６は、画像処理装置２０と印刷エンジン３０とのインターフェースである。画像処理装置２０が各種の画像処理を施したデータは、出力Ｉ／Ｆ４６を介して印刷エンジン３０に出力される。
【００４０】
印刷エンジン３０は、レーザドライバ３１およびレーザダイオード３２を備えている。レーザドライバ３１は、パルス信号生成部２２から入力されたパルス信号に基づいてレーザダイオード３２を制御する制御信号を生成し、レーザダイオード３２に出力する。レーザダイオード３２は、レーザドライバ３１から入力された制御信号に基づいて駆動することにより、印刷用紙などの記録媒体に画像を印刷する。
【００４１】
以上に説明したように、本実施形態の画像処理装置２０は、ハーフトーン処理においてドット重心位置とセル重心位置との誤差が小さくなる画素に階調値を付与することにより、出力画像を生成するものである。図５は、ホストコンピュータ１から画像データが入力されたときに、画像処理装置２０が行う処理の流れを示すフローチャートである。以下、フローチャートに従って詳細に説明する。
【００４２】
図５のフローチャートに示す処理を開始すると、まず、ステップＳ１では、ホストコンピュータ１から入力された画像データを入力Ｉ／Ｆを介して画像出力装置２が受け取り、入力画像の各画素の階調値をＲＡＭ４４の入力バッファ４４０に格納する処理を行う。
【００４３】
次に、ステップＳ２〜Ｓ４では、ハーフトーン処理部２１が、入力バッファ４４０に格納された入力画像に対してハーフトーン処理を行う。
【００４４】
ハーフトーン処理では、まずステップＳ２において、注目セル設定部５０が注目セルの設定を行う。ここでは、ＣＰＵ４１は、ＲＯＭ４２またはハードディスク４３から図３に示すセルパターンＣＰの情報を取得して、セルパターンＣＰのセル番号に従って注目セルを設定する。
【００４５】
次に、ステップＳ３では、ハーフトーン処理部２１は設定している注目セルについてドット成長処理を行う。図６は、ドット成長処理の流れを示すフローチャートである。以下、フローチャートに従ってドット成長処理について説明する。
【００４６】
ドット成長処理を開始すると、まず、ステップＳ３０では、階調値総和演算部５１が、注目セル内の画素について階調値の総和を演算する。ここでは、ＣＰＵ４１は、入力バッファ領域４４０に格納された階調値を読み出して、注目セル内の画素の階調値総和を演算している。演算した階調値の総和の値はＲＡＭ４４に格納する。図７（ａ）は、入力バッファ領域４４０に格納された入力画像の階調値の一例を示した図である。なお、図７において、左上端に位置する画素を原点として左から右に向かう方向をｘ方向、上から下に向かう方向をｙ方向とする。図７（ａ）の例では、縦横３画素×４画素の大きさの領域のうち、８つの画素を含む画素群が注目セルＣＬに設定されている。また、注目セルＣＬに含まれる各画素は階調値は「５０」を有しているので、階調値総和演算部５１は、注目セル内の階調値総和「４００」を演算する。
【００４７】
次に、ステップＳ３１では、セル重心位置演算部５２が、入力バッファ領域４４０に格納された注目セル内の階調値およびＲＡＭ４４から読み出した注目セル内の階調値総和を用いて、次式に従ってセル重心位置ＧＣを算出する。ＣＰＵ４１は式（１）および式（２）に従ってセル重心位置ＧＣを演算して、セル重心位置ＧＣの値をＲＡＭ４４のセル情報記憶領域４４２に記憶する。
ＧＣｘ＝Σ（画素のｘ座標×当該画素の階調値）／注目セル内の階調値総和
…（１）
ＧＣｙ＝Σ（画素のｙ座標×当該画素の階調値）／注目セル内の階調値総和
…（２）
ここで、ＧＣｘはセル重心位置ＧＣのｘ座標、ＧＣｙはセル重心位置ＧＣのｙ座標であり、Σは注目セル内の全画素について総和演算を行うことを示している。
【００４８】
図７（ｂ）は、図７（ａ）に示した注目セルＣＬのセル重心位置ＧＣを示した図である。セル重心位置ＧＣは式（１）、式（２）に従って計算すると（１．２５，０．７５）となり、図７（ｂ）ではセル重心位置ＧＣを黒丸により表している。また、図７（ｂ）に示すように、セル重心位置ＧＣの値はセル情報記憶領域４４２に記憶される。
【００４９】
次に、ステップＳ３２では、注目セル内の画素から注目画素を設定し、ステップＳ３３では注目画素の階調値が「２５５」未満か否かを判断する。注目画素の画素値が「２５５」未満であった場合（Ｙｅｓ）、ステップＳ３４へ進み、当該注目画素に対する処理を行う。注目画素の階調値が「２５５」未満でない、すなわち「２５５」であった場合（Ｎｏ）、当該注目画素に対してさらに階調値を付与することができないので、ステップＳ３２に戻り、セル内の画素のうち別の画素を注目画素に設定する。
【００５０】
階調値が「２５５」未満の注目画素が設定されると、ステップＳ３４に進み、当該注目画素を付与候補画素として、付与候補画素に階調値「１」を付与したときのドット重心位置を計算する。ＣＰＵ４１は、次式に示す演算を行うことにより、ドット重心位置ＧＤのｘ座標ＧＤｘ、ｙ座標ＧＤｙを算出し、ＲＡＭ４４のセル情報記憶領域４４２に格納する。
ＧＤｘ＝（ＧＤｘ’×注目セル内の既に付与された階調値合計＋付与候補画素のｘ座標×１）／（注目セル内の既に付与された階調値合計＋１）  …（３）
ＧＤｙ＝（ＧＤｙ’×注目セル内の既に付与された階調値合計＋付与候補画素のｙ座標×１）／（注目セル内の既に付与された階調値合計＋１）  …（４）
ここで、ＧＤｘ’，ＧＤｙ’は、注目セルにおいて階調値付与部５５による階調値付与後のドット重心位置ＧＤ’のｘ座標、ｙ座標を表している。ステップＳ３４の処理を当該注目セルについて最初に行うときには、階調値付与部５５により階調値が付与されていないので、階調値付与後のドット重心位置ＧＤｘ’およびＧＤｙ’の初期値は「０」である。
【００５１】
次にステップＳ３５では、重心誤差演算部５４は、セル重心位置ＧＣとドット重心位置ＧＤとの重心誤差ＥＧを算出する。ＣＰＵ４１は、セル重心位置ＧＣおよびドット重心位置ＧＤの値をＲＡＭ４４のセル情報記憶領域４４２から読み出し、次式に示す演算を行うことによりｘ方向の重心誤差ＥＧｘおよびｙ方向の重心誤差ＥＧｙを算出する。算出した重心誤差ＥＧの値は、ＲＡＭ４４のセル情報記憶領域４４２に格納する。
ＥＧｘ＝ＧＤｘ−ＧＣｘ  …（５）
ＥＧｙ＝ＧＤｙ−ＧＣｙ  …（６）
【００５２】
図８は重心誤差を算出する処理例を示した図である。注目画素を設定する順番を、ｘ方向の主走査、ｙ方向の副走査に従うものとすると、図８（ａ）に示すように、座標（０，０）が最初の注目画素に設定される。このとき、注目画素（０，０）を付与候補画素として、付与候補画素に階調値「１」を付与したときのドット重心位置ＧＤを、式（３）および式（４）に従って計算する。図８の例では、最初の注目画素であるため、注目セル内の既に付与された階調値合計および階調値付与後のドット重心位置ＧＤ’の値は初期値「０」である。したがって、ドット重心位置ＧＤのｘ座標ＧＤｘは「０（＝（０×０＋０×１）／１）」、ドット重心位置ＧＤのｙ座標ＧＤｙも「０」となる。また、セル重心位置ＧＣは（１．２５，０．７５）であるので、重心誤差ＥＧは（−１．２５，−０．７５）となる。
【００５３】
次に、ステップＳ３６では、注目セル内の全画素について、ステップＳ３２〜Ｓ３５の処理を行ったか否かを判断する。全画素について処理を行っていた場合（Ｙｅｓ）、ステップＳ３７に進む。全画素について処理を行っていなかった場合（Ｎｏ）、セル内の異なる画素を注目画素に設定して、ステップＳ３２に戻る。ステップＳ３２〜Ｓ３５の処理を繰り返し行うことにより、注目セル内の画素のうち、階調値「２５５」未満の全画素を付与候補画素として、各付与候補画素に階調値「１」を付与したときのドット重心位置ＧＤを付与候補画素の数だけ取得する。
【００５４】
ステップＳ３６からステップＳ３７に処理を進めると、ステップＳ３７では、階調値付与部５５が、ステップＳ３５で算出した重心誤差ＥＧが最も小さくなる付与候補画素に階調値を付与する処理を行う。ＣＰＵ４１は、セル情報記憶領域４４２から付与候補画素ごとに算出した複数の重心誤差ＥＧの値を読み出して、値が最も小さい重心誤差ＥＧを求める。なお、重心誤差ＥＧはｘ座標、ｙ座標の値を有しているので、ｘ座標とｙ座標との２乗和、すなわち距離が最小となる注目画素を探索するとよい。最も小さい重心誤差ＥＧが求まると、当該重心誤差ＥＧを求めた付与候補画素に、階調値「１」を付与する。具体的には、出力バッファ領域４４１から読み出した当該付与候補画素の階調値に階調値「１」を加算して、出力バッファ領域４４１に格納する。
【００５５】
次に、ステップＳ３８では、ステップＳ３７において階調値「１」を付与したことにより重心位置が変化するので、階調値付与後のドット重心位置ＧＤ’を更新する。ここでは、ＣＰＵ４１は、ステップＳ３７において重心誤差ＥＧが最も小さくなる付与候補画素について求めたドット重心位置ＧＤの値をセル情報記憶領域４４２から読み出して、階調値付与後のドット重心位置ＧＤ’の値としてＲＡＭ４４に格納する。
【００５６】
図９は、図７（ａ）に示した注目セルの全画素について付与候補画素としてドット重心位置ＧＤを算出したときにセル情報記憶領域４４２に記憶されている情報を示した図である。図９の例では、付与候補画素として８つの画素に階調値「１」を与えたときの、付与候補画素、ドット重心位置ＧＤおよび重心誤差ＥＧの情報（以下、セル情報ともいう）がセル情報記憶領域４４２に記憶されている。記憶されているセル情報から、重心誤差ＥＧが最小となる注目画素を探索すると、付与候補画素（１，１）に対する重心誤差ＥＧが最小の値（−０．２５，０．２５）となる。したがって、出力バッファ領域４４１の画素（１，１）に階調値「１」を書き込むことにより、画素（１，１）に階調値「１」を付与することになる。
【００５７】
ステップＳ３８の次に、ステップＳ３９では、実際に付与された階調値が満たすべき階調値に達したか否かを判断する。ここでは、ＣＰＵ４１は、出力バッファ領域４４１を参照して注目セルに対して付与された階調値の総和が、ステップＳ３０で算出したセル内の階調値総和と等しいか否かを判断する。付与した階調値の総和がセル内の階調値総和に等しくない場合（Ｎｏ）、ステップＳ３２に戻り、付与した階調値の総和がセル内の階調値総和に等しくなるまで、ステップＳ３２〜Ｓ３８の処理を繰り返し行う。このようにして、出力バッファ４４１には、重心誤差ＥＧが最小となる画素に次々と階調値が付与される。付与した階調値の総和がセル内の階調値総和と等しくなった場合（Ｙｅｓ）、当該注目セルに対して行うドット成長処理を終了し、ステップＳ４に進む。
【００５８】
図１０は、注目セルに対して２回目の階調値を与えるときの処理例を示した図である。すなわち、図９の処理により画素（１，１）の階調値「１」を付与してから、付与した階調値の総和がセル内の階調値総和に達していないので、さらに階調値「１」を付与するときの処理を示している。図１０の例では、画素（０，０）に階調値「１」を与えている。このとき、既に階調値「１」が出力バッファ４４１の画素（１，１）に付与されているので、ドット重心位置ＧＤｘは、式（３）に従って「０．５（＝（１×１＋０×１）／（１＋１））」と求められる。同様に、ドット重心位置ＧＤｙは式（４）に従って「０．５」となる。注目セルＣＬのセル重心位置ＧＣは（１．２５，０．７５）であるので、重心誤差ＥＧは（−０．７５，−０．２５）となる。付与候補画素（０，０）についてのセル情報を格納する。さらに注目画素を主走査方向、副走査方向に次々に画素を走査しながら、付与候補画素に階調値を付与する処理を繰り返して、重心誤差ＥＧの値が最小となる画素に階調値「１」を付与する処理を繰り返す。そして、付与した階調値の合計が、注目セルＣＬの階調値総和に達すると、当該注目セルに対するドット成長処理が終了する。
【００５９】
ドット成長処理を終えると図５のフローチャートに戻って、ステップＳ４では、入力画像に設定した全セルに対してドット成長処理を行ったか否かを判断する。全セルに対してドット成長処理を行っていない場合（Ｎｏ）、ステップＳ２に戻って次のセル番号のセルを注目セルＣＬに設定してから、ステップＳ３のドット成長処理を行う。全セルに対してドット成長処理を行っていた場合（Ｙｅｓ）、ステップＳ５に進む。
【００６０】
ステップＳ５では、ＣＰＵ４１は出力バッファ領域４４１に記憶された出力画像の階調値を読み出して、出力画像データを出力する。パルス信号生成部２２は、出力画像データに従って変換したレーザ駆動用のパルス信号を出力Ｉ／Ｆ４６を介して印刷エンジン３０に出力する。印刷エンジン３０のレーザドライバ３１は、入力されたパルス信号に従ってドットを生成することにより、印刷用紙上に画像が印刷される。ホストコンピュータ１から入力された画像データの印刷を行うと、図８に示す処理を終了する。
【００６１】
なお、ステップＳ３０が階調値総和演算工程、ステップＳ３１が画素群重心位置演算工程、ステップＳ３４がドット重心位置演算工程、ステップＳ３７が階調値付与工程に相当する。
【００６２】
以下、本実施形態における効果を記載する。
（１）階調値付与後のドット重心位置ＧＤ’とセル重心位置ＧＣとの誤差を小さくすることができるので、ドットの位置がセルに対してばらつくことを抑えることができる。したがって、ドット間の距離がばらつくことによって発生する画像の粒状感を改善し、粒状性に優れた画像を得ることができる。
【００６３】
（２）セル重心位置ＧＣとドット重心位置ＧＤとの誤差が最小となる画素に階調値を付与しているので、さらに粒状性に優れた画像を得ることができる。
【００６４】
（３）ステップＳ３３の判断により、注目セルを構成する全画素のうち、最大階調値「２５５」に満たない全ての画素を付与候補画素として、誤差が最小となる画素に階調値を付与するので、誤差を最も好適に抑えることができる。
【００６５】
（４）セル内の入力画像の階調値に等しくなるまで階調値を繰り返し付与することにより、セル内において付与した階調値の総和が入力画像のセル内の階調値の総和に等しくなる。したがって、入力画像の濃度をドットにより忠実に表現した画像を得ることができる。
【００６６】
（５）セル形状がランダムであることにより発生するドットの位置のばらつきを抑えることができるので、ランダムな形状のセルを設定した場合にはより効果的に粒状性を改善することができる。
【００６７】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第２の実施形態のパルス信号生成部２２は、出力画像データにパルス幅変調を行うことにより、出力画像の階調値を「０〜２５５」の２５６階調のパルス幅により階調表現したパルス信号に変換する。印刷エンジン３０がパルス信号に基づいてドットを生成すると、パルスの幅に応じた幅のドットが生成される。すなわち、生成するドットの幅を変えることによって画素ごとの階調表現を行っている。例えば、パルス幅を「１」に制御すると、実際には、図１１（ａ）に示すように幅方向に２５５に分割した領域うちの１つの領域だけにドットを生成することにより、「１」の階調が表現される。パルス幅を「１２７」に制御すると、図１１（ｂ）に示すように、幅方向に長いドットが生成されて、ドットが画素全体の半分の面積を占めることにより「１２７」の階調が表現される。このように、画像出力装置２では、パルス幅を制御して、生成するドットの幅を変化させることによって階調を表現している。
【００６８】
このとき、図１１（ａ）に示すように、画素を２５５分割した領域のうち最も右に位置する領域にパルスを生成してドットを生成するとドット重心ＧＤの座標は（０．４９８，０）となり、画素の中心の座標（０，０）とはｘ方向に「０．４９８」の誤差が生じることになる。同様に、図１１（ｂ）の場合ではｘ方向に「０．２５０」の誤差が生じる。
【００６９】
なお、図１１の例では、画素の右端（ｘ＝０．５）を起点にドットの幅を変化させた一例を示しているが、画素の左端（ｘ＝−０．５）を起点にドットの幅を変化させることもできる。具体的には、セル重心位置ＧＣより左側にある画素については画素の右端を起点にドットを生成し、セル重心位置ＧＣより右側にある画素については画素の左端を起点にドットを生成する。そのため、パルス信号生成部２２は、生成するパルスの幅に加えて、パルスを発生する位置を制御している。
【００７０】
以上に説明したように、実際に生成されるパルスの位置、すなわちドットを生成する位置が画素の中心からずれてしまう場合には、画素内で誤差が生じてしまうので、誤差を補正する必要がある。そこで、第２の実施形態では、実際に生成するドットの位置が画素の中心位置と異なる場合に、生成するドットの中心位置に階調値を付与したときの重心位置をドット重心位置として求めることにより処理を行う。
【００７１】
図１２は、第２の実施形態に係るドット成長処理を示したフローチャートである。以下、フローチャートに従って、詳細に説明する。
【００７２】
第２の実施形態に係るドット成長処理では、ステップＳ１００〜ステップＳ１０３については、第１の実施形態のステップＳ３０〜ステップＳ３３と同様の処理を行う。すなわち、ステップＳ１００において注目セル内の階調値の総和を、ステップＳ１０１においてセル重心位置ＧＣを計算する。次に、ステップＳ１０２およびＳ１０３により、階調値をさらに付与することができる注目画素を付与候補画素に設定してから、ステップＳ１０４に進む。
【００７３】
ステップＳ１０４では、付与候補画素のｘ座標がセル重心位置ＧＣのｘ座標以上であるか否かを判断する。注目画素のｘ座標がセル重心位置ＧＣのｘ座標以上である場合（Ｙｅｓ）、ステップＳ１０５に進む。注目画素のｘ座標がセル重心位置ＧＣのｘ座標より小さい場合（Ｎｏ）、ステップＳ１０６に進む。
【００７４】
ステップＳ１０５では、セル重心位置ＧＣより左側にある付与候補画素についてドット重心ＧＤを計算する。すなわち、付与候補画素がセル重心位置ＧＣより左側にあるので付与候補画素の右端を起点としてドットを生成するときのドット重心位置ＧＤの位置を計算する。ここで、図１１に示すように画素の右端を起点としてドットを生成するため、ドット重心位置ＧＤのｘ座標は次式により求める。
ＧＤｘ＝（ＧＤｘ’×注目セル内の既に付与された階調値合計＋付与候補画素のｘ座標×１＋ＥＧＭ）／（注目セル内の既に付与された階調値合計＋１）  …（７）
【００７５】
ここで、ＥＧＭは重心誤差モーメントである。重心誤差モーメントＥＧＭは、付与候補画素の既に付与された階調値、すなわち出力バッファ領域４４１の階調値を用いて、次式に従って定められる。
ＥＧＭ＝（０．４９８−付与候補画素に既に付与された階調値／２５５）×１
…（８）
【００７６】
例えば、付与候補画素の出力バッファ領域４４１の階調値が「０」であれば、重心誤差モーメントＥＧＭの値は「０．４９８」となる。これは、図１１（ａ）に示すようにｘ座標「０．４９８」の位置に階調値「１」分のドットを生成したときの、画素の中心からのドットの中心位置の誤差と付与する階調値との積を表している。ＣＰＵ４１は、出力バッファ領域４４１から付与候補画素に既に付与された階調値を読み取って、式（８）に従って重心誤差モーメントＥＧＭの値を算出する。算出した重心誤差モーメントＥＧＭを用いて式（７）の演算を行うことにより、ｘ方向のドット重心位置ＧＤｘを算出する。また、ドット重心位置ＧＤと画素の中心とはｙ方向に誤差が生じないので、第１の実施形態と同様に式（４）の演算を行うことによって、ｙ方向のドット重心位置ＧＤｙを求める。算出したドット重心位置ＧＤｘおよびＧＤｙの値をＲＡＭ４４に格納すると、ステップＳ１０７に進む。
【００７７】
ステップＳ１０６では、セル重心位置ＧＣより右側にある付与候補画素についてドット重心ＧＤを計算する。すなわち、付与候補画素がセル重心位置ＧＣより右側にあるので付与候補画素の左端を起点としてドットを生成するときのドット重心位置ＧＤの位置を計算する。ここでは、画素の左端を起点としてドットを生成するため、重心誤差モーメントＥＧＭの値を以下のように設定する。
ＥＧＭ＝（−０．４９８＋付与候補画素に既に付与された階調値／２５５）×１
…（９）
【００７８】
ＣＰＵ４１は、付与候補画素に対して付与された出力バッファ領域４４１の階調値を読み取って、式（９）に従って、重心誤差モーメントＥＧＭの値を算出する。算出した重心誤差モーメントＥＧＭを用いて式（７）の演算を行うことにより、ドット重心位置ＧＤｘを算出する。ｙ方向については、式（４）の演算を行うことによって求める。算出したドット重心位置ＧＤｘおよびＧＤｙの値をＲＡＭ４４に格納すると、ステップＳ１０７に進む。
【００７９】
図１３は、図７（ａ）に示した入力画像に対して、第２の実施形態に係るドット成長処理を行った処理例を示した図である。図１３（ａ）には、付与候補画素（０，０）に階調値「１」を付与するときの例を示している。この例では、注目セルＣＬに対して最初に行う処理を示しており、出力バッファ領域４４１に格納されているセル内の階調値合計は「０」であるものとする。このとき、付与候補画素（０，０）に階調値「１」を付与すると、図１３（ａ）の破線内に示すように、画素を２５５分割した領域のうち右端の領域にドットが生成されるので、このドットの中心位置に階調値「１」を付与したときのドット重心位置ＧＤを求める。ｘ方向については、式（８）により重心誤差モーメントＥＧＭは「０．４９８」となるので、式（７）に従ってドット重心位置ＧＤは（０．４９８，０）となる。このときの重心誤差ＥＧは（−０．７５２，−０．７５）である。
【００８０】
また、図１３（ｂ）には、付与候補画素（２，０）に階調値「１」を付与するときの例を示している。このとき、付与候補画素（２，０）に階調値「１」を付与すると、図１３（ｂ）の破線内に示すように、画素を２５５分割した領域のうち左端の領域にドットが生成されるので、このドットの中心位置に階調値「１」を付与したときのドット重心位置ＧＤを求める。このとき、式（９）により重心誤差モーメントＥＧＭは「−０．４９８」となるので、式（７）に従ってドット重心位置ＧＤは（１．５０２，０）となる。このときの重心誤差ＥＧは（０．２５２，−０．７５）である。
【００８１】
図１４は、図１３の例についてセル内の全画素を付与候補画素として処理したときのセル情報記録領域４４２に記憶されたセル情報を示した図である。図１４のセル情報によれば、付与候補画素（１，１）に階調値を付与したときの重心誤差が最も小さくなるので、画素（１，１）に階調値「１」を付与する。
【００８２】
図１５は、画素（１，１）に階調値を付与してから、次に階調値「１」を付与する画素を決定するために、付与候補画素（１，１）に階調値を付与したときの処理例を示している。このとき、付与候補画素（１，１）には、既に階調値「１」が付与されているので、画素を２５５分割した領域のうち右端の領域（中心は（１．４９８，０）に加えて右端から２番目の領域（中心は（１．４９４，０））にドットが生成される。そこで、右端から２番目の領域に新たに階調値「１」を付与したときのドット重心位置ＧＤを算出する。このとき、出力バッファ４４１の当該画素には階調値「１」が既に格納されているので、式（８）によれば重心誤差モーメントＥＧＭは「０．４９４」となる。このときのドット重心位置ＧＤｘは、式（７）に従って「１．４９６（＝１．４９８×１＋１×１＋０．４９４）／（１＋１）」となる。
【００８３】
ステップＳ１０７〜Ｓ１１１では、第１の実施形態におけるステップＳ３５〜Ｓ３９と同様の処理を行う。すなわち、まず、ステップＳ１０７において、重心誤差演算部５４が、式（５）、式（６）に従って重心誤差ＥＧｘ、ＥＧｙを演算してセル情報記憶部４４２に格納する。次に、ステップＳ１０８では、セル内の全画素についてステップＳ１０２〜Ｓ１０７の処理を行ったか否かを判断して、全画素について行っていなかった場合は（Ｎｏ）、ステップＳ１０２に戻り他の画素を注目画素として処理を行う。全画素について処理を行っていた場合（Ｙｅｓ）は、ステップＳ１０９に進む。
【００８４】
ステップＳ１０９では、ステップＳ１０７で算出した重心誤差が最小となる画素に対して、階調値「１」を付与する処理を行い、ステップＳ１１０では、階調値付与後のドット重心位置ＧＤ’の値を新たなドット重心ＧＤの値に更新する。
【００８５】
ステップＳ１１１では、満たすべき階調値、すなわちセル内の階調値の総和に達したか否かを判断して達していなかった場合（Ｎｏ）、ステップＳ１０２へ戻り、さらに階調値を付与する処理を行う。満たすべき階調値に達していた場合（Ｙｅｓ）、当該注目セルへのドット成長処理を終了する。
【００８６】
以上に説明したドット成長処理を全セルについて行うと、ハーフトーン処理部２１は各画素ごとに付与した階調値を示す出力画像データ、および各画素ごとにパルスを生成する起点（すなわち、右または左）の位置を示す制御データを生成して、パルス信号生成部２２に出力する。パルス信号生成部２２は、ハーフトーン処理部２１から出力画像データおよび制御データを受け取り、制御データから、画素の左右のいずれを起点としてパルスを生成するかを読み取り、パルスの起点となる位置から出力画像データの階調値に応じたパルス幅を有するパルス信号を生成する。すなわち、パルス幅変調を行っている。生成したパルス信号は印刷エンジン３０に出力され、パルス信号に基づきレーザドライバ３１がレーザダイオード３２を駆動することにより印刷が行われる。
【００８７】
以下、第２の実施形態の効果を記載する。
【００８８】
（６）パルス幅変調を行うことにより、実際に生成するドットの重心位置が画素の中心からずれる場合に、式（７）により、実際にドットが生成される位置の中心に階調値を付与したときのドット重心位置ＧＤを求めている。したがって、ドットが画素の中心からずれて生成される場合であっても、セル重心位置ＧＣとドット重心位置ＧＤとの誤差を小さくすることにより、粒状性を改善することができる。
【００８９】
以上、本発明の一実施形態について説明したが、本発明はこれに限られることなく、様々な形態とすることもできる。以下、本発明の変形例について説明する。
【００９０】
（変形例１）前記実施形態では、図４に示すようにランダムな形状のセルパターンＣＰを用いたが、本発明では、セルを決定する方法としては、これに限られることはない。例えば、図１６に示すように、一定の形状のセルを規則的な位置に配列したセルパターンＣＰを用いてもよい。
【００９１】
（変形例２）また、予め決められたパターンに従ってセルを設定することなく、ハーフトーン処理部２１が所定の手法に従ってセルを生成するようにしてもよい。例えば、特許文献１に記載のように、入力画像から初期画素を選択し、セル内の画素の階調値の総和が所定の閾値に達するまで初期画素周辺の画素を次々と選択するようにして、複数の画素からなるセルを構成するようにしてもよい。また、初期画素周辺の画素を選択する際には、セルの中心位置またはセル内の画素の重心位置からの距離が小さい画素を順番に選択するようにしてもよい。このようにしてセルを生成した場合についても、本発明によるドット成長処理を適用することにより、画像の粒状性を改善することができる。
【００９２】
（変形例３）前記実施形態では、画素に１度に付与する階調値を「１」として、階調値「１」を付与する処理をセル内の階調値総和に達するまで繰り返す処理の例について説明した。１度に付与する階調値は「１」に限られることなく、例えば階調値「１０」を一度に付与することにしてもよい。このようにすれば、セル内の階調値総和に達するまで処理を繰り返す回数が少なくなるので、ドット成長処理に要する計算量をさらに少なくすることができる。なお、例えばセル内の階調値の総和が「３５」であれば、「１０」の階調値を３回付与した後に階調値が「５」残ってしまう。このような場合には、一度に付与する階調値の値をより小さい値に切り替えて、例えば、残った階調値「５」については階調値を「１」ずつ付与するとよい。また、一度に付与する階調値の値を、処理の繰り返し回数に応じて徐々に小さい値に切り替えるようにしてもよい。
【００９３】
（変形例４）前記実施形態では、階調値「２５５」の画素を除いて注目セル内の階調値「２５５」未満となる全ての画素を付与候補画素として、重心誤差が最小となる画素を求めた。第４の変形例では、ドット重心位置ＧＤとセル重心位置ＧＣとの位置関係を参照して、付与候補画素とする画素の数を少なくする。例えば、図１７の例では、セル重心位置ＧＣに対してドット重心位置ＧＤは左上方向に位置しているので、ドット重心位置ＧＤよりさらに左上方向に位置する画素に階調値を付与してしまうと、重心誤差ＥＧは確実に大きくなってしまう。このような場合には、ドット重心位置ＧＤよりさらに左上方向に位置する画素（図１７の斜線で示した画素）は付与候補画素に設定することなく、ドット重心位置ＧＤを算出するステップＳ３２〜Ｓ３５の処理を省略する。このようにすれば、処理結果に影響を与えることなく計算量をさらに少なくすることができる。また、付与候補画素とする画素をさらに限定して、図１７の例では、セル重心位置ＧＣよりさらに右下方向に位置する画素（図１７の網点で示した画素）だけを、付与候補画素としてもよい。
【００９４】
（変形例５）前記実施形態では、重心誤差が最小となる画素に階調値を付与しているが、重心誤差が２番目、または３番目に小さくなる画素に階調値を付与してもよい。
【００９５】
（変形例６）前記実施形態では、各画素ごと２５６階調の階調値を有した出力画像を生成する例について説明した。出力画像の階調数としてはこれに限られない。例えば、付与候補画素に一度に付与する階調値を「２５５」として処理を行えば、２値画像を生成することもできる。
【００９６】
（変形例７）前記実施形態では、モノクロデータに対して画像処理装置２０が処理を行う例について説明した。第７の変形例としては、カラーデータに対しても同様に処理を行うことができる。この場合、図１８に示すように、ホストコンピュータ１から出力されたＲＧＢ（レッド、グリーン、ブルー）データを、画像処理装置２０の色変換部２３がＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）データに変換する。もっとも、変換するデータは、ＣＭＹＫに限ることなく、ライトシアン、ライトマゼンタなどを含んでいてもよい。変換した各色データに対して、本発明によるハーフトーン処理を施すことにより、カラー画像に対応することもできる。
【００９７】
（変形例８）前記実施形態におけるハーフトーン処理部２１がホストコンピュータ１に含まれる構成としてもよい。この場合、図１９に示すように、ホストコンピュータ１が有するハーフトーン処理部２１は、入力画像にハーフトーン処理を施して出力画像データに変換し、出力画像データを画像出力装置２に出力する。画像出力装置２では、パルス信号生成部２２が出力画像データからパルス幅信号を生成することにより画像を生成する。
【００９８】
（変形例９）前記実施形態では、ＣＰＵ４１が画像処理プログラムを実行することにより、画像処理装置２０としての機能をソフトウェアによって実現する例について説明した。第９の変形例として、上述した画像処理装置２０の機能を、ＡＳＩＣなどのハードウェア回路により実現するとしてもよい。もちろん、一部の機能をハードウェア回路にもたせて、ハードウェア回路がもたない機能をソフトウェアによって実現するようにしてもよい。
【００９９】
（変形例１０）前記実施形態における画像処理装置２０は、レーザプリンタにて構成した。本発明の画像処理装置はこれに限定されるものでなく、例えば、インクジェットプリンタやサーマルプリンタなど種々のプリンタや複写機、ワープロ、ファックス、ディスプレイなどの種々の機器などに適用することもできる。
【図面の簡単な説明】
【０１００】
【図１】第１の実施形態に係るシステム全体の構成を示した図。
【図２】ハーフトーン処理部の構成を示した図。
【図３】セルパターンの一例を示した図。
【図４】画像処理装置の具体的ハードウェア構成を示した図。
【図５】画像出力装置が印刷する際の処理の流れを示すフローチャート。
【図６】ドット成長処理の流れを示すフローチャート。
【図７】ドット成長処理の処理例を示した図。（ａ）は、入力バッファ領域に格納された入力画像を示した図、（ｂ）は注目セルのセル重心を示した図。
【図８】ドット成長処理の処理例を示した図。（ａ）は、付与候補画素（０，０）について行う処理の例を示した図、（ｂ）は付与候補画素（１，０）について行う処理の例を示した図。
【図９】セル情報記憶領域に記憶されているセル情報を示した図。
【図１０】ドット成長処理の処理例を示した図。
【図１１】画素内で発生する誤差を説明するための図。
【図１２】第２の実施形態に係るドット成長処理の流れを示すフローチャート。
【図１３】ドット成長処理の処理例を示した図。
【図１４】セル情報記憶領域に記憶されているセル情報を示した図。
【図１５】ドット成長処理の処理例を示した図。
【図１６】第１の変形例を説明する図。
【図１７】第４の変形例を説明する図。
【図１８】第７の変形例を説明する図。
【図１９】第８の変形例を説明する図。
【符号の説明】
【０１０１】
１…ホストコンピュータ、２…画像出力装置、１０…アプリケーション部、１１…ラスタライズ部、２０…画像処理装置、２１…ハーフトーン処理部、２２…パルス信号生成部、３０…印刷エンジン、３１…レーザドライバ、３２…レーザダイオード、４０…入力インターフェース、４１…ＣＰＵ、４２…ＲＯＭ、４３…ハードディスク、４４…ＲＡＭ、４５…メモリスロット、４６…出力インターフェース、４７…メモリカード、５０…注目セル設定部、５１…階調値総和演算部、５２…画素群重心位置演算部としてのセル重心位置演算部、５３…ドット重心位置演算部、５４…重心誤差演算部、５５…階調値付与部、４４０…入力バッファ領域、４４１…出力バッファ領域、４４２…記憶部としてのセル情報記憶領域、ＣＬ…注目セル、ＣＰ…セルパターン、ＧＤ…ドット重心位置、ＧＤ’…階調値付与後のドット重心位置、ＥＧ…重心誤差、ＥＧＭ…重心誤差モーメント、ＥＧｘ…ｘ方向の重心誤差、ＥＧｙ…ｙ方向の重心誤差、ＧＣ…画素群重心位置としてのセル重心位置。
【図１】
2006340128.tif 000003
【図２】
2006340128.tif 000004
【図３】
2006340128.tif 000005
【図４】
2006340128.tif 000006
【図５】
2006340128.tif 000007
【図６】
2006340128.tif 000008
【図７】
2006340128.tif 000009
【図８】
2006340128.tif 000010
【図９】
2006340128.tif 000011
【図１０】
2006340128.tif 000012
【図１１】
2006340128.tif 000013
【図１２】
2006340128.tif 000014
【図１３】
2006340128.tif 000015
【図１４】
2006340128.tif 000016
【図１５】
2006340128.tif 000017
【図１６】
2006340128.tif 000018
【図１７】
2006340128.tif 000019
【図１８】
2006340128.tif 000020
【図１９】
2006340128.tif 000021