私はブール値を持つ2D行列を持っています。これは頻繁に更新されます。私は、マトリックス内の2Dインデックス{x、y}を選択し、すべての要素を通過することなくテーブル内の "真"である最も近い要素を探したい(マトリックスが大量です)。例えば2Dブール行列で最も近い "真の"要素を見つけるか?
、Iは行列がある場合:
0000100
0100000
0000100
0100001
およびIは{x1, y1}
ような座標を選択し、{4,3}、Iは、最も近い「真」値の位置を、返された場合は、この中のどのcaseは{5,3}です。要素間の距離は、標準的なピタゴラス式:
distance = sqrt(distX * distX + distY * distY)
(distX = x1 - x
およびdistY = y1 - y
)を使用して測定されます。
私は行列のすべての要素を調べ、 "真の"値のリストを保持し、最短の距離結果を持つものを選択することができますが、それは非常に非効率的です。検索時間を短縮するためにどのようなアルゴリズムを使用できますか?
詳細:マトリクスサイズは1920x1080で、フレームごとに約25のクエリが行われます。マトリックス全体がフレームごとに更新されます。私は妥当なフレームレートを維持しようとしています、7fps以上で十分です。
多くのクエリで行列定数が使用されていますか? – MBo
いいえ、常に更新されています。 –
@ MathuSumMut行列の最大サイズとクエリの総数はいくらですか? –