Mejorar la resolución de las imágenes aéreas con ESRGAN: cuando la IA da nueva vida a las fotos antiguas

Las imágenes aéreas son una mina de oro: antiguos levantamientos, inventarios forestales, seguimientos costeros, planos catastrales digitalizados…

Pero a menudo adolecen de un problema importante: la baja resolución. Borrosidad, pixelación, texturas aplastadas, pérdida de detalles… tantas limitaciones que complican el análisis espacial.

Desde hace unos años, una tecnología derivada del Deep Learning está cambiando por completo las reglas del juego: ESRGAN (Enhanced Super Resolution Generative Adversarial Network).

Desarrollado inicialmente para mejorar la calidad de las imágenes en los videojuegos, ESRGAN se ha convertido en una herramienta muy valiosa en teledetección, fotogrametría y geomática.



En este artículo, exploraremos cómo ESRGAN permite mejorar la resolución de imágenes aéreas antiguas, cuáles son sus ventajas y limitaciones, y cómo utilizarlo en una cadena de procesamiento compatible con QGIS.


¿Por qué ESRGAN para imágenes aéreas?

A diferencia de los algoritmos clásicos de remuestreo (bicúbico, bilineal), ESRGAN no se limita a ampliar la imagen.

Reconstruye los detalles que faltan basándose en un aprendizaje profundo a partir de miles de imágenes de alta resolución.

ESRGAN puede:

  • reconstruir las texturas de tejados, carreteras, campos y costas;
  • refinar las líneas (riberas, edificios, límites agrícolas);
  • hacer legibles pequeñas estructuras que de otro modo serían invisibles;
  • mejorar la calidad de las ortofotos antiguas digitalizadas;
  • preparar imágenes para la segmentación o la clasificación automática.

Para los geomáticos, se trata de un cambio de escala:

por fin se pueden aprovechar imágenes aéreas antiguas cuya calidad hasta ahora era un obstáculo.


¿Cómo funciona ESRGAN? (en versión simplificada)

ESRGAN se basa en dos redes neuronales:

  • Un generador que intenta producir una versión realista de alta resolución.
  • Un discriminador que intenta distinguir las imágenes generadas de las imágenes reales de alta resolución.

Ambos se mejoran mutuamente hasta producir una imagen detallada, nítida y coherente.

ESRGAN es especialmente interesante para las fotografías aéreas porque:

  • aprende de las texturas naturales (suelos, tejados, vegetación)
  • gestiona bien el ruido
  • limita los artefactos propios de los escaneos antiguos (grano, halos)


Ejemplo: superresolución x4 en una fotografía aérea (genérica)

Partimos de una imagen aérea digitalizada en 512×512 px.

  • Resolución original: borrosa, detalles difuminados.
  • ESRGAN ×4 → salida en 2048×2048 px.
  • Mejoras observadas:

    • mejor lectura de las parcelas;
    • contornos de los tejados más nítidos;
    • carreteras y pistas claramente visibles;
    • texturas del suelo mejor reconstruidas.

Image de 1960

Image de 1948


Usar Real-ESRGAN-ncnn-vulkan en Windows

Veremos:

  1. descarga y carpeta
  2. comando básico y parámetros útiles
  3. flujo de trabajo «imagen georreferenciada → SR → GeoTIFF» (automático)
  4. script por lotes de Windows listo para pegar
  5. consejos/errores que hay que evitar y opciones avanzadas
  6. opción: encadenar GFPGAN (restauración de rostros/detalles)


1) Descarga y preparación (rápida)

  • Descargue el archivo realesrgan-ncnn-vulkan desde la página Releases del proyecto (archivo realesrgan-ncnn-vulkan-*-windows.zip).
  • Descomprima en C:\SR\realesrgan-ncnn-vulkan-20220424-windows, por ejemplo.
  • Coloque las imágenes de entrada en C:\SR\input\ (formatos PNG/JPG/TIF).
  • Cree C:\SR\output\ para los resultados.


2) Comando básico y 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 útiles:

  • -i <ruta>: imagen de entrada
  • -o <ruta>: imagen de salida
  • -n <nombre_modelo>: modelo (realesrgan-x4plus, realesrnet-x4plus, realesrgan-x4plus-anime, etc.)
  • -s <escala>: factor de ampliación (a veces gestionado por el modelo; mantenga -s 4 para x4)
  • -tile <N>: tamaño del mosaico (por ejemplo, -tile 200): reduce el uso de memoria de la GPU/CPU, útil para imágenes grandes.
  • -t <N>: subprocesos de la CPU (opcional)
  • -g <índice>: índice de GPU (si hay varios)
  • –help: muestra todas las opciones

Consejo: si tu equipo no es muy potente, utiliza -tile 150 o -tile 100.00.


3) Canalización para imágenes georreferenciadas (método sencillo y fiable)

Principio: se realiza el escalado de la imagen ráster (PNG/TIF) y, a continuación, se recrea un GeoTIFF volviendo a aplicar el envolvente geográfico (límites) de la imagen de origen, lo que conserva la geometría espacial y ajusta la resolución al factor de ampliación.

Pasos (manuales)

  1. Recuperar el contorno (límites) y el CRS del original: gdalinfo -json C:\SR\input\image.tif > info.json o leer directamente Upper Left (ulx, uly) y Lower Right (lrx, lry) desde gdalinfo image.tif.
  2. Ejecutar Real-ESRGAN en la imagen (image_non_geo.png o convertida): .\realesrgan-ncnn-vulkan.exe -i C:\SR\input\image.png -o C:\SR\output\image_x4.png -n realesrgan-x4plus -tile 150
  3. Recree un GeoTIFF con la misma envoltura pero con un nuevo tamaño:
    Si la envoltura original es (ulx, uly, lrx, lry), reutilícela. Ejemplo: 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: el CRS del original (por ejemplo, EPSG:4326 o EPSG:3857)
    • -a_ullr ulx uly lrx lry: esquinas en coordenadas espaciales (esquina superior izquierda X,Y; esquina inferior derecha X,Y)

Por qué funciona: se aplica la envolvente geográfica original a la imagen con resolución superior. El nuevo tamaño en píxeles/px se corresponderá automáticamente con una nueva resolución espacial (tamaño de píxel = tamaño de píxel original / escala).

Nota: si desea ser extremadamente preciso en el encabezado geo-transform en lugar de -a_ullr, puede calcular y aplicar la nueva geotransformación mediante gdal_edit.py -a_ullr o utilizando un script Python GDAL, pero gdal_translate -a_ullr es sencillo y robusto.


4) Script por lotes de Windows (automático para toda una carpeta)

Pegue el siguiente archivo en C:\SR\run_sr_georef.bat, modifique las rutas y la proyección utilizada, y luego ejecútelo.

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


Notas:

  • Este script asume que gdalinfo.exe y gdal_translate.exe se pueden encontrar (añada las rutas si es necesario).
  • El script convierte primero a PNG para evitar ciertos TIF con compresiones exóticas que harían fallar el ejecutable.
  • -a_ullr toma los límites exactos. Si el original tuviera una geotransformación ligeramente no axial (rotación), -a_ullr perdería la rotación; caso raro en ortofotos: si hay rotación, se necesitará un script GDAL Python más avanzado.


5) Consejos y errores que hay que evitar

  • Conserve el original: nunca trabaje sobre el original, guarde una copia.
  • Compresión incorrecta/TIF exóticos: convertir a PNG suele ser más seguro.
  • Rotación/shearing: -a_ullr no supone rotación. Para imágenes georreferenciadas con rotación, es necesario reescribir la geotransformación completa → script Python GDAL para aplicar SetGeoTransform. Avísame si te encuentras en este caso.
  • Alucinaciones: ES(R)GAN puede inventar detalles que no son reales: comprueba visualmente y documenta el procesamiento.
  • Tamaño enorme: para imágenes muy grandes (>10 000 px), utiliza -tile pequeño (50-150) y suficiente RAM/disco temporal.
  • Metadatos: el GeoTIFF final no incluye automáticamente los metadatos EXIF de la imagen; si es necesario, utiliza gdal_copy o gdal_translate -co para añadir información.


6) Añadir GFPGAN (opcional)

Si la foto contiene personas/fachadas dañadas y desea mejorar localmente los rostros/detalles después de SR:

  1. Instale GFPGAN (o descargue el ejecutable si está disponible).
  2. Inicie GFPGAN en la salida SR:

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


IIntegración en QGIS

Existen tres métodos sencillos para utilizar ESRGAN en QGIS:

1. A través del procesamiento Python (Processing Toolbox)

Crear un script Python que:

  • tome una trama como entrada
  • ejecute ESRGAN
  • recargue automáticamente la imagen mejorada en QGIS

2. A través de un plugin externo

Crear un complemento personal basado en:

  • un botón «Superresolución ESRGAN»
  • una interfaz sencilla: modelo, factor ×2/×4, archivo de entrada

3. A través de un flujo de trabajo R/W de imágenes

Utilizar ESRGAN en el pretratamiento antes de importar las imágenes a QGIS

→ ideal para ortofotos antiguas.


Ventajas

✔ Da nueva vida a los archivos aéreos.

✔ Permite un análisis más preciso en teledetección.

✔ Útil para extraer objetos (edificios, playas, barrancos, etc.).

✔ Funciona con imágenes muy degradadas.

✔ Ecosistema 100 % de código abierto.


Límites

⚠ ESRGAN no adivina la realidad:

  • reconstruye detalles plausibles, sin garantizar su exactitud.

⚠ Riesgo de artefactos en:

  • bordes muy contrastados
  • zonas urbanas heterogéneas
  • sombras profundas

⚠ Evitar para:

  • cartografía reglamentaria
  • análisis que deben reflejar la realidad con precisión de píxeles

Pero para la cartografía exploratoria, la preparación de datos o el trabajo patrimonial, es una herramienta extremadamente potente.


¿Hacia un ESRGAN especializado en «imágenes aéreas»?

Una pista de investigación apasionante: entrenar un ESRGAN específicamente en:

  • ortofotos de alta resolución
  • imágenes aéreas actuales (10-20 cm/píxel)
  • texturas naturales tropicales, costeras o agrícolas

Esto daría como resultado un modelo perfectamente adaptado al escaneo de archivos de los años 1960-1990.


Conclusión

ESRGAN está transformando literalmente nuestra capacidad para explotar las imágenes aéreas.

Por primera vez, es posible recuperar detalles de datos antiguos y convertirlos en fuentes utilizables para la geomática moderna.

El acceso a modelos de código abierto y a PyTorch abre el camino a un nuevo ecosistema de herramientas libres… al servicio de la historia, el medio ambiente y la cartografía.


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é !

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *