Top Related Projects
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
COLMAP - Structure-from-Motion and Multi-View Stereo
Open source Structure-from-Motion pipeline
Point Cloud Library (PCL)
Open Source Computer Vision Library
Quick Overview
AliceVision is an open-source Photogrammetric Computer Vision framework that provides a set of algorithms for 3D reconstruction and camera tracking. It is designed to be modular and extensible, allowing for easy integration into various applications and workflows. AliceVision is the core engine behind the popular 3D reconstruction software Meshroom.
Pros
- Comprehensive set of algorithms for 3D reconstruction and camera tracking
- Modular and extensible architecture, allowing for easy integration and customization
- Active development and community support
- Cross-platform compatibility (Windows, Linux, macOS)
Cons
- Steep learning curve for beginners due to the complexity of photogrammetry concepts
- Resource-intensive for large-scale reconstructions
- Limited documentation for advanced usage and customization
- Dependency on external libraries may complicate setup and deployment
Code Examples
// Initialize a SfMData object to store the reconstruction data
sfmData::SfMData sfmData;
// Add images to the SfMData object
for (const auto& imagePath : imagePaths)
{
sfmData.views.emplace(viewId, std::make_shared<sfmData::View>(imagePath, viewId, intrinsicId, poseId, width, height));
viewId++;
}
This code snippet initializes a SfMData object and adds images to it for reconstruction.
// Create a feature extractor
feature::ImageDescriber_SIFT describer;
// Extract features from an image
std::unique_ptr<feature::Regions> regions;
image::Image<float> imageGray;
image::ConvertPixelType(image::Image<image::RGBColor>(imagePath), &imageGray);
describer.describe(imageGray, regions);
This example demonstrates how to extract SIFT features from an image using AliceVision.
// Perform Structure from Motion reconstruction
sfm::SfMAlgorithm sfmAlgorithm;
sfm::ReconstructionEngine_sequentialSfM sfmEngine(sfmData, outputFolder);
sfmEngine.SetFeaturesProvider(&featuresProvider);
sfmEngine.SetMatchesProvider(&matchesProvider);
if (!sfmEngine.Process())
{
std::cerr << "SfM reconstruction failed." << std::endl;
return EXIT_FAILURE;
}
This code snippet shows how to perform a Structure from Motion reconstruction using AliceVision.
Getting Started
To get started with AliceVision, follow these steps:
- Clone the repository:
git clone https://github.com/alicevision/AliceVision.git
- Install dependencies (CMake, Boost, OpenEXR, etc.)
- Build AliceVision:
cd AliceVision mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc)
- Use AliceVision in your project by including the necessary headers and linking against the built libraries.
For more detailed instructions and examples, refer to the official documentation and the Meshroom application, which provides a user-friendly interface for AliceVision.
Competitor Comparisons
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
Pros of openMVG
- Lightweight and modular design, making it easier to integrate into existing projects
- Extensive documentation and tutorials for users and developers
- Strong focus on accuracy and mathematical correctness in implementations
Cons of openMVG
- Less feature-rich compared to AliceVision, especially in terms of advanced reconstruction techniques
- Smaller community and slower development pace
- Limited support for GPU acceleration
Code Comparison
AliceVision example (feature extraction):
#include <aliceVision/feature/feature.hpp>
#include <aliceVision/image/image.hpp>
aliceVision::image::Image<float> image;
std::unique_ptr<aliceVision::feature::Regions> regions;
aliceVision::feature::SIFT_Anatomy_Image_Describer_CUDA sift_describer;
sift_describer.Describe(image, regions);
openMVG example (feature extraction):
#include "openMVG/image/image.hpp"
#include "openMVG/features/sift/SIFT_Anatomy_Image_Describer.hpp"
openMVG::image::Image<unsigned char> image;
std::unique_ptr<openMVG::features::Regions> regions;
openMVG::features::SIFT_Anatomy_Image_Describer sift_describer;
sift_describer.Describe(image, regions);
Both libraries offer similar functionality for feature extraction, but AliceVision provides CUDA support for improved performance on compatible hardware.
COLMAP - Structure-from-Motion and Multi-View Stereo
Pros of COLMAP
- More extensive documentation and tutorials
- Faster processing times for large datasets
- Better support for GPU acceleration
Cons of COLMAP
- Less user-friendly interface
- Fewer built-in features for mesh generation and texturing
- Limited support for video input
Code Comparison
AliceVision:
#include <aliceVision/sfmData/SfMData.hpp>
#include <aliceVision/sfmDataIO/sfmDataIO.hpp>
aliceVision::sfmData::SfMData sfmData;
aliceVision::sfmDataIO::Load(sfmData, sfmDataFilename, aliceVision::sfmDataIO::ESfMData::ALL);
COLMAP:
#include <colmap/base/reconstruction.h>
#include <colmap/util/string.h>
colmap::Reconstruction reconstruction;
reconstruction.ReadText(colmap::JoinPaths(input_path, "cameras.txt"),
colmap::JoinPaths(input_path, "images.txt"),
colmap::JoinPaths(input_path, "points3D.txt"));
Both AliceVision and COLMAP are powerful open-source photogrammetry libraries. AliceVision offers a more comprehensive pipeline with built-in meshing and texturing capabilities, while COLMAP excels in performance and scalability for large datasets. COLMAP's code tends to be more low-level and requires more manual setup, whereas AliceVision provides higher-level abstractions for easier integration into existing workflows.
Open source Structure-from-Motion pipeline
Pros of OpenSfM
- Lightweight and more focused on street-level imagery processing
- Better integration with OpenStreetMap data
- More straightforward installation process
Cons of OpenSfM
- Less comprehensive feature set compared to AliceVision
- Smaller community and fewer updates
- Limited to Python, while AliceVision offers C++ implementation
Code Comparison
OpenSfM example:
import opensfm
reconstruction = opensfm.Reconstruction()
reconstruction.add_camera('camera1', 'perspective', [800, 600])
reconstruction.add_shot('shot1', 'camera1', [0, 0, 0], [0, 0, 0])
AliceVision example:
#include <aliceVision/sfmData/SfMData.hpp>
aliceVision::sfmData::SfMData sfmData;
sfmData.views[0] = std::make_shared<aliceVision::sfmData::View>("image.jpg", 0, 0);
sfmData.intrinsics[0] = std::make_shared<aliceVision::camera::Pinhole>(1000, 1000, 36.0);
Both libraries offer functionality for Structure from Motion (SfM) and 3D reconstruction, but AliceVision provides a more comprehensive toolset with additional features like photogrammetry and mesh generation. OpenSfM is more specialized for street-level imagery and has better integration with mapping services. The code examples show that OpenSfM uses a Python interface, making it more accessible for rapid prototyping, while AliceVision's C++ implementation may offer better performance for large-scale projects.
Point Cloud Library (PCL)
Pros of PCL
- Extensive library for 3D point cloud processing with a wide range of algorithms
- Large and active community, providing support and continuous development
- Well-documented with numerous tutorials and examples
Cons of PCL
- Steeper learning curve due to its comprehensive nature
- Can be computationally intensive for large datasets
- Primarily focused on point cloud processing, less suitable for general computer vision tasks
Code Comparison
PCL (Point Cloud Processing):
#include <pcl/point_types.h>
#include <pcl/filters/passthrough.h>
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud(cloud);
pass.setFilterFieldName("z");
pass.setFilterLimits(0.0, 1.0);
AliceVision (Structure from Motion):
#include <aliceVision/sfmData/SfMData.hpp>
#include <aliceVision/sfmDataIO/sfmDataIO.hpp>
aliceVision::sfmData::SfMData sfmData;
aliceVision::sfmDataIO::Load(sfmData, sfmDataFilename, aliceVision::sfmDataIO::ESfMData::ALL);
Open Source Computer Vision Library
Pros of OpenCV
- Broader scope: Covers a wide range of computer vision tasks beyond photogrammetry
- Larger community: More extensive documentation, tutorials, and third-party resources
- Cross-platform support: Works on multiple operating systems and devices
Cons of OpenCV
- Less specialized: Not as focused on photogrammetry and 3D reconstruction
- Steeper learning curve: Due to its extensive feature set, it can be overwhelming for beginners
Code Comparison
AliceVision (SfM pipeline):
sfmData::SfMData sfmData;
sfm::SfMAlgorithms sfmAlgorithms;
sfm::ReconstructionEngine_sequentialSfM sfmEngine(
sfmData,
sfmAlgorithms,
stlplus::folder_append_separator(outDirectory) + "sequential_reconstruction");
OpenCV (Feature detection and matching):
cv::Ptr<cv::Feature2D> detector = cv::xfeatures2d::SIFT::create();
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
detector->detectAndCompute(image, cv::noArray(), keypoints, descriptors);
Both libraries offer powerful tools for computer vision tasks, but AliceVision is more specialized in photogrammetry and 3D reconstruction, while OpenCV provides a broader range of functionalities for various computer vision applications.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
AliceVision is a Photogrammetric Computer Vision Framework which provides a 3D Reconstruction and Camera Tracking algorithms. AliceVision aims to provide strong software basis with state-of-the-art computer vision algorithms that can be tested, analyzed and reused. The project is a result of collaboration between academia and industry to provide cutting-edge algorithms with the robustness and the quality required for production usage.
Learn more details about the pipeline and tools based on it on AliceVision website.
See results of the pipeline on sketchfab.
Photogrammetry
Photogrammetry is the science of making measurements from photographs. It infers the geometry of a scene from a set of unordered photographies or videos. Photography is the projection of a 3D scene onto a 2D plane, losing depth information. The goal of photogrammetry is to reverse this process.
See the presentation of the pipeline steps.
License
The project is released under MPLv2, see COPYING.md.
Citation
If you use this project for a publication, please cite the paper:
@inproceedings{alicevision2021,
title={{A}liceVision {M}eshroom: An open-source {3D} reconstruction pipeline},
author={Carsten Griwodz and Simone Gasparini and Lilian Calvet and Pierre Gurdjos and Fabien Castan and Benoit Maujean and Gregoire De Lillo and Yann Lanthony},
booktitle={Proceedings of the 12th ACM Multimedia Systems Conference - {MMSys '21}},
doi = {10.1145/3458305.3478443},
publisher = {ACM Press},
year = {2021}
}
Bibliography
See Bibliography for the list of research papers and tools used in this project.
Get the project
Get the source code: git clone --recursive git://github.com/alicevision/AliceVision
See INSTALL.md to build the project.
Continuous integration status:
Launch 3D reconstructions
Use Meshroom to launch the AliceVision pipeline.
- Meshroom provides a User Interface to create 3D reconstructions.
- Meshroom provides a command line to launch all the steps of the pipeline.
- Meshroom is written in python and can be used to create your own python scripts to customize the pipeline or create custom automation.
The User Interface of Meshroom relies on Qt and PySide. The Meshroom engine and command line has no dependency to Qt.
Contact
Use the public mailing-list to ask questions or request features. It is also a good place for informal discussions like sharing results, interesting related technologies or publications:
alicevision@googlegroups.com http://groups.google.com/group/alicevision
You can also contact the core team privately on: alicevision-team@googlegroups.com.
Contributing
Beyond open source interest to foster developments, open source is a way of life. The project has started as a collaborative project and aims to continue. We love to exchange ideas, improve ourselves while making improvements for other people and discover new collaboration opportunities to expand everybodyâs horizon. Contributions are welcome. We integrate all contributions as soon as it is useful for someone, don't create troubles for others and the code quality is good enough for maintenance.
Please have a look at the project code of conduct to provide a friendly, motivating and welcoming environment for all. Please have a look at the project contributing guide to provide an efficient workflow that minimize waste of time for contributors and maintainers as well as maximizing the project quality and efficiency.
Use github Pull Requests to submit contributions:
Use the public mailing-list to ask questions or request features and use github issues to report bugs:
Project history
In 2009, CMP research team from CTU started the PhD thesis of Michal Jancosek supervised by Tomas Pajdla. They released windows binaries of their MVS pipeline, called CMPMVS, in 2012. In 2009, Toulouse INP, INRIA and Duran Duboi started a French ANR project to create a model based Camera Tracking solution based on natural features and a new marker design called CCTag. In 2010, Mikros Image and IMAGINE research team (a joint research group between Ecole des Ponts ParisTech and Centre Scientifique et Technique du Batiment) started a partnership around Pierre Moulonâs thesis, supervised by Renaud Marlet and Pascal Monasse on the academic side and Benoit Maujean on the industrial side. In 2013, they released an open source SfM pipeline, called openMVG (âMultiple View Geometryâ), to provide the basis of a better solution for the creation of visual effects matte-paintings. In 2015, Simula, Toulouse INP and Mikros Image joined their efforts in the EU project POPART to create a Previz system based on AliceVision. In 2017, CTU join the team in the EU project LADIO to create a central hub with structured access to all data generated on set based on AliceVision.
See CONTRIBUTORS.md for the full list of contributors. We hope to see you in this list soon!
Top Related Projects
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
COLMAP - Structure-from-Motion and Multi-View Stereo
Open source Structure-from-Motion pipeline
Point Cloud Library (PCL)
Open Source Computer Vision Library
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot