C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 25 を表示中)
■11095 / )  Re[1]: VB.NET)四次元配列を用いての2点間距離計測
□投稿者/ れい (266回)-(2007/12/06(Thu) 21:21:15)
No11081 (Flowen さん) に返信
> VB.NET2003を用いて、ダーツなどに使われる的の円の検出を、ハフ変換で行っています。
> 一般的なハフ変換は要素を抽出して・・・という方法がありますが、今回は2点間の距離を求める方法で行います。
> 理論としては、ある画素p1と、別の画素p2との距離を計測し、距離が等しい点の数を集計して、
> もっとも点の数が多かった距離と点をそれぞれ求める円の半径、中心点とする方法を用いています。
>...
> 四次元の配列領域がでかすぎるのかと思い、条件わけをするなどして減らしたりしましたがうまくいきません。
> エラーを出さずに処理を行う方法、または四次元に代わる方法をご教授いただけないでしょうか?

距離と位置の相関関数を求める手法ですね。
他の方も言ってますが、距離をすべて配列に保存するのは容量が圧倒的に足りません。
速度的にも無駄ですし、情報量的にも無駄ですので、その都度求めるべきです。

ただでさえ、ハフ変換はメモリを大量に消費します。
今回は半径と座標x,yの3つのパラメータがありますので、
何も考えずに変換をすると
x*y*sqrt(x^2+y^2)〜O(n^3)程度の領域を強度保存用に確保しなければいけません。
オーダーが一つ違うのは大変な違いです。

ですので、パラメータ数の多い(3つ以上)ハフ変換を使う場合、
メモリ消費を緩和するため、
部分的に変換したり、漸近的手法を用いたりといった手法を使います。

どの手法を用いるかはメモリ消費量の見積もりがなければ判断できません。
もう一度見積もりからはじめるべきだと思います。
返信 編集キー/


管理者用

- Child Tree -