问题标签 [cielab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5178 浏览

python - Python中的相似颜色检测

给定 RGB 或 Hex 的颜色,我如何找到与其相似的颜色?通过相似,我的意思是它们应该可以通过小的值来区分。

0 投票
2 回答
1020 浏览

r - 在 R 中转换 RGB 和 HEX 中的 Lab 颜色值

使用 R 将值转换RGBHEX值很容易:

如何将 CIELab 值转换为 RGB 和 HEX?

0 投票
1 回答
1233 浏览

algorithm - 白平衡算法背后的数学原理是什么?

我在 CIELab 色彩空间中有一张图像。我需要对其进行一些处理。所以,有两个问题:

  1. 给定一组 Lab 值,如何获得以开尔文为单位的整体图像温度?(例如在相机设置或 Lightroom 中)

  2. 具有开尔文的温度值,如何调整图像白平衡以匹配该温度?(就像在 Lightroom 中一样)

我也想知道,如何为颜色做同样的事情。

0 投票
1 回答
664 浏览

colors - 可见色域如何界定?

CIE XYZ 空间中颜色的坐标代表了我们眼睛中每种视锥细胞类型的刺激——因此是三刺激值。并非所有坐标都有(x, y, z)意义(例如,在任何锥体中都不能有负刺激),因此 XYZ 空间中所有可能组合的域将是一个 blob。有时您会发现描绘的 blob,例如在 Wikipedia 上

在此处输入图像描述

(斑点上的颜色毫无意义,因为它们实际上无法在标准 RGB 显示器上显示。)

我现在问自己为什么这个 blob 是有界的。难道我不能(x, y, z)在斑点中选择任何一点并用 缩​​放它alpha*(x,y,z,),就像我会启动一个光源一样,并且仍然在可见空间中吗?究竟是什么构成了这里的上限?

0 投票
1 回答
116 浏览

node.js - 颜色数学和编程

我目前正在尝试构建一个程序,该程序将接受图像并将其所有单个部分20x20替换为最佳视觉匹配的单个图像(最多 1000 个)。

我研究并了解了 avg RGB/Color,我对如何构建程序的大致想法是,我首先计算平均Color/RGB变换RGB并选择与20x20像素CIE-L*ab差异最小的图像(最多 1000 个)输入图像。

我不是要代码,只是一些可以更好地帮助我理解如何从 1976 比较转换的RGB资源CIE-L*ab

我对计算距离的欧几里得距离不感兴趣,因为它没有考虑人类的颜色感知。如果有帮助,我正在构建程序NodeJS

谢谢你

0 投票
0 回答
266 浏览

opencv - 关于 RGB 和 CIELAB 之间转换的说明

我正在使用 PCL 处理点云。我最近不得不将 RGB 中点的颜色信息转换为 Cielab。

我已经看到可以使用 OpenCV,然后我使用了以下代码:

}

我的问题是:我得到的值是否正确?LAB 值不应该是十进制并随负数变化吗?

因此,我尝试使用此处提供的代码“手动”进行转换。当我在 CloudCompare 中可视化这两个云时,我发现它们产生了非常相似的视图,即使在直方图中也是如此。

有人可以向我解释为什么吗?

0 投票
1 回答
1477 浏览

vb.net - LAB、RGB、XYZ 颜色转换不正确,反之亦然

我正在为一个项目制作一个自定义颜色选择器,它采用 Photoshop 风格,我让所有其他转换按预期工作,但我无法让 RGBToLAB 和 LABToRGB 正常工作。

问题不仅在于颜色没有正确表示,而且转换也不完美。

样本 :

  • 实验室_58:0:0
  • XYZ_0.25960986510312:0.25960986510312:0.25960986510312
  • RGB _ {R:10 G:8 B:7 A:255}
  • XYZ_0.250358161840588:5.51162077338675:66.3836625496266
  • 实验室_85.3739502460609:0:0

初始 LAB 和最后一个 LAB 不一样,这说明转换有缺陷。我不仅得到了错误的颜色,而且值也发生了变化,尤其是当 LAB.L 假设为常数时(在此示例中,因为这是滑块当前正在控制的内容)

上面的 LAB->RGB->LAB 转换是有缺陷的,但是 XYZ->RGB->XYZ 转换也是有缺陷的。

显然我对转换 LABToLAB 不感兴趣,但上面确实指出了转换中的一个缺陷。

我尝试过的事情:

  1. 维基百科上的这个公式

  2. EasyRGB 的代码

  3. github上的这个javascript代码

  4. 这个 cginc 代码用于统一,这就是我现在的位置

    /li>

我需要 VB.Net 中的代码,这就是为什么我正在为我的项目转换和调整统一代码,但是我被卡住了,需要一些帮助。

如果有人知道我做错了什么,我会很高兴听。

更新1: 我试图通过不匹配两种转换方法来更正转换,我越来越接近完美的转换,但是我担心我可能已经从这个问题上工作了这么长时间。

样本 :

  • 实验室_0:0:0
  • XYZ_0.262413383082537:0.262413383082537:0.262413383082537
  • RGB _ {R:10 G:8 B:7 A:255}
  • XYZ_0.250358161840588:0.253536089358344:0.236754082437929
  • 实验室_2.29017121228677:-0.12373260790384:0.261362975778545

如您所见,问题比以前少了,但仍然存在。

更新 2: 进一步测试显示 XNA.Framework.Color 中出现异常不受欢迎的行为,导致任何分数都被解释为 %。这意味着 200.10 将超过最大颜色值 (255) 的 200%,这会将其限制为最大值 (255),因此除非您指定整数,否则最终可能会得到非常错误的输出。

我也试图与此示例中的代码不匹配。我觉得我在进步,即使我不得不放弃在转换中使用 XNA.Framework.Color 类。

如果我找到一个最终解决方案,我会更新。

更新 3:此处的 在线测试(此处的 源代码)此处显示我的 LABToXYZ 不正确。

我的结果:

  • 实验室_100:0:0
  • XYZ _ 95.047:100:100

他们的结果:

  • 实验室_100:0:0
  • XYZ_95.05:100:108.88

    /li>

但是用全 0 做 LAB 会导致 XYZ 全为 0,这是正确的行为,我不知道出了什么问题,这是不正确的 Z,但我的代码中的错误在哪里?

这里的更多示例似乎表明我的代码是正确的,但我仍然得到一个不正确的 Z。

更新 4: 进一步完善和重做所有代码,我发现对此处找到的示例进行转换和改编,给了我想要的结果,即使这些示例中有一些错误,值得注意的是 ^2.2应该是^2.4。

我还发现了一些精度问题,必须将双精度数转换为整数才能使转换完美,但这可能是最终更新,除非我遇到任何问题,否则我会在继续测试时将这个问题留待一段时间代码在实践中。当我确信代码没有缺陷时,我会回来并将其标记为已回答。

样品:测试 1

  • 实验室_1:0:0
  • XYZ_0.105222895807779:0.110706172533356:0.120540201839494
  • RGB _ 4:4:4:255
  • XYZ_0.115400959145268:0.121410793419535:0.132216354033874
  • 实验室_1:0:0

测试 2

  • 实验室_10:0:0
  • XYZ_1.07024816003116:1.12601992701628:1.22604427713313
  • RGB _ 27:27:27:255
  • XYZ_1.04175693531671:1.09600940064882:1.19355423730657
  • 实验室_10:0:0

测试 3

  • 实验室_100:0:0
  • XYZ _ 95.047:100:108.883
  • RGB _ 255:255:255:255
  • XYZ_95.05:100:108.9
  • 实验室_100:0:0

测试 4

  • 实验室_11:0:0
  • XYZ_1.19854884694432:1.26100649883144:1.37302170612264
  • RGB _ 29:29:29:255
  • XYZ_1.16783071832485:1.22864883569159:1.33799858206814
  • 实验室_11:0:0

如上所示,有一个微小的变化,如果不四舍五入,会导致不完美的转换。

课程

转换器

在我将其标记为已解决之前,需要进一步测试。

更新5:到目前为止还没有任何问题......当只发布问题时,我不知道如何将其标记为已回答。完整的免费代码和更多可以在这里找到。

0 投票
1 回答
116 浏览

image - 在哪里可以找到包含大量高分辨率 CIE L*a*b* 图像的数据库?

我正在寻找一个包含大量高分辨率 CIE L a b* 图像的数据库。你知道我在哪里可以找到它吗?我只找到了 RGB 图像。

0 投票
1 回答
132 浏览

opencv - 我无法将 RGB 图像保存为 Lab 图像

我正在尝试读取 RGB 8 位图像,将其转换为 Lab 并保存。结果总是被解释为 RGB 图像,而且非常奇怪(饱和)。

我尝试不规范化值或使用 RGB2Lab 或将图像转换为 32FC,但没有任何效果。

normalizeLabValues 是一个用于解决 8 位图像转换为 Lab 问题的函数:

我想获得一个 Lab 图像,但如果我尝试用 Photoshop 打开结果,它是 RGB 且高度饱和的。

0 投票
0 回答
269 浏览

python - 如何在 python 中调整 CIE L*a*b* 图像中的颜色曲线?

在 Photoshop 中,可以在 CIE L a b* 颜色空间中调整 L、a 和 b 的颜色曲线。我正在尝试使用 python 中的伽马校正执行类似的图像增强过程。

但是,这只会在一个方向上调整曲线,朝向左上角或右下角。我可以在 python 中执行任何转换来调整曲线吗?

我已经应用了伽玛校正技术,但这会使颜色偏斜太多。

我已经尝试了以下代码进行伽马校正