1

Canny Edge 検出アルゴリズムを実装しようとしていますが、途中でいくつかの問題に遭遇しました。Canny エッジ検出のすべてのステップを理解していると思いますが、OpenCv 実装によって得られる結果と比較すると、結果は大きく異なります。

アルゴリズムが生成する必要があるように、1px 幅のエッジを取得できないようです。この非常に単純なバイナリ イメージの手順と結果は次のとおりです。

処理中のバイナリ イメージ:

処理中のバイナリ イメージ

ソーベル演算子を使用して計算された勾配の大きさ:

勾配の大きさ

エッジの方向:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 <br>
1 / - - - - - - - - - - - \ 1   <br>
1 | / - - - - - - - - - \ | 1  <br>
1 | | / - - - - - - - \ | | 1  <br>
1 | | | / - - - - - \ | | | 1  <br>
1 | | | | | | | | | | | | | 1  <br>
1 | | | | | | | | | | | | | 1  <br>
1 | | | | | | | | | | | | | 1 <br>
1 | | | | | | | | | | | | | 1 <br>
1 | | | | | | | | | | | | | 1 <br>
1 | | | \ - - - - - / | | | 1 <br>
1 | | \ - - - - - - - / | | 1 <br>
1 | \ - - - - - - - - - / | 1 <br>
1 \ - - - - - - - - - - - / 1 <br>
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

非最大抑制イメージ:

0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0 255   0   0   0   0   0   0   0   0   0 255   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0 255   0   0   0   0   0 255   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0 255   0   0   0   0   0 255   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0 255   0   0   0   0   0   0   0   0   0 255   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0<br>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

このステップでヒステリシスしきい値処理を実行すると、非常にエッジの効いた結果が得られます。明らかな問題は勾配の大きさの値ですが、それを解決する方法がわかりません。より経験豊富で知識のある人が、親切にも私を正しい方向に向けてくれるなら、私は非常に感謝しています.

4

1 に答える 1

2

Sobel 演算子はあなたの場合には適していないと思います。実際には、勾配の大きさはすでにエッジを大まかにスケッチしているはずです。後のステップでは、エッジ抽出を調整します。細線化プロセスをどのように実装したかわかりません。補間を使用して、勾配のノルムが極大値であるピクセルを見つけました。Sobel 演算子を適用すると、非常に厚いエッジは得られませんでしたが、いくつかの点でエッジがあまり連続していません。

0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0   270   270   270   270   270   270   270   270     0     0     0     0
 0     0     0   270     0     0     0     0     0     0   270   270     0     0     0     0
 0     0   270     0     0     0     0     0     0     0     0     0     0     0   270     0
 0     0   270     0     0   270   270   270   270     0     0   270     0     0   270     0
 0     0   270     0     0   270     0     0     0     0     0   270     0     0   270     0
 0     0   270     0     0   270     0     0     0     0     0   270     0     0   270     0
 0     0   270     0     0   270     0     0     0     0     0   270     0     0   270     0
 0     0   270     0     0     0     0     0     0     0     0   270     0     0   270     0
 0     0   270   270     0     0     0     0     0     0     0   270     0     0   270     0
 0     0   270   270     0   270   270   270   270   270   270   270     0     0   270     0
 0     0     0     0     0     0     0     0     0     0     0     0     0   270   270     0
 0     0     0     0     0     0     0     0     0     0     0     0   270   270     0     0
 0     0     0     0   270   270   270   270   270   270   270   270   270     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

ガウス関数の標準偏差を使用して元の画像を畳み込み、グラデーションを取得すると、最終的に明確な細いエッジを取得できます。

0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     1   494   494   494   494   494   494   494   494   494   494     1     1
 0   494     1     1     1     1     1     1     1     1     1     1   494     1
 0   494     1     1   494   494   494   494   494   494     1     1   494     1
 0   494     1   494   494     1     1     1     1   494   494     1   494     1
 0   494     1   494     1     1     1     1     1     1   494     1   494     1
 0   494     1   494     1     1     1     1     1     1   494     1   494     1
 0   494     1   494     1     1     1     1     1     1   494     1   494     1
 0   494     1   494     1     1     1     1     1     1   494     1   494     1
 0   494     1   494   494     1     1     1     1   494   494     1   494     1
 0   494     1     1   494   494   494   494   494   494     1     1   494     1
 0   494     1     1     1     1     1     1     1     1     1     1   494     1
 0     1   494   494   494   494   494   494   494   494   494   494     1     1
 0     1     1     1     1     1     1     1     1     1     1     1     1     1
于 2013-11-22T03:55:25.793 に答える