8

一連のポイント (頂点) として定義された (閉じた) ポリゴンのペアがあります。ポリゴンはそれぞれ、小さな川で区切られた土地の区画を表しているため、小川は 2 つのポリゴンの間に狭いギャップを形成します。

2 つのポリゴンを 1 つの接続されたポリゴンに結合することにより、ギャップを特定して削除するアルゴリズムを探しています。

次の図は、元のポリゴンが緑と赤で、結果のポリゴンが黄色で示されている例を示しています。

例

これまでのところ、次のことができました。

  • ポリゴン A の各エッジについて、ポリゴン B の最も近い頂点を見つけます。
  • ポリゴン A から特定の距離内にあるポリゴン B のすべての頂点を見つけます。

しかし、今何をする必要があるのか​​ よくわかりません。

4

5 に答える 5

1

モルフォロジー操作を試してみてください。具体的には、拡張を試してから、浸食(形態学的な「閉鎖」とも呼ばれます) を試すことができます。nピクセル ( nは川の幅よりも大きい) だけ膨張させると、形状が結合されます。その後の浸食により、フィギュアの残りの部分に加えられた損傷の多くが元に戻ります。完璧ではありません (2 つの形状を完全に組み合わせることができます、形状の残りの部分がいくらか柔らかくなります) が、全体的な操作の結果から、それを修正する方法を見つけられる可能性があります。

一般に、これらの形態学的操作は、ポリゴンではなくビットマップで行われます。ただし、ポリゴンの角で単純な操作を実行するとうまくいく場合があります。

于 2013-09-04T17:01:09.833 に答える
0

これは大まかな、スケーラブルなアプローチです。

  1. サイズが Z 行 Z 列のセルで空間をグリッドに量子化し、各セルにそのインデックス (i,j) という名前を付けます。
  2. ポリゴン P ごと、頂点 V ごとに、(P,V) をそれを含むセル (i,j) で識別します。
  3. 各セル (i,j) について、ポリゴンと頂点のペアのセット (P_k,V_k)、k = 1...K を考慮し、それで識別されます。P_a と P_b が同じポリゴンではなく、V_a と V_b がそのようなペアの中で最も近い場合にのみ、ポリゴン P_a と P_b の頂点 V_a と V_b をマージします。マージする頂点がなくなるまで、頂点のマージを繰り返します。マージされた頂点は、ソース頂点の位置の平均を取得します。
于 2013-09-04T18:40:17.490 に答える