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.