(57)【要約】【課題】  高画質な画像を簡素な処理で迅速に出力可能な技術を提供する。【解決手段】  画素が複数個ずつ画素群毎にまとめ、画素群を分割する複数の領域について、代表階調値を決定する。次いで、代表階調値を多値化して得られた多値化結果値から、画素群内の各画素についてのドット形成有無を決定して画像を出力する。多値化結果値は、データの生成や授受を迅速に行うことができ、画像を迅速に出力することができる。また、画素群内の各画素の階調値に基づいて、画素群を分割するか否かを判断し、分割しないと判断した画素群については、画素群について得られた代表階調値を多値化して、多値化結果値からドット形成の有無を決定してもよい。【選択図】        図１
2006014036.tif 000002
【特許請求の範囲】
【請求項１】
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより、画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を出力する多値化結果値出力手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備えている画像出力システム。
【請求項２】
請求項１記載の画像出力システムであって、
前記代表階調値決定手段は、前記画素群を分割するか否かを該画素群内の各画素の階調値に基づいて判断し、分割しない画素群については、該画素群を代表する階調値を、前記代表階調値として決定する手段であり、
前記ドット形成有無決定手段は、前記多値化結果値を１つだけ受け取った画素群については、該画素群内の各画素についてドット形成の有無を決定する手段である画像出力システム。
【請求項３】
画像データに所定の画像処理を施す第１の画像処理装置と、該画像処理によって得られた第１の画像データを、画素毎にドット形成の有無を表した第２の画像データに変換する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を前記第１の画像データとして出力する第１の画像データ出力手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無を前記第２の画像データとして出力する第２の画像データ出力手段と
を備えている画像処理システム。
【請求項４】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を前記制御データとして出力する制御データ出力手段と
を備える画像処理装置。
【請求項５】
請求項４記載の画像処理装置であって、
前記代表階調値決定手段は、前記画素群を分割するか否かを該画素群内の各画素の階調値に基づいて判断し、分割しない画素群については、該画素群を代表する階調値を、前記代表階調値として決定する手段である画像処理装置。
【請求項６】
請求項４記載の画像処理装置であって、
前記画素群を前記画像中での位置に応じて複数種類に分類することにより、該各々の画素群に分類番号を付与する分類番号付与手段を備え、
前記多値化手段は、前記多値化用対応関係として、前記代表階調値および前記分類番号の組合せと、前記多値化結果値とが関連づけられた対応関係を参照する手段である画像処理装置。
【請求項７】
請求項４記載の画像処理装置であって、
前記多値化手段は、前記代表階調値を、該代表階調値を有する画素群に形成すべきドットの個数を示す前記多値化結果値に多値化する手段である画像処理装置。
【請求項８】
請求項４記載の画像処理装置であって、
前記代表階調値決定手段は、前記画素群を予め設定された複数の領域に分割して、該領域毎に前記代表階調値を決定する手段である画像処理装置。
【請求項９】
請求項８記載の画像処理装置であって、
前記代表階調値決定手段は、前記画素群を互いに大きさの等しい複数の領域に分割して、該領域毎に前記代表階調値を決定する手段である画像処理装置。
【請求項１０】
請求項８記載の画像処理装置であって、
前記代表階調値決定手段は、前記画素群を互いに大きさの異なる複数の領域に分割して、該領域毎に前記代表階調値を決定する手段である画像処理装置。
【請求項１１】
請求項８記載の画像処理装置であって、
前記画素群が分割された状態を示す分割パターンを、複数記憶している分割パターン記憶手段を備え、
前記代表階調値決定手段は、前記画素群を、前記記憶されている複数の分割パターンの中から選択した１のパターンに従って複数の領域に分割し、該領域毎に前記代表階調値を決定する手段であり、
前記制御データ出力手段は、前記得られた多値化結果値とともに、前記選択した分割パターンを示すデータを出力する手段である画像処理装置。
【請求項１２】
請求項４ないし請求項１１のいずれかに記載の画像処理装置であって、
前記多値化手段は、少なくとも１００種類以上の前記画素群毎に、前記代表階調値と前記多値化結果値とが関連づけられた前記多値化用対応関係を参照することによって、該代表階調値の多値化を行う手段である画像処理装置。
【請求項１３】
前記多値化用対応関係に設定されている画素群の種類数と、該画素群１つあたりに含まれる画素数との乗算値が、少なくとも１０００以上である請求項４ないし請求項１１のいずれかに記載の画像処理装置。
【請求項１４】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無を前記制御データとして出力する制御データ出力手段と
を備える画像処理装置。
【請求項１５】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る多値化結果値受取手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備える画像出力装置。
【請求項１６】
請求項１５記載の画像出力装置であって、
前記多値化結果値受取手段は、前記多値化結果値を、前記画素群毎に少なくとも１つずつ受け取る手段であり、
前記ドット形成有無決定手段は、前記多値化結果値を１つだけ受け取った画素群については、該多値化結果値と前記順序値とに基づいて該画素群毎に、前記ドット形成の有無を決定する手段である画像出力装置。
【請求項１７】
請求項１５記載の画像出力装置であって、
前記多値化結果値受取手段は、前記画素群に形成すべきドットの個数を表す個数データを、前記多値化結果値として受け取る手段である画像出力装置。
【請求項１８】
請求項１５記載の画像出力装置であって、
前記多値化結果値と、前記画素群に形成すべきドットの個数を表す個数データとが、該画素群毎に関連づけられた対応関係を参照することにより、該多値化結果値を該個数データに変換する多値化結果値変換手段を備え、
前記ドット形成有無決定手段は、前記個数データに基づいて、前記画素群内の各画素についてのドット形成有無を決定する手段である画像出力装置。
【請求項１９】
請求項１５ないし請求項１８のいずれかに記載の画像出力装置であって、
前記ドット形成有無決定手段は、前記画素群を所定の態様で分割した複数の領域毎に、各画素のドット形成有無を決定する手段である画像出力装置。
【請求項２０】
請求項１５ないし請求項１８のいずれかに記載の画像出力装置であって、
前記画素群が分割された態様を示す分割パターンを、複数記憶している分割パターン記憶手段を備え、
前記多値化結果値受取手段は、前記複数の多値化結果値とともに、前記分割パターンを示すデータを受け取る手段であり、
前記ドット形成有無決定手段は、前記分割パターンを示すデータとともに受け取った前記複数の多値化結果値を、該分割パターンに応じて前記画素群を分割して生成された各領域に対応付けた後、該領域毎に各画素のドット形成有無を決定する手段である画像出力装置。
【請求項２１】
請求項１５ないし請求項１８のいずれかに記載の画像出力装置であって、
前記順序値特定手段は、少なくとも１００種類以上の前記画素群毎に、前記順序値を特定する手段である画像出力装置。
【請求項２２】
前記順序値を特定する画素群の種類数と、該画素群１つあたりに含まれる画素数との乗算値が、少なくとも１０００以上である請求項１５ないし請求項１８のいずれかに記載の画像出力装置。
【請求項２３】
請求項１５ないし請求項１８のいずれかに記載の画像出力装置であって、
前記ドット形成手段は、単ドットあたりに表現可能な階調値の異なる複数種類のドットを形成可能な手段であり、
前記ドット形成有無決定手段は、前記画素群について受け取った多値化結果値と、該画素群内の各画素についての前記順序値とに基づいて、前記複数種類のドットの形成有無を決定する手段である画像出力装置。
【請求項２４】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備える画像出力装置。
【請求項２５】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する第１の工程と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する第２の工程と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する第３の工程と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定する第４の工程と、
前記決定したドット形成の有無に基づいてドットを形成する第５の工程と
を備える画像出力方法。
【請求項２６】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る工程（Ａ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する工程（Ｂ）と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定する工程（Ｃ）と、
前記決定したドット形成の有無に基づいてドットを形成する工程（Ｄ）と
を備える画像出力方法。
【請求項２７】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する工程（１）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する工程（２）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する工程（３）と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定した後、該決定結果を前記制御データとして出力する工程（４）と
を備える画像処理方法。
【請求項２８】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する工程（ア）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する工程（イ）と、
前記得られた多値化結果値を前記制御データとして出力する工程（ウ）と
を備える画像処理方法。
【請求項２９】
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する第１の機能と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する第３の機能と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定する第４の機能と、
前記決定したドット形成の有無に基づいてドットを形成する第５の機能と
を実現するプログラム。
【請求項３０】
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（Ｂ）と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定する機能（Ｃ）と、
前記決定したドット形成の有無に基づいてドットを形成する機能（Ｄ）と
を実現するプログラム。
【請求項３１】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（１）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（２）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（３）と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定した後、該決定結果を前記制御データとして出力する機能（４）と
を実現するプログラム。
【請求項３２】
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（ア）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（イ）と、
前記得られた多値化結果値を前記制御データとして出力する機能（ウ）と
を実現するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像データに基づいて画像を出力する技術に関し、詳しくは、画像データに所定の画像処理を施してドットを適切な密度で発生させることにより、画像を出力する技術に関する。
【背景技術】
【０００２】
印刷媒体や液晶画面といった各種の出力媒体上にドットを形成することで画像を出力する画像出力装置は、各種画像機器の出力装置として広く使用されている。これら画像出力装置では、画像は画素と呼ばれる小さな領域に細分された状態で扱われており、ドットはこれら画素に形成される。ドットを画素に形成した場合、もちろん画素１つ１つについて見れば、ドットが形成されるか否かのいずれかの状態しか取り得ない。しかし、ある程度の広さを持った領域で見れば、形成するドットの密度に粗密を生じさせることは可能であり、ドットの形成密度を変えることによって多階調の画像を出力することが可能である。例えば、印刷用紙上に黒いインクのドットを形成する場合、ドットが密に形成されている領域は暗く見えるし、逆にドットがまばらに形成されている領域は明るく見える。また、液晶画面に輝点のドットを形成する場合、ドットが密に形成された領域は明るく見え、まばらに形成された領域は暗く見える。従って、ドットの形成密度を適切に制御してやれば、多階調の画像を出力することが可能となる。このように、適切な形成密度が得られるようにドットの形成を制御するためのデータは、出力しようとする画像に所定の画像処理を施すことによって発生させる。
【０００３】
近年では、これら画像出力装置には、出力画像の高画質化や大画像化が要請されるようになってきた。高画質化の要請に対しては、画像をより細かな画素に分割することが効果的である。画素を小さくしてやれば、画素に形成されるドットが目立たなくなるので画質を向上させることができる。また、大画像化の要請に対しては、画素数を増加させることによって対応する。もちろん、個々の画素を大きくすることによっても出力画像を大きくすることはできるが、これでは画質の低下を招いてしまうので、大型化の要請に対しては画素数を増加させることが効果的である。
【０００４】
もっとも、画像を構成する画素数が増加すると画像処理に時間がかかってしまい、画像を迅速に出力することが困難となる。そこで、画像処理を迅速に実行可能とする技術が提案されている（特許文献１）。
【０００５】
【特許文献１】特開２００２−１８５７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、画像処理を迅速に行ったとしても、画像データの転送に、あるいは処理済みの画像データの転送に時間がかかってしまったのでは、画像の出力を迅速化する効果にも自ずから限界がある。
【０００７】
また、近年では、デジタルカメラなどで撮影した画像のデータを、印刷装置などの画像出力装置に直接供給して直ちに画像を出力したいという要請も存在する。このような場合は、いわゆるパーソナルコンピュータ等のような高い処理能力を備えた画像処理装置を用いて画像処理を行うことはできない。従って、デジタルカメラなどの画像撮影装置、あるいは画像出力装置のいずれか、若しくは両者で分担して実行可能なように簡素な画像処理としておく必要がある。
【０００８】
この発明は従来技術における上述した課題を解決するためになされたものであり、十分な出力画質を維持したまま、画像処理およびデータ転送を高速に実行可能な、簡素な画像処理技術の提供を目的とする。
【課題を解決するための手段】
【０００９】
上述した課題の少なくとも一部を解決するために、本発明の画像出力システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す画像処理装置と、該画像処理の結果に基づいてドットを形成することにより、画像を出力する画像出力装置とを備える画像出力システムであって、
前記画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を出力する多値化結果値出力手段と
を備えており、
前記画像出力装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備えていることを要旨とする。
【００１０】
また、上記の画像出力システムに対応する本発明の第１の画像出力方法は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する第１の工程と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する第２の工程と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する第３の工程と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定する第４の工程と、
前記決定したドット形成の有無に基づいてドットを形成する第５の工程と
を備えることを要旨とする。
【００１１】
かかる本発明の画像出力システムおよび第１の画像出力方法においては、画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する。ここで画素群としては、常に同数の画素をまとめたものであっても良いが、例えば、所定のパターンあるいは所定の規則に従って異なる個数ずつ画素をまとめたものであってもよい。次いで、多値化用対応関係を参照することにより、各領域について決定された代表階調値を多値化結果値に変換する。多値化用対応関係には、代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、画素群毎に関連づけられているので、多値化用対応関係を参照すれば、代表階調値を多値化結果値に迅速に変換することができる。
【００１２】
尚、多値化用対応関係としては、代表階調値と画素群とが決まれば、それに応じた多値化結果値が１つ決まるようなものであれば種々の形態を取ることが可能であり、例えば、対応表や関数式などの形態を取ることができる。あるいは、後述するように、多値化結果値を決定するために代表階調値と比較される閾値を記憶した形態を取ることもできる。また、多値化用対応関係には、代表階調値と多値化結果値とが画素群毎に関連づけられていることから、多値化結果値は、その結果値が得られた画素群と組み合わせて初めて解釈可能な結果値としておくこともできるし、画素群によらず多値化結果値だけで解釈可能な結果値としておくこともできる。
【００１３】
こうして各領域について得られた多値化結果値から、該領域内の各画素についてのドット形成の有無を決定する。ドット形成の有無は次のようにして決定する。先ず、画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を、画素群毎に特定する。画素群毎に順序値を特定する手法としては、種々の方法を適用することができるが、例えば、各画素の順序値を画素群毎に予め記憶しておき、記憶されている順序値を読み出すこととしても良い。画素群内の各画素についての順序値を特定したら、該画素群内の各領域について得られた多値化結果値と、特定した順序値とに基づいて、各画素についてのドット形成有無を領域毎に決定する。
【００１４】
詳細な原理については後述するが、各領域の多値化結果値および順序値から、領域毎にドット形成の有無を決定可能な理由は次のようなものである。先ず、画素群の多値化結果値と画素群内の各画素についての順序値とが分かれば、その画素群内の各画素についてのドット形成有無を決定することができる。これは、大まかには次のような理由による。
【００１５】
多値化結果値には、後述するように、その意味するところが画素群に依存するものとしないものとが存在するが、何れの場合でも、多値化結果値は画素群の代表階調値に基づいて決定されている。一方、詳細には後述するが、画素群内に形成すべきドットの個数も画素群の代表階調値に応じて決まるから、画素群に形成すべきドット個数と多値化結果値との間には、代表階調値を介して間接的な対応関係が成り立っている。このことから、多値化結果値と画素群に形成すべきドットの個数とを予め対応付けておくことが可能であり、従って、多値化結果値から画素群に形成すべきドットの個数を決定することが可能である。また、画素群内にある複数の画素の中でドットが形成される順番（順序値）が与えられていれば、画素群に形成すべきドットの個数から、それらドットを画素群内の何れの画素に形成すべきかを決定することが可能である。この様な理由から、画素群の多値化結果値と画素群内の各画素についての順序値とが分かれば、その画素群内の各画素についてのドット形成有無を決定することができる。
【００１６】
次いで、画素群が複数の領域に分割されて、その中のある領域について多値化結果値が得られている場合について考える。得られた多値化結果値が画素群についてのものであれば、上述した理由から、画素群内の各画素についてのドット形成有無を決定することが可能である。そこで、一旦、画素群内の全画素についてのドット形成有無を決定した後、対象とする領域内の各画素についての決定結果を抜き出してやれば、その領域の多値化結果値と画素群の順序値とから、領域内の各画素についてのドット形成有無が得られるはずである。実際には、各領域の多値化結果値および順序値から、領域毎にドット形成有無を決定する手順はこのような手順に限られるわけではない。しかし、上述した理由から、領域毎に多値化結果値を受け取って、領域内の各画素についてのドット形成有無を決定可能なことが了解できる。
【００１７】
こうして得られた各画素についてのドット形成の有無に基づいてドットを形成することで画像を出力する。例えば、印刷媒体や液晶画面などの媒体上にドットを形成すれば、これら媒体上に画像が出力されることになる。
【００１８】
詳細には後述するが、画像の全画素についてドット形成の有無を表すデータに比べれば、多値化結果値はたいへんに少ないデータ量で表現することができる。このため、データを速やかに取り扱うことが可能となり、延いては画像を迅速に出力することが可能となる。更に、代表階調値を多値化するに際しては、多値化用対応関係を参照しながら多値化することで、迅速に多値化することも可能となる。
【００１９】
加えて、代表階調値の多値化に際して参照される多値化用対応関係には、代表階調値と多値化結果値とが画素群毎に対応付けられている。換言すれば、画素群が異なっていれば、異なる代表階調値であっても同じ多値化結果値に多値化することが可能である。このため、単に代表階調値と多値化結果値とを対応づけた場合に比べて、多値化結果値の取り得る個数を減少させることも可能となる。取り得る個数が少なくなれば、多値化結果値を表現するために要するデータ量を少なくすることができるので、その分だけデータの授受を迅速に行うことができ、延いては、画像を迅速に出力することが可能となる。
【００２０】
更に、各画素についてのドット形成有無は、各領域について生成された多値化結果値に基づいて領域毎に決定される。すなわち、一連の処理は画素群を分割する領域毎に行われるにも関わらず、処理に際して参照される多値化用対応関係や順序値などは、画素群毎に設定されたものを用いることができる。このことは、処理単位である領域の大きさが異なっている場合でも、同一の多値化用対応関係および順序値を使用可能なことを意味している。このことから、上述した画像出力システムおよび画像出力方法によれば、処理単位である領域の大きさに影響を受け難い汎用性の高いシステムおよび方法を構成することが可能となる。
【００２１】
加えて、上述した画像出力システムおよび第１の画像出力方法は、単に汎用性が高いだけでなく、多値化用対応関係のデータ量を低減することができるという利点も存在する。すなわち、画素群の大きさは、処理単位である領域の大きさよりも大きくすることが可能である。そして、詳細に後述するが、画素群が大きくなれば画素群の種類は少なくなる。ここで、多値化用対応関係は、代表階調値と多値化結果値とが画素群毎に関連づけられているから、画素群の種類が少なくなれば、多値化用対応関係のデータ量も減少する。このため、上述の画像出力システムおよび画像出力方法によれば、比較的少ない容量で多値化用対応関係を記憶できるという利点も得ることが可能となる。
【００２２】
また、画素群内で各画素にドットが形成される順番を表す順序値を、画素群毎に特定しておけば、画素群毎に得られた多値化結果値と画素群毎の順序値とに基づいて、各画素についてのドット形成の有無を適切に決定することができる。このため、高画質な画像を迅速に出力することが可能となる。加えて、画素群を複数の領域に分割して処理することから、画素群内で階調値の大きく異なっている場合でも、領域毎に得られた多値化結果値に基づいて、適切にドット形成の有無を決定することができるので、より一層高画質な画像を出力することが可能となる。
【００２３】
更に、多値化結果値を生成するための処理は、予め設定された対応関係を参照するという簡素な処理内容とすることができる。このため、コンピュータなどのようには高度な処理能力を有さない機器においても、十分に実用的な速度で処理することが可能である。従って、例えば画像データを、コンピュータなどを介さずに、画像出力装置に直接供給し、画像データにこれらの画像処理を画像出力装置の内部で施すことで、適切に画像を出力することも可能となる。
【００２４】
こうした画像出力システムおよび第１の画像出力方法においては、画素群を分割するか否かを該画素群内の各画素の階調値に基づいて判断し、分割しない画素群については、該画素群を代表する代表階調値を多値化しても良い。そして、多値化結果値を１つだけ受け取った画素群については、該画素群内の各画素についてドット形成の有無を決定して、画像を出力することとしても良い。
【００２５】
こうすれば、分割しない画素群については多値化結果値を１つだけ出力すればよいので、画素群内の各領域について多値化結果値を出力する場合に比べて、より迅速に多値化結果値をやり取りすることができる。この結果、画像を迅速に出力することが可能となる。
【００２６】
また、本発明は、画像データを受け取って画像を出力する画像出力装置として把握することも可能である。すなわち、上記の画像出力システム、あるいは画像出力方法に対応する本発明の第１の画像出力装置は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備えることを要旨とする。
【００２７】
かかる本発明の第１の画像出力装置においては、画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定した後、多値化用対応関係を参照することにより、各領域について決定された代表階調値を多値化結果値に変換する。次いで、各領域について得られた多値化結果値と、画素群内の各画素の順序値とに基づいて、各画素についてのドット形成の有無を、該領域毎に決定する。こうして画素群内の各画素についてのドット形成有無を決定したら、得られた結果に基づいてドットを形成することにより画像を出力する。
【００２８】
前述したように、画素群の多値化結果値は、画素毎にドット形成の有無を表したデータよりも遙かに小さなデータであるため、多値化結果値であればデータを迅速にやり取りすることができ、延いては画像を迅速に出力することができる。また、多値化結果値は、代表階調値と多値化結果値とが画素群毎に対応付けられた多値化用対応関係を参照するだけで生成することができる。このため、多値化結果値を迅速に生成することができ、延いては画像を迅速に出力することが可能となる。加えて、画素群を複数の領域に分割して、領域毎に多値化結果値を生成するとともに、各画素のドット形成の有無を決定していることから、たとえ画素群内で階調値が大きく変化していた場合でも、適切にドット形成の有無を決定することができ、延いては、高画質な画像を出力することが可能となる。
【００２９】
加えて、代表階調値の多値化に際して参照される多値化用対応関係には、代表階調値と多値化結果値とが画素群毎に対応付けられている。換言すれば、画素群が異なっていれば、異なる代表階調値であっても同じ多値化結果値に多値化することが可能である。このため、単に代表階調値と多値化結果値とを対応づけた場合に比べて、多値化結果値の取り得る個数を減少させることも可能となる。取り得る個数が少なくなれば、多値化結果値を表現するために要するデータ量を少なくすることができるので、その分だけデータの授受を迅速に行うことができ、延いては、画像を迅速に出力することが可能となる。
【００３０】
更に、代表階調値を多値化する処理や、多値化結果値からドット形成の有無を決定する処理が実施される領域の大きさが異なっている場合でも、処理に際して参照される多値化用対応関係や順序値は、同じものを使用可能という利点も得ることができる。加えて、処理に使用される領域の大きさよりも、画素群の大きさを大きく設定しておくことができるので、多値化用対応関係のデータ量を低減することも可能である。
【００３１】
また、前述した課題の少なくとも一部を解決するために、本発明の画像処理システムは、次の構成を採用した。すなわち、
画像データに所定の画像処理を施す第１の画像処理装置と、該画像処理によって得られた第１の画像データを、画素毎にドット形成の有無を表した第２の画像データに変換する第２の画像処理装置とを備える画像処理システムであって、
前記第１の画像処理装置は、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を前記第１の画像データとして出力する第１の画像データ出力手段と
を備えており、
前記第２の画像処理装置は、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無を前記第２の画像データとして出力する第２の画像データ出力手段と
を備えていることを要旨とする。
【００３２】
また、上記の画像処理システムに対応する本発明の第１の画像処理方法は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する工程（１）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する工程（２）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する工程（３）と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定した後、該決定結果を前記制御データとして出力する工程（４）と
を備えることを要旨とする。
【００３３】
更に本発明は、上記の画像処理システムを構成する第１および第２の画像処理装置が一体に構成された画像処理装置として把握することも可能である。すなわち、上記の画像処理システムに対応する本発明の一態様としての画像処理装置は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無を前記制御データとして出力する制御データ出力手段と
を備えることを要旨とする。
【００３４】
かかる画像処理システム、第１の画像処理方法、および画像処理装置においては、画素群を分割する各領域について代表階調値を決定した後、多値化用対応関係を参照することによって、それぞれの代表階調値を多値化する。次いで、多値化結果値と順序値とに基づいて、領域内の各画素についてドット形成の有無を決定する。こうして、画素群内の全画素についてドット形成の有無を決定したら、得られた結果を制御データとして出力する。
【００３５】
このように多値化用対応関係を参照して代表階調値を多値化してやれば、迅速に多値化することができるので、その分だけドット形成の有無を迅速に決定することができ、延いては、制御データを迅速に出力することが可能となる。加えて、多値化結果値はデータ量が小さく迅速に取り扱うことができるので、ドット形成の有無を迅速に決定することが可能となり、この点でも、制御データを迅速に出力することが可能である。更に、画素群を複数の領域に分割し、各領域毎にドット形成の有無を判断していることから、画素群内で階調値が大きく変化している場合でも、ドット形成の有無を適切に決定することができる。このため、画像出力装置では、こうして得られた制御データに基づいてドットの生成を制御してやれば、高画質な画像を出力することが可能となる。
【００３６】
更には、多値化結果値から各画素のドット形成の有無は、画像出力装置側で決定することとして、このような画像出力装置に対する制御データとして多値化結果値を供給することによっても、迅速に画像を出力することができる。こうした点に着目すれば、本発明は次のような画像処理装置として把握することもできる。すなわち、本発明の他の態様の画像処理装置は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する代表階調値決定手段と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する多値化手段と、
前記得られた多値化結果値を前記制御データとして出力する制御データ出力手段と
を備えることを要旨とする。
【００３７】
また、上記の画像処理装置に対応する本発明の第２の画像処理方法は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する画像処理方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する工程（ア）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する工程（イ）と、
前記得られた多値化結果値を前記制御データとして出力する工程（ウ）と
を備えることを要旨とする。
【００３８】
かかる他の態様としての画像処理装置、および第２の画像処理方法においては、画素群を分割する複数の領域毎に代表階調値を決定する。次いで、多値化用対応関係を参照することによって、それぞれの代表階調値を多値化して、得られた多値化結果値を制御データとして出力する。
【００３９】
多値化結果値はデータ量が小さいことから、多値化結果値を制御データとして出力することとすれば、迅速に出力することができる。また、多値化用対応関係を参照することによって代表階調値を多値化してやれば、多値化結果値を迅速に求めることができるので、その分だけ迅速に制御データを出力すること可能となる。更に、画素群を分割する複数の領域毎に得られた代表階調値を多値化していることから、たとえ画素群内で階調値が大きく変化している場合などでも、適切な多値化結果値を決定することができ、延いては適切な制御データを出力することが可能となる。
【００４０】
こうした他の態様の画像処理装置においては、画素群を分割するか否かを該画素群内の各画素の階調値に基づいて判断し、分割しない画素群については、該画素群の代表階調値を決定する多値化して、得られた多値化結果値を制御データとして出力することとしても良い。
【００４１】
こうすれば、分割しない画素群については多値化結果値を１つだけ出力すればよいので、画素群内の各領域について多値化結果値を出力する場合に比べて、より迅速に制御データを出力することが可能となる。
【００４２】
こうした画像処理装置においては、画素群を画像中での位置に応じて複数種類に分類し、分類結果に応じて各々の画素群に分類番号を付与することとしてもよい。そして、代表階調値および分類番号の組合せに対して多値化結果値が関連づけられた多値化用対応関係を参照することにより、代表階調値を多値化することとしても良い。
【００４３】
画素群に分類番号を付与しておけば、画素群を簡便に且つ確実に識別することができる。また、多値化結果値は、代表階調値と分類番号とに基づいて決定されることから、分類番号を画素群の画像中での位置に応じて適切に付与することで、多値化結果値を適切に分布させることができ、延いては適切な制御データを出力することが可能となる。
【００４４】
また、代表階調値を多値化するに際しては、画素群内に形成されるドットの個数を示す値に多値化することとしても良い。ここで、ドットの個数を示す値としては、個数そのものに限られず、例えば、所定の手順に従って個数に変換されるような値であれば、どのような値とすることもできる。
【００４５】
こうすれば、画素群に形成されるドットの個数を示すデータが、制御データとして出力されることになるので、各画素についてのドット形成の有無を判断する処理を簡素なものとすることが可能となるので好ましい。
【００４６】
また、こうした画像処理装置においては、画素群を分割する態様が予め設定されており、画素群を分割する複数の領域毎に、代表階調値を決定することとしてもよい。
【００４７】
こうすれば、画素群を分割して複数の領域毎に代表階調値を決定する処理を、簡素な処理とすることができるので好適である。
【００４８】
また、画素群を分割するに際しては、互いに大きさの等しい複数の領域に分割することとしてもよい。特に、画素群を２つの領域に等分することとしても良い。ここで、「領域の大きさが互いに等しい」とは、領域内に同数の画素を含んでいることを意味している。
【００４９】
各領域の大きさが等しければ、代表階調値を決定して多値化結果値を決定する処理を、それぞれの領域についてほぼ同じ様な処理とすることができるので、全体としての画像処理を簡素なものとすることが可能となる。また、画素群を２つの領域に等分する場合は、画素群内の階調値分布が多少異なっていても、同じ態様で分割することができる。一例として、画素群を左右２つの領域に等分する場合について説明する。階調値の異なる画素が画素群中の左側の一部領域にある場合でも、逆に、右側の一部領域にある場合でも、画素群を左右２つの領域に等分する分割態様であれば、いずれの場合にも適用することができる。このように、画素群を等分する分割態様であれば、１つの分割態様をより多くの階調値分布に適用することができるので、画像処理を更に簡素なものとすることが可能である。
【００５０】
一方、画素群を分割するに際して、互いに大きさの異なる複数の領域に分割した場合には、画素群内での階調値分布に応じて適切に分割することができるので、より適切な多値化結果値を得ることが可能である。また、このような場合でも、画素群を２つの領域に分割することとしてもよい。詳細には後述するが、画素群内の各画素の階調値は、互いに近い値を取る傾向にあるため、１つの画素群を３つ以上の領域に分割しなければならない場合は、それほど多くはない。このことから、ほとんどの場合は、画素群を２つの領域に分割するだけで十分に画質を向上させることが可能である。
【００５１】
また、こうした画像処理装置においては、画素群を分割する場合には、次のように多値化結果値を出力することとしても良い。先ず、画素群の分割された態様を示す分割パターンを、複数記憶しておく。そして、画素群を分割するに際しては、記憶されている複数の分割パターンの中から選択した１のパターンに従って分割し、該領域毎に決定した代表階調値を多値化する。そして、得られた多値化結果値とともに、選択した分割パターンを示すデータを出力することとしても良い。
【００５２】
こうすれば、複数の分割パターンの中から適切なパターンを選択することができるので、適切な多値化結果値を出力することができる。また、多値化結果値から各画素のドット形成の有無を決定するに際しては、それぞれの多値化結果値が、画素群内のどの領域について得られた結果値かを知ることができるので、各画素のドット形成の有無を適切に決定することが可能となる。
【００５３】
また、こうした画像処理装置においては、少なくとも１００種類以上の画素群毎に、代表階調値と多値化結果値とが関連づけられた多値化用対応関係を参照して、代表階調値の多値化を行うこととしてもよい。
【００５４】
画素群毎に多値化を行う場合、得られた多値化結果値が、複数の画素群に亘って一定のパターンで繰り返されてしまうことがある。もちろん、本願において代表階調値の多値化に際して参照される多値化用対応関係には、代表階調値と多値化結果値とが画素群毎に関連づけられているので、単純に代表階調値と多値化結果値とが関連づけられている場合と比べれば、一定のパターンが表れ難くなっていると言うことができる。しかし、画素群の種類があまりに少ないのでは、パターンの発生を十分に抑制することは困難である。パターンが発生することを回避するためには、できるだけ多くの種類の画素群について、代表階調値と多値化結果値とを関連づけておくことが望ましいが、経験上、１００種類以上の画素群について関連づけておけば、一定のパターンが現れることを、実用上の問題が発生しない程度に抑制することが可能となる。
【００５５】
あるいは、こうした画像処理装置においては、多値化用対応関係に設定されている画素群の種類数と、画素群にまとめられる画素数との乗算値が、少なくとも１０００以上となるように設定することとしても良い。
【００５６】
画素群内の各画素についてドット形成の有無を決定するに際しては、多値化結果値に加えて、画素群内の各画素にドットが形成される順番を示す順序値も考慮されるので、例え多値化結果値が同じでも順序値が異なれば、画素群内では異なるパターンでドットが発生する。ここで、画素群にまとめられる画素数が多くなれば、取り得る順序値の種類も多くなることに鑑みれば、多値化用対応関係に設定されている画素群の種類が少なくても、画素群にまとめられる画素数が多くなれば、複数の画素群に亘ってドットが一定のパターンで発生することを抑制することができる。経験によれば、多値化用対応関係に設定されている画素群の種類数と、画素群にまとめられる画素数との乗算値が１０００以上となるように設定しておけば、ドットが一定のパターンで発生することを、実用上の問題がない程度に抑制することが可能となる。
【００５７】
前述した課題の少なくとも一部を解決するために、本発明の第２の画像出力装置は、次の構成を採用した。すなわち、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力装置であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る多値化結果値受取手段と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する順序値特定手段と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定するドット形成有無決定手段と、
前記決定したドット形成の有無に基づいてドットを形成するドット形成手段と
を備えることを要旨とする。
【００５８】
また、上記の画像出力装置に対応する本発明の第２の画像出力方法は、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより、画像を出力する画像出力方法であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る工程（Ａ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する工程（Ｂ）と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定する工程（Ｃ）と、
前記決定したドット形成の有無に基づいてドットを形成する工程（Ｄ）と
を備えることを要旨とする。
【００５９】
かかる本発明の第２の画像出力装置および第２の画像出力方法においては、画像データとして、画素群を分割する複数の領域毎に得られた多値化結果値を受け取ると、領域毎に各画素についてのドット形成有無を決定する。そして、得られた決定結果に基づいてドットを形成することにより画像を出力する。各画素についてのドット形成の有無は、多値化結果値と、画素群内で各画素にドットが形成される順番を示す順序値とに基づいて決定することができる。
【００６０】
画素毎についてドット形成の有無を表すデータに比べれば、多値化結果値はたいへんに少ないデータ量で表現することができるので、速やかに受け取ることが可能であり、延いては画像を迅速に出力することができる。また、画素群を分割する領域毎に多値化結果値を受け取って、領域毎にドット形成有無を決定しているため、画素群内で階調値が大きく変化している場合であっても、適切にドット形成の有無を決定することができる。このため、高画質な画像を出力することが可能となる。
【００６１】
こうした第２の画像出力装置においては、画素群毎に、少なくとも１つずつ多値化結果値を受け取ることとして、多値化結果値を１つだけ受け取った画素群については、該多値化結果値と前記順序値とに基づいて該画素群毎に、ドット形成の有無を決定することとしてもよい。
【００６２】
こうすれば、画素群を分割する領域毎に多値化結果値を受け取る場合に比べて、迅速に画像データを受け取ることができる。このため、迅速に画像を出力することが可能となるので好ましい。
【００６３】
こうした第２の画像出力装置では、画素群に形成すべきドットの個数を表す個数データを、多値化結果値として受け取ることとしても良い。尚、個数データとしては、何らかの方法でドットの個数に変換可能であれば、必ずしも個数そのものである必要はなく、どのような形態のデータとすることもできる。
【００６４】
多値化結果値として個数データを受け取ることとすれば、受け取った個数データと順序値とに基づいて、画素群内の各画素についてのドット形成の有無を速やかに決定することが可能となるので好ましい。
【００６５】
あるいは、多値化結果値と、画素群に形成すべきドットの個数を表す個数データとが、画素群毎に関連づけられた対応関係を、画像出力装置に予め記憶しておき、多値化結果値を受け取ると、かかる対応関係を参照して個数データに変換することとしてもよい。尚、このような対応関係としては、多値化結果値および画素群が決まれば、それに対する個数データが１つ決まるようなものであれば、どのような形態とすることもできる。例えば、対応表や関数式などの形態とすることができる。
【００６６】
このように、多値化結果値と画素群とを組み合わせて初めて個数データが決まるようにしておけば、１つの多値化結果値でも、画素群との組合せによって異なる個数データを表すことができるので、多値化結果値の取り得る種類を低減することが可能である。多値化結果値の取り得る種類が少なくなれば、より少ないデータ量で表現することが可能となる。このため、多値化結果値を迅速に受け取ることができ、延いては、迅速に画像を出力することが可能となる。
【００６７】
こうした第２の画像出力装置においては、次のようにしてドット形成の有無を決定しても良い。すなわち、画素群を所定の複数個の領域に分割する態様を予め定めておく。そして、所定の複数個の多値化結果値を受け取った画素群については、これら多値化結果値を、予め定めておいた複数個の領域に対応付けて、該領域毎に各画素のドット形成有無を決定することとしても良い。
【００６８】
こうすれば、多値化結果値を複数個受け取った画素群についても、各画素のドット形成の有無を簡便に決定することができるので、画像を迅速に出力することが可能となる。尚、画素群を分割する個数としては、種々の個数とすることができるが、画素群を３つ以上に分割する必要が生じることは稀なことから、画素群の分割数は２個としておけば、ほとんどの場合に対応することが可能となるので好ましい。
【００６９】
また、こうした画像出力装置においては、次のように各画素についてのドット形成有無を決定することとしても良い。先ず、画素群が分割された状態を示す分割パターンを、複数パターン記憶しておく。次いで、画素群内の各領域についての多値化結果値とともに、画素群の分割パターンを示すデータを受け取る。そして、画素群内の各画素についてのドット形成有無を決定するに際しては、多値化結果値とともに受け取った分割パターンに従って、各々の多値化結果値を各領域に対応付けた後、該領域毎に各画素のドット形成有無を決定することとしてもよい。
【００７０】
こうすれば、１つの画素群について受け取った複数の多値化結果値を、画素群内の各領域に適切に対応付けることができるので、各画素についてのドット形成有無を適切に決定することができる。このため、高画質な画像を出力することが可能となる。
【００７１】
また、こうした第２の画像出力装置においては、少なくとも１００種類以上の画素群毎に、順序値を記憶しておくこととしても良い。
【００７２】
画素群毎に得られた多値化結果値に基づいて、画素群内の各画素についてのドット形成有無を決定すると、複数の画素群に亘って一定のパターンでドットが発生してしまうことがある。もちろん、本願においてドット形成の有無を決定するに際しては、多値化結果値だけでなく、画素群毎に特定された順序値も考慮して決定しているため、単純に多値化結果値に基づいて決定した場合と比べれば、一定のパターンでドットが発生し難くなっていると言うことができる。しかし、画素群の種類があまりに少ないのでは、一定のパターンが発生することを十分に抑制することは困難である。ドットが一定のパターンで発生することを回避するためには、できるだけ多くの種類の画素群について順序値を特定可能なことが望ましいが、経験上、１００種類以上の画素群について順序値を特定することができれば、一定のパターンでドットが発生することを、実用上の問題が発生しない程度に抑制することが可能となる。
【００７３】
あるいは、こうした画像処理装置においては、順序値を特定可能な画素群の種類数と、画素群にまとめられる画素数との乗算値が、少なくとも１０００以上となるように設定することとしても良い。
【００７４】
画素群にまとめられた画素数が少なければ、画素群内でドットが分布する態様も僅かな種類しか取り得ないので、複数の画素群に亘ってドットが一定のパターンで発生し易くなる。逆に言えば、画素群にまとめられる画素数が多ければ、画素群内でのドットの分布は多くの態様を取ることができるので、それだけドットが一定のパターンで発生し難くなっている。このことから、順序値が特定される画素群の種類が少なくても、画素群にまとめられる画素数が多くなれば、複数の画素群に亘ってドットが一定のパターンで発生することが抑制されることになる。経験によれば、画素群の種類数と、画素群にまとめられる画素数との乗算値が１０００以上となるように設定しておけば、ドットが一定のパターンで発生することを、実用上の問題がない程度に抑制することが可能となる。
【００７５】
こうした第２の画像出力装置においては、単ドットあたりに表現可能な階調値の異なる複数種類のドットを形成可能として、画素群について受け取った多値化結果値と、該画素群内の各画素についての前記順序値とに基づいて、各種ドットについての形成有無を決定することとしてもよい。
【００７６】
こうすれば、多値化結果値から決定した各種ドットの形成有無に基づいてドットを形成することができるので、高画質な画像を迅速に出力することが可能となる。また、このような複数種類のドットを形成可能な画像出力装置において、多値化結果値を受け取ることは、次のような理由から、画像を迅速に出力する上で効果的である。まず、複数種類のドットを形成可能な場合、各画素についてのドットの形成有無をドットの種類毎に表したデータは、どうしてもデータ量が大きくなってしまうので、データの授受に時間がかかってしまう。更に、ドットの種類が多くなるほど、ドット形成の有無を判断するために要する時間が長くなってしまう傾向にあり、画像を迅速に出力することが困難である。これに対して、多値化結果値を受け取ることとすれば、ドットの種類が多くなった場合でも迅速にデータを供給することが可能であり、このため、画像を迅速に出力することが可能となる。
【００７７】
更に本発明は、上述した画像出力方法あるいは画像処理方法を実現するためのプログラムをコンピュータに読み込ませ、コンピュータを用いて実現することも可能である。従って、本発明は次のようなプログラム、あるいは該プログラムを記録した記録媒体としての態様も含んでいる。すなわち、上述した第１の画像出力方法に対応する本発明のプログラムは、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する第１の機能と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する第３の機能と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定する第４の機能と、
前記決定したドット形成の有無に基づいてドットを形成する第５の機能と
を実現することを要旨とする。
【００７８】
また、上記のプログラムに対応する本発明の記録媒体は、
画像データに応じてドットを形成することにより、該画像データに対応した画像を出力するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する第１の機能と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する第２の機能と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する第３の機能と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定する第４の機能と、
前記決定したドット形成の有無に基づいてドットを形成する第５の機能と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００７９】
また、上述した第１の画像処理方法に対応する本発明のプログラムは、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（１）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（２）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（３）と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定した後、該決定結果を前記制御データとして出力する機能（４）と
を実現することを要旨とする。
【００８０】
また、上記のプログラムに対応する本発明の記録媒体は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（１）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（２）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（３）と、
前記画素群内の各領域について受け取った前記多値化結果値と、該画素群について特定した前記順序値とに基づいて、該領域内の各画素についてのドット形成有無を決定した後、該決定結果を前記制御データとして出力する機能（４）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００８１】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現させれば、高画質な画像を迅速に出力することが可能となる。
【００８２】
また、上述した第２の画像出力方法に対応する本発明のプログラムは、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（Ｂ）と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定する機能（Ｃ）と、
前記決定したドット形成の有無に基づいてドットを形成する機能（Ｄ）と
を実現することを要旨とする。
【００８３】
また、上記のプログラムに対応する本発明の記録媒体は、
所定の画像処理が施された画像データを受け取って、該画像データに基づいてドットを形成することにより画像を出力するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群について、該画素群を分割する複数の領域毎に、各領域を代表する階調値を多値化して得られた多値化結果値を、前記画像データとして受け取る機能（Ａ）と、
前記画素群内の各画素について、該画素群内でドットが形成される順番を示す順序値を該画素群毎に特定する機能（Ｂ）と、
前記画素群について受け取った複数の多値化結果値と、該画素群について特定した前記順序値とに基づいて、該画素群内の前記領域毎に、各画素についてドット形成の有無を決定する機能（Ｃ）と、
前記決定したドット形成の有無に基づいてドットを形成する機能（Ｄ）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００８４】
更に、上述した第２の画像処理方法に対応する本発明のプログラムは、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（ア）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（イ）と、
前記得られた多値化結果値を前記制御データとして出力する機能（ウ）と
を実現することを要旨とする。
【００８５】
また、上記のプログラムに対応する本発明の記録媒体は、
ドットを形成して画像を出力する画像出力装置が該ドットの形成を制御するために用いる制御データを、該画像を表す画像データに所定の画像処理を加えて生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画像を構成する画素が所定の複数個ずつまとめられた画素群毎に、該画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する機能（ア）と、
前記代表階調値と該代表階調値を多値化することによって得られる多値化結果値とが、前記画素群毎に関連づけられた多値化用対応関係を参照することにより、前記決定された代表階調値を多値化する機能（イ）と、
前記得られた多値化結果値を前記制御データとして出力する機能（ウ）と
をコンピュータを用いて実現するプログラムを記録していることを要旨とする。
【００８６】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現させれば、画像データを迅速に受け取って、高画質な画像を迅速に出力することが可能となる。
【発明を実施するための最良の形態】
【００８７】
以下では、本発明の作用・効果をより明確に説明するために、本発明の実施の形態を、次のような順序に従って説明する。
Ａ．実施例の概要：
Ｂ．装置構成：
Ｃ．第１実施例の画像印刷処理の概要：
Ｃ−１．個数データから画素位置を決定可能な原理：
Ｃ−２．第１実施例の多値化結果値生成処理：
Ｃ−３．分類番号の決定方法：
Ｃ−４．多値化用テーブル：
Ｃ−５．多値化結果値のデータ形式：
Ｃ−６．第１実施例のドット形成有無決定処理：
Ｃ−７．第１実施例の変形例：
Ｄ．第２実施例：
Ｄ−１．第２実施例の画像印刷処理の概要：
Ｄ−２．第２実施例の多値化結果値生成処理：
Ｄ−２−１．ディザ法を用いた大中小ドットの形成個数の決定処理：
Ｄ−２−２．第２実施例の多値化結果値生成処理の内容：
Ｄ−３．第２実施例のドット形成有無決定処理：
Ｅ．第３実施例：
Ｅ−１．第３実施例の多値化結果値生成処理：
Ｅ−２．第３実施例のドット形成有無決定処理：
Ｅ−３．第３実施例の多値化用テーブルの設定方法：
Ｅ−４．第３実施例の変形例：
【００８８】
Ａ．実施例の概要  ：
実施例の詳細な説明に入る前に、図１を参照しながら、実施例の概要について説明しておく。図１は、印刷システムを例にとって、本実施例の概要を説明するための説明図である。本印刷システムは、画像処理装置としてのコンピュータ１０と、画像出力装置としてのプリンタ２０等から構成されており、コンピュータ１０に所定のプログラムがロードされて実行されると、コンピュータ１０およびプリンタ２０などが全体として、一体の画像出力システムとして機能する。プリンタ２０は、印刷媒体上にドットを形成することによって画像を印刷する。コンピュータ１０は、印刷しようとする画像の画像データに所定の画像処理を施すことによって、プリンタ２０が画素毎にドットの形成を制御するためのデータを生成して、該プリンタ２０に供給する。
【００８９】
一般的な印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータで所定の画像処理を施すことにより、画像データを、画素毎にドット形成の有無を表すデータに変換する。次いで、得られたデータをプリンタに供給し、プリンタでは供給されたデータに従ってドットを形成することにより画像を印刷している。ここで、印刷しようとする画像の画素数が多くなると、それに伴って、画像処理に要する時間が増加して、画像を迅速に印刷することが困難となる。また、画素数が多くなるにつれて、画素毎にドット形成の有無を表すデータのデータ量が増加するので、コンピュータからプリンタにデータを出力するために要する時間が長くなり、それだけ印刷に要する時間が増加してしまう。
【００９０】
こうした点に鑑みて、図１に例示した印刷システムでは、次のようにして画像を印刷する。先ず、コンピュータ１０では、画像を構成する画素を、所定の複数個ずつまとめて画素群を生成する。次いで、画素群を分割する複数の領域について、各領域の階調値を代表する代表階調値を決定する。図１では、画素群が２つの領域に分割されている様子が概念的に示されている。図中に破線で示した小さな正方形は、画素を概念的に表したものである。図示した例では、画素群は８つの画素から構成されており、細かい斜線が付された領域Ａと、粗い斜線が付された領域Ｂの２つの領域に分割されている。代表階調値決定モジュールでは、このような領域毎に代表階調値を決定する。尚、画素群を常に分割するのではなく、画素群内の階調値に基づいて分割するか否かを判断することとしても良い。この様な場合は、分割しないものと判断された画素群については、代表階調値が１つだけ決定されることになる。
【００９１】
こうして得られた代表階調値は、多値化モジュールに供給されて多値化され、多値化結果値に変換される。代表階調値の多値化は、対応関係記憶モジュールに記憶されている多値化用対応関係を参照することによって行う。多値化用対応関係には、代表階調値と多値化結果値とが画素群毎に関連づけられているため、かかる対応関係を参照することで、代表階調値を迅速に多値化結果値に変換することができる。尚、代表階調値は、画素群内の領域毎に決定されるから、多値化結果値も領域毎に得られることになる。もちろん、画素群を分割するか否かを判断することとして、分割しないと判断された画素群については、多値化結果値が１つだけ得られることになる。コンピュータ１０は、こうして得られた多値化結果値をプリンタ２０に向かって出力する。
【００９２】
プリンタ２０では、画素群内の各領域についての多値化結果値を受け取ると、各画素についてのドット形成の有無を領域毎に決定する。ドット形成の有無は、次のようにして決定される。先ず、画素群内で各画素にドットが形成される順番を示す順序値を、画素群毎に特定する。順序値の特定に際してはどのような方法を用いても構わないが、例えば、画素群毎に各画素の順序値を予め記憶しておき、かかる順序値を読み出して特定することとしても良い。そして、多値化結果値を受け取ると、多値化結果値と順序値とに基づいて、画素群内の各画素についてドット形成の有無を決定する。ここで、多値化結果値は画素群内の領域毎に供給されるので、それぞれの多値化結果値と順序値とに基づいて、領域毎にドット形成の有無を決定する。もちろん、多値化結果値が１つだけ供給された画素群については、その多値化結果値と順序値とに基づいて、画素群内の各画素についてのドット形成有無を決定すればよい。このようにして得られたドット形成有無の決定結果に従って、ドット形成モジュールがドットを形成することによって画像が印刷される。
【００９３】
ここで、画素毎にドット形成の有無を表すデータに比べれば、画素群毎の多値化結果値は遙かに小さなデータ量とすることができる。従って、コンピュータ１０から画素毎にドット形成の有無を表したデータをプリンタ２０に供給する代わりに、画素毎の多値化結果値を供給してやれば、極めて迅速にデータを転送することが可能となる。
【００９４】
また、多値化結果値は、代表階調値と多値化結果値とが関連づけられた多値化用対応関係を参照することによって、迅速に求めることができる。このため、生成した多値化結果値をプリンタ２０に迅速に供給可能なことと相まって、たとえ画素数の多い画像であっても迅速に画像を印刷することが可能となる。また、対応関係を参照して多値化結果値を生成すれば、極めて簡素な処理で生成することができる。このため、多値化結果値を生成するためには、コンピュータ１０のような高度な処理能力を有する機器を用いずとも、例えばプリンタ２０あるいはデジタルカメラなどの内部でも生成することが可能となる。
【００９５】
更に、画素群内を分割する複数の領域毎に代表階調値を多値化した後、各画素のドット形成の有無を領域毎に決定することから、たとえ、画素群内で階調値が大きく変化している場合でも、ドット形成の有無を適切に決定して高画質な画像を出力することが可能となる。以下では、こうした印刷システムを例に用いることにより、本発明の各種実施例について詳細に説明する。
【００９６】
Ｂ．装置構成  ：
図２は、本実施例の画像処理装置としてのコンピュータ１００の構成を示す説明図である。コンピュータ１００は、ＣＰＵ１０２を中心に、ＲＯＭ１０４やＲＡＭ１０６などが、バス１１６で互いに接続して構成された周知のコンピュータである。
【００９７】
コンピュータ１００には、フレキシブルディスク１２４やコンパクトディスク１２６等のデータを読み込むためのディスクコントローラＤＤＣ１０９や、周辺機器とデータの授受を行うための周辺機器インターフェースＰＩＦ１０８、ＣＲＴ１１４を駆動するためのビデオインターフェースＶＩＦ１１２等が接続されている。ＰＩＦ１０８には、後述するカラープリンタ２００や、ハードディスク１１８等が接続されている。また、デジタルカメラ１２０やカラースキャナ１２２等をＰＩＦ１０８に接続すれば、デジタルカメラ１２０やカラースキャナ１２２で取り込んだ画像を印刷することも可能である。更に、ネットワークインターフェースカードＮＩＣ１１０を装着すれば、コンピュータ１００を通信回線３００に接続して、通信回線に接続された記憶装置３１０に記憶されているデータを取得することもできる。
【００９８】
図３は、本実施例のカラープリンタ２００の概略構成を示す説明図である。カラープリンタ２００はシアン，マゼンタ，イエロ，ブラックの４色インクのドットを形成可能なインクジェットプリンタである。もちろん、これら４色のインクに加えて、染料または顔料濃度の低いシアン（淡シアン）インクと、染料または顔料濃度の低いマゼンタ（淡マゼンタ）インクとを含めた合計６色のインクドットを形成可能なインクジェットプリンタを用いることもできる。尚、以下では場合によって、シアンインク，マゼンタインク，イエロインク，ブラックインク，淡シアンインク，淡マゼンタインクのそれぞれを、Ｃインク，Ｍインク，Ｙインク，Ｋインク，ＬＣインク，ＬＭインクと略称することがあるものとする。
【００９９】
カラープリンタ２００は、図示するように、キャリッジ２４０に搭載された印字ヘッド２４１を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ２４０をキャリッジモータ２３０によってプラテン２３６の軸方向に往復動させる機構と、紙送りモータ２３５によって印刷用紙Ｐを搬送する機構と、ドットの形成やキャリッジ２４０の移動および印刷用紙の搬送を制御する制御回路２６０などから構成されている。
【０１００】
キャリッジ２４０には、Ｋインクを収納するインクカートリッジ２４２と、Ｃインク，Ｍインク，Ｙインクの各種インクを収納するインクカートリッジ２４３とが装着されている。インクカートリッジ２４２，２４３をキャリッジ２４０に装着すると、カートリッジ内の各インクは図示しない導入管を通じて、印字ヘッド２４１の下面に設けられた各色毎のインク吐出用ヘッド２４４ないし２４７に供給される。
【０１０１】
図４は、インク吐出用ヘッド２４４ないし２４７におけるインクジェットノズルＮｚの配列を示す説明図である。図示するように、インク吐出用ヘッドの底面には、Ｃ，Ｍ，Ｙ，Ｋの各色のインクを吐出する４組のノズル列が形成されており、１組のノズル列あたり４８個のノズルＮｚが、一定のノズルピッチｋで配列されている。
【０１０２】
制御回路２６０は、ＣＰＵや、ＲＯＭ、ＲＡＭ、ＰＩＦ（周辺機器インターフェース）等がバスで相互に接続されて構成されている。制御回路２６０は、キャリッジモータ２３０および紙送りモータ２３５の動作を制御することによってキャリッジ２４０の主走査動作および副走査動作を制御するとともに、コンピュータ１００から供給される印刷データに基づいて、各ノズルから適切なタイミングでインク滴を吐出する制御を行う。こうして、制御回路２６０の制御の下、印刷媒体上の適切な位置に各色のインクドットを形成することによって、カラープリンタ２００はカラー画像を印刷することができる。
【０１０３】
尚、各色のインク吐出ヘッドからインク滴を吐出する方法には、種々の方法を適用することができる。すなわち、ピエゾ素子を用いてインク滴を吐出する方式や、インク通路に配置したヒータでインク通路内に泡（バブル）を発生させてインク滴を吐出する方法などを用いることができる。また、インク滴を吐出する代わりに、熱転写などの現象を利用して印刷用紙上にインクドットを形成する方式や、静電気を利用して各色のトナー粉を印刷媒体上に付着させる方式のプリンタを使用することも可能である。
【０１０４】
以上のようなハードウェア構成を有するカラープリンタ２００は、キャリッジモータ２３０を駆動することによって、各色のインク吐出用ヘッド２４４ないし２４７を印刷用紙Ｐに対して主走査方向に移動させ、また紙送りモータ２３５を駆動することによって、印刷用紙Ｐを副走査方向に移動させる。制御回路２６０は、キャリッジ２４０の主走査および副走査の動きに同期させながら、適切なタイミングでノズルを駆動してインク滴を吐出することによって、カラープリンタ２００は印刷用紙上にカラー画像を印刷している。
【０１０５】
尚、カラープリンタ２００にも、制御回路２６０内にはＣＰＵ，ＲＡＭ，ＲＯＭなどが搭載されていることから、コンピュータ１００が行う処理をカラープリンタ２００内で実施することも可能である。このような場合は、デジタルカメラ１２０などで撮影した画像の画像データをカラープリンタ２００に直接供給して、制御回路２６０内で必要な画像処理を実施することにより、カラープリンタ２００から直接画像を印刷することも可能となる。
【０１０６】
Ｃ．第１実施例の画像印刷処理の概要  ：
以下では、上記のようなコンピュータ１００およびカラープリンタ２００が、画像を印刷するために、それぞれの内部で行われる画像処理（画像印刷処理）について説明する。ここでは、理解の便宜を図るため、初めに画像印刷処理の全体像について簡単に説明し、次に、こうした画像印刷処理が可能である原理について説明する。そして最後に、それぞれの処理の詳細な内容について説明する。
【０１０７】
尚、以下では、画像印刷処理の前半部分はコンピュータ１００で実施され、後半部分はカラープリンタ２００で実施されるものとして説明するが、これらの処理をカラープリンタ２００の内部で実施したり、あるいはデジタルカメラ１２０等、画像データを生成する機器の内部で実施することも可能である。もちろん、画像印刷処理の前半部分の処理をデジタルカメラ１２０などで実施して、後半部分の処理をカラープリンタ２００で実施することとしても良い。すなわち、本実施例の画像印刷処理によれば、後ほど詳細に説明するように、前半部分の処理および後半部分の処理をたいへん簡素なものとすることができる。このため、カラープリンタ２００やデジタルカメラ１２０などのように、コンピュータ１００のようには高い処理能力を有していない機器を用いた場合でも、画像印刷処理を迅速に実施することが可能であり、従って、コンピュータ１００を使用せずとも十分に実用的な印刷システムを構成することができる。
【０１０８】
図５は、第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。以下では、図５を参照しながら、画像印刷処理の全体像について簡単に説明する。第１実施例の画像印刷処理を開始すると、先ず初めに、コンピュータ１００が画像データの読み込みを開始する（ステップＳ１００）。ここでは、画像データはＲＧＢカラー画像データであるものとして説明するが、カラー画像データに限らず、モノクロ画像データについても同様に適用することができる。また、カラープリンタに限らず単色プリンタについても同様に適用することが可能である。
【０１０９】
カラー画像データの読み込みに続いて、色変換処理を行う（ステップＳ１０２）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組合せによって表現されているＲＧＢカラー画像データを、印刷のために使用されるインク各色についての階調値の組合せによって表現された画像データに変換する処理である。前述したように、カラープリンタ２００はＣ，Ｍ，Ｙ，Ｋの４色のインクを用いて画像を印刷している。そこで、第１実施例の色変換処理ではＲＧＢ各色によって表現された画像データを、Ｃ，Ｍ，Ｙ，Ｋの各色の階調値によって表現されたデータに変換する。色変換処理は、色変換テーブル（ＬＵＴ）と呼ばれる３次元の数表を参照することで行う。ＬＵＴには、ＲＧＢカラー画像データに対して、色変換によって得られるＣ，Ｍ，Ｙ，Ｋ各色の階調値が予め記憶されている。ステップＳ１０２の処理では、このＬＵＴを参照することにより、ＲＧＢカラー画像データをＣ，Ｍ，Ｙ，Ｋ各色の画像データに迅速に色変換することが可能である。
【０１１０】
色変換処理を終了すると、解像度変換処理を開始する（ステップＳ１０４）。解像度変換処理とは、画像データの解像度を、プリンタ２００が画像を印刷する解像度（印刷解像度）に変換する処理である。画像データの解像度が印刷解像度よりも低い場合は、画素間に新たな画像データを生成し、逆に画像データの解像度が印刷解像度よりも高い場合には、一定の割合でデータを間引くことによって、画像データの解像度を印刷解像度に一致させる処理を行う。
【０１１１】
今日では、高画質化の要請、あるいは大画像化の要請に伴って、解像度変換処理では、画像データをより高解像度の印刷解像度に変換することがしばしば行われている。この場合、補間演算を行って画素間に新たな画像データを生成することも可能であるが、簡便には１つの画素を複数の画素に分割することで、新たな画像データを生成することとしても良い。もちろん、１つの画素を単純に分割して高解像度化する場合、隣接する画素間でより滑らかな階調変化が表現されているわけではないので、実質的な解像度が増加しているわけではなく、見かけ上の解像度が増加したに過ぎない。しかし、ドットを形成して画像を印刷する場合、１つの画素で表現可能な階調数は高々数階調に過ぎず、画像データが表現可能な階調数に対して遙かに少ないことから、この様な解像度変換であっても画質の向上には有効であり、単純に画素を分割して見かけの解像度を高解像度化する解像度変換処理も一般的に行われている。
【０１１２】
以上のようにして解像度を印刷解像度に変換したら、コンピュータ１００は、多値化結果値生成処理を開始する（ステップＳ１０６）。多値化結果値生成処理の詳細な内容は後ほど詳しく説明することとして、ここでは概要のみを説明する。この処理では、互いに所定の位置関係にある画素を所定個数ずつ画素群としてまとめることにより、１つ画像を複数の画素群に分割する。画素群としてまとめられ画素数は、必ずしも全ての画素群が同数である必要はなく、例えば、複数の画素数を規則的に切り換えたり、あるいは画像中での位置に応じて画素群にまとめられる画素数を切り換えることも可能であるが、ここでは理解の便宜から、最も単純な場合として全画素群が同数の画素を有するものとして説明する。
【０１１３】
次いで、以下に説明する第１実施例においては、画素群にまとめられた各画素の画像データに基づいて、画素群を分割するか否かを判断する。そして、分割しない画素群については、画素群内の画像データを代表する階調値（代表階調値）を決定する。一方、分割すると判断した画素群については、画素群を分割して生成した各領域の画像データを代表する階調値を求め、それぞれの領域の代表階調値として決定する。すなわち、画素群の中には、分割されて複数の代表階調値が決定される画素群と、分割されることなく１つだけ代表階調値が決定される画素群とが存在することになる。もっとも、分割するか否かの判断を省略して、画素群を常に分割するものとして扱うことも可能である。この場合は、全ての画素群について複数の代表階調値が決定されることになる。常に複数の代表階調値が得られる場合を基準に考えれば、以下に説明する第１実施例の処理は、１つだけ代表階調値が得られる場合を追加したものと考えることができる。従って、この意味からは、画素群を常に分割する処理の方が単純な処理と見ることもできる。しかし、画素群を常に分割することの技術的な意味を理解するためには、先に、画素群を分割しない場合について理解しておいた方が便宜である。そこで、第１実施例としては、画素群を分割するか否かを判断する実施例について説明し、その後に、第１実施例の変形例として、画素群を常に分割する実施例について説明する。
【０１１４】
画素群あるいは画素群を分割する各領域について代表階調値を決定したら、この代表階調値を多値化することによって多値化結果値に変換する。多値化結果値が示す内容はどのようなものとすることも可能であるが、ここでは画素群内に形成すべきドットの個数を示すデータであるものとする。すなわち、代表階調値は画素群内の各画素の画像データを代表する階調値であるから、代表階調値が大きくなると、それにつれて画素群内に形成されるドットの個数は増加する。従って、画素群の代表階調値から該画素群内に形成するドット個数を決定する処理を、一種の多値化と見ることができ、この場合は、ドットの個数が多値化結果値に相当していることになる。尚、多値化結果値は、ドットの個数に変換することが可能な値であれば良い。すなわち、必ずしもドットの個数そのものではなく、間接的にドットの個数を表す値であっても構わない。
【０１１５】
また、詳細には後述するが、代表階調値を多値化する処理は、代表階調値と多値化結果値とを画素群毎に対応付けた多値化用テーブルを参照することにより、迅速に行うことができる。こうして多値化結果値が得られたらカラープリンタ２００に出力する。ここで、画素群が複数の領域に分割された場合は複数の代表階調値が得られるから、多値化結果値も複数得られている。従って、この様な画素群については、複数の多値化結果値がカラープリンタ２００に出力されることになる。多値化結果値生成処理では、このようにして、各画素についての画像データに基づいて、画素群毎に１つまたは複数の多値化結果値を生成した後、カラープリンタ２００に供給する処理を行う。
【０１１６】
カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵは、コンピュータ１００から多値化結果値を受け取ると、ドット形成有無決定処理を開始する（ステップＳ１０８）。すなわち、カラープリンタ２００は、画像を構成する各画素にドットを形成することによって画像を印刷していることから、画像の印刷に先立って、各画素についてドットを形成するか否かを決定しておく必要がある。そこで、コンピュータ１００から画素群毎に多値化結果値を受け取ると、画素群内の各画素についてドットを形成するか否かを決定する処理を行うのである。
【０１１７】
ここで多値化結果値から画素群内の各画素についてドット形成の有無を決定する手法としては、いわゆる濃度パターン法と呼ばれる手法が知られているが、本実施例のドット形成有無決定処理では、多値化結果値に加えて、画素群毎に設定された順序値を用いてドット形成有無を決定する点で大きく異なっている。この様にして各画素のドット形成の有無を決定しているため、次のような大きな利点を得ることができる。すなわち、一般的な濃度パターン法では、実質的な解像度が、多値化を行った画素群の解像度まで低下してしまい、画質の悪化を招き易い傾向がある。これに対して、本実施例のドット形成有無決定処理では、画素群毎に記憶されている順序値を参照しながらドット形成の有無を決定しているために、画素群の大きさに依存して画質が悪化することがない。更に、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクと呼ばれるディザマトリックスを用いることで実現されるような、ドットが良好に分散した高画質な画像を印刷することが可能となる。本実施例のドット形成有無決定処理の詳細な内容、および、かかる処理を行ってドット形成の有無を決定することで、こうした特性が得られる理由については、後ほど詳しく説明する。
【０１１８】
以上のようにして、画素群内の各画素についてドット形成の有無を決定したら、決定したドット形成の有無に従って、出力媒体上にドットを形成する処理を行う（ステップＳ１１０）。すなわち、図３を用いて説明したように、キャリッジ２４０の主走査および副走査を繰り返しながらインク吐出用ヘッドを駆動してインク滴を吐出することにより、印刷用紙上にインクのドットを形成する。こうしてドットを形成することにより、画像データに対応した画像が印刷されることになる。
【０１１９】
このように、第１実施例の画像印刷処理では、コンピュータ１００からカラープリンタ２００に向かって、多値化結果値を供給するものの、画素毎にドット形成の有無を示すデータは供給していない。画素毎にドット形成の有無を表現することに比べれば、多値化結果値は遙かに少ないデータ量で表現することができることから、このような方法を採用することで、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを供給することが可能となる。
【０１２０】
例えば、各画素に形成可能なドットは１種類であるとする。この場合、各画素はドットが形成されるか否かのいずれかの状態しか取り得ないから画素あたりのデータ長は１ビットとなる。また、１つの画素群には８つの画素がまとめられているとすれば、画素群内の全画素についてドット形成の有無を表現するためには、８ビットのデータ長が必要となる。一方、画素群内に形成されるドットの個数は、０個〜８個のいずれかの９通りしか取り得ない。９通りであれば４ビットあれば表現することができる。従って、画素群の代表階調値をドット個数のデータに多値化しておけば、多値化結果値は４ビットのデータ長で表現可能となる。このように、画素毎にドット形成の有無を表すデータに比べて、多値化結果値は遙かに少ないデータ量で表現することができるので、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを供給することが可能となる。もちろん、画素群を分割した場合には画素群あたり複数の多値化結果値を供給しなければならないが、後述するように、画像データは近接する画素間では近似した階調値を取る傾向があるため、画素群が分割される割合は僅かである。このため、画像全体としてはカラープリンタ２００に供給されるデータ量の増加は僅かなものに過ぎず、迅速に多値化結果値を供給することが可能である。
【０１２１】
加えて、詳細には後述するが、各画素についてのドット形成の有無を適切に決定してやれば、多値化結果値を供給した場合でも、画質が悪化することはない。特に、所定の条件下では、画素毎にドット形成の有無を表すデータを供給した場合と全く同じ結果を得ることが可能である。加えて、画素群内の各画素の画像データに基づいて画素群を分割し、それぞれの領域についての多値化結果値を生成してカラープリンタ２００に供給することができるので、画素群内で画像データが大きく変化している場合でも、画質を低下させることなく画像を印刷することが可能である。
【０１２２】
更に、後述するアルゴリズムを用いれば、多値化結果値を生成する処理や、多値化結果値から各画素についてのドット形成の有無を決定する処理は、極めて簡素な処理によって実現することができ、しかも極めて迅速に実行することが可能である。このため、コンピュータ１００のような高度な処理能力を有する画像処理装置を用いずとも、例えばデジタルカメラ１２０やカラープリンタ２００などの内部で実行することも可能である。こうした場合には、デジタルカメラ１２０で撮影した画像データを直接カラープリンタ２００に供給して、高画質なカラー画像を印刷することも可能となる。
【０１２３】
Ｃ−１．個数データから画素位置を決定可能な原理  ：
以下では、上述した方法を採用した場合、すなわち、画素群に形成するドット個数を示す多値化結果値を、コンピュータ１００からカラープリンタ２００に供給し、この多値化結果値に基づいて、画素群内の各画素についてドット形成の有無を決定した場合でも、画質を悪化させることなく画像を印刷することが可能な原理について説明する。
【０１２４】
説明の都合上、先ず初めに、ディザ法について説明する。ディザ法とは、画像データを画素毎にドット形成の有無を表すデータに変換するために用いられる代表的な手法である。この手法では、ディザマトリックスと呼ばれるマトリックスに閾値を設定しておき、画像データの階調値とディザマトリックスに設定されている閾値とを画素毎に比較して、画像データの階調値の方が大きい画素についてはドットを形成すると判断し、そうでない画素についてはドットを形成しないと判断する。このような判断を画像中の全画素について行えば、画像データを画素毎にドット形成の有無を表すデータに変換することができる。
【０１２５】
図６は、ディザマトリックスの一部を概念的に例示した説明図である。図示したマトリックスには、横方向（主走査方向）に１２８画素、縦方向（副走査方向）に６４画素、合計８１９２個の画素に、階調値１〜２５５の範囲から万遍なく選択された閾値がランダムに記憶されている。ここで、閾値の階調値が１〜２５５の範囲から選択されているのは、本実施例では、画像データが階調値０〜２５５の値を取り得る１バイトデータとしていることに加えて、画像データの階調値と閾値とが等しい場合には、その画素にはドットを形成するものと判断していることによるものである。
【０１２６】
すなわち、ドットが形成されるのは画像データの階調値が閾値よりも大きい画素に限る（すなわち階調値と閾値が等しい画素にはドットは形成しない）とした場合、画像データの取り得る最大階調値と同じ値の閾値を有する画素には、決してドットが形成されないことになる。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最大階調値を除いた範囲とする。逆に、画像データの階調値と閾値が等しい画素にもドットを形成するとした場合、画像データの取り得る最小階調値と同じ値の閾値を有する画素には、常にドットが形成されてしまうことになる。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最小階調値を除いた範囲とする。本実施例では、画像データの取り得る階調値が０〜２５５であり、画像データと閾値が等しい画素にはドットを形成するとしていることから、閾値の取り得る範囲を１〜２５５としておくのである。尚、ディザマトリックスの大きさは、図６に例示したような大きさに限られるものではなく、縦と横の画素数が同じマトリックスも含めて種々の大きさとすることができる。
【０１２７】
図７は、ディザマトリックスを参照しながら、各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成の有無を判断するに際しては、先ず、判断しようとする画素を選択し、この画素についての画像データの階調値と、ディザマトリックス中で対応する位置に記憶されている閾値とを比較する。図７中に示した細い破線の矢印は、画像データの階調値と、ディザマトリックスに記憶されている閾値とを、画素毎に比較していることを模式的に表したものである。例えば、画像データの左上隅の画素については、画像データの階調値は９７であり、ディザマトリックスの閾値は１であるから、この画素にはドットを形成すると判断する。図７中に実線で示した矢印は、この画素にはドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は９７、ディザマトリックスの閾値は１７７であり、閾値の方が大きいので、この画素についてはドットを形成しないと判断する。ディザ法では、こうしてディザマトリックスを参照しながら、画素毎にドットを形成するか否かを判断することで、画像データを画素毎にドット形成の有無を表すデータに変換する。
【０１２８】
図８は、ディザ法を用いて画像データをドット形成の有無を表すデータに変換している様子を示した説明図である。図８（ａ）は、画像データの一部を拡大して示したものであり、図中の小さな矩形は画素を、そして、それぞれの矩形の中に表示された数値は画像データの階調値を表している。図示されているように、画像データは、隣接する画素間では近似する（若しくは同一の）階調値が割り当てられる傾向がある。近年では、高画質化の要請から画像データの解像度は高くなる傾向にあるが、隣接する画素間で近似若しくは同一の階調値が割り当てられる傾向は、画像データの解像度が高くなるほど顕著となっている。更に、前述したように、画像データの解像度を印刷解像度に変換する際に、画素を複数の画素に分割して高解像度化した場合には、同一の画素から分割して生成された画素は全て同じ階調値を有することになる。
【０１２９】
図８（ｂ）は、ディザマトリックスの対応する位置に閾値が設定されている様子を示している。図８（ａ）に示した画像データの階調値と、図８（ｂ）に示したディザマトリックスの閾値とを画素毎に比較することによって、ドット形成の有無を判断する。図８（ｃ）は、こうして画素毎にドット形成の有無を判断した結果を示しており、図中で斜線を付した画素がドットを形成すると判断された画素である。
【０１３０】
ここで、隣接する画素を所定数ずつ画素群としてまとめ、画素群内でドットを形成すると判断された画素の個数を数えることを考える。一例として、主走査方向（図８中では横方向）に４画素分、副走査方向（図８中では縦方向）に２画素分の、合計８画素ずつを画素群としてまとめるものとする。図８（ｄ）は、こうしてまとめられたそれぞれの画素群について、ドットを形成すると判断された画素を数えることによって得られたドット個数を示している。第１実施例の画像印刷処理において、コンピュータ１００からカラープリンタ２００に供給される多値化結果値は、このような画素群毎に得られたドット個数のデータである。ドット個数を示す多値化結果値には、ドットを形成する画素位置に関する情報は含まれていない。しかし、次のようにすれば、ドットの個数から、ドットを形成する画素位置の情報を復元して、画素毎にドット形成の有無を表すデータを生成することができる。
【０１３１】
図９は、ドット個数を示すデータから、画素毎にドット形成の有無を表すデータを生成する様子を示した説明図である。図９（ａ）は、図８で画素群毎に形成するドットの個数を数えて得られた値を表している。また、図９（ｂ）は、図８で画素毎にドット形成の有無を判断するために参照したディザマトリックスを示している。前述したようにディザ法では、画像データの階調値と、ディザマトリックスの対応する画素位置に設定された閾値とを比較して、画像データの階調値の方が大きければ、その画素にはドットを形成すると判断しており、ディザマトリックスの閾値が小さくなるほどドットが形成され易くなる。このことから、ディザマトリックスはドットが形成される画素の順番を表していると考えることができる。
【０１３２】
ディザマトリックスの有するこうした性質に着目すれば、画素群内に形成されるドットの個数から、各画素についてのドット形成の有無を決定することができる。例えば、図９（ａ）に示した一番左上隅の画素群について説明すると、この画素群に形成されるドット個数は３個である。また、図９（ｂ）に示したディザマトリックスを参照すれば、この画素群内では、左上隅にある画素位置すなわち閾値「１」が設定されている画素位置が最もドットが形成され易い画素であると言える。従って、この画素群内で３つ形成されるドットの中の１つは、左上隅の画素に形成されているものと考えることができる。同様にして、残りの２つのドットは、この画素群内で２番目にドットが形成され易い画素（すなわち図９（ｂ）のディザマトリックスで閾値「４２」が設定されている画素）と、３番目にドットが形成され易い画素（すなわち閾値「５８」が設定されている画素）とに形成されるものと考えることができる。
【０１３３】
もちろん、ドット形成の有無は、ディザマトリックスに設定された閾値だけでなく、画像データの階調値によっても影響されるから、画像データの階調値が極端に大きければ、より小さな閾値が設定されている画素よりも先にドットが形成されることも起こり得る。しかし、前述したように画像データには、隣接する画素には近似する（若しくは同一の）階調値が割り当てられる傾向があるから、ほとんどの場合はドットが形成され易い画素（すなわちディザマトリックスに設定された閾値の小さな画素）からドットが形成されると考えることができる。
【０１３４】
図９（ａ）に示した他の画素群についても、同様にして、ドット個数とディザマトリックスの閾値とに基づいて、各画素についてのドット形成の有無を決定することができる。例えば、図９（ａ）の上述した画素群の下にある画素群（左端上から２番目の画素群）については、ドット個数は３個であるから、図９（ｂ）のディザマトリックスを参照すれば、これら３つのドットは、閾値「２２」が設定された画素と、閾値「３３」が設定された画素と、閾値「９１」が設定された画素とに、それぞれ形成されると考えることができる。
【０１３５】
図９（ａ）に示した４つの画素群について、このようにしてドット個数のデータからドットを形成する画素位置を決定すると、図９（ｃ）に示した結果を得ることができる。図９（ｃ）中で、斜線を付して示した画素はドットを形成すると判断された画素である。図９（ｃ）と図８（ｃ）とを比較すれば明らかなように、ドットの個数に基づいて決定したドットの分布は、画素毎に画像データと閾値とを比較して決定したドットの分布と一致している。このことは、ディザマトリックスを参照して画素毎にドット形成の有無を判断し、画素群内に形成されるドットの個数のみが分かれば、画素位置までは分からなくても、ディザマトリックスとドットの個数とに基づいて、各画素のドット形成の有無を適切に決定可能なことを示している。このことから、画素群に形成するドットの個数を示す多値化結果値をコンピュータ１００からカラープリンタ２００に供給した場合でも、カラープリンタ２００側でドット形成の有無を適切に決定することができるので、画質を悪化させることなく画像を印刷することが可能となるのである。
【０１３６】
また、個数データからドットを形成する画素位置を適切に決定するためには、画像データの階調値が画素群内で大きく異なっていなければ良い。前述したように、画像データは隣接する画素間では近似した階調値を有する特性があるから、こうした条件はほとんどの場合に成立しており、従って、ドットの個数を示す多値化結果値をカラープリンタ２００に供給して、多値化結果値からドット形成の有無を決定した場合でも、画質を悪化させることなく画像を印刷することができるのである。
【０１３７】
特に、次の２つの条件が満足される場合には、画像データの階調値とディザマトリックスの閾値とを比較してドット形成の有無を画素毎に判断した結果と、完全に同じドット分布が得られることになる。先ず１つ目の条件は、画素群内で各画素の階調値が同一の値を有することであり、２つ目の条件は、コンピュータ１００側で画素毎にドット形成の有無を判断する際に参照したディザマトリックスと、カラープリンタ２００側で個数データから画素位置を決定するために参照するディザマトリックスとが、同一のマトリックスであることである。また、詳細には後述するが、本実施例の多値化結果値生成処理では、画素群を複数の領域に分割して多値化結果値を生成することが可能であり、この場合は、分割した領域内で各画素の階調値が同一の値となっていればよい。例え、画素群内の各画素が同一の階調値を有していない場合でも、画素群を複数の領域に分割することで、領域内の各画素の階調値が同一になる場合も多く存在する。このため、画素群を分割して多値化結果値を生成可能とすることで、画質を改善することが可能となる。
【０１３８】
尚、図７で説明したディザ法においては、ディザマトリックスに設定された閾値と画像データとの階調値とを比較して、いずれの値が大きいかによってドット形成の有無を判断している。これに対して、ドットの個数から画素毎のドット形成の有無を決定する場合には、図９を用いて説明したように、画素群内でドットが形成される順番がドットの個数よりも小さいか、あるいはドットの個数と同じ画素についてはドットを形成すると判断し、それ以外の画素についてはドットを形成しないと判断している。すなわち、画素位置を決定するためには、閾値の値まで必要なわけではなく、画素群内でドットが形成され易い順序（換言すれば、ドットが形成される順番）が分かっていれば良い。このことから、図９（ｂ）に示すディザマトリックスの代わりに、図９（ｄ）に示すような画素群内の各画素について、ドットが形成される順番を示す値（順序値）が設定されたマトリックス（本明細書中では、このようなマトリックスを順序値マトリックスと呼ぶものとする）を記憶しておき、画素群毎に順序値マトリックスを参照しながら、各画素についてのドット形成の有無を決定することも可能である。
【０１３９】
加えて、このように、ディザマトリックスに基づいてドット形成の有無を決定する場合、ディザ法を適用してドット形成の有無を決定した時とほぼ同等のドット分布を得ることができる。このことから、ディザマトリックスの特性を適切に設計しておくことで、ドットの分布を制御することが可能である。例えば、いわゆるブルーノイズマスク特性を有するマトリックスや、あるいはグリーンノイズマスク特性を有するマトリックスを使用すれば、画像データを画素群単位で処理しているにも関わらず、これらディザマトリックスの特性に依存したドット分布の画像を得ることができる。以下では、この点につき、若干補足して説明する。
【０１４０】
図１０は、ブルーノイズマスク特性を有するディザマトリックス、およびグリーンノイズマスク特性を有するディザマトリックスについて、マトリックスに設定されている閾値の空間周波数特性を概念的に例示した説明図である。図１０では、表示の都合から、横軸には空間周波数の代わりに周期を取って表示している。言うまでもなく、周期が短くなるほど、空間周波数は高くなる。また、図１０の縦軸は、それぞれの周期での空間周波数成分を示している。尚、図示されている周波数成分は、ある程度変化が滑らかとなるように平滑化された状態で示されている。
【０１４１】
図中の実線は、ブルーノイズマスクの空間周波数成分を概念的に示している。図示されているように、ブルーノイズマスクは、１周期の長さが２画素以下の高い周波数領域に最も大きな周波数成分を有している。ブルーノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、ブルーノイズマスクに基づいてドット形成の有無を判断した場合には、ドットが互いに離れた状態で形成される傾向にある。また、図中の破線は、グリーンノイズマスクの空間周波数成分を概念的に示している。図示されているように、グリーンノイズマスクは、１周期の長さが２画素から十数画素の中間周波数領域に最も大きな周波数成分を有している。グリーンノイズマスクの閾値は、このような空間周波数特性を有するように設定されていることから、グリーンノイズマスクに基づいてドット形成の有無を判断した場合には、数ドット単位で隣接してドットが形成されながら、全体としてはドットの固まりが分散した状態で形成される傾向にある。
【０１４２】
従って、このようなブルーノイズマスク特性、あるいはグリーンノイズマスク特性を有するディザマトリックスに基づいて、画素群の個数データを決定したり、あるいは、画素位置を決定してやれば、画素群単位で処理しているにも関わらず、ブルーノイズマスク特性あるいはグリーンノイズマスク特性を反映した分布となるように、ドットを形成することが可能となる。
【０１４３】
また、以上の説明では、図９に示したように、ディザマトリックスに基づいて生成されて、複数種類の順序値マトリックスを予め記憶しておき、画素群の個数データを受け取ると、その画素群に対応した順序値マトリックスを用いて、各画素についてのドット形成の有無を決定するものとして説明した。しかし、より簡便には次のようにしてドット形成の有無を決定しても良い。すなわち、予め複数の順序値マトリックスを記憶しておき、個数データを受け取ると、画素群毎にランダムに選択した１の順序値マトリックスを用いて、各画素についてのドット形成の有無を決定しても良い。更に、より簡便には、順序値マトリックスを１組だけ記憶しておき、このマトリックスを用いて各画素についてのドット形成の有無を決定することも可能である。
【０１４４】
Ｃ−２．第１実施例の多値化結果値生成処理  ：
以下では、図５に示した第１実施例の画像印刷処理において、画像データから多値化結果値を生成する処理（ステップＳ１０６）について説明する。図１１は、第１実施例の多値化結果値生成処理の流れを示すフローチャートである。ここでは、多値化結果値生成処理はコンピュータ１００で実施されるものとして説明するが、後述するように、多値化結果値生成処理は簡素な処理とすることができるので、カラープリンタ２００あるいはデジタルカメラ１２０などの内部で実施することも可能である。以下、フローチャートに従って説明する。
【０１４５】
第１実施例の多値化結果値生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成する（ステップＳ２００）。ここでは、主走査方向に４画素分、副走査方向に２画素分の合計８つの画素を画素群にまとめるものとする。尚、画素群としてまとめる画素は、このように矩形状に縦横の位置が揃った画素である必要はなく、互いに隣接し且つ所定の位置関係にある画素であれば、どのような画素を画素群としてまとめても良い。
【０１４６】
次いで、画素群の分類番号を決定する（ステップＳ２０２）。分類番号の意味するところについては後述するが、ここでは画素群を識別するために用いられる番号と考えておく。画素群の分類番号は、後述する方法を用いれば極めて簡便に決定することができる。
【０１４７】
次いで、画素群を分割するか否かを、画素群にまとめた各画素の階調値に基づいて判断し（ステップＳ２０４）、画素群を分割しないと判断した場合は（ステップＳ２０４：ｎｏ）、画素群の代表階調値を決定する（ステップＳ２０６）。一方、画素群を分割すると判断した場合は（ステップＳ２０４：ｙｅｓ）、画素群を分割して生成した各領域について代表階調値を決定する（ステップＳ２１２）。画素群を分割する態様、すなわち、画素群を分割して生成する領域の個数や、それぞれの領域の大きさは種々に設定することができるが、ここでは、理解の便宜のために最も単純な態様として、画素群を左右の２つの領域に等分するものとして説明する。
【０１４８】
図１２は、画素群にまとめられた各画素の階調値に基づいて、画素群を分割するか否かを判断して、代表階調値を決定する様子を概念的に示した説明図である。図中に示した大きな矩形は画素群を表しており、画素群内の小さな正方形は画素を表している。また、画素を表す正方形の中に表示された数字は、その画素に割り当てられた画像データの階調値を表している。図１２（ａ）の左側に示すように、画素群内の各画素の階調値が同じであれば、その画素群は分割しないと判断して、各画素の階調値を画素群の代表階調値とする。図１２（ａ）の右側には、各画素の階調値を画素群の代表階調値として決定した様子を概念的に表している。
【０１４９】
前述したように、画像データは近接する画素間では近似した階調値を取る傾向があるから、画素群内の各画素の階調値は図１２（ａ）のような分布となることが多いと考えられる。また、画像データの解像度を印刷解像度に変換する処理において、１つの画素を複数の画素に分割することで解像度を高くした場合には、ほとんどの画素群でこのような階調値の分布を取るものと考えられる。更に、解像度を変換する際に、１つの画素を主走査方向（図上では左右方向）に４分割し、副走査方向（図上では上下方向）に２分割することで高解像度化した場合には、全ての画素群は必ず、図１２（ａ）に示す階調値分布を取ることになる。
【０１５０】
これに対して、図１２（ｂ）に示すように、階調値が画素群の中央で２つに分かれ、左側の領域と右側の領域とで異なっている場合は、画素群を左右２つの領域に分割すればよい。そして、この場合は、それぞれの領域の階調値を代表階調値とすればよい。図１２（ｂ）に示した例では、画素群の左側の領域の階調値は「９７」であり右側の領域の階調値は「１３５」であるから、階調値９７、１３５をそれぞれの領域の代表階調値とする。また、このような場合でも、左右の領域で階調値に大きな差がない場合（例えば、階調差が所定値以下である場合）は、画素群を分割しないと判断することも可能である。この場合の代表階調値としては、左右いずれかの領域の階調値を用いることができる。あるいは階調値の平均値を代表階調値としたり、画素群の中で最も画素数の多い階調値を代表階調値としてもよい。
【０１５１】
また、画像データの解像度を印刷解像度に変換する際に、少なくとも主走査方向については解像度を２倍に変換することがしばしば行われている。このような解像度変換が行われると、１つの画素から主走査方向には２つの画素が生成されることになるので、たとえ、画素群内の各画素の階調値が異なる値を取る場合でも、階調値の分布は、図１２（ｂ）に示したように、画素群の中央で左右に分かれたような分布になることが多いと考えられる。特に、主走査方向だけでなく、副走査方向についても解像度を２倍にするような変換が行われた場合、１つの画素が縦横２列ずつの４画素に変換されることになるから、仮に、画素群内に異なる階調値が含まれているとしても、必ず図１２（ｂ）に示すような階調値分布を取ることになる。
【０１５２】
もちろん、画素群内に階調値分布が存在する場合、必ず図１２（ｂ）に示した分布を取るとは限らない。例えば、１つの画素から主走査方向に並ぶ２つの画素を生成するような解像度変換を行った場合でも、元になる画素の階調値が副走査方向に異なっていれば、図１２（ｃ）に示すような階調値分布となることがある。ここでは理解の便宜を図るために、本実施例では画素群を分割する態様（分割パターン）は、画素群を左右２つの領域に等分するパターンのみを取るものとしているから、このような階調値分布の場合は、図１２（ｂ）に示したパターンで分割すると判断し、左側の領域の代表階調値については、領域内に含まれる階調値のいずれかを選択してやればよい。尚、このとき階調値１３５を選択した場合は、左右いずれの領域の代表階調値も階調値１３５となるので、これら領域を統合することができ、結局、画素群を分割しないと判断した場合と同様に取り扱うことができる。
【０１５３】
あるいは、左側の領域には階調値９７、１３５の２つの階調値が含まれているから、これら階調値の平均値を代表階調値としても良い。平均値の算出に際しては、単純に階調値の平均を算出しても良いし、あるいは階調値毎に画素数に相当する重みを付けて平均することとしても良い。図１２（ｃ）の右側には、このようにして左側の領域の代表階調値を決定した様子を概念的に表している。
【０１５４】
もちろん、印刷解像度への変換は、画素を分割して高解像度化する変換に限らず、補間演算を行って画素間に新たな階調値を生成する場合や、更には所定の割合で画素を間引くことにより低解像度化する場合もある。これらの場合には、画素群内の階調値分布は更に種々の分布を取るものと考えられる。図１２（ｄ）ないし図１２（ｆ）には、こうした種々の階調値分布を取る場合に、画素群の分割有無を判断して、代表階調値を決定する様子が例示されている。
【０１５５】
例えば、図１２（ｄ）に示されているように、階調値がちょうど中央で左右の領域に分かれるわけではないものの、大まかにはほぼ中央で分かれている場合は、画素群を左右２つの領域に等分することができる。あるいは、図１２（ｅ）に示されているように、画素群内の一部の画素では異なる階調値を取るものの、他の画素群については同じ階調値となっている場合には、画素群を分割しないものと判断することができる。更には、図１２（ｆ）に示されているように、階調値分布が傾斜を持っているような場合には、画素群を左右２つの領域に分割することができる。このとき各領域内での階調値の平均値を、それぞれの領域の代表階調値とすることができる。あるいは、簡便には、各領域から選択した画素の階調値を代表階調値としても良い。もっとも、画素群内の階調値分布に傾斜がある場合でも、傾斜が小さい場合（例えば、画素群内の階調差が所定値以下の場合）には、画素群を分割しないと判断してもよい。
【０１５６】
また、より一般的には、画素群内にエッジがあるか否かを判断して、エッジがあれば画素群を分割すると判断しても良い。エッジ有無の判定に際しては、例えば、画素群内での階調差が所定値以上であれば、エッジがあると判断することができる。あるいは、いわゆる微分型の画像フィルターを作用させて、微分値の絶対値が所定値以上となる画素を含む画素群についてはエッジがあると判断することも可能である。
【０１５７】
図１１に示したステップＳ２０４、Ｓ２０６、Ｓ２１２においては、以上のようにして、画素群内の各画素の階調値に基づいて画素群を分割するか否かを判断し、画素群を分割しないと判断した場合（Ｓ２０４：ｎｏ）には画素群の代表階調値を決定し（Ｓ２０６）、画素群を分割すると判断した場合（Ｓ２０４：ｙｅｓ）には、画素群を分割して生成した各領域の代表階調値を決定する処理を行う（Ｓ２１２）。
【０１５８】
こうして、画素群の分類番号を決定し、画素群について１つまたは複数（本実施例では２つ）の代表群階調値を決定したら、後述する多値化用テーブルを参照することによって、代表階調値を多値化結果値に変換する（ステップＳ２０８またはステップＳ２１４）。詳細には後述するが、多値化用テーブルには、画素群の分類番号と代表階調値との組合せに対応付けて、適切な多値化結果値が予め記憶されている。従って、分類番号と代表階調値とが求まっていれば、多値化用テーブルを参照することで直ちに多値化結果値を求めることが可能である。また、画素群が分割されている場合には、代表階調値が複数（本実施例では２つ）得られていることに対応して、その画素群については複数の多値化結果値が得られることになる。
【０１５９】
以上のようにして多値化結果値を求めたら、画素群について得られた多値化結果値を記憶する（ステップＳ２１０）。画素群が分割されている場合には、各領域について得られた多値化結果値を記憶する（ステップＳ２１６）。多値化結果値を記憶するためのデータ形式については後述する。次いで、画像データの全画素について処理を終了したか否かを判断し（ステップＳ２１８）、未処理の画素が残っていれば（ステップＳ２１８：ｎｏ）、ステップＳ２００に戻って新たな画素群を生成して、続く一連の処理を繰り返す。こうした操作を繰り返し、全画素についての処理が終了したと判断されたら（ステップＳ２１８：ｙｅｓ）、得られた多値化結果値をカラープリンタ２００に出力して（ステップＳ２２０）、図１１に示す第１実施例の多値化結果値生成処理を終了する。
【０１６０】
Ｃ−３．分類番号の決定方法  ：
ここで、上述した第１実施例の多値化結果値生成処理中で、画素群の分類番号を決定する方法について説明する。以下では、先ず初めに、画素群の分類番号を付与する考え方を説明した後、分類番号を付与する具体的な方法について説明する。
【０１６１】
図１３は、画素群毎の分類番号を決定するための考え方を示した説明図である。図１３（ａ）は、画像の一番左上隅の箇所において、横方向に４画素、縦方向に２画素の合計８画素をまとめることによって画素群を１つ生成した様子を概念的に示したものである。
【０１６２】
前述したように、ディザ法では画素に割り当てられた画像データの階調値と、ディザマトリックスの対応する位置に設定されている閾値とを比較して、画素毎にドット形成の有無を判断している。一方、本実施例では、隣接する所定数の画素を画素群としてまとめているから、ディザマトリックスに設定されている閾値についても、画素群に対応する所定数ずつまとめてブロックを生成することにする。図１３（ｂ）は、図６に示したディザマトリックスに設定されている閾値を、横方向に４つ、縦方向に２つずつまとめて複数のブロックを生成した様子を示している。図６に示したディザマトリックスは、横方向（主走査方向）に１２８画素分、縦方向（副走査方向）に６４画素分の合計８１９２画素分の閾値が設定されているから、これら閾値を横方向に４つ、縦方向に２つずつブロックにまとめれば、ディザマトリックスは縦横それぞれ３２個ずつ、合計１０２４個のブロックに分割されることになる。
【０１６３】
今、図１３（ｂ）に示すように、これらブロックに１番〜１０２４番までの通し番号を付しておく。そして、画像データにディザマトリックスを適用した時に、各画素群の位置に適用されるブロックの通し番号によって、画素群を分類してやる。例えば、図１３（ｃ）に示したように、画像の一番左上隅にある画素群には、図１３（ｂ）中の通し番号１番のブロックが適用されるから、この画素群は分類番号１番の画素群に分類する。
【０１６４】
以上が、画素群を分類する際の基本的な考え方である。図１１のステップＳ２０２では、このように、画像データにディザマトリックスを適用したときに、画素群に適用されるブロックの通し番号によって各画素群を分類し、対応する分類番号を決定して画素群に付与する処理を行う。
【０１６５】
次に、画素群の分類番号を決定するための具体的な方法について説明する。図１４は、画素群の分類番号を決定する方法を示した説明図である。図１４（ａ）は、画像中で生成された１つの画素群を表している。ここでは、この画素群に着目して分類番号を決定する方法について説明する。尚、以下では、分類番号を決定するために着目している画素群を、着目画素群と呼ぶことにする。
【０１６６】
今、画像の一番左上隅にある画素を原点に取って、原点からの主走査方向および副走査方向への画素数によって画素位置を表すものとする。また、画素群の位置は、画素群の左上隅にある画素の画素位置によって表すものとする。図１４（ａ）では、着目画素群の位置を示す画素に黒丸を付して表示している。この画素の画素位置が（Ｘ，Ｙ）であったとする。すると、各画素群の大きさは、主走査方向に４画素、副走査方向に２画素としているから、
Ｘ＝４ｎ＋１、  Ｙ＝２ｍ＋１
となるようなｎ、ｍ（ここで、ｎ，ｍは０以上の正整数）が存在する。換言すれば、着目画素群の左側にはｎ個の画素群が並んでおり、着目画素群の上側にはｍ個の画素群が並んでいることになる。
【０１６７】
ここで、前述したように画素群は、画像データにディザマトリックスを適用したときに、着目画素群に適用されるブロックの通し番号に基づいて分類することとしているから（図１３参照のこと）、ディザマトリックスを移動させながら画像データに適用する方法によって、同じ画素群でも異なった分類番号に分類されることになる。実際には、ディザマトリックスを移動させながら画像データに適用する方法はどのような方法でも構わないが、ここでは説明の便宜から、最も単純な方法すなわちディザマトリックスを横方向に移動させるものとして説明する。図１４（ｂ）には、ディザマトリックスを横方向に少しずつ移動させながら、繰り返し画像データに適用している様子が概念的に示されている。
【０１６８】
図１４（ｃ）は、図１４（ｂ）に示すようにディザマトリックスを繰り返して用いながら、図１４（ａ）に示した着目画素群にディザマトリックスを適用している様子を概念的に表している。このようにディザマトリックスを移動させていくと、ディザマトリックス中のいずれかのブロックが、着目画素群に適用されることになる。ここでは、着目画素群には、ディザマトリックス中でＭ行Ｎ列目のブロックが適用されたものとする。すると、図１４（ａ）に示したように着目画素群の左側にはｎ個の画素群があり、上側にはｍ個の画素群があるから、Ｎとｎ、およびＭとｍとの間には、それぞれ
Ｎ＝ｎ−ｉｎｔ（ｎ／３２）×３２＋１
Ｍ＝ｍ−ｉｎｔ（ｍ／３２）×３２＋１
の関係が成り立っている。ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す演算子である。すなわち、ｉｎｔ（ｎ／３２）は、ｎ／３２の計算結果に対して小数点以下の数値を切り捨てることによって得られた整数値を表している。このように、着目画素群の位置が分かれば、図１４（ｄ）に表示した上述の関係式から数値ＭおよびＮを求めて、ディザマトリックス中でＭ行Ｎ列目にあるブロックのブロック番号を、その着目画素群の分類番号としてやればよい。もっとも実際には、Ｍ，Ｎの値は、図１４（ｄ）に示すような計算を実行せずとも、極めて簡便に求めることができる。以下、この点について説明する。
【０１６９】
図１５は、着目画素群の分類番号を決定する方法を具体的に示した説明図である。着目画素群の位置を（Ｘ，Ｙ）として、Ｘ，Ｙが１０ビットで表現されているものとする。図１５（ａ）は、数値Ｘを表す１０ビットの２進数データを概念的に示している。図では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０１７０】
図１４を用いて前述したように、着目画素群の左側にある画素群の個数ｎは、数値Ｘから１を減算して４で除算すれば得ることができる。ここで、４での除算は、２ビット分だけ右方向にシフトさせることで実施することができるから、数値Ｘから１を減算して、得られた２進数データを右方向に２ビット分だけビットシフトさせればよい。更に、数値Ｘは任意の値を取るのではなく、４ｎ＋１の形式で表現可能な数値しか取り得ないから、１を減算せずに、単に２進数データを右方向に２ビット分だけビットシフトさせるだけで、画素群の個数ｎを得ることができる。図１５（ｂ）は、こうして数値Ｘをビットシフトして得られた個数ｎの２進数データを概念的に表している。
【０１７１】
次いで、ｉｎｔ（ｎ／３２）を算出する。すなわち、個数ｎを３２で除算して、小数点以下の数値を切り捨てる操作を行う。３２による除算は、２進数データを右方向に５ビット分だけビットシフトさせることで実行可能であり、また、データを整数形式で扱っていれば、小数点以下の数値は自動的に切り捨てられてしまう。結局、ｉｎｔ（ｎ／３２）の２進数データは、個数ｎの２進数データを、単に右方向に５ビット分だけビットシフトさせることで得ることができる。図１５（ｃ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）の２進数データを概念的に表している。
【０１７２】
こうして得られたｉｎｔ（ｎ／３２）に３２を乗算する。３２による乗算は、２進数データを５ビット分だけ左方向にビットシフトすることで実施することができる。図１５（ｄ）は、個数ｎをビットシフトして得られたｉｎｔ（ｎ／３２）×３２の２進数データを概念的に表している。
【０１７３】
次いで、個数ｎからｉｎｔ（ｎ／３２）×３２を減算すれば、前述の数値Ｎを得ることができる。個数ｎの２進数データ（図１５（ｂ）参照）とｉｎｔ（ｎ／３２）×３２の２進数データ（図１５（ｄ）参照）とを比較すれば明らかなように、これら２進数データは、上位の５ビットは共通しており、減算する側の数値の下位５ビットは全て「０」となっている。従って、減算される側の数値（個数ｎ）の下位５ビットをそのまま抜き出せば、求める数値Ｍを得ることができる。すなわち、図１５（ｂ）に示した２進数データと、図１５（ｆ）に示すようなマスクデータとの論理積を求めるだけで、極めて簡便に数値Ｎを得ることが可能である。あるいは、図１５（ａ）に示した着目画素群の位置を示す数値Ｘの２進数データと、図１５（ｇ）のようなマスクデータとの論理積を求めることにより、４番目〜８番目のビットデータを直接抜き出すことによっても、数値Ｎを得ることができる。
【０１７４】
図１５では、着目画素群の位置を示す座標値（Ｘ，Ｙ）の数値Ｘから、ディザマトリックス中でのブロック位置を示す数値Ｎを求める場合について説明したが、全く同様にして、ブロック位置を示す数値Ｍも数値Ｙから求めることができる。結局、着目画素群の位置が分かれば、２進数データから特定のビット位置のデータを抜き出すだけで、着目画素群がディザマトリックス中で何行何列目のブロックに対応するかを知ることができ、このブロックの通し番号によって、着目画素群の分類番号を迅速に決定することが可能なのである。
【０１７５】
Ｃ−４．多値化用テーブル  ：
図１１を用いて前述したように、第１実施例の多値化結果値生成処理のステップＳ２０６あるいはステップＳ２１４では、こうして得られた画素群の分類番号と代表階調値とから、多値化用テーブルを参照することによって代表階調値を多値化する。以下では、代表階調値を多値化するために参照される多値化用テーブルについて説明する。
【０１７６】
図１６は、画素群の分類番号と代表階調値とから多値化結果値を取得するために参照される第１実施例の多値化用テーブルを概念的に示した説明図である。図示されているように、第１実施例の多値化用テーブルには、画素群の分類番号と代表階調値との組合せに対応付けて、適切な多値化結果値が予め記憶されている。図１３を用いて前述したように、ここでは画素群は分類番号１番〜１０２４番のいずれかに分類される。また、画像データを１バイトデータとすれば、代表階調値は０〜２５５のいずれかの階調値を取り得るから、分類番号と代表階調値との組合せは、１０２４×２５６＝２６２１４４の組合せが存在する。多値化用テーブルには、この全ての組合せに対して多値化結果値が設定されている。尚、本実施例では、多値化結果値は、分類番号および代表階調値をそれぞれパラメータとするテーブルに記憶されているものとしているが、分類番号と代表階調値とが決まれば、対応する多値化結果値が１つ決定されるようなものであれば、必ずしもテーブルの形態で多値化結果値を記憶しておく必要はない。
【０１７７】
図１７は、画素群の分類番号と代表階調値との組合せに応じて、適切な多値化結果値を決定する様子を概念的に示した説明図である。一例として、画素群の分類番号が１番であるとする。分類番号１番の画素群には、ディザマトリックス中で通し番号１番のブロックが適用される。図１７（ａ）には、通し番号１番のブロックに設定されている閾値が示されている。
【０１７８】
今、代表群階調値が「０」であるとする。この場合は、画素群中の全画素が階調値０の画像データを有するものとする。そして、各画素の階調値（すなわち「０」）と図１７（ａ）に示した閾値とを比較して、階調値の方が大きい（若しくは同じ）画素については、ドットを形成するものと判断する。画素群の全画素についてこうした判断を行った後、ドットの個数を数えて、得られた個数を多値化結果値とする。図１７（ａ）に示したいずれの閾値も、階調値０よりは大きいから、ドットを形成すると判断される画素は存在しない。そこで、分類番号が１番で代表階調値が「０」の組合せについては、多値化結果値０を設定する。図１７（ｂ）は、このようにして、代表群階調値０に対する多値化結果値として「０」が決定される様子を概念的に表したものである。
【０１７９】
図１７（ｃ）は、分類番号１番、代表階調値１に対する多値化結果値を決定する様子を概念的に示している。この場合は、画素群内の全画素が階調値１の画像データを有するものとして、各画素の階調値を図１７（ａ）に示した閾値と比較する。その結果、画素群内で左上隅にある画素では、画像データの階調値と閾値とが等しくなってドットを形成すると判断され、他の画素についてはドットを形成しないと判断される。図１７（ｃ）に表示された斜線の付された丸印は、その画素にドットを形成すると判断されたことを表している。この結果、分類番号が１番で代表階調値が「１」の組合せについては、多値化結果値１が設定される。
【０１８０】
こうした操作を、０〜２５５までの全ての代表階調値について行うことにより、多値化結果値を決定していく。例えば、代表階調値が２の場合は、図１７（ｄ）に示したように、多値化結果値は「１」となり、代表階調値が「１００」の場合は、図１７（ｅ）に示すように多値化結果値は「３」となる。図１７（ｆ）および図１７（ｇ）には、代表階調値が「２００」の場合および代表階調値が「２５５」の場合に、それぞれの多値化結果値タを決定する様子が概念的に示されている。図１６に示した多値化用テーブルの中で、分類番号１に該当する行（表中に示された横方向の欄）の部分に、それぞれの代表階調値に対応付けて設定されている多値化結果値は、このようにして決定された値である。こうした操作を、１番〜１０２４番までの全ての分類番号について行えば、最終的に、全ての分類番号と全ての代表階調値とのあらゆる組合せに対して、多値化結果値を決定することができる。図１６に示した多値化用テーブルには、分類番号と代表階調値との組合せに応じて、対応する多値化結果値が予め設定されている。
【０１８１】
Ｃ−５．多値化結果値のデータ形式  ：
図１１を用いて前述したように、第１実施例の多値化結果値生成処理のステップＳ２１０あるいはステップＳ２１６では、得られた多値化結果値を記憶しておき、ステップＳ２２０では、記憶しておいた多値化結果値をカラープリンタ２００に向かって出力する。画素群が分割されていない場合は、多値化結果値は画素群毎に１つずつ出力され、画素群が分割されている場合は、画素群毎に複数（本実施例では２つずつ）出力されることになる。ここで、図１６に示したように、多値化結果値を得るために参照する多値化用テーブルは、画素群が分割されていない場合でも分割された場合でも同じ多値化用テーブルを参照しており、従って、画素群の分割有無によらず、同じような多値化結果値が得られることになる。そこで、多値化結果値が一体の画素群について得られたものか、分割された画素群の各領域について得られたものかを区別可能とするために、図１１のステップＳ２１０あるいはステップＳ２１６では、得られた多値化結果値を次のようなデータ形式で記憶している。
【０１８２】
図１８は、多値化結果値を記憶するためのデータ形式の一例を示した説明図である。図示した例では、多値化結果値の先頭に、画素群が分割されたか否かを示すビットを付加した状態で、多値化結果値を記憶する。例えば、画素群を分割しない場合は、図１８（ａ）に示すように、多値化結果値の先頭に、値「０」の１ビットのデータを付加しておく。ここでは画素群は８つの画素から構成されており、多値化結果値は画素群内に形成されるドットの個数を表すものとしているから、前述したように１つの多値化結果値は４ビットあれば足りる。従って、分割しない画素群については、先頭の１ビットを加えた合計５ビットのデータとして多値化結果値が記憶されることになる。
【０１８３】
また、画素群を分割した場合は、図１８（ｂ）に示すように、値「１」の１ビットのデータに続けて、各領域の多値化結果値を順番に記憶していく。本実施例では、画素群の分割パターンは、左右２つの領域に分割するパターンのみとしているから、先頭のビットが「１」であれば、左右の領域に対応した４ビットの多値化結果値が２つ続くことになる。従って、分割した画素群については、合計９ビットのデータとして多値化結果値が記憶されることになる。尚、画素群の分割パターンとしては、必ずしも２つの領域に分割するパターンに限られるものではなく、より多くの領域に分割することも可能である。例えば画素群を４つの領域に分割する場合には、分割したことを示す１ビットのデータに続いて、それぞれの領域の多値化結果値を示す４ビットのデータが４つ続くことになり、合計すると１７ビットのデータとして多値化結果値が記憶されることになる。
【０１８４】
図１９は、多値化結果値を記憶するデータ形式の他の一例を示した説明図である。図示されているように、画素群を分割した場合にだけ、分割したことを示すデータとともに多値化結果値を記憶することとしても良い。すなわち、分割しない画素群については、図１９（ａ）に示すように、多値化結果値だけをそのまま記憶する。一方、分割した画素群については、図１９（ｂ）に示すように、分割したことを表す特別なデータに続けて、各領域の多値化結果値を記憶しても良い。分割したことを表す特別なデータ（以下では、この様なデータをＥＳＣコードと呼ぶことにする）としては、多値化結果値と区別することが可能であればどのようなデータを用いることもできる。例えば本実施例では、多値化結果値は４ビットデータであり１６通りの状態を表現することができるが、多値化結果値は実際には９通りの状態しか取り得えないから、５通りの状態が使われずに余っている計算になる。そこで、使われていない状態の１つを選択して、画素群が分割されていることを表すＥＳＣコードとして使用することができる。図１９に示した例では、４ビット全てが「１」となっているデータ（１０進数表示では、「１５」）をＥＳＣコードとして使用している。
【０１８５】
図２０は、多値化結果値をＥＳＣコードとともに記憶する様子を示した説明図である。例えば、図２０（ａ）に示すように、３つの画素群があるとして、中央の画素群が分割されているものとする。また、左端の画素群について得られた多値化結果値は「２」、右端の画素群について得られた多値化結果値は「６」、中央の画素群についてはそれぞれ多値化結果値「２」および「６」が得られたものとする。このような多値化結果値を記憶する場合、先ず左端の画素群は分割されていないから、多値化結果値「２」をそのまま記憶する。次の画素群は分割されているから、先ず画素群が分割されていることを表すＥＳＣコード「１５」を記憶し、続いて左の領域について得られた多値化結果値「２」と、右の領域について得られた多値化結果値「６」を記憶する。すなわち、分割された画素群については、分割されていない画素群３つ分のデータ長となる。次いで、右端の画素群についての多値化結果値を記憶する。この画素群は分割されていないから、得られた多値化結果値「６」をそのまま記憶すればよい。
【０１８６】
多値化結果値を記憶する際には、図１８に示したデータ形式と、図１９に示したデータ形式との、いずれの形式を用いることも可能であるが、使用するデータ形式によって次のような得失がある。先ず、分割された画素群の多値化結果値に着目すれば、図１８のデータ形式を用いた方が図１９に示したデータ形式を用いた場合よりも、少ないデータ長で多値化結果値を記憶することができる。すなわち、図１８のデータ形式によれば、各領域の多値化結果値の他に、画素群が分割されていることを表す１ビットのデータを加えればよいのに対して、図１９のデータ形式では、各領域の多値化結果値に４ビットのＥＳＣコードを付加する必要がある。このため、分割する画素群については、図１８のデータ形式を採用した方が、画素群１つあたり３ビットずつデータ量を節約することができる。一方、分割しない画素群については、図１８のデータ形式では、画素群の多値化結果値に加えて画素群が分割されていないことを表す１ビットのデータを加える必要があるのに対して、図１９のデータ形式では画素群の多値化結果値をそのまま記憶すればよい。従って、分割しない画素群については、図１９のデータ形式を採用した方が、画素群１つあたり１ビットずつデータ量を節約することができる。このことから、分割される画素群が多い場合は、図１８のデータ形式を用いて多値化結果値を記憶した方がデータ量を節約することができ、逆に分割される画素群が少ない場合は、図１９のデータ形式を用いた方がデータ量を節約できることが分かる。前述したように、画像データは近接する画素間では近似した階調値を取ることが多く、分割される画素群の比率はさほど多くはないから、通常は図１９に示すデータ形式を採用した方が、少ないデータ量で多値化結果値を記憶することが可能である。
【０１８７】
Ｃ−６．第１実施例のドット形成有無決定処理  ：
次に、前述した第１実施例の画像印刷処理において、画素群内の各画素についてのドット形成の有無を、多値化結果値に基づいて決定する処理（図５のステップＳ１０８）について説明する。図２１は、第１実施例のドット形成有無決定処理の流れを示すフローチャートである。かかる処理は、カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵによって実行される処理である。以下では、フローチャートに従って、画素群内の各画素についてのドット形成の有無を、多値化結果値に基づいて決定する処理について説明する。
【０１８８】
ドット形成有無決定処理を開始すると、先ず初めに、処理対象とする画素群を１つ選択し（ステップＳ３００）、その画素群の多値化結果値を取得する（ステップＳ３０２）。前述したように、画素群が分割されている場合は複数の多値化結果値が生成されているから、この様な画素群を選択した場合には、これら複数の多値化結果値を取得する。
【０１８９】
次いで、選択した画素群に対応する順序値マトリックスを読み込む処理を行う（ステップＳ３０４）。順序値マトリックスとは、画素群内の各画素について、ドットが形成される順番を設定したマトリックスである。図９を用いて前述したように、ディザマトリックスの各画素に設定されている閾値は、画素群内で各画素にドットが形成される順番を表していると考えることができるから、ディザマトリックスに基づいて、画素群に対応する順序値マトリックスを生成することができる。
【０１９０】
図２２は、ディザマトリックスに基づいて順序値マトリックスを生成している様子を示した説明図である。順序値マトリックスの生成に際しては、先ず、ディザマトリックスを画素群と同じ大きさに分割する。図２２（ａ）は、図６に示したディザマトリックスを分割した様子を概念的に表している。図６に示したディザマトリックスは、主走査方向に１２８画素分、副走査方向に６４画素分の閾値が設定されており、また画素群の大きさは主走査方向に４画素、副走査方向に２画素としているから、ディザマトリックスは１０２４個のブロックに分割されることになる。そして、画素群に分類番号を付与したときと同様に、これらブロックに１番から１０２４番までの通し番号を付けておく。
【０１９１】
図２２（ｂ）の左半分には、通し番号１番のブロックに設定されている閾値を示している。前述したように、ディザマトリックスに設定されている閾値が小さい画素ほどドットが形成され易くなるから、図２２（ｂ）に示したブロックでは、閾値「１」が設定されている画素が最もドットが形成され易く、閾値「４２」が設定されている画素が２番目にドットが形成され易い。３番目にドットが形成され易い画素は閾値「５８」が設定されている画素となる。このようにして、ブロック内の各画素に設定されている閾値に基づいてドットが形成される順番を決定することができ、順序値マトリックスを生成することができる。同様にして、通し番号２番のブロックについても、順序値マトリックスを生成することができる。図２２（ｃ）には、通し番号２番のブロックから生成された順序値マトリックスが示されている。こうして、通し番号１番から１０２４番までの全ブロックについて順序値マトリックスを生成して記憶しておく。カラープリンタ２００のメモリには、このような順序値マトリックスが記憶されている。そして、図２１のステップＳ３０４では、処理対象として選択した画素群が分類番号１番の画素群である場合には、通し番号１番のブロックから生成した順序値マトリックスを読み込んでやり、分類番号２番の画素群であれば、通し番号２番のブロックから生成された順序値マトリックスを読み込む処理を行う。
【０１９２】
このようにして、選択した画素群の多値化結果値と順序値マトリックスとを読み込んだら、今度は、画素群に含まれる各画素の中から対象とする画素を１つずつ選択しながら、多値化結果値と順序値マトリックスとに基づいてドット形成の有無を決定していく（ステップＳ３０６、Ｓ３０８、Ｓ３１０）。以下では、図２３を参照しながら、画素毎にドット形成の有無を決定する様子について説明する。
【０１９３】
図２３は、多値化結果値と順序値マトリックスとに基づいて、画素群内の各画素についてドット形成の有無を決定する様子を概念的に示した説明図である。図２３（ａ）は、選択した画素群について読み込まれた多値化結果値を示している。ここでは、画素群は２つの領域に分割されており、左の領域については多値化結果値３が、右の領域については多値化結果値６が読み込まれている。図２３（ｂ）は、選択した画素群に対応して読み込まれた順序値マトリックスを示している。
【０１９４】
ドット形成の有無を決定するに際しては、先ず初めに、画素群の中から対象とする画素を１つ選択する（図２１のステップＳ３０６）。ここでは、画素群内の左上隅にある画素を選択したものとする。次いで、順序値マトリックスを参照することにより、対象とする画素の順序値、すなわち画素群内でドットが形成される順番を取得する（ステップＳ３１０）。図２３（ｂ）に示した順序値マトリックスを参照すれば、画素群内で左上隅にある画素の順序値は「１」であることが分かる。次に、この画素に対応する多値化結果値を選択する（図２１のステップＳ３１０）。図２３（ａ）に示したように、この画素群については２つの多値化結果値が読み込まれているが、対象とする画素は左上隅の画素であるから、左側の領域に対応する多値化結果値「３」を選択する。もちろん、画素群が分割されておらず、多値化結果値が１つしか読み込まれていない場合は、この結果値を選択すればよい。
【０１９５】
こうして、対象とする画素の順序値および多値化結果値が得られたら、変換テーブルを参照することによって、ドット形成の有無を決定する（図２１のステップＳ３１２）。図２４は、対象画素についてのドット形成の有無を決定するために参照される変換テーブルを概念的に示した説明図である。ここでは、画素群は８つの画素から構成されているから、順序値は１〜８までの値を取り、個数データは０〜８までの値を取るとしているから、変換テーブルには、これらを組合せた７２通りの組合せに対応付けて、ドット形成の有無を示す値が設定されている。図２４に示した例では、ドットを形成する組合せに「１」が、ドットを形成しない組合せには「０」が設定されている。
【０１９６】
画素群の左上隅の画素については、順序値は「１」であり、多値化結果値は「３」であるから、変換テーブルの該当する箇所にはドット形成することを意味する値「１」が設定されているから、この画素についてはドットを形成すると判断することができる。こうして、１つの画素についてドット形成の有無を決定したら、画素群内の全画素について決定したか否かを判断し（ステップＳ３１４）、未だ決定していない画素が残っている場合は（ステップＳ３１４：ｎｏ）、ステップＳ３０６に戻って新たな画素を１つ選択した後、選択した画素について同様の操作を行うことによりドット形成の有無を決定する（ステップＳ３０８、Ｓ３１０、Ｓ３１２）。
【０１９７】
図２３（ａ）に示した画素群は、左側の領域についての多値化結果値「３」と、右側の領域についての多値化結果値「６」とが読み込まれている。また、図２３（ｂ）の順序値マトリックスに示されているように、この画素群の左側の領域には、「１」、「４」、「６」、「８」の４つの順序値が設定されている。従って、画素群の左側にある各画素については、図２４に示した変換テーブルの中から、破線の丸印を付した箇所に設定されている値、すなわち、多値化結果値「３」と順序値「１」の組合せ、または多値化結果値「３」と順序値「４」の組合せ、多値化結果値「３」と順序値「６」、多値化結果値「３」と順序値「８」のそれぞれの組合せに設定されている値を読み出すことにより、ドット形成の有無を決定することができる。同様に、画素群の右側の領域については、多値化結果値は「６」であり、順序値は「１」、「４」、「６」、「８」の４つの値が設定されている。従って、画素群の右側にある各画素については、図２４に示した変換テーブルの中から、破線の四角を付した箇所に設定されている値を読み出すことにより、ドット形成の有無を決定することができる。
【０１９８】
このようにして、選択した画素群に含まれる全画素についてドット形成の有無を決定したと判断したら（図２１のステップＳ３１４：ｙｅｓ）、今度は、全画素群について、上述した操作を行ったか否かを判断する（ステップＳ３１６）。そして、未処理の画素群が残っている場合は（ステップＳ３１６：ｎｏ）、ステップＳ３００に戻って新たな画素群を１つ選択して、上述した一連の操作を行う。こうした操作を繰り返し、全画素群についてドット形成の有無を決定したと判断されたら（ステップＳ３１６：ｙｅｓ）、図２１に示した第１実施例のドット形成有無決定処理を終了して、図５の画像印刷処理に復帰する。
【０１９９】
以上、第１実施例の画像印刷処理中で行われる多値化結果値生成処理（図５のステップＳ１０６）、およびドット形成有無決定処理（図５のステップＳ１０８）の内容について詳しく説明した。上述した多値化結果値生成処理では、所定数の画素をまとめて画素群を生成し、その画素群について分類番号と代表階調値を決定した後、多値化結果値を生成する。上述したように、画素群の分類番号および代表階調値は容易に求めることができ、多値化用テーブルを参照することによって、極めて容易に多値化結果値を得ることができる。こうして得られた多値化結果値は、画素毎にドット形成の有無を表すデータに比べて、データ量が遙かに小さくなっているため、コンピュータ１００からカラープリンタ２００に向かって極めて迅速にデータを出力することができる。
【０２００】
また、画素群にまとめられた各画素の階調値基づいて、画素群を分割するか否かを判断し、分割すると判断された画素群については、複数の多値化結果値を生成する。このように、画素群を分割すると、その画素群については出力すべき多値化結果値が増えた分だけ、カラープリンタ２００に供給すべきデータ量が増加するが、前述したように、画像データは近接した画素間では近似した階調値を有する傾向があるため、実際には、分割される画素群の比率は小さく、従って、データ量の増加も僅かである。結局、上述した多値化結果値生成処理では、多値化結果値の生成および出力を迅速に実行することが可能となる。
【０２０１】
また、上述したドット形成有無決定処理では、コンピュータ１００から迅速に供給された多値化結果値を受け取ると、順序値マトリックスを参照して画素群内の各画素についての順序値を取得する。次いで、多値化結果値と順序値とに基づいて変換テーブルを参照することにより、各画素についてのドット形成の有無を決定する。このように、順序値マトリックスおよび変換テーブルを参照しながら決定すれば、画素群内の各画素についてのドット形成有無を迅速に決定することが可能である。加えて、分割された画素群については、分割された各領域の多値化結果値を受け取って、それぞれの領域内の各画素についてドット形成の有無を決定することができる。このため、画素群内で階調値が変化している場合にも、階調値の分布に応じて適切にドット形成の有無を決定することができるので、高画質な画像を得ることが可能となる。
【０２０２】
更に、多値化結果値は多値化用テーブルを参照することで生成可能なことから、比較的単純な処理で生成することができる。同様に、各画素についてのドット形成の有無も、順序値マトリックスや変換テーブルを参照することで決定可能なことから、比較的単純に決定することができる。このため、いずれの処理についても、コンピュータ１００のような高いデータ処理能力を備えていない機器を用いた場合でも、十分に実用的な速度で処理することが可能である。
【０２０３】
また、上述した画像印刷処理では、画素群を分割するか否かに関わらず、多値化結果値を生成する際に参照する多値化用テーブルや、ドット形成有無を決定する際に参照する順序値マトリックスは同じものを参照することができる。更に、画素群を分割する場合でも、後述する変形例のように、分割してどのような領域を生成するかに関わらず、多値化用テーブルや順序値マトリックスは同じものを参照することができる。このため、画素群の分割の有無、あるいは分割の態様毎に、多値化用テーブルおよび順序値マトリックスを記憶しておく必要がないので、多大なメモリ量が必要となることがない。従って、上述した画像印刷処理は、大きなメモリ容量を有しない機器においても実行することが可能である。
【０２０４】
Ｃ−７．第１実施例の変形例  ：
以上に説明した第１実施例の画像印刷処理には、種々の変形例が存在している。以下では、これら変形例について簡単に説明する。
【０２０５】
（１）第１の変形例  ：
以上に説明した第１実施例においては、画素群の分割パターンは１つだけしか無いものとして説明した。しかし、複数の分割パターンを用意しておき、画素群内の階調値分布に応じて適切なパターンを選択することとしても良い。以下では、こうした第１の変形例について説明する。
【０２０６】
図２５は、第１実施例の第１の変形例において用いられる分割パターンを例示した説明図である。図示されているように、ここでは７種類の分割パターンが用意されている。図２５（ａ）に示した分割パターン１は、上述した実施例のように画素群を左右２つの領域に等分するパターンである。図２５（ｂ）に示した分割パターンは、画素群を上下２つの領域に等分する。また、次の４つの分割パターンは、画素群を縦横に２等分して４つの領域を生成し、その中から選択した１つの領域と他の領域とに２分割するパターンとなっている。具体的には、図２５（ｃ）に示した分割パターンは、画素群を、左上隅の領域と他の領域とに２分割するパターンである。また、図２５（ｄ）に示した分割パターンは、右上隅の領域と他の領域とに分割し、図２５（ｅ）に示したパターンは、左下隅の領域と他の領域とに分割し、図２５（ｆ）のパターンは、右下隅の領域と他の領域とに分割する。結局、これら４つの分割パターンは、画素群を異なる大きさの領域に分割することになる。また、最後に示した図２５（ｇ）の分割パターンは、画素群内の４つの領域の中から斜め方向に選択した２つの領域と、これに交差する他の領域とに画素群を分割するパターンとなっている。
【０２０７】
このように図２５に示した第１の変形例においては、７種類の分割パターンを備えており、画素群の多値化結果値を次のようにして生成する。以下では、第１実施例の多値化結果値生成処理の説明で用いた図１１のフローチャートを流用しながら、簡単に説明する。
【０２０８】
第１実施例の第１の変形例において、多値化結果値を生成するに際して、先ず画素群を生成して分類番号を決定する（図１１のステップＳ２００、Ｓ２０２相当）。次いで、画素群内の階調値分布に基づいて、画素群を分割するか否か、そして分割する場合は、これら７つの分割パターンの中から何れのパターンで分割するかを判断する（ステップＳ２０４相当）。画素群を分割しないと判断した場合は、前述した第１実施例と同様にして多値化結果値を得る。すなわち、画素群の代表階調値を算出し、多値化用テーブルを参照することにより代表階調値を多値化して、得られた多値化結果値を記憶する（ステップＳ２０６，Ｓ２０８、Ｓ２１０相当）。
【０２０９】
一方、画素群を分割すると判断した場合は（ステップＳ２０４：ｙｅｓに相当）、同時に、図２５に示した何れのパターンで分割するかについても判断する。次いで、画素群を分割する各領域について代表階調値を決定した後、多値化用テーブルを参照することにより、それぞれの代表階調値を多値化結果値に変換する（ステップＳ２１２、Ｓ２１４相当）。そして、得られた多値化結果値を記憶するに際しては、先ず初めに、分割パターンを示すＥＳＣコードを記憶し、ＥＳＣコードに続けて、各領域について得られた多値化結果値を記憶する。
【０２１０】
図２６は、第１実施例の第１の変形例において、分割パターンを示すＥＳＣコードを例示した説明図である。多値化結果値は、前述したように４ビットデータで表現されており、１０進数表示で「０」〜「１５」の値を表現可能である。このうち、「９」〜「１５」までの値がＥＳＣコードに割り当てられており、残りの「０」〜「８」までの値は多値化結果値に割り当てられている。ここで、多値化結果値が「０」〜「８」までの値となっているのは、画素群が８つの画素で構成されており、各画素はドットが形成されるか否かの２つの状態しか取り得ないとしていることに対応したものである。また、ＥＳＣコードが「９」〜「１５」までの値となっているのは、「０」〜「８」の多値化結果値を表すために４ビット必要となり、表現可能な「０」〜「１５」の中で、多値化結果値に用いられない「９」〜「１５」の７つ値をＥＳＣコードに割り当てたためである。そして、ＥＳＣコード「１５」は、図２５（ａ）に示した分割パターン１に割り当てられており、ＥＳＣコード「１４」は分割パターン２に割り当てられ、ＥＳＣコード「１３」は分割パターン３に、ＥＳＣコード「１２」は分割パターン４に、ＥＳＣコード「１１」は分割パターン５に、ＥＳＣコード「１０」は分割パターン６に、ＥＳＣコード「９」は分割パターン７に、それぞれ割り当てられている。
【０２１１】
第１の変形例においては、分割した画素群についての多値化結果値を記憶するに際して、先ず分割パターンを示すＥＳＣコードを記憶し、続けて各領域について得られた多値化結果値を記憶する（図１１のステップＳ２１６相当）。例えば、画素群が図２５（ｂ）に示す分割パターン２で分割されていた場合は、この分割パターンに対応するＥＳＣコード「１４」に続けて、それぞれの領域の多値化結果値を記憶することになる。
【０２１２】
また、第１の変形例のドット形成有無決定処理では、このよう多値化結果値を受け取ると、次のようにして画素群内の各画素についてのドット形成有無を決定する。以下では、第１実施例のドット形成有無決定処理を示した図２１のフローチャートを流用しながら、簡単に説明する。先ず、処理対象とする画素群を選択して、選択した画素群についての多値化結果値を取得する（図２１のステップＳ３００、Ｓ３０２相当）。ここで、選択した画素群が分割されている場合は、分割パターンを示すＥＳＣコードと、画素群を分割する各領域についての多値化結果値とを取得する。すなわち、多値化結果値として読み込んだ値が「９」〜「１５」である場合は、多値化結果値ではなく画素群の分割パターンを示すＥＳＣコードであり、各領域についての多値化結果値はＥＳＣコードに続いて記憶されていると判断して、これら多値化結果値を読み込んでやる。
【０２１３】
次いで、画素群に対応する順序値マトリックスを読み込んだ後（ステップＳ３０４相当）、画素群の中から対象画素を１つずつ選択して（ステップＳ３０６相当）、順序値マトリックスに設定されている順序値と対象画素の多値化結果値を読み込み（ステップＳ３０８、Ｓ３１０相当）、変換テーブルを参照することにより対象画素についてのドット形成の有無を決定する（ステップＳ３１２相当）。こうした操作を画素群内の全画素について繰り返す（ステップＳ３１４相当）。１つの画素群についての処理を終了したら、全ての画素群について処理を終了したか否かを判断し（Ｓ３１６相当）、全画素群について処理を行ったと判断されたら、第１の変形例のドット形成有無決定処理を終了する。
【０２１４】
以上に説明した第１実施例の第１の変形例によれば、画素群にまとめられた各画素の階調値分布に応じて画素群を適切に分割することができるので、更に高画質な画像を得ることができる。また、画素群の分割パターンを増やした場合でも、分割した画素群の多値化結果値を出力するために要するデータ量や、多値化結果値から各画素についてのドット形成有無を決定するための手間は増加していない。従って、前述した第１実施例の画像印刷処理に比べて画質が向上しているにも関わらず、第１実施例の処理と同様に、迅速に画像を出力することが可能となる。
【０２１５】
（２）第２の変形例  ：
以上に説明した各種の実施例では、画素群内の各画素の階調値に基づいて画素群を分割するか否かを判断し、画素群を分割する場合にだけ、領域毎に多値化結果値を生成して、ドット形成の有無を決定した。しかし、初めから画素群を常に分割することを前提として、実際には一体として処理されることのないような、大きな画素群を生成することとしても良い。
【０２１６】
一例として、前述した解像度変換処理（図５のステップＳ１０４）において、次のような解像度変換が行われた場合を考える。画像データの解像度を主走査方向および副走査方向ともに２倍の解像度に変換することとして、１つの画素を縦横にそれぞれ２分割することにより、合計４つの画素を生成したものとする。このような場合は、これら４つの画素を画素群としてまとめれば、画素群内の各画素は同じ階調値を有することになる。従って、画素群の多値化結果値を生成して各画素のドット形成有無を決定することで、画質を全く劣化させることなく画像を印刷することが可能である。
【０２１７】
ここで、第１実施例の第２の変形例においては、これら４つの画素（すなわち、主走査方向および副走査方向いずれも２画素ずつ）を画素群としてまとめるのではなく、主走査方向に４画素ずつ、副走査方向に２画素ずつ、合計８つの画素を画素群としてまとめる。そして、これら画素群が、常に、左右２つの領域に分割されているものとして、領域毎に上述した多値化結果値生成処理、およびドット形成有無決定処理を行うのである。
【０２１８】
多値化用テーブルや順序値マトリックスについての前述した設定方法から明らかなように、画素群に含まれる画素の数が異なれば、多値化用テーブルや順序値マトリックスも異なったものを用意する必要がある。しかし、画素群は８つの画素から構成しておき、画素群が常に左右２つの領域に分割されるものとして処理すれば、画素群に８つの画素が含まれている場合についての多値化用テーブルや順序値マトリックスをそのまま使用して、実質的には、４画素ずつ画素群にまとめた場合と同様な処理を行うことができる。すなわち、画素群に４つの画素が含まれている場合の多値化用テーブルや順序値マトリックスを、新たに設定する必要がない。
【０２１９】
また、こうしたことは画素を４つずつ画素群にまとめる場合に限られるものではない。例えば、画素を２つずつ画素群にまとめる場合や、異なる個数の画素を画素群にまとめる場合であっても、同様なことが成り立ち、それぞれの場合について専用の多値化用テーブルや順序値マトリックスを設定する必要がない。
【０２２０】
加えて、こうした第１実施例の第２の変形例によれば、多値化用テーブルのデータ量を低減することも可能となる。例えば、前述した第１実施例の多値化用テーブルは、図１６に示したように、１０２４個の画素群と２５６通りの代表階調値との組合せ毎に、多値化結果値が設定されている。多値化結果値は０〜８の９通りの値を取り得るから、個々の多値化結果値は４ビットのデータとなる。従って、１つの多値化用テーブルは、１Ｍビットのデータ量となる。
【０２２１】
一方、画素群が４つの画素から構成されているとした場合、画素群の数は２０４８個と、２倍に増加する。また、多値化結果値は０〜４の５通りの値を取り得るから、個々の多値化結果値は３ビットと、データ長が若干減少するものの、結局、１つの多値化用テーブルのデータ量は、１．５Ｍビットと、１．５倍に増加してしまう。換言すれば、画素群が４つの画素から構成されているとして多値化用テーブルを設定すると、１つのテーブルを記憶するために１．５Ｍビットのデータ量が必要になるのに対して、画素群が８つの画素から構成されているものとして、画素群を常に分割して処理することにすれば、多値化用テーブルを記憶するために要するデータ量を、１Ｍビットと減少させることが可能となるのである。
【０２２２】
Ｄ．第２実施例  ：
以上に説明した第１実施例では、カラープリンタ２００で形成可能なドットは１種類であるものとして説明した。しかし、今日では、画質を向上させることを目的として、大きさの異なるドットや、インク濃度の異なるドットなど、多種のドットを形成可能なプリンタ（いわゆる多値ドットプリンタ）が広く使用されている。本願の発明は、こうした多値ドットプリンタに適用した場合にも大きな効果を得ることができる。以下では、第２実施例として、本願発明を多値ドットプリンタに適用した場合について説明する。
【０２２３】
Ｄ−１．第２実施例の画像印刷処理の概要  ：
第２実施例の画像印刷処理は、フローチャートについては、図５に示した第１実施例の画像印刷処理と同様である。以下では、図５のフローチャートを流用しながら、第２実施例の画像印刷処理の概要について簡単に説明する。
【０２２４】
第２実施例の画像印刷処理を開始すると、先ず初めに、コンピュータ１００で画像データを読み込んだ後、色変換処理を行う（図５のステップＳ１００およびステップＳ１０２相当）。次いで、解像度変換処理を行って、画像データの解像度を印刷解像度に変換した後（ステップＳ１０４相当）、多値化結果値生成処理を行って画素群の代表階調値を多値化結果値に変換する（ステップＳ１０６相当）。
【０２２５】
前述したように、第１実施例では、カラープリンタ２００が形成可能なドットは１種類であるものとしており、多値化結果値は、画素群の画素群内に形成されるドット個数を表していた。これに対して第２実施例では、カラープリンタ２００は、大きさの異なる３種類のドット、すなわち大ドット、中ドット、小ドットを形成可能である。このことと対応して、第２実施例の多値化結果値は、画素群内に形成されるこれら各種ドットの個数の組合せを表すものとする。そして、第２実施例の多値化結果値生成処理では、画素群の代表階調値を、各種ドットの個数の組合せを表す多値化結果値に変換する処理を行う。また、画素群を分割すると判断した場合には、分割して生成された各領域について多値化結果値を決定する。第２実施例の多値化結果値生成処理の詳細については後述する。
【０２２６】
カラープリンタ２００の制御回路２６０に内蔵されたＣＰＵは、コンピュータ１００から供給された多値化結果値を受け取ると、ドット形成有無決定処理を開始する（図５のステップＳ１０８相当）。詳細には後述するが、第２実施例のドット形成有無決定処理では、多値化結果値を、大ドット、中ドット、小ドットの個数を示す中間的なデータに一旦変換した後、画素群内の各画素について、各種ドットの形成有無を判断する処理を行う。
【０２２７】
こうして、大中小の各種ドットについてドット形成の有無を決定したら、決定したドット形成の有無に従って、印刷媒体上にドットを形成する（図５のステップＳ１１０相当）。その結果、画像データに対応した画像が印刷されることになる。
【０２２８】
Ｄ−２．第２実施例の多値化結果値生成処理  ：
次に、上述した第２実施例の画像印刷処理において、画素群についての、あるいは画素群内の各領域についての代表階調値を多値化して多値化結果値を生成する処理について説明する。後述するように、第２実施例の多値化結果値生成処理においても、画素群の分類番号および代表階調値から多値化用テーブルを参照することにより、極めて容易に生成することができる。こうしたことが可能である理由を説明するために、先ず初めに、画素群内に形成される大中小ドットの個数を、ディザ法を用いて決定する処理について簡単に説明する。その後、かかる処理を踏まえた上で、第２実施例の多値化結果値生成処理の詳細な内容について説明する。
【０２２９】
Ｄ−２−１．ディザ法を用いた大中小ドットの形成個数の決定処理  ：
図２７は、画素群内に形成される大ドット、中ドット、小ドットの個数を、ディザ法を適用して決定する処理の流れを示すフローチャートである。尚、ディザ法を適用して大中小の各ドットの形成有無を決定する処理の詳細については、特許３２９２１０４号に開示されている。すなわち、図２７に示した処理は、特許３２９２１０４号に開示された手法を画素群単位で行うものと見ることができる。大中小ドットの個数を決定する場合も、処理を開始すると先ず初めに、互いに隣接する所定数の画素をまとめて画素群を形成する（ステップＳ４００）。ここでは、前述した実施例と同様に、主走査方向に４画素、副走査方向に２画素の合計８つの画素を画素群としてまとめるものとする。
【０２３０】
次いで、画素群の中からドット形成の有無を判断するべく、処理対象とする画素を１つ選択して（ステップＳ４０２）、選択した処理画素について、大ドット、中ドット、小ドットの形成有無を判断する（ステップＳ４０４）。大中小ドットの形成有無は次のようにして判断する。
【０２３１】
図２８は、選択した１つの画素についてハーフトーン処理を行うことにより、大ドット、中ドット、小ドットの形成有無を判断する処理の流れを示すフローチャートである。大中小ドットのハーフトーン処理を開始すると、先ず初めに処理対象とする画素についての画像データを、大ドット、中ドット、小ドットの各ドットについての密度データに変換する（ステップＳ４５０）。ここで、密度データとは、ドットをどの程度の密度で形成するかを表すデータである。密度データは、大きな階調値となるほどドットが高い密度で形成されることを表している。例えば、密度データの階調値「２５５」は、ドットの形成密度が１００％、すなわち全ての画素にドットが形成されることを表しており、密度データの階調値「０」は、ドットの形成密度が０％、すなわちいずれの画素にもドットが形成されないことを表している。こうした密度データへの変換は、ドット密度変換テーブルと呼ばれる数表を参照することによって行うことができる。
【０２３２】
図２９は、画像データの階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。図示されているように、ドット密度変換テーブルには、色変換によって得られた画像データの階調値に対して、小ドット・中ドット・大ドットの各ドットについての密度データが設定されている。画像データが階調値「０」近傍の領域では、中ドット・大ドットの密度データはいずれも階調値「０」に設定されている。小ドットの密度データは、画像データの階調値が大きくなるにつれて増加して行くが、画像データがある階調値に達すると今度は逆に減少し始め、代わりに中ドットの密度データが増加し始める。画像データの階調値が更に増加して、ある階調値に達すると、小ドットの密度データが階調値「０」となり、中ドットの密度データが減少し始めて、代わりに大ドットの密度データが少しずつ増加していく。図２８のステップＳ４５０では、このドット密度変換テーブルを参照しながら、画像データの階調値を、大ドットの密度データ、中ドットの密度データ、小ドットの密度データに変換する処理を行う。
【０２３３】
このようにして、処理対象とする画素について、大中小各ドットの密度データが得られたら、先ず初めに大ドットについての形成有無を判断する（図２８のステップＳ４５２）。かかる判断は、大ドットの密度データと、処理対象としている画素の対応する位置に設定されているディザマトリックスの閾値とを比較することによって行う。そして、密度データの方が大きい場合は処理対象の画素には大ドットを形成するものと判断される。その結果、大ドットを形成することになった場合は、ステップＳ４５４において「ｙｅｓ」と判断され、ハーフトーン処理を抜けて図２７に示したドット個数決定処理に復帰する。
【０２３４】
逆に、大ドットの密度データよりも閾値の方が大きければ、ステップＳ４５２において、処理対象の画素には大ドットは形成されないと判断される。判断の結果、大ドットは形成されない場合は（ステップＳ４５４：ｎｏ）、今度は中ドットについて形成有無を判断する処理を開始する。中ドットの形成有無の判断には、大ドットの密度データと中ドットの密度データとを加算して、中ドット用の中間データを算出する（ステップＳ４５６）。そして、得られた中ドット用の中間データと、ディザマトリックスの閾値とを比較することにより、中ドットの形成有無を判断する（ステップＳ４５８）。そして、中ドット用の中間データの方が大きい場合は処理対象の画素には中ドットを形成するものと判断される。その結果が、中ドットを形成することになった場合は、ステップＳ４６０において「ｙｅｓ」と判断されるので、ハーフトーン処理を抜けて図２７のドット個数決定処理に復帰する。
【０２３５】
逆に、中ドット用の中間データよりも閾値の方が大きかった場合は、ステップＳ４５８において、処理対象の画素には中ドットを形成しないと判断される。判断の結果、中ドットも形成されない場合は（ステップＳ４６０：ｎｏ）、今度は小ドットについて形成有無を判断する処理を開始する。小ドットの形成有無の判断には、中ドット用の中間データと小ドットの密度データとを加算して、小ドット用の中間データを算出する（ステップＳ４６２）。そして、得られた小ドット用の中間データと、ディザマトリックスの閾値とを比較することにより、小ドットの形成有無を判断する（ステップＳ４６４）。その結果、小ドット用の中間データの方が大きい場合は処理対象の画素には小ドットを形成するものと判断し、逆に、小ドット用の中間データよりも閾値の方が大きい場合には、いずれのドットも形成されないものと判断する。以上のような処理を行えば、処理対象としている画素について、大ドット、中ドット、小ドットのいずれのドットを形成するか、若しくは、いずれのドットも形成しないかを判断することができるので、図２８に示したハーフトーン処理を抜けて図２７のドット個数決定処理に復帰する。
【０２３６】
上述した処理を行いながら大中小の各ドットの形成有無を判断する様子について、図３０を参照しながら補足して説明する。図３０は、画素群内の各画素について、ディザ法を適用しながら大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。ここでは、説明が煩雑となることを避けるために、画素群内の全画素が同じ階調値を有しており、従って、大中小各ドットの密度データも同じ階調値を有しているものとする。図３０（ａ）は、画素群内の各画素について得られた大中小ドットの密度データを示しており、いずれの画素も、大ドットの密度データが「２」、中ドットの密度データが「９０」、小ドットの密度データが「３２」であったものとする。
【０２３７】
図３０（ｂ）は、ディザマトリックス中で、画素群の対応する位置に記憶されている閾値を表している。大ドットの形成有無を判断する際には、大ドットの密度データと、これら閾値とを比較する。ここでは、いずれの画素についても、大ドットの密度データは「２」であるとしているから、大ドットを形成すると判断される画素は、閾値「１」が設定された画素だけである。図３０（ｂ）には、大ドットが形成されると判断された画素には、細かい斜線を付して表示している。その他の画素については、中ドットか小ドットのどちらかが形成されるか、若しくはいずれのドットも形成されないかのいずれかであると考えられる。そこで、中ドットの形成有無を判断する。
【０２３８】
中ドットの形成有無の判断に際しては、大ドットの密度データ「２」と中ドットの密度データ「９０」とを加算して中ドット用の中間データを算出し、得られた中間データ「９２」とディザマトリックスの閾値とを比較する。その結果、閾値「４２」が設定された画素と、閾値「５８」が設定された画素の２つの画素にのみ、中ドットが形成されるものと判断される。図３０（ｃ）には、中ドットが形成されると判断された画素には、少し細かい斜線を付して表示している。そして、大ドットも中ドットも形成されない画素については、小ドットが形成されるか、ドットが形成されないかのいずれかであると考えられる。そこで、中ドット用の中間データ「９２」に小ドットの密度データ「３２」を加算して、小ドット用の中間データを算出し、得られた中間データ「１２４」とディザマトリックスの閾値とを比較する。その結果、閾値「１０９」が設定された画素にのみ、小ドットが形成されるものと判断される。図３０（ｄ）には、小ドットが形成されると判断された画素には、粗い斜線を付して表示している。
【０２３９】
図２７に示したドット個数決定処理のステップＳ４０２〜Ｓ４０６では、以上のようにして画素群内の各画素について中間データを算出しながら、大中小の各ドットについての形成有無を判断していく。こうして、画素群内の全画素について判断を終了したら（ステップＳ４０６：ｙｅｓ）、画素群内に形成される大ドット、中ドット、小ドットの個数を決定する（ステップＳ４０８）。図３０に例示した画素群については、大ドット１個、中ドット２個、小ドット１個となる。
【０２４０】
こうして、大中小の各ドットのドット個数を取得したら、画像の全画素について以上の処理を行ったか否かを判断する（ステップＳ４１０）。そして、未処理の画素が残っている場合は、ステップＳ４００に戻って続く一連の処理を繰り返し、画像の全画素について処理を終了したと判断されたら、図２７に示したディザ法によるドット個数決定処理を終了する。その結果、画像データは複数の画素群に分割され、各画素群に形成される大ドット、中ドット、小ドットの個数が得られることになる。図３１は、画素群毎に大ドット、中ドット、小ドットの形成個数が得られた様子を概念的に示した説明図である。
【０２４１】
Ｄ−２−２．第２実施例の多値化結果値生成処理の内容  ：
第２実施例の多値化結果値生成処理は、以上に説明したディザ法を用いて大中小各ドットの形成有無を判断する処理を基礎としており、画素群内の各画素が何れも代表階調値を有するものとして、代表階調値を大中小各ドットの個数を示す値に多値化する処理を行う。すなわち、第２実施例の多値化結果値は、画素群内に形成される各種ドットの個数の組合せを表している。そこで、先ず、第２実施例の多値化結果値と、画素群内に形成される各種ドットの個数の組合せとの対応関係について説明しておく。
【０２４２】
図３２は、第２実施例の多値化結果値と、画素群内に形成される各種ドットの個数の組合せとの対応関係を示した説明図である。第２実施例においては、画素群内に形成される大ドット、中ドット、小ドットの個数の組合せは、全部で１６５通り存在しており、それぞれの組合せ１つずつに多値化結果値が対応付けられている。ここで、１つに画素に形成し得るドットの種類は大ドット、中ドット、小ドットの３種類であり、画素群には８つの画素が含まれているから、１つの画素群に形成し得るドット個数の組合せは、単純に考えると３の８乗（＝６５６１）通りにもなってしまう。しかし、実際には図３２に示したように１６５通りの組合せしか存在しない。これは、次のような理由によるものである。
【０２４３】
画素群内の各画素には、大ドット、中ドット、小ドットのいずれのドットも形成され得るが、１つの画素に複数のドットが形成されることはないから、ドット個数の合計が画素群内の画素数（上述した実施例では８個）を越えることはない。従って、これら大中小ドットの個数の組合せは、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態の中から重複を許して８回選択するときの組合せの数に等しくなるから、
４Ｈ８  （＝４＋８−１Ｃ８）
によって求められ、１６５通りの組合せが存在していることになる。ここで、ｎＨｒは、ｎ種類の物の中から重複を許してｒ回選択したときに得られる組合せの数（重複組合せ数）を求める演算子である。また、ｎＣｒは、ｎ種類の物の中から重複を許さずにｒ回選択したときに得られる組合せの数を求める演算子である。
【０２４４】
１６５通りであれば、８ビットあれば表現することができるから、第２実施例の多値化結果値は８ビットのデータとなっている。大中小の３種類のドットを形成可能とした場合、各画素は、大中小いずれかのドットを形成するか、何れのドットも形成しないかの４つの状態を取り得るから、これらの状態を表現しようとすると画素あたり２ビットが必要となる。画素群には８つの画素があるから、画素群内の各画素がいずれの状態を取るかを表すためには１６ビット必要となる。各画素のドット形成の有無を出力する代わりに多値化結果値を出力することとすれば、データ量を半減させることができる計算となる。
【０２４５】
図３３は、第２実施例における多値化結果値生成処理の流れを示すフローチャートである。前述したように第２実施例の多値化結果値は、第１実施例の多値化結果値とは異なり各種ドットの個数を表す値となっているが、多値化結果値生成処理としては、参照する多値化用テーブルが異なる以外は、図１１に示した第１実施例の処理とほぼ同様である。以下では、図３３のフローチャートに従って説明する。
【０２４６】
第２実施例の多値化結果値生成処理を開始すると、先ず初めに、互いに隣接する所定個数の画素をまとめて画素群を生成した後（ステップＳ５００）、画像中での画素群の位置に基づいて分類番号を決定する（ステップＳ５０２）。次いで、画素群にまとめられた各画素の階調値に基づいて、画素群を分割するか否かを判断する（ステップＳ５０４）。説明の便宜から、ここでは分割パターンとしては、第１実施例と同様に、図１２に示した左右２つの領域に等分するパターンのみが用意されているものとして説明するが、図２５に例示したような、異なる複数の分割パターンが用意されているものとすることも可能である。そして、画素群を分割しないと判断した場合は（ステップＳ５０４：ｎｏ）、画素群の代表階調値を決定した後（ステップＳ５０６）、多値化用テーブルを参照することにより、画素群の分類番頭および代表階調値に対応する多値化結果値を取得する。画素群の代表階調値は、前述した第１実施例と同様にして決定する。
【０２４７】
図３４は、第２実施例の多値化結果値生成処理で参照される多値化用テーブルを概念的に示した説明図である。図示されているように、第２実施例における多値化用テーブルには、画素群の分類番号および代表階調値に対応付けて、多値化結果値が設定されている。この多値化結果値は、画素群内の全ての画素が代表階調値を有するものとして、図２７ないし図３０で説明した方法により各種ドットの形成個数を求め、得られたドット個数の組合せを図３２に示した対応関係に従って変換した値である。図３４に示した多値化用テーブルには、このようにして求めた多値化結果値が予め設定されているので、第２実施例の多値化結果値生成処理では、テーブルを参照するだけで、画素群の分類番号および代表階調値から直ちに多値化結果値を得ることが可能である。画素群を分割しないと判断した場合は、こうして得られた多値化結果値を記憶しておく（図３３のステップＳ５１０）。
【０２４８】
一方、画素群を分割すると判断した場合は（ステップＳ５０４：ｙｅｓ）、画素群を分割して生成した各領域について代表階調値を決定した後（ステップＳ５１２）、それぞれの代表階調値を画素群の分類番号と組み合わせて多値化用テーブルを参照することにより、各領域についての多値化結果値を取得する（ステップＳ５１４）。ここでは説明の便宜から、画素群の分割パターンは１種類だけ用意されているとしているが、複数のパターンの中から選択することも可能である。次いで、分割パターンを示すＥＳＣコードを記憶する（ステップＳ５１６）。
【０２４９】
図３５は、第２実施例において多値化結果値とＥＳＣコードとが割り当てられている様子を示した説明図である。前述したように多値化結果値は１６５通りの値を取り得るので８ビットのデータとなり、「０」〜「１６４」の値を多値化結果値に割り当てると、「１６５」〜「２５５」の値が空きとなる。そこで、空いた値の中から任意に選んだ値（ここでは、「２５５」）をＥＳＣコードに割り当てる。画素群の分類パターンが複数用意されている場合は、分類パターンの種類に応じて複数の値をＥＳＣコードに割り当てておけば良い。図３３のステップＳ５１６では、画素群の分割パターンに対応付けて割り当てられたＥＳＣコードを記憶する。
【０２５０】
こうしてＥＳＣコードを記憶したら、続いて各領域について得られた多値化結果値を記憶する（ステップＳ５１８）。多値化結果値は、画素群を分割して生成された各領域について得られる。従って、画素群をＮ個の領域に分割した場合は、ＥＳＣコードに続いて記憶される多値化結果値の個数もＮ個となる。また、分割パターンとして画素群の分割数が異なるパターンが用意されている場合は、ＥＳＣコードに続いて記憶される多値化結果値の個数が分割パターンに応じて異なる場合を起こり得る。
【０２５１】
以上のようにして画素群の多値化結果値を記憶したら、画像データの全画素について処理を終了したか否かを判断し（ステップＳ５２０）、未処理の画素が残っていれば（ステップＳ５２０：ｎｏ）、ステップＳ５００に戻って新たな画素群を生成して、続く一連の処理を繰り返す。こうした操作を繰り返し、全画素についての処理が終了したと判断されたら（ステップＳ５２０：ｙｅｓ）、分割されていない画素群については多値化結果値のみを、分割されている画素群については、分割パターンを示すＥＳＣコードおよび多値化結果値をカラープリンタ２００に出力して（ステップＳ５２２）、図３３に示す第２実施例の多値化結果値生成処理を終了する。
【０２５２】
Ｄ−３．第２実施例のドット形成有無決定処理  ：
次に、第２実施例のカラープリンタ２００において、多値化結果値を受け取って大中小各ドットの形成有無を決定する処理について説明する。図３６は、第２実施例のドット形成有無決定処理の前半部分の処理を示すフローチャートである。また、図３７は、第２実施例のドット形成有無決定処理の後半部分の処理を示すフローチャートである。これらの図に示された処理の大まかな流れは、図２１を用いて前述した第１実施例のドット形成有無決定処理とほぼ同様である。但し、第２実施例では大中小の各ドットを形成可能であることに対応して、多値化結果値を、画素群内に形成される各種ドットの個数に対応した中間データに一旦変換してから、各画素についてのドット形成有無を決定する点が大きく異なっている。以下、これらフローチャートに従って、第２実施例のドット形成有無決定処理について説明する。
【０２５３】
第２実施例のドット形成有無決定処理を開始すると、先ず初めに、処理対象とする画素群を１つ選択し（ステップＳ６００）、その画素群について供給された多値化結果値の先頭のデータを取得して（ステップＳ６０２）、取得したデータがＥＳＣコードか否かを判断する（ステップＳ６０４）。ここでは、画素群の分割パターンは１種類だけ用意されており、この分割パターンにはＥＳＣコード「２５５」が割り当てられているものとしているから、ステップＳ６０４では読み込んだデータが「２５５」であるか否かを判断することになる。
【０２５４】
そして、読み込んだデータがＥＳＣコードでは無い場合は（ステップＳ６０４：ｎｏ）、画素群は分割されていないと判断して、読み込んだデータを多値化結果値と読み替える（ステップＳ６０６）。一方、読み込んだデータがＥＳＣコードである場合は（ステップＳ６０４：ｙｅｓ）、画素群は分割されていると判断し、ＥＳＣコードに続いて記憶されている所定個数の多値化結果値を取得する（ステップＳ６０８）。
【０２５５】
次いで、取得した多値化結果値を、画素群内に形成される各種ドットの個数に対応した中間データに変換する（ステップＳ６１０）。かかる変換は、中間データ用の変換テーブルを参照することによって行う。図３８は、第２実施例のドット形成有無決定処理において参照される中間データ用の変換テーブルを概念的に示した説明図である。図示されているように、変換テーブルには、多値化結果値に対応付けて中間データが設定されており、それぞれの中間データは、形成すべきドットの種類を表す値が、画素群に含まれる画素の数だけ並んだデータとなっている。
【０２５６】
例えば、多値化結果値「１」について説明すると、図３２に示したように、多値化結果値「１」は、画素群に形成されるドットが小ドット１つのみである状態、換言すれば、画素群内には、小ドットが形成される画素が１つ、ドットが形成されない画素が７つ存在することを表している。そこで、中間データは、ドットを形成しないことを意味する値「０」が７つ、小ドットを形成することを意味する値「１」が１つだけ並んだデータとする。尚、中間データは、これらの値が先頭から小さい順に並んだデータとなっている。従って、多値化結果値「１」に対する中間データは「０００００００１」というデータとなる。また、多値化結果値に対応するドット個数が、例えば大ドットが２個、中ドットが１個、小ドットが３個であるとする。この場合は、ドットを形成しない画素は２つあるから、先頭の２つの値はドットを形成しないことを意味する値「０」となり、次いで小ドットを形成することを意味する値「１」が３つ続き、その後に中ドットを形成することを意味する値「２」が１つ、最後に大ドットを形成することを意味する値「３」が２つ続くことになる。結局、このような多値化結果値に対応する中間データは、「００１１１２３３」というデータとなる。
【０２５７】
また、形成可能なドットが大ドット、中ドット、小ドットの３種類である場合、中間データに含まれる各値は「０」〜「３」の４つの値しか取り得ないので、それぞれの値は２ビットあれば表現することができる。従って、画素群内に含まれる画素数を８個とすれば、中間データは１つあたり１６ビットあれば表現することが可能である。
【０２５８】
図３８に示した中間データ用の変換テーブルには、この様にして生成された中間データが、多値化結果値に対応付けて設定されている。図３６のステップＳ６１０では、このような変換テーブルを参照することによって、画素群の多値化結果値を中間データに変換する。
【０２５９】
次いで、選択した画素群に対応する順序値マトリックスを読み込む処理を行う（図３７のステップＳ６１２）。第１実施例において説明したように、順序値マトリックスには画素群内の各画素について、ドットが形成される順番を示す値（順序値）が設定されている。そして、順序値マトリックスは、画素群の分類番号毎に設定されている。
【０２６０】
このようにして、選択した画素群についての中間データと順序値マトリックスとが得られたら、画素群の中から対象画素を１画素ずつ選択しながら、ドット形成の有無を決定していく。この様子を、図３９を参照しながら説明する。
【０２６１】
図３９は、第２実施例のドット形成有無決定処理において中間データと順序値マトリックスとを用いて、ドット形成の有無を決定する様子を示した説明図である。一例として、図３９（ａ）に示すような多値化結果値、すなわち画素群が２つに分割されて、左の領域については多値化結果値９２が、右の領域については多値化結果値１３５が得られたものとする。次いで、これらの多値化結果値を中間データに変換する。図３９（ｂ）および図３９（ｃ）は、それぞれの領域の多値化結果値が中間データに変換された様子を示している。第２実施例のドット形成有無決定処理では、中間データと順序値マトリックスとを用いて画素群内の各画素についてのドット形成の有無を決定する。
【０２６２】
対象としている画素群の順序値マトリックスが、図３９（ｄ）のようなマトリックスであったとする。前述したように、順序値マトリックスには順序値が設定されており、順序値は画素群内の各画素について、何番目にドットが形成されるかを示している。今、画素群は左右２つに分割されているものとしているから、順序値マトリックスも左右２つに分割する。そして、左側の領域に設定された順序値は画素群の左側の中間データと組合せ、マトリックスの右側の順序値は画素群の右側の中間データと組合せて考える。
【０２６３】
例えば、画素群の中から任意の画素を１つ選択して、その画素が画素群の左上隅の画素であったとする。図３９（ｄ）の順序値マトリックスを参照することにより、その画素の順序値は１番であることが分かる。また、選択した画素は画素群の左の領域にあるから、左の領域について得られた中間データを参照する。前述したように中間データには、「ドットを形成しない」、「小ドットを形成する」、「中ドットを形成する」、「大ドットを形成する」ことを表す値が、この順番で先頭から並んでいる。一方、大中小各ドットを形成する場合は、初めに大ドットを形成し、次に中ドットを形成し、最後に小ドットを形成する。すなわち、中間データの先頭から並んでいるドット種類の順番は、実際にドットが形成される順番とは逆の順番となっている。従って、中間データを最後尾から読み出していけば、その画素群には、大中小ドットの中の何れの種類のドットから、それぞれ何個ずつ形成されるかを知ることができる。今、選択した画素の順序値は１番であるから、左の領域の中間データから最後尾にある値を読み出すと「２」が得られるので、その画素に形成すべきドットは、中ドットであると決定することができる。
【０２６４】
また、例えば画素群の右下隅の画素が選択された場合は、順序値マトリックスを参照することにより、その画素の順序値は５番であることがわかる。選択した画素は右の領域にあるから、画素群の右側の中間データを参照して最後尾から５番目の値を読み出すと「１」が得られるので、その画素に形成すべきドットは小ドットであると決定することができる。
【０２６５】
図３７のステップＳ６１４ないしステップＳ６２０では、このようにして画素群の中から対象とする画素を１つずつ選択しながら、ドット形成の有無を決定する。以下、フローチャートに従って簡単に説明すると、先ず初めに、画素群の中から対象画素を１つ選択し（図３７のステップＳ６１４）、順序値マトリックスを参照することにより、対象画素の順序値を取得する（ステップＳ６１６）。次いで、対象画素に対応する中間データを参照して、大中小いずれのドットを形成すべきかを決定する（ステップＳ６１８）。すなわち、画素群が分割されていない場合は、中間データは１つしか得られていないので、このデータを参照してドット形成の有無を決定する。また、画素群が分割されている場合は、複数の中間データが得られているので、対象画素が含まれる領域について得られた中間データを参照することによって、ドット形成の有無を決定するのである。
【０２６６】
こうして対象画素についてのドット形成の有無を決定したら、画素群内の全画素について決定したか否かを判断する（ステップＳ６２０）。画素群の中に未だドット形成の有無を決定していない画素が残っている場合は（ステップＳ６２０：ｎｏ）、ステップＳ６１４に戻って新たな画素を選択し、続く一連の操作を行うことによりドット形成の有無を決定する。このような操作を繰り返して、画素群に含まれる全画素についてドット形成の有無を決定したと判断したら（ステップＳ６２０：ｙｅｓ）、今度は、全画素群について、上述した操作を行ったか否かを判断する（ステップＳ６２２）。そして、未処理の画素群が残っている場合は（ステップＳ６２２：ｎｏ）、ステップＳ６００に戻って新たな画素群を１つ選択して、上述した一連の操作を行う。全ての画素群についてこうした操作を繰り返し、全画素群についてドット形成の有無を決定したと判断されたら（ステップＳ６２２：ｙｅｓ）、図３６および図３７に示した第２実施例のドット形成有無決定処理を終了して、図５の画像印刷処理に復帰する。
【０２６７】
以上、第２実施例の画像印刷処理中で行われる多値化結果値生成処理（図３３）、およびドット形成有無決定処理（図３６、図３７）について説明した。第２実施例の画像印刷処理では、大中小の各種ドットを形成することによって高画質な画像を印刷することができる。このように、第２実施例では第１実施例に対して基準となる画質が向上していることから、階調値分布に応じて画素群を分割してドット形成有無を決定することによる画質の改善効果を、より効果的に発揮させることができる。
【０２６８】
また、一般には、形成可能なドットの種類が増加すると、ドット形成の有無を判断する処理が複雑となり、加えて、コンピュータからカラープリンタに供給すべきデータ量が増加してしまう。このため、高画質な画像は得られるものの、どうしても印刷速度が低下する傾向にあった。しかし、第２実施例の画像印刷処理は、第１実施例に対して、多値化結果値のデータ長こそ４ビットから８ビットに増えているものの、多値化結果値を生成する処理そのものは、画素群の分類番号および代表階調値から多値化用テーブルを参照するだけで変わるところが無く、たいへんに簡素な処理によって迅速に多値化結果値を出力することができる。また、画素毎に大中小ドットの形成有無を表現しようとすると１６ビット必要になることと比べれば、多値化結果値が８ビットであっても、データ量が半減していることになる。従って、多値化結果値を、コンピュータ１００からカラープリンタ２００迅速に供給することが可能であり、高画質な画像を迅速に出力することが可能となる。
【０２６９】
一方、ドットの形成有無を決定するに際しても、第２実施例では多値化結果値を一旦、中間データに変換しているものの、中間データと順序値マトリックスとに基づいて各画素のドット形成の有無を迅速に決定することができる。また、多値化結果値を中間データに変換する処理も、単にテーブルを参照するだけの簡素な処理なので迅速に実行することができる。このため、大中小の各種ドットを形成して高画質な画像を出力可能であるにも関わらず、処理の複雑化や処理速度の低下を招くことなく、迅速に画像を出力することができる。
【０２７０】
加えて、第２実施例においても第１実施例と同様に、多値化結果値生成処理およびドット形成有無決定処理のいずれの処理も簡素な処理とすることができるので、コンピュータのような高度な処理能力を持たない機器においても、十分に実用的な速度で実行することが可能である。
【０２７１】
また、以上に説明した第２実施例の画像印刷処理においても、前述した第１実施例の第２の変形例における処理と同様に、画素群を常に分割することとして画像処理を行うこととしても良い。こうすれば、例えば８つの画素を含む画素群についての多値化用テーブルおよび順序値マトリックスをそのまま使用して、実質的には、より少ない画素を画素群とする処理を行うことができる。
【０２７２】
加えて、画素群を常に分割するものとして、実際の処理単位よりも大きな画素群を生成しておけば、前述した第１実施例の第２の変形例における場合と同様に、多値化用テーブルのデータ量を低減することも可能となる。例えば、前述した第２実施例の多値化用テーブルは、図３４に示したように、１０２４個の画素群と２５６通りの代表階調値との組合せ毎に、多値化結果値が設定されており、個々の多値化結果値は８ビットだから、多値化用テーブルのデータ量は２Ｍビットとなる。すなわち、８つの画素を画素群にまとめた場合、多値化用テーブルを記憶するためには２Ｍビットのメモリ容量が必要となる。
【０２７３】
一方、４つの画素を画素群にまとめた場合は、画素群の数は２０４８個に増加する。個々の多値化結果値の取り得る範囲は０〜３４の３５種類だから、６ビットあれば表現可能である。すなわち、画素群に８つの画素が含まれている場合に比べて、画素群の数は２倍、個々の多値化結果値のデータ長は６／８倍となるから、多値化用テーブルのデータ量は、１．５倍の３Ｍビットとなる。
【０２７４】
結局、画素を４つずつ画素群にまとめた場合は多値化用テーブルを記憶するために３Ｍビット必要になるところを、８つずつ画素群にまとめて、画素群を常に２つに分割して処理することとすれば２Ｍビットで良くなり、多値化用テーブルを記憶するために要するメモリ容量を低減することが可能となる。
【０２７５】
Ｅ．第３実施例  ：
以上に説明した第１実施例、あるいは第２実施例では、多値化結果値の意味するところは、その結果値がいずれの画素群について得られたものであっても同じように解釈することができた。例えば、第１実施例において多値化結果値３と言えば、その結果値がどの画素群について得られたものであっても、画素群内に３つのドットが形成されることを表していた。また、第２実施例において多値化結果値１２５と言えば、この値は、図３２に示した対応関係に応じて大ドット、中ドット、小ドットがそれぞれ所定の個数だけ画素群に形成されることを表していた。このように、異なる画素群に対して得られた多値化結果値であっても同じ値であれば、その意味するところは同じように解釈することができた。しかし、多値化結果値の意味する内容を、画素群に応じて異ならせることも可能である。こうすれば、多値化結果値のデータ量を低減することが可能となる。特に、第２実施例における場合のように、多値化結果値が１６５通りもの多くの値を取り得るような場合には、多値化結果値のデータ量を低減することで、より迅速に多値化結果値を供給することができる。以下では、このような第３実施例の画像印刷処理について説明する。尚、第３実施例においても、前述した第２実施例と同様に、カラープリンタ２００は大中小の３種類のドットを形成可能であるものとする。
【０２７６】
Ｅ−１．第３実施例の多値化結果値生成処理  ：
第３実施例の多値化結果値生成処理は、前述した第２実施例の多値化結果値生成処理に対して、参照する多値化用テーブルが異なるものの、処理の全体的な流れはほぼ同様である。このように、本実施例の画像印刷処理は、処理の内容が複雑かつ高度な内容になっても、多くの場合は多値化用テーブルの変更だけで対応することができ、実際の処理の流れは簡素なものとすることが可能である。以下では、図３３に示した第２実施例の多値化結果値生成処理のフローチャートを流用しながら、第３実施例の多値化結果値生成処理について説明する。
【０２７７】
第３実施例の多値化結果値生成処理を開始すると、先ず初めに、互いに隣接する所定数の画素をまとめて画素群を生成し（ステップＳ５００相当）、画素群の分類番号を決定する（ステップＳ５０２相当）。次いで、画素群にまとめられた各画素の階調値に基づいて、画素群を分割するか否かを判断する（ステップＳ５０４相当）。ここでは、説明の便宜上、分割パターンは画素群を左右２つの領域に等分するパターンのみが用意されているものとする。もちろん、複数種類の分割パターンを用意しておき、階調値の分布に応じた適切なパターンを選択することも可能である。複数種類の分割パターンを用いる場合については後述する。画素群を分割しないと判断した場合は、前述した各実施例と同様にして画素群の代表階調値を決定した後（ステップＳ５０６相当）、多値化用テーブルを参照することにより、画素群の分類番号および代表階調値に対応する多値化結果値を取得する。
【０２７８】
図４０は、第３実施例の多値化結果値生成処理で参照される多値化用テーブルを概念的に示した説明図である。前述した第２実施例の多値化結果値生成処理で参照した多値化用テーブル（図３４参照）と、この多値化用テーブルとを比較すれば明らかなように、第３実施例の多値化用テーブルに設定されている多値化結果値は、第２実施例の多値化結果値よりも小さな値となっている。これは、第２実施例では、多値化結果値が、画素群によらず同じように解釈可能な値に設定されているのに対し、第３実施例では、その多値化結果値が得られた画素群を特定して（より正確には、画素群の分類番号を特定して）初めて解釈できるような値に設定されていることによる。
【０２７９】
図４１は、第３実施例の多値化用テーブルにおいて、画素群の分類番号毎に設定されている代表階調値と多値化結果値との対応関係を例示した説明図である。図では、横軸に代表階調値を取り、縦軸の多値化結果値を取った折れ線グラフを用いて、代表階調値に対して設定された多値化結果値を表示している。また、図中では、異なる分類番号Ｎ１〜Ｎ５を有する５つの画素群についての多値化結果を示しているが、これら画素群の折れ線が重なって判別し難くなることを避けるために、多値化結果値の原点位置を、縦軸方向に少しずつずらした状態で表示している。
【０２８０】
図４１中に太い実線を用いて表した折れ線は、分類番号Ｎ１番の画素群についての代表階調値と多値化結果値との対応関係を示している。分類番号Ｎ１番の画素群については、代表階調値０〜４に対しては多値化結果値０が設定されている。代表階調値５〜２０に対しては、多値化結果値１が設定されている。次いで、代表階調値が２１〜４２の範囲に増加すると、多値化結果値は「２」に増加し、代表階調値が４３〜６９の範囲に増加すると多値化結果値は「３」に増加する。このように、代表階調値が増加するに従って、多値化結果値も段階的に増加していき、最終的には、多値化結果値は「１５」まで増加する。同様に、図中で太い破線で示した分類番号Ｎ２番の画素群や、太い一点鎖線で示した分類番号Ｎ３番の画素群については、代表階調値が０〜２５５に増加するに従って、多値化結果値が０〜１７へと段階的に増加するように設定されている。更に、細い実線で示した分類番号Ｎ４番の画素群および細い一点鎖線で示した分類番号Ｎ５番の画素群については、代表階調値が０〜２５５に増加するに従って、多値化結果値が０〜２０へと段階的に増加するように設定されている。この結果、例えば、分類番号Ｎ１の画素群については０〜１５のいずれかの多値化結果値に多値化（いわば１６値化）され、分類番号Ｎ２またはＮ３の画素群については０〜１７のいずれかの多値化結果値に多値化（いわば１８値化）され、分類番号Ｎ４またはＮ５の画素群については０〜２０のいずれかの多値化結果値に多値化（いわば２１値化）されることになる。
【０２８１】
このように、第３実施例の多値化結果値生成処理では、各画素群の多値化の段数（多値化の結果として取り得る状態数）が同じではなく、画素群の分類番号に応じて固有の段数で多値化されている。この結果、同じ代表階調値を多値化した場合でも、画素群の分類番号が異なり、そのため多値化の段数が異なっていれば、異なる結果値に多値化されることになる。
【０２８２】
また、多値化段数が同じであったとしても、同じ多値化結果値が得られるわけではない。例えば、図４１に示した分類番号Ｎ２の画素群と、分類番号Ｎ３の画素群とを比較すれば明らかなように、これら画素群については代表階調値がいずれも１８値化されているが、多値化結果値が切り換わる代表階調値は多くの場合、一致していない。分類番号Ｎ４の画素群と分類番号Ｎ５の画素群とについても同様に、これら画素群では代表階調値が何れも２１値化されているが、多値化結果値が切り換わる代表階調値は一致していないことが多い。このことから、たとえ画素群の多値化の段数が同じでも、分類番号が異なれば、異なる多値化結果値が得られることになる。
【０２８３】
このように、図４０に示した第３実施例の多値化用テーブルに設定されている多値化結果値は、代表階調値と多値化結果値との対応関係が画素群の分類番号毎に異なっている。換言すれば、第３実施例の多値化結果値は、その結果値が得られた画素群の分類番号を特定して初めて解釈できる値となっている。このように多値化結果値を画素群に依存した値としてやることで、多値化結果値の取り得る値の個数を少なくすることが可能である。図４１に示した例示では、多値化結果値の個数が最も多い分類番号Ｎ４の画素群および分類番号Ｎ５の画素群の場合でも、「０」〜「２０」までの２１通りしか存在しない。実際のところ、多値化結果値の取り得る値は、多く見積もっても３０通りを越えることはなく、３０通りであれば、５ビットで十分に表現することができる。第２実施例では、多値化結果値を表現するために８ビット必要であったことと比較すれば、多値化結果値のデータ量が５／８に低減されていることになる。尚、図４０に示した第３実施例の多値化用テーブルを設定する方法については後述する。
【０２８４】
第３実施例の多値化結果値生成処理において、分割しないと判断した画素群については、図４０に示した多値化用テーブルを参照することによって、多値化結果値を取得した後（図３３のステップＳ５０８相当）、得られた多値化結果値を記憶しておく（ステップＳ５１０相当）。
【０２８５】
一方、第３実施例の多値化結果値生成処理において、画素群を分割すると判断した場合は（図３３のステップＳ５０４：ｙｅｓに相当）、画素群を分割して生成した各領域の代表階調値を決定した後（ステップＳ５１２相当）、画素群の分類番号および、それぞれの代表階調値から多値化用テーブルを参照して、各領域の多値化結果値を取得する（ステップＳ５１４相当）。すなわち、多値化結果値は、画素群を分割して生成した領域の数だけ生成されることになる。次いで、分割パターンを示すＥＳＣコードに続けて、領域毎に生成された多値化結果値を記憶する（ステップＳ５１６およびＳ５１８相当）。
【０２８６】
図４２は、５ビットのデータに、多値化結果値と分割パターンとが対応付けられている様子を示した説明図である。前述したように、第３実施例では、多値化結果値は画素群の分類番号に固有の値に設定されているので、それぞれの分類番号での多値化結果値は、多く見積もっても３０通りの値しか取り得ず、５ビットで表現することができる。そこで、多値化結果値として使用されない「３１」を表すデータを、ＥＳＣコードに割り付けておく。ここでは、画素群の分割パターンは１つのみであるとしているから、ＥＳＣコード１だけで、画素群が分割されていること、および分割パターンを同時に表すことができる。
【０２８７】
以上のようにして画素群の多値化結果値を記憶したら、画像データの全画素について処理を終了したか否かを判断し（ステップＳ５２０相当）、未処理の画素が残っていれば、新たな画素群を生成した後、続く一連の処理を繰り返す。こうした操作を繰り返し、全画素についての処理が終了したら、分割されていない画素群については多値化結果値のみをカラープリンタ２００に出力し、また、分割されている画素群については、分割パターンを示すＥＳＣコードおよび多値化結果値を出力して（ステップＳ５２２相当）、第３実施例の多値化結果値生成処理を終了する。
【０２８８】
図４３は、第３実施例の多値化結果値生成処理によって、画素群にまとめられた画像データが多値化結果値に変換される様子を示した説明図である。図４３（ａ）は、８つの画素が画素群にまとめられた様子を示している。画素群Ａは、全ての画素の階調値が「９７」となっている。画素群Ｂは、左半分の領域にある画素の階調値は「９７」であるが、右半分の画素は階調値が「１３５」となっている。そして、その隣にある画素群Ｃは、全ての画素の階調値が「１３５」となっている。図４３（ｂ）は、これら画素群について代表階調値が決定された様子を表している。画素群Ａについては代表階調値９７が得られている。画素群Ｂについては左右２つの領域に分割されて、左の領域については代表階調値９７が、右の領域については代表階調値１３５が得られている。そして画素群Ｃについては代表階調値１３５が得られている。
【０２８９】
図４３（ｃ）は、これらの代表階調値を多値化結果値に変換した後、得られた多値化結果値を記憶している様子を示している。先頭の値「１５」は画素群Ａについての多値化結果値である。その次の値「３１」は、画素群Ａに続く画素群Ｂが分割されていることを表すＥＳＣコードである。ここでは、画素群の分割パターンは左右２つの領域に等分する１パターンのみであるとしているから、分割されていることを示すだけで同時に分割パターンを表していることになる。ＥＳＣコード「３１」に続く２つの値は、それぞれ左領域についての多値化結果値と、右領域についての多値化結果値とを表している。結局、画素群Ｂについては、ＥＳＣコードを含めて３つのデータを用いて多値化結果値が表されていることになる。尚、画素群Ａと画素群Ｂの左領域とは同じ代表階調値を有しているが、それぞれの画素群の分類番号が異なっているため、得られる多値化結果値は異なった値となっている。
【０２９０】
画素群Ｂについての多値化結果値を表す３つの値に続いて、画素群Ｃについての多値化結果値が記憶される。この値「１８」はＥＳＣコードではないので、画素群Ｃは分割されていないと考えられる。従って、この画素群の多値化結果値は値「１８」だけであると判断され、その次の値は画素群Ｄについての多値化結果値を示していることになる。第３実施例の多値化結果値生成処理では、このような多値化結果値を生成してカラープリンタに出力する。
【０２９１】
尚、以上では、画素群の分割パターンは１種類のみが用意されているものとして説明したが、より多くの分割パターンを用意しておくことも可能である。例えば、以上の説明では多値化結果値の中で使用されていない値「３１」をＥＳＣコードとして用いたが、図４２に示したように値「３０」も使用されていない値である。そこで、この値「３０」を第２の分割パターンを示すＥＳＣコードに割り当てることも可能である。例えば、ＥＳＣコード「３０」は、画素群を上下２つの領域に等分するパターンを表すものとして、画素群を上下２つの領域に等分した場合には、ＥＳＣコード「３０」に続けてそれぞれの領域の多値化結果値を記憶することとしても良い。
【０２９２】
また、更に多くの分割パターンを用意する場合は、次のようにすることもできる。例えば、以上の説明においては、図４２に示したように多値化結果値が５ビットデータであるものとしたが、１ビットだけ増やした６ビットデータとしてもよい。６ビットデータであれば、０〜６３までの値を表現することができるので、３０〜６３までの値を異なる分割パターンに割り付けることができる。
【０２９３】
あるいは、次のように複数のＥＳＣコードを組み合わせることにより、分割パターンを表すこととしても良い。例えば、本実施例の画素群は主走査方向（図上では横方向）に４画素、副走査方向（図上では縦方向）に２画素がまとめられた横長の画素群であることから、画素群を分割する場合、左右２つの領域に分割するケースが最も多いと考えられる。そこで、２つのＥＳＣコード「３０」、「３１」の中の一方（たとえば「３１」）を、最も頻繁に現れると考えられる分割パターンに割り当てる。そして、これ以外の分割パターンについては、もう一方のＥＳＣコード（例えば「３０」）と、新たな５ビットデータとを組み合わせて表現することとしても良い。すなわち、図４３（ｄ）に例示したように、画素群Ｂについて先頭のデータが「３０」であれば、画素群が左右２分割以外のパターンで分割されていることを表すものとして、具体的な分割パターンは、続くデータ（図示した例では「０」）によって表すものとしてもよい。もちろん、画素群Ｂの先頭のデータが「３１」であれば、その画素群は左右２つの領域の等分されていると判断して、続く２つの多値化結果値を、それぞれ左領域および右領域について得られた多値化結果値と解釈すればよい。このようにすれば、より多種類の分割パターンを使い分けながら、分割パターンの種類が増えることで全体としてデータ量が増加してしまうことを抑制することが可能となる。
【０２９４】
Ｅ−２．第３実施例のドット形成有無決定処理  ：
上述したように、第３実施例の多値化結果値生成処理では、多値化結果値のデータ量を低減するために、画素群の分類番号に固有の多値化結果値を生成してカラープリンタ２００に出力する。すなわち、多値化結果値の意味するところは、画素群の分類番号を特定して初めて解釈可能となっている。このため、第３実施例のカラープリンタ２００では、このような多値化結果値を受け取ると、次のようなドット形成有無決定処理を行うことにより、画素群内の各画素についてのドット形成の有無を決定する処理を行う。
【０２９５】
図４４は、第３実施例のドット形成有無決定処理の前半部分の処理を示すフローチャートである。また図４５は、第３実施例のドット形成有無決定処理の後半部分の処理を示すフローチャートである。図示した第３実施例のドット形成有無決定処理は、図３６および図３７を用いて前述した第２実施例の処理に対して、コンピュータ１００から受け取る多値化結果値が画素群に依存した値となっており、この多値化結果値を画素群に依存しない中間データに変換してから、各画素についてのドット形成有無を決定する点が大きく異なっている。以下では、こうした第２実施例に対する相違点を中心として、第３実施例のドット形成有無決定処理について説明する。
【０２９６】
第３実施例のドット形成有無決定処理においても、前述した第２実施例と同様に、処理を開始すると先ず初めに、処理対象とする画素群を１つ選択する（ステップＳ７００）。そして、その画素群について供給された多値化結果値の先頭のデータを取得し（ステップＳ７０２）、取得したデータがＥＳＣコードか否かを判断する（ステップＳ７０４）。読み込んだデータがＥＳＣコードでは無い場合は（ステップＳ７０４：ｎｏ）、画素群は分割されていないと判断して、読み込んだデータを多値化結果値と読み替える（ステップＳ７０６）。一方、読み込んだデータがＥＳＣコードである場合は（ステップＳ７０４：ｙｅｓ）、画素群は分割されていると判断し、ＥＳＣコードに続いて記憶されている所定個数の多値化結果値を取得する（ステップＳ７０８）。
【０２９７】
第３実施例においては前述した第２実施例と異なり、こうして読み込んだ多値化結果値が、その値が得られた画素群の分類番号を特定して初めて解釈可能な値となっている。そこで、第３実施例のドット形成有無決定処理では、この多値化結果値を、画素群の分類番号に依存しないデータに変換した後に、画素群内の各画素についてのドット形成の有無を決定する。多値化結果値を分類番号に依存しないデータに変換する準備として、先ず、画素群の分類番号を取得する処理を行う（ステップＳ７１０）。画素群の分類番号は、画像中での画素群の位置に基づいて、次のようにして取得することができる。
【０２９８】
図４６は、画素群の分類番号を決定する方法を示した説明図である。今、ドット形成の有無を決定する対象としている画素群が、図４６（ａ）に示すように、画像の一番左上隅を基準として主走査方向にｉ個目の画素群、副走査方向にｊ個目の画素群の位置にあるとする。また、このような画素群の位置を、座標値（ｉ，ｊ）によって表すものとする。また、ディザマトリックスの大きさは、通常は、画像のようには大きくはないので、図１４（ｂ）を用いて前述したように、ディザマトリックスを主走査方向に移動させながら、繰り返して使用するものとする。
【０２９９】
１つのディザマトリックスには主走査方向・副走査方向にそれぞれ３２個ずつのブロックが含まれるとしているから（図１３（ｂ）参照）、ディザマトリックス中で、対象の画素群がある位置をＩ行Ｊ列とすれば、Ｉ、Ｊはそれぞれ次式で求めることができる。
Ｉ＝ｉ−ｉｎｔ（ｉ／３２）×３２
Ｊ＝ｊ−ｉｎｔ（ｊ／３２）×３２
ここで、ｉｎｔは、小数点以下を切り捨てて整数化することを表す前述した演算子である。従って、画素群の座標値（ｉ，ｊ）に上式を適用してＩ，Ｊを求めることで、その画素群がディザマトリックス中でＩ行Ｊ列にあることが分かる。これより、分類番号は、
Ｉ＋（Ｊ−１）×３２  …（１）
によって求めることができる。
【０３００】
また、画素群のディザマトリックス中での位置を表す値Ｉ，Ｊは、上述したような計算を実行せずとも、ｉ，ｊの２進数表示から所定ビットのデータを抜き出すだけで、極めて簡便に求めることができる。図４７は、画素群の座標値（ｉ，ｊ）から、画素群のディザマトリックス中での位置を求める方法を具体的に示した説明図である。図４７（ａ）は、数値ｉを表す１０ビットの２進数表示したデータを概念的に示している。尚、図４７（ａ）では、各ビットを識別するために、最上位ビットから最下位ビットに向かって１番から１０番までの通し番号を付して表示している。
【０３０１】
画素群の位置を示す値Ｉを求めるに際しては、先ず初めに、ｉｎｔ（ｉ／３２）を算出する。この演算は、ｉの２進数データを右方向に５ビット分だけビットシフトさせることで実行することができる（図４７（ｂ）参照）。次いで、ｉｎｔ（ｉ／３２）×３２を算出する。この演算は、ｉｎｔ（ｉ／３２）の２進数データを左方向に５ビット分だけビットシフトさせることで実行することができる（図４７（ｃ）参照）。最後に、数値ｉから、ｉｎｔ（ｉ／３２）×３２を減算すれば、目的とする数値Ｉを得ることができる。この操作は、結局は、数値ｉの２進数データから下位の５ビットのみを抜き出していることに他ならないから、極めて簡便に数値Ｉを得ることが可能である。同様にして、数値ｊの２進数データから下位の５ビットのみを抜き出すことで、極めて簡便に数値Ｊを得ることが可能である。こうして数値ＩおよびＪが求まれば、上述の（１）式を用いて分類番号を算出することができる。
【０３０２】
図４４に示した第３実施例のドット形成有無決定処理のステップＳ７１０では、以上のようにして、処理対象としている画素群の分類番号を取得する。次いで、予め設定しておいた変換テーブルを参照することにより、画素群に依存する形態で表現された多値化結果値を、画素群に依存しない形態で表現された中間データに変換する（ステップＳ７１２）。
【０３０３】
図４８は、第３実施例のドット形成有無決定処理において、多値化結果値を中間データに変換する際に参照される変換テーブルを概念的に示した説明図である。図示されているように、第３実施例のドット形成有無決定処理において参照する変換テーブルには、画素群の分類番号と多値化結果値との組合せに対応づけて、対応する中間データが設定されている。図中に示したＤＤ（ｎ，ｍ）は、画素群の分類番号ｎ番であり、その画素群の多値化結果値が「ｍ」である場合の中間データを表している。また、この中間データは、図３８に示したように、その画素群に形成されるドットの種類と、それらドットの個数とを示す形式で表現されている。そして、前述したようにこの中間データは、どの画素群についてのデータであっても同じように解釈することが可能なデータとなっている。従って、図４８に示した変換テーブルを参照することにより、画素群に依存した形式の多値化結果値を、画素群に形成すべきドットの種類と個数とが画素群に依存しない形式で表現された中間データに変換することができる。
【０３０４】
こうして多値化結果値を中間データに変換したら、今度は、選択した画素群に対応する順序値マトリックスを読み込む処理を行う（図４５のステップＳ７１４）。前述したように、順序値マトリックスには、画素群内の各画素についてドットが形成される順番を示す値（順序値）が設定されている。次いで、前述した第２実施例と同様にして、選択した画素群についての中間データと順序値マトリックスに設定された順序値とを参照しながら、画素群の中から対象画素を１画素ずつ選択してドット形成の有無を決定していく。すなわち、画素群の中から対象とする画素（対象画素）を１つ選択し（ステップＳ７１６）、順序値マトリックスを参照することにより、対象画素の順序値を取得する（ステップＳ７１８）。次いで、対象画素に対応する中間データを参照して、大中小いずれのドットを形成すべきかを決定する（ステップＳ７２０）。このとき、画素群が分割されている場合は複数の中間データが得られているので、対象画素が含まれる領域について得られた中間データを参照することによって、ドット形成の有無を決定する。一方、画素群が分割されていない場合は中間データは１つしか得られていないので、このデータを参照してドット形成の有無を決定する。
【０３０５】
こうして画素群の中から１つずつ対象画素を選択しながら、全ての画素についてのドット形成の有無を決定するまで上述した操作を繰り返し（ステップＳ７２２）、全画素につてドット形成の有無を決定したら、今度は、全画素群について、上述した操作を行ったか否かを判断する（ステップＳ７２４）。そして、未処理の画素群が残っている場合は、ステップＳ７００に戻って新たな画素群を１つ選択して、上述した一連の操作を行う。全ての画素群についてこうした操作を繰り返し、全画素群についてドット形成の有無を決定したら、図４４および図４５に示した第３実施例のドット形成有無決定処理を終了する。
【０３０６】
以上に説明した第３実施例の画像印刷処理では、画素群の代表階調値を多値化する際に、画素群に依存した多値化結果値を生成することで、コンピュータ１００からカラープリンタ２００に出力すべきデータ量を低減することができる。このため、ある程度の割合で画素群を分割した場合でも、分割によるデータ量の増加を抑制して、多値化結果値を迅速に出力することが可能となる。また、このような多値化結果値を生成する処理も、前述した各種実施例と同様に多値化テーブルを参照することで簡素な処理とすることができる。このため、各画素群の多値化結果値を迅速に供給することができる。加えて、画素群内の階調値分布に応じて画素群を分割することで、画素群内の各画素についてのドット形成有無を適切に決定することができるので、高画質な画像を出力することが可能となる。
【０３０７】
Ｅ−３．第３実施例の多値化用テーブルの設定方法  ：
次に、第３実施例の多値化結果値生成処理中で参照される多値化用テーブル（図４０参照）を設定する方法について説明する。前述したように、多値化用テーブルには、代表階調値に対する多値化結果値が画素群の分類番号毎に設定されており、多値化用テーブルを参照しながら多値化することで、代表階調値は、図４１に示したように画素群の分類番号に依存した多値化結果値に変換されることになる。
【０３０８】
本実施例の多値化用テーブルは、図２７ないし図３０を用いて前述した特許３２９２１０４号に開示の方法、すなわち、大きさの異なる複数種類のドットの形成有無を決定可能なように、ディザ法を発展させた手法を基にして設定されている。
【０３０９】
前述したように多値化結果値生成処理では、画素群内に含まれる各画素の画像データを代表階調値で代表させることにより、画素群をまとめて多値化している。そこで、多値化用テーブルを設定するに際しては、先ず、画素群内の全画素が代表階調値と同じ値の画像データを有するものとして、各画素について大中小の各種ドットについての形成有無を判断することを考える。各種ドットについての形成有無の判断は、図２８を用いて前述したハーフトーン処理によって行う。
【０３１０】
図４９は、画素群内の各画素について、大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。図中では、ハーフトーン処理を行うために着目している画素群を太い実線で囲って表している。画素群は８つの画素から構成されており、各画素の画像データは、いずれも代表階調値と同じ値（図示した例では階調値９７）を有している。大中小各種ドットの形成有無を判断するためには、画像データを各ドットについての密度データに変換する。密度データへの変換は、図２９を用いて前述したドット密度変換テーブルを参照することによって行う。ここでは、画素群内の全画素が同じ画像データを有するものとしているから、各種ドットについても密度データも全て画素について同じ値となる。図示した例では、大ドットの密度データの階調値が「２」、中ドットの密度データの階調値が「９５」、小ドットの密度データの階調値が「３０」であった場合を表している。
【０３１１】
次いで、図２８を用いて前述したように、大ドットの密度データ、中ドット用の中間データ、あるいは小ドット用の中間データと、ディザマトリックスに設定されている閾値とを比較することによって、各種ドットについての形成有無を画素毎に判断する。ここで、比較に用いるディザマトリックスの閾値は、ディザマトリックスの中から、着目している画素群に対応する箇所に設定されている閾値を使用する。例えば、図４９に示した例では、画素群が画像の左上隅にあることから、閾値についても、ディザマトリックス中の左上隅の画素群に設定されている閾値を使用する。
【０３１２】
そして、画素群に設定されている８つの閾値の中で、大ドットの密度データよりも小さな閾値が設定されている画素については、大ドットを形成すると判断する。ここでは、大ドットの密度データは階調値「２」としているから、大ドットが形成される画素は、閾値「１」が設定されている画素だけである。図４９では、大ドットが形成されると判断された画素には、細かい斜線を付して表示している。大ドットの密度データ「２」よりも大きく、大ドットの密度データと中ドットの密度データとを加算して得られた中ドット用の中間データ「９７」よりも小さな閾値が設定されている画素には、中ドットを形成するものと判断する。このような画素は、閾値「４２」が設定された画素、および閾値「５８」が設定された画素の２つの画素だけである。図４９では、中ドットが形成されると判断された画素には、少し粗い斜線を付して表示している。そして、最後に、中ドット用の中間データ「９７」よりも大きく、中ドット用の中間データに小ドット用の密度データを加算して得られた小ドット用の中間データ「１２７」よりも小さな閾値が設定されている画素には、小ドットを形成するものと判断する。このような画素は、閾値「１０９」が設定された画素だけである。図４９では、小ドットが形成されると判断された画素には、粗い斜線を付して表示している。このようにして、大ドット、中ドット、小ドットの形成有無を判断した結果、着目している画素群の代表階調値が「９７」である場合には、大ドット１個、中ドット２個、小ドット１個が形成されることになる。
【０３１３】
代表階調値が大きく異なれば、画素群内に形成される大ドット、中ドット、小ドットの個数も異なったものとなる。また、代表階調値を「０」から「２５５」まで変化させれば、それに伴って大ドット、中ドット、小ドットの個数は、幾段階かに変化するはずである。更に、画素群の分類番号が異なれば、ディザマトリックスの閾値も異なることから、ドット個数の変化の仕方も異なるはずである。図４０に示した多値化用テーブルは、代表階調値を「０」から「２５５」まで変化させたときの、各種ドットの個数が段階的に変化する挙動を、分類番号毎に調べることによって設定されている。
【０３１４】
図５０は、第３実施例の多値化結果値生成処理中で参照される多値化用テーブルを設定する処理の流れを示したフローチャートである。以下、フローチャートに従って説明する。多値化用テーブルの設定処理を開始すると、先ず初めに、画素群の分類番号を１つ選択する（ステップＳ８００）。例えば、ここでは分類番号１番を選択したものとする。
【０３１５】
次いで、選択した分類番号の画素群に対応する閾値を、ディザマトリックスの中から読み出してやる（ステップＳ８０２）。例えば、ここでは分類番号１番を選択したものとしているから、図６に例示したディザマトリックスの中から、図１３（ｂ）中で１番と表示したブロック位置に設定されている８つの閾値を読み出す。
【０３１６】
そして、多値化結果値ＲＶおよび代表階調値ＢＤを「０」に設定し（ステップＳ８０４）、更に、大ドット、中ドット、小ドットの形成個数をいずれも０個に設定する（ステップＳ８０６）。
【０３１７】
続いて、図２９に示したドット密度変換テーブルを参照することにより、代表階調値を大ドット、中ドット、小ドットについての密度データに変換した後（ステップＳ８０８）、これら密度データと先に読み込んでおいた閾値とに基づいて、大中小の各種ドットについての形成個数を決定する（ステップＳ８１０）。すなわち、図２８あるいは図３０を用いて説明したように、大ドットの密度データよりも小さな閾値の個数を求めて、得られた個数を大ドットの形成個数とする。また、大ドットの密度データよりも大きく且つ中ドット用の中間データよりも小さな閾値の個数を求めて、これを中ドットの形成個数とする。更に、中ドット用の中間データよりも大きく且つ小ドット用の中間データよりも小さな閾値の個数を求めて、これを小ドットの形成個数とする。
【０３１８】
こうして求めた各種ドットの形成個数が、先に設定されていた形成個数に対して変更されたか否かを判断する（ステップＳ８１２）。そして、形成個数が変更されたと判断されれば（ステップＳ８１２：ｙｅｓ）、多値化結果値ＲＶを「１」だけ増加させて（ステップＳ８１４）、得られた多値化結果値ＲＶを代表階調値ＢＤに対応づけて記憶する（ステップＳ８１６）。一方、形成個数が変更されていないと判断された場合は（ステップＳ８１２：ｎｏ）、多値化結果値ＲＶを増加させることなく、そのままの値を代表階調値ＢＤに対応づけて記憶する（ステップＳ８１６）。
【０３１９】
以上のようにして、ある代表階調値に対する多値化結果値を記憶したら、代表階調値ＢＤが階調値２５５に達したか否かを判断する（ステップＳ８１８）。階調値２５５に達していなければ（ステップＳ８１８：ｎｏ）、代表階調値ＢＤを「１」だけ増加させて（ステップＳ８２０）、ステップＳ８０８に戻って再び代表階調値ＢＤを密度データに変換した後、続く一連の処理を行って、新たな代表階調値ＢＤに対応づけて多値化結果値ＲＶを記憶する（ステップＳ８１６）。代表階調値ＢＤが階調値２５５に達するまで、こうした操作を繰り返す。そして、代表階調値ＢＤが階調値２５５に達したら（ステップＳ８１６：ｙｅｓ）、選択した分類番号については、すべての多値化結果値を設定したことになる。
【０３２０】
そこで、すべての分類番号について、以上のような処理を行ったか否かを判断し（ステップＳ８２２）、未処理の分類番号が残っている場合は（ステップＳ８２２：ｎｏ）、ステップＳ８００に戻って再び上述した処理を行う。こうした処理を繰り返し、すべての分類番号について、すべての多値化結果値を設定したと判断されたら（ステップＳ８２２：ｙｅｓ）、図５０に示した多値化用テーブル設定処理を終了する。
【０３２１】
以上の説明から明らかなように、多値化結果値は、代表階調値を変換して得られた大中小各ドットの密度データと、ディザマトリックス中で画素群に対応する位置に記憶されている閾値とによって決定される。ここで、図２９に示したドット密度変換テーブルは、画素群の分類番号が異なっていても同じテーブルを参照するから、代表階調値に対する各ドットの密度データも、分類番号によらず同じ密度データが得られる。しかし、ディザマトリックスから読み出された閾値の組は、分類番号毎に異なったものとなる。何故なら、ディザマトリックスは、画像上でドットが一定のパターンで発生したり、あるいは近接した位置に固まって発生することで画質を悪化させることの無いように、閾値は出来るだけ分散させて且つ出来るだけランダムに設定されている。このため、画素群に含まれる複数個の閾値を組として見たときに、全く同じ組合せとなる可能性は極めて低いと考えられるからである。このような理由から、第３実施例の多値化結果値生成処理で参照される多値化用テーブルは、代表階調値と多値化結果値との対応関係が分類番号毎に異なったものとなり、また、多値化結果値が変化する回数（図４１に示した多値化の段数）も、分類番号に応じて異なったものとなるのである。
【０３２２】
Ｅ−４．第３実施例の変形例  ：
上述した第３実施例の多値化結果値生成処理では、階調値０から階調値２５５までの代表階調値毎に、対応する多値化結果値を記憶した多値化用テーブルを参照している。しかし多値化結果値は、代表階調値が増加するに従って段階的に増加するだけなので、多値化結果値が切り換わる代表階調値だけを記憶しておけば、代表階調値に対する多値化結果値を求めることができる。以下では、このような第３実施例の変形例の多値化結果値生成処理について説明する。
【０３２３】
図５１は、第３実施例の変形例の多値化結果値生成処理において参照される閾値テーブルを概念的に示した説明図である。図示されているように閾値テーブルには、分類番号毎に、多値化結果値に対応する閾値が設定されている。この閾値は、代表階調値を階調値０から階調値２５５まで増加させたときに、その多値化結果値となる最も大きな代表階調値を表している。一例として、分類番号１番の画素群について説明する。分類番号１番については、多値化結果値「０」に対しては閾値「２」が設定されている。これは、分類番号１番の画素群については、代表階調値が「０」ないし「２」の範囲にあれば、多値化結果値が「０」となることを表している。また、多値化結果値「１」に対しては閾値「１５」が設定されている。これは、分類番号１番の画素群については、代表階調値が「３」から「１５」の範囲にあれば多値化結果値が「１」となることを表している。同様に、多値化結果値「１４」に対しては閾値「２４３」が、そして多値化結果値「１５」に対しては閾値「２５５」が設定されている。これは、代表階調値が「２４４」から「２５５」の範囲にあれば多値化結果値が「１５」になることを、そして、分類番号１番の画素群については、多値化結果値の最大値が「１５」であることを表している。
【０３２４】
尚、図５１では、分類番号毎の閾値は、それぞれ多値化結果値に対応させて設定されているものとした。しかし、特に多値化結果値に対応付けることなく、単なる閾値の組を分類番号毎に記憶することとしてもよい。この場合は、代表階調値よりも小さな閾値の個数を数えることで、多値化結果値を求めることができる。再び、分類番号１番の画素群を例に用いて説明する。例えば、代表階調値が「２０」であったとする。分類番号１番に設定されている閾値の組の中で、階調値２０よりも小さな閾値は、「２」、「１５」、「１８」の３個である。このことから、代表階調値２０に対する多値化結果値は「３」であると求めることとしてもよい。
【０３２５】
以上に説明した第３実施例の変形例の多値化結果値生成処理では、画素群についての代表階調値と分類番号とを求めた後、図５１に例示した閾値テーブルを参照することによって、多値化結果値を生成する。閾値テーブルは、前述した第３実施例の多値化結果生成処理中で参照する多値化用テーブル（図４０参照）よりも少ないデータ量で記憶しておくことができる。このため、変形例の多値化結果値生成処理は、第３実施例の処理に比べて、メモリ使用量を節約することが可能である。これに対して、前述した第３実施例の多値化結果値生成処理は、分類番号と代表階調値とから多値化用テーブルを参照するだけで直ちに多値化結果値を求めることができる。すなわち、変形例における処理のように代表階調値と閾値とを比較する必要がないので、迅速に多値化することが可能である。
【０３２６】
また、以上に説明した第３実施例の画像印刷処理においても、前述した第１実施例の第２の変形例における処理と同様に、画素群を常に分割することとして画像処理を行うこととしても良い。こうすれば、例えば８つの画素を含む画素群についての多値化用テーブルおよび順序値マトリックスをそのまま使用して、実質的には、より少ない画素を画素群とする処理を行うことができる。加えて、画素群を常に分割するものとして、実際の処理単位よりも大きな画素群を生成しておけば、前述した第１実施例の第２の変形例における場合と同様に、多値化用テーブルのデータ量を低減することも可能となる。例えば、半分の大きさの画素群を生成する代わりに、１つの画素群を２つに分割して処理する場合について説明する。この場合、多値化用テーブルに含まれる画素群の数は半分に減少する。一方、個々の多値化結果値については、画素群が大きくなるほどデータ長も大きくなる。上述した第３実施例に即して説明すれば、画素群に含まれる画素数が４つの場合は、個々の多値化結果値は４ビットで表現されるが、画素群に含まれる画素数が８つに増加すると、多値化結果値も５ビットのデータとなる。しかし、多値化結果値のデータ長の増加度合いよりも、画素群の数の減少度合いの方が大きくなっている。結局、小さな画素群を生成する代わりに、大きな画素群を常に２つに分割して処理することで、多値化用テーブルを記憶するために必要なメモリ容量を、５／８に減少させることが可能となる。
【０３２７】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、以上の実施例では、印刷用紙上にドットを形成して画像を印刷する場合について説明したが、本発明の適用範囲は画像を印刷する場合に限られるものではない。例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置などにも、本発明を好適に適用することができる。
【図面の簡単な説明】
【０３２８】
【図１】印刷システムを例にとって本実施例の概要を説明した説明図である。
【図２】本実施例の画像処理装置としてのコンピュータの構成を示す説明図である。
【図３】本実施例のカラープリンタの概略構成を示す説明図である。
【図４】インク吐出用ヘッドにおけるインクジェットノズルの配列を示す説明図である。
【図５】第１実施例の画像印刷処理の全体的な流れを示すフローチャートである。
【図６】ディザマトリックスの一部を概念的に例示した説明図である。
【図７】ディザマトリックスを参照しながら各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。
【図８】ディザ法を用いて画像データをドット形成の有無を表すデータに変換している様子を示した説明図である。
【図９】ドット個数のデータから画素毎にドット形成の有無を表すデータを生成する様子を示した説明図である。
【図１０】ブルーノイズマスク特性を有するディザマトリックスおよびグリーンノイズマスク特性を有するディザマトリックスについてマトリックスに設定されている閾値の空間周波数特性を概念的に例示した説明図である。
【図１１】第１実施例の多値化結果値生成処理の流れを示すフローチャートである。
【図１２】画素群にまとめられた各画素の階調値に基づいて画素群を分割するか否かを判断して代表階調値を決定する様子を概念的に示した説明図である。
【図１３】画素群毎の分類番号を決定するための考え方を示した説明図である。
【図１４】画素群の分類番号を決定する方法を示した説明図である。
【図１５】着目画素群の分類番号を決定する方法を具体的に示した説明図である。
【図１６】画素群の分類番号と代表階調値とから多値化結果値を取得するために参照される第１実施例の多値化用テーブルを概念的に示した説明図である。
【図１７】画素群の分類番号と代表階調値との組合せに応じて適切な多値化結果値を決定する様子を概念的に示した説明図である。
【図１８】多値化結果値を記憶するデータ形式の一例を示した説明図である。
【図１９】多値化結果値を記憶するデータ形式の他の一例を示した説明図である。
【図２０】多値化結果値をＥＳＣコードとともに記憶する様子を示した説明図である。
【図２１】第１実施例のドット形成有無決定処理の流れを示すフローチャートである。
【図２２】ディザマトリックスに基づいて順序値マトリックスを生成している様子を示した説明図である。
【図２３】多値化結果値と順序値マトリックスとに基づいて画素群内の各画素についてドット形成の有無を決定する様子を概念的に示した説明図である。
【図２４】対象画素についてのドット形成の有無を決定するために参照される変換テーブルを概念的に示した説明図である。
【図２５】第１実施例の変形例において用いられる分割パターンを例示した説明図である。
【図２６】第１実施例の変形例において分割パターンを示すＥＳＣコードを例示した説明図である。
【図２７】画素群内に形成される大ドット・中ドット・小ドットの個数をディザ法を適用して決定する処理の流れを示すフローチャートである。
【図２８】大ドット・中ドット・小ドットの形成有無を判断するハーフトーン処理の流れを示すフローチャートである。
【図２９】画像データの階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。
【図３０】画素群内の各画素についてディザ法を適用しながら大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。
【図３１】画素群毎に大ドット・中ドット・小ドットの形成個数が得られた様子を概念的に示した説明図である。
【図３２】第２実施例の多値化結果値と画素群内に形成される各種ドットの個数の組合せとの対応関係を示した説明図である。
【図３３】第２実施例における多値化結果値生成処理の流れを示すフローチャートである。
【図３４】第２実施例の多値化結果値生成処理で参照される多値化用テーブルを概念的に示した説明図である。
【図３５】第２実施例において多値化結果値とＥＳＣコードとが割り当てられている様子を示した説明図である。
【図３６】第２実施例のドット形成有無決定処理の前半部分の処理を示すフローチャートである。
【図３７】第２実施例のドット形成有無決定処理の後半部分の処理を示すフローチャートである。
【図３８】第２実施例のドット形成有無決定処理において参照される中間データ用の変換テーブルを概念的に示した説明図である。
【図３９】第２実施例のドット形成有無決定処理において中間データと順序値マトリックスとを用いてドット形成の有無を決定する様子を示した説明図である。
【図４０】第３実施例の多値化結果値生成処理で参照される多値化用テーブルを概念的に示した説明図である。
【図４１】第３実施例の多値化用テーブルにおいて画素群の分類番号毎に設定されている代表階調値と多値化結果値との対応関係を例示した説明図である。
【図４２】５ビットのデータに多値化結果値と分割パターンとが対応付けられている様子を示した説明図である。
【図４３】第３実施例の多値化結果値生成処理によって画素群にまとめられた画像データが多値化結果値に変換される様子を示した説明図である。
【図４４】第３実施例のドット形成有無決定処理の前半部分の処理を示すフローチャートである。
【図４５】第３実施例のドット形成有無決定処理の後半部分の処理を示すフローチャートである。
【図４６】画素群の分類番号を決定する方法を示した説明図である。
【図４７】画素群の座標値から画素群のディザマトリックス中での位置を求める方法を具体的に示した説明図である。
【図４８】第３実施例のドット形成有無決定処理において多値化結果値を中間データに変換する際に参照される変換テーブルを概念的に示した説明図である。
【図４９】画素群内の各画素について大中小各ドットの形成有無を判断している様子を概念的に示した説明図である。
【図５０】第３実施例の多値化結果値生成処理中で参照される多値化用テーブルを設定する処理の流れを示したフローチャートである。
【図５１】第３実施例の変形例の多値化結果値生成処理において参照される閾値テーブルを概念的に示した説明図である。
【符号の説明】
【０３２９】
１０…コンピュータ、  ２０…カラープリンタ、  １００…コンピュータ、
１０８…周辺機器インターフェースＰＩＦ、
１０９…ディスクコントローラＤＤＣ、
１１０…ネットワークインターフェースカードＮＩＣ、
１１２…ビデオインターフェースＶＩＦ、
１１６…バス、  １１８…ハードディスク、  １２０…デジタルカメラ、
１２２…カラースキャナ、  １２４…フレキシブルディスク、
１２６…コンパクトディスク、  ２３０…キャリッジモータ、  ２３５…モータ、
２３６…プラテン、  ２４０…キャリッジ、  ２４１…印字ヘッド、
２４２…インクカートリッジ、  ２４３…インクカートリッジ、
２４４…インク吐出用ヘッド、  ２６０…制御回路、  ２００…カラープリンタ、
３００…通信回線、  ３１０…記憶装置
【図１】
2006014036.tif 000003
【図２】
2006014036.tif 000004
【図３】
2006014036.tif 000005
【図４】
2006014036.tif 000006
【図５】
2006014036.tif 000007
【図６】
2006014036.tif 000008
【図７】
2006014036.tif 000009
【図８】
2006014036.tif 000010
【図９】
2006014036.tif 000011
【図１０】
2006014036.tif 000012
【図１１】
2006014036.tif 000013
【図１２】
2006014036.tif 000014
【図１３】
2006014036.tif 000015
【図１４】
2006014036.tif 000016
【図１５】
2006014036.tif 000017
【図１６】
2006014036.tif 000018
【図１７】
2006014036.tif 000019
【図１８】
2006014036.tif 000020
【図１９】
2006014036.tif 000021
【図２０】
2006014036.tif 000022
【図２１】
2006014036.tif 000023
【図２２】
2006014036.tif 000024
【図２３】
2006014036.tif 000025
【図２４】
2006014036.tif 000026
【図２５】
2006014036.tif 000027
【図２６】
2006014036.tif 000028
【図２７】
2006014036.tif 000029
【図２８】
2006014036.tif 000030
【図２９】
2006014036.tif 000031
【図３０】
2006014036.tif 000032
【図３１】
2006014036.tif 000033
【図３２】
2006014036.tif 000034
【図３３】
2006014036.tif 000035
【図３４】
2006014036.tif 000036
【図３５】
2006014036.tif 000037
【図３６】
2006014036.tif 000038
【図３７】
2006014036.tif 000039
【図３８】
2006014036.tif 000040
【図３９】
2006014036.tif 000041
【図４０】
2006014036.tif 000042
【図４１】
2006014036.tif 000043
【図４２】
2006014036.tif 000044
【図４３】
2006014036.tif 000045
【図４４】
2006014036.tif 000046
【図４５】
2006014036.tif 000047
【図４６】
2006014036.tif 000048
【図４７】
2006014036.tif 000049
【図４８】
2006014036.tif 000050
【図４９】
2006014036.tif 000051
【図５０】
2006014036.tif 000052
【図５１】
2006014036.tif 000053