(57)【要約】【課題】  規則的なドットの形成やドットの偏り発生を抑え、ドットの分散性がよい出力画像を得るための画像処理装置、画像処理方法、画像処理プログラム、またはそのプログラムを記録した記録媒体を提供することを目的とする。【解決手段】  画像データ変換部２２ａは入力画像データを所定の画素配列を有する対象画像データに変換する。そして変換した対象画像データについて、画素群生成部２２ｂは画素ごとの階調値の総和が所定の閾値以上となるまで画素を選択して画素群を生成し、データ付与部２２ｄは、基準点決定部２２ｃが決定したセル内の所定の画素にドットを形成するための所定の階調データを付与する。こうすることによって、所定の画素配列に応じた形状のセルが生成され、ドットの偏りを抑制する。【選択図】      図２
2006005634.tif 000002
【特許請求の範囲】
【請求項１】
画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理装置であって、
前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換部と、
前記生成された対象画像データについて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成部と、
生成される前記画素群内の所定の画素に対して、前記所定の階調データを付与するデータ付与部と、
を備えた画像処理装置。
【請求項２】
画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理装置であって、
前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換部と、
画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成部と、
前記生成された画素群について第２の基準点を決定する基準点決定部と、
前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与部とを備え、
前記画素群生成部は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、
前記データ付与部は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とする画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置であって、
前記画素群生成部は、前記画素群における画素ごとの前記対象画像データの階調値の総和が前記所定の閾値を超えたとき、超えた分の前記階調値を前記画素群生成部が最後に選択した画素に戻すことを特徴とする画像処理装置。
【請求項４】
請求項２または３に記載の画像処理装置であって、
前記画素群生成部は、前記第１の基準点に基づいて選択すべき画素が複数存在するとき、選択する画素をランダムに選択することを特徴とする画像処理装置。
【請求項５】
請求項２ないし４のいずれか一項に記載の画像処理装置であって、
前記基準点決定部は、前記画素群における画素の位置と画素の階調値とから算出した重心位置を、前記第２の基準点として決定することを特徴とする画像処理装置。
【請求項６】
請求項２ないし５のいずれか一項に記載の画像処理装置であって、
前記第１の基準点は、前記画素群における画素の位置と、当該画素の前記対象画像データの階調値とから算出した重心位置であることを特徴とする画像処理装置。
【請求項７】
請求項１ないし６のいずれか一項に記載の画像処理装置であって、
前記画像データ変換部は、画像データの奇数ラインと偶数ラインとで画素位置を互いに交互の位置とした千鳥状の画素配列を有する対象画像データに変換することを特徴とする画像処理装置。
【請求項８】
画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理方法であって、
前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換工程と、
画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成工程と、
前記生成された画素群について第２の基準点を決定する基準点決定工程と、
前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与工程とを備え、
前記画素群生成工程は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、
前記データ付与工程は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とする画像処理方法。
【請求項９】
画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理プログラムであって、
前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換機能と、
画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成機能と、
前記生成された画素群について第２の基準点を決定する基準点決定機能と、
前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与機能とをコンピュータに実現させ、
前記画素群生成機能は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、
前記データ付与機能は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とするプログラム。
【請求項１０】
請求項９に記載の画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多階調値で表された入力画像の画像データを、所定の手法にて階調変換することによって、プリンタなどの画像出力装置の出力画像に生じ得るドットの偏り発生などを抑える画像処理技術に関する。
【背景技術】
【０００２】
従来より、レーザプリンタやインクジェットプリンタなど画像出力装置では、多階調値で表された画像データを、画素ごとに所定の閾値で２値化し、所定の階調値が付与された画素の位置に、所定の大きさのドットを形成することによって印刷用紙に印刷を行い、印刷物として画像を出力することが行われている。ここで、多階調値で表された画像データを、所定の階調値に２値化した階調データに変換する処理のことをハーフトーン処理と一般に称している。
【０００３】
ハーフトーン処理については、形成するドットの位置によってドットが繋がるなどドットに偏りが発生することがある。そこで、このようなドットの偏りの発生を抑えドットの分散性を向上する技術として、例えば、ドットの繋がりを少なくする技術が特許文献１にて提案されている。特許文献１では、入力画像の画素について、階調値合計が閾値に達するまで所定のテーブルにより画素を探索してセルを生成し、セルの中央付近の位置にドットを形成する技術が開示されている。
【０００４】
【特許文献１】特開平１１−２７５２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１におけるハーフトーン処理では、ドットの繋がりの発生を抑えるため、セルを構成する画素の探索を、所定の探索順を記録したテーブルを用いて行う方法が提案されている。しかしながら、テーブル内で左側に存在する画素は、既に２値化処理済みの場合が多く、結果的に生成されるセルが歪んだ形（例えば三日月型）となってしまう。かかる形状のセルでは、セルの中央付近がそのセルの外側に位置することもある。このようなセルについて、セルの中央付近の位置にドットを形成させると、隣のセルのドットと重なってしまうことが生じるため、形成されるドットが繋がり、結果的にドットの偏りを発生させ、ドットの分散性が劣化してしまうという課題があった。
【０００６】
また、特許文献１において、２値化の対象となる入力画像は、通常ドットマトリクス状に配列された正方形の画素から構成されているため、入力画像がおおよそ中濃度の画像であるような場合、例えば数個程度の少ない画素数でセルが構成され、ほぼ同じ形状のセルが隣接して連続的に生成されることが生じ得る。この結果、セルの中央付近の位置に形成されるドットは互いに隣接する確率が高くなるため、このようなドットの隣接に起因してドットの偏りが発生しまうという課題があった。また、同じく、入力画像がおおよそ中濃度の画像であるような場合は、探索順をランダムにしても、セルを構成する画素数が少ないためほぼ同じ形状のセルが生成され、結果的にドットが規則的に形成されたり、ドットが偏って形成されたりしてしまうなど、視覚的に分散性の悪い画像が出力されるという課題もあった。
【０００７】
本発明は、このような課題の少なくとも一部を解決し、規則的なドットの形成やドットの偏り発生を抑え、ドットの分散性がよい出力画像を得るための画像処理装置、画像処理方法、画像処理プログラム、またはそのプログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明の画像処理装置は、画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理装置であって、前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換部と、前記生成された対象画像データについて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成部と、生成される前記画素群内の所定の画素に対して、前記所定の階調データを付与するデータ付与部と、を備えたことを要旨とする。
【０００９】
かかる画像処理装置によれば、画像データを所定の画素配列を有する対象画像データに変換する。そして変換した対象画像データについて、画素ごとの階調値の総和が所定の閾値以上となるまで画素を選択して画素群（以下、「セル」とも呼ぶ）を生成し、セル内の所定の画素にドットを形成するための所定の階調データを付与する。こうすることによって、所定の画素配列に応じた形状のセルが生成される。従って、生成されるセルがおおよそ円形状になる画素配列とすることによって、生成されたセル内の所定の画素に形成されるドットは繋がらず、ドットの偏りを抑制することができる。
【００１０】
あるいは、本発明の画像処理装置は、画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理装置であって、前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換部と、画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成部と、前記生成された画素群について第２の基準点を決定する基準点決定部と、前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与部とを備え、前記画素群生成部は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与部は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とする。
【００１１】
かかる画像処理装置によれば、入力画像の画像データを所定の画素配列を有する対象画像データに変換する。そして変換した対象画像データについて、画素ごとの階調値の総和が所定の閾値以上となるまで第１の基準点に基づいて画素を選択してセルを生成し、生成されたセル内の第２の基準点に位置する画素にドットを形成するための所定の階調データを付与する。こうすることによって、セルの生成に際して、セルに組み入れる画素を選択するための基準点と、生成したセルに形成するドットの位置を決定する基準点とを区別することができる。従って、例えばセルに組み入れる画素を選択する基準点を、セルの形状がより円形状になるように、セルの形状に着目してセルに組み入れる画素を選択することができる。この結果、ドットは円形状のセルに形成されるため偏りが少なくなる確率が高くなる。
【００１２】
ここで、前記画素群生成部は、前記画素群における画素ごとの前記対象画像データの階調値の総和が前記所定の閾値を超えたとき、超えた分の前記階調値を前記画素群生成部が最後に選択した画素に戻すこととしてもよい。
【００１３】
こうすれば、閾値を超えたセルに最後に組み入れられた画素に、閾値を超えた分の階調値を戻しているため、ハーフトーン処理前の入力画像の階調値が失われず、元の画像とほぼ同じ位置に画像全体の階調値が残るため、入力画像に忠実な偏りの少ないドットを形成させることができる。
【００１４】
さらに、前記画素群生成部は、前記第１の基準点に基づいて選択すべき画素が複数存在するとき、選択する画素をランダムに選択することとしてもよい。こうすれば、同じ形状のセルが連続して生成される確率が低くなり規則的なドットの発生を抑えて分散性を向上させ、視覚的に快適な出力画像をえることができる。
【００１５】
ここで、前記基準点決定部は、前記画素群における画素の位置と画素の階調値とから算出した重心位置を、前記第２の基準点として決定することとしてもよい。こうすれば、形成するドットの位置は、生成したセルの重心となるため、入力画像の階調データに忠実なドットをセル内に形成することができる。
【００１６】
また、前記第１の基準点は、前記画素群における画素の位置と、当該画素の前記対象画像データの階調値とから算出した重心位置であることとしてもよい。こうすれば、セルの生成処理に際して、常にセルの重心に最も近い画素を選択してセルに組み入れていくため、生成されるセルの形状はセルの重心を中心としたおおよそ円形状になる。そして、その円のおおよそ中心位置にドットが形成されることになるため、ドット間距離が保たれた分散性の良いドットが形成される。
【００１７】
また、本発明の画像処理装置において、前記画像データ変換部は、画像データの奇数ラインと偶数ラインとで画素位置を互いに交互の位置とした千鳥状の画素配列を有する対象画像データに変換することとしてもよい。
【００１８】
こうすれば、画素の配列が正方形のドットマトリクス状であった画像データから、千鳥状の画素配列の画像データに変換される。この結果、セルを構成する画素数が少ない場合においても、生成されるセルの形状が例えばハニカム形状などになる確率が高くなり、より円形状に近づくことになる。従って、セル内に形成されるドットは繋がらず、分散性が向上する。
【００１９】
また、上記目的を達成する本発明の画像処理方法は、画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理方法であって、前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換工程と、画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成工程と、前記生成された画素群について第２の基準点を決定する基準点決定工程と、前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与工程とを備え、前記画素群生成工程は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与工程は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とする。
【００２０】
また、本発明はコンピュータプログラムまたはそのプログラムを記録した記録媒体としてもよい。すなわち、画素ごとに、多階調値で表された画像データを、ドットを形成するための所定の階調データに階調変換する画像処理プログラムであって、前記画像データを、所定の画素配列を有する対象画像データに変換する画像データ変換機能と、画素選択のための第１の基準点に基づいて、画素ごとの前記対象画像データの階調値の総和が、所定の閾値以上となるまで画素を順次選択して画素群を生成する画素群生成機能と、前記生成された画素群について第２の基準点を決定する基準点決定機能と、前記決定された第２の基準点に位置する画素に前記所定の階調データを付与するデータ付与機能とをコンピュータに実現させ、前記画素群生成機能は、前記第１の基準点を更新して当該第１の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与機能は前記生成された画素群における前記対象画像データの階調値の総和が前記所定の閾値以上となったとき、前記第２の基準点が位置する画素に前記所定の階調データを付与することを特徴とする。
また、このプログラムを記録した記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＩＣカード、パンチカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００２１】
次に、本発明を実施するための最良の形態を説明する。図１は、本発明が適用される画像処理装置を含むシステム全体の一例を示す構成図である。全体として画像入力装置１０と、画像処理装置２０と、画像出力装置３０とから構成される。これらの装置は基本的にコンピュータまたはコンピュータによって制御される装置であり、所定のオペレーティングシステムのもとで所定のプログラムが実行されることによって動作する。
【００２２】
画像入力装置１０は、アプリケーション部１１とラスタライズ部１２とから構成される。アプリケーション部１１は、文字データ、図形データ、ビットマップデータ等の印刷対象となるデータを生成する。例えば、画像入力装置１０でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用して、図示しないキーボード等の操作により文字データや図形データなどを生成する。そして生成したこれらのデータを、ラスタライズ部１２へ出力する。もとより、画像入力装置１０は、図示しないスキャナやデジタルスチルカメラなどの画像データを取得する機器から出力されるデータを受け付け、このデータをアプリケーション部１１が生成するデータとしてラスタライズ部１２へ出力するものとしても差し支えない。
【００２３】
ラスタライズ部１２は、アプリケーション部１１から出力された印刷対象のデータを画素ごとに複数色の画像データに変換して出力する。本実施形態では、Ｒ（レッド）、Ｇ（グリーン）、Ｂ（ブルー）の色毎で、画素ごとに８ビット（計２４ビット）の多階調値で表された画像データを出力する。したがって、出力される画像データは、画素ごとに０から２５５までの２５６種類の階調値を有することになる。ラスタライズ部１２における画像データの生成処理は、実際には画像入力装置１０に実装された図示しないドライバによって行われる。こうしてラスタライズ部１２から出力される画像データは、画像処理装置２０に出力される。
【００２４】
画像処理装置２０は、基本的にコンピュータであり、色変換部２１とハーフトーン処理部２２とから構成される。画像処理装置２０では、画像入力装置１０から出力された画像データに対して、色変換処理とハーフトーン処理を行い、所定の階調データＤＲを画像出力装置３０へ出力する処理が行われる。
【００２５】
色変換部２１は、画像入力装置１０から出力される２５６種類の階調値を有するＲＧＢ各８ビット（計２４ビット）の画像データを受け取り、画像出力装置３０が出力する色成分に合わせて色変換処理を行う。本実施形態では、ＲＧＢからＣＭＹＫの画像データＤＴに色変換処理を行うものとする。ここで、Ｃはシアン、Ｍはマゼンダ、Ｙはイエロー、Ｋはブラックを示す。
【００２６】
ハーフトーン処理部２２は、色変換部２１から出力されるＣＭＹＫの画像データＤＴに対して、それぞれの画像データを所定の画素配列を有する画像データに変換処理した後、画素ごとに所定の閾値を用いて量子化データ（２値あるいは４値などの多値の値）に変換し、変換された量子化データである所定の階調データＤＲを画像出力装置３０に出力する。ハーフトーン処理として、本実施形態では、複数の画素からなるセルを、画素群の重心を用いて構成し、そのセルの重心にドットを生成させる処理（Circular Cell法、以下ＣＣ法）を用いる。ＣＣ法の具体的な内容は後述する。
【００２７】
画像出力装置３０は、パルス幅変調部３１と印刷エンジン３５とから構成され、印刷エンジン３５は、レーザドライバ３６とレーザダイオード（ＬＤ）３７とから構成される。画像出力装置３０では、画像処理装置２０から出力された所定の階調データＤＲに従って印刷エンジン３５が駆動され、この印刷エンジン３５によって印刷用紙等の記録媒体に各色成分のドットが形成され、実際に印刷が行われるのである。
【００２８】
パルス幅変調部３１は、ハーフトーン処理部２２から出力された所定の階調データＤＲを入力し、この所定の階調データＤＲから所定のパルス数とパルス幅をもったレーザ駆動パルスを駆動データとして生成する。そして、この駆動データをレーザドライバ３６に出力する。
【００２９】
レーザドライバ３６は、入力された駆動データから、レーザダイオード３７を駆動する制御データを生成し、レーザダイオード３７に出力する。レーザダイオード３７は、レーザドライバ３６から出力された制御データに基づいて駆動され、さらに図示しない感光ドラムや転写ベルトが駆動されて、最終的に印刷用紙等の記録媒体に、パルス幅とパルス数に応じて所定の色成分のドットが所定数出力される。こうして、記録媒体に各色のドットが形成され画像入力装置１０にて生成された印刷対象となるデータが印刷されることになる。
【００３０】
次に、図２を参照して、本発明が適用される画像処理装置２０の具体的なハード構成について説明する。ここで、図１の画像処理装置２０を構成する色変換部２１、ハーフトーン処理部２２は、図２におけるＣＰＵ２６、ＲＡＭ２７およびＲＯＭ２８に対応する。
【００３１】
画像処理装置２０は、全体として、入出力インターフェイス（Ｉ／Ｆ）２５、ＣＰＵ２６、ＲＡＭ２７、ＲＯＭ２８、ハードディスク２９とから構成され、それらはバスを介して互いに接続されている。入出力Ｉ／Ｆ２５は、画像入力装置１０と画像処理装置２０とのインターフェイス、及び画像処理装置２０と画像出力装置３０のインターフェイスの役割を果たす。入出力Ｉ／Ｆ２５には、所定の伝送方式により伝送された画像入力装置１０からのＲＧＢの画像データが入力され、画像処理装置２０で処理できるデータに変換される。ＲＧＢの画像データは、一旦ＲＡＭ２７に格納される。そして、入出力Ｉ／Ｆ２５から、所定の階調データＤＲを画像出力装置３０に所定の伝送方式を用いて送出する。
【００３２】
ＣＰＵ２６は、バスを介してハードディスク２９またはＲＯＭ２８に格納されたプログラムを読み出し、この読み出したプログラムを所定のオペレーティングシステムのもとで実行することによって、画像処理装置２０として機能し、所定の処理を実行する。特に、請求項に記載した画像データ変換部２２ａ、画素群生成部２２ｂ、基準点決定部２２ｃ、データ付与部２２ｄとして機能する。
【００３３】
各部は上述したハーフトーン処理部２２が行う処理を司る。すなわち、画像データ変換部２２ａは入力画像データの画素配列を所定の画素配列に変換処理する。画素群生成部２２ｂ、基準点決定部２２ｃ、データ付与部２２ｄは後述するＣＣ法によるハーフトーン処理を行い、所定の画素配列に変換された入力画像データを、ドットを形成するための所定の階調データに階調変換処理する。
【００３４】
これらの処理を記録したプログラムは、予めハードディスク２９やＲＯＭ２８に格納されていることとしてもよいし、例えばＣＤ−ＲＯＭなどのコンピュータが読み取り可能な記録媒体によって外部から供給され、図示しないＣＤ−Ｒ／ＲＷドライブを介してハードディスク２９に記憶することによって格納されるものとしてもよい。もとより、インターネットなどのネットワーク手段を介して、プログラムを供給するサーバー等にアクセスし、データをダウンロードすることによってハードディスク２９に格納されるものとしてもよい。
【００３５】
ＲＡＭ２７は、ＣＰＵ２６の制御によって実行される各処理のワーキングメモリとして役割を果たし、処理後の各種データを格納する。ＲＡＭ２７の具体的構成等については後述する。
【００３６】
以上説明した実施形態では、色変換部２１が出力するＣＭＹＫの画像データＤＴは、各色８ビットずつの多階調値で表されたデータとなっており、各色“０”から“２５５”まで２５６種類の階調値を有するものとする。また本実施形態では、ハーフトーン処理部２２にて、各色成分のドットを出力するか否かを制御する量子化処理を行うものとして説明することとし、ハーフトーン処理部２２が出力する所定の階調データＤＲは、Ｃ、Ｍ、Ｙ、Ｋそれぞれの色成分について、画素ごとに階調値“０”あるいは階調値“２５５”に量子化（２値化）された２値化データであるものとする。最終的に、画像出力装置３０は、前述したように、出力された所定の階調データ、つまり階調値“２５５”に量子化された全ての画素に対応してパルス幅とパルス数を生成し、各色成分のドットの出力を制御して印刷を行うのである。
【００３７】
次に、画像処理装置２０において、後述する実施例で用いるハーフトーン処理の手法となるＣＣ法について説明する。なお、以下のＣＣ法の説明においては、後述する実施例に関する効果説明を容易にするため、入力画像は正方形のドットマトリクス状の画素で構成されているものとする。
【００３８】
「ＣＣ法の説明」
それでは、ＣＣ法によるハーフトーン処理について図３のフローチャートと図４および図５の模式図を用いて説明する。この処理が実施されると、まずステップＳ２０１にて、ハーフトーン処理つまり階調変換処理の対象となる入力画像を読み込む処理を行う。前述したように、入力画像は正方形のドットマトリクス状の画素で構成されているものとし、ここでは一例として色成分シアンの画像データを入力画像として読み込むものとする。もとよりハーフトーン処理は、入力画像について全ての画素の画像データに対して行なわれる。読み込んだ画像データの一例を図４（ａ）に示した。例えば、ｍ行ｎ列目の画素（以降（ｎ，ｍ）と表す）には、階調値“５０”の画像データが与えられている。
【００３９】
次にステップＳ２０５で、階調変換が未処理である画素（以降、未処理画素）を探索する処理を行い、探索未処理画素が有るか否かを判定する処理を行う。未処理画素の探索は、常に、まず水平方向に探索走査を行い、次に垂直方向へ探索走査を行う。すなわち、未処理画素が存在する場合は、入力画像全体で最も上側にある画素のうち、最も左側にある画素を探索することになる。もとより、階調変換処理の開始時では、入力画像の左上隅の画素が探索される。
【００４０】
次に、判定の結果、未処理画素が有った場合（ＹＥＳ）、次のステップＳ２１５へ進む。一方、判定の結果、未処理画素が無い場合は（ＮＯ）、入力画像全体は階調変換されたものとして、２値化データを出力する処理を行い（ステップＳ２０６）、ハーフトーン処理ルーチンを終了する。
【００４１】
ステップＳ２１５では、セルの拡大終了条件が成立するか否かを判定する処理を行う。本実施形態では、セル内の画素の階調値合計が閾値“２５５”以上であることがセルの拡大を終了する条件となる。そして、判定の結果、ＮＯの場合はセルを拡大する処理を行い（ステップＳ２２０）、セルの重心から最も近い画素をセルに組み入れることによってセルの拡大を行う。一方、判定の結果、ＹＥＳの場合はセルの拡大を終了し、ステップＳ２２５へ進む。
【００４２】
ステップＳ２１５およびステップＳ２２０での処理について、図４を用いて具体的に説明する。いま、探索した未処理画素ＭＧが図４（ａ）の網掛け部で示したｍ行ｎ列目の画素（ｎ，ｍ）であり、他の画素も全て未処理画素であったとする。このとき、（ｎ，ｍ）１画素のセルＣＬが生成されたことになる。
【００４３】
次にセルＣＬ内の画素の階調値の合計は“５０”となり、“２５５”未満であるので、セルＣＬの重心位置を算出する。算出されたセルＣＬの重心ＧＣの位置は、画素（ｎ，ｍ）の中心になり、図４（ｂ）網掛け部で示したように、算出した重心ＧＣの位置から最も近い未処理画素をセルＣＬに組み入れる。この場合、（ｎ＋１，ｍ）（ｎ，ｍ＋１）の２つの画素が重心に最も近い画素として存在する。本実施形態では、このような選択対象となる画素が複数存在する場合はランダムに１つの画素を選択する。ここでは画素（ｎ＋１，ｍ）をセルに組み入れ、セルＣＬを拡大するものとする。このように選択すべき画素が複数存在するときは、ランダムに画素を選択することにより、同じ形状のセルが連続して生成されにくくなる。この結果、後述するセルの重心に形成されるドットの分散性が向上する。もとより、ランダムとせず、所定の選択順を決めて選択することとしても差し支えない。
【００４４】
次に、拡大したセルＣＬ内（図４（ｃ）の太枠線内の部分）の画素の階調値の合計は“１００”となり、閾値“２５５”未満であるので、セル内の画素位置と画素の階調値からセルＣＬの重心ＧＣの位置を算出する。そして、図４（ｃ）網掛け部で示したように、算出した重心ＧＣの位置から最も近い画素として、２つの画素（ｎ，ｍ＋１）（ｎ＋１，ｍ＋１）が選択すべき画素となる。ここでも、同じくランダムに画素を選択して画素（ｎ，ｍ＋１）をセルに組み入れ、セルＣＬを拡大する。
【００４５】
次に、拡大したセルＣＬ内（図４（ｄ）の太枠内の部分）の画素の階調値の合計は“１５０”となり、閾値“２５５”未満であるので、セルＣＬ内の画素位置と画素の階調値からセルＣＬの重心ＧＣの位置を算出する。そして、図４（ｄ）網掛け部で示したように、算出した重心ＧＣの位置から最も近い画素（ｎ＋１，ｍ＋１）をセルに組み入れ、セルＣＬを拡大する。
【００４６】
次に、拡大したセルＣＬ内（図４（ｅ）の太枠線内の部分）の画素の階調値の合計は“２０５”となり、閾値“２５５”未満であるので、セルＣＬ内の画素位置と画素の階調値からセルＣＬの重心ＧＣの位置を算出する。そして、図４（ｅ）網掛け部で示したように、算出した重心ＧＣの位置から最も近い画素（ｎ＋１，ｍ＋２）をセルに組み入れ、セルＣＬを拡大する。
【００４７】
次に、拡大したセルＣＬ内（図４（ｆ）の太枠線内の部分）の画素の階調値の合計は“２５５”となり、セルの拡大終了条件を満たすので、セルＣＬの拡大処理を終了し、ステップＳ２２５（図３）に進む。
【００４８】
ステップＳ２２５では、セル内の画素の階調値合計が閾値と等しいか否かを判定する処理を行う。判定の結果閾値と等しい場合は（ＹＥＳ）、前述の処理と同様、セル内の画素位置と画素の階調値からセルの重心ＧＣの位置を算出する処理を行う（ステップＳ２２９）。そして、算出した重心位置に存在する画素に、閾値と同じ階調値を与える処理を行い（ステップＳ２３０）、ステップＳ２０５に戻って未処理画素の探索処理以降を繰り返す。
【００４９】
図４（ｆ）に示したように、ステップＳ２３０では、ステップＳ２２９によって算出した重心ＧＣの位置に存在する画素（ｎ＋１，ｍ＋１）に、閾値と同じ階調値“２５５”を与える。この階調値“２５５”が与えられた画素の位置にシアンの画像データに対応したドットを形成して画像を印刷するのである。
【００５０】
一方、ステップＳ２２５で判定の結果、閾値と等しくない場合つまり閾値を超える場合は（ＮＯ）、閾値を超えた分の階調値である誤差データを無視して、セルの重心を算出する処理を行う（ステップＳ２２６）。そして、誤差データを最後にセルに組み入れた画素に戻し（ステップＳ２２７）、この誤差データを戻した画素を未処理画素とする処理を行う（ステップＳ２２８）。次に、ステップＳ２３０に進み、算出した重心位置に存在する画素に、閾値と同じ階調値を与える処理を行う。
【００５１】
ステップＳ２２６からＳ２２８までの処理について、図５を用いて具体的に説明する。図５（ａ）は、図４（ｆ）にて説明したセルＣＬ１の生成処理に続き、ステップＳ２０５にて、所定の走査方法による走査方向に従って画素（ｎ＋２，ｍ）が未処理画素ＭＧとして探索された状態を示している。そして図４にて説明した処理と同様に処理を行い、図５（ｂ）では画素（ｎ＋２，ｍ＋１）を、図５（ｃ）では画素（ｎ＋３，ｍ＋１）を、図５（ｄ）では画素（ｎ＋３，ｍ＋２）を未処理画素ＭＧとしてセルＣＬ２に組み入れてセルを拡大する。
【００５２】
図５（ｅ）に示したように、画素（ｎ＋３，ｍ＋２）がセルＣＬ２に組み入れた時点で、セルＣＬ２内の画素の階調値合計は“２６５”となり、閾値“２５５”を超える。そこで、超えた分の誤差データ“１０”（＝２６５−２５５）を無視し、画素（ｎ＋３，ｍ＋２）が階調値“５０”（＝６０−１０）であるとしてセルＣＬ２の重心ＧＣ２を算出する。
【００５３】
そして、図５（ｆ）に示したように、算出した重心ＧＣ２の位置に存在する画素（ｎ＋３，ｍ＋１）に階調値“２５５”を付与する。このとき、最後にセルＣＬ２に組み入れた画素（ｎ＋３，ｍ＋２）に誤差データ“１０”を戻す。そして、画素（ｎ＋３，ｍ＋２）を階調値“１０”を有する未処理画素とし、セルＣＬ２から除外する。
【００５４】
図３および図４、図５を用いて説明したハーフトーン処理が本実施形態におけるＣＣ法の基本的な処理内容である。ＣＣ法によるハーフトーン処理によれば、常にセルの重心に最も近い画素を組み入れてセルを生成するため、閾値を付与する画素位置に対してほぼ円形状となるセルを生成する。従って、閾値が付与された画素位置にドットを形成した場合、隣り合うドットが近かったり、あるいは重なったりする確率を減少することができ、分散性のよいドットを形成することができる。
【００５５】
また、ＣＣ法では、前述したように選択すべき未処理画素が複数存在した場合、ランダムに画素を選択してセルを拡大するため、同じような形状のセルが生成される確率が減少し、形成されるドットがばらつくことになり、規則的なパターンの発生が抑えられる。
【００５６】
また、ＣＣ法によるハーフトーン処理によれば、誤差データを元の画素に戻すため、入力画像データの歪みが小さくなり、入力画像の階調値に対して比較的忠実に階調変換処理を行うことができる。
【００５７】
次に、ＣＣ法によるハーフトーン処理について、各ハードにおける具体的な処理内容を図３のフローチャートと図２の構成図を参照し、図６〜図８の模式図を用いて説明する。
【００５８】
まず、ＣＰＵ２６は、ハードディスク２９またはＲＯＭ２８に格納されたプログラムを読み出して、入力画像の読み込み処理を開始する（ステップＳ２０１）。入力画像の読み込みは、ハードディスク２９に格納された色変換処理後の画像データを、ＲＡＭ２７の指定された入力バッファ領域に取り込むことで行う。例えばシアンの画像データはシアン入力バッファ領域に格納され、マゼンタの画像データはマゼンタ入力バッファ領域に格納される。ＣＣ法は、全ての画像データについて基本的に同じ処理を行うものであるため、各色成分の画像データを区別せずに説明することとし、ＲＡＭ２７に用意された入力バッファだけでなく、以降説明する出力バッファやワーキングメモリについてもシアン、マゼンタなどの記載を省略している。この例を図６（ａ）に示す。もとより、各画像データについての処理データは、それに対応した入力バッファ、ワーキングメモリ、出力バッファの各領域に格納される。
【００５９】
ＲＡＭ２７は、図６（ａ）に示すように、入力バッファ領域２７１と、ワーキングメモリ領域２７２と、出力バッファ領域２７３とから構成される。この入力バッファ領域２７１は、２次元構造を有しており、例えば上述の入力画像の画素（以降、入力画素）について、（ｎ，ｍ）に位置する入力画素の画像データは、入力バッファ領域の（ｎ，ｍ）のアドレスに格納される。入力画素の位置に対応するように入力バッファ領域２７１が構成される。実際には、このアドレスには画像データの階調値が格納されることになる。例えば、図４（ａ）に示すシアンの画像データが入力されると、図６（ａ）に示すように入力バッファ２７１に各画素の階調値が格納される。ワーキングメモリ領域２７２は、重心位置の演算結果（ｘ，ｙ）と、セル内の画素の階調値合計の演算結果（ｓｕｍ）が格納され、出力バッファ領域２７３は入力バッファ２７１と同様に各入力画素の画像データに対応するように構成される。詳細は後述する。
【００６０】
次いで、ＣＰＵ２６は、セル生成の最初の未処理画素となる初期画素を探索決定して（ステップＳ２０５）、決定した初期画素の階調値が閾値より小さいか否かを判断する（ステップＳ２１５）。具体的には、ＲＯＭ２８に格納した閾値を読出し、ＲＡＭ２７の入力バッファ２７１から読み出した初期画素の階調値と比較し、閾値よりも小さい場合はステップＳ２２０に移行し、閾値と同じか大きいときはステップＳ２２５に移行する。
【００６１】
初期画素の決定は、ＲＡＭ２７の入力バッファ２７１に格納された入力画像データのうち、入力画素の位置で最も上の左側に位置する画素をＣＰＵ２６が選択する。すなわち、図６（ａ）に示す例では、（ｎ，ｍ）に対応する位置に位置する画素を初期画素としてＣＰＵ２６は判断する。以下、説明を簡単にするため、（ｎ，ｍ）＝（０，０）として説明する。
【００６２】
ステップＳ２１５で閾値より小さいと判断された場合（ＹＥＳ）、ＣＰＵ２６は、未処理画素の選択を行い、セルを拡大する処理を行う（ステップＳ２２０）。ここで未処理画素の選択は、セルの重心を利用して行う。重心を利用して画素の選択を行うことによって、最終的に生成されるセルの形状は円形状となり、その重心にドットを形成させることでドット間距離が均一となり、ドットの分散性がよい印刷物を得ることができるのである。
【００６３】
ＣＰＵ２６は初期画素の位置する画素の階調値と、そのアドレス位置とを読み出し、重心を演算する。ＣＰＵ２６は、具体的に以下の演算式を用いて演算し重心を求める。
【００６４】
（式１）
ｘ重心＝｛｛（セルの重心のｘ座標）×（セル内の画素の階調値合計）｝＋｛（選択した未処理画素のｘ座標）×（選択した未処理画素の階調値）｝｝／{（セル内の画素の階調値合計）＋(選択した未処理画素の階調値)}
ｙ重心＝｛｛（セルの重心のｙ座標）×（セル内の画素の階調値合計）｝＋｛（選択した未処理画素のｙ座標）×（選択した未処理画素の階調値）｝｝／{（セル内の画素の階調値合計）＋(選択した未処理画素の階調値)}
（ｘ重心、ｙ重心は重心位置の座標）
この演算式はＲＯＭ２８に格納され、ステップＳ２２０にてＣＰＵ２６が読み出して演算を行うことになる。もとより、初期画素の場合は、セルの重心のｘ、ｙ座標は“０”として演算される。なお、ＣＰＵ２６は、演算した重心位置を、上述したワーキングメモリ領域２７２のアドレス「ｘ」「ｙ」に格納する（図６（ｂ）参照）。
【００６５】
また、ＣＰＵ２６は、ステップＳ２１５で初期画素の階調値が閾値より小さいと判断された場合は、初期画素に対応する出力バッファ２７３に“０”を格納し、ステップＳ２１５で初期画素の階調値が閾値以上と判断された場合は、その時点で初期画素に対応する出力バッファ２７３に“２５５”を格納する。この画素位置にドットを出力する処理を行うためである。ここでは、選択された初期画素の階調値は閾値より小さいため、図６（ｂ）に示すように、選択した画素に対応するＲＡＭ２７の出力バッファ２７３に“０”がＣＰＵ２６によって格納されることになる。
【００６６】
続いて、ＣＰＵ２６は、ワーキングメモリ２７２のアドレス「ｓｕｍ」に初期画素の階調値を格納するとともに、選択した初期画素に対応する入力バッファ２７１に“−１”を格納する。再度未処理画素の選択で、当該画素を選択されないようにするためである。以降、未処理画素の選択処理と同時もしくは選択処理に先んじて、それまで既に選択されたセルを構成する画素の階調値の合計をワーキングメモリ２７２のアドレス「ｓｕｍ」に格納し、当該画素に対応する入力バッファ２７１のアドレスに“−１”を格納する処理を行う。
【００６７】
なお、ＣＰＵ２６は、入力バッファ２７１に“−１”を格納させているが、これに限ることはなく、他の負の値でもよい。さらに入力バッファ２７１と同様の構成のメモリ領域を用意して、選択した画素に対応する位置にフラグを立てて、選択画素が処理済みか否かを判別するようにしてもよい。
【００６８】
未処理画素の選択処理は、ステップＳ２２０で演算した重心から最も近い距離にある画素を選択することによって行う。このとき、ＲＡＭ２７の入力バッファの所定位置に格納されている入力画像の階調値から、アドレス（１，０）にある入力画素の階調値か、アドレス（０，１）にある入力画素の階調値が選択される。２つの画素ともアドレス（０，０）から等距離にあるからである。ここで、いずれかの画素を選択する必要があるが、本実施形態ではＣＰＵ２６がランダムに画素を選択し、ここでは０行１列のアドレス（１，０）にある画素の階調値を選択する。こうしてセルを拡大する処理が行われるのである。
【００６９】
次いで、ＣＰＵ２６は、再びセル内の画素の階調値合計が閾値未満であるか否か判断する（ステップＳ２１５）。すなわち、選択した未処理画素の階調値を含めたセル内の画素の階調値合計が閾値“２５５”未満であるか否かを判断する。具体的には、ＣＰＵ２６は、ＲＡＭ２７のワーキングメモリ２７２のアドレス「ｓｕｍ」に書き込んだ画素の階調値と、ステップＳ２２０で選択した画素の入力バッファ２７１に格納された階調値とを読出し、その合計を演算して、ＲＯＭ２８に格納された閾値（ここでは“２５５”の値）とを比較する。例えば図６（ｃ）の例では、ワーキングメモリ２７２のアドレス「ｓｕｍ」に格納された値“５０”と、入力バッファ２７１のアドレス（１，０）格納されている階調値“５０”との合計値は“１００”となる。よって合計値は閾値に達しない。
【００７０】
階調値の合計が閾値を超えない場合（ステップＳ２１５：ＮＯ）、ＣＰＵ２６は、再び選択した未処理画素を含めた重心の演算を行う（ステップＳ２２０）。具体的なＣＰＵ２６の演算は、上述した（式１）の演算式を用いて行うことになる。これまで求めた重心のｘ、ｙ座標は、（０，０）で重心の階調値は“５０”、未処理画素のｘ、ｙ座標は（１，０）で、その階調値は“５０”であるので、演算される重心位置は（０．５，０）となる。このステップＳ２２０で演算した重心位置は、ＣＰＵ２６の制御によってＲＡＭ２７のワーキングメモリ２７２に格納される。ステップＳ２２０での前回の処理で、ワーキングメモリ２７２には初期画素の重心位置が格納されていたが、ここではその位置に上書きして格納する。その格納後の例を図６（ｃ）に示す。
【００７１】
ここで、図６（ｃ）に示されているように、重心位置は必ずしも整数値になるとは限らない。このとき、未処理画素の選択において重心に最も近い画素を選択する方法のほかに、重心が位置する画素に最も近い画素、つまり重心が位置する画素の中心に最も近い画素を選択する方法としてもよい。このようにすると、重心位置は整数値として演算でき、ＣＰＵ２６が処理する計算量の削減が期待できる。
【００７２】
こうして、ステップＳ２１５とＳ２２０の処理を繰り返すたびに、ＣＰＵ２６は、ステップＳ２１５で演算したセル内の画素の階調値合計が、閾値と等しいか否か判断しながら閾値に達するまでセルを構成していくことができる。また、閾値に達していない場合、上述したようにＣＰＵ２６は、セルに組み入れた入力画素の位置に対応した出力バッファ２７３の位置に“０”を格納する。
【００７３】
図７（ａ）は、未処理画素（１，１）が選択されたときの状態を示したものである。ワーキングメモリ２７２の「ｓｕｍ」の値と画素（１，１）の階調値との合計値と、ＲＯＭ２８に格納された閾値とをＣＰＵ２６が読み出して両者を比較すると、まだ閾値に達していないので、ワーキングメモリ２７２には重心位置が、また選択した未処理画素（１，１）に対応する出力バッファ２７３に“０”がそれぞれ格納される。
【００７４】
図７（ｂ）は、図７（ａ）に引き続き行われる処理を示したもので、入力画素（１，２）が重心位置に最も近い画素として選択された状態を示している。このとき、セルの階調値合計が“２５５”になった状態を示している。すなわち、これまでセルに組み込まれた画素の階調値合計“２０５”が、ＲＡＭ２７のワーキングメモリ２７２に格納されるので、その値と画素（１，２）の値との合計値“２５５”を閾値と比較することで、ＣＰＵ２６は閾値と等しいと判断する（ステップＳ２２５：ＹＥＳ）。この場合、ＣＰＵ２６は、セルに組み入れた入力画素（１，２）の位置に対応した出力バッファ２７３の位置に“０”を格納する。
【００７５】
そして、閾値と等しいとＣＰＵ２６が判断した場合、処理はステップＳ２２９に移行し、（式１）を用いて重心位置を演算する。そして、演算した重心位置をワーキングメモリ２７２に格納する。
【００７６】
次に、重心に位置する画素に所定の色成分のドットを形成するための処理を行う。具体的には、図７（ｂ）に示したように、ＲＡＭ２７の出力バッファ２７３において、入力画素の位置に対応するアドレス位置に、ドットの形成を示す所定の階調データ“２５５”を書き込む。出力バッファの構造も入力バッファと同様に２次元構造で、入力画素の位置に対応するアドレス空間を有している。重心が位置するアドレスに“２５５”を書き込むことで、その後、実際にその入力画素の位置に対応する位置にドットを形成することができる。
【００７７】
次いで、ＣＰＵ２６は、データ“２５５”の書き込み処理をトリガーにして新たにセルを生成する処理に移行し、再び未処理画素があるか否か判断する（ステップＳ２０１）。すなわち、上述した処理をＲＡＭ２７の入力バッファ２７１に書き込まれたすべての階調値に対して階調値変換処理を行ったか否かで判断し、未処理画素があれば（ＹＥＳ）再び処理はステップＳ２１５に移行し、上述の処理を繰り返す。例えば、図７（ｃ）に、引き続いて上述した走査方法に従って、未処理画素（２，０）が探索された状態を示した。すべての画素に対して処理が終了すれば（ステップＳ２０５：ＮＯ）、ＣＰＵ２６はステップＳ２０６に移行し、処理が終了することになる。
【００７８】
一方、ステップＳ２２５でセル内の画素の階調値合計が閾値を超える場合（ＮＯ）、処理はステップＳ２２６に移行し、閾値を超えた場合の重心演算処理を行う。この場合における処理について図８を用いて説明する。
【００７９】
図８（ａ）は、図７にて説明した処理に引き続いて、ＣＰＵ２６の処理が行われた状態を示したもので、入力画素（３，１）がセルに組み入れられたときのＲＡＭ２７に格納されたデータの様子を示している。この場合はセル内の閾値に達しないので拡大終了条件が成立せず（ステップＳ２１５：ＮＯ）、セルの拡大処理が行われる。
【００８０】
セルの拡大処理によって、図８（ｂ）に示したように、次に（３，２）に位置する画素が選択される。このとき、セル内の画素の階調値合計の演算結果は“２６５”になり、閾値“２５５”を超えることになる。したがって、このような場合（ステップＳ２２５：ＮＯ）、ステップＳ２２６に移行することになる。
【００８１】
ステップＳ２２６は、閾値を超える階調値分つまり誤差データを無視してセルの重心を算出する処理を行う。このため、まずＣＰＵ２６は、閾値からセル内の画素の階調値合計、すなわち閾値からこれまでステップＳ２２０で格納したワーキングメモリの階調値を減ずる演算を行う。例えば図８に示す例では、閾値は“２５５”、ステップＳ２２０でこれまで格納した階調値は図８（ｂ）に示したように“２０５”であるので、ＣＰＵ２６がこれらを読み出して２５５−２０５＝５０の値を演算する。
【００８２】
そして、ＣＰＵ２６が、この“５０”の値を画素（３，２）の階調値として重心の演算を行うことによって、誤差データが無視されることになる。重心の演算は具体的には、以下の演算式を用いる。
【００８３】
（式２）
ｘ重心＝｛｛（セルの重心のｘ座標）×（セル内の画素の階調値合計）｝＋｛（選択した未処理画素のｘ座標）×（セル内の画素の階調値が閾値となるまでの階調値）｝｝／｛（セル内の画素の階調値合計）＋(セル内の画素の階調値が閾値となるまでの階調値)｝
ｙ重心＝｛｛（セルの重心のｙ座標）×（セル内の画素の階調値合計）｝＋｛（選択した未処理画素のｙ座標）×（セル内の画素の階調値が閾値となるまでの階調値）｝｝／｛（セル内の画素のレベル値合計）＋(セル内の画素の階調値が閾値となるまでの階調値)｝
（ｘ重心、ｙ重心は重心位置の座標）
（式１）との違いは、選択した未処理画素の階調値をそのまま用いるのではなく、セルの合計が閾値と同じになるまでの階調値を用いる点が異なる。
【００８４】
この演算式は、（式１）の場合と同様に予めＲＯＭ２８に格納されており、ＣＰＵ２６が本ステップを実行する際にＲＯＭ２８から読み出すことで実行される。ここでは、最終的にステップＳ２２０で選択した画素の階調値は、これまで演算した階調値の合計との和をとることで閾値と等しくなるように演算して、それをもとに重心位置を求めることになる。そしてＣＰＵ２６は、演算した重心位置データを再びＲＡＭ２７のワーキングメモリ２７２に書き込む（図８（ｂ）のワーキングメモリ２７２参照）。
【００８５】
また、ＣＰＵ２６は、最終的に選択した画素の元の階調値からステップＳ２２６で演算した演算結果を引いた値（誤差データ）を演算して、その値を再びその選択した画素の入力バッファに書き込む（ステップＳ２２７）。これにより、当該画素の階調値が、誤差データとして格納される。図８（ｃ）に例示したように、ＣＰＵ２６は、ステップＳ２２６で演算した“５０”を最終的に選択した（３，２）の画素の階調値“６０”から引いて“１０”の値を求め、これをＲＡＭ２７の入力バッファ２７１のアドレス（３，２）に再び書き込む（図８（ｃ）の入力バッファ２７１網掛け部参照）。
【００８６】
そして、この画素はセルに組み込まれず、階調変換が未処理であるとして扱い、新たなセルに組み入れられる未処理画素とする処理を行う（ステップＳ２２８）。上述したように、誤差データをセル以外の画素に戻すのではなく、誤差データが発生した画素に再び格納させて戻し、当該画素を未処理画素とすることで、入力画像の階調値に忠実な位置にドットを形成することができる。
【００８７】
その後処理はステップＳ２３０に移行し、上述した処理が繰り返されることになる。ちなみに、ＣＰＵ２６は、重心位置の存在する画素に対応する出力バッファ２７３に“２５５”を格納する。これにより、その後の処理で重心位置の存在する画素にドットを形成させることができる。
【００８８】
以上説明したように、図２に示したハード構成によって、各画像データに対してＣＣ法によるハーフトーン処理が行われ、入力画像における各画素の階調値は所定の階調データへ変換され、偏りが抑えられたドットが形成されるのである。
【００８９】
ところで、上記の説明から分かるように、ＣＣ法では生成されるセルを構成する画素数は、ハーフトーン処理の対象となる画像データの濃度に依存する。従って、画素の階調値が例えば“２０”といった低濃度の画像データの場合は、セルを構成する画素数は、閾値を“２５５”とすると通常１２個から１３個となり、生成されるセルは円形状に近づく。同様に、画素の階調値が例えば“２３５”といった高濃度の画像データの場合は、逆にドットを形成しない画素位置を求めるように処理を変更する。つまり、シアンなどの色ドットを形成するかわりに白ドットを形成することとし、画素の階調値を“２０”（＝２５５−２３５）として扱えば、低濃度の画像データの場合と同様にセルを構成する画素数は通常１２個から１３個となり、白ドットが形成される対象となるセルは円形状に近づく。この結果、画像データが低濃度や高濃度の場合は、ドットは分散性よく形成される。
【００９０】
一方、画素の階調値が例えば“５５”近辺の中濃度の画像データの場合、上述のＣＣ法の説明から明らかなように、生成されるセルを構成する画素数は４個ないし５個程度の比較的少ない数量となる。このため、概略４角形でほぼ同一の形状のセルが連続して生成されることになり、形成されるドットは規則的であったり隣接状態であったりして分散性が悪くなる。そこで、ハーフトーン処理に際して、入力画像の画像データについて、画素配列を所定の配列に変換して処理を行うことによって、生成されるセルを構成する画素数が数個程度と少なくなる中濃度の画像データに対して、形成されるドットの分散性を向上させる。これを以下の実施例にて説明する。
【００９１】
「実施例」
本発明が適用される画像処理装置２０におけるハーフトーン処理の実施例を、図９のフローチャートを用いて説明する。図９の処理が開始されると、まずステップＳ２０にて入力画像の読み込み処理を行う。次に、ステップＳ３０にて、入力画像の画像データを、奇数ラインと偶数ラインとで交互の位置になる画素配列を有した画像データに変換する処理を行う。
【００９２】
本実施例では、画像データの画素配列を図１０に示したように変換する。図１０（ａ）は、一例として、シアン成分の画像データがステップＳ２０にて入力バッファ２７１に読み込まれた状態を示している。ここでは、正方形のドットマトリクス状の画素配列を有した均一な階調値“４０”の画像データがアドレス（０，０）から（７，７）に読み込まれている。
【００９３】
本実施例では、この図１０（ａ）の画像データを、ステップＳ３０にて図１０（ｂ）、または図１０（ｃ）の画素配列の画像データに変換処理する。図１０（ｂ）は、各行における奇数ラインに位置する画素を、偶数ラインに対して半画素分右方向にずらして千鳥状にしたものである。もとより、奇数ラインの画素を偶数ラインに対して左方向に半画素分ずらしてよい。あるいは、奇数ラインをずらさず偶数ラインをずらすこととしてもよい。
【００９４】
図１０（ｃ）は、各行における奇数ラインの画素を偶数ラインに対して半画素ずらしたうえで、元の画像からはみ出す画素を削除したものである。もとより、奇数ラインの画素を偶数ラインに対して左方向に半画素分ずらしてよいし、右方向に半画素分ずらすこととしてもよい。あるいは、奇数ラインをずらさず偶数ラインをずらすこととしてもよい。
【００９５】
また、別の方法を用いて図１０（ｃ）に示した画素配列に変換することとしてもよい。例えば、図１０（ａ）に示した各行の奇数ラインについて、隣り合う画素の階調値の平均値を、新たに半画素ずらして配置する画素の階調値とすることによって、図１０（ｃ）に示した千鳥状の画素配列を有する画像データに変換処理するものとしてもよい。
【００９６】
以降の本実施例の説明では、ステップＳ３０にて図１０（ｂ）の画素配列の画像データに変換処理されたものとして扱う。具体的には、ＣＰＵ２６は、ＲＡＭ２７におけるバッファにおいて、奇数ラインに位置する各画素のアドレス位置が、Ｘ方向に半画素分（＝０．５）ずれたものとして以降の処理を行うことになる。例えば、アドレス（０，１）の座標位置は（０，１）から（０．５，１）にずれた位置として前述した未処理画素の選択やセルの重心位置の演算処理を行う。
【００９７】
次に、ステップＳ４０（図９）にて、ＣＣ法によるハーフトーン処理を行う。図１１及び図１２は、図１０（ｂ）に示した千鳥状の画素配列を有する画像データに対して、ＣＣ法によるハーフトーン処理を行った場合の処理の様子を示している。
【００９８】
この処理が開始されると、走査方向に従って、まず（ｎ，ｍ）が初期画素として選択される。そして、閾値“２５５”未満の場合、継続してセルの拡大処理がおこなわれ、まず図１１（ｂ）網掛け部に示したように、セルＣＬの重心ＧＣに最も近い画素（ｎ＋１，ｍ）が選択される。以下、図１１（ｃ）網掛け部に示した画素（ｎ，ｍ＋１）が、図１１（ｄ）網掛け部で示した画素（ｎ＋１，ｍ＋１）が、図１１（ｅ）網掛け部で示した画素（ｎ＋２，ｍ）が、図１１（ｆ）網掛け部で示した画素（ｎ＋１，ｍ＋２）が、都度算出されたそれぞれのセルＣＬの重心ＧＣに最も近い画素として順次選択されセルに組み入れられる。
【００９９】
次に、図１２（ａ）網掛け部で示した画素（ｎ＋２，ｍ＋１）がセルＣＬの重心ＧＣに最も近い画素として選択されると、セルの階調値は“２８０”（＝４０×７）となり、閾値“２５５”を超える。従って、閾値を超える分の階調値“２５”（＝２８０−２５５）を画素（ｎ＋２，ｍ＋１）に戻し、この画素を未処理画素とする（図１２（ｂ）網掛け部）。そして、図１１（ｃ）に示したように、算出されたセルＣＬの重心ＧＣが位置する画素（ｎ＋１，ｍ＋１）にドットを形成するための階調値“２５５”が付与される。
【０１００】
以上の処理が、入力画像データ全体に行なわれると、図１３（ａ）に示した入力バッファのように、網掛け部で示した画素について誤差データが戻されながら全ての画素のハーフトーン処理が進み、最終的に太枠線で示したようにセルが生成される。そして、図１３（ｂ）に示したように、出力バッファ２７３に“０”か“２５５”の階調データが書き込まれ、階調値“２５５”が書き込まれたアドレス位置に対応する位置にドットが形成され画像が出力される。
【０１０１】
図１３（ｃ）は、本実施例のハーフトーン処理によって形成されたドット（図中、網掛け部）の状態を示したもので、規則的なパターンや偏りがなく分散性がよいドットが形成されていることがわかる。なお、図中太枠線で示した元の入力画像に対して、奇数ラインの右端の画素、例えば画素（７，１）は半画素分はみ出している。従って、この画素位置に対応する出力バッファのアドレスにドットを形成するための階調値“２５５”が付与された場合は、本実施例ではドットを出力しないこととして扱う。もとより、元の入力画像に対して大きな出力画像にはなるが、はみ出した画素位置にドットを形成するようにしても差し支えない。
【０１０２】
ここで、本実施例の効果を分かり易く説明するため、入力画像データについて画素配列を変換処理せず、ドットマトリクス状のままＣＣ法を用いたハーフトーン処理を行った結果を図１４に示す。
【０１０３】
この場合、図１４（ａ）に示したように、網掛け部で示した画素について誤差データが戻されながらセルが生成されるが、生成されるセルの形状はおおよそ四角形状となる。そして、図１４（ｂ）に示したように、出力バッファ２７３の各アドレスに階調値“０”または“２５５”が書き込まれ、図１４（ｃ）に示したように、階調値“２５５”が書き込まれたアドレス位置に対応する位置にドット（図中、網掛け部）が形成され画像が出力される。
【０１０４】
図１４（ｃ）に示した出力画像では、画像の左上部分に出力される６個のドットは規則的に形成されている。これに対して図１３（ｃ）に示した出力画像では、ドットは規則的に形成されず、図１４（ｃ）に対して分散性がよいことがわかる。
【０１０５】
また、図４を用いて説明した画素配列がドットマトリクス状の画像データに対するＣＣ法によるハーフトーン処理では、選択すべき画素が複数存在する場合が何度か発生したが、図１１を用いて説明した本実施例の千鳥状の画素配列に変換した画像データに対するＣＣ法を用いたハーフトーン処理では、選択すべき画素が複数存在する場合が発生しなかった。従って、本実施例のように、画素配列を半画素ずらす場合は、画素をランダムに選択する処理を行わず、所定の操作方法にて選択することとしてもよい。こうすれば、セルの生成に関する処理負荷を軽減することができる。
【０１０６】
以上、本実施例によれば、入力画像の画素配列を、千鳥状の画素配列を有した画像データに変換処理し、ＣＣ法を用いたハーフトーン処理を行うことによって、規則的なパターンや偏りの無い分散性のよいドットを形成させることができ、視覚的に快適な出力画像を得ることができる。
【０１０７】
以上、本発明について最良の実施形態および実施例を用いて説明したが、本発明はこうした実施形態や実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。以下、変形例を挙げて説明する。
【０１０８】
「第１変形例」
前記実施例では、ドットマトリクス状の画素配列を千鳥状の画素配列に変換処理する際、各行の奇数ライン（または偶数ライン）に位置する画素をずらすこととしたが、第１変形例として、各列の奇数ライン（または偶数ライン）に位置する画素をずらすこととしてもよい。
【０１０９】
図１５（ａ）は、各列における奇数ラインに位置する画素を、偶数ラインに対して半画素分下方向にずらして千鳥状にしたものである。もとより、奇数ラインの画素を偶数ラインに対して上方向に半画素分ずらしてよい。あるいは、奇数ラインをずらさず偶数ラインをずらすこととしてもよい。
【０１１０】
図１５（ｂ）は、各行における奇数ラインの画素を偶数ラインに対して半画素下方向へずらしたうえで、元の画像からはみ出す画素を削除したものである。もとより、奇数ラインの画素を偶数ラインに対して上方向に半画素分ずらしてもよい。あるいは、奇数ラインをずらさず偶数ラインをずらすこととしてもよい。こうすれば、各行における奇数または偶数ラインをずらした場合とおおよそ同様な千鳥状の画素配列を有した画像データに変換されるため、ＣＣ法によるハーフトーン処理によって、分散性のよいドットの形成が期待できる。なお、本変形例の場合においては、未処理画素の探索方法を変更し、最も左側で最も上に位置する画素を順次選択する走査方法とすればよい。もとより、前述した最も上側で最も左に位置する画素を順次選択する走査方法としても差し支えない。
【０１１１】
「第２変形例」
前記実施例または第１変形例では、各行または各列の画素を半画素ずらして奇数ラインと偶数ラインの画素が交互の位置となる千鳥状の画素配列に変換することとしたが、第２変形例として、画素のすれ量が半画素でなく、半画素より少ないか、または多いずれ量の画素配列に変換することとしてもよい。さらにその変形例として、例えば奇数ライン毎（あるいは偶数ライン毎）に画素のずれ量を変更することとしてもよい。こうすれば、画素の配列が不規則になるため、ＣＣ法におけるセルの拡大処理（図３、ステップＳ２２０）において、選択すべき画素が不規則に変化することになる。この結果、生成されるセルの形状も不規則に変化する確率が高くなり、形成されるドットの分散性が向上することが期待できる。
【０１１２】
「第３変形例」
前記実施例では、入力画像の画素位置をずらすことによって千鳥状の画素配列に変換処理したため、画像全体の画素数は基本的に入力画像の画素数と同じ数量であったが、第３変形例では画素数を削減することによって千鳥状の画素配列を有する画像データに変換処理するものとしてもよい。本変形例を、図１６を用いて説明する。
【０１１３】
図１６（ａ）は、ステップＳ２０（図９）にて入力バッファ２７１に読み込まれたドットマトリクス状の画素配列を有する画像データの一例を示している。この画像データを図１６（ｂ）に示したように、各行（または各列）の画素を、1つ飛びに一行（または一列）ごと交互に削減して千鳥状の画素配列に変換する。このとき、千鳥状に残る画素の階調値は、本変形例では、千鳥状に残る対象となる画素の階調値と、その画素の周辺に位置する所定の画素、例えば千鳥状に残る対象となる画素の上下左右に存在する全ての画素の階調値とから算出した平均値とする。この場合、図１６（ｂ）のアドレス（０，０）に位置する画素の階調値は、図１６（ａ）のアドレス（０，０）、（１，０）、（０，１）の３つの画素の平均階調値であり、階調値“４５”（＝（４０＋５０＋４５）／３）となる。また図１６（ｂ）のアドレス（５，５）に位置する画素の階調値は、図１６（ａ）のアドレス（５，４）、（４，５）、（５，５）、（６，５）、（５，６）の５つの画素の平均階調値“４２”となる。
【０１１４】
ここで、千鳥状に残る各画素の階調値について、例えば図１６（ｂ）のアドレス（４，０）では階調値平均は“３７．５”（＝（３０＋４０＋４０＋４０）／４）となり整数値にならない。この場合は、四捨五入にて整数値化し“３８”とする。上述したように、各画素の画素値は８ビットで表された２５６階調（０から２５５までの整数値）としたためである。もとより、小数点以下の桁を含む階調値で表す場合は、小数点以下の桁数に合わせてビット数を増やすこととしてもよい。
【０１１５】
あるいは、図１６（ｃ）に示したように、千鳥状に残る対象となる画素の階調値を平均階調値とせず、図１６（ａ）に示した階調値をそのまま当該画素の階調値とすることとしてもよい。こうすれば、千鳥状に残る対象となる画素の階調値について演算処理を必要としないため、図１６（ｂ）の場合に比べて処理負荷が軽くなる。
【０１１６】
以上のように、各行（または各列）の画素を、1つ飛びに交互に削減し千鳥状の画素配列に変換することによって、入力画像データは各行において奇数ラインと偶数ラインとで互いに半画素分ずれた千鳥状の画素配列を有した画像データに変換されたことになる。従って、入力画像をこのような画素配置に変換処理すれば、前述したようにＣＣ法によるハーフトーン処理によって、分散性のよいドットが形成されることになる。
【０１１７】
また、図１６（ｂ）、（ｃ）に示した例では、入力画像の階調値のまま用いて千鳥状に残る画素の階調値の決定処理を行ったが、とくにこれに限らず、例えば、所定のマトリックスサイズを有する平滑フィルタを用いて画像データをフィルタ処理し、得られた各画素の階調値を用いて千鳥状に残す対象となる画素の階調値を決定してもよい。
【０１１８】
なお、第３変形例のように画素を削減して千鳥状の画素配列の画像データに変換した場合、セルの生成に際して前記実施例と同じ閾値を用いると、形成されるドットは、ほぼ元の入力画像の画素数に対して削減後の画素数の割合分だけ減少し、形成される全てのドットによる印刷面積はその割合分減少してしまう。従って、このような場合は、例えばレーザダイオードの駆動パルス幅を調整して形成するドットの大きさを大きくするとよい。こうすれば、ドットの密度は粗くなるが、ドットによる印刷面積を同じにすることができる。あるいは、ドットの大きさは変えずセルの生成に際して用いる閾値を小さくすることとしてもよい。こうすれば、セルを構成する画素数は少なくなるものの、元の入力画像とほぼ同じ数のドットを形成することができる。
【０１１９】
「第４変形例」
前記実施例では、基本的に画素のずらしによって千鳥状の画素配列に変換したため、画像全体の画素数はほぼ同じ数量であったが、第４変形例として、第３変形例とは逆に画素数を増加することによって千鳥状の画素配列を有する画像データに変換するものとしてもよい。本変形例を、図１７を用いて説明する。
【０１２０】
図１７（ａ）は、ステップＳ２０（図９）にて入力バッファ２７１に読み込まれたドットマトリクス状の画素配列を有する画像データの一例を示している。この画像データを図１７（ｂ）網掛け部に示したように、隣り合う行（または列）の全てのライン間に画素位置が交互になるよう一行（または一列）ずつ画素を増加して千鳥状の画素配列に変換処理する。このとき、増加する画素の階調値は、本変形例では、増加する画素の位置に対して周囲４つの画素の階調値を用い、それらの画素の階調値の平均値を、増加する画素の階調値として算出する。
【０１２１】
例えば、図１７（ｂ）に示したように、０行のラインと１行のラインとの間に０．５行の画素ラインを増加し、アドレス（０．５，０．５）に位置する画素の階調値は、アドレス（０，０）、（１，０）、（０，１）、（１，１）の４つの画素の平均階調値であり、階調値“４４”（≒（４０＋５０＋４５＋４０）／４）となる。またアドレス（４．５，０．５）に位置する画素の階調値は、アドレス（４，０）、（５，０）、（４，１）、（５，１）の４つの画素の平均階調値であり、階調値“４０”（＝（４０＋４０＋４０＋４０）／４）となる。もとより、増加する画素の階調値を平均値とせず、ニアレストネイバ法、バイリニア法、バイキュービック法など周知の補間処理方法を用いて算出した値としてもよい。
【０１２２】
なお、図１７の説明において、入力バッファ２７１に単位０．５のアドレスを設定するものとして説明したが、具体的な処理に際しては、例えば全て整数値のアドレスに置き換えるなど、ＲＡＭ２７のバッファ構成に合わせてアドレスを設定し直せばよい。
【０１２３】
以上本変形例によれば、隣接する行（または列）ライン間に新たに一行（または一列）画素ラインを増加させるため、入力画像データは各行において奇数ラインと偶数ラインとで互いに半画素分ずれた千鳥状の画素配列を有した画像データに変換されたことになる。従って、入力画像をこのように画素配置変換すれば、前述したようにＣＣ法によるハーフトーン処理によって、分散性のよいドットが形成されることになる。
【０１２４】
なお、第４変形例のように画素を増加して千鳥状の画素配列の画像データに変換した場合、セルの生成に際して前記実施例と同じ閾値を用いると、形成されるドットは、ほぼ元の入力画像の画素数に対して増加後の画素数の割合分だけ増加し、ドットによる印刷面積が増加してしまう。従って、このような場合は、例えばレーザダイオードの駆動パルス幅を調整して形成するドットの大きさを小さくするとよい。こうすれば、ドットの密度が細かくなり、ドットによる印刷面積を同じにすることができる。あるいは、セルの生成に際して用いる閾値を大きくすることとしてもよい。こうすれば、セルを構成する画素数は多くなり、より円形状に近いセルが生成できるとともに、元の入力画像とほぼ同じ数のドットを形成することができる。
【０１２５】
「第５変形例」
また、本発明が適用される画像処理装置２０は、レーザプリンタにて画像を印刷用紙に出力し再生表示するものとして前記実施例および変形例での処理を行うようにしたが、本発明はこれに限定されるものでなく、紙などの印刷媒体に、インクを吐出して印刷する方式のプリンタや、インクを熱転写して印刷する方式のプリンタなどといった種々のプリンタのほか、電子写真あるいはディスプレイなどにて画像を再生表示するものとして処理を行うようにしてもよい。
【０１２６】
「第６変形例」
さらに、本発明が適用される画像処理装置２０は画像入力装置１０と画像出力装置３０とから独立した形態であるものとしたが、プリンタやディスプレイなどの画像出力装置３０に組み込まれる形態としてもよいし、画像入力装置１０に組み込まれるものとしてもよい。あるいは、プリンタやディスプレイなどの画像出力装置が組み込まれたコピー機やコンピュータ機器、ワープロ、ファックス、携帯電話など種々の電子機器に、前記実施形態における画像処理装置が組み込まれて構成されるようにしてもよい。
【図面の簡単な説明】
【０１２７】
【図１】本発明が適用される一実施形態におけるシステム全体を示す構成図。
【図２】本実施形態での画像処理装置のハード構成を説明する模式図。
【図３】ＣＣ法によるハーフトーン処理を説明するフローチャート
【図４】ＣＣ法における階調変換処理の過程を説明するための説明図。
【図５】ＣＣ法における階調変換処理の過程を説明するための説明図。
【図６】ＲＡＭの構成と格納されるデータの例を説明する説明図。
【図７】ＲＡＭの構成と格納されるデータの例を説明する説明図。
【図８】ＲＡＭの構成と格納されるデータの例を説明する説明図。
【図９】本発明の１実施例によるハーフトーン処理を説明するフローチャート。
【図１０】入力画像の画素配列変換方法を説明するための説明図。
【図１１】画素配列変換後の画像データをＣＣ法で階調変換処理する過程を説明する説明図。
【図１２】画素配列変換後の画像データをＣＣ法で階調変換処理する過程を説明する説明図。
【図１３】画素配列変換後の画像データをＣＣ法で階調変換処理した結果を説明する説明図。
【図１４】画素配列変換前の画像データをＣＣ法で階調変換処理した結果を説明する説明図。
【図１５】入力画像の画素配列変換方法を説明するための説明図。
【図１６】入力画像の画素配列変換方法を説明するための説明図。
【図１７】入力画像の画素配列変換方法を説明するための説明図。
【符号の説明】
【０１２８】
１０…画像入力装置、１１…アプリケーション部、１２…ラスタライズ部、２０…画像処理装置、２１…色変換部、２２…ハーフトーン処理部、２２ａ…画像データ変換部、２２ｂ…画素群生成部、２２ｃ…基準点決定部、２２ｄ…データ付与部、２５…入出力Ｉ／Ｆ、２６…ＣＰＵ、２７…ＲＡＭ、２８…ＲＯＭ、２９…ハードディスク、３０…画像出力装置、３１…パルス幅変調部、３５…印刷エンジン、３６…レーザドライバ、３７…レーザダイオード、２７１…入力バッファ、２７２…ワーキングメモリ、２７３…出力バッファ、ＣＬ…セル、ＣＬ１、ＣＬ２…セル、ＧＣ…セルの重心位置、ＧＣ２…セルの重心位置、ＭＧ…未処理画素。
【図１】
2006005634.tif 000003
【図２】
2006005634.tif 000004
【図３】
2006005634.tif 000005
【図４】
2006005634.tif 000006
【図５】
2006005634.tif 000007
【図６】
2006005634.tif 000008
【図７】
2006005634.tif 000009
【図８】
2006005634.tif 000010
【図９】
2006005634.tif 000011
【図１０】
2006005634.tif 000012
【図１１】
2006005634.tif 000013
【図１２】
2006005634.tif 000014
【図１３】
2006005634.tif 000015
【図１４】
2006005634.tif 000016
【図１５】
2006005634.tif 000017
【図１６】
2006005634.tif 000018
【図１７】
2006005634.tif 000019