转自:http://blog.sina.com.cn/s/blog_713dd87d0101aip9.html
Photoshop CS5有27个图层混合模式,分6大类:
(一)普通模式
正常(Normal)
溶解(Dissolve)
(二)变暗模式
变暗(Darken)
正片叠底(Multiply)
颜色加深(Color Burn)
线性加深(Linear Burn)
深色(Darker Color)
(三)变亮模式
变亮(Lighten)
滤色(Screen)
颜色减淡(Color Dodge)
线性减淡(添加)(Linear Dodge)(Add)
浅色(Lighter Color)
(四)对比度模式
叠加(Overlay)
柔光(Soft Light)
强光(Hard Light)
亮光(Vivid Light)
线性光(Linear Light)
点光(Pin Light)
实色混合(Hard Mix)
(五)比较模式
差值(Difference)
排除(Exclusion)
减去(Subtract)
划分(Divide)
(六)成份模式
色相(Hue)
饱和度(Saturation)
颜色(Color)
明度(Lumonosity)
图层混合模式是指当前图层和其下方图层的相互作用关系,即它们的颜色(包括色相,饱和度和明度)是如何混合在一起的。可以把与当前图层紧邻的下方图层看作基本图层,图层中的颜色看作基色(base color);当前图层看作混合图层即用来和下方图层做混合用的图层,该图层中的颜色叫作混合色(blend color)。混合模式决定混合色如何作用于基色。也可以把上边的图层想像成颜料,以一定的混合模式在下边图层的基色上修描。
基色和混合色通过一定的算法得到最终的颜色(叫结果颜色),算法就是通常的加减乘除(颜色以数值表示)。为了理解混合模式,我们要先搞清楚颜色的运算。假设有两个RGB颜色: Color1 = (R1, G1, B1), Color2 = (R2, G2, B2), 其中数值R、G、B满足0≤R,G,B≤255。那么
加法:Color1 + Color2 = (R1+R2, G1+G2, B1+B2)
减法:Color1 - Color2 = (R1-R2, G1-G2, B1-B2)
乘法:Color1 * Color2 /255 = (R1*R2, G1*G2, B1*B2) /255
除法:255 * Color1 / Color2 = 255 * (R1/R2, G1/G2, B1/B2)
注意,乘法中除以255是归一化的需要,即两个颜色相乘要先将期中一个归一化得到的才是颜色而不是颜色的平方;除法中要乘以255也是归一化的需要,即先将分母的颜色归一化这样得到的才是颜色的量纲。在运算中如果得到的结果颜色超出了0-255的区间,则要截断:大于255的颜色截断为255,小于0的颜色截断为0(相当于高光和阴影修剪)。
如果先将颜色归一化,则运算更为简单。归一化就是将颜色除以255:c = Color /255 = (R/255, G/255, B/255) = (r, g, b), 那么0≤r,g,b≤1。那么
加法:c1 + c2 = (r1+r2, g1+g2, b1+b2)
减法:c1 - c2 = (r1-r2, g1-g2, b1-b2)
乘法:c1 * c2 = (r1*r2, g1*g2, b1*b2)
除法:c1 / c2 = (r1/r2, g1/g2, b1/b2)
如果得到的归一化结果颜色超出了0-1的区间,则要截断:大于1的颜色截断为1,小于0的颜色截断为0(相当于高光和阴影修剪)。当然,最终的颜色数值=归一化的颜色数值*255。
有时也会用到更复杂的运算,比如平方根运算,这在归一化模式下运算也很简单,就是通常的代数运算。
(一)普通模式
正常(Normal):这是默认的混合模式,当前图层的颜色完全覆盖其下方图层中的颜色,看到的是当前图层的色相、饱和度和明度,与其下边图层的颜色没有关系。Formula: Result Color = Top Color。如果不透明度d不是100%,那么Result Color = Top Color * d + Bottom Color * (1-d)
溶解(Dissolve):基色和混合色的随机互换,看到的是随机分布的基色和混合色,结果依赖于所在像素的不透明度。Formula: Result Color = Ramdom(Top Color, Bottom Color)
(二)变暗模式
变暗(Darken):检查当前图层和下方图层每个通道的颜色信息,根据像素的基色和混合色亮度来选择颜色:如果基色更暗,就选择基色;如果混合色更暗,就选择混合色。选择的结果做为看到的颜色(明度,色相,饱和度),其结果是让图像整体上变暗。(当前图层和下方图层的亮度“择暗录取”)Formula: Result Color = Min(Top Color, Bottom Color)
正片叠底(Multiply):检查当前图层和下方图层每个通道中的颜色信息,然后在每个通道中基色和混合色相乘,其结果就是看到的颜色。结果总是让照片变暗,比用作正片叠底的两个图层都暗。这里的乘法是归一化之后的乘法。比如在RGB模式中,基色是(128,64,128)(紫色),混合色是(64,128,192)(青色);相乘之前要先把这些数值归一化即除以255(归一化之后0还是0,255变成1),得到:(128/255,64/255,128/255)X(64/255,128/255,192/255)=(0.126,0.126,0.378);这是归一化的颜色,乘以255得到最终的结果数值:(0.126,0.126,0.378)X 255=(32,32,96)(深蓝色)。所以,(128,64,128)(紫色)和(64,128,192)(青色)正片叠底的结果是深蓝色。很明显,如果正片叠底的基色和混合色都不是纯白色和纯黑色,正片叠底的结果总是比基色和混合色更暗。如果基色和混合色有一个是黑色(0,0,0),那么正片叠底的结果是黑色,因为相乘的结果是(0,0,0)。如果基色和混合色有一个是白色(255,255,255)/255=(1,1,1),那么正片叠底的结果是那个不是白色的颜色。Formula: Result Color = (Top Color) * (Bottom Color) /255。如果将颜色归一化,用x代表基色、y代表混合色、z代表混合之后的结果颜色:x = Bottom Color /255,y = Top Color /255, z = Result Color /255(0≤x,y,z≤1),那么公式更简单:z = x*y
颜色加深(Color Burn):检查当前图层和下方图层每个通道中的颜色信息,基色的补色除以混合色之后再取补色。如果结果是负值,就归零。因此,如果基色和混合色都比较暗(基色+补色<255)就直接变成黑色的。如果基色和补色相同,那么颜色加深结果一定是变暗;白色不变,中性灰和比中性灰还暗的颜色变成黑色。因此,原来的暗调完全变黑,原来的亮调对比度增加并且色阶被扩展到黑色。 Formula: Result Color = 255 * (1 - (255 - Bottom Color) / Top Color)。或者,用归一化的颜色:z = 1-(1-x)/y;或者,1-z = (1-x)/y
线性加深(Linear Burn):检查当前图层和下方图层每个通道中的颜色信息,基色加上混合色再减去255;即:基色的补色加上混合色的补色,再取补色。如果结果为负值,则归零。和颜色加深效果相似,只是算法不同:如果基色和补色相同,那么颜色加深结果一定是变暗;白色不变,中性灰和比中性灰还暗的颜色变成黑色。因此,原来的暗调完全变黑,原来的亮调对比度增加并且色阶被扩展到黑色。Formula: Result Color = Top Color + Bottom Color - 255。或者,用归一化的颜色:z = x+y-1
深色(Darker Color):计算混合色与基色的所有通道的数值之和,然后选择数值较小的作为结果色。因此结果色只跟混合色或基色相同,不会产生出另外的颜色。白色与基色混合色得到基色,黑色与基色混合得到黑色。Formula: Result Color = if {(Sum of Top Color) < (Sum of Bottom Color)} then {Top Color} else {Bottom Color}。或者,用归一化的颜色:z = if {[y] < [x]} then {y} else {x},这里[]代表颜色数值之和。
(三)变亮模式
变亮(Lighten):检查当前图层和下方图层每个通道的颜色信息,根据像素的基色和混合色亮度来选择颜色:如果基色更亮,就选择基色;如果混合色更亮,就选择混合色。选择的结果做为看到的颜色(明度,色相,饱和度),其结果是让图像整体上变亮。(当前图层和下方图层的亮度“择亮录取”)Formula: Result Color = Max(Top Color, Bottom Color)。或者,用归一化的颜色:z = max{x,y}
滤色(Screen):检查当前图层和下方图层每个通道的颜色信息,然后在每个通道中作如下运算:基色的反色和混合色的反色相乘,相乘结果再取反色,其结果就是看到的颜色。结果总是让照片变亮,比用作滤色混合的两个图层都亮。反色就是补色。比如,在RGB模式中,基色是(128,64,128)(紫色),混合色是(64,128,192)(青色);那么基色的反色是(255-128,255-64,255-128)=(127,191,127)(绿色),混合色的反色是(255-64,255-128,255-192)=(191,127,63)(红色),相乘得到:(127/255,191/255,127/255)X(191/255,127/255,63/255)=(0.373,0.373,0.123);这是归一化的颜色,乘以255得相乘之后的颜色数值:(0.373,0.373,0.123)X 255=(95,95,31);再取反色就是最终的颜色:(255-95,255-95,255-31)=(160,160,224),这是明亮的蓝色(略微偏黄),比基色和混合色都要明亮。很明显,如果基色和混合色都不是纯白色和纯黑色,滤色的结果总是比基色和混合色更明亮。如果基色和混合色有一个是黑色(0,0,0),那么滤色的结果是不是黑色的那个颜色。如果基色和混合色有一个是白色,那么滤色的结果是白色。(滤色和正片叠底作用正相反)Formula: Result Color = 255 - ((255 - Top Color)(255 - Bottom Color))/255。或者,用归一化的颜色:z = 1-(1-x)(1-y)。或者,1-z = (1-x)*(1-y)
颜色减淡(Color Dodge):检查当前图层和下方图层每个通道中的颜色信息,基色的除以混合色的补色。如果结果>255,那么结果就=255。所以,基色+混合色>255的部分都变成白色。如果基色和补色相同,那么颜色减淡结果一定是变亮。黑色不变,中性灰和比中性灰还亮的颜色变成白色。因此,原来的亮调全部变白,原来的暗调对比度增加并且色阶被扩展到白色。 Formula: Result Color = 255 * Bottom Color / (255 - Top Color)。或者,用归一化的颜色:z = x/(1-y)
线性减淡(Linear Dodge):检查当前图层和下方图层每个通道中的颜色信息,基色和混合色相加。如果结果大于255,则结果是255。和颜色减淡效果相似,只是算法不同:如果基色和补色相同,那么颜色减淡结果一定是变亮。黑色不变,中性灰和比中性灰还亮的颜色变成白色。因此,原来的亮调全部变白,原来的暗调对比度增加并且色阶被扩展到白色。Formula: Result Color = Top Color + Base Color。或者,用归一化的颜色:z = x+y
浅色(Lighter Color):计算混合色与基色所有通道的数值总和,哪个数值大就选为结果色。因此结果色只能在混合色与基色中选择,不会产生第三种颜色。与深色模式刚好相反。 Formula: Result Color = if {(Sum of Top Color) > (Sum of Bottom Color)} then {Top Color} else {Bottom Color}。或者,用归一化的颜色:z = if {[y]>[x]} then {y} else {x}
(四)对比度模式
叠加(Overlay):正片叠底和滤色的组合模式,根据基色(下边图层颜色)决定正片叠底还是滤色。如果基色比50%灰更暗,则基色和或混合色正片叠底;如果基色比50%更亮,则基色和混合色滤色相混(实际上还要乘以2)。混合色决定基色的改变方向。如果混合色是50%灰,则基色不改变。如果混合色比50%灰更暗,则基色总是变暗;如果混合色比50%更亮,则基色总是变亮;白点和黑点不变。所以叠加的效果是用混合色对基色进行调制,同时保留基色中的高光和阴影(白点和黑点)。相同图像之间的叠加效果是使得画面暗部越暗,亮部越亮,造成图像明暗对比的较大反差,并会减少高光和阴影的层次感。Formula: Result Color = if {Bottom Color < 128} then {2 * Top Color * Bottom Color / 255} else {255 - 2 * (255 - Top Color) * (255 - Bottom Color) / 255}。或者,用归一化的颜色:z = if {x<1/2} then {2*x*y} else {1-2*(1-x)*(1-y)}
柔光(Soft Light):叠加模式的柔光版本,也是正片叠底和滤色的组合模式,不过是根据混合色(上边图层颜色)决定正片叠底还是滤色。柔光模式是以基色为主导,混合色只相应改变局部明暗。Formula: Result Color = if {Top Color < 128} then {Bottom Color * (1 + (2 * Top Color /255 - 1)* (1 - Bottom Color / 255))} else {Bottom Color * (1 + (2 * Top Color/255 - 1)* (1/Sqrt(Bottom Color/255) - 1)}。根据以上公式:当上边颜色比50%灰更亮,得到的颜色比下边的颜色要亮;当上边颜色比50%灰更暗,得到的颜色比下边的颜色要暗。如果上边图层完全是黑色,Result Color = Bottom Color * Bottom Color/255,柔光的结果是比下边图层暗但不是黑色。如果上边图层是白色,Result Color = Sqrt(255*Bottom Color),柔光的结果是比下边图层亮但不是白色(上边图层可以看作柔光光源)。柔光效果就像一个弥散光源照射在图像上。或者,用归一化的颜色:z = if {y<1/2} then {x*(1+(2*y-1)(1-x))} else {x(1+(2*y-1)*(1/sqrt(x)-1)}
强光(Hard Light):强光模式跟叠加模式十分类似,只是在计算的时候需要通过混合色来控制:Formula: Result Color = if {Top Color < 128} then {2 * Bottom Color * Top Color /255} else {255 - 2* (255 - Top Color)(255 - Bottom Color) /255}。这个公式和叠加一样,只是条件由叠加条件里边的基色换成了强光条件里边的混合色。根据以上公式:当上边颜色比50%灰更亮,得到的颜色比下边的颜色要亮,实际上如滤色一样亮;当上边颜色比50%灰更暗,得到的颜色比下边的颜色要暗,实际上如正片叠底一样暗。如果上边图层完全是黑色,得到的图像就会是黑色的;如果上边图层是白色,得到的图像就是白色的。强光适合用来给图像添加阴影。或者,用归一化的颜色:z = if {y<1/2} then {2*x*y} else {1-2(1-x)*(1-y)}
亮光(Vivid Light):该模式结合了颜色加深和颜色减淡,通过增加或减少对比度使颜色变暗或变亮,具体取决于混合色的数值。混合色比中性灰色暗,结果色就相应的变暗(颜色加深);混合色比中性灰色亮,结果色就相应的变亮(颜色减淡)。Formula: Result Color = if {Top Color < 128} then {255 - (255 - Bottom Color)255/(2 Top Color)} else {Bottom Color * 255 / (2*(255 - Top Color))}。或者,用归一化的颜色:z = if (y<1/2} then {1-(1-x)/(2*y)} else {x/(2*(1-y))}
线性光:根据混合光的亮度,通过减少或增加亮度来加深或减淡颜色。如果混合光(光源)比50%灰明亮,图像就变亮(相对于下边图层);如果混合光(光源)比50%灰还暗,图像就变暗。Formula: Define X = 2 * Top Color + Bottom Color - 255, then Result Color = if {X < 0} then {0} else if {X > 255} then {255} else {X}。或者,用归一化的颜色:z = x+2*y-1
点光:根据混合色和基色的数值关系替换相应的颜色。视觉上的效果是变暗和变亮效果的混合,中间调几乎不改变。该混合模式可以给照片添加特殊的效果。Formula: Result Color = if {Bottom Color < 2*Top Color-255} then {2*Top Color - 255} else if {2*Top Color -255 < Bottom Color < 2*Top Color} then {Bottom Color} else {2*Top Color}。 或者,用归一化的颜色:z = if {x<2*y-1} then {2*y-1} else if {2*y-1
实色混合:在每个通道将基色和混合色数值相加,如果想家结果小于255则替代以0,大于或等于255则替代以255。结果色的R、G、B通道的数值只能是255或0,结果色只有以下八种可能:红、绿、蓝、黄、青、洋红、白、黑。因此,结果色是非常纯的颜色。Formula: Result Color = if {Top Color + Bottom Color < 255} then {0} else {255}。或者,用归一化的颜色:z = if {x+y<1} {0} else {1}
(五)比较模式
差值:查看每个通道的数值,用基色减去混合色或用混合色减去基色。具体取决于混合色与基色那个通道的数值更大。白色与任何颜色混合得到那个颜色的补色,黑色与任何颜色混合颜色不变。Formula: Result Color = Abs(Top Color - Bottom Color)(Abs代表绝对值)。或者,用归一化的颜色:z = Abs(x-y)
排除:跟差值模式非常类似的混合模式,只是排除模式的结果色对比度没有差值模式强。白色与基色混合得到基色的补色,黑色与基色混合得到基色。Formula: Result Color = Top Color + Bottom Color - 2*Top Color*Bottom Color/255。或者,用归一化的颜色:z = x+y-2x*y
减去:查看各通道的颜色信息,并从基色中减去混合色。如果出现负数就剪切为零。与基色相同的颜色混合得到黑色;白色与基色混合得到黑色;黑色与基色混合得到基色。Formula: Result Color = Bottom Color - Top Color。或者,用归一化的颜色:z=x-y
划分:查看每个通道的颜色信息,并用基色除以混合色。基色数值大于或等于混合色数值,混合出的颜色为白色。基色数值小于混合色,结果色比基色更暗。因此结果色对比非常强。白色与基色混合得到基色,黑色与基色混合得到白色。Formula: Result Color = 255*Bottom Color/Top Color。或者,用归一化的颜色:z=x/y
(六)成份模式
色相:使用下边图层像素的明度和饱和度、当前图层像素的色相。结果看到的是当前图层的色相、下边图层的饱和度和明度。Formula: Result Color = (Bottom Lumonosity, Top Hue, Bottom Satuation)
饱和度:使用下边图层像素的明度和色相、当前图层像素的饱和度。结果看到的是当前图层的饱和度、下边图层的色相和明度。Formula: Result Color = (Bottom Lumonosity, Bottom Hue, Top Satuation)
颜色:使用下边图层像素的明度、当前图层像素的色相和饱和度。结果看到的是当前图层的色相和饱和度、下边图层的明度。Formula: Result Color = (Bottom Lumonosity, Top Hue, Top Satuation)
明度:使用下边图层像素的色相和饱和度、当前图层像素的明度。结果看到的是当前图层的明度、下边图层的色相和饱和度。Formula: Result Color = (Top Lumonosity, Bottom Hue, Bottom Satuation)
(七)图层混合模式公式汇总
正常(Normal):z = y*d + x*(1-d)
溶解(Dissolve): z = random(x, y)
变暗(Darken): z = min(x, y)
正片叠底(Multiply):z = x*y
颜色加深(Color Burn):z = 1-(1-x)/y
线性加深(Linear Burn):z = x+y-1
深色(Darker Color):z = if {[y] < [x]} then {y} else {x}
变亮(Lighten):z = max{x,y}
滤色(Screen):z = 1-(1-x)*(1-y)
颜色减淡(Color Dodge):z = x/(1-y)
线性减淡(添加)(Linear Dodge)(Add):z = x+y
浅色(Lighter Color):z = if {[y]>[x]} then {y} else {x}
叠加(Overlay):z = if {x<1/2} then {2*x*y} else {1-2*(1-x)*(1-y)}
柔光(Soft Light):z = if {y<1/2} then {x*(1+(2*y-1)(1-x))} else {x(1+(2*y-1)*(1/sqrt(x)-1)}
强光(Hard Light):z = if {y<1/2} then {2*x*y} else {1-2*(1-x)*(1-y)}
亮光(Vivid Light):z = if (y<1/2} then {1-(1-x)/(2*y)} else {x/(2*(1-y))}
线性光(Linear Light):z = x+2*y-1
点光(Pin Light):z = if {x<2*y-1} then {2*y-1} else if {2*y-1
实色混合(Hard Mix):z = if {x+y<1} {0} else {1}
差值(Difference):z = Abs(x-y)
排除(Exclusion):z = x+y-2x*y
减去(Subtract):z = x-y
划分(Divide):z=x/y
色相(Hue):H(z)S(z)L(z) = H(y)S(x)L(x)
饱和度(Saturation):H(z)S(z)L(z) = H(x)S(y)L(x)
颜色(Color):H(z)S(z)L(z) = H(y)S(y)L(x)
明度(Lumonosity):H(z)S(z)L(z) = H(x)S(x)L(y)
参考文献:
Photoshop: Blending Modes
颜色相乘和反颜色相乘
PS图层混合模式解析
Wiki: Blend Modes
颜色加深混合模式
Blending Modes of Photoshop & Co.