图片正常模式混合(透明度混合)公式
一、描述
所有内容摘自维基
在处理图象时可能需要手撸图片混合的代码,此时混合公式就十分重要。而正常混合(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=αoCaα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)
图片正常模式混合(透明度混合)公式相关推荐
- unity物体设置透明度_URP自学笔记5. 透明度混合与透明度测试
1.概述 本节中我们回顾一下两种透明方法,透明度混合与透明度测试.透明度混合用于实现半透明,透明度测试则用于实现消融效果之类"消失"效果. 2.透明度混合 透明度混合是一种混合方式 ...
- unity 半透明混合问题_Unity Shader 透明度混合的双面渲染(十八)
效果: 双面渲染的透明度混合的物体.png 原图: transparent_texture.png Shader代码: Shader中2个Pass代码一样,一个只渲染背面,一个只渲染正面 // 透明度 ...
- RGBA alpha 透明度混合算法实现和测试
目录 1.算法叙述 1.1.透明度混合算法1 1.2.AlphaBlend算法介绍 1.3.简易Alpha混合算法 2.算法实现代码和测试 2.1.透明度混合算法1实现代码 2.1.AlphaBlen ...
- unity物体设置透明度_透明度混合(Alpha blending)
文章目录 前言 一.混合模式 1.说明 2.常用公式 二.问题 总结 参考 前言 本文介绍unity渲染中的透明度混合,和透明度混合相关问题. 一.混合公式 1.说明 unity上,Blend Src ...
- Unity_Shader学习笔记_02_透明度测试,透明度混合,半透明.shader入门精要
关于透明度测试,主要是通过clip函数来实现裁剪功能 函数:void clip(float4 x);void clip(float3 x);void clip(float2 x);void clip( ...
- 计算机excel混合引用,Excel公式填充:绝对引用混合引用要分清
原标题:Excel公式填充:绝对引用混合引用要分清 上次的教程,给大家留了一道题,下面给大家分析一下这道题. 瓶子看了大家的留言,大家的公式普遍存在一个小问题:每一个嵌套的IF函数的第一参数都用了AN ...
- 8.2透明度混合-关闭写入
//透明度混合 //使用当前偏移的透明度作为混合因子,与已经存储在绿色缓冲中的颜色进行混合.得到颜色. //使用混合命令Blend //可以得到真正的半透明效果 //关闭深度写入会造成错误排序的情况 ...
- 【Unity Shader】实现透明度测试和透明度混合
本篇开始将进行<入门精要>初级篇最后一部分的学习,完成透明效果的学习. 1 Unity中实现透明效果的方法 一个像素的RGBA参数中的最后一项A指的就是透明度Alpha.在之前的实践中,一 ...
- unity shader学习---透明度测试,透明度混合
unity实现透明效果 效果图 理论 Alpha Test Alpha Blend 改进 开启深度写入的半透明效果 双面渲染的透明效果 代码部分 效果图 Alpha Test Alpha Test W ...
最新文章
- mail 发送email
- 判断链表中是否有环(环形链表)
- 线上讲座丨罗杰:前沿——NISQ时代下的工程超导量子计算机
- 2021年,作为算法工程师的你们会在CV业务落地上用Transformer吗?
- java中引导页面的,Android实现欢迎引导页面
- 互联网研发中负载均衡算法一点探索
- 【Java】5.4 隐藏和封装
- python 列表推导_说说在 Python 中如何使用列表推导
- Linux---单例模式
- 面对疾风吧!io_uring 优化 nginx 实战演练
- requests 超时关闭_requests获取响应时间(elapsed)与超时(timeout)
- 随笔记----关于python 和C++ 里面的与或问题
- 倍福TwinCAT3中控制台达A2伺服使用
- 史上最全VPS+云服务器运维面板汇总(收藏)
- ARM的九种寻址方式
- 【Python计算机视觉】图像到图像的映射(单应性变换、图像扭曲)
- sealos2.0使用教程,最简单kubernetesHA方案
- JSR303注解字段校验
- 使用oschina的git服务器
- windows和linux之间的共享目录,实现Windows和Linux之间的文件共享
热门文章
- 极值、凹凸性、导数关系
- 限制性与非限制性定语从句区别
- 对美国新生儿取名的几个数据分析自命题(一)
- Android 音乐播放器开发之 maven() { url “https://maven.google.com“} 报错
- 快餐刷卡消费之触摸屏实现(含关键源码)
- 前端入门学习笔记六十七
- 119年神灯观看地址
- CCAI 2017 | 刘燕:艺术与人工智能的明天——人机信任合作
- 破军(云集初始团队长,达令家操盘执行)的人生经历,没有人可以随便成功。
- 特征值和特征向量的几何意义、计算及其性质(转载)