Compositions containing hundreds of "vibrating" colors are vibrating gradients.



Vibrating Boundaries, ExplodedReferring to Albers’ Vibrating Boundaries explained here, we see that Albers was limited to working with 2 colors at a time. Vibrating Gradients expand on Vibrating Boundaries, using hundreds of vibrating colors as opposed to a single pair.
SpeedThe task of choosing colors of equal lightness has traditionally been both labor and time-intensive. In 1964, when Albers wrote Interaction of Color, it was not possible to choose and display an array of precisely chosen colors as required in this expanded excercise. Today it is possible to design & show these with modern color tools & displays.
Perceptual RelevanceJust as with Vibrating Boundaries,  maintaining equivalent lightness is required to achieve the “glow”. Perceptually irrelevant color pickers like HSB & HSL are not able to do this task, as explained in this presentation here. CAM16 is able to faithfully do this task. By being both perceptually relevant and a digital tool, it can quickly and accurately choose hundreds of colors that all interchangeably vibrate.
How?

Step 1: Slicing the Gamut
Differing lightnesses have differing gamut shapes (producible colors) in a perceptually relevant color ordering system such as CAM16. At low lightnesses, vivid blues are producible, but not vivid yellows, and the opposite in high  lightnesses. Pick the lightness that emphasizes the nuances you desire.First, a lightness must be chosen to “slice” the gamut with, and to keep constant on all pixels in the composition, so that all pixels vibrate. The chosen gamut in these examples is sRGB, so that it is producible on most 21st century displays.

A Vibrating Gradient composition changing its character at various chosen lightness slices of the sRGB gamut, shown in CAM16.

[Parameters: La = 80 cd/m2 ;  XYZw = D65; Yb = 20; viewing conditions = Average]
Step 2: Mapping the Gamut Edge As the gamut is never a uniform disk with a grey center, but capable of producing different chromas at different hues, each of those maximum chromas need to be determined per hue. It is recommended to create a dictionary, matching each hue degree (index) with its maximum producible chroma (definition). When working with multiple lightnesses for different compositions, consider using a nested dictionary, layered by each lightness you choose. Gamut mapping in CAM16 is incredibly computationally expensive (takes a long time), but when performed once and saved as a dictionary, the values that took so long to calculate can be recalled efficiently with a look up table (LUT) operation.Step 3: Pixel placement. In the final step, you take all of your pre-calculated chromas and assign them to pixels of different hues. Lastly, you apply the same lightness to all values, then you convert the JCh CAM16 values to XYZ, then from XYZ to sRGB, and there you have your composition. Be sure to not compress the image, most compression algorithms are not perceptually robust enough to not introduce lightness artifacts that will obliterate the vibrating effect.A finalized Vibrating Gradient composition, Lightness (J) = 65.
© 2024 Nader Sadoughi