US RE41631 E1 Abstract Gamma correction or other powerPower functions and other self-
similar functions are generated for correcting the light intensity for digital pixelsimplemented in hardware. Two levels of mapping of segments are preformed to reduce the total number of segments for a given precision. TheA range of inputs is divided into successively smaller segments. Two levels of mapping of segments are performed. Each segment is smaller than the next by a factor of 1/a for a first or primary level, or 1/b for a second level of segments. All inputs are mapped of scaled up to the input range of the largest segment in the primary level. Then the largest primary segment is further divided into several second-level segments, and the input is again mapped or scaled into the largest of the second-level segments. Gamma correctionThe function is performed on the input scaled into the largest second-level segment. A linear approximation within the largest second-level segment is used. The result is de-mapped or scaled down from the largest second-level segment to the actual second-level segment, then it is scaled downand again from the largest primary-level segment to the actual primary-level segment for the original input. Smaller priority encoders and shifters and simplified de-mapping circuits can be used, saving logic .Claims(64) 1. A multi-level segment-mapping function generator comprising:
an input having an input value within an input range, the input range being divided into a plurality of first-level segments of varying width including a standard first-level segment;
a first-level mapper, receiving the input value, for scaling the input value to an intermediate input value within a range of the standard first-level segment, the first-level mapper outputting the intermediate input value to an intermediate input;
wherein the intermediate input value output by the first-level mapper is within a second input range equal to the range of the standard first-level segment, the range of the standard first-level segment being divided into a plurality of second-level segments of varying width, the plurality of second-level segments including a standard second-level segment;
a second-level mapper, receiving the intermediate input from the first-level mapper, for scaling the intermediate input value to generate a final input having a final input value, the final input value being within a range of the standard second-level segment;
a function generator, receiving the final input from the second-level mapper, for generating a result of a pre-determined function from the final input value;
a second-level de-mapper, receiving the result from the function generator, for adjusting the result from the function generator to an intermediate result, the intermediate result being a result of the pre-determined function for the intermediate input value; and
a first-level de-mapper, receiving the intermediate result from the second-level de-mapper, for adjusting the intermediate result from the second-level de-mapper to a final result, the final result being a result of the pre-determined function for the input value, whereby the final result can be generated for any input value within the input range using the function generator that generates results only within the standard second-level segment.
2. The multi-level segment-mapping function generator of
wherein the standard first-level segment is a largest of the plurality of first-level segments;
wherein the plurality of second-level segments are non-overlapping and ratio-metrically related wherein each smaller second-level segment is 1/b the input width of a next larger second-level segment, wherein b is a positive integer representing a second ratio;
wherein the standard second-level segment is a largest of the plurality of second-level segments,
whereby segments are ratios of larger segments in a level.
3. The multi-level segment-mapping function generator of
whereby each level has segments with different ratios of segment widths.
4. The multi-level segment-mapping function generator of
whereby the pre-determined function is approximated by a line within the standard second-level segment.
5. The multi-level segment-mapping function generator of
a first priority encoder, receiving the input, for detecting a leading significant bit in multiple bits in the input that represent the input value, the first priority encoder generating a first shift signal determined by a location of the leading significant bit within the input value;
a first shifter, receiving the input, for shifting the input value by a shift signal determined by the first shift signal to generate the intermediate input value,
whereby the first-level mapper shifts the input value.
6. The multi-level segment-mapping function generator of
a second priority encoder, receiving the intermediate input, for detecting a leading significant bit in multiple bits in the intermediate input that represent the intermediate input value, the second priority encoder generating a second shift signal determined by a location of the leading significant bit within the intermediate input value;
a second shifter, receiving the intermediate input, for shifting the intermediate input value by a second shift signal determined by the second shift signal to generate the final input value,
whereby the second-level mapper shifts the intermediate input value.
7. The multi-level segment-mapping function generator of
wherein a smallest of the plurality of first-level segments has a range of 1/2
^{K }of the input range; wherein a total number of segments in the plurality of first-level segments is N
1; wherein a total number of segments in the plurality of second-level segments is N
2; wherein N
1+N2 is less than K; whereby a precision of the function generator is 1/2
^{K }of the input range but a total number of segments is less than K. 8. The multi-level segment-mapping function generator of
a reverse shifter, receiving the intermediate result from the second-level de-mapper, for shifting the intermediate result by a number of bit-positions to generate the final result;
wherein the number of bit-positions is determined by the first shift signal from the first priority encoder;
wherein a full multiplier for multiplying the intermediate result by an arbitrary constant is not required;
wherein the reverse shifter shifts the intermediate result in an opposite direction to a direction that the first shifter shifts the input value.
9. The multi-level segment-mapping function generator of
a constant multiplier, receiving the result from the function generator, for multiplying the result by a constant to generate the intermediate result;
wherein the constant is a function of the second shift signal from the second priority encoder.
10. The multi-level segment-mapping function generator of
W′=W ^{α} where α is a positive constant.
11. The multi-level segment-mapping function generator of
12. The multi-level segment-mapping function generator of
W′=(1/a) ^{α*m}*X′wherein W′ is the final result, X′ is the intermediate result, m is the first shift signal, and a is the first ratio.
13. The multi-level segment-mapping function generator of
X′=(1/b) ^{α*n}*Y′wherein X′ is the intermediate result, Y′ is the result from the function generator, n is the second shift signal, and b is the second ratio.
14. A method for gamma correcting a pixel comprising:
receiving an input value representing a brightness of a pixel, the input value being within an input range divided into primary segments that include a standard primary segment;
determining an original segment that contains the input value, the original segment being one of the primary segments identified by a first encoded signal;
shifting the input value to an intermediate input value, the intermediate input value being within the standard primary segment;
determining an intermediate second segment that contains the intermediate input value, the intermediate second segment being one of a plurality of second segments, wherein the standard primary segment is divided into the plurality of second segments;
shifting the intermediate input value to a final input value, the final input value being within a standard segment in the plurality of second segments;
generating a function result from the final input value, the function result being a gamma correction of the final input value;
adjusting the function result to generate an intermediate result, the intermediate result being the gamma correction of the intermediate input value; and
adjusting the intermediate result to generate a final result, the final result being the gamma correction of the input value,
whereby two levels of segment mapping are performed before gamma correction.
15. The method of
right-shifting the intermediate result to generate the final result,
whereby a multiply by an arbitrary constant that is not a power of 2 is avoided when adjusting the intermediate result to generate a final result.
16. The method of
left-shifting by a multiple of M bits, where M is a location of a most-significant bit in the input value,
whereby the input value is first shifted by a multiple of M bits.
17. The method of
18. The method of
wherein adjusting the intermediate result to generate a final result comprises:
multiplying the intermediate result by a constant, the constant selected from among a plurality of constants by the second shift amount N.
19. A power-function system comprising:
input means for receiving an input value, the input value being within an input range divided into primary segments that include a standard primary segment;
first priority means for determining an original segment that contains the input value, the original segment being one of the primary segments identified by a first encoded signal,
first shift means, responsive to the first priority means, for shifting the input value to an intermediate input value, the intermediate input value being within the standard primary segment;
second priority means, receiving the intermediate input value from the first shift means, for determining an intermediate second segment that contains the intermediate input value, the intermediate second segment being one of a plurality of second segments, wherein the standard primary segment is divided into the plurality of second segments;
second shift means, responsive to the second priority means, for shifting the intermediate input value to a final input value, the final input value being within a standard segment in the plurality of second segments;
function means, receiving the final input value, for generating a function result from the final input value, the function result being a pre-defined function of the final input value;
second de-map means, responsive to the second plurality means, for adjusting the function result to generate an intermediate result, the intermediate result being the pre-defined function of the intermediate input value; and
first de-map means, responsive to the first priority means, for adjusting the intermediate result to generate a final result, the final result being the pre-defined function of the input value,
whereby two levels of segment mapping are performed before the pre-defined function.
20. The power-function system of
shift means for right-shifting the intermediate result to generate the final result, whereby a multiply by an arbitrary constant that is not a power of 2 is avoided when adjusting the intermediate result to generate a final result.
21. An apparatus configured to perform a first mathematical function on an original input value to produce a final result value, said apparatus comprising:
a mapping circuit configured to receive said original input value for said first mathematical function, wherein said original input value is within a predetermined range of values, and wherein said mapping circuit is configured to map said original input value to a final input value, wherein said final input value is within a predetermined segment of said predetermined range of values, and wherein said mapping circuit is configured to perform at least two mapping operations in order to generate said final input value from said original input value; a function generation circuit configured to receive said final input value and generate an intermediate result corresponding to a value of said first mathematical function at said final input value; a de-mapping circuit configured to receive said intermediate result and to generate said final result value therefrom by performing at least two de-mapping operations, wherein said final result value corresponds to a value of said first mathematical function at said original input value. 22. The apparatus of
23. The apparatus of
24. The apparatus of
25. The apparatus of
26. The apparatus of
27. Then apparatus of
28. The apparatus of
29. The apparatus of
30. The apparatus of
linear approximation of said first function within said predetermined segment of said predetermined range. 31. The apparatus of
32. The apparatus of
mapping operations performed by said de-mapping circuit are complementary to said at least two mapping operations performed by said mapping circuit. 33. The apparatus of
34. The apparatus of
35. The apparatus of
36. The apparatus of
37. The apparatus of
0 and 1.38. The apparatus of
similar function, and wherein said function generation circuit is configured to perform a linear approximation of said first mathematical function within said predetermined segment of said predetermined range of values. 39. The apparatus of
mapping circuit is configured to perform de-mapping operations complementary to said first and second mapping operations. 40. The apparatus of
mapping circuit is configured to perform de-mapping operations complementary to said first and second mapping operations. 41. The apparatus of
42. The apparatus of
43. The apparatus of
mapping circuit includes a reverse shifter. 44. The apparatus of
mapping circuit includes a multiplier. 45. The apparatus of
46. The apparatus of
47. The apparatus of
mean-square function. 48. An apparatus for generating a value for a first mathematical function from an original input value, said apparatus comprising:
first means for mapping said original input value to a final input value using at least two mapping operations, wherein said final input value is within a predetermined segment of a range of input values; second means for receiving said final input value and determining a value of said first mathematical function at said final input value; third means for de-mapping said value of said first mathematical function produced by said second means in order to generate an output value of said first mathematical function at said original input value, wherein said de-mapping uses at least two de-mapping operations. 49. The apparatus of
50. An apparatus, comprising:
a primary mapping circuit configured to receive an original input value for a first mathematical function, wherein said original input value is located within one of a plurality of segments of a range of input values, and wherein said primary mapping circuit is configured to map said original input value to an intermediate input value located within a first segment of said plurality of segments; a secondary mapping circuit configured to receive said intermediate input value, wherein said intermediate input value is located within one of a plurality of sub-segments of said first segment, wherein said secondary mapping circuit is configured to map said intermediate input value to a final input value located within a first sub-segment of said first segment; a function generation circuit configured to receive said final input value and to generate a preliminary output value therefrom, wherein said preliminary output value corresponds to an output value of said first mathematical function at said final input value; a secondary de-mapping circuit configured to receive said preliminary output value and adjust said original output value to produce an intermediate output value; and a primary de-mapping circuit configured to receive said intermediate output value and adjust said intermediate output value to produce a final output value, wherein said final output value corresponds to an output value of said first mathematical function for said original input value. 51. The apparatus of
52. The apparatus of
53. The apparatus of
54. The apparatus of
55. The apparatus of
mapping circuit is configured to perform a second de-mapping operation that is complementary to said second mapping operation. 56. The apparatus of
mapping circuit is configured to perform a first de-mapping operation that is complementary to said first mapping operation. 57. The apparatus of
58. The apparatus of
59. The apparatus of
mapping operation is a reverse binary shift operation. 60. The apparatus of
mapping operation is a multiplication operation. 61. The apparatus of
mapping operation is a reverse binary shift operation. 62. The apparatus of
mapping operation is a multiplication operation. 63. The apparatus of
64. A method for generating, from an original input value, a final output value for a first function, said method comprising:
receiving, at a mapping circuit of an apparatus, said original input value, wherein said original input value is within a predetermined range of input values; the mapping circuit performing at least two mapping operations to map said original input value to a final input value, wherein said final input value is located within a first segment of said predetermined range of input values; a function generation circuit of the apparatus generating a preliminary output value that corresponds to a value of said first function at said final input value; a de-mapping circuit of the apparatus performing at least two de-mapping operations to adjust said preliminary output value to a final output value, wherein said final output value corresponds to an output value of said first function at said original input value. Description This invention relates to graphics systems, and more particularly to gamma correction of pixels. 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 (γ):
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:
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. 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 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. Rather than store the function curve for each of the segments, only the curve in the first (largest) segment X When an input is in one the smaller segments X 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 4 Mapper The shifted input y from mapper Since the corrected value y′ from gamma corrector 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 and power. A smaller priority encoder is more desirable. What is desired is a gamma corrector that uses segment mapping. It is desired to reduce the cost of the gamma correction system by reducing the amount of logic required for a large multi-bit priority encoder. The precision from a large number of segments is still desired, but with a lower logic burden. High precision while using a small priority encoder is desired. Multiplication by a reduced set of constants is desired to reduce constant storage. An efficient structure for a gamma correction apparatus using segment mapping is desired. A multi-level segment-mapping function generator has an input with an input value within an input range. The input range is divided into a plurality of first-level segments of varying width including a standard first-level segment. A first-level mapper receives the input value. It scales the input value to an intermediate input value within a range of the standard first-level segment. The first-level mapper outputs the intermediate input value to an intermediate input. The intermediate input value output by the first-level mapper is within a second input range equal to the range of the standard first-level segment. The range of the standard first-level segment is divided into a plurality of second-level segments of varying width. The plurality of second-level segments include a standard second-level segment. a second-level mapper receives the intermediate input from the first-level mapper. It scales the intermediate input value to generate a final input value. The final input value is within a range of the standard second-level segment. A function generator receives the final input from the second-level mapper. It generates a result of a predetermined function from the final input value. A second-level de-mapper receives the result from the function generator. It adjusts the result from the function generator to an intermediate result. The intermediate result is a result of the pre-determined function for the intermediate input value. A first-level de-mapper receives the intermediate result from the second-level de-mapper. It adjusts the intermediate result from the second-level de-mapper to a final result. The final result is a result of the pre-determined function for the input value. Thus the final result can be generated for any input value within the input range using the function generator that generates results only within the standard second-level segment. In further aspects the plurality of first-level segments are non-overlapping and ratio-metrically related where each smaller first-level segment is 1/a the input width of a next larger first-level segment. The constant a is a positive integer representing a first ratio. The standard first-level segment is a largest of the plurality of first-level segments. The plurality of second-level segments are non-overlapping and ratio-metrically related where each smaller second-level segment is 1/b the input width of a next larger second-level segment, where b is a positive integer representing a second ratio. The standard second-level mapper is a largest of the plurality of second-level segments. Thus segments are ratios of larger segments in a level. In still further aspects the constant a is not equal to b. Each level has segments with different ratios of segment widths. In further aspects of the invention the function generator is a linear interpolator generating the result by multiplying the final input by a slope of a line and adding a constant. Thus the function is approximated by a line within the standard second-level segment. In further aspects the first-level mapper has a first priority encoder that receives the input. It detects a leading significant bit in multiple bits in the input that represent the input value. The first priority encoder generates a first shift signal determined by a location of the leading significant bit within the input value. A first shifter receives the input. It shifts the input value by a shift signal determined by the first shift signal to generate the intermediate input value. Thus the first-level mapper shifts the input value. In other aspects the second-level mapper has a second priority encoder that receives the intermediate input. It detects a leading significant bit in multiple bits in the intermediate input that represent the intermediate input value. The second priority encoder generates a second shift signal determined by a location of the leading significant bit within the intermediate input value. A second shifter receives the intermediate input. It shifts the intermediate input value by a second shift signal determined by the second shift signal to generate the final input value. Thus the second-level mapper shifts the intermediate input value. In still further aspects of the invention the first-level de-mapper has a reverse shifter that receives the intermediate result from the second-level de-mapper. If shifts the intermediate result by a number of bit-positions to generate the final result. The number of bit-positions is determined by the first shift signal from the first-level priority encoder. A full multiplier for multiplying the intermediate result by an arbitrary constant is not required. The reverse shifter shifts the intermediate result in an opposite direction to a direction that the first shifter shifts the input value. In other aspects the second-level de-mapper has a constant multiplier that receives the result from the function generator. It multiplies the result by a constant to generate the intermediate result. The constant is a function of the second shift signal from the second priority encoder. The present invention relates to an improvement in gamma correction circuits. The following description is presented to enable one of ordinary skill in the art to make and use the invention as provided in the context of a particular application and its requirements. Various modifications to the preferred embodiment will be apparent to those with skill in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the particular embodiments shown and described, but is to be accorded the widest scope consistent with the principles and novel features herein disclosed. The inventor has realized that the amount of logic can be reduced for a segment-mapped gamma corrector by using two levels of mapping. Although it would seem that using 2 levels of mapping and de-mapping would increase hardware requirements, some choices for these levels can actually reduce hardware requirements. Proper choices for nesting of segment mapping can reduced the priority encoding necessary while maintaining high precision. For example, precision of 13 segments can be achieved using two levels of mapping each with 4 segments per level. Two 4-bit priority encoders are needed rather than one larger 13-bit priority encoder. The amount of logic is reduced by at least 50%. 5 Primary-level mapper Final input Y is in the range of a standard segment that is operated on by gamma corrector Two levels of de-mapping are needed to convert corrected output Y′ to the final output W′ that is the gamma-corrected value for input W. Second-level de-mapper Primary-level de-mapper Two levels of segment mapping are performed. Input W and final output W′ correspond to the x and y value of the gamma function in a smallest segment. Intermediate input X and intermediate output X′ correspond to x and y values of the gamma function in an intermediate segment that is larger (wider) than the smallest segment, but smaller than the standard segment. Final input Y and corrected output Y′ correspond to the x and y value of the gamma function within the standard segment. 6A, B Any input in the lower primary segments X Any input in smaller segment Y Seven segments are mapped by the primary level and two more segments for the second level. This is a total of 7+2 or 9 segments. A 7-level priority encoder is used in the primary level while a 2-level priority encoder is used in the second level. Note that the precision of the primary level is 1/4096, the range of the smallest segment. This same precision required a 13-level priority encoder in the prior art of Each of the segments in a level are ratio-metrically related to other segments in that level. In this example, for the primary level, each successive segment is one-quarter the width of the next segment. The length in x of segment i is related to the next segment i−1 by the equation:
Likewise the segment lengths for the second level of segments are related to each other by the equation:
In the above example, the value of gamma did not determine the segmentation. If the value of gamma is assumed to be 2.0, then alpha a is 0.5. The primary mapping follows the equation:
The secondary mapping is:
The second de-mapper passes Y′ through X′ when n=0. When n=1, the complement of the secondary mapping equation is used for de-mapping.
The primary de-mapper performs the complement of the primary mapper. W and W′ are related by alpha:
8 OR gates Even-bit shifter For example, when W is in primary segment X The primary mapper can be implemented by K/2 OR gates, where K is the number of bits in input W. The number of primary segments is K/2+1, and the primary priority encoder is a K/2-bit encoder with K/2+1 states for shift signal M. In the example above with a 12-bit input W. K is 12. There are 12/2 or 6 OR gates, a 6-bit priority encoder, and 7 primary segments. The primary priority encoder and shifter are much simpler than in the prior art since the number of bit-positions is cut in half (K/2 rather than K). In this example, a 6-bit primary priority encoder is used rather than a 12-bit priority encoder as in the prior art of The second-level mapper (not shown) is much simpler, since there are only 2 second-level segments. N can be either 0 or 1. The second priority encoder can be a few simple gates, and the second-level shifter either shifts by 0 or 1 bit positions. Even when the simple second-level shift and encoder are included, the amount of logic required is much less than for the prior art. The final output Y from second-level mapper The second-level de-mapper is also quite simple since there are only 2 second-level segments. Multiplier The intermediate output X′ from multiplier 10A, B In Any input in the lower primary segments X Any input in smaller segments Y Four segments are mapped by the primary level and four more segments for the second level. This is a total of 4+4 or 8 segments. A 4-level priority encoder is used in each of the primary and secondary levels. Note that the precision of the primary level is still 1/4096, the range of the smallest segment. This same precision required a 13-level priority encoder in the prior art of If the value of gamma is assumed to be 4/3 or 1.33, then alpha a is 0.75. The designer selected ratio constants a=16 and b=2. The primary mapping follows the equation:
This equation for the primary mapping can be implemented by a shifter that shifts by a multiple of four bit-positions (0, 4, 8, 12). The secondary mapping is:
Since there are 4 secondary segments in this example, n can be 0, 1, 2, or 3. A 3-bit priority encoder and a shifter that shifts by 0, 1, 2, or 3 bit positions can implement the second-level mapper. The second de-mapper passes Y′ through to X′ when n=0. When n=1, the complement of the secondary mapping equation is used for de-mapping:
The second de-mapping can be implemented with multiplier that receives the corrected output Y′ and selects one of four constants (either 1, 0.5946, 0.3536, or 0.2102) depending on second shift signal N. The primary de-mapper performs the complement of the primary mapper. W and W′ are related by alpha:
Thus the primary de-mapper can be implemented as a shifter that shifts the intermediate output X′ by 3 m bits to the right. In general, the primary-level de-mapper implements the equation:
For this embodiment, K=12 bits, and a K/4-bit (3-bit) encoder can be used for implementing the primary encoder with K/4 (3) OR gates. The primary shifter shifts by 4M bits. The second-level encoder is also a K/4-bit priority encoder with a second shifter implemented by a 3-bit shifter. The primary de-mapper shifts by 3M bits while the second-level de-mapper is implemented by a multiplier that selects from among 4 constants. The gamma corrector system uses multiple levels of segment mapping. The cost of the gamma correction system can be reduced by reducing the amount of logic required for a large multi-bit priority encoder. The number of constants that must be stored is reduced. The precision from a large number of segments is still achieved, but with a lower logic burden. High precision while using a small priority encoder is possible. An efficient structure for a gamma correction apparatus uses multiple levels of segment mapping. The amount of logic can be reduced for a segment-mapped gamma corrector by using two levels of mapping. Although it would seem that using 2 levels of mapping and de-mapping would increase hardware requirements, since 5 stages or blocks rather than 3 blocks are needed, some choices for these levels can actually reduce hardware requirements. Proper choices for nesting of segment mapping reduces the priority encoding necessary while maintaining high precision. The precision of 13 segments is achieved using two levels of mapping each with 4 segments per level. Two 4-bit priority encoders are needed rather than one larger 13-bit priority encoder. The amount of logic is reduced by more than 50%. The number of pre-defined constants that must be stored is also reduced by more than 80%. Several other embodiments are contemplated by the inventor. For example the logic may be implemented in a wide variety of ways. Standard components such as macro or library cells may be used, or a logic-synthesis tool that generates the actual logic gates may be used with the functional logic equations as inputs. Programmable devices or blocks may be used. The invention may be integrated as part of a much larger system, such as a digital camera controller integrated circuit. The multi-level scheme may be applied to a wide variety of functions other than the gamma function, such as power functions. The invention may also be used to calculate root-mean-square (RMS) and square root functions, which can be thought of as power functions with a negative exponent. The segment lengths do not have to be the same in a level, but could be varied multiples of each other. The gamma correction function can be applied to the Y component of a YUV pixel, or to each of the R, G, B components of a RGB pixel. The various values can be encoded into signals in a variety of ways other than simple binary encoding. Encryption may also be used. Pipelining can be added by inserting staging registers at various points in the system. For example, the mapping and de-mapping can be pipelined. The priority encoder outputs can be latched and used in a later pipeline stage by the de-mappers. The foregoing description of the embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. Patent Citations
Classifications
Legal Events
Rotate |