Look-up table based gamma and inverse gamma correction for high-resolution frame buffers

Abstract: An image display system includes an input to a source (10, 12, 14) of image pixel data wherein each pixel is expressed as an M-bit value within a non-linear range of values. A first LUT (16) is coupled to an output of the source for converting each M-bit pixel value to an N-bit value within a linear range of values. An image memory, or frame buffer (18), has an input coupled to an output of the first LUT for storing the N-bit pixel values. The system further includes a second LUT (20) coupled to an output of the frame buffer for converting N-bit pixel values output by the frame buffer to P-bit pixel values within a non-linear range of values. The converted values are subsequently applied to a display (24). In an exemplary embodiment, the first LUT stores gamma corrected pixel values and the second LUT stores inverse gamma corrected pixel values. Preferably the second LUT stores a plurality of sets of inverse gamma corrected pixel values. Also, the frame buffer stores, for each of the N-bit pixel values, a value that specifies a particular one of the plurality of sets of inverse gamma corrected pixel values for use in converting an associated one of the N-bit pixel values.

Description: This invention relates generally to image display apparatus and method and, in particular, to apparatus and method for applying a non-linear transform to a displayed image. The light output of a phosphor from a cathode-ray tube (CRT), also referred to herein as a monitor, exhibits a power-law relationship to a video signal voltage applied to the CRT's cathode. To compensate for this non-linear behavior, the video signal is predistorted with a power-law function which is the inverse of that performed by the CRT. The resultant signal modulates the CRT cathode such that a linear transition of the light levels in the scene or image produce a linear transition in the light output of the CRT phosphors. CRT light output (luminance) is defined by the power law function L = E Y , where E is video signal voltage and y is the power function exponent, referred to as gamma. Gamma is typically in the range of 2 to 3 for most CRT displays. To produce linear transitions in CRT light output, E is transformed to E' by the relation E' = E 1/Y . This mathematical process is known as an inverse gamma function or, more commonly, as gamma correction. Image data which has been gamma corrected can, in turn, be linearized by applying the gamma function E = E' y to the data. This process is known as inverse gamma correction. Figs. 1a-1d illustrate the function of gamma correction during image reproduction. In these figures a human observer is replaced with a photometer so as to quantify the light output of the monitor. In computer graphics systems, wherein an image is synthesized by the computer, the computer/renderer/database behavior, which generates the image, is functionally identical to the camera in the image reproducer chain. Inverse gamma correction therefore applies the monitor's function to a gamma-corrected input signal, yielding a linearized output. In digital video systems, gamma correction may be performed on an image using two distinct techniques. A first technique performs gamma correction on each picture element (pixel) as it is generated by the imaging system. Subsequently, these gamma corrected pixels are stored in an image memory, referred to as a frame buffer. Gamma corrected pixels are then read from the frame buffer and presented to a digital-to-analog converter (DAC) for conversion to an analog signal to drive the CRT. However, in that gamma correction is a nonlinear operation, two undesirable effects result. First, any additional operations performed on these pixels, for example linear mixing of two images, must consider the mathematical impact of the gamma corrected values upon the resultant value, since A + (1 - α ) B ≠ [αA' + (1 - α) B'] v (where A and B are the linear pixel values, A' and B' are the gamma corrected pixel values, and α is the mixing ratio). Hence, a mixing operation must first inverse gamma correct the two pixels before mixing, and then gamma correct the result before storage. This is obviously a time consuming process and may be impractical for large numbers of pixels. Second, as will be illustrated below, a gamma corrected integer pixel requires more bits than a linear integer pixel in order to uniquely define an identical set of intensity values. This in turn requires a larger frame buffer and long-word arithmetic capability. A second technique stores and performs mathematical operations upon linear pixel values, and then performs gamma correction just prior to converting the pixels to an analog voltage by means of a look-up table (LUT) operation. The linear pixel values read from the frame buffer are used as an index to a memory (LUT) whose contents have been precalculated to satisfy the above mentioned gamma correction equation. It is the LUT's contents which are then applied to the DAC. Performing gamma correction on integers with y > 1 requires that the output set of integers contain more numbers than the input set, in order to maintain unique numbers. This can be observed when performing gamma correction on 8-bit integers (a common pixel size for digital video samples) for y = 2.0. The transformed 8-bit output integers exhibit 64 duplicates, for a loss of 25% of the input set values. Referring to Table 1 in Appendix A it can be seen that increasing y to only 2.2 yields 72 duplicates for a loss of over 28%. Clearly, losses of these magnitudes are unacceptable in a high quality digital video system. The use of a look-up memory or look-up table (LUT) to provide gamma correction has been previously employed as indicated by the following U.S. Patents. In U.S. Patent No. 4,805,013, issued February 14, 1989, entitled "Image Data Conversion System" to Dei et al. there is disclosed the use of a RAM for storing a gamma conversion table. A CPU is enabled to load gamma conversion data that corresponds to a gamma conversion curve calculated by the CPU into the RAM. In U.S. Patent No. 4,394,688, issued July 19, 1983, entitled "Video System Having an Adjustable Digital Gamma Correction for Contrast Enhancement" to Iida et al. there is disclosed a video system that includes a RAM in which video data is altered in accordance with the contents of a table look-up that is temporarily written therein. A ROM device stores a plurality of different table look-ups, each containing data representing a different gamma correction. A CPU obtains a table look-up from the ROM and writes same into the RAM. This technique enables the selection of only a single table look-up, and therefore a single gamma correction per image. In U.S. Patent No. 4,688,095, issued August 18, 1987, entitled "Programmable Image-Transformation System" to Beg et al. there is described an image processing system having a multiplexor that supplies address signals to a look-up table whose resulting output is applied as data to a frame buffer. By changing selection signals applied to the multiplexor, it is said to be possible to use this system alternately for transformations dependent only on newly generated data, transformations dependent only on stored data, and transformations dependent on both. The look-up table may store different correction functions for each of 16 different combinations of camera and display device. The look-up table address is formed from a combination of possible sources including an output of an eight bit A/D and the output of a four bit register. In operation, a computer loads the look-up table and, if necessary, loads a value into the register to designate a portion of the look-up table to be used. The disclosure of Beg et al. permits gamma correction to be performed only on incoming video data from the A/D and, if the A/D data is linearized, it is not re-gamma corrected before DAC processing and display. As a consequence, if non-linearized data were to be placed in the frame buffer of Beg, any operation performed upon this data must compensate for the non-linear data. Furthermore, Beg et al. sample a gamma corrected signal with eight-bit accuracy and effectively do not use at least 2-bits/pixel in the frame buffer when linearizing a gamma corrected pixel. In U.S. Patent No. 4,568,978, issued February 4, 1986, entitled "Method of a Circuit Arrangement for Producing a Gamma Corrected Video Signal" to Cosh there is disclosed a method for correcting a video signal by a gamma correction factor. A gamma correction circuit forms a logarithm of an input signal and a logarithm of a correction factor. The two logarithmic signals are summed and an anti-logarithm of the exponential of the summed signal is taken. PROMs are employed for storing conversions. Cosh notes that for each input code to translate to a unique output code the output code must have four times the resolution of the input code. For example, if the input is defined by 10 bits the output should have 12 bits. It is thus one object of the invention to provide an improved image display system and method. The object of the invention is solved by the features laid down in the independent claims. The invention provides for a method for determining an optimum number of bits required for a gamma correction look-up table output so as to achieve unique values for a specified number of input bits and for a selected range of gamma values. In particular, the invention further provides an image generation system that includes an image buffer that receives and stores linear, gamma corrected digital data and that outputs the linear data to an inverse gamma corrector. Further, the invention particularly provides a pixel-by-pixel selection of a function to be applied to each pixel so as to enable a gamma windowing function to be implemented, wherein a foreground gamma correction is applied to a window in a display, the foreground gamma correction being different than a background gamma correction and especially a dynamically programmable LUT memory in combination with a frame buffer having one or more (N-bit + W-bit) planes, where N-bits represent linear information, such as color, and wherein W-bits represent a display window identifier. The foregoing and other problems are overcome and the object of the invention is realized by a digital video system architecture and method as defined in claims 1, 10 and 15 which provides a power-full and flexible means of performing non-linear transformations upon digital image data. The invention may employ read/write look-up table memories to perform arbitrary non-linear operations upon image data, either over an entire image or within user-defined windows into the image. The teaching of the invention is particularly useful for performing gamma and inverse gamma correction to image data, but may also be applied to provide enhancement and restoration capabilities for image analysis. The teaching of the invention may further be applied so as to modify an image to obtain a desired aesthetic effect. The invention provides method and apparatus for performing gamma correction upon digital video values on a per pixel basis with minimal or no loss of information during the transform process. The invention pertains to both the transformation of linear intensity values to gamma corrected values and to the transformation of gamma corrected intensity values to linear values. In that gamma correction and inverse gamma correction are specific cases of a more general class of non-linear transforms of image intensity, the teaching of the invention may employed so as to alter the transfer characteristic of the video display generally. Thus, analytic or aesthetic enhancements of the image may be accomplished. In accordance with an exemplary embodiment of the invention, an image processing system includes an input to a source of image pixel data wherein each pixel has an M-bit value within a non-linear range of values. A first LUT is coupled to an output of the source and converts each M-bit pixel value to an N-bit value within a linear range of values. An image memory, or frame buffer, has an input coupled to an output of the first LUT and stores the linear N-bit pixel values. The system further includes a second LUT coupled to an output of the frame buffer for converting N-bit pixel values output by the frame buffer to P-bit pixel values within a non-linear range of values. The converted values are subsequently applied to a display. In an exemplary embodiment, the first LUT stores gamma corrected pixel values and the second LUT stores inverse gamma corrected pixel values. Preferably the second LUT stores a plurality of sets of inverse gamma corrected pixel values. Also, the frame buffer further stores, for each of the N-bit pixel values, a value that specifies a particular one of the plurality of sets of inverse gamma corrected pixel values for use in converting an associated one of said N-bit pixel values. The above set forth and other features of the invention are made more apparent in the ensuing detailed description of the Invention when read in conjunction with the attached drawing, wherein: Figs. 1a-1d illustrate the process of gamma correction and inverse gamma correction, wherein Fig. 1a shows a linear output of a camera, Fig. 1b illustrates a gamma correction that is applied to the camera output, Fig. 1c shows the inverse gamma correction applied at a display (monitor), and Fig. 1d shows the output of a photometer that is a linear function due to the gamma correction applied to the camera output; Fig. 2 illustrates a simplified look-up table based inverse gamma correction/gamma correction block diagram for a digital video system; Fig. 3 illustrates a window-based graphic system that employs a LUT-based inverse gamma correction technique to mix images from cameras with different gamma corrections; Fig. 4 illustrates the simultaneous the use of different gamma functions to obtain contrast expansion; Fig. 5 shows a frame buffer memory constructed so as to have a plurality of input gamma correctors and a plurality of output gamma correctors; Fig. 6 illustrates in greater detail the input inverse gamma correctors shown in Fig. 5; and Fig. 7 illustrates in greater detail the output gamma correctors shown in Fig. 5. Fig. 2 illustrates a simplified block diagram of a look-up table based inverse gamma correction/gamma correction technique for use in a digital video system. Signal inputs from the camera 10 and outputs to monitor 24 are presumed to be analog. The inputs and outputs of the constituent blocks are indicated to be analog or digital and linear or non-linear by the attendant pictographs. The gamma correction block 12 following the camera 10 is an analog function typically built into the camera 10. Following the gamma correction block 12, that is, the output of the camera 10, is an analog-to-digital converter (ADC) 14 that provides M digital outputs to the address inputs of a first LUT, specifically a inverse gamma correction (IGC) LUT 16. The output of LUT 16 is N-bits that are applied to an input of a frame buffer (FB) 18. The output of FB 18 is N-bits that are applied to the address inputs of a second LUT, specifically a gamma correction (GC) LUT 20. The output of GC LUT 20 is P-bits (P ≥ N) of digital gamma corrected video data that is applied to an input of a DAC 22. The output of DAC 22, for a color system, is three analog signals. These three analog signals are a red (R) analog signal, a blue (B) analog signal, and a green (G) analog signal. Analog signals are applied to monitor 24, resulting in the display of a gamma corrected image. For a high quality camera 10 the operation of the gamma correction block 12 may be disabled. Thus, the outputs to the ADC 14 are linear and the gamma correction action of the IGC LUT 16 is suppressed. Also, for image data generated by a source other than a camera, such as by a digital computer, linear video data may be applied directly to the FB 18. In any case, the approach of the system is to preserve linear color representation in the FB 18. Fig. 3 illustrates a window based graphics system that employs the LUT-based inverse gamma correction technique if Fig. 2 to mix images from sources, such as cameras, having different gamma corrections. By applying the appropriate inverse gamma correction to each camera source, in real time, all images are linearized in the FB 18 and are therefore displayed on a common monitor 14 without losing intensity values in any of the windows. While the LUT gamma correction technique described thus far provides a fast and inexpensive means of performing non-linear transforms upon pixel values, two enhancements may be made. Specifically, in that the pixel values which serve as the addresses into the LUTs and the data read from the LUTs are integers, loss of information, and therefore errors, may be produced by gamma correction if insufficient attention is given to the range of values which are required to uniquely represent all of the input set of values in the output set of values. Secondly, since the LUT based gamma correction technique of the invention does not affect the pixel values stored in the FB 18, a separate means is provided to provide a pixel-accurate gamma window function. In this case a user, on a pixel-by-pixel basis, selects which one of a plurality of precalculated gamma functions are to be applied to specific areas (windows) on the display. By example, Fig. 4 shows the simultaneous the use of different gamma functions to obtain contrast expansion, and illustrates a technique whereby a user expands low contrast areas, or alternately compresses high contrast areas, within a window in order to observe image detail which may otherwise be unintelligible. In accordance with an aspect of the exemplary embodiment of invention, a method for determining a minimum number of bits required for the LUT output, to achieve unique values for a specified number of input bits and for a selected range of gamma values, is now presented. More specifically, this method determines a scaling coefficient S which, when used with the identity relation E = [S(e)1/y/S] y , provides recovery of all integer values of E. Since this relation is the mathematical equivalent of the inverse gamma function (gamma correction) performed by the digital imaging system and the gamma function performed by the monitor 24, the coefficient S determines the number of bits of any intermediate integers used in the transform and inverse transform process. For a case where the camera gamma is not equal to the monitor gamma, P # M, and the scale factor S is found to satisfy the following relations: O = INT[(P-1)(I/N-1) 1/y + 0.5] and I = INT[(N-1)(O/P-1) y + 0.5], where N = number of linear input levels, P = number of gamma corrected output levels, (I/N-1) and (O/P-1) are normalized input and output values, respectively, S = P-1, and INT is a truncating integer function. The above mentioned identity equation is obtained by substituting the equation for O into that for I. Therefore, for N = log 2n number of input bits, P = (N + 1) for y > 1. The value of P is increased until the identity is satisfied, i.e. no duplicates are generated. The tables shown in Appendices A and B, respectively, illustrate the effect of increasing P from 8 to 10 bits for y = 2.2. Appendix A shows the large number of duplicate values produced for P = 8-bits, while Appendix B shows that with P = 10-bits that no duplicate values are generated. As a result, there is no loss of intensity information over the range of input bits. It can be empirically determined that for N = 8, P = 10 satisfies the identity relation for 1 ≤ γ ≤ 4.2. Performing inverse gamma correction, i.e. linearizing intensity which was previously gamma corrected, requires a smaller output data set then the input data set. By example, this may be required after sampling a video camera which has a gamma corrected analog output, as is frequently the case. The IGC LUT memory 16 operating at a sample clock frequency instantaneously performs the transform. From the above example, a 10-bit (M) camera sample is used as the index to the IGC LUT 16 which generates an 8-bit (N) linear output value for 1 ≤ γ ≤ 4.2. This is an efficient process since the resultant 8-bit transformed sample may then be directly mixed with other 8-bit linear values so as to form composite video images in real time. The block diagram of Fig. 5 shows in greater detail data paths using the integers I and O. When digitizing a gamma corrected analog input, as from a camera, care should be taken when mapping the larger data set O to the smaller data set I. A median value method may be employed to select which intermediate numbers in the O set are assigned to those in the I set. The use of a median value may be illustrated by an example taken from Table 2 of Appendix B. The analog input is digitized with 10-bit accuracy. Any number from 0 to 1023 may be obtained at the output of the ADC 14, such as the values 264, 265, 266, etc. In order to determine the corresponding number at the output (O) of the LUT 16 for such intermediate inputs (I) a median value is determined. For example, the median value of 264 and 274 is 268, and the median value of 255 and 264 is 260. Thus, to all ADC 14 generated inputs between, by example, 260 and 268 only one output number (13) is assigned. In Fig. 5 the FB 18 has a plurality of N+W-bit planes, where N-bits represents linear color information and where W-bits represents a window identification number (WID). All bit planes of FB 18 are accessible by a host (not shown). The gamma compensated input source is sampled with the ADC 14, which has M bits per pixel output. The input data is converted to linear data with Inverse Gamma Correction LUT 16 which outputs N bits per pixel. On the video output, for each pixel there are N + W bits. The N bit linear color data is gamma corrected with one of 2 W gamma correction tables stored within the Gamma Correction Block LUT 20, based on WID, which outputs P bits per pixel. These P bits are in turn loaded into the DAC 22 to be displayed on the monitor 24. This technique supports simultaneous multiple gamma corrections based on the WID associated with each pixel stored in the FB 16. Thus, there may be as many as 2 W different gamma corrected windows present within the system video output, as shown in Fig. 3 for the case of three gamma corrected windows (W1, W2, W3). Input Device The following is the description of the input inverse gamma correction logic as shown in Fig. 6. The gamma corrected analog input signal, such as a signal from the video camera 10, is sampled and converted to M-bit digital data by the ADC 14. The linearization of the sampled gamma corrected data is performed by the IGC LUTs 16 which convert M-bits into N-bits. The value of M is determined, as described above, by the maximum value of input device gamma y. As indicated above, M = 10 for N = 8 for reasonable values of y. It may be desirable to write the sampled data into the FB 16 in parallel. For example, if Video RAM (VRAM) chips utilized to implement the FB 16 have a random port bandwidth of 16.6 Mhz (60 nS cycle time), then in order to store a HDTV camera signal sampled at 74.25 Mhz, the memory must be interleaved at least 5 (j = 5) ways to provide sufficient bandwidth to store the sampled data. The transformation may be accomplished immediately after the ADC 14, before parallelization, by employing a fast LUT 16 which matches the period of a sample clock (SAMPLE_CLOCK). Alternately, the transformation may be done after parallelization, by using a slower LUT 16 which matches the FB 18 cycle period. The second method is illustrated in Fig. 6 and is preferred over the first since slower LUT 16 memory is more readily available and operates independently of the high speed sample clock. The circuitry of Fig. 6 functions in the following manner. The analog input signal is sampled and clocked at the ADC 14 every sample clock period (SAMPLE_CLOCK). The output of the ADC 14 is loaded into registers REG_1 through REG_J in a round robin fashion via signals LD_1 through LD_j, respectively. Thus, the first sampled data is loaded into REG_1 with the LD_1-strobe, the second sampled data is loaded into REG_2 with LD_2-strobe, and so on, until the last round robin LD_j strobe is generated. On the following SAMPLE_CLOCK period, a new robin cycle is initiated by again strobing LD_1. Simultaneously, the data already stored within REG_1 through REG_j is parallel loaded into REG_j + 1 through REG_2j. Thus, the LD_1 strobe controls the loading of REG_1 and all of the registers REG_j+1 through REG_2j. The data stored in REG_j+1 through REG_2j are used as address inputs to a set of IGC LUTs 16, which in turn provide N bit linear data to the FB 18. The contents of LUTs 16 are updated from the local host via host computer address bus (WS_ADDR); host computer data bus (WS_DATA); and control signals IGC LUT Enable (WS_EN_IGC-) and IGC LUT write strobe (WS_WRT_IGC-). Normally, both WS_EN_IGC- and WS_WRT_IGC- are deasserted. When deasserted, WS_WRT_IGC- selects multiplexors (MUX_1 through MUX_j) outputs to be sourced from registers REG_j+1 through REG_2j, thereby providing the sampled data from the ADC 14. This signal also forces local host data buffers (BUF_1 through BUF_j) into a high impedance mode, and enables the output of LUTs 16, thus enabling the linearized color data to be available to FB 18. During an IGC LUT 16 update cycle by the local host, the local host first asserts the WS_EN_IGC- signal, which causes MUX_1 through MUX_j to select the WS_ADDR as address inputs to the LUTs 16, and disables the LUTs 16 outputs. The BUF outputs are enabled such that WS_DATA is used as the input to the LUTs 16 data ports. Subsequently, the local host strobes WS_WRT_IGC- which loads the WS_DATA into the LUTs 16 at the address specified by WS_ADDR. Video Output Device The following is the description of the video output device shown in Fig. 7. It may be required that the serial output port of the FB 18 be parallelized to achieve a desired video bandwidth. For example, a 60 Hz 1280 x 1024 resolution display requires a bandwidth of 110MHz. Since a typical VRAM has serial output bandwidth of less than 40 MHz, the FB 18 serial output must be interleaved at least four ways. The interleaved serial outputs of the FB 18 are then loaded into the serializer 26 which is capable of being shifted at the video clock rate. There are two methods to implement gamma correction using the GC LUT memories 20. The transformation may be done after serialization, just before the DAC 22, by using high speed LUTs 20 that match the video clock period. Alternately, gamma correction can be accomplished before serialization by employing slower LUT memories 20 that match the VRAM serial output cycle period. The second method is preferred over the first method in that slower LUT memory is more readily available and operates independently of the video clock period. Fig. 7 illustrates this second, preferred approach. N-bits of linear color value is gamma corrected by the GC LUTs 20. The result is P-bits of gamma corrected data which is input to the DAC 22, via serializer 26. DAC 22 thus has a P-bit wide input. As was discussed previously, the actual value of P is a function of the required gamma value for video output correction. For the case where the monitor gamma and camera gamma are relatively close, then P may equal M. For some cases the output correction may require more bits or the same number of bits as the input correction. For example, if the gamma of the monitor is equal to 1, then P may equal N. As was previously stated, a general rule is that P ≥ N. For certain special effects, different gamma corrections may be applied based on the value of WID, as illustrated in Figs. 3 and 4. This is accomplished by FB 18 containing the plurality of N+W-bit planes, where N-bits represent linear color data and W-bits the WID. Therefore, each pixel is represented, in each FB 18 memory plane, by N+W-bits of data. N-bit video data from the FB 18 is concatenated with the W-bit WID. As an example, if WID is represented by three bits then 2 3 , or eight, different gamma corrections can be simultaneously in effect for a given display screen frame. This corresponds to eight distinct windows. It is noted that different gamma corrected pixel regions can be overlapped because, after gamma correction, all images are linearized. For example, in Fig. 3 it is assumed that window 3 was sampled last and also incidentally overlaps window 2. The images are not overlayed, but a portion of the overlap window is rewritten during sampling or rewritten by the local host. If mixing of two images is required the mixing does not occur in real time. By example, sampling is disabled in window 2 and a portion of the window 2 which may be overlapped is stored by the local host. Sampling is again enabled and window 3 is sampled. Sampling is then disabled and the local host then mixes the image pixels from each of the overlapped regions. During normal operation, both a local host enable gamma correction signal (WS_EN_GC-) and a local host write gamma correction( WS_WRT_GC-) signal are deasserted. As such, WS_EN_GC- forces multiplexors (MUX_1 through MUX_k) to select the concatenated VIDEO_DATA and WID; disables local host data buffers (BUF_1 through BUF_k); and enables the LUT 20 output. Therefore, the output of the LUTs 20 provide the gamma corrected P-bit value, based on address supplied by the N-bit linear color data, from a selected one of the 2 w gamma correction tables, based on WID. That is, by changing the value of WID different regions of the GC LUT 20 are addressed. For the example shown in Fig. 3, the pixels within window 1 are gamma corrected from a first correction table stored within GC LUT 20, the pixels within window 2 are gamma corrected from a second correction table stored within GC LUT 20, etc. The simultaneous use, within a display screen, of different correction tables enables image data from various sources to be displayed at, for example, one brightness level. Also, different regions (windows) of a displayed image can be given different brightnesses or contrasts as desired for a particular application. Data is shifted out of the serializer 26 at every video clock (VID_CLK). On every k-th VID_CLK, a signal LD_VID_DATA- is generated, which parallel loads parallel data, the output of LUTs 20, into the serializer 26 shift registers. During a GC LUT 20 update cycle by the local host, the local host first asserts the WS_EN_GC- signal, which causes MUX_1 through MUX_K to select the WS_ADDR as the output of the MUXs. The assertion of the WS_EN_GC-signal also disables the LUT 20 outputs and enables the BUF outputs, such that WS_DATA is used as the input to the LUTs 20 data port. Subsequently, the local host strobes WS_WRT_GC-, which loads the WS_DATA into the LUTs 20 using the address provided by WS_ADDR. It should be noted that for a R, G, B frame buffer 18, there are three sets of IGC LUTs 16 and GC LUTs 20, one for each of the R, G, B, data paths. However, there is only one WID path, since all R, G, B data bits are applied to the same window. Thus, a minimum number of bit planes is 3N+W for the RGB system. This provides independent gamma correction for each color component for both the input and the output of the FB 18. The foregoing has disclosed methods and apparatus for performing non-linear pixel based intensity transforms, such as gamma and inverse gamma correction, upon digital video data. The use and design of LUT memories to perform these operations has been described. Also, use of a secondary pixel plane to select from multiple gamma functions in the LUT provides a windowing capability to specifically support multiple display gammas, in addition to generally performing non-linear image processing within a window. Furthermore, the significance of input-to-output number capacity has been addressed so as to minimize losses for gamma transforms in both directions. Also, a method for determining adequate integer number ranges for both transforms has been disclosed.

Claims: An image display system comprising: a source (10) of image pixel data wherein each pixel has an M-bit value within a non-linear range of values; characterized by first means (16), coupled to an output of said source, for converting each of said M-bit pixel values to an N-bit value within a linear range of values; storage means (18), having an input coupled to an output of said first converting means, for storing the N-bit pixel values; and second means (20), coupled to an output of said storage means (18), for converting N-bit pixel values output by said storage means to P-bit pixel values within a non-linear range of values prior to the application of said converted P-bit pixel data to a display means, wherein M preferably is greater than N and wherein P preferably is equal to or greater than N. Image display system as set forth in claim 1, wherein said first converting means (16) operates in accordance with a gamma correction function and wherein said second converting means (20) operates in accordance with an inverse gamma correction function. Image display system as set forth in claim 1 or 2, wherein said first converting means (16) includes a first memory means having address inputs coupled to said M-bit pixel values, said first memory means having a plurality of entries each of which stores a gamma corrected pixel value. Image display system according to any one of the preceding claims, wherein said second converting means (20) includes a second memory means having address inputs coupled to said N-bit pixel values, said second memory means having a plurality of entries each of which stores an inverse gamma corrected pixel value. Image display system according to any one of the preceding claims, wherein said first memory means and said second memory means are each coupled to means for storing said corrected pixel values therein. Image display system according to any one of the preceding claims, wherein said second memory means stores a plurality of sets of inverse gamma corrected pixel values, and wherein said storage means further stores, for each of the N-bit pixel values, a value that specifies a particular one of said plurality of sets of inverse gamma corrected pixel values for use in converting an associated one of said N-bit pixel values. Image display system according to any one of the preceding claims, wherein P and N are related to an expression E = [s(e) 1/Y /s] Y , where E is a video signal voltage and where y is a power function exponent, both of which are associated with the display means, and where the coefficient S satisfies the following relations: O = INT[(P-1)(I/N-1) 1/y + 0.5] and I = INT[(N-1)(O/P-1) y + 0.5], where N = a number of linear input (I) levels, P = a number of gamma corrected output (O) levels, (I/N-1) and (O/P-1) are normalized input and output values, respectively, S = P-1, and INT is a truncating integer function. Image display system according to any one of the preceding claims, wherein said source means (10) further comprises an analog-to-digital conversion means having an input for receiving the inverse gamma corrected signal from said camera and an output for expressing the inverse gamma corrected signal with M-bits. Image display system according to any one of the preceding claims and further including a digital-to-analog conversion means having a P-bit input coupled to an output of said second converting means. A method of operating an image display system, comprising the steps of: generating image pixel data wherein each pixel has an M-bit value within a non-linear range of values; characterized by the further steps of: converting each of the M-bit pixel values to an N-bit value within a linear range of values; storing the N-bit pixel values; converting N-bit pixel values output by said storage means to P-bit pixel values within a non-linear range of values; and said method preferably further comprising a step of applying the converted P-bit pixel data to a display means; wherein M preferably is greater than N and wherein P preferably is equal to or greater than N. Method as set forth in claim 10, wherein said first step of converting operates in accordance with a gamma correction function and wherein the second step of converting operates in accordance with an inverse gamma correction function and said second step of converting preferably converts the N-bit pixel values in accordance with one of a plurality of sets of inverse gamma corrected pixel values. Method as set forth in claims 10 or 11, wherein the second step of converting includes a step of specifying, for each N-bit pixel value, a particular one of the plurality of sets of inverse gamma corrected pixel values. Method according to any one of claims 10 to 12, wherein M and N are related to an expression E = [s(e) 1/Y /s] y , where E is a video signal voltage and where y is a power function exponent both of which are associated with the display means, and where the coefficient S satisfies the following relations: O = INT[(P-1)(I/N-1) 1/y + 0.5] and I = INT[(N-1)(O/P-1) y + 0.5], where N = a number of linear input (I) levels, P = a number of gamma corrected output (O) levels, (I/N-1) and (O/P-1) are normalized input and output values, respectively, S = P-1, and INT is a truncating integer function. Method according to any one of claims 10 to 13 and further including a step of digital-to-analog converting the P-bit bit pixel values. An image display apparatus comprising: a source (10) of image pixel data wherein each pixel is expressed with M-bits within a non-linear range of values; characterized by means (16), coupled to an output of said source, for gamma correcting each of said M-bit pixel values to an N-bit value within a linear range of values; frame buffer means (18), having an input coupled to an output of said first converting means, for storing the gamma converted N-bit pixel values, said frame buffer means being preferably coupled to a host means operable for storing N-bit image pixel data therein; means (20), coupled to an output of said frame buffer means, for inverse gamma correcting N-bit pixel values output by said frame buffer means to P-bit pixel values; and means, coupled to an output of said inverse gamma correcting means, for converting the P-bit pixel data to an analog voltage for driving a CRT-display means, wherein M preferably is greater than N and wherein P preferably is equal to or greater than N. Image display apparatus as set forth in claim 15, wherein said first look-up table means and said second look-up table means are each coupled to a host means operable for storing gamma correction values and inverse gamma correction values, respectively, therein. Image display apparatus according to claim 15 or 16, wherein said second look-up table means stores a plurality of sets of inverse gamma corrected pixel values, and wherein said frame buffer means (18) further stores, for each of the N-bit pixel values, a value expressed with W-bits that specifies a particular one of said plurality of sets of inverse gamma corrected pixel values for use in converting an associated one of said N-bit pixel values. Image display apparatus according to any one of claims 15 to 17, wherein said frame buffer means (18) is comprised of xN+W-bit memory planes, where x is a number of color signal inputs to said CRT-display means.

Inventors: CHOI SUNG MIN, LUMELSKY LEON, PEEVERS ALAN WESLEY, PITTAS JOHN LOUIS, SWART CALVIN BRUCE, CHOI, SUNG MIN, LUMELSKY, LEON, PEEVERS, ALAN WESLEY, PITTAS, JOHN LOUIS, SWART, CALVIN BRUCE
Applicants: IBM, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1992
Main classification: G09G1
IPC codes: G09G5, H04N5, G09G1, G06T5