home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / graphics / colorspace-faq < prev    next >
Encoding:
Internet Message Format  |  2004-04-18  |  89.6 KB

  1. Path: senator-bedfellow.mit.edu!dreaderd!not-for-mail
  2. Message-ID: <graphics/colorspace-faq_1082200966@rtfm.mit.edu>
  3. Supersedes: <graphics/colorspace-faq_1079601013@rtfm.mit.edu>
  4. Expires: 31 May 2004 11:22:46 GMT
  5. X-Last-Updated: 1997/02/28
  6. From: "Charles A. Poynton" <poynton@inforamp.net>
  7. Subject: colorspace-faq -- FAQ about Color and Gamma
  8. Newsgroups: comp.graphics,comp.graphics.algorithms,sci.engr.television.advanced,sci.engr.television.broadcast,sci.image.processing,comp.answers,sci.answers,news.answers
  9. Followup-To: poster
  10. Approved: news-answers-request@MIT.EDU
  11. Organization: Poynton Vector, Toronto, ON Canada, +1 416 486 3271
  12. Summary: This FAQ clarifies aspects of nonlinear image coding (gamma),
  13.          color specification, and image coding that are important to
  14.          computer graphics, image processing, video, and the transfer of
  15.          digital images to print.
  16. Reply-To:  Poynton@Poynton.com
  17. Originator: faqserv@penguin-lust.MIT.EDU
  18. Date: 17 Apr 2004 11:24:05 GMT
  19. Lines: 1964
  20. NNTP-Posting-Host: penguin-lust.mit.edu
  21. X-Trace: 1082201045 senator-bedfellow.mit.edu 569 18.181.0.29
  22. Xref: senator-bedfellow.mit.edu comp.graphics.algorithms:144140 sci.engr.television.advanced:16558 sci.engr.television.broadcast:14846 sci.image.processing:57697 comp.answers:56844 sci.answers:15938 news.answers:269655
  23.  
  24. Archive-name: graphics/colorspace-faq
  25. Version: 1997-02-27
  26. X-Last-Updated: 1997-02-27
  27. URL: <http://www.inforamp.net/~poynton/Poynton-color.html>
  28. Posting-Frequency: monthly
  29.  
  30. colorspace-faq -- FREQUENTLY ASKED QUESTIONS ABOUT GAMMA AND COLOR
  31.  
  32.  
  33. Charles A. Poynton
  34. Poynton@Poynton.com
  35. <http://www.inforamp.net/~poynton/>
  36.  
  37. Copyright (c) 1997-02-27
  38.  
  39.  
  40. In video, computer graphics and image processing the "gamma" symbol
  41. represents a numerical parameter that describes the nonlinearity of
  42. intensity reproduction. The Gamma FAQ section of this document
  43. clarifies aspects of nonlinear image coding.
  44.  
  45. The Color FAQ section of this document clarifies aspects of color
  46. specification and image coding that are important to computer graphics,
  47. image processing, video, and the transfer of digital images to print. 
  48.  
  49. Adrian Ford and Alan Roberts have written "Colour Space Conversions"
  50. that details transforms among color spaces such as RGB, HSI, CMY and
  51. video. Find it at <http://www.wmin.ac.uk/ITRG/docs/coloureq/COL_.htm>.
  52.  
  53. Steve Westland has written "Frequently asked questions about Colour
  54. Physics", available at <http://www.keele.ac.uk/depts/co/cpfaq.html>.
  55.  
  56. I retain copyright to this note. You have permission to use it, but you
  57. may not publish it.
  58.  
  59.  
  60. CONTENTS
  61.  
  62.     G-0   Where do these documents live?
  63.  
  64. Frequently Asked Questions about Gamma 
  65.  
  66.     G-1   What is intensity?
  67.     G-2   What is luminance?
  68.     G-3   What is lightness?
  69.     G-4   What is gamma?
  70.     G-5   What is gamma correction?
  71.     G-6   Does NTSC use a gamma of 2.2?
  72.     G-7   Does PAL use a gamma of 2.8?
  73.     G-8   I pulled an image off the net and it looks murky.
  74.     G-9   I pulled an image off the net and it looks a little too contrasty.
  75.     G-10  What is luma?
  76.     G-11  What is contrast ratio?
  77.     G-12  How many bits do I need to smoothly shade from black to white?
  78.     G-13  How is gamma handled in video, computer graphics and desktop 
  79.            computing?
  80.     G-14  What is the gamma of a Macintosh?
  81.     G-15  Does the gamma of CRTs vary wildly?
  82.     G-16  How should I adjust my monitor's brightness and contrast controls?
  83.     G-17  Should I do image processing operations on linear or nonlinear 
  84.             image data?
  85.     G-18  What's the transfer function of offset printing?
  86.     G-19  References
  87.  
  88. Frequently Asked Questions about Color 
  89.  
  90.     C-1   What is color?
  91.     C-2   What is intensity?
  92.     C-3   What is luminance?
  93.     C-4   What is lightness?
  94.     C-5   What is hue?
  95.     C-6   What is saturation?
  96.     C-7   How is color specified?
  97.     C-8   Should I use a color specification system for image data?
  98.     C-9   What weighting of red, green and blue corresponds to brightness?
  99.     C-10  Can blue be assigned fewer bits than red or green?
  100.     C-11  What is "luma"?
  101.     C-12  What are CIE XYZ components?
  102.     C-13  Does my scanner use the CIE spectral curves?
  103.     C-14  What are CIE x and y chromaticity coordinates?
  104.     C-15  What is white?
  105.     C-16  What is color temperature?
  106.     C-17  How can I characterize red, green and blue?
  107.     C-18  How do I transform between CIE XYZ and a particular set of RGB
  108.             primaries?
  109.     C-19  Is RGB always device-dependent?
  110.     C-20  How do I transform data from one set of RGB primaries to another?
  111.     C-21  Should I use RGB or XYZ for image synthesis?
  112.     C-22  What is subtractive color?
  113.     C-23  Why did my grade three teacher tell me that the primaries are red,
  114.             yellow and blue?
  115.     C-24  Is CMY just one-minus-RGB?
  116.     C-25  Why does offset printing use black ink in addition to CMY?
  117.     C-26  What are color differences?
  118.     C-27  How do I obtain color difference components from tristimulus values?
  119.     C-28  How do I encode Y'PBPR components?
  120.     C-29  How do I encode Y'CBCR components from R'G'B' in [0, +1]?
  121.     C-30  How do I encode Y'CBCR components from computer R'G'B' ?
  122.     C-31  How do I encode Y'CBCR components from studio video?
  123.     C-32  How do I decode R'G'B' from PhotoYCC?
  124.     C-33  Will you tell me how to decode Y'UV and Y'IQ?
  125.     C-34  How should I test my encoders and decoders?
  126.     C-35  What is perceptual uniformity?
  127.     C-36  What are HSB and HLS?
  128.     C-37  What is true color?
  129.     C-38  What is indexed color?
  130.     C-39  I want to visualize a scalar function of two variables. Should I use
  131.             RGB values corresponding to the colors of the rainbow?
  132.     C-40  What is dithering?
  133.     C-41  How does halftoning relate to color?
  134.     C-42  What's a color management system?
  135.     C-43  How does a CMS know about particular devices?
  136.     C-44  Is a color management system useful for color specification?
  137.     C-45  I'm not a color expert. What parameters should I use to 
  138.             code my images?
  139.     C-46  References
  140.     C-47  Contributors
  141.  
  142.  
  143. G-0   WHERE DO THESE DOCUMENTS LIVE?
  144.  
  145. Each document GammaFAQ and ColorFAQ is available in four formats --
  146. Adobe Acrobat (PDF), hypertext (HTML), PostScript, and plain 7-bit
  147. ASCII text-only. You are reading the concatenation of the text versions
  148. of GammaFAQ and ColorFAQ. The text formats are devoid of graphs and
  149. illustrations, of course; I strongly recommend the PDF versions.
  150.  
  151. The hypertext version is linked from my color page,
  152.  
  153.     <http://www.inforamp.net/~poynton/Poynton-color.html>
  154.  
  155. The PDF, PostScript and text formats are available by ftp:
  156.  
  157.     <ftp://ftp.inforamp.net/pub/users/poynton/doc/color/>
  158.  
  159. If you have access to Internet e-mail but not to ftp, use a mailer that
  160. is properly configured with your return address to send mail to
  161. <ftpmail@decwrl.dec.com> with en empty subject and the single word help
  162. in the body.
  163.  
  164.  
  165. PDF Notes
  166.  
  167. Adobe's Acrobat Reader is freely available for Windows, Mac, MS-DOS and
  168. SPARC. If you don't already have a reader, you can obtain one from
  169.  
  170.     <ftp://ftp.adobe.com/pub/adobe/acrobatreader/>
  171.     
  172. in a subdirectory and file appropriate for your platform. 
  173.  
  174. On CompuServe, GO Acrobat.
  175.  
  176. On America Online, for Mac, use Keyword Adobe -> Adobe Software Library
  177. -> New! Adobe Acrobat Reader 3.0, then choose a platform.
  178.  
  179. Transfer PDF files in binary mode, particularly to Windows or MS-DOS
  180. machines. PDF files contain "bookmarks" corresponding to the table of
  181. contents. Clicking a bookmark takes you to  the topic. Also,
  182. cross-references in the PDF files are links.
  183.  
  184.  
  185. PostScript Notes
  186.  
  187. Acrobat Reader allows viewing on-screen on multiple platforms, printing
  188. to both PostScript and non-PostScript printers, and permits viewing and
  189. printing independent of the fonts that you have installed. But for
  190. those people who cannot or do not wish to run Acrobat Reader, I provide
  191. PostScript versions of the notes.
  192.  
  193. The documents use only Times, Helvetica, Palatino and Symbol fonts and
  194. are laid out with generous margins for US Letter size paper. I confess
  195. I don't know how well they print to A4 but it should fit. If anyone
  196. using A4 has suggestions to improve the PostScript please let me know.
  197.  
  198. The PostScript files are compressed with Gnu zip compression, and are
  199. given the file suffix ".gz". Gzip for UNIX (and maybe other platforms
  200. as well) is available from the usual gnu sites. If you use a Macintosh,
  201. the freeware StuffIt Expander 4.0 will decode gnu zip files.
  202.  
  203.  
  204. ------------------------------
  205.  
  206. FREQUENTLY ASKED QUESTIONS ABOUT GAMMA 
  207.  
  208.  
  209. G-1   WHAT IS INTENSITY?
  210.  
  211. Intensity is a measure over some interval of the electromagnetic spectrum of
  212. the flow of power that is radiated from, or incident on, a surface.
  213. Intensity is what I call a "linear-light measure", expressed in units such as
  214. watts per square meter.
  215.  
  216. The voltages presented to a CRT monitor control the intensities of the
  217. color components, but in a nonlinear manner. CRT voltages are not
  218. proportional to intensity.
  219.  
  220. Image data stored in a file (TIFF, JFIF, PPM, etc.) may or may not
  221. represent intensity, even if it is so described. The I component of a
  222. color described as HSI (hue, saturation, intensity) does not accurately
  223. represent intensity if HSI is computed according to any of the usual
  224. formulae.
  225.  
  226.  
  227. G-2   WHAT IS LUMINANCE?
  228.  
  229. Brightness is defined by the Commission Internationale de L'Eclairage (CIE)
  230. as the attribute of a visual sensation according to which an area appears
  231. to emit more or less light. Because brightness perception is very complex,
  232. the CIE defined a more tractable quantity luminance, denoted Y, which is
  233. radiant power weighted by a spectral sensitivity function that is
  234. characteristic of vision. To learn about the relationship between physical
  235. spectra and perceived brightness, and other color issues, refer to the
  236. companion Frequently Asked Questions about Color.
  237.  
  238. The magnitude of luminance is proportional to physical power. In that sense
  239. it is like intensity. But the spectral composition of luminance is related
  240. to the brightness sensitivity of human vision.
  241.  
  242.  
  243. G-3   WHAT IS LIGHTNESS?
  244.  
  245. Human vision has a nonlinear perceptual response to brightness: a source
  246. having a luminance only 18% of a reference luminance appears about half as
  247. bright. The perceptual response to luminance is called Lightness and is
  248. defined by the CIE [1] as a modified cube root of luminance:
  249.  
  250.   Lstar = -16 + 116 * pow(Y / Yn, 1. / 3.)
  251.  
  252. Yn is the luminance of the white reference. If you normalize luminance to
  253. reference white then you need not compute the fraction. The CIE definition
  254. applies a linear segment with a slope of 903.3 near black, for (Y/Yn) <
  255. 0.008856. The linear segment is unimportant for practical purposes but if
  256. you don't use it, make sure that you limit L* at zero. L* has a range of 0
  257. to 100, and a "delta L-star" of unity is taken to be roughly the threshold
  258. of visibility.
  259.  
  260. Stated differently, lightness perception is roughly logarithmic. You can
  261. detect an intensity difference between two patches when the ratio of their
  262. intensities differs by more than about one percent.
  263.  
  264. Video systems approximate the lightness response of vision using RGB
  265. signals that are each subject to a 0.45 power function. This is comparable
  266. to the 1/3 power function defined by L*.
  267.  
  268. The L component of a color described as HLS (hue, lightness, saturation)
  269. does not accurately represent lightness if HLS is computed according to
  270. any of the usual formulae. See Frequently Asked Questions about Color.
  271.  
  272.  
  273. G-4   WHAT IS GAMMA?
  274.  
  275. The intensity of light generated by a physical device is not usually a
  276. linear function of the applied signal. A conventional CRT has a power-law
  277. response to voltage: intensity produced at the face of the display is
  278. approximately the applied voltage, raised to the 2.5 power. The numerical
  279. value of the exponent of this power function is colloquially known as
  280. gamma. This nonlinearity must be compensated in order to achieve correct
  281. reproduction of intensity.
  282.  
  283. As mentioned above (What is lightness?), human vision has a nonuniform
  284. perceptual response to intensity. If intensity is to be coded into a small
  285. number of steps, say 256, then in order for the most effective perceptual
  286. use to be made of the available codes, the codes must be assigned to
  287. intensities according to the properties of perception.
  288.  
  289. Here is a graph of an actual CRT's transfer function, at three different
  290. contrast settings:
  291.  
  292. << A nice graph is found in the .PDF and .PS versions. >>
  293.  
  294. This graph indicates a video signal having a voltage from zero to 700 mV.
  295. In a typical eight-bit digital-to-analog converter on a framebuffer card,
  296. black is at code zero and white is at code 255.
  297.  
  298. Through an amazing coincidence, vision's response to intensity is
  299. effectively the inverse of a CRT's nonlinearity. If you apply a transfer
  300. function to code a signal to take advantage of the properties of lightness
  301. perception - a function similar to the L* function - the coding will be
  302. inverted by a CRT.
  303.  
  304.  
  305. G-5   WHAT IS GAMMA CORRECTION?
  306.  
  307. In a video system, linear-light intensity is transformed to a nonlinear
  308. video signa by gamma correction, which is universally done at the camera.
  309. The Rec. 709 transfer function [2] takes linear-light intensity (here R) to
  310. a nonlinear component (here Rprime), for example, voltage in a video
  311. system:
  312.  
  313.   Rprime = ( R <= 0.018 ? 
  314.              4.5 * R : 
  315.              -0.099 + 1.099 * pow(R, 0.45) 
  316.            );
  317.  
  318. The linear segment near black minimizes the effect of sensor noise in
  319. practical cameras and scanners. Here is a graph of the Rec. 709 transfer
  320. function, for a signal range from zero to unity:
  321.  
  322. << An attractive graph is presented in the .PDF and .PS versions. >>
  323.  
  324. An idealized monitor inverts the transform:
  325.  
  326.   R = ( Rprime <= 0.081 ? 
  327.         Rprime / 4.5 : 
  328.         pow((Rprime + 0.099) / 1.099, 1. / 0.45) 
  329.       );
  330.  
  331. Real monitors are not as exact as this equation suggests, and have no linear
  332. segment, but the precise definition is necessary for accurate intermediate
  333. processing in the linear-light domain. In a color system, an identical
  334. transfer function is applied to each of the three tristimulus
  335. (linear-light) RGB components. See Frequently Asked Questions about
  336. Color.
  337.  
  338. By the way, the nonlinearity of a CRT is a function of the electrostatics
  339. of the cathode and the grid of an electron gun; it has nothing to do with
  340. the phosphor. Also, the nonlinearity is a power function (which has the
  341. form f(x) = x^a), not an exponential function (which has the form f(x) =
  342. a^x). For more detail, read Poynton's article [3].
  343.  
  344.  
  345. G-6   DOES NTSC USE A GAMMA OF 2.2?
  346.  
  347. Television is usually viewed in a dim environment. If an images's correct
  348. physical intensity is reproduced in a dim surround, a subjective effect
  349. called simultaneous contrast causes the reproduced image to appear lacking
  350. in contrast. The effect can be overcome by applying an end-to-end power
  351. function whose exponent is about 1.1 or 1.2. Rather than having each
  352. receiver provide this correction, the assumed 2.5-power at the CRT is
  353. under-corrected at the camera by using an exponent of about 1/2.2 instead
  354. of 1/2.5. The assumption of a dim viewing environment is built into video
  355. coding.
  356.  
  357.  
  358. G-7   DOES PAL USE A GAMMA OF 2.8?
  359.  
  360. Standards for 625/50 systems mention an exponent of 2.8 at the decoder,
  361. however this value is unrealistically high to be used in practice. If an
  362. exponent different from 0.45 is chosen for a power function with a linear
  363. segment near black like Rec. 709, the other parameters need to be changed
  364. to maintain function and tangent continuity.
  365.  
  366.  
  367. G-8   I PULLED AN IMAGE OFF THE NET AND IT LOOKS MURKY.
  368.  
  369. If an image originates in linear-light form, gamma correction needs to be
  370. applied exactly once. If gamma correction is not applied and linear-light
  371. image data is applied to a CRT, the midtones will be reproduced too dark.
  372. If gamma correction is applied twice, the midtones will be too light.
  373.  
  374.  
  375. G-9   I PULLED AN IMAGE OFF THE NET AND IT LOOKS A LITTLE TOO CONTRASTY.
  376.  
  377. Viewing environments typical of computing are quite bright. When an image
  378. is coded according to video standards it implicitly carries the assumption
  379. of a dim surround. If it is displayed without correction in a bright
  380. ambient, it will appear contrasty. In this circumstance you should apply a
  381. power function with an exponent of about 1/1.1 or 1/1.2 to correct for your
  382. bright surround.
  383.  
  384. Ambient lighting is rarely taken into account in the exchange of computer
  385. images. If an image is created in a dark environment and transmitted to a
  386. viewer in a bright environment, the recipient will find it to have
  387. excessive contrast.
  388.  
  389. If an image originated in a bright environment and viewed in a bright
  390. environment, it will need no modification no matter what coding is applied.
  391. But then it will carry an assumption of a bright surround. Video standards
  392. are widespread and well optimized for vision, so it makes sense to code
  393. with a power function of 0.45 and retain a single standard for the assumed
  394. viewing environment.
  395.  
  396. In the long term, for everyone to get the best results in image interchange
  397. among applications, an image originator should remove the effect of his
  398. ambient environment when he transmits an image. The recipient of an image
  399. should insert a transfer function appropriate for his viewing environment.
  400. In the short term, you should include with your image data tags that
  401. specify the parameters that you used to encode. TIFF 6.0 has provisions for
  402. this data. You can correct for your own viewing environment as appropriate,
  403. but until image interchange standards incorporate viewing conditions, you
  404. will also have to compensate for the originator's viewing conditions.
  405.  
  406.  
  407. G-10  WHAT IS LUMA?
  408.  
  409. In video it is standard to represent brightness information not as a
  410. nonlinear function of true CIE luminance, but as a weighted sum of
  411. nonlinear R'G'B' components called luma. For more information, consult the
  412. companion document Frequently Asked Questions about Color.
  413.  
  414.  
  415. G-11  WHAT IS CONTRAST RATIO?
  416.  
  417. Contrast ratio is the ratio of intensity between the brightest white and
  418. the darkest black of a particular device or a particular environment.
  419. Projected cinema film - or a photographic reflection print - has a contrast
  420. ratio of about 80:1. Television assumes a contrast ratio - in your living
  421. room - of about 30:1. Typical office viewing conditions restrict contrast
  422. ratio of CRT display to about 5:1.
  423.  
  424.  
  425. G-12  HOW MANY BITS DO I NEED TO SMOOTHLY SHADE FROM BLACK TO WHITE?
  426.  
  427. At a particular level of adaptation, human vision responds to about a
  428. hundred-to-one contrast ratio of intensity from white to black. Call these
  429. intensities 100 and 1. Within this range, vision can detect that two
  430. intensities are different if the ratio between them exceeds about 1.01,
  431. corresponding to a contrast sensitivity of one percent.
  432.  
  433. To shade smoothly over this range, so as to produce no perceptible steps,
  434. at the black end of the scale it is necessary to have coding that
  435. represents different intensity levels 1.00, 1.01, 1.02 and so on. If linear
  436. light coding is used, the "delta" of 0.01 must be maintained all the way up
  437. the scale to white. This requires about 9,900 codes, or about fourteen bits
  438. per component.
  439.  
  440. If you use nonlinear coding, then the 1.01 "delta" required at the black
  441. end of the scale applies as a ratio, not an absolute increment, and
  442. progresses like compound interest up to white. This results in about 460
  443. codes, or about nine bits per component. Eight bits, nonlinearly coded
  444. according to Rec. 709, is sufficient for broadcast-quality digital
  445. television at a contrast ratio of about 50:1.
  446.  
  447. If poor viewing conditions or poor display quality restrict the contrast
  448. ratio of the display, then fewer bits can be employed.
  449.  
  450. If a linear light system is quantized to a small number of bits, with black
  451. at code zero, then the ability of human vision to discern a 1.01 ratio
  452. between adjacent intensity levels takes effect below code 100. If a linear
  453. light system has only eight bits, then the top end of the scale is only
  454. 255, and contouring in dark areas will be perceptible even in very poor
  455. viewing conditions.
  456.  
  457.  
  458. G-13  HOW IS GAMMA HANDLED IN VIDEO, COMPUTER GRAPHICS AND DESKTOP
  459.       COMPUTING?
  460.  
  461. As outlined above, gamma correction in video effectively codes into a
  462. perceptually uniform domain. In video, a 0.45-power function is applied at
  463. the camera, as shown in the top row of this diagram:
  464.  
  465. << A nice diagram is presented in the .PDF and .PS versions. >>
  466.  
  467. Synthetic computer graphics calculates the interaction of light and
  468. objects. These interactions are in the physical domain, and must be
  469. calculated in linear-light values. It is conventional in computer graphics
  470. to store linear-light values in the framebuffer, and introduce gamma
  471. correction at the lookup table at the output of the framebuffer. This is
  472. illustrated in the middle row above.
  473.  
  474. If linear-light is represented in just eight bits, near black the steps
  475. between codes will be perceptible as banding in smoothly-shaded images.
  476. This is the eight-bit bottleneck in the sketch.
  477.  
  478. Desktop computers are optimized neither for image synthesis nor for video.
  479. They have programmable "gamma" and either poor standards or no standards.
  480. Consequently, image interchange among desktop computers is fraught with
  481. difficulty.
  482.  
  483.  
  484. G-14  WHAT IS THE GAMMA OF A MACINTOSH?
  485.  
  486. Apple offers no definition of the nonlinearity - or loosely speaking, gamma
  487. - that is intrinsic in QuickDraw. But the combination of a default
  488. QuickDraw lookup table and a standard monitor causes intensity to represent
  489. the 1.8-power of the R, G and B values presented to QuickDraw. It is
  490. wrongly believed that Macintosh computers use monitors whose transfer
  491. function is different from the rest of the industry. The unconventional
  492. QuickDraw handling of nonlinearity is the root of this misconception.
  493. Macintosh coding is shown in the bottom row of the diagram
  494. << provided in the PDF and PS versions >>.
  495.  
  496. The transfer of image data in computing involves various transfer
  497. functions: at coding, in the framebuffer, at the lookup table, and at the
  498. monitor. Strictly speaking the term gamma applies to the exponent of the
  499. power function at the monitor. If you use the term loosely, in the case of
  500. a Mac you could call the gamma 1.4, 1.8 or 2.5 depending which part of the
  501. system you were discussing. More detail is available [4].
  502.  
  503. I recommend using the Rec. 709 transfer function, with its 0.45-power law,
  504. for best perceptual performance and maximum ease of interchange with
  505. digital video. If you need Mac compatibility you will have to code
  506. intensity with a 1/1.8-power law, anticipating QuickDraw's 1/1.4-power in
  507. the lookup table. This coding has adequate performance in the bright
  508. viewing environments typical of desktop applications, but suffers in darker
  509. viewing conditions that have high contrast ratio.
  510.  
  511.  
  512. G-15  DOES THE GAMMA OF CRTS VARY WILDLY?
  513.  
  514. Gamma of a properly adjusted conventional CRT varies anywhere between about
  515. 2.35 and 2.55.
  516.  
  517. CRTs have acquired a reputation for wild variation for two reasons. First,
  518. if the model intensity=voltage^gamma is naively fitted to a display with
  519. black-level error, the exponent deduced will be as much a function of the
  520. black error as the true exponent. Second, input devices, graphics libraries
  521. and application programs all have the potential to introduce their own
  522. transfer functions. Nonlinearities from these sources are often categorized
  523. as gamma and attributed to the display.
  524.  
  525.  
  526. G-16  HOW SHOULD I ADJUST MY MONITOR'S BRIGHTNESS AND CONTRAST CONTROLS?
  527.  
  528. On a CRT monitor, the control labelled contrast controls overall intensity,
  529. and the control labelled brightness controls offset (black level). Display
  530. a picture that is predominantly black. Adjust brightness so that the
  531. monitor reproduces true black on the screen, just at the threshold where it
  532. is not so far down as to "swallow" codes greater than the black code, but
  533. not so high that the picture sits on a "pedestal" of dark grey. When the
  534. critical point is reached, put a piece of tape over the brightness control.
  535. Then set contrast to suit your preference for display intensity.
  536.  
  537. For more information, consult "Black Level" and "Picture", 
  538. <ftp://ftp.inforamp.net/pub/users/poynton/doc/color/Black_and_Picture.pdf>.
  539.  
  540.  
  541. G-17  SHOULD I DO IMAGE PROCESSING OPERATIONS ON LINEAR OR NONLINEAR IMAGE
  542.       DATA?
  543.  
  544. If you wish to simulate the physical world, linear-light coding is
  545. necessary. For example, if you want to produce a numerical simulation of a
  546. lens performing a Fourier transform, you should use linear coding. If you
  547. want to compare your model with the transformed image captured from a real
  548. lens by a video camera, you will have to "remove" the nonlinear gamma
  549. correction that was imposed by the camera, to convert the image data back
  550. into its linear-light representation.
  551.  
  552. On the other hand, if your computation involves human perception, a
  553. nonlinear representation may be required. For example, if you perform a
  554. discrete cosine transform on image data as the first step in image
  555. compression, as in JPEG, then you ought to use nonlinear coding that
  556. exhibits perceptual uniformity, because you wish to minimize the
  557. perceptibility of the errors that will be introduced during quantization.
  558.  
  559. The image processing literature rarely discriminates between linear and
  560. nonlinear coding. In the JPEG and MPEG standards there is no mention of
  561. transfer function, but nonlinear (video-like) coding is implicit:
  562. unacceptable results are obtained when JPEG or MPEG are applied to
  563. linear-light data. In computer graphic standards such as PHIGS and CGM
  564. there is no mention of transfer function, but linear-light coding is
  565. implicit. These discrepancies make it very difficult to exchange image data
  566. between systems.
  567.  
  568. When you ask a video engineer if his system is linear, he will say "Of
  569. course!" referring to linear voltage. If you ask an optical engineer if her
  570. system is linear, she will say "Of course!" referring to linear intensity.
  571. But when a nonlinear transform lies between the two systems, as in video, a
  572. linear transformation performed in one domain is not linear in the other.
  573.  
  574.  
  575. G-18  WHAT'S THE TRANSFER FUNCTION OF OFFSET PRINTING?
  576.  
  577. A image destined for halftone printing conventionally specifies each pixel
  578. in terms of dot percentage in film. An imagesetter's halftoning machinery
  579. generates dots whose areas are proportional to the requested coverage. In
  580. principle, dot percentage in film is inversely proportional to linear-light
  581. reflectance.
  582.  
  583. Two phenomena distort the requested dot coverage values. First, printing
  584. involves a mechanical smearing of the ink that causes dots to enlarge.
  585. Second, optical effects within the bulk of the paper cause more light to be
  586. absorbed than would be expected from the surface coverage of the dot alone.
  587. These phenomena are collected under the term dot gain, which is the
  588. percentage by which the light absorption of the printed dots exceeds the
  589. requested dot coverage.
  590.  
  591. Standard offset printing involves a dot gain at 50% of about 24%: when 50%
  592. absorption is requested, 74% absorption is obtained. The midtones print
  593. darker than requested. This results in a transfer function from code to
  594. reflectance that closely resembles the voltage-to-light curve of a CRT.
  595. Correction of dot gain is conceptually similar to gamma correction in
  596. video: physical correction of the "defect" in the reproduction process is
  597. very well matched to the lightness perception of human vision. Coding an
  598. image in terms of dot percentage in film involves coding into a roughly
  599. perceptually uniform space. The standard dot gain functions employed in
  600. North America and Europe correspond to intensity being reproduced as a
  601. power function of the digital code, where the numerical value of the
  602. exponent is about 1.75, compared to about 2.2 for video. This is lower than
  603. the optimum for perception, but works well for the low contrast ratio of
  604. offset printing.
  605.  
  606. The Macintosh has a power function that is close enough to printing practice
  607. that raw QuickDraw codes sent to an imagesetter produce acceptable results.
  608. High-end publishing software allows the user to specify the parameters of
  609. dot gain compensation.
  610.  
  611. I have described the linearity of conventional offset printing. Other
  612. halftoned devices have different characteristics, and require different
  613. corrections.
  614.  
  615.  
  616. G-19  REFERENCES
  617.  
  618. [1] Publication CIE No 15.2, Colorimetry, Second Edition (1986), Central
  619. Bureau of the Commission Internationale de L'Eclairage, Vienna, Austria.
  620.  
  621. [2] ITU-R Recommendation BT.709, Basic Parameter Values for the HDTV
  622. Standard for the Studio and for International Programme Exchange (1990),
  623. [formerly CCIR Rec. 709], ITU, 1211 Geneva 20, Switzerland.
  624.  
  625. [3] Charles A. Poynton, "Gamma and Its Disguises" in Journal of the Society
  626. of Motion Picture and Television Engineers, Vol. 102, No. 12 (December
  627. 1993), 1099-1108.
  628.  
  629. [4] Charles A. Poynton, "Gamma on the Apple Macintosh", 
  630. <ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/>.
  631.  
  632. ------------------------------
  633.  
  634. FREQUENTLY ASKED QUESTIONS ABOUT COLOR
  635.  
  636.  
  637. C-1   WHAT IS COLOR?
  638.  
  639. Color is the perceptual result of light in the visible region of the
  640. spectrum, having wavelengths in the region of 400 nm to 700 nm, incident
  641. upon the retina. Physical power (or radiance) is expressed in a spectral
  642. power distribution (SPD), often in 31 components each representing a 10 nm
  643. band.
  644.  
  645. The human retina has three types of color photoreceptor cone cells, which
  646. respond to incident radiation with somewhat different spectral response
  647. curves. A fourth type of photoreceptor cell, the rod, is also present in
  648. the retina. Rods are effective only at extremely low light levels
  649. (colloquially, night vision), and although important for vision play no
  650. role in image reproduction.
  651.  
  652. Because there are exactly three types of color photoreceptor, three
  653. numerical components are necessary and sufficient to describe a color,
  654. providing that appropriate spectral weighting functions are used. This is
  655. the concern of the science of colorimetry. In 1931, the Commission
  656. Internationale de L'Eclairage (CIE) adopted standard curves for a
  657. hypothetical Standard Observer. These curves specify how an SPD can be
  658. transformed into a set of three numbers that specifies a color.
  659.  
  660. The CIE system is immediately and almost universally applicable to
  661. self-luminous sources and displays. However the colors produced by
  662. reflective systems such as photography, printing or paint are a function
  663. not only of the colorants but also of the SPD of the ambient illumination.
  664. If your application has a strong dependence upon the spectrum of the
  665. illuminant, you may have to resort to spectral matching.
  666.  
  667. Sir Isaac Newton said, "Indeed rays, properly expressed, are not coloured."
  668. SPDs exist in the physical world, but color exists only in the eye and the
  669. brain.
  670.  
  671.  
  672. C-2   WHAT IS INTENSITY?
  673.  
  674. Intensity is a measure over some interval of the electromagnetic spectrum
  675. of the flow of power that is radiated from, or incident on, a surface.
  676. Intensity is what I call a linear-light measure, expressed in units such as
  677. watts per square meter.
  678.  
  679. The voltages presented to a CRT monitor control the intensities of the
  680. color components, but in a nonlinear manner. CRT voltages are not
  681. proportional to intensity.
  682.  
  683.  
  684. C-3   WHAT IS LUMINANCE?
  685.  
  686. Brightness is defined by the CIE as the attribute of a visual sensation
  687. according to which an area appears to emit more or less light. Because
  688. brightness perception is very complex, the CIE defined a more tractable
  689. quantity luminance which is radiant power weighted by a spectral
  690. sensitivity function that is characteristic of vision. The luminous
  691. efficiency of the Standard Observer is defined numerically, is everywhere
  692. positive, and peaks at about 555 nm. When an SPD is integrated using this
  693. curve as a weighting function, the result is CIE luminance, denoted Y.
  694.  
  695. The magnitude of luminance is proportional to physical power. In that sense
  696. it is like intensity. But the spectral composition of luminance is related
  697. to the brightness sensitivity of human vision.
  698.  
  699. Strictly speaking, luminance should be expressed in a unit such as candelas
  700. per meter squared, but in practice it is often normalized to 1 or 100 units
  701. with respect to the luminance of a specified or implied white reference.
  702. For example, a studio broadcast monitor has a white reference whose
  703. luminance is about 80 cd*m -2, and Y = 1 refers to this value.
  704.  
  705.  
  706. C-4   WHAT IS LIGHTNESS?
  707.  
  708. Human vision has a nonlinear perceptual response to brightness: a source
  709. having a luminance only 18% of a reference luminance appears about half as
  710. bright. The perceptual response to luminance is called Lightness. It is
  711. denoted L* and is defined by the CIE as a modified cube root of luminance:
  712.  
  713.   Lstar = -16 + 116 * (pow(Y / Yn), 1. / 3.)
  714.  
  715. Yn is the luminance of the white reference. If you normalize luminance to
  716. reference white then you need not compute the fraction. The CIE definition
  717. applies a linear segment with a slope of 903.3 near black, for (Y/Yn) <=
  718. 0.008856. The linear segment is unimportant for practical purposes but if
  719. you don't use it, make sure that you limit L* at zero. L* has a range of 0
  720. to 100, and a "delta L-star" of unity is taken to be roughly the threshold
  721. of visibility.
  722.  
  723. Stated differently, lightness perception is roughly logarithmic. An
  724. observer can detect an intensity difference between two patches when their
  725. intensities differ by more than one about percent.
  726.  
  727. Video systems approximate the lightness response of vision using R'G'B'
  728. signals that are each subject to a 0.45 power function. This is comparable
  729. to the 1/3 power function defined by L*.
  730.  
  731.  
  732. C-5   WHAT IS HUE?
  733.  
  734. According to the CIE [1], hue is the attribute of a visual sensation
  735. according to which an area appears to be similar to one of the perceived
  736. colors, red, yellow, green and bue, or a combination of two of them.
  737. Roughly speaking, if the dominant wavelength of an SPD shifts, the hue of
  738. the associated color will shift.
  739.  
  740.  
  741. C-6   WHAT IS SATURATION?
  742.  
  743. Again from the CIE, saturation is the colorfulness of an area judged in
  744. proportion to its brightness. Saturation runs from neutral gray through
  745. pastel to saturated colors. Roughly speaking, the more an SPD is
  746. concentrated at one wavelength, the more saturated will be the associated
  747. color. You can desaturate a color by adding light that contains power at
  748. all wavelengths.
  749.  
  750.  
  751. C-7   HOW IS COLOR SPECIFIED?
  752.  
  753. The CIE system defines how to map an SPD to a triple of numerical
  754. components that are the mathematical coordinates of color space. Their
  755. function is analagous to coordinates on a map. Cartographers have different
  756. map projections for different functions: some map projections preserve
  757. areas, others show latitudes and longitudes as straight lines. No single
  758. map projection fills all the needs of map users. Similarly, no single
  759. color system fills all of the needs of color users.
  760.  
  761. The systems useful today for color specification include CIE XYZ, CIE xyY,
  762. CIE L*u*v* and CIE L*a*b*. Numerical values of hue and saturation are not
  763. very useful for color specification, for reasons to be discussed in
  764. section 36.
  765.  
  766. A color specification system needs to be able to represent any color with
  767. high precision. Since few colors are handled at a time, a specification
  768. system can be computationally complex. Any system for color specification
  769. must be intimately related to the CIE specifications.
  770.  
  771. You can specify a single "spot" color using a color order system such as
  772. Munsell. Systems like Munsell come with swatch books to enable visual
  773. color matches, and have documented methods of transforming between
  774. coordinates in the system and CIE values. Systems like Munsell are not
  775. useful for image data. You can specify an ink color by specifying the
  776. proportions of standard (or secret) inks that can be mixed to make the
  777. color. That's how pantone(tm) works. Although widespread, it's
  778. proprietary. No translation to CIE is publicly available.
  779.  
  780.  
  781. C-8   SHOULD I USE A COLOR SPECIFICATION SYSTEM FOR IMAGE DATA?
  782.  
  783. A digitized color image is represented as an array of pixels, where each
  784. pixel contains numerical components that define a color. Three components
  785. are necessary and sufficient for this purpose, although in printing it is
  786. convenient to use a fourth (black) component.
  787.  
  788. In theory, the three numerical values for image coding could be provided by
  789. a color specification system. But a practical image coding system needs to
  790. be computationally efficient, cannot afford unlimited precision, need not
  791. be intimately related to the CIE system and generally needs to cover only a
  792. reasonably wide range of colors and not all of the colors. So image
  793. coding uses different systems than color specification.
  794.  
  795. The systems useful for image coding are linear RGB, nonlinear R'G'B',
  796. nonlinear CMY, nonlinear CMYK, and derivatives of nonlinear R'G'B' such
  797. as Y'CBCR. Numerical values of hue and saturation are not useful in color
  798. image coding.
  799.  
  800. If you manufacture cars, you have to match the color of paint on the door
  801. with the color of paint on the fender. A color specification system will
  802. be necessary. But to convey a picture of the car, you need image coding.
  803. You can afford to do quite a bit of computation in the first case because
  804. you have only two colored elements, the door and the fender. In the second
  805. case, the color coding must be quite efficient because you may have a
  806. million colored elements or more.
  807.  
  808. For a highly readable short introduction to color image coding, see
  809. DeMarsh and Giorgianni [2]. For a terse, complete technical treatment, read
  810. Schreiber [3].
  811.  
  812.  
  813. C-9   WHAT WEIGHTING OF RED, GREEN AND BLUE CORRESPONDS TO BRIGHTNESS?
  814.  
  815. Direct acquisition of luminance requires use of a very specific spectral
  816. weighting. However, luminance can also be computed as a weighted sum of
  817. red, green and blue components.
  818.  
  819. If three sources appear red, green and blue, and have the same radiance in
  820. the visible spectrum, then the green will appear the brightest of the three
  821. because the luminous efficiency function peaks in the green region of the
  822. spectrum. The red will appear less bright, and the blue will be the darkest
  823. of the three. As a consequence of the luminous efficiency function, all
  824. saturated blue colors are quite dark and all saturated yellows are quite
  825. light. If luminance is computed from red, green and blue, the coefficients
  826. will be a function of the particular red, green and blue spectral weighting
  827. functions employed, but the green coefficient will be quite large, the red
  828. will have an intermediate value, and the blue coefficient will be the
  829. smallest of the three.
  830.  
  831. Contemporary CRT phosphors are standardized in Rec. 709 [8], to be
  832. described in section 17. The weights to compute true CIE luminance from
  833. linear red, green and blue (indicated without prime symbols), for the Rec.
  834. 709, are these:
  835.  
  836.   Y = 0.212671 * R + 0.715160 * G + 0.072169 * B;
  837.  
  838. This computation assumes that the luminance spectral weighting can be
  839. formed as a linear combination of the scanner curves, and assumes that the
  840. component signals represent linear-light. Either or both of these
  841. conditions can be relaxed to some extent depending on the application.
  842.  
  843. Some computer systems have computed brightness using (R+G+B)/3. This is at
  844. odds with the properties of human vision, as will be discussed under What
  845. are HSB and HLS? in section 36.
  846.  
  847. The coefficients 0.299, 0.587 and 0.114 properly computed luminance for
  848. monitors having phosphors that were contemporary at the introduction of
  849. NTSC television in 1953. They are still appropriate for computing video
  850. luma to be discussed below in section 11. However, these coefficients do
  851. not accurately compute luminance for contemporary monitors.
  852.  
  853.  
  854. C-10  CAN BLUE BE ASSIGNED FEWER BITS THAN RED OR GREEN?
  855.  
  856. Blue has a small contribution to the brightness sensation. However, human
  857. vision has extraordinarily good color discrimination capability in blue
  858. colors. So if you give blue fewer bits than red or green, you will
  859. introduce noticeable contouring in blue areas of your pictures.
  860.  
  861.  
  862. C-11  WHAT IS "LUMA"?
  863.  
  864. It is useful in a video system to convey a component representative of
  865. luminance and two other components representative of color. It is
  866. important to convey the component representative of luminance in such a way
  867. that noise (or quantization) introduced in transmission, processing and
  868. storage has a perceptually similar effect across the entire tone scale from
  869. black to white. The ideal way to accomplish these goals would be to form a
  870. luminance signal by matrixing RGB, then subjecting luminance to a nonlinear
  871. transfer function similar to the L* function.
  872.  
  873. There are practical reasons in video to perform these operations in the
  874. opposite order. First a nonlinear transfer function - gamma correction - is
  875. applied to each of the linear R, G and B. Then a weighted sum of the
  876. nonlinear components is computed to form a signal representative of
  877. luminance. The resulting component is related to brightness but is not CIE
  878. luminance. Many video engineers call it luma and give it the symbol Y'. It
  879. is often carelessly called luminance and given the symbol Y. You must be
  880. careful to determine whether a particular author assigns a linear or
  881. nonlinear interpretation to the term luminance and the symbol Y.
  882.  
  883. The coefficients that correspond to the "NTSC" red, green and blue CRT
  884. phosphors of 1953 are standardized in ITU-R Recommendation BT. 601-2
  885. (formerly CCIR Rec. 601-2). I call it Rec. 601. To compute nonlinear video
  886. luma from nonlinear red, green and blue:
  887.  
  888.     Yprime = 0.299 * Rprime + 0.587 * Gprime + 0.114 * Bprime;
  889.  
  890. The prime symbols in this equation, and in those to follow, denote
  891. nonlinear components.
  892.  
  893.  
  894. C-12  WHAT ARE CIE XYZ COMPONENTS?
  895.  
  896. The CIE system is based on the description of color as a luminance
  897. component Y, as described above, and two additional components X and Z. The
  898. spectral weighting curves of X and Z have been standardized by the CIE
  899. based on statistics from experiments involving human observers. XYZ
  900. tristimulus values can describe any color. (RGB tristimulus values will be
  901. described later.)
  902.  
  903. The magnitudes of the XYZ components are proportional to physical energy,
  904. but their spectral composition corresponds to the color matching
  905. characteristics of human vision.
  906.  
  907. The CIE system is defined in Publication CIE No 15.2, Colorimetry, Second
  908. Edition (1986) [4].
  909.  
  910.  
  911. C-13  DOES MY SCANNER USE THE CIE SPECTRAL CURVES?
  912.  
  913. Probably not. Scanners are most often used to scan images such as color
  914. photographs and color offset prints that are already "records" of three
  915. components of color information. The usual task of a scanner is not
  916. spectral analysis but extraction of the values of the three components that
  917. have already been recorded. Narrowband filters are more suited to this task
  918. than filters that adhere to the principles of colorimetry.
  919.  
  920. If you place on your scanner an original colored object that has
  921. "original" SPDs that are not already a record of three components, chances
  922. are your scanner will not very report accurate RGB values. This is because
  923. most scanners do not conform very closely to CIE standards.
  924.  
  925.  
  926. C-14  WHAT ARE CIE x AND y CHROMATICITY COORDINATES?
  927.  
  928. It is often convenient to discuss "pure" color in the absence of
  929. brightness. The CIE defines a normalization process to compute "little" x
  930. and y chromaticity coordinates:
  931.  
  932.   x = X / (X + Y + Z);  
  933.   
  934.   y = Y / (X + Y + Z);
  935.  
  936. A color plots as a point in an (x, y) chromaticity diagram. When a
  937. narrowband SPD comprising power at just one wavelength is swept across the
  938. range 400 nm to 700 nm, it traces a shark-fin shaped spectral locus in (x,
  939. y) coordinates. The sensation of purple cannot be produced by a single
  940. wavelength: to produce purple requires a mixture of shortwave and longwave
  941. light. The line of purples on a chromaticity diagram joins extreme blue to
  942. extreme red. All colors are contained in the area in (x, y) bounded by the
  943. line of purples and the spectral locus.
  944.  
  945. A color can be specified by its chromaticity and luminance, in the form of
  946. an xyY triple. To recover X and Z from chromaticities and luminance, use
  947. these relations:
  948.  
  949.   X = (x / y) * Y;
  950.   
  951.   Z = (1 - x - y) / y * Y;
  952.  
  953. The bible of color science is Wyszecki and Styles, Color Science [5]. But
  954. it's daunting. For Wyszecki's own condensed version, see Color in Business,
  955. Science and Industry, Third Edition [6]. It is directed to the color
  956. industry: ink, paint and the like. For an approachable introduction to the
  957. same theory, accompanied by descriptions of image reproduction, try to find
  958. a copy of R.W.G. Hunt, The Reproduction of Colour [7]. But sorry to report,
  959. as I write this, it's out of print.
  960.  
  961.  
  962. C-15  WHAT IS WHITE?
  963.  
  964. In additive image reproduction, the white point is the chromaticity of the
  965. color reproduced by equal red, green and blue components. White point is a
  966. function of the ratio (or balance) of power among the primaries. In
  967. subtractive reproduction, white is the SPD of the illumination, multiplied
  968. by the SPD of the media. There is no unique physical or perceptual
  969. definition of white, so to achieve accurate color interchange you must
  970. specify the characteristics of your white.
  971.  
  972. It is often convenient for purposes of calculation to define white as a
  973. uniform SPD. This white reference is known as the equal-energy illuminant,
  974. or CIE Illuminant E.
  975.  
  976. A more realistic reference that approximates daylight has been specified
  977. numerically by the CIE as Illuminant D65. You should use this unless you
  978. have a good reason to use something else. The print industry commonly uses
  979. D50 and photography commonly uses D55. These represent compromises between
  980. the conditions of indoor (tungsten) and daylight viewing.
  981.  
  982.  
  983. C-16  WHAT IS COLOR TEMPERATURE?
  984.  
  985. Planck determined that the SPD radiated from a hot object - a black body
  986. radiator - is a function of the temperature to which the object is heated.
  987. Many sources of illumination have, at their core, a heated object, so it is
  988. often useful to characterize an illuminant by specifying the temperature
  989. (in units of kelvin, K) of a black body radiator that appears to have the
  990. same hue.
  991.  
  992. Although an illuminant can be specified informally by its color
  993. temperature, a more complete specification is provided by the chromaticity
  994. coordinates of the SPD of the source.
  995.  
  996. Modern blue CRT phosphors are more efficient with respect to human vision
  997. than red or green. In a quest for brightness at the expense of color
  998. accuracy, it is common for a computer display to have excessive blue
  999. content, about twice as blue as daylight, with white at about 9300 K.
  1000.  
  1001. Human vision adapts to white in the viewing environment. An image viewed in
  1002. isolation - such as a slide projected in a dark room - creates its own
  1003. white reference, and a viewer will be quite tolerant of errors in the white
  1004. point. But if the same image is viewed in the presence of an external white
  1005. reference or a second image, then differences in white point can be
  1006. objectionable.
  1007.  
  1008. Complete adaptation seems to be confined to the range 5000 K to 5500 K. For
  1009. most people, D65 has a little hint of blue. Tungsten illumination, at about
  1010. 3200 K, always appears somewhat yellow.
  1011.  
  1012.  
  1013. C-17  HOW CAN I CHARACTERIZE RED, GREEN AND BLUE?
  1014.  
  1015. Additive reproduction is based on physical devices that produce
  1016. all-positive SPDs for each primary. Physically and mathematically, the
  1017. spectra add. The largest range of colors will be produced with primaries
  1018. that appear red, green and blue. Human color vision obeys the principle of
  1019. superposition, so the color produced by any additive mixture of three
  1020. primary spectra can be predicted by adding the corresponding fractions of
  1021. the XYZ components of the primaries: the colors that can be mixed from a
  1022. particular set of RGB primaries are completely determined by the colors of
  1023. the primaries by themselves. Subtractive reproduction is much more
  1024. complicated: the colors of mixtures are determined by the primaries and by
  1025. the colors of their combinations.
  1026.  
  1027. An additive RGB system is specified by the chromaticities of its primaries
  1028. and its white point. The extent (gamut) of the colors that can be mixed
  1029. from a given set of RGB primaries is given in the (x, y) chromaticity
  1030. diagram by a triangle whose vertices are the chromaticities of the
  1031. primaries.
  1032.  
  1033. In computing there are no standard primaries or white point. If you have an
  1034. RGB image but have no information about its chromaticities, you cannot
  1035. accurately reproduce the image.
  1036.  
  1037. The NTSC in 1953 specified a set of primaries that were representative of
  1038. phosphors used in color CRTs of that era. But phosphors changed over the
  1039. years, primarily in response to market pressures for brighter receivers,
  1040. and by the time of the first the videotape recorder the primaries in use
  1041. were quite different than those "on the books". So although you may see the
  1042. NTSC primary chromaticities documented, they are of no use today.
  1043.  
  1044. Contemporary studio monitors have slightly different standards in North
  1045. America, Europe and Japan. But international agreement has been obtained on
  1046. primaries for high definition television (HDTV), and these primaries are
  1047. closely representative of contemporary monitors in studio video, computing
  1048. and computer graphics. The primaries and the D65 white point of Rec. 709
  1049. [8] are:
  1050.  
  1051.          x       y       z
  1052. R        0.6400  0.3300  0.0300
  1053. G        0.3000  0.6000  0.1000
  1054. B        0.1500  0.0600  0.7900
  1055.  
  1056. white    0.3127  0.3290  0.3582
  1057.  
  1058. For a discussion of nonlinear RGB in computer graphics, see Lindbloom [9]. 
  1059. For technical details on monitor calibration, consult Cowan [10].
  1060.  
  1061.  
  1062. C-18  HOW DO I TRANSFORM BETWEEN CIE XYZ AND A PARTICULAR SET OF RGB
  1063.       PRIMARIES?
  1064.  
  1065. RGB values in a particular set of primaries can be transformed to and from
  1066. CIE XYZ by a three-by-three matrix transform. These transforms involve
  1067. tristimulus values, that is, sets of three linear-light components that
  1068. conform to the CIE color matching functions. CIE XYZ is a special case of
  1069. tristimulus values. In XYZ, any color is represented by a positive set of
  1070. values.
  1071.  
  1072. Details can be found in SMPTE RP 177-1993 [11].
  1073.  
  1074. To transform from CIE XYZ into Rec. 709 RGB (with its D65 white point), put
  1075. an XYZ column vector to the right of this matrix, and multiply:
  1076.  
  1077.  [ R709 ] [ 3.240479 -1.53715  -0.498535 ] [ X ] 
  1078.  [ G709 ]=[-0.969256  1.875991  0.041556 ]*[ Y ] 
  1079.  [ B709 ] [ 0.055648 -0.204043  1.057311 ] [ Z ] 
  1080.  
  1081. As a convenience to C programmers, here are the coefficients as a C array:
  1082.  
  1083. {{ 3.240479,-1.53715 ,-0.498535},
  1084.  {-0.969256, 1.875991, 0.041556},
  1085.  { 0.055648,-0.204043, 1.057311}}
  1086.  
  1087. This matrix has some negative coefficients: XYZ colors that are out of
  1088. gamut for a particular RGB transform to RGB where one or more RGB
  1089. components is negative or greater than unity.
  1090.  
  1091. Here's the inverse matrix. Because white is normalized to unity, the
  1092. middle row sums to unity:
  1093.  
  1094.  [ X ] [ 0.412453  0.35758   0.180423 ] [ R709 ] 
  1095.  [ Y ]=[ 0.212671  0.71516   0.072169 ]*[ G709 ] 
  1096.  [ Z ] [ 0.019334  0.119193  0.950227 ] [ B709 ] 
  1097.  
  1098. {{ 0.412453, 0.35758 , 0.180423},
  1099.  { 0.212671, 0.71516 , 0.072169},
  1100.  { 0.019334, 0.119193, 0.950227}}
  1101.  
  1102. To recover primary chromaticities from such a matrix, compute little x and
  1103. y for each RGB column vector. To recover the white point, transform RGB=[1,
  1104. 1, 1] to XYZ, then compute x and y.
  1105.  
  1106.  
  1107. C-19  IS RGB ALWAYS DEVICE-DEPENDENT?
  1108.  
  1109. Video standards specify abstract R'G'B' systems that are closely
  1110. matched to the characteristics of real monitors. Physical devices that
  1111. produce additive color involve tolerances and uncertainties, but if you
  1112. have a monitor that conforms to Rec. 709 within some tolerance, you can
  1113. consider the monitor to be device-independent.
  1114.  
  1115. The importance of Rec. 709 as an interchange standard in studio video,
  1116. broadcast television and high definition television, and the perceptual
  1117. basis of the standard, assures that its parameters will be used even by
  1118. devices such as flat-panel displays that do not have the same physics as
  1119. CRTs.
  1120.  
  1121.  
  1122. C-20  HOW DO I TRANSFORM DATA FROM ONE SET OF RGB PRIMARIES TO ANOTHER?
  1123.  
  1124. RGB values in a system employing one set of primaries can be transformed
  1125. into another set by a three-by-three linear-light matrix transform.
  1126. Generally these matrices are normalized for a white point luminance of
  1127. unity. For details, see Television Engineering Handbook [12].
  1128.  
  1129. As an example, here is the transform from SMPTE 240M (or SMPTE RP 145) RGB
  1130. to Rec. 709:
  1131.  
  1132.  [ R709 ] [ 0.939555  0.050173  0.010272 ] [ R240M ] 
  1133.  [ G709 ]=[ 0.017775  0.965795  0.01643  ]*[ G240M ] 
  1134.  [ B709 ] [-0.001622 -0.004371  1.005993 ] [ B240M ] 
  1135.  
  1136. {{ 0.939555, 0.050173, 0.010272},
  1137.  { 0.017775, 0.965795, 0.01643 },
  1138.  {-0.001622,-0.004371, 1.005993}}
  1139.  
  1140. All of these terms are close to either zero or one. In a case like this, if
  1141. the transform is computed in the nonlinear (gamma-corrected) R'G'B'
  1142. domain the resulting errors will be insignificant.
  1143.  
  1144. Here's another example. To transform EBU 3213 RGB to Rec. 709:
  1145.  
  1146.  [ R709 ] [ 1.044036 -0.044036  0.       ] [ R240M ] 
  1147.  [ G709 ]=[ 0.        1.        0.       ]*[ G240M ] 
  1148.  [ B709 ] [ 0.        0.011797  0.988203 ] [ B240M ] 
  1149.  
  1150. {{ 1.044036,-0.044036, 0.      },
  1151.  { 0.      , 1.      , 0.      },
  1152.  { 0.      , 0.011797, 0.988203}}
  1153.  
  1154. Transforming among RGB systems may lead to an out of gamut RGB result where
  1155. one or more RGB components is negative or greater than unity.
  1156.  
  1157.  
  1158. C-21  SHOULD I USE RGB OR XYZ FOR IMAGE SYNTHESIS?
  1159.  
  1160. Once light is on its way to the eye, any tristimulus-based system will
  1161. work. But the interaction of light and objects involves spectra, not
  1162. tristimulus values. In synthetic computer graphics, the calculations are
  1163. actually simulating sampled SPDs, even if only three components are used.
  1164. Details concerning the resultant errors are found in Hall [13].
  1165.  
  1166.  
  1167. C-22  WHAT IS SUBTRACTIVE COLOR?
  1168.  
  1169. Subtractive systems involve colored dyes or filters that absorb power from
  1170. selected regions of the spectrum. The three filters are placed in tandem. A
  1171. dye that appears cyan absobs longwave (red) light. By controlling the
  1172. amount of cyan dye (or ink), you modulate the amount of red in the image.
  1173.  
  1174. In physical terms the spectral transmission curves of the colorants
  1175. multiply, so this method of color reproduction should really be called
  1176. "multiplicative". Photographers and printers have for decades measured
  1177. transmission in base-10 logarithmic density units, where transmission of
  1178. unity corresponds to a density of 0, transmission of 0.1 corresponds to a
  1179. density of 1, transmission of 0.01 corresponds to a density of 2 and so on.
  1180. When a printer or photographer computes the effect of filters in tandem, he
  1181. subtracts density values instead of multiplying transmission values, so he
  1182. calls the system subtractive.
  1183.  
  1184. To achieve a wide range of colors in a subtractive system requires filters
  1185. that appear colored cyan, yellow and magenta (CMY). Cyan in tandem with
  1186. magenta produces blue, cyan with yellow produces green, and magenta with
  1187. yellow produces red. Smadar Nehab suggests this memory aid:
  1188.  
  1189.   ----+             ----------+
  1190.    R  | G    B        R    G  | B
  1191.       |                       |
  1192.    Cy | Mg   Yl       Cy   Mg | Yl
  1193.       +----------             +-----
  1194.  
  1195. Additive primaries are at the top, subtractive at the bottom. On the left,
  1196. magenta and yellow filters combine to produce red. On the right, red and
  1197. green sources add to produce yellow.
  1198.  
  1199.  
  1200. C-23  WHY DID MY GRADE THREE TEACHER TELL ME THAT THE PRIMARIES ARE RED,
  1201. YELLOW AND BLUE?
  1202.  
  1203. To get a wide range of colors in an additive system, the primaries must
  1204. appear red, green and blue (RGB). In a subtractive system the primaries
  1205. must appear yellow, cyan and magenta (CMY). It is complicated to predict
  1206. the colors produced when mixing paints, but roughly speaking, paints mix
  1207. additively to the extent that they are opaque (like oil paints), and
  1208. subtractively to the extent that they are transparent (like watercolors).
  1209. This question also relates to color names: your grade three "red" was
  1210. probably a little on the magenta side, and "blue" was probably quite cyan.
  1211. For a discussion of paint mixing from a computer graphics perspective,
  1212. consult Haase [14].
  1213.  
  1214.  
  1215. C-24  IS CMY JUST ONE-MINUS-RGB?
  1216.  
  1217. In a theoretical subtractive system, CMY filters could have spectral
  1218. absorption curves with no overlap. The color reproduction of the system
  1219. would correspond exactly to additive color reproduction using the red,
  1220. green and blue primaries that resulted from pairs of filters in
  1221. combination.
  1222.  
  1223. Practical photographic dyes and offset printing inks have spectral
  1224. absorption curves that overlap significantly. Most magenta dyes absorb
  1225. mediumwave (green) light as expected, but incidentally absorb about half
  1226. that amount of shortwave (blue) light. If reproduction of a color, say
  1227. brown, requires absorption of all shortwave light then the incidental
  1228. absorption from the magenta dye is not noticed. But for other colors, the
  1229. "one minus RGB" formula produces mixtures with much less blue than
  1230. expected, and therefore produce pictures that have a yellow cast in the mid
  1231. tones. Similar but less severe interactions are evident for the other pairs
  1232. of practical inks and dyes.
  1233.  
  1234. Due to the spectral overlap among the colorants, converting CMY using the
  1235. "one-minus-RGB" method works for applications such as business graphics
  1236. where accurate color need not be preserved, but the method fails to
  1237. produce acceptable color images.
  1238.  
  1239. Multiplicative mixture in a CMY system is mathematically nonlinear, and the
  1240. effect of the unwanted absorptions cannot be easily analyzed or
  1241. compensated. The colors that can be mixed from a particular set of CMY
  1242. primaries cannot be determined from the colors of the primaries
  1243. themselves, but are also a function of the colors of the sets of
  1244. combinations of the primaries.
  1245.  
  1246. Print and photographic reproduction is also complicated by nonlinearities
  1247. in the response of the three (or four) channels. In offset printing, the
  1248. physical and optical processes of dot gain introduce nonlinearity that is
  1249. roughly comparable to gamma correction in video. In a typical system used
  1250. for print, a black code of 128 (on a scale of 0 to 255) produces a
  1251. reflectance of about 0.26, not the 0.5 that you would expect from a linear
  1252. system. Computations cannot be meaningfully performed on CMY components
  1253. without taking nonlinearity into account.
  1254.  
  1255. For a detailed discussion of transferring colorimetric image data to print
  1256. media, see Stone [15].
  1257.  
  1258.  
  1259. C-25  WHY DOES OFFSET PRINTING USE BLACK INK IN ADDITION TO CMY?
  1260.  
  1261. Printing black by overlaying cyan, yellow and magenta ink in offset
  1262. printing has three major problems. First, colored ink is expensive.
  1263. Replacing colored ink by black ink - which is primarily carbon - makes
  1264. economic sense. Second, printing three ink layers causes the printed paper
  1265. to become quite wet. If three inks can be replaced by one, the ink will dry
  1266. more quickly, the press can be run faster, and the job will be less
  1267. expensive. Third, if black is printed by combining three inks, and
  1268. mechanical tolerances cause the three inks to be printed slightly out of
  1269. register, then black edges will suffer colored tinges. Vision is most
  1270. demanding of spatial detail in black and white areas. Printing black with a
  1271. single ink minimizes the visibility of registration errors.
  1272.  
  1273. Other printing processes may or may not be subject to similar constraints.
  1274.  
  1275.  
  1276. C-26  WHAT ARE COLOR DIFFERENCES?
  1277.  
  1278. This term is ambiguous. In its first sense, color difference refers to
  1279. numerical differences between color specifications. The perception of
  1280. color differences in XYZ or RGB is highly nonuniform. The study of
  1281. perceptual uniformity concerns numerical differences that correspond to
  1282. color differences at the threshold of perceptibility (just noticeable
  1283. differences, or JNDs).
  1284.  
  1285. In its second sense, color difference refers to color components where
  1286. brightness is "removed". Vision has poor response to spatial detail in
  1287. colored areas of the same luminance, compared to its response to luminance
  1288. spatial detail. If data capacity is at a premium it is advantageous to
  1289. transmit luminance with full detail and to form two color difference
  1290. components each having no contribution from luminance. The two color
  1291. components can then have spatial detail removed by filtering, and can be
  1292. transmitted with substantially less information capacity than luminance.
  1293.  
  1294. Instead of using a true luminance component to represent brightness, it is
  1295. ubiquitous for practical reasons to use a luma signal that is computed
  1296. nonlinearly as outlined above ( What is luma?  ).
  1297.  
  1298. The easiest way to "remove" brightness information to form two color
  1299. channels is to subtract it. The luma component already contains a large
  1300. fraction of the green information from the image, so it is standard to form
  1301. the other two components by subtracting luma from nonlinear blue (to form
  1302. B'-Y') and by subtracting luma from nonlinear red (to form R'-Y').
  1303. These are called chroma.
  1304.  
  1305. Various scale factors are applied to (B'-Y') and (R'-Y') for different
  1306. applications. The Y  'PBPR scale factors are optimized for component analog
  1307. video. The Y  'CBCR scaling is appropriate for component digital video such
  1308. as studio video, JPEG and MPEG. Kodak's PhotoYCC(tm) uses scale factors
  1309. optimized for the gamut of film colors. Y'UV scaling is appropriate as an
  1310. intermediate step in the formation of composite NTSC or PAL video signals,
  1311. but is not appropriate when the components are kept separate. The Y'UV
  1312. nomenclature is now used rather loosely, and it sometimes denotes any
  1313. scaling of (B'-Y') and (R'-Y'). Y  'IQ coding is obsolete.
  1314.  
  1315. The subscripts in CBCR and PBPR are often written in lower case. I find
  1316. this to compromise readability, so without introducing any ambiguity I
  1317. write them in uppercase. Authors with great attention to detail sometimes
  1318. "prime" these quantities to indicate their nonlinear nature, but because no
  1319. practical image coding system employs linear color differences I consider
  1320. it safe to omit the primes.
  1321.  
  1322.  
  1323. C-27  HOW DO I OBTAIN COLOR DIFFERENCE COMPONENTS FROM TRISTIMULUS
  1324.       VALUES?
  1325.  
  1326. Here is the block diagram for luma/color difference encoding and
  1327. decoding:
  1328.  
  1329. << A nice diagram is included in the .PDF and .PS versions. >>
  1330.  
  1331. From linear XYZ - or linear R1 G1 B1 whose chromaticity coordinates are
  1332. different from the interchange standard - apply a 3x3 matrix transform
  1333. to obtain linear RGB according to the interchange primaries. Apply a a
  1334. nonlinear transfer function ("gamma correction") to each of the components
  1335. to get nonlinear R'G'B'. Apply a 3x3 matrix to obtain color
  1336. difference components such as Y'PBPR , Y'CBCR or PhotoYCC. If necessary,
  1337. apply a color subsampling filter to obtain subsampled color difference
  1338. components. To decode, invert the above procedure: run through the block
  1339. diagram right-to-left using the inverse operations. If your monitor
  1340. conforms to the interchange primaries, decoding need not explicitly use a
  1341. transfer function or the tristimulus 3x3.
  1342.  
  1343. The block diagram emphasizes that 3x3 matrix transforms are used for two
  1344. distinctly different tasks. When someone hands you a 3x3, you have to ask
  1345. for which task it is intended.
  1346.  
  1347.  
  1348. C-28  HOW DO I ENCODE Y'PBPR COMPONENTS?
  1349.  
  1350. Although the following matrices could in theory be used for tristimulus
  1351. signals, it is ubiquitous to use them with gamma-corrected signals.
  1352.  
  1353. To encode Y'PBPR , start with the basic Y', (B'-Y') and (R'-Y')
  1354. relationships:
  1355.  
  1356. Eq 1
  1357.  
  1358.  [  Y'   601 ] [ 0.299  0.587  0.114 ] [ R' ] 
  1359.  [ B'-Y' 601 ]=[-0.299 -0.587  0.886 ]*[ G' ] 
  1360.  [ R'-Y' 601 ] [ 0.701 -0.587 -0.114 ] [ B' ] 
  1361.  
  1362. {{ 0.299, 0.587, 0.114},
  1363.  {-0.299,-0.587, 0.886},
  1364.  { 0.701,-0.587,-0.114}}
  1365.  
  1366. Y'PBPR components have unity excursion, where Y' ranges [0..+1] and each
  1367. of PB and PR ranges [-0.5..+0.5]. The (B'-Y') and (R'-Y') rows need to
  1368. be scaled. To encode from R'G'B' where reference black is 0
  1369. and reference white is +1:
  1370.  
  1371. Eq 2
  1372.  
  1373.  [  Y'  601 ] [ 0.299     0.587     0.114    ] [ R' ] 
  1374.  [  PB  601 ]=[-0.168736 -0.331264  0.5      ]*[ G' ] 
  1375.  [  PR  601 ] [ 0.5      -0.418688 -0.081312 ] [ B' ] 
  1376.  
  1377. {{ 0.299   , 0.587   , 0.114   },
  1378.  {-0.168736,-0.331264, 0.5     },
  1379.  { 0.5     ,-0.418688,-0.081312}}
  1380.  
  1381. The first row comprises the luma coefficients; these sum to unity. The
  1382. second and third rows each sum to zero, a necessity for color difference
  1383. components. The +0.5 entries reflect the maximum excursion of PB and PR of
  1384. +0.5, for the blue and red primaries [0, 0, 1] and [1, 0, 0].
  1385.  
  1386. The inverse, decoding matrix is this:
  1387.  
  1388.  [ R' ] [ 1.        0.        1.402    ] [  Y'  601 ] 
  1389.  [ G' ]=[ 1.       -0.344136 -0.714136 ]*[  PB  601 ] 
  1390.  [ B' ] [ 1.        1.772     0.       ] [  PR  601 ] 
  1391.  
  1392. {{ 1.      , 0.      , 1.402   },
  1393.  { 1.      ,-0.344136,-0.714136},
  1394.  { 1.      , 1.772   , 0.      }}
  1395.  
  1396.  
  1397. C-29  HOW DO I ENCODE Y'CBCR COMPONENTS FROM R'G'B' IN [0, +1]?
  1398.  
  1399. Rec. 601 specifies eight-bit coding where Y' has an excursion of 219 and
  1400. an offset of +16. This coding places black at code 16 and white at code
  1401. 235, reserving the extremes of the range for signal processing headroom and
  1402. footroom. CB and CR have excursions of +/-112 and offset of +128, for a
  1403. range of 16 through 240 inclusive.
  1404.  
  1405. To compute Y'CBCR from R'G'B' in the range [0..+1], scale the rows of
  1406. the matrix of Eq 2 by the factors 219, 224 and 224, corresponding to the
  1407. excursions of each of the components:
  1408.  
  1409. Eq 3
  1410.  
  1411. {{    65.481,   128.553,    24.966},
  1412.  {   -37.797,   -74.203,   112.   },
  1413.  {   112.   ,   -93.786,   -18.214}}
  1414.  
  1415. Add [16, 128, 128] to the product to get Y'CBCR. 
  1416.  
  1417. Summing the first row of the matrix yields 219, the luma excursion from
  1418. black to white. The two entries of 112 reflect the positive CBCR extrema of
  1419. the blue and red primaries.
  1420.  
  1421. Clamp all three components to the range 1 through 254 inclusive, since Rec.
  1422. 601 reserves codes 0 and 255 for synchronization signals.
  1423.  
  1424. To recover R'G'B' in the range [0..+1] from Y'CBCR, subtract [16, 128, 128]
  1425. from Y'CBCR, then multiply by the inverse of the matrix in Eq 3 above:
  1426.  
  1427. {{ 0.00456621, 0.        , 0.00625893},
  1428.  { 0.00456621,-0.00153632,-0.00318811},
  1429.  { 0.00456621, 0.00791071, 0.        }}
  1430.  
  1431. This looks scary, but the Y'CBCR components are integers in eight
  1432. bits and the reconstructed R'G'B' are scaled down to the range
  1433. [0..+1].
  1434.  
  1435.  
  1436. C-30  HOW DO I ENCODE Y'CBCR COMPONENTS FROM COMPUTER R'G'B' ?
  1437.  
  1438. In computing it is conventional to use eight-bit coding with black at code 0
  1439. and white at 255. To encode Y'CBCR from R'G'B' in the range [0..255], using
  1440. eight-bit binary arithmetic, scale the Y'CBCR matrix of Eq 3 by 256/255:
  1441.  
  1442. {{    65.738,   129.057,    25.064},
  1443.  {   -37.945,   -74.494,   112.439},
  1444.  {   112.439,   -94.154,   -18.285}}
  1445.  
  1446. The entries in this matrix have been scaled up by 256, assuming that you will
  1447. implement the equation in fixed-point binary arithmetic, using a shift by eight
  1448. bits. Add [16, 128, 128] to the product to get Y'CBCR. 
  1449.  
  1450. To decode R'G'B' in the range [0..255] from Rec. 601 Y'CBCR, using
  1451. eight-bit binary arithmetic , subtract [16, 128, 128] from Y'CBCR, 
  1452. then multiply by the inverse of the matrix above, scaled by 256:
  1453.  
  1454. Eq 4
  1455.  
  1456. {{   298.082,     0.   ,   408.583},
  1457.  {   298.082,  -100.291,  -208.12 },
  1458.  {   298.082,   516.411,     0.   }}
  1459.  
  1460. You can remove a factor of 1/256 from these coefficients, then accomplish the
  1461. multiplication by shifting. Some of the coefficients, when scaled by 256, are
  1462. larger than unity. These coefficients will need more than eight multiplier
  1463. bits.
  1464.  
  1465. For implementation in binary arithmetic the matrix coefficients have to be
  1466. rounded. When you round, take care to preserve the row sums of [1, 0, 0].
  1467.  
  1468. The matrix of Eq 4 will decode standard Y'CBCR components to RGB
  1469. components in the range [0..255], subject to roundoff error. You must take
  1470. care to avoid overflow due to roundoff error. But you must protect against
  1471. overflow in any case, because studio video signals use the extremes of the
  1472. coding range to handle signal overshoot and undershoot, and these will
  1473. require clipping when decoded to an RGB range that has no headroom or
  1474. footroom.
  1475.  
  1476.  
  1477. C-31  HOW DO I ENCODE Y'CBCR COMPONENTS FROM STUDIO VIDEO?
  1478.  
  1479. Studio R'G'B' signals use the same 219 excursion as the luma component
  1480. of Y'CBCR. To encode Y'CBCR from R'G'B' in the range [0..219], using
  1481. eight-bit binary arithmetic, scale the Y'CBCR encoding matrix of Eq 3
  1482. above by 256/219. Here is the encoding matrix for studio video:
  1483.  
  1484. {{    65.481,   128.553,    24.966},
  1485.  {   -37.797,   -74.203,   112.   },
  1486.  {   112.   ,   -93.786,   -18.214}}
  1487.  
  1488. To decode R'G'B' in the range [0..219] from Y'CBCR, using eight-bit
  1489. binary arithmetic, use this matrix:
  1490.  
  1491. {{   256.   ,     0.   ,   350.901},
  1492.  {   256.   ,   -86.132,  -178.738},
  1493.  {   256.   ,   443.506,     0.   }}
  1494.  
  1495. When scaled by 256, the first column in this matrix is unity, indicating
  1496. that the corresponding component can simply be added: there is no need for
  1497. a multiplication operation. This matrix contains entries larger than 256;
  1498. the corresponding multipliers will need capability for nine bits.
  1499.  
  1500. The matrices in this section conform to Rec. 601 and apply directly to
  1501. conventional 525/59.94 and 625/50 video. It is not yet decided whether
  1502. emerging HDTV standards will use the same matrices, or adopt a new set of
  1503. matrices having different luma coefficients. In my view it would be
  1504. unfortunate if different matrices were adopted, because then image coding
  1505. and decoding would depend on whether the picture was small (conventional
  1506. video) or large (HDTV).
  1507.  
  1508. In digital video, Rec. 601 standardizes subsampling denoted 4:2:2, where CB
  1509. and CR components are subsampled horizontally by a factor of two with
  1510. respect to luma. JPEG and MPEG conventionally subsample by a factor of two
  1511. in the vertical dimension as well, denoted 4:2:0.
  1512.  
  1513. Color difference coding is standardized in Rec. 601. For details on color
  1514. difference coding as used in video, consult Poynton [16].
  1515.  
  1516.  
  1517. C-32  HOW DO I DECODE R'G'B' FROM PHOTOYCC?
  1518.  
  1519. Kodak's PhotoYCC uses the Rec. 709 primaries, white point and transfer
  1520. function. Reference white codes to luma 189; this preserves film
  1521. highlights. The color difference coding is asymmetrical, to encompass film
  1522. gamut. You are unlikely to encounter any raw image data in PhotoYCC form
  1523. because YCC is closely associated with the PhotoCD(tm) system whose
  1524. compression methods are proprietary. But just in case, the following
  1525. equation is comparable to  in that it produces R'G'B' in the range
  1526. [0..+1] from integer YCC. If you want to return R'G'B' in a different
  1527. range, or implement the equation in eight-bit integer arithmetic, use the
  1528. techniques in the section above.
  1529.  
  1530. [ R'709 ] [ 0.0054980  0.0000000  0.0051681 ]    [ Y'601,189 ]   [   0 ]
  1531. [ G'709 ]=[ 0.0054980 -0.0015446 -0.0026325 ]* ( [    C1     ] - [ 156 ] )
  1532. [ B'709 ] [ 0.0054980  0.0079533  0.0000000 ]    [    C2     ]   [ 137 ]
  1533.  
  1534. {{ 0.0054980,  0.0000000,  0.0051681},
  1535.  { 0.0054980, -0.0015446, -0.0026325},
  1536.  { 0.0054980,  0.0079533,  0.0000000}}
  1537.  
  1538. Decoded R'G'B' components from PhotoYCC can exceed unity or go below
  1539. zero. PhotoYCC extends the Rec. 709 transfer function above unity, and
  1540. reflects it around zero, to accommodate wide excursions of R'G'B'. To
  1541. decode to CRT primaries, clip R'G'B' to the range zero to one.
  1542.  
  1543.  
  1544. C-33  WILL YOU TELL ME HOW TO DECODE Y'UV AND Y'IQ?
  1545.  
  1546. No, I won't! Y'UV and Y'IQ have scale factors appropriate to composite
  1547. NTSC and PAL. They have no place in component digital video! You shouldn't
  1548. code into these systems, and if someone hands you an image claiming it's
  1549. Y'UV, chances are it's actually Y'CBCR, it's got the wrong scale factors,
  1550. or it's linear-light.
  1551.  
  1552. Well OK, just this once. To transform Y', (B'-Y') and (R'-Y')
  1553. components from Eq 1 to Y'UV, scale (B'-Y') by 0.492111 to get U and
  1554. scale R'-Y' by 0.877283 to get V. The factors are chosen to limit
  1555. composite NTSC or PAL amplitude for all legal R'G'B' values:
  1556.  
  1557.   << Equation omitted -- see PostScript or PDF version. >>
  1558.  
  1559. To transform to Y'IQ to Y'UV, perform a 33 degree rotation and an exchange
  1560. of color difference axes:
  1561.  
  1562.   << Equation omitted -- see PostScript or PDF version. >>
  1563.  
  1564.  
  1565. C-34  HOW SHOULD I TEST MY ENCODERS AND DECODERS?
  1566.  
  1567. To test your encoding and decoding, ensure that colorbars are handled
  1568. correctly. A colorbar signal comprises a binary RGB sequence ordered for
  1569. decreasing luma: white, yellow, cyan, green, magenta, red, blue and black.
  1570.  
  1571.   [ 1 1 0 0 1 1 0 0 ]
  1572.   [ 1 1 1 1 0 0 0 0 ]
  1573.   [ 1 0 1 0 1 0 1 0 ]
  1574.  
  1575. To ensure that your scale factors are correct and that clipping is not
  1576. being invoked, test 75% bars, a colorbar sequence having 75%-amplitude
  1577. bars instead of 100%.
  1578.  
  1579.  
  1580. C-35  WHAT IS PERCEPTUAL UNIFORMITY?
  1581.  
  1582. A system is perceptually uniform if a small perturbation to a component
  1583. value is approximately equally perceptible across the range of that value.
  1584. The volume control on your radio is designed to be perceptually uniform:
  1585. rotating the knob ten degrees produces approximately the same perceptual
  1586. increment in volume anywhere across the range of the control. If the
  1587. control were physically linear, the logarithmic nature of human loudness
  1588. perception would place all of the perceptual "action" of the control at the
  1589. bottom of its range.
  1590.  
  1591. The XYZ and RGB systems are far from exhibiting perceptual uniformity.
  1592. Finding a transformation of XYZ into a reasonably perceptually-uniform
  1593. space consumed a decade or more at the CIE and in the end no single system
  1594. could be agreed. So the CIE standardized two systems, L*u*v* and L*a*b*,
  1595. sometimes written CIELUV and CIELAB. (The u and v are unrelated to video U
  1596. and V.) Both L*u*v* and L*a*b* improve the 80:1 or so perceptual
  1597. nonuniformity of XYZ to about 6:1. Both demand too much computation to
  1598. accommodate real-time display, although both have been successfully applied
  1599. to image coding for printing.
  1600.  
  1601. Computation of CIE L*u*v* involves intermediate u' and v ' quantities,
  1602. where the prime denotes the successor to the obsolete 1960 CIE u and v
  1603. system:
  1604.  
  1605.   uprime = 4 * X / (X + 15 * Y + 3 * Z); 
  1606.   vprime = 9 * Y / (X + 15 * Y + 3 * Z); 
  1607.  
  1608. First compute un' and vn' for your reference white Xn , Yn  and Zn. Then
  1609. compute u' and v ' - and L* as discussed earlier - for your colors.
  1610. Finally, compute:
  1611.  
  1612.   ustar = 13 * Lstar * (uprime - unprime);
  1613.   vstar = 13 * Lstar * (vprime - vnprime);
  1614.  
  1615. L*a*b* is computed as follows, for (X/Xn, Y/Yn, Z/Zn) > 0.01:
  1616.  
  1617.   astar = 500 * (pow(X / Xn, 1./3.) - pow(Y / Yn, 1./3.));
  1618.   bstar = 200 * (pow(Y / Yn, 1./3.) - pow(Z / Zn, 1./3.));
  1619.  
  1620. These equations are great for a few spot colors, but no fun for a million
  1621. pixels. Although it was not specifically optimized for this purpose, the
  1622. nonlinear R'G'B' coding used in video is quite perceptually uniform,
  1623. and has the advantage of being fast enough for interactive applications.
  1624.  
  1625.  
  1626. C-36  WHAT ARE HSB AND HLS?
  1627.  
  1628. HSB and HLS were developed to specify numerical Hue, Saturation and
  1629. Brightness (or Hue, Lightness and Saturation) in an age when users had to
  1630. specify colors numerically. The usual formulations of HSB and HLS are
  1631. flawed with respect to the properties of color vision. Now that users can
  1632. choose colors visually, or choose colors related to other media (such as
  1633. PANTONE), or use perceptually-based systems like L*u*v* and L*a*b*, HSB and
  1634. HLS should be abandoned.
  1635.  
  1636. Here are some of problems of HSB and HLS. In color selection where
  1637. "lightness" runs from zero to 100, a lightness of 50 should appear to be
  1638. half as bright as a lightness of 100. But the usual formulations of HSB and
  1639. HLS make no reference to the linearity or nonlinearity of the underlying
  1640. RGB, and make no reference to the lightness perception of human vision.
  1641.  
  1642. The usual formulation of HSB and HLS compute so-called "lightness" or
  1643. "brightness" as (R+G+B)/3. This computation conflicts badly with the
  1644. properties of color vision, as it computes yellow to be about six times
  1645. more intense than blue with the same "lightness" value (say L=50).
  1646.  
  1647. HSB and HSL are not useful for image computation because of the
  1648. discontinuity of hue at 360 degrees. You cannot perform arithmetic mixtures
  1649. of colors expressed in polar coordinates.
  1650.  
  1651. Nearly all formulations of HSB and HLS involve different computations
  1652. around 60 degree segments of the hue circle. These calculations introduce
  1653. visible discontinuities in color space.
  1654.  
  1655. Although the claim is made that HSB and HLS are "device independent", the
  1656. ubiquitous formulations are based on RGB components whose chromaticities
  1657. and white point are unspecified. Consequently, HSB and HLS are useless for
  1658. conveyance of accurate color information.
  1659.  
  1660. If you really need to specify hue and saturation by numerical values,
  1661. rather than HSB and HSL you should use polar coordinate version of u* and
  1662. v*: h*uv for hue angle and c*uv  for chroma.
  1663.  
  1664.  
  1665. C-37  WHAT IS TRUE COLOR?
  1666.  
  1667. True color is the provision of three separate components for additive red,
  1668. green and blue reproduction. True color systems often provide eight bits
  1669. for each of the three components, so true color is sometimes referred to
  1670. as 24-bit color.
  1671.  
  1672. A true color system usually interposes a lookup table between each
  1673. component of the framestore and each channel to the display. This makes it
  1674. possible to use a true color system with either linear or nonlinear
  1675. coding. In the X Window System, direct color refers to fixed lookup tables,
  1676. and truecolor refers to lookup tables that are under the control of
  1677. application software.
  1678.  
  1679.  
  1680. C-38  WHAT IS INDEXED COLOR?
  1681.  
  1682. Indexed color (or pseudocolor), is the provision of a relatively small
  1683. number, say 256, of discrete colors in a colormap or palette. The
  1684. framebuffer stores, at each pixel, the index number of a color. At the
  1685. output of the framebuffer, a lookup table uses the index to retrieve red,
  1686. green and blue components that are then sent to the display.
  1687.  
  1688. The colors in the map may be fixed systematically at the design of a
  1689. system. As an example, 216 index entries an eight-bit indexed color system
  1690. can be partitioned systematically into a 6x6x6 "cube" to implement what
  1691. amounts to a direct color system where each of red, green and blue has a
  1692. value that is an integer in the range zero to five.
  1693.  
  1694. An RGB image can be converted to a predetermined colormap by choosing, for
  1695. each pixel in the image, the colormap index corresponding to the "closest"
  1696. RGB triple. With a systematic colormap such as a 6x6x6 colorcube this
  1697. is straightforward. For an arbitrary colormap, the colormap has to be
  1698. searched looking for entries that are "close" to the requested color.
  1699. "Closeness" should be determined according to the perceptibility of color
  1700. differences. Using color systems such as CIE L*u*v* or L*a*b* is
  1701. computationally prohibitive, but in practice it is adequate to use a
  1702. Euclidean distance metric in R'G'B' components coded nonlinearly
  1703. according to video practice.
  1704.  
  1705. A direct color image can be converted to indexed color with an
  1706. image-dependent colormap by a process of color quantization that searches
  1707. through all of the triples used in the image, and chooses the palette for
  1708. the image based on the colors that are in some sense most "important".
  1709. Again, the decisions should be made according to the perceptibility of
  1710. color differences. Adobe Photoshop(tm) can perform this conversion.
  1711. UNIX(tm) users can employ the pbm package.
  1712.  
  1713. If your system accommodates arbitrary colormaps, when the map associated
  1714. with the image in a particular window is loaded into the hardware colormap,
  1715. the maps associated with other windows may be disturbed. In window system
  1716. such as the X Window System(tm) running on a multitasking operating system
  1717. such as UNIX, even moving the cursor between two windows with different
  1718. maps can cause annoying colormap flashing.
  1719.  
  1720. An eight-bit indexed color system requires less data to represent a
  1721. picture than a twenty-four bit truecolor system. But this data reduction
  1722. comes at a high price. The truecolor system can represent each of its
  1723. three components according to the principles of sampled continuous signals.
  1724. This makes it possible to accomplish, with good quality, operations such as
  1725. resizing the image. In indexed color these operations introduce severe
  1726. artifacts because the underlying representation lacks the properties of a
  1727. continuous representation, even if converted back to RGB.
  1728.  
  1729. In graphic file formats such as GIF of TIFF, an indexed color image is
  1730. accompanied by its colormap. Generally such a colormap has RGB entries that
  1731. are gamma corrected: the colormap's RGB codes are intended to be presented
  1732. directly to a CRT, without further gamma correction.
  1733.  
  1734.  
  1735. C-39  I WANT TO VISUALIZE A SCALAR FUNCTION OF TWO VARIABLES. SHOULD I USE RGB
  1736.       VALUES CORRESPONDING TO THE COLORS OF THE RAINBOW?
  1737.  
  1738. When you look at a rainbow you do not see a smooth gradation of colors.
  1739. Instead, some bands appear quite narrow, and others are quite broad.
  1740. Perceptibility of hue variation near 540 nm is half that of either 500 nm
  1741. or 600 nm. If you use the rainbow's colors to represent data, the
  1742. visibility of differences among your data values will depend on where they
  1743. lie in the spectrum.
  1744.  
  1745. If you are using color to aid in the visual detection of patterns, you
  1746. should use colors chosen according to the principles of perceptual
  1747. uniformity. This an open research problem, but basing your system on CIE
  1748. L*a*b* or L*u*v*, or on nonlinear video-like RGB, would be a good start.
  1749.  
  1750.  
  1751. C-40  WHAT IS DITHERING?
  1752.  
  1753. A display device may have only a small number of choices of greyscale
  1754. values or color values at each device pixel. However if the viewer is
  1755. sufficiently distant from the display, the value of neighboring pixels can
  1756. be set so that the viewer's eye integrates several pixels to achieve an
  1757. apparent improvement in the number of levels or colors that can be
  1758. reproduced.
  1759.  
  1760. Computer displays are generally viewed from distances where the device
  1761. pixels subtend a rather large angle at the viewer's eye, relative to his
  1762. visual acuity. Applying dither to a conventional computer display often
  1763. introduces objectionable artifacts. However, careful application of dither
  1764. can be effective. For example, human vision has poor acuity for blue
  1765. spatial detail but good color discrimination capability in blue. Blue can
  1766. be dithered across two-by-two pixel arrays to produce four times the number
  1767. of blue levels, with no perceptible penalty at normal viewing distances.
  1768.  
  1769.  
  1770. C-41  HOW DOES HALFTONING RELATE TO COLOR?
  1771.  
  1772. The processes of offset printing and conventional laser printing are
  1773. intrinsically bilevel: a particular location on the page is either covered
  1774. with ink or not. However, each of these devices can reproduce
  1775. closely-spaced dots of variable size. An array of small dots produces the
  1776. perception of light gray, and an array of large dots produces dark gray.
  1777. This process is called halftoning or screening. In a sense this is
  1778. dithering, but with device dots so small that acceptable pictures can be
  1779. produced at reasonable viewing distances.
  1780.  
  1781. Halftone dots are usually placed in a regular grid, although stochastic
  1782. screening has recently been introduced that modulates the spacing of the
  1783. dots rather than their size.
  1784.  
  1785. In color printing it is conventional to use cyan, magenta, yellow and
  1786. black grids that have exactly the same dot pitch but different
  1787. carefully-chosen screen angles. The recently introduced technique of
  1788. Flamenco screening uses the same screen angles for all screens, but its
  1789. registration requirements are more stringent than conventional offset
  1790. printing.
  1791.  
  1792. Agfa's booklet [17] is an excellent introduction to practical concerns of
  1793. printing. And it's in color! The standard reference to halftoning
  1794. algorithms is Ulichney [18], but that work does not detail the
  1795. nonlinearities found in practical printing systems. For details about
  1796. screening for color reproduction, consult Fink [19]. Consult Frequently
  1797. Asked Questions about Gamma for an introduction to the transfer function of
  1798. offset printing.
  1799.  
  1800.  
  1801. C-42  WHAT'S A COLOR MANAGEMENT SYSTEM?
  1802.  
  1803. Software and hardware for scanner, monitor and printer calibration have had
  1804. limited success in dealing with the inaccuracies of color handling in
  1805. desktop computing. These solutions deal with specific pairs of devices but
  1806. cannot address the end-to-end system. Certain application developers have
  1807. added color transformation capability to their applications, but the
  1808. majority of application developers have insufficient expertise and
  1809. insufficient resources to invest in accurate color.
  1810.  
  1811. A color management system (CMS) is a layer of software resident on a
  1812. computer that negotiates color reproduction between the application and
  1813. color devices. It cooperates with the operating system and the graphics
  1814. library components of the platform software. Color management systems
  1815. perform the color transformations necessary to exchange accurate color
  1816. between diverse devices, in various color coding systems including RGB,
  1817. CMYK and CIE L*a*b*.
  1818.  
  1819. The CMS makes available to the application a set of facilities whereby the
  1820. application can determine what color devices and what color spaces are
  1821. available. When the application wishes to access a particular device, it
  1822. requests that the color manager perform a mathematical transform from one
  1823. space to another. The color spaces involved can be device-independent
  1824. abstract color spaces such as CIE XYZ, CIE L*a*b* or calibrated RGB.
  1825. Alternatively a color space can be associated with a particular device. In
  1826. the second case the Color manager needs access to characterization data
  1827. for the device, and perhaps also to calibration data that reflects the
  1828. state of the particular instance of the device.
  1829.  
  1830. Sophisticated color management systems are commercially available from
  1831. Kodak, Electronics for Imaging (EFI) and Agfa. Apple's ColorSync(tm)
  1832. provides an interface between a Mac application program and color
  1833. management capabilities either built-in to ColorSync or provided by a
  1834. plug-in. Sun has announced that Kodak's CMS will be shipped with the next
  1835. version of Solaris.
  1836.  
  1837. The basic CMS services provided with desktop operating systems are likely
  1838. to be adequate for office users, but are unlikely to satisfy high-end users
  1839. such as in prepress. All of the announced systems have provisions for
  1840. plug-in color management modules (CMMs) that can provide sophisticated
  1841. transform machinery. Advanced color management modules will be
  1842. commercially available from third parties. 
  1843.  
  1844.  
  1845. C-43  HOW DOES A CMS KNOW ABOUT PARTICULAR DEVICES?
  1846.  
  1847. A CMS needs access to information that characterizes the color
  1848. reproduction capabilities of particular devices. The set of
  1849. characterization data for a device is called a device profile. Industry
  1850. agreement has been reached on the format of device profiles, although
  1851. details have not yet been publicly disseminated. Apple has announced that
  1852. the forthcoming ColorSync version 2.0 will adhere to this agreement.
  1853. Vendors of color peripherals will soon provide industry-standard profiles
  1854. with their devices, and they will have to make, buy or rent
  1855. characterization services.
  1856.  
  1857. If you have a device that has not been characterized by its manufacturer,
  1858. Agfa's FotoTune(tm) software - part of Agfa's FotoFlow(tm) color manager -
  1859. can create device profiles.
  1860.  
  1861.  
  1862. C-44  IS A COLOR MANAGEMENT SYSTEM USEFUL FOR COLOR SPECIFICATION?
  1863.  
  1864. Not yet. But color management system interfaces in the future are likely
  1865. to include the ability to accommodate commercial proprietary color
  1866. specification systems such as pantone(tm) and colorcurve(tm). These vendors
  1867. are likely to provide their color specification systems in shrink-wrapped
  1868. form to plug into color managers. In this way, users will have guaranteed
  1869. color accuracy among applications and peripherals, and application vendors
  1870. will no longer need to pay to license these systems individually.
  1871.  
  1872.  
  1873. C-45  I'M NOT A COLOR EXPERT. WHAT PARAMETERS SHOULD I USE TO CODE MY
  1874.       IMAGES?
  1875.  
  1876. Use the CIE D65 white point (6504 K) if you can.
  1877.  
  1878. Use the Rec. 709 primary chromaticities. Your monitor is probably already
  1879. quite close to this. Rec. 709 has international agreement, offers excellent
  1880. performance, and is the basis for HDTV development so it's future-proof.
  1881.  
  1882. If you need to operate in linear light, so be it. Otherwise, for best
  1883. perceptual performance and maximum ease of interchange with digital video,
  1884. use the Rec. 709 transfer function, with its 0.45-power law. If you need
  1885. Mac compatibility you will have to suffer a penalty in perceptual
  1886. performance. Raise tristimulus values to the 1/1.8-power before presenting
  1887. them to QuickDraw.
  1888.  
  1889. To code luma, use the Rec. 601 luma coefficients 0.299, 0.587 and 0.114.
  1890. Use Rec. 601 digital video coding with black at 16 and white at 235.
  1891.  
  1892. Use prime symbols (') to denote all of your nonlinear components!
  1893.  
  1894. PhotoCD uses all of the preceding measures. PhotoCD codes color
  1895. differences asymmetrically, according to film gamut. Unless you have a
  1896. requirement for film gamut, you should code into color differences using
  1897. Y'CBCR coding with Rec. 601 studio video (16..235/128+/-112) excursion.
  1898.  
  1899. Tag your image data with the primary and white chromaticity, transfer
  1900. function and luma coefficients that you are using. TIFF 6.0 tags have been
  1901. defined for these parameters. This will enable intelligent readers, today
  1902. or in the future, to determine the parameters of your coded image and give
  1903. you the best possible results.
  1904.  
  1905.  
  1906. C-46  REFERENCES
  1907.  
  1908. [1] Publication CIE No 17.4, International Lighting Vocabulary. Central
  1909. Bureau of the Commission Internationale de L'Eclairage, Vienna, Austria.
  1910.  
  1911. [2] LeRoy E. DeMarsh and Edward J. Giorgianni, "Color Science for Imaging
  1912. Systems", Physics Today, September 1989, 44-52.
  1913.  
  1914. [3] W.F. Schreiber, Fundamentals of Electronic Imaging Systems, Second
  1915. Edition (Springer-Verlag, 1991).
  1916.  
  1917. [4] Publication CIE No 15.2, Colorimetry, Second Edition (1986), Central
  1918. Bureau of the Commission Internationale de L'Eclairage, Vienna, Austria.
  1919.  
  1920. [5] Guenter Wyszecki and W.S. Styles, Color Science: Concepts and Methods,
  1921. Quantitative Data and Formulae, Second Edition (New York: John 
  1922. Wiley & Sons, 1982).
  1923.  
  1924. [6] Guenter Wyszecki and D.B. Judd, Color in Business, Science and
  1925. Industry, Third Edition (New York: John Wiley & Sons, 1975).
  1926.  
  1927. [7] R.W.G. Hunt, The Reproduction of Colour in Photography, Printing and
  1928. Television, Fourth Edition (Fountain Press, Tolworth, England, 1987).
  1929.  
  1930. [8] ITU-R Recommendation BT.709, Basic Parameter Values for the HDTV
  1931. Standard for the Studio and for International Programme Exchange (1990),
  1932. [formerly CCIR Rec. 709], ITU, 1211 Geneva 20, Switzerland.
  1933.  
  1934. [9] Bruce J. Lindbloom, "Accurate Color Reproduction for Computer Graphics
  1935. Applications", Computer Graphics, Vol. 23, No. 3 (July 1989), 117-126
  1936. (proceedings of SIGGRAPH '89).
  1937.  
  1938. [10] William B. Cowan, "An Inexpensive Scheme for Calibration of a Colour
  1939. Monitor in terms of CIE Standard Coordinates", Computer Graphics, Vol. 17,
  1940. No. 3 (July 1983), 315-321.
  1941.  
  1942. [11] SMPTE RP 177-1993, Derivation of Basic Television Color Equations.
  1943.  
  1944. [12] Television Engineering Handbook, Featuring HDTV Systems, Revised
  1945. Edition by K. Blair Benson, revised by Jerry C. Whitaker (McGraw-Hill,
  1946. 1992). This supersedes the Second Edition.
  1947.  
  1948. [13] Roy Hall, Illumination and Color in Computer Generated Imagery
  1949. (Springer-Verlag, 1989).
  1950.  
  1951. [14] Chet S. Haase and Gary W. Meyer, "Modelling Pigmented Materials for
  1952. Realistic Image Synthesis", ACM Transactions on Graphics, Vol. 11, No. 4,
  1953. 1992, p. 305.
  1954.  
  1955. [15] Maureen C. Stone, William B. Cowan and John C. Beatty, "Color Gamut
  1956. Mapping and the Printing of Digital Color Images", ACM Transactions on
  1957. Graphics, Vol. 7, No. 3, October 1988.
  1958.  
  1959. [16] Charles A. Poynton, A Technical Introduction To Digital Video. 
  1960. New York: John Wiley & Sons, 1996. 
  1961.  
  1962. [17] Agfa Corporation, An introduction to Digital Color Prepress, Volumes 1
  1963. and 2 (1990), Prepress Education Resources, P.O. Box 7917 Mt. Prospect, IL
  1964. 60056-7917. 800-395-7007.
  1965.  
  1966. [18] Robert Ulichney, Digital Halftoning (Cambridge, Mass.: MIT Press,
  1967. 1988).
  1968.  
  1969. [19] Peter Fink, PostScript Screening: Adobe Accurate Screens (Mountain
  1970. View, Calif.: Adobe Press, 1992).
  1971.  
  1972.  
  1973. C-47  CONTRIBUTORS
  1974.  
  1975. Thanks to Norbert Gerfelder, Alan Roberts and Fred Remley for their
  1976. proofreading and editing. I learned about color from LeRoy DeMarsh, Ed
  1977. Giorgianni, Junji Kumada and Bill Cowan. Thanks!
  1978.  
  1979. I welcome corrections, and suggestions for additions and improvements.
  1980.  
  1981.  
  1982. Charles A. Poynton
  1983. Poynton@Poynton.com
  1984. <http://www.inforamp.net/~poynton/>
  1985.  
  1986.  
  1987.