AI-generated Key Takeaways
-
Applies the Simple Non-Iterative Clustering (SNIC) algorithm to generate superpixels from an image.
-
Outputs an image containing cluster IDs and per-cluster band averages.
-
Algorithm parameters like
size
andcompactness
impact the resulting superpixel shapes and sizes and may require adjustments. -
If no seed locations are provided, the algorithm generates them based on a grid defined by the
size
parameter. -
Superpixel clustering is sensitive to pixel scale and zoom level during interactive visualization.
Usage | Returns |
---|---|
ee.Algorithms.Image.Segmentation.SNIC(image, size, compactness, connectivity, neighborhoodSize, seeds) | Image |
Argument | Type | Details |
---|---|---|
image | Image | The input image for clustering. |
size | Integer, default: 5 | The superpixel seed location spacing, in pixels. If 'seeds' image is provided, no grid is produced. |
compactness | Float, default: 1 | Compactness factor. Larger values cause clusters to be more compact (square). Setting this to 0 disables spatial distance weighting. |
connectivity | Integer, default: 8 | Connectivity. Either 4 or 8. |
neighborhoodSize | Integer, default: null | Tile neighborhood size (to avoid tile boundary artifacts). Defaults to 2 * size. |
seeds | Image, default: null | If provided, any non-zero valued pixels are used as seed locations. Pixels that touch (as specified by 'connectivity') are considered to belong to the same cluster. |
Examples
Code Editor (JavaScript)
// Note that the compactness and size parameters can have a significant impact // on the result. They must be adjusted to meet image-specific characteristics // and patterns, typically through trial. Pixel scale (map zoom level) is also // important to consider. When exploring interactively through map tile // visualization, the segmentation result it dependent on zoom level. If you // need to evaluate the result at a specific scale, call .reproject() on the // result, but do so with caution because it overrides the default scaling // behavior that makes tile computation fast and efficient. // Load a NAIP image for a neighborhood in Las Vegas. var naip = ee.Image('USDA/NAIP/DOQQ/m_3611554_sw_11_1_20170613'); // Apply the SNIC algorithm to the image. var snic = ee.Algorithms.Image.Segmentation.SNIC({ image: naip, size: 30, compactness: 0.1, connectivity: 8, }); // Display the original NAIP image as RGB. // Lock map zoom to maintain the desired scale of the segmentation computation. Map.setLocked(false, 18, 18); Map.setCenter(-115.32053, 36.182016, 18); Map.addLayer(naip, null, 'NAIP RGB'); // Display the clusters. Map.addLayer(snic.randomVisualizer(), null, 'Clusters'); // Display the RGB cluster means. var visParams = { bands: ['R_mean', 'G_mean', 'B_mean'], min: 0, max: 255 }; Map.addLayer(snic, visParams, 'RGB cluster means');
import ee import geemap.core as geemap
Colab (Python)
# Note that the compactness and size parameters can have a significant impact # on the result. They must be adjusted to meet image-specific characteristics # and patterns, typically through trial. Pixel scale (map zoom level) is also # important to consider. When exploring interactively through map tile # visualization, the segmentation result it dependent on zoom level. If you # need to evaluate the result at a specific scale, call .reproject() on the # result, but do so with caution because it overrides the default scaling # behavior that makes tile computation fast and efficient. # Load a NAIP image for a neighborhood in Las Vegas. naip = ee.Image('USDA/NAIP/DOQQ/m_3611554_sw_11_1_20170613') # Apply the SNIC algorithm to the image. snic = ee.Algorithms.Image.Segmentation.SNIC( image=naip, size=30, compactness=0.1, connectivity=8 ) # Display the original NAIP image as RGB. m = geemap.Map() m.set_center(-115.32053, 36.182016, 18) m.add_layer(naip, None, 'NAIP RGB') # Display the clusters. m.add_layer(snic.randomVisualizer(), None, 'Clusters') # Display the RGB cluster means. vis_params = {'bands': ['R_mean', 'G_mean', 'B_mean'], 'min': 0, 'max': 255} m.add_layer(snic, vis_params, 'RGB cluster means') m