Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Normal vector estimation based on plane-probing approaches #1547

Merged
merged 74 commits into from
Feb 23, 2021
Merged

Normal vector estimation based on plane-probing approaches #1547

merged 74 commits into from
Feb 23, 2021

Conversation

nyorem
Copy link
Member

@nyorem nyorem commented Feb 1, 2021

PR Description

This PR adds new classes for estimating normal vectors on digital surfaces. The estimators are based on plane-probing approaches (see here, here and there). It specifically adds the following classes:

  • DigitalPlanePredicate: aims to represent a digital plane as a point predicate,
  • DigitalSurfacePredicate: aims to represent a digital surface as a point predicate,
  • PlaneProbingTetrahedronEstimator: first category of estimators based on the deformation of a tetrahedron,
  • PlaneProbingParallelepipedEstimator: second category of estimators based on the deformation of a parallelepiped,
  • Classes for representing the candidate sets were also added (see the PlaneProbing*Neighborhood classes).
  • PlaneProbingDigitalSurfaceLocalEstimator: adapter of the previous two classes to estimate normal vectors on digital surfaces.

It also adds new examples that illustrates how to construct and use those classes.

This PR also adds another estimator that is based on maximal segment computation on slices of digital surfaces. The PR could maybe be in split in two but the plane-probing estimator on a digital surface internally uses this other estimator (see the documentation for more details). The documentation for this part is still a work in progress. The new classes are the following:

  • ArithmeticalDSSComputerOnSurfels: version of ArithmeticalDSSComputer that works on projection of 3D surfels,
  • MaximalSegmentSliceEstimation: the new estimator class.

Checklist

  • Unit-test of your feature with Catch.
  • Doxygen documentation of the code completed (classes, methods, types, members...)
  • Documentation module page added or updated.
  • New entry in the ChangeLog.md added.
  • No warning raised in Debug cmake mode (otherwise, Travis C.I. will fail).
  • All continuous integration tests pass (Travis & appveyor)

Jocelyn MEYRON added 28 commits February 3, 2021 10:28
Copy link
Member

@JacquesOlivierLachaud JacquesOlivierLachaud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work ! Very clean with a clear structure. My comments are mostly on the form.

@JacquesOlivierLachaud
Copy link
Member

I let you closed the last conversations once you are done with your changes.
I will merge afterwards.

@nyorem
Copy link
Member Author

nyorem commented Feb 23, 2021

All the changes were made and all checks passed!

Copy link
Member

@JacquesOlivierLachaud JacquesOlivierLachaud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything is fine.

@JacquesOlivierLachaud JacquesOlivierLachaud merged commit 9bf3cf4 into DGtal-team:master Feb 23, 2021
@dcoeurjo
Copy link
Member

@nyorem @JacquesOlivierLachaud the testPlaneProbingParallelepipedEstimator is way too long for a unit test. Could you please reduce the size of the geometries you are testing?

on travis:

   233/233 Test #122: testPlaneProbingParallelepipedEstimator ....   Passed  727.51 sec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants