Hi everyone,
I’d like to share a color calibration workflow I’ve developed over the last few months while using Liberation with a low/mid-quality RGB laser projector.
The problem I’m trying to solve
My main issues were:
-
Inability to reproduce difficult colors, especially orange and violet
-
Pastel colors that look correct in Liberation’s preview but appear almost white on the projector
-
Strong dominance of primaries: red, green and blue look fine, but intermediate hues collapse into CMY.
-
Very poor behaviour at low modulation levels (analog modulation is especially rough below ~30%)
I’m aware that Liberation now includes an official colour calibration guide. However, with my hardware, I still couldn’t reproduce all colors correctly, So I’m sharing a procedure I set up a few months ago for balancing my projectors (I currently own some Emma Lasers and some Chineses which are basically unbranded version of Sheds, I am sure that better products require a lot less effort than this).
Sliders are linear, vision is not
The 0–25–50–75–100 sliders appear to be linearly mapped to laser output (or voltage). Human vision, however, is non-linear: perceived brightness roughly follows a power law.
In video and imaging this is handled using gamma curves. As a starting point, I assumed gamma 2.2, which implies approximately:
-
100% → 100
-
75% → ~53
-
50% → ~22
-
25% → ~5
This already explains why a linear calibration produces crushed midtones and blown colors. I used this as a baseline, not as a strict rule.
My empirical calibration procedure
1. Warm-up
Same as the official guide:
Project a bright white frame for at least 15–20 minutes.
2. Base curve setup
I first remapped the power sliders roughly according to a gamma-2.2 curve:
100% = 1.00
75% = 0.53
50% = 0.22
25% = 0.05
This immediately reduced colour clipping and made gradients usable, but colours were still wrong.
3. Calibrating the 25% level
Pattern 1
Three RGB lines fading from 100% to 0%.
I use the longest tail as reference, then reduced the 25% slider of the other two colors until their low-end tails visually matched.
At this point, I consider the 25% level calibrated.
4. Calibrating the 50% level using CMY
Pattern 2
Three lines:
-
Cyan (G+B) at 50% saturation
-
Magenta (R+B) at 50% saturation
-
Yellow (R+G) at 50% saturation
Here’s the trick. Using CMY is a constructive and eye-friendly way because these colors are the direct opposites of the RGB primaries: when cyan (green + blue) is shown at partial saturation, any residual red immediately contaminates it and shifts its hue, making the red channel error far more visible to the human eye than when adjusting red on its own.
Using these, with this pattern I adjust the 50% sliders:
-
Cyan → adjusts Red 50%
-
Magenta → adjusts Green 50%
-
Yellow → adjusts Blue 50%
The goal is to reproduce the pattern shown above, with a 50% saturation.
In practice, in my cases, all 50% sliders had to move left, sometimes significantly.
5. Calibrating the 75% level
Pattern 3
Same as above, but CMY at 25% saturation.
At this level the colours are extremely washed out, but they must still be recognisable.
I adjust the 75% sliders until cyan, magenta and yellow are still identifiable and stable.
Again, most sliders ended up lower than the initial gamma estimate.
6. Calibrating 50% level again
Pattern 4 – “difficult colours”
Three lines:
-
Violet: 100% Blue + 50% Red
-
Orange: 100% Red + 50% Green
-
Turquoise: 100% Green + 50% Blue
These colours were completely wrong before calibration:
-
Orange always looked yellow
-
Violet collapsed into magenta
-
Turquoise collapsed into cyan
Using this pattern, I go back to the 50% sliders and correct them until these colors are clearly recognizable and saturated.
In my case, for example, the Green 50% slider ended up almost equal to Green 25%, which suggests a very strong non-linearity in the green channel.
After this step, colour separation improved dramatically and I consider the calibration done.
Verification patterns
Pattern 5 – 12-segment colour wheel
12 segments, full saturation, evenly spaced around the hue wheel.
Before (representation):
Only R, G, B were distinct. Everything else collapsed into CMY.
After:
All 12 segments are clearly different and color separated.
Pattern 6 – Full spectrum lines
Two horizontal lines:
-
Top: full hue sweep, 100% saturation
-
Bottom: same sweep, 50% saturation
Before (representation):
The lower line looked almost completely white.
After:
The entire spectrum is visible even at 50% saturation.
White balance (last step)
Only after all the above steps I can adjust white, using the 100% RGB sliders only. In practice, I skip this part because my projectors are not well diode-balanced, and getting a real white means cutting a lot of power from 100% in two channels. Not something I’m willing to trade right now.
This is not a “scientific” calibration, but a repeatable visual method that works well with problematic hardware and allows me to color match pretty well my different devices.
I’d be very interested to hear from you if someone is going to give it a try, calibration clips are attached ![]()
calibration_clips.cpdk (5.2 KB)








