RGB 颜色去饱和算法

Algorithm to desaturate RGB color

我有一个问题。有什么方法或算法可以用来降低 RGB 值的饱和度,而无需将颜色转换为 HSV 或 HSL?我的 RGB 输入将完全饱和,因此我只需要一种降低颜色饱和度的方法。

我正在开发颜色选择器,我需要一种快速高效的方法来完成这项工作。任何建议将不胜感激:)

简单方法(忽略 0.3R+0.6G+0.11B 等感知亮度和其他公式):

初始颜色(r,g,b)
相同强度的灰色 (i,i,i)
其中 i = (r + g + b) / 3

与灰色分量的偏差:

dr = i - r
dg = i - g
db = i - b

让参数t从初始饱和色0变为灰色1。所以

r' = r + dr * t  
g' = g + dg * t
b' = b + db * t