Combine red, green, and blue color bands to make a composite GRaster
Source:R/compositeRGB.r
compositeRGB.Rd
This function takes as arguments three rasters typically representing red, green, and blue color bands, and returns a single raster with values based on their combination. Typically, this raster should be plotted in grayscale.
Usage
# S4 method for class 'GRaster'
compositeRGB(r, g = NULL, b = NULL, levels = 256, dither = FALSE)
Arguments
- r, g, b
Either:
One
GRaster
with one band each forr
,g
, orb
representing red, green, and blue color bands; orr
is singleGRaster
with 3 bands (R, G, and B bands), andg
andb
areNULL
.
- levels
Either a single value that is an integer, or a vector of integers: Number of levels of red, green, and blue intensities represented in
r
,g
, andb
. If a single value is supplied, it is assumed that all three have the same number of levels. If three values are supplied, then they correspond to the R, G, and B bands. The default is 256 (assume that R, G, and B rasters have values between 0 and 255).- dither
Logical: If
TRUE
, apply Floyd-Steinberg dithering. Default isFALSE
.
See also
plotRGB()
, terra::plotRGB()
, GRASS manual page for module r.composite
(see grassHelp("r.composite")
)
Examples
if (grassStarted()) {
# Example data
madElev <- fastData("madElev") # elevation raster
madLANDSAT <- fastData("madLANDSAT") # multi-layer raster
madRivers <- fastData("madRivers") # lines vector
# Convert SpatRaster to GRaster and SpatVector to GVector
elev <- fast(madElev)
rivers <- fast(madRivers)
landsat <- fast(madLANDSAT)
# Plot:
plot(elev)
plot(rivers, add = TRUE)
# Histograms:
hist(elev)
hist(landsat)
# Plot surface reflectance in RGB:
plotRGB(landsat, 3, 2, 1) # "natural" color
plotRGB(landsat, 4, 1, 2, stretch = "lin") # emphasize near-infrared (vegetation)
# Make composite map from RGB layers and plot in grayscale:
comp <- compositeRGB(r = landsat[[3]], g = landsat[[2]], b = landsat[[1]])
grays <- paste0("gray", 0:100)
plot(comp, col = grays)
}