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)
A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷
Quick Overview
Meshroom is an open-source 3D Reconstruction Software based on the AliceVision framework. It provides a user-friendly graphical interface for photogrammetry, allowing users to create 3D models from photographs. Meshroom is designed to be accessible to beginners while offering advanced features for experienced users.
Pros
- User-friendly interface, making 3D reconstruction accessible to non-experts
- Supports various input formats and camera types
- Highly customizable pipeline with node-based workflow
- Free and open-source, with active community support
Cons
- Can be resource-intensive, requiring powerful hardware for large datasets
- Limited documentation for advanced features and troubleshooting
- Steep learning curve for optimizing complex reconstructions
- Occasional stability issues, especially with very large datasets
Getting Started
To get started with Meshroom:
- Download the latest release from the official GitHub repository.
- Install the software following the instructions for your operating system.
- Launch Meshroom and create a new project.
- Drag and drop your images into the Images panel.
- Click on "Start" to begin the reconstruction process.
- Once complete, you can view and export your 3D model.
For more detailed instructions and advanced usage, refer to the Meshroom documentation.
Competitor Comparisons
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
Pros of openMVG
- More flexible and modular architecture, allowing for easier integration into custom pipelines
- Supports a wider range of camera models and calibration methods
- Better documentation and more extensive examples for developers
Cons of openMVG
- Less user-friendly interface compared to Meshroom's GUI
- Requires more technical knowledge to set up and use effectively
- Fewer built-in post-processing options for 3D models
Code Comparison
Meshroom (Python):
import meshroom.multiview
pipeline = meshroom.multiview.photogrammetry(
input_images=["image1.jpg", "image2.jpg", "image3.jpg"],
output_folder="output"
)
pipeline.execute()
openMVG (C++):
#include "openMVG/sfm/sfm.hpp"
openMVG::sfm::SfM_Data sfm_data;
openMVG::sfm::ReconstructionEngine_SequentialSfM sfmEngine(
sfm_data,
"./output",
stlplus::create_filespec("./output", "Reconstruction_Report.html")
);
sfmEngine.Process();
The code comparison shows that Meshroom provides a higher-level, more user-friendly API for photogrammetry tasks, while openMVG offers more fine-grained control over the reconstruction process, requiring more detailed setup and configuration.
COLMAP - Structure-from-Motion and Multi-View Stereo
Pros of COLMAP
- More efficient and faster processing, especially for large datasets
- Supports a wider range of camera models and calibration options
- Better documentation and active community support
Cons of COLMAP
- Command-line interface can be less user-friendly for beginners
- Lacks a built-in GUI for visualization and interaction
- May require more manual intervention for complex scenes
Code Comparison
Meshroom (Python):
import meshroom.multiview
reconstruction = meshroom.multiview.photogrammetry(
input_images=["image1.jpg", "image2.jpg", "image3.jpg"],
output_dir="output"
)
COLMAP (C++):
#include <colmap/controllers/automatic_reconstruction.h>
colmap::AutomaticReconstructionController controller;
controller.AddImagePaths({"image1.jpg", "image2.jpg", "image3.jpg"});
controller.Run();
Both repositories focus on photogrammetry and 3D reconstruction, but COLMAP offers more advanced features and flexibility. Meshroom provides a more user-friendly interface with its node-based workflow, making it easier for beginners to get started. COLMAP's command-line approach and extensive options cater to advanced users and researchers. While Meshroom uses Python for its high-level API, COLMAP is primarily implemented in C++ for performance optimization.
Open source Structure-from-Motion pipeline
Pros of OpenSfM
- Lightweight and flexible, suitable for various platforms and devices
- Extensive documentation and tutorials for easier adoption
- Strong support for geospatial data and GPS integration
Cons of OpenSfM
- Less user-friendly interface compared to Meshroom's node-based GUI
- Limited built-in meshing and texturing capabilities
- Smaller community and fewer regular updates
Code Comparison
OpenSfM:
reconstruction = opensfm.Reconstruction()
reconstruction.add_camera('SIMPLE_RADIAL', focal, width, height)
reconstruction.add_shot('image1.jpg', 'camera1', rotation, translation)
reconstruction.add_point(coordinates, color)
Meshroom:
graph = Graph()
cameraInit = graph.addNode("CameraInit")
featureExtraction = graph.addNode("FeatureExtraction")
imageMatching = graph.addNode("ImageMatching")
graph.addEdge(cameraInit.output, featureExtraction.input)
graph.addEdge(featureExtraction.output, imageMatching.input)
Both OpenSfM and Meshroom are powerful tools for photogrammetry and 3D reconstruction. OpenSfM excels in flexibility and geospatial integration, while Meshroom offers a more user-friendly interface and comprehensive pipeline for 3D model creation. The choice between them depends on specific project requirements and user expertise.
Point Cloud Library (PCL)
Pros of PCL
- Extensive library for 3D point cloud processing
- Supports a wide range of algorithms and operations
- Large community and extensive documentation
Cons of PCL
- Steeper learning curve due to its complexity
- Can be resource-intensive for large datasets
Code Comparison
PCL example (C++):
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("input.pcd", *cloud);
Meshroom example (Python):
import meshroom.core
graph = meshroom.core.Graph()
cameraInit = graph.addNode("CameraInit")
featureExtraction = graph.addNode("FeatureExtraction")
Key Differences
- PCL focuses on point cloud processing, while Meshroom is designed for photogrammetry and 3D reconstruction
- PCL is a C++ library, whereas Meshroom is a Python-based application with a GUI
- PCL offers more low-level control, while Meshroom provides a higher-level workflow for 3D reconstruction
Use Cases
- PCL: Robotics, computer vision, 3D scanning, and point cloud analysis
- Meshroom: 3D modeling from photographs, cultural heritage preservation, and visual effects
A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷
Pros of ODM
- Specialized for aerial imagery and drone mapping
- Supports various output formats (point clouds, DEMs, orthophotos)
- Active community and regular updates
Cons of ODM
- Steeper learning curve for non-technical users
- Limited to aerial/drone imagery processing
Code Comparison
ODM (Python):
from opendm import log
from opendm import config
from opendm import system
from opendm import io
class ODMApp:
def __init__(self):
self.args = config.config()
Meshroom (Python):
from meshroom.core import desc
class StructureFromMotion(desc.CommandLineNode):
commandLine = 'aliceVision_incrementalSfM {allParams}'
size = desc.DynamicNodeSize('input')
parallelization = desc.Parallelization(blockSize=3)
Both projects use Python, but ODM focuses on drone mapping workflows, while Meshroom provides a more general-purpose photogrammetry pipeline. ODM's code structure is centered around aerial imagery processing, whereas Meshroom's code is designed for flexibility in various 3D reconstruction scenarios.
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
Meshroom is an open-source, node-based visual programming frameworkâa flexible toolbox for creating, managing, and executing complex data processing pipelines.
Meshroom uses a nodal system where each node represents a specific operation, and output attributes can seamlessly feed into subsequent steps. When a nodeâs attribute is modified, only the affected downstream nodes are invalidated, while cached intermediate results are reused to minimize unnecessary computation.
Meshroom supports both local and distributed execution, enabling efficient parallel processing on render farms. It also includes interactive widgets for visualizing images and 3D data. Official releases come with built-in plugins for computer vision and machine learning tasks.
Get the project
You can download pre-compiled binaries for the latest release.
If you want to build it yourself, see INSTALL.md to setup the project and pre-requisites.
Concepts
- Graph, Nodes and Attributes Nodes are the fundamental building blocks, each performing a specific task. A graph is a collection of interconnected nodes, defining the sequence of operations. The nodes are connected through edges that represent the flow of data between them. Each node has a set of attributes or parameters that control its behavior. Adjusting a parameter triggers the invalidation of all connected nodes.
- Templates Each plugin provides a set of pipeline templates. You can customize them and save your own templates.
- Local / Renderfarm You can perform computations either locally or by using a render farm for distributed processing. As the computations proceed, you can monitor their progress and review the logs. It also keeps track of resource consumption to monitor the efficiency and identify the bottlenecks. You can use both local and renderfarm computation at the same time, as Meshroom keeps track of locked nodes while computing externally.
- Custom Plugins You can create your custom plugin, in pure Python or through command lines to execute external software.
User Interface
The Meshroom UI is divided into several key areas:
- Graph Editor: The central area where nodes are placed and connected to form a processing pipeline.
- Node Editor: It contains multiple tabs with:
- Attributes: Displays the attributes and parameters of the selected node.
- Log: Displays execution logs and error messages.
- Statistics: Displays resource consumption
- Status: Display some technical information on the node (workstation, start/end time, etc.)
- Documentation: Node Documentation.
- Notes: Change label or put some notes on the node to know why itâs used in this graph.
- 2D & 3D Viewer: Visualizes the output of certain nodes.
- Image Gallery: Visualize the list of input files.
Manual and Tutorials
Plugins bundled by default
AliceVision Plugin
AliceVision provides state-of-the-art 3D computer vision and machine learning algorithms that can be tested, analyzed, and reused. The project results from the collaboration between academia and industry to provide cutting-edge algorithms with the robustness and quality required for production usage. The AliceVision plugin provides pipelines for:
- 3D Reconstruction from multi-view images, see the presentation of the pipeline steps and some results on sketchfab
- Camera Tracking
- HDR fusion of multi-bracketed photographies
- Panorama stitching supports fisheye optics, but also the generation of high-resolution images using motorized head systems.
- Photometric Stereo for geometric reconstruction from a single view with multiple lightings
- Multi-View Photometric Stereo to combine photogrammetry and photometric stereo
Segmentation Plugin
MrSegmentation A set of nodes for image segmentation from text prompts.
DepthEstimation Plugin
MrDepthEstimation A set of nodes for depth estimation from an image sequence.
Other plugins
See the MeshroomHub for more plugins.
Research Plugin
Meshroom-Research focuses on evaluating and benchmarking Machine Learning nodes for 3D Computer Vision.
MicMac Plugin
An exploratory plugin providing MicMac pipelines. It does not yet support the full invalidation system of Meshroom, but is fully usable to adjust the pipeline and process it. MicMac is a free open-source photogrammetric software for 3D reconstruction under development at the National Institute of Geographic and Forestry Information (French Mapping Agency, IGN) and the National School of Geographic Sciences (ENSG) within the LASTIG lab.
Geolocation Plugin
The Meshroom Geolocation plugin consists of nodes that utilize the GPS data to download 2D and 3D maps. It could extract the embedded GPS data from photographs to accurately place and contextualize your 3D scans within their global geographical environment. You can retrieve a variety of maps: a 2D map (worldwide â using Open Street Map), an elevation model in 3D (worldwide â using NASA datasets), and a highly detailed 3D model from Lidar scans when available (France-only â using Franceâs open data IGN Lidar datasets).
License
The project is released under MPLv2, see COPYING.md.
Citation
@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}
}
Contributing
We welcome contributions! Check out our Contribution Guidelines to get started. Whether you're a developer, designer, or documentation enthusiast, there's a place for you in the Meshroom community.
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: forum@alicevision.org
You can also contact the core team privately on: team@alicevision.org.
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)
A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷
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