|Publication number||US5900861 A|
|Application number||US 08/534,957|
|Publication date||May 4, 1999|
|Filing date||Sep 28, 1995|
|Priority date||Sep 28, 1995|
|Publication number||08534957, 534957, US 5900861 A, US 5900861A, US-A-5900861, US5900861 A, US5900861A|
|Inventors||Brian R. Nickerson, Chunrong Zhu|
|Original Assignee||Intel Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (30), Non-Patent Citations (6), Referenced by (7), Classifications (9), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application is related to U.S. application Ser. No. 08/224,833, filed Apr. 8, 1994 as Attorney Docket No. 366403-982; U.S. application Ser. No. 08/236,230, filed Apr. 29, 1994 as Attorney Docket No. 366403-744; and U.S. application Ser. No. 08/425,709, filed Apr. 19, 1995 as Attorney Docket No. 366403-639W.
1. Field of the Invention
The present invention relates to image processing, and, in particular, to computer-implemented processes, apparatuses, and computer programs for converting the color format of image signals.
2. Description of the Related Art
Different color formats are used to represent images in computer-based image processing systems. Standard computer monitors use a red-green-blue (RGB) color format for displaying image and graphics signals. For example, in RGB24 format, each image pixel is represented by three 8-bit component values representing the colors red, green, and blue, respectively. The RGB24 format Supports 224 different colors.
Many computer operating systems, such as the Microsoft® Windows™ operating system, provide a palette of colors that are made available to applications running under those operating systems. The palette may be defined as a color lookup table (CLUT) which provides a mapping from a CLUT index to a particular RGB24 color. For example, 8-bit CLUT8 indices may be used to define and access up to 256 different colors in a lookup table. The particular colors in the CLUT may be defined by the operating system, an application running under the operating system, or both, such that the operating system may define and reserve some of the colors in the palette and allow applications to define the rest.
Another set of color formats used in image processing is based on the 3-component YUV color system, in which Y represents the luminance component and U and V represent chrominance components. The YUV color system is used extensively in image compression applications, because it has been found to provide greater degrees of compression than, for example, the RGB color system. One such color format is the YUV9 (or YUV4:1:1) format. In this color format, each (4×4) block of image pixels is represented by a (4×4) block of 8-bit Y components, a single 8-bit U component, and a single 8-bit V component. As a result, each (4×4) pixel block is represented by (16×8+8+8) or 144 bits, for an of 9 bits per pixel. Thus, the name YUV9. Like the RGB24 format, the YUV9 format provides 224 different colors.
When decompressing YUV9 images for display on an RGB24 monitor, the decoded signals are preferably converted from YUV9 format to a CLUT format. The CLUT signals may then be transmitted to the graphics adapter card which uses the CLUT to convert the signals from CLUT8 format to RGB24 format for display on the monitor. What is needed is an efficient method for converting image signals from YUV9 format to CLUT format.
It is accordingly an object of this invention to provide an efficient method for converting image signals from YUV9 format to CLUT format. 10 Further objects and advantages of this invention will become apparent from the detailed description of a preferred embodiment which follows.
The present invention comprises computer-implemented processes, apparatuses, and storage mediums for converting image signals. According to a preferred embodiment, an image signal is provided in a first color format, wherein the image signal corresponds to an image pixel and comprises two or more components. An interleaved index is generated for the image signal from the two or more components, wherein bits from at least two of the components are interleaved in the interleaved index. The image signals are converted from the first color format to a second color format by retrieving the image signal in the second color format from a lookup table using the interleaved index.
Other objects, features, and advantages of the present invention will become more fully apparent from the following detailed description of the preferred embodiment, the appended claims, and the accompanying drawings in which:
FIG. 1 is a block diagram of an image processing system that converts image signals from YUV9 format to CLUT8 format, according to a preferred embodiment of the present invention; and
FIG. 2 is a flow chart of the processing implemented by the system of FIG. 1.
The present invention is directed to the conversion of image signals from one color format to another color format. In a preferred embodiment, image signals in YUV9 format are converted to CLUT8 format. The CLUT8 signals may then be transmitted to a computer monitor for conversion to signals in RGB24 format for display.
Referring now to FIGS. 1 and 2, there are shown, respectively, a block diagram of an image processing system 100 that converts image signals from YUV9 format to CLUT8 format and a flow chart of the processing implemented by system 100, according to a preferred embodiment of the present invention. System 100, which is preferably implemented in software on an Intel® Pentium Tm™ processor, is also preferably used to process sequences of video images, although it may also be adapted to process sets of one or more still images.
Decoder 102 of FIG. I decodes compressed image signals to generate image signals in YUV9 format (step 202 of FIG. 2). For each (4×4) block of each image, decoder 102 generates a (4×4) block of 8-bit Y components, a single 8-bit U component, and a single 8-bit V component. Each 8-bit Y component may be represented as (y7 y6 y5 Y4 y3 y2 y1 y0), each 8-bit U component as (u7 u6 u5 u4 u3 u2 u1 u0), and each 8-bit V component may be represented as (v7 v6 v5 v4 v3 v2 v1 v0), where y0, u0, and v0 are the least significant bits (LSBs) of the components.
YUV→CLUT index generator 104 generates interleaved indices from the YUV9 signals, where each interleaved index comprises the following 16-bit sequence:
(u7 v7 u6 v6 u5 v5 u4 v4 y7 y6 y5 y4 y3 y2 y1 y0)
(step 204). Since the U and V components are the same for all 16 pixels in a (4×4) block, index generator 104 preferably generates the upper byte (u7 v7 u6 v6 u5 v5 u4 v4) once and append lower byte (y7 y6 y5 y4 y3 y2 y1 y0) for the Y component of each different pixel in the block. Those skilled in the art will understand that the present invention covers alternative sequences for interleaved indices as well, such as, for example:
(v7 u7 v6 u6 v5 u5 v4 u4 y7 y6 y5 y4 y3 y2 y1 y0).
In a preferred embodiment, index generator 104 accesses a 256-byte lookup table to retrieve the upper byte (u7 v7 u6 v6 u5 v5 u4 v4) using (u7 u6 u5 u4 v7 v6 v5 v4) sa an index. An alternative preferred method is to use two 16-byte lookup tables: one that maps (u7 u6 u5 u4) to (u7 0 u6 0 u5 0 u4 0) and another that maps (v7 v6 v5 v4) to (0 v7 0 v6 0 v5 0 v4) and then combines (i.e., ORs or ADDs) the two 8-bit fields to generate the upper byte (u7 v7 u6 v6 u5 v5 u4 v4). Yet another alternative preferreed method is to use two 256-byte lookup tables: one that maps (u7 u6 u5 u4 u3 u2 u1 u0) to (u7 0 u6 0 u5 0 u4 0) and another that maps (v7 v6 v5 v4 v3 v2 v1 v0) to (0 v7 0 v6 0 v5 0 v4) and then combines the two 8-bit fields to generate the upper byte (u7 v7 u6 v6 u5 v5 u4 v4). Those skilled in the art will understand that using lookup tables to generate the interleaved upper byte may be faster to implement than manipulating the individual bits using such operations as shifting and/or masking.
YUV→CLUT lookup table 106 is then accessed using the 16-bit interleaved indices to retrieve the corresponding CLUT8 indices (step 206). Lookup table 106, which contains 216 or 64 K entries, maps the 16-bit interleaved indices to the corresponding CLUT8 indices. The retrieved CLUT8 indices, one for each pixel, are then transmitted to a computer monitor for conversion from CLUT8 format to RGB24 format for display (step 208). The graphics adapter card (not shown) of the computer monitor uses a CLUT→RGB lookup table to convert the signals from CLUT8 format to RGB24 format. The CLUT→RGB lookup table, which contains 28 or 256 entries, maps the 8-bit CLUT8 indices to the corresponding RGB24 signals.
For a number of reasons, the present invention provides for efficient conversion of image signals for display. Although there are known equations for converting from YUV color space directly to RGB color space, the computational loads involved in implementing these computational conversions may be too great for some applications, especially where the conversion is to be implemented in real-time on a general-purpose processor. By using a sequence of lookup tables, large numbers of pixels can be converted from one color format to another in a relatively short period of time.
In addition, since YUV9→CLUT8 conversion is preferably performed on the host processor and CLUT8→RGB24 conversion is preferably performed on the graphics adapter card, only one 8-bit CLUT8 index is transmitted from the host processor to the monitor for each pixel, rather than 24 bits of the RGB24 format. This provides faster transfer of image data from the host processor to the monitor.
The preferred conversion scheme of FIGS. 1 and 2 retains sufficient precision in the color components. The preferred scheme uses all of the available bits of the Y components as well as the four most significant bits (MSBs) of the U and V components. All of the Y bits are used since the eye is very sensitive to changes in intensity. Since the eye is less perceptive of changes in U and V, acceptable image quality is achieved even though the four LSBs of U and V are ignored.
In the preferred scheme of FIGS. 1 and 2, the U and V components contribute only to the upper byte of the interleaved indices and the Y components contributes only to the lower byte. This separation into distinct bytes provides for more efficient processing on a general-purpose processor such as an Intel® Pentium™ processor which has predefined instructions for accessing the lower two bytes of the processor registers.
Another area of efficiency provided by the present invention relates to the use of the on-chip cache. The lookup tables for the scheme of FIGS. 1 and 2 are too large (over 64 Kbytes) to fit within the 8 K on-chip cache of an Intel® Pentium™ processor Whenever a new location of the lookup table is accessed, the processor loads a corresponding region of the lookup table into the on-chip cache from external (i.e., off-chip) memory. This is slower than accessing a region of the lookup table that is already loaded into the on-chip cache. Cache efficiency refers to the frequency with which the on-chip cache is accessed without having to load new data from external memory. Higher cache efficiency generally implies more efficient processing.
By placing the U and V contributions to the interleaved indices in the upper byte, the upper byte is guaranteed to stay constant for at least 16 pixels in a row (where the conversion is performed on a (4×4) block by block basis). Even if the Y components change from pixel to pixel within a (4×4) block, the upper byte of the different interleaved indices remains constant, which means that the same 256-byte region of the lookup table are accessed at least 16 times in a row. This implies efficient use of the on-chip cache by reducing the frequency with which the processor has to read additional regions of the lookup table from external memory.
Cache efficiency is improved even more by interleaving the bits from the U and V components when generating the upper byte of the interleaved indices. If the U and/or V components vary only slightly from block to block, then using interleaved indices will provide greater overall cache efficiency than if the indices are not interleaved. In the non-interleaved case, the index may be defined as follows:
(u7 u6 u5 u4 v7 v6 v5 v4 y7 y6 y5 y4 y3 y2 y1 y0).
Assume, for example, that, in going from one block to the next, the u4 bit changes, but that the rest of the bits of U and V stay the same. In that case, the new non-interleaved index will be about 212 or 4 K bytes away from the previous non-interleaved index. Using interleaved indices, the new index would only be about 29 or 512 bytes away from the previous index. Since the indices are closer together, the chances that the location of the lookup table corresponding to the new index is already loaded into the on-chip cache are greater and cache efficiency is therefore higher.
In sum, the claimed invention provides efficient conversion from one color format to another by using fast lookup tables with efficient use of the on-chip cache.
In a preferred embodiment, the present invention is implemented on an Intel® Pentium™ processor. In alternative embodiments, other processors may be used.
In some preferred embodiments of the present invention, the U and V components are dithered to improve the quality of the displayed images. This dithering may provide an effective precision of 5 bits for the U and V planes. Dithering may also adversely affect the cache efficiency by changing the U and V components within a (4×4) block. Since these changes are typically small, however, the impact to cache efficiency will be minimal.
In a preferred embodiment, the CLUT→RGB lookup table is predefined by the operating system and/or by an application. In alternative embodiments, the CLUT→RGB lookup table may be defined in other ways, e.g., generated at run time by an application. Similarly, the YUV→CLUT lookup table may be predefined or even adaptively defined at run time by the application.
In a preferred embodiment, image signals are converted from YUV9 format to CLUT8 format for conversion to RGB24 format. In alternative embodiments, combinations of other color formats may be used.
The present invention can be embodied in the form of computer-implemented processes and apparatuses for practicing those processes. The present invention can also be embodied in the form of computer program code embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. The present invention can also be embodied in the form of computer program code, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention.
It will be further understood that various changes in the details, materials, and arrangements of the parts which have been described and illustrated in order to explain the nature of this invention may be made by those skilled in the art without departing from the principle and scope of the invention as expressed in the following claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4743959 *||Sep 17, 1986||May 10, 1988||Frederiksen Jeffrey E||High resolution color video image acquisition and compression system|
|US4775858 *||Aug 30, 1985||Oct 4, 1988||Quantel Limited||Video image creation|
|US4857992 *||Jan 19, 1988||Aug 15, 1989||U.S. Philips Corporation||Image display apparatus and method|
|US4868764 *||Apr 6, 1987||Sep 19, 1989||U.S. Philips Corporation||Image encoding and decoding method and apparatus|
|US4991122 *||Aug 31, 1989||Feb 5, 1991||General Parametrics Corporation||Weighted mapping of color value information onto a display screen|
|US5068644 *||May 17, 1988||Nov 26, 1991||Apple Computer, Inc.||Color graphics system|
|US5124688 *||May 7, 1990||Jun 23, 1992||Mass Microsystems||Method and apparatus for converting digital YUV video signals to RGB video signals|
|US5138303 *||Oct 31, 1989||Aug 11, 1992||Microsoft Corporation||Method and apparatus for displaying color on a computer output device using dithering techniques|
|US5142273 *||Sep 20, 1990||Aug 25, 1992||Ampex Corporation||System for generating color blended video signal|
|US5204664 *||May 8, 1991||Apr 20, 1993||Sanyo Electric Co., Ltd.||Display apparatus having a look-up table for converting pixel data to color data|
|US5218431 *||Apr 26, 1990||Jun 8, 1993||The United States Of America As Represented By The Secretary Of The Air Force||Raster image lossless compression and decompression with dynamic color lookup and two dimensional area encoding|
|US5218432 *||Jan 2, 1992||Jun 8, 1993||Tandy Corporation||Method and apparatus for merging video data signals from multiple sources and multimedia system incorporating same|
|US5220410 *||Oct 2, 1991||Jun 15, 1993||Tandy Corporation||Method and apparaus for decoding encoded video data|
|US5233684 *||Jun 26, 1990||Aug 3, 1993||Digital Equipment Corporation||Method and apparatus for mapping a digital color image from a first color space to a second color space|
|US5258826 *||Aug 18, 1992||Nov 2, 1993||Tandy Corporation||Multiple extended mode supportable multimedia palette and multimedia system incorporating same|
|US5329292 *||Nov 25, 1991||Jul 12, 1994||Hitachi, Ltd.||Display controller for a flat display apparatus|
|US5341442 *||Aug 24, 1993||Aug 23, 1994||Supermac Technology, Inc.||Method and apparatus for compression data by generating base image data from luminance and chrominance components and detail image data from luminance component|
|US5381180 *||Aug 16, 1993||Jan 10, 1995||Intel Corporation||Method and apparatus for generating CLUT-format video images|
|US5384582 *||Jun 16, 1993||Jan 24, 1995||Intel Corporation||Conversion of image data from subsampled format to clut format|
|US5406310 *||Feb 2, 1994||Apr 11, 1995||International Business Machines Corp.||Managing color selection in computer display windows for multiple applications|
|US5416614 *||Jun 23, 1992||May 16, 1995||Ibm Corporation||Method and apparatus for converting data representations of an image between color spaces|
|US5428465 *||Aug 12, 1992||Jun 27, 1995||Matsushita Electric Industrial Co., Ltd.||Method and apparatus for color conversion|
|US5428720 *||Sep 7, 1994||Jun 27, 1995||Milliken Research Corporation||Method and apparatus for reproducing blended colorants on an electronic display|
|US5430465 *||Mar 29, 1994||Jul 4, 1995||Sun Microsystems, Inc.||Apparatus and method for managing the assignment of display attribute identification values and multiple hardware color look-up tables|
|US5450098 *||Sep 19, 1992||Sep 12, 1995||Optibase Advanced Systems (1990) Ltd.||Tri-dimensional visual model|
|US5506604 *||Apr 6, 1994||Apr 9, 1996||Cirrus Logic, Inc.||Apparatus, systems and methods for processing video data in conjunction with a multi-format frame buffer|
|US5519439 *||Jun 30, 1994||May 21, 1996||Intel Corporation||Method and apparatus for generating preview images|
|US5598186 *||Mar 13, 1995||Jan 28, 1997||International Business Machines Corporation||System and method for image mapping in linear space|
|US5604514 *||Jan 3, 1994||Feb 18, 1997||International Business Machines Corporation||Personal computer with combined graphics/image display system having pixel mode frame buffer interpretation|
|US5668896 *||May 28, 1996||Sep 16, 1997||Dainippon Screen Mfg. Co., Ltd.||Method of and apparatus for processing image having a plurality of image areas|
|1||"Direct-to-Palette Dithering", by IBM Corp., an IBM Technical Disclosure Bulletin, vol. 37 No. 3 Mar. 1994, p. 95.|
|2||*||Default RGB Color Palette with Simple Conversion from YUV, by IBM Corp., an IBM Technical Disclosure Bulletin, vol. 33 No. 5 Oct. 1990, pp. 200 205.|
|3||Default RGB Color Palette with Simple Conversion from YUV, by IBM Corp., an IBM Technical Disclosure Bulletin, vol. 33 No. 5 Oct. 1990, pp. 200-205.|
|4||*||Direct to Palette Dithering , by IBM Corp., an IBM Technical Disclosure Bulletin, vol. 37 No. 3 Mar. 1994, p. 95.|
|5||*||IEEE Transactions on Consumer Electronics, vol. 37, Issue 3, Aug. 1991, pp. 182 189, Single Chip Video Processing System, by Hans J u rgen D e sor.|
|6||IEEE Transactions on Consumer Electronics, vol. 37, Issue 3, Aug. 1991, pp. 182-189, "Single-Chip Video Processing System," by Hans-Jurgen Desor.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6741263 *||Sep 21, 2001||May 25, 2004||Lsi Logic Corporation||Video sampling structure conversion in BMME|
|US6850228 *||Oct 29, 1999||Feb 1, 2005||Microsoft Corporation||Universal file format for digital rich ink data|
|US7239754 *||Jul 15, 2003||Jul 3, 2007||Hiroshi Akimoto||Method, apparatus and system for compressing still images in multipurpose compression systems|
|US8854389||Sep 22, 2004||Oct 7, 2014||Intel Corporation||Apparatus and method for hardware-based video/image post-processing|
|US20040013313 *||Jul 15, 2003||Jan 22, 2004||Hiroshi Akimoto||Method, apparatus and system for compressing still image in multipurpose compression systems|
|US20040155980 *||Feb 11, 2003||Aug 12, 2004||Yuji Itoh||Joint pre-/post-processing approach for chrominance mis-alignment|
|US20060062489 *||Sep 22, 2004||Mar 23, 2006||Samuel Wong||Apparatus and method for hardware-based video/image post-processing|
|U.S. Classification||345/601, 345/603, 348/488|
|International Classification||G09G1/28, G09G5/02|
|Cooperative Classification||G09G1/285, G09G5/02|
|European Classification||G09G1/28M, G09G5/02|
|Sep 28, 1995||AS||Assignment|
Owner name: INTEL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NICKERSON, BRIAN;ZHU, CHUNRONG;REEL/FRAME:007706/0033
Effective date: 19950920
|Nov 1, 2002||FPAY||Fee payment|
Year of fee payment: 4
|Nov 3, 2006||FPAY||Fee payment|
Year of fee payment: 8
|Dec 6, 2010||REMI||Maintenance fee reminder mailed|
|Apr 11, 2011||FPAY||Fee payment|
Year of fee payment: 12
|Apr 11, 2011||SULP||Surcharge for late payment|
Year of fee payment: 11