ActionScript3游戏中的图像编程(连载二十)

1.4.2 灰度的计算方法

回过头来看RGB,站在科学的角度来解释,它们确实也有更明亮的理由,因为下面一排色彩反射出来的色光总量是上一排色的两倍。
      为此,作者曾自作聪明地发明了一条“原创”的灰度公式:

Gray=(r+g+b)/3

哈哈,用色光总量来表达颜色的灰度想必就比较准确了吧!沾沾自喜一番以后,我还试着用这条自创的定律来转换这张测试图片,上下色块的灰度果然拉开了,可是很不幸地,左右相邻,边界分明的色块依然粘连在一块(图 1.30)。


图 1.30 笔者“自创”的灰度转换

显然此法生成的黑白照难登大雅之堂,色块之间的分界线全部丢失,而且同一行的颜色在我们人类的视觉系统里,亮度也不尽相同。比如视网膜会认为上排的绿色要比旁边的红和蓝明亮一些,而下排的粉红色则没有相邻的黄色与淡绿来得刺眼。

一项伟大的发明——灰度心理学公式诞生了!它汇聚了光学物理,眼球视光学,人类心理学,美术鉴赏等前沿学科之精华,集科技,艺术,社会科学于一体,高深莫测,唯美维妙,堪称视觉科学史上最惊天地,泣鬼神之大作,没有之一。

灰度心理学公式并不复杂,它深入浅出地描述了各种颜色对肉眼刺激程度的差异,仅仅使用最简单的加法和乘法就完成了灰度的整个演算过程:

Gray = r*0.299 + g*0.587 + b*0.114

其中,r,g,b被标准化为0~1。

如果读者有阅读过fl.motion.AdjustColor类的代码,想必就会对这条公式有一种似曾相识的感觉,AdjustColor里用到了公式里的3个系数(具体数值可能有一些微小的差异)。实际上,AdjustColor正是用灰度代替了亮度,至于为什么,看看上面的黑白照转换结果就不言而喻了。

令r=g=b=1,灰度就刚好等于100%,所以它实质上是对RGB三个数值做了一个加权平均数的运算,其中g的权重(通俗点说叫比重)最大,红色次之,蓝色最小。因此,心理学公式认为,绿色最刺眼,它比红色要明亮1倍,反射一点绿光对视网膜的刺激相当于两点红光。

以上描述与肉眼的感知相当接近,但至于具体数值是如何测算出来的,我就无从考究了。

我尝试运用灰度心理学公式对图 1.27进行灰度转换,效果要比自己“原创”的定律有水平多了(图 1.31)。


图 1.31 用心理学公式做灰度转换

至此,亮度与灰度的关系已经比较明确,他们都为量化色彩的明暗而生,本着“科技以人为本”的精神推动着人类社会精神文明的进步。其中,亮度着重对整体的把握,从颜色类别,鲜艳程度,明暗程度三个人类感知属性去描述被数理科学抽象过的色彩数值,而灰度则更强调对事物单项属性的深度探讨,有针对性地弥补HSB模式中亮度计算方法与视觉器官不够吻合的缺陷。

现在大概再也没有人会去拍摄黑白照片了(纯粹抱着怀旧心态的除外),即使遇到了真正需要使用黑白图像的场合(例如纪实片录制现场,汶川地震的哀悼日等),也不会专程从博物馆借一台19世纪出厂的黑白相机来开展拍摄工作,而是选择使用Photoshop等软件对彩色图像进行转灰的处理,而灰度处理的算法,恰恰就来源于上述的心理学公式。

而在艺术编程领域,灰度除了用来直接制作黑白效果(比如游戏按钮的禁用状态,玩家复活前的灰度效果等等)以外,还广泛应用于图像识别,色彩调整,边缘检测,光影预处理,模型上色等图像处理技术中(Photoshop的颜色混合模式就是一个成功的典范)。它的专一性使图形的创作流程有章可循,让艺术不再只掌握在设计师的手上。

下面我们就借助灰度公式搭配出一套相对和谐的色系。

ActionScript3游戏中的图像编程(连载二十),布布扣,bubuko.com

时间: 2024-10-23 23:13:14

ActionScript3游戏中的图像编程(连载二十)的相关文章

ActionScript3游戏中的图像编程(二十)

1.4.2 灰度的计算方法 回过头来看RGB,站在科学的角度来解释,它们确实也有更明亮的理由,因为下面一排色彩反射出来的色光总量是上一排色的两倍. 为此,作者曾自作聪明地发明了一条"原创"的灰度公式: Gray=(r+g+b)/3 哈哈,用色光总量来表达颜色的灰度想必就比较准确了吧!沾沾自喜一番以后,我还试着用这条自创的定律来转换这张测试图片,上下色块的灰度果然拉开了,可是很不幸地,左右相邻,边界分明的色块依然粘连在一块(图 1.30). 图 1.30 笔者"自创"

ActionScript3游戏中的图像编程(连载二十一,第1章完)

1.4.3 用灰度/明度指导色彩搭配 试着只通过调整不等于0的通道,让上一排的色彩在灰度上保持一致,把三个颜色分别代入到心理学公式.得 Gray(red) = r * 0.299      Gray(green) = g * 0.587      Gray(blue) = b * 0.114 让它们灰度相等,则 r * 0.299 = g * 0.587 = b * 0.114 可见,b值一定最大,不妨让b取最大值255,求得r=97, g=50.把这两个值分别应用到红和绿两个色块上. 绿色不再

[原创]ActionScript3游戏中的图像编程(连载三十二)

2.2.5 投影距离的模拟 Photoshop投影样式面板的下一个属性是距离,它也存在于Flash的投影滤镜选项中.两者初始值一致,经笔者测试,两者在效果实现和数值意义方面基本一致.Flash不需要对默认参数进行更改. 下一项是扩展,乍一看,在Flash中并没有找到对应项.但仔细观察,在Photoshop投影样式的基础选项里,除了alpha以外,就只剩该属性用了百分比. [原创]ActionScript3游戏中的图像编程(连载三十二),布布扣,bubuko.com

[原创]ActionScript3游戏中的图像编程(连载二十九)

2.2.2 Photoshop投影大小的模拟 投影没有之前那么浓了,但是跟Photoshop里的效果差别还挺大,因为在Photoshop里我们还设置了另外一个属性:大小. Flash里似乎找不到它的影子,我们用排除法来进行定位,Photoshop投影样式的大小属性以像素为单位,Flash投影滤镜的选项只有距离和那对被“手铐”扣住的模糊属性符合条件,而Photoshop里也有一个距离,所以我们定位到模糊属性(图 2.15). 图 2.15 Flash投影的模糊属性 分别调整Photoshop的大小

ActionScript3游戏中的图像编程(连载二十一)

1.4.3 用灰度/明度指导色彩搭配 试着只通过调整不等于0的通道,让上一排的色彩在灰度上保持一致,把三个颜色分别代入到心理学公式.得 Gray(red) = r * 0.299 Gray(green) = g * 0.587 Gray(blue) = b * 0.114 让它们灰度相等,则 r * 0.299 = g * 0.587 = b * 0.114 可见,b值一定最大,不妨让b取最大值255,求得r=97, g=50.把这两个值分别应用到红和绿两个色块上. 绿色不再显得刺眼,整体感也因

ActionScript3游戏中的图像编程(连载二)

内容编排 本套教程共分3部分. 第一部分介绍色彩的相关知识及Flash,Photoshop等可视化软件在图形图像处理方面的一些特性,包括常用的色彩模式,Photoshop图层效果,ActionScript滤镜,混合模式等知识,并指出这些特性在不同软件下的异同. 第二部分以应用数学为思想,以BitmapData,像素为工具,深入剖析各种图像处理技术的工作原理,让读者可以深入到算法的层面上认识图像处理,在ActionScript乃至其它支持像素级编程的语言中实现与Photoshop等专业图像软件相媲

ActionScript3游戏中的图像编程(连载二十七)

2.2 Photoshop投影样式在Flash基本滤镜中的体现 作为上帝的另一个化身,Flash在图层样式方面自然也不甘示弱,不过在Flash里面,它有另外一个名字--滤镜(仅仅从概念上说,Flash的滤镜包含了Photoshop里的图层样式和滤镜). 下面就让我们打开Flash CS6/5.5,一起在滤镜里寻找Photoshop图层样式的影子吧,同时,我们先暂时把Photoshop的图层样式清除掉(把样式前面那些复选框的勾全部去掉即可). 先新建一个文档("文件"--"新建

ActionScript3游戏中的图像编程(连载二十八)

2.2.1 投影颜色与透明度的模拟 默认的投影滤镜看着比Photoshop的投影样式浑浊,究其原因,似乎是颜色太深所致.(图 2.11). 图 2.11 设置默认投影滤镜后的效果 下面回到Photoshop查看其默认的投影参数(图 2.12). 图 2.12 Photoshop默认投影样式的参数 茫茫人海,我还是第一眼发现了你--颜色样本块.同是黑色,RGB都等于0,怎么差别还这么大?看来是A通道--不透明度惹的祸.从图 2.12中,我们看到Photoshop里对阴影设置了75%的不透明度,那F

ActionScript3游戏中的图像编程(连载二十九)

2.2.2 Photoshop投影大小的模拟 投影没有之前那么浓了,但是跟Photoshop里的效果差别还挺大,因为在Photoshop里我们还设置了另外一个属性:大小. Flash里似乎找不到它的影子,我们用排除法来进行定位,Photoshop投影样式的大小属性以像素为单位,Flash投影滤镜的选项只有距离和那对被"手铐"扣住的模糊属性符合条件,而Photoshop里也有一个距离,所以我们定位到模糊属性(图 2.15). 图 2.15 Flash投影的模糊属性 分别调整Photosh