【问题标题】:Convert RGB to light frequency将RGB转换为光频率
【发布时间】:2012-08-27 17:25:36
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm colors physics rgb frequency


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:
      1. 从 RGB 转换为 XYZ
      2. 从 XYZ 转换为 Yxy
      3. 计算 xy 的主波长
      4. 计算频率

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2010-12-01
          • 1970-01-01
          • 2017-07-04
          • 2015-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-11
          相关资源
          最近更新 更多