将RGB转换为光频率

时间:2012-09-02 21:47:02

标签: algorithm colors physics rgb frequency

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

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

4 个答案:

答案 0 :(得分:7)

AFAIK,没有直接的答案,因为多个波长可以结合起来给出相同的颜色吗?所以你有波长映射到纯色,然后它们的组合可以提供许多其他和相同的颜色。并且有几种组合可以提供相同的颜色。这是因为干涉。所以你基本上要求一对多的映射。

回答你的问题:没有固定的公式。反向公式将为您提供范围。这是最好的。

答案 1 :(得分:6)

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

但问题是波长谱看起来像

Wavelength

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

HSL spectrum

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

我猜这是因为粉红色在自然界中不存在,它是光谱相反极端的颜色的组合。但我们用RGB格式。

答案 2 :(得分:0)

  1. 从RGB转换为XYZ
  2. 从XYZ转换为Yxy
  3. 计算xy
  4. 的主波长
  5. 计算频率

答案 3 :(得分:0)

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

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