Turn any camera into a 3D Scanner using VisualSFM
As I talked about in a previous blog post, turning your cellphone into a 3D scanner using 123D Catch, professional 3D scanning software can get expensive. Luckily for us hobbyists, there are some great free tools out there to give us very similar results, and all we need is a camera and a few free programs.
To quickly recap, photogrammetry is the process of creating a 3D model from a series of photographs. It uses various algorithms to detect features in a picture, and compares them to features found in the other pictures. When it finds a set of common features between two pictures, it can then work out the different in orientation between them. With enough pictures around the object, and enough time to process, a 3D model can then be reconstructed from them.
The program I am using today is VisualSFM (structure from motion). It can be found here. It is an amazing program which at the end produces either a point-cloud to be processed into a mesh using Meshlab, or further processed by PMVS/CMVS, but that is a topic for another blog post.
To start, you can load in a series of images into VisualSFM. Be sure to remove any pictures which are out of focus. You want each picture to be at a different angle, but with small enough differences so that common features can be found between images. I aim for about 30-40 pictures in total.
The first processing step is to do feature detection and orientation. This will compare all the pictures to the other, detecting features and finding matching features. It then uses that data to find the orientation that the pictures were taken at.
After that is done, time for dense reconstruction. Using that orientation data from the previous step, it produces a point cloud of the 3 dimensional representation of the object. These steps can take a bit of time to complete, but having a power GPU to handle the parallel processing certainly helps.
Congratulations, you now have a 3D object produced using just a bunch of pictures.