RGB到RGB加AMBER

时间:2015-09-08 15:59:00

标签: c colors plc dmx512

我想控制来自更高系统的DMX灯。我只收到RGB值0-255。 DMX灯具有红色,绿色,蓝色和琥珀色光(0-255)。如何将RGB转换为RGB +琥珀色?

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

3 个答案:

答案 0 :(得分:2)

在光线下,有不同的色彩空间。每个颜色空间都是一个空间,以便沿“尺寸”组合颜色将产生混合颜色。

RGB,意味着您可以混合使用红色,绿色和蓝色的各种值。琥珀已经是混合物了,所以要“添加琥珀色”到RGB,你必须决定如何调整红色,绿色和蓝色值,使它们看起来更像琥珀色。

Amber是#FFBF00或(RGB:255,191,0),所以第一步是弄清楚RGB值是多少“琥珀色”。例如,(RGB:128,80,0)为50%琥珀色,0%为其他所有内容。

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

请记住,您不能过度驱动RGB,因此如果添加(RGBAmber:50%,20%,0%,100%),它将转换为RGB(100%,...)不会让红色的颜色与其他颜色一样多,使得琥珀色的东西看起来有些偏差。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

琥珀色LED具有与红色,绿色,蓝色和白色LED不同的光谱。没有RGB - > RGBA转换,因为与单独使用RGB LED相比,您将获得不同的光照范围。

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