How to improve the accuracy of ALPACA @slicerMorph?


the following experiment was performed in order to “validate” the accuracy of slicerMorph/ALPACA.

  • 2 skull samples were measured on CT

  • 9 landmarks were manually placed on each of the two samples

  • experiment #1 ALPACA: sample_01 served as source, sample _02 served as target

  • experiment #2 ALPACA: sample_02 served as source, sample _01 served as target

One landmark was “troublesome”.

In experiment #1 the landmark #3 was inaccurate.

In experiment #2 the landmark #3 was “accurate”

  1. How the performance of this destinct landmark can be improved?

  2. Why is the performance of ALPACA for the two experiments different in terms of placing the landmark #3?

Is this the reason one should go for “Comparing semi-landmarking approaches for analyzing three-dimensional cranial morphology” (10.1002/ajpa.24214) ?



#2 is easier to answer. They are different because you swapped the sample that defines the points. The registration you obtain via ALPACA is not necessarily symmetric (has no claim to be so). So when you swap reference and target you will get a different result.

#1 It is not easy to manipulate the parameters to improve the performance of a single landmark. That’s because the registration is a global optimization. You can try to adjust the alpha and beta parameters of the CPD deformable registration step (under advanced settings) and see if you can improve. Technical details are in this paper (see the sections 2.2). Be warned that the defaults settings are the best for mouse skulls that we were able to determine.

So both of these points illustrate the limit of using a single reference to automatically estimate LMs in new target. You can usually do a much better job if you can use multiple references. We have implemented the multi-template ALPACA (MALPACA). The preprint is out on biorxiv. You can follow the steps there to obtain the prototype (we will incorporate it into SlicerMorph, once the paper is accepted).

Most semiLM approaches require presence of existing set of anatomical LMs to constrain their placement. If the anatomical landmarks are good, and the semiLM patches are created correctly, that paper shows that semiLM methods can be very good to estimate local shape differences. However, it requires more work (you need to create those anatomical landmarks first). SO there are many trades of between accuracy and analytical throughput based on sample sizes and the ultimate methodological choice depends on what you are comfortable with.


Changing the CPD parameter worked in this case. alpha = 2, beta = 7.

I definitely will try the Mighty-ALPACA :wink:


1 Like

This is great, did the other points end up staying where they were supposed to be? In the current version of the ALPACA, you can quantify this, if you provide a the fixed set of landmarks on the target. This is an optional setup. If you do, ALPACA will report the RMSE (root mean squared error) between the estimated landmark position and your manual ones in a table. As you iterate over settings, new values are added to take, making the decision somewhat more quantitative then just visual.


Hi @muratmaga,

thanks for this hint. Indeed, the by changing the beta = 7 the RMSE decreased.

I have noticed that in the ALPACA publication the skull was downsampled from 36 µm³ to 500 µm³.
Do you recommend to do so and what would be the practical way using 3DSlicer?


We have heavily downsampled sample data we provide for ALPACA, because we wanted datasets downloaded quickly so that people can use our tutorials.

The degree you want to decimate your model is up to you really. If you are deriving your model from microCT scans of sufficient resolution, you might be able to decimate the final model 80-90% without much loss of detail. But you have to do it yourself and see what’s acceptable.