One of my goals for Lightscript is to be able to perform automatic calibration of moving lights. A concept central to Lightscript’s handling of moving lights is that they should all use the same co-ordinate system, but that requires knowledge of the position and orientation of the lights. I’ve been through several attempts at coming up with an automated way of estimating the pose of the lights, but so far all of the attempts have been met with accuracy issues or other fundamental problems.
My latest approach has been to use a digital camera and apply computer vision techniques. To this end, I’ve been been playing with OpenCV.
Early results are encouraging. I threw together a simple 6×9 chessboard image on a piece of A4 paper and took several photographs of it. This is a pretty standard technique for camera calibration, and there seem to be a fair few examples of this around on the web. OpenCV has some nice functions to find such chessboards in images and then to use the results to estimate the camera parameters.
So I had a go. I threw my test images at it, obtained the camera parameters, and then used them to reproject an array of cubes onto the original images. I’m rather impressed by the accuracy, which is far greater than I’d imagined. Here is the result. Click for high-resolution images if you don’t mind waiting a while for them to load.