ShnitzelKiller / Reverse-Engineering-Carpentry

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Carpentry Shape Detection

Overview

This is the code for the paper "Fabrication-Aware Reverse Engineering for Carpentry" by James Noeckel, Haisen Zhao, Brian Curless, and Adriana Schulz. The system reverse engineers carpentered objects from multi-view imagery, along with a point cloud created from these images using appropriate software for reconstruction.

Citation

If you use this code for your research, please consider citing:

@article{article,
author = {Noeckel, James and Zhao, Haisen and Curless, Brian and Schulz, Adriana},
year = {2021},
month = {08},
pages = {301-314},
title = {Fabrication‐Aware Reverse Engineering for Carpentry},
volume = {40},
journal = {Computer Graphics Forum},
doi = {10.1111/cgf.14375}
}

Building and installation instructions

This project depends on OpenCV, LibIGL, CGAL, Pagmo, libIGL, and MAXFLOW. OpenMP is also preferred. For MAXFLOW, place the "maxflow" folder into the project root directory. To build, run

mkdir build
cd build
cmake .. -DLIBIGL_INCLUDE_DIR=<path to /libigl/include> -DCMAKE_BUILD_TYPE=Release
make CarpentryOptimization

Running

Run the CarpentryOptimization executable with a path to a configuration file as an argumment (see examples/customstool.txt as an example). The example data currently needs to be downloaded separately: get it here, and place the folder within a folder named data/. The configuration file contains many parameters that affect the algorithm. Additionally, you may choose whether to obtain interactive 3D visualization of results at various stages of the pipeline by setting visualization=1.

The important settings for running with your own data are:

  • points_filename: path to the point cloud data
  • reconstruction_path: path to the associated reconstruction data containing the camera pose information for each view (this is assumed to be in the bundler format)
  • result_path: where to save results

About

License:MIT License


Languages

Language:C++ 97.4%Language:C 1.9%Language:CMake 0.7%