(57)【要約】【課題】誤差拡散法におけるハイライト領域およびシャドー領域でのドット分散性を改善する。【解決手段】拡散範囲の異なる複数の誤差拡散マトリックスを記憶しておき、画像データの階調値に応じて、選択したマトリックスを用いて誤差を拡散する。ここで、複数の誤差拡散マトリックスの中で、拡散範囲の最も広いマトリックスについては、誤差をラスタ方向に偏らせて拡散するマトリックス（具体的には指向性係数が２．０以上のマトリックス）としておく。ハイライト領域やシャドー領域などのように誤差を広い範囲に拡散させる必要がある場合、誤差を等方的に拡散するマトリックスを用いたのでは、個々の画素へ拡散される誤差が小さくなってしまうのでドットが近接して発生する場合があるが、この様に指向性の強いマトリックスを用いれば、事実上、ドットが近接して発生することを回避することができる。【選択図】  図７
2004194179.tif 000002
【特許請求の範囲】
【請求項１】
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理装置であって、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる階調表現の誤差である階調誤差を算出する階調誤差算出手段と、
前記階調誤差を前記着目画素周辺にある未変換の画素へ拡散させるための、各画素への重みを示す誤差拡散マトリックスを、拡散範囲の広さを異にして複数種類記憶しているマトリックス記憶手段と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択するマトリックス選択手段と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する誤差拡散手段と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換するデータ変換手段と
を備え、
前記マトリックス記憶手段は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶している手段である画像処理装置。
【請求項２】
請求項１記載の画像処理装置であって、
前記マトリックス選択手段は、前記着目画素の画像データが小さいほど、前記拡散範囲の広い誤差拡散マトリックスを選択する手段である画像処理装置。
【請求項３】
請求項１または請求項２記載の画像処理装置であって、
前記マトリックス選択手段は、前記着目画素の画像データに加えて、該着目画素についての前記変換結果を考慮して、前記１の誤差拡散マトリックスを選択する手段である画像処理装置。
【請求項４】
請求項１記載の画像処理装置であって、
前記マトリックス記憶手段は、前記拡散範囲が広いほど前記指向性係数の大きな誤差拡散マトリックスを記憶している手段である画像処理装置。
【請求項５】
請求項１または請求項４記載の画像処理装置であって、
前記マトリックス記憶手段は、少なくとも前記指向性係数が２．０以上の誤差拡散マトリックスについては、前記拡散範囲が、前記着目画素を含むラスタおよび該ラスタに隣接するラスタの２つのラスタ内に限定されたマトリックスである画像処理装置。
【請求項６】
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理方法であって、
前記変換によって前記個々の画素で生じる階調表現の誤差たる階調誤差を周辺の未変換の画素に拡散させるために、該周辺の各画素について該階調誤差を拡散する際の重みを記述した誤差拡散マトリックスを、拡散範囲の広さを異にして予め複数種類記憶しておく第１の工程と、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる前記階調誤差を算出する第２の工程と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択する第３の工程と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する第４の工程と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換する第５の工程と
を備え、
前記第１の工程は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶する工程である画像処理方法。
【請求項７】
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理を、コンピュータを用いて実現するためのプログラムであって、
前記変換によって前記個々の画素で生じる階調表現の誤差たる階調誤差を周辺の未変換の画素に拡散させるために、該周辺の各画素について該階調誤差を拡散する際の重みを記述した誤差拡散マトリックスを、拡散範囲の広さを異にして予め複数種類記憶しておく第１の機能と、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる前記階調誤差を算出する第２の機能と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択する第３の機能と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する第４の機能と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換する第５の機能と
をコンピュータによって実現するとともに、
前記第１の機能は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶する機能であるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、多階調画像データをドット形成の有無によって表現された擬似階調データに変換する技術に関する。
【０００２】
【従来の技術】
インクジェットプリンタや液晶表示装置など、表示媒体上にドットを形成することによって画像を表現する画像表示装置は、コンピュータなどで作成した画像やデジタルカメラなどで撮影した画像の出力機器として広く使用されている。インクジェットプリンタなど、これらの画像表示装置を用いて多階調の画像を表現するためには、画像の多階調画像データを、ドット形成の有無によって表現された擬似階調データに一旦、変換しておく必要がある。こうした変換を行うための手法としては種々の方法が提案されてきたが、今日でも広く使用されている代表的な手法として誤差拡散法と呼ばれる手法がある。
【０００３】
誤差拡散法は、ある画素についてドット形成の有無を判断し、該判断によってその画素に生じた階調表現の誤差（以下では、この誤差を階調誤差と呼ぶ）を周辺の未判断の画素に拡散する。そして、未判断の画素についてドット形成の有無を判断するに際しては、こうして周囲の画素から拡散されてきた誤差を解消するようにドット形成の有無を判断する。一例としてインクジェットプリンタを例にとって説明すると、例えば、画像の明度が明るいハイライト領域でドットを形成すると判断した場合、その画素には大きな階調誤差が生じる。そこで、この誤差を周辺の未判断画素に拡散し、周辺の画素ではドットが形成され難くすることで、全体として誤差を解消してやる。逆に、画像の明度の低いシャドー領域では、ドットを形成しないと判断したときに大きな階調誤差が発生する。そこで、その画素で生じた階調誤差を周辺の画素に拡散し、周辺の画素にドットが形成され易くすることで、全体として誤差を解消してやる。
【０００４】
また、液晶表示装置などのように、輝点のドットを形成することで画像を表示する画像表示装置の場合には、インクジェットプリンタとは逆に、ハイライト領域でドットを形成しないと判断した場合、あるいはシャドー領域でドットを形成すると判断した場合に大きな階調誤差が発生する。このように液晶表示装置などについては、ドット形成の有無と階調誤差の発生との関係がインクジェットプリンタの場合に対して逆になるだけであるので、インクジェットプリンタに準じて考えることができる。以下では、説明が煩雑となることを避けるために、もっぱらインクジェットプリンタを想定して説明するが、液晶表示装置などについても同様のことが当てはまる。
【０００５】
誤差拡散法では、階調誤差を拡散させる周辺画素の範囲および周辺の各画素へ拡散する際の重み係数は、誤差拡散マトリックスと呼ばれる数表に予め記憶されており、階調誤差は、このマトリックスに従って周辺の画素に拡散される。また、より高い画質を得るためには、画像データの階調値に応じて、この誤差拡散マトリックスを使い分けてやることが望ましい。
【０００６】
例えば、ハイライト領域ではドットがまばらに形成される（すなわち、ドットとドットの間が大きく隔たった状態で形成される）ことが望ましいから、拡散範囲の広い大きな誤差拡散マトリックスを使用することが効果的である。こうすれば、ある画素でドットが形成された場合に、これによって生じた階調誤差を周辺の広い範囲に拡散して、そのドットの周辺にドットが形成され難くすることができるので、ドットの分散性を改善することができる。換言すれば、ハイライト領域では、ドットが形成された画素の近くには他のドットができるだけ形成され難くするために、ある画素で発生した階調誤差を、その画素の周辺の広い範囲に拡散するような誤差拡散マトリックスを使用することが望ましい。同様に、シャドー領域では、ドットが形成されない画素がまばらに発生することが画質の上で望ましいから、大きな誤差拡散マトリックスを使用することが望ましい。こうすれば、ドットが形成されなかった場合に生じる階調誤差を周辺の広い範囲に拡散してやることで、ドットの分散性を改善して、良好な画質を得ることができる。これに対して、ドットが形成される画素および形成されない画素がいずれも比較的高い密度で形成される中間階調領域では、拡散範囲の狭い小さな誤差拡散マトリックスを使用した場合でもドットの分散性はさほど悪化せず、むしろ誤差を拡散すべき画素数が減少するので、その分だけ画像データを変換する処理を迅速に行うことが可能となる。
【０００７】
【発明が解決しようとする課題】
このように、画質の上からは、ハイライト領域あるいはシャドー領域では、階調誤差を広い範囲に拡散すべく、できるだけ大きな誤差拡散マトリックスを使用することが望ましい。しかし、拡散範囲の広い誤差拡散マトリックスを用いているのにも関わらず、ドットが比較的接近して形成されてしまい、必ずしも予想される程度には画質が向上しない場合が散見された。
【０００８】
本発明は、従来技術における上述した課題を解決するためになされたものであり、ハイライト領域およびシャドウ領域でのドットの分散性を、効果的に改善可能な技術の提供を目的とする。
【０００９】
【課題を解決するための手段およびその作用・効果】
上述の課題の少なくとも一部を解決するため、本発明の画像処理装置は、次の構成を採用した。すなわち、
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理装置であって、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる階調表現の誤差である階調誤差を算出する階調誤差算出手段と、
前記階調誤差を前記着目画素周辺にある未変換の画素へ拡散させるための、各画素への重みを示す誤差拡散マトリックスを、拡散範囲の広さを異にして複数種類記憶しているマトリックス記憶手段と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択するマトリックス選択手段と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する誤差拡散手段と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換するデータ変換手段と
を備え、
前記マトリックス記憶手段は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶している手段であることを要旨とする。
【００１０】
また、上記の画像処理装置に対応する本発明の画像処理方法は、
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理方法であって、
前記変換によって前記個々の画素で生じる階調表現の誤差たる階調誤差を周辺の未変換の画素に拡散させるために、該周辺の各画素について該階調誤差を拡散する際の重みを記述した誤差拡散マトリックスを、拡散範囲の広さを異にして予め複数種類記憶しておく第１の工程と、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる前記階調誤差を算出する第２の工程と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択する第３の工程と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する第４の工程と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換する第５の工程と
を備え、
前記第１の工程は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶する工程であることを要旨とする。
【００１１】
かかる画像処理装置および画像処理方法においては、多階調の画像データをドット形成の有無によって表現された形式のデータに変換し、該変換によって着目画素に生じた階調誤差を、該着目画素の周辺にある未変換の画素に拡散する。拡散に際して参照される誤差拡散マトリックスは、拡散範囲を異にして予め複数記憶されているマトリックスの中から、着目画素の画像データに応じて１のマトリックスを選択して使用する。ここで、拡散範囲の広い誤差拡散マトリックスとしては、階調誤差をラスタ方向に偏らせて拡散させるようなマトリックスが記憶されている。階調誤差をラスタ方向に偏らせて拡散させるマトリックスとは、具体的には、後述する方法で算出される指向性係数が２．０以上となるマトリックス、より好ましくは指向性係数が２．５以上となるマトリックスである。
【００１２】
画像データをドット形成有無による表現形式のデータに変換するに際しては、着目画素で生じた階調誤差を周辺の未変換の画素に拡散してやれば、周辺の画素から拡散されてきた階調誤差を考慮しながら変換することができるので、画像データを適切に変換することが可能である。しかし、階調誤差を広い範囲に拡散すると、結果として、個々の画素に拡散される階調誤差が少なくなってしまうので、拡散されてきた階調誤差を適切に反映させながら画像データを変換することが困難となる。これに対して、階調誤差をラスタ方向に偏らせて拡散させるような誤差拡散マトリックスを使用すれば、少なくともラスタ方向については、拡散されてきた誤差を適切に考慮することが可能となり、延いては、画像データをドット形成有無による表現形式のデータに適切に変換することができる。もちろん、階調誤差をラスタ方向に偏らせて拡散すれば、ラスタに直交する方向へ拡散される誤差は減ってしまうので、直交方向については誤差を適切に考慮することは難しくなる。しかし、階調誤差を広い範囲に拡散させる必要が生じるのは、ドットがまばらに発生する場合あるいはドットの形成されない画素がまばらに発生する場合であることが多いので、ラスタ方向について誤差を適切に考慮しておけば、直交方向について誤差を適切に考慮しないことによる弊害は、事実上はほとんど生じない。
【００１３】
こうした画像処理装置および画像処理方法においては、着目画素の画像データが小さいほど、拡散範囲の広い誤差拡散マトリックスを選択することとしても良い。
【００１４】
画像データが小さくなるほどドットをまばらに発生させる必要がある。このことから、着目画素についての画像データが小さくなるほど、拡散範囲の広い誤差拡散マトリックスを用いて階調誤差を拡散することで、ドットをまばらに発生させることが可能となるので好ましい。
【００１５】
誤差拡散マトリックスを選択する際には、着目画素の画像データに加えて、該着目画素についての変換結果をも考慮して選択することとしても良い。
【００１６】
着目画素で生じる階調誤差は、該着目画素の画像データだけでなく、該画像データの変換結果によっても影響を受けるので、これらを考慮することにより、より適切な誤差拡散マトリックスを選択することが可能となる。
【００１７】
予め記憶しておく複数の誤差拡散マトリックスは、拡散範囲が広いほど指向性係数の大きなマトリックスとしても良い。
【００１８】
拡散範囲が広くなるほど、個々の画素に拡散される階調誤差は小さくなるので、これら画素の画像データを変換するに際して、拡散されてきた階調誤差を適切に考慮することが困難になる。従って、拡散範囲が広いマトリックスほど指向性係数の大きな誤差拡散マトリックスとしておけば、拡散されてきた階調誤差を適切に考慮しながら画像データを変換することが可能となるので好ましい。
【００１９】
こうした指向性の強い誤差拡散マトリックス、具体的には、指向性係数が２．０以上のマトリックスについては、拡散範囲が、着目画素を含むラスタおよび該ラスタに隣接するラスタの２つのラスタ内に限定されたマトリックスとしても良い。
【００２０】
誤差拡散マトリックスの拡散範囲を、着目画素を含むラスタおよび該ラスタに隣接するラスタの２つのラスタ内に限定しておけば、経験上、指向性係数が２．０以上のマトリックスを容易に作成することができる。
【００２１】
更に、拡散範囲の広い誤差拡散マトリックスについては、拡散範囲を２つのラスタ内に限定してやれば、階調誤差を拡散する画素数が少なくなって、その分だけ画像データを迅速に変換することが可能になると言う利点も得られるので特に好ましい。
【００２２】
更に本発明は、上述した画像処理方法を実現するためのプログラムをコンピュータに読み込ませ、コンピュータを用いて実現することも可能である。従って、本発明は次のようなプログラム、あるいは該プログラムを記録した記録媒体としての態様も含んでいる。すなわち、上述した画像処理方法に対応する本発明のプログラムは、
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理を、コンピュータを用いて実現するためのプログラムであって、
前記変換によって前記個々の画素で生じる階調表現の誤差たる階調誤差を周辺の未判断の画素に拡散させるために、該周辺の各画素について該階調誤差を拡散する際の重みを記述した誤差拡散マトリックスを、拡散範囲の広さを異にして予め複数種類記憶しておく第１の機能と、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる前記階調誤差を算出する第２の機能と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択する第３の機能と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する第４の機能と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換する第５の機能と
をコンピュータによって実現するとともに、
前記第１の機能は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶する機能であるプログラムとしての態様である。
【００２３】
また、上述の画像処理方法に対応する本発明の記録媒体は、
複数の画素から構成された多階調の画像データを、ドット形成の有無による表現形式のデータに、該画素の列たるラスタに沿って画素毎に変換する画像処理を実現するためのプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記変換によって前記個々の画素で生じる階調表現の誤差たる階調誤差を周辺の未判断の画素に拡散させるために、該周辺の各画素について該階調誤差を拡散する際の重みを記述した誤差拡散マトリックスを、拡散範囲の広さを異にして予め複数種類記憶しておく第１の機能と、
前記画像データをドット形成の有無による表現形式のデータに前記画素毎に変換する度に、該変換を行った着目画素に生じる前記階調誤差を算出する第２の機能と、
前記着目画素についての画像データに応じて、前記複数種類記憶されている誤差拡散マトリックスの中から１の誤差拡散マトリックスを選択する第３の機能と、
前記選択した誤差拡散マトリックスに従って、前記階調誤差を前記着目画素周辺の未変換の画素に拡散する第４の機能と、
周辺の変換済みの画素から拡散されてきた前記階調誤差を考慮しながら、前記着目画素についての前記画像データをドット形成の有無による表現形式のデータに変換する第５の機能と
を実現するプログラムを記録するとともに、
前記第１の機能は、少なくとも前記拡散範囲が最も広い前記誤差拡散マトリックスとしては、前記階調誤差を前記ラスタ方向へ拡散する程度を表す指向性係数が、２．０以上の誤差拡散マトリックスを記憶する機能である記録媒体としての態様である。
【００２４】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現すれば、画像データの変換速度を低下させることなく、ハイライト領域およびシャドウ領域でのドットの分散性を、効果的に改善することが可能となる。
【００２５】
【発明の実施の形態】
本発明の作用・効果をより明確に説明するために、本発明の実施の形態を、次のような順序に従って以下に説明する。
Ａ．装置構成：
Ｂ．画像処理の概要：
Ｃ．本実施例の階調数変換処理：
Ｄ．変形例：
【００２６】
Ａ．装置構成：
図１は、本発明に関わる画像処理装置および印刷装置からなる印刷システム１０の構成を示す説明図である。図示するように、この印刷システム１０は、コンピュータ８０にプリンタ２０が接続されて構成されており、コンピュータ８０に所定のプログラムがロードされて実行されると、コンピュータ８０とプリンタ２０とが全体として一体の印刷システム１０として機能する。印刷しようとする画像は、コンピュータ８０上で各種のアプリケーションプログラム９１によって作成された画像が使用される。また、コンピュータ８０に接続されたスキャナ２１を用いて取り込んだ画像や、あるいはデジタルカメラ（ＤＳＣ）２８で撮影した画像をメモリカード２７を経由して取り込んで使用することも可能である。これらの画像のデータＯＲＧは、コンピュータ８０内のＣＰＵ８１によって、プリンタ２０が印刷可能なデータに変換され、印刷データＦＮＬとしてプリンタ２０に出力される。プリンタ２０が、この印刷データＦＮＬに従って、印刷用紙上へのインクドットの形成を適切に制御することにより、最終的に、印刷用紙上に画像が印刷されることになる。
【００２７】
コンピュータ８０は、各種の演算処理を実行するＣＰＵ８１や、データを一時的に記憶するＲＡＭ８３、各種のプログラムを記憶しておくＲＯＭ８２，ハードディスク２６等から構成されている。また、ＳＩＯ８８をモデム２４を経由して公衆電話回線ＰＮＴに接続すれば、外部のネットワーク上にあるサーバＳＶから必要なデータやプログラムをハードディスク２６にダウンロードすることが可能となる。
【００２８】
プリンタ２０は、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）、黒（Ｋ）の各色のインクを備え、これらインクのドットを形成することで、印刷用紙上にカラー画像を印刷するインクジェットプリンタである。これらインクに加えて、淡いシアン（ＬＣ）のインクや、淡いマゼンタ（ＬＭ）のインク、あるいは暗いイエロ（ＤＹ）のインクなど、他色のインクを備えておき、これらインクによるドットを形成することとしても良い。
【００２９】
また、プリンタ２０は、ピエゾ素子を用いてインクを吐出することによって印刷用紙上にインクドットを形成する方式を採用している。尚、本実施例で使用したプリンタ２０では、ピエゾ素子を用いてインクを吐出する方式を採用しているが、他の方式によりインクを吐出するノズルユニットを備えたプリンタを用いるものとしてもよい。例えば、インク通路に配置したヒータに通電し、インク通路内に発生する泡（バブル）によってインクを吐出する方式のプリンタに適用するものとしてもよい。また、インクを吐出する代わりに、熱転写などの現象を利用してインクドットを形成したり、あるいは静電気を利用して印刷用紙上にトナーによるドットを形成する方式のプリンタであっても構わない。
【００３０】
図２は、本実施例の画像処理装置の機能を実現するための、コンピュータ８０のソフトウェアの構成を概念的に示すブロック図である。コンピュータ８０においては、すべてのアプリケーションプログラム９１はオペレーティングシステムの下で動作する。オペレーティングシステムには、ビデオドライバ９０やプリンタドライバ９２が組み込まれていて、各アプリケーションプログラム９１から出力される画像データは、ビデオドライバ９０で所定の信号変換が行われた後、モニタ２３で表示される。
【００３１】
また、アプリケーションプログラム９１が印刷命令を発すると、コンピュータ８０のプリンタドライバ９２は、アプリケーションプログラム９１から画像データを受け取って所定の画像処理を行い、プリンタが印刷可能な印刷データＦＮＬに変換した後、変換した印刷データＦＮＬをプリンタ２０に出力する。画像処理の内容については後述する。
【００３２】
図３は、本実施例のプリンタ２０の概略構成を示す説明図である。このプリンタ２０は、図示するように、キャリッジ４０に搭載された印字ヘッド４１を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ４０をキャリッジモータ３０によってプラテン３６の軸方向に往復動させる機構と、紙送りモータ３５によって印刷用紙Ｐを搬送する機構と、制御回路６０とから構成されている。
【００３３】
キャリッジ４０をプラテン３６の軸方向に往復動させる機構は、プラテン３６の軸と並行に架設されたキャリッジ４０を摺動可能に保持するための摺動軸３３と、キャリッジモータ３０との間に無端の駆動ベルト３１を張設するためのプーリ３２と、キャリッジ４０の原点位置を検出するための位置検出センサ３４等から構成されている。
【００３４】
印刷用紙Ｐを搬送する機構は、プラテン３６と、プラテン３６を回転させる紙送りモータ３５と、図示しない給紙補助ローラと、紙送りモータ３５の回転をプラテン３６および給紙補助ローラに伝えるギヤトレイン（図示省略）などから構成されている。印刷用紙Ｐは、プラテン３６と給紙補助ローラの間に挟み込まれるようにセットされ、プラテン３６の回転角度に応じて所定量だけ送られる。
【００３５】
制御回路６０は、ＣＰＵ６１とＲＯＭ６２とＲＡＭ６３等から構成されており、プリンタ２０の各種機構を制御する。すなわち、制御回路６０は、キャリッジモータ３０と紙送りモータ３５の動作を制御することによってキャリッジ４０の主走査と副走査とを制御するとともに、コンピュータ８０から供給される印刷データＦＮＬに基づいて、各ノズルでのインク滴の吐出を制御している。この結果、印刷用紙上の適切な位置にインクドットが形成される。
【００３６】
キャリッジ４０には、Ｃ，Ｍ，Ｙの各色インクを搭載するインクカートリッジ４２と、Ｋインクを搭載するインクカートリッジ４３とが装着されている。キャリッジ４０にインクカートリッジ４２，４３を装着すると、カートリッジ内の各インクは図示しない導入管を通じて、各色毎のインク吐出用ヘッド４４ないし４７に供給される。各ヘッドに供給されたインクは、制御回路６０の制御の下でインク吐出用ヘッド４４ないし４７から吐出される。
【００３７】
図４は、インク吐出用ヘッド４４ないし４７におけるインクジェットノズルＮｚの配列を示す説明図である。図示するように、インク吐出用ヘッドの底面には、Ｃ，Ｍ，Ｙ，Ｋの各色のインクを吐出する４組のノズル列が形成されており、１組のノズル列あたり４８個のノズルＮｚが、一定のノズルピッチｋで配列されている。
【００３８】
以上のようなハードウェア構成を有するプリンタ２０は、キャリッジモータ３０を駆動することによって、各色のインク吐出用ヘッド４４ないし４７を印刷用紙Ｐに対して主走査方向に移動させ、また紙送りモータ３５を駆動することによって、印刷用紙Ｐを副走査方向に移動させる。制御回路６０の制御の下、キャリッジ４０の主走査および副走査を繰り返しながら、適切なタイミングでノズルを駆動してインク滴を吐出することによって、プリンタ２０は印刷用紙上に画像を印刷する。
【００３９】
Ｂ．画像処理の概要：
図５は、本実施例の画像処理装置としてのコンピュータ８０が、画像データに所定の画像処理を加えることにより、印刷データに変換する処理の流れを示すフローチャートである。かかる処理は、コンピュータ８０のオペレーティングシステムがプリンタドライバ９２を起動することによって開始される。以下、図５に従って、画像処理の内容を簡単に説明する。
【００４０】
プリンタドライバ９２は、画像処理ルーチンを開始すると、先ず初めに、変換すべき画像データの読み込みを開始する（ステップＳ１００）。ここで読み込む画像データは、２５６階調のＲＧＢカラー画像データである。
【００４１】
次いで、取り込んだ画像データの解像度を、プリンタ２０が印刷するための解像度に変換する（ステップＳ１０２）。画像データの解像度が印刷解像度よりも低い場合は、線形補間を行うことで隣接する画像データ間に新たなデータを生成し、逆に印刷解像度よりも高い場合は、一定の割合でデータを間引くことによって画像データの解像度を印刷解像度に変換する。
【００４２】
解像度を変換したら、色変換処理を開始する（ステップＳ１０４）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組み合わせによって表現されているＲＧＢ画像データを、印刷のために使用される各色の階調値の組合せによって表現された画像データに変換する処理である。前述したように、プリンタ２０はＣ，Ｍ，Ｙ，Ｋの４色のインクを用いて画像を印刷しているから、本実施例の色変換処理ではＲＧＢ画像データを、Ｃ，Ｍ，Ｙ，Ｋの各色の階調値によって表現されたデータに変換する。色変換処理は、色変換テーブル（ＬＵＴ）と呼ばれる３次元の数表を参照することで行う。ＬＵＴには、ＲＧＢ画像データに対して、色変換によって得られたＣ，Ｍ，Ｙ，Ｋ各色の階調値が予め記憶されているので、このＬＵＴを参照しながら変換すれば、迅速に色変換することが可能である。
【００４３】
こうして色変換処理を終了すると、続いて、階調数変換処理を開始する（ステップＳ１０６）。階調数変換処理とは次のような処理である。色変換処理によって得られた画像データは、階調値０から階調値２５５までの値を取る２５６階調を有するデータである。これに対して、プリンタ２０は、印刷用紙上にドットを「形成する」か「形成しない」かのいずれかの状態しか取り得ない。そこで、２５６階調を有する画像データを、ドット形成の有無に対応する２階調のデータに変換する必要がある。このように階調数変換処理とは、２５６階調を有する画像データをドット形成の有無を示すデータ（以下では、この様なデータをドットデータと呼ぶ）に変換する処理である。本実施例では、誤差拡散法と呼ばれる手法を用いて階調数変換処理を行う。詳細には後述するが、誤差を拡散する際に参照される誤差拡散マトリックスとして、指向性の強いマトリックスを参照することで、高画質の画像を得ることが可能となっている。
【００４４】
階調数変換処理に続いて、インターレース処理を行う（ステップＳ１０８）。インターレース処理とは、ドットの形成有無を表す形式に変換されたドットデータを、プリンタが実際にドットを形成する順番を考慮しながら、プリンタ２０に転送すべき順序に並べ替える処理である。プリンタドライバは、インターレース処理を行って最終的に得られたデータを、印刷データＦＮＬとしてプリンタ２０に出力する（ステップＳ１１０）。
【００４５】
プリンタ２０は、こうして変換された印刷データＦＮＬに従って、各種のインクドットを印刷用紙上に形成する。その結果、画像データに対応したカラー画像が印刷用紙上に印刷される。
【００４６】
Ｃ．本実施例の階調数変換処理：
本実施例の階調数変換処理では、いわゆる誤差拡散法と呼ばれる手法を用いて階調数を変換しており、誤差の拡散に用いる誤差拡散マトリックスとして、指向性の強いマトリックスを用いることによって、効果的な誤差の拡散を実現している。
【００４７】
図６は、コンピュータ８０の内部で実行される本実施例の階調数変換処理を、内部の機能に着目して概念的に表したブロック図である。階調数変換処理は、それぞれに固有の機能を有する複数のモジュールが組み合わされて実行されていると考えることができる。これらのモジュールは、物理的には、コンピュータ８０に内蔵されたＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３などによって構成されている。また、これらのモジュールは全体として、階調数変換処理を行う一つのモジュール（階調数変換モジュール１００）を構成していると考えることもできる。この階調数変換モジュール１００は、色変換後の画像データを受け取って所定の画像処理を施すことによってドットデータを生成する。こうして得られたドットデータに前述のインターレース処理を施すことによって、プリンタ２０で印刷可能な印刷データＦＮＬを得ることができる。理解の便宜を図るために、先ず初めに、図６を参照しながら本実施例の階調数変換処理の概要について説明する。
【００４８】
階調数変換モジュール１００は、ドット形成の有無を１画素ずつ判断していく。先ず初めに、階調数変換モジュール１００に、色変換後のＣＭＹＫ各色の画像データを入力する。すると、判断の対象としている着目画素についての画像データが、データ補正モジュール１０２に供給される。尚、階調数変換モジュール１００内では、Ｃ，Ｍ，Ｙ，Ｋの各色について同様な処理が行われる。以下では、説明が煩雑となることを避けるために色を特定せずに説明するが、色を特定することなく行った説明は、各色毎に同様な処理が行われることを意味しているものとする。例えば、データ補正モジュール１０２に入力されている画像データ「data」とは、Ｃ，Ｍ，Ｙ，Ｋ各色についての画像データを表している。
【００４９】
データ補正モジュール１０２では、次式に従って、画像データdataと、着目画素に拡散されて積算されている誤差（以下では、この値を誤差積算値accerrと呼ぶことにする）とを加算することにより、補正データdataC を算出する。
dataC ＝  data  ＋  accerr
誤差積算値accerrの意味するところについては後述するが、大まかには、周辺の画素から着目画素に拡散されてきた誤差を表す数値と考えることができる。このように、画像データdataに誤差積算値accerrを加算して補正データdataC を算出する。
【００５０】
こうして算出された補正データdataC は、２値化モジュール１０４に供給される。２値化モジュール１０４では、補正データdataC と所定の閾値ｔｈとを比較することによって、着目画素についてのドット形成の有無を判断する。すなわち、補正データdataC が閾値ｔｈよりも大きい場合（dataC ≧ｔｈ）は、着目画素にドットを形成すると判断して、２値化結果を示す値resultにドットを形成することを表す値「１」を代入する。逆に、補正データdataC が閾値ｔｈよりも小さい場合（dataC ＜ｔｈ）は、着目画素にドットを形成しないと判断して、２値化結果を示す値resultにドットを形成しないことを表す値「０」を代入する。このように、画像データdataに誤差積算値accerrを加算して補正データdataC を算出し、算出した補正データdataC に基づいてドット形成の有無を判断することで、周辺の画素で発生した誤差をドット形成有無の判断に反映させることが可能となっている。
【００５１】
誤差算出モジュール１０６では、補正データdataC と２値化結果resultとを受け取って、階調誤差err を算出する。階調誤差err とは、着目画素についてドット形成の有無を判断したことによって、その画素で生じる階調表現の誤差である。例えば、ドットを形成したときに着目画素に表現される階調値が「２５５」であるとすると、ドットを形成した時の階調誤差err は次式によって与えられる。
err ＝  dataC −２５５
また、ドットを形成しなかったときに着目画素に表現される階調値を「０」とすれば、ドットを形成しなかったときの階調誤差err は、
err ＝  dataC −０（＝dataC ）
と求めることができる。
【００５２】
こうして求められた階調誤差err は誤差拡散モジュール１０８に供給される。誤差拡散モジュール１０８では、供給された階調誤差err を、着目画素の周辺にある未判断の画素に拡散する処理が行われる。階調誤差err の拡散は、誤差拡散マトリックスを参照することによって行われる。誤差拡散マトリックスには、着目画素周辺の複数の画素の内、「どの画素」に「どのような比率」で階調誤差を拡散させるかが記憶されている。
【００５３】
図７は、本実施例の階調数変換処理で用いられる誤差拡散マトリックスを例示した説明図であり、６つのマトリックスが示されている。図７（ｆ）に示したマトリックスＦを例にとって、図の意味するところについて説明する。図中で示した小さな正方形は、画素を概念的に示したものである。図７（ｆ）には、隣接する８つの画素が示されている。また、内部に「＊」が表示された正方形は着目画素を表し、他の７つの正方形は階調誤差err を拡散する周辺の未判断画素を表している。周辺の画素の中に表示された数値は、着目画素で生じた階調誤差err を拡散させる際の重みを示している。すなわち、各画素に拡散される階調誤差が、それぞれの画素内に表示された比率で分配されるように、着目画素で生じた階調誤差err が拡散される。一例として、図７（ｆ）中で着目画素の右側にある画素について説明する。着目画素の右側にある画素の数値は「３」となっており、また、周辺の全画素の数値を合計すると「１６」になるから、着目画素の右側の画素には階調誤差err の３／１６の誤差が拡散されることになる。同様に、着目画素の真下の画素には、階調誤差err の１／４が拡散される。
【００５４】
図６の誤差拡散マトリックス選択モジュール１１２には、図７に示した６つの誤差拡散マトリックスが記憶されている。この誤差拡散マトリックス選択モジュール１１２は、画像データdataと２値化結果resultとを受け取り、これら複数のマトリックスの中から適切な誤差拡散マトリックスMatrixを選択して、誤差拡散モジュール１０８に供給する。例えば、画像データdataが、階調値０≦data＜２の範囲にあるときは、図７（ａ）に示した誤差拡散マトリックスＡを選択する。画像データdataが、階調値２≦data＜３の範囲にあるときは、図７（ｂ）に示した誤差拡散マトリックスＢを選択し、画像データdataが階調値３≦data＜６の範囲にあるときは、図７（ｃ）に示した誤差拡散マトリックスＣを、階調値６≦data＜９の範囲にあるときは、図７（ｄ）に示したマトリックスＤを、階調値９≦data＜１２の範囲にあるときは図７（ｅ）に示したマトリックスＥを選択する。また、画像データdataが階調値１２≦dataの範囲にあるとき、あるいはresult＝０の場合には、図７（ｆ）に示した誤差拡散マトリックスＦを選択する。
【００５５】
誤差拡散モジュール１０８は、こうして選択された誤差拡散マトリックスMatrixに従って、階調誤差err を周辺の未判断画素に拡散する。拡散された階調誤差err は、拡散誤差記憶モジュール１１０に画素毎に記憶される。図７に示した誤差拡散マトリックスから明らかなように、１つの着目画素からは複数の画素に誤差が拡散される。これを逆から見れば、ある画素には複数の着目画素からの階調誤差が拡散されることになる。拡散誤差記憶モジュール１１０には、こうして複数の着目画素から拡散されてきた階調誤差が、画素毎に蓄積されて記憶されている。そして、誤差が蓄積されて記憶されている画素についてドット形成の有無を判断しようとする場合は、拡散誤差記憶モジュール１１０に記憶されている誤差を読み出して、ドット形成の有無の判断に反映させる。すなわち、前述したデータ補正モジュール１０２で、画像データdataと加算される誤差積算値accerrとは、こうして複数の着目画素から拡散されて、拡散誤差記憶モジュール１１０内に画素毎に蓄積された階調誤差である。
【００５６】
図６に示した階調数変換モジュール１００は、以上のような処理を行って画素毎にドット形成の有無を判断する。こうしてＣ，Ｍ，Ｙ，Ｋ各色についてドット形成の有無を判断することによってドットデータを生成している。
【００５７】
図８は、図６を参照しながら概要を説明した階調数変換処理の流れを示すフローチャートである。以下では、フローチャートに従って処理の流れを簡単に説明する。
【００５８】
階調数変換処理を開始すると、先ず初めに、着目画素についての画像データdataの読み込みを行う（ステップＳ２００）。次いで、着目画素に対応付けて記憶されている誤差積算値accerrを読み出して、画像データdataと加算することにより、補正データdataC を算出する（ステップＳ２０１）。
【００５９】
こうして得られた補正データdataC と所定の閾値ｔｈとを比較することにより、着目画素についてのドット形成の有無を判断する（ステップＳ２０４）。閾値ｔｈの値は、ドットを形成した画素に表現される階調値（階調値２５５）と、ドットを形成しなかった画素に表現される階調値（階調値０）との中間の階調値（階調値１２８）に設定されている。もっとも閾値ｔｈの値は必ずしも固定されている必要はなく、より好ましい画質が得られるように、画像データの階調値やドット形成有無の判断結果などに応じて変更することも可能である。
【００６０】
補正データdataC の方が閾値ｔｈよりも大きいと判断された場合は（ステップＳ２０４：ｙｅｓ）、着目画素にドットを形成すると判断して、２値化結果を表す値resultに値「１」を代入する（ステップＳ２０６）。すなわち、resultに「１」が代入されている場合は、その画素にドットを形成することを意味している。逆に、補正データdataC の方が閾値ｔｈよりも小さいと判断された場合には（ステップＳ２０４：ｎｏ）、着目画素にはドットを形成しないと判断して、２値化結果を表す値resultに値「０」を代入する（ステップＳ２０８）。すなわち、resultに「０」が代入されている場合は、その画素にはドットを形成しないことを意味している。
【００６１】
次いで、着目画素について、ドット形成の有無を判断したことによって生じる階調表現の誤差（階調誤差err ）を算出する（ステップＳ２１０）。ここでは、ドットを形成した画素には階調値２５５が表現され、ドットを形成しない画素には階調値０が表現されるとしているから、ドットを形成する場合の階調誤差err は、dataC −２５５によって求めることができる。また、ドットを形成しない場合の階調誤差err は、dataC となる。
【００６２】
続いて、誤差拡散マトリックスを選択する処理を行う（ステップＳ２１２）。誤差拡散マトリックスとしては、図７に示した６つのマトリックスが記憶されており、着目画素の画像データdataと、ドット形成の判断結果とに応じて適切な誤差拡散マトリックスMatrixを選択する。すなわち、一般的には、画像データdataの階調値が小さくなるに従って、拡散範囲の広い（多くの画素に誤差を拡散させる）大きなマトリックスを選択する。但し、着目画素にドットを形成しないと判断した場合には、画像データdataの階調値に関わらず、拡散範囲の狭い小さなマトリックスを選択する。
【００６３】
こうして選択した誤差拡散マトリックスMatrixに従って、着目画素で発生した階調誤差err を周辺の未判断の画素に拡散する処理を行う（ステップＳ２１２）。各画素に拡散された階調誤差は、誤差積算値accerrとして画素毎に記憶される。
【００６４】
以上のようにして着目画素で発生した階調誤差err を拡散したら、全画素についてのドット形成の有無を判断したか否かを判断し（ステップＳ２１６）、未判断の画素が残っている場合は（ステップＳ２１６：ｎｏ）、ステップＳ２００に戻って続く一連の処理を行う。全ての画素についての判断が終了したと判断されたら（ステップＳ２１６：ｙｅｓ）、図８に示した階調数変換処理を抜けて、図５に示した画像処理ルーチンに復帰する。
【００６５】
以上に説明した本実施例の階調数変換処理では、階調誤差err を広い範囲に拡散させる誤差拡散マトリックスが、誤差を左右方向（ラスタ方向もしくは副走査方向）に偏らせて拡散させるマトリックスとなっている。本明細書では、階調誤差を左右方向に偏らせて拡散する度合いを示す指標として、指向性係数を使用する。指向性係数の算出方法については後述するが、誤差を左右方向に偏らせて拡散する度合いが強くなるほど、指向性係数は大きな値を取る。指向性係数の大きな誤差拡散マトリックスを用いて拡散すれば、階調誤差err は着目画素を中心とした周囲の画素に等方的に拡散されるのではなく、左右方向に偏って拡散されることになる。本実施例の階調数変換処理では、このようにして階調誤差err を拡散することにより、ハイライト領域およびシャドウ領域においてドットを均一に分散させることが可能となっている。
【００６６】
また、本実施例では、拡散範囲の広い誤差拡散マトリックスは、単に強い指向性を有するだけでなく、その拡散範囲が、着目画素を含むラスタとそのラスタに隣接するラスタの２つのラスタに限定されている。このため、階調誤差を遠方まで拡散させる割には、誤差を拡散する画素数が少なくなっており、画像データを迅速に変換することができる。すなわち、画像データの変換速度とドットの分散性とを同時に改善することが可能となっている。
【００６７】
以下では、指向性係数の算出方法について説明した後、指向性の強い誤差拡散マトリックスを用いることで、こうした効果が得られる理由について説明する。
【００６８】
図９は、指向性係数の算出方法を示す説明図である。一例として図９（ａ）に示した誤差拡散マトリックスを用いて説明する。図９（ａ）中で、「＊」が表示された小さな正方形は着目画素を表しており、その他の正方形は、着目画素で生じた階調誤差err を拡散する周辺の画素を表している。周辺の各画素の中には、階調誤差err を拡散するための重みが表示されている。例えば、着目画素の右隣の画素には重み「ａ」で階調誤差err を拡散し、その右隣の画素には重み「ｂ」で拡散する。また、着目画素の真下の画素には重み「ｅ」で階調誤差err を拡散する。着目画素から右隣の画素（重み「ａ」と表示された画素）あるいは、その右隣の画素（重み「ｂ」と表示された画素）に拡散する場合は、階調誤差err をラスタ方向に沿って拡散していると言えるが、真下の画素（重み「ｅ」と表示された画素）に拡散する場合は、ラスタ方向に沿って誤差を拡散していることにはならない。すなわち、階調誤差err を拡散しようとする画素の位置によって、ラスタ方向への指向性に寄与する画素と寄与しない画素とが存在することになる。こうして、個々の画素に注目し、その画素がラスタ方向への指向性に寄与する画素か否かを考えることで、誤差拡散マトリックス全体としての指向性係数を求めることができる。
【００６９】
今、図９（ａ）に示した例示において、着目画素から、重み「ｇ」と表示された画素に階調誤差err を拡散するものとする。図９（ｂ）は、重み「ｇ」と表示された画素と着目画素とに注目して、階調誤差err を拡散する様子を概念的に表した説明図である。重み「ｇ」と表示された画素は、着目画素からラスタ方向には２画素分だけ隔たっており、ラスタと直交する方向には１画素分だけ隔たっている。そこで、着目画素から重み「ｇ」と表示された画素への拡散に対する指向性係数を考えて、この指向性係数が、（２−１）＊ｇ／ＳＵＭによって与えられるものとする。ここでＳＵＭとは、各画素の重みの加算値（＝ａ＋ｂ＋ｃ＋ｄ＋ｅ＋ｆ＋ｇ＋ｈ＋ｉ＋ｊ）である。これを一般化すれば次のようになる。着目画素からラスタ方向にＮ画素分だけ先（あるいはＮ画素分だけ後ろ）で、且つラスタと直角方向にＭ画素分だけ隔たった画素に拡散するときの指向性係数は、その画素の重みを「ｎ」とすると、
指向性係数＝（Ｎ−Ｍ）＊ｎ／ＳＵＭ
によって算出することができる。ここでのＳＵＭは、想定している誤差拡散マトリックス中の各画素についての「重み」の合計値である。
【００７０】
誤差拡散マトリックスに含まれる他の画素についても同様にして指向性係数を求め、これらを合計すれば、誤差拡散マトリックス全体としての指向性係数を求めることができる。図９（ｃ）には、図９（ａ）に示す誤差拡散マトリックスについての指向性係数の算出式が示されている。
【００７１】
図７に示したそれぞれの誤差拡散マトリックスには、こうして求めた指向性係数も併せて表示してある。図７に示した複数のマトリックスの中で最も大きな誤差拡散マトリックスは、指向性係数が「２．５５」のマトリックスとなっている。このように、少なくとも拡散範囲の最も大きな誤差拡散マトリックスについては、指向性係数が大きな値となる、すなわち指向性の強いマトリックスを用いることで、ハイライト領域およびシャドウ領域においてドットを均一に分散させることが可能となる。指向性係数が２．０以上であれば、経験上、強い指向性を有する誤差拡散マトリックスと考えることができ、指向性係数が２．５以上であれば十分に指向性の強い誤差拡散マトリックスと考えることができる。以下では、これら指向性の強い誤差拡散マトリックスを用いることで、こうした効果が得られる理由について説明する。
【００７２】
そもそも、拡散範囲の広い大きな誤差拡散マトリックスを使用する領域とは、ハイライト領域のようにドットがまばらに形成されている領域、あるいはシャドー領域のようにドットの形成されない画素がまばらに存在する領域が相当する。例えば、ハイライト領域では、まばらに形成されているドット間の距離が、いずれの方向についても、ほぼ一定となっていることが望ましい。従って、ある着目画素でドットが形成された場合、着目画素を中心とする一定距離内の画素ではドットが形成され難くなるように、階調誤差を周辺の画素に等方的に拡散することを考えるのが通常である。すなわち、誤差拡散マトリックスとしては、階調誤差を等方的に拡散するようなマトリックスが用いられる。
【００７３】
ところが、拡散範囲が広くなり、階調誤差err を拡散する画素数が多くなるほど、個々の画素に拡散される階調誤差は小さくなっていく。従って、拡散範囲がある程度広くなると、着目画素から僅かな誤差しか拡散されなくなって、誤差が拡散された画素でドットが形成されることを十分に抑制することが困難になってしまう。そこで、広い範囲に誤差を拡散する場合には、指向性の強い誤差拡散マトリックスを用いて、階調誤差をラスタ方向に偏らせて拡散してやる。こうすれば、着目画素からラスタ方向に遠く隔たった画素にも階調誤差err を十分に拡散することができ、ドットの形成を効果的に抑制することが可能となる。
【００７４】
これを図１０を参照しながら説明する。図１０は、ハイライト領域でドットがまばらに形成されている様子を概念的に示している。図１０（ａ）は、誤差を等方的に拡散する誤差拡散マトリックスを用いた場合を示し、図１０（ｂ）は、指向性の強い誤差拡散マトリックスを用いた場合を示している。どちらの場合も、形成されているドットの総数は同じである。しかし、図１０（ａ）では、２つのドットが近づいて形成されている部分が散見される。例えば、ドットａの近くにドットｂが形成されている。本来は、ハイライト領域でドットａが形成されると大きな階調誤差が発生するので、この誤差が拡散された周辺の領域ではドットが形成され難くなるはずである。しかし、階調誤差を拡散する範囲が広くなると、個々の画素に拡散される誤差の値は小さくなるから、階調誤差を等方的に拡散したのでは、左右方向の画素でドットの形成を十分に抑制することができなってしまう。ハイライト領域でドットがまばらに形成されているにも関わらず、ドットａの近くにドットｂが形成されてしまうのは、この様な理由によるものと考えられる。
【００７５】
これに対して図１０（ｂ）では、指向性の強い誤差拡散マトリックスを用いることにより、ドットが形成されたことによる階調誤差をラスタ方向に偏らせて拡散させている。このため、複数のドットがラスタ方向に近づいて形成されることを確実に回避することが可能である。もちろん、このように階調誤差をラスタ方向に偏らせて拡散すれば、ラスタと直交する方向に拡散する比率は小さくなってしまうので、ラスタと直交する方向にはドットが近接して形成されることが懸念される。しかし、図１０（ｂ）に示されているように、階調誤差をラスタ方向に適切に拡散しておけば、実際には、ラスタと直交する方向にも、ラスタ方向と同程度にドットを離して形成することが可能である。
【００７６】
Ｄ．変形例：
以上の説明では、図７に示した一組の誤差拡散マトリックスを用いて階調数変換処理を行うものとして説明したが、誤差拡散マトリックスは適宜、適切なマトリックスを組み合わせて用いることができる。このとき、少なくとも、最も拡散範囲の広いマトリックスについては、図７に例示したマトリックスに限られず、指向性係数が２．０以上のマトリックスを用いれば良い。例えば、図１１に示した誤差拡散マトリックスを適宜、組み合わせて用いることができる。
【００７７】
また、指向性係数が２．０以上となる誤差拡散マトリックスは、必ずしも最も拡散範囲の広いマトリックス一つに限られるものではない。良好な画質が得られるように、複数のマトリックスについて指向性係数を２．０以上とすることもできる。
【００７８】
複数の誤差拡散マトリックスの中で、拡散範囲の広い（すなわち、階調誤差err を拡散する画素数の多い）マトリックスほど、大きな指向性係数を有するマトリックスとしてもよい。拡散範囲が広くなるほど、個々の画素に拡散される階調誤差err は小さくなってしまう。従って、拡散範囲が広いほど指向性係数の大きな誤差拡散マトリックスを用いれば、階調誤差を効果的に拡散することができる。もっとも、階調誤差を拡散する画素がある程度少なければ、いずれの画素についても効果的に誤差を拡散することができるので、ある程度小さなマトリックスについては、拡散範囲の大きさの序列と指向性係数の序列とが不整合となるものがあっても構わない。
【００７９】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、上述の機能を実現するソフトウェアプログラム（アプリケーションプログラム）を、通信回線を介してコンピュータシステムのメインメモリまたは外部記憶装置に供給し実行するものであってもよい。もちろん、ＣＤ−ＲＯＭやフレキシブルディスクに記憶されたソフトウェアプログラムを読み込んで実行するものであっても構わない。
【００８０】
また、上述した各種実施例では、画像データ変換処理はコンピュータ内で実行されるものとして説明したが、画像データ変換処理の一部あるいは全部をプリンタ側、あるいは専用の画像処理装置を用いて実行するものであっても構わない。
【００８１】
更には、画像表示装置は、必ずしも印刷媒体上にインクドットを形成して画像を印刷する印刷装置に限定されるものではなく、例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置であっても構わない。
【図面の簡単な説明】
【図１】本発明に関わる画像処理装置および印刷装置からなる印刷システムの構成を示す説明図である。
【図２】本実施例の画像処理装置の機能を実現するための、コンピュータのソフトウェアの構成を概念的に示すブロック図である。
【図３】本実施例のプリンタの概略構成を示す説明図である。
【図４】インク吐出用ヘッドの底面にノズルが配置されている様子を示した説明図である。
【図５】本実施例の画像処理装置としてのコンピュータが、画像データに所定の画像処理を加えることにより、印刷データに変換する処理の流れを示すフローチャートである。
【図６】コンピュータの内部で実行される本実施例の階調数変換処理を、内部の機能に着目して概念的に表したブロック図である。
【図７】本実施例の階調数変換処理で用いられる誤差拡散マトリックスを例示した説明図である。
【図８】本実施例の階調数変換処理の流れを示すフローチャートである。
【図９】指向性係数の算出方法を示す説明図である。
【図１０】ハイライト領域でドットがまばらに形成される様子を概念的に示した説明図である。
【図１１】他の誤差拡散マトリックスを例示する説明図である。
【符号の説明】
１０…印刷システム
２０…プリンタ
２１…スキャナ
２３…モニタ
２４…モデム
２６…ハードディスク
２７…メモリカード
３０…キャリッジモータ
３１…駆動ベルト
３２…プーリ
３３…摺動軸
３４…位置検出センサ
３５…紙送りモータ
３６…プラテン
４０…キャリッジ
４１…印字ヘッド
４２，４３…インクカートリッジ
４４…インク吐出用ヘッド
６０…制御回路
６１…ＣＰＵ
６２…ＲＯＭ
６３…ＲＡＭ
８０…コンピュータ
８１…ＣＰＵ
８２…ＲＯＭ
８３…ＲＡＭ
８８…ＳＩＯ
９０…ビデオドライバ
９１…アプリケーションプログラム
９２…プリンタドライバ
１００…階調数変換モジュール
１０２…データ補正モジュール
１０４…２値化モジュール
１０６…誤差算出モジュール
１０８…誤差拡散モジュール
１１０…拡散誤差記憶モジュール
１１２…誤差拡散マトリックス選択モジュール
【図１】
2004194179.tif 000003
【図２】
2004194179.tif 000004
【図３】
2004194179.tif 000005
【図４】
2004194179.tif 000006
【図５】
2004194179.tif 000007
【図６】
2004194179.tif 000008
【図７】
2004194179.tif 000009
【図８】
2004194179.tif 000010
【図９】
2004194179.tif 000011
【図１０】
2004194179.tif 000012
【図１１】
2004194179.tif 000013