-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
PMP: Non-rigid mesh registration #8329
base: master
Are you sure you want to change the base?
Conversation
/build:v0 |
There was an error while building the doc:
|
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Outdated
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Outdated
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Outdated
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Show resolved
Hide resolved
* @param np2 an optional sequence of \ref bgl_namedparameters "Named Parameters" providing a point_map and normal_map for the `PointRange` | ||
* @param correspondences a vector given matching points between the `source` and the `target` | ||
* | ||
* \cgalNamedParamsBegin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All these numbers are opaque. What is a reasonable range? Why the defaults? Do they have any dependence on dimensions of the input (average edge length, bbox,....) ?
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Show resolved
Hide resolved
removed deprecation warning
Timouts in I-c-345 |
- \f$\mathbf{M}\f$ is the intermediate mesh (initially equal to the source mesh). | ||
- \f$N(\mathbf{v}_i)\f$ denotes the set of vertices adjacent to \f$\mathbf{v}_i\f$. | ||
|
||
The \f$\mathbf{E_{match}}\f$ energy penalizes the distance between point pairs \f$\mathbf{v}_i\f$ and \f$\mathbf{\tilde{v}}_i\f$. The point pairs are restablished after each iteration. In addition, the method can take fixed point pairs of correspondences between source and target. This greatly improves the quality of the registration and is generally required for non-simple meshes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
non-simple is too vague: what does matter? the number of vertices, the curvature of the mesh, sharp creases, ...?
Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
Show resolved
Hide resolved
...gon_mesh_processing/examples/Polygon_mesh_processing/non_rigid_mesh_registration_example.cpp
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt
Show resolved
Hide resolved
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.} | ||
* \cgalParamNEnd | ||
* | ||
* \cgalParamNBegin{vertex_point_map} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't you also need the vertex normal map for applying the rotation matrix?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ping @soesau
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not manage to handle an optional vertex normal map.
* \cgalNamedParamsEnd | ||
* | ||
* \cgalNamedParamsBegin{Named Parameters 2} | ||
* \cgalParamNBegin{vertex_normal_map} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
check the doc here if you want to init the vpm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ping @soesau
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/non_rigid_mesh_registration.h
Outdated
Show resolved
Hide resolved
* \cgalParamDefault{`50`} | ||
* \cgalParamNEnd | ||
* | ||
* \cgalParamNBegin{point_to_plane_energy} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
providing a link to the section in the user manual where parameters are explained would be helpful. The range of possible values for w1, w2, w3 is also needed.
5e48786
to
09ca6d5
Compare
warning in Ic-350 |
Successfully tested in CGAL-6.1-Ic-14 |
#include <CGAL/boost/graph/Face_filtered_graph.h> | ||
|
||
#include <CGAL/Polygon_mesh_processing/compute_normal.h> | ||
#include <CGAL/Surface_mesh_deformation.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this one really needed? Seems you are only using the closest_rotation_traits, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ARAP visitor is defined in that header. However, it only uses a few lines of code and the Cotangent_weight. We could remove the dependency to Surface_mesh_deformation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That was indeed my idea, moving the thing in Solver_interface or Weight package
Summary of Changes
WIP
Non-rigid mesh registration based on:
https://vgl.ict.usc.edu/Research/NonRigidRegistration/MODERN%20TECHNIQUES%20AND%20APPLICATIONS%20FOR%20REAL-TIME%20NON-RIGID%20REGISTRATION.pdf
https://www.comp.nus.edu.sg/~lowkl/publications/lowk_point-to-plane_icp_techrep.pdf
TODO:
Release Management