Giter Site home page Giter Site logo

neogeographytoolkit / multiview Goto Github PK

View Code? Open in Web Editor NEW
6.0 5.0 5.0 1.24 MB

Image and depth+image rig calibration, image and mesh co-registration, bundle adjustment, large-scale mesh generation, and seamless texturing

License: Apache License 2.0

CMake 100.00%
calibration calibration-toolbox mesh-generation texture-synthesis calibration-image rig-calibration camera

multiview's Introduction

This software provides a collection programs for structure-from-motion, fusion of point clouds into a mesh, and seamless texturing of meshes with the input images and optimized cameras.

A program for for joint calibration of a set of rigs, each with one or more image and/or depth+image cameras, was part of this codebase as well, but now has been integrated into the Ames Stereo Pipeline source code.

The software was originally developed as part of the NASA ISAAC project, which uses several robots with 3 front-facing cameras to scan and navigate the International Space Station. The current version is self-contained and does not depend on ROS or other parts of ISAAC.

The key dependencies are Theia SfM for finding the initial camera poses, Ceres Solver for solving the calibration problem, VoxBlox for fusing point clouds into a mesh, and MVS Texturing for creation of textured meshes. Most of the original work in this package went towards the creation of the calibration logic and ensuring that all components work together to create high-fidelity results.

These tools are shipped as part of the NASA Ames Stereo Pipeline (for Linux and OSX).

Documentation

Fetching the code and dependencies

It is suggested to use the shipped binaries, unless desired to modify the software.

This package depends on other repositories, which are included as submodules, and those may have their own dependencies. Hence, this repo should be cloned recursively, as:

git clone --recursive [email protected]:NeoGeographyToolkit/MultiView.git

Otherwise, after cloning it, run:

git submodule update --init --recursive

Build

Create a conda environment having the dependencies for this package with conda:

conda env create -n multiview -f MultiView/conda/environment.yml

Activate the conda environment:

conda activate multiview

Create the build directory:

cd MultiView
mkdir build
cd build

Set the compilers, depending on the system architecture.

isMac=$(uname -s | grep Darwin)
if [ "$isMac" != "" ]; then
  cc_comp=clang
  cxx_comp=clang++
else
  cc_comp=x86_64-conda_cos6-linux-gnu-gcc
  cxx_comp=x86_64-conda_cos6-linux-gnu-g++
fi

Run cmake:

cmake ..                                           \
  -DCMAKE_VERBOSE_MAKEFILE=TRUE                    \
  -DMULTIVIEW_DEPS_DIR=$CONDA_PREFIX               \
  -DCMAKE_C_COMPILER=$CONDA_PREFIX/bin/$cc_comp    \
  -DCMAKE_CXX_COMPILER=$CONDA_PREFIX/bin/$cxx_comp \
  -DCMAKE_INSTALL_PREFIX=$(pwd)/../install

Carefully check if all dependencies are found. If some are picked not from the conda environment, check your PATH and other environmental variables, and remove from those the locations which may tell cmake to look elsewhere. Then, run:

make -j 20 && make install

The resulting tools will be installed in MultiView/install.

The Theia view_reconstruction tool can fail to build if OpenGL is not found. It can be excluded from building by editing the appropriate CMakeLists.txt file.

multiview's People

Contributors

oleg-alexandrov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.