(57)【要約】【課題】  高画質な画像を簡素な処理で迅速に出力可能な技術を提供する。【解決手段】  画像を複数の画素群に分割し、画素群毎に画素群階調値を決定する。そして、画素群毎に付与されている分類番号と画素群階調値との組合せから、第１の変換テーブルを参照することで画素群の個数データを決定する。次いで、画素群内の各画素について順序値を記憶しておき、順序値と個数データとから第２の変換テーブルを参照することで、画素毎にドット形成の有無を決定してドットを形成する。個数データはデータ量が小さく迅速にデータをやり取り可能であり、第１の変換テーブルを参照すれば個数データを迅速に決定可能であり、第２の変換テーブルを参照すれば、画素毎のドット形成有無を迅速に決定可能である。このため高画質な画像データを迅速に出力することが可能となる。【選択図】        図１
2005269527.tif 000002
【特許請求の範囲】
【請求項１】
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより出力媒体上に画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記画像出力装置に供給する個数データ供給手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを受け取った画素群内の各画素についてドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成するドット形成手段と
を備えている画像出力システム。
【請求項２】
請求項１記載の画像出力システムであって、
前記画像処理装置は、前記画素群を前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に前記分類番号を付与する分類番号付与手段を備える画像出力システム。
【請求項３】
画像データに所定の画像処理を施す第１の画像処理装置と、出力媒体上にドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像処理の結果に基づいて生成する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記第２の画像処理装置に供給する個数データ供給手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを受け取った画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する制御データ生成手段と
を備えている画像処理システム。
【請求項４】
請求項３記載の画像処理システムであって、
前記順序値記憶手段は、前記画素群内でドットが形成される画素の序列を複数組記憶しているとともに、該画素の序列毎に各画素についての前記順序値を記憶している手段であり、
前記制御データ生成手段は、前記複数組の序列の中から前記画素群毎に１の序列を選択し、選択した序列に記憶されている前記順序値を用いて、該画素群内の各画素についてのドット形成の有無を決定することにより、前記制御データを生成する手段である画像処理システム。
【請求項５】
請求項３または請求項４記載の画像処理システムであって、
前記第１の画像処理装置は、前記画素群を前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に前記分類番号を付与する分類番号付与手段を備える画像処理システム。
【請求項６】
請求項５記載の画像処理システムであって、
前記分類番号付与手段は、複数の閾値を二次元的に配列したディザマトリックスを前記画像に適用したときの、該ディザマトリックスに対する前記画素群の相対位置に基づいて、前記分類番号を付与する手段であり、
前記個数データ供給手段は、前記画素群内では全画素が前記画素群階調値を有するものとして、該画素群の各画素に前記ディザマトリックスを用いてディザ法を適用したときに該画素群内に形成されるドット個数のデータを、前記分類番号と該画素群階調値との組合せに対応付けて、前記第１の対応関係として記憶している手段であり、
前記順序値記憶手段は、前記個数データの生成に用いたディザマトリックスを複数の画素群に分割し、該画素群内の各画素に対応付けられた閾値の大小関係に基づいて画素群毎に決定された画素の序列を、前記複数組の画素の序列として記憶している手段であり、
前記制御データ生成手段は、前記画像上での画素群の位置に対応した１の序列を選択して、該画素群内の各画素についてのドット形成の有無を決定することにより、前記制御データを生成する手段である画像処理システム。
【請求項７】
前記分類番号付与手段、前記個数データ供給手段、および前記順序値記憶手段で用いられている前記ディザマトリックスが、ブルーノイズマスク特性を有するマトリックスである請求項６記載の画像処理システム。
【請求項８】
前記分類番号付与手段、前記個数データ供給手段、および前記順序値記憶手段で用いられている前記ディザマトリックスが、グリーンノイズマスク特性を有するマトリックスである請求項６記載の画像処理システム。
【請求項９】
請求項５記載の画像処理システムであって、
前記分類番号付与手段は、画素の大きさが前記画素群の大きさと一致するように前記画像データの解像度を変更し、解像度が変更された画素の各々に、前記画像中での位置に応じて前記分類番号を付与する手段であり、
前記画素群階調値決定手段は、前記解像度が変更された画素についての前記画像データの階調値を、前記画素群階調値として決定する手段である画像処理システム。
【請求項１０】
請求項３または請求項４記載の画像処理システムであって、
前記個数データ供給手段は、表現する階調値の異なる複数種類のドットを前記画素群に形成するときの、各種ドットの個数の組合せを表す前記個数データと、前記分類番号および画素群階調値の組合せとの対応関係を、前記第１の対応関係として記憶している手段であり、
前記制御データ生成手段は、前記順序値および前記個数データの組合せと、該順序値を有する画素に形成されるドット種類との対応関係を、前記第２の対応関係として記憶している手段である画像処理システム。
【請求項１１】
請求項３または請求項４記載の画像処理システムであって、
前記画素群階調値決定手段は、互いに所定の位置関係にある４個ないし１６個ずつの画素を前記画素群としてまとめて、前記画素群階調値を決定する手段である画像処理システム。
【請求項１２】
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記画像出力装置に供給する個数データ供給手段と
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成するドット形成手段と
を備えた画像出力装置。
【請求項１３】
請求項１２記載の画像出力装置であって、
前記画素群を前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に前記分類番号を付与する分類番号付与手段を備える画像出力装置。
【請求項１４】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えることによって生成する画像処理装置であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記第２の画像処理装置に供給する個数データ供給手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する制御データ生成手段と
を備える画像処理装置。
【請求項１５】
請求項１４記載の画像処理装置であって、
前記画素群を前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に前記分類番号を付与する分類番号付与手段を備える画像出力装置。
【請求項１６】
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する第１の工程と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する第２の工程と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく第３の工程と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定する第４の工程と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成する第５の工程と
を備える画像出力方法。
【請求項１７】
ドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像を表す画像データに所定の画像処理を加えることで生成する画像処理方法であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する工程（Ａ）と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する工程（Ｂ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく工程（Ｃ）と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する工程（Ｄ）と
を備える画像処理方法。
【請求項１８】
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する第１の機能と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく第３の機能と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定する第４の機能と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成する第５の機能と
を実現するプログラム。
【請求項１９】
ドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像を表す画像データに所定の画像処理を加えることで生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する機能（Ａ）と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する機能（Ｂ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく機能（Ｃ）と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する機能（Ｄ）と
を実現するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像データに基づいて画像を出力する技術に関し、詳しくは、画像データに所定の画像処理を施してドットを適切な密度で発生させることにより、画像を出力する技術に関する。
【背景技術】
【０００２】
印刷媒体や液晶画面といった各種の出力媒体上にドットを形成することで画像を出力する画像出力装置は、各種画像機器の出力装置として広く使用されている。これら画像出力装置では、画像は画素と呼ばれる小さな領域に細分された状態で扱われており、ドットはこれら画素に形成される。画素にドットを形成する場合、もちろん画素１つ１つについて見れば、ドットが形成されるか否かのいずれかの状態しか取り得ない。しかし、ある程度の広さを持った領域で見れば、形成するドットの密度に粗密を生じさせることが可能であり、ドットの形成密度を変えることによって多階調の画像を出力することが可能である。例えば、印刷用紙上に黒いインクのドットを形成する場合、ドットが密に形成されている領域は暗く見えるし、逆にドットがまばらに形成されている領域は明るく見える。また、液晶画面に輝点のドットを形成する場合、ドットが密に形成された領域は明るく見え、まばらに形成された領域は暗く見える。従って、ドットの形成密度を適切に制御してやれば、多階調の画像を出力することが可能となる。このように適切な形成密度が得られるようにドットの形成を制御するためのデータは、出力しようとする画像に所定の画像処理を施すことによって発生させる。
【０００３】
近年では、これら画像出力装置には、出力画像の高画質化や大画像化が要請されるようになってきた。高画質化の要請に対しては、画像をより細かな画素に分割することが効果的である。画素を小さくしてやれば、画素に形成されるドットが目立たなくなるので画質を向上させることができる。また、大画像化の要請に対しては、画素数の増加によって対応する。もちろん、個々の画素を大きくすることによっても出力画像を大きくすることはできるが、これでは画質の低下を招いてしまうので、大型化の要請に対しては画素数を増加させることが効果的である。
【０００４】
もっとも、画像を構成する画素数が増加すると画像処理に時間がかかってしまい、画像を迅速に出力することが困難となる。そこで、画像処理を迅速に実行可能とする技術が提案されている（特許文献１）。
【０００５】
【特許文献１】特開２００２−１８５７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、画像処理を迅速に行ったとしても、画像データの転送や、処理済みの画像データの転送に時間がかかってしまったり、あるいは転送された画像データの処理に時間がかかってしまったのでは、画像の出力を迅速化する効果にも自ずから限界がある。
【０００７】
また、近年では、デジタルカメラなどで撮影した画像のデータを、印刷装置などの画像出力装置に直接供給して直ちに画像を出力したいという要請も存在する。このような場合は、いわゆるパーソナルコンピュータ等のような高い処理能力を備えた画像処理装置を用いて画像処理を行うことはできない。従って、デジタルカメラなどの画像撮影装置あるいは画像出力装置のいずれか、若しくは両者で分担して実行可能なように、簡素な画像処理としておく必要がある。
【０００８】
この発明は従来技術における上述した課題を解決するためになされたものであり、十分な出力画質を維持したまま、画像データを迅速に処理可能であるとともに、画像処理のためにパーソナルコンピュータ等のような高い処理能力を有する機器を用いずとも実行可能な、簡素な画像処理技術の提供を目的とする。
【課題を解決するための手段】
【０００９】
上述した課題の少なくとも一部を解決するために、本発明の画像出力システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより出力媒体上に画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記画像出力装置に供給する個数データ供給手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを受け取った画素群内の各画素についてドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成するドット形成手段と
を備えていることを要旨とする。
【００１０】
また、上記の画像出力システムに対応する本発明の画像出力方法は、
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する第１の工程と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する第２の工程と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく第３の工程と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定する第４の工程と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成する第５の工程と
を備えていることを要旨とする。
【００１１】
かかる本発明の画像出力システムおよび画像出力方法においては、画像を複数の画素群に分割し、画素群内に形成されるドット個数を表す個数データを生成して、画像出力装置に供給する。画像出力装置は、供給された個数データに基づいて、画素群内の各画素についてドット形成の有無を決定した後、決定の結果に従って出力媒体上にドットを形成することによって画像を出力する。
【００１２】
詳細には後述するが、画像の全画素についてドット形成の有無を表すデータに比べれば、画素群毎にドットの個数を表すデータは遙かに小さなデータとすることができる。このため、画像出力装置に個数データを供給してやれば、迅速にデータを供給することが可能となり、延いては画像を迅速に出力することが可能となる。
【００１３】
また、個数データの生成に際しては、画素群の分類番号および画素群階調値の組合せと、個数データとの対応関係（第１の対応関係）を参照することによって個数データを生成する。対応関係を参照して個数データを生成する処理は極めて簡単な処理である。加えて、後ほど詳細に説明するように、画素群の画素群階調値は極めて容易に求めることができる。また、必要な場合は分類番号も極めて容易に決定することができるから、結局、個数データを生成する処理は極めて簡素な処理とすることができる。このため、個数データを迅速に生成することが可能となり、延いては画像出力装置に迅速に供給して、画像を速やかに出力することが可能となる。
【００１４】
更に、画像出力装置では、次のようにして、画素群内の各画素についてドット形成の有無を決定する。先ず、画素群内でドットが形成される順番を示す順序値を、画素群内の各画素について予め記憶しておく。そして、順序値および個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係（第２の対応関係）を参照することによって、個数データが供給された画素群内の各画素について、ドット形成の有無を決定する。このように対応関係を参照しながらドット形成の有無を決定してやれば、画素群内の各画素についてのドット形成の有無を、個数データから直ちに決定することができるので、極めて迅速に且つ簡便に決定することが可能であり、延いては画像を迅速に出力することが可能となる。
【００１５】
更に、個数データを生成する処理も、個数データから画素群内の各画素についてのドット形成有無を決定する処理も、このように極めて簡素な処理で実行することができれば、コンピュータなどのようには高度な処理能力を有さない機器においても、十分に実用的な速度で処理することが可能である。従って、例えば画像データを、コンピュータなどを介さずに直接、画像出力装置に供給し、画像データにこれらの画像処理を画像出力装置の内部で施して、適切に画像を出力することも可能となる。
【００１６】
また、画素群の分類番号は、各画素群を画像中での位置に応じて複数種類に分類することによって付与することとしても良い。こうすれば、画素群に予め分類番号を付与しておかずとも、必要に応じて適宜、分類番号を付与することができる。また、画像中での位置に応じて付与することで、分類番号を適切に付与することが可能となる。
【００１７】
このような観点からは、本発明を次のような画像出力装置として把握することも可能である。すなわち、上記の画像出力システム、あるいは画像出力方法に対応する本発明の画像出力装置は、
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記画像出力装置に供給する個数データ供給手段と
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成するドット形成手段と
を備えることを要旨とする。
【００１８】
かかる画像出力装置においては、画像を複数の画素群に分割し、第１の対応関係を参照することによって画素群毎に個数データを生成する。次いで、第２の対応関係を参照することによって、個数データから画素群内の各画素についてのドット形成の有無を決定する。こうして決定した結果に基づいて出力媒体上にドットを形成することによって画像を出力する。このように、これら対応関係を参照しながら画像データを変換してやれば、簡便に且つ迅速に画像を出力することが可能である。更に、コンピュータなどのようには高度な処理能力を有さない機器においても、十分に実用的な速度で画像を出力可能な画像出力装置を構成することが可能となる。
【００１９】
また、前述した課題の少なくとも一部を解決するために、本発明の画像処理システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す第１の画像処理装置と、出力媒体上にドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像処理の結果に基づいて生成する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記第２の画像処理装置に供給する個数データ供給手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを受け取った画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する制御データ生成手段と
を備えていることを要旨とする。
【００２０】
また、上記の画像処理システムに対応する本発明の画像処理方法は、
ドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像を表す画像データに所定の画像処理を加えることで生成する画像処理方法であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する工程（Ａ）と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する工程（Ｂ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく工程（Ｃ）と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する工程（Ｄ）と
を備えることを要旨とする。
【００２１】
かかる本発明の画像処理システムおよび画像処理方法においても、互いに隣接する画素を所定数ずつまとめて画素群を形成することで、画像を複数の画素群に分割し、画素群内に形成されるドット個数を表す個数データを生成する。次いで、画素群毎に生成した個数データに基づいて、画素群内の各画素についてドット形成の有無を決定することにより、制御データを生成する。
【００２２】
後述するように、画像の全画素についてドット形成の有無を表すデータに比べれば、画素群毎にドットの個数を表すデータは小さなデータであるため、データの取り扱いが容易となり、その分だけ簡便に且つ迅速に制御データを生成することが可能となる。
【００２３】
また、個数データを生成するに際しては、第１の対応関係、すなわち、画素群の分類番号および画素群階調値の組合せと、個数データとの対応関係を参照することによって生成しているため、迅速に且つ極めて簡単な処理で個数データを生成することができる。更に、個数データから制御データを生成するに際しても、第２の対応関係、すなわち、順序値および個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係を参照することによって生成しているため、迅速に且つ極めて簡単な処理によって、個数データから制御データを生成することができる。結局、画像データから制御データを簡便且つ迅速に生成することができ、延いては生成した制御データを用いることによって画像を迅速に出力することが可能となる。
【００２４】
更に、画像データから制御データを極めて簡単な処理で生成することができるので、コンピュータなどのように高度な処理能力を有さない機器においても、十分に実用的な速度で制御データを生成することが可能である。
【００２５】
このような観点からは、本発明を次のような画像処理装置として把握することも可能である。すなわち、上記の画像処理システム、あるいは画像処理方法に対応する本発明の画像処理装置は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えることによって生成する画像処理装置であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する画素群階調値決定手段と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成して前記第２の画像処理装置に供給する個数データ供給手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶している順序値記憶手段と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する制御データ生成手段と
を備えることを要旨とする。
【００２６】
かかる画像処理装置においては、画像を複数の画素群に分割した後、第１の対応関係を参照することによって画像データから画素群毎に個数データを生成し、次いで、第２の対応関係を参照することによって、画素群毎の個数データから制御データを生成する。このように、これら対応関係を参照しながら変換すれば、簡便に且つ迅速に制御データを生成することが可能である。更に、コンピュータなどのようには高度な処理能力を有さない機器においても、十分に実用的な速度で制御データを生成可能な画像処理装置を構成することが可能となる。
【００２７】
こうした画像処理システム、画像処理方法、あるいは画像処理装置においては、次のようにしても良い。先ず、画素群内でドットが形成される画素の序列を複数組記憶しておき、それぞれの画素の序列毎に、画素群内の各画素についての順序値を記憶しておく。そして、複数組の序列の中から画素群毎に１の序列を選択し、選択した序列に記憶されている順序値を用いて、画素群内の各画素についてのドット形成の有無を決定することにより、制御データを生成する。
【００２８】
画素群内の各画素についてのドット形成の有無は、その画素群の個数データと該画素群内の各画素の順序値とに基づいて決定される。ここで、複数組の序列の中から、画素群毎に１の序列を選択しながらドット形成の有無を決定してやれば、各画素の順序値は画素群毎に異なったものとなる。従って、複数の画素群に亘って、同じ個数データが続いた場合でも、順序値が異なっているために、これら画素群で同じ画素位置にドットが形成されることがない。このため、同じパターンでドットが形成された領域が目立ってしまい、画質が悪化することを確実に回避することが可能となる。
【００２９】
ここで、画素群の分類番号は、各画素群を画像中での位置に応じて複数種類に分類することによって付与することとしても良い。こうすれば、画素群に予め分類番号を付与しておかずとも、必要に応じて適宜、分類番号を付与することができる。また、画像中での位置に応じて付与することで、分類番号を適切に付与することが可能となる。
【００３０】
また、こうした画像処理システム、画像処理方法、あるいは画像処理装置においては、複数の閾値が二次元的に配列されたディザマトリックスを想定し、このディザマトリックスに基づいて設定された分類番号と個数データと順序値とを用いて、制御データを生成することとしてもよい。一例として、ある画素群に着目して説明する。先ず、画像にディザマトリックスを適用したときの、マトリックスに対する画素群の相対位置に基づいて、画素群の分類番号を付与してやる。次に、その画素群内では全画素が画素群階調値を有するものとして、ディザマトリックスを用いてディザ法を適用することにより、該画素群内に形成されるドットの個数を求める。こうして求めたドットの個数を表す個数データを、分類番号および画素群階調値の組合せと対応付けて、第１の対応関係として記憶しておく。更に、ディザマトリックスを画像に適用したときに、画素群に対応する領域に設定されている閾値の大きさに従って、その画素群内の各画素についての順序値を決定し、得られた順序値の組を複数組の画素の序列として記憶しておく。そして、画素群の個数データを生成したら、画像上で該画素群の位置に対応した１の序列を選択して、該序列に設定されている順序値を用いて各画素についてのドット形成の有無を判断することにより、制御データを生成する。
【００３１】
詳細には後述するが、このように分類番号と個数データと順序値とを、同じディザマトリックスに基づいて設定しておけば、ディザ法を用いて画素毎にドット形成の有無を判断した場合と全く同等の画質で画像を出力することが可能となる。特に、画素群としてまとめられる画素の画像データが同じ階調値を有している場合は、ディザ法を用いて画素毎にドット形成の有無を判断した場合と、個数データから各画素についてのドット形成の有無を決定した場合とでは、全く同じ画素位置にドットが形成されることになる。
【００３２】
ここで、ディザ法を用いた場合と全く同じ画素位置にドットが形成されることからも明らかなように、分類番号、個数データ、順序値を、ディザマトリックスを用いて設定しておくことで、ドットの発生状況を比較的自由に制御することが可能である。すなわち、ドットの発生状況は、画像データを画素群単位で処理しているにも関わらず画素群の大きさの影響はほとんど受けず、分類番号や順序値などを設定するために用いたディザマトリックスに大きく依存する。そして、特に、画素群としてまとめられる画素の画像データが同じ階調値を有している場合は、ドットの発生状況は、ディザマトリックスによって完全に決定されることになる。
【００３３】
こうした特性に鑑みて、分類番号、個数データ、順序値を設定するに際しては、いわゆるブルーノイズマスク特性を有するディザマトリックスに基づいて設定することとしても良い。ここで、本明細書における「ブルーノイズマスク特性を有するディザマトリックス」とは、次のようなマトリックスを言う。すなわち、ドットを不規則に発生させるとともに、設定されている閾値の空間周波数成分は、１周期が２画素以下の高周波数領域に最も大きな成分を有するディザマトリックスを言う。尚、明るい（明度の高い）画像など、特定の明度付近では規則的なパターンでドットが形成される場合があっても良い。
【００３４】
分類番号、個数データ、順序値を、このようなブルーノイズマスク特性を有するディザマトリックスに基づいて設定しておけば、ブルーノイズマスク特性が反映されたドット分布で画像を出力することができる。すなわち、個数データの生成とドット形成の有無とを画素群単位で行っているにも関わらず、ドットの分布には画素群に相当する周期的なパターンが発生することがない。それでいて、画素群単位で個数データを扱うことにより、画像を迅速に出力することが可能であり、従って、高画質な画像を迅速に出力することができる。
【００３５】
あるいは、分類番号、個数データ、順序値を設定するに際しては、いわゆるグリーンノイズマスク特性を有するディザマトリックスに基づいて設定することとしても良い。ここで、本明細書における「グリーンノイズマスク特性を有するディザマトリックス」とは、次のようなマトリックスを言う。すなわち、ドットを不規則に発生させるとともに、設定されている閾値の空間周波数成分は、１周期が２画素から十数画素の中間周波数領域に最も大きな成分を有するディザマトリックスを言う。尚、ここでも、特定の明度付近であれば規則的なパターンでドットが形成される場合があっても良い。
【００３６】
いわゆるレーザープリンタなどのように、１画素程度の微細なドットを安定して形成することが苦手な画像出力機器では、こうしたグリーンノイズマスク特性を有するディザマトリックスを用いることにより、孤立したドットの発生を抑制することができる。その結果、安定した画質の画像を迅速に出力することが可能となる。
【００３７】
こうした画像処理システム、画像処理方法、あるいは画像処理装置においては、画像データの解像度を次のような解像度に調整しておくことにより、明示的には所定数の画素をまとめて画素群を形成することなく、個数データを生成することとしてもよい。すなわち、変換後の画素の大きさが画素群の大きさと一致するような解像度に、画像データを変更する。次いで、解像度が調整された画素の１つ１つを画素群として取り扱うことで分類番号を付与するとともに、各画素についての画像データの階調値を画素群階調値として取り扱うことにより、１つ１つの画素について個数データを生成する。こうして明示的には複数の画素を画素群にまとめることなく、画素群の個数データを生成する。
【００３８】
画質上の要請から、画像データの解像度よりも高い解像度で画像を印刷することがしばしば行われる。このような場合に、上述した方法で個数データを生成してやれば、画像データを、印刷しようとする解像度よりも低い解像度に変換して個数データを生成することができる。画像データは一般に解像度が高くなるほどデータ量が多くなって取り扱いが困難となることから、より低い解像度のままで個数データを生成することで、データの取り扱いが容易になるとともに、個数データを生成する処理も迅速化することが可能となる。
【００３９】
また、上述した画像処理システム、画像処理方法、あるいは画像処理装置においては、画素群内に形成されるドット個数を表す個数データとして、表現する階調値が互いに異なる複数種類のドットについてのドット個数の組合せを表すデータを生成することとしてもよい。ここで、表現する階調値が互いに異なる複数種類のドットとは、例えば、ドットの大きさが異なる複数種類のドットとすることもできるし、あるいは、ドットの濃度が異なる複数種類のドットとすることもできる。更には、微細なドットを所定の密度で形成することで擬似的に１つのドットを形成している場合には、微細なドットの密度が異なった複数種類のドットとすることも可能である。
【００４０】
このような各種ドットの個数の組合せを表す個数データと、分類番号および画素群階調値の組合せとの対応関係を示す第１の対応関係を参照することによって、画素群毎の個数データを生成する。そして、順序値および個数データの組合せと、該順序値を有する画素に形成されるドット種類との対応関係を示す第２の対応関係を参照することによって、画素群毎に生成された個数データから、各画素について各種ドットの形成の有無を決定することにより、制御データを生成する。
【００４１】
第１の対応関係を参照することによって個数データを生成する場合、個数データが複数種類のドットについてのドット個数の組合せを示すデータであっても、単にドット個数を表すデータである場合と同様に、極めて容易に個数データを生成することができる。通常、画素毎にドット形成の有無を判断する場合は、ドットの種類が多くなると、それに連れて判断する処理もいきおい複雑なものとなり勝ちであるから、第１の対応関係を参照して個数データを生成することで、ドットの種類が多くなるほど、相対的に迅速に生成することが可能となるので好ましい。また、画素毎にドット形成の有無を決定する処理も、ドットの種類が多くなるほど複雑なものとなりがちであるが、第２の対応関係を参照しながら各種ドットについての形成の有無を決定してやれば、ドットの種類が多くなっても簡便に決定することができる。すなわち、相対的には迅速にドット形成の有無を決定することができる。結局、ドットの種類が多くなるほど、画像データから制御データを迅速に生成することが可能となるので好ましい。
【００４２】
更に、上述した画像処理システム、画像処理方法、あるいは画像処理装置においては、互いに所定の位置関係にある４個ないし１６個ずつの画素を画素群としてまとめて、画素群階調値を決定することとしても良い。
【００４３】
画素群としてまとめる画素数が少なくなるほど、画素群の個数が増加するので、第１の対応関係は複雑なものとなる。従って、この観点からは、画素群にまとめる画素数は多い方が好ましい。一方、画素群に含まれる画素の階調値は画素群階調値にまとめられてしまうから、画素群にまとめる画素数があまりに多くなったのでは画質の悪化を引き起こすおそれが生じる。こうした点を踏まえると、経験上、最も良好な結果を得ることができるのは、８画素から１６画素ずつの画素を画素群としてまとめた場合であるが、４画素から１６画素ずつを画素群としてまとめた場合でも十分な結果を得ることができる。また、画素群にまとめられる複数の画素の位置関係は、例えば、主走査方向に４画素ずつ、副走査方向に２画素ずつといったように、互いに矩形形状を成すような位置関係としておけば、経験上、良好な画質を得ることが可能である。
【００４４】
更に本発明は、上述した画像出力方法あるいは画像処理方法を実現するためのプログラムをコンピュータに読み込ませ、コンピュータを用いて実現することも可能である。従って、本発明は次のようなプログラム、あるいは該プログラムを記録した記録媒体としての態様も含んでいる。すなわち、上述した画像出力方法に対応する本発明のプログラムは、
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する第１の機能と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく第３の機能と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定する第４の機能と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成する第５の機能と
を実現することを要旨とする。
【００４５】
また、上記のプログラムに対応する本発明の記録媒体は、
画像データに応じて出力媒体上にドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する第１の機能と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく第３の機能と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照することにより、前記個数データを生成した画素群内の各画素について、ドット形成の有無を決定する第４の機能と、
前記決定したドット形成の有無に従って前記出力媒体上にドットを形成する第５の機能と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００４６】
更に、上述した画像処理方法に対応する本発明のプログラムは、
ドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像を表す画像データに所定の画像処理を加えることで生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する機能（Ａ）と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する機能（Ｂ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく機能（Ｃ）と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する機能（Ｄ）と
を実現することを要旨とする。
【００４７】
また、上記のプログラムに対応する本発明の記録媒体は、
ドットを形成して画像を出力する際に該ドットの形成を制御するために用いられる制御データを、該画像を表す画像データに所定の画像処理を加えることで生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する複数の画素が所定個数ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を、該画素群内の各画素の画像データに基づいて決定する機能（Ａ）と、
前記画素群毎に付与された分類番号および該画素群の画素群階調値の組合せと、前記画素群に形成するドット個数を表す個数データとの対応関係たる第１の対応関係を参照することにより、前記各々の画素群についての個数データを生成する機能（Ｂ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を記憶しておく機能（Ｃ）と、
前記順序値および前記個数データの組合せと、該順序値を有する画素におけるドット形成の有無との対応関係たる第２の対応関係を参照しながら、前記個数データを生成した画素群内の各画素についてドット形成の有無を決定することにより、前記制御データを生成する機能（Ｄ）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００４８】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現させれば、十分な出力画質を維持したまま、画像データを迅速に処理可能であるとともに、画像処理のためにパーソナルコンピュータ等のような高い処理能力を有する機器を用いずとも実行可能な、簡素な画像処理を実現することが可能となる。
【発明を実施するための最良の形態】
【００４９】
以下では、本発明の作用・効果をより明確に説明するために、本発明の実施の形態を、次のような順序に従って説明する。
Ａ．発明の概要：
Ｂ．第１実施例：
Ｂ−１．装置構成：
Ｂ−２．第１実施例の画像印刷処理の概要：
Ｂ−３．個数データから画素位置を決定可能な原理：
Ｂ−４．第１実施例の個数データ生成処理：
Ｂ−５．分類番号の決定方法：
Ｂ−６．第１実施例のドット形成有無決定処理：
Ｂ−７．第１の変形例：
Ｂ−８．第２の変形例：
Ｂ−９．メモリ使用量：
Ｃ．第２実施例：
Ｃ−１．第２実施例の画像印刷処理：
Ｃ−２．第２実施例の個数データ生成処理：
Ｃ−２−１．ディザ法を用いた大中小ドットの形成個数の決定処理：
Ｃ−２−２．大中小ドットの形成個数のコード化処理：
Ｃ−２−３．変換テーブルを利用した第２実施例の個数データ生成処理：
Ｃ−３．第２実施例のドット形成有無決定処理：
Ｃ−３−１．変換テーブルを参照せずにドット形成有無を決定する方法：
Ｃ−３−２．変換テーブルを参照するドット形成有無決定処理：
Ｃ−４．メモリ使用量：
【００５０】
Ａ．発明の概要  ：
実施例についての詳細な説明に入る前に、図１を参照しながら、本発明の概要について説明しておく。図１は、印刷システムを例にとって、本発明の概要を説明するための説明図である。本印刷システムは、画像処理装置としてのコンピュータ１０と、画像出力装置としてのプリンタ２０等から構成されており、コンピュータ１０に所定のプログラムがロードされて実行されると、コンピュータ１０およびプリンタ２０などが全体として、一体の画像出力システムとして機能する。プリンタ２０は、印刷媒体上にドットを形成することによって画像を印刷する。コンピュータ１０は、印刷しようとする画像の画像データに所定の画像処理を施すことによって、プリンタ２０が画素毎にドットの形成を制御するためのデータを生成して、該プリンタ２０に供給する。
【００５１】
一般的な印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータで所定の画像処理を施すことにより、画像データを、画素毎にドット形成の有無を表すデータに変換する。次いで、得られたデータをプリンタに供給し、プリンタでは供給されたデータに従ってドットを形成することによって画像を印刷している。ここで、印刷しようとする画像の画素数が多くなると、それに伴って、画像処理に要する時間が増加し、画像を迅速に印刷することが困難となる。また、画素数が多くなるにつれて、画素毎にドット形成の有無を表すデータのデータ量が増加するので、コンピュータからプリンタにデータを出力するために要する時間が長くなるとともに、プリンタ側で受け取ったデータを処理するための時間も長くなり、それだけ印刷に要する時間が増加してしまう。
【００５２】
こうした点に鑑みて、図１に例示した印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータ１０では、画像を構成する画素を互いに隣接した所定個数ずつ画素群としてまとめることで、画像を複数の画素群に分割する。そして、各画素群について、画素群内に形成するドット個数を表す個数データを生成してプリンタ２０に供給する。プリンタ２０に供給された個数データは、ドット形成有無決定モジュールによって処理されることにより、画素群内の各画素についてドット形成の有無を表すデータに変換される。次いで、各画素について決定されたドット形成の有無に従って、ドット形成モジュールが印刷媒体上にドットを形成することによって画像が印刷される。
【００５３】
ここで、画素毎にドット形成の有無を表すデータに比べれば、画素群毎の個数データは遙かに小さなデータ量とすることができる。従って、コンピュータ１０から画素毎にドット形成の有無を表したデータをプリンタ２０に供給する代わりに、画素毎の個数データを供給してやれば、極めて迅速にデータを転送することが可能となる。
【００５４】
また、画素群の個数データは、コンピュータ１０内で次のようにして生成される。先ず、画素群階調値決定モジュールにおいて、画像を分割する複数の画素群について画素群階調値が決定される。画素群階調値とは、画素群を代表する階調値であり、該画素群内に含まれる各画素の画像データに基づいて決定される。また、第１対応関係記憶モジュールには、画素群に付与された分類番号と画素群階調値との組合せと、該組合せを有する画素群の個数データとの対応関係が、第１の対応関係として記憶されている。ここで画素群の分類番号は、各画素群を画像中での位置に応じて複数種類の分類することによって設定することもできるし、また、画像がいつも同じように分割される場合などには、各画素群毎に予め適切な分類番号を付与しておくこともできる。更に、簡便には、乱数などを用いてランダムに分類番号を付与することも可能である。そして、個数データ供給モジュールでは、このような第１の対応関係を参照しながら、各画素群の分類番号と画素群階調値とに基づいて個数データを画素群毎に決定した後、プリンタ２０に供給する。
【００５５】
詳細には後述するが、画素群の画素群階調値は容易に求めることができる。また、画素群毎に分類番号を付与する場合も各画素群の分類番号を容易に決定して付与することが可能である。更に、記憶されている第１の対応関係を参照してやれば、分類番号および画素群階調値から個数データも容易に求めることができる。このことから、図１に例示した印刷システムでは、画素群毎の個数データを極めて迅速に生成することができ、生成した個数データを極めて迅速にプリンタ２０に供給することができる。
【００５６】
また、プリンタ２０では、供給された個数データに基づいて、次のようにして、画素群内の各画素についてのドット形成の有無を決定する。先ず、画素群内の各画素について、画素群内でドットが形成される順番を示す順序値を、順序値記憶モジュールに記憶しておく。また、順序値および個数データの組合せと、該順序値を有する画素についてのドット形成の有無との対応関係を、第２の対応関係として第２対応関係記憶モジュールに記憶しておく。そして、画素群毎に個数データを受け取ると、画素群内の各画素についての順序値を取得して、個数データと順序値との組合せ毎に第２の対応関係を参照することにより、各画素についてのドット形成の有無を決定する。このように第２の対応関係を参照することによってドット形成の有無を決定してやれば、画素群内の各画素についてのドット形成の有無を、個数データに基づいて迅速に決定することが可能である。また、後述する条件が満足されていれば、ドット形成の有無を個数データに基づいて適切に決定することが可能であり、画質が低下することはない。
【００５７】
このように、図１に示した印刷システムでは、コンピュータ１０からプリンタ２０に個数データを供給しているために、たとえ画素数の多い画像であっても迅速にデータを供給することができる。また、個数データは、記憶されている第１の対応関係を参照しながら生成されるため、迅速に且つ簡便に生成することが可能である。更に、プリンタ２０では、受け取った個数データを、第２の対応関係を参照しながら画素毎にドット形成の有無を表すデータに変換しているために、迅速に且つ簡便に個数データを変換することが可能である。従って、例え画素数の多い画像であっても迅速に印刷することが可能となる。加えて、コンピュータ１０などの高度な処理能力を有さない機器を用いても十分に実行可能な、簡素な印刷システムを構成することが可能となる。以下では、こうした印刷システムを例にとって、本発明の各種実施例について詳細に説明する。
【００５８】
Ｂ．第１実施例  ：
Ｂ−１．装置構成  ：
図２は、本実施例の画像処理装置としてのコンピュータ１００の構成を示す説明図である。コンピュータ１００は、ＣＰＵ１０２を中心に、ＲＯＭ１０４やＲＡＭ１０６などを、バス１１６で互いに接続することによって構成された周知のコンピュータである。
【００５９】
コンピュータ１００には、フレキシブルディスク１２４やコンパクトディスク１２６等のデータを読み込むためのディスクコントローラＤＤＣ１０９や、周辺機器とデータの授受を行うための周辺機器インターフェースＰＩＦ１０８、ＣＲＴ１１４を駆動するためのビデオインターフェースＶＩＦ１１２等が接続されている。ＰＩＦ１０８には、後述するカラープリンタ２００や、ハードディスク１１８等が接続されている。また、デジタルカメラ１２０やカラースキャナ１２２等をＰＩＦ１０８に接続すれば、デジタルカメラ１２０やカラースキャナ１２２で取り込んだ画像を印刷することも可能である。また、ネットワークインターフェースカードＮＩＣ１１０を装着すれば、コンピュータ１００を通信回線３００に接続して、通信回線に接続された記憶装置３１０に記憶されているデータを取得することもできる。
【００６０】
図３は、本実施例のカラープリンタ２００の概略構成を示す説明図である。カラープリンタ２００はシアン，マゼンタ，イエロ，ブラックの４色インクのドットを形成可能なインクジェットプリンタである。もちろん、これら４色のインクに加えて、染料または顔料濃度の低いシアン（淡シアン）インクと、染料または顔料濃度の低いマゼンタ（淡マゼンタ）インクとを含めた合計６色のインクドットを形成可能なインクジェットプリンタを用いることもできる。尚、以下では場合によって、シアンインク，マゼンタインク，イエロインク，ブラックインク，淡シアンインク，淡マゼンタインクのそれぞれを、Ｃインク，Ｍインク，Ｙインク，Ｋインク，ＬＣインク，ＬＭインクと略称することがあるものとする。
【００６１】
カラープリンタ２００は、図示するように、キャリッジ２４０に搭載された印字ヘッド２４１を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ２４０をキャリッジモータ２３０によってプラテン２３６の軸方向に往復動させる機構と、紙送りモータ２３５によって印刷用紙Ｐを搬送する機構と、ドットの形成やキャリッジ２４０の移動および印刷用紙の搬送を制御する制御回路２６０などから構成されている。
【００６２】
キャリッジ２４０には、Ｋインクを収納するインクカートリッジ２４２と、Ｃインク，Ｍインク，Ｙインクの各種インクを収納するインクカートリッジ２４３とが装着されている。インクカートリッジ２４２，２４３をキャリッジ２４０に装着すると、カートリッジ内の各インクは図示しない導入管を通じて、印字ヘッド２４１の下面に設けられた各色毎のインク吐出用ヘッド２４４ないし２４７に供給される。
【００６３】
図４は、インク吐出用ヘッド２４４ないし２４７におけるインクジェットノズルＮｚの配列を示す説明図である。図示するように、インク吐出用ヘッドの底面には、Ｃ，Ｍ，Ｙ，Ｋの各色のインクを吐出する４組のノズル列が形成されており、１組のノズル列あたり４８個のノズルＮｚが、一定のノズルピッチｋで配列されている。
【００６４】
制御回路２６０は、ＣＰＵや、ＲＯＭ、ＲＡＭ、ＰＩＦ（周辺機器インターフェース）等がバスで相互に接続されて構成されている。制御回路２６０は、キャリッジモータ２３０および紙送りモータ２３５の動作を制御することによってキャリッジ２４０の主走査動作および副走査動作を制御するとともに、コンピュータ１００から供給される印刷データに基づいて、各ノズルから適切なタイミングでインク滴を吐出する制御を行う。こうして、制御回路２６０の制御の下、印刷媒体上の適切な位置に各色のインクドットを形成することによって、カラープリンタ２００はカラー画像を印刷することができる。
【００６５】
また、インク滴を吐出するためにノズルに供給される駆動信号波形を制御してやれば、吐出されるインク滴の大きさを変更して、大きさの異なるインクドットを形成することもできる。このようにしてインクドットの大きさを制御することができれば、印刷しようとする画像の領域に応じて異なる大きさのインクドットを使い分けてやることで、より高画質の画像を印刷することも可能となる。
【００６６】
尚、各色のインク吐出ヘッドからインク滴を吐出する方法には、種々の方法を適用することができる。すなわち、ピエゾ素子を用いてインクを吐出する方式や、インク通路に配置したヒータでインク通路内に泡（バブル）を発生させてインク滴を吐出する方法などを用いることができる。また、インクを吐出する代わりに、熱転写などの現象を利用して印刷用紙上にインクドットを形成する方式や、静電気を利用して各色のトナー粉を印刷媒体上に付着させる方式のプリンタを使用することも可能である。
【００６７】
以上のようなハードウェア構成を有するカラープリンタ２００は、キャリッジモータ２３０を駆動することによって、各色のインク吐出用ヘッド２４４ないし２４７を印刷用紙Ｐに対して主走査方向に移動させ、また紙送りモータ２３５を駆動することによって、印刷用紙Ｐを副走査方向に移動させる。制御回路２６０は、キャリッジ２４０の主走査および副走査の動きに同期させながら、適切なタイミングでノズルを駆動してインク滴を吐出することによって、カラープリンタ２００は印刷用紙上にカラー画像を印刷している。
【００６８】
尚、カラープリンタ２００にも、制御回路２６０内にはＣＰＵ，ＲＡＭ，ＲＯＭなどが搭載されていることから、コンピュータ１００が行う処理をカラープリンタ２００内で実施することも可能である。このような場合は、デジタルカメラ１２０などで撮影した画像の画像データをカラープリンタ２００に直接供給して、制御回路２６０内で必要な画像処理を実施することにより、カラープリンタ２００から直接画像を印刷することも可能となる。
【００６９】
Ｂ−２．第１実施例の画像印刷処理の概要  ：
以下では、上記のようなコンピュータ１００およびカラープリンタ２００が、画像を印刷するために、それぞれの内部で行われる画像処理（画像印刷処理）について説明する。ここでは、理解の便宜を図るため、初めに画像印刷処理の全体像について簡単に説明し、次に、こうした画像印刷処理が可能である原理について説明する。そして最後に、それぞれの処理の詳細な内容について説明する。
【００７０】
尚、以下では、画像印刷処理の前半部分はコンピュータ１００で実施され、後半部分はカラープリンタ２００で実施されるものとして説明するが、これらの処理をカラープリンタ２００の内部で実施したり、あるいはデジタルカメラ１２０等の画像データを生成する機器の内部で実施することも可能である。もちろん、画像印刷処理の前半部分の処理をデジタルカメラ１２０などで実施して、後半部分の処理をカラープリンタ２００で実施することとしても良い。すなわち、本実施例の画像印刷処理によれば、後ほど詳細に説明するように、前半部分の処理および後半部分の処理をたいへん簡素なものとすることができる。このため、カラープリンタ２００やデジタルカメラ１２０などのように、コンピュータ１００のようには高い処理能力を有していない機器を用いた場合でも、画像印刷処理を迅速に実施することが可能であり、従って、コンピュータ１００を使用せずとも十分に実用的な印刷システムを構成することができる。
【００７１】
図５は、第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。以下では、図５を参照しながら、画像印刷処理の全体像について簡単に説明する。第１実施例の画像印刷処理を開始すると、先ず初めに、コンピュータ１００が画像データの読み込みを開始する（ステップＳ１００）。ここでは、画像データはＲＧＢカラー画像データであるものとして説明するが、カラー画像データに限らず、モノクロ画像データについても同様に適用することができる。また、カラープリンタに限らず単色プリンタについても同様に適用することが可能である。
【００７２】
カラー画像データの読み込みに続いて、色変換処理を行う（ステップＳ１０２）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組合せによって表現されているＲＧＢカラー画像データを、印刷のために使用されるインク各色についての階調値の組合せによって表現された画像データに変換する処理である。前述したように、カラープリンタ２００はＣ，Ｍ，Ｙ，Ｋの４色のインクを用いて画像を印刷している。そこで、第１実施例の色変換処理ではＲＧＢ各色によって表現された画像データを、Ｃ，Ｍ，Ｙ，Ｋの各色の階調値によって表現されたデータに変換する。色変換処理は、色変換テーブル（ＬＵＴ）と呼ばれる３次元の数表を参照することで行う。ＬＵＴには、ＲＧＢカラー画像データに対して、色変換によって得られるＣ，Ｍ，Ｙ，Ｋ各色の階調値が予め記憶されている。ステップＳ１０２の処理では、このＬＵＴを参照することにより、ＲＧＢカラー画像データをＣ，Ｍ，Ｙ，Ｋ各色の画像データに迅速に色変換することが可能となっている。
【００７３】
色変換処理を終了すると、解像度変換処理を開始する（ステップＳ１０４）。解像度変換処理とは、画像データの解像度を、プリンタ２００が画像を印刷する解像度（印刷解像度）に変換する処理である。画像データの解像度が印刷解像度よりも低い場合は、補間演算を行って画素間に新たな画像データを生成し、逆に画像データの解像度が印刷解像度よりも高い場合には、一定の割合でデータを間引くことによって、画像データの解像度を印刷解像度に一致させる処理を行う。
【００７４】
以上のようにして解像度を印刷解像度に変換したら、コンピュータ１００は、個数データ生成処理を開始する（ステップＳ１０６）。個数データ生成処理の詳細な内容は後ほど詳しく説明することとして、ここでは概要のみを説明する。個数データ生成処理では、隣接する画素を所定個数ずつ画素群としてまとめることにより、１つ画像を複数の画素群に分割する。そして、それぞれの画素群の中で形成すべきドットの個数を表すデータ、すなわち個数データを画素群毎に決定する。一般に、ある画素にドットが形成されるか否かは、その画素の画像データに依存して決まるから、画素群内に形成されるドットの個数を表す個数データについても、画素群についての画像データに基づいて決定することができる。こうして各画素群について決定した個数データを、カラープリンタ２００に向かって出力する。個数データ生成処理では、このようにして、各画素についての画像データに基づいて個数データを画素群毎に生成した後、カラープリンタ２００に供給する処理を行う。
【００７５】
カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵは、コンピュータ１００から供給された個数データを受け取ると、ドット形成有無決定処理を開始する（ステップＳ１０８）。詳細な処理内容については後述するが、ドット形成有無決定処理では大まかには次のような処理を行う。上述したように、コンピュータ１００から供給される個数データは、画素群に形成すべきドットの個数を表すデータであり、その個数のドットを画素群内のいずれの画素に形成するかについては未確定な状態となっている。そこで、画像を印刷するに先立って、画素群内の各画素についてドット形成の有無を予め決定しておく必要がある。ドット形成有無の決定に際しては、画素群内の各画素についてドットが形成される順番を示す順序値を記憶しておき、各画素の順序値と個数データとに基づいてドット形成の有無を決定することで、迅速に決定することが可能となっている。ドット形成有無を決定する処理の詳細については後述する。
【００７６】
以上のようにして、画素群内の各画素についてドット形成の有無を決定したら、決定したドット形成の有無に従って、出力媒体上にドットを形成する処理を行う（ステップＳ１１０）。すなわち、図３を用いて説明したように、キャリッジ２４０の主走査および副走査を繰り返しながらインク吐出用ヘッドを駆動してインク滴を吐出することにより、印刷用紙上にインクのドットを形成する。こうしてドットを形成することにより、画像データに対応した画像が印刷されることになる。
【００７７】
このように、第１実施例の画像印刷処理では、コンピュータ１００からカラープリンタ２００に向かって、画素群に形成すべきドット個数のデータのみを供給しており、画素群内でドットが形成される画素位置についてのデータまでは供給していない。画像を構成する画素毎にドット形成の有無を表現することに比べれば、複数の画素をまとめた画素群に形成するドットの個数は遙かに少ないデータ量で表現することができることから、このような方法を採用することで、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを供給することが可能となる。
【００７８】
例えば、１つの画素群に８つの画素がまとめられており、形成可能なドットは１種類であるとする。この場合、各画素はドットが形成されるか否かのいずれかの状態しか取り得ないから、画素あたり１ビットのデータ長があれば表現することができる。ここでは画素群には８つの画素が含まれているとしているから、画素群内の全画素についてドット形成の有無を表現しようとすると、８ビットのデータ長が必要となる。一方、画素群内に形成されるドットの個数は、０個〜８個のいずれかの９通りしか取り得ない。９通りであれば４ビットあれば表現することができるから、画素群に形成するドットの個数は４ビットのデータ長で表現可能となる。このように、画素毎にドット形成の有無を表すデータに比べて、画素群内に形成されるドット個数は遙かに少ないデータ量で表現することができるので、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを供給することが可能となるのである。
【００７９】
加えて、詳細には後述するが、ドットを形成する画素位置を適切に決定してやれば、ドット個数のデータのみを供給した場合でも、画質が悪化することはない。特に、所定の条件下では、画素毎にドット形成の有無を表すデータを供給した場合と全く同じ結果を得ることが可能である。
【００８０】
更に、後述するアルゴリズムを用いれば、個数データを生成する処理や、個数データから各画素についてのドット形成の有無を決定する処理は、極めて簡素な処理によって実現することができ、しかも極めて迅速に実行することが可能である。このため、コンピュータ１００のような高度な処理能力を有する画像処理装置を用いずとも、例えばデジタルカメラ１２０やカラープリンタ２００などの内部で実行することも可能である。こうした場合には、デジタルカメラ１２０で撮影した画像データを直接カラープリンタ２００に供給して、高画質なカラー画像を印刷することも可能となる。
【００８１】
Ｂ−３．個数データから画素位置を決定可能な原理  ：
以下では、上述した方法を採用した場合、すなわち、コンピュータ１００からは画素群に形成するドット個数のデータを供給し、このドット個数のデータに基づいて、画素毎にドット形成の有無をカラープリンタ２００側で判断した場合でも、画質を悪化させることなく画像を印刷することが可能な原理について説明する。
【００８２】
説明の都合上、先ず初めに、ディザ法について説明する。ディザ法とは、画像データを画素毎にドット形成の有無を表すデータに変換するために用いられる代表的な手法である。この手法では、ディザマトリックスと呼ばれるマトリックスに閾値を設定しておき、画像データの階調値とディザマトリックスに設定されている閾値とを画素毎に比較して、画像データの階調値の方が大きい画素についてはドットを形成すると判断し、そうでない画素についてはドットを形成しないと判断する。このような判断を画像中の全画素について行えば、画像データを画素毎にドット形成の有無を表すデータに変換することができる。
【００８３】
図６は、ディザマトリックスの一部を概念的に例示した説明図である。図示したマトリックスには、横方向（主走査方向）に１２８画素、縦方向（副走査方向）に６４画素、合計８１９２個の画素に、階調値１〜２５５の範囲から万遍なく選択された閾値がランダムに記憶されている。ここで、閾値の階調値が１〜２５５の範囲から選択されているのは、本実施例では、画像データが階調値０〜２５５の値を取り得る１バイトデータとしていることに加えて、画像データの階調値と閾値とが等しい場合には、その画素にはドットを形成するものと判断していることによるものである。
【００８４】
すなわち、ドットが形成されるのは画像データの階調値が閾値よりも大きい画素に限る（すなわち階調値と閾値が等しい画素にはドットは形成しない）とした場合、画像データの取り得る最大階調値と同じ値の閾値を有する画素には、決してドットが形成されることはない。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最大階調値を除いた範囲とする。逆に、画像データの階調値と閾値が等しい画素にもドットを形成するとした場合、画像データの取り得る最小階調値と同じ値の閾値を有する画素には、常にドットが形成されてしまうことになる。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最小階調値を除いた範囲とする。本実施例では、画像データの取り得る階調値が０〜２５５であり、画像データと閾値が等しい画素にはドットを形成するとしていることから、閾値の取り得る範囲を１〜２５５としておくのである。尚、ディザマトリックスの大きさは、図６に例示したような大きさに限られるものではなく、縦と横の画素数が同じマトリックスも含めて種々の大きさとすることができる。
【００８５】
図７は、ディザマトリックスを参照しながら、各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成の有無を判断するに際しては、先ず、判断しようとする画素を選択し、この画素についての画像データの階調値と、ディザマトリックス中で対応する位置に記憶されている閾値と比較する。図７中に示した細い破線の矢印は、画像データの階調値と、ディザマトリックスに記憶されている閾値とを、画素毎に比較していることを模式的に表したものである。例えば、画像データの左上隅の画素については、画像データの階調値は９７であり、ディザマトリックスの閾値は１であるから、この画素にはドットを形成すると判断する。図７中に実線で示した矢印は、この画素にはドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は９７、ディザマトリックスの閾値は１７７であり、閾値の方が大きいので、この画素についてはドットを形成しないと判断する。ディザ法では、こうしてディザマトリックスを参照しながら、画素毎にドットを形成するか否かを判断することで、画像データを画素毎にドット形成の有無を表すデータに変換する。
【００８６】
図８は、ディザ法を用いて画像データをドット形成の有無を表すデータに変換している様子を示した説明図である。図８（ａ）は、画像データの一部を拡大して示したものであり、図中の小さな矩形は画素を、そして、それぞれの矩形の中に表示された数値は画像データの階調値を表している。図示されているように、画像データは、隣接する画素間では近似する（若しくは同一の）階調値が割り当てられる傾向がある。こうした傾向は、高画質化の要請から画像データの解像度は高くなる傾向にあるが、隣接する画素間で近似若しくは同一の階調値が割り当てられる傾向は、画像データの解像度が高くなるほど顕著となっている。
【００８７】
図８（ｂ）は、ディザマトリックスの対応する位置に閾値が設定されている様子を示している。図８（ａ）に示した画像データの階調値と、図８（ｂ）に示したディザマトリックスの閾値とを画素毎に比較することによって、ドット形成の有無を判断する。図８（ｃ）は、こうして画素毎にドット形成の有無を判断した結果を示しており、図中で斜線を付した画素がドットを形成すると判断された画素である。
【００８８】
ここで、隣接する画素を所定数ずつ画素群としてまとめ、画素群内でドットを形成すると判断された画素の個数を数えることを考える。一例として、主走査方向（図８中では横方向）に４画素分、副走査方向（図８中では縦方向）に２画素分の、合計８画素ずつを画素群としてまとめるものとする。図８（ｄ）は、こうしてまとめられたそれぞれの画素群について、ドットを形成すると判断された画素を数えることによって得られたドット個数を示している。第１実施例の画像印刷処理において、コンピュータ１００からカラープリンタ２００に供給されるのは、このような画素群毎の個数のデータである。個数データには、ドットを形成する画素位置に関する情報は含まれていないが、次のようにすれば、個数データからドットを形成する画素位置の情報を復元して、画素毎にドット形成の有無を表すデータを生成することができる。
【００８９】
図９は、個数のデータから、画素毎にドット形成の有無を表すデータを生成する様子を示した説明図である。図９（ａ）は、図８で画素群毎に形成するドットの個数を数えて得られた値を表している。また、図９（ｂ）は、図８で画素毎にドット形成の有無を判断するために参照したディザマトリックスを示している。前述したようにディザ法では、画像データの階調値と、ディザマトリックスの対応する画素位置に設定された閾値とを比較して、画像データの階調値の方が大きければ、その画素にはドットを形成すると判断しており、ディザマトリックスの閾値が小さくなるほどドットが形成され易くなる。このことから、ディザマトリックスはドットが形成される画素の序列を表していると考えることができる。
【００９０】
ディザマトリックスの有するこうした性質に着目すれば、画素群内に形成されるドットの個数から、ドットが形成される画素位置を決定することができる。例えば、図９（ａ）に示した一番左上隅の画素群について説明すると、この画素群に形成されるドット個数は３である。また、図９（ｂ）に示したディザマトリックスを参照すれば、この画素群内では、左上隅にある画素位置すなわち閾値「１」が設定されている画素位置が最もドットが形成され易い画素であると言える。従って、この画素群内で３つ形成されるドットの中の１つは、左上隅の画素に形成されているものと考えることができる。同様にして、残りの２つのドットは、この画素群内で２番目にドットが形成され易い画素（すなわち図９（ｂ）のディザマトリックスで閾値「４２」が設定されている画素）と、３番目にドットが形成され易い画素（すなわち閾値「５８」が設定されている画素）とに形成されるものと考えることができる。
【００９１】
もちろん、ドット形成の有無は、ディザマトリックスに設定された閾値だけでなく、画像データの階調値によっても影響されるから、画像データの階調値が極端に大きければ、より小さな閾値が設定されている画素よりも先にドットが形成されることも起こり得る。しかし、前述したように画像データには、隣接する画素には近似する（若しくは同一の）階調値が割り当てられる傾向があるから、ほとんどの場合はドットが形成され易い画素（すなわちディザマトリックスに設定された閾値の小さな画素）からドットが形成されると考えることができる。
【００９２】
図９（ａ）に示した他の画素群についても、同様にして、ドット個数とディザマトリックスの閾値とに基づいて、ドットを形成する画素位置を決定することができる。例えば、図９（ａ）の上述した画素群の下にある画素群（左端上から２番目の画素群）については、ドット個数は３個であるから、図９（ｂ）のディザマトリックスを参照すれば、これら３つのドットは、閾値「２２」が設定された画素と、閾値「３３」が設定された画素と、閾値「９１」が設定された画素とに、それぞれ形成されると考えることができる。
【００９３】
図９（ａ）に示した４つの画素群について、このようにして個数データからドットを形成する画素位置を決定すると、図９（ｃ）に示した結果を得ることができる。図９（ｃ）中で、斜線を付して示した画素はドットを形成すると判断された画素である。図９（ｃ）と図８（ｃ）とを比較すれば明らかなように、個数データから決定した画素位置は、画素毎に決定した画素位置と一致している。このことは、ディザマトリックスを参照して画素毎にドット形成の有無を判断し、画素群内に形成されるドットの個数のみを記憶しておけば、画素位置までは記憶していなくても、ディザマトリックスとドット個数とから、ドットが形成される画素位置を復元可能なことを示している。このことから、コンピュータ１００から画素群毎の個数データを供給し、カラープリンタ２００側で個数データからドットを形成する画素位置を決定した場合でも、画素位置を適切に決定して、画質を悪化させることなく画像を印刷することが可能となるのである。
【００９４】
また、個数データからドットを形成する画素位置を適切に決定するためには、画像データの階調値が画素群内で大きく異なっていなければ良い。前述したように、画像データは隣接する画素間では近似した階調値を有する特性があるから、こうした条件はほとんどの場合に成立しており、従って、個数データのみをカラープリンタ２００に供給した場合でも、画質を悪化させることなく画像を印刷することができるのである。
【００９５】
特に、次の２つの条件が満足される場合には、画像データの階調値とディザマトリックスの閾値とを比較してドット形成の有無を画素毎に判断した結果と、完全に同じ画素位置にドットが形成されることが保証される。先ず１つ目の条件は、画素群内で各画素の階調値が同一の値を有することであり、２つ目の条件は、コンピュータ１００側で画素毎にドット形成の有無を判断する際に参照したディザマトリックスと、カラープリンタ２００側で個数データから画素位置を決定するために参照するディザマトリックスとが、同一のマトリックスであることである。
【００９６】
尚、図７で説明したディザ法においては、ディザマトリックスに設定された閾値と画像データとの階調値とを比較して、いずれの値が大きいかによってドット形成の有無を判断している。これに対して、個数データから画素群内でドットが形成される画素位置を決定する場合には、図９を用いて説明したように、ドットが形成される画素位置を、ディザマトリックスに設定された閾値の小さな画素から順番に決定している。すなわち、画素位置を決定するためには、閾値の値まで必要なわけではなく、画素群内でドットが形成され易い順序（換言すれば、ドットが形成される順番）が分かっていれば良い。このことから、図９（ｂ）に示すディザマトリックスの代わりに、図９（ｄ）に示すような画素群内の各画素について、ドットが形成される順番を示す値（順序値）が設定されたマトリックス（本明細書中では、このようなマトリックスを順序値マトリックスと呼ぶものとする）を記憶しておき、画素群毎に順序値マトリックスを参照しながら、個数データから画素位置を決定することも可能である。
【００９７】
また、このように、ディザマトリックスに基づいてドット形成の有無を決定する場合、ディザ法を適用してドット形成の有無を決定した時とほぼ同等のドット分布を得ることができる。このことから、ディザマトリックスの特性を適切に設計しておくことで、ドットの分布を制御することが可能である。例えば、いわゆるブルーノイズマスク特性を有するマトリックスや、あるいはグリーンノイズマスク特性を有するマトリックスを使用すれば、画像データを画素群単位で処理しているにも関わらず、これらディザマトリックスの特性に依存したドット分布の画像を得ることができる。
【００９８】
図１０は、ブルーノイズマスク特性を有するディザマトリックス、およびグリーンノイズマスク特性を有するディザマトリックスについて、設定されている閾値の空間周波数特性を概念的に例示した説明図である。図１０では、表示の都合から、横軸には空間周波数の代わりに周期を取って表示している。言うまでもなく、周期が短くなるほど、空間周波数は高くなる。また、図１０の縦軸は、それぞれの周期での空間周波数成分を示している。尚、図示されている周波数成分は、ある程度変化が滑らかとなるように平滑化された状態で示されている。
【００９９】
図中の実線は、ブルーノイズマスクの空間周波数成分を概念的に示している。図示されているように、ブルーノイズマスクは、１周期の長さが２画素以下の高い周波数領域に最も大きな周波数成分を有している。ブルーノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、ブルーノイズマスクに基づいてドット形成の有無を判断した場合には、ドットが互いに離れた状態で形成される傾向にある。また、図中の破線は、グリーンノイズマスクの空間周波数成分を概念的に示している。図示されているように、グリーンノイズマスクは、１周期の長さが２画素から十数画素の中間周波数領域に最も大きな周波数成分を有している。グリーンノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、グリーンノイズマスクに基づいてドット形成の有無を判断した場合には、数ドット単位で隣接してドットが形成されながら、全体としてはドットの固まりが分散した状態で形成される傾向にある。
【０１００】
従って、このようなブルーノイズマスク特性、あるいはグリーンノイズマスク特性を有するディザマトリックスに基づいて、画素群の個数データを決定したり、あるいは、画素位置を決定してやれば、画素群単位で処理しているにも関わらず、ブルーノイズマスク特性あるいはグリーンノイズマスク特性を反映した分布で、ドットを形成することが可能となる。
【０１０１】
また、以上の説明では、図９に示したように、ディザマトリックスに基づいて生成されて、複数種類の順序値マトリックスを予め記憶しておき、画素群の個数データを受け取ると、その画素群に対応した順序値マトリックスを用いて、各画素についてのドット形成の有無を決定するものとして説明した。しかし、より簡便には次のようにしてドット形成の有無を決定しても良い。すなわち、予め複数の順序値マトリックスを記憶しておき、個数データを受け取ると、画素群毎にランダムに選択した１の順序値マトリックスを用いて、各画素についてのドット形成の有無を決定しても良い。更に、より簡便には、順序値マトリックスを１組だけ記憶しておき、このマトリックスを用いて各画素についてのドット形成の有無を決定することも可能である。
【０１０２】
Ｂ−４．第１実施例の個数データ生成処理  ：
以下では、図５に示した第１実施例の画像印刷処理において、画像データから個数データを生成する処理（ステップＳ１０６）について説明する。図１１は、第１実施例の個数データ生成処理の流れを示すフローチャートである。ここでは、個数データ生成処理はコンピュータ１００で実施されるものとして説明するが、後述するように、個数データ生成処理は極めて簡素な処理とすることができるので、カラープリンタ２００あるいはデジタルカメラ１２０などの内部で実施することも可能である。以下、フローチャートに従って説明する。
【０１０３】
第１実施例の個数データ生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成する（ステップＳ２００）。ここでは、主走査方向に４画素分、副走査方向に２画素分の合計８つの画素を画素群にまとめるものとする。尚、画素群としてまとめる画素は、このように矩形状に縦横の位置が揃った画素である必要はなく、互いに隣接し且つ所定の位置関係にある画素であれば、どのような画素を画素群としてまとめても良い。
【０１０４】
次いで、画素群の分類番号と、画素群階調値とを決定する（ステップＳ２０２）。画素群の分類番号は、後述する方法を用いれば、極めて簡便に決定することができる。また、画素群階調値についても、次のようにして簡単に決定することができる。例えば、画素群内の各画素に割り当てられた階調値の平均値を求めて画素群階調値とすることができるし、あるいは画素群の中で最も多くの画素に割り当てられた階調値、更には、画素群内で特定の位置にある画素の階調値を画素群階調値とすることもできる。
【０１０５】
こうして、画素群の分類番号と画素群階調値とを決定したら、後述する第１の変換テーブルを参照することによって個数データを決定する（ステップＳ２０４）。詳細には後述するが、第１の変換テーブルには、画素群の分類番号と画素群階調値との組合せに対応付けて、適切な個数データが予め記憶されている。従って、画素群の分類番号と画素群階調値とが決定されれば、第１の変換テーブルを参照することで直ちに個数データを求めることが可能である。この点についても、後ほど詳しく説明する。
【０１０６】
以上のようにして、１つの画素群について個数データが得られたら、画像データの全画素について処理を終了したか否かを判断する（ステップＳ２０６）。そして、未処理の画素が残っている場合は（ステップＳ２０６：ｎｏ）、ステップＳ２００に戻って新たな画素群を生成し、続く一連の処理を繰り返す。こうした操作を繰り返し、全画素についての処理が終了したと判断されたら（ステップＳ２０６：ｙｅｓ）、各画素群について得られた個数データをカラープリンタ２００に出力して（ステップＳ２０８）、図１１に示す第１実施例の個数データ生成処理を終了する。
【０１０７】
Ｂ−５．分類番号の決定方法  ：
ここで、上述した第１実施例の個数データ生成処理中で、画素群の分類番号を決定する方法について説明する。以下では、先ず初めに、画素群の分類番号を付与する考え方を説明した後、分類番号を付与する具体的な方法について説明する。
【０１０８】
図１２は、画素群毎の分類番号を決定するための考え方を示した説明図である。図１２（ａ）は、画像の一番左上隅の箇所において、横方向に４画素、縦方向に２画素の合計８画素をまとめることによって画素群を１つ生成した様子を概念的に示したものである。
【０１０９】
前述したように、ディザ法では画素に割り当てられた画像データの階調値と、ディザマトリックスの対応する位置に設定されている閾値とを比較して、画素毎にドット形成の有無を判断している。一方、本実施例では、隣接する所定数の画素を画素群としてまとめているから、ディザマトリックスに設定されている閾値についても、画素群に対応する所定数ずつまとめてブロックを生成することにする。図１２（ｂ）は、図６に示したディザマトリックスに設定されている閾値を、横方向に４つ、縦方向に２つずつまとめて複数のブロックを生成した様子を示している。図６に示したディザマトリックスは、横方向（主走査方向）に１２８画素分、縦方向（副走査方向）に６４画素分の合計８１９２画素分の閾値が設定されているから、これら閾値を横方向に４つ、縦方向に２つずつブロックにまとめれば、ディザマトリックスは縦横それぞれ３２個ずつ、合計１０２４個のブロックに分割されることになる。
【０１１０】
今、図１２（ｂ）に示すように、これらブロックに１番〜１０２４番までの通し番号を付しておく。そして、画像データにディザマトリックスを適用した時に、各画素群の位置に適用されるブロックの通し番号によって、画素群を分類してやる。例えば、図１２（ｃ）に示したように、画像の一番左上隅にある画素群には、図１２（ｂ）中の通し番号１番のブロックが適用されるから、この画素群は分類番号１番の画素群に分類するのである。
【０１１１】
以上が、画素群を分類する際の基本的な考え方である。図１１のステップＳ２０２では、このように、画像データにディザマトリックスを適用したときに、画素群に適用されるブロックの通し番号によって各画素群を分類し、対応する分類番号を決定して画素群に付与する処理を行う。
【０１１２】
次に、画素群の分類番号を決定するための具体的な方法について説明する。図１３は、画素群の分類番号を決定する方法を示した説明図である。図１３（ａ）は、画像中で生成された１つの画素群を表している。ここでは、この画素群に着目して分類番号を決定する方法について説明する。尚、以下では、分類番号を決定するために着目している画素群を、着目画素群と呼ぶことにする。
【０１１３】
今、画像の一番左上隅にある画素を原点に取って、原点からの主走査方向および副走査方向への画素数によって画素位置を表すものとする。また、画素群の位置は、画素群の左上隅にある画素の画素位置によって表すものとする。図１３（ａ）では、着目画素群の位置を示す画素に黒丸を付して表示している。この画素の画素位置が（Ｘ，Ｙ）であったとする。すると、各画素群の大きさは、主走査方向に４画素、副走査方向に２画素としているから、
Ｘ＝４ｎ＋１、  Ｙ＝２ｍ＋１
となるようなｎ、ｍ（ここで、ｎ，ｍは０以上の正整数）が存在する。換言すれば、着目画素群の左側にはｎ個の画素群が並んでおり、着目画素群の上側にはｍ個の画素群が並んでいることになる。
【０１１４】
ここで、前述したように画素群は、画像データにディザマトリックスを適用したときに、着目画素群に適用されるブロックの通し番号に基づいて分類することとしているから（図１２参照のこと）、ディザマトリックスを移動させながら画像データに適用する方法によって、同じ画素群でも異なった分類番号に分類されることになる。実際には、ディザマトリックスを移動させながら画像データに適用する方法はどのような方法でも構わないが、ここでは説明の便宜から、最も単純な方法すなわちディザマトリックスを横方向に移動させるものとして説明する。図１３（ｂ）には、ディザマトリックスを横方向に少しずつ移動させながら、繰り返し画像データに適用している様子が概念的に示されている。
【０１１５】
図１３（ｃ）は、図１３（ｂ）に示すようにディザマトリックスを繰り返して用いながら、図１３（ａ）に示した着目画素群にディザマトリックスを適用している様子を概念的に表している。このようにディザマトリックスを移動させていくと、ディザマトリックス中のいずれかのブロックが、着目画素群に適用されることになる。ここでは、着目画素群には、ディザマトリックス中でＭ行Ｎ列目のブロックが適用されたものとする。すると、図１３（ａ）に示したように着目画素群の左側にはｎ個の画素群があり、上側にはｍ個の画素群があるから、Ｎとｎ、およびＭとｍとの間には、それぞれ
Ｎ＝ｎ  −  ｉｎｔ（ｎ／３２）×３２  ＋  １
Ｍ＝ｍ  −  ｉｎｔ（ｍ／３２）×３２  ＋  １
の関係が成り立っている。ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す演算子である。すなわち、ｉｎｔ（ｎ／３２）は、ｎ／３２の計算結果に対して小数点以下の数値を切り捨てることによって得られた整数値を表している。このように、着目画素群の位置が分かれば、図１３（ｄ）に表示した上述の関係式から数値ＭおよびＮを求めて、ディザマトリックス中でＭ行Ｎ列目にあるブロックのブロック番号を、その着目画素群の分類番号としてやればよい。もっとも実際には、Ｍ，Ｎの値は、図１３（ｄ）に示すような計算を実行せずとも、極めて簡便に求めることができる。以下、この点について説明する。
【０１１６】
図１４は、着目画素群の分類番号を決定する方法を具体的に示した説明図である。着目画素群の位置を（Ｘ，Ｙ）として、Ｘ，Ｙが１０ビットで表現されているものとする。図１４（ａ）は、数値Ｘを表す１０ビットの２進数データを概念的に示している。図では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０１１７】
図１３を用いて前述したように、着目画素群の左側にある画素群の個数ｎは、数値Ｘから１を減算して４で除算すれば得ることができる。ここで、４での除算は、２ビット分だけ右方向にシフトさせることで実施することができるから、数値Ｘから１を減算して、得られた２進数データを右方向に２ビット分だけビットシフトさせればよい。更に、数値Ｘは任意の値を取るのではなく、４ｎ＋１の形式で表現可能な数値しか取り得ないから、１を減算せずに、単に２進数データを右方向に２ビット分だけビットシフトさせるだけで、画素群の個数ｎを得ることができる。図１４（ｂ）は、こうして数値Ｘをビットシフトして得られた個数ｎの２進数データを概念的に表している。
【０１１８】
次いで、ｉｎｔ（ｎ／３２）を算出する。すなわち、個数ｎを３２で除算して、小数点以下の数値を切り捨てる操作を行う。３２による除算は、２進数データを右方向に５ビット分だけビットシフトさせることで実行可能であり、また、データを整数形式で扱っていれば、小数点以下の数値は自動的に切り捨てられてしまう。結局、ｉｎｔ（ｎ／３２）の２進数データは、個数ｎの２進数データを、単に右方向に５ビット分だけビットシフトさせることで得ることができる。図１４（ｃ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）の２進数データを概念的に表している。
【０１１９】
こうして得られたｉｎｔ（ｎ／３２）に３２を乗算する。３２による乗算は、２進数データを５ビット分だけ左方向にビットシフトすることで実施することができる。図１４（ｄ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）×３２の２進数データを概念的に表している。
【０１２０】
次いで、個数ｎからｉｎｔ（ｎ／３２）×３２を減算すれば、前述の数値Ｎを得ることができる。個数ｎの２進数データ（図１４（ｂ）参照）とｉｎｔ（ｎ／３２）×３２の２進数データ（図１４（ｄ）参照）とを比較すれば明らかなように、これら２進数データは、上位の５ビットは共通しており、減算する側の数値の下位５ビットは全て「０」となっている。従って、減算される側の数値（個数ｎ）の下位５ビットをそのまま抜き出せば、求める数値Ｍを得ることができる。すなわち、図１４（ｂ）に示した２進数データと、図１４（ｆ）に示すようなマスクデータとの論理積を求めるだけで、極めて簡便に数値Ｎを得ることが可能である。あるいは、図１４（ａ）に示した着目画素群の位置を示す数値Ｘの２進数データと、図１４（ｇ）のようなマスクデータとの論理積を求めることにより、４番目〜８番目のビットデータを直接抜き出すことによっても、数値Ｎを得ることができる。
【０１２１】
図１４では、着目画素群の位置を示す座標値（Ｘ，Ｙ）の数値Ｘから、ディザマトリックス中でのブロック位置を示す数値Ｎを求める場合について説明したが、全く同様にして、ブロック位置を示す数値Ｍも数値Ｙから求めることができる。結局、着目画素群の位置が分かれば、２進数データから特定のビット位置のデータを抜き出すだけで、着目画素群がディザマトリックス中で何行何列目のブロックに対応するかを知ることができ、このブロックの通し番号によって、着目画素群の分類番号を迅速に決定することが可能なのである。
【０１２２】
図１１を用いて前述したように、第１実施例の個数データ生成処理では、こうして得られた画素群の分類番号と画素群階調値とから、第１の変換テーブルを参照することによって個数データを取得する（図１１のステップＳ２０４参照）。以下では、個数データを得るために参照される第１の変換テーブルについて説明する。
【０１２３】
図１５は、画素群の分類番号と画素群階調値とから個数データを取得するために参照される第１の変換テーブルを概念的に示した説明図である。図示されているように、第１の変換テーブルには、画素群の分類番号と画素群階調値との組合せに対応付けて、適切な個数データが予め記憶されている。図１２を用いて前述したように、ここでは画素群は分類番号１番〜１０２４番のいずれかに分類され、また、画素群階調値は０〜２５５のいずれかの階調値を取り得るとしているから、分類番号と画素群階調値との組合せは、１０２４×２５６＝２６２１４４の組合せが存在する。第１の変換テーブルには、この全ての組合せに対して個数データが設定されており、この個数データは次のようにして決定されている。
【０１２４】
図１６は、画素群の分類番号と画素群階調値との組合せに応じて、適切な個数データを決定する様子を概念的に示した説明図である。一例として、画素群の分類番号が１番であるとする。分類番号１番の画素群には、ディザマトリックス中で通し番号１番のブロックが適用される。図１６（ａ）には、通し番号１番のブロックに設定されている閾値が示されている。
【０１２５】
今、画素群階調値が０であるとする。この場合は、画素群中の全画素が階調値０の画像データを有するものとする。そして、各画素の階調値（すなわち「０」）と図１６（ａ）に示した閾値とを比較して、階調値の方が大きい（若しくは同じ）画素については、ドットを形成するものと判断する。画素群の全画素についてこうした判断を行った後、ドットの個数を数えて、得られた値を個数データとする。図１６（ａ）に示したいずれの閾値も、階調値０よりは大きいから、ドットを形成すると判断される画素は存在しない。そこで、分類番号が１番で画素群階調値が０の組合せについては、個数データ０を設定する。図１６（ｂ）は、画素群階調値が０の場合の個数データを決定している様子を概念的に表している。上述したように、この場合は、画素群内のいずれの画素にもドットは形成されず、従って、個数データは０となる。
【０１２６】
図１６（ｃ）は、画素群階調値が１の場合に個数データを決定する様子を概念的に示している。この場合は、画素群内の全画素が階調値１の画像データを有するものとして、各画素の階調値を図１６（ａ）に示した閾値と比較する。その結果、画素群内で左上隅にある画素では、画像データの階調値と閾値とが等しくなってドットを形成すると判断され、他の画素についてはドットを形成しないと判断される。図１６（ｃ）に表示された斜線の付された丸印は、その画素にドットを形成すると判断されたことを表している。この結果、分類番号が１番で画素群階調値が１の組合せについては、個数データ１が設定される。
【０１２７】
こうした操作を、０〜２５５までの全ての画素群階調値について行うことにより、個数データを決定していく。例えば、画素群階調値が２の場合は、図１６（ｄ）に示したように、個数データは１となり、画素群階調値が１００の場合は、図１６（ｅ）に示すように個数データは３となる。図１６（ｆ）および図１６（ｇ）には、画素群階調値が２００の場合および画素群階調値が２５５の場合に、それぞれの個数データを決定する様子が概念的に示されている。図１５中で、分類番号１に該当する行（表中に示された横方向の欄）の部分に、各画素群階調値に対応付けて設定されている個数データは、このようにして決定された個数データである。こうした操作を、１番〜１０２４番までの全ての分類番号について行えば、最終的に、全ての分類番号と全ての画素群階調値とのあらゆる組合せに対応する個数データを決定することができる。図１５に示した第１の変換テーブルには、分類番号と画素群階調値との組合せに応じて、対応する個数データが予め設定されている。
【０１２８】
Ｂ−６．第１実施例のドット形成有無決定処理  ：
次に、前述した第１実施例の画像印刷処理において、画素群内の各画素についてのドット形成の有無を、個数データに基づいて決定する処理（図５のステップＳ１０８）について説明する。図１７は、第１実施例のドット形成有無決定処理の流れを示すフローチャートである。かかる処理は、カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵによって実行される処理である。また、図１８は、第１実施例のドット形成有無決定処理において、各画素についてのドット形成の有無が決定される様子を概念的に示した説明図である。以下では、図１８を参照しながら、図１７に示すフローチャートに従って、第１実施例のドット形成有無決定処理について説明する。
【０１２９】
ドット形成有無決定処理を開始すると、先ず初めに、画素群を１つ選択し（ステップＳ３００）、その画素群の個数データを取得する（ステップＳ３０２）。ここでは、図１８（ａ）に示すような個数データが供給されたものとする。
【０１３０】
次いで、選択した画素群に含まれる各画素の中から対象とする画素を１つ選択し（ステップＳ３０４）、該画素群内で対象画素にドットが形成される順番を示す値（順序値）を取得する（ステップＳ３０６）。対象画素の順序値は、図１８（ｂ）に示すような、予め設定されている順序値マトリックスを参照することで容易に取得することができる。図１８（ｂ）に例示した順序値マトリックスには、画素群を構成する各画素の画素位置について、順序値が予め設定されている。例えば、画素群内で一番左上隅にある画素については、順序値「１」が設定されており、その画素の右隣の画素については、順序値「６」が設定されている。ステップＳ３０６では、このような順序値マトリックスを参照して、対象画素の位置に設定されている順序値を取得する。尚、説明が煩雑となることを避けるために、ここでは、順序値マトリックスは１組のみが記憶されており、常に同じ順序値マトリックスを用いて順序値を得るものとして説明するが、順序値マトリックスを複数組記憶しておき、画素群毎に順序値マトリックスを切り換えながら、対象画素の順序値を取得することとしても良い。
【０１３１】
こうして順序値を取得したら、第２の変換テーブルを参照することによって、対象画素についてのドット形成の有無を決定する（ステップＳ３０８）。図１９は、対象画素についてのドット形成の有無を決定するために参照される第２の変換テーブルを概念的に示した説明図である。前述した第１の変換テーブルには、分類番号と画素群階調値との組合せに対応付けて個数データが記憶されているのに対して（図１５参照）、第２の変換テーブルには、図１９に示されているように、順序値と個数データとの組合せに対応付けて、ドット形成の有無が設定されている。ここでは、画素群は８つの画素から構成されているから、順序値は１〜８までの値を取り、個数データは０〜８までの値を取るとしているから、第２の変換テーブルには、これらを組合せた７２通りの組合せに対応付けて、ドット形成の有無を示す値が設定されている。図１９に示した例では、ドットを形成する組合せに「１」が、ドットを形成しない組合せには「０」が設定されている。
【０１３２】
一例として、図１８に示した画素群内で一番左上隅にある画素について説明すると、図１８（ｂ）に示すように順序値は「１」であり、個数データは図１８（ａ）に示したように「３」である。図１９に例示した第２の変換テーブルを参照すると、順序値「１」、個数データ「３」の組合せに対して設定されている値は「１」、すなわち、この画素についてはドットを形成するものと決定することができる。このように、図１７のステップＳ３０８では第２の変換テーブルを参照することで、画素群についての個数データと対象画素の順序値とから、対象画素についてのドット形成の有無を直ちに決定するのである。
【０１３３】
こうして、対象画素として選択した１つの画素についてドット形成の有無を決定したら、選択した画素群内の全画素について、ドット形成の有無を決定したか否かを判断する（ステップＳ３１０）。そして、画素群内で未だドット形成の有無を決定していない画素が残っている場合は（ステップＳ３１０：ｎｏ）、ステップＳ３０４に戻って、画素群の中から新たな画素を対象画素として選択し、続く一連の処理を行う。
【０１３４】
こうした処理を繰り返し、画素群内の全画素についてドット形成の有無を決定したと判断されたら（ステップＳ３１０：ｙｅｓ）、今度は、個数データの供給された全画素群について処理を終了したか否かを判断する（ステップＳ３１２）。そして、未処理の画素群が残っていれば（ステップＳ３１２：ｎｏ）、ステップＳ３００に戻って新たな画素群を選択し、続く一連の処理を行う。こうした処理を繰り返すことにより、コンピュータから供給された個数データは、画素毎にドット形成の有無を示すデータに変換されていく。そして、全ての画素群について処理が終了したら（ステップＳ３０６：ｙｅｓ）、図１７に示したドット形成有無決定処理を終了して、図５の画像印刷処理に復帰する。
【０１３５】
以上、第１実施例の画像印刷処理中で行われる個数データ生成処理（図５のステップＳ１０６）、およびドット形成有無決定処理（図５のステップＳ１０８）の内容について詳しく説明した。上述した個数データ生成処理では、所定数の画素をまとめて画素群を生成し、その画素群について分類番号と画素群階調値を決定した後、個数データを生成する。画素群の分類番号および画素群階調値は上述したように極めて容易に求めることができる。そして、分類番号および画素群階調値が分かれば、前述した第１の変換テーブルを参照することによって、極めて容易に個数データを生成することができる。こうして生成された個数データは、画素毎にドット形成の有無を表すデータに比べて、データ量が遙かに小さくなっているため、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを出力することができる。すなわち、上述した個数データ生成処理では、個数データの生成および出力を高速に実行することが可能となる。
【０１３６】
また、上述したドット形成有無決定処理では、こうしてコンピュータ１００から迅速に供給された個数データを受け取ると、先ず、順序値マトリックスを参照することによって対象画素の順序値を取得する。次いで、得られた順序値と個数データを用いて第２の変換テーブルを参照することによって、画素群内の各画素についてのドット形成の有無を決定する。こうすれば、順序値マトリックスと第２の変換テーブルを参照するだけで、ドット形成の有無を迅速に決定することが可能である。
【０１３７】
加えて、個数データを生成する処理は、単にテーブルを参照する処理に過ぎず、第１の変換テーブルを参照するために使用する分類番号や画素群階調値も、極めて簡便な処理で求めることができる。同様に、個数データからドット形成の有無を決定する処理も、単にテーブルを参照する処理に過ぎない。このため、いずれの処理についても、コンピュータ１００のような高いデータ処理能力を備えていない機器を用いた場合でも、十分に実用的な速度で処理することができる。
【０１３８】
更に、処理の大部分は、マトリックスあるいはテーブルに記憶されているデータを単に参照するという極めて単純なものであるため、ＣＰＵを用いてソフトウェア的に実行するのではなく、専用の論理回路を組み込んだＩＣチップを用いてハードウェア的に実行することも容易である。処理をハードウェア的に実行すれば、より一層高速に実行することが可能となり、その分だけ画像を迅速に印刷することも可能となる。
【０１３９】
また、近年のコンピュータでは処理の高速化を図るために、いわゆるパイプライン処理と呼ばれる技術が活用されているが、その一方で、条件分岐を含む処理に対しては、パイプライン処理の技術を適用しても、さほど処理を高速化することができず、返って処理速度が低下する場合もあることが知られている。上述した個数データ生成処理およびドット形成有無決定処理は、記憶されているデータを参照する処理がほとんどであり、条件分岐が含まれていないので、こうした観点からも、高速処理に適した処理であると言うことができる。
【０１４０】
このように、上述した第１実施例の個数データ生成処理およびドット形成有無決定処理は、迅速な処理を可能とする種々の要素を備えているため、どのような条件においても、画像データを迅速に処理することができ、延いては画像を迅速に印刷することが可能となる。
【０１４１】
Ｂ−７．第１の変形例  ：
上述した第１実施例の画像印刷処理では、画像データを印刷解像度に変換した後、所定数の画素をまとめて画素群を形成して個数データを生成した。しかし、画像データを印刷解像度よりも低解像度のデータに一旦変換し、明示的には画素群を形成することなく個数データを生成することとしても良い。以下では、こうした第１実施例の第１の変形例について説明する。
【０１４２】
図２０は、第１の変形例の画像印刷処理の流れを示したフローチャートである。第１の変形例の画像印刷処理は、図５に示した第１実施例の画像印刷処理に対して、画像データの解像度を印刷解像度に変換するのではなく、印刷解像度よりも低解像度のデータに変換する点と、個数データ生成処理において明示的には画素群を形成していない点が大きく異なっているが、他の点についてはほぼ同様である。以下では、第１実施例の画像印刷処理との相違点を中心として、第１の変形例の画像印刷処理について説明する。
【０１４３】
第１の変形例の画像印刷処理においても、第１実施例の画像印刷処理と同様に、処理を開始すると先ず初めに画像データを読み込んで（ステップＳ４００）、色変換処理を行う（ステップＳ４０２）。
【０１４４】
次いで、第１の変形例の画像印刷処理では、画像データに解像度調整処理を施して、印刷解像度よりも低解像度の画像データに一旦変換する（ステップＳ４０４）。図２１は、解像度調整処理で行われる処理について示した説明図である。図２１（ａ）は、色変換後の画像データを概念的に表しており、図２１（ｂ）は、解像度調整処理によって生成される画像データを概念的に表している。また、図２１（ｃ）は、印刷解像度の画像データを示している。図２１（ｂ）と図２１（ｃ）とを比較すれば明らかなように、解像度調整処理によって生成される画像データは、印刷解像度よりも低解像度のデータである。より詳しくは、解像度調整処理によって生成される画像データの解像度は、主走査方向には印刷解像度の１／４、副走査方向には印刷解像度の１／２の解像度となっている。換言すれば、解像度調整処理によって生成される画素は、図２１（ｃ）に示した印刷解像度の画素に対して、主走査方向には４倍、副走査方向には２倍の大きさを有する大きな画素に変換される。そして、続いて行われる個数データ生成処理では、図２１（ｂ）に示す大きな画素が、あたかも図２１（ｃ）に示すように印刷解像度の画素を所定数ずつまとめて生成した画素群であるかのように扱って、個数データを生成する。すなわち、変形例の解像度調整処理では、解像度変換後の１画素の大きさが、印刷解像度の画素をまとめて生成した画素群の大きさと一致するように、画像データの解像度を変換する処理を行うのである。
【０１４５】
変形例の画像印刷処理では、こうして色変換後の画像データの解像度を調整した後、個数データ生成処理を開始する（図２０のステップＳ４０６）。図２２は、第１の変形例の画像印刷処理で行われる個数データ生成処理の流れを示すフローチャートである。かかる処理を開始すると、先ず初めに、処理対象とする画素を１つ選択する（ステップＳ４５０）。ここで選択する画素は、図２１（ｂ）に示すような、印刷解像度の画素よりも大きな画素である。しかし、この画素の大きさは、前述した第１実施例において印刷解像度の画素をまとめて生成した画素群の大きさと一致している。そこで、選択した画素をあたかも第１実施例における画素群のように扱って、この画素についての分類番号を決定する（ステップＳ４５２）。分類番号は、図１２ないし図１４における画素群を画素と読み替えてやれば、第１実施例における方法に準じて決定することができる。
【０１４６】
次いで、図１５に示した第１の変換テーブルを参照することにより、選択した画素についての個数データを取得する（ステップＳ４５４）。第１の変換テーブルを参照する際に用いる画素群階調値には、選択した画素に割り当てられている画像データの階調値をそのまま使用することができる。
【０１４７】
こうして、処理対象として選択した画素について個数データが取得されたら、全画素について処理を終了したか否かを判断する（ステップＳ４５６）。未処理の画素が残っている場合は（ステップＳ４５６：ｎｏ）、ステップＳ４５０に戻って新たな処理対象の画素を選択した後、続く一連の処理を行う。こうした操作を繰り返し、全画素について処理を終了したと判断されたら（ステップＳ４５６：ｙｅｓ）、各画素について得られた個数データをカラープリンタ２００に出力して（ステップＳ４５８）、図２２に示す第１の変形例の個数データ生成処理を終了する。
【０１４８】
以上のような個数データ生成処理に続いて、ドット形成有無決定処理を行う（ステップＳ４０８）。ドット形成有無決定処理については、第１の変形例の画像印刷処理においても前述した第１実施例の画像印刷処理と同様である。すなわち、コンピュータ１００から供給された個数データを受け取って、順序値マトリックスを参照することにより画素群内の各画素についての順序値を求める。そして、得られた順序値および個数データから第２の変換テーブルを参照することにより、各画素についてのドット形成の有無を決定する。
【０１４９】
次いで、こうして決定された画素位置にドットを形成していく（ステップＳ４１０）。その結果、印刷用紙上に適切な密度でドットが形成されて、画像データに対応する画像が印刷されることになる。
【０１５０】
上述した変形例の画像印刷処理では、画像データを印刷解像度よりも低い解像度のデータとしたまま、個数データを生成することができる。解像度が低くなれば画像データのデータ量は小さくなるので、その分だけデータを迅速に取り扱うことが可能になるとともに、処理に際して一時的に必要となるメモリ量も低減させることも可能となる。また、画素群を生成する処理や、生成した画素群についての画素群階調値を算出する処理も不要となるので、処理の簡素化と迅速化とを同時に実現することが可能となる。
【０１５１】
尚、高画質な画像を印刷するためには、高い解像度で印刷することが効果的であることは言うまでも無いが、必ずしも、印刷解像度を高くすることに合わせて画像データの解像度も高くする必要があるわけではない。低解像度の画像データを受け取って、単に大きな画素を小さな画素に分割し、見かけ上の解像度を高くするだけでも、印刷画質を改善することが可能である。例えば、図２１（ｂ）に示すような低解像度の画像データを受け取って、各画素を複数の画素に分割し、図２１（ｃ）に示すような高解像度の画像データに変換する。こうして得られた画像データは見かけ上の解像度は高くなっているものの、解像度に見合うだけ滑らかな階調変化が可能になっているわけではなく、階調変化を滑らかに表現する観点から見れば低解像度の画像データと何ら変わるところはない。しかし、次のような理由から、見かけ上の解像度を高くするだけでも印刷画質を向上させることが可能であるため、こうした処理も現在では比較的頻繁に行われるようになっている。
【０１５２】
以下では、見かけ上の解像度を向上させるだけでも印刷画質が改善される理由について簡単に説明する。画像データは、一般的に、個々の画素について多階調を表現することが可能である。例えば、画像データが１バイトデータである場合には、画素あたり２５６階調を表現することができる。これに対して、ドットを形成して画像を印刷する場合は、個々の画素ではドットを形成するか否かの２通りしか取り得ず、例えドットの大きさなどを変えたとしても、画素あたりに表現可能な階調数は高々数階調に過ぎない。換言すれば、ドットを形成して画像を印刷する場合、画像データと同じ解像度で印刷すると、個々の画素が有する画像データの情報量が大きく失われている。これに対して、画像を印刷する際に、１つの画素を複数の画素に分割してドットを形成してやれば、画像データの個々の画素が有する情報量をドットの形成状態に反映させることが可能となり、印刷画質が向上するのである。
【０１５３】
第１の変形例の画像印刷処理は、このように、低解像度の画像データを受け取って、見かけ上の解像度を高解像度化した後に画像を印刷する場合に好適に適用することが可能である。すなわち、画像データを受け取ると、必要に応じて解像度を調整した後、個々の画素をあたかも画素群のように扱って個数データを生成する。こうすれば、受け取った画像データの解像度を高解像度化することなく、印刷解像度の画像を迅速に印刷することが可能となる。特に、受け取った画像データの画素の大きさが、画素群の大きさと一致している場合には、解像度を調整することなく、そのまま各画素の個数データを生成することができるので、より一層速やかに画像を印刷することが可能である。
【０１５４】
Ｂ−８．第２の変形例  ：
上述した第１実施例のドット形成有無決定処理においては、予め１組または複数組の順序値マトリックスを設定しておき、常に同じ順序値マトリックスを参照して、あるいは参照する順序値マトリックスをランダムに切り換えながら、各画素についてのドット形成の有無を決定するものとして説明した。しかし、図８および図９を用いて前述したように、順序値マトリックスをディザマトリックスに基づいて生成し、画素群の位置に応じて適切な順序値マトリックスを参照しながらドット形成の有無を決定してやれば、より適切にドット形成の有無を決定することができ、従って高画質な画像を印刷することが可能となる。以下では、こうした第１実施例における第２の変形例としてのドット形成有無決定処理について説明する。
【０１５５】
図２３は、第２の変形例としてのドット形成有無決定処理の流れを示すフローチャートである。以下、フローチャートに従って説明する。第２の変形例としてのドット形成有無決定処理においても、先ず初めに画素群を１つ選択し（ステップＳ５００）、その画素群の個数データを取得する（ステップＳ５０２）。次いで、複数組記憶されている順序値マトリックスの中から、選択した画素群に対応する順序値マトリックスを読み込む（ステップＳ５０４）。かかる処理について、図２４および図２５を参照しながら詳しく説明する。
【０１５６】
図２４は、第２の変形例において、ドット形成有無決定処理中で参照される複数の順序値マトリックスを生成する方法について示した説明図である。ここでは、複数の順序値マトリックスをディザマトリックスに基づいて生成する。先ず、ディザマトリックスを画素群と同じ大きさを有する複数のブロックに分割して、各ブロックに通し番号を付しておく。図２４（ａ）は、ディザマトリクスを複数のブロックに分割した様子を概念的に示した説明図である。今、ディザマトリックスが図６に示した大きさ（すなわち、主走査方向に１２８画素、副走査方向に６４画素）を有しているものとすると、１つの画素群は主走査方向に４画素、副走査方向に２画素の大きさを有するとしているから、図２４（ａ）に示すように、ディザマトリックスは主走査方向および副走査方向にそれぞれ３２ブロックずつ、全体では、１番から１０２４番までの通し番号が付された１０２４個のブロックに分割されることになる。
【０１５７】
尚、前述した第１実施例の個数データ生成処理では、図６に示したディザマトリックスを想定して画素群に分類番号を付与するとともに（図１２参照）、個数データを求めて第１の変換テーブルに設定した（図１５参照）。第２の変形例のドット形成有無決定処理においても、具体的に説明するために、図６に示したディザマトリックスを想定して順序値マトリックスを生成するものとして説明するが、これらディザマトリックスは必ずしも同一のマトリックスである必要はなく、更には、異なる大きさのディザマトリックスを用いることも可能である。
【０１５８】
図２４（ａ）に示すように、ディザマトリックスを通し番号１番から１０２４番までの複数のブロックに分割したら、各ブロックから１組ずつ順序値マトリックスを生成する。図２４（ｂ）は、一例として、通し番号１番のブロックから順序値マトリックスを生成している様子を示した説明図である。図２４（ｂ）の左側半分には、通し番号１番のブロックに含まれるディザマトリックスの閾値が示されている。図７を用いて前述したように、ディザ法では画像データの階調値とディザマトリックスの閾値とを比較して、画像データの方が大きい場合にドットを形成すると判断しているから、ディザマトリックスの閾値が小さい画素ほどドットが形成され易くなる。従って、図２４（ｂ）に示した１番のブロックの中で１番初めにドットが形成される画素は、閾値「１」が設定された画素と考えることができる。そこで、この画素には順序値として「１」を設定する。同様に、２番目にドットが形成される画素は、２番目に小さな閾値である閾値「４２」が設定された画素と考えることができる。そこで、この画素には順序値「２」を設定する。このようにして、ブロック内に設定されている閾値の小さな画素から順番に、順序値「１」から順序値「８」までを決定してやれば、図２４（ｂ）の右側半分に示した通し番号１番の順序値マトリックスを得ることができる。
【０１５９】
図２４（ｃ）は、同様にして、ブロック内で小さな閾値が設定されている画素から順番に、順序値「１」から順序値「８」までを設定することで、通し番号２番の順序値マトリックスを生成した様子を示している。図２４（ａ）に示した通し番号「１」番から通し番号「１０２４」番までの全てのブロックについて、以上のような操作を行うことにより、通し番号「１」番から「１０２４」番までの順序値マトリックスを生成して記憶しておく。図２３のステップＳ４０４では、これら「１」番から「１０２４」番の順序値マトリックスの中から、ドット形成の有無を決定しようとする画素群に対応するマトリックスを選択して読み込む処理を行う。
【０１６０】
図２５は、画素群に対応する順序値マトリックスを選択する方法を示した説明図である。今、ドット形成の有無を決定しようとしている画素群が、図２５（ａ）に示すように、画像の一番左上隅を基準として主走査方向にｉ個目の画素群、副走査方向にｊ個目の画素群の位置にあるとする。また、このような画素群の位置を、座標値（ｉ，ｊ）によって表すものとする。また、ディザマトリックスの大きさは、通常は、画像のようには大きくはないので、図１３（ｂ）を用いて前述したように、ディザマトリックスを主走査方向に移動させながら、繰り返して使用するものとする。
【０１６１】
図２４（ａ）に示したように、ディザマトリックスを分割するブロックの大きさは、個数データを生成した画素群の大きさと一致しているから、ディザマトリックスを主走査方向に移動させながら繰り返し使用すると、ディザマトリックスの各ブロックは画素群の位置に一致する。換言すれば、全ての画素群には、ディザマトリックスを分割するいずれかのブロックが適用されることになる。
【０１６２】
今、処理しようとしている画素群には、ディザマトリックス中で主走査方向にＩ個目、副走査方向にＪ個目のブロックが適用されたものとする。図２４（ａ）に示すように、ここでは、１つのディザマトリックスには主走査方向・副走査方向にそれぞれ３２個ずつのブロックが含まれるとしており、また、処理しようとする画素群の座標値は（ｉ，ｊ）、すなわち、画像の左上隅を基準として主走査方向にｉ個目、副走査方向にｊ個目の位置にあるとしているから、Ｉ、Ｊはそれぞれ次式で求めることができる。
Ｉ＝ｉ  −  ｉｎｔ（ｉ／３２）×３２
Ｊ＝ｊ  −  ｉｎｔ（ｊ／３２）×３２
ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す前述した演算子である。従って、ある画素群についてドット形成の有無を決定する場合には、画素群の座標値（ｉ，ｊ）から上式によってＩ，Ｊを求めた後、ディザマトリックス中で対応する位置にあるブロックの通し番号を取得して、そのブロックから生成された順序値マトリックスを用いればよい。
【０１６３】
もちろん、実際には、図２５（ｃ）に示すような計算を実行せずとも、ｉ，ｊの２進数データに対してビット毎の論理積を算出することで、それぞれＩ，Ｊの値を極めて簡便に求めることができる。以下、図２６を参照しながら簡単に説明する。
【０１６４】
図２６は、画素群の座標値（ｉ，ｊ）から、適用する順序値マトリックスを選択する方法を具体的に示した説明図である。図２６（ａ）は、数値ｉを表す１０ビットの２進数データを概念的に示している。図２６（ａ）では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０１６５】
順序値マトリックスの選択に際しては、先ず初めに、ｉｎｔ（ｉ／３２）を算出する。図１４を用いて前述したように、この演算は、ｉの２進数データを右方向に５ビット分だけビットシフトさせることで実行することができる（図２６（ｂ）参照）。次いで、ｉｎｔ（ｉ／３２）×３２を算出する。この演算は、ｉｎｔ（ｉ／３２）の２進数データを左方向に５ビット分だけビットシフトさせることで実行することができる（図２６（ｃ）参照）。最後に、数値ｉから、ｉｎｔ（ｉ／３２）×３２を減算すれば、目的とする数値Ｉを得ることができる。この操作は、結局は、数値ｉの２進数データから下位の５ビットのみを抜き出していることに他ならないから、図２６（ａ）に示した数値ｉの２進数データと、図２６（ｅ）に示すマスクデータとの論理積を求めるだけで、極めて簡便に数値Ｉを得ることが可能である。同様にして、数値ｊの２進数データと図２６（ｅ）のマスクデータとの論理積を求めれば、数値Ｊを算出することができる。このように、画素群の座標値（ｉ，ｊ）が与えられれば、数値ｉ、ｊから数値Ｉ、Ｊを求めることにより、その画素群には通し番号が何番の順序値マトリックスが適用されるかを知ることができるのである。図２３に示したドット形成有無決定処理のステップＳ５０４では、このようにして、画素群に対応するマトリックスを選択して読み込む処理を行う。
【０１６６】
以上のようにして、画素群に対応する順序値マトリックスを読み込んだら、処理中の画素群の中から、ドット形成の有無を決定しようとする対象画素を１つ選択する（ステップＳ５０６）。そして、読み込んでおいた順序値マトリックスを参照することで、対象画素の順序値を取得した後（ステップＳ５０８）、第２の変換テーブルを参照することによって、対象画素についてのドット形成の有無を決定する（ステップＳ５１０）。図１９の例示を用いて前述したように、第２の変換テーブルには、順序値と個数データとの組合せに対応付けて、ドット形成の有無が設定されている。従って、画素群の個数データと対象画素の順序値とが分かれば、変換テーブルを参照することで直ちにドット形成の有無を決定することができる。
【０１６７】
こうして、１つの対象画素についてドット形成の有無を決定したら、選択した画素群内の全画素について、ドット形成の有無を決定したか否かを判断する（ステップＳ５１２）。未だ、ドット形成の有無を決定していない画素が残っていれば（ステップＳ５１２：ｎｏ）、ステップＳ５０６に戻って、新たな対象画素を選択し、続く一連の処理を行う。こうした処理を繰り返し、画素群内の全画素についてドット形成の有無を決定したと判断されたら（ステップＳ５１２：ｙｅｓ）、今度は、個数データが供給された全画素群について処理を終了したか否かを判断する（ステップＳ５１４）。そして、未処理の画素群が残っていれば（ステップＳ５１４：ｎｏ）、ステップＳ５００に戻って新たな画素群を選択し、続く一連の処理を行う。こうした処理を繰り返し、全ての画素群について処理が終了したら（ステップＳ５１４：ｙｅｓ）、図２３に示した第２の変形例におけるドット形成有無決定処理を終了して、図５の画像印刷処理に復帰する。
【０１６８】
以上に説明した第２の変形例におけるドット形成有無決定処理では、ディザマトリックスに基づいて複数の順序値マトリックスを生成する。そして、ある画素群についてドット形成の有無を決定する際には、ディザ法を適用したときに、その画素群の位置に適用される部分のディザマトリックスから生成された順序値マトリックスを用いて、ドット形成の有無を決定する。こうすれば、ディザマトリックスを用いて得られたドットの分布と、ほぼ同じような分布が得られるように、ドット形成の有無を決定することができる。周知のように、ディザマトリックスには、ドットが適切な分布で形成されるように、適切な分布で閾値が設定されているから、ディザマトリックスによるドットの分布に準じた分布が得られれば、高画質な画像を印刷することが可能となる。
【０１６９】
更に、順序値マトリックスを生成するために用いるディザマトリックスと、図１１に示した個数データ生成処理中で使用するディザマトリックスとを同じマトリックスとしておけば、図８および図９を用いて前述したように、個数データから復元したドット分布は、ほとんどの場合は、ディザ法を用いて画素毎にドット形成の有無を判断した場合と全く同じドット分布となる。もちろん、前述したように、画素群内で画像データの階調値が大きく変化している場合には、ドット分布は異なったものとなるが、画像データには隣接する画素間では近似した（若しくは同一の）階調値を有する傾向があるため、多くの場合、ドット分布は同一となる。従って、適切なドット分布となるようにドット形成の有無を決定することができ、それだけ高画質な画像を印刷することが可能となる。
【０１７０】
Ｂ−９．メモリ使用量  ：
以上に説明した第１実施例の画像印刷処理によれば、個数データ生成処理では、第１の変換テーブルを参照することによって個数データを求めている。このため、ディザマトリックスを記憶しておく必要は無い。もっとも、ディザマトリックスの代わりに第１の変換テーブルを記憶しておく必要がある。また、ドット形成有無決定処理では、順序値マトリックスおよび第２の変換テーブルを記憶しておく必要がある。更に、上述した第２の変形例においては、順序値マトリックスを複数記憶しておく必要がある。このため、これら変換テーブルや順序値マトリックスのデータサイズがあまりに大きくなったのでは、メモリ使用量の点から制約を受けることになる。しかし、以下に説明するように、第１変換テーブル、第２の変換テーブル、および順序値マトリックスのデータサイズは決して大きなものではなく、メモリ使用量の点から制約を受けることはない。
【０１７１】
図２７は、第１の変換テーブルを記憶するためのメモリ使用量を、各種条件下で試算した結果を示す説明図である。図１５を用いて前述したように、第１の変換テーブルには、分類番号および画素群階調値の組合せ毎に個数データが設定されているから、第１の変換テーブルのデータサイズは、分類番号の個数と、画素群階調値が取り得る範囲と、個数データ１つ当たりのデータ長とによって決定される。また、分類番号の個数は、ディザマトリックスを分割して生成したブロック数と等しいから、結局、ディザマトリックスのサイズと画素群の大きさとによって決定される。図２７では、各種サイズのディザマトリックスと、各種大きさの画素群とを想定し、これらを組合せた時の変換テーブルのデータ量が試算示されている。具体的には、ディザマトリックスの大きさとしては、６４×６４（すなわち主走査方向に６４画素、副走査方向に６４画素）、１２８×６４（主走査方向に１２８画素、副走査方向に６４画素）、１２８×１２８（主走査方向に１２８画素、副走査方向に１２８画素）の３種類のサイズを想定している。画素群のサイズとしては、２×２（主走査方向に２画素、副走査方向に２画素）、４×２（主走査方向に４画素、副走査方向に２画素）、４×４（主走査方向に４画素、副走査方向に４画素）の３種類のサイズを想定している。また、ここでは、画素群階調値は０〜２５５の２５６通りの値を取り得るものとし、個数データのデータ長は１バイトであるものとしている。
【０１７２】
上述した実施例に対応する条件、すなわち、ディザマトリックスサイズが１２８×６４であり、画素群の大きさが４×２の条件での試算結果は、図２７では、破線で囲って示されている。以下では、この条件を代表例として用いながら、第１の変換テーブルを記憶するために使用するメモリ量の試算結果について説明する。ブロック数は、ディザマトリックスを画素群と同じサイズで分割して得られるブロックの個数であるから、ディザマトリックスの画素数（１２８×６４）を画素群当たりの画素数（４×２）で除算して、１０２４となる。この値が、第１の変換テーブルの分類番号の個数となる。ここでは、画素群階調値は０〜２５５までの２５６通りの値を取り得るとしているから、分類番号と画素群階調値との組合せは、１０２４×２５６通り存在している。この組合せ毎に、１バイトのデータ長の個数データが記憶されるから、結局、第１の変換テーブルのデータ量は、２５６Ｋバイトと算出される。
【０１７３】
上述した算出方法から明らかなように、第１の変換テーブルを記憶するために使用するメモリ量は、ディザマトリックスのサイズが大きくなって分類番号の個数が増えるほど大きくなる傾向にある。同様に、画素群の大きさが小さくなるほど分類番号の個数が増えるので、第１の変換テーブルのデータ量は大きくなる傾向にある。ここで、実際に用いられるディザマトリックスのサイズは、６４×６４〜１２８×１２８程度であるから、図２７に示した試算結果から、第１の変換テーブルのデータ量は、極めて特殊な場合を除いて１Ｍバイトを越えることはなく、２５６Ｋバイト〜５１２Ｋバイト程度に収まっている。もちろん、図２７の試算で用いたディザマトリックスよりも大きなマトリックスを使用する場合もあるが、その場合でも、第１の変換テーブルのデータ量はメモリ容量を圧迫するほど大きなものにはならないと考えられる。
【０１７４】
また、図２７に示した試算では、個数データ１つ当たりのデータ長は１バイトであるとしたが、実際には１バイトものデータ長は不要であり、これを考慮すれば、第１の変換テーブルのデータ量は更に小さなものとなる。この点について、再び図２７を参照しながら説明する。図中で、破線で囲った条件（上述した実施例の条件）について説明すると、画素群内の画素数は８つであるから、画素群当たりに形成されるドット個数は０個〜８個までの合計９つの状態を取り得る。９つの状態であれば４ビットあれば表現することができるから、個数データ１つあたりのデータ長は４ビットあれば良く、従って、第１の変換テーブルのデータ量も１２８Ｋバイトと半減する。図２７で、右端から２列目の「状態数／画素群」と表示された欄には、画素群が取り得る状態数（すなわち１つの画素群に形成され得るドット個数の種類）が示されており、右端の「使用ビット数」と表示された欄には、状態数を表現するために必要なビット数（すなわち、個数データ１つ当たりのデータ長）が示されている。
【０１７５】
前述したように、個数データが１バイトデータであるとした場合は、画素群の大きさが小さくなるほど変換テーブルのデータ量は大きくなる。しかし、図２７の右端の欄に示されているように、画素群の大きさが小さくなるほど使用ビット数は小さくなるので、この点を考慮したときのデータ量の低減率は大きくなる。実際、画素群の画素数が８つの場合は、使用ビット数を考慮することでデータ量が半減するが、画素群の画素数が４つの場合はデータ量は３／８と、４割以下に減少する。こうした点を考慮すれば、第１の変換テーブルを記憶するために使用するメモリ量は図２７の試算結果よりも更に減少し、実際には高々２５６Ｋバイト程度あれば十分であると考えられる。
【０１７６】
前述した画像印刷処理中の色変換処理（図５のステップＳ１０２）で参照する色変換テーブル（ＬＵＴ）のデータ量が、通常は１．５Ｍ以上になることと比べれば、２５６Ｋバイトというデータ量は決して大きなデータ量ではない。むしろ、現在の一般的なコンピュータのキャッシュメモリにも十分に収まる程度の小さなデータ量と言うことができる。従って、コンピュータ１００で個数データ生成処理を実行する場合、第１の変換テーブルのデータ量がメモリ容量を圧迫することはあり得ないと考えられる。また、コンピュータではなく、デジタルカメラ１２０などの画像機器やカラープリンタ２００の内部で個数データ生成処理を実施する場合も、２５６Ｋバイト程度であれば、特別にメモリを追加せずとも既存のメモリで吸収することが可能である。特に、現在の一般的なプリンタでは、プリンタ内部の処理を実行するために１０Ｍバイト程度のメモリを搭載していることから、２５６Ｋバイト程度の変換テーブルを記憶することでメモリ容量が圧迫されることはない。
【０１７７】
次に、順序値マトリックスを記憶するために必要なメモリ量について説明する。順序値マトリックスを記憶するためのメモリ量は、マトリックス１つ当たりに要するメモリ量と、マトリックスの個数とによって決定される。順序値マトリックスには、画素群内の各画素にドットが形成される順番が設定されているから、マトリックス１つ当たりのメモリ量は、画素群に含まれる画素数によって決まる。また、順序値マトリックスの個数は、図２４を用いて前述したように、ディザマトリックスを画素群と同じ大きさのブロックで分割した時に得られるブロック数に等しいから、ディザマトリックスの大きさと、画素群の大きさとによって決定される。結局、順序値マトリックスを記憶するために必要なメモリ量は、ディザマトリックスの大きさと、画素群の大きさとによって決定されることになる。
【０１７８】
図２８は、第１の変換テーブルについて試算したものと同様の各種条件を想定して、順序値マトリックスを記憶するために必要なメモリ量を試算した結果を示す説明図である。また、上述した実施例に対応する条件、すなわち、ディザマトリックスサイズが１２８×６４であり、画素群の大きさが４×２の条件での試算結果は、図２８では、破線で囲って示されている。以下では、この条件を代表例として用いながら、順序値マトリックスの試算例について説明する。
【０１７９】
順序値マトリックスの個数は、ディザマトリックスを画素群と同じサイズで分割して得られるブロックの個数であるから、ディザマトリックスの画素数（１２８×６４）を画素群当たりの画素数（４×２）で除算して、１０２４となる。また、順序値マトリックスに設定される順序値は、１〜８までの８通りの値を取るから、１つの順序値は３ビットあれば表現することができる。順序値マトリックスには８つの順序値が設定されているから、１つの順序値マトリックスを記憶するために必要なメモリ量は、３×８＝２４ビット（３バイト）となる。順序値マトリックスの個数は１０２４個あるから、全ての順序値マトリックスを記憶するために必要なメモリ量は、３Ｋバイトと求めることができる。
【０１８０】
また、画素群に含まれる画素数が４つの場合は、順序値は１〜４までの４通りの値を取るから、１つの順序値は２ビットあれば表現することができる。順序値マトリックスには４つの順序値が設定されるから、１つの順序値マトリックスを記憶するために要するメモリ量は、２×４＝８ビット（１バイト）となる。同様に、画素群に含まれる画素数が１６個の場合は、１つの順序値を表現するために要するデータ長は４ビット、これが１６個あるから、順序値マトリックスを記憶するために要するメモリ量は、４×１６＝６４ビット（８バイト）となる。
【０１８１】
図２８には、このようにして、各種条件で全ての順序値マトリックスを記憶するために必要なメモリ量を試算した結果が示されている。図示されている試算結果を見れば明らかなように、順序値マトリックスを記憶しておくために必要なメモリ量は、高々１０Ｋバイトあれば十分と考えられる。このため、順序値マトリックスを記憶するために必要なメモリ量が、実際の製品に搭載する上で障害になるほど大きくなることはない。
【０１８２】
最後に、第２の変換テーブルを記憶するために必要なメモリ容量について説明する。図１９に示したように、第２の変換テーブルには、順序値および個数データの組合せ毎にドット形成の有無が設定されている。画素群に含まれる画素数を８個とすれば、順序値は８通りの値を取る。また、個数データは画素群内に形成され得るドットの個数を表しているから、画素数＋１通りの値を取り得る。更に、ここでは、１つの画素にはドットが形成されるか否かのいずれかの状態しか取り得ないとしているから、１画素分のドット形成の有無は１ビットあれば表現することができる。結局、第２の変換テーブルを記憶するためのメモリ容量は、画素群に含まれる画素数をｎとすると、
ｎ×（ｎ＋１）ビット
あればよい。画素群に含まれる画素数は、高々１６個程度だから、第２の変換テーブルを記憶するために要するメモリ量は僅かなものである。
【０１８３】
以上に説明したように、第１の変換テーブルや、第２の変換テーブル、複数の順序値マトリックスのデータサイズは決して大きなものではなく、これらテーブルやマトリックスを記憶しておくためのメモリ量が、実際の製品に搭載する上で障害になるほど大きくなることはない。
【０１８４】
Ｃ．第２実施例：
以上に説明した第１実施例では、カラープリンタ２００で形成可能なドットは１種類であるものとして説明した。しかし、今日では、印刷画質を向上させることを目的として、大きさの異なるドットや、インク濃度の異なるドットなど、多種のドットを形成可能なプリンタ（いわゆる多値ドットプリンタ）が広く使用されている。本願の発明は、こうした多値ドットプリンタに適用した場合にも、大きな効果を得ることができる。以下では、第２実施例として、本願発明を多値ドットプリンタに適用した場合について説明する。
【０１８５】
Ｃ−１．第２実施例の画像印刷処理の概要  ：
第２実施例の画像印刷処理は、フローチャートについては、図５に示した第１実施例の画像印刷処理と同様である。以下では、図５のフローチャートを流用しながら、第２実施例の画像印刷処理の概要について簡単に説明する。
【０１８６】
第２実施例の画像印刷処理を開始すると、先ず初めに、コンピュータ１００で画像データを読み込んだ後、色変換処理を行う（図５のステップＳ１００およびステップＳ１０２相当）。次いで、解像度変換処理を行って、画像データの解像度を印刷解像度に変換した後（ステップＳ１０４相当）、個数データ生成処理を開始する（ステップＳ１０６相当）。
【０１８７】
前述したように、第１実施例では、カラープリンタ２００が形成可能なドットは１種類であるものとしており、個数データ生成処理では、画素群内に形成されるドット個数を表す個数データを画素群毎に生成して、カラープリンタ２００に出力した。これに対して、第２実施例では、カラープリンタ２００は、大きさの異なる３種類のドット、すなわち大ドット、中ドット、小ドットを形成可能であるものとする。このことと対応して、第２実施例の個数データ生成処理では、画素群内に、大ドット、中ドット、小ドットがそれぞれ何個ずつ形成されるかを表す個数データを生成することになる。また、詳細には後述するが、個数データを少ないデータ量で効率よく出力するために、大ドット、中ドット、小ドットの個数をそのまま出力するのではなく、コード化された状態で出力する。第２実施例の個数データ生成処理の詳細については後述する。
【０１８８】
カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵは、コンピュータ１００から供給された個数データを受け取ると、ドット形成有無決定処理を開始する（図５のステップＳ１０８相当）。詳細には後述するが、第２実施例のドット形成有無決定処理では、コード化された状態で供給された個数データを、大ドット、中ドット、小ドットの個数を示すデータに復号した後、これら各種ドットについてドット形成の有無を判断する。
【０１８９】
こうして、大中小の各種ドットについてドット形成の有無を決定したら、決定したドット形成の有無に従って、印刷媒体上にドットを形成する（図５のステップＳ１１０相当）。こうして大ドット、中ドット、小ドットを形成することにより、画像データに対応した画像が印刷される。
【０１９０】
Ｃ−２．第２実施例の個数データ生成処理  ：
次に、上述した第２実施例の画像印刷処理において、画素群内に形成される大ドット、中ドット、小ドットの個数がコード化された個数データを生成する処理について説明する。後述するように、コード化された個数データも、画素群の分類番号と画素群階調値とに基づいて変換テーブルを参照することにより、極めて容易に生成することができる。こうしたことが可能である理由を説明するために、先ず初めに、画素群内に形成される大中小ドットの個数を、ディザ法を用いて決定する処理について簡単に説明する。次いで、大中小ドットの個数をコード化する処理について説明し、その後に、第２実施例の個数データ生成処理で行われる詳細な処理内容について説明する。
【０１９１】
Ｃ−２−１．ディザ法を用いた大中小ドットの形成個数の決定処理  ：
図２９は、画素群内に形成される大ドット、中ドット、小ドットの個数を、ディザ法を適用して決定する処理の流れを示すフローチャートである。尚、かかる処理の詳細については、特許３２９２１０４号に開示されている。大中小ドットの個数を決定する場合も、処理を開始すると先ず初めに、互いに隣接する所定数の画素をまとめて画素群を形成する（ステップＳ６００）。ここでは、前述した実施例と同様に、主走査方向に４画素、副走査方向に２画素の合計８つの画素を画素群としてまとめるものとする。
【０１９２】
次いで、画素群の中からドット形成の有無を判断するべく、処理対象とする画素を１つ選択して（ステップＳ６０２）、選択した処理画素について、大ドット、中ドット、小ドットの形成有無を判断する（ステップＳ６０４）。大中小ドットの形成有無は次のようにして判断する。
【０１９３】
図３０は、選択した１つの画素についてハーフトーン処理を行うことにより、大ドット、中ドット、小ドットの形成有無を判断する処理の流れを示すフローチャートである。大中小ドットのハーフトーン処理を開始すると、先ず初めに処理対象とする画素についての画像データを、大ドット、中ドット、小ドットの各ドットについての密度データに変換する（ステップＳ６５０）。ここで、密度データとは、ドットをどの程度の密度で形成するかを表すデータである。密度データは、大きな階調値となるほどドットが高い密度で形成されることを表している。例えば、密度データの階調値「２５５」は、ドットの形成密度が１００％、すなわち全ての画素にドットが形成されることを表しており、密度データの階調値「０」は、ドットの形成密度が０％、すなわちいずれの画素にもドットが形成されないことを表している。こうした密度データへの変換は、ドット密度変換テーブルと呼ばれる数表を参照することによって行うことができる。
【０１９４】
図３１は、画像データの階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。図示されているように、ドット密度変換テーブルには、色変換によって得られた画像データの階調値に対して、小ドット・中ドット・大ドットの各ドットについての密度データが設定されている。画像データが階調値「０」近傍の領域では、中ドット・大ドットの密度データはいずれも階調値「０」に設定されている。小ドットの密度データは、画像データの階調値が大きくなるに連れて増加して行くが、画像データがある階調値に達すると今度は逆に減少し始め、代わりに中ドットの密度データが増加し始める。画像データの階調値が更に増加して、ある階調値に達すると、小ドットの密度データが階調値「０」となり、中ドットの密度データが減少し始めて、代わりに大ドットの密度データが少しずつ増加していく。図３０のステップＳ６５０では、このドット密度変換テーブルを参照しながら、画像データの階調値を、大ドットの密度データ、中ドットの密度データ、小ドットの密度データに変換する処理を行う。
【０１９５】
このようにして、処理対象とする画素について、大中小各ドットの密度データが得られたら、先ず初めに大ドットについての形成有無を判断する（図３０のステップＳ６５２）。かかる判断は、大ドットの密度データと、処理対象としている画素の対応する位置に設定されているディザマトリックスの閾値とを比較することによって行う。そして、密度データの方が大きい場合は処理対象の画素には大ドットを形成するものと判断される。その結果、大ドットを形成することになった場合は、ステップＳ６５４において「ｙｅｓ」と判断され、ハーフトーン処理を抜けて図２９に示したドット個数決定処理に復帰する。
【０１９６】
逆に、大ドットの密度データよりも閾値の方が大きければ、ステップＳ６５２において、処理対象の画素には大ドットは形成されないと判断される。判断の結果、大ドットは形成されない場合は（ステップＳ６５４：ｎｏ）、今度は中ドットについて形成有無を判断する処理を開始する。中ドットの形成有無の判断には、大ドットの密度データと中ドットの密度データとを加算して、中ドット用の中間データを算出する（ステップＳ６５６）。そして、得られた中ドット用の中間データと、ディザマトリックスの閾値とを比較することにより、中ドットの形成有無を判断する（ステップＳ６５８）。そして、中ドット用の中間データの方が大きい場合は処理対象の画素には中ドットを形成するものと判断される。その結果が、中ドットを形成することになった場合は、ステップＳ６６０において「ｙｅｓ」と判断されるので、ハーフトーン処理を抜けて図２９のドット個数決定処理に復帰する。
【０１９７】
逆に、中ドット用の中間データよりも閾値の方が大きかった場合は、ステップＳ６５８において、処理対象の画素には中ドットを形成しないと判断される。判断の結果、中ドットも形成されない場合は（ステップＳ６６０：ｎｏ）、今度は小ドットについて形成有無を判断する処理を開始する。小ドットの形成有無の判断には、中ドット用の中間データと小ドットの密度データとを加算して、小ドット用の中間データを算出する（ステップＳ６６２）。そして、得られた小ドット用の中間データと、ディザマトリックスの閾値とを比較することにより、小ドットの形成有無を判断する（ステップＳ６６４）。その結果、小ドット用の中間データの方が大きい場合は処理対象の画素には小ドットを形成するものと判断し、逆に、小ドット用の中間データよりも閾値の方が大きい場合には、いずれのドットも形成されないものと判断する。以上のような処理を行えば、処理対象としている画素について、大ドット、中ドット、小ドットのいずれのドットを形成するか、若しくは、いずれのドットも形成しないかを判断することができるので、図３０に示したハーフトーン処理を抜けて図２９のドット個数決定処理に復帰する。
【０１９８】
上述した処理を行いながら大中小の各ドットの形成有無を判断する様子について、図３２を参照しながら補足して説明する。図３２は、画素群内の各画素について、ディザ法を適用しながら大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。ここでは、説明が煩雑となることを避けるために、画素群内の全画素が同じ階調値を有しており、従って、大中小各ドットの密度データも同じ階調値を有しているものとする。図３２（ａ）は、画素群内の各画素について得られた大中小ドットの密度データを示しており、いずれの画素も、大ドットの密度データが「２」、中ドットの密度データが「９０」、小ドットの密度データが「３２」であったものとする。
【０１９９】
図３２（ｂ）は、ディザマトリックス中で、画素群の対応する位置に記憶されている閾値を表している。大ドットの形成有無を判断する際には、大ドットの密度データと、これら閾値とを比較する。ここでは、いずれの画素についても、大ドットの密度データは「２」であるとしているから、大ドットを形成すると判断される画素は、閾値「１」が設定された画素だけである。図３２（ｂ）には、大ドットが形成されると判断された画素には、細かい斜線を付して表示している。その他の画素については、中ドットか小ドットのどちらかが形成されるか、若しくはいずれのドットも形成されないかのいずれかであると考えられる。そこで、中ドットの形成有無を判断する。
【０２００】
中ドットの形成有無の判断に際しては、大ドットの密度データ「２」と中ドットの密度データ「９０」とを加算して中ドット用の中間データを算出し、得られた中間データ「９２」とディザマトリックスの閾値とを比較する。その結果、閾値「４２」が設定された画素と、閾値「５８」が設定された画素の２つの画素にのみ、中ドットが形成されるものと判断される。図３２（ｃ）には、中ドットが形成されると判断された画素には、少し細かい斜線を付して表示している。そして、大ドットも中ドットも形成されない画素については、小ドットが形成されるか、ドットが形成されないかのいずれかであると考えられる。そこで、中ドット用の中間データ「９２」に小ドットの密度データ「３２」を加算して、小ドット用の中間データを算出し、得られた中間データ「１２４」とディザマトリックスの閾値とを比較する。その結果、閾値「１０９」が設定された画素にのみ、小ドットが形成されるものと判断される。図３２（ｄ）には、小ドットが形成されると判断された画素には、粗い斜線を付して表示している。
【０２０１】
図２９に示したドット個数決定処理のステップＳ６０２〜Ｓ６０６では、以上のようにして画素群内の各画素について中間データを算出しながら、大中小の各ドットについての形成有無を判断していく。こうして、画素群内の全画素について判断を終了したら（ステップＳ６０６：ｙｅｓ）、画素群内に形成される大ドット、中ドット、小ドットの個数を取得する（ステップＳ６０８）。図３２に例示した画素群については、大ドット１個、中ドット２個、小ドット１個となる。
【０２０２】
こうして、大中小の各ドットのドット個数を取得したら、画像の全画素について以上の処理を行ったか否かを判断する（ステップＳ６１０）。そして、未処理の画素が残っている場合は、ステップＳ６００に戻って続く一連の処理を繰り返し、画像の全画素について処理を終了したと判断されたら、図２９に示したディザ法によるドット個数決定処理を終了する。その結果、画像データは複数の画素群に分割され、各画素群に形成される大ドット、中ドット、小ドットの個数が得られることになる。図３３は、画素群毎に大ドット、中ドット、小ドットの形成個数が得られた様子を概念的に示した説明図である。
【０２０３】
Ｃ−２−２．大中小ドットの形成個数のコード化処理  ：
以上のようにして画素群毎に各ドットの個数が求められたら、求めたドットの個数をコード化した状態でプリンタに出力する。すなわち、例えば図３３に示すように、ドットの種類が大中小の３種類である場合、ドットの種類毎に形成する個数を出力したのでは、１つの画素群について３回ずつドット個数を出力しなければならない。これでは、コンピュータ１００からカラープリンタ２００にデータを迅速に出力することで画像を迅速に印刷するという効果が減殺されてしまう。そこで、各ドットの個数を個別に出力するのではなく、各ドットの個数の組合せ、例えば（大ドットがＫ個、中ドットがＬ個、小ドットがＮ個）という組合せを、組合せ毎に設定された個別のコードに変換した後、得られたコードを出力するのである。
【０２０４】
大中小各ドットの組合せをコード化する処理は、ドット個数の組合せとコードデータとを対応付けた状態で予め対応テーブルに記憶しておき、この対応テーブルを参照することで行う。図３４は、画素群に形成される大中小各ドットの個数の組合せと、コードデータとが対応付けて設定された対応テーブルを示す説明図である。図３４に例示の対応テーブルには、例えば大ドット、中ドット、小ドットの個数がいずれも０個である組合せには、コードデータ「０」が対応付けられている。また、大ドットが０個、中ドットが０個、小ドットが１個の組合せには、コードデータ「１」が対応付けられている。このように対応テーブルには、各ドットの個数の組合せ毎に、予め固有のコードデータが対応付けて設定されている。
【０２０５】
ここで、大中小ドットの個数の組合せ数は、次のようなものとなる。画素群内の各画素には、大ドット、中ドット、小ドットのいずれのドットも形成され得るが、１つの画素に複数のドットが形成されることはないから、ドット個数の合計が画素群内の画素数（上述した実施例では８個）を越えることはない。従って、これら大中小ドットの個数の組合せは、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態の中から重複を許して８回選択するときの組合せの数に等しくなるから、
４Ｈ８  （＝４＋８−１Ｃ８）
によって求められ、１６５通りの組合せが存在していることになる。ここで、ｎＨｒは、ｎ種類の物の中から重複を許してｒ回選択したときに得られる組合せの数（重複組合せ数）を求める演算子である。また、ｎＣｒは、ｎ種類の物の中から重複を許さずにｒ回選択したときに得られる組合せの数を求める演算子である。
【０２０６】
このように、大中小各ドットの個数の組合せが１６５通り存在していることから、コードデータも「０」〜「１６４」の１６５通りあればよい。１６５通りであれば、８ビットのデータ長があれば表現することができる。結局、大ドットの個数、中ドットの個数、小ドットの個数と、３回出力する代わりに、８ビットのコード化された個数データを１回出力するだけで、画素群に形成する各種ドットの個数を出力することが可能となる。そこで、図３３に示すような画素群毎に得られたドット個数の組合せを、図３４に示すような対応テーブルを参照しながらコード化された個数データに変換してからプリンタに供給することで、個数データの供給を迅速化して画像を迅速に印刷するのである。
【０２０７】
Ｃ−２−３．変換テーブルを利用した第２実施例の個数データ生成処理  ：
以上では、画素群内に形成する大中小ドットの個数をディザ法を用いて決定した後、得られたドット個数の組合せをコード化してからプリンタに供給するという、言わば２段階の処理を経るものとして説明した。しかし、第２実施例の個数データ生成処理では、変換テーブル（第１の変換テーブル）を参照することにより、画素群の画像データをコード化された個数データに直接変換して、カラープリンタ２００に出力する。このため、個数データを極めて迅速に生成することが可能となるとともに、個数データを生成する処理もたいへん簡素なものとなる。その結果、コンピュータのような高い処理能力を有する機器を用いずとも、十分に実用的な速度で個数データを生成することが可能となる。以下では、こうした第２実施例の個数データ生成処理について説明する。
【０２０８】
図３５は、第２実施例の個数データ生成処理の流れを示すフローチャートである。尚、以下では、第２実施例の個数データ生成処理もコンピュータ１００で実施されるものとして説明するが、前述した第１実施例と同様に、第２実施例の個数データ生成処理も極めて簡素な処理とすることができるので、カラープリンタ２００あるいはデジタルカメラ１２０内で実施することも可能である。以下、フローチャートに従って説明する。
【０２０９】
第２実施例の個数データ生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成する（ステップＳ７００）。ここでは、上述した各種実施例と同様に、主走査方向に４画素分、副走査方向に２画素分の合計８つの画素を画素群にまとめるものとする。次いで、画素群の分類番号と、画素群階調値とを決定する（ステップＳ７０２）。画素群の分類番号および画素群階調値の決定方法は、前述した第１実施例と同様であるため、ここでは説明は省略するが、分類番号および画素群階調値はいずれも極めて簡便に決定することができる。
【０２１０】
次いで、画素群の分類番号と画素群階調値とから第１の変換テーブルを参照することにより、コード化された個数データを決定する（ステップＳ７０４）。図３６は、第２実施例の個数データ生成処理において参照される第１の変換テーブルを概念的に示した説明図である。図示されているように、第２実施例における第１の変換テーブルには、画素群の分類番号と画素群階調値との組合せに対応付けて、コード化された個数データが予め記憶されている。従って、第２実施例の個数データ生成処理においては、画素群の分類番号および画素群階調値を決定して第１の変換テーブルを参照するだけで、直ちにコード化された状態の個数データを決定することが可能である。
【０２１１】
以上のようにして、１つの画素群についてコード化された個数データが得られたら、画像データの全画素について処理を終了したか否かを判断する（ステップＳ７０６）。そして、未処理の画素が残っている場合は（ステップＳ７０６：ｎｏ）、ステップＳ７００に戻って新たな画素群を生成し、続く一連の処理を繰り返す。こうした操作を繰り返し、全画素についての処理が終了したと判断されたら（ステップＳ７０６：ｙｅｓ）、各画素群について得られたコード化済みの個数データをカラープリンタ２００に出力して（ステップＳ７０８）、図３５に示す第２実施例の個数データ生成処理を終了する。
【０２１２】
Ｃ−３．第２実施例のドット形成有無決定処理  ：
次に、第２実施例のカラープリンタ２００において、コード化された個数データを受け取って大中小各ドットの形成有無を決定する処理について説明する。前述した第１実施例のドット形成有無決定処理では、第２の変換テーブルを参照することで、個数データと順序値とから直ちにドット形成の有無を決定したが、第２実施例のドット形成有無決定処理においても同様に、第２の変換テーブルを参照することにより、コード化された個数データと順序値とから直ちに大中小ドットの形成有無を決定することが可能である。このような処理が可能な理由を明らかにするとともに、こうした処理を行うことで処理が高速化されることを示すために、以下では、先ず初めに、変換テーブル（第２の変換テーブル）を用いずに個数データからドット形成の有無を決定する処理について説明する。そして、次に、第２の変換テーブルを参照することで、個数データから大中小各種ドットの形成有無を迅速に決定可能な、第２実施例のドット形成有無決定処理について説明する。
【０２１３】
Ｃ−３−１．変換テーブルを参照せずにドット形成有無を決定する方法  ：
図３７は、第２の変換テーブルを参照することなく、大中小各種ドットの形成有無を決定する処理の流れを示すフローチャートである。以下では、フローチャートに従って簡単に説明する。処理を開始すると、先ず初めに、画素位置を決定しようとする画素群を１つ選択し（ステップＳ７５０）、その画素群の個数データを取得する（ステップＳ７５２）。こうして取得された個数データは、前述したようにデータ量を減少させるためにコード化されたデータとなっている。そこで、個数データを復号して、大ドット、中ドット、小ドットについての個数を示すデータに変換する処理を行う（ステップＳ７５４）。個数データを復号する処理は、復号テーブルを参照することによって行う。
【０２１４】
図３８は、コード化された個数データを復号するために参照される復号テーブルを概念的に示した説明図である。図示されるように、復号テーブルには、コード化された個数データに対応する大ドット、中ドット、小ドットのドット個数の組合せが設定されている。例えば、コード化された個数データが「１」である場合は、大ドットおよび中ドットの個数は０個で、小ドットの個数が１個であるドット個数の組合せに復号される。図３７のステップＳ７５４では、このような復号テーブルを参照することにより、コード化された個数データを大中小各ドットの個数を表すデータに変換する。
【０２１５】
次いで、個数データを復号した画素群に対応する順序値マトリックスを読み込んだ後（ステップＳ７５６）、読み込んだ順序値マトリックスを参照しながら、画素群内の各画素について大ドット、中ドット、小ドットの形成有無を判断していく。ここで順序値マトリックスとは、図２４を用いて前述したように、画素群内の各画素についてドットが形成される順番を設定したマトリックスである。
【０２１６】
図３９は、順序値マトリックスを参照しながら、大中小の各種ドットについての形成有無を画素毎に決定している様子を概念的に示した説明図である。例えば、個数データを復号することにより、大ドットの個数が１個、中ドットの個数が２個、小ドットの個数が１個の組合せが得られたものとする。各画素についてのドット形成の有無を決定するに際しては、先ず初めに大ドットを形成する画素を決定する（図３７のステップＳ７５８）。ここでは、大ドットの個数は１個であるとしているから、最もドットの形成されやすい画素、すなわち、順序値マトリックスで順序値が「１」に設定されている画素に大ドットが形成されるものと判断する。ここで、大ドットの個数がＮ個である場合は、順序値マトリックスで順序値が「１」から「Ｎ」までの値が設定されている画素に大ドットを形成するものと判断する。図３９では、大ドットを形成する画素には、細かい斜線を付して表示している。
【０２１７】
大ドットを形成する画素を決定したら、大ドットが形成されなかった画素の中から、今度は、中ドットを形成する画素を決定する（図３７のステップＳ７６０）。図３９に示すように、中ドットの個数は２個であり、順序値「１」が設定されている画素位置には大ドットが形成されているから、中ドットは順序値「２」が設定された画素と順序値「３」が設定された画素とに形成される。図３９では、中ドットが形成される画素位置には、少し粗い斜線を付して表示している。
【０２１８】
こうして中ドットを形成する画素を決定したら、大ドットも中ドットも形成されない画素の中から、小ドットを形成する画素を決定する（図３７のステップＳ７６２）。図３９に示すように、小ドットの個数は１個であり、順序値「１」の画素には大ドットが、順序値「２」および「３」の画素には中ドットが形成されているから、小ドットは順序値「４」が設定された画素に形成される。図３９では、小ドットが形成される画素には、粗い斜線を付して表示している。そして、最後に、大ドット、中ドット、小ドットのいずれも形成されなかった画素については、ドットを形成しないものと判断する（図３７のステップＳ７６４）。
【０２１９】
こうして、１つの画素群について、コード化された個数データを復号し、大中小の各ドットを形成する画素を決定したら、全画素群について処理を終了したか否かを判断する（図３７のステップＳ７６６）。そして、未処理の画素群が残っている場合は（ステップＳ７６６：ｎｏ）、ステップＳ６００に戻って、新たな画素群について続く一連の処理を繰り返す。こうして全ての画素群について処理を終了したと判断されたら（ステップＳ７６６：ｙｅｓ）、図３７に示したドット形成有無決定処理を終了する。
【０２２０】
Ｃ−３−２．変換テーブルを参照するドット形成有無決定処理  ：
以上に説明したドット形成有無の決定処理では、コード化された個数データを受け取ると、画素群内に形成する大中小ドットの個数を示すデータに復号した後、各画素についていずれのドットを形成するかを決定するという、言わば２段階の操作を経ている。しかし、第２の変換テーブルを参照すれば、各画素に形成するドットを、個数データを復号することなく直ちに決定することができる。以下では、第２の変換テーブルを参照してドット形成の有無を決定する第２実施例のドット形成有無決定処理について説明する。
【０２２１】
第２実施例のドット形成有無決定処理は、前述した第１実施例において図２３を用いて説明した変形例のドット形成有無決定処理に対して、参照する第２の変換テーブルが異なっているだけであり、処理の流れは同様である。そこで、以下では、図２３のフローチャートを流用しながら、第２実施例のドット形成有無決定処理について説明する。
【０２２２】
第２実施例のドット形成有無決定処理を開始すると、先ず初めに画素群を１つ選択し（ステップＳ５００相当）、その画素群の個数データを取得する（ステップＳ５０２相当）。次いで、複数組記憶されている順序値マトリックスの中から、選択した画素群に対応する順序値マトリックスを読み込んでやる（ステップＳ５０４相当）。すなわち、図２５および図２６を用いて前述したように、画素群の座標値（ｉ，ｊ）から、ｉおよびｊの下位５ビットを抜き出して、それぞれＩ，Ｊを求める。そして、ディザマトリックス中でＩ行Ｊ列のブロックから生成された順序値マトリックスを選択して、読み込んでやればよい。
【０２２３】
以上のようにして、画素群に対応する順序値マトリックスを読み込んだら、処理中の画素群の中から、ドット形成の有無を決定しようとする対象画素を１つ選択する（ステップＳ５０６相当）。そして、読み込んでおいた順序値マトリックスを参照することで、対象画素の順序値を取得した後（ステップＳ５０８相当）、第２の変換テーブルを参照することによって、対象画素についてのドット形成の有無を決定する（ステップＳ５１０相当）。
【０２２４】
ここで、前述した第１実施例のドット形成有無決定処理において参照した第２の変換テーブルには、個数データと順序値との組合せ毎に、ドット形成の有無を表すデータが設定されていた（図１９参照のこと）。これに対して、第２実施例のドット形成有無決定処理で参照する第２の変換テーブルには、コード化された状態の個数データと順序値との組合せ毎に、大中小いずれのドットを形成するか、あるいはドットを形成しないかを示すデータが設定されている。
【０２２５】
図４０は、第２実施例のドット形成有無決定処理において参照される第２の変換テーブルを概念的に示した説明図である。図３４を用いて前述したように、コード化された個数データは０〜１６４までの１６５通りの値を取り得る。また、１つの画素群は８つの画素から構成されているとしているから、順序値は１〜８までの８通りの値を取り得る。第２実施例における第２の変換テーブルには、これら１６５×８＝１３２０通りの組合せ毎に、ドットを形成しないことを示す値「０」、小ドットを形成することを示す値「１」、中ドットを形成することを示す値「２」、大ドットを形成することを示す値「３」のいずれかが設定されている。従って、画素群の個数データと対象画素の順序値とが分かれば、直ちにドット形成の有無を決定することができる。第２実施例のドット形成有無決定処理では、このような第２の変換テーブルを参照することで、対象画素に大中小いずれのドットを形成するのか、あるいはドットを形成しないのかを、直ちに決定するのである（図２３のステップＳ５１０相当）。
【０２２６】
ここで、図４０に示すような第２の変換テーブルを参照しながらドット形成の有無を決定した場合でも、大中小ドットについてのドット形成の有無を適切に決定可能な理由について説明する。図３７ないし図３９を用いて前述したように、第２の変換テーブルを参照することなくドット形成の有無を決定する場合は、大きくは２段階の操作を経ている。すなわち、先ず第１段階では、コード化された個数データを大中小の各種ドットの個数に変換する。続く第２段階では、順序値マトリックスに従って各画素についてのドット形成の有無を決定する。ここで、図３８に示されているように、コード化された個数データと、大中小ドットについての個数の組合せとは、一対一の関係にある。換言すれば、コード化された個数データが１つ与えられれば、各種ドットについての個数の組合せは一意的に決定することができる。
【０２２７】
一方、画素群内に形成される各種ドットの個数が復号されると、図３９に示したように、順序値マトリックスに従って、各画素についてのドット形成の有無が決定される。すなわち、順序値マトリックスが決まっていれば、各種ドットについての個数の組合せと、各画素についてのドット形成の有無とは、一対一の関係にある。上述したように、各種ドットについての個数の組合せは、コード化された個数データから一意的に決定されるから、結局、順序値マトリックスが決まっていれば、コード化された個数データから、画素群内の各画素について、各種ドットの形成有無は一意的に決定されることになる。
【０２２８】
ここで、各種ドットの個数と順序値マトリックスとに従って、各画素についてのドット形成の有無を決定する操作を更に詳しく観察すると、次のようなことが分かる。すなわち、各種ドットの個数の組合せは、ある順序値の画素にはどのようなドットが形成されるかを決定しており、順序値マトリックスは、そのような順序値の画素が、画素群中のどの位置にあるかを決定している。例えば、図３９に示した例では、大ドット１個、中ドット２個、小ドット１個であるから、順序値「１」の画素には大ドットが形成され、順序値「２」および「３」の画素には中ドットが形成され、順序値「４」の画素には小ドットが形成され、順序値「５」〜「８」の画素にはいずれのドットも形成されないことがわかる。そして、これら順序値の画素が、画素群中ではどの位置にあるかについては、順序値マトリックスによって決定されている。このことから、コード化された個数データが与えられれば、ある順序値の画素にはどのようなドットが形成されるかについてまでは、一意的に決定することが可能である。
【０２２９】
そこで、全ての個数データについて、順序値とその順序値を有する画素に形成されるドットの種類とを予め決定しておき、図４０に示すような第２の変換テーブルに設定しておく。そして、画素群内の対象画素についてドット形成の有無を決定する場合には、順序値マトリックスを参照することで対象画素の順序値を求め、次いで第２の変換テーブルを参照することで、その順序値に形成されるドットの種類を取得すれば、ドット形成の有無を適切に決定することが可能となるのである。
【０２３０】
こうして、１つの対象画素についてドット形成の有無を決定したら、選択した画素群内の全画素について、ドット形成の有無を決定したか否かを判断する（図２３のステップＳ５１２相当）。未だ、ドット形成の有無を決定していない画素が残っていれば、ステップＳ５０６に相当する箇所まで戻って、新たな対象画素を選択し、続く一連の処理を行う。こうした処理を繰り返し、画素群内の全画素についてドット形成の有無を決定したと判断されたら、今度は、個数データが供給された全画素群について処理を終了したか否かを判断する（ステップＳ５１４相当）。そして、未処理の画素群が残っていれば、一番初めまで戻って新たな画素群を選択し、続く一連の処理を行う。こうした処理を繰り返し、全ての画素群について処理が終了したら、第２実施例のドット形成有無決定処理を終了する。
【０２３１】
以上、第２実施例の画像印刷処理中で行われる個数データ生成処理、およびドット形成有無決定処理について詳しく説明した。上述した第２実施例の個数データ生成処理では、画素群についての分類番号と画素群階調値とを決定したら、第１の変換テーブルを参照するだけで、直ちにコード化された個数データを得ることができる。従って、コード化された個数データを極めて迅速に生成することができる。また、上述した第２実施例のドット形成有無決定処理では、コード化された状態の個数データを受け取ると、順序値マトリックスを参照して対象画素の順序値を取得した後、個数データと順序値とから第２の変換テーブルを参照することで、個数データを復号することなく各種ドットについての形成有無を決定することができる。このため、画素毎にドット形成有無を決定する処理を迅速に実行することが可能となり、延いては画像を迅速に出力することが可能となる。
【０２３２】
このように、個数データ生成処理およびドット形成有無決定処理は、いずれも極めて迅速に実行することが可能であるが、これに加えて、処理内容も極めて簡素なものとすることができる。以下では、この点につき、それぞれの処理について若干の補足説明を行う。
【０２３３】
初めに、個数データ生成処理について説明する。ディザ法を使用して、第１の変換テーブルを参照することなくドット個数を決定する場合、図２９および図３０に示されるような複雑な処理を行う必要がある。更に、得られたドット個数の組合せをコード化しなければならない。これに対して、第１の変換テーブルを参照すれば、同様の処理を、図３５に示すような極めて簡素な処理で行うことができる。
【０２３４】
加えてディザ法を用いた方法では、図３０に示されているように、画素群内の各画素について大中小ドットの形成有無を判断する際には、大ドットの形成有無、および中ドットの形成有無によって条件分岐が発生する。ＣＰＵでは高速な処理を可能とするために、パイプライン処理と呼ばれる技術が採用されているが、条件分岐が発生すると、パイプライン処理による効果を得ることができない。場合によっては、パイプライン処理を行うことで処理速度が低下してしまうことすらある。これに対して、第１の変換テーブルを参照する場合は、図３５に示したように条件分岐を伴うことなく、コード化された個数データを得ることができ、従って、パイプライン処理の効果を十分に引き出して迅速な処理を行うことが可能である。第２実施例の個数データ生成処理は、単に処理が簡素なだけでなく、このような点からも高速処理に適した処理であると言うことができる。
【０２３５】
次に、ドット形成有無を決定する処理について説明する。大中小各ドットについての形成の有無を、第２の変換テーブルを用いることなく決定する場合、図３７に示す手順を踏むことになる。すなわち、初めに大ドットについて判断し、次いで中ドット、小ドットと、順番に判断していくことになる。これに対して、第２の変換テーブルを利用する場合は、テーブルを１回参照するだけという極めて簡単な操作で、大中小いずれのドットが形成されるかを決定することができる。
【０２３６】
加えて、大ドット、中ドット、小ドットと順番に判断する処理には、多くの条件分岐が存在する。すなわち、大ドットを形成すると判断された場合には、中ドットや小ドットについての判断は不要となる。また、中ドットを形成すると判断されると、小ドットのついての判断は不要となる。更に、小ドットも形成されないと判断された場合にだけ、その画素にはドットを形成しないものと判断される。このように、大ドット、中ドット、小ドットについての判断結果に応じて、以降の処理内容が異なっており、従って、多数の条件分岐が含まれている。これに対して、第２の変換テーブルを参照する場合は、こうした条件分岐を伴うことなく、大中小各ドットについての形成有無を直ちに決定することができる。このため、上述した個数データ生成処理と同様に、パイプライン処理の効果を十分に引き出して、一層迅速な処理を行うことが可能となる。上述した第２実施例の個数データ生成処理およびドット形成有無決定処理は、単に処理が簡素なだけでなく、このような点からも高速処理に適した処理であると言うことができる。
【０２３７】
Ｃ−４．メモリ使用量：
最後に、第２実施例の画像印刷処理におけるメモリ使用量について説明する。図４１は、第１の変換テーブルを記憶するために要するメモリ量（データサイズ）を、各種条件下で試算した結果を示す説明図である。図２７に示した第１実施例と同様に、第２実施例においても第１の変換テーブルのデータサイズは、分類番号の個数と、画素群階調値が取り得る範囲と、個数データ１つ当たりのデータ長とによって決定される。ここで、分類番号の個数は、ディザマトリックスのサイズと画素群の大きさとによって決定される。また、個数データのデータ長は、画素群当たりの状態数、すなわち、１つの画素群内で起こり得る大中小ドットの個数の組合せの種類によって決定される。例えば、前述したように、１つの画素群が８つの画素で構成されており、１つの画素が取り得る状態が、大ドットを形成、中ドットを形成、小ドットを形成、ドットを形成しないの４つの状態である場合は、大中小ドットの個数の組合せは１６５通り存在している。１６５通りであれば８ビットのデータ長があれば表現することができるから、個数データ１つ当たりのデータ長は１バイトとなる。同様にして、１つの画素群が１６個の画素から構成されている場合は、個数データ１つ当たりのデータ長は１０ビット必要となるので、２バイトのデータとなる。
【０２３８】
図４１には、ディザマトリックスのサイズと、画素群の大きさとの組合せ毎に、変換テーブルのデータ量を試算した結果が示されている。尚、図４１の右側には、個数データ１つ当たりに必要なデータ長が示されている。図４１の試算結果に示されているように、第２実施例においても第１の変換テーブルのデータ量は、高々１Ｍバイトであり、実際には２５６Ｋバイト〜５１２Ｋバイト程度に収まると考えられる。この程度であれば、一般的なコンピュータのキャッシュメモリにも十分に収まる程度の小さなデータ量であり、また、デジタルカメラ１２０などの画像機器やカラープリンタ２００のメモリにも、十分に搭載可能である。
【０２３９】
ここで、図４１に表示されているデータ圧縮率について付言しておく。図４１に示されたデータ圧縮率とは、画素毎にドット形成の有無を表すデータを出力する代わりに、画素群内に形成されるドットの個数の組合せをコード化した状態で出力することで、データ量がどの程度圧縮されるかを表す指標である。データ圧縮率が大きくなる程、コンピュータ１００からカラープリンタ２００にデータを迅速に出力することが可能となる。データ圧縮率は、次のようにして算出される。例えば、上述した実施例の場合について説明すると、画素群内に含まれる画素は８個である。また、画素単独で、大ドットを形成、中ドットを形成、小ドットを形成、ドットを形成せず、の４つの状態を取り得るから、１画素当たり２ビットのデータ長が必要となる。従って、画素毎に形成するドットの種類を表現しようとすると、画素群当たり１６ビットのデータ長が必要となる。これに対して、ドット個数の組合せをコード化してやれば、画素群当たり８ビットあれば足りる。結局、１６ビットのデータ長を８ビットに圧縮することが可能となるので、データ圧縮率は０．５となる。
【０２４０】
図４１に示されているように、データ圧縮率は、条件によって変動するものの、おおむね０．５程度となっている。すなわち、大中小各ドットの個数の組合せをコード化することで、画素毎にドットの種類と形成有無とを出力する場合に比べて、データ量をほぼ半減させることができ、個数データをカラープリンタ２００に迅速に出力することができる。この結果、画像を迅速に印刷することが可能となるのである。
【０２４１】
次に、第２の変換テーブルを記憶するために必要なメモリ容量について説明する。図４０に示したように、第２の変換テーブルには、順序値および個数データの組合せ毎にドット形成の有無が設定されている。画素群に含まれる画素数を８個とすれば、順序値は８通りの値を取る。また、形成可能なドットの種類が大ドット、中ドット、小ドットの３種類であるとすれば、個数データは１６５通りの値を取り得る。更に、ドット形成有無の判断結果は、大ドットを形成する、中ドットを形成する、小ドットを形成する、ドットを形成しないの４通りしか取り得ないから、１つの判断結果は２ビットあれば表現することができる。従って、図４０に示した第２の変換テーブルは、８×１６５×２＝２６４０ビット（０．３２２Ｋバイト）あれば記憶することができる。
【０２４２】
図４２は、第２の変換テーブルを記憶するために必要なメモリ量を、画素群の大きさ毎に試算した結果をまとめた説明図である。図示されているように、変換テーブルについても、数Ｋバイト程度あれば、十分記憶することができる。
【０２４３】
以上に説明したように、第２実施例の画像印刷処理においても、第１の変換テーブルや、第２の変換テーブル、複数の順序値マトリックスを記憶しておくために要するメモリ量は僅かである。加えて、上述した第２実施例の個数データ生成処理では、第１の変換テーブルを参照して直ちにコード化された個数データを得ており、図６に例示するようなディザマトリックスや、階調データを各種ドットの密度データに変換するための図３１に例示するようなドット密度変換テーブルを参照する必要がない。このため、第２実施例においては、ディザマトリックスやドット密度変換テーブルを記憶しておく必要が無くなる。こうしたことを考慮すれば、第２実施例の画像印刷処理についても、メモリ容量が製品への搭載の障害となることはない。
【０２４４】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、以上の実施例では、印刷用紙上にドットを形成して画像を印刷する場合について説明したが、本発明の適用範囲は画像を印刷する場合に限られるものではない。例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置などにも、本発明を好適に適用することができる。
【図面の簡単な説明】
【０２４５】
【図１】印刷システムを例にとって本発明の概要を説明するための説明図である。
【図２】本実施例の画像処理装置としてのコンピュータの構成を示す説明図である。
【図３】本実施例のカラープリンタの概略構成を示す説明図である。
【図４】インク吐出用ヘッドにおけるインクジェットノズルの配列を示す説明図である。
【図５】第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。
【図６】ディザマトリックスの一部を概念的に例示した説明図である。
【図７】ディザマトリックスを参照しながら各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。
【図８】ディザ法を用いて画像データをドット形成の有無を表すデータに変換している様子を示した説明図である。
【図９】ドット個数を示すデータから画素毎にドット形成の有無を表すデータを生成する様子を示した説明図である。
【図１０】ブルーノイズマスク特性を有するディザマトリックス、およびグリーンノイズマスク特性を有するディザマトリックスに設定されている閾値の空間周波数特性を概念的に例示した説明図である。
【図１１】第１実施例の個数データ生成処理の流れを示すフローチャートである。
【図１２】画素群毎の分類番号を決定するための考え方を示した説明図である。
【図１３】画素群の分類番号を決定する方法を示した説明図である。
【図１４】着目画素群の分類番号を決定する方法を具体的に示した説明図である。
【図１５】画素群の分類番号と画素群階調値とから個数データを取得するために参照される第１の変換テーブルを概念的に示した説明図である。
【図１６】画素群の分類番号と画素群階調値との組合せに応じて適切な個数データを決定する様子を概念的に示した説明図である。
【図１７】第１実施例のドット形成有無決定処理の流れを示すフローチャートである。
【図１８】第１実施例のドット形成有無決定処理において各画素についてのドット形成の有無が決定される様子を概念的に示した説明図である。
【図１９】対象画素についてのドット形成の有無を決定するために参照される第２の変換テーブルを概念的に示した説明図である。
【図２０】第１の変形例における画像印刷処理の流れを示したフローチャートである。
【図２１】解像度調整処理の概要を示した説明図である。
【図２２】第１の変形例における個数データ生成処理の流れを示すフローチャートである。
【図２３】第２の変形例におけるドット形成有無決定処理の流れを示すフローチャートである。
【図２４】第２の変形例のドット形成有無決定処理中で参照される複数の順序値マトリックスを生成する方法について示した説明図である。
【図２５】画素群に対応する順序値マトリックスを選択する方法を示した説明図である。
【図２６】画素群の座標値から適用する順序値マトリックスを選択する方法を具体的に示した説明図である。
【図２７】第１の変換テーブルを記憶するためのメモリ使用量を試算した結果を示す説明図である。
【図２８】順序値マトリックスを記憶するために必要なメモリ量を試算した結果を示す説明図である。
【図２９】画素群内に形成される大ドット、中ドット、小ドットの個数をディザ法により決定する処理の流れを示すフローチャートである。
【図３０】大ドット、中ドット、小ドットの形成有無を判断するハーフトーン処理の流れを示すフローチャートである。
【図３１】画像データの階調値を大中小各ドットについての密度データに変換するためのドット密度変換テーブルを概念的に示した説明図である。
【図３２】ディザ法を適用しながら大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。
【図３３】画素群毎に大ドット、中ドット、小ドットの形成個数が得られた様子を概念的に示した説明図である。
【図３４】画素群に形成される大中小各ドットの個数の組合せとコードデータとが対応付けて設定された対応テーブルを示す説明図である。
【図３５】第２実施例の個数データ生成処理の流れを示すフローチャートである。
【図３６】第２実施例の個数データ生成処理において参照される第１の変換テーブルを概念的に示した説明図である。
【図３７】第２の変換テーブルを参照することなく大中小各ドットの形成有無を決定する処理の流れを示すフローチャートである。
【図３８】コード化された個数データを復号するための復号テーブルを概念的に示した説明図である。
【図３９】順序値マトリックスを参照しながら大中小の各種ドットについての形成有無を決定する様子を概念的に示した説明図である。
【図４０】第２実施例のドット形成有無決定処理で参照される第２の変換テーブルを概念的に示した説明図である。
【図４１】第１の変換テーブルを記憶するためのメモリ量を試算した結果を示す説明図である。
【図４２】第２の変換テーブルを記憶するためのメモリ量を試算した結果を示す説明図である。
【符号の説明】
【０２４６】
１０…コンピュータ、  ２０…カラープリンタ、  １００…コンピュータ、
１０８…周辺機器インターフェースＰＩＦ、
１０９…ディスクコントローラＤＤＣ、
１１０…ネットワークインターフェースカードＮＩＣ、
１１２…ビデオインターフェースＶＩＦ、
１１６…バス、  １１８…ハードディスク、  １２０…デジタルカメラ、
１２２…カラースキャナ、  １２４…フレキシブルディスク、
１２６…コンパクトディスク、  ２３０…キャリッジモータ、  ２３５…モータ、
２３６…プラテン、  ２４０…キャリッジ、  ２４１…印字ヘッド、
２４２…インクカートリッジ、  ２４３…インクカートリッジ、
２４４…インク吐出用ヘッド、  ２６０…制御回路、  ２００…カラープリンタ、
３００…通信回線、  ３１０…記憶装置
【図１】
2005269527.tif 000003
【図２】
2005269527.tif 000004
【図３】
2005269527.tif 000005
【図４】
2005269527.tif 000006
【図５】
2005269527.tif 000007
【図６】
2005269527.tif 000008
【図７】
2005269527.tif 000009
【図８】
2005269527.tif 000010
【図９】
2005269527.tif 000011
【図１０】
2005269527.tif 000012
【図１１】
2005269527.tif 000013
【図１２】
2005269527.tif 000014
【図１３】
2005269527.tif 000015
【図１４】
2005269527.tif 000016
【図１５】
2005269527.tif 000017
【図１６】
2005269527.tif 000018
【図１７】
2005269527.tif 000019
【図１８】
2005269527.tif 000020
【図１９】
2005269527.tif 000021
【図２０】
2005269527.tif 000022
【図２１】
2005269527.tif 000023
【図２２】
2005269527.tif 000024
【図２３】
2005269527.tif 000025
【図２４】
2005269527.tif 000026
【図２５】
2005269527.tif 000027
【図２６】
2005269527.tif 000028
【図２７】
2005269527.tif 000029
【図２８】
2005269527.tif 000030
【図２９】
2005269527.tif 000031
【図３０】
2005269527.tif 000032
【図３１】
2005269527.tif 000033
【図３２】
2005269527.tif 000034
【図３３】
2005269527.tif 000035
【図３４】
2005269527.tif 000036
【図３５】
2005269527.tif 000037
【図３６】
2005269527.tif 000038
【図３７】
2005269527.tif 000039
【図３８】
2005269527.tif 000040
【図３９】
2005269527.tif 000041
【図４０】
2005269527.tif 000042
【図４１】
2005269527.tif 000043
【図４２】
2005269527.tif 000044