About

I, Gerard Harbers, am developing this site as an early open color science initiative. Over the years, I have learned and created a lot of content about light & color: I wrote texts, programs, and software libraries and gave talks. I even designed and made electronic boards with light and color sensors and applications to use them.

It would be good to share some of it, as I learned quite a bit over time and discovered that color is a complex topic to understand, and that is the purpose of this site: to be an educational resource to learn more about and manage color. It's intended for anyone with a technical interest in the topic of color, such as students doing color projects, lighting designers, and photographers, to name a few.

It is a work in progress, so please be patient and return to the site later if you don't find what you need, and let me know what you like to see here. Currently, I am planning to provide the following content:

  • A blog covering all aspects of advanced color management and color science, and general discussions about color, and human vision.
  • A collection of (mostly) measured spectra, to use for educational purposes: for example, emission spectra of the sun and lamps, but also color book swatches (Munsell), and various color matching functions (CIE 1931, CIE 2005). You can download spectral values in various formats and with varying spectral domains to use, for example, in spreadsheets, to do your calculations, or use in other applications.
  • Color & Illumination Engineering Javascript library, which can be used in web applications and to run your scripts in DENO, a modern TypesScript/JavasScript runtime. This library implements many algorithms for color evaluation, as recommended by the International Commission on Illumination, and many algorithms from other standardization organizations, such as the IES (Illumination Engineering Society). It uses spectral distributions of color only, instead of color coordinates. It is written in the Rust programming language, and implemented as a WebAssembly library, with Typescript and Javascript interfaces.
  • CMX is a Spectral Color Management JavaScript library to manage International Color Consortium (ICC) color profiles.
  • A collection of online web applications related to color vision and color measurement.

Spectral Color Management

To get colors right in color reproduction, such as photographic prints, or when viewing images on display, colors need to be quantified in form of a color specification.

Typically you describe a color by a name such as yellow, but what is "yellow"? Do you mean "canary yellow" "bumblebee yellow" or "gold yellow"? Or maybe you prefer to use a color swatch in a color book, such as Pantone® 17-1504 (also a yellow color, Pantone color of the year 2021)? And when you develop software applications, you probably specify a color by a set of three numbers, such as a hexadecimal RGB value, F5DF50 as a color on a webpage. But you might also have noticed that such a color can appear quite differently on your smartphone when directly compared with the color you see on a monitor or laptop screen.

If you are a color expert, you are probably familiar with more formal representations of color, such as CIE 1931 XYZ tristimulus values or CIELAB color coordinates. In that case, you probably also know that these representations of color are of limited use: we see color differently based on illumination conditions, and surround conditions when viewed in print or on display.

In a color reproduction system, all components in a color reproduction system, for example, a camera, display, or printer, need to be characterized or profiled to get color right. Color management systems calculate the color values to use for printing or displaying the correct colors using the color profiles of the equipment. Most modern operating systems and graphical software applications integrate these color management functions, such as macOS and Adobe® Photoshop.

So far, these color management systems represent color by their CIE 1931 XYZ tristimulus values, or CIELAB coordinates, which are essentially three values. Color profiles use these color representations in look-up tables (LUTs). However, based on extensive color research over the past decades, we know that, firstly, this CIE Standard Observer is not a good representation of the color vision capability of an average human observer. Secondly, we don't see all the same colors, and how we see color depends on our genes, age, and health.

To consider how you see, or your audience sees, color specifically, it would be best to use dedicated color sensation curves, not a (flawed) definition of Standard Observer from before 1931. And instead of describing color by just three numbers, you need to start using spectral representations of color. To explain what those are and how you manage color for dedicated observers is the ultimate goal of this site.

Spectral color management is difficult and still in a very early stage of development. Also, this site is under development and will be for the foreseeable future. To keep up to date with all the developments, check out the blog section: here, you'll find what's new on this site, what's new in terms of new research, and new products.