A.第1実施例:
図1は、一実施例としての画像処理システムを示す説明図である。この画像処理システムは、画像処理装置100と、複合機200と、を含んでいる。画像処理装置100と複合機200とは、ネットワークNTに接続されており、互いに通信可能である。
画像処理装置100は、例えば、パーソナルコンピュータである(例えば、デスクトップコンピュータ、タブレットコンピュータ)。画像処理装置100は、プロセッサ110と、揮発性記憶装置120と、不揮発性記憶装置130と、画像を表示する表示部140と、ユーザによる操作を受け入れる操作部150と、インタフェース190と、を有している。これらの要素は、バスを介して互いに接続されている。
プロセッサ110は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラム132を格納している。プロセッサ110は、プログラム132を実行することによって、複合機200に画像を印刷させる処理を実行する(詳細は後述)。プログラム132は、例えば、プリンタドライバであってよい。プロセッサ110は、プログラム132の実行に利用される種々の中間データを、記憶装置(例えば、揮発性記憶装置120、不揮発性記憶装置130のいずれか)に、一時的に格納する。プログラム132は、例えば、複合機200の製造者によって提供される。
表示部140は、画像を表示する装置であり、例えば、液晶ディスプレイである。操作部150は、ユーザによる操作を受け取る装置であり、例えば、表示部140上に重ねて配置されたタッチパネルである。ユーザは、操作部150を操作することによって、種々の指示を画像処理装置100に入力可能である。
インタフェース190は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース190は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
複合機200は、制御装置202と、スキャナ部280と、印刷部290と、を有している。制御装置202は、プロセッサ210と、揮発性記憶装置220と、不揮発性記憶装置230と、画像を表示する表示部240と、ユーザによる操作を受け入れる操作部250と、通信インタフェース270と、を有している。これらの要素は、バスを介して互いに接続されている。
プロセッサ210は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム232を格納している。プロセッサ210は、プログラム232を実行することによって、印刷部290に画像を印刷させる処理を実行する(詳細は、後述)。プロセッサ210は、プログラム232の実行に利用される種々の中間データを、記憶装置(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。本実施例では、プログラム232は、例えば、複合機200の製造者によって、ファームウェアとして、不揮発性記憶装置230に予め格納されている。ただし、プログラム232の少なくとも一部が、外部の装置(例えば、サーバ)から取得されて不揮発性記憶装置230に格納されるように、複合機200が構成されていてもよい。
表示部240は、画像を表示する装置であり、例えば、液晶ディスプレイである。操作部250は、ユーザによる操作を受け取る装置であり、例えば、表示部240上に重ねて配置されたタッチパネルである。ユーザは、操作部250を操作することによって、種々の指示を複合機200に入力可能である。
インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース270は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
スキャナ部280は、CCDやCMOSなどの光電変換素子を用いて光学的に文書等の対象物を読み取ることによって、読み取った画像(「スキャン画像」と呼ぶ)を表すスキャンデータを生成する。
印刷部290は、所定の方式(例えば、レーザ方式や、インクジェット方式)で、用紙(印刷媒体の一例)上に画像を印刷する装置である。本実施例では、印刷部290は、シアンC、マゼンタM、イエロY、ブラックKの4種類のインクを用いてカラー画像を印刷可能なインクジェット方式の印刷装置である。
図2は、印刷処理の例を示すフローチャートである。本実施例では、画像処理装置100(図1)のプロセッサ110は、プリンタドライバとして、印刷処理を実行する。この印刷処理は、例えば、文書作成プログラムや画像作成プログラムなどのアプリケーションプログラムに対してユーザが印刷指示を入力して、そのアプリケーションプログラムから、プリンタドライバが呼び出された場合に実行される。
S100では、プロセッサ110は、印刷処理の対象の画像データである入力画像データを特定し、特定した入力画像データを取得する(以下、「入力画像データ」を、単に「入力データ」とも呼ぶ)。本実施例では、プロセッサ110は、プリンタドライバを呼び出したアプリケーションプログラムによって提供される画像データを、入力データとして取得する。入力データは、例えば、EMF(Enhanced Meta File)形式のように、ページ記述言語で記述された画像データであってよい。これに代えて、入力データは、RGBのビットマップデータであってもよい。
S110では、プロセッサ110は、取得した入力データに対してラスタライズ処理を実行して、複数個の画素を含む対象画像を表す印刷処理用のビットマップデータを生成する(以下、生成されるデータを、第1ビットマップデータとも呼ぶ)。本実施例では、第1ビットマップデータは、RGBの階調値によって画素ごとの色を表すRGB画像データである。また、本実施例では、RGBの階調値は、ゼロから255までの256階調で表される。第1ビットマップデータの解像度(すなわち、画素密度)は、印刷処理用の解像度に設定される。なお、入力データがビットマップデータである場合、プロセッサ110は、ビットマップデータの解像度を印刷処理用の解像度に変換する処理を実行して、第1ビットマップデータを生成してもよい。
図3(A)は、第1ビットマップデータによって表される画像IMの例を示している。この画像IMは、入力データによって表される画像と同じである。画像IMは、白色の背景上に配置された、文字列のオブジェクトOB1と、イラストのオブジェクトOB2と、写真のオブジェクトOB3と、を表している。図示を省略するが、画像IMは、第1方向D1と、第1方向D1に垂直な第2方向D2と、に沿って格子状に配置された複数の画素によって、表されている。以下、第1方向D1を、右方向とも呼び、第1方向D1に反対の方向を、左方向とも呼ぶ。また、第2方向D2を、下方向とも呼び、第2方向D2に反対の方向を、上方向とも呼ぶ。
図3(B)は、文字列のオブジェクトOB1の一部分の拡大図である(部分画像IMaとも呼ぶ)。図中の小さい矩形Pxは、画素を示している(以下、画素Pxと呼ぶ)。オブジェクトOB1は、比較的小さい文字列T1と、比較的大きい文字列T2と、第1方向D1に延びる第1線L1と、第2方向D2に延びる第2線L2と、を含んでいる。各線L1、L2の幅は、1画素である。
図3(B)の右上部には、文字列T1、T2を表す画素Pxと線L1、L2を表す画素Pxとの階調値の例が示されている。図中には、CMYKの階調値と、RGBの階調値とが、示されている。本実施例では、CMYKの階調値は、対応する色材の単位面積当たりの量を表しており、ゼロから255までの256階調で表される。CMYK色空間で表された画像データを用いて画像を印刷する場合、オペレーティングシステムによって、CMYKの階調値が、RGBの階調値に変換され得る。具体的には、以下の通りである。オペレーティングシステムによっては、画像データの表示や印刷などの画像処理のための色空間が、予め特定の色空間に決められている場合がある(基準色空間と呼ぶ)。本実施例では、基準色空間は、RGB色空間であることとする。画像処理に利用される画像データの色空間が基準色空間とは異なる場合、オペレーティングシステムは、画像処理のために、画像データの色空間を、基準色空間に変換する。例えば、CMYK色空間で表された画像データを用いて画像を印刷する場合に、オペレーティングシステムは、画像データの色空間を、CMYK色空間からRGB色空間へ、変換する。そして、オペレーティングシステム上で動作する画像処理用のアプリケーションは、変換後の画像データを、入力データとして、プリンタドライバに提供する。変換前の色空間(例えば、CMYK色空間)の階調値と、基準色空間(例えば、RGB色空間)の階調値と、の間の対応関係としては、予め決められた対応関係が、用いられる(例えば、表示用のICCプロファイル)。
図3(B)の例では、C=M=Y=ゼロ、K=255のCMYKの階調値が、R=35、G=31、B=32のRGBの階調値に変換されている。ブラックKの階調値は、取り得る範囲(ゼロから255)のうちの最大値であり、シアンC、マゼンタM、イエロYの階調値は、取り得る範囲の最小値である。このようなCMYKの階調値は、最も暗い黒色を表している。一方、赤R、緑G、青Bのそれぞれの階調値は、取り得る範囲の最小値であるゼロよりも大きい。このようなRGBの階調値は、最も暗い黒色よりも明るいグレーを表している。このように、オブジェクトの色が、色空間変換によって、黒からグレーに変換される場合がある。
S120(図2)では、プロセッサ110は、第1ビットマップデータに対して色変換処理を実行して、印刷に利用可能な色材の種類に対応する色空間で表された画像データを生成する。本実施例では、RGBの第1ビットマップデータから、CMYKの第2ビットマップデータが生成される。色変換処理は、RGBの階調値とCMYKの階調値との対応関係を予め定めるルックアップテーブルを用いて行われる。このようなルックアップテーブルは、複合機200(図1)の製造者によって、プログラム132と共に提供される(図示省略)。
なお、第2ビットマップデータは、第1ビットマップデータを用いて得られ、第1ビットマップデータは、入力データを用いて得られるので、第2ビットマップデータは、入力データを用いて得られるデータである。従って、第2ビットマップデータによって表されるCMYKの階調値は、入力データによって表される色(特に、色材の量、換言すれば、濃度)を表している。
S130では、プロセッサ110は、第2ビットマップデータのCMYKの階調値に対してハーフトーン処理を実行して、ドットを形成するか否か(ドットの形成状態とも呼ぶ)を、画素ごと、かつ、インクの種類ごとに表すドットデータを生成する。このように、第2ビットマップデータは、ハーフトーン処理の対象の画像データである(以下、「対象画像データ」または、単に「対象データ」とも呼ぶ)。本実施例では、ハーフトーン処理は、ディザマトリクスを用いて行われる。また、後述するように、文字列T1、T2などのオブジェクトのエッジを表す画素と、細い線L1、L2を表す画素と、に関しては、階調値に拘わらずに、ドットを形成することに決定される。このようなハーフトーン処理によって、CMYKの第2ビットマップデータから、ドットデータが生成される。
S140では、プロセッサ110は、ドットデータを用いて印刷データを生成する。印刷データは、印刷部290によって解釈可能なデータ形式で表されたデータである。プロセッサ110は、例えば、印刷に用いられる順にドットデータを並べるとともに、各種のプリンタ制御コードや、データ識別コードを付加して印刷データを生成する。
S150では、プロセッサ110は、生成した印刷データを、印刷実行部としての複合機200に供給する。S160では、複合機200のプロセッサ210は、受信した印刷データに従って、印刷部290に画像を印刷させる。以上により、図2の印刷処理が終了する。
図4は、ハーフトーン処理(図2:S130)の手順の例を示すフローチャートである。S200では、プロセッサ110は、第2ビットマップデータによって表される複数の画素の中から、未処理の画素を、処理対象の画素である対象画素として選択する。S210では、プロセッサ110は、対象画素の色が白であるか否かを判断する。本実施例では、C=M=Y=K=ゼロである場合に、対象画素の色が白であると判断される。対象画素の色が白である場合(S210:Yes)、プロセッサ210は、対象画素にドットを形成するという決定を行わずに、S295へ移行する。対象画素が背景を表す場合、S210の判断結果は、Yesである。対象画素が、オブジェクトを表す場合、S210の判断結果は、Noである。
対象画素の色が白とは異なる色である場合(S210:No)、S220で、プロセッサ110は、エッジフラグを設定する処理を実行する(エッジフラグ処理と呼ぶ)。エッジフラグ処理は、対象画素がオブジェクトのエッジを表すか否かを判断する処理である。
図5は、エッジフラグ処理の手順の例を示すフローチャートである。S300では、プロセッサ110は、対象画素を中心とする3画素×3画素の9個の画素を特定する。図5のS300の右には、対象画素Ptを中心とする9個の画素Pxが図示されている。9個の画素Pxは、第1方向D1に沿って3個の画素Pxが並び、第2方向D2に沿って3個の画素Pxが並ぶように、配置されている。プロセッサ110は、これらの9個の画素Pxのそれぞれの処理値を算出する。処理値は、エッジフラグ処理のための階調値である。本実施例では、処理値は、C、M、Y、Kの階調値の合計値である。この処理値が大きいほど、濃度が高い。処理値の変化は、色の変化を表している。また、このような処理値(ここでは、CMYKの階調値の合計値)は、対象画素に関する画素値の例である。
図中の各画素Pxの中の符号は、処理値の符号を示している。各符号は、第2方向D2の位置を示す2文字のアルファベットと、第1方向D1の位置を示す1桁の番号と、で構成されている。第2方向D2の3個の画素位置には、「VU」、「VN」、「VD」が、第2方向D2に向かってこの順に並ぶように、割り当てられている。第1方向D1の3個の画素位置には、「1」、「2」、「3」が、第1方向D1に向かってこの順に並ぶように、割り当てられている。例えば、対象画素Ptの処理値の符号は「VN2」である。
S310では、プロセッサ110は、第1方向D1の第1重みW1を算出する。第1重みW1は、対象画素Ptから見て第1方向D1側の画素と反対側の画素との間の処理値の差の大きさを示している。第1重みW1が大きい場合には、対象画素Ptがエッジを表している可能性が高い。このような重みW1は、エッジ量、または、エッジ強度とも呼ばれる。重みW1の算出には、種々のエッジ検出フィルタを用いることができる。図5のS310の右には、本実施例のS310で用いられるエッジ検出フィルタが示されている。各画素Pxの中の値は、処理値に付される係数を示している。係数は、第1方向D1の画素位置毎に決められている。具体的には、第1方向D1の3個の画素位置には、「−1」、「0」、「1」の係数が、第1方向D1に向かってこの順に並ぶように、割り当てられている。第1重みW1は、対象画素Ptを中心とする9個の画素Pxのそれぞれの処理値の重み付き合計値の絶対値である。重みとしては、上記のエッジ検出フィルタの係数が用いられる。
図3(B)の画素Pe1は、文字列T2に含まれる文字(ここでは、bの文字)の左側のエッジを表す画素である。画素Pe1が対象画素である場合、第1重みW1は、大きな値になる(例えば、ゼロよりも大きな値)。文字の右側のエッジを表す画素に関しても、同様に、第1重みW1は、大きな値になる。背景のうちの文字などのオブジェクトから離れた部分を表す画素(例えば、画素Pb)が対象画素である場合、第1重みW1は、小さな値になる(例えば、ゼロ)。
S320では、プロセッサ110は、第2方向D2の第2重みW2を算出する。第2重みW2は、第1重みW1と同様のエッジ量を表している。ただし、第1重みW1とは異なり、第2重みW2は、対象画素Ptから見て第2方向D2側の画素と反対側の画素との間の処理値の差の大きさを示している。図5のS320の右には、本実施例のS320で用いられるエッジ検出フィルタが示されている。第2方向D2の3個の画素位置には、「−1」、「0」、「1」の係数が、第2方向D2に向かってこの順に並ぶように、割り当てられている。第2重みW2は、対象画素Ptを中心とする9個の画素Pxのそれぞれの処理値の重み付き合計値の絶対値である。重みとしては、上記のエッジ検出フィルタの係数が用いられる。
図3(B)の画素Pe2は、文字列T2に含まれる文字(ここでは、cの文字)の下側のエッジを表す画素である。画素Pe2が対象画素である場合、第2重みW2は、大きな値になる(例えば、ゼロよりも大きな値)。文字の上側のエッジを表す画素に関しても、同様に、第2重みW2は、大きな値になる。背景のうちの文字などのオブジェクトから離れた部分を表す画素(例えば、画素Pb)が対象画素である場合、第2重みW2は、小さな値になる(例えば、ゼロ)。
なお、図3(B)の文字列T1の文字と線L1、L2とは、1画素の幅の細い線で表されている。このように細い線を表す画素が対象画素である場合、重みW1、W2は、小さな値(例えば、ゼロ)になる。本実施例のエッジ検出フィルタに限らず、ソーベルフィルタなどの他の一般的なエッジ検出フィルタを用いる場合も、細い線を表す画素に関しては、大きなエッジ量を算出することが困難である。そこで、本実施例では、1画素の幅の細い線を表す画素(以下、細線画素と呼ぶ)に関しても、大きな重みW1、W2が得られるように、以下のS330〜S360の処理が行われる。
S330では、プロセッサ110は、対象画素Ptが、第2線L2(図3(B))のように第2方向D2に延びる細い線を表す画素の候補であるか否かを判断する。本実施例では、以下の条件1〜3が満たされるか否かが判断される。
条件1)対象画素Ptの第1方向D1側に隣接する画素の処理値VN3と、反対側に隣接する画素の処理値VN1と、の間の差がゼロである(すなわち、VN1=VN3)。
条件2)対象画素Ptの処理値VN2が、両隣の画素の処理値VN1、VN3のいずれとも異なる。
条件3)両隣の画素の処理値VN1、VN3のそれぞれが、最も明るい白を含む部分色範囲である白色範囲内である。最も明るい白に対応付けられた処理値は、処理値の取り得る値のうち、最も明度が高い値である(ここでは、ゼロ)。白色範囲としては、例えば、処理値が予め決められた閾値(例えば、90)未満である範囲を採用してよい。
これらの条件1〜3は、対象画素Ptの第1方向D1側の隣の画素と反対側の隣の画素とが、白(すなわち、背景)を表し、そして、対象画素Ptが、背景とは異なる色を表している場合に、満たされる。例えば、対象画素Ptが、図3(B)の第2線L2を表す画素である場合、条件1〜3の全てが満たされる。条件1〜3の全てが満たされる場合、対象画素は、細線画素の候補である。なお、条件1〜3の全てが満たされる場合であっても、対象画素は、1画素の幅の細線とは異なる画像を表し得る。
条件1〜3の全てが満たされる場合(S330:Yes)、S340で、プロセッサ110は、第1重みW1に1を加算し、S350へ移行する。このように、条件1〜3の全てが満たされる場合、プロセッサ110は、対象画素が細線画素の候補であると判断し、第1重みW1を、より大きな値に、修正する。条件1〜3の少なくとも1つが満たされない場合(S330:No)、プロセッサ110は、S340をスキップして、S350へ移行する。
S350では、プロセッサ110は、対象画素Ptが、第1線L1(図3(B))のように第1方向D1に延びる細い線を表す画素であるか否かを判断する。本実施例では、以下の条件11〜13が満たされるか否かが判断される。
条件11)対象画素Ptの第2方向D2側に隣接する画素の処理値VD2と、反対側に隣接する画素の処理値VU2と、の間の差がゼロである(すなわち、VU2=VD2)。
条件12)対象画素Ptの処理値VN2が、両隣の画素の処理値VU2、VD2のいずれとも異なる。
条件13)両隣の画素の処理値VU2、VD2のそれぞれが、最も明るい白を含む白色範囲内である。白色範囲は、S330の条件3の白色範囲と同じである。
これらの条件11〜13は、対象画素Ptの第2方向D2側の隣の画素と反対側の隣の画素とが、白(すなわち、背景)を表し、そして、対象画素Ptが、背景とは異なる色を表している場合に、満たされる。例えば、対象画素Ptが、図3(B)の第1線L1を表す画素である場合、条件11〜13の全てが満たされる。条件11〜13の全てが満たされる場合、対象画素は、細線画素の候補である。
条件11〜13の全てが満たされる場合(S350:Yes)、S360で、プロセッサ110は、第2重みW2に1を加算し、S370へ移行する。このように、条件11〜13の全てが満たされる場合、プロセッサ110は、対象画素が細線画素の候補であると判断し、第2重みW2を、より大きな値に、修正する。条件11〜13の少なくとも1つが満たされない場合(S350:No)、プロセッサ110は、S360をスキップして、S370へ移行する。
S370では、プロセッサ110は、重みW1、W2の合計値がゼロより大きいか否かを判断する。ゼロよりも大きな合計値は、対象画素Ptがオブジェクトのエッジまたは1画素の幅の細い線を表している場合に、算出され得る。なお、1画素の細い線を表す画素も、細い線のエッジを表しているということができる。合計値がゼロより大きい場合(S370:Yes)、S380で、プロセッサ110は、エッジフラグをオンに設定して、図5の処理を終了する。合計値がゼロである場合(S370:No)、S390で、プロセッサ110は、エッジフラグをオフに設定して、図5の処理(すなわち、図4のS220)を終了する。以上のように、図5の処理によって、対象画素Ptがエッジを表すか否かが判断される。そして、エッジフラグは、判断結果を表すように、設定される。
図4のS230では、プロセッサ110は、エッジフラグがオンであり、かつ、対象画素Ptに隣接する4個の隣接画素のうち1以上の隣接画素の色が予め決められた隣接白範囲内である、という条件が満たされるか否かを判断する。4個の隣接画素は、対象画素Ptの上下左右に隣接する4個の画素である。隣接白範囲は、最も明るい白を含む部分色範囲である。本実施例では、CMYKの階調値の合計値を用いて、隣接画素の色が隣接白範囲内であるか否かが判断される。最も明るい白に対応付けられたCMYKの階調値の合計値は、合計値の取り得る値のうち、最も明度の高い値である(ここでは、ゼロ)。隣接白範囲としては、例えば、CMYKの階調値の合計値が閾値Tha未満である色範囲を採用してよい。閾値Thaは、例えば、CMYKの階調値の合計値が実際に取り得る範囲の最大値の20%程度の値(例えば、90)であってよい。4個の隣接画素のそれぞれの色の全てが隣接白範囲外である場合、対象画素は、背景に隣接するのではなく、オブジェクトを表す画素に囲まれている可能性がある。例えば、対象画素は、写真などのオブジェクトの内部を表している可能性がある。
このように、対象画素がオブジェクトのエッジではなく内部を表している場合と、エッジフラグがオフである場合とに、S230の判断結果がNoとなる。この場合(S230:No)、プロセッサ110は、S290に移行し、対象画素における全ての色材に関して、ドットを形成するか否かを、色材に対応付けられた階調値(ここでは、CMYKの階調値)とディザマトリクスとを用いて、決定する。そして、プロセッサ110は、S295へ移行する。
ディザマトリクスを用いる処理は、例えば、以下のように、行われる。シアンCの階調値が、ディザマトリクスによって定められる対象画素Ptの閾値以上である場合、シアンCのドットを形成することに決定される。シアンCの階調値が、その閾値よりも小さい場合、シアンCのドットを形成しないことに決定される。なお、シアンCの階調値が閾値と同じ場合には、シアンCのドットを形成しないこととしてもよい。他の色材に関しても、同様に、色材に対応する色成分の階調値と、閾値と、を比較した結果に応じて、ドットを形成するか否かが決定される。なお、ディザマトリクスは、色材毎に閾値が異なるように、構成されている。ただし、複数の色材に、共通のディザマトリクスが用いられてもよい。
S230の判断結果がYesである場合、S240で、プロセッサ110は、CMYKの階調値のうち、最大の階調値に対応付けられた色材である最大色材と、2番目に大きい階調値に対応付けられた色材である2番色材と、を特定する。例えば、対象画素が、図3(B)の文字列T1、T2や線L1、L2のように黒に近い色のオブジェクトを表す場合、最大色材は、ブラックKであり得る。対象画素が他の色のオブジェクトを表す場合も、最大色材は、オブジェクトの色に近い色の色材である。
S250では、プロセッサ110は、最大色材の量(すなわち、階調値)が第1閾値Th1より大きいか否かを判断する。第1閾値Th1は、例えば、階調値の取り得る範囲の最大値(最大の色材の量)の80%程度の値(例えば、204)である。最大色材の階調値は、対象画素における各色材の量のうちの最も大きい量であるので、最大色材の階調値が大きいほど、対象画素の濃度は高い。このように、最大色材の階調値は、CMYKの階調値によって表される対象画素の濃度と相関を有する指標値の例である。最大色材の階調値が第1閾値Th1より大きいことは、最大色材の濃度が、第1閾値Th1に対応付けられた濃度よりも大きいことを示している。最大色材の階調値が第1閾値Th1以下である場合(S250:No)、プロセッサ110は、S290に移行して、対象画素における全ての色材のそれぞれのドットを形成するか否かをディザマトリクスを用いて決定し、S295へ移行する。
最大色材の階調値が第1閾値Th1より大きい場合(S250:Yes)、S260で、プロセッサ110は、2番色材の量(すなわち、階調値)が第2閾値Th2未満であるか否かを判断する。第2閾値Th2は、第1閾値Th1よりも小さい値に設定される。第2閾値Th2は、例えば、階調値の取り得る範囲の最大値(最大の色材の量)の30%程度の値(例えば、77)である。2番色材の量が第2閾値Th2以上である場合(S260:No)、プロセッサ110は、S290に移行して、対象画素における全ての色材のそれぞれのドットを形成するか否かをディザマトリクスを用いて決定し、S295へ移行する。
2番色材の量が第2閾値Th2未満である場合(S260:Yes)、S270で、プロセッサ110は、最大色材のドットを形成することに決定する。最大色材のドットは、対象画素によって表されるオブジェクトの色に近い色の色材のドットである。また、S280で、プロセッサ110は、最大色材を除いた残りの色材のそれぞれのドットを形成するか否かを、ディザマトリクスを用いて決定する。ディザマトリクスを用いてドットを形成するか否かを決定する処理は、S290の処理と同じである。そして、プロセッサ110は、S295へ移行する。
S295では、プロセッサ110は、全ての画素の処理が終了したか否かを判断する。未処理の画素が残っている場合(S295:No)、プロセッサ110は、S200へ移行して、未処理の画素の処理を行う。全ての画素の処理が終了した場合(S295:Yes)、プロセッサ110は、図4の処理を終了する。
図3(C)は、図4のハーフトーン処理によって決定されたドットデータによって表される画像の例を示す概略図である(以下、ドット画像IMbと呼ぶ)。図3(D)は、全ての画素の全ての色材のドットを形成するか否かを、エッジフラグを用いずに、ディザマトリクスを用いて決定した場合の参考例のドットデータによって表される画像の例を示す概略図である(参考ドット画像IMcと呼ぶ)。これらのドット画像IMb、IMcは、図3(B)の部分画像IMaと同じ部分を表している。白色の画素Pxは、ドットの無い画素を示している。黒色の画素Pxは、少なくともブラックKのドットを有する画素を示している。ハッチングが付された画素Pxは、ブラックKのドットが無く、CMYの少なくとも1種のドットを有する画素を示している。
図3(C)に示すように、文字列T2の文字を表す領域のうちエッジよりも内側の領域には、ドットの無い画素Pxと、ブラックKのドットが無くCMYの少なくとも一種のドットを有する画素Pxと、が生じている。この理由は、図3(B)で説明したように、黒色であった文字列T2の文字の色が、印刷処理のための基準色空間への色変換によって、元の色とは異なる色(ここでは、黒よりも明るいグレー)に変化したからである。図3(B)に示すRGBの階調値は、図2のS120で、CMYKの階調値に変換される。変換後のCMYKの階調値は、黒よりも明るいグレーを表している。すなわち、ブラックKの階調値は、255よりも小さく、CMYのそれぞれの階調値は、ゼロよりも大きい。この結果、ブラックKの階調値は、ディザマトリクスの閾値よりも小さい場合がある。また、CMYの少なくとも1つの階調値が、ディザマトリクスの閾値よりも大きい場合がある。
また、図3(C)に示すように、文字列T1、T2の文字のエッジを表す画素Pxと、線L1、L2を表す画素Pxとは、ブラックKのドットを有している。このようなドットデータが得られる理由は、以下の通りである。図5、図3(B)で説明したように、対象画素Ptがオブジェクトのエッジまたは1画素の幅の細い線を表している場合に、エッジフラグがオンに設定される。そして、図4で説明したように、エッジフラグがオンに設定され(S230:Yes)、かつ、最大色材の階調値が第1閾値Th1より大きい(S250:Yes)ことを含む条件が満たされる場合に、S270で、対象画素の最大色材の階調値に拘わらずに、対象画素にドットを形成することに決定される(以下、S270が実行されるための条件を、ドット条件とも呼ぶ)。以上により、濃い色のオブジェクト(例えば、文字や細線)のエッジを表す画素で、最大色材の階調値に拘わらずにドットが形成されるので、エッジが薄くなることを抑制できる。また、1画素の幅の細線を適切に印刷できる。また、薄い色のオブジェクトのエッジを表す画素では、色材に対応付けられた階調値に応じて各色材のドットを形成するか否かが決定されるので(S250:No、S290)、エッジが過度に目立つことを抑制できる。
一方、図3(D)の参考ドット画像IMcでは、全ての画素Pxにおいて、全ての色材に関して、ドットを形成するか否かが、ディザマトリクスを用いて決定される。例えば、文字列T2の大きな文字のエッジの一部を表す複数の画素で、ドットが形成されない。これにより、大きな文字のエッジが、過度に薄くなり得る。また、文字列T1の小さい文字の一部を表す複数の画素で、ドットが形成されない。また、線L1、L2の一部を表す複数の画素で、ドットが形成されない。これにより、小さい文字や細い線は、判別ができなくなる場合がある。本実施例では、そのような不具合を抑制できる。
また、図4のS250で説明したように、S270でドットを形成することに決定されるためのドット条件は、対象画素の濃度と相関を有する指標値の例である最大色材の量を表す階調値が、第1閾値Th1よりも大きいことを含んでいる。このように、対象画素の色に適した値を用いて条件が判断されるので、対象画素にドットを形成するか否かを適切に決定できる。例えば、薄い色のオブジェクトのエッジを表す画素では、S270ではなく、S290で、色材に対応付けられた階調値に応じて各色材のドットを形成するか否かが決定されるので(S250:No、S290)、エッジが過度に目立つことを抑制できる。
また、図4のS260で説明したように、S270が実行されるためのドット条件は、複数の色材の階調値のうちの2番目に大きい階調値が、第2閾値Th2未満であることを含んでいる。そして、S270では、最大色材のドットを形成することに決定される。従って、対象画素の色が最大色材の色に近い場合に、最大色材のドットが形成されるので、オブジェクトのエッジが不自然に目立つことを抑制できる。エッジフラグがオンであっても、2番目に大きい階調値が第2閾値Th2よりも大きい場合には(S260:No)、S290で、色材に対応付けられた階調値に応じて各色材のドットを形成するか否かが決定される。従って、エッジが過度に目立つことを抑制できる。また、2番目に大きい階調値が第2閾値Th2よりも大きい場合には、ディザマトリクスの閾値と2番目に大きい階調値との対比の結果、2番色材のドットを形成することに決定され得る。このように、複数の色材をそれぞれ一定量以上使用するオブジェクトのエッジでは、最大色材のドットが形成されない場合であっても、2番色材のドットが形成され得る。従って、S270ではなくS290でドットを形成するか否かが決定されるとしても、オブジェクトのエッジが薄くなることを抑制できる。
また、S270(図4)が実行されるためのドット条件が満たされる場合、S280では、ドット条件が満たされない場合に実行されるS290と同じ方法で、最大色材以外の他の色材のそれぞれのドットを形成するか否かが決定される。上述したように、S290では、色材に対応付けられた階調値に応じて各色材のドットを形成するか否かが決定される。従って、ドットを形成するか否かが過度に不自然に決定されることが抑制されるので、エッジが過度に目立つことを抑制できる。また、細線が過度に目立つことを抑制できる。
また、図4のS210で説明したように、S270が実行されるためのドット条件は、対象画素の色が白とは異なる色であることを含む。従って、白に近い色を表す対象画素(例えば、背景を表す対象画素、薄い色のオブジェクトのエッジを表す対象画素、など)で、S270の処理(対象画素の最大色材の階調値に拘わらずにドットが形成されることに決定される処理)が実行されることを抑制できる。この結果、エッジが過度に目立つことを抑制できる。また、オブジェクトのエッジに隣接するとともに背景を表す画素に、S270の処理が実行されることが抑制されるので、オブジェクトが太くなることを抑制できる。
また、図4のS230で説明したように、S270が実行されるためにドット条件は、対象画素の四方に隣接する4個の画素のうちの少なくとも1つの画素の色が、最も明るい白を含む一部の色範囲である隣接白範囲の内の色であることを含む。従って、対象画素が背景に隣接するエッジを表す画素である場合には、ドット条件が満たされやすいので、適切にエッジにドットを形成できる(S270)。これにより、エッジが過度に薄くなることを抑制できる。また、対象画素が写真などのオブジェクトの内部を表す場合には、ドット条件が満たされにくいので、オブジェクトの内部の色が不自然になることを抑制できる。
また、ドット条件が満たされない場合のS290は、色材に対応付けられた階調値とディザマトリクスとを用いて、ドットを形成することに決定する、もしくは、ドットを形成しないことに決定する。従って、階調値に適したドット形成を実現できる。
また、図5のS330、S350で説明したように、プロセッサ110は、対象画素に隣接する第1画素と、対象画素の第1画素側とは反対側に隣接する第2画素と、を特定する。そして、細線条件が満たされる場合に、プロセッサ110は、対象画素が細線画素の候補であると判断し、重みW1、W2をより大きな値に更新する。細線条件は、S330では、上記の条件1〜3で構成され、S350では、上記の条件11〜13で構成される。以上により、細線画素の候補を、適切に特定できる。
また、図5のS300で説明したように、各画素の処理値は、各色材に対応付けられた階調値を用いて得られる値である(具体的には、C+M+Y+K)。従って、各色材に対応付けられた階調値を用いて、適切に、細線画素の候補を特定できる。
B.第2実施例:
図6は、印刷処理の別の実施例を示すフローチャートである。図2の実施例との差異は、S120〜S150の処理が、S110で生成された第1ビットマップデータによって表される複数の画素ライン(例えば、第1方向D1に延びる複数の画素ライン)のうち、一部の画素ライン(例えば、1本の画素ライン、または、2以上の所定数の画素ライン)ずつ、繰り返される点だけである。S120では、処理対象の画素ラインである対象画素ラインの複数の画素の色変換が行われる。S130では、対象画素ラインの複数の画素のハーフトーン処理が行われる(詳細は、後述)。S140では、対象画素ラインの印刷データが生成される。S150では、対象画素ラインの印刷データが、印刷実行部(例えば、印刷部290)に供給される。対象画素ラインのS120〜S150の処理が終了した場合、対象画素ラインが未処理の画素ラインに更新され、そして、新たな対象画素ラインのS120〜S150の処理が、行われる。印刷実行部は、対象画素ラインの印刷データを受信したことに応じて、他の画素ラインの印刷データを受信するよりも前に、受信済の印刷データに従って画像の一部を印刷する(S160)。これに代えて、印刷実行部は、全ての画素ラインの印刷データを受信したことに応じて、画像の印刷を開始してもよい。全ての画素ラインのS120〜S150の処理が終了し、そして、画像の印刷(S160)が終了することに応じて、図6の印刷処理は、終了する。
このように、S120〜S150の処理が一部の画素ラインずつ繰り返される場合、処理用のデータを格納する記憶装置(例えば、揮発性記憶装置、または、不揮発性記憶装置)は、第2ビットマップデータの全体を同時に格納する必要がなく、第2ビットマップデータのうちの対象画素ラインを表す部分のみを格納すればよい。従って、印刷処理に用いられる記憶装置の容量を小さくできる。本実施例では、複合機200(図1)の記憶装置220、230の容量は、画像処理装置100の記憶装置120、130の容量と比べて、それぞれ小さい。このように小さい記憶装置220、230を備える複合機200も、図6の印刷処理を実行できる。以下、複合機200の制御装置202(具体的には、プロセッサ210)が図6の印刷処理を実行することとして、説明する。
図7は、ハーフトーン処理の手順の例を示すフローチャートである。図4の実施例との差異は、S210、S230が、S210a、S230aに置換されている点だけである。図7の他のステップの処理は、図4の対応するステップの処理と、同じである。図7のステップのうち、図4のステップと同じステップには、同じ符号を付して、説明を省略する。
S210aでは、複合機200のプロセッサ210は、対象画素の色が白であるか否かを判断する。図4のS210とは異なり、プロセッサ210は、第1ビットマップデータによって表されるRGBの階調値を用いて、S210aの判断を行う。本実施例では、R=G=B=255である場合に、対象画素の色が白であると判断される。対象画素の色が白である場合(S210a:Yes)、プロセッサ210は、S295へ移行する。対象画素が、オブジェクトのエッジに隣接するとともに背景を表す画素である場合、S210の判断結果は、Yesである。対象画素が、オブジェクトを表す場合、S210の判断結果は、Noである。対象画素の色が白とは異なる色である場合(S210:No)、プロセッサ210は、S220へ移行し、エッジフラグ処理を実行する。
図8は、本実施例のエッジフラグ処理の手順の例を示すフローチャートである。図5の実施例との差異は、S300が、S300aに置換されている点だけである。図8の他のステップの処理は、図5の対応するステップの処理と同じである。図8のステップのうち、図5のステップと同じステップには、同じ符号を付して、説明を省略する。
S300aでは、プロセッサ210は、対象画素Ptを中心とする9個の画素Pxのそれぞれの処理値を算出する。本実施例では、処理値は、色材に対応付けられた階調値(より具体的には、色材の単位面積当たりの量を表す階調値)を用いずに、色材とは独立な色成分(ここでは、RGB)の階調値を用いて、算出される。具体的には、第1ビットマップデータによって表されるRGBの階調値を用いて得られる輝度値Yvが、処理値として用いられる。輝度値Yvとしては、例えば、RGB色空間の階調値とYCbCr色空間の輝度値とを対応付ける公知の関係式を用いて算出される値を、採用可能である。輝度値Yvが小さいほど、対象画素の濃度は高い。このような処理値(ここでは、輝度値Yv)も、対象画素に関する画素値の例である。
S310〜S390の処理では、処理値として輝度値Yvが用いられる。S330、S350の白色範囲としては、最も明るい白を含む部分色範囲が用いられる。最も明るい白に対応付けられた処理値(ここでは、輝度値Yv)は、処理値の取り得る値のうち、最も明度が高い値(輝度値Yvの取り得る最大値)である。白色範囲としては、例えば、処理値(ここでは、輝度値Yv)が予め決められた閾値(例えば、204)より大きい範囲を採用してよい。また、輝度値Yvは、図5の実施例で用いられる処理値であるCMYKの合計値と同様に、色の変化に応じて、変化する。従って、輝度値Yvを処理値として用いる場合にも、図5の実施例と同様に、対象画素Ptが、オブジェクトのエッジ、または、1画素の幅の細線を表す場合に、エッジフラグがオンに決定される。
図7のS230aでは、プロセッサ210は、4個の隣接画素のそれぞれのRGBの階調値を用いて、隣接画素の色が予め決められた隣接白範囲内であるか否かを判断する。RGBの階調値としては、第1ビットマップデータによって表される階調値が用いられる。隣接白範囲は、最も明るい白を含む部分色範囲である。本実施例では、RGBの階調値を用いて得られる輝度値Yvを用いて、隣接画素の色が隣接白範囲内であるか否かが判断される。最も明るい白に対応付けられた輝度値Yvは、輝度値Yvの取り得る値のうち、最も明度の高い値である(ここでは、輝度値Yvの取り得る範囲の最大値)。隣接白範囲としては、例えば、輝度値Yvが閾値Thbより大きい色範囲を採用してよい。閾値Thbは、例えば、輝度値Yvが取り得る範囲の最大値の80%程度の値(例えば、204)であってよい。4個の隣接画素のそれぞれの色の全てが隣接白範囲外である場合、対象画素は、オブジェクトの内部を表している可能性がある。この場合、S230aの判断結果は、Noである(エッジフラグがオフである場合も、S230aの判断結果は、Noである)。S230aの判断結果がNoである場合、プロセッサ210は、S290へ移行する。エッジフラグがオンであり、かつ、4個の隣接画素のうち1以上の隣接画素の色が隣接白範囲内である、という条件が満たされる場合(S230a:Yes)、プロセッサ210は、S240へ移行する。S240、S290以降の処理は、図4の実施例と同じである。なお、S295では、対象画素ラインの全ての画素の処理が終了したか否かが、判断される。
以上のように、本実施例では、図8のエッジフラグ処理は、色材の単位面積当たりの量を表す階調値を用いずに、RGBの階調値を用いて行われる。従って、プロセッサ210は、処理対象の画素ラインとは異なる他の画素ラインのRGBの階調値を色材の量を表す階調値に変換せずに、エッジフラグ処理を実行できる。この結果、図6で説明したように、複数の画素ラインのうちの一部の画素ラインずつ、ハーフトーン処理を実行できる。故に、複合機200(図1)の制御装置202のように、小さい容量の記憶装置を備える画像処理装置が、印刷処理を実行できる。ただし、大きい容量の記憶装置を備える画像処理装置(例えば画像処理装置100)が、図6〜図8の処理を実行してもよい。この場合、図6のS120〜S150のそれぞれの処理は、図2の実施例と同様に、全ての画素を対象として、1回ずつ実行されてもよい。
また、図8のエッジフラグ処理では、RGBの階調値を用いて得られる輝度値Yvを用いて、エッジフラグをオンに設定するか否かが判断される。例えば、S310、S320では、輝度値Yvを用いて、エッジ量に相当する重みW1、W2が算出される。また、S330、S350では、対象画素Ptと両隣の画素とのそれぞれの輝度値Yvを用いて、対象画素Ptが細線画素の候補であるか否かが判断される。輝度値Yvは、画素の色の変化に応じて変化する。従って、輝度値Yvを用いることによって、適切に、重みW1、W2を算出でき、そして、対象画素Ptが細線画素の候補であるか否かを判断できる。
C.変形例:
(1)対象画素がエッジ画素であると判断するための条件は、図5、図8のS310、S320で算出される重みW1、W2の少なくとも一方がゼロよりも大きいこと(S370)に代えて、他の種々の条件であってよい。例えば、エッジ検出フィルタとしては、図5、図8の実施例のフィルタに代えて、ソーベルフィルタやプレウィットフィルタなどの、エッジを検出可能な任意のフィルタを採用可能である。
(2)対象画素が1画素の幅の細い線を表す細線画素の候補であるか否かを判断するための条件は、図5、図8のS330、S350で説明した条件に変えて、他の種々の条件であってよい。例えば、対象画素Ptの特定の方向側に隣接する第1画素の処理値と、反対側に隣接する第2画素の処理値と、の間の差の絶対値が、基準値未満であることが、条件に含まれても良い。図5、図8のS330のVN1=VN3という条件は、VN1とVN3との間の差の絶対値が1未満であるという条件と、同じである。同様に、図5、図8のS350のVU2=VD2という条件は、VU2とVD2との間の差の絶対値が1未満であるという条件と、同じである。いずれの場合も、基準値は、1よりも大きくてもよい。
(3)図5、図8の処理で用いられる処理値としては、対象画素の色の変化に応じて変化する種々の値を採用可能である。例えば、図5のS300で、CMYKの階調値の重み付き合計値が、処理値として算出されてもよい。各色材の重みは、例えば、各色材のベタ領域の反射濃度が低い(すなわち、暗い)ほど大きな値に設定されてよい。また、図8のS300aで、緑Gの階調値が、そのまま、処理値として採用されてもよい。このように、対象画素の濃度と相関を有する値を採用してよい。また、ハーフトーン処理の対象画像データによって表される階調値を用いて得られる値を、処理値として用いてもよい。図8の実施例では、処理値である輝度値Yvは、RGBの階調値を用いて得られる値である。対象画像データのCMYKの階調値は、このRGBの階調値の色変換(図6:S120)によって得られる値である。このようなCMYKの階調値に、逆の色変換を行うことによって、元のRGBの階調値を得ることができる。従って、処理値である輝度値Yvは、対象画像データ(ここでは、第2ビットマップデータ)によって表されるCMYKの階調値を用いて得られる値である、ということができる。一般的には、画素に関する種々の値、換言すれば、画素に対応付けられた種々の値を、処理値として採用可能である。
(4)図4、図7のS270のように対象画素の濃度に拘わらずに対象画素にドットを形成することに決定するための条件は、図4、図7の実施例の条件に代えて、他の種々の条件であってよい。例えば、S210、S210aの条件は、対象画素の色が、最も明るい白を含む一部の色範囲である対象白範囲の外の色であること、であってもよい。
例えば、図4のS210の条件は、対象画素のCMYKの階調値の合計値が対象白範囲の外であることであってもよい。最も明るい白に対応付けられたCMYKの階調値の合計値は、合計値の取り得る値のうち、最も明度の高い値である(例えば、合計値=0)。そして、対象白範囲は、合計値が閾値未満である色範囲であってよい(閾値は、ゼロ以上)。なお、CMYKの階調値の合計値に代えて、CMYKの階調値の重み付き合計値を用いてもよい。また、対象白範囲は、Cの階調値の範囲とMの階調値の範囲とYの階調値の範囲とKの階調値の範囲とによって定められてもよい。例えば、対象白範囲は、CMYKのそれぞれの階調値が、各色成分に対応付けられた閾値未満である色範囲であってよい。
また、図7のS210aの条件は、対象画素のRGBの階調値を用いて得られる輝度値Yvが対象白範囲の外であることであってもよい。最も明るい白に対応付けられた輝度値Yvは、輝度値Yvの取り得る値のうち、最も明度の高い値である(例えば、輝度値Yvの取り得る値のうちの最大値)。そして、対象白範囲は、輝度値Yvが閾値より大きい色範囲であってよい(閾値は、輝度値Yvの取り得る最大値以下)。また、対象白範囲は、Rの階調値の範囲とGの階調値の範囲とBの階調値の範囲とによって定められてもよい。例えば、対象白範囲は、RGBのそれぞれの階調値が、各色成分に対応付けられた閾値より大きい色範囲であってよい。
いずれの場合も、S210、S210aの判断結果がNoである場合、処理は、S290に移行してもよい。
また、図4、図7の処理において、S260が省略されてもよい。この場合、S250の判断結果がYesである場合、処理は、S270へ移行する。また、S280が省略されてもよい。また、S210、S210aが省略されてもよい。また、S230、S230aの条件から、隣接画素に関する条件が省略されてもよい。
また、図4、図7の処理において、条件判断の順番は、任意の順番であってよい。例えば、S210、S210aが、S230、S230aの後に実行されてもよい。また、S250が、S230よりも前に実行されてもよい。
いずれの場合も、コンピュータや論理回路がデータを処理する場合、処理対象の値は、デジタルデータによって表される。デジタルデータは、整数または実数を、離散的に表現可能である。ここで、「値が閾値よりも大きい」という条件は、その閾値よりも1段階大きな大閾値を用いて表現される「値が大閾値以上である」という条件と同じである。同様に、「値が閾値よりも小さい」という条件は、その閾値よりも1段階小さい小閾値を用いて表現される「値が小閾値以下である」という条件と同じである。
(5)図4、図7のS280、S290で行われるハーフトーン処理としては、誤差拡散法に基づく処理が行われてもよい。また、上記の各実施例では、印刷部290によって形成可能なドットのサイズは、1種類である。すなわち、各画素のドットの形成状態は、ドットが形成される状態と、ドットが形成されない状態と、の2値で表される。これに代えて、印刷部290は、互いにサイズが異なる複数種類のドットを形成可能であってもよい。例えば、印刷部290は、大ドット、中ドット、小ドットの3種類のドットを用いて画像を印刷してもよい。この場合、ドットの形成状態は、3種類のドットのいずれかが形成される3種類の状態と、ドットが形成されない状態と、の4値で表される。複数種類のドットが印刷に利用される場合、図4、図7のS270では、最も小さいドットよりも大きなサイズのドットが形成されることに決定されることが好ましい。このサイズは、予め決められていてもよく、対象画素の濃度に応じて決定されてもよい。
(6)図2、図6の印刷処理で用いられる入力データとしては、アプリケーションプログラムによって提供される画像データに代えて、他の種々の画像データを利用可能である。例えば、不揮発性記憶装置130に格納された画像データが、入力データとして用いられてもよい。または、画像処理装置100に接続された外部の記憶装置(例えば、USBメモリ)に格納された画像データが、入力データとして用いられてもよい。いずれの場合も、入力データは、ユーザによって指定されてよい。また、入力データのデータ形式としては、任意の形式を採用可能である(例えば、JPEG(Joint Photographic Experts Group)形式や、PDF(Portable Document Format)形式)。また、入力データの色空間は、RGB色空間とは異なる他の色空間であってもよい(例えば、YCbCr色空間、CMYK色空間など)。
(7)対象画素が細線画素の候補であるか否かの判断結果は、印刷処理(具体的には、ハーフトーン処理)に代えて、他の種々の画像処理に利用できる。例えば、画像中の文字を認識する文字認識処理に、細線画素の候補の判断結果を適用してもよい。文字認識処理が、細線画素の候補の画素を文字を表す画素として用いて文字を認識すれば、小さい文字を適切に認識できる。このように、対象画素が細線画素の候補であるか否かを判断する処理の対象の画像データとしては、印刷処理に用いられる画像データ(例えば、入力画像データや、第1ビットマップデータや、ハーフトーン処理の対象の画像データなど)に代えて、他の任意の画像データを採用してよい。
(8)印刷部290によって印刷に利用される色材は、CMYKの4種類の色材に代えて、他の任意の色材であってよい。例えば、ブラックKの色材のみが利用されてもよい。このように1つの色材のみが印刷に利用される場合、図4のS260、図7のS260は省略される。
(9)印刷処理を実行する画像処理装置100は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、複合機200の制御装置202のように、印刷処理を実行する画像処理装置が、印刷部290を備える印刷装置(例えば、複合機200)の一部であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、専用のハードウェア回路が、図2、図6のS130のハーフトーン処理を実行してもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。