Fusión HDR de imágenes con R



Salu2!
Fecha actual Mar Feb 18, 2025 11:11 pm
Moderadores: IOM60, laucsap60, klomp, Siniestro, Guillermo Luijk, Pablo Valido
Cada vez que te vertió usar R para fotos me quedo a cuadros.Guillermo Luijk escribió:He escrito un artículo en plan didáctico explicando las tripas de una fusión HDR. Mi intención real era practicar con el lenguaje R, el HDR es una excusa, pero se explica paso a paso cómo un programa puede fusionar dos capturas para obtener una imagen final que contenga el rango dinámico combinado. He obtenido gráficas curiosas sobre los cálculos previos que no había obtenido nunca.
Fusión HDR de imágenes con R
Salu2!
Fid escribió:Cada vez que te vertió usar R para fotos me quedo a cuadros.
# Fusión HDR de imágenes con R
# www.elmomentodecisivo.com
# Revelado lineal con DCRAW: dcraw -v -w -o 2 -4 -T *.CR2
library(tiff)
# LEEMOS FOTOGRAFÍAS
img1=readTIFF("raw1.tiff", native=F, convert=F)
img2=readTIFF("raw2.tiff", native=F, convert=F)
# CÁLCULO DE EXPOSICIÓN RELATIVA
MIN=2^(-5) # Desde -5EV...
MAX=0.95 # ...hasta 95%
i=which(img1>=MIN & img1<=MAX & img2>=MIN & img2<=MAX)
exprel=img2[i]/img1[i]
f=median(exprel) # Factor corrector de exposición
# Histograma de exposiciones relativas
hist(exprel[exprel>=10 & exprel<=22],
main='Relative exposure histogram', xlab='Linear relative exposure',
breaks=seq(10, 22, length.out=800))
abline(v=16, col='gray', lty='dotted')
abline(v=f, col='red')
mapacalc=img1*0
mapacalc[i]=1 # Ponemos a 1 lo que ha participado en el cálculo
writeTIFF(mapacalc, "mapacalc.tif", bits.per.sample=8, compression="LZW")
solape=length(i)/length(img1) # % información entró en el cálculo
# FUSIÓN HDR
hdr=img1 # Partimos de la foto menos expuesta
i=which(img2<=MAX) # Niveles RGB obtenidos de la foto más expuesta
hdr[i]=img2[i]/f # Los sobreescribimos igualando su exposición
writeTIFF(hdr^(1/2.2), "hdr.tif", bits.per.sample=16, compression="LZW")
mapafusion=img1*0
mapafusion[-i]=1 # Ponemos a 1 lo obtenido de la foto menos expuesta
writeTIFF(mapafusion, "mapafusion.tif", bits.per.sample=8, compression="LZW")
mejora=length(i)/length(img1) # % información foto más expuesta
JuanPC escribió:Lo cierto es que he usado este software en contadas ocasiones, y siempre con fines más modestos, y me surge la duda de si resultaría práctico incluirlo en el flujo de trabajo para este tipo de procesados. A ti que te parece Guillermo?
Guillermo Luijk escribió:JuanPC escribió:Lo cierto es que he usado este software en contadas ocasiones, y siempre con fines más modestos, y me surge la duda de si resultaría práctico incluirlo en el flujo de trabajo para este tipo de procesados. A ti que te parece Guillermo?
Hola Juan, a qué software te refieres? al HDR en general?.
Salu2!
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados