欲计算给定numpy的阵列结构的周边。 与周边我的意思是该结构的numpy的阵列中的确切周边。 该结构可以包括孔。
我目前的aproach是这样的:
import numpy
a = numpy.zeros((6,6), dtype=numpy.int)
a[1:5, 1:5] = 1;a[3,3] = 0
# Way 1
s = ndimage.generate_binary_structure(2,1)
c = ndimage.binary_dilation(a,s).astype(a.dtype)
b = c - a
numpy.sum(b) # The result, however the hole is calculated as 1, although there are 4 edges
# Way 2
b = ndimage.distance_transform_cdt(a == 0,metric='taxicab') == 1
b = b.astype(int)
numpy.sum(b) # same as above
正如你可以看到它显示所有相邻的细胞,但是它们的总和不等于补丁的周长。 的示例阵列中的孔被计算为1虽然它正确地有4个边缘。 有不同形状的孔更大的类似问题。
我曾问过类似的问题,但都提供了有点不到底在正确的输出值解决方案。 有人有一个想法如何做到这一点? 没有其他的包不是numpy的,SciPy的和基本软件包请。