Next: 13.2.2 Pixel Scale and
Up: 13.2 Colors and Color
Previous: 13.2 Colors and Color
  Contents
13.2.1 The Accumulation Buffer: Interpolation and Extrapolation
Haeberli and Voorhies [43] have suggested several interesting
image processing techniques using linear interpolation and extrapolation.
Each technique is stated in terms of the formula:
 |
(12) |
This equation is evaluated on a per-pixel basis.
and
are
the input images,
is the output image, and
is the blending
factor. If
is between
and
, the equations describe a
linear interpolation. If
is allowed to range outside
,
the result is extrapolation [43].
In the limited case where
, these equations may be
implemented using the accumulation buffer via the following steps:
- 38.
- Draw
into the color buffer.
- 39.
- Load
, scaling by
(glAccumGL_ LOAD, (1-x)(GL_ LOAD, (1-x))).
- 40.
- Draw
into the color buffer.
- 41.
- Accumulate
, scaling by
(glAccumGL_ ACCUM,x(GL_ ACCUM,x)).
- 42.
- Return the results (glAccumGL_ RETURN, 1(GL_ RETURN, 1)).
It is assumed that
and
are between
and
. Since the
accumulation buffer can only store values in the range
, for
the case
or
, the equation must be implemented in a
different way. Given the value
, you can modify equation
12 and derive a list of accumulation buffer
operations to perform the operation. Define a scale factor
such that:
Equation 12 becomes:
and the list of steps becomes:
- 43.
- Compute
.
- 44.
- Draw
into the color buffer.
- 45.
- Load
, scaling by
(glAccumGL_ LOAD, (1-x)/s(GL_ LOAD, (1-x)/s)).
- 46.
- Draw
into the color buffer.
- 47.
- Accumulate
, scaling by
(glAccumGL_ ACCUM, x/s(GL_ ACCUM, x/s)).
- 48.
- Return the results, scaling by
(glAccumGL_ RETURN, s(GL_ RETURN, s)).
The techniques suggested by Haeberli and Voorhies use a degenerate
image as
and an appropriate value of
to move toward or away
from that image. To increase brightness,
is set to a black
image and
. To change contrast,
is set to a gray image
of the average luminance value of
. Decreasing
(toward the
gray image) decreases contrast; increasing
increases contrast. Saturation
may be varied using a luminance version of
as
. (For
information on converting RGB images to luminance, see
Section 13.2.4.) Sharpening may be accomplished by setting
to a blurred version of
[43].
Next: 13.2.2 Pixel Scale and
Up: 13.2 Colors and Color
Previous: 13.2 Colors and Color
  Contents
2001-01-10