開始方法に関する一般的なハイレベルのアドバイスを次に示します。
基本的に、あなたがしているのは最適化問題です。これらのアルゴリズムは多くの問題に使用されており、これを行うためのいくつかのよく知られた方法があります。彼らはこれに要約します
- 結果がどれだけ良いかを1つの数値で示すスコアリング関数を作成します。数値が大きいほど良いです。
- 入力といくつかのパラメーターを受け取り、スコアリング可能な出力を生成する関数を作成します
- これは重要です。スコアリング関数は、#2のパラメーターに基づいてある程度連続している必要があります。2つのパラメーターがあり、それを3D(param1、param2、score)でプロットすると、大きな丘のあるでこぼこの表面のように見えます。
- 今のあなたの仕事は、表面の最大値を見つけることです。3つ以上のパラメータがある場合があります(その場合はNDサーフェスがあります)が、考え方は同じです
山登り法、遺伝的アルゴリズム、または最適化問題を調べます。コードが記載された優れたPythonの本は、TobySegaranによる「ProgrammingCollectiveIntelligence」です。
一般的に、山登り法は次のようなものです。
- パラメータをよく推測してください
- 出力とスコアを作成します
- 1つのパラメータを少し変更します
- 出力をスコアリングします
- この方向に進み続ける方が良い場合は、方向を変えてください。
- あなたが立ち往生している場合-表面のどこかに行き、そこで試してみてください。
- 極大値を見つけたが、それだけでは不十分な場合は、別の場所に移動して試してください
実際のアルゴリズムを調べてください。ただし、これよりも多少複雑です。
研究の多くは、優れたスコアリング関数と、どのパラメーターが機能し、それらをどのように使用するかを知るための優れた方法を考え出すことに要約されます。
この一般的なアウトラインを使用して、出力生成関数として明るさ/コントラストを試してください(明るさとコントラストは入力です)。スコアリングには、一致する2枚の写真を比較する方法が必要になります。まず、簡単なものを選択します(おそらく、チェックする領域をハードコーディングします)。
それがうまくいくと、これを行う方法についてより多くの洞察が得られ、アイデアのために論文に戻ることができます。