Difference between revisions of "Projects:RegistrationDocumentation"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(47 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
[[Category:Registration]]
 
[[Projects:ARRASuplements|Back to ARRA main page]]
 
[[Projects:ARRASuplements|Back to ARRA main page]]
 
==Use Case Library==
 
==Use Case Library==
[[Image:UseCaseHierarchySnapshot_108Levels.png|150px|right|108 Level Tree]]
+
*'''[[Projects:RegistrationDocumentation:UseCaseInventory| Registration Case Library ]]'''
[[Image:UseCaseHierarchySnapshot_360Levels.png|150px|right|360 Level Tree]]  
+
*'''[[Projects:RegistrationDocumentation:UseCaseAdvertisement|Use Case Sharing Advertisment Page]]'''
*this will contain a list of the most common scenarios encountered for Slicer Registration. Each case will contain a dataset, a parameter set, a guided tutorial with example result. The hierarchy will be represented graphically as a tree and as a list with links to the abovementioned data. The library will be as exhaustive as possible, containin brain and non-brain, different modalities (MRI, CT, PET/SPECT).
+
*[[Projects:RegistrationDocumentation:UseCaseInventoryNotes|Notes & concepts about the Registration Case Library]]
*considered is also a list of troubleshooting cases, i.e. a list of the most common sources of registration failure, again complete with dataset, tutorial and remedy.
+
 
*the organization of a use case hierarchy can be accomplished in several ways. The main categories are listed below. Not all combinations exist or are equally common occurrences. For example, a different-timepoint/contrast distinction is not necessary for inter-subject registration.
+
== Development Efforts ==
**'''ORGAN''': Brain, Head&Neck, Thorax, Abdomen&Pelvis, Limbs, WholeBody
+
*Slicer4: '''[[Projects:RegistrationDocumentation:Developer4|Notes & feedbacl for GUI and algorithm implementation. Testing Summaries]]'''
**'''SUBJECT''': intra-subject, inter-subject
+
*Slicer3: [[Projects:RegistrationDocumentation:Developer|Notes & ideas for GUI and algorithm implementation. Discussion platform with the developer group]]
**'''MODALITY''': intra-modality, inter-modality
+
*[[Projects:RegistrationDocumentation:RegEval_Anisotropy|'''Effects of Voxel Anisotropy and Intensity-Inhomogeneity on Image-Based 3D Registration''' ]]
**'''CONTRAST''': same_Contrast, different_Contrast
+
*[[Projects:RegistrationDocumentation:Benchmarking|'''Benchmarking''']]
***MR, CT, PET+SPECT, US
+
*[[Projects:RegistrationDocumentation:ParameterTesting|Parameter Exploration]]
***T1, T2, PD, T2s, DTI, MRPerfusion
+
*[[Projects:RegistrationDocumentation:Evaluation|Result Evaluation & Visualization]]
**'''CONTENT''': same_TimeOrContent, different_TimeOrContent
+
*[[Projects:RegistrationImprovement|Kitware Wiki on developer efforts]]
**'''VIEW''': same_View, different_View
 
*Depending on grouping this leads to trees with 80-1080 entries. Two example hierarchies (directory trees) are here: [[Media:UseCaseHierarchy_108Levels.zip|108 Level Tree]] , [[Media:UseCaseHierarchy_360Levels.zip|360 Level Tree]]
 
*the '''VIEW''' distinction arises from commonly occurring problems of co-registering sets acquired with different slice orientation. The basics of dealing with axis orientation is already integrated into the algorithm, but further details remain: basically different_view implies a possibly high voxel size ratio (i.e. different voxel sizes if one image acquired axial the other coronal). Actions/Parameter settings are with multi-resolution settings, blurring and special checking of the axis orientation (vox2ras) meta-data. If, for example,voxel size ratio is close to [1 1 1] we need not do anything different other than resample based on vox2ras.
 
*No separate distinction for '''Atlas Registration''', i.e. the case where the volume of interest is not the one used for calculating the transform.
 
*'''User-populated content''' The exploding # of combinations makes a successful top-down approach difficult. More effective to organize bottom-up, i.e. have user invited content, which we organize into a growing tree. We can make a call to the user community for submitting datasets and registration problems. This call should be in the "Register Images" Documentation as well as the "Help&Acknowledgement" tab of the  "Register Images" module. e.g.  Post a link on the documentation pages and module info tabs: ''Having trouble with registration? Try our service''.  We will consider all cases, provided that you have already tried what we do offer on the library and that did not work. If it didn't then that speaks for having your case added. Advertisement draft: [[Projects:RegistrationDocumentation:UseCaseAdvertisement|Use Case Sharing Advertisment Page]]
 
  "if you have an interesting registration problem that is not yet covered in our library,
 
  send us your  case: we will post it along with our best registration solution/strategy.
 
  If you agree to the posting of the '''anonymized''' image data, you get a free registration,
 
  the user community gets a new example case. Everybody wins."
 
* <span style="color: rgb(50, 180, 0);">List of cases collected/inventoried thus far is here:</span>[[Projects:RegistrationDocumentation:UseCaseInventory]]
 
  
 
==Reference Manual==
 
==Reference Manual==
*[[Projects:RegistrationDocumentation:ReferenceManual|Draft Registration Reference Manual, explaining all parameters in detail]]
+
*The reference manual will be organized by submodules and contain detailed descriptions of each parameter and each control element within the slicer registration module. The description should help the user understand what exactly that function/parameter does and if/how useful it will be for their specific registration problem.
*This will contain detailed descriptions of each parameter and each control element within the slicer registration module. The description should help the user understand what exactly that function/parameter does and if/how useful it will be for their specific registration problem
+
* Each entry will have one short description (that could also serve as tooltip) and one longer, more technical explanation.
*Preferred formats:  Slicer Wiki, maybe PDF
+
* links to journal articles for in depth algorithm info
 +
*Preferred formats:  Slicer Wiki, maybe PDF, cross-linking required
 +
*'''[[Projects:RegistrationDocumentation:ReferenceManual|Draft Registration Reference Manual]]'''
  
==User Manuals==
+
==User Manuals & Tutorials==
*this documentation will discussing the main registration module functionality as a whole, focusing not on the individual controls but the main workflow.
+
*[https://www.slicer.org/wiki/Slicer3:Registration#Registration_in_3D_Slicer|'''Main Registration Portal Page''']
formats: Slicer Wiki, PowerPoint.  
+
*[[Media:NCIGT2010_RegistrBreakout_Slides_v3_1.ppt|'''Registration Basics, Registration Tools & User Support in Slicer''' (Powerpoint, 14MB)]]
*Also included in this category are Background Tutorials, explaining the basics of registration, formats: PowerPoint. Minimal understanding of the inner workings of a registration optimization algorithm is essential to understand and judge the results obtained and obtainable.
+
*[https://www.slicer.org/wiki/Slicer-3-6-FAQ '''FAQ & Cookbooks''']
==Training Video Tutorials==
+
*The user manual will contain a systematic overview of registration functionality within 3DSlicer. formats: Slicer Wiki, PowerPoint.  
 +
**[[Projects:RegistrationDocumentation:UserManual|Draft Registration User Manual]]
 +
**[[Projects:RegistrationDocumentation:DocumentationResources|notes and documentation resources]]
 +
*Tutorials will be case oriented and always demonstrate a particular task or feature
 +
**[[Projects:RegistrationDocumentation:VideoTutorials|Video Tutorials: showcase of specific workflow]]
 +
**Background Tutorials, explaining the basics of registration, formats: PowerPoint. Minimal understanding of the inner workings of a registration optimization algorithm is essential to understand and judge the results obtained and obtainable.
  
[[Image:TrainingMovieThumbnail.jpg|thumb|frame| [[Media:VideoTutorialDemo_v1_0.mov|Training Movie Demo (1min)]]]]
+
== Contact ==
*These movies contain step by step instructions, running through each of the use-cases described above.
+
*if there is anything you think would be of help to the 3DSlicer registration user, be that documentation, examples or features, we'd love to hear about it:
*An example of the features/character of a video tutorial is here: [[Media:VideoTutorialDemo_v1_0.mov]]
+
**any questions/concerns are welcome on the slicer user mailing list: mailto:slicer-users@bwh.harvard.edu
*video tutorials have become a popular and widespread form to document GUI interactions, particularly tutorials
+
**particular questions/concerns re. these pages or Registration Documentation drop a line to mailto:meier@bwh.harvard.edu
* they can have almost  the quality of direct tutoring
+
----
*they are compact in length and filesize (because the changes are local and small over time, MPEG compression is very effective with little quality loss), which makes them ideal for online distribution
 
*movie viewing capability is mainstream, i.e. all OS will have this capability, viewers can be downloaded for free
 
*the audio track can provide main instructions, motivation, commentary and an abundance of detail information at the right juncture, something very difficult to provide in other formats without overloading a tutorial
 
*the step by step interaction is captured unambiguously. We do not spend a lot of time and space in showing slides with screen captures.
 
*since they are easy to make and great software is inexpensive, potential use even for developer communication can be considered, e.g. to document complex bugs
 
*they have a low usage threshold, i.e. users are more inclined to watch a video than to dig through a power point presentation
 
*they are not all that useful for reference or main documentation material, e.g. a tutorial on main registration concepts is probably still better in PPT.
 
*formats: video files (quicktime, WMV, mp4 , Flash), optimized for streaming or download
 
  
== GUI Concepts & Development  ==
+
== Links ==
.
+
*[[Downloads|Data links]]
*[[Projects:RegistrationDocumentation:Developer|This contains concepts and ideas for GUI and algorithm implementation]
+
*[https://www.predict-hd.net huntington data]
*[[Projects:RegistrationImprovement|Developer efforts (Kitware)]]
 
 
 
*'''Parameter Presets:''' To navigate the jungle of parameter settings and avoid complex GUI design efforts, all parameters are listed and controllable via a preset dropdown menu. The menu can then be labeled by use cases i.e. combinations of MR-MR, same contrast, inter-subject, inter-modality, fast, precise etc. Parameter sets can be saved to files and shared. Each preset becomes a menu entry. This will enable building a library of presets that can be shared among users also.
 
*'''Module Design''':  Separate those functions that use different algorithms and cost functions. Top level distinction Fiducials/Intensity seems most intuitive. As the user I then combine my workflow from the selection below. We also have a clean modular design where changes in one do not that easily spill over to the other.Hence we'd have the following sub-modules within ''Registration'':
 
:;1. ''Manual Affine'': interactive visual alignment with  6-12 DOF using Transforms module. This is a good tool for cases in need of an initialization.
 
:;2. ''Fiducials Affine'': solves Procrustes registration problem with 6-12 DOF using ICP or similar Input: fiducial pairs. This is the final destination for registration that cannot be accomplished otherwise.
 
:;3. ''Fiducials BSpline'': creates an interpolation grid from fiducials (Krigging or similar): Input: fiducial pairs
 
:;4. ''Intensity Affine'': creates Affine Xform, Input:  image pair
 
:;5. ''Intensity BSpline'': creates BSpline Xform, Input: Affine aligned image pair.
 
:;6. ''Xform Concatenation'': combines multiple Xforms
 
:;7. ''Interpolator'':applies Affine and/or BSpline Xform and resamples image data
 
:;8. ''Evaluation'': registration quality assessment. This may be better integrated with each of the above modules instead of a separate module, esp. when using measurements such as final cost function. Visualization also may depend on DOF.
 
*'''Transform Concatenation''': Multiple spatial transforms applied to the same volume appear as nested MRML entries, which could be collapsed. Important to apply before a volume resampling is executed to avoid accumulation of interpolation effects. Affine is simple matrix multiplication, Bspline would have to send the gridpoints through all Xforms and reparameterize. [[Projects:RegistrationImprovement:XFormConcatenation|More Details.]]
 
*'''Recursive DOF hierarchy:''' Both multi-resolution and the sequence of calls with increasing DOF could be implemented as a single recursive scheme. The caller provides an array of DOF and a matching array of resolution levels, which is processed by recursive calls with the first/last element taken from the list. A simulation Matlab program and example is  here: [[Projects:RegistrationImprovement:RecursiveScheme]]
 
:The GUI can list the many combination as a single list of checkboxes for increasing DOF. The full list would be 3,6,7,9,12,b . The checked boxes provide the input string for the recursive call. [[Media:DOFHierarchy_GUI.jpg‎ ]]
 
*'''Tooltip link:'''direct links to Reference Manual from Widget tooltips? Can the static text or widget itself launch a link to the Reference manual entry on the Documentation Wiki? That would enable a one-click answer to "What does this button do?" Casey suggested a little '''?''' button next to each widget. Opportunities exist with the new QT-widget enabled webkit to integrate online documentation live into the application.
 
*'''Offline WIKI''': can the documentation WIKI be downloaded and used offline, e.g. for laptop users?
 
*'''Affine SVD:''' decomposition of affine into the 4 3DOF components: translation, rotation, scaling, shearing. Can an SVD do this for 12DOF vs. 3 DOF? Having values that relate directly to geometry can help greatly in evaluating and adjusting results. E.g. user can tell visually which of the 3 rotations is most out of alignment. Checking the result rotation angles already provides a quick check and valuable info about where things went awry if solution is suboptimal. Also enables to decouple individual elements, i.e. extract the shear component etc. The current "Transforms" module already does this for translation & rotation, but the scale and shear portions are missing.
 
*'''Registration Metrics''': Can we use the [http://www.slicer.org/slicerWiki/index.php/Modules:RegistrationMetrics-Documentation-3.5 Label Map Hausdorff Distance Feature ]   ?
 
*'''Methods design''': We can categorize 2 ways at the top level: Affine/BSpline or Fiducial/Intensity. All 4 combinations will likely use different algorithms: Fiducial+Affine = Procrustes, Fiducial+Bspline = direct fitting/krigging , Intensity+Affine = 12 DOF optimizer, Intensity+BSpline = non-rigid.  Fiducial/Intensity obviously use different cost function, whereas Affine/BSpline is a distinction in spatial DOF. So Fiducial/Intensity seems to be the more intuitive choice as top level distinction.
 
  
----
+
*[[ITK_Registration_Optimization|Register Images Reference Material]]
  
== Links ==
 
 
*[[Events:Registration_Summit_August_2009|Registration Summit Aug'09]]
 
*[[Events:Registration_Summit_August_2009|Registration Summit Aug'09]]
*[http://www.slicer.org/slicerWiki/index.php/Documentation-3.5 Slicer Documentation 3.5]
+
*[[2009_Summer_Project_Week_Slicer3_registration]]
 +
*[https://www.slicer.org/wiki/Documentation-3.5 Slicer Documentation 3.5]
 
*[http://na-mic.org/Mantis/my_view_page.php|Slicer Bug Tracker]
 
*[http://na-mic.org/Mantis/my_view_page.php|Slicer Bug Tracker]
 
*[[AHM_2010]]
 
*[[AHM_2010]]
*[http://www.slicer.org/slicerWiki/index.php/Slicer3:Slicer3Brand#3D_Slicer_Visual_Communication_Guide Slicer Logo & Communication Guide]
+
*[[2010_Winter_Project_Week_RegistrationCaseLibrary|AHM 2010 Project Week: Registration Case Library Project Page]]
 +
*[https://www.slicer.org/wiki/Slicer3:Slicer3Brand#3D_Slicer_Visual_Communication_Guide Slicer Logo & Communication Guide]
 
*NAMIC registration:
 
*NAMIC registration:
 
*Contact: Dominik Meier : mailto:meier@bwh.harvard.edu
 
*Contact: Dominik Meier : mailto:meier@bwh.harvard.edu
Line 89: Line 60:
 
* [http://www.na-mic.org/Wiki/index.php/Vervet_MRI_registration Vervet head MRI atlas-to-subject registration]
 
* [http://www.na-mic.org/Wiki/index.php/Vervet_MRI_registration Vervet head MRI atlas-to-subject registration]
 
* [http://www.na-mic.org/Wiki/index.php/MeningiomaMRIRegistrationStudy Head MRI registration between different timepoints (human subjects, changing pathology present)]
 
* [http://www.na-mic.org/Wiki/index.php/MeningiomaMRIRegistrationStudy Head MRI registration between different timepoints (human subjects, changing pathology present)]
* [http://www.slicer.org/slicerWiki/index.php/Slicer3:Registration Side by side comparisons in slicer2 and slicer3 with data and images]
+
* [https://www.slicer.org/wiki/Slicer3:Registration Side by side comparisons in slicer2 and slicer3 with data and images]
 
* http://mindboggle.info/papers/index.php
 
* http://mindboggle.info/papers/index.php
 
*testing on the Vanderbuild database: [http://www.insight-journal.org/RIRE/ RIRE]
 
*testing on the Vanderbuild database: [http://www.insight-journal.org/RIRE/ RIRE]
 
* [[ITK_Registration_Optimization#Algorithmic_Requirements_and_Use_Cases|ITK Registration Optimization Sets]]
 
* [[ITK_Registration_Optimization#Algorithmic_Requirements_and_Use_Cases|ITK Registration Optimization Sets]]
 +
*[[DTI-non-rigid]]
 +
*[[Projects:DBP2:Harvard:Registration_Documentation:Compare#Case_to_case_registration]]

Latest revision as of 17:41, 10 July 2017

Home < Projects:RegistrationDocumentation

Back to ARRA main page

Use Case Library

Development Efforts

Reference Manual

  • The reference manual will be organized by submodules and contain detailed descriptions of each parameter and each control element within the slicer registration module. The description should help the user understand what exactly that function/parameter does and if/how useful it will be for their specific registration problem.
  • Each entry will have one short description (that could also serve as tooltip) and one longer, more technical explanation.
  • links to journal articles for in depth algorithm info
  • Preferred formats: Slicer Wiki, maybe PDF, cross-linking required
  • Draft Registration Reference Manual

User Manuals & Tutorials

Contact

  • if there is anything you think would be of help to the 3DSlicer registration user, be that documentation, examples or features, we'd love to hear about it:

Links

Bundled Registration and Tests