pyFM.refine.icp.mesh_icp_refine_p2p

pyFM.refine.icp.mesh_icp_refine_p2p(p2p_21, mesh1, mesh2, k_init, nit=10, tol=1e-10, use_adj=False, return_p2p=False, n_jobs=None, verbose=False)

Refine a functional map starting from an initial pointwise map.

This algorithm starts from an initial pointwise map instead of a functional map, which it first converts to a functional map before running ICP.

Parameters:
  • p2p_21 ((n2,) np.ndarray) – Initial pointwise map from mesh2 to mesh1.

  • mesh1 (TriMesh) – Source mesh.

  • mesh2 (TriMesh) – Target mesh.

  • k_init (int) – Initial number of eigenvectors to use.

  • nit (int, optional) – Number of iterations to perform. If not specified, uses the tol parameter.

  • tol (float, optional) – Maximum change in a functional map to stop refinement (only used if nit is not specified).

  • use_adj (bool, optional) – Use the adjoint method.

  • return_p2p (bool, optional) – If True, also return the vertex to vertex map from mesh2 to mesh1.

  • n_jobs (int, optional) – Number of parallel jobs. None (default) decides automatically, -1 uses all processes.

  • verbose (bool, optional) – Whether to display progress and per-iteration diagnostics.

Returns:

  • FM_12_icp ((k2, k1) np.ndarray) – ICP-refined functional map.

  • p2p_21_icp ((n2,) np.ndarray) – Only if return_p2p is set to True - the refined pointwise map from basis 2 to basis 1.