本文整理汇总了Python中skimage.morphology.medial_axis方法的典型用法代码示例。如果您正苦于以下问题:Python morphology.medial_axis方法的具体用法?Python morphology.medial_axis怎么用?Python morphology.medial_axis使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类skimage.morphology
的用法示例。
在下文中一共展示了morphology.medial_axis方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: to_sdf
# 需要导入模块: from skimage import morphology [as 别名]
# 或者: from skimage.morphology import medial_axis [as 别名]
def to_sdf(self):
""" Converts the 2D image to a 2D signed distance field.
Returns
-------
:obj:`numpy.ndarray`
2D float array of the signed distance field
"""
# compute medial axis transform
skel, sdf_in = morph.medial_axis(self.data, return_distance=True)
useless_skel, sdf_out = morph.medial_axis(
np.iinfo(np.uint8).max - self.data, return_distance=True)
# convert to true sdf
sdf = sdf_out - sdf_in
return sdf
示例2: vectorize_lines
# 需要导入模块: from skimage import morphology [as 别名]
# 或者: from skimage.morphology import medial_axis [as 别名]
def vectorize_lines(im: np.ndarray, threshold: float = 0.2, min_sp_dist: int = 10):
"""
Vectorizes lines from a binarized array.
Args:
im (np.ndarray): Array of shape (3, H, W) with the first dimension
being probabilities for (start_separators,
end_separators, baseline).
Returns:
[[x0, y0, ... xn, yn], [xm, ym, ..., xk, yk], ... ]
A list of lists containing the points of all baseline polylines.
"""
# split into baseline and separator map
st_map = im[0]
end_map = im[1]
sep_map = st_map + end_map
bl_map = im[2]
# binarize
bin = im > threshold
skel, skel_dist_map = medial_axis(bin[2], return_distance=True)
elongation_offset = np.max(skel_dist_map)
sp_can = _find_superpixels(skel, heatmap=bl_map, min_sp_dist=min_sp_dist)
if not sp_can.size:
logger.warning('No superpixel candidates found in network output. Likely empty page.')
return []
intensities = _compute_sp_states(sp_can, bl_map, st_map, end_map)
clusters = _cluster_lines(intensities)
lines = _interpolate_lines(clusters, elongation_offset, bl_map.shape, st_map, end_map)
return lines
示例3: place_routers_on_skeleton
# 需要导入模块: from skimage import morphology [as 别名]
# 或者: from skimage.morphology import medial_axis [as 别名]
def place_routers_on_skeleton(d, cmethod):
wireless = np.where(d["graph"] == Cell.Wireless, 1, 0)
# perform skeletonization
skeleton = skeletonize(wireless)
med_axis = medial_axis(wireless)
skel = skeleton
# skel = med_axis
# get all skeleton positions
pos = []
for i in range(skel.shape[0]):
for j in range(skel.shape[1]):
if skel[i][j]:
pos.append((i, j))
budget = d['budget']
shuffle(pos)
max_num_routers = min([int(d['budget'] / d['price_router']), len(pos)])
print("Num of routers constrained by:")
print(" budget: %d" % int(int(d['budget'] / d['price_router'])))
print(" skeleton: %d" % len(pos))
for i in tqdm(range(max_num_routers), desc="Placing Routers"):
new_router = pos[i]
a, b = new_router
# check if remaining budget is enough
d["graph"][a][b] = Cell.Router
d, ret, cost = _add_cabel(d, new_router, budget)
budget -= cost
if not ret:
break
return d
示例4: place_routers_on_skeleton_iterative
# 需要导入模块: from skimage import morphology [as 别名]
# 或者: from skimage.morphology import medial_axis [as 别名]
def place_routers_on_skeleton_iterative(d, cmethod):
budget = d['budget']
R = d['radius']
max_num_routers = int(d['budget'] / d['price_router'])
coverage = np.where(d["graph"] == Cell.Wireless, 1, 0).astype(np.bool)
pbar = tqdm(range(max_num_routers), desc="Placing Routers")
while budget > 0:
# perform skeletonization
# skeleton = skeletonize(coverage)
skeleton = medial_axis(coverage)
# get all skeleton positions
pos = np.argwhere(skeleton > 0).tolist()
# escape if no positions left
if not len(pos):
break
# get a random position
shuffle(pos)
a, b = pos[0]
# place router
d["graph"][a][b] = Cell.Router
d, ret, cost = _add_cabel(d, (a, b), budget)
if not ret:
print("No budget available!")
break
budget -= cost
# refresh wireless map by removing new coverage
m = wireless_access(a, b, R, d['graph']).astype(np.bool)
coverage[(a - R):(a + R + 1), (b - R):(b + R + 1)] &= ~m
pbar.update()
pbar.close()
return d