It is hard to hide the fact that am a fan of 3D scanning. Being able to turn a physical object into a digital model is very convenient, especially if you have access to a 3D printer. However, there is one problem. Professional 3D scanning software can get expensive, and often needs very specialized equipment. 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 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 post ;D.
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 determination. VisualSFM will use various algorithms to detect features (such as corners, edges, etc) in each image. If you are interested in learning more, you can read up on feature detectors such as scale-invariant feature transform (SIFT) . It then will compare features in one image, to features in all the other images to see if it can find matches between images. If a match is found, its able to determine the difference in orientation based on the different orientation of the features. With enough matches, eventually you'll have a 360deg view of the object
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! From here you can import it into other software to clean up the scan, add/modify the object, or even send it to a 3D printer. Why download a car, when you can scan one yourself!
The computer science behind the software is fascinating, I highly recommend anyone interested to look into the various techniques for Structure from motion. I'd love to dive into the topic deeper, but that'll have to be a post for another time! Thank you for reading, and let me know if you've had experience with photogrammetry, or any other kind of 3D scanning techniques!
-Hoffman Engineering