pyFM.refine.icp.icp_refine

pyFM.refine.icp.icp_refine(FM_12, evects1, evects2, A2=None, nit=10, tol=1e-10, use_adj=False, return_p2p=False, n_jobs=None, verbose=False)

Refine a functional map using the standard ICP algorithm.

One can use the adjoint instead of the functional map for pointwise map computation.

Parameters:
  • FM_12 ((k2, k1) np.ndarray) – Functional map from first to second basis.

  • evects1 ((n1, k1') np.ndarray) – First k1’ eigenvectors of the first basis (k1’ > k1).

  • evects2 ((n2, k2') np.ndarray) – First k2’ eigenvectors of the second basis (k2’ > k2).

  • 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.