☞ ░ 前往老猿Python博文目录

Alpha预乘(Premultiplied Alpha)和PRGBA

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

  1. 由于对有Alpha通道的图片进行合成处理时,先要获取原始图像RGB的值,这个原始图像真正的RGB值必须考虑Alpha通道,因此会进行一次计算:源图像像素颜色 X alpha。如果这种计算都在合成时进行处理,性能处理压力就会集中在合成阶段;
  2. 在图像合成时,有时需要进行插值处理,即根据两个图像的差异,采用插值计算来生成一个或多个中间图像,这种插值一般都是以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》。

更多图形图像处理术语请参考《图像处理术语解释:图像的灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA概念以及Premultiplied Alpha(Alpha预乘)等基础概念详解》。

跟老猿学Python、学5G!

☞ ░ 前往老猿Python博文目录

图像处理术语解释:什么是PRGBA和Alpha预乘(Premultiplied Alpha )的更多相关文章

  1. 图像处理术语解释:灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA以及Premultiplied Alpha(Alpha预乘)等基础概念详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 由于老猿以前没接触过图像处理,在阅读moviepy代码时,对类的有些处理方法代码看不懂是什么含义,为此花了4天时间查阅了大量资料,并加以自己的理解和 ...

  2. 图片Alpha预乘的作用[转]

    Premultiplied Alpha 这个概念做游戏开发的人都不会不知道.Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alp ...

  3. [转]图片Premultiplied Alpha到底是干嘛用的

    Premultiplied Alpha 这个概念做游戏开发的人都不会不知道.Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alp ...

  4. Spring AOP术语解释

    话说,越来越感觉有些人解释概念真的是晦涩难懂,我刚开始学习Spring aop时,对那些切入点,连接点,引入等概念搞得头疼.太多人就直接照搬定义,让我们这些初学者如何理解啊.下面是我找了大量的博客,终 ...

  5. k8s~术语解释

    文章参考:https://www.kubernetes.org.cn 简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简 ...

  6. 【SSO单点系列】(6):CAS4.0 单点流程序列图(中文版)以及相关术语解释(TGT、ST、PGT、PT、PGTIOU)

    CAS 相关的内容好久没写了,可能下周会继续更新一些内容吧. 在上一篇中的单点流程序列图由于是从官网直接下载来的,上面都是英文,可能有的朋友看不懂,因此修改成中文的. PS:只修改了一个,第二个图明天 ...

  7. 【java】 field 和 variable 区别及相关术语解释

    Having said that, the remainder of this tutorial uses the following general guidelines when discussi ...

  8. Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩

    Listening-lecture: Major topic: SP1---detail---detail---detail SP2---detail---detail---detail Crash ...

  9. alpha预乘

    将(r,g,b,a)变为(r*a,g*a,b*a,a)的操作称为alpha预乘. 对于alpha预乘的图片,应使用(One,OneMinusSrcAlpha)进行混合. 使用alpha预乘方式混合出来 ...

随机推荐

  1. SQL service 数据插入

    目的:实现对数据库XDSA中表S72.C72.SC72的数据插入 1.构建数据库 2.构建表 3.插入数据 插入数据语句: ① 命令: INSERT INTO TableNameVALUES('值', ...

  2. iOS开发 objective C 代码布局

    代码布局抛弃storyboard,用代码生成界面,它的优劣不谈 首先在项目设置中,更改应用的"入口" 不选main,清空它 然后在AppDelegate.m中,更改(添加内容),别 ...

  3. gitlab - 解决添加webhook提示Url is blocked: Requests to the local network are not allowed的问题

    问题背景 给项目添加 webhook 保存之后报错了 解决方案 进入 admin  area 进入 settings-network 保存设置后,重新进入项目并设置 webhook 保存即可成功

  4. Java的图形打印

    1.菱形 复制代码 package Java_Learn.File; public class Main1 { public static void main(String[] args) { pri ...

  5. 模块化-CommonJs、AMD、CMD、ES6

    在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理.模块化是一种处理复 ...

  6. high Performance

    目的 找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈): 提供性能优化的方案(升级硬件?改进系统系统结构?): 达到合理的硬件和软件配置: 使系统资源使用达到最大的平衡. CPU过渡使用会造成大量进程等待C ...

  7. sql sever 2008基础知识

    下面是一些总结,如果执行时发现错误,可以查看错误消息进行解决,也可上网查资料 数据库的组成: 主数据文件:有且只有一个,扩展名为.mdf. 次数据文件:可以没有,也可以有任意个.扩展名为.ndf. 日 ...

  8. Python_微信开发

    <!-- 发消息功能 --> 0.微信开发的2个库 pip install werobot pip install 1.新建项目 2.项目下新建 robot 的app 3.写robot.p ...

  9. Django启动服务的流程

    我晕,启动个服务浪费快一个小时的时间,记录下步骤吧. 1.D:\django\newworld>python manage.py runserver Performing system chec ...

  10. [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)

    简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escap ...