我正在开发软件来控制带有红色,绿色,蓝色和白色通道(RGBW)的四个通道LED。白色通道独立于RGB进行控制,因此最终可能会得到(255,255,255,0)或(0,0,0,255)之类的值。
在我的应用中,有一个可视化的LED外观,可以在传统的RGB屏幕上显示。
颜色准确性比确保事物保持合理性重要。到目前为止,我一直在映射(r,g,b,w) -> (3r+w, 3g+w, 3b+w)/4
。但是,这会使纯白色(0,0,0,255)
的值变成深灰色(63, 63, 63)
,这会使用户感到困惑。
有什么方法可以将RGBW颜色映射到RGB进行显示? (对方程式或算法感兴趣,而不是特定的实现。)
答案 0 :(得分:1)
这是我一直追求的解决方案。在某些特殊情况下,提供直观的东西比颜色准确性更重要,但对于一些更通用的解决方案,我仍然很感兴趣。
它基于以下观察结果:
(0,0,0,255)
。鉴于r
,g
,b
和w
在[0, 1]
范围内浮动,请定义
w2 = (1.0 - (1.0 - w) * (1.0 - w))
alpha = 0.6 * w2
beta = 1 - a
然后将其用于RGB颜色:
[
alpha * r + beta,
alpha * g + beta,
alpha * b + beta
]