3 ms·
The assumption is that using another color space (like proposed CIE) would unlock mathematical manipulation of color palettes in design. I don't think this is t
by jmiskovic 7y ago
The assumption is that using another color space (like proposed CIE) would unlock mathematical manipulation of color palettes in design. I don't think this is true.
Our eyes are very sensitive to color shades and we'll easily notice if something is off. Colors are carefully picked by designers to fit together in quite subjective and non-mathematical manner. From observing some well constructed palettes, I derived the basic process used to create them. Pick the approximate colors you want, arrange them so they are all visible, and then tweak color shades so that all of them could exist under same lightning conditions in physical world. If some color seems jarring or wrong, that's because it could only exist under different lightning from rest of palette.
The text seems to neglect the vast amount of information lost when we use just a single point in color space to represent the whole light spectrum. For example, magenta signifies presence of both bluish and reddish wavelengths. If your math is not based on spectrum components, how do you hope to arrive to correct color when mixing two spectrums? Linear interpolation between two points in color space?
I think HSL is huge improvement over RGB model for designers, but other color spaces aren't really worth the effort. If you need light and dark theme for your UI, both will need to be hand crafted. Shifting hues by 5% or calculating complementary color won't be good enough.
- mark-r 7y agoI've seen the problems that can occur from using e.g. LAB for everything. It solves some problems but creates some new ones; it's not a panacea.
- jacobolus 7y agoCan you elaborate? “It creates some problems” is a pretty vague.
- thewebcount 7y agoFor one thing, the vast majority of users, even technical users, don't know what it is or how it works. So sitting someone down with an Lab color picker would likely leave most designers confused. For another, its ranges are pretty bizarre. It's been a while since I hand-wrote the conversion, but if I recall correctly, the a and b axes had different minima and maxima, and the default conversion without any scaling ends up leaving you with ranges that are something like 0-200 for one axis and 0-500 for the other. You can scale these to be 0-1 or 0-100 or whatever, but there's no agreed-upon conversion used by different software. Its shape is also non-intuitive. The range of visible colors it represents is not a cube or cylinder or sphere. It's a multi-lobed 3D object that's hard to reason about. To do the conversion from RGB (which is not only what you get from monitors, but also from camera sensors), you need to know things like the white point of the device it's being displayed on. Users rarely have this information, and operating systems are pretty spotty on supplying it. (And users often misconfigure it.) I agree it's a good color space for the uses it was designed for. Unfortunately, there are a lot of confounding factors that make it difficult for typical users, even technical ones, to use.
- jacobolus 7y agoIf you have a specific color in mind you don’t want to be picking a* and b* but instead hue h* and chroma C* (polar coordinates). CIELAB isn’t perfect here (there’s some hue shift as you change chroma in the purple–blue range), but it’s pretty good, considering how simple it is. > You can scale [a and b axes] to be 0-1 or 0-100 or whatever, but there's no agreed-upon conversion used by different software. Please don’t rescale the a* and b* coordinates. These are standardized and have remained consistent since the model was introduced in the 1970s. > Its shape is also non-intuitive [...] hard to reason about The gamut of RGB displays is not intuitive. That’s the whole point. If you squash it into a regular shape then people using it end up misled into thinking they are dealing with a regular shape. In fact they are still dealing with the same weird irregular shape in terms of human-perceived color attributes, it’s just now their coordinates have been obscenely warped so they match the gamut but now have nothing to do with human perception. So e.g. changing the HSL “H” parameter will not only inconsistently affect perceived hue, but will also dramatically distort lightness and chroma relationships between colors. Anecdotally, having watched artists of various skill levels at work, this causes significant amounts of confusion. Pretty much everyone who uses HSL/HSV type models has no idea what they are dealing with, and the result is gross misunderstanding. When artists work with it long enough they can learn to work around it, but they end up with hilariously incoherent rationalizations and explanations for their heuristic techniques. Believe it or not, working with perceptually relevant coordinates is more rather than less intuitive, even for complete novices, after just a tiny bit of explanation. This is because the model matches their first-hand experience. Moreover, because the model is consistent, formal knowledge aligns with experience and grows over time. It helps if the UI reveals what they are dealing with though. (For example, Photoshop’s CIELAB mode is not ideally integrated, and not very obvious to non-experts. But once understood it still makes the image editing process much smoother and more predictable.) > To do the conversion from RGB (which is not only what you get from monitors, but also from camera sensors), you need to know things like the white point of the device it's being displayed on. You always need this information to ingest an image from a specific camera or display an image on a specific display. If you [either you personally as an artist, or the software system you are working with] aren’t aware of the basic attributes of your system you’re going to end up with bad results. There is no one “RGB”; every camera and every display is different. With some systems artists can let the software automatically make all of the choices along the way from image capture to display, but that would still be true under some change of working color space. > uses it was designed for The use CIELAB was designed for was colorimetric specification of surface colors, so that e.g. your plastic toy factory, paint mixing shop, or magazine printer could produce reliable results. It was designed to be simple enough that it could be computed in real time by hardware spectrophotometers of the 1960s–1970s. But it also works as a pretty decent color space for judging human perceptual attributes. There are some better alternatives (IPT, CIECAM02, ...) but they are more complicated and less widespread.
- mark-r 7y agoOne example: I worked on some software that would allow you to change the hue in one part of an image to match that of a color you selected. Originally this was done in HSL or HSV, can't remember which - but it worked perfectly. Then management got the idea that LAB would be more correct, and everything had to change. If you tried to change an intense blue to intense yellow it didn't work - the yellow was darkened to match the luminosity of the blue, so it bore no resemblance to the color you were trying to match.
- jacobolus 7y ago> assumption is that using another color space (like proposed CIE) would unlock mathematical manipulation of color palettes in design The point is not really “mathematical manipulation” per se. It’s helpful to have human-relevant coordinates anywhere humans are making the decisions, because it dramatically reduces human confusion, and leads people to make better informed decisions. “HSL” and “HSV” (i.e. the RGB cube arbitrarily squashed into a cylinder) are bad models for human use, because despite their names the coordinates have little to do with human perception, and as a result create tremendous amounts of confusion and bad results, especially from anyone who isn’t an expert artist. https://en.wikipedia.org/wiki/HSL_and_HSV#Disadvantages https://en.wikipedia.org/wiki/HSL_and_HSV#Disadvantages
- jmiskovic 7y agoI've once built a color picker that used HSL and was very usable. It wasn't standard color wheel or set of HSL sliders. Instead you would modify the color directly on the design in relative fashion by slowly dragging cursor in one direction. Each of HSL values was modified by dragging in certain direction, for example hue was left to right, lightness was up-right to down-left and saturation was up-left to down-right. It was very intuitive and fast to find a good shade using this design. The key was modifying colors directly on design instead on separate UI panel, and using relative tweaking model for incremental approach to correct shade. HSL was great choice here. Maybe other color spaces like CIE would be more successful if they were less CS- and math-heavy and simpler to understand for designers.
- jacobolus 7y agoIf you took your same design concept and changed the coordinate system to polar-coordinate CIELAB, I 100% promise you that essentially all artists would find it easier and more pleasant to use, without any other required change. For the software developer, the only additional bit of trickiness is that some color changes will push a color out of gamut, so you need to implement some method of bringing those back into gamut. As a simple first method to try let me recommend preserving hue/lightness and clipping the chroma so the result fits within the gamut.