Правильная формула для определения оттенка CIE L * A * B * Color

StackOverflow https://stackoverflow.com//questions/10706578

  •  13-12-2019
  •  | 
  •  

Вопрос

EasyRGB дает следующую формулу для определения оттеса (и хрома) CIe l * a * b * цвет:

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
.

Однако он дает формулу ниже на Эта страница (Используется алгоритмом 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 )
}
.

Чтобы ухудшать вопросы, Эта страница Wikipedia говорится:

Cieluv также можно выразить в цилиндрической форме (Cielch), с Компоненты цветности заменены коррелятами хромы и оттенка.

можно сделать вывод, что это означает, что CIE L * A * B * следует сначала преобразовать в CIE L * U * V * до того, как следует определить оттенок.

Может ли кто-нибудь пролить свет на это?

Это было полезно?

Решение

Преобразовать ортогональные координаты A, B в полярные координаты C, H

 C = sqrt (a * a + b * b)
 h = arctan (b/a)
.

C - это хрома, H - угол оттенка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top