本文简要介绍 python 语言中 scipy.ndimage.distance_transform_cdt
的用法。
用法:
scipy.ndimage.distance_transform_cdt(input, metric='chessboard', return_distances=True, return_indices=False, distances=None, indices=None)#
倒角类型变换的距离变换。
此函数通过将每个前景(非零)元素替换为其到背景(任何 zero-valued 元素)的最短距离来计算输入的距离变换。
除了距离变换,还可以计算特征变换。在这种情况下,最接近每个前景元素的背景元素的索引在单独的数组中返回。
- input: array_like
输入。 0 值被视为背景。
- metric: {‘chessboard’, ‘taxicab’} 或 数组,可选
公制确定所完成的倒角类型。如果公制等于 ‘taxicab’ 使用生成的结构scipy.ndimage.generate_binary_structure距离的平方等于 1。如果公制等于‘chessboard’,a公制是使用生成的scipy.ndimage.generate_binary_structure距离的平方等于数组的维数。这些选择对应于二维中 ‘taxicab’ 和 ‘chessboard’ 距离度量的常见解释。可以以矩阵的形式提供自定义度量,其中每个维度的长度为三。 ‘cityblock’ 和‘manhattan’ 也有效,并映射到‘taxicab’。默认为‘chessboard’。
- return_distances: 布尔型,可选
是否计算距离变换。默认为真。
- return_indices: 布尔型,可选
是否计算特征变换。默认为假。
- distances: int32 ndarray,可选
一个输出数组,用于存储计算的距离变换,而不是返回它。 return_distances 必须为真。它必须与输入的形状相同。
- indices: int32 ndarray,可选
一个输出数组,用于存储计算的特征变换,而不是返回它。 return_indicies 必须为真。它的形状必须是 (input.ndim,) + input.shape。
- distances: int32 ndarray,可选
计算出的距离变换。仅当 return_distances 为 True 并且未提供距离时返回。它将具有与输入数组相同的形状。
- indices: int32 ndarray,可选
计算出的特征变换。对于输入的每个维度,它都有一个 input-shaped 数组。有关示例,请参阅distance_transform_edt 文档。仅当 return_indices 为 True 并且未提供索引时返回。
参数 ::
返回 ::
例子:
导入必要的模块。
>>> import numpy as np >>> from scipy.ndimage import distance_transform_cdt >>> import matplotlib.pyplot as plt >>> from mpl_toolkits.axes_grid1 import ImageGrid
首先,我们创建一个玩具二值图像。
>>> def add_circle(center_x, center_y, radius, image, fillvalue=1): ... # fill circular area with 1 ... xx, yy = np.mgrid[:image.shape[0], :image.shape[1]] ... circle = (xx - center_x) ** 2 + (yy - center_y) ** 2 ... circle_shape = np.sqrt(circle) < radius ... image[circle_shape] = fillvalue ... return image >>> image = np.zeros((100, 100), dtype=np.uint8) >>> image[35:65, 20:80] = 1 >>> image = add_circle(28, 65, 10, image) >>> image = add_circle(37, 30, 10, image) >>> image = add_circle(70, 45, 20, image) >>> image = add_circle(45, 80, 10, image)
接下来,我们设置图形。
>>> fig = plt.figure(figsize=(5, 15)) >>> grid = ImageGrid(fig, 111, nrows_ncols=(3, 1), axes_pad=(0.5, 0.3), ... label_mode="1", share_all=True, ... cbar_location="right", cbar_mode="each", ... cbar_size="7%", cbar_pad="2%") >>> for ax in grid: ... ax.axis('off') >>> top, middle, bottom = grid >>> colorbar_ticks = [0, 10, 20]
顶部图像包含原始二值图像。
>>> binary_image = top.imshow(image, cmap='gray') >>> cbar_binary_image = top.cax.colorbar(binary_image) >>> cbar_binary_image.set_ticks([0, 1]) >>> top.set_title("Binary image: foreground in white")
中间图像包含使用
taxicab
度量的距离变换。>>> distance_taxicab = distance_transform_cdt(image, metric="taxicab") >>> taxicab_transform = middle.imshow(distance_taxicab, cmap='gray') >>> cbar_taxicab = middle.cax.colorbar(taxicab_transform) >>> cbar_taxicab.set_ticks(colorbar_ticks) >>> middle.set_title("Taxicab metric")
底部图像包含使用
chessboard
度量的距离变换。>>> distance_chessboard = distance_transform_cdt(image, ... metric="chessboard") >>> chessboard_transform = bottom.imshow(distance_chessboard, cmap='gray') >>> cbar_chessboard = bottom.cax.colorbar(chessboard_transform) >>> cbar_chessboard.set_ticks(colorbar_ticks) >>> bottom.set_title("Chessboard metric") >>> plt.tight_layout() >>> plt.show()
相关用法
- Python SciPy ndimage.distance_transform_bf用法及代码示例
- Python SciPy ndimage.distance_transform_edt用法及代码示例
- Python SciPy ndimage.correlate用法及代码示例
- Python SciPy ndimage.morphological_gradient用法及代码示例
- Python SciPy ndimage.variance用法及代码示例
- Python SciPy ndimage.correlate1d用法及代码示例
- Python SciPy ndimage.binary_dilation用法及代码示例
- Python SciPy ndimage.find_objects用法及代码示例
- Python SciPy ndimage.label用法及代码示例
- Python SciPy ndimage.maximum_filter1d用法及代码示例
- Python SciPy ndimage.iterate_structure用法及代码示例
- Python SciPy ndimage.map_coordinates()用法及代码示例
- Python SciPy ndimage.generic_laplace用法及代码示例
- Python SciPy ndimage.generate_binary_structure用法及代码示例
- Python SciPy ndimage.binary_opening用法及代码示例
- Python SciPy ndimage.binary_fill_holes用法及代码示例
- Python SciPy ndimage.maximum_filter用法及代码示例
- Python SciPy ndimage.minimum_position用法及代码示例
- Python SciPy ndimage.labeled_comprehension用法及代码示例
- Python SciPy ndimage.grey_erosion用法及代码示例
- Python SciPy ndimage.spline_filter用法及代码示例
- Python SciPy ndimage.shift用法及代码示例
- Python SciPy ndimage.minimum用法及代码示例
- Python SciPy ndimage.fourier_uniform用法及代码示例
- Python SciPy ndimage.gaussian_laplace用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.ndimage.distance_transform_cdt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。