(57)【特許請求の範囲】
【請求項１】
画像処理装置であって、
複数の画素のそれぞれの階調値を表す入力画像データを、ドット形成状態を表す出力画像データに、画素毎に変換するデータ変換部を備え、
前記データ変換部は、
注目画素の階調値と、前記注目画素の周辺に位置する周辺画素における階調の誤差値と、を用いて、補正済階調値を算出する補正部と、
前記注目画素の前記階調値と、前記注目画素の前記補正済階調値と、の少なくとも一方を用いて、前記注目画素における前記ドット形成状態と、前記注目画素における階調の誤差値と、を決定する決定部と、
を備え、
前記決定部は、
前記注目画素の前記階調値が第１種の値である場合に、前記注目画素における前記誤差値として、前記補正済階調値と、前記ドットの形成状態に対応付けられた基準階調値と、を用いて、第１種誤差値を決定し、
前記注目画素の前記階調値が、前記第１種の値とは異なるとともに少なくともゼロを含む第２種の値である場合に、前記注目画素における前記誤差値として、前記第１種誤差値と同じ方法で導出され得る基準誤差値と、乱数値と、を用いて、第２種誤差値を決定する、
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記決定部は、前記基準誤差値と前記乱数値とを用いて候補誤差値を算出し、前記候補誤差値の絶対値が前記乱数値の振幅よりも小さい場合に、前記第２種誤差値として、前記乱数値をそのまま使用する、
画像処理装置。
【請求項３】
請求項１または請求項２に記載の画像処理装置であって、
前記決定部は、特定の条件が満たされる場合に、前記第２種誤差値として、前記基準誤差値と前記乱数値との重み付き和を使用する、
画像処理装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の画像処理装置であって、
前記決定部は、前記第２種誤差値に対して前記乱数値が寄与する割合である乱数寄与率であって、前記注目画素の前記階調値に応じて変化する乱数寄与率を用いて、前記第２種誤差値を決定する、
画像処理装置。
【請求項５】
請求項４に記載の画像処理装置であって、
前記第２種の値は、前記注目画素の前記階調値が取り得る範囲のうちの一部の範囲である１つ以上の乱数適用範囲のいずれかに含まれる値であり、
前記乱数適用範囲は、それぞれ、前記基準階調値が取り得る値を１つ含み、
前記乱数寄与率は、前記乱数適用範囲のそれぞれにおいて、ゼロよりも大きく、前記注目画素の前記階調値が、前記乱数適用範囲に含まれる前記基準階調値に近いほど、大きい、
画像処理装置。
【請求項６】
プログラムであって、
複数の画素のそれぞれの階調値を表す入力画像データを、ドット形成状態を表す出力画像データに、画素毎に変換するデータ変換機能をコンピュータに実現させるためのプログラムであり、
前記データ変換機能は、
注目画素の階調値と、前記注目画素の周辺に位置する周辺画素における階調の誤差値と、を用いて、補正済階調値を算出する補正機能と、
前記注目画素の前記階調値と、前記注目画素の前記補正済階調値と、の少なくとも一方を用いて、前記注目画素における前記ドット形成状態と、前記注目画素における階調の誤差値と、を決定する決定機能と、
を含み、
前記決定機能は、
前記注目画素の前記階調値が第１種の値である場合に、前記注目画素における前記誤差値として、前記補正済階調値と、前記ドットの形成状態に対応付けられた基準階調値と、を用いて、第１種誤差値を決定する機能と、
前記注目画素の前記階調値が、前記第１種の値とは異なるとともに少なくともゼロを含む第２種の値である場合に、前記注目画素における前記誤差値として、前記第１種誤差値と同じ方法で導出され得る基準誤差値と、乱数値と、を用いて、第２種誤差値を決定する機能と、
を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多階調の画像を印刷するための画像処理に関する。
【背景技術】
【０００２】
インクやトナー等の着色剤のドットを形成することによって印刷を行うプリンタが使用されている。プリンタを用いて多階調の画像を表現する際には、多階調の画像データが、印刷ドットの形成状態を表すデータに、変換される。このようなデータ変換を行う方法としては、例えば、誤差拡散法が使用されている。また、誤差拡散法に関連する種々の技術が提案されている。例えば、画質低下を回避するために、誤差バッファの初期化を行う技術が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３１９１７８号公報
【特許文献２】特開２００７−１２９４４３号公報
【特許文献３】特許第４２７２８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、データ変換処理が、誤差バッファの初期化のような誤差拡散の制御（「誤差制御」と呼ぶ）を含む場合には、誤差制御が、印刷済み画像に不自然に見える部分を生じさせる可能性があった。例えば、印刷済み画像は、同じような画像を表すべき第１部分と第２部分とを含み得る。ここで、第１部分では、誤差バッファの初期化が行われ、第２部分では誤差バッファの初期化が行われない場合がある。この場合、第１部分と第２部分との一方が、他方と比べて、不自然に見える可能性がある。
【０００５】
本発明の主な利点は、印刷済み画像が不自然に見える可能性を低減できる技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００７】
［適用例１］画像処理装置であって、複数の画素のそれぞれの階調値を表す入力画像データを、ドット形成状態を表す出力画像データに、画素毎に変換するデータ変換部を備え、前記データ変換部は、注目画素の階調値と、前記注目画素の周辺に位置する周辺画素における階調の誤差値と、を用いて、補正済階調値を算出する補正部と、前記注目画素の前記階調値と、前記注目画素の前記補正済階調値と、の少なくとも一方を用いて、前記注目画素における前記ドット形成状態と、前記注目画素における階調の誤差値と、を決定する決定部と、を備え、前記決定部は、前記注目画素の前記階調値が第１種の値である場合に、前記注目画素における前記誤差値として、前記補正済階調値と、前記ドットの形成状態に対応付けられた基準階調値と、を用いて、第１種誤差値を決定し、前記注目画素の前記階調値が、前記第１種の値とは異なるとともに少なくともゼロを含む第２種の値である場合に、前記注目画素における前記誤差値として、前記第１種誤差値と同じ方法で導出され得る基準誤差値と、乱数値と、を用いて、第２種誤差値を決定する、画像処理装置。
【０００８】
この構成によれば、階調値がゼロである画素が連続する領域では、注目画素の階調の誤差値が乱数値を用いて決定されるので、印刷された画像内に発生し得る濃度の遅延（ドットの遅延）を抑制できる。ここで、注目画素の階調の誤差が乱数値のみを用いて決定されると仮定すると、階調値がゼロである画素の周辺の画素（階調値がゼロよりも大きい画素）においてドットが形成されやすくなるので、印刷された画像が不自然になり得る。しかしながら、上記構成によれば、注目画素の誤差値が、補正済階調値に関係する基準誤差値と、乱数値と、を用いて決定されるので、乱数値の影響を緩和することができる。この結果、上述の濃度の遅延を抑制しつつ、ドットが過度に形成される可能性を低減できる。以上により、印刷済み画像が不自然に見える可能性を低減できる。
【０００９】
なお、本発明は、種々の形態で実現することが可能であり、例えば、画像処理方法および画像処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施例における印刷システム１０００の構成を示すブロック図である。
【図２】パーソナルコンピュータ１００（図１）のプリンタドライバＭ２０によって実行される印刷処理のフローチャートである。
【図３】図２のステップＳ５０の処理を示すフローチャートである。
【図４】ドットの遅延を示す概略図である。
【図５】濃度のムラを示す概略図である。
【図６】ドット密度のムラを説明する説明図である。
【図７】比較例における誤差伝搬とドット形成との計算例を示す説明図である。
【図８】実施例における誤差伝搬とドット形成との計算例を示す説明図である。
【図９】第２実施例のドット形成の説明図である。
【図１０】図２のステップＳ５０の処理の別の実施例を示すフローチャートである。
【図１１】入力階調値Ｖｉｎと乱数重みＣとの関係を示すグラフである。
【図１２】図１０のフローで使用される乱数重みＣの別の実施例を示す説明図である。
【発明を実施するための形態】
【００１１】
Ａ．第１実施例：
Ａ−１．印刷システム：
次に、本発明の実施の形態を実施例に基づき説明する。図１は、第１実施例における印刷システム１０００の構成を示すブロック図である。印刷システム１０００は、パーソナルコンピュータ１００と、プリンタ２００とを含んでいる。
【００１２】
パーソナルコンピュータ１００は、ＣＰＵ１１０と、ＲＯＭとＲＡＭとを含む内部記憶装置１２０と、ハードディスクドライブなどの外部記憶装置１３０と、プリンタ２００などの外部装置との通信のための通信インタフェース１４０と、タッチパネルなどの操作部１５０と、液晶ディスプレイなどの表示部１６０と、を備えている。通信インタフェース１４０は、例えば、いわゆるＵＳＢインタフェース、または、ＩＥＥＥ８０２．３に準拠したインタフェースであってよい。内部記憶装置１２０には、後述する誤差バッファＢ１０が、設けられている。
【００１３】
外部記憶装置１３０は、種々のプログラムを格納している。格納されたプログラム１３０Ｐは、アプリケーションＭ１０の機能のためのプログラム（アプリケーションプログラム）と、プリンタドライバＭ２０の機能のためのプログラムと、を含む。これらの機能は、ＣＰＵ１１０が各コンピュータプログラムを実行することによって、実現される。アプリケーションＭ１０は、例えば、文書作成、または、画像生成などの画像データを生成する機能を有する。
【００１４】
プリンタドライバＭ２０は、アプリケーションＭ１０から印刷対象の画像を表す画像データを取得し、取得した画像データを用いて印刷データを生成し、生成した印刷データをプリンタ２００に供給する。プリンタドライバＭ２０は、入力画像処理モジュールＭ２２と、データ変換モジュールＭ２４と、印刷データ生成モジュールＭ２６と、を含んでいる。データ変換モジュールＭ２４は、補正モジュールＭ２４２と、決定モジュールＭ２４４と、を含む。これらの機能モジュールＭ２２、Ｍ２４（Ｍ２４２、Ｍ２４４）、Ｍ２６の処理については、後述する。
【００１５】
プリンタ２００は、プリンタ２００の全体を制御する制御部２１０と、印刷を行う印刷機構２２０と、パーソナルコンピュータ１００または図示しないストレージ装置などの外部装置との通信のための通信インタフェース２３０と、を備えている。通信インタフェース２３０は、パーソナルコンピュータ１００から印刷データを受信可能である。制御部２１０は、図示しないＣＰＵとメモリとを有する周知のコンピュータである。制御部２１０のメモリには、プリンタ２００を制御するための種々のプログラムが格納されている（図示せず）。制御部２１０は、通信インタフェース２３０から受信した印刷データに従って印刷機構２２０を制御することによって、印刷を実行する。
【００１６】
印刷機構２２０は、着色剤のドットを印刷媒体に形成することによって、印刷を行う。本実施例では、着色剤は、シアンとマゼンタとイエロとブラックの４色のインクである。
【００１７】
なお、図１には、データ変換モジュールＭ２４によって実行される処理の概要も示されている。詳細については、後述する。
【００１８】
Ａ−２．画像処理：
図２は、パーソナルコンピュータ１００（図１）のプリンタドライバＭ２０によって実行される印刷処理のフローチャートである。プリンタドライバＭ２０は、外部からの指示に応じて、この印刷処理を実行する。以下では、プリンタドライバＭ２０は、アプリケーションＭ１０からの指示に応じて、印刷処理を開始することとする。
【００１９】
最初のステップＳ１０では、入力画像処理モジュールＭ２２（図１）は、アプリケーションＭ１０から印刷対象の画像データ受信し、受信した画像データを、ビットマップデータに変換する（ラスタライズ処理）。ビットマップデータに含まれる画素データは、例えば、赤と緑と青との３つの要素の階調値（例えば、２５６階調）で画素の色を表すＲＧＢ画素データである。また、ビットマップデータの画素密度は、印刷解像度（ドットの最高密度）と同じである。
【００２０】
ステップＳ２０では、入力画像処理モジュールＭ２２は、ビットマップデータに含まれるＲＧＢ画素データを、シアンとマゼンタとイエロとブラックとの４つの要素の階調値（例えば、２５６階調）で画素の色を表すＣＭＹＫ画素データに変換する（色変換処理）。色変換処理は、ＲＧＢ画素データとＣＭＹＫ画素データとを対応付けるルックアップテーブルを用いて行われる。
【００２１】
続けて、入力画像処理モジュールＭ２２は、色補正処理を行う。色補正処理は、例えば、キャリブレーション処理（ステップＳ３０）と、インク量調整処理（ステップＳ４０）と、を含む。キャリブレーション処理は、ＣＭＹＫ画素データの各要素の値の変化に対して、実際に印刷媒体に印刷される色の濃度がリニアに変化するように、ＣＭＹＫ画素データの各要素の値を補正する処理である。インク量調整処理は、印刷に要するインク量が基準量以下になるように、ＣＭＹＫ画素データの各要素の値を調整する処理である。以下、色補正処理後のＣＭＹＫ画素データを、補正済ＣＭＹＫ画素データとも呼ぶ。
【００２２】
ステップＳ５０では、データ変換モジュールＭ２４が、補正済ＣＭＹＫ画素データを含むビットマップデータを、各画素毎のドットの形成状態を表すドットデータに変換する（ハーフトーン処理）。この処理の詳細については、後述する。
【００２３】
続けて、印刷データ生成モジュールＭ２６は、ドットデータを印刷データに変換する。この変換の処理は、例えば、インターレース処理（ステップＳ６０）と、プリンタコマンド変換処理（ステップＳ７０）とを含む。インターレース処理は、ドットデータにおけるデータの並び順を、プリンタ２００に供給される順番に変換する処理である。プリンタコマンド変換処理は、ドットデータにプリンタ制御コードとデータ識別コードとを付加することによって、プリンタ２００によって解釈可能な印刷データを生成する処理である。
【００２４】
印刷データ生成モジュールＭ２６は、生成した印刷データを、プリンタ２００に供給する。プリンタ２００は、受信した印刷データに従って、印刷を行う。
【００２５】
図３は、図２のステップＳ５０の処理を示すフローチャートである。図３の処理は、１つの画素（「注目画素」と呼ぶ）のドット形成状態を、誤差拡散を用いて決定する（以下「誤差拡散処理」とも呼ぶ）。図３の処理は、画像を表す複数の画素毎に、実行される。本実施例では、複数の画素は、Ｘ方向とＹ方向とにマトリクス状に並んで配置されている。データ変換モジュールＭ２４は、＋Ｘ方向に沿って１画素ずつ処理を実行することによって、Ｘ方向に延びる１つの画素ラインの処理を実行する。１つの画素ラインの処理の完了に応じて、データ変換モジュールＭ２４は、＋Ｙ方向に隣接する別の画素ラインの処理を実行する。この結果、処理対象の画素ラインは、＋Ｙ方向に向かって１ラインずつ進行する。なお、図３の処理は、印刷に用いられるインクの色毎に、実行される。また、画素の処理順は、他の順であってよい。
【００２６】
最初のステップＳ２００では、補正モジュールＭ２４２（図１）は、誤差マトリクスＭＴＸと、誤差バッファＢ１０とを用いて、誤差値Ｅｔを取得する。後述するように、誤差バッファＢ１０は、各画素における濃度誤差（階調の誤差値）を格納している。誤差マトリクスＭＴＸは、注目画素の周辺の所定の相対位置に配置された画素に、ゼロより大きい重みを割り当てている（図１の誤差マトリクスＭＴＸでは、記号「＋」が注目画素を表し、周辺の画素に重みａ〜ｍが割り当てられている。重みａ〜ｍの合計は１である）。補正モジュールＭ２４２は、この重みに従って、周辺の画素の誤差値の重み付き和を、注目画素の誤差値Ｅｔとして算出する。なお、誤差マトリクスＭＴＸは、予め、データ変換モジュールＭ２４に組み込まれている。例えば、ＣＰＵ１１０（補正モジュールＭ２４２）は、内部記憶装置１２０に展開された誤差マトリクスＭＴＸを参照して、処理を進行する。
【００２７】
次のステップＳ２０５では、補正モジュールＭ２４２は、誤差値Ｅｔと、注目画素の階調値（以下、入力階調値Ｖｉｎとも呼ぶ）との和を、補正済階調値Ｖ１として算出する。
【００２８】
次のステップＳ２１０では、決定モジュールＭ２４４は、入力階調値Ｖｉｎがゼロであるか否かを判定する。
【００２９】
入力階調値Ｖｉｎがゼロでは無い場合には、ステップＳ２１５で、決定モジュールＭ２４４は、補正済階調値Ｖ１を閾値Ｖｔｈとを比較して、注目画素のドット形成状態を決定する。本実施例では、ドット形成状態は、「ドット有り」と「ドット無し」との２つの状態のいずれかである。補正済階調値Ｖ１が閾値Ｖｔｈ以下の場合には、ドット形成状態が「ドット無し」に決定され（Ｓ２２０）、補正済階調値Ｖ１が閾値Ｖｔｈより大きい場合には、ドット形成状態が「ドット有り」に決定される（Ｓ２２５）。なお、本実施例では、閾値Ｖｔｈは、中間の階調値１２７である。
【００３０】
次のステップＳ２３０では、決定モジュールＭ２４４は、決定されたドットの形成状態に対応付けられた階調値（基準階調値Ｖｂと呼ぶ）を取得する。本実施例では、「ドット無し」には、ゼロの基準階調値Ｖｂが対応付けられ、「ドット有り」には、２５５の基準階調値Ｖｂが対応付けられている。このような対応関係は、基準階調値テーブルとして、決定モジュールＭ２４４に組み込まれている。
【００３１】
次のステップＳ２３５では、決定モジュールＭ２４４は、第１誤差値Ｅ１を算出する。第１誤差値Ｅ１は、以下の式で表される。
第１誤差値Ｅ１＝補正済階調値Ｖ１−基準階調値Ｖｂ
【００３２】
次のステップＳ２４０では、決定モジュールＭ２４４は、誤差バッファＢ１０に、注目画素の誤差値として、第１誤差値Ｅ１を登録する（以下、誤差バッファＢ１０に登録された誤差値を「登録誤差値」とも呼ぶ）。
【００３３】
以上のように、入力階調値Ｖｉｎがゼロでは無い場合には、注目画素のドット形成状態が、補正済階調値Ｖ１に従って、すなわち、周辺の画素で生じた誤差値を考慮して、決定される。この結果、画像の階調を自然に表現するドットの形成状態（ドットのパターン）を、実現することができる。
【００３４】
入力階調値Ｖｉｎがゼロである場合には（Ｓ２１０：Ｙｅｓ）、決定モジュールＭ２４４は、ドット形成状態を「ドット無し」に決定し（ステップＳ２５０）、基準階調値Ｖｂ（ゼロ）を取得する（ステップＳ２５５）。この結果、入力階調値Ｖｉｎがゼロである画像領域を、適切に表現することができる。。
【００３５】
次のステップＳ２６０では、決定モジュールＭ２４４は、基準誤差値を算出する。基準誤差値は、上述した第１誤差値Ｅ１と同じ演算式で算出される（「基準誤差値Ｅ１」とも呼ぶ）。
【００３６】
次のステップＳ２６５では、決定モジュールＭ２４４は、第２誤差値Ｅ２を算出する。第２誤差値Ｅ２は、以下の式で表される。
第２誤差値Ｅ２＝０．９＊基準誤差値Ｅ１＋０．１＊乱数ＲＮＤ（記号「＊」は乗算を示す。以下、同様）
このように、第２誤差値Ｅ２は、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和である。決定モジュールＭ２４４は、画素毎に乱数ＲＮＤを生成する。本実施例では、乱数ＲＮＤは、−６４から＋６４までの範囲内の値であり、乱数ＲＮＤの平均値はゼロである。
【００３７】
本実施例では、決定モジュールＭ２４４は、ステップＳ２６５の次に、ステップＳ２８５を実行する。なお、図３には、ステップＳ２８０、Ｓ２９０を含む処理（「振幅比較処理ＰＡ」とも呼ぶ）が示されているが、この振幅比較処理ＰＡは、第１実施例では実行されず、第２実施例で実行される。
【００３８】
ステップＳ２８５では、決定モジュールＭ２４４は、誤差バッファＢ１０に、注目画素の誤差として、第２誤差値Ｅ２を登録する。
【００３９】
データ変換モジュールＭ２４（図１）は、図３の処理を繰り返すことによって、全ての画素のドット形成状態を決定する。そして、データ変換モジュールＭ２４は、ドット形成状態を表すドットデータを生成し、ドットデータを印刷データ生成モジュールＭ２６に供給する。
【００４０】
Ａ−２−１．ドットの遅延について：
次に、入力階調値Ｖｉｎがゼロである場合に、注目画素の誤差値が、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第２誤差値Ｅ２）である理由について説明する。図４はドットの遅延を示す概略図である。図４（Ａ）は、誤差拡散処理の対象のビットマップデータによって表されるビットマップ画像ＰＩを示している。このビットマップ画像ＰＩ中には、第１画像領域ＩＡ１、空白領域ＢＡ、第２画像領域ＩＡ２が、＋Ｙ方向に沿ってこの順番に並んでいる。各画像領域ＩＡ１、ＩＡ２は、それぞれ、画像を表すドットが形成されるべき領域（例えば、写真を表す領域）である。空白領域ＢＡは、ドットが形成されるべきではない領域（最も明るい白い領域（入力階調値Ｖｉｎ＝ゼロ））である。
【００４１】
データ変換モジュールＭ２４（図１）は、領域ＩＡ１、ＢＡ、ＩＡ２の順番に、誤差拡散処理（図３）を実行する。この結果、第１画像領域ＩＡ１で生じた誤差値は、空白領域ＢＡを伝搬して、第２画像領域ＩＡ２に影響を及ぼし得る。
【００４２】
図４（Ａ）の誤差値Ｅｒｒは、第１画像領域ＩＡ１における最下の画素（＋Ｙ方向側の端の画素）の誤差値を、示している。第１画像領域ＩＡ１では、ドットが形成されることによって、負の誤差値が生じる。誤差値Ｅｒｒは、このような負の誤差を示している。
【００４３】
図４（Ａ）の右部分の表は、空白領域ＢＡを伝搬する誤差の変化を示している。表中のライン番号ＬＮは、第１画像領域ＩＡ１と空白領域ＢＡとの境界から＋Ｙ方向に向かって数えた画素ライン（Ｘ方向に延びる画素ライン）の番号である。「番号ＬＮ＝１」は、第１画像領域ＩＡ１と接する画素ラインを示す。第２誤差値Ｅ２は、その画素ラインの画素で生じ得る第２誤差値Ｅ２の概要を示す。誤差割合Ｒｅは、第２誤差値Ｅ２における誤差値Ｅｒｒの割合を示す。乱数割合Ｒｒは、第２誤差値Ｅ２における乱数ＲＮＤの割合を示す。
【００４４】
空白領域ＢＡでは、入力階調値Ｖｉｎがゼロである。注目画素の第２誤差値Ｅ２は、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和である（図３：Ｓ２６５）。ここで、説明を簡単にするために、或る画素で生じた誤差が、＋Ｙ方向に隣接する画素に、そのまま伝搬すると仮定する。この場合、空白領域ＢＡの１番目の画素ライン（ライン番号ＬＮ＝１）では、第２誤差値Ｅ２は、「０．９＊誤差値Ｅｒｒ＋０．１＊乱数ＲＮＤ」となり得る。誤差割合Ｒｅは９０％であり、乱数割合Ｒｒは１０％である。
【００４５】
２番目の画素ライン（ライン番号ＬＮ＝２）には、１つ目の画素ラインから誤差が伝搬する。第２誤差値Ｅ２は、「０．９＊伝搬誤差＋０．１＊乱数ＲＮＤ」となり得る。ここで、伝搬誤差は、１つ目の画素ラインの第２誤差値Ｅ２であり、「０．９＊誤差値Ｅｒｒ＋０．１＊乱数ＲＮＤ」である。これらの結果、２番目の画素ラインでは、誤差割合Ｒｅは、８１％であり、乱数割合Ｒｒは１９％である。
【００４６】
３番目以降の画素ラインにおいても、同様に、第２誤差値Ｅ２は、１つ前の画素ラインの第２誤差値Ｅ２（生成誤差ＤＥ）と、乱数ＲＮＤとの重み付き和である。この結果、空白領域ＢＡにおいて、画素ラインが第１画像領域ＩＡ１から遠いほど、誤差割合Ｒｅが小さくなり、乱数割合Ｒｒが大きくなる。例えば、２２番目以降の画素ラインでは、誤差割合Ｒｅが１０％よりも小さくなり、乱数割合Ｒｒが９０％を超える。
【００４７】
このように、空白領域ＢＡが大きいほど、空白領域ＢＡを伝搬した誤差値における乱数ＲＮＤの割合が高くなる。
【００４８】
図４（Ｂ）は、第２画像領域ＩＡ２におけるドットｄｔの形成状態を示す概略図である。ここでは、第１画像領域ＩＡ１と第２画像領域ＩＡ２との間が、２２ライン以上離れていると仮定する。この場合、空白領域ＢＡから第２画像領域ＩＡ２に伝搬する誤差における乱数ＲＮＤの割合が９０％以上である。第２画像領域ＩＡ２では、第１画像領域ＩＡ１で生じた誤差値（特に負の誤差値）の影響が乱数ＲＮＤによって緩和される。従って、第１画像領域ＩＡ１の影響が抑制されて、適切にドットｄｔが形成される。
【００４９】
図４（Ｃ）は、ドット形成状態の比較例を示す概略図である。この比較例では、入力階調値Ｖｉｎがゼロである場合にも、入力階調値Ｖｉｎがゼロでは無い場合と同じ処理（図３：Ｓ２１５〜Ｓ２４０）が行われる。空白領域ＢＡでは、入力階調値Ｖｉｎがゼロであるので、補正済階調値Ｖ１が負（誤差値Ｅｒｒ）となる。また、補正済階調値Ｖ１が閾値Ｖｔｈよりも小さいので、ドットは形成されない。注目画素で生じる第１誤差値Ｅ１は、注目画素に伝搬した誤差（誤差値Ｅｒｒ）と同じである。これらの結果、比較例では、第１画像領域ＩＡ１で生じた誤差値Ｅｒｒは、そのまま、第２画像領域ＩＡ２に伝搬する。この結果、第２画像領域ＩＡ２の−Ｙ方向側の端部ＩＡ２ｕでは、負の誤差値Ｅｒｒに起因して補正済階調値Ｖ１が閾値Ｖｔｈを超えることができないので、ドットが形成されない。第２画像領域ＩＡ２の画像の濃度が薄い場合には、ドットの形成されない領域が広くなる（ドットの形成が遅れる）。
【００５０】
本実施例では、第２画像領域ＩＡ２の濃度が薄い場合であっても、図４（Ｂ）に示すように、乱数ＲＮＤによって、端部におけるドット形成の遅れ（「濃度の遅延」とも言える）を抑制できる。以上、誤差の伝搬を簡略化して説明したが、図１の誤差マトリクスＭＴＸに従って誤差が拡散される場合も、同様である。
【００５１】
なお、現実の空白領域ＢＡの大きさは、以下のような大きさであってよい。例えば、プリンタ２００の印刷解像度が３００ｄｐｉ（dot per inch）である場合には、２２ライン分の距離は、0.0733inch（1.86mm）である。一般には、２つの画像を１枚の用紙に印刷する場合には、２つの画像の間に、数mm〜数cmの空白領域ＢＡが設けられる場合が多い。従って、本実施例は、一方の画像で生じた誤差値が、他方の画像に影響を及ぼす可能性を、効果的に低減できる。
【００５２】
Ａ−２−２．濃度のムラについて：
図５は、濃度のムラを示す概略図である。図５（Ａ）は、誤差拡散処理の対象のビットマップデータによって表されるビットマップ画像ＰＩｂを示している。このビットマップ画像ＰＩｂは、透かし絵のように薄い第１画像Ｍ１と、更に薄いベタ画像Ｍ２（第２画像Ｍ２）と、を表している（第１画像Ｍ１の一部は、第２画像Ｍ２の一部と重なっている）。このようなビットマップ画像ＰＩｂは、例えば、アプリケーションＭ１０（図１）が、薄いベタ画像を表す下層レイヤに、透かし絵を表す上層レイヤを重ねることによって、画像（画像データ）を生成した場合に、処理され得る。
【００５３】
図５（Ａ）の右部分には、画像の一部分の拡大図Ｆが示されている。拡大図Ｆの左部分は、第１画像Ｍ１を表し、拡大図Ｆの右部分は、２つの画像Ｍ１、Ｍ２が重なった部分（重畳画像Ｍ３と呼ぶ）を表している。拡大図Ｆ中の小さい四角は、画素Ｐｘを表している。画素Ｐｘに記載された符号Ｖｐ、Ｖｑ、０（ゼロ）は、階調値を表している。画素Ｐｘに付されたハッチングは、濃さ（階調値）を示している。
【００５４】
第１画像Ｍ１を表す領域では、階調値が第１値Ｖｐである画素のブロックと、階調値がゼロである画素のブロックとが、Ｘ方向およびＹ方向に交互に並んでいる（以下、階調値がゼロである画素を「ゼロ画素」とも呼ぶ）。このように、格子状に配置された画素ブロック（階調値がゼロよりも大きい画素ブロック）が、透かし絵のように薄い第１画像Ｍ１を表現している。
【００５５】
第２画像Ｍ２は、階調値が第２値Ｖｑであるベタ画像である。重畳画像Ｍ３を表す領域では、階調値が第１値Ｖｐである画素ブロックと、階調値が第２値Ｖｑである画素のブロックとが、Ｘ方向およびＹ方向に交互に並んでいる。ここで、アプリケーションＭ１０は、下層レイヤ（例えば、第２画像Ｍ２）に上層レイヤ（例えば、第１画像Ｍ１）を重ねる際に、上層レイヤ内の白を表す画素については、下層レイヤの階調値をそのまま使用し、上層レイヤ内の白ではない色を表す画素については、下層レイヤの階調値の代わりに上層レイヤの階調値を使用したこととしている。この場合、重畳画像Ｍ３の領域では、第１画像Ｍ１内のゼロでは無い階調値（Ｖｐ）が、第２画像Ｍ２の階調値（Ｖｑ）を上書きする。第１画像Ｍ１内の階調値がゼロである画素位置においては、第２画像Ｍ２の階調値（Ｖｑ）が維持される。なお、第２値Ｖｑは、第１値Ｖｐと比べて十分に小さい。また、いずれの値Ｖｐ、Ｖｑも、閾値Ｖｔｈよりも小さい。また、図５（Ａ）の例では、１つの画素ブロックは、Ｘ方向に２画素、Ｙ方向に２画素の４画素で構成されている。
【００５６】
図５（Ｂ）は、実施例におけるドットｄｔの形成状態を示す概略図である。図５（Ｂ）の右部分には、拡大図が示されている。図示するように、第１画像Ｍ１を表す領域と、重畳画像Ｍ３を表す領域との間のドットｄｔの密度の差は小さい。従って、ドットｄｔのパターンが不自然に見える可能性は低い（詳細は後述）。
【００５７】
図５（Ｃ）は、比較例におけるドットｄｔの形成状態を示す概略図である。この比較例では、入力階調値Ｖｉｎ（図３）がゼロである場合に、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第２誤差値Ｅ２）の代わりに、乱数ＲＮＤがそのまま誤差値として登録される。この比較例では、第１画像Ｍ１を表す領域では、重畳画像Ｍ３を表す領域と比べて、ドットｄｔの密度が高い。このようなドット密度（濃度）のムラは、不自然に見える可能性が高い。
【００５８】
図６は、ドット密度（濃度）のムラを説明する説明図である。図６（Ａ）、図６（Ｂ）には、左から順番に、第１画像Ｍ１の拡大図Ｆ１と、重畳画像Ｍ３の拡大図Ｆ３と、図５（Ａ）と同じ拡大図Ｆにおけるドットｄｔの形成状態と、が示されている。
【００５９】
図６（Ａ）は、実施例の誤差伝搬とドット形成を示している。図の中央の拡大図Ｆ３は、階調値が第１値Ｖｐである画素Ｐｘ３にドットが形成された場合の、その画素Ｐｘ３で生じた誤差ＥＲ３の拡散を示している。誤差ＥＲ３は、階調値が第２値Ｖｑである画素を介して、階調値が第１値Ｖｐである他の画素に伝搬する。この誤差の伝搬は、図３のステップＳ２１５〜Ｓ２４０に従って、行われる。重畳画像Ｍ３では、誤差ＥＲ３に適した密度で、ドットが形成される（図の右の拡大図Ｆ参照）。
【００６０】
図の左の拡大図Ｆ１は、階調値が第１値Ｖｐである画素Ｐｘ１にドットが形成された場合の、その画素Ｐｘ１で生じた誤差ＥＲ１の伝搬を示している。誤差ＥＲ１は、ゼロ画素を介して、階調値が第１値Ｖｐである別の画素に伝搬する。ここで、図３で説明したように、ゼロ画素では、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第２誤差値Ｅ２）が、その画素の誤差値として登録される。従って、階調値が第１値Ｖｐである別の画素は、誤差ＥＲ１と乱数ＲＮＤとの混合値を、誤差として取得する。ただし、図４で説明したように、階調値がゼロである領域が小さい場合には、誤差における乱数割合Ｒｒが小さい。従って、第１画像Ｍ１では、乱数ＲＮＤの影響が過剰に大きくならずに、誤差拡散処理が進行する。この結果、第１画像Ｍ１では、誤差ＥＲ１に適した密度で、ドットが形成される（図の右の拡大図Ｆ参照）。
【００６１】
以上のように、実施例では、第１画像Ｍ１を表す領域と、重畳画像Ｍ３を表す領域との間のドットｄｔの密度の差が小さい。
【００６２】
図６（Ｂ）は、図５（Ｃ）の比較例における誤差伝搬とドット形成を示している。図の中央の拡大図Ｆ３における誤差伝搬とドット形成とは、図６（Ａ）の実施例と同様である。
【００６３】
図の左の拡大図Ｆ１は、図６（Ａ）の拡大図Ｆ１と同様に、画素Ｐｘ１で生じた誤差ＥＲ１の伝搬を示している。比較例では、入力階調値Ｖｉｎがゼロである場合に、乱数ＲＮＤがそのまま誤差値として登録される。従って、ゼロ画素に隣接する画素は、画素Ｐｘ１で生じた誤差ＥＲ１とは無関係に、乱数ＲＮＤを誤差として取得し得る。このように、ゼロ画素に隣接する画素では、負の誤差（誤差ＥＲ１）の影響が小さいので、ドットが形成される可能性が実施例と比べて高くなる。ゼロ画素に、階調値がゼロよりも大きい画素が隣接するパターンが、狭い領域内に多数存在する（高密度に存在する）場合には、その領域内におけるドットの密度が過度に高くなり得る。この結果、第１画像Ｍ１を表す領域では、重畳画像Ｍ３を表す領域と比べて、ドットｄｔの密度が高くなる（拡大図Ｆ参照）。
【００６４】
次に、比較例で濃度ムラが生じ、実施例で濃度ムラが抑制されることを、計算例で示す。図７は、比較例における、誤差伝搬とドット形成との計算例を示す説明図である。図７（Ａ）は、第１画像Ｍ１の計算例を示し、図７（Ｂ）は、重畳画像Ｍ３の計算例を示す。これらの図は、Ｙ方向に複数の画素が並んで形成された画素ラインの計算例を示している。図中には、入力階調値Ｖｉｎと、補正済階調値Ｖ１と、ドット形成状態ＤＳと、生成された乱数ＲＮＤと、新たに生じた誤差ＥＲと、が示されている（重畳画像Ｍ３では乱数ＲＮＤが省略されている）。ここで、第１値Ｖｐは９０であり、第２値Ｖｑは５であることとしている。また、説明を簡単にするために、或る画素で生じた誤差が、＋Ｙ方向に隣接する画素に、そのまま伝搬すると仮定している。例えば、図７（Ｂ）に示すように、上から２番目の画素Ｐｘｂの補正済階調値Ｖ１は、その画素Ｐｘｂの入力階調値Ｖｉｎ（９０）と、１つ上の画素Ｐｘａで生じた誤差ＥＲ（９０）との、和（１８０）である。
【００６５】
図７（Ｂ）に示すように、重畳画像Ｍ３では、画素を上から下に（＋Ｙ方向に）辿ると、誤差ＥＲに入力階調値Ｖｉｎが蓄積して、誤差ＥＲ（すなわち、補正済階調値Ｖ１）が徐々に大きくなる。そして、補正済階調値Ｖ１が閾値Ｖｔｈ（１２７）を超えることによって、ドットｄｔが形成されて、誤差ＥＲが負値になる。このような変化が、繰り返される。
【００６６】
一方、図７（Ａ）に示す第１画像Ｍ１では、ゼロ画素において、乱数ＲＮＤが誤差ＥＲをリセットする。従って、ゼロ画素の周辺（下流側）の画素では、入力階調値Ｖｉｎの蓄積が無くても、乱数ＲＮＤの影響によって、補正済階調値Ｖ１が閾値Ｖｔｈを超え得る。このように、ゼロ画素の周辺では、ドットｄｔが形成され易い。図７（Ａ）の例では、図７（Ｂ）の例と比べて、ゼロ画素が維持されているにも拘わらずに、ドットｄｔの総数は、２つ多い（図７（Ａ）では７個、図７（Ｂ）では５個）。
【００６７】
図８は、実施例における、誤差伝搬とドット形成との計算例を示す説明図である。図８（Ａ）は、図７（Ａ）と同じ第１画像Ｍ１の計算例を示し、図８（Ｂ）は、図７（Ｂ）と同じ重畳画像Ｍ３の計算例を示す。重畳画像Ｍ３の計算例は、比較例の計算例と同じである。第１画像Ｍ１では、比較例と同じ乱数ＲＮＤが利用されている。しかし、実施例では、比較例とは異なり、ゼロ画素の周辺で、乱数ＲＮＤに起因するドットｄｔ形成が抑制されている。これは、図３（Ｓ２６５）で説明したように、誤差値に対する乱数の割合が１０％に抑制されているからである。この結果、図８（Ａ）でのドットｄｔの総数（５）は、図８（Ｂ）でのドットｄｔの総数（５）と、同じである。このように、実施例では、階調値がゼロの画素と階調値がゼロよりも大きい画素とが並ぶパターンが、狭い領域内で繰り返された場合であっても、その領域におけるドットの密度が高くなることを抑制できる。
【００６８】
以上のように、決定モジュールＭ２４４（図１）は、入力階調値Ｖｉｎ（図３）がゼロである場合には、乱数ＲＮＤを用いて、注目画素の誤差値（第２誤差値Ｅ２）を決定する。従って、図４（Ｃ）に示すような濃度の遅延（ドット出現の遅延）を抑制することができる。また、決定モジュールＭ２４４は、補正済階調値Ｖ１に関係する基準誤差値Ｅ１と、乱数ＲＮＤとを用いて、誤差値（第２誤差値Ｅ２）を決定するので、乱数ＲＮＤの影響を緩和できる。従って、濃度の遅延を抑制しつつ、ゼロ画素の周辺の画素においてドットが過度に形成される可能性を低減できる（例えば、図５（Ｃ）に示すような濃度のムラ（ドット密度のムラ）を抑制できる）。以上により、印刷された画像が不自然に見える可能性を低減できる。
【００６９】
特に、決定モジュールＭ２４４は、入力階調値Ｖｉｎがゼロである場合には、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和を、注目画素の誤差値として決定する（図３：Ｓ２６５、Ｓ２８５）。この結果、乱数ＲＮＤを最終的な誤差値（第２誤差値Ｅ２）に反映させることができるので、図４（Ｃ）のような濃度の遅延を適切に抑制できる。また、基準誤差値Ｅ１を最終的な誤差値に反映させることができるので、図５（Ｃ）のようにドットが過度に形成される可能性を適切に低減できる。また、図４（Ａ）に示すように、空白領域（ゼロ画素の連続する領域）が大きい場合には、空白領域を伝搬した誤差値における乱数割合Ｒｒが大きくなり、空白領域が小さい場合には、空白領域を伝搬した誤差値に対する乱数割合Ｒｒが小さくなる。この結果、本実施例は、大きな空白領域の近傍の濃度遅延と、小さな空白領域の近傍の過剰なドット形成と、のそれぞれを、抑制できる。また、本実施例は、空白領域の大きさを判定する処理を実行しなくても、空白領域の大きさに応じて乱数割合Ｒｒを調整できる。
【００７０】
なお、本実施例においては、ゼロ以外の入力階調値Ｖｉｎの全体が、本発明における「第１種の値」の例であり、ゼロが「第２種の値」の例である。また、第１誤差値Ｅ１が「第１種誤差値」の例であり、第２誤差値Ｅ２が「第２種誤差値」の例である。また、入力階調値Ｖｉｎが第２種の値（ゼロ）であることが、「基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第２誤差値Ｅ２）を第２種誤差値として使用するための特定の条件」の例である。
【００７１】
Ｂ．第２実施例：
図９は、第２実施例のドット形成の説明図である。第１実施例と第２実施例との間の差異は、第２実施例では、図３の振幅比較処理ＰＡ（Ｓ２８０、Ｓ２９０）が有効になる点だけである。他の処理の内容と、印刷システム１０００の構成は、第１実施例と同じである。
【００７２】
図３に示すように、第２実施例では、決定モジュールＭ２４４は、ステップＳ２６５の次のステップＳ２８０で、第２誤差値Ｅ２の絶対値が、乱数ＲＮＤの振幅Ａｒｎｄよりも小さいか否かを判定する。乱数ＲＮＤの振幅Ａｒｎｄは、乱数ＲＮＤの変動幅の半分を意味している。本実施例では、乱数ＲＮＤが−６４から＋６４までの範囲内で変動するので、振幅Ａｒｎｄは、６４である。
【００７３】
第２誤差値Ｅ２の絶対値が振幅Ａｒｎｄ以上である場合には、決定モジュールＭ２４４は、第１実施例と同様に、ステップＳ２８５を実行する。
【００７４】
第２誤差値Ｅ２の絶対値が振幅Ａｒｎｄ未満である場合には、決定モジュールＭ２４４は、ステップＳ２９０で、第２誤差値Ｅ２の算出に使用した乱数ＲＮＤを、そのまま、注目画素の誤差として、誤差バッファＢ１０に登録する。このように、第２誤差値Ｅ２の絶対値が小さい場合に、第２誤差値Ｅ２の代わりに乱数ＲＮＤを誤差として登録する理由は、ゼロ画素が連続する領域において誤差値が均一になることを抑制するためである。
【００７５】
誤差値の均一性（分散）と、ドットパターンとの関係について説明する。図９（Ａ）は、図４（Ａ）と同じビットマップ画像ＰＩを示している。図９（Ａ）の右部分のグラフは、Ｙ方向の画素位置と、登録誤差値の分散（統計学の分散）と、の関係を示している。登録誤差値の分散は、Ｘ方向に延びる１本の画素ラインにおける、登録誤差値の分散を示している。グラフ中の白抜きの菱形は、振幅比較処理ＰＡを有効にした場合の分散を示し（「第１分散Ｖｒ１」と呼ぶ）、黒丸は振幅比較処理ＰＡを無効にした場合の分散を示している（「第２分散Ｖｒ２」と呼ぶ）。
【００７６】
第１画像領域ＩＡ１では、入力階調値Ｖｉｎの変化とドット形成状態とに応じて誤差値が分散する。第１画像領域ＩＡ１内では、各画素の階調値がゼロよりも大きいので、第１分散Ｖｒ１と第２分散Ｖｒ２とは、同じである。
【００７７】
空白領域ＢＡにおいては、図４で説明したように、第１画像領域ＩＡ１で生じた誤差が、１よりも小さい係数（ここでは、０．９）によって徐々に減少しながら、＋Ｙ方向に伝搬する。従って、画素ラインの位置を＋Ｙ方向に辿ると、図３のステップＳ２６５で使用される第２誤差値Ｅ２の絶対値は、徐々に小さくなる（図示省略）。この結果、第２実施例では、画素ラインの位置を＋Ｙ方向に辿ると、ステップＳ２８５の代わりにステップＳ２９０が実行される画素の割合が徐々に高くなる。
【００７８】
また、空白領域ＢＡにおいては、第１画像領域ＩＡ１で生じた誤差は、誤差マトリクスＭＴＸ（図１）に従って平滑化されながら、＋Ｙ方向に伝搬する。従って、画素ラインの位置を＋Ｙ方向に辿ると、登録誤差値の分散は徐々に小さくなる（図９（Ａ））。ただし、空白領域ＢＡでは、登録誤差値は、新たに追加された乱数ＲＮＤの成分を含む（図３：Ｓ２６５、Ｓ２９０）。従って、第１分散Ｖｒ１と第２分散Ｖｒ２とのそれぞれには、新たに追加された乱数ＲＮＤの成分の分散が残る。振幅比較処理ＰＡが有効な第２実施例では、乱数ＲＮＤがそのまま誤差値として登録されるので（図３：Ｓ２９０）、第１分散Ｖｒ１には、乱数ＲＮＤの分散Ｖｒｎｄが残る。振幅比較処理ＰＡ（図３）が省略される場合には、「０．１＊乱数ＲＮＤ」が新たに誤差値に追加されるので（図３：Ｓ２６５）、第２分散Ｖｒ２には、乱数ＲＮＤの分散Ｖｒｎｄの０．１倍の値Ｖｓｒｎｄが残る（Ｖｓｒｎｄ＜Ｖｒｎｄ）。
【００７９】
図９（Ｂ）は、第２画像領域ＩＡ２における−Ｙ方向側の端の画素ライン（端画素ラインＦＬと呼ぶ）におけるドット形成状態ＤＳｂと、端画素ラインＦＬにおける補正済階調値Ｖ１の変化を表すグラフと、を示している。ドット形成状態ＤＳｂと、グラフとにおいて、白抜きの菱形は、振幅比較処理ＰＡが有効である本実施例を示し、黒丸は、振幅比較処理ＰＡを無効にした場合を示す。
【００８０】
端画素ラインＦＬ上では、誤差拡散処理が＋Ｘ方向に向かって進行する。従って、画素を＋Ｘ方向に辿ると、誤差に画素の階調値が蓄積して、補正済階調値Ｖ１が徐々に大きくなる。そして、補正済階調値Ｖ１が閾値Ｖｔｈを超えることによって、ドットｄｔ１、ｄｔ２が形成されて、誤差値、すなわち、補正済階調値Ｖ１が小さくなる。このような変化が繰り返される。
【００８１】
ここで、振幅比較処理ＰＡ（図３）が無効である場合には、端画素ラインＦＬの−Ｙ方向側に隣接する画素ラインにおいて、登録誤差値の分散が小さい（図９（Ａ）：第２分散Ｖｒ２）。すなわち、端画素ラインＦＬ上の画素位置によらずに、空白領域ＢＡから端画素ラインＦＬの画素に伝搬する誤差は、おおよそ均一である。従って、第２画像領域ＩＡ２がおおよそ均一な薄いベタ画像を表している場合には、画素位置の変化に対する補正済階調値Ｖ１（第２補正済階調値Ｖ１２）の変化は、おおよそ同じパターンを繰り返す（図９（Ｂ））。この結果、形成されるドットｄｔ２は、おおよそ、等間隔に並ぶ。この結果、第２画像領域ＩＡ２の端部において、おおよそ等間隔に配置されたドットが、不自然に目立つ可能性がある（例えば、ドットがライン状に見える）。
【００８２】
本実施例では、端画素ラインＦＬの上に隣接する（−Ｙ方向側の）画素ラインにおいて、登録誤差値の分散が大きい（図９（Ａ）：第１分散Ｖｒ１）。従って、第２画像領域ＩＡ２がおおよそ均一な薄いベタ画像を表している場合であっても、画素位置の変化に対する補正済階調値Ｖ１（第１補正済階調値Ｖ１１）の変化のパターンは、画素位置によって異なる（図９（Ｂ））。この結果、端画素ラインＦＬにおいて、ドットｄｔ１が等間隔に並ぶことが抑制され、ドットｄｔ１は、不規則なパターンに見えるように形成される。
【００８３】
以上のように、本実施例では、決定モジュールＭ２４４（図１）は、第２誤差値Ｅ２の絶対値が乱数ＲＮＤの振幅よりも小さい場合には、注目画素の誤差値として、乱数ＲＮＤをそのまま使用する（図３：振幅比較処理ＰＡ）。従って、決定モジュールＭ２４４は、誤差値を適切に分散させることができる。この結果、印刷された画像の端を表現するドットがラインのように見える可能性を低減できる。以上により、画像が不自然に見える可能性を低減できる。
【００８４】
また、本実施例では、決定モジュールＭ２４４は、誤差値の分散を算出せずに、第２誤差値Ｅ２の絶対値と乱数ＲＮＤの振幅Ａｒｎｄとの比較によって、第２誤差値Ｅ２と乱数ＲＮＤとの間の切り替えを行う。この結果、誤差拡散処理に要する時間が長くなる可能性を低減できる。また、誤差拡散処理に要するメモリ容量が多くなる可能性を低減できる。ただし、誤差値の分散の算出結果に従って、上記切り替えを行ってよい。
【００８５】
また、第２実施例では、振幅比較処理ＰＡを有効にする点以外の処理が、第１実施例と同じであるので、第２実施例は、第１実施例と同じ種々の利点を有する。
【００８６】
なお、本実施例では、図３のステップＳ２８５で登録される第２誤差値Ｅ２と、ステップＳ２９０で登録される乱数ＲＮＤとが、本発明における「第２種誤差値」の例である。また、ステップＳ２８０で振幅Ａｒｎｄと比較される第２誤差値Ｅ２は「候補誤差値」の例でもある。また、入力階調値Ｖｉｎが第２種の値（ゼロ）であり、かつ、第２誤差値Ｅ２の絶対値が乱数ＲＮＤの振幅Ａｒｎｄ以上であることが、「基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第２誤差値Ｅ２）を第２種誤差値として使用するための特定の条件」の例である。
【００８７】
Ｃ．第３実施例：
図１０は、図２のステップＳ５０の処理の別の実施例を示すフローチャートである。本実施例では、登録誤差値に対して乱数ＲＮＤが寄与する割合が、入力階調値Ｖｉｎに応じて変化する。図２の他の処理と、印刷システム１０００の構成とは、上記各実施例と同じである。
【００８８】
最初のステップＳ３００、Ｓ３０５は、図３のステップＳ２００、Ｓ２０５と、それぞれ同じである。次のステップＳ３１０では、決定モジュールＭ２４４は、入力階調値Ｖｉｎがゼロまたは２５５（最大値）であるか否かを判定する。入力階調値Ｖｉｎがゼロと２５５とのいずれでもない場合には、決定モジュールＭ２４４は、ステップＳ３１５〜Ｓ３３０の処理を実行する。これらのステップＳ３１５〜Ｓ３３０は、図３のステップＳ２１５〜Ｓ２３０と、それぞれ同じである。
【００８９】
入力階調値Ｖｉｎがゼロまたは２５５である場合には、決定モジュールＭ２４４は、ステップＳ３４０〜Ｓ３５５の処理を実行する。入力階調値Ｖｉｎがゼロである場合には、ドット形成状態が「ドット無し」に決定される（Ｓ３４０、Ｓ３４５）。入力階調値Ｖｉｎが２５５である場合には、ドット形成状態が「ドット有り」に決定される（Ｓ３４０、Ｓ３５０）。決定モジュールＭ２４４は、ステップＳ３５５で、ドット形成状態に応じた基準階調値Ｖｂを取得する。
【００９０】
次のステップＳ３６０では、決定モジュールＭ２４４は、基準誤差値Ｅ１を算出する（この処理は、図３のステップＳ２６０と同じである）。次のステップＳ３６５では、決定モジュールＭ２４４は、乱数重みＣ（「初期化割合Ｃ」とも呼ぶ）を取得する。図３のステップＳ２６５では、乱数ＲＮＤの重みが０．１に固定されているが、本実施例では、乱数重みＣが入力階調値Ｖｉｎに応じて変化する。乱数重みＣと入力階調値Ｖｉｎとの対応関係は、予めデータ変換モジュールＭ２４に組み込まれている。例えば、ＣＰＵ１１０（決定モジュールＭ２４４）は、内部記憶装置１２０に展開された対応関係（例えば、テーブル）を参照して、乱数重みＣを取得する。
【００９１】
図１１は、入力階調値Ｖｉｎと乱数重みＣとの関係を示すグラフである。入力階調値Ｖｉｎがゼロから第１値Ｖｅに至るまでの第１範囲Ｒ１では、乱数重みＣは、ゼロよりも大きい。また、入力階調値Ｖｉｎの増加に伴って、乱数重みＣは、最大値（ここでは、０．１）からゼロまで複数の段階を経て減少する。入力階調値Ｖｉｎがゼロの場合に乱数重みＣが最大である。入力階調値Ｖｉｎが第２値Ｖｆから２５５に至るまでの第２範囲Ｒ２では、乱数重みＣは、ゼロよりも大きい。また、入力階調値Ｖｉｎの増加に伴って、乱数重みＣは、ゼロから最大値（ここでは、０．１）まで、複数の段階を経て増加する。入力階調値Ｖｉｎが２５５の場合に乱数重みＣが最大である。第１値Ｖｅと第２値Ｖｆとは、印刷画像の画質に応じて実験的に決定されてよく、例えば、それぞれ、１０、２４５であってよい。入力階調値Ｖｉｎが第１値Ｖｅから第２値Ｖｆに至る第３範囲Ｒ３では、乱数重みＣはゼロである。このように、乱数重みＣが入力階調値Ｖｉｎの変化に応じて変化する理由については、後述する。
【００９２】
図１０の次のステップＳ３７０では、決定モジュールＭ２４４（図１）は、第３誤差値Ｅ３を算出する。第３誤差値Ｅ３は、以下の式で表される。
第３誤差値Ｅ３＝（１−Ｃ）＊基準誤差値Ｅ１＋Ｃ＊乱数ＲＮＤ
このように、第３誤差値Ｅ３は、基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和である。重みは乱数重みＣによって表されている。乱数重みＣがゼロである場合には、第３誤差値Ｅ３は、基準誤差値Ｅ１と同じである。
【００９３】
次に、決定モジュールＭ２４４は、ステップＳ３８０、Ｓ３８５、Ｓ３９０の処理によって、第３誤差値Ｅ３または乱数ＲＮＤを、注目画素の誤差として、誤差バッファＢ１０に登録する。これらのステップＳ３８０、Ｓ３８５、Ｓ３９０は、図３のステップＳ２８０、Ｓ２８５、Ｓ２９０の第２誤差値Ｅ２を第３誤差値Ｅ３に置換して得られるステップと、それぞれ同じである。
【００９４】
以上のように、第３実施例では、入力階調値Ｖｉｎがゼロである場合には、乱数重みＣが０．１であり、基準誤差値Ｅ１の重みが０．９である（図１０のＳ３７０、図１１）。従って、図３、図９に示す第２実施例と同様に、誤差拡散処理が進行する。この結果、第３実施例は、第２実施例と同様の種々の利点を有する。
【００９５】
また、図１１に示すように、入力階調値Ｖｉｎがゼロの近傍（第１範囲Ｒ１）にある場合には、乱数重みＣが入力階調値Ｖｉｎに応じて変化する。従って、第３誤差値Ｅ３に対する乱数ＲＮＤの影響の大きさを入力階調値Ｖｉｎに応じて調整することができる。この結果、乱数ＲＮＤの影響を受けるドット形成状態を、入力階調値Ｖｉｎに適した状態に決定することができる。また、本実施例では、第１範囲Ｒ１において、入力階調値Ｖｉｎが基準階調値Ｖｂ（ゼロ）に近いほど乱数重みＣが高い。従って、入力階調値Ｖｉｎが基準階調値Ｖｂ（ゼロ）から徐々に変化する（大きくなる）グラデーション領域を印刷する場合に、入力階調値Ｖｉｎの増加に伴って乱数重みＣが単調に減少する。これにより、入力階調値Ｖｉｎの増加に伴って乱数重みＣが減少と増加とを繰り返す場合と比べて、グラデーション上でドット密度が不自然に変化する可能性を低減できる。特に、本実施例では、乱数重みＣは、入力階調値Ｖｉｎの増加に伴って複数の段階を経て変化（減少）する。従って、上記グラデーション領域を印刷する場合に、乱数重みＣが最大値である部分と乱数重みＣがゼロである部分との間で、ドット形成状態が急激に変化する可能性を低減できる。この結果、印刷されたグラデーション領域が不自然に見える可能性を低減できる。
【００９６】
また、入力階調値Ｖｉｎが２５５の場合には、入力階調値Ｖｉｎが閾値Ｖｔｈよりも大きいので、通常は、ドット形成状態は「ドット有り」に決定される。このような画素が連続する領域（以下、「最濃ベタ領域」と呼ぶ）は、図４で説明した空白領域ＢＡと同様に、或る画像領域で生じた誤差値を、他の画像領域に伝搬し得る。従って、最濃ベタ領域も、空白領域ＢＡと同様に、濃度の遅延を引き起こし得る。また、最濃ベタ領域において乱数ＲＮＤを誤差値として使用する場合には、小さな最濃ベタ領域の近傍で、過剰なドット形成が生じ得る。このような過剰なドット形成は、図５（Ｃ）の比較例のような濃度のムラを引き起こし得る。そこで、本実施例では、最濃ベタ領域（より具体的には、図１１の第２範囲Ｒ２）においても、空白領域ＢＡ（より具体的には、図１１の第１範囲Ｒ１）と同様に、乱数重みＣがゼロよりも大きい。この結果、最濃ベタ領域の近傍で生じ得る不具合を、空白領域ＢＡの近傍で生じ得る不具合と同様に、抑制できる。また、第２範囲Ｒ２においても、乱数重みＣが入力階調値Ｖｉｎに応じて変化するので、ドット形成状態を入力階調値Ｖｉｎに適した状態に決定することができる。
【００９７】
なお、本実施例では、図１１の第３範囲Ｒ３の値の全体が、本発明における「第１種の値」の例であり、第１範囲Ｒ１の値と第２範囲Ｒ２の値との全体が「第２種の値」の例である。また、第１範囲Ｒ１と第２範囲Ｒ２のそれぞれが「乱数適用範囲」の例である。また、乱数重みＣがゼロの場合に登録される第３誤差値Ｅ３（＝基準誤差値Ｅ１）が「第１種誤差値」の例であり、乱数重みＣがゼロよりも大きい場合に登録される第３誤差値Ｅ３が「第２種誤差値」の例である。また、乱数重みＣがゼロよりも大きい場合に、図１０のステップＳ３９０で登録される乱数ＲＮＤも「第２種誤差値」の例である。また、ステップＳ３８０で振幅Ａｒｎｄと比較される第３誤差値Ｅ３は「候補誤差値」の例でもある。また、入力階調値Ｖｉｎが第２種の値であり、かつ、第３誤差値Ｅ３の絶対値が乱数ＲＮＤの振幅Ａｒｎｄ以上であることが、「基準誤差値Ｅ１と乱数ＲＮＤとの重み付き和（第３誤差値Ｅ３）を第２種誤差値として使用するための特定の条件」の例である。
【００９８】
Ｄ．第４実施例：
図１２は、図１０のフローで使用される乱数重みＣの別の実施例を示す説明図である。第４実施例では、１つの画素のドット形成状態は、「ドット無し」と「小ドット有り」と「中ドット有り」と「大ドット有り」との４つの状態のいずれかに決定される。中ドットは小ドットよりも高い濃度（階調値）を表し、大ドットは中ドットよりも高い濃度（階調値）を表す。
【００９９】
本実施例においても、図１０と同様の手順に従って、誤差拡散処理が進行する。ここで、決定モジュールＭ２４４（図１）は、補正済階調値Ｖ１と、複数の閾値とを比較することによって、ドット形成状態を決定する。３以上のドット形成状態から１つのドット形成状態を選択する方法は、周知の方法であってよい（詳細な説明を省略する）。
【０１００】
図１２の下部分のグラフは、入力階調値Ｖｉｎとドットの記録率との関係を示す。１００％のドット記録率は、全画素にドットが記録された状態を意味している。グラフには、小ドットの記録率ＤＲ１と、中ドットの記録率ＤＲ２と、大ドットの記録率ＤＲ３と、が示されている。この記録率は、入力階調値Ｖｉｎが均一なベタ領域を印刷することによって得られる記録率を示している。
【０１０１】
入力階調値Ｖｉｎがゼロから第１基準階調値Ｔ１（例えば、７２）に至るまでの第１範囲Ｒａでは、入力階調値Ｖｉｎの増加に伴って、小ドット記録率ＤＲ１が、ゼロ％から１００％まで徐々に増加する。入力階調値Ｖｉｎが第１基準階調値Ｔ１から第２基準階調値Ｔ２（例えば、１５３）に至るまでの第２範囲Ｒｂでは、入力階調値Ｖｉｎの増加に伴って、小ドット記録率ＤＲ１は、１００％からゼロ％まで徐々に減少し、この代わりに、中ドット記録率ＤＲ２が、ゼロ％から１００％まで徐々に増加する。入力階調値Ｖｉｎが第２基準階調値Ｔ２から２５５に至るまでの第３範囲Ｒｃでは、入力階調値Ｖｉｎの増加に伴って、中ドット記録率ＤＲ２は、１００％からゼロ％まで徐々に減少し、この代わりに、大ドット記録率ＤＲ３が、０％から１００％まで徐々に増加する。このように、小ドットは、第１基準階調値Ｔ１を表し、中ドットは、第２基準階調値Ｔ２を表し、大ドットは、２５５の階調を表す。すなわち、「小ドット有り」に対応する基準階調値は、第１基準階調値Ｔ１であり、「中ドット有り」に対応する基準階調値は、第２基準階調値Ｔ２であり、「大ドット有り」に対応する基準階調値は、２５５である。
【０１０２】
図１０のドット形成状態を決定する処理部分ＤＰは、上述の４つのドット形成状態に適応するように修正される。例えば、決定モジュールＭ２４４（図１）は、ステップＳ３１０、Ｓ３４０〜Ｓ３５５の代わりに、以下のように、ドット形成状態を決定する。
（１）Ｖｉｎ＝  ゼロの場合、ドット形成状態＝「ドット無し」
（２）Ｖｉｎ＝  Ｔ１の場合、ドット形成状態＝「小ドット有り」
（３）Ｖｉｎ＝  Ｔ２の場合、ドット形成状態＝「中ドット有り」
（４）Ｖｉｎ＝２５５の場合、ドット形成状態＝「大ドット有り」
これら以外の場合には、決定モジュールＭ２４４は、例えば、複数の閾値を用いる周知の方法によってドット形成状態を決定してよい。なお、本実施例では、図１０の手順の処理部分ＤＰ以外のステップは、第３実施例と同じである。
【０１０３】
図１２の上部分のグラフは、乱数重みＣと入力階調値Ｖｉｎとの関係を示す。図１１と同じ第１範囲Ｒ１と第２範囲Ｒ２とに加えて、第１基準階調値Ｔ１を含む第３範囲Ｒ１３と、第２基準階調値Ｔ２を含む第４範囲Ｒ１４においても、乱数重みＣはゼロよりも大きい。また、第３範囲Ｒ１３においては、入力階調値Ｖｉｎが第１基準階調値Ｔ１に近いほど乱数重みＣが高い。第４範囲Ｒ１４においては、入力階調値Ｖｉｎが第２基準階調値Ｔ２に近いほど、乱数重みＣが高い。各範囲Ｒ１３、Ｒ１４においても、乱数重みＣの最大値は０．１であり、入力階調値Ｖｉｎの変化に伴って、乱数重みＣが複数の段階を経て変化する。４つの範囲Ｒ１、Ｒ２、Ｒ１３、Ｒ１４を除いた残りの範囲Ｒ１５、Ｒ１６、Ｒ１７では、乱数重みＣはゼロである。
【０１０４】
次に、図１２の第３範囲Ｒ１３と第４範囲Ｒ１４とで乱数重みＣがゼロよりも大きい理由について説明する。入力階調値Ｖｉｎが第１基準階調値Ｔ１である画素が連続する領域（第１基準ベタ領域と呼ぶ）では、小ドット記録率ＤＲ１が１００％である。また、入力階調値Ｖｉｎが第２基準階調値Ｔ２である画素が連続する領域（第２基準ベタ領域と呼ぶ）では、中ドット記録率ＤＲ２が１００％である。このような基準ベタ領域は、図４で説明した空白領域ＢＡと同様に、或る画像領域で生じた誤差値を、他の画像領域に伝搬し得る（濃度遅延（図４（Ｃ））が生じ得る）。また、そのような基準ベタ領域において、乱数ＲＮＤを誤差値として使用する場合には、小さい基準ベタ領域の近傍の過剰なドット形成、すなわち、濃度のムラ（図５（Ｃ））が生じ得る。そこで、本実施例では、基準ベタ領域（より具体的には、図１２の第３範囲Ｒ１３と第４範囲Ｒ１４）においても、第１範囲Ｒ１および第２範囲Ｒ２と同様に、乱数重みＣがゼロよりも大きい。この結果、基準ベタ領域の近傍で生じ得る不具合を抑制できる。
【０１０５】
なお、本実施例では、図１２の３つの範囲Ｒ１５，Ｒ１６,Ｒ１７の値の全体が、本発明における「第１種の値」の例であり、４つの範囲Ｒ１，Ｒ２，Ｒ１３，Ｒ１４の値の全体が「第２種の値」の例である。また、４つの範囲Ｒ１，Ｒ２，Ｒ１３，Ｒ１４のそれぞれが「乱数適用範囲」の例である。
【０１０６】
Ｅ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１０７】
（１）上記各実施例において、第２誤差値Ｅ２（図３）および第３誤差値Ｅ３（図１０）の算出に使用される乱数ＲＮＤの重みは、それらの誤差値に対して乱数ＲＮＤが寄与する割合（乱数寄与率）の大きさを表している。ここで、乱数寄与率は、誤差値の取り得る値の範囲の幅に対する、乱数ＲＮＤに起因する誤差値の変動幅の割合によって、特定可能である。なお、乱数寄与率を入力階調値Ｖｉｎに応じて変化させる方法は、乱数ＲＮＤの重み（例えば、乱数重みＣ）を入力階調値Ｖｉｎに応じて変化させる方法に限らず、他の種々の方法であってよい。例えば、乱数ＲＮＤの振幅が、入力階調値Ｖｉｎに応じて変化してもよい。この場合、乱数ＲＮＤの振幅が大きいほど、乱数寄与率が高いということができる。
【０１０８】
上記各実施例で、誤差値の算出に利用される乱数ＲＮＤの重み（図３では、０．１。図１０では、乱数重みＣ）は一例であり、他の値であってもよい。一般に、乱数寄与率（例えば、乱数重みＣ）が高い場合には、空白領域ＢＡが小さくても、その空白領域ＢＡの近傍での濃度の遅延（図４（Ｃ））を抑制できる。また、乱数寄与率が低い場合には、空白領域ＢＡが大きくても、その空白領域ＢＡの近傍での過剰なドット形成（図５（Ｃ））を抑制できる。これらは、空白領域ＢＡに限らず、前述の最濃ベタ領域と基準ベタ領域とにおいても、同じである。乱数寄与率（例えば、乱数ＲＮＤの重みと乱数ＲＮＤの振幅）は、濃度の遅延の抑制と、過剰なドット形成の抑制とのバランスを考慮して、実験的に決定されてよい。また、乱数ＲＮＤの振幅は、ドットが形成された状態の基準階調値Ｖｂ（複数種類のドットが形成され得る場合には、最も小さいドットの基準階調値Ｖｂ）よりも小さいことが好ましく、その基準階調値Ｖｂの半分よりも小さいことが特に好ましい。こうすれば、乱数ＲＮＤをそのまま誤差として使用する場合に、乱数ＲＮＤのパターンが、形成されたドットのパターンに現れる可能性を低減できる。
【０１０９】
（２）上記各実施例において、ドット形成状態を決定する処理の手順は、図３、図１０に示す手順に限らず、他の種々の手順であってよい。例えば、図１０のステップＳ３８０、Ｓ３９０は、入力階調値Ｖｉｎが第２種の値である場合（乱数重みＣがゼロよりも大きい場合）にのみ、実行されてもよい。また、図１１の第２範囲Ｒ２において、乱数重みＣがゼロであってもよい。また、重み付き和を算出する際の基準誤差値Ｅ１と乱数ＲＮＤとのそれぞれの重みの和は１でなくてもよい。また、重み付き和に代えて、基準誤差値Ｅ１と乱数ＲＮＤとから決まる種々の値が、注目画素の誤差値（または、候補誤差値）であってよい。また、図３のステップＳ２９０、図１０のステップＳ３９０では、第２誤差値Ｅ２および第３誤差値Ｅ３の算出に使用した乱数ＲＮＤとは別に新たに生成した乱数ＲＮＤを登録してもよい。また、第１誤差値Ｅ１（基準誤差値Ｅ１）は、演算式を用いた演算に限らず、任意の導出方法（例えば、ルックアップテーブル）によって導出されてよい。
【０１１０】
（３）ドット形成状態の総数は、２または４に限らず、一般にＮ個（Ｎは２以上の整数）であってよい。また、プリンタが利用可能な着色剤の種類は、シアンとマゼンタとイエロとブラックとの４種類に限らず、任意の種類であってよい。また、着色剤は、インクに代えて、トナーであってもよい。
【０１１１】
（４）図１のプリンタドライバＭ２０の機能は、プリンタ２００の制御部２１０によって実現されてもよい。この場合、プリンタ２００は、メモリーカードやデジタルカメラ等の外部装置から直接に画像データを取得し、取得した画像データに従って印刷を実行してもよい。
【０１１２】
（５）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【符号の説明】
【０１１３】
１００...パーソナルコンピュータ、１１０...ＣＰＵ、１２０...内部記憶装置、１３０...外部記憶装置、１３０Ｐ...プログラム、１４０...通信インタフェース、１５０...操作部、１６０...表示部、２００...プリンタ、２１０...制御部、２２０...印刷機構、２３０...通信インタフェース、１０００...印刷システム、Ｍ２０...プリンタドライバ、Ｍ２２...入力画像処理モジュール、Ｍ２４...データ変換モジュール、Ｍ２６...印刷データ生成モジュール、Ｍ２４２...補正モジュール、Ｍ２４４...決定モジュール
【図１】
0005505355.tif 000002
【図２】
0005505355.tif 000003
【図３】
0005505355.tif 000004
【図４】
0005505355.tif 000005
【図５】
0005505355.tif 000006
【図６】
0005505355.tif 000007
【図７】
0005505355.tif 000008
【図８】
0005505355.tif 000009
【図９】
0005505355.tif 000010
【図１０】
0005505355.tif 000011
【図１１】
0005505355.tif 000012
【図１２】
0005505355.tif 000013