Punkte sortieren, um eine durchgehende Linie zu bilden

Ich habe eine Liste von (x, y) -Koordinaten, die ein Linienskelett darstellen. Die Liste wird direkt von einem Binärbild erhalten:

import numpy as np    
list=np.where(img_skeleton>0)

Nun werden die Punkte in der Liste nach ihrer Position im Bild entlang einer der Achsen sortiert.

Ich möchte die Liste so sortieren, dass die Reihenfolge einen glatten Pfad entlang der Linie darstellt. (Dies ist derzeit nicht der Fall, wenn die Linie zurück gekrümmt ist). Anschließend möchte ich diesen Punkten einen Spline zuweisen.

Ein ähnliches Problem wurde mit arcPy @ beschrieben und gelösHie. Gibt es eine bequeme Möglichkeit, dies mit Python, Numpy, Scipy, OpenCV (oder einer anderen Bibliothek?) Zu erreichen?

below ist ein Beispielbild. es ergibt sich eine Liste von 59 (x, y) -Koordinaten.

wenn ich die Liste an die Spline-Anpassungsroutine von scipy sende, stößt ich auf ein Problem, da die Punkte in der Zeile nicht "geordnet" sind:

Antworten auf die Frage(6)

Ihre Antwort auf die Frage