In computer graphics, alpha compositing is the process of combining an image
with a background to create the appearance of partial or full
transparency. It is often useful to render image elements in separate
passes, and then combine the resulting multiple 2D images into a single, final
image called the composite. For example, compositing is used extensively when
combining computer-rendered image elements with live footage.
In order to combine these image elements correctly, it is necessary to keep an
associated matte for each element. This matte contains the coverage
information—the shape of the geometry being drawn—making it possible to
distinguish between parts of the image where the geometry was actually drawn
and other parts of the image that are empty.
Description To store matte information, the concept
of an alpha channel was introduced by Alvy Ray Smith in the late 1970s, and
fully developed in a 1984 paper by Thomas Porter and Tom Duff. In a 2D
image element, which stores a color for each pixel, additional data is stored in
the alpha channel with a value between 0 and 1. A value of 0 means that the pixel
does not have any coverage information and is transparent; i.e. there was no
color contribution from any geometry because the geometry did not overlap
this pixel. A value of 1 means that the pixel is opaque because the geometry
completely overlapped the pixel. If an alpha channel is used in an image,
it is common to also multiply the color by the alpha value, to save on
additional multiplications during compositing. This is usually referred to
as premultiplied alpha. Assuming that the pixel color is
expressed using straight RGBA tuples, a pixel value of implies a pixel that has
50% of the maximum green intensity and 50% opacity. If the color were fully
green, its RGBA would be. However, if this pixel uses
premultiplied alpha, all of the RGB values are multiplied by 0.5 and then
the alpha is appended to the end to yield. In this case, the 0.5 value for
the G channel actually indicates 100% green intensity. For this reason,
knowing whether a file uses premultiplied or straight alpha is
essential to correctly process or composite it.
Premultiplied alpha has some practical advantages over normal alpha blending
because premultiplied alpha blending is associative, and interpolation and
filtering give correct results. Ordinary interpolation without premultiplied
alpha leads to RGB information leaking out of fully transparent regions, even
though this RGB information is ideally invisible. When interpolating images
with abrupt borders between transparent and opaque regions, this can result in
borders of colors that were not visible in the original image. In addition,
premultiplied alpha allows regions of regular alpha blending and regions with
additive blending mode to be encoded within the same image. Premultiplication
causes a loss of precision in the RGB values, so that a noticeable loss of
quality can result if the color information is later brightened or if
the alpha channel is removed. This loss of precision also makes premultiplied
images easier to compress, as they do not record the color variations hidden
inside transparent regions. With the existence of an alpha channel,
it is possible to express compositing image operations using a compositing
algebra. For example, given two image elements A and B, the most common
compositing operation is to combine the images such that A appears in the
foreground and B appears in the background. This can be expressed as A
over B. In addition to over, Porter and Duff defined the compositing operators
in, held out by, atop, and xor from a consideration of choices in blending the
colors of two pixels when their coverage is, conceptually, overlaid orthogonally:
The over operator is, in effect, the normal painting operation. The in
operator is the alpha compositing equivalent of clipping.
As an example, the over operator can be accomplished by applying the following
formula to each pixel value: where is the result of the operation,
is the color of the pixel in element A, is the color of the pixel in element B,
and and are the alpha of the pixels in elements A and B respectively. If it is
assumed that all color values are premultiplied by their alpha values, we
can rewrite the equation for output color as:
and resulting alpha channel value is = Examples =
Examples of red overlaid with green with both colours fully opaque:
Analytical derivation of the over operator
Porter and Duff gave a geometric interpretation of the alpha compositing
formula by studying orthogonal coverages. Another derivation of the
formula, based on a physical reflectance/transmittance model, can be
found in a 1981 paper by Bruce A. Wallace.
A third approach is found by starting out with two very simple assumptions.
For simplicity, we shall here use the shorthand notation for representing the
over operator. The first assumption is that in the case
where the background is opaque, the over operator represents the convex
combination of and : The second assumption is that the
operator must respect the associative rule:
Now, let us assume that and have variable transparencies, whereas is
opaque. We're interested in finding We know from the associative rule that
the following must be true: We know that is opaque and thus follows
that is opaque, so in the above equation, each operator can be written
as a convex combination: Hence we see that this represents an
equation of the form . By setting and we get
which means that we have analytically derived a formula for the output alpha
and the output color of . An even more compact representation is
given by noticing that : It is also interesting to note that the
operator fulfills all the requirements of a non-commutative monoid, where the
identity element is chosen such that Alpha blending
Alpha blending is the process of combining a translucent foreground color
with a background color, thereby producing a new blended color. The
degree of the foreground color's translucency may range from completely
transparent to completely opaque. If the foreground color is completely
transparent, the blended color will be the background color. Conversely, if it
is completely opaque, the blended color will be the foreground color. Of course,
the translucency can range between these extremes, in which case the blended
color is computed as a weighted average of the foreground and background colors.
Alpha blending is a convex combination of two colors allowing for transparency
effects in computer graphics. The value of alpha in the color code ranges from
0.0 to 1.0, where 0.0 represents a fully transparent color, and 1.0 represents a
fully opaque color. This alpha value also corresponds to the ratio of "SRC
over DST" in Porter and Duff equations. The value of the resulting color is
given by: If the destination background is opaque,
then , and if you enter it to the upper equation:
The alpha component may be used to blend to red, green and blue components
equally, as in 32-bit RGBA, or, alternatively, there may be three alpha
values specified corresponding to each of the primary colors for spectral color
filtering. If pre-multiplied alpha is used, the
above equations are simplified to: Other transparency methods
Although used for similar purposes, transparent colors and image masks do
not permit the smooth blending of the superimposed image pixels with those of
the background. A similar effect can be achieved with a
1-bit alpha channel, as found in the 16-bit RGBA Highcolor mode of the
Truevision TGA image file format and related TARGA and AT-Vista/NU-Vista
display adapters' Highcolor graphic mode. This mode devotes 5 bits for every
primary RGB color plus a remaining bit as the "alpha channel".
See also RGBA color space
Digital compositing Transparency
Transparent color in palettes Image masks
Portable Network Graphics Truevision TGA
Magic Pink Texture splatting
Alpha to coverage References
External links Compositing Digital Images - Thomas
Porter and Tom Duff Image Compositing Fundamentals
Understand Compositing and Color extensions in SVG 1.2 in 30 minutes!
Alpha Matting and Premultiplication