Git Product home page Git Product logo

peterzhousz / minimal_surface Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zhenzhangye/minimal_surface

0.0 1.0 0.0 52 KB

This code implements the following research: Fast and Globally Optimal Single View Reconstruction of Curved Objects (M. R. Oswald, E. Toeppe and D. Cremers), In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012.

License: Other

CMake 22.35% Shell 0.53% MATLAB 18.42% C++ 25.66% C 0.32% Cuda 32.73%

minimal_surface's Introduction

minimal_surface

This code implements the basic algorithm from this paper, which only computes optimal silhouette-consistent minimal surfaces of given volume with gradient descent on GPU:

Fast and Globally Optimal Single View Reconstruction of Curved Objects M. R. Oswald, E. Toeppe and D. Cremers; In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012. alt tag

Based on a minimal user input, this algorithm interactively determines the objects' silhouette and subsequently computes a silhouette-consistent 3D model which is precisely the globally minimal surface with user-specified volume. In above paper, the authors also proposed the weighted minimal surface which is NOT included in this repository.

1. Requirements

This code has three party dependencies:

  1. MATLAB (mandatory)

  2. CUDA (mandatory)

  3. CMake (mandatory)

2. Getting started

This code is tested under:

  • Ubuntu 16.04
  • CMake 3.5.1
  • CUDA 8.0
  • MATLAB R2019a

Download the demo dataset:

  • cd pathto/code/data

  • ./download.sh

Build Mex file:

  • Set MATLAB_ROOT environment variable in to your installed matlab path, such as

    export MATLAB_ROOT='/usr/local/MATLAB/R2019a' in ~/.bashrc

  • In Terminal do cd pathto/code

    mkdir build

    cmake ..

    make

  • In build/lib is the mex file and in build/bin is the binary

  • cd ..

  • execute the matlab script example.m

3. Input

  • mask: a boolean binary describing the silhouette.
  • volume: the desired volume of result.

4. Parameters

  • max_iter: the max number of iteration for gradient descent.
  • tol: the stopping criterion by residual.
  • tau: the step size for gradient descent.

5. License

minimal_surface is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License, see here, with an additional request:

If you make use of the library in any form in a scientific publication, please refer to https://github.com/zhenzhangye/minimal_surface and cite following papers

@INPROCEEDINGS{6247718,
  author={M. R. {Oswald} and E. {Töppe} and D. {Cremers}},
  booktitle={2012 IEEE Conference on Computer Vision and Pattern Recognition},
  title={Fast and globally optimal single view reconstruction of curved objects},
  year={2012},
  pages={534-541},
  doi={10.1109/CVPR.2012.6247718},
  month={June},
}
@article{haefner2019variational,
  title={Variational Uncalibrated Photometric Stereo under General Lighting},
  author={Haefner, Bjoern and Ye, Zhenzhang and Gao, Maolin and Wu, Tao and Qu{\'e}au, Yvain and Cremers, Daniel},
  journal={arXiv preprint arXiv:1904.03942},
  year={2019}
}

minimal_surface's People

Contributors

zhenzhang-ye avatar zhenzhangye avatar

Watchers

 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.