Working with RGB LED matrices in CircuitPython (or Arduino with the Adafruit_Protomatter library), you might notice that certain graphics appear washed out. High-contrast elements such as text or “LED sand” look fine, but something appears off when you try loading a more subtly-shaded BMP image.
It’s not an error in your graphics or the LED matrix, but an artifact of how our eyes have a non-linear response to light. We’ve written a whole guide about the issue and the fix — gamma correction — and you’ll see the topic appear again and again in several other LED-related guides.
We’d like to have gamma correction baked right into our LED matrix driver code. Work continues on that but isn’t ready yet…and once there, it will demand extra RAM and CPU cycles that not all projects can afford.
In the interim, we’ve come up with a couple techniques for preprocessing images to look better on these matrices, as seen in the graphically-intensive Moon Clock and Matrix Portal Eyes projects. Not as desirable as true gamma correction in the matrix driver, but often a good compromise!
Both approaches require using a “regular” desktop or laptop computer — one uses a Python script, the other relies on the free ImageMagick graphics utility.