The reference implementaiton for the CVPR 2019 paper Deep Geometric Prior for Surface Reconstruction.
There are several programs in this repository explained in detail below. The documentation for each program can be seen by running it with the
-h
flag. The code is also extensively commented and should be easy to follow. Please create GitHub issues or reach out to me by email if you run into any problems.
-
Compute a set of patches which represent a surface.
This program produces a file (defaulting to
out.pt
) as output which can be used to upsample a point cloud withexport_point_cloud.py
. You can optionally plot the reconstruction withplot_reconstruction.py
. -
Compute a single surface patch fitted to a point cloud.
As with
reconstruct_surface.py
, this program produces a file (defaulting toout.pt
) as output which can be used to upsample a point cloud withexport_point_cloud.py
. You can optionally plot the reconstruction withplot_reconstruction.py
. -
Plots a reconstructed point cloud produced by
reconstruct_surface.py
orreconstruct_single_patch.py
-
Exports a dense point cloud from a reconstruction file produced by
reconstruct_surface.py
orreconstruct_single_patch,py
. This can be fed into a standard algorithm such as Screened Poisson Surface Reconstruction to extract a triangle mesh.
With conda
(Recommended)
All dependencies can be automatically installed with conda
using the provided environment.yml
Simply run the following from the root of the repository:
conda env create -f environment.yml
This will create a conda environment named deep-surface-prior
with all the correct dependencies installed. You can activate the environment by running:
conda activate deep-surface-prior
Note: this code will not work on Windows due to lack of support by the Point Cloud Utils dependency.
If you are not using Conda, you can manually install the following dependencies:
- Python 3.6 (or later)
- PyTorch 1.0
- NumPy 1.15 (or later)
- SciPy 1.1.0 (or later)
- FML 0.1 (or later)
- Point Cloud Utils 0.52 (or later)
- Maxavi 4.6.2 (or later)