BACKGROUND OF THE INVENTION
[0001] This invention relates generally to the display of color images on a computer terminal
and, more particularly, to a method of processing, storing, and referencing data representing
image color.
[0002] In many computer terminal systems, image color data are stored as R,G,B (red, green,
blue) color component values in predetermined memory locations. Often, red values
are stored in one group of memory locations, green values in another, and blue values
in a third group. To select a color, made up of one color value from each of the groups,
the user usually specifies a color number or index. The index, which represents a
single (one-dimensional) address, permits access to the particular set of RGB values
representing the selected color. One such prior art "single index" system is described,
for example, in U.S. Patent 4,509,043 issued April 2, 1985 to inventor P.X. Mossaides.
[0003] Another type of prior art system is the "true color" system, in which the true or
actual colors of an object are sought to be displayed. One such true color system
is described, for example, in the Model One/25 Programming Guide published December
12, 1983 by Raster Technologies Corporation. In such a true color system, the user
generally specifies the RGB color values themselves (rather than color numbers or
indexes) to represent a selected color. The "color values" approach is representative
of the true color system--a three-dimensional color referencing system. The "color
number" approach is representative of the index color system--a one-dimensional color
referencing system.
[0004] True color systems are generally used to produce shaded images, to display scanned-in
images, and to simulate physical phenomena such as colored lights illuminating a scene
composed of colored objects. Indexed color systems are generally used to depict color
of icon symbols, to represent scalar values, or to distinguish image segments (e.g.,.
primitives such as points, lines, arcs, circles, rectangles, polygons, and text).
[0005] Often it is desirable to display symbolic icons, specified in index color, superimposed
on shaded images specified in true color. To accomplish this, what is needed is a
system which would permit both true-color representation and index color representation.
SUMMARY OF INVENTION
[0006] In accordance with the illustrated preferred embodiment of the invention, a method
and apparatus is disclosed which provides for the display of both true-color images
and index color images. The user may specify either a color number to denote index
color, or RGB color values to denote true color. Index color operations and true color
operations are performed in an index color environment. To perform true color operation
in an index color environment, the apparatus computes one-dimensional index-type data
from user-supplied three-dimensional true color data. The user specifies the number
of color levels to be used in representing the range of displayable red, green and
blue colors, and specifies the RGB values of the color to be displayed. The apparatus
derives true color data (RGB color level values) from the number of color levels specified
by the user, stores the derived data in memory in a predetermined arrangement suitable
for referencing by a single address or index, and derives from the user-specified
RGB values a single address for referencing the stored data.
[0007] The apparatus comprises a keyboard and a port to a host computer for inputting index
color data and true color data, a processing means coupled to the keyboard and/or
host computer for producing index-type data from true color data, a memory means for
storing the input data and data produced by the processing means, and a display means
for displaying stored data.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008]
Fig. 1 is block diagram of a system of the prior art capable of performing index color
operations.
Fig. 2 is a block diagram showing an arrangement of data in a memory of the system
of Fig. 1;
Fig. 3 is a block diagram of a system of the prior art capable of performing true
color operations;
Fig. 4 is a block diagram of the apparatus of the present invention for performing
index color operations and true color operations in an index color environment;
Fig. 5 is a block diagram showing a color map memory of the apparatus of Fig. 4;
Fig. 6 is a block diagram showing the range of displayable colors as a three-dimensional
color coordinate space;
Fig. 7 is a block diagram of a concatenation mask used in the apparatus of Fig. 4;
and
Fig. 8 is a block diagram showing multiple bit planes, a true color surface and a
single. index surface.
DESCRIPTION OF THE PREFERRED EMBODIMENT
[0009] Fig. 1 shows a system of the prior art capable of performing index color operations.
Fig. 2 shows a color map memory of the system, RGB data typically stored in the memory,
and a one-dimensional (single color index) address scheme for referencing stored data.
Fig. 3 shows a three-dimensional address scheme of the prior art for referencing stored
data. From user-supplied RGB values stored in image memory, references are made to
color values stored in three look-up tables (LUTs). Fig. 2 shows a one address (index)
scheme, while Fig. 3 shows a three address (true color) scheme.
[0010] Fig. 4 shows a true-color one-address scheme, the scheme utilized by the apparatus
of the present invention. Like the prior art system described in U.S. patent 4,509,043,
the apparatus of the present invention is capable of performing index color operations.
Unlike prior art systems, the apparatus is capable of performing true color operations
in an index color environment.
[0011] The apparatus comprises a keyboard 10 and port to a host computer for inputting index
color data and true color data, a processing means 11 coupled to the keyboard and/or
host computer for producing index-type data from true color data, a memory means 13
for storing the input data and data produced by the processing means, and a display
means 15 for displaying stored data.
[0012] The processing means 11 includes a microprocessor 12
" having a ROM (read only memory, not shown) with a stored program, and a vector generator
18. The memory means 13 includes a memory 14 for storing index information, a video
display memory 20, and a color map memory 22. The display means 15 includes a video
timing and control circuit 16, and a CRT (cathode ray tube) display with associated
deflection circuit and D to A (digital-to-analog) converter.
[0013] The apparatus of the present invention is much like the system described in U.S.
patent 4,509,043 for performing index operations, and the description of that system
applies as well to the present apparatus. However, in the performing of true color
operations in and color map memory of the present apparatus are designed to operate
differently from said system, as described below.
[0014] Fig. 5 shows color map memory 22 of the present apparatus in greater detail. Like
the prior art, the RGB values are arranged in tabular form in memory, with each memory
location containing one set of R,G,and B values addressable by a single address. Unlike
the prior art, the RGB values in the tables are calculated (derived) by the apparatus
from data supplied to the apparatus. The calculation is performed by processor 12
under control of the stored program. (Examples of the stored program are presented
in Appendixes A and B.) Also unlike the prior art, the single address used to reference
the RGB values in the table is derived by processor 12 of the apparatus from RGB values
specified by the user. Thus, in the present invention, both the RGB table values and
the single address for referencing the RGB table values are derived by the apparatus.
[0015] The initial user of the apparatus (e.g., the supplier of the apparatus) specifies
the RGB color values to be used in populating the table, by uniformly quantizing the
closed interval from zero to one for each color. For example, the user may specify
the number of the displayable levels to be Q (i.e., Q discrete quantization levels
of red, green, and blue displayable primary colors). Thereafter, the apparatus calculates
the actual table entries (i.e., the true-color RGB values which, when referenced subsequently
by a single index-type address, produces the original user-specified values).
[0016] As shown in Table I, one set of displayable primary color levels may be:

[0017] The five quantization levels occupy the range from 0% to 100% of displayable red;
green, and blue primary colors.
[0018] As shown in Fig. 6, the range of displayable colors may be viewed as a three-dimensional
color space, where (0,0,0) represents black, i.e., 0% red, 0% green, 0% blue, (1,0,0)
represents 100% red, (0,1,0) represents 100% green, (0,0,1) represents 100% blue,
and (1,1,1) represents white, i.e., 100% red, 100% green and 100% blue.
[0019] As shown in Fig. 6, the user of the apparatus may select:
Q, levels of Red
Q2 levels of Green
Q3 levels of Blue
[0020] when representing a true-color object within the limits of the displayable colors
of the apparatus. From the displayable levels specified by the user, the apparatus
derives (calculates) color values suitable for single index referencing (single addressing),
and stores the derived values in tables in memory for later use.
[0021] The apparatus calculates the color values (table entries) and populates the RGB tables
as follows:
Red (address) = i/(Qi - 1)
Green (address) = j/(Q2 - 1)
Blue (address) = k/(Q3 - 1)
where:
Q1 represents the number of quantization levels specified for red
Q2 represents the number of quantization levels specified for green
Q3 represents the number of quantization levels specified for blue
quantization level i = 0 to Q1 - 1
quantization level j = 0 to Q2 - 1
quantization level k = 0 to Q3 - 1
address = i + Q, J + Q, QW2Q k
n represents the number of permissible table entries.
and
(Q1 × Q2 × Q3) < n.
or
Q1 x Q2 x Q3 ≦ 2m, where m represents the number of bit planes, as shown for example in Figs. 2 and
8.
[0023] The sequence in which the data is stored in memory 22 ensures that, from the RGB
values specified by the user, the processor 12 will derive the appropriate index (single
address) for referencing the correct RGB values in memory 22. Processor 12 derives
each single address (index) by means of the following formula:
Index = [R (Q1 - 1)] rounded + Q1 [G (Q2 -1)] rounded + Q1 Q2 [B (Q2 -1)] rounded.
[0024] Thus, as shown in Table I above, from the three-dimensional true color value (.25,
.5, .75) specified by the user, the address 86 would be derived by processor 12, permitting
access to the correct RGB values in the table.
[0025] An alternative formula for deriving single addresses (indexes) from specified (input)
RGB values is:
[RQ1 ]truncated + Q1 [G Q2]truncated + Q1 Q2 [B Q3]truncated
where: 0≦R< 1;0≦G< 1;0≦B< 1
and Q1, Q2, Q3, are powers of two.
Given B, bits of red, 82 bits of green and B3 bits of blue, and given an m-bit plane surface, as shown for example in Fig. 8, where
m = b1 + b2 + b3 and b1 ≦ B1, b2 ≦ B2, b3 ≦ B3, then the above-mentioned truncation operation may be performed as shown in
Fig. 7, where the b1 most significant bits (MSB) of the R field, and the b2 MSB of the G field, and the b3 MSB of the B field, are concatenated, and shifted to align it with the m-bit
[0026] In the foregoing, the method for converting from true color data to single index
data is described. The method include the steps of deriving true color data (i.e.,
RGB color level values) from the number of color levels specified by the user, storing
the derived data in memory in predetermined arrangement suitable for referencing by
a single address or index, and deriving from user-supplier RGB color values a single
address for referencing the stored data.
[0027] Appendix A shows RGB values, and associated single index addresses, derived for:
Q1 = 5 red levels
Q2 = 5 green levels
Q3 = 5 blue levels,
the RGB values being in the range 0 to 255, representing 0% to 100%.
[0028] Appendix B shows RGB values, and associated single index addresses, derived for:
Q, = 7 red levels
Q2 = 6 green levels
Q3 = 5 blue levels,
the RGB values being in the range 0 to 255, representing 0% to 100%.
[0029] In appendix C below, index and true color data (stored in binary form in color map
memory 22) are shown for both a single index surface (surface 1) and a true color
surface (surface 2). For example, of the address "00 01 10 11 shown in Appendix C
and in Fig.. 8, the "00" represents a color index for surface 1, and the "01 10 11
represents RGB color values for surface 2. The address was computed (derived) from
user-supplied index and true color values. The address is used to reference the RGB
values "01010101 10101010 11111111".
[0030] Depending on which surface has priority over the other, the RGB values may differ
for a given address. For example, given the computed address "01 11 11 11", if the
RGB values "10000000 10000000 10000000" had been predetermined to represent the color
index "01", and the RGB values "11111111 11111111 11111111 " had been predetermined
to represent the RGB color level "11 11 11", then the RGB values "10000000 10000000
10000000" would be used if the indexed color surface had priority, and the RGB values
"11111111 11111111 11111111 " would be used if the true color surface had priority.