2012 Project Week:4DImageSlicer4
- BWH: Andrey Fedorov
- Isomics: Steve Pieper
- BWH: Junichi Tokuda
- MGH: Jayashree Kalpathy-Cramer
- GE: Emma Zhu
- GE: Jim Miller
- Kitware: Jean-Cristophe Fillion-Robin
To discuss the architecture and work on implementing support for 4d images in Slicer4.
Our primary use case is to provide support for IO and visualization of DCE MRI, with the application specifically to prostate imaging.
Discuss the architecture and implementation approach, specifically should address:
- user experience
- interoperability with the ITK-based analysis tools
The design of the module has been discussed, implementation is underway.
We introduced a new MRML node named "VectorImageContainer" to encapsulate DWI node and provide generic functionality for operating 3D+1 images. This module can be used not only for time series visualization (3D+t), but in other applications (e.g., T1 and T2 estimation: 3D+RepetitionTime, 3D+FlipAngle). The node will also contain metadata to identify the type of the information stored in the vectors, and the labels for each element.
Support for VectorImageContainer will be provided by several modules:
- VectorImageImporter: wizard-based Python module to provide different mechanisms to create VectorImageContainer from options like single DICOM series, a set of 3D volumes on disk, an existing DWI volume, or collection of existing ScalarVolumeNodes. (implementation not started)
- VectorImageExplorer: C++/Python module to support user interaction with VectorImageContainer: scroll in the fourth dimension, probe data at a selected location, plotting of the curves (implementation in progress available on github: VectorImageExplorer. As of now, this module allows to scroll in fourth dimension, probe data and display vector as a string in the module GUI. Next step is to add plotting.
JC helped a lot with the implementation. As part of the module development, several issues related to integrated C++/Python approach to implementing loadable modules were identified and resolved by JC.
Jim is in the final stages of integrating new charting capabilities into Slicer4 trunk, we are ready to use them in this project as soon as they are available.
Progress since project week: modules renamed, planned for inclusion in Slicer 4.1:
This work will be delivered to the NA-MIC Kit as a Slicer4 extension.
Monday discussion: Andrey, Junichi, Jayashree, Steve
Implementation plan we agreed upon will include several separate components:
- Importing DCE into Slicer:
- Develop a custom DCE import wizard. The user will specify the directory that contains the DICOM series. The module will internally use DicomToNrrdConverter to create a NRRD volume from a DICOM DCE series, and also will parse the DICOM files to get the timestamps, FA and TR acquisition parameters. It will create a custom time series MRML node (TS-node) that will reference a DWI node storing the data (that one will be invisible to the user from Slicer GUI). TS-node will also keep a pointer to a value pair collection that will keep timestamps, TR and FA.
- Data interaction
- Develop custom DCE exploration module. This will provide functionality similar to Volumes module but scroll over timestamps. Will also potentially allow to create plots and probe time series data.
- Several mechanisms will be used:
- DWI NRRD + DWI storage node to save/restore the data content; dictionary will be saved in the MRML scene as value pairs; DWI NRRD raw part will also be referenced by a DCE-specific NRRD header, which would be readable by conventional ITK readers to support interoperability with other tools.
- Several mechanisms will be used:
- Andrey: mock design of TS-node, individual modules. MRML nodes -- C, GUI/interaction -- python (?).
- Jayashree: test whether DicomToNrrdConverter can correctly handle Siemens DCE/DSC MRI.
Our initial plan was to follow on the steps of the DWI support already present in Slicer4, as discussed below.
Considering input from Steve, the ambitions were down-scaled.
Approaches to consider:
- use DicomToNrrdConverter to make a fake DWI from a DCE series
- use custom module to inject timestamps into the DWI volume node, as if these were B-values. This way we can store timestamps together with the data.
- provide custom GUI perhaps using a specialized module that would reuse DWI display node for vosualization, but will add
- time scroller instead of the B-value scroller
- plotting area for visualizing time curves
- support for interactive selection of spatial location using mouse/keyboard or fiducial
- Port the 4D Image and Analysis modules from Slicer3
We should consider the following aspects of the architecture and implementation:
- develop a customized NRRD format that would store time stamps for the individual frames. There is no currently such format. There is similar precedent in DicomToNrrdConverter and DWI support.
- introduce new module, similar to DicomToNrrdConverter (or an option of operation for the DicomToNrrdConverter?) to convert a DICOM study into the customized format
- introduce new storage nodes into Slicer4 that would enable IO of the customized NRRD format
- discuss how the 4D MRI node would be related to the existing hierarchy of the volumes in Slicer -- should DWI and 4D MRI be siblings?
- anecdotally, very efficient visualization of 4D MRI studies is already possible by reading them as a DWI volume following DicomToNrrd module conversion.
- an idea is to provide a custom GUI panel in the Volumes module. This would be similar to DWI visualization panel, but would include a field for displaying time stamps instead of b-values.
- organize the time points in an hierarchy?
- tool to add, remove time points
- tool to provide a time range (start, end) instead of the entire range