Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Welcome to the MVE wiki!
The Multi-View Environment is an effort to ease the work with multi-view datasets and to support the development of algorithms based on multiple views, such as Multi-View Stereo or Photometric Stereo. The project is initiated and maintained by Michael Goesele's research group at the TU Darmstadt.
For further documentation, refer to these Wiki pages.
- The MVE Users Guide (Building, running, licensing, etc.)
- The MVE Developers Guide (API docs, unit tests, etc.)
- The MVE File Format (File system layout of a scene)
- The FSSR Users Guide (Floating Scale Surface Reconstruction)
- The Math Cookbook (Camera conventions, etc.)
If you want to use MVE with the Middlebury datasets, read our notes on the Middlebury Datasets.
MVE provides an API for management of scenes. A scene is composed of a set of views and each view describes an image viewport with associated camera parameters, images of various data type, and generic (binary) data. MVE also implements an incremental Structure from Motion system, a Multi-View Stereo algorithm based on [GSC+07], and a user interface called UMVE.
MVE is written in C++ and consists of efficient, cross-platform and easy-to-use libraries. The code runs on Linux, MacOS X, Windows and others. MVE has minimal dependencies on external libraries: It depends on libpng, libjpeg and libtiff. A front-end Qt-based application called UMVE — the Ultimate MVE — is built on top of these libraries, for inspection of the datasets.
The MVE libraries support the following features:
- A view container to aggregate per-view attributes (such as camera parameters), images of arbitrary size and type, and arbitrary data embeddings.
- Scene management which aggregates multiple views.
- An incremental Structure-from-Motion system, plus support to import from external applications such as Noah Snavely's Bundler, VisualSfM and OpenMVG, using the
- A Multi-View Stereo library implementing [GSC+07].
- Image data type with loaders, writers and processing tools. Supported file types are PNG, JPG, TIFF, PFM and PPM.
- Mesh data type with loaders, writers and processing tools. Supported file types are OFF, PLY and PBRT.
- Various cross-platform routines, such as argument parser, timer, string processing, tokenizer, INI-file parser, endian conversion, threads and mutex, smart pointer, file system abstraction, atomic operations, sleep, ...
- Mathematical data types (e.g. matrix, vector, quaternion) and routines (e.g. geometric predicates).
- A simple OpenGL abstraction for rapid OpenGL 3+ visualization.
The UMVE application supports the following features:
- Inspection of the scene and the 3D structure.
- Inspection and management of the views and the image embeddings.
- Loading and rendering of triangle meshes.
- Triangulation of depth maps.
Rudimentary Python bindings are available here.
Note: MVE does not yet include code to create a global surface mesh by combining several depth maps. Please refer to the code available here: Floating Scale Surface Reconstruction.
A few example datasets can be found here.
All source files are distributed under the BSD 3-Clause License unless otherwise noted in the source file. Some files are distributed under the GPL 3 license, and programs that include or link to those files are subject to the GPL 3 license as well.