Difference between revisions of "Documentation/Nightly/Modules/KSliceInteractiveSegmenter"

From Slicer Wiki
Jump to: navigation, search
 
(35 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
<noinclude>{{documentation/versioncheck}}</noinclude>
 
<!-- ---------------------------- -->
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-header}}
 
{{documentation/{{documentation/version}}/module-header}}
Line 17: Line 18:
 
Author: Ivan Kolesov, Georgia Institute of Technology<br>
 
Author: Ivan Kolesov, Georgia Institute of Technology<br>
 
Author: Peter Karasev, Georgia Institute of Technology<br>
 
Author: Peter Karasev, Georgia Institute of Technology<br>
 +
Author: Patricio Vela, Georgia Institute of Technology<br>
 
Author: Allen Tannenbaum, University of Alabama Birmingham<br>
 
Author: Allen Tannenbaum, University of Alabama Birmingham<br>
 
+
Contributor1: Steve Pieper, Isomics, Inc.<br>
<!--Contributor1: FIRSTNAME LASTNAME, AFFILIATION<br> -->
+
Contributor2: Karl Fritscher (BWH & MGH)<br>
 
<!--Contributor2: FIRSTNAME LASTNAME, AFFILIATION<br> -->
 
<!--Contributor2: FIRSTNAME LASTNAME, AFFILIATION<br> -->
 
<!--Contact: FIRSTNAME LASTNAME, <email>john@doe.org</email><br> -->
 
<!--Contact: FIRSTNAME LASTNAME, <email>john@doe.org</email><br> -->
 +
 
{{documentation/{{documentation/version}}/module-introduction-row}}
 
{{documentation/{{documentation/version}}/module-introduction-row}}
{{documentation/{{documentation/version}}/module-introduction-logo-gallery
+
 
 +
<!--{{documentation/{{documentation/version}}/module-introduction-logo-gallery
 
|[[File:GeorgiaTech_Logo.svg]]
 
|[[File:GeorgiaTech_Logo.svg]]
 
|{{collaborator|logo|spl}}|{{collaborator|longname|spl}}  <-Replace this logo with yours
 
|{{collaborator|logo|spl}}|{{collaborator|longname|spl}}  <-Replace this logo with yours
}}
+
}} -->
 +
 
 +
 
 
{{documentation/{{documentation/version}}/module-introduction-end}}
 
{{documentation/{{documentation/version}}/module-introduction-end}}
  
Line 37: Line 43:
 
<!-- ---------------------------- -->
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Module Description}}
 
{{documentation/{{documentation/version}}/module-section|Module Description}}
 +
 +
This is the KSlice interactive segmentation method. It uses a data-driven automatic algorithm to process the majority of the volume. As the automatic segmentation runs and displays the current state, a human user can influence the algorithm’s behavior to more closely align with an expected result.
 +
In the end, the user has created an excellent segmentation result with a minimal amount of time and effort. Please see the references below for more details.
 +
 
<!--Here comes a description what the module is good for. Explain briefly how it works and point to the [[documentation/{{documentation/version}}/Modules/{{documentation/modulename}}#References|references]] giving more details on the algorithm.
 
<!--Here comes a description what the module is good for. Explain briefly how it works and point to the [[documentation/{{documentation/version}}/Modules/{{documentation/modulename}}#References|references]] giving more details on the algorithm.
 
If you are documenting a CLI, the description should be extracted from the corresponding XML description. This could be done automatically using the following wiki template:<pre>{{documentation/{{documentation/version}}/module-description}}
 
If you are documenting a CLI, the description should be extracted from the corresponding XML description. This could be done automatically using the following wiki template:<pre>{{documentation/{{documentation/version}}/module-description}}
 
{{documentation/{{documentation/version}}/module-description}} -->
 
{{documentation/{{documentation/version}}/module-description}} -->
  
This is an interactive segmentation approach that is guided by the user throughout the task.
+
 
  
  
Line 59: Line 69:
 
<!-- ---------------------------- -->
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Tutorials}}
 
{{documentation/{{documentation/version}}/module-section|Tutorials}}
 +
 
Step 1.) Add data volume to segment
 
Step 1.) Add data volume to segment
  
[[File:LoadData.png|500px|thumb]]
+
[[File:LoadMeningioma.png|500px]]
  
  
 
Step 2.) Go to the “Editor” module, select the volume loaded in Step 1 as the “Master Volume” in the “Create and Select Label Maps” drop-down menu
 
Step 2.) Go to the “Editor” module, select the volume loaded in Step 1 as the “Master Volume” in the “Create and Select Label Maps” drop-down menu
  
[[File:StartEditor.png|500px|thumb|left]]
+
[[File:StartEditorMeningioma.png|500px]]
  
  
 
Step 3.) Select the “KSlice” effect in the “Edit Selected Label Map” drop-down menu
 
Step 3.) Select the “KSlice” effect in the “Edit Selected Label Map” drop-down menu
  
[[File:KsliceEffect.png|50px|thumb|left]]
+
[[File:KSliceEffect.png|50px]]
  
  
Step 4.) Set the “Radius” parameter and press the “Start Interactive Segmentor” button ( KSlice is now running in the background until the “Stop Interactive Segmentor” button is pressed)
+
Step 4.) Set the “Radius” parameter, the "Number of Iterations" and press the “Start Interactive Segmentor” button ( KSlice is now running in the background until the “Stop Interactive Segmentor” button is pressed)
  
[[File:StartBot.png|500px|thumb|left]]
+
[[File:StartBotMeningioma.png|500px]]
  
  
 
Step 5.) Turn “On” all three slice views in the 3D Plane
 
Step 5.) Turn “On” all three slice views in the 3D Plane
  
[[File:TurnOnSlices3D.png|500px|thumb|left]]
+
[[File:TurnOnSlices3DMeningioma.png|500px]]
 +
 
 +
 
 +
Step 5.) Select the rectangle tool(or any other painting tool).
  
 +
[[File:ImplicitRectangle.png|50px]]
  
Step 5.) Select the “PaintEffect” tool and initialize KSlice by drawing inside the structure of interest
+
and initialize KSlice in a 2D slice by drawing inside the structure of interest.
(green circle, inside the esophagus in this example)
 
  
[[File:Paint.png|50px|thumb|left]]
+
[[File:KSliceInitMeningioma.png|500px]]
  
  
Step 6.) Hover the mouse over a slice view (we focus on the “Red” slice first, here) and press the “Q” key to evolve a 2D active contour in this plane
+
Step 6.) Press the “C” key to copy the current initialization in this 2D plane, then press the left/right arrow on the keyboard to move on to an adjacent slice, press the “V” key to paste the label, thereby initializing the current slice. Once this procedure has been repeated several times, we have initialized the surface to a cube in 3D.
  
[[File:Segment2D.png|500px|thumb|left]]
+
[[File:KSliceInit3DCube.png|500px]]
  
  
Step 7.) Press the “C” key to copy the current segmentation in this 2D plane, then press the left/right arrow on the keyboard to move on to an adjacent slice, press the “V” key to paste the label, thereby initializing the current slice
+
Step 7.) To evolve the 2D contour on a slice, hover the mouse over a 2D view plane, press “Q”.
  
[[File:CopyPasteSlice.png|500px|thumb|left]]
+
[[File:KSlice2DEvolve.png|500px]]
  
  
Step 8.) Evolve the 2D contour on this slice by pressing “Q”
 
  
[[File:Segment2DAfterPaste.png|500px|thumb|left]]
+
Step 8.) Evolve the contour in 3D by pressing "E" to use the Chan-Vese energy.
  
  
Step 9.) Hover mouse over the yellow, then green slices and repeat (as many times as desired) Steps 6-8
+
---- <!-- Horizontal  rule -->
 +
== As necessary, take steps at any time in the process ==
  
[[File:SegmentAllSlices.png|500px|thumb|left]]
+
Step 9.)(Used in any order) A segmenting surface may leak into undesirable areas, based purely on image data. It is the user's job to guide the evolution process. A user can provide positive input (drawing) by selecting a paint tool, painting in areas which should be part of the object of interest but are not. Or, the user can provide negative input (erasing) by pressing "A" (toggle label value between 0 and the originally selected label). An example of a user correction is going from
  
 +
[[File:KSliceNegativeInput.png|500px]]
  
***** As necessary, at any time in the process *****
+
to
  
Step 10.) Press the “A” key to change drawing modes (between Draw/Delete label). Thus, if the user's expert knowledge of anatomy does not agree with the current segmentation results, he adds negative input by erasing a label. By deleting in the same area multiple times, the user input is accumulated and this guiding signal forces the changes to become persistent
+
[[File:KSliceCorrectedUI.png|500px]]
  
[[File:DeleteLabel.png|500px|thumb|left]]
+
Step 10.) (Used in any order) Certain image regions (depending on the energy chosen and the image itself) may be highly attractive for the evolving contour despite being incorrect according to the user's expert knowledge. He has two options. First, apply repeated input several times (soft user constraints). Second, he can press "B" (toggle between soft/hard constraints) to increase the weight on his inputs, essentially making them hard constraints. Further, constraints can be provided pre-emptively, by erasing/drawing in regions before a contour has reached these areas to prevent leaks in the future or expedite the evolution process, respectively.  
  
  
Step 11.) Alternatively, a user can press “A” again to return to drawing. If a contour is not reaching an area that is, in fact, part of the structure of interest, the user can add positive input by painting this area
+
Step 11.)(Used in any order) Press "F" to run the contour in 3D, similarly to Step.8 but using an alternative energy, the Local Global Chan-Vese. The user can switch the energy he is using at any time.
  
[[File:DrawLabel.png|500px|thumb|left]]
 
  
 +
---- <!-- Horizontal  rule -->
  
Step 12.) Evolve the contour with the changed user input, and new initialization
 
  
[[File:EvolveAfterUserInput.png|500px|thumb|left]]
+
== Optional Visualization ==
  
 +
Step 12.) (Optional) Turn on “Volume Rendering” of the label image in 3D (notice the parameters set for faster interaction). This will be updated during the evolution
  
*********************************************
+
[[File:VolumeRederingOnMeningioma.png|500px]]
  
*********Optional visualization ******************
 
  
Step 13.) Turn on “Volume Rendering” of the label image in 3D (notice the parameters set for faster interaction). This will be updated during the evolution
+
---- <!-- Horizontal  rule -->
  
[[File:VolumeRederingOn.png500px|thumb|left]]
+
Step 13.) Examine the current segmentation by flipping through the 2D viewers, providing input as in Step.9 to guide the evolution.  
  
 +
[[File:ExampleUIDuringProcess.png|500px]]
  
*********************************************
 
Step 13.) Evolution in 3D is done by pressing the “W” key
 
  
[[File:Result3DSegmentation.png
 
|500px|thumb|left]]
 
  
 +
Step 14.) Repeat steps 7-11 (or any subset of them) until convergence to the desired segmentation.
  
 +
[[File:KSliceFinalSegMeningioma.png|500px]] 
  
  
 +
Step 15.) Once satisfied with the segmentation, stop KSlice by clicking "Stop Interactive Segmentor"
 +
 +
[[File:StopInteractiveSegmenter.png|500px]]
  
  
Line 151: Line 167:
 
<!-- ---------------------------- -->
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Panels and their use}}
 
{{documentation/{{documentation/version}}/module-section|Panels and their use}}
N/A
+
There are two parameters to set: the radius that sets the band around the current initialisation in which image data is considered (for Local-Global Chan-Vese energy) and the number of contour iterations. A large radius means data from far lying regions influences the segmentation (this increases the computational complexity). A small radius ensures that only nearby pixels influence the contour (but set too small will require a better contour initialisation from the user). The number of iterations refers to the time for which the segmenting surface is allowed to evolve before querying the user for input. A small number allows the user to catch the surface before a large error is made, reducing corrective inputs required but may be tedious/slow.
 
 
  
  

Latest revision as of 19:44, 20 September 2013

Home < Documentation < Nightly < Modules < KSliceInteractiveSegmenter


For the latest Slicer documentation, visit the read-the-docs.





Introduction and Acknowledgements

This work is part of the National Alliance for Medical Image Computing (NA-MIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. Information on NA-MIC can be obtained from the NA-MIC website.

Author: Ivan Kolesov, Georgia Institute of Technology
Author: Peter Karasev, Georgia Institute of Technology
Author: Patricio Vela, Georgia Institute of Technology
Author: Allen Tannenbaum, University of Alabama Birmingham
Contributor1: Steve Pieper, Isomics, Inc.
Contributor2: Karl Fritscher (BWH & MGH)





Module Description

This is the KSlice interactive segmentation method. It uses a data-driven automatic algorithm to process the majority of the volume. As the automatic segmentation runs and displays the current state, a human user can influence the algorithm’s behavior to more closely align with an expected result. In the end, the user has created an excellent segmentation result with a minimal amount of time and effort. Please see the references below for more details.








Tutorials

Step 1.) Add data volume to segment

LoadMeningioma.png


Step 2.) Go to the “Editor” module, select the volume loaded in Step 1 as the “Master Volume” in the “Create and Select Label Maps” drop-down menu

StartEditorMeningioma.png


Step 3.) Select the “KSlice” effect in the “Edit Selected Label Map” drop-down menu

KSliceEffect.png


Step 4.) Set the “Radius” parameter, the "Number of Iterations" and press the “Start Interactive Segmentor” button ( KSlice is now running in the background until the “Stop Interactive Segmentor” button is pressed)

StartBotMeningioma.png


Step 5.) Turn “On” all three slice views in the 3D Plane

TurnOnSlices3DMeningioma.png


Step 5.) Select the rectangle tool(or any other painting tool).

ImplicitRectangle.png

and initialize KSlice in a 2D slice by drawing inside the structure of interest.

KSliceInitMeningioma.png


Step 6.) Press the “C” key to copy the current initialization in this 2D plane, then press the left/right arrow on the keyboard to move on to an adjacent slice, press the “V” key to paste the label, thereby initializing the current slice. Once this procedure has been repeated several times, we have initialized the surface to a cube in 3D.

KSliceInit3DCube.png


Step 7.) To evolve the 2D contour on a slice, hover the mouse over a 2D view plane, press “Q”.

KSlice2DEvolve.png


Step 8.) Evolve the contour in 3D by pressing "E" to use the Chan-Vese energy.



As necessary, take steps at any time in the process

Step 9.)(Used in any order) A segmenting surface may leak into undesirable areas, based purely on image data. It is the user's job to guide the evolution process. A user can provide positive input (drawing) by selecting a paint tool, painting in areas which should be part of the object of interest but are not. Or, the user can provide negative input (erasing) by pressing "A" (toggle label value between 0 and the originally selected label). An example of a user correction is going from

KSliceNegativeInput.png

to

KSliceCorrectedUI.png

Step 10.) (Used in any order) Certain image regions (depending on the energy chosen and the image itself) may be highly attractive for the evolving contour despite being incorrect according to the user's expert knowledge. He has two options. First, apply repeated input several times (soft user constraints). Second, he can press "B" (toggle between soft/hard constraints) to increase the weight on his inputs, essentially making them hard constraints. Further, constraints can be provided pre-emptively, by erasing/drawing in regions before a contour has reached these areas to prevent leaks in the future or expedite the evolution process, respectively.


Step 11.)(Used in any order) Press "F" to run the contour in 3D, similarly to Step.8 but using an alternative energy, the Local Global Chan-Vese. The user can switch the energy he is using at any time.




Optional Visualization

Step 12.) (Optional) Turn on “Volume Rendering” of the label image in 3D (notice the parameters set for faster interaction). This will be updated during the evolution

VolumeRederingOnMeningioma.png



Step 13.) Examine the current segmentation by flipping through the 2D viewers, providing input as in Step.9 to guide the evolution.

ExampleUIDuringProcess.png


Step 14.) Repeat steps 7-11 (or any subset of them) until convergence to the desired segmentation.

KSliceFinalSegMeningioma.png


Step 15.) Once satisfied with the segmentation, stop KSlice by clicking "Stop Interactive Segmentor"

StopInteractiveSegmenter.png



Panels and their use

There are two parameters to set: the radius that sets the band around the current initialisation in which image data is considered (for Local-Global Chan-Vese energy) and the number of contour iterations. A large radius means data from far lying regions influences the segmentation (this increases the computational complexity). A small radius ensures that only nearby pixels influence the contour (but set too small will require a better contour initialisation from the user). The number of iterations refers to the time for which the segmenting surface is allowed to evolve before querying the user for input. A small number allows the user to catch the surface before a large error is made, reducing corrective inputs required but may be tedious/slow.









References

  • Kolesov, I., Karasev, P., Muller, G., Chudy, K., Xerogeanes, J., and Tannenbaum, A., “Human supervisory control framework for interactive medical image segmentation,” in International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI) Computational Biomechanics for Medicine Workshop, Proceeding of the, 2011.
  • Karasev, P., Kolesov, I., Chudy, K., Muller, G., Xerogeanes, J., and Tannenbaum, A., “Interactive mri segmentation with controlled active vision,” in IEEE Conference on Decision and Control, Proceedings of the, IEEE, Dec. 2011.
  • Karasev, P., Kolesov, I., Fritscher, K., Vela, P., Mitchell, P., and Tannenbaum, A.. “Interactive Medical Image Segmentation using PDE Control Of Active Contours”. In: Medical Imaging, IEEE Transactions on (In Submission) (2013)
  • Xerogeanes, J., Mitchell, P. , Karasev, P., Kolesov, I. and Romine, S. . “An Anatomic and Morphologic Evaluation of the Quadriceps Tendon Using 3D MRI Reconstruction: Applications for ACL Autograft Choice and Procurement”. In: Journal of Bone and Joint Surgery (In Submission) (2013)


Information for Developers