Fecha actual Jue Nov 21, 2024 6:02 pm
Moderadores: IOM60, laucsap60, klomp, Siniestro, Guillermo Luijk, Pablo Valido
# Leemos mapa de viñeteo
vignet=readPNG("vignet.png")
MAXIMO=c(max(vignet[,,1]), max(vignet[,,2]), max(vignet[,,3]) )
MINIMO=c(min(vignet[,,1]), min(vignet[,,2]), min(vignet[,,3]) )
k=MAXIMO/MINIMO # Corrección de exposición (pendiente de la curva)
# Generamos máscaras de capa
alphaR=(MAXIMO[1]/vignet[,,1]-1)/(k[1]-1)
alphaG=(MAXIMO[2]/vignet[,,2]-1)/(k[2]-1)
alphaB=(MAXIMO[3]/vignet[,,3]-1)/(k[3]-1)
# Leemos imagen a corregir
scene=readPNG("scene.png")
# Aplicamos "curvas"
scene.out <- scene
scene.out[,,1] <- scene.out[,,1]*(alphaR*(k[1]-1)+1)
scene.out[,,2] <- scene.out[,,2]*(alphaG*(k[2]-1)+1)
scene.out[,,3] <- scene.out[,,3]*(alphaB*(k[3]-1)+1)
writePNG(scene.out/max(scene.out), 'scene.out2.png')
# Leemos imagen
vignet=readPNG("vignet.png")
# Normalizamos
for (i in 1:3) vignet[,,i]=vignet[,,i]/max(vignet[,,i])
# Aplicamos corrección a la escena y guardamos normalizando
# OJO: ningun píxel de vignet en ningún canal puede valer 0
scene.out <- readPNG("scene.png")/vignet
writePNG(scene.out/max(scene.out), 'scene.out.png')
# Librería 16 bits
library(tiff)
# Leemos imagen
vignet <- readTIFF("vignet.tiff", native=F, convert=F)
# Normalizamos
for (i in 1:3) vignet[,,i]=vignet[,,i]/max(vignet[,,i])
# Aplicamos corrección a la escena y guardamos normalizando
# OJO: ningún píxel de vignet en ningún canal puede valer 0
scene.out <- readTIFF("scene.tiff")/vignet
writeTIFF(scene.out/max(scene.out), "scene.out.tif", bits.per.sample=16, compression="LZW")
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados