将 RGBW 像素数据映射到 RGB 以进行可视化的有效方法是什么

What is an effective way to map RGBW pixel data to RGB for a visualisation

我正在开发软件来控制具有红色、绿色、蓝色和白色通道 (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 进行显示吗? (对方程式或算法而不是具体实现感兴趣。)

这是我寻求的解决方案。对于提供直观内容比颜色准确性更重要的特定情况,这已经足够了,但我仍然对一些更通用的解决方案感兴趣。

它基于以下观察:

  • 将白色引入颜色的感觉是非线性的 - 在有 none 时添加少量比在白色通道中已经有很多时添加少量更明显。
  • 60% 的白色足以表明 LED 正在显示 (0,0,0,255)

我做的是:

  • 计算w2 增加伽马后的白色值,使用平方反比曲线计算:w2 = 1 - (1-w)^2.
  • 通过定义为 0.6*w2.
  • 的因子 alpha 将 RGB 值插入白色值

在代码中:给定 [0, 1] 范围内的浮点数 rgbw,定义

w2 = (1.0 - (1.0 - w) * (1.0 - w))
alpha = 0.6 * w2

然后将其用于 RGB 颜色:

[
  (1.0 - alpha) * r + alpha,
  (1.0 - alpha) * g + alpha,
  (1.0 - alpha) * b + alpha
]

或矢量形式:

out = (1.0 - alpha) * [r,g,b] + alpha * [1,1,1]