Die Antwort hängt vom Kontext ab : Wenn Sie nur eine kleine (begrenzte) Anzahl von Segmenten untersuchen, können Sie sich möglicherweise eine rechenintensive Lösung leisten. Es ist jedoch wahrscheinlich, dass Sie diese Berechnung in eine Art Suche nach guten Beschriftungspunkten einbeziehen möchten. In diesem Fall ist es von großem Vorteil, eine Lösung zu haben, die entweder rechnerisch schnell ist oder eine schnelle Aktualisierung einer Lösung ermöglicht, wenn das Kandidatenliniensegment geringfügig variiert wird.
Zum Beispiel : Angenommen , Sie eine systematische Suche durchzuführen beabsichtigtüber eine gesamte verbundene Komponente einer Kontur, dargestellt als eine Folge von Punkten P (0), P (1), ..., P (n). Dies würde durch Initialisieren eines Zeigers (Index in der Sequenz) s = 0 ("s" für "Start") und eines anderen Zeigers f (für "Ende") erfolgen, um der kleinste Index zu sein, für den Abstand (P (f), P (s))> = 100, und dann s so lange vorrücken, wie die Entfernung (P (f), P (s + 1))> = 100. Dies erzeugt eine Kandidatenpolylinie (P (s), P (s +) 1) ..., P (f-1), P (f)) zur Bewertung. Nachdem Sie die "Eignung" zur Unterstützung eines Labels bewertet haben, erhöhen Sie s um 1 (s = s + 1) und erhöhen f auf (sagen wir) f 'und s auf s', bis erneut eine Kandidatenpolylinie das Minimum überschreitet Es wird eine Spanne von 100 erzeugt, dargestellt als (P (s '), ... P (f), P (f + 1), ..., P (f')). Dabei werden die Eckpunkte P (s) ... P (s ' Es ist sehr wünschenswert, dass die Fitness schnell aktualisiert werden kann, wenn nur die abgelegten und hinzugefügten Eckpunkte bekannt sind. (Dieser Scanvorgang würde fortgesetzt, bis s = n; wie üblich muss f dabei erlaubt sein, von n zurück auf 0 zu "wickeln".)
Diese Überlegung schließt viele mögliche Fitnessmaße ( Sinuosität , Tortuosität usw.) aus, die ansonsten attraktiv sein könnten. Dies führt dazu, dass wir L2- basierte Kennzahlen bevorzugen , da diese normalerweise schnell aktualisiert werden können, wenn sich die zugrunde liegenden Daten geringfügig ändern. Eine Analogie zur Hauptkomponentenanalyse legt nahe, dass wir das folgende Maß haben (wobei klein besser ist, wie gewünscht): Verwenden Sie den kleineren der beiden Eigenwerte der Kovarianzmatrixder Punktkoordinaten. Geometrisch ist dies ein Maß für die "typische" Abweichung von Seite zu Seite der Eckpunkte innerhalb des Kandidatenabschnitts der Polylinie. (Eine Interpretation ist, dass seine Quadratwurzel die kleinere Halbachse der Ellipse ist, die die zweiten Trägheitsmomente der Eckpunkte der Polylinie darstellt.) Sie ist nur für Sätze kollinearer Eckpunkte gleich Null. Andernfalls wird Null überschritten. Es misst eine durchschnittliche Abweichung von Seite zu Seite relativ zur 100-Pixel-Grundlinie, die durch den Beginn und das Ende einer Polylinie erzeugt wird, und hat dadurch eine einfache Interpretation.
Da die Kovarianzmatrix nur 2 mal 2 ist, werden die Eigenwerte schnell durch Lösen einer einzelnen quadratischen Gleichung gefunden. Darüber hinaus ist die Kovarianzmatrix eine Summe der Beiträge von jedem der Eckpunkte in einer Polylinie. Daher wird es schnell aktualisiert, wenn Punkte entfernt oder hinzugefügt werden, was zu einem O (n) -Algorithmus für eine n-Punkt-Kontur führt: Dies lässt sich gut auf die in der Anwendung vorgesehenen sehr detaillierten Konturen skalieren.
Hier ist ein Beispiel für das Ergebnis dieses Algorithmus. Die schwarzen Punkte sind Eckpunkte einer Kontur. Die durchgezogene rote Linie ist das beste mögliche Polyliniensegment mit einer End-to-End-Länge von mehr als 100 innerhalb dieser Kontur. (Der visuell offensichtliche Kandidat oben rechts ist nicht lang genug.)