Skip to content

Commit

Permalink
Added segmentation on oblique slices
Browse files Browse the repository at this point in the history
  • Loading branch information
lassoan committed Apr 4, 2019
1 parent 60805d7 commit babf116
Show file tree
Hide file tree
Showing 12 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Craniotomy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Overview
Prerequisites
-------------

Have a segment that need to cut/partitioned into multiple pieces
Have a segment that need to be cut/partitioned into multiple pieces.

Recommended workflow
--------------------
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ObliqueSliceSegmentation/CreateRotatedROI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
51 changes: 51 additions & 0 deletions ObliqueSliceSegmentation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Overview
--------

- Task: Segment image on slices that are not aligned with axes of the master volume.
- Imaging modality: any 3D imaging modality (CT, MRI, ...)

Segment Editor allows editing of segmentation on slices of arbitrary orientation. However, since edited segments are stored as binary labelmaps, "striping" artifacts may appear on thin segments or near boundary of any segments.

When slice view axes are aligned with segment axes: segment boundaries may appear "blocky" in slice views, but no other artifacts appear.

![Slice view axes aligned with segmentation axes](SliceViewAxesAligned.png)

When slice view axes are not aligned with segment axes: slice view is filled from voxels of several planes of the segmentation, therefore the thin objects or boundary of a solid object may appear to have a striped pattern.

![Slice view axes aligned with segmentation axes](SliceViewAxesNotAligned.png)

![Slice view axes not aligned with segmentation axes](SliceViewAxesNotAlignedExample.png)

Slicer notifies the user if slice view axes are not aligned with segment axes by showing a warning icon in the Segment Editor, next to the segmentation node selector. If the warning button is clicked, each slice view is automatically aligned to the closest segment axis.

![Warning icon appears if slice view axes are not aligned with segmentation axes](MisalignmentWarningButton.png)

Recommended workflow
--------------------

Depending on what is the end goal, there are several approaches to deal with stripe artifacts.

### Option A. Ignore stripes

Stripe artifacts can be safely ignored. Correctness of the segmentation near object boundaries can be verified by enabling slice view intersections and reviewing multiple neighboring slices.

Probability of seeing stripe artifacts can be greatly reduced by making the segmentation resolution finer. This can be achieved by oversampling the segmentation.

![Labelmap resolution is increased by oversampling](AdjustLabelmapResolution.png)

![Due to higher resolution, stripe artifacts do not appear anymore](SliceViewAxesNotAlignedExampleOvesampled.png)

### Option B. Create resampled volume with rotated axes

- Define a region of interest (ROI) by selecting ROI from the dropdown menu of the place button on toolbar.
- Apply rotation transform to the ROI and adjust rotation sliders (or use any precomputed transforms, such as inverse of volume's AC-PC transform)

![Create ROI that has axes aligned with the desired orientation](CreateRotatedROI.png)

- Use `Crop volume` module to crop the volume with the ROI

![Crop volume with rotated ROI](CropVolumeWithRotatedROI.png)

- Use the cropped volume as Master volume in the Segment Editor

![Segment resampled volume](SegmentOnCroppedROI.png)
Binary file added ObliqueSliceSegmentation/SegmentOnCroppedROI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ObliqueSliceSegmentation/SliceViewAxesAligned.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Recipes for solving common segmentation tasks using 3D Slicer
- [Craniotomy (splitting segments)](Craniotomy/README.md)
- [Aorta segmentation (fast, using Fast marching)](AortaFastMarching/README.md)
- [Aorta segmentation (high-accuracy, using Grow from seeds)](AortaMaskedGrowFromSeeds/README.md)
- [Segmentation on arbitrarily oriented slices](ObliqueSliceSegmentation/README.md)

External links:
- Whole heart segmentation from CTA:
Expand Down

0 comments on commit babf116

Please sign in to comment.