(57)【要約】【課題】誤差拡散法におけるハイライト領域およびシャドー領域でのドット分散性を改善する。【解決手段】拡散範囲の異なる複数の誤差拡散マトリックスを記憶しておき、発生した誤差に応じてマトリックスを選択し、周辺の画素に誤差を拡散する。ここで、複数の誤差拡散マトリックスの中で、拡散範囲の最も広いマトリックスについては、誤差をラスタ方向に偏らせて拡散するマトリックス（具体的には指向性係数が２．０以上のマトリックス）としておく。ハイライト領域やシャドー領域などのように誤差を広い範囲に拡散させる必要がある場合、誤差を等方的に拡散するマトリックスを用いたのでは、個々の画素へ拡散される誤差が小さくなってしまうのでドットが近接して発生する場合があるが、この様に指向性の強いマトリックスを含む複数のマトリックスを切り換えながら誤差を拡散すれば、ドットが近接して発生することを回避することができる。【選択図】  図７
2004194181.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と２値化結果resultとに基づいて、誤差拡散マトリックスMatrixを選択する様子をまとめて示した説明図であり、図の上欄は画像データdataの階調値を表している。階調値の小さな領域はハイライト領域に相当し、階調値が大きくなるに連れて、中間領域、シャドー領域と移り変わっていく。また、図中の左欄はドット形成有無の判断結果を表している。ドット形成有無の判断結果は、「ＯＮ」（ドットを形成する）および「ＯＦＦ」（ドットを形成しない）のいずれかの状態を取り得る。
【００６４】
図８に示されているように、着目画素にドットを形成し（ドット判断結果「ＯＮ」）、且つ、着目画素の画像データdataが階調値２より小さい（すなわち、着目画素が極めて明るいハイライト領域にある）場合には、誤差拡散マトリックスMatrixとして、ラスタ方向に最も拡散範囲の広いマトリックスＡを選択する。また、着目画素にドットを形成し、且つ着目画素の画像データdataが階調値３である場合は、２番目に拡散範囲の広いマトリックスＢを選択する。以下同様に、画像データdataが階調値３〜階調値６の範囲にある場合はマトリックスＣを選択し、階調値６〜階調値９の範囲にある場合はマトリックスＤを、階調値９〜階調値１２の範囲にある場合はマトリックスＥを、そして、画像データdataが階調値１２よりも大きい場合にはマトリックスＦを選択する。
【００６５】
着目画素がシャドー領域にある場合は、上述したハイライト領域とは、ちょうど反対の関係となる。すなわち、着目画素にドットを形成せず（ドット判断結果「ＯＦＦ」）、且つ着目画素の画像データdataが階調値２５３より大きい場合にはマトリックスＡを選択する。また、ドットを形成せず、且つ着目画素の画像データdataが階調値２５２である場合はマトリックスＢを選択し、画像データdataが階調値２４９〜階調値２５２にある場合はマトリックスＣを、階調値２４６〜階調値２４９にある場合はマトリックスＤを、階調値２４３〜階調値２４６にある場合はマトリックスＥを、そして、画像データdataが階調値２４３より小さい場合はマトリックスＦを選択する。
【００６６】
尚、以上では、着目画素の画像データの階調値と、ドットを形成するか否かとの組合せに応じて、場合を分けて適切なマトリックスを選択するものとして説明した。もちろん、こうして場合を分けて選択するものに限らず、着目画素の画像データdataと該着目画素に表現される階調値との偏差の絶対値（ここでは、階調偏差ervlと呼ぶ）に基づいて、適切なマトリックスを選択することも可能である。例えば、着目画素にドットが形成される場合には、
ervl＝ａｂｓ（data  −２５５）
によって階調偏差ervlを算出し、ドットが形成されない場合には、
ervl＝ａｂｓ（data  −０）＝ａｂｓ（data）
によって階調偏差ervlを算出する。ここで、ａｂｓは絶対値を求める演算子であり、例えばａｂｓ（Ｘ）はＸの絶対値を表している。そして、階調偏差ervlが「２５３」〜「２５５」となる場合は、誤差拡散マトリックスMatrixとしてマトリックスＡを選択する。また、階調偏差ervlが「２５２」である場合はマトリックスＢを選択し、階調偏差ervlが「２４９」〜「２５２」の場合はマトリックスＣを、階調偏差ervlが「２４６」〜「２４９」の場合はマトリックスＤを、階調偏差ervlが「２４３」〜「２４６」の場合はマトリックスＥを、階調偏差ervlが「２４２」より小さい場合はマトリックスＦを選択することとしても良い。
【００６７】
また、以上の説明では、ハイライト領域およびシャドー領域のいずれの領域においても、ほぼ同じような方法で誤差拡散マトリックスを切り替えているものとして説明したが、もちろん、いずれか一方の領域のみでマトリックスを切り替えることとしても構わない。
【００６８】
誤差拡散モジュール１０８は、こうして選択された誤差拡散マトリックスMatrixに従って、誤差階調err を周辺の未判断画素に拡散する。拡散された誤差階調err は、拡散誤差記憶モジュール１１０に画素毎に記憶される。図７に示した誤差拡散マトリックスから明らかなように、１つの着目画素からは複数の画素に誤差が拡散される。これを逆から見れば、ある画素には複数の着目画素からの誤差が拡散されることになる。拡散誤差記憶モジュール１１０には、こうして複数の着目画素から拡散されてきた誤差が、画素毎に蓄積されて記憶されている。そして、誤差が蓄積されて記憶されている画素についてドット形成の有無を判断しようとする場合は、拡散誤差記憶モジュール１１０に記憶されている誤差を読み出して、ドット形成の有無の判断に反映させる。すなわち、前述したデータ補正モジュール１０２で、画像データdataと加算される誤差積算値accerrとは、こうして複数の着目画素から拡散されて、拡散誤差記憶モジュール１１０内に画素毎に蓄積された誤差である。
【００６９】
図６に示した階調数変換モジュール１００は、以上のような処理を行って画素毎にドット形成の有無を判断する。こうしてＣ，Ｍ，Ｙ，Ｋ各色についてドット形成の有無を判断することによってドットデータを生成している。
【００７０】
図９は、図６を参照しながら概要を説明した階調数変換処理の流れを示すフローチャートである。以下では、フローチャートに従って処理の流れを簡単に説明する。
【００７１】
階調数変換処理を開始すると、先ず初めに、着目画素についての画像データdataの読み込みを行う（ステップＳ２００）。次いで、着目画素に対応付けて記憶されている誤差積算値accerrを読み出して、画像データdataと加算することにより、補正データdataC を算出する（ステップＳ２０１）。
【００７２】
こうして得られた補正データdataC と所定の閾値ｔｈとを比較することにより、着目画素についてのドット形成の有無を判断する（ステップＳ２０４）。閾値ｔｈの値は、ドットを形成した画素に表現される階調値（階調値２５５）と、ドットを形成しなかった画素に表現される階調値（階調値０）との中間の階調値（階調値１２８）に設定されている。もっとも閾値ｔｈの値は必ずしも固定されている必要はなく、より好ましい画質が得られるように、画像データの階調値やドット形成有無の判断結果などに応じて変更することも可能である。
【００７３】
補正データdataC の方が閾値ｔｈよりも大きいと判断された場合は（ステップＳ２０４：ｙｅｓ）、着目画素にドットを形成すると判断して、２値化結果を表す値resultに値「１」を代入する（ステップＳ２０６）。すなわち、resultに「１」が代入されている場合は、その画素にドットを形成することを意味している。逆に、補正データdataC の方が閾値ｔｈよりも小さいと判断された場合には（ステップＳ２０４：ｎｏ）、着目画素にはドットを形成しないと判断して、２値化結果を表す値resultに値「０」を代入する（ステップＳ２０８）。すなわち、resultに「０」が代入されている場合は、その画素にはドットを形成しないことを意味している。
【００７４】
次いで、着目画素について、ドット形成の有無を判断したことによって生じる階調表現の誤差（誤差階調err ）を算出する（ステップＳ２１０）。ここでは、ドットを形成した画素には階調値２５５が表現され、ドットを形成しない画素には階調値０が表現されるとしているから、ドットを形成する場合の誤差階調err は、dataC −２５５によって求めることができる。また、ドットを形成しない場合の誤差階調err は、dataC となる。
【００７５】
続いて、誤差拡散マトリックスを選択する処理を行う（ステップＳ２１２）。誤差拡散マトリックスとしては、図７に示した６つのマトリックスが記憶されており、階調誤差とドット形成有無の判断結果とに基づいて、適切な誤差拡散マトリックスMatrixを選択する（図８参照）。
【００７６】
こうして選択した誤差拡散マトリックスMatrixに従って、着目画素で発生した誤差階調err を周辺の未判断の画素に拡散する処理を行う（ステップＳ２１２）。各画素に拡散された誤差は、誤差積算値accerrとして画素毎に記憶される。
【００７７】
以上のようにして着目画素で発生した誤差階調err を拡散したら、全画素についてのドット形成の有無を判断したか否かを判断し（ステップＳ２１６）、未判断の画素が残っている場合は（ステップＳ２１６：ｎｏ）、ステップＳ２００に戻って続く一連の処理を行う。全ての画素についての判断が終了したと判断されたら（ステップＳ２１６：ｙｅｓ）、図９に示した階調数変換処理を抜けて、図５に示した画像処理ルーチンに復帰する。
【００７８】
以上に説明した本実施例の階調数変換処理では、誤差階調err を最も広い範囲に拡散させる誤差拡散マトリックスが、誤差を左右方向（ラスタ方向もしくは副走査方向）に偏らせて拡散させるマトリックスとなっている。本明細書では、誤差を左右方向に偏らせて拡散する度合いを示す指標として、指向性係数を使用する。指向性係数の算出方法については後述するが、誤差を左右方向に偏らせて拡散する度合いが強くなるほど、指向性係数は大きな値を取る。指向性係数の大きな誤差拡散マトリックスを用いて拡散すれば、誤差階調err は着目画素を中心とした周囲の画素に等方的に拡散されるのではなく、左右方向に偏って拡散されることになる。本実施例の階調数変換処理では、明示的に算出するか否かは別として、選択する誤差拡散マトリックスを階調偏差に応じて切り換える。そして、階調偏差が所定値以上となる場合には、拡散範囲の最も広い誤差拡散マトリックスを選択する。こうして、マトリックスを切り換えながら誤差階調err を拡散させることにより、ハイライト領域およびシャドウ領域においてドットを均一に分散させることが可能となっている。これについては、別図を参照しながら、後ほど補足して説明する。
【００７９】
また、本実施例では、少なくとも拡散範囲の最も広い誤差拡散マトリックスについては、単に強い指向性を有するだけでなく、その拡散範囲が、着目画素を含むラスタとそのラスタに隣接するラスタの２つのラスタに限定されている。このため、階調誤差を遠方まで拡散させる割には、誤差を拡散する画素数が少なくなっており、画像データを迅速に変換することができる。すなわち、画像データの変換速度とドットの分散性とを同時に改善することが可能となっている。
【００８０】
以下では、指向性係数の算出方法について説明した後、拡散範囲の最も広い誤差拡散マトリックスとして、指向性の強いマトリックスを用いることで、こうした効果が得られる理由について説明する。
【００８１】
図１０は、指向性係数の算出方法を示す説明図である。一例として図１０（ａ）に示した誤差拡散マトリックスを用いて説明する。図１０（ａ）中で、「＊」が表示された小さな正方形は着目画素を表しており、その他の正方形は、着目画素で生じた誤差階調err を拡散する周辺の画素を表している。周辺の各画素の中には、誤差階調err を拡散するための重みが表示されている。例えば、着目画素の右隣の画素には重み「ａ」で誤差階調err を拡散し、その右隣の画素には重み「ｂ」で拡散する。また、着目画素の真下の画素には重み「ｅ」で誤差階調err を拡散する。着目画素から右隣の画素（重み「ａ」と表示された画素）あるいは、その右隣の画素（重み「ｂ」と表示された画素）に拡散する場合は、誤差階調err をラスタ方向に沿って拡散していると言えるが、真下の画素（重み「ｅ」と表示された画素）に拡散する場合は、ラスタ方向に沿って誤差を拡散していることにはならない。すなわち、誤差階調err を拡散しようとする画素の位置によって、ラスタ方向への指向性に寄与する画素と寄与しない画素とが存在することになる。こうして、個々の画素に注目し、その画素がラスタ方向への指向性に寄与する画素か否かを考えることで、誤差拡散マトリックス全体としての指向性係数を求めることができる。
【００８２】
今、図１０（ａ）に示した例示において、着目画素から、重み「ｇ」と表示された画素に誤差階調err を拡散するものとする。図１０（ｂ）は、重み「ｇ」と表示された画素と着目画素とに注目して、誤差階調err を拡散する様子を概念的に表した説明図である。重み「ｇ」と表示された画素は、着目画素からラスタ方向には２画素分だけ隔たっており、ラスタと直交する方向には１画素分だけ隔たっている。そこで、着目画素から重み「ｇ」と表示された画素への拡散に対する指向性係数を考えて、この指向性係数が、（２−１）＊ｇ／ＳＵＭによって与えられるものとする。ここでＳＵＭとは、各画素の重みの加算値（＝ａ＋ｂ＋ｃ＋ｄ＋ｅ＋ｆ＋ｇ＋ｈ＋ｉ＋ｊ）である。これを一般化すれば次のようになる。着目画素からラスタ方向にＮ画素分だけ先（あるいはＮ画素分だけ後ろ）で、且つラスタと直角方向にＭ画素分だけ隔たった画素に拡散するときの指向性係数は、その画素の重みを「ｎ」とすると、
指向性係数＝（Ｎ−Ｍ）＊ｎ／ＳＵＭ
によって算出することができる。ここでのＳＵＭは、想定している誤差拡散マトリックス中の各画素についての「重み」の合計値である。
【００８３】
誤差拡散マトリックスに含まれる他の画素についても同様にして指向性係数を求め、これらを合計すれば、誤差拡散マトリックス全体としての指向性係数を求めることができる。図１０（ｃ）には、図１０（ａ）に示す誤差拡散マトリックスについての指向性係数の算出式が示されている。
【００８４】
図７に示したそれぞれの誤差拡散マトリックスには、こうして求めた指向性係数も併せて表示してある。図７に示した複数のマトリックスの中で最も大きな誤差拡散マトリックス（マトリックスＡ）は、指向性係数が「２．５５」のマトリックスとなっている。このように、少なくとも拡散範囲の最も大きな誤差拡散マトリックスについては、指向性係数が大きな値の、指向性の強いマトリックスを用いることで、ハイライト領域およびシャドウ領域においてドットを均一に分散させることが可能となる。指向性係数が２．０以上であれば、経験上、強い指向性を有する誤差拡散マトリックスと考えることができ、指向性係数が２．５以上であれば十分に指向性の強い誤差拡散マトリックスと考えることができる。
【００８５】
参考として、通常の誤差拡散法において良く用いられる代表的な誤差拡散マトリックスを、図１１に例示した。例示した二つの誤差拡散マトリックスについて、指向性係数を算出したところ、拡散範囲が小さい方のマトリックスでは指向性係数０．３８、大きい方のマトリックスでは指向性係数０．６８となる。これらマトリックスと比較すれば、指向性係数が２．０以上となるマトリックスが如何に特異なマトリックスであるかを了解することができる。以下では、少なくとも拡散範囲の最も広い誤差拡散マトリックスについては、このように指向性の強いマトリックスとし、こうした誤差拡散マトリックスを切り換えながら誤差を拡散することで、良好な画質が得られる理由について説明する。
【００８６】
そもそも、拡散範囲の広い大きな誤差拡散マトリックスを使用する領域とは、ハイライト領域のようにドットがまばらに形成されている領域、あるいはシャドー領域のようにドットの形成されない画素がまばらに存在する領域が該当する。例えば、ハイライト領域では、まばらに形成されているドット間の距離が、いずれの方向についても、ほぼ一定となっていることが望ましい。従って、ある着目画素でドットが形成された場合、着目画素を中心とする一定距離内の画素ではドットが形成され難くなるように、誤差階調err を周辺の画素に等方的に拡散することを考えるのが通常である。すなわち、誤差拡散マトリックスとしては、誤差階調err を等方的に拡散するようなマトリックスが用いられる。
【００８７】
ところが、拡散範囲が広くなり、誤差階調err を拡散する画素数が多くなるほど、個々の画素に拡散される誤差は小さくなっていく。従って、拡散範囲がある程度広くなると、着目画素から僅かな誤差しか拡散されなくなって、誤差が拡散された画素でドットが形成されることを十分に抑制することが困難になってしまう。そこで、広い範囲に誤差を拡散する場合には、指向性の強い誤差拡散マトリックスを用いて、誤差階調err をラスタ方向に偏らせて拡散してやる。こうすれば、ハイライト領域で着目画素にドットが形成された場合に、その着目画素からラスタ方向に遠く隔たった画素にも誤差階調err を十分に拡散することができ、ドットの形成を効果的に抑制することが可能となる。
【００８８】
もちろん、こうした指向性の強い誤差拡散マトリックスを使用すれば、ラスタ方向に直交する方向には誤差を十分に拡散することができない。しかし、誤差拡散マトリックスを切り換えて用いることにより、結果的には、直交方向にある画素についても誤差が十分に拡散され、ドットの形成を効果的に抑制することが可能である。これを図１２を用いて説明する。
【００８９】
図１２（ａ）は、ハイライト領域の着目画素にドットが形成されたとき、着目画素から誤差を拡散する様子を概念的に表している。図１２に示された小さな正方向は画素を示しており、斜線が付された正方形は着目画素ａを表している。ハイライト領域の画素にドットが形成された場合は、図８を用いて説明したように、誤差拡散マトリックスとしては、拡散範囲の最も大きなマトリックスＡが選択されて用いられる。このマトリックスは、ラスタ方向へ指向性の強いマトリックスである。このため、着目画素ａで発生した誤差階調err は、同じラスタにある画素ｂ、画素ｃ、画素ｄ、画素ｅなどに効果的に拡散されるので、その結果として、これら画素にドットが形成されることを確実に抑制することができる。尚、図１２（ａ）では、特に画素ｂないし画素ｅの４つの画素について表示しているが、これは、画素ａからの誤差が拡散させる複数の画素の中で、説明の便宜から特にこれらの画素に注目していることを表したものである。従って、他の画素には誤差が拡散されないことを意味するものではない。
【００９０】
図１２（ｂ）は、画素ａと同じラスタにある画素ｃあるいは画素ｄで発生した誤差を拡散している様子を概念的に表している。これら画素には、画素ａで発生した誤差階調err が比較的大きな重みで拡散されているので、ドットが形成されることはない。その結果、これら画素については、マトリックスＡとは異なる誤差拡散マトリックス（図８に従えばマトリックスＦ）が選択される。このように、画素ｃあるいは画素ｄについては、マトリックスＡとは異なる誤差拡散マトリックスを用いて誤差を拡散するので、これら画素で生じた誤差は、ラスタに直交方向にも（少なくともマトリックスＡよりは）効果的に拡散される。例えば、図１２（ｂ）中に実線の矢印で示すように、画素ｃで生じた誤差は、隣接するラスタにある画素ｆ、画素ｇ、画素ｈなどにも効果的に拡散される。同様に、画素ｄで発生した誤差も、これら画素ｆ、画素ｇ、画素ｈなどに効果的に拡散される。もちろん、画素ｂ、画素ｅについても同様に、これら画素で発生した誤差は、隣接するラスタにある画素に効果的に拡散される。
【００９１】
ここで、画素ａで生じた誤差階調err は、指向性の強い誤差拡散マトリックスを用いて、画素ｂないし画素ｅに比較的大きな重みで拡散されている。このため、隣接するラスタにある画素ｆないし画素ｈなどの画素については、画素ａから直接に誤差が拡散されることはない。しかし、画像ｆないし画素ｈなどには、画素ａと同じラスタ上の画素（画素ｂないし画素ｅなど）で生じた誤差が効果的に拡散されるので、結局は、画素ａからの誤差は、ラスタ方向にある画素を介して、隣接するラスタにある画素ｆないし画素ｈなどにも間接的に拡散されていることになる。
【００９２】
こうして、画素ａにドットを形成したことによって生じた誤差階調err が隣接するラスタ上の画素ｆないし画素ｈなどにも拡散されるので、これら画素ではドットが形成されることが抑制される。その結果、これら画素については、マトリックスＡとは異なるマトリックスが選択されることになり、結局、画素ａで生じた誤差階調err は、隣接するラスタ上の画素ｆないし画素ｈなどを介して、更にその先のラスタ上にある画素ｉ、画素ｊなどにも拡散されることになる。図１２（ｃ）は、画素ａで生じた誤差が、隣接するラスタ上の画素を介して、更にその隣のラスタ上の画素へも拡散される様子を概念的に示している。
【００９３】
以上に説明したように、本実施例では、拡散範囲の最も広い誤差拡散マトリックスとして、指向性の強いマトリックスを用いているにもかかわらず、結果的には、直交方向にある画素にも誤差を適切に拡散して、ドット形成の判断に反映させることができる。これは、上述したように、階調誤差に応じて誤差拡散マトリックスを切り換えて用いているために、例え、拡散範囲の最も広い誤差拡散マトリックスとして、指向性の強いマトリックスを用いた場合でも、ラスタと直交方向にも、間接的に誤差が拡散されるためである。
【００９４】
図１３は、本実施例の方法を用いて誤差を拡散させることで、画質が改善される様子を概念的に示した説明図である。図１３は、ハイライト領域でドットがまばらに形成されている様子を表している。図１３（ａ）は、誤差拡散マトリックスを切り換えているものの、それぞれのマトリックスは誤差を等方的に拡散させるようなマトリックスを用いた場合を示している。図１３（ｂ）は、誤差拡散マトリックスを切り換えるとともに、拡散範囲の最も広いマトリックスには指向性の強いマトリックスを用いた場合を示している。どちらの場合も、形成されているドットの総数は同じである。しかし、図１３（ａ）では、２つのドットが近づいて形成されている部分が散見される。例えば、ドットａの近くにドットｂが形成されている。本来は、ハイライト領域でドットａが形成されると大きな誤差が発生するので、この誤差が拡散された周辺の領域ではドットが形成され難くなるはずである。しかし、誤差を拡散する範囲が広くなると、個々の画素に拡散される誤差の値は小さくなるから、誤差を等方的に拡散したのでは、左右方向の画素でドットの形成を十分に抑制することができなってしまう。ハイライト領域でドットがまばらに形成されているにも関わらず、ドットａの近くにドットｂが形成されてしまうのは、この様な理由によるものと考えられる。
【００９５】
これに対して図１３（ｂ）では、指向性の強い誤差拡散マトリックスを用いることにより、ドットが形成されたことによる誤差をラスタ方向に偏らせて拡散させている。このため、複数のドットがラスタ方向に近づいて形成されることを確実に回避することが可能である。もちろん、このように誤差をラスタ方向に偏らせて拡散すれば、ラスタと直交する方向に拡散する比率は小さくなってしまうので、ラスタと直交する方向にはドットが近接して形成されることが懸念される。しかし、上述したように、マトリックスを切り換えてやれば、ラスタと直交する方向にも間接的に誤差が拡散される。このため、図１３（ｂ）に示されているように、実際には、ラスタと直交する方向にも、ラスタ方向と同程度にドットを離して形成することが可能である。
【００９６】
Ｄ．変形例：
（１）第１の変形例：
以上の説明では、図７に示した一組の誤差拡散マトリックスを用いて階調数変換処理を行うものとして説明したが、誤差拡散マトリックスは適宜、適切なマトリックスを組み合わせて用いることができる。このとき、少なくとも、最も拡散範囲の広いマトリックスについては、図７に例示したマトリックスに限られず、指向性係数が２．０以上のマトリックスを用いれば良い。例えば、図１４にした誤差拡散マトリックスを適宜、組み合わせて用いることができる。
【００９７】
また、指向性係数が２．０以上となる誤差拡散マトリックスは、必ずしも最も拡散範囲の広いマトリックス一つに限られるものではない。良好な画質が得られるように、複数のマトリックスについて指向性係数を２．０以上とすることもできる。
【００９８】
複数の誤差拡散マトリックスの中で、拡散範囲の広い（すなわち、誤差を拡散する画素数の多い）マトリックスほど、大きな指向性係数を有するマトリックスとしてもよい。拡散範囲が広くなるほど、個々の画素に拡散される誤差は小さくなってしまう。従って、拡散範囲が広いほど指向性係数の大きな誤差拡散マトリックスを用いれば、誤差を効果的に拡散することができる。もっとも、誤差を拡散する画素がある程度少なければ、いずれの画素についても効果的に誤差を拡散することができるので、ある程度小さなマトリックスについては、拡散範囲の大きさの序列と指向性係数の序列とが不整合となるものがあっても構わない。
【００９９】
（２）第２の変形例：
指向性の強い誤差拡散マトリックスを、マトリックスを切り替えながら用いることで、階調誤差を広い範囲に効果的に拡散させる方法は、複数の画素を大画素としてまとめて、大画素単位で処理する場合にも適用することができる。以下では、こうした第２の変形例について簡単に説明する。
【０１００】
説明の便宜から、ここでは縦横２画素ずつ、合計４つの画素を大画素としてまとめる場合を想定して説明する。図１５は、４つの画素を大画素として、誤差を拡散している様子を示した説明図である。図１５（ａ）中で、画素は破線の正方形として表されており、大画素は実線の正方形として表されている。また、斜線を施された大画素は、処理中の大画素である。以下では、処理中の大画素を「大画素＊」と区別して表現し、また処理中の大画素の周辺の大画素も、「大画素Ａ」ないし「大画素Ｊ」と区別して表現する。大画素単位で処理する場合、大画素の画像データあるいは大画素で生じた階調誤差などの定義の仕方には種々の方法が考えられるが、ここでは最も単純な定義として、大画素に含まれる画素についての値の合計値を使用する。すなわち、例えば大画素の画像データとは、大画素内の各画素についての画像データの合計値を言うものとし、また、大画素で生じた階調誤差とは大画素内の各画素で生じた階調誤差の合計値を言うものとする。
【０１０１】
図１５（ａ）中で矢印で示したように、大画素＊で生じた階調誤差は、大画素Ａないし大画素Ｊのそれぞれの大画素に拡散される。拡散に際しては、画素単位で処理する誤差拡散マトリックスを流用して、マトリックスに設定された重み係数を、大画素に拡散する際の重み係数と読み替えてやればよい。こうして大画素に拡散された誤差は、更に各大画素内で、所定の方法に従い個々の画素に拡散される。
【０１０２】
以上のようにして、大画素単位で処理する場合は、次のようにして誤差を拡散する。大画素がハイライト領域にあるときは、その大画素で一つでもドットが形成される場合には、拡散範囲の広い誤差拡散マトリックスを使用して誤差を拡散する。また、大画素がシャドー領域にあるときは、その大画素で一つでもドットが形成されない画素が発生した場合には、拡散範囲の広い誤差拡散マトリックスを使用して誤差を拡散する。このとき、上述した実施例と同様に、指向性の強い誤差拡散マトリックスを用いることで、誤差を広い範囲に効果的に拡散させることができる。
【０１０３】
尚、大画素単位で拡散する場合は画素単位で拡散する場合に比べて、同じ誤差拡散マトリックスを用いた場合でも、実際には広い範囲に誤差が拡散されることになる。こうした点を考慮して、大画素に拡散させるマトリックスの指向性係数を、次のようにして求めることとしても良い。例えば、処理中の大画素の周辺にある大画素への重み係数が、図１５（ｂ）に示すように、ａないしｊと定められているとき、図１５（ｃ）に示す計算式を用いて指向性係数を算出することとしても良い。こうすれば、より適切な指向性係数を求めることが可能である。
【０１０４】
尚、計算式中で、例えば大画素Ａの重み係数ａに定数２を乗算しているのは、大画素が縦横２つずつの画素をまとめていることに相当する。従って、縦横ｎ画素ずつを大画素としてまとめる場合は、重み係数ａには定数ｎを乗算すればよい。その他の重み係数についても同様に、大画素を構成する画素の数に応じて乗算する定数を変更すればよい。
【０１０５】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、上述の機能を実現するソフトウェアプログラム（アプリケーションプログラム）を、通信回線を介してコンピュータシステムのメインメモリまたは外部記憶装置に供給し実行するものであってもよい。もちろん、ＣＤ−ＲＯＭやフレキシブルディスクに記憶されたソフトウェアプログラムを読み込んで実行するものであっても構わない。
【０１０６】
また、上述した各種実施例では、画像データ変換処理はコンピュータ内で実行されるものとして説明したが、画像データ変換処理の一部あるいは全部をプリンタ側、あるいは専用の画像処理装置を用いて実行するものであっても構わない。
【０１０７】
更には、画像表示装置は、必ずしも印刷媒体上にインクドットを形成して画像を印刷する印刷装置に限定されるものではなく、例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置であっても構わない。
【図面の簡単な説明】
【図１】本発明に関わる画像処理装置および印刷装置からなる印刷システムの構成を示す説明図である。
【図２】本実施例の画像処理装置の機能を実現するための、コンピュータのソフトウェアの構成を概念的に示すブロック図である。
【図３】本実施例のプリンタの概略構成を示す説明図である。
【図４】インク吐出用ヘッドの底面にノズルが配置されている様子を示した説明図である。
【図５】本実施例の画像処理装置としてのコンピュータが、画像データに所定の画像処理を加えることにより、印刷データに変換する処理の流れを示すフローチャートである。
【図６】コンピュータの内部で実行される本実施例の階調数変換処理を、内部の機能に着目して概念的に表したブロック図である。
【図７】本実施例の階調数変換処理で用いられる誤差拡散マトリックスを例示した説明図である。
【図８】階調誤差に応じて誤差拡散マトリックスを選択する様子を概念的に示した説明図である。
【図９】本実施例の階調数変換処理の流れを示すフローチャートである。
【図１０】指向性係数の算出方法を示す説明図である。
【図１１】通常の誤差拡散法で使用される代表的な誤差拡散マトリックスを例示した説明図である。
【図１２】誤差拡散マトリックスを切り換えて用いることで、ラスタと直交する方向へも間接的に誤差が拡散される様子を示す説明図である。
【図１３】ハイライト領域でドットがまばらに形成される様子を概念的に示した説明図である。
【図１４】他の誤差拡散マトリックスを例示する説明図である。
【図１５】複数画素を大画素としてまとめて行う誤差拡散法に適用した場合を示す説明図である。
【符号の説明】
１０…印刷システム
２０…プリンタ
２１…スキャナ
２３…モニタ
２４…モデム
２６…ハードディスク
２７…メモリカード
３０…キャリッジモータ
３１…駆動ベルト
３２…プーリ
３３…摺動軸
３４…位置検出センサ
３５…紙送りモータ
３６…プラテン
４０…キャリッジ
４１…印字ヘッド
４２，４３…インクカートリッジ
４４…インク吐出用ヘッド
６０…制御回路
６１…ＣＰＵ
６２…ＲＯＭ
６３…ＲＡＭ
８０…コンピュータ
８１…ＣＰＵ
８２…ＲＯＭ
８３…ＲＡＭ
８８…ＳＩＯ
９０…ビデオドライバ
９１…アプリケーションプログラム
９２…プリンタドライバ
１００…階調数変換モジュール
１０２…データ補正モジュール
１０４…２値化モジュール
１０６…誤差算出モジュール
１０８…誤差拡散モジュール
１１０…拡散誤差記憶モジュール
１１２…誤差拡散マトリックス選択モジュール
【図１】
2004194181.tif 000003
【図２】
2004194181.tif 000004
【図３】
2004194181.tif 000005
【図４】
2004194181.tif 000006
【図５】
2004194181.tif 000007
【図６】
2004194181.tif 000008
【図７】
2004194181.tif 000009
【図８】
2004194181.tif 000010
【図９】
2004194181.tif 000011
【図１０】
2004194181.tif 000012
【図１１】
2004194181.tif 000013
【図１２】
2004194181.tif 000014
【図１３】
2004194181.tif 000015
【図１４】
2004194181.tif 000016
【図１５】
2004194181.tif 000017