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:
- The visual system constantly recalibrates to the average luminance of the scene (light adaptation). .
- The brain decides what is "white," and judges all other values relative to that (anchoring). .
- Perceived lightness shifts based on surrounding values (simultaneous contrast). .
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.
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!
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
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.
One solid bar of gray. Your eye sees a gradient.
Cones, the cells you are reading this with, adapt within minutes and then stop. Rods, your night vision, keep adapting for half an hour and end up hundreds of times more sensitive. The rod-cone break is the transition point.
Same gray in both frames. With nothing brighter in view, your brain calls it white.