¿Por qué hay una diferencia entre NDVI usando Sentinel 2, en ArcMap y QGIS?

8

He estado tratando de calcular el NDVI para una escena usando Sentinel 2 bandas 4 (rojo) y 8 (NIR). Primero lo hice en ArcMap y luego en QGIS. En ambos softwares, utilicé la calculadora ráster e incluí la fórmula básica de NDVI = (NIR-Red) / (NIR + Red).

ArcMap me dio un rango de 0-9221 (esto varía con el estiramiento aplicado) mientras que QGIS me dio valores más plausibles de 0.0258-0.5255.

He leído brevemente que Sentinel 2 es una reflectancia TOA y tiene un factor de escala de 10000, que aparentemente se puede encontrar en el archivo xml que se descarga con las imágenes. Nunca encontré este factor de escala mencionado en el archivo xml que descargué.

¿Por qué hay esta diferencia? ¿Cómo se realiza el cálculo en QGIS?

tg110
fuente
¿Cómo se calcula el NDVI, con una calculadora ráster o alguna herramienta / complemento? Es obvio que algo salió mal en el cálculo de Arcmap, ¿puede editar su publicación para indicar exactamente cómo la calculó?
HDunn
@ HDunn: he incluido detalles como usted sugirió. No utilicé ningún complemento, solo la calculadora ráster en ArcMap y QGIS.
tg110
Intenta forzar a Arcmap a tratarlos como flotantes, en lugar de los 8/16 bits. para hacer eso, multiplique uno de los argumentos por 1.0, observe el .0. Algo así como ((NIR-Red) * 1.0) / (NIR + Red).
HDunn
@ HDunn- funcionó! pero el rango de valores en ArcMap -0.75468 a 0.877372 es muy diferente del rango que obtuve usando QGIS (0.0258 a 0.5255) ¿Cuál es el correcto? ¿Y por qué hay esta diferencia?
tg110
¿El estiramiento es similar? intente calcular estadísticas, o intente identificar un píxel individual en ambos programas, debe ser el mismo, o solo un dígito de redondeo de precisión
HDunn

Respuestas:

3

Arcmap es conocido por retener el tipo de ráster y no tratar los valores como decimales / flotantes cuando se calcula a partir de rásteres enteros de 16 bits.

Para forzar a Arcmap a tratar el resultado del cálculo de ráster como flotante, debe multiplicar uno de los argumentos por 1.0, o simplemente agregar un '.0' a cualquier número constante o real en la fórmula.

En su caso (NIR-Red)*1.0/(NIR+Red)será suficiente.

HDunn
fuente
@ HDunn- Apliqué el mismo estiramiento y también calculé estadísticas QGIS- Mínimo = -0.684, Máximo = 0.817, Promedio = 0.252, StdDev = 0.113 ArcMap- Mín = -0.7546, Máx = 0.87737, Promedio = 0.252, StdDev = 0.113 Quiero decir casi lo mismo. Me pregunto por qué la ligera diferencia todavía.
tg110
0

¿Verificó los histogramas iniciales de las bandas respectivas que está utilizando? Es posible que cada software esté interpretando diferentes valores sin datos que pueden sesgar los resultados ...

Alejandro
fuente
@ Alexander- Entonces esa es otra pregunta que tuve. Los valores para la banda NIR en QGIS son 527-3234, pero en ArcMap es 0-9212. No entiendo cómo y por qué.
tg110
Esta podría ser la fuente de su problema. Cuando vea el histograma, conocerá su valor sin datos a menudo porque aparece al principio o al final de su histograma, a menudo con una gran cantidad de píxeles. Lo que debe hacer es un clip de histograma, y ​​recortar los valores sin datos, luego rehacer sus índices y hacernos saber sus resultados :)
Alexander
@ Alexander- No sé cómo hacer un clip de histograma. ¿Como podría hacerlo?
tg110
hmmm: solo sé cómo hacerlo en erdas, que es mediante el uso de la función de reescalado. Sin embargo, ¿alguna vez intentaste hacer tu NDVI sin la calculadora de banda en Arcmap? consulte este enlace: desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/…
Alexander
básicamente, puede reescalar los histogramas en la ventana de análisis de imagen (a menudo excluirá la ausencia de datos por defecto); asegúrese de tener las bandas correctas asignadas al ingresar al menú de opciones de análisis de imagen. pruebe su ndvi luego y vea si funciona.
Alexander