- ベストアンサー
直線と線分の高速な交差判定アルゴリズム
- 直線と線分の交差判定について高速なアルゴリズムの開発に取り組んでいます。
- 現在使用している処理方法に時間がかかっており、他のアルゴリズムを探しています。
- しかし、直線と線分の交差判定に関する情報が限られており、問題解決に苦戦しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そんだけ大量の演算を高速にやりたいなら、OpenCLとかによるGPGPUの利用を考えてはいかがでしょう。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
ちなみにその「画像」はどのくらいの画素数なんでしょうか?
- kmee
- ベストアンサー率55% (1857/3366)
> どうにもこの部分の処理で時間がかかっている 本当にそうですか? 5回のかけ算と4回の足し算が「時間がかかる」だとすれば、プログラムの他の部分は「ほとんどなにもしていない」って位でないと。(例えば、printf使ってたら、その方が何倍(下手すれば何十、何百、何万倍)も時間かかります) 実行環境によっては確かに遅いケースもあります(CPUが遅く、浮動小数点演算専用回路が付いていないマイコン等) しかし、最近の普通のコンピュータなら、億単位の四則演算しても数秒もかかりません。 ○本当はどこで時間かかっているのか、確認しましょう ○他の部分のアルゴリズムの見直しましょう 例えば、n個の点から、直線を交差する組み合わせを探す、というものだったら 「全ての組み合わせを選ぶ→判定式を計算」 としたら 「9(1回あたりの計算) * n(n-1)/2(組合せの数)」 回計算することになりますが 「全点の aX+bY+c を計算→全組み合わせで 左の値を使って判定式を計算」 とすれば 「4(1点あたりの計算) * n (点の数) + 1(組み合わせ1つあたりの計算) * n(n-1)/2」 と大幅に削減できます。(もっとも、点の数が万単位でもなければ実感できないですが)
補足
すみません。情報をだいぶはしょっていたので誤解を与えたかもしれません。 この直線の交差判定はかなり繰り返し計算するのでちょっとでも処理を軽くしたいという旨の相談です。 だいたい700~900個の点(画像中にある物体の輪郭を抽出した点)のうち隣接する点同士と直線の成分で交差判定をします。 それを、256*256回のループに加えてカメラ台数分の6回繰り返す処理なので 270000000回位です。億単位で繰り返し処理をします。 確かに点の位置には関係性があるのでその辺のアルゴリズムも考えてみます。
お礼
やっぱGPUにするっきゃないっすかね。