(57)【要約】  遺伝的プログラミングによって画像処理プログラムを生成する際の生存選択を適正化する。  演算部（１ｂ）は、それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラム（２１，２２，２３，・・・）の中から画像処理プログラム（２１）を選択し、画像処理プログラム（２１）に含まれる部分プログラムの一部を変更することで画像処理プログラム（２１ａ）を生成し、画像処理プログラム（２１ａ）を用いて入力画像（１１）に対する画像処理を実行し、画像処理の途中で出力される中間出力画像（３１，３２）と第１目標画像（１２）との比較に基づいて、画像処理プログラム（２１ａ）を次世代に残すかを判定し、次世代に残すと判定された場合、画像処理プログラム（２１，２２，２３，・・・）の１つを画像処理プログラム（２１ａ）に入れ替える。
2016208037.tif 000002
【特許請求の範囲】
【請求項１】
遺伝的プログラミングによりプログラムを生成するプログラム生成装置において、
入力画像と第１目標画像とを含む学習データを記憶する記憶部であって、前記第１目標画像は前記入力画像を第２目標画像に変換する処理の途中で出力される画像を示す、前記記憶部と、
それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第１プログラムを選択し、前記第１プログラムに含まれる前記部分プログラムの一部を変更することで第２プログラムを生成し、前記第２プログラムを用いて前記入力画像に対する画像処理を実行し、前記画像処理の途中で出力される中間出力画像と前記第１目標画像との比較に基づいて、前記第２プログラムを次世代に残すかを判定し、前記第２プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの１つを前記第２プログラムに入れ替える演算部と、
を有するプログラム生成装置。
【請求項２】
前記画像処理の実行では、前記第２プログラムに含まれる前記部分プログラムのうち、最終段以外の位置にそれぞれ組み込まれた非最終部分プログラムを実行することにより、前記中間出力画像を前記非最終部分プログラムごとに出力し、
前記判定では、前記非最終部分プログラムごとに出力された前記中間出力画像のそれぞれと前記第１目標画像との比較に基づいて、前記非最終部分プログラムごとに評価値を算出し、前記評価値の最大値に基づいて、前記第２プログラムを次世代に残すかを判定する、
請求項１記載のプログラム生成装置。
【請求項３】
前記演算部は、さらに、前記複数の画像処理プログラムをそれぞれ用いて前記入力画像に対する処理を実行し、前記処理のそれぞれの途中で出力される画像と前記第１目標画像との比較に基づいて、重み係数を算出し、
前記判定では、前記中間出力画像と前記第１目標画像との比較に基づいて第１評価値を算出し、前記画像処理の結果として出力される最終出力画像と前記第２目標画像との比較に基づいて第２評価値を算出し、前記第１評価値と前記第２評価値とを前記重み係数に応じた比率で合成した第３評価値に基づいて、前記第２プログラムを次世代に残すかを判定する、
請求項１記載のプログラム生成装置。
【請求項４】
前記演算部は、さらに、前記複数の画像処理プログラムが現世代の個体として含まれる個体群の世代交代数に基づいて、重み係数を算出し、
前記判定では、前記中間出力画像と前記第１目標画像との比較に基づいて第１評価値を算出し、前記画像処理の結果として出力される最終出力画像と前記第２目標画像との比較に基づいて第２評価値を算出し、前記第１評価値と前記第２評価値とを前記重み係数に応じた比率で合成した第３評価値に基づいて、前記第２プログラムを次世代に残すかを判定する、
請求項１記載のプログラム生成装置。
【請求項５】
前記第１目標画像は、前記入力画像において、特定の処理を施す第１画像領域とそれ以外の第２画像領域とが区別された画像であり、
前記第２目標画像は、前記入力画像における前記第１画像領域に前記特定の処理が施された画像である、
請求項１乃至４のいずれか１項に記載のプログラム生成装置。
【請求項６】
遺伝的プログラミングによりプログラムを生成するプログラム生成方法において、
コンピュータが、
それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第１プログラムを選択し、
前記第１プログラムに含まれる前記部分プログラムの一部を変更することで第２プログラムを生成し、
前記第２プログラムを用いて入力画像に対する画像処理を実行し、
前記画像処理の途中で出力される中間出力画像と、前記入力画像を第２目標画像に変換する処理の途中で出力される画像を示す第１目標画像との比較に基づいて、前記第２プログラムを次世代に残すかを判定し、
前記第２プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの１つを前記第２プログラムに入れ替える、
プログラム生成方法。
【請求項７】
遺伝的プログラミングによりプログラムを生成する生成プログラムにおいて、
コンピュータに、
それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第１プログラムを選択し、
前記第１プログラムに含まれる前記部分プログラムの一部を変更することで第２プログラムを生成し、
前記第２プログラムを用いて入力画像に対する画像処理を実行し、
前記画像処理の途中で出力される中間出力画像と、前記入力画像を第２目標画像に変換する処理の途中で出力される画像を示す第１目標画像との比較に基づいて、前記第２プログラムを次世代に残すかを判定し、
前記第２プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの１つを前記第２プログラムに入れ替える、
生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、プログラム生成方法および生成プログラムに関する。
【背景技術】
【０００２】
所望の画像処理を実行する画像処理プログラムを、遺伝的プログラミングによって自動生成する技術が注目されている。この技術は、入力画像と処理結果の画像（目標画像）の組といった学習データを用いて、画像処理のための部分プログラム（例えば、画像フィルタのプログラム）を組み合わせて生成される画像処理プログラムを、遺伝的プログラミングによって最適化していくものである。【０００３】
また、遺伝的プログラミングを利用した装置の例として、現世代の重みデータと、前世代以前の世代で利用した重みデータとを用いて変換器を進化させるようにした遺伝的処理装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１４０４９号公報
【非特許文献】
【０００５】
【非特許文献１】青木紳也、長尾智晴、「木構造画像変換の自動構築法ＡＣＴＩＴ」、情報メディア学会誌Ｖｏｌ．５３，Ｎｏ．６、１９９９年６月２０日、ｐ．８９０−８９２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
遺伝的プログラミングによって画像処理プログラムを自動生成する処理では、例えば、次のような生存選択方法が用いられる。学習の過程で生成された個体に対応するプログラムを用いて、学習データに含まれる入力画像が処理される。その処理結果として出力された出力画像が学習データに含まれる目標画像と比較され、その比較結果に基づいて個体を次世代に残すかが判定される。【０００７】
しかし、この方法では、画像処理の内容によっては、学習が促進されるような有用な固体が淘汰されてしまう場合があるという問題がある。このような問題は、画像処理プログラムの生成処理に長い時間がかかってしまう原因になり得る。【０００８】
１つの側面では、本発明は、遺伝的プログラミングによって画像処理プログラムを生成する際の生存選択を適正化することが可能なプログラム生成装置、プログラム生成方法および生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、遺伝的プログラミングによってプログラムを生成するプログラム生成装置が提供される。このプログラム生成装置は、記憶部と演算部とを有する。記憶部は、入力画像と第１目標画像とを含む学習データを記憶する。ここで、第１目標画像は、入力画像を第２目標画像に変換する処理の途中で出力される画像を示す。演算部は、それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第１プログラムを選択し、第１プログラムに含まれる部分プログラムの一部を変更することで第２プログラムを生成し、第２プログラムを用いて入力画像に対する画像処理を実行し、画像処理の途中で出力される中間出力画像と第１目標画像との比較に基づいて、第２プログラムを次世代に残すかを判定し、第２プログラムを次世代に残すと判定された場合、複数の画像処理プログラムの１つを第２プログラムに入れ替える。【００１０】
また、１つの案では、上記のプログラム生成装置と同様の処理をコンピュータが実行するプログラム生成方法が提供される。
さらに、１つの案では、上記のプログラム生成装置と同様の処理をコンピュータに実行させる生成プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、遺伝的プログラミングによって画像処理プログラムを生成する際の生存選択を適正化できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。
【図２】画像処理プログラムの生成処理手順の比較例を示す図である。
【図３】交叉の例を示す図である。
【図４】突然変異の例を示す図である。
【図５】画像処理の例を示す図である。
【図６】第２の実施の形態における個体の評価手順の概要を示す図である。
【図７】画像処理装置のハードウェア構成例を示す図である。
【図８】画像処理装置が備える処理機能の構成例を示すブロック図である。
【図９】学習データの第１の例を示す図である。
【図１０】学習データの第２の例を示す図である。
【図１１】プログラム生成処理手順の例を示すフローチャート（その１）である。
【図１２】プログラム生成処理手順の例を示すフローチャート（その２）である。
【図１３】最終評価値および重み係数の変化の例を示す図である。
【図１４】重み係数の算出に用いる変調テーブルについて説明するための図である。
【図１５】第３の実施の形態におけるプログラム生成処理手順の例を示すフローチャート（その１）である。
【図１６】第３の実施の形態におけるプログラム生成処理手順の例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。プログラム生成装置１は、遺伝的プログラミングによって画像処理プログラムを生成する装置である。
【００１４】
プログラム生成装置１は、記憶部１ａと演算部１ｂとを有する。記憶部１ａは、例えば、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、または、ＨＤＤ（Hard Disk Drive）、フラッシュメモリなどの不揮発性記憶装置として実装される。演算部１ｂは、例えば、プロセッサである。
【００１５】
記憶部１ａは、学習データ１０を記憶する。学習データ１０は、入力画像１１、第１目標画像１２および第２目標画像１３を含む。第２目標画像１３は、入力画像１１に画像処理を施した場合に、その処理結果として出力される画像の目標となる画像である。一方、第１目標画像１２は、入力画像１１を第２目標画像１３に変換するような画像処理を施した場合に、その画像処理の途中のどこかの段階で出力される画像の目標となる画像である。例えば、入力画像１１における特定の画像領域に特定の処理を施すという画像処理の場合、第１目標画像１２としては、画像におけるその特定の画像領域と、それ以外の画像領域（背景領域）とが区別された画像を用いることができる。各画像領域は、例えば、特定の画像領域の画素値を最大値とし、背景画像領域の画素値を最小値（０）とするなど、画素値の割り当てによって区別させることができる。
【００１６】
なお、記憶部１ａには、複数組の学習データ１０が記憶されてもよい。
また、記憶部１ａは、プログラム群２０を記憶してもよい。プログラム群２０は、演算部１ｂの処理で利用されるデータであり、複数の画像処理プログラム２１，２２，２３，・・・を含む。プログラム群２０に含まれる画像処理プログラム２１，２２，２３，・・・は、それぞれ、複数の部分プログラムが組み合わされて生成される。部分プログラムは、画像フィルタなどの画像処理を実行するためのプログラム部品である。プログラム生成装置１は、プログラム群２０の世代が更新されるたびに、プログラム群２０に適応度の高い画像処理プログラムを優先的に残存させることによって、所望の画像処理を実行する画像処理プログラムを生成する。
【００１７】
演算部１ｂは、プログラム群２０から画像処理プログラムを選択する（ステップＳ１）。ここでは例として、画像処理プログラム２１が選択されたものとする。次に、演算部１ｂは、選択した画像処理プログラム２１に含まれる部分プログラムの一部を変更することで、画像処理プログラム２１ａを生成する。この処理過程は、画像処理プログラム２１を進化させる過程である（ステップＳ２）。この進化過程では、例えば、画像処理プログラム２１と、プログラム群２０から選択された他の画像処理プログラムとの間の交叉や、画像処理プログラム２１またはその交叉後のプログラムの突然変異などが行われる。
【００１８】
進化過程により、例えば、部分プログラムＰ１〜Ｐ３が組み合わされた画像処理プログラム２１ａが生成されたとする。なお、図１中の「Ｉｎ」は、画像処理プログラム２１ａの入力部を示し、「Ｏｕｔ」は、画像処理プログラム２１ａの出力部を示す。
【００１９】
次に、演算部１ｂは、画像処理プログラム２１ａを用いて、入力画像１１に対する画像処理を実行する（ステップＳ３）。演算部１ｂは、この画像処理の途中で中間出力画像を出力する。例えば、中間出力画像は、画像処理プログラム２１ａに含まれる部分プログラムＰ１〜Ｐ３のうち、最終段に組み込まれた部分プログラムＰ３を除く部分プログラムＰ１，Ｐ２のそれぞれの処理結果として出力される画像である。図１の例では、部分プログラムＰ１の処理結果として中間出力画像３１が出力され、部分プログラムＰ２の処理結果として中間出力画像３２が出力される。
【００２０】
次に、演算部１ｂは、生成された画像処理プログラム２１ａを次世代に残すかを判定する（ステップＳ４）。このステップＳ４の処理は、中間出力画像３１，３２と第１目標画像１２とを比較する処理（ステップＳ４ａ）を含む。このステップＳ４ａでは、例えば、画像間の類似度が比較結果として出力される。また、図１の例のようにステップＳ４ａで複数の中間出力画像３１，３２と第１目標画像１２とが比較される場合、その比較結果としては、例えば、中間出力画像３１，３２と第１目標画像１２との各類似度の最大値が出力される。演算部１ｂは、ステップＳ４ａでの比較結果に基づいて、画像処理プログラム２１ａを次世代に残すかを判定する。
【００２１】
なお、ステップＳ４では、ステップＳ４ａでの比較結果だけでなく、画像処理プログラム２１ａの実行結果として出力される最終出力画像と、第２目標画像１３との比較結果を用いて、判定が行われてもよい。
【００２２】
ステップＳ４において画像処理プログラム２１ａを次世代に残すと判定された場合、演算部１ｂは、プログラム群２０に含まれる画像処理プログラム２１，２２，２３，・・・の１つを、画像処理プログラム２１ａに入れ替える（ステップＳ５）。これにより、プログラム群２０の世代が更新される。
【００２３】
ここで、画像処理プログラム２１ａを次世代に残すかの判定方法としては、画像処理プログラム２１ａによる画像処理の結果として出力される最終出力画像と、第２目標画像１３との比較に基づいて判定する方法が考えられる。しかし、この方法では、画像処理の途中で、第１目標画像１２のような所望の画像に近い画像が生成されていたとしても、最終画像と第２目標画像１３とが類似していなければ、画像処理プログラム２１ａは淘汰され、次世代のプログラム群２０に残らない。このように、学習の促進に役立つ可能性の高い有効な画像処理プログラムが淘汰されてしまうことが、画像処理プログラムの生成が完了するまでにかかる時間を長くする原因となり得る。
【００２４】
これに対して、ステップＳ４ａでの比較結果は、画像処理プログラム２１ａの実行途中で出力される中間出力画像が、所望の画像に近いかの指標を示す。ステップＳ４においてこのような指標に基づいて判定が行われることで、画像処理プログラム２１ａの実行途中で適切な画像を出力できる可能性の高い画像処理プログラムが、淘汰されずに次世代のプログラム群２０に残存するようになる。これにより、処理過程が適切と指定される画像処理プログラムが次世代に残りやすくなるように、生存選択が適正化される。
【００２５】
そして、上記手順で世代が更新されたプログラム群２０を用いてステップＳ１〜Ｓ５の処理が繰り返し実行されることで、ステップＳ４ａでの比較結果が示す画像間の近さの度合いが上昇する速度が速まっていき、学習速度が向上する。これにより、プログラム群２０に含まれる画像処理プログラム、および、それらの画像処理プログラムから進化過程によって生成された画像処理プログラムの適応度の最大値が、所定の閾値に達するまでの時間が短くなる。すなわち、所望の処理を実現する画像処理プログラムが生成されるまでの時間が短縮される。
【００２６】
〔第２の実施の形態〕
次に、第２の実施の形態に係る画像処理装置について説明する。第２の実施の形態に係る画像処理装置は、図１に示したプログラム生成装置１と同様の処理機能と、この処理機能によって生成された画像処理プログラムを実行して画像処理を行う機能とを備える。
【００２７】
以下の説明では、まず、図２〜図４を用いて、遺伝的プログラミングによる画像処理プログラムの生成処理の基本的な手順を示す比較例について説明し、図５を用いて、比較例における問題点について説明する。そして、その後に第２の実施の形態に係る画像処理装置について説明する。
【００２８】
図２は、画像処理プログラムの生成処理手順の比較例を示す図である。
画像処理プログラムの生成処理の前に、１つ以上の学習データ５０が用意される。学習データ５０には、入力画像５１と、入力画像５１に対して画像処理を施したときの目標画像５２とが含まれる。入力画像５１は、例えば、カメラによって被写体を撮像することによって得られる。
【００２９】
遺伝的プログラミングによる画像処理プログラムの生成処理では、個体は、１つ以上の部分プログラムを組み合わせて構成される。例えば、図２の左上に示すように、個体は木構造で定義される。
【００３０】
個体に組み込むことが可能な複数の部分プログラムも、あらかじめ用意される。以下、個体に組み込まれる部分プログラムの例として、画像フィルタを想定するが、部分プログラムは画像フィルタに限るものではなく、他の種類の画像処理を行うプログラムを用いることもできる。なお、図２の左上において、“Ｆ”は画像フィルタを示し、“Ｉ”は入力端子を示し、“Ｏ”は出力端子を示す。
【００３１】
遺伝的プログラミングによる画像処理プログラムの生成処理は、例えば、次のように実行される。まず、複数の初期個体による個体群６１が生成される（ステップＳ１１）。各初期個体のノードには、あらかじめ用意された複数の画像フィルタの中から画像フィルタがランダムに選択されて組み込まれる。次に、生成された個体群６１の中から、ランダムに２つの親個体が取り出される（ステップＳ１２）。
【００３２】
次に、これら２つの親個体に対して進化過程の処理が施されることで、２つ以上の子個体が生成される（ステップＳ１３）。進化過程では、２つの親個体に対して交叉処理および突然変異処理が行われる。２つの親個体に対して、それぞれ異なる交叉処理や突然変異処理が行われることで、３つ以上の子個体が生成されてもよい。
【００３３】
次に、進化過程を経て生成された子個体、および元の親個体のそれぞれについて、適応度が計算される（ステップＳ１４）。この処理では、対象の個体それぞれを用いた画像処理が、学習データ５０の入力画像５１に対して実行され、実行後の画像と対応する目標画像５２とが比較されることで適応度が計算される。複数の学習データ５０が存在する場合、個体それぞれについて、複数の学習データ５０を用いて得られた適応度の平均値が算出される。
【００３４】
ここで、いずれかの個体の適応度が所定の閾値以上であった場合には、その個体が最終的な画像処理プログラムとして出力され、プログラム生成処理が終了する。一方、すべての個体の適応度が所定の閾値未満であった場合には、生成された各子個体および元の２つの親個体を含む個体群６２の中から、生存選択が行われる（ステップＳ１５）。この生存選択では、個体群６２の中から、算出された適応度が最大の個体が選択される。さらに、個体群６２内の残りの個体の中から、所定の方法で個体が１つ選択される。例えば、残りの個体の中から、適応度に応じた確率で個体が選択される。
【００３５】
このような生存選択によって選択された２つの個体は、個体群６１に含まれる２つの個体と入れ替えられる（ステップＳ１６）。例えば、生存選択によって選択された２つの個体は、個体群６１に含まれる個体のうち、親個体として取り出された２つの個体と入れ替えられる。これにより、個体群６１に含まれる個体が次世代の個体へ変更される。そして、適応度が所定の閾値以上となる個体が出現するまで、同様の処理が繰り返される。
【００３６】
図３は、交叉の例を示す図である。図３では、親個体７１ａと親個体７２ａとの間で交叉が行われ、親個体７１ａに基づく子個体７１ｂと、親個体７２ａに基づく子個体７２ｂとが生成される場合の例を示す。
【００３７】
親個体７１ａは、画像フィルタＦ１，Ｆ２，Ｆ３，Ｆ４を含み、親個体７２ａは、画像フィルタＦ２，Ｆ３，Ｆ５，Ｆ６を含む。ここで、親個体７１ａにおける画像フィルタＦ２のノードと、親個体７２ａにおける画像フィルタＦ５のノードが、交叉を行う箇所として選択されたものとする。
【００３８】
交叉の処理では、例えば、選択されたノードだけでなく、そのノードより下位階層のノードも交叉の対象となる。このため、図３の例では、親個体７１ａにおける“画像フィルタＦ２，Ｆ１、画像フィルタＦ２の一方に接続された入力端子のノード、画像フィルタＦ１に接続された入力端子のノード”と、親個体７２ａにおける“画像フィルタＦ５、画像フィルタＦ５に接続された入力端子のノード”とが入れ替えられる。このような交叉により、画像フィルタＦ３，Ｆ４，Ｆ５を含む子個体７１ｂと、画像フィルタＦ１，Ｆ２，Ｆ４をそれぞれ１つ含み、画像フィルタＦ３を２つ含む子個体７２ｂとが生成される。
【００３９】
図４は、突然変異の例を示す図である。図４において、個体７３ａは、画像フィルタＦ３，Ｆ４，Ｆ５を含む。この個体７３ａは、例えば、個体群６１から取り出された親個体であってもよいし、または、個体群６１から親個体として取り出された後、交叉が行われた個体であってもよい。
【００４０】
ここで、個体７３ａにおける画像フィルタＦ３のノードが突然変異を行う箇所として選択されるとともに、突然変異による置き換え後の画像フィルタとして画像フィルタＦ７が選択されたものとする。なお、突然変異による置き換え後の画像フィルタは、あらかじめ用意された複数の画像フィルタの中からランダムに選択される。このような突然変異により、画像フィルタＦ４，Ｆ５，Ｆ７を含む子個体７３ｂが生成される。
【００４１】
ところで、上記の手順により生成される画像処理プログラムの用途の例としては、ＦＡ（Factory Automation）分野において、製品を撮像した画像に画像処理を施して所望の効果を得るという用途が考えられる。例えば、製品の外観を撮像した画像に画像処理を施して、欠陥が生じた箇所を抽出する、位置合わせを行う箇所を抽出する、特定の部品に印字された文字を認識するといった用途が考えられる。
【００４２】
このような用途では、被写体となる製品の変更や改良、それに伴う撮像環境の変化などに応じて、画像処理アルゴリズムの再構築の必要が生じる場合がある。このため、画像処理アルゴリズムの構築の容易性が求められている。また、照明条件の変化や被写体の形状、位置姿勢のばらつき等の撮像環境の変化に対するロバスト性が高い画像処理アルゴリズムを構築することが求められている。
【００４３】
遺伝的プログラミングを利用することで、入力画像５１とこれに対応する目標画像５２とをあらかじめ用意しておくだけで、このような用途で使用可能な画像処理プログラムを容易に生成することができる。また、それぞれ撮像環境が異なる入力画像５１と目標画像５２のペア（学習データ５０）を複数用意しておくことで、撮像環境の変化に対するロバスト性が高い画像処理アルゴリズムを自動生成することもできる。
【００４４】
ここで、図５は、画像処理の例を示す図である。画像処理の例として、入力画像内の特定の領域について何らかの特定の処理を施すというものがある。図５では、その一例として、プリント基板に搭載された半導体チップのパッケージ領域から、その領域に印字された文字の部分だけを特定の色（例えば、白）の領域として抽出する処理を示す。画像処理の結果として最終的に出力される最終出力画像８１ｄにおいては、半導体チップのパッケージ領域に印字された「ＡＢＣ１２３」という文字の部分だけが白の領域として抽出されている。
【００４５】
なお、図５の画像処理は、例えば、特定の領域から文字を認識するための前処理として実行される。また、特定の領域について何らかの処理を施すという処理の他の例としては、特定の部品が搭載された領域から、部品に描かれた記号や模様の部分を特定の色の領域として抽出する処理が考えられる。さらに、また、画像内の特定の領域における部品の位置や傾きを検出するために、その領域における部品の搭載領域だけを特定の色の領域として抽出する、という処理も考えられる。
【００４６】
以下、文字や記号、模様の抽出対象となる特定の領域を、「抽出対象領域」と記載する。
上記のような画像処理における入力画像については、撮影時における被写体の明るさが画像ごとに大きくばらつく可能性がある。それだけでなく、画像内の抽出対象領域の明るさのばらつき度合いと、その領域以外の背景領域の明るさのばらつき度合いとが異なることも多い。それは、抽出対象領域と背景領域とで明るさのばらつきの発生原因が異なる場合があるからである。例えば、抽出対象領域と背景領域とで光の反射率や色の傾向が異なることや、抽出対象領域と背景領域の高さの差によって周囲からの光の当たり方が異なることが、原因となり得る。
【００４７】
このため、画像全体に対する処理によって明るさのばらつきの影響を低減するような前処理のアルゴリズムを構築することは、難易度が高い。明るさのばらつきの影響を低減するためには、抽出対象領域と背景領域のそれぞれに対して別々の前処理を施すことが望ましい。このような理由から、上記のような画像処理におけるロバスト性を向上させるためには、抽出対象領域と背景領域との切り分け処理を含めることが重要となる。
【００４８】
図５に示す入力画像８１ａにおいては、半導体チップのパッケージ領域は黒色であるため、照明の変動に対する輝度の変化は小さい。しかし、背景となるプリント基板はより明るい色であるため、照明の変動に対する輝度の変化が大きくなる可能性がある。このような被写体が写った入力画像８１ａから最終出力画像８１ｄが得られるような画像処理プログラムをプログラマーが構築する場合、半導体チップのパッケージ領域を抽出するような中間処理アルゴリズムを含めることが多い。この中間処理アルゴリズムによれば、例えば、抽出された領域とそれ以外の背景領域とが画素値などによって区別された画像が得られる。そして、得られた画像を用いて文字の領域が抽出される。
【００４９】
このように、抽出された領域とそれ以外の背景領域とが区別された画像の例としては、抽出された領域以外の背景領域をマスクしたマスク画像がある。マスク画像では、抽出された領域が白領域（すなわち、画素値が最大値の領域）とされ、それ以外の背景領域が黒領域（すなわち、画素値が最小値の領域）とされる。
【００５０】
図５に示す中間出力画像８１ｂは、上記のような中間処理アルゴリズムによって生成されたマスク画像の一例である。この中間処理アルゴリズムは、例えば、入力画像８１ａから半導体チップのパッケージ領域と類似する色の領域を抽出するものである。他方、図５に示す画像処理は、例えば、抽出する文字と類似する色の領域を入力画像８１ａから抽出する処理も含む。図５に示す中間出力画像８１ｃは、このような処理によって得られた画像の例である。そして、図５に示す画像処理では、中間処理画像８１ｂと中間処理画像８１ｃとの論理積（ａｎｄ）をとることで、最終出力画像８１ｄが生成される。
【００５１】
このような画像処理を実行するための画像処理プログラムを、図２に示した手順によって生成した場合、生存選択のための個体の評価（すなわち、適応度の算出）は、最終出力画像８１ｄとこれに対応する目標画像との比較によって行われることになる。この場合、個体を用いた画像処理の実行途中で抽出対象領域を抽出できるような有効な処理が実行されていたとしても、そのことに関係なく、最終的な出力画像に基づく評価結果によって個体が淘汰される。このため、画像処理の実行途中で有効な出力が得られている個体を次世代に残すことができないという問題がある。
【００５２】
このことは、最終的な出力画像に基づく評価結果だけを用いて個体の生存選択を行うと、その評価結果を示す値が収束するまでに時間がかかり、画像処理プログラムの生成に要する時間が長くなることの１つの原因となることを示す。換言すると、最終的な出力画像だけでなく、画像処理の実行途中で得られる中間出力画像も加味した評価結果に基づいて生存選択を行うことにより、画像処理プログラムの生成時間を短縮できる可能性がある。
【００５３】
なお、上記の問題を解決するための他の方法として、入力画像上に抽出対象領域に対応する関心領域（Region Of Interest：ＲＯＩ）を事前に設定した上で、画像処理プログラムを生成する方法も考えられる。しかし、この方法は、抽出対象領域が決まった場所に存在する画像に対する画像処理にしか適用できない。また、他の方法として、関心領域の抽出処理を行うプログラムの学習と、それ以後の処理を行うプログラムの学習とを個別に行う方法も考えられる。しかし、複数回の学習を行うことで全体のプログラム生成時間が長くなってしまう。
【００５４】
図６は、第２の実施の形態における個体の評価手順の概要を示す図である。本実施の形態の画像処理装置は、図６に示すような手順で個体を評価する。
本実施の形態では、学習データ８２として、入力画像８２ａと中間目標画像８２ｂと最終目標画像８２ｃとの組み合わせが用意される。最終目標画像８２ｃは、評価対象の個体を用いた画像処理によって最終的に出力される画像についての目標画像である。中間目標画像８２ｂは、評価対象の個体を用いた画像処理の途中の段階、すなわち、その個体の最終ノードを除くいずれかのノードにおいて出力される画像についての目標画像である。図６の例では、中間目標画像８２ｂは、抽出対象領域以外の領域（背景領域）をマスクするためのマスク画像である。
【００５５】
図６では、評価対象の個体の例として、画像フィルタＦ１〜Ｆ９を有する個体７４を示している。本実施の形態の画像処理装置は、入力画像８２ａを入力として、評価対象の個体７４を用いた画像処理を実行する。そして、画像処理装置は、個体７４において画像フィルタ（部分プログラム）が組み込まれている各ノードで出力される出力画像を取得する。
【００５６】
取得される出力画像には、最終ノードを除く各ノード（中間ノード）で出力される中間出力画像８３ａ，８３ｂ，８３ｃ，・・・と、最終ノードで出力される最終出力画像８４とに大別される。すなわち、画像処理装置は、個体７４の最終ノードに組み込まれた画像フィルタＦ９を除く他の画像フィルタＦ１〜Ｆ９からの出力画像を、中間出力画像８３ａ，８３ｂ，８３ｃ，・・・として取得する。また、画像処理装置は、個体７４の最終ノードに組み込まれた画像フィルタＦ９からの出力画像（すなわち、個体７４の最終的な出力画像）を、最終出力画像８４として取得する。
【００５７】
画像処理装置は、取得した最終出力画像８４と最終目標画像８２ｃとの比較結果に加え、取得した中間出力画像８３ａ，８３ｂ，８３ｃ，・・・のそれぞれと中間目標画像８２ｂとの比較結果に基づいて、個体７４を次世代に残すか否かを判定する。
【００５８】
より具体的には、画像処理装置は、取得した最終出力画像８４と最終目標画像８２ｃとを比較し、その比較結果に基づいて最終評価値８５ｂを算出する。この算出方法は図２のステップＳ１４と同様の方法とすることができ、例えば、最終出力画像８４と最終目標画像８２ｃとの類似度が最終評価値８５ｂとして算出される。
【００５９】
これに加え、画像処理装置は、取得した中間出力画像８３ａ，８３ｂ，８３ｃ，・・・のそれぞれを、中間目標画像８２ｂと比較し、その比較結果に基づいて中間評価値８５ａを算出する。例えば、画像処理装置は、中間出力画像８３ａ，８３ｂ，８３ｃ，・・・のそれぞれと中間目標画像８２ｂとの類似度を算出し、算出された類似度のうちの最大値を中間評価値８５ａとする。
【００６０】
そして、画像処理装置は、中間評価値８５ａと最終評価値８５ｂとに基づいて、個体７４を次世代に残すか否かを判定する。例えば、中間評価値８５ａと最終評価値８５ｂとを重み係数に応じた比率で合成した評価値に基づいて、個体７４を次世代に残すか否かを判定する。
【００６１】
このような手順により、最終出力画像が目標とする最終画像に近いだけでなく、いずれかの中間出力画像が目標とする中間画像に近い個体が、次世代に残るようになる。個体群６１（図２参照）において、このように中間出力画像が中間目標画像に近いと推定される個体が増えていくことにより、個体群６１から生成される親個体および子個体の最終評価値が上昇しやすくなり、学習が促進される。その結果、画像処理プログラムの生成が完了するまでの時間が短縮される。
【００６２】
また、画像処理装置は、個体を次世代に残すかを判定するための評価値として、中間評価値と最終評価値とに重み付けを行って算出した値を用いることもできる。例えば、画像処理装置は、学習の初期段階では、中間評価値の重みを大きくして算出した評価値を用い、学習が進むに連れて、評価値を算出する際の最終評価値の重みを徐々に大きくしていく。これにより、学習の初期段階では、中間出力画像が中間目標画像に近づくことが重視されるように学習が行われる。そして、学習が進んで中間評価値が収束していくと、最終出力画像が最終目標画像に近づくことが重視されるようになる。個体群６１に中間評価値の高い個体が多くなるほど、最終評価値が所定の閾値に達するまでの時間が短縮されるので、上記のように重みを変化させることで全体として画像処理プログラムの生成が完了するまでの時間が短縮される。
【００６３】
次に、第２の実施の形態の画像処理装置の詳細について説明する。
図７は、画像処理装置のハードウェア構成例を示す図である。画像処理装置１００は、例えば、図７に示すようなコンピュータとして実現される。
【００６４】
画像処理装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（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）ディスプレイなどがある。
【００６９】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００７０】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００７１】
ネットワークインタフェース１０７は、ネットワーク１０７ａを介して他の装置との間でデータの送受信を行う。
通信インタフェース１０８は、接続された外部デバイスとの間でデータの送受信を行う。本実施の形態では、通信インタフェース１０８には、外部デバイスとしてカメラ１０８ａが接続されており、通信インタフェース１０８は、カメラ１０８ａから送信された画像データをプロセッサ１０１に送信する。
【００７２】
以上のようなハードウェア構成によって、画像処理装置１００の処理機能を実現することができる。
図８は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置１００は、画像取得部１１１、画像処理部１１２、プログラム生成部１２０、プログラム記憶部１３０、要素記憶部１４１、学習データ記憶部１４２、個体群記憶部１４３および出力画像記憶部１４４を有する。
【００７３】
画像取得部１１１、画像処理部１１２およびプログラム生成部１２０の処理は、例えば、画像処理装置１００のプロセッサ１０１が所定のプログラムを実行することで実現される。また、画像処理部１１２の処理の一部は、プログラム記憶部１３０に保存された画像処理プログラムを、画像処理装置１００のプロセッサ１０１が実行することで実現される。プログラム記憶部１３０、要素記憶部１４１および学習データ記憶部１４２は、例えば、画像処理装置１００のＨＤＤ１０３の記憶領域として実現される。個体群記憶部１４３および出力画像記憶部１４４は、例えば、画像処理装置１００のＲＡＭ１０２の記憶領域として実現される。
【００７４】
画像取得部１１１は、撮像された画像のデータをカメラ１０８ａから取得し、プログラム生成部１２０または画像処理部１１２に出力する。
プログラム生成部１２０は、遺伝的プログラミングにより画像処理プログラムを生成し、生成された画像処理プログラムをプログラム記憶部１３０に保存する。なお、プログラム生成部１２０の内部構成については後述する。
【００７５】
画像処理部１１２は、カメラ１０８ａによって撮像された画像のデータを画像取得部１１１を介して取得する。画像処理部１１２は、プログラム記憶部１３０に保存された画像処理プログラムにしたがって、取得した画像のデータに画像処理を施す。処理後の画像は、例えば表示装置１０４ａに表示される。
【００７６】
プログラム記憶部１３０は、プログラム生成部１２０によって生成された画像処理プログラムを記憶する。
要素記憶部１４１は、プログラム生成部１２０によって生成される各個体に組み込むことが可能な要素のデータを記憶する。これらの要素は、画像処理プログラムの構成要素となる部分プログラムであり、例えば、各種の画像フィルタのプログラムが含まれる。
【００７７】
学習データ記憶部１４２は、入力画像と、これに対応する中間目標画像および最終目標画像の各データを含む学習データを、複数記憶する。学習データに含まれる入力画像は、例えば、画像処理装置１００に接続されたカメラ１０８ａによって撮像された画像であってもよい。また、入力画像に対応する中間目標画像および最終目標画像は、例えば、入力画像に対してレタッチ処理を施すことによって作成される。
【００７８】
個体群記憶部１４３は、個体群を記憶する。個体群は、要素記憶部１４１に記憶された要素（部分プログラム）を組み合わせることで生成される個体（画像処理プログラム）を複数含む。なお、個体群記憶部１４３には、各個体に対応する画像処理プログラムそのものが記憶されてもよいし、個体の各ノードに組み込まれた部分プログラム名とノード間の接続構造とを示す構造情報が個体ごとに記憶されてもよい。また、個体群記憶部１４３には、各個体について算出された評価値が、個体に対応づけて記憶される。
【００７９】
出力画像記憶部１４４は、生存選択の対象の個体に対応するプログラムの実行によって得られる出力画像を記憶する。この出力画像としては、個体の中間ノードで出力される中間出力画像と、個体の最終ノードで出力される最終出力画像とがある。
【００８０】
プログラム生成部１２０は、学習制御部１２１、プログラム実行部１２２および評価値算出部１２３を有する。
学習制御部１２１は、プログラム生成部１２０でのプログラム生成処理全体を統括的に制御する。例えば、学習制御部１２１は、初期個体群の生成、個体の進化処理、評価値に基づく生存選択および最終的な画像処理プログラムの出力、生存選択された個体による個体群の更新などの処理を実行する。
【００８１】
プログラム実行部１２２は、学習制御部１２１からの指示に応じて、個体（画像処理プログラム）を実行する。プログラム実行部１２２は、個体の実行により、その個体の最終ノードで出力される最終出力画像だけでなく、その個体の中間ノードで出力される中間出力画像を出力し、出力画像記憶部１４４に格納する。
【００８２】
評価値算出部１２３は、学習制御部１２１からの指示に応じて、各個体を評価するための評価値を算出する。算出される評価値としては、前述した中間評価値および最終評価値の他、さらに総合評価値がある。
【００８３】
次に、学習データの例について説明する。
図９は、学習データの第１の例を示す図である。図９では、例として、プリント基板に搭載された半導体チップのパッケージ領域から、その領域に印字された文字の部分だけを白色領域として抽出する、という画像処理を想定する。この場合、文字の抽出対象となる抽出対象領域は、半導体チップのパッケージ領域となる。画像処理装置１００によってこのような画像処理を実現するための画像処理プログラムを生成する場合には、例えば、図９に示すような学習データ１５１〜１５３が用いられる。
【００８４】
学習データ１５１は、入力画像１５１ａ、中間目的画像１５１ｂおよび最終目的画像１５１ｃを含む。入力画像１５１ａには、プリント基板が写っている。中間目的画像１５１ｂは、入力画像１５１ａにおける半導体チップのパッケージ領域（抽出対象領域）以外の背景領域をマスクしたマスク画像である。最終目的画像１５１ｃは、入力画像１５１ａにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
【００８５】
学習データ１５２は、入力画像１５２ａ、中間目的画像１５２ｂおよび最終目的画像１５２ｃを含む。入力画像１５２ａには、プリント基板が写っている。ただし、入力画像１５２ａに写るプリント基板は、入力画像１５１ａに写るプリント基板とは異なるものであってもよいし、入力画像１５２ａにおける半導体チップの搭載位置は、入力画像１５１ａにおける半導体チップの搭載位置とは異なっていてもよい。中間目的画像１５２ｂは、入力画像１５２ａにおける背景領域をマスクしたマスク画像である。最終目的画像１５２ｃは、入力画像１５２ａにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
【００８６】
学習データ１５３は、入力画像１５３ａ、中間目的画像１５３ｂおよび最終目的画像１５３ｃを含む。入力画像１５３ａには、プリント基板が写っている。ただし、入力画像１５３ａに写るプリント基板は、入力画像１５１ａ，１５２ａに写るプリント基板とは異なるものであってもよいし、入力画像１５３ａにおける半導体チップの搭載位置は、入力画像１５１ａ，１５２ａにおける半導体チップの搭載位置とは異なっていてもよい。中間目的画像１５３ｂは、入力画像１５３ａにおける背景領域をマスクしたマスク画像である。最終目的画像１５３ｃは、入力画像１５３ａにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
【００８７】
図１０は、学習データの第２の例を示す図である。図１０では、例として、道路を走行する車両に搭載されたナンバプレート領域から、その領域に印字された文字の部分だけを白色領域として抽出する、という画像処理を想定する。この場合、文字の抽出対象となる抽出対象領域は、ナンバプレート領域となる。画像処理装置１００によってこのような画像処理を実現するための画像処理プログラムを生成する場合には、例えば、図１０に示すような学習データ１６１〜１６３が用いられる。
【００８８】
学習データ１６１は、入力画像１６１ａ、中間目的画像１６１ｂおよび最終目的画像１６１ｃを含む。入力画像１６１ａには、車両が写っている。中間目的画像１６１ｂは、入力画像１６１ａにおけるナンバプレート領域（抽出対象領域）以外の背景領域をマスクしたマスク画像である。最終目的画像１６１ｃは、入力画像１６１ａにおけるナンバプレート領域に記載された文字の部分のみが白色とされた画像である。
【００８９】
学習データ１６２は、入力画像１６２ａ、中間目的画像１６２ｂおよび最終目的画像１６２ｃを含む。入力画像１６２ａには、車両が写っている。ただし、入力画像１６２ａに写る車両は、入力画像１６１ａに写る車両とは異なるものであってもよいし、入力画像１６２ａにおけるナンバプレートの位置は、入力画像１６１ａにおけるナンバプレートの位置とは異なっていてもよい。中間目的画像１６２ｂは、入力画像１６２ａにおける背景領域をマスクしたマスク画像である。最終目的画像１６２ｃは、入力画像１６２ａにおけるナンバプレート領域に印字された文字の部分のみが白色とされた画像である。
【００９０】
学習データ１６３は、入力画像１６３ａ、中間目的画像１６３ｂおよび最終目的画像１６３ｃを含む。入力画像１６３ａには、車両が写っている。ただし、入力画像１６３ａに写る車両は、入力画像１６１ａ，１６２ａに写る車両とは異なるものであってもよいし、入力画像１６３ａにおけるナンバプレートの位置は、入力画像１６１ａ，１６２ａにおけるナンバプレートの位置とは異なっていてもよい。中間目的画像１６３ｂは、入力画像１６３ａにおける背景領域をマスクしたマスク画像である。最終目的画像１６３ｃは、入力画像１６３ａにおけるナンバプレート領域に記載された文字の部分のみが白色とされた画像である。
【００９１】
ここで、上記の図９，図１０の例のように、画像処理プログラムの生成時には、抽出対象領域の位置が互いに異なる複数の学習データが利用されることが望ましい。これにより、抽出対象領域が互いに異なる撮像画像を画像処理の対象としても所望の結果を高性能に得ることが可能な画像処理プログラムを生成することができる。
【００９２】
また、図９の入力画像１５１ａ，１５２ａ，１５３ａでは、撮影時における被写体への照明の明るさが互いに異なっている。また、図１０の入力画像１６１ａ，１６２ａ，１６３ａでは、撮影時における被写体への光の当たり方の分布が互いに異なっている。これらの例のように、画像処理プログラムの生成時には、明るさなどの撮影条件が互いに異なる入力画像を含む複数の学習データが利用されることが望ましい。これにより、撮影条件が変動した場合でも所望の結果を安定的に得ることが可能な画像処理プログラムを生成することができる。
【００９３】
次に、画像処理装置１００によるプログラム生成処理の詳細について、フローチャートを用いて説明する。
図１１〜図１２は、プログラム生成処理手順の例を示すフローチャートである。
【００９４】
［ステップＳ２１］学習制御部１２１は、学習データの設定のための入力操作を受け付ける。例えば、学習データ記憶部１４２に記憶された学習データの中から、本処理で使用される学習データが指定される。ここでは、ｎ組の学習データが使用されるものとする（ただし、ｎは１以上の整数）。
【００９５】
［ステップＳ２２］学習制御部１２１は、要素記憶部１４１に登録された要素を組み合わせることで、複数の初期個体を生成し、生成された初期個体を個体群記憶部１４３に格納する。この処理において生成される個体群は図３に示した個体群６１に相当するので、これ以後、「個体群６１」と表記する。
【００９６】
［ステップＳ２３］個体群６１に含まれる各個体についての中間評価値Ｆmidと最終評価値Ｆlastとが、次のような手順で算出される。
学習制御部１２１は、個体群６１に含まれる個体を１つ選択し、選択した個体をプログラム実行部１２２に実行させる。プログラム実行部１２２は、選択された個体にしたがって、ステップＳ２１で指定されたｎ組の学習データに含まれる各入力画像に対する画像処理を実行する。この画像処理において、プログラム実行部１２２は、選択した個体の各ノードにおいて出力される画像を出力画像記憶部１４４に格納する。格納される出力画像には、中間ノードにおいて出力される中間出力画像と、最終ノードにおいて出力される最終出力画像とがある。すなわち、ｎ組の学習データのそれぞれについて、１つ以上の中間出力画像と１つの最終出力画像とが格納される。
【００９７】
学習制御部１２１は、選択した個体についての中間評価値Ｆmidと最終評価値Ｆlastとを評価値算出部１２３に算出させる。評価値算出部１２３は、まず、この個体に含まれる中間ノードごとに予備評価値を算出する。具体的には、この個体に含まれるｋ番目の中間ノードの予備評価値ｆ（ｋ）は、ｋ番目の中間ノードにおいてｎ組の学習データをそれぞれ用いて出力されたｎ個の中間出力画像を用いて、次の式（１）にしたがって算出される。
【００９８】
【数１】
2016208037.tif 000003
【００９９】
式（１）において、Ｗは画像の水平方向の画素数を示し、Ｈは画像の垂直方向の画素数を示す。ｍ(k,i)（ｘ，ｙ）は、ｉ番目の学習データに含まれる入力画像を用いて、ｋ番目の中間ノードにおいて出力された中間出力画像における座標（ｘ，ｙ）の画素値を示す。Ｍi（ｘ，ｙ）は、ｉ番目の学習データに含まれる中間目標画像における座標（ｘ，ｙ）の画素値を示す。Ｖmaxは、画素値がとり得る最大値を示す。なお、これらの画素値は、例えば、輝度値である。式（１）によれば、予備評価値ｆ（ｋ）は０以上１以下の値をとる。
【０１００】
評価値算出部１２３は、上記の方法で個体に含まれる全中間ノードについての予備評価値ｆ（ｋ）を算出する。そして、評価値算出部１２３は、次の式（２）にしたがって個体に対応する中間評価値Ｆmidを算出する。すなわち、個体に対応する中間評価値Ｆmidは、その個体について算出された各予備評価値ｆ（ｋ）のうちの最大値として算出される。
Ｆmid＝ｍａｘ｛ｆ（ｋ）｝      ・・・（２）
また、評価値算出部１２３は、個体の最終ノードにおいてｎ組の学習データをそれぞれ用いて出力されたｎ個の最終出力画像を用いて、次の式（３）にしたがって最終評価値Ｆlastを算出する。
【０１０１】
【数２】
2016208037.tif 000004
【０１０２】
式（３）において、ｏi（ｘ，ｙ）は、ｉ番目の学習データに含まれる入力画像を用いて出力された最終出力画像における座標（ｘ，ｙ）の画素値を示す。Ｔi（ｘ，ｙ）は、ｉ番目の学習データに含まれる最終目標画像における座標（ｘ，ｙ）の画素値を示す。式（３）によれば、最終評価値Ｆlastは、予備評価値ｆ（ｋ）と同様、０以上１以下の値をとる。
【０１０３】
以上の手順により、個体群６１に含まれる各個体についての中間評価値Ｆmidと最終評価値Ｆlastとが算出される。評価値算出部１２３は、算出された中間評価値Ｆmidと最終評価値Ｆlastとを、個体に対応付けて個体群記憶部１４３に登録する。
【０１０４】
［ステップＳ２４］学習制御部１２１は、評価値算出部１２３に重み係数ｔの算出を指示する。評価値算出部１２３は、現在個体群６１に含まれている全個体の中間評価値Ｆmidの分布状況に基づいて、重み係数ｔを算出する。例えば、重み係数ｔは、個体群６１に含まれている全個体の中間評価値Ｆmidの平均値として算出される。
【０１０５】
［ステップＳ２５］学習制御部１２１は、個体群６１に含まれる個体の中から、２つの親個体をランダムに選択する。
［ステップＳ２６］学習制御部１２１は、選択された２つの親個体の間で交叉を行うことで、２つ以上の所定数の子個体を生成する。
【０１０６】
［ステップＳ２７］学習制御部１２１は、生成された子個体のいずれかのノードに突然変異を発生させ、元の子個体のノードに組み込まれていた画像フィルタを、要素記憶部１４１に登録されている他の画像フィルタのいずれかに置き換える。
【０１０７】
［ステップＳ２８］ステップＳ２６，Ｓ２７の処理によって生成された各子個体についての中間評価値Ｆmidと最終評価値Ｆlastとが、ステップＳ２３での個体についての中間評価値Ｆmidと最終評価値Ｆlastと同様の手順で算出される。
【０１０８】
［ステップＳ２９］学習制御部１２１は、ステップＳ２５で選択された親個体、および、ステップＳ２６，Ｓ２７で生成された子個体のそれぞれについての最終評価値Ｆlastと、所定の閾値とを比較する。学習制御部１２１は、これらの個体の中に、最終評価値Ｆlastが閾値より大きい個体が存在するかを判定する。最終評価値Ｆlastが閾値より大きい個体が存在しない場合、ステップＳ３０の処理が実行される。最終評価値Ｆlastが閾値より大きい個体が存在する場合、ステップＳ３３の処理が実行される。
【０１０９】
［ステップＳ３０］学習制御部１２１は、ステップＳ２５で選択された親個体、および、ステップＳ２６，Ｓ２７で生成された子個体のそれぞれについての総合評価値Ｆtotalを、評価値算出部１２３に算出させる。評価値算出部１２３は、これらの各個体についての総合評価値Ｆtotalを、次の式（４）にしたがって算出する。
Ｆtotal＝（１−ｔ）Ｆmid＋ｔＦlast      ・・・（４）
［ステップＳ３１］学習制御部１２１は、ステップＳ２５で選択された親個体、および、ステップＳ２６，Ｓ２７で生成された子個体の中から、ステップＳ３０で算出された総合評価値Ｆtotalが最大の個体を、生存させる個体として選択する。さらに、学習制御部１２１は、残りの個体の中から生存させる個体をさらに１つ選択する。この選択処理では、例えば、算出された総合評価値Ｆtotalに応じた確率で個体が選択される。
【０１１０】
［ステップＳ３２］学習制御部１２１は、ステップＳ３１で選択した２つの個体によって、個体群６１に含まれる個体のうちステップＳ２５で選択した親個体を置換する。これによって、個体群６１の世代が更新される。また、ステップＳ３１で選択された２つの個体についての中間評価値Ｆmidと最終評価値Ｆlastは、個体群記憶部１４３において個体に対応づけて登録される。
【０１１１】
なお、個体群６１に含まれる個体のうち置換される個体の少なくとも１つは、例えば、総合評価値Ｆtotalまたは最終評価値Ｆlastが最小の個体であってもよい。
［ステップＳ３３］学習制御部１２１は、ステップＳ２９で最終評価値Ｆlastが閾値より大きいと判定された個体に対応する画像処理プログラムをプログラム記憶部１３０に格納して、処理を終了する。なお、ステップＳ２９で、最終評価値Ｆlastが閾値より大きい個体が複数存在した場合、学習制御部１２１は、これらの個体の中から最終評価値Ｆlastが最大の個体に対応する画像処理プログラムをプログラム記憶部１３０に格納する。
【０１１２】
以上の図１１〜図１２の処理によれば、ステップＳ３０において、生存選択の対象の各個体についての総合評価値Ｆtotalが、各個体についての中間評価値Ｆmidと最終評価値Ｆlastとに基づいて算出される。そして、ステップＳ３１において、生存させる個体が総合評価値Ｆtotalに基づいて選択される。これにより、各個体を用いた画像処理の結果として出力される最終出力画像だけでなく、その画像処理の途中で出力される中間出力画像の有効性を加味して、生存させる個体が選択される。そのため、処理過程の一部が適切と推定される固体が淘汰されずに個体群６１に残りやすくなり、そのような個体が個体群６１において増加していくのに連れて、個体群６１内の個体の最終評価値Ｆlastのうちの最大値も増加しやすくなる。したがって、学習速度が向上し、画像処理プログラムの生成が完了するまでの時間が短縮される。
【０１１３】
また、ステップＳ３２において個体群６１の世代が更新された後、ステップＳ２４において、その世代の個体群６１内の各個体についての中間評価値Ｆmidの分布状況に基づいて、総合評価値Ｆtotalの算出に用いられる重み係数ｔが再計算される。したがって、総合評価値Ｆtotalは、学習の進行に伴って変動する。
【０１１４】
ここで、個体群６１内の各個体についての中間評価値Ｆmidの分布状況に基づいて重み係数ｔが算出されることで、重み係数ｔの値は学習の進行に伴って徐々に増加していく。このため、総合評価値Ｆtotalの算出の際には、学習が進むに連れて、最終評価値Ｆlastの合成比率が高くなっていく。これにより、学習の初期段階では、中間評価値Ｆmidを重視して個体の生存選択が行われ、学習が進むに連れて、最終評価値Ｆlastを重視して個体の生存選択が行われるようになる。個体群６１に中間評価値Ｆmidの高い個体が多くなるほど、最終評価値Ｆlastが所定の閾値に達するまでの時間が短縮されるので、上記のように重み係数を変化させることで全体として画像処理プログラムの生成が完了するまでの時間が短縮される。
【０１１５】
図１３は、最終評価値および重み係数の変化の例を示す図である。この図１３では、本実施の形態での最終評価値Ｆlastの変化とともに、図１２のステップＳ３０で総合評価値Ｆtotalでなく最終評価値Ｆlastに基づいて生存選択を行った場合の最終評価値Ｆlastの変化の比較例についても同時に示している。なお、図１３に示す最終評価値Ｆlastの値は、図１２のステップＳ２９で閾値と比較される最終評価値Ｆlastのうちの最大値である。
【０１１６】
この図１３の例によれば、本実施の形態において最終評価値Ｆlastが所定の閾値を超えるまでの時間は、比較例と比較して１／２程度に短縮されている。また、重み係数ｔは、全体として、個体群６１の世代数の増加に伴って上昇している。
【０１１７】
〔第３の実施の形態〕
第３の実施の形態では、重み係数ｔを、中間評価値Ｆmidの算出値に基づいて算出する代わりに、学習の時間的な進行度合いに応じて算出するように、第２の実施の形態を変形した例を示す。なお、第３の実施の形態に係る画像処理装置の基本的な構成は第２の実施の形態と同様であるので、第２の実施の形態と同様の符号を用いて説明する。
【０１１８】
図１４は、重み係数の算出に用いる変調テーブルについて説明するための図である。図１４に示すグラフ１７０は、変調テーブルに登録される情報をグラフ化したものである。グラフ１７０の例では、個体群６１の世代数ｇの増加に伴って、重み係数ｔが３段階で増加している。本実施の形態の画像処理装置１００は、グラフ１７０に示すような世代数ｇと重み係数ｔとの対応関係を記憶する変調テーブルに基づいて、重み係数ｔを算出する。
【０１１９】
なお、重み係数ｔの算出は、学習の進行に伴って重み係数ｔが増加するような方法であれば、変調テーブルを用いる方法に限らない。例えば、所定の算出式を用いて重み係数ｔを算出してもよい。
【０１２０】
図１５〜図１６は、第３の実施の形態におけるプログラム生成処理手順の例を示すフローチャートである。なお、図１５〜図１６では、図１１〜図１２と同様の処理が行われる処理ステップには、同じステップ番号を付して示し、その説明を省略する。
【０１２１】
図１５〜図１６の処理では、図１１〜図１２の処理から以下の点が変更されている。ステップＳ２１とステップＳ２２との間に、ステップＳ２１ａ，Ｓ２１ｂが追加される。また、ステップＳ２４の処理が削除され、ステップＳ２３の次にステップＳ２５が実行される。さらに、ステップＳ３２の後にステップＳ３２ａ，Ｓ３２ｂが追加され、ステップＳ３２ｂの次にステップＳ２５が実行される。
【０１２２】
［ステップＳ２１ａ］学習制御部１２１は、重み係数ｔの変調テーブルを設定する。例えば、ユーザの入力操作により、世代数ｇと重み係数ｔとの対応関係が設定される。
［ステップＳ２１ｂ］学習制御部１２１は、世代数ｇを１に初期化し、評価値算出部１２３に重み係数ｔの設定を指示する。評価値算出部１２３は、変調テーブルを参照して、現在の世代数ｇに対応付けられた重み係数ｔの値を設定する。
【０１２３】
［ステップＳ３２ａ］学習制御部１２１は、世代数ｇを１だけインクリメントする。
［ステップＳ３２ｂ］学習制御部１２１は、評価値算出部１２３に重み係数ｔの更新を指示する。評価値算出部１２３は、変調テーブルを参照して、現在の世代数ｇに対応付けられた重み係数ｔの値を用いて、現在の重み係数ｔの設定値を更新する。
【０１２４】
なお、ステップＳ２１ｂの処理は、ステップＳ２１ａの終了後からステップＳ３０の実行前のどのタイミングで実行されてもよい。また、ステップＳ３２ａ，Ｓ３２ｂの処理も、ステップＳ３２の終了後から次のステップＳ３０の実行前のどのタイミングで実行されてもよい。
【０１２５】
以上説明した第３の実施の形態によれば、学習の進行に伴って重み係数ｔの値が徐々に増加していく。これにより、学習の初期段階では、中間評価値Ｆmidを重視して個体の生存選択が行われ、学習が進むに連れて、最終評価値Ｆlastを重視して個体の生存選択が行われるようになる。したがって、画像処理プログラムの生成が完了するまでの時間が短縮される。
【０１２６】
なお、上記の各実施の形態に示した装置（プログラム生成装置１および画像処理装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２９】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１３０】
１  プログラム生成装置
１ａ  記憶部
１ｂ  演算部
１０  学習データ
１１  入力画像
１２  第１目標画像
１３  第２目標画像
２０  プログラム群
２１，２１ａ，２２，２３  画像処理プログラム
３１，３２  中間出力画像
Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓ４ａ，Ｓ５  ステップ
【図１】
2016208037.tif 000005
【図２】
2016208037.tif 000006
【図３】
2016208037.tif 000007
【図４】
2016208037.tif 000008
【図５】
2016208037.tif 000009
【図６】
2016208037.tif 000010
【図７】
2016208037.tif 000011
【図８】
2016208037.tif 000012
【図９】
2016208037.tif 000013
【図１０】
2016208037.tif 000014
【図１１】
2016208037.tif 000015
【図１２】
2016208037.tif 000016
【図１３】
2016208037.tif 000017
【図１４】
2016208037.tif 000018
【図１５】
2016208037.tif 000019
【図１６】
2016208037.tif 000020
【国際調査報告】
2016208037.tif 000021
2016208037.tif 000022