Show mesh registration features in slam

# Authors: Guillaume Auzias <guillaume.auzias@univ-amu.fr>

# License: MIT
# sphinx_gallery_thumbnail_number = 2
NOTE: there is no visualization tool in slam, but we provide at the

end of this script exemplare code to do the visualization with an external solution


importation of slam modules

import slam.io as sio
import trimesh

loading an two unregistered meshes

mesh_1 = sio.load_mesh("../examples/data/example_mesh.gii")
mesh_2 = sio.load_mesh("../examples/data/example_mesh_2.gii")

compute ICP registration this functionnality requires to install the optional package rtree

transf_mat, cost = trimesh.registration.mesh_other(
    mesh_1, mesh_2, samples=500, scale=False, icp_first=10, icp_final=100
)
print(transf_mat)
print(cost)
[[-0.59600058 -0.08030801  0.79895803 62.68024381]
 [ 0.08460222  0.98316811  0.16193497 53.44798153]
 [-0.79851473  0.16410696 -0.57917452 49.63045684]
 [ 0.          0.          0.          1.        ]]
0.006486115641526297

apply the estimated rigid transformation to the mesh

mesh_1.apply_transform(transf_mat)
<trimesh.Trimesh(vertices.shape=(2328, 3), faces.shape=(4652, 3))>

VISUALIZATION USING EXTERNAL TOOLS

# Visualization with visbrain import slam.plot as splt import numpy as np ############################################################################### # plot them to check the misalignment joint_mesh = mesh_1 + mesh_2 joint_tex = np.ones((joint_mesh.vertices.shape[0],)) joint_tex[: mesh_1.vertices.shape[0]] = 10 visb_sc = splt.visbrain_plot(

mesh=joint_mesh, tex=joint_tex, caption=”before registration”

) visb_sc.preview() ############################################################################### # plot the two meshes to check they are now aligned joint_mesh = mesh_1 + mesh_2 visb_sc = splt.visbrain_plot(

mesh=joint_mesh, tex=joint_tex, caption=”after registration”

) visb_sc.preview()

Total running time of the script: (0 minutes 5.219 seconds)

Gallery generated by Sphinx-Gallery