Monday, November 9, 2015

Uniform color models

I had an interesting discussion with Andrew Glassner (since this is often a ray tracing blog I'll tell the youngsters that Andrew is known for many things but he's also the inventor of the first sub-linear ray intersection algorithm!)  about the prismatic color model I have been touting.    Andrew points out that while it retains the good properties of HSV it also retains its worst property: terrible color uniformity.    The color scientists have long rightly held that it would be nice if a color space had intuitively similar changes in color for similar changes in distance in the space.   The so-called MacAdam ellipses on the CIE diagram (where each ellipse holds a collection of colors that are nearby) can be used to warp the CIE space to a more uniform one.

Each MacAdam Ellipse has a set of colors you can barely tell are different.   A "uniform" color space would have disks of the same size for these.   Source wiikipedia.

Andrew rightly points out that for a color space to be kick-ass (my term) it should be at least somewhat uniform.   So a challenge to all of you out there: create a uniform space that is RGB-centric.   Or if you know of one, tell me!

2 comments:

Eric Haines said...

"Lab" color space https://en.wikipedia.org/wiki/Lab_color_space is one you should look into for its uniformity.

I'm guessing there's newer work, but also see https://scholar.google.com/scholar?cluster=10249168640414100005&hl=en&as_sdt=0,33 as a start. You can at least look at the first two pages on Springer's site.

Peter Shirley said...

Lab is my favorite color space for most things and it is what I originally used in my apps, with NTSC old school being another favorite. I ended up switching because terrible out of gamut problems are more terrible when the boundary is complicated. So in the tradoff between nice boundary and nice internal properties, I like nice boundary. That being said, I think a nice boundary and better internal properties are probably possible...