projects/ idealab/

Camera Measurement System

 

Here are some images from a camera-based measurement system I implemented in Matlab.  I needed a way to easily measure the orientation of a group of mirrors.  One of our solar concentrator designs used an array of mirrors to reflect light from the sun onto a single stationary receiver.  After these devices were manufactured, we needed a way to quickly measure how well the mirrors were oriented during assembly, to determine how much they deviated from their intended orientations.  We could have attempted to measure the mirror orientation mechanically, but invariably we would have ended up slightly moving the mirrors when we touched measurement equipment to them and that process is extremely labor intensive.  The idea here for a better measurement system was to reflect some light pattern in the mirrors, take a photograph, then back out all of the mirror geometry from the reflected patterns.  I wrote matlab software that processes an image of the device reflecting a checkerboard pattern from a nearby wall in all of the mirrors, then calculates the mirror centers and all of the mirror normals from the patterns.  It had to work out all of the geometry transforms and make sure I calibrated the camera to account for lens distortions, but after that, measuring the mirror orientation became very quick and accurate. 

A rendering of an example device with 25 mirrors whose orientations need to be measured:

Now here is the same device in a dark room, reflecting only the checkerboard patterns from a nearby wall:

From this image, the software performs some auto-corner finding and clustering routines to make sets of points for each mirror:

The software then analyzes the set of points for each mirror and determines where in a regularly spaced grid each point is located:

Then after the software determines the transformation necessary to convert the wall grid into the the reflected mirror grid,
it can calculate the plane of the reflected pattern.  The mirror plane can then be calculated since it is halfway between the
reflected plane and the mirror plane:  

It does this for all 25 mirrors so that the orientation for each mirror plane is known relative to the wall plane and the camera position: