将 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]
范围内的浮点数 r
、g
、b
和 w
,定义
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]
我正在开发软件来控制具有红色、绿色、蓝色和白色通道 (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]
范围内的浮点数 r
、g
、b
和 w
,定义
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]