[PÍLDORA 9] Ciencia de color?
Publicado: Vie Abr 09, 2021 1:00 am
El mito de la "Ciencia" de color, o de cuáles son nuestros JPEG favoritos:
Los fotocaptores del sensor están cubiertos por unos filtros rojos, verdes y azules:
[img]https://4.bp.blogspot.com/-RDm4oejf6Io/Wv4ewX_W9lI/AAAAAAAADhQ/GyWGhJKn0cYei-zdOt6l7_Ycun1F1SnDwCLcBGAs/s1600/bayerpattern.png[/img]
Esto hace que a cada fotocaptor le llegue una zona del espectro de frecuencias: ejemplo Canon 40D (puede resultar curioso que en la zona de IR las respuestas de cada filtro aumenten; es habitual):
[img]https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/c6224b4e-c45c-47e0-8647-842b80c6955c/d34pvp0-be218f58-d1fe-4a01-ba22-17a28bfc841a.jpg/v1/fill/w_721,h_460,q_75,strp/canon_40d_spectral_response_by_okavanga_d34pvp0-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3siaGVpZ2h0IjoiPD00NjAiLCJwYXRoIjoiXC9mXC9jNjIyNGI0ZS1jNDVjLTQ3ZTAtODY0Ny04NDJiODBjNjk1NWNcL2QzNHB2cDAtYmUyMThmNTgtZDFmZS00YTAxLWJhMjItMTdhMjhiZmM4NDFhLmpwZyIsIndpZHRoIjoiPD03MjEifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6aW1hZ2Uub3BlcmF0aW9ucyJdfQ.P0PPzxSRssZSHONINpj94_rZtPlr33_SUNJ9zL0O7fk[/img]
Con esos filtros cada fotocaptor captura una cantidad de fotones proporcional a los que la escena fotografiada reflejase en su banda del espectro. Estos fotones capturados se traducen en un valor numérico: si a un fotocaptor llegan 3000 fotones, su nivel RAW será (me lo invento) 1000. Si repetimos la foto con el doble de tiempo de exposición llegarán entorno a 6000 fotones y el número registrado en el RAW para ese fotocaptor pasará a 2000 aprox.
Esos números que representan niveles rojos, verdes y azules no sirven para formar directamente una imagen (se vería muy verde, como ésta). A esos números se les debe aplicar 3 pasos:
[img]http://www.guillermoluijk.com/misc/forwardmatrix.png[/img]
(Jack Hogan)
Esto no es más que una combinación lineal de los valores RGB para formar los XYZ:
Es decir, los tres canales capturados (RGB) participan en la formación de los tres nuevos valores (XYZ), pero cada uno con pesos diferentes.
Los valores de la matriz son propios para cada sensor, incluso se pueden obtener para cada cámara individual y tipo de iluminación. Esta conversión matricial es muy simple, es un buen resultado estándar pero puede mejorarse con un perfil un poco más complejo basado generalmente en LUT's (es decir como las curvas de Photoshop).
Lo importante es entender que el objetivo de la transformación es llevar los valores RGB (captura) a otro espacio, es decir otros valores, XYZ generalmente (estándar e independientes del dispositivo). Convertir de XYZ a cualquier espacio de color de salida como sRGB, AdobeRGB,... es una transformación conocida estándar (en la web de Bruce Lindbloom están todas):
[img]https://1.bp.blogspot.com/-G7GbaskdXkc/XQggz8UoURI/AAAAAAAAGuY/D0x-XEYFhuwB22jI6ovKVaFQKHhlEMZCACLcBGAs/s1600/colour_spaces.png[/img]
Tengo desde hace más de un año pendiente de terminar un ejercicio completo de calibración que empecé aquí, usando como mecanismo de transformación una red neuronal. Pero el principio es el mismo, convertir los valores RGB en XYZ.
Sea con la matriz, o con una transformación más fina (LUT's), lo que se busca al calcular esa matriz o esas LUT's es obtener el menor error posible en la reproducción del color, lo que se hace calibrando esos valores contra tarjetas de color como la IT8:
[img]https://1.bp.blogspot.com/-KmG4Q5rHuSw/XPqUizV0_OI/AAAAAAAAGpU/3atyusLsUt4e9ltP6eRzWF1cFXVQ0y3KgCLcBGAs/s1600/IT8_512px.jpg[/img]
El objetivo es que los valores de la matriz o perfil de cámara, conviertan los valores RAW de la fotografía hecha sobre la carta de colores en los valores XYZ más exactos posibles en promedio (los valores a los que se aspira llegar están medidos sobre la carta con un espectrofotómetro). Pero aquí no hay magia, si tu conversión es muy buena con unas gamas perderá en otras, así que lo que se busca es una precisión promedio (es decir, que ningún parche salga demasiado mal, en lugar de buscar la perfección en determinados parches).
El procedimiento como puede verse es "chapucero": desde los tres filtros toscos (estamos aproximando una enorme complejidad espectral continua de colores con solo tres muestras), hasta la calibración posterior de las transformaciones, y puede parecer milagroso que luego las fotos tengan unos colores realistas. Aquí entra en juego que nuestro sistema visual es una castaña y es apenas capaz de distinguir matices de colores, así que nos aprovechamos de lo fácil que es engañarle para no necesitar hacer el sistema más complejo.
Si nuestra visión fuera diferente, y en lugar de ver solo el espectro visible viésemos en IR, UV,... o en lugar de tener solo tres tipos de conos tuviéramos decenas, los sensores deberían ser mucho más sofisticados porque las fotos actuales nos parecerían una simplificación nada realista. Por comparación las fotos actuales a color nos podrían resultar tan rudimentarias como nos parece una imagen monocroma si lo que se pretende es representar el mundo real tal y como lo percibimos.
Por eso cuando observamos por separado dos imágenes, cambios importantes en sus colores nos pasan inadvertidos. Pero en lo que respecta al flujo RAW, y una vez calibradas las transformaciones, apenas puede haber diferencias perceptibles entre sensores.
---
Sobre la "Ciencia" de color, más que todas las transformaciones comentadas, que corresponden a un flujo RAW puro, serían las guarrerías que cada cámara o revelador RAW le haga después a las imágenes (curvas de contraste, saturaciones, perfiles alternativos de ACR,...). Por eso digo que de ciencia no tiene nada, ciencia es lo de arriba, pero no a lo que se llama ciencia que es a los JPEG de cada cámara. Vamos que decir que te gustan más los "colores Canon" no difiere mucho de decir que tu favorito es el filtro "Pepito" de Instagram.
Salu2!
Los fotocaptores del sensor están cubiertos por unos filtros rojos, verdes y azules:
[img]https://4.bp.blogspot.com/-RDm4oejf6Io/Wv4ewX_W9lI/AAAAAAAADhQ/GyWGhJKn0cYei-zdOt6l7_Ycun1F1SnDwCLcBGAs/s1600/bayerpattern.png[/img]
Esto hace que a cada fotocaptor le llegue una zona del espectro de frecuencias: ejemplo Canon 40D (puede resultar curioso que en la zona de IR las respuestas de cada filtro aumenten; es habitual):
[img]https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/c6224b4e-c45c-47e0-8647-842b80c6955c/d34pvp0-be218f58-d1fe-4a01-ba22-17a28bfc841a.jpg/v1/fill/w_721,h_460,q_75,strp/canon_40d_spectral_response_by_okavanga_d34pvp0-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3siaGVpZ2h0IjoiPD00NjAiLCJwYXRoIjoiXC9mXC9jNjIyNGI0ZS1jNDVjLTQ3ZTAtODY0Ny04NDJiODBjNjk1NWNcL2QzNHB2cDAtYmUyMThmNTgtZDFmZS00YTAxLWJhMjItMTdhMjhiZmM4NDFhLmpwZyIsIndpZHRoIjoiPD03MjEifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6aW1hZ2Uub3BlcmF0aW9ucyJdfQ.P0PPzxSRssZSHONINpj94_rZtPlr33_SUNJ9zL0O7fk[/img]
Con esos filtros cada fotocaptor captura una cantidad de fotones proporcional a los que la escena fotografiada reflejase en su banda del espectro. Estos fotones capturados se traducen en un valor numérico: si a un fotocaptor llegan 3000 fotones, su nivel RAW será (me lo invento) 1000. Si repetimos la foto con el doble de tiempo de exposición llegarán entorno a 6000 fotones y el número registrado en el RAW para ese fotocaptor pasará a 2000 aprox.
Esos números que representan niveles rojos, verdes y azules no sirven para formar directamente una imagen (se vería muy verde, como ésta). A esos números se les debe aplicar 3 pasos:
- Multiplicar los niveles rojos, verdes y azules por un factor diferente para cada uno. Esto es el balance de blancos.
- Hecho esto se interpolan (inventan) los valores que no se tienen con un algoritmo de demosaicing. Por ejemplo en cada fotocaptor rojo se obtienen los niveles verde y azul que no se tenían. Tras este paso ya tenemos los tres valores RGB en cada píxel.
- El último paso es convertir cada combinación de 3 valores RGB en un nueva combinación de valores pertenecientes a un espacio estándar independiente del sensor (p.ej. XYZ). Suele hacerse con una multiplicación matricial básica:
[img]http://www.guillermoluijk.com/misc/forwardmatrix.png[/img]
(Jack Hogan)
Esto no es más que una combinación lineal de los valores RGB para formar los XYZ:
- Código: Seleccionar todo
X = a11*R + a12*G + a13*B
Y = a21*R + a22*G + a23*B
Z = a31*R + a32*G + a33*B
Es decir, los tres canales capturados (RGB) participan en la formación de los tres nuevos valores (XYZ), pero cada uno con pesos diferentes.
Los valores de la matriz son propios para cada sensor, incluso se pueden obtener para cada cámara individual y tipo de iluminación. Esta conversión matricial es muy simple, es un buen resultado estándar pero puede mejorarse con un perfil un poco más complejo basado generalmente en LUT's (es decir como las curvas de Photoshop).
Lo importante es entender que el objetivo de la transformación es llevar los valores RGB (captura) a otro espacio, es decir otros valores, XYZ generalmente (estándar e independientes del dispositivo). Convertir de XYZ a cualquier espacio de color de salida como sRGB, AdobeRGB,... es una transformación conocida estándar (en la web de Bruce Lindbloom están todas):
[img]https://1.bp.blogspot.com/-G7GbaskdXkc/XQggz8UoURI/AAAAAAAAGuY/D0x-XEYFhuwB22jI6ovKVaFQKHhlEMZCACLcBGAs/s1600/colour_spaces.png[/img]
Tengo desde hace más de un año pendiente de terminar un ejercicio completo de calibración que empecé aquí, usando como mecanismo de transformación una red neuronal. Pero el principio es el mismo, convertir los valores RGB en XYZ.
Sea con la matriz, o con una transformación más fina (LUT's), lo que se busca al calcular esa matriz o esas LUT's es obtener el menor error posible en la reproducción del color, lo que se hace calibrando esos valores contra tarjetas de color como la IT8:
[img]https://1.bp.blogspot.com/-KmG4Q5rHuSw/XPqUizV0_OI/AAAAAAAAGpU/3atyusLsUt4e9ltP6eRzWF1cFXVQ0y3KgCLcBGAs/s1600/IT8_512px.jpg[/img]
El objetivo es que los valores de la matriz o perfil de cámara, conviertan los valores RAW de la fotografía hecha sobre la carta de colores en los valores XYZ más exactos posibles en promedio (los valores a los que se aspira llegar están medidos sobre la carta con un espectrofotómetro). Pero aquí no hay magia, si tu conversión es muy buena con unas gamas perderá en otras, así que lo que se busca es una precisión promedio (es decir, que ningún parche salga demasiado mal, en lugar de buscar la perfección en determinados parches).
El procedimiento como puede verse es "chapucero": desde los tres filtros toscos (estamos aproximando una enorme complejidad espectral continua de colores con solo tres muestras), hasta la calibración posterior de las transformaciones, y puede parecer milagroso que luego las fotos tengan unos colores realistas. Aquí entra en juego que nuestro sistema visual es una castaña y es apenas capaz de distinguir matices de colores, así que nos aprovechamos de lo fácil que es engañarle para no necesitar hacer el sistema más complejo.
Si nuestra visión fuera diferente, y en lugar de ver solo el espectro visible viésemos en IR, UV,... o en lugar de tener solo tres tipos de conos tuviéramos decenas, los sensores deberían ser mucho más sofisticados porque las fotos actuales nos parecerían una simplificación nada realista. Por comparación las fotos actuales a color nos podrían resultar tan rudimentarias como nos parece una imagen monocroma si lo que se pretende es representar el mundo real tal y como lo percibimos.
Por eso cuando observamos por separado dos imágenes, cambios importantes en sus colores nos pasan inadvertidos. Pero en lo que respecta al flujo RAW, y una vez calibradas las transformaciones, apenas puede haber diferencias perceptibles entre sensores.
---
Sobre la "Ciencia" de color, más que todas las transformaciones comentadas, que corresponden a un flujo RAW puro, serían las guarrerías que cada cámara o revelador RAW le haga después a las imágenes (curvas de contraste, saturaciones, perfiles alternativos de ACR,...). Por eso digo que de ciencia no tiene nada, ciencia es lo de arriba, pero no a lo que se llama ciencia que es a los JPEG de cada cámara. Vamos que decir que te gustan más los "colores Canon" no difiere mucho de decir que tu favorito es el filtro "Pepito" de Instagram.
Salu2!