Página 1 de 2 12 ÚltimoÚltimo
Mostrando resultados del 1 al 12 de 24

Tema: Fusión HDR radical en RAW: 2 tomas separadas 6EV

  1. #1
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado Fusión HDR radical en RAW: 2 tomas separadas 6EV



    Alguien del foro recuerda las discusiones de antaño de cuántas capturas era mejor hacer para HDR?

    Aprovechando que estaba ayer jugando a construir RAWs promedio de varias capturas RAW para emular el ISO6 de la Sigma fp L, he hecho lo propio con una escena de alto contraste: con solo 2 archivos RAW separados la friolera de 6EV, he construido un archivo RAW mezcla de ambas capturas (toma todos los fotocaptores no saturados del RAW más expuesto, y en los saturados acude al RAW menos expuesto). El resultado es un RAW HDR que conserva toda la información de altas luces pero además permite levantar las sombras sin ruido. El salto de 6EV es tan bestia que en algunas paredes se nota una frontera de relación S/N.

    La fusión HDR es radical no solo por el salto de 6EV, sino sobre todo porque como estamos construyendo un RAW donde aún no se ha hecho la interpolación Bayer, elegimos individualmente de qué RAW origen viene la información de cada fotocaptor individualmente, y además apurando al máximo (he considerado el umbral de la saturación en un 95%, lo que está a solo -0,07EV de la saturación).

    Así tenemos fotocaptores procedentes de un RAW rodeados de vecinos procedentes del otro según los caprichos de la matriz de Bayer, pero al hacer el revelado las texturas salen perfectas (esperaba encontrarme artefactos por micro-desalineamientos). Los fotocaptores que vienen de la captura más expuesta se corrigen previamente en exposición a la baja (-6EV) para igualarlos a los otros antes de construir el RAW, o de lo contrario el revelado sería un desastre.

    La escena es ésta (no me he preocupado de procesarla con mimo):
    http://guillermoluijk.com/misc/rawhdr.jpg

    El histograma RAW del DNG HDR al ser de 16 bits está repleto de niveles y muestra los 12-13 pasos de rango dinámico de la escena:
    http://guillermoluijk.com/misc/hdr.gif

    Aquí puede verse lo radical de la fusión (recortes al 200% del mapa de fusión, indicando en blanco los fotocaptores que vienen del RAW menos expuesto y en negro los del RAW más expuesto):
    http://guillermoluijk.com/misc/mapafusion.png
    http://guillermoluijk.com/misc/mapafusion.jpg

    Ésta es la comparación del RAW HDR con lo que habríamos tenido de ruido en las sombras profundas si solo hubiéramos hecho la captura que derechea las altas luces:
    http://guillermoluijk.com/misc/hdrsombras.jpg

    Por si alguien quiere jugar con el RAW HDR:
    http://www.guillermoluijk.com/misc/hdr.dng

    Salu2!
    Última edición por Guillermo Luijk; 09/04/21 a las 17:41:05

  2. #2
    Fecha de Ingreso
    ago 2007
    Ubicación
    Madrid
    Mensajes
    8.289

    Predeterminado

    Muy interesante, como siempre, Guillermo. Gracias por compartirlo.
    Me parece que el último enlace no va bien.
    Canon EOS 5D y 350D | Canon EF 50 1.8 MkI, EF 70-300 IS USM | Tamron SP AF 90 (172E), SP AF 24-135 (190D) | CZ Flektogon 2.4/35 MC, Planar 1.7/50 T* | Porst MC 2.8/35, 2.8/135 | Fuji X100S


  3. #3
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado

    Le he añadido el www por si era eso, pero lo acabo de descargar y revelar en el móvil sin problema (se ha bajado con extensión TIFF, pero eso suele ocurrir, desconozco por qué. Es un RAW).

    Salu2!

  4. #4
    Fecha de Ingreso
    ago 2007
    Ubicación
    Madrid
    Mensajes
    8.289

    Predeterminado

    Desde el ordenador el último enlace me devuelve a esta página, los demás van bien. Con el móvil lo veo y descargo sin problema, también con extensión tiff.
    Última edición por u420067; 09/04/21 a las 16:17:40
    Canon EOS 5D y 350D | Canon EF 50 1.8 MkI, EF 70-300 IS USM | Tamron SP AF 90 (172E), SP AF 24-135 (190D) | CZ Flektogon 2.4/35 MC, Planar 1.7/50 T* | Porst MC 2.8/35, 2.8/135 | Fuji X100S


  5. #5
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado

    Yo creo que tiene que ver con que mi web, al no soportar https, está proscrita en los foro, antivirus,... En fin ya me fastidia el tema, pero más me invade la pereza pensar en ponerme a averiguar cómo se logra el certificado.
    En W10 con botón derecho sobre el enlace más "Guardar enlace como..." me he podido bajar el DNG en el PC sin problema.

    Salu2!

  6. #6
    Fecha de Ingreso
    jun 2013
    Ubicación
    Galicia
    Mensajes
    2.275

    Predeterminado

    Si, lo de tus fotos es curioso, en el tapatalk se ven pero en el Pc no.
    Estuve trasteando y se puede sacar un histograma de lo mas esplendido sin molestarse demasiado.

    Pues la verdad que muy bien.
    6 pasos, quien lo diria.
    Última edición por quietman1965; 09/04/21 a las 18:28:17

  7. #7
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado

    Cita Iniciado por quietman1965 Ver Mensaje
    Si, lo de tus fotos es curioso, en el tapatalk se ven pero en el Pc no.
    Eso es cortesía de Tapatalk, que detecta los enlaces a archivos de imagen como imágenes y las muestra, mientras que en los foros un enlace permanece como tal, y para ver la imagen hay que ir haciendo clic en cada uno, lo que es un rollo. Así que por desgracia mis posts se leen mucho mejor en Tapatalk. Las imágenes las pongo como enlaces porque si pongo el IMG directamente el motor del foro oculta la imagen. También podría subir las imágenes a algún servidor, pero ahí entra en juego de nuevo mi pereza

    Salu2!

  8. #8
    Fecha de Ingreso
    may 2007
    Ubicación
    BCN - CAT
    Mensajes
    20.976

    Predeterminado

    Botón derecho contextual(pc) encima de la url > "copiar dirección del enlace" > pegar en el navegador > y descargar al ordenador. A mi me baja un .dng (?)
    Me lo volveré a leer a ver que es un RAW del DNG HDR (ya a mi edad....). Desconozco esa cam. Pero el tema parece muy interesante

    Salu2

    P.D. Ya la he visto. Pues tendrá 61Mpx!! (500 € mas si queremos visor), pero no es mi tipo, lo siento

    P.D. Y la lata que dan los servidores con el puñetitas https
    Última edición por enricvision; 09/04/21 a las 20:10:49
    Flickr
    70D+G5 X+G12+IXUS115HS+Tamron 17-50mm f/2.8+Canon 100mm Macro+Canon 70-300mm IS+Samyang 8mm+Tr Giottos

  9. #9
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado

    Creo que has mezclado cámaras de dos hilos Enric. Éste está construido con RAWs de mi Sony A7 II y busca obtener un RAW único de muy alto rango dinámico.

    En el otro hilo hablaba de la Sigma de 61Mpx (por cierto a lo mejor me prestan una), pero el ejercicio seguía usando RAWs de la Sony, para ver la mejora del stacking en el dominio RAW.

    Salu2!

  10. #10
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado 3 tomas separadas 3EV

    He generalizado la rutina para admitir cualquier número de archivos RAW con cualquier diferencia de exposición entre ellos. El resultado de nuevo es un RAW con la misma exposición que el de menor exposición de todos ellos pero sin ruido en las sombras.

    Para la misma escena de antes se ha añadido un RAW intermedio que deseché en la otra fusión. La imagen no cambia nada de aspecto, pero ciertos saltos de presencia de ruido que eran visibles en algunas superficies, ya no lo son. El problema de esta fusión RAW es que se llega a los límites de rango dinámico que soporta un RAW lineal de 16 bits y empiezan los indicios de posterización:

    http://www.guillermoluijk.com/misc/rawhdr_2vs3.jpg

    Por lo que he visto el formato DNG soporta poder codificar los valores RAW de forma no lineal (lo que solucionaría el problema) con una LUT que permita al revelador RAW deshacer la curva no lineal (meta info.SubIFDs{1}.LinearizationTable). Si no me vence la pereza quizá lo intente.

    Las exposiciones relativas entre RAWs (que se ajustaron a 3EV en la cámara), fueron:
    Código:
    Relative exposures (EV): 3.02 6.02
    La rutina también informa de qué % de la superficie del sensor se usa para calcular la exposición relativa entre RAWs:
    Código:
    Data participating in relative exposure calculation (%): 10.01 30.84
    Desviaciones de exposición de la cámara:
    http://guillermoluijk.com/misc/relex..._histogram.png

    Se calcula también la aportación de cada RAW al resultado:
    Código:
    Contribution of raw1.tiff: 20.21%
    Contribution of raw2.tiff: 16.67%
    Contribution of raw3.tiff: 63.12%
    Si alguien quiere jugar con el RAW: http://www.guillermoluijk.com/misc/hdr_3shots.dng

    Código:
    library(tiff)
    
    
    # PARAMETERS
    N=3  # number of RAW files to merge
    NAME="raw"  # RAW filenames
    gamma=1  # output gamma
    # NOTE: only gamma=1 guarantees correct colours but could lead to posterization
    
    
    # READ RAW DATA
    
    # RAW files must be named: raw1.dng, raw2.dng,... from lower to higher exposure
    # RAW extraction using  DCRAW: dcraw -v -d -r 1 1 1 1 -S 16376 -4 -T *.dng
    img=list()
    txt=list()
    for (i in 1:N) {
        img[[i]]=readTIFF(paste0(NAME, i, ".tiff"), native=F, convert=F)
        txt[[i]]=paste0(NAME, i, "vs", NAME, i+1)
    }
    
    
    # RELATIVE EXPOSURE CALCULATIONS
    MIN=2^(-5)  # from -5EV... (NOTE: MIN must be >= bracketing EV intervals)
    MAX=0.95  # ...up to 95%
    
    indices=list()
    exprel=list()
    f=array(-1, N-1)
    for (i in 1:(N-1)) {
        indices[[i]]=which(img[[i]]>=MIN & img[[i]]<=MAX &
                           img[[i+1]]>=MIN & img[[i+1]]<=MAX)
        exprel[[i]]=img[[i+1]][indices[[i]]]/img[[i]][indices[[i]]]
        f[i]=median(exprel[[i]])  # linear exposure correction factor
    }
    print("Relative exposures vs lowest exposure shot (EV):")
    print(round(log(cumprod(f),2),2))
    
    # Relative exposure histograms
    png("relexposure_histogram.png", width=640, height=320*(N-1))
    par(mfrow=c(N-1,1))
    for (i in 1:(N-1)) {
        flog=log(f[i],2)
        rflog=round(flog)
        exprelog=log(exprel[[i]],2)
        hist(exprelog[exprelog>=rflog-1/3 & exprelog<=rflog+1/3],
             main=paste0('Relative exposure histogram (', txt[[i]], ')'),
             xlab=paste0('EV (calculated: ', round(flog,2), 'EV)'),
             breaks=seq(rflog-1/3, rflog+1/3, length.out=800)
        )
        abline(v=flog, col='red')  # calculated relative exposure
        abline(v=rflog, col='gray', lty='dotted')  # closest int EV mark
    }
    dev.off() 
    
    # Relative exposure calculation map
    solape=array(-1, N-1)
    for (i in 1:(N-1)) {
        mapacalc=img[[i]]*0
        mapacalc[indices[[i]]]=1  # 1=pixel participated in the calculation
        writeTIFF(mapacalc, paste0("mapacalc_", txt[[i]], ".tif"),
                  bits.per.sample=8, compression="LZW")
        solape[i]=length(indices[[i]])/length(img[[i]])  # % of data participating
    }
    print("Data participating in relative exposure calculation (%):")
    print(round(solape*100,2))
    
    
    # BUILD HDR COMPOSITE
    hdr=img[[1]]  # start with lowest exposure
    mapafusion=img[[i]]*0+1
    for (i in 2:N) {
        indices=which(img[[i]]<=MAX)  # non-clipped highest exposure
        hdr[indices]=img[[i]][indices]/cumprod(f)[i-1]  # overwrite+exp correction
        mapafusion[indices]=i
    }
    
    if (max(hdr)<1) print(paste0("Output ETTR'ed by: +",
                                 round(-log(max(hdr),2),2), "EV"))
    writeTIFF((hdr/max(hdr))^(1/gamma), "hdr.tif", bits.per.sample=16,
              compression="none")
    
    # Fusion map and RAW data files contributions
    writeTIFF((mapafusion-1)/(N-1), "mapafusion.tif",
              bits.per.sample=8, compression="LZW")
    for (i in 1:N) print(paste0("Contribution of ", NAME, i, ".tiff: ",
                round(length(which(mapafusion==i))/length(mapafusion)*100,2),"%"))
    
    
    
    # Bit decimation
    # 10, 12, 14 bits versions -> 1024, 4096, 16384 levels
    for (bits in seq(10,14,2)) {
        hdr2=round(hdr*(2^bits-1))
        writeTIFF((hdr2/max(hdr2))^(1/gamma), paste0("hdr_",bits,"bits.tif"),
                  bits.per.sample=16, compression="none")
    }
    Última edición por Guillermo Luijk; 11/04/21 a las 18:40:23

  11. #11
    Fecha de Ingreso
    nov 2006
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    4.911

    Predeterminado Bits del RAW y posterización

    Añado una nueva prueba que viene muy bien para entender por qué a mayor rango dinámico de un sensor se requieren más bits en la codificación de los RAW para que no aparezca posterización. Los bits no dan el rango dinámico, pero sin una cantidad de bits igual o superior a la necesaria para soportar el rango dinámico del sensor aparece posterización.

    http://guillermoluijk.com/misc/hdrposterizacionbits.jpg

    Para la escena que teníamos, de 12-13 pasos de rango dinámico, el RAW de 14 bits (la mayoría de actuales) aguanta el tipo, pero con 12 bits (réflex digitales antiguas y M4/3) ya aparece posterización, que se nota mucho más aún si el RAW es de solo 10 bits (como los de la mayoría de móviles).

    Si alguien quiere jugar con los RAWs:

    http://www.guillermoluijk.com/misc/h...ots_10bits.dng
    http://www.guillermoluijk.com/misc/h...ots_12bits.dng
    http://www.guillermoluijk.com/misc/h...ots_14bits.dng

    Salu2!
    Última edición por Guillermo Luijk; 11/04/21 a las 13:49:01

  12. #12
    Fecha de Ingreso
    may 2007
    Ubicación
    BCN - CAT
    Mensajes
    20.976

    Predeterminado

    Cita Iniciado por Guillermo Luijk Ver Mensaje
    Creo que has mezclado cámaras de dos hilos Enric. Éste está construido con RAWs de mi Sony A7 II y busca obtener un RAW único de muy alto rango dinámico.Salu2!
    Lo que indica que me he pasado por todos los enlaces que pusiste. Y tienes razón.

    Salu2

    Esos 3 últimos enlaces ya no me sirve mi truco. Vale, ya sé lo que es. No puedo copiar y pegar esas urls porque el foro le ha puesto puntitos para reducir la url
    Solucionado (para bajar al ordenador). Resaltar la url y botón derecho y "Copiar dirección de enlace", pegar en el navegador
    Última edición por enricvision; 12/04/21 a las 10:20:49
    Flickr
    70D+G5 X+G12+IXUS115HS+Tamron 17-50mm f/2.8+Canon 100mm Macro+Canon 70-300mm IS+Samyang 8mm+Tr Giottos

Página 1 de 2 12 ÚltimoÚltimo

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •