6

具体的には、ゲーム「アステロイド」のスクリーンショットから関連するすべての線分を抽出しようとしています。エッジ検出のさまざまな方法を調べましたが、次の 2 つの理由から、私の問題に適合するものはないようです。

  1. それらは滑らかな輪郭を検出しますが、直線セグメントの検出だけが必要で、特定の長さの範囲内のもののみが必要です。さて、これらの制約により、私のタスクは一般的なケースよりもかなり簡単になるはずですが、本格的なエッジ検出器を使用して曲線の結果をクリアしたくはありません。速度は私の目的にとって最も重要です。

  2. エッジがハイライトされている変更された画像を出力しますが、検出された線分の終点を表す一連のピクセル座標が必要です。あるいは、各セグメントに含まれるすべてのピクセルのリストも機能します。

考えられる解決策の 1 つにhough transformが含まれる可能性があると考えていますが、これを使用して線分の実際の位置 (つまり、ピクセル空間の端点) を取得する方法がわかりません。たとえ私がそうしたとしても、それが物事を行う最も簡単な方法または最も効率的な方法であるかどうかはわかりません。したがって、質問のタイトルの一般的な言い回しです。

最後に、サンプル画像を次に示します。

ここに画像の説明を入力

主要な線はすべて長さと密度が類似しており、全体的な画像のコントラストが非常に高いことに注意してください。私の問題の解決策がこれらの機能を利用することを願っています。なぜなら、やはり効率が最も重要だからです。

1 つの注意点: このコンテキストのほとんどの線分は多角形の一部ですが、この事実に依存するソリューションは望んでいません

4

2 に答える 2

5

LineSegmentDetectorアルゴリズムをご覧ください。

これが彼らがすることです:

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

ページの下部に印象的なビデオがあります。

箱から出して動作するC実装(C ++コンパイラで動作)があります。ファイルは1つまたは2つだけで、追加の依存関係はありません

ただし、このアルゴリズムはGNUAllegroGPLライセンスに基づいていることに注意してください。

于 2011-08-10T09:33:39.713 に答える
1

また、EDlines http://ceng.anadolu.edu.tr/cv/EDLines/もチェックしてください。

非常に高速で、非常に有用な出力を提供します

于 2013-11-25T18:27:18.830 に答える