This website uses cookies only for statistics. You can disable it using web browser settings.


3D scanner (024; 21.02.2010; blender)





Simple but works well.


Digital camera with video recording function (resolution: 640x480, 30 frames/sec).


Laser pointer with special ending for linear beam (ending from laser level).


Phonograph as a rotational drive. Modified with low speed motor and Arduino.


Board and measuring tape.




How it works?


Digital camera placed in phonograph axes of rotational record laser light on objects surfaces (it works better in the darkness). Distortion of laser line corresponding to objects deformation derive from location of laser source. Very important is constant rotational speed and precise measurment (calibration).



Based on scheme and calibration value (a,b and c) we can calculate coordinates of every scanned point.






I wrote special python script for converting video direct to point cloud in Blendera 2.49b. Script require Python Image Library (PIL-1.1.7.win32-py2.6). PIL require conversion from *.mov to *.gif format (but *.gif works with only 256 colors).


Helpful documents: PIL handbook, Blender 2.49b API.






Blender screens of room scan:








Scan parameters:
  360 degrees scan,
  video recording time: 82 sec,
  'video to point cloud' conversion time: 115 sec,
  number of generated points: 72 000.


Sample point cloud file: Room.blend.



Sample face scan:


Scan with auto faces generating script:


Mesh after a little processing:





What next?


This construction is better for scan large object. There are some problems with scan in light places and with shining surfaces. It is also interesting a choise of video filter (sometimes it is better to work with red laser on green channel than with red).
Now I am serching for best 'points to surface' algorithm (generating triangle or quad mesh).
See open source MeshLab'a.


updated: 03.03.2010


© Copyright Sebastian Korczak 2009 - 2019