Makerscanner (paai)

This is an attempt to improve the makerscanner program of Andrew Barry.

Download the source here

Barry's setup supposes a prebuilt mounting for laser and camera. However, it is possible to build your own mounting, e.g., using lego bricks or even to keep the laser in your hand and sweep it over the object - if you did not drink too much the night before. But you need to be aware of a few simple constraints or your scan will look skewed.

One of the "improvements" I added to the program is that you can give the distance between laser and camera as an commandline option.


As far as the webcams go: I used the Logitech Orb and the Philips Vesta, both more than ten years old. A cheap Trust camera (10 Euros) also worked OK, so I expect that about every camera will work. On Linux (Kubuntu) it may be necessary to preload a library. Do this by
export LD_PRELOAD=/usr/lib/libv4l/


The help can be displayed by typing
makerscanner -h
Options are:
Brightness Threshold controls how bright the laser must be in the image for it to be detected. Low values will be more forgiving of light lasers or dark objects, but tend to produce more noise.

Brightness Filter controls how bright pixels must appear relative to other laser pixels. Low values are more forgiving but tend to produce more noise.

The pointcloud file, threshold values and pedestal height can be adjusted later in the GUI.

The top 25 pixels (above the green line) are reserved for a flat surface. If the entire top of the image is not looking at a flat surface, the scan will not work well.

Depth in the camera window is simulated by a rainbow effect. Use the -r option to increase or decrease the scale. The default (200) should work well for objects up to 30 cm.

Try not to move the camera or objects during the scan. The system uses an image-difference technique which means that it is sensitive to any changes in the image.

You can either save the pointcloud as a Stanford .ply file or a Wavefront .obj file. The .ply file also stores the color. But when you want to mesh several scans into a complete object, you will need to convert to the .obj format.

Hans Paijmans, April 2012