当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python skimage.morphology.local_maxima用法及代码示例


用法:

skimage.morphology.local_maxima(image, footprint=None, connectivity=None, indices=False, allow_borders=True)

找到 n 维数组的局部最大值。

局部最大值被定义为具有相等灰度(高原)的连接像素集,严格大于邻域中所有像素的灰度。

参数

imagendarray

一个 n 维数组。

footprintndarray,可选

用于确定每个评估像素的邻域的足迹(结构元素)(True表示连接的像素)。它必须是一个布尔数组,并且具有与图片.如果两者都没有脚印也不连通性给定,所有相邻像素都被视为邻域的一部分。

connectivityint 可选

用于确定每个评估像素的邻域的数字。与中心的平方距离小于或等于连通性的相邻像素被视为邻居。如果足迹不是无,则忽略。

indices布尔型,可选

如果为 True,则输出将是一维数组的元组,表示每个维度中局部最大值的索引。如果为 False,则输出将是一个与图像具有相同形状的布尔数组。

allow_borders布尔型,可选

如果为真,则接触图像边界的高原是有效的最大值。

返回

maximandarray 或元组[ndarray]

如果 index 为假,一个与形状相同的布尔数组图片True表示局部最大值的位置(False除此以外)。如果 index 是真的,一维数组的元组包含所有找到的最大值的坐标(索引)。

其他参数

selemDEPRECATED

已弃用以支持足迹。

警告

UserWarning

如果allow_borders 为假并且给定图像的任何维度都短于 3 个样本,则最大值不存在并显示警告。

注意

此函数基于以下想法运行:

  1. 通过仅比较一个方向的像素,对图像的最后一个维度进行第一次遍历,并标记局部最大值的候选对象。如果像素在最后一维中没有连接,则所有像素都被标记为候选。

对于每个候选人:

  1. 执行 flood-fill 以查找具有相同灰度值且属于高原的所有连接像素。

  2. 考虑高原的连通邻域:如果没有边界样本具有更高的灰度级,则将高原标记为确定的局部最大值。

例子

>>> from skimage.morphology import local_maxima
>>> image = np.zeros((4, 7), dtype=int)
>>> image[1:3, 1:3] = 1
>>> image[3, 0] = 1
>>> image[1:3, 4:6] = 2
>>> image[3, 6] = 3
>>> image
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 0, 2, 2, 0],
       [0, 1, 1, 0, 2, 2, 0],
       [1, 0, 0, 0, 0, 0, 3]])

通过比较所有相邻像素(最大连通性)找到局部最大值:

>>> local_maxima(image)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False, False, False, False],
       [False,  True,  True, False, False, False, False],
       [ True, False, False, False, False, False,  True]])
>>> local_maxima(image, indices=True)
(array([1, 1, 2, 2, 3, 3]), array([1, 2, 1, 2, 0, 6]))

在不与对角像素比较的情况下找到局部最大值(连通性 1):

>>> local_maxima(image, connectivity=1)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False,  True,  True, False],
       [False,  True,  True, False,  True,  True, False],
       [ True, False, False, False, False, False,  True]])

并排除与图像边接壤的最大值:

>>> local_maxima(image, connectivity=1, allow_borders=False)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False,  True,  True, False],
       [False,  True,  True, False,  True,  True, False],
       [False, False, False, False, False, False, False]])

相关用法


注:本文由纯净天空筛选整理自scikit-image.org大神的英文原创作品 skimage.morphology.local_maxima。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。