3

キャニーエッジ検出後に取得した次の画像があります。 キャニーエッジ検出結果

ハフ変換が適用された後、次の結果が得られます。

ここに画像の説明を入力してください

これは非常に良い結果ですが、最初の画像のオブジェクトが三角形に似ていることを表示できるように、各バンドルから1行だけ必要です。私の最初の決定は、バンドルごとにある種の「平均」線を計算することでした。各線は、角度と半径によって定義されます。各バンドルの「平均」線を見つける私の方法は、次の式を使用して角度の平均を計算することです。

avgTheta = arctan(sum of sines of all thetas/sum of cosines of all theta)

最も簡単な方法で平均半径を計算します。

avgRadius = sum of all raduises / number of raduises

しかし、私が得る線はそれらの束の中心にありません。

誰かがより良い解決策についてアドバイスできますか?

私はハフ変換のこの実装を使用しています:ハフ変換

各バンドルの1行をランダムに取得するオプションは常にありますが、私はそれが好きではありません。

私の質問が明確でない場合は、問題をよりよく説明するために教えてください。

前もって感謝します。

4

1 に答える 1

1

あなたはこれを試すことができます:

コサイン、サイン、またはアークタン関数を使用せずに平均角度を取ります。ラップを処理することを確認してください。リンクした実装に基づくと、pi(180度)でラップしているように見えます。あなたの画像では、「島(?)」の右側にあるほぼ垂直な線の束が、ラップの両側にある線の良い例になります。

また、キャニーエッジ検出画像から含まれるポイントの数に基づいて線に重みを付け、この重みを平均計算に使用すると、おそらく最良の結果が得られます。たぶん、これは同じプロパティを持つ複数の行を持っていることによってすでに行われています、私はあなたの画像やリンクされたコードからはわかりませんでした。

于 2012-02-01T08:00:25.427 に答える