ColorSync ColorSync MacProgramadores Acerca de este documento En este reportaje estudiaremos ColorSync, el sistema de corrección de color que usa Mac OS X, el cual permite que consigamos obtener representaciones más precisas del color de las imágenes con que estamos trabajando, de forma transparente al usuario. Para comprender ColorSync, primero estudiaremos la teoría del color. Nota legal Este tutorial ha sido escrito por Fernando López Hernández para MacProgramadores, y de acuerdo a los derechos que le concede la legislación española e internacional el autor prohíbe la publicación de este documento en cualquier otro servidor web, así como su venta, o difusión en cualquier otro medio sin autorización previa. Sin embargo el autor anima a todos los servidores web a colocar enlaces a este documento. El autor también anima a bajarse o imprimirse este reportaje a cualquier persona interesada en conocer qué es ColorSync y las ventajas aporta al programador. Madrid, Agosto del 2011 Para cualquier aclaración contacte con: [email protected] Pág 2 ColorSync MacProgramadores Tabla de contenido 1. Teoría del color ................................................................................... 4 1.1. ¿Qué es el color?........................................................................... 4 1.2. El ojo y la vista ............................................................................. 4 1.3. El espectro de luz .......................................................................... 6 1.4. Tono, saturación y brillo ................................................................ 7 1.5. Teoría del triestímulo ..................................................................... 7 1.6. Cómo componer colores ................................................................ 9 1.7. Composición aditiva y composición substractiva............................. 10 1.8. Métodos para codificar un color .................................................... 11 1.9. El espacio de colores ................................................................... 14 1.10. Brillo, claridad, luminancia y value .............................................. 15 1.11. La corrección gamma ................................................................ 16 1.12. El estándar CIE ......................................................................... 17 1.12.1. Los colores primarios X, Y, Z ................................................ 17 1.12.2. Interpretación del diagrama CIE ........................................... 18 1.12.3. CIEXYZ, CIELAB y CIELUV.................................................... 19 1.13. La gama de colores ................................................................... 20 1.14. Colores dependientes del dispositivo ........................................... 20 1.15. Profiling .................................................................................... 22 1.15.1. Conversión y correspondencia de colores .............................. 23 1.15.2. Tipos de profiles.................................................................. 24 1.16. Soft-proofing............................................................................. 25 2. Un poco de historia ........................................................................... 28 3. International Color Consortium (ICC) .................................................. 30 3.1. ICC Profile .................................................................................. 30 3.2. Calibrar un dispositivo ................................................................. 30 3.3. CMM (Color Management Modules) .............................................. 31 3.4. Rendering intent ......................................................................... 31 Pág 3 ColorSync MacProgramadores 1. Teoría del color Antes de profundizar en el estudio de ColorSync vamos a explicar una serie de conceptos básicos. El lector que ya conozca la teoría del color puede saltarse este apartado, aunque en este caso le recomendamos echarle un vistazo rápido. 1.1. ¿Qué es el color? Debido a un proceso evolutivo y adaptativo, los seres vivos han aprendido a aprovechar las ondas electromagnéticas de luz solares en su propio beneficio, y con el fin de poder percibir objetos que no están a su alcance inmediato. El ojo humano es capaz de percibir determinas longitudes de onda (lo que llamamos la luz) e incluso diferenciarlas (percibir los colores). La luz blanca es la que se tiene cuando ondas de todos los colores viajan juntas. Para explicar esto es muy típico descomponer un haz de luz blanca usando un prisma como muestra la Figura 1, el cual, debido a que la luz a distintas frecuencias se refleja con distintos ángulos, nos permite ver distintos haces de luz, cada uno con un color distinto. Los objetos reflejan los rayos luminosos que reciben, pero cuando los reflejan no los reflejan todos, sino que absorben algunos y reflejan otros. Un objeto blanco refleja todos los colores, un objeto negro los absorbe todos, y un objeto rojo absorbe todos menos el rojo. Figura 1: Prisma que descompone la luz blanca 1.2. El ojo y la vista Vamos a repasar qué partes tiene un ojo y qué uso tiene cada una. Si miramos a alguien a los ojos vamos a poder diferenciar tres partes principales (ver Figura 2): La conjuntiva, un tejido blanco transparente que protege la parte anterior del ojo de polvo e infecciones. Cuando se infecta se pone roja y es lo que los médicos llaman conjuntivitis. Figura 2: El ojo humano El iris, es la membrana que da color al ojo: negro, castaño, azul, verde… Cuando se contraen sus músculos, al haber poca luz por ejemplo, la pupila se agranda. Cuando los músculos del iris se relajan, p.e., porque haya mucha luz, la pupila se hace más pequeña. Pág 4 ColorSync MacProgramadores La pupila, es la circunferencia negra central del ojo por donde pasan los rayos de luz de las imágenes. Se hace más grande o pequeña dependiendo de las contracciones del iris. El blanco de la conjuntiva no es casualidad, su finalidad es evitar que la luz pase a través de ella, para lo cual hace que todos los colores se reflejen en ella. Por contra la pupila es el agujero por el que pasan los rayos de luz, por eso su color es negro. Si ahora miramos el ojo de perfil (ver Figura 3) veremos que consta de más partes que vamos a comentar: Figura 3: Corte del ojo humano La córnea, en la parte anterior, la conjuntiva se convierte en la córnea, que es un tejido transparente y convexo. El cristalino (lens) es una verdadera obra de arte de la naturaleza. Tiene forma de lenteja biconvexa, que recibe los rayos de la imagen, los refleja, y los hace converger en la retina, en forma invertida. Es decir, es como la "lente" en la cámara fotográfica, tal como muestra la Figura 4. Figura 4: Efecto del cristalino sobre la luz El cristalino es capaz de alterar levemente su forma por la acción del músculo ciliar que lo rodea y que tira más o menos de él según se esté observando un objeto cercano o lejano. Esta facultad del cristalino de adaptarse a la distancia se denomina acomodación. Las personas que no realizan una correcta acomodación sufren de miopía o de hipermetropía. Gracias a esta función, el cristalino refracta los rayos luminosos incidentes y enfoca siempre una imagen nítida, aunque curiosamente invertida, sobre la retina. La retina, es la capa más interna (de amarillo, en la Figura 3). Es la "placa" de la cámara fotográfica, donde se recibe la imagen. La retina contiene células especiales sensibles a la luz, que reaccionan ante los rayos luminosos. Estas células retinianas, especializadas en la captación de la luz, son los conos y los bastones (llamadas así porque vistas al microscopio tienen forma de conos y bastones respectivamente). Los bastones son sensibles a la intensidad lumínica, pero no al color. Los conos son receptores sensibles a la intensidad luminosa y al color. Sin embargo, los bastones son mucho más sensibles a la luz que los conos, por esta razón, los colores se aprecian tan mal con poca luz. Pág 5 ColorSync MacProgramadores Pero conos y bastones sólo actúan como fotorreceptores generadores de impulsos que son enviados por el nervio óptico hasta el cerebro, donde se interpretan correctamente. El mecanismo cerebral que reconoce y da significado a una imagen vista con anterioridad por los ojos se conoce como percepción visual. 1.3. El espectro de luz La luz, como muestra la Figura 5, es una onda electromagnética (al igual que las ondas de radio o los rayos láser), la cual tiene una amplitud de onda λ entre 400nm y 700nm para la luz visible, y una frecuencia f donde: 1014 Hz f 1015 Hz Rojo λ Verde 700nm Azul 400nm c=λf Figura 5: Espectro electromagnético de la luz Siendo c la velocidad de la luz en el medio (300.000 km/s en el vacío o en el aire). Obsérvese que como pretende mostrar la Figura 5, a medida que aumenta la frecuencia disminuye la longitud de onda. P P P Negro Blanco Gris 400nm 700nm P 400nm 700nm P 400nm 700nm P Rojo Azul Verde 400nm 700nm 400nm 700nm 400nm Figura 6: Espectros de luz para distintos colores Pág 6 700nm ColorSync MacProgramadores Normalmente la luz natural no consta de una sola longitud de onda, sino que como muestra la Figura 6, el espectro de luz es una mezcla de longitudes de onda, el color depende de la longitud de onda predominante. El área bajo la curva indica la potencia P de la luz. 1.4. Tono, saturación y brillo Para describir un espectro de luz se utilizan tres parámetros: • • • P B Tono (también llamado matiz o hue en inglés). Indica el color dominante, que es A el color que nosotros vemos. Saturación. Indica lo puro que es el coλ lor (normalmente en tanto por ciento) de 700nm forma que si A=B (véase Figura 7) la sa- 400nm turación es 0%, y si A=0 la saturación es Figura 7: Espectro de co100%. lor con longitud de onda Brillo. Indica el total de energía debajo dominante de la curva. 1.5. Teoría del triestímulo Afortunadamente para reproducir un color no tenemos que reproducir su espectro de luz, ya que usando sólo tres colores podemos conseguir un color equivalente como muestra la Figura 8. Nuestro ojo no es capaz de distinguir un espectro natural de su metámero equivalente. De hecho, combinando 3 colores cualquiera se puede conseguir otros colores, aunque como veremos luego, R (Red), G (Green), B (Blue) son los que se consigue una gama más amplia. Figura 8: Dos espectros que dan el mismo color Pág 7 ColorSync MacProgramadores Experimentalmente se ha comprobado que los conos del ojo son más sensibles al verde y al rojo que al azul (véase Figura 9), esto explica el hecho de que en el verde es en el color en el que más tonos somos capaces de distinguir, de hecho era el color más presente en el entorno natural de nuestros antepasados. Sin embargo, con el azul oscuro (el poco saturado) necesitamos mucha luz para no confundirlo con el negro. G Sensibilidad Sensibilidad R B λ λ 400nm 700nm 400nm 700nm Suma de sensibilidades a los tres colores Sensibilidad a cada color primario Figura 9: Sensibilidad del ojo humano a los tres colores primarios También se ha estudiado la potencia que hay B que producir de cada color para conseguir las P distintas gamas de color (véase Figura 10). Desgraciadamente se ha llegado a la concluR G sión de que combinando los tres colores primarios no se puede conseguir cualquier color, ya que hay una zona en torno a los 550nm en la que para conseguir esos colores necesitaríamos introducir un rojo negativo, lo 400nm 700nm cual es imposible. Esto se puede interpretar como que al combinar B y G su color natural Figura 10: Potencia necesaria equivalente tiene la zona de R demasiado sa- para reproducir la gama de turada y necesitaríamos desaturarla, lo cual colores es imposible. Esto significa que con metámetros no podemos producir todos los colores que nuestro ojo encuentra en la naturaleza. Si este documento le resulta útil puede plantearse el ayudarnos a mejorarlo: • Anotando los errores editoriales y problemas que encuentre y enviándolos al sistema de Bug Report de Mac Programadores. • Realizando una donación a través de la web de Mac Programadores. Pág 8 ColorSync MacProgramadores 1.6. Cómo componer colores Si repasamos los colores del arco iris (Rojo, Anaranjado, Amarillo, Verde, Azul, Añil y Violeta) vemos cómo va cambiando la percepción de las longitudes de onda. Todos aprendimos en la escuela que al mezclar rojo y amarillo obteníamos el naranja. Análogamente podemos obtener todos los demás colores, sólo hay que saber que cantidad de cada color básico poner. El lector avispado habrá observado que los colores añil y violeta están más allá del azul. ¿Cómo obtenemos estos colores mezclando colores con menor longitud de onda? Simplemente no se puede, o mejor dicho no se debe, ya que esta luz tiene una frecuencia tan alta que proyectada continuamente podría dañar el ojo humano. Afortunadamente estos colores son poco usados y podemos conseguir una tonalidad que resulta parecida mezclando azul con un poco de rojo. Esta es la forma en que funciona un monitor CTR (Cathode Ray Tube) convencional, como el que aparece en la Figura 11, el monitor no tiene más que tres haces de luz (llamados cátodos) que se proyectan sobre una superficie de flúor, la cual se ilumina al dar la luz de los cátodos sobre ella. Los cátodos oscilan rápidamente barriendo la pantalla y proyectando o no proyectando luz en cada uno de los puntos de la pantalla, que es a lo que se llama los píxeles. El funcionamiento de los monitores LCD también se basa en el principio Figura 11: Monitor CRT de las tres luces RGB, sólo que en éstos, cada píxel está formado por tres "bombillitas" que se encienden o se apagan para producir o no ese color. Obsérvese que en este sentido un monitor se comporta "al revés" de como se comporta cualquier cuerpo que vemos, ya que los cuerpos lo que hacen es reflejar en ellos determinados colores y absorber otros. El monitor sin embargo genera luz, sin necesidad de que haya ninguna otra luz. Por esta razón podemos ver la televisión con la luz apagada. Pág 9 ColorSync MacProgramadores 1.7. Composición aditiva y composición substractiva Existen solamente dos métodos básicos de reproducir un color: aditivo y sustractivo. Ambos métodos se basan en el principio de usar tres colores primarios para crear toda la gama de colores. La composición aditiva, como muestra la Figura 12, empieza con el negro como ausencia de luz, y en consecuencia como ausencia de color. Después podemos mezclar luces de los distintos colores (rojo, verde y azul) en distinta intensidad para formar todos los colores. Rojo y verde proyectados juntos producen amarillo, rojo y azul producen magenta, y azul y verde producen cian. Si mezclamos los tres colores en igual proporción obtenemos el gris, y si esta luminosidad es máxima obtenemos el blanco. Figura 12: Composición aditiva La composición aditiva se utiliza en dispositivos de salida como monitores y scanners, los cuales captan la intensidad de estos tres valores para cada punto que escanea. Sin embargo, esto no es posible a la hora de imprimir colores como pasa en las impresoras y los plotters, ya que aquí lo que necesitamos es que el dibujo absorba determinados colores y no que los emita. En estos dispositivos necesitamos otro tipo de composición que es la composición substractiva. En la composición substractiva, como muestra la Figura 13, es el proceso de combinar colorantes substractivos para que absorban parte del espectro de luz. La tela de una camiseta amarilla absorbe todos los colores, excepto el amarillo. Figura 13: Composición sustractiva Los colores primarios en la composición substractiva (véase la Figura 14), son el cian (el opuesto al rojo), magenta (el opuesto al verde) y amarillo (el opuesto al azul). Combinando los tres colores primarios substractivos obtenemos el negro, o al menos en teoría, porque en la práctica al combinar estos tres colores en la misma proporción se obtiene un color marrón oscuro. Esto se debe a que las tintas CMY no se mezclan bien. Para evitar este efecto todas las impresoras (excepto las de más baja calidad) usan un cuarto color que es el negro. De hay viene el nombre CMYK (Cyan, Magenta, Yellow and blacK). De Pág 10 Figura 14: Colores complementarios ColorSync MacProgramadores hecho las impresoras también inyectan negro para producir colores distintos al negro. En concreto inyectan negro en cantidad K = min(C,M,Y). Esto se hace por dos razones. La primera es ahorrar tinta ya que así pueden inyectar menos tinta de color, en concreto así inyectan C-K, M-K y Y-M para las tintas de color. La segunda es mejorar la calidad ya que las tintas de color no se mezclan bien. Teóricamente, la relación entre RGB y CMY viene dada por la fórmula: C = 1.0 - R M = 1.0 - G Y = 1.0 - B En la práctica, el proceso de obtener los valor CMYK de una imagen RGB es mucho más complejo. El valor exacto depende del tipo de tinta, del tipo de papel y del mecanismo de impresión. ColorSync realiza los cálculos necesarios para realizar esta impresión para las distintas impresoras. 1.8. Métodos para codificar un color Aunque existen sólo dos métodos básicos para componer el color, y todos los dispositivos gráficos utilizan uno de estos dos métodos, existen más formas de codificar (numéricamente) el color. A continuación, vamos a describir las cinco formas más utilizadas: RGB (Red, Green, Blue). La forma de codificar colores más conocida. Usada para componer colores por los monitores y escáneres. YUV. Se utiliza ampliamente para representar la luminancia Y separada del color U,V. El concepto de luminancia es similar al concepto de brillo, y la diferencia se explicará en el apartado 1.10. La televisión analógica utiliza este mecanismo de representación ya que inicialmente sólo se transmitía la señal Y, y luego se añadieron los canales de cromanencia U,V. Para transformar de RGB a YUV o viceversa, podemos hacerlo fácilmente sabiendo que la luminancia Y se obtiene como una suma ponderada de R,G,B relativa a la sensibilidad del ojo a cada color primario: Y = 0.299R + 0.587G + 0.114B Para representar el color, en principio podríamos pensar en representar R-Y, G-Y y B-Y, pero en realidad basta con almacenar R-Y y B-Y ya que G se puede obtener con la ecuación: G = (Y - 0.3R - 0.11B) / 0.59 Pág 11 ColorSync MacProgramadores La razón por la que se decidió representar la diferencia de rojo R-Y y la diferencia de azul B-Y (y no la diferencia de color G-Y) es que el color verde G es el que más contribuye a Y con lo que G-Y es normalmente el número más pequeño, y en consecuencia el más susceptible al ruido. Curiosamente, cuando se tiene la misma capacidad de almacenamiento binario y el mismo nivel de ruido, la representación YUV es más robusta que la representación RGB. Esto de debe a que, como indicamos en el apartado 1.2, el ojo es más sensible a las diferencias de luminancia que a las diferencias de color. Esta característica la han usado muchos estándares de codificación de vídeo para representar con más precisión (o en mayor cantidad) las muestras de luminancia Y que las muestras de cromanencia U,V consiguiendo una mejor calidad desde el punto de vista de percepción del ojo humano. CMYK (Cyan, Magenta, Yellow and blacK). La forma de codificar colores usada por las impresoras y plotters. HSV (Hue, Saturation and Value). Aquí el color se codifica en base a estas tres dimensiones: o Hue (Tono). Indica el color predominante. El gris es el tono neutro. Verde y azul son diferentes tonos. El tono puede ser azul, pero los términos azul claro y azul oscuro son fáciles de distinguir por una persona. o Saturation (Saturación). Indica lo puro que es un color con respecto al blanco. Por ejemplo, un rojo sin blanco es un color totalmente saturado. Si añadimos blanco el color se vuelve pastel. Por ejemplo, al añadir blanco al rojo obtenemos el rosa. Observe en la Figura 15: Ejemplo de Figura 15 las alas de la mariposa para ver un ejem- distintas saturaciones de plo de distintas saturaciones de color. color o Value (Valor). Indica las diferencias en la intensidad (brillo) con que se refleja la luz en un cuerpo. Su ausencia es el negro. Este concepto se explicará más detalladamente en el apartado 1.10. Escala de grises. Otra quinta forma que vamos a comentar es la que se utiliza en las imágenes en blanco y negro, en la que realmente no hay color porque todos los colores son grises (véase Figura 16). ColorSync también es capaz de convertir una imagen codificada mediante alguna de las Figura 16: Escala de grises formas de codificación de imágenes en color en imágenes en escala de grises y viceversa (de escala de grises a color), aunque lógicamente en este último caso la imagen que obtenemos está formada sólo por tonos grises. Pág 12 ColorSync MacProgramadores En cualquier caso conviene repetir que estás dos últimas formas de codificar el color no pueden ser enviadas directamente a un dispositivo gráfico, con lo que ColorSync tendrá que transformar esta codificación del color a una forma de codificarlo que entienda el dispositivo. Escala de grises RGB CMYK HSV Figura 17: Diálogos de elección de color de Mac OS X Pág 13 ColorSync MacProgramadores Las aplicaciones de Mac OS X suelen disponer de un dialogo que permite al usuario indicar un color usando una de estas cuatro codificaciones tal como muestra la Figura 17. Recomendamos al lector que juegue con este diálogo, en especial en lo que a HSV se refiere, para ayudarle a comprender mejor estas cuatro formas de codificar colores. 1.9. El espacio de colores Se llama espacio de colores a una representación vectorial de los colores. El estándar RGB usa como vectores R,G,B, el estándar HSV usa como vectores H,S,V y el estándar CMYK utiliza como vectores C,M,Y. (a) Espacio de colores RGB (b) Espacio de colores HSV Figura 18: Espacio de colores La Figura 18 (a) muestra la representación vectorial de RGB donde el vector (0,0,0) representa la ausencia de color (negro) y la diagonal representa el color neutro (gris) que va desde el negro puro al blanco puro. El cubo también muestra que el vector de color en espacio de colores CMY es el opuesto al vector de colores en RGB. La Figura 18 (b) muestra la representación vectorial de HSV. El tono (hue) corresponde a los distintos colores a lo largo de los 360 grados. La saturación se muestra en el eje vertical y va desde el blanco a un tono puro. El valor se muestra en el eje horizontal y su ausencia da lugar al negro. Mientras que RGB y CMY utilizan coordenadas cartesianas para representar el color, HSV utiliza coordenadas polares. En consecuencia, es necesario hacer una transformación sinusoidal para pasar de coordenadas RGB a HSV. Pág 14 ColorSync MacProgramadores 1.10.Brillo, claridad, luminancia y value El término "brillo" se utiliza informalmente para referirse a un conjunto de conceptos similares. En este apartado vamos a formalizar cada uno de estos conceptos y estudiar la relación entre ellos. En el apartado 1.4 indicamos que el brillo era la energía debajo de la curva de la Figura 7. Más formalmente, se utiliza el término radiancia para referirse a la energía que hay debajo de la curva (medida en vatios), y es una medida objetiva. Formalmente el brillo B (brightness) se define como: B = (R+G+B) / 3 La tercera componente del espacio de colores HSB es el que se utiliza cuando calculamos el brillo de acuerdo a esta fórmula. Sin embargo, el brillo es una propiedad del color que no corresponde adecuadamente con la percepción del ojo humano, con lo que se han definido otras medidas más adecuadas para el ojo que son la claridad, la luminancia y el value. Formalmente la claridad L (lightness) se define como: L = [max(R,G,B) + min(R,G,B)]/2 Se ha comprobado que la claridad (siguiendo esta fórmula) es una medida más aproximada a la percepción del ojo humano que el brillo. En este caso, al espacio de colores se le llama HSL y se usa frecuentemente en programas de dibujo como GIMP. Otra medida más objetiva del brillo es el valor V (value) que se define como: V = max(R,G,B) En este caso al espacio de color se le llama HSV, y es el espacio de color más frecuentemente usado. La medida de brillo que más se aproxima a la cantidad de luz que percibe el ojo humano es la luminancia Y (luminance), que como ya introdujimos en el apartado 1.8 se calcula como: Figura 19: Proyecciones en el eje gris Y = 0.299R + 0.587G + 0.114B Pág 15 ColorSync MacProgramadores Los espacios de color YUV y HSY utilizan esta medida de brillo. A igual radiancia, el ojo percibe mayor cantidad de luz en los verdes, con lo que la luminancia es la medida más subjetiva, y por tanto la mejor para representar lo que percibe el ojo humano. En la fórmula de cálculo anterior, el coeficiente en G es el más grande. Esto significa que si tenemos tres bolas de colores R, G, B, al calcular su luminancia la bola verde será la más brillante. Este efecto es consistente con la Figura 9 (a). La Figura 19 muestra cómo las diferentes definiciones de brillo proyectan en el eje gris. La figura muestra la posición en el cubo RGB del color (220,60,120) y la proyección del valor V, claridad L y luminancia Y. La fórmula de calculo del valor V hace que siempre sea mayor a las otras medidas de brillo. La claridad o la luminancia pueden ser mayores una a la otra dependiendo de qué punto RGB se trate. 1.11.La corrección gamma Aunque en teoría la luminancia Y que emite un monitor debería ser linealmente proporcional al voltaje de entrada Vin. En la práctica no es así, sino que al principio con poco voltaje se consigue mucha luminosidad y según aumentamos el voltaje la luminosidad no aumenta tan rápido. Para que la luminancia sea proporcional al valor que estamos proporcionando al monitor se proporciona al monitor un voltaje Vout que viene corregido por la fórmula: Y ≈ Vout = Vin γ La Figura 20 muestra esta corrección para γ=2.2, que es una corrección común para los monitores CRT. Las herramientas de calibración de ColorSync permiten modificar el valor de γ. Cuando un monitor esta bien calibrado con un valor de entrada medio, Vin=0.5, se consigue una luminancia media, Y=0.5. Es decir, para RGB=(127,127,127) se consigue un gris medio. Si el gris es demasiado oscuro, hay que reducir γ, y viceversa. Figura 20: Corrección gamma Existen tres puntos donde se puede aplicar la corrección gamma: 1. En la imagen muestreada. Existen estándares como sRGB que almacenan los valores de la imagen con la corrección gamma ya aplicada. 2. En el sistema operativo. Los sistemas operativos modernos permiten indicar la corrección gamma a aplicar. 3. En el hardware de salida. Los monitores modernos permiten indicar si queremos realizar una corrección gamma. Pág 16 X+Y+Z=1 ColorSync MacProgramadores La ventaja de almacenar la corrección gamma en la imagen muestreada es que los dispositivos de salida ya no tienen que calcular la corrección gamma. Estándares como sRGB aplican una corrección gamma fija de γ=2.2. La ventaja de aplicarla en el sistema operativo o en el hardware es que el usuario puede ajustar la corrección gamma. Aunque existen otros estándares de codificación RGB (como Adobe RGB), el estándar sRGB es el estándar por defecto para almacenar imágenes RGB. Si no se especifica más, cuando se dice que una imagen está codificada en RGB Figura Eje X,esY,decir Z de CIE se está diciendo que está codificada en21: sRGB, con corrección gamma γ=2.2. 1.12.El estándar CIE Se llama modelo de color a una representación de las propiedades y comportamiento del color. En el apartado 1.5 vimos que, no solamente el sistema de color RGB, sino todos los sistemas de color basados en tres colores primarios requieren un valor negativo en alguno de sus colores. Esto quiere decir que no se puede hacer un modelo de color que mediante metámeros represente todos los colores. La CIE (Commission Internationale d’Eclairage) propuso en 1931 un sistema de representación del color que sí que podía representar toda la gama de colores de la naturaleza, y que vamos a explicar en este apartado. 1.12.1. Los colores primarios X, Y, Z El CIE definió tres colores primarios "supersaturados" X, Y, Z que no corresponden con colores reales, pero que tienen la propiedad de que pueden representar cualquier color usando sólo valores positivos, y donde Y corresponde, aproximadamente, con la claridad del color. Y λ=670nm La intensidad de cada color viene dada por la siguiente fórmula, donde X, Y, Z son los vectores que representan los colores primarios y X, Y, Z sus intensidades: X λ=400nm Z C = XX+YY+ZZ Para hacer el color independiente de la luminancia se decidió que se cumpliera la relación x+y+z=1, ya que se sabe que los colores (x,y,z) y (2x,2y,2z) son el mismo, pero el segundo tiene el doble de luminancia. Para ello podemos aplicar las fórmulas: Pág 17 ColorSync x= X X +Y + Z Figura 22: Colores CIE en el eje tridimensional MacProgramadores y= Y X +Y + Z z= Z X +Y + Z De esta forma todos los colores están sobre el plano x+y+z=1, como muestra la Figura 21. Los colores 100% saturados se encuentran sobre la curva en forma de herradura de la figura, y el blanco puro se encuentra aproximadamente en el centro de la figura. El trozo de herradura que falta se llama frontera púrpura, y son colores que se consiguen mediante combinaciones de rojo y azul. Figura 23: Proyección de los colores La Figura 22 muestra los distintos tonos CIE sobre el plano XY que toma CIE en función de los valores de X, Y, Z. Obsérvese que si conocemos el valor de dos colores x,y podemos conocer el tercero ya que: z=1-x-y Luego podemos representar la gama de colores sobre el papel proyectando la curva ortográficamente sobre el plano XY como muestra la Figura 23. En consecuencia, los valores de luminancia no están disponibles en este plano. Téngase en cuenta que (x,y,z) no dan el color real, solo su tono, con lo que teniendo x,y podemos calcular z con la fórmula anterior, pero no el color real. Para ello necesitamos conocer además su luminancia. La luminancia en CIE la da Y, con lo que si tenemos x,y,Y ya si podemos obtener el color real despejando X=(x/y)Y y Z=Y(1-xy)/y. Para despejar las X, Y, Z mayúsculas, y luego calcular C = XX + YY + ZZ. 1.12.2. Interpretación del diagrama CIE Conviene hacer algunas consideraciones sobre el sistema de representación de color CIE que vamos a hacer en este apartado: Pág 18 ColorSync MacProgramadores Figura 25: Cálculo del ancho de banda dominante La primera es que, como muestra la Figura 24, al combinar dos colores A, B su mezcla está en el segmento que los une. Cuanto más A ponemos más se acerca a A y cuanto más B ponemos más se acerca a B. Figura 26: CIELAB Una segunda consideración es que para obtener la longitud de onda dominante λ de un color, podemos trazar una recta desde el blanco puro C al borde pasando por A como muestra la Figura 25 (a), y el corte con el borde será la longitud de onda λ dominante. Si el corte se da en la frontera púrpura, como muestra la Figura 25 (b), no hay un solo color dominante lo que significa es que el λ opuesto (-λ) no es un pico, sino un valle del espectro de luz. (a) (b) λ A B -λ A C C A Una tercera observación es que si queremos saber la saturación de un color A, podemos tirar una línea del centro C al borde pasando por A, y la relación |CA|/|Cλ| nos da el porcentaje de saturación. 1.12.3. CIEXYZ, CIELAB y CIELUV Debido a que el ojo humano percibe más verdes que azules, los avances en el diagrama CIE (también llamado CIEXYZ) no son proporcionales a la variación de color que percibiría el ojo. CIE ha definido otros dos estándares llamados CIELAB y CIELUV que pretenden ser proporcionales a la variación de color que perceptual. La L se refiere a la luminancia percibida y las coordenadas AB y UV se refieren a las coordenadas de croPág 19 ColorSync MacProgramadores macidad. La Figura 26 muestra cómo varían los colores cuando la luminancia L va del 0% al 100%. También muestra como la distancia entre las coordenadas de cromacidad es proporcional a la variación perceptual de color. El espacio de color CIELAB se utiliza para representar colores substractivos. El punto blanco por defecto en CIELAB se llama D50. Por su parte, CIELUV se utiliza para representar colores aditivos. 1.13.La gama de colores Se llama gama de colores al conjunto de todos los colores que puede ofrecer un dispositivo. Aunque en teoría un dispositivo podría darnos todos los colores de la naturaleza, en la práctica cada dispositivo tiene una gama de colores que es capaz de representar. De esta forma, las impresoras actuales no alcanzan a ofrecernos una gama de colores tan amplia como los monitores, y los monitores actuales tampoco alcanzan a ofrecernos una gama de colores tan amplia como la vista humana es capaz de encontrar en la naturaleza. La Figura 27 muestra una aproximación a la gama de colores que puede llegar a ofrecernos cada tipo de dispositivo. Los vértices de cada gama suelen corresponder a sus colores primarios. Por esta razón se dice que la gama de color es dependiente del dispositivo, porque cada dispositivo es capaz de generar una gama de colores distinta. Figura 27: Gama de colores de distintos dispositivos 1.14.Colores dependientes del dispositivo En la práctica, la misma combinación numérica produce un color diferente en cada dispositivo. Cuando una impresora recibe un color en CMYK, lo que recibe realmente es qué porcentaje de color de cada tipo debe de soltar en un punto, pero no recibe qué color exactamente es el que tiene que pintar. Esto hace que impresoras de distintos fabricantes (e incluso impresoras del mismo fabricante) impriman colores apreciablemente distintos cuando reciben la orden de pintar el mismo color. Pág 20 ColorSync MacProgramadores La Figura 28 muestra el resultado de imprimir cada uno de los colores primarios en cuatro impresoras distintas. Esto es lo que significa que CMYK es dependiente del dispositivo. El mismo problema (aunque en menor medida) lo encontramos en los monitores a la hora de representar colores RGB, o en los escáneres a la hora de leer estos colores. Esto se debe a que existen diferentes sistemas de representación RGB (sRGN, Adobe RGB, etc), y la longitud de onda de sus colores primarios es diferente. Para representar un color sería conveniente tener un sistema de medición de colores que fuera independiente de los colores primarios que estemos usando, y eso nos lo permite hacer el sistema CIE que vimos antes, el cual puede representar todos los colores de la naturaleza con sus tres colores primarios. Figura 28: Resultado de imprimir un mismo código de color CMYK en distintas impresoras Pág 21 ColorSync Color RGB Figura enviado 29: Espectrómetro Color CIE realmente al dispositivo obtenido MacProgramadores 1.15.Profiling El inconveniente de usar técnicas de representación del color dependientes del dispositivo es que una imagen que en un monitor se ve perfectamente, en otro monitor se va a ver completamente distorsionada, a pesar de que el monitor esté recibiendo exactamente los mismos códigos de colores en escala Figura 30: Ejemplo de profile RGB. Para solucionar este problema surgió la técnica del profiling, que lo que hace es modificar ligeramente los colores que se están enviando al dispositivo de salida para que éste muestre la imagen con una precisión casi absoluta. Para realizar el profiling de un dispositivo necesitamos contar con un dispositivo que nos permita medir el color, como el de la Figura 29. Los tres dispositivos más usados para medir el color son: Densímetro. Un dispositivo foto-eléctrico que nos permite medir cuanta luz se refleja o se absorbe por un objeto. El densímetro es un instrumento simple que se utiliza sobre todo en procesos de impresión y en aplicaciones fotográficas para determinar la fuerza con que se imprimen los colores. Colorímetro. Mide también la luz, pero descomponiéndola en sus tres componentes primarios para obtener un valor numérico RGB o CIE. Espectrómetro. Mide la cantidad de energía luminosa reflectada en un objeto. El resultado es un conglomerado de valores de reflectancia que se pueden interpretar como una curva espectral. El espectrómetro es el más preciso y usado de estos instrumentos porque recoge información completa sobre el color que se pueden transformar en datos del colorímetro o densímetro con unos pocos cálculos. Estos instrumentos son los que nos permiten determinar (en representación CIE) cuál es la salida real de cada uno de los colores que puede producir un dispositivo cuando le damos una orden de dibujo en RGB o CMYK. Pág 22 Profile RGB RGB ColorSync Profile CMYK CMYK CIE MacProgramadores En base a la información obtenida podemos crear un profile, (ver Figura 30) que no es más que un archivo que para cada posible color que recibe un dispositivo (p.e. en RGB) nos lo haga corresponder con el color real que produce ese dispositivo. Aunque por defecto los monitores reciben las órdenes en RGB, cuando nosotros enviamos una orden de dibujo a un dispositivo, podemos enviar la orden en CIE. ColorSync se encarga de transformar este color CIE en el color RGB que más se aproxima al color pedido. Formatos gráficos como TIFF, JPEG, o PDF v1.3 en adelante, permiten utilizar colores CIE (también llamados colores independientes del dispositivo) en lugar de colores RGB para representar una imagen. Los resultados de esta definición más precisa de colores son fácilmente apreciables en el resultado final. Además ColorSync puede mejorar la calidad de monitores mal calibrados usando los profiles, los cuales le pueden ayudar a cambiar un color RGB por otro con el fin de mejorar la salida. Las mismas mejoras se pueden conseguir (o más claramente apreciables todavía) en el caso de la impresión, ya que los colores CMYK llegan a distar a veces mucho de los colores reales que estamos buscando obtener. 1.15.1. Conversión y correspondencia de colores La conversión de color (color conversion) es el proceso por el cual transformamos los colores de una imagen, de un espacio de colores en otro espacio de colores. La correspondencia de colores (color matching) añade a la conversión de color la información de los profiles para generar una salida lo más parecida posible a la entrada. La conversión de colores es un proceso más sencillo que la correspondencia de colores, porque no requiere de los profiles para calcular la conversión. Mientras que la conversión de colores se realiza entre espacios de color, la correspondencia de colores se realiza entre dispositivos que tienen asociado un profile. Pág 23 ColorSync MacProgramadores Figura 32: Correspon- Los diferentes dispositivos gráficos (escáneres, pantallas monitores), aunque dencia de profiles de suelen utilizar la misma técnica para representar el color, trabajan con difemonitor e impresora rentes profiles y espacios de colores. P.e. los monitores de todos los fabricantes usan RGB, pero la gama de colores que ofrece cada uno es distinta. Las impresoras, aunque trabajan todas con CMYK, varían drásticamente en sus gamas, especialmente si utilizan distintas tecnologías de impresión. Incluso dentro de un mismo fabricante, se pueden observar variaciones en la gama de colores generada por las impresoras en función de la tinta y papel usado. Para realizar estas correspondencias de colores se suelen utilizar dos profiles (ver Figura 31), los cuales nos permiten hacer corresponder un color a una representación intermedia (normalmente en CIE) y después usamos el profile del dispositivo destino para obtener la representación más precisa posible en el dispositivo destino. De esta forma la imagen que imprimamos será lo más parecida posible a la imagen que estamos viendo en pantalla. Todos estos cálculos son realizados por ColorSync. Los profiles tienen diferente gama (tamaños y formas), como muestra la Figura 32. Un monitor tiene es un espacio de colores que normalmente es bastante más amplio que el espacio de colores de una impresora, luego cuando realizamos la correspondencia vamos a necesitar comprimir los colores. Si existe un del monitor que no se puede reproducir exactamente en el espacio de colores del profile de la impresora, ColorSync busca en el color del profile de impresora más próximo al pedido y éste es el que le asigna. 1.15.2. Tipos de profiles Hay varios tipos de profiles que vamos a estudiar en esta sección. Los profiles de dispositivo caracterizan un dispositivo. Pueden ser dispositivos de entrada (p.e. escáner, cámara de fotos) o dispositivos de salida (p.e. monitor, impresora). Además, un dispositivo puede tener varios profiles. Por ejemplo, una impresora puede tener varios profiles dependiendo del papel y tinta a usar. Los profiles de espacio de color permiten convertir entre espacios de color independientes del dispositivo. Por ejemplo, permiten convertir entre CIEXYZ y CIELUV. Pág 24 ColorSync MacProgramadores Los profiles abstractos permiten aplicar efectos especiales independientes del dispositivo. Por ejemplo, un profile abstracto puede incrementar el tono amarillo para crear imágenes en color sepia. Los profiles de espacio de color con nombre son una lista donde cada color tiene un nombre y un valor CIE. Se usan mucho en plotters donde el conjunto de colores es limitado. Los profiles embebidos son profiles que se adjuntan a la imagen. Formatos como TIFF, JPEG, EPS o PDF v1.3 permiten embeber profiles. Si una imagen no lleva embebido un profile, por defecto se asume que está codificada en sRGB. Los profiles de enlace de dispositivo (DeviceLink) son profiles que encapsulan la transformación de un dispositivo a otro. Estos profiles sólo permiten convertir de un dispositivo a otro, pero son bastante predictivos. La alternativa software son los CMM que verémos más adelante. 1.16.Soft-proofing Una técnica muy utilizada en los programas de tratamiento de imágenes es el soft-proofing, que consiste en emular en pantalla el resultado final que vamos a obtener en la impresora. Debido a que la gama de colores del espacio de colores de un monitor es más amplia que la de una impresora, esta emulación en pantalla se va a parecer bastante al resultado final que obtendremos al imprimirlo. Pág 25 ColorSync MacProgramadores Figura 33: Imagen original Figura 34: Imagen tras aplicarla un proceso de soft-proofing a CMYK Figura 35: Imagen tras aplicarla un proceso de soft-proofing a CMY Para hacernos una idea de esta técnica, en la Figura 33 se muestra una imagen y el resultado obtenido tras hacerla un soft-proofing para la impresora Epson Stylus Photo 1270, primero usando CMYK (Figura 34) y después usando CMY sin usar corrección inyectando negro (Figura 35). Pág 26 ColorSync MacProgramadores Podemos ver el resultado del soft-proofing de una imagen desde el programa Preview (ver Figura 33) seleccionando la opción de Menú View|Soft Proof with profile. Figura 36: Proceso de soft-proofing El soft-proofing se realiza en dos etapas: En la primera etapa se comprime el color del espacio de colores del monitor al de la impresora. En el segundo paso se realiza una correspondencia (sin compresión) de CMYK a RGB, con lo que el nuevo espacio de colores es mayor al original, pero los colores que estamos representando en la pantalla son sólo colores representables en la impresora. La Figura 36 muestra esquemáticamente este proceso. Pág 27 ColorSync MacProgramadores 2. Un poco de historia En 1980 empezaron a surgir las primeras herramientas de tratamiento gráfico, y con ellas un conjunto de empresas (entre las cuales destacaron Apple y Adobe) empezaron a diseñar lo que llamaron Color Management Systems (CMS), es decir mecanismos que pretendían solucionar el problema de la divergencia de colores entre los distintos dispositivos. El principal problema con que se acabaron encontrando estos CMS fue el de que eran propietarios de cada fabricante e incompatibles entre ellos, con lo que cada aplicación tenia que "casarse" con un fabricante. Figura 37: Color Management Systems Como muestra la Figura 37, estos CMS no eran más que APIs en una librería de enlace dinámico a las que se enlazaban las aplicaciones, pero la aplicación necesitaba que la librería estuviera instalada, o instalarla ella misma antes de usarla. Pág 28 ColorSync MacProgramadores Para solucionar este problema, Apple añadió a su sistema operativo ColorSync, su librería de CMS. En aquellos tiempos esta librería se metió en Mac OS Classic, aunque lógicamente Mac OS X también cuenta con su implementación de ColorSync. Es decir, ColorSync no es más que una librería de intercambio de información de color entre los distintos dispositivos. Gracias a ColorSync las aplicaciones pueden acceder a las operaciones de gestión de color de un CMS a través de un API estándar sin necesidad de instalar software adicional (véase Figura 38). Figura 38: Solución a los CMS propietarios con ColorSync Pág 29 ColorSync MacProgramadores Figura 39: ICC profile embebido 3. International Color Consortium (ICC) El International Color Consortium (ICC) fue creado por Apple y otros fabricantes para promover una arquitectura de gestión de color, y estándar formatos independientes del fabricante. Los principales objetivos eran, caracterizar los dispositivos de color y transformar colores entre dispositivos. ColorSync es la implementación que hace Apple de las especificaciones ICC. ICC describe tres componentes básicos que vamos a analizar más a fondo en esta sección. 3.1. ICC Profile Los ICC profiles son ficheros con un formato estándar para caracterizar un dispositivo de color. El escáner o cámara que captura la imagen suele incluir embebido el ICC profile de ese dispositivo en el fichero de imagen. En otros casos almacena un ICC profile estándar, como pueda ser el de sRGB. El dispositivo puede ser tanto de entrada como de salida. Si el dispositivo es de salida (p.e. impresora), ColorSync usa este ICC profile para decidir cómo enviar la imagen al dispositivo de salida. La Figura 39 muestra cómo podemos usar el panel Get Info de Finder para obtener información sobre el ICC profile embebido en una imagen. 3.2. Calibrar un dispositivo Para que un sistema de reproducción produzca una salida satisfactoria es necesario que el dispositivo se comporte como cuando su profile fue creado. Sin embargo, con el tiempo los dispositivos tienden a desestabilizarse con lo que se vuelve necesario calibrarlo. La tarea de calibración es una tarea complicada. ICC se desentiende de definir cómo se calibran los dispositivos y asigna esta responsabilidad al usuario. Pág 30 ColorSync MacProgramadores Mac OS X proporciona en System Preferences | Display una utilidad para ayudar al usuario a calibrar su dispositivos. En general, si el usuario no es experto en color, es mejor que asuma la desestabilización de su dispositivo a intentar calibrar por sí solo el dispositivo. 3.3. CMM (Color Management Modules) El CCM es el software matemático que implementa transformaciones, tanto de conversión de color como de correspondencia de color. Cuanto más preciso sea el ICC de los dispositivos de entrada de salida, más precisa será la correspondencia de color que calcule el CMM. Incluso cuando los dispositivos están perfectamente calibrados, las correspondencias de color implican diferencias debidas a las diferencias en las gamas de color entre dispositivos. Cada CMM calcula una o más transformaciones. Por ejemplo, podemos tener un CMM para transformar una imagen de una cámara de fotos a un monitor TFT, y otro CMM para transformar esta misma imagen a una impresora en color. La cabecera de los ficheros de profile incluye un campo que indica el CMM a usar para realizar correspondencias de color con este profile. Si en una operación de correspondencia de color, los profiles no especifican el mimo CMM, ColorSync identifica qué CMM usar. ColorSync cuenta con un CMM por defecto que soporta todas las operaciones de correspondencia de color, con lo que este CMM se usa cuando no existe otro CMM disponible. Para la correspondencia de color se puede usar un CMM, pero más habitualmente se implementa mediante simples funciones de conversión de color que exporta la librería ColorSync. 3.4. Rendering intent El rendering intent define el criterio de la correspondencia de color que realizan los CMM. En cada transformación, el CMM tiene que tener en cuenta que la gama de colores de cada dispositivo es distinta. Las formas concretas de realizar esta transformación, y la información que se va a descartar durante la transformación, la define el rendering intent. ICC define los siguientes tipos de rendering intents: Pág 31 ColorSync • • • • MacProgramadores Perceptual. Preserva las relaciones entre los colores transformados escalando todos los colores, incluso los que existen en el profile destino. El rendering intent perceptual produce la transformación de color más agradable a la vista, y es el recomendado para fotos. Saturación. Al calcular la correspondencia se mantiene la saturación de los colores, pero si un color no se puede hacer corresponder con otro del profile destino, se modifica su brillo para quedar dentro de la gama de colores del profile destino. Este tipo de rendering intent se usa para las imágenes vectoriales, donde el tono y la saturación de color es más importante que su brillo. Colorimetría relativa. En esta correspondencia se mantienen inalterados los colores que existen en los profiles origen y destino. Para los colores que no se pueden mapear, primero se mapea el blanco origen con el blanco destino, y después se escalan los colores que no se pueden mapear respecto al blanco destino. El resultado es una imagen más clara o más oscura, pero en la que coincide el blanco. Este rendering intent se usa principalmente el dispositivos de color punteado. Colorimetría absoluta. Esta correspondencia de color es parecida a la colorimetría relativa, pero se preserva el punto blanco. Este rendering intent se utiliza en soft-proofing donde, por ejemplo para simular un periódico impreso, el color del papel aparece amarillento, en vez de mostrarse el blanco puro. En la práctica, el rendering intent más usado, y el por defecto, es el perceptual. Madrid, Agosto del 2011 Fernando López Hernández [email protected] Pág 32