Fórmula correcta para determinar el tono de un color CIE L * A * B *
-
13-12-2019 - |
Pregunta
EASYRGB Da la siguiente fórmula para determinar el tono (y croma) de un CIE L * A * B * Color:
var_H = arc_tangent( CIE-b*, CIE-a* ) //Quadrant by signs
if ( var_H > 0 ) var_H = ( var_H / PI ) * 180
else var_H = 360 - ( abs( var_H ) / PI ) * 180
CIE-L* = CIE-L*
CIE-C* = sqrt( CIE-a* ^ 2 + CIE-b* ^ 2 )
CIE-H° = var_H
Sin embargo, da la fórmula a continuación en esta página (utilizado por el algoritmo del Delta CMC):
CieLab2Hue( var_a, var_b ) //Function returns CIE-H° value
{
var_bias = 0
if ( var_a >= 0 && var_b == 0 ) return 0
if ( var_a < 0 && var_b == 0 ) return 180
if ( var_a == 0 && var_b > 0 ) return 90
if ( var_a == 0 && var_b < 0 ) return 270
if ( var_a > 0 && var_b > 0 ) var_bias = 0
if ( var_a < 0 ) var_bias = 180
if ( var_a > 0 && var_b < 0 ) var_bias = 360
return ( rad2deg( atan( var_b / var_a ) ) + var_bias )
}
para empeorar los asuntos, Esta página de Wikipedia establece lo siguiente:
CIELUV también se puede expresar en forma cilíndrica (CIELCH), con el Componentes de cromaticidad reemplazados por correlatos de croma y tono.
Se podría concluir que esto significa que CIE L * A * B * se convierte primero a CIE L * U * V * antes de que se pueda determinar el tono.
¿Alguien puede arrojar alguna luz sobre esto?
Solución
convertir las coordenadas ortogonales A, B a las coordenadas polares C, H
C = sqrt (a * a + b * b)
h = arctan (b/a)
c es el croma, h es el ángulo del tono.