Segmentation of facial nerve

Hello
I’m not familiar with this segmentation tool and I’m trying to perform an extra cranial facial nerve segmentation on MRI 3D T2W sequences. Can some one help me with the steps to follow to obtain a linear segmentation?

Probably the easiest way of segmenting facial nerves is to use “Draw tube” effect (provided by SegmentEditorExtraEffects extension) in Segment Editor module. If you don’t need segmentation, but you just want to mark a curve then you can simply place a curve.

Thanks a lot, I succeeded with these extensions in segmenting the facial nerve.
My study actually consists of comparing the segmentation of extra cranial facial nerve made by a junior radiologist and a senior radiologist specialized in head and neck.
I have issues when using the RT slicer module to compute haudsorff distance and Dice coefficient. The program always shuts down when trying to compute it or returns zero for all metrics.
I also want to ask if it s possible to compare stored segmentations later when needed.

Dice coefficient is not applicable to thin or long structures. Hausdorff distance only gives information on the position of the largest deviation, so it does not give you very detailed information either.

If you only need to compare the centerline curve of the nerve (no need to compare radius) then you can write a short Python code snippet that computes detailed statistics (such as mean max error, and 50th, 75th, 95th percentiles; errors in different segments of the nerve, …).

The script could first resample the assessed curve at equal distances (using `ResampleCurveWorld` method) and then for each control point position get the distance from the ground truth curve (using `GetClosestPointPositionAlongCurveWorld` method), and add all the distances into a numpy array. You can then use `mean` and `max` numpy functions to get the mean error, and `percentile` numpy function to get percentiles. Probably about 15 lines of Python code in total.

Thanks for your time and patience. I’ll try to find someone to write the script since it 's too complicated for me. Meanwhile can you check this article ? They used exactely the same technique and coefficient I mentionned using 3d slicer." MR Imaging of the Extracranial Facial Nerve with the CISS Sequence" J.P. Guenette, 2019

Regardless of this paper passing peer review, Dice Coefficient metric is not suitable for comparing thin tubular objects. Average Hausdorff distance is meaningful, it is just not very sensitive metric. In addition to average, higher percentiles and/or computing the average for parts of the nerve would have been more informative.

I’ve just tested Segment Comparison module in Slicer-4.11.20210226 on Windows and it worked well. What Slicer version did you use? Can you attach a screenshot of your Segment Comparison module? Do you see any error message in the application log? (you can open the log of the previous session in menu: Help / Report a bug)

I see, I’m trying to create a python code and I’ll keep you updated.

Hello! I tried to use DICOM patcher to group the splitted series but it didnt work. I also tried to export them as NRDD files but with no results either. Do you please have a solution with this issue ?

This happens because according to the header in the DICOM files, each slice has different orientation. Does the data set comes straight from the scanner or somebody tried to anonymize it?

I did try the latest preview version with the same result. What should I use in the advanced loading options ?

When you check “Advanced” checkbox then you will be offered a number of ways to load the selected data set. Select all of them and then see if any of those are usable.

If you cannot find a way to load your data then you may share it with us (make sure that the data is anonymized; upload it somewhere and post the link here) so that we can have a look.

There was a missing slice in the downloaded document that generated an error.
When segmenting the facial nerve using the draw tube effect, I couldnt separate the different segments. The first point in the segmentation always starts from the last point of the previous one. do you have an idea how to avoid that ?

You need d tocreate a separate segment for each branch of the nerve. You can later combine them into a single segment, if needed.

So I cant create the segmentations of two branches of a main trunk in the same segmentation group? I’m sending you a screen shot.
If no how can I combine them later?
Thanks again !

Yes, you can combine them very easily in the end. The simplest is to use masking settings / editable region → inside all segments, then fill the entire volume using Logical operators effect’s / Fill method (or Scissors or Threshold effect).

1 Like

Is there any method to obtain the lentgh of a segmented branch in mm ?

You can extract branches from your segmented tree as a curve node using SlicerVMTK extension. You can enable length measurement for the curve in Markups module.

Thank you. Is it accurate for segmentations done with the draw tube extension too( piecewise linear) ?

Draw tube extension can create arbitrary curves, not just piecewise linear. Of course, an analytic curve must be represented in a computer as a set of linear segments for processing and display, but those segments can be as fine resolution as needed.

I have a problem in extracting the centerline curve with the VMTK module.
It shows a message error " Failed to compute results; VMTK Library is not found"
Can you take a look to these screen shots?