(57)【特許請求の範囲】
【請求項１】
階調を持つ画像の入力データに配分された誤差の累計を該入力データに加算手段で加算し、該加算値を閾値／量子化レベル設定手段で設定された閾値と比較手段で比較し、該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力し、該出力データに多値化する際に発生する誤差をあらかじめ設定された係数により誤差配分演算手段が周辺の画素へ配分してゆき、前記入力データを前記出力データに多値化する画像処理方法において、前記閾値と前記量子化レベルの変動範囲を、入力データがある値より大きい場合は一定とし、ある値より小さくなるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理方法。
【請求項２】
階調を持つ画像の入力データに配分された誤差の累計を該入力データに加算手段で加算し、該加算値を閾値／量子化レベル設定手段で設定された閾値と比較手段で比較し、該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力し、該出力データに多値化する際に発生する誤差をあらかじめ設定された係数により誤差配分演算手段が周辺の画素へ配分してゆき、前記入力データを前記出力データに多値化する画像処理方法において、前記閾値と前記量子化レベルの変動範囲を、入力データが大きい場合には大きく、小さくなるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理方法。
【請求項３】
階調を持つ画像の入力データに配分された誤差の累計を該入力データに加算手段で加算し、該加算値を閾値／量子化レベル設定手段で設定された閾値と比較手段で比較し、該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力し、該出力データに多値化する際に発生する誤差をあらかじめ設定された係数により誤差配分演算手段が周辺の画素へ配分してゆき、前記入力データを前記出力データに多値化する画像処理方法において、前記閾値と前記量子化レベルの変動範囲を、入力データが閾値に近い領域の場合には大きく、離れた領域になるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理方法。
【請求項４】
前記変動範囲は、入力データがある値より小さい場合は一定にすることを特徴とする請求項１ないし請求項３のいずれか１項に記載の画像処理方法。
【請求項５】
入力データが最高濃度に対応する場合は量子化レベルに対応した出力データを強制的に最高濃度に対応する値とし、入力データが最低濃度に対応する場合は量子化レベルに対応した出力データを強制的に最低濃度に対応する値とすることを特徴とする請求項１ないし請求項４のいずれか１項に記載の画像処理方法。
【請求項６】
各画素ごとに周囲の画素の多値化に際して発生する誤差の配分値の累計を格納する誤差記憶手段と、注目画素の入力データと前記誤差バッファメモリに格納されている該注目画素に配分された誤差の累計との和を算出する加算手段と、入力データに応じて閾値および量子化レベルを設定する閾値／量子化レベル設定手段と、前記加算手段によって算出された値と前記閾値／量子化レベル設定手段によって設定された閾値とを比較し該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力する比較手段と、該比較手段から出力される量子化レベルと前記加算手段で算出された値とから誤差を算出する誤差演算手段と、該誤差演算手段で算出された誤差を予め設定された係数により注目画素の周囲の画素における配分値を演算して前記誤差記憶手段に格納されている値に加算して格納する誤差配分演算手段を有し、前記閾値／量子化レベル設定手段は、前記閾値と前記量子化レベルの変動範囲を、入力データがある値より大きい場合は前記変動範囲を一定とし、ある値より小さくなるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理装置。
【請求項７】
各画素ごとに周囲の画素の多値化に際して発生する誤差の配分値の累計を格納する誤差記憶手段と、注目画素の入力データと前記誤差バッファメモリに格納されている該注目画素に配分された誤差の累計との和を算出する加算手段と、入力データに応じて閾値および量子化レベルを設定する閾値／量子化レベル設定手段と、前記加算手段によって算出された値と前記閾値／量子化レベル設定手段によって設定された閾値とを比較し該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力する比較手段と、該比較手段から出力される量子化レベルと前記加算手段で算出された値とから誤差を算出する誤差演算手段と、該誤差演算手段で算出された誤差を予め設定された係数により注目画素の周囲の画素における配分値を演算して前記誤差記憶手段に格納されている値に加算して格納する誤差配分演算手段を有し、前記閾値／量子化レベル設定手段は、前記閾値と前記量子化レベルの変動範囲を、入力データが大きい場合には大きく、入力データが小さくなるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理装置。
【請求項８】
各画素ごとに周囲の画素の多値化に際して発生する誤差の配分値の累計を格納する誤差記憶手段と、注目画素の入力データと前記誤差バッファメモリに格納されている該注目画素に配分された誤差の累計との和を算出する加算手段と、入力データに応じて閾値および量子化レベルを設定する閾値／量子化レベル設定手段と、前記加算手段によって算出された値と前記閾値／量子化レベル設定手段によって設定された閾値とを比較し該比較結果に従って前記閾値／量子化レベル設定手段によって設定された量子化レベルおよび前記量子化レベルに対応した出力データを出力する比較手段と、該比較手段から出力される量子化レベルと前記加算手段で算出された値とから誤差を算出する誤差演算手段と、該誤差演算手段で算出された誤差を予め設定された係数により注目画素の周囲の画素における配分値を演算して前記誤差記憶手段に格納されている値に加算して格納する誤差配分演算手段を有し、前記閾値／量子化レベル設定手段は、前記閾値と前記量子化レベルの変動範囲を、入力データが閾値に近い領域の場合には大きく、離れた領域になるに従って小さくなるように設定し、設定された変動範囲内で前記閾値と前記量子化レベルを変動させることを特徴とする画像処理装置。
【請求項９】
前記閾値／量子化レベル設定手段は、入力データがある値より小さい場合は前記変動範囲を一定にすることを特徴とする請求項６ないし請求項８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記比較器は、入力データが最高濃度に対応する場合は量子化レベルに対応する出力データを強制的に最高濃度に対応する値とし、入力データが最低濃度に対応する場合は量子化レベルに対応する出力データを強制的に最低濃度に対応する値とすることを特徴とする請求項６ないし請求項９のいずれか１項に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、階調を持つ画像情報の入力データを擬似中間調処理して複数の量子化レベルに多値化する画像処理方法および画像処理装置に関するものである。
【０００２】
【従来の技術】
入力データを擬似中間調処理して階調を表現する方法の一つとして、誤差拡散法がある。この方法は、着目画素の入力濃度信号に周辺の画素から渡される誤差信号を加算し、閾値と比較して２値化出力信号を得る。さらに、閾値との誤差信号を誤差配分係数を乗じて周辺の複数画素へ配分させていくものである。このような処理によって、２値しか表現できない記録装置でも、高品質の階調が表現できるという特徴を持つ。例えば特開平３−２４１９７１号公報には、この２値の誤差拡散法の改良に関する記載がある。
【０００３】
このような２値表現への変換を行なう誤差拡散法を、多値表現が可能なように展開した多値誤差拡散法も提案されている。例えば、昭和５３年電子通信学会通信部門全国大会，１９７８，加藤ほか，５０４「平均誤差最小法の多値化について」，Ｐ．５０４などに記載されている。この多値誤差拡散法は、数階調程度の濃淡表示が可能な記録装置に対して適応され、複数の閾値を設けて、記録階調に相当する量子化レベルに対応する出力データに割り当てるものである。
【０００４】
図２は、従来の４値の誤差拡散法によって量子化された各濃度のドット占有率と入力信号との関係を示すグラフ、図３は、同じく閾値、量子化レベルに対応する出力データ、誤差配分係数の一例の説明図である。ここでは入力信号として８ビット（０〜２５５）の信号が入力されるものとし、４値の誤差拡散法によってそれぞれの画素の値を０，濃度１，濃度２，濃度３のいずれかの値に量子化する。図２において、すべての画素が濃度１となったとき、画像は大局的には濃度Ｄ１となる。同様に、すべての画素が濃度２となったとき、画像は大局的には濃度Ｄ２となり、すべての画素が濃度３の値となったとき、画像の大局的な濃度は２５５となる。
【０００５】
各画素ごとに、これらの濃度（０，濃度１，濃度２，濃度３）のいずれにするかを決定するため、図３（Ａ）に示すようにそれらの濃度値に基づいて閾値１（ＴＨ１）、閾値２（ＴＨ２）、閾値３（ＴＨ３）が設定されている。各画素における入力信号の値と、周囲の画素を処理した際に発生する誤差との和と、これらの閾値１〜３を比較することによって、量子化された濃度値（０，濃度１，濃度２，濃度３のいずれか）を決定する。
【０００６】
例えば量子化された濃度値が決定されたとき、その画素の値と周囲の画素からの誤差との和と、決定された濃度値との間に誤差が生じる。その誤差を図３（Ｂ）に示すように近隣の画素（ここではその後に画素値を決定する周囲の画素）に配分する。例えば右隣の画素には誤差の７／１６を配分する。右隣の画素の画素値を決定する際には、その画素の画素値と、周囲の画素から配分された誤差値の和をもとに、閾値との比較を行なって量子化された濃度値を決定する。
【０００７】
このようにして各画素における量子化された濃度値を決定してゆく。例えば閾値２（ＴＨ２）に近い濃度の画像では、ある画素で濃度２に量子化されると負の誤差値が近隣の画素に配分され、例えば隣接する画素では濃度１に量子化される。このようにして、濃度２と濃度１の画素が交錯した画像が形成される。形成された画像の濃度は、大局的には濃度２と濃度１の中間のほぼ閾値２（ＴＨ２）に近い濃度となる。
【０００８】
このように、量子化された濃度値０，濃度１，濃度２，濃度３の画素の占有率を入力信号に応じて変化させることによって、入力信号に対応した濃度の画像を得ることができる。図２において、入力信号が０から大きくなるに従い、濃度１の画素の占有率が増加し、入力信号がＤ１のとき、濃度１の画素の占有率が１００％、すなわち、すべての画素が濃度１となる。さらに、入力信号が濃度Ｄ１より大きくなると、濃度１のドット占有率が減少し、濃度２のドット占有率が増加する。そして、入力信号が濃度Ｄ２のとき、濃度２のドット占有率が１００％、すなわち、すべての画素が濃度２となる。以下、同様に濃度３の場合も説明できる。
【０００９】
図４は、入力信号の値と従来の４値の誤差拡散法によって量子化された各画素の濃度値との関係の説明図である。上述のように、入力信号の値Ｉｎが０，Ｄ１，Ｄ２，２５５のとき、各画素の量子化された濃度値はすべて０，濃度１，濃度２，濃度３となる。その中間では、０＜Ｉｎ＜Ｄ１のときは各画素の量子化された濃度値は０または濃度１となり、Ｄ１＜Ｉｎ＜Ｄ２のときは各画素の量子化された濃度値は濃度１または濃度２となり、Ｄ２＜Ｉｎ＜２５５のときは各画素の量子化された濃度値は濃度２または濃度３となる。図４では、入力信号の値Ｉｎに応じて量子化後に存在する濃度値に○印を付して示している。
【００１０】
このように、４値の誤差拡散法を行なった場合、濃度値Ｄ１，Ｄ２を境に量子化された濃度値の構成が変わるため、この濃度値Ｄ１，Ｄ２の位置に擬似輪郭が発生するという問題がある。入力信号の値ｉｎが濃度値Ｄ１，Ｄ２およびその近傍の場合には、画素値は濃度１または濃度２のみの一様なパターンとなり、他の入力信号値の場合の複数の濃度値の画素が混交するパターンとは異なったパターンとなる。そのため、この濃度値Ｄ１，Ｄ２の部分に擬似輪郭が発生するなどの画質低下が見られる。
【００１１】
これらを改善するものとして、いくつかの方法が提案されている。例えば、画像電子学会誌、第２４巻、第１号、１９９５、越智宏、「階調化処理による高品質多値誤差拡散法」、Ｐ．１０〜１７に記載されている方法では、まず、通常の２値誤差拡散法の処理を行ない、第１階層の２値画像を得る。続いて、原画信号レベルと第１階層の出力レベルとの差分値を、第１階層の処理における量子化レベルの中間量子化レベルで誤差拡散を行ない、第１階層の画像出力レベルに加えることにより第２階層の３値画像を得る。以下、同様に処理し、多値の画像出力を得るというものである。この方法によれば、中間量子化レベル付近でも一様なパターンとはならず、擬似輪郭の発生を抑えることができる。しかしながらこの方法では、処理が複雑で処理時間が長くなるばかりでなく、粒状性が悪化し、画像にノイズが目立つようになるという欠点を有している。
【００１２】
また、例えば特開平９−１０７４７２号公報に記載されている方法では、入力信号に対して誤差係数を用いて補正処理することによって、中間量子化レベルにおいても量子化レベルが均一にならないようにし、擬似輪郭の発生を防いでいる。
【００１３】
これとは別の方法として、例えば特開平３−１６３７９号公報には、閾値をディザマトリクスや乱数等を使用して変動させて多値の画像出力を得る技術が開示されている。しかし、ディザマトリクスのような周期的な変動を用いた場合、モアレの発生などの欠点を有している。また、乱数等を使用する場合、特に画素値の小さい白色部分において乱数によるノイズが目立つ画像になるという欠点がある。
【００１４】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、擬似輪郭の発生を防止し、構成が簡単で、ノイズの目立たない画像処理装置および画像処理方法を提供することを目的とするものである。
【００１５】
【課題を解決するための手段】
本発明は、多値誤差拡散法を用いて入力データを複数の量子化レベルに対応した出力データに多値化する画像処理方法および画像処理装置において、多値化の際に用いる閾値と量子化レベルの両方の変動範囲を入力データに応じて設定し、設定された変動範囲内で、閾値と量子化レベルの両方を変動させる。このような閾値と量子化レベルの変動によって、入力データが量子化レベルあるいはその近傍の値を取る場合であっても誤差変動が生じ、擬似輪郭の発生を防止することができる。
【００１６】
本発明ではさらに、入力データに応じて閾値と量子化レベルの変動範囲を変化させる。例えば入力データがある値より大きい場合は一定にし、ある値より小さくなるに従って変動範囲を小さくしたり、あるいは、入力データが大きい場合には変動範囲が大きく、小さくなるに従って変動範囲が小さくなるようにしたり、さらには入力データがある値より小さい場合は変動範囲を一定（例えば０）にする。これによって、入力データが小さい場合に特に目障りとなるノイズを減少させることができ、全体としてノイズの目立たない画像を形成することができる。さらには、変動範囲を入力データが閾値に近い領域の場合には大きく、離れた領域になるに従って小さくしてもよい。
【００１７】
さらに、このような閾値や量子化レベルの変動によって、入力データが最高濃度であっても最高の量子化レベルに対応した出力データとならなかったり、入力データが最低濃度であっても最低の量子化レベルに対応した出力データとならない場合の不具合を想定し、入力データが最高濃度に対応する場合は量子化レベルに対応した出力データを強制的に最高濃度に対応する値とし、入力データが最低濃度に対応する場合は量子化レベルに対応した出力データを強制的に最低濃度に対応する値とするように処理してもよい。
【００１８】
【発明の実施の形態】
図１は、本発明の実施の一形態を示すブロック図である。図中、１は閾値／量子化レベル設定器、２は誤差バッファメモリ、３は加算器、４は比較器、５は誤差演算器、６は誤差配分演算器、１１は入力データ、１２は累積誤差、１３は誤差加算信号、１４は出力データ、１５は量子化レベル、１６は誤差信号である。
【００１９】
閾値／量子化レベル設定器１は、入力データ１１に応じて閾値および量子化レベルを設定し、比較器４に出力する。このとき、後述するように、閾値あるいは閾値と量子化レベルの両方を、入力データに応じて設定した変動範囲内で変動させる。誤差バッファメモリ２は、各画素ごとに周囲の画素から配分される誤差の累計を格納する。なお、画像すべてについてこの誤差の累計値（累積誤差）を保持する必要はなく、例えば図３（Ｂ）に示すような範囲に誤差を配分するのであれば１ライン＋１画素分の容量があればよい。加算器３は、注目画素の入力データと、誤差バッファメモリ２に格納されている注目画素に配分された誤差の累計（累積誤差１２）との和を算出し、誤差加算信号１３として出力する。比較器４は、加算器３からの誤差加算信号１３と、閾値／量子化レベル設定器１からの閾値とを比較し、同じく閾値／量子化レベル設定器１からの量子化レベルのいずれに該当するかを決定する。決定した量子化レベルを誤差演算器５に出力するとともに、決定した量子化レベルに対応した値を出力データ１４として出力する。誤差演算器５は、比較器４からの量子化レベル１５と、加算器３からの誤差加算信号１３との差を算出し、誤差信号１６として出力する。誤差配分演算器６は、誤差演算器５からの誤差信号１６を予め設定された係数により注目画素の周囲の画素に配分し、誤差バッファメモリ２に格納されている各画素の累積誤差に配分した誤差を加算して、誤差バッファメモリ２に格納する。
【００２０】
以下の説明では具体例として、入力データ１１として０〜２５５（８ビット）の画像情報が入力され、出力データ１４として０、濃度１、濃度２、濃度３の４値に変換する場合を示している。なお、値は０が白、２５５が黒であるものと仮定する。また、このように４値に変換するため、閾値／量子化レベル設定器１では、閾値ＴＨ１，ＴＨ２，ＴＨ３と、量子化レベル０，Ｄ１，Ｄ２，２５５を設定する。もちろん、量子化レベル０および２５５は設定しなくてもよい。また、比較器４では出力データ１４として、量子化レベル０，Ｄ１，Ｄ２，２５５にそれぞれ対応した出力データ０、濃度１、濃度２、濃度３を出力する。出力データ１４は、例えば０〜３（２ビット）のデータとすることができる。なお、閾値／量子化レベル設定器１によって量子化レベルＤ１，Ｄ２は変化するが、対応する出力データ１４は固定した値を出力するように構成できる。
【００２１】
この具体例に基づいて本発明の実施の一形態における動作の一例を説明する。０〜２５５（８ビット）の画像情報を持つ入力データ１１が入力されると、入力データに応じて、閾値／量子化レベル設定器１において閾値ＴＨ１，ＴＨ２，ＴＨ３、量子化レベル０，Ｄ１，Ｄ２，２５５がそれぞれ決定される。
【００２２】
一方、入力データ１１は、誤差バッファメモリ２に格納されている当該画素の累積誤差１２と加算器３で加算され、誤差加算信号１３が生成される。誤差加算信号１３は、比較器４に入力され、閾値ＴＨ１，ＴＨ２，ＴＨ３と比較される。誤差加算信号１３が閾値ＴＨ１より小さい場合は“００”、閾値ＴＨ１と閾値ＴＨ２の間の場合は“０１”、閾値ＴＨ２と閾値ＴＨ３の間の場合は“１０”、閾値ＴＨ３より大きい場合は“１１”を出力データ１４として出力する。なお、“”内は２進数である。また同様に、誤差加算信号１３が閾値ＴＨ１より小さい場合は０、閾値ＴＨ１と閾値ＴＨ２の間の場合はＤ１、閾値ＴＨ２と閾値ＴＨ３の間の場合はＤ２、閾値ＴＨ３より大きい場合は２５５を量子化レベル１５として誤差演算器５に出力する。
【００２３】
加算器３から出力された誤差加算信号１３と、比較器４から出力された量子化レベル１５は、その差が誤差演算器５により演算され、誤差信号１６として出力される。出力された誤差信号１６は、誤差配分演算器６により予め設定された誤差配分係数を用いて周辺の画素における誤差の配分値が演算され、誤差バッファメモリ２に格納されている周辺の画素の積算誤差と加算し、加算された新たな積算誤差を改めて格納する。
【００２４】
本発明では上述のように、閾値／量子化レベル設定器１によって設定する閾値または閾値と量子化レベルの両方を変動させる。これによって、入力データが量子化レベルあるいはその近傍の値を取っても誤差が不均一になり、ばらつく。そのため、例えば入力データが量子化レベルＤ１付近の値であっても、誤差の配分によって、ある場合には量子化レベルが０になったり、あるいはＤ２になったりする。そのため、量子化レベルＤ１付近でも各種の量子化レベルの画素が現われ、擬似輪郭の発生を防止することができる。
【００２５】
しかし入力データに関係なく変動させると、従来の技術において発生していたように、濃度の低い領域（白領域）においてノイズが顕著となるという不具合が発生する。そのため、本発明では入力データに応じて閾値もしくは閾値と量子化レベルの変動範囲を決定し、その変動範囲内で変動させることによって、ノイズの発生を防止している。以下、ノイズの発生を防止するための閾値、量子化レベルの生成方法についていくつか例を示す。
【００２６】
図５、図６は、閾値／量子化レベル設定器１で設定する閾値および量子化レベルの第１の例の説明図である。上述の具体例のように４値化する場合には、図３（Ａ）でも説明したように３つの閾値ＴＨ１，ＴＨ２，ＴＨ３を用い、図５（Ａ）に示すように量子化レベル０，Ｄ１，Ｄ２，２５５のいずれかに量子化するものとする。これは以降の各例において同様である。
【００２７】
この第１の例では、閾値ＴＨ１，ＴＨ２，ＴＨ３と量子化レベルＤ１，Ｄ２を変動させる。そして、入力データが４２より大きい場合にはその変動範囲を一定幅とするとともに、入力データが３０以下の場合にはその変動範囲を０とし、入力データが３０より大きく４２以下の場合には入力データの値に従った変動範囲を設定する例を示している。なお、図６では閾値ＴＨ１を４２として示し、変動範囲にはハッチングを施して示している。
【００２８】
具体的には、図５（Ｂ）に示すように、入力データＩｎが３０以下のとき、閾値および量子化レベルの変動範囲の幅は０であり、閾値と量子化レベル０／ＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３／２５５は、それぞれ、０／４２／８４／１２７／１７０／２１２／２５５とする。
【００２９】
入力データＩｎが４２より大きいとき、量子化レベル０，２５５はそのままとし、閾値および量子化レベルの変動範囲の幅を±１２として、入力データが３０以下の閾値と量子化レベル４２／８４／１２７／１７０／２１２をこの変動範囲内で変化させる。変化のさせ方は任意であり、例えばこの範囲内の乱数を発生させ、発生した乱数を加減算して閾値および量子化レベルを得てもよい。ここでは簡便な方法として、予め４つの値を用意しておき、いずれの値を選択するかを乱数で決定している。具体的には、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の値として、５４／９６／１３９／１８２／２２４、４２／８４／１２７／１７０／２１２、３０／７２／１１５／１５８／２００、４２／８４／１２７／１７０／２１２の各組み合わせのいずれかを、入力データＩｎに応じて乱数により選択する。もちろん、各閾値および各量子化レベルごとに乱数によっていずれかの値を選択してもよい。
【００３０】
入力データが３０より大きく４２以下の時、量子化レベル０，２５５はそのままで、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の変動範囲を、入力データが大きくなるにつれて幅が大きくなるように設定する。ここでは直線的に変動範囲の幅が広がるように設定し、入力データが３０のときに０、４２のときに±１２となるようにしている。すなわち入力データＩｎの値に応じて、閾値ＴＨ１の変動範囲は５４−（４２−Ｉｎ）〜３０＋（４２−Ｉｎ）、量子化レベルＤ１の変動範囲は９６−（４２−Ｉｎ）〜７２＋（４２−Ｉｎ）、閾値ＴＨ２の変動範囲は１３９−（４２−Ｉｎ）〜１１５＋（４２−Ｉｎ）、量子化レベルＤ２の変動範囲は１８２−（４２−Ｉｎ）〜１５８＋（４２−Ｉｎ）、閾値ＴＨ３の変動範囲は２２４−（４２−Ｉｎ）〜２００＋（４２−Ｉｎ）となる。変化のさせ方は任意であり、例えば入力データＩｎから決まる変動範囲内の値を乱数で決定してもよいが、ここでは、予め４つの値を用意しておき、いずれの値を選択するかを乱数で決定している。
【００３１】
具体的には、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の値として、５４−（４２−Ｉｎ）／９６−（４２−Ｉｎ）／１３９−（４２−Ｉｎ）／１８２−（４２−Ｉｎ）／２２４−（４２−Ｉｎ）、４２／８４／１２７／１７０／２１２、３０＋（４２−Ｉｎ）／７２＋（４２−Ｉｎ）／１１５＋（４２−Ｉｎ）／１５８＋（４２−Ｉｎ）／２００＋（４２−Ｉｎ）、４２／８４／１２７／１７０／２１２の値の組のいずれかを乱数によって選択し、入力データＩｎによって各閾値および量子化レベルを決定している。
【００３２】
このようにして入力データに応じて決定された閾値および量子化レベルが比較器４に出力される。入力データが小さい場合には閾値および量子化レベルを変動させないようにして白領域にノイズが乗るのを防止するとともに、入力データが大きい領域では閾値および量子化レベルを変動させ、擬似輪郭の発生を防止することができる。またその間の領域では、閾値および量子化レベルの変動幅を入力データが大きくなるほど広くなるように設定し、変動幅の切り替えによる擬似輪郭の発生を防いでいる。
【００３３】
なお、比較器４には入力データ１１がそのまま入力されるわけではなく、加算器３によって累積誤差１２が加算された誤差加算信号１３が入力される。そのため、例えば入力データが閾値ＴＨ２の近傍のデータであったとしても、比較器４に入力される誤差加算信号１３はいずれの値であるかは累積誤差１２によるので、比較器４は閾値ＴＨ２および量子化レベルＤ１，Ｄ２が必要なだけではなく、閾値／量子化レベル設定器１で設定されるすべての閾値および量子化レベルが必要である。
【００３４】
図７、図８は、閾値／量子化レベル設定器１で設定する閾値および量子化レベルの第２の例の説明図である。この第２の例では、閾値ＴＨ１，ＴＨ２，ＴＨ３と量子化レベルＤ１，Ｄ２を変動させることとし、入力データが３０以下の場合に変動幅を０とし、入力データが３０より大きい場合に、入力データが大きくなるに従ってその変動幅が大きくなるように設定する例を示している。
【００３５】
具体的には、入力データが３０以下のとき、閾値と量子化レベル０／ＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３／２５５は、それぞれ、０／４２／８４／１２７／１７０／２１２／２５５である。
【００３６】
入力データが３０より大きいとき、量子化レベル０，２５５はそのままで、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の変動範囲を、入力データが３０のときに０、２５５のときに最大の変動幅である±１２となるように、入力データが大きくなるにつれて直線的に変動範囲の幅が大きくなるように設定する。すなわち入力データＩｎの値に応じて、閾値ＴＨ１の変動範囲は５４−（２５５−Ｉｎ）×１２／２５５（＝ＴＨ１ｈ）〜３０＋（２５５−Ｉｎ）×１２／２５５（＝ＴＨ１ｌ）、量子化レベルＤ１の変動範囲は９６−（２５５−Ｉｎ）×１２／２５５（＝Ｄ１ｈ）〜７２＋（２５５−Ｉｎ）×１２／２５５（＝Ｄ１ｌ）、閾値ＴＨ２の変動範囲は１３９−（２５５−Ｉｎ）×１２／２５５（＝ＴＨ２ｈ）〜１１５＋（２５５−Ｉｎ）×１２／２５５（＝ＴＨ２ｌ）、量子化レベルＤ２の変動範囲は１８２−（２５５−Ｉｎ）×１２／２５５（＝Ｄ２ｈ）〜１５８＋（２５５−Ｉｎ）×１２／２５５（＝Ｄ２ｌ）、閾値ＴＨ３の変動範囲は２２４−（２５５−Ｉｎ）×１２／２５５（＝ＴＨ３ｈ）〜２００＋（２５５−Ｉｎ）×１２／２５５（＝ＴＨ３ｌ）となる。変化のさせ方は任意であり、例えば入力データＩｎから決まる変動範囲内の値を乱数で決定してもよいが、ここでは、予め４つの値を用意しておき、いずれの値を選択するかを乱数で決定している。
【００３７】
具体的には、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の値は、ＴＨ１ｈ／Ｄ１ｈ／ＴＨ２ｈ／Ｄ２ｈ／ＴＨ３ｈ、４２／８４／１２７／１７０／２１２、ＴＨ１ｌ／Ｄ１ｌ／ＴＨ２ｌ／Ｄ２ｌ／ＴＨ３ｌ、４２／８４／１２７／１７０／２１２の値の組のいずれかを乱数によって選択し、入力データＩｎによって各閾値および量子化レベルを決定している。
【００３８】
この第２の例においても、入力データが小さい場合には閾値および量子化レベルを変動させないようにして白領域にノイズが乗るのを防止するとともに、入力データが大きい領域では閾値および量子化レベルを変動させ、擬似輪郭の発生を防止することができる。
【００３９】
図９は、閾値／量子化レベル設定器１で設定する閾値および量子化レベルの第３の例の説明図である。この第３の例においても、閾値ＴＨ１，ＴＨ２，ＴＨ３と量子化レベルＤ１，Ｄ２を変動させる。そして、入力データがある値以下の場合に変動幅を０とし、閾値と量子化レベル０／ＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３／２５５は、それぞれ一定の値とする。入力データがある値より大きいとき、量子化レベル０，２５５はそのままとし、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３は、入力データが閾値ＴＨ１，ＴＨ２，ＴＨ３に近い領域では変動幅が大きく、閾値から離れる領域では変動幅が小さくなるように、入力データＩｎに応じて変動幅を設定している。そしてその変動幅内で、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の値を乱数により変動させている。すなわち、入力データがある値より大きい時、入力データがＴＨ１，ＴＨ２，ＴＨ３の時は変動幅が最大となり、それらの中間で変動幅が最小となる。
【００４０】
図１０は、閾値／量子化レベル設定器１で設定する閾値および量子化レベルの第４の例の説明図である。この第４の例においても、閾値ＴＨ１，ＴＨ２，ＴＨ３と量子化レベルＤ１，Ｄ２を変動させ、入力データがある値以下の場合に変動幅を０とし、閾値と量子化レベル０／ＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３／２５５は、それぞれ一定の値とする。また、入力データがある値より大きいとき、量子化レベル０，２５５はそのままとし、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３は、入力データが閾値ＴＨ１，ＴＨ２，ＴＨ３に近い領域では変動幅が大きく、閾値から離れる領域では変動幅が小さくなるように、入力データＩｎに応じて変動幅を設定している。さらにこの第４の例においては、全体の傾向として上述の第２の例と同様に入力データが大きくなるにつれて変動幅が大きくなるようにしている。そのため、入力データがＴＨ１，ＴＨ２，ＴＨ３の時は変動幅が極大となるが、変動幅はＴＨ１の時よりもＴＨ２の時の方が大きく、さらにＴＨ３の時の方が大きくなっている。また、それらの中間で変動幅が極小となるが、その極小値も入力データの大きい方が大きくなっている。そしてこのような変動幅内で、閾値と量子化レベルＴＨ１／Ｄ１／ＴＨ２／Ｄ２／ＴＨ３の値を乱数により変動させる。
【００４１】
これらの第３、第４の例においても、入力データが小さい場合には閾値および量子化レベルを変動させないようにして白領域にノイズが乗るのを防止するとともに、入力データが大きい領域では閾値および量子化レベルを変動させ、擬似輪郭の発生を防止することができる。
【００４２】
図１１ないし図１４は、閾値／量子化レベル設定器１で設定する閾値および量子化レベルの第５ないし第８の例の説明図である。上述の第１ないし第４の例においては、入力データに応じて閾値ＴＨ１，ＴＨ２，ＴＨ３および量子化レベルＤ１，Ｄ２を変動させる例を示したが、閾値ＴＨ１，ＴＨ２，ＴＨ３のみ変動させるようにしてもよい。上述の第１ないし第４の例に対応して、閾値のみ変動させた例をそれぞれ第５ないし第８の例として、図１１ないし図１４に示している。
【００４３】
これらの第５ないし第９の例においても、入力データが小さい場合には閾値および量子化レベルを変動させないようにして白領域にノイズが乗るのを防止するとともに、入力データが大きい領域では閾値および量子化レベルを変動させ、擬似輪郭の発生を防止することができる。
【００４４】
図１５は、本発明の実施の一形態において４値の誤差拡散法を使用した場合の量子化された各濃度のドット占有率と入力データとの関係を示すグラフ、図１６は、入力データと同じく量子化された各画素の濃度値との関係の説明図である。図１６において、○△印はその濃度の画素の多少を示し、△印は、○印に比べて画素が少ないことを示している。
【００４５】
上述の各例に示したように、入力データに応じて閾値および量子化レベルを設定し、その設定された閾値と誤差加算信号を比較して量子化レベルおよび出力データを決定する。入力データが０から大きくなるに従い、出力データは濃度１の画素のドット占有率が増加し、入力データが量子化レベルＤ１より少し小さいレベルから濃度２のドット占有率が増加する。入力データが量子化レベルＤ１の時、濃度１のドット占有率は最大となるが、１００％にはならず、少し小さいドット占有率となる。このとき、濃度１の画素とともに、濃度２の画素が少し混在している。また、画素値が０の画素もまだ存在している。
【００４６】
入力データが量子化レベルＤ１より大きくなると、濃度２のドット占有率は増加するが、濃度１のドット占有率が減少する。入力データが量子化レベルＤ２より少し小さいレベルから濃度３のドット占有率が増加する。入力データが量子化レベルＤ２の時、濃度２のドット占有率は最大となるが、１００％にはならず、少し小さいドット占有率となる。このとき、濃度１および濃度３の画素も少し混在している。
【００４７】
入力データが量子化レベルＤ２より大きくなると、濃度３のドット占有率は増加するが、濃度２のドット占有率が減少し、また濃度１の画素はなくなる。入力データが２５５のとき、濃度２の画素はなくなり、濃度３の画素のみとなる。
【００４８】
このように、入力データが量子化レベルＤ１，Ｄ２およびその近傍の値であっても単一のデータが出力されることはなく、擬似輪郭の発生を防止することができる。また、入力データが０あるいは０に近い値の場合には閾値や量子化レベルを変動させないので、ドット占有率はほぼ０％となり、ノイズの発生を抑えることができる。
【００４９】
なお、上述のように閾値や量子化レベルを変動させたとき、例えば入力データが最高濃度に対応する場合でも、出力データは濃度３になるとは限らず、最高濃度が表現できない場合が発生する。このような場合に対処するため、図１に破線で示したように、比較部４は入力データを参照し、入力データが最高濃度に対応する値の場合には、出力データとして最大の値を強制的に出力するように構成してもよい。同様に、入力データが最低濃度の場合に出力データに濃度１以上の画素が出力されないように、入力データが最低濃度に対応する値の場合には、出力データとして最低の値を強制的に出力するように構成してもよい。
【００５０】
図１７は、本発明の実施の一形態において出力された出力データに従って多値記録を行なう場合の記録形態の一例の説明図である。本発明の実施の一形態によって例えば上述の具体例のように４値の多値誤差拡散を行ない、０〜２５５の入力データを０、濃度１、濃度２、濃度３の出力データに変換して出力した場合、この出力データに従って記録装置において多値記録を行なうことにより、画像全体として多階調の画像を記録することができる。
【００５１】
例えば図１７（Ａ）に示した例では、出力データが０の場合には印字せず、出力データが濃度１の場合に１度打ち、濃度２の場合に２度打ち、濃度３の場合に３度打ちの重ね印字を行なうことによって、各画素ごとに４値の階調記録が実現できる。また、例えば図１７（Ｂ）に示した例では、出力データによって記録するドット径を変え、出力データが濃度１の場合に小ドット、濃度２の場合に中ドット、濃度３の場合に大ドットを印字することによって、各画素ごとに４値の階調記録が実現できる。あるいはドットの大きさの代わりに、万線スクリーン処理によって各画素の記録幅を出力データによって変化させてもよい。さらに別の例として、図１７（Ｃ）に示した例では、出力データによって記録に用いるインクの濃度を変え、出力データが濃度１の場合に淡インクを用い、濃度２の場合に中濃度のインクを用い、濃度３の場合に濃インクを用いて印字することによって、各画素ごとに４値の階調記録が実現できる。もちろん、他の方法で多階調の記録を行なうこともできるし、また、これらの記録方法を組み合わせて用いてもよい。
【００５２】
このような多階調の記録方法では、たかだか数階調しか記録できないが、本発明の画像処理方法または画像処理装置と組み合わせることによって、多階調の画像を形成することが可能となる。このとき、擬似輪郭の発生は防止されており、またノイズの発生も抑えられているので、高画質の画像を形成することが可能である。
【００５３】
【発明の効果】
以上の説明から明らかなように、本発明によれば、多値誤差拡散法において閾値、あるいは閾値と量子化レベルの両方を変動させることによって、量子化レベルに対応する出力データが緩やかに入り交じり、入力データが量子化レベルまたはその近傍の場合に発生する擬似輪郭を低減することができる。このとき、変動範囲を入力データが閾値に近い領域の場合には大きく、離れた領域になるに従って小さくすることによって、より一層低減することができる。
【００５４】
本発明ではさらに、閾値、あるいは閾値と量子化レベルの両方を変動させる際に、変動範囲を入力データがある値より大きい場合は一定にし、ある値より小さくなるに従って小さくしたり、変動範囲を入力データが大きい場合には大きく、小さくなるに従って小さくしたり、あるいは、入力データが小さい範囲では変動範囲を一定（例えば変動幅を０）とすることによって、画像濃度が薄くなるに従って目立ちやすい誤差拡散特有のテクスチャと呼ばれるノイズも低減することができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の実施の一形態を示すブロック図である。
【図２】  従来の４値の誤差拡散法によって量子化された各濃度のドット占有率と入力信号との関係を示すグラフである。
【図３】  従来の４値の誤差拡散法における閾値、量子化レベル、誤差配分係数の一例の説明図である。
【図４】  入力信号の値と従来の４値の誤差拡散法によって量子化された各画素の濃度値との関係の説明図である。
【図５】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第１の例の説明図である。
【図６】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第１の例を示すグラフである。
【図７】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第２の例の説明図である。
【図８】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第２の例を示すグラフである。
【図９】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第３の例のグラフである。
【図１０】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第４の例のグラフである。
【図１１】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第５の例のグラフである。
【図１２】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第６の例のグラフである。
【図１３】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第７の例のグラフである。
【図１４】  閾値／量子化レベル設定器で設定する閾値および量子化レベルの第８の例のグラフである。
【図１５】  本発明の実施の一形態において４値の誤差拡散法を使用した場合の量子化された各濃度のドット占有率と入力データとの関係を示すグラフである。
【図１６】  入力データと本発明の実施の一形態において４値の誤差拡散法を使用した場合の量子化された各画素の濃度値との関係の説明図である。
【図１７】  本発明の実施の一形態において出力された出力データに従って多値記録を行なう場合の記録形態の一例の説明図である。
【符号の説明】
１…閾値／量子化レベル設定器、２…誤差バッファメモリ、３…加算器、４…比較器、５…誤差演算器、６…誤差配分演算器、１１…入力データ、１２…累積誤差、１３…誤差加算信号、１４…出力データ、１５…量子化レベル、１６…誤差信号。
【図１】
0003770291.tif 000002
【図２】
0003770291.tif 000003
【図３】
0003770291.tif 000004
【図４】
0003770291.tif 000005
【図５】
0003770291.tif 000006
【図６】
0003770291.tif 000007
【図７】
0003770291.tif 000008
【図８】
0003770291.tif 000009
【図９】
0003770291.tif 000010
【図１０】
0003770291.tif 000011
【図１１】
0003770291.tif 000012
【図１２】
0003770291.tif 000013
【図１３】
0003770291.tif 000014
【図１４】
0003770291.tif 000015
【図１５】
0003770291.tif 000016
【図１６】
0003770291.tif 000017
【図１７】
0003770291.tif 000018