Me estoy confundiendo bastante con el propósito de la corrección de gamma y la relación entre las imágenes con y sin corrección de gamma en términos de gráficos y fotografía, así como la gestión del color en general (conversión de RGB lineal a espacios RGB con corrección de gamma y luego mostrarlo en el pantalla).
De muchas fuentes, principalmente http://www.guillermoluijk.com/article/gamma/index.htm y la pregunta #23026151 en StackOverflow (¿Necesito corregir gamma la salida de color final en una computadora/monitor moderno?) , I' he llegado a la conclusión de que:
La corrección gamma se diseñó originalmente para compensar la respuesta no lineal de los monitores CRT a la señal de entrada. Los CRT no podían amplificar la señal de entrada por sí mismos y, por lo tanto, era necesario ajustar la señal de salida de la PC para dar lugar (a partir de hoy) a la corrección gamma 2.2 estándar y al espacio de color sRGB.
Las pantallas modernas , sin embargo, no sufren la pérdida de señal como lo hicieron los CRT. Ellos también pueden mostrar algunas faltas de linealidad, pero dado que la señal de entrada suele ser transportada por solo 8 bits por canal (256 tonos), deberían poder compensar algunas faltas de linealidad en su reproducción de color, ya que probablemente sean capaces de reproducir más de 256 tonos en un canal. Esto significaría que la corrección de gamma junto con sRGB y todos los espacios de color con corrección de gamma son solo una herencia de la era CRT y su único propósito era mostrar la señal de entrada de forma lineal.
También hay artículos que afirman que la corrección gamma está aquí para compensar la no linealidad de la visión humana.(CambridgeInColour.com - Comprensión de la corrección gamma), que debería corresponder aproximadamente a la curva gamma, ya que somos capaces de detectar pequeñas diferencias en los tonos más oscuros, pero no lo hacemos tan bien con los más brillantes (el brillo de un punto debe crecer exponencialmente para que parecer más brillante). Así no es como los sensores de la cámara graban la escena. Los datos sin procesar de un sensor se obtienen en RGB lineal y se desarrollan en un espacio de color RGB con corrección gamma (las sombras se elevan y las luces se oscurecen). Sin embargo, la corrección gamma estaba destinada a compensar la pérdida de la señal de salida, así que lo que creo que hacen las pantallas modernas es simplemente simular el comportamiento de los CRT para cancelar la corrección gamma y mostrar la escena tal como fue capturada por la cámara: en términos generales, mapeando la cámara sombras 1:1 a las de pantalla. Bien,
¿Significa entonces que cada tono en cualquier espacio de color RGB debe tener exactamente los mismos valores RGB en todos los demás espacios RGB, incluido el RGB lineal (por ejemplo, #010A1F en sRGB se traduce exactamente como #010A1F en RGB lineal en términos de almacenamiento en un archivo de mapa de bits con 8bpc) y solo depende de la pantalla y el adaptador de gráficos cómo organizan la transferencia de color y si cualquiera de los lados tiene que realizar algún cálculo adicional para convertir la imagen al espacio de color de destino. En otras palabras, cambiar el espacio de color en un editor de gráficos no tiene nada que ver con los valores RGB en sí, solo toma nota del nuevo espacio de color en los metadatos de la imagen? Creo que este no es el caso porque la gestión del color como tal se volvería inútil cuando se usa un adaptador de gráficos digitales/interfaz de pantalla: el adaptador de gráficos podría simplemente enviar datos RGB sin importar el espacio de color utilizado, ya que no se obtendría ganancia analógica (gamma). aplicado a los valores que van en una escala lineal de 0 a 255. Además, la gama de diferentes perfiles de color sería la misma si no se introdujeran errores de redondeo, ¿o sí?
Mi última confusión proviene posiblemente del malentendido de la conversión del perfil de color y la tabla de niveles de exposición (la primera) en el artículo http://www.guillermoluijk.com/article/superhdr/index.htm (se puede traducir usando Google Translate). ¿Entiendo bien que los valores lineales se transforman mediante una función exponencial (o gamma inversa), reduciendo el rango tonal hacia las sombras y oscureciendo así la imagen? ¿Es esto lo que sucede si guardamos RGB lineal y lo presentamos como una imagen con corrección de gamma en la pantalla de la computadora?
Me disculpo por hacer una pregunta tan compleja, pero resulta muy difícil encontrar una buena fuente de información que explique todas las incertidumbres que surgen. Gracias de antemano por cualquier respuesta que pueda ayudar a corregir mi malentendido.
de Charles Poynton "La rehabilitación de gamma" :
Concepto erróneo: la falta de linealidad de un monitor CRT es un defecto que debe corregirse.
Realidad: La no linealidad de un CRT es casi lo contrario de la sensibilidad a la luminosidad de la visión humana. La no linealidad hace que la respuesta de un CRT sea más o menos uniforme desde el punto de vista de la percepción. Lejos de ser un defecto, esta característica es muy deseable.
Concepto erróneo: el objetivo principal de la corrección gamma es compensar la no linealidad del CRT.
Realidad: El objetivo principal de la corrección de gamma en video, gráficos de escritorio, preimpresión, JPEG y MPEG es codificar valores de luminancia o triestímulo (proporcionales a la intensidad) en un dominio perceptualmente uniforme, para optimizar el rendimiento perceptivo de un número limitado de bits. en cada componente RGB (o CMYK).
el resto del artículo también es muy esclarecedor :)
Soy un ex ingeniero de transmisión y actualmente trabajo en largometrajes y televisión como editor y supervisor de VFX.
Muchas declaraciones aquí son incorrectas. Gamma en la ruta de la señal es un beneficio deseado y una opción de diseño de los primeros ingenieros de video para reducir el ruido percibido en la transmisión.
Todos los tubos de vacío, incluidos los CRT, exhiben varias no linealidades (consulte la ley de Langmuir-Child) Los CRT pueden variar de una "gamma" de 1,5 a más de 3,5 (cuando son impulsados por una señal de voltaje) según varias diferencias de diseño. Las no linealidades fueron un problema menor con el monocromo, pero se volvieron más críticas con el color, por lo que el NTSC especificó una señal gamma de 1/2.2. El diseño de CRT y los circuitos de soporte ajustan la gamma real de la ley de Langmuir-Child (comúnmente entendida como 1.5, pero generalmente es más alta con CRT debido a una serie de factores) a un nivel en línea con la percepción humana "gamma" de ~ 2.5. Para NTSC, se supuso que el televisor tenía un objetivo gamma de ~2,4,** mientras que PAL indicaba ~2,8
El gamma más alto en los antiguos estándares de señal de transmisión analógica es específicamente para reducir el ruido percibido, basado en que la percepción humana no es lineal. En este caso de uso, se aprovechan las no linealidades para ocultar el ruido mediante el efecto de "compansión" de la codificación gamma de la señal. Esto es bastante académico.
Hay algunas formas en que el diseño de monitores y televisores CRT podría haberse modificado para lograr linealidad en lugar de una curva de tipo gamma, pero una curva gamma en la transmisión analógica redujo el ruido aparente en 30 dB. Gamma era deseable entonces COMO LO ES AHORA .
Se necesita gamma incluso si un monitor LCD podría usarse de forma lineal (gamma 1.0). Las afirmaciones aquí de que gamma ya no es necesaria son una completa tontería y no entienden el propósito actual de aplicar una curva de preénfasis.
Gamma es lo que permite que sRGB (o Rec709) se vea "bien" a pesar de que la profundidad de bits es de solo 8 bits por canal. Aquí hay un ejemplo:
Esta es una imagen en sRGB, 8 bits, con pre-énfasis gamma (es decir, imagen web normal).
Así es como se vería esa imagen sin el beneficio de gamma (es decir, si fueran valores lineales y visualización lineal, sin énfasis previo de gamma).
Gamma proporciona MÁS BITS en las áreas más oscuras para gradientes más suaves y menos ruido.
Si quisiera ser totalmente lineal, toda la ruta de la señal necesitaría al menos 12 bits por canal. 8 bpc NO ES SUFICIENTE. La codificación con una curva y la decodificación en pantalla permite el uso de una porción de datos más pequeña de un byte por canal de color.
En el cine, usamos lineal como espacio de trabajo , pero cuando trabajamos con lineal estamos en punto flotante de 32 bits por canal . Cuando intercambiamos archivos de imágenes lineales, usamos EXR Half, que es de 16 bits por canal flotante. (Y si usamos archivos DPX de 10 bits, los datos de la imagen se codifican mediante una curva LOG).
PERO
Los monitores de computadora que usamos todavía son de 8 o 10 bits PARA VISUALIZACIÓN, por lo que todas las imágenes lineales aún deben ajustarse con gamma antes de enviarse al monitor. ¿Por qué?
La mayoría de los monitores "buenos" son solo de 8 bits por canal, y muchos son solo "internos de 6 bits", lo que significa que toman una imagen de 8 bits por canal y la muestran como 6 bits por canal. ¿Cómo pueden hacer una imagen aceptable?
Los monitores de 10 bits por canal son raros y caros (como mi NEX PA271W). Mi NEC puede tomar una señal de 10 bits y utiliza una LUT interna de 14 bits para la creación de perfiles. ¡Pero 10 bits aún no son suficientes para lineal!
Se requiere gamma o alguna forma de curva preemph/deemph incluso para 10 bits. 12 bits es el mínimo indispensable para una visualización lineal razonable, e incluso entonces es inaceptable para la industria cinematográfica.
Usamos proyectores de 12 bits para DCDM (Cine Digital) y ¿adivinen qué? ¡No solo DCDM usa CIE X´Y´Z´, TAMBIÉN usamos un proyector gamma de 2.6 !
DCI fue creado para teatros y es su propio ecosistema cerrado, sin depender de tecnologías antiguas como CRT. Si hubiera alguna "ventaja" al usar un espacio lineal (gamma 1.0), se habría usado, pero no se usa.
Lineal NO se usa en cine digital porque la VENTAJA está usando una curva gamma .
Lea a Poynton sobre el tema , ya que aclara estos problemas de una manera fácil de entender.
Gracias por leer.
Nota al pie: ** Si bien el NTSC especificó una señal gamma de 1/2,2, se esperaba que los televisores tuvieran una gamma de 2,4 para una ganancia gamma del sistema. Es útil señalar que Rec709 (HDTV) y sRGB son idénticos excepto por la curva de transferencia. Y curiosamente, Rec709 (a través de BT1886) especifica una "gamma de pantalla física" de 2.4 (es decir, la gamma del monitor en sí) y los monitores sRGB generalmente se configuran en 2.4 o más (las encuestas muestran que la mayoría de los usuarios los configuran en 2.5 y más). Pero la gamma SIGNAL es diferente, aprox. 1/2,2 para sRGB y aproximadamente 1/2,0 para Rec709. en ambos casos, hay una ganancia gamma del sistema que es intencional y se basa en el entorno de visualización esperado.
Considere este ejemplo de Cambridge in Color :
Al aplicar la codificación gamma, podemos representar la imagen original con mayor precisión, con la misma profundidad de bits (5, en este ejemplo).
Esto se logra mediante el uso de los 32 niveles de una manera que se corresponda más con el ojo humano. En otras palabras, es una forma de compresión. Los archivos JPEG, por ejemplo, pueden almacenar alrededor de 11 paradas de rango dinámico a pesar de usar solo 8 bits por canal.
Y como cualquier otra forma de compresión, no importa si no le importa el tamaño del archivo (y la menor velocidad con la que puede leer o escribir archivos más grandes). En teoría, podría usar un formato similar a JPEG que usara gamma lineal, si estuviera dispuesto a asignar 11 bits a cada canal en lugar de 8.
Entonces, para resumir, gamma es solo una forma de compresión: reduce el tamaño del archivo necesario para almacenar cierta cantidad de información tal como la percibe el ojo. Alternativamente, le permite almacenar gradaciones más sutiles en la misma profundidad de bits.
Hay muchos artículos confusos sobre la corrección gamma con muchas referencias vagas a la gamma y la visión humana. La razón de la gamma es histórica y resultado de la curva de respuesta de los antiguos monitores tipo CRT (nada que ver con la visión humana). Con las pantallas planas de hoy en día no existe una razón lógica para la codificación gamma y la corrección posterior, pero se ha convertido en el estándar de la industria.
La relación coincidentemente similar entre la curva gamma y la curva de respuesta de la visión humana ofrece algunas ventajas para ayudar a reducir el tamaño del archivo, ya que la profundidad de bits de la imagen se puede reducir sin afectar la calidad de imagen percibida .
Aquí está mi primer borrador de una respuesta: entraré en más detalles a medida que el tiempo lo permita, pero quiero darle al OP algún tipo de respuestas. Los comentarios son más que bienvenidos.
Las cosas sobre los CRT ya no se aplican. Pero hay una muy buena razón práctica para continuar usando imágenes codificadas con gamma. El uso de la codificación gamma hace que las ediciones como las curvas se vean "normales" porque el ojo no responde linealmente a la luz; consulte la creación del espacio LAB para obtener más información al respecto.
Para ver un ejemplo, mira esta captura de pantalla:
La imagen de la izquierda es el original, la imagen del medio es una copia en gamma 2.2 y la imagen de la derecha es una copia en gamma 1.0. Se puede ver la curva aplicada a cada una de las copias. Dada la forma de la curva, ¿la versión 2.2 o 1.0 se parece a lo esperado?
El OP es bastante correcto, excepto que gamma hace que los tonos oscuros sean más brillantes, no más tenues. Esto existe solo en el archivo, no en el ojo. Los datos siempre se decodifican de nuevo a su forma lineal original ANTES de que cualquier ojo los vea. Cualquier diferencia entre el ojo que ve la escena original y el que ve los datos decodificados reproducidos es simplemente un error de reproducción no deseado.
Gamma se realiza solo para corregir las graves pérdidas de los monitores CRT. CRT no es lineal, muestra tonos brillantes, pero pierde los tonos más oscuros. Por lo tanto, gamma hace que los tonos oscuros sean demasiado brillantes, para luego, con suerte, volver a aparecer normales (lineales) después de las pérdidas de CRT. Sin embargo, los monitores LCD son lineales, por lo que ya no necesitan gamma, pero para preservar la compatibilidad con todas las imágenes RGB antiguas del mundo, todos los estándares aún incluyen el mismo gamma. Es fácil para los monitores LCD simplemente decodificarlo y desecharlo. Y los datos todavía funcionan en CRT.
Gamma NO se trata de ninguna manera sobre el ojo humano ... aparte de que deseamos ver los datos originales lineales corregidos. El ojo tiene una respuesta inversa similar, que es pura coincidencia, pero el ojo humano NUNCA ve datos gamma. Siempre se decodifica primero (ya sea por pérdidas CRT o un chip LCD), y el ojo humano solo ve los datos lineales nuevamente (con suerte). Al igual que vio la escena original, tampoco se necesitó gamma en la escena original. El ojo no necesita ayuda. Sal y mira un árbol. No hay gamma allí. ¿Realmente imaginamos que nuestro ojo no puede ver bien el árbol? :) Piensa en eso un poco más. El cerebro decodifica la respuesta de los ojos y el CRT o LCD decodifica la codificación de datos. Aquellos que afirman que gamma se trata del ojo simplemente no saben, solo están repitiendo cosas incorrectas que escucharon. No es difícil escucharlo, pero está muy mal. Estos muchachos deberían explicar cuándo y cómo el ojo humano puede siquiera ver la gamma que imaginan que es necesaria. No puede, no tiene ninguna posibilidad.
Gamma no se trata de 8 bits. Los datos se codifican y luego se decodifican y, con suerte, son idénticos, para que podamos ver una reproducción precisa de la escena lineal original. Gamma se hizo a principios de NTSC TV (1940), antes de que hubiera bits, pero teníamos CRT. :) Gamma se trata solo de pérdidas CRT. Puro y simple. Y en los días de CRT, la gamma era extremadamente necesaria.
Los datos RGB se normalizan (para ser valores porcentuales de 0 a 1) antes de agregar gamma, normalmente con un exponente de 1/2,2 (raíz cuadrada aproximada). 18% es (0.18 ^ 1/2.2) = 0.46, o 46% en el histograma, o 117 en la escala 0..255. (La imagen de la gente 18 % también debería ser 50 %. :) 18 % es 18 %, pero vemos casi 50 %, solo porque los datos del histograma están codificados con gamma). cualquier exponente sigue siendo 1, por lo que no hay un aumento del rango dinámico. Y tampoco hay recorte debido a la gamma, los puntos finales no se pueden mover. Y por supuesto, porque los datos se decodifican antes de que nadie los vea. Todo el asunto (codificar, luego decodificar) es simplemente un no-op. Sin cambios en el ojo, con suerte. Pero en los archivos, los datos normalizados (que son una FRACCIÓN) a un exponente se convierten en un número más grande, más brillante, excepto que ningún ojo puede verlo allí.
Gamma SÓLO se realiza para corregir la respuesta de los monitores CRT.
Creo que nuestros ojos tienen esta curva de respuesta, pero esta respuesta a un cambio repentino en la cantidad de luz, especialmente si aumenta, pero al mismo tiempo el cerebro decodifica esa respuesta estrechando nuestro iris para mantener la misma (percepción lineal) que tener mientras se encuentra en una condición de visualización estable hasta que la transición a la nueva condición de visualización ocurra sin problemas.
La corrección gamma provino esencialmente de la no linealidad del cañón de electrones CRT que necesitaba más codificación (es decir, se aplicó una gamma de .45) para enviar una salida uniforme (salida lineal) porque las características del cañón de electrones CRT hacen que la señal sea como si estuviera decodificada (es decir, un gamma 2.2 curva aplicada). En los días de CRT, codificaron todos los datos digitales para mantener la uniformidad de visualización e intercambio de datos en Internet, por lo que los formatos de archivos de imagen se codificaron principalmente con la curva gamma de sRGB, que es muy similar a la curva gamma .45455) y eso canceló el problema de la pistola CRT .
Ahora, después de que se codificaron todos los datos en Internet y debido al comportamiento lineal de la tecnología LCD (es decir, señal de entrada = valores de salida), descubrieron que era demasiado tarde para decodificar todos los datos digitales nuevamente después de que se convirtió en un estándar, por lo que vinieron con un solución lógica! y es para imitar el defecto CRT nuevamente y produjeron LCD con un chip que decodifica la señal (es decir, aplica una curva gamma 2.2) como un sistema heredado :) de lo contrario, deberían haber decodificado todos los datos en Internet.
Así que no te quedes atascado en esta confusión de la no linealidad del ojo, tendrás un círculo interminable de pensamientos sin esperanza.
Y aquí está la relación con Gamma And Our Eyes
Datos de imágenes lineales producidos por los sensores de la cámara Archivos RAW que tienen por defecto gamma = 1.00 (naturaleza del sensor de la cámara), es decir (sin decodificación o codificación = sin corrección) cuando los archivos RAW "se muestran" en el monitor se oscurecen "solo se ven oscuros" y hay 10 y 12 bits por canal son archivos grandes, pero lamentablemente no estábamos beneficiando esta profundidad en absoluto porque nuestros ojos no son tan sensibles a los valores brillantes como lo son demasiado a los valores oscuros y pueden distinguir cualquier cambio sutil en la oscuridad (y lo haré explicando más abajo).
Debido a que la imagen se "ve oscura" debido a la naturaleza de los monitores, los niveles de brillo se desperdician en los valores brillantes más que en los medios y los valores oscuros (porque la gamma del monitor vio los tonos medios reducidos), por lo que nos beneficiaríamos mucho más si estuviera oscuro. valores tenían la misma oportunidad.
Entonces descubrieron que aplicar la corrección gamma (por ejemplo, codificando datos sin procesar en algún formato como JPEG con .45455 gamma de sRGB) por suerte convirtiéndolo a 8 bits por canal, lo que significa un tamaño de archivo más bajo además de una visualización o visualización adecuada de los valores de brillo. (que consiste en quemar la gamma .45455 en los píxeles) y volver a subir los tonos oscuros y medios) es muy consistente con la naturaleza del ojo.
Mi explicación es porque las células Rod en los ojos tenemos la capacidad de visión nocturna y esa naturaleza demasiado sensible de distinguir valores oscuros >> tenemos alrededor de 120 millones de células Rod Vs solo 6 o millones para las células Cones que son sensibles a colores monocromáticos y longitudes de onda
Creo que no es la curva de respuesta del ojo la responsable de eso y no intente vincular entre Eye's Gamma y Monitor Gamma de ninguna otra manera y, por favor, corríjame si me equivoco :). Me ha costado entender los problemas de Gamma, así que todo lo que tengo al respecto.
Esta es una de las mejores referencias sobre razones gamma y soluciones.
De hecho, la gamma no es necesaria en estos días, especialmente cuando se trabaja en representaciones de la imagen con muchos bits. Sin embargo, eso significa una reescritura completa del software en demasiados casos, o la transición está lejos de ser perfecta (por ejemplo, las curvas familiares cambian la forma por completo, como acaba de mencionar el Sr. Blankertz).
Los monitores LCD son "lineales" y no necesitan gamma hoy en día, pero los monitores CRT no son lineales y todavía lo necesitan. Y todos los archivos mundiales de imágenes existentes tienen gamma para CRT, por lo que es mucho más fácil continuar agregando gamma que cambiar todo el software y dejar obsoletas todas las imágenes existentes.
El ojo humano no tiene absolutamente ningún uso para gamma. El ojo ve bien la escena original sin gamma. Gamma es SOLO para corregir las pérdidas esperadas de los monitores CRT (por lo que vemos una reproducción de la escena original). Los monitores LED saben que simplemente deben decodificar gamma y descartarlo, no es gran cosa (debido a que el ojo humano espera ver una reproducción fiel de los datos de la escena original sin gamma, la reproducción debería verse igual). Sería malo verlo como datos gamma. Afortunadamente, el ojo humano no tiene ninguna oportunidad de ver ningún dato gamma. Los sitios que nos dicen que el ojo necesita gamma simplemente no saben nada sobre gamma.
Sin embargo, nuestros histogramas están codificados con gamma, porque los datos están codificados (por la razón anterior), hasta justo antes de que se muestren al ojo humano. El punto medio de nuestros datos codificados no es el 50 %, sino alrededor del 73 % en datos gamma (los ajustes de la cámara, como el balance de blancos y el contraste, lo cambian un poco más). Si subexpone una imagen exactamente una parada, el punto 255 cambia a una escala de aproximadamente 3/4 y NO a una escala del 50%. Una tarjeta con un 18 % de grises es un 18 % en datos lineales, pero alrededor de un 46 % en datos gamma. Las personas que asumen incorrectamente que debe ser el 50% de alguna manera pueden incluso pensar en calibrar su medidor de luz para eso. :) Pero el ojo nunca ve los datos gamma, siempre se decodifican primero, de una forma u otra. Con suerte, el ojo siempre ve una reproducción fiel de la escena original.
Pero FWIW, las impresoras también necesitan la mayor parte del cambio gamma. No vale 2.2, pero no demasiado (debido a la ganancia de punto, etc.). Apple observa los estándares mundiales 2.2 ahora, pero todos sabemos que las primeras computadoras Mac solían usar gamma 1.8. Esto NO fue para el monitor, usaron los mismos monitores que usó Windows (los monitores son intercambiables). Pero Apple solía vender impresoras láser en ese entonces, y la gamma 1.8 era para su impresora. Luego, el hardware de video de Mac agregó un poco más para llevarlo al 2.2 que necesitaba el CRT. Hoy en día, las imprentas tienen que bajar un poco el tono de los datos 2.2 que reciben, pero aún necesitan gran parte de ellos.
Hoy en día, el estándar es gamma 2.2, por lo que todos los datos RGB existentes en el mundo siguen siendo compatibles.
JenSCDC
JenSCDC
Jukka Suomela
Jukka Suomela