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

看了一篇在新的图层中加镜头光晕的博文:[url]http://www.photoshopessentials.com/photo-effects/lens-flare/[/url]
,其中光晕图层的混合模式使用的是滤色(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)

由以上公式我们可以了解到
[list]
[*]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
[/list]

对滤色有了以上的了解,我们来重新回顾一下[color=blue]添加镜头光晕[/color]的过程:
[list]
[*]1、新建一个黑色的图层:新建图层,编辑->填充(黑色)
[*]2、添加光晕: 滤镜->渲染->镜头光晕
[*]3、调整该光晕图层的 混合模式为 滤色
[/list]
因为图层最初为黑色的,,光晕先以 滤色(估计PS内时这么实现的)和黑色的图层 以 滤色模式混合,得到光晕图层。(根据公式(2),和黑色以滤色混合,得到的颜色为原来的颜色)
该镜头光晕图层在和背景图层以 滤色 混合,,和直接用 光晕的图和背景图层混合,效果完全一样!!
这样还有一个附加的好处->可以调整镜头光晕的透明度!!


最后,来看一下 blend color 和 base color 相同时,滤色模式的响应曲线,
结果相当于调整曲线,使得结果色亮于原来的颜色(中间色调被提亮最多!)
[img]http://dl2.iteye.com/upload/attachment/0095/8182/5be48890-8b92-3dee-9445-32178b58981b.png[/img]

代码如下:
%% 基色和混合色相同时 滤色模式(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值