Working with sutures <1 voxel wide on infant skull CT

Operating system: OS X Catalina (10.15.5)
Slicer version: 4.10.2 r28257
Expected behavior: Use thresholding or threshold masking + grow from seeds to create accurate segmentation of skull
Actual behavior: Unable to use automated methods to appropriately distinguish the sutures on CT scan from surrounding bone due to how small they are - either I have to under-threshold the scan and I lose the sutures entirely but retain all of the bony structures or I over-threshold the scan and lose all of the cancellous bone + several less radiodense bony features of the skull (especially nasal bones)

Hello everyone,

Fairly new to slicer but reasonably comfortable with the features (or so I’d like to think), apologies if I’m breaking forum etiquette as this is my first post. I’ve been wracking my brain over this particular issue for a while - I have a set of infant skull CT scans that I wish to segment for research, specifically of the whole skull and separately the temporal bone. While obtaining all of the bone is fairly simple because of the marked difference in contrast between the soft tissue and the bone, the major issue that I have been running into is with the sutures in the skull.

Obtaining the sutures is especially important and relevant to the patient population I’m working with, but they are in various states of fusion and are extremely difficult to delineate well in 3D slicer. My main methods for segmenting the whole skull (I have been manually growing the temporal bone from seeds but that has been its own set of problems) have been either thresholding the entire skull to start or threshold-masking the skull and then growing out the bones from seeds. However, the sutures are so narrow that a given voxel on the scan will include not just the suture but the surrounding bone as well, which affects the hounsfield unit that Slicer reads. This means that I’m either overcorrecting in including all of the bone but then erasing the sutures, or I’m undercorrecting but then losing all of the cancellous bone along with several bony structures like the turbinates, parts of the orbit, pieces of the zygomatic processes, etc. I have an existing volume rendering of this patient that I’m using as a guide in creating my segmentation and using the volume rendering tool in slicer with the CT Bones preset also creates a fairly accurate skull, but it has been immensely difficult figuring out a good solution with Slicer’s tools that doesn’t eventually end up with me manually painting out the sutures on an overcorrected scan (which I started doing but this would not be efficient for 100+ scans with approximately 300 images each).

Any help in finding an effective solution would be huge and I hope this is a reasonable question for the forum. I’ve included some screenshots of my volume rendering guide, my current segmentation, and zoomed in screenshots of the left squamosal suture where this patient is especially troublesome.
Screen Shot 2020-06-26 at 4.37.43 PM
zoomed-in on the volume-rendered left squamosal suture


sagittal view of volume rendered CT skull

overcorrected threshold where all bony structures are present but suture is effectively lost

undercorrected threshold where sutures are more prominent but at the cost of losing lots of bone (note the loss in the nasal cavity for ex)

Didn’t include the grow from seeds shots because grow from seeds has trouble distinguishing the sutures even when I paint them as background due to how well fused it is - even though the sutures are pretty visible on the scan it’s too small for the grow from seeds to create accurate structures so I end up having to correct the segmentation at basically every slice anyway for obtaining both a whole skull and an individual temporal bone.

Screen Shot 2020-06-26 at 4.36.30 PM
quick picture of the left temporal bone I was individually trying to capture - this is after providing multiple seeds over the course of several hours and it still loses a lot of the structure/adds extra structures which leads me to have to go through every slice correcting the seeds.

Again, hope this is sufficient info and any insight would be a huge help.

It is very common that there is no single global threshold that separates all bone fragments, as in live human patients image resolution and contrast are always limited by maximum allowed X-ray radiation exposure and imaging time.

There are many solutions and the best choice depends on the clinical goal that you would like to achieve. For example, if you need to measure surface areas or you can do surgical planning based on surface segmentation then it is enough to partition the outer surface of the skull. However, if you want to measure bone thickness or density then you need volumetric segmentation. It is also important to know where do you need high accuracy and where do you only need approximate, illustrative segmentation/separation.

Here are two potentially interesting tools (depending on what exactly you want to achieve):

  1. For surface-based analysis/segmentation, you can start with drawing suture lines on volume rendering and then use those to extract fragments using Dynamic Modeler’s module Boundary Cut tool:

It may be even possible to automatically extract the suture lines from a few points by extracting bone density and make the curve follow minimal bone density - similarly as it is done for cortical parcellation:

  1. For making hollow bones solid, you can use Surface Wrap Solidify effect in Segment Editor (provided by WrapSolidify extension).

https://github.com/sebastianandress/Slicer-SurfaceWrapSolidify/raw/master/Resources/Media/result.gif

1 Like

In addition, you should look at oversampling the segmentation so you can better capture the fine details of the sutures. Isotropic oversampling by a factor or 2 should help a lot.

image

1 Like

If you need the full skull as well, you should threshold what you need to get that first.

Then what I do is use the “Editable Intensity Range” checkbox to Erase only those dark threshold values that will give you a nice gap between parts. It can be tedious but by setting that editable range, you can be messy when painting over the area and not worry too much about following the suture closely. Once you think you’ve separated it enough, you can create another segment for the temporal bone and use the Islands tool to add the temporal bone island to it. If it’s still connected, you can go back and erase the connections.

“Editable Intensity Range” can also be used in Paint if you need to go back and add something back in. I tend to go back and forth, but make sure you adjust the range accordingly. Also use the “Editable Area” option. Sometimes I use the Level Tracing tool as well.

Maybe there’s an easier way, but this is what I do when separating complex fragments in skeletal specimens!

3 Likes

Thank you for this one (and everyone for all of the help)! I’ve found that overcorrecting and erasing out the sutures with the editable mask like tsehrhardt mentioned is the fastest solution for what I need, since I can edit it depending on how fused the suture is. Wrap solidify was pretty powerful but since my sutures were so fused it kept assuming that the brain cavity was the inside of the bone and filled in the skull instead of the skull bones!

2 Likes

For the future: in Wrap Solidify effect, you can adjust the size of cavities that are carved out, so you can ensure that the brain cavity is not filled in.

1 Like