home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / faqs / sci / engr / television / advanced / colorspace-faq_--_FAQ_about_Color_and_Gamma < prev   
Internet Message Format  |  1997-09-29  |  92KB

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