Porter-Duff compositing rules

《CompositingDigitalImages》一文提出了Alpha通道的概念和12条合成规则,用于描述如何在图像处理中结合源图像和目标图像。这些规则基于数学等式,如Porter-Duff混合公式,影响了后续的图形渲染和透明效果处理。SourceOver是默认模式,而其他模式如Clear、DestinationIn和Xor等提供了不同的混合效果。
摘要由CSDN通过智能技术生成

1984 年 7 月《计算机图形》杂志 18 期 253 - 259 页,刊登了Porter Thomas 和 Duff Tom 的论文《Compositing Digital Ima-ges》,文中讲述了12个合成规则,这些规则都是基于一些简单的数学等式。

​ 文中提出一个重要的alpha channel的概念,并定义了源图像(正在绘制的基元)和目标图像(图形区域)的像素的alpha分量和颜色的

每个案例都描述了在一个蓝色矩形(目标图像)上绘制一个红色椭圆的图像(源图像)。

porter/duff混合公式

Cr=Cs*Fs+Cd*Fd

Ar=As*Fs+Ad*Fd

F表示作用于CA上的因子,Ffactor

因子 A 代表这个像素的alpha通道,C代表这个像素的每个颜色分量。

下标 rs d分别 代表这个像素的 结果(result)、源 (source) 目标 (destination)

As 代表(绘制到图形区域的基元) alpha通道,

Ad 代表已经在图形区域上的像素的alpha 通道。

Ar 最终计算结果的alpha通道。这个等式中的所有值都是在0.01.0之间的 浮点数,计算结果也位于这个范围。

PorterDuff12个规则

每个案例都描述了在一个蓝色矩形(目标图像)上绘制一个红色椭圆的图像(源图像)。

Source Over (源覆盖)

这是默认模式。源的Alpha用于在目标顶部混合像素。

Fs=1,Fd=(1-As)

Ar=As+Ad*(1-As)
Cr=Cs+Cd*(1-As)

Clear

独立于源,清除目标中的像素( 将其设置为完全透明)

Fs=Fd=0

Ar=0
Cr=0

目标中的颜色和alpha都被清除掉。无论用什么颜色或形状来绘制,被源覆盖的每个目的地 的像素都会消失,如图所示。

Destination

输出是目标像素。这意味着混合无效。此模式与Source相反。

Fs=0Fd=1

Ar=Ad
Cr=Cd

DestinationAtop

目标像素混合在源的顶部,目标像素的alpha减少了源像素的alpha。此模式与SourceAtop相反。

Fs=(1-Ad)Fd=As

A =As*(1-Ad)+Ad*As)=As

Cr=Cs*(1-Ad)+Cd*As

DestinationIn

输出是目标,其中的alpha值被源的alpha值减小。此模式与SourceIn相反。

Fs=0Fd=As

Ar=Ad*As
Cr=Cd*As

位于源内部的那部分目的地取代目标。它与DstOut相反,但是,如果使用50%alpha 值,两种操作看起来一样。

DestinationOut

输出是目标图像,其中的alpha值由源的A值而减少。此模式与SourceOut相反。

Fs=0Fd=(1-As)

Ar=Ad*(1-As)
Cr=Cd*(1-As)

位于源外部的那部分目的地取代目标。它与DstIn相反,但是,如果使用50%alpha 值,两种操作看起来一样。

DestinationOver

目标的Alpha用于将其混合在源像素的顶部。此模式与SourceOver相反。

Fs=(1-Ad)Fd=1

Ar=As*(1-Ad)+Ad
Cr=Cs*(1-Ad)+Cd

目的地与源组合,然后用这个结果取代目标。位于目标之外的那部分源通常用这个合成的累加的不透明度绘制。

Source

输出是源像素。 ( 这意味着基本的复制操作,并且在源像素不透明时与SourceOver相同)

Fs=1Fd= 0

Ar=As
Cr=Cs

源复制到目的地。目的地由源来代替。在图中,蓝色矩形(目的地)没有显示在红色 椭圆下面,因为红色椭圆(源)代替了它。

SourceAtop

源像素在目标顶部混合,源像素的alpha减少了目标像素的alpha

Fs=AdFd =(1-As)

Ar=As*Ad+Ad*(1-As)=Ad
Cr=Cs*Ad + Cd*(1-As )

位于目标内部的那部分源与目标组合。位于目的地之外的那部分源丢弃掉。

SourceIn

输出是源,其中的alpha值将减去目标的alpha值。

Fs=AdFd = 0

Ar=As*Ad
Cr=Cs*Ad

位于目的地内部的那部分源代替目的地。位于目的地之外的那部分源丢弃掉。

SourceOut

输出是源,其中目标的alpha值减小了最终的A值。

Fs=(1-Ad)Fd= 0

Ar=As*(1-Ad)
Cr=Cs*(1-Ad)

位于目的地之外的那部分源代替目的地。位于目的地内部的那部分源丢弃掉。

Xor

( alpha值与目标alpha值的负数)与目标合并,该目标的alpha值与源alpha的倒数成反比。 CompositionMode_Xor与按位Xor不同。

Fs=(1-Ad)Fd=(1-As)

Ar=As*(1-Ad)+Ad*(1-As)
Cr=Cs*(1-Ad)+Cd*(1-As)

位于目的地之外的那部分源与位于源之外的那部分目的地结合。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值