Quelqu'un connaît-il un remplacement Python pour la fonction Matlab/Octave bwdist()? Cette fonction renvoie la distance euclidienne de chaque cellule à la cellule non nulle la plus proche pour une matrice donnée. J'ai vu une implémentation d'Octave C, une pure implémentation de Matlab, et je me demandais si quelqu'un devait l'implémenter en ANSI C (qui n'inclut aucun en-tête Matlab/Octave, donc je peux facilement l'intégrer de Python) ou en Python pur.Matlab/Octave bwdist() en Python ou C
Les deux liens que je parlais sont ci-dessous:
Comme un test, un code Matlab/sortie ressemble à quelque chose comme ceci:
bw= [0 1 0 0 0;
1 0 0 0 0;
0 0 0 0 1;
0 0 0 0 0;
0 0 1 0 0]
D = bwdist(bw)
D =
1.00000 0.00000 1.00000 2.00000 2.00000
0.00000 1.00000 1.41421 1.41421 1.00000
1.00000 1.41421 2.00000 1.00000 0.00000
2.00000 1.41421 1.00000 1.41421 1.00000
2.00000 1.00000 0.00000 1.00000 2.00000
Je l'ai testé un recommandé distance_transform_edt appel en Python, qui a donné ce résultat:
numpy d'importation comme np de ndimage d'importation scipy
a = np.array(([0,1,0,0,0],
[1,0,0,0,0],
[0,0,0,0,1],
[0,0,0,0,0],
[0,0,1,0,0]))
res = ndimage.distance_transform_edt(a)
print res
[[ 0. 1. 0. 0. 0.]
[ 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 1.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0.]]
Ce résultat ne semble pas correspondre à la sortie Octave/Matlab.
par le commentaire de @ jetxee, j'ai changé le code et cet appel fonctionne. – user423805