lbc3402785 / SEG-MAT

SEG-MAT: 3D Shape Segmentation Using Medial Axis Transform (TVCG2020)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SEG-MAT: 3D Shape Segmentation Using Medial Axis Transform

This repository contains the source code for the TVCG 2020 paper SEG-MAT: 3D Shape Segmentation Using Medial Axis Transform. In this work, we present an efficient method to automatically segment an arbitary object into meaningful parts based on medial axis transform (MAT). Please check out the project page for more detail.

Executable

Download the executable program SEG-MAT-x64 with sample data or you can find it from the exe program folder.

A simple demo:

SEG-MAT -m data\teddy.off -b data\teddy_mat.ma -s data\teddy_smat.ma

Usage:

Usage: SEG-MAT [-h,--help] -m,--mesh -b,--bmat -s,--smat [-g,--grow] [-n,--min] [-p,--prim]

Arguments:
    -h, --help    show this help message and exit
    -m, --mesh    path to the surface mesh (.off)
    -b, --bmat    path to the base MAT (.ma)
    -s, --smat    path to the structure MAT (.ma)
    -g, --grow    (optional) growing threshold, default 0.015
    -n, --min     (optional) minimal region, default 0.002
    -p, --prim    (optional) whether to compute the primitive representation (0:no, 1:yes)

Code

Installation

Use the CMakelist.txt to compile the project.

Third part libraries:

  • CGAL versions 4.9, 4.11 are tested. Boost 1.59.0 is needed to compile CGAL. Please refer to the link here.
  • Eigen version 3.3 is already included in the source files.

Example compile process on Windows:

  • Use CMake UI or commond tool to build the project
  • Specify the CGAL library path
  • Make it to a specific IDE project, e.g., Visual Studio, XCode, etc.

Data

Download the computed MAT (*.ma format) of Princeton Segmentation Benchmark PSB_MAT.zip and a subset of ShapeNet ShapeNet_MAT.zip.

MAT Computation (for your own data)

Given a 3D mesh, we use Q-MAT to compute the base MAT and the structure MAT for segmentation. The Q-MAT simplification is based on vertex number, while we recommend the users to set the vertex number of the base MAT to 2000, and the vertex number of the structure MAT to max{0.001*initial_MAT_vertex_number, 15}.

For a non-watertight or a poor-quality mesh, you may need to first convert the mesh to a watertight one using the tool for robust MAT computation.

Citation

If you find this work useful, please consider citing:

@article{SEG-MAT-2020,
   title={SEG-MAT: 3D Shape Segmentation Using Medial Axis Transform},
   ISSN={2160-9306},
   url={http://dx.doi.org/10.1109/TVCG.2020.3032566},
   DOI={10.1109/tvcg.2020.3032566},
   journal={IEEE Transactions on Visualization and Computer Graphics},
   publisher={Institute of Electrical and Electronics Engineers (IEEE)},
   author={Lin, Cheng and Liu, Lingjie and Li, Changjian and Kobbelt, Leif and Wang, Bin and Xin, Shiqing and Wang, Wenping},
   year={2020},
   pages={1–1}
}

Acknowlegement

We would like to acknowledge the following projects:

Multi-label optimization

Implementation of the Earth Movers Distance (EMD)

Oriented minimal bounding box

Contact

If you have any questions, please email Cheng Lin at chlin@hku.hk or Changjian Li at chjili2011@gmail.com.

About

SEG-MAT: 3D Shape Segmentation Using Medial Axis Transform (TVCG2020)


Languages

Language:C++ 99.5%Language:C 0.3%Language:CMake 0.2%Language:Objective-C 0.0%