U.S. patent number 5,831,604 [Application Number 08/657,402] was granted by the patent office on 1998-11-03 for alpha blending palettized image data.
This patent grant is currently assigned to Intel Corporation. Invention is credited to Richard Gerber.
United States Patent |
5,831,604 |
Gerber |
November 3, 1998 |
Alpha blending palettized image data
Abstract
Palettized image data for two or more images, represented by
color lookup table (CLUT) indices, are mapped to an index space.
Blended pixels are generated from the pixels in the index space
using alpha blending. The blended pixels are mapped back to CLUT
indices to generate palettized blended image data. In a preferred
embodiment, in which the CLUT is generated based on a characterized
structure in YUV space, the CLUT indices are mapped to Y and UV
indices in a YUV index space. The Y and UV indices are then used to
generate three-coordinate blended pixels. The three-coordinate
blended pixels are then mapped back to CLUT indices of a palettized
blended image. Table lookups are used to generate the blended
pixels from the Y and UV indices and to map the blended pixels back
to CLUT indices.
Inventors: |
Gerber; Richard (Hillsboro,
OR) |
Assignee: |
Intel Corporation (Santa Clara,
CA)
|
Family
ID: |
24637020 |
Appl.
No.: |
08/657,402 |
Filed: |
June 3, 1996 |
Current U.S.
Class: |
345/601 |
Current CPC
Class: |
G09G
5/06 (20130101); G09G 2340/10 (20130101) |
Current International
Class: |
G09G
5/06 (20060101); G09G 005/06 () |
Field of
Search: |
;345/199,523,524,501,431 |
References Cited
[Referenced By]
U.S. Patent Documents
|
|
|
5625764 |
April 1997 |
Tsujimoto et al. |
|
Primary Examiner: Tung; Kee M.
Attorney, Agent or Firm: Blakely, Sokoloff, Taylor &
Zafman
Claims
What is claimed is:
1. A method for alpha-blending palettized image data, comprising
the steps of:
(a) providing a first set of palettized image data and a second set
of palettized image data, wherein:
each pixel of the palettized image data is represented by an index
of a color lookup table (CLUT); and
each pixel of the first set corresponds to a pixel of the second
set;
(b) providing a set of alpha-channel values, wherein each
alpha-channel value corresponds to a pixel of the first set;
(c) mapping each pixel of the first and second sets of palettized
image data to an index space;
(d) generating a set of blended pixels, wherein each blended pixel
is generated from a pixel of the first set in the index space, a
corresponding pixel of the second set in the index space, and a
corresponding alpha-channel value; and
(e) mapping the blended pixels back to CLUT indices to generate
palettized blended image data.
2. The method of claim 1, wherein the mapping of pixels by step (c)
to the index space and the mapping of the blended pixels by step
(e) to the CLUT indices are based on a characterized structure of
the CLUT.
3. The method of claim 1, wherein, for each pixel of the first
set:
step (c) comprises the step of mapping the corresponding CLUT index
for the pixel to two indices in the index space;
step (d) comprises the step of generating three coordinates of a
blended pixel using the two indices in the index space as indices
to one or more lookup tables; and
step (e) comprises the step of using at least one of the
coordinates of the blended pixel as an index to a lookup table to
map the blended pixel to a CLUT index of the palettized blended
image data.
4. The method of claim 1, wherein the palettized image data is
represented by CLUT indices and for each pixel of the first
set:
step (c) comprises the steps of:
(1) mapping the CLUT index for the pixel of the first set to a
first UV index and a first Y index in the index space; and
(2) mapping the CLUT index for the corresponding pixel of the
second set to a second UV index and a second Y index in the index
space;
step (d) comprises the steps of:
(1) generating a U coordinate of a blended pixel using the first UV
index as an index to a U lookup table and the second UV index as an
index to the U lookup table;
(2) generating a V coordinate of the blended pixel using the first
UV index as an index to a V lookup table and the second UV index as
an index to the V lookup table; and
(3) generating a Y coordinate of the blended pixel using the first
Y index and the second Y index; and
step (e) comprises the step of using the U and V coordinates of the
blended pixel as indices to a UV lookup table to map the blended
pixel to a CLUT index of the palettized blended image data.
5. An apparatus for alpha-blending palettized image data,
comprising:
(a) means for providing a first set of palettized image data and a
second set of palettized image data, wherein:
each pixel of the palettized image data is represented by an index
of a color lookup table (CLUT); and
each pixel of the first set corresponds to a pixel of the second
set;
(b) means for providing a set of alpha-channel values, wherein each
alpha-channel value corresponds to a pixel of the first set;
(c) means for mapping each pixel of the first and second sets of
palettized image data to an index space;
(d) means for generating a set of blended pixels, wherein each
blended pixel is generated from a pixel of the first set in the
index space, a corresponding pixel of the second set in the index
space, and a corresponding alpha-channel value; and
(e) means for mapping the blended pixels back to CLUT indices to
generate palettized blended image data.
6. The apparatus of claim 5, wherein the mapping of pixels by means
(c) to the index space and the mapping of the blended pixels by
means (e) to the CLUT indices are based on a characterized
structure of the CLUT.
7. The apparatus of claim 5, wherein, for each pixel of the first
set:
means (c) maps the corresponding CLUT index for the pixel to two
indices in the index space;
means (d) generates three coordinates of a blended pixel using the
two indices in the index space as indices to one or more lookup
tables; and
means (e) uses at least one of the coordinates of the blended pixel
as an index to a lookup table to map the blended pixel to a CLUT
index of the palettized blended image data.
8. The apparatus of claim 5, wherein the palettized image data is
represented by CLUT indices and for each pixel of the first
set:
means (c):
(1) maps the CLUT index for the pixel of the first set to a first
UV index and a first Y index in the index space; and
(2) maps the CLUT index for the corresponding pixel of the second
set to a second UV index and a second Y index in the index
space;
means (d):
(1) generates a U coordinate of a blended pixel using the first UV
index as an index to a U lookup table and the second UV index as an
index to the U lookup table;
(2) generates a V coordinate of the blended pixel using the first
UV index as an index to a V lookup table and the second UV index as
an index to the V lookup table; and
(3) generates a Y coordinate of the blended pixel using the first Y
index and the second Y index; and
means (e) uses the U and V coordinates of the blended pixel as
indices to a UV lookup table to map the blended pixel to a CLUT
index of the palettized blended image data.
9. A storage medium encoded with machine-readable computer program
code for alpha-blending palettized image data, comprising:
(a) means for causing a computer to provide a first set of
palettized image data and a second set of palettized image data,
wherein:
each pixel of the palettized image data is represented by an index
of a color lookup table (CLUT); and
each pixel of the first set corresponds to a pixel of the second
set;
(b) means for causing the computer to provide a set of
alpha-channel values, wherein each alpha-channel value corresponds
to a pixel of the first set;
(c) means for causing the computer to map each pixel of the first
and second sets of palettized image data to an index space;
(d) means for causing the computer to generate a set of blended
pixels, wherein each blended pixel is generated from a pixel of the
first set in the index space, a corresponding pixel of the second
set in the index space, and a corresponding alpha-channel value;
and
(e) means for causing the computer to map the blended pixels back
to CLUT indices to generate palettized blended image data.
10. The storage medium of claim 9, wherein the mapping of pixels by
means (c) to the index space and the mapping of the blended pixels
by means (e) to the CLUT indices are based on a characterized
structure of the CLUT.
11. The storage medium of claim 9, wherein, for each pixel of the
first set:
means (c) causes the computer to map the corresponding CLUT index
for the pixel to two indices in the index space;
means (d) causes the computer to generate three coordinates of a
blended pixel using the two indices in the index space as indices
to one or more lookup tables; and
means (e) causes the computer to use at least one of the
coordinates of the blended pixel as an index to a lookup table to
map the blended pixel to a CLUT index of the palettized blended
image data.
12. The storage medium of claim 9, wherein the palettized image
data is represented by CLUT indices and for each pixel of the first
set:
means (c) causes the computer to:
(1) map the CLUT index for the pixel of the first set to a first UV
index and a first Y index in the index space; and
(2) map the CLUT index for the corresponding pixel of the second
set to a second UV index and a second Y index in the index
space;
means (d) causes the computer to:
(1) generate a U coordinate of a blended pixel using the first UV
index as an index to a U lookup table and the second UV index as an
index to the U lookup table;
(2) generate a V coordinate of the blended pixel using the first UV
index as an index to a V lookup table and the second UV index as an
index to the V lookup table; and
(3) generate a Y coordinate of the blended pixel using the first Y
index and the second Y index; and
means (e) causes the computer to use the U and V coordinates of the
blended pixel as indices to a UV lookup table to map the blended
pixel to a CLUT index of the palettized blended image data.
13. An apparatus for alpha-blending palettized image data,
comprising:
a first mapper;
a blender; and
a second mapper, wherein:
the first mapper receives a first set of palettized image data and
a second set of palettized image data, wherein:
each pixel of the palettized image data is represented by an index
of a color lookup table (CLUT); and
each pixel of the first set corresponds to a pixel of the second
set;
the first mapper maps each pixel of the first and second sets of
palettized image data to an index space;
the blender receives a set of alpha-channel values, wherein each
alpha-channel value corresponds to a pixel of the first set;
the blender generates a set of blended pixels, wherein each blended
pixel is generated from a pixel of the first set in the index
space, a corresponding pixel of the second set in the index space,
and a corresponding alpha-channel value; and
the second mapper maps the blended pixels back to CLUT indices to
generate palettized blended image data.
14. The apparatus of claim 13, wherein the mapping of pixels by the
first mapper to the index space and the mapping of the blended
pixels by the second mapper to the CLUT indices are based on a
characterized structure of the CLUT.
15. The apparatus of claim 13, wherein, for each pixel of the first
set:
the first mapper maps the corresponding CLUT index for the pixel to
two indices in the index space;
the blender generates three coordinates of a blended pixel using
the two indices in the index space as indices to one or more lookup
tables; and
the second mapper uses at least one of the coordinates of the
blended pixel as an index to a lookup table to map the blended
pixel to a CLUT index of the palettized blended image data.
16. The apparatus of claim 13, wherein the palettized image data is
represented by CLUT indices and for each pixel of the first
set:
the first mapper:
(1) maps the CLUT index for the pixel of the first set to a first
UV index and a first Y index in the index space; and
(2) maps the CLUT index for the corresponding pixel of the second
set to a second UV index and a second Y index in the index
space;
the blender:
(1) generates a U coordinate of a blended pixel using the first UV
index as an index to a U lookup table and the second UV index as an
index to the U lookup table;
(2) generates a V coordinate of the blended pixel using the first
UV index as an index to a V lookup table and the second UV index as
an index to the V lookup table; and
(3) generates a Y coordinate of the blended pixel using the first Y
index and the second Y index; and
the second mapper uses the U and V coordinates of the blended pixel
as indices to a UV lookup table to map the blended pixel to a CLUT
index of the palettized blended image data.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to digital image processing, and, in
particular, to alpha blending.
2. Description of the Related Art
Alpha blending is a standard technique of combining two or more
input images together to generate a resulting blended image, where
each pixel of the blended image is the result of taking the
weighted average of the corresponding pixels of the input images.
The weighted average is dictated by alpha-channel values, which may
vary from pixel to pixel within an image, and from frame to frame,
in the case of alpha blending of two or more video streams.
Alpha blending is typically applied to image data in a
three-component color format, such as RGB24where each of the red
(R), green (G), and blue (B) components is represented by an 8-bit
value. The alpha channel may also be represented by 8-bit values.
For example, when alpha blending two images together, each pixel of
the blended image may be represented by three blended components
(R.sub.b,G.sub.b,B.sub.b) generated based on straightforward
weighted averaging according to the following Equations (1)-(3):
##EQU1## where .alpha. is the alpha-channel value for the blended
pixel, and (R.sub.1,G.sub.1,B.sub.1) and (R.sub.2, G.sub.2,B.sub.2)
are corresponding pixels of the two input images. The resulting
blended image presents a visual effect based on contributions from
both input images. Alpha blending is used, for example, to simulate
fades between images or scenes, or certain transparency effects
(e.g., a window where the viewer sees both the view through the
window as well as a partial reflection off the surface of the
window).
Another standard color format for image data is the color lookup
table (CLUT) format. In CLUT format, each pixel is represented by a
single (e.g., 8-bit) value that is used as an index to a color
lookup table which maps the index to a specific three-component
(e.g., RGB24) color. An 8-bit CLUT, for example, supports up to 256
different CLUT8 indices that can map to up to 256 different RGB24
colors. In general, each CLUT8 index can map to any of the possible
RGB24 colors, with little or no correlation to other CLUT8 indices
and other possible RGB24 colors.
It is desirable to provide the capability to perform alpha blending
of image data in CLUT format (also known as palettized image data).
Unfortunately, applying an equation based on the straightforward
weighted averaging of Equations (1)-(3) will typically not provide
the correct results, or even an acceptable result. For example,
assume that a pixel from the first input image is represented by
the CLUT8 index 6, defined by the CLUT to map to a particular shade
of pink. Assume further that the corresponding pixel from the
second input image is represented by the CLUT8 index 8, defined by
the CLUT to map to a similar but different shade of pink. If the
corresponding 8-bit alpha-channel value is 128, then applying
straightforward weighted averaging would produce a CLUT8 index of 7
for the corresponding blended pixel. Unfortunately, because there
need be little if any correlation between CLUT8 indices, the CLUT8
index 7 can map to any RGB24 color, for example, a shade of green.
Clearly, alpha blending that mixes together two shades of pink to
generate a shade of green will not be useful in conventional
applications of alpha blending.
The present invention is directed to an efficient and accurate
method of alpha blending two or more palettized images represented
in a CLUT color format.
Further objects and advantages of this invention will become
apparent from the detailed description of a preferred embodiment
which follows.
SUMMARY OF THE INVENTION
The present invention is directed to alpha-blending palettized
image data. According to a preferred embodiment, a first set of
palettized image data and a second set of palettized image data are
provided, wherein each pixel of the palettized image data is
represented by an index of a color lookup table (CLUT), and each
pixel of the first set corresponds to a pixel of the second set. A
set of alpha-channel values is provided, wherein each alpha-channel
value corresponds to a pixel of the first set. Each pixel of the
first and second sets of palettized image data is mapped to an
index space. A set of blended pixels is generated, wherein each
blended pixel is generated from a pixel of the first set in the
index space, a corresponding pixel of the second set in the index
space, and a corresponding alpha-channel value. The blended pixels
are mapped back to CLUT indices to generate palettized blended
image data.
BRIEF DESCRIPTION OF THE DRAWINGS
Other objects, features, and advantages of the present invention
will become more fully apparent from the following detailed
description of the preferred embodiment, the appended claims, and
the accompanying drawings in which:
FIGS. 1a-i show an 8-bit color lookup table, according to a
preferred embodiment of the present invention;
FIG. 2 is a graphical representation of the 18 different UV indices
for the color lookup table of FIGS. 1a-i as plotted in the UV
component plane;
FIG. 3 is a flow diagram of alpha-blending processing for each pair
of corresponding pixels of two palettized input images based on the
CLUT of FIGS. 1a-i; and
FIG. 4 is a block diagram of an apparatus for implementing the
alpha-blending processing of FIG. 3.
DESCRIPTION OF THE PREFERRED EMBODIMENT(S)
The present invention is directed to a scheme for performing alpha
blending on palettized image data. One way to apply alpha blending
to palettized image data is to (a) map the input pixels to
three-component RGB24 color format, (b) perform the alpha blending
in RGB space using Equations (1)-(3), and then (c) map the
resulting blended image data in RGB24 format back to CLUT8 format.
The first two steps are relatively easy; the third step can be
computationally expensive. Because so few of the 2.sup.24 different
possible RGB24 colors are actually represented in an 8-bit CLUT
(i.e., at most 256), in general, the pixels of the resulting
blended image will not be represented exactly by CLUT indices.
When there is no straightforward mathematical equation for mapping
from RGB24 space back to CLUT8 space, the blended image can be
mapped back to CLUT8 space by an exhaustive search algorithm that
compares each RGB24 pixel of the blended image with each RGB24
color represented in the lookup table to select the CLUT8 index
corresponding to the closest color. The closest color may be
defined, for example, as the color having the smallest geometric
distance d.
The geometric distance d.sub.i between the current blended pixel
(R.sub.b,G.sub.b,B.sub.b) and the i.sup.th CLUT color
(R.sub.i,G.sub.i,B.sub.i) may be defined as the sum of the absolute
differences as in the following Equation (4):
Alternatively, the geometric distance d.sub.i may be defined as the
square root of the sum of the squares of the differences as in the
following Equation (5): ##EQU2## In either case, the computational
load on a processor for such an approach can be great.
Pseudocode for an exhaustive search algorithm based on Equation (4)
is as follows: ##EQU3##
Such an exhaustive search algorithm will generate the correct
blended CLUT indices (CLUT.sub.b), but is computationally
expensive.
Many color lookup tables are structured lookup tables in that they
follow some recognizable pattern. The present invention takes into
account the structure in such CLUTs to provide an efficient and
accurate method for alpha blending of palettized image data. It
does so by mapping the palettized image data to an index space
different from the CLUT color space, performing the alpha blending
using the index-space data, and then mapping the blended data back
to the CLUT color space, where the mappings to the index color
space and to the CLUT color space are based on a characterization
of the structure of the CLUT.
Referring now to FIGS. 1a-i, there is shown an 8-bit color lookup
table, according to a preferred embodiment of the present
invention. The CLUT of FIGS. 1a-i maps 234 CLUT indices (from 10 to
243) to 234 RGB24 colors. The 8-bit R, G, and B values
corresponding to the 234 different CLUT indices are tabulated in
FIGS. 1a-i. The indices 0-9 and 244-255 are not part of the CLUT of
FIGS. 1a-i. In a preferred embodiment, the colors for CLUT indices
0-9 and 246-255 are reserved and are defined by the particular
operating system (i.e., a Microsoft Windows operating system). The
colors for CLUT indices 10-243 are generated based on 18 different
UV indices (from 0 to 17). For each UV index, there are 13 CLUT
indices corresponding to a fixed (U,V) pair and 13 different Y
component values ranging from 38 to 218 in increments of 15.
Referring now to FIG. 2, there is shown a graphical representation
of the 18 different UV indices for the CLUT of FIGS. 1a-i as
plotted in the UV component plane. The (U,V) component pairs for
the 18 different UV indices are tabulated in Table I. As is evident
from FIG. 2, besides being separated in increments of 32 and
generally distributed around (128,128), there is little pattern to
the location of the UV indices in the UV coordinate plane.
TABLE I ______________________________________ UV INDEX U COMPONENT
V COMPONENT ______________________________________ 0 128 128 1 128
96 2 96 128 3 128 160 4 160 128 5 96 96 6 160 96 7 160 160 8 96 160
9 64 128 10 128 192 11 128 64 12 192 128 13 64 160 14 96 192 15 64
96 16 160 64 17 192 96 ______________________________________
Table II presents U and V coordinates corresponding to each UV
index of Table I. Each pair of U and V coordinates represents the
number of increments of 32 in the U and V components corresponding
to a different UV index.
TABLE II ______________________________________ UV INDEX U INDEX V
INDEX ______________________________________ 0 4 4 1 4 3 2 3 4 3 4
5 4 5 4 5 3 3 6 5 3 7 5 5 8 3 5 9 2 4 10 4 6 11 4 2 12 6 4 13 2 5
14 3 6 15 2 3 16 5 2 17 6 3
______________________________________
Referring now to FIG. 3, there is shown a flow diagram of
alpha-blending processing for each pair of corresponding pixels of
two palettized input images based on the CLUT of FIGS. 1a-i,
according to a preferred embodiment of the present invention.
According to this embodiment, corresponding pixels from the two
palettized input images are mapped from the one-dimensional CLUT
space to a YUV index space (step 302 of FIG. 3). Alpha blending is
then performed to generate Y, U, and V coordinates of a blended
pixel (step 304) and the resulting blended pixel is then mapped
back to CLUT space (step 306).
The mapping of each palettized pixel from CLUT space to YUV index
space (step 302) may be implemented according to the following
Equations (6)-(7):
where:
C is the CLUT index,
I.sub.UV is the UV index in YUV index space,
I.sub.Y is the Y index in YUV index space,
DIV is the integer division function, and
MOD is the modulo function.
Those skilled in the art will understand that the mappings of
Equations (6) and (7) may be implemented by evaluating the
mathematical equations during real-time processing or using the
CLUT index C as an index into lookup tables that return values
pre-computed off line using Equations (6) and (7).
The blending of the two pixels in the YUV-index space (step 304 of
FIG. 3) may be implemented according to Equations (8)-(10) as
follows:
where:
I.sub.UV1 and I.sub.Y1 are the UV and Y indices in YUV index space
for the pixel from the first input image,
I.sub.UV2 and I.sub.Y2 are the UV and Y indices in YUV index space
for the pixel from the second input image,
uLUT and vLUT are lookup tables that map a UV index to U and V
coordinates, respectively, as indicated in Table II,
.alpha. is the 8-bit alpha-channel value for the pixels,
DIV is the integer division function, and
(Y.sub.b, U.sub.b, V.sub.b) are Y, U, and V coordinates for the
blended pixel in a three-dimensional coordinate space.
The value 128 is added before each integer division operation in
Equations (8)-(9) to ensure proper rounding to the closest integer.
In an alternative embodiment, the value 128 may also be added
before the integer division in Equation (10).
The mapping of the three-coordinate blended pixel back to CLUT
space (step 306 of FIG. 3) may be implemented according to the
following Equation (11):
where:
C.sub.b is the CLUT index for the blended pixel in CLUT space,
(Y.sub.b, U.sub.b, V.sub.b)are Y, U, and V coordinates for the
blended pixel from Equations (8)-(10), and
uvLUT is a lookup table that maps the U and V coordinates back to
the corresponding UV index.
The lookup table uvLUT is shown in Table III. Lookup table uvLUT is
based on the locations of the UV indices as shown in FIG. 2.
Because of the limited nature of the CLUT of FIGS. 1a-i, not all of
the possible entries in uvLUT are needed.
TABLE III ______________________________________ LOOKUP TABLE uvLUT
V COORDINATE U COORD 0 1 2 3 4 5 6 7
______________________________________ 2 15 15 9 13 13 3 5 5 2 8 14
4 11 1 0 3 10 5 16 6 4 7 7 6 17 17 12 12 12 7
______________________________________
Referring now to FIG. 4, there is shown a block diagram of an
apparatus for implementing the alpha-blending processing of FIG. 3.
CLUT-to-YUV index mapper 402 receives the CLUT indices for two
palettized images and maps those CLUT indices to Y and UV indices.
YUV-index blender 404 receives the Y and UV indices and the alpha
channel values and generates blended pixels with Y, U, and V
coordinates. YUV-to-CLUT index mapper 406 maps the blended pixels
back to CLUT indices of the resulting blended palettized image. In
a preferred embodiment, the alpha-blending processing of FIG. 3 is
implemented in software executed on a general-purpose
microprocessor, such as a Pentium.RTM. or Pentium.RTM. Pro
processor manufactured by Intel Corporation.
Example of Alpha Blending
This section presents an example of the alpha-blending processing
of FIG. 3 based on the CLUT of FIGS. 1a-i. In this example, the
pixel from the first palettized image has a CLUT index value of 48,
the corresponding pixel from the second palettized image has a CLUT
index value of 120, and the alpha-channel value for blending these
two pixels together is 64.
In order to demonstrate the embodiment of FIG. 3, the example is
processed using Equations (1)-(3) and the exhaustive search
algorithm described in conjunction with Equation (4). As shown in
FIGS. 1b and 1e, the CLUT index 48 corresponds to the RGB24 color
(235, 247, 170) and the CLUT index 120 corresponds to the RGB24
color (181, 116, 65). Applying Equations (1)-(3) yields the RGB24
color for the exact blended pixel (R.sub.b, G.sub.b, B.sub.b) as
follows: ##EQU4## Implementing the pseudocode for the exhaustive
search algorithm yields the RGB24 color (198, 134, 83) as the
closest match in the CLUT of FIGS. 1a-i to the exact blended pixel.
This RGB24 color is represented by CLUT index 121, which is
therefore used to represent the blended pixel in the resulting
palettized alpha-blended image.
The same example is now used in the alpha-blending processing of
FIG. 3. Each pixel is mapped to YUV-index space (step 302 of FIG.
3) using Equations (6)-(7) as follows:
The pixels are then blended together to generate the blended pixel
(Y.sub.b, U.sub.b, V.sub.b) (step 304 of FIG. 3) using Equations
(8)-(10) as follows: ##EQU5## The blended pixel (Y.sub.b, U.sub.b,
V.sub.b) is then mapped back to CLUT space (step 306 of FIG. 3)
using Equation (11) as follows: ##EQU6## Thus, the alpha-blending
of FIG. 3 yields the same result as the algorithm based on
alpha-blending in RGB space followed by an exhaustive search to get
back to CLUT space.
In the preferred embodiments described above, alpha blending is
described in terms of palettized image data based on a CLUT that
maps to RGB space, where the CLUT is generated based on structure
in YUV space. Those skilled in the art will understand that the
present invention also applies to palettized image data based on
CLUTs that map to color spaces other than RGB (e.g., YUV, YIQ)
and/or CLUTs that are generated based on structure in color spaces
other than YUV (e.g., YIQ, RGB).
In the preferred embodiments described above, alpha blending was
described in terms of combining two images together. Those skilled
in the art will understand that the present invention also covers
alpha blending of three or more images together where sufficient
alpha-channel data is available to determine relative weighting
between the input images. Moreover, the images may be frame of two
or more video streams that are blended together.
The present invention can be embodied in the form of methods and
apparatuses for practicing those methods. The present invention can
also be embodied in the form of computer program code embodied in
tangible media, such as floppy diskettes, CD-ROMs, hard drives, or
any other computer-readable storage medium, wherein, when the
computer program code is loaded into and executed by a computer,
the computer becomes an apparatus for practicing the invention. The
present invention can also be embodied in the form of computer
program code, for example, whether stored in a storage medium,
loaded into and/or executed by a computer, or transmitted over some
transmission medium, such as over electrical wiring or cabling,
through fiber optics, or via electromagnetic radiation, wherein,
when the computer program code is loaded into and executed by a
computer, the computer becomes an apparatus for practicing the
invention. When implemented on a general-purpose microprocessor,
the computer program code segments combine with the microprocessor
to provide a unique device that operates analogous to specific
logic circuits.
It will be further understood that various changes in the details,
materials, and arrangements of the parts which have been described
and illustrated in order to explain the nature of this invention
may be made by those skilled in the art without departing from the
principle and scope of the invention as expressed in the following
claims.
* * * * *