Reconstructing a skull fragment with SSM/PDM

Ok - I will try a few other methods, what do you mean by converting volumes labelmaps and do a labelmap registration? Does that mean using the .nrrd’s instead of the registered .nii’s ?

I wonder if Scalismo can work with meshes alone? Although I am struggling with the coding aspect

If you threshold your volumes, and create a labelmap, you can input those as the fixed and moving volumes (I think). That’s what I meant. Format doesn’t matter both nii.gz and nrrd are fine.

Perhaps I’m doing this in the wrong order - but I already have labelmaps of the volumes as .nrrd files - I would still, at some stage, need to input the fragmented skull as the fixed volume?


Thank you. How do you recommend registering the two halves together? I am concerned about asymmetry in the skull, and thus oversampling the cranial capacity. It also still lacks much of the skull base, so estimating cranial capacity from a non watertight mesh could be tricky… any advice is appreciated!


I am glad it helps!

Reconstruction can be very ad hoc due to variations left-right asymmetry and you might try a couple of different methods. Fossils also may involve distortions.

A few methods I could think about:

  • Use a skull that looks similar (e.g., one species, perhaps using the strictest species definition, similar age) to fix it. You could try FastModelAlign from SlicerMorph for model registration and affine deformation. Tutorials/FastModelAlign at main · SlicerMorph/Tutorials · GitHub
  • You can also manually adjust it using the new Slicer interaction transform handle. Simple go to Data module, right click the eyeball, and activate the 3D interaction transform. You’ll see a handle to play with.
  • You can also use the Fiducial Registration Wizard to use manual landmarks to align left-right or two specimens. Fiducial Registration — 3D Slicer documentation
  • Once it is registered, you can use the affine registration in MirrorOrbitRecon or FastModelAlign to see if slight deformation can improve the fit.
  • Another way is the thin plate spline transformation between two manual landmark sets with correspondence manually established. You can then use the generated grid transform to transform one specimen to match to another one. This may require minimal Python programming. I could send you a snippet later (the same method is used in GPA of SlicerMorph as well).

My feeling is, you might want to use manual landmarks to see if it’ll perform better than model registrations since the bones could be fragmentary. Again, there is no guarantee which method would be suitable unless trying them one-by-one.

1 Like

That’s why I suggested image registration based deformation, since you wouldn’t have to worry too much about the lack of cranial base, remaining points should still give you reliable deformation.

Since you can’t use that method due to lack of CT scan of the actual specimen, you might want to consider using tools in the Dynamic modeler plane cut options. You can use mid sagittal to remove the damaged side (left), then another plane to create an artficial cranial base, and then calculate the volume inside and multiply by 2. You want to use the PlaneCut with the cap option enabled.

I will try this. How does one create an artificial cranial base? using an ROI clipping of an aligned complete skull and then merging with the sagitally clipped fragmented skull?
Or is this just via: Add another Plane Cut tool

I plugged the resulting .ply into Endomaker (Arothron, R Studio), with a result of 939.2671ml x 2 = ~1,878.53 ml, which for a 4 year-old skull with synostosis/macrocephaly, I think is reasonable?
I can play around with the parameters further, but looks like this:

Sounds like you figured out. Yes, just use two planes.

If you need more accurate estimates, then I would suggest using deformable model (or mesh) registration and estimate it from the reference ones.

1 Like

Also, for posterity. There is now deformable model registration in FastModelAlign module of SlicerMorph extension. See here:

2 Likes