Turn any camera into a 3D Scanner for FREE! (Photogrammetry using VisualSFM)
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
Interesting thoughts
Congratulations @hoffmanengineer! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
By upvoting this notification, you can help all Steemit users. Learn how here!
Congratulations @hoffmanengineer! You have received a personal award!
Click on the badge to view your Board of Honor.
Do not miss the last post from @steemitboard!
Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes
Congratulations @hoffmanengineer! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!