PhotoShop - 滤色模式(screen) 的 响应曲线(关于加镜头光晕的思考)

看了一篇在新的图层中加镜头光晕的博文: http://www.photoshopessentials.com/photo-effects/lens-flare/
,其中光晕图层的混合模式使用的是滤色(screen)。
那么,什么事滤色呢?有这么一种说法,滤色的作用类似于投影。将两台投影仪投影到同一块银幕上,我们看到的是两束光的叠加。
该光束比其中任何一束光都要亮!!
先来看一下滤色的公式:
resultColor=1-(1-baseColor)(1-blendColor)


看到此处,我是有些疑惑的,如果是两束光的叠加,那么不应该是相加么?
resultColor=baseColor+blendColor


为了解决这个疑惑,我们换个角度来看 滤色的公式:
resultColor=1-(1-baseColor)(1-blendColor) ......(1)
=baseColor+blendColor*(1-baseColor)  ......(2)
=blendColor+baseColor*(1-blendColor) ......(3)

由以上公式我们可以了解到
  • base color 和 blend color 是对称的
  • 由(2)可以看出result color 可以分为两部分:一部分是base color;另一部分则是用blend color来调制 1-baseColor (这样既保证了两台投影仪叠加的光亮于其中任意一台的光,也保证了result color不会大于1!)如果允许溢出,,在RGB三通道的时候,只有其中一个通道溢出的话,颜色失真会比较严重
  • result color 的取值范围为 [baseColor 1], ,也就是不会溢出!这一点儿,直接相加就不行了!
  • blend color为0(黑色)时,result color = base color
  • blend color为1(白色)时,result color = 1


对滤色有了以上的了解,我们来重新回顾一下 添加镜头光晕的过程:
  • 1、新建一个黑色的图层:新建图层,编辑->填充(黑色)
  • 2、添加光晕: 滤镜->渲染->镜头光晕
  • 3、调整该光晕图层的 混合模式为 滤色

因为图层最初为黑色的,,光晕先以 滤色(估计PS内时这么实现的)和黑色的图层 以 滤色模式混合,得到光晕图层。(根据公式(2),和黑色以滤色混合,得到的颜色为原来的颜色)
该镜头光晕图层在和背景图层以 滤色 混合,,和直接用 光晕的图和背景图层混合,效果完全一样!!
这样还有一个附加的好处->可以调整镜头光晕的透明度!!


最后,来看一下 blend color 和 base color 相同时,滤色模式的响应曲线,
结果相当于调整曲线,使得结果色亮于原来的颜色(中间色调被提亮最多!)
PhotoShop - 滤色模式(screen) 的 响应曲线(关于加镜头光晕的思考)

代码如下:
%% 基色和混合色相同时 滤色模式(screen) 响应曲线
modeFunc=@(baseColor,blendColor) 1-(1-baseColor).*(1-blendColor);
modeName='滤色模式(screen)';

x=linspace(0,1,256);
y=modeFunc(x,x);


figure1 = figure;
axes1 = axes('Parent',figure1,'YTick',0:.1:1,'XTick',0:.1:1,...
    'PlotBoxAspectRatio',[1 1 1],...
    'DataAspectRatio',[1 1 1]);
% xlim(axes1,[0 1]);
% ylim(axes1,[0 1]);
grid on
box(axes1,'on');
hold(axes1,'all');

plot(x,y,'Parent',axes1,'LineWidth',3,'Color',[1 0 0], 'DisplayName',modeName);
plot(x,x,'Parent',axes1,'LineWidth',2,'LineStyle','--', 'DisplayName','正常模式');

xlabel('基色及混合色灰度值','FontSize',16);
ylabel('结果色','FontSize',16);
title(['基色和混合色相同时 ' modeName ' 响应曲线'],'FontSize',16);
legend1 = legend(axes1,'show');
set(legend1,'Location','SouthEast');
clear all

你可能感兴趣的:(PS)