Setup

En teoria solo con el paquete raster es suficiente, pero puede ser necesario usar otros paquetes para paralelizar, segun el el tamaño de los archivos.

Leemos las bandas que estan guardadas en el directorio IMG de mi proyecto (ejemplo con un archivo de micasense) que tiene bandas separas, que en este caso las entro individualmente.

bb <- raster("./IMG/blue.tif")
bg <- raster("./IMG/green.tif")
br <- raster("./IMG/red.tif")
bre <- raster("./IMG/rededge.tif")
bnir <- raster("./IMG/nir.tif")

Funciones para indices de vegetacion

b = banda azul g = banda verde r = banda roja re = banda red edge nir = banda infrarrojo cercano

Indice Verde Normalizado NDVI

NDVI <- function(nir,r){
   vi= (nir-r)/(nir+r)
   vi
}

NDVI con banda verde

NDVIg <- function(nir,g){
   vi= (nir-g)/(nir+g)
   vi
}

Diferencia normalizada verde-rojo

NGRDI <- function(g,r){
   vi= (g-r)/(g+r)
   vi
}

Indice de Clorofila basado en verde

CL <- function(nir,g){
   vi= (nir/g)-1
   vi
}

Indice de Brillo

BI <- function(g,r,nir){
   vi= (nir+r+g)^(1/3) 
   vi
}

Indice de Coloracion

CI <- function(nir,g){
   vi= (nir-g)/nir
   vi
}

Indice verde mejorado de dos bandas

EVI2 <- function(nir,r){
   vi= 2.5 *(nir-r)/(nir+2.4*r+1)
   vi
}

Indice de clorofila basado en red-edge

CLre <- function(nir,re){
   vi= (nir/re)-1
   vi
}

Helpers

ploteo simple con paleta en escala de gris

pgris <- function(VI){
  plot(VI,
    col=grey(0:255/255),  #rampa de grises
    legend=FALSE,
    main= quote(VI),
    axes=FALSE)
  }

Como exportar un tiff

#writeRaster(r, filename=file.path(tmp, "test.tif"), format="GTiff", overwrite=TRUE)

Algunas pruebas

CL

micaCL <- CL(bnir,bg)
pgris(micaCL)

writeRaster(micaCL, filename="./IMG/micaCL.tif", format="GTiff", overwrite=TRUE)

BI

micaBI <- BI(bg,br,bnir)
pgris(micaBI)

writeRaster(micaBI, filename="./IMG/micaBI.tif", format="GTiff", overwrite=TRUE)

CLre

micaCLre <- CL(bnir,bre)
pgris(micaCLre)

writeRaster(micaCLre, filename="./IMG/micaCLre.tif", format="GTiff", overwrite=TRUE)