有誰知道一個Python替代Matlab /八度bwdist()函數?該函數將給定矩陣的每個單元格的歐氏距離返回到最接近的非零單元格。我看到了一個Octave C實現,一個純粹的Matlab實現,我想知道是否有人必須在ANSI C(不包括任何Matlab/Octave頭文件,所以我可以輕鬆地從Python進行集成)或純Python中實現它。Matlab/Octave bwdist()在Python或C
我提到的兩個鏈接都低於:
作爲一個測試,一個Matlab代碼/輸出看起來是這樣的:
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
我測試了推薦在Python中使用distance_transform_edt調用,結果如下:
進口numpy的從SciPy的進口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.]]
NP 這個結果似乎並不匹配八度/ Matlab的輸出。
每@ jetxee的評論,我改變了代碼和這個調用起作用。 – user423805 2011-03-10 14:01:21