Por que existe uma diferença entre o NDVI usando o Sentinel 2, no ArcMap e QGIS?

8

Eu tenho tentado calcular o NDVI para uma cena usando as bandas Sentinel 2 4 (vermelho) e 8 (NIR). Eu o fiz primeiro no ArcMap e depois no QGIS. Nos dois softwares, usei a calculadora raster e incluí a fórmula básica NDVI = (NIR-Red) / (NIR + Red).

O ArcMap me forneceu uma faixa de 0-9221 (isso varia com o alongamento aplicado), enquanto o QGIS me forneceu valores mais plausíveis de 0,0258 a 0,5255.

Li brevemente que o Sentinel 2 é uma refletância TOA e possui um fator de escala de 10000, que aparentemente pode ser encontrado no arquivo xml que é baixado com as imagens. Nunca encontrei esse fator de escala mencionado no arquivo xml que baixei.

Por que existe essa diferença? Como o cálculo está sendo feito no QGIS?

tg110
fonte
Como você calcula o NDVI, com uma calculadora raster ou alguma ferramenta / plugin? É óbvio que algo deu errado no cálculo do Arcmap. Você pode editar sua postagem para indicar exatamente como a calculou?
HDunn
@ HDunn - incluí detalhes como você sugeriu. Eu não usei nenhum plug-in, apenas a calculadora raster no ArcMap e QGIS.
Tg110
Tente forçar o Arcmap a tratá-los como flutuadores, em vez dos 8 / 16bit. para fazer isso, multiplique um dos argumentos por 1.0, observe o .0. Algo como ((NIR-Red) * 1.0) / (NIR + Red).
HDunn
@ HDunn- funcionou! mas o intervalo de valores no ArcMap -0.75468 a 0.877372 é muito diferente do intervalo que obtive usando o QGIS (0.0258 a 0.5255) Qual deles está correto? E por que existe essa diferença?
Tg110
O trecho é semelhante? tente calcular estatísticas, ou tente identificar um pixel individual em ambos os programas, deve ser o mesmo, ou apenas um dígito precisão arredondamento afastado
HDunn

Respostas:

3

O Arcmap é notório por manter o tipo de varredura e não tratar os valores como decimais / flutuação quando calculado a partir de rasters inteiros de 16 bits.

Para forçar o Arcmap a tratar o resultado do cálculo de varredura como uma flutuação, você deve multiplicar um dos argumentos por 1,0 ou simplesmente anexar um '.0' a qualquer número constante ou real da fórmula.

No seu caso (NIR-Red)*1.0/(NIR+Red)será suficiente.

HDunn
fonte
@ HDunn- apliquei o mesmo trecho e também calculei as estatísticas QGIS- Mínimo = -0,684, Máximo = 0,817, Média = 0,252, StdDev = 0,113 ArcMap- Min = -0,7546, Máximo = 0,87737, Média = 0,252, Média = 0,252, StdDev = 0,113 quase o mesmo. Eu me pergunto por que a ligeira diferença ainda.
Tg110
0

Você checou os histogramas iniciais das respectivas bandas que você está usando? É possível que cada software esteja interpretando diferentes valores sem dados que podem distorcer os resultados.

Alexander
fonte
@ Alexander- Então essa é outra pergunta que eu tinha. Os valores para a banda NIR no QGIS são 527-3234, mas no ArcMap é 0-9212. Não entendo como e por quê.
Tg110
Essa pode ser a fonte do seu problema. Ao visualizar o histograma, você saberá frequentemente o valor sem dados, porque ele aparece no início ou no final do histograma, geralmente com um grande número de pixels. O que você precisa fazer é um clipe de histograma - e recortar o no-dados valores-, em seguida, re-fazer seus índices e deixe-nos saber os resultados :)
Alexander
@ Alexander- Eu não sei como fazer um clipe de histograma. Como eu faria isso?
precisa saber é
hmmm- Eu só sei fazer isso em erdas, que é usando a função Rescale. No entanto, você já tentou fazer seu NDVI sem a calculadora de banda no Arcmap? verificar este link: desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/...
Alexander
basicamente, você pode redimensionar os histogramas na janela de análise de imagem (geralmente ela exclui nenhum dado por padrão) - verifique se as bandas corretas foram atribuídas acessando o menu de opções de análise de imagem. tente o seu ndvi depois e veja se funciona.
Alexander Alexander