两个50%透明的颜色叠加等于百分之多少透明?为什么?不断叠加是否能得到一个100不透明的颜色?
【Cascade的回答(120票)】:
Alpha通道一般在计算合成图像中使用,比如当要表现一幅图盖在另外一幅图上面的时候。这样在计算最终表现出来的颜色时,需要考虑Alpha通道和相互间的覆盖关系,也就是说哪个是前景色哪个是背景色,谁盖在谁上面。
计算合成图的Alpha值,根据的就是@祝博韬 所提供的公式。他回答了第一个问题,也就是两张50%Alpha的图像合成出来的图像Alpha值是75%。我们可以看看重复多次这样的操作会怎样。
这里是重复二十次的结果。
可以看到第十次时,得到的Alpha已经是99.95%了。你把每次得到的Alpha值组成一个数列的话,这个数列的极限就是100%。你把前面那个公式化简一下,把每次的50%带入的话,它是这样子的:
由于一般计算机用8bit存储这个Alpha值,它的值只有0-255一共256种。我们把前面的结果乘以255后取整,就能得到:
从第八次以后,Alpha就全是255了。也就是从第八次以后,Alpha就全是255了。也就是@刀小小的答案中,8次叠加达到不透明的效果。
计算具体合成后的颜色和计算Alpha不大一样。在计算Alpha时,哪个是前景哪个是背景没什么关系。公式里面
和
是可以互换的。我们用a表示前景,b表示背景,o表示最终结果的话。
Alpha值为:
则色彩值
这里面互换
和
显然是不行的。
比如半透明红色(ARGB:127,255,0,0)和蓝色(ARGB:127,0,0,255)在黑色背景(ARGB:255,0,0,0)上叠加。如果红色在前,则颜色为:
ARGB:255,127,0,64
如果蓝色在前,则为:
ARGB:255,64,0,127ARGB:255,64,0,127
前后顺序不同,最终颜色也不同的。
【祝博韬的回答(5票)】:
把
代入
,可以得到
【刀小小的回答(11票)】:
在目前的绘图软件上用50%透明度颜色叠加可以产生100%不透明颜色。下面是测试,我用了PS来做:
在颜色系统当中,对颜色最简单的表达方式就是用RGB作标识。
R:红色分量(范围值0~255)
G:绿色分量(范围值0~255)
B:蓝色分量(范围值0~255)
最正的绿色,RGB值为(0,255,0)
如下图,不透明度100%
那么50%透明度的正绿色如下:
可以看出,RGB还是为(0,255,0)。虽然透明度改变50%,并没有改变RGB三个颜色在绿色中的分量。所以RGB值没有改变。
但以上图中两个圆圈用眼睛分辨,明明不是一个颜色,第二个颜色明显比第一个淡很多,对吧?所以我给加入白色底色,白色RGB(255,255,255),使眼睛给我们的反馈与数据一致,以更明显方便的看到颜色变化。
那么50%透明度的正绿色,在加入白色底色后才是我们眼睛看到的淡绿色圆圈。这时圆圈的RGB为:(127,255,127),绿色分量没变化,但蓝色分量和红色分量各增加了127。
两个透明度为50%的绿色相加的RGB值为(63,255,63)
R与B的值在第3个圆覆盖时为31
R与B的值在第4个圆覆盖时为15
R与B的值在第5个圆覆盖时为7
R与B的值在第6个圆覆盖时为3
R与B的值在第7个圆覆盖时为1
R与B的值在第8个圆覆盖时为0
8次叠加50%透明度的绿色,哒哒哒,再撤掉白色底色,就是我们要的100%不透明绿色!
以上!-----------------------------
【吕岭立的回答(2票)】:
恭喜题主理解了极限理论的真谛。
一尺之捶,日取其半,万世不竭。——庄子
【刘向明的回答(1票)】:
我觉得这个和软件有关系,理论上存在一种软件,让你永远也不会不透明,无论多少次。
但是从现实的角度来看,所有的计算机都在努力避免死循环,所以你肯定能够做到不透明,只是次数多少而已。
归根结底这是一个数学问题和逻辑问题。
【李春天的回答(0票)】:
两个50%叠加不是75%么
【许拉拉的回答(0票)】:
就概率论反向思维啊 若透明度为50%,则不透明度是(1-0.5)。无数次相乘也不可能是100%啊
【周忘的回答(0票)】:
我绝对这个理论不错
【赵杨的回答(0票)】:
现存的主流图像软件操作和编程实践得来的答案是可以叠加满的
原文地址:知乎
联系客服