def voronoi_tessellation(x, y, xnode, ynode, scale):
"""
Computes (Weighted) Voronoi Tessellation of the pixels grid
"""
if scale[0] == 1: # non-weighted VT
tree = cKDTree(np.column_stack([xnode, ynode]))
classe = tree.query(np.column_stack([x, y]))[1]
else:
if x.size < 1e4:
classe = np.argmin(((x[:, None] - xnode)**2 + (y[:, None] - ynode)**2)/scale**2, axis=1)
else: # use for loop to reduce memory usage
classe = np.zeros(x.size, dtype=int)
for j, (xj, yj) in enumerate(zip(x, y)):
classe[j] = np.argmin(((xj - xnode)**2 + (yj - ynode)**2)/scale**2)
return classe
#----------------------------------------------------------------------
评论列表
文章目录