最爱小鸭吧 关注:22贴子:2,455
  • 13回复贴,共1

如何制作幻影坦克?

只看楼主收藏回复

需要2张灰度图,分别称为表图和里图。
目标:生成一张半透明的混合图,使之在白底下显示为表图,在黑底下显示为里图。
预备内容:
1)记全黑为0,全白为1
2)引入透明度α,完全不透明为0,完全透明为1
3)当显示一张透明度为α的图时,其真正显示为:图×α+背景×(1-α)
推导:
由上述内容可知:
混×α+1×(1-α)=表
混×α+0×(1-α)=里
故有:α=1+里-表,混=里/α
结论:
α=1+里-表
混=里/α
注意:
1)里图亮度必须小于表图(即灰度更小),因为α定义在[0,1],若里>表,会导致α溢出
2)一般将表图亮化(增大灰度),里图暗化(减小灰度),直接将灰度乘上一个合适的常数即可
3)当表图为纯白时,可以无损地隐藏里图


IP属地:浙江1楼2022-10-07 15:36回复
    字词lz!


    IP属地:甘肃来自iPhone客户端2楼2022-10-07 18:31
    收起回复
      若不会做•请骂`刘!


      IP属地:加拿大来自Android客户端3楼2022-10-11 15:22
      回复
        此楼不删。


        IP属地:加拿大来自Android客户端4楼2022-10-12 10:00
        回复


          IP属地:浙江来自Android客户端5楼2022-10-17 10:27
          回复
            学到了


            IP属地:江苏来自Android客户端6楼2022-10-17 16:49
            回复
              更正:透明度α,完全透明为0,完全不透明为1


              IP属地:浙江来自Android客户端7楼2023-02-09 20:10
              回复
                接下来讲讲全彩幻影坦克。需要注意的是,本贴所讲的全彩幻坦实现效果比较糟糕。
                首先讲一下不考虑表图,仅考虑最大程度保护里图的情况。
                由上文给出的两个式子:
                混×α+1×(1-α)=表
                混×α+0×(1-α)=里
                我们可以知道:表=里+1-α≤1
                于是有:α≥里
                对于一张RGB的全彩图片的每个像素点,我们有3种颜色分量,而只有一个Alpha通道,因此我们有如下限制:
                α≥MAX(里.R,里.G,里.B)
                而我们对于α的定义为完全透明为0,完全不透明为1,因此我们希望α尽可能小,来尽可能增大背景对显示效果的影响,使得混合后的图片与里图的显示效果尽可能不一致
                由此我们得出结论:
                α=MAX(里.R,里.G,里.B)
                注意:
                1)本方法生成的图片,表图比较精神污染
                2)如果图片的颜色过于鲜艳,那么生成的效果不好
                3)主要用于发瑟图(bushi),在QQ群实测可行


                IP属地:浙江来自Android客户端8楼2023-02-09 20:10
                收起回复
                  骂·刘^


                  IP属地:浙江来自iPhone客户端9楼2023-02-10 16:46
                  回复