本文简要介绍 python 语言中 scipy.ndimage.distance_transform_edt
的用法。
用法:
scipy.ndimage.distance_transform_edt(input, sampling=None, return_distances=True, return_indices=False, distances=None, indices=None)#
精确的欧几里得距离变换。
此函数通过将每个前景(非零)元素替换为其到背景(任何 zero-valued 元素)的最短距离来计算输入的距离变换。
除了距离变换,还可以计算特征变换。在这种情况下,最接近每个前景元素的背景元素的索引在单独的数组中返回。
- input: array_like
输入要转换的数据。可以是任何类型,但会转换为二进制:输入等于 True 的地方为 1,其他地方为 0。
- sampling: 浮点数,或浮点数序列,可选
沿每个维度的元素间距。如果是一个序列,其长度必须等于输入等级;如果是单个数字,则用于所有轴。如果未指定,则暗示统一的网格间距。
- return_distances: 布尔型,可选
是否计算距离变换。默认为真。
- return_indices: 布尔型,可选
是否计算特征变换。默认为假。
- distances: float64 ndarray,可选
一个输出数组,用于存储计算的距离变换,而不是返回它。 return_distances 必须为真。它必须与输入的形状相同。
- indices: int32 ndarray,可选
一个输出数组,用于存储计算的特征变换,而不是返回它。 return_indicies 必须为真。它的形状必须是 (input.ndim,) + input.shape。
- distances: float64 ndarray,可选
计算出的距离变换。仅当 return_distances 为 True 且未提供距离时才返回。它将具有与输入数组相同的形状。
- indices: int32 ndarray,可选
计算的特征变换。对于输入的每个维度,它都有一个input-shaped 数组。请参见下面的示例。仅当 return_indices 为 True 且未提供索引时返回。
参数 ::
返回 ::
注意:
欧几里得距离变换给出欧几里得距离的值:
n y_i = sqrt(sum (x[i]-b[i])**2) i
其中 b[i] 是与输入点 x[i] 的欧几里得距离最小的背景点(值 0),n 是维数。
例子:
>>> from scipy import ndimage >>> import numpy as np >>> a = np.array(([0,1,1,1,1], ... [0,0,1,1,1], ... [0,1,1,1,1], ... [0,1,1,1,0], ... [0,1,1,0,0])) >>> ndimage.distance_transform_edt(a) array([[ 0. , 1. , 1.4142, 2.2361, 3. ], [ 0. , 0. , 1. , 2. , 2. ], [ 0. , 1. , 1.4142, 1.4142, 1. ], [ 0. , 1. , 1.4142, 1. , 0. ], [ 0. , 1. , 1. , 0. , 0. ]])
沿 x 采样 2 个单位,沿 y 采样 1 个:
>>> ndimage.distance_transform_edt(a, sampling=[2,1]) array([[ 0. , 1. , 2. , 2.8284, 3.6056], [ 0. , 0. , 1. , 2. , 3. ], [ 0. , 1. , 2. , 2.2361, 2. ], [ 0. , 1. , 2. , 1. , 0. ], [ 0. , 1. , 1. , 0. , 0. ]])
还要求索引:
>>> edt, inds = ndimage.distance_transform_edt(a, return_indices=True) >>> inds array([[[0, 0, 1, 1, 3], [1, 1, 1, 1, 3], [2, 2, 1, 3, 3], [3, 3, 4, 4, 3], [4, 4, 4, 4, 4]], [[0, 0, 1, 1, 4], [0, 1, 1, 1, 4], [0, 0, 1, 4, 4], [0, 0, 3, 3, 4], [0, 0, 3, 3, 4]]])
为就地输出提供数组:
>>> indices = np.zeros(((np.ndim(a),) + a.shape), dtype=np.int32) >>> ndimage.distance_transform_edt(a, return_indices=True, indices=indices) array([[ 0. , 1. , 1.4142, 2.2361, 3. ], [ 0. , 0. , 1. , 2. , 2. ], [ 0. , 1. , 1.4142, 1.4142, 1. ], [ 0. , 1. , 1.4142, 1. , 0. ], [ 0. , 1. , 1. , 0. , 0. ]]) >>> indices array([[[0, 0, 1, 1, 3], [1, 1, 1, 1, 3], [2, 2, 1, 3, 3], [3, 3, 4, 4, 3], [4, 4, 4, 4, 4]], [[0, 0, 1, 1, 4], [0, 1, 1, 1, 4], [0, 0, 1, 4, 4], [0, 0, 3, 3, 4], [0, 0, 3, 3, 4]]])
相关用法
- Python SciPy ndimage.distance_transform_bf用法及代码示例
- Python SciPy ndimage.distance_transform_cdt用法及代码示例
- 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_edt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。