Gamma correction using double mapping with...

Computer graphics processing and selective visual display system – Display driving control circuitry – Intensity or color driving control

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C348S254000, C348S674000, C345S010000, C345S020000

Reexamination Certificate

active

06791576

ABSTRACT:

FIELD OF THE INVENTION
This invention relates to graphics systems, and more particularly to gamma correction of pixels.
BACKGROUND OF THE INVENTION
Video displays using cathode-ray tubes (CRTs) are widely used. A voltage applied to the CRT determines the intensity or brightness of a pixel. As the applied voltage is increased, the pixel appears brighter as the CRT's light output increases. However, the relationship of the applied voltage to the light output is not a simple linear function. Instead, the light output is proportional to the applied voltage raised to a power of a constant gamma (&ggr;):
L=v
&ggr;
where v is the applied or driving voltage normalized between 0 and 1 and L is the light output. For television monitors, gamma &ggr; is typically between 2.2 to 2.8, while gamma is somewhat lower, between 1.4 and 2.2, for most computer monitors. Thus the light output is roughly the square of the normalized voltage.
A captured image, such as one captured by a sensors in a digital camera, may be corrected for this non-linear relationship of light and voltage. The red, green, and blue (R,G,B) components of a pixel may each be separately corrected. This correction uses a gamma-correction function that is complementary to the distortion function (above). The uncorrected captured pixel w is gamma-corrected to generate corrected pixel w′ using the following equation:
w′=w
&agr;
where &agr; is the reciprocal of gamma, 1/&ggr;.
Many methods for gamma correction are known, both using analog and using digital techniques. For computer and digital camera systems, digital techniques are preferred since they are easier to integrate with the other digital functions.
Power functions such as the gamma-correction function have a special kind of symmetry that can be used to simplify implementation of the function. This symmetry depends on ratios.
FIG. 1
shows a graph of a gamma-correction function that is divided into segments that are ratios of each other.
The gamma function graph has an input shown on the x axis that is normalized to be between 0 and 1. The output of the function is the y value of the curve at any desired x value. The y value can be read from the y axis. The curve for a power function such as a gamma correction function has the general curved shape shown.
The function curve is divided into several segments X
0
, X
1
, X
2
. . . X
5
. The largest segment X
0
is on the right and covers input x values from 0.5 to 1. The next segment X
1
is half the width of segment X
0
, having inputs from 0.25 to 0.5. The third segment X
2
is even smaller in width, having inputs from 0.125 to 0.25. Each successive segment has one-half the width of the segment to its right. The last (leftmost) segment X
5
spans the range of 0 to 1/64.
The segments are thus related to each other by a ratio relationship. The segments are ratio-metrically related. The gamma function is a self-similar function because the function curve is similar in each of the segments. The function curve within each segment can be approximated as a straight line so that the gamma correction function is approximated as a piece-wise-linear (PWL) function. A non-linear correction can also be added to the PWL function. See U.S. Pat. No. 5,408,267 Main and assigned to The 3DO Company of Redwood City, Calif.
Mapping to Largest (Standard) Segment
Rather than store the function curve for each of the segments, only the curve in the first (largest) segment X
0
can be stored. This first segment X
0
is known as the standard segment. When the input value is in one of the other segments, the input value is mapped (scaled up) to the range of the largest (standard) segment. Then the function curve of the standard segment is used to determine the y value. The y value is then de-mapped (scaled down) to the final output y that corresponds to the original (smaller) segment. This way only function values within the largest (standard) segment need to be stored or generated. The results from the largest segment are then scaled by the ratio of the segments raised to the power of &agr;.
FIG. 2
shows segments being mapped to the standard segment. In this example, the input value is encoded by 12 binary bits, so that the input can represent any value from 0 to 1 with a resolution of 1/4096. The largest segment X
0
spans the range of inputs from 1/2 to 1. This is the standard segment. The next segment X
2
spans inputs from 1/4 to 1/2, while the next segment X
2
spans 1/8 to 1/4. Each successive segment spans half the width of inputs as the previous, until the smallest segment, X
12
, spans values from 0 to 1/4096, having only 2 values in the smallest segment.
When an input is in one the smaller segments X
12
to X
1
, the input is scaled up to the input range of the standard segment X
0
by a bit-shift. For example, to scale from segment X
1
to X
0
, the input x is left-shifted by one bit-position, effectively multiplying by 2. To scale from segment X
3
to X
0
, the input x is left-shifted by three bit-positions, effectively multiplying by 2
3
or 8. Inputs in segment X
3
are thus shifted from the range of 1/16 to 1/8 to the range of 1/2 to 1. Inputs in the last segment X
12
are shifted by 12 bits, or multiplied by 2
12
or 4096.
FIG. 3
is a table of segments in a prior-art gamma-correction function having 12 input bits. The 13 segments X
0
to X
12
have input ranges that double for each larger segment. For example, segment X
5
has inputs in the range 1/64 to 1/32, which is double the width of the prior segment X
6
, which has inputs from 1/128 to 1/64.
The segment for any input x can be determined by a priority encoder. The priority encoder finds the bit-position of the leading one in the 12-bit input x. When the leading bit is a one, the priority encoder outputs a 0, indicating that the input is in the range of segment X
0
. When the priority encoder finds the leading one in the 6
th
bit position from the left, it outputs a 5 to indicate that the input is in the input range for segment X
5
, 1/64 to 1/32.
Gamma Correction Using Segment Mapping—FIG.
4
FIG. 4
is a diagram of gamma correction using segment mapping. The input pixel component, either the R, G, or B value, is applied to priority encoder
12
. The leading one is detected and encoded by priority encoder
12
as a shift value N. Signal N indicates the number of bit positions from the left that the first (leading) one is located at within input x.
Mapper
10
also receives the input x, and shifts x by the number N of bit positions from priority encoder
12
. The value of N indicates which segment the input x is in, as shown in the table of FIG.
3
. Shifting input x by this number of bits maps the input x to the range of the standard segment, producing shifted input y.
The shifted input y from mapper
10
is sent to gamma corrector
14
. Gamma corrector
14
accepts inputs only in the range of the standard segment. Gamma corrector
14
performs a linear interpolation within the standard segment to produce a corrected value y′. The corrected value y′ is a linear approximation of the gamma-correction curve within the standard segment. A non-linear correction may also be applied by gamma corrector
14
.
Since the corrected value y′ from gamma corrector
14
is for the function curve within the standard segment, it needs to be scaled down to the function value for the actual segment of input x. De-mapper
16
multiplies the corrected value y′ from gamma corrector
14
by a pre-determined constant. This multiply scales the corrected value y′ to the corrected value x′ that corresponds to the input x.
While such segment-mapping gamma correction is useful, a large number of segments may be required for higher-precision graphics that use multi-bit pixels. For example, a 12-bit input x requires 13 segments to properly cover the entire input range with high precision. This requires the use of a 13-bit priority encoder and storage of 13 predefined constants for de-mapping. Such large priority encoders consume chip area

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Gamma correction using double mapping with... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Gamma correction using double mapping with..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Gamma correction using double mapping with... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3258370

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.