Skip to content
Simon Fuhrmann edited this page Mar 15, 2022 · 55 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 was developed by Michael Goesele's research group at the TU Darmstadt. See the Research Papers page for a list of papers related to MVE.

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.

Features

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 easy-to-use, cross-platform libraries. The code runs on Linux, MacOS X, and Windows. 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.

License

All source files are distributed under the BSD 3-Clause License unless otherwise noted in the source file. Please see the LICENSE.txt file for details.