You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LED固件开发:求RGBW与HSB互转算法以保持亮度调整色调饱和度

RGBW与HSB转换及色调/饱和度调整方案

核心思路

RGBW的白色通道本质是叠加的无彩色分量,会同时降低饱和度并提升亮度。要实现保留亮度的色调/饱和度调整,关键是先将RGBW拆解为「无白色污染的纯净RGB分量」和「总白色分量」,对纯净RGB做HSB转换与调整,再重新合成RGBW。

步骤1:RGBW转HSB(保留亮度基准)

假设所有通道值范围为[0, 1](若为整数范围,先归一化处理):

  1. 提取RGB中的最小分量:rgb_min = min(R, G, B)
  2. 分离纯净RGB(完全无白色成分):
    • R_pure = R - rgb_min
    • G_pure = G - rgb_min
    • B_pure = B - rgb_min
  3. 计算总白色分量:W_total = W + rgb_min
  4. 计算HSB参数:
    • 色调H:对纯净RGB执行标准RGB→HSB的色调计算(若纯净RGB全为0,H无意义)
    • 饱和度S:若纯净RGB全为0,S = 0;否则 S = max(R_pure, G_pure, B_pure) / (max(R_pure, G_pure, B_pure) + W_total)
    • 亮度V:V = max(R_pure, G_pure, B_pure) + W_total(这就是需要保留的亮度值)

步骤2:调整色调/饱和度并转回RGBW

已知目标H_new、S_new,且保持V不变:

  1. 计算彩色分量幅度与新白色分量:
    • 若S_new = 0:纯净RGB全为0,W_new = V
    • 否则:
      • color_mag = V * S_new(纯净RGB的最大通道值)
      • W_new = V - color_mag(新的总白色分量)
  2. 根据H_new生成饱和度100%、最大幅度为color_mag的纯净RGB_new(执行标准HSB→RGB转换,将亮度设为color_mag)
  3. 合成最终RGBW:
    • 方式一(直接映射):R = R_new_pure,G = G_new_pure,B = B_new_pure,W = W_new
    • 方式二(优化通道分布):提取RGB_new_pure的最小值rgb_min_new = min(R_new_pure, G_new_pure, B_new_pure),将其合并到W中:
      • R = R_new_pure - rgb_min_new
      • G = G_new_pure - rgb_min_new
      • B = B_new_pure - rgb_min_new
      • W = W_new + rgb_min_new
        两种方式视觉效果完全一致,方式二可让RGB通道的最小值为0,更符合常规LED控制习惯。

示例验证

以你提到的RGBW={1.0, 0, 0, 1.0}为例:

  • 拆解后:rgb_min=0,R_pure=1,G_pure=0,B_pure=0,W_total=1,V=2,S=1/(1+1)=0.5,H=0°
  • 若调整S到1.0,保持V=2:
    • color_mag=2*1=2,W_new=0
    • 纯净RGB_new为(2,0,0)
    • 最终RGBW为(2,0,0,0),亮度2,饱和度100%,符合预期
  • 若调整H到120°(绿色),保持S=0.5、V=2:
    • color_mag=2*0.5=1,W_new=1
    • 纯净RGB_new为(0,1,0)
    • 最终RGBW为(0,1,0,1),亮度2,饱和度50%,符合预期

内容的提问来源于stack exchange,提问作者Grodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:02:13