Melhorar a resolução das imagens aéreas com ESRGAN: quando a IA dá nova vida a fotos antigas

As imagens aéreas são uma mina de ouro: levantamentos antigos, inventários florestais, monitoramento costeiro, mapas cadastrais digitalizados…

Mas elas frequentemente sofrem de um problema grave: baixa resolução. Imagens borradas, pixelização, texturas distorcidas, perda de detalhes… tantas limitações que complicam a análise espacial.

Nos últimos anos, uma tecnologia derivada do Deep Learning mudou completamente o jogo: ESRGAN (Enhanced Super Resolution Generative Adversarial Network).

Desenvolvido inicialmente para melhorar a qualidade das imagens em videogames, o ESRGAN tornou-se uma ferramenta valiosa em teledeteção, fotogrametria e geomática.



Neste artigo, exploraremos como o ESRGAN permite melhorar a resolução de imagens aéreas antigas, quais são suas vantagens, suas limitações e como usá-lo em uma cadeia de processamento compatível com o QGIS.


Por que usar o ESRGAN para imagens aéreas?

Ao contrário dos algoritmos clássicos de reamostragem (bicúbico, bilinear), o ESRGAN não se limita a ampliar a imagem.

Ele reconstrói os detalhes ausentes com base em um aprendizado profundo a partir de milhares de imagens de alta resolução.

O ESRGAN pode:

  • reconstruir as texturas de telhados, estradas, campos e litorais;
  • aperfeiçoar as linhas (margens, edifícios, limites agrícolas);
  • tornar legíveis pequenas estruturas que de outra forma seriam invisíveis;
  • melhorar a qualidade de ortofotos antigas digitalizadas;
  • preparar imagens para segmentação ou classificação automática.

Para os geomáticos, trata-se de uma mudança de escala:

finalmente é possível aproveitar imagens aéreas antigas cuja qualidade até agora era um obstáculo.


Como funciona o ESRGAN? (versão simplificada)

O ESRGAN se baseia em duas redes neurais:

  • Um gerador que tenta produzir uma versão realista em alta resolução.
  • Um discriminador que tenta distinguir as imagens geradas das imagens reais em alta resolução.

Os dois se aperfeiçoam mutuamente, até produzirem uma imagem detalhada, nítida e coerente.

O ESRGAN é particularmente interessante para fotografias aéreas porque:

  • aprende texturas naturais (solos, telhados, vegetação)
  • gerencia bem o ruído
  • limita os artefatos próprios de digitalizações antigas (grão, halos)


Exemplo: super-resolução x4 em uma foto aérea (genérica)

Partimos de uma imagem aérea digitalizada em 512×512 px.

  • Resolução original: desfocada, detalhes apagados
  • ESRGAN ×4 → saída em 2048×2048 px
  • Melhorias observadas:

    • melhor leitura das parcelas
    • contornos dos telhados mais nítidos
    • estradas e pistas claramente visíveis
    • texturas do solo melhor reconstruídas

Image de 1960

Image de 1948


Usar o Real-ESRGAN-ncnn-vulkan no Windows

Vamos ver:

  1. download e pasta
  2. comando básico e parâmetros úteis
  3. pipeline “imagem georreferenciada → SR → GeoTIFF” (automático)
  4. script em lote do Windows pronto para colar
  5. dicas/armadilhas a evitar e opções avançadas
  6. opção: encadear GFPGAN (restauração de rostos/detalhes)


1) Download e preparação (rápido)

  • Baixe o arquivo realesrgan-ncnn-vulkan na página Releases do projeto (arquivo realesrgan-ncnn-vulkan-*-windows.zip).
  • Descompacte em C:\SR\realesrgan-ncnn-vulkan-20220424-windows, por exemplo.
  • Coloque as imagens de entrada em C:\SR\input\ (formatos PNG/JPG/TIF).
  • Crie C:\SR\output\ para os resultados.


2) Comando básico e parâmetros (explicados)

Comando mínimo (x4, modelo realesrgan-x4plus):

.\realesrgan-ncnn-vulkan.exe -i C:\SR\input\image.png -o C:\SR\output\image_x4.png -n realesrgan-x4plus

Parâmetros úteis:

  • -i <caminho>: imagem de entrada
  • -o <caminho>: imagem de saída
  • -n <nome_modelo>: modelo (realesrgan-x4plus, realesrnet-x4plus, realesrgan-x4plus-anime, etc.)
  • -s <escala>: fator de ampliação (às vezes gerenciado pelo modelo; mantenha -s 4 para x4)
  • -tile <N>: tamanho do bloco (por exemplo, -tile 200) — reduz o uso da memória da GPU/CPU, útil para imagens grandes
  • -t <N>: threads da CPU (opcional)
  • -g <índice>: índice da GPU (se houver vários)
  • –help: exibe todas as opções

Dica: se o seu computador não for muito potente, use -tile 150 ou -tile 100. -tile 100.


3) Pipeline para imagens georreferenciadas (método simples e confiável)

Princípio: realiza-se o upscaling na imagem raster (PNG/TIF) e, em seguida, recria-se um GeoTIFF reaplicando o envelope geográfico (limites) da imagem de origem, o que mantém a geometria espacial e ajusta a resolução ao fator de ampliação.

Etapas (manuais)

  1. Recuperar o envelope (limites) e o CRS do original: gdalinfo -json C:\SR\input\image.tif > info.json ou ler diretamente Upper Left (ulx, uly) e Lower Right (lrx, lry) a partir de gdalinfo image.tif.
  2. Inicie o Real-ESRGAN na imagem (image_non_geo.png ou convertida): .\realesrgan-ncnn-vulkan.exe -i C:\SR\input\image.png -o C:\SR\output\image_x4.png -n realesrgan-x4plus -tile 150
  3. Recrie um GeoTIFF com o mesmo envelope, mas com um novo tamanho:
    Se o envelope original for (ulx, uly, lrx, lry), reutilize-o. Exemplo: gdal_translate -of GTiff -a_srs EPSG:XXXXX -a_ullr ulx uly lrx lry C:\SR\output\image_x4.png C:\SR\output\image_x4_georef.tif

    • -a_srs EPSG:XXXXX: o CRS do original (por exemplo, EPSG:4326 ou EPSG:3857)
    • -a_ullr ulx uly lrx lry: cantos em coordenadas espaciais (Upper Left X,Y; Lower Right X,Y)

Por que funciona: aplicamos o envelope geográfico original à imagem com super resolução. O novo tamanho em pixels/px corresponderá automaticamente a uma nova resolução espacial (tamanho do pixel = tamanho do pixel original / escala).

Observação: se você quiser ser extremamente preciso no cabeçalho geo-transform em vez de -a_ullr, é possível calcular e aplicar a nova geotransformação através do gdal_edit.py -a_ullr ou usando um script Python GDAL, mas o gdal_translate -a_ullr é simples e robusto.


4) Script em lote do Windows (automático para uma pasta inteira)

Cole o seguinte arquivo em C:\SR\run_sr_georef.bat, modifique os caminhos e a projeção utilizada e execute.

run_sr_georef.bat

@echo off
setlocal enabledelayedexpansion

set OUTDIR=output
if not exist %OUTDIR% mkdir %OUTDIR%

REM === Boucle sur tous les tif de input ===
for %%F in (input\*.tif) do (
    echo -------------------------------
    echo Traitement de : %%F

    set BASENAME=%%~nF

    REM === Extraction coordonnées ===
    for /f "tokens=2,3,4,5 delims=(,)" %%a in ('gdalinfo "%%F" ^| find "Upper Left"') do (
        set ULX=%%a
        set ULY=%%b
    )

    for /f "tokens=2,3,4,5 delims=(,)" %%a in ('gdalinfo "%%F" ^| find "Lower Right"') do (
        set LRX=%%a
        set LRY=%%b
    )

    echo ULX=!ULX!
    echo ULY=!ULY!
    echo LRX=!LRX!
    echo LRY=!LRY!

    REM === 1. Extraction PNG temporaire ===
    gdal_translate -of PNG "%%F" temp.png

    REM === 2. Super-résolution ===
    C:\SR\realesrgan-ncnn-vulkan-20220424-windows\realesrgan-ncnn-vulkan.exe -i temp.png -o temp_sr.png -s 4

    REM === 3. Conversion en TIF géoréférencé ===
    gdal_translate temp_sr.png "%OUTDIR%\!BASENAME!_sr.tif" -a_ullr !ULX! !ULY! !LRX! !LRY! -a_srs EPSG:2154

    echo Resultat : %OUTDIR%\!BASENAME!_sr.tif
    echo DONE
)

REM === Suppression fichiers temporaires ===
del temp.png
del temp_sr.png


Observações:

  • Este script pressupõe que gdalinfo.exe e gdal_translate.exe estão disponíveis (adicione os caminhos, se necessário).
  • O script primeiro converte para PNG para evitar alguns TIF com compressões exóticas que fariam com que o executável falhasse.
  • -a_ullr retoma os limites exatos. Se o original tivesse uma geotransformação ligeiramente não axial (rotação), -a_ullr perderia a rotação; caso raro em ortofotos: se houver rotação, será necessário um script GDAL Python mais avançado.


5) Dicas e armadilhas a evitar

  • Conserve o original: nunca trabalhe no original — guarde uma cópia.
  • Compressão inadequada/TIF exóticos: converter para PNG é frequentemente mais seguro.
  • Rotação/shearing: -a_ullr pressupõe que não há rotação. Para imagens georreferenciadas com rotação, é necessário reescrever a geotransformação completa → script Python GDAL para aplicar SetGeoTransform. Informe-me se você tiver esse caso.
  • Alucinações: ES(R)GAN pode inventar detalhes irreais — verifique visualmente e documente o processamento.
  • Tamanho enorme: para imagens muito grandes (>10.000 px), use -tile pequeno (50–150) e RAM/disco temporário suficientes.
  • Metadados: o GeoTIFF final não inclui automaticamente os metadados EXIF da imagem; se necessário, use gdal_copy ou gdal_translate -co para adicionar informações.


6) Adicionar GFPGAN (opcional)

Se a foto contiver pessoas/fachadas danificadas e você quiser melhorar localmente os rostos/detalhes após o SR:

  1. Instale o GFPGAN (ou baixe o executável, se disponível).
  2. Inicie o GFPGAN na saída SR:

gfpgan.exe -i image_x4.png -o image_x4_gfpgan.png --upscale 1


Integração no QGIS

Existem três métodos simples para utilizar o ESRGAN no QGIS:

1. Através do processamento Python (Processing Toolbox)

Crie um script Python que:

  • receba um raster como entrada
  • inicie o ESRGAN
  • recargue automaticamente a imagem melhorada no QGIS

2. Através de um plugin externo

Crie um plugin pessoal baseado em:

  • um botão “Super-resolução ESRGAN”
  • uma interface simples: modelo, fator ×2/×4, arquivo de entrada

3. Através de um fluxo de trabalho R/W de imagens

Use o ESRGAN no pré-processamento antes de importar as imagens para o QGIS

→ ideal para ortofotos antigas.


Vantagens

✔ Dá uma nova vida aos arquivos aéreos

✔ Permite uma análise mais precisa em teledeteção

✔ Útil para extrair objetos (edifícios, praias, ravinas…)

✔ Funciona com imagens muito degradadas

✔ Ecossistema 100% open source


Limitações

⚠ O ESRGAN não adivinha a realidade:

  • ele reconstrói detalhes plausíveis, mas não garante que sejam exatos.

⚠ Risco de artefatos em:

  • bordas com muito contraste
  • áreas urbanas heterogêneas
  • sombras profundas

⚠ A evitar para:

  • cartografia regulamentar
  • análises que devem refletir a realidade com precisão de pixel

Mas para cartografia exploratória, preparação de dados ou trabalho patrimonial, é uma ferramenta extremamente poderosa.


Rumo a um ESRGAN especializado em “imagens aéreas”?

Uma linha de pesquisa empolgante: treinar um ESRGAN especificamente em:

  • ortofotos de alta resolução
  • imagens aéreas atuais (10–20 cm/pixel)
  • texturas naturais tropicais, costeiras ou agrícolas

Isso resultaria em um modelo perfeitamente adaptado para digitalizações de arquivos dos anos 1960–1990.


Conclusão

O ESRGAN transforma literalmente nossa capacidade de explorar imagens aéreas.

Pela primeira vez, é possível restaurar detalhes em dados antigos e transformá-los em fontes utilizáveis para a geomática moderna.

O acesso a modelos de código aberto e ao PyTorch abre caminho para um novo ecossistema de ferramentas livres… a serviço da história, do meio ambiente e da cartografia.


Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *