【图像处理】-026 Compositing Digital Images

  在阅读关于matting的论文的时候,发现每一篇论文都引用了这样一个公式:
(1) I = F α + B ( 1 − α ) I=F\alpha+B(1-\alpha) \tag{1} I=Fα+B(1α)(1)
  于是我试图去寻找这个公式的源头。在1984年Computer Graphics Volume 18,Number 3中,由Thomas Porter和Tom Duff的论文《Compositing Digital Images》中,发现了类似公式。

1 Alpha Channel

  文中,作者为了正确的表达在图形学渲染时,前景和背景的相互关系,提出了Alpha Channel 的概念。

A separte component in needed to retain the matte information, the extent of 
coverage of an element at a pixel. In a full color rendering of an element, the 
RGB components retain only the color. In order to place the element over an 
arbitrary background, a mixing factor is required at every pixel to control the 
linear interplolation of foreground and background colors. In general, there is 
no way to encode this component as part of the color information. For 
anti-aliasing purposes, this mixing factor needs to be of comparable resolution
to the color channels. Let us call this an alpha channel, and let us treat an 
alpha of 0 to indicate no coverage, 1 to mean full coverage, this fractions 
corresponding to partial coverage.

  以上文字摘自参考文献(1)。从中可以看出, a l p h a − c h a n n e l alpha-channel alphachannel具有以下性质:

  • (1) 大小尺寸与图像的颜色通道一致,颜色通道中的一个像素对应alpha channel 中的一个像素;
  • (2) alpha channel中的像素值,表示前景和背景的混合比例;
  • (3) 0表示没有覆盖,1表示完全覆盖,0~1之间的小数表示部分覆盖。

  那么,对于四元组 ( r , g , b , a ) (r,g,b,a) (r,g,b,a)表示这个像素,被颜色 ( r / a , g / a , b / a ) (r/a,g/a,b/a) (r/a,g/a,b/a)所覆盖的比例为 a a a

  注意:这与我们通常理解的RGBA的颜色组合不一致。通常理解下,RGBA中各个分量的组合值分别为 ( r a , g a , b a ) (ra,ga,ba) (ra,ga,ba).这需要考虑RGBA格式的图像存储来理解。

2 RGBA格式图像文件

   如何直接将 ( r , g , b , a ) (r,g,b,a) (r,g,b,a)所表示的颜色 ( r / a , g / a , b / a ) (r/a,g/a,b/a) (r/a,g/a,b/a)存储到RGBA格式的文件中,对于全背景区域,alpha值为1,对于全前景区域,这些像素的值会为0,但对于不透明度逐渐增大的过程,会出现值从0突然增大到很大的突变过程。所以,对于RGBA格式文件,RGB值存储的是常规的RGB颜色值。

3 组合公式

  组合之后的颜色可以通过图像A乘以它的透明度加上图像B乘以它的透明度。令 c A , c B , c O c_A,c_B,c_O cA,cB,cO表示图像 A , B A,B A,B和组合之后的颜色, C A , C B , C O C_A,C_B,C_O CA,CB,CO表示各分量在经过alpha乘以之前的颜色值,那么
(2) c O = α O C O c_O=\alpha_O C_O \tag{2} cO=αOCO(2)
   C O C_O CO可以经过 C A , C B C_A,C_B CA,CB的加权均值计算得出,所以
(3) c O = α O α A F A C A + α B F B C B α A F A + α B F B c_O=\alpha_O \frac{\alpha_A F_A C_A+ \alpha_B F_B C_B}{\alpha_A F_A + \alpha_B F_B} \tag{3} cO=αOαAFA+αBFBαAFACA+αBFBCB(3)
  由于分母正好是 α O = α A F A + α B F B \alpha_O=\alpha_A F_A + \alpha_B F_B αO=αAFA+αBFB,所以
(4) c O = α A F A C A + α B F B C B c_O=\alpha_A F_A C_A+ \alpha_B F_B C_B \tag{4} cO=αAFACA+αBFBCB(4)
(5) c O = α A F A c A α A + α B F B c B α B c_O = \alpha_A F_A \frac{c_A}{\alpha_A}+\alpha_B F_B \frac{c_B}{\alpha_B} \tag{5} cO=αAFAαAcA+αBFBαBcB(5)
(6) c O = c A F A + c B F B c_O = c_A F_A + c_B F_B \tag{6} cO=cAFA+cBFB(6)

  从公式6可以看出,输出的颜色 c O c_O cO等于图像A的颜色 c A c_A cA与它的透明度系数 F A F_A FA的乘积加上图像B的颜色 c B c_B cB与它的透明度系数 F B F_B FB的乘积。

  当一个像素的颜色只由图像A和B决定时,那么各个影响它的部分的透明度之和应当为1,即 F A + F B = 1 F_A + F_B = 1 FA+FB=1,那么式(6)可以写成:
(7) c O = c A F A + c B ( 1 − F A ) c_O = c_A F_A + c_B (1-F_A) \tag{7} cO=cAFA+cB(1FA)(7)
  令 F A = α F_A = \alpha FA=α,用 F F F表示前景颜色, B B B表示背景颜色, I I I表示最终输出图像的颜色,那么:
(8) I = F α + B ( 1 − α ) I = F \alpha + B(1-\alpha) \tag{8} I=Fα+B(1α)(8)

4 总结

  《Compositing Digital Images》一文主要有以下贡献:

  • (1) 提出了alpha channel的概念
  • (2) 推导了不同组合模式下,前景和背景的alpha channel 值的计算形式
  • (3) 推导了在over模式下,图像输出与前景、背景及alpha的计算公式: I = F α + B ( 1 − α ) I = F \alpha + B(1-\alpha) I=Fα+B(1α)

参考文献

  • (1) Thomas Porter, Tom Duff, Compositing Digital Images, Computer Graphics, 1984
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值