Skip to content
This repository contains the source codes for the paper "Robust optimization for topological surface reconstruction"
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Core Add files via upload Feb 24, 2019
Data_structure Add files via upload Feb 24, 2019
Utils Add files via upload Feb 24, 2019 Update Feb 26, 2019
silicium_data_example_planes57_genus217.mat Add files via upload Feb 24, 2019
silicon.png Add files via upload Feb 24, 2019
silicon_example.m Add files via upload Feb 24, 2019

Robust optimization for topological surface reconstruction

This repository contains the source code for the SIGGRAPH 2018 paper: Robust optimization for topological surface reconstruction.

This paper proposes an optimization method for surface reconstruction under topological constraints. The input to our method is a prescribed genus for the reconstructed surface, a partition of the ambient volume into cells, and a set of possible surface candidates and their associated energy within each cell. The outputs are one candidate per cell so that their union is a connected surface with the prescribed genus that minimizes the total energy. Beside the core engine, an example is attached.

Getting Started

Setting up the environment

The code is compatible with MATLAB 2018a.

Additional tools

In order to run the code, one should download Yalmip optimization package and add it to the path. Next, a solver that is compatible with yalmip and semidefinite programming should be installed. In the silicon example and in the paper mosek (free for academic use) was used (information about other solvers can be found here).

Mex files

For optimization running time reduction purposes, a mex file was generated. If you are using a Windows 64 bit, then no further action is needed. Otherwise you need to mex the cpp file located in Utils\mincutMex.cpp.


Clone the repository and work from the project directory. Add to the path the folders Utils, Core and Data_structure.


Silicon example

After all the above was executed, type in the command window:


Preparing a reconstruction problem

To generate a new problem, first formulate your problem as mentioned in the documentaion of Core\BnBOptimization, then generate BnBroot type and insert it to BnBOptimization(BnBroot).

Running time note

The optimization's running time has been significantly decreased since the paper's publication.


This paper was supported by the European Research Council, ERC-cog grant no. 771136-LiftMatch, and the Israel Science Foundation, grant no. ISF 1830/17. ZH and TJ acknowledge the support of NSF grants IIS-0846072, IIS-1302200, RI-1618685.

You can’t perform that action at this time.