JP2005136975A - 画像処理装置、画像処理方法、及びプログラム - Google Patents

画像処理装置、画像処理方法、及びプログラム Download PDF

Info

Publication number
JP2005136975A
JP2005136975A JP2004296527A JP2004296527A JP2005136975A JP 2005136975 A JP2005136975 A JP 2005136975A JP 2004296527 A JP2004296527 A JP 2004296527A JP 2004296527 A JP2004296527 A JP 2004296527A JP 2005136975 A JP2005136975 A JP 2005136975A
Authority
JP
Japan
Prior art keywords
data
pixel
value
pixels
level values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004296527A
Other languages
English (en)
Inventor
Nobuhiro Karido
信宏 狩戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004296527A priority Critical patent/JP2005136975A/ja
Publication of JP2005136975A publication Critical patent/JP2005136975A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】異なる成分のドットが重なって発生することを防止するとともに、同じ色成分であっても異なる色成分であってもドット間距離が一定に保たれた快適な印刷出力を得る。
【解決手段】複数の成分それぞれに対して未処理画素を選択する。複数あればドット密度が最も疎な成分から順にハーフトーン処理を行う。このとき、他の成分に対して明度に応じた演算値を加算する。最も疎な成分に対するハーフトーン処理を終了すると、そのドット位置を中心に他の成分に対して減算処理を行う。そして、再び各成分に対して未処理画素の探索を行い、ドット密度が疎となる成分を選択してハーフトーン処理を行う。これをすべての成分について未処理画素がなくなるまで繰り返すことになる。ハーフトーン処理としては、重心位置に最も近い画素を選択してセルを構成し、構成したセルの重心位置にドットを打つCC法や、ディザ法、誤差拡散法などによる処理がある。
【選択図】図3

Description

本発明は、カラープリンタなどの画像処理装置における階調画像データのハーフトーン処理に関する。詳しくは、未処理画素を探索するごとにハーフトーン処理を行いつつ、他の成分に演算値を加算しその後ドットが発生する位置を中心に減算するようにした処理に関する。
従来から、プリンタなどの画像出力装置は、各画素ごとに多値の階調値を有する階調データに対して、ドットの有無を表す2値の値に変換処理して印刷用紙に印刷を行うようになされている。一般には、多値の階調値を2値の値に変換する処理のことをハーフトーン処理と称されている。
かかるハーフトーン処理の方法としては、所定の閾値が格納された閾値マトリックスを利用して、入力階調値が閾値よりも大きいか小さいかにより2値化するディザ法や、閾値を設定しその閾値よりも大きいか小さいかにより2値化するとともにその誤差分をまわりの画素に分散して処理を進める誤差拡散法もある。
さらに、入力画像の各画素の階調値の合計が所定の閾値になるまでセルを構成する画素を選択し、セルの中心位置にドットを生成させるようにしたハーフトーン処理も知られている(例えば、特許文献1)。
特開平11−27528号公報
しかしながら、カラー画像を出力する場合に、各色すべてに対して同じハーフトーン処理を行うと印刷用紙上で同じ位置に複数色のドットが打たれる可能性がある。このため、目立ち易い色のドットの近傍に他の色のドットが発生し、視覚的に知覚されにくい一方で、目立ち易い色の成分はより目立ち易いものとなっていた。また、互いに異なる色成分が同じ位置或いは隣接位置にドットが打たれてしまうことで、ドットの重なりによる粒状的なドットが発生することもある。かかるカラー画像の出力は、画質を劣化させ視覚的に不快な印刷出力となっていた。
また、上述した特開平11−27528においても、セルを構成する画素の選択を所定のテーブルを用いて行っているが、テーブル内で左側に存在する画素は既に処理済みの場合が多く、結果的に生成されるセルが歪んだ形となってしまう。かかる場合に、セルの中心にドットを生成させるとある部分では隣のドットを重なって形成されてしまうことになる。例えば、ブラックとイエローに対してそれぞれかかる処理を行うと、ある部分ではイエローのドットのみ目立ち、またある部分ではブラックのドットのみ目立つなど視覚的に不快な印刷出力となっていた。
そこで、本発明の目的は、異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることである。
上記目的を達成するために本発明は、画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ
画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する画像処理装置において、第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換して出力する変換手段と、変換手段で第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換するとき、画素ごとにN種類のレベル値から演算した演算値をそれぞれ第2のデータ又は第1のデータに加算する加算手段と、 変換手段でM種類のレベル値に変換された画素に対応する第2のデータ又は第1のデータの画素から加算手段で加算した演算値の合計値を減算する減算手段と、を備え、変換手段は第1のデータ又は第2のデータのうちM種類のレベル値に変換されていない未処理画素を含む第1のデータ又は第2のデータに対してM種類のレベル値を有するデータに変換して出力することを特徴としている。これにより、例えば、異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
また、本発明は上記画像処理装置において、上記変換手段は、未処理画素が第1のデータ及び第2のデータともに同じ画素位置にあるときはドット密度が低い第1のデータ又は第2のデータから先にM種類のレベル値に変換する、ことを特徴としている。これにより、例えば、入力レベル値に忠実なドットを生成することができる。
さらに、本発明は上記画像処理装置において、上記減算手段は、M種類のレベル値に変換された画素に対応する第2のデータ又は前記第1のデータの画素のN種類のレベル値が合計値に達しないときは、当該画素のレベル値を0にし、さらに当該画素の周辺の画素からそのレベル値を減算する、ことを特徴としている。これにより、例えば、第1のデータと第2のデータとのドットが重なる確率を下げて快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記減算手段は閾値が格納された閾値マトリックスを用いてN種類のレベル値を前記M種類のレベル値に変換する、ことを特徴としている。これにより、例えば、ディザ法を用いたハーフトーン処理においても異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記変換手段はN種類のレベル値と閾値とを比較してM種類のレベル値に変換するとともに、M種類のレベル値に変換したときの誤差をM種類のレベル値に変換していないN種類のレベル値に加算し加算したレベル値と閾値とを比較してM種類のレベル値に変換する、ことを特徴としている。これにより、例えば、誤差拡散法を用いたハーフトーン処理においても異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記変換手段はさらに、M種類のレベル値を有する画素を選択し選択した画素ごとのレベル値の総和が閾値となるまで未処理画素を選択して画素群を生成する生成手段と、生成した画素群の所定画素に対してM種類のレベル値を付与する付与手段と、を備えることを特徴としている。これにより、例えば、CC法によるハーフトーン処理においても異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記変換手段はさらに、画素選択のための第1の基準点に基づいて、画素ごとのN種類のレベル値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成した画素群の第2の基準点を決定する画素群基準点決定手段と、画素群基準点決定手段で決定した第2の
基準点に位置する画素にM種類のレベル値を付与する付与手段と、を備え、画素群生成手段は、第1の基準点を更新させて当該第1の基準点に基づいて画素を選択する、ことを特徴としている。これにより、重心位置のみならず中心位置から構成した画素群によるCC法であっても、異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記画素群生成手段は第1の基準点に基づいて選択すべき画素が複数あるときはランダムに選択する、ことを特徴としている。これにより、例えば、画素群が円状に成長しやすくなり、第2の基準点にドットを打てばそのドット間距離が一定に保たれる。
さらに、本発明は上記画像処理装置において、上記第2の基準点は画素群の各画素位置と各画素のN種類のレベル値とから演算した重心位置である、ことを特徴としている。これにより、例えば、円状に成長した画素群の重心位置にドットが打たれるようになるため各ドットの間隔が一定距離に保たれた快適な印刷出力を得ることができる。
さらに、本発明は上記画像処理装置において、上記加算手段は第2のデータ又は第1のデータの明度に応じた演算値を第2のデータ又は第1のデータに加算する、ことを特徴としている。これにより、例えば印刷用紙上などの単位面積あたりの明度が一定に保たれた各色のドットが発生し快適な印刷出力を得ることができる。
また、上記目的を達成するために本発明は、画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する画像処理方法において、第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換して出力する変換工程と、変換工程で第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換するとき、画素ごとにN種類のレベル値から演算した演算値をそれぞれ第2のデータ又は第1のデータに加算する加算工程と、変換工程でM種類のレベル値に変換された画素に対応する第2のデータ又は第1のデータの画素から加算工程で加算した演算値の合計値を減算する減算工程と、を備え、変換工程は第1のデータ又は第2のデータのうちM種類のレベル値に変換されていない未処理画素を含む第1のデータ又は第2のデータに対してM種類のレベル値を有するデータに変換して出力することを特徴としている。これにより、例えば、異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
さらに、上記目的を達成するために本発明は、画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する処理をコンピュータに実行させるプログラムにおいて、第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換して出力する変換処理と、変換処理で第1のデータ又は第2のデータをM種類のレベル値を有するデータに変換するとき、画素ごとにN種類のレベル値から演算した演算値をそれぞれ第2のデータ又は第1のデータに加算する加算処理と、変換処理でM種類のレベル値に変換された画素に対応する第2のデータ又は第1のデータの画素から加算処理で加算した演算値の合計値を減算する減算処理と、を備え、変換処理は第1のデータ又は第2のデータのうちM種類のレベル値に変換されていない未処理画素を含む第1のデータ又は第2のデータに対してM種類のレベル値を有するデータに変換して出力することをコンピュータに実行させることを特徴としている。これにより、例えば、異なる成分のドットが重なって発生することを防止するとともに、同じ成分であっても異なる成分であってもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
以下、図面を参照して本発明を実施するための最良の形態を説明する。図1は、本発明が適用されるシステム全体の構成を示す図である。全体としてホストコンピュータ10と、画像出力装置20とから構成される。
ホストコンピュータ10は、アプリケーション部11とラスタライズ部12とから構成される。アプリケーション部11では、文字データ、図形データ、ビットマップデータ等の印刷対象のデータが生成される。例えば、ホストコンピュータ10でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用してキーボード等の操作により文字データや図形データなどが生成される。生成されたこれらのデータは、ラスタライズ部12へ出力される。
ラスタライズ部12では、アプリケーション部11から出力された印刷対象のデータを画素ごと(又はドットごと)に8ビットの階調データに変換される。本実施例では、R(レッド)、G(グリーン)、B(ブルー)の色毎に各画素8ビットの階調データに変換される。したがって、各画素ごと0から255までの値(レベル値)を有することになる。ラスタライズ部12における階調データの生成は、実際にはホストコンピュータ10に実装されたドライバによって処理が行われる。ラスタライズ部12から出力される階調データは、画像出力装置20に出力される。
画像出力装置20は、全体として画像処理部21と印刷エンジン22とから構成される。画像処理部21では、ホストコンピュータ10から出力された階調データに対して色変換、ハーフトーン処理等を行う。処理後のデータは印刷エンジン22に出力され、この印刷エンジン22にて実際に印刷用紙等の記録媒体への印刷が行われる。
画像処理部21は、色変換部211と、ハーフトーン処理部212と、パルス幅変換部213とから構成される。色変換部211は、ホストコンピュータ10から出力されるRGB階調画像データを受け取り、RGBからCMYKへの色変換を行う。ここで、Cはシアン、Mはマゼンダ、Yはイエロー、Kはブラックを示す。CMYKの階調データは、各色8ビットづつの階調データであり、各色ごと最大で256階調を有する。なお、この色変換はテーブル又は演算式などによって、入力されたRGBデータをCMYKに変換するものとする。
ハーフトーン処理部212は、色変換部211から出力されるCMYKの階調データに対して、2値以上の多値の値(レベル値)に変換し、量子化データを出力する。ハーフトーン処理としては、ディザ処理、誤差拡散処理、複数の画素からなるセルを構成してその重心にドットを生成させる重心利用した処理(Circular Cell法、以下CC法)がある。各処理の具体的な内容は後述する。
パルス幅変調部213は、ハーフトーン処理部212から出力された量子化データが入力され、この量子化データに対してドットごとにレーザ駆動パルス有り又は無し等の駆動データを生成する。生成した駆動データは、印刷エンジン22に出力される。
印刷エンジン22は、レーザドライバ221とレーザーダイオード(LD)222とから構成される。レーザドライバ221は、入力された駆動データから、駆動パルスあり又はなし等を示す制御データを生成し、レーザーダイオード222に出力する。レーザーダイオード222は、レーザドライバ221から出力された制御データに基づいて駆動され
、さらに図示しない感光ドラムや転写ベルトが駆動されて、実際に印刷用紙等の記録媒体にホストコンピュータ10からのデータが印刷されることになる。
次に図2を参照して、画像出力装置20の具体的構成について説明する。ここで、図1の画像出力装置20のうち、色変換処理部211、ハーフトーン処理部212及びパルス幅変調部213は、図2におけるCPU24、ROM25、及びRAM26に対応する。
画像出力装置20は、全体として、入力インターフェース(I/F)23、CPU24、ROM25、RAM26、印刷エンジン22とから構成され、バスを介して互いに接続されている。入力I/F23は、ホストコンピュータ10と画像出力装置20とのインターフェースの役割を果たす。入力I/F23には、所定の伝送方式により伝送された、ホストコンピュータ20からのRGB階調データが入力され、画像出力装置20で処理できるデータに変換される。RGB階調データは、一旦RAM26に格納される。
CPU24は、バスを介して入力I/F23、ROM25、RAM26、印刷エンジン22と接続され、ROM25に格納されたプログラムを読み出して、色変換、ハーフトーン処理等の各種処理を行う。その詳細は、後述する。RAM26は、CPU24で実行される各処理のワーキングメモリとして役割を果たし、処理後の各種データが格納される。そして、印刷エンジン22のレーザドライバ221を駆動させるための駆動データも格納される。RAM26の具体的構成等も後述する。
印刷エンジン22は、図1の印刷エンジンと同様の構成で、RAM26に格納された駆動データがCPU24の制御により入力されて、上述した印刷処理が行われることになる。
次に、以上のように構成された画像出力装置20における処理の動作について説明する。ホストコンピュータ10からのRGB階調データが画像出力装置20の色変換部211にまず入力される。色変換部211では、色補正テーブルや演算式などを用いて、RGB階調データをCMYKの階調データに変換する。変換後のデータはハーフトーン処理部212に入力されて、2値あるいは多値の量子化データに変換して出力される。
このハーフトーン処理部212における処理について以下、具体的に説明する。まず、実施例1としてC、Mに対するCC法によるハーフトーン処理、実施例2としてC、Mに対するディザ法によるハーフトーン処理、実施例3としてC、Mに対する誤差拡散法を用いたハーフトーン処理、実施例4としてC、M、Y、Kに対するCC法、ディザ法、誤差拡散法による各ハーフトーン処理、実施例5としてC、M、Y、Kマルチサイズに対するCC法、ディザ法、誤差拡散法による各ハーフトーン処理、実施例6としてモノクロデータのマルチサイズに対するCC法、ディザ法、誤差拡散法による各ハーフトーン処理、について説明する。なお、色変換後のC、M、Y、Kの各データはRAM26に格納されているものとする。
[シアン、マゼンダに対しCC法によるハーフトーン処理]
まず具体的な処理を説明する前に、CC法についての概要を説明する。CC法によるハーフトーン処理は、まず初期画素を選択し、所定の閾値に達するまで初期画素周辺の未処理画素を選択して、複数画素からなるセルを構成する。セルを構成する未処理画素選択の際、それまで構成したセルの重心位置から最も近い画素を選択する。そして、閾値に達するとそのセルの重心位置に位置する画素にドット生成を示す値(例えば“255”)を割り当て、それ以外の画素はドットの生成を行わないことを示す値(例えば“0”)を割り当てる。CC法は、以上の処理を入力画像の全てのデータに対して行うことで、量子化さ
れたデータを得るのである。
上述した特開平11−27528では、セルに取り込むべき未処理画素の選択にテーブルを利用して予め決められた位置の画素を選択するようにしている。一方、CC法は重心位置を利用してセルに取り込むべき未処理画素を選択するようにしているため、特開平11−27528と比較して、セルが円状に成長し、ドット間距離を一定に保つことができ、ドットの分散性を向上させて視覚的に快適な印刷出力を得ることができるのである。
以下、シアンとマゼンダの各色成分に対してCC法によるハーフトーン処理について図面を参照しながら詳細に説明する。ここで図3乃至図6は処理の動作を示すフローチャートであり、図7乃至図14はRAM26に格納された階調データの例を示すものである。以下、フローチャートに沿って説明することにする。なお、それ以外の色成分、YとKは本実施例1でそれぞれ個別にCC法による処理を行うものとする。Y成分は明度が高いため視覚的に目立ちにくいからである。逆にK成分は視覚的に目立ち易いものの、実際にドットが打たれる確率が低いためである。CとMは最もドットが打たれるため、本発明による効果が得られやすいからである。
図3は、CC法によるハーフトーン処理全体のフローチャートを示すものである。まず、図3に示すように、CPU24は本処理を実行するためのプログラムをROM25から読み出すことによって、処理が開始されることになる(ステップS10)。なお、上述したようにC、M、Y、Kに色変換後の入力階調データはRAM26に格納されているものとする。その例を図7(a)に示す。この図に示すようにRAM26には、シアン入力データ格納領域261a、マゼンダ入力データ格納領域261bを有し、色変換後のシアン、マゼンダの各階調データがCPU24の制御によって格納される。イエローとブラックの各階調データは、本実施例ではCC法による処理を行わないため図示していないが、それぞれイエロー入力データ格納領域261c、ブラック入力データ格納領域261dに格納されているものとする。各領域261a〜261dにおいて各座標位置に入力される階調値は、全体画像の画素位置に対応するもので、例えばシアン入力データ格納領域261aで(0,0)の座標位置は、全体画像の(0,0)に位置する画素に対応するものである。例えば、図7(a)のシアン入力データ領域261aの(0,0)に位置する画素の階調値は“20”で、全体画像の位置(0,0)における画素の階調値に対応する。なお、図7(a)に示す例は8行8列の構成であるが、これは説明を容易にするためであって、例えば1ページ(1フレーム)分の画像を格納できる構成であってもよいし、この図より少ない行と列の構成であってもよい。
図3に戻り、次いでCPU24は未処理画素をラスタ方向に探索する(ステップS11)。ここでラスタ方向とは、ホストコンピュータ10で生成される画像、すなわち各入力データ格納領域261a〜261dで最も上の最も左側の方向である。このようにラスタ方向に探索することで、CC法により円状に成長した2つのセルの間にすぐ下にセルが配置される。そのセルの重心位置にドットを打てば、印刷用紙全体として見ると、上の行のドット間の真ん中あたりに下の行のドットが配置されるように構成される。すなわち、全体的にドットが斜め方向に形成されるのである。このように配列されたドットは視覚的に目立ちにくく快適な印刷出力を得ることができる。上の行のドットと下の行のドットとが鉛直方向で同じ位置に配置されている場合はドットが正確に並びすぎて却ってドットが視覚的に目立ってしまう。このようなドットの配列を防止するためにラスタ方向に探索するのである。図7(a)の例では、ラスタ方向に探索すると、シアン、マゼンダともに(0,0)に位置する画素が未処理画素となる(図7(b)参照)。
図3に戻り、次いでCPU24は未処理画素があるか否か判断する(ステップS12)。シアン、マゼンダともに未処理画素がなくなるまでCC法による処理を行うためである。図7(b)の例では、未処理画素があるため、本ステップでは“YES”が選択されステップS13に移行する。なお、後述するがCPU24はCC法による処理を行ったとき、各入力データ領域261a〜261dでの処理済みの画素の画素位置に“−1”を格納する。よって、すべての色成分のすべての画素位置に“−1”が格納されていれば本ステップで“NO”が選択され処理が終了し(ステップS19)、そうでないと“YES”が選択されることになる。
ステップS13に移行するとCPU24は、C、Mともに未処理であるか否か判断する。図7(b)の例では選択した未処理画素はともに未処理であるので、本ステップで“YES”が選択される。次いでCPU24は、2つの未処理画素のうちドット密度が疎な色の方の未処理画素を選択する(ステップS14)。最も疎となる成分から先にCC法による処理を行うことで入力階調値に忠実なドット分布を得るためである。すなわち、異なる色成分のドットが重ならないようにするため、他の色成分に対して加算、減算処理を行うが、最も密なものから先にCC法による処理を行うと、疎となる成分をCC法で処理した際の1セル分に相当する領域の中に、密成分のドットが複数個生成され、複数回の演算が行われるために、疎の成分の階調値が必要以上に分散されてしまう。これにより、疎の成分のセルの形状を円状に保つことが難しくなり、入力階調値に忠実でないドットが生成されてしまうのである。逆に、疎となる成分から先に処理を行うと、密となる成分をCC法で処理した際の1セル分の大きさが小さくなるため、その領域の中で複数回の演算処理が行われることはなく、疎となる成分、密となる成分、ともに円状に近いセルが形成され、入力階調値に忠実なドットを発生させることが可能となるのである。また、密となる成分から先に処理を行うと、疎となる成分から先に処理した場合よりも、より多くのドットが生成されてしまうため、処理全体としてより多くの演算処理を行うことになり、処理量が増大することにもなる。そのため、先に疎となる成分からドットの位置を決定するのである。ドット密度の判定は、(入力階調値)/(ドットの生成を示す値、本実施例では“255”)を各色成分ごとに比較し、その値が低い色成分を疎な色成分とする。図7(b)の例では、選択画素(0,0)の階調値はC、Mそれぞれ“20”と“100”、従って、20/255<100/255であるからドット密度が疎である色はシアンと判断される。
次いでCPU24は、選択した色成分に対して実際にCC法による処理を行うことになる(ステップS15)。CC法の処理のフローチャートを図4乃至図5に示す。図4に示すようにCC法による処理が開始される(ステップS15)と、まずCPU24は初期画素を決定し初期濃度の重心を演算する(ステップS151)。ここで初期画素は、図3のステップS11で探索した未処理画素である。また、重心の演算には以下の演算式を用いる。
(式1)
重心={{(セルの重心のx座標)×(セルの階調値の合計)}
+{(選択した未処理画素のx座標)×(選択した未処理画素の階調値)}}
/(セルの階調値の合計+選択した未処理画素の階調値)
重心={{(セルの重心のy座標)×(セルの階調値の合計)}
+{(選択した未処理画素のy座標)×(選択した未処理画素の階調値)}}
/(セルの階調値の合計+選択した未処理画素の階調値)
(x重心、y重心は重心位置の座標)
この演算式はROM25に格納され、重心位置の演算のときにCPU24がROM25から読み出して演算を行うことになる。ちなみに、初期画素の場合は、(式1)においてセルの重心のx、y座標、及びセルの階調値の合計はともに0として演算される。なお、セルとは、上述したように複数の画素から構成される画素群で、上式で“セルの重心”とあるのは、これまで構成したセルの重心のことである。初期濃度の重心を演算すると、x重心=0、y重心=0となる。
なお、図7(c)に示すようにRAM26には、さらにワーキングメモリ領域270を有している。この領域270は、重心の位置座標(x、y)と、これまで選択した画素の階調値の合計値(sum)、及び後述する他の色成分に加算した加算値の合計値(sum2)が格納されるよう構成される。重心位置を格納するのは、その位置をもとにセルを構成する画素を選択したり、最終的なドットの位置を確定させるためである。また、階調値の合計(sum)はセルを構成する画素の階調値の合計が閾値となるまで画素の選択を続けるのに必要だからである。さらに、加算値の合計(sum2)は、後の減算処理で加算した総量分減算したか否かを判断するために必要だからである。
本ステップで演算した重心位置は、CPU24によってワーキングメモリ270に格納されることになる。図7(c)の例では、(0,0)が重心位置としてワーキングメモリ領域270に格納される。また、階調値の合計値“20”も領域270に格納される(図8(a)のメモリ領域270参照)。なお、初期画素の場合、選択画素は1つしかないので選択画素の階調値が階調値の合計としてワーキングメモリ270に格納されることになる。
さらに、図7(c)に示すようにRAM26には、シアンとマゼンダのドット生成の有無を示す値が格納されるシアン出力データ格納領域262aとマゼンダ出力データ格納領域262bを備える。上述したようにこれらの領域262a、bも各入力データ領域261a〜261dと同様に、各画素位置(m,n)はホストコンピュータ10で生成される全体画像の画素位置に対応するよう構成されている。図8(a)に示すようにCPU24は、処理対象の未処理画素を選択する際に対応する画素位置(ここでは(0,0)の位置)にドットを生成しないことを示す値(本実施例では“0”)を格納する。なお、この段階ではシアンが処理対象なので、シアン出力データ領域262aの(0,0)に“0”が格納される。また、本実施例1では説明を省略しているため図示していないが、イエロー、ブラックについても同様に各出力データ領域262c、262dをRAM26内に有し、その構成は入力データ領域261a〜261dと同様である。
また、CPU24はセルを構成する画素を選択すると、以後未処理画素として選択されないようにするために“−1”をその画素位置に格納する。図8(a)のシアン入力データ領域261aに示すように、初期画素として(0,0)を選択したので、この画素位置に“−1”を格納することになる。
さらに、CPU24は他の色成分の対応する画素位置に対して明度に応じた階調値を加算する処理を行う。このように明度に応じた演算値を他の色成分に加算しているのは、より目立ちやすい色のドット周囲には、より広い空白領域を設けて、単位面積あたりの明度をできるだけ一定に保ち、かつ粒状性を改善するためである。すなわち、目立ちやすいドットの周辺には他の色のドットが打たれないよう、より大きな値を他の色の階調値に加算し、その後減算処理を行って、より大きな空白領域を設けるようにする必要がある。逆に目立ちにくいドットの周囲にそれ以外の色成分のドットが打たれるよう、より小さな値を加算しその後減算処理を行って、空白領域を狭く設ける必要がある。その結果、単位面積あたりの明度が均一に保たれ、視覚的に快適な印刷出力が得られるのである。したがって、選択された色成分の画素の階調値をそのまま他の色の階調値に加算するのではなく、各色成分の明度を考慮した値を加算する。具体的には、以下の演算式を用いる。
(式2)
加算値=選択画素の階調値×{(100−加算元の色の明度)/(100−加算
先の色の明度)}
この(式2)に示すように、明度が小さい色成分(目立ちやすい色)から、明度が大きい色成分(目立ちにくい色)に階調値を加算する場合は、そのまま階調値を加算するより
も大きな値が加算され、逆の場合はより小さな値が加算されることになる。また、明度がほぼ同等な色成分どうしで加算する場合は、加算元の階調値がそのまま加算先に加算されることになる。
ここで、各色成分の明度は、シアンを“45”、マゼンダを“45”、イエローを“80”、ブラックを“20”として演算を行うものとする。もちろん、これ以外の値を用いても本発明が適用される。図8(a)の例では、(0,0)の画素位置において(式2)を用いてシアンからマゼンダに、20×(100−45)/(100−45)=20を加算することになる。加算後のマゼンダ階調値の例を図8(b)のマゼンダ入力データ領域261bに示す。また、CPU24は加算した合計値をワーキングメモリ270に格納するが、この場合は“20”を領域270に格納することになる(同図のメモリ領域270のsum2参照)。なお、加算対象の画素がすでに処理済みの場合は、処理の効率化を図るため加算処理自体行わないこととする。以上が本ステップS151でCPU24が行う処理である。
図4に戻り、次いでCPU24は、未処理画素の選択を行う(ステップS152)。未処理画素の選択は、ワーキングメモリ270に格納した重心位置の座標に最も近い位置にある画素を選択する。重心を利用してセルを構成する未処理画素を選択するため、上述したようにセルは円状になりやすく、その重心にドットを形成させることで、ドット間距離が一定で快適な印刷出力を得ることができるのである。図8(b)の例では、ワーキングメモリ領域270に重心位置x重心=0、y重心=0が格納されているので、この位置から最も近い画素位置を選択することになる。この例の場合に、重心位置に最も近い画素としては、(1,0)と(0,1)に位置する2つの画素が存在する。この場合CPU24は、ランダムにいずれか1つの画素を選択することにする。固定順(例えば次に選択すべき未処理画素は右隣の画素、次に選択すべき画素はその画素の下にある画素など)に選択すると、最終的に構成されるセルが規則的に並びすぎることによって、印刷出力のある領域でドットが周期的に発生する周期パターンが生じることになる。このようなパターンは視覚に入り易く快適な印刷出力を得ることができない。このような理由から、選択すべき画素が複数あれば、ランダムに選択するのである。図8(b)の例では、CPU24は、(1,0)に位置する画素をランダムに未処理画素として選択することにする(図8(c)のシアン入力データ領域261a参照)。
図4に戻り、次いでCPU24は、階調値の合計が閾値を超えるか否か判断する(ステップS153)。選択画素の階調値の合計が閾値になるまでセルを構成する画素を選択するためである。本実施例において閾値は、“255”として以下演算することする。もちろん、これ以外の値を閾値としてもよい。図8(c)の例では、最初に選択した画素(0,0)の階調値の合計は“20”、未処理画素として選択した画素(1,0)の階調値も“20”、よって、階調値の合計は“40”となり閾値である“255”を超えない。したがって、本ステップで“NO”が選択され、処理はステップS154に移行することになる。なお、この閾値は例えばROM25に格納され、CPU24が処理の際に適宜読み出すことで判断されることになる。
ステップS154でCPU24は、未処理画素を含めたセルの重心を演算する。新たにセルに取り込まれた画素を含めたセル全体の重心位置を求めるためである。重心位置は、(式1)を用いる。図8(c)に示す例では、2つの画素(0,0)、(1,0)からなるセルの重心を求めることになり、その結果重心位置は、x=0.5、y=0となる。演算した重心位置は、CPU24の制御によりワーキングメモリ270に格納される(図8(c)のワーキングメモリ270のsum参照)。
次いでCPU24は、他の色成分の対応する画素が未処理画素か否か判断する(ステッ
プS156)。後の処理で加算処理を行うが、対応する画素がすでに処理済みの場合は、後の減算処理で減算処理を行う必要があって処理の効率化を図るため、加算処理を行わないようにするためである。図8(c)の例では、マゼンダの(1,0)の画素位置には処理済みであることを示す“−1”が格納されていないので、本ステップで“YES”が選択されステップS157に移行することになる。
次いでCPU24は、セルの階調値の合計を演算し、その値をワーキングメモリ270に格納する(ステップS155)。新たにセル内に取り込んだ画素を含めたセル全体の階調値を計算するためである。図8(c)の例では、セルを構成する2つの画素((0,0)、(0,1)の画素)の階調値の合計である“40”をワーキングメモリ270に格納することになる(同図のワーキングメモリ270のsum参照)。
次いでCPU24は、明度に応じた演算値を他の残りの色成分に加算する(ステップS157)。この場合もCPU24は、(式1)を用いて演算値を計算する。図8(c)の例では、シアンの(0,1)の階調値“20”なので、マゼンダの当該画素位置に “20”を加算することになる。加算した合計値も演算してワーキングメモリ領域270のsum2に格納することになる。加算した結果を図8(c)のマゼンダ入力データ領域261b、メモリ領域270に示す。そして、CPU24はステップS152で選択した未処理画素の画素位置に“−1”を格納し、出力データ格納領域262dの対応する画素位置に“0”を格納する(同図のシアン入力データ領域261a、シアン出力データ領域262a参照)。
次いでCPU24は、ワーキングメモリ270に格納した階調値の合計が閾値と等しいか否か判断する(ステップS158)。図8(c)の例では、階調値の合計は“40”で、閾値である“255”と等しくはない。よって本ステップで“NO”が選択され、再びステップS152に移行し、セルを構成する未処理画素の選択を行うことになる。
以下同様の処理を繰り返すことになる。すなわち、セルを構成する画素の階調値の合計が閾値と等しくなるか(ステップS158で“YES”)、または閾値を超える(ステップS153で“YES”)まで画素を選択し続けることになる。図8(c)の例で、以下説明する。
再びステップS152に移行するとCPU24は、未処理画素の選択を行う。これまで構成したセルの重心位置に最も近い未処理画素(“−1”が格納されていない画素)を選択する。複数あればランダムに選択する。重心位置(0.5,0)から最も近い未処理画素は(0,1)、(1,1)の2つの画素があるがランダムに(0,1)を選択する(図9(a)のシアン入力データ領域261a参照)。セルを構成する画素の階調値の合計は“60”となるが、閾値である“255”を超えないのでステップS153で“NO”が選択され、次いで(0,1)を含めたセルの重心を演算する(ステップS154)。(式1)を用いて演算すると、重心位置は(0.33、0.33)となりメモリ領域270に格納される(図9(a)のメモリ領域270参照)。次いで、階調値の合計“60”がメモリ領域270に格納され(ステップS155、同図のメモリ領域270のsum参照)、対応するマゼンダの(0,1)の画素は未処理画素であるので(ステップS156で“YES”が選択)、明度に応じた演算値を演算する(ステップS157)。演算式(式2)を用いると、マゼンダの(0,1)の画素に“20”を加算することになる(同図のマゼンダ入力データ領域261b参照)。また、CPU24は、シアン入力データ領域261aの(0,1)に以後未処理画素として選択されないよう“−1”を格納し、出力データ領域262aの(0,1)に“0”を格納する。またメモリ領域270のsum2に加算値の合計である“60”を格納する(同図のメモリ領域270、シアン出力データ領域262a参照)。そして、CPU24はメモリ領域270から階調値の合計値を読み出し閾
値との比較を行うが、この場合でも合計値は“60”で、閾値である“255”に達しないので再びステップS152に移行し未処理画素の選択を行うことになる。
以後かかる処理を繰り返し、閾値となる直前の例を図9(b)に示す。最後にシアンの(3,2)の画素が未処理画素として選択され、この画素を含めて全部で12個の画素が処理されているものとする。この段階で階調値の合計は“240”で閾値である“255”に達しないのでステップS158で“NO”が選択され未処理画素の選択を行う(ステップS152)。重心位置は(1.33,1.25)となるのでこの位置から最も近い画素として(2,3)に位置する画素を選択する。この画素を含めた階調値の合計は“260”なので、閾値である“255”を超えることになる。よってステップS153で“YES”が選択されステップS159に移行することになる。
ステップS159でCPU24は、閾値を超えた場合の重心演算の処理を行う。ここでの重心位置も演算式を用いて演算を行なうことになるが、以下の式を用いるものとする。
(式3)
重心={{(セルの重心のx座標)×(セルの階調値の合計)}
+{(選択した未処理画素のx座標)×(閾値までに必要な階調値)}}
/(セルの階調値の合計+閾値まで必要な階調値)
重心={{(セルの重心のy座標)×(セルの階調値の合計)}
+{(選択した未処理画素のy座標)×(閾値までに必要な演算値)}}
/(セルの階調値の合計+閾値まで必要な階調値)
(x重心、y重心は重心位置の座標)
(式1)との違いは、選択した未処理画素の階調値をそのまま用いるのではなく、セルの階調値の合計が閾値と同じになるような値を用いる点が異なる。例えば、図9(b)の例では、これまで選択した画素の階調値の合計が“240”なので、閾値の “255”までに必要な値は“15”となる。そこで、最後の画素((2,3)の画素)の階調値は“15”として重心を演算するのである。この演算式は、(式1)の場合と同様に予めROM25に格納されており、CPU24が本ステップを実行する際にROM25から読み出すことで処理される。図9(a)の例で演算すると、重心位置はx重心≒1.37、y重心≒1.35となる。演算した重心位置は、CPU24の制御によりワーキングメモリ270に格納される(図9(c)のメモリ領域270参照)。
図4に戻り、次いでCPU24は他の色成分の対応画素が未処理画素か否かを判断する(ステップS160)。ステップS156と同様に処理済みの画素には処理の効率化を図るため、加算を行わないためである。図9(c)の例では、マゼンダの(2,3)の画素は未処理画素なので本ステップで“YES”が選択され、ステップS161に移行する。
次いでCPU24は明度に応じた演算値を他の色成分の階調値に加算する処理を行う(ステップS161)。加算すべき値の演算式は、上述の(式2)と同様であるが、選択した画素の階調値をそのまま(式2)に代入するのではなく、重心演算と同様に閾値に達するのに必要な値を当該画素の階調値として演算する。図9(c)に示す例では、(2,3)に位置する画素の階調値は “15”として、(式2)を用いて演算することになる。実際に加算する値は、“15”となる。加算した結果を図9(c)のマゼンダ入力データ領域261bに示す。
次いでCPU24は、残った階調値を最後に選択した未処理画素の戻す(ステップS162)。図9(c)の例では、最後に選択した画素(2,3)の階調値は“20”、演算の際に“15”の階調値として演算したので、減算した“5”を当該画素位置に戻すことになる(同図のシアン入力データ領域261a参照)。セルを構成する画素以外の画素に
戻すことも考えられるが、それではその画素の階調値でない値を有することになるので、入力階調値に忠実なドットを生成させることができない。よって、最後に選択した画素に減算後の値を戻し、以後再び未処理画素として選択できるようにするのである。またCPU24は、選択した未処理画素の対応する出力データ領域262a、262bに“0”を格納する。図9(c)のシアン出力データ領域262aに示すように、この例では(2,3)に“0”が格納される。また、CPU24は加算した値(ここでは“15”)の合計値(“255”)をメモリ領域270のsum2に格納する。
そして処理は、図5のステップS163に移行し、重心位置にドットを生成させる処理を行う。すなわち、ワーキングメモリ270にはこれまで構成したセルの重心位置が格納されているのでCPU24がこの値を読出し、出力データ領域262aの重心位置の存在する画素位置に“255”を格納することになる。図9(c)の例では、これまで演算した重心位置(1.35、1.37)がメモリ270に格納されているので、この位置にある画素(1,1)にドット生成を示す“255”を格納することになる(図10(a)のシアン出力データ領域262d参照)。
一方、ステップS158で閾値と等しい場合(YESの場合)も、すでにセルを構成する階調値の合計が閾値に達したことになるので、同様に重心位置にドットを生成する処理(ステップS163)を行うことになる。以上によりCC法による一連の処理が終了することになる。このように、CC法による処理では一定の大きさのセルを構成し、その重心位置にドットを打つようにしたため、ドット間距離が一定に保たれ快適な画像出力を得ることができる。
図3に戻り、次いでCPU24は、他の色の減算処理を行う(ステップS17)。ステップS157やステップS161で演算値をマゼンダの各入力階調値に加算したので、加算した分減算を行うのである。マゼンダに加算した値の合計は、メモリ領域270のsum2に格納されており、上述の例では“255”である。ここで減算処理は、各画素から均等に加算値を減算するのではなく、ドットが発生する位置を中心に減算する。このような加算、減算を行うことで、ある色成分のドットが発生する位置と重なって他の色成分のドットが生成されることを防ぐことができ、ドットが重なることによる粒状的なドットの生成を抑えることができる。また、加算する際に明度に応じた演算値を他の色成分に加算して、その後減算を行っているため、ある色成分のドットとそれ以外の色成分のドットについて単位面積あたりの明度が均一になるという効果を得る。具体的な処理の動作を図6に示す。
図6に示すように他の色の減算処理(ステップS17)に移行すると、まずCPU24は加算総量が“0”か否か判断する(ステップS171)。ワーキングメモリ領域270のsum2に格納された値が“0”か否かによってCPU24が判断する。加算した総量が“0”なら(本ステップで“YES”のとき)減算する必要がないので、本処理が終了することになる。図10(a)の例では、メモリ領域270のsum2には“255”が格納されているので、本ステップで“NO”が選択されステップS172に移行することになる。
ステップS172でCPU24は、生成したドットに最も近い他の色の画素を選択する。図10(a)の例では、シアンの(1,1)の位置でドットが生成されたので、マゼンダの(1,1)に位置する画素を選択することになる(図10(b)のマゼンダ入力データ領域261b参照)。このようにドットに最も近い位置を選択するのは、ドット密度が疎となる色成分のドット発生位置に他の色成分のドットが生成されないようにして、粒状的なドットの生成を抑え快適な印刷出力を得るためである。
次いでCPU24は、選択画素の階調値の合計が加算処理で加算された階調値の総量を超えるか否か判断する(ステップS173)。図10(b)の例では、マゼンダの選択画素(1,1)の階調値は“120”で総量である“255”を超えないので、本ステップで“NO”が選択されてステップS174に移行することになる。なお、加算された階調値の合計値である加算総量はメモリ領域270のsum2に格納されているため、CPU24は本処理の際に適宜メモリ領域270からこの値を読み出すことで処理が行われるものとする。
次いでCPU24は、選択画素に“0”を格納する(ステップS174)。図10(b)の例では、マゼンダ入力データ格納領域261bの画素位置(1,1)に“0”を格納することになる(図10(c)のマゼンダ入力データ格納領域261b参照)。なお、CPU24は選択した画素の階調値の合計を演算し、その値をワーキングメモリ270に格納するものとする(同図のワーキングメモリ270のsum参照)。加算総量分減算したか否か確認するためである。
次いでCPU24は、減算対象の画素の階調値の合計が加算された総量に等しいか否か判断する(ステップS175)。具体的には、ワーキングメモリ270のsumに格納された階調値の合計と、メモリ領域270のsum2に格納された加算総量の合計値とが等しいか否かで判断する。図10(c)の例では、等しい値ではないので本ステップで“NO”が選択され、再びステップS172に移行することになる。
ステップS172に移行するとCPU24は、再び生成したドットに最も近い画素を選択することになるが、最初の画素選択では、ドットが発生する画素位置そのものを選択したので、そのまわりの画素を選択することになる。図11(a)に示すように、まわりの画素としてCドットが発生した画素位置の上下左右の4つの画素((1,0)、(0,1)、(2,1)、(1,2)の画素)を選択するものとする。もちろん、選択の方法は種々の方法が考えられる。例えば、最初のステップS172でドットが生成する画素の他に、さらにその位置の上下左右の画素を選択するようにしてもよいし、最初にドットが生成する画素位置を選択し、再び本ステップに移行したとき上下左右の4つの画素の他、斜め方向に隣接する4つの計8つの画素を選択することも考えられる。
次いでCPU24は、選択画素の階調値の合計値が加算総量を超えるか否か判断する(ステップS173)。図11(a)に示す例では、選択した4つの画素とドットが発生する画素の合計値は、120×4+120=360で、加算総量“255”を超えることになる。よって本ステップで“YES”が選択され、ステップS176に移行する。
CPU24は、ステップS176において減算すべき減算量を演算する。すなわち、選択画素の階調値の合計が加算総量と等しくなるように、直前のステップS172で選択した画素の階調値を減算する。上述の例では、加算総量は“255”で、すでにCドットが発生する画素位置の階調値を減算したので、加算総量と等しくなるには、“135”(=255−120)の階調値を減算すればよいことになる。選択画素数は4つなので等量に減算されるよう、43、44、44、44づつ、選択した4つの画素の階調値から減算すればよいことになる。
次いでCPU24は、減算後に残った階調値を選択画素に戻す処理を行う(ステップS177)。上述の例では、減算量を各階調値から減算すると、87(=120−43)、86、86、86となりこの値を選択した4つの画素に戻すことになる。減算した結果を図11(a)のマゼンダ入力データ領域261bに示す。
これにより、ステップS157やS161などで加算した加算総量と等量の値を減算し
たことになる。減算すべき画素をCドットが生成する位置から減算したことにより、その後マゼンダに対してCC法の処理を行えばMドットとCドットとが重なる確率が低くなり、粒状性を改善した画像出力を得ることができる。しかも、明度に応じた値を加算、減算したことにより、シアンとマゼンダの明度が単位面積あたり一定に保たれた快適な画像出力を得ることができる。本実施例1では、シアンとマゼンダだけCC法による処理を行っているため、結果的にシアンの階調値をそのままマゼンダに加算していることになる。しかし、例えばブラックがシアンと同じ階調値を有していた場合にマゼンダに加算するのは、(式2)を用いて、20×(100−20)/(100−45)≒29となり、シアンからマゼンダに加算する値よりも高い値となる。加算総量も、7×12+15×(100−20)/(100−45)=369で多い値となる。よって減算処理を行うと、シアンの場合と比較してより大きな値を減算しなければならず結果的にブラックのドット周辺から大きな値が減算されることになり、シアンの場合と比較してブラックのドットからより離れた位置にマゼンダのドットが生成される可能性が高くなる。すなわち、視覚的に目立ち易いブラックのドット周辺には比較的目立ちにくいマゼンダのドットがないことになる。一方、イエローの場合、シアンと同じ階調値とすると加算値は“7”、加算総量は“89”、でシアンの場合よりも低い値となる。よって減算処理をするとシアンの場合と比較してより少ない値が減算されることでイエローのドットにマゼンダのドットが近づき易くなる。したがって、印刷用紙上の単位面積あたり、明度が均一に保たれた快適な印刷出力を得ることができるのである。さらに、ドットが異なる色ごとに重ならないことで色域も広がるのである(彩度が向上する)。
なお、図6のステップS175で加算総量と等しいとき(“YES”のとき)も、加算総量分減算したことになるので減算処理が終了することになる。以上のように他の色の減算処理は、減算対象の画素の階調値の合計が加算総量と等しい(ステップS175で“YES”)か、超える(ステップS173で“YES”)まで画素を選択し続けることになる。画素の選択は、上述したようにドットが生成する画素位置から除々に選択範囲を広げるように行えばよい。
他の色の減算処理が終了すると、処理は図3に戻り再びステップS11に移行し、未処理画素をラスタ方向に探索することになる。C、Mともにラスタ方向に探索すると、マゼンダの(0,0)の画素位置で“−1”が格納されていないので未処理画素が存在する。一方、シアンの同位置は“−1”が格納され未処理画素である(図11(b)参照)。この場合は、マゼンダの(0,0)の位置から処理を行うべく、この画素を選択することになる。すなわち、ステップS12において、未処理画素があるので“YES”が選択され、ステップS13ではマゼンダのみ未処理なので“NO”が選択され、ステップS18に移行して未処理画素の色成分としてマゼンダを選択する。そして、今度はマゼンダに対してCC法による処理を行うことになる(ステップS15)。
この場合のCC法による処理は、上述したシアンのときとほぼ同様である。すなわち、図4に示すように、ステップS11で探索した未処理画素を初期画素と、(式1)を用いて初期濃度重心を求める。求めた重心位置はCPU24によってワーキングメモリ領域270に格納される(図11(c)のメモリ領域270参照)。またCPU24は、初期画素の階調値を“−1”にし、また対応するマゼンダ出力データ領域262aの画素位置に“0”を格納する(同図のマゼンダ入力データ領域261b、マゼンダ出力データ領域262b参照)。さらに、これまで選択した画素の階調値の合計値をメモリ領域270に格納する(同図メモリ領域270のsum参照)。
次に未処理画素の選択を行う(ステップS152)が、重心位置から最も近い画素を選択する。図11(c)の例では、(1,0)の画素を選択するものとする。そして、階調値の合計が閾値を超えるか(ステップS153で“YES”)、閾値と等しくなる(ステ
ップS157で“YES”)までセルを構成する画素を選択する。この場合でも閾値として“255”を用いるものとする。なお、(0,0)の画素位置でシアンはすでに処理済みなので、ステップS156で“NO”が選択され、当該画素位置でマゼンダからシアンに加算処理は行わない。処理の過程で、シアンが未処理画素のときは、上述の(式2)を用いて演算値を加算することになる(ステップS156で“YES”が選択され、ステップS157で処理が行われる)。この場合、セルを構成する画素((0,0)と(1,0)の画素)の階調値の合計は、“207”となりステップS158で“NO”が選択され再び未処理画素の選択を行う(ステップS152)。
CPU24は、この例では未処理画素として(1,0)の画素位置を選択する(図12(a)のマゼンダ入力データ領域261b参照)。このときセルを構成する画素の階調値の合計は、“207”(=120+87+86)となり閾値“255”を超えることになる。よってステップS153で“YES”が選択され、閾値超えた場合の重心演算処理を行う(ステップS159)。(式3)を用いて重心位置を演算し、その結果をワーキングメモリ領域270に格納する(図12(a)のメモリ領域270参照)。マゼンダで選択した(1,0)の画素位置では、シアンは処理済みなのでステップS160で“NO”が選択され、加算処理が行われず、ステップS162で残った階調値を最後に選択した未処理画素に戻す。その結果を図12(a)のマゼンダ入力データ領域261bに示す。そして、重心位置にドット生成を示す“255”を格納することになる(ステップS163)。格納した例を図12(b)のマゼンダ出力データ領域262bに示す。
次いで図3に戻り、CPU24は他の色に対する減算処理を行うことになる(ステップS17)。図6に示すように減算処理ではまず加算総量が“0”か否か判断する(ステップS171)。図12(b)の例では、ワーキングメモリ領域270のsum2に加算総量“0”が格納されているので(CC法による処理で加算処理が行われていないので)、本ステップで“YES”が選択されて減算処理が終了し、再び図3のステップS11に移行することになる。
そして、CPU24は再びラスタ方向に未処理画素を探索する(ステップS11)と、(2,0)の画素位置でマゼンダが未処理画素となっている(図12(c)参照)。シアンは当該画素位置で処理済みである。このマゼンダの(2,0)の画素を選択することになる。ステップS12で“YES”が選択され、また当該位置でマゼンダのみ未処理なのでステップS13で“NO”が選択され、未処理画素の色としてマゼンダが選択される(ステップS18)。その後、選択されたマゼンダの(2,0)からCC法による処理を行う。
同様に閾値に達するまでCPU24はセルを構成する未処理画素を選択していくが、2回目のループで未処理画素として(3,0)が選択されたとき、当該画素位置でシアンの画素は“−1”が格納されていないので未処理画素である。よってステップS156で“YES”が選択され、シアンに対して加算処理を行うことになる(ステップS157)。加算すべき演算値は、(式2)を用いて“100”となる。加算した結果を図13(a)のシアン入力データ領域261aに示す。このとき、ワーキングメモリ領域270のsum2には加算総量である“100”が格納されることになる。そして、3回目のループで(2,1)の画素を選択すると、階調値の合計が閾値を超えることになるので、ステップS159以下の処理が行われ、重心位置にドット生成を示す値を格納する(図13(b)参照)。
次いでCPU24は、図3に戻り他の色の減算処理を行う(ステップS17)が、メモリ領域270には加算総量“100”が格納されているので、図6のステップS171で“NO”が選択され、シアンに対して上述の減算処理を行うことになる。この場合も、減
算すべき画素の選択は、Mドットが生成される画素位置、次いでMドットが生成される画素位置の上下左右に隣接する画素位置、次いでその斜め方向に隣接する画素位置と、除々にその範囲を広げるように選択する。それ以外の選択方法であってもよいのは、上述した場合と同様である。減算処理の結果を図13(c)に示す。以上のような処理を繰り返すことで図14(a)に示す、シアンとマゼンダの出力データを得ることができる。これらのデータが量子化データとしてハーフトーン処理部212(図1参照)から出力されてパルス幅変調部213を介して印刷エンジン22に出力され、印刷出力を得ることができる。
このように、各色成分ごと未処理画素を比較しながら探索し、シアン、マゼンダともに同じ画素位置で未処理なら疎となる色成分から先にCC法の処理を行い、またどちらか一方が未処理画素ならその色成分に対して処理を行うようにする。従って、異なる成分のドットが重なって発生することを防止するとともに、同じ色成分であっても異なる色成分であってもドット間距離が一定に保たれ、しかも入力階調値に忠実なドットを生成して快適な印刷出力を得ることができる。
ここで処理の進め方として、ドット密度が疎である成分を最初に決めてその色成分すべての画素に対してCC法による処理を行い、その後他の色成分の処理を行うことも考えられる。しかしながら、図7(a)に示すようにその階調値が途中で異なっているとき、最初は疎となる成分として先に処理を進めたものの、途中から密となる成分に対して処理を先に進めてしまうことになる。これでは、上述したように疎となる成分に対して減算する結果、入力階調値に忠実なドットが生成されなくなってしまう。そこで、各未処理画素ごとに処理を行うことで、入力階調値に忠実なドットを生成することができるのである。また、先に処理を行った色成分のドットはCC法による処理の結果ドット間距離が一定に保たれているものの、後に処理を行った色成分は先に処理を行った色成分のドット周辺から階調値を減算したのでそのドット位置から離れた位置にドットが生成される。したがって、結果的に後に処理を行った色成分のドット間距離が保てない可能性がある。そこで、ドットを打つごとに未処理画素を探索することで、例えば交互に異なる色成分ごと処理を行うようになり、処理の過程での加算減算処理の結果、互いに色成分の演算値が含まれるようになるため、ドット配置が色成分ごと交互にその距離を保ちながら配置されることになる。したがって、ある色成分を先にすべての画素に対して処理を行うよりも、ドット間距離を一定に保つことができる。また、異なる色成分で互いに近い入力階調値を有していたとき、後に処理を行った色成分は減算処理の結果、互いにドットが重ならないようにすることができるが、互いに近い位置にドットが生成される可能性が高い。すなわち、後に処理を行った色成分のドットは入力階調値が高い分、疎となる色成分よりも多くドットを打つことになるが、この最後にうつべきドットが他のドット間距離よりもその距離が短いものとなる。これが局所的にドット密度を高くさせ、特異パターンのドットを発生させる原因となる。これは視覚的に目に付き易く、快適な印刷出力を得ることができない。そこで、上述したようにドットを打つごとに未処理画素を探索して、同じ色成分か異なる色成分かに拘わらず処理を進めるようにしたので、加算減算処理の結果、互いに異なる色成分の演算値が含まれるようになり、異なる色のドットがその距離を保ちながらドットが配置され、最後にある位置にドットを打たなければならないような処理がなくなり、特異パターンの発生を抑えてドット間距離が保たれた快適な印刷出力を得ることができるのである。
[シアン、マゼンダに対しディザ法を用いたハーフトーン処理]
次にディザ法を用いたハーフトーン処理について説明する。一般にディザ法とは、濃淡画像の階調を再現する2値化の手法の1つである。各画素の入力階調値に対して、閾値マトリックスと呼ばれる変換テーブルを用いて、テーブル内に格納された閾値とを比較する。その結果、その入力階調値の方が閾値より大きいとドット生成を示す量子化データと、そうでないとドットなしを示す量子化データとを割り当てる。そして、この量子化データをもとに印刷用紙等に印刷を行うようにするものである。
本実施例においても、同様に閾値マトリックスを用いてディザ処理を行う。ただし、実施例1と同様にシアンとマゼンダに対して本発明が適用されるディザ法による処理を行い、イエローとブラックに対しては個別にディザ法の処理を行うものとする。C、M成分は本発明による効果が得られやすいからである。また、処理の進め方は実施例1と同様にドットの生成を示す値(本実施例においても“255”とする)を出力データ領域262a、262に格納させるごとに未処理画素の探索を行う。入力階調値に忠実にドットを生成させるとともに、双方の色成分ともにドット間距離を一定に保つためである。シアン、マゼンダともに同じ画素位置に未処理画素があればドット密度が疎となる成分から先にディザ処理を行う。どちらか一方が未処理画素であればその色成分に対してディザ処理を行う。また、処理の過程で加算、減算の処理も行う。ドットの重なりを防止するためである。さらに、加算すべき演算値は実施例1における(式2)を用いる。明度を考慮した演算値を加算しているため、その後の減算処理により単位面積あたりの明度を一定に保つことができる。以上のように本実施例2は、実施例1とほぼ同様な処理が行われることになる。以下、具体的に処理の詳細について説明する。
図15に、シアン、マゼンダに対して本発明が適用されるディザ法を用いた処理全体のフローチャートを示す。実施例1との相違点は、実施例1ではステップS15でCC法による処理を行ったが、CC法ではなくディザ法による処理を行う点のみである。それ以外の処理はほぼ実施例1と同様である。本実施例でも、色変換後のC、M、Y、K各色成分の入力階調データがそれぞれRAM26内の入力データ領域261a〜261dに格納されているものとする。なお、イエローとブラックに対して本発明が適用されるディザ処理は行われず、閾値マトリックスを利用しただけの通常のディザ処理が行われる。図15のフローチャートに沿って以下説明する。
まず、CPU24はROM25から本発明が適用されるディザ処理を行うためのプログラムを読み出すことによって処理が開始される(ステップS20)。次いでCPU24は、未処理画素をラスタ方向に探索する(ステップS21)。ドット生成を示す値を付与するごとに未処理画素の探索を行うようにすることで、入力階調値に忠実なドットを生成させるとともに、双方の色成分ともにドット間距離を一定に保つためである。図16(a)にはC、Mの各入力階調値データの例を示す。値自体は、実施例1と同様である(図7(a)参照)。各入力データ領域261a、261bの構成は実施例1と同様に画像上の各画素位置が領域261a、261bの各座標位置に対応する。この図16(a)の例では、ラスタ方向に探索すると(0,0)の画素位置でともに処理済みであることを示す“−1”が格納されていないので未処理画素である。
次いでCPU24は、未処理画素があるか否か判断する(ステップS22)。本実施例においても実施例1と同様に処理を終えた画素に対してその画素位置に“−1”を格納するようにしているため、“−1”があるか否かで判断する。すべての色成分のすべての画素位置に対して“−1”が格納されると未処理画素が存在しないことになるため、本ステップで“NO”が選択され処理が終了することになる(ステップS28)。図16(a)の例では、未処理画素が存在するため(すべての画素位置に“−1”が格納されていないため)本ステップで“YES”が選択され、ステップS23に移行する。
次いでCPU24は、ステップS23においてC、Mともに未処理か否か判断する。ステップS21で選択した画素が双方とも“−1”が格納されていれば双方とも未処理画素なので“YES”が選択され、どちらか一方のみ“−1”のときは“NO”が選択されることになる。図16(a)の例では、(0,0)の画素位置では双方とも未処理画素なの
で“YES”が選択され、ステップS24に移行する。
次いでCPU24は、ステップS24においてC、Mのうちドット密度が疎となる色成分を選択する。実施例1で説明したように疎となる成分から先に処理を行うことで、入力階調値に忠実なドットを生成するためである。ドット密度の比較は実施例1と同様に、ドット生成を示す値(ここでは“255”とする)で各階調値を除算して、その値が低い方が疎な色成分とする。図16(a)の例では、(0,0)の画素位置において、20/255<100/255となるのでシアンをドット密度が疎である色成分と判断することになる。
次いでCPU24は、実際に選択した色に対してディザ処理を行う(ステップS25)。ディザ法による処理は、上述したようにマトリックス内の各位置に格納された閾値と各色の階調値とを比較し、閾値の方が階調値よりも大きな値のときはドットを生成しないことを示す“0”、逆に階調値の方が大きいとドット生成を示す“255”を与えることで量子化データを得る。このマトリックス251の例を図16(b)に示す。このマトリックス251は、例えばROM25に格納され、処理の際にCPU24が適宜ROM25からこのマトリックス251内の値を読み出すことで処理が行われることになる。具体的には以下のようになる。
まず、CPU24は図16(c)に示すようにまずシアン入力データ格納領域261aの(0,0)の画素位置に格納された階調値と、マトリックス251内の(0,0)の位置に格納された閾値とを比較する。階調値は“20”で、閾値である“16”より高い値であるから、(0,0)の画素位置において、ドットの生成を示す“255”を割り当てることになる。このドット生成の有無を示す値は、同図に示すようにRAM26内に設けられたシアン出力データ格納領域262aの(0,0)の位置にCPU24の制御により格納される(図16(c)参照)。この領域262aも、実施例1と同様に各画素位置がホストコンピュータ10で生成された画像データの画素位置に対応するものであり、さらに図に示す8行8列の構成のみならず画像1フレーム等それ以外の構成でもよい。なお、他の色成分に対してもRAM26内にマゼンダ出力データ領域262b、イエロー出力データ領域262c、ブラック出力データ領域262dを有し、同様の構成を有する。
また、処理の過程で加算処理も行う。その後の減算処理により、ドットの重なりを防止するとともに、単位面積あたりの明度を均一に保った画像出力を得るためである。加算すべき演算値は実施例1の(式2)を用いる。図16(c)の例では、(0,0)の画素位置においてシアンからマゼンダに対して、20×(100−45)/(100−45)=20を加算することになる。加算した結果を図16(c)のマゼンダ入力データ領域261bに示す。なお、この加算値は実施例1と同様にRAM26内のワーキングメモリ領域270に格納されることになる(図示せず)。さらにCPU24は、処理済みの画素に対して以後未処理画素として選択されないよう“−1”を当該画素位置に格納することになる。図16(c)の例ではシアンに(0,0)の画素に処理を行ったことになるので、この位置に“−1”を格納することになる(図17(a)のシアン入力データ領域261a参照)。ドットを生成する値を出力データ領域262a、262bに格納すると、CPU24はステップS25におけるディザ処理を一旦終了させ、減算処理(ステップS26)に移行することになる。
ステップS26においてCPU24は、他の色の減算処理を行うが、処理自体は実施例1と同様である。処理のフローチャートを図6に示す。この図に示すように、まずCPU24は、加算総量が“0”か否か判断する(ステップS171)。加算総量が“0”のときは(本ステップで“YES”のとき)、加算処理が行われなかったので減算も行わずに処理が終了してステップS21(図15)に移行することになる。RAM26内のワーキ
ングメモリ領域270のsum2に加算値の合計が格納されているので、CPU24がこの値を読み出すことで加算総量が“0”か否かの判断を行う。図17(a)の例では、(0,0)の画素位置でマゼンダに“20”を加算したので、メモリ領域270に“20”が加算総量として格納されており(図示せず)、従って本ステップで“NO”と判断されることになる。
ステップS171で“NO”が選択されると次いでCPU24は、生成したドットに最も近い他の色の画素を選択することになる(ステップS172)。最初のこのステップでCPU24は、ドットが生成する画素位置そのものを選択し、次にその画素位置に隣接する上下左右の画素位置、次にその画素位置に隣接する斜め方向の4つの画素位置、次にその画素位置から1つ画素を飛び越した上下左右など、その範囲を除々に広げるように選択する。それ以外の選択方法でもよいことは実施例1と同様である。画素の選択は、選択画素の階調値の合計が加算総量を超えるか(ステップS173で“YES”)、等しくなる(ステップS175で“YES”)まで行うことになる。図17(a)の例では、まずCドットが発生する画素位置(0,0)を選択する(ステップS172)。加算総量は“20”で、マゼンダにおいて選択画素(0,0)の階調値は“120”である。よって階調値が加算総量を超えるのでステップS173で“YES”が選択され、ステップS176に移行することになる。
ステップS176では減算量の演算を行うが、実施例1と同様に加算総量と等しくなるような減算量を演算することになる。図16(c)の例では、加算総量である“20”と等しい値“20”を(0,0)の画素位置の階調値“120”から減算することになる。
次いでCPU24は、残った階調値を選択画素に戻す(ステップS177)。図17(a)の例では、階調値“120”から減算値“20”を減算した結果、マゼンダの(0,0)での階調値は“100”となり、この値を当該画素位置に戻すことになる(図17(a)のマゼンダ入力データ領域261b参照)。そして、減算処理が終了して図15のステップS21に移行することになる。
再びステップS21においてCPU24は、未処理画素をラスタ方向に探索する。図17(a)の例では、(0,0)の画素位置でマゼンダが未処理画素である(“−1”が格納されていない)。よって、この画素を未処理画素として選択して以後処理を行うことになる。この場合、ステップS22で“YES”が選択され、マゼンダのみ未処理なのでステップS23で“NO”が選択され未処理画素の色としてマゼンダが選択される(ステップS27、図17(b)参照)。そして、実際にディザ処理を行うことになる(ステップS25)。
図17(b)に示すように、マゼンダの画素位置(0,0)の階調値“100”と閾値マトリックス251の(0,0)の位置に格納された閾値“16”とを比較する。階調値の方が大きいので、ドット生成を示す“255”をマゼンダ出力データ領域262bの(0,0)に格納する(図17(c)参照)。またこのときマゼンダからシアンに対して加算処理を行う。ただし、マゼンダの(0,0)の画素位置でシアンはすでに処理済みなので実施例1と同様に、加算処理は行わないことになる。メモリ領域270のsum2にはこのとき初期値である“0”が格納されたままである。なお、マゼンダの当該画素は処理が終了したので入力データ領域261bの当該画素位置に処理済みを示す“−1”を格納する(図17(c)のマゼンダ入力データ領域261b参照)。ドット生成を示す値を格納したので、一旦ディザ処理が終了して、減算処理を行う(ステップS26)。しかし、加算総量は“0”なので(ワーキングメモリ領域270には加算総量として“0”が格納されているので)、図6のステップS171で“YES”が選択され減算処理が行われず、再び図15のステップS21に移行する。
次いで、CPU24は再び未処理画素の探索を行う。図18(a)に示すように(1,0)の画素位置においてC、Mともに未処理画素である。この位置でドット密度を比較すると、シアンの方が低い値となる。よってシアンから先に処理を行うことになる(ステップS24、S25)。シアンの(1,0)の階調値“20”とマトリックス251の(1,0)の閾値“144”とを比較すると閾値の方が大きいので、ドットを生成しないことを示す値(ここでは“0”)を出力データ領域262aに格納する。また、対応するマゼンダの階調値に明度に応じた演算値を加算する。さらにCPU24は、シアンの(1,0)の画素位置に“−1”を格納する(図18(b)参照)。また、CPU24は、メモリ領域270のsum2に加算総量“20”を格納する。
同様にシアンの(2,0)の階調値“20”とマトリックス251の(2,0)の閾値“64”とを比較すると閾値の方が大きいので、CPU24はシアン出力データ領域262aに“0”を格納し、演算値をマゼンダに加算し、当該画素位置が処理済みであることを示す“−1”を格納する(図18(c)参照)。メモリ領域270には、加算値“20”とすでに格納していた“20”との和をとり“40”が加算総量として格納されることになる。
さらに図19(a)に示すようにシアンの(3,0)の階調値とマトリックス251の(3,0)の閾値とを比較して同図に示す値を得る。次にシアンの(4,0)の階調値“20”とマトリックス251の(0,0)の閾値“16”とを比較するが、階調値の方が大きい値なのでドット生成を示す値が格納されることになる(図19(b)のシアン出力データ領域262a参照)。そして、演算値を加算し、処理済みであることを示す“−1”も格納する(同図のシアン、マゼンダ各入力データ領域261a、261b参照)。このときのメモリ領域270には加算総量として、(1,0)から(4,0)までの“80”が格納される。ドット生成を示す値が格納されたのでディザ処理は一旦終了して、減算処理(ステップS26)に移行する。
減算処理は上述したように、まずCドットが発生する、マゼンダの画素位置(4,0)を選択する(ステップS172)。選択画素の階調値は“120”でメモリ領域270に格納された加算総量“80”を超える。よって画素の選択は終了して、加算総量分の階調値を減算することになる(ステップS176)。(4,0)の画素位置の階調値“120”から加算総量“80”を減算して“40”を得て、この値が(4,0)の位置におけるマゼンダの入力階調値となる(ステップS177、図19(c)参照)。そして、減算処理が終了する。
再び未処理画素の探索を行うが、図20(a)に示すように(1,0)の画素位置でマゼンダが未処理画素である。この画素を選択して、ディザ処理を行うことになる。マゼンダの(1,0)の位置での階調値“20”と、マトリックス251の(1,0)の閾値“144”とを比較する。閾値の方が大きい値なのでマゼンダ出力データ領域262bの(1,0)の位置に“0”を格納する。次いでCPU24は、(2,0)の画素位置での階調値“120”と閾値“64”とを比較すると階調値の方が大きい値なので、領域262bの当該画素位置に“255”を格納する(図20(b)参照)。ディザ処理を終了して減算処理を行うがこの過程でシアンがすべて処理済み画素なので加算総量は“0”である。よって減算処理が行われず(図6のステップS171で“YES”)、再び未処理画素の探索を行うことになる(ステップS21)。
同様に処理を繰り返すことになるが、マゼンダの(4,0)の位置で階調値の方が閾値より大きい値を有しているので、ドット生成を示す“255”を格納することになる。ここでも減算処理は行われない(図20(c)参照)。次にマゼンダの(6,0)の位置で
ドット生成を示す“255”が格納されることになるが、当該位置でシアンは未処理画素である。よって、実施例1の(式2)を用いて“100”が加算されることになる。そして減算処理を行うが、加算総量は“100”、加算後のシアンの(6,0)の位置での階調値は“120”、よって加算総量すべて減算して減算後のシアンの(6,0)の位置での階調値は“20”となる(図21(a)参照)。そして、未処理画素の探索を行うと、今度はシアンの(6,0)が未処理画素として選択され(図21(b)参照)、上述の処理を繰り返すことになる。以上の処理をシアン、マゼンダすべての画素に対して行った結果を図21(c)に示す。この各出力データ領域262a、262bに格納された値が量子化データとしてハーフトーン処理部212からパルス幅変調部213を介して印刷エンジン22に出力され印刷出力を得ることができる。
以上説明したように、この実施例2の場合でもCC法による実施例1と同様に、入力階調値に忠実なドットを生成させるとともに、異なる色どうしでも同じ色どうしでもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
[シアン、マゼンダに対し誤差拡散法を用いたハーフトーン処理]
次に、本発明が適用される誤差拡散法を用いたハーフトーン処理について説明する。この誤差拡散法も、0から255までの256階調を有する画素に対して2値化(又は4値など)する場合の手法の一つである。例えば、閾値を“128”として、ある入力画素の階調値が“50”とすると、閾値以下なので2値化すると “0”となる。この場合、この量子化値“0”に対して“50”(=50−0)の誤差が生じることになる。そこで、この誤差分をまわりの画素に拡散させて処理を行う方法が、誤差拡散法である。以後これを繰り返し、閾値より大きいとドット生成を示す量子化データ(本実施例でも“255”)を生成し、そうでないとドットなしを示す量子化データ(この場合も“0”)を生成する。そして、この量子化データをもとに印刷用紙等に印刷を行うようにするものである。
本実施例3においても、同様に閾値を“128”として処理を行う。ただし、実施例1と同様にシアンとマゼンダに対して本発明による処理を行い、イエローとブラックに対しては、加算減算等の処理はおこなわずに個別に誤差拡散法による処理を行うものとする。シアンとマゼンダは画像出力装置20において最もドットが打たれる確率が高く、本発明による効果を得られ易いからである。また、処理の進め方は実施例1、2と同様にドットの生成を示す値(本実施例においても“255”とする)を出力データ領域262a、262bに格納させるたびに未処理画素の探索を行う。入力階調値に忠実にドットを生成させるとともに、双方の色成分ともにドット間距離を一定に保つためである。シアン、マゼンダともに同じ画素位置に未処理画素があればドット密度が疎となる成分から先に処理を行う。どちらか一方が未処理画素であればその色成分に対して処理を行う。また、処理の過程で加算、減算の処理も行う。ドットの重なりを防止するためである。さらに、加算すべき演算値は実施例1における(式2)を用いる。実施例1、2と同様に明度を考慮した演算値を加算しているため、その後の減算処理により単位面積あたりの明度を一定に保つことができる。以上のように本実施例3は、実施例1、2とほぼ同様な処理が行われることになる。以下、具体的に処理の詳細について説明する。
図22に処理全体のフローチャートを示し、図23乃至図28にはRAM26内のメモリ構成例を示す。本処理が開始される前、色変換後のC、M、Y、Kの各入力階調データがRAM26内の各入力データ領域261a〜261dに格納されているものとする。各領域261a〜261dの構成は実施例1、2と同様である。図22(a)にはこのうちシアンとマゼンダの入力階調値の例を示す。この階調値は実施例1、2と同じ値である。また、後述する出力データ領域262a〜262dも同様の構成である。
誤差拡散法では誤差が発生したとき、その誤差分をまわりの画素に拡散させる処理を行うが、その拡散マトリックス252を図23(b)に示す。マトリックス内で“X”は処理対象の画素を示し、格納されている値は拡散すべき誤差の比率を示す。例えば、“60”の誤差が発生したときは、処理対象の画素の右と下の画素に“20”、右下と左下の画素には“10”の誤差値を拡散させることになる。マトリックス内に現在処理中の画素に対して上や左側に比率が示されていないのは、画素をラスタ方向に左から順番に処理を進めていくため、すでに処理済みとなっているからである。この処理も、ROM25にマトリックス内の各値が格納され、CPU24が処理の際に適宜読み出して演算を行うことになる。以後、この拡散された値を当該画素の階調値に加算して閾値と比較して処理が進められることになる。なお、RAM26内には、各色成分ごとに、拡散される誤差の値を格納する拡散誤差格納領域264a〜264dを備え、CPU24によって処理の際に適宜、誤差の値が格納されることになる。この領域264a〜264dも入力データ領域261a〜261dと同様の構成である。
図22を参照して詳細を説明する。まずCPU24は、本発明が適用される誤差拡散処理を実行するためのプログラムをROM25から読み出すことで処理が開始される(ステップS30)。次いで、実施例1等と同様に未処理画素をラスタ方向に探索する(ステップS41)。
次いでCPU24は、未処理画素があるか否か判断する(ステップS42)。図23(a)の例では、探索した(0,0)の画素位置はいずれも未処理画素となっている。本実施例においても、処理を行った画素に対してCPU24は、順次処理済みであることを示す“−1”を各入力データ領域261a、261bに格納する。従ってCPU24は、“−1”が格納されたか否かで未処理画素か否かを判断することになる。すべての画素に対して“−1”が格納されると(本ステップで“NO”のとき)処理が終了したことになる(ステップS48)。図23(a)の例では、“−1”が格納されていないので本ステップで“YES”が選択されステップS43に移行する。
ステップS43でCPU24は、探索した未処理画素がシアン、マゼンダともに未処理か否か判断する。図23(a)の例では、双方とも未処理画素なので本ステップで“YES”が選択される。次いでCPU24は、シアン、マゼンダのうちドット密度が疎である色成分を選択する(ステップS44)。選択画素の階調値をドット生成を示す値(ここでも“255”とする)で除算した結果、低い値の色成分を疎な色としてCPU24は判断することになる。図23(a)の例では、(0,0)の位置でシアン、マゼンダそれぞれ“20”、“200”の階調値を有しているので、演算するとシアンを疎な色成分として選択することになる。
次いで選択した色成分に対して、誤差拡散処理を行うことになる(ステップS45)。誤差拡散処理の詳細について図23(c)以下を参照して説明することにする。まず、CPU24はシアンの(0,0)の画素に対してその階調値と閾値とを比較する。階調値は“20”、閾値は“128”なので、シアン出力データ領域262aの(0,0)の位置にドットを生成しないことを示す値(ここでも“0”とする)を格納する(図23(c)シアン出力データ領域262a参照)。このとき、この量子化値“0”と階調値“20”との間には“20”の誤差が生じる。よって、マトリックス252を用いてまわりの画素に誤差分を拡散させることになる。(0,0)の画素位置では左下には画素が存在しないので、右、右下、下の3つの画素に対して拡散させる。マトリックスの値から、(0,0)の位置に対して右側の画素には20×2/5=8、右下の画素には20×1/5=4、下の画素には20×2/5=8を拡散させることになる。これらの値は対応する拡散誤差領域264aにCPU24によって格納されることになる(同図のシアン拡散誤差領域264a参照)。
また、このとき実施例1等と同様に他の色成分の対応画素に明度に応じた演算値を加算する。ただし、対応画素がすでに処理済みの場合は加算は行わない。図23(c)に示すように、シアンからマゼンダに対して実施例1の(式2)を用いて、20×(100−45)/(100−45)=20を加算することになる。加算値は、RAM26内のワーキングメモリ領域270のsum2に格納する(図示せず)。加算した結果を同図のマゼンダ入力データ領域264bに示す。シアンの(0,0)の画素は処理が終了したことになり、CPU24は入力データ領域261aの当該画素位置に“−1”を格納する。
次いでCPU24は、シアンの(1,0)の画素に対し処理を行う。すなわち、当該画素位置の階調値“20”と拡散誤差領域264aの(1,0)に格納された誤差値“8”との和“128”が閾値“128”より大きいか否か判断する。閾値より低い値なので、シアン出力データ領域262aの(1,0)の画素位置に“0”を格納する(図24(a)のシアン出力データ領域262a参照)。また、階調値と誤差値との和“28”と量子化値である“0”との間に“28”の誤差が生じているので、拡散マトリックス252を用いてまわりの画素に誤差分を拡散させる。誤差値は、処理対象の画素(1,0)に対して、右側の(2,0)と下側の(1,1)の画素位置に28×2/6≒8、右下の(2,1)と左下の(0,1)の画素位置に28×1/6≒4をそれぞれ拡散させることになる。これらの値にこれまで各画素位置に格納された誤差値との和が拡散誤差領域264aに格納されることになる(図24(a)のシアン拡散誤差領域264a参照)。また、このときCPU24は、シアンからマゼンダに対して明度に応じた演算値を加算し(同図のマゼンダ入力データ領域261b参照)、さらに加算値の合計“40”を図示しないメモリ領域270のsum2に格納する。そして、CPU24はシアン入力データ領域261aの(1,0)に“−1”を格納することになる。
次いでCPU24は、シアンの(2,0)の画素に対して同様の処理を行う。誤差値“8”と階調値“20”との和“28”は閾値“128”より低い値なので、ドットを生成しないことになる。また明度に応じた加算値をシアンからマゼンダに加算する(図24(b)参照)。これをシアンの1行目の画素すべてに対して処理を繰り返すことで図24(c)に示す値を得る。その後、同様に処理を進めるとシアンの(6,3)の画素位置で階調値“20”と誤差値“109”との和“129”が閾値“128”を超えることになる。よって、CPU24は(6,3)の位置でドット生成を示す“255”を格納することになる(図25(a)のシアン出力データ領域262a参照)。ここで、CPU24はドット生成を示す値を格納すると、実施例2と同様に誤差拡散処理が一旦終了し、図22に示すように他の色に対する減算処理を行うことになる(ステップS46)。
減算処理自体は、実施例1、2と同様である。すなわち、図6に示すように加算総量が“0”でないと(ステップS171で“NO”のとき)、まずドットが発生する画素位置を選択し(ステップS172)、選択画素の階調値が加算総量を超えるか否か判断する(ステップS173)。図25(a)に示す例では、これまでマゼンダに対して20×31画素=620の演算値を加算したことになるので加算総量は“620”である。この値は図示しないRAM26内のメモリ領域270のsum2に格納されている。Cドットが発生する画素位置(6,3)でのマゼンダの入力階調値は加算処理を行ったので“120”、加算総量を超えないので本ステップS173で“NO”が選択される。なお、この場合でも実施例1等と同様に選択画素の階調値の合計を図示しないメモリ領域270のsumに格納する。ステップS173やS175での処理のためである。
次いで選択画素に“0”を格納し(ステップS174、図25(b)のマゼンダ入力データ領域261b参照)、再びCドットに近いマゼンダの画素を選択することになる(図6のステップS175で“NO”が選択され、ステップS172に移行する)。2回目のループでの画素選択は、実施例1、2と同様にドットが発生する画素位置に隣接する上下左右の画素を選択する。これ以外の画素を選択してもよいことは実施例1等と同様である。マゼンダの上下左右の画素の階調値の合計は、120×2画素+100+20=360となり、(6,3)の画素位置の階調値“120”との和を演算すると“480”で、加算総量を超えない。この選択画素の階調値の合計“480”はCPU24によってメモリ領域270のsumに格納される。次いで、この4つの選択画素の階調値を“0”にし(ステップS174、図25(c)のマゼンダ入力データ領域261b参照)、再びCドットに近い画素を選択する。3回目のループでの画素選択は、ドットが発生する画素位置に対して斜め方向に隣接する4つの画素を選択する(図26(a)参照)。もちろんそれ以外の画素を選択してもよい。この選択した4つの画素の階調値の合計は、120×2画素+20×2画素=280、メモリ領域270に格納された階調値の合計は“480”、その和をとると“760”で加算総量“620”を超えることになる。よって図6のステップS173で“YES”が選択され、ステップS176に移行する。
ステップS176では、実施例1等で説明したように加算総量と等しくなるような減算量を演算する。この例の場合、これまで減算した階調値は“480”、よって加算総量に達するには“140”減算すればよいことになる。従って、(5,5)と(7,5)の画素位置から階調値“20”をすべて減算し、さらに(5,3)と(7,3)の画素位置から“50”ずつ減算すればよいことになる。減算後残った階調値を選択画素に戻すことになる(ステップS177)。その減算後の例を図26(a)のマゼンダ入力データ領域261bに示す。そして、減算処理は終了して図22のステップS41に戻り、再びラスタ方向に未処理画素の探索を行うことになる。
未処理画素を探索すると図26(b)に示すように、(0,0)の画素位置でマゼンダが未処理画素となっている(“−1”が格納されていない)。よって、この画素から誤差拡散処理を行うことになる(ステップS42で“YES”が選択され、次いでステップS43で“NO”が選択され、ステップS47を介してステップS45に移行する)。
マゼンダの(0,0)の位置での階調値“120”は閾値“128”より低い値なので、ドットを生成しないことになる(図26(b)のマゼンダ出力データ領域262b参照)。また、拡散マトリックス252を用いて誤差分を拡散させ、マゼンダ拡散誤差領域264bに誤差分を各座標位置に格納させる(同図のマゼンダ拡散誤差領域264b参照)。このとき、明度に応じた演算値をマゼンダからシアンに加算することになるが、(0,0)の画素位置でシアンはすでに処理済みである。よって、CPU24は加算処理を行わない。
次いでCPU24は、マゼンダ(1,0)の画素位置で処理を行う。すなわち、当該位置での入力階調値は“120”、拡散領域264bから誤差値は“48”、その和“168”は閾値“128”を超えることになる。よって、CPU24はマゼンダ出力データ領域262bの(1,0)にドット生成を示す“255”を格納する(図26(c)のマゼンダ出力データ領域262b参照)。またCPU24は、明度に応じた演算値をシアンの当該画素位置に加算する処理を行うが、この場合もすでに処理済みなので加算は行わないことになる。ここで、ドットを生成する値を格納したので一旦誤差拡散処理が終了し、減算処理(図22のステップS46)を行うことになるが、これまでシアンに対して加算が行われていないのでメモリ領域270のsum2には加算総量が“0”のままとなっている。よって、図6のステップS171で“YES”が選択され減算処理自体が行われないことになり、図22のステップS41に再び戻ることになる。
次いで再び未処理画素をラスタ方向に探索して、マゼンダの(2,0)の画素位置から誤差拡散処理を行うことになる。このような処理を繰り返すことで、図27(a)に示す
量子化データを得る。
以上説明したように、この実施例3の場合でもCC法による実施例1やディザ法による実施例2と同様に、入力階調値に忠実なドットを生成させるとともに、異なる色どうしでも同じ色どうしでもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
[C、M、Y、Kに対しCC法によるハーフトーン処理]
実施例1では、色変換後のC、M、Y、KのうちCとMに対してのみ本発明が適用されるハーフトーン処理を行ったが本実施例4ではすべての色成分に対してかかる処理を行う。これにより、すべての色成分のドットは異なる色成分どうしでも同じ色成分どうしでもその距離を一定に保った快適な印刷出力を得ることができる。処理全体のフローチャートを図28に示す。実施例1のフローチャートである図3との違いは、最初の未処理画素の探索をすべての色成分に対して行うこと、及び加算、減算処理で加算値を他の3つの色成分に加算し減算する点である。それ以外はほぼ実施例1と同様の処理を行うことになる。すなわち、異なる色成分のみならず同じ色成分のドットどうしでもその距離を一定に保つため、ドットを生成させる値を出力データ領域262a〜262dに格納させるたびに、未処理画素の探索をすべての色成分に対して行う。また、ドットの重なりを防止するため加算、減算処理も行う。さらに、この加算すべき値は明度を考慮した演算値となっているため、印刷用紙上の単位面積あたりの明度が均一に保たれている。
図29乃至図31にはCC法の処理と減算処理のフローチャートを示し、図32乃至図35にはRAM26内の各領域に格納された値の例を示す。図28の処理全体のフローチャートを参照しながら、以下詳細に説明する。
まず、CPU24はすべての色成分に対して未処理画素をラスタ方向に探索する(ステップS61)。4色のうち処理済みとなっている色成分も存在することから少なくとも1色に対して探索する場合もある。ラスタ方向に探索するのは実施例1等と同様に、その後のCC法による処理により、ドットが正確に並びすぎて視覚的に目立ってしまうことを防止するためである。図32(a)に色変換後のC、M、Y、Kの各階調データの例を示す。C、Mについては実施例1と同じ階調値である。なお、実施例1と同様に図32(a)に示すようRAM26内には各色成分の入力階調データを格納する入力データ領域261a〜261dを備える。各領域261a〜261dの構成は実施例1と同様である。また、後述するように各色成分ごとに出力データ領域262a〜262dも備える。この図32(a)の例では、ラスタ方向に(0,0)の画素から順に入力データ領域261a〜261dを探索することになる。
図28に戻り、次いでCPU24は未処理画素があるか否か判断する(ステップS61)。実施例1等と同様に処理済みの画素位置には“−1”を格納していくので、未処理画素か否かは“−1”が格納されたか否かで判断する。図32(a)の例では、C、M、Y、Kいずれも(0,0)の画素位置で未処理画素となっている。
次いでCPU24は、2色以上未処理か否か判断する(ステップS63)。2色以上未処理のとき(本ステップで“YES”のとき)、ドット密度な疎な色成分を選択して(ステップS64)、その色成分に対してCC法による処理を行う(ステップS65)。また、1色のみ未処理のとき(ステップS63で“NO”のとき)、その未処理の色成分を選択して(ステップS68)、CC法による処理を行う(ステップS65)。図32(a)の例では、(0,0)の位置で4色とも未処理画素となっているので、ステップS63で“YES”が選択され、そのうち最も疎となる色成分を選択する(ステップS64)。疎となる色成分の選択は、実施例1と同様にドット密度、すなわち各階調値をドット生成を
示す値(本実施例4でも“255”)で除算し最も低い値を有する色成分が最も疎となる色成分と判定する。図32(a)の例では、(0,0)の画素位置でシアンが最も疎となる色成分と判断される。そして、シアンに対してCC法による処理を行う(ステップS65)。
CC法による処理のフローチャートを図29に示す。処理の方法は、実施例1とほぼ同様である。すなわち、ステップS61で探索した画素を初期画素として、重心位置を求めその位置から最も近い画素を選択していく。画素は、選択画素の階調値の合計が閾値(本実施例でも“255”)と等しい(ステップS658で“YES”)か、閾値を超える(ステップS653で“YES”)まで選択し続ける。画素選択のたびに他の色成分が未処理画素でないと(ステップS656及びS660で“YES”)明度に応じた演算値を加算する(ステップS657及びS661)。そして、1つ或いは複数の画素から構成されるセルの重心位置にドット生成を示す値“255”を対応する色成分の出力データ領域262a〜262dに格納して(ステップS663)、CC法の処理が終了する。
図32(a)の例で具体的に説明する。まず、CPU24は初期画素としてステップS61で探索した(0,0)の画素を選択する。そして、実施例1の重心演算式(式1)を用いて演算する。この場合も重心位置は(0,0)となる。この重心位置は、CPU24によってRAM26内のメモリ領域270に格納される。図32には図示していないがその構成は実施例1と同様に図7(c)等に示すものとなっている。また、CPU24はシアン出力データ領域252aの(0,0)の位置に“0”を格納し、階調値の合計“20”をメモリ領域270のsum(図示せず)に格納する。さらにCPU24は、処理済みでない他の色成分の対応する画素位置(0,0)に明度に応じた演算値を加算する(ステップS657)。演算値は実施例1の(式2)を用いる。各明度の値は、実施例1に示す値を用いる。この例の場合、シアンからマゼンダに20×(100−45)/(100−45)=20、イエローに20×(100−45)/(100−80)=55、ブラックに20×(100−45)/(100−20)≒13を加算することになる。加算後の例を図32(b)に示す。この場合に、明度が高い成分に対してより大きな値が加算され、明度が低い成分に対しては小さな値が加算されることになる。すなわち、その後の減算処理によりCドットに対して明度が高いとより大きな値が減算されるので離れた位置に明度の高いドットが発生し、明度が低いと逆に小さな値しか減算されないのでより近づいた位置に明度の低いドットが発生することになる。
また、例えばブラックとシアンの入力階調値を図32(a)のものと入れ換えたとき、ブラックから先に処理を始めることになるが、ブラックからマゼンダに20×(100−20)/(100−45)≒29、イエローには20×(100−20)/(100−80)=80、シアンには20×(100−20)/(100−45)≒29を夫々加算することになる。この場合は、イエローに対してより大きな値を加算し、マゼンダ、シアンには小さな値を加算することになる。よって、その後の減算処理によりイエローはより大きな値が減算されKドットから離れた位置にドットが発生し、シアン等はそれよりも近い位置にドットが発生することになる。このような、明度に応じた演算値を加算し、その後ドット位置を中心に減算することで、単位面積あたり明度が均一な各色のドットが生成されることになる。なお、加算値の合計は図示しないRAM26内のメモリ領域270にCPU24によって格納される。
セルを構成する未処理画素の選択を続けると、図32(c)に示すように13個の画素を選択して閾値である“255”に達することになる。その後の処理により(ステップS653で“YES”が選択されステップS659からステップS662)、重心位置は、(1.37、1.39)となり(1,1)の画素位置にドット生成を示す“255”が割り当てられることになる(図30のステップS663、図32(c)のシアン出力データ
領域262a参照)。重心位置にドットが生成されるとCC法の処理が終了して図28のステップS67に移行し減算処理を行うことになる(ステップS67)。
減算処理のフローチャートを図31に示す。まず、CPU24はXに“1”を設定する(ステップS671)。このXは、未処理画素を有する他の色成分の個数を示す。そして、実施例1と同様に1色目(X=1)の色成分のうちドットが生成された画素位置を選択する。次のループでは、ドットが生成する画素位置に隣接する上下左右の画素を選択する。さらに次のループでは隣接する斜め方向の4つの画素、さらに次のループでは1つ画素を飛び越した上下左右等、選択画素の階調値の合計がメモリ領域270のsum2に格納された加算総量と等しい(ステップS676で“YES”)か、超える(ステップS674で“YES”)まで選択し続ける。選択の方法は実施例1と同様にそれ以外でもよい。そして、Xに“1”を加算し(ステップS677)、2色目の色成分に対して同様の処理を行う。これを未処理画素を有する色成分の個数分行う(ステップS678で“NO”)ことで減算処理が終了する(同ステップで“YES”)。
図32(c)の例で具体的に説明すると、まず1色目(X=1)としてマゼンダが選択され、Cドットが発生する位置(1,1)の画素を選択する。選択画素の階調値は、加算処理を行ったため“120”となるが、加算総量“255”を超えないので、さらに上下左右の画素を選択する。選択画素の階調値の合計は“600”(=120×5)で、加算総量を超えるので加算総量に達するように最後に選択した上下左右の4画素から階調値を減算する。加算総量に達するにはこの4つの画素から“135”(=255−120)減算すればよいことになる。減算結果を図32(c)のマゼンダ入力データ領域261bに示す。
次いでCPU24は、Xに1を加算し2色目(X=2)の色成分に減算処理を行う。2色目としてイエローが選択され、同様に処理を行うと図33(a)のイエロー入力データ領域261cに示す値を得る。さらに3色目(X=3)としてブラックが選択され、図33(b)のブラック入力データ領域261dに示す値を得る。
そして、未処理画素を有す色成分の個数はこの場合3つ(M、Y、Kの3つ)なのでステップS678で“YES”が選択され減算処理が終了することになる。なお、例えば図28のステップS62でCPU24がその個数をRAM26のメモリ領域270(図示せず)に格納し、減算処理におけるこのステップS678の処理の際にCPU24が適宜メモリ領域270から読み出すことで処理が行われる。
減算処理が終了すると処理は、図28のステップS61に再び移行することになる。未処理画素をラスタ方向に探索して、(0,0)の画素位置にて、M、Y、Kの色成分が未処理画素となっている(図33(c)参照)。ステップS62で“YES”が選択され、2色以上未処理なのでステップS63でも“YES”となり、M、Y、Kのうちドット密度が疎となる色成分を選択する(ステップS64)。(0,0)の画素位置でドット密度を比較すると、イエロー成分が最も密度が低い。よってイエロー成分を選択してCC法による処理を行う(ステップS65)。
まず、CPU24は初期画素として(0,0)を選択し(ステップS651)、以後セルを構成する選択画素の階調値の合計が“255”と等しいか(ステップS658で“YES”)、超える(ステップS653で“YES”)まで画素を選択し続ける。画素の選択は重心位置から最も近い画素を選択する。複数あればランダムにいずれか1つの画素を選択する。処理済みの画素には“−1”を格納し、対応する画素位置で他の色成分が未処理画素なら明度に応じた演算値を加算する(ステップS657、ステップS661)。CPU24は、メモリ領域270のsum2(図示せず)に加算値の合計を格納する。この
場合、各色成分ごと異なる値を加算するので、色成分ごとその加算総量を格納する領域270を有している。
処理の結果、図34(b)に示すよう(2,2)の画素位置にYドットが生成されることになる。重心位置にドットを打つと処理は、減算処理(ステップS67)に移行する。この例での減算処理の結果を図34(c)に示す。この場合、シアンに対して各画素とも加算処理を行わなかったので減算処理も行われないことになる(図31のステップS672で“YES”が選択される)。
次いでCPU24は、再び未処理画素をラスタ方向に探索し(ステップS61)、今度はM、Kの色成分のうちドット密度が(0,0)の画素位置で疎となるKに対してCC法による処理を行うことになる(ステップS67、図35(a)参照)。
以上の処理を繰り返すと、図35(b)に示す量子化データを得る。以上説明したように、この実施例4の場合でも実施例1から3と同様に、入力階調値に忠実なドットを生成させるとともに、異なる色どうしでも同じ色どうしでもドット間距離が一定に保たれた快適な印刷出力を得ることができる。
なお、本実施例4では、実際に行うハーフトーン処理としてCC法を用いた場合で説明したが、実施例2のディザ法や実施例3の誤差拡散法を用いた処理でも全く同様の作用効果を奏する。また処理自体も本実施例と同様で、図28のステップS65で“CC法による処理”を“ディザ法による処理”や、“誤差拡散法による処理”と変えるだけである。これらの処理自体の内容は実施例2及び実施例3と全く同じである。
[C、M、Y、Kマルチサイズに対するハーフトーン処理]
次の実施例として、C、M、Y、Kの各色成分ごと異なるドットサイズで印刷出力を得ることができる画像出力装置20でのハーフトーン処理について説明する。処理の方法は、上述した実施例1等とほぼ同様である。ただし、色変換後のC、M、Y、K各色成分に対し分版関数を用いて異なるサイズのドット成分に分離する。そして、分離された各成分に対してドット密度の比較を行い、ドット密度が低くなる成分から先に処理を行う。上述の例では各色成分ごとに比較を行っていたが、本実施例では各色成分のサイズごとに処理対象となる成分を有していることになる。C、M、Y、K各色ごとに大ドット(Largeドット、以下Lドット)と小ドット(Smallドット、以下Sドット)の2つのサイズを出力できる画像出力装置20では、全部で8成分存在する。8成分のうちいずれか1つの成分に対してCC法によりドット生成を示す値を対応する出力データ領域に格納するたびごとに未処理画素を探索する。異なる色成分の異なるサイズのドットのみならず、同じ色成分の同じサイズのドットどうしでその距離を一定に保つためである。また、その過程で他の7つの成分のうち対応する画素位置で未処理画素である画素に対して演算値を加算する。その後の減算処理により、各8つの成分のドットが互いに重なって発生するのを防止するためである。さらに、この演算値は明度を考慮した値となっているので、異なる色成分のドットは印刷用紙上単位面積あたり明度が均一に保たれている。
次に処理の詳細について、図36乃至図40を用いて説明することにする。本実施例5では、実施例1等と重複した処理が多いため、RAM26内に格納されるデータの例は示さないことにする。図36に示すように、まずCPU24は本処理を実行するためのプログラムをROM25から読み出すことで処理が開始される(ステップS80)。
次いで、C、M、Y、Kの各色成分に対して分版関数を用いてLドット成分、Sドット成分に分離する(ステップS81)。分版関数の例を図37に示す。この図で横軸が入力
階調値、縦軸が出力階調値を示し、Sドット用の関数とLドット用の関数の2つのグラフを示している。例えば、ある色成分の入力階調値が“30”のときは、Sドット関数からSドット成分の出力値として“30”、Lドット成分の出力値“0”を得る。また、入力階調値が“80”のときは、Sドット用関数からSドット成分として“20”、Lドット用関数からLドット成分として“60”を得る。かかる分版関数は、例えばROM25などに格納され、CPU24がこの分版関数を読み出すことによって出力値を得ることができる。この分版関数により分版された各Lドット成分、Sドット成分はそれぞれRAM26内の設けられた入力データ領域261Sa〜261Sd、及び262La〜262Lbに格納される。例えばシアンのSドット成分は、シアンS成分入力データ領域261Saに、シアンのLドット成分は、シアンL成分入力データ領域261Laに格納される。これらの領域261Sa〜261Sd、及び261La〜261Ldも実施例1等と同様の構成である。これらの領域は説明の便宜のため図示されてない。
図36に戻り、次いでCPU24はラスタ方向にこれら8つの成分いづれか1つについて未処理画素を探索する(ステップS82)。ラスタ方向に探索して初期画素からCC法による処理を行うことで、各成分のドットが斜め方向に形成され快適な印刷出力を得られるからである。未処理画素か否かは、各成分の画素位置に実施例1等と同様に処理が終了すると“−1”が領域261Sa等に格納されるので、“−1”が格納されたか否かで判断する。未処理画素がなくなると処理は終了する(ステップS83で“NO”が選択されステップS90に移行する)。未処理画素が存在すれば(ステップS83で“YES”)、8成分のうち2成分以上未処理なら(ステップS84で“YES”)その成分で最も疎な成分を選択する(ステップS85)。1成分のみ未処理のときは(ステップS84で“NO”)、その未処理の成分を選択する(ステップS89)。そしてCPU24は、選択した色成分に対してCC法による処理を行う(ステップS86)。疎な成分から先に処理を行うのは、実施例1で説明したとおり、入力階調値に忠実なドットを生成するためである。
選択した成分に対するCC法の処理のフローチャートを図38に示す。この処理も実施例1とほぼ同様である。すなわち、ステップS82で探索した未処理画素を初期画素として重心位置を演算する(ステップS861)。そして、階調値の合計が閾値(本実施例でも“255”)と等しい(ステップS868で“YES”)か、超えるまで(ステップS863で“YES”)、セルを構成する画素を選択し続ける。画素の選択は、重心位置に最も近い画素を選択し、選択すべき画素が複数存在すればランダムにいずれか1つ選択する。また、画素を選択するごと実施例1の(式2)を用いて明度に応じた演算値を加算する。ただし、本実施例の場合、加算すべき対象は他の色成分ではなく、Sドット成分とLドット成分を加えた他の7つの成分に加算する(ステップS867、S871)点が実施例1とは異なる。この場合、同じ色成分でもドットサイズが異なる成分に対して加算処理を行うことになる。サイズの異なるドットが重なって発生することを防止するためである。なお、本実施例においても、CPU24は加算値の合計である加算総量をRAM26内のメモリ領域270に格納する(図示せず)。ここでも実施例1等と同様に加算対象の成分の画素位置に処理済みであることを示す“−1”が格納されているときは加算処理は行わないことになる。
そして、CPU24は重心位置にドット生成を示す値(本実施例でも“255”)を対応する出力データ領域262Sa〜262Sd、及び262La〜262Ldに格納する(図39のステップS873)。選択した色成分に対するCC法の処理が終了して、図36のステップS88に移行する。
CPU24は、ステップS88において減算処理を行う。減算処理のフローチャートを図40に示す。これも実施例1とほぼ同様である。すなわち、生成したドットに最も近い
1成分目(Y=1)の画素を選択する(ステップS883)。画素の選択は、最初にドットが発生する画素位置、2回目のループ(ステップS882からステップS886までのループ)ではドットが発生する画素位置に隣接する上下左右の画素、3回目はその画素位置に斜め方向に隣接する4つの画素、4回目は2回目で選択した画素飛び越した上下左右の4つの画素、等を除々にその範囲を広げるように選択する。画素の選択は、RAM26内のメモリ領域270に格納した加算総量と等しい(ステップS886で“YES”)か、超える(ステップS884で“YES”)まで選択し続ける。そして、この処理を他の7つの成分のうち加算処理が行われなかった成分を除いたすべての成分に対して行う(ステップS888で“NO”が選択されステップS882からステップS887までの処理を行う)。すべての成分の処理を終了すると(ステップS888で“YES”)、減算処理が終了し、再び未処理画素の探索を8つの成分に対して行うことになる。そして、未処理画素がなくなるとステップS83で“NO”が選択され全体の処理が終了する(ステップS90)。
この実施例5においても、実施例1等と同様に、入力階調値に忠実なドットを生成させるとともに、異なる色どうしでも同じ色どうしでもドット間距離が一定に保たれた快適な印刷出力を得ることができる。さらに、異なるサイズのドットどうしでも、異なる色の同じサイズのドットどうしでもドット間距離を一定に保つことができる。
また、本実施例5ではハーフトーン処理としてCC法を利用した場合の例で説明したが、実施例2、3で説明したディザ法や誤差拡散法を利用した場合でも全く同様の作用効果を奏する。この場合に、図36のステップS86をディザ処理又は誤差拡散処理に置き換えること以外、処理はすべて同じ内容となる。また、ディザ処理や誤差拡散処理自体も処理対象となる成分が8つに増えただけで実施例2、3と同じ処理を行うことになる。
[モノクロデータのマルチサイズに対するハーフトーン処理]
実施例6としてモノクロデータのマルチサイズに対するハーフトーン処理について説明する。この場合、図1においてホストコンピュータ10のアプリケーション部11で画像や文字等の印刷対象のデータが作成されると、ラスタライズ部12で画素又はドット毎モノクロデータからなる階調データに変換される。そして、この階調データが画像出力装置20のハーフトーン処理部212に直接入力されて以下の処理が行われることになる。実施例1等においては、RGBデータが入力されて色変換部211においてC、M、Y、Kの色成分に変換されたが、本実施例ではモノクロデータを取り扱うため色変換部211が省略されることになる。
図41に全体の処理のフローチャートを示す。CC法を利用した場合の例である。本実施例においても上述した実施例5と同様に、まず入力階調データに対して分版関数を用いてLドット成分とSドット成分に分離する(ステップS101)。分離された各データは、RAM26内に設けられたS成分入力データ格納領域265a、L成分入力データ格納領域265bにCPU24によって格納される。
次いでCPU24は、これら2つの成分に対してラスタ方向に未処理画素の探索を行い(ステップS102)、2つの成分双方とも未処理のとき(ステップS104で“YES”のとき)はドット密度が疎である成分を選択し(ステップS105)、1つのみ未処理のときは(ステップS104で“NO”のとき)その未処理の成分を選択する(ステップS109)。そして選択した成分に対してCC法による処理を行う(ステップS106)。
CC法による処理のフローチャートを図42に示す。これも実施例1等とほぼ同様であ
る。すなわち、ステップS102で探索した未処理画素を初期画素として、階調値の合計が閾値(ここでも“255”)と等しい(ステップS1068で“YES”)か、超える(ステップS1063で“YES”)までセルを構成する画素を選択し続ける。この画素の選択もこれまで演算した重心位置から最も近い画素を選択する(ステップS1062)。複数あればランダムにいづれか1つ選択する。このときも、画素の選択を行うごとに、他のドット成分に対して明度に応じた演算値を加算する。演算式は実施例1の(式2)を用いる。この場合も、加算対象の画素がすでに処理済みの場合は加算を行わない。そして、CPU24は画素の選択が終了するとセルの重心位置にドッド生成を示す値(ここでも“255”)を対応するSドット成分出力データ領域266a又はLドット成分出力データ領域266bに格納する(図43のステップS1073)。そして、選択された成分のCC法による処理が終了する。
次いでCPU24は、減算処理を行う(図41のステップS108)。減算処理自体は、実施例1等とほぼ同様である。例えば図6に示す減算処理のフローチャートに従って処理が進められる。図6で “他の色”を“他のドット成分”と置き換えるだけである。この場合も、ドットが生成された画素位置から選択し、その次はその画素位置に隣接する上下左右の画素、その次はその位置に隣接する斜め方向の4つの画素と、選択画素の階調値の合計がRAM26内のメモリ領域270のsum2(図示せず)に格納された加算総量と等しくなるか、超えるまで選択を続けることになる。減算処理が終了すると再び図41のステップS102に戻り、未処理画素の選択を行い、2つのドット成分について未処理画素がなくなるまで処理が繰り返されることになる。未処理画素がなくなると(ステップS103で“NO”のとき)全体の処理は終了することになる(ステップS110)。
この例でも、ドットが生成されるごとに未処理画素の探索を行いCC法による処理を行うため、異なるサイズのドットのみならず同じサイズのドットどうしでもその距離が一定に保たれる。また、その過程で他のドット成分に対して演算値を加算する。その後の減算処理により、異なるサイズのドットが互いに重なって発生するのを防止することができる。したがって、入力階調値に忠実なドットが生成されるとともに、ドット間距離が一定に保たれた快適な印刷出力を得ることができる。
なお、本実施例ではCC法による処理で説明したが、ディザ法や誤差拡散法による処理でも同様の作用効果を奏することができる。この場合も、図41のステップS106でCC法処理をディザ処理、誤差拡散処理に置き換えるだけで、後は図41に示す処理と同様の処理を行うことになる。また、ディザ処理、誤差拡散処理自体は実施例2、3で説明した処理と同様に行うことになる。
以上、本発明が適用される実施例1から6まで説明したが、本発明はこれに拘泥せず、以下のような変形例においても同様の効果を奏する。
すなわち、各実施例において、色変換部211と、本発明が適用されるハーフトーン処理部212とは画像出力装置20において処理が行われていたが、それ以外にも図44に示すように色変換部211とハーフトーン処理部212とがホストコンピュータ10内に設けられ、このハーフトーン処理部212において本発明が適用され、上述したものと全く同様の効果を奏することができる。この場合、ハーフトーン処理213から出力される量子化データがホストコンピュータ10から画像出力装置20に入力されて、パルス幅変調213から印刷エンジン22にドット生成を示す制御データが出力され印刷が行われることになる。
また、各実施例でホストコンピュータ10以外にも例えば携帯電話やPDA(Personal
Digital Assistance)、その他の情報携帯端末において、印刷対象のデータが生成されて画像出力装置20に出力されるようになされていてもよい。さらには、かかる端末に色変換処理部211や本発明が適用されるハーフトーン処理部212を備えるようにしてもよい。さらには、紙とディスプレイとを組み合わせた、いわゆる電子ペーパーにおいてかかる本発明のハーフトーン処理212が設けられ、2値化(又は多値化)された値で文書や画像を表示したり、画像出力装置20との組み合わせて印刷出力を得るようにしてもよい。これらの場合でも、上述した効果を得ることができる。
また、CC法による処理で、セルを構成する画素を選択するとき、演算した重心位置を用いて選択したが、それ以外にも階調値を考慮せず座標位置のみの中心位置から最も近い画素を選択するようにしてもよい。すなわち、(座標位置の和)/(選択画素の数)により演算した(x、y)の座標位置である。例えば、(0,0)と(1,0)の2つの画素をセルを構成する画素として選択した場合、その中心位置は(0.5,0)、この中心位置から最も近い位置にある未処理画素を選択する。さらに(0,1)を加えた3つの画素の場合、その中心位置は(0.5,0.5)、その画素位置から最も近い画素位置を未処理画素として選択するようにする。要するに、セルを構成する未処理画素を選択するときに常にテーブル等を利用して固定して選択するのではなく、画素選択のための基準点の位置(実施例1等で説明した重心位置や、この階調値を考慮せず座標位置のみで演算した中心位置)が移動すればよい。このように移動することで、セルの形状が固定の場合と比較してより円状に成長する可能性が高まり、ドット間距離が保たれた快適な画像出力を得られるからである。
さらに上述の例では、画像出力装置20の印刷エンジン22はレーザプリンタの例で説明したが、それ以外にも他にもイエロー、マゼンダ、シアン、ブラック等のインクを吐出させて印刷を行うインクジェットプリンタや、さらにバブルジェット(登録商標)プリンタでも本発明は適用され、同様の効果を奏することができる。
さらに、カラーを表現する色成分としてC、M、Y、Kの4色の例で説明したが、それ以外にもライトシアン、ライトマゼンダを含めた6色や、さらにそれ以外の色成分を含めた複数色の場合でも同様の効果を得ることができる。また、このとき、未処理画素の存在する各色成分のうち最もドット密度の低いものから順番に処理を行うことになる。
また、実施例5や実施例6でサイズとしてSドット、Lドットの例で説明したが、中ドット含めた3つのドット成分や、さらに4つ以上のドット成分の場合でも全く同様の効果を奏する。
本発明が適用されるシステム全体の構成を示す図である。 画像出力装置の具体的構成を示す図である。 C、Mに対する処理全体の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 減算処理の動作を示すフローチャートである。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 C、Mに対する処理全体の動作を示すフローチャートである。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 C、Mに対する処理全体の動作を示すフローチャートである。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 C、M、Y、Kに対する処理全体の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 減算処理の動作を示すフローチャートである。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 RAM26の内部構成の例を示す図である。 C、M、Y、Kマルチサイズに対する処理全体の動作を示すフローチャートである。 分版関数の例を示す図である。 CC法による処理の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 減算処理の動作を示すフローチャートである。 モノクロデータのマルチサイズに対する処理全体の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 CC法による処理の動作を示すフローチャートである。 本発明が適用される他のシステム全体の構成を示す図である。
符号の説明
10 ホストコンピュータ 20 画像出力装置 21 画像処理部 211 色変換部 212 ハーフトーン処理部 213 パルス幅変調部 22 印刷エンジン 24 CPU 25 ROM 251 ディザ(閾値)マトリックス 252 拡散マトリックス 26 RAM 261a シアン入力データ格納領域 261b マゼンダ入力データ格納領域 261c イエロー入力データ格納領域 261d ブラック入力データ格納領域 262a シアン出力データ格納領域 262b マゼンダ出力データ格納領域 262c イエロー出力データ格納領域 262d ブラック出力データ格納領域 264a シアン拡散誤差格納領域 264b
マゼンダ拡散誤差格納領域 270 ワーキングメモリ領域

Claims (12)

  1. 画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する画像処理装置において、
    前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換して出力する変換手段と、
    前記変換手段で前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換するとき、画素ごとに前記N種類のレベル値から演算した演算値をそれぞれ前記第2のデータ又は前記第1のデータに加算する加算手段と、
    前記変換手段でM種類のレベル値に変換された画素に対応する前記第2のデータ又は前記第1のデータの画素から前記加算手段で加算した演算値の合計値を減算する減算手段と、
    を備え、前記変換手段は前記第1のデータ又は前記第2のデータのうち前記M種類のレベル値に変換されていない未処理画素を含む前記第1のデータ又は前記第2のデータに対して前記M種類のレベル値を有するデータに変換して出力することを特徴とする画像処理装置。
  2. 請求項1記載の画像処理装置において、
    前記変換手段は、前記未処理画素が前記第1のデータ及び前記第2のデータともに同じ画素位置にあるときはドット密度が低い前記第1のデータ又は前記第2のデータから先に前記M種類のレベル値に変換する、ことを特徴とする画像処理装置。
  3. 請求項1記載の画像処理装置において、
    前記減算手段は、前記M種類のレベル値に変換された画素に対応する前記第2のデータ又は前記第1のデータの画素の前記N種類のレベル値が前記合計値に達しないときは、当該画素のレベル値を0にし、さらに当該画素の周辺の画素からそのレベル値を減算する、ことを特徴とする画像処理装置。
  4. 請求項1記載の画像処理装置において、
    前記減算手段は、閾値が格納された閾値マトリックスを用いて前記N種類のレベル値を前記M種類のレベル値に変換する、ことを特徴とする画像処理装置。
  5. 請求項1記載の画像処理装置において、
    前記変換手段は、前記N種類のレベル値と閾値とを比較して前記M種類のレベル値に変換するとともに、前記M種類のレベル値に変換したときの誤差を前記M種類のレベル値に変換していない前記N種類のレベル値に加算し加算したレベル値と前記閾値とを比較して前記M種類のレベル値に変換する、ことを特徴とする画像処理装置。
  6. 請求項1記載の画像処理装置において、
    前記変換手段は、さらに、前記M種類のレベル値を有する画素を選択し、選択した画素ごとのレベル値の総和が閾値となるまで未処理画素を選択して画素群を生成する生成手段と、生成した画素群の所定画素に対して前記M種類のレベル値を付与する付与手段と、を備えることを特徴とする画像処理装置。
  7. 請求項1記載の画像処理装置において、
    前記変換手段は、さらに、画素選択のための第1の基準点に基づいて、画素ごとの前記N種類のレベル値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、前記画素群生成手段で生成した画素群の第2の基準点を決定する画素群基準点決定手段と、前記画素群基準点決定手段で決定した前記第2の基準点に位置する画素に前
    記M種類のレベル値を付与する付与手段と、を備え、前記画素群生成手段は、前記第1の基準点を更新させて当該第1の基準点に基づいて前記画素を選択する、ことを特徴とする画像処理装置。
  8. 請求項7記載の画像処理装置において、
    前記画素群生成手段は、前記第1の基準点に基づいて選択すべき画素が複数あるときはランダムに選択する、ことを特徴とする画像処理装置。
  9. 請求項7記載の画像処理装置において、
    前記第2の基準点は、前記画素群の各画素位置と各画素の前記N種類のレベル値とから演算した重心位置である、ことを特徴とする画像処理装置。
  10. 請求項1記載の画像処理装置において、
    前記加算手段は、前記第2のデータ又は前記第1のデータの明度に応じた演算値を前記第2のデータ又は前記第1のデータに加算する、ことを特徴とする画像処理装置。
  11. 画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する画像処理方法において、
    前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換して出力する変換工程と、
    前記変換工程で前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換するとき、画素ごとに前記N種類のレベル値から演算した演算値をそれぞれ前記第2のデータ又は前記第1のデータに加算する加算工程と、
    前記変換工程でM種類のレベル値に変換された画素に対応する前記第2のデータ又は前記第1のデータの画素から前記加算工程で加算した演算値の合計値を減算する減算工程と、
    を備え、前記変換工程は前記第1のデータ又は前記第2のデータのうち前記M種類のレベル値に変換されていない未処理画素を含む前記第1のデータ又は前記第2のデータに対して前記M種類のレベル値を有するデータに変換して出力することを特徴とする画像処理方法。
  12. 画素ごとにともにN(Nは正の整数)種類の以上のレベル値を有する少なくとも2つの第1のデータ及び第2のデータに対して、それぞれ画素ごとにM(Mは正の整数)種類のレベル値を有するデータに変換して出力する処理をコンピュータに実行させるプログラムにおいて、
    前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換して出力する変換処理と、
    前記変換処理で前記第1のデータ又は前記第2のデータを前記M種類のレベル値を有するデータに変換するとき、画素ごとに前記N種類のレベル値から演算した演算値をそれぞれ前記第2のデータ又は前記第1のデータに加算する加算処理と、
    前記変換処理でM種類のレベル値に変換された画素に対応する前記第2のデータ又は前記第1のデータの画素から前記加算処理で加算した演算値の合計値を減算する減算処理と、
    を備え、前記変換処理は前記第1のデータ又は前記第2のデータのうち前記M種類のレベル値に変換されていない未処理画素を含む前記第1のデータ又は前記第2のデータに対して前記M種類のレベル値を有するデータに変換して出力することをコンピュータに実行させることを特徴とするプログラム。
JP2004296527A 2003-10-09 2004-10-08 画像処理装置、画像処理方法、及びプログラム Pending JP2005136975A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004296527A JP2005136975A (ja) 2003-10-09 2004-10-08 画像処理装置、画像処理方法、及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003350396 2003-10-09
JP2004296527A JP2005136975A (ja) 2003-10-09 2004-10-08 画像処理装置、画像処理方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2005136975A true JP2005136975A (ja) 2005-05-26

Family

ID=34656040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004296527A Pending JP2005136975A (ja) 2003-10-09 2004-10-08 画像処理装置、画像処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2005136975A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326032B2 (en) 2008-09-16 2012-12-04 Ricoh Company, Limited Image processing apparatus, image processing method, and computer program product
JP2014531619A (ja) * 2011-09-16 2014-11-27 クォルコム・メムズ・テクノロジーズ・インコーポレーテッド 画像のハイブリッドハーフトーン化のための方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326032B2 (en) 2008-09-16 2012-12-04 Ricoh Company, Limited Image processing apparatus, image processing method, and computer program product
JP2014531619A (ja) * 2011-09-16 2014-11-27 クォルコム・メムズ・テクノロジーズ・インコーポレーテッド 画像のハイブリッドハーフトーン化のための方法および装置

Similar Documents

Publication Publication Date Title
US7474441B2 (en) Image processing device, method, program and recording medium recording the program
JP5282800B2 (ja) 画像処理装置及びプログラム
JP4412248B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US7369710B2 (en) Image processing device, image processing method and image processing program
JP2005136975A (ja) 画像処理装置、画像処理方法、及びプログラム
US7433083B2 (en) Halftone-image processing device
JP4479663B2 (ja) 固定セルによるハーフトーン処理を行う画像処理装置,画像処理方法,及び画像処理プログラム
WO2005109851A1 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2005117642A (ja) ハーフトーン処理方法、画像処理装置、画像処理方法、及びプログラム
JP6525518B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP6880833B2 (ja) 印刷実行部に印刷を実行させるための制御装置
JP5678501B2 (ja) 画像処理装置及び画像処理方法
JP2005080217A (ja) 画像処理装置、画像処理方法、及びプログラム
JP4539567B2 (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2012165192A (ja) 印刷装置、および、印刷方法
JP3951953B2 (ja) 印刷装置、画像処理装置、印刷方法、画像処理方法及びプログラム
JP2005136976A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2005341142A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2006025220A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2005318402A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2005295131A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2005341351A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2006060645A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよび画像処理プログラムを記録した記録媒体
JP4062176B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP2005039413A (ja) 画像処理装置、画像処理方法、及びプログラム