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
Usar o Real-ESRGAN-ncnn-vulkan no Windows
Vamos ver:
- download e pasta
- comando básico e parâmetros úteis
- pipeline “imagem georreferenciada → SR → GeoTIFF” (automático)
- script em lote do Windows pronto para colar
- dicas/armadilhas a evitar e opções avançadas
- 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)
- 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.
- 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
- 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.
@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:
- Instale o GFPGAN (ou baixe o executável, se disponível).
- 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.

