(57)【特許請求の範囲】
【請求項１】
プログラムを遺伝的プログラミングによって生成するプログラム生成装置において、
入力画像におけるテンプレート画像の位置を検出する画像認識プログラムの構成要素となる複数の部分プログラムを記憶する記憶部と、
前記複数の部分プログラムの中からそれぞれ２以上の部分プログラムを組み合わせることで複数の個体を生成し、前記複数の個体をそれぞれ用いて、前記入力画像の各画素に前記テンプレート画像との類似度を対応づけた類似度マップを算出し、前記類似度マップの分布に基づいて前記複数の個体のそれぞれについての適応度を算出し、前記複数の個体の中から前記適応度が所定閾値以上の個体を前記画像認識プログラムとして出力する演算部と、
を有するプログラム生成装置。
【請求項２】
前記適応度は、前記類似度マップの分布と前記類似度マップの目標分布との比較結果に基づいて算出される、
請求項１記載のプログラム生成装置。
【請求項３】
前記目標分布は、前記入力画像における前記テンプレート画像の正解位置にピークを有し、前記ピークから離れるのにしたがって類似度の値が低下する形状を有する、
請求項２記載のプログラム生成装置。
【請求項４】
前記演算部は、さらに、前記複数の部分プログラムの中からそれぞれ２以上の部分プログラムを組み合わせることで複数の第１個体を生成して前記記憶部に格納し、
前記複数の個体の生成は、
前記複数の第１個体の中から所定数の第２個体を選択し、
前記所定数の第２個体に基づいて生成される複数の第３個体であって、前記所定数の第２個体のいずれかに進化処理を施した個体を少なくとも含む前記複数の第３個体を出力する、
処理を含み、
前記適応度の算出では、前記複数の第３個体のそれぞれについて前記適応度が算出される、
請求項１記載のプログラム生成装置。
【請求項５】
前記演算部は、さらに、前記複数の第３個体の中に前記適応度が前記所定閾値以上の個体が存在しなかった場合、前記適応度に基づいて前記複数の第３個体の中から生存個体を選択し、前記生存個体によって前記記憶部に記憶された前記複数の第１個体のうちの一部の個体を置換する、
請求項４記載のプログラム生成装置。
【請求項６】
前記適応度は、前記類似度マップの分布と前記類似度マップの目標分布との比較結果に基づいて算出され、
前記目標分布は、前記入力画像における前記テンプレート画像の正解位置にピークを有し、前記ピークから離れるのにしたがって類似度の値が低下する形状を有し、前記複数の第１個体のそれぞれを用いて実行される前記入力画像における前記テンプレート画像の位置の検出処理の結果に基づいて算出される、
請求項５記載のプログラム生成装置。
【請求項７】
前記演算部は、さらに、
前記複数の第１個体の一部が前記生存個体によって置換されることで得られる複数の第４個体に基づいて、前記目標分布を再計算し、
前記複数の第４個体と再計算された前記目標分布とを用いて、前記複数の第４個体の中からの前記所定数の第２個体の選択、前記所定数の第２個体に基づいて生成される前記複数の第３個体の出力、前記複数の第３個体のそれぞれについての前記適応度の算出、および前記適応度と前記所定閾値との比較に基づく前記画像認識プログラムの出力を実行する、
請求項６記載のプログラム生成装置。
【請求項８】
プログラムを遺伝的プログラミングによって生成するプログラム生成方法において、
コンピュータが、
入力画像におけるテンプレート画像の位置を検出する画像認識プログラムの構成要素となる複数の部分プログラムの中から、それぞれ２以上の部分プログラムを組み合わせることで複数の個体を生成し、
前記複数の個体をそれぞれ用いて、前記入力画像の各画素に前記テンプレート画像との類似度を対応づけた類似度マップを算出し、
前記類似度マップの分布に基づいて前記複数の個体のそれぞれについての適応度を算出し、
前記複数の個体の中から前記適応度が所定閾値以上の個体を前記画像認識プログラムとして出力する、
プログラム生成方法。
【請求項９】
プログラムを遺伝的プログラミングによって生成する生成プログラムにおいて、
コンピュータに、
入力画像におけるテンプレート画像の位置を検出する画像認識プログラムの構成要素となる複数の部分プログラムの中から、それぞれ２以上の部分プログラムを組み合わせることで複数の個体を生成し、
前記複数の個体をそれぞれ用いて、前記入力画像の各画素に前記テンプレート画像との類似度を対応づけた類似度マップを算出し、
前記類似度マップの分布に基づいて前記複数の個体のそれぞれについての適応度を算出し、
前記複数の個体の中から前記適応度が所定閾値以上の個体を前記画像認識プログラムとして出力する、
生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、プログラム生成方法および生成プログラムに関する。
【背景技術】
【０００２】
所望の画像処理を実行する画像処理プログラムを、遺伝的プログラミングによって自動生成する技術が注目されている。この技術は、入力画像と目標となる処理結果（例えば、目標画像）とを用いて、画像処理のための部分プログラム（例えば、画像フィルタのプログラム）を組み合わせて生成される画像処理プログラムを、遺伝的プログラミングによって最適化していくものである。
【０００３】
遺伝的プログラミングを利用した装置の例として、使用者が、処理対象画像の一部の領域を指定するとともに、指定された領域に使用者所望の画像処理が施された目標画像を作成するだけで、所望の処理結果が得られる画像処理手順が生成される画像処理装置が提案されている。
【０００４】
また、テンプレートマッチングで用いられる特徴量抽出方法を遺伝的プログラミングによって学習することも提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１５１３７１号公報
【特許文献２】特開２０１４−２６５２１号公報
【非特許文献】
【０００６】
【非特許文献１】青木紳也、長尾智晴、「木構造画像変換の自動構築法ＡＣＴＩＴ」、情報メディア学会誌Ｖｏｌ．５３，Ｎｏ．６、１９９９年６月２０日、ｐ．８９０−８９２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
画像処理プログラムの一例として、入力画像におけるテンプレート画像の位置を検出するための画像認識プログラムを遺伝的プログラミングによって自動生成することが考えられる。この場合、例えば、学習データとして入力画像と当該画像におけるテンプレート画像の正解位置とが利用される。また、画像認識処理の出力は入力画像におけるテンプレート画像の位置であるので、学習途中におけるアルゴリズムの評価を、入力画像におけるテンプレート画像の位置と正解位置との誤差に基づいて行う方法が考えられる。しかし、このように位置の比較によってアルゴリズムを評価するだけでは、入力画像によって認識位置精度に大きなバラツキが生じるという問題がある。
【０００８】
１つの側面では、本発明は、認識位置精度の高い画像認識プログラムを生成可能なプログラム生成装置、プログラム生成方法および生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、プログラムを遺伝的プログラミングによって生成するプログラム生成装置が提供される。このプログラム生成装置は、記憶部と演算部とを有する。記憶部は、入力画像におけるテンプレート画像の位置を検出する画像認識プログラムの構成要素となる複数の部分プログラムを記憶する。演算部は、複数の部分プログラムの中からそれぞれ２以上の部分プログラムを組み合わせることで複数の個体を生成する。演算部は、複数の個体をそれぞれ用いて、入力画像の各画素にテンプレート画像との類似度を対応づけた類似度マップを算出する。演算部は、類似度マップの分布に基づいて複数の個体のそれぞれについての適応度を算出する。演算部は、複数の個体の中から適応度が所定閾値以上の個体を画像認識プログラムとして出力する。
【００１０】
また、１つの案では、上記のプログラム生成装置と同様の処理がコンピュータにより実効されるプログラム生成方法が提供される。
さらに、１つの案では、上記のプログラム生成装置と同様の処理をコンピュータに実行させる生成プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、認識位置精度の高い画像認識プログラムを生成できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。
【図２】個体の一例を示す図である。
【図３】個体に含めることが可能な要素の例を示す図である。
【図４】画像認識プログラムの生成処理手順の比較例を示す図である。
【図５】交叉の例を示す図である。
【図６】突然変異の例を示す図である。
【図７】第１の個体例に基づく類似度マップを示す図である。
【図８】第２の個体例に基づく類似度マップを示す図である。
【図９】類似度マップの分布と目標分布との形状比較の例を示す図である。
【図１０】画像処理装置のハードウェア構成例を示す図である。
【図１１】画像処理装置が備える処理機能の構成例を示すブロック図である。
【図１２】テンプレート画像の生成例を示す図である。
【図１３】プログラム生成処理手順の例を示すフローチャートである。
【図１４】目標分布の形状変化の例を示す図である。
【図１５】世代交代の回数と適応度および類似度マップとの関係について示す図である。
【図１６】入力画像および目標分布の例を示す図である。
【図１７】第３の実施の形態におけるプログラム生成処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。図１に示すプログラム生成装置１０は、画像に含まれるテンプレート画像１ａの位置を検出するための画像認識プログラムを、遺伝的プログラミングによって生成する。
【００１４】
プログラム生成装置１０は、記憶部１１および演算部１２を有する。記憶部１１は、例えば、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、あるいはＨＤＤ（Hard Disk Drive）、フラッシュメモリなどの不揮発性記憶装置として実装される。演算部１２は、例えば、プロセッサである。
【００１５】
記憶部１１は、画像認識プログラムの構成要素となる複数の部分プログラム２ａ，２ｂ，２ｃ，・・・を記憶する。このような部分プログラムとしては、例えば、テンプレートマッチングの前処理のための各種の画像フィルタなどがある。
【００１６】
演算部１２は、これらの部分プログラム２ａ，２ｂ，２ｃ，・・・の中からそれぞれ２以上の部分プログラムを組み合わせることにより、複数の個体３ａ〜３ｄを生成する（ステップＳ１）。すなわち、個体３ａ〜３ｄはそれぞれ、部分プログラムが組み合わされたプログラムである。この個体生成処理は、例えば、次のような手順を含む。
【００１７】
演算部１２は、部分プログラム２ａ，２ｂ，２ｃ，・・・の中からそれぞれ２以上の部分プログラムを組み合わせることにより、多数の個体を含む個体群を生成する。この個体群に含まれる個体は、最初に演算部１２によって生成された初期個体のみであってもよいし、初期個体の一部が生存選択された個体によって入れ替えられた個体であってもよい。演算部１２は、個体群の中から所定数の親個体を選択する。また、演算部１２は、選択した親個体に対して所定の進化処理を施すことで子個体を生成する。
【００１８】
以上の手順により、個体３ａ〜３ｄが生成される。個体３ａ〜３ｄには、子個体のみが含まれてもよいし、子個体と親個体とが含まれてもよい。
次に、演算部１２は、生成された個体３ａ〜３ｄのそれぞれについての類似度マップ４ａ〜４ｄを算出し、類似度マップ４ａ〜４ｄに基づいて個体３ａ〜３ｄのそれぞれについての適応度を算出する（ステップＳ２）。類似度マップの算出では、テンプレート画像１ａと、入力画像１ｂと、入力画像１ｂにおけるテンプレート画像１ａの正解位置１ｃとが利用される。類似度マップは、次のような手順で算出される。
【００１９】
演算部１２は、個体３ａを用いて、入力画像１ｂにおけるテンプレート画像１ａの位置の検出処理を実行する。演算部１２は、この検出処理の過程で、個体３ａに対応する類似度マップを算出する。類似度マップは、入力画像１ｂの各画素に対してテンプレート画像１ａとの類似度を対応づけた情報である。なお、演算部１２は、上記の検出処理を最後まで実行する必要はなく、類似度マップを算出した段階まで実行すればよい。個体３ｂ〜３ｄにそれぞれ対応する類似度マップ４ｂ〜４ｄについても、同様の手順で対応する算出される。
【００２０】
適応度は、類似度マップ４ａ〜４ｄのそれぞれの分布に基づいて算出される。適応度は、類似度マップの分布の仕方が目標とする分布の仕方に近いほど、高い値とされる。例えば、適応度は、類似度マップ４ａ〜４ｄのそれぞれの分布と、目標分布５との比較に基づいて算出される。図１に例示する目標分布５は、入力画像１ｂにおける正解位置１ｃにピークを有し、そのピークから離れるほど類似度が低下するような形状となっている。このような分布の例としては、正解位置１ｃにピークを有する正規分布がある。
【００２１】
次に、演算部１２は、個体３ａ〜３ｄの中から、適応度が所定閾値以上の個体を画像認識プログラムとして出力する（ステップＳ３）。なお、個体３ａ〜３ｄの中に適応度が所定閾値以上の個体が存在しない場合には、演算部１２は、例えば、個体３ａ〜３ｄの中から適応度に基づいて生存個体を選択し、上記の個体群の一部を生存個体によって置換してもよい。
【００２２】
以上の処理によれば、プログラム生成装置１０は、個体３ａ〜３ｄのそれぞれについて適応度を個体３ａ〜３ｄのそれぞれに基づく類似度マップ４ａ〜４ｄの分布に基づいて算出する。そして、プログラム生成装置１０は、このような個体３ａ〜３ｄのそれぞれについての適応度に基づいて、最終的な画像認識プログラムを出力する。これにより、テンプレート画像１ａの位置の検出精度の高い画像認識プログラムを生成することができる。
【００２３】
ここで、遺伝的プログラミングの学習過程においては、類似度マップの分布形状は様々な形状となり、その形状の違いが適応度の算出精度、すなわち個体３ａ〜３ｄの評価の精度に影響を与えることがある。プログラム生成装置１０は、類似度マップの分布の適正度合いに基づいて適応度を算出することにより、適応度の算出精度を向上させ、その結果、高精度な画像認識プログラムを生成できる。
【００２４】
例えば、学習過程における類似度マップの分布形状は、互いに近い類似度の複数のピークを有するような形状になる場合がある。このような形状の場合、たとえ複数のピークのうち正解位置１ｃのピークが最大の類似度であったとしても、撮像時の環境変化などによって入力画像が変化した場合に、正解位置１ｃ以外のピークが最大の類似度になり、位置の誤検出が発生する可能性がある。すなわち、類似度マップが上記のような形状になるような個体（プログラム）は、ロバスト性が低い。
【００２５】
例えば、個体３ａ〜３ｄのそれぞれの適応度を、類似度が最大値となる位置と正解位置１ｃとの誤差だけに基づいて算出する方法では、上記のようなロバスト性を評価することはできない。このため、ロバスト性の低い個体の適応度を高く評価してしまい、結果的に位置検出精度の低い画像認識プログラムが生成される可能性がある。プログラム生成装置１０によれば、類似度マップの分布に基づくことで、ロバスト性を正しく評価した適応度を算出することができ、上記の問題を改善することができる。
【００２６】
〔第２の実施の形態〕
以下の説明では、第２の実施の形態について説明する前に、まず、図２〜図６を用いて、遺伝的プログラミングによる画像認識プログラムの基本的な生成手順を示す比較例について説明し、さらに、図７，図８を用いて、比較例における問題点について説明する。そして、その後に第２の実施の形態に係る画像処理装置について説明する。ここで、比較例および第２の実施の形態のどちらでも、生成される画像認識プログラムは、テンプレート画像が入力画像内のどの位置に存在するかを検出するテンプレートマッチング処理を実行するためのプログラムである。
【００２７】
図２は、個体の一例を示す図である。遺伝的プログラミングでは、最初に複数の個体を含む個体群が生成される。最初に生成される個体は「初期個体」と呼ばれる。各個体は、複数の部分プログラムが組み合わされた画像処理プログラムである。
【００２８】
テンプレートマッチング処理を実現する場合、図２に例示するように、各個体は、２つの入力端子Ｉ１，Ｉ２、出力端子Ｏ１、および複数の部分プログラムという要素によって構成される。入力端子Ｉ１には、テンプレート画像の位置の探索対象とされる入力画像が入力され、入力端子Ｉ２には、テンプレート画像が入力される。出力端子Ｏ１からは、入力画像におけるテンプレート画像の位置が出力される。
【００２９】
個体には、マッチング処理を実行する部分プログラムＭと、その他の処理を実行する１以上の部分プログラムとが含まれる。以下の説明では、その他の処理を実行する部分プログラムの例として画像フィルタを適用する。図２に例示した個体には、画像フィルタＦ１〜Ｆ７が含まれている。
【００３０】
初期個体は、木構造で定義される。なお、図２の例では、フィルタＦ３の出力がフィルタＦ４，Ｆ５に接続されているが、実際には２つのフィルタＦ３の出力がそれぞれフィルタＦ４，Ｆ５に接続されることで、木構造とされる。
【００３１】
初期個体は、さらに次のようなルールにしたがって生成されるものとする。マッチング処理を実行する部分プログラムＭの出力は、出力端子Ｏ１の入力に接続される。部分プログラムＭは第１の入力と第２の入力とを備え、それらのうち第２の入力には、入力端子Ｉ２の出力が接続される。部分プログラムＭの第１の入力と入力端子Ｉ１との間には、１以上の画像フィルタが配置される。
【００３２】
部分プログラムＭの第１の入力と入力端子Ｉ１との間に配置される画像フィルタ（図２の例では画像フィルタＦ１〜Ｆ７）は、テンプレートマッチング処理の前処理を実行するものである。この前処理とは、部分プログラムＭでの処理に適するように入力画像を加工するものである。このような処理としては、入力画像からの特徴量の抽出などがある。部分プログラムＭは、第１の入力から入力される画像内を走査し、その画像の各画素を中心とした領域ごとに、入力端子Ｉ２から第２の入力を介して入力されたテンプレート画像との類似度を算出する。マッチングの結果として、類似度が最大の領域に対応する画素の座標が出力端子Ｏ１を介して出力される。なお、以下の説明では、マッチングの結果として出力される座標を「マッチング位置」と記載する場合がある。
【００３３】
図３は、個体に含めることが可能な要素の例を示す図である。図３の表４０に示す要素のうち、平滑化フィルタ、ソベルフィルタ、ラプラシアンフィルタ、階調反転フィルタ、差分フィルタ、積算フィルタ、差分絶対値フィルタ、閾値処理フィルタ、エッジ検出フィルタおよびNo Changeフィルタは、個体に含めることが可能な画像フィルタの例である。なお、No Changeフィルタは、入力画像に対して何も処理を施さないフィルタである。
【００３４】
初期個体が生成される際には、初期個体に含められる画像フィルタが、表４０のようにあらかじめ用意された画像フィルタの中から選択される。また、後述する進化過程の突然変異の際にも、表４０のようにあらかじめ用意された画像フィルタの中から置換後の画像フィルタが選択される。
【００３５】
図４は、画像認識プログラムの生成処理手順の比較例を示す図である。画像認識プログラムの生成処理の前に、１つ以上の学習データ５０とテンプレート画像５１とが用意される。学習データ５０には、入力画像５０ａと、入力画像５０ａにおけるテンプレート画像５１の正解位置５０ｂとが含まれる。入力画像５０ａは、例えば、カメラによって被写体を撮像することによって得られる。
【００３６】
遺伝的プログラミングによる画像認識プログラムの生成処理は、例えば、次のように実行される。まず、複数の初期個体による個体群６１が生成される（ステップＳ１１）。各初期個体のノードのうち、マッチング処理を実行する部分プログラムＭの第１の入力の配下のノードには、前述のようにあらかじめ用意された複数の画像フィルタの中から、画像フィルタがランダムに選択されて組み込まれる。次に、生成された個体群６１の中から、ランダムに２つの親個体が取り出される（ステップＳ１２）。
【００３７】
次に、これら２つの親個体に対して進化過程の処理が施されることで、２つ以上の子個体が生成される（ステップＳ１３）。進化過程では、２つの親個体に対して交叉処理および突然変異処理が行われる。２つの親個体に対して、それぞれ異なる交叉処理や突然変異処理が行われることで、３つ以上の子個体が生成されてもよい。
【００３８】
次に、進化過程を経て生成された子個体、および元の親個体のそれぞれについて、適応度が計算される（ステップＳ１４）。この処理では、対象の個体それぞれを用いたテンプレートマッチング処理が、学習データ５０の入力画像５０ａに対して実行され、処理結果の正しさを示す適応度が計算される。処理結果とは、入力画像５０ａにおけるテンプレート画像５１の位置（マッチング位置）である。適応度の計算方法としては、算出されたマッチング位置と正解位置５０ｂとの差分を計算する方法がある。なお、複数の学習データ５０が存在する場合、個体それぞれについて、複数の学習データ５０それぞれの入力画像５０ａを用いて得られた適応度の平均値が算出される。
【００３９】
ここで、いずれかの個体の適応度が所定の閾値以上であった場合には、その個体が最終的な画像認識プログラムとして出力され、プログラム生成処理が終了する。一方、すべての個体の適応度が所定の閾値未満であった場合には、生成された各子個体および元の２つの親個体を含む個体群６２の中から、生存選択が行われる（ステップＳ１５）。この生存選択では、個体群６２の中から、算出された適応度が最大の個体が選択される。さらに、個体群６２内の残りの個体の中から、所定の方法で個体が１つ選択される。例えば、残りの個体の中から、適応度に応じた確率で個体が選択される。
【００４０】
このような生存選択によって選択された２つの個体は、個体群６１に含まれる個体のうち、親個体として取り出された２つの個体と入れ替えられる（ステップＳ１６）。これにより、個体群６１に含まれる個体が次世代の個体へ変更される。そして、適応度が所定の閾値以上となる個体が出現するまで、同様の処理が繰り返される。
【００４１】
図５は、交叉の例を示す図である。図５では、親個体７１ａと親個体７２ａとの間で交叉が行われ、親個体７１ａに基づく子個体７１ｂと、親個体７２ａに基づく子個体７２ｂとが生成される場合の例を示す。なお、図５では、各個体において接続位置があらかじめ決められている入力端子Ｉ２、出力端子Ｏ１および部分プログラムＭについての図示を省略している。
【００４２】
親個体７１ａは、画像フィルタＦ１〜Ｆ７を含み、親個体７２ａは、画像フィルタＦ１，Ｆ３，Ｆ６，Ｆ７，Ｆ８，Ｆ９を含む。ここで、親個体７１ａにおける画像フィルタＦ２のノードと、親個体７２ａにおける画像フィルタＦ８のノードが、交叉を行う箇所として選択されたものとする。
【００４３】
交叉の処理では、例えば、選択されたノードだけでなく、そのノードより下位階層のノードも交叉の対象となる。このため、図５の例では、親個体７１ａにおける画像フィルタＦ２，Ｆ１および入力端子Ｉ１と、親個体７２ａにおける画像フィルタＦ８，Ｆ１および入力端子Ｉ１とが入れ替えられる。このような交叉により、画像フィルタＦ１，Ｆ３〜Ｆ８を含む子個体７１ｂと、画像フィルタＦ１〜Ｆ３，Ｆ６，Ｆ７，Ｆ９を含む子個体７２ｂとが生成される。
【００４４】
図６は、突然変異の例を示す図である。図６において、個体７３ａは、画像フィルタＦ１，Ｆ３〜Ｆ８を含む。この個体７３ａは、例えば、個体群６１から取り出された親個体であってもよいし、または、個体群６１から親個体として取り出された後、交叉が行われた個体であってもよい。
【００４５】
ここで、個体７３ａにおける画像フィルタＦ８のノードが突然変異を行う箇所として選択されるとともに、突然変異による置き換え後の画像フィルタとして画像フィルタＦ１０が選択されたものとする。このような突然変異により、画像フィルタＦ１，Ｆ３〜Ｆ７，Ｆ１０を含む子個体７３ｂが生成される。なお、突然変異による置き換え後の画像フィルタは、あらかじめ用意された複数の画像フィルタの中からランダムに選択される。
【００４６】
ところで、図４で説明したように、画像認識プログラムを生成する場合、個体の適応度としては、個体に基づいて算出されたマッチング位置と正解位置との差分を用いることができる。しかし、このような適応度を用いた場合、ロバスト性の低い画像認識プログラムが生成される可能性があるという問題がある。
【００４７】
ここで、２つの個体の例に基づく類似度マップを図７，図８に示す。類似度マップとは、個体（プログラム）にしたがって実行される処理の途中で得られる中間データであり、入力画像の各画素について算出されたテンプレート画像との類似度を、画素ごとにプロットしたものである。
【００４８】
図７は、第１の個体例に基づく類似度マップを示す図である。また、図８は、第２の個体例に基づく類似度マップを示す図である。図７および図８において、ｘ軸は入力画像の水平方向の画素を示し、ｙ軸は入力画像の垂直方向の画素を示し、ｚ軸は、画素について算出された類似度を示す。図７のグラフ８１ａ，８１ｂは、第１の個体例に基づく類似度マップのうち、類似度のピークをとる画素を含む水平ラインおよび垂直ラインについての類似度をそれぞれグラフ化したものである。同様に、図８のグラフ８２ａ，８２ｂは、第２の個体例に基づく類似度マップのうち、類似度のピークをとる画素を含む水平ラインおよび垂直ラインについての類似度をそれぞれグラフ化したものである。
【００４９】
第１の個体例と第２の個体例では、類似度のピークをとる画素の位置はともに同じである。この場合、前述の図４のステップＳ１４に示したようにマッチング位置と正解位置との差分を計算する方法で適応度を計算した場合、第１の個体例の適応度と第２の個体例の適応度は同じ値となるので、同じ性能を有するプログラムと評価される。しかし、例えばグラフ８１ａとグラフ８２ａとを比較すると、グラフ８１ａの方が、類似度が最大となる位置以外の場所にも最大値に近い類似度を有するピークが多数存在している。このため、第１の個体例は、第２の個体例と比較した場合に、入力画像の変化があった場合に誤認識する（すなわち、テンプレート画像の位置を間違える）可能性が高く、ロバスト性が低い。
【００５０】
すなわち、上記の方法で算出した適応度を用いた場合には、この適応度によればテンプレートマッチングの精度が同じと評価されるにもかかわらず、実際にはロバスト性の違いに起因する精度差がある可能性がある。このため、必ずしも検出位置精度の高い画像認識プログラムを生成できない可能性があるという問題がある。
【００５１】
ここで、上記の手順により生成される画像認識プログラムの用途の例としては、ＦＡ（Factory Automation）分野において、製品を撮像した画像に画像処理を施して所望の効果を得るという用途が考えられる。例えば、製造ライン上の製品の認識や検査などを目的として、製品の外観を撮像した画像から特定の部品の位置を検出することが考えられる。
【００５２】
このような用途では、被写体となる製品の変更や改良、それに伴う撮像環境の変化などに応じて、画像認識アルゴリズムの再構築の必要が生じる場合がある。このため、アルゴリズム構築の容易性が求められている。そして、照明条件の変化や被写体の形状、位置姿勢のバラツキなどの撮像環境の変化に対するロバスト性が高いアルゴリズムを構築することが求められている。
【００５３】
そこで、第２の実施の形態では、上記比較例における適応度の算出方法を変形することで、ロバスト性の高い画像認識プログラムを安定的に生成できるようにする。具体的には、適応度として、個体の実行により算出された類似度マップの分布と、類似度マップの目標分布との形状の類似度を利用する。
【００５４】
以下、第２の実施の形態に係る画像処理装置について説明する。
図９は、類似度マップの分布と目標分布との形状比較の例を示す図である。本実施の形態の画像処理装置は、図４のステップＳ１４に対応する適応度の計算過程において、個体（プログラム）にしたがってテンプレートマッチング処理を実行し、その処理の中間情報として類似度マップを取得する。図９のグラフ８３ａは、得られた類似度マップを３次元表示したものである。
【００５５】
画像処理装置は、得られた類似度マップの分布を、あらかじめ設定された類似度マップの目標分布と比較し、形状の類似度を適応度として算出する。図９のグラフ８３ｂは、類似度マップの目標分布を３次元表示したものである。このグラフ８３ｂの例のように、目標分布は、テンプレート画像の正解位置に唯一のピークを有し、ピークから離れるほど類似度が低下するような形状を有する。好ましい例としては、目標分布はガウス分布（正規分布）である。
【００５６】
個体に基づく類似度マップの分布が目標分布に近い場合、その個体を用いたテンプレートマッチング処理によって得られるマッチング位置が正解位置以外の位置になる可能性は非常に低い。このため、個体に基づく類似度マップの分布と目標分布との間の形状の類似度は、その個体を用いたテンプレートマッチング処理のロバスト性の高さを示すと考えることができる。したがって、適応度としてこのような形状類似性を用いることで、ロバスト性の高い画像認識プログラムが生成される確率を高めることができる。
【００５７】
目標分布は、例えば、計算式にしたがってあらかじめ用意される。あるいは、目標分布は、学習過程で適宜算出し直されてもよい。本実施の形態では、例として後者の方法を採用する。具体的には、個体群６１（図４参照）が更新されるたびに、個体群６１に含まれる各個体に基づいて算出されるマッチング位置と正解位置との差に基づいて、目標分布が算出される。
【００５８】
図１０は、画像処理装置のハードウェア構成例を示す図である。画像処理装置１００は、例えば、図１０に示すようなコンピュータとして実現される。
画像処理装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００５９】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、画像処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００６０】
バス１０９に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６、ネットワークインタフェース１０７および通信インタフェース１０８がある。
【００６１】
ＨＤＤ１０３は、画像処理装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００６２】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａの画面に表示させる。表示装置としては、液晶ディスプレイや有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００６３】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００６４】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００６５】
ネットワークインタフェース１０７は、ネットワーク１０７ａを介して他の装置との間でデータの送受信を行う。
通信インタフェース１０８は、接続された外部デバイスとの間でデータの送受信を行う。本実施の形態では、通信インタフェース１０８には、外部デバイスとしてカメラ１０８ａが接続されており、通信インタフェース１０８は、カメラ１０８ａから送信された画像データをプロセッサに送信する。
【００６６】
以上のようなハードウェア構成によって、画像処理装置１００の処理機能を実現することができる。
図１１は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置１００は、図１に示したプログラム生成装置１０と同様の処理機能と、この処理機能によって生成された画像認識プログラムを実行して画像処理を行う機能とを備える。画像処理装置１００は、画像取得部１１１、画像処理部１１２、プログラム生成部１２０、プログラム記憶部１３０、要素記憶部１４１、学習データ記憶部１４２および中間データ記憶部１４３を有する。
【００６７】
画像取得部１１１、画像処理部１１２およびプログラム生成部１２０の処理は、例えば、画像処理装置１００のプロセッサ１０１が所定のプログラムを実行することで実現される。また、画像処理部１１２の処理の一部は、プログラム記憶部１３０に保存された画像認識プログラムを、画像処理装置１００のプロセッサ１０１が実行することで実現される。プログラム記憶部１３０、要素記憶部１４１および学習データ記憶部１４２は、例えば、画像処理装置１００のＨＤＤ１０３の記憶領域として実現される。中間データ記憶部１４３は、例えば、画像処理装置１００のＲＡＭ１０２の記憶領域として実現される。
【００６８】
画像取得部１１１は、撮像された画像のデータをカメラ１０８ａから取得し、プログラム生成部１２０または画像処理部１１２に出力する。
プログラム生成部１２０は、遺伝的プログラミングにより画像認識プログラムを生成し、生成された画像認識プログラムをプログラム記憶部１３０に保存する。なお、プログラム生成部１２０の内部構成については後述する。
【００６９】
画像処理部１１２は、カメラ１０８ａによって撮像された画像のデータを画像取得部１１１を介して取得する。画像処理部１１２は、プログラム記憶部１３０に保存された画像認識プログラムにしたがって、取得した画像のデータを用いてテンプレートマッチング処理を行い、画像におけるテンプレート画像の位置を出力する。
【００７０】
プログラム記憶部１３０は、プログラム生成部１２０によって生成された画像認識プログラムを記憶する。
要素記憶部１４１は、プログラム生成部１２０によって生成される各個体に組み込むことが可能な要素のデータを記憶する。これらの要素は、図３の表４０に示した要素であり、例えば、各種の画像フィルタのプログラムや、マッチング処理を実行するプログラムなどが含まれる。
【００７１】
学習データ記憶部１４２は、入力画像と、入力画像におけるテンプレート画像の正解位置とをそれぞれ含む学習データを、１組以上記憶する。学習データに含まれる入力画像は、例えば、画像処理装置１００に接続されたカメラ１０８ａによって撮像された画像であってもよい。また、学習データ記憶部１４２は、マッチング対象のテンプレート画像を記憶する。
【００７２】
中間データ記憶部１４３は、プログラム生成部１２０の処理中に生成される各種のデータを一時的に記憶する。例えば、中間データ記憶部１４３は、要素記憶部１４１に記憶された要素を組み合わせて生成される個体に対応するプログラム、個体の実行によって得られる位置や類似度マップの各データ、適応度の算出のために計算される各種のデータ、各個体について算出された適応度のデータなどを記憶する。
【００７３】
プログラム生成部１２０は、学習制御部１２１、プログラム実行部１２２および適応度算出部１２３を有する。
学習制御部１２１は、プログラム生成部１２０でのプログラム生成処理全体を統括的に制御する。例えば、学習制御部１２１は、初期個体の生成、個体の進化処理、適応度に基づく生存選択および最終的な画像認識プログラムの出力、生存選択された個体による個体群の更新などの処理を実行する。
【００７４】
プログラム実行部１２２は、学習制御部１２１からの指示に応じて、個体（プログラム）を実行する。プログラム実行部１２２は、個体の実行により、入力画像におけるテンプレート画像の位置を検出し、さらに必要に応じて、その処理過程で生成される類似度マップを出力する。
【００７５】
適応度算出部１２３は、学習制御部１２１からの指示に応じて、各個体を評価するための適応度を算出する。後述するように、適応度としては、位置適応度、形状類似度、総合適応度がある。また、適応度算出部１２３は、適応度の算出に必要な目標分布などのデータの算出も行う。
【００７６】
ここで、図１２は、テンプレート画像の生成例を示す図である。画像処理装置１００の管理者は、例えば、対象部品９１が写った撮像画像９０をカメラ１０８ａに撮像させる。テンプレート画像９２は、このような撮像画像９０から対象部品９１を切り出すことで生成することができる。また、この撮像画像９０を学習データの入力画像として使用することもできる。
【００７７】
次に、画像処理装置１００における画像認識プログラムの生成処理について、フローチャートを用いて説明する。図１３は、プログラム生成処理手順の例を示すフローチャートである。
【００７８】
［ステップＳ２１］学習制御部１２１は、学習データの設定のための入力操作を受け付ける。例えば、学習データ記憶部１４２に記憶された学習データの中から、本処理で使用される学習データが指定される。
【００７９】
［ステップＳ２２］学習制御部１２１は、要素記憶部１４１に登録された要素を組み合わせることで、複数の初期個体を生成し、生成された初期個体を中間データ記憶部１４３に格納する。この処理において生成される個体群は図３に示した個体群６１に相当するので、これ以後、「個体群６１」と表記する。
【００８０】
［ステップＳ２３］次のような手順で、個体群６１に含まれる各個体についての位置適応度ｆk1が算出される。学習制御部１２１は、個体群６１に含まれる個体を１つ選択し、選択した個体をプログラム実行部１２２に実行させる。プログラム実行部１２２は、選択された個体にしたがって、ステップＳ２１で指定された学習データに含まれる入力画像におけるテンプレート画像の位置（マッチング位置）を算出する。学習制御部１２１は、プログラム実行部１２２によって算出されたマッチング位置と、ステップＳ２１で指定された学習データに含まれる正解位置とを適応度算出部１２３に通知して、位置適応度ｆk1の算出を指示する。適応度算出部１２３は、マッチング位置と正解位置との差分ｄkを算出し、次の式（１）にしたがって位置適応度ｆk1を算出する。
【００８１】
【数１】
0006511986.tif 000002
【００８２】
式（１）において、σは、目的とする位置検出精度に応じてあらかじめ設定されるパラメータである。
学習制御部１２１の制御により個体群６１に含まれるすべての個体について上記処理が実行されることで、すべての個体についての位置適応度ｆk1が算出される。なお、個体群６１に含まれる個体のうち、以前のステップＳ２３の実行によって位置適応度ｆk1が算出済みである個体については、ステップＳ２３での位置適応度ｆk1の算出がスキップされてもよい。
【００８３】
［ステップＳ２４］学習制御部１２１は、適応度算出部１２３に目標分布Ｔ（ｉ，ｊ）の算出を指示する。適応度算出部１２３は、次の式（２）にしたがって目標分布Ｔ（ｉ，ｊ）を算出する。
【００８４】
【数２】
0006511986.tif 000003
【００８５】
式（２）において、ｉ，ｊは、入力画像の画素の座標を示す。ａｖｅ（ｆk1）2は、ステップＳ２３で算出された、個体群６１に含まれる全個体についての位置適応度ｆk1の平均値である。δは、学習用の調整パラメータである。
【００８６】
学習制御部１２１は、算出された目標分布Ｔ（ｉ，ｊ）を中間データ記憶部１４３に格納する。なお、学習制御部１２１は、以前のステップＳ２４の実行によって算出された目標分布Ｔ（ｉ，ｊ）が中間データ記憶部１４３に保存されている場合、この目標分布Ｔ（ｉ，ｊ）を新たに算出された目標分布Ｔ（ｉ，ｊ）によって更新する。
【００８７】
［ステップＳ２５］学習制御部１２１は、個体群６１に含まれる個体の中から、２つの親個体をランダムに選択する。
［ステップＳ２６］学習制御部１２１は、選択された２つの親個体の間で交叉を行うことで、２つ以上の所定数の子個体を生成する。
【００８８】
［ステップＳ２７］学習制御部１２１は、生成された子個体のいずれかのノードに突然変異を発生させ、元の子個体のノードに組み込まれていた画像フィルタを、要素記憶部１４１に登録されている他の画像フィルタのいずれかに置き換える。
【００８９】
［ステップＳ２８］ステップＳ２５で選択された各親個体、および、ステップＳ２６，Ｓ２７の処理によって得られた各子個体について、位置適応度ｆk2、形状類似度Ｒk、および総合類似度Ｆkが算出される。この処理では、算出対象の各個体について次のような処理が行われる。
【００９０】
学習制御部１２１は、算出対象の各個体をプログラム実行部１２２に実行させ、各個体によるマッチング位置を算出させるとともに、算出過程で個体ごとに得られる類似度マップＩ（ｉ，ｊ）を取得する。
【００９１】
学習制御部１２１は、算出されたマッチング位置に基づき、適応度算出部１２３に各個体についての位置適応度ｆk2を算出させる。位置適応度ｆk2は、各個体についてのマッチング位置と正解位置との差分ｄkを用いて、式（１）にしたがって算出される。ここでは、ステップＳ２８で算出される位置適応度ｆk2を、ステップＳ２３で算出される位置適応度ｆk1と区別して表記する。なお、親個体についての位置適応度ｆk2はステップＳ２３で算出済みなので、ステップＳ２８での算出がスキップされてもよい。
【００９２】
学習制御部１２１は、適応度算出部１２３に各個体についての形状類似度Ｒkを算出させる。適応度算出部１２３は、次の（３）にしたがって各個体についての形状類似度Ｒkを算出する。
【００９３】
【数３】
0006511986.tif 000004
【００９４】
式（３）において、Ｉ（ｉ，ｊ）は、対応する個体の実行により得られた類似度マップであり、Ｉaveは、当該類似度マップＩ（ｉ，ｊ）における類似度の平均値を示す。Ｔ（ｉ，ｊ）は、ステップＳ２４で算出された目標分布であり、Ｔaveは、当該目標分布Ｔ（ｉ，ｊ）における類似度の平均値を示す。式（３）によって算出される形状類似度Ｒkは、対応する個体についての類似度マップＩ（ｉ，ｊ）の分布の形状と、目標分布Ｔ（ｉ，ｊ）の形状との類似度を示す。
【００９５】
学習制御部１２１は、適応度算出部１２３に各個体についての総合類似度Ｆkを算出させる。適応度算出部１２３は、個体ごとに、個体に対応する位置適応度ｆk2と形状類似度Ｒkとから次の式（４）にしたがって総合類似度Ｆkを算出する。
Ｆk＝Ｒk・ｆk2      ・・・（４）
［ステップＳ２９］学習制御部１２１は、ステップＳ２５で選択された各親個体、および、ステップＳ２６，Ｓ２７の処理によって得られた各子個体の中に、次の条件を満たす個体があるかを判定する。条件とは、総合類似度Ｆkが所定の閾値Ｔｈ１以上であり、かつ、形状類似度Ｒkが所定の閾値Ｔｈ２以上である、というものである。条件を満たす個体がある場合、ステップＳ３１の処理が実行され、条件を満たす個体がない場合、ステップＳ３０の処理が実行される。
【００９６】
［ステップＳ３０］学習制御部１２１は、ステップＳ２５で選択された各親個体、および、ステップＳ２６，Ｓ２７の処理によって得られた各子個体の中から、総合類似度Ｆkが最大の個体を生存させる個体として選択する。さらに、学習制御部１２１は、残りの個体の中から生存させる個体をさらに１つ選択する。この選択処理では、例えば、算出された総合類似度Ｆkに応じた確率で個体が選択される。
【００９７】
学習制御部１２１は、選択した２つの個体によって、個体群６１に含まれる個体のうちステップＳ２５で選択した親個体を置換する。これによって、個体群６１の世代が更新される。
【００９８】
［ステップＳ３１］学習制御部１２１は、ステップＳ２９で条件を満たした個体が示す画像認識プログラムをプログラム記憶部１３０に格納して、処理を終了する。なお、ステップＳ２９で複数の個体が条件を満たした場合、学習制御部１２１は、例えば、総合類似度Ｆkが最大の個体が示す画像認識プログラムをプログラム記憶部１３０に格納する。
【００９９】
以上の図１３の処理によれば、ステップＳ２４において、個体群６１に含まれる各個体についての位置適応度ｆk1に基づいて、目標分布Ｔ（ｉ，ｊ）が算出される。目標分布Ｔ（ｉ，ｊ）は、正解位置にピークを有する正規分布となる。そして、ステップＳ２８において、進化過程で得られた各個体についての位置適応度ｆk2とともに、これらの各個体に基づく類似度マップＩ（ｉ，ｊ）の分布と目標分布Ｔ（ｉ，ｊ）の分布との形状の類似度合いを示す形状類似度Ｒkが算出される。
【０１００】
ステップＳ３０では、位置適応度ｆk2と形状類似度Ｒkとが加味された指標に基づいて、次世代に生存させる個体が選択される。これにより、マッチング結果が正解位置に近いだけでなく、類似度マップＩ（ｉ，ｊ）の形状が目標分布Ｔ（ｉ，ｊ）の形状に近く、ロバスト性が向上した個体が、個体群６１に多く残るようになる。
【０１０１】
また、ステップＳ２９でも、位置適応度ｆk2と形状類似度Ｒkとが加味された指標に基づいて、最終的な画像認識プログラムとして出力すべき個体が判定される。特にステップＳ２９では、形状類似度Ｒkが閾値と直接的に比較されることで、ステップＳ３０より形状類似度Ｒkを重視した判定が行われ、出力される画像認識プログラムとしてロバスト性の高い個体が確実に選択されるようになる。
【０１０２】
また、上記のように、個体群６１が更新されるたびに、個体群６１には類似度マップＩ（ｉ，ｊ）の形状が目標分布Ｔ（ｉ，ｊ）の形状に近い個体が多くなる。このため、ステップＳ２４で算出される目標分布Ｔ（ｉ，ｊ）の形状は、次の図１４に示すように徐々に変化していく。
【０１０３】
図１４は、目標分布の形状変化の例を示す図である。グラフ８４ａ，８４ｂ，８４ｃは、図１３の処理が開始されてからそれぞれ初期、中期、後期に生成される目標分布Ｔ（ｉ，ｊ）の一例を示している。この図１４の例のように、目標分布Ｔ（ｉ，ｊ）の形状は、処理が進行していくに連れて、正解位置の周囲の傾きが急峻な形状に徐々に変化していく。
【０１０４】
グラフ８４ａのように目標分布Ｔ（ｉ，ｊ）の傾きが緩やかな場合には、マッチング位置の正確性よりロバスト性を重視した個体の評価が行われる。そして、目標分布Ｔ（ｉ，ｊ）の傾きが徐々に急峻になっていくに連れて、正解位置の近傍でのマッチング位置の正確性が高められていく。このような処理により、最終的に、ロバスト性が高く、マッチング位置の正確性も高い画像認識プログラムを生成することができる。
【０１０５】
図１５は、世代交代の回数と適応度および類似度マップとの関係について示す図である。グラフ８５ａは、世代交代の回数と適応度との関係の例を示す。適応度は、位置適応度ｆk2としている。グラフ８５ｂ，８５ｃ，８５ｄ，８５ｅは、それぞれ１世代、数十世代、２００世代、１０００世代における個体の類似度マップの例を示す。グラフ８５ｂ，８５ｃ，８５ｄ，８５ｅは、類似度マップのデータのうち、正解位置を通る水平ライン上のデータを示したものである。
【０１０６】
これらのグラフ８５ｂ，８５ｃ，８５ｄ，８５ｅからわかるように、類似度マップの分布形状は、学習の初期では正解位置付近の類似度とそれ以外の領域の類似度との差が大きくなるように変化していく。その結果、正解位置から離れた位置に存在していたピークが徐々に消えていき、ロバスト性が高まる方向に性能が変化していく。そして、ある程度学習が進んでいくと、ピークの近傍における傾きが急峻になり、正解位置での類似度だけが突出して大きくなる。これにより、正解位置の近傍でのマッチング位置の正確性が高くなる。
【０１０７】
なお、以上の第２の実施の形態では、個体群６１に含まれる各個体についての位置適応度ｆk1に基づいて、目標分布Ｔ（ｉ，ｊ）が動的に算出される。しかし、目標分布Ｔ（ｉ，ｊ）は、固定的に与えられてもよい。また、傾きの急峻性が異なる複数の目標分布Ｔ（ｉ，ｊ）を用意しておき、学習が進むに連れて利用する目標分布Ｔ（ｉ，ｊ）を傾きが急峻なものに変更していってもよい。
【０１０８】
〔第３の実施の形態〕
第３の実施の形態では、第２の実施の形態を、顔画像を認識する画像認識プログラムを生成するように変形した例を示す。なお、第３の実施の形態に係る画像処理装置の基本的な構成は第２の実施の形態と同様であるので、第２の実施の形態と同様の符号を用いて説明する。
【０１０９】
図１６は、入力画像および目標分布の例を示す図である。図１６に示す画像９３は、入力画像の一例であり、２つの顔９４ａ，９４ｂを含む。画像認識プログラムにより、顔のテンプレート画像を用いたテンプレートマッチング処理が実行される。なお、顔のテンプレート画像としては、例えば、多数の顔画像から生成された平均画像が用いられる。
【０１１０】
第３の実施の形態で生成される画像認識プログラムは、マッチング位置が２か所出力されるプログラムとなる。また、第３の実施の形態で生成される個体において、マッチング処理を実行する部分プログラムＭ（図２参照）は、例えば、類似度が最大の座標と２番目の座標とをそれぞれマッチング位置として出力する。また、学習データには、入力画像とともに、各顔に対応する２つの正解位置が含まれる。
【０１１１】
グラフ８６は、第３の実施の形態で用いられる目標分布Ｔ（ｉ，ｊ）の例である。グラフ８６の例のように、本実施の形態では、各顔の正解位置にピークを有する目標分布Ｔ（ｉ，ｊ）が用いられる。
【０１１２】
図１７は、第３の実施の形態におけるプログラム生成処理手順の例を示すフローチャートである。なお、図１７では、図１３と同様の処理が実行される処理ステップには同じ符号を付して示し、その説明を省略する。
【０１１３】
図１７の処理は、ステップＳ２１の次にステップＳ４１が実行される。
［ステップＳ４１］学習制御部１２１は、適応度算出部１２３に目標分布Ｔ（ｉ，ｊ）の算出を指示する。適応度算出部１２３は、各顔の正解位置にそれぞれピークを有する目標分布Ｔ（ｉ，ｊ）を算出する。例えば、適応度算出部１２３は、各顔の正解位置に基づき、次の式（５）にしたがって目標分布Ｔ（ｉ，ｊ）を算出する。
【０１１４】
【数４】
0006511986.tif 000005
【０１１５】
式（５）において、ｘt，ｙtは、ｔ番目の顔の正解位置を示すｘ座標およびｙ座標である。式（５）によって算出される目標分布Ｔ（ｉ，ｊ）は、各顔の正解位置にピークを有する正規分布を合成したものとなる。
【０１１６】
ステップＳ４１の次にステップＳ２２が実行され、さらにステップＳ２５以後の処理が実行される。ただし、ステップＳ２８で算出される位置適応度ｆk2は、例えば、次のように算出される。算出対象の各個体の実行によって個体ごとに２つのマッチング位置が算出される。適応度算出部１２３は、各個体について、マッチング位置とそれに対応する正解位置との２つの組み合わせをそれぞれ用いて式（１）にしたがって位置適応度を算出する。適応度算出部１２３は、算出された２つの位置適応度の合計値または平均値を、その個体についての位置適応度ｆk2とする。
【０１１７】
以上の第３の実施の形態によれば、ロバスト性の高い画像認識プログラムを生成することが可能になる。
なお、上記の各実施の形態に示した装置（プログラム生成装置１０および画像処理装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１２０】
１ａ  テンプレート画像
１ｂ  入力画像
１ｃ  正解位置
２ａ〜２ｃ  部分プログラム
３ａ〜３ｄ  個体
４ａ〜４ｄ  類似度マップ
５  目標分布
１０  プログラム生成装置
１１  記憶部
１２  演算部
Ｓ１〜Ｓ３  ステップ
【図１】
0006511986.tif 000006
【図２】
0006511986.tif 000007
【図３】
0006511986.tif 000008
【図４】
0006511986.tif 000009
【図５】
0006511986.tif 000010
【図６】
0006511986.tif 000011
【図７】
0006511986.tif 000012
【図８】
0006511986.tif 000013
【図９】
0006511986.tif 000014
【図１０】
0006511986.tif 000015
【図１１】
0006511986.tif 000016
【図１２】
0006511986.tif 000017
【図１３】
0006511986.tif 000018
【図１４】
0006511986.tif 000019
【図１５】
0006511986.tif 000020
【図１６】
0006511986.tif 000021
【図１７】
0006511986.tif 000022