MIXING A GRAPHICS SIGNAL AND A VIDEO SIGNAL

Abstract: In a method of mixing a graphics signal and a video signal in a ratio alpha:(1-alpha), where the graphics signal is obtained by addressing a color lookup table (CLUT) in which color values (R, G, B) are stored, the number of color values stored for each mixing ratio depends on the mixing ratio so as to obtain an optimum filling of the color lookup table.

Description: Mixing a graphics signal and a video signal. The invention relates to a method and a device for mixing a graphics signal and a video signal, and to a multimedia apparatus comprising such a device. It is, inter alia, an object of the invention to provide a graphics / video signal mixing in which an optimum efficiency of hardware elements is achieved. To this end, a first aspect of the invention provides a method as defined by claim 1. A second aspect of the invention defines a method as defined by claim 2. A third aspect of the invention defines a device as defined by claim 3. A fourth aspect of the invention defines a multimedia apparatus as defined by claim 7. Advantageous embodiments are defined in the dependent claims. A primary aspect of the invention provides a method of mixing a graphics signal and a video signal in a ratio alpha: (1 -alpha), where the graphics signal is obtained by addressing a color lookup table in which color values are stored, in which the number of color values stored for each mixing ratio depends on the mixing ratio to obtain an optimum filling of the color lookup table. In the claims, the notion "color values" not only covers red, green and blue color values, but also values which represent colors by means of a luminance value and chrominance values. These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described hereinafter. In the drawings, the figure shows a display apparatus in accordance with the present invention. In the figure, a frame buffer FB furnishes an 8-bit address signal to a color lookup table CLUT. The color lookup table CLUT furnishes color values R (red), G (green) and B (blue), or luminance signals Y and chrominance signals U, V, as well as a mixing factor alpha ( ), to a first input of a mixer MIX. A second input of the mixer MIX receives a video signal in the form of color signals R', G' and B\ or in the form of a luminance signal Y' and chrominance signals U', V. The mixer MIX furnishes an output signal in the form of color signals R", G" and B", or in the form of a luminance signal Y" and chrominance signals U", V". The mixer output signal is applied to a display D thru a postprocessing unit PP. If the mixer output signal is built up by means of the luminance signal Y" and chrominance signals U", V", the postprocessing unit PP ensures a necessary conversion to RGB color signals. The display apparatus of the figure may be a television receiver equipped with a teletext function; other applications are, however, by no means excluded, so that the invention is broadly applicable in any multimedia apparatus in which graphics information and a video signal are mixed before they are displayed. A terminal (e.g. a settop box on a TV set) comprising the color lookup table CLUT with predefined contents (a standard table) is able to receive and display bitmaps encoded in accordance with the standard table, without the need to transmit the standard table with the bitmaps, and without having to carry out complicated color translations within the terminal. This invention concerns a display system, which incorporates a frame buffer FB, a color lookup table CLUT, and a video mixer MIX. An image is stored in the frame buffer FB and can be displayed by the system mixed with video, in several levels of transparency. The main idea of the invention is how to fill the available space in the clut effectively, and how to combine this usage of the clut with image-processing techniques, such as dithering and color space conversion. Each pixel datum as produced by the frame buffer FB during the display process is used in the clut as an address in the table which stores three color values and one transparency value. Useful choices for color components are the red, green and blue triplet, or the YUV triplet. The transparency value is usually indicated by alpha. The mixer takes the graphics color values as produced by the clut, multiplies them by alpha, takes the video color values, multiplies these by (1-alpha) and adds the two products, resulting in a weighted average between graphics and video inputs, with the weight determined by alpha. Hence, each pixel may have a different weight. (Full transparency: alpha = 0, no transparency: alpha = 1.) In consumer systems, both the number of bits per pixel as stored in the frame buffer and the number of entries in the clut are usually very small. Typically, the frame buffer FB stores 8 bits per pixel, and the number of clut entries is appropriately 256. This means that great care must be taken in the usage of the available entries in the clut. There are several good ways of filling in the clut, but only for cluts that produce just color values. The clut as discussed here also produces alpha values, and therefore a new way of filling the clut is needed. The simplest approach is to assign a regular lattice in the color-transparency space to the clut. This means that we choose a number of levels for the three color components and the alpha channel, and fill the clut with the cartesian product (i.e. all combinations) of these levels. For example, we could assign 4 levels to each channel, resulting in 4x4x4x4=256 entries, filling the clut precisely. Supposing we work with RGB color components, a somewhat wiser choice might be (R G B alpha) 4x5x3x4 = 240 levels. Even though the clut is not entirely filled, the resulting picture may actually be better, because the green channel is dominant in determining picture quality. Filling the clut with a cartesian product is helpful when the images to be stored in the frame buffer need to be dithered. Dithering images is a (collection of) technique(s) through which the number of colors in a single image is reduced, while keeping image quality more or less acceptable. More sophisticated dithering algorithms maintain a great deal of the quality, but take much processing power to execute. One way of reducing algorithm complexity is to dither each color component separately, which requires a clut filling that is a cartesian product. Reference is made to EP-A-0,639,920 (Attorneys' docket PHN 14,552) for a preferred image rendering system employing dithering with a reduced palette of colors. However, allowing all transparency levels to have the same number of clut entries is not a good way of using the clut space. This can be seen by looking at the full transparency level (alpha = 0), where only one entry would suffice. Generalizing, at lower alpha values, fewer input color levels are needed to achieve the same output color resolution. As alpha is used as a linear factor on each of the graphics color channels, the number of color linear factor on each of the graphics color channels, the number of color levels should approximately rise linearly with the alpha value. This means that the total number of colors per transparency level should rise approximately with the cube of alpha. Suppose 0 < = a < =A, i.e. there are A+ l transparency levels. Assuming that the number of colors for a= l is C, the total number of colors is approximately A 2 *(A+ l) 2 *C/4 when summing over all alpha levels. Assuming again that the total number of colors in the clut is 256, the following table results: A = 1 2 3 4 5 6 7 C = 256.0 28.4 7.11 2.56 1.138 .5805 .3265 C*A 3 = 256 227.5 192.0 163.8 142.2 125.4 112.0 The next step is to find a suitable position for the colors per transparency level. Suppose we are interested in the application of simple dithering methods in this system. Then it would be advantageous to have at each transparency level a cartesian product in the clut. This means that, at each transparency level, the number of colors we reserve in the clut should be a product of three numbers, being the number of color levels for each of the color channels. As an example, let it be assumed that there are RGB color channels. It is well known that the blue channel needs the least amount of resolution, the red channel needs some more, and the green channel requires a still higher resolution. As the transparency level influences all three color channels, it needs the highest resolution as compared to the color channel resolutions at the highest alpha level. A reasonable allocation of levels would be (R,G,B,a) = (5,6,4,7). Note that this corresponds closest to the figures for A =6 above. Starting from the options A =6 or A =7, we can try to find nice fillings of the clut with cartesian products at other levels. One aspect that needs to be taken into account is that, at lower resolution levels, the number of levels should be increased to some extent, because the calculations have been rounded down and these rounding errors are particularly noticeable at a low resolution. For example, when a= l, i.e. at the lowest transparency level that still shows some graphics, the minimum number of levels for each color channel is 2, resulting in a minimum clut usage of 8. This results in the following division: A =6 (i.e. 7 levels of transparency) a 0 1 2 3 4 5 6 C*a 3 0 0.6 4.6 15.7 37.2 72.3 125.4 R,G,B 1,1,1 2,2,2 2,3,2 3,3,2 3,4,3 4,5,3 5,6,4 R*G*B 1 8 12 18 36 60 120 Total number of colors used: 255. An implementation of a Color Lookup Table with a variable number of clut entries per Transparency value follow below. Number of Transparency values : 5 (100% 75% 50% 25% 0%) Example: clut[14] = [ 0,127,255], in which 14 is the clut index, 0 is the value of the red color signal R, 127 is the value of the green color signal G, and 255 is the value of the blue color signal B. Clut entries for transparency = 0% clut[ 0] = [ 0, 0, 0] 0, 0] clut[ 1] = [ 0, 0,127] 0,127] clut[ 2] = [ 0, 0,255] 0,255] clut[ 3] = [ 0, 31, 0] 31, 0] clut[ 4] = [ 0, 31,127] 31,127] clut[ 5] = [ 0, 31,255] 31,255] clut[ 6] = [ 0, 63, 0] 63, 0] clut[ 7] = [ 0, 63,127] 63,127] clut[ 8] = [ 0, 63,255] 63,255] clut[ 9] = [ 0, 95, 0] 95, 0] clut[ 10] = [ 0, 95,127] 95,127] clut[ 11] = [ 0, 95,255] 95,255] clut[ 12] = [ 0,127, 0] 127, 0] clut[ 13] = [ 0,127,127] 127,127] clut[ 14] = [ 0,127,255] 127,255] clut[ 15] = [ 0,159, 0] 159, 0] clut[ 16] = [ 0,159,127] 159,127] clut[ 17] = [ 0,159,255] 159,255] clut[ 18] = [ 0,191, 0] 191, 0] clut[ 19] = [ 0,191,127] 191,127] clut[ 20] = [ 0,191,255] 191,255] clut[ 21] = [ 0,223, 0] 23, 0] clut[ 22] = [ 0,223,127] 23,127] clut[ 23] = [ 0,223,255] 23,255] clut[ 24] = [ 0,255, 0] 55, 0] clut[ 25] = [ 0,255,127] 55,127] clut[ 26] = [ 0,255,255] 55,255] clut[ 54] = [ 127,, 0, 0] clu [ 88] ■■ [191 , 63,127] clut[ 55] = [ 127,, 0,127] clu [ 89] [191 , 63,255] clut[ 56] = [ 127,, 0,255] clu [ 90] [191 , 95, 0] clut[ 57] = [ 127,, 31, 0] clu I 91] [191 , 95,127] clut[ 58] = I 127,, 31,127] clu [ 92] [191 , 95,255] clut[ 59] = [ 127,, 31,255] clu [ 93] [191 ,127, 0] clut[ 60] = I 127,, 63, 0] clu [ 94] [191 ,127,127] clut[ 61] = [ 127,, 63,127] clu [ 95] [191 ,127,255] clut[ 62] = [ 127,, 63,255] clu [ 96] [191 ,159, 0] clut[ 63] = [ 127,, 95, 0] clu ■[ 97] [191 ,159,127] clut[ 64] = j ;127,, 95,127] clu [ 98] [191 ,159,255] clut[ 65] = [ 127,, 95,255] clu [ 99] [191 ,191, 0] clut[ 66] = | 127,, 127, 0] clu [100] [191 ,191,127] clut[ 67] = | ;127,,127,127] clu [101] [191 ,191,255] clut[ 68] = | ;127,, 127,255] clu [102] [191 ,223, 0] clut[ 69] = | .127,,159, 0] clu [103] [191 ,223,127] clut[ 70] = | 127,,159, 127] clu [104] [191 ,223,255] clut[ 71] = | ;127,,159,255] clu [105] [191 ,255, 0] clut[ 72] = | [127,,191, 0] clu [106] [191 ,255,127] clut[ 73] = | :127,, 191, 127] clu [107] [191 ,255,255] clut[ 74] = [127,, 191,255] clu [108] [255 , 0, 0] clut[ 75] = [127,,223, 0] clu [109] [255 , 0,127] clut[ 76] = [127,,223, 127] clu [110] [255 , 0,255] clut[ 77] = [127,,223,255] clu [H I] [255 , 31, 0] clut[ 78] = [127,,255, 0] clu [112] [255 , 31,127] clut[ 79] = [127,,255, 127] clu [113] [255 , 31,255] clut[ 80] = [127,,255,255] clu [114] [255 , 63, 0] clut[ 81] = [191,, 0, 0] clu [115] [255 , 63,127] clut[ 82] = [191,, 0,127] clu [116] [255 , 63,255] clut[ 83] = [191,, 0,255] clu [117] [255 , 95, 0] clut[ 84] = [191,, 31, 0] clu [118] [255 , 95,127] clut[ 85] = [191,, 31,127] clu [119] [255 , 95,255] clut[ 86] = [191,, 31,255] clu [120] [255 ,127, 0] clut[ 87] = [191,, 63, 0] clu [121] [255 , 127,127] clut[122] = [255,127,255] clut[129] [255,223, 0] clut[123] = [255,159, 0] clut[130] [255,223,127] clut[124] = [255,159,127] clut[131] [255,223,255] clut[125] = [255,159,255] clut[132] [255,255, 0] clut[126] = [255,191, 0] clut[133] [255,255,127] clut[127] = [255,191,127] clut[134] [255,255,255] clut[128] = [255,191,255] Clut entries i for transparen clut] 135] = [ 0, 0, 0] clut [158] [ 85,170,255] clut] [136] = [ 0, 0,255] clut [159] [ 85,212, 0] clut] [137] = [ 0, 42, 0] clut [160] [ 85,212,255] clut [138] = [ 0, 42,255] clut [161] [ 85,255, 0] clut [139] = [ 0, 85, 0] clut [162] [ 85,255,255] clut [140] = [ 0, 85,255] clut [163] [170, 0, 0] clut 141] = [ 0,127, 0] clut [164] [170, 0,255] clut [142] = [ 0,127,255] clut [165] [170, 42, 0] clut [143] = [ 0,170, 0] clut [166] [170, 42,255] clut [144] = [ 0,170,255] clut [167] [170, 85, 0] clut [145] = [ 0,212, 0] clut [168] [170, 85,255] clut [146] = [ 0,212,255] clut, [169] [170,127, 0] clut [147] = [ 0,255, 0] clut [170] [170,127,255] clut, [148] = [ 0,255,255] clut [171] [170, 170, 0] clut [149] = [ 85, 0, 0] clut [172] [170,170,255] clut [150] = [ 85, 0,255] clut [173] [170,212, 0] clut [151] = [ 85, 42, 0] clut [174] [170,212,255] clut [152] = [ 85, 42,255] clut [175] [170,255, 0] clutl [153] = [ 85, 85, 0] clut [176] [170,255,255] clut [154] = [ 85, 85,255] clut [177] [255, 0, 0] clut [155] = [ 85,127, 0] clut [178] [255, 0,255] clut [156] = [ 85,127,255] clut [179] [255, 42, 0] clut [157] = [ 85,170, 0] clut [180] [255, 42,255] clut[181] = [255, 85, 0] clut[186] [255,170,255] clut[182] = [255, 85,255] clut[187] [255,212, 0] clut[183] = [255,127, 0] clut[188] [255,212,255] clut[184] = [255,127,255] clut[189] [255,255, 0] clut[185] = [255,170, 0] clut[190] [255,255,255] Clut entries for transparency = 50% clut[191] [ 0, 0, 0] clut [209] [127,153, 0] clut[192] [ 0, 0,255] clut [210 [127, 153,255] clut[193] [ 0, 51, 0] clut [211 [127,204, 0] clut[194] [ 0, 51,255] clut [212 [127,204,255] clut[195] [ 0,102, 0] clut [213 [127,255, 0] clut[196] [ 0,102,255] clut [214 [127,255,255] clut[197] [ 0,153, 0] clut] [215 [255, 0, 0] clut[198] [ 0,153,255] clut [216 [255, 0,255] clut[199] [ 0,204, 0] clut [217 [255, 51, 0] clut[200] [ 0,204,255] clut [218 [255, 51,255] clutpOl] [ 0,255, 0] clut [219 [255, 102, 0] clut[202] [ 0,255,255] clut [220 [255, 102,255] clut[203] [127, 0, 0] clut] [221 [255, 153, 0] clut[204] [127, 0,255] clut [222 [255, 153,255] clut[205] [127, 51, 0] clut [223 [255,204, 0] clut[206] [127, 51,255] clut] [224 [255,204,255] ciutpoη [127,102, 0] clut [225 [255,255, 0] clut[208] [127, 102,255] clut [226] [255,255,255] Clut entries for transparency = 75 % clut[227] = [ 0, 0, 0] clut[230] = [ 0, 85,255] clut[228] = [ 0, 0,255] clut[231] = [ 0,170, 0] clut[229] = [ 0, 85, 0] clut[232] = [ 0, 170,255] clut[233] = [ 0,255, 0] clut[238] = [255, 85,255] clut[234] = [ 0,255,255] clut[239] = [255,170, 0] clut[235] = [255, 0, 0] clut[240] = [255,170,255] clut[236] = [255, 0,255] clut[241] = [255,255, 0] clut[237] = [255, 85, 0] clut[242] = [255,255,255] Clut entry for transparency = 100% clut[243] = [ 0, 0, 0] These values for R,G,B do not care. A primary aspect of the present invention can be summarized as follows. The invention concerns the use of a color lookup table (clut) in a display, where the contents of a frame buffer are superposed onto a video image at one of a plurality of transparency levels. More specifically, an optimum way of filling the clut is described. Preferably, the number of possible colors for a given transparency level depends on the mixing ratio alpha: at a 100% transparency, a single value suffices, while the largest number of colors is needed at 0% transparency. Advantageously, a third power relationship is used. The number of colors is the product of the number RR of red values times the number GG of green values times the number BB of blue values, where preferably GG > = RR > = BB. It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the appended claims. In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. The invention can be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer.

Claims: CLAIMS: 1. A method of storing color values (R,G,B) and a mixing factor (α) into a color lookup table (CLUT), characterized in that the number of color values (R,G,B) stored for each mixing factor ( ) depends on the mixing factor ( ). 2. A method of mixing a graphics signal (R,G,B) and a video signal (R',G',B') in a ratio alpha: (1 -alpha), where the graphics signal (R,G,B) is obtained by addressing a color lookup table (CLUT) in which color values (R,G,B) are stored, characterized in that the number of color values (R,G,B) stored for each mixing ratio depends on the mixing ratio. 3. A device for mixing a graphics signal (R,G,B) and a video signal (R',G',B') in a ratio alpha:(l-alpha), where the graphics signal (R,G,B) is obtained by addressing a color lookup table (CLUT) in which color values (R,G,B) are stored, characterized in that the number of color values (R,G,B) stored for each mixing ratio depends on the mixing ratio. 4. A device as claimed in claim 3, wherein the number of color values (R,G,B) stored for each mixing ratio depends on the third power of the factor (α) by which the color values (R,G,B) are multiplied in the mixing operation. 5. A device as claimed in claim 3, wherein a number of different green color values (G) is equal to or exceeds a number of different red color values (R), where the number of different red color values (R) is equal to or exceeds a number of different blue color values (B). 6. A device as claimed in claim 5, wherein a number of different mixing ratios is equal to or exceeds the number of different green color values (G). 7. A multimedia apparatus, comprising: a graphics and video signal mixing device as defined in claim 3; and a display (D) coupled to an output of said mixing device.

Inventors: POL EVERT JAN, VAN SPLUNTER MARINUS, POL, EVERT, JAN, VAN SPLUNTER, MARINUS
Applicants: PHILIPS ELECTRONICS NV, PHILIPS NORDEN AB, PHILIPS ELECTRONICS N.V.
Application year: 1997
Main classification: H04N5
IPC codes: G09G3, G09G5, H04N5, H04N9