Dear 3D Slicer community,
a colleague of mine, with whom I often collaborate is doing manual segmentation of muscles in µCT scans of small arthropods. Due to the small size, automatic segmentation is often not feasible. So, they will end up doing the segmentation by hand. Muscles often have very complex topologies and the segmentation work is also part of the learning and understanding process of the anatomy of the animal.
They worked extensively with Amira before, which has a feature that allows for a quite efficient workflow:
The segmentation is done in something like a sandbox mode. They can segment some slices, and apply a fill between slices function, judge whether they like the result and then add the interpolated slices to a named segment that is currently selected using a shortcut. This way they can segment individual muscle strands, one after another and add them to a segment.
The desired workflow is as follows.
- select a segment in the segment editor
- turn on the sandbox mode (what is painted will not automatically part of the selected segment)
- manually draw in several slices
- apply a fill between slices function
- check the interpolation (at best in 3D), proceed with step 6 or undo step 4 or clear the “sandbox” content
- add the interpolated “sandbox” segmentation to the previously selected segment
- optionally repeat with step 3
I know that it is possible to achieve this in 3D Slicer by creating new segments and merging them using the boolean operators. However, this is not very efficient. They often do manual segmentations for several hours and reported that they were more than twice as fast if they used this workflow in Amira compared to using 3D Slicer.
Is there a way to implement such “sandbox mode - add to segment” functionality in 3D Slicer? I know that this might be a niche functionality, but on the other hand, the lack of such functionality is the only reason why my colleague is still drawn to using Amira over open source software.
For those who are wondering about how the results of such models usually look like, here is a figure of an open access article. This example is definitively on the lower end of the spectrum regarding the complexity and amount of reconstructed muscles.
Is it possible to achieve this functionality using a python script? I mean the core components are there, they are just not efficiently accessible? I would of course offer my help if it is possible to include this functionality into the 3D Slicer Segment Editor or as an extension for 3D Slicer. However, I have to point out that I am not a software engineer and what I can offer is only a basic proficiency in Python, limited to simple scripts and data analysis.
Thank you for looking into this! I admire your work and always try to promote others to give 3D Slicer a try.