(57)【特許請求の範囲】
【請求項１】
入力された画像データのアンチエイリアスを行う画像処理装置であって、
前記画像データの各画素を中心とする所定サイズの観察窓を、画素ごとに設定する観察窓設定部と、
アンチエイリアスの対象とする異なる複数のエッジの有無のパターンをそれぞれ示す複数のテンプレートに基づいて、前記観察窓内の各画素のうち、エッジの有無を判定する２つの画素の組合せを複数特定し、特定した組合せごとに、２つの画素の入力画素値の差分により２つの画素間のエッジの有無を判定するエッジ判定部と、
前記エッジ判定部により判定されたエッジの有無のパターンを、前記複数のテンプレートのそれぞれが示すエッジの有無のパターンと照合し、各パターンが一致する１つのテンプレートを選択するテンプレートマッチング部と、
前記テンプレートマッチング部により選択された１つのテンプレートに基づいて、前記観察窓の中心画素の複数の隣接画素のなかから１つの隣接画素と重み付け量を特定し、前記中心画素と特定した隣接画素の各入力画素値を、特定した重み付け量により重み付け加算し、前記中心画素の出力画素値を得る画素値算出部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記テンプレートマッチング部は、各テンプレートがエッジの有無を示すすべての画素間のうち一部の画素間のエッジの有無のパターンが、前記エッジ判定部により判定されたエッジの有無のパターンと一致するか否かを判定することにより、前記１つのテンプレートを選択することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記エッジ判定部によって得られた判定結果を記憶する記憶部を備え、
前記テンプレートマッチング部は、前記エッジの有無のパターンの照合を、前記記憶部に記憶された、観察窓内の中心画素の位置が１画素前の観察窓のエッジの有無の判定結果を流用して行うことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記テンプレートマッチング部は、前記エッジ判定部により判定されたエッジの有無のパターンと一致する複数のテンプレートがある場合、当該一致する複数のテンプレートのうち、照合するエッジの有無の数が最も多い１つのテンプレートを選択することを特徴とする請求項１〜３のいずれか一項に記載の画像処理装置。
【請求項５】
入力された画像データのアンチエイリアスを行う画像処理方法であって、
前記画像データの各画素を中心とする所定サイズの観察窓を、画素ごとに設定する観察窓設定ステップと、
アンチエイリアスの対象とする異なる複数のエッジの有無のパターンをそれぞれ示す複数のテンプレートに基づいて、前記観察窓内の各画素のうち、エッジの有無を判定する２つの画素の組合せを複数特定し、特定した組合せごとに、２つの画素の入力画素値の差分により２つの画素間のエッジの有無を判定するエッジ判定ステップと、
前記エッジ判定ステップにおいて判定されたエッジの有無のパターンを、前記複数のテンプレートのそれぞれが示すエッジの有無のパターンと照合し、各パターンが一致する１つのテンプレートを選択するテンプレートマッチングステップと、
前記テンプレートマッチングステップにおいて選択された１つのテンプレートに基づいて、前記観察窓の中心画素の複数の隣接画素のなかから１つの隣接画素と重み付け量を特定し、前記中心画素と特定した隣接画素の各入力画素値を、特定した重み付け量により重み付け加算し、前記中心画素の出力画素値を得る画素値算出ステップと、
を含むことを特徴とする画像処理方法。
【請求項６】
前記テンプレートマッチングステップにおいて、各テンプレートがエッジの有無を示すすべての画素間のうち一部の画素間のエッジの有無のパターンが、前記エッジ判定ステップにおいて判定されたエッジの有無のパターンと一致するか否かを判定することにより、前記１つのテンプレートを選択することを特徴とする請求項５に記載の画像処理方法。
【請求項７】
前記エッジ判定ステップにおいて得られた判定結果を記憶部に記憶する記憶ステップをさらに含み、
前記テンプレートマッチングステップにおいて、前記エッジの有無のパターンの照合を、前記記憶部に記憶された、観察窓内の中心画素の位置が１画素前の観察窓のエッジの有無の判定結果を流用して行うことを特徴とする請求項５又は６に記載の画像処理方法。
【請求項８】
前記テンプレートマッチングステップにおいて、前記エッジ判定ステップにおいて判定されたエッジの有無のパターンと一致する複数のテンプレートがある場合、当該一致する複数のテンプレートのうち、照合するエッジの有無の数が最も多い１つのテンプレートを選択することを特徴とする請求項５〜７のいずれか一項に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
従来、モニタやプリンタ等によって表示／印刷された文字やマークなど、点及び線の集合により形成される画像（線画）において、異なる色が隣接する境界に階段状のギザギザ（ジャギー）が生じ、画質を低下させることがあった。ジャギーは線画を構成する画素の細かさが十分でないときに起こりやすいので、擬似的に解像度を向上させる技術が考案されてきた。このような技術は、アンチエイリアスあるいはスムージングと呼ばれている。
【０００３】
このような技術において、例えば、画像の解像度を縦横それぞれ３倍に拡大し、注目画素を含む３×３画素の観察窓内においてドットのＯＮ／ＯＦＦの位置的な関係における条件判断を用いてジャギーを判定し、あらかじめ用意された複数の特定の条件に合致した際には、３×３画素に分割された注目画素の画素値を、合致した条件に応じて変更するようにしたものがある（例えば、特許文献１）。
【０００４】
また、観察窓内におけるドットのＯＮ／ＯＦＦをテンプレートと呼ばれる特定のパターンに合致するか否かを判定することでジャギーを判定し、解像度はそのままで、中間調を出力することにより、擬似的に解像度を上げるものもある（例えば、特許文献２）。しかしながら、この技術は、入力画素がＯＮ／ＯＦＦの２値的な情報からなっていることが原則となっており、中間調が含まれる多値画像を適用することはデータ処理が複雑となるため、困難なものであった。
【０００５】
これに対し、入力される多値画像をスムージング処理するために、これまでの２値パターンによるジャギー検出ではなく、多値データにて構成されるジャギー検出を行うようにしたものがある（例えば、特許文献３）。この技術によれば、中間調の値を持った文字や線画に対してもスムージング処理を行うことが可能である。しかしながら、このような方法では、適切にジャギー検出を行うためには、検出パターンの数が階調数分必要となるため、回路規模及び処理コストが膨大になるといった問題が生じている。
【０００６】
これに対し、写真等の中間調背景の上に印字されたカラー中間調文字あるいは中間調線画にスムージング処理を施すものがある（例えば、特許文献４）。これは、多値データを２値化した後、パターンマッチングによりジャギーを検出する一方、属性信号が示す文字及び線画を含む領域のみに対してスムージングを実施し、ジャギーの近傍画素から背景となる画素濃度を求め、文字及び背景の濃度に基づいて出力画素値を求めるものである。
２値化には、閾値を用いて２値化するもののほか、エッジ検出オペレータを用いて画像のエッジを検出し、そのエッジの強度をある閾値で２値化するものが記載されている。このエッジを検出する手段としては、Ｓｏｂｅｌ、ラプラシアン等、既存の微分オペレータが用いられている。そして、閾値を超えるエッジ強度を持つ画素をエッジ画素と判断し、エッジ画素の画素値を２５５に、非エッジ画素の画素値を０に変換して２値化する。そして、２値化されたエッジ情報に対して、テンプレートデータによるパターンマッチングを行う。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第４４３７１２２号公報
【特許文献２】米国特許第４８４７６４１号公報
【特許文献３】特開平６−１３９３５０号公報
【特許文献４】特開２０００−１５６７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来、一般的に用いられるエッジオペレータは注目画素と隣接画素との差分、あるいは、隣接画素同士の差分を全方向に対して行い、この処理を所定サイズの画素ブロック内における各画素について行うため、上記特許文献４に記載の技術では、エッジ情報を求めるための演算量が多く、処理負荷が大きいという問題が生じる。
【０００９】
本発明の課題は、処理負荷を軽減してアンチエイリアスを行うことができる画像処理装置及び画像処理方法を提供することである。
【課題を解決するための手段】
【００１０】
以上の課題を解決するため、請求項１に記載の発明は、入力された画像データのアンチエイリアスを行う画像処理装置であって、
前記画像データの各画素を中心とする所定サイズの観察窓を、画素ごとに設定する観察窓設定部と、
アンチエイリアスの対象とする異なる複数のエッジの有無のパターンをそれぞれ示す複数のテンプレートに基づいて、前記観察窓内の各画素のうち、エッジの有無を判定する２つの画素の組合せを複数特定し、特定した組合せごとに、２つの画素の入力画素値の差分により２つの画素間のエッジの有無を判定するエッジ判定部と、
前記エッジ判定部により判定されたエッジの有無のパターンを、前記複数のテンプレートのそれぞれが示すエッジの有無のパターンと照合し、各パターンが一致する１つのテンプレートを選択するテンプレートマッチング部と、
前記テンプレートマッチング部により選択された１つのテンプレートに基づいて、前記観察窓の中心画素の複数の隣接画素のなかから１つの隣接画素と重み付け量を特定し、前記中心画素と特定した隣接画素の各入力画素値を、特定した重み付け量により重み付け加算し、前記中心画素の出力画素値を得る画素値算出部と、
を備えることを特徴とする。
【００１１】
請求項２に記載の発明は、請求項１に記載の画像処理装置において、
前記テンプレートマッチング部は、各テンプレートがエッジの有無を示すすべての画素間のうち一部の画素間のエッジの有無のパターンが、前記エッジ判定部により判定されたエッジの有無のパターンと一致するか否かを判定することにより、前記１つのテンプレートを選択することを特徴とする。
【００１２】
請求項３に記載の発明は、請求項１又は２に記載の画像処理装置において、
前記エッジ判定部によって得られた判定結果を記憶する記憶部を備え、
前記テンプレートマッチング部は、前記エッジの有無のパターンの照合を、前記記憶部に記憶された、観察窓内の中心画素の位置が１画素前の観察窓のエッジの有無の判定結果を流用して行うことを特徴とする。
請求項４に記載の発明は、請求項１〜３のいずれか一項に記載の画像処理装置において、
前記テンプレートマッチング部は、前記エッジ判定部により判定されたエッジの有無のパターンと一致する複数のテンプレートがある場合、当該一致する複数のテンプレートのうち、照合するエッジの有無の数が最も多い１つのテンプレートを選択することを特徴とする。
【００１３】
請求項５に記載の発明は、入力された画像データのアンチエイリアスを行う画像処理方法であって、
前記画像データの各画素を中心とする所定サイズの観察窓を、画素ごとに設定する観察窓設定ステップと、
アンチエイリアスの対象とする異なる複数のエッジの有無のパターンをそれぞれ示す複数のテンプレートに基づいて、前記観察窓内の各画素のうち、エッジの有無を判定する２つの画素の組合せを複数特定し、特定した組合せごとに、２つの画素の入力画素値の差分により２つの画素間のエッジの有無を判定するエッジ判定ステップと、
前記エッジ判定ステップにおいて判定されたエッジの有無のパターンを、前記複数のテンプレートのそれぞれが示すエッジの有無のパターンと照合し、各パターンが一致する１つのテンプレートを選択するテンプレートマッチングステップと、
前記テンプレートマッチングステップにおいて選択された１つのテンプレートに基づいて、前記観察窓の中心画素の複数の隣接画素のなかから１つの隣接画素と重み付け量を特定し、前記中心画素と特定した隣接画素の各入力画素値を、特定した重み付け量により重み付け加算し、前記中心画素の出力画素値を得る画素値算出ステップと、
を含むことを特徴とする。
【００１４】
請求項６に記載の発明は、請求項５に記載の画像処理方法において、
前記テンプレートマッチングステップにおいて、各テンプレートがエッジの有無を示すすべての画素間のうち一部の画素間のエッジの有無のパターンが、前記エッジ判定ステップにおいて判定されたエッジの有無のパターンと一致するか否かを判定することにより、前記１つのテンプレートを選択することを特徴とする。
【００１５】
請求項７に記載の発明は、請求項５又は６に記載の画像処理方法において、
前記エッジ判定ステップにおいて得られた判定結果を記憶部に記憶する記憶ステップをさらに含み、
前記テンプレートマッチングステップにおいて、前記エッジの有無のパターンの照合を、前記記憶部に記憶された、観察窓内の中心画素の位置が１画素前の観察窓のエッジの有無の判定結果を流用して行うことを特徴とする。
請求項８に記載の発明は、請求項５〜７のいずれか一項に記載の画像処理方法において、
前記テンプレートマッチングステップにおいて、前記エッジ判定ステップにおいて判定されたエッジの有無のパターンと一致する複数のテンプレートがある場合、当該一致する複数のテンプレートのうち、照合するエッジの有無の数が最も多い１つのテンプレートを選択することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、処理負荷を軽減してアンチエイリアスを行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態に係るＭＦＰの機能的構成を示す図である。
【図２】画像処理部の機能的構成を示す図である。
【図３】観察窓について説明する図である。
【図４】エッジ判定の対象について説明する図である。
【図５】テンプレートについて概念的に説明する図である。
【図６】アンチエイリアス処理について説明するフローチャートである。
【図７】エッジ判定処理について説明するフローチャートである。
【図８】出力値変換処理の概要について説明する図である。
【図９】処理Ａについて説明するフローチャートである。
【図１０】処理Ｂについて説明するフローチャートである。
【図１１】処理Ｃについて説明するフローチャートである。
【図１２】処理Ｄについて説明するフローチャートである。
【図１３】処理Ｅについて説明するフローチャートである。
【図１４】処理Ｆについて説明するフローチャートである。
【図１５】処理Ｇについて説明するフローチャートである。
【図１６】処理Ｈについて説明するフローチャートである。
【図１７】処理Ｉについて説明するフローチャートである。
【図１８】処理Ｊについて説明するフローチャートである。
【図１９】処理Ｋについて説明するフローチャートである。
【図２０】処理Ｌについて説明するフローチャートである。
【図２１】テンプレートデータを最終的に選択するための処理について説明するフローチャートである。
【図２２】テンプレートデータを最終的に選択するための処理について説明するフローチャートである。
【図２３】出力画素値を算出する処理について説明するフローチャートである。
【図２４】本実施の形態におけるアンチエイリアス処理の結果を説明する図である。
【図２５】本実施の形態におけるアンチエイリアス処理の結果を説明する図である。
【図２６】出力値変換処理の他の例の概要について説明する図である。
【図２７】処理Ｍについて説明するフローチャートである。
【図２８】処理Ｏについて説明するフローチャートである。
【図２９】処理Ｐについて説明するフローチャートである。
【図３０】処理Ｑについて説明するフローチャートである。
【図３１】処理Ｒについて説明するフローチャートである。
【図３２】処理Ｓについて説明するフローチャートである。
【図３３】テンプレートデータを最終的に選択するための処理の他の例について説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態に係るＭＦＰ（Multi Function Peripheral）について、図面を参照して説明する。ただし、発明の範囲は図示例に限定されない。ここで、ＭＦＰは、複写機能、印刷機能等の複数の機能を備えた複合型の画像形成装置である。なお、以下の説明において、同一の機能及び構成を有するものについては、同一の符号を付し、その説明を省略する。
【００１９】
ＭＦＰ１００は、図１に示すように、外部ＰＣ（Personal Computer）２００と接続されており、当該外部ＰＣ２００から送信されたＰＤＬ（Page Description Language）形式のデータから画像データを生成して画像処理した後、印刷を行うことができる。
【００２０】
ＭＦＰ１００は、図１に示すように、例えば、コントローラ２０、画像処理部１０、制御部１１、読取部１２、操作部１３、表示部１４、記憶部１５、画像メモリ１６、印刷装置１７を備えて構成されている。
【００２１】
コントローラ２０は、ラスタライズ処理により画素毎の画像データを生成する。
例えば、外部ＰＣ２００において作成されたドキュメントのデータは、プリンタドライバソフトによってＰＤＬ形式に変換され、コントローラ２０に送信される。コントローラ２０は、ラスタライズ処理によって、送信されたＰＤＬデータに含まれるＰＤＬコマンドを解析し、描画すべき画像単位毎に画素を割り当て、この割り当てた画素毎に画素値を設定した画像のデータを生成する。なお、描画すべき画像単位をオブジェクトということがある。画像はＣ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（黒）の色毎に生成される。
なお、本実施形態では、コントローラ２０がＭＦＰ１００に内蔵される構成としたが、コントローラ２０がＭＦＰ１００の外部に設けられる構成であってもよい。
【００２２】
制御部１１は、ＣＰＵ（Central Processing Unit）１１ａ、ＲＡＭ（Random Access Memory）１１ｂ等を備えて構成されている。制御部１１は、記憶部１５に記憶されている各種処理プログラムとの協働により、所定の演算を行ったり、画像処理部１０における画像処理を制御するなど、各種処理を実行してＭＦＰ１００の各部を集中制御する。
【００２３】
読取部１２は、光学系やＣＣＤ（Charge Coupled Device）を有するスキャナを備え、原稿を光走査して画像信号（アナログ信号）を生成する。生成された画像信号は、図示しない処理部において各種補正処理が施された後、デジタル変換されて画像処理部１０に出力される。
【００２４】
操作部１３は、オペレータの操作指示を入力するためのものであり、各種キーや表示部１４と一体に構成されるタッチパネル等を備えて構成されている。操作部１３は、操作に応じた操作信号を生成して制御部１１に出力する。
表示部１４は、制御部１１の制御に従ってディスプレイ上に操作画面等を表示する。
記憶部１５は、各種処理プログラムの他、処理に必要なパラメータや設定データ等を記憶している。記憶部１５としては、ハードディスク等の不揮発性メモリを用いることができる。
画像メモリ１６は画像のデータを記憶するためのメモリである。画像メモリ１６としては、ＤＲＡＭ（Dynamic RAM）、ハードディスク等を用いることができる。
【００２５】
印刷装置１７は、画像処理部１０から入力される印刷用の画像に基づいて印刷を行う。印刷用の画像とは、コントローラ２０によって生成された画像に対して、画像処理部１０による画像処理を施すことにより生成されたものである。
印刷装置１７は、電子写真方式による印刷を行い、例えば給紙部、露光部、現像部、定着部等を含んで構成されている。印刷時には、画像のデータに基づいて露光部が感光ドラム上にレーザ光を照射して静電潜像を形成する。静電潜像は現像部により現像され、感光ドラム上にトナー像が形成される。トナー像の形成はＣ、Ｍ、Ｙ、Ｋの各色の画像について行われ、各色のトナー像は中間転写ベルト上に重ねて転写されてカラー像となる。カラー像は転写ローラ等によって給紙部から給紙された用紙上に転写され、定着部により定着処理が施される。
【００２６】
画像処理部１０は、コントローラ２０から入力される画像データや、読取部１２から入力される画像データに画像処理を施す。画像処理は、例えば、拡大縮小処理、解像度変換処理、階調補正処理及びスクリーン処理等である。また、画像処理部１０は、読取部１２から入力された画像データについてＲＧＢをＹＭＣＫの色に変換する色変換処理を行う。画像処理部１０は、上述したような画像処理を実施して印刷用の画像データを生成する。本実施の形態では、画像処理部１０は、入力された画像データにおける所定の画素とこれに隣接する画素とで階調の平滑化を行うアンチエイリアス処理を行う。
【００２７】
図２は、画像処理部１０のうち、アンチエイリアス処理を行う際に主に機能する構成部分を示している。画像処理部１０は、図２に示すように、例えば、画像データ入力部１０１、観察窓設定部１０２、エッジ判定部１０３、テンプレートマッチング部１０４及び画素値算出部１０５を備えている。本実施の形態では、図２に示す構成において、１画素×８bitからなる１２００dpiの入力画像データを処理対象としてアンチエイリアス処理を行う。図２に示される構成において実行されるアンチエイリアス処理は、ＣＭＹＫの各色について行われものとする。なお、アンチエイリアス処理を、ＣＭＹＫの各色について行わず、一部の色のみについて実施するようにしてもよい。
【００２８】
画像データ入力部１０１は、コントローラ２０及び読取部１２から出力される画像データを入力し、所定のバッファにこれを保持する。このとき、画像データ入力部１０１は、上述した各種画像処理を行った後、画像データ入力部１０１に入力するようにしてもよい。
【００２９】
観察窓設定部１０２は、画像データ入力部１０１に入力された画像データのうち、あらかじめ設定された観察窓Ｗの範囲に含まれる画像データを設定する。
この観察窓Ｗは、例えば、図３に示すように、縦×横：７×７画素のマトリクス状に構成されている。この観察窓Ｗは、中央（図中、「２５」の位置）に注目画素Ｐ１が設定され、注目画素Ｐ１の周辺（図中、「２５」を除く「０１」〜「４９」の各位置）に周辺画素Ｐ２が設定されている。そして、周辺画素Ｐ２のうちの注目画素Ｐ１の上下左右の位置にそれぞれ隣接する画素は、隣接画素Ｐ３１〜Ｐ３４として設定されている。なお、観察窓は、本実施の形態に示される形態に限らず、形状やサイズ等適宜設定することができる。
観察窓設定部１０２は、後述するアンチエイリアスの対象とする画素が注目画素Ｐ１となるようにして、上述のように構成された観察窓Ｗの範囲に含まれる画像データを設定する。なお、観察窓設定部１０２は、例えば、入力された画像データの全画素について注目画素Ｐ１が順次設定されるように、画像の左上隅部から右下隅部に向けて観察窓Ｗの範囲を、設定を行う毎に順次移行させる。
そして、観察窓設定部１０２は、観察窓Ｗによって設定された範囲の画像データについて、１×７画素毎に所定のラインメモリに保持する。観察窓設定部１０２は、このようにして保持された画像データをライン毎にエッジ判定部１０３に出力する。
【００３０】
エッジ判定部１０３は、観察窓設定部１０２から出力された画像データを入力し、エッジ判定処理を行う。具体的には、エッジ判定部１０３は、入力した７×７画素の画像データのうち、所定の隣接する２つの画素を抽出し、これらの画素値の差分を求め、この差分が予め設定された閾値以上であるか否かを判定し、これをフラグ化することによってエッジ判定を行う。ここで設定される閾値は、画像の階調等の条件に応じて適宜変更することができる。また、画素値の差分を求める際、中間調に対応できるようにするため、画素値については２値化などの量子化を行わず、０〜２５５の値をそのまま適用する。また、エッジ判定を行う対象となる画素の組み合わせは、例えば、図４に示すように、各線にて結ばれた２つの画素の組合せの全てである。すなわち、「０３」と「１０」、「０４」と「１１」、「０５」と「１２」、「１０」と「１７」、「１０」と「１８」、「１１」と「１７」、「１１」と「１８」、「１１」と「１９」、「１２」と「１８」、「１２」と「１９」、「１５」と「１６」、「１６」と「１７」、「１６」と「２４」、「１７」と「１８」、「１７」と「２３」、「１７」と「２４」、「１８」と「１９」、「１８」と「２４」、「１８」と「２５」、「１８」と「２６」、「１９」と「２０」、「１９」と「２６」、「１９」と「２７」、「２０」と「２１」、「２０」と「２６」、「２２」と「２３」、「２３」と「２４」、「２３」と「３１」、「２４」と「２５」、「２４」と「３０」、「２４」と「３１」、「２４」と「３２」、「２５」と「２６」、「２５」と「３２」、「２６」と「２７」、「２６」と「３２」、「２６」と「３３」、「２６」と「３４」、「２７」と「２８」、「２７」と「３３」、「２９」と「３０」、「３０」と「３１」、「３１」と「３２」、「３１」と「３８」、「３１」と「３９」、「３２」と「３３」、「３２」と「３８」、「３２」と「３９」、「３２」と「４０」、「３３」と「３４」、「３３」と「３９」、「３３」と「４０」、「３４」と「３５」、「３８」と「４５」、「３９」と「４６」及び「４０」と「４７」の合計５６の画素の組合せがエッジ判定の対象となる。なお、図４中、パターンにて示された画素は、エッジ判定の対象となる画素を示している。
エッジ判定部１０３は、このようにして得られた各組合せのエッジ判定の結果をテンプレートマッチング部１０４に出力する。
【００３１】
テンプレートマッチング部１０４は、テンプレート判定部１０４ａとテンプレート選択部１０４ｂとを含んでおり、エッジ判定部１０３から出力されたエッジ判定の結果に基づいて、対応するテンプレートの選択を行い、その選択結果を画素値算出部１０５に出力する。具体的には、テンプレート判定部１０４ａは、入力したエッジ判定結果に基づいて、複数種類のテンプレートの絞り込みを行う。具体的なテンプレートの絞り込みの手法については後述する。そして、テンプレート選択部１０４ｂは、テンプレート判定部１０４ａによるテンプレートの絞り込みを行った結果、最終的に合致するテンプレートを特定し、そのテンプレートを示すテンプレートデータを画素値算出部１０５に出力する。本実施の形態では、図５に示されるように、１６種類のテンプレートから何れかが選択される。図５中、各テンプレートの上方に示される数値は、テンプレートデータを示している。各テンプレートは、第１の領域〜第３の領域の３つの領域によって表されている。第１の領域をパターンａにて表し、第２の領域をパターンｂにて表し、第３の領域をパターンｃにて表す。第１の領域では、エッジ判定の結果、何れの画素間においてもエッジが生じていないことが表される。第２の領域では、エッジ判定の結果、何れの画素間においてもエッジが生じていないことが表される。そして、第１の領域と第２の領域との間では、エッジ判定の結果、エッジが生じていることが表される。また、第３の領域は、エッジ判定の対象とならない画素を示している。なお、テンプレートについては、図５に示されたものに限定されず、効果的にエッジを検出できる態様のものであれば、適宜設計変更することが可能であり、例えば、観察窓のサイズ等に応じてテンプレートを設定するようにしてもよい。
【００３２】
画素値算出部１０５は、テンプレートマッチング部１０４から入力したテンプレートデータに基づき、注目画素Ｐ１に対してアンチエイリアス処理を行う。具体的には、画素値算出部１０５は、観察窓設定部１０２から出力された画像データから注目画素Ｐ１及び隣接画素Ｐ３１〜Ｐ３４の各データを取得する。そして、画素値算出部１０５は、入力したテンプレートデータに基づき、隣接画素Ｐ３１〜Ｐ３４からアンチエイリアス処理を行う際の参照とする画素を特定する。また、画素値算出部１０５は、入力したテンプレートデータに基づき、注目画素Ｐ１及び参照する画素にそれぞれ対応する重み付け量を特定する。そして、画素値算出部１０５は、注目画素Ｐ１及び参照する画素との重み付け平均を算出し、その算出結果を、注目画素Ｐ１の出力画素値として出力する。
【００３３】
次に、以上のようにして構成された画像処理部１０において実行されるアンチエイリアス処理について図６を参照しながら説明する。このアンチエイリアス処理は、制御部１１が記憶部１５に記憶されたアンチエイリアスプログラムを実行し、画像処理部１０を制御することにより実現される。アンチエイリアス処理は、画像データ入力部１０１に画像データが入力されたときに実行される。
【００３４】
制御部１１は、上述のようにして、観察窓の設定を行う（ステップＳ１０１）。そして、制御部１１は、上述のようにして、エッジ判定処理を行う（ステップＳ１０２）。ここで、エッジ判定処理について、図７を参照しながら説明する。
【００３５】
先ず、制御部１１は、エッジ判定の対象とする画素の組合せを抽出する（ステップＳ２０１）。抽出する画素の組合せは、上述した５６の画素の組合せから所定の順序にて抽出される。そして、制御部１１は、ＲＡＭ１１ｂに設定された所定のエッジ判定フラグ記憶領域を参照し、抽出した画素の組合せに対応するシフト済みのエッジ判定フラグ（ＶＡＢ）があるか否かを判定する（ステップＳ２０２）。すなわち、制御部１１は、アンチエイリアス処理のステップＳ１０５において後述するようにしてシフトされたエッジ判定フラグがあるか否かを判定する。制御部１１は、シフト済みのエッジ判定フラグ（ＶＡＢ）があると判定しないときは（ステップＳ２０２）、エッジ判定の対象となった画素の各画素値（ｉｎ［Ａ］，ｉｎ［Ｂ］）を特定する（ステップＳ２０３）。
【００３６】
制御部１１は、抽出した画素の組合せの画素値の差分が閾値ｅｔｈよりも小さいか否かを判定する（ステップＳ２０４）。制御部１１は、画素値の差分が閾値ｅｔｈよりも小さいと判定したときは（ステップＳ２０４：Ｙ）、当該画素間にエッジは生じていないと判断してエッジ判定フラグ（ＶＡＢ）を０にセットする（ステップＳ２０５）。一方、制御部１１は、画素値の差分が閾値ｅｔｈよりも小さいと判定しないときは（ステップＳ２０４：Ｎ）、当該画素間にエッジが生じていると判断してエッジ判定フラグ（ＶＡＢ）を１にセットする（ステップＳ２０６）。例えば、エッジ判定の対象である画素の組合せが「０３」と「１０」であるとき、画素値（ｉｎ［Ａ］，ｉｎ［Ｂ］）は、（ｉｎ［０３］，ｉｎ［１０］）によって表され、エッジ判定フラグ（ＶＡＢ）は、（Ｖ０３１０）によって表される。そして、例えば、閾値ｅｔｈ＝１２８としたとき、画素値（ｉｎ［０３］，ｉｎ［１０］）の差分が１２８未満である場合は、エッジ判定フラグ（Ｖ０３１０）には０がセットされ、１２８以上である場合は、エッジ判定フラグ（Ｖ０３１０）には１がセットされる。このようにしてセットされたエッジ判定フラグ（ＶＡＢ）は、上述したエッジ判定フラグ記憶領域に保持される。
一方、制御部１１は、ステップＳ２０２において、シフト済みのエッジ判定フラグがあると判定したときは（ステップＳ２０２：Ｙ）、ステップＳ２０３〜ステップＳ２０６の処理を実行することなく、ステップＳ２０７の処理に移行する。
【００３７】
制御部１１は、全ての判定対象についてエッジ判定が行われたか否かを判定する（ステップＳ２０７）。制御部１１は、全ての判定対象についてエッジ判定が行われたと判定したときは（ステップＳ２０７：Ｙ）、この処理を終了する。一方、制御部１１は、全ての判定対象についてエッジ判定が行われたと判定しないときは（ステップＳ２０５：Ｎ）、ステップＳ２０１の処理に移行する。
【００３８】
次に、制御部１１は、図６に示すように、エッジ判定処理を実行した後、出力値変換処理を実行する（ステップＳ１０３）。ここで、出力値変換処理について、図８〜図２３を参照しながら説明する。
【００３９】
制御部１１は、図８に示すように、Ｃ１〜Ｃ６に対してエッジ判定フラグをそれぞれ入力し、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２，Ｃ３１，Ｃ３２，Ｃ４１，Ｃ４２，Ｃ５１，５２，Ｃ６１，Ｃ６２からそれぞれエッジ判定フラグにマッチするテンプレートデータを得るための処理（処理Ａ〜処理Ｌ）を順次実行する。そして、制御部１１は、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２，Ｃ３１，Ｃ３２，Ｃ４１，Ｃ４２，Ｃ５１，５２，Ｃ６１，Ｃ６２から得られたテンプレートデータの示す値のうちの最大値をＣ１０００に入力する。そして、制御部１１は、Ｃ１０００に入力されたテンプレートデータに基づき、上述したようにして、注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）を算出し、出力する。
【００４０】
ここで、処理Ａについて、図９を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２４）が０で、かつ、エッジ判定フラグ（Ｖ２６３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２６）が１であるか否かを判定する（ステップＳ３０１）。制御部１１は、ステップＳ３０１における条件に合致すると判定したときは（ステップＳ３０１：Ｙ）、エッジ判定フラグ（Ｖ１８１９）が０で、かつ、エッジ判定フラグ（Ｖ３１３２）が０であるか否かを判定する（ステップＳ３０２）。制御部１１は、ステップＳ３０２における条件に合致すると判定したときは（ステップＳ３０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ１１］）にテンプレートデータ（２１）をセットする（ステップＳ３０３）。テンプレートデータ（２１）に対応するテンプレートは、図５（Ａ）に示されるようになる。そして、制御部１１は、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ３０３１）が０で、かつ、エッジ判定フラグ（Ｖ１９２０）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０であるか否かを判定する（ステップＳ３０４）。制御部１１は、ステップＳ３０４における条件に合致すると判定したときは（ステップＳ３０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているデータをテンプレートデータ（２１３）に変更し（ステップＳ３０５）、この処理を終了する。テンプレートデータ（２１３）に対応するテンプレートは、図５（Ｃ）に示されるようになる。一方、制御部１１は、ステップＳ３０４における条件に合致すると判定しないときは（ステップＳ３０４：Ｎ）、ステップＳ３０５の処理を実行することなく、この処理を終了する。
【００４１】
また、制御部１１は、ステップＳ３０１における条件に合致すると判定しないとき（ステップＳ３０１：Ｎ）、又は、ステップＳ３０２における条件に合致すると判定しないとき（ステップＳ３０２：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットし（ステップＳ３０６）、この処理を終了する。
【００４２】
次に、処理Ｂについて、図１０を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２４）が０で、かつ、エッジ判定フラグ（Ｖ２６３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２６）が１であるか否かを判定する（ステップＳ４０１）。制御部１１は、ステップＳ４０１における条件に合致すると判定したときは（ステップＳ４０１：Ｙ）、エッジ判定フラグ（Ｖ１９２６）が０で、かつ、エッジ判定フラグ（Ｖ２４３１）が０であるか否かを判定する（ステップＳ４０２）。制御部１１は、ステップＳ４０２における条件に合致すると判定したときは（ステップＳ４０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ１２］）にテンプレートデータ（２２）をセットする（ステップＳ４０３）。テンプレートデータ（２２）に対応するテンプレートは、図５（Ｉ）に示されるようになる。そして、制御部１１は、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ１２１９）が０で、かつ、エッジ判定フラグ（Ｖ３１３８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０であるか否かを判定する（ステップＳ４０４）。制御部１１は、ステップＳ４０４における条件に合致すると判定したときは（ステップＳ４０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）にセットされているデータをテンプレートデータ（２２３）に変更し（ステップＳ４０５）、この処理を終了する。テンプレートデータ（２２３）に対応するテンプレートは、図５（Ｋ）に示されるようになる。一方、制御部１１は、ステップＳ４０４における条件に合致すると判定しないときは（ステップＳ４０４：Ｎ）、ステップＳ４０５の処理を実行することなく、この処理を終了する。
【００４３】
また、制御部１１は、ステップＳ４０１における条件に合致すると判定しないとき（ステップＳ４０１：Ｎ）、又は、ステップＳ４０２における条件に合致すると判定しないとき（ステップＳ４０２：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ１２］）にセットし（ステップＳ４０６）、この処理を終了する。
【００４４】
次に、処理Ｃについて、図１１を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２６）が０で、かつ、エッジ判定フラグ（Ｖ２４３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２４）が１であるか否かを判定する（ステップＳ５０１）。制御部１１は、ステップＳ５０１における条件に合致すると判定したときは（ステップＳ５０１：Ｙ）、エッジ判定フラグ（Ｖ１７１８）が０で、かつ、エッジ判定フラグ（Ｖ３２３３）が０であるか否かを判定する（ステップＳ５０２）。制御部１１は、ステップＳ５０２における条件に合致すると判定したときは（ステップＳ５０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ２１］）に、テンプレートデータ（２３）をセットする（ステップＳ５０３）。テンプレートデータ（２３）に対応するテンプレートは、図５（Ｂ）に示されるようになる。そして、制御部１１は、エッジ判定フラグ（Ｖ１６１７）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０で、かつ、エッジ判定フラグ（Ｖ３３３４）が０であるか否かを判定する（ステップＳ５０４）。制御部１１は、ステップＳ５０４における条件に合致すると判定したときは（ステップＳ５０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているデータをテンプレートデータ（２３３）に変更し（ステップＳ５０５）、この処理を終了する。テンプレートデータ（２３３）に対応するテンプレートは、図５（Ｄ）に示されるようになる。一方、制御部１１は、ステップＳ５０４における条件に合致すると判定しないときは（ステップＳ５０４：Ｎ）、ステップＳ５０５の処理を実行することなく、この処理を終了する。
【００４５】
また、制御部１１は、ステップＳ５０１における条件に合致すると判定しないとき（ステップＳ５０１：Ｎ）、又は、ステップＳ５０２における条件に合致すると判定しないとき（ステップＳ５０２：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットし（ステップＳ５０６）、この処理を終了する。
【００４６】
次に、処理Ｄについて、図１２を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２６）が０で、かつ、エッジ判定フラグ（Ｖ２４３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２４）が１であるか否かを判定する（ステップＳ６０１）。制御部１１は、ステップＳ６０１における条件に合致すると判定したときは（ステップＳ６０１：Ｙ）、エッジ判定フラグ（Ｖ１７２４）が０で、かつ、エッジ判定フラグ（Ｖ２６３３）が０であるか否かを判定する（ステップＳ６０２）。制御部１１は、ステップＳ６０２における条件に合致すると判定したときは（ステップＳ６０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ２２］）にテンプレートデータ（２４）をセットする（ステップＳ６０３）。テンプレートデータ（２４）に対応するテンプレートは、図５（Ｊ）に示されるようになる。そして、制御部１１は、エッジ判定フラグ（Ｖ１０１７）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０で、かつ、エッジ判定フラグ（Ｖ３３４０）が０であるか否かを判定する（ステップＳ６０４）。制御部１１は、ステップＳ６０４における条件に合致すると判定したときは（ステップＳ６０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）にセットされているデータをテンプレートデータ（２４３）に変更し（ステップＳ６０５）、この処理を終了する。テンプレートデータ（２４３）に対応するテンプレートは、図５（Ｌ）に示されるようになる。一方、制御部１１は、ステップＳ６０４における条件に合致すると判定しないときは（ステップＳ６０４：Ｎ）、ステップＳ６０５の処理を実行することなく、この処理を終了する。
【００４７】
また、制御部１１は、ステップＳ６０１における条件に合致すると判定しないとき（ステップＳ６０１：Ｎ）、又は、ステップＳ６０２における条件に合致すると判定しないとき（ステップＳ６０２：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ２２］）にセットし（ステップＳ６０６）、この処理を終了する。
【００４８】
次に、処理Ｅについて、図１３を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ３１３２）が０で、かつ、エッジ判定フラグ（Ｖ３２３３）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が１であるか否かを判定する（ステップＳ７０１）。制御部１１は、ステップＳ７０１における条件に合致すると判定したときは（ステップＳ７０１：Ｙ）、エッジ判定フラグ（Ｖ１５１６）が０で、かつ、エッジ判定フラグ（Ｖ１６２４）が０で、かつ、エッジ判定フラグ（Ｖ２２２３）が０で、かつ、エッジ判定フラグ（Ｖ２３３１）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０で、かつ、エッジ判定フラグ（Ｖ３３３４）が０であるか否かを判定する（ステップＳ７０２）。制御部１１は、ステップＳ７０２における条件に合致すると判定したときは（ステップＳ７０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ３１］）にテンプレートデータ（２５１）をセットし（ステップＳ７０３）、この処理を終了する。テンプレートデータ（２５１）に対応するテンプレートは、図５（Ｅ）に示されるようになる。
【００４９】
また、制御部１１は、ステップＳ７０１における条件に合致すると判定しないとき（ステップＳ７０１：Ｎ）、又は、ステップＳ７０２における条件に合致すると判定しないときは（ステップＳ７０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットし（ステップＳ７０４）、この処理を終了する。
【００５０】
次に、処理Ｆについて、図１４を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ３１３２）が０で、かつ、エッジ判定フラグ（Ｖ３２３３）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が１であるか否かを判定する（ステップＳ８０１）。制御部１１は、ステップＳ８０１における条件に合致すると判定したときは（ステップＳ８０１：Ｙ）、エッジ判定フラグ（Ｖ２０２１）が０で、かつ、エッジ判定フラグ（Ｖ２７２８）が０で、かつ、エッジ判定フラグ（Ｖ２０２６）が０で、かつ、エッジ判定フラグ（Ｖ２７３３）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ３０３１）が０であるか否かを判定する（ステップＳ８０２）。制御部１１は、ステップＳ８０２における条件に合致すると判定したときは（ステップＳ８０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ３２］）にテンプレートデータ（２５２）をセットし（ステップＳ８０３）、この処理を終了する。テンプレートデータ（２５２）に対応するテンプレートは、図５（Ｆ）に示されるようになる。
【００５１】
また、制御部１１は、ステップＳ８０１における条件に合致すると判定しないとき（ステップＳ８０１：Ｎ）、又は、ステップＳ８０２における条件に合致すると判定しないときは（ステップＳ８０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ３２］）にセットし（ステップＳ８０４）、この処理を終了する。
【００５２】
次に、処理Ｇについて、図１５を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７１８）が０で、かつ、エッジ判定フラグ（Ｖ１８１９）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が１であるか否かを判定する（ステップＳ９０１）。制御部１１は、ステップＳ９０１における条件に合致すると判定したときは（ステップＳ９０１：Ｙ）、エッジ判定フラグ（Ｖ２２２３）が０で、かつ、エッジ判定フラグ（Ｖ２９３０）が０で、かつ、エッジ判定フラグ（Ｖ１７２３）が０で、かつ、エッジ判定フラグ（Ｖ２４３０）が０で、かつ、エッジ判定フラグ（Ｖ１９２０）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０であるか否かを判定する（ステップＳ９０２）。制御部１１は、ステップＳ９０２における条件に合致すると判定したときは（ステップＳ９０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ４１］）にテンプレートデータ（２５３）をセットし（ステップＳ６０３）、この処理を終了する。テンプレートデータ（２５３）に対応するテンプレートは、図５（Ｇ）に示されるようになる。
【００５３】
また、制御部１１は、ステップＳ９０１における条件に合致すると判定しないとき（ステップＳ９０１：Ｎ）、又は、ステップＳ９０２における条件に合致すると判定しないときは（ステップＳ９０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットし（ステップＳ９０４）、この処理を終了する。
【００５４】
次に、処理Ｈについて、図１６を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７１８）が０で、かつ、エッジ判定フラグ（Ｖ１８１９）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が１であるか否かを判定する（ステップＳ１００１）。制御部１１は、ステップＳ１００１における条件に合致すると判定したときは（ステップＳ１００１：Ｙ）、エッジ判定フラグ（Ｖ２７２８）が０で、かつ、エッジ判定フラグ（Ｖ３４３５）が０で、かつ、エッジ判定フラグ（Ｖ１９２７）が０で、かつ、エッジ判定フラグ（Ｖ２６３４）が０で、かつ、エッジ判定フラグ（Ｖ１６１７）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０であるか否かを判定する（ステップＳ１００２）。制御部１１は、ステップＳ１００２における条件に合致すると判定したときは（ステップＳ１００２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ４２］）にテンプレートデータ（２５４）をセットし（ステップＳ１００３）、この処理を終了する。テンプレートデータ（２５４）に対応するテンプレートは、図５（Ｈ）に示されるようになる。
【００５５】
また、制御部１１は、ステップＳ１００１における条件に合致すると判定しないとき（ステップＳ１００１：Ｎ）、又は、ステップＳ１００２における条件に合致すると判定しないときは（ステップＳ１００２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ４２］）にセットし（ステップＳ１００４）、この処理を終了する。
【００５６】
次に、処理Ｉについて、図１７を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ１９２６）が０で、かつ、エッジ判定フラグ（Ｖ２６３３）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が１であるか否かを判定する（ステップＳ１１０１）。制御部１１は、ステップＳ１１０１における条件に合致すると判定したときは（ステップＳ１１０１：Ｙ）、エッジ判定フラグ（Ｖ０３１０）が０で、かつ、エッジ判定フラグ（Ｖ０４１１）が０で、かつ、エッジ判定フラグ（Ｖ１０１８）が０で、かつ、エッジ判定フラグ（Ｖ１１１９）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０で、かつ、エッジ判定フラグ（Ｖ３３４０）が０であるか否かを判定する（ステップＳ１１０２）。制御部１１は、ステップＳ１１０２における条件に合致すると判定したときは（ステップＳ１１０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ５１］）にテンプレートデータ（２６１）をセットし（ステップＳ１１０３）、この処理を終了する。テンプレートデータ（２６１）に対応するテンプレートは、図５（Ｍ）に示されるようになる。
【００５７】
また、制御部１１は、ステップＳ１１０１における条件に合致すると判定しないとき（ステップＳ１１０１：Ｎ）、又は、ステップＳ１１０２における条件に合致すると判定しないときは（ステップＳ１１０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットし（ステップＳ１１０４）、この処理を終了する。
【００５８】
次に、処理Ｊについて、図１８を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ１９２６）が０で、かつ、エッジ判定フラグ（Ｖ２６３３）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が１であるか否かを判定する（ステップＳ１２０１）。制御部１１は、ステップＳ１２０１における条件に合致すると判定したときは（ステップＳ１２０１：Ｙ）、エッジ判定フラグ（Ｖ３８４５）が０で、かつ、エッジ判定フラグ（Ｖ３９４６）が０で、かつ、エッジ判定フラグ（Ｖ３２３８）が０で、かつ、エッジ判定フラグ（Ｖ３３３９）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ１２１９）が０であるか否かを判定する（ステップＳ１２０２）。制御部１１は、ステップＳ１２０２における条件に合致すると判定したときは（ステップＳ１２０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ５２］）にテンプレートデータ（２６２）をセットし（ステップＳ１２０３）、この処理を終了する。テンプレートデータ（２６２）に対応するテンプレートは、図５（Ｎ）に示されるようになる。
【００５９】
また、制御部１１は、ステップＳ１２０１における条件に合致すると判定しないとき（ステップＳ１２０１：Ｎ）、又は、ステップＳ１２０２における条件に合致すると判定しないときは（ステップＳ１２０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ５２］）にセットし（ステップＳ１２０４）、この処理を終了する。
【００６０】
次に、処理Ｋについて、図１９を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７２４）が０で、かつ、エッジ判定フラグ（Ｖ２４３１）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が１であるか否かを判定する（ステップＳ１３０１）。制御部１１は、ステップＳ１３０１における条件に合致すると判定したときは（ステップＳ１３０１：Ｙ）、エッジ判定フラグ（Ｖ０４１１）が０で、かつ、エッジ判定フラグ（Ｖ０５１２）が０で、かつ、エッジ判定フラグ（Ｖ１１１７）が０で、かつ、エッジ判定フラグ（Ｖ１２１８）が０で、かつ、エッジ判定フラグ（Ｖ３１３８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０であるか否かを判定する（ステップＳ１３０２）。制御部１１は、ステップＳ１３０２における条件に合致すると判定したときは（ステップＳ１３０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ６１］）にテンプレートデータ（２６３）をセットし（ステップＳ１３０３）、この処理を終了する。テンプレートデータ（２６３）に対応するテンプレートは、図５（Ｏ）に示されるようになる。
【００６１】
また、制御部１１は、ステップＳ１３０１における条件に合致すると判定しないとき（ステップＳ１３０１：Ｎ）、又は、ステップＳ１３０２における条件に合致すると判定しないときは（ステップＳ１３０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットし（ステップＳ１３０４）、この処理を終了する。
【００６２】
次に、処理Ｌについて、図２０を参照しながら詳述する。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７２４）が０で、かつ、エッジ判定フラグ（Ｖ２４３１）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が１であるか否かを判定する（ステップＳ１４０１）。制御部１１は、ステップＳ１４０１における条件に合致すると判定したときは（ステップＳ１４０１：Ｙ）、エッジ判定フラグ（Ｖ３９４６）が０で、かつ、エッジ判定フラグ（Ｖ４０４７）が０で、かつ、エッジ判定フラグ（Ｖ３１３９）が０で、かつ、エッジ判定フラグ（Ｖ３２４０）が０で、かつ、エッジ判定フラグ（Ｖ１０１７）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０であるか否かを判定する（ステップＳ１４０２）。制御部１１は、ステップＳ１４０２における条件に合致すると判定したときは（ステップＳ１４０２：Ｙ）、ＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ６２］）にテンプレートデータ（２６４）をセットし（ステップＳ１４０３）、この処理を終了する。テンプレートデータ（２６４）に対応するテンプレートは、図５（Ｐ）に示されるようになる。
【００６３】
また、制御部１１は、ステップＳ１４０１における条件に合致すると判定しないとき（ステップＳ１４０１：Ｎ）、又は、ステップＳ１４０２における条件に合致すると判定しないときは（ステップＳ１４０２：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ６２］）にセットし（ステップＳ１４０４）、この処理を終了する。
【００６４】
次に、上述した処理Ａ〜処理Ｌを実行して得られたＣ１１，Ｃ１２，Ｃ２１，Ｃ２２，Ｃ３１，Ｃ３２，Ｃ４１，Ｃ４２，Ｃ５１，５２，Ｃ６１，Ｃ６２の各テンプレートデータの示す値のうちの最大値を得るための処理について、図２１及び図２２を参照しながら詳述する。
【００６５】
先ず、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ６２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５０１）。すなわち、制御部１１は、テンプレートデータ（２６４）がマッチデータ（Ｍａｔｃｈ［Ｃ６２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６２］）に０以外のデータがセットされている判定したときは（ステップＳ１５０１：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ６２］）にセットされているテンプレートデータをＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５０２）、この処理を終了する。
【００６６】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５０１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５０３）。すなわち、制御部１１は、テンプレートデータ（２６３）がマッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされている判定したときは（ステップＳ１５０３：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットされているテンプレートデータをＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５０４）、この処理を終了する。
【００６７】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５０３：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ５２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ５２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５０５）。すなわち、制御部１１は、テンプレートデータ（２６２）がマッチデータ（Ｍａｔｃｈ［Ｃ５２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５２］）に０以外のデータがセットされていると判定したときは（ステップＳ１５０５：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ５２］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５０６）、この処理を終了する。
【００６８】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５０５：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５０７）。すなわち、制御部１１は、テンプレートデータ（２６１）がマッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされていると判定したときは（ステップＳ１５０７：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５０８）、この処理を終了する。
【００６９】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５０７：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ４２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ４２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５０９）。すなわち、制御部１１は、テンプレートデータ（２５４）がマッチデータ（Ｍａｔｃｈ［Ｃ４２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４２］）に０以外のデータがセットされていると判定したときは（ステップＳ１５０９：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ４２］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５１０）、この処理を終了する。
【００７０】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５０９：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５１１）。すなわち、制御部１１は、テンプレートデータ（２５３）がマッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされていると判定したときは（ステップＳ１５１１：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５１２）、この処理を終了する。
【００７１】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５１１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ３２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ３２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５１３）。すなわち、制御部１１は、テンプレートデータ（２５２）がマッチデータ（Ｍａｔｃｈ［Ｃ３２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３２］）に０以外のデータがセットされていると判定したときは（ステップＳ１５１３：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ３２］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５１４）、この処理を終了する。
【００７２】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５１３：Ｎ）、図２２に示すように、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５１５）。すなわち、制御部１１は、テンプレートデータ（２５１）がマッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされていると判定したときは（ステップＳ１５１５：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５１６）、この処理を終了する。
【００７３】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５１５：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５１７）。すなわち、制御部１１は、テンプレートデータ（２４）及びテンプレートデータ（２４３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ２２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）に０以外のデータがセットされていると判定したときは（ステップＳ１５１７：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５１８）、この処理を終了する。
【００７４】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５１７：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５１９）。すなわち、制御部１１は、テンプレートデータ（２３）及びテンプレートデータ（２３３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされていると判定したときは（ステップＳ１５１９：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５２０）、この処理を終了する。
【００７５】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５１９：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５２１）。すなわち、制御部１１は、テンプレートデータ（２２）及びテンプレートデータ（２２３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ１２］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）に０以外のデータがセットされていると判定したときは（ステップＳ１５２１：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５２２）、この処理を終了する。
【００７６】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１２］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５２１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされているか否かを判定する（ステップＳ１５２３）。すなわち、制御部１１は、テンプレートデータ（２１）及びテンプレートデータ（２１３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされていると判定したときは（ステップＳ１５２３：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５２４）、この処理を終了する。
【００７７】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされていると判定しないときは（ステップＳ１５２３：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ１５２５）、この処理を終了する。
以上の処理を実行することにより、最終的に１つのテンプレートデータが特定されるようになる。本実施の形態では、複数のテンプレートにマッチする場合を想定し、各テンプレートに対応するテンプレートデータに優先順位を設けている。すなわち、以上の処理を実行することにより、テンプレートデータの示す数値が大きいものから優先して選択されるように各テンプレートデータが設定されている。各テンプレートデータは、参照する画素数が多いほど、優先順位が高まるように設定されている。このようにテンプレートデータを設定することにより、効率よくテンプレートデータの選択を行うことができるようになる。なお、本実施の形態では、テンプレートデータの示す数値が大きいものからマッチするものを参照するようにしたが、テンプレートデータの示す数値が小さいものから参照するようにしてもよい。
また、本実施の形態では、上述したように、何れのテンプレートデータの選択を行う場合であっても、参照するエッジ判定フラグの数が、当該エッジ判定フラグを得るために参照された画素数よりも少なくしてテンプレートデータの選択を行うことができるので、データ量を抑制してテンプレートデータの選択が行うことが可能となる。
【００７８】
次に、注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）を算出する処理について、図２３を参照しながら詳述する。
【００７９】
先ず、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１）〜テンプレートデータ（２４）の何れかであるか否かを判定する（ステップＳ１６０１）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１）〜テンプレートデータ（２４）の何れかであると判定したときは（ステップＳ１６０１：Ｙ）、「１８」の位置における画素（隣接画素Ｐ３１）の画素値（ｉｎ［１８］）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）及び「３２」の位置における画素（隣接画素Ｐ３２）の画素値（ｉｎ［３２］）の和を求め、これを１／３して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６０２）、この処理を終了する。
【００８０】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１）〜テンプレートデータ（２４）の何れかであると判定しないときは（ステップＳ１６０１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１３）又はテンプレートデータ（２３３）であるか否かを判定する（ステップＳ１６０３）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１３）又はテンプレートデータ（２３３）であると判定したときは（ステップＳ１６０３：Ｙ）、「１８」の位置における画素（隣接画素Ｐ３１）の画素値（ｉｎ［１８］）を２倍した値、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）及び「３２」の位置における画素（隣接画素Ｐ３２）の画素値（ｉｎ［３２］）を２倍した値の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６０４）、この処理を終了する。
【００８１】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２１３）又はテンプレートデータ（２３３）であると判定しないときは（ステップＳ１６０３：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２２３）又はテンプレートデータ（２４３）であるか否かを判定する（ステップＳ１６０５）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２２３）又はテンプレートデータ（２４３）であると判定したときは（ステップＳ１６０５：Ｙ）、「２４」の位置における画素（隣接画素Ｐ３３）の画素値（ｉｎ［２４］）を２倍した値、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）及び「２６」の位置における画素（隣接画素Ｐ３４）の画素値（ｉｎ［２６］）を２倍した値の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６０６）、この処理を終了する。
【００８２】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２２３）又はテンプレートデータ（２４３）であると判定しないときは（ステップＳ１６０５：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５１）又はテンプレートデータ（２５２）であるか否かを判定する（ステップＳ１６０７）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５１）又はテンプレートデータ（２５２）であると判定したときは（ステップＳ１６０７：Ｙ）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）を４倍した値及び「３２」の位置（隣接画素Ｐ３２）における画素の画素値（ｉｎ［３２］）の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６０８）、この処理を終了する。
【００８３】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５１）又はテンプレートデータ（２５２）であると判定しないときは（ステップＳ１６０７：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５３）又はテンプレートデータ（２５４）であるか否かを判定する（ステップＳ１６０９）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５３）又はテンプレートデータ（２５４）であると判定したときは（ステップＳ１６０９：Ｙ）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）を４倍した値及び「１８」の位置における画素（隣接画素Ｐ３１）の画素値（ｉｎ［１８］）の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６１０）、この処理を終了する。
【００８４】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２５３）又はテンプレートデータ（２５４）であると判定しないときは（ステップＳ１６０９：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６１）又はテンプレートデータ（２６２）であるか否かを判定する（ステップＳ１６１１）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６１）又はテンプレートデータ（２６２）であると判定したときは（ステップＳ１６１１：Ｙ）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）を４倍した値及び「２６」の位置における画素（隣接画素Ｐ３４）の画素値（ｉｎ［２６］）の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６１２）、この処理を終了する。
【００８５】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６１）又はテンプレートデータ（２６２）であると判定しないときは（ステップＳ１６１１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６３）又はテンプレートデータ（２６４）であるか否かを判定する（ステップＳ１６１３）。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６３）又はテンプレートデータ（２６４）であると判定したときは（ステップＳ１６１３：Ｙ）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）を４倍した値及び「２４」の位置における画素（隣接画素Ｐ３３）の画素値（ｉｎ［２４］）の和を求め、これを１／５して得た値を注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６１４）、この処理を終了する。
【００８６】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットされたテンプレートデータがテンプレートデータ（２６３）又はテンプレートデータ（２６４）であると判定しないときは（ステップＳ１６１３：Ｎ）、「２５」の位置における画素（注目画素Ｐ１）の画素値（ｉｎ［２５］）をそのまま注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）とし（ステップＳ１６１５）、この処理を終了する。
本実施の形態では、以上の処理を実行することにより、選択されたテンプレートデータに応じた算出方法にて、注目画素Ｐ１の出力画素値を算出することができる。本実施の形態では、従来の方法のように２値的な入力値を想定したアンチエイリアスとは異なった方法により、注目画素の画素値と周辺画素の画素値とを特定の割合にて混合し、出力画素値を得るようにしたので、解像度変換に近い処理結果が得られるようになる。
【００８７】
制御部１１は、以上のようにして出力値変換処理を実行した後、図６に示すように、入力した画像データにおける全ての画素についてステップＳ１０２及びステップＳ１０３による処理が行われたか否かを判定する（ステップＳ１０４）。制御部１１は、全ての画素についての処理が完了したと判定したときは（ステップＳ１０４：Ｙ）、この処理を終了する。一方、制御部１１は、全ての画素についての処理が完了したと判定しないときは（ステップＳ１０４：Ｎ）、エッジ判定フラグ記憶領域に保持されたエッジ判定フラグ（ＶＡＢ）における各フラグ値が左方向にシフトされるようにエッジ判定フラグのシフトを行い（ステップＳ１０５）、ステップＳ１０１の処理に移行する。すなわち、制御部１１は、エッジ判定フラグ（Ｖ０４１１）のフラグ値をエッジ判定フラグ（Ｖ０３１０）のフラグ値にシフトし、エッジ判定フラグ（Ｖ０５１２）のフラグ値をエッジ判定フラグ（Ｖ０４１１）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１１１８）のフラグ値をエッジ判定フラグ（Ｖ１０１７）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１２１９）のフラグ値をエッジ判定フラグ（Ｖ１１１８）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１１１９）のフラグ値をエッジ判定フラグ（Ｖ１０１８）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１２１８）のフラグ値をエッジ判定フラグ（Ｖ１１１７）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１６１７）のフラグ値をエッジ判定フラグ（Ｖ１５１６）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１７１８）のフラグ値をエッジ判定フラグ（Ｖ１６１７）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１８１９）のフラグ値をエッジ判定フラグ（Ｖ１７１８）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１９２０）のフラグ値をエッジ判定フラグ（Ｖ１８１９）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２０２１）のフラグ値をエッジ判定フラグ（Ｖ１９２０）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１８２６）のフラグ値をエッジ判定フラグ（Ｖ１６２４）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１９２７）のフラグ値をエッジ判定フラグ（Ｖ１８２６）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１８２４）のフラグ値をエッジ判定フラグ（Ｖ１７２３）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２０２６）のフラグ値をエッジ判定フラグ（Ｖ１８２４）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ１８２５）のフラグ値をエッジ判定フラグ（Ｖ１７２４）のフラグ値にシフトし、エッジ判定フラグ（Ｖ１９２６）のフラグ値をエッジ判定フラグ（Ｖ１８２５）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ２３２４）のフラグ値をエッジ判定フラグ（Ｖ２２２３）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２４２５）のフラグ値をエッジ判定フラグ（Ｖ２３２４）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２５２６）のフラグ値をエッジ判定フラグ（Ｖ２４２５）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２６２７）のフラグ値をエッジ判定フラグ（Ｖ２５２６）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２７２８）のフラグ値をエッジ判定フラグ（Ｖ２６２７）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ２４３２）のフラグ値をエッジ判定フラグ（Ｖ２３３１）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２６３４）のフラグ値をエッジ判定フラグ（Ｖ２４３２）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ２６３２）のフラグ値をエッジ判定フラグ（Ｖ２４３０）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２７３３）のフラグ値をエッジ判定フラグ（Ｖ２６３２）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ２５３２）のフラグ値をエッジ判定フラグ（Ｖ２４３１）のフラグ値にシフトし、エッジ判定フラグ（Ｖ２６３３）のフラグ値をエッジ判定フラグ（Ｖ２５３２）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ３０３１）のフラグ値をエッジ判定フラグ（Ｖ２９３０）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３１３２）のフラグ値をエッジ判定フラグ（Ｖ３０３１）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３２３３）のフラグ値をエッジ判定フラグ（Ｖ３１３２）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３３３４）のフラグ値をエッジ判定フラグ（Ｖ３２３３）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３４３５）のフラグ値をエッジ判定フラグ（Ｖ３３３４）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ３２３９）のフラグ値をエッジ判定フラグ（Ｖ３１３８）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３３４０）のフラグ値をエッジ判定フラグ（Ｖ３２３９）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ３２４０）のフラグ値をエッジ判定フラグ（Ｖ３１３９）のフラグ値にシフトし、エッジ判定フラグ（Ｖ３３３９）のフラグ値をエッジ判定フラグ（Ｖ３２３８）のフラグ値にシフトする。また、制御部１１は、エッジ判定フラグ（Ｖ３９４６）のフラグ値をエッジ判定フラグ（Ｖ３８４５）のフラグ値にシフトし、エッジ判定フラグ（Ｖ４０４７）のフラグ値をエッジ判定フラグ（Ｖ３９４６）のフラグ値にシフトする。
本実施の形態では、このように、エッジ判定フラグのシフトさせることにより、次回設定される観察窓Ｗ内の画像データに対するエッジ判定処理においてエッジ判定フラグを流用することができる。これにより、１つの画素の組合せに対するエッジ判定結果について最大６回使用することが使用することができるので、上述した５６の画素の組合せの全てについてエッジ判定を行う必要がなく、１回のエッジ判定処理において、実質的に最小１７回のエッジ判定によってテンプレートを特定することが可能となり、処理効率の向上が図れるようになる。
【００８８】
次に、以上のように構成された画像処理部１０によって実現されたアンチエイリアス処理の結果について、図２４及び図２５を参照しながら説明する。
図２４は、本実施の形態によるアンチエイリアス処理が実施された文字の一部の拡大図である。また、図２５は、本実施の形態によるアンチエイリアス処理が実施された文字であって、図２４とは別の態様である文字の一部の拡大図である。
【００８９】
図２４（Ａ）は、アンチエイリアス処理が実施される前の画像であり、図２４（Ｂ）は、アンチエイリアス処理が実施された後の画像である。図中、パターンａにて示された画素は、アンチエイリアス処理が実施される前において背景画像を構成していた画素であり、当該画素と当該画素に隣接する文字を構成する画素とでスムージングされていることを示している。また、図中、パターンｂにて示された画素は、アンチエイリアス処理が実施される前において文字を構成していた画素であり、当該画素と当該画素に隣接する背景画像を構成する画素とでスムージングされていることを示している。
【００９０】
図２４（Ｂ）に示されるように、本実施の形態では、文字と背景画像との境界における所定の画素をテンプレート的なエッジ判定を行うことにより特定し、上述したようにしてアンチエイリアス処理を実施することによってジャギーを効果的に解消することができるようになる。
【００９１】
図２５（Ａ）は、アンチエイリアス処理が実施される前の画像であり、図２５（Ｂ）は、アンチエイリアス処理が実施された後の画像を示している。図２５（Ａ）及び図２５（Ｂ）に示す例では、背景画像が白色であって、文字が黒色のベタ文字によって表されている。このような画像に対して、本実施の形態では、図２５（Ｂ）に示すように、従来と同様のスムージング効果を得ることができる。
【００９２】
図２５（Ｃ）は、図２５（Ａ）に示される画像と同様であるが、背景画像及び文字が中間調にて表されたものである。また、図２５（Ｅ）も、図２５（Ａ）に示される画像と同様であるが、図２５（Ｃ）よりも背景画像と文字との階調差が小さく表されている。
【００９３】
本実施の形態では、図２５（Ｄ）及び図２５（Ｆ）に示すように、画像の内容に応じてエッジ判定を行うための閾値を適宜設定することにより、中間調画像に対してもアンチエイリアス処理を実施することが可能である。
【００９４】
このように、本実施の形態では、隣接する２画素の画素値の差分に基づいてエッジの有無を検出し、エッジ検出の結果に基づいてテンプレートを選択するパターンマッチングを行う。そして、パターンマッチングの結果に基づき、注目画素及びこの注目画素の上下左右に隣接する隣接画素から最大５画素の元の画素値の重み付け平均を行うことにより、注目画素のアンチエイリアス処理後の画素値を求める。そのため、本実施の形態では、文字や背景画像を構成する画素の画素値が中間調を含むさまざまな値であってもアンチエイリアス処理を行うことが可能である。
【００９５】
また、本実施の形態におけるエッジ検出処理によれば、従来のエッジ検出方法に比べ、少ない演算量及びデータ量によりパターンマッチングを行うことができるようになるので、全体的な演算コストを削減することができる。また、本実施の形態によれば、エッジ検出の結果を複数回のアンチエイリアス処理に亘って保持し、流用させることによって、１度のアンチエイリアス処理における平均演算量をさらに削減することが可能となる。また、本実施の形態におけるエッジ検出処理をハードウエア構成にて実現する場合には、より簡素な構成により実現することが可能となる。
【００９６】
例えば、従来のパターンマッチングの技術では、図５（Ｅ）に示されるテンプレートを特定するためには、第１の領域及び第２の領域における合計１２画素に対してラプラシアンやＳｏｂｅｌオペレータによるエッジ検出を行う必要がある。ラプラシアンによるエッジ検出は注目画素及びその周辺の９画素間の加減算を行うため、９×１２＝１０８回の加減算を実行する必要がある。また、Ｓｏｂｅｌオペレータによるエッジ検出は、注目画素の周辺６画素間の加減算をＸ軸方向及びＹ軸方向についてそれぞれ実行し、さらに、これらの算出結果からユークリッド距離を求める必要があるため、少なくとも、６×２×１２＝１４４回の加減算を実行し、さらに、ユークリッド距離の計算のために２回の乗算と１回の加算及び１回の平方根計算を実行する必要がある。
一方、本実施の形態では、１１回の画素間の減算のみでテンプレートを特定することが可能である。
【００９７】
以上説明したように、本発明の実施の形態によれば、観察窓設定部１０２は、注目画素Ｐ１を含む所定サイズ（７×７画素）の観察窓Ｗを設定する。そして、エッジ判定部１０３は、観察窓設定部１０２によって設定された観察窓Ｗ内における、所定の隣接する２つの画素の組合せを複数抽出する。そして、エッジ判定部１０３は、抽出された２つの画素の入力画素値の差分を組合せ毎にそれぞれ判定する。そして、テンプレートマッチング部１０４は、エッジ判定部１０３による判定結果の組合せに基づいてテンプレートデータを得る。そして、画素値算出部１０５は、テンプレートマッチング部１０４によって得られたテンプレートデータに基づいて、注目画素Ｐ１の入力画素値と注目画素Ｐ１に隣接する所定の隣接画素Ｐ３１〜Ｐ３４の入力画素値とを重み付け加算して注目画素Ｐ１の出力画素値を得る。その結果、エッジ検出のための演算量及びデータ量を低減させることができるので、処理負荷を軽減して高いスムージング効果が得られるアンチエイリアスを実施することが可能となる。また、中間調の画像に対しても処理負荷を軽減してアンチエイリアスを実施することが可能となる。
【００９８】
また、本発明の実施の形態によれば、テンプレートマッチング部１０４は、テンプレートデータを得るために参照するエッジ判定部１０３によって得られたエッジ判定フラグの数を、当該エッジ判定フラグを得るために参照された画素数よりも少なくしてテンプレートデータを得る。その結果、データ量を抑制してテンプレートデータの選択が行うことが可能となる。
【００９９】
また、本発明の実施の形態によれば、ＲＡＭ１１ｂは、エッジ判定部１０３によって得られたエッジ判定フラグを記憶する。観察窓設定部１０２は、注目画素Ｐ１が予め定められた位置となるように観察窓Ｗを設定するとともに、注目画素Ｐ１となる画素が所定の順序で選択されるように、出力画素値が得られる毎に観察窓Ｗの設定位置を変更する。そして、テンプレートマッチング部１０４は、ＲＡＭ１１ｂに記憶されたエッジ判定フラグの少なくとも一部を参照してテンプレートデータを得る。その結果、エッジ判定を行う処理量を軽減することができ、処理効率の向上が図れるようになる
【０１００】
なお、本発明の実施の形態における記述は、本発明に係るＭＦＰの一例であり、これに限定されるものではない。ＭＦＰを構成する各機能部の細部構成及び細部動作に関しても適宜変更可能である。また、ＭＦＰ以外にも画像処理を行うコンピュータ装置であれば本発明を適用することが可能である。
【０１０１】
また、本発明の実施の形態では、図８を参照して上述したように、Ｃ１〜Ｃ６に対してエッジ判定フラグをそれぞれ入力し、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２，Ｃ３１，Ｃ３２，Ｃ４１，Ｃ４２，Ｃ５１，５２，Ｃ６１，Ｃ６２からそれぞれエッジ判定フラグにマッチするテンプレートデータを得るための処理をそれぞれ行って、その中から最大値を示すテンプレートデータを選択するようにしたが、以下のようにしてルーチンを減少させ、処理の最適化を図ることも可能である。
【０１０２】
すなわち、制御部１１は、図２６に示すように、Ｃ１〜Ｃ６に対してエッジ判定フラグをそれぞれ入力し、Ｃ１１〜Ｃ６１からそれぞれエッジ判定フラグにマッチするテンプレートデータを得るための処理（処理Ｍ〜処理Ｒ）を順次実行する。そして、制御部１１は、Ｃ１１〜Ｃ６１から得られたテンプレートデータの示す値のうちの最大値をＣ１０００に入力する。そして、制御部１１は、Ｃ１０００に入力されたテンプレートデータに基づき、注目画素Ｐ１の出力画素値（Ｏｕｔｐｉｘ［Ｃｅｎｔｅｒ］）を算出し、出力する。
【０１０３】
ここで、処理Ｍについて、図２７を参照しながら詳述する。処理Ｍは、上述した処理Ａ及び処理Ｂを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２４）が０で、かつ、エッジ判定フラグ（Ｖ２６３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２６）が１であるか否かを判定する（ステップＳ１７０１）。制御部１１は、ステップＳ１７０１における条件に合致すると判定したときは（ステップＳ１７０１：Ｙ）、エッジ判定フラグ（Ｖ１８１９）が０で、かつ、エッジ判定フラグ（Ｖ３１３２）が０であるか否かを判定する（ステップＳ１７０２）。制御部１１は、ステップＳ１７０２における条件に合致すると判定したときは（ステップＳ１７０２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にテンプレートデータ（２１）をセットする（ステップＳ１７０３）。そして、制御部１１は、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ３０３１）が０で、かつ、エッジ判定フラグ（Ｖ１９２０）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０であるか否かを判定する（ステップＳ１７０４）。制御部１１は、ステップＳ３０４における条件に合致すると判定したときは（ステップＳ１７０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているデータをテンプレートデータ（２１３）に変更し（ステップＳ１７０５）、この処理を終了する。一方、制御部１１は、ステップＳ１７０４における条件に合致すると判定しないときは（ステップＳ１７０４：Ｎ）、ステップＳ１７０５の処理を実行することなく、この処理を終了する。
【０１０４】
また、制御部１１は、ステップＳ１７０２において、ステップＳ１７０２における条件に合致すると判定しないときは（ステップＳ１７０２：Ｎ）、エッジ判定フラグ（Ｖ１９２６）が０で、かつ、エッジ判定フラグ（Ｖ２４３１）が０であるか否かを判定する（ステップＳ１７０６）。制御部１１は、ステップＳ１７０６における条件に合致すると判定したときは（ステップＳ１７０６：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にテンプレートデータ（２２）をセットする（ステップＳ１７０７）。そして、制御部１１は、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ１２１９）が０で、かつ、エッジ判定フラグ（Ｖ３１３８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０であるか否かを判定する（ステップＳ１７０８）。制御部１１は、ステップＳ１７０８における条件に合致すると判定したときは（ステップＳ１７０８：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているデータをテンプレートデータ（２２３）に変更し（ステップＳ１７０９）、この処理を終了する。一方、制御部１１は、ステップＳ１７０８における条件に合致すると判定しないときは（ステップＳ１７０８：Ｎ）、ステップＳ１７０９の処理を実行することなく、この処理を終了する。
【０１０５】
また、制御部１１は、ステップＳ１７０１における条件に合致すると判定しないとき（ステップＳ１７０１：Ｎ）、又は、ステップＳ１７０６における条件に合致すると判定しないとき（ステップＳ１７０６：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットし（ステップＳ１７１０）、この処理を終了する。
【０１０６】
次に、処理Ｎについて、図２８を参照しながら詳述する。処理Ｎは、上述した処理Ｃ及び処理Ｄを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２６）が０で、かつ、エッジ判定フラグ（Ｖ２４３２）が０で、かつ、エッジ判定フラグ（Ｖ１８２４）が１であるか否かを判定する（ステップＳ１８０１）。制御部１１は、ステップＳ１８０１における条件に合致すると判定したときは（ステップＳ１８０１：Ｙ）、エッジ判定フラグ（Ｖ１７１８）が０で、かつ、エッジ判定フラグ（Ｖ３２３３）が０であるか否かを判定する（ステップＳ１８０２）。制御部１１は、ステップＳ１８０２における条件に合致すると判定したときは（ステップＳ１８０２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に、テンプレートデータ（２３）をセットする（ステップＳ１８０３）。そして、制御部１１は、エッジ判定フラグ（Ｖ１６１７）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０で、かつ、エッジ判定フラグ（Ｖ３３３４）が０であるか否かを判定する（ステップＳ１８０４）。制御部１１は、ステップＳ１８０４における条件に合致すると判定したときは（ステップＳ１８０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているデータをテンプレートデータ（２３３）に変更し（ステップＳ１８０５）、この処理を終了する。一方、制御部１１は、ステップＳ１８０４における条件に合致すると判定しないときは（ステップＳ１８０４：Ｎ）、ステップＳ１８０５の処理を実行することなく、この処理を終了する。
【０１０７】
また、制御部１１は、ステップＳ１８０２において、ステップＳ１８０２における条件に合致すると判定しないときは（ステップＳ１８０２：Ｎ）、エッジ判定フラグ（Ｖ１７２４）が０で、かつ、エッジ判定フラグ（Ｖ２６３３）が０であるか否かを判定する（ステップＳ１８０６）。制御部１１は、ステップＳ１８０６における条件に合致すると判定したときは（ステップＳ１８０６：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にテンプレートデータ（２４）をセットする（ステップＳ１８０７）。そして、制御部１１は、エッジ判定フラグ（Ｖ１０１７）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０で、かつ、エッジ判定フラグ（Ｖ３３４０）が０であるか否かを判定する（ステップＳ１８０８）。制御部１１は、ステップＳ１８０８における条件に合致すると判定したときは（ステップＳ１８０８：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているデータをテンプレートデータ（２４３）に変更し（ステップＳ１８０９）、この処理を終了する。一方、制御部１１は、ステップＳ１８０８における条件に合致すると判定しないときは（ステップＳ１８０８：Ｎ）、ステップＳ１８０９の処理を実行することなく、この処理を終了する。
【０１０８】
また、制御部１１は、ステップＳ１８０１における条件に合致すると判定しないとき（ステップＳ１８０１：Ｎ）、又は、ステップＳ１８０６における条件に合致すると判定しないとき（ステップＳ１８０６：Ｎ）は、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットし（ステップＳ１８１０）、この処理を終了する。
【０１０９】
次に、処理Ｏについて、図２９を参照しながら詳述する。処理Ｏは、上述した処理Ｅ及び処理Ｆを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ３１３２）が０で、かつ、エッジ判定フラグ（Ｖ３２３３）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が１であるか否かを判定する（ステップＳ１９０１）。制御部１１は、ステップＳ１９０１における条件に合致すると判定したときは（ステップＳ１９０１：Ｙ）、エッジ判定フラグ（Ｖ１５１６）が０で、かつ、エッジ判定フラグ（Ｖ１６２４）が０で、かつ、エッジ判定フラグ（Ｖ２２２３）が０で、かつ、エッジ判定フラグ（Ｖ２３３１）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０で、かつ、エッジ判定フラグ（Ｖ３３３４）が０であるか否かを判定する（ステップＳ１９０２）。制御部１１は、ステップＳ１９０２における条件に合致すると判定したときは（ステップＳ１９０２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）にテンプレートデータ（２５１）をセットし（ステップＳ１９０３）、この処理を終了する。
【０１１０】
一方、制御部１１は、ステップＳ１９０２における条件に合致すると判定しないときは（ステップＳ１９０２：Ｎ）、エッジ判定フラグ（Ｖ２０２１）が０で、かつ、エッジ判定フラグ（Ｖ２７２８）が０で、かつ、エッジ判定フラグ（Ｖ２０２６）が０で、かつ、エッジ判定フラグ（Ｖ２７３３）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０で、かつ、エッジ判定フラグ（Ｖ３０３１）が０であるか否かを判定する（ステップＳ１９０４）。制御部１１は、ステップＳ１９０４における条件に合致すると判定したときは（ステップＳ１９０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）にテンプレートデータ（２５２）をセットし（ステップＳ１９０５）、この処理を終了する。
【０１１１】
また、制御部１１は、ステップＳ１９０１における条件に合致すると判定しないとき（ステップＳ１９０１：Ｎ）、又は、ステップＳ１９０４における条件に合致すると判定しないときは（ステップＳ１９０４：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットし（ステップＳ１９０６）、この処理を終了する。
【０１１２】
次に、処理Ｐについて、図３０を参照しながら詳述する。処理Ｐは、上述した処理Ｇ及び処理Ｈを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７１８）が０で、かつ、エッジ判定フラグ（Ｖ１８１９）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が１であるか否かを判定する（ステップＳ２００１）。制御部１１は、ステップＳ２００１における条件に合致すると判定したときは（ステップＳ２００１：Ｙ）、エッジ判定フラグ（Ｖ２２２３）が０で、かつ、エッジ判定フラグ（Ｖ２９３０）が０で、かつ、エッジ判定フラグ（Ｖ１７２３）が０で、かつ、エッジ判定フラグ（Ｖ２４３０）が０で、かつ、エッジ判定フラグ（Ｖ１９２０）が０で、かつ、エッジ判定フラグ（Ｖ２６２７）が０であるか否かを判定する（ステップＳ２００２）。制御部１１は、ステップＳ２００２における条件に合致すると判定したときは（ステップＳ２００２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）にテンプレートデータ（２５３）をセットし（ステップＳ２００３）、この処理を終了する。
【０１１３】
一方、制御部１１は、ステップＳ２００２における条件に合致すると判定しないときは（ステップＳ２００２：Ｎ）、エッジ判定フラグ（Ｖ２７２８）が０で、かつ、エッジ判定フラグ（Ｖ３４３５）が０で、かつ、エッジ判定フラグ（Ｖ１９２７）が０で、かつ、エッジ判定フラグ（Ｖ２６３４）が０で、かつ、エッジ判定フラグ（Ｖ１６１７）が０で、かつ、エッジ判定フラグ（Ｖ２３２４）が０であるか否かを判定する（ステップＳ２００４）。制御部１１は、ステップＳ２００４における条件に合致すると判定したときは（ステップＳ２００４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）にテンプレートデータ（２５４）をセットし（ステップＳ２００５）、この処理を終了する。
【０１１４】
また、制御部１１は、ステップＳ２００１における条件に合致すると判定しないとき（ステップＳ２００１：Ｎ）、又は、ステップＳ２００４における条件に合致すると判定しないときは（ステップＳ２００４：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットし（ステップＳ２００６）、この処理を終了する。
【０１１５】
次に、処理Ｑについて、図３１を参照しながら詳述する。処理Ｑは、上述した処理Ｉ及び処理Ｊを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ１９２６）が０で、かつ、エッジ判定フラグ（Ｖ２６３３）が０で、かつ、エッジ判定フラグ（Ｖ２５２６）が１であるか否かを判定する（ステップＳ２１０１）。制御部１１は、ステップＳ２１０１における条件に合致すると判定したときは（ステップＳ２１０１：Ｙ）、エッジ判定フラグ（Ｖ０３１０）が０で、かつ、エッジ判定フラグ（Ｖ０４１１）が０で、かつ、エッジ判定フラグ（Ｖ１０１８）が０で、かつ、エッジ判定フラグ（Ｖ１１１９）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０で、かつ、エッジ判定フラグ（Ｖ３３４０）が０であるか否かを判定する（ステップＳ２１０２）。制御部１１は、ステップＳ２１０２における条件に合致すると判定したときは（ステップＳ２１０２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）にテンプレートデータ（２６１）をセットし（ステップＳ２１０３）、この処理を終了する。
【０１１６】
一方、制御部１１は、ステップＳ２１０２における条件に合致すると判定しないときは（ステップＳ２１０２：Ｎ）、エッジ判定フラグ（Ｖ３８４５）が０で、かつ、エッジ判定フラグ（Ｖ３９４６）が０で、かつ、エッジ判定フラグ（Ｖ３２３８）が０で、かつ、エッジ判定フラグ（Ｖ３３３９）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０で、かつ、エッジ判定フラグ（Ｖ１２１９）が０であるか否かを判定する（ステップＳ２１０４）。制御部１１は、ステップＳ２１０４における条件に合致すると判定したときは（ステップＳ２１０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）にテンプレートデータ（２６２）をセットし（ステップＳ２１０５）、この処理を終了する。
【０１１７】
また、制御部１１は、ステップＳ２１０１における条件に合致すると判定しないとき（ステップＳ２１０１：Ｎ）、又は、ステップＳ２１０４における条件に合致すると判定しないときは（ステップＳ２１０４：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットし（ステップＳ２１０６）、この処理を終了する。
【０１１８】
次に、処理Ｒについて、図３２を参照しながら詳述する。処理Ｒは、上述した処理Ｋ及び処理Ｌを組み合わせて最適化した処理である。
先ず、制御部１１は、エッジ判定フラグ（Ｖ１７２４）が０で、かつ、エッジ判定フラグ（Ｖ２４３１）が０で、かつ、エッジ判定フラグ（Ｖ１８２５）が０で、かつ、エッジ判定フラグ（Ｖ２５３２）が０で、かつ、エッジ判定フラグ（Ｖ２４２５）が１であるか否かを判定する（ステップＳ２２０１）。制御部１１は、ステップＳ２２０１における条件に合致すると判定したときは（ステップＳ２２０１：Ｙ）、エッジ判定フラグ（Ｖ０４１１）が０で、かつ、エッジ判定フラグ（Ｖ０５１２）が０で、かつ、エッジ判定フラグ（Ｖ１１１７）が０で、かつ、エッジ判定フラグ（Ｖ１２１８）が０で、かつ、エッジ判定フラグ（Ｖ３１３８）が０で、かつ、エッジ判定フラグ（Ｖ３２３９）が０であるか否かを判定する（ステップＳ２２０２）。制御部１１は、ステップＳ２２０２における条件に合致すると判定したときは（ステップＳ２２０２：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）にテンプレートデータ（２６３）をセットし（ステップＳ２２０３）、この処理を終了する。
【０１１９】
一方、制御部１１は、ステップＳ２２０２における条件に合致すると判定しないときは（ステップＳ２２０２：Ｎ）、エッジ判定フラグ（Ｖ３９４６）が０で、かつ、エッジ判定フラグ（Ｖ４０４７）が０で、かつ、エッジ判定フラグ（Ｖ３１３９）が０で、かつ、エッジ判定フラグ（Ｖ３２４０）が０で、かつ、エッジ判定フラグ（Ｖ１０１７）が０で、かつ、エッジ判定フラグ（Ｖ１１１８）が０であるか否かを判定する（ステップＳ２２０４）。制御部１１は、ステップＳ２２０４における条件に合致すると判定したときは（ステップＳ２２０４：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）にテンプレートデータ（２６４）をセットし（ステップＳ２２０５）、この処理を終了する。
【０１２０】
また、制御部１１は、ステップＳ２２０１における条件に合致すると判定しないとき（ステップＳ２２０１：Ｎ）、又は、ステップＳ２２０４における条件に合致すると判定しないときは（ステップＳ２２０４：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットし（ステップＳ２２０６）、この処理を終了する。
【０１２１】
次に、上述した処理Ｍ〜処理Ｒを実行して得られたＣ１１〜Ｃ１６の各テンプレートデータの示す値のうちの最大値を得るための処理について、図３３を参照しながら詳述する。
【０１２２】
先ず、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３０１）。すなわち、制御部１１は、テンプレートデータ（２６３）又はテンプレートデータ（２６３）がマッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされている判定したときは（ステップＳ２３０１：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）にセットされているテンプレートデータをＲＡＭ１１ｂの所定の記憶領域におけるマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３０２）、この処理を終了する。
【０１２３】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ６１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３０１：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３０３）。すなわち、制御部１１は、テンプレートデータ（２６１）又はテンプレートデータ（２６２）がマッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされていると判定したときは（ステップＳ２３０３：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３０４）、この処理を終了する。
【０１２４】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ５１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３０３：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３０５）。すなわち、制御部１１は、テンプレートデータ（２５３）又はテンプレートデータ（２５４）がマッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされていると判定したときは（ステップＳ２３０５：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３０６）、この処理を終了する。
【０１２５】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ４１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３０５：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３０７）。すなわち、制御部１１は、テンプレートデータ（２５１）又はテンプレートデータ（２５２）がマッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされていると判定したときは（ステップＳ２３０７：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３０８）、この処理を終了する。
【０１２６】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ３１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３０７：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３０９）。すなわち、制御部１１は、テンプレートデータ（２３）、テンプレートデータ（２４）、テンプレートデータ（２３３）及びテンプレートデータ（２４３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされていると判定したときは（ステップＳ２３０９：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３１０）、この処理を終了する。
【０１２７】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ２１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３０９：Ｎ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）を参照し、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされているか否かを判定する（ステップＳ２３１１）。すなわち、制御部１１は、テンプレートデータ（２１）、テンプレートデータ（２２）、テンプレートデータ（２１３）及びテンプレートデータ（２２３）の何れかがマッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているか否かを判定する。制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされていると判定したときは（ステップＳ２３１１：Ｙ）、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）にセットされているテンプレートデータをマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３１２）、この処理を終了する。
【０１２８】
一方、制御部１１は、マッチデータ（Ｍａｔｃｈ［Ｃ１１］）に０以外のデータがセットされていると判定しないときは（ステップＳ２３１１：Ｎ）、何れのテンプレートにも合致しなかったことを示すテンプレートデータ（０）をマッチデータ（Ｍａｔｃｈ［Ｃ１０００］）にセットし（ステップＳ２３１３）、この処理を終了する。
以上の処理を実行することによっても最終的に１つのテンプレートデータが特定されるようになる。
【０１２９】
本発明の実施の形態では、画像処理部１０をＭＦＰ１００に適用した例について説明したが、ＬＣＤ（Liquid Crystal Display）等の画像表示装置に適用することも可能である。
【０１３０】
また、本発明の実施の形態では、ＣＭＹＫのカラー印刷が可能なＭＦＰ１００に適用した例について説明したが、ＣＭＹＫの何れか単色による印刷を行う画像形成装置に適用することも可能である。
【０１３１】
また、本発明の実施の形態では、エッジ判定部１０３において、エッジ判定の対象である画素の組合せの全てについて、予めエッジ検出を行うようにしたが。エッジ検出を予め行わず、テンプレートマッチング部１０４におけるテンプレートの絞り込みを行う際に、エッジの条件を判定する都度、判定に必要な画素の組合せについてのみエッジ検出を行うようにしてもよい。これによれば、エッジ検出を行うための計算を一部省略することができ、演算量が削減されるようになる。
【０１３２】
また、本発明の実施の形態では、エッジ判定結果に基づき、条件に一致するテンプレートを全て抽出した上で、テンプレートデータの最も大きいものを最終的に選択するようにしたが、例えば、テンプレートデータの最も大きいものからテンプレートの条件一致の判断を行い、条件が一致した時点でそのテンプレートを選択するようにしてもよい。
【０１３３】
また、本発明の実施の形態では、エッジ判定結果を保持し、次回以降に実施されるエッジ判定処理において、保持されたエッジ判定フラグを流用するようにしたが、エッジ判定結果を保持せず、エッジ判定処理を実行する毎にエッジ判定を行うようにしてもよい。
【０１３４】
また、本実施の形態では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてハードディスクや半導体の不揮発性メモリ等を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、ＣＤ−ＲＯＭ等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウェーブ（搬送波）も適用される。
【符号の説明】
【０１３５】
１００  ＭＦＰ
１０  画像処理部
１１  制御部
１１ｂ  ＲＡＭ
１０２  観察窓設定部
１０３  エッジ判定部
１０４  テンプレートマッチング部
１０５  画素値算出部
【図１】
0005605214.tif 000002
【図２】
0005605214.tif 000003
【図３】
0005605214.tif 000004
【図４】
0005605214.tif 000005
【図５】
0005605214.tif 000006
【図６】
0005605214.tif 000007
【図７】
0005605214.tif 000008
【図８】
0005605214.tif 000009
【図９】
0005605214.tif 000010
【図１０】
0005605214.tif 000011
【図１１】
0005605214.tif 000012
【図１２】
0005605214.tif 000013
【図１３】
0005605214.tif 000014
【図１４】
0005605214.tif 000015
【図１５】
0005605214.tif 000016
【図１６】
0005605214.tif 000017
【図１７】
0005605214.tif 000018
【図１８】
0005605214.tif 000019
【図１９】
0005605214.tif 000020
【図２０】
0005605214.tif 000021
【図２１】
0005605214.tif 000022
【図２２】
0005605214.tif 000023
【図２３】
0005605214.tif 000024
【図２６】
0005605214.tif 000025
【図２７】
0005605214.tif 000026
【図２８】
0005605214.tif 000027
【図２９】
0005605214.tif 000028
【図３０】
0005605214.tif 000029
【図３１】
0005605214.tif 000030
【図３２】
0005605214.tif 000031
【図３３】
0005605214.tif 000032
【図２４】
0005605214.tif 000033
【図２５】
0005605214.tif 000034