zoukankan      html  css  js  c++  java
  • Photoshop理论:另外一种角度看图层混合模式

    源地址:http://www.missyuan.com/thread-687724-1-4.html


    1、我将一个色阶看成是一个由亮部和暗部组成的这么一个元素,亮部是我们看的见的,暗部是影响亮部的,有点作用力与反作用的关系,你弱他就强,你强他就弱,他们之间的关系就是相加和为1(我这里把二者定位小数),之所以这样定义便于后面的理解,因为这样一个光是有最高值的255,要是没有最高值,无限亮,我还真不好定义了
    2、还有一点我要说明就是填充不透明度对不同混合模式也是有两种作用,一种作为控制度(下面会提到),一种还是以填充不透明度的原始作用,即反应原本图层的不透明度——在没有样式的情况下和不透明度是一样的作用,这种作用是因为要把混合层看成是一个图层来和基层混合,而不是度来和下面混合,主要有变暗,变亮和颜色模式。

    3,给出一个色阶模拟器,当然你也可以自己做,这是联盟论坛大神们智慧的结晶

    4,灰色颜色的字是我对运算方式的理解,因为不善算数,所以居然也理解了一番,可以略过
     123.rar (6.87 KB)
    引用:
    我的理解:填充不透明度对于混合模式来说是对混合层的影响值的一个控制度。
    正片叠底
    用混合层的暗部(1-A),来影响基层的亮部(B),影响值就是(1-A)
    当影响值一定的时候,n作为填充不透明度控制其大小,影响值越小,越没有变化 C=B ;影响值越大,越趋近最后的定义公式C=AB
    (1,C是结果色,B是基层,A是混合层。2,定义公式可以去网上找,找那种C归为单位1的那种即用百分数表示值。)
    公式   C      =       [    1     -         n(1-A)         ]  *   B
    n越大即为100%的填充不透明度,公式趋近最后的公式C=AB
    n越小即为0的时候,公式趋近C=B
    从公式我们发现
    1,要是混合色去影响下层的亮部得出的结果也是应该为亮部
    2,n主要是用来作为影响度(1-A)or A(后面会有)的控制度

    我们再来一个不透明度(t)的公式,即不包含填充不透明的影响(n=1)
    C=  t  *  (A*B) + (1-t) * B
    可以发现这两个公式化简后是相同的,这也是为什么动混合层的不透明度或是填充不透明度的滑块,他们的变化是一样的。
    这样你还可以把填充不透明和不透明放到一起作为一个最后的公式。
    引用:
    滤色
    用混合层的亮部A来影响基层的暗部(1-B)
    当影响值一定的时候,n作为填充不透明度控制其大小,影响值越小,越没有变化1- C=1-B ;影响值越大,越趋近最后的定义公式    
    1-C=(1-A)*(1-B)
    公式  1-C = (1-  n*A)*(1-B)
    n越大,越趋近最后定义公式
    n越小,为0的时候,1-C=1-B
    从公式我们发现
    1,影响的是下层的暗度(1-B),得出的结果也应为暗度1-C
    2,你也可以只计算不透明度的公式来和此公式比对,会发现二者一样,也就是为什么模拟器二者的影响走位是一样的。
    引用:
    颜色加深
    用暗部(1-A)来影响暗部(1-B)
    (1-A)的取值范围[0,1],加深就是影响度取值越大的时候,颜色越黑,是一个倍数关系,在[0,1]这个范围内要产生倍数,需要用一个除法的算式。影响度越大,越趋近最后的公式;影响度越小,越无变化即1-C=1-B
    公式:                              1
             1-C  =      ——————————————  *  (1-B)
                                       1-n(1-A)

    所表现的出来的东西同上面的一样,但是这时它和不透明度的影响公式就不同了,这也是为什么调节两个不透明度,变化的曲线不一样的原因,可以试试
    引用:
    颜色减淡
    用亮部A,来影响下层的亮部B,也是只能用除法,影响度越大,越接近最后的公式,影响度越小,无变化,最后的C=B
    公式:                                      1
            C=   —————————————————————— * B
                                                  1    -    nA

    同样的不透明度和填充不透明度最后的运算公式不一样,变化规律也不一样
    引用:
    为什么分母中要有个 (1-  )?直接用亮部除以亮部,暗部除以暗部不行吗?分母其实可以理解为偏离基层B or(1-B)的一个值,这个值由n和混合层共同作用,如果没有混合层作用的话,本来应该是C= (1/1)B,  加入A的影响,A的影响越大,分母越小,最后的结果越大。
    引用:
    线性加深
    用混合色的暗部去影响基层的暗部,用相加的关系
    公式 :1-C =  n (1-A)+ (1-B)


     

     

    引用:
    线性减淡
    用混合色的亮部去影响基层的亮部,也用相加的关系
    公式 :C =  n A+ B
    有了上面公式的理解,这两个公式就没有什么难理解的了

     

    引用:
    变亮和变暗这两种模式就是我前面说的把混合层此时看做是一个层了,一个彻彻底底的层,不在作为幕后工作的影响者,和基层现在有同等地位了,需要哪块就要哪块,谁也不要看不起谁,这个时候填充不透明度和不透明度的意义是相同的。
    引用:
    到了叠加类的了,叠加类的混合模式是有影响范围的,都是以128为界的,其实要是理解这些公式,很好办,把一个模式分成两个模式,最后再合并就可以了
    引用:
    叠加和强光
    有人说这两个模式不同,只有在同源混合的时候他们的曲线才是相同的,反相影响或是单色影响就不一样,他们所依据的东西也不一样,这些都没错。但是我上面说了完全可以把一个模式拆成两个,只是最后是依据他们的影响范围进行合并起来的方式不同,但是只有一句话:他们还是需要混合层这个调整度A or(1-A)来调整基层。
    他们是以正片叠底和滤色的方式来影响基层的,只是多了一个倍数2,但是这个倍数2是影响的谁?假如是小于128的部分,影响的是最后A*B的结果吗,单纯的2*AB吗?
    我们从128这个分界点考虑,以强光模式说,如果在范围内使用的是正片叠底公式的话,128是个不作用点,他对于正片叠底模式来说128映射的就是原先的255,而0映射的就是0,他们之间的数映射关系是什么呢?(因为是混合层产生作用,这里说的值都是混合层的值)

    叠底部分       128 (即 0.5)  ————→ 255(即 1)          滤色部分        128 (即 0.5)  ————→ 0  

                                     A()————→ A(正)?                                            A()————→ A(滤)?

                                           0    ————→ 0                                                     255(即1)————→ 255(即1)


                                            A(正)= 2*A
                                                               A(滤)= 2*(A-0.5)

    分别带入正片叠底公式 C  =  [    1     -   n(1 - 2*A)         ]  *   B   
    和滤色公式               1-C =   [    1      -  n*2*(A-0.5)      ]*(1-B)


    通过这两个公式,你应该了解,2作用的是谁,还有就是n作用的位置   
    引用:
    叠加模式
    说一句叠加模式,和强光模式的公式一样,就是公式的作用域不同,强光作用全体基层,但是根据强光的值,作用方法不一样。叠加只作用于一半色阶,基层各占一半,但是你会发现,本来到了混合层的128值,左边的正片叠底部分不应该在向上加了,因为正片叠底的最大值就是基层自己,但是叠加模式却还会往上加,这应该可能算是被另一半连累的缘故吧,到底怎么解释这里我也说不清楚。
                        
    叠加模式                                                             强光模式
    引用:
    柔光模式
    说道柔光模式,先说一个概念,那就是中间值,给出中间值的公式是
    Y(变化后色阶百分比)=X(1/n)(指数)
    再来说柔光模式,柔光模式就是利用上层的影响值(暗部或亮部)来影响下层的原始色阶B到中间值的一个调节,先给出公式
    B-C   = n*   (1-2A)* (B-B2) (A<0.5)
    C-B   = n*   (2A-1)* (厂B - B) (A>0.5)
    1-2A和2A-1 也是由于像强光模式那样映射的关系来映射的。
    这个公式可以理解为B到B2 或是 厂B 的距离被A来控制,也可以理解为亮度和暗度,但是这里边亮度和暗度的总和就不是1而是B了,所以第一种方式好理解,N还是控制影响度的控制度。
    引用:
    强光
    有了以上的叠加类模式的意义,强光就很好理解了,以A层的128为分界点进行B层颜色加深和减淡的控制,

    颜色加深         128(0.5)(无作用点)——→  255(1)     颜色减淡         128(0.5)(无作用点)——→ 0
    部分                      A(亮)   ——→ A(加深)                                         A(亮)——→ A(减淡)
                                           0——→ 0                                                           255(1)——→255 (1)
                                 2A()=A(加深)                                                   2(A-0.5)=A(减淡)
    带入公式                                                    1
                                   1-C   =  ——————————————— *(1-B)                (A<0.5)
                                                              1  -  n * (1  -2A)
                                                                      1
    以及                       C  = ———————————————— *B        (A>0.5)
                                                              1 - n*2*(A-0.5)
    引用:
    线性光
    根据映射和线性公式得到
    1-C = n*(1-2A)+(1-B)       A<0.5
        C=n*2*(A-0.5)+ B             A>0.5
    引用:
    点光
    和变亮变暗一样,先比较在应用填充不透明度
    引用:
    颜色类混合模式
    这类模式相同于变亮变暗,作为一个单独图层,与B层进行取舍,同样是先进行混合,最后的结果在进行不透明度的计算,与不透明度的意义相同。
    引用:
    差值
    要是理解为单独的图层和B层进行比对,那么n的意义就是不透明度了,但是从公式来分析并不是这样,其实也要理解为用A层来控制B层的色阶。
    公式=丨nA-B丨
    而不透明度的公式是
    C=t*丨A-B丨+(1-t)*B

    y有待编辑,委婉戴旭.....

  • 相关阅读:
    Python电影投票系统
    Python打印一个等边三角形
    打印正直角三角形
    MySQL指令
    MySQL安装 8.0.15版本
    局部变量 全局变量
    目录
    格式化输出
    转义字符
    ffmpeg 从内存中读取数据(或将数据输出到内存)
  • 原文地址:https://www.cnblogs.com/lanye/p/3857864.html
Copyright © 2011-2022 走看看