slic

slic

skimage.segmentation.slic(image, n_segments=100, compactness=10.0, max_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) [source]

Segments image using k-means clustering in Color-(x,y,z) space.

Parameters:

image : 2D, 3D or 4D ndarray

Input image, which can be 2D or 3D, and grayscale or multichannel (see multichannel parameter).

n_segments : int, optional

The (approximate) number of labels in the segmented output image.

compactness : float, 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_iter : int, optional

Maximum number of iterations of k-means.

sigma : float or (3,) 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 sigma is automatically scaled if it is scalar and a manual voxel spacing is provided (see Notes section).

spacing : (3,) array-like of floats, optional

The voxel spacing along each image dimension. By default, slic assumes uniform spacing (same voxel resolution along z, y and x). This parameter controls the weights of the distances along z, y, and x during k-means clustering.

multichannel : bool, optional

Whether the last axis of the image is to be interpreted as multiple channels or another spatial dimension.

convert2lab : bool, 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 True when multichannel=True and image.shape[-1] == 3.

enforce_connectivity: bool, optional

Whether the generated segments are connected or not

min_size_factor: float, optional

Proportion of the minimum segment size to be removed with respect to the supposed segment size `depth*width*height/n_segments`

max_size_factor: float, optional

Proportion of the maximum connected segment size. A value of 3 works in most of the cases.

slic_zero: bool, optional

Run SLIC-zero, the zero-parameter mode of SLIC. [R351]

Returns:

labels : 2D or 3D array

Integer mask indicating segment labels.

Raises:

ValueError

If convert2lab is set to True but the last array dimension is not of length 3.

Notes

  • If sigma > 0, the image is smoothed using a Gaussian kernel prior to segmentation.
  • If sigma is scalar and spacing is provided, the kernel width is divided along each dimension by the spacing. For example, if sigma=1 and spacing=[5, 1, 1], the effective sigma is [0.2, 1, 1]. This ensures sensible smoothing for anisotropic images.
  • The image is rescaled to be in [0, 1] prior to processing.
  • 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 multichannel=False.

References

[R350] 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.
[R351] (1, 2) http://ivrg.epfl.ch/research/superpixels#SLICO

Examples

>>> from skimage.segmentation import slic
>>> from skimage.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)
doc_scikit_image
2017-01-12 17:23:32
Comments
Leave a Comment

Please login to continue.