Alpha预乘(Premultiplied Alpha)和PRGBA

一般来说四通道图像数据保存的都是ARGB或RGBA,其R、G、B值还没有进行任何透明化处理,但这种格式在图像合成时会存在两个问题:

由于对有Alpha通道的图片进行合成处理时,先要获取原始图像RGB的值,这个原始图像真正的RGB值必须考虑Alpha通道,因此会进行一次计算:源图像像素颜色 X alpha。如果这种计算都在合成时进行处理,性能处理压力就会集中在合成阶段;

在图像合成时,有时需要进行插值处理,即根据两个图像的差异,采用插值计算来生成一个或多个中间图像,这种插值一般都是以RGB值进行插值计算,但带Alpha通道的图像RGB并不是最终显示颜色的RGB,因此这种插值可能效果不理想。

为了解决这个问题,在图像处理过程中引入了预乘 (premultiplied)这个概念,经过预乘处理的图像格式就称为PRGBA。预乘的算式是NewR=OldR*Alpha,Alpha取值为0-1(如果为0-255,除以255即可),保存的数据通常称为(ar,ag,ab,a),这样PRGBA格式的像素四通道值保存了真正展现时的像素RGB值,又保存了Alpha通道的值,既解决了前面说的两个问题,又可以还原原始RGBA数据。

PRGBA这个表示方法,由于预乘后保存的值是整数,会丢失小数点后的数值,很大可能引入误差,特别是RGB值本身很小Alpha很大的情况下,这个误差可能会比较大。

关于阿尔法通道、RGBA的更多内容请参考《图像(层)正常混合模式详解(上)》、《百度百科-RGBA》。

跟老猿学Python、学5G!

python中alpha是什么意思_图像处理术语解释:什么是PRGBA和Alpha预乘(Premultiplied Alpha )...相关推荐

  1. python中五种下划线 _

    python中五种下划线 "_" 单前导下划线:_var 单末尾下划线:var_ 双前导下划线:__var 双前导和末尾下划线:var 单下划线:_ 在文章结尾处,你可以找到一个简 ...

  2. property field java_Java 中 field 和 variable 区别及相关术语解释

    原标题:Java 中 field 和 variable 区别及相关术语解释 先说一下 field 和 variable 之间的区别: class variables and instance vari ...

  3. python中的列表和元组_百度资讯搜索_python中的列表和元组

    腾讯网 11小时前# 元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成.元组是一个有序列表,序列中的每个元素都分配一个数字(...百度快 ...

  4. python中脚本是指什么_【学习猿地】初识python脚本 #千万别看,我怕你控制不住...

    >编写python程序的文件,称为python的脚本或程序 >要求当前的python脚本的文件后缀名必须是.py #### pycharm使用注意 > 需要明确的知道你当前pycha ...

  5. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  6. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  7. python中二进制和文本不同_关于Python字符编码与二进制不得不说的一些事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...

  8. python中sub是什么意思_相当于Python中R的sub和paste(字符串和数字的连接)

    以前,在R中,我使用sub和paste将字符串和数字连接在一起. 我发现Python有点难.下面是Python中的示例代码import pandas as pd from numpy.random i ...

  9. python中的符号下划线_详解Python中下划线的使用方法

    编程派微信号:codingpy 这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线 _ 的不同用法绝大部分(不全是)都是一种惯例约定. 单个下划线(_) 主要有三种情况: ...

最新文章

  1. java.lang.IllegalArgumentException异常处理的一种方法
  2. 分布式系统的架构思路
  3. 图解MySQL 内连接、左连接、右连接
  4. 二进制搜索树_数据结构101:二进制搜索树
  5. Bootstrap框架学习
  6. centos7中firewall防火墙命令详解
  7. [PTA练习] 愿天下有情人都是失散多年的兄妹(25分)
  8. 浅聊矢量场 —— 3. 什么是旋度(Rotational Vector)
  9. 第5-6课:关键路径算法
  10. Ansible#Typora-Ansible笔记
  11. jq click()方法无反应?
  12. 公众号 自动生成海报 python_Python 生成公众号头图 1.0
  13. MySQL数据库技术
  14. HTML <ins> 标签
  15. OSChina 周二乱弹 —— 怎么制作妹子面
  16. 【包管理器】vcpkg
  17. phpMailer在本地可以发送邮件,服务器上不行
  18. 如何使用Node.js连接数据库
  19. 计算机专业能力提升,计算机专业学生能力提升的探索.pdf
  20. android 需要发布的应用市场

热门文章

  1. 【开源访谈】Kingshard 作者陈非访谈实录【项目简介】 Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQ
  2. ORCL安装、导出、导入
  3. forword和重定向有什么区别?
  4. Unity强化学习工具MLAgents
  5. 分布式事务数据一致性解决方案
  6. javascript 清除 服务端 php cookie,Javascript清除cookie的方法
  7. php高强度精密涂覆钢管,树脂涂覆复合钢管DN600
  8. win7下安装vs2008失败——解决方法
  9. 江西理工大学校歌吉他谱
  10. 如何让CMDB配置维护更贴近人性