21/05/2008, 11:15#1
Etapas del revelado con perfectRAW
Aprovecho que _GUI_ ha puesto las etapas de revelado en un subforo para ampliar la información del flujo de revelado, ponerla aquí para todos y que quede como documentación del proyecto.
He indicado en qué punto se escoge cada buffer (justo después del paso indicado). Falta separar los pasos 6 y 7 y que el buffer 2 se tome justo después del paso 4 y no del 5 para enviarlo a perfectBLEND y que perfectBLEND lo devuelva y se inserte en ese punto, porque los pasos 5, 6, 7 y 8 se hacen ahora dentro de la función scale_colors() de Coffin).
He marcado en negrita los pasos que llevan más tiempo y en verde los que dependen de parámetros especificados por el usuario desde la aplicación. Obviamente algunos pasos se saltan en función de los parámetros de revelado especificados.Aclaro algunos aspectos para el que pueda andar despistado:
- Lectura del archivo RAW (buffer 0)
- Sustracción de black frame (buffer 1)
- Generación de patrones sintéticos (falta definirlos bien)
- Equilibrado de canales verdes (modo)
- Ajuste negro y sat. de cámara (por defecto de dcraw o de usuario)
- Balance de blancos (método)
- Eliminación de ruido (umbral)
- Aberraciones cromáticas (parámetros) (buffer 2, de momento)
- Interpolación Bayer (algoritmos) (buffer 3)
- Mezclado de canales verdes (hasta aquí RGGB, a partir de aquí RGB)
- Filtros mediana para eliminar artefactos de color (pasos)
- Recuperación de altas luces (método) (buffer 4) <- Buffer cambiado de posición a petición de _GUI_
- Corrección de exposición (modos)
- Conversión a RGB con dos posibles caminos (para la versión 1.0):
- Si se pide salida a disco/clipboard:
- Conversión a perfil de color escogido por el usuario
- Gamma escogida por el usuario (en dcraw.dll)
- Salida a TIFF por disco/clipboard (buffer 5)
- Si es para mostrar en pantalla:
- Conversión a perfil de color sRGB (buffer 5)
- Gamma sRGB (en perfectRAW.dll)
- Histograma total (hasta aquí se hace una sola vez en la imagen, a partir de aquí se hace en cada fotograma que muestra el GUI al desplazarnos o hacer zoom).
- Cálculo chivato zonas quemadas (solo porción de la imagen, si activo y si el reloj lo indica)
- Histograma parcial (sólo porción de la imagen si se pide mostrarlo)
- Conversión a 8 bits (sólo porción de la imagen)
- Salida por pantalla (sólo porción de la imagen)
Sería bueno confirmar ahora que todo es correcto.
- dcraw NO convierte a float, trabaja internamente con ushort (16 bits), no en 32 bits. Pasa de ushort a float y de nuevo a ushort EN CADA OPERACIÓN en la que es necesaria la precisión de un float, es decir, acumula errores de redondeo en cada operación. Si la precisión es suficiente con este método es algo que hay que evaluar viendo la imagen resultante y el histograma, yo diría que sí, pero estoy seguro que los dientes de sierra que aparecen al ampliar lo histogramas con histogrammar se deben a esos errores de redondeo acumulados. Imposibles de detectar en la imagen final. No creo que otros reveladores trabajen realmente a 32 bits todo el rato porque TAMBIÉN producen esos dientes de sierra.
- Todos los buffers indicados arriba son de 16 bits, porque así los entrega dcraw. perfectRAW trabaja a 16/32 bits hasta el momento final de presentación por pantalla. Todas las operaciones, salvo el redondeo a 8 bits que se hace con desplazamientos de bits, se calculan en float.
- La gamma que se muestra en pantalla NO se aplica dentro de dcraw.dll, sino en perfectImage.dll y es una gamma sRGB exacta aplicada a 16 bits mediante una LUT completa, es decir, sin interpolación, e inmediatamente convertido el resultado a 8 bits (pero la gamma se aplica sobre 16). Aunque en perfectRAW se elija una gamma/espacio de color distintos a sRGB no se verá ninguna diferencia en la pantalla. Sólo al grabar en TIFF se verá el resultado y eso implicará volver a revelar el archivo antes de grabar pidiendo, esta vez sí, a dcraw.dll que revele con el espacio de color y gamma de salida (solo es la última etapa del revelado, por lo que tardará poco). En futuras versiones habrá que meter gestión de color al GUI para mostrar en pantalla la gamma real.
- Cuando manejemos la escritura en DNG quitaré lo de la generación de patrones sintéticos, pues podremos generar DNGs sintéticos para evaluar los algoritmos de interpolación de distintos reveladores, de momento servirá para evaluar el propio perfectRAW.
- Lo del histograma parcial (de lo que muestra la vista) se ha comentado alguna vez, pero no se ha definido.
- Los buffers 0, 2 y 4 son susceptibles de no ser guardados si por los parámetros especificados recalcularlos es rápido y queremos ahorrar memoria. De hecho, el 0 no se está guardando ya.
Un saludo:
Última edición por ManuelLlorens; 26/05/2008 a las 10:56
No hay comentarios:
Publicar un comentario