无损 sRGB <-> 实验室转换?

Lossless sRGB <-> Lab conversion?

当我 convert black (rgb(0,0,0)) to LAB 并再次返回时,结果为 19, 0, 10

是否有修改公式扩展Lab颜色-space用于1:1转换?如果不是,是否有任何其他颜色-space 保持 "the same amount of numerical change in these values corresponds to roughly the same amount of visually perceived change" 的 属性?

我想 运行 在某些图像上进行 k-means 聚类,它在实验室 space 中效果更好 space。

简短的回答是您使用的代码库有错误。

而且好像也没有主动维护

FWIW,当您查看值时,请记住:

#000

sRGB 0,0,0 = linearRGB 0.0,0.0,0.0 = XYZ 0,0,0 = Lab 0,0,0
(所有空格 0,0,0)

#FFF

sRGB 255,255,255 = linearRGB 1.0,1.0,1.0 = XYZ 0.9505,1.0,1.0888 = Lab 100,0,0
(sRGB 为 D65,这里假设 D65 2° 观察者)

#777

sRGB 119,119,119 = linearRGB 0.1845,0.1845,0.1845 = XYZ 0.1753,0.1845,0.2009 = Lab 50.03,0,0
(使用 BruceLindbloom 矩阵)

伪代码

更正确的代码可以在这里找到:

https://www.easyrgb.com/en/math.php

但是,此代码不是 javascript — 此站点上的代码是伪代码,因此需要对其进行修改(即您需要使用 Math.pow 而不是 ^ )

Python

这里有一个很好的基于 Python 的库,并且正在积极维护:

https://github.com/colour-science/colour

数学

可以在 Bruce Lindbloom 的网站上找到实际的数学计算和讨论:

http://www.brucelindbloom.com/index.html?Math.html

他还有一些颜色计算器,是JS,可能对你有帮助。

很高兴回答其他问题,让我知道...