7

是否可以从 RGB 表示中获得颜色的光频率?我找到了相反的过程[1],但我不知道这是否可能。

[1] http://www.fourmilab.ch/documents/specrend/

4

4 回答 4

8

AFAIK,没有直接的答案,因为多个波长可以组合产生相同的颜色,对吗?因此,您拥有映射到纯色的波长,然后它们的组合可以产生许多其他相同的颜色。并且有几种组合可以提供相同的颜色。这是因为干扰。所以你本质上是在要求一个一对多的映射。

回答你的问题:没有固定的公式。反向公式将为您提供一个范围。这是它所能得到的最好的。

于 2012-09-02T22:01:45.873 回答
7

也许Javascript - Sort rgb values可以帮助你。

但问题是波长光谱看起来像

波长

您可以将 RGB 转换为 HSL,但 HSL 光谱看起来像

HSL光谱

然后,由于波长光谱不具有所有颜色,例如粉红色,因此存在问题。

我想那是因为自然界中不存在粉红色,它是光谱中相反极端颜色的组合。但我们有它在 RGB 中。

于 2012-09-02T22:27:59.107 回答
0
  1. 从 RGB 转换为 XYZ
  2. 从 XYZ 转换为 Yxy
  3. 计算 xy 的主波长
  4. 计算频率
于 2012-09-02T22:01:29.750 回答
0

查看链接引用的 C 程序,只有 81 个不同频率的 color_match 值 - 这些似乎是链接中图 3 边缘周围的标记频率。因此,如果您知道您的 RGB 信息是针对一种频率的纯光,您可以计算出这些值中的每一个的 RGB 信息,并查看它最匹配的值 - 可能在缩放一个或另一个以使亮度匹配之后。

当然,问题在于您的 RGB 值可能来自不同频率的光的混合。在这种情况下,您将得到一个来自图 3 内部的点 - 它不会接近外部的任何值(因此至少您将能够判断存在问题)并且会有是可能产生它的大量可能的频率集 - 这些对应于图表外部点的加权平均值,这些点平均产生内部点。

于 2012-09-03T04:11:52.060 回答