Formule correcte pour déterminer la teinte d'une couleur CIE L * A * B *
-
13-12-2019 - |
Question
easyrgb donne la formule suivante pour déterminer la teinte (et chroma) d'une CIE L * A * B * Couleur:
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
Cependant, il donne la formule ci-dessous sur Cette page (utilisé par l'algorithme 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 )
}
Pour aggraver les choses, Cette page Wikipedia indique les éléments suivants:
CIELUV peut également être exprimé sous forme cylindrique (Cielch), avec le composants de chromaticité remplacés par des corrélats de chroma et de teinte.
On pourrait conclure que cela signifie que CIE L * A * B * doit être converti pour la première fois en CIE L * U * V * avant que la teinte puisse être déterminée.
Quelqu'un peut-il perdre une lumière sur cela?
La solution
Convertir des coordonnées orthogonales A, B sur les coordonnées polaires C, H
C = sqrt (a * a + b * b)
h = arctan (b/a)
c est le chroma, H est l'angle de teinte.