Fid escribió:Cada vez que te vertió usar R para fotos me quedo a cuadros.
Pues si miras el código te quedas pasmado de lo corto y limpio que es. La notación matricial para imágenes es una maravilla.
- Código: Seleccionar todo
# 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?
Hola Juan, a qué software te refieres? al HDR en general?.
Salu2!