lec*_*hec 12 photoshop hsl rgb colors image-processing
有谁知道调整图层在Photoshop中是如何工作的?我需要从Hue/Saturation调整图层生成具有源图像和HSL值的结果图像.转换为RGB然后与源颜色相乘不起作用.
或者是否可以使用适当设置的混合模式(多重,屏幕,色调,饱和度,颜色,亮度......)将Hue /饱和度调整图层替换为普通图层?如果是这样呢?
谢谢
当我选中"Colorize"复选框时,我对计算进行了逆向工程.下面的所有代码都是伪代码.
输入是:
HSV(photoshop_hue, 100, 100).ToRGB()photoshop_saturation / 100.0(即0..1)photoshop_lightness / 100.0(即-1..1)pixel.ToHSV().Value缩放为0..1范围.着色单个像素的方法:
color = blend2(rgb(128, 128, 128), hueRGB, saturation);
if (lightness <= -1)
return black;
else if (lightness >= 1)
return white;
else if (lightness >= 0)
return blend3(black, color, white, 2 * (1 - lightness) * (value - 1) + 1)
else
return blend3(black, color, white, 2 * (1 + lightness) * (value) - 1)
Run Code Online (Sandbox Code Playgroud)
在哪里blend2和blend3是:
blend2(left, right, pos):
return rgb(left.R * (1-pos) + right.R * pos, same for green, same for blue)
blend3(left, main, right, pos):
if (pos < 0)
return blend2(left, main, pos + 1)
else if (pos > 0)
return blend2(main, right, pos)
else
return main
Run Code Online (Sandbox Code Playgroud)
Photoshop,不知道。但理论通常是:通过特定层的内部方法将RGB图像转换为HSL/HSV;然后根据指定的参数修改每个像素的 HSL,并将所得结果以 RGB 形式返回(用于显示)。
\n\nPaintShopPro7 用于以 30\xc2\xb0 (IIRC) 的离散增量分割 H 空间(假设范围为 0..360),因此如果您仅碰撞“黄色”,即仅 H 分量值为 45 的像素-75将被考虑进行操纵。
\n\n红色 345..15、橙色 15..45、黄色 45..75、黄绿色 75..105、绿色 105..135 等。
\n\n\nif (h >= 45 && h < 75)\ns += s * Yellow_percent;\n\n\n
还有其他可能性,例如应用衰减过滤器,如下所示:
\n\n\n/* 对于 h=60,令 m=1...并线性下降到 h=75 m=0。*/\nm = 1 - abs(h - 60) / 15;\nif (m < 0)\nm = 0;\ns += s * Yellow_percent * d;\n\n