Steve on Image Processing

November 19th, 2008

Color Gamut Mapping

After attending ICC DevCon 2008 last week in Portland, Oregon, I stayed for another day to take a couple of short courses at the Color Imaging Conference. One of the courses was Color Gamut Mapping, taught by Ján Morovic of Hewlett-Packard. Ján is the author of the book Color Gamut Mapping, published this past summer. I didn't get a chance to look at the book, but I thought Ján's short course was quite good.

Let me show you a couple of pictures to illustrate what I mean by color gamut mapping.

The first is a sample color image that ships with the Image Processing Toolbox (peppers.png):

The second image simulates what the first might look like if printed in a newspaper:

(The process of simulating the appearance of hardcopy output on a computer monitor is called soft proofing.)

The two images look substantially different because many colors that can be displayed on a typical computer monitor cannot be exactly reproduced on newsprint. We say that the monitor and the newsprint have different color gamuts, and the process of mapping monitor colors to newsprint colors is color gamut mapping.

Ján provided more precise definitions of these terms from CIE and ISO:

Colour gamut: a range of colours achievable on a given colour reproduction medium [...] under a given set of viewing conditions - it is a volume in colour space. (CIE, 2004d, pp. 2)

Gamut mapping: mapping of the colour-space coordinates of the elements of a source image to colour-space coordinates of the elements of a reproduction to compensate for differences in the source and output medium colur gamut capability. (ISO 22028-1:2004)

Color science presentations all seem to spend a lot of time on definitions! That's probably because there is often much confusion and disagreement over them.

Notice that the definition of color gamut refers to both the reproduction medium (characteristics of paper, inks, etc.) and the viewing conditions (such as the level and type of ambient light). One of my favorite quotes of the conference was from Ján: "In complete darkness all prints have the same gamut."

Different gamut mapping methods have different aims. For example, in some situations you might want to preserve the colors that are in both the source and the destination gamuts. Below is a soft proof of such a mapping.

This soft proof exhibits considerable clipping and loss of detail. That's because the goal of preserving in-gamut colors limits our ability to adjust the out-of-gamut colors in a pleasing way. On the other hand, the first soft proof shown above uses a different gamut mapping method that adjusts both in-gamut and out-of-gamut colors in order to produce a result that's more "pleasing."

I'm working on a new example using ICC profiles and different rendering intents. That example will show how I created the soft proofs above using Image Processing Toolbox functions. I'll post it soon.

I'll leave you with a new word I learned in the course. Ján talked about the difference between a person's verbal description of a perception (such as color), and the perceptual experience itself. The verbal description is only a very indirect representation of the experience. In that context, Ján taught us the word ekphrasis, which refers to a rhetorical description of a visual work of art, like a poem about a sculpture.

There you go - a little Greek education to mix in with your dose of image processing for the day.


Get the MATLAB code

Published with MATLAB® 7.7

2 Responses to “Color Gamut Mapping”

  1. jiangxi replied on :

    hello,mr steve
    I am chinese student ,Recently,I am learning some knowledge
    about gamut mapping.Can you give me some informations on image dependent gumat mapping or spatial/space dependent .
    so sorry to waste your time for reading my poor english.
    I hope you can give me a e-mail (vip-dog@163.com) about my question,a little word will be enough.
    Thank you very much!
    a chinese student, jiangxi

  2. Steve replied on :

    Jiangxi—Try the book Color Gamut Mapping.

Leave a Reply

Wrap code fragments inside <pre> tags, like this:

<pre class="code">
a = magic(3);
sum(a)
</pre>

If you have a "<" character in your code, either follow it with a space or replace it with "&lt;" (including the semicolon).


Steve Eddins manages the Image & Geospatial development team at The MathWorks and coauthored Digital Image Processing Using MATLAB. He writes here about image processing concepts, algorithm implementations, and MATLAB.

  • Sana: hi steve, could you explain to me how i would be able to use the dir function, to do a loop through a directory...
  • Nishtha: Sir, I have preprocessed the image in following steps: [1] adaptive histogram equalization [2] thresholding...
  • Kristof: I also strongly support the idea. I have just recently bumped into the problem that im2single was not...
  • Steve: David—I’ m glad you found it useful!
  • David Lalejini: I found your example very useful for finding connected nodes in a large set of input pairs. I start...
  • tommy: Dear Steve, I have a question,please if you are kind to help me regarding the accumulator array dimensions of...
  • Steve: Abc—I don’t know how to distinguish the faces. You might try posting your question in the MATLAB...
  • Manju: well if we have a few ovals within each other like in a cell how do we measure the distance from the center...
  • Steve: Manju—What do you mean? How is each region defined?
  • Manju: if we have 2-3 regions within each other how do we measure the regions of each one?

These postings are the author's and don't necessarily represent the opinions of The MathWorks.