(57)【特許請求の範囲】
【請求項１】
各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換する装置であって、
前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換手段を備え、
前記画素変換手段は、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数及び乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換するようになっていることを特徴とする多値画像変換装置。
【請求項２】
請求項１において、
Ｍ＝２であり、
前記画素変換手段は、前記乱数値に基づいて所定の基準閾値を算出し、前記近傍画素であって変換が行われたもののうち「１」の値をとる画素の総数に応じた値を前記所定の基準閾値に加算し、その加算値を前記閾値として算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値を「１」に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値を「０」に変換するようになっていることを特徴とする多値画像変換装置。
【請求項３】
各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換するプログラムであって、
前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換手段として実現される処理をコンピュータに実行させるためのプログラムであり、
前記画素変換手段は、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数及び乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換するようになっていることを特徴とする多値画像変換プログラム。
【請求項４】
各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換する方法であって、
前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換ステップを含み、
前記画素変換ステップは、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数及び乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換することを特徴とする多値画像変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、誤差拡散方法によりカラー画像を２値画像に変換する装置およびプログラム、並びに方法に係り、特に、アーティファクトの発生を低減するのに好適な多値画像変換装置および多値画像変換プログラム、並びに多値画像変換方法に関する。
【０００２】
【従来の技術】
従来、カラー画像を２値画像に変換する方法としては、誤差拡散方法があった。誤差拡散方法は、各画素がＮ値（例えば、２５６値）をとり得る画素群から構成されるカラー画像を、各画素が２値をとり得る画素群から構成される２値画像に変換する場合に用いられる方法の１つである。具体的には、カラー画像を水平方向複数のラインに区分し、最上段のラインにおいて左から右に対象画素を走査しながら、対象画素を２値の画素に１つずつ変換していく。そして、最上段のラインにおいて右端に達したときは２段目のラインの左端に移動する。これと同様の処理を２段目のライン以下すべてのラインに対して行い、右下の画素に達するまで行う。
【０００３】
対象画素の変換は、次のように行う。図７に示すように、対象画素をｘ１とし、その右、左下、下および右下に隣接する隣接画素をそれぞれｘ２，ｘ３，ｘ４，ｘ５とした場合、対象画素ｘ１の値ｖ１が２値化閾値Ｔｈ（例えば、Ｔｈ＝１２７）を超えているときは、画素値ｖ１を「１」に変換し、対象画素ｘ１の値ｖ１が２値化閾値Ｔｈ以下であるときは、画素値ｖ１を「０」に変換する。そして、対象画素ｘ１を２値化したときの誤差を所定の比率で隣接画素ｘ２〜ｘ５に拡散する。
【０００４】
対象画素ｘ１の誤差ｅ１は、対象画素ｘ１の値ｖ１を「１」に変換したときは下式（１）により算出し、対象画素ｘ１の値ｖ１を「０」に変換したときは下式（２）により算出する。
ｅ１  ＝  ｖ１  −２５５                                      …（１）
ｅ１  ＝  ｖ１                                                …（２）
そして、隣接画素ｘ２〜ｘ５の値ｖ’２〜ｖ’５は、元の画素値をｖ２〜ｖ５として下式（３）〜（６）により算出する。
ｖ’２  ＝  ｖ２  ＋ｅ１  ×５／１６                            …（３）
ｖ’３  ＝  ｖ３  ＋ｅ１  ×３／１６                            …（４）
ｖ’４  ＝  ｖ４  ＋ｅ１  ×７／１６                            …（５）
ｖ’５  ＝  ｖ５  ＋ｅ１  ×１／１６                            …（６）
また、このように、隣接画素にのみ誤差を拡散する場合に限らず、隣接画素、および隣接画素の対象画素とは反対側に隣接する画素に誤差を拡散する誤差拡散方法も広く知られている。
【０００５】
この場合、隣接画素ｘ２の右および右下に隣接する近傍画素をそれぞれｘ６，ｘ７とし、隣接画素ｘ３の左、左下、下および右下に隣接する近傍画素をそれぞれｘ８，ｘ９，ｘ１０，ｘ１１，とし、隣接画素ｘ５の下および右下に隣接する近傍画素をそれぞれｘ１２，ｘ１３とした場合、対象画素ｘ１の誤差ｅ１は、図８に示すように、７：５：７：５：５：３：３：１：３：５：３：１の比率で隣接画素ｘ２〜ｘ５および近傍画素ｘ６〜ｘ１３に拡散する。なお、比率としてはこのほかに、８：４：８：４：４：２：２：１：２：４：２：１を採用することがある。
【０００６】
【発明が解決しようとする課題】
しかしながら、従来の誤差拡散方法にあっては、例えば、コンピュータグラフィックスや、非常に滑らかな写真のように画素間の分散が極めて少ない画像等のカラー画像を２値画像に変換した場合は、同じような誤差の発生が周期的に繰返されるため、図９に示すように、２値画像において独特の縞模様（アーティファクト）が発生するという問題があった。図９は、垂直方向上から下に向けて画素値を２５５から０まで連続的に変化させたカラー画像を従来の誤差拡散方法により変換した２値画像である。
【０００７】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、アーティファクトの発生を低減するのに好適な多値画像変換装置および多値画像変換プログラム、並びに多値画像変換方法を提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項１記載の多値画像変換装置は、各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換する装置であって、前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換手段を備え、
前記画素変換手段は、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数および乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換するようになっている。
【０００９】
このような構成であれば、画像変換手段により、Ｎ値画像のなかで対象画素が複数のラインに区分され、複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に対象画素が走査される。また、複数のラインのうち偶数ラインについては、そのラインに沿って所定方向とは逆方向に走査されながら、近傍画素であって変換が行われたもののうち所定値をとる画素の総数および乱数値に基づいて閾値が算出される。そして、対象画素の値が閾値を超えていると、対象画素の値がＭ値のうち一の値に変換される。これに対し、対象画素の値が閾値以下であると、対象画素の値がＭ値のうち他の値に変換される。
【００１０】
また、近傍画素とは、対象画素の近傍にある画素をいい、これには、例えば、対象画素に隣接する隣接画素のほか、隣接画素の対象画素とは反対側にある画素も含まれる。以下、請求項３記載の多値画像変換プログラム、並びに請求項４記載の多値画像変換方法において同じである。
また、Ｎは、Ｎ≧３の条件を満たすことが必要であるが、発明の性質上小数点の値をとることはないので、Ｎは、Ｎ≧３でかつ整数である。また、Ｍは、Ｎ＞Ｍ≧２の条件を満たすことが必要であるが、発明の性質上小数点の値をとることはないので、Ｎ＞Ｍ≧２でかつ整数である。以下、請求項３記載の多値画像変換プログラム、並びに請求項４記載の多値画像変換方法において同じである。
【００１７】
さらに、本発明に係る請求項２記載の多値画像変換装置は、請求項１記載の多値画像変換装置において、Ｍ＝２であり、前記画素変換手段は、前記乱数値に基づいて所定の基準閾値を算出し、前記近傍画素であって変換が行われたもののうち「１」の値をとる画素の総数に応じた値を前記所定の基準閾値に加算し、その加算値を前記閾値として算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値を「１」に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値を「０」に変換するようになっている。
【００１８】
このような構成であれば、画素変換手段により、乱数値に基づいて所定の基準閾値が算出され、近傍画素であって変換が行われたもののうち「１」の値をとる画素の総数に応じた値が所定の基準閾値に加算され、その加算値が閾値として算出される。そして、対象画素の値が閾値を超えていると、対象画素の値が「１」に変換される。これに対し、対象画素の値が閾値以下であると、対象画素の値が「０」に変換される。
【００２５】
さらに、本発明に係る請求項３記載の多値画像変換プログラムは、各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換するプログラムであって、前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換手段として実現される処理をコンピュータに実行させるためのプログラムであり、前記画素変換手段は、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数及び乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換するようになっている。
【００２６】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項１記載の多値画像変換装置と同等の作用が得られる。
【００２７】
さらに、本発明に係る請求項４記載の多値画像変換方法は、各画素がＮ（Ｎ≧３）値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧２）値をとり得る画素群から構成されるＭ値画像に変換する方法であって、前記Ｎ値画像を複数のラインに区分し、前記複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に、前記複数ラインのうち偶数ラインについては、そのラインに沿って前記所定方向とは逆方向に前記対象画素を走査しながら、前記対象画素の近傍にある近傍画素をＭ（Ｎ＞Ｍ≧２）値の画素に変換したときの誤差を所定の比率で前記対象画素の値に加算し、その加算値に基づいて前記対象画素をＭ値の画素に変換する画素変換ステップを含み、前記画素変換ステップは、前記近傍画素であって変換が行われたもののうち所定値をとる画素の総数及び乱数値に基づいて閾値を算出し、前記対象画素の値が前記閾値を超えているときは、前記対象画素の値をＭ値のうち一の値に変換し、前記対象画素の値が前記閾値以下であるときは、前記対象画素の値をＭ値のうち他の値に変換する。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１ないし図６は、本発明に係る多値画像変換装置および多値画像変換プログラム、並びに多値画像変換方法の実施の形態を示す図である。
本実施の形態は、本発明に係る多値画像変換装置および多値画像変換プログラム、並びに多値画像変換方法を、図１に示すように、コンピュータ１００によりカラー画像を２値画像に変換する場合について適用したものである。
【００２９】
まず、本発明を適用するコンピュータ１００の構成を図１を参照しながら詳細に説明する。図１は、コンピュータ１００の構成を示すブロック図である。
コンピュータ１００は、図１に示すように、制御プログラムに基づいて演算およびシステム全体を制御するＣＰＵ３０と、所定領域にあらかじめＣＰＵ３０の制御プログラム等を格納しているＲＯＭ３２と、ＲＯＭ３２等から読み出したデータやＣＰＵ３０の演算過程で必要な演算結果を格納するためのＲＡＭ３４と、外部装置に対してデータの入出力を媒介するＩ／Ｆ３８とで構成されており、これらは、データを転送するための信号線であるバス３９で相互にかつデータ授受可能に接続されている。
【００３０】
Ｉ／Ｆ３８には、外部装置として、ヒューマンインターフェースとしてデータの入力が可能なキーボードやマウス等からなる入力装置４０と、データやテーブル等をファイルとして格納する記憶装置４２と、画像信号に基づいて画面を表示する表示装置４４とが接続されている。
ＣＰＵ３０は、マイクロプロセッシングユニットＭＰＵ等からなり、ＲＯＭ３２の所定領域に格納されている所定のプログラムを起動させ、そのプログラムに従って、図２のフローチャートに示すカラー画像変換処理を実行するようになっている。図２は、カラー画像変換処理を示すフローチャートである。
【００３１】
カラー画像変換処理は、各画素がＮ値（例えば、２５６値）をとり得る画素群から構成されるカラー画像を、各画素が２値をとり得る画素群から構成される２値画像に変換する処理であって、ＣＰＵ３０において実行されると、図２に示すように、まず、ステップＳ１００に移行するようになっている。
ステップＳ１００では、カラー画像を入力し、ステップＳ１０２に移行して、入力したカラー画像を水平方向複数のラインに区分し、カラー画像のなかで変換対象となる対象画素を走査するための走査点を最上段のラインに設定し、ステップＳ１０４に移行して、現在のラインにおいて左端の画素に走査点を設定し、ステップＳ１０６に移行する。
【００３２】
ステップＳ１０６では、２値化閾値Ｔｈを算出する閾値算出処理を実行し、ステップＳ１０８に移行して、走査点の画素の値がステップＳ１０６で算出した２値化閾値Ｔｈを超えているか否かを判定し、走査点の画素の値が２値化閾値Ｔｈを超えていると判定したとき（Ｙｅｓ）は、ステップＳ１１０に移行する。
ステップＳ１１０では、走査点の画素の値を「１」に変換し、ステップＳ１１２に移行して、走査点の画素の値を「１」に変換したときの誤差を、走査点の画素に隣接する隣接画素であって２値化変換が行われていないものに所定の比率で拡散する。具体的に、ステップＳ１１２では、図３に示すように、走査点の画素である対象画素をｘ１とし、その右、左下、下および右下に隣接する隣接画素をそれぞれｘ２，ｘ３，ｘ４，ｘ５とした場合、対象画素ｘ１の誤差ｅ１を上式（１）により算出し、隣接画素ｘ２〜ｘ５の値ｖ’２〜ｖ’５を上式（３）〜（６）により算出することにより誤差ｅ１を拡散する。図３は、対象画素ｘ１の誤差ｅ１を隣接画素ｘ２〜ｘ５に拡散する場合を説明するための図である。なお、図３は、対象画素ｘ１に向かう走査方向が左から右の場合であるが、走査方向が右から左の場合は、隣接画像ｘ２が左に位置する点、および誤差拡散の比率が左右対称となる点だけが異なりそれ以外は同じである。
【００３３】
次いで、ステップＳ１１４では、現在のラインが奇数ラインであるか否かを判定し、現在のラインが奇数ラインであると判定したとき（Ｙｅｓ）は、ステップＳ１１６に移行して、現在のラインにおいて走査点が右端の画素に設定されているか否かを判定し、走査点が右端の画素に設定されていると判定したとき（Ｙｅｓ）は、ステップＳ１１８に移行する。
ステップＳ１１８では、走査点が最下段のラインに設定されているか否かを判定し、走査点が最下段のラインに設定されていると判定したとき（Ｙｅｓ）は、一連の処理を終了して元の処理に復帰させる。
【００３４】
一方、ステップＳ１１８で、走査点が最下段のラインに設定されていないと判定したとき（Ｎｏ）は、ステップＳ１２０に移行して、現在のラインよりも１つ下のラインに走査点を設定し、ステップＳ１０６に移行する。
一方、ステップＳ１１６で、現在のラインにおいて走査点が右端の画素に設定されていないと判定したとき（Ｎｏ）は、ステップＳ１２２に移行して、現在のラインにおいて１つ右の隣接画素に走査点を設定し、ステップＳ１０６に移行する。
【００３５】
一方、ステップＳ１１４で、現在のラインが偶数ラインであると判定したとき（Ｎｏ）は、ステップＳ１２４に移行して、現在のラインにおいて走査点が左端の画素に設定されているか否かを判定し、走査点が左端の画素に設定されていると判定したとき（Ｙｅｓ）は、ステップＳ１１８に移行する。
一方、ステップＳ１２４で、現在のラインにおいて走査点が左端の画素に設定されていないと判定したとき（Ｎｏ）は、ステップＳ１２６に移行して、現在のラインにおいて１つ左の隣接画素に走査点を設定し、ステップＳ１０６に移行する。
【００３６】
一方、ステップＳ１０８で、走査点の画素の値がステップＳ１０６で算出した２値化閾値Ｔｈ以下であると判定したとき（Ｎｏ）は、ステップＳ１２８に移行する。
ステップＳ１２８では、走査点の画素の値を「０」に変換し、ステップＳ１３０に移行して、走査点の画素の値を「０」に変換したときの誤差を、走査点の画素に隣接する隣接画素であって２値化変換が行われていないものに所定の比率で拡散し、ステップＳ１１４に移行する。具体的に、ステップＳ１３０では、図３に示すように、走査点の画素である対象画素をｘ１とし、その右、左下、下および右下に隣接する隣接画素をそれぞれｘ２，ｘ３，ｘ４，ｘ５とした場合、対象画素ｘ１の誤差ｅ１を上式（２）により算出し、隣接画素ｘ２〜ｘ５の値ｖ’２〜ｖ’５を上式（３）〜（６）により算出することにより誤差ｅ１を拡散する。
【００３７】
次に、上記ステップＳ１０６の閾値算出処理を図４を参照しながら詳細に説明する。図４は、上記ステップＳ１０６の閾値算出処理を示すフローチャートである。
閾値算出処理は、上記ステップＳ１０６において実行されると、図４に示すように、まず、ステップＳ２００に移行するようになっている。
ステップＳ２００では、２値化閾値Ｔｈを「１２７」に設定し、ステップＳ２０２に移行して、３以上の値をとり得る乱数値を取得し、ステップＳ２０４に移行して、取得した乱数値を「３」で除算したときの余数を算出し、ステップＳ２０６に移行する。
【００３８】
ステップＳ２０６では、ステップＳ２０４で算出した余数が「２」であるか否かを判定し、余数が「２」であると判定したとき（Ｙｅｓ）は、ステップＳ２０８に移行して、２値化閾値Ｔｈから「２０」を減算することにより２値化閾値Ｔｈを「１０７」に設定し、ステップＳ２１０に移行する。
ステップＳ２１０では、隣接画素であって２値化変換が行われたもののうち「１」の値をとる画素の総数を算出する。具体的に、ステップＳ２１０では、図５に示すように、走査点の画素である対象画素をｘ１とし、その左上、上、右上および左に隣接する隣接画素をそれぞれｘ１４，ｘ１５，ｘ１６，ｘ１７とした場合、それら隣接画素ｘ１４〜ｘ１７は既に２値化変換されているので、隣接画素ｘ１４〜ｘ１７のなかから「１」の値をとる画素の総数を算出する。図５の例では、「１」の値をとる画素が３つあるので、総数は「３」となる。図５は、隣接画素ｘ１４〜ｘ１７のうち「１」の値をとる画素の総数を算出する場合を説明するための図である。なお、図５は、対象画素ｘ１に向かう走査方向が左から右の場合であるが、走査方向が右から左の場合は、隣接画像ｘ１７が右に位置する点、および誤差拡散の比率が左右対称となる点だけが異なりそれ以外は同じである。
【００３９】
次いで、ステップＳ２１２に移行して、ステップＳ２１０で算出した総数に所定値（例えば、１０）を乗算したものを２値化閾値Ｔｈに加算し、一連の処理を終了して元の処理に復帰させる。図５を例にとると、乱数値を３で除算したときの余数が「２」である場合、ステップＳ２１２の算出結果、２値化閾値Ｔｈは、「１０７」に「３０」を加算することにより「１３７」となる。
一方、ステップＳ２０６で、ステップＳ２０４で算出した余数が「２」でないと判定したとき（Ｎｏ）は、ステップＳ２１４に移行して、ステップＳ２０４で算出した余数が「１」であるか否かを判定し、余数が「１」であると判定したとき（Ｙｅｓ）は、ステップＳ２１６に移行して、２値化閾値Ｔｈに「２０」を加算することにより２値化閾値Ｔｈを「１４７」に設定し、ステップＳ２１０に移行する。
【００４０】
一方、ステップＳ２１４で、ステップＳ２０４で算出した余数が「１」でないと判定したとき（Ｎｏ）は、ステップＳ２１０に移行する。
次に、本実施の形態の動作を図６を参照しながら説明する。図６は、垂直方向上から下に向けて画素値を２５５から０まで連続的に変化させたカラー画像を本発明の変換方法により変換した２値画像である。
まず、カラー画像を入力すると、ステップＳ１０２〜Ｓ１０６を経て、最上段のラインに走査点が設定され、現在のラインにおいて左端の画素に走査点が設定され、閾値算出処理により２値化閾値Ｔｈが算出される。次いで、走査点の画素の値が２値化閾値Ｔｈを超えていると、ステップＳ１１０，Ｓ１１２を経て、走査点の画素の値が「１」に変換され、走査点の画素の値を「１」に変換したときの誤差が、走査点の画素に隣接する隣接画素であって２値化変換が行われていないものに所定の比率で拡散される。これに対し、走査点の画素の値が２値化閾値Ｔｈ以下であると、ステップＳ１２８，Ｓ１３０を経て、走査点の画素の値が「０」に変換され、走査点の画素の値を「０」に変換したときの誤差が、走査点の画素に隣接する隣接画素であって２値化変換が行われていないものに所定の比率で拡散される。
【００４１】
最上段のラインにおいては、それが奇数ラインであるので、ステップＳ１１４，Ｓ１１６，Ｓ１２２を繰り返し経て、同ラインにおいて左から右に走査点が移動しながら、ステップＳ１１０，Ｓ１１２の処理またはステップＳ１２８，Ｓ１３０の処理により、走査点の画素が２値の画素に１つずつ変換されていく。そして、走査点が右端の画素まで移動すると、走査点は、２段目のラインに移動する。
【００４２】
２段目のラインにおいては、それが偶数ラインであるので、ステップＳ１１４，Ｓ１２４，Ｓ１２６を繰り返し経て、同ラインにおいて右から左に走査点が移動しながら、ステップＳ１１０，Ｓ１１２の処理またはステップＳ１２８，Ｓ１３０の処理により、走査点の画素が２値の画素に１つずつ変換されていく。そして、走査点が左端の画素まで移動すると、走査点は、３段目のラインに移動する。
【００４３】
３段目以降のラインについては、最上段のラインまたは２段目のラインの場合と同じ要領で、奇数ラインおよび偶数ラインごとに走査点がジグザグに移動し、走査点の画素が２値の画素に１つずつ変換されていく。
一方、２値化閾値Ｔｈは、ステップＳ１０４を経て、閾値算出処理により算出される。閾値算出処理では、ステップＳ２００〜Ｓ２０４を経て、２値化閾値Ｔｈが「１２７」に設定され、３以上の値をとり得る乱数値が取得され、取得された乱数値を「３」で除算したときの余数が算出される。
【００４４】
乱数値を「３」で除算したときの余数が「２」である場合は、ステップＳ２０８を経て、２値化閾値Ｔｈから「２０」が減算され、これにより２値化閾値Ｔｈが「１０７」に設定される。また、乱数値を「３」で除算したときの余数が「１」である場合は、ステップＳ２１６を経て、２値化閾値Ｔｈに「２０」が加算され、これにより２値化閾値Ｔｈが「１４７」に設定される。
そして、ステップＳ２１０，Ｓ２１２を経て、隣接画素であって２値化変換が行われたもののうち「１」の値をとる画素の総数が算出され、算出された総数に所定値が乗算され、その乗算値が２値化閾値Ｔｈに加算される。これにより、２値化閾値Ｔｈが算出される。
【００４５】
以上により、従来では、図９に示すように、２値画像においてアーティファクトが発生しているのに対し、本実施の形態では、垂直方向上から下に向けて画素値を２５５から０まで連続的に変化させたカラー画像を２値画像に変換した場合、図６に示すように、２値化画像においてアーティファクトの発生が低減していることが分かる。
このようにして、本実施の形態では、カラー画像のなかで対象画素を走査しながら、隣接画素を２値化したときの誤差を所定の比率で対象画素の値に加算し、隣接画素であって２値化変換が行われたもののうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算し、対象画素の値が２値化閾値Ｔｈを超えているときは、対象画素の値を「１」に変換し、対象画素の値が２値化閾値Ｔｈ以下であるときは、対象画素の値を「０」に変換するようになっている。
【００４６】
これにより、対象画素を２値化変換するにあたっては、隣接画像の誤差のほか、隣接画像であって２値化変換が行われたもののうち「１」の値をとる画素の総数が考慮されることから、従来に比して、２値画像においてアーティファクトが発生するのを低減することができた。
さらに、本実施の形態では、乱数値に基づいて２値化閾値Ｔｈを算出し、隣接画素であって２値化変換が行われたもののうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算し、対象画素の値が２値化閾値Ｔｈを超えているときは、対象画素の値を「１」に変換し、対象画素の値が２値化閾値Ｔｈ以下であるときは、対象画素の値を「０」に変換するようになっている。
【００４７】
これにより、２値化閾値Ｔｈを算出するにあたっては乱数値が考慮されることから、２値画像においてアーティファクトが発生するのをさらに低減することができた。
さらに、本実施の形態では、カラー画像を水平方向複数のラインに区分し、複数のラインのうち奇数ラインについては、そのラインに沿って所定方向に対象画素を走査し、複数のラインのうち偶数ラインについては、そのラインに沿って所定方向とは逆方向に対象画素を走査するようになっている。
【００４８】
これにより、対象画素の走査方向がライン１つおきに逆方向となることから、２値画像においてアーティファクトが発生するのをさらに低減することができた。
上記実施の形態において、カラー画像は、請求項１、３および４記載のＮ値画像に対応し、２値画像は、請求項１、３および４記載のＭ値画像に対応し、ステップＳ１００〜Ｓ１３０は、請求項１および３記載の画素変換手段、または請求項４記載の画素変換ステップに対応している。
【００４９】
なお、上記実施の形態においては、各画素が２５６値をとり得る画素群から構成されるカラー画像を、各画素が２値をとり得る画素群から構成される２値画像に変換するように構成したが、これに限らず、各画素がＮ（Ｎ≧４（但し、Ｎ＝２５６を除く。））値をとり得る画素群から構成されるＮ値画像を、各画素がＭ（Ｎ＞Ｍ≧３）値をとり得る画素群から構成されるＭ値画像に変換するように構成してもよい。
【００５０】
また、上記実施の形態においては、カラー画像を水平方向複数のラインに区分し、各ラインごとに２値化変換を行うように構成したが、これに限らず、カラー画像を垂直方向または斜め方向複数のラインに区分し、各ラインごとに２値化変換を行うように構成してもよい。
また、上記実施の形態においては、カラー画像を２値画像に変換するように構成したが、これに限らず、プリンタでカラー画像を印刷する場合に、そのカラー画像を２値画像に本発明の変換方法により変換し、変換した２値画像データに基づいて印刷を行うように構成してもよい。また、ディスプレイにカラー画像を表示する場合に、そのカラー画像を２値画像に本発明の変換方法により変換し、変換した２値画像データに基づいて表示を行うように構成してもよい。
【００５１】
これにより、アーティファクトの発生が少なく比較的良好な印刷結果または表示結果を得ることができる。
また、上記実施の形態においては、乱数値に基づいて２値化閾値Ｔｈを算出するように構成したが、乱数値に基づいて２値化閾値Ｔｈを算出せず、隣接画素のうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算する構成だけでも、従来の誤差拡散方法よりアーティファクトの発生を低減することができる。
【００５２】
また、上記実施の形態においては、隣接画素のうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算するように構成したが、隣接画素のうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算せず、乱数値に基づいて２値化閾値Ｔｈを算出する構成だけでも、従来の誤差拡散方法よりアーティファクトの発生を低減することができる。
また、上記実施の形態においては、対象画素の走査方向がライン１つおきに逆方向となるように構成したが、走査方向をジグザグとせず、隣接画素のうち「１」の値をとる画素の総数に応じた値を２値化閾値Ｔｈに加算する構成だけでも、従来の誤差拡散方法よりアーティファクトの発生を低減することができる。
【００５３】
また、上記実施の形態においては、対象画素の走査方向がライン１つおきに逆方向となるように構成したが、走査方向をジグザグとせず、乱数値に基づいて２値化閾値Ｔｈを算出する構成だけでも、従来の誤差拡散方法よりアーティファクトの発生を低減することができる。
また、上記実施の形態において、図３の例では、隣接画素ｘ２〜ｘ５に誤差を拡散する比率を７：３：５：１としたが、その他の場合には、必要に応じて最適な比率を採用することができる。
【００５４】
また、上記実施の形態においては、対象画素の誤差を隣接画素にのみ拡散するように構成したが、これに限らず、隣接画素、および隣接画素の対象画素とは反対側に隣接する画素に対象画素の誤差を拡散するように構成してもよい。
また、上記実施の形態において、図２および図４のフローチャートに示す処理を実行するにあたってはいずれも、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【００５５】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
また、上記実施の形態においては、本発明に係る多値画像変換装置および多値画像変換プログラム、並びに多値画像変換方法を、図１に示すように、コンピュータ１００によりカラー画像を２値画像に変換する場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【００５８】
【発明の効果】
以上説明したように、本発明に係る請求項１および２記載の多値画像変換装置によれば、対象画素を変換するにあたっては近傍画像の誤差が考慮されるとともに、閾値を算出するにあたっては乱数値が考慮されることから、従来に比して、Ｍ値画像においてアーティファクトが発生するのを低減することができるという効果が得られる。
さらに、対象画素の走査方向がライン１つおきに逆方向となることから、Ｍ値画像においてアーティファクトが発生するのをさらに低減することができるという効果も得られる。
【００５９】
一方、本発明に係る請求項３記載の多値画像変換プログラムによれば、請求項１記載の多値画像変換装置と同等の効果が得られる。
一方、本発明に係る請求項４記載の多値画像変換方法によれば、請求項１記載の多値画像変換装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】コンピュータ１００の構成を示すブロック図である。
【図２】カラー画像変換処理を示すフローチャートである。
【図３】対象画素ｘ１の誤差ｅ１を隣接画素ｘ２〜ｘ５に拡散する場合を説明するための図である。
【図４】上記ステップＳ１０６の閾値算出処理を示すフローチャートである。
【図５】隣接画素ｘ１４〜ｘ１７のうち「１」の値をとる画素の総数を算出する場合を説明するための図である。
【図６】垂直方向上から下に向けて画素値を２５５から０まで連続的に変化させたカラー画像を本発明の変換方法により変換した２値画像である。
【図７】対象画素ｘ１の誤差ｅ１を隣接画素ｘ２〜ｘ５に拡散する場合を説明するための図である。
【図８】対象画素ｘ１の誤差ｅ１を隣接画素ｘ２〜ｘ５および近傍画素ｘ６〜ｘ１３に拡散する場合を説明するための図である。
【図９】垂直方向上から下に向けて画素値を２５５から０まで連続的に変化させたカラー画像を従来の誤差拡散方法により変換した２値画像である。
【符号の説明】
１００                    コンピュータ
３０                      ＣＰＵ
３２                      ＲＯＭ
３４                      ＲＡＭ
３８                      Ｉ／Ｆ
４０                      入力装置
４２                      記憶装置
４４                      表示装置
ｘ１                        対象画素
ｘ２〜ｘ５，ｘ１４〜ｘ１７        隣接画素
ｘ６〜ｘ１３                  近傍画素
【図１】
0003620499.tif 000002
【図２】
0003620499.tif 000003
【図３】
0003620499.tif 000004
【図４】
0003620499.tif 000005
【図５】
0003620499.tif 000006
【図６】
0003620499.tif 000007
【図７】
0003620499.tif 000008
【図８】
0003620499.tif 000009
【図９】
0003620499.tif 000010