Ps共存在27种混合模式,并分为6个组,我们暂且将其总结为:

覆盖组:正常、溶解

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

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

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

差值组:差值、排除、减去、划分

色彩组:色相、饱和度、颜色、明度

在百度百科中我们也不难搜索到相关的计算公式,其中A、B为计算层、C为结果,而在8位通道中,RGB均大于等于0小于等于255,所以0≤A、B、C≤255,下图中的计算均在此区间内计算,但为方便理解,我们将对其转换为0到1区间,文中的计算公式也将不采用下图算法,即文中ABC均已除以255进行运算。正常和溶解层不需讲述,我们按ps的排列顺序先讲解变暗层。

注:该表中点光的算法有误,B>128时,C=MAX(A,2B-255)才是正确算法。

变暗:C=Min(A,B)

很方便理解,谁数值小(即谁更暗)就取谁,这里有一点,ABC均是RGB色彩,所以取值并不是一个维度上的,例如:A(50,50,100)和B(50,100,50),最后的输出结果为C(50,50,50)。

正片叠底:C=A*B

这里有一点,名称上翻译做正片叠底,实际上应该是叫做乘法。从0到1的取值区间不难得出,C一定会比A和B更暗,我们可以如此理解该混合模式:A和B互为用作描述变暗程度的图层,我们用三维坐标系来描述,从图中不难理解,使用正片叠底混合后,除非二者中有一者为是1,否则画面一定会变暗,且这种变暗是线性的(一次方程的导数是个固定值)。

颜色加深:C=(A-1)/B+1

这里很有意思,这个公式有出现的负值的可能性,例如:A、B取0.2时,结果为-3,当然,不可能有比绝对的黑更黑的东西,所以当A+B的总量小于1(即公式出现负值),画面会变为纯黑,A+B总量大于1小于2时会变暗,二者均为1时不变,如此理解:B是用以描述变暗程度的图层,变暗程度是一个二次方程,B越小,影响越大

线性加深:C=A+B-1

这里再一次有出现负值的可能性,同样是A+B小于1时会出现纯黑,颜色加深和线性加深的区别只在于中间的过渡,颜色加深过渡有曲率,而线性加深如其名字,过渡是平直的

深色:C=Min [A(rgb),B(rgb)]

RGB通道相加算出总价,并显示总价更少的,多的不显示。

这里要注意,总价并非直接相加,而是采用RGB to Gray算法转换,算法如下:Gray = (R^2.2 * 0.2973 + G^2.2 * 0.6274 + B^2.2 * 0.0753)^(1/2.2),并非是R+G+B,在此感谢韩世麟的指点。RGB to Gray的算法有多重下图是另一种简便的算法,可供参考。

变亮:C=Max(A,B)

谁多就取谁的粗暴算法。

滤色:C=1-(1-A)(1-B)

参考正片叠底,A的负片乘上B的负片,最后的结果再负片一次就是滤色,二者互为描述画面变量程度的图层。

颜色减淡:C=A+AB/(1-B)=A/(1-B)

参考颜色加深,当A+B的总量大于1(即公式结果大于1),画面会变为纯白,其余情况均是变亮,可以如此理解:B是用作描述变亮程度的图层,变亮程度是一个二次方程,B越大,影响越强。

线性减淡(添加):C=A+B

简单的加法,即便过曝也不去抑制,常用于效果图叠加光照。

浅色:C= Max [A(rgb),B(rgb)]

RGB通道相加算出总价,并显示总价更多的,少的不显示。

和深色一样采用RGB to Gray算法转换,详见上图。

叠加:if A≤0.5,C=2*A*B

      If A>0.5,C=1-2*(1-A)(1-B)

暗更暗,亮更亮,A在中性灰前后对画面的影响力发生陡变,B对于画面的影响一直是线性的

柔光:if B≤0.5,C=2*A*B+A²(1-2B)

       if B>0.5,C= 2 A(1-B)+ √A  * (2 B-1)      √为根号

从图中可以看出,柔光效果同叠加,但效果更平滑

强光:if B≤0.5,C=2*A*B

       if B>0.5,C=1-2*(1-A)(1-B)

从公式也不难看出,强光的公式和叠加一模一样,区别只在于叠加的判定是A的取值,而强光的判定是B的取值,B在中性灰区域前后的影响力发生陡变,可以理解为强光和叠加不过是AB换了位置。数据模型如下。

亮光:if A≤0.5,C=1-(1-B)/(2A)

      If A>0.5,C=B/(2(1-A))   

同样是更暗更亮的算法,由公式得出,B+2A<1时画面会变为纯黑,而这个叠加模式中,A离中性灰越远处影响力度越大,且过渡不平滑,B的变化则是线性的,B可以将画面压为纯黑或提亮为纯白  。

线性光:C=A+2B-1

理解为B贡献了两倍光照的线性加深,A+2B<1时纯黑,大于1时纯白,保证了B在中性灰时不对画面产生影响。

点光:if B≤0.5,C=Min (A,2B)

   if B>0.5,C=Max (A,2B-1) 

纯粹的比大小,在下图中,y轴是A(同时也是输出轴C),x轴是B,A的值确定后,B小于0.5和大于0.5会采用两种算法,但总体而言还是加亮和压暗的逻辑,这种模式的结果会存在强烈的断层。

实色混光:if A+B≥1,C=1

 if A+B<1,C=0

典型走极端的混合模式,取决于A、B总和是不是大于1,输出结果不是1就是0

差值:C=|A-B|

从公式就能理解,二者差值越大,颜色越亮。

排除:C=A+B-2AB

对比上图的差值,我们不难理解,排除是转折更平缓的一种差值,但这种表述并不准确,因为相较于差值,排除中A、B的色彩越接近中性灰,结果也会接近,而差值则不受这种影响。

减去:C=A-B

纯粹的减法,差值会有有绝对值修正负数,而减去没有

划分:C=A/B

纯粹的除法,这里有3种情况,

1.A>B,则输出白色

2.A<B,则输出结果介于A、B之间

3.B为0,输出白色

在色彩组里面不再单纯以RGB为计算标准,而是以HSL为标准,(即色相Hue、饱和度Saturation、明度Luminosity)

从本质上讲,HSL和RGB完全可以相互转化,但这里不在我们的讨论范围内。

色相:只改变色相不改变饱和度、明度

饱和度:只改变饱和度不改变色相、明度

颜色:同时改变色相和饱和度、明度

明度:只改变明度不改变色相、饱和度

Categories:

Tags:

Comments are closed