0

与えられた画像からポイントを抽出したい。画像を以下に示します。 ここに画像の説明を入力してください

私が欲しいポイントは、緑の上のポイントと赤いポイントです。ピクセルごとの比較を試しましたが、遅すぎます。より良いアルゴリズムが必要です。あなたの提案は何ですか?

4

2 に答える 2

3

ポイントが常に中心から既知の半径にある場合は、円周上にあるポイントを確認するだけです。

于 2011-02-02T22:38:34.480 に答える
1

ピクセルごとの比較に勝るものはありません。分割統治法を使用すると、緑色の線での検索速度を大幅に向上させることができます。

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

ただし、赤い点を見つけるにはO(x*y)コストがかかりますが、単一の赤いピクセルを検索するコストを改善する唯一の方法は、画像をサブサンプリングし ( O(x*y))、次に画像全体 (現在O(sqrt(x*y))) を検索することです。赤いピクセル。

私はパーのアイデアが好きですが、2 つの点が画像の中心から常に同じ距離にある場合は、その半径の円周に沿ったピクセルを検索するだけで済みます!

于 2011-02-02T22:54:28.323 に答える