Simon Fuhrmann edited this page Feb 18, 2018 · 51 revisions

Wiki Home

Build Status

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.

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 makescene application.
  • 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.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.