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:
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:
Um dann das gleiche Ergebnis zu berechnen, müssen wir Einsen durch Nullen und Nullen durch Eins ersetzen, z. Betrachte die Matrix 1-a
:
In diesem Fall scipy.ndimage.morphology.distance_transform_edt
gibt die erwarteten Ergebnisse:
scipy.ndimage.morphology.distance_transform_edt
erfüllen Ihre Bedürfnisse?
Tags und Links python matlab image-processing numpy scipy