Quick-Tip: Straight Alpha VS Premultiplied Alpha

27 February 2011

Have you ever tried figuring out the difference between Straight Alpha and Premultiplied alpha and when to use what?

Some people insist premultiplied alpha is the way to go, some say straight alpha. To be frank, both are equal in most situations as long as the math and compositing software’s interpretation of the channels is done correctly. But there are cases only one of the two should be used for best results!

But lets start with an explanation of what premultiplied and straight alpha is:

Premultiplied Alpha

In premultiplied alpha, partly transparent areas of your image, as in anti-aliased edges, a softly feathered edge or a glas object, will be premultiplied with a matting color.

In 9 out of 10 cases, this color will be black, though it is possible to specify the color yourself.

If you are 3D rendering an Image with transparent Pixels, say a glas object, the background color will be whatever is behind this object.

This means, although you have an alpha channel (RGB[A]) for your image, the RGB channels will be matted (premultiplied) with the (specified) background color.

If the alpha interpretation settings in your software (eg. After Effects, Photoshop) are correct, the amount of matted color will be substracted from your RGB Pixels by using the value in the alpha channel.

Images with premultiplied alpha will look correct, even when the alpha-channel is ignored (or not supported by early-day applications)

Pixel-explanation:

  • A red pixel that has an alpha of 50% will have the following 8bit  RGBA information: R[127], G[0], B[0], A[127]
  • An orange pixel that has an alpha of 75% will have the following 8bit RGBA information: R[191], G[95], B[0], A[191]

 

Premultiplied Alpha

Straight Alpha

In straight alpha, the RGB channels are left untouched and aren’t matted or premultiplied with a specified color.

When ignoring the image’s alpha-channel, the image will not look correct and have rough edges and dots all over the place. This can be surprising for people who do not know what straight alpha is.

Today’s Applications should not have any problems anymore to interpret straight alpha correctly.

Pixel-explanation:

  • A red pixel that has an alpha of 50% will have the following 8bit RGBA information: R[255], G[0], B[0], A[127]
  • An orange pixel that has an alpha of 75% will have the following 8bit RGBA information: R[255], G[127], B[0], A[191]

 

Straight Alpha

Conclusion

First, you should know, what type of Alpha Image you have, because the Image will look different when interpreting it as either Straight or Premultiplied Alpha.

If you have a uniform background color, both techniques are equal, as long as you tell your compositing software to interpret them correctly.

In After Effects you would want to right-click on your footage and choose “Interpret Footage As” – and then either select “Straight – Unmatted” or “Premultiplied – Matted with color” and choose your Background Color.

Premultiply Alpha After Effects

Premultiply Alpha in After Effects

BUT, if you don’t have a uniform solid color in the background, but say, a complex scene or image behind your transparent object, you will not be able to un-premultiply or un-matte the background color from a premultiplied alpha image, since this only works with a single color.

In this case you should use Straight Alpha.

Keep in mind, since there are more calculations involved in using straight alpha, there might be slightly more computational recources needed if you use straight alpha throughout your projects.

I recommend watching the following Video for more information:

 

What is your take on Premultiplied and Straight Alpha? Share your thoughts in the Comments!

Alex - post author

Hi, I am Alex, a passionate Director and 3D Generalist currently working in an Animation Studio.

Leave a Reply

Notify of
avatar
Sort by:   newest | oldest | most voted
Naunan Khalid
Guest

Orange RGB = 255,165,0,1

In pre-multiplied alpha
An orange with 75% of alpha will have the rgb of

R[255*0.75],G[165*0.75],B[0*0.75],A[255 * 0.75]

R[191],G[124],B[0],A[191]

can you confirm please?

Yakov
Guest

“Both techniques are equal, as long as you and your software interpret them correctly.” It’s nice diplomatic saying, but it’s not true.

First the correct math is expressed in premultiplied-alpha color space, so to “interpret correctly” straight alpha textures the software has to multiply and divide before and after the all the computations. (Example: downscale a half-transparent image.)

Second, premultiplied-alpha allows encoding additive blended regions in the texture, which cannot be done with straight alpha.

wpDiscuz