How it works
Chromacy answers three questions about a photo: which part of it is the subject, what color that subject is, and what people would call that color. This page explains how it works out each answer, in plain words, and names the color science behind each step. Everything here runs on your iPhone.
Finding the subject
Section titled “Finding the subject”Chromacy doesn’t know what’s in your photo. It finds the subject by looking at how the colors are laid out:
- Every pixel goes into a perceptual color space. Chromacy converts each pixel to OKLab (Björn Ottosson, 2020), the space modern CSS uses. In OKLab, the distance between two colors tracks how different they look, which plain RGB numbers don’t.
- Similar pixels are grouped. A clustering method called k-means sorts the pixels into a handful of color groups. It starts from a fixed seed, so the same photo always gives the same answer.
- Light and shade are joined up. Groups that share a hue and differ mainly in lightness are merged. The lit and shaded sides of one sweater are one color, not two.
- Each group is scored as the possible subject. A group scores higher the more of the photo it covers. It scores lower the more it looks like background: backdrops run along the edges of the frame and spread evenly, while a subject mostly doesn’t. A grey group scores lower when something colorful is also in the shot, and a group near the middle gets a little extra.
- The color is the subject where it’s lit. Of the subject’s tones, Chromacy takes the lightest one that is big enough to be the material and keeps its full chroma, and measures the median of that tone, not the average of every pixel. Shadows are darker and duller, so a tennis ball mostly in shade still reads as its yellow-green felt; a shiny glint is lighter but washes out toward white, so it doesn’t win either. One object can also have more than one tone of the same hue, like an apple’s red and its orange streaks: these stay apart, so the answer is a tone the object really has. The marker on the photo sits on that tone.
When two groups score about the same, the photo is ambiguous, and Chromacy says so and asks you to tap the subject. You can tap anywhere on the photo at any time to measure that spot instead. A tap reads the median color of a small circle around your finger, so a stray pixel doesn’t decide it.
Naming the color
Section titled “Naming the color”A color word should mean what people mean by it, not an RGB primary. So Chromacy’s names come from the xkcd color survey (Randall Munroe, 2010), in which about 222,500 people named random colors on their own screens. Chromacy uses the 920 names people agreed on most, each with the average color given that name. “Navy” is the color people called navy, and “blue” is the color people called blue.
Each result shows:
- The nearest names: the survey names closest to the color in OKLab.
- The basic color term: which of the 11 basic color words of English (Brent Berlin and Paul Kay’s red, orange, yellow, green, blue, purple, pink, brown, grey, black and white) most people would use. Hue decides first, and then lightness and chroma adjust it the way English does: a dark or muted orange is brown, a very light red is pink, and near-greys are white, grey or black.
Answering a question
Section titled “Answering a question”You can ask in your own words: “is it blue or green?”, “teal versus turquoise”, “is it navy?”. Chromacy finds the color words in the question and measures the color against each of them three ways, and shows all three.
Perceptual hue (OKLCh). OKLCh is OKLab in polar form: lightness, chroma (how colorful) and hue as an angle. Chromacy measures the angle from the color to each word’s color. When the color and both words are colorful, hue is what the argument is about, so this is the main verdict. OKLCh angles follow perceived hue much more closely than the familiar color wheel does.
Overall difference (CIEDE2000). CIEDE2000 (often written ΔE2000) is the standard formula for how different two colors look overall, combining lightness, chroma and hue. When the color or one of the words is nearly grey, hue means little, so this becomes the main verdict. In words:
| ΔE2000 | Reads as |
|---|---|
| under 2.3 | the same (about one just-noticeable difference) |
| 2.3 to 10 | a shade off |
| 10 to 25 | clearly different |
| 25 or more | another color |
The HSV color wheel. This is the hue wheel most color pickers show, so Chromacy shows it for comparison. It isn’t perceptual: equal steps around it don’t look like equal steps. When it disagrees with the other two, the result says so.
If the two words come out nearly equal, within 8% of each other, the answer is too close to call, and Chromacy says that rather than picking a side.
“Is it navy?”
Section titled ““Is it navy?””A yes-or-no question asks about every shade of the word: “is it pink?” also counts hot pink and deep pink. The answer is Yes, Sort of or No. “Sort of” usually comes with the reason, such as “navy in hue, but more vivid”, and the result shows what the color would look like with the word’s lightness and chroma.
Why people argue: how much of each hue
Section titled “Why people argue: how much of each hue”The visual system describes every hue as a mix of at most two of four unique hues: red, yellow, green and blue. Orange looks like red and yellow; teal looks like green and blue. Nothing looks like red and green at once.
Chromacy works out that mix with CAM16 hue quadrature. CAM16 (Li and colleagues, 2017) is a color appearance model that predicts how a color looks to a typical viewer. Its hue quadrature places a hue between its two neighboring unique hues and reports how much of each it appears to contain, like “51% green, 49% blue”.
When the split is close to even, the color genuinely sits on the line between the two, and different people will see it differently. Chromacy says so: those are exactly the colors people argue about.
An example
Section titled “An example”Here is what Chromacy’s color code reports for #00C0C0, asked “blue or green?”:
| Measure | Blue | Green | Says |
|---|---|---|---|
| Perceptual hue (OKLCh) | 69° away | 52° away | green |
| Overall difference (ΔE2000) | 49.8 | 30.9 | green |
| HSV color wheel | 43° away | 58° away | blue |
The verdict is closer to green. By appearance it is 51% green and 49% blue, a near-even blend, so the result notes that colors this balanced are the ones people argue about. It also notes that the HSV wheel disagrees, because it treats hue differently from how eyes do.
How it looks to other eyes
Section titled “How it looks to other eyes”Chromacy shows the color as it appears with four kinds of color vision deficiency, and what each would call it:
| Shown as | Clinical name | What’s different |
|---|---|---|
| Red-green (common) | Deuteranopia | no green cones; about 1 in 100 men |
| Red-green (less common) | Protanopia | no red cones; about 1 in 100 men |
| Blue-yellow (rare) | Tritanopia | no blue cones |
| No color | Achromatopsia | lightness only |
The first three use the simulation by Machado, Oliveira and Fernandes (2009) at full severity. The last keeps only the color’s luminance. In the example above, #00C0C0 reads as green with typical vision, as blue with the common red-green deficiency, and as grey with the less common one.
Harmonies
Section titled “Harmonies”Chromacy suggests colors that go with the one it found: complementary (opposite), analogous (either side), triadic (a third of the way round in each direction) and split complementary (either side of opposite). They are turned around the OKLCh hue circle, so they keep the color’s lightness and colorfulness. Where a screen can’t show a suggested color, Chromacy reduces its chroma until it fits, keeping its lightness and hue.
White balance
Section titled “White balance”Light changes color. Under a warm bulb, everything in a photo shifts toward orange, including the thing you want to measure. In white-balance mode you tap something in the photo that should be white or grey, like a sheet of paper or a wall. Chromacy works out how far that reference is from neutral and removes the same cast from the subject’s color.
It does this with a von Kries adaptation in the CAT16 cone space: it scales the long, medium and short cone responses so the reference becomes a neutral grey at its own lightness, the way your eyes adapt to a room’s light, then applies the same scaling to the color.
What the measurements can’t know
Section titled “What the measurements can’t know”Chromacy measures the colors in the photo, and a photo isn’t the object. The light it was taken in, the camera’s own processing, and the screen you view it on all change what you see. The support page covers how to get the most faithful reading.
