Bézier-Kurvenanpassung mit SciPy

Ich habe eine Reihe von Punkten, die sich einer 2D-Kurve annähern. Ich möchte Python mit numpy und scipy verwenden, um einen kubischen Bézier-Pfad zu finden, der ungefähr zu den Punkten passt, wo ich die exakten Koordinaten von zwei Endpunkten spezifiziere, und die Koordinaten der anderen beiden Kontrollpunkte zurückgibt.

Ich dachte anfangsscipy.interpolate.splprep() könnte tun, was ich will, aber es scheint die Kurve zu zwingen, durch jeden der Datenpunkte zu gehen (wie ich nehme an, Sie würden für die Interpolation wollen). Ich gehe davon aus, dass ich damit auf dem falschen Weg war.

Meine Frage ist ähnlich wie diese:Wie kann ich eine Bézier-Kurve an einen Datensatz anpassen?, außer dass sie sagten, sie wollten Numpy nicht benutzen. Ich würde es vorziehen, zu finden, was ich bereits irgendwo in scipy oder numpy implementiert haben muss. Ansonsten plane ich, den aus einer der Antworten auf diese Frage verknüpften Algorithmus mit numpy zu implementieren:Ein Algorithmus zum automatischen Anpassen digitalisierter Kurven (S. 622).

Vielen Dank für alle Vorschläge!

Edit: Ich verstehe, dass eine kubische Bézier-Kurve nicht garantiert alle Punkte durchläuft; Ich möchte einen, der zwei vorgegebene Endpunkte durchläuft und der so nah wie möglich an den angegebenen inneren Punkten liegt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage