# Reconstructing a skull fragment with SSM/PDM

**URL:** <https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365>\
**Category:** Support\
**Created:** [December 4, 2025, 4:01pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365 "2025-12-04T16:01:00Z")\
**Posts on this page:** 9\
**Page:** 2

<div class="post-metadata">

**Author:** ![ThomasVanParys](https://avatars.discourse-cdn.com/v4/letter/t/7ea924/32.png) [@ThomasVanParys](https://discourse.slicer.org/u/ThomasVanParys)\
**Post date:** [December 5, 2025, 6:51pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/21 "2025-12-05T18:51:12Z")

</div>

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

---

<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:** [December 5, 2025, 7:05pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/22 "2025-12-05T19:05:15Z")

</div>

> [@ThomasVanParys](#):
>
> what do you mean by converting volumes labelmaps and do a labelmap registration

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.

---

<div class="post-metadata">

**Author:** ![ThomasVanParys](https://avatars.discourse-cdn.com/v4/letter/t/7ea924/32.png) [@ThomasVanParys](https://discourse.slicer.org/u/ThomasVanParys)\
**Post date:** [December 5, 2025, 7:34pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/23 "2025-12-05T19:34:09Z")

</div>

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?

 ![Screenshot 2025-12-05 193250](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/1/8/1823375144d56cfd04c1fce507c5b275ff12aafe.png)  
 ![Screenshot 2025-12-05 193233](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/b/fb1e70b3a273ae1b71b1285cc17424d7f97f259d.jpeg)

---

<div class="post-metadata">

**Author:** ![ThomasVanParys](https://avatars.discourse-cdn.com/v4/letter/t/7ea924/32.png) [@ThomasVanParys](https://discourse.slicer.org/u/ThomasVanParys)\
**Post date:** [December 6, 2025, 5:57pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/24 "2025-12-06T17:57:33Z")

</div>

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!

 ![Screenshot 2025-12-06 175410](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/8/4/84338819843dcc3b748c40409ede2b0a6b411644.png)  
 ![Screenshot 2025-12-06 175356](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/1/b/1bf67a094180f3f921af4500c888c48e02083f66.jpeg)

---

<div class="post-metadata">

**Author:** ![chz31](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/chz31/32/77363_2.png) [@chz31](https://discourse.slicer.org/u/chz31)\
**Post date:** [December 6, 2025, 6:26pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/25 "2025-12-06T18:26:36Z")

</div>

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](https://github.com/SlicerMorph/Tutorials/tree/main/FastModelAlign)
- 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](https://slicer.readthedocs.io/en/latest/user_guide/modules/fiducialregistration.html)
- 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.

---

<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:** [December 6, 2025, 7:32pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/26 "2025-12-06T19:32:16Z")

</div>

> [@ThomasVanParys](#):
>
> How do you recommend registering the two halves together? I am concerned about asymmetry in the skull, and thus oversampling the cranial capacity. I

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.

---

<div class="post-metadata">

**Author:** ![ThomasVanParys](https://avatars.discourse-cdn.com/v4/letter/t/7ea924/32.png) [@ThomasVanParys](https://discourse.slicer.org/u/ThomasVanParys)\
**Post date:** [December 7, 2025, 8:38am UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/27 "2025-12-07T08:38:51Z")

</div>

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

- Input: the previously cut half-skull
- Create another plane
- Position this plane so it approximates a **cranial base**
- Usually an oblique plane under the orbits and occipital region
- You can adjust in 3D using transform gizmos  
 ![Screenshot 2025-12-07 085835](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/1/f1cbec1930ed7ff058de01deb23a27bc193c7220.jpeg)  
 ![Screenshot 2025-12-07 085817](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/0/a/0ad34c81c0d079a1cbc7c242d7c91b2f58266fa1.jpeg)

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:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/0/0/00f56c2f90f13bde5d445e73a6db55899cd1ea45.jpeg)

---

<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:** [December 8, 2025, 6:32am UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/28 "2025-12-08T06:32:45Z")

</div>

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.

---

<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:** [December 9, 2025, 5:52pm UTC](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365/29 "2025-12-09T17:52:12Z")

</div>

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

> [@Deformable model registration prototype](https://discourse.slicer.org/t/deformable-model-registration-prototype/45426):
>
> I have enabled deformable model registration as fourth level of registration (scaling, rigid, affine) in FastModelAlign module of SlicerMorph extension. Like ALPACA, it uses the point cloud based registration via Coherent Point Drift (CPD) algorithm. Then pointwise deformations are interpolated for every vertex. In its default mode it works quite fast. You can also output an interpolated grid transform (up to 256x256x256 grid size, default is 128^3) so that you can apply the resultant transform…

[Previous page](https://discourse.slicer.org/t/reconstructing-a-skull-fragment-with-ssm-pdm/45365.md?page=1)
