In unserem System gibt es die Anforderungen, dass wir einige Quellzeilen (mit geringer Genauigkeit) in Referenzzeilen (mit hoher Genauigkeit) verschieben möchten. Die folgenden Bilder zeigen die normalen Anwendungsfälle. Die rote ist eine Quelllinie und die blaue ist eine Referenzlinie.
In diesem Fall würde die Quelllinie teilweise verschoben, und das Ergebnis wäre wie in der grünen Linie dargestellt:
Es gibt Situationen, in denen die Quellzeile vollständig verschoben werden muss.
Ergebnis:
Derzeit besteht unsere Lösung darin, den Kopf- / Endpunkt der Quelllinie auf die Referenzlinie und umgekehrt zu projizieren und dann projizierte Punkte auf der Quell- und Referenzlinie zu finden. Mit diesen projizierten Punkten können wir den benötigten Teil der Quell- und Referenzlinie extrahieren und sie dann zu einem neuen kombinieren.
Dies funktioniert in den meisten Fällen, aber es gibt Fälle, in denen diese Methode nicht funktioniert. Insbesondere, wenn eine der Linien eine "C" -ähnliche Form hat oder der Kopfpunkt sehr nahe am Endpunkt liegt. Die nächsten beiden Bilder zeigen das Szenario.
Bei Anwendung meines Algorithmus erhalten wir das Ergebnis:
In gewisser Weise ist es verständlich, weil der aktuelle Algorithmus nur projizierte Punkte findet und Linien extrahiert.
Was wir erwartet haben, ist ungefähr so:
Also, was ich brauche, um dies robuster zu machen, damit es auch Sonderfälle wie den vorhergehenden behandeln kann. Ich habe versucht, alle Punkte von einer Linie auf eine andere zu projizieren und die beiden projizierten Punkte zu finden, die dem Kopf- / Endpunkt der projizierten Linie am nächsten liegen, aber es gab kein Glück. Trotzdem kann ich Fälle finden, die zu unerwarteten Ergebnissen führen.
Hat jemand schon einmal ähnliche Probleme gehabt? Es wäre auch toll, wenn es eine Software oder Bibliothek gibt, die ähnliche Aufgaben erledigen kann. Jede Antwort wird geschätzt.