¿Cómo calcular otros colores con la misma claridad percibida que un valor de gris dado?

11

Esto está relacionado con una pregunta que hice en tex.stackexchange , que tiene un aspecto de color. El resultado de esa pregunta es la siguiente imagen:
valor y contraste de saturación

He dibujado una serie de cuadrados grises a la izquierda, con una rama roja que parte a la derecha. El objetivo es tener diferentes cuadrados rojos con una saturación diferente, pero todos con el mismo valor de gris. En el modelo de color hsv, todos tienen lo mismo v, pero cuando convierto la imagen a escala de grises usando Gimp, no se convierten al mismo gris. También la impresión visual es que los cuadrados rojos de la derecha son más oscuros que los de la izquierda.

¿Cómo puedo, dado un cierto gris, calcular colores con un cierto tono y el mismo valor de gris (o, mejor aún, con la misma impresión de gris )? Todos los colores utilizados en la imagen están calculados, por lo que prefiero soluciones que también incorporen cálculos.

Podría haber utilizado términos incorrectos aquí: soy ingeniero mecánico, así que corríjame cuando corresponda o solicite una aclaración.


La sugerencia de usar el espacio de color Lab me ha llevado a algunas conclusiones:

  • Puedo usar el Lvalor del modelo Lab para establecer algún tipo de valor de gris para diferentes colores. En el modelo hsv esto es v. No estoy seguro de si se me permite compararlos, pero lo haré hasta que alguien se queje.

  • En el modelo hsv también puedo establecer un "color base" (un tono), que no puedo encontrar en el modelo Lab.

  • En el modelo hsv, tengo 2 constantes (en la imagen de arriba: h= 0, v= 0.375) y una variable ( s).

  • Hasta este punto, solo tengo una constante en el modelo Lab. Eso no es suficiente para generar algo similar a lo que ya hice con el modelo hsv.

Supongo que es hora de experimentos.


¡Hecho! Después de ejecutar el código de conversión, fue muy fácil. El primer paso fue definir el "objetivo rojo" a la derecha. Calculé RGB2Lab (255,0,0) y cambié el valor L del resultado al L deseado en la figura (L = 62.5). Los colores se calculan utilizando una interpolación lineal en el espacio Lab de (L, 0,0) a (L, aTarget, bTarget). El resultado:

ingrese la descripción de la imagen aquí

¡Gracias!

Christoph
fuente
2
Hay un montón de cosas que puede encontrar útiles en la entrada de wikipedia, pero encontré ( en.wikipedia.org/wiki/HSL_and_HSV#Disadvantages ) de una posible relación con su problema, específicamente: "Porque HSL y HSV se definen puramente con referencia a algún espacio RGB, no son espacios de color absolutos: para especificar un color con precisión se requiere informar no solo los valores HSL o HSV, sino también las características del espacio RGB en el que se basan, incluida la corrección gamma en uso ".
Horatio
Entonces, la idea obvia es especificar el espacio de color gamma y RGB (si es posible) al intentar una conversión.
Horatio
2
Una idea aún mejor es RGB → L * a * b * → RGB; como Lab está diseñado para aproximarse a la visión humana y la ligereza es una de sus dimensiones.
Jari Keinänen
@koiyu Lab es como sugiero que también se encuentren coincidencias grises. (¡Me ganaste! Me estaba burlando de la respuesta a continuación cuando publicaste esto.)
Nick
Estaba evitando la discusión problemática de la percepción del color :)
horatio

Respuestas:

10

Puede usar el espacio de color Lab para encontrar sus coincidencias. Los colores con el mismo valor L que el gris objetivo se verán casi idénticos cuando se conviertan a escala de grises.

Por ejemplo, un gris Lab de (50, 0, 0) se verá muy similar a los rojos Lab (50, 30, 0), (50, 50, 30) y (50, 50, 50) cuando se convierta a escala de grises Las siguientes muestras usan Photoshop (Imagen> Modo> Escala de grises) para convertir de Lab a gris: Colores originales de laboratorio
Convertido a escala de grises

Mella
fuente
¡Eso parece algo que quiero! Gracias. Sin embargo, no puedo usar Lab directamente con mi conjunto de herramientas, por lo que necesito algún tipo de algoritmo de conversión. Koiyu sugirió convertir RGB -> Lab -> RGB, e intentaré implementar eso.
Christoph
1
Encontré lo siguiente: http://www.brucelindbloom.com/index.html?Equations.html . No sé si las conversiones son correctas y tengo la impresión de que todavía se requiere algo de magia.
Christoph
Parece que estas funciones de conversión podrían ser útiles.
Nick
Y que de hecho se ven un poco más sencillo ...
Christoph
@ Nick, puedo hacer todos los cálculos con una calculadora, lo cual es bueno. Sin embargo, tengo que implementar las conversiones del modelo de color en mi documento LaTeX, lo que me da dolor de cabeza aquí y allá. Cuando termine, publicaré el resultado y aceptaré su respuesta.
Christoph
4

Entonces, el consejo anterior de Nick solo funciona para 50% de luminancia. Si aplica cualquier otro valor L igual a diferentes colores, el resultado gris es diferente.

Debe haber una matemática para eso, pero puede hacerlo en la pantalla a simple vista.

Si crea todos los colores que desea y luego coloca un elemento gris (ilustrador) o una capa (photoshop) con su modo de transparencia en "color" (o saturación o tono), eso hará que todos los elementos a continuación revelen su luminosidad.

Debes asegurarte de que todos los colores debajo de ese elemento gris tengan una saturación de 100, o tendrás resultados grises, en lugar de colores agradables.

Ahora, el problema es: con todos los métodos anteriores, hará que todos los elementos tengan la "misma luminosidad dentro del perfil RGB utilizado", es decir, el mismo gris para el "dispositivo" seleccionado, y la peor parte: el ojo es un dispositivo , y hay diferencias.

Puede mostrar los mismos colores a diferentes personas y no encontrarán la misma "uniformidad" que los demás.

Agregue eso al hecho de que está configurando esos colores como "misma luminosidad" en el dispositivo seleccionado, y no solo todos están "estimados", tan pronto como lo muestre en un dispositivo diferente, el efecto fallará, porque cada dispositivo tiene su propia capacidad de iluminar los elementos rojos, verdes o azules con diferentes intensidades, por lo que podría estar recibiendo, por ejemplo, elementos más rojos.

Además, si realiza una mezcla de un gris a un color como se sugirió anteriormente, debe asegurarse de que el elemento gris tenga al menos 1/255 mínimo en cada canal (es decir, no más gris) o el software considerará el origen gris como 0-matiz, que le dará tonos medios rojo-ish (porque una mezcla entre 0 matices y cualquier otro color estará a medio camino hacia un rojo)

Soy un experto en preimpresión desde los años 90 y mi consejo es: si vas a ir con las matemáticas, debes usar las matemáticas para el ojo (capacidades visuales) y las del dispositivo que mostrarás esos números en

Buena suerte.

sergio
fuente