Conversión de diferentes gamas de colores

En el diseño de luces LED RGB ajustables, nos encontraremos con el problema de que algunos colores de la gama de colores estándar no se pueden mostrar. Como se muestra en la siguiente imagen, la gama de colores estándar sRGB es un triángulo negro y el triángulo rojo es nuestro parámetro real de cuentas de lámpara. En la imagen, puede ver que algunos colores en la parte superior derecha e inferior izquierda exceden los colores que nuestro Las lámparas realmente pueden ajustarse, lo que provocará errores de calibración del color y aparecerá un valor negativo.

 A través de la observación, se descubre que el color más allá de la pieza es similar al color cercano y es difícil para el ojo humano distinguirlo claramente.

A través de esto, podemos asignar el exceso al borde del triángulo rojo.

Pero surge la pregunta: ¿cómo debería mapearse? ¿Es una línea perpendicular que pasa por el punto de la súper gama de colores como lado del triángulo rojo, o algo más?

A través de las pruebas, encontramos que el punto central del gráfico es blanco e irradia hacia los alrededores desde este punto, por lo que seleccionamos el punto blanco sRGB (0.3127, 0.329) y conectamos los puntos de la súper gama de colores a través de este punto y la intersección. El punto con el borde del triángulo rojo es el punto de mapeo.

El siguiente paso es resolver las dos ecuaciones en línea recta, pero los resultados suelen ser infinitesimales. Es necesario saber cuándo llevar y cuándo descartar. Por ejemplo, en la esquina superior derecha, si el número calculado es (0.512367, 0.423785), tomamos cuatro decimales. Para asegurarnos de que esté dentro del triángulo rojo, debemos adoptar la estrategia de descarte final. El dato procesado es (0.5123 , 0,4237). Por ejemplo, en la esquina inferior izquierda, el resultado calculado es (0,152342, 0,067543), es necesario transportar x, redondear y y los datos procesados ​​​​finales son (0,1524, 0,0675).

// 超色域映射
  if (y > ((yg - yr) / (xg - xr) * x + yg - (yg - yr) / (xg - xr) * xg))
    {
        x = (yw - yg + (yg - yr) / (xg - xr) * xg - (yw - y) / (xw - x) * xw) / ((yg - yr) / (xg - xr) - (yw - y) / (xw - x));
    }
    if (y > ((yg - yb) / (xg - xb) * x_tmp + yg - (yg - yb) / (xg - xb) * xg))
    {
        x = (yw - yg + (yg - yb) / (xg - xb) * xg - (yw - y) / (xw - x) * xw) / ((yg - yb) / (xg - xb) - (yw - y) / (xw - x));
    }

    if ((y > ((yg - yr) / (xg - xr) * x_tmp + yg - (yg - yr) / (xg - xr) * xg)) || (y > ((yg - yb) / (xg - xb) * x_tmp + yg - (yg - yb) / (xg - xb) * xg)))
    {
        y = (yw - y) / (xw - x) * x + yw - (yw - y) / (xw - x) * xw;
    }

Después de las pruebas, se descubrió que este método es muy confiable y la visualización en color es precisa.

Compilé una tabla, ingresé las coordenadas de la súper gama de colores y se calcularán los puntos de mapeo correspondientes. Proporciona dos conjuntos de algoritmos, uno es el algoritmo vertical y el otro es el algoritmo de intersección de la conexión del punto blanco. Se recomienda utilizar el algoritmo de conexión de punto blanco. Las conexiones son las siguientes.

Conversión de gama de colores súper sRGB Recursos de documentación de Yxy-MCU-Descarga CSDN En el diseño de lámparas LED RGB ajustables, nos encontraremos con el problema de que algunos colores de la gama de colores estándar no se pueden mostrar. Como se muestra a continuación, la gama de colores estándar sRGB es negro. Para obtener más recursos de descarga y materiales de aprendizaje, visite el canal de descarga de CSDN. https://download.csdn.net/download/xiaoredred/85826429 Todos los materiales son originales y no son fáciles para editar Gracias por su apoyo.

Todos también son bienvenidos a señalar errores y aprender y mejorar juntos.

Supongo que te gusta

Origin blog.csdn.net/xiaoredred/article/details/125525354
Recomendado
Clasificación