
Hola Habr!
En la coloración, existen varios métodos para construir una gama de colores (paleta de colores), basados en la disposición de los colores entre sí en la rueda de colores y, como regla, con el mismo brillo. La percepción armoniosa de los cuales no está suficientemente justificada desde un punto de vista físico.
En la teoría de la música existe el concepto de intervalos consonantes. Las consonancias se llaman intervalos que suenan más suaves y armoniosos. Hay tres grupos de consonantes: muy perfecto (unísono puro, octava), perfecto (quinto puro, cuarto puro) e imperfecto (tercio grande, tercio pequeño, sexto). También existe el concepto de un acorde consonante: una tríada mayor o menor, que consiste únicamente en intervalos consonantes.
Acústicamente, la esencia de la diferencia entre consonancia y disonancia se expresa en diferentes períodos de grupos vibracionales repetidos regularmente. El criterio para la diferencia entre consonancia y disonancia es la simplicidad o complejidad de la relación: cuanto más simple es la relación, más consonante, más compleja, más disonante, donde las proporciones numéricas se pueden expresar de dos maneras: a través de las proporciones de las longitudes de las cuerdas o a través de las relaciones del número de oscilaciones. En otras palabras, el grado de consonancia de dos notas está determinado por el número de períodos de coincidencia de las funciones armónicas correspondientes de la dependencia de la presión del sonido en el tiempo por unidad de tiempo.

Fig. 1: Gráfico de presión sonora versus tiempo a una distancia fija de la fuente de sonido.
Por ejemplo, las notas y la sal (quinto puro) tienen longitudes de onda de sonido que difieren una vez y media. Las gráficas de las funciones de la dependencia de la presión sonora de las notas en el tiempo se cruzan en el eje de abscisas (presión sonora igual a cero) cuando la función de presión sonora de la nota anterior hace dos vibraciones, y la función de la nota de sal - tres (Fig.1). En la Figura 1, este momento está marcado con una línea vertical.

Fig. 2: Gráfico de presión sonora versus distancia desde una fuente en un punto fijo en el tiempo.
Si imaginamos la propagación de la presión del sonido en el espacio en un punto fijo en el tiempo (cerca de la fuente de sonido), obtenemos la misma imagen (Fig. 2).
Las notas anteriores y mi (tercio mayor) tienen longitudes de onda de sonido que difieren 5/4 veces. Sus gráficos se cruzan en el eje de la abscisa cuando la función de presión sonora de la nota hace 4 oscilaciones, y la función de la nota mi es 5. Es precisamente por esto que el quinto puro es más consistente que el tercero grande.
El color, como el sonido, también es una onda (dualidad onda-partícula). En el caso de construir un intervalo de consonantes para el color, no estamos limitados a un pequeño conjunto de notas, sino que estamos limitados por los límites de las longitudes de onda de la luz visible, al igual que el sonido está limitado por los límites de las longitudes de onda del sonido audible. La ausencia de restricciones en un pequeño conjunto de notas lleva al hecho de que podemos expandir significativamente la lista de intervalos: 3/2; 3/4; 2/5, 3/5, 4/5, ...
Método de onda para construir un esquema de color.
Considere la construcción de colores para colores espectrales y no espectrales.
Un color espectral es un color que tiene una longitud de onda específica. Para construir una paleta de colores, primero tomamos el color más consonante: este es un color con una longitud de onda que difiere en 1,5 veces, pero que no va más allá del espectro visible. Además, de manera similar, tomaremos menos intervalos de consonantes hasta que alcancemos el número deseado de colores en la paleta deseada.

Fig. 3: Gráfico de la intensidad del campo eléctrico versus la distancia desde la fuente en un punto fijo en el tiempo.
Tomemos, por ejemplo, azul con una longitud de onda de 450 nm. Un color cuya longitud de onda es inferior a 1,5 veces va más allá de la radiación visible. Un color con una longitud de onda superior a 1,5 veces (675 nm.) Es rojo. Un color con una longitud de onda mayor de 3/4 veces (600 nm.) Es un color naranja. Como resultado, obtuvimos la siguiente gama de colores: el color principal es el azul, el color más adecuado es el rojo y el color naranja es ligeramente menos adecuado para el azul (Fig. 3). Los mismos resultados se pueden lograr operando en lugar de longitudes de onda con sus frecuencias.
También en la música existe el concepto de traste. La combinación de notas puede sonar no solo armoniosa, sino que también tiene un traste de sombra (jónico, dórico, frigio, lidio, ...). Se pueden transferir sentimientos similares al esquema de color, utilizando las proporciones apropiadas al construirlo.
Los colores no espectrales incluyen colores que no están contenidos en el espectro y consisten en varios colores espectrales. Basado en la ley de la aditividad de Grassmann, se deduce que en el caso de seleccionar una gama de colores para colores no espectrales, se deben realizar las mismas operaciones en sus colores constituyentes, manteniendo las proporciones y teniendo en cuenta los límites de longitud de onda del espectro visible.
Consideremos con más detalle el fenómeno de la consonancia entre dos colores no espectrales. El sonido musical consta de tonos elementales ya que, junto con la oscilación de la fuente de sonido en sí, como un todo, sus partes también oscilan. Las vibraciones de las partes del cuerpo vibratorio dan lugar a armónicos débiles, armónicos absorbidos por el tono fundamental. La escala compleja de formación de tonos de tonos simples de las amplitudes correspondientes se llama espectro de frecuencia. Todos los tonos elementales incluidos en un sonido complejo se llaman armónicos. El grado de consonancia del intervalo está determinado por el número de armónicos coincidentes de los espectros de ambas notas: cuantos más armónicos coinciden, más consonante es el intervalo.

Fig. 4: Gráfico de presión sonora versus tiempo a una distancia fija de la fuente de sonido.
En base a esto, creemos que la esencia del fenómeno de armonía (consonancia) consiste en el estado simultáneo de reposo (energía es cero) de ambas ondas. En los gráficos, este estado de reposo se muestra en la intersección de dos funciones de onda en el eje de abscisa (tiempo) (Fig. 4). Y el grado de consonancia de dos funciones de onda está determinado por el número de tales intersecciones por unidad de tiempo (o longitud, sujeto a la misma velocidad de propagación): cuanto más, más consonante. Este concepto del grado de consonancia también se extiende a los colores no espectrales, ya que también son funciones de onda.
Implementación del método de onda usando el blanco como ejemplo en el sistema sRGB
Una persona puede percibir colores con longitudes de onda en el rango de 380 - 780 nm. Cualesquiera cuatro colores dependen linealmente, sin embargo, hay un número infinito de combinaciones de tres colores que son linealmente independientes (primera ley de Grassmann). La independencia de colores de Grassman es que la sensación de color causada por uno de los tres colores no se puede obtener mezclando los otros dos colores en ninguna proporción. Se notó que es más conveniente operar con colores rojo, verde y azul. Es por este principio que casi todos los monitores modernos funcionan.
En 1931, el Congreso Internacional de Iluminación (CIE) adoptó una caracterización de las propiedades de color del observador promedio (estándar), basado en los resultados obtenidos en 1926-1930. Wright y Guild. La base de este estándar colorimétrico, que es válido hasta el día de hoy, son los siguientes colores: 700 nm. (rojo), 546,1 nm (verde) y 435,8 nm. (azul) (sistema RGB). La característica adoptada contiene la relación entre la longitud de onda resultante de la mezcla y la cantidad de colores rojo, verde y azul en esta mezcla.
Además, para la conveniencia de los cálculos, el Congreso Internacional de Iluminación introdujo el sistema abstracto CIE XYZ, basado en colores poco realistas. Este sistema de coordenadas es muy conveniente para la transición de un sistema a otro. Las longitudes de onda de la luz visible y las coordenadas correspondientes de la mezcla CIE XYZ también se calcularon en función de los resultados obtenidos para el sistema RGB.
Para reproducir las mismas sensaciones de color en diferentes dispositivos de salida (monitor o impresora), cada dispositivo tiene su propio perfil de color, que contiene su conexión con el sistema abstracto CIE XYZ. En otras palabras, el perfil de color sirve para permitir la transición entre diferentes sistemas de color (sRGB, AdobeRGB, ...). El espacio de color más común es el sistema sRGB. A continuación, consideramos la implementación del método de onda específicamente para este sistema.
Encontramos las longitudes de onda de rojo, verde y azul en el sistema sRGB. Para hacer esto, utilizamos las fórmulas de transición del sistema sRGB a CIE XYZ (con un punto blanco D65). Como resultado, para rgb rojo (255, 0, 0) , rgb verde (0, 255, 0) y rgb azul (0, 0, 255) obtenemos las siguientes coordenadas en el sistema CIE XYZ: rojo - (0.412456, 0.212673, 0.019334), verde - (0.357576, 0.715152, 0.119192), azul - (0.180437, 0.072175, 0.950304).
Usando tablas que contienen las longitudes de onda de la luz visible (CIE 1931 2-deg, XYZ CMF) y las coordenadas correspondientes de la mezcla CIE XYZ, encontramos las longitudes de onda para rojo, verde y azul en el sistema sRGB: rojo - 611.4 nm., Verde - 549.1 nm., azul - 464.2 nm.
Ahora encontramos el "quinto puro" para este color, un color con una longitud de onda superior a 1,5 veces:
para rojo - 611.4 nm. x 1.5 = 917.1 nm. (va más allá del espectro visible, color negro),
para verde - 549.1 nm. x 1.5 = 823.65 nm. (color casi negro),
para azul - 464,2 nm. x 1.5 = 696.3 nm. (color rojo)
Luego, usando las mismas tablas, encontramos las coordenadas para las ondas obtenidas en el sistema CIE XYZ:
para rojo - 917.1 nm. - (0, 0, 0),
para verde - 823.65 nm. - (0.000001905497, 0.000000688110, 0.000000000000),
para azul - 696.3 nm. - (0.014790640000, 0.005343059000, 0.000000000000).
Luego transferimos cada uno de los colores recibidos al sistema sRGB:
para rojo - 917.1 nm. - rgb (0, 0, 0),
para verde - 823.65 nm. - rgb (0.0168, -0.0018, 0.0000),
para azul - 696.3 nm. - rgb (56.1246, -13.7888, -0.8801).
Redondeando al entero más cercano y descartando lo que es menor que cero, obtenemos:
para rojo - 917.1 nm. - rgb (0, 0, 0),
para verde - 823.65 nm. - rgb (0, 0, 0),
para azul - 696.3 nm. - rgb (56, 0, 0).

Fig. 5: imagen en color RGB (56, 0, 0).
Resumiendo los tres colores resultantes, terminamos con un color rojo oscuro que en el espectro está cerca del infrarrojo - rgb (56, 0, 0) (Fig. 5).
La implementación del algoritmo se mostró arriba usando el rgb blanco (255, 255, 255) por 3/2 como ejemplo. Aquí, el brillo relativo no se tuvo en cuenta, para cuyo cálculo también es necesario convertir al sistema xyY.
Implementación del método wave en infografía
Junto con los sistemas sRGB y CIE XYZ, también existe el sistema xyY, donde los componentes x e y son responsables de la longitud de onda, y el componente Y del brillo de color relativo. Realizamos la transformación del párrafo anterior con colores arbitrarios rgb (r, g, b). Para hacer esto, primero encontramos las coordenadas de los colores máximos de rojo, verde y azul en el sistema xyY:
rgb (255, 0, 0) - xyY (0.640000, 0.330000, 0.212673),
rgb (0, 255, 0) - xyY (0.300000, 0.600000, 0.715152),
rgb (0, 0, 255) - xyY (0.150000, 0.060000, 0.072175).
En este caso, solo estamos interesados en el componente de brillo Y:
rYmax = 0.212673,
gYmax = 0.715152,
bYmax = 0.072175.
A continuación, traducimos el color azul de rgb (0, 0, b) en el sistema xyY, a través de CIE XYZ, teniendo en cuenta la corrección gamma:
rgb (0, 0, b) - xyY (bx, por, bY).
Como resultado, el brillo del color que obtuvimos para el azul en el párrafo anterior debería ser menor que bY / bYmax veces. Para el color rgb (0, 0, 255), obtuvimos un color con una longitud de onda de 696.3 nm. que corresponde al color en el sistema xyY con coordenadas xyY (0.734621, 0.265379, 0.00543824). Como resultado, obtenemos: xyY (0.734621, 0.265379, 0.00543824 * bY / bYmax). A continuación, convertiremos al sistema sRGB y obtendremos el color rgb (br, bg, bb).
Realizando acciones similares para los colores rgb (r, 0, 0) y rgb (0, g, 0), obtenemos rgb (rr, rg, rb) y rgb (gr, gg, gb), respectivamente.
A continuación, agregamos estos colores, teniendo en cuenta el brillo. Primero sumamos rgb (rr, 0, 0), rgb (gr, 0, 0) y rgb (br, 0, 0). Al convertir cada uno de estos colores al sistema xyY, obtenemos los brillos correspondientes: rrY, grY, brY. Encuentre el brillo total del rojo: rY = rrY + grY + brY. El color final tendrá las siguientes coordenadas: xyY (0.640000, 0.330000, rY). Al transferir sRGB al sistema, obtenemos rgb (rNew, 0, 0). Del mismo modo, encontramos gNew y bNew. El color resultante en el sistema sRGB tendrá las coordenadas rgb (rNew, gNew, bNew).
PS
Este artículo describe y justifica desde un punto de vista físico el método de onda que desarrollamos para construir la gama de colores. Se describió su comprensión de la esencia del fenómeno de la armonía. El artículo también describió el algoritmo para implementar el método de onda para el modelo de color sRGB en gráficos de computadora.
Este método puede ser ampliamente utilizado en varias industrias de diseño. Los resultados están en el sitio web https://wavepalette.com/ru/ y se actualizarán periódicamente y, si es necesario, se ajustarán. El artículo fue publicado en arxiv.org .
PPS
En el sitio junto a cada color, la conversión y la dirección se indican mediante una fracción y una flecha (3/2 ↑). La conversión doble se indica mediante dos flechas (4/3 ↑↑ que es equivalente a 16/9 ↑). Los primeros dos colores serán casi siempre rojo oscuro y púrpura oscuro, ya que las conversiones 3/2 y 2/3 están cerca del color infrarrojo y ultravioleta del espectro. Al principio pensé en excluirlos de la paleta, pero luego decidí dejarlo de todos modos.
PPPS
El algoritmo para construir colores para cualquier color en el sistema sRGB aún requiere refinamiento. En mi opinión, los buenos resultados que el algoritmo puede usar se muestran en colores espectrales: https://wavepalette.com/en/spectral/ .


PPPPS
Finalicé el algoritmo y actualicé el sitio.