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


Python skimage.segmentation.slic用法及代码示例


用法:

skimage.segmentation.slic(image, n_segments=100, compactness=10.0, max_num_iter=10, sigma=0, spacing=None, multichannel=True, convert2lab=None, enforce_connectivity=True, min_size_factor=0.5, max_size_factor=3, slic_zero=False, start_label=1, mask=None, *, channel_axis=- 1)

使用颜色-(x,y,z) 空间中的k-means 聚类分割图像。

参数

image2D、3D 或 4D ndarray

输入图像,可以是 2D 或 3D,灰度或多通道(参见channel_axis 参数)。输入图像必须是NaN-free 或者必须屏蔽 NaN

n_segmentsint 可选

分割输出图像中的(近似)标签数。

compactness浮点数,可选

平衡颜色接近度和空间接近度。较高的值赋予空间接近度更多的权重,使超像素形状更加方形/立方体。在 SLICO 模式下,这是初始紧凑性。该参数很大程度上取决于图像对比度和图像中对象的形状。我们建议在对数范围内探索可能的值,例如 0.01、0.1、1、10、100,然后再围绕选定的值进行优化。

max_num_iterint 可选

k-means 的最大迭代次数。

sigma浮点数或 array-like 个浮点数,可选

对图像的每个维度进行预处理的高斯平滑核的宽度。在标量值的情况下,相同的 sigma 应用于每个维度。零表示没有平滑。注意西格玛如果它是标量并且提供了手动体素间距,则会自动缩放(请参阅注释部分)。如果 sigma 是array-like,它的大小必须匹配image的空间维数。

spacingarray-like 个浮点数,可选

沿每个空间维度的体素间距。默认情况下, slic 假定间距一致(沿每个空间维度具有相同的体素分辨率)。此参数控制k-means 聚类期间沿空间维度的距离权重。

multichannel布尔型,可选

图像的最后一个轴是否被解释为多个通道或另一个空间维度。不推荐使用此参数:改为指定 channel_axis。

convert2lab布尔型,可选

在分割之前是否应将输入转换为 Lab 颜色空间。输入图像必须是RGB。强烈推荐。此选项默认为Truechannel_axis` is not None *and* ``image.shape[-1] == 3.

enforce_connectivity布尔型,可选

生成的段是否连接

min_size_factor浮点数,可选

要删除的最小段大小相对于假定段大小的比例`depth*width*height/n_segments`

max_size_factor浮点数,可选

最大连接段大小的比例。在大多数情况下,值 3 有效。

slic_zero布尔型,可选

运行SLIC-zero,SLIC的零参数模式。 [2]

start_labelint 可选

标签的索引开始。应该是 0 或 1。

maskndarray,可选

如果提供,则仅在掩码为 True 的情况下计算超像素,并且种子点使用 k-means 聚类策略均匀分布在掩码上。掩码维数必须等于图像空间维数。

channel_axisint 或无,可选

如果为 None,则假定图像是灰度(单通道)图像。否则,此参数指示数组的哪个轴对应于通道。

返回

labels2D 或 3D 阵列

指示段标签的整数掩码。

其他参数

max_iterDEPRECATED

已弃用以支持max_num_iter。

multichannelDEPRECATED

已弃用以支持channel_axis。

抛出

ValueError

如果 convert2lab 设置为 True 但最后一个数组维度的长度不是 3。

ValueError

如果 start_label 不是 0 或 1。

注意

  • 如果西格玛 > 0,图像在分割之前使用高斯核进行平滑处理。
  • 如果西格玛是标量并且间距提供,内核宽度沿每个维度除以间距。例如,如果sigma=1spacing=[5, 1, 1], 有效西格玛[0.2, 1, 1].这确保了各向异性图像的合理平滑。
  • 在处理之前,图像被重新缩放到 [0, 1] 中。
  • 默认情况下,形状 (M, N, 3) 的图像被解释为 2D RGB 图像。要将它们解释为最后一维长度为 3 的 3D,请使用channel_axis=无.
  • start_label引入处理问题[4].标签索引默认从 1 开始。

参考

1

Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Süsstrunk, SLIC Superpixels Compared to State-of-the-art Superpixel Methods, TPAMI, May 2012. DOI:10.1109/TPAMI.2012.120

2

https://www.epfl.ch/labs/ivrl/research/slic-superpixels/#SLICO

3

Irving, Benjamin. “maskSLIC: regional superpixel generation with application to local pathology characterisation in medical images.”, 2016, arXiv:1606.09518

4

https://github.com/scikit-image/scikit-image/issues/3722

例子

>>> from skimage.segmentation import slic
>>> from skimage.data import astronaut
>>> img = astronaut()
>>> segments = slic(img, n_segments=100, compactness=10)

增加紧凑性参数会产生更多方形区域:

>>> segments = slic(img, n_segments=100, compactness=20)

相关用法


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