8

独自のフォーカス スタッキング ソフトウェアを作成したいのですが、スタック内の各画像の焦点の合った部分を抽出するアルゴリズムの適切な説明を見つけることができませんでした。

フォーカス スタッキングに慣れていない人のために、ウィキペディアのこの記事でアイデアをうまく​​説明しています。

誰かがアルゴリズムを見つけるための正しい方向に私を向けることができますか? いくつかのキーワードで検索するだけでも役に立ちます。

4

1 に答える 1

17

これは1年以上前のものだと思いますが、興味のある人のために...

私はマシンビジョンでかなりの経験があり、これが私がそれを行う方法です:

  1. すべての画像をメモリにロードする
  2. チャンネルの 1 つ (おそらく緑) の各画像に対してガウスぼかしを実行します。

    最も単純なガウス カーネルは次のとおりです。

    1 2 1

    2 4 2

    1 2 1

    アイデアは、すべてのピクセルをループして、すぐに隣接するピクセルを調べることです。ループしているピクセルは 4 で乗算され、隣接するピクセルは上記のカーネルに対応する値で乗算されます。

    次の式を使用して、より大きなガウス カーネルを作成できます。

    exp(-(((x*x)/2/c/c+(y*y)/2/c/c)))

    ここで、c はぼかしの強さです

  3. 各ガウスぼかし画像でラプラシアン エッジ検出カーネルを実行しますが、しきい値は適用しません

    最も単純なラプラシアン演算子は次のとおりです。

    -1 -1 -1

    -1 8 -1

    -1 -1 -1

    Gaussian と同じように、カーネルを画像全体にスライドさせて結果を生成します。

    より大きなカーネルを計算する方程式は次のとおりです。

    (-1/pi/c/c/c/c)*(1-(x*x+y*y)/2/c/c)*exp(-(x*x+y*y)/2/ c/c)

  4. ガウス結果のラプラシアンの絶対値を取ります。これにより、カーネルのサイズと強度に対するエッジの強度が定量化されます。

  5. ここで空白の画像を作成し、各ピクセルをループして、Log 内の最も強いエッジ (画像スタック内の最大値) を見つけ、対応する画像からそのピクセルの RGB 値を取得します。

私が作成した MATLAB の例を次に示します。

http://www.magiclantern.fm/forum/index.php?topic=11886.0

何に使うかは自由です。Outsharp.bmp というファイルが作成されます。これが目的です。

出力画像を改善するには: - 画像間の明度レベルの違いを補正する (つまり、ヒストグラム マッチングまたは単純なレベル調整) - 画像ノイズを除去するカスタム アルゴリズムを作成する - 生成後にスタックを手動で調整する - ガウスぼかしを適用する(必ず結果を 16 で割ってください) フォーカス マップ上で、個々の画像がより適切に結合されるようにします。

幸運を!

于 2014-05-16T04:56:04.513 に答える