5

ユーザーが描いた「形状」が与えられた場合、それを「正規化」して、すべてのサイズと向きが同じになるようにしたいと思います。私たちが持っているのは一連のポイントです。バウンディング ボックスまたは円を使用してサイズを概算できますが、方向はもう少し注意が必要です。

それを行う正しい方法は、その境界楕円の長軸を計算することだと思います。そのためには、共分散行列の固有ベクトルを計算する必要があります。十分な見積もりを探しているので、そうするのは私のニーズには複雑すぎるでしょう。最小、最大、および 20 のランダム ポイントを選択することは、いくつかのスターターになる可能性があります。これを近似する簡単な方法はありますか?

編集:固有ベクトルを反復的に近似するPower メソッドを見つけました。ウィキペディアの記事。これまでのところ、私はDavid's answerが気に入っています。

4

3 に答える 3

4

2x2 行列の固有ベクトルを計算することになりますが、これはいくつかの簡単な式で実行できるため、それほど複雑ではありません。擬似コード:

// sums are over all points
b = -(sum(x * x) - sum(y * y)) / (2 * sum(x * y))
evec1_x = b + sqrt(b ** 2 + 1)
evec1_y = 1
evec2_x = b - sqrt(b ** 2 + 1)
evec2_y = 1

選択したポイントのサブセットが完全なセットを表すと予想される場合は、一部のポイントのみを合計して推定値を取得することで、これを行うこともできます。

編集: x と y はゼロ平均に変換する必要があると思います。つまり、最初にすべての x、y から平均を減算します(eed3si9n)

于 2009-02-18T07:16:27.730 に答える
3

ここに考えがあります...ポイントに対して線形回帰を実行し、結果の線の傾きを使用するとどうなるでしょうか? すべてのポイントではないにしても、少なくともそれらのサンプル。

r^2 値は、一般的な形状に関する情報も提供します。0 に近いほど、円形/均一な形状 (円/正方形) になります。1 に近いほど、形状が引き伸ばされます (楕円/長方形)。

于 2009-02-18T06:53:08.893 に答える