Merge Tool Maths

This is a brief breakdown of the maths behind Fusion’s Merge Tool.

The Operator modes are well documented. But, I’ve done some digging around to uncover the maths behind the Apply mode, Alpha Gain and Burn In.

Eyeon Fusion’s Merge tool allows for additive and subractive compositing.

Additive assumes that images are pre-multiplied. This is the default for most compositing in Fusion.

Subtractive assumes that  foreground image is NOT pre-multiplied. The Merge Tool will pre-multiply the foreground image by it’s alpha then do an additive merge.

Generally images should be pre-mutliplied with black. If I’m working with 3d rendered images this is normally the default. If I’m working with green screen or rotoscoped footage I may need to do some work to remove colour from the edges.

The Subtractive Additive slider is a quick and easy way to darken edges of the foreground image.

The missing additive blend mode?

The merge tool DOES do a straight additive blend but ‘Add’ is not listed as an apply mode in the drop down list. You need to know your composite maths to solve the puzzle…

Set ‘Apply Mode’ to ‘Normal’ and ‘Alpha Gain’ to zero for the ADDATIVE BLEND.

This mathematically the same as an additive blend.

The general maths for merging pixel colours

With an Additive merge the formula used to merge a pixel is

( A * FA ) + ( B * FB )

A – RGBA Foreground
B – RGBA Background

If a Subtractive merge is used the foreground ( A ) is pre-multiplied in the merge operation.

( A * αAFA ) + ( B * FB )

αA – Alpha Foreground
αB – Alpha Background

The Merge Operator determines  FA and FB

The various operator options control where the foreground is merged with the background.

The table below shows how the different merge operations determine  FA and FB .

Diagram
of 1 pixel
FA FB
Clear 0 0
A 1 0 A = RGBA Foreground
B 0 1 B = RGBA Background
A Over B 1 1-αA
A in B B 0
A Held Out B 1-αB 0
A ATop B B 1-αA
A XOr B 1-αB 1-αA

This table is based on the 1984 SIGGRAPH paper, Compositing Digital Images, Porter and Duff.

Normal mode is A over B.

The basic maths.

Substituting the formula from the table above we get these simple functions for merging one image over another.

Normal Additive ( A over B )

A  +  B * ( 1 –  αA )

Normal Subtractive ( A over B )

 A *  α+  B * ( 1 – αA )

B – background color
A – foreground color
αA – foreground alpha

Alpha Gain and Burn In sliders.

Alpha gain and Burn In sliders scale the foreground alpha to create screen like effects.
When G = 1 and U = 0 these equations can be simplified to the maths above.

Normal Additive ( A over B )

A  +  B * ( 1 – ( αA * G ) * ( 1 – U ) )

Normal Subtractive ( A over B )

 A * ( α* G ) +  B * ( 1 – ( αA * G ) * ( 1 – U ) )

G – Alpha Gain
U – Burn In

It’s worth noting that using Burn In with floating point maths can give alpha values above 1.0. The foreground alpha is essentially doubled where it crosses the background.

Other Apply Modes.

The Merge tool offers a host of Apply modes many of which emulate photoshop layers. The Subtractive Additive slider is disabled in these modes which makes the maths a bit simpler.

Screen Mode is not effected by alpha at all. Otherwise images should be pre-multiplied before using these blend modes.

In all these apply modes image alphas are combined using this equation.

αA  +  αB * ( 1 –  αA )

Gringo’s apply modes comp demonstrates the maths in Fusion using custom tools. I’ve summarised most of the maths in the table below.

Uses alpha
Screen 1 – (1-A) (1-B) no
Multiply AB yes
Overlay if B < 0.5 then 2AB else 1 – 2(1-A) (1-B) yes
Hard light if A < 0.5 then 2AB else 1 – 2(1-A) (1-B) yes
Soft light if A < 0.5 then 2AB + B2( 1 – 2A ) else 2B(1 – A) + (2A – 1)√B yes
Lighten if A > B then B else A yes
Darken if A < B then B else A yes
Difference abs(A-B) yes
Exclusion A + B – 2AB yes
Colour Dodge B / (1 – A) yes
Colour Burn 1 – ( (1 – B) / A ) yes

This is based on Delphi’s photoshop maths. Note: I’ve flipped the notation in my article… A = b, B = a.

I’ve also used some maths shorthand and removed the * sign. So; 2AB = 2*A*B, 2(1-A) = 2*(1-A), etc.