2016-06-28 34 views
4

Ich habe einige Ebenen im 3D-Raum, die theoretisch alle auf der gleichen Linie schneiden sollten.Finden der durchschnittlichen Schnittlinie für mehrere Ebenen

Jede Ebene wird anhand von 3 Messpunkten berechnet. Es gibt jedoch einen Fehler bei der Messung dieser Punkte.

Also in der Praxis schneiden sich die Ebenen nicht alle auf der gleichen Linie.

Wie bekomme ich die "durchschnittliche" Schnittlinie für alle diese Ebenen?

Ich könnte einfach jede Ebene mit jeder anderen Ebene schneiden und die Linien mitteln. Wenn jedoch zwei Ebenen fast die gleiche Ausrichtung haben, führt ein kleiner Fehler in ihren Messungen zu einem großen Fehler in ihrem berechneten Schnittpunkt. Also würde ich den Messfehler vergrößern, wenn ich die durchschnittliche Kreuzung auf diese Weise berechne.

Gibt es eine gerechtere Methode zur Berechnung der gemeinsamen Schnittlinie?

+0

Gewichten Sie die Schnittlinien mit einem kleinen Wert für * gleiche Ausrichtungsebenen * und eine größere für * orthogonale Ebenen * ... oder eliminieren Sie Schnittpunkte von * nahe parallelen Ebenen *. –

+0

Ja, sollte jede einzelne Zeile gewichtet werden, danke! Ich bin neugierig, ob es eine mathematische Rechtfertigung für das genaue Gewicht gibt, dh wenn ich jede Linie mit [Winkel zwischen den Ebenen-in-Rad] gewichten würde ² würde ich das beste Anpassungsergebnis erhalten, oder gibt es einen anderen optimalen Wert für das Gewicht. – HugoRune

+0

Ich habe darüber nachgedacht..aber habe keine gute Antwort darauf. Sie müssen sowohl das Fehlermodell als auch den Winkel zwischen den Ebenen verwalten. Ich denke, du darfst keine lineare Funktion verwenden, eine schnell wachsende Funktion verwenden, eine exponentialartige? Ziehe Orthogonale wirklich vor. All dies hängt von der Anzahl der Ebenen usw. ab. –

Antwort

0

Ich denke, was Sie brauchen, ist nicht Mittelung, sondern ein Algorithmus, der Ausreißer (d. H. Schlechte Schnittpunkte Linien) erkennt und verwirft sie.

Ein Standardalgorithmus dabei ist die zufällige Stichprobe Konsens (RANSAC). Aber um es benutzen zu können, müssten Sie eine Art Abstand zwischen den Linien definieren, was sinnvoll möglich sein sollte.

Eine andere Möglichkeit, den Inlier (d. H. Gute Schnittlinien) zu finden, ist der Hough transform. In diesem Algorithmus ist der gesamte Parameterraum von Zeilen in Zellen unterteilt. Eine berechnete Schnittlinie "stimmt" für die Zelle ab, die die Parameter dieser Schnittlinie enthält. Die Parameterzelle mit den meisten Stimmen gewinnt. Man kann das Ergebnis verfeinern, indem man die Durchschnittslinie aller Linien berechnet, die für die gewinnende Zelle stimmten.