一、描述

所有内容摘自维基

在处理图象时可能需要手撸图片混合的代码,此时混合公式就十分重要。而正常混合(Normal Blending)模式是最常用的一种格式(比如PS的默认图层混合模式)。想手动实现时却发现搜“正常混合”搜不出结果,因此写一篇文章增加后来人的搜索命中率。

“正常混合”是什么?
顾名思义,就是上层图片覆盖下层图片。从感官上,上层的颜色不应该被下层影响。

比如A覆盖B:

  • 当两张图片完全不透明时A的像素取代B的像素。
  • 而A、B非不透明时,透明度则在此次混合中起关键作用。
    因此“正常混合”其实实质是“透明度混合(Alpha Blending)

二、公式

1.一般公式

透明度混合公式由Thomas Porter和Tom Duff定义

设A覆盖B
C表示Color(不包括不透明度通道)
α表示不透明度通道
下标A,B,O分别表示上层图像、下层图像、覆盖后图像
则对透明度有:
αo=αa+αb(1−αa){\displaystyle \alpha _{o}=\alpha _{a}+\alpha _{b}(1-\alpha _{a})}αo​=αa​+αb​(1−αa​)
或者写成更常见的另一种形式:
αo=1−(1−αa)∗(1−αb){\displaystyle \alpha _{o}=1-(1-\alpha _{a})*(1-\alpha _{b})}αo​=1−(1−αa​)∗(1−αb​)
对颜色通道有:
Co=Caαa+Cbαb(1−αa)αo{\displaystyle C_{o}={\frac {C_{a}\alpha _{a}+C_{b}\alpha _{b}(1-\alpha _{a})}{\alpha _{o}}}}Co​=αo​Ca​αa​+Cb​αb​(1−αa​)​

2. 下层完全不透明情形

网上更多的是这种情况,虽然形式更简单了,但事实上这个只在下层为完全不透明时适用
令αb\alpha_{b}αb​为1,则有:
αo=1{\displaystyle \alpha _{o}=1}αo​=1
Co=Caαa+Cb(1−αa){\displaystyle C_{o}={C_{a}\alpha _{a}+C_{b}(1-\alpha _{a})}}Co​=Ca​αa​+Cb​(1−αa​)

3.当颜色为“预乘透明度”的情形

当颜色为 预乘透明度(premultiplied alpha) 时,它的颜色通道预乘了α通道的值。
具体含义不在此展开,只给出此情形的透明度混合公式:
αo=αa+αb(1−αa){\displaystyle \alpha _{o}=\alpha _{a}+\alpha _{b}(1-\alpha _{a})}αo​=αa​+αb​(1−αa​)
Co=Ca+Cb(1−αa){\displaystyle C_{o}=C_{a}+C_{b}(1-\alpha _{a})}Co​=Ca​+Cb​(1−αa​)

图片正常模式混合(透明度混合)公式相关推荐

  1. unity物体设置透明度_URP自学笔记5. 透明度混合与透明度测试

    1.概述 本节中我们回顾一下两种透明方法,透明度混合与透明度测试.透明度混合用于实现半透明,透明度测试则用于实现消融效果之类"消失"效果. 2.透明度混合 透明度混合是一种混合方式 ...

  2. unity 半透明混合问题_Unity Shader 透明度混合的双面渲染(十八)

    效果: 双面渲染的透明度混合的物体.png 原图: transparent_texture.png Shader代码: Shader中2个Pass代码一样,一个只渲染背面,一个只渲染正面 // 透明度 ...

  3. RGBA alpha 透明度混合算法实现和测试

    目录 1.算法叙述 1.1.透明度混合算法1 1.2.AlphaBlend算法介绍 1.3.简易Alpha混合算法 2.算法实现代码和测试 2.1.透明度混合算法1实现代码 2.1.AlphaBlen ...

  4. unity物体设置透明度_透明度混合(Alpha blending)

    文章目录 前言 一.混合模式 1.说明 2.常用公式 二.问题 总结 参考 前言 本文介绍unity渲染中的透明度混合,和透明度混合相关问题. 一.混合公式 1.说明 unity上,Blend Src ...

  5. Unity_Shader学习笔记_02_透明度测试,透明度混合,半透明.shader入门精要

    关于透明度测试,主要是通过clip函数来实现裁剪功能 函数:void clip(float4 x);void clip(float3 x);void clip(float2 x);void clip( ...

  6. 计算机excel混合引用,Excel公式填充:绝对引用混合引用要分清

    原标题:Excel公式填充:绝对引用混合引用要分清 上次的教程,给大家留了一道题,下面给大家分析一下这道题. 瓶子看了大家的留言,大家的公式普遍存在一个小问题:每一个嵌套的IF函数的第一参数都用了AN ...

  7. 8.2透明度混合-关闭写入

    //透明度混合 //使用当前偏移的透明度作为混合因子,与已经存储在绿色缓冲中的颜色进行混合.得到颜色. //使用混合命令Blend //可以得到真正的半透明效果 //关闭深度写入会造成错误排序的情况 ...

  8. 【Unity Shader】实现透明度测试和透明度混合

    本篇开始将进行<入门精要>初级篇最后一部分的学习,完成透明效果的学习. 1 Unity中实现透明效果的方法 一个像素的RGBA参数中的最后一项A指的就是透明度Alpha.在之前的实践中,一 ...

  9. unity shader学习---透明度测试,透明度混合

    unity实现透明效果 效果图 理论 Alpha Test Alpha Blend 改进 开启深度写入的半透明效果 双面渲染的透明效果 代码部分 效果图 Alpha Test Alpha Test W ...

最新文章

  1. mail 发送email
  2. 判断链表中是否有环(环形链表)
  3. 线上讲座丨罗杰:前沿——NISQ时代下的工程超导量子计算机
  4. 2021年,作为算法工程师的你们会在CV业务落地上用Transformer吗?
  5. java中引导页面的,Android实现欢迎引导页面
  6. 互联网研发中负载均衡算法一点探索
  7. 【Java】5.4 隐藏和封装
  8. python 列表推导_说说在 Python 中如何使用列表推导
  9. Linux---单例模式
  10. 面对疾风吧!io_uring 优化 nginx 实战演练
  11. requests 超时关闭_requests获取响应时间(elapsed)与超时(timeout)
  12. 随笔记----关于python 和C++ 里面的与或问题
  13. 倍福TwinCAT3中控制台达A2伺服使用
  14. 史上最全VPS+云服务器运维面板汇总(收藏)
  15. ARM的九种寻址方式
  16. 【Python计算机视觉】图像到图像的映射(单应性变换、图像扭曲)
  17. sealos2.0使用教程,最简单kubernetesHA方案
  18. JSR303注解字段校验
  19. 使用oschina的git服务器
  20. windows和linux之间的共享目录,实现Windows和Linux之间的文件共享

热门文章

  1. 极值、凹凸性、导数关系
  2. 限制性与非限制性定语从句区别
  3. 对美国新生儿取名的几个数据分析自命题(一)
  4. Android 音乐播放器开发之 maven() { url “https://maven.google.com“} 报错
  5. 快餐刷卡消费之触摸屏实现(含关键源码)
  6. 前端入门学习笔记六十七
  7. 119年神灯观看地址
  8. CCAI 2017 | 刘燕:艺术与人工智能的明天——人机信任合作
  9. 破军(云集初始团队长,达令家操盘执行)的人生经历,没有人可以随便成功。
  10. 特征值和特征向量的几何意义、计算及其性质(转载)