【问题标题】:RGB to RGB plus AMBER [closed]RGB 到 RGB 加 AMBER [关闭]
【发布时间】:2015-12-04 09:44:56
【问题描述】:

我想从更高的系统控制 DMX 灯。我只收到 0-255 的 RGB 值。 DMX 灯有 RED、GREEN、BLUE 和 AMBER 灯 (0-255)。如何将 RGB 转换为 RGB + Amber?

我尝试手动调整灯光,但转换表不适合我,因为我的内存有限。 谢谢。回复

【问题讨论】:

  • 琥珀不只是一个额外的颜色通道吗?我想当你只得到 RGB 值时它只是 0。还是输出颜色与您的输入 RGB 不同?
  • 我喜欢他们将这些灯称为 RGBA。我仍在尝试用 Alpha 通道描绘光...
  • 你找到什么办法了吗?
  • 我投票决定将此问题作为题外话结束,因为这不是帮助中心定义的编程问题。

标签: c colors plc dmx512


【解决方案1】:

在光线中,有不同的色彩空间。每个颜色空间都是一个维度空间,因此沿“维度”组合颜色将产生混合颜色。

RGB,意味着您可以混合红色、绿色和蓝色的各种值。琥珀色已经是一种混合物,因此要将琥珀色添加到 RGB 中,您必须决定如何调整红色、绿色和蓝色值,使它们看起来更像琥珀色。

Amber 是 #FFBF00 或 (RGB: 255, 191, 0),因此第一步是计算 RGB 值是多少“Amber”。例如,(RGB: 128, 80, 0) 是 50% 的琥珀色和 0% 的其他颜色。

一旦您计算出琥珀色的百分比,您就可以“取出琥珀色”,将其余的非琥珀色留在 RGB 中。然后你可以有一个 RGBAmber 颜色空间。

请记住,您不能过度驱动 RGB,因此如果您添加 (RGBAmber: 50%, 20%, 0%, 100%) 它将被转换为 RGB(100%, ...)不会让红色像其他颜色那样放大,使琥珀色的东西看起来有点不对劲。

实际上,这将恰当地近似于第四琥珀维度的构造;但是,它不会是正确的。事实是,你无法完全从其他三个维度构建第四维度,因为红绿蓝在物理上的混合与琥珀通道产生的不同。例如,在所有通道上以 100% 驱动 RGBAmber 是完全有效的,但 RGB 永远无法做到这一点,因为以 100% 驱动琥珀色实际上会将所有红色通道归零。

【讨论】:

    【解决方案2】:

    琥珀色 LED 具有与红色、绿色、蓝色和白色 LED 不同的光谱。没有 RGB --> RGBA 转换,因为与单独使用 RGB LED 相比,您最终会得到不同的照明光谱。

    旁注:与红色和绿色相比,琥珀色 LED 通常非常暗淡,因此,如果您只是想产生在我们眼中“看起来”为黄色的光,您可以忽略 DMX 灯的琥珀色通道,而无需在总亮度上牺牲了很多。

    【讨论】:

      【解决方案3】:

      琥珀色是#FFBF00 或 (RGB: 255, 191, 0)

      char amber = (floor(255.0f*(R*1.0f+G*.749f)/446.0f))
      

      这部分计算执行琥珀色缩放:

      (R*1.0f+G*.749f)/446.0f)  and results in a value range 0.0f...1.0f
      

      这部分计算执行缩放到 0...255

      255.0f*
      

      这部分计算消除了分数

      (floor(....)
      

      产生的范围很可能是 0...254, 但这应该足够接近以保持简单和可用

      【讨论】:

      • 这样做会导致没有“全红”或“全绿”,有点问题
      猜你喜欢
      • 2017-04-18
      • 2013-03-19
      • 2011-12-22
      • 1970-01-01
      • 2021-12-15
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多