# Segment tooth enamel and pulp from TotalSegmentator tooth-by-tooth

**URL:** <https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637>\
**Category:** Support\
**Tags:** segmentation, dental, totalsegmentator\
**Created:** [July 15, 2026, 2:23pm UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637 "2026-07-15T14:23:47Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![r\_vorup](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/r_vorup/32/82555_2.png) [@r\_vorup](https://discourse.slicer.org/u/r_vorup)\
**Post date:** [July 15, 2026, 2:23pm UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637/1 "2026-07-15T14:23:47Z")

</div>

Hello all,

I have used the TotalSegmentator to segment a CBCT scan of upper and lower jaw, and have gotten each tooth in an individual segment. I now want to split each tooth into dentine and enamel, for them to be 3D printed in different materials. I have tried to use thresholding within the segment to separate the enamel, but since the tooth output from the TotalSegmentator is a bit “blocky”, the thresholded enamel is more smooth than the existing segment, leaving me with the “slats” as seen in the image. Most of these are not islands and are therefore very tedious to remove. Does anyone have a suggest on how to solve this?

Since the purpose is 3D printing a complete jaw where teeth should fit perfectly into the bone, I’m trying to avoid smoothing until I can do a joint smoothing of all tooth parts and bone in the same go, to hopefully not move any boudaries. I hope this makes sense.

Thank you for any input!

 ![dentine_enamel_split](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/0/8/08d34fa067428245d116b00baa8a9bad6270b86b.jpeg)

---

<div class="post-metadata">

**Author:** ![finetjul](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/finetjul/32/146_2.png) [@finetjul](https://discourse.slicer.org/u/finetjul)\
**Post date:** [July 16, 2026, 7:04am UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637/2 "2026-07-16T07:04:06Z")

</div>

If the problem is only in 3D and not in 2D, it probably means that you need to check the 2D to 3D “smoothing” parameter.

---

<div class="post-metadata">

**Author:** ![r\_vorup](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/r_vorup/32/82555_2.png) [@r\_vorup](https://discourse.slicer.org/u/r_vorup)\
**Post date:** [July 16, 2026, 10:51am UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637/3 "2026-07-16T10:51:34Z")

</div>

Thank you for the suggestion, but it is present also in 2D, so it is not just a question of the 3D visualization.

---

<div class="post-metadata">

**Author:** ![finetjul](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/finetjul/32/146_2.png) [@finetjul](https://discourse.slicer.org/u/finetjul)\
**Post date:** [July 16, 2026, 12:51pm UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637/4 "2026-07-16T12:51:25Z")

</div>

I’m not sure to understand what you “thresholded” then.

You could use the segmented tooth as a “mask” to then apply the threshold. You are ensured that the thresholded voxels only belong to the previously segmented voxels.

---

<div class="post-metadata">

**Author:** ![Lukon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lukon/32/82306_2.png) [@Lukon](https://discourse.slicer.org/u/Lukon)\
**Post date:** [July 19, 2026, 6:11pm UTC](https://discourse.slicer.org/t/segment-tooth-enamel-and-pulp-from-totalsegmentator-tooth-by-tooth/47637/5 "2026-07-19T18:11:58Z")

</div>

I wrote an extension that performs anatomical segmentation of a tooth starting from micro-CT. It separates the tooth into enamel and dentin using a threshold-based segmentation pipeline.

I am not very familiar with CBCT scans, and I have never tested the extension with them, but it might work for your use case.

The extension is currently still in code review and is not available through the Slicer Extension Manager. However, you can install it manually by importing the main branch of the extension:

> **[GitHub - lukaskonietzka/SlicerToothAnalyser: This 3D Slicer Extension provides specialized...](https://github.com/lukaskonietzka/SlicerToothAnalyser)**
>
> This 3D Slicer Extension provides specialized preprocessing, segmentation, and analysis features tailored for the analysis of tooth anatomy and pathology starting from µCT
