VisualSFM is the application which reconstructs a set of 2D images to create three dimensional point clouds. Three dimensional depth information derived from images by Structure from Motion imaging technique. The aim of this method is to find correspondence from one image to the others, image features such as edges with gradients.
Feature detection is handled by SIFT (Scale-invariant feature transform) algorithm. Example of an image detection with SIFT:
VisualSFM is easy to use, you have 4 steps to start dynamic reconstruction.
- Firstly, you add the images, more images more features being detected (in expense of processing power). Please be careful with images having high resolutions may cause undesired behaviour on GPU. Please resize images if needed (Image size higher than 3200)
- Match images.
- You can specify the pair list for the matching yourself using "SfM->Pairwise Matching -> Compute Specified Match".
- You may use your own feature matches by selecting "SfM->Pairwise Matching->Import Feature Matches"
- You can use your own feature detectors by writing a feature detector in the this format in a .sift file: [Header][Location Data][Descriptor Data][EOF]
- Sparse Reconstruction, matched image features' positions in set being calculated for a relatice coordinate system. This step is quicker comparing to the dense reconstruction. After Sparse Reconstruciton all the images, Each image and recognized features (detected edges) will have different color.
- Dense Reconstruction (CVMS), where the point cloud is going to be formed. The output will be a 3d model in .ply format. The file can be opened in MeshLab for further processing. The time taken for this process may take several seconds to several hours depending on your number of photos, their quality and your system setup. For further details on VisualSFM, please refer to Changchang Wu's web site.
To view the final model, you may use MeshLab. It took only 123 images to create 3D car below. This images are work of Erik-nl. More images can be found
here.
Author
İsmail Erdem Sırma
Senior Software Engineer