0

2D 線分があります。私の目標は、さまざまな閉じたポリゴンを作成することです。しかし、ここでは、互いに閉じている平行な線分がほとんどない場合に、最も外側の線分を選択したいと考えています。さまざまな線の組み合わせで、さまざまな閉じたポリゴンを作成できます。最も外側の線で作成するポリゴンが必要なため、最も外側の線を取得する方法を考え、苦労していました。(多角形は、隣接する線分が交差することによって構築されます。) すべての線分を含む大きな境界ボックスを取得し、重心を取得してから、各線分への垂直距離を見つけることを考えていました。このプロセスで、互いに近い (つまり、平行線に近い) 向きの近くの線分を見つけました。したがって、これらの近くの平行線から、最も外側の平行線が必要です。(それは赤いものです)。しかし、重心を使って距離を比較すると、より多くの凹面と凸面のターンが存在する場合、最長距離 (近くの平行線の中で) の最長距離は、最も外側の線 (赤) が最長距離で得られない場合があるため、正確な最も外側の線を与えません。私が持っているのは; 各線分の終点座標。(つまりベクターデータ)

そのため、近くの平行線から最も外側の線分を取得する良い方法を探しています。あなたが理解するために、私が持っているサンプルデータを添付しました。最も外側の線分は赤色で表示されます。最後に、この赤い線がポリゴンの境界を示しています。したがって、対応する近くの平行な黒い線から赤い線を取り出したいと思います。

注: 線分が異なる方向を向いています。X & Y 軸だけではありません。また、近くの線は、隣接する線と常に 90 度または 180 度の角度を成すとは限りません。

私に方法を提案してください。前もって感謝します

たとえば、A、B と C、D が近くの平行線分である場合。最も外側の線は B と C のはずですが、重心 (O) からの距離を比較すると、C を最も外側として取得できますが、O から B までの距離は O から A までの距離よりも小さいため、B を取得できません。このタイプのスポットでは、この方法は失敗します。だから、代替案を見て..

ここに画像の説明を入力

4

1 に答える 1

1

線を見つける一般的な方法は、ハフ変換を使用することです。

http://en.wikipedia.org/wiki/Hough_transform

ただし、提供するサンプルデータには、軸に平行な線があります。それがすべてのデータの性質であるかどうかはわかりませんが、そうである場合、ハフ変換は基本的に、x軸に平行な線の行ごとに強度を合計し、平行な線の列ごとに合計することになります。 y軸に。

最終的に2つの1D配列が作成され、1つは行の合計、もう1つは列の合計になります。線は黒で前景は白なので、これらの配列の極小値は各軸に沿った線の位置を表します。外側の線だけが必要なので、すべての列/行を合計する必要はありません。画像の端から始めて、ローカルの最小値に達するまで合計を計算するだけです。軸上に線を配置したら、画像内の軸のカットをトラバースして、線の端点を見つけることができます。

于 2013-02-15T12:30:10.790 に答える