Giter Site home page Giter Site logo

petingo / gocopp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ylannl/gocopp

0.0 0.0 0.0 18.68 MB

Forked for updating CMakeLists & ready-to-use exe of "Finding Good Configurations of Planar Primitives (CVPR2022)" by M. Yu & F. Lafarge

C++ 97.50% C 1.84% CMake 0.65%

gocopp's Introduction

This repositority is forked from https://github.com/Ylannl/GoCoPP with updated compile setting and instruction.


Finding Good Configurations of Planar Primitives in Unorganized Point Clouds

Link To Paper

Mulin Yu, Florent Lafarge

Inria - Université Côte d'Azur

[email protected]

Citation

@INPROCEEDINGS{Yu_cvpr22,
  Author = {Yu, Mulin and Lafarge, Florent},
  Title = {Finding Good Configurations of Planar Primitives in Unorganized Point Clouds},
  booktitle = {Proc. of the IEEE conference on Computer Vision and Pattern Recognition (CVPR)},
  Year = {2022},
  address = {New Orleans, US},
}

Introduction

We present an algorithm for detecting planar primitives from unorganized 3D point clouds. Departing from an initial configuration, the algorithm refines both the continuous plane parameters and the discrete assignment of input points to them by seeking high fidelity, high simplicity and high completeness. Our key contribution relies upon the design of an exploration mechanism guided by a multiobjective energy function. The transitions within the large solution space are handled by five geometric operators that create, remove and modify primitives. We demonstrate the potential of our method on a variety of scenes, from organic shapes to man-made objects, and sensors, from multiview stereo to laser. We show its efficacy with respect to existing primitive fitting approaches and illustrate its applicative interest in compact mesh reconstruction, when combined with a plane assembly method.

Requirement

CGAL 5.2.2 Eigen Boost_1_76_0 CMake Visual Studio 2017

Compile Guideline

Open sources/CMakeLists.txt in cmake-gui and fill in all the relevant fields. This will generate a Visual Studio solution in folder “build”. Open this solution and compile the projects GoCoPP. The output executable files are created in subfolder “build/bin”.

Input

The input data is a PLY file. It should contain the coordinates of input points (x y z). The normals of input points (nx ny nz) are also encouraged to be included. If not included, they will be estimated by PCA just after loading the file.

Parameters

  • The parameter --epsilon is the fitting tolerance that specifies the maximal distance of an inlier to its supporting plane (default 0.4% * bounding box diagonal).

  • The parameter --sigma is the minimal primitive size that allows primitives with a too low number of inliers to be discarded (default 50).

  • The parameter --nn is the k of the k-nearest neighbor graph and also used to estimate the points' normals if they are not provided (default 20).

  • The parameter --normal_deviation is (i) the minimum cosine of the angle between an inlier and its supporting plane, which is used for region growing, and (ii) the minimum cosine of the angle between two primitives that can be merged (default 0.85).

  • The parameter --s and --c are the weight for simplicity and completeness, note that 0 < s + c < 3 (default 1 and 1).

  • The parameter --norm decide the fidelity metric, which can be normal, L2 or hybrid (default hybrid). L2 represents the Euclidean distance between the inlier points and the associated supporting planes, normal presents the deviation between inliers' normals and the associated supporting planes' normals and hybrid mode uses L2 in the priority queue and normal in the transfer operator.

  • The parameter --max_steps is the maximum iterations of our exploration mechanism (default 7).

  • The parameter --constraint is an option to make sure that the final configuration does not degrade the fidelity, simplicity and completeness of the initial configuration (default False).

  • The parameter --vg is an option to output the results in 'vg' form(Vertex Group) (default False).

  • The parameter --alpha is an option to output the primitives that are represented as alpha shapes (default True).

  • The parameter --hull is an option to output the primitives that are represented as convex hulls (default False).

Usage

  • An example:
.\GoCoPP.exe path_to_your_file.ply --constraint --norm L2

License

Inria

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.