6.5. Índices espectrais obtidos a partir de imagens

Os elementos presentes na cobertura da terra possuem assinaturas espectrais características, devido a suas propriedades físicas e da interação delas com a radiação eletromagnética. Entretanto, efeitos ligados à geometria de iluminação, de visada e ambientais também podem alterar essas interações, de modo que as assinaturas espectrais podem dar indícios de diferentes processos, como estados fitossanitário da vegetação, crescimento urbano, áreas queimadas, entre outros [85]. Para ressaltar essas assinaturas, bem como para reduzir para reduzir a dimensionalidade dos dados, realçar a resposta espectral da vegetação com relação a do solo, dentre outras funcionalidades foram gerados os índices espectrais. Os índices espectrais foram idealizados a partir da resposta espectral característica da vegetação verde, combinando a baixa refletância nos comprimentos de onda do visível com a alta refletância nos comprimentos de onda do infravermelho próximo do espectro eletromagnético. O objetivo desta combinação foi de estabelecer uma relação entre a resposta espectral e as variáveis biofísicas da vegetação [86].

Um índice espectral ideal deve ser capaz de responder a pequenas variações no desenvolvimento fenológico da vegetação e não pode ser muito influenciado por variações de tipo de solo, do ângulo de visada do sensor, do ângulo solar e das condições atmosféricas [87]. Uma série de variáveis biofísicas são passíveis de serem estimadas por meio de índices espectrais, tais como o índice de área foliar, evapotranspiração, dentre outras. Entretanto, o uso de índices espectrais deve ser visto com certo cuidado, pois foram desenvolvidos para atender a necessidades particulares e sob condições específicas. Desta forma, os resultados dos índices espectrais podem ser diferentes, quando aplicados em condições diferentes. Por exemplo, o problema de usar índices espectrais para estimar índice de área foliar maior do que três, pois a relação é exponencial e ocorre a saturação. Além disto, a cor e a textura do solo, o espaçamento, a orientação do plantio, a latitude, a data e hora da observação podem influenciar os resultados da interpretação dos índices espectrais [86, 87].

Um dos índices mais conhecidos é o Normalized Difference Vegetation Index, NDVI (Equação 6.4), que é um índice da diferença normalizada entre as bandas do infravermelho próximo e do vermelho [88], e é geralmente utilizado para representar a quantidade de resposta espectral típica de alvos de vegetação encontrada numa imagem:

(6.4)\[NDVI = \frac{IV - V}{IV + V}\]

onde IV representa a banda do infravermelho próximo, e V a banda do vermelho.

O Index DataBase apresenta uma ferramenta de consulta, que combina satélites de observação da terra e aplicações. Ao escolher, por exemplo, o Sentinel-2 com a aplicação Agricultura, mais de 10 índices espectrais são apresentados. Outros exemplos de índices espectrais amplamente utilizados são o NDWI, Normalized Difference Water Index (veja a Equação 6.5) com aplicações que envolvem alvos de água, e o NBR, Normalized Burn Ratio (conforme a Equação 6.6) para ressaltar áreas queimadas na cobertura da terra. Estes índices normalizados comumente retornam valores entre -1 e +1.

(6.5)\[NDWI = \frac{G - IV}{G + IV}\]

onde G representa a banda do verde, e IV a banda do infravermelho próximo.

(6.6)\[NBR = \frac{IV - IVC}{IV + IVC}\]

onde IV representa a banda do infravermelho próximo, e IVC a banda do infravermelho médio.

Script 4. Dada a geometria de uma gleba e uma busca de imagens Sentinel-2 no BDC na data de interesse (consultar Visualização de imagens Sentinel-2 do Brazil Data Cube (BDC)), calcular e apresentar 4 índices espectrais, NDVI, SCI, NBR e NDWI.

Solução:
for item in items.items():
    datetime = item.properties['datetime']

    # abrir e recortar as imagens
    with rio.open(item.assets['B03'].href) as raster:
        gleba_s2 = gleba.to_crs(raster.crs).iloc[0]
        janela_gleba = from_bounds(*gleba_s2.geometry.bounds, raster.transform)
        banda_03 = raster.read(1, window=janela_gleba)
    with rio.open(item.assets['B02'].href) as raster:
        banda_02 = raster.read(1, window=janela_gleba)
    with rio.open(item.assets['B04'].href) as raster:
        banda_04 = raster.read(1, window=janela_gleba)
    with rio.open(item.assets['B08'].href) as raster:
        banda_08 = raster.read(1, window=janela_gleba)
    with rio.open(item.assets['B11'].href) as raster:
        banda_11 = raster.read(1, window=janela_gleba)

    # calcular os índices espectrais
    ndvi = (banda_08 - banda_04) / (banda_08 + banda_04)
    sci = (banda_11 - banda_08) / (banda_11 + banda_08)
    nbr = (banda_08 - banda_11) / (banda_08 + banda_11)
    ndwi = (banda_03 - banda_08) / (banda_03 + banda_08)

    # a quantização do Sentinel-2 é de 12 bits, ou seja,
    # os valores dos números digitais variam entre 0 e 2^12 = 4096
    L = 2**12

    # preencher a matriz RGB para visualização colorida
    matriz_rgb = np.zeros((banda_04.shape[0], banda_04.shape[1], 3))
    matriz_rgb[:, :, 0] = normalizar_2p(banda_04, L) / L
    matriz_rgb[:, :, 1] = normalizar_2p(banda_03, L) / L
    matriz_rgb[:, :, 2] = normalizar_2p(banda_02, L) / L

    plt.figure(figsize=(25, 2))
    plt.subplot(1,5,1)
    plt.title(datetime[:10])
    plt.imshow(matriz_rgb)
    plt.subplot(1,5,2)
    plt.title('NDVI')
    plt.imshow(ndvi, cmap='BrBG', vmin=-1, vmax=+1)
    plt.colorbar()
    plt.subplot(1,5,3)
    plt.title('SCI')
    plt.imshow(sci, cmap='bwr', vmin=-1, vmax=+1)
    plt.colorbar()
    plt.subplot(1,5,4)
    plt.title('NBR')
    plt.imshow(nbr, cmap='coolwarm', vmin=-1, vmax=+1)
    plt.colorbar()
    plt.subplot(1,5,5)
    plt.title('NDWI')
    plt.imshow(ndwi, cmap='RdBu', vmin=-1, vmax=+1)
    plt.colorbar()
    plt.show();

Os índices espectrais são importantes ferramentas de análise multitemporal. Combinando a visualização de índices de vegetação, solo, queimada e água, por exemplo, pode-se compreender a evolução de uma área agrícola. A Figura a seguir representa essa visualização temporal, incluindo a composição true color, seguida da visualização dos índices espectrais: vegetação (NDVI), solo (SCI), queimadas (NBR) e água (NDWI).

Para demonstrar os scripts de geração de índices espectrais e visualização, veja o seguinte Jupyter Notebook: