segm_lsms {OTBsegm}R Documentation

Large-scale segmentation using Mean-Shift

Description

Applies the Mean-Shift segmentation algorithm to an image file or a SpatRaster. Suitable for large images

Usage

segm_lsms(
  image,
  otb,
  spatialr = 5L,
  ranger = 15,
  minsize = 100L,
  tilesize = 500L,
  mode = "vector",
  mask = NULL,
  ram = 256L
)

Arguments

image

path to raster, or SpatRaster

otb

output of link2GI::linkOTB()

spatialr

integer. Spatial radius of the neighborhood

ranger

range radius defining the radius (expressed in radiometry unit) in the multispectral space

minsize

integer. Minimum size of a region (in pixel unit) in segmentation. Smaller clusters will be merged to the neighboring cluster with the closest radiometry. If set to 0 no pruning is done

tilesize

integer. Size of the tiles during the tile-wise processing

mode

processing mode, either 'vector' or 'raster'. See details

mask

an optional raster used for masking the segmentation. Only pixels whose mask is strictly positive will be segmented

ram

integer. Available memory for processing (in MB)

Details

Mean-Shift is a region-based segmentation algorithm that groups pixels with similar characteristics. It's a non-parametric clustering technique that groups pixels based on spatial proximity and feature similarity (color, intensity). This method is particularly effective for preserving edges and defailt while simplifying textures in high-resolution images. Steps:

  1. Initialization: Each pixel is treated as a point in a multi-dimensional space (combining spatial and color features).

  2. Mean Shift Iterations: For each pixel, a search window moves toward the region with the highest data density (local maxima) by calculating the mean of neighboring pixels within the window.

  3. Convergence: The process repeats until the movement of the window becomes negligible, indicating convergence.

  4. Label Assignment: Pixels that converge to the same mode (local maxima) are grouped into the same region.

The most important parameters are:

The processing mode 'vector' will output a vector file, and process the input image piecewise. This allows performing segmentation of very large images. IN contrast, 'raster' mode will output a labeled raster, and it cannot handle large data. If mode is 'raster', all the 'vector_*' arguments are ignored.

Value

sf or SpatRaster

Examples

## Not run: 
## load packages
library(link2GI)
library(OTBsegm)
library(terra)

## load sample image
image_sr <- rast(system.file("raster/pnoa.tiff", package = "OTBsegm"))

## connect to OTB (change to your directory)
otblink <- link2GI::linkOTB(searchLocation = "C:/OTB/")

## apply segmentation
results_ms_sf <- segm_lsms(
    image = image_sr,
    otb   = otblink,
    spatialr = 5,
    ranger   = 25,
    minsize  = 10
)

plotRGB(image_sr)
plot(st_geometry(results_ms_sf), add = TRUE)

## End(Not run)

[Package OTBsegm version 0.1.0 Index]