(57)【特許請求の範囲】
【請求項１】
入力画像データをハーフトーン画像に変換する画像処理装置であって、
前記入力画像データにおける処理対象領域について、前記処理対象領域に含まれる画素群の画素値に基づいて、前記処理対象領域の目標値を算出する目標値算出手段と、
前記処理対象領域に含まれる各画素の出力値を決定する出力値決定手段を有し、
前記出力値決定手段は、前記目標値に応じて、画素毎の量子化処理により前記処理対象領域に含まれる各画素の出力値を決定するか、
前記目標値が所定値以上の処理対象領域については、前記目標値に近づくように前記目標値を前記処理対象領域に含まれる各画素に分配順に基づいて割り当てる分配処理により、前記処理対象領域に含まれる各画素の出力値を決定することを特徴とする画像処理装置。
【請求項２】
前記出力値決定手段は、さらに、
前記目標値が所定値未満、かつ前記処理対象領域に含まれる画素間において最大の画素値の差が所定値以上である場合、量子化処理により前記処理対象領域に含まれる各画素の出力値を決定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記出力値決定手段は、
前記目標値が所定値未満、かつ、前記画素群の全ての画素値が第一の区間と第二の区間のいずれか一方に入り、且つ、少なくとも一つ以上ずつ入る場合は、量子化処理により、前記処理対象領域に含まれる画素の出力値を決定することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記出力値決定手段は、
前記目標値が所定値未満、かつ、前記処理対象領域に含まれる画素のうち白画素を除く全ての画素の量子化処理による結果が所定の量子化結果以上である場合は、量子化処理により前記処理対象領域に含まれる画素の出力値を決定することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記第一の区間は、最小値を含み、半値よりも小さな値の区間であることを特徴とする請求項３に記載の画像処理装置。
【請求項６】
前記第二の区間は最大値を含み、半値よりも大きな値の区間であることを特徴とする請求項３または５に記載の画像処理装置。
【請求項７】
前記所定値は、前記目標値の最大値の半分以下であることを特徴とする請求項１に記載の画像処理装置。
【請求項８】
前記分配順は、処理対象領域に含まれる各画素について、画素の画素値と画素に対応する閾値に関連する情報とに基づいて決定された順であることを特徴とする請求項１乃至７のいずれか一項に記載の画像処理装置。
【請求項９】
コンピュータを請求項１乃至８の何れか一項に記載された画像処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項１０】
入力画像データをハーフトーン画像に変換する画像処理方法であって、
前記入力画像データにおける処理対象領域について、前記処理対象領域に含まれる画素群の画素値に基づいて、前記処理対象領域の目標値を算出し、
前記目標値に応じて、画素毎に量子化処理により決定される、前記処理対象領域に含まれる各画素の出力値か、
前記目標値が所定値以上の処理対象領域については、前記目標値に近づくように前記目標値を前記処理対象領域に含まれる各画素に分配順に基づいて割り当てる分配処理により決定される、前記処理対象領域に含まれる各画素の出力値を決定することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル画像データに対して閾値マトリクスを用いてディザ処理する画像処理技術に関する。
【背景技術】
【０００２】
デジタル画像データは、デジタル画像データを構成する各画素が、１色当り２５６階調（８ビット）や６５５３６階調（１６ビット）の多階調で表現されるものが一般的である。これらのデジタル画像データをプリンタで印刷可能な階調数に変換するために、デジタル画像データにハーフトーン処理を施し、デジタル画像データよりも少ない階調数のハーフトーン画像データを生成する。
【０００３】
ハーフトーン処理の一種に、ディザ処理と呼ばれるものがある。このディザ処理は、値の異なる複数の閾値が配置された閾値マトリクスを用いる。画像データ上に閾値マトリクスを周期的に並べて、画像データにおける各画素に閾値が対応すると考える。ディザ処理は、画像データにおける所定の領域（以降、セルと呼ぶ）毎に、画素の画素値と対応する閾値とを比較して、画素の画素値を量子化する処理である。ディザ処理は、処理が単純であるため、専用回路によるハードウェア処理やＣＰＵによるソフトウェア処理として、多くのプリンタやプリンタを制御するプリンタドライバに実装されている。ディザ処理は、画素単位では階調数を低減させつつも、画素位置によって異なる閾値を用いた閾値マトリクスにより量子化を行うことで、セル単位で入力画像データの階調数を疑似的に表現することが可能である。
【０００４】
また、ディザ処理に使われる閾値マトリクスには、平坦な画像データを入力した場合に、同じ量子化結果が均等に分散して出現するようなＦＭ系閾値マトリクスと、同じ量子化結果がある点に集中して出現するようなＡＭ系閾値マトリクスがある。いずれの閾値マトリクスにおいても、平坦な画像データが入力されたときに理想的な量子化結果となるように閾値の配置が予め決められていることが一般的である。しかしながら、平坦ではない画像データが入力画像データであった場合、量子化の結果、所望のハーフトーン画像データとならないことがある。これは、入力画像データの画素値のパターンと閾値マトリクスの特性の干渉によって生じる。特に、入力画像データが文字や線画を表す画像データである場合、線の消失や途切れ等の画質弊害がハーフトーン画像に現れてしまうことがある。
【０００５】
そこで特許文献１は、セル内の各画素値の平均値に応じた理想出力合計値を生成し、この理想出力合計値に達するまでセル内の重心から出力階調値の生成を繰り返す方法を開示している。
【０００６】
また特許文献２は、画像データにおけるブロックにおいて、黒画素または白画素は画素毎に各画素値を二値化し、それ以外の画素についてはブロック毎の平均画素値に対してディザ処理する方法を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１９４９０４号公報
【特許文献２】特開平３−１５９３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示された方法によれば、セル単位の平均値から理想出力合計値を算出しているため、セルサイズが大きくなるに従って、平均値を取得するための演算コストが増大してしまう。また、理想出力合計値に達するまでセル内の重心から出力値を生成するため、ぼけたハーフトーン画像データになり、セル内に細線や孤立点が再現されないことがある。
【０００９】
また特許文献２に開示された方法によれば、ブロック内の画素値の平均値をディザ処理した結果に対して、白画素及び黒画素の二値化結果が上書きされるため、結果としてブロック内の平均濃度は変動してしまう場合がある。
【００１０】
そこで本発明は、入力画像データをより高品位なハーフトーン画像データに変換することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため本発明に係る画像処理装置は、前記入力画像データにおける処理対象領域について、前記処理対象領域に含まれる画素群の画素値に基づいて、前記処理対象領域の目標値を算出する目標値算出手段と、前記処理対象領域に含まれる各画素の出力値を決定する出力値決定手段を有し、前記出力値決定手段は、前記目標値に応じて、画素毎に量子化処理により前記処理対象領域に含まれる各画素の出力値を決定するか、前記目標値が所定値以上の処理対象領域については、前記目標値に近づくように前記目標値を前記処理対象領域に含まれる各画素に分配順に基づいて割り当てる分配処理により、前記処理対象領域に含まれる各画素の出力値を決定することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、入力画像データをより高品位なハーフトーン画像データに変換することができる。
【図面の簡単な説明】
【００１３】
【図１】画像処理装置の構成例を示すブロック図
【図２】画像処理部の構成例を示すブロック図
【図３】画像処理部の動作例を示す処理フローチャート
【図４】入力画像と画素群を説明する図
【図５】画素群の出力値決定処理を説明する図
【図６】出力目標値算出方法を説明する図
【図７】量子化処理を説明する図
【図８】出力目標値分配順を示す図
【図９】画像処理部の動作例を示す処理フローチャート
【図１０】入力画像と画素群を説明する図
【図１１】画素群の出力値決定方法を説明する図
【図１２】閾値マトリクスを示す図
【図１３】画素値の所定区間を示す図
【図１４】画像処理部の動作例を示す処理フローチャート
【図１５】閾値群を示す図
【図１６】画素群の出力値決定処理を説明する図
【図１７】画素毎量子化結果の所定区間を示す図
【図１８】出力目標値分配順を説明する図
【発明を実施するための形態】
【００１４】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【００１５】
＜第１実施形態＞
第１実施形態に適用可能な画像処理装置及び画像処理方法として、０〜２５５の画素値からなる２５６階調の入力画像データを、０〜３の出力値からなる４階調のハーフトーン画像データに変換する画像処理について説明する。
【００１６】
（画像処理装置の構成）
図１は、本実施形態に適用可能な画像処理装置の構成例を示すブロック図である。画像処理装置は、ＣＰＵ１００、ＲＡＭ１０１、ＲＯＭ１０２、操作部１０３、表示部１０４、外部記憶装置１０５、画像処理部１０６、Ｉ／Ｆ（インターフェース）部１０７、バス１０８を備える。
【００１７】
ＣＰＵ１００は、ＲＡＭ１０１やＲＯＭ１０２に格納されているコンピュータプログラムやデータを用いて、画像処理装置全体の動作制御を行う。
【００１８】
ＲＡＭ１０１は、外部記憶装置１０５からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ部１０７を介して外部から受信したデータを一時的に記憶するための記憶領域を有する。また、ＣＰＵ１００が各種の処理を実行する際に用いる記憶領域や画像処理部１０６が画像処理を実施する際に用いる記憶領域を有する。すなわち、ＲＡＭ１０１は、各種の記憶領域を適宜提供することができる。
【００１９】
ＲＯＭ１０２は、本装置の設定データやブートプログラムなどが格納されている。
【００２０】
操作部１０３は、キーボードやマウスなどにより構成されており、本装置の操作者が操作することで各種の指示をＣＰＵ１００に対して入力することができる。
【００２１】
表示部１０４は、ＣＲＴや液晶画面などにより構成されており、操作部１０３の操作方法の説明やＣＰＵ１００による処理結果を画像や文字などで表示することができる。なお表示部１０４は、マルチタッチディスプレイ等ユーザが操作できる操作部１０３の一部として機能してもよい。
【００２２】
外部記憶装置１０５は、ハードディスクドライブに代表される大容量情報記憶装置である。外部記憶装置１０５には、ＯＳ（オペレーティングシステム）やＣＰＵ１００に処理を実行させるためのコンピュータプログラムやデータなどが保存されている。また、各部の処理によって生成される一時的なデータ（入出力される画像データや画像処理部１０６で用いられる設定値など）を保存することもできる。外部記憶装置１０５に保存されているコンピュータプログラムやデータは、ＣＰＵ１００による制御に従って、適宜ＲＡＭ１０１にロードされ、ＣＰＵ１００による処理対象となる。
【００２３】
画像処理部１０６は、コンピュータプログラムを実行可能なプロセッサや専用の画像処理回路として実現され、本実施形態の画像処理方法を実施する。例えば、ＣＰＵ１００から画像処理を実行する指示を受け付けると、外部記憶装置１０５に格納された２５６階調の入力画像データに対して処理を実行し、４階調の出力画像データを出力する。また、画像処理の際には、ＲＡＭ１０１の記憶領域を利用しながら処理を実施する。
【００２４】
Ｉ／Ｆ部１０７は、外部機器やインターネットに本装置を接続するためのインターフェースとして機能するものである。例えば、２５６階調の入力画像データをこのＩ／Ｆ部１０７を介して本装置に入力しても良いし、本装置の最終的な出力である４階調の出力画像データをこのＩ／Ｆ部１０７を介して外部に対して送信しても良い。
【００２５】
上記の各部はいずれも、バス１０８に接続されている。
【００２６】
（画像処理部１０６の構成）
次に、画像処理部１０６の詳細な構成例を図２に示すブロック図を用いて説明する。画像処理部１０６を専用の画像処理回路として実現する場合には、図２に示した構成要素を回路化すればよく、プロセッサで実行可能なコンピュータプログラムとして実現する場合には、図３に示した処理フローチャートに従って、逐次ステップ処理すればよい。
【００２７】
画像処理部１０６は、画素群取得部２００、出力目標値算出部２０１、出力値決定部２０２を有する。画素群取得部２００は、ＲＡＭ１０１や外部記憶装置１０５に格納された入力画像データからディザ処理を実施する単位領域に合わせて、処理対象領域に含まれる画素群の画素値を取得する。
【００２８】
出力目標値算出部２０１は、画素群取得部２００が取得した画素群の各画素値に基づいて、処理対象領域において目標とする各画素の出力値の合計を出力目標値として算出する。
【００２９】
出力値決定部２０２は、画素群取得部２００が取得した画素群の各画素値や、出力目標値算出部２０１で算出した出力目標に基づいて、処理対象領域に含まれる各画素の出力値を決定する。
【００３０】
（画像処理部１０６の動作説明）
図３は画像処理部１０６における動作のフローチャートを示す。
【００３１】
画像処理をスタートすると、ステップＳ３００において画素群取得部２００は、ＲＡＭ１０１や外部記憶装置１０５から処理対象とする単位領域（以降、処理対象領域）に含まれる画素群の画素値を取得する。本実施形態では、図４に、入力画像データ４００を示す。本実施形態では、領域４０１で示すような形状を単位領域とする。入力画像データ４００は、ＲＡＭ１０１や外部記憶装置１０５にラスタ走査順で格納されていることが一般的である。そこで本実施形態では、所望のアドレスに格納されている画素値をランダムアクセスすることにより、領域４０１の画素群の画素値を取得する。任意の領域の画素値を取得する方法として、遅延バッファを確保した上で、画像データをラスタ走査順に取得し、画素群の画素値が全て揃った時点で出力するという方法でもよい。画素群の画素値を取得すると、次のステップに進む。
【００３２】
ステップＳ３０１において出力目標値算出部２０１は、ステップＳ３００で取得した処理対象領域における画素群の画素値に基づいて、処理対象領域に対応する出力目標値を算出する。本実施形態における出力目標値の算出方法を、図を用いて具体的に説明する。本実施形態では、図５に示すステップＳ３００で取得された画素群５００及び画素群５０１に対して各画素の画素値の総和を算出し、総和に基づいて出力目標値を算出する。
【００３３】
本実施形態では、得られるハーフトーン画像データの画素当りの階調数を４階調としている。画素群単位で擬似的に表現できる階調数は、全画素が最小階調値を表す画素値である状態を１階調とし、その状態から画素当り３階調（４階調−１階調）ずつ階調の表現が可能である。従って、画素群が８画素で構成される場合、ハーフトーン画像データにおいて画素群が表現可能な階調数は、２５階調（１階調＋（４階調−１階調）×８画素）となる。一方入力画像データにおける階調数は、２５６である。画素群が８画素を含む場合、画素群の画素値の総和は、０から２０４０（２５５×８画素）が取り得る範囲となる。入力画像データを構成する画素群の画素値の総和を、ハーフトーン画像データにおいて画素群当り表現可能な階調数に割り当てると、図６に示すような対応関係となる。図６に示すテーブルに基づいて、画素群の画素値の総和を、出力目標値に変換する。この変換は、画素群に含まれる画素数と、入力画像データや出力画像データの階調数とによって決められる。図６に示すテーブルではなく、（（画素群の総和）×（（画素群で表現可能な階調数）−１））／（画素群の総和の最大値）という変換式でも、出力目標値は算出可能である。なお、この式における小数点以下は、四捨五入するものとする。画素群５００の場合は、画素値の総和が４３４であるので、出力目標値として５を得る。画素群５０１の場合は、画素値の総和が２２８であるので、出力目標値として３を得る。出力目標値を算出後、次のステップに進む。
【００３４】
ステップＳ３０２において、ステップＳ３０１で算出した出力目標値が所定値未満であるかという条件判定に基づいて分岐する。出力目標値が所定値未満の場合にはステップＳ３０３に進み、出力階調値が所定値以上の場合にはステップＳ３０５に進む。本実施形態では、所定値を４とする。画素群５００の場合は出力目標値が５であるためステップＳ３０５の処理ステップに進む。画素群５０１の場合は出力目標値が３であるためステップＳ３０３の処理ステップに進む。
【００３５】
ステップＳ３０３において、画素群における画素値の最大値と最小値の差（以降、最大階調差と呼ぶ）が所定値以上になるかという条件判定に基づいて分岐する。本実施形態では、画素群における最大階調差による所定値を１２８とする。画素群５０１の場合は最大階調差が１３０であるため、ステップＳ３０４に進む。もし、最大階調差が１２８未満であればステップＳ３０５に分岐する。
【００３６】
ステップＳ３０４において出力値決定部２０２は、出力目標値が所定値未満と判定された画素群に対して、画素毎量子化処理により各画素の出力値を決定する。画素毎量子化処理は、画素単位に量子化する処理である。本実施形態の場合、入力画像データの階調数が２５６階調であるのに対して、出力画像データにおける画素単位の階調数は４階調であるので、２５６階調を４値化する。図７に、画素毎量子化による階調数変換を示す。画素群５０１では、画素毎量子化処理によって出力結果５０３が得られる。画素群における各画素の出力値が決定されると、次のステップに進む。
【００３７】
ステップＳ３０５において出力値決定部２０２は、出力目標値が所定値以上と判定された画素群に対して、出力目標値に近づくように出力値を各画素に分配することにより、処理対象領域における各画素の出力値を決定する。ここでは、図８に示すような分配順が予め設定されている。出力値決定部２０２は、分配順の小さい画素から順に出力値を大きくし、最大値に到達すると次の分配順の画素の出力値を大きくするという動作を、出力目標値に達するまで繰り返す。本実施形態の場合、画素群５００の出力目標値５であり、画素毎に出力値は０〜３の値をとることができる。分配順１の画素の出力値を最大値３に決定し、分配順２の画素の出力を２に決定した時点で出力目標値５に達する。分配順３以降の画素については、出力値０が割り振られ、出力結果５０２が得られる。なお、このように処理対象領域における各画素の出力値を、目標値と分配順に従って決定する方法を分配処理とよぶ。画素群の出力値が決定されると次のステップに進む。
【００３８】
尚、ステップＳ３０１は出力目標値算出部２０１にて、ステップＳ３０２、ステップＳ３０３、ステップＳ３０４、及びステップＳ３０５は、画像処理部１０６の出力値決定部２０２にて実施される。
【００３９】
ステップＳ３０６において、全ての画素について処理が終了したかどうかを判定し、終了していない場合には、上記の処理を繰り返す。本実施形態における画素群の場合、入力画像データ４００の端部と画素群の境界は揃わない。ただし、入力画像データ４００が存在しない領域について、見せかけの画素（例えば、画素値０の画素）があると考えて同様の処理をすることにより、図３に示すフローチャートを適用することが可能である。
【００４０】
（原理説明）
上記では、出力目標値が所定値未満か否かの条件判定に従って、画素群の出力値の決定方法を画素毎量子化処理と分配処理とを切り替える例を説明した。
【００４１】
画素毎量子化処理によって出力値が決定される画素群は、画素単位の階調数低減を行うために、変換誤差が画素単位に累積されてしまう。しかしながら、画素単位に出力階調値を独立に決められるため、入力画像中の孤立点や細線などの形状を再現しやすい。一方出力目標値を分配する分配処理では、画素群単位に階調数を変換するために、変換誤差が上記の処理に比べて少ない。従って、画素群が大きくなるほど画像データ全体における変換誤差の累積は少なくなっていき、入力画像データの階調を適切に表現できていると言える。ただし、画素群で予め設定された分配順によって出力値が決められてしまうため、入力画像データが表す特徴的な形状を適切に再現できない可能性がある。
【００４２】
本実施形態では、画素群が表す濃度が全体的に薄く、画素間の階調差が大きい領域については量子化処理を選択し、画素群が表す濃度が中間程度から濃い、あるいは、画素間の階調差が小さい領域には出力目標値分配処理を選択する。画素群の濃度が全体的に薄く、最大階調差が所定値以上である領域は、画素群の中に濃度が濃い画素が存在しても少数であり、その他大多数の画素は薄い画素であると言える。このような領域では、コントラストの高い領域であると考えられ、人間の視覚特性では階調性よりも解像性が重視される傾向が強まる領域である。従って、入力階調を適切に表現可能な出力目標値分配処理よりも、画素毎量子化により画像中の特徴的な形状を再現することで、良好なハーフトーン画像を得ることが可能である。仮に、処理対象領域が低濃度かつあまりコントラストのない領域であった場合、画素毎量子化によって出力値を決定しても、そもそもハーフトーン画像データにおける領域内のドット数が少ないため、画素毎量子化による劣化は目立ちにくい。
【００４３】
また、文字や線画の場合、画素群の濃度が薄い領域にはエッジ部や孤立点が存在する可能性が高いが、この部分の形状を忠実に再現することで、文字の読みやすさや線画の印象を良化させることができる。一方、上記に記載した効果を最大限に出すためには、出力目標値と比較する所定値は出力目標値の最大値の半分以下の値を設定する方が好ましい。また、画素群を画素毎量子化により出力値を決定する条件として、画素群内の最大階調差や、画像領域や画素群に付随する属性情報が文字や線画の場合であるという条件を加えることで、より精度の高い判定が可能となる。
【００４４】
以上の処理により、２５６階調の入力画像データを４階調のハーフトーン画像データに変換する際に、所定の処理対象領域ごとに、画素毎量子化または出力目標値に応じた出力値決定処理を行う。その結果視覚上、適切に入力階調データを再現しつつ、孤立点や細線などの形状の良好な表現をしたハーフトーン画像データを得ることが可能となる。
【００４５】
尚、本実施形態では、入力画像データの階調を２５６階調、出力されるハーフトーン画像データの階調を４階調とした例を示したが、入力画像の階調数及びハーフトーン画像の階調数はこれに限定されるものではない。入力画像がＮ（Ｎ：自然数）階調の画像であり、出力されるハーフトーン画像がＭ（Ｍ：自然数、Ｎ＞Ｍ）階調の画像であれば、本発明を適用可能である。
【００４６】
また、本実施形態で使用した出力目標値の分配順は、画像全体で固定である必要はなく、処理対象領域毎に変更しても良い。更には、予め分配順を設定せずに、画素群の画素値の大きさに従って分配順を設定するようにしても良い。
【００４７】
＜第２実施形態＞
第２実施形態では、画素群の出力目標値と画素群における各画素の画素値とに応じて、二値化処理と出力目標値分配処理を切り替えて画素群における各画素の出力値を決定する場合を例に説明する。また、本実施形態は２５６階調の入力画像データを２値のハーフトーン画像データに変換する場合を例に説明する。
【００４８】
第２実施形態に適用する画像処理装置の構成は、図１に示す第１実施形態と同一の構成で実現可能であり、その説明を省略する。また、画像処理部１０６の構成例についても、図２に示すブロック図と同一の構成で実現可能である。以下では、第１実施形態の動作と差異のある部分について説明する。
【００４９】
（画像処理部の動作説明）
本実施形態における画像処理部１０６の動作は、図９に示す処理フローチャートを用いて説明する。尚、図３に示す第１実施形態の処理フローチャートと同符号の処理ステップは、差異がある場合には説明するが、説明しない場合には同一の処理内容であるため説明を省略する。
【００５０】
画像処理をスタートすると、ステップＳ３００において画素群取得部２００は、処理対象領域の画素群の画素値を取得する。本実施形態では、図１０に太枠で示すような４画素×４画素の領域を単位領域とする。図１１に示す画素群１１００及び１１０１は、入力画像データを構成する単位領域の一例とする。
【００５１】
ステップＳ３０１において出力目標値算出部２０１は、ステップＳ３００において取得した処理対象領域の画素群の画素値に基づいて出力目標値を算出する。出力目標値算出部２０１はまず、画素群の画素値を平均し、各画素の画素値を平均値に置換する。画素群１１００および画素群１１０１について、画素群の画素値を平均し、平均値によって画素値を置換した平均結果１１０２平均結果１１０３を得る。図１２にディザ処理に用いる閾値マトリクスの一例を示す。画素群１１００および１１０１に対応する閾値マトリクスの一部を閾値群１２００とする。なお、ディザ処理に用いる閾値群は、処理対象領域の画素群の位置に対応して決まるが、ここでは説明を省略するため同じ閾値群を使用する。平均結果１１０２及び平均結果１１０３に対して、閾値群１２００を用いたディザ処理を実行し、ディザ処理結果１１０４及び１１０５を得る。これらのディザ処理結果における各画素の総和を、処理対象領域における出力目標値とする。画素群１１００では出力目標値が４となり、画素群１１０１でも出力目標値が４となる。
【００５２】
ステップＳ３０２において、ステップＳ３０１において算出した出力目標値が所定値未満であるか否かという条件判定に基づいて分岐する。本実施形態における所定値を５とすると、画素群１１００及び画素群１１０１は、出力目標値が所定値未満であるため、ステップＳ３０７の処理ステップに進む。出力目標値が所定値以上の場合は、ステップＳ３０５に進む。
【００５３】
ステップＳ３０７において、ステップＳ３００において取得した処理対象領域の画素群の画素値分布に関する条件を満たすか否かに基づいて分岐する。本実施形態における条件判定を、図１３を用いて説明する。このステップの条件判定では、処理対象領域に含まれる全て画素の画素値が２つの所定範囲のいずれかに含まれるにより判定する。即ち全ての画素の画素値が、１６未満である第一の区間か、２４０以上である第二の区間に入っており、且つ、２つの所定範囲に夫々１つ以上ずつ画素値が入っているか否かを基に分岐する。画素群１１００は条件が成立するためステップＳ３０４に進み、画素群１１０１は条件が不成立であるため、ステップＳ３０５に進む。
【００５４】
ステップＳ３０４において、出力目標値が所定値未満、且つ、画素値分布に関する条件を満たした画素群における各画素の出力値を、二値化処理によって決定する。二値化処理は、画素毎量子化の一種で、画素単位に所定の閾値と大小比較して出力値を決定する処理であり、公知技術により様々な閾値決定方法が開示されている。本実施形態では、入力階調値の最大値の半分の値を閾値として、この閾値以上であれば出力値を１、小さければ出力値を０と決定する。画素群１１００では、出力結果１１０６を得る。
【００５５】
ステップＳ３０５において、出力目標値が所定値以上、あるいは、画素値分布に関する条件を満たさないと判定された画素群における各画素の出力値を、出力目標値を分配順に分配することで決定する。本実施形態における出力目標値の分配順は、図１２に示す閾値群において閾値の小さな順に分配する。画素群１１０１では、出力結果１１０７を得る。
【００５６】
ステップＳ３０６において、すべての画素について処理が終了したかどうかを判定し、終了していない場合には、上記の処理を繰り返す。
【００５７】
以上の処理によって、二値化処理と出力目標値分配処理を切り替えることで、閾値マトリクスとの干渉による濃度変動を防止しつつ、孤立点や細線などの形状が重要な画像パターンを良好に表現したハーフトーン画像を得ることができる。二値化処理が選択される条件として、画素値分布による条件を加えることで、画素群を構成する画素値の範囲を限定できる。画素値分布が最小値付近の第一の区間、及び最大値付近の第二の区間の画素のみで構成された画素群であれば、高コントラスト領域ということができる。この領域に対しては、二値化処理を選択することで、階調性よりも解像性が重視される領域に適切な形状再現が可能となる。高コントラスト領域をより精度良く検出するためには、第一の区間は最大階調値の半値より小さいことが好ましく、第二の区間は最大階調値の半値より大きいことが好ましい。
【００５８】
また、上記で示したように、出力目標値を分配する順番はディザ処理で使用した閾値の大きさ順であるため、入力画像データが平坦で出力目標値分配処理を行う場合、通常のディザ処理と同一の結果が得られる。ディザ処理で用いられる閾値マトリクスは、平坦部の画質が最適化されていることが一般的であり、平坦部については、この最適化された出力結果を得ることが可能となる。
【００５９】
＜第３実施形態＞
第３実施形態として、処理対象領域の出力目標値と処理対象領域における各画素の画素毎量子化結果に応じて、画素毎量子化と出力目標値分配処理を切り替えて処理対象領域における各画素の出力値を決定する場合を例に説明する。また、本実施形態は２５６階調の入力画像データを４階調のハーフトーン画像データに変換する場合を例にしている。第３実施形態における画像処理装置の構成は、図１に示す第１実施形態と同一の構成で実現可能であり、その説明を省略する。また、画像処理部１０６の構成例についても、図２に示すブロック図と同一の構成で実現可能である。以下では、第２実施形態の動作と差異のある部分について説明する。
【００６０】
（画像処理部の動作説明）
第３実施形態における画像処理部１０６の動作は、図１４に示す処理フローチャートを用いて説明する。尚、図３及び図９に示す処理フローチャートと同符号の処理ステップは、差異がある場合には説明するが、説明しない場合には同一の処理内容であるため説明を省略する。
【００６１】
ステップＳ３００において、処理対象領域に含まれる画素群の画素値を取得後、ステップＳ３０１において処理対象領域に対応する出力目標値を算出する。本実施形態では、第２実施形態と同様に図１０に示すような４画素×４画素のブロックを単位領域とし、図１１に示す画素群１１０１に対して処理を施す例を説明する。処理対象領域の出力目標値は、画素群１１０１に対して図１５に示す閾値群を用いてディザ処理した結果の総和とする。図１５に示す閾値群は、画素位置に対応してインデックス番号が決められており、１つのインデックス番号に対して３つの閾値が規定され、２５６階調の画素値を４値の階調値に変換する。画素群１１０１に対するディザ処理結果は、図１６に示すディザ処理結果１６００となるので、この画素群１１０１（処理対象領域）の出力目標値は１５となる。
【００６２】
ステップＳ３０２において、ステップＳ３０１で算出した出力目標値が所定値未満であるかという条件に基づいて分岐する。本実施形態における所定値を１５とする。画素群１１０１の出力目標値１５は、所定値以上であるためステップＳ３０５に進む。仮に、画素群の出力目標値が所定値未満の場合はステップＳ３０４に進む。
【００６３】
ステップＳ３０４において、処理対象領域の画素群の各画素値を２５６階調から４階調へ、図７に示す画素毎量子化をし、ステップＳ３０８に進む。
【００６４】
ステップＳ３０８において、ステップＳ３０４で処理した処理対象領域における画素毎量子化結果に基づいて、分岐する。本実施形態の分岐条件として、画素群に含まれる画素のうち白画素を除く全ての画素において、画素毎量子化結果が所定区間に入るか否かを判定する。本実施形態で白画素となるのは最小画素値０のことである。処理対象量において０以外の画素値を持つ画素が、図１７に示すように所定区間内に入れば、処理対象領域における画素群の各出力値を画素毎量子化結果と決定し、ステップＳ３０６に進む。所定区間は、画素毎量子化結果の最大値の半値よりも大きいことが望ましく、本実施形態では最大値３を所定区間としている。白画素以外の画素毎量子化結果が一画素でも所定区間内に入らなければステップＳ３０５に分岐し、画素群の出力値を出力目標値分配処理により決定する。尚、画素毎量子化結果が０となる画素について白画素と判定することで、簡易的に白画素を検出することも可能である。
【００６５】
ステップＳ３０５において、処理対象領域に含まれる画素群の各画素値を出力目標値に近づくように決定する。本実施形態における出力目標値の分配順は、図１５に示すインデックス番号と画素値によって算出する。画素群の画素毎に「画素値−インデックス番号×１６」を算出した結果を図１８における算出結果１８００に示す。この値が大きい順に分配順１８０１を得る。インデックス番号を１６倍しているのは、画素値の範囲に合せるためであり、画素値とインデックス番号の分配順に対する影響度を同一としている。出力目標値の分配順を、インデックス番号だけでなく、画素値の大きさを関連させることで、画素群の分配順を入力画像データの特徴に追従するように決めることができ、解像性を高めることができる。また、インデックス番号と画素値の影響度は、画像の特徴量等によって変化させても良い。分配の方法は、分配順が１番の画素から出力値を１ずつ分配していく。画素群の画素全てに１つずつ出力値を分配した後に、再び分配順が１番の画素に出力値を分配していく。画素群１１０１に出力目標値を分配したものを図１６に出力結果１６０１として示す。
【００６６】
ステップＳ３０６において、すべての画素について処理が終了したかどうかを判定し、終了していない場合には、上記の処理を繰り返す。
【００６７】
以上の処理によって、閾値マトリクスとの干渉による濃度変動を防止しつつ、孤立点や細線などの形状が重要な画像パターンを良好に表現可能なハーフトーン画像を得ることができる。また、画素群が高コントラスト領域の場合には、画素毎量子化により出力値を決定するが、この判定に画素毎量子化結果を使用することで、判定回路は画素値よりも少ないビット数の回路構成で実現可能であり、回路規模を削減することができる。条件判定時に算出した画素毎量子化結果は、分岐結果しだいで、そのまま出力値として良い。
【００６８】
＜その他の実施形態＞
前述の実施形態では、ハーフトーン画像データが表す階調値は濃度表現である場合を例に説明した。これに限らず、ハーフトーン画像データがディスプレイ等の出力装置によって出力される輝度を表現するものであってもよい。ハーフトーン画像データが輝度表現である場合は、例えば第１実施形態のステップＳ３０２において出力目標値を一旦濃度に変換した値と所定値を比較し、所定値未満の場合はステップＳ３０３に進み、所定値以上の場合はステップＳ３０５に進む。本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータのける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６９】
２００  画素群取得部
２０１  出力目標値算出部
２０２  出力値決定部
【図１】
0006639076.tif 000002
【図２】
0006639076.tif 000003
【図３】
0006639076.tif 000004
【図４】
0006639076.tif 000005
【図５】
0006639076.tif 000006
【図６】
0006639076.tif 000007
【図７】
0006639076.tif 000008
【図８】
0006639076.tif 000009
【図９】
0006639076.tif 000010
【図１０】
0006639076.tif 000011
【図１１】
0006639076.tif 000012
【図１２】
0006639076.tif 000013
【図１３】
0006639076.tif 000014
【図１４】
0006639076.tif 000015
【図１５】
0006639076.tif 000016
【図１６】
0006639076.tif 000017
【図１７】
0006639076.tif 000018
【図１８】
0006639076.tif 000019