与えられた画像からポイントを抽出したいと思います。画像は下に示されています。 画像からポイントを取得
ポイントは緑の上点と赤点です。私は画素ごとの比較を試みたが、それは遅すぎる。私はより良いアルゴリズムが必要です。あなたの提案は何ですか?
与えられた画像からポイントを抽出したいと思います。画像は下に示されています。 画像からポイントを取得
ポイントは緑の上点と赤点です。私は画素ごとの比較を試みたが、それは遅すぎる。私はより良いアルゴリズムが必要です。あなたの提案は何ですか?
ポイントが常に中心からの既知の半径にある場合は、円周上にあるポイントをチェックすることができます。
ピクセル単位での比較は、勝てないほどです。 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つの点が常に画像の中心から同じ距離にある場合は、その半径の円周に沿っているピクセルを検索できます。