盒子
盒子
文章目录
  1. 色彩基础
    1. RGB空间
    2. HSV空间
    3. HSV和RGB关系
    4. CMYK减法模型
    5. 转换为灰度图像
  2. 图层模式
    1. Normal, Dissolve, Behind模式
    2. Addition,Substract, Difference模式
    3. multiply(burn), Divide(Dodge), Screen, Overlay模式
    4. Darken Only 和 Lighten Only模式
    5. Hue, Saturation, Value, Color模式
  3. 其它

谈谈色彩空间和混合模式

图层模式和色彩空间理论,在寒假的时候就很好奇,找来gimp的文档看了看图层模式还是有些糊里糊涂。关于色彩理论,看到图像处理新闻组(好像很古老的东西了)上推荐这篇文章Color FAQ,看上去似乎很不错的样子,但好像不适合入门。

后来看到一本1996年关于gimp的书Grokking the GIMP,虽然似乎有些古老的样子,但一目了然,很多东西,十年都未曾变化。

色彩基础

RGB空间

即通过Red、Green、Blue来表示其它颜色的方法。每种颜色都取0-255之间的值。这样整个色彩空间可以表示在R、G、B为轴的立方体内。

一般看来,越往对角线方向色彩感觉越亮。

HSV空间

这里有几个定义:

lightness:L = (MAX(R, G, B) + MIN(R, G, B))/2
value: V = MAX(R, G, B)
luminance: Y = 0.30R + 0.69G + 0.11B
brightness: (R + G + B)/3

luminance更符合人的主观亮度感受。brightness和人的感受差别较大,一般不用而用luminance。

那HSV模型在RGB空间是什么样的呢。

HSV和RGB关系

在RGB空间所在的立方体中,主对角线被成为Neutral line。这条线从原点到(255,255,255)逐渐从黑色过度到灰色到更浅的灰色到白色。

HSV中固定H,则获得过这条线的一面。固定S,则获得以此为轴原点为顶点的圆锥面。固定V,则获得关于此线垂直的面。

CMYK减法模型

这是印刷中常用的,RGB用在发光模型中,CMY(K)用在反光模型中。k应该不超过MAX(C, M, Y)

转换为灰度图像

有三种方法:

  1. Grayscale: 通过计算luminance,这个符合人眼对亮度的感觉
  2. Desaturate: 计算lightness。实际上保留了RGB分量
  3. Decompose HSV:抽取HSV中的V

V > L或Y,所以显然V最亮,但人眼会感觉Grayscale效果最好。所以后两种方法常用在分离图像上。

图层模式

这是关于两个或多个图层的故事,上面的记为F,下面的记为B

Normal, Dissolve, Behind模式

Normal没啥特别的,溶解和F图层的透明度有关,透明度越大,B透过的越多。

behind是个特殊的画笔才能用的模式,就像在玻璃背面画图一样

Addition,Substract, Difference模式

运算符号表示各个分量独立运算。W为白色

加法:
R = min(F + B, W)

减法:
R = max(B - F, 0)

差分:
R = |F - B|

前两种方法可能会造车个部分额区域变得全白或全黑,丢失部分信息。

multiply(burn), Divide(Dodge), Screen, Overlay模式

发现变化也不少,现在又是hard light又是啥的,burn也不是multiply,Divide也不是Dodge了。不过也差不多,burn和dodge只是把相应multiply和divide的F反色了(255-F)

正片叠底:
R = (F x B)/255

得到的结果比F和B都暗

除法:
R = MIN(W, B x 256 / (F + 1))

结果比B亮,有可能变白丢失信息

滤色:
R = 255 - 1/255 x (255- F) x (255 - B)

滤色原理和乘法类似,只是是从W开始向原点计算。结果是图像所有地方都变亮,但并不会出现某些区域全变白色丢失信息。

叠加(不过gimp中的叠加好像就是柔光, 这里看起来让人困惑):
multiply和screen的结合:
R = 1/255 x (B x R_S + (255 - B) X R_m)

如果先面的图层B很深,就以multiply为主,相反如果B很亮,则以screen为主。结果就是暗的地方更暗,亮的地方更亮。

Darken Only 和 Lighten Only模式

变暗:
R = MIN(F, B)

变亮:
R = MAX(F, B)

Hue, Saturation, Value, Color模式

色调:
R = [h(F), s(B), v(B)]

取前景的色调

Value和Saturation类似。

Color:
R = [h(F), s(F), l(B)]

使用背景的lightness,一般lightness都比value小些

最后,这里头什么乱七八糟的历史问题,还是这比较清楚:图层混合模式详解

其它

最后,完全被北邮求职氛围吓尿拉!!!!!!!!!!!

惶恐万分,心情只能用下面的图形容

惶恐万分图

还有时间这样没事画棵树么?

树

不管怎样,毕业之前有几件特别想做的事:

  1. 以工作室的名义发布一款自任美工、编剧、程序员等balblabla使用phaser.js制作的“网页游戏”
  2. 画给某些人的画
  3. 去游泳馆洗三百次澡= =。。。。。。

as酱上回来找我玩错过了好遗憾,as酱T T,下次你有空不知啥时候了。

最后奉上工作室logo:

半条狗工作室

欢迎各位一起来玩耍。一起来做ARPG啊!

最后丧心病狂大量图片哈哈哈哈

在aus的推荐下迷上了像素画

像素狗,半条狗]

anubis

在gimpusers上看到了很多很棒的教程!

chrome环]

火焰效果

flashy car

animated radar