gpt4 book ai didi

colors - 将 RGBW 颜色转换为标准 RGB/HSB 表示

转载 作者:行者123 更新时间:2023-12-02 11:47:22 30 4
gpt4 key购买 nike

我正在为家庭自动化系统中的灯光管理构建一个界面。我成功地控制了各个供应商的标准开/关和可调光灯,没有什么问题,但现在我遇到了与 RGB 灯相关的问题。

我目前使用的灯是 RGBW LED 灯带 - 具体来说,我正在使用低成本 RGBW 灯:该灯由四个 LED 组成,每个 LED 都可以单独控制。

更清楚地说 - 我正在编写一些 C# 代码,这些代码应该检索当前选择的颜色并将其显示在 UI 中,并使用户能够为灯光指定新颜色。为了设置和检索颜色,我必须使用命令提供程序,使我能够通过 Web 服务发送和接收命令。

该提供程序使用 RGBW 颜色 - 使用红色、绿色、蓝色和白色的四个分量。为了表示界面上当前的光颜色,我想将服务返回的 RGBW 颜色转换为更标准的 RGB/HSB 方案。

在网上搜索时,我发现的唯一关于颜色转换的引用(不包括用于 rgb 到 rgbw 转换的 c++ 示例,根据我的理解,该示例一定有一些严重的错误)是这篇文章,它展示了从 HSI 到 RGBW 的转换,这与我需要的相反: link here

我正在寻找有关如何实现此转换的一些见解(或对为什么不可能实现此转换的简单解释)。据我所知,从 RGB 到 RGBW 的转换是任意的 - 单个 RGB 值可以表示为多个 RGBW 值,但相反的转换应该是单义的。另请注意,当我使用 c# 时,也可以随意引用其他语言的算法 - 语言不是问题,问题是我不知道进行颜色转换的数学。

最佳答案

如何将RGB转换为RGBW在下面论文的2.1中描述

http://www.mirlab.org/conference_papers/International_Conference/ICASSP%202014/papers/p1214-lee.pdf

将 LED 视为一个巨大的像素。 Oliver 的答案使用 Wo = min(Ri,Gi,Bi),计算成本低且有效。本文解释了最小化功耗的其他替代方案,这对家庭自动化项目有好处。我也在使用 OpenHAB、Arduino 和 RGBW LED 进行家庭自动化项目,一方面论文提出的替代方案很好,另一方面,巨大的 LUT 无法工作并转换 arduino 8 上的所有值。我建议您尝试使用论文中引用的不太节能的技术来校正 RGB 值:

假设 Ri、Gi、Bi 是颜色输入,从 0 到 255 的整数,因此 Q = 255,并且您的输出是 Wo、Ro、Go 和 Bo,其值从 0 到 255:

M = max(Ri,Gi,Bi)
m = min(Ri,Gi,Bi)

Wo = if (m/M < 0.5) use ( (m*M) / (M-m) ) else M
Q = 255
K = (Wo + M) / m
Ro = floor( [ ( K * Ri ) - Wo ] / Q )
Go = floor( [ ( K * Gi ) - Wo ] / Q )
Bo = floor( [ ( K * Bi ) - Wo ] / Q )

在实现之前在电子表格中进行练习,对 Wo = m、m^2 和 -m^3+m^2+m 进行实验,用正确的 Qw 修正 Wo 值,你会惊讶于没有修正的简单解决方案这并不是人们所期望的,而且其他答案也没有那么大的差异。检查纸张上的颜色失真结果,我想如果您不校正 RGB 值,您最终会得到一些褪色的颜色。

关于colors - 将 RGBW 颜色转换为标准 RGB/HSB 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117842/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com