(57)【特許請求の範囲】
【請求項１】
ｎ個（ｎは２以上の整数）のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理方法であって、
ｎ個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてｎ＋１個のレベルの量子化値に変換し、ｎ個のイメージプレーンに係る第１の量子化値を生成する第１生成工程と、
前記ｎ個のイメージプレーンのうちのｎ−ｋ（ｋは１以上の整数）個のイメージプレーンの対応する画素の合計値と該画素の周辺画素から拡散された量子化誤差とを加算し、該加算の結果と前記第１の量子化値との差から残りのｋ個のイメージプレーンに係る第２の量子化値を生成する第２生成工程と、
前記第２の量子化値と前記第１の量子化値との差から前記ｎ−ｋ個のイメージプレーンに係る第３の量子化値を生成する第３生成工程と、
前記加算の結果と前記第３の量子化値との差から前記画素の量子化誤差を生成する誤差生成工程と、
前記第２及び第３生成工程で生成される量子化値を用いて前記ｎ個のイメージプレーンの各々の量子化値を決定する決定工程とを備えることを特徴とする画像処理方法。
【請求項２】
前記決定工程は、前記第３の量子化値を第１の量子化値として用い、前記ｎ−ｋをｎとして用いて前記第２及び第３生成工程を繰り返し実行することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記ｋは１であり、
前記決定工程は、
前記第２の量子化値を対応するイメージプレーンの最終量子化値として決定し、
前記第３の量子化値を前記第１の量子化値として用い、ｎの値を１ずつ減じて前記第２及び第３生成工程を繰り返し実行することを特徴とする請求項２に記載の画像処理方法。
【請求項４】
前記ｋが２以上の場合に、
前記決定工程は、前記ｋ個のプレーンのイメージデータの対応する画素の値の比と前記第２の量子化値とに基づいて、前記ｋ個のプレーンの各々の２値の量子化値を決定することを特徴とする請求項１に記載の画像処理方法。
【請求項５】
前記ｎ−ｋ個のイメージプレーンとｋ個のイメージプレーンを画素単位で入れ替えながら前記第２及び第３生成工程を実行することを特徴とする請求項１に記載の画像処理方法。
【請求項６】
ｎ個（ｎは２以上の整数）のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理装置であって、
ｎ個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてｎ＋１個のレベルの量子化値に変換し、ｎ個のイメージプレーンに係る第１の量子化値を生成する第１生成手段と、
前記ｎ個のイメージプレーンのうちのｎ−ｋ（ｋは１以上の整数）個のイメージプレーンの対応する画素の合計値と該画素の周辺画素から拡散された量子化誤差とを加算し、該加算の結果と前記第１の量子化値との差から残りのｋ個のイメージプレーンに係る第２の量子化値を生成する第２生成手段と、
前記第２の量子化値と前記第１の量子化値との差から前記ｎ−ｋ個のイメージプレーンに係る第３の量子化値を生成する第３生成手段と、
前記加算の結果と前記第３の量子化値との差から前記画素の量子化誤差を生成する誤差生成手段と、
前記第２及び第３生成手段で生成される量子化値を用いて前記ｎ個のイメージプレーンの各々の量子化値を決定する決定手段とを備えることを特徴とする画像処理装置。
【請求項７】
前記決定手段は、前記第３の量子化値を第１の量子化値として用い、前記ｎ−ｋをｎとして用いて前記第２及び第３生成手段を繰り返し実行することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記ｋは１であり、
前記決定手段は、
前記第２の量子化値を対応するイメージプレーンの最終量子化値として決定し、
前記第３の量子化値を前記第１の量子化値として用い、ｎの値を１ずつ減じて前記第２及び第３生成手段を繰り返し実行することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記ｋが２以上の場合に、
前記決定手段は、前記ｋ個のプレーンのイメージデータの対応する画素の値の比と前記第２の量子化値とに基づいて、前記ｋ個のプレーンの各々の２値の量子化値を決定することを特徴とする請求項６に記載の画像処理装置。
【請求項１０】
前記ｎ−ｋ個のイメージプレーンとｋ個のイメージプレーンを画素単位で入れ替えながら前記第２及び第３生成手段を実行することを特徴とする請求項６に記載の画像処理装置。
【請求項１１】
請求項１乃至５のいずれか１項に記載の画像処理方法の各工程をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トナーやインクなどに代表される記録材を用いて画像を形成するために、入力画像の階調数を、より少ない階調数へ変換する画像処理を実行する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
例えばワードプロセッサ、パーソナルコンピュータ、ファクシミリ等に於ける情報出力装置として、所望される文字や画像等の情報を用紙やフィルム等のシート状の記録媒体に記録を行う記録装置が用いられる。このような記録装置には様々な方式のものがあるが、中でも記録媒体に記録剤を付着させることで記録媒体上にテキストや画像を形成する方式が広く実用化されており、このような方式の代表例として、インクジェット記録装置がある。
【０００３】
インクジェット記録装置では、記録速度の向上や高画質化等のために、同一色同一濃度のインクを吐出可能な複数のインク吐出口（ノズル）を集積配列したノズル群を用いる。さらに、画質を向上するために、同一色で濃度の異なるインクを吐出可能としたものや、同一色で同一濃度のインクの吐出量を何段階かに変えて吐出可能としたノズル群が設けられる場合もある。
【０００４】
このような画像形成装置において、多値の入力画像データをドットの記録信号にあたる２値画像（または２値以上で入力階調数より少ない階調数を有する画像）に変換する手段として、R.Floydらによる誤差拡散法（非特許文献１）がある。この誤差拡散法は、ある画素で生じた二値化誤差を以降の複数画素へ拡散することにより、擬似的に階調表現を行うものである。
【０００５】
上記の誤差拡散法を用いて、同一色で濃度の異なるインクや、異なる色のインクのドット配置制御に関する画像処理方法が提案されている。例えば、特許文献１に開示された画像処理方法は、同一色で濃度の異なるインクドットを配置する際、まず濃度の高いドット（以下、濃ドットと記述する）を誤差拡散法で配置し、濃ドットの出力位置を最適に決定する。そして、この決定された濃ドットの出力位置を、濃度の低いドット（以下、淡ドットと記述する）の誤差拡散法による位置計算に反映させる。かかる技術によれば、濃ドットにより生じた濃度誤差を解消するように淡ドットの最適配置位置を決定することが可能となる。
【０００６】
また、特許文献２には、複数種類のドットに対応する独立した複数の画像データの相対関係に基づいて、複数種類のドットによって擬似階調画像を形成するための擬似階調出力値を決定することが開示されている。
【特許文献１】特許第３２０８７７７号明細書
【特許文献２】特開２００４-３３６５７０号公報
【非特許文献１】R.Floyd他、“An adaptive algorithm for spatial gray scale”, SID International Symposium Digest ofTechnical Papers, vol4.3, 1975, pp.36-37
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１による手法では、優先度の高いドットの配置を決定した後、その配置を反映するための補正データを生成し、該補正データを用いて次の優先度のドットのデータを補正してから配置位置を決定している。即ち、次の順位のドット配置を決定するためには、その上位の順位のドット配置に基づく補正データを生成し、当該次の順位のドットのデータを補正するという処理が必須であり、処理が複雑であるとともに、処理時間が増加してしまう。
【０００８】
また、特許文献１による手法では、優先度の高いドットから順に配置位置を決定し、その配置結果を考慮しながら次の優先度のドットの配置を決定していくので、全てのドットについて順次に、誤差拡散による配置計算を行わなければならない。即ち、濃度や、色、ドット径毎にインク量が指定されるｎ個のプレーンデータがあった場合、最終的なドット位置を求めるまでには、必ずｎ回の誤差拡散処理を実行しなければならない。
また、色が異なっても濃度が同じ色材の処理には有効とは言えない。例えば、濃度が同じシアン、マゼンタの２プレーンデータを２値化する際、シアン、マゼンタのうちどちらか一方の色の位置を最適に決定してしまうため、他方の色の位置については最適に決定することができない。
【０００９】
さらに、特許文献２による手法は、ＬＵＴテーブルにより、複数のプレーンに関して同時に擬似階調出力値を決定するものであり、ドット配置に関する優先順位という思想はない。
【００１０】
本発明は上記の課題に鑑みてなされたものであり、より簡易な手順で、ドットの優先度に従ったドット配置を可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するための本発明による画像処理方法は、
ｎ個（ｎは２以上の整数）のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理方法であって、
ｎ個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてｎ＋１個のレベルの量子化値に変換し、ｎ個のイメージプレーンに係る第１の量子化値を生成する第１生成工程と、
前記ｎ個のイメージプレーンのうちのｎ−ｋ（ｋは１以上の整数）個のイメージプレーンの対応する画素の合計値と該画素の周辺画素から拡散された量子化誤差とを加算し、該加算の結果と前記第１の量子化値との差から残りのｋ個のイメージプレーンに係る第２の量子化値を生成する第２生成工程と、
前記第２の量子化値と前記第１の量子化値との差から前記ｎ−ｋ個のイメージプレーンに係る第３の量子化値を生成する第３生成工程と、
前記加算の結果と前記第３の量子化値との差から前記画素の量子化誤差を生成する誤差生成工程と、
前記第２及び第３生成工程で生成される量子化値を用いて前記ｎ個のイメージプレーンの各々の量子化値を決定する決定工程とを備える。
【００１２】
また、上記の目的を達成するための本発明の他の態様による画像処理装置は、以下の構成を備える。すなわち、
ｎ個（ｎは２以上の整数）のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理装置であって、
ｎ個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてｎ＋１個のレベルの量子化値に変換し、ｎ個のイメージプレーンに係る第１の量子化値を生成する第１生成手段と、
前記ｎ個のイメージプレーンのうちのｎ−ｋ（ｋは１以上の整数）個のイメージプレーンの対応する画素の合計値と該画素の周辺画素から拡散された量子化誤差とを加算し、該加算の結果と前記第１の量子化値との差から残りのｋ個のイメージプレーンに係る第２の量子化値を生成する第２生成手段と、
前記第２の量子化値と前記第１の量子化値との差から前記ｎ−ｋ個のイメージプレーンに係る第３の量子化値を生成する第３生成手段と、
前記加算の結果と前記第３の量子化値との差から前記画素の量子化誤差を生成する誤差生成手段と、
前記第２及び第３生成手段で生成される量子化値を用いて前記ｎ個のイメージプレーンの各々の量子化値を決定する決定手段とを備える。
【発明の効果】
【００１３】
本発明によれば、より簡易な手順で、ドットの優先度に従ったドット配置が可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１５】
＜第１実施形態＞
図１は、第１実施形態による画像形成装置の構成を示したブロック図である。図１において、１は画像処理装置を、２はプリンタを示す。なお、画像処理装置１は例えば一般的なパーソナルコンピュータにインストールされたプリンタドライバによって実施され得る。その場合、以下に説明する画像処理装置１の各部は、コンピュータが所定のプログラムを実行することにより実現されることになる。また、別の構成としては、例えば、プリンタ２が画像処理装置１を含む構成としてもよい。
【００１６】
画像処理装置１とプリンタ２は、プリンタインタフェース又はネットワークインタフェースによって接続されている。画像処理装置１は、画像データ入力端子１０１より印刷対象の画像データを入力し、画像バッファ１０２にその入力画像データを格納する。色分解処理部１０３は、入力されたカラー画像をプリンタ２が備えるインク色へ色分解する。この色分解処理に際しては、色分解用ルックアップテーブル（ＬＵＴ）１０４が参照される。色分解用ＬＵＴ選択部１０５は図４に示すユーザインターフェース（ＵＩ）を介してユーザによって指定された処理状態に応じて、使用すべき色分解用ルックアップテーブル（ＬＵＴ）を選択する。
【００１７】
ハーフトーン処理部１０６は、色分解処理部１０３によって得られた各色の多階調（３階調以上）の画像データを２値画像データに変換する。得られた各色の２値画像データはハーフトーン画像格納メモリ１０７に格納される。ハーフトーン画像格納メモリ１０７に格納された２値画像データは出力端子１０８よりプリンタ２へ出力される。
【００１８】
プリンタ２は、記録ヘッド２０１を記録媒体２０２に対して相対的に縦横に移動することにより、記録媒体上に画像を形成する。記録ヘッドはワイヤードット方式、感熱方式、熱転写方式、インクジェット方式等の方式のものを用いることができ、いずれも一つ以上の記録素子（インクジェット方式であればノズル）を有する。移動部２０３は、ヘッド制御部２０４の制御下で、記録ヘッド２０１を移動する。搬送部２０５は、ヘッド制御部２０４の制御下で、記録媒体を搬送する。また、インク色及び吐出量選択部２０６は、画像処理装置１により形成された各色の２値画像データに基づいて、記録ヘッド２０１に搭載されるインク色と該ヘッドが吐出可能なインク吐出量の中から、インク色と吐出量を選択する。なお、本発明は上述したプリンタの記録方式に限定されるものではない。例えば、電子写真方式の画像形成装置であっても、本発明を適用可能である。
【００１９】
図２は記録ヘッド２０１の構成例を示す図である。本実施形態では、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）の４色のインクに加え、相対的にインク濃度が低い淡シアン（Ｌｃ）、淡マゼンタ（Ｌｍ）を含めた６色のインクを、該記録ヘッドに搭載している。更に、記録ヘッド２０１は、各色毎に、それぞれ吐出量（形成ドットサイズ）の異なる３種類の吐出ノズルを有する。即ち、吐出ノズル３０１はインク吐出量の多いインク滴を、吐出ノズル３０３は大ドットよりも相対的にインク吐出量の少ないインク滴を、吐出ノズル３０２は大ドットと小ドットの中間の吐出量のインク滴を吐出する。なお、以下、インク吐出量の多いインク滴で形成されるドットを大ドットと呼ぶ。また、大ドットを形成するインク吐出量よりも相対的に少ないインク吐出量で形成されるドットを小ドットと呼ぶ。また、大ドットと小ドットの中間の吐出量のインク滴で形成されるドットを中ドットと称する。このように、記録ヘッド２０１は、全６色のインクについて吐出量の異なる３種類のドットを形成可能となっている。
【００２０】
なお、図２においては、説明を簡単にするため用紙搬送方向にノズルが一列に配置された構成を有する記録ヘッドを示しているが、ノズルの数、配置はこれに限られるものではない。例えば、各吐出量に対しノズルが複数列あっても良いし、ノズルがジグザグに配置されているような構成であっても良い。また、図２ではインク色の配置順序はヘッド移動方向に一列となっているが、用紙搬送方向に一列に配置する構成であっても良い。
【００２１】
ここで、濃淡ドットと大中小ドットを使用することの効果について説明する。濃淡ドットを用いる目的は、ドットのオン・オフによって擬似的に階調表現を行うプリンタにおいて、濃度の異なる複数のインクを併用して画像形成することにより、表現可能な階調数を増加させることである。表現可能な階調数を増加することにより、豊かな階調再現性を実現させることができる。そして、更に、大中小ドットを用いることで、例えば粒状感が問題視されるハイライト領域には小ドットによる画像形成が可能となり、粒状感を大きく低減する効果がある。一方、シャドウ領域には中、大ドットを用いた画像形成が可能であるため、十分な濃度の確保も保証されるという利点を有する。ハイライト、シャドウの両領域の高画質化を同時に達成するためには、大中小ドットの併用は非常に効果的である。
【００２２】
次に、上述の機能構成を備えた本実施形態の画像処理装置１の動作について図３のフローチャートを参照して説明する。
【００２３】
まず、多階調のカラー入力画像データが入力端子１０１より入力され、画像バッファ１０２に格納される（ステップＳ１０１）。なお、入力画像データは、レッド（Ｒ）、グリーン（Ｇ）、ブルー（Ｂ）の３つの色成分によってカラー画像を表現している。
【００２４】
次に、色分解ＬＵＴ１０４内に複数種類保持されているＬＵＴを、色分解用ＬＵＴ選択部１０５にて１つ選択する。ＬＵＴの選択において、色分解用ＬＵＴ選択部１０５は、例えば図４に示すユーザインターフェース（ＵＩ）をパーソナルコンピュータのディスプレイ（不図示）に表示させ、ユーザに所望の印刷形態を選択させる。ユーザは、ＵＩ上の印刷スピードラジオボタン４０１により所望の印刷スピードを、画質ラジオボタン４０２により所望の画質をそれぞれ１つずつ選択できる。画質ラジオボタン４０２の項目の「粒状性」とは「画像のザラツキ」であり、「粒状性重視」とは画像のザラツキを極力抑えるという意味である。また、「バンディング」とは「画像のスジムラ」であり、「バンディング重視」とはスジムラを極力抑えるという意味である。ユーザによって上記２項目が選択されＯＫボタン４０３が押されると、色分解用ＬＵＴ選択部１０５は、当該ＵＩによる選択状態に対応したＬＵＴを選択する。
【００２５】
図４のＵＩの指定に応じて選択されるＬＵＴの一例を図５に示す。図５のテーブルは簡単のため、シアンの色分解ＬＵＴのみを示している。図５に示されるように、「粒状性重視」ほど小ドットを多く使うように設定されており、逆に「バンディング重視」ほど大ドットを多く使うように設定されている。これは、画像のザラツキを抑えるには小ドットが有効で、画像のスジムラを抑えるには大ドットが有効であるためである。さらに、印刷スピードが「遅い」ほど淡ドットを多く使うよう設定されており、「速い」ほど濃ドットを多く使うよう設定されている。その理由は、「遅く印刷」できる場合には、紙面のインク吸収量が増えるため画質的に有利な淡ドットを多く使用できるからである。また、一方、「速く印刷」しなければならない場合は、紙面のインク吸収量が減るため少ないインク量で紙面を埋めるために濃ドットを多く使用しなければならないためである。
【００２６】
次に、色分解処理部１０３は、色分解用ＬＵＴ選択部１０５で選択されたＬＵＴを用いて、画像バッファ１０２に格納された多階調のカラー入力画像データの色分解処理を行なう（ステップＳ１０３）。この色分解処理では、カラー入力画像データをＲＧＢからＣＭＹＫ及びＬｃＬｍのインク色プレーンへ色分解するとともに、各色毎に吐出量の異なる大中小ドットへのプレーンへ分解する。
【００２７】
第１実施形態の記録ヘッドは、６種類の各インク色に対し、それぞれ大中小３種類のドットを保有する。そのため、ＲＧＢのカラー入力画像データは、ＣＭＹＫＬｃＬｍの各プレーンに大中小ドットを持たせた計１８プレーンの画像データへ変換される。即ち、１８種類の記録態様に対応した１８種類のプレーンの画像データが生成される。なお、色分解処理の詳細については後述する。
【００２８】
次に、ハーフトーン処理部１０６はハーフトーン処理のための画素位置選択処理を行い（ステップＳ１０４）、少ない階調数に変換するハーフトーン処理を実施する（ステップＳ１０５）。本実施形態では、色分解処理部１０３によって入力画像の各画素データを８ビットの階調値のプレーンへ分解する。そして、ハーフトーン処理部１０６は色分解処理部１０３によって得られたプレーンを２レベルの階調値のデータ（２値データ）に変換する。なお、第１実施形態のハーフトーン処理は、多値の入力画像データを２値画像（または２値以上で入力階調数より少ない階調数の画像）に変換する処理として、例えばR.Floydらによる誤差拡散法（非特許文献１参照）を用いる。なお、本実施形態のハーフトーン処理部１０６の詳細については後述する。
【００２９】
以上のハーフトーン処理後の２値画像データはハーフトーン画像格納メモリ１０７に格納される（ステップＳ１０６）。図６は、ハーフトーン処理部１０６に入力される各記録態様に対応するプレーン６１と、ハーフトーン画像格納メモリ１０７に格納される２値画像データ６２の構成例を示した図である。色分解処理部１０３は、入力画像の横画素数Ｗと縦画素数Ｈと同数の二次元的な記憶領域Ｉ(x、y)に多値（８ビット）のデータが配置されたプレーン６１（多値画像データ）の各画素値を生成する。ハーフトーン処理部１０６は、プレーン６１に階調変換処理を施して各色、ドットサイズのプレーンの各画素位置の２値データを生成する。ハーフトーン画像格納メモリ１０７は、入力画像の横画素数Ｗと縦画素数Ｈと同数の二次元的な記憶領域Ｏ(x、y)を有し、各画素位置に対応する２値画像データを格納する。なお、図８で後述する構成からもわかるように、本実施形態では、各プレーンの対応する画素を順次に入力して各記録態様に対応した２値画像データを生成していく。したがって、多値画像のプレーン６１全体を保持するメモリ空間を用意する必要はない。また、ハーフトーン画像格納メモリ１０７にしても、例えばバンド単位の記録動作に必要なサイズのメモリ空間を用意したものであっても良い。
【００３０】
ハーフトーン画像格納メモリ１０７に格納されたハーフトーン処理後の画像データは出力ドットパターンとして画像データ出力端子１０８より出力される（ステップＳ１０８）。プリンタ２は、画像データ出力端子１０８より出力された画像データを受信し、該画像データに従ってインク色及び吐出量を選択して画像形成を行う。画像の形成において、プリンタ２は、例えば、記録ヘッド２０１を記録媒体に対して左から右に移動しながら一定の駆動間隔で各ノズルを駆動して記録媒体上に画像を記録していく。一回の走査が終了すると、記録ヘッドを左端に戻すと同時に、記録媒体２０２を一定量搬送する。以上の処理を繰り返すことにより画像の形成が行われる。
【００３１】
以上で、多階調のカラー入力画像データに対する一連の画像形成処理が完了する。
【００３２】
次に、本実施形態の色分解処理について図７を用いて詳細に説明する。図７は、画像処理装置１による色分解処理部１０３の構成を示している。なお、濃淡大中小ドット分解処理用ＬＵＴ５０６と大中小ドット分解処理用ＬＵＴ５０８は、色分解用ＬＵＴ１０４に含まれている。
【００３３】
まず、輝度濃度変換部５０１は、ＲＧＢ色空間のデータをＣＭＹ色空間のデータ変換する。即ち、入力された輝度情報８ビットの画像データＲ'Ｇ'Ｂ'を以下の（１）〜（３）次式に基づきＣＭＹへ変換する。
Ｃ＝−αlog(Ｒ'／２５５)      ・・・（１）
Ｍ＝−αlog(Ｇ'／２５５)      ・・・（２）
Ｙ＝−αlog(Ｂ'／２５５)      ・・・（３）
但し、αは任意の実数である。
【００３４】
次に、ＵＣＲ／ＧＢ処理部５０２は、ＢＧ設定部５０３に設定されたβ(Min(Ｃ,Ｍ,Ｙ),μ)、及びＵＣＲ量設定部５０４に設定された値μにより、次式の通りＣＭＹデータをＣＭＹＫデータに変換する。
Ｃ'＝Ｃ−(μ/１００)×Min(Ｃ,Ｍ,Ｙ)                     ・・・（４）
Ｍ'＝Ｍ−(μ/１００)×Min(Ｃ,Ｍ,Ｙ)                     ・・・（５）
Ｙ'＝Ｙ−(μ/１００)×Min(Ｃ,Ｍ,Ｙ)                     ・・・（６）
Ｋ'＝ β(Min(Ｃ,Ｍ,Ｙ),μ)×(μ/１００)×Min(Ｃ,Ｍ,Ｙ)  ・・・（７）
ここで、β(Min(Ｃ,Ｍ,Ｙ),μ)は、Min(Ｃ,Ｍ,Ｙ)及びμによって変動する実数であり、この値によってＫインクの使用方法を設定することができる。
【００３５】
続いて、濃淡大中小ドット分解処理部５０５は、異なる２種類のインク濃度を備えるＣ'及びＭ'の２色について、濃淡大中小ドット分解処理用ＬＵＴ５０６を参照し、次式の通り濃淡インク分解及び大中小ドット分解を実施する。
Ｃ_l'＝ Ｃ_l(Ｃ')        ・・・（８）
Ｃ_m'＝ Ｃ_m(Ｃ')        ・・・（９）
Ｃ_s'＝ Ｃ_s(Ｃ')        ・・・（１０）
Ｌｃ_l'＝ Ｌｃ_l(Ｃ')    ・・・（１１）
Ｌｃ_m'＝ Ｌｃ_m(Ｃ')    ・・・（１２）
Ｌｃ_s'＝ Ｌｃ_s(Ｃ')    ・・・（１３）
Ｍ_l'＝ Ｍ_l(Ｍ')        ・・・（１４）
Ｍ_m'＝ Ｍ_m(Ｍ')        ・・・（１５）
Ｍ_s'＝ Ｍ_s(Ｍ')        ・・・（１６）
Ｌｍ_l'＝ Ｌｍ_l(Ｍ')    ・・・（１７）
Ｌｍ_m'＝ Ｌｍ_m(Ｍ')    ・・・（１８）
Ｌｍ_s'＝ Ｌｍ_s(Ｍ')    ・・・（１９）
【００３６】
なお、Ｃ_l'、Ｃ_m'、Ｃ_s'、Ｌｃ_l'、Ｌｃ_m'、Ｌｃ_s'は、濃淡大中小ドット分解後のシアン大ドット、シアン中ドット、シアン小ドット、淡シアン大ドット、淡シアン中ドット、淡シアン小ドットの出力データ値をそれぞれ示している。また、マゼンタに関しても同様であり、Ｍ_l'、Ｍ_m'、Ｍ_s'、Ｌｍ_l'、Ｌｍ_m'、Ｌｍ_s'は、それぞれマゼンタ大ドット、マゼンタ中ドット、マゼンタ小ドット、淡マゼンタ大ドット、淡マゼンタ中ドット、淡マゼンタ小ドットの出力データ値を表している。式（８）から式（１９）の右辺に定義される各関数が濃淡大中小ドット分解処理用ＬＵＴ５０６に該当する。
【００３７】
一方、Ｙ'及びＫ'の２色については淡インクを具備しない構成となっている。従って、前述の濃淡インク分解処理を持たない大中小ドット分解処理部５０７にて、大中小ドット分解処理用ＬＵＴ５０８を参照して、次式の通り大中小ドット分解処理を実施する。
Ｙ_l'＝ Ｙ_l(Ｙ')        ・・・（２０）
Ｙ_m'＝ Ｙ_m(Ｙ')        ・・・（２１）
Ｙ_s'＝ Ｙ_s(Ｙ')        ・・・（２２）
Ｋ_l'＝ Ｋ_l(Ｋ')        ・・・（２３）
Ｋ_m'＝ Ｋ_m(Ｋ')        ・・・（２４）
Ｋ_s'＝ Ｋ_s(Ｋ')        ・・・（２５）
なお、Ｙ_l'、Ｙ_m'、Ｙ_s'、Ｋ_l'、Ｋ_m'、Ｋ_s'は、大中小ドット分解処理後のイエロー大ドット、イエロー中ドット、イエロー小ドット、ブラック大ドット、ブラック中ドット、ブラック小ドットをそれぞれ示している。
【００３８】
以上の処理工程を通じて第１実施形態の色分解処理が完了する。
【００３９】
次に、第１実施形態のハーフトーン処理部１０６において用いられる誤差拡散法について説明する。なお、上述したように、本実施形態における色分解処理後の各プレーン画像は０〜２５５の８ビット画像とする。また、第１実施形態では、ｎプレーンデータに対してｎ回の誤差拡散処理を行う「高画質処理」について説明する。ここでは説明を簡略化するため、シアンの大、中、小ドットプレーン、Ｃ_l'、Ｃ_m'、Ｃ_s'における誤差拡散処理による擬似階調処理を例として説明する。図８は、第１実施形態によるハーフトーン処理部１０６の機能構成を説明する図である。また、図１３はハーフトーン処理部１０６の動作を説明するフローチャートである。図８に示す構成はその一部或いは全てをソフトウエアにより実現してもよい。
【００４０】
大，中，小の３つのドットプレーンのデータ（各プレーンは０〜２５５の値をとる）に対して２値化（量子化値０，２５５）を行う場合、まず４値化部６０１は、大・中・小の３つのドットプレーンの対応画素の合計データＩ_lmsを入力する。そして、入力されたＩ_lmsに対して誤差拡散処理を施し、４値化（量子化値０，２５５，５１０，７６５）を行う。
【００４１】
より具体的に説明すると、まずステップＳ２０１において、大，中，小ドットプレーンの対応する画素（注目画素）の画素値の合計データＩ_lmsを４値化部６０１に入力する。ここで、I_lmsは次式のように算出される。
Ｉ_lms ＝ Ｃ_l'＋Ｃ_m'＋Ｃ_s'    ・・・（２６）
【００４２】
また、本実施形態では、誤差拡散処理のための誤差拡散係数が図９のようにＫ１〜Ｋ４の４つの係数を持つものとする。例えば、Ｋ１＝７／１６、Ｋ２＝３／１６、Ｋ３＝５／１６、Ｋ４＝１／１６とする。このような誤差拡散係数により誤差を拡散、累積するために、４値化部６０１における累積誤差ラインバッファ６０４は、図１０の（ａ）に示す構成を有する。即ち、１個の記憶領域Ｅ_lms0と、入力画像の横画素数Ｗと同数の記憶領域Ｅ_lms(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差が格納されていく。なお、累積誤差ラインバッファ６０４は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【００４３】
ステップＳ２０２において、累積誤差加算部６０５は、注目画素の横画素位置ｘに対応する誤差Ｅ_lms(x)を累積誤差ラインバッファ６０４より読み出し、加算する。即ち、入力された合計データをＩ_lms、累積誤差加算後のデータをＩ_lms'とすると、
Ｉ_lms'＝Ｉ_lms＋Ｅ_lms(x)        …（２７）
となる。
【００４４】
次に、ステップＳ２０３において、閾値選択部６０６は閾値Ｔ_lmsを選択する。閾値Ｔ_lmsは、例えば、入力画素データＩ_lmsに応じて、
Ｔ_lms(Ｉ_lms)＝１２８  （０≦Ｉ_lms≦２５５）      ・・・（２８）
Ｔ_lms(Ｉ_lms)＝３８４  （２５５＜Ｉ_lms≦５１０）  ・・・（２９）
Ｔ_lms(Ｉ_lms)＝６４０  （５１０＜Ｉ_lms≦７６５）  ・・・（３０）
と設定される。或いは、ドット生成遅延を回避するために、平均量子化誤差が小さくなるように閾値Ｔ_lmsを入力画素データＩ_lmsに応じて細かく変更しても良い。
【００４５】
次に、ステップＳ２０４において、量子化部６０７は、誤差加算後の画素データＩ_lms'と閾値Ｔ(Ｉ_lms)とを比較し、出力画素値Out_lmsを決定する。その規則は次の通りである。
Out_lms＝０                                     ・・・（３１）
（０≦Ｉ_lms≦２５５，Ｉ_lms'＜Ｔ(Ｉ_lms)）
Out_lms＝２５５                                 ・・・（３２）
（０≦Ｉ_lms≦２５５，Ｉ_lms'≧Ｔ(Ｉ_lms)）又は
（２５５＜Ｉ_lms≦５１０，Ｉ_lms'＜Ｔ(Ｉ_lms)）
Out_lms＝５１０                                 ・・・（３３）
（２５５≦Ｉ_lms≦５１０，Ｉ_lms'≧Ｔ(Ｉ_lms)）又は
（５１０＜Ｉ_lms≦７６５，Ｉ_lms'＜Ｔ(Ｉ_lms)）
Out_lms＝７６５                                 ・・・（３４）
（５１０＜Ｉ_lms≦７６５，Ｉ_lms'≧Ｔ(Ｉ_lms)）
【００４６】
ここで大・中・小の３つのドットプレーンの注目画素の合計値（Ｉ_lms）を４値化することの意味を説明する。例えば式（３２）に示すようにOut_lms＝２５５となることは、その場所に、大・中・小いずれかのドットが１つ打たれることを意味する。すなわち、Out_lms＝２５５とは、その場所に大ドットが確定するわけでなく、中ドット、小ドットも確定しない。この時点で確定していることは、大か中か小の、どのドットが打たれるかわからないが、少なくともどれか一つは打たれることである。
【００４７】
同様にOut_lms＝５１０となることは、その場所に、大・中・小いずれかのドットが２つ打たれることを意味する。この時点で確定していることは、大ドットか中ドットか小ドットか打たれるかわからないが、少なくともどれか２つは打たれることである。ただし、同じドットは最大でも1つしか打つことができない。
【００４８】
以上をまとめると、以下のとおりである。
Out_lms＝０      ・・・大・中・小ドットのいずれも打たれないことが確定。  
Out_lms＝２５５  ・・・大・中・小ドットのいずれか１つが打たれる。  
Out_lms＝５１０  ・・・大・中・小ドットのいずれか２つが打たれる。ただし同じドットが２つ打たれることはない。  
Out_lms＝７６５  ・・・大・中・小ドットのいずれか３つが打たれる。ただし同じドットが２つ打たれることはない。すなわち、大、中、小ドットは必ず打たれることが確定する。
【００４９】
次に、ステップＳ２０５において、誤差演算部６０８で注目画素の合計値Ｉ_lmsに誤差を加算した後の画素データＩ_lms'と出力画素値Out_lmsとの差分Err_lmsを、次のようにして計算する。
Err_lms(ｘ)＝Ｉ_lms'− Out_lms      ・・・（３５）
【００５０】
そして、ステップＳ２０６において、誤差拡散部６０９は、横画素位置ｘに応じて、累積誤差バッファ６０４において、以下の様に誤差Err_lms（ｘ）の拡散処理を行う。
Ｅ_lms(x+1) ← Ｅ_lms(x+1)＋Err_lms(x)×７／１６  （ｘ＜Ｗ）
Ｅ_lms(x-1) ← Ｅ_lms(x-1)＋Err_lms(x)×３／１６  （ｘ＞１）
Ｅ_lms(x) ← E_lms0＋Err_lms(x)×５／１６        （１＜ｘ＜Ｗ）
Ｅ_lms(x) ← E_lms0＋Err_lms(x)×８／１６        （ｘ＝１）
Ｅ_lms(x) ← E_lms0＋Err_lms(x)×１３／１６      （ｘ＝Ｗ）
E_lms0 ← Ｅ_lms×１／１６                        （ｘ＜Ｗ）
E_lms0 ← ０                                      （ｘ＝Ｗ）
・・・（３６）
【００５１】
以上で、シアンの大、中、小ドット、Ｃ_l'、Ｃ_m'、Ｃ_s'の１画素分の３プレーン合計データに対して４値化が完了する。以上の大・中・小の３つのドットプレーンの合計データの４値化処理により、３つのドットプレーンのどのドットが打たれるかわからないが、少なくとも３プレーントータルで、最適な配置が確保されることになる。
【００５２】
次に、３値化部６０２において、大・中の２つのドットプレーンの注目画素の画素値の合計データＩ_lmに対して誤差拡散処理を施し３値化（量子化値０，２５５，５１０）を行う。
【００５３】
まずステップＳ２０７において、合計データＩ_lmを３値化部６０２に入力する。なおＩ_lmは以下のように算出される。
Ｉ_lm ＝ Ｃ_l'＋Ｃ_m'      ・・・（３７）
【００５４】
図８の３値化部６０２における累積誤差ラインバッファ６１０は、累積誤差ラインバッファ６０４と同様の構成を有する。すなわち、累積誤差ラインバッファ６１０は図１０の（ｂ）に示されるように、１個の記憶領域Ｅ_lm0と入力画像の横画素数Ｗと同数の記憶領域Ｅ_lm(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ６１０は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【００５５】
次に、ステップＳ２０８において、累積誤差加算部６１１で、注目画素の横画素位置ｘに対応する誤差Ｅ_lm(x)が加算される。即ち、入力された注目画素の合計値をＩ_lm、累積誤差加算後のデータをＩ_lm'とすると、
Ｉ_lm'＝Ｉ_lm＋Ｅ_lm(x)      ・・・（３８）
となる。
【００５６】
次に、ステップＳ２０９において、閾値選択部６１２で閾値Ｔ_lmを選択する。閾値Ｔ_lmの選択において、
ｔ_lm＝Ｉ_lms−Ｉ_lm         ・・・（３９）
とおくと、閾値Ｔ_lmは、
Ｔ_lm(ｔ_lm)＝１２８  （０≦ｔ_lm≦２５５）  ・・・（４０）
と設定される。なお、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、閾値Ｔ_lm(ｔ_lm)をｔ_lmに応じて細かく変更しても良い。なお、Ｉ_lms−Ｉ_lmは常に２５５以下となるので、本実施形態では必ずＴ_lm(ｔ_lm)＝１２８をとる。
【００５７】
次に、ステップＳ２１０において、量子化部６１３は、誤差加算後の画素データＩ_lm'と閾値Ｔ(ｔ_lm)と前述の３ドットプレーンの多値化結果Out_lmsとを比較する。そしてその比赤く結果に基づいて、出力画素値Out_lm（３値化の値）と小ドット最終結果Out_sを決定する。その規則は次の通りである。
Out_lms−Ｉ_lm'≧Ｔ(ｔ_lm)のとき：           ・・・（４１）
Out_lm＝Out_lms−２５５                  ・・・（４２）
Out_s＝２５５                            ・・・（４３）
Out_lms−Ｉ_lm'＜Ｔ(ｔ_lm)のとき：           ・・・（４４）
Out_lm＝Out_lms                          ・・・（４５）
Out_s＝０                                ・・・（４６）
【００５８】
例えば、Out_lms＝７６５の時、Out_lms−Ｉ_lm’≧Ｔ(ｔ_lm)となるため、式（４１）の条件が成立し、Out_lm＝５１０となる。このようにして、式（４１）〜（４６）で、大、中の２つのドットプレーンの合計データの３値化（量子化値０，２５５，５１０）が決定する。また、これと同時に、小ドットプレーン（Out_s）の２値化（量子化値０，２５５）が決定する。すなわち、この時点で小ドットプレーンの２値データが確定することになる。なお、式（４３）は小ドットが打たれることを意味し、式（４６）は小ドットが打たれないことを意味する。
【００５９】
ここで大・中の２つのドットプレーンの合計データの３値化（I_lm'）の意味を説明する。例えばOut_lm＝２５５とは、その場所に、大・中いずれかのドットが１つ打たれることを意味する。すなわち、Out_lm＝２５５とは、その場所に大ドットが確定するわけでなく、中ドットも確定しない。この時点で確定していることは、大か中の、いずれのドットが打たれるかわからないが、少なくともどれか一つは打たれることである。
【００６０】
さらに、Out_lms＝５１０とは、その場所に、大・中いずれかのドットが２つ打たれることを意味する。同じドットは最大でも１つしか打つことができないという前提上、大・中のどちらも打たれることを意味する。
【００６１】
以上をまとめると次のようになる。
Out_lm＝０     ・・・大・中ドットのいずれも打たれないことが確定。  
Out_lm＝２５５ ・・・大・中ドットのいずれか１つが打たれる。  
Out_lm＝５１０ ・・・大・中ドットのいずれか２つが打たれる。ただし同じドットが２つ打たれることはない。すなわち、大、中ドットは必ず打たれることが確定する。
【００６２】
ステップＳ２１１において、誤差演算部６１４は注目画素Ｉ_lmに誤差加算後の画素データＩ_lm'と出力画素値Out_lmとの差分Err_lmを、次の式(４７)ようにして計算する。
Err_lm(x)＝Ｉ_lm'−Out_lm      ・・・（４７）
【００６３】
ステップＳ２１２において、誤差拡散部６１５は、誤差拡散部６０９と同様に、注目画素の横画素位置ｘに応じて、累積誤差ラインバッファ６１０を用いて以下の様に誤差Err_lm(x)を拡散する。
Ｅ_lm(x+1) ← E_lm(x+1)＋Err_lm(x)×７／１６        （ｘ＜Ｗ）
Ｅ_lm(x-1) ← E_lm(x-1)＋Err_lm(x)×３／１６        （ｘ＞１）
Ｅ_lm(x) ← E_lm0＋Err_lm(x)×５／１６              （１＜ｘ＜Ｗ）
Ｅ_lm(x) ← E_lm0＋Err_lm(x)×８／１６              （ｘ＝１）
Ｅ_lm(x) ← E_lm0＋Err_lm(x)×１３／１６            （ｘ＝Ｗ）
E_lm0 ← Ｅ_lm×１／１６                            （ｘ＜Ｗ）
E_lm0 ← ０                                         （ｘ＝Ｗ）
・・・（４８）
【００６４】
以上で、１画素分の大中濃シアンドット、Ｃ_l'、Ｃ_m'の２プレーンの合計データに対して３値化（量子化値０，２５５，５１０）が完了する。また、同時に、小濃シアンドットＣ_s'の２値化（量子化値０，２５５）結果が確定する。
【００６５】
大・中の２つのドットプレーンの合計データの３値化は、当該２つのドットプレーンのどのドットが打たれるかわからないが、少なくとも２プレーントータルで、最適な配置を確保することに目的がある。そして、最適配置の余りとして、残りの１つのドットプレーン（小ドットＣ_s'）の２値化結果が確定するわけである。すなわち、大・中ドットは最適配置となり、結果として小ドットは大・中ドットを最適配置した余りの位置に配置される。このようにする理由には、視覚的に目立たない小ドットを最適配置するよりも、大・中ドットを優先的に最適配置したほうが、視覚的に良好な画像が得られるからである。
【００６６】
次に、大ドットのプレーンデータＩ_lに対して誤差拡散処理を施し２値化を行う。まずステップＳ２１３において、大ドットの注目画素のデータＩ_lを２値化部６０３に入力する。なおＩ_lは以下のように算出される。
Ｉ_l＝Ｃ_l'            ・・・（４９）
【００６７】
図８の２値化部６０３における累積誤差ラインバッファ６１６は、累積誤差ラインバッファ６０４と同様の構成を有する。即ち、累積誤差ラインバッファ６１６は、図１０の（ｃ）に示すように、１個の記憶領域Ｅ_l0と入力画像の横画素数Ｗと同数の記憶領域Ｅ_l(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ６１６は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【００６８】
次に、ステップＳ２１４において、累積誤差加算部６１７で入力画素データの横画素位置ｘに対応する誤差Ｅ_l(x)が加算される。即ち、入力された注目画素データをＩ_l、累積誤差加算後のデータをＩ_l'とすると、
Ｉ_l'＝Ｉ_l＋Ｅ_l(x)        ・・・（５０）
となる。
【００６９】
次にステップＳ２１５において、閾値選択部６１８は、閾値Ｔ_lを選択する。閾値Ｔ_lの選択においては、例えば、
ｔ_l＝Ｉ_lm−Ｉ_l                          ・・・（５１Ａ）
とおくと、閾値Ｔ_lは、
Ｔ_l(ｔ_l)＝１２８  （０≦ｔ_l≦２５５） ・・・（５１Ｂ）
と設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、ｔ_lに応じて細かく閾値Ｔ_lを変更しても良い。なお、Ｉ_lm−Ｉ_lは２５５以下となるので、本実施形態では必ずＴ_l(ｔ_lm)＝１２８をとる。
【００７０】
次に、ステップＳ２１６において、大量子化部６１９は、誤差加算後の画素データＩ_l'と閾値Ｔ_l(ｔ_l)と前述の大・中の２つのドットプレーンの合計データの多値化結果Out_lm（量子化値０，２５５，５１０）とを比較する。そして、この比較に基づいて、中ドットの最終２値化結果Out_m、と大ドットの最終２値化結果Out_lを決定する。その規則は次の通りである。
Out_lm−Ｉ_l'≧Ｔ(ｔ_l)のとき、        ・・・（５２）
Out_l ＝ Out_lm−２５５            ・・・（５３）
Out_m ＝ ２５５                    ・・・（５４）
Out_lm−Ｉ_l'＜Ｔ(ｔ_l)のとき          ・・・（５５）
Out_l ＝ Out_lm                    ・・・（５６）
Out_m ＝ ０                        ・・・（５７）
【００７１】
例えば、Out_lm＝５１０の時、Out_lm−Ｉ_l’≧Ｔ(ｔ_l)となるため、式（５２）の条件となり、Out_l＝２５５となる。このため、式（５２）〜（５７）で、大プレーンデータOut_lの２値化が決定すると同時に中プレーンデータOut_mの２値化が決定する。すなわち、中ドット最終結果Out_mと大ドットOut_lが同時に確定する。なお、式（５４）は中ドットが打たれることを意味し、式（５７）は中ドットが打たれないことを意味する。
【００７２】
次に、ステップＳ２１７において、大誤差演算部６２０で注目画素Ｉ_lに誤差加算後の画素データＩ_l'と出力画素値Out_lとの差分Err_lを、次のようにして計算する。
Err_l(x)＝Ｉ_l'− Out_l          ・・・（５７）
【００７３】
次に、ステップＳ２１８において、誤差拡散部６２１は、誤差拡散部６０４，６１５と同様に、誤差を拡散する。即ち、累積誤差ラインバッファ６１６を用いて、横画素位置ｘに応じて以下の様に誤差Err_l（ｘ）の拡散処理が行われる。
Ｅ_l(x+1) ← Ｅ_l(x+1)＋Err_l(x)×７／１６      （ｘ＜Ｗ）
Ｅ_l(x-1) ← Ｅ_l(x-1)＋Err_l(x)×３／１６      （ｘ＞１）
Ｅ_l(x) ← E_l0＋Err_l(x)×５／１６            （１＜ｘ＜Ｗ）
Ｅ_l(x) ← E_l0＋Err_l(x)×８／１６            （ｘ＝１）
Ｅ_l(x) ← E_l0＋Err_l(x)×１３／１６          （ｘ＝Ｗ）
E_l0 ← Ｅ_l×１／１６                          （ｘ＜Ｗ）
E_l0 ← ０                                      （ｘ＝Ｗ）
・・・（５８）
【００７４】
以上で、シアンの１画素分の大ドットプレーンデータＣ_l'に対して２値化（量子化値０，２５５）が完了する。同時に、シアンの１画素分の中ドットプレーンデータＣ_m'の２値化（量子化値０，２５５）結果も確定する。
【００７５】
上述の大プレーンデータの２値化は、大プレーンに最適配置を確保することに目的がある。そして、大ドットの最適配置の余りとして、中ドットの２値化結果が確定するわけである。すなわち、大ドットは最適配置となり、結果として中ドットは大ドットを最適配置した余りとなる。このようにする理由には、大ドットに比べて視覚的に目立たない中ドットを最適配置するよりも、大ドットを最適配置したほうが、視覚的に良好な画像が得られるからである。ただし、４値化部６０１によってはじめに大中小のドットプレーンの合計データを誤差拡散しているので、大中小ドットのトータルで見れば最適配置となっている。そのため、大中小ドットのトータルで最適配置となり、且つ、視覚的に目立つ大ドット単独でも最適配置となる。
【００７６】
以上説明したステップＳ２０１〜Ｓ２１８の処理を全ての画素について行なう（ステップＳ２１９）ことにより、各ブレーンデータのドット位置を決定することができる。
【００７７】
以上をまとめると、第１実施形態のハーフトーン処理では、大中小ドットの各プレーンの対応する画素の合計値を誤差拡散処理し、その後大ドットの値を優先して配置を決定している。したがって、
・大中小ドットのトータルで最適配置
・大ドット単独で最適配置
となる特徴を持つ。
【００７８】
なお、上記実施形態では、ハーフトーン処理の例としてシアンの大中小ドットの配置に関して説明したが、他のドット組み合わせでも良いことはいうまでもない。本実施形態で説明した処理の流れでは、「大中小３プレーン４値化→大中２プレーン３値化→大プレーン２値化」により「小ドット→中ドット→大ドット」の順にドット位置を決定したが、これ以外の処理の例として次のようなものがあげられる。例えば、
・「濃淡シアン２プレーン３値化→濃シアン１プレーン２値化」により「淡シアン→濃シアン」の順にドット位置を決める。
・「シアン、マゼンタ２プレーン３値化→マゼンタプレーン２値化」により「シアン→マゼンタ」の順にドット位置を決める。
【００７９】
さらには、色分解プレーンすべてに適用しても良い。即ち、「ＣＭＹＫ４プレーン５値化→ＣＭＫ３プレーン４値化→ＭＫ２プレーン３値化→Ｋプレーン２値化」により、「Ｙ→Ｃ→Ｍ→Ｋ」の順にドット位置を決定するようにしてもよい。また、図７で説明した１８個の全てのプレーンに適用することもできる。或いは、各色毎に実施形態で説明した処理により大、中、小ドットの配置を決定するような構成とすることもできる。
【００８０】
以上、いずれの組み合わせも、後に決まるドットほど最適配置となるため、「ドット径が大きい」「濃度が高い」ドット（配置の優先度の高いドット）ほど後に決まるよう処理順を設定すればよい。
【００８１】
＜第２実施形態＞
第１実施形態では、ハーフトーン処理部１０６にてｎ枚のプレーンデータに対してｎ回の誤差拡散処理を行う。第２実施形態では、第１実施形態の処理を「高画質処理」と位置づける。そして、第２実施形態では、ハーフトーン処理部１０６にてｎ枚のプレーンの最終的なドット配置を求めるまでに、ｎ−１回以下の誤差拡散回数で量子化を行う「高速処理」を可能とする。なお、ハーフトーン処理部１０６以外の構成は第１実施形態と同様である。
【００８２】
まず説明を簡略化するため、第１実施形態と同様にシアンの大中小の３つのドットプレーン、Ｃ_l'、Ｃ_m'、Ｃ_s'の誤差拡散を例とし、図１１のブロック図、図１４のフローチャートを参照して第２実施形態の動作を説明する。図１１は、第２実施形態によるハーフトーン処理部１０６の構成を説明するブロック図である。また、図１４は第２実施形態によるハーフトーン処理部１０６の動作を説明するフローチャートである。
【００８３】
大中小の３つのドットプレーンのデータに対して２値化（量子化値０，２５５）を行う場合、まずステップＳ３０１〜Ｓ３０６において、４値化部６０１により、大・中・小３プレーンの合計データを４値化する。４値化部６０１の動作は第１実施形態（ステップＳ２０１〜Ｓ２０６）で説明したとおりであるので説明を省略する。
【００８４】
４値化部６０１からの出力（１画素分の大中小の３つのドットプレーンの合計データの４値化結果）は、図１１の２値化部８０２に入力される。２値化部８０２では、大プレーンデータＩ_lに対して誤差拡散処理を施し２値化を行う。まずステップＳ３０７において、大ドット入力データが大２値化部８０２へ入力される。なおＩ_lは以下のように算出される。
Ｉ_l＝Ｃ_l'          ・・・（５９）
【００８５】
２値化部８０２における累積誤差ラインバッファ８１０は、図１０の（ｃ）のような構造を有する。すなわち、１個の記憶領域Ｅ_l0と入力画像の横画素数Ｗと同数の記憶領域Ｅ_l(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ８１０は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【００８６】
次に、ステップＳ３０８において、累積誤差加算部８１１は、入力された大ドットプレーンデータに入力画素データの横画素位置ｘに対応する誤差Ｅ_l(x)が加算される。即ち、入力された着目画素データＩ_lの値は、累積誤差加算後のデータをＩ_l'とすると、
Ｉ_l'＝Ｉ_l＋Ｅ_l(x)        ・・・（６０）
となる。
【００８７】
次に、ステップＳ３０９において、閾値選択部８１２で、閾値Ｔ_lを選択する。なお、閾値Ｔ_lは、例えば、
ｔ_l＝Ｉ_lms−Ｉ_l          ・・・（６１）
とおき、
Ｔ_l(ｔ_l)＝１２８    （０≦ｔ_l≦２５５）
Ｔ_l(ｔ_l)＝３８４    （２５５＜ｔ_l≦５１０）
と設定する。なお、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、ｔ_lに応じて閾値Ｔ_lを細かく変更しても良い。なお、Ｉ_lms−Ｉ_lは５１０以下となるので、本実施形態ではＴ_l（ｔ_lm）＝１２８かＴ_l（ｔ_lm）＝３８４をとる。
【００８８】
次に、ステップＳ３１０において、大量子化部８１３で、誤差加算後の画素データＩ_l'と閾値Ｔ_l（ｔ_l）と前述の大・中・小３プレーン合計データの多値化（量子化値０，２５５，５１０，７６５）結果Out_lmsを比較する。そしてその比較結果に基づいて、小中プレーン合計データの３値化Out_mｓ、と大ドット最終２値化結果Out_lを決定する。その規則は次の通りである。
Ｔ_l(ｔ_l)＝３８４の場合：
Out_lms−Ｉ_l'≧ Ｔ(ｔ_l)のとき、     ・・・（６２）
Out_l＝Out_lms−５１０              ・・・（６３）
Out_mｓ＝５１０                     ・・・（６４）
Out_lms−Ｉ_l'＜Ｔ(ｔ_l)のとき        ・・・（６５）
Out_l＝Out_lms−２５５              ・・・（６６）
Out_mｓ＝２５５                     ・・・（６７）
Ｔ_l(ｔ_l)＝１２８の場合：
Out_lms−Ｉ_l'≧ Ｔ(ｔ_l)のとき       ・・・（６８）
Out_l＝Out_lms−２５５              ・・・（６９）
Out_mｓ＝２５５                     ・・・（７０）
Out_lms−Ｉ_l'＜ Ｔ(ｔ_l)のとき       ・・・（７１）
Out_l＝Out_lms                      ・・・（７２）
Out_ms＝０                          ・・・（７３）
【００８９】
Ｔ_l(ｔ_l)＝３８４のとき、Out_lms＝７６５では、Out_lms−Ｉ_l'≧ Ｔ(ｔ_l)となるため、式（６２）の条件が成立し、Out_l＝２５５となる。また、例えば、Ｔ_l(ｔ_l)＝１２８のときOut_lms＝５１０では、Out_lms−Ｉ_l'≧ Ｔ(ｔ_l)となるため、式（６８）の条件が成立し、Out_l＝２５５となる。このため、式（６２）〜（７３）により、大プレーンデータの２値化が決定すると同時に小・中の２つのドットプレーンの合計値に対する３値化（Out_ms）が決定する。
【００９０】
次に、ステップＳ３１１において、誤差演算部８１４で注目画素Ｉ_lにおける誤差加算後の画素データＩ_l'と出力画素値Out_lとの差分Err_lを、次のようにして計算する。
【００９１】
Err_l(x)＝Ｉ_l'− Out_l              ・・・（７４）
次に、ステップＳ３１２において、誤差拡散部８１５で横画素位置ｘに応じて以下の様に誤差Err_l（ｘ）の拡散処理が行われる。
Ｅ_l(x+1) ← Ｅ_l(x+1)＋Err_l(x)×７／１６  （ｘ＜Ｗ）
Ｅ_l(x-1) ← Ｅ_l(x-1)＋Err_l(x)×３／１６  （ｘ＞１）
Ｅ_l(x) ← E0_l＋Err_l(x)×５／１６        （１＜ｘ＜Ｗ）
Ｅ_l(x) ← E0_l＋Err_l(x)×８／１６        （ｘ＝１）
Ｅ_l(x) ← E0_l＋Err_l(x)×１３／１６      （ｘ＝Ｗ）
E0_l ← Ｅ_l×１／１６                      （ｘ＜Ｗ）
E0_l ← ０                                  （ｘ＝Ｗ）
・・・（７５）
【００９２】
以上で、１画素分の大ドットのプレーンデータに対して２値化（量子化値０，２５５）が完了する。同時に、中濃シアンドットＣ_m'と小濃シアンドットＣ_s'合計データの３値化（Out_ms：量子化値０，２５５，５１０）が完了する。
【００９３】
ここでの大ドットプレーンのデータの２値化は、大ドットプレーンに最適配置を確保することに目的がある。そして、最適配置の余りとして、シアンの中ドットＣ_m'と小ドットＣ_s'の合計データの３値化（Out_ms）が確定するわけである。すなわち、大ドットは最適配置となり、結果として中・小ドットは大ドットを最適配置した余りものとなる。このようにする理由には、視覚的に目立たない小・中ドットを最適配置するよりも、大ドットを最適配置したほうが、視覚的に良好な画像が得られるからである。
【００９４】
次に、ステップＳ３１３において、ランダム選択部８０３で、上記３値化データOut_ms（量子化値０，２５５，５１０）を、中ドット、小ドットのそれぞれの２値データに変換する。具体的には、上記３値化結果を小・中のDuty比になるようランダムに振り分ける。
【００９５】
具体的には以下のような条件式となる。
Out_ms＝５１０のとき
Out_m＝２５５
Out_s＝２５５
Out_ms＝２５５のとき
０≦Rnd_ms≦Ｃ_m'／ (Ｃ_m'＋Ｃ_s')ならば
Out_m＝２５５
Out_s＝０
Ｃ_m'／(Ｃ_m'＋Ｃ_s')＜Rnd_ms≦１ならば
Out_m＝０
Out_s＝２５５
ただしRnd_msは  ０≦Rnd_ms≦１をとる一様乱数
Out_ms＝０のとき
Out_m＝０
Out_s＝０
【００９６】
ここまでで、小ドットプレーンデータに対する２値化（量子化値０，２５５）と、中ドットプレーンの２値化（量子化値０，２５５）が完了する。以上の処理を全ての画素について行う（ステップＳ３１４）ことで、第２実施形態のハーフトーン処理が完了する。
【００９７】
以上のような第２実施形態によれば、第１実施形態と同様に、はじめに大中小合計データを誤差拡散したため、大中小トータルで見れば最適配置となっている。そのため、大中小トータルで最適配置、視覚的に目立つ大単独で最適配置となる。第２実施形態によれば、さらに、３つのプレーンデータのドット位置を決めるのに必要な誤差拡散処理が２回で済む。すなわち、第１実施形態とそれほど変わらないドット配置となりつつも、高速処理を実現できることになる。
【００９８】
なお、第２実施形態のハーフトーン処理においては、「大中小３プレーン４値化→大２プレーン２値化→ランダムに中小２値化」により「大→中及び小」の順にドット位置を決定したが、多のプレーンの組み合わせに適用できることは言うまでもない。例えば、
・「濃淡シアン２プレーン３値化→ランダムに濃淡２値化」により、「淡シアン、濃シアンのドット位置」を同時に決める。
・「シアン、マゼンタ２プレーン３値化→ランダムにシアン、マゼンタ２値化」により、「シアン、マゼンタのドット位置」を同時に決めることがあげられる。
【００９９】
さらには、以下のように色分解プレーンすべてに適用しても良い。
・「ＣＭＹＫ４プレーン５値化→ＭＫ２プレーン３値化→Ｋプレーン２値化→ランダムにＣ、Ｙ２値化」により、「Ｍ→Ｋ→Ｃ及びＹ」の優先順でドット位置を決定。
【０１００】
また、ランダムに２値化を行うプレーンを３つ以上としてもよい。例えば、「ＣＭＹＫ４プレーン５値化→Ｋ１プレーン２値化→ランダムにＣ、Ｍ、Ｙフレームを２値化」により、「Ｋ→Ｃ、Ｍ及びＹ」の優先順でドット位置を決定できる。また、誤差拡散処理の回数は、ｎ−２回となり、さらに処理の高速化を図ることができる。
このときＣＭＹ４値化データOut_cmy（量子化値０，２５５，５１０,  ７６５）は以下の条件によって２値化される。
Out_cmy＝７６５のとき
Out_c＝２５５
Out_m＝２５５
Out_y＝２５５
Out_ms＝５１０のとき
０≦Rnd_cmy≦(Ｃ'＋Ｍ')／{２(Ｃ'＋Ｍ'＋Ｙ')}ならば
Out_c＝２５５
Out_m＝２５５
Out_y＝０
(Ｃ'＋Ｍ')／{２(Ｃ'＋Ｍ'＋Ｙ')}＜Rnd_cmy≦(2Ｃ'＋Ｍ'＋Ｙ')／{２(Ｃ'＋Ｍ'＋Ｙ')}ならば
Out_c＝２５５
Out_m＝０
Out_y＝２５５
(２Ｃ'＋Ｍ'＋Ｙ')／{２(Ｃ'＋Ｍ'＋Ｙ')}＜Rnd_cmy≦１ならば
Out_c＝０
Out_m＝２５５
Out_y＝２５５
Out_cmy＝２５５のとき
０≦Rnd_cmy≦Ｃ'／(Ｃ'＋Ｍ'＋Ｙ')ならば
Out_c＝２５５
Out_m＝０
Out_y＝０
Ｃ'／(Ｃ'＋Ｍ'＋Ｙ')＜Rnd_cmy≦（Ｃ'＋Ｍ'）／(Ｃ'＋Ｍ'＋Ｙ')ならば
Out_c＝０
Out_m＝２５５
Out_y＝０
（Ｃ'＋Ｍ'）／(Ｃ'＋Ｍ'＋Ｙ')＜Rnd_cmy≦１ならば
Out_c＝０
Out_m＝０
Out_y＝２５５
Out_cmy＝０のとき
Out_c＝０
Out_m＝０
Out_y＝０
ただしRnd_cmy  は  ０≦Rnd_cmy≦１をとる一様乱数、Ｃ',  Ｍ',  Ｙ'はそれぞれ  シアンDuty,  マゼンタDuty,  イエローDutyである。
【０１０１】
以上、いずれの組み合わせも設定できるため、ｎプレーン処理でｎよりも少ない回数の誤差拡散処理で２値化したいときは、第２実施形態を選択することで実現できる。
【０１０２】
＜第３実施形態＞
第１実施形態では、「大中小３プレーン合計４値化→大中２プレーン３値化→大プレーン２値化」の順で処理することにより、大ドット、中ドット、小ドットの優先順で最適配置を行っている。このような処理は、処理対象の全てのプレーンに優先順位を与えることができる場合にきわめて有効である。たとえば、「ドット径」や「ドット濃度」が異なる際には、全てに優先順位を設定できるので非常に有効である。しかしながら、「ドット濃度」が同じ場合、即ち複数種類のドットの優先順位を同じにしたいという要求に応じることができない。例えば、ドット濃度が同じシアン、マゼンタのドットを第１実施形態の処理法で最適配置すると、どちらかを先に処理しなければならない。第１実施形態の処理の特徴上、後に処理したものほど最適配置に近づくため、同じ優先順位（同濃度）であっても、一方を最適配置すれば他方は最適配置とは言い難くなってしまう。
【０１０３】
第３実施形態では、ハーフトーン処理部１０６にて優先順位が同じ（例えばドット濃度が同じ）２つ以上のドットプレーンのデータについて、双方とも最適配置に近づける処理法について述べる。なお、ハーフトーン処理部１０６以外については第１実施形態と同じである。
【０１０４】
説明を簡略化するため、以下では、シアンの大ドットプレーンの画素値Ｃ_l'とマゼンタの大ドットプレーンの画素値Ｍ_l'の誤差拡散を例として、図１２及び図１５を参照して説明する。図１２は、第３実施形態によるハーフトーン処理部１０６の構成を説明する図である。また、図１５は第３実施形態によるハーフトーン処理部１０６の動作を説明するフローチャートである。
【０１０５】
シアン・マゼンタ２プレーンのデータに対して２値化（量子化値０，２５５）を行う場合、まずステップＳ４０１において、３値化部９０１にシアン、マゼンタの２つのプレーンの注目画素の合計データＩ_cmを入力する。なおＩ_cmは以下のように算出される。
Ｉ_cm＝Ｃ_l'＋Ｍ_l'            ・・・（７６）
【０１０６】
図１２のＣＭ３値化部９０１における累積誤差ラインバッファ９０４は、図１０の（ｄ）に示すように、１個の記憶領域Ｅ_cm0と入力画像の横画素数Ｗと同数の記憶領域Ｅ_cm(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ９０４は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【０１０７】
次に、ステップＳ４０２において、累積誤差加算部９０５で入力画素データの横画素位置ｘに対応する誤差Ｅ_cm(x)が加算される。即ち、入力された着目画素データをＩ_cm、累積誤差加算後のデータをＩ_cm'とすると、
Ｉ_cm'＝Ｉ_cm＋Ｅ_cm(x)        ・・・（７７）
となる。
【０１０８】
次に、ステップＳ４０３において、閾値選択部９０６で閾値Ｔ_cmを選択する。閾値Ｔ_cmは、例えば、入力画素データＩ_cmの範囲に応じて
Ｔ_cm(Ｉ_cm)＝１２８    （０≦Ｉ_cm≦２５５）      ・・・（７８）
Ｔ_cm(Ｉ_cm)＝３８４    （２５５＜Ｉ_cm≦５１０）  ・・・（７９）
のように設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、入力画素データＩ_cmに応じて閾値Ｔ_cmを細かく変更するようにしても良い。
【０１０９】
次に、ステップＳ４０４において、ＣＭ量子化部９０７で誤差加算後の画素データＩ_cm'と閾値Ｔ(Ｉ_cm)とを比較し、出力画素値Out_cmを決定する。その規則は次の通りである。
Out_cm＝０                                ・・・（８０）
（０≦Ｉ_cm≦２５５，Ｉ_cm'＜Ｔ（Ｉ_cm））
Out_cm＝２５５                            ・・・（８１）
（０≦Ｉ_cm≦２５５，Ｉ_cm'≧Ｔ（Ｉ_cm））又は
（２５５＜Ｉ_cm≦５１０，Ｉ_cm'＜Ｔ（Ｉ_cm））
Out_cm＝５１０                            ・・・（８２）
（２５５≦Ｉ_cm≦５１０，Ｉ_cm'≧Ｔ（Ｉ_cm））又は
（５１０＜Ｉ_cm≦７６５，Ｉ_cm'＜Ｔ（Ｉ_cm））
【０１１０】
ここで、
Out_cm＝０      ・・・  シアン、マゼンタドットのいずれも打たれないことが確定。
Out_cm＝２５５  ・・・  シアン、マゼンタドットのいずれか１つが打たれる。
Out_cm＝５１０  ・・・  シアン、マゼンタの双方とも打たれることが確定。
となる。
【０１１１】
次に、ステップＳ４０５において、誤差演算部９０８で注目画素Ｉ_cmに誤差加算後の画素データＩ_cm'と出力画素値Out_cmとの差分Err_cmを、次のようにして計算する。      Err_cm(x)＝Ｉ_cm'−Out_cm                ・・・（８３）
【０１１２】
次に、ステップＳ４０６において、ＣＭ誤差拡散部９０９で横画素位置ｘに応じて以下の様に誤差Err_cm(x)の拡散処理が行われる。
Ｅ_cm(x+1) ← Ｅ_cm(x+1)＋Err_cm(x)×７／１６  （ｘ＜Ｗ）
Ｅ_cm(x-1) ← Ｅ_cm(x-1)＋Err_cm(x)×３／１６  （ｘ＞１）
Ｅ_cm(x) ← E0_cm＋Err_cm(x)×５／１６        （１＜ｘ＜Ｗ）
Ｅ_cm(x) ← E0_cm＋Err_cm(x)×８／１６        （ｘ＝１）
Ｅ_cm(x) ← E0_cm＋Err_cm(x)×１３／１６      （ｘ＝Ｗ）
E0_cm ← Ｅ_cm×１／１６                      （ｘ＜Ｗ）
E0_cm ← ０                                    （ｘ＝Ｗ）
・・・（８４）
【０１１３】
以上で、１画素分のシアンドット、Ｃ_l'、マゼンタドット、Ｍ_l'２プレーン合計データに対して３値化が完了する。２プレーン合計データの３値化は、２プレーンのどのドットが打たれるかわからないが、少なくとも２プレーントータルで、最適な配置を確保することに目的がある。
【０１１４】
次に、ステップＳ４０７において、入力データ切り替え部９０３で、シアンとマゼンタ入力データを画素ごとに切り替える。例えば、入力データ切り替え部９０３において、式（８５）、（８６）に示すようランダムにＩへの代入が切り替わる。
Rnd≦０．５のとき
Ｉ＝Ｃ_l'                  ・・・（８５）
Rnd＞０．５のとき
Ｉ＝Ｍ_l'                  ・・・（８６）
ただし、Rndは０≦Rnd≦１の範囲をとる一様乱数である。
【０１１５】
なお、第３実施形態では入力データ切り替え部９０３は、乱数を用いて画素毎にランダムに入力を切り替えるが、それ以外の切り替え方でもよい。例えば、常にDuty（入力データ値）が多いほうをＩに代入するようにしてもよい。或いは、常にDuty（入力データ値）が少ないほうをＩに代入するようにしてもよい。
【０１１６】
さらに、シアンとマゼンタのDuty比（入力データ値比）と同じとなるよう切り替えて代入しても良い。
Rnd≦Ｃ_ｌ'／(Ｃ_l'＋Ｍ_l') ならば
Ｉ＝Ｃ_l'
Ｃ_l'／(Ｃ_l'＋Ｍ_l')＜Rnd ならば
Ｉ＝Ｍ_l'
とする。
ただし、Rndは０≦Rnd≦１の範囲をとる一様乱数である。
【０１１７】
図１２の２値化部９０２における累積誤差ラインバッファ９１０は、図１０の（ｅ）に示すように、１個の記憶領域Ｅ_0と入力画像の横画素数Ｗと同数の記憶領域Ｅ_(x)（ｘ＝１〜Ｗ）とを有し、後述する方法で量子化誤差が格納されている。なお、累積誤差ラインバッファ９１０は処理開始前に全て初期値０で初期化されていてもよいし、ランダム値で初期化されてもよい。
【０１１８】
次に、ステップＳ４０９において、累積誤差加算部９１１で入力画素データの横画素位置ｘに対応する誤差Ｅ(x)が加算される。即ち、入力された着目画素データＩの値は、累積誤差加算後のデータをＩ'とすると、
Ｉ'＝Ｉ＋Ｅ(x)              ・・・（８７）
となる。
【０１１９】
次に、ステップＳ４１０において、閾値選択部９１２において、閾値Ｔを選択する。例えば、
ｔ＝Ｉ_cm−Ｉ              ・・・（８８）
とおくと、閾値Ｔは、
Ｔ(t)＝１２８  （０≦ｔ≦２５５）
と設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、ｔに応じて閾値Ｔを細かく変更しても良い。なお、Ｉ_cm−Ｉは２５５以下となるので、本実施形態では必ずＴ(t)＝１２８をとる。
【０１２０】
次に、ステップＳ４１１において、ＣorＭ量子化部９１２で、誤差加算後の画素データＩ'と閾値Ｔ(t)と前述のＣＭ２プレーン合計データの多値化（量子化値０，２５５，５１０）結果Out_cmを比較する。そして、この比較に基づいてシアンドット最終２値化結果Out_c、とマゼンタドット最終２値化結果Out_mを決定する。その規則は次の通りである。
Rnd≦０．５であって：
Out_cm−Ｉ'≧ Ｔ(t)のとき          ・・・（８９）
Out_c＝Out_cm−２５５            ・・・（９０）
Out_m＝２５５                    ・・・（９１）
Out_cm−Ｉ'＜ Ｔ(t)のとき          ・・・（９２）
Out_c＝Out_cm                    ・・・（９３）
Out_m＝０                        ・・・（９４）
Rnd＞０．５であって：
Out_cm−Ｉ'≧ Ｔ(t)のとき          ・・・（９５）
Out_m＝Out_cm−２５５            ・・・（９６）
Out_c＝２５５                    ・・・（９７）
Out_cm−Ｉ'＜ Ｔ(t)のとき          ・・・（９８）
Out_m＝Out_cm                    ・・・（９９）
Out_c＝０                        ・・・（１００）
【０１２１】
Rnd≦０．５のとき、Out_cmが５１０となると、Out_cm−Ｉ’≧Ｔ(ｔ)となるため、式（８９）条件が成立し、Out_cは、Out_c＝２５５となる。また、Rnd＞０．５のとき、Out_cmが５１０となると、Out_c−Ｉ’≧Ｔ(ｔ)となるため、式（９５）の条件が成立し、Out_mは、Out_m＝２５５となる。このように、式（８９）〜（１００）により、シアンプレーンデータの２値化値が決定すると同時にマゼンタプレーンの２値化値が決定する。
【０１２２】
次に、ステップＳ４１２において、誤差演算部９１４で注目画素Ｉに誤差加算後の画素データＩ'と出力画素値Outとの差分Errを、次のようにして計算する。なお、OutはOut_c或いはOut_mを表す。
Err(x)＝Ｉ'− Out                ・・・（１０１）
【０１２３】
次に、ステップＳ４１３において、誤差拡散部９１５は、横画素位置ｘに応じて以下の様に誤差Err(x)を拡散する。
Ｅ(x+1) ← Ｅ(x+1)＋Err(x)×７／１６  （ｘ＜Ｗ）
Ｅ(x-1) ← Ｅ(x-1)＋Err(x)×３／１６  （ｘ＞１）
Ｅ(x) ← E0＋Err(x)×５／１６        （１＜ｘ＜Ｗ）
Ｅ(x) ← E0＋Err(x)×８／１６        （ｘ＝１）
Ｅ(x) ← E0＋Err(x)×１３／１６      （ｘ＝Ｗ）
E0 ← Ｅ×１／１６                    （ｘ＜Ｗ）
E0 ← ０                              （ｘ＝Ｗ）
・・・（１０２）
【０１２４】
以上で、１画素分のシアンドット、Ｃ_l'プレーンデータに対して２値化（量子化値０，２５５）が完了する。また、同時に、マゼンタドットＭ_l'の２値化（量子化値０，２５５）結果が確定する。
【０１２５】
ここでシアンとマゼンタプレーンの２値化は、式（８５）（８６）に示すように切り替わるため、シアンかマゼンタのどちらか一方のみが最適配置となることはない。このため、双方ともに視覚的に目立つドットを配置する場合に、第１実施形態のように一方を最適配置にすることによって、他方が最適配置とならない弊害を回避できる。ただし、はじめにＣＭ合計データを誤差拡散したため、ＣＭトータルで見れば最適配置が確保されている。
【０１２６】
＜他の実施形態＞
以上、各実施形態では、所定方向に配列された複数のノズルを有する記録ヘッドをノズルの配列方向と交差する方向に記録媒体上で走査させて、記録媒体にインクを吐出することで画像を形成するインクジェット記録方式を用いた場合の画像処理装置を説明した。しかしながら、本発明は、インクジェット方式以外の他の方式に従って記録を行う記録装置に対しても適用できる。この場合、インク滴を吐出するノズルはドットを記録する記録素子に対応することとなる。
【０１２７】
また、例えば、本発明は、例えば記録媒体の記録幅に対応する長さの記録ヘッドを有し、記録ヘッドに対して記録媒体を移動させて記録を行う、いわゆるフルライン型の記録装置などにも適用できる。
【０１２８】
また、上記第１乃至第３実施形態で説明した処理は適宜組み合わせて実行することができる。第１〜第３実施形態の処理をより一般化して説明すると次の通りである。
まず、処理対象のｎ個のプレーンについて対応する画素の合計値を誤差拡散処理によりｎ＋１レベルに量子化し、ｎ個のプレーンに係る量子化値を得る（Ｓ２０１〜Ｓ２０６、Ｓ３０１〜Ｓ３０６の処理に対応する）。そして、ｎ個のプレーンをｎ−ｋ個の優先度の高いプレーンとｋ個の優先度の低いプレーンに分け、ｎ−ｋ個のプレーンの対応する画素の合計値をｎ個のプレーンに係る量子化値から差し引く。この差に基づいて、ｋ個のプレーンに係る量子化値を決定する。また、このとき、ｎ個のプレーンに係る量子化値からｋ個のプレーンに係る量子化値を差し引くことにより、ｎ−ｋ個のプレーンに係る量子化値が決定される。このとき発生する量子化誤差は、上記「ｎ−ｋ個のプレーンの対応する画素の合計値」に反映させるべく他の画素へ分散され、累積される（Ｓ２０７〜Ｓ２１２，Ｓ２１３〜Ｓ２１８、Ｓ３０７〜Ｓ３１２の処理が対応する）。
【０１２９】
ここで、ｋ＝１とすることで、上記処理により、１つのプレーンの最終的な量子化値が決定されることになる。そして、ｎをｎ−１として上記処理を繰り返し、ｎ＝２において上述したｎ−ｋ個のプレーンとｋ個のプレーンに対する処理が終了すると、全てのプレーンについて量子化値が決定されたことになる。これが、第１実施形態の処理である（Ｓ２０７〜Ｓ２１２，Ｓ２１３〜Ｓ２１８に対応する）。また、ｋ≧２を設定すれば、ｋ個のプレーンについて第２実施形態で説明したランダム選択を適用して各プレーンの量子化値を決定することができる（Ｓ３０７〜Ｓ３１３に対応する）。そして、ｎをｎ−ｋとして上記処理を繰り返す。なお、ｋ≧２の場合において、ｋ個のプレーンについて優先順に１プレーンずつ配置を決定する（第１実施形態の処理を実行する）ように構成することもできる。或いは、ｋ＝２の場合に、当該２個のプレーンの量子化値を第３実施形態の処理を用いて決定することもできる。
【０１３０】
また、ｎ＝２となった段階で、２つのプレーンに対する処理を実行する場合に、第３実施形態の処理を適用することもできる（Ｓ４０１〜Ｓ４１３に対応する）。
【０１３１】
以上説明したように、上記各実施形態によれば、濃度や、色、ドット径毎に記録材の量が指定されるｎプレーンデータの最終的なドット位置を求めるまでに、ｎ回以下の誤差拡散回数で２値化が行える。例えば、ｎ回の誤差拡散処理回数であれば、高画質処理となり、ｎ回よりも少ない誤差拡散処理回数であれば、高速処理となる。特に第１実施形態によれば、ｎ回の誤差拡散を実行するものの、特許文献１のように補正データを求める必要がなく、処理を簡易化することができ、高速な処理が期待できる。また、第２実施形態によれば、誤差拡散回数をｎ回以下に設定することが可能となり処理量（処理スピード）と画質を柔軟に変更できる。
【０１３２】
さらに第３実施形態によれば、「色が異なっても濃度が同じ色材のドット配置」というように、優先順位を同じにしたいケースにおいて、双方ともに最適なドット位置を決定できる。従って、例えば、濃度が同じシアン、マゼンタの２チャンネルデータを２値化する際、片方のみが最適配置となるという弊害を回避できる。
【図面の簡単な説明】
【０１３３】
【図１】実施形態による画像処理装置とプリンタの構成を示すブロック図である。
【図２】実施形態による記録ヘッドの構成例を示す図である。
【図３】図１の画像処理装置における処理を示すフローチャートである。
【図４】色分解用ＬＵＴをユーザが選択するためのＵＩ例を示す図である。
【図５】色分解用ＬＵＴの例を示す図である。
【図６】ハーフトーン画像格納メモリの詳細を示す図である。
【図７】色分解処理部の構成の詳細を示す図である。
【図８】第１実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図９】誤差拡散係数の一例を示す図である。
【図１０】累積誤差ラインバッファの構成例を示す図である。
【図１１】第２実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図１２】第３実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図１３】第１実施形態によるハーフトーン処理部の処理を示すフローチャートである。
【図１４】第２実施形態によるハーフトーン処理部の処理を示すフローチャートである。
【図１５】第３実施形態によるハーフトーン処理部の処理を示すフローチャートである。
【図１】
0004599239.tif 000002
【図２】
0004599239.tif 000003
【図３】
0004599239.tif 000004
【図４】
0004599239.tif 000005
【図５】
0004599239.tif 000006
【図６】
0004599239.tif 000007
【図７】
0004599239.tif 000008
【図８】
0004599239.tif 000009
【図９】
0004599239.tif 000010
【図１０】
0004599239.tif 000011
【図１１】
0004599239.tif 000012
【図１２】
0004599239.tif 000013
【図１３】
0004599239.tif 000014
【図１４】
0004599239.tif 000015
【図１５】
0004599239.tif 000016