2011-02-02 12 views
0

与えられた画像からポイントを抽出したいと思います。画像は下に示されています。 enter image description here画像からポイントを取得

ポイントは緑の上点と赤点です。私は画素ごとの比較を試みたが、それは遅すぎる。私はより良いアルゴリズムが必要です。あなたの提案は何ですか?

答えて

3

ポイントが常に中心からの既知の半径にある場合は、円周上にあるポイントをチェックすることができます。

1

ピクセル単位での比較は、勝てないほどです。 Divide-and-Conquerメソッドを使用すると、緑色の線の検索速度を大幅に向上させることができます。

画像の幅がxで、高さがyの場合は、x={0...x},y={y/4,3*y/4}にあるすべてのピクセルを緑色のピクセルで検索します。見つからない場合は、x={x/4,3*x/4},y={0...y}に沿ってすべてのピクセルを検索します。座標がの緑色のピクセルを見つけるとすぐに、画像の中心から離れたピクセルの2ピクセル近傍を検索します(つまり、pが右上にある場合は{px,py+1},{px+1,py}pが左下にある場合は{px,py-1},{px-1,py})。 、{px,py+1},{px-1,py}p場合は、左上にある、または{px,py-1},{px+1,py}p場合は右下の象限にある。あなたが見つける最初の緑の隣人であることをpを更新します。pはもう緑の隣人を持っていなくなるまで繰り返します。最悪の場合、このアルゴリズムは~O(2*(x+y)+(1/2)*max(x,y)) ~= O(2.5*max(x,y)) ~= O(x)あり、その{x,y}ペアの色の値を確認するだけであれば、O(x*y)よりも優れています。

赤いドットを見つけることは、O(x*y)よりも高価ではありません.1つの赤いピクセルを検索するコストを改善する唯一の方法は、画像をサブサンプリングして(今度は画像全体を検索することですO(sqrt(x*y)))。

私はパーのアイデアが気に入っていますが、2つの点が常に画像の中心から同じ距離にある場合は、その半径の円周に沿っているピクセルを検索できます。

関連する問題