Difference between revisions of "Projects:RegistrationLibrary:RegLib C43"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(14 intermediate revisions by one other user not shown)
Line 7: Line 7:
 
=== Input ===
 
=== Input ===
 
{| style="color:#bbbbbb; " cellpadding="10" cellspacing="0" border="0"
 
{| style="color:#bbbbbb; " cellpadding="10" cellspacing="0" border="0"
|[[Image:RegLib_C43_Thumb1.png|150px|lleft|this is the main fixed reference image. All images are ev. aligned into this space]]  
+
|[[Image:RegLib_C43_Thumb1b.png|150px|lleft|this is the main fixed reference image. All images are ev. aligned into this space]] [[Image:RegLib_C43_Thumb1.png|150px|lleft|this is the main fixed reference image. All images are ev. aligned into this space]]  
 
|[[Image:RegArrow_Rigid.png|70px|lleft]]  
 
|[[Image:RegArrow_Rigid.png|70px|lleft]]  
|[[Image:RegLib_C43_Thumb2.png|150px|lleft|this is the moving image]]  
+
|[[Image:RegLib_C43_Thumb2b.png|150px|lleft|this is the moving image]][[Image:RegLib_C43_Thumb2.png|150px|lleft|this is the moving image]]  
 
|-
 
|-
 
|baseline model
 
|baseline model
Line 17: Line 17:
  
 
=== Modules ===
 
=== Modules ===
*'''Slicer 3.6.3 recommended modules: [http://www.slicer.org/slicerWiki/index.php/Modules:BRAINSFit BRAINSFit]
+
*Preprocessing
 +
** [https://www.slicer.org/wiki/Modules:Editor-Documentation-3.6 Editor]
 +
**[https://www.slicer.org/wiki/Modules:ModelMaker-Documentation-3.6 Model Maker] module
 +
**[https://www.slicer.org/wiki/Modules:VotingBinaryHoleFilling-Documentation-3.6 Binary Hole Filling]  module
 +
*Registration
 +
**'''Slicer 3.6.3 recommended modules: [https://www.slicer.org/wiki/Modules:PythonSurfaceICPRegistration-Documentation-3.6 Surface Registration] module
  
 
===Objective / Background ===
 
===Objective / Background ===
Line 31: Line 36:
  
 
===Input Data===
 
===Input Data===
*fixed:  segmented CT , 0.6 x 0.6 x 0.40 mm voxel size, axial; 292 x 292 x 91 unsigned short image
+
*fixed:  segmented CT "intact_seg", 0.4 x 0.4 x 0.4 mm voxel size, axial; 284 x 262 x 148 unsigned short image
*moving: segmented CT , 0.6 x 0.6 x 0.40 mm voxel size, axial; 512 x 512 x 107 unsigned short image
+
*moving: segmented CT "defect_seg", 0.5 x 0.5 x 0.50 mm voxel size, axial; 221 x 206 x 113 unsigned short image
 +
 
 +
===Download ===
 +
*Data
 +
**[[Media:RegLib_C43_Data.zip‎|'''RegLib_C43_Data''': Example Dataset <small> (CT images, Presets, Solution, zip file 35 MB) </small>]]
 +
*Presets
 +
**[[Media:RegLib_C43_Presets.mrml‎|'''RegLib_C43_Presets.mrml''': registration parameter presets<small> (.mrml text file 12 kB) </small>]]
 +
 
  
 
=== Procedure / Pipeline ===
 
=== Procedure / Pipeline ===
 
#Open case scene file or import image data: RegLib_C43_SlicerScene1.mrml
 
#Open case scene file or import image data: RegLib_C43_SlicerScene1.mrml
 
#Preprocess segmentation for building surface models
 
#Preprocess segmentation for building surface models
##we need to fill in the interior of the vertebral body, we use the morphological closing (Editor) and hole filling module
+
##we need to fill in the interior of the vertebral body, we use the morphological closing ([https://www.slicer.org/wiki/Modules:Editor-Documentation-3.6 Editor]) and [https://www.slicer.org/wiki/Modules:VotingBinaryHoleFilling-Documentation-3.6 Binary Hole Filling] module
##go to Editor
+
##go to the [https://www.slicer.org/wiki/Modules:Editor-Documentation-3.6 Editor]
## select the intact_seg volume as label map to edit
+
###select "intact_CT" as master volume and "intact_seg" volume as label map to edit
##Select diliation tool, click on 8-neighbor checkbox for connectiviy, click ''Apply''
+
###Select the ''Dilation'' tool, click on 8-neighbor checkbox for connectiviy, click ''Apply''
##Select erosion tool, click on 8-neighbor checkbox for connectiviy, click ''Apply''
+
###Select the ''Erosion'' tool, click on 8-neighbor checkbox for connectiviy, click ''Apply''
 
+
##go to the [https://www.slicer.org/wiki/Modules:VotingBinaryHoleFilling-Documentation-3.6 Binary Hole Filling]  module
agittal view and note the inverted axis orientation
+
###Select the "intact_seg" volume as input
#Flip axis
+
###Set Radius to 11,11,11
##Go to the [http://www.slicer.org/slicerWiki/index.php/Modules:Data-Documentation-3.6 Data module]
+
###Create a new output volume, rename to "intact_segfilled" or similar
###right-click on the ''Scene'' node and select "Insert Transform Node" from the menu
+
###click ''Apply''
###select the newly created transform node, then in the ''MRML Node Inspector'' below, rename it to "Xf0_AxialFlip"
+
#repeat above preprocessing for the second segmentation "defect_seg"
###select the "T10intact" node and drag it inside/on top of the "Xf0_AxialFlip" node
+
#Build Surface Models
###ensure you have T10intact selected for background and the fade slider set on background (B) so you can see changes happening.
+
##go to the [https://www.slicer.org/wiki/Modules:ModelMaker-Documentation-3.6 Model Maker] module
##Go to the [http://www.slicer.org/slicerWiki/index.php/Modules:Transforms-Documentation-3.6 Transforms module]
+
##Select preprocessed (see above)  "intact_segfilled" as input volume
###Select "Xf0_AxialFlip" from the ''Transform Node'' menu
+
##Create a new model hierarchy that will contain both models
###In the 4x4 matrix displayed, click in the field containing the "1.0000" in row 3 and column 3.
+
##Change model name to "intact_model1" or similar
###hit Return key to activate editing
+
##set ''Labels'' field to 1.
###change the number to -1. Hit Enter.
+
##'''un'''check the ''Skip Un-Named Labels'' box
###you should see the image flip in the sagittal and coronal slice views
+
##increase ''Smooth'' parameter to 50
#Crop Volumes
+
##increase ''Decimate'' parameter to 0.35
##Go to the [http://www.slicer.org/slicerWiki/index.php/Modules:CropVolume-Documentation-3.6 Crop Volume module]
+
##'''un'''check boxes for ''Split Normals, Point Normals, Pad''
##select "T10intact" as ''Input Volume''; select "Create new MRML ROI Node" in the ''ROI'' menu, select "create new volume" in the ''Output Volume" menu
+
##click '' Apply''
##you should see a small blue rectangle in all 3 views. Click in the views to expand the region to contain only the L4 vertebra (body and processes)
+
##Repeat for second labelmap "defect_segfilled"
##when finished, click on ''Do ROI resample''
+
##go to [https://www.slicer.org/wiki/Modules:Models-Documentation-3.6 Models] module
##go to back to the [http://www.slicer.org/slicerWiki/index.php/Modules:Data-Documentation-3.6 Data module] and change the name of the new "SubVolume" to "T10intact_crop"
+
##select both models and change the color by clicking on the ''Set Color..'' field
##delete the ROI nodes (right click: delete node)
+
##set Opacity slider for one of the models to ~0.8
##repeat the same for the "T10defect" image
+
#Surface Registration
#Registration
+
##Note that Surface Registration on Slicer version 3.6.3 on some platforms may not operate properly (as of Aug. 2011). '''Slicer v.3.6.4''' is recommended
##Go to the [http://www.slicer.org/slicerWiki/index.php/Modules:BRAINSFit BRAINSfit module]
+
##go to [https://www.slicer.org/wiki/Modules:PythonSurfaceICPRegistration-Documentation-3.6 Surface Registration]] module
###''''Presets''': select the "BRAINSFit_Affine" from the parameter set menu. See [[Projects:RegistrationDocumentation:ParameterPresetsTutorial|here for a guide]] on how to Load/Save Registration Parameter Presets]]
+
##''Landmark transform node'': select ''Rigid''
###otherwise select the following parameters:  
+
##Max. number of iterations: increase to 150
###''Fixed Image Volume'': :T10intact_crop ; ''Moving'': T10defect_crop
+
##max. number of landmarks: increase to 500
###check boxes for "Moments align", ''Include Rigd registr. phase'' , ''Include ScaleVersor3D'', ''include Affine''
+
##check box for ''start by matching centroids''
###''Slicer Linear Transform'': select "create new transform", rename to "Xf1_Affine" or similar
+
##''Input Surface'': select "defect_model"
###leave rest at defaults. Click ''Apply''
+
##''Target Surface'': select "intact_model"
###registration should take ~ 10 secs.
+
##''Output Transform'': select "New Transform", rename to "Xf1_defect-to-intact_Rigid" or similar
###use fade slider to verify alignment; compare with result snapshots shown below.
+
##click ''Apply''
 +
#Go to the [https://www.slicer.org/wiki/Modules:Data-Documentation-3.6 Data module]
 +
##select the "defect_model" node and drag it inside the newly generated transform node
 +
##go to the 3D view and drag the mouse to force a display update. You  should see the alignment of the two surfaces
 +
##to resample: select ''Harden Transforms'' from the right-click popup menu associated with the model
 +
##to resample image and labelmaps: drag into transform node and also select ''Harden Transforms'' , or use the dedicated [https://www.slicer.org/wiki/Modules:ResampleScalarVectorDWIVolume-Documentation-3.6 Resampling module]
  
 
=== Registration Results===
 
=== Registration Results===
[[Image:RegLib_C39_unreg.gif|400px|original unregistered]] unregistered <br>
+
[[Image:RegLib_C43_unregistered.gif|400px|original unregistered]] unregistered <br>
[[Image:RegLib_C39_reg.gif|400px|registered (after flipping axis and cropping volume)]] registered <br>
+
[[Image:RegLib_C43_registered_Model1.gif|200px|registered models]][[Image:RegLib_C43_registered_Model2.gif|200px|registered models]] surface registration <br>
 
 
===Download ===
 
*Data
 
**[[Media:RegLib_C39_Data.zip‎|'''RegLib_C39_Data''': Example Dataset <small> (CT images, Presets, Solution, zip file 30 MB) </small>]]
 
*Presets
 
**[[Media:RegLib_C39_Presets.mrml‎|'''RegLib_C39_Presets.mrml''': registration parameter presets<small> (.mrml text file 12 kB) </small>]]
 
  
 
=== Acknowledgments ===
 
=== Acknowledgments ===

Latest revision as of 18:07, 10 July 2017

Home < Projects:RegistrationLibrary:RegLib C43

Back to ARRA main page
Back to Registration main page
Back to Registration Use-case Inventory


v3.6.3 Slicer3-6Announcement-v1.png Slicer Registration Library Case 43: Surface registration of 3D vertebra models

Input

this is the main fixed reference image. All images are ev. aligned into this space this is the main fixed reference image. All images are ev. aligned into this space lleft this is the moving imagethis is the moving image
baseline model follow-up model: contains defect and is acquired in different orientation

Modules

Objective / Background

This dataset contains 3D modls obtained from in vitro CT of a human vertibral body segment (L4) before and after regional damage. Goal is to align the two models to study in detail the local changes that occurred and obtain estimates of structural integrity loss. Because the two orientations differ widely between acquisitions image-to-image registration has reduced robustness due to difficulty in initializing a good starting condition. Surface registration on the other hand is very robust toward strong difference in pose and he ce makes a good candidate for obtaining a fully automated first alignment.

Keywords

CT, spine cancer, vertebrae, surface registration, 3D models, model registration

Issues Challenges

  • two images have very different spatial origins (as defined in original DICOM header): recenter first
  • the initial segmentation obtained by thresh Leung the CT image is very sparse and not suitable for model generation as is. Morphological operators will have to be applied to generate a meaningful label map to build models from.
  • the two models differ significantly in rotational alignment

Input Data

  • fixed: segmented CT "intact_seg", 0.4 x 0.4 x 0.4 mm voxel size, axial; 284 x 262 x 148 unsigned short image
  • moving: segmented CT "defect_seg", 0.5 x 0.5 x 0.50 mm voxel size, axial; 221 x 206 x 113 unsigned short image

Download


Procedure / Pipeline

  1. Open case scene file or import image data: RegLib_C43_SlicerScene1.mrml
  2. Preprocess segmentation for building surface models
    1. we need to fill in the interior of the vertebral body, we use the morphological closing (Editor) and Binary Hole Filling module
    2. go to the Editor
      1. select "intact_CT" as master volume and "intact_seg" volume as label map to edit
      2. Select the Dilation tool, click on 8-neighbor checkbox for connectiviy, click Apply
      3. Select the Erosion tool, click on 8-neighbor checkbox for connectiviy, click Apply
    3. go to the Binary Hole Filling module
      1. Select the "intact_seg" volume as input
      2. Set Radius to 11,11,11
      3. Create a new output volume, rename to "intact_segfilled" or similar
      4. click Apply
  3. repeat above preprocessing for the second segmentation "defect_seg"
  4. Build Surface Models
    1. go to the Model Maker module
    2. Select preprocessed (see above) "intact_segfilled" as input volume
    3. Create a new model hierarchy that will contain both models
    4. Change model name to "intact_model1" or similar
    5. set Labels field to 1.
    6. uncheck the Skip Un-Named Labels box
    7. increase Smooth parameter to 50
    8. increase Decimate parameter to 0.35
    9. uncheck boxes for Split Normals, Point Normals, Pad
    10. click Apply
    11. Repeat for second labelmap "defect_segfilled"
    12. go to Models module
    13. select both models and change the color by clicking on the Set Color.. field
    14. set Opacity slider for one of the models to ~0.8
  5. Surface Registration
    1. Note that Surface Registration on Slicer version 3.6.3 on some platforms may not operate properly (as of Aug. 2011). Slicer v.3.6.4 is recommended
    2. go to Surface Registration] module
    3. Landmark transform node: select Rigid
    4. Max. number of iterations: increase to 150
    5. max. number of landmarks: increase to 500
    6. check box for start by matching centroids
    7. Input Surface: select "defect_model"
    8. Target Surface: select "intact_model"
    9. Output Transform: select "New Transform", rename to "Xf1_defect-to-intact_Rigid" or similar
    10. click Apply
  6. Go to the Data module
    1. select the "defect_model" node and drag it inside the newly generated transform node
    2. go to the 3D view and drag the mouse to force a display update. You should see the alignment of the two surfaces
    3. to resample: select Harden Transforms from the right-click popup menu associated with the model
    4. to resample image and labelmaps: drag into transform node and also select Harden Transforms , or use the dedicated Resampling module

Registration Results

original unregistered unregistered
registered modelsregistered models surface registration

Acknowledgments