饱和度的定义大家可以自行查维基百科。饱和度又名色度、彩度。直观而言,饱和度就是色彩的鲜艳程度或者饱和程度。从白色黑色以及白黑之间的所有灰色其饱和度都为0。饱和度越高说明包含某种颜色的成分越大。其实可以理解成某一个纯色掺和了一些灰色或黑色或白色。因为灰色中包含 rgb 三种成分,所以也就导致了原本的 rgb 纯色100%占比开始下降。根据加入灰色的量,使得另外两种颜色成分的增加,原本纯色的饱和度进一步下降。
接下来介绍photoshop中饱和度调整算法:
调整参数的本来的取值范围为[-100, 100],经过归一化后为[-1, 1],记为 pecent。我们需要遍历一张图片的所有像素。对于每个像素我们做如下操作:
假设我们的某个像素 P(其 rgb 通道的值分别为 RGB):
rgbMax = max(max(R, G), B);
rgbMin = min(min(R, G), B);
delta = (rgbMax - rgbMin) / 255;
//如果 delta = 0,则不调整。继续判断下一个像素值。
if (delta == 0) return RGB;
//若 delta > 0
value = (rgbMax + rgbMin) / 255;
L = value / 2; //HSL中的L
S = (L < 0.5? (delta / value): delta / (2-value)); //饱和度S
if (percent >= 0)
{
if (pecent+S >= 1) alpha = S;
else alpha = 1 - percnet;
alpha = 1 / alpha - 1;
RGB' = RGB + (RGB - L*255) * alpha;
}
else
{
alpha = percent;
RGB' = L * 255 + (RGB- L * 255) * (1 + alpha);
}