(57)【特許請求の範囲】
【請求項１】
複数の第１の画像処理関数を含む第１の画像処理ライブラリを記憶する記憶部と、
第２の画像処理ライブラリに含まれる所定数の第２の画像処理関数のそれぞれについて、前記第１の画像処理ライブラリから選択した１以上の前記第１の画像処理関数の組み合わせを第１の画像に適用して得られた第１の処理済み画像と前記第２の画像処理関数を前記第１の画像に適用して得られた第２の処理済み画像との差が第１の許容範囲内となる、前記第１の画像処理関数の組み合わせを求め、当該組み合わせを第３の画像処理関数として追加する追加関数生成部と、
前記所定数の前記第３の画像処理関数の中から選択した１以上の前記第３の画像処理関数の組み合わせを第２の画像に適用して得られた第３の処理済み画像と、前記第２の画像に所定の画像処理を適用して得られた第４の処理済み画像との差が第２の許容範囲内となる、前記第３の画像処理関数の組み合わせを、前記所定の画像処理を実現するアルゴリズムとして生成するアルゴリズム生成部と、
を有するアルゴリズム生成装置。
【請求項２】
前記所定数の前記第３の画像処理関数のそれぞれは、当該第３の画像処理関数に対応する前記第１の画像処理関数の組み合わせに含まれる各第１の画像処理関数を表す情報と、当該各第１の画像処理関数間の入出力関係を表す情報と、当該各第１の画像処理関数の動作を指定するパラメータとを含む、請求項１に記載のアルゴリズム生成装置。
【請求項３】
第２の画像処理ライブラリに含まれる所定数の第２の画像処理関数のそれぞれについて、第１の画像処理ライブラリから選択した１以上の第１の画像処理関数の組み合わせを第１の画像に適用して得られた第１の処理済み画像と前記第２の画像処理関数を前記第１の画像に適用して得られた第２の処理済み画像との差が第１の許容範囲内となる、前記第１の画像処理関数の組み合わせを求め、当該組み合わせを第３の画像処理関数として追加し、
前記所定数の前記第３の画像処理関数の中から選択した１以上の前記第３の画像処理関数の組み合わせを第２の画像に適用して得られた第３の処理済み画像と、前記第２の画像に所定の画像処理を適用して得られた第４の処理済み画像との差が第２の許容範囲内となる、前記第３の画像処理関数の組み合わせを、前記所定の画像処理を実現するアルゴリズムとして生成する、
ことを含むアルゴリズム生成方法。
【請求項４】
第２の画像処理ライブラリに含まれる所定数の第２の画像処理関数のそれぞれについて、第１の画像処理ライブラリから選択した１以上の第１の画像処理関数の組み合わせを第１の画像に適用して得られた第１の処理済み画像と前記第２の画像処理関数を前記第１の画像に適用して得られた第２の処理済み画像との差が第１の許容範囲内となる、前記第１の画像処理関数の組み合わせを求め、当該組み合わせを第３の画像処理関数として追加し、
前記所定数の前記第３の画像処理関数の中から選択した１以上の前記第３の画像処理関数の組み合わせを第２の画像に適用して得られた第３の処理済み画像と、前記第２の画像に所定の画像処理を適用して得られた第４の処理済み画像との差が第２の許容範囲内となる、前記第３の画像処理関数の組み合わせを、前記所定の画像処理を実現するアルゴリズムとして生成する、
ことをコンピュータに実行させるためのアルゴリズム生成用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、所望の処理を実現できるアルゴリズムを生成するアルゴリズム生成装置、アルゴリズム生成方法及びアルゴリズム生成用コンピュータプログラムに関する。
【背景技術】
【０００２】
従来より、画像といった、処理対象となるデータに対して所望の処理を実現するためのアルゴリズムを自動的に生成する技術が提案されている（例えば、特許文献１及び２を参照）。
【０００３】
例えば、特許文献１に開示されたプログラム合成装置は、プログラム部品の分類に基づき所望のプログラムの概略処理手順を指定し、その概略処理手順に対応するプログラム部品を選択して結合することでプログラムを合成する。そしてプログラム合成装置は、合成されたプログラムの性能を評価する評価手段で得られた評価値を参照してプログラム部品を選択する。
【０００４】
また、特許文献２に開示されたシステムは、コンポーネントライブラリ内の複数のコンポーネントのサブセットを選択し、そのサブセットを無作為に組み合わせて得られる組み合わせを複数の目標に対して評価する。そしてシステムは、組み合わせを新しいコンポーネントにカプセル化し、組み合わせが一つまたはそれ以上の基準に合致する場合にその組み合わせをコンポーネントライブラリに加える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−１４９２８０号公報
【特許文献２】特開２００７−１２８５１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、対象物の検査などの目的で利用されている、既存の画像処理ライブラリを用いて特定の画像処理を行うように構築された画像処理システムを、老朽化または処理能力の向上などの理由により、更新することがある。このような場合、その画像処理システムで実行されていた画像処理と同じ処理を更新後のシステムが実行できることが好ましい。しかし、画像処理ライブラリに含まれる個々の画像処理関数は、ブラックボックス化されていることがあり、このような場合、個々の画像処理関数により実行される処理の詳細は不明である。例えば、画像処理ライブラリにエッジ検出用の画像処理関数が含まれているとする。しかし、エッジ検出フィルタとして、SobelフィルタあるいはPrewittフィルタなど、複数のエッジ検出フィルタが知られている。そのため、画像処理関数がブラックボックス化されていると、エッジ検出用の画像処理関数が、どのエッジ検出フィルタを採用しているかが分からない。そのため、更新後のシステムは、既存の画像処理ライブラリとは異なる、そのシステムが利用可能な別の画像処理ライブラリに含まれる画像処理関数をそのまま利用しても、更新対象となる画像処理システムが実行する画像処理と全く同じ処理とならないおそれがある。
【０００７】
そこで本明細書は、既存の画像処理ライブラリに基づく画像処理アルゴリズムを他の画像処理ライブラリを用いて実現できるアルゴリズム生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一つの実施形態によれば、アルゴリズム生成装置が提供される。このアルゴリズム生成装置は、複数の第１の画像処理関数を含む第１の画像処理ライブラリを記憶する記憶部と、第２の画像処理ライブラリに含まれる所定数の第２の画像処理関数のそれぞれについて、第１の画像処理ライブラリから選択した１以上の第１の画像処理関数の組み合わせを第１の画像に適用して得られた第１の処理済み画像と第２の画像処理関数を第１の画像に適用して得られた第２の処理済み画像との差が第１の許容範囲内となる、第１の画像処理関数の組み合わせを求め、その組み合わせを第３の画像処理関数として追加する追加関数生成部と、所定数の第３の画像処理関数の中から選択した１以上の第３の画像処理関数の組み合わせを第２の画像に適用して得られた第３の処理済み画像と、第２の画像に所定の画像処理を適用して得られた第４の処理済み画像との差が第２の許容範囲内となる、その第３の画像処理関数の組み合わせを、所定の画像処理を実現するアルゴリズムとして生成するアルゴリズム生成部とを有する。
【０００９】
本発明の目的及び利点は、請求項において特に指摘されたエレメント及び組み合わせにより実現され、かつ達成される。
上記の一般的な記述及び下記の詳細な記述の何れも、例示的かつ説明的なものであり、請求項のように、本発明を限定するものではないことを理解されたい。
【発明の効果】
【００１０】
本明細書に開示されたアルゴリズム生成装置は、既存の画像処理ライブラリに基づく画像処理アルゴリズムを他の画像処理ライブラリを用いて実現できる。
【図面の簡単な説明】
【００１１】
【図１】アルゴリズム生成装置の概略構成図である。
【図２】画像処理ライブラリに含まれる画像処理関数のセットの一例を示す図である。
【図３】アルゴリズム生成装置の制御部の機能ブロック図である。
【図４】追加関数生成処理の概要を説明する図である。
【図５】遺伝的アルゴリズムを利用して追加画像処理関数となる画像処理関数の組み合わせを特定するための処理の概要を示す図である。
【図６】追加関数情報の一例を示す図である。
【図７】（ａ）はサンプル画像の一例を示す図であり、（ｂ）はターゲット画像の一例を示す図である。
【図８】アルゴリズム生成処理の動作フローチャートである。
【発明を実施するための形態】
【００１２】
以下、図を参照しつつ、アルゴリズム生成装置について説明する。このアルゴリズム生成装置は、再現対象となる画像処理ライブラリに含まれる個々の画像処理関数ごとに、その画像処理関数による処理と同じ処理を実現する、別の画像処理ライブラリに含まれる１以上の画像処理関数の組み合わせを特定する。そしてアルゴリズム生成装置は、その組み合わせを追加画像処理関数とする。そしてこのアルゴリズム生成装置は、追加画像処理関数の中から適切なものを選択して組み合わせることで、再現対象となる画像処理ライブラリを用いて実現されていた画像処理と同じ処理を実現できるアルゴリズムを生成する。
【００１３】
図１は、一つの実施形態によるアルゴリズム生成装置の概略構成図である。アルゴリズム生成装置１は、インターフェース部２と、ユーザインターフェース部３と、記憶回路４と、ストレージ装置５と、記憶媒体アクセス装置６と、制御部７とを有する。制御部７と、アルゴリズム生成装置１のその他の各部とは、例えば、バスにより接続されている。
【００１４】
インターフェース部２は、アルゴリズム生成装置１を、アルゴリズムの生成に利用する画像を生成または記憶する他の機器（図示せず）と接続するためのインターフェースである。例えば、インターフェース部２は、アルゴリズム生成装置１をカメラと接続するためのビデオインターフェース及びその制御回路を有する。あるいは、インターフェース部２は、イーサネット（登録商標）などの通信規格に従った通信ネットワークを介して他の機器から画像を受け取るために、その通信ネットワークに接続するための通信インターフェース及びその制御回路を有していてもよい。
インターフェース部２は、他の機器から画像を取得し、その画像を制御部７へ渡す。
【００１５】
ユーザインターフェース部３は、例えば、キーボードとマウスなどの入力装置と、液晶ディスプレイといった表示装置とを有する。または、ユーザインターフェース部３は、タッチパネルディスプレイといった、入力装置と表示装置とが一体化された装置を有してもよい。そしてユーザインターフェース部３は、例えば、ユーザの操作に応じて、アルゴリズム生成処理を開始させる操作信号を制御部７へ出力する。
【００１６】
またユーザインターフェース部３は、制御部７から受け取った、生成された画像処理アルゴリズムの詳細を表す情報などを表示する。
【００１７】
記憶回路４は、記憶部の一例であり、例えば、読み書き可能な半導体メモリと読み出し専用の半導体メモリとを有する。そして記憶回路４は、制御部７上で実行されるアルゴリズム生成処理を実行するためのコンピュータプログラム、及びそのアルゴリズム生成処理の途中で得られる中間計算結果またはサンプル画像などを記憶する。
【００１８】
ストレージ装置５は、記憶部の他の一例であり、例えば、磁気ディスク及びそのアクセス装置を有する。そしてストレージ装置５は、サンプル画像など、インターフェース部２を介して受け取った、アルゴリズム生成に利用される各種の画像を記憶する。さらに、ストレージ装置５は、アルゴリズム生成装置１が利用する画像処理ライブラリを記憶する。画像処理ライブラリには、複数の画像処理関数が含まれる。さらに、ストレージ装置５は、画像処理ライブラリから選択された１以上の画像処理関数の組み合わせにより実現される、他の機器が使用する他の画像処理ライブラリに含まれる画像処理関数と同等の処理を実行する追加画像処理関数を記憶する。さらに、ストレージ装置５は、アルゴリズム生成処理により生成された画像処理アルゴリズムを実現するための、追加画像処理関数の組み合わせを表すアルゴリズム情報を記憶する。なお、以下では、説明の便宜上、他の機器が使用する他の画像処理ライブラリを参照画像処理ライブラリと呼ぶ。また、参照画像処理ライブラリに含まれる画像処理関数を、参照画像処理関数と呼ぶ。
【００１９】
図２は、アルゴリズム生成装置１が利用する画像処理ライブラリに含まれる画像処理関数のセットの一例を示す図である。この例では、画像処理ライブラリ２００には、全部で26通りの画像処理関数が含まれる。このうち、関数Smooth(d)は、２次元の平滑化を行う関数であり、例えば、ガウシアンフィルタである。またdは、その関数が参照する水平方向及び垂直方向の画素数を表す。
【００２０】
関数Sobel(x=n,y=m)は、x方向（水平方向）にn階微分し、y方向（垂直方向）にm階微分するソーベルフィルタであり、エッジ検出などに利用される。また、関数Laplace(d)は、２次微分を計算するラプラシアンフィルタであり、dは、ラプラシアンフィルタが参照する水平方向及び垂直方向の画素数を表す。
【００２１】
関数Inverseは、各画素の輝度値を反転させる関数である。また関数Subは、２枚の画像の対応する画素間の画素値の差分値を出力する関数である。なお、差分値が負となる画素については、関数Subは、0を出力する。関数Addは、２枚の画像の対応する画素間の画素値の和を出力する関数である。また関数Diffは、２枚の画像の対応する画素間の画素値の差分絶対値を出力する関数である。
【００２２】
関数Thresh(t)は、２値化処理を行う関数であり、tは２値化閾値である。なお、関数Thresh(Auto)は、例えば、大津の２値化処理に従って、２値化閾値を自動的に決定する。また関数Cannyは、キャニーフィルタである。関数NoChangeは、入力された画像をそのまま出力する関数である。関数Erode及び関数Dilateは、それぞれ、モルフォロジーのエロージョン演算、ダイレーション演算を行う関数である。関数Mask(rangen)は、入力された画像にその関数が適用された以降の画像処理をrangen内のみで行うよう限定する関数である。そして関数And及び関数Orは、それぞれ、２枚の画像の対応する画素間の画素値の論理積、論理和を出力する関数である。
【００２３】
アルゴリズム生成装置１は、これらの画像処理関数のうちの任意のものを一つ以上選択し、選択した画像処理関数を組み合わせることで、様々な画像処理アルゴリズムを実現できる。
【００２４】
再度図１を参照すると、記憶媒体アクセス装置６は、例えば、半導体メモリカード及び光記憶媒体といった記憶媒体８にアクセスする装置である。記憶媒体アクセス装置６は、例えば、記憶媒体８に記憶された、制御部７上で実行される、アルゴリズム生成処理用のコンピュータプログラムを読み込み、制御部７に渡す。また記憶媒体アクセス装置６は、制御部７により生成された追加画像処理関数のセットまたはアルゴリズム生成処理により生成されたアルゴリズム情報を記憶媒体８に書き込んでもよい。
【００２５】
制御部７は、少なくとも一つのプロセッサ及びその周辺回路を有し、アルゴリズム生成装置１全体を制御する。また制御部７は、アルゴリズム生成処理を実行する。そして制御部７は、アルゴリズム生成処理の結果得られた追加画像処理関数のセット、あるいは、追加関数情報を、ストレージ装置５または記憶媒体アクセス装置６へ渡す。
【００２６】
図３は、アルゴリズム生成処理を実行するための制御部７の機能ブロック図である。制御部７は、追加関数生成部１１と、アルゴリズム生成部１２とを有する。
制御部７が有するこれらの各部は、例えば、制御部７が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールである。あるいは、制御部７が有するこれらの各部は、その各部の処理を実現する回路が集積された一つの集積回路として、制御部７と別個にアルゴリズム生成装置１に実装されてもよい。
【００２７】
追加関数生成部１１は、画像処理ライブラリに含まれる１以上の画像処理関数を用いて、参照画像処理ライブラリに含まれる所定数の参照画像処理関数について、その参照画像処理関数と同等の処理を実現する追加画像処理関数を生成する。なお、追加関数生成部１１は、参照画像処理ライブラリに含まれる全ての参照画像処理関数について追加画像処理関数を生成してもよい。あるいは、追加関数生成部１１は、参照画像処理ライブラリに含まれる参照画像処理関数のうちの一部の参照画像処理関数について追加画像処理関数を生成してもよい。
【００２８】
図４は、追加関数生成処理の概要を説明する図である。
追加関数生成部１１は、他の機器（例えば、他の画像処理システム）４００が利用する参照画像ライブラリ４１０に含まれる、複数の参照画像処理関数B1,B2,...,Bnのうちの任意の参照画像処理関数について追加画像処理関数を生成する。そのために、追加関数生成部１１は、他の機器４００から、サンプル画像４０１と、サンプル画像４０１に対して着目する参照画像処理関数（この例では、B1）を適用して得られた処理済みサンプル画像４０２とを、インターフェース部２を介して取得する。そして追加関数生成部１１は、それらの画像を教師データとして利用する。なお、サンプル画像４０１及び処理済みサンプル画像４０２は複数でもよい。そして追加関数生成部１１は、サンプル画像４０１に対して、画像処理ライブラリから選択した１以上の画像処理関数の組み合わせを適用して得られた処理済み画像と処理済みサンプル画像との差が所定の許容範囲内となる組み合わせ４０３を求める。そして追加関数生成部１１は、その組み合わせ４０３を追加画像処理関数として、画像処理ライブラリに追加登録する。
【００２９】
本実施形態では、追加関数生成部１１は、そのような画像処理関数の組み合わせを特定するために、遺伝的アルゴリズムを利用する。
【００３０】
図５は、遺伝的アルゴリズムを利用して追加画像処理関数となる画像処理関数の組み合わせを特定するための処理の概要を示す図である。
（ステップ１）初期個体生成
追加関数生成部１１は、まず、複数の初期個体５０１を生成する。そのために、追加関数生成部１１は、画像処理ライブラリから１以上の画像処理関数及び画像処理関数の動作を指定するパラメータをランダムに選択する。そして追加関数生成部１１は、ランダムに決定した処理の順序に従って選択した画像処理関数を組み合わせたものを一つの初期個体５０１とする。各初期個体は、それぞれ、全体として一つの画像処理関数となる。追加関数生成部１１は、初期個体５０１ごとに上記の処理を行う。
【００３１】
（ステップ２）進化過程
次に、追加関数生成部１１は、複数の初期個体５０１から所定個数（例えば、２個）の個体を選択する。そして追加関数生成部１１は、選択した個体を交叉させて新しい個体５０２を複数生成する。この例では、交叉によって、２個の個体に含まれる画像処理関数の一部が互いに交換されることで、新しい個体５０２が生成される。
さらに、追加関数生成部１１は、ある一定の確率で、突然変異と呼ばれる処理により、さらに新しい個体５０２を生成する。本実施形態では、追加関数生成部１１は、突然変異として、新しい個体５０２中に含まれる画像処理関数の何れかを、ランダムに他の画像処理関数に入れ替えることで、別の新しい個体５０２を生成する。なお、追加関数生成部１１は、突然変異として、新しい個体５０２中に含まれる画像処理関数の何れかについて、その画像処理関数の動作を指定するパラメータを他のパラメータに変更してもよい。
【００３２】
（ステップ３）生存選択
追加関数生成部１１は、複数の新しい個体５０２のそれぞれについて適応度を算出する。本実施形態では、追加関数生成部１１は、サンプル画像に、新しい個体５０２により表される画像処理関数の組み合わせを適用することで得られる処理済み画像と処理済みサンプル画像の対応画素間の画素値の差分絶対値和を適応度として算出する。なお、適応度は、評価値の一例である。そして追加関数生成部１１は、複数の新しい個体５０２のうち、適応度が最も良好な値（この例では、最小値）となる個体５０２ａと、ランダムに一つの個体５０２ｂとを選択する。
（ステップ４）個体入れ替え
追加関数生成部１１は、複数の初期個体５０１から任意の二つの個体を選択し、選択された二つの個体をステップ３にて生成された二つの個体５０２ａ、５０２ｂと入れ替える。
【００３３】
追加関数生成部１１は、ステップ２〜ステップ４の処理を、適応度が所定の許容範囲内に含まれる個体ができるまで繰り返す。なお、所定の許容範囲は、例えば、１画素当たりの輝度値の許容誤差（例えば、１）に、ターゲット画像の総画素数を乗じた値とすることができる。そして追加関数生成部１１は、適応度が所定の許容範囲内に含まれる個体で表される画像処理関数の組み合わせを、参照画像処理関数に対応する追加画像処理関数とする。追加関数生成部１１は、その追加画像処理関数についての追加関数情報を生成し、その追加関数情報を、ストレージ装置５に保存する。
【００３４】
図６は、追加関数情報の一例を示す図である。追加関数情報６００は、パラメータ情報６０１と、追加画像処理関数に含まれる各画像処理関数を呼び出すためのタグ情報６０２と、各画像処理関数の入出力関係を表す入出力情報６０３とを含む。なお、パラメータ情報６０１は、追加画像処理関数に含まれる各画像処理関数の動作を指定するパラメータの値、例えば、関数Smooth(d)のパラメータdの値を含む。さらに、パラメータ情報６０１は、処理済みサンプル画像を作成した際の参照画像処理関数、および、参照画像処理関数の動作を指定するパラメータを含んでもよい。タグ情報６０２は、例えば、対応する画像処理関数のポインタである。この例では、画像処理ライブラリに格納されている２番目、４番目及び７番目の画像処理関数が使用されることが示されている。また図６では、入出力情報６０３は、矢印で表されている。この例では、入出力情報６０３は、一つの入力画像が２番目の画像処理関数に入力され、他の入力画像が４番目の画像処理関数に入力されることを示している。さらに、入出力情報６０３は、２番目の画像処理関数の出力と４番目の画像処理関数の出力が７番目の画像処理関数に入力されること、及び、７番目の画像処理関数の出力が、追加画像処理関数の出力となることを示している。
【００３５】
なお、追加関数生成部１１は、遺伝的アルゴリズム以外の最適化法、例えば、シミュレーティッドアニーリングなどを利用して、参照画像処理関数ごとに追加画像処理関数を求めてもよい。
【００３６】
アルゴリズム生成部１２は、追加画像処理関数のセットから、１以上の追加画像処理関数を選択し、選択した追加画像処理関数を組み合わせることで、所望の画像処理を実現するアルゴリズムを生成する。
【００３７】
そのために、アルゴリズム生成部１２は、他の機器からインターフェース部２を介して取得した、サンプル画像と、サンプル画像に対して所望の画像処理を適用することで得られると想定されるターゲット画像とを教師データとして利用する。なお、サンプル画像は複数でもよい。また、ターゲット画像は、例えば、ユーザがサンプル画像を加工して生成してもよく、あるいは、ユーザが、ターゲット画像に様々な画像処理関数（画像処理ライブラリに含まれているものに限られない）を実際に適用することで生成してもよい。
【００３８】
図７（ａ）は、サンプル画像の一例を示す図であり、図７（ｂ）は、ターゲット画像の一例を示す図である。この例では、サンプル画像７００には、糸くず７０１が写っている。一方、ターゲット画像７１０は、糸くず７０１が写っている被写体領域に含まれる画素と被写体領域以外の背景領域に含まれる画素とが互いに異なる画素値を持つように２値化されている。
【００３９】
アルゴリズム生成部１２は、サンプル画像に対して、追加画像処理関数のセットから選択した１以上の追加画像処理関数の組み合わせを適用して得られた処理済み画像とターゲット画像との差が所定の許容範囲内となる、追加画像処理関数の組み合わせを探索する。そしてアルゴリズム生成部１２は、その追加画像処理関数の組み合わせを、所望の画像処理を実現するアルゴリズムとする。なお、処理済み画像とターゲット画像の差は、例えば、対応する画素間の輝度値の差の絶対値の総和とすることができる。また、所定の許容範囲は、例えば、１画素当たりの輝度値の許容誤差（例えば、１）に、ターゲット画像の総画素数を乗じた値とすることができる。
【００４０】
本実施形態では、アルゴリズム生成部１２は、そのような追加画像処理関数の組み合わせを特定するために、追加関数生成部１１と同様に、遺伝的アルゴリズムを利用する。あるいは、アルゴリズム生成部１２は、シミュレーティッドアニーリングといった他の最適化法を利用して、所望の画像処理を実現する追加画像処理関数の組み合わせを求めてもよい。
【００４１】
アルゴリズム生成部１２は、所望の画像処理アルゴリズムを実現する追加画像処理関数の組み合わせを表すアルゴリズム情報を生成する。なお、アルゴリズム情報の構造は、例えば、図６に示された追加関数情報の構造と同様の構造とすることができる。
【００４２】
図８は、本実施形態によるアルゴリズム生成処理の動作フローチャートである。
追加関数生成部１１は、参照画像ライブラリに含まれる、追加画像処理関数の作成対象となる１以上の参照画像処理関数のうち、追加画像処理関数が作成されていない参照画像処理関数を選択する（ステップＳ１０１）。なお、この選択は、ユーザインターフェース部３を介してユーザが行ってもよい。
【００４３】
追加関数生成部１１は、画像処理ライブラリから選択した１以上の画像処理関数の組み合わせの中から、選択した参照画像処理関数により行われる処理と同等の処理を実現できる組み合わせを探索する（ステップＳ１０２）。そして追加関数生成部１１は、選択した参照画像処理関数により行われる処理と同等の処理を実現できる画像処理関数の組み合わせを、その参照画像処理関数に対応する追加画像処理関数として追加する（ステップＳ１０３）。
【００４４】
追加関数生成部１１は、追加画像処理関数の作成対象となる参照画像処理関数のうち、追加画像処理関数が作成されていない参照画像処理関数が残っているか否か判定する（ステップＳ１０４）。追加画像処理関数が作成されていない参照画像処理関数が残っていれば（ステップＳ１０４−Ｙｅｓ）、追加関数生成部１１は、ステップＳ１０１以降の処理を繰り返す。
【００４５】
一方、追加画像処理関数が作成されていない参照画像処理関数が残っていなければ（ステップＳ１０４−Ｎｏ）、追加関数生成部１１は、追加画像処理関数の作成を終了する。その後、アルゴリズム生成部１２は、インターフェース部２を介してサンプル画像と、サンプル画像に所望の画像処理を適用して得られるターゲット画像を取得する（ステップＳ１０５）。
アルゴリズム生成部１２は、追加画像処理関数の組み合わせのうち、その組み合わせをサンプル画像に適用して得られる処理済み画像とターゲット画像との差が許容範囲内となる組み合わせを特定する。そしてアルゴリズム生成部１２は、その組み合わせを、所望の画像処理を実現するアルゴリズムとして生成する（ステップＳ１０６）。
そし制御部７は、アルゴリズム生成処理を終了する。
【００４６】
以上に説明してきたように、このアルゴリズム生成装置は、画像処理ライブラリに含まれる画像処理関数を組み合わせて、参照画像ライブラリに含まれる各参照画像処理関数と同等の処理を実現する追加画像処理関数を生成する。そしてこのアルゴリズム生成装置は、追加画像処理関数を組み合わせて所望の画像処理を実現するアルゴリズムを生成する。そのため、このアルゴリズム生成装置は、参照画像処理ライブラリを利用して実現された画像処理アルゴリズムと同じ処理を実行するアルゴリズムを他の画像処理ライブラリを用いて実現できる。
【００４７】
なお、変形例によれば、追加関数生成部１１は、参照画像処理関数を二つ以上組み合わせたものに対して、一つの追加画像処理関数を作成してもよい。この場合にも、追加関数生成部１１は、追加画像処理関数の生成対象となる参照画像処理関数の組み合わせをサンプル画像に適用することで得られた処理済みサンプル画像を評価値あるいは適応度の算出に利用することで、追加画像処理関数を作成できる。
【００４８】
また、他の変形例によれば、アルゴリズム生成部１２は、追加画像処理関数のセットに含まれる追加画像処理関数だけでなく、画像処理ライブラリに含まれる元の画像処理関数も利用して、所望の画像処理を実現するアルゴリズムを生成してもよい。
【００４９】
さらに他の変形例によれば、アルゴリズム生成装置１は、互いに異なる複数の参照画像ライブラリのそれぞれについて、追加画像処理関数のセットを作成してもよい。この場合には、アルゴリズム生成装置１は、参照画像ライブラリを識別するための識別情報を、例えば、ユーザインターフェース部３から取得し、その識別情報を対応する追加画像処理関数に関連付けてもよい。またこの場合、アルゴリズム生成装置１は、例えば、ユーザインターフェース部３から、画像処理アルゴリズムの生成に利用する参照画像ライブラリの識別情報を取得する。そしてアルゴリズム生成部１２は、画像処理アルゴリズムを生成する際に、取得した識別情報と関連付けられた追加画像処理関数のセットから、画像処理アルゴリズムの生成に利用する追加画像処理関数を選択すればよい。なお、アルゴリズム生成部１２は、この変形例においても、画像処理アルゴリズムの生成に利用する追加画像処理関数を、全ての追加画像処理関数のセットの中から選択してもよい。
【００５０】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【符号の説明】
【００５１】
１    アルゴリズム生成装置
２    インターフェース部
３    ユーザインターフェース部
４    記憶回路
５    ストレージ装置
６    記憶媒体アクセス装置
７    制御部
８    記憶媒体
１１    追加関数生成部
１２    アルゴリズム生成部
【図１】
0006331914.tif 000002
【図２】
0006331914.tif 000003
【図３】
0006331914.tif 000004
【図４】
0006331914.tif 000005
【図５】
0006331914.tif 000006
【図６】
0006331914.tif 000007
【図７】
0006331914.tif 000008
【図８】
0006331914.tif 000009