Matlab / Octave bwdist () in Python oder C

8

Kennt jemand einen Python-Ersatz für Matlab / Octave bwdist () -Funktion? Diese Funktion gibt den euklidischen Abstand jeder Zelle zur nächsten von Null verschiedenen Zelle für eine gegebene Matrix zurück. Ich sah eine Octave C-Implementierung, eine reine Matlab-Implementierung, und ich fragte mich, ob jemand dies in ANSI C implementieren musste (ohne Matlab / Octave-Header, so dass ich einfach aus Python integrieren kann) oder in reinem Python.

Beide Links, die ich erwähnt habe, sind unten:

user423805 10.03.2011, 13:26
quelle

3 Antworten

9

Während Matlab bwdist die Entfernung zur nächsten Zelle zurückgibt, die nicht Null ist, Python distance_transform_edt gibt die Abstände zum nächsten Hintergrundelement zurück". SciPy-Dokumentation ist nicht klar darüber, was es als "Hintergrund" betrachtet, es gibt eine Art Konvertierungsmaschinerie dahinter; in der Praxis ist 0 der Hintergrund, nicht Null ist der Vordergrund.

Also, wenn wir Matrix a haben:

%Vor%

Um dann das gleiche Ergebnis zu berechnen, müssen wir Einsen durch Nullen und Nullen durch Eins ersetzen, z. Betrachte die Matrix 1-a :

%Vor%

In diesem Fall scipy.ndimage.morphology.distance_transform_edt gibt die erwarteten Ergebnisse:

%Vor%     
sastanin 10.03.2011, 13:53
quelle
3

scipy.ndimage.morphology.distance_transform_edt erfüllen Ihre Bedürfnisse?

    
syrion 10.03.2011 13:30
quelle
1

Keine Notwendigkeit, die 1-a zu tun     

%Vor%     
luoenzhen 20.02.2012 21:17
quelle