有了Alpha通道,图片的合成操作就可以用合成代数(英语:Composition algebra)的形式表达。假设有图像元素 A 和 B,最常见的合成操作就是把 A 作为前景、B 作为背景,我们称这种操作(运算)为 over,记作 。除此之外,波特和达夫还定义了其它几个运算符:in、out、atop、xor:
^Porter, Thomas; Tom Duff. Compositing Digital Images. Computer Graphics. 1984, 18 (3): 253–259. ISBN 0-89791-138-5. doi:10.1145/800031.808606. (见 pixar.com. (页面存档备份,存于互联网档案馆))
^. tomforsyth1000.github.io. [8 May 2018]. (原始内容存档于2017-12-12).
^Wallace, Bruce A. Merging and transformation of raster images for cartoon animation. SIGGRAPH Computer Graphics (New York City, New York: ACM Press). 1981, 15 (3): 253–262. ISBN 0-89791-045-1. doi:10.1145/800224.806813.
二月 07, 2023
alpha合成, 在计算机图形学领域, 英語, alpha, compositing, 是一种将图像与背景结合的过程, 结合后可以产生部分透明或全透明的视觉效果, 也叫阿尔法合成或透明合成, 渲染图像时, 通常会将目标图像中的多个子元素单独渲染, 最后再把多张子元素的图片合成, 英语, compositing, 为单独的图像, 例如, 电视直播时就会将大量计算机生成的图像元素合成到现场镜头上, 这张图片的alpha通道中的值越往下越趋近于零, 要正确结合图像元素, 每个元素的必须有对应的遮片, 英语, matte,. 在计算机图形学领域 Alpha合成 英語 alpha compositing 是一种将图像与背景结合的过程 结合后可以产生部分透明或全透明的视觉效果 Alpha合成也叫阿尔法合成或透明合成 渲染图像时 通常会将目标图像中的多个子元素单独渲染 最后再把多张子元素的图片合成 英语 Compositing 为单独的图像 例如 电视直播时就会将大量计算机生成的图像元素合成到现场镜头上 这张图片的Alpha通道中的值越往下越趋近于零 要正确结合图像元素 每个元素的必须有对应的遮片 英语 Matte filmmaking 遮片包含覆盖范围信息 图中几何对象的形状 可以藉此分辨图像中的任意位置到底是被绘制的几何对象本身 还是逻辑上的 空白 区域 目录 1 描述 2 over 运算符的解析推导 3 Alpha混合 4 伽玛校正 5 参考资料描述 编辑为了保存遮片信息 匠白光提出了Alpha通道的概念 后由托马斯 波特 英语 Thomas K Porter 和汤姆 达夫 英语 Tom Duff 完善 1 二维图像里记录着每个像素的颜色信息 额外的信息以 0 和 1 之间的值表示 记录在Alpha通道里 0 表示该像素没有覆盖信息 是透明的 即图中的几何体没有覆盖到本像素 而 1 则表示像素不透明 几何体完全覆盖了此像素 图像中使用的Alpha通道通常有两种表示形式 平直Alpha 英語 straight alpha 和预乘Alpha 英語 premultiplied alpha 如果使用平直Alpha 图像中的RGB分量仅表示像素的颜色 与是否透明无关 如果使用预乘Alpha 图像中的RGB分量也表示像素的颜色 但事先已经和不透明度做了乘法 某些使用场景下 这样的做法可以在后续合成时节省一次乘法 不过预乘Alpha的最显著优势在于使用简单 准确而非性能 2 如果用平直的 非预乘 RGBA 元组表达像素颜色 那么像素值 0 0 7 0 0 5 表示像素有 70 的最大绿色亮度 同时不透明度是 50 同样条件下的纯绿色是 0 1 0 0 5 而如果用预乘Alpha 此处的 RGB 值 0 0 7 0 需要都乘以 0 5 表达为 0 0 35 0 0 5 虽然此处 G 通道的值是 0 35 但它表示的还是最大亮度的 70 其中包含了 50 的不透明度 此时的纯绿色则需要表达为 0 0 5 0 0 5 因此 了解图像 文件 到底使用的是平直Alpha还是预乘Alpha非常重要 只有这样才能对图像做正确的处理和合成 有了Alpha通道 图片的合成操作就可以用合成代数 英语 Composition algebra 的形式表达 假设有图像元素 A 和 B 最常见的合成操作就是把 A 作为前景 B 作为背景 我们称这种操作 运算 为 over 记作 A over B displaystyle A operatorname over B 除此之外 波特和达夫还定义了其它几个运算符 in out atop xor 运算符 over 的效果与普通绘画效果一致 见画家算法 运算符 in 则等价于裁剪 以运算符 over 为例 运算结果相当于对图像中的所有像素做以下公式 a o a a a b 1 a a displaystyle alpha o alpha a alpha b left 1 alpha a right C o C a a a C b a b 1 a a a o displaystyle C o frac C a alpha a C b alpha b left 1 alpha a right alpha o 其中 C o displaystyle C o 是运算结果 C a displaystyle C a 是图像 A 中的像素 C b displaystyle C b 是图像 B 中的像素 而 a a displaystyle alpha a 和 a b displaystyle alpha b 则分别是图像 A B 中对应像素的Alpha值 如果假设颜色值都是预乘了Alpha值的 c i a i C i displaystyle c i alpha i C i 那么我们就可以将等式进行改写 结果图像中的颜色即 c o c a c b 1 a a displaystyle c o c a c b left 1 alpha a right 结果中的Alpha值即 a o c o C o a a a b 1 a a displaystyle alpha o frac c o C o alpha a alpha b left 1 alpha a right over 运算符的解析推导 编辑通过研究正交覆盖 Porter 和 Buff 给出了 alpha 合成的几何解释 在 1981 年 Bruce A Wallace 的论文里则给出了另一种基于的反射率 透过率的物理模型的另一种推导 3 第三种推导方法通过使用两条简单的假设得到 为了简单起见 我们将 over 运算符简记成 a b displaystyle a odot b 第一条假设是当背景是不透明 即 a b 1 displaystyle alpha b 1 时 over 运算符表示前景颜色与背景颜色的凸组合 C o a a C a 1 a a C b displaystyle C o alpha a C a 1 alpha a C b 第二条假设是这种运算应该满足结合律 a b c a b c displaystyle a odot b odot c a odot b odot c 现在 可以假设 a displaystyle a 和 b displaystyle b 包含不透明度分量 而 c displaystyle c 不包含 考虑中间变量 o a b displaystyle o a odot b 由于结合律成立 有 o c a b c displaystyle o odot c a odot b odot c 由于 c displaystyle c 是不透明的 因此 b c displaystyle b odot c 也是不透明的 由第二条假设 在上面的式子中 上式地每个 displaystyle odot 运算都可以用凸组合表达 a o C o 1 a o C c a a C a 1 a a a b C b 1 a b C c a a C a 1 a a a b C b 1 a a 1 a b C c displaystyle begin aligned alpha o C o 1 alpha o C c amp alpha a C a 1 alpha a alpha b C b 1 alpha b C c amp alpha a C a 1 alpha a alpha b C b 1 alpha a 1 alpha b C c end aligned 这个式子的两边都满足 X 0 Y 0 C c X 1 Y 1 C c displaystyle X 0 Y 0 C c X 1 Y 1 C c 的形式 令 X 0 X 1 displaystyle X 0 X 1 且 Y 0 Y 1 displaystyle Y 0 Y 1 可以得到 a o 1 1 a a 1 a b C o a a C a 1 a a a b C b a o displaystyle begin aligned alpha o amp 1 1 alpha a 1 alpha b C o amp frac alpha a C a 1 alpha a alpha b C b alpha o end aligned 至此 我们推导出了 o a b displaystyle o a odot b 的颜色和其 alpha 分量的解析式 注意到 1 a a a b a o a a displaystyle 1 alpha a alpha b alpha o alpha a 这样 上式可以紧凑地表示成 C o a a a o C a 1 a a a o C b displaystyle C o frac alpha a alpha o C a left 1 frac alpha a alpha o right C b displaystyle odot 运算符满足非交换幺半群的定义 这个群的单位元 e displaystyle e 是所有满足 a 0 displaystyle alpha 0 的二元组 C a displaystyle langle C alpha rangle 这可以通过式子 e a a e a displaystyle e odot a a odot e a 得到 Alpha混合 编辑Alpha混合 英語 alpha blending 是将半透明的前景色与背景色结合的过程 可以得到混合后的新颜色 前景色的透明度不限 从完全透明到完全不透明都可以 如果前景色完全透明 混合后的颜色就是背景色 如果前景色完全不透明 混合后的颜色就是前景色 如果在这两种极端情况之间 混合后的颜色可以通过前景色和背景色的加权平均计算 Alpha合成后的颜色可以这样计算 o u t A s r c A d s t A 1 s r c A o u t R G B s r c R G B s r c A d s t R G B d s t A 1 s r c A o u t A o u t A 0 o u t R G B 0 displaystyle begin cases mathrm out A mathrm src A mathrm dst A 1 mathrm src A mathrm out RGB bigl mathrm src RGB mathrm src A mathrm dst RGB mathrm dst A left 1 mathrm src A right bigr div mathrm out A mathrm out A 0 Rightarrow mathrm out RGB 0 end cases 如果背景色不透明 即 d s t A 1 displaystyle dst A 1 代入上述方程后可以得到 o u t A 1 o u t R G B s r c R G B s r c A d s t R G B 1 s r c A displaystyle begin cases mathrm out A 1 mathrm out RGB mathrm src RGB mathrm src A mathrm dst RGB 1 mathrm src A end cases 如果使用了预乘Alpha 最初的方程组可以简化为 o u t A s r c A d s t A 1 s r c A o u t R G B s r c R G B d s t R G B 1 s r c A displaystyle begin cases mathrm out A mathrm src A mathrm dst A 1 mathrm src A mathrm out RGB mathrm src RGB mathrm dst RGB left 1 mathrm src A right end cases 伽玛校正 编辑 不考虑伽玛校正 直接做 Alpha 混合的效果 考虑伽玛校正 做 Alpha 混合的效果 计算机图像一般不直接存储光照亮度对应的 RGB 值 而是需要先对这些值做伽玛校正 伽玛校正的大致过程如下 设 d i s p l a y e d R G B displaystyle displayed RGB 为屏幕上显示的 RGB 亮度 标准化后的亮度值 在 0 和 1 之间 设 s t o r e d R G B displaystyle stored RGB 为计算机内存中所存储的 RGB 亮度 也是标准化后的亮度值 设 g displaystyle gamma 为用于 解码 s t o r e d R G B displaystyle stored RGB 图像的伽玛值 2 2 2 2 为 g displaystyle gamma 的典型取值 则它们三者之间的关系为 d i s p l a y e d R G B s t o r e d R G B g displaystyle displayed RGB stored RGB gamma 因此 在处理计算机图像的 RGB 值时 尤其是做 Alpha 混合时 可以在处理前先将伽玛校正消除 完成处理后再重新做伽玛校正 这样做的效果比直接处理伽玛校正后的 RGB 值要好 例如有一张图片 o v e r l a y r g b displaystyle overlay rgb 它对应的 Alpha 通道为 o v e r l a y a displaystyle overlay alpha 现在要把它叠加到背景图 b a c k g r o u n d r g b displaystyle background rgb 上 那么最终的图像 o u t r g b displaystyle out rgb 可以这样计算 o u t r g b o v e r l a y r g b g o v e r l a y a b a c k g r o u n d r g b g 1 o v e r l a y a 1 g displaystyle out rgb overlay rgb gamma times overlay alpha background rgb gamma times 1 overlay alpha 1 gamma 此处的 o u t r g b displaystyle out rgb 是计算机内存中所存储的数据 在计算机显示器上会以 o u t r g b g displaystyle out rgb gamma 的数据显示 参考资料 编辑 Porter Thomas Tom Duff Compositing Digital Images Computer Graphics 1984 18 3 253 259 ISBN 0 89791 138 5 doi 10 1145 800031 808606 见 pixar com 页面存档备份 存于互联网档案馆 TomF s Tech Blog It s only pretending to be a wiki tomforsyth1000 github io 8 May 2018 原始内容存档于2017 12 12 Wallace Bruce A Merging and transformation of raster images for cartoon animation SIGGRAPH Computer Graphics New York City New York ACM Press 1981 15 3 253 262 ISBN 0 89791 045 1 doi 10 1145 800224 806813 取自 https zh wikipedia org w index php title Alpha合成 amp oldid 69113506, 维基百科,wiki,书籍,书籍,图书馆,