|
HISTOGRAMMAR Creado 18 Jul 2007 Actualizado 24 Jul 2007 |
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 en el análisis de señales lineales para constatar el rango dinámico real de la escena captada y el grado de detalle con que fueron registrados los diferentes diafragmas. 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ÍTMICOComo 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ÍTMICO Un histograma logarítmico es aquel que muestra una serie de divisiones verticales equiespaciadas correspondientes a los diafragmas 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. CUÁNDO TIENE SENTIDO UN HISTOGRAMA LOGARÍTMICO La 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 en formato lineal. Cumpliéndose esta simple premisa, 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. Los reveladores RAW comerciales no permiten revelar la imagen en formato lineal. Para poder hacerlo no tenemos más que hacer uso del revelador DCRAW, que es por defecto un revelador lineal. Podemos usar Histogrammar para calcular el histograma en modo logarítmico de una imagen en formato no lineal (es decir una imagen habitual, con una curva de compensación gamma aplicada), pero el resultado no tendrá mucho sentido ya que no será un reflejo de la distribución de diafragmas real de la escena. También podremos calcular el histograma en modo lineal de una imagen en formato lineal, pero deberemos ser conscientes en ese caso de saber interpretar el resultado ya que en una imagen lineal los niveles están severamente desplazados hacia las sombras. Para todo el tutorial he empleado los datos provenientes de la siguiente escena elegida deliberadamente por su alto contraste: ![]() Fig. 6 Escena analizada con Histogrammar. Con un revelado en formato lineal de dicha imagen 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 de imagen lineal (muestra el rango dinámico real de la escena). Y también el histograma en modo lineal, sabiendo eso sí que la información se va a concentrar en las sombras debido a la ausencia de la compensación gamma: ![]() Fig. 8 Histograma lineal de imagen lineal. Las imágenes reveladas en formato lineal como ésta resultan sumamente oscuras si en su visualización no se tiene en cuenta la ausencia de compensación gamma. Esto no supone ningún problema de cara a hacer los cálculos del histograma. Al contrario, la información está íntegra y su condición lineal es precisamente la que permite que el resultado del histograma logarítmico coincida con la distribución lumínica real de la escena donde fueron captadas. Sobre el histograma logarítmico 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. En cambio si llevamos a cabo el habitual revelado con compensación gamma obtendremos el clásico histograma en modo lineal al que estamos acostumbrados debido a la expansión de las sombras hacia las luces propias de la corrección aplicada: ![]() Fig. 9 Histograma lineal de imagen con compensación gamma aplicada. MOTIVACIÓN PARA UN HISTOGRAMA LOGARÍTMICO La 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. 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 de representación y zoom. BARRA DE DESPLAZAMIENTO Con 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 y el etiquetado de las gráficas 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 y sus etiquetas. 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. 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 partir necesariamente de una imagen en formato lineal. 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, 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 un histograma continuo hay en realidad un peine de niveles alternativamente llenos y vacíos. Tomando la imagen lineal usada como ejemplo de todo 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!". Tengo que confirmarlo, pero creo que curiosamente hasta la mitad del histograma los niveles llenos son los pares (0, 2, 4,...), mientras en la segunda mitad del histograma los niveles usados son únicamente los impares (..., 65531, 65533, 65535). Esto quizá se deba a alguna cuestión de aritmética de números enteros. gluijk@hotmail.com |
|