Fusão de Imagens: Conceito e Aplicação Prática com GDAL

Por Que Usar Fusão de Imagens?

A fusão de imagens é particularmente útil em aplicações agrícolas, onde detalhes finos da estrutura das culturas são essenciais para um monitoramento preciso. Ao combinar a alta resolução espacial de uma imagem pancromática com a riqueza espectral de uma imagem multiespectral, é possível obter uma imagem resultante que facilita a identificação e o monitoramento das culturas.

Exemplo Prático com Dados do CBERS 04-A

O satélite CBERS 04-A, um projeto de cooperação entre Brasil e China, oferece dados pancromáticos com resolução espacial de 2 metros e multiespectrais com resolução de 8 metros. A fusão dessas imagens permite reamostrar os dados multiespectrais para 2 metros, combinando a resolução espacial da pancromática com a resolução espectral da multiespectral.

Passo a Passo: Como Realizar a Fusão Usando o GDAL

Aqui está um guia prático de como realizar a fusão de imagens usando a biblioteca GDAL em Python:

  1. Instalação do GDAL: Primeiro, certifique-se de que o GDAL está instalado. Você pode instalar o GDAL usando o pip:
pip install gdal

2. Leitura das Imagens: Leia as imagens pancromática e multiespectral utilizando a função gdal.Open

    from osgeo import gdal
    
    # Caminhos para as imagens
    path_pan = 'pan.tif'
    path_blue = 'blue.tif'
    path_green = 'green.tif'
    path_red = 'red.tif'
    
    
    # Abrir as bandas como datasets
    band_blue = gdal.Open(path_blue)
    band_green = gdal.Open(path_green)
    band_red = gdal.Open(path_red)
    
    # Obter as informações de geotransformação e projeção de uma das bandas
    geotransform = band_blue.GetGeoTransform()
    projection = band_blue.GetProjection()
    
    # Obter as dimensões das bandas
    cols = band_blue.RasterXSize
    rows = band_blue.RasterYSize
    
    # Criar o dataset de saída com 3 bandas
    output_image_path = 'imagem_multiespectral.tif'
    driver = gdal.GetDriverByName('GTiff')
    output_dataset = driver.Create(output_image_path, cols, rows, 3, gdal.GDT_Int16)
    
    # Configurar a geotransformação e a projeção
    output_dataset.SetGeoTransform(geotransform)
    output_dataset.SetProjection(projection)
    
    # Ler os dados de cada banda e escrever nas bandas do dataset de saída
    output_dataset.GetRasterBand(1).WriteArray(band_red.GetRasterBand(1).ReadAsArray())
    output_dataset.GetRasterBand(2).WriteArray(band_green.GetRasterBand(1).ReadAsArray())
    output_dataset.GetRasterBand(3).WriteArray(band_blue.GetRasterBand(1).ReadAsArray())
    
    del output_dataset

    3. Fusão das Imagens: Utilize a função gdal_pansharpen para realizar a fusão da imagem multiespectral com a pancromática.

    from osgeo_utils.gdal_pansharpen import gdal_pansharpen
    pansharpened_path = 'imagem_pansharpened.tif'
    
    gdal_pansharpen(pan_name=path_pan,spectral_names=[output_image_path ], band_nums=[1, 2, 3], dst_filename=pansharpened_path)

    4. Salvar e Visualizar a Imagem Resultante: A imagem resultante da fusão será salva no caminho especificado e estará pronta para ser utilizada em suas análises.

    Considerações Finais

    A fusão de imagens é uma ferramenta poderosa no arsenal do sensoriamento remoto, especialmente útil para o monitoramento agrícola de alta precisão. Com o GDAL, essa técnica pode ser aplicada de forma prática e eficiente, permitindo a obtenção de imagens com a resolução espacial e espectral necessárias para suas análises.