Convert Figma logo to code with AI

alicevision logoMeshroom

Node-based Visual Programming Toolbox

11,992
1,149
11,992
518

Top Related Projects

6,061

open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.

8,869

COLMAP - Structure-from-Motion and Multi-View Stereo

3,570

Open source Structure-from-Motion pipeline

10,359

Point Cloud Library (PCL)

5,135

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:

  1. Download the latest release from the official GitHub repository.
  2. Install the software following the instructions for your operating system.
  3. Launch Meshroom and create a new project.
  4. Drag and drop your images into the Images panel.
  5. Click on "Start" to begin the reconstruction process.
  6. Once complete, you can view and export your 3D model.

For more detailed instructions and advanced usage, refer to the Meshroom documentation.

Competitor Comparisons

6,061

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.

8,869

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.

3,570

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.

10,359

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
5,135

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Meshroom - 3D Reconstruction Software

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.

CII Best Practices Build status

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 Website

AliceVision Repository

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

Meshroom-Research focuses on evaluating and benchmarking Machine Learning nodes for 3D Computer Vision.

MicMac Plugin

MeshroomMicMac

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

MrGeolocation

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.