Methodology

Many value tools exist, but not a single one solves all problems correctly, and there are certain problems no other tool solves at all. This page is how Value Lab approaches them.

Value perception

Our eye is a terrible light meter.

We simply have no mechanism which tells us the absolute amount of physical light coming off an object. The brain instead computes the ratios between surfaces and throws the absolute number away. Because of this, when we judge a value (perceived lightness), the ruler our eye measures with keeps changing on us:

Squinting cuts through some of this bias, but is a crude approximation. Dim lighting is another technique which actually works well by switching off our color vision so only value remains, but you can't paint in the dark.

On top of all this, there's another problem. Equal jumps on the value scale don't equate to equal amounts of physical light in the real world. For example, a value that looks 50% gray is only reflecting about 20% of the light.

CIELAB

Value Lab is built on CIELAB, a color space designed to correct this exact issue, so equal steps on the scale read as equal steps to our eye. Munsell solved this over a century ago with a book of painted chips you match by eye. CIELAB is the same idea written as a precise formula, so every color gets an exact number instead of an approximation.

0 0.25 0.5 0.75 1 0 25 50 75 100 L* linear physical luminance (linear light) perceived lightness (L*) Equal steps in luminance Equal steps in perceived lightness (L*)
The linear dashed line on this chart represents the naive guess, 0.25 light = 25% gray, which greatly underestimates the darks. In actuality, 0.25 light is nearly 60% gray, which is what the curve of the CIELAB L* channel corrects for. Darks are given more room on the scale, since a little extra light goes a long way in the shadows but barely registers near white.

CIELAB describes any color with three numbers. L* is lightness, running from 0 (black) to 100 (white), and it closely matches what painters call value. a* and b* are the two color axes: magenta against green, and blue against yellow. When both are zero, the color is a neutral gray.

Saturation (chroma)

Have you ever noticed how it seems harder to guess the value for certain colors?

Less saturated colors are easier to accurately judge the value, but as colors get more vibrant, our eye starts to confuse saturation with value, and our brain has a harder time seeing the true lightness.

The epiphany is that the most saturated version of a color only occurs at a single point on the value scale, and it's different for each color. A saturated blue is darker than all other hues, and appears at 4.0 value. The color red is at 5.3, green at 8.7, and yellow at 9.5. Hue carries its own value!

0 25 50 75 100 0 40 80 120 L* (lightness) maximum chroma red yellow green blue
The most saturation (chroma) each hue can reach at each value level. A saturated yellow is lighter than green, green is lighter than red, and red is lighter than blue. Blue has the most headroom for lighter colors which are less saturated.

This also gives you a rough approximation worth remembering when you're painting. A vibrant yellow will be very light in value, with a vibrant green right behind it. A vibrant red is much darker, about halfway down the value scale, with the vibrant blue sitting a bit darker than red.

Because of these properties, blue and red also have lots of room to get lighter at the same time as getting less saturated, whereas green and yellow have far less room (but they still exist, e.g. beige). In other words, most desaturated greens and yellows are darker, whereas desaturated reds and blues can be both lighter and darker.

It's important to note the chart above applies to the way values look on your phone or computer. Paint pigment moves the peaks in the chart to the left (darker) because pigment doesn't emit light like your screen.

Green is affected by this the most, which darkens by 3-4 value steps. When you see a vibrant green on your screen, it might be an 8, but when you mix it in paint, it must be a 5 due to the pigment's darker saturation peak. If you ever thought green was hard to paint, now you know why! Yellow darkens by only 1 step, red and blue don't shift at all.

Try this image in the app and look at how the yellow and blue hydrant, red stripes in the flag, and green trees appear when converting to black & white. You will notice they line up with the order of the peaks.

The chain of translations

A photo reaches you through a chain of translations: physical light, a camera sensor, a file encoding, a color profile, a device display, and finally your eye. Each step answers the question "how bright is this?" in a different way. A tool that treats the pixels in a file as if they were the light in the scene teaches your eye the wrong relationships.

Two axes of simplification

Value simplification. The output buckets you choose, and the input mapping that decides how much of the photo falls into each one. Presets are generated from the reference photo's own value histogram.

Shape simplification. The detail absorption algorithm preserves edge fidelity, where most simplification in other tools is neighborhood averaging: effectively blurring before bucketing, which erodes shapes and introduces sandwiched value artifacts that were never in the scene.

Reference

Naive approach

Detail absorption

Two scenes, each reduced to three values. Notice on the lantern that the naive approach creates values that do not exist in the original (the mid-gray rim around the window of the lantern), as well as acid erosion around the sharp angles of the windows. On the boots, contours wander and melt into smears which destroy the beauty of shape design that appears organically in nature.

Adjustments

Multiple adjustments can be applied at once, and each is computed in the domain where it is physically honest: exposure in linear light, blur either optical (linear light, like a lens) or display (on the rendered image). Because no step bakes in error, they combine freely. Blur over Values mode in particular produces effects you cannot get from other tools.

Value finder

Tap anywhere to read the value underneath, numbered on your own value scale. It inherits whatever value system you have configured, so the number you read is the number you would mix.