skimage2.segmentation.slic#
- skimage2.segmentation.slic(image, n_segments=100, compactness=10.0, max_num_iter=10, sigma=0, spacing=None, 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)[source]#
Segments image using k-means clustering in Color-(x,y,z) space.
- Parameters:
- image(M, N[, P][, C]) ndarray
Input image. Can be 2D or 3D, and grayscale or multichannel (see
channel_axisparameter). Input image must either be NaN-free or the NaNâs must be masked out.- n_segmentsint, optional
The (approximate) number of labels in the segmented output image.
- compactnessfloat, optional
Balances color proximity and space proximity. Higher values give more weight to space proximity, making superpixel shapes more square/cubic. In SLICO mode, this is the initial compactness. This parameter depends strongly on image contrast and on the shapes of objects in the image. We recommend exploring possible values on a log scale, e.g., 0.01, 0.1, 1, 10, 100, before refining around a chosen value.
- max_num_iterint, optional
Maximum number of iterations of k-means.
- sigmafloat or array-like of floats, optional
Width of Gaussian smoothing kernel for pre-processing for each dimension of the image. The same sigma is applied to each dimension in case of a scalar value. Zero means no smoothing. Note that
sigmais automatically scaled if it is scalar and if a manual voxel spacing is provided (see Notes section). If sigma is array-like, its size must matchimageâs number of spatial dimensions.- spacingarray-like of floats, optional
The voxel spacing along each spatial dimension. By default,
slicassumes uniform spacing (same voxel resolution along each spatial dimension). This parameter controls the weights of the distances along the spatial dimensions during k-means clustering.- convert2labbool, optional
Whether the input should be converted to Lab colorspace prior to segmentation. The input image must be RGB. Highly recommended. This option defaults to
Truewhenchannel_axis` is not None *and* ``image.shape[-1] == 3.- enforce_connectivitybool, optional
Whether the generated segments are connected or not
- min_size_factorfloat, optional
Proportion of the minimum segment size to be removed with respect to the supposed segment size
`depth*width*height/n_segments`- max_size_factorfloat, optional
Proportion of the maximum connected segment size. A value of 3 works in most of the cases.
- slic_zerobool, optional
Run SLIC-zero, the zero-parameter mode of SLIC. [2]
- start_labelint, optional
The labelsâ index start. Should be 0 or 1.
Added in version 0.17:
start_labelwas introduced in 0.17- maskndarray, optional
If provided, superpixels are computed only where mask is True, and seed points are homogeneously distributed over the mask using a k-means clustering strategy. Mask number of dimensions must be equal to image number of spatial dimensions.
Added in version 0.17:
maskwas introduced in 0.17- channel_axisint or None, optional
If None, the image is assumed to be a grayscale (single channel) image. Otherwise, this parameter indicates which axis of the array corresponds to channels.
Added in version 0.19:
channel_axiswas added in 0.19.
- Returns:
- labels2D or 3D array
Integer mask indicating segment labels.
- Raises:
- ValueError
If
convert2labis set toTruebut the last array dimension is not of length 3.- ValueError
If
start_labelis not 0 or 1.- ValueError
If
imagecontains unmasked NaN values.- ValueError
If
imagecontains unmasked infinite values.- ValueError
If
imageis 2D butchannel_axisis -1 (the default).
Notes
If
sigma > 0, the image is smoothed using a Gaussian kernel prior to segmentation.If
sigmais scalar andspacingis provided, the kernel width is divided along each dimension by the spacing. For example, ifsigma=1andspacing=[5, 1, 1], the effectivesigmais[0.2, 1, 1]. This ensures sensible smoothing for anisotropic images.The image is rescaled to be in [0, 1] prior to processing (masked values are ignored).
Images of shape (M, N, 3) are interpreted as 2D RGB images by default. To interpret them as 3D with the last dimension having length 3, use
channel_axis=None.start_labelis introduced to handle the issue [4]. Label indexing starts at 1 by default.
References
[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
[3]Irving, Benjamin. âmaskSLIC: regional superpixel generation with application to local pathology characterisation in medical images.â, 2016, arXiv:1606.09518
Examples
>>> from _skimage2.segmentation import slic >>> from _skimage2.data import astronaut >>> img = astronaut() >>> segments = slic(img, n_segments=100, compactness=10)
Increasing the compactness parameter yields more square regions:
>>> segments = slic(img, n_segments=100, compactness=20)