Calculate lambda REMP (Red-Edge Minimum Point), the wavelength at which the first derivative of reflectance crosses zero within a defined search range.
Usage
hsi_calc_remp(
x,
search_range = c(660, 680),
index_name = NULL,
filename = "",
overwrite = FALSE,
...
)Arguments
- x
A
SpatRasterwith the first derivative of reflectance. Compute withhsi_smooth_savgol(x, m = 1).- search_range
Numeric vector of length 2. Wavelength range in nm to search for the red-edge minimum point. Default
c(660, 680).- index_name
Character. Name for the output layer. Default
NULL.- filename
Character. Output filename. Default
""keeps result in memory.- overwrite
Logical. Overwrite existing file. Default
FALSE.- ...
Additional arguments passed to
terra::writeRaster().
Value
A SpatRaster with lambdaREMP values (wavelength in nm).
Details
Lambda REMP is the inflection point where reflectance transitions from decreasing to increasing — typically between 660–680 nm — and is sensitive to chlorophyll-a concentration.
The algorithm:
Subsets the derivative raster to
search_range.Identifies zero-crossings using
gsignal::zerocrossing().Uses linear interpolation to find the exact wavelength where the derivative equals zero.
Falls back to the wavelength nearest zero if no crossing is found.
References
Ghanbari, H., Zilkey, D.R., Gregory-Eaves, I., Antoniades, D., 2023. A new index for the rapid generation of chlorophyll time series from hyperspectral imaging of sediment cores. Limnology and Oceanography: Methods 21, 703-717. doi:10.1002/lom3.10576
See also
hsi_smooth_savgol() for computing the derivative input,
hsi_subset_range() for wavelength range extraction.
Other HSI Transformations:
hsi_apply_mnf(),
hsi_calc_difference(),
hsi_calc_mnf(),
hsi_calc_ndi(),
hsi_calc_raba(),
hsi_calc_rabd(),
hsi_calc_ratio(),
hsi_calc_rcv(),
hsi_calc_reflectance(),
hsi_calc_rmean(),
hsi_calc_rmedian(),
hsi_calc_rsd(),
hsi_calc_stretch(),
hsi_destripe(),
hsi_remove_continuum(),
hsi_smooth_median(),
hsi_smooth_savgol(),
hsi_tiled(),
hsi_write_scaled()
Examples
if (FALSE) { # \dontrun{
x <- terra::rast("REFLECTANCE_testdata.tif")
x_deriv <- hsi_smooth_savgol(x, m = 1)
x_remp <- hsi_calc_remp(x_deriv)
x_remp <- hsi_calc_remp(x_deriv, search_range = c(665, 690))
x_remp <- hsi_calc_remp(
x_deriv,
index_name = "remp",
filename = "output_remp.tif",
overwrite = TRUE
)
} # }