# Help transferring semi-landmarks to multiple specimens using ALPACA

**URL:** <https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919>\
**Category:** Support\
**Tags:** alpaca\
**Created:** [October 30, 2025, 3:05pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919 "2025-10-30T15:05:47Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![r\_dientes](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/r_dientes/32/79849_2.png) [@r\_dientes](https://discourse.slicer.org/u/r_dientes)\
**Post date:** [October 30, 2025, 3:05pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/1 "2025-10-30T15:05:48Z")

</div>

Hi everyone,

I’m working with a collection of archaeological human teeth (permanent canines) and I’m trying to transfer a set of **semi-landmarks** from a reference model to several specimens.

Here’s my current workflow:

- I segmented each tooth from micro-CT scans (SkyScan 1272) and exported the surfaces as `.ply` files.

- I have **manual anatomical landmarks** placed on every specimen (saved as `.fcsv` markup files).

- I manually selected and exported a **set of semi-landmarks** from the reference tooth (also as `.fcsv`).

Now I would like to **transfer these semi-landmarks from the template to the other specimens**.

I tried using **ALPACA** , but the semi-landmarks end up in the wrong positions (collapsed or off the surface). This is my first time using the module, and I don’t fully understand how it works. If anyone could share **tutorials, papers, or videos** explaining ALPACA or its correct parameter settings, that would be very helpful.

I also have another issue: **not all my specimens are complete** , so I had to **impute some missing landmarks in R** , and I will probably need to do the same for a few semi-landmarks.  
Is it possible to perform that kind of imputation directly in **3D Slicer** , or should it be done in R?

Thank you very much for your help!

— Renata

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [October 30, 2025, 3:34pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/2 "2025-10-30T15:34:06Z")

</div>

> [@r\_dientes](#):
>
> have **manual anatomical landmarks** placed on every specimen (saved as `.fcsv` markup files).

If you have manual landmarks for every specimen, and want to transfer a template of semi-landmarks, do not use ALPACA. Use **ProjectSemiLMs** module: [SlicerMorph/Docs/ProjectSemiLM at master · SlicerMorph/SlicerMorph · GitHub](https://github.com/SlicerMorph/SlicerMorph/tree/master/Docs/ProjectSemiLM)

---

<div class="post-metadata">

**Author:** ![r\_dientes](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/r_dientes/32/79849_2.png) [@r\_dientes](https://discourse.slicer.org/u/r_dientes)\
**Post date:** [October 30, 2025, 8:03pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/3 "2025-10-30T20:03:29Z")

</div>

Hi Murat,

Thank you very much for your clear answer — it really helped me understand when to use **ProjectSemiLM** instead of **ALPACA**.

I was able to apply the module successfully, and it worked very well overall. Only a few semi-landmarks were not perfectly projected, but I corrected those manually using the **Markups** module.

I have one additional question related to incomplete specimens. In my dataset, many teeth show slight dental wear. In those cases, I imputed the corresponding anatomical landmarks in **R** , but I am not sure how to properly transfer the semi-landmarks.

What would you recommend doing in those cases? Is there a way to impute (or estimate) the missing semi-landmarks directly in **Slicer**? Or would it be better to create a new template excluding some semi-landmarks and then impute them in **R**? The challenge is that not all specimens have the same degree of wear…

Lastly, could you recommend any bibliography, tutorials, or methodological papers for cases involving incomplete specimens?

Thank you again for your time!

— Renata

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [October 30, 2025, 8:16pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/4 "2025-10-30T20:16:14Z")

</div>

For models with missing structures, you might want to disable projection (to the surface of the model) in ProjectSemiLMs, and try.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/6/0/603d38c4436215f8f248d9d8ff5490ee83bc6109.png)

If this doesn’t work out, you can try to manually create TPS warping between your reference and target landmarks using the **IGT Fiducial Transform wizard** in IGT extension (make sure to use the Warping transform), and then apply that to your reference semi-landmarks.

Some tools in R does imputation of missing landmarks, but I am not sure which one works better. A few we tried in (Morpho and geomory) didn’t come out so good.

---

<div class="post-metadata">

**Author:** ![r\_dientes](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/r_dientes/32/79849_2.png) [@r\_dientes](https://discourse.slicer.org/u/r_dientes)\
**Post date:** [October 31, 2025, 6:59pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/5 "2025-10-31T18:59:16Z")

</div>

Thanks again for your suggestion — I tried using the _Fiducial Registration Wizard_ with the warping (TPS) transform between my reference and target landmarks, but so far I haven’t managed to get good results. The deformation applies, but the semi-landmarks end up displaced from the surface.  
I’m currently evaluating whether to remove the problematic landmark

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [October 31, 2025, 7:35pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/6 "2025-10-31T19:35:26Z")

</div>

That’s because only the control points on the TPS deformation is guaranteed to be on the model, everything else will be interpolated. So if the morphology is sufficiently different between two models, or you have sparse coverage of control points (i.e. your anatomical landmarks) transfer may result in points floating in space. That’s why we have the projection option in the PlaceSemiLMs module.

You can either try to increase your corresponding control points in regions where things do not line up.

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [October 31, 2025, 7:53pm UTC](https://discourse.slicer.org/t/help-transferring-semi-landmarks-to-multiple-specimens-using-alpaca/44919/7 "2025-10-31T19:53:46Z")

</div>

> [@r\_dientes](#):
>
> The deformation applies, but the semi-landmarks end up displaced from the surface.

You can also try the SegmentRegistration to derive the warping transform and then apply that.

> **[GitHub - SlicerRt/SegmentRegistration: 3D Slicer extension for segment registration (aka...](https://github.com/SlicerRt/SegmentRegistration?tab=readme-ov-file#segment-registration-1)**
>
> 3D Slicer extension for segment registration (aka fusion, contour propagation)
