(57)【特許請求の範囲】
【請求項１】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理装置において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定する判定手段と、
前記所定領域に含まれる全画素に対応する閾値のうち、最も小さい閾値を抽出する第一の抽出手段と、
前記所定領域における非白画素に対応する閾値のうち、最も小さい閾値を抽出する第二の抽出手段と、
前記第一の抽出手段により抽出された閾値が、前記第二の抽出手段により抽出された閾値よりも小さい場合、前記第一の抽出手段により抽出された閾値に基づいて、前記第二の抽出手段により抽出された閾値を書き換える書換手段と
を備えることを特徴とする画像処理装置。
【請求項２】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理装置において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定する判定手段と、
前記所定領域に含まれる白画素に対応する閾値のうち、最も小さい閾値を抽出する第一の抽出手段と、
前記所定領域における非白画素に対応する閾値のうち、最も小さい閾値を抽出する第二の抽出手段と、
前記第一の抽出手段により抽出された閾値が、前記第二の抽出手段により抽出された閾値よりも小さい場合、前記第一の抽出手段により抽出された閾値に基づいて、前記第二の抽出手段により抽出された閾値を書き換える書換手段と
を備えることを特徴とする画像処理装置。
【請求項３】
さらに、前記書換手段により書き換えの結果に基づいて、前記入力画像における所定領域に含まれる各画素を量子化する量子化手段を有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記書換手段は、前記第二の抽出手段により抽出された閾値を前記第一の抽出手段により抽出された閾値に書き換えることを示す閾値書換情報を生成し、
前記量子化手段は、前記閾値書換情報に基づいて閾値を変更した閾値マトリクスを用いて、前記量子化を行なうことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記書換手段は、前記第二の抽出手段により抽出された閾値を、前記第一の抽出手段により抽出された閾値に所定の係数を掛けた値に書き換えることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項６】
前記所定の係数は、前記第二の抽出手段により抽出された閾値に対応する画素の入力値に応じて設定されることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記所定の係数は、入力値に応じた係数を格納したルックアップテーブルを用いて設定されることを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記所定の係数が、入力値に応じた係数を表す関数を用いて変更されることを特徴とする請求項５に記載の画像処理装置。
【請求項９】
前記所定領域内のコントラストを導出し、導出されたコントラストに応じて、前記所定の係数が決定されることを特徴とする請求項５に記載の画像処理装置。
【請求項１０】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理装置において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定する判定手段と、
前記所定領域内の注目画素に対応する閾値及び当該注目画素の画素値を取得する取得手段と、
取得した前記注目画素に対応する閾値が、非白画素の最小閾値であって、かつ、白画素の最小閾値よりも大きい場合、前記白画素の最小閾値と、取得した前記注目画素の画素値とを比較し、画素値の方が大きければ、当該注目画素に対応する閾値を０に書き換える書換手段と、
を備えることを特徴とする画像処理装置。
【請求項１１】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理方法において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定するステップと、
前記所定領域に含まれる全画素に対応する閾値のうち、最も小さい閾値を抽出する第一の抽出ステップと、
前記所定領域における非白画素に対応する閾値のうち、最も小さい閾値を抽出する第二の抽出ステップと、
前記第一の抽出ステップで抽出された閾値が、前記第二の抽出ステップで抽出された閾値よりも小さい場合、前記第一の抽出ステップで抽出された閾値に基づいて、前記第二の抽出ステップで抽出された閾値を書き換えるステップと
を含むことを特徴とする画像処理方法。
【請求項１２】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理方法において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定するステップと、
前記所定領域に含まれる白画素に対応する閾値のうち、最も小さい閾値を抽出する第一の抽出ステップと、
前記所定領域における非白画素に対応する閾値のうち、最も小さい閾値を抽出する第二の抽出ステップと、
前記第一の抽出ステップで抽出された閾値が、前記第二の抽出ステップで抽出された閾値よりも小さい場合、前記第一の抽出ステップで抽出された閾値に基づいて、前記第二の抽出ステップで抽出された閾値を書き換えるステップと
を含むことを特徴とする画像処理方法。
【請求項１３】
画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理方法において、
入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定するステップと、
前記所定領域内の注目画素に対応する閾値及び当該注目画素の画素値を取得するステップと、
取得した前記注目画素に対応する閾値が、非白画素の最小閾値であって、かつ、白画素の最小閾値よりも大きい場合、前記白画素の最小閾値と、取得した前記注目画素の画素値とを比較し、画素値の方が大きければ、当該注目画素に対応する閾値を０に書き換えるステップと、
を含むことを特徴とする画像処理方法。
【請求項１４】
コンピュータを、請求項１乃至１０のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、閾値マトリクスを用いて入力画像をハーフトーン処理する画像処理技術に関する。
【背景技術】
【０００２】
コンピュータで処理した画像データを印刷することが広く行われている。しかしながら、コンピュータ上の画像データ（入力画像データ）が表現する階調数に対して、一般に、印刷装置や表示装置などの出力装置が表現可能な階調数は少ない。このため、通常は、入力画像データの階調数を出力装置で表現可能な階調数に変換するハーフトーン処理がなされる。
【０００３】
ハーフトーン処理の一つとして、画像データを周期的に変動する閾値と比較することによって出力値を決定するスクリーン処理（組織的ディザ法）が知られている。スクリーン処理を施すことにより、画像の濃淡を面積階調で表現したスクリーン画像が得られる。面積階調では、一定面積を単位として、この単位面積の中でドットを形成する画素数を変えることで階調を表現している。そのため、スクリーン画像で再現される階調は一定面積内で形成されたドットの数によって決定される。よって、入力画像データにおいて特に階調の変化が少ない平坦部については、均等な間隔で同一形状の網点が形成されるため、良好な画像が得られる。
【０００４】
ところが、入力画像データにおいて一定面積内で階調が大きく変化する細線などは、細線の濃度や角度によっては細線の位置にドットを形成出来なくなり、細線の途切れや消失が発生してしまうことがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１５７９９８号公報
【特許文献２】特開平１１−３４５３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のような問題に対しては、例えば、入力画像データ内の細線の位置を検出し、通常のスクリーン処理では当該細線の位置にドットが形成されない場合、当該細線の位置の閾値をドットが形成される閾値に変更し、再度スクリーン処理を行なう技術がある。この技術では、ドットが形成されない細線位置の閾値をドットが形成される閾値に変更することで、ドットが形成される箇所を増加させて、細線が途切れを防ぐことを実現している（特許文献１）。
【０００７】
また、入力画像データ内の細線の位置を検出し、検出された細線の位置の閾値を小さくすることでドットが形成される確率を増加させる技術もある（特許文献２）。
【０００８】
上述した特許文献１や特許文献２に記載された手法では、局所領域においてドットを形成したい閾値を一律に変更することになる。しかしながら、前述したとおりスクリーン処理では面積階調で階調を表現している。よって、階調を再現するには所定面積内で形成されるドット数が重要である。この点、上述の特許文献１や特許文献２の手法では、細線として検出された位置の閾値を一律に変更するため、当該検出部分の階調性が崩れてしまう。その結果、細線として検出された部分と細線として検出されなかった部分との境界で階調の不連続が発生するという問題があった。
【課題を解決するための手段】
【０００９】
本発明に係る画像処理装置は、画素位置に応じて閾値を異ならせて量子化することによってハーフトーン画像を生成する画像処理装置において、入力画像における所定領域に含まれる複数の画素に対して白画素であるか否かを判定する判定手段と、前記所定領域に含まれる全画素に対応する閾値のうち、最も小さい閾値を抽出する第一の抽出手段と、前記所定領域における非白画素に対応する閾値のうち、最も小さい閾値を抽出する第二の抽出手段と、前記第一の抽出手段により抽出された閾値が、前記第二の抽出手段により抽出された閾値よりも小さい場合、前記第一の抽出手段により抽出された閾値に基づいて、前記第二の抽出手段により抽出された閾値を書き換える書換手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、濃度の変動を抑えつつ細線の再現性を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図２】実施例１に係る、閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【図３Ａ】実施例１に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図３Ｂ】実施例１の変形例１に係る、図３Ａに対応するフローチャートである。
【図３Ｃ】実施例４の変形例１に係る、図３Ａに対応するフローチャートである。
【図４】実施例２に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図５Ａ】実施例２に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図５Ｂ】実施例４に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図６】実施例３に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図７】実施例３に係る、閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【図８Ａ】実施例３に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図８Ｂ】実施例３の変形例２に係る、図８Ａに対応するフローチャートである。
【図８Ｃ】実施例３の変形例３に係る、図８Ａに対応するフローチャートである。
【図９】実施例５に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１０】実施例６に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１１】実施例７に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１２】実施例７に係る、係数決定部で参照されるＬＵＴの入出力特性の一例を示すグラフである。
【図１３】実施例８に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１４】実施例８に係る、係数決定部で参照されるＬＵＴの入出力特性の一例を示すグラフである。
【図１５】実施例９に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１６】実施例９に係る、閾値変換部で参照されるＬＵＴの入出力特性の一例を示すグラフである。
【図１７】実施例１０に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図１８】実施例１０に係る、閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【図１９】実施例１０に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図２０】実施例１１に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図２１】実施例１１に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図２２】実施例１２に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図２３】実施例１２に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図２４】実施例１３に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図２５】実施例１３に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【図２６】実施例１３に係る、閾値並び換え処理の流れを示すフローチャートである。
【図２７】入力画像の所定領域と閾値マトリクスとの関係を示す図である。
【図２８】実施例１５に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【図２９】実施例１５に係る、画像処理装置で実行される処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付の図面を参照して、本発明を好適な実施例に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【実施例１】
【００１３】
図１は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【００１４】
画素値／閾値取得部１０１は、入力画像データの所定領域に含まれる各画素の画素値、及び各画素位置に対応する閾値を、不図示のＲＡＭ等から取得する。ここでは、所定領域を縦４画素×横４画素のブロック領域とするが、所定領域の形状及びサイズはこれに限定するものではない。取得した画素値は、白画素判定部１０２及び量子化部１０６送られる。また、取得した閾値は、白画素最小閾値抽出部１０３及び非白画素最小閾値抽出部１０４に送られる。
【００１５】
白画素判定部１０２は、所定領域の中を濃度に応じて複数の領域に分割する手段として、画素値／閾値取得部１０１から受け取った画素値に基づいて、所定領域における各画素が白画素であるかどうかを判定する。例えば画素値「０」が白画素を示す場合には、入力された画素値が「０」であるかどうかによって白画素かどうかを判定し、上述の所定領域が、白画素で構成される領域と、白画素以外の画素（非白画素）で構成される領域とに分割することになる。そして、所定領域内における白画素を特定する情報（白画素の領域と非白画素の領域とを特定する情報、以下、「白画素情報」）が、白画素最小閾値抽出部１０３及び非白画素最小閾値抽出部１０４に送られる。なお、白画素判定部１０２に代えて、RIP（Raster Image Processor）装置等で生成された属性情報を使用しても良い。
【００１６】
白画素最小閾値抽出部１０３は、白画素判定部１０２から受け取った白画素情報と、画素値／閾値取得部１０１から受け取った閾値を用いて、所定領域内の白画素からなる白画素群の閾値を参照する。白画素最小閾値抽出部１０３は、白画素の位置に対応する閾値の中から最小の閾値（以下、白画素最小閾値）を抽出する。抽出された白画素最小閾値の情報は、閾値書換部１０５に送られる。
【００１７】
非白画素最小閾値抽出部１０４は、白画素判定部１０２から受け取った白画素情報と、画素値／閾値取得部１０１から受け取った閾値を用いて、所定領域内の非白画素（白画素以外の画素）からなる非白画素群の閾値を参照する。非白画素最小閾値抽出部１０４は、非白画素の位置に対応する閾値の中から最小の閾値（以下、非白画素最小閾値）を抽出する。抽出された非白画素最小閾値の情報は、閾値書換部１０５に送られる。
【００１８】
閾値書換部１０５は、入力画像に対応する閾値マトリクスについて、非白画素最小閾値を白画素最小閾値に書き換える処理を行なう。具体的には、白画素最小閾値と非白画素最小閾値とを比較し、白画素最小閾値の方が小さい値（ドットが形成される確率が高い閾値）であった場合に、非白画素最小閾値を白画素最小閾値に置き換える処理がなされる。
【００１９】
前述した通り、面積階調では所定面積内に形成するドット数で階調を表現している。しかし、ドットを形成したい位置の画素が白画素であった場合は、位置的に対応する閾値がいかなる値であってもドットは形成されない。その結果、所定面積内に形成されるドット数が減少、あるいはドットが消滅する可能性がある。そこで、本実施例では、白画素群に対応する閾値のうち最小である閾値が、ドットが形成される確率が高い閾値（比較的小さい値の閾値）である場合に、非白画素群に対応する閾値のうち最小である閾値を、白画素群の最小閾値に置き換える。これにより、対応する閾値の値が比較的大きいために所定領域内において他の画素よりもドットが形成される確率が低かった非白画素の位置にドットが形成されやすくなる。その結果、面積階調で定義した所定面積内の閾値や画素値を変更することなく、入力画像データの白画素以外の位置にドットを形成することができる。なお、非白画素の最小閾値は白画素の最小閾値に変わってしまうが、非白画素の最小閾値を白画素の最小閾値と交換したと考えれば所定面積内の閾値の組み合わせに変更はない。本実施例では、白画素位置の閾値がいかなる値であってもその位置にドットは形成されないことを踏まえ、白画素の最小閾値の置換は行わない。  
量子化部１０６は、入力された画素値（入力画素値）と書換済みの閾値マトリクスを用いて、入力画素値の量子化を行う。
【００２０】
なお、図示していないが、画像処理装置１００は、上記各部を実現するためのハードウェア構成、すなわち、各種プログラムやデータを記憶するためのＨＤＤ、ＲＯＭ、ＲＡＭ、さらにはプログラムを実行し各部を統括的に制御するＣＰＵなどを備えている。
【００２１】
図２は、本実施例に係る閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【００２２】
縦４画素×横４画素の入力画像２０１は、３列目の画素値が「３２」でそれ以外の画素値が「０」の画像データである。閾値マトリクス２０２は、閾値書換処理がなされる前の、入力画像２０１に対応する閾値マトリクスである。閾値マトリクス２０２において、閾値が小さい位置ほど、ドットが形成される確率が高いことを意味する。例えば、閾値「８」に対応する画素は、入力画素値０〜２５５のち「９」以上であればオンドットに量子化される。つまり所定領域において最もドットが形成される確率が高い。一方、閾値「２５２」の画素は、入力画素値０〜２５５のうち、「２５３」、「２５４」「２５５」の画素値の場合のみオンドットに量子化される。従って閾値「２５２」に対応するする画素は最もドットが形成される確率が低いことを意味する。
【００２３】
スクリーン画像２０４は、閾値マトリクス２０２を用いて入力画像２０１を量子化した場合に得られる出力画像である。入力画像２０１の３列目の画素値「３２」に対し、閾値マトリクス２０２の３列目の閾値の最小値は「５０」（図中の△）であるため、スクリーン画像２０４にはドットが存在していない（ドット消失）。
【００２４】
閾値マトリクス２０３は、閾値書換処理がなされた後の、入力画像２０１に対応する閾値マトリクスである。閾値マトリクス２０３では、閾値マトリクス２０２における白画素最小閾値「８」（図中の○）の値で、非白画素最小閾値「５０」が置換されているのが分かる。スクリーン画像２０５は、閾値書換後の閾値マトリクス２０３を用いて入力画像２０１を量子化した場合に得られる出力画像である。スクリーン画像２０５では、スクリーン画像２０４では存在しなかった（消失していた）ドットを再現することができている。
【００２５】
図３Ａは、本実施例に係る画像処理装置で実行される処理のうち、白画素最小閾値抽出処理、非白画素最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、ＲＯＭ等からＲＡＭ上に読み込んだ後、ＣＰＵによって該プログラムを実行することによって実施される。
【００２６】
ステップ３０１において、白画素最小閾値抽出部１０３は、白画素位置の最小閾値を保持する変数である白画素最小閾値（MinTHoff）を初期化する。同様に、非白画素最小閾値抽出部１０４は、非白画素位置の最小閾値を保持する変数である非白画素最小閾値（MinTHon）を初期化する。具体的には、MinTHoff及びMinTHonの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【００２７】
ステップ３０２において、白画素最小閾値抽出部１０３及び非白画素最小閾値抽出部１０４は、所定領域内の注目画素についての白画素情報、及び当該注目画素に対応する閾値を取得する。
【００２８】
ステップ３０３では、ステップ３０２で取得した白画素情報に基づいて、注目画素が白画素であるかどうかが判定される。判定の結果、白画素である場合は、ステップ３０４に進む。一方、白画素でない場合（非白画素である場合）は、ステップ３０６に進む。なお、ここでは白画素判定部１０２の判定結果である白画素情報に基づいて注目画素が白画素であるかどうかを判定しているが、注目画素の画素値から直接に白画素であるかどうかを判定してもよい。
【００２９】
ステップ３０４において、白画素最小閾値抽出部１０３は、現時点の白画素最小閾値（MinTHoff）とステップ３０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHoffの値が注目画素の閾値より大きい場合は、ステップ３０５に進む。一方、MinTHoffの値が注目画素の閾値より大きくない場合は、ステップ３０８に進む。
【００３０】
ステップ３０５において、白画素最小閾値抽出部１０３は、MinTHoffの値を、ステップ３０２で取得した閾値に更新する。
【００３１】
ステップ３０６において、非白画素最小閾値抽出部１０４は、非白画素最小閾値（MinTHon）とステップ３０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHonの値が注目画素の閾値より大きい場合は、ステップ３０７に進む。一方、MinTHonの値が注目画素の閾値より大きくない場合は、ステップ３０８に進む。
【００３２】
ステップ３０７において、非白画素最小閾値抽出部１０４は、MinTHonの値を、ステップ３０２で取得した閾値に更新する。
【００３３】
ステップ３０８では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ３０９に進む。ステップ３０９に進んだ時点で、所定領域内の白画素位置における最小閾値がMinTHoffとして保持され、非白画素位置における最小閾値がMinTHonとして保持されていることになる。一方、所定領域内に未処理の画素があればステップ３０２に戻り、次の画素を注目画素としてステップ３０２〜ステップ３０７の各処理を行なう。
【００３４】
ステップ３０９において、閾値書換部１０５は、所定領域内の注目画素に対応する閾値を取得する。
【００３５】
ステップ３１０において、閾値書換部１０５は、ステップ３０９で取得した閾値と、非白画素最小閾値（MinTHon）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ３１１に進む。一方、両者が同じ値でない場合は、ステップ３１３に進む。
【００３６】
ステップ３１１において、閾値書換部１０５は、白画素最小閾値（MinTHoff）とステップ３０９で取得した閾値とを比較する。この比較の時点で、ステップ３０９で取得した閾値は、非白画素最小閾値（MinTHon）と同じ値である。よって、本ステップでは、非白画素最小閾値（MinTHon）と白画素最小閾値（MinTHoff）との大小関係を比較していることになる。判定の結果、白画素最小閾値が非白画素最小閾値（取得した閾値）より小さい場合は、ステップ３１２に進む。一方、白画素最小閾値が非白画素最小閾値（取得した閾値）より小さくない場合は、ステップ３１３に進む。
【００３７】
ステップ３１２において、閾値書換部１０５は、ステップ３０９で取得した閾値を白画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、白画素最小閾値（MinTHoff）の値が設定されることになる。
【００３８】
ステップ３１３では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ３０９に戻り、次の画素を注目画素としてステップ３０９〜ステップ３１２の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【００３９】
以上が、本実施例における、白画素最小閾値抽出処理、非白画素最小閾値抽出処理及び閾値書換処理の内容である。
【００４０】
これにより、量子化に使用する閾値マトリクスの非白画素についての最小閾値が、ドットが形成される確率が高い閾値へと、所定領域毎に書き換えられる。
【００４１】
＜変形例１＞
上述の実施例１では、注目画素の閾値が、非白画素の最小閾値であって（Ｓ３１０でＹｅｓ）かつ、白画素最小閾値よりも大きい場合（ステップ３１１でＹｅｓ）に、注目画素の閾値を白画素最小閾値で置換した。その目的は、当該注目画素をオンドットにすることにある。そこで、端的にオンドットを決定する別態様を変形例１として説明する。
【００４２】
図３Ｂは、この変形例１に係る、上述の図３Ａに対応するフローチャートである。ステップ３０１〜３０８、３１０、３１１、３１３については図３Ａと異なるところはないので、以下では、差異点であるステップ３０９’及び３１２’を中心に説明する。
【００４３】
ステップ３０９’において、閾値書換部１０５は、所定領域内の注目画素に対応する閾値に加え、当該注目画素の画素値を取得する。
【００４４】
取得した注目画素に対応する閾値が、非白画素の最小閾値であって（Ｓ３１０でＹｅｓ）、かつ、白画素最小閾値よりも大きい場合に（ステップ３１１でＹｅｓ）、ステップ３１２’において、閾値書換部１０５は、当該注目画素をオンドットに決定する。具体的には、置換する予定であった閾値（白画素最小閾値）と、ステップ３０９’で取得した画素値とを比較し、画素値の方が大きければ、当該注目画素に対応する閾値を「０」に設定する。これにより、当該注目画素は確実にオンドットとなる。
【００４５】
また、画像処理装置の動作モードとして、例えば細線を強調するモードが指定されているようなケースでは、非白画素群における所定の数の閾値を強制的に「０」に設定するようにしてもよい。この場合において、「所定の数」は、閾値マトリクスのサイズに依存し、例えば４×４であれば１個、８×８であれば２個、といったように決定される。これにより、濃度は若干変動することになるが、細線を確実に再現することが可能となる。
【００４６】
＜変形例２＞
また、上述の実施例１では、閾値置換部１０５において量子化に使用する閾値マトリクス自体の書換を行い、当該書き換えられた閾値マトリクスを用いて量子化部１０６で量子化を行なうことを前提としているが、このような態様に限定されるものではない。たとえば、閾値マトリクス自体は量子化部１０６で保持しておき、閾値マトリクスにおけるどの閾値をどのような値に書き換えるのかを示す情報（以下、閾値書換情報）を、閾値書換部１０５で生成する構成でもよい。この場合、閾値書換部１０５で生成された閾値書換情報が量子化部１０６に送られ、量子化部１０６において、閾値書換情報を基に閾値マトリクスの修正を行った上で、量子化処理がなされることになる。
【実施例２】
【００４７】
実施例１では、所定領域内の白画素の最小閾値が、ドットが形成される確率が高い閾値であった場合に、非白画素の最小閾値を、白画素の最小閾値と同じ値に書き換えていた。次に、所定領域内の全画素中の最小閾値が、ドットが形成される確率が高い閾値であった場合に、非白画素の最小閾値を、全画素中の最小閾値と同じ値に書き換える態様について、実施例２として説明する。なお、実施例１と共通する部分（変形例を含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【００４８】
図４は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【００４９】
画素値／閾値取得部１０１、白画素判定部１０２、非白画素最小閾値抽出部１０４、量子化部１０６は、実施例１と同じであるので説明を省略する。
【００５０】
全画素最小閾値抽出部４０１は、画素値／閾値取得部１０１から受け取った閾値を用いて、所定領域内の全画素に対応する閾値の中から最小の閾値（以下、全画素最小閾値）を抽出する。
【００５１】
閾値書換部４０２は、入力画像に対応する閾値マトリクスについて、非白画素最小閾値を全画素最小閾値に書き換える処理を行なう。具体的には、全画素最小閾値と非白画素最小閾値とを比較し、全画素最小閾値の方が小さい値（ドットが形成される確率が高い閾値）であった場合に、非白画素最小閾値を全画素最小閾値に置き換える処理がなされる。つまり、本実施例における書換処理では、全画素最小閾値抽出部４０１で抽出された最小閾値が白画素に対応する位置にあった場合のみ、非白画素最小閾値との置き換えがなされることとなる。
【００５２】
なお、白画素判定部１０２における処理内容自体は実施例１と同じであるが、本実施例では、その処理結果である白画素情報が非白画素最小閾値抽出部１０４にのみ入力される。これは、全画素最小閾値抽出部４０１は、所定領域内の全画素に対応する閾値を対象に処理を行なうもので、その処理に白画素情報は不要なためである。
【００５３】
図５Ａは、本実施例に係る画像処理装置で実行される処理のうち、全画素最小閾値抽出処理、非白画素最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。
【００５４】
ステップ５０１において、全画素最小閾値抽出部４０１は、全画素位置の最小閾値を保持する変数である全画素最小閾値（MinTHall）を初期化する。同様に、非白画素最小閾値抽出部１０４は、非白画素位置の最小閾値を保持する変数である非白画素最小閾値（MinTHon）を初期化する。具体的には、MinTHall及びMinTHonの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【００５５】
ステップ５０２において、全画素最小閾値抽出部４０１は、所定領域内の注目画素に対応する閾値を取得する。そして、非白画素最小閾値抽出部１０４は、注目画素についての白画素情報、及び注目画素に対応する閾値を取得する。
【００５６】
ステップ５０３において、全画素最小閾値抽出部４０１は、現時点の全画素最小閾値（MinTHall）とステップ５０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHallの値が注目画素の閾値より大きい場合は、ステップ５０４に進む。一方、MinTHallの値が注目画素の閾値より大きくない場合は、ステップ５０５に進む。
【００５７】
ステップ５０４において、全画素最小閾値抽出部４０１は、MinTHallの値を、ステップ５０２で取得した閾値に更新する。
【００５８】
ステップ５０５では、ステップ５０２で取得した白画素情報に基づいて、注目画素が白画素であるかどうかが判定される。判定の結果、白画素である場合は、ステップ５０８に進む。一方、白画素でない場合（非白画素である場合）は、ステップ５０６に進む。
【００５９】
ステップ５０６において、非白画素最小閾値抽出部１０４は、現時点の非白画素最小閾値（MinTHon）とステップ５０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHonの値が注目画素の閾値より大きい場合は、ステップ５０７に進む。一方、MinTHonの値が注目画素の閾値より大きくない場合は、ステップ５０８に進む。
【００６０】
ステップ５０７において、非白画素最小閾値抽出部１０４は、MinTHonの値を、ステップ５０２で取得した閾値に更新する。
【００６１】
ステップ５０８では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ５０９に進む。ステップ５０９に進んだ時点で、所定領域内の全画素位置における最小閾値がMinTHallとして保持され、非白画素位置における最小閾値がMinTHonとして保持されていることになる。一方、所定領域内に未処理の画素があればステップ５０２に戻り、次の画素を注目画素としてステップ５０２〜ステップ５０７の各処理を行なう。
【００６２】
ステップ５０９において、閾値書換部４０２は、所定領域内の注目画素に対応する閾値を取得する。
【００６３】
ステップ５１０において、閾値書換部４０２は、ステップ５０９で取得した閾値と、非白画素最小閾値（MinTHon）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ５１１に進む。一方、両者が同じ値でない場合は、ステップ５１３に進む。
【００６４】
ステップ５１１において、閾値書換部４０２は、全画素最小閾値（MinTHall）とステップ５０９で取得した閾値とを比較する。この比較の時点で、ステップ５０９で取得した閾値は、非白画素最小閾値（MinTHon）と同じ値である。よって、本ステップでは、非白画素最小閾値（MinTHon）と全画素最小閾値（MinTHall）との大小関係を比較していることになる。判定の結果、全画素最小閾値が非白画素最小閾値（取得した閾値）より小さい場合は、ステップ５１２に進む。一方、全画素最小閾値が非白画素最小閾値（取得した閾値）より小さくない場合は、ステップ５１３に進む。
【００６５】
ステップ５１２において、閾値書換部４０２は、ステップ５０９で取得した閾値を全画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、全画素最小閾値（MinTHall）の値が設定されることになる。
【００６６】
ステップ５１３では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ５０９に戻り、次の画素を注目画素としてステップ５０９〜ステップ５１２の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【００６７】
以上が、本実施例における、全画素最小閾値抽出処理、非白画素最小閾値抽出処理、及び閾値書換処理の内容である。
【００６８】
これにより、非白画素最小閾値の量子化に使用する閾値が、ドットが形成される確率が高い閾値へと、所定領域毎に置き換えられる。
【００６９】
本実施例によって得られる結果は、実施例１と同様であるが、処理フローが一部簡略化されるため、回路規模を小さくする効果が期待できる。
【実施例３】
【００７０】
実施例１及び２では、所定領域内における１画素に対応する１個の閾値のみを変更していた。所定領域が小さいときは１個の閾値のみの変更で足りるが、所定領域が大きくなると、１個の閾値を変更するだけでは十分な効果が得られない可能性がある。そこで、所定領域内の複数画素に対応する複数の閾値を変更する態様について、実施例３として説明する。なお、実施例１及び２と共通する部分（変形例を含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【００７１】
図６は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。
【００７２】
画素値／閾値取得部１０１、白画素判定部１０２、量子化部１０６は、実施例１と同じであるので説明を省略する。
【００７３】
所定領域内閾値ソート部６０１は、画素値／閾値取得部１０１から受け取った閾値を用いて、所定領域（例えば、縦４画素×横４画素のブロック領域）内の全画素に対応する閾値を小さい順（もしくは大きい順）にソートする。ソート結果は、所定領域内閾値ソート情報として、閾値書換部６０３に送られる。
【００７４】
非白画素閾値ソート部６０２は、白画素判定部１０２から受け取った白画素情報と、画素値／閾値取得部１０１から受け取った閾値を用いて、所定領域内の非白画素位置に対応する閾値を小さい順（もしくは大きい順）にソートする。ソート結果は、非白画素閾値ソート情報として、閾値書換部６０３に送られる。
【００７５】
閾値書換部６０３は、所定領域内閾値ソート情報と非白画素閾値ソート情報とに基づいて、閾値の書換処理を行う。具体的には、実施例２と同様、所定領域内の閾値と非白画素の閾値とを順に比較して、所定領域内の閾値の方が小さければ、所定領域内の閾値と非白画素の閾値とを置き換える処理がなされる。ただし、本実施例では、最小閾値同士だけでなく、２番目に小さい閾値同士、３番目に小さい閾値同士といった具合に、複数画素に関して閾値の比較・置換がなされる。これにより、所定領域内の複数の白画素位置にドットが形成される確率の高い閾値があった場合に、当該閾値が、非白画素の位置に移動することになる。
【００７６】
図７は、本実施例に係る閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【００７７】
縦４画素×横４画素の入力画像７０１は、３列目の画素値が「３２」でそれ以外の画素値が「０」の画像データである。閾値マトリクス７０２は、閾値書換処理がなされる前の、入力画像７０１に対応する閾値マトリクスである。スクリーン画像７０４は、閾値マトリクス７０２を用いて入力画像７０１を量子化した場合に得られる出力画像である。入力画像７０１の３列目の画素値「３２」に対し、閾値マトリクス７０２の３列目の閾値の最小値は「５０」（図中の△）であり、その次に小さい閾値は「１１８」（図中の２重△）であるため、スクリーン画像７０４にはドットが存在していない（ドット消失）。
【００７８】
閾値マトリクス７０３は、閾値書換処理がなされた後の、入力画像７０１に対応する閾値マトリクスである。閾値マトリクス７０３では、非白画素の最小閾値「５０」が白画素最小閾値「８」（図中の○）で置換され、非白画素内で２番目に小さい閾値「１１８」が白画素内で２番目に小さい閾値「２０」（図中の◎）で置換されているのが分かる。スクリーン画像７０５は、閾値書換後の閾値マトリクス７０３を用いて入力画像７０１を量子化した場合に得られる出力画像である。スクリーン画像７０５では、スクリーン画像７０４では存在しなかった（消失していた）２つのドットを再現することができている。
【００７９】
そして、上述のように閾値の書換を行なった後も、所定領域内の非白画素の領域内において元々の閾値同士の大小関係が崩れていないのが分かる。すなわち、書換前の「５０＜１１８＜２１０＜２３６」と、書換後の「８＜２０＜２１０＜２３６」とでは、最小閾値及び２番目に小さい閾値の値こそ変わっているものの、大小関係自体に変化はない。このように大小関係を維持することで、不自然な濃度変動を発生させることなく、濃度に応じたドットの生成確率を向上させることができる。
【００８０】
図８Ａは、本実施例に係る画像処理装置で実行される処理のうち、所定領域内閾値ソート処理、非白画素閾値ソート処理、及び閾値書換処理についての詳細を示すフローチャートである。
【００８１】
ステップ８０１では、まず、変数[ｉ]が初期化される。この変数[ｉ]はＲＡＭにて保持される。
【００８２】
ステップ８０２では、所定領域内のすべての画素についての白画素情報、及びすべての画素に対応する閾値が取得される。
【００８３】
ステップ８０３では、所定領域内で閾値の置換えを行なう回数を規定する定数（閾値置換数）[ｐ]を設定する。本実施例は、複数の閾値を変更することを想定しているので、閾値置換数[ｐ]には通常「２」以上の値が設定されることになる。
【００８４】
ステップ８０４において、所定領域内閾値ソート部６０１は、所定領域内の全画素に対応する閾値をソートする処理を行なう。ここでは、所定領域内の全画素に対応する閾値を小さい順にソートする。ソート後の閾値の並びを示すデータは、所定領域内閾値ソート情報としてＲＡＭ等に保持される。さらに、所定領域内閾値ソート部６０１は、白画素判定部１０２から受け取った白画素情報から、白画素の数（ｎ）を求めておく。求められた白画素数（ｎ）も、ＲＡＭ等に保持される。
【００８５】
ステップ８０５において、非白画素閾値ソート部６０２は、白画素判定部１０２から受け取った白画素情報を参照して所定領域内における非白画素を特定し、特定された非白画素に対応する閾値をソートする処理を行なう。ここでは、所定領域内の非白画素の閾値を小さい順にソートする。ソート後の閾値の並びを示すデータは、非白画素閾値ソート情報としてＲＡＭ等に保持される。さらに、非白画素閾値ソート部６０２は、白画素情報を参照して、非白画素の数（ｍ）を求めておく。求められた非白画素数（ｍ）も、ＲＡＭ等に保持される。
【００８６】
ステップ８０６において、閾値書換部６０３は、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が「０」であるかどうかを判定する。判定の結果、白画素数（ｎ）と非白画素数（ｍ）のいずれの値も「０」でない場合は、ステップ８０７に進む。一方、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が「０」である場合は、本処理を抜ける。ｎ＝０の場合（所定領域内のすべての画素が非白画素である場合）や、ｍ＝０の場合（所定領域内のすべての画素が白画素である場合）は、閾値を置き換える必要がないためである。
【００８７】
ステップ８０７において、閾値書換部６０３は、変数[ｉ]と閾値置換数[ｐ]とを比較する。比較の結果、 変数[ｉ]が閾値置換数[ｐ]以下の場合は、ステップ８０８に進む。一方、 変数ｉの方が大きい場合は、ステップ８０９に進む。例えば、処理開始直後の時点では、変数ｉは「０」であり、閾値置換数[ｐ]は「２」以上の値であるから、ステップ８０８に進むことになる。
【００８８】
ステップ８０８において、閾値書換部６０３は、非白画素ソート後閾値[ｉ]を、所定領域内ソート後閾値[ｉ]で置換する。すなわち、非白画素の中で小さい方からｉ番目の閾値に、所定領域の中で小さい方からｉ番目の閾値の値を設定する。
【００８９】
ステップ８０９では、変数ｉがインクリメント（＋１）される。
【００９０】
ステップ８１０では、非白画素に対応するすべての閾値が処理されたかどうか（ｉ＝ｍかどうか）が判定される。判定の結果、未処理の非白画素閾値がある場合は、ステップ８０７に戻り、次に小さい閾値同士の比較を行なう。一方、すべての非白画素閾値についての処理が終了していれば、本処理を終える。
【００９１】
以上が、本実施例における、所定領域内閾値ソート処理、非白画素閾値ソート処理、及び閾値書換処理の内容である。
【００９２】
これにより、所定領域内の複数画素に対応する複数の閾値が変更され、所定領域が大きい場合にも十分な効果を期待できる。
【００９３】
（変形例１）
なお、本実施例では、所定領域内の全ての閾値をソートする場合について説明したが、小さい方から[ｐ]番目までにソート対象を限定してもよい。例えば、実施例２は、小さい方から１番目までにソート対象を限定した例ということもでき、このようにソート対象に制限を加えることで回路規模（処理工程）の削減が可能となる。
【００９４】
（変形例２）
また、所定領域内の全ての画素を対象にソートするのではなく、白画素のみを対象にソートしてもよい。
【００９５】
図８Ｂは、本変形例に係る、白画素閾値ソート処理、非白画素閾値ソート処理、及び閾値書換処理についての詳細を示すフローチャートである。
【００９６】
ステップ８１１では、まず、変数[ｉ]、[ｊ]、[ｋ]が初期化される。この変数[ｉ]、[ｊ]、[ｋ]はＲＡＭにて保持される。
【００９７】
ステップ８１２では、所定領域内のすべての画素についての白画素情報、及びすべての画素に対応する閾値が取得される。
【００９８】
ステップ８１３において、白画素閾値ソート部（不図示）は、白画素判定部１０２から受け取った白画素情報を参照して所定領域内における白画素を特定し、特定された白画素に対応する閾値をソートする処理を行なう。ここでは、所定領域内の白画素の閾値を小さい順にソートする。ソート後の閾値の並びを示すデータは、白画素閾値ソート情報としてＲＡＭ等に保持される。さらに、白画素閾値ソート部（不図示）は、白画素判定部１０２から受け取った白画素情報から、白画素の数（ｎ）を求めておく。求められた白画素数（ｎ）も、ＲＡＭ等に保持される。
【００９９】
ステップ８１４において、非白画素閾値ソート部６０２は、白画素判定部１０２から受け取った白画素情報を参照して所定領域内における非白画素を特定し、特定された非白画素に対応する閾値をソートする処理を行なう。ここでは、所定領域内の非白画素の閾値を小さい順にソートする。ソート後の閾値の並びを示すデータは、非白画素閾値ソート情報としてＲＡＭ等に保持される。さらに、非白画素閾値ソート部６０２は、白画素情報を参照して、非白画素の数（ｍ）を求めておく。求められた非白画素数（ｍ）も、ＲＡＭ等に保持される。
【０１００】
ステップ８１５において、閾値書換部６０３は、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が「０」であるかどうかを判定する。判定の結果、白画素数（ｎ）と非白画素数（ｍ）のいずれの値も「０」でない場合は、ステップ８１６に進む。一方、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が「０」である場合は、本処理を抜ける。ｎ＝０の場合（所定領域内のすべての画素が非白画素である場合）や、ｍ＝０の場合（所定領域内のすべての画素が白画素である場合）は、閾値を置き換える必要がないためである。
【０１０１】
ステップ８１６において、閾値書換部６０３は、白画素ソート後閾値[ｊ]と非白画素ソート後閾値[ｉ]とを比較する。比較の結果、白画素ソート後閾値[ｊ]が非白画素ソート後閾値[ｉ]よりも小さい場合は、ステップ８１７に進む。一方、白画素ソート後閾値[ｊ]が非白画素ソート後閾値[ｉ]よりも小さくない場合は、ステップ８１９に進む。
【０１０２】
ステップ８１７において、閾値書換部６０３は、非白画素書換後閾値[ｋ]を、白画素ソート後閾値[ｊ]で置換する。すなわち、小さい方からｋ番目の書換後の非白画素閾値を、小さい方からｊ番目の白画素ソート後閾値の値に変更する。
【０１０３】
ステップ８１８では、変数[ｊ]がインクリメント（＋１）される。
【０１０４】
ステップ８１９において、閾値書換部６０３は、非白画素書換後閾値[ｋ]を、非白画素ソート後閾値[ｉ]で置換する。すなわち、小さい方からｋ番目の書換後の非白画素閾値を、小さい方からｉ番目の非白画素ソート後閾値の値に変更する。
【０１０５】
ステップ８２０は、変数[ｉ]がインクリメント（＋１）される。
【０１０６】
ステップ８２１では、変数[ｋ]がインクリメント（＋１）される。
【０１０７】
ステップ８２２では、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が変数[ｋ]と一致するかどうかが判定される。変数[ｋ]と白画素数（ｎ）とが一致する場合（全ての白画素に対応する閾値が参照された場合）、又は変数[ｋ]と非白画素数（ｍ）とが一致する場合（全ての非白画素に対応する閾値が確定した場合）は、本処理を終了する。一方、判定の結果、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が、変数[ｋ]と一致しない場合は、ステップ８１６に戻り、白画素数（ｎ）と非白画素数（ｍ）のいずれかの値が変数ｋと一致するまで処理を繰り返す。
【０１０８】
以上が、本実施例における、白画素閾値ソート処理、非白画素閾値ソート処理、及び閾値書換処理の内容である。これにより、所定領域内全ての画素をソートした場合と同じ結果を得ることができる。
【０１０９】
（変形例３）
さらに、所定領域内における非白画素の画素値の平均値を下回っている閾値の数を所定領域単位で算出し、算出された閾値の数に対応する非白画素の閾値を保持しておき、当該閾値以下となる閾値をすべて「０」に置き換えてもよい。
【０１１０】
図８Ｃは、本変形例に係る処理の詳細を示すフローチャートである。
【０１１１】
ステップ８３１では、まず、変数[ｉ]が初期化される。この変数[ｉ]はＲＡＭにて保持される。
【０１１２】
ステップ８３２では、所定領域内のすべての画素についての白画素情報、及びすべての画素に対応する閾値が取得される。
ステップ８３３では、所定領域内の閾値のうち、非白画素の画素値の平均値を下回る閾値の数[ｑ]が算出される。
【０１１３】
ステップ８３４において、非白画素閾値ソート部６０２は、所定領域内の非白画素に対応する閾値をソートする処理を行なう。ここでは、所定領域内の非白画素に対応する閾値を小さい順にソートする。ソート後の閾値の並びを示すデータは、非白画素閾値ソート情報としてＲＡＭ等に保持される。さらに、非白画素閾値ソート部６０２は、白画素判定部１０２から受け取った白画素情報から、白画素の数（ｎ）を求めておく。求められた白画素数（ｎ）も、ＲＡＭ等に保持される。
【０１１４】
ステップ８３５において、閾値書換部６０３は、非白画素閾値ソート情報を参照して、非白画素に対応するソート後の閾値の小さい方から[ｑ]番目の閾値を、「書換判定用閾値」として設定する。この「書換判定用閾値」はＲＡＭにて保持される。
【０１１５】
ステップ８３６において、閾値書換部６０３は、ステップ８３５で設定された書換判定用閾値と所定領域内におけるｉ番目の閾値（例えばブロック領域の左上端から順にｉ番目の閾値）とを比較する。比較の結果、所定領域内の閾値[ｉ]が書換判定用閾値以下である場合は、ステップ８３７に進む。一方、所定領域内の閾値[ｉ]が書換判定用閾値よりも大きい場合は、ステップ８３８に進む。
【０１１６】
ステップ８３７において、閾値書換部６０３は、所定領域内の閾値[ｉ]を、「０」に設定する。
【０１１７】
ステップ８３８では、変数[ｉ]がインクリメント（＋１）される。
【０１１８】
ステップ８３９では、所定領域内の全画素に対応するすべての閾値が処理されたかどうか（ｉ＝所定領域内の画素数かどうか）が判定される。判定の結果、未処理の閾値がある場合は、ステップ８３６に戻り、次の画素に対応する閾値についての処理を行なう。一方、所定領域内の全画素に対応するすべての閾値についての処理が終了していれば、本処理を終える。
【０１１９】
以上が、本変形例に係る処理の内容である。
【０１２０】
この変形例３では、閾値の置換操作（ある閾値を他の閾値で置き換える）を行なわないので処理を簡略化でき、また、上述のような「書換判定用閾値」を用いることで所定領域内における濃度変動も抑えられる。
【実施例４】
【０１２１】
次に、実施例２をベースとして、非白画素の閾値を書き換える確率を可変にし、細線再現性を調整する態様について、実施例４として説明する。
【０１２２】
図５Ｂは、本実施例に係る、画像処理装置で実行される処理の詳細を示すフローチャートであり、前述の実施例２の図５Ａのフローチャートに対応している。ステップ５０１〜５１０、５１３については、図５Ａのフローチャートと同じであるので、以下では差異点であるステップ５１１’及び５１２’について説明する。
【０１２３】
ステップ５１１’において、閾値書換部４０２は、「全画素最小閾値（MinTHall）」に所定の係数を掛けた上で「非白画素最小閾値（＝注目画素の閾値）」と比較する。この場合において、細線の連続性（ドットの生成確率）を高めたい場合は、１．０未満の係数を設定し、例えば「全画素最小閾値（MinTHall）×０．９」と「注目画素の閾値」とを比較する。また、細線の濃度を重視する場合は、１．０を超える係数を設定し、例えば、「全画素最小閾値（MinTHall）×１．１」と「注目画素の閾値」とを比較する。比較の結果、「全画素最小閾値×係数」の値が注目画素の閾値（＝非白画素最小閾値）より小さい場合は、ステップ５１２’に進む。一方、「全画素最小閾値×係数」の値が注目画素の閾値（＝非白画素最小閾値）より小さくない場合は、ステップ５１３に進む。
【０１２４】
ステップ５１２’において、閾値書換部４０２は、ステップ５０９で取得した注目画素の閾値を「全画素最小閾値（MinTHall）×係数」の値で置換する。
【０１２５】
以上のような処理により、非白画素の最小閾値を書き換える確率を変えることができる。なお、係数を１．０にした場合は、実施例２と同じ結果になる。
【０１２６】
このように本実施例によれば、細線の再現性を目的に応じて制御することができる。
【０１２７】
（変形例１）
同様に、実施例１をベースとして、非白画素の閾値を書き換える確率を可変にする態様について説明する。
【０１２８】
図３Ｃは、本変形例に係る、前述の実施例１の図３Ａのフローチャートに対応するフローチャートである。ステップ３０１〜３１０、３１３については、図３Ａのフローチャートと同じであるので、以下では差異点であるステップ３１１’及び３１２’について説明する。
【０１２９】
ステップ３１１’において、閾値書換部１０５は、「白画素最小閾値（MinTHoff）」に所定の係数を掛けた上で「非白画素最小閾値（＝注目画素の閾値）」と比較する。比較の結果、「白画素最小閾値×係数」の値が注目画素の閾値（＝非白画素最小閾値）より小さい場合は、ステップ３１２’に進む。一方、「白画素最小閾値×係数」の値が注目画素の閾値（非白画素最小閾値）より小さくない場合は、ステップ３１３に進む。
【０１３０】
ステップ３１２’において、閾値書換部１０５は、ステップ３０９で取得した注目画素の閾値を「白画素最小閾値（MinTHoff）×係数」の値で置換する。
【０１３１】
以上のような処理により、非白画素の最小閾値を書き換える確率を変えることができる。
【０１３２】
実施例２をベースにした場合（全画素最小閾値に例えば１．０未満の係数を掛けるとき）では、所定領域内に白画素がなくても閾値の置換えが起こるため、細線の濃度との差が検知されなくなり、細線との境界部における不自然さがない。一方、実施例１をベースにした場合（白画素最小閾値に例えば１．０未満の係数を掛けるとき）は、所定領域内に白画素がなければ閾値の置換えが発生しないため、濃度変動が起こらない。すなわち、変形例１の方が、濃度変動をより小さく抑えることができる。
【０１３３】
よって、文字・線画領域においては「全画素最小閾値」に係数を掛ける態様を適用し、自然画領域においては「白画素最小閾値」に係数を掛ける態様を適用するのが好ましいといえる。
【実施例５】
【０１３４】
実施例２は、所定領域内の全画素に対応する閾値中の最小閾値が、ドットが形成される確率が高い閾値であった場合に、非白画素の最小閾値を、全画素中の最小閾値と同じ値に書き換える態様であった。次に、実施例２をベースとして、「白画素」に代えて「低濃度画素」に着目する態様について、実施例５として説明する。なお、実施例２と共通する部分（変形例を含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１３５】
図９は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１、全白画素最小閾値抽出部４０１、量子化部１０６は、実施例２と同じであるので説明を省略する。
【０１３６】
低濃度画素判定部９０１は、画素値／閾値取得部１０１から受け取った画素値に基づいて、所定領域における各画素が低濃度画素であるかどうかを判定する。低濃度画素かどうかは、例えば、入力された画素値が所定の閾値（Thlowdens）以下であるかどうかによって判定される。そして、低濃度画素と判定された画素を特定するための情報（以下、低濃度画素情報）が、非低濃度画素最小閾値抽出部９０２に送られる。なお、低濃度画素判定部９０１に代えて、RIP（Raster Image Processor）装置等で生成された属性情報を使用しても良い。
【０１３７】
非低濃度画素最小閾値抽出部９０２は、低濃度画素判定部９０１からの低濃度画素情報と、画素値／閾値取得手段１０１からの閾値を用いて、非低濃度画素（低濃度画素以外の画素）に対応する閾値の中の最小閾値（以下、非低濃度画素最小閾値）を抽出する。抽出された非低濃度画素最小閾値を特定するための情報（以下、非低濃度画素最小閾値情報）は、閾値書換部９０３に送られる。
【０１３８】
閾値書換部９０３は、入力画像に対応する閾値マトリクスについて、非低濃度画素最小閾値を全画素最小閾値に書き換える処理を行なう。具体的には、全画素最小閾値と非低濃度画素最小閾値とを比較し、全画素最小閾値の方が小さい値（ドットが形成される確率が高い閾値）であった場合に、非低濃度画素最小閾値を全画素最小閾値の値に置き換える処理を行なう。
【０１３９】
実際の処理フローについては、実施例２で説明した図５Ａのフローチャートにおいて、「非白画素最小閾値」とある部分を「非低濃度画素最小閾値」と読み替えて、同様に処理すればよい。
【０１４０】
実施例２では、ほぼ白画素と評価される画素（白画素の画素値と近い値を有する画素で、例えば背景を構成する画素）であっても、白画素でなければ閾値の置換えは起こらない。これに対し、本実施例では、所定閾値（Thlowdens）以下の画素値を有する白画素以外の画素を白画素と同等のものとして扱うことによって、例えば背景領域においても細線再現性を向上させることができる。
【０１４１】
なお、本実施例においては、低濃度画素の閾値については書換の対象外とするため、低濃度領域のドット配置は変わらない。
【実施例６】
【０１４２】
次に、実施例１をベースとして、高濃度画素に着目して閾値の書換を行う態様について、実施例６として説明する。なお、実施例１と共通する部分（変形例を含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１４３】
図１０は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１及び量子化部１０６は、実施例１と同じであるので説明を省略する。
【０１４４】
高濃度画素判定部１００１は、画素値／閾値取得部１０１から受け取った画素値に基づいて、所定領域における各画素が高濃度画素であるかどうかを判定する。高濃度画素かどうかは、例えば、入力された画素値が所定の閾値（Thhighdens ）以上であるかどうかによって判定される。そして、高濃度画素と判定された所定領域内の画素を特定するための情報（以下、高濃度画素情報）が、高濃度画素最小閾値抽出部１００２に送られる。なお、高濃度画素判定部１００１に代えて、RIP（Raster Image Processor）装置等で生成された属性情報を使用してもよい。
【０１４５】
高濃度画素最小閾値抽出部１００２は、高濃度画素判定部１００１から受け取った高濃度画素情報と、画素値／閾値取得手段１０１から受け取った閾値を用いて、高濃度画素の画素位置に対応する閾値の中の最小閾値（以下、高濃度画素最小閾値）を抽出する。抽出された高濃度画素最小閾値を特定するための情報（以下、高濃度画素最小閾値情報）は、閾値書換部１００３に送られる。
【０１４６】
閾値書換部１００３は、高濃度画素最小閾値抽出部１００２から受け取った高濃度画素最小閾値情報に基づいて、高濃度画素に対応する閾値の中の最小閾値を異なる閾値に書き換える。例えば、高濃度画素最小閾値に所定の係数（１．０未満）を掛けて、よりドットが生成されやすい閾値に変更する。そして、量子化部１０６において変更後の閾値と入力画素値とを用いた量子化がなされる。
【０１４７】
本実施例では、高濃度画素に対応する閾値中の最小閾値のみが、よりドット生成確率の高い閾値に変更される。つまり、ドット生成確率が高くなるのは、所定領域内（例えば縦４画素×横４画素の１６画素）の高濃度画素のうちの１画素のみとなる。これは、入力画像のうち濃い濃度領域に対しては影響がなく、入力画素レンジの１／１６程度の低い濃度領域における濃度が若干上昇することを意味する。この場合、所定領域内の高濃度側のみ濃度が上がるので、結果としてハイライト部分のコントラストが少し強調されたような画像が出力されることになる。よって、淡い細線においては、背景の濃度が細線の濃度よりも低い場合に再現性が向上することになる。
【実施例７】
【０１４８】
実施例６では、所定領域内の高濃度領域の最小閾値に所定の係数を掛けて最小閾値をよりドット生成確率の高い閾値に変更する態様について説明した。次に、所定領域内の高濃度領域の最小閾値を変更する際の係数を、入力画素値に応じて調整する態様について、実施例７として説明する。なお、実施例６と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１４９】
図１１は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１、高濃度画素判定部１００１、高濃度画素最小閾値抽出部１００２、閾値書換部１００３及び量子化部１０６は、実施例６と同じであるので説明を省略する。
【０１５０】
係数決定部１１０１は、入力画素値に応じた係数を決定する。具体的には、予め入力値（画素値）に対応する係数値が格納されたＬＵＴ（ルックアップテーブル）を参照し、画素値／閾値取得部１０１から受け取った画素値に応じた係数を決定する。決定された係数は、閾値書換部１００３に送られる。そして、閾値書換部１００３において、決定された係数に基づき高濃度画素最小閾値がよりドット生成確率の高い閾値に変更され、量子化部１０６において、変更後の閾値と入力画素値とを用いた量子化がなされる。
【０１５１】
図１２は、本実施例に係る、係数決定部１１０１で参照されるＬＵＴの入出力特性の一例を示すグラフである。
【０１５２】
図１２（ａ）において、直線１２０１は、入力画素値によらず出力係数が一定（ここでは０．５）である入出力特性を示している。直線１２０１で示す入出力特性の場合は、実施例６において係数を０．５にした場合と同じ結果になる。
【０１５３】
図１２（ｂ）において、折れ線１２０２は、入力画素値が０〜１６の時は出力係数を０．２５とし、入力画素値が６４以上の時は出力係数を１．０とし、入力画素値が１６〜６４では出力係数を０．２５〜１．０の範囲でリニアに変化させる入出力特性を示している。図１２（ｂ）のような入出力特性では、入力画素値が１６以下の時は細線再現性が重視され、入力画素値が１６から６４に上昇するにつれて濃度再現性が重視される（細線再現性を弱める）ことになる。つまり、係数決定部１１０１で参照するＬＵＴの入出力特性を適切に設定することによって、濃度再現性と細線再現性とのバランスを調整することができる。例えば、紙等の記録媒体やインク等の色材に応じて入出力特性を変化させることで、プリンタの再現能力を最大限引き出すことが可能になる。また、入出力特性を適宜選択することで、ユーザは自身の好みに応じたプリント出力を得ることができる。また、入力画素値が所定値以上の場合は係数を１．０（もしくは１．０以上）にすればよいので、入力画素値が所定値以下に対応する係数のみをＬＵＴに格納すれば足り、ＬＵＴ容量の削減が可能である。
【０１５４】
なお、本実施例ではＬＵＴを用いて係数を決定する態様を説明したが、例えば関数を用いて係数を決定するようにしてもよい。また、例えば、入力画素値の区間を細かく区切って区間毎に係数を切り替えるようにしてもよい。
【実施例８】
【０１５５】
実施例７では、所定領域内の高濃度領域の最小閾値を変更する際の係数を入力画素値に応じて調整する態様について説明した。次に、所定領域内の高濃度領域の最小閾値を変更する際の係数を入力画素値のコントラストに応じて調整する態様について、実施例８として説明する。なお、実施例７と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１５６】
図１３は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１、高濃度画素判定部１００１、高濃度画素最小閾値抽出部１００２、閾値書換部１００３及び量子化部１０６は、実施例７と同じであるので説明を省略する。
【０１５７】
コントラスト導出部１３０１は、所定領域内のコントラストを導出する。具体的には、例えば、所定領域内の入力画素値の最大値と最小値との差分を求め、これをコントラスト値として導出する。または、「高濃度領域内の画素値の平均値」と「高濃度領域以外の画素値の平均値」との差分を求め、これをコントラスト値とする等、他の手法によって求めた値をコントラスト値としてもよい。導出されたコントラスト値は、係数決定部１３０２に送られる。
【０１５８】
係数決定部１３０２は、入力されたコントラスト値に応じた係数を決定する。具体的には、予め入力値（コントラスト値）に対応する係数値が格納されたＬＵＴを参照し、コントラスト導出部１３０１から入力されたコントラスト値に応じた係数を決定する。決定された係数は、閾値書換部１００３に送られる。そして、閾値書換部１００３において、決定された係数に基づき高濃度画素最小閾値が実施例６と同様に変更され、量子化部１０６において変更後の閾値と入力画素値とを用いた量子化がなされる。
【０１５９】
図１４は、本実施例に係る、係数決定部１３０２で参照されるＬＵＴの入出力特性の一例を示すグラフである。
【０１６０】
図１４において、折れ線１４０１は、入力コントラスト値が０〜１６の時は出力係数を０．２５とし、入力コントラスト値が４８以上の時は出力係数を１．０とし、入力コントラスト値が１６〜４８では出力係数を０．２５〜１．０の範囲でリニアに変化させる入出力特性を示している。図１４に示すような入出力特性では、入力コントラスト値が１６以下の時は細線再現性が重視され、入力コントラスト値が１６から４８に上昇するにつれて濃度再現性が重視される（細線再現性を弱める）ことになる。つまり、実施例７と同様、係数決定部１３０２で参照するＬＵＴの入出力特性を適切に設定することによって、濃度再現性と細線再現性とのバランスを調整することができる。
【０１６１】
なお、本実施例ではＬＵＴを用いて係数を決定する態様を説明したが、例えば関数を用いて係数を決定するようにしてもよい。また、例えば、入力コントラスト値の区間を細かく区切って区間毎に係数を切り替えるようにしてもよい。
【実施例９】
【０１６２】
実施例６では、高濃度領域の最小閾値を所定の係数を掛けることで変更していた。次に、高濃度領域の最小閾値を、ＬＵＴを用いて変更する態様について、実施例９として説明する。なお、実施例６と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１６３】
図１５は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１、高濃度画素判定部１００１、高濃度画素最小閾値抽出部１００２及び量子化部１０６は、実施例６と同じであるので説明を省略する。
【０１６４】
閾値変換部１５０１は、入力閾値に応じた出力閾値を決定する処理を行なう。具体的には、予め入力値（閾値）に対応する出力値（閾値）が格納されたＬＵＴを参照し、画素値／閾値取得部１０１から入力された閾値を変換する。図１６は、閾値変換部１５０１で参照されるＬＵＴの入出力特性の一例を示すグラフである。図１６において、折れ線１６０１は、入力閾値が０〜１６の時は傾き１／４、入力閾値が１７〜３２の時は傾き１／２、入力閾値が３３〜４８の時は傾き３／２、入力閾値が４９〜６４の時は傾き７／４となるように設計された入出力特性を示している。なお、図示されていないが、入力閾値が６５以上においては、入力閾値がそのまま出力閾値となるように設定されている。このような任意のカーブで表現される入出力特性を持つＬＵＴによって変換された閾値（出力閾値）は、閾値書換部１５０２に送られる。
【０１６５】
閾値書換部１５０２は、高濃度画素最小閾値抽出部１００２から受け取った高濃度画素最小閾値情報に基づいて、高濃度画素に対応する閾値の中の最小閾値を、閾値変換部１５０１から受け取った変換後の閾値に書き換える。例えば、高濃度画素最小閾値情報が示す最小閾値が「４８」であった場合には、それに対応する変換後の閾値「３２」に変更されることになる。そして、量子化部１０６において変更後の閾値と入力画素値とを用いた量子化がなされる。  
本実施例では、図１６に示すような入出力特性のＬＵＴを用いることで、高濃度領域の最小閾値が１６〜４８の時のドットの出現確率を上げている。
【０１６６】
ここで、高濃度領域の最小閾値は、所定領域内における高濃度の画素数が多いと小さくなり、逆に、孤立点のように所定領域内における高濃度の画素数が少ないと大きくなる傾向がある。従って、高濃度領域の最小閾値が１６〜４８の時のドットの出現確率を上げることで、細線のようにある程度の画素数が高濃度領域に存在する場合のドット出現確率を上げることができる。これにより、孤立点ノイズのように再現する必要のないドットの生成を抑えることが可能となる。なお、入力閾値が６４以上は入力値と出力値が一致するので、入力閾値が６４未満の係数のみをＬＵＴに格納することで、ＬＵＴ容量の削減も可能である。
【０１６７】
なお、本実施例では、ＬＵＴを用いて入力閾値を変換する態様を説明したが、例えば関数を用いて入力閾値に対応する出力閾値を決定するようにしてもよい。また、例えば、入力閾値の区間を細かく区切って区間毎に傾きを切り替えるようにして出力閾値を生成してもよい。
【実施例１０】
【０１６８】
次に、ドットが形成されない白画素の閾値が、白画素との境界をなす非白画素（以下、境界画素）の閾値よりもドットが形成される確率が高い閾値であった場合に、境界画素の閾値を白画素の閾値に置き換える態様について、実施例１０として説明する。なお、実施例１と共通する部分（変形例を含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１６９】
図１７は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。白画素判定部１０２、白画素最小閾値抽出部１０３及び量子化部１０６は、実施例１と同じであるので説明を省略する。
【０１７０】
画素値／閾値取得部１７０１は、入力画像データの所定領域内における注目画素とその隣接画素の画素値、及び各画素位置に対応する閾値を、不図示のＲＡＭ等から取得する。ここでの隣接画素は、注目画素を囲む上下左右と斜めに隣接する８画素を指すものとする。なお、本実施例でも、所定領域を縦４画素×横４画素のブロック領域とするが、所定領域の形状及びサイズはこれに限定するものではない。取得した注目画素の画素値と隣接画素の画素値は、境界画素判定部１７０２に送られる。さらに、注目画素の画素値が白画素判定部１０２に送られる。また、各画素位置における閾値は、白画素最小閾値抽出部１０３、境界画素最小閾値抽出部１７０３、及び閾値書換部１７０４に送られる。
【０１７１】
境界画素判定部１７０２は、画素値／閾値取得部１７０１から受け取った注目画素の画素値と隣接画素の画素値に基づいて、注目画素が境界画素であるかどうか（白画素との境界であるかどうか）を判定する。例えば、注目画素が非白画素であり、かつ、隣接画素の中に少なくとも１つ白画素があった場合に、当該注目画素を境界画素であると判定するようにする。境界画素であると判定された注目画素を特定するための情報（以下、境界画素情報）は、境界画素最小閾値抽出部１７０３に送られる。
【０１７２】
境界画素最小閾値抽出部１７０３は、境界画素判定部１６０２から受け取った境界画素情報と、画素値／閾値取得部１７０１から受け取った閾値を用いて、所定領域内の境界画素の位置に対応する閾値の中から最小の閾値（以下、境界画素最小閾値）を抽出する。抽出された境界画素最小閾値の情報は、閾値書換部１７０４に送られる。
【０１７３】
閾値書換部１７０４は、入力画像に対応する閾値マトリクスについて、境界画素最小閾値を白画素最小閾値に書き換える処理を行なう。具体的には、白画素最小閾値と境界画素最小閾値とを比較し、白画素最小閾値の方が小さい値（ドットが形成される確率が高い閾値）であった場合に、境界画素最小閾値を白画素最小閾値の値に置き換える処理がなされる。
【０１７４】
このような置換処理により、実施例１と同様、面積階調で定義した所定面積内の閾値や画素値を変更することなく、入力画像データの境界画素の位置にドットを形成することができる。なお、境界画素の最小閾値が白画素の最小閾値に置き換わってしまうが、境界画素の最小閾値を白画素の最小閾値と交換したと考えれば所定面積内の閾値に変更はない。ただし、白画素位置の閾値がいかなる値であってもその位置にドットは生成されないので、実施例１と同様、白画素の最小閾値の置換は行わない。
【０１７５】
図１８は、本実施例に係る閾値書換処理を行なった場合と行なわなかった場合の出力画像の違いを説明する図である。
【０１７６】
縦４画素×横４画素の入力画像１８０１は、３列目及び４列目の画素値が「３２」でそれ以外の画素値が「０」の画像データである。閾値マトリクス１８０２は、閾値書換処理がなされる前の、入力画像１８０１に対応する閾値マトリクスである。スクリーン画像１８０４は、閾値マトリクス１８０２を用いて入力画像１８０１を量子化した場合に得られる出力画像である。入力画像１８０１の４列目の画素値「３２」に対し、閾値マトリクス１８０２の４列目の閾値の最小値は「２０」であるため、スクリーン画像１８０４の４列目にはドットが存在している。しかながら、入力画像１８０１の３列目の画素値「３２」に対し、閾値マトリクス１８０２の３列目の閾値の最小値は「５０」であるため、スクリーン画像１８０４の３列目にはドットが存在していない（ドット消失）。
【０１７７】
閾値マトリクス１８０３は、閾値書換処理がなされた後の、入力画像１８０１に対応する閾値マトリクスである。閾値マトリクス１８０３では、閾値マトリクス１８０２における白画素最小閾値「８」（図中の○）の値で、境界画素最小閾値「５０」（図中の△）が置換されているのが分かる。スクリーン画像１８０５は、閾値書換後の閾値マトリクス１８０３を用いて入力画像１８０１を量子化した場合に得られる出力画像である。スクリーン画像１８０５では、スクリーン画像１８０４で存在しなかった３列目の（消失していた）ドットを再現することができている。
【０１７８】
図１９は、本実施例に係る画像処理装置で実行される処理のうち、白画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。
【０１７９】
ステップ１９０１において、白画素最小閾値抽出部１０３は、白画素位置の最小閾値を保持する変数である白画素最小閾値（MinTHoff）を初期化する。同様に、境界画素最小閾値抽出部１７０３は、境界画素位置の最小閾値を保持する変数である境界画素最小閾値（MinTHadj）を初期化する。具体的には、MinTHoff及びMinTHadjの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【０１８０】
ステップ１９０２において、白画素最小閾値抽出部１０３は、所定領域内の注目画素についての白画素情報、及び注目画素に対応する閾値を取得する。また、境界画素最小閾値抽出部１７０３は、所定領域内の注目画素についての境界画素情報、及び注目画素に対応する閾値を取得する。
【０１８１】
ステップ１９０３において、白画素最小閾値抽出部１０３は、ステップ１９０２で取得した白画素情報に基づいて、注目画素が白画素であるかどうかを判定する。判定の結果、白画素である場合は、ステップ１９０４に進む。一方、白画素でない場合（非白画素である場合）は、ステップ１９０６に進む。
【０１８２】
ステップ１９０４において、白画素最小閾値抽出部１０３は、現時点の白画素最小閾値（MinTHoff）とステップ１９０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHoffの値が注目画素の閾値より大きい場合は、ステップ１９０５に進む。一方、MinTHoffの値が注目画素の閾値より大きくない場合は、ステップ１９０９に進む。
【０１８３】
ステップ１９０５において、白画素最小閾値抽出部１０３は、MinTHoffの値を、ステップ１９０２で取得した閾値に更新する。
【０１８４】
ステップ１９０６において、境界画素最小閾値抽出部１７０３は、ステップ１９０２で取得した境界画素情報に基づいて、注目画素が境界画素であるかどうかを判定する。判定の結果、境界画素である場合は、ステップ１９０７に進む。一方、境界画素でない場合（白画素と隣接していない非白画素である場合）は、ステップ１９０９に進む。
【０１８５】
ステップ１９０７において、境界画素最小閾値抽出部１７０３は、現時点の境界画素最小閾値（MinTHadj）とステップ１９０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHadjの値が注目画素の閾値より大きい場合は、ステップ１９０８に進む。一方、MinTHadjの値が注目画素の閾値より大きくない場合は、ステップ１９０９に進む。
【０１８６】
ステップ１９０８において、境界画素最小閾値抽出部１７０３は、MinTHadjの値を、ステップ１９０２で取得した閾値に更新する。
【０１８７】
ステップ１９０９では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ１９１０に進む。ステップ１９１０に進んだ時点で、所定領域内の白画素位置における最小閾値がMinTHoffとして保持され、境界画素位置における最小閾値がMinTHadjとして保持されていることになる。一方、所定領域内に未処理の画素があればステップ１９０２に戻り、次の画素を注目画素としてステップ１９０２〜ステップ１９０８の各処理を行なう。
【０１８８】
ステップ１９１０において、閾値書換部１７０４は、所定領域内の注目画素に対応する閾値を取得する。
【０１８９】
ステップ１９１１において、閾値書換部１７０４は、ステップ１９１０で取得した閾値と、境界画素最小閾値（MinTHadj）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ１９１２に進む。一方、両者が同じ値でない場合は、ステップ１９１４に進む。
【０１９０】
ステップ１９１２において、閾値書換部１７０４は、白画素最小閾値（MinTHoff）とステップ１９１０で取得した閾値とを比較する。この比較の時点で、ステップ１９１０で取得した閾値は、境界画素最小閾値（MinTHadj）と同じ値である。よって、本ステップでは、境界画素最小閾値（MinTHadj）と白画素最小閾値（MinTHoff）との大小関係を比較していることになる。判定の結果、白画素最小閾値が境界画素最小閾値（取得した閾値）より小さい場合は、ステップ１９１３に進む。一方、白画素最小閾値が境界画素最小閾値（取得した閾値）より小さくない場合は、ステップ１９１４に進む。
【０１９１】
ステップ１９１３において、閾値書換部１７０４は、ステップ１９１０で取得した閾値を白画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、白画素最小閾値（MinTHoff）の値が設定されることになる。
【０１９２】
ステップ１９１４では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ１９１０に戻り、次の画素を注目画素としてステップ１９１０〜ステップ１９１３の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【０１９３】
以上が、本実施例に係る画像処理装置で実行される処理のうち、白画素最小閾値、境界画素最小閾値抽出処理、及び閾値置換処理の内容である。
【０１９４】
これにより、境界画素の最小閾値（量子化に使用する閾値）が、ドットが形成される確率が高い閾値へと、所定領域毎に置き換えられる。
【実施例１１】
【０１９５】
実施例１０において、白画素及び境界画素を除いたその他の画素領域（以下、「残領域」）の閾値の中に所定領域内における最小の閾値がある場合は、ドット生成確率が最も高い画素が白画素領域にはないのであるから、境界画素の閾値を置換する必要がない。そこで、残領域における最小閾値が、白画素最小閾値より小さい場合は、境界画素の閾値の置換を行わない態様について、実施例１１として説明する。なお、実施例１０と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１９６】
図２０は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１７０１、白画素判定部１０２、境界画素判定部１７０２、白画素最小閾値抽出部１０３、境界画素最小閾値抽出部１７０３、量子化部１０６は、実施例１０と同じであるので説明を省略する。
【０１９７】
全画素最小閾値抽出部２００１は、画素値／閾値取得部１７０１から受け取った閾値を用いて、所定領域内の全画素に対応する閾値の中から最小の閾値（以下、全画素最小閾値）を抽出する。
【０１９８】
閾値書換部２００２は、全画素最小閾値抽出部２００１で抽出した全画素最小閾値、白画素最小閾値抽出部１０３で抽出した白画素最小閾値、境界画素最小閾値抽出部１７０３で抽出した境界画素最小閾値を参照して、必要な場合のみ閾値の書換処理を行う。具体的には、白画素最小閾値が最も小さい場合（全画素最小閾値＝白画素最小閾値の時）にのみ、境界画素最小閾値を白画素最小閾値で置換し、全画素最小閾値が白画素最小閾値より小さい場合（全画素最小閾値≠白画素最小閾値の時）は、置換を行わない。
【０１９９】
なお、画素値／閾値取得部１７０１の機能自体は実施例１０と同じであるが、本実施例の場合、画素値／閾値取得部１７０１で取得された閾値が、全画素最小閾値抽出部２００１にも送られる点で、実施例１０とは異なっている。
【０２００】
図２１は、本実施例に係る画像処理装置で実行される処理のうち、全画素最小閾値抽出処理、白画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。
【０２０１】
ステップ２１０１において、全画素最小閾値抽出部２００１は、所定領域内の全画素における最小閾値を保持する変数である全画素最小閾値（MinTHall）を初期化する。同様に、白画素最小閾値抽出部１０３は、白画素位置の最小閾値を保持する変数である白画素最小閾値（MinTHoff）を初期化する。さらに、境界画素最小閾値抽出部１７０３は、境界画素位置の最小閾値を保持する変数である境界画素最小閾値（MinTHadj）を初期化する。具体的には、MinTHall、MinTHoff及びMinTHadjの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【０２０２】
ステップ２１０２において、全画素最小閾値抽出部２００１は、所定領域内の注目画素に対応する閾値を取得する。また、白画素最小閾値抽出部１０３は、所定領域内の注目画素についての白画素情報、及び注目画素に対応する閾値を取得する。また、境界画素最小閾値抽出部１７０３は、所定領域内の注目画素についての境界画素情報、及び注目画素に対応する閾値を取得する。
【０２０３】
ステップ２１０３において、全画素最小閾値抽出部２００１は、現時点の全画素最小閾値（MinTHall）とステップ２１０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHallの値が注目画素の閾値より大きい場合は、ステップ２１０４に進む。一方、MinTHallの値が注目画素の閾値より大きくない場合は、ステップ２１０５に進む。
【０２０４】
ステップ２１０４において、全画素最小閾値抽出部２００１は、MinTHallの値を、ステップ２１０２で取得した閾値に更新する。
【０２０５】
ステップ２１０５において、白画素最小閾値抽出部１０３は、ステップ２１０２で取得した白画素情報に基づいて、注目画素が白画素であるかどうかを判定する。判定の結果、白画素である場合は、ステップ２１０６に進む。一方、白画素でない場合（非白画素である場合）は、ステップ２１０８に進む。
【０２０６】
ステップ２１０６において、白画素最小閾値抽出部１０３は、現時点の白画素最小閾値（MinTHoff）とステップ２１０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHoffの値が注目画素の閾値より大きい場合は、ステップ２１０７に進む。一方、MinTHoffの値が処理対象画素の閾値より大きくない場合は、ステップ２１１１に進む。
【０２０７】
ステップ２１０７において、白画素最小閾値抽出部１０３は、MinTHoffの値を、ステップ２１０２で取得した閾値に更新する。
【０２０８】
ステップ２１０８において、境界画素最小閾値抽出部１７０３は、ステップ１９０２で取得した境界画素情報に基づいて、注目画素が境界画素であるかどうかを判定する。判定の結果、境界画素である場合は、ステップ２１０９に進む。一方、境界画素でない場合（白画素と隣接していない非白画素である場合）は、ステップ２１１１に進む。
【０２０９】
ステップ２１０９において、境界画素最小閾値抽出部１７０３は、現時点の境界画素最小閾値（MinTHadj）とステップ２１０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHadjの値が注目画素の閾値より大きい場合は、ステップ２１１０に進む。一方、MinTHadjの値が注目画素の閾値より大きくない場合は、ステップ２１１１に進む。
【０２１０】
ステップ２１１０において、境界画素最小閾値抽出部１７０３は、MinTHadjの値を、ステップ２１０２で取得した閾値に更新する。
【０２１１】
ステップ２１１１では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ２１１２に進む。ステップ２１１２に進んだ時点で、所定領域内の全画素における最小閾値がMinTHallとして、所定領域内の白画素位置における最小閾値がMinTHoffとして、境界画素位置における最小閾値がMinTHadjとしてそれぞれ保持されていることになる。一方、所定領域内に未処理の画素があればステップ２１０２に戻り、次の画素を注目画素としてステップ２１０２〜ステップ２１１０の各処理を行なう。
【０２１２】
ステップ２１１２において、閾値書換部２００２は、所定領域内の注目画素に対応する閾値を取得する。
【０２１３】
ステップ２１１３において、閾値書換部２００２は、全画素最小閾値（MinTHall）が、白画素最小閾値（MinTHoff）より小さいかどうかを判定する。全画素最小閾値の方が小さい場合は、所定領域の中で最小の閾値が、境界画素又は残領域の画素に存在することを意味する為、閾値の置換を行うことなく、ステップ２１１６に進む。それ以外の場合（全画素最小閾値と白画素最小閾値とが等しい場合）は、ステップ２１１４に進む。
【０２１４】
ステップ２１１４において、閾値書換部２００２は、ステップ２１１２で取得した閾値と、境界画素最小閾値（MinTHadj）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ２１１５に進む。一方、両者が同じ値でない場合は、ステップ２１１６に進む。
【０２１５】
ステップ２１１５において、閾値書換部２００２は、ステップ２１１２で取得した閾値を白画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、白画素最小閾値（MinTHoff）の値が設定されることになる。
【０２１６】
ステップ２１１６では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ２１１２に戻り、次の画素を注目画素としてステップ２１１２〜ステップ２１１５の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【０２１７】
以上が、本実施例に係る画像処理装置で実行される処理のうち、全画素最小閾値抽出処理、白画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値書換処理の内容である。
【０２１８】
本実施例によれば、境界画素最小閾値の所定領域毎の書換処理が必要なときにのみに制限され、量子化後の結果が必要以上に濃くなるのを防ぐことができる。
【実施例１２】
【０２１９】
実施例１１では、「残領域における最小閾値」＝「所定領域内における最小閾値」である場合に、書換処理を行なわない態様について説明した。次に、残領域における最小閾値が所定領域内における最小閾値である場合に、残領域の最小閾値と境界画素の最小閾値とを交換する態様について、実施例１２として説明する。なお、実施例１０及び１１と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０２２０】
図２２は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１７０１、境界画素判定部１７０２、全画素最小閾値抽出部２００１、境界画素最小閾値抽出部１７０３、量子化部１０６は、実施例１０又は１１と共通であるので説明を省略する。
【０２２１】
閾値書換部２２０１は、入力画像に対応する閾値マトリクスについて、全画素最小閾値と白画素最小閾値とを交換することにより閾値書換処理を行なう。具体的には、全画素最小閾値と境界画素最小閾値とを比較し、全画素最小閾値の方が境界画素最小閾値より小さい閾値（ドットが形成される確率が高い閾値）であった場合に、双方の閾値を入れ替える。
【０２２２】
なお、画素値／閾値取得部１７０１の機能自体は実施例１０と同じであるが、本実施例の場合、画素値／閾値取得部１７０１で取得された閾値が、全画素最小閾値抽出部２００１と境界画素最小閾値抽出部１７０３に送られる点で、実施例１０とは異なっている。
【０２２３】
図２３は、本実施例に係る画像処理装置で実行される処理のうち、全画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。
【０２２４】
ステップ２３０１において、全画素最小閾値抽出部２００１は、所定領域内の全画素における最小閾値を保持する変数である全画素最小閾値（MinTHall）を初期化する。同様に、境界画素最小閾値抽出部１７０３は、境界画素位置の最小閾値を保持する変数である境界画素最小閾値（MinTHadj）を初期化する。具体的には、MinTHall、MinTHadjの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【０２２５】
ステップ２３０２において、全画素最小閾値抽出部２００１は、所定領域内の注目画素に対応する閾値を取得する。また、境界画素最小閾値抽出部１７０３は、所定領域内の注目画素についての境界画素情報、及び注目画素に対応する閾値を取得する。
【０２２６】
ステップ２３０３において、全画素最小閾値抽出部２００１は、現時点の全画素最小閾値（MinTHall）とステップ２３０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHallの値が注目画素の閾値より大きい場合は、ステップ２３０４に進む。一方、MinTHallの値が注目画素の閾値より大きくない場合は、ステップ２３０５に進む。
【０２２７】
ステップ２３０４において、全画素最小閾値抽出部２００１は、MinTHallの値を、ステップ２３０２で取得した閾値に更新する。
【０２２８】
ステップ２３０５において、境界画素最小閾値抽出部１７０３は、ステップ２３０２で取得した境界画素情報に基づいて、注目画素が境界画素であるかどうかを判定する。判定の結果、境界画素である場合は、ステップ２３０６に進む。一方、境界画素でない場合（白画素と隣接していない非白画素である場合）は、ステップ２３０８に進む。
【０２２９】
ステップ２３０６において、境界画素最小閾値抽出部１７０３は、現時点の境界画素最小閾値（MinTHadj）とステップ２３０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHadjの値が注目画素の閾値より大きい場合は、ステップ２３０７に進む。一方、MinTHadjの値が注目画素の閾値より大きくない場合は、ステップ２３０８に進む。
【０２３０】
ステップ２３０７において、境界画素最小閾値抽出部１７０３は、MinTHadjの値を、ステップ２３０２で取得した閾値に更新する。
【０２３１】
ステップ２３０８では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ２３０９に進む。ステップ２３０９に進んだ時点で、所定領域内の全画素における最小閾値がMinTHallとして、境界画素位置における最小閾値がMinTHadjとしてそれぞれ保持されていることになる。一方、所定領域内に未処理の画素があればステップ２３０２に戻り、次の画素を注目画素としてステップ２３０２〜ステップ２３０７の各処理を行なう。
【０２３２】
ステップ２３０９において、閾値書換部２２０１は、所定領域内の注目画素に対応する閾値を取得する。
【０２３３】
ステップ２３１０において、閾値書換部２２０１は、境界画素最小閾値（MinTHadj）が全画素最小閾値（MinTHall）と同じであるかどうかを判定する。境界画素最小閾値の方と同じ値である場合は、閾値の交換を行う必要がないので、ステップ２３１５に進む。境界画素最小閾値と同じ値でない場合は、ステップ２３１１に進む。
【０２３４】
ステップ２３１１において、閾値書換部２２０１は、ステップ２３０９で取得した閾値と、境界画素最小閾値（MinTHadj）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ２３１２に進む。一方、両者が同じ値でない場合は、ステップ２３１３に進む。
【０２３５】
ステップ２３１２において、閾値書換部２２０１は、ステップ２３０９で取得した閾値を全画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、全画素最小閾値（MinTHall）の値が設定されることになる。
【０２３６】
ステップ２３１３において、閾値書換部２２０１は、ステップ２３０９で取得した閾値と、全画素最小閾値（MinTHall）とが同じであるかどうかを判定する。両者が同じ値である場合は、ステップ２３１４に進む。一方、両者が同じ値でない場合は、ステップ２３１５に進む。
【０２３７】
ステップ２３１４において、閾値書換部２２０１は、ステップ２３０９で取得した閾値を境界画素最小閾値で置換する。すなわち、注目画素に対応する閾値として、境界画素最小閾値（MinTHadj）の値が設定されることになる。
【０２３８】
ステップ２３１５では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ２３０９に戻り、次の画素を注目画素としてステップ２３０９〜ステップ２３１４の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【０２３９】
以上が、本実施例に係る画像処理装置で実行される処理のうち、全画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値書換処理の内容である。
【０２４０】
本実施例によれば、量子化後の結果が必要以上に濃くなることを防ぎつつ、境界画素の細線の再現性向上及び、エッジ強調の効果を得ることができる。
【０２４１】
＜変形例１＞
また、回路構成を簡略化するため、白画素位置の閾値が所定領域内最小閾値の場合に、境界画素最小閾値と交換するようにしてもよい。白画素位置の閾値はいかなる値であってもドットは生成されないので、交換しても不自然な濃度変動等の問題は起きない。
【実施例１３】
【０２４２】
次に、白画素における最小閾値、境界画素における最小閾値、残領域における最小閾値を抽出し、「境界画素最小閾値」＜「残領域最小閾値」＜「白画素最小閾値」の大小関係となるように閾値を並び換える態様について、実施例１３として説明する。なお、実施例１０と共通する部分については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０２４３】
図２４は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１７０１、白画素判定部１０２、境界画素判定部１７０２、白画素最小閾値抽出部１０３、境界画素最小閾値抽出部１７０３、量子化部１０６は、実施例１０と同じであるので説明を省略する。
【０２４４】
残領域最小閾値抽出部２４０１は、白画素情報と境界画素情報を用いて、白画素及び境界画素を除いたその他の画素領域における閾値の中から最小の閾値（以下、残領域最小閾値）を抽出する。
【０２４５】
閾値書換部２４０２は、残領域最小閾値抽出部２４０１で抽出した残領域最小閾値、白画素最小閾値抽出部１０３で抽出した白画素最小閾値、境界画素最小閾値抽出部１７０３で抽出した境界画素最小閾値を参照して閾値を書き換える。すなわち、「境界画素最小閾値」＜「残領域最小閾値」＜「白画素最小閾値」の大小関係となるように閾値マトリクスの閾値を並び換える。
【０２４６】
なお、画素値／閾値取得部１７０１の機能自体は実施例１０と同じであるが、本実施例の場合、画素値／閾値取得部１７０１で取得された閾値が、残領域最小閾値抽出部２４０１にも送られる点で、実施例１０とは異なっている。
【０２４７】
図２５は、本実施例に係る画像処理装置で実行される処理のうち、白画素最小閾値抽出処理、境界画素最小閾値抽出処理、残領域最小閾値抽出処理、及び閾値書換処理についての詳細を示すフローチャートである。
【０２４８】
ステップ２５０１において、残領域最小閾値抽出部２４０１は、所定領域内の残領域（白画素及び境界画素を除いたその他の画素領域）における最小閾値を保持する変数である残領域最小閾値（MinTHrem）を初期化する。同様に、白画素最小閾値抽出部１０３は、白画素位置の最小閾値を保持する変数である白画素最小閾値（MinTHoff）を初期化する。さらに、境界画素最小閾値抽出部１７０３は、境界画素位置の最小閾値を保持する変数である境界画素最小閾値（MinTHadj）を初期化する。具体的には、MinTHrem、MinTHoff及びMinTHadjの値に、スクリーン処理における閾値の最大値（又は入力画素値のレンジの最大値）をそれぞれセットする。なお、これら変数はＲＡＭにて保持される。
【０２４９】
ステップ２５０２において、残領域最小閾値抽出部２４０１は、所定領域内の注目画素についての白画素情報、及び注目画素に対応する閾値を取得する。また、白画素最小閾値抽出部１０３は、所定領域内の注目画素についての白画素情報、及び注目画素に対応する閾値を取得する。また、境界画素最小閾値抽出部１７０３は、所定領域内の注目画素についての境界画素情報、及び注目画素に対応する閾値を取得する。
【０２５０】
ステップ２５０３において、白画素最小閾値抽出部１０３は、ステップ２５０２で取得した白画素情報に基づいて、注目画素が白画素であるかどうかを判定する。判定の結果、白画素である場合は、ステップ２５０４に進む。一方、白画素でない場合（非白画素である場合）は、ステップ２５０６に進む。
【０２５１】
ステップ２５０４において、白画素最小閾値抽出部１０３は、現時点の白画素最小閾値（MinTHoff）とステップ２５０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHoffの値が注目画素の閾値より大きい場合は、ステップ２５０５に進む。一方、MinTHoffの値が処理対象画素の閾値より大きくない場合は、ステップ２５１１に進む。
【０２５２】
ステップ２５０５において、白画素最小閾値抽出部１０３は、MinTHoffの値を、ステップ２５０２で取得した閾値に更新する。
【０２５３】
ステップ２５０６において、境界画素最小閾値抽出部１７０３は、ステップ２５０２で取得した境界画素情報に基づいて、注目画素が境界画素であるかどうかを判定する。判定の結果、境界画素である場合は、ステップ２５０７に進む。一方、境界画素でない場合（白画素と隣接していない非白画素である場合）は、ステップ２５０９に進む。
【０２５４】
ステップ２５０７において、境界画素最小閾値抽出部１７０３は、現時点の境界画素最小閾値（MinTHadj）とステップ２５０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHadjの値が注目画素の閾値より大きい場合は、ステップ２５０８に進む。一方、MinTHadjの値が注目画素の閾値より大きくない場合は、ステップ２５１１に進む。
【０２５５】
ステップ２５０８において、境界画素最小閾値抽出部１７０３は、MinTHadjの値を、ステップ２５０２で取得した閾値に更新する。
【０２５６】
ステップ２５０９において、残領域最小閾値抽出部２４０１は、現時点の残領域最小閾値（MinTHrem）とステップ２５０２で取得した注目画素の閾値とを比較する。比較の結果、MinTHremの値が注目画素の閾値より大きい場合は、ステップ２５１０に進む。一方、MinTHremの値が注目画素の閾値より大きくない場合は、ステップ２５１１に進む。
【０２５７】
ステップ２５１０において、残領域最小閾値抽出部２４０１は、MinTHremの値を、ステップ２５０２で取得した閾値に更新する。
【０２５８】
ステップ２５１１では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ２５１２に進む。ステップ２５１２に進んだ時点で、所定領域内の残領域における最小閾値がMinTHremとして、所定領域内の白画素位置における最小閾値がMinTHoffとして、境界画素位置における最小閾値がMinTHadjとしてそれぞれ保持されていることになる。一方、所定領域内に未処理の画素があればステップ２５０２に戻り、次の画素を注目画素としてステップ２５０２〜ステップ２５１０の各処理を行なう。
【０２５９】
ステップ２５１２において、閾値書換部２４０２は、所定領域内の注目画素に対応する閾値を取得する。
【０２６０】
ステップ２５１３において、閾値書換部２４０２は、ステップ２５１２で取得した閾値が、境界画素最小閾値（MinTHadj）或いは残領域最小閾値（MinTHrem）と同じであるかどうかを判定する。取得した閾値が、MinTHadj及びMinTHremのいずれかと同じ値である場合は、ステップ２５１４に進む。一方、取得した閾値が、MinTHadj及びMinTHremのいずれとも異なる値である場合は、ステップ２５１５に進む。
【０２６１】
ステップ２５１４において、閾値書換部２４０２は、白画素最小閾値、境界画素最小閾値、残領域最小閾値を比較し、閾値を並び換える処理を行なう。但し、ここでは簡略化のため白画素最小閾値については変更しないものとし、以下の条件に従って、閾値の並び替えを行なうものとする。
【０２６２】
１）「境界画素最小閾値」＜「残領域最小閾値」＜「白画素最小閾値」の時は、注目画素の閾値はそのまま
２）「境界画素最小閾値」＜「白画素最小閾値」＜「残領域最小閾値」の時であって、
・注目画素の閾値が境界画素最小閾値と同じ場合は、注目画素の閾値はそのまま
・注目画素の閾値が残領域最小閾値と同じ場合は、注目画素の閾値を白画素最小閾値で置換    
３）「残領域最小閾値」＜「境界画素最小閾値」＜「白画素最小閾値」の時であって、
・注目画素の閾値が境界画素最小閾値と同じ場合は、注目画素の閾値を残領域最小閾値で置換
・注目画素の閾値が残領域最小閾値と同じ場合は、注目画素の閾値を境界画素最小閾値で置換
４）「残領域最小閾値」＜「白画素最小閾値」＜「境界画素最小閾値」の時であって、
・注目画素の閾値が境界画素最小閾値と同じ場合は、注目画素の閾値を残領域最小閾値で置換
・注目画素の閾値が残領域最小閾値と同じ場合は、注目画素の閾値を白画素最小閾値で置換
５）「白画素最小閾値」＜「境界画素最小閾値」＜「残領域最小閾値」の時であって、
・注目画素の閾値が境界画素最小閾値と同じ場合は、注目画素の閾値を白画素最小閾値で置換
・注目画素の閾値が残領域最小閾値と同じ場合は、注目画素の閾値を境界画素最小閾値で置換
６）「白画素最小閾値」＜「残領域最小閾値」＜「境界画素最小閾値」の時であって、
・注目画素の閾値が境界画素最小閾値と同じ場合は、注目画素の閾値を白画素最小閾値で置換
・注目画素の閾値が残領域最小閾値と同じ場合は、注目画素の閾値はそのまま
図２６は、上記条件に従った閾値の並び換えの流れをフローチャートで表現したものである。
【０２６３】
ステップ２６０１において、閾値書換部２４０２は、境界画素最小閾値（MinTHadj）が、残領域最小閾値（MinTHrem）よりも小さいかどうかを判定する。MinTHadjの値が、MinTHremの値よりも小さい場合は、ステップ２６０２に進む。一方、MinTHadjの値が、MinTHremの値よりも小さくない場合は、ステップ２６１０に進む。
【０２６４】
ステップ２６０２において、閾値書換部２４０２は、残領域最小閾値（MinTHrem）が、白画素最小閾値（MinTHoff）よりも小さいかどうかを判定する。MinTHremの値がMinTHoffの値よりも小さい場合は、閾値の置換処理をすることなく、本処理を抜ける。一方、MinTHremの値がMinTHoffの値よりも小さくない場合は、ステップ２６０３に進む。
【０２６５】
ステップ２６０３において、閾値書換部２４０２は、境界画素最小閾値（MinTHadj）が、白画素最小閾値（MinTHoff）よりも小さいかどうかを判定する。MinTHadjの値が、MinTHoffの値よりも小さい場合は、ステップ２６０４に進む。一方、MinTHadjの値が、MinTHoffの値よりも小さくない場合は、ステップ２６０６に進む。
【０２６６】
ステップ２６０４において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、残領域最小閾値（MinTHrem）と同じであるかどうかを判定する。注目画素の閾値が、MinTHremの値と同じである場合は、ステップ２６０５に進む。一方、注目画素の閾値が、MinTHremの値と同じでない場合は、閾値の置換処理をすることなく、本処理を抜ける。
【０２６７】
ステップ２６０５において、閾値書換部２４０２は、注目画素の閾値を、白画素最小閾値（MinTHoff）の値で置換する。
【０２６８】
ステップ２６０６において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、境界画素最小閾値（MinTHadj）と同じであるかどうかを判定する。注目画素の閾値が、MinTHadjの値と同じである場合は、ステップ２６０７に進む。一方、注目画素の閾値が、MinTHadjの値と同じでない場合は、ステップ２６０８に進む。  
ステップ２６０７において、閾値書換部２４０２は、注目画素の閾値を、白画素最小閾値（MinTHoff）の値で置換する。
【０２６９】
ステップ２６０８において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、残領域最小閾値（MinTHrem）と同じであるかどうかを判定する。注目画素の閾値が、MinTHremの値と同じである場合は、ステップ２６０９に進む。一方、注目画素の閾値が、MinTHremの値と同じでない場合は、閾値の置換処理をすることなく、本処理を抜ける。
【０２７０】
ステップ２６０９において、閾値書換部２４０２は、注目画素の閾値を、境界画素最小閾値（MinTHadj）の値で置換する。
【０２７１】
ステップ２６１０において、閾値書換部２４０２は、残領域最小閾値（MinTHrem）が、白画素最小閾値（MinTHoff）よりも小さいかどうかを判定する。MinTHremの値がMinTHoffの値よりも小さい場合は、ステップ２６１１に進む。一方、MinTHremの値がMinTHoffの値よりも小さくない場合は、ステップ２６２０に進む。
【０２７２】
ステップ２６１１において、閾値書換部２４０２は、境界画素最小閾値（MinTHadj）が、白画素最小閾値（MinTHoff）よりも小さいかどうかを判定する。MinTHadjの値がMinTHoffの値よりも小さい場合は、ステップ２６１２に進む。一方、MinTHadjの値がMinTHoffの値よりも小さくない場合は、ステップ２６１６に進む。
【０２７３】
ステップ２６１２において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、境界画素最小閾値（MinTHadj）と同じであるかどうかを判定する。注目画素の閾値が、MinTHadjの値と同じである場合は、ステップ２６１３に進む。一方、注目画素の閾値が、MinTHadjの値と同じでない場合は、ステップ２６１４に進む。
【０２７４】
ステップ２６１３において、閾値書換部２４０２は、注目画素の閾値を、残領域最小閾値（MinTHrem）の値で置換する。
【０２７５】
ステップ２６１４において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、残領域最小閾値（MinTHrem）と同じであるかどうかを判定する。注目画素の閾値が、MinTHremの値と同じである場合は、ステップ２６１５に進む。一方、注目画素の閾値が、MinTHremの値と同じでない場合は、閾値の置換処理をすることなく、本処理を抜ける。
【０２７６】
ステップ２６１５において、閾値書換部２４０２は、注目画素の閾値を、境界画素最小閾値（MinTHadj）の値で置換する。
【０２７７】
ステップ２６１６において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、境界画素最小閾値（MinTHadj）と同じであるかどうかを判定する。注目画素の閾値が、MinTHadjの値と同じである場合は、ステップ２６１７に進む。一方、注目画素の閾値が、MinTHadjの値と同じでない場合は、ステップ２６１８に進む。
【０２７８】
ステップ２６１７において、閾値書換部２４０２は、注目画素の閾値を、残領域最小閾値（MinTHrem）の値で置換する。
【０２７９】
ステップ２６１８において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、残領域最小閾値（MinTHrem）と同じであるかどうかを判定する。注目画素の閾値が、MinTHremの値と同じである場合は、ステップ２６１９に進む。一方、注目画素の閾値が、MinTHremの値と同じでない場合は、閾値の置換処理をすることなく、本処理を抜ける。
【０２８０】
ステップ２６１９において、閾値書換部２４０２は、注目画素の閾値を、白画素最小閾値（MinTHoff）の値で置換する。
【０２８１】
ステップ２６２０において、閾値書換部２４０２は、ステップ２５１２で取得した注目画素の閾値が、境界画素最小閾値（MinTHadj）と同じであるかどうかを判定する。注目画素の閾値が、MinTHadjの値と同じである場合は、ステップ２６２１に進む。一方、注目画素の閾値が、MinTHadjの値と同じでない場合は、閾値の置換処理をすることなく、本処理を抜ける。
【０２８２】
ステップ２６２１において、閾値書換部２４０２は、注目画素の閾値を、白画素最小閾値（MinTHoff）の値で置換する。
【０２８３】
以上が、本実施例における閾値並び替え処理の内容である。
【０２８４】
図２５のフローチャートの説明に戻る。
【０２８５】
ステップ２５１５では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。未処理の画素がある場合は、ステップ２５１２に戻り、次の画素を注目画素としてステップ２５１２〜ステップ２５１４の処理を繰り返す。一方、すべての画素に対して処理が終了していた場合は、本処理を終える。
【０２８６】
以上が、本実施例に係る画像処理装置で実行される処理のうち、残領域最小閾値抽出処理、白画素最小閾値抽出処理、境界画素最小閾値抽出処理、及び閾値置換処理の内容である。
【０２８７】
本実施例によれば、境界画素から順にドットが生成されるようになり、境界画素領域の鮮鋭性が向上する。
【実施例１４】
【０２８８】
これまでに述べた各実施例では、スクリーン処理の閾値の繰り返し単位である、閾値マトリクスのサイズよりも所定領域のサイズが小さいことを前提として説明を行なった。しかし、例えば、図２７に示すように、太枠で示す所定領域２７０１（４ｘ４の所定領域）に対して、細枠で示す閾値マトリクス２７０２（閾値ａ〜ｉを有する３ｘ３の閾値マトリクス）が小さい場合、所定領域２７０１内にｃ〜ｇの閾値が複数存在することになる。この場合、これまでに説明してきた各実施例では、閾値の書換が複数回行われることになり、量子化後の結果が濃くなり過ぎてしまうという問題が起こり得る。
【０２８９】
そこで、例えば、前述の実施例１０の場合であれば、閾値書換部１７０４で、閾値の書換を行ったかどうかを示すフラグを、所定領域内の各閾値に設定するようにする。そして、所定領域の処理の先頭でフラグをリセットし、１回目の書換を行ったときにフラグを立てて（例えば、フラグ値として「１」を設定して）、以降の処理ではフラグが立っている場合に書換を禁止するようにすればよい。
【０２９０】
同様に、例えば、前述の実施例１２の場合であれば、閾値書換部２２０１で、境界画素最小閾値を全画素最小閾値に書き換えたかどうか、全画素最小閾値を境界画素最小閾値に書き換えたかどうかを示すフラグを、所定領域内の各閾値にそれぞれ設定するようにする。そして、所定領域の処理の先頭でフラグをリセットし、１回目の置換を行ったときにフラグを立てて（例えば、フラグ値として「１」を設定して）、以降の処理ではフラグが立っている場合に置換を禁止するようにすればよい。
【０２９１】
同様に、例えば、前述の実施例１３の場合であれば、閾値書換部２４０２で、境界画素最小閾値、残領域最小閾値、白画素最小閾値の書換を行ったかどうかを示すフラグを、所定領域内の各閾値に設定するようにする。そして、所定領域の処理の先頭でフラグをリセットし、１回目の書換を行ったときにフラグを立てて（例えば、フラグ値として「１」を設定して）、以降の処理ではフラグが立っている場合に書換を禁止するようにすればよい。
【０２９２】
以上のような処理を行なうことにより、同一閾値に対する書換が所定領域内で複数回起こらないようにして、量子化後の結果が濃くなり過ぎることを防止できる。
【実施例１５】
【０２９３】
前述したように、入力画像データにおける階調変化が少ない平坦部では、均等な間隔で同一形状の網点を形成する方が良好な画像が得られる。そして、実施例１では、所定領域内の白画素の最小閾値が、ドットが形成される確率が高い閾値であった場合に、非白画素の最小閾値を、白画素の最小閾値と同じ値に書き換えている。その結果、所定領域毎に形成されるドット数が変化する可能性があるが、実施例１では、所定領域内に白画素がなければ閾値書換が発生しないため、白画素を含まない平坦部に関してはドット数が変化することなく、均等な間隔で同一形状の網点を形成することができる。
【０２９４】
しかしながら、たとえ階調変化が少ない平坦部（例えば雲のような自然画）であっても、所定領域内に白画素が存在する場合、所定領域毎に形成されるドットが１ドット増加する可能性があるため、均等な間隔で同一形状の網点を形成することができない。
【０２９５】
そこで、階調変化が少なく、所定領域内に白画素が存在する入力画像データであっても、良好な画像を得ながら、濃度変動の抑制と細線の再現性向上を実現する態様について、実施例１５として説明する。なお、実施例１と共通する部分（変形例も含む）については、説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０２９６】
図２８は、本実施例に係る、ハーフトーン処理を実現する画像処理装置の内部構成を示す機能ブロック図である。画素値／閾値取得部１０１、白画素判定部１０２、白画素最小閾値抽出部１０３、非白画素最小閾値抽出部１０４、量子化部１０６は、実施例１と同じであるので説明を省略する。
【０２９７】
非白画素画素値判定部２８０１は、画素値／閾値取得部１０１から受け取った画素値と白画素判定部１０２から受け取った白画素情報に基づいて、所定領域内の非白画素の画素値が全て同じ値であるか、異なる値であるかを判定する。判定の結果は、非白画素画素値情報（本実施例では、所定領域内の非白画素の画素値が全て同じ値であった場合に「１」、全て同じ値ではなかった場合に「０」で表される１ｂｉｔの情報）として、閾値書換部２８０２に送られる。
【０２９８】
閾値書換部２８０２は、入力画像の所定領域に対応する閾値マトリクスについて、非白画素最小閾値を白画素最小閾値に置き換える処理を、非白画素画素値判定部２８０１から入力された非白画素画素値情報に基づいて行なう。具体的には、白画素最小閾値と非白画素最小閾値とを比較し、白画素最小閾値の方が小さい値（ドットが形成される確率が高い閾値）であって、所定領域内の非白画素の画素値が全て同じであった場合にのみ、非白画素最小閾値を白画素最小閾値に置き換える。そうすることで、非白画素の画素値が全て同じ値でない所定領域では閾値の書換が起こらず、白画素を含む階調変化が少ない平坦部においても、均等な間隔で同一形状の網点が形成され、良好な画像が得られる。
【０２９９】
図２９は、本実施例に係る画像処理装置で実行される処理のうち、白画素最小閾値抽出処理、非白画素最小閾値抽出処理、非白画素画素値判定処理、及び閾値書換処理についての詳細を示すフローチャートである。なお、この一連の処理は、回路もしくは以下に示す手順を記述したコンピュータ実行可能なプログラムを、ＲＯＭ等からＲＡＭ上に読み込んだ後、ＣＰＵによって該プログラムを実行することによって実施される。
【０３００】
ステップ２９０１において、白画素最小閾値抽出部１０３は、白画素位置の最小閾値を保持する変数である白画素最小閾値（MinTHoff）を初期化する。同様に、非白画素最小閾値抽出部１０４は、非白画素位置の最小閾値を保持する変数である非白画素最小閾値（MinTHon）を初期化する。
【０３０１】
ステップ２９０２において、非白画素画素値判定部２８０１は、所定領域の非白画素画素値情報を、非白画素の画素値が全て同じ値であることを示す状態（本実施例では「１」）に初期化する。また、非白画素画素値判定部２８０１は、所定領域内の非白画素の画素値を保持する変数である非白画素値を、白画素値（本実施例では「０」）に初期化する。
【０３０２】
ステップ２９０３において、白画素最小閾値抽出部１０３及び非白画素最小閾値抽出部１０４は、所定領域内の注目画素についての白画素情報、及び当該注目画素に対応する閾値を取得する。また、非白画素画素値判定部２８０１は、所定領域内の注目画素についての白画素情報、及び当該注目画素の画素値を取得する。
【０３０３】
ステップ２９０４では、ステップ２９０３で取得した白画素情報に基づいて、注目画素が白画素であるかどうかが判定される。判定の結果、白画素である場合は、ステップ２９０５に進む。一方、白画素でない場合（非白画素である場合）は、ステップ２９０７及びステップ２９０９に進む。なお、ここでは白画素判定部１０２の判定結果である白画素情報に基づいて注目画素が白画素であるかどうかを判定しているが、注目画素の画素値から直接に白画素であるかどうかを判定してもよい。
【０３０４】
ステップ２９０５において、白画素最小閾値抽出部１０３は、現時点の白画素最小閾値（MinTHoff）とステップ２９０３で取得した注目画素の閾値とを比較する。比較の結果、MinTHoffの値が注目画素の閾値より大きい場合は、ステップ２９０６に進む。一方、MinTHoffの値が注目画素の閾値より大きくない場合は、ステップ２９１４に進む。
【０３０５】
ステップ２９０６において、白画素最小閾値抽出部１０３は、MinTHoffの値を、ステップ２９０３で取得した閾値に更新する。
【０３０６】
ステップ２９０７において、非白画素最小閾値抽出部１０４は、非白画素最小閾値（MinTHon）とステップ２９０３で取得した注目画素の閾値とを比較する。比較の結果、MinTHonの値が注目画素の閾値より大きい場合は、ステップ２９０８に進む。一方、MinTHonの値が注目画素の閾値より大きくない場合は、ステップ２９１４に進む。
【０３０７】
ステップ２９０８において、非白画素最小閾値抽出部１０４は、MinTHonの値を、ステップ２９０３で取得した閾値に更新する。
【０３０８】
ステップ２９０９において、非白画素画素値判定部２８０１は、現時点の非白画素画素値情報が、非白画素の画素値が全て同じ値であることを示す状態かどうかを判定する。判定の結果、全て同じ値であることを示す状態であった場合（すなわち「１」）は、ステップ２９１０に進む。一方、全て同じ値であることを示す状態ではない場合（すなわち「０」）は、ステップ２９１４に進む。
【０３０９】
ステップ２９１０において、非白画素画素値判定部２８０１は、現時点の非白画素値が、白画素値（本実施例では「０」）かどうかを判定する。判定の結果、白画素値であった場合は、ステップ２９１３に進む。一方、白画素値でない場合は、ステップ２９１１に進む。
【０３１０】
ステップ２９１１において、非白画素画素値判定部２８０１は、ステップ２９０３で取得した注目画素の画素値と現時点の非白画素値とを比較する。両者が同じ値であった場合は、現時点の非白画素画素値情報を維持したままステップ２９１４に進む。一方、両者が同じ値でなかった場合は、ステップ２９１２に進む。
【０３１１】
ステップ２９１２において、非白画素画素値判定部２８０１は、非白画素画素値情報を、非白画素の画素値が全て同じないことを示す状態（すなわち「０」）に設定する。
【０３１２】
ステップ２９１３では、ステップ２９０３で取得した注目画素の画素値で、非白画素値が置き換えられる。
【０３１３】
ステップ２９１４では、所定領域内のすべての画素に対して処理が終了したかどうかが判定される。すべての画素に対して処理が終了していた場合は、ステップ２９１５に進む。ステップ２９１５に進んだ時点で、所定領域内の白画素位置における最小閾値がMinTHoffとして保持され、非白画素位置における最小閾値がMinTHonとして保持されていることになる。一方、所定領域内に未処理の画素があればステップ２９０３に戻り、次の画素を注目画素としてステップ２９０３〜ステップ２９１３の各処理を行なう。
【０３１４】
ステップ２９１５において、閾値書換部２８０２は、所定領域内の非白画素の画素値が全て同じであるかどうかを非白画素画素値情報に基づいて判定する。所定領域内の非白画素の画素値が全て同じであった場合は、ステップ２９１６に進む。一方、所定領域内の非白画素の画素値が全て同じではない場合は、閾値置換を実施せずに処理を終える。
【０３１５】
ステップ２９１６〜ステップ２９２０は、実施例１におけるステップ３０９〜ステップ３１３にそれぞれ対応し、異なるところはないので説明を省略する。
【０３１６】
以上が、本実施例における、白画素最小閾値抽出処理、非白画素最小閾値抽出処理、非白画素画素値判定処理、及び閾値書換処理の内容である。これにより、所定領域内の非白画素の画素値が全て同じ値である場合にのみ、量子化に使用する閾値マトリクスの非白画素に対応する閾値の最小閾値が、ドットが形成される確率が高い閾値へと、所定領域毎に書き換えられる。
【０３１７】
なお、実施例１の変形例に関しても、非白画素画素値情報並びに非白画素値に関する各処理を追加することで同様に実現可能である。
【０３１８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0006324239.tif 000002
【図２】
0006324239.tif 000003
【図３Ａ】
0006324239.tif 000004
【図３Ｂ】
0006324239.tif 000005
【図３Ｃ】
0006324239.tif 000006
【図４】
0006324239.tif 000007
【図５Ａ】
0006324239.tif 000008
【図５Ｂ】
0006324239.tif 000009
【図６】
0006324239.tif 000010
【図７】
0006324239.tif 000011
【図８Ａ】
0006324239.tif 000012
【図８Ｂ】
0006324239.tif 000013
【図８Ｃ】
0006324239.tif 000014
【図９】
0006324239.tif 000015
【図１０】
0006324239.tif 000016
【図１１】
0006324239.tif 000017
【図１２】
0006324239.tif 000018
【図１３】
0006324239.tif 000019
【図１４】
0006324239.tif 000020
【図１５】
0006324239.tif 000021
【図１６】
0006324239.tif 000022
【図１７】
0006324239.tif 000023
【図１８】
0006324239.tif 000024
【図１９】
0006324239.tif 000025
【図２０】
0006324239.tif 000026
【図２１】
0006324239.tif 000027
【図２２】
0006324239.tif 000028
【図２３】
0006324239.tif 000029
【図２４】
0006324239.tif 000030
【図２５】
0006324239.tif 000031
【図２６】
0006324239.tif 000032
【図２７】
0006324239.tif 000033
【図２８】
0006324239.tif 000034
【図２９】
0006324239.tif 000035