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.58422975 -0.10586108  0.8046546  62.71732473]
 [ 0.06621478  0.98193402  0.1772602  52.90913857]
 [-0.80888269  0.15684071 -0.5666655  49.54943842]
 [ 0.          0.          0.          1.        ]]
0.006668052986457964

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.311 seconds)

Gallery generated by Sphinx-Gallery