For several weeks (or more), I have been dreaming of the day I’ll get my hands on a Reprap (self-parts-printing 3D desktop printer, a DIY fabber). I have been lucky enough to have a good friend promise me he would give his free time for assembling such a printer for me as long as I pay for the parts. 3 days of work are required to assemble the parts which you can order via the web in case you don’t already have access to such a reprap, which is my case. I will try to wait for the next major release of Reprap, namely Mendel 2.0 (current version = Darwin 1.0) unless I can’t resist temptation long enough…
Anyway, I have mainly been dreaming of possible applications of fabbers. Their use is extremely competitive (and disruptively innovative) as soon as you want to print customized 3D shapes which can’t be bought from the mass-manufacturing market. For instance, a reprap is cool when you want to print a chocolate 3D version of your face (see the Fab@Home project) or a miniature plastic representation of your home or anything that has a shape which is very specific to your case (not to mention the future goal of printing 90% of complex systems such as robots, portable electronic devices including phones and… fabber-assembling robots…). And this is where 3D scanning is a must : with a 3D scanner, you can scan an existing object and build a 3D model from it which you can then modify and print at the scale you want.
So my dreams lead me to this question : I could get a fabber some time soon but how to also get a desktop 3D scanner ? Some people have already started hacking home 3D scanners. But I had also heard of techniques that allow users to build 3D models from existing objects using either a single picture of the object, 2 pictures, several images or even a small movie. Some techniques require that the parameters of the camera(s) are known (position, angles, distance, …). Some techniques require 2 cameras in a fixed and known setup (stereophotography). Some techniques require that the camera is fixed and the object lies on a turntable. I really know nothing about computer vision and the world of 3D techniques so I was happy to learn new words such as « close-range photogrammetry« , « videogrammetry« , « structure from motion« , « matchmoving« , « motion tracking » (which is the same as matchmoving) or « 3D reconstruction« . After some Web wandering, I identified several open source (of course) software packages that could offer some workable path from existing physical objects to 3D models of them using plain cameras or video cameras.
The idea would be the following :
- you take an existing, very personal object, for instance your head !
- with a common digital camera, you take pictures of your head from several angles
- you load these pictures into your favorite 3D reconstruction free software package
- it creates a 3D model of your head which you can then export to a 3D editor for possible adjustments (think Blender)
- you export your corrected 3D model into the reprap software stuff
- your reprap fabs your head out of plastic (or chocolate ?)
Here are the software projects I identified :
- From a single image :
- Using a turntable :
- From stereo images :
- BLIX, Blender Extensions allow 3D measurement using pairs of calibrated camera views and image-based modeling using pairs of calibrated camera view, probably abandonware :-(
- reconststereo, 3D reconstruction using Stereo Vision, System Prototype to make 3D reconstruction solution using stereo images, Rest In Peace
- Stereo: Photo-metrology, Easy to use software and versatile methods of digitizing 3D objects, Active and growing !
- EStereo/StereoPlus (see also this page), allowing a user to load images and compute their disparity image and visualize/manipulate their 3D reconstruction
- From a movie or a sequence of pictures :
- e-Foto, a free GNU/GPL educational digital photogrammetric workstation, but is it suitable for close-range photogrammetry ?
- Voodoo Camera Tracker, a tool for the integration of virtual and real scenes, estimates camera parameters and reconstructs a 3D scene from image sequences ; oops, this is not free software but freeware only
- Octave vision, Algorithms for the recovery of structure and motion, using Octave, a one-shot development, no future…
- Tracking / Structure from Motion, another piece of student homework
- libmv, a structure from motion library, which plans to one day take raw video footage or photographs, and produce full camera calibration information and dense 3D models, very promising but being rewritten at the moment (August 2008)
- GPU KLT a high-performance research implementation
- Using the shadow of a stick (!) :
- Don’t know which technique is used :
- OpenCV (see also this site), Intel’s Open Computer Vision library may some day contain some 3D reconstruction capabilities
- Voxelization, a .NET based framework, designed for helping in development of different volume reconstruction, 3D voxel visualization and color consistency algorithms in multi view dynamic scenes, dead project ?
My personal conclusion :
I haven’t tested any of these packages. At the moment, there seems to be no easy-to-use free software package that would compare to commercial stuff such as Photomodeler or ImageModeler or research works such as Microsoft Photosynth. However these techniques and algorithms seem to be mature enough to become present as open source package soon, especially given the emerging interest in 3D scanning for fabbers ! Most promising free packages for scannerless 3D scanning for fabbers are probably Stereo and libmv.
What do you think ?