💡 OBJETIVOS DIDÁCTICOS:

► Asentar los conocimientos del alumnado respecto las diferentes resoluciones de las imágenes de satélite.

► Mejorar la resolución espacial de una imagen multiespectral usando una banda pancromática mediante pan-sharpening, y visualizar los resultados.

💡 MATERIALES PARA LA ACTIVIDAD:

Los materiales para el desarrollo de esta actividad son los mismos de la actividad pasada.

Imágenes Landsat 8 y Sentinel.

script_laboratorio_4_pansharpening

Introducción

El pansharpening es una técnica de fusión de imágenes que combina:

Esta técnica es una respuesta al hecho de que, en las imágenes multiespectrales algunas bandas operab bajo resoluciones espaciales diferentes. Por ejemplo, es habitual que las bandas del visible ofrezcan mayores resoluciones que otras bandas, por ejemplo, del infrarrojo. La consecuencia es una pérdida de la nitidez de los elementos que componen la superficie terrestre cuando analizamos combinaciones de imágenes, por ejemplo, a falso color.

A través del pansharpening, o refinado pancromático, se mejora la resolución de las imágenes satélite utilizando como referencia una banda pancromática de mayor resolución y combinarla con el resto de bandas de menor resolución, generando una nueva imagen multibanda a color y preservando al mismo tiempo la máxima resolución.

El pansharpening, fusiona la imagen multiespectral de baja resolución con la imagen pancromática de alta resolución para obtener una imagen a color de igual nitidez que la banda pancromática. La banda pancromática realza la nitidez de los detalles y las imágenes multiespectrales restantes aportan la información radiométrica a través de un algoritmo estratégico. La combinación de imágenes se puede realizar partiendo de varios métodos de fusión de imágenes. Dentro de las opciones de ArcGIS encontramos los métodos IHS, Brovey, Esri, Gram-Schmidt y Valor medio simple.

¿Para qué se utiliza?

¿Qué sensores son últiles?:

El objetivo del este ejercicio es realizar pansharpening de una imagen Landsat usando {terra} y comparar:

DESARROLLO DEL EJERCICIO

Activamos el paquete terra:

library(terra)
## terra 1.8.93

Para este ejercicio es necesario dispone de las bandas 4 (Rojo), 3 (Verde), 2 (Azul) y 8 (Pancromática) de una escena de Landsat 8/9, colección 1. A continuación cargamos esas bandas multiespectrales

b2 <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/B2.tif")   # azul
b3 <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/B3.tif")  # verde
b4 <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/B4.tif")    # rojo

Se crea un objeto spatRaster combinando las tres bandas multiespectrales. Es conveniente comprobar sus características

rgb <- c(b4, b3, b2)

Después procedemos a cargar la banda pancromática y comprobamos sus características:

pan <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/B8.tif")

Debe comprobarse que todos los objetos presentan la misma resolución:

rgb_resampled <- resample(rgb, pan, 
                          method = "bilinear")

Procedimiento manual (método Brovery)

La práctica aplica el procedimiento de Pansharpening según el método Brovey, uno de los métodos más simples y usados. Su fórmula es la siguiente:

\[R' = R \cdot \frac{PAN}{R + G + B}\]

La fórmula anterior se aplica de la siguiente manera:

sum_rgb <- sum(rgb_resampled)

r_pan <- rgb_resampled[[1]] * (pan / sum_rgb)
g_pan <- rgb_resampled[[2]] * (pan / sum_rgb)
b_pan <- rgb_resampled[[3]] * (pan / sum_rgb)

rgb_pan <- c(r_pan, g_pan, b_pan)

Visualización y comparación de imágenes

plotRGB(rgb, 
        stretch = "lin", 
        main = "RGB original (30 m)")

plotRGB(rgb_pan, 
        stretch = "lin", 
        main = "RGB pansharpen (15 m)")

Como puede observarse, el procedimiento de pansharpening mejora la nitidez de bordes, aumenta el detalle de las áreas urbanas y reduce posibles distorsiones de color.

PANSHARPENING CON RSTOOLBOX

A continuación se desarrolla una actividad práctica utilizando la función panSharpen() del paquete RStoolbox en R. Además de terra, es necesario activar los siguientes paquetes

library(RStoolbox)
## This is version 1.0.2.2 of RStoolbox
library(ggplot2)

La función panSharpen() admite como entrada un objeto ráster multibanda y una banda pancromática. Usaremos el método “brovey”; los otros métodos disponibles son:

ps_result <- panSharpen(rgb, pan, r = 3, g = 2, b = 1, method = "brovey")

A continuación se comparan las imágenes antes y después

plotRGB(rgb, r = 3, g = 2, b = 1, stretch = "lin", main = "RGB Original")

plotRGB(ps_result, r = 3, g = 2, b = 1, stretch = "lin", main = "RGB Pan-Sharpened")

Guardar resultado (opcional)

writeRaster(ps_result, 
            "lsat_pan_sharpened.tif", 
            overwrite = TRUE)

Probar otro método

ps_result_ihs <- panSharpen(rgb, pan, r = 3, g = 2, b = 1, method = "ihs")

PSEUDO PANSHARPENING CON SENTINEL 2

Sentinel 2 no tiene una banda equivalente a la banda 8, pero se pueden usar las bandas con diferente resolución para reproducir un procedimiento similar al realizado con Landsat. En este caso

sen2_B8 <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/SENTINEL2_B8.jp2")   # 10 m
sen2_B11 <- rast("D:/G174_2026/LABORATORIO_4_Visualizacion_imagenes/datos/SENTINEL2_B11.jp2") # 20 m

En este caso, se remuestrea la banda B11.

sen2_B11_resampled <- resample(sen2_B11, sen2_B8)
## |---------|---------|---------|---------|=========================================                                          

A continuación realizamos el “Pseudo pansharpening”

sen2_B11_pan <- sen2_B11_resampled * (sen2_B8 / sen2_B11_resampled)
## |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          

Finalmente, se representa gráficamente

plot(sen2_B11_pan)