rich strange

the lab / field notes

A printed checkerboard is not flat

· GodotSpacePlane

Calibrating the cameras on a projection rig usually starts with a printed checkerboard, and the standard OpenCV solve assumes the board is flat. Ours wasn't, and the solve didn't notice.

We measured it while building the Lens step for GodotSpacePlane. A paper print on card had about 1.1 mm of twist, and a print on particle board flexed by 0.4 to 0.7 mm, depending on how it was held. A flat-board solve puts that error into the camera's focal length without telling you, so the same camera came out 1.2 to 1.5% different from one session to the next. OpenCV's own error estimate was 3.6 to 4.4 times too small to warn us. Solving for the board's shape as well as the lens brought sessions within about 0.2% of each other.

If you're calibrating cameras for a projection rig, two cheap things help: mount the print on something stiff (we're moving to 9 mm MDF), and hold it by opposite corners. And don't trust a single solve's error bar. Run the calibration twice and compare the focal lengths. If they're more than a few tenths of a percent apart, the board is probably the problem.

The Lens step capture screen: a checkerboard outlined in yellow, a grid of picture counts, and the prompt 'Hold still, 9.0 px (still is under 6.0)'.
The Lens step waits until the board is held still.
The same screen washed green with 'SAVED 7' in large letters across it.
The whole wall flashes green when a picture is kept.
Tool
GodotSpacePlane: Projection mapping and calibration inside the Godot engine.
Hire me for
Projection set-up and calibration for your venue.