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

Colors 将RGBW像素数据映射到RGB进行可视化的有效方法是什么,colors,rgb,led,Colors,Rgb,Led,我正在开发一个软件来控制带有红、绿、蓝和白通道(RGBW)的四通道LED。白色通道独立于RGB进行控制,因此您可能会得到(255255255,0)或(0,0,0255)等值 在我的应用程序中,有一个LED外观的可视化,显示在传统的RGB屏幕上 颜色的精确性不如确保事情看起来可信重要。到目前为止,我一直在映射(r,g,b,w)->(3r+w,3g+w,3b+w)/4。但是,这会导致纯白色(0,0,0255)值变为深灰色(63,63,63),这会让用户感到困惑 有没有办法将我的RGBW颜色映射到RG

我正在开发一个软件来控制带有红、绿、蓝和白通道(RGBW)的四通道LED。白色通道独立于RGB进行控制,因此您可能会得到(255255255,0)或(0,0,0255)等值

在我的应用程序中,有一个LED外观的可视化,显示在传统的RGB屏幕上

颜色的精确性不如确保事情看起来可信重要。到目前为止,我一直在映射
(r,g,b,w)->(3r+w,3g+w,3b+w)/4
。但是,这会导致纯白色
(0,0,0255)
值变为深灰色
(63,63,63)
,这会让用户感到困惑


有没有办法将我的RGBW颜色映射到RGB以供显示?(对方程或算法感兴趣,而不是对具体的实现感兴趣。)

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

这是基于以下观察结果:

  • 将白色引入颜色的感觉是非线性的——在没有白色通道时添加少量比在白色通道中已经有大量白色通道时添加少量更明显
  • 60%的白色足以表示LED显示
    (0,0,0255)
我所做的是:

  • 计算
    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]

你在使用某种语言吗?Python和NodeJ都有OpenCV。您可以编写一个转换函数,比如
red\u channel=(red\u component+white\u component/3)/340
,以获得该像素处的红色百分比。你想做什么?我是C++/Cinder,但问题更一般,关于如何在UI的三个通道中有效地表示四通道颜色;它目前的阅读方式是,你正在寻找一个示例的实现…?啊,这不是我想要的。我更多的是寻找一个算法或方程式。我更新了问题以澄清这一点。这看起来很有希望,但这是否意味着
[0,0,0,0]
将以
[1,1,1]
的形式出现?你的
beta=1-a
应该做什么?(
a
是指
alpha
还是另一个变量?@MrTrick是的,很抱歉在实现中出现了错误,我现在已经修复了这些错误,并且我已经对解释进行了扩展。