一篇文章彻底搞清PS混合模式的原理

一篇文章彻底搞清PS混合模式的原理

理解混合模式的原理,需熟知这些概念:像素、图层、通道、RGB模式基本原理



我们先建立两个图层:

当前选中层(Active Layer)为A层,或称“混合色 blend color”

下层(Background Layer)为B层,或称“基色 base color”,两者混合得到“结果色 Result color”


混合模式的基本原理

取A层任意一个像素a [R1, G1, B1],与B层对应位置的像素b [R2, G2, B2] 进行数学运算,得到c [R3, G3, B3]

  • R1 某种运算 R2 = R3
  • G1 某种运算 G2 = G3
  • B1 某种运算 B2 = B3

A、B两层所有像素都独立进行同样的运算,即得到混合后的结果C,即新的A层(注意虽然A层缩略图没有变,但直方图已经变了),而B保持不变



举一个简单例子,PS默认的图层混合模式是“正常”,在不透明度为100%时,

  • R1 正常 R2 = R1
  • G1 正常 G2 = G1
  • B1 正常 B2 = B1

也就是说,“正常”模式下,A层在B层之上,看到的只有A层,看不到B层





混合模式的分类

一般系:正常、溶解

变暗系:变暗、深色、正片叠底、颜色加深、线性加深

变亮系:变亮、浅色、滤色、颜色减淡、线性减淡

对比系:叠加、强光、柔光、亮光、线性光、点光、实色混合

    • 该组特点是让亮的更亮,暗的更暗,每一个“对比系”的混合模式都可看作“变暗系”和“变亮系”的结合,如“叠加”是对较暗的像素进行“正片叠底”,对较亮的像素进行“滤色”

负片系:差值、排除

相消系:减去、划分

HSL系:色相、饱和度、颜色、明度





混合模式彼此之间的联系

1. 对于大多数混合模式,图层“不透明度”和“填充度”对混合效果影响是一样的,也就是说,60%的不透明度,与60%的填充度,得到的效果一样;但以下8种混合模式是例外

  • 颜色加深、颜色减淡
  • 线性加深、线性减淡
  • 亮光、线性光、实色混合
  • 差值

2. 以下5组混合模式是相反对应关系(从后面的公式就可以看出)

  • 变暗 - 变亮
  • 深色 - 浅色
  • 正片叠底 - 滤色
  • 颜色加深 - 颜色减淡
  • 线性加深 - 线性减淡

3. 具有“互逆”关系的混合模式有两组,举例,A层在上,对A“叠加”;B层在上,对B“强光”:两种情况得到的效果是一样的

  • 叠加 \leftrightarrow 强光
  • 颜色 \leftrightarrow 明度


每一种混合模式的运算方法

当通道位深度为8位时,R、G、B三通道数值范围在0到255,我们除以255,得到0~1范围内的数值

我们用下图所示的两个100像素的图层做实验

A层有一个颜色, [R, G, B]值分别是 [102, 153, 204],即[0.4, 0.6, 0.8]

B层有两个颜色,[0, 51, 102] 和 [255, 204, 153],即 [0, 0.2, 0.4] 和 [1, 0.8, 0.6]

选中A层,调节混合模式

I 正常系

正常 Normal

设不透明度为n

c = n*a + (1-n)*b

当不透明度为100%

c = a



溶解 Dissolve

对每个像素而言,其结果色是基色或混合色的随机值,取决于其“不透明度”:“不透明度”高时,更多像素取自当前层;低时,更多像素取自背景层



II 变暗和变亮系

变暗 Darken

c = min(a,b) 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]

C: 颜色1 [0, 0.2, 0.4] 颜色2 [0.4, 0.6, 0.6]


得到变暗的效果



变亮 Lighten

c = max(a,b) 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]


A: [0.4, 0.6, 0.8]

C: 颜色1 [0.4, 0.6, 0.8] 颜色2 [1, 0.8, 0.8]



得到变亮的效果



深色 Darker Color

c = min(a, b) 三通道整体进行运算,不会产生新的颜色

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.2, 0.4] 颜色2 [0.4, 0.6, 0.8]

该混合模式不会产生新的颜色,注意与“变暗”的区别



浅色 Lighter Color

c = max(a, b) 三通道整体进行运算,不会产生新的颜色

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0.4, 0.6, 0.8] 颜色2 [1, 0.8, 0.6]

该混合模式不会产生新的颜色,注意与“变亮”的区别



正片叠底 Multiply

c = a*b 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.12, 0.32] 颜色2 [0.4, 0.48, 0.48]


常用的加深模式,用于产生阴影、去除白色和其他浅色。如同将所有的图层都叠在一起,上方一束光投下来到屏幕上;“颜色加深”和“线性加深”比“正片叠底”效果更为强烈

任何颜色和黑色混合结果都是黑的,任何颜色跟白色混合结果都是原来的颜色

“正片叠底”即所谓“减色”或“CMYK”模式,现实中相当于用染料、水彩笔绘画效果,如图所示



滤色 Screen

c = 1 − (1−a)*(1−b)逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0.4, 0.68, 0.88] 颜色2 [1, 0.92, 0.92]


常用的减淡方法,产生发光效果。如同将所有图层分开摆放,各有一束光通过各图层,汇聚在一块屏幕上

基色或混合色为白色时,结果会是白色;任何颜色和黑色混合,结果仍原来的颜色

“滤色”即所谓“加色”模式,现实中相当于发光体发光的叠加效果,如图所示



颜色加深 Color Burn

c = 1 − (1−b)/a 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0, 0.25] 颜色2 [1, 0.67, 0.5]


得到的效果比“正片叠底”更深,中调更高饱和,高光减弱

任何颜色跟白色(B=1)混合结果都是白色



颜色减淡 Color Dodge

c = b / (1−a)逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.5, 1] 颜色2 [1, 1, 1]


得到的效果比“滤色”更亮,色彩对比更加强烈,中调更高饱和,高光增强

任何颜色跟黑色(B=0)混合结果都是黑色



线性加深 Linear Burn

c = a + b − 1 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0, 0.2] 颜色2 [0.4, 0.4, 0.4]


得到的效果比“颜色加深”更深,比颜色加深饱和度低

任何颜色跟白色(B=1)混合结果都是原来的颜色



线性减淡 Linear Dodge

c = a+b 逐通道进行运算

B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0.4, 0.8, 1] 颜色2 [1, 1, 1]


得到的效果比“颜色减淡”更亮,但对比稍弱

任何颜色跟黑色(B=0)混合结果都是原来的颜色



III 对比系

该组特点是让亮的更亮,暗的更暗,每一个“对比系”的混合模式都可看作“变暗系”和“变亮系”的结合,如“叠加”是对较暗的像素进行“正片叠底”,对较亮的像素进行“滤色”


叠加 Overlay

逐通道进行运算

若 b <= 0.5: c = 2ab

若 b > 0.5: c = 1 - 2(1-a)(1-b)


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.24, 0.64] 颜色2[1, 0.84, 0.84]

类似于 “正片叠底”+“滤色”的结合,但效果更柔和


A层在上,对A“叠加”;B层在上,对B“强光”:两种情况得到的效果是一样的



强光 Hard Light

逐通道进行运算

若 a <= 0.5: c = 2ab

若 a > 0.5: c = 1 - 2(1-a)(1-b)


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.36, 0.76] 颜色2 [0.8, 0.84, 0.84]

类似于 “正片叠底”+“滤色”的结合,但效果更柔和


A层在上,对A“叠加”;B层在上,对B“强光”:两种情况得到的效果是一样的



柔光 Soft Light

逐通道进行运算

若 a <= 0.5, c = 2ab + b^{2} (1-2a)

若 a > 0.5, c = 2b(1-a) + \sqrt{b} (2a-1)


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]

C: 颜色1 [0, 0.25, 0.54] 颜色2 [1, 0.82, 0.71]

效果类似于“叠加”,但效果更柔和,有透明的光线和阴影

类似于 “浅色”+“深色”的结合



亮光 Vivid Light

逐通道进行运算,近似公式

若 a <= 0.5, c = 1 + (b-1)/2a

若 a > 0.5, c = b / 2(1-a)


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.25, 1] 颜色2 [1, 0.996, 1]

类似于“实色混合”,但效果通常更加剧烈

类似于 “颜色减淡”+“颜色加深”的结合



线性光 Linear Light

c = b + 2a -1 逐通道进行运算,近似公式


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.4, 0.996] 颜色2 [0.8, 0.996, 1]

类似于“亮光”,但效果通常更加剧烈

类似于 “线性加深”+“线性减淡”的结合



点光 Pin Light

逐通道进行运算

若 a > 0.5, c = max ( 2(a-0.5) , b )

若 a <= 0.5, c = min ( 2a , b )


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.2, 0.6] 颜色2 [0.796, 0.8, 0.6]

该混合模式较为强烈,容易形成色块色斑和噪点

类似于 “变亮”+“变暗”的结合



实色混合 Hard Mix

若 a+b >= 1, c = 1; 否则 c=0 逐通道进行运算


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0, 1] 颜色2 [1, 1, 1]

结果只有8个颜色:R、G、B、C、M、Y 、K、White

如果“填充度”不为100,结果色会多于8



IV 负片系

差值 Difference

c = |b - a| 逐通道进行运算


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0.4, 0.4, 0.4] 颜色2 [0.6, 0.2, 0.2]

会有一定负片效果



排除 Exclusion

c = a + b - 2ab 逐通道进行运算


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0.4, 0.56, 0.56] 颜色2 [0.6, 0.44, 0.44]

会有一定负片效果



V 相消系

减去Subtract

c = b−a逐通道进行运算


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0, 0] 颜色2 [0.6, 0.2, 0]

变深效果

常结合“应用图像”,用于高低频法调色



划分Divide

c = b/a 逐通道进行运算


B: 颜色1 [0, 0.2, 0.4] 颜色2 [1, 0.8, 0.6]

A: [0.4, 0.6, 0.8]


C: 颜色1 [0, 0.33, 0.5] 颜色2 [1, 1, 0.75]

变亮效果




汇总在一张A4纸上

编辑于 2016-11-25