LAB 到 LCH 颜色转换

问题描述 投票:0回答:1

我正在尝试基于 Easy RGBlab-lch.js

将 CIE Lab 颜色转换为 CIE LCH

这是我正在使用的

function LAB_to_LCH(LAB)
{
    var labL = LAB[0];
    var labA = LAB[1];
    var labB = LAB[2];

    // https://easyrgb.com/en/math.php
    var lchH = Math.atan( labB, labA );
    // alert("lch (radians): " + lchH)
    lchH = to_degrees(lchH);

    lchL = labL;
    lchC = Math.sqrt( Math.pow(labA,2) + Math.pow(labB,2) );

    return [lchL,lchC,lchH];
}

function to_degrees (angle) 
{
    if (angle > 0) 
        {
            angle = (angle / Math.PI ) * 180;
        }
    else
        {
            angle = 360 - ( Math.abs(angle) / Math.PI ) * 180;
        }

  return angle;
}


var myLab = [20, 7, -25]; 
var myLCH = LAB_to_LCH(myLab); // 20, 25.95, 272.2
// should be // 20, 25.95, 285.64

var myLab = [91, -42, 57]; 
var myLCH = LAB_to_LCH(myLab); // 91.0 , 70.80254, 88.9949
// should be // 91.00, 70.80 126.38

它有效。 (嗯……三分之二还不错!)在 colourmine.org

上检查色调值时,它们应该是多少?

我不知道我哪里错了。有什么想法吗?

javascript colors lab-color-space
1个回答
0
投票

你的代码没问题 - 但有一个小错别字 -

var lchH = Math.atan( labB, labA );

需要

var lchH = Math.atan2( labB, labA );

Arctan 有续集 - 谁知道?!

© www.soinside.com 2019 - 2024. All rights reserved.