Question

Étant donné une « forme » dessiné par l'utilisateur, je voudrais « normaliser » si elles ont toutes la même taille et de l'orientation. Ce que nous avons est un ensemble de points. Je peux la taille approximative en utilisant la boîte de sélection ou d'un cercle, mais l'orientation est un peu plus délicat.

La bonne façon de le faire, je pense, est de calculer le majoraxis de son délimitant ellipse. Pour ce faire, vous devez calculer le du vecteur propre covariance matrice . PEINE donc probablement trop compliqué pour mes besoins, puisque je suis à la recherche d'une estimation assez bonne. Choisir min, max et 20 points aléatoires pourrait être une entrée. Est-il un moyen facile de rapprocher cela?

Modifier : J'ai trouvé méthode puissance itérativement approximative vecteur propre. Wikipedia article . Jusqu'à présent, je suis goût réponse de David .

Était-ce utile?

La solution

Vous souhaitez calculera les vecteurs propres d'une matrice 2x2, ce qui peut être fait avec quelques formules simples, il est donc pas si compliqué que ça. En pseudocode:

// 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

Vous pouvez même le faire en sommant sur seulement quelques-uns des points pour obtenir une estimation, si vous vous attendez que votre sous-ensemble choisi de points serait représentatif de l'ensemble.

Modifier :. Je pense que x et y doivent être traduits à zéro moyenne, à savoir soustraire signifie de tout x, y premier (eed3si9n)

Autres conseils

Voici une pensée ... Et si vous avez effectué une régression linéaire sur les points et utilisé la pente de la ligne qui en résulte? Sinon tous les points, au moins un échantillon d'entre eux.

La valeur r ^ 2 serait également vous donner des informations sur la forme générale. Le plus proche de 0, plus circulaire / uniforme est la forme (cercle / carré). Le plus proche de 1, plus la forme étirée est (ovale / rectangle).

La solution ultime à ce problème est en cours d'exécution PCA
Je voudrais pouvoir trouver une jolie petite mise en œuvre pour vous faire référence à ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top