TUTORIAL HISTOGRAMMAR Creado 18 Jul 2007 Actualizado 13 May 2009 |
QUÉ ES HISTOGRAMMARHistogrammar es un programa gratuito que he diseñado con la finalidad de representar con el máximo grado de detalle el histograma de una imagen.Una imagen de 16 bits dispone de 65536 niveles totales codificables para cada canal; sin embargo los histogramas que representa Photoshop y la mayoría de herramientas son una agregación de dichos niveles típicamente en 256 valores. Eso significa que bajo cada una de las líneas verticales que presenta un histograma de PS se encuentran agregados 256 niveles reales de la imagen. Una representación de este tipo es suficiente en la mayoría de casos, pero si queremos hacer un análisis un poco más a fondo hemos de acudir a una visualización más detallada del histograma de la imagen. A continuación se muestra un ejemplo de histograma real representado en el rango habitual donde los niveles posibles para cada canal han sido restringidos al rango de 256 valores, y lo que se obtendría al hacer una ampliación de una zona específica del mismo gracias a un histograma de 16 bits. Fig. 1 Histograma clásico agregado en 256 niveles. Fig. 2 Visión ampliada (zoom 16x) de las altas luces. Fig. 3 Visión aún más ampliada (zoom 128x) del extremo final de las altas luces. Las representaciones ampliadas permiten por ejemplo descubrir que hay unos pocos píxels en los que el canal rojo se ha quemado, lo cual no se podía llegar a detectar en la visión agregada. Histogrammar además permite la representación del histograma en escala logarítmica, lo que resulta de gran utilidad para constatar el rango dinámico real de la escena captada por pasos de diafragama. También está preparado para mostrar con todo grado de detalle histogramas RAW, siempre que la extracción de los datos RAW se haya hecho con DCRAW y los comandos apropiados que veremos. ABRIR UN ARCHIVO DE IMAGENLo primero que se ha de hacer en Histogrammar para calcular el histograma de una imagen es abrirla con el botón marcado con puntos suspensivos. Los tipos de archivo que en principio permite abrir Histogrammar son TIFF (tanto de 8 como de 16 bits), JPEG y BMP.Lo normal es utilizar una herramienta de este tipo para analizar archivos TIFF de 16 bits; sin embargo es totalmente posible abrir archivos de 8 bits como se ha indicado. En cualquier caso el histograma siempre se representará usando una base de 16 bits, con lo cual no ha de sorprendernos que al abrir un archivo de 8 bits los niveles aparezcan separados entre sí por franjas de 255 huecos en el histograma. Obtener una representación más clara de este tipo de histogramas no es problema gracias a las opciones de escalado en el eje X que veremos después. Histogrammar usa la librería gráfica de 16 bits diseñada por Pierre E. Gougelet, la cual permite abrir una larga lista de formatos gráficos incluidos archivos RAW de las principales cámaras del mercado. De ese modo, aunque sin garantía total de éxito, se puede tratar de abrir archivos de un tipo diferente a los propuestos introduciendo en el menú de abrir archivo antes comentado el comodín correspondiente (*.cr2, *.nef, *.gif, *.*,...), lo que nos mostrará todos los archivos no contemplados en origen. En el caso de archivos RAW la propia librería llevará a cabo un revelado RAW básico ante el que hay que ser cautos ya que no sabremos nada sobre los parámetros empleados. Estos podrían ser muy diferentes a los que usamos en nuestro revelador RAW habitual, y por tanto diferir bastante en el resultado. Fig. 4 Abrir un archivo de imagen en Histogrammar. Una vez seleccionada la imagen en breves instantes Histogrammar mostrará el histograma y todas las opciones de usuario que hasta ahora aparecían desactivadas se habilitarán. MODO LINEAL vs MODO LOGARÍTMICO Y GAMMAComo se ha comentado, Histogrammar permite representar el histograma tanto en modo lineal (el que estamos habituados a ver en casi todas las aplicaciones gráficas), como en modo logarítmico.Para pasar de un modo a otro de representación basta pulsar la opción 'Linear → Log' o 'Log → Linear' según el modo en que nos encontremos. QUÉ ES UN HISTOGRAMA LOGARÍTMICOUn histograma logarítmico es aquel que muestra una serie de divisiones verticales equiespaciadas correspondientes a los pasos de diafragma de la imagen analizada. El eje X de un histograma logarítmico no muestra por tanto una serie lineal de niveles sino logarítmica, donde cada una de las divisiones mencionadas representa un nivel el doble que la precedente y la mitad que la siguiente división.A continuación se muestra la correspondencia entre los niveles del anterior histograma lineal real y su correspondiente histograma logarítmico. Puede verse como toda la segunda mitad del histograma lineal corresponde únicamente al diafragma más alto del histograma logarítmico, el siguiente cuarto del histograma lineal corresponde al segundo diafragma, y así sucesivamente. Fig. 5 Correspondencia de niveles entre histograma lineal (arriba) y logarítmico (abajo). En un histograma logarítmico correcto el nivel 0 no tiene cabida y por tanto los puntos a negro de cada canal son excluidos de la gráfica. Estrictamente hablando corresponderían al diafragma menos infinito (si no veis claro esto probad a calcular el logaritmo de cero). También se descartan los píxels quemados de la imagen, que pese a aglutinarse en el máximo (nivel 65535 en 16 bits, nivel 255 en 8 bits), lo hacen porque simplemente no había niveles mayores codificables, habiendo alcanzado la saturación del sensor. En términos de luminosidad de la escena real pertenecerían a diafragmas superiores al máximo registrable por el sensor con el grado de exposición que se empleó en la toma. En total se calculan 16 diafragmas (en el ejemplo de arriba por simplicidad se han visualizado los 8 más altos), ya que es el máximo número de pasos codificable en 16 bits. Hay que saber interpretar sin embargo con cautela el significado de los diafragmas más bajos, ya que nuestra cámara por lo general no va a ser capaz de registrar un rango dinámico más allá de los 8 diafragmas superiores. Así cualquier nivel que caiga en los diafragmas inferiores lo hará no tanto porque sea ésa su posición lumínica real en el sistema de zonas de la escena, sino porque el ruido presente en las sombras ha acabado propiciando que sea codificado en él en lugar de aparecer en negro puro. Tiene sentido no obstante calcular tantos diafragmas porque en el caso de imágenes obtenidas de la fusión de diferentes tomas con distintas exposiciones, sí podremos traspasar los límites físicos de rango dinámico del sensor. Se podrán así registrar correctamente más diafragmas de los que se pueden captar en una sola toma. AJUSTE DEL VALOR DE GAMMAPara que la interpretación del histograma logarítmico sea correcta, es imprescindible informar a Histogrammar sobre la gamma en que va codificada la imagen analizada ya que él por sí mismo no es capaz de conocerla. También será preciso informar de este parámetro si en modo lineal pretendemos representar las divisiones de los pasos de diafragma correctamente.La gamma es un parámetro normalmente intrínseco al perfil de color en que se codifica la imagen. Así las imágenes en Adobe RGB tienen normalmente una gamma 2,2, mientras que aquellas que están en ProPhoto RGB tienen una gamma 1,8. Las imágenes en sRGB tienen una gamma aproximadamente 2,2, pero no del todo exacta en las sombras por lo que los histogramas logarítmicos de imágenes sRGB que genera Histogrammar no serán del todo correctos en los diafragmas más bajos. Por otro lado las imágenes reveladas en DCRAW, por una peculiaridad de diseño de éste son siempre lineales, es decir tendrían una gamma 1,0 independientemente del perfil de color de salida escogido en el revelado. Para saber más sobre el parámetro gamma puede consultarse el artículo Compensación gamma. DCRAW con gamma. Lo importante en Histogrammar es que siempre que deseemos calcular histogramas logarítmicos por pasos de diafragma, o bien representar correctamente las líneas correspondientes a cada uno de estos en un histograma lineal, deberemos cerciorarnos de haber escogido la gamma correcta. La gamma se selecciona con el slider llamado 'Image encoded gamma', y tan pronto lo movamos y soltemos provocará un recálculo del histograma teniendo en cuenta el nuevo valor. Por defecto Histogrammar arranca asumiendo una gamma 2,2, ideal por lo tanto para imágenes en Adobe RGB. UTILIDAD DE UN HISTOGRAMA LOGARÍTMICOLa ventaja principal de un histograma logarítmico es establecer una correspondencia directa entre la distribución lumínica en diafragmas calculada sobre dicho histograma, y la distribución lumínica real que tuviera la escena en que la imagen fue captada. Para que se de tal coincidencia solo hace falta un requisito: que el histograma se haya calculado sobre una imagen revelada de manera totalmente neutra, es decir, con todos los ajustes a 0 en el revelador RAW.Cumpliéndose esta simple premisa, y elegida la gamma correcta usada en el revelado, por linealidad del sensor podremos estar seguros de que la distribución de diafragmas que nos muestra Histogrammar corresponderá de manera precisa al reparto de información luminosa por diafragmas que se daba en la escena en el momento de la toma. Tomamos los datos provenientes de la siguiente escena elegida deliberadamente por su alto contraste: Fig. 6 Escena analizada con Histogrammar. Con un revelado neutro de dicha imagen y ajustando en Histogrammar la gamma adecuada (1,0 en este caso por provenir de un revelado con DCRAW) podemos obtener el siguiente histograma en modo logarítmico, el cual mostrará por tanto la distribución luminosa real del lugar: Fig. 7 Histograma logarítmico (muestra el rango dinámico real de la escena). Se constata que la escena registrada abarcaba casi 13 diafragmas de rango dinámico real, correspondiendo cada división vertical a un diafragma. Os preguntaréis cómo es posible si la Canon 350D es incapaz de captar tanto rango dinámico en una sola toma. La respuesta es que la imagen mostrada proviene de la fusión de 3 tomas separadas entre sí 3 pasos utilizando la técnica comentada en Fotografía con cero ruido. Éste es el tipo de imágenes que dan sentido a una representación logarítmica de hasta 16 diafragmas como comentaba en el apartado anterior. MOTIVACIÓN PARA UN HISTOGRAMA LOGARÍTMICOLa motivación principal de introducir un modo logarítmico en Histogrammar es que, para mi sorpresa, no lo he visto en ninguna otra aplicación existente. Y lo considero de gran interés por ser un concepto 100% fotográfico.Incluso los histogramas presuntamente logarítmicos que presentan las cámaras en su display, con divisiones verticales que hacen pensar en diafragmas, no lo son en realidad. Basta para ello hacer una prueba alterando consecutivamente la exposición en un paso y comprobar como el histograma no avanza/retrocede en una cantidad constante a cada cambio. O bien comprobar como el negro se acumula en el origen del eje X, lo que como se ha comentado al principio no es conceptualmente correcto en una representación estrictamente logarítmica. MODO RGB vs MODO RAWPor defecto Histogrammar funciona en modo 'RGB', en el cual espera le sea suministrada una imagen en color para representar el histograma de sus tres canales como en cualquier otra herramienta.Sin embargo me ha parecido muy útil añadir un modo 'RAW' adicional, con el que poder representar la información de los archivos RAW tal cual ésta se encuentra codificada en los mismos. Para pasar de un modo a otro de representación basta pulsar la opción 'RGB → RAW' o 'RAW → RGB' según el modo en que nos encontremos. IMPORTANTE: a diferencia de los modos lineal y logarítmico, aplicables a un mismo archivo de imagen, la elección del modo 'RGB' o 'RAW' está condicionada por el tipo de archivo analizado. Con archivos de imagen normales solo aplicará el modo 'RGB', mientras que el modo 'RAW' solo tendrá sentido aplicado a archivos obtenidos expresamente como veremos inmediatamente. El modo 'RAW' es de gran utilidad en el estudio avanzado del archivo RAW para realizar cosas tales como detectar indicios de ISOs forzados, compresión destructiva en los datos RAW, o realizar un cálculo exacto de los puntos negro y de saturación de nuestra cámara, temas tratados en otros artículos. EXTRACCIÓN RAWPara obtener el histograma de un determinado archivo RAW, éste no será leido directamente desde Histogrammar. La extracción RAW habrá de hacerse externamente, utilizando uno de los comandos de extracción RAW de DCRAW que se muestran a continuación:
dcraw -v -D -4 -T -t 0 archivo.cr2
Con el primero se realiza una extracción RAW pura, es decir, los niveles obtenidos se codifican exactamente con los mismos valores que tuvieran en el archivo RAW. En cámaras Canon esta extracción no pasará por 0 y por lo tanto si pasamos a modo logarítmico el histograma obtenido carecerá de sentido ya que el paso por 0 es un requisito para representar la información por pasos de diafragma. El segundo comando en cambio, sin dejar de ser una extracción sin demosaicing, realiza los ajustes del punto negro (solo tiene efecto en cámaras Canon), del punto de saturación para que éste llegue al máximo de la escala, y además convierte los datos de la escala de bits del RAW a una escala de 16 bits. Esto significa que sí será apto para representaciones logarítmicas coherentes. Ambos comandos generan un archivo TIFF monocromo en escala de grises donde se respeta el patrón de Bayer de la cámara. Es el modo 'RAW' de Histogrammar el que ha de interpretar correctamente a qué color corresponde cada uno de los píxeles de dicho TIFF en función de su posición, y contabilizar su valor en el histograma correspondiente. Por ello en los histogramas RAW veremos que el canal G abarca el doble de píxeles (es decir, tiene el doble de presencia) que los canales R o B, debido a que en la matriz de Bayer hay el doble de píxeles G que R o B. Veamos un ejemplo de cada tipo de extracción RAW: Realizando una extracción RAW pura con dcraw -D podemos ver por ejemplo que el negro del RAW analizado no arranca en el nivel 0, sino de un valor mayor próximo a 255. Esto como decíamos es habitual en las cámaras Canon y una ventaja en algunos aspectos para ellas:Fig. 8 Histograma RAW lineal obtenido con dcraw -D. Ahora en cambio realizamos la extracción con dcraw -d , obteniendo así una imagen verdaderamente linealizada. Aprovechamos esto para obtener un histograma logarítmico por pasos de diafragma válido:Fig. 9 Histograma RAW logarítmico obtenido con dcraw -d. Puede verse que el rango dinámico era de unos 8,5 pasos al ser ese el rango a lo largo del que se distribuye la información. IMPORTANTE: los archivos RAW son siempre lineales, por lo tanto estas extracciones RAW realizadas con DCRAW también lo son. Ello significa que hemos tenido que ajustar una gamma 1,0 para obtener correctamente el anterior histograma logarítmico. En modo 'RAW', deberemos asociar siempre histograma logarítmico a una gamma 1,0. Por defecto Histogrammar está ajustado para que se asuma un patrón RGGB del RAW que es el habitual en Canon. Si en la cámara en cuestión se empleara cualquier otro patrón bastaría con elegirlo de entre los 4 posibles: RGGB, BGGR, GRBG o GBRG. Esta opción está disponible en los 4 botones de colores anexos al de cambio de modo. Usar un patrón incorrecto dará lugar a una errónea interpretación del histograma, fácilmente detectable. Si por ejemplo los canales R y B aparecen perfectamente solapados, será signo inequívoco de que en realidad serían el canal G por lo que bastaría cambiar a un patrón donde el canal G cambie de posición. Y si el canal B alcanza más exposición que el canal R, cosa que rarísima vez ocurre, será indicio de que R y B están intercambiados con lo que bastará elegir el patrón que alterne R y B respecto al actual. CONTROLES DE VISUALIZACIÓNHistogrammar tiene una serie de controles de visualización para acomodar la salida gráfica a nuestro objeto de interés. Los diviremos en tres bloques: la barra de desplazamiento, las opciones de representación y los niveles de zoom:Fig. 10 Controles de visualización: barra de desplazamiento, opciones y zoom. BARRA DE DESPLAZAMIENTOCon ella podremos movernos por el histograma de principio a fin. En todo momento se indica encima de la gráfica el valor que representa el máximo del eje Y de la visualización actual, así como el sector actualmente visualizado y los niveles o diafragmas a que corresponde según el modo de funcionamiento activo.Asimismo la propia posición de la barra de desplazamiento nos da una idea de la zona del histograma que estamos representando, y su anchura representa qué porción del total del histograma es actualmente visible. OPCIONES DE REPRESENTACIÓN
NIVELES DE ZOOM Mención especial merecen los controles de zoom tanto en el eje X como en el eje Y:
Comentar que la barra de desplazamiento, los dos zoom, así como el marcado de los límites entre diafragmas, el etiquetado de las gráficas y la rejilla tienen memoria independiente para los modos de representación lineal y logarítmico. Así cuando pasemos de uno a otro se recuperarán la región del histograma bajo visualización, el grado de zoom en los ejes X e Y que se tuvieran previamente ajustados en el modo en cuestión y el marcado o no de los límites entre diafragmas, las etiquetas y la rejilla. ESTADÍSTICAS SOBRE LA IMAGEN ANALIZADAAl mismo tiempo que los niveles de cada píxel de la imagen son analizados para construir los histogramas, se hace un cierto análisis estadístico de la información contenida en el archivo de imagen que se muestra sumarizada al terminar los cálculos en la pantalla de estado.Tomando la imagen ejemplo la información suministrada era la siguiente:
Total pixels: 8038836 (3474x2314 image)
constando de los siguientes apartados:
Los parámetros 'gap std dev' y 'ampl std dev' miden precisamente esto, representando en % la desviación típica relativa respecto a la media de las separaciones entre los niveles no vacíos en el eje X del histograma (gap), y lo mismo para la distribución de amplitudes del histograma (ampl). Lo ideal es que estos % sean ambos lo menor posibles, de 0% en un caso ideal de distribución totalmente uniforme de niveles tanto en el eje X como en el eje Y del histograma. Sin embargo hay que decir que son medidas puramente numéricas que no tienen porqué condicionar exactamente el mejor de los posibles resultados subjetivos para nuestra imagen, y por tanto son orientativas. Cuando la imagen analizada es de 8 bits, si bien la gráfica ya se dijo que se representa en base a un histograma de 16 bits, las estadísticas toman como base la referencia de una imagen de 8 bits. Así un JPEG en el que aparezcan 200 niveles diferentes no nulos en el histograma se calificará con un 200/256=78% de niveles llenos. VOLCADO GRÁFICO DEL HISTOGRAMAEn todo momento con la opción 'Snapshot' puede realizarse un volcado al Portapapeles de la gráfica mostrada en pantalla que podrá pegarse luego en cualquier otra aplicación gráfica.Con la opción 'Save GIF' el volcado se llevará a cabo a un archivo GIF usando como ruta destino la ruta donde se encuentra la imagen analizada. El nombre del fichero de salida se indicará por pantalla e incluirá el nombre de la imagen. En general la imagen volcada tendrá 768 píxels de ancho, salvo en aquellos casos en los que hayamos ajustado un nivel de zoom para el eje X tal que el histograma ocupe menos del ancho total disponible. Así podrán obtenerse también gráficas de 512 y de 256 píxels de ancho dependiendo de dicho grado de zoom. REPRESENTACIÓN DE LA IMAGEN EN EL SISTEMA DE ZONASAprovechando las capacidades de Histogrammar para calcular el histograma logarítmico, le he añadido una funcionalidad conceptualmente muy fotográfica que hará las delicias de cualquier estudioso del Sistema de Zonas. Se trata de la posibilidad de representar por pasos de diafragma las zonas lumínicas de la imagen.Con la opción 'Zones' se generarán cuatro archivos GIF del mismo tamaño que la imagen bajo estudio, indicando en una escala de tonos de gris a qué diafragma pertenece cada uno de sus píxels. Los tres primeros archivos corresponden a cada uno de los canales RGB y el cuarto se trata de un agregado en luminancia. Mediante el control 'A/D' puede elegirse el tipo de gráfica:
Hay que decir no obstante que el sistema de zonas de Ansel Adams estaba orientado a la copia en papel, que es donde en realidad se puede hablar de zonas y no en la escena. La correspondencia entre diafragmas de la escena y zonas del sistema de zonas se da solo en las situaciones que él denominaba de contraste normal, que son aquellas precisamente en que el fotógrafo va a desear que se de esta relación uno a uno. El control auxiliar 'Y/N' permite elegir si en el margen derecho de los archivos GIF generados aparecerá o no una escala de grises indicando los diferentes tonos representativos de cada diafragma, que en el caso de Ansel Adams vendrán además etiquetados tal cual lo hizo su autor. IMPORTANTE: al igual que con el histograma logarítmico, para que este cálculo tenga sentido y lo obtenido sea la distribución real de luminosidad en la escena captada hemos de ajustar correctamente la gamma de la imagen analizada. Haciendo uso de esta facilidad para la imagen ejemplo del tutorial se obtienen las siguientes distribuciones: Fig. 11 Sistema de zonas de Ansel Adams de la escena. Fig. 12 Sistema de zonas de 16 bits de la escena. Imágenes con mucho ruido pueden presentar cierta granularidad en las transiciones de los diafragmas más bajos por causa del mismo. También puede aparecer granularidad en imágenes donde convivan píxels con diferencias de luminosidad considerables en un mismo área. Este último es el caso de la imagen ejemplo, que está prácticamente libre de ruido pero posee una textura en el suelo con diferencias de luminosidad importantes, de ahí la granularidad en las zonas limítrofes entre diafragmas. En paredes y techo en cambio no se da este fenómeno como puede apreciarse. Para que esta granularidad no distraiga del análisis zonal en sí mismo, es muy efectivo aplicar un filtrado de mediana a la imagen, o bien un desenfoque gaussiano seguido de posterización al número de tonos de grises con que se esté trabajando. IMÁGENES DE 15 BITS DE PHOTOSHOPLo más habitual en un flujo de trabajo de edición es que la imagen tarde o temprano pase por Photoshop. Hay que decir que PS, por motivos que el fabricante no aclara demasiado, automáticamente "roba" de nuestras imágenes el bit menos representativo por lo que hace en realidad una edición a 15 bits.Con esta pérdida de 1 bit se descarta la mitad del total de posibles niveles tonales para nuestras imágenes que pasan así de 65536 a 32768. En términos de rango dinámico, y siempre que hablemos de la imagen en su estado lineal, esto supone perder un diafragma completo de los 16 inicialmente disponibles. La cantidad de niveles es todavía más que suficiente para hacer todo tipo de edición sin problemas de posterización o similares por este concepto en la mayoría de casos, pero lo cierto es que no resulta agradable que le hagan a uno trabajar con la mitad de precisión sin saber muy bien el porqué y sobre todo sin avisar. En Histogrammar puede constatarse este fenómeno, y de hecho lo comento aquí para que nadie se asuste si analiza el histograma de una de sus fotografías favoritas y se da cuenta de que donde esperaba una gráfica continua hay en realidad un peine de niveles alternativamente llenos y vacíos. Tomando la imagen lineal usada como ejemplo en el tutorial, se muestra aquí el aspecto del histograma original de la misma con máximo grado de zoom y el que se obtiene tras abrirla y guardarla con PS, ambas en formato TIFF de 16 bits: Fig. 13 Histograma lineal original. Fig. 14 Histograma lineal tras abrir y guardar en PS. Visto lo visto quizá haya que revisar la consabida afirmación de que "TIFF es un formato sin pérdidas", y añadirle la coletilla "...siempre que no se pase por Photoshop!". Siendo estrictos Photoshop trabaja a 15 bits más un nivel. Así emplea un total de 32769 niveles: los pares de 0 a 32768, y los impares de 32769 a 65535. A efectos de riqueza tonal es una codificación de 15 bits. Si este contenido te ha resultado útil, considera realizar una contribución para asegurar la continuidad de esta web. Mantenerla supone un importante esfuerzo, así como un espacio y ancho de banda considerables en el servidor. Es una operación sencilla y totalmente segura. gluijk@hotmail.com |
TUTORIALES HOME |