0

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

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

4

3 回答 3

3

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

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% 驱动琥珀色实际上会将所有红色通道归零。

于 2015-09-08T16:48:34.390 回答
1

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

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

于 2017-03-04T01:41:32.413 回答
0

琥珀色是 #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,但这应该足够接近以保持简单和可用

于 2015-09-08T20:21:14.800 回答