NamedColorsDoc.tioga
Last edited by Stone, August 16, 1985 10:57:29 am PDT
Avi Naiman, September 8, 1985 8:31:09 pm PDT
Crow, September 27, 1985 5:10:56 pm PDT
Rick Beach, October 27, 1985 10:31:02 am PST
NAMED COLORS
CEDAR 7.1 — FOR INTERNAL XEROX USE ONLY
Named Colors
Darlene Plebon, Maureen Stone, Frank Crow
© Copyright 1985, 1986, 1987 Xerox Corporation. All rights reserved.
Abstract: The color naming system lets a user specify an English language description to select a color. This implementation is based on system that was derived from the National Bureau of Standards Universal Color Language. The package maps a description such as "Dark Vivid Blue" to an RGB triple using the HSL color ordering system as an intermediate representation.
Created by: Darlene Plebon, Maureen Stone, Frank Crow
Maintained by: Maureen Stone <Stone.pa>
Keywords: color, color spaces, color specification
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
Named Colors
The named colors map an English language description of a color to an RGB triple using the HSL (hue, saturation, lightness) color ordering system as an intermediate form. The interface NamedColors provides two procedures:
- RopeToHSL: PROCEDURE[rope: ROPE] RETURNS[clr: ImagerColor.HSL];
- HSLToRope: PUBLIC PROCEDURE [clr: ImagerColor.HSL, level: NAT ← 3]
     RETURNS
[rope: Rope.ROPE];
The ropes must consist of a basic hue {Black, White, Gray, Grey, Red, Orange, Brown, Yellow, Green, Cyan, Blue, Purple, Magenta} preceded by an arbitrary number of modifiers.
The modifiers may consists of one other hue (ie. `Yellow Green'), a number of saturation modifiers {Achromatic, Weak, Moderate, Strong, Vivid, Bright}, and a number of lightness modifiers {Dark, Medium, Light}. The suffix `ish' may be appended to any modifier and `very' is a legitimate modifier.
Examples:
`Green Yellow'  ( halfway between green and yellow, strong saturation )
`Vivid Greenish Yellow' ( 1/3 towards green from yellow, fully saturated )
`very very light brown' ( case shouldn't matter )
`darkish very light strongish weak moderate purplish red'
Error messages:
UndefinedName  (usually signifies a misspelling)
BadGrammar (incorrect modifier order, or nonsensical combinations)
The `level' argument to HSLToRope provides a indication of how precise to be in the name of the color. `Level' specifies the number of modifier levels to be provided.
While there is some hope that this will provide a reasonably intuitive model for selecting colors, a little interactive exploration of the color space is recommended. The syntax is:
<named color> :== <lightness modifier> <saturation modifier> <hue modifier> <hue>
<lightness modifier> :== very <lightness modifier> | <lightness modifier> <lightness modifier>
   | dark | medium | light | darkish | lightish
<saturation modifier> :== very <saturation modifier>
   | <saturation modifier> <saturation modifier>
   | achromatic | weak | moderate | strong | vivid | bright
   | weakish | strongish
<hue modifier> :== very <hue modifier> | <hue modifier> <hue modifier> | <hue>
   | Grayish | Greyish | Reddish | Orangish | Brownish | Yellowish
   | Greenish | Cyanish | Bluish | Purplish | Magentaish
<hue> :== Black | White | Gray | Grey | Red | Orange | Brown | Yellow | Green | Cyan
  | Blue | Purple | Magenta
History
Color names are a popular form of color specification in many industries. However, their interpretation across industries is often difficult. (what color is "dessert sand," for example). In the mid-70's, an attempt was made to produce a "Universal Language and Dictionary of Names" at the U.S. Bureau of standards. This system was based on the Munsell color space [3], which is designed to be perceptually uniform. That is, equal steps Munsell hue, value or chroma give (nearly) equally different results anywhere in the color space. While this space has not been as universally adopted as the authors had hoped, it was derived in a regular manner based on sound color perception principals and is available as a standard [1] .
In 1982, a paper was published [3] that presented a an adaption of this space that was easier to implement on a computer than the original NBS space. The authors did not include, however, a specific algorithm for mapping their color names to the RGB guns of a monitor. When Darlene Plebon implemented their color names here, we simply mapped it linearly to the HSL color system. Frank Crow later modified our parser to provide optionally continuous selection in the HSL color space.
There are several problems with the current implementation. First, both in the 1982 adaption and in the linear mapping to HSL have destroyed the property designed into the original NBS system that the named colors evenly divided up the space of colors as defined by normal human color vision. Secondly, making the parser more flexible to provide more levels of color names has made it difficult to derive the correct name from a given HSL value. In the future, I would like to modify the system to return to the original NBS standard,.
References
1. A. H. Munsell, Munsell Book of COlor, Glossy Finish Collection with Additional 80 Hues, Macbeth, Division of the Kollmorgen Corp., Baltimore, 1976.
2. K. L. Kelly and D. B. Judd, Color, Universal Language and Dictionary of Names, National Bureau of Standards, Special Publication 440, Washington, 1976.
3. T. Berk, L. Brownston, and A. Kaufman, "A new color-naming system for graphics languages," IEEE Computer Graphics and Application, 2, 3 (1982).