The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Type: Package
Title: Raster Thresholding Using Otsu“s Algorithm
Version: 0.1.0
Description: Provides tools to process raster data and apply Otsu-based thresholding for burned area mapping and other image segmentation tasks. Implements the method described by Otsu (1979) <doi:10.1109/TSMC.1979.4310076>, a data-driven technique that determines an optimal threshold by maximizing the inter-class variance of pixel intensities. It includes validation functions to assess segmentation accuracy against reference data using standard accuracy metrics such as precision, recall, and F1-score.
URL: https://github.com/olgaviedma/OtsuSeg
Encoding: UTF-8
License: GPL-3
Depends: R (≥ 3.0.0)
Imports: raster, zoo, sf
Suggests: testthat (≥ 3.0.0), curl
RoxygenNote: 7.3.2
NeedsCompilation: no
Packaged: 2025-05-08 16:42:05 UTC; Olga.Viedma
Maintainer: Olga Viedma <olga.viedma@uclm.es>
BugReports: https://github.com/olgaviedma/OtsuSeg/issues
Config/testthat/edition: 3
Author: Hammadi, Achour [aut], Olga Viedma [ctb, cre], Zina Soltani [ctb], Imene Habibi [ctb], Wahbi Jaouadi [ctb]
Repository: CRAN
Date/Publication: 2025-05-12 08:20:13 UTC

Quantitative Comparison of Binary Shape with Reference Shape

Description

This function calculates various metrics (e.g., Precision, Recall, F1 Score) to quantitatively compare a binary raster (in shapefile format) with a reference vector shape. It provides insights into how well the detected (binary) shape matches the reference shape.

Usage

Quality_control(binary_shape, reference_shape, metrics = NULL)

Arguments

binary_shape

A shapefile (sf object) representing the binary raster (e.g., burn scars).

reference_shape

A shapefile (sf object) representing the reference vector shape (e.g., actual burn scars).

metrics

A vector of metric names to calculate. If NULL, all available metrics are computed. Available metrics are: - "Precision": The proportion of the detected shape that correctly overlaps the reference. - "Recall": The proportion of the reference shape that is correctly detected. - "F1_Score": The harmonic mean of Precision and Recall, balancing both. - "IoU" (Intersection over Union): The ratio of the intersection area to the union area. - "OS" (Omission Error): The proportion of the reference shape that was missed (1 - Recall). - "US" (Commission Error): The proportion of the detected shape that is false (1 - Precision). - "E" (Overall Error): The combined error of omission and commission. - "SimSize" (Size Similarity): The relative similarity in size between the two shapes. - "Loc" (Location Error): The Euclidean distance between the centroids of the two shapes. - "AFI" (Area Fit Index): The ratio of the intersection area to the difference between total areas. Default is NULL, which computes all metrics.

Value

A data frame containing the computed metrics and their values.

Examples


library(sf)
  # Create a simple binary shape (square)
  binary_shape <- st_as_sf(st_sfc(st_polygon(list(rbind(
    c(0, 0), c(1, 0), c(1, 1), c(0, 1), c(0, 0)
  )))))

  # Create a reference shape (slightly shifted square)
  reference_shape <- st_as_sf(st_sfc(st_polygon(list(rbind(
    c(0.1, 0.1), c(1.1, 0.1), c(1.1, 1.1), c(0.1, 1.1), c(0.1, 0.1)
  )))))

  # Apply Quality Control
  result <- Quality_control(binary_shape, reference_shape)
  print(result)


Binarize a Raster Using Otsu's Thresholding (with Inter-Class and Intra-Class Variance)

Description

This function computes deltaNBR (difference between post-fire and pre-fire NBR), rescales it, applies a smoothed histogram, and uses Otsu's thresholding to create a binary raster representing burn scars. It also generates and saves plots of the smoothed histogram, inter-class variance curve, and the inter-class and intra-class variance curves on separate plots.

Usage

binarize_raster(
  x,
  y,
  output_shapefile = TRUE,
  shapefile_path = "binary_raster.shp"
)

Arguments

x

RasterLayer. A raster layer object representing pre-fire NBR (e.g., 'raster::RasterLayer').

y

RasterLayer. A raster layer object representing post-fire NBR (e.g., 'raster::RasterLayer').

output_shapefile

Logical. If TRUE, saves the binary raster as a shapefile. Default is TRUE.

shapefile_path

Character. Path to save the shapefile. Used only if output_shapefile is TRUE.

Value

A list containing:

best_threshold

Numeric. The computed Otsu threshold value.

area_hectares

Numeric. The estimated burned area in hectares.

binary_raster_smoothed

RasterLayer. The binary raster created using the Otsu threshold.

binary_shapefile

sf object. The binary shapefile created, if output_shapefile is TRUE.

shapefile_path

Character. Path where the shapefile was saved, if output_shapefile is TRUE.

Examples


#For CRAN checks, a temporary directory is used to avoid leaving files.
#For permanent use, specify a path like "results/binary_raster.shp"
  pre_fire <- get_external_data("NBRpre.tif", load = TRUE)
  post_fire <- get_external_data("NBRpost.tif", load = TRUE)
  shapefile_path <- file.path(tempdir(), "binary_raster.shp")
  result <- binarize_raster(pre_fire, post_fire, shapefile_path = shapefile_path)
  print(result$area_hectares)
  # Clean up (optional)
  unlink(list.files(tempdir(), pattern = "binary_raster\\.(shp|shx|dbf|prj)$", full.names = TRUE))


Download and load example data for OtsuSeg

Description

Downloads a ZIP file with example rasters and shapefiles from GitHub releases and optionally loads a specific file.

Usage

get_external_data(filename = NULL, path = tempdir(), load = FALSE)

Arguments

filename

Optional. The name of the file to return (after extraction).

path

Local directory to download and extract files. Default is a temp folder.

load

Logical. If TRUE, returns a loaded object (RasterLayer for .tif, sf for .shp). Default is FALSE.

Value

File path or loaded object if 'load = TRUE'.

Examples


# Download example data and list contents
data_dir <- get_external_data(path = tempdir())
list.files(data_dir)

# Load a specific raster file (.tif)
pre_fire <- get_external_data("NBRpre.tif", path = tempdir(), load = TRUE)
print(pre_fire)

# Load a specific shapefile (.shp)
shape_data <- get_external_data("shapefile_reference.shp", path = tempdir(), load = TRUE)
print(shape_data)



Otsu's Thresholding with Smoothed Histogram

Description

This is an internal function that applies Otsu's thresholding to a smoothed histogram to determine the optimal threshold for image segmentation. It is not intended for direct use by package users.

Usage

otsu_threshold_smoothed(hist_vals, mids)

Arguments

hist_vals

A numeric vector of histogram counts.

mids

A numeric vector of histogram bin midpoints.

Value

The optimal threshold value.

Examples


  hist_vals <- hist(rnorm(1000), plot = FALSE)$counts
  mids <- hist(rnorm(1000), plot = FALSE)$mids
  threshold <- otsu_threshold_smoothed(hist_vals, mids)
  print(threshold)


Smooth Histogram Data

Description

This is an internal function that applies a moving average filter to smooth a histogram. It is not intended for direct use by package users.

Usage

smooth_histogram(hist_counts, window_size = 5)

Arguments

hist_counts

A numeric vector of histogram bin counts.

window_size

An integer specifying the smoothing window size (default is 5).

Value

A numeric vector of smoothed histogram counts.

Examples


  raw_counts <- hist(rnorm(1000), plot = FALSE)$counts
  smoothed <- smooth_histogram(raw_counts)
  plot(smoothed, type = "l", col = "blue")

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.