1

同様の三角形のBW ビットマップがあります。各三角形が向いている方向を特定しようとしています。「面する」とは、すべての三角形で一定の方法で方向を記述することを意味します。たとえば、最長辺の中央値の方向です。

これまでのところ、三角形を個別に識別できましたが、各三角形の方向を見つけるための最良の方法はわかりません。

最初のアイデアとして、ハフ変換を使用して、個々の三角形の辺に線を当てはめることを考えました。3 つの辺を取得したら、それらの交点を計算して、3 つの頂点の座標を取得します。3 つの頂点から、最も長い辺の中央値を簡単に見つけることができます。

このアプローチに関する私の問題は、ハフ変換を使用したことがなく、交差を計算するために使用できる方法で辺を見つけて返す関数を書くのがどれほど難しいかわかりません。いくつかの記事にリンクするか、ハフ変換を使用して、交点の計算に使用できる表現の側面を見つける方法を簡単に説明してもらえますか?

私の他のアイデアは、ハフ変換によって側面を認識せずに、ビットマップ画像で直接回転不変モーメントを使用することです。

この解決策に関する私の問題は、モーメントを使用して方向を説明するときに、方向の「意味」が何であるかがわからないことです。不変モーメントを使用する場合、参照方向を定義するにはどうすればよいですか?

識別されたオブジェクトを含むサンプル画像: サンプル

単一のオブジェクト サンプル1

4

1 に答える 1

1

各三角形houghlinesの最長を見つけるために使用します。つまり、BW 入力には 1 つの三角形のエッジのみが含まれている必要があります(例: を使用)。これにより、三角形の最長辺の方程式が得られます。BW = edge(I,'canny')

三角形が二等辺三角形の場合、その中点を通る最長辺の法線が中央値であり、これで完了です。

そうでない場合は、3 つのエッジなどを見つける必要があると思います。

アップデート:

あなたのブロブを見て、私は試してみることをお勧めしますR = regionprops(BW,'Orientation');

于 2011-11-01T18:28:20.190 に答える