Segmentation Assessment Metrics (segmetric)

CRAN status Software License Software Life Cycle

The segmetric is an open source package that provides a set of metrics for analyzing and evaluating geospatial segmentations. It implements 28 supervised metrics used in literature for spatial segmentation assessment (see References below).


# install via CRAN 

Development version

To install the development version of segmetric, run the following commands:

# load necessary libraries



Spatial datasets can be loaded using sf objects. To create a segmetric object, use function sm_read():


# load example datasets
data("sample_ref_sf", package = "segmetric")
data("sample_seg_sf", package = "segmetric")

# create segmetric object
m <- sm_read(ref_sf = sample_ref_sf, seg_sf = sample_seg_sf)

Plot your data using plot() command:


Segmentation metrics can be computed by function sm_compute(). Use summary() to obtain an overall metric (mean or weighted mean).

# compute AFI metric and summarize it
sm_compute(m, "AFI") %>% summary()
#> [1] -0.007097452

Make multiple calls to compute more other metrics:

# compute OS1, F_measure, and US2 metrics
m <- 
  sm_compute(m, "OS1") %>%
  sm_compute("F_measure") %>%

# summarize them
#>        OS1  F_measure        US2 
#> 0.17341468 0.84728616 0.08617454

To see all supported metrics, type ?metric_functions or run:

# list all supported metrics
#>  [1] "AFI"       "D_index"   "Dice"      "E"         "ED3"       "F_measure"
#>  [7] "Fitness"   "IoU"       "M"         "OI2"       "OMerging"  "OS1"      
#> [13] "OS2"       "OS3"       "PI"        "precision" "qLoc"      "QR"       
#> [19] "RAsub"     "RAsuper"   "recall"    "RPsub"     "RPsuper"   "SimSize"  
#> [25] "UMerging"  "US1"       "US2"       "US3"

Getting Help

A detailed documentation with examples on how to use each function inside segmetric package can be obtained by typing ?segmetric in R console.

How to contribute?

The segmetric package was implemented based on an extensible architecture. Feel free to contribute by implementing new metrics functions.

  1. Make a project fork.
  2. Edit file R/metric-funs.R implementing the new metric.
  3. Register your metric in .db_registry() function at R/db.R file using sm_reg_metric().
  4. Make a Pull Request on the branch dev.


This research was supported by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation program (Grant agreement No 677140 MIDLAND).


  1. New phytologist, 11(2), pp.37-50.
  1. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 658-666.