pontos de classificação para formar uma linha contínua

Eu tenho uma lista de coordenadas (x, y) que representam um esqueleto de linha. A lista é obtida diretamente de uma imagem binária:

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

Agora os pontos na lista são classificados de acordo com sua posição na imagem ao longo de um dos eixos.

Gostaria de classificar a lista de modo que a ordem represente um caminho tranqüilo ao longo da linha. (Atualmente não é o caso em que a linha se curva de volta). Posteriormente, desejo ajustar um spline a esses pontos.

Um problema semelhante foi descrito e resolvido usando o arcPyaqui. Existe uma maneira conveniente de conseguir isso usando python, numpy, scipy, openCV (ou outra biblioteca?)

abaixo está um exemplo de imagem. resulta em uma lista de 59 (x, y) coordenadas.

quando envio a lista para a rotina de ajuste de splines do scipy, estou com um problema porque os pontos não são 'ordenados' na linha:

questionAnswers(3)

yourAnswerToTheQuestion