ootb_obia: Out-of-the-box object-based image analysis of canopy...

View source: R/ootb_obia.R

ootb_obiaR Documentation

Out-of-the-box object-based image analysis of canopy photographs

Description

Out-of-the-box version of methods first presented in \insertCiteDiaz2015;textualrcaiman.

Usage

ootb_obia(
  caim,
  z = NULL,
  a = NULL,
  m = NULL,
  sky_blue = NULL,
  w_red = 0,
  gamma = 2.2
)

Arguments

caim

SpatRaster. The output of read_caim() or read_caim_raw().

z

SpatRaster built with zenith_image().

a

SpatRaster built with azimuth_image().

m

SpatRaster. Default (NULL) is the equivalent to enter !is.na(z) for hemispherical photography, or enter !is.na(caim$Red) for restricted view photography.

sky_blue

color. Is the target_color argument to be passed to membership_to_color(). Default (NULL) is the equivalent to enter sRGB(0.1, 0.4, 0.8)–the HEX color code is #1A66CC, it can be entered into a search engine (such as Mozilla Firefox) to see a color swatch.

w_red

Numeric vector of length one. Weight of the red channel. A single layer image is calculated as a weighted average of the blue and red channels. This layer is used as lightness information. The weight of the blue is the complement of w_red.

gamma

Numeric vector of length one. This is for applying a gamma back correction to the lightness information (see Details and argument w_red).

Details

This function is a hard-coded version of a pipeline that combines these main functions mask_sunlit_canopy(), enhance_caim(), polar_qtree()/qtree(), and obia(). The code can be easily inspected by calling ootb_obia –no parenthesis. Advanced users can use that code as a template.

Pixels from the synthetic layer returned by obia() that lay between 0 and 1 are assigned to the class plant only if they comply with the following conditions:

  • Their values are equal to 0 after defuzzify() with a sky grid segmentation of 10 degrees.

  • Their values are equal to 0 after apply_thr() with a threshold computed with thr_isodata().

  • They are not exclusively surrounded by sky pixels.

Use the default values of z and a to process restricted view photographs.

If you use this function in your research, please cite \insertCiteDiaz2015;textualrcaiman or \insertCiteDiaz2023;textualrcaiman in addition to this package (⁠citation("rcaiman"⁠)).

Value

An object of class SpatRaster with values 0 and 1.

References

\insertAllCited

See Also

Other Binarization Functions: apply_thr(), obia(), ootb_mblt(), regional_thresholding(), rem_isolated_black_pixels(), thr_isodata(), thr_mblt()

Examples

## Not run: 

# =====================================
# Hemispherical Photo from a Smartphone
# =====================================

path <- system.file("external/APC_0581.jpg", package = "rcaiman")
caim <- read_caim(path) %>% normalize_minmax()
z <- zenith_image(2132/2, c(0.7836, 0.1512, -0.1558))
a <- azimuth_image(z)
zenith_colrow <- c(1063, 771)/2
caim <- expand_noncircular(caim, z, zenith_colrow) %>% normalize_minmax()
m <- !is.na(caim$Red) & !is.na(z)
caim[!m] <- 0

bin <- ootb_obia(caim, z, a)
plot(bin)

# ============================
# Restricted View Canopy Photo
# ============================

path <- system.file("external/APC_0020.jpg", package = "rcaiman")
caim <- read_caim(path) %>% normalize_minmax()

bin <- ootb_obia(caim)
plot(bin)

## End(Not run)

GastonMauroDiaz/rcaiman documentation built on April 14, 2025, 9:39 a.m.