(57)【要約】【課題】  高画質な画像を簡素な処理で迅速に出力可能な技術を提供する。【解決手段】  画素が複数個ずつ画素群毎にまとめて、該画素群を代表する画素群階調値を決定する。次いで、画素群階調値とコード値とが画素群毎に関連づけられた第１の対応関係を参照して、画素群階調値をコード化する。その後、コード値と、画素群内の各画素についてのドット形成の有無とが、画素群毎に関連づけられた第２の対応関係を参照することにより、画素群毎のコード値から、各画素についてドットの形成有無を決定した後、決定したドット形成有無に基づいてドットを形成する。コード値は、データの生成や授受を迅速に行うことができる。更に、コード値から直ちにドット形成の有無を決定することができるので、高画質な画像を迅速に出力することが可能となる。【選択図】        図１
2006005899.tif 000002
【特許請求の範囲】
【請求項１】
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより、画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群毎に得られたコード値を前記画像出力装置に供給するコード値供給手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から、該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記決定した出力ドット配置に基づいてドットを形成するドット形成手段と
を備えている画像出力システム。
【請求項２】
請求項１記載の画像出力システムであって、
前記コード化手段は、前記第１の対応関係として、前記画素群階調値と該画素群階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段であり、
前記コード値供給手段は、前記コード値として、前記多値化結果値を供給する手段であり、
前記出力ドット配置決定手段は、前記第２の対応関係として、前記多値化結果値と、前記出力ドット配置とが、前記画素群毎に関連付けられた対応関係を参照する手段である画像出力システム。
【請求項３】
画像データに所定の画像処理を施す第１の画像処理装置と、該画像処理によって得られた第１の画像データを、画素毎にドット形成の有無を表した第２の画像データに変換する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群毎に得られたコード値を前記第１の画像データとして出力する第１の画像データ出力手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から、該画素群についての出力ドット配置を決定した後、該決定結果を前記第２の画像データとして出力する画像処理装置である画像処理システム。
【請求項４】
請求項３記載の画像処理システムであって、
前記コード化手段は、前記第１の対応関係として、前記画素群階調値と該画素群階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段であり、
前記第１の画像データ出力手段は、前記コード値として、前記多値化結果値を供給する手段であり、
前記第２の画像処理装置は、前記第２の対応関係として、前記出力ドット配置と、前記多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する装置である画像処理システム。
【請求項５】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取るコード値受取手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から、該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記出力ドット配置に基づいてドットを形成するドット形成手段と
を備える画像出力装置。
【請求項６】
請求項５記載の画像出力装置であって、
前記コード値受取手段は、前記コード値として、前記画素群の階調値を多値化することによって得られた多値化結果値を受け取る手段であり、
前記出力ドット配置決定手段は、前記第２の対応関係として、前記出力ドット配置と、前記多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段である画像出力装置。
【請求項７】
請求項５記載の画像出力装置であって、
前記コード値受取手段は、前記画素群毎に付与された分類番号を考慮しながら該画素群の階調値をコード化して得られたコード値を、前記画像データとして受け取る手段であり、
前記出力ドット配置決定手段は、前記第２の対応関係として、前記出力ドット配置と、前記コード値とが、前記分類番号毎に関連づけられた対応関係を参照する手段である画像出力装置。
【請求項８】
請求項７記載の画像出力装置であって、
前記コード値を受け取った画素群を、前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に前記分類番号を付与する分類番号付与手段を備える画像出力装置。
【請求項９】
前記画素群に付与される分類番号には、少なくとも１００種類以上の番号が存在している請求項７または請求項８記載の画像出力装置。
【請求項１０】
前記画素群にまとめられる画素数と、該画素群に付与される分類番号の種類数との乗算値が、少なくとも１０００以上である請求項７または請求項８記載の画像出力装置。
【請求項１１】
請求項５ないし請求項８のいずれかに記載の画像出力装置であって、
前記出力ドット配置決定手段は、前記第２の対応関係として、画素毎のドット形成の有無を表す値が前記画素群内での画素位置に応じた所定の順序で並んだデータと、前記コード値とが、関連づけられた対応関係を参照する手段である画像出力装置。
【請求項１２】
請求項５ないし請求項８のいずれかに記載の画像出力装置であって、
前記受け取ったコード値と所定の閾値とを比較することにより、該コード値が前記画素群内に形成すべきドットの個数を表しているか否かを判定するコード値判定手段を備え、
前記出力ドット配置決定手段は、前記コード値が前記画素群内に形成すべきドットの個数を表している場合には、該画素群内で各画素にドットが形成される画素の順番を特定し、該ドットの個数と該特定した順番とに基づいて、該画素群についての前記出力ドット配置を決定する手段である画像出力装置。
【請求項１３】
請求項１２記載の画像出力装置であって、
前記出力ドット配置決定手段は、前記画素群内でドットが形成される画素の順番を該画素群内の各画素について予め記憶しておき、前記受け取ったコード値が前記ドットの個数を表している場合には、該ドットの個数と該記憶しておいた画素の順番とに基づいて、該画素群についての前記出力ドット配置を決定する手段である画像出力装置。
【請求項１４】
請求項１２記載の画像出力装置であって、
前記画素群に含まれる画素数をＮとして、該画素群に形成されるドットの個数をＭとしたときに、ドットを形成することを意味するＭ個の連続するデータと、ドットを形成しないことを意味する（Ｎ−Ｍ）個の連続するデータとからなる中間データを、前記コード値に基づいて生成する中間データ生成手段と、
前記受け取ったコード値が前記ドットの個数を表している場合には、該コード値を前記中間データ生成手段に供給するコード値供給手段と
を備え、
前記出力ドット配置決定手段は、前記受け取ったコード値が前記ドットの個数を表している場合には、該コード値から生成された前記中間データの中から、前記画素の順番に対応する位置のデータを読み出すことにより、前記画素群についての出力ドット配置を決定する手段である画像出力装置。
【請求項１５】
請求項５ないし請求項８のいずれかに記載の画像出力装置であって、
前記出力ドット配置決定手段は、前記第２の対応関係として、単ドットあたりに表現可能な階調値の異なる複数種類のドットについての前記出力ドット配置と、前記コード値とが関連づけられた対応関係を参照することにより、該複数種類のドットについての形成有無を決定する手段であり、
前記ドット形成手段は、前記複数種類のドットを形成する手段である画像出力装置。
【請求項１６】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から、該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記決定した出力ドット配置に基づいてドットを形成するドット形成手段と
を備える画像出力装置。
【請求項１７】
請求項１６記載の画像出力装置であって、
前記コード化手段は、前記第１の対応関係として、前記画素群階調値と該画素群階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段であり、
前記出力ドット配置決定手段は、前記第２の対応関係として、前記出力ドット配置と、前記多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段である画像出力装置。
【請求項１８】
請求項１６記載の画像出力装置であって、
前記受け取ったコード値と所定の閾値とを比較することにより、該コード値が前記画素群内に形成すべきドットの個数を表しているか否かを判定するコード値判定手段を備え、
前記出力ドット配置決定手段は、前記コード値が前記画素群内に形成すべきドットの個数を表している場合には、該画素群内で各画素にドットが形成される画素の順番を特定し、該ドットの個数と該特定した順番とに基づいて、該画素群についての前記出力ドット配置を決定する手段である画像出力装置。
【請求項１９】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から、該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する制御データ出力手段と
を備える画像処理装置。
【請求項２０】
請求項１９記載の画像処理装置であって、
前記コード化手段は、前記第１の対応関係として、前記画素群階調値と該画素群階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段であり、
前記制御データ出力手段は、前記第２の対応関係として、前記出力ドット配置と、前記多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段である画像処理装置。
【請求項２１】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取るコード値受取手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する制御データ出力手段と
を備える画像処理装置。
【請求項２２】
請求項２１記載の画像処理装置であって、
前記コード値受取手段は、前記コード値として、前記画素群の階調値を多値化することによって得られた多値化結果値を受け取る手段であり、
前記制御データ出力手段は、前記第２の対応関係として、前記出力ドット配置と、前記多値化結果値とが、前記画素群毎に関連付けられた対応関係を参照する手段である画像処理装置。
【請求項２３】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する第１の工程と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する第２の工程と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する第３の工程と、
前記決定した出力ドット配置に基づいてドットを形成する第４の工程と
を備える画像出力方法。
【請求項２４】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る工程（Ａ）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する工程（Ｂ）と、
前記決定した出力ドット配置に基づいてドットを形成する工程（Ｃ）と
を備える画像出力方法。
【請求項２５】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する工程（１）と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する工程（２）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する工程（３）と
を備える画像処理方法。
【請求項２６】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る工程（ア）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する工程（イ）と
を備える画像処理方法。
【請求項２７】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する第１の機能と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する第２の機能と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する第３の機能と、
前記決定した出力ドット配置に基づいてドットを形成する第４の機能と
を実現するプログラム。
【請求項２８】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する機能（Ｂ）と、
前記決定した出力ドット配置に基づいてドットを形成する機能（Ｃ）と
を実現するプログラム。
【請求項２９】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する機能（１）と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する機能（２）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（３）と
を実現するプログラム。
【請求項３０】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（ア）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（イ）と
を実現するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像データに基づいて画像を出力する技術に関し、詳しくは、画像データに所定の画像処理を施してドットを適切な密度で発生させることにより、画像を出力する技術に関する。
【背景技術】
【０００２】
印刷媒体や液晶画面といった各種の出力媒体上にドットを形成することで画像を出力する画像出力装置は、各種画像機器の出力装置として広く使用されている。これら画像出力装置では、画像は画素と呼ばれる小さな領域に細分された状態で扱われており、ドットはこれら画素に形成される。ドットを画素に形成した場合、もちろん画素１つ１つについて見れば、ドットが形成されるか否かのいずれかの状態しか取り得ない。しかし、ある程度の広さを持った領域で見れば、形成するドットの密度に粗密を生じさせることは可能であり、ドットの形成密度を変えることによって多階調の画像を出力することが可能である。例えば、印刷用紙上に黒いインクのドットを形成する場合、ドットが密に形成されている領域は暗く見えるし、逆にドットがまばらに形成されている領域は明るく見える。また、液晶画面に輝点のドットを形成する場合、ドットが密に形成された領域は明るく見え、まばらに形成された領域は暗く見える。従って、ドットの形成密度を適切に制御してやれば、多階調の画像を出力することが可能となる。このように、適切な形成密度が得られるようにドットの形成を制御するためのデータは、出力しようとする画像に所定の画像処理を施すことによって発生させる。
【０００３】
近年では、これら画像出力装置には、出力画像の高画質化や大画像化が要請されるようになってきた。高画質化の要請に対しては、画像をより細かな画素に分割することが効果的である。画素を小さくしてやれば、画素に形成されるドットが目立たなくなるので画質を向上させることができる。また、大画像化の要請に対しては、画素数を増加させることによって対応する。もちろん、個々の画素を大きくすることによっても出力画像を大きくすることはできるが、これでは画質の低下を招いてしまうので、大型化の要請に対しては画素数を増加させることが効果的である。
【０００４】
もっとも、画像を構成する画素数が増加すると画像処理に時間がかかってしまい、画像を迅速に出力することが困難となる。そこで、画像処理を迅速に実行可能とする技術が提案されている（特許文献１）。
【０００５】
【特許文献１】特開２００２−１８５７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、画像処理を迅速に行ったとしても、画像データの転送に、あるいは処理済みの画像データの転送に時間がかかってしまったのでは、画像の出力を迅速化する効果にも自ずから限界がある。
【０００７】
また、近年では、デジタルカメラなどで撮影した画像のデータを、印刷装置などの画像出力装置に直接供給して直ちに画像を出力したいという要請も存在する。このような場合は、いわゆるパーソナルコンピュータ等のような高い処理能力を備えた画像処理装置を用いて画像処理を行うことはできない。従って、デジタルカメラなどの画像撮影装置あるいは画像出力装置のいずれか、若しくは両者で分担して実行可能なように、簡素な画像処理としておく必要がある。
【０００８】
この発明は従来技術における上述した課題を解決するためになされたものであり、十分な出力画質を維持したまま、画像処理およびデータ転送を高速に実行可能な、簡素な画像処理技術の提供を目的とする。
【課題を解決するための手段】
【０００９】
上述した課題の少なくとも一部を解決するために、本発明の画像出力システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより、画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群毎に得られたコード値を前記画像出力装置に供給するコード値供給手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記決定した出力ドット配置に基づいてドットを形成するドット形成手段と
を備えていることを要旨とする。
【００１０】
また、上記の画像出力システムに対応する本発明の画像出力方法は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する第１の工程と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する第２の工程と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する第３の工程と、
前記決定した出力ドット配置に基づいてドットを形成する第４の工程と
を備えることを要旨とする。
【００１１】
かかる本発明の画像出力システムおよび画像出力方法においては、画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定した後、得られた画素群階調値をコード化する。ここで画素群としては、常に同数の画素をまとめたものであっても良いが、例えば、所定のパターンあるいは所定の規則に従って異なる個数ずつ画素をまとめたものとすることもできる。また、画素群階調値の決定に際しては、例えば画素群内に含まれる各画素の画像データに基づいて決定することができる。次いで、予め定められた第１の対応関係を参照することにより、画素群毎に画素群階調値のコード化を行う。この時に参照する第１の対応関係には、画素群階調値と該画素群階調値をコード化した結果として得られるコード値とが、画素群毎に関連づけられている。尚、第１の対応関係としては、画素群階調値と画素群とが決まれば、それに応じたコード値が１つ決まるようなものであれば種々の形態を取ることが可能であり、例えば、対応表や関数式などの形態を取ることができる。あるいは、後述するように、コード値が、画素群階調値を多値化することによって得られる多値化結果値である場合には、多値化結果値を決定するために用いられる閾値を記憶した形態を取ることもできる。こうして画素群毎に得られたコード値から、予め定められた第２の対応関係を参照することにより、画素群内の各画素についてのドットの形成有無を表す出力ドット配置を決定する。尚、第２の対応関係としても、コード値と画素群とが決まれば、それに応じて、画素群の出力ドット配置が１つ決まるようなものであれば種々の形態を取ることが可能であり、例えば、対応表や関数式などの形態を取ることができる。そして、得られた出力ドット配置に従ってドットを形成することで画像を出力する。例えば、印刷媒体や液晶画面などの媒体上にドットを形成すれば、これら媒体上に画像が出力されることになる。
【００１２】
詳細には後述するが、画像の全画素についてドット形成の有無を表すデータに比べれば、コード値はたいへんに少ないデータ量で表現することができる。このため、データを速やかにやり取りすることが可能となり、延いては画像を迅速に出力することが可能となる。更に、画素群の画素群階調をコード化するに際しては、第１の対応関係を参照することによってコード化することとすれば、画素群階調値を迅速にコード化することも可能となる。
【００１３】
加えて、画素群階調値をコード化する際に参照される第１の対応関係には、画素群階調値とコード値とが画素群毎に関連づけられている。このため、単に画素群階調値とコード値とを関連づけた場合に比べて、コード値の取り得る個数を減少させることができる。取り得る個数が少なくなれば、コード値を表現するために要するデータ量を少なくすることができるので、その分だけデータの授受を迅速に行うことができ、延いては、画像を迅速に出力することが可能となる。
【００１４】
また、画素群についての出力ドット配置は、画素群のコード値から第２の対応関係を参照することで、直ちに決定することができる。このため、ドット形成の有無を極めて迅速に決定することができ、延いては、画像を迅速に出力することが可能となる。更に、詳細な理由は後述するが、画素群とコード値とが決まれば、その画素群についての出力ドット配置を適切に決定することができる。このため、高画質な画像を迅速に出力することが可能となる。
【００１５】
更に、画素群階調値からコード値を得るための処理や、画素群についての出力ドット配置を決定する処理は、予め設定された対応関係を参照するという簡素な処理となる。このため、コンピュータなどのようには高度な処理能力を有さない機器においても、十分に実用的な速度で処理することが可能である。従って、例えば画像データを、コンピュータなどを介さずに直接、画像出力装置に供給し、画像データにこれらの画像処理を画像出力装置の内部で施して、適切に画像を出力することも可能となる。
【００１６】
このような観点からは、本発明を、画像データを受け取って画像を出力する画像出力装置として把握することも可能である。すなわち、上記の画像出力システム、あるいは画像出力方法に対応する本発明の画像出力装置は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記決定した出力ドット配置に基づいてドットを形成するドット形成手段と
を備えることを要旨とする。
【００１７】
かかる画像出力装置においては、第１の対応関係を参照することによって、所定個数の画素をまとめた画素群毎に画素群階調値をコード化する。そして、画素群毎に得られたコード値から、第２の対応関係を参照することにより、画素群についての出力ドット配置を直ちに決定することができる。こうして画素群毎に得られた出力ドット配置に従ってドットを形成することにより画像を出力する。
【００１８】
前述したように、画素群のコード値は、画素毎にドット形成の有無を表したデータよりも遙かに小さなデータであるため、コード値であればデータを迅速にやり取りすることができ、延いては画像を迅速に出力することができる。また、コード値は、画素群階調値とコード値とが画素群毎に関連づけられた第１の対応関係を参照するだけで求めることができる。更に、画素群についての出力ドット配置も、第２の対応関係を参照することで、画素群のコード値から直ちに決定することができる。このように、画素群階調値をコード化する処理も、得られたコード値から画素群の出力ドット配置を決定する処理も、迅速に行うことができるので、画像を迅速に出力することが可能となる。
【００１９】
上述した画像出力システム、画像出力方法、およびこれらに対応する画像出力装置においては、画素群のコード値として、画素群階調値を多値化して得られた多値化結果値を用いて、それぞれの処理を行うこととしても良い。すなわち、画素群階調値をコード化するために参照される前記第１の対応関係には、画素群階調値と該画素群階調値に対する多値化結果値とを画素群毎に関連付けて設定しておく。また、画素群の出力ドット配置を決定するために参照される前記第２の対応関係には、画素群の出力ドット配置と多値化結果値とを、画素群毎に関連付けて設定しておく。そして、第１の対応関係を参照することによって画素群階調値を多値化結果値に変換し、次いで、第２の対応関係を参照することによって、得られた多値化結果値から画素群についての出力ドット配置を決定することとしても良い。
【００２０】
画素群階調値の多値化であれば、画素群階調値を所定の閾値と比較するなど、周知な種々の方法を用いて簡便に実行することができる。また、得られた多値化結果値は、画素群階調値が増加するに従って多値化結果値も増加する性質を有しているため、画素群階調値に対して適切な多値化結果値を選択して第１の対応関係に設定したり、あるいは多値化結果値に対して画素群の出力ドット配置を適切に決定して、第２の対応関係に設定する作業を行うに際して混乱することがない。このため、第２の対応関係の設定作業を簡便に且つ適切に行うことが可能となる。
【００２１】
また、前述した課題の少なくとも一部を解決するために、本発明の画像処理システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す第１の画像処理装置と、該画像処理によって得られた第１の画像データを、画素毎にドット形成の有無を表した第２の画像データに変換する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群毎に得られたコード値を前記第１の画像データとして出力する第１の画像データ出力手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記第２の画像データとして出力する画像処理装置であることを要旨とする。
【００２２】
また、上記の画像処理システムに対応する本発明の第１の画像処理方法は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する工程（１）と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する工程（２）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する工程（３）と
を備えることを要旨とする。
【００２３】
更に本発明は、上記の画像処理システムを構成する第１および第２の画像処理装置が一体に構成された画像処理装置として把握することも可能である。すなわち、上記の画像処理システムに対応する本発明の画像処理装置は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する画素群階調値決定手段と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化するコード化手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する制御データ出力手段と
を備えることを要旨とする。
【００２４】
かかる画像処理システム、第１の画像処理方法、および画像処理装置においては、第１の対応関係を参照することにより、画素群階調値からコード値を生成した後、第２の対応関係を参照することにより、コード値から、画素群についての出力ドット配置を決定する。そして、決定した出力ドット配置を制御データとして出力する。
【００２５】
このように、画素群のコード値は、第１の対応関係を参照して生成することができるので、コード値を迅速に生成することができる。また、画素群についてのドット形成の有無を表す出力ドット配置も、第２の対応関係を参照することで迅速に決定することができる。結局、ドット形成の有無を迅速に決定して、制御データを迅速に出力すること可能となる。加えて、コード値はデータ量が小さく迅速に取り扱うことができるので、ドット形成の有無を迅速に決定することが可能となり、この点でも、制御データを迅速に出力することが可能である。
【００２６】
こうした画像処理システム、画像処理方法、およびこれらに対応する画像処理装置においても、画素群のコード値として、画素群階調値を多値化して得られた多値化結果値を用いて、それぞれの処理を行うこととしても良い。すなわち、前記第１の対応関係には、画素群階調値と該画素群階調値に対する多値化結果値とを画素群毎に関連付けて設定しておく。また、前記第２の対応関係には、画素群内の各画素についてドット形成の有無を表す出力ドット配置と、多値化結果値とを、画素群毎に関連付けて設定しておく。そして、第１の対応関係を参照することによって画素群階調値を多値化結果値に変換し、次いで、第２の対応関係を参照することによって、得られた多値化結果値から画素群についての出力ドット配置を決定することとしても良い。
【００２７】
画素群階調値の多値化であれば、簡便に実行することができる。また、得られた多値化結果値は、画素群階調値が増加するに従って多値化結果値も増加する性質を有しているため、第１の対応関係や第２の対応関係を設定する作業を、簡便に且つ適切に行うことが可能となる。
【００２８】
更に、画素群毎のコード値を受け取って制御データを生成する点に着目すれば、本発明は次のような画像処理装置として把握することもできる。すなわち、本発明の他の態様の画像処理装置は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取るコード値受取手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する制御データ出力手段と
を備えることを要旨とする。
【００２９】
また、上記の第２の画像処理装置に対応する本発明の他の態様の画像処理方法は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る工程（ア）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する工程（イ）と
を備えることを要旨とする。
【００３０】
かかる他の態様の画像処理装置および画像処理方法においては、画素群のコード値を受け取ると、該画素群についての出力ドット配置を、コード値から第２の対応関係を参照することにより決定し、決定結果に基づいて制御データを生成して出力する。
【００３１】
コード値はデータ量が小さく迅速に受け取ることが可能である。従って、コード値から、画素群についての出力ドット配置を決定すれば、制御データを迅速に生成することができる。また、ドット形成の有無は、第２の対応関係を参照することにより、コード値から直ちに決定することができる。このため、コード値を迅速に受け取ることができることと相まって、画素群の出力ドット配置を迅速に決定することができ、延いては、制御データを迅速に出力することが可能となる。
【００３２】
前述した課題の少なくとも一部を解決するために、本発明の画像出力装置は、次の構成を採用した。すなわち、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取るコード値受取手段と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する出力ドット配置決定手段と、
前記決定した出力ドット配置に基づいてドットを形成するドット形成手段と
を備えることを要旨とする。
【００３３】
また、上記の画像出力装置に対応する本発明の画像出力方法は、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る工程（Ａ）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する工程（Ｂ）と、
前記決定した出力ドット配置に基づいてドットを形成する工程（Ｃ）と
を備えることを要旨とする。
【００３４】
かかる本発明の画像出力装置および画像出力方法においては、画像データとして画素群毎にコード値を受け取ると、受け取ったコード値から第２の対応関係を参照することにより、該画素群についての出力ドット配置を決定する。ここで画素群は、常に同数の画素をまとめたものであっても良いが、例えば、所定のパターンあるいは所定の規則に従って異なる個数ずつ画素をまとめたものとすることもできる。また、画素群のコード値とは、画素群の階調値を、画素群毎にコード化することによって生成された値である。更に、第２の対応関係としては、コード値と画素群とが決まれば、それに応じて画素群の出力ドット配置が１つ決まるようなものであれば種々の形態を取ることが可能であり、例えば、対応表や関数式などの形態を取ることができる。このようなコード値を受け取って、第２の対応関係を参照することにより、画素群についての出力ドット配置を決定し、得られた結果に従ってドットを形成すれば、画像を出力することができる。
【００３５】
画素毎についてドット形成の有無を表すデータに比べれば、コード値はたいへんに少ないデータ量で表現することができるので、速やかに受け取ることが可能であり、延いては画像を迅速に出力することができる。更に、コード値は、画素群階調値を画素群にコード化した値であるため、単に画素群階調値をコード化した場合に比べて、コード値の個数を減少させることができる。このため、より一層、迅速にデータの授受を行うことができ、画像を迅速に出力することが可能となる。
【００３６】
また、画素群内の各画素についてドット形成の有無を表す出力ドット配置は、画素群のコード値から第２の対応関係を参照することで、直ちに決定することができる。このため、ドット形成の有無を極めて迅速に決定することができ、延いては、画像を迅速に出力することが可能となる。更に、詳細な理由は後述するが、画素群とコード値とが決まれば、その画素群についての出力ドット配置を適切に決定することができる。このため、高画質な画像を迅速に出力することが可能となる。
【００３７】
また、こうした画像出力装置、あるいは上述した他の態様の画像処理装置、画像処理方法においても、画素群のコード値として、画素群階調値を多値化して得られた多値化結果値を用いることとしても良い。すなわち、前記第２の対応関係には、画素群の出力ドット配置と多値化結果値とを、画素群毎に関連付けて設定しておく。そして、コード値として受け取った多値化結果値から、第２の対応関係を参照することによって、画素群についての出力ドット配置を決定することとしても良い。こうすれば、第２の対応関係を設定する作業を適切に行うことが可能となる。
【００３８】
更に、こうした画像出力装置においては、次のような画像データを受け取って画像を出力することとしても良い。すなわち、画素群毎に付与された分類番号を考慮しながら該画素群の階調値をコード化することによって生成されたコード値を、画像データとして受け取って、このコード値から第２の対応関係を参照することで、画素群の出力ドット配置を決定する。第２の対応関係には、画素群の出力ドット配置と、コード値とが、分類番号毎に関連づけられている。そして、決定した出力ドット配置に従ってドットを形成することで、画像を出力することとしてもよい。
【００３９】
この様に、画素群の階調値を画素群の分類番号に応じてコード化することによって得られたコード値を受け取ると、画素群に付与されている分類番号とコード値とに基づいて、画素群内の各画素についてドット形成の有無を表す出力ドット配置を決定することとすれば、ドット形成の有無を適切に決定することができる。このため、高画質な画像を出力することが可能となる。尚、画素群の分類番号は、画素群に予め付与しておくこととしても良く、あるいは画素群の画像中での位置に応じて適宜付与することとしても良い。
【００４０】
更に、画素群の出力ドット配置を決定するに際しては、コード値と分類番号とに基づいて決定していることから、複数の画素群に亘ってドットが一定のパターンで形成されるといったおそれがない。すなわち、複数の画素群に亘って同じコード値が続いたり、あるいは複数の画素群に亘って同じパターンでコード値が繰り返されたとしても、分類番号が異なれば、各画素群で得られる出力ドット配置は異なったものとなる。従って、ドットが一定のパターンで形成されて画質が悪化してしまうおそれがなく、常に安定した画質で画像を出力することが可能となる。
【００４１】
こうした画像出力装置においては、画素群に予め分類番号を付与しておいても良いが、画像中での位置に応じて画素群を複数種類に分類することにより、画素群に分類番号を付与することとしてもよい。こうすれば、必要に応じて適宜、分類番号を付与することができるので、画素群に予め分類番号を付与して記憶しておく必要が無い。また、画像中での位置に応じて付与することで、分類番号を適切に付与することができる。
【００４２】
こうした画像出力装置においては、画素群に付与される分類番号は、少なくとも１００種類以上あるものとしても良い。
【００４３】
例えば、分類番号が数個しかないのであれば、これら数個の分類番号の中から選択した番号を画素群に付与しても、分類番号の配列の組合せ数は決して十分に多いわけではない。このため、例え、画素群の階調値を分類番号に応じてコード化したとしても、場合によっては、ドットの発生パターンに一定の規則性が表れてしまう可能性がある。このようなおそれを回避するためには、分類番号の種類が多い方が望ましいが、経験上、分類番号の種類が１００種類以上あれば、ドットの発生に一定のパターンが現れることを、実用上の問題が発生しない程度に抑制することが可能となる。
【００４４】
あるいは、こうした画像出力装置においては、画素群にまとめられる画素数と、該画素群に付与される分類番号の種類数との乗算値が、少なくとも１０００以上となるように設定することとしても良い。
【００４５】
画素群に含まれる画素数が多くなれば、１つの画素群内でもドットの発生パターンは多くのパターンを取ることができる。従って、分類番号の種類が十分には多くない場合でも、画素群に含まれる画素数が多ければ、これを補って、ドットの発生パターンに一定の規則性が表れてしまうことを抑制することができる。経験によれば、分類番号の種類と、画素群に含まれる画素数とを、これらの乗算値が１０００以上となるように選んでおけば、ドットの発生に一定のパターンが現れることを抑制して、実用上の問題が発生することを回避することが可能である。
【００４６】
また、こうした画像出力装置においては、第２の対応関係として、次のような対応関係を記憶しておくこととしても良い。すなわち、画素毎のドット形成の有無を表す値が、画素群内での画素位置に応じた所定の順序で並んだデータと、コード値とが、画素群毎に関連づけられた対応関係を記憶しておくこととしてもよい。
【００４７】
第２の対応関係をこのような形態で記憶しておけば、ドット形成の有無を表す値の並びによって、そのまま画素群内の各画素についてのドット形成の有無を表すことができる。第２の対応関係は、画素群の出力ドット配置と、コード値とを関連づけるものであるから、この様な形態とすることにより、第２の対応関係を簡素なものとすることができる。このため、対応関係を迅速に参照することができるだけでなく、第２の対応関係を記憶するために必要なデータ量を、低減させることも可能となる。
【００４８】
また、上述した画像出力装置においては、次のようにして、コード値から画素群の出力ドット配置を決定することとしても良い。すなわち、コード値を受け取ると、所定の閾値と比較することにより、該コード値が画素群内に形成すべきドットの個数を表しているか否かを判定する。ここで「ドットの個数を表す」とは、ドットの個数を何らかの方法で特定することが可能であれば足り、必ずしも個数そのものを表している必要はない。そして、コード値が画素群内に形成すべきドットの個数を表している場合には、該画素群内で各画素にドットが形成される画素の順番を特定し、該ドットの個数と該特定した順番とに基づいて、画素群についての出力ドット配置を決定することとしてもよい。
【００４９】
仮に、コード値が画素群内に形成すべきドットの個数を表しているとすれば、画素群内で各画素にドットが形成される画素の順番という少ない情報だけで、画素群の出力ドット配置を適切に決定することができる。このことから、コード値の一部だけでも、ドットの個数を表すものとしておけば、画素群の出力ドット配置を決定するために記憶しておくべき情報を、低減させることが可能となる。また、コード値がドットの個数を表しているか否かの判断を、所定の閾値と比較することによって行うこととすれば、かかる判断を迅速に行うことが可能となる。
【００５０】
尚、こうした画像出力装置においては、画素群内でドットが形成される画素の順番を、画素群内の各画素について予め記憶しておき、コード値がドットの個数を表していると判定された場合には、コード値が表すドットの個数と、記憶しておいた画素の順番とに基づいて、各画素についてのドットの形成有無を表す出力ドット配置を決定することとしてもよい。
【００５１】
こうすれば、適切な順番を予め記憶しておくことで、画素毎に適切な順番を読み出して、ドットの形成有無を適切に且つ迅速に決定することが可能となる。
【００５２】
また、こうした画像出力装置においては、画素群の出力ドット配置を次のようにして決定することとしても良い。先ず、受け取ったコード値が画素群内に形成すべきドットの個数を表しているか否かを判定する。そして、コード値がドットの個数を表している場合には、コード値から次のような中間データを生成する。すなわち、画素群に含まれる画素数をＮとして、画素群に形成されるドットの個数をＭとしたときに、ドットを形成することを意味するＭ個の連続するデータと、ドットを形成しないことを意味する（Ｎ−Ｍ）個の連続するデータとからなる中間データを生成する。次いで、得られた中間データの中から、画素の順番に対応する位置のデータを読み出すことにより、画素群についての出力ドット配置を決定することとしてもよい。
【００５３】
コード値が画素群内に形成すべきドットの個数を表している場合、このようにしてコード値を中間データに変換しておけば、得られた中間データの中から該当する位置のデータを読み出すだけで、画素群についての出力ドット配置を簡便に且つ迅速に決定することが可能となる。
【００５４】
また、かかる画像出力装置では、ドット形成有無を決定するために記憶しておくべき情報を低減可能であることに着目すれば、本発明は、画素群毎のコード値を受け取る代わりに、画像データに基づいて画像を出力する画像出力装置として把握することも可能である。すなわち、画像データに基づいて画素群の画素群階調値を決定し、得られた画素群階調値をコード化する。次いで、コード値と所定の閾値とを比較することにより、該コード値が前記画素群内に形成すべきドットの個数を表しているか否かを判定する。そして、コード値が画素群内に形成すべきドットの個数を表している場合には、該画素群内で各画素にドットが形成される画素の順番を特定し、該ドットの個数と該特定した順番とに基づいて、該画素群についての出力ドット配置を決定する。こうして決定した出力ドット配置に従ってドットを形成することにより画像を出力する画像出力装置として把握することも可能である。
【００５５】
このような画像出力装置によれば、画素群の出力ドット配置を少ない情報から決定することができるので、画像出力装置に搭載すべき記憶容量を低減することが可能となるので好ましい。
【００５６】
また、上述した各種の画像出力装置においては、単ドットあたりに表現可能な階調値の異なる複数種類のドットを形成可能として、第２の対応関係は、これら各種ドットについての出力ドット配置とコード値とを、画素群毎に関連づけるものとしても良い。
【００５７】
こうすれば、コード値から第２の対応関係を参照することで、これら各種ドットについての出力ドット配置を決定して、高画質な画像を出力することができる。また、この様に複数種類のドットを形成可能な場合、各画素についてのドットの形成有無をドットの種類毎に表したデータは、どうしてもデータ量が大きくなってしまうので、データの授受に時間がかかってしまう。更に、ドットの種類が多くなるほど、ドット形成の有無を判断するために要する時間が長くなってしまう傾向にあり、画像を迅速に出力することが困難である。これに対して、画素群毎のコード値を供給すれば、ドットの種類が多くなった場合でも迅速にデータを供給することができ、加えて、コード値から第２の対応関係を参照することで、各種ドットについての出力ドット配置を直ちに決定することができることと相まって、画像を迅速に出力することが可能となる。
【００５８】
更に本発明は、上述した画像出力方法あるいは画像処理方法を実現するためのプログラムをコンピュータに読み込ませ、コンピュータを用いて実現することも可能である。従って、本発明は次のようなプログラム、あるいは該プログラムを記録した記録媒体としての態様も含んでいる。すなわち、上述した第１の画像出力方法に対応する本発明のプログラムは、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する第１の機能と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する第２の機能と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する第３の機能と、
前記決定した出力ドット配置に基づいてドットを形成する第４の機能と
を実現することを要旨とする。
【００５９】
また、上記のプログラムに対応する本発明の記録媒体は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する第１の機能と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する第２の機能と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する第３の機能と、
前記決定した出力ドット配置に基づいてドットを形成する第４の機能と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００６０】
また、上述した第１の画像処理方法に対応する本発明のプログラムは、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する機能（１）と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する機能（２）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（３）と
を実現することを要旨とする。
【００６１】
また、上記のプログラムに対応する本発明の記録媒体は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を代表する階調値たる画素群階調値を決定する機能（１）と、
前記画素群階調値と該画素群階調値をコード化することによって得られるコード値とが、前記画素群毎に関連づけられた第１の対応関係を参照することにより、該画素群の画素群階調値をコード化する機能（２）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（３）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００６２】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現させれば、コード値および制御データを迅速に生成して、高画質な画像を迅速に出力することが可能となる。
【００６３】
また、上述した第２の画像出力方法に対応する本発明のプログラムは、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する機能（Ｂ）と、
前記決定した出力ドット配置に基づいてドットを形成する機能（Ｃ）と
を実現することを要旨とする。
【００６４】
また、上記のプログラムに対応する本発明の記録媒体は、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定する機能（Ｂ）と、
前記決定した出力ドット配置に基づいてドットを形成する機能（Ｃ）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００６５】
更に、上述した第２の画像処理方法に対応する本発明のプログラムは、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（ア）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（イ）と
を実現することを要旨とする。
【００６６】
また、上記のプログラムに対応する本発明の記録媒体は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群の階調値をコード化することによって得られたコード値を、前記画像データとして受け取る機能（ア）と、
前記画素群内の各画素についてドット形成の有無を表す出力ドット配置と、前記コード値とが、該画素群毎に関連づけられた第２の対応関係を参照することにより、前記画素群毎に得られたコード値から該画素群についての出力ドット配置を決定した後、該決定結果を前記制御データとして出力する機能（イ）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００６７】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現させれば、画像データを迅速に受け取るとともに、画素毎のドット形成の有無を適切に且つ迅速に決定することができ、延いては、高画質な画像を迅速に出力することが可能となる。
【発明を実施するための最良の形態】
【００６８】
以下では、本発明の作用・効果をより明確に説明するために、本発明の実施の形態を、次のような順序に従って説明する。
Ａ．実施例の概要：
Ｂ．装置構成：
Ｃ．第１実施例の画像印刷処理の概要：
Ｃ−１．多値化結果値生成処理の概要：
Ｃ−２．ドット形成有無決定処理の概要：
Ｃ−３．ディザ法の概要：
Ｃ−４．分類番号を決定するための考え方：
Ｃ−５．多値化テーブルの設定方法：
Ｃ−６．変換テーブルの設定方法：
Ｃ−７．順序値マトリックスの設定方法：
Ｃ−８．多値化結果値からドット形成有無を適切に決定可能な原理：
Ｃ−９．画素群の位置から分類番号を決定する方法：
Ｃ−１０．変形例：
Ｄ．第２実施例：
Ｄ−１．第２実施例のドット形成有無決定処理の原理：
Ｄ−２．第２実施例のドット形成有無決定処理：
Ｅ．第３実施例：
Ｅ−１．画質を改善する原理：
Ｅ−２．第３実施例のドット形成有無決定処理：
Ｅ−３．第３実施例の変形例：
Ｆ．第４実施例：
Ｆ−１．画質を改善する原理：
Ｆ−２．第４実施例の画像印刷処理の概要：
【００６９】
Ａ．実施例の概要  ：
実施例の詳細な説明に入る前に、図１を参照しながら、実施例の概要について説明しておく。図１は、印刷システムを例にとって、本発明の概要を説明するための説明図である。本印刷システムは、画像処理装置としてのコンピュータ１０と、画像出力装置としてのプリンタ２０等から構成されており、コンピュータ１０に所定のプログラムがロードされて実行されると、コンピュータ１０およびプリンタ２０などが全体として、一体の画像出力システムとして機能する。プリンタ２０は、印刷媒体上にドットを形成することによって画像を印刷する。コンピュータ１０は、印刷しようとする画像の画像データに所定の画像処理を施すことによって、プリンタ２０が画素毎にドットの形成を制御するためのデータを生成して、該プリンタ２０に供給する。
【００７０】
一般的な印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータで所定の画像処理を施すことにより、画像データを、画素毎にドット形成の有無を表すデータに変換する。次いで、得られたデータをプリンタに供給し、プリンタでは供給されたデータに従ってドットを形成することにより画像を印刷している。ここで、印刷しようとする画像の画素数が多くなると、それに伴って、画像処理に要する時間が増加して、画像を迅速に印刷することが困難となる。また、画素数が多くなるにつれて、画素毎にドット形成の有無を表すデータのデータ量が増加するので、コンピュータからプリンタにデータを出力するために要する時間が長くなり、それだけ印刷に要する時間が増加してしまう。
【００７１】
こうした点に鑑みて、図１に例示した印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータ１０では、画像を構成する画素を、所定の複数個ずつまとめて画素群を生成し、各画素群について、画素群を代表する階調値たる画素群階調値を決定する。次いで、画素群階調値をコード化することによりコード値を生成する。コード化に際しては、画素群毎に付与された分類番号を取得して、画素群階調値とコード値とを、分類番号毎に対応付けた第１の対応関係を参照することによって行う。尚、コード化の一態様として、画素群階調値を多値化することにより多値化結果値を得ることとしても良い。多値化であれば、周知の種々の方法を用いて簡便に実施することが可能である。
【００７２】
プリンタ２０では、各画素群についてのコード値を受け取ると、画素群内の各画素についてのドット形成の有無を表すデータ（画素群の出力ドット配置）を決定する。ドット形成の有無は、第２の対応関係を参照しながら、ドット形成有無決定モジュールによって行われる。このようにして得られたドット形成有無の決定結果に従って、ドット形成モジュールがドットを形成することによって画像が印刷される。
【００７３】
ここで、画素毎にドット形成の有無を表すデータに比べれば、画素群毎のコード値は遙かに小さなデータ量とすることができる。従って、コンピュータ１０から画素毎にドット形成の有無を表したデータをプリンタ２０に供給する代わりに、画素毎のコード値を供給してやれば、極めて迅速にデータを転送することが可能となる。
【００７４】
また、コード値は、コンピュータ１０内で次のようにして生成される。先ず、画素群階調値決定モジュールにおいて画素群階調値が決定される。画素群階調値の決定に際しては、例えば、画素群内の各画素の画像データに基づいて決定することとしてもよい。一方、第１の対応関係記憶モジュールには、画素群階調値とコード値とを対応付けた対応関係（第１の対応関係）が、画素群の分類番号毎に記憶されている。ここで画素群の分類番号は、各画素群を画像中での位置に応じて複数種類に分類することによって設定することもできるし、また、画像がいつも同じように分割される場合などには、各画素群毎に予め適切な分類番号を付与しておくこともできる。更に、簡便には、乱数などを用いてランダムに分類番号を付与することも可能である。コード化モジュールは、画素群の画素群階調値を受け取ると、第１の対応関係記憶モジュールの中から、画素群に応じた対応関係を参照することによって、画素群階調値をコード値に変換する。
【００７５】
このように対応関係を参照しながらコード値を生成しているために、画素群階調値を極めて迅速にコード化することができる。このため、生成したコード値をプリンタ２０に迅速に供給可能なことと相まって、たとえ画素数の多い画像であっても迅速に画像を印刷することが可能となる。また、対応関係を参照して画素群階調値をコード化すれば、極めて簡素な処理でコード値を生成することができる。このため、画素群階調値をコード化するためには、コンピュータ１０のような高度な処理能力を有する機器を用いずとも、例えばプリンタ２０あるいはデジタルカメラなどの内部でもコード値を得ることが可能となる。更に、第２の対応関係を参照することで、コード値から直ちに画素群の出力ドット配置が得られるので、ドット形成の有無を迅速に決定することができる。加えて、対応関係を参照するという簡素な処理で、出力ドット配置を決定することができるので、コンピュータ１０のような高度な処理能力を有する機器を用いずとも、画素群の出力ドット配置、すなわち画素毎のドット形成の有無を迅速に決定することが可能となる。以下では、こうした印刷システムを例に用いることにより、本発明の各種実施例について詳細に説明する。
【００７６】
Ｂ．装置構成  ：
図２は、本実施例の画像処理装置としてのコンピュータ１００の構成を示す説明図である。コンピュータ１００は、ＣＰＵ１０２を中心に、ＲＯＭ１０４やＲＡＭ１０６などが、バス１１６で互いに接続して構成された周知のコンピュータである。
【００７７】
コンピュータ１００には、フレキシブルディスク１２４やコンパクトディスク１２６等のデータを読み込むためのディスクコントローラＤＤＣ１０９や、周辺機器とデータの授受を行うための周辺機器インターフェースＰＩＦ１０８、ＣＲＴ１１４を駆動するためのビデオインターフェースＶＩＦ１１２等が接続されている。ＰＩＦ１０８には、後述するカラープリンタ２００や、ハードディスク１１８等が接続されている。また、デジタルカメラ１２０やカラースキャナ１２２等をＰＩＦ１０８に接続すれば、デジタルカメラ１２０やカラースキャナ１２２で取り込んだ画像を印刷することも可能である。また、ネットワークインターフェースカードＮＩＣ１１０を装着すれば、コンピュータ１００を通信回線３００に接続して、通信回線に接続された記憶装置３１０に記憶されているデータを取得することもできる。
【００７８】
図３は、本実施例のカラープリンタ２００の概略構成を示す説明図である。カラープリンタ２００はシアン，マゼンタ，イエロ，ブラックの４色インクのドットを形成可能なインクジェットプリンタである。もちろん、これら４色のインクに加えて、染料または顔料濃度の低いシアン（淡シアン）インクと、染料または顔料濃度の低いマゼンタ（淡マゼンタ）インクとを含めた合計６色のインクドットを形成可能なインクジェットプリンタを用いることもできる。尚、以下では場合によって、シアンインク，マゼンタインク，イエロインク，ブラックインク，淡シアンインク，淡マゼンタインクのそれぞれを、Ｃインク，Ｍインク，Ｙインク，Ｋインク，ＬＣインク，ＬＭインクと略称することがあるものとする。
【００７９】
カラープリンタ２００は、図示するように、キャリッジ２４０に搭載された印字ヘッド２４１を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ２４０をキャリッジモータ２３０によってプラテン２３６の軸方向に往復動させる機構と、紙送りモータ２３５によって印刷用紙Ｐを搬送する機構と、ドットの形成やキャリッジ２４０の移動および印刷用紙の搬送を制御する制御回路２６０などから構成されている。
【００８０】
キャリッジ２４０には、Ｋインクを収納するインクカートリッジ２４２と、Ｃインク，Ｍインク，Ｙインクの各種インクを収納するインクカートリッジ２４３とが装着されている。インクカートリッジ２４２，２４３をキャリッジ２４０に装着すると、カートリッジ内の各インクは図示しない導入管を通じて、印字ヘッド２４１の下面に設けられた各色毎のインク吐出用ヘッド２４４ないし２４７に供給される。
【００８１】
図４は、インク吐出用ヘッド２４４ないし２４７におけるインクジェットノズルＮｚの配列を示す説明図である。図示するように、インク吐出用ヘッドの底面には、Ｃ，Ｍ，Ｙ，Ｋの各色のインクを吐出する４組のノズル列が形成されており、１組のノズル列あたり４８個のノズルＮｚが、一定のノズルピッチｋで配列されている。
【００８２】
制御回路２６０は、ＣＰＵや、ＲＯＭ、ＲＡＭ、ＰＩＦ（周辺機器インターフェース）等がバスで相互に接続されて構成されている。制御回路２６０は、キャリッジモータ２３０および紙送りモータ２３５の動作を制御することによってキャリッジ２４０の主走査動作および副走査動作を制御するとともに、コンピュータ１００から供給される印刷データに基づいて、各ノズルから適切なタイミングでインク滴を吐出する制御を行う。こうして、制御回路２６０の制御の下、印刷媒体上の適切な位置に各色のインクドットを形成することによって、カラープリンタ２００はカラー画像を印刷することができる。
【００８３】
また、本実施例のカラープリンタ２００は、吐出するインク滴の大きさを制御することにより、インクドットの大きさを制御することが可能である。以下、カラープリンタ２００が大きさの異なるインクドットを形成する方法について説明するが、その準備として、先ず、各色インクを吐出するノズルの内部構造について説明する。
【００８４】
図５（ａ）は、インクを吐出するノズルの内部構造を示した説明図である。各色のインク吐出用ヘッド２４４ないし２４７には、このようなノズルが複数設けられている。図示するように、各ノズルにはインク通路２５５と、インク室２５６と、インク室の上にピエゾ素子ＰＥとが設けられている。キャリッジ２４０にインクカートリッジ２４２，２４３を装着すると、カートリッジ内のインクがインクギャラリ２５７を経由してインク室２５６に供給される。ピエゾ素子ＰＥは、周知のように電圧を印加すると結晶構造が歪んで極めて高速に電気−機械エネルギの変換を行う素子である。本実施例では、ピエゾ素子ＰＥの両端に設けられた電極間に所定波形の電圧を印加することで、インク室２５６の側壁を変形させる。その結果、インク室２５６の容積が減少し、容積の減少分に相当するインクがインク滴ＩｐとなってノズルＮｚから吐出される。このインク滴Ｉｐがプラテン２３６に装着された印刷用紙Ｐに染み込むことで、印刷用紙上にインクドットが形成される。
【００８５】
図５（ｂ）は、ピエゾ素子ＰＥに印加する電圧波形を制御することで、吐出するインク滴の大きさを変更する原理を示した説明図である。ノズルからインク滴Ｉｐを吐出するためには、ピエゾ素子ＰＥに府の電圧を印加してインクギャラリ２５７からインク室２５６内に一旦インクを吸入し、その後、ピエゾ素子ＰＥに正電圧を印加してインク室容積を減少させて、インク滴Ｉｐを吐出させる。ここで、インクの吸引速度が適切であればインク室容積の変化量に相当するインクが吸入されるが、吸引速度が速すぎると、インクギャラリ２５７とインク室２５６との間には通路抵抗があるためにインクギャラリ２５７からのインクの流入が間に合わなくなる。その結果、インク通路２５５のインクがインク室内に逆流して、ノズル付近のインク界面が大きく後退した状態となる。図５（ｂ）に実践で示した電圧波形ａは、適正な速度でインクを吸引する波形を示し、破線で示した電圧波形ｂは適切速度より大きな速度で吸引する波形の一例を示している。
【００８６】
十分なインクがインク室２５６内に供給された状態で、ピエゾ素子ＰＥに正電圧を印加すると、インク室２５６の容積減少に相当する体積のインク滴ＩｐがノズルＮｚから吐出される。これに対して、インクの供給量が不足してインク界面が大きく後退した状態で正電圧を印加すると、吐出されるインク滴は小さなインク滴となる。このように、本実施例のプリンタ２００では、インク滴の吐出前に印加する府の電圧波形を制御してインクの吸引速度を変更することで、吐出するインク滴の大きさを制御し、大ドット、中ドット、小ドットの３種類のインクドットを形成することが可能となっている。
【００８７】
もちろん、３種類に限らずより他種類のドットを形成することも可能である。更には、微細なインク滴を一度に複数吐出して、吐出するインク滴の数を制御するといった方法を用いて、印刷用紙上に形成されるインクドットの大きさを制御してもよい。このようにしてインクドットの大きさを制御すれば、印刷しようとする画像の領域に応じて異なる大きさのインクドットを使い分けてやることで、より高画質の画像を印刷することも可能となる。
【００８８】
尚、各色のインク吐出ヘッドからインク滴を吐出する方法には、種々の方法を適用することができる。すなわち、ピエゾ素子を用いてインク滴を吐出する方式や、インク通路に配置したヒータでインク通路内に泡（バブル）を発生させてインク滴を吐出する方法などを用いることができる。また、インク滴を吐出する代わりに、熱転写などの現象を利用して印刷用紙上にインクドットを形成する方式や、静電気を利用して各色のトナー粉を印刷媒体上に付着させる方式のプリンタを使用することも可能である。
【００８９】
以上のようなハードウェア構成を有するカラープリンタ２００は、キャリッジモータ２３０を駆動することによって、各色のインク吐出用ヘッド２４４ないし２４７を印刷用紙Ｐに対して主走査方向に移動させ、また紙送りモータ２３５を駆動することによって、印刷用紙Ｐを副走査方向に移動させる。制御回路２６０は、キャリッジ２４０の主走査および副走査の動きに同期させながら、適切なタイミングでノズルを駆動してインク滴を吐出することによって、カラープリンタ２００は印刷用紙上にカラー画像を印刷している。
【００９０】
尚、カラープリンタ２００にも、制御回路２６０内にはＣＰＵ，ＲＡＭ，ＲＯＭなどが搭載されていることから、コンピュータ１００が行う処理をカラープリンタ２００内で実施することも可能である。このような場合は、デジタルカメラ１２０などで撮影した画像の画像データをカラープリンタ２００に直接供給して、制御回路２６０内で必要な画像処理を実施することにより、カラープリンタ２００から直接画像を印刷することも可能となる。
【００９１】
Ｃ．第１実施例の画像印刷処理の概要  ：
以下では、上記のようなコンピュータ１００およびカラープリンタ２００が、画像を印刷するために、それぞれの内部で行われる画像処理（画像印刷処理）について説明する。ここでは、理解の便宜を図るため、初めに画像印刷処理の概要について説明し、次に、こうした画像印刷処理を行うことで、画質を低下させることなく画像を迅速に印刷することが可能な理由について説明する。
【００９２】
尚、以下では、画像印刷処理の前半部分はコンピュータ１００で実施され、後半部分はカラープリンタ２００で実施されるものとして説明するが、コンピュータ１００が行う処理をカラープリンタ２００の内部で実施したり、あるいはデジタルカメラ１２０など、画像データを生成する機器の内部で実施することも可能である。すなわち、第１実施例の画像印刷処理によれば、後ほど詳細に説明するように、前半部分の処理をたいへん簡素なものとすることができるので、高い処理能力を有していないＣＰＵを用いた場合でも迅速に実施することが可能である。このため、カラープリンタ２００やデジタルカメラなどに画像印刷処理の前半部分を組み込んだ場合でも、十分に実用的な印刷システムを構成することができる。
【００９３】
図６は、第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。図示されているように、画像印刷処理を開始すると先ず初めに、コンピュータ１００が画像データの読み込みを開始する（ステップＳ１００）。ここでは、画像データはＲＧＢカラー画像データであるものとして説明するが、カラー画像データに限らず、モノクロ画像データについても同様に適用することができる。また、カラープリンタに限らず単色プリンタについても同様に適用することが可能である。
【００９４】
カラー画像データの読み込みに続いて、色変換処理を行う（ステップＳ１０２）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組合せによって表現されているＲＧＢカラー画像データを、印刷のために使用されるインク各色についての階調値の組合せによって表現された画像データに変換する処理である。前述したように、カラープリンタ２００はＣ，Ｍ，Ｙ，Ｋの４色のインクを用いて画像を印刷している。そこで、色変換処理ではＲＧＢ各色によって表現された画像データを、Ｃ，Ｍ，Ｙ，Ｋの各色の階調値によって表現されたデータに変換する。色変換処理は、色変換テーブル（ＬＵＴ）と呼ばれる３次元の数表を参照することで行う。ＬＵＴには、ＲＧＢカラー画像データに対して、色変換によって得られるＣ，Ｍ，Ｙ，Ｋ各色の階調値が予め記憶されている。ステップＳ１０２の処理では、このＬＵＴを参照することにより、ＲＧＢカラー画像データをＣ，Ｍ，Ｙ，Ｋ各色の画像データに迅速に色変換することが可能となっている。
【００９５】
色変換処理を終了すると、解像度変換処理を開始する（ステップＳ１０４）。解像度変換処理とは、画像データの解像度を、プリンタ２００が画像を印刷する解像度（印刷解像度）に変換する処理である。画像データの解像度が印刷解像度よりも低い場合は、補間演算を行って画素間に新たな画像データを生成し、逆に画像データの解像度が印刷解像度よりも高い場合には、一定の割合でデータを間引くことによって、画像データの解像度を印刷解像度に一致させる処理を行う。
【００９６】
以上のようにして解像度を印刷解像度に変換したら、コンピュータ１００は、多値化結果値生成処理を開始する（ステップＳ１０６）。多値化結果値生成処理の詳細な内容は後ほど詳しく説明することとして、ここでは概要のみを説明する。多値化結果値生成処理では、隣接する画素を所定個数ずつ画素群としてまとめることにより、１つ画像を複数の画素群に分割する。画素群としてまとめられ画素数は、必ずしも全ての画素群が同数である必要はなく、例えば、複数の画素数を規則的に切り換えたり、あるいは画像中での位置に応じて画素群にまとめられる画素数を切り換えることも可能であるが、ここでは理解の便宜から、最も単純な場合として全画素群が同数の画素を有するものとして説明する。こうして複数の画素を画素群にまとめて、各画素群を代表する階調値である画素群階調値を求めた後、画素群階調値の多値化を行う。その結果、画素群毎の画素群階調値が多値化結果値に変換されることになる。
【００９７】
ここで、本実施例の多値化結果値生成処理では、多値化の結果として取り得る状態数が画素群毎に異なっている。すなわち、一般的に行われる多値化では、例えば１つの画像中で２値化と３値化とが切り換わることはないが、本実施例の多値化結果値生成処理では、画素群毎に多値化の段数が異なっている。そして、画素群階調値を、画素群毎に個数の段数で多値化して得られた結果値を、カラープリンタ２００に向かって出力する。このように画素群階調値を、画素群毎に固有の段数で多値化して、得られた結果を出力することとすれば、カラープリンタ２００に出力すべきデータ量を大きく低減することができる。また、後述するように、画素群毎の多値化結果値は、迅速に生成することができることから、データ量が小さくなることと相まって、多値化結果値を極めて迅速にカラープリンタ２００に出力することが可能となる。こうした多値化結果値生成処理の詳細については後述する。
【００９８】
カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵは、コンピュータ１００から画素群毎に供給された多値化結果値のデータを受け取ると、ドット形成有無決定処理を開始する（ステップＳ１０８）。上述したように、多値化結果値は、画素群階調値を多値化して得られた値であり、画素群内でいずれの画素にドットを形成すればよいかを示した値ではない。画素群の多値化結果値からドットを形成する画素位置を決定する手法としては、いわゆる濃度パターン法と呼ばれる手法が知られているが、本実施例の多値化結果値は画素群毎に固有の段数で多値化されており、濃度パターン法をそのまま適用することはできない。そこで、第１実施例のドット形成有無決定処理では、後述するような特殊な方法を用いることにより、画素群毎に得られた多値化結果値からドットを形成する画素位置を決定する。
【００９９】
また、いわゆる濃度パターン法では、実質的な解像度が、多値化を行った画素群の解像度まで低下してしまい、画質の悪化を招き易い傾向があった。これに対して、第１実施例のドット形成有無決定処理によれば、後述するように画素群の大きさに依存して画質が悪化することがない。更に、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクと呼ばれるディザマトリックスを用いることで実現されるような、ドットが良好に分散した高画質な画像を印刷することが可能となる。第１実施例のドット形成有無決定処理の詳細な内容、および、かかる処理を適用してドット形成の有無を決定することで、こうした特性が得られる理由については、後ほど詳しく説明する。
【０１００】
以上のようにして、ドットを形成すべき画素位置を決定したら、決定した画素位置にドットを形成する処理を行う（ステップＳ１１０）。すなわち、図３を用いて説明したように、キャリッジ２４０の主走査および副走査を繰り返しながらインク吐出用ヘッドを駆動してインク滴を吐出することにより、印刷用紙上にインクのドットを形成する。こうしてドットを形成することにより、画像データに対応した画像が印刷されることになる。
【０１０１】
Ｃ−１．多値化結果値生成処理の概要  ：
図７は、上述した第１実施例の画像印刷処理で行われる多値化結果値生成処理の流れを示すフローチャートである。ここでは、多値化結果値生成処理はコンピュータ１００で実施されるものとして説明するが、後述するように、多値化結果値生成処理は極めて簡素な処理とすることができるから、カラープリンタ２００あるいはデジタルカメラ１２０内で実施することも可能である。以下、フローチャートに従って説明する。
【０１０２】
本実施例の多値化結果値生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成する（ステップＳ１３０）。ここでは、主走査方向に４画素分、副走査方向に２画素分の合計８つの画素を画素群にまとめるものとする。尚、画素群としてまとめる画素は、このように矩形状に縦横の位置が揃った画素である必要はなく、互いに隣接し且つ所定の位置関係にあればどのような画素を画素群としてまとめても良い。
【０１０３】
次いで、画素群階調値と、画素群の分類番号とを決定する（ステップＳ１３２）。画素群階調値とは、画素群を代表する階調値であり、次のようにして簡単に求めることができる。例えば、画素群内の各画素に割り当てられた画像データの平均値を求めて画素群階調値とすることができる。あるいは、画素群の中で最も多くの画素に割り当てられた画像データ、更には、画素群内で特定の位置にある画素の画像データを画素群階調値とすることも可能である。
【０１０４】
また、画素群の分類番号は、次のようにして極めて簡便に決定することができる。図８は、画素群の分類番号を決定する方法を示した説明図である。図８（ａ）は、画像中で８つの画素をまとめて生成された１つの画素群を表している。以下では、この画素群についての分類番号を決定する方法について説明する。尚、図８（ａ）に示すような、分類番号を決定するために着目している画素群を、着目画素群と呼ぶことにする。
【０１０５】
今、画像の一番左上隅を原点に取って、原点からの主走査方向および副走査方向への画素数によって画素位置を表すものとする。また、画素群の位置は、画素群の左上隅にある画素の画素位置によって表すものとする。図８（ａ）では、着目画素群の位置を示す画素に黒丸を付して表示している。この画素の画素位置が（Ｘ，Ｙ）であったとする。着目画素群の分類番号は、Ｘ，Ｙを２進数表示して、所定のビットに記憶されているデータを読み出すだけで、極めて容易に決定することができる。例えば、図８（ｂ）に示すように、着目画素群の位置を表すＸ，Ｙがそれぞれ１０ビットデータであったとする。そして、Ｘの最上位の４ビット目から８ビット目までのデータを読み出して得られた値をＮとし、Ｙの最上位の４ビット目から８ビット目までのデータを読み出して得られた値をＭとする。すると、本実施例の場合は、
Ｎ＋（Ｍ−１）×３２  …（１）
を算出することによって、画素群の分類番号を簡単に決定することができる。このようにして画素群の分類番号を決定可能な理由については後述する。
【０１０６】
こうして、画素群の分類番号と画素群階調値とを決定したら、後述する多値化テーブルを参照することによって、画素群階調値を多値化する（ステップＳ１３４）。図９は、多値化に際して参照される多値化テーブルを概念的に示した説明図である。図示されているように、多値化テーブルには、画素群の分類番号毎に、画素群階調値に対する多値化結果値が対応づけて記憶されており、多値化結果値は、画素群階調値が増加するに従って段階的に増加していく。
【０１０７】
図１０は、画素群階調値が増加するに従って多値化結果値が段階的に増加していく様子を例示した説明図である。図では、横軸に画素群階調値を取り、縦軸の多値化結果値を取った折れ線グラフを用いて、画素群階調値に対する多値化結果値を表示している。尚、図中では、異なる分類番号Ｎ１〜Ｎ５を有する５つの画素群についての多値化結果を示しているが、これら画素群の折れ線が重なって判別し難くなることを避けるために、多値化結果値の原点位置を縦軸方向に少しずつ、ずらして表示している。
【０１０８】
一例として、図中に太い実線で示した分類番号Ｎ１番の画素群について説明すると、画素群階調値が０〜４の範囲では、多値化結果値は「０」であるが、画素群階調値が５〜２０の範囲では多値化結果値は「１」に増加する。次いで、画素群階調値が２１〜４２の範囲では多値化結果値は「２」に増加し、画素群階調値が４３〜６９の範囲では多値化結果値は「３」に増加する。このように、画素群階調値が増加するに従って、多値化結果値も段階的に増加していき、最終的には、多値化結果値は「１５」まで増加する。すなわち、分類番号Ｎ１番の画素群については、階調値０〜２５５の範囲を取り得る画素群階調値を、階調値０〜１５までの１６段階に多値化（言わば、１６値化）していることになる。
【０１０９】
同様に、図中で太い破線で示した分類番号Ｎ２番の画素群や、太い一点鎖線で示した分類番号Ｎ３番の画素群については、階調値０〜２５５の範囲を取り得る画素群階調値を、階調値０〜１７までの１８段階に多値化（言わば、１８値化）している。更に、細い実線で示した分類番号Ｎ４番の画素群および細い一点鎖線で示した分類番号Ｎ５番の画素群については、画素群階調値を階調値０〜２０までの２１段階に多値化（言わば、２１値化）していることになる。このように、本実施例の多値化結果値生成処理では、各画素群の多値化の段数（多値化の結果として取り得る状態数）が同じではなく、画素群の分類番号に応じて固有の段数で多値化されている。この結果、同じ画素群階調値を多値化した場合でも、画素群の分類番号が異なり、そのため多値化の段数が異なっていれば、異なる結果値に多値化されることになる。
【０１１０】
また、多値化段数が同じであったとしても、同じ多値化結果値が得られるわけではない。例えば、図１０に示した分類番号Ｎ２の画素群と、分類番号Ｎ３の画素群とを比較すれば明らかなように、これら画素群についての多値化段数はいずれも１８段であるが、多値化結果値が切り換わる画素群階調値は多くの場合、一致していない。分類番号Ｎ４の画素群と分類番号Ｎ５の画素群とについても同様に、これら画素群の多値化段数はいずれも２１段であるが、多値化結果値が切り換わる画素群階調値は一致していないことが多い。このことから、例え画素群の多値化段数が同じでも、分類番号が異なれば、異なる多値化結果値が得られることになる。
【０１１１】
図９に示した多値化テーブルには、画素群階調値に対する多値化結果値が画素群の分類番号毎に記憶されている。そして、画素群階調値と多値化結果値との対応関係は、図１０に示したように、分類番号毎に固有の対応関係となっている。図７に示した多値化結果値生成処理のステップＳ１３４では、このような多値化テーブルを参照して画素群階調値を多値化することにより、画素群毎に多値化結果値を生成する処理を行う。尚、図９に示す多値化テーブルの設定方法については、後ほど詳しく説明する。
【０１１２】
以上のようにして、複数の画素を画素群にまとめて、その画素群の多値化結果値を生成したら、全画素について処理を終了したか否かを判断する（ステップＳ１３６）。そして、未処理の画素が残っている場合は（ステップＳ１３６：ｎｏ）、ステップＳ１３０に戻って新たな画素群を生成し、後述する一連の処理を行うことにより、その画素群についての多値化結果値を生成する。こうした操作を繰り返し、全画素についての処理を終了したと判断されたら（ステップＳ１３６：ｙｅｓ）、各画素群について得られた多値化結果値をカラープリンタ２００に出力した後（ステップＳ１３８）、図７の多値化結果値生成処理を終了する。
【０１１３】
このように、画素群毎に多値化結果値を出力してやれば、画素毎にドット形成の有無を表すデータを出力する場合よりも、カラープリンタ２００に供給すべきデータ量を大幅に減少させることができる。以下では、この点について説明する。
【０１１４】
本実施例では、大ドット、中ドット、小ドットの３種類のドットを形成可能としているから、ドットを形成しない場合も含めると、画素毎に４つの状態を取り得ることになり、従って、ドット形成の有無を表すためには１画素あたり２ビットのデータ量が必要となる。また、本実施例では、１つの画素群は８つの画素で構成されているものとしているから、画素毎にドット形成の有無を表そうとすると、画素群あたり１６ビット（＝２ビット×８画素）のデータ量が必要となる。
【０１１５】
一方、図７に示した多値化結果値生成処理では、画素群の分類番号によって異なるものの、多値化の段数は１５〜２１程度となっている（図９、図１０を参照のこと）。画素群毎に多値化の段数を決定する方法については後述するが、多値化の段数は、多く見積もっても３０を越えることはないと考えられる。従って、画素群の多値化結果値であれば、１画素群あたり５ビットのデータ量があれば十分に表現することが可能である。前述したように、画素毎にドット形成の有無を表す場合には画素群あたり１６ビットのデータ量が必要となることから、画素群階調値を多値化して得られた結果値を出力することにすれば、カラープリンタ２００に出力すべきデータ量を１／３以下に減少させることができる。この様に、本実施例の画像印刷処理では、画素群の多値化結果値を出力しているため、データ量を大きく減少させることができ、カラープリンタ２００に迅速にデータを出力することが可能となっている。
【０１１６】
カラープリンタ２００は、こうしてコンピュータ１００から多値化結果値を受け取ると、以下に説明するドット形成有無決定処理を行うことにより、画素群内の各画素についてドット形成の有無を決定する。
【０１１７】
Ｃ−２．ドット形成有無決定処理の概要  ：
図１１は、前述した第１実施例の画像印刷処理で行われるドット形成有無決定処理の流れを示すフローチャートである。かかる処理は、コンピュータ１００から画素群毎に多値化結果値を受け取った後、カラープリンタ２００によって実行される処理である。以下、図１１のフローチャートに従って説明する。
【０１１８】
第１実施例のドット形成有無決定処理を開始すると、先ず初めに、処理対象とする画素群を１つ選択し、選択した画素群の多値化結果値を取得する（ステップＳ１６０、Ｓ１６２）。次いで、画素群の多値化結果値を、その画素群に形成するドット個数を表すデータに変換する（ステップＳ１６４）。ここで、図９および図１０に示したように、多値化結果値は、画素群の分類番号が異なれば、例え画素群階調値が同じであっても異なった値を取る。このことから明らかなように、画素群の多値化結果値は、同じ分類番号の画素群との間でのみ結果値の大小を比較することが可能であり、分類番号が異なる画素群については、多値化結果値を比較することができないデータとなっている。
【０１１９】
そこで、画素群の分類番号に依存する多値化結果値を、分類番号に依存しない多値化結果値に変換することを考える。多値化結果値を分類番号に依存しない値に変換してやれば、全ての画素群についての多値化結果値の大小を比較することができるので、それぞれの変換値の序列に応じて、大ドット・中ドット・小ドットの適切な形成個数、すなわちドット個数を表すデータを対応付けることが可能となる。
【０１２０】
図１１のステップＳ１６４では、このような考え方に基づいて、画素群の分類番号に依存する多値化結果値を、画素群に形成するべきドットの個数を示すデータに変換する。実際の変換は、画素群の分類番号と多値化結果値との組合せ毎に、適切なドット個数のデータを予め設定しておいた変換テーブルを参照するだけで、極めて迅速に行うことができる。
【０１２１】
図１２は、画素群の分類番号と多値化結果値との組合せを、ドット個数を示すデータに変換する際に参照される変換テーブルを概念的に示した説明図である。図示されているように、変換テーブルには、多値化結果値に対応するドット個数のデータが、分類番号毎に設定されている。一例として、分類番号１番の画素群について説明すると、多値化結果値０に対しては、ドット個数のデータとして「０」が設定されている。このドット個数データ「０」は、大ドット、中ドット、小ドットの形成個数がいずれも０個であることを表したコードデータである。また、多値化結果値１に対しては、ドット個数のデータとして「１」が設定されている。ドット個数データ「１」は、大ドット、中ドットの形成個数は０個であり、小ドットの形成個数が１個であることを表すコードデータである。更に、多値化結果値１５に対してはドット個数データ「１６４」が設定されている。ドット個数データ「１６４」は、大ドットを８個形成し、中ドットおよび小ドットは形成しないことを表すコードデータである。
【０１２２】
このように、変換テーブルには、ドット個数を示すデータはコード化されたデータとして設定されている。すなわち個数データは、直接的にドット個数を表すものでなくても、何らかの方法で、ドット個数を特定可能であれば、どのような形態のデータとすることもできる。また、分類番号１番の画素群については、「１６」より大きな多値化結果値に対してはドット個数を示すデータが設定されていない。これは、分類番号１番の画素群は多値化段数が１６段であり、多値化結果値は０〜１５の値しか取り得ないことに対応するものである。従って、分類番号２番の画素群のように多値化段数が１８段の画素群については、０〜１７の多値化結果値に対してのみドット個数を示すデータが設定され、「１８」より大きな多値化結果値に対しては、ドット個数を示すデータが設定されることはない。
【０１２３】
図１３は、コード化された個数データと、各コードデータが表す大ドット・中ドット・小ドットの個数の組合せとの対応関係を示した説明図である。このように、各種ドットの個数をコード化して扱っているのは、次のような理由によるものである。
【０１２４】
ここでは、１つの画素群は８つの画素をまとめて構成されているものとしているから、大ドット、中ドット、小ドットの形成個数は、それぞれ０〜８個の値を取り得る。従って、各ドットの個数をコード化せずに、そのまま表現しようとすると、大ドットの個数、中ドットの個数、小ドットの個数を表すためにそれぞれ４ビットずつ、合計では１２ビットのデータ量が必要となる。
【０１２５】
一方、１つの画素群は８つの画素から構成されているから、画素群に形成され得るドット個数の合計は、最大でも８個である。例えば、大ドットが４個、中ドットが３個、小ドットが２個といったドット個数の組合せは、ドット個数の合計が９個となって８個を越えてしまうので現実には発生し得ない。こうした点に着目すれば、現実に発生し得るドット個数の組合せは、それほど多くの種類はないと考えられる。実際に算出すれば、次のようになる。画素群には８つの画素が含まれており、各画素についてみれば「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態を取り得る。従って、画素群に形成し得るドット個数の組合せは、これら４つの状態を、重複を許して８回選択した時の組合せの数に等しくなるから、
４Ｈ８（＝４＋８−１Ｃ８）
によって求められ、結局、最大でも１６５通りの組合せしか出現しないことになる。ここで、ｎＨｒは、ｎ個の物の中から重複を許してｒ回選択するときの重複組合せ数を求める演算子である。また、ｎＣｒは、ｎ個の物の中から重複を許さずにｒ回選択するときの組合せ数を求める演算子である。１６５通りの組合せであれば、８ビットあれば表現することができる。従って、現実に発生し得るドット個数の組合せにコード番号を設定しておけば、画素群に形成すべきドット個数の組合せを８ビットのデータで表すことができる。結局、ドット個数の組合せをコード化しておくことで、ドットの種類毎に形成個数を表した場合よりも、必要なデータ量を低減することが可能となる。このような理由から、個数データを図１３に示したようにコード化して表現することとして、図１２に示した変換テーブルでは、分類番号毎の多値化結果値に対して、コード化されたドット個数のデータが設定されているのである。尚、図１２に示すような変換テーブルを設定する方法については、別図を用いて後ほど詳しく説明する。
【０１２６】
図１１に示したドット形成有無決定処理では、図１２に示した変換テーブルを参照することにより、画素群の多値化結果値を、ドット個数を表すコードデータに変換する処理を行う。尚、図１２に示した変換テーブルを参照するためには、多値化結果値に加えて、画素群の分類番号が必要となる。ここで、図８を用いて前述したように、本実施例においては、画素群の分類番号は画像中での画素群の位置に基づいて決定されている。多値化結果値は画素群毎に供給されるから、多値化結果値が供給される順序に基づいて、処理しようとする多値化結果値の画素群が画像上でどの位置にあるかを知ることができ、これにより分類番号を簡単に決定することが可能である。画像上での画素群の位置に応じて分類番号を決定する方法については、後述する。尚、コンピュータ１００からカラープリンタ２００に向けて、多値化結果値とともに分類番号を出力してもよいことは言うまでも無い。
【０１２７】
次いで、画素群に対応する順序値マトリックスを読み込む処理を行う（ステップＳ１６６）。ここで、順序値マトリックスとは、画素群内の各画素について、ドットが形成される順番を設定したマトリックスである。図１４は、順序値マトリックスを例示した説明図である。図示されているように、順序値マトリックスも画素群の分類番号毎に異なるマトリックスが設定されている。一例として、図１４（ａ）に示した分類番号１番の順序値マトリックスについて説明する。分類番号１番の画素群は、画素群を構成する８つの画素の中で、左上隅にある画素が最もドットの形成され易い画素である。順序値マトリックスの左上隅の画素に数値「１」が設定されているのは、この画素が１番目にドットが形成される画素であることを表したものである。尚、順序値マトリックスに設定されているこのような順番を表す数値を、順序値と呼ぶものとする。また、画素群の右下隅の画素に順序値「２」が設定されているのは、この画素が画素群中で２番目にドットが形成されることを表している。このように、順序値マトリックスには、画素群に含まれる８つの画素について、ドットが形成される順番を示す順序値が設定されている。
【０１２８】
こうした順序値マトリックスは、画素群の分類番号によって異なったマトリックスとなっている。例えば、図１４（ｂ）に示した分類番号２番の順序値マトリックスでは、１番目にドットが形成される画素（順序値「１」の画素）は、下段の左から２番目の画素であり、２番目にドットが形成される画素（順序値「２」の画素）は、右下隅の画素である。図１４（ｃ）に示した分類番号３番の順序値マトリックスでは、１番目にドットが形成される画素（順序値「１」の画素）は、上段の右から２番目の画素であり、２番目にドットが形成される画素（順序値「２」の画素）は、左下隅の画素である。
【０１２９】
第１実施例のカラープリンタ２００に搭載されたＲＯＭには、図１４に例示したような順序値マトリックスが画素群の分類番号毎に、予め記憶されている。そして、図１１のステップＳ１６６では、画素群の分類番号に対応する順序値マトリックスを、ＲＯＭから読み出す処理を行う。尚、画素群の分類番号毎に順序値マトリックスを設定する方法については、別図を用いて詳しく説明する。
【０１３０】
画素群に対応する順序値マトリックスを読み込んだら、画素群を構成する８つの画素の中から、先ず初めに大ドットを形成する画素を決定する（ステップＳ１６８）。大ドットは他のドットよりもドットが目立ち易いことから、できるだけドットが分散して形成されるように、ドットを形成する画素位置を他のドットに優先させて決定しておくことが望ましい。このため、先ず初めに大ドットを形成する画素を決定するのである。ドットを形成する画素の決定に際しては、画素群の多値化結果値を変換して得られたドット個数のデータと、画素群に対応する順序値マトリックスとを使用する。
【０１３１】
図１５は、ドット個数のデータと順序値マトリックスとを用いて、画素群内で各種ドットを形成する画素を決定している様子を概念的に表した説明図である。例えば、画素群に形成すべきドット個数を示すコードデータが、大ドット１個、中ドット２個、小ドット１個の組合せを表していたものとする。前述したように、順序値マトリックスには画素群内の各画素にドットが形成される順番が設定されており、また、初めに大ドットを形成する画素から決定するのであるから、順序値「１」が設定されている画素には大ドットが形成されることになる。もちろん、仮に大ドットの形成個数が２個であれば、順序値「１」の画素に加えて、順序値「２」の画素にも大ドットが形成されることになる。図１５では、大ドットが形成される画素には、細かい斜線を付して表示している。図１１のステップＳ１６８では、このようにしてドット個数のデータと順序値マトリックスとに基づいて、大ドットを形成する画素を決定する処理を行う。
【０１３２】
大ドットを形成する画素を決定したら、続いて中ドットを形成する画素を決定する（図１１のステップＳ１７０）。図１５に示した例では、中ドットを形成すべき個数は２個である。順序値「１」の画素には既に大ドットを形成することにしているから、中ドットは順序値「２」の画素と順序値「３」の画素とに形成されることになる。図１５では、中ドットが形成される画素に、少し粗い斜線を付して表示している。図１１のステップＳ１７０では、このようにして大ドットを形成しない画素の中から中ドットを形成する画素を決定する処理を行う。
【０１３３】
中ドットを形成する画素を決定したら、今度は小ドットを形成する画素を決定する（図１１のステップＳ１７２）。図１５に示した例では、小ドットを形成すべき個数は１個であり、順序値「１」ないし順序値「３」の画素には既に大ドットおよび中ドットを形成することにしているから、小ドットは順序値「４」の画素に形成されることになる。図１５では、小ドットが形成される画素に、粗い斜線を付して表示している。
【０１３４】
こうして大ドット、中ドット、小ドットを形成する画素を決定したら、画素群の中で残った画素はドットを形成しない画素であると決定すればよい（図１１のステップＳ１７４）。以上のような処理を全て行ったら、画素群内の全画素についてドット形成の有無を決定したことになる。
【０１３５】
次いで、全画素群について、上述した処理を行ってドット形成の有無を決定したか否かを判断し（ステップＳ１７６）、未処理の画素群が残っていれば（ステップＳ１７６：ｎｏ）、ステップＳ１６０に戻って新たな画素群を選択し、その画素群について続く一連の処理を行う。こうした操作を繰り返し、最終的に全画素群についての処理を終了したと判断されたら（ステップＳ１７６：ｙｅｓ）、図１１に示したドット形成有無決定処理を終了して、図６に示した画像印刷処理に復帰する。前述したように画像印刷処理では、ドット形成有無の決定結果に従ってドットを形成することにより、印刷用紙上に画像が印刷される。
【０１３６】
以上に説明したように、第１実施例の画像印刷処理では、複数の画素をまとめて画素群を構成し、画素群毎に多値化を行って、得られた多値化結果値をカラープリンタ２００に出力する。画素群の多値化に際しては、画素群の分類番号と画素群階調値とを求めて、図９に示すような多値化テーブルを参照するだけで直ちに多値化結果値を得ることができる。画素群の分類番号も画素群階調値も、前述したように極めて簡単に求めることができることから、画素群の多値化結果値は極めて迅速に、しかも極めて簡素な処理によって求めることが可能となる。
【０１３７】
加えて、多値化結果値は、画素群あたり僅かなビット数（本実施例では高々５ビット）で表現することができるので、画素毎にドット形成の有無を表すデータよりも、データ量を大幅に減少させることができる。このため、画素毎にドット形成の有無を表すデータに代えて、画素群毎の多値化結果値をカラープリンタ２００に出力してやれば、データ量が減少する分だけ迅速にデータを供給することが可能となる。
【０１３８】
また、カラープリンタ２００では、画素群毎の多値化結果値を受け取ると、これを画素群内に形成すべきドットの個数を示すデータに変換する。かかる変換は、図１２に示すような変換テーブルを参照するだけで、迅速に行うことができる。次いで、変換して得られたドット個数を示すデータと、順序値マトリックスとに基づいて、大ドット・中ドット・小ドットの形成有無を決定した後、ドットを形成して画像を印刷する。順序値マトリックスを参照すれば、大ドット・中ドット・小ドットを形成する画素は比較的簡単に決定することができる。従って、カラープリンタ２００においても、画素群毎の多値化結果値を受け取ると、比較的簡素な処理で、迅速に画素毎のドット形成の有無を決定し、延いては、迅速に画像を印刷することが可能となる。
【０１３９】
加えて、第１実施例の画像印刷処理では、単に迅速に画像を印刷することができるだけでなく、十分な画質で画像を印刷することができる。特に、画素群の分類番号に応じて、多値化テーブルや、変換テーブル、および順序値マトリックスを適切に設定しておくことで、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクと呼ばれるディザマトリックスを用いて実現されるような、ドットが良好に分散した高画質な画像を印刷することが可能となる。以下では、こうしたことが可能な理由も含めて、画素群の分類番号を決定する考え方、多値化テーブル、変換テーブル、順序値マトリックスなどを設定する方法について、順次説明する。
【０１４０】
Ｃ−３．ディザ法の概要  ：
上述した第１実施例の画像印刷処理は、いわゆるディザ法と呼ばれる方法を発展させて改良したものである。そこで、画素群の分類番号を決定する考え方や、多値化テーブル、変換テーブル、順序値マトリックスなどの設定方法を説明する準備として、先ず、ディザ法の概要について簡単に説明しておく。
【０１４１】
ディザ法とは、画像データを、画素毎にドット形成の有無を表すデータに変換するために用いられる代表的な手法である。この手法では、ディザマトリックスと呼ばれるマトリックスに閾値を設定しておき、画像データの階調値とディザマトリックスに設定されている閾値とを画素毎に比較して、画像データの階調値の方が大きい画素についてはドットを形成すると判断し、そうでない画素についてはドットを形成しないと判断する。このような判断を画像中の全画素について行えば、画像データを画素毎にドット形成の有無を表すデータに変換することができる。
【０１４２】
図１６は、ディザマトリックスの一部を拡大して例示した説明図である。図示したマトリックスには、横方向（主走査方向）に１２８画素、縦方向（副走査方向）に６４画素、合計８１９２個の画素に、階調値１〜２５５の範囲から万遍なく選択された閾値がランダムに記憶されている。ここで、閾値の階調値が１〜２５５の範囲から選択されているのは、本実施例では、画像データが階調値０〜２５５の値を取り得る１バイトデータとしていることに加えて、画像データの階調値と閾値とが等しい場合には、その画素にはドットを形成するものと判断していることによるものである。
【０１４３】
すなわち、ドットが形成されるのは画像データの階調値が閾値よりも大きい画素に限る（すなわち階調値と閾値とが等しい画素にはドットは形成しない）とした場合、画像データの取り得る最大階調値と同じ値の閾値を有する画素には、決してドットが形成されることはない。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最大階調値を除いた範囲とする。逆に、画像データの階調値と閾値とが等しい画素にもドットを形成するとした場合、画像データの取り得る最小階調値と同じ値の閾値を有する画素には、常にドットが形成されてしまうことになる。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最小階調値を除いた範囲とする。本実施例では、画像データの取り得る階調値が０〜２５５であり、画像データと閾値が等しい画素にはドットを形成するとしていることから、閾値の取り得る範囲を１〜２５５としておくのである。尚、ディザマトリックスの大きさは、図１６に例示したような大きさに限られるものではなく、縦と横の画素数が同じマトリックスも含めて種々の大きさとすることができる。
【０１４４】
図１７は、ディザマトリックスを参照しながら、各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成の有無を判断するに際しては、先ず、判断しようとする画素を選択し、この画素についての画像データの階調値と、ディザマトリックス中で対応する位置に記憶されている閾値とを比較する。図１７中に示した細い破線の矢印は、画像データの階調値と、ディザマトリックスに記憶されている閾値とを、画素毎に比較していることを模式的に表したものである。例えば、画像データの左上隅の画素については、画像データの階調値は９７であり、ディザマトリックスの閾値は１であるから、この画素にはドットを形成すると判断する。図１７中に実線で示した矢印は、この画素にはドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は９７、ディザマトリックスの閾値は１７７であり、閾値の方が大きいので、この画素についてはドットを形成しないと判断する。ディザ法では、こうしてディザマトリックスを参照しながら、画素毎にドットを形成するか否かを判断することで、画像データを画素毎にドット形成の有無を表すデータに変換する。
【０１４５】
以上に説明した内容を踏まえて、以下では、画素群の分類番号を決定する考え方や、多値化テーブル、変換テーブル、順序値マトリックスなどの設定方法について説明する。
【０１４６】
Ｃ−４．分類番号を決定するための考え方  ：
以下では、先ず初めに、画素群の分類番号を付与する考え方を説明する。次いで、図８を用いて前述した簡便な方法によって、画素群の分類番号を求めることができる理由について説明する。
【０１４７】
図１８は、画素群毎の分類番号を決定するための考え方を示した説明図である。図１８（ａ）は、画像の一番左上隅の箇所において、横方向に４画素、縦方向に２画素の合計８画素をまとめることによって画素群を１つ生成した様子を概念的に示したものである。
【０１４８】
前述したように、ディザ法では画素に割り当てられた画像データの階調値と、ディザマトリックスの対応する位置に設定されている閾値とを比較して、画素毎にドット形成の有無を判断している。一方、本実施例では、隣接する所定数の画素を画素群としてまとめているから、ディザマトリックスに設定されている閾値についても、画素群に対応する所定数ずつまとめてブロックを生成することにする。図１８（ｂ）は、図１６に示したディザマトリックスに設定されている閾値を、横方向に４つ、縦方向に２つずつまとめて複数のブロックを生成した様子を示している。図１６に示したディザマトリックスは、横方向（主走査方向）に１２８画素分、縦方向（副走査方向）に６４画素分の合計８１９２画素分の閾値が設定されているから、これら閾値を横方向に４つ、縦方向に２つずつブロックにまとめれば、ディザマトリックスは縦横それぞれ３２個ずつ、合計１０２４個のブロックに分割されることになる。
【０１４９】
今、図１８（ｂ）に示すように、これらブロックに１番〜１０２４番までの通し番号を付しておく。そして、画像データにディザマトリックスを適用した時に、各画素群の位置に適用されるブロックの通し番号によって、画素群を分類してやる。例えば、図１８（ｃ）に示したように、画像の一番左上隅にある画素群には、図１８（ｂ）中の通し番号１番のブロックが適用されるから、この画素群は分類番号１番の画素群に分類するのである。以上が、画素群の分類番号を決定するための基本的な考え方である。
【０１５０】
次に、図８を用いて前述した方法によって、画素群の分類番号を算出可能な理由について説明する。図１９は、画素群の分類番号を算出する方法を示した説明図である。図１９（ａ）は、画像中で生成された１つの画素群を表している。以下では、この画素群を着目画素群として、分類番号を算出する方法について説明する。前述したように、着目画素群の位置は、画素群の左上隅にある画素の画素位置によって表すものとする。図１９（ａ）では、画素群の位置を示す画素に黒丸を付して表示している。この画素の画素位置が（Ｘ，Ｙ）であったとする。すると、各画素群の大きさは、主走査方向に４画素、副走査方向に２画素としているから、
Ｘ＝４ｎ＋１、  Ｙ＝２ｍ＋１
となるようなｎ、ｍ（ここで、ｎ，ｍは０以上の正整数）が存在する。換言すれば、着目画素群の左側にはｎ個の画素群が並んでおり、着目画素群の上側にはｍ個の画素群が並んでいることになる。
【０１５１】
ここで、前述したように画素群は、画像データにディザマトリックスを適用したときに、着目画素群に適用されるブロックの通し番号に基づいて分類することとしているから（図１８参照のこと）、ディザマトリックスを移動させながら画像データに適用する方法によって、同じ画素群でも異なった分類番号に分類されることになる。実際には、ディザマトリックスを移動させながら画像データに適用する方法はどのような方法でも構わないが、ここでは説明の便宜から、最も単純な方法すなわちディザマトリックスを横方向に移動させるものとして説明する。図１９（ｂ）には、ディザマトリックスを横方向に少しずつ移動させながら、繰り返し画像データに適用している様子が概念的に示されている。
【０１５２】
図１９（ｃ）は、図１９（ｂ）に示すようにディザマトリックスを繰り返して用いながら、図１９（ａ）に示した着目画素群にディザマトリックスを適用している様子を概念的に表している。このようにディザマトリックスを移動させていくと、ディザマトリックス中のいずれかのブロックが、着目画素群に適用されることになる。ここでは、着目画素群には、ディザマトリックス中でＭ行Ｎ列目のブロックが適用されたものとする。すると、図１９（ａ）に示したように着目画素群の左側にはｎ個の画素群があり、上側にはｍ個の画素群があるから、Ｎとｎ、およびＭとｍとの間には、それぞれ
Ｎ＝ｎ  −  ｉｎｔ（ｎ／３２）×３２  ＋  １
Ｍ＝ｍ  −  ｉｎｔ（ｍ／３２）×３２  ＋  １
の関係が成り立っている。ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す演算子である。すなわち、ｉｎｔ（ｎ／３２）は、ｎ／３２の計算結果に対して小数点以下の数値を切り捨てることによって得られる整数値を表している。このように、着目画素群の位置が分かれば、図１９（ｄ）に表示した上述の関係式から数値ＭおよびＮを求めて、ディザマトリックス中でＭ行Ｎ列目にあるブロックのブロック番号を、その着目画素群の分類番号としてやればよい。もっとも実際には、図８を用いて前述したように、着目画素群の座標値Ｘ，Ｙを２進数表示したデータから、所定ビットのデータを抜き出すだけで、極めて簡単に求めることができる。以下、この理由について説明する。
【０１５３】
図２０は、着目画素群の座標値の２進数表示から分類番号を求める方法を示した説明図である。着目画素群の座標値を（Ｘ，Ｙ）として、Ｘ，Ｙが１０ビットで表現されているものとする。図２０（ａ）は、数値Ｘを表す１０ビットの２進数データを概念的に示している。図では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０１５４】
図１９を用いて前述したように、着目画素群の左側にある画素群の個数ｎは、数値Ｘから１を減算して４で除算すれば得ることができる。ここで、４での除算は、２ビット分だけ右方向にシフトさせることで実施することができるから、数値Ｘから１を減算して、得られた２進数データを右方向に２ビット分だけビットシフトさせればよい。更に、数値Ｘは任意の値を取るのではなく、４ｎ＋１の形式で表現可能な数値しか取り得ないから、１を減算せずに、単に２進数データを右方向に２ビット分だけビットシフトさせるだけで、画素群の個数ｎを得ることができる。図２０（ｂ）は、こうして数値Ｘをビットシフトして得られた個数ｎの２進数データを概念的に表している。
【０１５５】
次いで、ｉｎｔ（ｎ／３２）を算出する。すなわち、個数ｎを３２で除算して、小数点以下の数値を切り捨てる操作を行う。３２による除算は、２進数データを右方向に５ビット分だけビットシフトさせることで実行可能であり、また、データを整数形式で扱っていれば、小数点以下の数値は自動的に切り捨てられてしまう。結局、ｉｎｔ（ｎ／３２）の２進数データは、個数ｎの２進数データを、単に右方向に５ビット分だけビットシフトさせることで得ることができる。図２０（ｃ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）の２進数データを概念的に表している。
【０１５６】
こうして得られたｉｎｔ（ｎ／３２）に３２を乗算する。３２による乗算は、２進数データを５ビット分だけ左方向にビットシフトすることで実施することができる。図２０（ｄ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）×３２の２進数データを概念的に表している。
【０１５７】
次いで、個数ｎからｉｎｔ（ｎ／３２）×３２を減算すれば、前述の数値Ｎを得ることができる。個数ｎの２進数データ（図２０（ｂ）参照）とｉｎｔ（ｎ／３２）×３２の２進数データ（図２０（ｄ）参照）とを比較すれば明らかなように、これら２進数データは、上位の５ビットは共通しており、減算する側の数値の下位５ビットは全て「０」となっている。従って、減算される側の数値（個数ｎ）の下位５ビットをそのまま抜き出せば、求める数値Ｍを得ることができる。すなわち、図２０（ｂ）に示した２進数データに対して、図２０（ｆ）に示すようなマスクデータを作用させるだけで、極めて簡便に数値Ｎを得ることが可能である。あるいは、図２０（ａ）に示した着目画素群の位置を示す数値Ｘの２進数データに、図２０（ｇ）のようなマスクデータを作用させて、４番目〜８番目のビットデータを直接抜き出すことによっても、数値Ｎを得ることができる。
【０１５８】
図２０では、着目画素群の位置を示す座標値（Ｘ，Ｙ）の数値Ｘから、ディザマトリックス中でのブロック位置を示す数値Ｎを求める場合について説明したが、全く同様にして、ブロック位置を示す数値Ｍも数値Ｙから求めることができる。結局、着目画素群の位置が分かれば、２進数データから特定のビット位置のデータを抜き出すだけで、着目画素群がディザマトリックス中で何行何列目のブロックに対応するかを知ることができ、このブロックの通し番号を算出すれば、着目画素群の分類番号を得ることができる。図８を用いて前述した分類番号の算出方法は、このようにして導かれた方法である。
【０１５９】
Ｃ−５．多値化テーブルの設定方法  ：
次に、図９に示した多値化テーブルを設定する方法について説明する。前述したように、多値化テーブルには、画素群階調値に対する多値化結果値が画素群の分類番号毎に設定されており、多値化テーブルを参照しながら多値化することで、画素群階調値は、図１０に示したように画素群の分類番号に応じた固有な態様で多値化されることになる。
【０１６０】
本実施例の多値化テーブルは、大きさの異なる複数種類のドットについて画素毎にドット形成の有無を判断可能なように、前述したディザ法を発展させた手法を基にして設定されている。かかる手法の詳細な内容は、特許３２９２１０４号に開示されている。多値化テーブルの設定方法を説明する前に、その準備として、上記の特許公報に開示された技術の概要について簡単に説明しておく。
【０１６１】
図２１は、ディザ法を発展させて、画素毎に大ドット・中ドット・小ドットの形成の有無を決定可能としたハーフトーン処理の流れを示すフローチャートである。ハーフトーン処理を開始すると、先ず初めに、ドットの形成有無を判断しようとする画素を選択して、その画素の画像データを取得する（ステップＳ２００）。次いで、取得した画像データを、大中小の各ドットについての密度データに変換する。ここで、密度データとは、ドットをどの程度の密度で形成するかを表すデータである。密度データは、階調値が大きくなる程、ドットが高い密度で形成されることを表している。例えば、密度データの階調値「２５５」は、ドットの形成密度が１００％、すなわち全ての画素にドットが形成されることを表しており、密度データの階調値「０」は、ドットの形成密度が０％、すなわちいずれの画素にもドットが形成されないことを表している。こうした密度データへの変換は、ドット密度変換テーブルと呼ばれる数表を参照することによって行うことができる。
【０１６２】
図２２は、画像データの階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。図示されているように、ドット密度変換テーブルには、画像データの階調値に対して、小ドット・中ドット・大ドットの各ドットについての密度データが設定されている。画像データが階調値「０」近傍の領域では、中ドット・大ドットの密度データはいずれも階調値「０」に設定されている。小ドットの密度データは、画像データの階調値が大きくなるに連れて増加して行くが、画像データがある階調値に達すると今度は逆に減少し始め、代わりに中ドットの密度データが増加し始める。画像データの階調値が更に増加して、ある階調値に達すると、小ドットの密度データが階調値「０」となり、中ドットの密度データが減少し始めて、代わりに大ドットの密度データが少しずつ増加していく。図２１のステップＳ２０２では、このドット密度変換テーブルを参照しながら、画像データの階調値を、大ドットの密度データ、中ドットの密度データ、小ドットの密度データに変換する処理を行う。
【０１６３】
処理対象とする画素について、大中小各ドットの密度データが得られたら、先ず初めに大ドットについての形成有無を判断する（図２１のステップＳ２０４）。かかる判断は、大ドットの密度データと、処理対象としている画素の対応する位置に設定されているディザマトリックスの閾値とを比較することによって行う。大ドットの密度データが閾値よりも大きい場合は、処理対象の画素には大ドットを形成するものと判断し、逆に密度データの方が小さい場合は、大ドットは形成しないものと判断する。
【０１６４】
次いで、処理対象の画素に大ドットを形成すると判断されているか否かを判定し（ステップＳ２０６）、大ドットを形成すると判断されている場合は（ステップＳ２０６：ｙｅｓ）、中ドットおよび小ドットについての判断は省略して、全画素を終了したか否かを判断する（ステップＳ２１８）。そして、ドット形成の有無を未判断の画素が残っている場合は（ステップＳ２１８：ｎｏ）、ステップＳ２００に戻って新たな画素を選択し、続く一連の処理を行う。
【０１６５】
一方、処理対象の画素に大ドットを形成すると判断されていない場合は（ステップＳ２０６：ｎｏ）、中ドットについての形成有無を判断するべく、大ドットの密度データに中ドットの密度データを加算して中ドット用の中間データを算出する（ステップＳ２０８）。こうして得られた中ドット用の中間データと、ディザマトリックスの閾値とを比較する。そして、中ドット用の中間データの方が閾値よりも大きければ、中ドットを形成するものと判断し、逆に中間データよりもディザマトリックスの閾値の方が大きければ、中ドットを形成しないものと判断する（ステップＳ２１０）。
【０１６６】
次いで、処理対象の画素に中ドットを形成すると判断されているか否かを判定し（ステップＳ２１２）、中ドットを形成すると判断されている場合は（ステップＳ２１２：ｙｅｓ）、小ドットについての判断は省略して、全画素を終了したか否かを判断する（ステップＳ２１８）。
【０１６７】
処理対象の画素に中ドットを形成すると判断されていない場合は（ステップＳ２１２：ｎｏ）、小ドットについての形成有無を判断するべく、中ドット用の中間データに小ドットの密度データを加算して小ドット用の中間データを算出する（ステップＳ２１４）。そして、得られた小ドット用の中間データと、ディザマトリックスの閾値とを比較する。そして、小ドット用の中間データの方が閾値よりも大きければ、小ドットを形成するものと判断し、逆に中間データよりもディザマトリックスの閾値の方が大きければ、いずれのドットも形成しないものと判断する（ステップＳ２１６）。
【０１６８】
すなわち、大ドットの密度データよりもディザマトリックスに設定された閾値の方が大きい画素（大ドットが形成されない画素）については、大ドットの密度データに中ドットの密度データを加算して、得られた中間データと閾値とを比較し、中間データの方が大きくなれば、中ドットを形成すると判断する。一方、中間データよりも依然として閾値の方が大きい画素については、中間データに小ドットの密度データを加算して新たな中間データを算出する。そして、この中間データと閾値とを比較して、新たな中間データの方が大きくなれば小ドットを形成すると判断し、依然として閾値の方が大きい画素についてはいずれのドットも形成しないと判断するのである。
【０１６９】
以上のような処理を行うことにより、処理対象の画素について、大ドット、中ドット、小ドットのいずれのドットを形成するか、若しくは、いずれのドットも形成しないかを判断することができる。そこで、全画素についての処理を終了したか否かを判断し（ステップＳ２１８）、未判断の画素が残っている場合は（ステップＳ２１８：ｎｏ）、ステップＳ２００に戻って新たな画素を選択し、続く一連の処理を行う。このようにして、処理対象として選択された画素について１つずつ、大中小のいずれのドットを形成するか否かを判断していく。そして、全画素について処理を終了したと判断されたら（ステップＳ２１８：ｙｅｓ）、図２１に示したハーフトーン処理を終了する。
【０１７０】
以上、ディザマトリックスを利用して、大中小の各ドットについての形成有無を判断する方法について説明した。以下では、上述の説明を踏まえて、図９に示した多値化テーブルの設定方法について説明する。
【０１７１】
前述したように多値化結果値生成処理では、画素群内に含まれる各画素の画像データを画素群階調値で代表させることにより、画素群をまとめて多値化している。そこで、多値化テーブルを設定するに際しては、先ず、画素群内の全画素が画素群階調値と同じ値の画像データを有するものとして、各画素について大中小の各種ドットについての形成有無を判断することを考える。各種ドットについての形成有無の判断は、図２１を用いて前述したハーフトーン処理によって行う。
【０１７２】
図２３は、画素群内の各画素について、大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。図中では、ハーフトーン処理を行うために着目している画素群を太い実線で囲って表している。画素群は８つの画素から構成されており、各画素の画像データは、いずれも画素群階調値と同じ値（図示した例では階調値９７）を有している。大中小各種ドットの形成有無を判断するためには、画像データを各ドットについての密度データに変換する。密度データへの変換は、図２２に示したドット密度変換テーブルを参照することによって行う。ここでは、画素群内の全画素が同じ画像データを有するものとしているから、各種ドットについても密度データも全て画素について同じ値となる。図示した例では、大ドットの密度データの階調値が「２」、中ドットの密度データの階調値が「９５」、小ドットの密度データの階調値が「３０」であった場合を表している。
【０１７３】
次いで、図２１を用いて説明したように、大ドットの密度データ、中ドット用の中間データ、あるいは小ドット用の中間データと、ディザマトリックスに設定されている閾値とを比較することによって、各種ドットについての形成有無を画素毎に判断する。ここで、比較に用いるディザマトリックスの閾値は、ディザマトリックスの中から、着目している画素群に対応する箇所に設定されている閾値を使用する。例えば、図２３に示した例では、画素群が画像の左上隅にあることから、閾値についても、ディザマトリックス中の左上隅の画素群に設定されている閾値を使用する。
【０１７４】
そして、画素群に設定されている８つの閾値の中で、大ドットの密度データよりも小さな閾値が設定されている画素については、大ドットを形成すると判断する。ここでは、大ドットの密度データは階調値「２」としているから、大ドットが形成される画素は、閾値「１」が設定されている画素だけである。図２３では、大ドットが形成されると判断された画素には、細かい斜線を付して表示している。大ドットの密度データ「２」よりも大きく、大ドットの密度データと中ドットの密度データとを加算して得られた中ドット用の中間データ「９７」よりも小さな閾値が設定されている画素には、中ドットを形成するものと判断する。このような画素は、閾値「４２」が設定された画素、および閾値「５８」が設定された画素の２つの画素だけである。図２３では、中ドットが形成されると判断された画素には、少し粗い斜線を付して表示している。そして、最後に、中ドット用の中間データ「９７」よりも大きく、中ドット用の中間データに小ドット用の密度データを加算して得られた小ドット用の中間データ「１２７」よりも小さな閾値が設定されている画素には、小ドットを形成するものと判断する。このような画素は、閾値「１０９」が設定された画素だけである。図２３では、小ドットが形成されると判断された画素には、粗い斜線を付して表示している。このようにして、大ドット、中ドット、小ドットの形成有無を判断した結果、着目している画素群の画素群階調値が「９７」である場合には、大ドット１個、中ドット２個、小ドット１個が形成されることになる。
【０１７５】
画素群階調値が大きく異なれば、画素群内に形成される大ドット、中ドット、小ドットの個数も異なったものとなる。また、画素群階調値を「０」から「２５５」まで変化させれば、それに伴って大ドット、中ドット、小ドットの個数は、幾段階かに変化するはずである。更に、画素群の分類番号が異なれば、ディザマトリックスの閾値も異なることから、ドット個数の変化の仕方も異なるはずである。図９に示した多値化テーブルは、画素群階調値を「０」から「２５５」まで変化させたときの、各種ドットの個数が段階的に変化する挙動を、分類番号毎に調べることによって設定されている。
【０１７６】
図２４は、実際に、多値化テーブルを設定する処理の流れを示したフローチャートである。以下、フローチャートに従って説明する。多値化テーブルの設定処理を開始すると、先ず初めに、画素群の分類番号を１つ選択する（ステップＳ３００）。例えば、ここでは分類番号１番を選択したものとする。
【０１７７】
次いで、選択した分類番号の画素群に対応する閾値を、ディザマトリックスの中から読み出してやる（ステップＳ３０２）。例えば、ここでは分類番号１番を選択したものとしているから、図１６に例示したディザマトリックスの中から、図１８（ｂ）中で１番と表示したブロック位置に設定されている８つの閾値を読み出す。
【０１７８】
そして、多値化結果値ＲＶおよび画素群階調値ＢＤを「０」に設定し（ステップＳ３０４）、更に、大ドット、中ドット、小ドットの形成個数をいずれも０個に設定する（ステップＳ３０６）。
【０１７９】
続いて、図２２に示したドット密度変換テーブルを参照することにより、画素群階調値を大ドット、中ドット、小ドットについての密度データに変換した後（ステップＳ３０８）、これら密度データと先に読み込んでおいた閾値とに基づいて、大中小の各種ドットについての形成個数を決定する（ステップＳ３１０）。すなわち、図２１あるいは図２３を用いて説明したように、大ドットの密度データよりも小さな閾値の個数を求めて、得られた個数を大ドットの形成個数とする。また、大ドットの密度データよりも大きく且つ中ドット用の中間データよりも小さな閾値の個数を求めて、これを中ドットの形成個数とする。更に、中ドット用の中間データよりも大きく且つ小ドット用の中間データよりも小さな閾値の個数を求めて、これを小ドットの形成個数とする。
【０１８０】
こうして求めた各種ドットの形成個数が、先に設定されていた形成個数に対して変更されたか否かを判断する（ステップＳ３１２）。そして、形成個数が変更されたと判断されれば（ステップＳ３１２：ｙｅｓ）、多値化結果値ＲＶを「１」だけ増加させて（ステップＳ３１４）、得られた多値化結果値ＲＶを画素群階調値ＢＤに対応づけて記憶する（ステップＳ３１６）。一方、形成個数が変更されていないと判断された場合は（ステップＳ３１２：ｎｏ）、多値化結果値ＲＶを増加させることなく、そのままの値を画素群階調値ＢＤに対応づけて記憶する（ステップＳ３１６）。
【０１８１】
以上のようにして、ある画素群階調値に対する多値化結果値を記憶したら、画素群階調値ＢＤが階調値２５５に達したか否かを判断する（ステップＳ３１８）。階調値２５５に達していなければ（ステップＳ３１８：ｎｏ）、画素群階調値ＢＤを「１」だけ増加させて（ステップＳ３２０）、ステップＳ３０８に戻って再び画素群階調値ＢＤを密度データに変換した後、続く一連の処理を行って、新たな画素群階調値ＢＤに対応づけて多値化結果値ＲＶを記憶する（ステップＳ３１６）。画素群階調値ＢＤが階調値２５５に達するまで、こうした操作を繰り返す。そして、画素群階調値ＢＤが階調値２５５に達したら（ステップＳ３１６：ｙｅｓ）、選択した分類番号については、すべての多値化結果値を設定したことになる。
【０１８２】
そこで、すべての分類番号について、以上のような処理を行ったか否かを判断し（ステップＳ３２２）、未処理の分類番号が残っている場合は（ステップＳ３２２：ｎｏ）、ステップＳ３００に戻って再び上述した処理を行う。こうした処理を繰り返し、すべての分類番号について、すべての多値化結果値を設定したと判断されたら（ステップＳ３２２：ｙｅｓ）、図２４に示した多値化テーブル設定処理を終了する。
【０１８３】
以上の説明から明らかなように、多値化結果値は、画素群階調値を変換して得られた大中小各ドットの密度データと、ディザマトリックス中で画素群に対応する位置に記憶されている閾値とによって決定される。ここで、図２２に示したドット密度変換テーブルは、画素群の分類番号が異なっていても同じテーブルを参照するから、画素群階調値に対する各ドットの密度データも、分類番号によらず同じ密度データが得られる。しかし、ディザマトリックスから読み出された閾値の組は、分類番号毎に異なったものとなる。何故なら、ディザマトリックスは、画像上でドットが一定のパターンで発生したり、あるいは近接した位置に固まって発生することで画質を悪化させることの無いように、閾値は出来るだけ分散させて且つ出来るだけランダムに設定されている。このため、画素群に含まれる複数個の閾値を組として見たときに、全く同じ組合せとなる可能性は極めて低いと考えられるからである。このような理由から、本実施例の多値化結果値生成処理で参照される多値化テーブルは、画素群階調値と多値化結果値との対応関係が分類番号毎に異なったものとなり、また、多値化結果値が変化する回数（図１０に示した多値化の段数）も、分類番号に応じて異なったものとなっている。
【０１８４】
Ｃ−６．変換テーブルの設定方法  ：
次に、図１２を用いて前述した変換テーブルの設定方法について説明する。かかる変換テーブルは、図１１に示したドット形成有無決定処理中で、多値化結果値を分類番号と組み合わせて、画素群に形成されるドット個数を表すデータに変換するために参照されるテーブルである。
【０１８５】
図２４を用いて前述した多値化テーブルの設定方法から明らかなように、多値化テーブルに設定されている多値化結果値は、画素群に形成される大中小の各ドットの個数に基づいて決定されている。もっとも、多値化結果値が、画素群に形成されるドット個数の組合せに直ちに対応しているわけではなく、多値化結果値と画素群の分類番号とを組み合わせることで初めて、具体的なドット個数の組合せに対応付けることができる。何故なら、多値化結果値は、画素群階調値を階調値０から階調値２５５まで増加させたときに、大中小各ドットの形成個数が変化したか否かだけを抽出し、具体的に各ドット個数の組合せがどのように変化したかを示す情報は省かれた状態で設定されているからである。
【０１８６】
とは言え、画素群の分類番号が分かっていれば、その画素群で何回目の変化に相当するか、すなわち多値化結果値から、各種ドットについての具体的な個数の組合せを特定することはできる。そこで、分類番号毎に、多値化結果値を設定する元になった各種ドットの具体的な個数を求め、得られたドット個数の組合せに対応するコードデータを、多値化結果値に対応付けて記憶しておく。図１２に示した変換テーブルは、こうした操作を、全ての分類番号について行うことによって設定されている。
【０１８７】
図２５は、変換テーブルを設定する具体的な処理の流れを示したフローチャートである。以下、フローチャートに従って説明する。変換テーブル設定処理を開始すると、先ず初めに、設定対象とする分類番号を１つ選択し（ステップＳ３５０）、多値化結果とＲＶを０に設定する（ステップＳ３５２）。
【０１８８】
次いで、多値化結果値ＲＶに対応する大中小各ドットの個数を取得する（ステップＳ３５４）。例えば、多値化結果値が「Ｎ」であったとすると、その分類番号の画素群について、画素群階調値を「０」から「２５５」に変化させながら大中小各ドットの形成有無を判断し、ドットの形成個数がＮ番目に変化したときの大ドット、中ドット、小ドットの個数を取得する。
【０１８９】
こうして取得した各ドットの個数の組合せを、コードデータに変換する（ステップＳ３５６）。ドット個数の組合せからコードデータへの変換は、図１３に示した対応表を参照することによって行う。次いで、得られたコードデータを、多値化結果値に対応付けて記憶した後（ステップＳ３５８）、対象としている分類番号についての最大の多値化結果に達したか否かを判断する（ステップＳ３６０）。すなわち、図９を用いて説明したように、多値化結果の最大値は、画素群の分類番号によって異なっていることから、対象としている分類番号についての多値化結果の最大値に達したか否かを判断するのである。
【０１９０】
そして、多値化結果の最大値に達していない場合は（ステップＳ３６０：ｎｏ）、多値化結果ＲＶの値を「１」だけ増加させる（ステップＳ３６２）。そして、ステップＳ３５４に戻って、新たな多値化結果値ＲＶに対応する各ドットの個数を取得した後、続く一連の処理を繰り返す。こうした操作を繰り返し、対象としている分類番号の最大多値化結果値に達したと判断されたら（ステップＳ３６０：ｙｅｓ）、その分類番号については全データが変換テーブルに設定されたことになる。
【０１９１】
そこで今度は、全ての分類番号について同様の処理を行ったか否かを判断する（ステップＳ３６４）。そして、未だ処理していない分類番号が残っている場合は、ステップＳ３５０に戻って新たな分類番号を選択し、この分類番号について、上述した一連の処理を行う。こうして全ての分類番号について処理を終了したと判断されたら（ステップＳ３６４：ｙｅｓ）、変換テーブルの全てのデータが設定されたことになるので、図２５に示す処理を終了する。
【０１９２】
第１実施例のカラープリンタ２００は、このようにして設定された変換テーブルが、制御回路２６０に内蔵されたＲＯＭ内に予め記憶されている。そして、図１１に示したドット形成有無決定処理では、この変換テーブルを参照することによって、多値化結果値を個数データに変換しているのである。
【０１９３】
Ｃ−７．順序値マトリックスの設定方法  ：
次に、図１４に例示した順序値マトリックスを設定する方法について説明する。前述したように、順序値マトリックスとは、画素群内の各画素について、ドットが形成される順番を設定したマトリックスである。図１１に示したドット形成有無決定処理中では、画素群に対応する順序値マトリックスを読み込んで、マトリックスに設定されている順番に従って、大ドット、中ドット、小ドットを形成する画素を決定していた。
【０１９４】
順序値マトリックスも、前述した多値化テーブルと同様に、特許３２９２１０４号に開示された手法（ディザ法を発展させて、大きさの異なる複数種類のドットの形成の有無を判断可能とした手法）を基にして設定されている。すなわち、多値化テーブルを設定する場合は、前述したように画素群内の全画素が同じ画像データ（画素群階調値）を有するものとして、画素群内に形成される大中小ドットの個数を決定しながら、画素群階調値を「０」から「２５５」まで変化させて、このときに各ドットが形成される個数の変化に着目して多値化結果値を設定した。また、図１２に示すように、多値化結果値と分類番号とを組み合わせれば、画素群内に形成される大中小の各ドットの個数までは復元することができた。しかし、これら各種ドットが、画素群内のどの画素に形成されるかに関する情報は省略されており、多値化結果値あるいは分類番号からは知ることはできない。順序値マトリックスは、画素群内で各種ドットが形成される画素位置に関する情報を記憶したものと考えることができる。すなわち、特許３２９２１０４号に開示された手法を画素群に適用すれば、図２１ないし図２３を用いて前述したように、各種ドットの形成個数だけでなく、画素群内でドットが形成される画素位置まで決定可能であるところ、本実施例ではこの手法を２つの要素に分解して、各種ドットの形成個数に関する情報については、主に多値化結果値（正確には、多値化結果値および分類番号の組合せ）に反映させ、ドットが形成される画素位置に関する情報ついては、順序値マトリックスに反映させていると考えることができる。このような順序値マトリックスは、実際には、比較的簡単に設定することができる。
【０１９５】
図２６は、順序値マトリックスを設定する方法について具体的に示した説明図である。以下、図を参照しながら説明する。順序値マトリックスの設定に際しては、先ず、ディザマトリックスを画素群と同じ大きさを有する複数のブロックに分割して、各ブロックに通し番号を付しておく。図１８を用いて前述したように、この通し番号がそのまま画素群の分類番号となる。図２６（ａ）は、ディザマトリクスを複数のブロックに分割した様子を概念的に示した説明図である。今、ディザマトリックスが図１６に示した大きさ（すなわち、主走査方向に１２８画素、副走査方向に６４画素）を有しているものとすると、１つの画素群は主走査方向に４画素、副走査方向に２画素の大きさを有するとしているから、図２６（ａ）に示すように、ディザマトリックスは主走査方向および副走査方向にそれぞれ３２ブロックずつ、全体では、１番から１０２４番までの分類番号が付された１０２４個のブロックに分割されることになる。
【０１９６】
ディザマトリックスを複数のブロックに分割したら、各ブロックから１組ずつ順序値マトリックスを生成する。図２６（ｂ）は、一例として、分類番号１番のブロックから順序値マトリックスを生成している様子を示した説明図である。図２６（ｂ）の左側半分には、分類番号１番のブロックに含まれるディザマトリックスの閾値が示されている。図２３を用いて前述したように、ドットは小さな閾値が設定されている画素から順番に形成される。従って、図２６（ｂ）に示した１番のブロックの中で１番初めにドットが形成される画素は、閾値「１」が設定された画素と考えることができる。そこで、この画素には順序値として「１」を設定する。同様に、２番目にドットが形成される画素は、２番目に小さな閾値である閾値「４２」が設定された画素と考えることができる。そこで、この画素には順序値「２」を設定する。このようにして、ブロック内に設定されている閾値の小さな画素から順番に、順序値「１」から順序値「８」までを決定してやれば、図２６（ｂ）の右側半分に示した分類番号１番の順序値マトリックスを得ることができる。
【０１９７】
図２６（ｃ）は、同様にして、ブロック内で小さな閾値が設定されている画素から順番に、順序値「１」から順序値「８」までを設定することで、分類番号２番の順序値マトリックスが得られる様子を示している。図２６（ａ）に示した分類番号「１」番から「１０２４」番までの全てのブロックについて、以上のような操作を行うことにより、分類番号「１」番から「１０２４」番までの順序値マトリックスを得ることができる。
【０１９８】
第１実施例のカラープリンタ２００は、このようにして設定された順序値マトリックスが、制御回路２６０に内蔵されたＲＯＭ内に、画素群の分類番号に対応付けて予め記憶されている。そして、図１１に示したドット形成有無決定処理を実施する際には、記憶されている順序値マトリックスの中から、画素群の分類番号に対応するマトリックスを読み出しているのである。
【０１９９】
Ｃ−８．多値化結果値からドット形成有無を適切に決定可能な原理  ：
以上に説明したように、第１実施例の画像印刷処理では、複数個の画素を画素群にまとめて、図９に例示した多値化テーブルを参照することにより、画素群毎に多値化結果値を決定する。次いで、図１２に例示した変換テーブル、および図１４に例示した順序値マトリックスを参照しながら、多値化結果値に基づいて画素群内に各種ドットを形成する画素位置を決定する。このようにしてドットを形成する画素位置を決定した場合でも、ドットが適切に分散された高画質な画像を出力することができる。加えて、比較的少数ずつ（本実施例では８個ずつ）の画素群をまとめて処理しているにも関わらず、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクに代表される画素数が千個を越えるような大規模なディザマトリックスを用いることで実現されるような、良好なドット分布を得ることが可能である。以下では、このようなことが可能となる原理について説明する。
【０２００】
前述した特許３２９２１０４号に開示された技術を用いれば、図２１および図２２を用いて前述したように、画像データを大ドットの密度データ、中ドット用の中間データ、小ドット用の中間データに変換して、ディザマトリックスに設定されている閾値と比較することで、大中小各ドットについての形成の有無を判断することができる。更に、このときに参照するディザマトリックスを、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクに代表されるような分散性が考慮されたマトリックスとしておけば、ドットが良好に分散した高画質な画像を得ることができる。
【０２０１】
また、画像データは一般的に、隣接する画素間では近似する（若しくは同一の）階調値が割り当てられる傾向がある。近年では、高画質化の要請から画像データの解像度は益々高くなる傾向にあるが、隣接する画素間で近似若しくは同一の階調値が割り当てられる傾向は、画像データの解像度が高くなるほど顕著に現れる。このことから、図２３を用いて前述したように、複数個の画素を画素群としてまとめてしまい、画素群内の画素は全て同じ画像データを有するものとして大中小各ドットの形成有無を判断した場合でも、実際には画質に差が生じることは稀である。
【０２０２】
ここで、前述した本実施例の多値化結果値生成処理では、画素群階調値を多値化して、画素群の分類番号に依存した多値化結果値を生成する。こうして生成された多値化結果値は、画素群の分類番号と組み合わせることで、画素群内に形成される各種ドットの個数を示すデータとなっている。図２３に示した画素群については、画素群の分類番号と組み合わせることで、大ドット、中ドット、小ドットの形成個数が、それぞれ１個、２個、１個であることを示すような多値化結果値が生成されることになる。
【０２０３】
前述した第１実施例のドット形成有無決定処理では、このような多値化結果値を受け取ると、画素群内の各画素について、大中小各ドットについての形成有無を決定する。図２７は、前述したドット形成有無決定処理において、多値化結果値を受け取って、画素群内の各画素について大中小各ドットの形成有無を判断する処理の大まかな流れを概念的にまとめた説明図である。図示されているように、多値化結果値を受け取ると、その結果値が表す画素群の分類番号を求めた後、多値化結果値と分類番号とに基づいて、大中小各ドットの形成個数を取得する。また、予め記憶されている順序値マトリックスの中から、分類番号に対応付けて記憶されているマトリックスを読み出してやる。尚、分類番号を求める具体的な方法については後述する。
【０２０４】
図２３に示した画素群を想定しながら説明すれば、画素群は画像の左上隅にあるから分類番号は１番と求められる。この画素群の多値化結果値と、求めた分類番号とを組み合わせることにより、この画素群には、大ドット１個、中ドット２個、小ドット１個がそれぞれ形成されることが分かる。これら各ドットが、画素群内のどの画素に形成されるかを決定するために、分類番号１番の順序値マトリックスを参照する。この順序値マトリックスは、図２３において、ドット形成有無の判断に用いたディザマトリックスの該当部分、すなわち画素群内の各画素についてドット形成の有無を判断するために用いた該当部分から生成した順序値マトリックスである。
【０２０５】
このようにして得られた大中小各ドットの個数と、順序値マトリックスとに基づいて、画素群内でこれらドットを形成する画素位置を決定していく。画素位置を決定する具体的な方法は、図１５を用いて既に説明しているので、ここでは説明は省略して結果のみを示すと、大ドットは順序値１番の画素に形成され、中ドットは順序値２番の画素と３番の画素とに形成され、小ドットは順序値４番の画素に形成される。図２７では、図１５に倣って、大ドットを形成する画素には細かいハッチングを付し、中ドットを形成する画素には少し粗いハッチングを付し、小ドットを形成する画素には粗いハッチングを付して表している。こうして得られたドットの分布と、図２３に示した画素毎にドット形成の有無を判断して得られたドットの分布とを比較すれば、両者のドット分布は完全に一致していることが分かる。
【０２０６】
すなわち、分類番号に依存した多値化結果値のみを受け取った場合でも、上述した方法を用いてドット形成の有無を決定してやれば、前述した特許３２９２１０４号を適用してディザ法を参照しながら画素毎に大中小各ドットの形成有無を判断した場合と、全く同じドット分布を得ることができる。このため、ドットが良好に分散された高画質な画像を得ることが可能となるのである。
【０２０７】
加えて、多値化結果値を生成するために参照された多値化テーブルは、ディザマトリックスに基づいて設定されている（図２５参照）。同様に、多値化結果値からドット形成有無を決定する過程で参照された変換テーブルあるいは順序値マトリックスも、ディザマトリックスに基づいて設定されている（図２５、図２６参照）。従って、これらテーブル類の設定に用いられるディザマトリックスとして、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクを使用すれば、これらマスクを用いることで初めて得られるような、高画質な画像を得ることが可能となる。
【０２０８】
尚、本明細書中で言うブルーノイズマスクとは、ドットを不規則に発生させるディザマトリックスであって、設定されている閾値の空間周波数が、２画素以下を１周期とする高周波数領域に最も大きな成分を有するマトリックスを言う。もっとも、明るい（明度の高い）画像など、特定の明度付近では規則的なパターンでドットが形成される場合があっても良い。また、本明細書中で言うブルーノイズ特性とは、ブルーノイズマスクが有するこうした特性を言う。更に、本明細書中で言うグリーンノイズマスクとは、ドットを不規則に発生させるディザマトリックスであって、設定されている閾値の空間周波数が、２画素から十数画素を１周期とする中間周波数領域に最も大きな成分を有するマトリックスを言う。もっとも、グリーンノイズマトリックスについても、特定の明度付近であれば規則的なパターンでドットが形成される場合があっても良い。また、本明細書中で言うグリーンノイズ特性とは、グリーンノイズマスクが有するこうした特性を言う。
【０２０９】
図２８は、ブルーノイズマスク、およびグリーンノイズマスクに設定されている閾値の空間周波数特性を概念的に例示した説明図である。図２８では、表示の都合から、横軸には空間周波数の代わりに周期を取って表示している。言うまでもなく、周期が短くなるほど、空間周波数は高くなる。また、図２８の縦軸は、それぞれの周期での空間周波数成分を示している。尚、図示されている周波数成分は、ある程度変化が滑らかとなるように平滑化された状態で示されている。
【０２１０】
図中の実線は、ブルーノイズマスクの空間周波数成分を概念的に示している。図示されているように、ブルーノイズマスクは、１周期の長さが２画素以下の高い周波数領域に最も大きな周波数成分を有している。ブルーノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、ブルーノイズマスクに基づいてドット形成の有無を判断した場合には、ドットが互いに離れた状態で形成される傾向にある。また、図中の破線は、グリーンノイズマスクの空間周波数成分を概念的に示している。図示されているように、グリーンノイズマスクは、１周期の長さが２画素から十数画素の中間周波数領域に最も大きな周波数成分を有している。グリーンノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、グリーンノイズマスクに基づいてドット形成の有無を判断した場合には、数ドット単位で隣接してドットが形成されながら、全体としてはドットの固まりが分散した状態で形成される傾向にある。
【０２１１】
従って、このようなブルーノイズマスク、あるいはグリーンノイズマスクに基づいて、画素群内でのドット形成有無を決定してやれば、画素群単位で処理しているにも関わらず、ブルーノイズ特性あるいはグリーンノイズ特性を反映した分布となるようにドットを発生させて、高画質な画像を出力することが可能となるのである。
【０２１２】
Ｃ−９．画素群の位置から分類番号を決定する方法  ：
ここで、画像上での画素群の位置から、その画素群の分類番号を求める方法について、簡単に説明しておく。
【０２１３】
図２９は、画像上での画素群の位置に基づいて、分類番号を求める方法を示した説明図である。今、対象としている画素群が、図２９（ａ）に示すように、画像の一番左上隅を基準として主走査方向にｉ個目の画素群、副走査方向にｊ個目の画素群の位置にあるとする。また、このような画素群の位置を、座標値（ｉ，ｊ）によって表すものとする。また、ディザマトリックスの大きさは、通常は、画像のようには大きくはないので、図１９（ｂ）を用いて前述したように、ディザマトリックスを主走査方向に移動させながら、繰り返して使用するものとする。
【０２１４】
１つのディザマトリックスには主走査方向・副走査方向にそれぞれ３２個ずつのブロックが含まれるとしているから（図１８（ｂ）参照）、ディザマトリックス中で、対象の画素群がある位置をＩ行Ｊ列とすれば、Ｉ、Ｊはそれぞれ次式で求めることができる。
Ｉ＝ｉ  −  ｉｎｔ（ｉ／３２）×３２
Ｊ＝ｊ  −  ｉｎｔ（ｊ／３２）×３２
ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す前述した演算子である。従って、画素群の座標値（ｉ，ｊ）に上式を適用してＩ，Ｊを求めることで、その画素群がディザマトリックス中でＩ行Ｊ列にあることが分かる。これより、分類番号は、
Ｉ＋（Ｊ−１）×３２  …（２）
によって求めることができる。
【０２１５】
また、画素群のディザマトリックス中での位置を表す値Ｉ，Ｊは、上述したような計算を実行せずとも、ｉ，ｊの２進数表示から所定ビットのデータを抜き出すだけで、極めて簡便に求めることができる。図３０は、画素群の座標値（ｉ，ｊ）から、画素群のディザマトリックス中での位置を求める方法を具体的に示した説明図である。図３０（ａ）は、数値ｉを表す１０ビットの２進数表示したデータを概念的に示している。尚、図３０（ａ）では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０２１６】
画素群の位置を示す値Ｉを求めるに際しては、先ず初めに、ｉｎｔ（ｉ／３２）を算出する。この演算は、ｉの２進数データを右方向に５ビット分だけビットシフトさせることで実行することができる（図３０（ｂ）参照）。次いで、ｉｎｔ（ｉ／３２）×３２を算出する。この演算は、ｉｎｔ（ｉ／３２）の２進数データを左方向に５ビット分だけビットシフトさせることで実行することができる（図３０（ｃ）参照）。最後に、数値ｉから、ｉｎｔ（ｉ／３２）×３２を減算すれば、目的とする数値Ｉを得ることができる。この操作は、結局は、数値ｉの２進数データから下位の５ビットのみを抜き出していることに他ならないから、極めて簡便に数値Ｉを得ることが可能である。同様にして、数値ｊの２進数データから下位の５ビットのみを抜き出すことで、極めて簡便に数値Ｊを得ることが可能である。こうして数値ＩおよびＪが求まれば、上述の（２）式を用いて分類番号を算出することができる。
【０２１７】
以上、第１実施例の画像印刷処理中で行われる多値化結果値生成処理（図６のステップＳ１０６）、およびドット形成有無決定処理（図６のステップＳ１０８）の内容について詳しく説明した。上述した多値化結果値生成処理では、所定数の画素をまとめて画素群を生成し、その画素群の画素群階調値を多値化して得られた結果値を生成する。多値化結果値の生成に際しては、多値化テーブルを参照することにより、極めて迅速に生成することができる。加えて、こうして得られた多値化結果値は、画素群の分類番号に依存した結果値であるが、画素毎にドット形成の有無を表すデータに比べて、データ量が遙かに小さくなっているため、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを出力することができる。すなわち、上述した多値化結果値生成処理では、多値化結果値の生成および出力を高速に実行することが可能であり、その分だけ画像を迅速に印刷することが可能となるのである。
【０２１８】
加えて、多値化結果値を生成する処理は、単に多値化テーブルを参照する処理に過ぎず、多値化テーブルを参照するために使用する分類番号や画素群階調値も、極めて簡便な処理で求めることができるので、コンピュータ１００のような高いデータ処理能力を備えていない機器を用いた場合でも、十分に実用的な速度で処理することができる。
【０２１９】
更に、処理内容の大部分は、単にテーブルを参照するという極めて簡素な処理となることから、ＣＰＵを用いてソフトウェア的に実行するのではなく、専用の論理回路を組み込んだＩＣチップを用いてハードウェア的に実行することも容易であり、こうすることで極めて高速に処理することも可能である。従って、デジタルカメラ１２０などの画像データを生成する機器と、カラープリンタ２００とを直接接続した場合でも、多値化結果値生成処理をデジタルカメラ１２０やカラープリンタ２００の内部で実行することで、迅速に画像を印刷することも可能となる。
【０２２０】
一方、第１実施例の画像印刷処理中で行われるドット形成有無決定処理では、多値化結果値を受け取ると、画素群内の各画素についてドットの形成有無を決定する。ドット形成の有無を決定するに際しては、変換テーブルを参照することで、多値化結果値をドット個数の組合せに変換する。そして、順序値マトリックスを参照することで、各種ドットの形成位置を決定する。すなわち、変換テーブルおよび順序値マトリックスを参照することによって、各種ドットを形成する画素位置を迅速に決定することができる。
【０２２１】
通常、形成可能なドットの種類が増加すると、これら各種ドットを形成する画素位置を決定する処理は加速度的に複雑なものとなる。これに対して、上述した第１実施例のドット形成有無決定処理では、ドットの種類が増加した場合でも、変換テーブルおよび順序値マトリックスを参照するという基本的な処理内容は同じであり、処理内容が複雑化することはない。この点からも、第１実施例のドット形成有無決定処理によれば、簡素で且つ迅速な処理が可能と言うことができる。更に、上述した多値化結果生成処理と同様に、本実施例のドット形成有無決定処理においても、処理内容の大部分は、単にテーブルを参照するという極めて簡素な処理であるため、ＣＰＵを用いてソフトウェア的に実行するのではなく、専用の論理回路を組み込んだＩＣチップを用いてハードウェア的に実行することも容易であり、こうすることで極めて高速に処理することが可能である。
【０２２２】
Ｃ−１０．変形例  ：
Ｃ−１０−１．第１の変形例  ：
上述した第１実施例の多値化結果値生成処理では、階調値０から階調値２５５までの画素群階調値毎に、対応する多値化結果値を記憶した多値化テーブルを参照している。しかし多値化結果値は、画素群階調値が増加するに従って段階的に増加するだけなので、多値化結果値が切り換わる画素群階調値だけを記憶しておけば、画素群階調値に対する多値化結果値を求めることができる。以下に説明する第１の変形例の画像印刷処理では、こうした変形例の多値化結果値生成処理を行う。
【０２２３】
図３１は、変形例の多値化結果値生成処理において参照される閾値テーブルを概念的に示した説明図である。図示されているように閾値テーブルには、分類番号毎に、多値化結果値に対応する閾値が設定されている。この閾値は、画素群階調値を階調値０から階調値２５５まで増加させたときに、その多値化結果値となる最も大きな画素群階調値を表している。一例として、分類番号１番の画素群について説明する。分類番号１番については、多値化結果値「０」に対しては閾値「２」が設定されている。これは、分類番号１番の画素群については、画素群階調値が「０」ないし「２」の範囲にあれば、多値化結果値が「０」となることを表している。また、多値化結果値「１」に対しては閾値「１５」が設定されている。これは、分類番号１番の画素群については、画素群階調値が「３」から「１５」の範囲にあれば多値化結果値が「１」となることを表している。同様に、多値化結果値「１４」に対しては閾値「２４３」が、そして多値化結果値「１５」に対しては閾値「２５５」が設定されている。これは、画素群階調値が「２４４」から「２５５」の範囲にあれば多値化結果値が「１５」になることを、そして、分類番号１番の画素群については、多値化結果値の最大値が「１５」であることを表している。
【０２２４】
尚、図３１では、分類番号毎の閾値は、それぞれ多値化結果値に対応させて設定されているものとした。しかし、特に多値化結果値に対応付けることなく、単なる閾値の組を分類番号毎に記憶することとしてもよい。この場合は、画素群階調値よりも小さな閾値の個数を数えることで、多値化結果値を求めることができる。再び、分類番号１番の画素群を例に用いて説明する。例えば、画素群階調値が「２０」であったとする。分類番号１番に設定されている閾値の組の中で、階調値２０よりも小さな閾値は、「２」、「１５」、「１８」の３個である。このことから、画素群階調値２０に対する多値化結果値は「３」であると求めることとしてもよい。
【０２２５】
以上に説明した変形例の多値化結果値生成処理では、画素群についての画素群階調値と分類番号とを求めた後、図３１に例示した閾値テーブルを参照することによって、多値化結果値を生成する。閾値テーブルは、前述した第１実施例の多値化結果生成処理中で参照する多値化テーブル（図９参照）よりも少ないデータ量で記憶しておくことができる。このため、変形例の多値化結果値生成処理は、第１実施例として示した処理に比べて、メモリ使用量を節約することが可能である。これに対して、第１実施例の多値化結果値生成処理は、分類番号と画素群階調値とから多値化テーブルを参照するだけで直ちに多値化結果値を求めることができる。すなわち、変形例における処理のように画素群階調値と閾値とを比較する必要がないので、迅速に多値化することが可能である。
【０２２６】
Ｃ−１０−２．第２の変形例  ：
上述した第１実施例のドット形成有無決定処理では、画素群の分類番号と多値化結果値とを受け取ると、これを、画素群内に形成する各種ドットの個数を表すデータに一旦変換した。そして、ドット形成の有無を判断するに際しては、画素群内の各画素についてドットを形成するか否かをドットの種類毎に決定した。例えば、図１１に示したフローチャートでは、初めに大ドットについてのドット形成の有無を判断し、次に中ドットのついての判断を行い、最後に小ドットについて判断するといったように、ドットの種類毎にドット形成有無を判断していた。しかし、ドット形成有無を判断する方法は、こうした方法に限られるものではない。例えば、画素群内から画素を１つずつ選択して、各画素について、大中小のいずれのドットが形成されるのか、あるいはドットが形成されないかを判断することとしてもよい。以下に説明する第２の変形例の画像印刷処理では、こうした変形例のドット形成有無決定処理を行う。
【０２２７】
図３２は、変形例のドット形成有無決定処理の流れを示したフローチャートである。以下、フローチャートに従って、変形例のドット形成有無決定処理について説明する。
【０２２８】
変形例のドット形成有無決定処理においても前述した第１実施例における処理と同様に、処理を開始すると先ず初めに、処理対象とする画素群を１つ選択する（ステップＳ４００）。次いで、選択した画素群の多値化結果値を取得し（ステップＳ４０２）、画素群の分類番号と多値化結果値とに基づいて、その画素群に形成するドット個数を表すデータを取得する（ステップＳ４０４）。ドット個数のデータは、分類番号と多値化結果値との組合せから、図１２に示した変換テーブルを参照することによって迅速に取得することができる。
【０２２９】
変形例のドット形成有無決定処理では、こうして取得したドット個数のデータを一旦、１６ビット長の中間データに変換する（ステップＳ４０６）。すなわち、図１２の変換テーブルではデータ量を低減するために、ドット個数のデータを８ビット長のコードデータとして表したが、変形例のドット形成有無決定処理では、ドット形成有無をより簡便に決定可能な形式で表現された中間データに一旦変換しておくのである。ここで、中間データのデータ長が１６ビットとなっているのは、画素群内に含まれる画素数が８個であり、各画素についてのドット形成の有無は２ビットあれば表現可能であることによる。換言すれば、中間データは２ビットずつを１組として、画素数に相当する８組のデータを用いてドット個数を表すデータとなっている。画素群に形成するドット個数をこのような形式で表現しておけば、後述するように画素との対応が取り易くなるため、ドット形成有無を簡便に決定することが可能となる。変形例のドット形成有無決定処理においては、ドット個数を表すコードデータと中間データとの対応関係が予め記憶されており、ステップＳ４０６の処理では、かかる対応関係を参照することによって中間データを取得する。
【０２３０】
図３３は、ドット個数を表すコードデータと中間データとを対応付けた対応表を示す説明図である。前述したようにコードデータは、各種ドットについての個数の組合せに対応付けられているから（図１３参照）、２ビットを１組としてドットの種類を表し、そのビットの組をドットの個数に相当する数だけ並べた表現形式に変換すれば、１６ビットのデータを得ることができる。１６ビット長の中間データは、コードデータの表現形式をこの様にして変換して得られたデータとなっている。
【０２３１】
例えば、コードデータ「１」は、大ドット０個、中ドット０個、小ドット１個の組合せを示している。尚、参考として、図３３の右側には、それぞれのコードデータが示すドット個数の組合せが示されている。今、小ドットを表す２ビットデータを「０１」とすれば、コードデータ「１」に対応する１６ビットデータは、「０１」が１組だけ含まれており、他の７組の２ビットデータは「００」であるようなデータとなる。尚、２ビットデータ「００」はドットを形成しないことを表すデータである。
【０２３２】
同様に、コードデータ「１６３」は、大ドット７個、中ドット１個、小ドット０個の組合せを示している。今、大ドットを表す２ビットデータを「１１」として、中ドットを表す２ビットデータを「１０」とすれば、コードデータ「１６３」に対応する１６ビットデータは、「１１」の２ビットデータが７組含まれており、「１０」の２ビットデータが１組含まれたデータとなる。
【０２３３】
尚、これら２ビットデータは、大ドット、中ドット、小ドットの順番で、右詰めで設定されている。例えば、ドット個数の組合せが、大ドット１個、中ドット２個、小ドット３個であったとすると、８組の２ビットデータの中で、大ドットを表す２ビットデータ「１１」は右端に１組だけ設定され、その左隣に続けて、中ドットを表す２ビットデータ「１０」が２組設定され、更にその左隣に続けて、小ドットを表す２ビットデータ「０１」が３組設定され、残った２組には、ドットを形成しないことを表す２ビットデータ「００」が設定されることになる。もっとも、これら２ビットデータを左詰めで設定することとしても良い。すなわち、大ドット、中ドット、小ドットの順番で左から順番に設定しても良い。
【０２３４】
図３２に示した変形例のドット形成有無決定処理のＳ４０６では、図３３に示した対応関係を参照することによって、ドット個数を表すデータを、中間データに変換する処理を行う。尚、以上の説明では、図１２に示した変換テーブルを参照することによって、分類番号および画素群階調値の組合せを、ドット個数を表す８ビットのコードデータに一旦変換した後、図３３に示した対応関係に基づいて、コードデータを１６ビットの中間データに変換するものとした。もっとも、コードデータと中間データとは１対１に対応付けられていることから、図１２に示した変換テーブルに、８ビットのコードデータではなく１６ビットの中間データを設定しておき、画素群の分類番号および画素群階調値の組合せから、直ちに中間データを取得することも可能である。このようにすれば、変換テーブルのデータ量は大きくなるものの、迅速に中間データを得ることができる。
【０２３５】
以上のようにして中間データを取得したら、画素群に対応する順序値マトリックスを読み込んだ後（ステップＳ４０８）、画素群の中からドット形成有無を決定しようとする画素を１つ選択して（ステップＳ４１０）、順序値マトリックス中で選択した画素位置に設定されている順序値を取得する（ステップＳ４１２）。
【０２３６】
次いで、先に取得しておいた中間データの中から、順序値に対応する箇所に設定されている２ビットデータを読み出すことによって、選択した画素についてのドット形成の有無を決定する（ステップＳ４１４）。図３４は、中間データの中から順序値に対応する箇所のデータを読み出すことにより、ドット形成の有無を決定している様子を示した説明図である。図３４（ａ）は、ある画素群に形成するドット個数のデータを変換して得られた中間データを例示したものである。前述したように中間データは、１６ビット長のデータであり、２ビットずつ８組のデータから構成されている。また、図３４（ａ）に示した中間データには、大ドットを表す２ビットデータ「１１」が１組、中ドットを表す２ビットデータ「１０」が２組、小ドットを表す２ビットデータ「０１」が３組、ドットを形成しないことを表す２ビットデータ「００」が２組含まれており、これら２ビットデータが、大ドット、中ドット、小ドットの順序で右詰めに設定されている。
【０２３７】
今、ドット形成有無を決定しようとしている画素の順序値が「３」であったとする。この場合は、中間データの中で、右から３組目に設定されている２ビットデータを読み出せば、順序値３の画素に形成すべきドットの種類を決定することができる。図３４（ｂ）には、中間データの右端から３組目にある２ビットデータを読み出している様子が、概念的に示されている。図示した例では、読み出した２ビットデータは「１０」であるから、この画素には中ドットを形成するものと決定すればよい。仮に、順序値が「１」であれば、中間データの右端に設定されている２ビットデータを読み出して、大ドットを形成するものと決定すればよい。
【０２３８】
このように、変形例のドット形成有無決定処理では、中間データの中から、順序値に相当する箇所に設定されている２ビットデータを読み出すという極めて簡単な操作によって、ドット形成の有無を決定することができる。これは、次の理由によるものである。先ず、中間データには、大ドット、中ドット、小ドットを表す２ビットデータが右詰めで設定されている。一方、図２１あるいは図２３に示したように、ディザ法を用いて大中小各ドットの形成有無を判断する処理では、大ドット、中ドット、小ドットの順番でドット形成の有無を決定している。従って、中間データに設定されている２ビットデータを右端から順番に読み出していけば、図２１あるいは図２３を用いて前述した手法を適用して各種ドットを形成する画素位置を決定した順番と同じ順番で、大ドット、中ドット、小ドットを表す２ビットデータの並びが得られることになる。
【０２３９】
また、図２１あるいは図２３を用いて前述した手法では、ディザマトリックスに小さな閾値が設定されている画素から順番にドットが形成されていく。一方、順序値マトリックスに設定されている順序値は、ディザマトリックスに設定されている閾値の小さい順番を表している。従って、順序値は、図２１あるいは図２３を用いて前述した手法を用いてドット形成の有無を判断したときに、ドットが形成された順番と一致する。
【０２４０】
このことから、対象としている画素の順序値が分かれば、図２１あるいは図２３の手法を適用したときに、その画素が画素群中で何番目にドットが形成された画素であるかを知ることができ、更に、中間データを右端から数えて順序値組目の２ビットデータを読み出せば、図２１あるいは図２３の手法を適用したときに得られるドット形成有無の判断結果を知ることができるのである。
【０２４１】
尚、以上では、中間データの中で２ビットデータを読み出す箇所を順序値に応じて変更するものとして説明した。しかし、中間データの中で読み出す箇所を変えるのではなく、データを読み出す箇所は固定しておき、中間データを順序値に相当する組数だけシフトさせることとしても良い。この様にしても、ドット形成の有無を決定することができる。図３４（ｃ）は、中間データをシフトさせることによって、ドット形成有無を決定している様子を概念的に示した説明図である。図示した例では、中間データの右端にある２ビットデータを読み出すこととして、中間データを画素の順序値に応じた組数（具体的には順序値から１だけ少ない組数）だけ右方向にシフトさせている。図３４（ｂ）と図３４（ｃ）とを比較すれば明らかなように、どちらの操作を行った場合でも、結局は、中間データの中の同じ箇所に設定されている２ビットデータを読み出していることになる。データを所定のビット数だけシフトさせる処理は、比較的高速に実施可能であることから、この様にして中間データをシフトさせれば、順序値に応じた箇所の２ビットデータを迅速に読み出して、着目している画素についてのドット形成の有無を迅速に決定することができる。
【０２４２】
以上のようにして、中間データの中から順序値に相当する箇所に設定されている２ビットデータを読み出すことにより、着目している画素についてのドット形成の有無を決定したら（図３２のステップＳ４１２）、処理対象としている画素群内の全画素についてドット形成の有無を決定したか否かを判断する（ステップＳ４１４）。そして、画素群内に未だドット形成の有無を決定していない画素が残っている場合は（ステップＳ４１４：ｎｏ）、ステップＳ４１０に戻って新たな画素を１つ選択し、選択した画素について上述した続く一連の処理を行った後、再び画素群内の全画素についてドット形成の有無を決定したか否かを判断する（ステップＳ４１６）。画素群内の全画素についてドット形成の有無を決定するまで、こうした操作を繰り返し、全画素について決定したと判断されたら（ステップＳ４１６：ｙｅｓ）、今度は画像中の全画素群について、上述した処理を行ってドット形成の有無を決定したか否かを判断する（ステップＳ４１８）。そして、未処理の画素群が残っていれば（ステップＳ４１８：ｎｏ）、ステップＳ４００に戻って新たな画素群を選択し、その画素群について続く一連の処理を行う。こうした操作を繰り返し、最終的に全画素群についての処理を終了したと判断されたら（ステップＳ４１８：ｙｅｓ）、図３２に示した変形例のドット形成有無決定処理を終了する。
【０２４３】
以上に説明したように、変形例のドット形成有無決定処理では、中間データの中から順序値に応じた適切な箇所に設定されている２ビットデータを読み出すだけで、簡便にドット形成の有無を決定することができる。第２の変形例の画像印刷処理では、このようにして迅速にドット形成の有無を決定することができるので、それだけ迅速に画像を印刷することが可能となる。
【０２４４】
Ｄ．第２実施例  ：
以上に説明した第１実施例のドット形成有無決定処理では、画素群毎の多値化結果値を受け取ると、図１２に示した変換テーブルを参照することによって一旦、ドット個数を表すデータに変換した後、順序値マトリックスを参照しながら、画素群内でドットを形成する画素位置を決定した。しかし、画素群毎の多値化結果値を受け取ると、各種ドットを形成する画素位置を直ちに決定することも可能である。以下では、こうした第２実施例のドット形成有無決定処理について説明する。
【０２４５】
Ｄ−１．第２実施例のドット形成有無決定処理の原理  ：
図２７に示したように、第１実施例のドット形成有無決定処理においては、画素群毎に多値化結果値を受け取ると、画素群の分類番号を求めた後、多値化結果値と分類番号との組合せから、画素群内に形成される各種ドットの個数を決定した。そして、これらドットを形成する画素位置については、分類番号に対応した順序値マトリックスを参照することによって決定していた。すなわち、画素群の多値化結果値および分類番号が決まれば、画素群内の各画素に形成されるドットの種類を決定することができる。従って、予め、多値化結果値と分類番号との組合せ毎に、画素群内の各画素に形成されるドットの種類を求めて対応表に記憶しておけば、かかる対応表を参照するだけで、直ちにドット形成有無を決定することができるはずである。第２実施例のドット形成有無決定処理は、このような考え方に基づいて、画素群の多値化結果値から、各画素についてのドット形成の有無を迅速に決定することが可能となっている。
【０２４６】
図３５は、第２実施例のドット形成有無決定処理で参照される変換テーブルを概念的に示した説明図である。図示されているように、第２実施例の変換テーブルには、多値化結果値と分類番号との組合せに対応付けて、画素群内の各画素に形成されるドット種類を表すデータが設定されている。以下では、このようなデータをドットデータと呼ぶことにする。図３５に示した変換テーブルを参照すれば、画素群の分類番号と画素群階調値との組合せから、対応するドットデータを直ちに読み出すことができる。例えば、分類番号ｉ番、画素群階調値ｊであれば、ドットデータはＤＤ（ｉ，ｊ）となる。こうして読み出されたドットデータには、画素群内の各画素についてドット形成の有無が記述されている。
【０２４７】
図３６は、第２実施例の変換テーブルに設定されているドットデータのデータ構造を示した説明図である。図３６（ａ）に示すように、ドットデータは２ビットずつのデータ８組から構成された１６ビット長のデータとなっている。ここで、１つのドットデータが８組のデータから構成されているのは、本実施例の画像印刷処理では、１つの画素群には８つの画素が含まれていることに対応するものである。従って、例えば、１つの画素群が４つの画素から構成される場合は、１つのドットデータは４組のデータから構成されることになる。また、１組のデータが２ビットとなっているのは、本実施例のカラープリンタ２００が１つの画素あたり、「大ドットを形成」、「中ドットを形成」、「小ドットを形成」、「ドットを形成しない」の４つの状態を表現し得ることに対応したものである。すなわち、１つの画素あたり４つの状態しか取り得ないのであれば、２ビットで表現可能である。そこで、画素１つ分に対応する１組のデータを、２ビットのデータ長としているのである。
【０２４８】
図３６に示すように、ドットデータを構成する８組のデータは、それぞれ画素群内の所定位置の画素に対応付けられている。例えば、図３６（ａ）に示したドットデータの先頭にある１組目のデータは、図３６（ｂ）に示すように、画素群内で左上隅の画素に対応している。また、ドットデータの先頭から２組目のデータは、画素群内で上段の左から２番目の画素に対応している。このように、ドットデータを構成する８組のデータは、それぞれ画素群内の所定位置の画素に予め対応付けられている。
【０２４９】
そして、各組のデータの内容は、対応する画素に形成するドットの種類を表している。すなわち、２ビットのデータ「１１」は大ドットを形成することを意味している。２ビットのデータ「１０」は中ドットを形成することを意味しており、「０１」は小ドットを形成することを、そして「００」はドットを形成しないことを意味している。以上の説明から分かるように、図３６（ａ）に例示したドットデータは、画素群の左上隅の画素には大ドットを形成し、上段の左から３番目の画素には中ドットを、下段の左から２番目の画素には小ドットを、画素群の右下隅の画素には中ドットを形成し、そして、その他の画素にはドットを形成しないことを表すデータとなっている。
【０２５０】
このような変換テーブルを参照すれば、画素群の分類番号と多値化結果値とに基づいて、各画素についてのドット形成の有無を速やかに決定することが可能である。
【０２５１】
Ｄ−２．第２実施例のドット形成有無決定処理  ：
次に、第２実施例のドット形成有無決定処理において、多値化結果値から画素群内の各画素についてドット形成の有無を決定する具体的な処理について説明する。
【０２５２】
図３７は、第２実施例のドット形成有無決定処理の流れを示すフローチャートである。以下、フローチャートに従って簡単に説明する。第２実施例のドット形成有無決定処理を開始すると、処理対象とする画素群を１つ選択する（ステップＳ５００）。次いで、選択した画素群の多値化結果値を取得する（ステップＳ５０２）。このとき、画素群の分類番号が与えられていなければ、分類番号も算出しておく。そして、分類番号および多値化結果値の組合せに基づいて、図３５に示した変換テーブルを参照することにより、画素群内の各画素についてドット形成の有無を表したドットデータを読み出してやる（ステップＳ５０４）。第２実施例のドット形成有無決定処理では、こうして変換テーブルから対応する位置に記憶されているドットデータを読み出すだけで、画素群内の各画素についてドット形成の有無を決定することができる。
【０２５３】
次いで、全画素群についてドット形成の有無を決定したか否かを判断し（ステップＳ５０６）、未処理の画素群が残っていれば（ステップＳ５０６：ｎｏ）、ステップＳ５００に戻って新たな画素群を選択し、その画素群について続く一連の処理を行う。こうした操作を繰り返して、全画素群について処理を終了したと判断されたら（ステップＳ５０６：ｙｅｓ）、図３７に示す第２実施例のドット形成有無決定処理を終了する。
【０２５４】
以上に説明したように、第２実施例のドット形成有無決定処理では、変換テーブルを１回参照するだけで、多値化結果値から画素群内の各画素についてのドット形成有無を直ちに決定することができる。従って、図１１に示した第１実施例のドット形成有無決定処理に対しても、より一層迅速にドット形成の有無を決定することができ、延いては、極めて迅速に画像を出力することが可能となる。
【０２５５】
Ｅ．第３実施例  ：
以上に説明した各種実施例のドット形成有無決定処理では、画素群毎に得られた多値化結果値から各画素についてのドット形成有無を決定するに際して、ディザマトリックスを基礎とした手法を用いてドット形成の有無を決定していた。すなわち、ディザマトリックスに設定されている閾値はドットの形成され易さを表していると考えることができる点に着目し、第１実施例では、ディザマトリックスに基づいて設定された順序値マトリックスを用いて、画素群毎に各画素のドット形成の有無を決定した。また、第２実施例では、ディザマトリックスに基づいて設定されたドットデータを、変換テーブルに設定しておき、変換テーブルを参照することによって、多値化結果値から画素群毎に各画素のドット形成の有無を決定した。このため、上述した各種実施例のドット形成有無決定処理によって得られるドットの分布は、ディザマトリックスを用いて発生させたドットの分布と同等の分布が得られることになる。このことは、いわゆるブルーノイズマスクやグリーンノイズマスクに基づいてドットを発生させることで、これらマスクを用いて初めて実現されるようなドット分布が得られることを意味しているが、その一方で、ドットの発生する画素位置がディザマトリックスの制約を受けることも意味している。換言すれば、上述した各種実施例では、高画質な画像を迅速に出力することが可能であるものの、得られる画質はディザ法を用いて実現可能なレベルを越えることができず、より一層の高画質化を図るためには、ディザマトリックスの制約を受けずにドットを発生させ得るような工夫が必要となる。以下に説明する第３実施例では、ディザマトリックスの制約を受けずにドットを発生可能とすることで、より高画質な画像を迅速に出力することが可能となっている。
【０２５６】
Ｅ−１．画質を改善する原理  ：
以下では、先ず初めに「ディザマトリックスによる制約」の意味するところについて説明するとともに、ディザマトリックスの制約を受けずにドットを発生可能とすることで画質を改善することができる原理について説明する。
【０２５７】
図３８は、ディザマトリックスに基づいてドットを発生させるときに受ける制約について、概念的に示した説明図である。一般に、高画質な画像を得るためには、ドットが出来るだけ万遍なく分散するように発生させることが望ましいから、理想的なドットの分布状態を考えると、隣接するドット間の距離は全てドットで一定となり、従って、ドット間の距離とドットの形成密度との関係は１つに決まってしまう。すなわち、ドットの形成密度に対して、最適なドット間距離が１つずつ存在することになる。図３８（ａ）および図３８（ｂ）は、ドットの形成密度と最適なドット間距離との関係を概念的に示した説明図である。尚、ドットは二次元平面上に形成されるのであるが、直感的な理解を可能とするために、図３８ではドットが一次元直線上に形成されるものとして表している。ドットが二次元平面上に形成される場合については、一次元上で起きている現象が、直交する方向にも生じているものとすれば、大まかな状況を理解することが可能である。
【０２５８】
図３８（ａ）は、一次元上で２０％の密度でドットが形成される時の、理想的なドット分布を示した説明図である。この場合は、図示されているように、５画素に１つの割合でドットが形成されることになる。この状態を二次元に拡張する場合は、縦横それぞれに５画素に１つの割合でドットが形成される場合を考えればよいから、２５画素に１つの割合すなわち４％の密度でドットが形成される状態に相当すると考えればよい。また、このようなドットの分布を、ディザマトリックスを用いて発生させるためには、ドットが形成されている画素には小さな閾値を設定しておくことが必要となる。
【０２５９】
図３８（ｂ）は、一次元上で３３％の密度でドットが形成される時の、理想的なドット分布を示した説明図である。図示されているように、この場合は３画素に１つの割合でドットが形成されることになる。この状態を二次元に拡張する場合は、９画素に１つの割合すなわち１１％の密度でドットが形成される状態に相当する。
【０２６０】
ここで、一次元上でのドット形成密度が２０％の場合には、図３８（ａ）のドット分布が理想であるから、このようなドット分布を得るためには、図中でドットが形成されている画素の位置に、小さな閾値が設定されたディザマトリックスを用いる必要がある。図３８（ａ）に示した１６個分の画素位置については、ドットが形成されている４つの画素位置に小さな閾値を設定しておけばよい。一方、一次元上でのドット形成密度が２０％から３３％に増加した場合は、１６個分の画素位置の中では、図３８（ｂ）に示したように６つのドットを形成すればよい。ところが、ドット形成密度２０％の場合に理想的なドット分布を得るために、既に４つの画素位置には小さな閾値が設定されているから、これらを除いた中から２つ画素位置に小さな閾値を設定することになる。
【０２６１】
図３８（ｃ）は、このようにして密度３３％でドットが形成された状態を表している。図中で斜線が付されたドットは、密度２０％で理想的なドット分布を得るために形成されたドットであり、黒く塗られたドットは、ドット形成密度を３３％とするために追加して形成されたドットである。図３８（ｃ）のドット分布を、理想的なドット分布である図３８（ｂ）の分布と比較すれば明らかなように、図３８（ｃ）のドット分布は理想的な分布とはなっていない。これは、密度２０％で理想的なドット分布が得られるように、ディザマトリックスには５画素間隔で小さな閾値が設定されているため、より高い密度でドットを形成する場合には、その状態を前提としてドットを追加する以外にないためである。
【０２６２】
このように、ディザマトリックスを用いてドットを発生させる場合、ドットの発生の仕方は、より低い密度でのドット分布を前提として、そこに新たなドットが追加されるようなドットの発生の仕方にならざるを得ない。このことは次のように考えれば、より明快に理解することができる。すなわち、前述したように、ディザマトリックスに設定された閾値はドットの発生のし易さを表していると考えることができるから、同じディザマトリックスを用いる以上、ある密度でドットが形成されると、より高い密度では、その画素には必ずドットが形成されることになる。換言すれば、ディザマトリックスに小さな閾値が設定されている画素には、ほとんどの密度で常にドットが形成され、大きな閾値が設定されている画素には、ほとんどの密度でドットが形成されることがない。
【０２６３】
「ディザマトリックスによる制約」とは、このようにドットの発生の仕方が、より低い密度で発生するドット分布に拘束されることを言う。従って、ディザマトリックスによる制約を受けている限り、全ての密度で理想的なドット分布を実現することはできず、ある程度のレベルで妥協したドット分布とならざるを得ない。逆に言えば、ディザマトリックスによる制約を受けずにドットを発生させることが可能となれば、より理想に近いドット分布とすることで、画質の改善を図ることが可能となるのである。
【０２６４】
図３９は、第３実施例において、ディザマトリックスによる制約を受けないドット発生を可能とするためのデータ変換方法を概念的に示した説明図である。第３実施例では、前述した第１実施例と同様に、画像データから画素群毎に画素群階調値を生成し、画素群階調値を多値化結果値に変換する。次いで、変換テーブルを参照することにより、得られた多値化結果値を、画素群内に形成すべきドットの個数を表した個数データ、若しくは、画素群内でのドットパターンを表したドットデータの、いずれかのデータに変換する。画素群が８つの画素から構成されており、形成可能なドットの種類が３種類であるとすれば、図１３を用いて前述したようにドット個数の組み合わせは１６５種類しか取り得ないから８ビットのデータで表現することが可能であり、また、８ビットあれば２５６種類を表現することができる。従って、ドット個数の組み合わせとしては利用されない９１種類分の個数データを利用すれば、９１通りのドットデータを表すことができる。
【０２６５】
図４０は、８ビットの個数データを用いて、１６５通りのドット個数の組み合わせと、９１通りのドットデータとを表す様子を概念的に示した説明図である。図示されているように、個数データの０〜１６４の範囲は、大中小のドット個数の組み合わせを表すために割り当てられており、個数データの１６５〜２５５の範囲は、ドットデータを表すために割り当てられている。従って、多値化結果値を変換して得られた個数データが階調値０〜１６４の範囲のデータであれば、ドット個数の組み合わせを表した本来の意味での個数データであり、逆に階調値１６５より大きなデータであった場合は、その個数データは実際にはドットデータを表しているものと判断すればよい。そして、変換によって得られた個数データがドット個数の組み合わせを表している場合は、前述した第1実施例と同様に、順序値マトリックスを参照して、画素群内の各画素についてのドット形成有無を決定する。一方、個数データが実際にはドットデータを表している場合には、ドットパターンテーブルを参照して、その個数データをドットデータに変換することにより、画素群内の各画素についてのドット形成の有無を決定すればよい。
【０２６６】
図４１は、個数データからドットデータを得るために参照されるドットパターンテーブルを概念的に示した説明図である。図示されているように、ドットパターンテーブルには、ドットデータを表すために割り当てられた個数データの各々に対してドットデータが設定されている。ここでドットデータは、図３６を用いて前述した方法によって、画素群内でのドットの分布（ドットパターン）を表したデータである。尚、図４１では、参考のために各ドットデータが表すドットの分布（ドットパターン）も示されている。このようなドットパターンテーブルを参照すれば、ドットデータに割り当てられた個数データから、画素群内でのドット分布を直ちに決定することができる。また、ドットパターンテーブルには、各々の個数データに対して自由なドットデータを設定することができるから、ディザマトリックスの制約を受けずにドットを発生させることができる。従って、個数データの一部にはドット個数の組み合わせを割り当てておき、残りの部分にはドットデータを割り当てることとして、個数データから順序値マトリックスを参照して画素群内の各画素についてのドット形成有無を決定する場合と、ドットパターンテーブルを参照して、個数データから直ちに画素群内でのドット分布を得る場合とを併用してやれば、全体として、ディザマトリックスの制約を受けずにドットを発生させることが可能になると考えられる。この点につき、より具体的に説明する。
【０２６７】
図４２は、ある画素群についての多値化結果値が、ドット個数を表す個数データと、ドットデータを表す個数データとに変換される様子を概念的に示した説明図である。今、ある画素群の画素群階調値を階調値０から２５５まで変化させたときに、多値化結果値が０から１８まで変化したものとする。すなわち、この画素群については画素群階調値が１９値化されたことになる。次いで、図１２に示したような変換テーブルを参照することにより、多値化結果値を個数データに変換する。図４２に実線で示した棒グラフは、階調値０から階調値１８までの多値化結果値が、それぞれの個数データに変換された様子を概念的に表している。第１実施例において説明したように、このようにして得られた個数データは、階調値０から階調値１６４までの範囲から選択されて、それぞれが大中小の各ドットについての個数を表したデータとなっている。
【０２６８】
次いで、こうして得られた個数データを、ドットデータに割り当てられた個数データに差し替えてやる。例えば、多値化結果値２に対しては階調値７の個数データに変換されているが、この個数データを、ドットデータを表す個数データに差し替えてやる。ドットデータを表す個数データは、階調値１６５よりも大きな値に割り当てられている。その結果、この画素群については、多値化結果値２に対しては階調値７の個数データの代わりに、階調値１６８の個数データに変換されることになる。図４２に示された破線は、このように個数データが差し替えられていることを表したものである。尚、図中に示した一点鎖線は、ドットの個数を表す個数データの領域と、ドットデータを表す個数データの領域との境界を表している。また、多値化結果値６に対しても、階調値４８の個数データが階調値１７８の個数データに差し替えられている。更に、多値化結果値１０、１１、１５についても、個数データが差し替えられている。このように、ドット個数を表す個数データの一部を、ドットデータを表す個数データに差し替えてやれば、以下に説明するように、ディザマトリックスの制約を受けずにドットを発生させることが可能となる。
【０２６９】
図４３は、個数データの一部を差し替えることにより、ディザマトリックスの制約を受けずにドットを発生させることが可能となる様子を示した説明図である。図４３（ａ）は、対象とする画素群の順序値マトリックスを表している。また、この画素群については、多値化結果値０は個数データ「０」に変換され、多値化結果値１は個数データ「１」に、多値化結果値２は個数データ「３」に、多値化結果値３は個数データ「１０」に、そして多値化結果値４は個数データ「１２」に変換されるものとする。これら個数データは、何れも階調値１６４より小さいことから、各種ドットの個数を表すデータであり、図１３に示した対応関係によれば、個数データ「１」は、小ドットが１つだけ形成されることを表している。また、個数データ「３」は、小ドットが３つだけ形成されることを表しており、個数データ「１０」は、中ドットおよび小ドットが１つずつ形成されることを、個数データ「１２」は、中ドット１つおよび小ドット３つが形成されることを表している。これらのドットが図４３（ａ）に示した順序値マトリックスに従って形成されることになるから、結局、この画素群については多値化結果値が０から４へと増加するに従って、図４３（ｂ）から図４３（ｆ）に示したようにして、ドットが発生することになる。
【０２７０】
このようなドットの発生の仕方は、ディザマトリックスの制約を受けたものとなっている。すなわち、例えば、画素群中で上段の左から２番目の画素については、もっとも早くドットが形成され、その後は、画素群階調値が増加するにつれて小ドットが中ドットに変更されることはあるものの、常にドットが形成されている。これは、この画素には順序値１が設定されていることによる。また、画素群中で下段の一番右端にある画素についても、比較的早い段階でドットが形成され、その後は、順序値１の画素に１つだけドットが形成されるような場合を除いて、この画素についても常にドットが形成されている。このように、順序値マトリックスに従ってドットを形成すると、小さなドットが大きなドットに置き換わる場合は別として、常に現在のドット分布に対して新たなドットを追加するようにしてドットが発生することになり、ディザマトリックスの制約を受けたドット発生となってしまう。
【０２７１】
これに対して、多値化結果値２に対する個数データ「３」が、個数データ「１８１」に差し替えられたものとする。個数データ「１８１」は、階調値１６５よりも大きいことから明らかなように、ドットの個数ではなくドットデータを表しており、図４１に示したドットパターンテーブルによれば、図４３（ｇ）に示すようなドット分布を表している。従って、個数データ３を個数データ１８１に差し替えることによって、ドットの分布は、図４３（ｂ）、図４３（ｃ）、図４３（ｇ）、図４３（ｅ）、図４３（ｆ）と変化することになる。
【０２７２】
このようなドットの発生の仕方は、もはやディザマトリックスの制約を受けたものとはなっていない。すなわち、図４３（ｃ）と図４３（ｇ）とを比較すれば明らかなように、図４３（ｇ）のドット分布は、図４３（ｃ）のドット分布を前提として新たなドットを追加して得られた分布とはなっていない。また、図４３（ｇ）と図４３（ｅ）についても同様に、図４３（ｅ）に示したドット分布は、図４３（ｇ）のドット分布を前提として新たなドットを追加したものとはなっていない。更に、差し替える個数データを階調値１８１ではなく他の個数データとしてやれば、図４３（ｇ）に示すドット分布よりも、より適切なドット分布に変更することも可能である。
【０２７３】
このように、ドット個数を表す個数データの一部を、ドットデータを表す個数データに差し替えてやれば、ディザマトリックスの制約を受けずにドットを発生させることができる。しかも、差し替える個数データを適切なドットデータが得られるように選択すれば、単にディザマトリックスの制約を受けないだけでなく、より好ましいパターンでドットが発生するように、ドット分布を積極的に制御することが可能となる。以上が、ディザマトリックスの制約を受けずにドットを発生可能とすることで、画質の改善を可能とする基本的な原理である。以下では、こうした原理に基づいて画質が改善された画像を得るための具体的な処理内容について説明する。
【０２７４】
Ｅ−２．第３実施例のドット形成有無決定処理  ：
図４４は、第３実施例のドット形成有無決定処理の流れを示すフローチャートである。かかる処理は、図１１を用いて前述した第１実施例のドット形成有無決定処理と同様に、画素群毎に生成された多値化結果値を受け取って、画素群内の各画素についてドット形成有無を決定する処理である。
【０２７５】
画素群毎の多値化結果値を生成する処理については、図７を用いて前述した第１実施例の多値化結果値生成処理と同様であるため、ここでは概要のみを説明する。先ず、所定個数の画素をまとめて画素群を生成し（ステップＳ１３０相当）、各画素群について画素群階調値および分類番号を求めた後（ステップＳ１３２相当）、図９に示すような多値化テーブルを参照すれば、画素群毎の多値化結果値を得ることができる（ステップＳ１３４相当）。こうして画素群毎に得られた多値化結果値に対して、以下に説明する処理を行うことにより、画素群内の各画素についてドット形成の有無を決定していく。
【０２７６】
第３実施例のドット形成有無決定処理を開始すると、先ず初めに、処理対象とする画素群を１つ選択し（ステップＳ６００）、選択した画素群についての多値化結果値を取得する（ステップＳ６０２）。次いで、変換テーブルを参照することにより、画素群の分類番号と多値化結果値との組合せによって定まる個数データを取得する（ステップＳ６０４）。第３実施例のドット形成有無決定処理で参照される変換テーブルにも、第１実施例のドット形成有無決定処理で参照される図１２に示した変換テーブルと同様に、画素群の分類番号および多値化結果値の組合せ毎に、対応する個数データが予め設定されている。しかし、第１実施例の変換テーブルに設定されている個数データは、全てのデータが、ドットの個数を表すデータ（階調値が０〜１６４の範囲のデータ）であるのに対して、第３実施例の変換テーブルでは、ドットの個数を表すデータ（階調値が０〜１６４の範囲のデータ）と、ドットデータを表す個数データ（階調値が１６５以上のデータ）とが混在した状態で設定されている。
【０２７７】
図４５は、第３実施例のドット形成有無決定処理で参照される変換テーブルを概念的に示した説明図である。図１２に示した変換テーブルと比較すれば明らかなように、第３実施例で参照される変換テーブルでは、所々の個数データが、階調値１６５以上の個数データ（ドットデータを表す個数データ）に差し替えられたものとなっている。尚、図４５では、個数データが差し替えられている箇所には下線を付して表示されている。また、階調値１６５〜２５５までの９１個の個数データに対しては、図４１のドットパターンテーブルに示されているように、適切なドットパターンを表すドットデータが対応付けられた状態で予め設定されている。このドットパターンテーブルに設定されるドットデータは、画質の改善に効果的と考えられる９１種類のドットデータを任意に選択することができる。図４５に示した変換テーブルは、このようなドットデータを表す個数データと、ドット個数を表す個数データとが混在して設定されたものとなっている。そして、第３実施例のドット形成有無決定処理では、このような変換テーブルを参照する結果、画素群の多値化結果値を個数データに変換する結果、ドットの個数を表す個数データと、ドットデータを表す個数データとが混在した状態のデータに変換されることになる。
【０２７８】
次いで、得られた個数データが階調値１６５以上のデータであるか否かを判断する（ステップＳ６０６）。そして、個数データが階調値１６５に満たないデータである場合は（ステップＳ６０６：ｎｏ）、その個数データは第１実施例と同様に、ドットの個数を表していると考えられるので、前述した第１実施例と同様にして画素群内の各画素についてのドット形成有無を決定することが可能である。すなわち、図１１に示したように、画素群の中からドットを形成する画素位置を大ドット、中ドット、小ドットの順番で決定しても良いし、あるいは図３２に示したように、個数データを中間データに一旦変換しておき、画素群内の各画素について、大ドット、中ドット、小ドットの何れのドットを形成すべきかを中間データに基づいて決定することとしても良い。
【０２７９】
図４４に示したフローチャートでは、図３２を用いて前述した方法と同様に、個数データを中間データに一旦変換して、各画素について何れのドットを形成すべきかを決定するものとしている。すなわち、得られた個数データを中間データに変換し（ステップＳ６０８）、次いで、画素群に対応する順序値マトリックスを読み込む（ステップＳ６１０）。そして、順序値マトリックスに設定されている順序値に従って、中間データの中から該当するビット位置に設定されている２ビットデータを読み出すことにより、画素群内の各画素について、何れのドットを形成するかあるいは何れのドットも形成しないかを決定する（ステップＳ６１２）。
【０２８０】
一方、変換テーブルを参照して得られた個数データが階調値１６５以上のデータであった場合は（ステップＳ６０６：ｙｅｓ）、得られた個数データはドットの個数ではなく、ドットデータを表しているものと考えられる。そこで、この場合は、図４１に示したドットパターンテーブルを参照して個数データをドットデータに変換する（ステップＳ６１４）。図３６を用いて前述したように、ドットデータには画素群内の各画素についてのドット形成有無が設定されているから、個数データをドットデータに変換すれば、画素群内の各画素についてのドット形成有無が得られたことになる。
【０２８１】
こうして個数データが階調値１６５より大きいか否かに応じて、それぞれの方法で個数データから画素群内の各画素についてのドット形成有無を決定したら、全画素群について、上述した処理を終了したか否かを判断する（ステップＳ６１６）。そして、未処理の画素群が残っていれば（ステップＳ６１６：ｎｏ）、処理の先頭に戻って新たな画素群を選択し（ステップＳ６００）、続く一連の処理を行う。こうした処理を繰り返し、全画素群について処理し終えたものと判断されたら（ステップＳ６１６：ｙｅｓ）、図４４に示した第３実施例のドット形成有無決定処理を終了する。
【０２８２】
以上に説明した第３実施例のドット形成有無決定処理によれば、階調値１６５に満たない個数データについてはドット個数を表すものとして、順序値マトリックスに従ってドット形成有無を決定し、階調値１６５以上の個数データについては、個数データをドットデータに変換することで各画素についてのドット形成有無を決定する。階調値１６５以上の個数データについては、ディザマトリックスの制約を受けずに任意のドットデータを設定しておくことができるから、順序値マトリックスに従ってドット形成有無を決定する個数データと、ドットデータに変換することにより直ちにドット形成有無を決定可能な個数データとを混在させておけば、図４３を用いて説明したように、全体としてもディザマトリックスの制約を受けずにドットを発生させることが可能となる。
【０２８３】
加えて、階調値１６５以上の個数データには任意のドットデータを対応付けておくことができるから、より高い画質の改善効果が得られるようなドットデータを選択して、個々の個数データに対応付けておくことが可能である。更に、こうした個数データは、画素群の分類番号と多値化結果値との組合せ毎に設定することができるから、このことは、画素群の分類番号と画素群階調値（延いては多値化結果値）との組合せを特定して、どのような分布でドットを発生させるかを積極的に制御することが可能であることを意味している。
【０２８４】
また一般に、特に高画質の画像を得たい場合には、ドット形成有無を判断するに際して、ディザ法よりも良好な画質が得られると言われている誤差拡散法が用いられる場合が多いが、誤差拡散法では、ドットが形成されるか否かが他の画素から拡散されてきた誤差によって左右されるため、個々の画素についてドットの発生状況を細かく制御することは困難である。これに対して、上述した第３実施例のドット形成有無決定処理では、個々の画素についてドットの発生状況を細かく制御することが可能であり、従って、誤差拡散法を用いた場合よりも、より一層高画質な画像を得ることも可能となる。
【０２８５】
また、こうした第３実施例のドット形成有無決定処理においては、図１１あるいは図３２に示した第１実施例の各種のドット形成有無決定処理に対して、個数データの階調値が１６５以上か否かを判断する処理が必要になること以外は、特に処理の手間が増えているわけではない。加えて、個数データの階調値が１６５以上と判断された場合は、図４１に示したドットパターンテーブルを参照することで個数データから直ちにドット形成有無を決定することができるので、この点についてはむしろ処理が迅速になっていると言うことができる。結局、第３実施例のドット形成有無決定処理によれば、処理速度を何ら低下させることなく、画質を大きく改善することが可能となるのである。
【０２８６】
尚、以上の説明では、大中小の各ドットの個数の組合せは、１６５通りの組合せが存在しているものとした。しかし、１６５通りという数は、画素群が８つの画素から構成されており、形成可能なドットの種類が３種類であるとしたときに取り得る全ての組合せの数であって、実際には１６５通りの全ての組合せが使用されるわけではない。例えば、小ドットが多数形成される状況では、中ドットも形成されるから、小ドットだけが７個あるいは８個も含まれるような組合せは、実際には使用されないものと考えられる。同様に、中ドットだけが７個あるいは８個含まれる組合せも、実際には使用されることはないと考えられる。更には、小ドットと大ドットだけを含んでいて中ドットは１つも含まないような組合せも、幾つかの組合せは実際には使用されることはないと考えられる。このような使用されない組合せがあることを考慮すれば、実際に使用されるドット個数の組合せは１６５通りよりも少なくなると考えられ、従って、その分だけ多くの個数データをドットデータに割り当てることも可能となる。
【０２８７】
また、以上の説明では、個数データがドットデータを表している場合、同じ個数データであれば、画素群によらず同じドットデータを表すものとして説明した。しかし、同じ個数データであっても、分類番号に応じて異なるドットデータを表しているものとすることも可能である。例えば、図４１に示したドットパターンテーブルを、分類番号毎に記憶しておけば、こうしたことを実現することができる。こうすれば、画素群の分類番号に応じて、適切なドットデータを設定することが可能となるので、より一層の画質の改善を図ることが可能となる。
【０２８８】
Ｅ−３．第３実施例の変形例  ：
上述した第３実施例では、画素群毎の多値化結果値を個数データに変換する際に、一部の個数データについてはドットデータを表す個数データに差し替えられた状態となるように変換した。従って、個々の画素群については、多値化結果値と個数データとの対応関係が部分的に修正されているものの、多値化の段数が変わることはない。これに対して、個々の画素群の多値化段数を増加させ、増加した多値化結果値に、ドットデータを表す個数データを割り当てることとしても良い。以下ではこうした第３実施例の変形例について説明する。
【０２８９】
図４６は、画素群の多値化段数を増加させる様子を示した説明図である。今、ディザマトリックスを基礎とする図２４に示した方法によれば、ある画素群の画素群階調値は、図中に実線で示した多値化結果値に変換されるものとする。例えば、階調値０〜４の画素群階調値は多値化結果値０に変換され、階調値５〜２１の画素群階調値は多値化結果値1に、階調値２２〜４３の画素群階調値は多値化結果値２に変換されるものとする。
【０２９０】
ここで、多値化結果値２に変換される画素群階調値２２〜４３の範囲を、階調値２２〜３２および階調値３３〜４３の２つの範囲に分割することを考える。この結果、画素群階調値２２〜３２に対する多値化結果値は「２」のままで変わらないものの、画素群階調値３３〜４３に対する多値化結果値は「２」から「３」に変更される。これに伴って、従来の多値化結果値が「３」であった画素群階調値４４〜６７の多値化結果値は「４」に変更され、従来の多値化結果値が「４」であった画素群階調値６８〜７２の多値化結果値は「５」と、それ以降の多値化結果値の値が「１」ずつ増加することになる。図４６では、このような、分割に伴って変更された多値化結果値を破線で示している。また、白抜きの小さな矢印は、多値化結果値の値が従来の多値化結果値から「１」ずつ増加していることを表したものである。このように、１つの多値化結果値を有する階調範囲を２つに分割すると、これにより、以降の階調範囲では多値化結果値の値が「１」ずつ増加して、結局、その画素群については多値化段数が１つ増加する。もちろん、階調範囲を３つに分割した場合は、多値化段数が２つ増えることになる。
【０２９１】
また、こうした階調範囲の分割は、複数の階調範囲で行うことも可能である。図４６に示した例では、画素群階調値２２〜４３の階調範囲に加えて、画素群階調値９３〜１３２の階調範囲でも、階調範囲の分割を行っている。図中に細い実線で示されているように、階調値９３〜１３２の画素群階調値は、従来は多値化結果値６に変換されていたが、階調範囲２２〜４３で分割Ａが行われたことにより、破線で示されているように多値化結果値７に変換されている。この階調範囲を、多値化結果値７に変換される領域と多値化結果値８に変換される領域とに分割する。その結果、それ以降の領域では、多値化結果値が更に「１」ずつ増加することになる。図中に示した黒塗りの小さな矢印は、分割Ｂに伴って、それ以降の多値化結果値が「１」ずつ増加していることを表している。また、その結果として得られた多値化結果値を、図中では一点鎖線で表している。結局、以上のような２箇所で階調範囲を分割することにより、画素群階調値と多値化結果値との対応関係は、太い実線、太い破線、および太い一点鎖線で示されるような対応関係に変更されることになる。
【０２９２】
次いで、このような多値化結果値の変更に対応させて、多値化結果値と個数データとの対応関係を修正する。図４７は、第３実施例の変形例において、多値化結果値と個数データとの対応関係を修正している様子を概念的に示した説明図である。図４６を用いて説明したように、従来は多値化結果値２に変換されていた階調値２２〜４３の画素群階調値は、階調値２２〜３２と階調値３３〜４３の２つの領域に分割されて、それぞれの領域の画素群階調値は、多値化結果値２および多値化結果値３の２つの多値化結果値に変換されている。そこで、これら一方の多値化結果値に対しては従来と同じ個数データを対応付けることとして、他方の多値化結果値に対しては、ドットデータを表す新たな個数データを対応付けてやる。図４７に示した例では、多値化結果値２に対しては従来と同じ個数データ「８」を対応付けておき、多値化結果値３に対してはドットデータを表す個数データ「１７４」を対応付けた場合が示されている。
【０２９３】
また、このように多値化結果値３に新たな個数データを対応付けた結果として、従来の多値化結果値３に対応付けられていた個数データは多値化結果値４に振り返られ、従来の多値化結果値４に対応付けられていた個数データは多値化結果値５に、従来の多値化結果値５に対応付けられていた個数データは多値化結果値６に振り返られる。このように、従来は多値化結果値２に変換されていた画素群階調値２２〜４３の領域を２つに分割したことに伴って、多値化結果値３以降に対応付けられていた個数データが、「１」ずつ大きな多値化結果値に振り返られることになる。図４７に示した白抜きの矢印は、このように個数データが「１」ずつ大きな多値化結果値に振り返られる様子を表したものである。また、このように個数データが振り返られる結果、多値化結果値と個数データとの対応関係は、図中で破線によって示した対応関係に修正されることになる。
【０２９４】
また、図４６に示したように、画素群階調値９３〜１３２の領域も２つに分割されている。この領域は、従来は多値化結果値６に変換されていたが、画素群階調値２２〜４３の領域が２つに分割されたことに伴って、多値化結果値７に変更された領域である。そして、この領域を分割することで得られた２つの領域は、それぞれ多値化結果値７および多値化結果値８に変換されている。そこで、これら多値化結果値の中の一方には従来の個数データ「４８」を対応付け、他方の多値化結果値にはドットデータを表す新たな個数データを対応付けてやる。図４７に示した例では、従来の個数データ「４８」は多値化結果値８に対応付けることとして、新たな個数データ「１９１」を多値化結果値７に対応付けた場合を示している。また、このように画素群階調値９３〜１３２の領域を２つに分割する結果、それまで多値化結果値８に対応付けられていた個数データは多値化結果値９に振り返られ、多値化結果値９に対応付けられていた個数データは多値化結果値１０にと、１つずつ大きな多値化結果値に振り返られることになる。図４７に示した黒塗りの矢印は、このように、個数データが更に「１」ずつ大きな多値化結果値に振り返られる様子を表したものである。また、このように個数データが更に振り返られる結果、多値化結果値と個数データとの対応関係は、図中で一点鎖線によって示した対応関係に修正されることになる。
【０２９５】
第３実施例の変形例においては、以上に説明したようにして、図９に示した多値化テーブルおよび、図１２に示した変換テーブルをそれぞれ修正しておく。そして、図４４を用いて前述した第３実施例のドット形成有無決定処理と同様な処理を行うことにより、画素群内の各画素についてのドット形成有無を決定していく。このように画素群の多値化段数を増加させて、すなわち１つの多値化結果値を複数の多値化結果値に分割して、得られた多値化結果値に、ドットデータを表す新たな個数データを対応付けることによっても、ディザマトリックスの制約を受けずに適切にドットを発生させることが可能となる。以下では、この点について説明する。
【０２９６】
図４８は、画素群の多値化段数を増加させることにより、ディザマトリックスの制約を受けずにドットを発生させることが可能となる理由を示した説明図である。図４８（ａ）には、対象とする画素群に設定されている順序値マトリックスが示されている。また、この画素群の多値化結果値を個数データに変換し、図４８（ａ）に示した順序値マトリックスを参照してドット形成の有無を判断すると、図４８（ｂ）、図４８（ｃ）、図４８（ｄ）、図４８（ｅ）の順序でドットが発生するものとする。これらドットの発生状態を多値化結果値との対応関係で言えば、図４８（ｂ）の状態が多値化結果値０に対応し、図４８（ｃ）の状態が多値化結果値１に、図４８（ｄ）が多値化結果値２に、図４８（ｅ）が多値化結果値３にそれぞれ対応する。そして、このように順序値マトリックスに従って発生させたドットの分布は、図４３を用いて前述したように、ディザマトリックスの制約を受けたものとなっている。すなわち、小さなドットが大きなドットに置き換わる場合は別として、常に現在のドット分布に対して新たなドットが追加されるような、ドットの発生形態となっている。
【０２９７】
これに対して、多値化結果値１を、新たな多値化結果値１および新たな多値化結果値２の２つに分割し、新たな多値化結果値２に対してはドットデータを表す個数データ「１７３」を対応付けてやる。あるいは、多値化結果値２を、新たな多値化結果値２および新たな多値化結果値３の２つに分割し、新たな多値化結果値２の方に、ドットデータを表す個数データ「１７３」対応付けることとしても良い。図４１に示したドットパターンテーブルによれば、個数データ「１７３」は図４８（ｆ）に示すようなドット分布を表している。従って、図４８（ｃ）に示したドット分布から図４８（ｄ）のドット分布に変化する前に、一旦、図４８（ｆ）に示したドット分布を経ることになる。
【０２９８】
このようなドットの発生の仕方は、もはやディザマトリックスの制約を受けながら発生させたものではない。すなわち、図４８（ｆ）に示したドット分布は、図４８（ｃ）のドット分布を前提として新たなドットを追加した分布とはなっておらず、また、図４８（ｄ）に示したドット分布についても、図４８（ｄ）のドット分布に対して新たなドットを追加した分布とはなっていない。更に、追加した個数データ「１７３」を他の個数データとすることも可能であるから、ドットの発生の仕方がより適切なものとなるように、適切な個数データを選択することも可能である。前述したように、ディザマトリックスの制約の下では、既に形成されているドットの分布を前提として、新たなドットを追加するようなドットの発生の仕方となってしまうので、最適なドット分布を得ることは困難であった。これに対して、第３実施例の変形例では、ドットの発生状態を積極的に制御することが可能となるため、より高画質の画像が得られることになる。
【０２９９】
もちろん、こうした第３実施例の変形例においても、前述した第３実施例と同様に、ドット形成有無決定処理においては、個数データがドット個数を表すデータか、あるいはドットデータを表すデータかの判断が必要になること以外には、特に処理の手間が増えているわけではない。むしろ、個数データがドットデータを表していると判断された場合には、図４１に示したドットパターンテーブルを参照することで、画素群内の各画素についてのドット形成有無を直ちに決定することが可能となり、この点では処理が迅速化されていることになる。従って、第３実施例の変形例においても、処理速度を何ら低下させることなく、画質を大きく改善することが可能となっている。
【０３００】
尚、以上では、個数データの一部を差し替えることによって画質の改善を図る形態を第３実施例として説明し、多値化段数を増やして新たな個数データを追加することで画質の改善を図る形態を第３実施例の変形例として説明した。もちろん、これらの形態を組み合わせることで、より一層の画質の改善を図ることも可能である。例えば、ある階調領域の画素群階調値に対しては、多値化結果値に対応付けられた個数データを差し替えることとし、別の階調領域では領域を複数に分割して分割に関わる多値化結果値に新たな個数データを対応付けることとしても良い。あるいは、ある多値化結果値に対する個数データを差し替えた後、その多値化結果値の領域を複数の領域に分割して、分割に関わる多値化結果値に新たな個数データを対応付けることとしても良い。
【０３０１】
Ｆ．第４実施例  ：
以上に説明した第３実施例のドット形成有無決定処理は、前述した第１実施例のドット形成有無決定処理を基礎にした手法と考えることができる。すなわち、第１実施例では、画素群毎の多値化結果値を個数データに一旦変換した後、順序値マトリックスを参照して各画素のドット形成有無を決定しているところを、第３実施例では、多値化結果値を、ドット個数を表す個数データとドットデータを表す個数データとに変換し、ドットデータを表す個数データに関しては順序値マトリックスを参照することなく、画素群内でのドット分布を直接決定する手法と考えることができる。従って、第３実施例のドット形成有無決定処理では、順序値マトリックスを参照して各画素についてのドット形成有無を決定する画素群と、順序値マトリックスを参照することなくドット形成有無を決定する画素群とが混在することになる。
【０３０２】
一方、前述した第２実施例では、順序値マトリックスを参照することなく画素群内の各画素についてのドット形成有無を決定することが可能である。従って、第１実施例ではなく、第２実施例のドット形成有無決定処理を基礎とすれば、全ての画素群について順序値マトリックスを参照することなくドットの形成有無を決定して、ディザマトリックスの制約を受けずにドットを発生させることが可能になると考えられる。以下では、こうした第４実施例について説明する。
【０３０３】
Ｆ−１．画質を改善する原理  ：
先ず初めに、第４実施例において、ディザマトリックスの制約を受けずにドットを発生させて画質を改善する原理について説明する。図４９は、第２実施例の画像印刷処理で画像データをドットデータに変換する処理の概要と、第４実施例において画質を改善するための基本的な考え方とを示した説明図である。前述したように第２実施例の画像印刷処理では、画像データから画素群毎の画素群階調値を求め、次いで、多値化テーブルを参照することにより、画素群階調値を多値化結果値に変換する。そして、変換テーブルを参照することにより、画素群の分類番号と多値化結果値との組み合わせに対応付けて設定されているドットデータを読み出すことで、画素群内でのドット分布を決定した。このように、第２実施例において画像データからドットデータを得るための処理の流れは、図４９中では斜線を付した矢印によって示されている。
【０３０４】
ここで、画素群が８つの画素から構成されており、形成可能なドットの種類が３種類であるとすると、前述したように各画素群が取り得る多値化結果値の個数は、通常は１６〜２２個程度となる。このような多値化結果値を表現するためには、多値化結果値は４ビットのデータ長では足らず、５ビットのデータ長が必要となる。しかし、５ビットあれば３２種類の状態を表現し得るから、各画素群には使用されていない多値化結果値が存在していることになる。例えば、ある画素群が取り得る多値化結果値が１８個であったとすると、５ビットで表現可能な多値化結果値０〜３１の中で、使用されている多値化結果値は０〜１７のものだけであり、１８〜３１の多値化結果値は使用されていないことになる。そこで、所定の階調範囲の画素群階調値については、この未使用の多値化結果値に変換し、変換した多値化結果値に予め適切なドットデータを対応付けておくことにする。使用されていなかった多値化結果値に対応付けておくドットデータは、ディザマトリックスとは無関係に設定することができるから、このようにして多値化結果値をドットデータに変換すれば、画像全体としてもディザマトリックスの制約を受けずにドットを発生させることが可能となる筈である。図４９では、このようにしてドットデータを決定する処理の流れが、破線の矢印によって示されている。
【０３０５】
図５０は、以上のような考え方に基づいて、ある画素群についての画素群階調値と多値化結果値との対応関係を設定している様子を示した説明図である。図中に実線で示した折れ線は、図９に示した多値化テーブルに設定されている画素群階調値と多値化結果値との対応関係を表している。また、この画素群については、０〜１８の範囲の多値化結果値を取り得るものとする。このとき、１９〜３１の範囲の多値化結果値は未使用の状態となっている。
【０３０６】
ここでは、ディザマトリックスの制約を受けずにドットを発生させるために、このような対応関係を修正していくことを考える。例えば、図中に実線で示されているように、この画素群については、画素群階調値３２〜４２には多値化結果値３が対応付けられているが、この多値化結果値を、使われていない多値化結果値１９に変更してやる。図５０では、多値化結果値が未使用の多値化結果値に変更されたことを破線によって表している。また、実線で示された修正前の対応関係によれば、画素群階調値１０１〜１３０に対しては１つの多値化結果値８が対応付けられているが、この階調範囲を分割して、画素群階調値１０１〜１０８に対しては多値化結果値２０を、画素群階調値１２１〜１３０に対しては多値化結果値２６を新たに対応付けてやる。この結果、図中に破線で示されるように、画素群階調値１０１〜１３０に対しては多値化結果値２０と、多値化結果値８と、多値化結果値２６の３つの多値化結果値が対応付けられることになる。このように多値化結果値を修正する画素群階調値を選択するためには、例えば実際の画像を出力してみて、画質の改善を要すると判断された画素群階調値を選択してやれば良い。
【０３０７】
尚、前述したように、修正された新たな多値化結果値には、従来の対応関係では使用されていない大きな多値化結果値が設定される。従って、修正前の多値化結果値は、画素群階調値が増加するとともに少しずつ増加していたが（図５０中の実線を参照のこと）、修正後の多値化結果値は、もはや画素群階調値の増加とともに増加するわけではない（図５０中の破線を参照のこと）。換言すれば、修正後の多値化結果値の序列は、対応する画素群階調値の序列とは対応しなくなっている。画素群階調値に対してこのような関係にある値を「多値化」結果値と称するのは適切ではないと考えられるので、以下では、「多値化結果値」の代わりに「コード値」と呼ぶことにする。すなわち、第４実施例においては、画素群階調値を多値化して多値化結果値を得るのではなく、画素群階調値をコード化してコード値を得ると考えることにする。
【０３０８】
このような画素群階調値のコード化は、エンコードテーブルを参照することによって迅速に行うことができる。図５１は、第４実施例において画素群階調値をコード化するために参照されるエンコードテーブルを概念的に示した説明図である。図示されているようにエンコードテーブルには、図９に示した多値化テーブルと同様に、画素群の分類番号と画素群階調値との組み合わせ毎に対応するコード値が設定されている。また、設定されているコード値は、図９に示した多値化結果値とほぼ同じであるが、ところどころのコード値が未使用の多値化結果値に置き換えられたものとなっている。例えば分類番号１番の画素群については、画素群階調値３および画素群階調値４に対するコード値が未使用の多値化結果値１６に置き換えられている。ここでコード値が「１６」に置き換えられているのは、修正前のエンコードテーブル（すなわち、図９に示した多値化テーブル）では、分類番号１番の画素群については、画素群階調値２５５に対して多値化結果値１５が設定されていることから、１６以上の多値化結果値は使われていないと考えられることによる。尚、図５１では、図９に示した多値化テーブルの多値化結果値から修正されたコード値には下線を付して表示してある。
【０３０９】
このようなエンコードテーブルを参照して、画素群階調値をコード値に変換し、得られたコード値を、図３５に示したような変換テーブルを参照してドットデータに変換してやれば、ディザマトリックスの制約を受けずに適切にドットを発生させることが可能となる。尚、上述したように、第４実施例では画素群階調値をコード化していると考えたことに対応して、コード値からドットデータへの変換は、コード値のデコードと考えることにする。これに伴って、コード値のデコードに際して参照するテーブルはデコードテーブルと呼ぶことにする。以下、画素群階調値のコード化およびデコードを行って、画像を印刷するために行われる処理内容について説明する。
【０３１０】
Ｆ−２．第４実施例の画像印刷処理の概要  ：
図５２は、第４実施例の画像印刷処理の流れを示すフローチャートである。かかる処理は、図６を流用して前述した第２実施例の画像印刷処理とほぼ同様であるが、第２実施例の多値化結果値生成処理が第４実施例ではコード値生成処理に置き換わり、第２実施例のドット形成有無決定処理が第４実施例ではデコード処理に置き換わっている点が異なっている。以下では、これら相違点を中心にして、第４実施例の画像印刷処理について説明する。尚、第４実施例の画像印刷処理も、前述した各実施例の画像印刷処理と同様に、コード値生成処理までをコンピュータ１００内で行って、デコード処理以降をカラープリンタ２００内で行うこととしても良いし、あるいは全ての処理をカラープリンタ２００内で行っても良い。
【０３１１】
第４実施例の画像印刷処理においても、第２実施例の画像印刷処理と同様に、処理を開始すると先ず初めに画像データを読み込んで（ステップＳ７００）、読み込んだ画像データの色変換処理を行った後（ステップＳ７０２）、色変換後の画像データに解像度変換処理を行うことにより、画像データの解像度を印刷解像度に変換する（ステップＳ７０４）。
【０３１２】
こうして解像度を印刷解像度に変換したら、コード値生成処理を開始する（ステップＳ７０６）。前述したように、この処理は第２実施例の多値化結果値生成処理に対応する処理であり、多値化結果値生成処理では図９に示した多値化テーブルを参照して多値化結果値を得ているところを、第４実施例のコード値生成処理では図５１に示すようなエンコードテーブルを参照してコード値を得ている点のみが異なっている。そこで、以下では、多値化結果値生成処理の説明に用いた図７を流用しながら、コード値生成処理の内容について説明する。
【０３１３】
コード値生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成する（図７のステップＳ１３０相当）。ここでは、主走査方向に４画素分、副走査方向に２画素分の合計８つの画素を画素群にまとめるものとする。
【０３１４】
次いで、画素群階調値と、画素群の分類番号とを決定する（図７のステップＳ１３２相当）。画素群階調値は、画素群内の各画素の画像データに基づいて決定することができ、また、画素群の分類番号は、図８を用いて前述したように、画像中での画素群の位置に基づいて極めて簡便に決定することができる。
【０３１５】
こうして、画素群の分類番号と画素群階調値とを決定したら、図５１に例示したエンコードテーブルを参照して、分類番号と画素群階調値との組み合わせに対応して設定されているコード値を取得する（図７のステップＳ１３４相当）。第２実施例の多値化結果値生成処理によって得られる多値化結果値は、図１０に示したように画素群階調値が増加するに従って次第に増加しているが、第４実施例のコード値生成処理によって得られるコード値は、図５０に示されているように、もはや画素群階調値の増加とともに増加する値とはなっていない。すなわち、複数のコード値間の大小は特に物理的な意味を有していない。換言すれば、分類番号と組み合わせることでドットデータを特定することができるのであれば、コード値をどのように設定しても構わない。従って、図４９ないし図５１では、ディザマトリックスの制約を受けずに自由にドットデータを設定することができるコード値は、大きな値を取るものとして説明したが、これは理解の便宜を図ったためであり、実際にはこのような制約を設ける必要はない。
【０３１６】
以上のようにして、複数の画素を画素群にまとめて、その画素群のコード値を生成したら、全画素について処理を終了したか否かを判断する（図７のステップＳ１３６相当）。そして、未処理の画素が残っている場合は（図７のステップＳ１３６：ｎｏ相当）、処理の先頭に戻って新たな画素群を生成し、後述する一連の処理を行うことにより、その画素群についてのコード値を生成する。こうした操作を繰り返し、全画素についての処理を終了したと判断されたら（図７のステップＳ１３６：ｙｅｓ相当）、全ての画素群の画素群階調値がコード値に変換されたことになる。そして、コード値生成処理までをコンピュータ１００で行い、以降の処理をカラープリンタ２００で行う場合には、得られたコード値をカラープリンタ２００に向かって出力する（図７のステップＳ１１０相当）。一方、全ての処理をカラープリンタ２００内で行う場合には、得られたコード値を、続くデコード処理を行うモジュールに供給して（図７のステップＳ１１０相当）、コード値生成処理を終了し、図５２に示した第４実施例の画像印刷処理に復帰する。
【０３１７】
続いて、このようにして画素群毎に得られたコード値をデコードする処理を開始する（図５２のステップＳ７０８）。前述したように、デコード処理は第２実施例のドット形成有無決定処理に対応する処理であり、第２実施例のドット形成有無決定処理では、図３５に示した変換テーブルを参照して多値化結果値をドットデータに変換しているところを、第４実施例のデコード処理では、図５３に示すようなデコードテーブルを参照してコード値をドットデータに変換している点のみが異なっている。そこで、以下では、第２実施例のドット形成有無決定処理の説明に用いた図３７を流用しながら、デコード処理の内容について説明する。
【０３１８】
第４実施例のデコード処理を開始すると、先ず初めに処理対象とする画素群を１つ選択して（図３７のステップＳ５００相当）、選択した画素群のコード値を取得する（図３７のステップＳ５０２相当）。このとき、画素群の分類番号も算出しておく。画素群の分類番号は、図２９および図３０を用いて前述した方法により、簡便に算出することができる。そして、デコードテーブルを参照することにより、分類番号および多値化結果値の組合せに設定されているドットデータを読み出してやる（図３７のステップＳ５０４相当）。
【０３１９】
図５３は第４実施例のデコード処理で参照されるデコードテーブルを概念的に示した説明図である。第２実施例のドット形成有無決定処理で参照される変換テーブルは、図３５に示すように、ドットデータが、分類番号と多値化結果値との組み合わせに対応付けて設定されていたが、第４実施例のデコード処理で参照されるデコードテーブルでは、ドットデータが、分類番号とコード値との組み合わせに対応付けて設定されている点が異なっている。図３６を用いて前述したように、ドットデータは、画素群内の各画素についてのドット形成有無を直接表現したものとなっているから、デコードテーブルを参照してコード値をドットデータに変換してやれば、画素群内の各画素についてドット形成の有無を直ちに決定することが可能となる。また、デコードテーブルに設定するドットデータは、画質上の観点から最適なドットデータを設定することができるので、ディザマトリックスの制約を受けることなく適切にドットを発生させることが可能となる。
【０３２０】
以上のようにして、選択した画素群についてのドット形成有無を決定したら、全画素群についてドット形成の有無を決定したか否かを判断し（図３７のステップＳ５０６相当）、未処理の画素群が残っていれば（図３７のステップＳ５０６：ｎｏ相当）、処理の先頭に戻って新たな画素群を選択し、その画素群について続く一連の処理を行う。こうした操作を繰り返して、全画素群について処理を終了したと判断されたら（図３７のステップＳ５０６：ｙｅｓ相当）、第４実施例のデコード処理を終了して、図５２の画像印刷処理に復帰する。画像印刷処理では、このようにして得られたドットデータに基づいて、各画素にドットを形成する（図５２のステップＳ７１０）。この結果、印刷媒体上には画像データに対応した画像が印刷されることになる。
【０３２１】
以上に説明したように、第４実施例の画像印刷処理では、エンコードテーブルを参照して画素群毎のコード値を生成し、次いで、デコードテーブルを１回参照するだけで、画素群毎のコード値から、画素群内の各画素についてのドット形成有無を直ちに決定することができる。このため、極めて簡単な処理により、画像データから各画素についてのドット形成有無を迅速に決定することができる。加えて、分類番号とコード値との組み合わせに対応付けてデコードテーブルに設定するドットデータは、画質上の観点から最適なドットデータを設定することが可能である。従って、高画質な画像を迅速に印刷することが可能となるのである。
【０３２２】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、以上の実施例では、印刷用紙上にドットを形成して画像を印刷する場合について説明したが、本発明の適用範囲は画像を印刷する場合に限られるものではない。例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置などにも、本発明を好適に適用することができる。
【図面の簡単な説明】
【０３２３】
【図１】印刷システムを例にとって本発明の概要を説明するための説明図である。
【図２】本実施例の画像処理装置としてのコンピュータの構成を示す説明図である。
【図３】本実施例のカラープリンタの概略構成を示す説明図である。
【図４】インク吐出用ヘッドにおけるインクジェットノズルの配列を示す説明図である。
【図５】インク滴の吐出を制御することにより、大きさの異なるドットを形成する原理を示した説明図である。
【図６】第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。
【図７】第１実施例の画像印刷処理で行われる多値化結果値生成処理の流れを示すフローチャートである。
【図８】画素群の分類番号を決定する方法を示した説明図である。
【図９】第１実施例の多値化結果値生成処理で参照される多値化テーブルを概念的に示した説明図である。
【図１０】画素群階調値が増加するに従って多値化結果値が段階的に増加していく様子を例示した説明図である。
【図１１】第１実施例のドット形成有無決定処理の流れを示すフローチャートである。
【図１２】第１実施例のドット形成有無決定処理で参照される変換テーブルを概念的に示した説明図である。
【図１３】コード化された個数データと各コードデータが表す各種ドットの個数との対応関係を示した説明図である。
【図１４】第１実施例のドット形成有無決定処理で参照される順序値マトリックスを例示した説明図である。
【図１５】順序値マトリックスを参照しながらドット個数のデータに基づいて画素群内で各種ドットを形成する画素位置を決定する様子を概念的に表した説明図である。
【図１６】ディザマトリックスの一部を概念的に例示した説明図である。
【図１７】ディザマトリックスを参照しながら各画素についてのドット形成の有無を判断する様子を概念的に示した説明図である。
【図１８】画素群毎の分類番号を決定するための考え方を示した説明図である。
【図１９】画素群の分類番号を算出する方法を示した説明図である。
【図２０】着目画素群の座標値の２進数表示から分類番号を求める方法を示した説明図である。
【図２１】ディザ法を発展させて画素毎に大中小各ドットの形成の有無を決定可能としたハーフトーン処理の流れを示すフローチャートである。
【図２２】画像データの階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。
【図２３】画素群内の各画素について大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。
【図２４】多値化テーブルを設定する処理の流れを示したフローチャートである。
【図２５】変換テーブルを設定する処理の流れを示したフローチャートである。
【図２６】順序値マトリックスを設定する方法を示した説明図である。
【図２７】第１実施例のドット形成有無決定処理において多値化結果値から大中小各ドットの形成有無を画素毎に決定する処理の大まかな流れを概念的に示した説明図である。
【図２８】ブルーノイズマスク、およびグリーンノイズマスクに設定されている閾値の空間周波数特性を概念的に例示した説明図である。
【図２９】画像上での画素群の位置から分類番号を決定する方法を示した説明図である。
【図３０】分類番号を決定するために、画素群の座標値（ｉ，ｊ）からディザマトリックス上での位置を求める方法を示した説明図である。
【図３１】変形例の多値化結果値生成処理において参照される閾値テーブルを概念的に示した説明図である。
【図３２】変形例のドット形成有無決定処理の流れを示したフローチャートである。
【図３３】ドット個数を表すコードデータと中間データとを対応付けた対応表を示す説明図である。
【図３４】中間データの中から順序値に対応する箇所のデータを読み出すことによってドット形成の有無を決定する様子を示した説明図である。
【図３５】第２実施例のドット形成有無決定処理で参照される変換テーブルを概念的に示した説明図である。
【図３６】第２実施例の変換テーブルに設定されているドットデータのデータ構造を示した説明図である。
【図３７】第２実施例のドット形成有無決定処理の流れを示すフローチャートである。
【図３８】ディザマトリックスに基づいてドットを発生させるときに受ける制約について概念的に示した説明図である。
【図３９】第３実施例においてディザマトリックスによる制約を受けないドット発生を可能とするためのデータ変換方法を概念的に示した説明図である。
【図４０】８ビットの個数データにより、ドット個数の組み合わせとドットデータとを表す様子を概念的に示した説明図である。
【図４１】第３実施例において個数データからドットデータを得るために参照されるドットパターンテーブルを概念的に示した説明図である。
【図４２】第３実施例の多値化結果値がドット個数を表す個数データとドットデータを表す個数データとに変換される様子を概念的に示した説明図である。
【図４３】個数データの一部を差し替えることによりディザマトリックスの制約を受けずにドットを発生させることが可能となる様子を示した説明図である。
【図４４】第３実施例のドット形成有無決定処理の流れを示すフローチャートである。
【図４５】第３実施例のドット形成有無決定処理で参照される変換テーブルを概念的に示した説明図である。
【図４６】第３実施例の変形例において画素群の多値化段数を増加させる様子を示した説明図である。
【図４７】第３実施例の変形例において多値化結果値と個数データとの対応関係を修正している様子を概念的に示した説明図である。
【図４８】画素群の多値化段数を増加させることによりディザマトリックスの制約を受けずにドットを発生させることが可能となる理由を示した説明図である。
【図４９】第４実施例において、ディザマトリックスの制約を受けずにドットを発生させて画質を改善する原理を概念的に示した説明図である。
【図５０】第４実施例において、画素群階調値と多値化結果値との対応関係を設定する様子を示した説明図である。
【図５１】第４実施例において画素群階調値をコード化するために参照されるエンコードテーブルを概念的に示した説明図である。
【図５２】第４実施例の画像印刷処理の流れを示すフローチャートである。
【図５３】第４実施例のデコード処理で参照されるデコードテーブルを概念的に示した説明図である。
【符号の説明】
【０３２４】
１０…コンピュータ、  ２０…カラープリンタ、  １００…コンピュータ、
１０８…周辺機器インターフェースＰＩＦ、
１０９…ディスクコントローラＤＤＣ、
１１０…ネットワークインターフェースカードＮＩＣ、
１１２…ビデオインターフェースＶＩＦ、
１１６…バス、  １１８…ハードディスク、  １２０…デジタルカメラ、
１２２…カラースキャナ、  １２４…フレキシブルディスク、
１２６…コンパクトディスク、  ２３０…キャリッジモータ、  ２３５…モータ、
２３６…プラテン、  ２４０…キャリッジ、  ２４１…印字ヘッド、
２４２…インクカートリッジ、  ２４３…インクカートリッジ、
２４４…インク吐出用ヘッド、  ２６０…制御回路、  ２００…カラープリンタ、
３００…通信回線、  ３１０…記憶装置
【図１】
2006005899.tif 000003
【図２】
2006005899.tif 000004
【図３】
2006005899.tif 000005
【図４】
2006005899.tif 000006
【図５】
2006005899.tif 000007
【図６】
2006005899.tif 000008
【図７】
2006005899.tif 000009
【図８】
2006005899.tif 000010
【図９】
2006005899.tif 000011
【図１０】
2006005899.tif 000012
【図１１】
2006005899.tif 000013
【図１２】
2006005899.tif 000014
【図１３】
2006005899.tif 000015
【図１４】
2006005899.tif 000016
【図１５】
2006005899.tif 000017
【図１６】
2006005899.tif 000018
【図１７】
2006005899.tif 000019
【図１８】
2006005899.tif 000020
【図１９】
2006005899.tif 000021
【図２０】
2006005899.tif 000022
【図２１】
2006005899.tif 000023
【図２２】
2006005899.tif 000024
【図２３】
2006005899.tif 000025
【図２４】
2006005899.tif 000026
【図２５】
2006005899.tif 000027
【図２６】
2006005899.tif 000028
【図２７】
2006005899.tif 000029
【図２８】
2006005899.tif 000030
【図２９】
2006005899.tif 000031
【図３０】
2006005899.tif 000032
【図３１】
2006005899.tif 000033
【図３２】
2006005899.tif 000034
【図３３】
2006005899.tif 000035
【図３４】
2006005899.tif 000036
【図３５】
2006005899.tif 000037
【図３６】
2006005899.tif 000038
【図３７】
2006005899.tif 000039
【図３８】
2006005899.tif 000040
【図３９】
2006005899.tif 000041
【図４０】
2006005899.tif 000042
【図４１】
2006005899.tif 000043
【図４２】
2006005899.tif 000044
【図４３】
2006005899.tif 000045
【図４４】
2006005899.tif 000046
【図４５】
2006005899.tif 000047
【図４６】
2006005899.tif 000048
【図４７】
2006005899.tif 000049
【図４８】
2006005899.tif 000050
【図４９】
2006005899.tif 000051
【図５０】
2006005899.tif 000052
【図５１】
2006005899.tif 000053
【図５２】
2006005899.tif 000054
【図５３】
2006005899.tif 000055