(57)【特許請求の範囲】
【請求項１】
Ｎ色（Ｎ≧２）以上の多値画像データを、当該多値画像データを表現する各色のビット数より少ないビット数に量子化する画像処理装置であって、
各色の多値データに、従前の各色の量子化によって発生した誤差をそれぞれ加算する加算手段と、
該加算手段による各色毎の加算結果を、より少ないビット数の多値データに変換すると共に、前記加算結果のデータと変換後の多値データとの距離を示す第１の距離情報、及び、前記加算結果のデータと前記変換後の多値データに隣接する隣接多値データとの距離を示す第２の距離情報を出力する第１のルックアップテーブルと、
Ｎ個の量子化後のデータを格納するＮ次元空間の第２のルックアップテーブルデータであって、前記第１のルックアップテーブルからの各色毎の、変換後のデータ及び前記第１、第２の距離情報をアドレスとして入力し、変換前の前記加算結果のデータを内包する複数の頂点位置それぞれのＮ個の量子化後のデータを出力する第２のルックアップテーブルと、
該第２のルックアップテーブルから出力された各頂点位置のＮ個の量子化後のデータを、各色毎の前記第１、第２の距離情報で決定される重み係数を用いて補間して、最終のＮ個の量子化後のデータを決定する決定手段と、
該決定手段で決定したＮ個の各色毎の量子化後のデータと前記加算手段による加算された各色毎の差分を、未量子化の画素位置に加算するための誤差として演算する演算手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記第２のルックアップテーブルが記憶管理するＮ次元空間は、前記第１のルックアップテーブルから出力される各色の多値データを高、中、低濃度を表現する値に分割したとき、全色が高濃度となる領域と、全色が低濃度となる領域とが互いに接しないように記憶管理されることを特徴とする請求項第１項に記載の画像処理装置。
【請求項３】
前記量子化は、人間の知覚が鈍感な色の量子化数を、敏感な色の量子化数よりも小さくすることを特徴とする請求項第１項に記載の画像処理装置。
【請求項４】
Ｎ色（Ｎ≧２）以上の多値画像データを、当該多値画像データを表現する各色のビット数より少ないビット数に量子化する画像処理方法であって、
各色の多値データに、従前の各色の量子化によって発生した誤差をそれぞれ加算する加算工程と、
該加算工程による各色毎の加算結果を、より少ないビット数の多値データに変換すると共に、前記加算結果のデータと変換後の多値データとの距離を示す第１の距離情報、及び、前記加算結果のデータと前記変換後の多値データに隣接する隣接多値データとの距離を示す第２の距離情報を出力する第１のルックアップテーブルを用いて変換する第１の変換工程と、
Ｎ個の量子化後のデータを格納するＮ次元空間の第２のルックアップテーブルデータであって、前記第１のルックアップテーブルからの各色毎の、変換後のデータ及び前記第１、第２の距離情報をアドレスとして入力し、変換前の前記加算結果のデータを内包する複数の頂点位置それぞれのＮ個の量子化後のデータを出力する第２のルックアップテーブルを用いて、変換する第２の変換工程と、
該第２のルックアップテーブルから出力された各頂点位置のＮ個の量子化後のデータを、各色毎の前記第１、第２の距離情報で決定される重み係数を用いて補間して、最終のＮ個の量子化後のデータを決定する決定工程と、
該決定工程で決定したＮ個の各色毎の量子化後のデータと前記加算工程による加算された各色毎の差分を、未量子化の画素位置に加算するための誤差として演算する演算工程と
を備えることを特徴とする画像処理方法。
【請求項５】
コンピュータが読み込み実行することで、Ｎ色（Ｎ≧２）以上の多値画像データを、当該多値画像データを表現する各色のビット数より少ないビット数に量子化する画像処理装置として機能するコンピュータプログラムであって、
各色の多値データに、従前の各色の量子化によって発生した誤差をそれぞれ加算する加算手段と、
該加算手段による各色毎の加算結果を、より少ないビット数の多値データに変換すると共に、前記加算結果のデータと変換後の多値データとの距離を示す第１の距離情報、及び、前記加算結果のデータと前記変換後の多値データに隣接する隣接多値データとの距離を示す第２の距離情報を出力する第１のルックアップテーブルを用いて変換する第１の変換手段と、
Ｎ個の量子化後のデータを格納するＮ次元空間の第２のルックアップテーブルデータであって、前記第１のルックアップテーブルからの各色毎の、変換後のデータ及び前記第１、第２の距離情報をアドレスとして入力し、変換前の前記加算結果のデータを内包する複数の頂点位置それぞれのＮ個の量子化後のデータを出力する第２のルックアップテーブルを用いて、変換する第２の変換手段と、
該第２のルックアップテーブルから出力された各頂点位置のＮ個の量子化後のデータを、各色毎の前記第１、第２の距離情報で決定される重み係数を用いて補間して、最終のＮ個の量子化後のデータを決定する決定手段と、
該決定手段で決定したＮ個の各色毎の量子化後のデータと前記加算手段による加算された各色毎の差分を、未量子化の画素位置に加算するための誤差として演算する演算手段
として機能することを特徴とするコンピュータプログラム。
【請求項６】
請求項第５項に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数の色が多ビットで表現される画像データを、より少ないビット数の画像データに変換する画像処理装置及びその制御方法及びコンピュータプログラム並びにコンピュータ可読記憶媒体に関するものである。
【０００２】
【従来の技術】
多値画像データを２値で表現する疑似中間調処理の代表的なものとして誤差拡散法がある(“An Adaptive Algorithm for Spatial Gray Scale”in society for Information Display 1975 Symposium Digest of Technical Papers, 1975, 36)。
【０００３】
この方法は、入力される多値画像全体の濃度と、２値化後の画像全体の濃度を実質的に等しく、すなわち、濃度が保存する手法であって、簡単に説明すると次の通りである。
【０００４】
今、注目画素をＰ、そしてその濃度をＶとし、注目画素Ｐの周辺の未２値化画素Ｐ０、Ｐ１、Ｐ２、Ｐ３とし、それぞれの濃度をＶ０、Ｖ１、Ｖ２、Ｖ３とする。また、２値化のための閾値をＴとすると、着目点Ｐにおける２値化誤差Ｅを周辺画素Ｐ０、Ｐ１、Ｐ２、Ｐ３の位置に、経験的に求めた重み係数Ｗ０、Ｗ１、Ｗ２、Ｗ３を用いて振り分ける。ここで、最大濃度をＶmax、最小濃度をＶminと表記し、注目画素の２値化後のデータをＢとすると、上記の振り分けは次の通りである。
【０００５】
Ｖ≧Ｔ  ならば、Ｂ＝１、      誤差Ｅ＝Ｖ−Ｖmax
Ｖ＜Ｔ  ならば、Ｂ＝０、      誤差Ｅ＝Ｖ−Ｖmin        （１）
そして、未２値化画素Ｐ０乃至Ｐ３に振り分ける際の値Ｖ０乃至Ｖ３は、
Ｖ０＝Ｖ０＋Ｅ×Ｗ０
Ｖ１＝Ｖ１＋Ｅ×Ｗ１
Ｖ２＝Ｖ２＋Ｅ×Ｗ２
Ｖ３＝Ｖ３＋Ｅ×Ｗ３
なお、入力画像全体の濃度に対して、２値化後の画像全体の濃度を等しくするため、一般には、Ｗ０＋Ｗ１＋Ｗ２＋Ｗ３＝１なるようにしている。例えば、Ｗ０=７/１６、Ｗ１=１/１６、Ｗ２=５/１６,、Ｗ３=３/１６である。
【０００６】
さて、この手法を用いることで、入力した多値画像を、ドットを記録する／しないという２つの状態で記録するプリンタを用いたとしても、人間の目から見ると濃淡を有する画像（階調画像もしくは中間調画像）として知覚できる印刷が実現できる。
【０００７】
さて、カラー画像を記録する場合であるが、通常、カラープリンタの場合、イエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）、及び、ブラック（Ｂｋ）の各色成分のインクやトナー（記録材）を用いて印刷する。従って、各色成分毎に上記の誤差拡散法に基づいて２値化し、その２値化した結果に基づいてそれぞれの記録成分のヘッドを駆動すればよい。
【０００８】
しかしながら、カラー画像は上記の通り、４つ（Ｂｋ成分の記録材がない場合には３つ）の色成分の互いのバランスによって色を表現するものである。従って、それぞれの色成分毎に独立した２値化処理を行うことは、互いの色成分が全く考慮されない状態で２値化するのと等価であり、例えば、比較的濃度の低い部分で２色以上が重なりあうことが多いと、必ずしも満足できる品位には至らないことがある。
【０００９】
かかる問題を改良する例としては、例えば、特開平８-２７９９２０号公報、及び特開平１１-１０９１８号公報等がある。これらには、２色以上を組み合わせて誤差拡散法を用いることにより、２色以上が重なり合う場合においても良好な視覚特性の得られる擬似中問調処理方法が開示されている。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記の文献に記載された方法では、入力画素に対応する出力を決定する際に、比較器等によりその出力値を決定している。従って、例えば出力階調数を変更することを、ハードウェアにより実装されている場合には回路は複雑なものとなり、ソフトウェアにより実装されれている場合にはプログラムサイズが大きく、或いはより多くのメモリを必要とする。
【００１１】
また、２色の出力階調数が異なる場合、例えばシアンの出力階調は４値であるがマゼンタは２値であるような場合、或いは、出力色数を３色以上に対応させようとした場合にも、同様に回路あるいはプログラムに大きな変更を加えなければ対応ができない。
【００１２】
本発明はかかる点に鑑みなされたものであり、２色以上の多値画像データに対して誤差拡敬法を用いてより少ないビット数に量子化する場合に、汎用性を有し、且つ、量子化するビット数に応じて柔軟に対処できる画像処理装置及び方法及びコンピュータプログラム及びコンピュータ可読記憶媒体を提供しようとするものである。
【００１３】
【課題を解決するための手段】
かかる課題を解決するため、本発明の画像処理装置は以下に示す構成を備える。すなわち、
Ｎ色（Ｎ≧２）以上の多値画像データを、当該多値画像データを表現する各色のビット数より少ないビット数に量子化する画像処理装置であって、
各色の多値データに、従前の各色の量子化によって発生した誤差をそれぞれ加算する加算手段と、
該加算手段による各色毎の加算結果を、より少ないビット数の多値データに変換すると共に、前記加算結果のデータと変換後の多値データとの距離を示す第１の距離情報、及び、前記加算結果のデータと前記変換後の多値データに隣接する隣接多値データとの距離を示す第２の距離情報を出力する第１のルックアップテーブルと、
Ｎ個の量子化後のデータを格納するＮ次元空間の第２のルックアップテーブルデータであって、前記第１のルックアップテーブルからの各色毎の、変換後のデータ及び前記第１、第２の距離情報をアドレスとして入力し、変換前の前記加算結果のデータを内包する複数の頂点位置それぞれのＮ個の量子化後のデータを出力する第２のルックアップテーブルと、
該第２のルックアップテーブルから出力された各頂点位置のＮ個の量子化後のデータを、各色毎の前記第１、第２の距離情報で決定される重み係数を用いて補間して、最終のＮ個の量子化後のデータを決定する決定手段と、
該決定手段で決定したＮ個の各色毎の量子化後のデータと前記加算手段による加算された各色毎の差分を、未量子化の画素位置に加算するための誤差として演算する演算手段とを備える。
【００１４】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１５】
＜第１の実施形態＞
本第１の実施形態では、多値画像を構成する複数の色それぞれを２値化する場合に適用できるが、説明を簡単なものとするため、入力される多値画像データは２色で表されるものとする。また、各色は８ビットの多値画像データ（２５６階調の画像データ）であり、画像処理により２値データに変換し出力する装置を例にして説明する。出力先としては、２値出力装置であれば如何なるものでも構わないが、例えばインク液滴を吐出する／しないのプリンタ部であるとして説明する。また、入力元からは、多値画像データが入力できさえすれば良いので、その多値画像を記憶する記憶媒体（フロッピーディスクやＣＤ−ＲＯＭ等）、ネットワークを介しての受信、或いは、イメージスキャナー等であっても構わない。本実施形態の特徴は、多値画像データを入力し、それを２値化する画像処理の構成に特徴を有する。
【００１６】
図１は本発明の第１の実施形態に係わる画像処理装置の構成を説明するブロック構成図である。
【００１７】
同図において、Ｉ0、Ｉ1それぞれは多値（８ビット）の画素データであり、それぞれの色はシアン、マゼンタを表しているとする。これらの多値画素データＩ0、Ｉ1は、加算器１−０、１−１に入力され、既２値化画素位置で発生した誤差のうち、入力された画素位置に累積された誤差Ｅ0、Ｅ1（実施形態では、主走査方向における直前の画素位置で発生した誤差）と加算される。加算結果は、Ｉ'0Ｉ'1となって、出力決定部２に供給される。ここで加算する誤差であるが、その値は正負のいずれの場合も有り得る。それ故、入力した画素データＩ0、Ｉ1が０〜２５５の範囲内にあるとしても、加算器１−０、１−１での加算した結果は、その範囲を越えることも有り得る。この範囲は、−１２７〜３８３（１２８を閾値とし。この値以上と未満での出力を０／１に決定するとすれば、０〜２５５＋１２８、−１２７をとれば充分であるので、０〜２５５±１２８）をとれば充分であるので、＋１２７でかさあげすれば合計９ビットのデータをＩ'0Ｉ'1として出力する。
【００１８】
出力決定部２は、図２に示すように、３つのルックアップテーブル（以下、ＬＵＴ）７−０、７−１、及び４で構成し、かかる構成で２値化する。
【００１９】
先ず、同図の構成する背景について説明する。
【００２０】
実施形態では、２つの色の多値画素データを入力し、それぞれを２値化するものである。２つの色の２値化後のデータを（１色目、２色目）として表現すると、（０，０）、（０、１）、（１、０）、（１，１）の４通りしか存在しない。
【００２１】
先に説明したように、注目画素位置に分配された誤差を足しこんだ後のデータＩ'0、Ｉ'1は、それぞれ９ビット必要になり、合計１８ビットとなる。この１８ビットを入力して上記の４通りのいずれか１つの２ビットに決定する場合、２×２18＝５２４３８８ビットのＬＵＴテーブル用のメモリを必要とし、且つ、１８ビット分のアドレス用の配線パターンも必要となり、低コストが望めない。また、普通、カラー画像を印刷する場合には最低でも３色必要とするわけであるから、現実には、２×２27＝２６８Ｍビットのメモリを用いてＬＵＴを構成する必要があるので、なおさらである。
【００２２】
すなわち、入力される値に対する出力パターンの取り得る種類が非常に少ないわけであるから、より簡潔な構造にすることが望まれる。
【００２３】
そこで、実施形態では、図４に示す如く、加算結果であるデータＩ'0、Ｉ'1のビット数を減らすべく、ＬＵＴ７−０、７−１に供給する。ＬＵＴ７−０（７−１も同様）は、１入力に対し１出力の一次元ＬＵＴであり、入力される９ビットに応じて、例えば０〜８（＝９個）のより小さな値に量子化して出力する。入力される多値データ（−１２７〜３８３）を９個に分割するのであれば、例えば次の様になる。
【００２４】
入力値                      出力値
−１２７〜−９６                    ０
−９５〜−３１                    １
−３２〜  ３１                    ２
３２〜  ９５                    ３
９６〜１５７                    ４
１６０〜２２２                    ５
２２３〜２８６                    ６
２８７〜３５０                    ７
３５１〜３８３                    ８
かかる変換を実現するため、ＬＵＴ７−０、７−１は図１０に示すような内部構造を有している。図示において、左側が、アドレスとして入力されるＩ'0（もしくはＩ'1）であり、右側がその出力値（格納されている値）である。出力値は必ず０以上の整数であるので、符号ビットは不要であり、４ビットの出力ｇ0（もしくはｇ1）となる。９ビット入力の４ビット出力に量子化するものであるから、ＬＵＴ７−０（及び７−１）は、４×２10＝４０９６ビットのメモリで構成できる。なお、ＬＵＴ７−０、７−１は、１入力であるため、一次元ＬＵＴと言うことができる。なお、ＬＵＴ７−０、７−１及び後述するＬＵＴ４は書き換え可能なメモリで構成することが望ましい。
【００２５】
ＬＵＴ７−０、７−１からの出力値ｇ0、ｇ1（それぞれ４ビット）は、ＬＵＴ４に供給される。ＬＵＴ４は２入力ＬＵＴでもあるので、２次元ＬＵＴと言うことが出来よう。ＬＵＴ４は合計８ビットをアドレス信号として入力し、２値化後の信号Ｏ0、Ｏ1（それぞれ１ビットで合計２ビット）を出力するわけであるから、２×２8＝５１２ビットのメモリで構成できる。
【００２６】
すなわち、ＬＵＴ７−０、７−１、及びＬＵＴ４を合わせたとしても、２０４８×２＋５１２＝４６０８ビットしか消費せず、且つ、４通りの出力しか存在しないわけであるから、この構造でもって充分な精度が得られる。また、３色の入力について考察しても、必要とするメモリ容量は先に示した場合と比較し遥かに少ないメモリで実現できるのは、これまでの説明から明らかであろう。
【００２７】
さて、ＬＵＴ４であるが、ｇ0、ｇ1の２入力（それぞれが０〜８の値を取り得る）であり、上記の如く２次元ＬＵＴと見なせる（３入力の場合には３次元ＬＵＴとなり、Ｎ入力に対してＮ次元ＬＵＴとなる）。
【００２８】
そこで、このＬＵＴ４に格納している２値パターン（２種類の色の２値データとアドレスの関係）を図３に示すようにした。
【００２９】
すなわち、２入力であるｇ0、ｇ1を２軸とする座標空間において、両者が大きい領域では２値化後の出力値Ｏ0、Ｏ1は（１、１）となり、両者との低い領域では（０，０）となる。そして、ｇ0が比較的大きく、ｇ1が比較的小さい領域では（１、０）、その逆では（０、１）となるようなパターンを、ＬＵＴ４に格納させておく。
【００３０】
ここで重要な点は、ｇ0、ｇ1を２軸とする座標空間を４つの領域に分割する場合、（１，１）の領域と、（０、０）の領域とが接しないようにすることである。
【００３１】
例えば、図１６に示すような領域に分割した場合、２値化後のデータが（１，１）となる領域と、（０、０）の領域とが点Ａで接している。かかる領域分割を行ってしまうと、点Ａの近傍の濃度の２値化後のデータは不安定なパターンとなる。すなわち、点Ａの近傍の濃度の画像が連続して入力された場合に、全てのパターンが取り得ることになり、しかもその中で（０、０）と（１、１）とが混在した中間調の画素が出力され易い。換言すれば、（１，１）のパターンは、２色とも濃い領域で発生することが望まれるにもかかわらず、濃度が中間的な状況でも発生する。
【００３２】
かかる点、図３に示す領域にすると、（１，１）のパターンの近傍では（０、０）が発生せず、濃度が薄くなるに従って（１、０）や（０、１）を経たのち（０、０）になる。すなわち、最大濃度となるパターン（１，１）の領域と、最低濃度となるパターン（０，０）の領域とは距離的に離間し、その間を他のパターンの領域が占めるようにすることが望ましい。
【００３３】
さて、実施形態のＬＵＴ４は図３に示す構造により、ｇ0、ｇ1の入力があると、座標空間中の１点が決定されるので、そのパターンをＯ0、Ｏ1として出力することになる。
【００３４】
図１の説明に戻る。誤差計算部３−０は、図４に示す構造となっている。誤差計算部３−１は、誤差計算部３−０と同様の構造出よいので、図示では括弧で示した。
【００３５】
誤差計算部３−０は、２値化後のデータＯ0（＝０ or １）を入力し、図５に示すごとく０（最低濃度）、２５５（最高濃度）のいずれかの値にして、それをＯ'0として出力するＬＵＴ５を備える。そして、このＯ'0と、補正後の注目画素値（注目画素値に誤差を加算した結果）Ｉ'0との差分を減算器６で算出し、その結果を注目画素位置で発生した誤差Ｅ0として出力する。これは誤差計算部３−１でも同様である。
【００３６】
Ｅ0＝Ｉ'0−Ｏ'0
Ｅ1＝Ｉ'1−Ｏ'1
この誤差Ｅ0は、注目画素の次画素の入力時に、加算器１−０で足しこまれることになる。また、誤差計算部３−１からは、もう一方の色の誤差Ｅ1が出力され、加算器１−１で足しこまれることになる。
【００３７】
尚、上記の例では、注目画素位置で発生した誤差（Ｅ0、Ｅ1）は、注目画素の次画素位置に１００％の割合で足しこまれるものとして説明したが、通常の誤差拡散法と同様に、数ライン分のメモリを加算器１−０と誤差計算部３−０との間に設け、それぞれの注目画素に近接する複数の未２値化画素位置に、重みづけ係数に従って分配させるようにしても良いのは勿論である。
【００３８】
また、先に説明したように、実施形態では２色の多値画素データを入力する例を説明したが、３色或いはそれ以上であっても構わないのは勿論である。また、入力される各色の多値データは８ビットとして説明したが、これによっても本願発明が限定されるわけでない。すなわち、図２で説明するのであれば、一次元ＬＵＴ７−０（７−１も同様）ではＮビットをＭビット（Ｍ＜Ｎ）に量子化する。そして、色数をＬとしたとき、Ｌ×Ｍビットをアドレスとして入力するＬ次元ルックアップテーブル４を用意すれば良い。
【００３９】
以上説明したように本実施形態によれば、複数色の多値データを入力し、それを２値化する場合に、それぞれの濃度が互いに濃い領域ではそれぞれの２値化後のデータは１とはなるものの、中間的な濃度については、それぞれの色の２値化後のデータが互いに１となることが無くなる。すなわち、比較的濃度の低い領域では、色が重なることがなくなり、良好な階調を再現することができるようになる。
【００４０】
上記例では、ハードウェアでもって実現する例を示したが、汎用情報処理装置（例えばパーソナルコンピュータ等）で動作するソフトウェアでもって実現しても構わない。
【００４１】
以下、ソフトウェアで実現する場合の処理手順を、図１５に示されるフローチャートに従って説明する。
【００４２】
なお、図１５及び以下で説明するｌｕｔ７０（）、ｌｕｔ７１（）、ｌｕｔ４（，）、ｌｕｔ５（）は変数であり、それぞれＬＵＴ７−０、ＬＵＴ７−０、ＬＵＴ４、ＬＵＴ５に対応するものである。
【００４３】
先ず、ステップＳ１で２色それぞれの誤差値を格納する変数ｅ0、ｅ1をゼロで初期化し、ステップＳ２でｌｕｔ７０（）、ｌｕｔ７１（）、ｌｕｔ４（，）、ｌｕｔ５（）に、例えばハードディスク等に予めファイルとして格納されている変換データをロードし、各変数に格納する。
【００４４】
次いで、ステップＳ３で、２色の多値画素データを入力し、それぞれを変数ｉ0,ｉ1に格納し、ステップＳ４において、演算誤差ｅ0,ｅ１を加算することで、ｉ'0（Ｉ'0に対応する）及びｉ'1（Ｉ'1に対応する）を算出する。
【００４５】
次いで、ステップＳ５で、変数ｌｕｔ７０（ｉ'0）、ｌｕｔ７１（ｉ'1）のデータを引き出し、それをｌｕｔ４（，）に引き数として与えることで、２値化後のデータｏ0,ｏ1を得る。その結果をステップＳ６で出力する。
【００４６】
ステップＳ７では、次の画素に足しこむ演算誤差ｅ0，ｅ1を算出する。そして、ステップＳ８で全画素に対する処理が終了したと判断するまで、ステップＳ３以降の処理を繰り返すことになる。
【００４７】
以上のように、本第１の実施形態は、ハード及びソフトウェアの両方でもって実現できるのは明らかである。
【００４８】
以下に、他の実施形態について説明するが、それらに対しても同様にソフトウェアでもって実現できるのは明らかである。
【００４９】
＜第２の実施形態＞
上記実施形態では２値化に適用した例を示したが、例えば出力装置としてのプリンタが３値、或いはそれ以上で階調表現することが可能になる場合もある。例えば、インク液滴を吐出するタイプのプリンタ部において、０回、１回、２回のインク液滴の吐出で３値を表現する場合である。或いは、同一色であるが、濃淡の異なるインクを使用する場合もある。そこで、本実施形態では、３値化する例を説明する。
【００５０】
３値化するわけであるから、１つの色に対する出力データはバイナリ表現で００（＝０）、０１（＝１）、１０（＝２）の３種類存在することになる。また、基本的な構成は、図１と同様である。異なるのは出力決定部２内における各ルックアップテーブル（ＬＵＴ）７−０、７−１、４、及び誤差計算部３−０、３−１内のＬＵＴ５である。
【００５１】
図１１は、本第２の実施形態におけるＬＵＴ７−０、７−１のアドレスとその記憶されたデータを示している。図示の通り、アドレスが図１０と比べて少ないのは、３値化の場合、発生する誤差が２値化と比べて小さなものとなるからである。また、変換後のデータは０〜６としているが、勿論、第１の実施形態と同様、０〜８としても良いし、それ以外であっても良い。ただし、この変換後のデータが２次元ＬＵＴ４の一方のアドレスとして機能することになるので、余り広い範囲にしない方が良い。
【００５２】
図６は出力決定部２におけるＬＵＴ４に格納されたデータを２次元的に示す図である。２つの色が最終的にそれぞれを３値化されるわけであるから、３値化後のデータを（１色目、２色目）として表現すると、
（０，０）、（０，１）、（０，２），
（１，０）、（１，１）、（１，２），
（２，０）、（２，１）、（２，２）
の９通りとなる。
【００５３】
従って、図６では、入力値ｇ0，ｇ1を軸とする２次元空間を９個の領域に分割し、２つの色の濃度が共に濃い領域では（２，２）、両方とも中間的な濃度の場合は（１，１）、そして、両方とも薄い領域で（０，０）を割振り、後は、それぞれの濃度の大きさに応じた領域に対して他の３値化のデータを割り当てた。また、最高濃度から、最低濃度に移る際に、段階的なパターンを経て到達するのは第１の実施形態と同様である。
【００５４】
３値化後のデータは各色とも０、１、２が存在するわけであるが、“０”は文字通り最低濃度を表わすデータであるから０、“２”は最高能動を表わすから２５５が対応し、“１”はその中間であるので１２８が割り当てられることになる。これを示すのが図７である。
【００５５】
従って、本第２の実施形態では、図１における誤差計算部３−０（３−１も同様）内のＬＵＴ５は、入力した３値化後のデータＯ0が０の場合には０、１の場合には１２８、２の場合には２５５を出力する。これは誤差計算部３−１についても同様である。そして、これ以外は、上記第１の実施形態と同じであるので、その詳述は省略する。
【００５６】
なお、本第２の実施形態でも、２色の多値データの入力に限定されるものではなく、３色或いはそれ以上のデータを入力しても構わないのも同様である。
【００５７】
＜第３の実施形態＞
一般に、カラー画像を印刷するプリンタに着目した場合、その記録色成分としてはイエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）（更にブラックＢｋを追加する場合もある）を用いて印刷する。
【００５８】
ここで、イエローについて着目すると、その色は人の目の感度がさほど高くない。従って、イエローについては、マゼンタやシアンよりも低い階調表現でもさほど問題にはならない。本第３の実施形態では、全ての色を同じビット数に量子化するのではなく、異なるビット数に量子化する例を説明する。
【００５９】
装置構成は、図１と実質的に同じであり、異なるのは各ＬＵＴである。
【００６０】
説明を簡単なものとするため、上記実施形態と同様、２色入力で、１色目を３値化、２色目を２値化するものとして説明する。
【００６１】
この場合、量子化後のデータを（１色目、２色目）で表現すると、
（０，０）、（０，１）、
（１，０）、（１，１）、
（２，０）、（２，１）
の６通り存在することがわかる。
【００６２】
従って、出力決定部２の一次元ＬＵＴ７−０は図１１に示す内容でよいし、一次元ＬＵＴ７−１は図１０に示す内容でよい。
【００６３】
また、２次元ＬＵＴ４は、入力されるｇ0、ｇ1によって表される空間を６つの領域に分割し、先に示した量子化後のパターンを当てはめ、そのパターンを記憶すれば良い。図８はその例である。
【００６４】
また、誤差計算部３−０内のＬＵＴ５が入力するデータＯ0は３値、すなわち、０、１、２のいずれかであるので、０、１、２に対して０、１２８、２５５のいずれかを出力することになる。
【００６５】
また、誤差計算部３−１内のＬＵＴ５が入力するデータＯ1は２値、すなわち、０、１のいずれかであるので、０、１に対して０、２５５のいずれかを出力すればよい。
【００６６】
以上の結果、本第３の実施形態によれば、人間の視覚感度が低い色については、量子化後のビット数が減らしても、充分な階調表現が維持できることになり、しかも、ＬＵＴ４へのアドレスのビット数も減らせることができ、結果的に、より少ないメモリ容量で装置を構成することができるという効果が得られる。
【００６７】
なお、第３の実施形態でも入力は２色を例にして説明したが、３色或いはそれ以上でも構わないのは、これまでの説明からすれば容易に理解できよう。従って、本第３の実施形態での説明は、２色に限るものではない。
【００６８】
＜第４の実施形態＞
上記第１乃至第３の実施形態においては、入力値に最も近い格子点を選択し、その格子点上にある値を出力値として採用した。つまり、図３、図６、図８に示すようなとびとびの座標群で構成される出力パターン領域のどの領域に入るかで出力パターンを決定した。換言すれば、本来は各領域の境界と領域との間にある場合であっても、いずれか領域に丸めて処理していることになる。
【００６９】
そこで、本第４の実施形態では、例えば入力値を囲む４格子点、あるいは３格子点の値を参照し、これらの値を適当な重み付けにより補間して最終的な出力を決定し、領域と領域との中間位置にある場合に適したパターンを決定する例を説明する。
【００７０】
図１２は３格子点の値を参照しこれらの値を補間して出力値（本第４の実施形態では２値）を求めるための出力決定部２のブロック構成図を示している。
【００７１】
図中、１２−０、１２−１は、上記第１乃至第３の実施形態における一次元ＬＵＴ７−０、７−１に対応するものであり、１３は同２次元ＬＵＴ４に対応するものである。
【００７２】
本第４の実施形態におけるＬＵＴ１２−０、１２−１それぞれは、ｇ0、ｇ1に加えて、ｄｐ0、ｄｍ0及びｄｐ1、ｄｍ1を出力する。ＬＵＴ１２−０、１２−１は、図１４に示すようなデータ構造を成している。
【００７３】
格子点選択及び重み決定部９は、これらのデータを入力し、ＬＵＴ１３が管理する９×９（図３と同様）の、注目画素の座標Ｉ'0、Ｉ'1に本来の座標（９×９の格子の中間位置にあることが多い）に最も近い３格子を決定し、その３格子の２値化データを得るため、ＬＵＴ１３を３回アドレスする。
【００７４】
図１３は、上記の３格子と、座標Ｉ'0、Ｉ'1の関係を示している。
【００７５】
補間部１０は、ＬＵＴ１３から出力される３組のデータを用い、ｄｐ0、ｄｍ0及びｄｐ1、ｄｍ1で決定される重み係数（ｘ座標及びｙ座標の２つ）を用いて、図１３における注目画素位置の２値化後のデータを決定する。
【００７６】
なお、本第４の実施形態においては、３点による補間方法を示したが、他にも４点を使う補間方法であっても良い。
【００７７】
以上説明した第４の実施形態が有効に機能するのは、例えば図３における各領域の境界での２値化であるのは、容易に理解できよう。
【００７８】
また、実施形態では、２値化について説明したが、３値化、或いはそれ以上の階調数への量子化に特に適したものとなる。
【００７９】
以上第１乃至第４の実施形態では、出力対象としてプリンタを例にして説明したが、誤差拡散処理による出力対象装置であれば、例えば２値や３値のＣＲＴでも良いし、場合によっては、出力装置に出力すべき画像データを一時的に記憶する記憶装置（フロッピーディスク等）をその出力対象としても構わない。また、画像データの入力元も如何なるものでも良いのは勿論である。
【００８０】
更に、各実施形態は、ソフトウェアでもって実現できるものであるから、本発明はコンピュータプログラムをもその範疇に含むものである。通常、コンピュータプログラムをコンピュータで実行させるためには、そのプログラムを記憶したフロッピーやＣＤ−ＲＯＭ等の記憶媒体を、装置にセットし、装置のハードディスクにコピーもしくはインストールすることで行われる。従って、本発明はかかる記憶媒体をもその範疇とするものであるのは明らかである。
【００８１】
【発明の効果】
以上説明したように本発明によれば、２色以上の多値画像データに対して誤差拡敬法を用いてより少ないビット数に量子化する場合に、汎用性を有し、且つ、量子化するビット数に応じて柔軟に対処できるようになる。
【図面の簡単な説明】
【図１】実施形態における画像処理装置のブロック構成図である。
【図２】図１における出力決定部のブロック構成図である。
【図３】図２のルックアップテーブル（ＬＵＴ）４が記憶管理する２次元空間と出力データとの関係を示す図である。
【図４】図１における誤差計算部３−０、３−１のブロック構成図である。
【図５】図４のＬＵＴ５の入力値と出力値との関係を示す図である。
【図６】第２の実施形態におけるルックアップテーブル（ＬＵＴ）４が記憶管理する２次元空間と出力データとの関係を示す図である。
【図７】第２の実施形態におけるＬＵＴ５の入力値と出力値との関係を示す図である。
【図８】第３の実施形態におけるルックアップテーブル（ＬＵＴ）４が記憶管理する２次元空間と出力データとの関係を示す図である。
【図９】第２の実施形態における誤差計算部３−０、３−１内のＬＵＴ５の入力値と出力値との関係を示す図である。
【図１０】第１の実施形態における図２のＬＵＴ７−０、７−１の入出力の関係を示す図である。
【図１１】第２の実施形態における図２のＬＵＴ７−０、７−１の入出力の関係を示す図である。
【図１２】第４の実施形態における出力決定部のブロック構成図である。
【図１３】第４の実施形態における補間処理を説明するための図である。
【図１４】図１２におけるＬＵＴ１２−０、１２−１の入出力の関係を示す図である。
【図１５】第１の実施形態をソフトウェアで実現する場合の処理手順を示すフローチャートである。
【図１６】第１の実施形態におけるルックアップテーブル（ＬＵＴ）４が記憶管理する望ましくない２次元空間と出力データとの関係を示す図である。
【図１】
0003870056.tif 000002
【図２】
0003870056.tif 000003
【図３】
0003870056.tif 000004
【図４】
0003870056.tif 000005
【図５】
0003870056.tif 000006
【図６】
0003870056.tif 000007
【図７】
0003870056.tif 000008
【図８】
0003870056.tif 000009
【図９】
0003870056.tif 000010
【図１０】
0003870056.tif 000011
【図１１】
0003870056.tif 000012
【図１２】
0003870056.tif 000013
【図１３】
0003870056.tif 000014
【図１４】
0003870056.tif 000015
【図１５】
0003870056.tif 000016
【図１６】
0003870056.tif 000017