Indices espectrales multiespectrales
Índices espectrales multiespectrales: del NDVI al BSI, sin recetas
Diecisiete índices, una sola lógica: aprovechar dónde la vegetación, el agua, la nieve, el suelo o las cicatrices de fuego separan sus firmas espectrales. Esta guía cubre las fórmulas, los rangos útiles, los errores típicos y cómo calcularlos sobre Landsat, Sentinel-2 o cualquier sensor multiespectral con el plugin Geomaticape para QGIS.
1. Por qué un cociente normalizado
Un índice espectral es, casi siempre, una resta dividida por una suma. Esa estructura matemática no es estética: hace tres cosas a la vez.
Primero, amplifica el contraste entre dos bandas donde la superficie de interés se comporta muy distinto. La vegetación sana absorbe casi toda la luz roja (clorofila) y refleja muy fuerte en el infrarrojo cercano (estructura celular del mesófilo). Restar las dos magnifica esa diferencia.
Segundo, normaliza por brillo. Una pendiente sombreada y una pendiente iluminada pueden tener reflectancias absolutas muy diferentes en cada banda, pero si el cociente entre bandas se preserva, el índice queda razonablemente estable. Por eso un NDVI de 0.7 en una ladera norte y otro 0.7 en una ladera sur dicen, al menos en primer orden, lo mismo.
Tercero, limita el rango. La forma \( (A-B)/(A+B) \) acota el resultado entre −1 y +1. Eso facilita comparar imágenes entre fechas, sensores y zonas distintas, siempre que estén en reflectancia (Surface Reflectance, SR).
Pre-requisito que casi nadie verifica: los índices solo son comparables si las imágenes están corregidas atmosféricamente. Aplicar NDVI sobre números digitales (DN) crudos o sobre Top-of-Atmosphere (TOA) genera valores que parecen razonables pero no son trazables entre fechas. Trabaja con productos SR (Landsat Collection 2 Level-2, Sentinel-2 L2A, MODIS MOD09).
2. Cómo se separan las superficies en el espectro
Antes de elegir un índice conviene tener clara la firma espectral típica de cada superficie. La regla informal es: cada superficie tiene un par de bandas donde "se delata", y el índice se construye explotando ese par.
Resumen práctico:
| Superficie | Refleja alto en… | Absorbe / refleja bajo en… | Índice típico |
|---|---|---|---|
| Vegetación sana | NIR | RED, BLUE | NDVI, EVI, SAVI |
| Vegetación seca / estresada | SWIR1, SWIR2 | NIR (cae) | NDMI, NBR |
| Agua | GREEN, BLUE | NIR, SWIR (absorbe casi todo) | NDWI, MNDWI |
| Nieve / hielo | VIS (todas), GREEN | SWIR1 (fuerte absorción) | NDSI |
| Suelo desnudo | SWIR1, RED | NIR (relativamente bajo) | BSI |
| Áreas quemadas | SWIR2 | NIR (carbón pierde estructura) | NBR, dNBR |
Con esa tabla en la cabeza, los 17 índices del plugin son combinaciones lógicas, no fórmulas que haya que memorizar.
El índice de referencia. Aprovecha la fuerte absorción de clorofila en el rojo y la alta reflectancia del NIR por dispersión en el mesófilo. Útil prácticamente en cualquier estudio de cobertura, fenología, biomasa relativa y deforestación.
Rango interpretativo (SR): agua y nubes < 0; suelo desnudo 0.05–0.20; vegetación rala 0.2–0.4; cultivos en crecimiento 0.4–0.6; bosque denso o cultivo en plenitud 0.6–0.85.
Limitación crítica: satura en biomasa alta. Por encima de NDVI ≈ 0.8 deja de discriminar diferencias reales de biomasa o LAI. En bosques tropicales la sensibilidad es prácticamente nula. También sobreestima en suelos oscuros y subestima sobre suelos claros.
Introduce un factor de ajuste de suelo \(L\) para reducir la sensibilidad al brillo del fondo. Pensado para zonas semiáridas y cultivos con cobertura parcial, donde el suelo aporta una fracción no despreciable a la señal por píxel.
Resuelve el problema del \(L\) fijo: el ajuste por suelo se calcula píxel a píxel a partir de la propia geometría de la señal. Útil cuando no se sabe a priori la cobertura vegetal de la escena (mosaicos heterogéneos, monitoreo de revegetación post-incendio o post-minería).
El precio es computacional: incluye una raíz cuadrada por píxel. En rasters grandes (Sentinel-2 tile completo, 10 m) la diferencia con SAVI puede notarse en tiempo de ejecución.
Diseñado para superar dos limitaciones del NDVI: la saturación en biomasa alta y el ruido residual atmosférico (aerosoles). El término con BLUE actúa como corrección de aerosoles; los coeficientes \(C_1=6\), \(C_2=7.5\) y \(L=1\) fueron calibrados para MODIS.
Versión simplificada de EVI sin la banda azul. Pensada para sensores que no la tienen o cuando la banda azul es ruidosa (sobre nubes finas, humo). Conserva buena parte del comportamiento anti-saturación del EVI a un costo en bandas. Recomendable cuando trabajas con CBERS-04A WPM o RapidEye, donde la calibración del azul puede ser problemática.
Sustituye RED por GREEN. El verde es más sensible a variaciones de concentración de clorofila en hojas ya bien desarrolladas (cuando el rojo ya saturó). Más útil que NDVI para discriminar nitrógeno foliar en cultivos como maíz o trigo en fases medias-tardías.
Razón simple, sin normalización. Correlaciona linealmente con contenido de clorofila en un rango más amplio que el GNDVI, lo que lo hace útil en agricultura de precisión cuando se busca una variable continua, no acotada, para regresiones. No tiene techo definido.
Aprovecha el "borde rojo" (705–740 nm), región donde la reflectancia sube abruptamente y es muy sensible a estrés temprano. Detecta deficiencias nutricionales o hídricas antes de que se vean en NDVI.
Detecta cuerpos de agua aprovechando que el agua refleja moderado en verde y prácticamente nada en NIR. Umbral típico: NDWI > 0 indica agua. Útil para delimitar lagunas, embalses, ríos anchos.
Falla previsible: confunde agua con superficies impermeables urbanas (asfalto, techos), porque el NIR cae también en construcciones. Para zonas urbanas usar siempre MNDWI.
Sustituye NIR por SWIR1. El SWIR penaliza más fuerte cualquier superficie no acuática (las construcciones reflejan SWIR mientras el agua lo absorbe casi por completo). Es el índice de agua de elección en zonas mixtas urbanas-naturales y para series temporales de cuerpos hídricos en cuencas con presión antrópica.
No detecta agua superficial: detecta humedad en la vegetación. SWIR1 es muy sensible al contenido hídrico foliar. NDMI alto = vegetación bien hidratada; valores bajos sostenidos en estación seca anticipan estrés y riesgo de incendio. Es el índice estándar para monitoreo de sequía vegetacional, complementario al NDVI.
Vegetación viva: NIR alto, SWIR2 bajo, NBR alto. Vegetación quemada: NIR cae (estructura destruida), SWIR2 sube (suelo expuesto y carbón), NBR baja. Usar siempre como diferencia pre-fuego menos post-fuego (\( \Delta\text{NBR} \)) para clasificar severidad según la escala USGS.
Tabla práctica de severidad (\( \Delta\text{NBR} \)): < 0.1 no quemado; 0.1–0.27 leve; 0.27–0.44 moderado-bajo; 0.44–0.66 moderado-alto; > 0.66 severo.
Variante que solo usa las dos bandas SWIR. Más sensible a la diferencia entre material quemado fresco y suelo desnudo, lo que la hace útil para monitoreo de recuperación a corto plazo y para discriminar áreas con humedad residual de áreas calcinadas. No reemplaza al NBR clásico, lo complementa.
La nieve refleja muy alto en visible y absorbe fuertemente en SWIR1; las nubes reflejan en ambas. Esa asimetría permite separarlas, problema clásico de detección satelital en alta montaña. Umbral operacional MODIS/Landsat: NDSI > 0.4 más NIR > 0.11 para evitar falsos positivos en sombras de agua.
En glaciares tropicales (Cordillera Blanca, Apolobamba, Vilcanota) NDSI sigue siendo el primer paso obligado para máscaras de hielo/nieve antes de aplicar clasificadores supervisados.
Combina las dos bandas que el suelo refleja fuerte (SWIR1, RED) contra las dos que refleja menos relativo a la vegetación (NIR, BLUE). Valores altos indican suelo expuesto. Útil para detectar deforestación reciente, áreas agrícolas en barbecho, expansión urbana sobre suelos rurales y degradación de tierras.
Diseñado para estimar fracción de cobertura vegetal cuando solo hay RGB (drones, cámaras visibles). El término BLUE ayuda a compensar dispersión atmosférica residual. No es comparable a NDVI: sin NIR, la sensibilidad fisiológica es marginal.
El más simple de todos: solo verde y rojo. Útil para detectar verdor en imágenes de drone RGB y como proxy crudo de biomasa en fenología fotográfica (cámaras phenocam). En aplicaciones serias de teledetección satelital queda obsoleto frente a NDVI; en drones agrícolas sin sensor multiespectral sigue siendo de uso diario.
12. Tabla comparativa rápida
| Índice | Bandas | Aplicación principal | Rango útil | Limitación clave |
|---|---|---|---|---|
| NDVI | NIR, RED | Vegetación general | 0.2–0.85 | Satura en bosque denso |
| SAVI | NIR, RED | Cobertura parcial / semiárido | 0.1–0.7 | L=0.5 es fijo |
| MSAVI | NIR, RED | Cobertura desconocida | 0.1–0.7 | Más costoso de computar |
| EVI | NIR, RED, BLUE | Biomasa alta, atmósfera | 0.0–1.0 | Coeficientes MODIS-tuned |
| EVI2 | NIR, RED | Sensores sin banda BLUE | 0.0–1.0 | Sin compensación atmosférica |
| GNDVI | NIR, GREEN | Nitrógeno, clorofila | 0.1–0.7 | Falla en suelos verdosos |
| GCI | NIR, GREEN | Clorofila absoluta | 0.5–10+ | Sin techo definido |
| NDREI | NIR, RED-EDGE | Estrés temprano | 0.1–0.5 | Depende de cuál RE elijas |
| NDWI | GREEN, NIR | Agua superficial | > 0 = agua | Confunde con urbano |
| MNDWI | GREEN, SWIR1 | Agua en zona urbana | > 0 = agua | Necesita SWIR |
| NDMI | NIR, SWIR1 | Humedad foliar | −0.2–0.6 | Confunde estrés con senescencia |
| NBR | NIR, SWIR2 | Áreas quemadas (dNBR) | −0.5–0.8 | Usar siempre como Δ pre-post |
| NBR2 | SWIR1, SWIR2 | Recuperación post-fuego | −0.2–0.5 | Complementa, no reemplaza NBR |
| NDSI | GREEN, SWIR1 | Nieve / hielo | > 0.4 = nieve | Sombras pueden simular nieve |
| BSI | SWIR1, RED, NIR, BLUE | Suelo desnudo, deforestación | −0.3–0.5 | Sensible a calibración atmosférica |
| VARI | GREEN, RED, BLUE | Drones RGB | −0.3–0.4 | Sin información NIR |
| NGRDI | GREEN, RED | Phenocams, drones | −0.2–0.3 | Proxy crudo de biomasa |
13. Errores comunes que arruinan resultados
Aplicar índices sobre productos TOA o DN crudos
Los rangos de interpretación están construidos sobre reflectancia de superficie. Si trabajas con Top-of-Atmosphere o números digitales, los valores se desplazan de forma no lineal entre escenas y ya no puedes comparar fechas. Verifica siempre la escala del producto: Sentinel-2 L2A viene escalado por 10000, Landsat C2L2 por 0.0000275 con offset −0.2.
Promediar índices entre sensores sin armonizar
NDVI Landsat 8 y NDVI Sentinel-2 NO son intercambiables sin corrección. Las funciones de respuesta espectral del rojo y NIR son distintas. Existen ecuaciones de armonización publicadas (HLS, Claverie et al., 2018) que conviene aplicar antes de unir series.
Asignar la banda equivocada al rol espectral
Es el error más banal y el más frecuente. En Landsat 8 SR el orden suele ser B2-B3-B4-B5-B6-B7 = Blue-Green-Red-NIR-SWIR1-SWIR2, pero si descargas un recorte ya procesado, las bandas pueden estar reordenadas. Confirma siempre la metadata antes de calcular.
Interpretar valores absolutos sin máscara de nubes
Un solo píxel de cirrus puede deformar histogramas. Aplica siempre la máscara de calidad (SCL en Sentinel-2 L2A, QA_PIXEL en Landsat C2L2) antes de extraer estadísticas zonales.
14. Cómo lo calculas en Geomaticape
El plugin Geomaticape v1.5 resuelve el problema central del cálculo de índices en QGIS: que cada sensor tiene un orden de bandas distinto. En vez de hardcodear "NIR = banda 4", el usuario asigna manualmente qué número de banda del raster cumple cada rol espectral (BLUE, GREEN, RED, RED-EDGE, NIR, SWIR1, SWIR2) y solo rellena las que el índice elegido necesita.
Configuración para Landsat 8 SR (recorte de 6 bandas B2-B7)
BLUE = 1 (B2)
GREEN = 2 (B3)
RED = 3 (B4)
NIR = 4 (B5)
SWIR1 = 5 (B6)
SWIR2 = 6 (B7)
RED-EDGE = (vacío, Landsat 8 no tiene)
Con esa asignación puedes correr 16 de los 17 índices. Solo NDREI queda fuera, porque Landsat no incluye red-edge.
Configuración para Sentinel-2 L2A
BLUE = banda B2 (490 nm, 10 m)
GREEN = banda B3 (560 nm, 10 m)
RED = banda B4 (665 nm, 10 m)
RED-EDGE = banda B5 (705 nm, 20 m) ← recomendado para NDREI
NIR = banda B8 (842 nm, 10 m)
SWIR1 = banda B11 (1610 nm, 20 m)
SWIR2 = banda B12 (2200 nm, 20 m)
Importante: si tu raster apila bandas de distinta resolución (10 m + 20 m), debes resamplear primero a una resolución común. El plugin asume que todas las bandas ya están alineadas y al mismo tamaño de píxel.
Configuración para PlanetScope (4 bandas)
BLUE = 1
GREEN = 2
RED = 3
NIR = 4
Con PlanetScope tienes acceso a NDVI, SAVI, MSAVI, EVI2, GNDVI, GCI, NDWI (McFeeters), VARI y NGRDI. SWIR no existe en PlanetScope, así que NDMI, NBR, MNDWI, NDSI y BSI quedan descartados.
Salida del plugin
Geomaticape produce un GeoTIFF de una sola banda en Float32 con compresión LZW. Conserva CRS y georreferencia de la imagen de entrada. Eso facilita encadenar el resultado en flujos posteriores: zonal statistics, clasificación supervisada, álgebra de mapas para construir \( \Delta \)NBR pre/post-fuego, o exportación a Google Earth Engine.
Flujo recomendado
- Validar que la imagen está en reflectancia de superficie y aplicar factores de escala.
- Aplicar máscara de calidad (nubes, sombras, agua según el caso).
- Si trabajas con Sentinel-2 mezclando 10 m y 20 m, resamplear todo a la resolución común.
- Configurar los roles espectrales en Geomaticape según el sensor.
- Calcular el índice y guardarlo en el proyecto.
- Para análisis temporal (fenología, dNBR, sequía), repetir para cada fecha y cargar como serie.
Geomaticape v1.5 para QGIS
17 índices espectrales sobre cualquier sensor multiespectral. Asignación libre de bandas. Salida GeoTIFF lista para análisis posterior.