Is there a way to have all vertices on a vtk model be markups/landmarks?

Hi,

I’m trying to match the node IDs between two vtk models. I was thinking if it’s possible to have all vertices on a vtk model be markups, so that I can directly use the vertices on the surface of the source model as its landmarks and perform ALPACA in the SlicerMorph module.

Thanks,
Gening

You can look at the script repository and to probably work that out.
https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#markups
https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#models

What is your goal with ALPACA? To register these two vtk models, or to transfer your landmarks from one model to the other?

Thanks for the reply!

I’d like to match points 1:1 on two vtk models. My plan is to register two vtk models using ALPACA first and then match the points between the TPS warped model and the target model by finding nearest neighbors of points.

Would it be possible to directly transfer landmarks from one model to the other using SlicerMorph? I saw the ProjectSemiLM utility modules, but could it project those landmarks to the vertices of the target model?

Best,

Gening

ALPACA will transfer points on one (source) model to the target model for you.

ALPACA is a point-cloud registration. We often work with 3D models with hundreds of thousands (or more) vertices, but our anatomical landmarks on them are far sparser (from tens to thousands range). To improve the speed, we turn the models into downsampled pointclouds, do the registration as point clouds, and then apply the resultant transformation to the models. This seem to perform sufficiently well, and rather fast, for our use cases. I am not sure how well your LMs will be transferred if you use every single vertex as a landmark. We never tried such approach.

TPS deformation is very slow when you have large number of points. Also projectSemiLM module requires existence of manually annotated landmarks on source and target models (see https://github.com/SlicerMorph/SlicerMorph/tree/master/Docs/ProjectSemiLM). I don’t think it will work for your case.

Hi Gening,

Recently I have a similar task with yours. Could you tell me which way did you finally choose then to extract all nodes as landmarks and transfer those landmarks to other target models?

Best regards,
Chuan