Nasal Cavity Geometry Extraction

For thresholds, I don’t think there is an ‘exact’ method. You can try the provided automated thresholding algorithms (e.g., Otsu, isodata etc), as a starting to point and see if they help you identify a range that works for the structure you isolate. Benefit of such algorithms is the reproducibility, but that doesn’t mean the range that they estimate is going to be range you will need for your case.

To change the resolution of the segmentation, you can click the little cube next to do Master Volume field of segment editor, and select Segmentation node. Then you can specify the resolution you would like to have. Note that for me this resulted in a crash with MRHead.nrrd when I was testing it.

My preferred method is to increase the resolution of the master volume using the Crop Volume or ResampleScalarVolume so that thin structures that I want to segment are at least 4-5 voxels thick. After that you can proceed with the segmentation normally.
image

Thank you for the help. After trial and error, I was able to find a suitable threshold range with minimum holes and extrusions. However, I am not sure whether this is the correct way to do it. What I mean to say is that this may result
in adding extra segments to the geometry which are not originally part of the patient’s actual nasal cavity.

I read in a paper (attached) about determining the right threshold value (Table 1). I am working on it. If you know anything about it or come across anything relevant in future, kindly do let me know. Furthermore, the authors have
mentioned about using the Grayscale Model Maker for geometry reconstruction (section 2.3 para 1). I have been trying it. I was able to create iso-surfaces. Is there any way to turn that is-surface into a segment?

Thank you.

(Attachment Zwicker_2018_Biomed._Phys._Eng._Express_4_045022.pdf is missing)

Attachment has been rejected. You can view that paper here:

https://iopscience.iop.org/article/10.1088/2057-1976/aac6af/pdf

Thanks!

It worked well for me with any parameter combinations that I tried. Can you describe the steps that led to the crash?

Thanks. Is there any way to convert an iso-surface (obtained form Grayscale Model Maker) into a segment which can later be exported into an STL file?

Regards,

You do not need to use Grayscale model maker module anymore. All you need is available in Segment Editor and Segmentations modules:

  • Thresholding effect to generate segment from iso-value
  • Create 3D to generate isosurface that is automatically regenerated as you edit the segmentation
  • Export to files to create 3D-printable STL file, etc

@lassoan, Doesn’t the Segment Editor require a labelmap for thresholding? That would technically be a different final mesh than the Grayscale model maker for the same threshold (depends on oversample level).

Segment editor Threshold effect does not require labelmap input - as master volume it can use the same scalar volume input as Grayscale model maker.

Segmentations can generate the same output as Grayscale model maker. You can tune smoothing, decimation, normal computation options in Segmentations module / Representations / Closed Surface - Update / Binary Labelmap -> Closed surface path.

But Grayscale model maker never creates a labelmap, so the isosurface is defined by the continuous tone values of the image, not from the output of the threshold, which introduces a voxel level discretation.

When I try editing a Segmentation where the master representation is Closed Surface I get this dialog, so it looks like you can’t bypass having the labelmap.

I see what you mean now. Yes, if you use binary labelmap representation then the subpixel-precision adjustment of surface point positions is missed. In practice, this does not make much difference because we smooth the generated mesh.

Maybe there is some degree of surface roughness that can be preserved if scalar volume is meshed immediately, but smoothed out if performing thresholding, meshing, and smoothing. In the rare case that this would matter, you can use fractional labelmap representation instead of binary labelmap. Or, you can use binary labelmap representation with oversampling. Or, if you don’t need any editing, then you can use Grayscale model maker.

Yes, I agree - in most use cases you need to edit anyway, so the best option is to pick a segmentation oversampling that is able to represent the details you need (so that any important feature is a few voxels thick).

For special cases where thresholding works well in the area of interest, another option is to edit the things you want to remove into a segment and then use that to mask the original volume before running the Grayscale model maker.

I just had an idea. I was thinking if there is any way to cut down my segmentation into small segments so that I can manually edit them by filling the holes and then later merge all the segments into a single segment. I need the geometry to be one closed surface. I will use it later in ICEM CFD for meshing, so it needs to be totally error free. Thank you for your time.

I need a sample CT DICOM data of a head. Where can I find it?

https://www.cancerimagingarchive.net/
Search for head and neck.

Also on the same site the CPTAC-GBM dataset includes some head CTs.

This data is in TCIA format. How do I convert it to DICOM or is any there any way to load it in Slicer?

Most of the data on TCIA is in dicom, you just need to download it.

I have downloaded it but how do I import it in Slicer. I tried to drag and drop but it shows nothing.

Did you use the download manager? https://wiki.cancerimagingarchive.net/display/NBIA/Download+Manager+7.0

You might also try https://www.slicer.org/wiki/Documentation/Nightly/Extensions/TCIABrowser