KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Does anyone know of a Python replacement for Matlab / Octave bwdist() function? This function returns Euclidian distance of each cell to the closest non-zero cell for a given matrix. I saw an Octave C implementation, a pure Matlab implementation, and I was wondering if anyone had to implement this in ANSI C (which doesn't include any Matlab / Octave headers, so I can integrate from Python easily) or in pure Python. Both links I mentioned are below: C++ Matlab M-File As a test, a Matlab code / output looks something like this: 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 I tested a recommended distance_transform_edt call in Python, which gave this result: import numpy as np from scipy import ndimage 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.]] This result does not seem to match the Octave / Matlab output.
Tags (comma-separated)
Save Edits
Cancel