Frage

Bei einer „Form“ durch den Benutzer gezogen, würde Ich mag es zu „normalisieren“, so dass sie alle ähnliche Größe und Ausrichtung haben. Was wir haben, ist eine Reihe von Punkten. Ich kann die Größe mit Begrenzungsrahmen oder Kreis nähern, aber die Orientierung ist ein wenig komplizierter.

Der richtige Weg, es zu tun, denke ich, ist das majoraxis sein berechnen begrenzende Ellipse . Dazu müssen Sie die Eigenvektor der Kovarianzmatrix . Dadurch wird zu kompliziert sein, so wahrscheinlich Weg für mein Bedürfnis, da ich für einige gut genug Schätzung suchen. Picking min, max und 20 zufällige Punkte könnten einige Starter sein. Gibt es eine einfache Möglichkeit, dies zu nähern?

Bearbeiten : Ich fand Strom Methode iterativ annähernde Eigenvektor. Wikipedia-Artikel . Bisher ist ich mag David Antwort .

War es hilfreich?

Lösung

Sie würden die Eigenvektoren einer 2x2-Matrix werden die Berechnung, die mit ein paar einfachen Formeln durchgeführt werden kann, so ist es nicht so kompliziert. In Pseudo-Code:

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

Sie könnten auch dies tun, indem nur die Punkte einige Summieren über eine Schätzung zu erhalten, wenn Sie erwarten, dass Ihre gewählte Teilmenge von Punkten repräsentativ für den vollen Satz wäre.

Bearbeiten . Ich denke, x und y auf Null-Mittelwert übersetzt werden, das heißt subtrahieren bedeuten von allen x, y ersten (eed3si9n)

Andere Tipps

Hier ist ein Gedanke ... Was passiert, wenn Sie eine lineare Regression auf die Punkte durchgeführt und verwendet, um die Steigung der resultierenden Linie? Wenn nicht alle Punkte, mindestens eine Probe von ihnen.

r ^ 2 Wert würden Sie auch Informationen über die allgemeine Form geben. Je näher an 0 ist, desto mehr kreisförmige / uniform ist die Form (Kreis / Quadrat). Je näher an 1 ist, desto mehr ist die Form (oval / Rechteck) ausgestreckt.

Die ultimative Lösung für dieses Problem läuft PCA
Ich wünschte, ich könnte eine nette kleine Implementierung finden Sie zu verweisen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top