0

http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htmおよびhttp://wwwmath.tau.ac.ilで説明されているものの組み合わせを使用して、エッジ検出にガウスのラプラシアンを使用しています。 /~turkel/notes/Maini.pdf

簡単に言えば、私はこの方程式を使用しています:

for(int i = -(kernelSize/2); i<=(kernelSize/2); i++)
    {

        for(int j = -(kernelSize/2); j<=(kernelSize/2); j++)
        {

            double L_xy = -1/(Math.PI * Math.pow(sigma,4))*(1 - ((Math.pow(i,2) + Math.pow(j,2))/(2*Math.pow(sigma,2))))*Math.exp(-((Math.pow(i,2) + Math.pow(j,2))/(2*Math.pow(sigma,2))));
            L_xy*=426.3;
        }

    }

L_xy 変数を使用して、Log カーネルを構築します。

問題は、画像サイズが大きい場合、同じカーネルを適用するとフィルターがノイズに対してより敏感になることです。エッジの鋭さも同じではありません。

ここで例を挙げましょう...

次の画像があるとします。元の画像

この画像の 480 × 264 ピクセル バージョンで sigma = 0.9 の値と 5 x 5 マトリックスのカーネル サイズを使用すると、次の出力が得られます。

小さい画像

ただし、この画像の 1920 × 1080 ピクセル バージョンで同じ値を使用すると (シグマ値とカーネル サイズが同じ)、次のようになります。ここに画像の説明を入力

[両方の画像は、さらに大きな画像の縮小版です。縮小はフォト エディターを使用して行われたため、画像に含まれるデータは完全に似ているわけではありません。しかし、少なくとも、それらは非常に近くにあるはずです。]

大きい画像が小さい画像の約 4 倍であることを考えると... シグマを 4 倍 (シグマ * = 4) にスケーリングしてみましたが、出力は... ご想像のとおり、黒いキャンバスでした。

入力信号が拡大または縮小されている場合でも、入力信号から同じ機能を検出する LoG エッジ検出器を実装する方法を理解するのを手伝ってください (スケーリング係数が与えられます)。

4

1 に答える 1

2

画像を見ると、24 ビット RGB で作業していると思います。シグマを大きくすると、それに応じてフィルターの応答が弱くなります。したがって、より大きなカーネルを使用した大きな画像で得られる値は、切り捨てられるか、またはディスプレイが区別できないほどゼロに近い値になります。

異なるスケール間の微分を比較可能にするには、スケール空間微分演算子を使用する必要があります (Lindeberg et al.)。

スケール空間微分

基本的に、ガウス カーネル関数 ( G_{\sigma}) に微分演算子が適用され、結果 (または代わりに畳み込みカーネル。いずれにしても単なるスカラー乗数) が でスケーリングされ\sigma^{\gamma}ます。これLが入力画像でLoG、ガウス画像のラプラシアンです。

微分の次数が 2 の場合、\gamma通常は 2 に設定されます。

次に、両方の画像で非常に類似した等級が得られるはずです。

ソース:

[1] リンデバーグ:「コンピューター ビジョンにおけるスケール空間理論」1993

[2] フランジら。「マルチスケール血管拡張フィルタリング」1998

于 2013-05-15T14:34:11.813 に答える