(57)【要約】【課題】画像を変化させるためのコンピュータプログラムを簡単に生成することができるプログラム生成方法を提供する。【解決手段】プログラム生成方法は、第１の画像セットを取得し（ステップＳ１１）、第１の画像セットに含まれる処理対象画像に類似する類似画像をデータベースＤＢから検索する（ステップＳ１３）。ステップＳ１３では、データベースＤＢ内のＮ個の第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と処理対象画像との間の第１の類似度Ｓｐと、当該第２の画像セットと第１の画像セットとの間の第２の類似度Ｓｗと、第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の処理対象画像に対する総合類似度Ｓｔを算出し（ステップＳ１３ａ）、その総合類似度Ｓｔに基づいて類似画像を検索する（ステップＳ１３ｂ）。【選択図】図２０
2018165974.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）ディスプレイに表示された少なくとも１つの画像を含む第１の画像セットを取得し、
（ｂ）Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の前記第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのコンピュータプログラムとを格納する記録媒体にアクセスし、
（ｃ）前記第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を前記記録媒体から検索し、
（ｄ）前記記録媒体において、検索された少なくとも１つの前記類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムを選択することによって、前記処理対象画像に適用されるコンピュータプログラムを適用プログラムとして生成し、
前記（ｃ）では、
（ｃ１）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と前記処理対象画像との間の第１の類似度と、当該第２の画像セットと前記第１の画像セットとの間の第２の類似度と、前記第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の前記処理対象画像に対する総合類似度を算出し、
（ｃ２）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれに含まれる画像に対して算出された前記総合類似度に基づいて、少なくとも１つの前記類似画像を検索する
プログラム生成方法。
【請求項２】
前記第１の類似度は、１つの前記第２の画像セットに含まれる少なくとも１つの画像のそれぞれと、前記処理対象画像との間の類似度のうちの最大の類似度である
請求項１に記載のプログラム生成方法。
【請求項３】
前記（ｃ２）では、
前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれで、第１の閾値以上の前記総合類似度が算出された画像を、前記類似画像として検索する
請求項１または２に記載のプログラム生成方法。
【請求項４】
前記（ｃ１）では、
前記第１の類似度と第１の重みとの積と、前記第２の類似度と第２の重みとの積との和を算出することによって、前記総合類似度を算出し、
前記第１の重みは、前記完成度が高いほど小さい値であり、前記第２の重みは、前記完成度が高いほど大きい値である
請求項１〜３の何れか１項に記載のプログラム生成方法。
【請求項５】
前記完成度は、
前記第１の画像セットの描画開始からの経過時間の基準時間に対する比、または、前記第１の画像セットに含まれる画像の数の基準数に対する比である
請求項４に記載のプログラム生成方法。
【請求項６】
前記完成度が第２の閾値以下のときには、
前記第１の重みは１であって、かつ、前記第２の重みは０であり、
前記完成度が前記第２の閾値を超えるときには、
前記第１の重みは０であって、かつ、前記第２の重みは１である
請求項４または５に記載のプログラム生成方法。
【請求項７】
前記（ｄ）では、
前記記録媒体に格納されているＮ個の前記第２の画像セットから、それぞれ前記類似画像を含むＭ（Ｎ＞Ｍ≧１）個の第２の画像セットを特定し、
Ｍ個の前記第２の画像セットから、最大の前記第２の類似度が算出された第２の画像セットを選択し、
選択された前記第２の画像セットから、前記処理対象画像との類似度が最大の画像である前記類似画像を特定し、
前記記録媒体において、特定された前記類似画像に関連付けられているコンピュータプログラムを選択することによって、前記適用プログラムを生成する
請求項１〜６の何れか１項に記載のプログラム生成方法。
【請求項８】
前記（ｄ）では、
前記記録媒体に格納されているＮ個の前記第２の画像セットから、それぞれ前記類似画像を含むＭ（Ｎ＞Ｍ≧２）個の第２の画像セットを特定し、
前記記録媒体において、Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像に関連付けられているコンピュータプログラムのうち、互いに第３の閾値以上の差がある特徴量を有する複数のコンピュータプログラムのみを候補プログラムとして提示し、
提示された複数の前記候補プログラムから、１つの前記候補プログラムを選択することによって、前記適用プログラムを生成し、
Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像は、当該第２の画像セット内で前記処理対象画像との類似度が最大の画像である
請求項１〜６の何れか１項に記載のプログラム生成方法。
【請求項９】
前記（ｄ）では、
前記記録媒体において、Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像に関連付けられているコンピュータプログラムの特徴量をベクトルとして導出し、
それぞれ導出されたベクトルを有するＭ個の前記コンピュータプログラムのうち、互いに第４の閾値未満のコサイン距離のベクトルを有する複数のコンピュータプログラムのみを、前記候補プログラムとして提示する
請求項８に記載のプログラム生成方法。
【請求項１０】
Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の前記第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのコンピュータプログラムとを格納する記録媒体にアクセスするためのインターフェース部と、
処理回路とを備え、
前記処理回路は、
（ａ）ディスプレイに表示された少なくとも１つの画像を含む第１の画像セットを取得し、
（ｂ）前記インターフェース部を介して前記記録媒体にアクセスし、
（ｃ）前記第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を前記記録媒体から検索し、
（ｄ）前記記録媒体において、検索された少なくとも１つの前記類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムを選択することによって、前記処理対象画像に適用されるコンピュータプログラムを適用プログラムとして生成し、
前記（ｃ）では、
（ｃ１）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と前記処理対象画像との間の第１の類似度と、当該第２の画像セットと前記第１の画像セットとの間の第２の類似度と、前記第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の前記処理対象画像に対する総合類似度を算出し、
（ｃ２）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれに含まれる画像に対して算出された前記総合類似度に基づいて、少なくとも１つの前記類似画像を検索する
プログラム生成装置。
【請求項１１】
（ａ）ディスプレイに表示された少なくとも１つの画像を含む第１の画像セットを取得し、
（ｂ）Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の前記第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのコンピュータプログラムとを格納する記録媒体にアクセスし、
（ｃ）前記第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を前記記録媒体から検索し、
（ｄ）前記記録媒体において、検索された少なくとも１つの前記類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムを選択することによって、前記処理対象画像に適用されるコンピュータプログラムを適用プログラムとして生成し、
前記（ｃ）では、
（ｃ１）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と前記処理対象画像との間の第１の類似度と、当該第２の画像セットと前記第１の画像セットとの間の第２の類似度と、前記第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の前記処理対象画像に対する総合類似度を算出し、
（ｃ２）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれに含まれる画像に対して算出された前記総合類似度に基づいて、少なくとも１つの前記類似画像を検索する
ことをプログラム生成装置のコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像を変化させるためのコンピュータプログラムを生成するプログラム生成方法などに関する。
【背景技術】
【０００２】
現在、ソースコードを記述しなくても、視覚的な操作でプログラミングが可能なビジュアルプログラミング言語が提供されている。ＭＩＴメディアラボの開発したＳｃｒａｔｃｈは、子ども向けのビジュアルプログラミング言語である（非特許文献参照）。このＳｃｒａｔｃｈでは、子供などの初心者が、正しい構文の書き方などを覚えることなくプログラミングができる。例えば、Ｓｃｒａｔｃｈでは、プログラム作成に必要な幾つかのコマンドがビジュアルブロックとして予め用意されている。子供などのユーザは、画像を描き、その用意された幾つかのコマンドから、自らが描いた画像に適用される１つまたは複数のコマンドを選択して組み合わせる。さらに、ユーザは、その選択したコマンドのパラメータを編集する。これによって、その画像に対するコンピュータプログラム（スクリプト）が生成される。そのコンピュータプログラムを実行することによって、ユーザに描かれた画像がアニメーションのように変化する。
【０００３】
このようなＳｃｒａｔｃｈを用いたプログラム生成方法では、遊び心のあるインタラクティブアニメーションなどを製作することができ、プログラミングの学習のやる気を子供などに起こさせることができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｓｃｒａｔｃｈ  インターネット<URL:https://scratch.mit.edu/>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来のプログラム生成方法では、コンピュータプログラムの生成に手間がかかるという問題がある。
【０００６】
そこで、本開示の非限定的で例示的な一態様は、画像を変化させるためのコンピュータプログラムを簡単に生成することができるプログラム生成方法を提供する。
【課題を解決するための手段】
【０００７】
本開示の一態様に係るプログラム生成方法は、（ａ）ディスプレイに表示された少なくとも１つの画像を含む第１の画像セットを取得し、（ｂ）Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の前記第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのコンピュータプログラムとを格納する記録媒体にアクセスし、（ｃ）前記第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を前記記録媒体から検索し、（ｄ）前記記録媒体において、検索された少なくとも１つの前記類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムを選択することによって、前記処理対象画像に適用されるコンピュータプログラムを適用プログラムとして生成し、前記（ｃ）では、（ｃ１）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と前記処理対象画像との間の第１の類似度と、当該第２の画像セットと前記第１の画像セットとの間の第２の類似度と、前記第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の前記処理対象画像に対する総合類似度を算出し、（ｃ２）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれに含まれる画像に対して算出された前記総合類似度に基づいて、少なくとも１つの前記類似画像を検索する。
【０００８】
なお、この包括的または具体的な態様は、装置、システム、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能な記録媒体で実現されてもよく、装置、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。コンピュータ読み取り可能な記録媒体は、例えばＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ Ｄｉｓｃ−Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）などの不揮発性の記録媒体を含む。
【発明の効果】
【０００９】
本開示によれば、画像を変化させるためのコンピュータプログラムを簡単に生成することができる。本開示の一態様の付加的な恩恵及び有利な点は本明細書及び図面から明らかとなる。この恩恵及び／又は有利な点は、本明細書及び図面に開示した様々な態様及び特徴により個別に提供され得るものであり、その１以上を得るために全てが必要ではない。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態におけるプログラム生成システムの構成を示す図である。
【図２】図２は、実施の形態における端末装置のディスプレイに表示される画面の一例を示す図である。
【図３】図３は、実施の形態におけるコマンドリストの一例を示す図である。
【図４】図４は、実施の形態におけるプログラム生成装置の構成を示すブロック図である。
【図５】図５は、実施の形態におけるデータベースに格納されている各データの関連付けを示す図である。
【図６】図６は、実施の形態におけるプログラム生成装置によって生成されるスクリプトの一例を示す図である。
【図７】図７は、実施の形態における画像検索部による類似画像の検索に用いられる各類似度を示す図である。
【図８】図８は、実施の形態におけるプログラム生成装置の全体的な処理動作の一例を示すフローチャートである。
【図９】図９は、実施の形態における第１の重みαおよび第２の重みβを示す図である。
【図１０】図１０は、図８に示すステップＳ１３００の類似画像の検索における詳細な処理動作の一例を示すフローチャートである。
【図１１】図１１は、図１０に示すステップＳ１３３０の重みの導出における詳細な処理動作の一例を示すフローチャートである。
【図１２】図１２は、図１０に示すステップＳ１３３０の重みの導出における詳細な処理動作の他の例を示すフローチャートである。
【図１３】図１３は、図１０に示すステップＳ１３４０の類似画像リストの生成における詳細な処理動作の一例を示すフローチャートである。
【図１４】図１４は、実施の形態における類似画像リストの一例を示す図である。
【図１５】図１５は、図８に示すステップＳ１４００のスクリプトの生成における詳細な処理動作の一例を示すフローチャートである。
【図１６】図１６は、実施の形態の変形例に係るプログラム生成装置の構成を示すブロック図である。
【図１７】図１７は、図８に示すステップＳ１４００のスクリプトの生成における詳細な処理動作の一例を示すフローチャートである。
【図１８】図１８は、実施の形態における、選択スクリプトをスクリプト候補リストに追加する処理を示す図である。
【図１９】図１９は、実施の形態における、スクリプト候補リストに示される各候補スクリプトが実行される状態の一例を示す。
【図２０】図２０は、本開示の一態様に係るプログラム生成方法の一例を示すフローチャートである。
【図２１】図２１は、実施の形態における端末装置のディスプレイに表示される画面の一例を示す図である。
【図２２】図２２は、実施の形態における端末装置のディスプレイに表示される画面の一例を示す図である。
【発明を実施するための形態】
【００１１】
（本開示の基礎となった知見）
本発明者は、「背景技術」の欄において記載したＳｃｒａｔｃｈに関し、以下の問題が生じることを見出した。
【００１２】
上述のように、Ｓｃｒａｔｃｈでは、それぞれ画像を変化させるためのコンピュータプログラムである複数種のコマンドが用意されている。ユーザは、入力手段（例えば、マウス及び／またはキーボード）を用いて、画像を選択、及び/または、画像を描画することによって、その画像を入力画像としてディスプレイに表示させる。次に、ユーザは、その入力画像に適用される少なくも１つのコマンドを、予め用意されている複数種のコマンドの中から選択する。そして、ユーザは、選択された少なくとも１つのコマンドのそれぞれに含まれるパラメータを設定する。パラメータは、画像の変化の度合いを示す。これにより、入力画像は、その選択された少なくとも１つのコマンドからなるスクリプトによって、設定されたパラメータに示される度合いだけ変化する。
【００１３】
しかしながら、ユーザが、入力画像に適用されるコマンドを複数種のコマンドからわざわざ選択して組み合わせるには手間がかかってしまう。そこで、入力画像に適用されるプログラム（スクリプト）を自動的に生成すれば、その手間を大幅に削減することができる。ここで、入力画像に適用されるプログラム（スクリプト）を自動的に生成するために、予め用意されたデータベースから、その入力画像に相応しいプログラムを検索することが考えられる。例えば、入力画像に類似する画像に対して既に生成されたプログラムがあれば、そのプログラムを検索することによって、入力画像に適用されるプログラムを自動的に生成することができる。
【００１４】
しかし、何れの画像が入力画像に類似しているかを適切に判断する必要があり、その判断に誤りがあれば、入力画像に相応しいプログラムを生成することができないという問題がある。
【００１５】
このような問題を解決するために、本開示の一態様に係るプログラム生成方法は、（ａ）ディスプレイに表示された少なくとも１つの画像を含む第１の画像セットを取得し、（ｂ）Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の前記第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのコンピュータプログラムとを格納する記録媒体にアクセスし、（ｃ）前記第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を前記記録媒体から検索し、（ｄ）前記記録媒体において、検索された少なくとも１つの前記類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムを選択することによって、前記処理対象画像に適用されるコンピュータプログラムを適用プログラムとして生成し、前記（ｃ）では、（ｃ１）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像と前記処理対象画像との間の第１の類似度と、当該第２の画像セットと前記第１の画像セットとの間の第２の類似度と、前記第１の画像セットの完成度とに基づいて、当該第２の画像セットに含まれる画像の前記処理対象画像に対する総合類似度を算出し、（ｃ２）前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれに含まれる画像に対して算出された前記総合類似度に基づいて、少なくとも１つの前記類似画像を検索する。例えば、前記第１の類似度は、１つの前記第２の画像セットに含まれる少なくとも１つの画像のそれぞれと、前記処理対象画像との間の類似度のうちの最大の類似度であってもよい。また、例えば、前記（ｃ２）では、前記記録媒体に格納されているＮ個の前記第２の画像セットのそれぞれで、第１の閾値以上の前記総合類似度が算出された画像を、前記類似画像として検索してもよい。
【００１６】
これにより、入力画像として描かれた処理対象画像に類似する少なくとも１つの類似画像が検索され、その少なくとも１つの類似画像のそれぞれに関連付けられているコンピュータプログラムから、１つのコンピュータプログラムが適用プログラムとして選択される。その結果、処理対象画像に適用されるコンピュータプログラムが自動的に生成される。したがって、ディスプレイに入力画像を描画したユーザは、その入力画像に適用されるコンピュータプログラムを、予め用意されている複数種のコマンドを組み合わせて作成する必要がない。その結果、入力画像を変化させるためのコンピュータプログラムを簡単に生成することができる。
【００１７】
また、本開示の一態様に係るプログラム生成方法では、第１の類似度および第２の類似度と、第１の画像セットの完成度とに基づいて、第２の画像セットに含まれる画像の処理対象画像に対する総合類似度が算出される。つまり、全体的な類似度および部分的な類似度と、第１の画像セットの完成度とに基づく総合類似度が算出され、その総合類似度を用いて類似画像が検索される。
【００１８】
例えば、第２の画像セットにボールを表す画像が含まれ、第１の画像セットの処理対象画像がボールを表している場合に、それらの画像だけを比較すれば、それらの画像は互いに類似している。しかし、第２の画像セットの全体が例えば野球の場面を表し、第１の画像セットの全体が例えばテニスまたはゴルフの場面を表している場合がある。このような場合には、第２の画像セットに含まれるボールを表す画像が、第１の画像セットに含まれるボールを表す処理対象画像に、類似していると言えない。また、第１の画像セットの完成度が低ければ、第２の画像セットと第１の画像セットとの間の全体的な類似度の信頼性は低く、逆に、第１の画像セットの完成度が高ければ、第２の画像セットと第１の画像セットとの間の全体的な類似度の信頼性は高い。
【００１９】
そこで、本開示の一態様に係るプログラム生成方法では、上述のように、全体的な類似度および部分的な類似度だけでなく、第１の画像セットの完成度にも基づく総合類似度が算出され、その総合類似度を用いて類似画像が検索される。したがって、処理対象画像に対してより適切な類似画像を検索することができる。その結果、処理対象画像により相応しいコンピュータプログラムを生成することができる。
【００２０】
また、前記（ｃ１）では、前記第１の類似度と第１の重みとの積と、前記第２の類似度と第２の重みとの積との和を算出することによって、前記総合類似度を算出し、前記第１の重みは、前記完成度が高いほど小さい値であり、前記第２の重みは、前記完成度が高いほど大きい値であってもよい。
【００２１】
これにより、第１の類似度と第２の類似度とを、第１の画像セットの完成度に応じて適切に重み付け加算することができる。その結果、総合類似度の信頼性をより高めることができ、処理対象画像により相応しいコンピュータプログラムを生成することができる。
【００２２】
また、前記完成度は、前記第１の画像セットの描画開始からの経過時間の基準時間に対する比、または、前記第１の画像セットに含まれる画像の数の基準数に対する比であってもよい。
【００２３】
例えば、基準時間は、１つの画像セットの描画開始から完成に至るまでの平均時間であり、基準数は、１つの完成された画像セットに含まれる画像の平均的な個数である。これにより、第１の画像セットの完成度を適切な数値として示すことができ、総合類似度の信頼性をより高めることができる。
【００２４】
また、前記完成度が第２の閾値以下のときには、前記第１の重みは１であって、かつ、前記第２の重みは０であり、前記完成度が前記第２の閾値を超えるときには、前記第１の重みは０であって、かつ、前記第２の重みは１であってもよい。
【００２５】
これにより、第１の重みと第２の重みはそれぞれ０または１の二値で表されるため、総合類似度の算出の処理負担を軽減することができる。
【００２６】
また、前記（ｄ）では、前記記録媒体に格納されているＮ個の前記第２の画像セットから、それぞれ前記類似画像を含むＭ（Ｎ＞Ｍ≧１）個の第２の画像セットを特定し、Ｍ個の前記第２の画像セットから、最大の前記第２の類似度が算出された第２の画像セットを選択し、選択された前記第２の画像セットから、前記処理対象画像との類似度が最大の画像である前記類似画像を特定し、前記記録媒体において、特定された前記類似画像に関連付けられているコンピュータプログラムを選択することによって、前記適用プログラムを生成してもよい。
【００２７】
これにより、検索された少なくとも１つの類似画像を適切に１つに絞り込むことができる。したがって、処理対象画像に相応しいコンピュータプログラムを簡単に生成することができる。
【００２８】
また、前記（ｄ）では、前記記録媒体に格納されているＮ個の前記第２の画像セットから、それぞれ前記類似画像を含むＭ（Ｎ＞Ｍ≧２）個の第２の画像セットを特定し、前記記録媒体において、Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像に関連付けられているコンピュータプログラムのうち、互いに第３の閾値以上の差がある特徴量を有する複数のコンピュータプログラムのみを候補プログラムとして提示し、提示された複数の前記候補プログラムから、１つの前記候補プログラムを選択することによって、前記適用プログラムを生成し、Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像は、当該第２の画像セット内で前記処理対象画像との類似度が最大の画像であってもよい。
【００２９】
これにより、複数のコンピュータプログラムが候補プログラムとして提示されるため、ユーザは、これらの複数の候補プログラムから好ましいコンピュータプログラムを適用プログラムとして選択することができる。また、提示される複数の候補プログラムのそれぞれは、互いに第３の閾値以上の差がある特徴量を有する。つまり、これらの候補プログラムは互いに類似していない。したがって、同じような候補プログラムが幾つも提示されることを抑えることができ、ユーザによるコンピュータプログラムの選択肢の幅を増やすことができる。
【００３０】
また、前記（ｄ）では、前記記録媒体において、Ｍ個の前記第２の画像セットのそれぞれに含まれる前記類似画像に関連付けられているコンピュータプログラムの特徴量をベクトルとして導出し、それぞれ導出されたベクトルを有するＭ個の前記コンピュータプログラムのうち、互いに第４の閾値未満のコサイン距離のベクトルを有する複数のコンピュータプログラムのみを、前記候補プログラムとして提示してもよい。
【００３１】
これにより、Ｍ個のコンピュータプログラムから、似ているコンピュータプログラムを適切に除くことができ、互いに似ていないコンピュータプログラムのみを候補プログラムとして提示することができる。
【００３２】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【００３３】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００３４】
また、各図は、模式図であり、必ずしも厳密に図示されたものではない。また、各図において、同じ構成部材については同じ符号を付している。
【００３５】
（実施の形態）
［システム］
図１は、本実施の形態におけるプログラム生成システムの構成を示す。
【００３６】
本実施の形態におけるプログラム生成システム１０００は、例えば図１に示すように、プログラム生成装置１００と、複数の端末装置２００と、通信ネットワーク３００とを備える。
【００３７】
複数の端末装置２００はそれぞれ、例えばパーソナルコンピュータ、スマートフォンまたはタブレット端末などからなる。また、これらの端末装置２００は、ユーザによる操作に応じて、その端末装置２００のディスプレイ２００ｄに入力画像を表示する。
【００３８】
通信ネットワーク３００は、例えばＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）またはインターネットなどであって、プログラム生成装置１００と複数の端末装置２００のそれぞれとを相互に通信可能に接続する。
【００３９】
プログラム生成装置１００は、通信ネットワーク３００を介して端末装置２００と通信し、端末装置２００のディスプレイ２００ｄに表示される入力画像を変化させるためのコンピュータプログラムを生成する。本実施の形態におけるプログラム生成装置１００は、コンピュータプログラムとしてスクリプトを生成する。
【００４０】
図２は、端末装置２００のディスプレイ２００ｄに表示される画面の一例を示す。
【００４１】
プログラム生成装置１００は、通信ネットワーク３００を介して、端末装置２００のディスプレイ２００ｄに、スクリプトを生成するためのスクリプト生成画面２０１を表示する。
【００４２】
スクリプト生成画面２０１は、画像入力領域２０２と、スクリプト表示編集領域２０３と、画像選択ボタン２０４ａ〜２０４ｃと、操作ボタンＳ、Ｂ１およびＢ２と、コマンドリストボタン２０８とを含む。
【００４３】
画像入力領域２０２には、ユーザによる端末装置２００に対する操作に応じて描画された入力画像ｉｍ１〜ｉｍ３が表示される。なお、以下、ユーザによる端末装置２００に対する操作を、入力操作という。
【００４４】
画像選択ボタン２０４ａ〜２０４ｃはそれぞれ、画像入力領域２０２に表示されている入力画像ｉｍ１〜ｉｍ３を選択するために用いられる。例えば、入力操作に応じて画像選択ボタン２０４ａが選択されると、画像入力領域２０２に表示されている入力画像ｉｍ１〜ｉｍ３のうちの入力画像ｉｍ１が、処理対象画像として選択される。例えば、入力操作が行われれば、プログラム生成装置１００は、この処理対象画像に対してその入力操作に応じた処理を行う。具体的には、プログラム生成装置１００は、処理対象画像に対して生成されたスクリプトを実行したり、そのスクリプトを端末装置２００のディスプレイ２００ｄに表示させたり、処理対象画像またはそのスクリプトの修正または編集を行う。なお、プログラム生成装置１００は、新たに描画される入力画像については、画像選択ボタンの選択がなくても、その入力画像を処理対象画像として扱ってもよい。
【００４５】
スクリプト表示編集領域２０３には、処理対象画像に対して生成されたスクリプトが表示される。また、スクリプト表示編集領域２０３に表示されているスクリプトに含まれるパラメータは、入力操作に応じて修正または編集される。
【００４６】
操作ボタンＳは、プログラム生成装置１００に処理対象画像のスクリプトを生成させるために用いられる。つまり、操作ボタンＳが入力操作によって選択されると、端末装置２００は、通信ネットワーク３００を介してスクリプトの生成をプログラム生成装置１００に指示する。プログラム生成装置１００は、端末装置２００からその指示を受けると、処理対象画像に対してスクリプトを生成する。
【００４７】
操作ボタンＢ１は、画像入力領域２０２に表示されている処理対象画像の修正または編集を行うために用いられる。つまり、操作ボタンＢ１が入力操作によって選択されると、端末装置２００は、通信ネットワーク３００を介して処理対象画像の修正をプログラム生成装置１００に指示する。プログラム生成装置１００は、端末装置２００からその指示を受けると、入力操作に応じた処理対象画像に対する修正または編集を、その端末装置２００から待ち受ける状態になる。
【００４８】
操作ボタンＢ２は、画像入力領域２０２に新しい入力画像の追加を行うために用いられる。つまり、操作ボタンＢ２が入力操作によって選択されると、端末装置２００は、通信ネットワーク３００を介して新たな入力画像の追加をプログラム生成装置１００に指示する。プログラム生成装置１００は、端末装置２００からその指示を受けると、入力操作に応じて新たに描画される入力画像を待ち受ける状態になる。端末装置２００も、新たな入力画像の描画を受け付ける状態になり、その後の入力操作に応じて描画される新たな入力画像を画像入力領域２０２に表示する。
【００４９】
コマンドリストボタン２０８は、プログラム生成装置１００で利用可能な複数種のコマンドを含むコマンドリスト（スクリプト制御関数リストともいう）を表示するために用いられる。つまり、このコマンドリストボタン２０８が入力操作によって選択されると、端末装置２００は、通信ネットワーク３００を介してコマンドリストの表示をプログラム生成装置１００に指示する。プログラム生成装置１００は、端末装置２００からその指示を受けると、コマンドリストを端末装置２００のディスプレイ２００ｄに表示する。端末装置２００は、そのコマンドリストの中から、入力画像に適用されるコマンドを入力操作に応じて選択してもよい。
【００５０】
図３は、コマンドリストの一例を示す。
【００５１】
例えば、コマンドリストは、「動き」に属する複数種のコマンド、「見た目」に属する複数種のコマンド、「音」に属する複数種のコマンド、「文字」に属する複数種のコマンド、および「制御」に属する複数種のコマンドなどを含む。
【００５２】
「動き」に属するコマンドは、入力画像を動かすためのコンピュータプログラムである。例えば、「動き」に属するコマンドには、コマンド「ｘ座標を［ｐ１］ずつ変える」およびコマンド「左方向に［ｐ５］度回転する」などがある。また、「制御」に属するコマンドには、コマンド「［ｐ１７］回繰り返す」などがある。ここで、各コマンドに含まれている［ｐｎ］（ｎは１以上の整数）は、画像または音などの変化の度合いを示すパラメータである。本実施の形態では、各コマンドに含まれるパラメータは、予め定められている。
【００５３】
プログラム生成装置１００は、図３に示すコマンドリストからコマンドが入力操作に応じて選択された場合には、その選択されたコマンドのパラメータを入力操作に応じて変更することによって、入力画像に適用される新たなスクリプトを生成してもよい。
【００５４】
ここで、本実施の形態では、画像入力領域２０２に描画された少なくとも１つの入力画像から第１の画像セットが構成される。つまり、第１の画像セットは、画像入力領域２０２の全体に描画される画像、すなわち全体画像である。また、第１の画像セットに含まれる各入力画像は、その全体画像を構成する部分画像である。
【００５５】
［装置構成］
図４は、本実施の形態におけるプログラム生成装置１００の構成を示すブロック図である。
【００５６】
プログラム生成装置１００は、表示されている画像を変化させるためのコンピュータプログラムをスクリプトとして生成する装置である。このプログラム生成装置１００は、インターフェース部１０１と、取得部１０２と、画像検索部１０３と、スクリプト選択部１０４と、重み算出部１０５と、表示制御部１０７とを備える。なお、プログラム生成装置１００が備える上記各構成要素のうち、インターフェース部１０１を除く、取得部１０２と、画像検索部１０３と、スクリプト選択部１０４と、重み算出部１０５と、表示制御部１０７とは処理回路に備えられている。
【００５７】
インターフェース部１０１は、プログラム生成装置１００の画像検索部１０３およびスクリプト選択部１０４がデータベースＤＢにアクセスするための機能を有する。具体的には、インターフェース部１０１は、ＵＳＢ（Universal Serial Bus）端子、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）端子、または無線通信機器などである。
【００５８】
データベースＤＢは、Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのスクリプトとを格納する記録媒体である。なお、Ｎ個の第２の画像セットに含まれる各々の画像セットは、上述の全体画像に相当し、Ｎ個の第２の画像セットに含まれる各々の画像セットに含まれる少なくとも１つの画像は、その全体画像を構成する部分画像に相当する。また、データベースＤＢに格納されている複数のスクリプトのそれぞれは、上述のコマンドリストに含まれる１つのコマンド、または複数のコマンドの組み合わせに相当する。
【００５９】
取得部１０２は、端末装置２００のディスプレイ２００ｄに描かれた少なくとも１つの画像を含む第１の画像セットを取得する。この少なくとも１つの画像のそれぞれは、上述の入力画像、すなわち第１の画像セットによって示される全体画像を構成する部分画像である。以下、入力画像を部分画像という。
【００６０】
また、取得部１０２は、操作ボタンＳの選択などの入力操作に応じた指示を端末装置２００から取得する。さらに、取得部１０２は、画像入力領域２０２に画像を描くために行われた入力操作を示す操作情報を端末装置２００から取得する。なお、操作情報には、例えば、入力操作の種類およびパラメータと、その入力操作が行われた日時などが示されている。
【００６１】
重み算出部１０５は、取得部１０２を介して端末装置２００から操作情報を逐次取得し、その操作情報から、第１の画像セットの完成度に応じた第１の重みαと第２の重みβとを導出する。
【００６２】
画像検索部１０３は、インターフェース部１０１を介してデータベースＤＢにアクセスする。そして、画像検索部１０３は、重み算出部１０５によって導出された第１の重みαと第２の重みβとを用いて、第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像をデータベースＤＢから検索する。なお、処理対象画像は、第１の画像セットに含まれる少なくとも１つの部分画像のうち、画像選択ボタン２０４ａ〜２０４ｃなどのボタンによって選択された部分画像である。
【００６３】
スクリプト選択部１０４は、インターフェース部１０１を介してデータベースＤＢにアクセスする。そして、スクリプト選択部１０４は、データベースＤＢにおいて、検索された少なくとも１つの類似画像のそれぞれに関連付けられているスクリプトから、１つのスクリプトを選択することによって、その処理対象画像に適用されるスクリプトを適用スクリプト（すなわち適用プログラム）として生成する。
【００６４】
表示制御部１０７は、生成された適用スクリプトを実行することによって、端末装置２００のディスプレイ２００ｄに表示されている処理対象画像を変化させる。また、表示制御部１０７は、生成された適用スクリプトを端末装置２００のディスプレイ２００ｄに表示する。つまり、適用スクリプトは、スクリプト生成画面２０１のスクリプト表示編集領域２０３に表示される。
【００６５】
［データベース］
図５は、本実施の形態におけるデータベースＤＢに格納されている各データの関連付けを示す。
【００６６】
データベースＤＢに格納されている各画像には、その画像を識別するための識別子である画像ＩＤが付与されている。さらに、データベースＤＢに格納されている各スクリプトにも、そのスクリプトを識別するための識別子であるスクリプトＩＤが付与されている。したがって、データベースＤＢでは、例えば、図５に示すように、画像ＩＤ「Ｉ＿ｘ＿Ｐ１＿１」を有する画像には、スクリプトＩＤ「Ｓ＿ｘ＿Ｐ１＿１」を有するスクリプトが関連付けられている。また、画像ＩＤ「Ｉ＿ｘ＿Ｐ１＿２」を有する画像には、スクリプトＩＤ「Ｓ＿ｘ＿Ｐ１＿２」を有するスクリプトが関連付けられている。
【００６７】
また、本実施の形態では、少なくとも１つの画像を含む第２の画像セットと、その少なくとも１つの画像のそれぞれに関連付けられたスクリプトとの組み合わせによって、プロジェクトが構成される。また、このようなプロジェクトは、例えば各端末装置２００のユーザによって生成されて、データベースＤＢに格納される。つまり、ユーザによって画像入力領域２０２に描かれた全ての部分画像と、それらの部分画像に対して生成されたスクリプトとから、プロジェクトが構成される。そして、このプロジェクトがデータベースＤＢに格納される。そこで、データベースＤＢでは、各プロジェクトに対して、そのプロジェクトを識別するための識別子であるプロジェクトＩＤが付与されている。さらに、プロジェクトを生成したユーザに対して、そのユーザを識別するための識別子であるユーザＩＤが付与されている。データベースＤＢでは、複数の画像ＩＤは、そのプロジェクトＩＤごとにグルーピングされ、さらに、複数のプロジェクトＩＤは、そのユーザＩＤごとにグルーピングされている。つまり、１つのプロジェクトに含まれる少なくとも１つの画像のそれぞれは、そのプロジェクトに関連付けられ、ユーザによって生成された少なくとも１つのプロジェクトのそれぞれは、そのユーザに関連付けられている。
【００６８】
ここで、データベースＤＢは、上述のように、Ｎ個の第２の画像セットと、Ｎ個の第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられたスクリプトとを格納している。Ｎ個の第２の画像セットのそれぞれは、プロジェクトに含まれる少なくとも１つの画像のセットである。つまり、データベースＤＢは、Ｎ個のプロジェクトのそれぞれで、そのプロジェクトに含まれる各画像に関連付けられたスクリプトを格納している。
【００６９】
また、本実施の形態では、第２の画像セットに含まれる少なくとも１つの画像のそれぞれは、画像だけでなく、画像入力領域２０２におけるその画像の位置、大きさおよび向きなども示す。したがって、それらの画像を組み合わせることによって、第２の画像セットが、画像入力領域２０２の大きさの全体画像として構成される。
【００７０】
図６は、プログラム生成装置１００によって生成されるスクリプトの一例を示す。なお、図６は、スクリプト生成画面２０１を示すが、画像入力領域２０２およびスクリプト表示編集領域２０３以外の構成については、省略する。
【００７１】
例えば、ユーザは、入力操作によって画像入力領域２０２に矢印の画像ｉｍ２を描画する。プログラム生成装置１００の取得部１０２は、その画像ｉｍ２を処理対象画像として取得し、画像検索部１０３は、その処理対象画像ｉｍ２に類似する画像を類似画像として、データベースＤＢから検索する。本実施の形態におけるプログラム生成装置１００は、その類似画像に関連付けられたスクリプトをデータベースＤＢから選択することによって、適用スクリプトを生成する。例えば、適用スクリプトは、「ｘ座標を［１０］ずつ変える」、「左方向に［３０］度回転する」、および「［１０］回繰り返す」からなる。なお、これらのスクリプトに含まれる括弧内の数値は、画像の変化の度合いを示すパラメータである。そして、プログラム生成装置１００の表示制御部１０７は、その生成された適用スクリプトをスクリプト表示編集領域２０３に表示し、その適用スクリプトを実行する。その結果、画像入力領域２０２に表示されている処理対象画像ｉｍ２は、そのスクリプトにしたがって変化する。
【００７２】
ここで、本実施の形態における画像検索部１０３は、処理対象画像ｉｍ２に相応しい適用スクリプトが生成されるように、第１の類似度と、第２の類似度と、第１の重みαと、第２の重みβとを用いて類似画像を検索する。つまり、画像検索部１０３は、第１の類似度と、第２の類似度と、第１の画像セットの完成度とに基づいて、第２の画像セットに含まれる画像の処理対象画像ｉｍ２に対する総合類似度を算出する。第１の類似度は、データベースＤＢに格納されているＮ個の第２の画像セットのそれぞれに含まれる画像と、処理対象画像との間の類似度である。第２の類似度は、第２の画像セットと第１の画像セットとの間の類似度である。さらに、画像検索部１０３は、データベースＤＢに格納されているＮ個の第２の画像セットのそれぞれに含まれる画像に対して算出された総合類似度に基づいて、少なくとも１つの類似画像を検索する。
【００７３】
つまり、本実施の形態における画像検索部１０３は、第１の画像セットの処理対象画像ｉｍ２とデータベースＤＢに格納されている画像との間の類似度だけでなく、第１の画像セットと第２の画像セットの間、すなわち全体画像同士の類似度も用いて、類似画像を検索する。
【００７４】
図７は、画像検索部１０３による類似画像の検索に用いられる各類似度を示す。
【００７５】
例えば、図７の（ａ）に示すように、画像入力領域２０２には、３つの部分画像ｉｍ１１〜ｉｍ１３を含む第１の画像セットが描画される。第１の画像セットはテニスの場面を表し、部分画像ｉｍ１１は、テニスコートに配置されたネットを表し、部分画像ｉｍ１２は、テニスボールを表し、部分画像ｉｍ１３は、テニスラケットを表す。ここで、入力操作によって、部分画像ｉｍ１２が処理対象画像として選択され、さらに、スクリプトの生成を指示するための操作ボタンＳが選択される。これにより、プログラム生成装置１００の画像検索部１０３は、例えば図７の（ｂ）に示すように、データベースＤＢに格納されている第２の画像セットを取得する。第２の画像セットは、例えば野球の場面を表し、画像ｄｉ１１〜ｄｉ１３を含む。画像ｄｉ１１は、野球のピッチャーを表し、画像ｄｉ１２は、野球のボールを表し、画像ｄｉ１３は、野球のバットを表す。そして、画像検索部１０３は、その第２の画像セットに含まれる画像ｄｉ１１〜ｄｉ１３のうちの何れか１つの画像と、処理対象画像ｉｍ１２との間の画像間類似度を、第１の類似度Ｓｐとして算出する。
【００７６】
具体的には、第１の類似度は、第２の画像セットに含まれる画像ｄｉ１１〜ｄｉ１３のそれぞれと、処理対象画像ｉｍ１２との間の類似度のうちの最大の類似度である。例えば、画像検索部１０３は、画像ｄｉ１２と処理対象画像ｉｍ１２との間の画像間類似度が最大である場合には、その画像間類似度を第１の類似度Ｓｐとして算出する。さらに、画像検索部１０３は、図７の（ａ）に示す第１の画像セットと、図７の（ｂ）に示す第２の画像セットとの間のセット間類似度を、第２の類似度Ｓｗとして算出する。
【００７７】
さらに、画像検索部１０３は、図７の（ａ）に示す第１の画像セットに含まれる部分画像ｉｍ１１〜ｉｍ１３の数に応じた数値、または、第１の画像セットの描画にかかった時間に応じた数値などを、第１の画像セットの完成度として導出する。
【００７８】
本実施の形態における画像検索部１０３は、このように導出される、第１の類似度と、第２の類似度と、第１の画像セットの完成度とを用いて類似画像を検索する。なお、類似画像の検索の詳細な処理については、フローチャートなどを用いて後述する。
【００７９】
［全体動作］
図８は、プログラム生成装置１００の全体的な処理動作の一例を示すフローチャートである。
【００８０】
（ステップＳ１１００）
プログラム生成装置１００は、まず、ユーザによる入力操作に応じて、画像入力領域２０２における画像の描画または編集を行うための編集処理を行う。例えば、プログラム生成装置１００は、新しい部分画像を受け付けたり、既に描画された部分画像の修正を行う。
【００８１】
（ステップＳ１２００）
次に、プログラム生成装置１００は、端末装置２００からスクリプトの生成指示があるか否かを判定する。つまり、プログラム生成装置１００は、スクリプト生成画面２０１の操作ボタンＳが選択されたか否かを判定する。ここで、スクリプトの生成指示があると判定すると（ステップＳ１２００のＹｅｓ）、プログラム生成装置１００は、ステップＳ１３００の処理に進む。一方、スクリプトの生成指示がないと判定すると（ステップＳ１２００のＮｏ）、プログラム生成装置１００は、ステップＳ１１００の処理に戻る。
【００８２】
（ステップＳ１３００）
プログラム生成装置１００は、ステップＳ１２００においてスクリプトの生成指示があると判定すると、第１の画像セットに含まれる処理対象画像に類似する類似画像をデータベースＤＢから検索する。
【００８３】
（ステップＳ１４００）
次に、プログラム生成装置１００は、ステップＳ１３００によって検索された類似画像に基づいて、処理対象画像に適用されるスクリプトとして適用スクリプトを生成する。そして、プログラム生成装置１００は、その適用スクリプトをスクリプト表示編集領域２０３に表示する。
【００８４】
（ステップＳ１５００）
ここで、プログラム生成装置１００は、端末装置２００からスクリプトの実行指示があるか否かを判定する。ここで、スクリプトの実行指示があると判定すると（ステップＳ１５００のＹｅｓ）、プログラム生成装置１００は、ステップＳ１６００の処理に進む。一方、スクリプトの実行指示がないと判定すると（ステップＳ１５００のＮｏ）、プログラム生成装置１００は、ステップＳ１７００の処理に進む。
【００８５】
（ステップＳ１６００）
プログラム生成装置１００は、ステップＳ１５００において適用スクリプトの実行指示があると判定すると、ステップＳ１４００で生成された適用スクリプトを実行する。これによって、プログラム生成装置１００は、第１の画像セットに含まれる処理対象画像を変化させる。
【００８６】
（ステップＳ１７００）
プログラム生成装置１００は、ステップＳ１５００において適用スクリプトの実行指示がないと判定すると、さらに、ステップＳ１４００で生成された適用スクリプトに対する修正指示が端末装置２００からあるか否かを判定する。ここで、適用スクリプトの修正指示があると判定すると（ステップＳ１７００のＹｅｓ）、プログラム生成装置１００は、ステップＳ１８００の処理に進む。一方、適用スクリプトの修正指示がないと判定すると（ステップＳ１７００のＮｏ）、プログラム生成装置１００は、ステップＳ１９００の処理に進む。
【００８７】
（ステップＳ１８００）
プログラム生成装置１００は、ステップＳ１７００において適用スクリプトの修正指示があると判定すると、その適用スクリプトをユーザの入力操作に応じて修正する。そして、プログラム生成装置１００は、ステップＳ１９００の処理に進む。
【００８８】
（ステップＳ１９００）
プログラム生成装置１００は、端末装置２００から画像の編集指示があるか否かを判定する。つまり、プログラム生成装置１００は、スクリプト生成画面２０１の操作ボタンＢ１またはＢ２が選択されたか否かを判定する。ここで、画像の編集指示があると判定すると（ステップＳ１９００のＹｅｓ）、プログラム生成装置１００は、ステップＳ１１００の処理に戻る。一方、画像の編集指示がないと判定すると（ステップＳ１９００のＮｏ）、プログラム生成装置１００は、適用スクリプトの生成に関わる処理を全て終了する。
【００８９】
本実施の形態におけるプログラム生成装置１００は、上記ステップＳ１１００〜Ｓ１９００の処理を行うことによって、上述のプロジェクトを生成する。
【００９０】
［類似画像検索］
ここで、ステップＳ１３００における類似画像の検索について詳細に説明する。
【００９１】
本実施の形態における画像検索部１０３は、第１の類似度Ｓｐと第２の類似度Ｓｗとを重み付け加算することによって総合類似度Ｓｔを算出する。このとき、画像検索部１０３は、重み算出部１０５によって算出された第１の重みαおよび第２の重みβを用いる。つまり、画像検索部１０３は、総合類似度Ｓｔ＝α・Ｓｐ×β・Ｓｗによって、第２の画像セットに含まれる画像の処理対象画像に対する総合類似度Ｓｔを算出する。
【００９２】
図９は、第１の重みαおよび第２の重みβを示す。
【００９３】
第１の重みαは、第１の類似度Ｓｐに乗算される重みであって、第１の画像セットの完成度が高いほど小さい０以上１以下の値である。第２の重みβは、第２の類似度Ｓｗに乗算される重みであって、第１の画像セットの完成度が高いほど大きい０以上１以下の値である。本実施の形態における画像検索部１０３は、第１の類似度Ｓｐと第１の重みαとの積と、第２の類似度Ｓｗと第２の重みβとの積との和を算出することによって、総合類似度Ｓｔを算出する。
【００９４】
これにより、第１の類似度Ｓｐと第２の類似度Ｓｗとを、第１の画像セットの完成度に応じて適切に重み付け加算することができる。つまり、完成度が低い場合には、第１の画像セットと第２の画像セットとの間の類似度が低くても、第１の画像セットの処理対象画像と、第２の画像セットの画像とでは、類似していることがあり得る。逆に、完成度が高い場合には、第１の画像セットと第２の画像セットとの間の類似度が高ければ、第１の画像セットの処理対象画像と、第２の画像セットの画像との間の類似度が低くても、巨視的には、それらの画像が類似していると扱った方がよい。
【００９５】
そこで、本実施の形態では、その完成度が低ければ、第１の類似度Ｓｐの重みを大きく、第２の類似度の重みを小さくし、逆に、その完成度が高ければ、第１の類似度Ｓｐの重みを小さく、第２の類似度の重みを大きくする。その結果、総合類似度の信頼性をより高めることができ、処理対象画像により相応しいスクリプトを生成することができる。
【００９６】
図１０は、図８に示すステップＳ１３００の類似画像の検索における詳細な処理動作の一例を示すフローチャートである。
【００９７】
（Ｓ１３１０）
画像検索部１０３は、取得部１０２を介して端末装置２００から第１の画像セットを取得する。
【００９８】
（Ｓ１３２０）
重み算出部１０５は、取得部１０２を介して端末装置２００から操作情報を取得する。
【００９９】
（Ｓ１３３０）
重み算出部１０５は、取得した操作情報に基づいて第１の重みαと第２の重みβとを導出する。
【０１００】
（Ｓ１３４０）
画像検索部１０３は、ステップＳ１３１０で取得された第１の画像セットと、ステップＳ１３３０で導出された第１の重みαおよび第２の重みβとを用いて、少なくとも１つの類似画像を示す類似画像リストを生成する。この類似画像リストの生成によって、少なくとも１つの類似画像が検索される。
【０１０１】
図１１は、図１０に示すステップＳ１３３０の重みの導出における詳細な処理動作の一例を示すフローチャートである。
【０１０２】
（Ｓ１３３１）
重み算出部１０５は、端末装置２００から取得部１０２を介して取得した操作情報から、描画指数ｍを特定する。描画指数ｍは、例えば、第１の画像セットの描画時間、すなわち、第１の画像セットの描画が開始されてからの経過時間である。例えば、操作情報には、入力操作の内容と、その入力操作が行われた日時とが示されている。したがって、重み算出部１０５は、第１の画像セットに対する最初の入力操作が行われた日時をその操作情報から導出し、その日時から現在の日時での経過時間を、描画指数ｍとして特定する。または、描画指数ｍは、第１の画像セットに含まれる部分画像の数である。なお、描画指数ｍが部分画像の数である場合には、重み算出部１０５は、操作情報ではなく、第１の画像セットからその描画指数ｍを特定してもよい。
【０１０３】
（Ｓ１３３２）
重み算出部１０５は、完成描画指数ｎを取得する。この完成描画指数ｎは、画像セットの完成までの平均描画時間、すなわち、画像セットの描画開始から完成までに至る平均的な時間である。または、完成描画指数ｎは、完成された画像セットにおける平均部分画像数、すなわち、完成された画像セットに含まれる部分画像の平均的な数である。重み算出部１０５は、その完成描画指数ｎを例えばデータベースＤＢから取得してもよく、データベースＤＢ以外の他の記録媒体から取得してもよい。
【０１０４】
（Ｓ１３３３）
重み算出部１０５は、描画指数ｍと完成描画指数ｎとを用い、ｍ／ｎによって示される完成度を導出する。つまり、完成度は、画像セットの完成までの平均描画時間に対する第１の画像セットの描画時間の比である。平均描画時間がｎ分であり、第１の画像セットの描画時間がｍ分であれば、完成度は、ｍ分／ｎ分である。または、完成度は、完成された画像セットの平均部分画像数に対する第１の画像セットの部分画像数の比である。平均部分画像数がｎ個であり、第１の画像セットの部分画像数がｍ個であれば、完成度は、ｍ個／ｎ個である。
【０１０５】
このように、本実施の形態では、完成度は、第１の画像セットの描画開始からの経過時間の基準時間に対する比、または、第１の画像セットに含まれる画像（すなわち部分画像）の数の基準数に対する比である。基準時間は、上述の平均描画時間であり、基準数は、上述の平均部分画像数である。なお、平均描画時間は、ユーザごとの平均的な時間であってもよく、複数人の平均的な時間であってもよい。同様に、平均部分画像数は、ユーザごとの平均的な部分画像の数であってもよく、複数人の平均的な部分画像の数であってもよい。
【０１０６】
（Ｓ１３３４）
重み算出部１０５は、第１の重みαおよび第２の重みβをそれぞれ、α＝１−ｍ／ｎおよびβ＝ｍ／ｎによって算出する。このように、本実施の形態における第１の重みαは、完成度が高いほど小さい値であり、第２の重みβは、完成度が高いほど大きい値である。
【０１０７】
図１２は、図１０に示すステップＳ１３３０の重みの導出における詳細な処理動作の他の例を示すフローチャートである。
【０１０８】
（Ｓ１３３６）
重み算出部１０５は、端末装置２００から取得部１０２を介して取得した操作情報から、描画指数ｍを完成度として特定する。描画指数ｍは、上述と同様、第１の画像セットの描画時間、または第１の画像セットに含まれる部分画像の数である。なお、描画指数ｍが部分画像の数である場合には、重み算出部１０５は、操作情報ではなく、第１の画像セットからその描画指数ｍを特定してもよい。
【０１０９】
（Ｓ１３３７）
重み算出部１０５は、描画指数ｍが閾値以下であるか否かを判定する（ステップＳ１３３７）。ここで、描画指数ｍが閾値以下であると判定すると（ステップＳ１３３７のＹｅｓ）、重み算出部１０５は、ステップＳ１３３８の処理に進む。一方、描画指数ｍが閾値を超えると判定すると（ステップＳ１３３７のＮｏ）、重み算出部１０５は、ステップＳ１３３９の処理に進む。
【０１１０】
（Ｓ１３３８）
重み算出部１０５は、描画指数ｍが小さいため、すなわち完成度が低いため、第１の重みαおよび第２の重みβをそれぞれ、α＝１およびβ＝０として導出する。
【０１１１】
（Ｓ１３３９）
重み算出部１０５は、描画指数ｍが大きいため、すなわち完成度が高いため、第１の重みαおよび第２の重みβをそれぞれ、α＝０およびβ＝１として導出する。
【０１１２】
このように、本実施の形態では、第１の重みαおよび第２の重みβはそれぞれ二値で表されてもよい。つまり、完成度が第２の閾値以下のときには、第１の重みαは１であって、かつ、第２の重みβは０であり、完成度が第２の閾値を超えるときには、第１の重みαは０であって、かつ、第２の重みβは１である。これにより、第１の重みαと第２の重みβはそれぞれ０または１の二値で表されるため、総合類似度Ｓｔの算出の処理負担を軽減することができる。
【０１１３】
なお、図１２に示す例では、描画指数ｍを完成度として用いたが、図１１に示す例と同様に、ｍ／ｎを完成度として用い、その完成度の高さに応じて、第１の重みαおよび第２の重みβをそれぞれ二値で表してもよい。
【０１１４】
図１３は、図１０に示すステップＳ１３４０の類似画像リストの生成における詳細な処理動作の一例を示すフローチャートである。
【０１１５】
（Ｓ１３４１）
画像検索部１０３は、第１の画像セットの全体の画像特徴量と、第１の画像セットに含まれる処理対象画像の画像特徴量とを算出する。これらの画像特徴量は、例えばＳＩＦＴ（Scale-Invariant Feature Transform）またはＳＵＲＦ（Speeded Up Robust Features）などによってベクトルとして算出される。
【０１１６】
（Ｓ１３４２）
画像検索部１０３は、データベースＤＢから第２の画像セットを選択する。
【０１１７】
（Ｓ１３４３）
画像検索部１０３は、ステップＳ１３４１と同様に、選択された第２の画像セットの全体の画像特徴量と、その第２の画像セットに含まれる各画像の画像特徴量とを算出する。
【０１１８】
（Ｓ１３４４）
画像検索部１０３は、第２の画像セットに含まれる各画像の特徴量を示すベクトルと、処理対象画像の特徴量を示すベクトルとの間の各々の距離（すなわち画像間距離）を算出する。この画像間距離は、例えばコサイン距離である。画像検索部１０３は、これらの算出された画像間距離のうち、最大の画像間距離を選択する。この最大の画像間距離は、上述の最大の画像間類似度、すなわち第１の類似度Ｓｐに相当する。なお、この最大の画像間距離が算出された、第２の画像セットに含まれる画像を、以下、最類似部分画像という。
【０１１９】
（Ｓ１３４５）
画像検索部１０３は、第２の画像セットと第１の画像セットとの間の距離（すなわちセット間距離）を算出する。このセット間距離は、第２の画像セットの全体の画像特徴量であるベクトルと、第１の画像セットの全体の画像特徴量であるベクトルとの間の距離であって、上述と同様に、例えばコサイン距離である。また、このセット間距離は、上述のセット間類似度、すなわち第２の類似度Ｓｗに相当する。
【０１２０】
（Ｓ１３４６）
画像検索部１０３は、第２の画像セットの最類似部分画像の処理対象画像に対する総合類似度Ｓｔを算出する。このとき、画像検索部１０３は、ステップＳ１３４４およびステップＳ１３４５で算出された第１の類似度Ｓｐおよび第２の類似度Ｓｗと、ステップＳ１３３０で算出された第１の重みαおよび第２の重みβとを用いる。つまり、画像検索部１０３は、Ｓｔ＝α・Ｓｐ＋β・Ｓｗによって、総合類似度Ｓｔを算出する。
【０１２１】
（Ｓ１３４７）
画像検索部１０３は、総合類似度Ｓｔが閾値以上か否かを判定する。ここで、総合類似度Ｓｔが閾値以上であると判定すると（ステップＳ１３４７のＹｅｓ）、画像検索部１０３は、ステップＳ１３４８の処理に進む。一方、総合類似度Ｓｔが閾値未満であると判定すると（ステップＳ１３４７のＮｏ）、画像検索部１０３は、ステップＳ１３４９の処理に進む。
【０１２２】
（Ｓ１３４８）
画像検索部１０３は、総合類似度Ｓｔが閾値以上の場合には、その総合類似度Ｓｔが算出された第２の画像セットを、類似画像リストに追加する。具体的には、画像検索部１０３は、第２の画像セットに対応するプロジェクトＩＤ、その総合類似度Ｓｔ、および、その総合類似度Ｓｔが算出された最類似部分画像の画像ＩＤなどを、類似画像リストに追加する。なお、画像検索部１０３は、総合類似度Ｓｔが閾値未満の場合には、その総合類似度Ｓｔが算出された第２の画像セットなどを、類似画像リストに追加しない。なお、画像検索部１０３は類似画像リストを保持してもよい。
【０１２３】
つまり、本実施の形態では、データベースＤＢに格納されているＮ個の第２の画像セットのそれぞれで、第１の閾値以上の総合類似度Ｓｔが算出された画像、すなわち最類似部分画像を、類似画像として検索する。
【０１２４】
（Ｓ１３４９）
画像検索部１０３は、データベースＤＢ内の全ての第２の画像セットを選択したか否かを判定する。ここで、全ての第２の画像セットを選択したと判定すると（ステップＳ１３４９のＹｅｓ）、画像検索部１０３は、類似画像の検索を終了する。一方、全ての第２の画像セットを選択していないと判定すると（ステップＳ１３４９のＮｏ）、画像検索部１０３は、ステップＳ１３４２の処理に戻る。このときには、ステップＳ１３４２において、未だ選択されていない第２の画像セットがデータベースＤＢから選択される。
【０１２５】
図１４は、類似画像リストの一例を示す。
【０１２６】
類似画像リストには、図１４に示すように、閾値以上の総合類似度Ｓｔが算出された第２の画像セットが示されている。なお、第２の画像セットは、その第２の画像セットに対応するプロジェクトＩＤによって示されている。
【０１２７】
具体的には、類似画像リストは、プロジェクトＩＤだけでなく、第２の類似度Ｓｗと、少なくとも１つの画像ＩＤと、それらの画像ＩＤのうちの最類似部分画像の画像ＩＤと、総合類似度Ｓｔとを、そのプロジェクトＩＤに関連付けて示す。
【０１２８】
第２の類似度Ｓｗは、関連付けられているプロジェクトＩＤの第２の画像セットに対して算出された上述のセット間類似度またはセット間距離である。少なくとも１つの画像ＩＤは、関連付けられているプロジェクトＩＤの第２の画像セットに含まれる全ての画像の画像ＩＤである。最類似部分画像の画像ＩＤは、その全ての画像のうちの１つの画像の画像ＩＤである。総合類似度Ｓｔは、その最類似部分画像に対して算出された類似度である。
【０１２９】
例えば、画像検索部１０３は、図１３のステップＳ１３４７において、総合類似度Ｓｔが閾値以上であると判定すると、その総合類似度Ｓｔと、その総合類似度Ｓｔが算出された最類似部分画像の画像ＩＤとを、類似画像リストに追加する。例えば、総合類似度Ｓｔが、図１４に示すように「０．９０」であれば、画像検索部１０３は、その総合類似度Ｓｔ「０．９０」と、その総合類似度Ｓｔが算出された最類似部分画像の画像ＩＤ「Ｉ＿ｍ＿Ｐ５＿１」とを類似画像リストに追加する。
【０１３０】
さらに、画像検索部１０３は、その最類似部分画像を含む第２の画像セットのプロジェクトＩＤと、その第２の画像セットに対して算出された第２の類似度Ｓｗと、その第２の画像セットに含まれる各画像の画像ＩＤとを、類似画像リストに追加する。例えば、最類似部分画像の画像ＩＤが「Ｉ＿ｍ＿Ｐ５＿１」である場合、画像検索部１０３は、その最類似部分画像を含む第２の画像セットのプロジェクトＩＤ「ｍ＿Ｐ５」を類似画像リストに追加する。さらに、画像検索部１０３は、その第２の画像セットに含まれる各画像の画像ＩＤ「Ｉ＿ｍ＿Ｐ５＿１、Ｉ＿ｍ＿Ｐ５＿２、・・・」を類似画像リストに追加する。
【０１３１】
このような類似画像リストは、第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像を最類似部分画像（具体的には、最類似部分画像の画像ＩＤ）として示す。
【０１３２】
図１５は、図８に示すステップＳ１４００のスクリプトの生成における詳細な処理動作の一例を示すフローチャートである。
【０１３３】
（Ｓ１４０１）
スクリプト選択部１０４は、画像検索部１０３から類似画像リストを取得する。
【０１３４】
（Ｓ１４０２）
スクリプト選択部１０４は、その類似画像リストを参照し、第１の画像セットに最も類似する第２の画像セットを選択する。つまり、スクリプト選択部１０４は、類似画像リストに示される最大の第２の類似度Ｓｗに関連付けられているプロジェクトＩＤを、類似画像リストを参照することによって特定する。これによって、特定されたプロジェクトＩＤによって示される第２の画像セットが選択される。
【０１３５】
（Ｓ１４０３）
スクリプト選択部１０４は、ステップＳ１４０２で選択された第２の画像セットから、第１の画像セットに含まれる処理対象画像に最も類似する画像を選択する。つまり、スクリプト選択部１０４は、選択された第２の画像セットのプロジェクトＩＤに関連付けられている最類似部分画像の画像ＩＤを、類似画像リストを参照することによって特定する。これによって、処理対象画像に最も類似する画像が選択される。
【０１３６】
（Ｓ１４０４）
スクリプト選択部１０４は、ステップＳ１４０３で選択された画像、すなわち最類似部分画像の画像ＩＤに関連付けられているスクリプトを、データベースＤＢから選択する。このようにスクリプトが選択されることによって、そのスクリプトが適用スクリプトとして生成される。そして、スクリプト選択部１０４は、その適用スクリプトを表示制御部１０７に出力する。
【０１３７】
（Ｓ１４０５）
表示制御部１０７は、スクリプト選択部１０４から適用スクリプトを取得し、その適用スクリプトを端末装置２００のディスプレイ２００ｄに表示する。つまり、適用スクリプトが、スクリプト生成画面２０１のスクリプト表示編集領域２０３に表示される。
【０１３８】
このように、本実施の形態では、ステップＳ１４０１で類似画像リストを取得することによって、データベースＤＢに格納されているＮ個の第２の画像セットから、それぞれ類似画像（すなわち最類似部分画像）を含むＭ（Ｎ＞Ｍ≧１）個の第２の画像セットを特定する。そして、ステップＳ１４０２では、Ｍ個の第２の画像セットから、最大の第２の類似度Ｓｗが算出された第２の画像セットを選択する。次に、ステップＳ１４０３では、選択された第２の画像セットから、処理対象画像との類似度が最大の画像である類似画像（すなわち最類似部分画像）を特定する。そして、ステップＳ１４０４では、データベースＤＢにおいて、特定された類似画像に関連付けられているスクリプトを選択することによって、適用スクリプトを生成する。
【０１３９】
これにより、ステップＳ１３００で検索された少なくとも１つの類似画像（すなわち最類似部分画像）を、適切に１つに絞り込むことができる。したがって、処理対象画像に相応しいスクリプトを簡単に生成することができる。
【０１４０】
図２１に類似画像の検索前のディスプレイ２００ｄの画面から類似画像の検索後のディスプレイ２００ｄの画面の遷移の一例を示す。ここでの検索とは、図８における類似画像の検索（Ｓ１３００）を意味する。図２１の（ａ）及び（ｂ）は、完成度が低い場合の画面の例である。具体的には、図２１の（ａ）は、検索前の画面の例であり、図２１の（ｂ）は、類似画像の検索前の画面の例である。図２１の（ｃ）及び図２１の（ｄ）は、完成度が高い場合の画面の例である。図２１の（ｃ）は、類似画像の検索前の画面の例であり、図２１の（ｄ）は、類似画像の検索後の画面の例である。図２１の（ａ）〜（ｄ）は、図２に示すスクリプト生成画面２０１と同様である。
【０１４１】
表示制御部１０７は、画像検索部１０３が類似画像の検索時に用いた完成度に基づいて、スクリプト生成画面２０１に、類似画像の検索時に用いた完成度に関する情報を表示する。なお、表示制御部１０７は、図８に示すＳ１３００の後、ディスプレイ２００ｄの画面に、完成度に関する情報を表示しても良い。
【０１４２】
図２１の（ａ）及び図２１の（ｃ）は、入力画像ｉｍ４に対する類似画像の検索前の状態を示す。図２１の（ｂ）に示すように、完成度が低い場合、表示制御部１０７は、画像選択領域２０４ｄ内における選択画像２０４ｅを強調するため、選択画像２０４ｅを背景２０４ｆで囲うように表示する。ここでの背景２０４ｆとは、画像選択領域２０４ｄの周囲と異なる色を用いた表示、スクリプト生成画面２０１の内で目立つ色を用いた表示（例えば、原色の色またはスクリプト生成画面２０１の内で利用されていない色）、周囲を囲む線の太さを他の領域を囲む線より太い線を用いた表示、周囲を囲む線の色を目立つ色を用いた表示、または点滅する表示を含む。図２１の（ａ）の表示と比べて、選択画像２０４ｅが強調される表示を意味する。これにより、選択された画像に対して重みを大きくして、類似画像を検索されたことを視覚的にわかるように表示される。
【０１４３】
図２１の（ｂ）に示すように、完成度が高い場合、表示制御部１０７は、画像選択領域２０４ｄ全体を背景２０４ｇで囲うように表示する。ここでの背景２０４ｇとは、画像選択領域２０４ｄの周囲と異なる色を用いた表示、スクリプト生成画面２０１の内で目立つ色を用いた表示（例えば、原色の色またはスクリプト生成画面２０１の内で利用されていない色）、周囲を囲む線の太さを他の領域を囲む線より太い線を用いた表示、周囲を囲む線の色を目立つ色を用いた表示、または点滅する表示を含む。図２１の（ａ）の表示と比べて、画像選択領域２０４ｄ全体が強調される表示を意味する。これにより、画像選択領域２０４ｄに表示される全ての画像に対して重みを大きくして、類似画像を検索されたことを視覚的にわかるように表示される。
【０１４４】
つまり、同じ画像（入力画像ｉｍ４）に対する検索であっても、完成度の違いにより検索後の画面は異なる表示にすることにより、ユーザに類似画像検索時の重みが視覚的にわかるように表示をされる。このように、完成度に応じて、類似画像の検索後の画面表示を変えることにより、ユーザは、いずれの画像に重み付されて類似画像が検索されているかを容易に理解することができる。
【０１４５】
また、図２２に、類似画像の検索前のディスプレイ２００ｄの画面から類似画像の検索後のディスプレイ２００ｄの画面の遷移のその他の一例を示す。図２２の（ａ）及び図２２の（ｂ）は、完成度が低い場合の画面の例である。具体的には、図２２の（ａ）は、検索前の画面の例であり、図２２の（ｂ）は、類似画像の検索前の画面の例である。図２２の（ｃ）及び（ｄ）は、完成度が高い場合の画面の例である。図２２の（ｃ）は、類似画像の検索前の画面の例であり、図２２の（ｄ）は、類似画像の検索後の画面の例である。図２２（ａ）〜（ｄ）は、図２に示すスクリプト生成画面２０１と同様である。図２２が図２１と異なる点は、類似画像検索時の重みを視覚的に表示する方法が異なることである。具体的には、図２１では、画像選択領域２０４ｄにおいて、画像を強調されているのに対して、図２２では、画像入力領域２０２において、画像が強調されていることである。
【０１４６】
図２２の（ｂ）において、図２１の（ｂ）の背景２０４ｆに対応して、背景２０４ｈが画像入力領域２０２に表示される。図２２の（ｄ）において、図２１の（ｄ）の背景２０４ｇに対応して、背景２０４ｉが画像入力領域２０２に表示される。
【０１４７】
背景２０４ｈ及び背景２０４ｉは、画像入力領域２０２の周囲と異なる色を用いた表示、スクリプト生成画面２０１の内で目立つ色を用いた表示（例えば、原色の色またはスクリプト生成画面２０１の内で利用されていない色）、周囲を囲む線の太さを他の領域を囲む線より太い線を用いた表示、周囲を囲む線の色を目立つ色を用いた表示、または点滅する表示を含む。
【０１４８】
以上のように、本実施の形態におけるプログラム生成装置１００では、第１の類似度Ｓｐおよび第２の類似度Ｓｗと、第１の画像セットの完成度とに基づく総合類似度Ｓｔが算出され、その総合類似度Ｓｔを用いて類似画像が検索される。したがって、処理対象画像に対してより適切な類似画像を検索することができる。その結果、処理対象画像により相応しいスクリプトを生成することができる。
【０１４９】
（変形例）
上記実施の形態では、第１の画像セットの処理対象画像に対して１つのスクリプトを選択し、そのスクリプトを適用スクリプトとして提示する。本変形例では、複数のスクリプトを候補スクリプトとして選択し、その複数の候補スクリプトからユーザによって選択された１つの候補スクリプトを適用スクリプトとして提示する。
【０１５０】
図１６は、上記実施の形態の変形例に係るプログラム生成装置の構成を示すブロック図である。
【０１５１】
本変形例に係るプログラム生成装置１００ａは、上記実施の形態におけるプログラム生成装置１００と同様の構成要素を備えるとともに、さらに、候補提示部１０８を備える。つまり、本変形例に係るプログラム生成装置１００ａは、インターフェース部１０１と、取得部１０２と、画像検索部１０３と、スクリプト選択部１０４と、重み算出部１０５と、表示制御部１０７と、候補提示部１０８とを備える。なお、上記実施の形態におけるプログラム生成装置１００と同様、プログラム生成装置１００ａが備える上記各構成要素のうち、インターフェース部１０１を除く各構成要素は処理回路に備えられている。
【０１５２】
本変形例に係るプログラム生成装置１００ａは、図８のフローチャートによって示される処理動作を行うが、スクリプトの生成を行うステップＳ１４００では、図１５のフローチャートによって示される処理動作とは異なる処理動作を行う。
【０１５３】
図１７は、図８に示すステップＳ１４００のスクリプトの生成における詳細な処理動作の一例を示すフローチャートである。
【０１５４】
（Ｓ１４１１）
スクリプト選択部１０４は、画像検索部１０３から類似画像リストを取得する。
【０１５５】
（Ｓ１４１２）
スクリプト選択部１０４は、その類似画像リストを参照し、第２の類似度Ｓｗの降順に第２の画像セットを選択する。つまり、スクリプト選択部１０４は、類似画像リストに示される未だ選択されていない少なくとも１つの第２の画像セットのプロジェクトＩＤのうち、最も大きい第２の類似度Ｓｗに関連付けられたプロジェクトＩＤを選択する。このプロジェクトＩＤの選択によって、そのプロジェクトＩＤに対応する第２の画像セットが選択される。
【０１５６】
（Ｓ１４１３）
スクリプト選択部１０４は、ステップＳ１４１２で選択された第２の画像セットに含まれる少なくとも１つの画像のうち、第１の画像セットに含まれる処理対象画像に最も類似する画像を選択する。つまり、スクリプト選択部１０４は、類似画像リストを参照し、選択された第２の画像セットのプロジェクトＩＤに関連付けられている最類似部分画像の画像ＩＤを選択する。この画像ＩＤの選択によって、処理対象画像に最も類似する画像が選択される。
【０１５７】
（Ｓ１４１４）
スクリプト選択部１０４は、ステップＳ１４１３で選択された画像（すなわち最類似部分画像）の画像ＩＤに関連付けられているスクリプトを、選択スクリプトとしてデータベースＤＢから選択する。
【０１５８】
（Ｓ１４１５）
スクリプト選択部１０４は、選択スクリプトのスクリプトベクトルＳｖ１を導出する。
【０１５９】
（Ｓ１４１６）
スクリプト選択部１０４は、スクリプト候補リストに示される各スクリプトのスクリプトベクトルＳｖ２を特定する。スクリプト候補リストの詳細については後述する。
【０１６０】
（Ｓ１４１７）
スクリプト選択部１０４は、ステップＳ１４１５で導出されたスクリプトベクトルＳｖ１と、ステップＳ１４１６で特定された各スクリプトベクトルＳｖ２との間の距離、例えばコサイン距離が閾値以下か否かを判定する。ここで、その距離が閾値以下であると判定すると（ステップＳ１４１７のＹｅｓ）、スクリプト選択部１０４は、ステップＳ１４１８の処理に進む。なお、スクリプト候補リストにスクリプトが示されず、その距離が閾値以下か否かを判定できない場合にも、スクリプト選択部１０４は、ステップＳ１４１８の処理に進む。一方、その距離が閾値を超えると判定すると（ステップＳ１４１７のＮｏ）、スクリプト選択部１０４は、ステップＳ１４１９の処理に進む。
【０１６１】
（Ｓ１４１８）
スクリプト選択部１０４は、選択スクリプトをスクリプト候補リストに追加する。つまり、スクリプト候補リストに示される各スクリプトのスクリプトベクトルＳｖ２との間の距離が長いスクリプトベクトルＳｖ１を有するスクリプトが、そのスクリプト候補リストに新たに追加される。言い換えれば、スクリプト候補リストに示される何れのスクリプトベクトルＳｖ２にも似ていないスクリプトベクトルＳｖ１を有するスクリプトが、そのスクリプト候補リストに追加される。具体的には、選択スクリプトのスクリプトＩＤが、スクリプト候補リストに追加される。
【０１６２】
（Ｓ１４１９）
スクリプト選択部１０４は、スクリプト候補リストに示されるスクリプトの数が最大数に達したか否かを判定する。最大数は、スクリプト候補リストに対して予め定められた数である。ここで、スクリプトの数が最大数に達したと判定すると（ステップＳ１４１９のＹｅｓ）、スクリプト選択部１０４は、ステップＳ１４２０の処理に進む。一方、スクリプトの数が最大数未満であると判定すると（ステップＳ１４１９のＮｏ）、スクリプト選択部１０４は、ステップＳ１４１２からの処理に戻る。
【０１６３】
（Ｓ１４２０）
候補提示部１０８は、最大数だけのスクリプトを示すスクリプト候補リストをスクリプト選択部１０４から取得する。そして、候補提示部１０８は、そのスクリプト候補リストに示される各スクリプトを、表示制御部１０７を介して端末装置２００のディスプレイ２００ｄに表示する。または、候補提示部１０８は、その各スクリプトを表示制御部１０７に順に実行させる。具体的には、候補提示部１０８は、スクリプト候補リストに示される各スクリプトＩＤを有するスクリプトを、スクリプト選択部１０４を介してデータベースＤＢから取得する。そして、候補提示部１０８は、その取得したスクリプトの提示または実行を表示制御部１０７にさせる。これにより、そのスクリプトが候補スクリプトとして提示または実行される。
【０１６４】
（Ｓ１４２１）
ステップＳ１４２０で各候補スクリプトが提示または実行されると、ユーザは、端末装置２００に対する入力操作によって、何れかの候補スクリプトを選択する。候補提示部１０８は、例えば取得部１０２を介して、その選択された候補スクリプトを示す情報（例えばスクリプトＩＤ）を取得する。これにより、候補提示部１０８は、スクリプト候補リストに示される各スクリプトの中から、入力操作に応じた１つのスクリプトを選択する。
【０１６５】
（Ｓ１４２２）
候補提示部１０８は、ステップＳ１４２１で選択された１つのスクリプトを、適用スクリプトとして表示制御部１０７に通知する。すなわち、適用スクリプトのスクリプトＩＤが表示制御部１０７に通知される。表示制御部１０７は、そのスクリプトＩＤを有する適用スクリプトを端末装置２００のディスプレイ２００ｄに表示する。つまり、適用スクリプトが、スクリプト生成画面２０１のスクリプト表示編集領域２０３に表示される。
【０１６６】
ここで、スクリプト候補リストについて図１８を用いて詳細に説明する。
【０１６７】
図１８は、選択スクリプトをスクリプト候補リストに追加する処理を示す。
【０１６８】
スクリプト候補リストは、例えば、最大数Ｍｋ以下のスクリプトを示すことができる。具体的には、スクリプト候補リストは、スクリプトのスクリプトＩＤおよびスクリプトベクトルＳｖ２を示す。図１８に示す例では、スクリプト候補リストには、４つのスクリプトのそれぞれのスクリプトＩＤおよびスクリプトベクトルＳｖ２が示されている。
【０１６９】
候補提示部１０８は、例えば図１７に示すステップＳ１４１５において、スクリプトＩＤ「Ｓ＿ｚ＿Ｐ５＿５」によって示される選択スクリプトに対して、スクリプトベクトルＳｖ１（０，２，１，・・・，１）を導出する。スクリプトベクトルは、例えばＱ（Ｑは１以上の整数）次元のベクトルであって、スクリプトベクトルに含まれる各要素の値は、その要素に対応する種類のコマンドが出現する頻度、またはそのコマンドのｔｆ（Term Frequency）−ｉｄｆ（Inverse Document Frequency）を示す。コマンドは、画像を変化させる命令であって、その変化の種類は例えば、画像の移動、回転、跳ね返る、または歩行などである。
【０１７０】
次に、候補提示部１０８は、スクリプト候補リストに示される各スクリプトのスクリプトベクトルＳｖ２を特定する。例えば、候補提示部１０８は、スクリプト候補リストに示される４つのスクリプトベクトルＳｖ２（１，３，０，・・・，１）、（０，０，４，・・・，２）、（２，０，１，・・・，３）、および（１，１，２，・・・，５）を特定する。そして、候補提示部１０８は、スクリプトベクトルＳｖ１（０，２，１，・・・，１）と、４つのスクリプトベクトルＳｖ２（１，３，０，・・・，１）、（０，０，４，・・・，２）、（２，０，１，・・・，３）、および（１，１，２，・・・，５）のそれぞれとの間の距離を算出する。次に、候補提示部１０８は、その算出された何れの距離も閾値以下であると判定すると、選択スクリプトのスクリプトベクトルＳｖ１（０，２，１，・・・，１）と、その選択スクリプトのスクリプトＩＤ「Ｓ＿ｚ＿Ｐ５＿５」とをスクリプト候補リストに追加する。このとき、スクリプトベクトルＳｖ１は、新たなスクリプトベクトルＳｖ２として追加される。
【０１７１】
図１９は、スクリプト候補リストに示される各候補スクリプトが実行される状態の一例を示す。
【０１７２】
表示制御部１０７は、図１７のステップＳ１４２０では、候補提示部１０８からの指示に応じて、スクリプト候補リストに示される各候補スクリプトを順に実行する。例えば、図１９の（ａ）に示すように、表示制御部１０７は、画像入力領域２０２に表示されている処理対象画像ｉｍ１２に対して第１の候補スクリプトを実行する。これにより、例えば、その処理対象画像ｉｍ１２は右方向に移動する。次に、表示制御部１０７は、その処理対象画像ｉｍ１２に対して第２の候補スクリプトを実行する。これにより、例えば図１９の（ｂ）に示すように、その処理対象画像ｉｍ１２は放物線に沿うように移動する。次に、表示制御部１０７は、その処理対象画像ｉｍ１２に対して第３の候補スクリプトを実行する。これにより、例えば図１９の（ｃ）に示すように、その処理対象画像ｉｍ１２は回転する。また、表示制御部１０７は、各候補スクリプトを実行しているときには、その実行されている候補スクリプトを、スクリプト表示編集領域２０３に表示してもよい。
【０１７３】
ユーザは、処理対象画像ｉｍ１２が変化している様子を見ることによって、または、表示される候補スクリプトを見ることによって、スクリプト候補スクリプトに示される各候補スクリプトの中から、何れか１つの候補スクリプトを選択する。例えば、表示制御部１０７は、スクリプト生成画面２０１に、各候補スクリプトを選択するためのボタンを表示し、ユーザによる入力操作によって選択されたボタンに対応する候補スクリプトを選択する。その結果、候補提示部１０８は、端末装置２００から取得部１０２を介して、その選択された候補スクリプトを示す情報（例えばスクリプトＩＤ）を取得する。これにより、その候補スクリプトが、処理対象画像ｉｍ２に適用される適用スクリプトとして生成される。
【０１７４】
このように、本変形例では、図１７のステップＳ１４１１で類似画像リストを取得することによって、データベースＤＢに格納されているＮ個の第２の画像セットから、それぞれ類似画像（すなわち最類似部分画像）を含むＭ（Ｎ＞Ｍ≧２）個の第２の画像セットを特定する。そして、ステップＳ１４１２〜Ｓ１４２０では、データベースＤＢにおいて、Ｍ個の第２の画像セットのそれぞれに含まれる類似画像に関連付けられているスクリプトのうち、互いに第３の閾値以上の差がある特徴量を有する複数のスクリプトのみを候補スクリプトとして提示する。ここで、Ｍ個の第２の画像セットのそれぞれに含まれる類似画像は、その第２の画像セット内で処理対象画像との類似度が最大の画像である。次に、ステップＳ１４２１では、提示された複数の候補スクリプトから、１つの候補スクリプトを選択することによって、適用スクリプトを生成する。
【０１７５】
これにより、複数のスクリプトが候補スクリプトとして提示されるため、ユーザは、これらの複数の候補スクリプトから好ましいスクリプトを適用スクリプトとして選択することができる。また、提示される複数の候補スクリプトのそれぞれは、互いに第３の閾値以上の差がある特徴量を有する。つまり、これらの候補スクリプトは互いに類似していない。したがって、同じような候補スクリプトが幾つも提示されることを抑えることができ、ユーザによるスクリプトの選択肢の幅を増やすことができる。
【０１７６】
また、本変形例における図１７のステップＳ１４１５では、データベースＤＢにおいて、Ｍ個の第２の画像セットのそれぞれに含まれる類似画像に関連付けられているスクリプトの特徴量をスクリプトベクトルとして導出する。そして、それぞれ導出されたスクリプトベクトルを有するＭ個のスクリプトのうち、互いに第４の閾値未満のコサイン距離のスクリプトベクトルを有する複数のスクリプトのみを、候補スクリプトとして提示する。
【０１７７】
これにより、Ｍ個のスクリプトから、似ているスクリプトを適切に除くことができ、互いに似ていないスクリプトのみを候補スクリプトとして提示することができる。
【０１７８】
（まとめ）
図２０は、本開示の一態様に係るプログラム生成方法の一例を示すフローチャートである。
【０１７９】
本開示の一態様に係るプログラム生成方法は、表示されている画像を変化させるためのコンピュータプログラムをスクリプトとして生成する方法であって、ステップＳ１１〜Ｓ１４の処理を含む。ユーザは、入力手段（例えば、マウス及び／またはキーボード）を用いて、画像を選択、及び/または、画像を描画することによって、その画像をディスプレイ２００ｄ上に表示させる。
【０１８０】
ステップＳ１１では、ディスプレイ２００ｄに表示された少なくとも１つの画像を含む第１の画像セットを取得する。ステップＳ１２では、Ｎ（Ｎ≧２）個の第２の画像セットと、Ｎ個の第２の画像セットのそれぞれに含まれる少なくとも１つの画像のそれぞれに関連付けられた、当該画像を変化させるためのスクリプトとを格納するデータベースＤＢにアクセスする。ステップＳ１３では、第１の画像セットに含まれる処理対象画像に類似する少なくとも１つの類似画像をデータベースＤＢから検索する。ステップＳ１４では、データベースＤＢにおいて、検索された少なくとも１つの類似画像のそれぞれに関連付けられているスクリプトから、１つのスクリプトを選択することによって、処理対象画像に適用されるスクリプトを適用スクリプトとして生成する。
【０１８１】
ここで、上述のステップＳ１３は、ステップＳ１３ａおよびＳ１３ｂを含む。ステップＳ１３ａでは、データベースＤＢに格納されているＮ個の第２の画像セットのそれぞれについて、当該第２の画像セットに含まれる画像の処理対象画像に対する総合類似度Ｓｔを算出する。このとき、当該第２の画像セットに含まれる画像と処理対象画像との間の第１の類似度Ｓｐと、当該第２の画像セットと第１の画像セットとの間の第２の類似度Ｓｗと、第１の画像セットの完成度とに基づいて、総合類似度Ｓｔを算出する。ステップＳ１３ｂでは、データベースＤＢに格納されているＮ個の第２の画像セットのそれぞれに含まれる画像に対して算出された総合類似度Ｓｔに基づいて、少なくとも１つの類似画像を検索する。
【０１８２】
これにより、入力画像として描かれた処理対象画像に類似する少なくとも１つの類似画像が検索され、その少なくとも１つの類似画像のそれぞれに関連付けられているスクリプトから、１つのスクリプトが適用スクリプトとして選択される。その結果、処理対象画像に適用されるスクリプトが自動的に生成される。したがって、ディスプレイ２００ｄに入力画像を描画したユーザは、その入力画像に適用されるスクリプトを、予め用意されている複数種のコマンドを組み合わせて作成する必要がない。その結果、入力画像を変化させるためのスクリプトを簡単に生成することができる。
【０１８３】
また、本開示の一態様に係るプログラム生成方法では、第１の類似度Ｓｐおよび第２の類似度Ｓｗと、第１の画像セットの完成度とに基づいて、第２の画像セットに含まれる画像の処理対象画像に対する総合類似度Ｓｔが算出される。つまり、全体的な類似度および部分的な類似度と、第１の画像セットの完成度とに基づく総合類似度Ｓｔが算出され、その総合類似度Ｓｔを用いて類似画像が検索される。
【０１８４】
例えば、第２の画像セットにボールを表す画像が含まれ、第１の画像セットの処理対象画像がボールを表している場合に、それらの画像だけを比較すれば、それらの画像は互いに類似している。しかし、第２の画像セットの全体が例えば野球の場面を表し、第１の画像セットの全体が例えばテニスまたはゴルフの場面を表している場合がある。このような場合には、第２の画像セットに含まれるボールを表す画像が、第１の画像セットに含まれるボールを表す処理対象画像に、類似していると言えない。また、第１の画像セットの完成度が低ければ、第２の画像セットと第１の画像セットとの間の全体的な類似度の信頼性は低く、逆に、第１の画像セットの完成度が高ければ、第２の画像セットと第１の画像セットとの間の全体的な類似度の信頼性は高い。
【０１８５】
そこで、本開示の一態様に係るプログラム生成方法では、上述のように、全体的な類似度および部分的な類似度と、第１の画像セットの完成度とに基づく総合類似度Ｓｔが算出され、その総合類似度Ｓｔを用いて類似画像が検索される。したがって、処理対象画像に対してより適切な類似画像を検索することができる。その結果、処理対象画像により相応しいスクリプトを生成することができる。
【０１８６】
以上、一つまたは複数の態様に係るプログラム生成装置またはプログラム生成方法について、実施の形態およびその変形例に基づいて説明したが、本開示は、この実施の形態などに限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態およびその変形例に施したものや、実施の形態と各変形例における構成要素を組み合わせて構築される形態も、本開示の範囲内に含まれてもよい。
【０１８７】
例えば、上記実施の形態およびその変形例では、プログラム生成装置は、通信ネットワーク３００を介して端末装置２００のディスプレイ２００ｄに入力画像を表示して変化させるが、端末装置２００がプログラム生成装置と通信することなく入力画像を変化させてもよい。つまり、端末装置２００が、スクリプトを生成し、そのスクリプトを実行することによって入力画像を変化させてもよい。この場合、例えば、端末装置２００は、プログラム生成装置１００の機能を実現するための制御プログラムを、例えば、プログラム生成装置１００から、ダウンロードする。そして、端末装置２００は、その制御プログラムを実行することによって、上記実施の形態またはその変形例と同様に、スクリプトを生成し、入力画像を変化させる。
【０１８８】
また、上記実施の形態およびその変形例では、コンピュータプログラムとしてスクリプトを生成したが、生成されるコンピュータプログラムは特定のプログラム言語に限定されるものではなく、どのような言語のプログラムであってもよい。
【０１８９】
なお、上記実施の形態および各変形例において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態のプログラム生成装置などを実現するソフトウェアは、図８、図１０〜図１３、図１５、図１７および図２０に示すフローチャートに含まれる各ステップをコンピュータに実行させる。
【０１９０】
また、本開示において、ユニット、デバイスの全部又は一部、又は図４もしくは図１６に示されるブロック図の機能ブロックの全部又は一部は、半導体装置、半導体集積回路（ＩＣ）、又はＬＳＩ（large scale integration）を含む一つ又は一つ以上の電子回路によって実行されてもよい。ＬＳＩ又はＩＣは、一つのチップに集積されてもよいし、複数のチップを組み合わせて構成されてもよい。例えば、記憶素子以外の機能ブロックは、一つのチップに集積されてもよい。ここでは、ＬＳＩやＩＣと呼んでいるが、集積の度合いによって呼び方が変わり、システムＬＳＩ、ＶＬＳＩ（very large scale integration）、若しくはＵＬＳＩ（ultra large scale integration）と呼ばれるかもしれない。ＬＳＩの製造後にプログラムされる、Field Programmable Gate Array（ＦＰＧＡ）、又はＬＳＩ内部の接合関係の再構成又はＬＳＩ内部の回路区画のセットアップができるreconfigurable logic deviceも同じ目的で使うことができる。
【０１９１】
さらに、ユニット、装置、又は装置の一部の、全部又は一部の機能又は操作は、ソフトウエア処理によって実行することが可能である。この場合、ソフトウエアは一つ又は一つ以上のＲＯＭ、光学ディスク、ハードディスクドライブ、などの非一時的記録媒体に記録され、ソフトウエアが、処理装置（processor）によって実行された場合に、ソフトウエアは、ソフトウエア内の特定の機能を、処理装置（processor）と周辺のデバイスに実行させる。システム又は装置は、ソフトウエアが記録されている一つ又は一つ以上の非一時的記録媒体、処理装置（processor）、及び必要とされるハードウエアデバイス、例えばインターフェース、を備えていても良い。
【産業上の利用可能性】
【０１９２】
本開示は、画像を変化させるためのコンピュータプログラムを簡単に生成することができるという効果を奏し、例えば、プログラミングの学習システムなどに適用することができる。
【符号の説明】
【０１９３】
１００、１００ａ    プログラム生成装置
１０１    インターフェース部
１０２    取得部
１０３    画像検索部
１０４    スクリプト選択部
１０５    重み算出部
１０７    表示制御部
１０８    候補提示部
２００    端末装置
２００ｄ    ディスプレイ
２０１    スクリプト生成画面
２０２    画像入力領域
２０３    スクリプト表示編集領域
２０４ａ〜２０４ｃ    画像選択ボタン
２０８    コマンドリストボタン
３００    通信ネットワーク
１０００    プログラム生成システム
Ｂ１    操作ボタン
Ｂ２    操作ボタン
ＤＢ    データベース
Ｒ    操作ボタン
Ｓ    操作ボタン
【図１】
2018165974.tif 000003
【図２】
2018165974.tif 000004
【図３】
2018165974.tif 000005
【図４】
2018165974.tif 000006
【図５】
2018165974.tif 000007
【図６】
2018165974.tif 000008
【図７】
2018165974.tif 000009
【図８】
2018165974.tif 000010
【図９】
2018165974.tif 000011
【図１０】
2018165974.tif 000012
【図１１】
2018165974.tif 000013
【図１２】
2018165974.tif 000014
【図１３】
2018165974.tif 000015
【図１４】
2018165974.tif 000016
【図１５】
2018165974.tif 000017
【図１６】
2018165974.tif 000018
【図１７】
2018165974.tif 000019
【図１８】
2018165974.tif 000020
【図１９】
2018165974.tif 000021
【図２０】
2018165974.tif 000022
【図２１】
2018165974.tif 000023
【図２２】
2018165974.tif 000024