(57)【特許請求の範囲】
【請求項１】
画像データを構成する各画素の画素値を量子化する画像処理装置であって、
画像データにおける所定領域毎に、前記所定領域に含まれる各画素の画素値に基づいて、白画素を検出する検出手段と、
閾値マトリクスを参照して、前記所定領域に含まれる各画素に割り当てられる閾値を取得する取得手段と、
前記所定領域における白画素に割り当てられた閾値のうち、最小の値である第一の閾値を検出する第一の閾値検出手段と、
前記所定領域における白画素以外の画素に割り当てられた閾値のうち最小の値である第二の閾値を検出する第二の閾値検出手段と、
前記第一の閾値と前記第二の閾値とを比較し、比較の結果に応じて、前記第二の閾値を前記第一の閾値に置換する置換手段と、
前記所定領域に含まれる各画素の画素値に基づいて、前記所定領域において目標とする出力値を出力目標値として算出する算出手段と、
前記所定領域における画素について、当該画素の画素値が大きい、または、当該画素に割り当てられた閾値が小さいほど優先して出力値を分配するように優先順を出力する出力手段と、
前記出力目標値に達するまで、前記優先順に従って前記所定領域に含まれる画素に対して出力値を分配する分配手段と、
前記所定領域における各画素の最終出力値を決定する決定手段とを有し、
前記決定手段は、前記所定領域において、前記第二の閾値を割り当てられた画素については、前記第二の閾値または前記第一の閾値を用いて量子化された結果を最終出力値として決定し、前記第二の閾値を割り当てられた画素以外の画素については、前記分配手段による結果を最終出力値として決定することを特徴とする画像処理装置。
【請求項２】
前記置換手段は、前記分配手段による処理の結果に基づいて、前記所定領域に含まれる各画素の閾値に割り当てられる閾値を置換することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記置換手段は、前記所定領域に含まれる各画素のうち、前記第二の閾値が割り当てられた画素には、前記第二の閾値または前記第一の閾値を割り当て、前記出力目標値が第一の所定値未満である場合、前記所定領域に含まれる画素のうち、第二の所定値以上の画素値を有する画素には、閾値０を割り当て、前記出力目標値が第一の所定値以上である場合、前記出力目標値の分の画素に閾値０を割り当て、それ以外の画素には閾値の最大値を割り当てるように置換することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記閾値マトリクスは、ブルーノイズマスクであることを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記置換手段は、前記第二の閾値が前記第一の閾値以上である場合、前記第二の閾値を前記第一の閾値により置換することを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至５の何れか一項に記載された画像処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項７】
画像データを構成する各画素の画素値を量子化する画像処理方法であって、
画像データにおける所定領域毎に、前記所定領域に含まれる各画素の画素値に基づいて、白画素を検出し、
閾値マトリクスを参照して、前記所定領域に含まれる各画素に割り当てられる閾値を取得し、
前記所定領域における白画素に割り当てられた閾値のうち、最小の値である第一の閾値を検出し、
前記所定領域における白画素以外の画素に割り当てられた閾値のうち最小の値である第二の閾値を検出し、
前記第一の閾値と前記第二の閾値とを比較し、比較の結果に応じて、前記第二の閾値を前記第一の閾値に置換し、
前記所定領域に含まれる各画素の画素値に基づいて、前記所定領域において目標とする出力値を出力目標値として算出し、
前記所定領域における画素について、当該画素の画素値が大きい、または、当該画素に割り当てられた閾値が小さいほど優先して出力値を分配するように優先順を出力し、
前記出力目標値に達するまで、前記優先順に従って前記所定領域に含まれる画素に対して出力値を分配し、
前記所定領域における各画素の最終出力値を決定し、
前記決定では、前記所定領域において、前記第二の閾値を割り当てられた画素については、前記第二の閾値または前記第一の閾値を用いて量子化された結果を最終出力値として決定し、前記第二の閾値を割り当てられた画素以外の画素については、前記分配による結果を最終出力値として決定することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを構成する各画素の画素値を量子化するハーフトーン処理技術に関する。
【背景技術】
【０００２】
コンピュータを用いて処理したデジタル画像データを印刷することが広く行われている。しかしながら、デジタルな画像データが表現する階調数に対して、一般に、印刷装置が表現可能な階調数の方が少ない。このため、デジタルな画像データの階調数を印刷装置が表現可能な階調数に変換するハーフトーン処理がなされる。
【０００３】
ハーフトーン処理のひとつとして、画像データを周期的に変動する閾値と比較することによって出力値を決定するスクリーン処理（組織的ディザ法）が知られている。閾値よりも大きい画素値の画素を黒画素にし、閾値よりも小さい画素値の画素を白画素として決定する。このようなスクリーン処理を施すことにより、画像データが表す濃淡を面積階調で表現したハーフトーン画像データを得られる。ハーフトーン画像データでは、再現される階調は単位面積あたりの黒画素の数によって決定される。従って、階調の変化が少ない平坦部においては、ハーフトーン画像データでは均等な間隔で同一形状のドット（網点とも言う）が形成され、良好な画像を得られる。一方、階調が大きく変化する細線の画像などは、細線の濃度や角度によって細線位置にドットが形成されず、細線の途切れや消失が発生してしまうことがある。  そこで特許文献１では、画像データにおける細線を検出し、細線の位置の閾値を変更することで、細線を構成するドットが形成されるように制御する方法が開示されている。また、特許文献２には、検出された細線の位置の閾値を一律に小さくすることで、ドットが形成される確率を高めることを記載している。  
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１５７９９８号公報
【特許文献２】特開平１１−３４５３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
スクリーン処理に用いられる閾値マトリクスは、単位領域ごとに面積階調で濃淡を表現できるように設計されている。しかしながら特許文献１や特許文献２に記載された方法では、細線として検出された位置の閾値を一律に変更するため、細線を含む単位領域では階調性が崩れてしまう。また、入力画像と閾値マトリクスとが干渉することによりモアレが発生するという課題があった。
【０００６】
そこで本発明は、入力画像と閾値マトリクスとの干渉を防止しつつ細線の再現性を向上させ、良好なハーフトーン画像を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明に係る画像処理装置は、画像データを構成する各画素の画素値を量子化する画像処理装置であって、画像データにおける所定領域毎に、前記所定領域に含まれる各画素の画素値に基づいて、白画素を検出する検出手段と、閾値マトリクスを参照して、前記所定領域に含まれる各画素に割り当てられる閾値を取得する取得手段と、前記所定領域における白画素に割り当てられた閾値のうち、最小の値である第一の閾値を検出する第一の閾値検出手段と、前記所定領域における白画素以外の画素に割り当てられた閾値のうち最小の値である第二の閾値を検出する第二の閾値検出手段と、前記第一の閾値と前記第二の閾値とを比較し、比較の結果に応じて、前記第二の閾値を前記第一の閾値に置換する置換手段と、前記所定領域に含まれる各画素の画素値に基づいて、前記所定領域において目標とする出力値を出力目標値として算出する算出手段と、前記所定領域における画素について、当該画素の画素値が大きい、または、当該画素に割り当てられた閾値が小さいほど優先して出力値を分配するように優先順を出力する出力手段と、前記出力目標値に達するまで、前記優先順に従って前記所定領域に含まれる画素に対して出力値を分配する分配手段と、前記所定領域における各画素の最終出力値を決定する決定手段とを有し、前記決定手段は、前記所定領域において、前記第二の閾値を割り当てられた画素については、前記第二の閾値または前記第一の閾値を用いて量子化された結果を最終出力値として決定し、前記第二の閾値を割り当てられた画素以外の画素については、前記分配手段による結果を最終出力値として決定することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、入力画像と閾値マトリクスとの干渉を防止しつつ細線の再現性を向上させ、良好なハーフトーン画像を得ることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】画像処理装置の構成を示すブロック図
【図２】画像処理装置における画像処理の流れを示すフローチャート図
【図３】画像処理装置の構成を示すブロック図
【図４】画像処理装置における画像処理の流れを示すフローチャート図
【図５】画像処理装置における画像処理の流れを示すフローチャート図
【図６】画像処理装置の構成を示すブロック図
【図７】画像処理装置における画像処理の流れを示すフローチャート図
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明を好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【００１１】
＜第１実施形態＞
図１は、本実施形態に適用可能な画像処理装置の詳細を示すブロック図である。第１実施形態における画像処理装置は、入力された画像データを、記録媒体に画像を形成するインクジェット方式の印刷装置が出力可能なハーフトーン画像データに変換する装置である。
【００１２】
画素値／閾値取得部１０２は、処理対象の画像データにおける所定領域に含まれる画素の画素値をデータ蓄積部１０１から取得する。また、データ蓄積部１０１に予め保持された閾値マトリクスのうち、所定領域に対応する位置の閾値それぞれを、データ蓄積部から取得する。なおデータ蓄積部１０１は、ＤＲＡＭ・ＳＲＡＭであり、処理対象の画像データを一時的に保存したり、処理に必要な閾値マトリクスを保持したりしている。本実施形態において処理対象の画像データは、各画素０〜２５５いずれかの画素値を有する８ｂｉｔのデータとする。閾値マトリクスは、値の異なる閾値が所望のドットパターンになるように配置されている。閾値マトリクスは、印刷装置の特性に応じて予め設計されている。本実施形態では、ブルーノイズマスクとして知られる閾値マトリクスを用いるとする。所定領域は、縦４画素×横４画素の領域とする。ブルーノイズマスクでは、分散性の高いドットパターンを出力できるように、０〜２５５の値の閾値が分散して配置されている。したがって一般にブルーノイズマスクでは、４画素×４画素の所定領域に対応する閾値群に、同じ値の閾値が含まれることはない。
【００１３】
白画素検出部１０３は、画素値／閾値取得部１０２により取得した所定領域について、所定領域の各画素の画素値に基づいて白画素の位置を検出する。ここでは画像データにおいて画素値０が白画素であることを示すため、所定領域において画素値が０である画素を検出する。白画素検出部１０３は、各画素について白画素かどうかを示す白画素情報を出力する。なお、白画素検出部１０３の代りに、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）装置やプロセッサ等で生成された属性情報を使用しても良い。
【００１４】
第一閾値検出部１０４は、所定領域における白画素情報に基づいて、所定領域における白画素の画素位置に割り当てられた閾値群のうち、最小の閾値を検出する。第一閾値検出部１０４は、検出した最小閾値を、白画素最小閾値情報として出力する。
第二閾値検出部１０５は、所定領域における白画素情報に基づいて、所定領域における白画素以外の画素位置に割り当てられた閾値群のうち、最小の閾値を検出する。第二閾値検出部１０５は、検出した最小閾値を、白画素以外最小閾値として出力する。
【００１５】
出力目標値算出部１０８は、所定領域に含まれる各画素の画素値に基づいて、所定領域において出力する目標値を算出する。具体的には、所定領域の各画素の画素値を平均して平均画素値を算出する。算出した平均画素値を各画素の画素値に置き換えて、各画素位置に対応する閾値と比較することによりスクリーン処理を行う。平均画素値が閾値以上である画素については１を出力し、平均画素値が閾値未満である画素については０を出力する。出力目標値算出部１０８は、出力結果を合計してスクリーン処理した結果を集計し、前記所定領域内の出力目標値情報として出力する。本実施形態では、画素値を０または１に変換する２値化を例に説明している。画素値０はドットを吐出しないことを示し、画素値１はドットを吐出することを示す。従ってここで算出される出力目標値は、所定領域内に出力すべきドット（黒画素）の数に等しい。
【００１６】
出力分配順算出部１０９は、所定領域の各画素に対して出力値を分配する分配順を算出する。出力分配順算出部１０９はまず、所定領域の各画素について、画素値から対応する閾値を減算し、画素値と閾値とのの差分値を算出する。そして、算出した差分値を所定領域における各画素位置の評価値とし、この評価値をソート処理する。評価値は、画素値が大きい、または対応する閾値が小さいほど大きい値になる。出力分配順算出部１０９は、評価値を大きい値から順になるようにソート処理する。ソート処理した結果が出力分配順になる。出力分配順算出部１０９は、所定領域の出力分配順を出力分配情報として出力する。
【００１７】
閾値置換部１０６は、所定領域に対応する閾値群の一部を、他の値により置換する。
閾値置換部１０６は、所定領域における各画素の画素値、白画素最小閾値情報、白画素以外最小閾値情報、出力目標値情報および出力分配順情報に基づいて、閾値の置換をする。まず、所定領域において、白画素以外最小閾値と、白画素最小閾値と比較し、白画素以外最小閾値の方が大きい値である場合、白画素以外最小閾値を白画素最小閾値の値に置換する。また、白画素以外最小閾値の画素を除く所定領域における画素については、出力目標値と分配順を参照し閾値を所定の閾値に置換する。より具体的には、出力目標値に達するまで、分配順に従って各画素に出力値（本実施形態では１）を分配する。これにより黒画素を配置すべきと決定された画素位置の割り当てられた閾値を、０に置換する。閾値０は、黒画素を配置すべきと決定した画素位置を、後段の量子化部１０７により出力値１とするための閾値である。出力目標値に達すると、残りの出力値を分配しない画素に対して、割り当てられた閾値をドットが形成されない閾値最大値（本実施形態では２５５）に置換する。２５５は、画像データにおいて取り得る画素値の最大値である。ここでは、後段の量子化部１０７により出力値０とするために、取り得る画素値の最大値を閾値に置換する。
【００１８】
量子化部１０７は、所定領域における各画素の画素値と、閾値置換部１０６から出力される対応する閾値とを比較し、各画素の出力値を決定する。画素値が閾値未満の画素は、出力値として０が決定される。画素値が閾値以上である画素は、出力値として１が決定される。
【００１９】
本実施形態では、縦４画素×横４画素からなる所定領域ごとに黒画素数を決定している。所定領域において出力目標値は、画素値の平均と割り当てられた閾値とによって決まる。このとき、所定領域に低濃度の細線がある場合など平均値が小さい場合には、出力目標値が０とみなされ、細線の途切れにつながってしまう場合がある。そこで本実施形態における閾値置換部１０６は、所定領域における白画素以外最小閾値を、よりドットが形成される確率が高い白画素最小閾値に置換する。これにより、仮に出力目標値が０であっても、白画素以外最小閾値として検出された画素については、ドットが形成される確率が高い閾値を維持しているので、低濃度の細線を構成する画素の位置が黒画素として出力されやすくなる。このように本実施形態における画像処理装置は、所定領域における出力結果が出力目標値となるように黒画素を決定する処理だけではなく、所定領域において一部画素については画素値と閾値との比較により黒画素にするかどうかを決定する。これにより、出力目標値が０になってしまう場合であっても、黒画素が出力される確率が高くなり、細線の途切れが発生するのを低減することができる。
【００２０】
なお、図示していないが、第１実施形態における画像処理装置は、上記各部を実現するためのハードウェア構成を備えている。具体的には、アック主プログラムやデータを記憶するためのＨＤＤ（ハードディスクドライブ）や、ＲＯＭ，ＲＡＭ，さらにはプログラムを実行し各部を統括的に制御するＣＰＵなどがある。
【００２１】
図２は、図１に示す画像処理装置における画素値／閾値取得部１０２、白画素検出部１０３、第一閾値検出部１０４、第二閾値検出部１０５、出力目標値算出部１０８、出力分配順算出部１０９、閾値置換部１０６が実行する画像処理のフローチャートである。一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、ＲＯＭ等からＲＡＭ上に読みこんだ後、ＣＰＵによって該プログラムを実行することにより実施される。
【００２２】
ステップＳ２０１においてまず、白画素最小閾値と、白画素以外最小閾値を、閾値の最大値に初期化する。また、所定領域における処理画素位置を示す変数ｉを０に初期化する。ステップＳ２０２において画素値／閾値取得部１０２は、処理対象とする所定領域に含まれる画素のうち、処理対象とする注目画素の画素値を取得する。また、注目画素の画素位置を参照し、閾値マトリクスにおける対応する閾値を取得する。画素値／閾値取得部１０２は、注目画素の画素値および、注目画素に割り当てられた閾値を白画素検出部１０３に出力する。
【００２３】
ステップＳ２０３において白画素検出部１０３は、注目画素が白画素であるかを判定する。注目画素の画素値が０であれば白画素と判定し、ステップＳ２０４に進む。注目画素の画素値が０以外の値であれば白画素ではないと判定し、ステップＳ２０５へ進む。
【００２４】
注目画素が白画素である場合、ステップＳ２０４において第一閾値検出部１０４は、変数である白画素最小閾値が、ステップＳ２０２において取得した注目画素に割り当てられた閾値より大きいかどうかを判定する。注目画素に割り当てられた閾値より白画素最小閾値の方が大きい場合はステップＳ２０６へ進む。それ以外の場合はステップＳ２０８へ進む。ステップＳ２０６において第一閾値検出部１０４は、白画素最小閾値を、ステップＳ２０２において取得した注目画素に割り当てられた閾値の値に更新する。
【００２５】
注目画素が白画素ではない場合、ステップＳ２０５において第二閾値検出部１０５は、変数である白画素以外最小閾値が、ステップＳ２０２において取得した注目画素に割り当てられた閾値より大きいかどうかを判定する。注目画素に割り当てられた閾値よりも白画素以外最小閾値の方が大きい場合はステップＳ２０７へ進む。それ以外の場合はステップＳ２０８へ進む。ステップＳ２０７において第二閾値検出部１０５は、白画素以外最小閾値を、ステップＳ２０２において取得した注目画素に割り当てられた閾値の値に更新する。ステップＳ２０８において、所定領域に含まれる画素全てに対して処理したか判定する。処理が終了していない場合はステップＳ２０２へ、処理が終了している場合はステップＳ２１２へ進む。
【００２６】
ステップＳ２０９において画素値／閾値取得手段１０２は、所定領域に含まれるすべての画素の画素値を取得する。また、所定領域に対応する全ての閾値を取得する。画素値／閾値取得手段１０２は、取得した所定領域における各画素の画素値および割り当てられた閾値を、出力目標値算出部１０８および出力分配順算出部１０９に出力する。ステップＳ２１０において出力目標値算出部１０８は、所定領域における画素の画素値を平均して平均画素値を算出する。算出した平均画素値と、所定領域に対応する閾値群の各閾値を比較する。画素値の方が閾値以上の画素の数を集計し、出力目標値とする。本実施形態では、２値のハーフトーン画像データに変換する。従って縦４画素×横４画素の所定領域の出力目標値は、０〜１６の範囲となる。ここでは出力目標値は、所定領域における画素のうち黒画素にすべき画素の数に相当する。
【００２７】
ステップＳ２１１において出力分配順算出部１０９は、所定領域における各画素について、出力目標値に達する分の出力値を分配する分配順を算出する。まず各画素の画素値と割り当てられた閾値との差分「画素値―閾値」を算出する。算出した差分値を評価値とし、評価値が大きい方から出力を分配するものとする。算出した分配順を配列変数ｒａｎｋ［＊］に格納する。本実施形態では、所定領域内には１６画素含まれるので、出力分配順は１〜１６となる。以上の通り、ステップＳ２０１〜ステップＳ２１１において、所定領域の白画素最小閾値、白画素以外最小閾値、出力目標値、出力分配順が算出される。
【００２８】
ステップＳ２１２において閾値置換部１０６は、所定領域に含まれる画素を所定の順に従って１つ選択し、注目画素とする。注目画素の画素値及び注目画素に割り当てられる閾値を取得する。ステップＳ２１３において閾値置換部１０６は、注目画素に対応する閾値が白画素以外最小閾値と同じであるか否かを判定する。なお前述の通り、所定領域内に同じ閾値は存在しないため、注目画素に対応する閾値が白画素以外最少閾値であるということは、注目画素が白画素ではなく、かつ白画素以外の画素の中でも最小閾値が割り当てられた画素であることを意味する。同じであればステップＳ２１４へ進み、同じでなければステップＳ２１６へ進む。ステップＳ２１３において注目画素が白画素以外最小閾値と同じ値であると判定された場合、ステップＳ２１４において、注目画素の閾値である白画素以外最小閾値と白画素最小閾値とを比較する。つまりここでは、所定領域において白画素に割り当てられた最小閾値と白画素以外に割り当てられた最小閾値との大きさを比較していることになる。注目画素の白画素以外最小閾値の方が大きい場合はステップＳ２１５へ進み、それ以外の場合はステップＳ２１６へ進む。
【００２９】
ステップＳ２１５では、注目画素の閾値を、閾値マトリクスの配置に従って割り当てられた白画素以外最小閾値から所定領域における白画素最小閾値の値に置換する。これにより注目画素に対応する閾値はより小さい値に更新される。ステップＳ２１６において閾値置換部１０６は、所定領域の出力目標値があらかじめ定められた所定値以上かを判定する。出力目標値の方が所定値より大きい場合はステップＳ２１７へ、それ以外の場合はステップＳ２２０へ進む。
【００３０】
ステップＳ２１７において閾値置換部１０６は、注目画素の出力分配順を示す変数配列ｒａｎｋ［ｉ］が出力目標値以下であるかを判定する。これは注目画素に出力目標値が分配されるかどうかを判定している。出力分配順が出力目標値以下の場合、注目画素は、出力値（ドット）を分配される画素であると判定し、ステップＳ２１８へ進む。注目画素の出力分配順が出力目標値より大きい場合は、注目画素は出力値（ドット）を分配されない（白画素として出力される）画素であると判定し、ステップＳ２１９へ進む。例えば、出力目標値が１である場合、注目画素の出力分配順の値が１（分配する優先順位が一番高い）場合は、注目画素に出力値１を分配する。一方、注目画素の出力分配順が２以上である場合には、出力目標値を超えて出力値を分配することはないので、出力値を分配しないようにする。
【００３１】
ステップＳ２１８において閾値置換部１０６は、注目画素に対応する閾値を０に置換する。量子化部１０７は、注目画素の画素値と閾値とを比較し、注目画素の画素値の方が大きければ注目画素の出力値を１として出力する。ステップＳ２１７において注目画素は出力値を分配する画素と判定されているので、注目画素には出力値（ドット）を分配するために、注目画素の閾値を最小の閾値（画素値の取り得る値の最小値）に書き換える。その結果、後続の量子化部１０７により、注目画素には出力値１が分配されることになる。
【００３２】
ステップＳ２１９において閾値置換部１０６は、注目画素に対応する閾値を２５５に置換する。前述の通り、後段の量子化部１０７は、注目画素の画素値と閾値とを比較し、注目画素の画素値が閾値以下であれば注目画素の出力値を０として出力する。ステップＳ２１７において注目画素には出力値を分配しないと判定している。そのため注目画素は出力値が０となるように、注目画素の閾値を最大の閾値（画素値の取り得る値の最大値に書き換える。その結果、後続の量子化部１０７により、注目画素の画素値は出力値０に変換されることになる。
【００３３】
ステップＳ２２０において閾値置換部１０６は、注目画素の画素値があらかじめ定められた所定値以上か否かを判定する。所定値以上の場合はステップＳ２２１へ進み、それ以外の場合はステップＳ２１７へ進む。ステップＳ２２１において閾値置換部１０６は、注目画素にドットが形成されるように注目画素の閾値を０に置換する。ステップＳ２２２において閾値置換部１０６は、注目画素に対応する閾値を、ドットが形成されないように２５５に置換する。
【００３４】
ステップＳ２２３において、所定領域における画素位置を示す変数ｉに１を加算する。ステップＳ２２４において、所定領域内の画素全てに対して処理したかを判定する。処理が終了していない場合はステップＳ２１２へ戻り、未処理の画素に対する処理を続ける。所定領域に含まれる画素全てに対して処理が完了すればステップＳ２２４に進み、未処理の所定領域があるか否かを判定する。未処理の所定領域があれば、ステップＳ２１２に戻り、全ての所定領域に対する処理が完了すれば、画像データに対する閾値置換部１０６による処理までは完了する。
【００３５】
本実施形態による処理について説明する。白画素は画素値が最小値（０）であるため、割り当てられる閾値がいかなる値であっても量子化部１０７による量子化の結果０が出力されることになる。そこで所定領域における非白画素の最小閾値が、白画素の最小閾値よりも小さい場合は、非白画素の最小閾値を白画素の最小閾値により置換する。その結果、閾値を置換された画素はより黒画素が出力されやすくなる。これにより所定領域で低濃度の細線が消失するのを抑制することができる。
【００３６】
なお所定領域に割り当てられた他の閾値を用いて非白画素の閾値を置換しているため、所定領域において黒画素が出力される確率は維持できる。また、所定領域において出力目標値に応じた出力値の分配処理をしている。この時、出力値を分配する優先順位は、各画素の画素値と割り当てられた閾値とに基づいて決めている。画素値が大きいほど、あるいは閾値が小さいほど優先順位は高くなりやすい。その結果画像データの特徴と、閾値マトリクスを設計した際の理想的なドットパターンの両方を考慮して出力値を分配することができる。これにより、画像データと閾値マトリクスとの干渉を防ぎ、モアレの発生を低減することができる。さらに、出力目標値が所定値以下であっても、画素値が所定値以上の画素を黒画素とする処理により所定濃度以上の細線・文字・孤立点パターン等が再現される。
【００３７】
本実施形態では、所定領域における各画素に割り当てられた閾値について、まず白画素以外最小閾値として検出された画素の閾値を決定する。白画素以外最小閾値に対応する画素は、そのまま割り当てられた閾値か白画素最小閾値が閾値となる。次に、出力目標値が所定値以下である場合、画素値が所定値以上の画素の閾値を０に決定する。そのあと、出力目標値に応じて出力値を分配するための閾値を決定する。従って、白画素以外最小閾値を決定する処理、出力目標値が所定値以下で入力画素値が所定値以上の画素を黒画素とする処理を優先した出力結果を得ることが出来る。
【００３８】
＜第２実施形態＞
第１実施形態では、所定領域における出力値の合計が出力目標値となるように分配するように、所定領域における一部の画素に割り当てられた閾値を０または最大閾値に置換した。第２実施形態では、所定領域における出力値の合計値が出力目標値となるように分配する処理については、閾値を設定により出力値を制御する処理を実行しない構成を示す。なお第１実施形態と同様の構成、処理については、同じ符号を付し、その詳細な説明を省略する。図３は、第２実施形態に適用可能な画像処理装置の詳細な構成を示すブロック図である。閾値置換部３０１は、所定領域における注目画素に割り当てられた閾値が、白画素以外最小閾値と同じ値である画素については、白画素最小閾値と白画素以外最小閾値を比較する。白画素最小閾値の方が白画素以外最小閾値よりも小さい（ドットが形成される確率が高い）場合、注目画素の閾値を白画素最小閾値に置換する。さらに、注目画素に対して閾値を置換したことを示す情報を、閾値置換情報として出力する。
【００３９】
量子化部３０２は、画像データを構成する各画素に対して、画素の画素値と対応する閾値とを比較することにより、各画素の画素値を量子化する。ただし、閾値置換部３０１において閾値置換された画素については、画素値／閾値取得部１０２から得られた画素値を、閾値置換部３０１から得られた置換後の閾値で量子化し、量子化値として出力する。出力算出部３０３は、所定領域毎に、出力分配順に従って優先順位が高い方から順に出力値を出力目標値に達するまで分配し、各画素の出力値として出力する。本実施形態では、８ビットの画素値を２値に変換する。出力値０は白画素（ドットを形成しない）を、出力値１は黒画素（ドットを形成する）ことを意味する。従って出力目標値は、所定領域に含まれる画素のうちドット数そのものとなる。例えば、出力目標値が５である場合には、出力分配順において優先度が高い画素から５画素の出力値を１とする。また、出力分配順において優先度が高い方から６画素以降の画素の出力値を０として出力する。
【００４０】
最終出力選択部３０４は、閾値置換部３０１から得られた閾値置換情報を用いて、所定領域毎に各画素について、量子化部３０２から得られた量子化値か、出力算出部３０２から得られた出力値の何れかを選択して、最終出力値として出力する。閾値置換情報が閾値置換されたことを示す画素については、量子化部３０２から得られた量子化値を最終出力値とする。閾値置換情報が閾値置換されなかったことを示す画素については、出力算出部３０３から得られる出力値を、最終出力値とする。第２実施形態では、８ビットの画像データを２値のハーフトーン画像データに変換するため、量子化部３０２から得られた量子化値と出力算出部３０３から得られる出力値は、共に１ビットである。よって、量子化部３０２から得られた量子化値と出力算出部３０３から得られた出力値をＯＲ演算した値を最終出力値とする方法でも良い。
【００４１】
図４は、第２実施形態における画像処理装置が実行する処理のフローチャートである。ステップＳ２０１〜ステップＳ２１２は、第１実施形態と同様の処理であるので説明は省略する。ステップＳ４０１において閾値置換部３０１は、注目画素に割り当てられた閾値が白画素以外最小閾値と同じ値であるか否かを判定する。同じであればステップＳ４０２へ、同じでなければステップＳ４１２へ進む。
【００４２】
注目画素に割り当てられた閾値が白画素最小閾値と同じ値である場合、ステップＳ４０２において閾値置換部３０１は、注目画素に割り当てられた白画素以外最小閾値と白画素最小閾値とを比較する。注目画素の閾値の方が白画素最小閾値より大きい場合はステップＳ４０３へ、それ以外の場合はステップＳ４１２へ進む。ステップＳ４０３において閾値置換部３０１は、注目画素の閾値（白画素以外最小閾値）を、より小さい値である白画素最小閾値に置換する。また閾値置換情報を、閾値置換したことを示す状態にして出力する。ステップＳ４０４において量子化部３０２は、ステップＳ４０３において置換された閾値を用いて注目画素を量子化し、注目画素の量子化値を算出する。注目画素の画素値が置換された閾値以上であれば量子化値は１、それ以外の場合は、量子化値は０とする。
【００４３】
ステップＳ４０５において出力算出部３０３は、出力目標値があらかじめ定められた所定値以上か否かを判定する。出力目標値の方が大きい場合はステップＳ４０６へ、それ以外の場合はステップＳ４０７へ進む。ステップＳ４０６において出力算出部３０３は、注目画素の出力分配順を示す変数配列ｒａｎｋ［ｉ］が出力目標値以下であるか否かを判定する。注目画素の出力分配順が出力目標値以下の場合には、注目画素は出力値（ドット）を分配される画素であると判定し、ステップＳ４０８へ進む。ステップＳ４０８において出力算出部３０３は、注目画素の出力値を１とし、出力値を分配する。注目画素の出力分配順が出力目標値未満である場合は、ステップＳ４０９へ進み、ステップＳ４０９において出力値算出部３０３は注目画素の出力値を０とする。ステップＳ４０７において出力算出部３０３は、注目画素の画素値があらかじめ定められた所定値以上か否かを判定する。注目画素の画素値が所定値以上の場合はステップＳ４１０へ進み、それ以外の場合はステップＳ４０６へ進む。ステップＳ４１０において出力値算出部３０３は、注目画素に出力値に分配するため、出力値として０を与える。ステップＳ４１１において出力算出部３０３は、所定領域内の画素位置を示す変数ｉに１加算する。
【００４４】
ステップＳ４１２において最終出力算出部３０４は、閾値置換情報を参照し、注目画素が予め割り当てられた閾値を置換された画素であるか否かを判定する。また、量子化部３０２から出力される注目画素の量子化値が０かどうかを判定する。注目画素が閾値を置換された画素であり、かつ量子化値が０でない場合、ステップＳ４１３に進み、それ以外の場合はステップＳ４１４に進む。ステップＳ４１３において最終出力選択部３０４は、注目画素の最終出力値をステップＳ４０４において量子化部３０２が算出した量子化値とする。ステップＳ４１４において最終出力選択部３０４は、注目画素の最終出力値を出力算出部３０３が算出したステップＳ４０８、Ｓ４０９、Ｓ４１０のいずれかの出力値とする。
【００４５】
ステップＳ４１５において最終出力選択部３０４は、閾値を置換したか否かを示す情報を、置換していないことを示す状態に初期化する。ステップＳ４１６において画素値／閾値取得部１０２は、所定領域における画素全てに対して処理したかを判定し、処理が終了していない場合はステップＳ２１２へ戻る。以上の処理フローにより、第１実施形態と同様の処理結果を得ることが出来る。
【００４６】
＜第３実施形態＞
前述の実施形態では、所定領域における出力値の合計値が出力目標値となるように出力値を分配しても、最終的な総出力値が出力目標値を超える場合がある。これは所定領域における濃度を保存することよりも、所定領域における画像の形状（線など）を再現することを優先している。一方、出力目標値がある程度の大きさを持つ場合、言い換えると所定領域における濃度が濃い場合には、濃度を保存する（所定領域における総出力値を出力目標値とする）方が、良好な出力結果が得られる。
【００４７】
第３実施形態では、必ず所定領域における総出力値が出力目標値となるように各画素の出力値を決定する方法について説明する。なお、画像処理装置の構成については、第２実施形態で示した図３と同様であるため説明を省略する。図５は、第３実施形態における画像処理装置が実行する処理のフローチャートである。ただし、最終出力選択部３０４は、注目画素の最終出力値を決定するとともに、出力分配順を更新する処理を行う場合がある。この場合、最終出力選択部３０４は、更新した出力分配順を出力算出部３０３に入力することとする。ステップＳ２０１〜Ｓ２１４は、前述の実施形態と同じ処理であるので説明は省略する。また、ステップＳ４０１〜Ｓ４１４は、第２実施形態と同じであるので説明は省略する。
【００４８】
ステップＳ５０１において最終出力選択部３０４は、Ｓ２１１において算出された出力分配順を更新する。注目画素は、閾値が置換され、かつ、量子化値が０でない画素である。つまり所定領域においてドット（黒画素）を１つ分配したことになる。例えば、所定領域の出力目標値が５と算出されたとする。このとき出力分配順の上位５画素に出力値１を分配する。しかしながら、閾値が置換された白画素以外最小閾値の画素が上位５画素以内ではない場合、所定領域における最終出力値の総和が６になってしまう。そこで最終出力選択部３０４は、所定領域における出力分配順を更新する。具体的には、注目画素の出力分配順よりも順位が高い画素の出力分配順を、１つずつ下げる。こうすることで出力目標値が１以上であれば、所定領域における最終出力値の総和は、出力目標値と同じとなる。
【００４９】
ステップＳ５０２において最終出力選択部３０４は、所定領域に含まれる画素全てに対して処理したかを判定する。処理が終了していない場合はステップＳ２１２に戻る。ステップＳ５０３において閾値置換部３０１は、閾値を置換したか否かを示す情報を、未実施を示す状態に初期化する。
【００５０】
ステップＳＳ５０４において画素値／閾値取得部１０２は、所定領域における注目画素の画素値と、注目画素に対応する閾値を取得する。ステップＳ４０５〜Ｓ４１１では、ステップＳ５０１で更新された出力分配順を用いて出力値算出を行う。処理の内容は、第２実施形態と同様である。ステップＳ５０５・Ｓ４１３・Ｓ４１４において、最終出力電卓部３０４は、ステップＳ４０４において算出された量子化値か、ステップＳ４０８・Ｓ４０９・Ｓ４１０のいずれかで算出された出力値のいずれかを、注目画素の最終出力値として選択する。処理の内容は、第２実施形態と同様である。ステップＳ５０６において最終出力算出部３０４は、所定領域に含まれる画素全てに対して処理したかを判定する。
【００５１】
以上の処理によって、所定領域における出力目標値が１以上の場合において、所定領域における総出力値が出力目標値と等しくなる。その結果、所定領域内の白画素以外最小閾値を一部置換することにより、細線の途切れや消失を抑制しつつ、所定領域内の出力値の合計値が出力目標値となり、良好な出力結果を得ることが出来る。
【００５２】
＜第４実施形態＞
第３実施形態では、出力目標値を分配する順番を更新し、所定領域内の出力目標値が１以上の場合において、所定領域内の総出力値が出力目標値と等しくなるようにしている。第４実施形態では、所定領域内において置換された閾値を用いて、所定領域内の出力値の合計値が出力目標値となるように出力値１を分配することで、同様の効果を得る。
【００５３】
図６は、第４実施形態に適用可能な画像処理装置の詳細な構成を示すブロック図である。データ蓄積部１０１、画素値／閾値取得部１０２、白画素検出部１０３、白画素最小閾値算出部１０４、白画素以外最小閾値算出部１０５は、第１実施形態と同じであるので説明は省略する。また、閾値置換部３０１、量子化部３０２、出力算出部３０３、最終出力選択部３０４は、第２形態と同じであるので説明は省略する。
【００５４】
出力目標値算出部６０１は、第１実施形態における出力目標値算出部１０８と処理内容は同じであるが、閾値置換部３０１によって割り当てられた閾値を置換された後の閾値を用いて、所定領域における出力目標値を算出する点が異なる。出力分配順算出部６０２は、第１実施形態における出力目標分配順算出部１０９と処理内容は同じである。閾値置換部３０１によって割り当てられた閾値を置換された後の閾値を用いて、所定領域における各画素の出力分配順を算出する点が異なる。
図７は、第４実施形態における画像処理装置が実行する処理のフローチャートである。ステップＳ２０１〜Ｓ２０８では、所定領域内の白画素の最小閾値と白画素以外の最小閾値を算出しており、第２実施形態と同じであるので説明は省略する。また、ステップＳ２１２も第２実施形態と同じであるが、ステップＳ７０１に進む点が第２実施形態とは異なる。ステップＳ７０１において閾値置換部３０１は、注目画素の閾値が白画素以外最小閾値と同じであるか否かを判定する。同じであればステップＳ７０２へ、同じでなければステップＳ７０４へ進む。
【００５５】
ステップＳ７０２において閾値置換部３０１は、注目画素の閾値（白画素以外最小閾値と同じ値）が白画素最小閾値より大きいか否かを判定する。注目画素の閾値の方が白画素最小閾値よりも大きい場合はステップＳ７０３へ、それ以外の場合はステップＳ７０４へ進む。ステップＳ７０３において閾値置換部３０１は、注目画素の閾値をより値の小さい白画素最小閾値に置換する。ステップＳ７０４において閾値置換部３０１、所定領域における画素全てに対して処理したかを判定する。処理が終了していない場合はステップＳ２１２へ戻り、そうでない場合はステップＳ７０５へ進む。
【００５６】
ステップＳ７０５において出力目標値算出部６０１は、所定領域に含まれる全画素の画素値と、対応する閾値を取得する。ここで出力目標値算出部６０１が取得する閾値は、ステップＳ２１２およびステップＳ７０１〜Ｓ７０４による閾値置換処理が実施された後の閾値となる。ステップＳ７０６において出力目標値算出部６０１は、所定領域における内の出力目標値を算出する。ステップＳ７０５において取得した各画素の画素値を平均して、所定領域の平均画素値を算出する。算出した平均画素値とステップＳ７０５において取得した閾値それぞれを用いてスクリーン処理し、平均画素値以下の閾値の数を集計した値を出力目標値とする。ステップＳ７０７において出力分配順算出部６０２は、所定領域内の総出力値が出力目標値に達するまで出力値１を分配する際の出力分配順を算出する。所定領域内の各画素において「画素値―閾値」を算出する。算出した差分値を評価値として、評価値が大きい方から出力を分配するものとする。算出した分配順を配列変数ｒａｎｋ［＊］に格納する。本実施形態では、出力分配順は１〜１６となる。
【００５７】
ステップＳ７０８において画素値／閾値取得部１０２は、所定領域における注目画素の画素値及び所定領域に対応する閾値を取得する。ステップＳ７０９において量子化部３０２は、注目画素の画素値を対応する閾値を用いて量子化し、注目画素の量子化値を算出する。画素値が対応する閾値以上であれば量子化値は１、それ以外の量子化値は０とする。ここで用いられる閾値は、閾値置換部３０１によって閾値を置換された後の閾値である。
【００５８】
ステップＳ７１０において出力算出部３０３は、所定領域の出力目標値があらかじめ定められた所定値以上か否かを判定する。出力目標値の方が大きい場合はステップＳ７１１へ、それ以外の場合はステップＳ７１２へ進む。ステップＳ７１１において出力算出部３０３は、注目画素の出力分配順を示す変数配列ｒａｎｋ［ｉ］が、出力目標値以下であるか否かを判定する。出力目標値以下の場合には、注目画素は出力値１（ドット）を分配する画素であると判定し、ステップＳ７１３へ進む。ステップＳ７１３において注目画素に出力値１を分配する。それ以外の場合はステップＳ７１４へ進み、注目画素に出力値を分配せず、出力値０とする。
【００５９】
ステップＳ７１２において出力算出部３０３は、注目画素の画素値があらかじめ定められた所定値以上か否かを判定する。所定値以上の場合はステップＳ７１５へ進み、それ以外の場合はステップＳ７１１へ進み、ステップＳ７１５にて出力値に分配する。ステップＳ７１６において最終出力選択部３０４は、注目画素について、ステップＳ７０９において量子化値が０でない場合はステップＳ７１７に進み、それ以外はステップＳ７１８に進む。ステップＳ７１７においては、注目画素の最終出力値をステップＳ７０９で算出した量子化値とする。ステップＳ７１８では、注目画素の最終出力値をＳ７１３、Ｓ７１４、Ｓ７１５のいずれかで算出した出力値とする。ステップＳ７１９において最終出力選択部３０４は、所定領域内の画素位置を示す変数ｉに１加算する。ステップＳ７２０では、所定領域内の画素全てに対して処理したかを判定する。処理が終了していない場合はＳ７０８へ戻り、そうでない場合は処理を終了する。
【００６０】
以上のように、所定領域内の白画素以外最小閾値を必要に応じて白画素最小閾値に置換した後、所定領域内の出力値の合計が出力目標値となるように出力値を分配する処理を行う。これにより第３実施形態と同様の効果を得る。
【００６１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６２】
１０３  白画素検出部
１０４  第一閾値検出部
１０５  第二閾値検出部
１０６  閾値置換部
１０７  量子化部
１０８  出力目標値算出部
１０９  出力分配順算出部
【図１】
0006632253.tif 000002
【図２】
0006632253.tif 000003
【図３】
0006632253.tif 000004
【図４】
0006632253.tif 000005
【図５】
0006632253.tif 000006
【図６】
0006632253.tif 000007
【図７】
0006632253.tif 000008