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.
- Keep the laser and the camera on the same horizontal level.
- Keep the laser 19.8 cm at the RIGHT of the camera. If you keep it to the left of the camera, depth will be inverted.
- Put the object in the center of the camera; the laser should point obliquely to the object.
One of the "improvements" I added to the program is that you can give the distance between laser and camera as an commandline option.
Webcams
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/v4l1compat.so
Options
The help can be displayed by typing
makerscanner -h
Options are:
- -h : this help
- -D : debug
- -n : suppress background
- -N # : suppress background for so many pixels (default 25)
- -d # : distance between laser and camera (default 19.8)
- -t # : Brightness Threshold (2 - 50; default 25)
- -b # : Brightness Filter (0 - 1.0; default 0.8)
- -p # : Pedestal height, below with no data will be saved. Default bottom of image
- -r # : rainbow effect for simulating depth in camera. Larger objects, bigger values.
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.
PLY or OBJ
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