Knowing when you don’t know
Point any color-identifying app at a white wall under a warm bulb and it will tell you, with total confidence, that the wall is beige.
It isn’t a bug in any one app. It’s physics, plus a design decision that everyone made the same way.
Why cameras get color wrong
A camera doesn’t measure the color of a surface. It measures the light bouncing off it, which is the surface color and the light source mixed together. A white wall under a tungsten bulb genuinely does reflect orange light. The camera is not malfunctioning when it records orange.
Phones try to undo this automatically — that’s white balance — and they’re decent at it. But “decent” means they get close, drift as you move, and fail in exactly the conditions people most often need help: mixed lighting, dim rooms, colored bulbs, deep shade.
So the pixels arriving at a color app are unreliable in a way that varies from moment to moment. Every app then does the same thing with them: finds the nearest color name and says it.
The part that actually matters
If you can see the wall, a wrong answer costs you nothing. You notice, you shrug, you move on.
If you can’t, you have no way to catch it. The app is the only source of information you have, and it just told you something false in exactly the same tone it uses when it’s right. There is no signal that this particular answer was a guess.
A confidently wrong answer is worse than “I’m not sure.” Not slightly worse — categorically worse, because it removes your ability to compensate.
“I’m not sure” lets you do something: move to the window, turn on a light, ask someone, or decide the answer doesn’t matter enough to chase. Certainty forecloses all of that.
What we do instead
Iromi computes how much to trust every reading, from a handful of cheap checks:
- Is this one flat color? If the sample straddles a seam or an edge, its average is a color that isn’t in front of you.
- Is the name unambiguous? If two names are nearly tied, saying one of them is a coin flip presented as a fact.
- Is the color recoverable at all? Blown-out highlights and crushed shadows destroy the information; no amount of processing brings it back.
- Is the answer holding still? A reading that flickers between two names across frames is telling you something.
- Is this a dark object, or a dark room? Those produce identical pixels, so this one can’t be answered from the sample alone — it needs to know how much light is in the scene.
- Would the answer survive the light being different? This is the one that catches the white wall. A saturated red is red under any bulb. A pale neutral is not: it could be white under a warm light or beige under a neutral one, and no amount of staring at it will tell you which.
That last check is the honest heart of it. When the answer depends on a fact we don’t have, the reading is hedged or withheld — not because the measurement was sloppy, but because the question is genuinely undecidable from what we can see.
And then it hands you the fix
Uncertainty on its own is just an unhelpful shrug. So every hedged reading comes with the next step, chosen from whatever specifically went wrong: add light, move out of the glare, aim at a flat area, hold steady, move closer.
Or — the one that solves the white wall permanently — point at something white or grey and tap once. Iromi works out what the light is doing and corrects for it from then on. That takes two seconds and is free, because a feature that determines whether an answer is right has no business being behind a paywall.
Proving it, not just claiming it
Here is where we have to be careful, because “our app knows when it’s unsure” is easy to say and hard to earn.
The engine is tested against colors rendered under modelled light sources — tungsten, cool white, fluorescent, dim, mixed — which is enough to prove the direction of every effect, and to make a regression a build failure rather than a surprise. It is not enough to prove the confidence numbers mean what they say. Modelled light has no sensor noise and no camera doing its own corrections behind your back.
The real test is a reliability diagram: photograph a color chart under every lighting condition, run the pipeline over it, and check whether the readings it calls 90% likely are right about 90% of the time. If the curve doesn’t track the diagonal, the confidence figure is decoration.
That work is in progress and the tooling for it is built. We’ll publish what it shows — including the parts that don’t flatter us, because a confidence claim you can’t check is exactly the thing this app exists to argue against.