Alpha 通道的概念与功能

RGBA
        采用的颜色是RGB,可以属于任何一种RGB颜色空间,但是Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。
        alpha通道一般用作不透明度参数。如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。在0%和100%之间的值则使得像素可以透过背景显示出来,就像透过玻璃(半透明性),这种效果是简单的二元透明性(透明或不透明)做不到的。它使数码合成变得容易。

        alpha通道值可以用百分比、整数或者像RGB参数那样用0到1的实数表示。有时它也被写成ARGB(像RGBA一样,但是第一个数据是alpha),是Macromedia的产品使用的术语。比如,0x80FFFF00是50%透明的黄色,因为所有的参数都在0到255的范围内表示。0x80是128,大约是255的一半。PNG是一种使用RGBA的图像格式。

扩展RGBA理解编辑
        我对Alpha通道的认识还是主要局限于应用和操作,或者说基于软件,浮于表面。直至今天看到Alvy Ray Smith的《Alpha and the history of digital compositing》一文,才算比较深入的理解了Alpha通道及其相关概念。要理解Alpha通道,还要追溯其产生和应用的渊源,只有这样,才可更深层的理解Alpha通道。否则如果舍本逐末,必然导致一知半解,这也是学习其他知识时的大忌。
       看过Alvy Ray Smith的这篇论文,我才知道,原来Alpha通道的产生是伴随着卢卡斯电影工作室的发展而诞生的,而Smith本人就是Alpha通道的发明人之一。所以Alpha通道的诞生和数字影视合成密不可分。

       下面我将论文中有关Alpha通道的主要知识点概括一下。
       要理解Alpha通道,首先来看看他们为何要发明Alpha通道这一概念。在电影工业中,常常需要前景和背景合成,无论是传统胶片电影还是现在的数字电影,合成都是必须的。那么在数字电影出现之前,从事传统胶片电影制作和合成的人们积累了大量的传统合成经验,例如蓝屏、Matte Creation等。
       随着计算机图形学的发展,后来出现了数字电影。这样人们开始通过电脑来模拟传统电影合成的一些技巧,如蓝屏、Matte、Mask等,但这些并没有为数字合成真正的作出贡献,只不过是将化学、光学操作转换为计算机计算而已,虽说可以比传统的合成操作有所提高,但基本概念没有改变。
       首先区分一下Matte和Mask。可以这么说,Mask是Matte的一种特例。在Mask里,只有两种透明度,1和0,即完全透明和完全不透明。Mask的产生是为了去除合成时的锯齿而设计的,但锯齿没了,不过合成痕迹太明显,显得很不真实。而Matte则可以包含很多层次的透明度,图像中每个像素都可以有自己的透明度,这些像素的透明度有着丰富的层级,可以合成、融合。
       Alpha通道的产生是对数字合成的一大贡献。为什么这么说呢?在传统电影合成操作中,为了制作Matte,通常需要两盘独立的胶片,一盘记录运动影像,一盘则记录Matte信息。合成时,需要背景胶片、前景胶片、Matte胶片。也就是说Matte信息和图像信息独立存在。而Catmull / Smith小组开发的Alpha通道概念就方便了很多,而且可以让任何人使用Alpha通道。他们首次推出RGBA概念,即将Alpha通道和RGB通道并列,并一同存储在图像信息中。这样随着一幅图像的建立(这里说的是CGI),其Alpha通道也会随之产生或者存储。这样Alpha通道其实是Matte的概念,但它和图像信息一并存储和移动,这样Matte信息就变成影像的一部分,而不像传统电影合成时,需要单独的一盘胶片提供Matte信息,这也是RGBA的优势所在。有了RGBA的概念,数字合成变得更加轻松容易。当然为了提高合成效率,后来Catmull / Smith小组又在Integral Alpha 的基础上提出Premultiplied Alpha,这里就不再细说了



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ValueError: Target is multiclass but average=‘binary‘. Please choose another average setting, one 】

完整报错为:ValueError: Target is multiclass but averagebinary. Please choose another average setting, one of [None, micro, macro, weighted]. 解决方法 对于多分类任务,将 from sklearn.metrics import f1_score f1_score(y_test, y_pred) 改为…

debian apt-get联网安装mysql服务

安装mysql和卸载mysql 1.安装数据库:sudo apt-get install mysql-server 安装过程中需要设置密码。 2.安装客户端:sudo apt-get install mysql-client 3.登录MySQL:mysql -u root -p 4.配置文件:/etc/mysql/my.cnf a.设…

【资料下载区】【iCore、 iCore2相关资料】更新日期2017/1/11

【新产品发布】【iCore2 ARM / FPGA 双核心板】 【iCore系列核心板视频教程】之 SDRAM 读写实验 【iCore双核心组合是开发板例程】【uCGUI 例程及代码包下载】【iCore双核心组合是开发板例程】【12个 verilog 中级实验例程发布】【iCore、iCore2 双核心板】EPCS 实验&#xff0…

图像数据格式基础知识

JPEG文件格式简单分析 作者:小爽 摘要: 这篇文章大体上介绍了JPEG文件的结构信息以及它的压缩算法和编码方式。使读者能够对JPEG文件格式有大体上的了解。为读者进一步进行学习JPEG文件压缩做好准备 关键字:十六进制,段格式&am…

SQL语句:从一个表里按年份统计条目数

比如一个数据表名称叫deploypool, 需要知道里面每一年的记录数, 而add_date字段里有增加记录时的时间, 那么语句如下: SELECT EXTRACT(YEAR from add_date),COUNT(id) FROM deploypool GROUP BY EXTRACT(YEAR from add_date);

为什么需要架构图,怎么画?

Technorati 标签: 架构图,架构,交流,布局不知不觉中做架构师也已经4年了,最初的感觉只是一个名号,不再把代码作为强制的任务,后来开始慢慢的转变工作内容。画图,成为了我的主要工作。我可能不是每天都在写代码,但却是每…

Jenkins构建时间Poll Scm的设置(常用设置)

每15分钟构建一次:H/15 * * * * 或*/5 * * * * 每天8点构建一次:0 8 * * * 每天8点~17点,两小时构建一次:0 8-17/2 * * * 周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5 每月1号、15号…

图像格式基础

所谓位映像,即是指一个二维的像素矩阵,而位图就是采用位映像方法显示和存储图像。一幅图像的显示就是将图像的像素映射到屏幕的像素上并显示一定的颜色。当一幅图形的像素由彩色表示时就是我们通常所说的彩色图像了。 由于数字图像可以表示为矩阵…

aop理解

1.切面(Aspects)常常通过通知(advice)、切点(pointcuts)和织入点(join points)来描述 2.通知(advice)有5种 Before——前置通知,在调用目标方法之…

Php 与 Json

PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json,$flag)函数:把一个JSON格式的字符串转化为数组或对象 $flag :true,代表转…

docker supervisor + compose

一: Supervisor Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面…

AngularJS(1)——入门学习

AngularJs相关概念 在w3schools中针对AngularJs的介绍为: AngularJS extends HTML with new attributes. AngularJS is perfect for Single Page Applications (SPAs). ProAuditObject ProAuditObj1 new ProAuditObject(); ProAuditObj1.setLproid(proId); Pr…

C# 字符,字符串和文本处理。

1. 字符: 在.net中 字符是表示成16为Unicode代码值。每个字符都是System.Char结构(一个值类型)的实例。 public class StringTempte{public static void GetChar(){double d;d char.GetNumericValue(\u0033);Console.WriteLine(d.ToString()…

opencv2.2.0源代码(include文件)分析

由于openCV2.2.0源文件很庞大,这里我只分析openCV2.2.0文件组织结构的各个模块的include文件(重点分析各个模块下引用的算法和实现的功能),而不是src文件。这里分析各个模块有助于更好的从整体把握和理解openCV2.2.0。这里只是自己…

【pyqt5学习】——tableWidget学习

设置单元格列宽 self.tableWidget.setColumnWidth(0,200) 设置第一行和表头之间的表格线 self.tableWidget.horizontalHeader().setStyleSheet("QHeaderView::section{background:skyblue;color: black;}")

SUSE团队已将重心偏向GCC 7

2019独角兽企业重金招聘Python工程师标准>>> SUSE的Andreas Jaeger在博客中发表了一篇关于SUSE Linux Enterprise Server 12操作系统更新工具链以及它所带来的新开发工具的博文。文章指出,随着GNU Compiler Collection 7的发布,GCC团队为开发…

eclipse-连接TFS错误 the server to respond with a valid http response解决方法

解决办法 如果普通凭证有多个,则将普通凭证给删除。 转载于:https://www.cnblogs.com/nidongde/p/6277243.html

Mysql源码安装

首先去http://dev.mysql.com/downloads/mysql/5.6.html 下载mysql的源代码,记住是source code,别下别的版本 1.安装依赖的包 yum -y install cmake gcc-c bison ncurses ncurses-devel 2.创建mysql的安装目录及数据库存放目录 mkdir -p /usr/local/mysql…

PDB文件:每个开发人员都必须知道的

一 什么是PDB文件 大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的。但是他究竟是如何工作的呢,我们可能并不熟悉。本文描述了PDB文件的存储和内容。同时还描 述了debugger如何找到binay相应的PDB文件,以及debugger如何找到与binay对应的源代码…

【pyqt5学习】——graphicView显示opencv图像

imgpath "result.jpg"img cv2.imread(imgpath) # 读取图像img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换图像通道x img.shape[1] # 获取图像大小y img.shape[0]self.zoomscale 1 # 图片放缩尺度frame QImage(img, x, y, x * 3, QImage.Format_RGB888)…