Teeth Segmentation

Is there a easier way of segmenting multiple teeth easily like shown here from a CBCT ?

I tried thresholding and grow from seed, fill between slices and filling holes and applying smoothes.

While we can segment out single tooth after spending like 15 minutes on 1 teeth with good results it is not easy to do this for all the teeth. Is there a easier way like as shown here in the youtube ?

Also if someone has done teeth segmenting from CBCT what is the normal work flow that worked the best for you ?


My end goal is to achieve this the easiest way !


The segmentation process in the video above looks very tedious. It should be possible to do it much more easily. If you have a good-quality CBCT to share then we could try various segmentation approaches. It should be also possible to train an AI model that would segment a tooth from a single click.

1 Like

Thank you Prof @lassoan . That would be great. I will share a CBCT file and it is not very good but these are the ones we get.

It would be great if we can try various methods to get the best segmentation and perhaps the cook up the best recipe for the teeth and also i am very much interested in AI model training but i would need help with AI training.

There is no such thing as a perfect segmentation, it can only be good enough for a specific use. What is your use case? What would you like to segment on the image is exactly? What accuracy do you need? What is particularly important to be accurate and what parts are not that important?

We want to segment the roots of the teeth. We want to measure root resorption of teeth pre and post orthodontic treatment. Not very happy with the apex part.

I tried with ITK-SNAP and at the apex it spills in to the adjacent bone and i think of course it is because of the quality of the CBCT but trying to get it to work the best. And with slicer we will have to do teeth by teeth.

We find it very particular difficult to segment out the root apexes of teeth.

Also is there a way to measure the volume difference between at a ROI from two CT scans from two time points ?

For example CBCT - Time 01 (Pre OP) and CBCT time 02 ( PostOp) will be registered and then measure the area of bone resoprtion in a ROI with out segmenting ?

So the segmentation problem will not come ?

Dear Prof Lasso, I have crop the volume of one of the cases that i would like to segment.

However i find it extremely difficult to segment out the teeth from the mandible. We want to be able to segment out selected teeth from the mandible.

I have shared the link to the data with you. If you have time can you help us with this in finding a better way to segment the teeth ? We need accurate segmentation of roots of the teeth.

I’ve checked this and found that all teeth can be quite quickly and accurately segmented at once by the following steps:

  1. Set editable intensity range from about 1880 to maximum using Threshold effect, “Use for masking”

  1. Using “Paint” effect, painta few strokes in the mandible and each tooth with different segment. You need to experiment to find what is the minimum amount that you need to paint and where, but probably it is enough to paint one stroke that goes down to the tip of the root (it is easy to do, as we are in threshold paint mode, so cannot paint outside the tooth) and add seeds where the tooth is in contact with another tooth. You can add seeds later, but updates in watershed transform take time, so it is better to provide enough seeds on the first try.

  1. Use “Watershed” effect (provided by SegmentEditorExtraEffects extension) with object scale = 0.2, then click Initialize and Show 3D

  1. Add more seeds as needed. If you find that your initial seeds did not give correct results then add more seeds. For example, if boundary between two teeth are not in the correct place then paint on both sides at the boundary with the correct color. If you get better with initial placement of the seeds then this should not be necessary. When results look good, go back to Watershed effect and click “Apply”.

  1. Touch up the segmentation. Near very dense areas (typically when crown of two teeth are in contact), blooming artifact may occur in the CT, resulting in connection between teeth. Probably the easiest to cut off those connective pieces using Scissors effect in 3D view.


  • This workflow segments all teeth at once and it takes 10 minutes for me, but if complete a number of cases then I would expect it would go down to about 5 minutes.
  • You can make Watershed updates faster and more accurate if you crop the volume to the minimum necessary size and enable “isotropic spacing” option.

You might be able to segment one image and then compute segmentation on the other image by warping the segmentation based on the transformation that you computed using registration (e.g., using SlicerElastix). However, probably it is more accurate if you rigidly register the images and, copy the complete segmentation from the first image to the second, shrink all the segments using Margin effect and use those as input for Watershed effect. This may or may not be faster than doing the segmentation from scratch. You need to practice and see which one is faster and easier.


Dear Prof Lasso,

Thank you for your kind help. I will try with this to master this. !

1 Like


whenever i try to use the method u described by using thresholding and paint then the watershed tool i end up with the teeth partially embedded in the bone, i would also want to know how can i further extract the pulp space after segmenting teeth

im attaching a screen shot of my final result

would really appreciate your help

Hi Reham Hassan

The thresholding is highly depended to the patient and equipment. In my experience I have found values around 700 to 1400 units are good range to have teeth without include too much around bone tissues . I suggest you increase the number of slices the much as possible to have a better segmentation results [you can do it in crop module, when you create the ROI], also use island tool to remove undesired structures and help to reduce the time need it to use paint an erase tools.

If you used threshold tool to include mainly the teeth structure, you will have the pulp region. You can extract the pulp using creating a new segment and the boolean operations or using grow from seed tool too. Another strategy is to export the tooth stl and in Meshlab remove the enamel and dentine structure, inside you will have the pulp.

I hope this suggestions help you


Juan G. Diosa

thank you for your reply :slight_smile:
the maximum threshold range of the volume im using is 253
i have tried different ranges to select only teeth, uploading a screenshot of the threshold range im using, do u have a better suggestion

also i have cropped the skull partially to include the teeth i want, could u please mark on the other screenshot, what do u mean by increasing the number of the slices

i really appreciate your help
and the time u took to reply to my inquiry

A good strategy to identify the proper threshold range is begging with high values and click in apply, then to reduce the min value a little bit until you include what you want. Use the 3D representation to check if you have everything you need. I think the values you have now are to low because is including no related tissues. This video explain better what I am talking about at 2:20 min https://www.youtube.com/watch?v=Uht6Fwtr9hE&t=261s

To increase the number of slices you have to modify the spacing scale using numbers below to 1, check the volume information to know the distance you in the file and what distance between slices you will have in the ROI. Check this video at 0:30 min to know how to do it


Your displayed value range for threshold in the screenshot starts 103.22 ends at 140.92. Teeth is the most dense material in the skull. Their intensity values tend to be close to the maximum range. Your threshold range is picking up everything but the teeth. So try something like 140-255 to make sure you are including the upper end of the intensity range.

This may indicate that the CT has been exported incorrectly (e.g., as a series of JPEG images). If intensity values in the image are in the range of 0-255 then it means that you will have more difficulty with differentiating tissue types as you would have with the properly exported images (which have about 10x larger dynamic range).

Where the images are from? How were they exported?

Hi there, I just want to share how I did tooth segmentation.
I basically used level tracing with paint and eraser to highlight which area I wanted especially for enamel and dentine.

Next, I use fill between slices tool for root structure.

Finally, I smooth it with smoothing tool. Here I use median mode with kernel size 1.00 mm size reduction.

thank you.


Thank you Dr Murat, i have tried this range you recommended (140-255) but ended up by selecting only enamel


yes i believe there must be a problem with the Micro CT images, because i tried every method mentioned here in trial to segment teeth, to some extent i have better results with segmenting the brain, sharing screenshots but have been totally failing with teeth
i have been using the image stacks module of the slicerMorph

I only suggest looking at the screenshot. You may bring the lower end lower a bit, and see if it helps. But the issue as @lassoan said is that 8 bit data range doesn’t give you a lot to work with. The root of the tooth and the bone they are embedded in has similar densities so it is harder to find an intensity value that will pick only one but not the other. If you can get your scan reconstructed as 16 bit, this may help some. Alternatively to you can try to use the Local Threshold module so that the segmentation does so leak so much into the alveolar region (I think).