Abstract
Developing both graphical and command-line user interfaces for neuroimaging algorithms requires considerable effort. Neuroimaging algorithms can meet their potential only if they can be easily and frequently used by their intended users. Deployment of a large suite of such algorithms on multiple platforms requires consistency of user interface controls, consistent results across various platforms and thorough testing. We present the design and implementation of a novel object-oriented framework that allows for rapid development of complex image analysis algorithms with many reusable components and the ability to easily add graphical user interface controls. Our framework also allows for simplified yet robust nightly testing of the algorithms to ensure stability and cross platform interoperability. All of the functionality is encapsulated into a software object requiring no separate source code for user interfaces, testing or deployment. This formulation makes our framework ideal for developing novel, stable and easy-to-use algorithms for medical image analysis and computer assisted interventions. The framework has been both deployed at Yale and released for public use in the open source multi-platform image analysis software—BioImage Suite (bioimagesuite.org).
Similar content being viewed by others
References
Anderson, E., et al. (1999). Lapack user’s guide. SIAM.
Beck, K., & Andres, C. (2004). Extreme programming explained: Embrace change (2nd ed.). Addison-Wesley Professional.
Coronato, A., De Pietro, G, & Marra, I. (2006). An open-source software architecture for immersive medical imaging. In Proceedings of the IEEE international conference on virtual environments, HCI and measurement systems.
Ibanez, L., & Schroeder, W. (2003). The ITK software guide: The insight segmentation and registration toolkit. Kitware, Inc., Albany, NY. www.itk.org.
Lucas, B.C., Bogovic, J. A., Carass, A., Bazin, P.-L., Prince, J. L., Pham, D. L., et al. (2010). The java image science toolkit (jist) for rapid prototyping and publishing of neuroimaging software. Neuroinformatics, 8, 5–17.
Martin, K., & Hoffman, B. (2009). Mastering CMake. Kitware, Inc.
Meltzer, J. A., Zaveri, H. P., Goncharova, I. I., Distasio, M. M., Papademetris, X., Spencer, S. S., et al. (2008). Effects of working memory load on oscillatory power in human intracranial EEG. Cerebral Cortex, 18, 1843–1855.
NVIDIA (2007). NVIDIA compute unified device architecture (CUDA).
Papademetris, X., DeLorenzo, C., Flossmann, S., Neff, M., Vives, K., Spencer, D., et al. (2009a). From medical image computing to computer-aided intervention: Development of a research interface for image-guided navigation. In International journal of medical robotics and computer assisted surgery (Vol. 5, pp. 147–157).
Papademetris, X., Jackowski, M., Joshi, A., Scheinost, D., Murphy, I., Constable, R. T., et al. (2009b). The BioImage suite module description manual. A manual for the BioImage Suite project.
Petersen, K. F., Dufour, S., Savage, D. B., Bilz, S., Solomon, G., Yonemitsu, S., et al. (2007). The role of skeletal muscle insulin resistance in the pathogenesis of the metabolic syndrome. Proceedings of the National Academy of Sciences of the United States of America, 104, 12587–12594.
Pieper, S., Halle, M., & Kikinis, R. (2004). 3D slicer. IEEE international symposium on biomedical imaging ISBI 2004.
Scheinost, D., Blumenfeld, H., & Papademetris, X. (2009). An improved unbiased method for diffspect quantification in epilepsy. IEEE international symposium on biomedical imaging ISBI 2009.
Schroeder, W., Martin, K., & Lorensen, B. (2003). The visualization toolkit: An object-oriented approach to 3D Graphics. Kitware, Inc., Albany, NY. www.vtk.org.
Shen, R., Boulanger, P., & Noga, M. (2008). Medvis: A real-time immersive visualization environment for the exploration of medical volumetric data. In Proceedings of the fifth international conference on biomedical visualization (pp. 63–68).
Smith, C. (2000). [Incr-tcl/tk] from the ground up. McGraw-Hill.
Taksali, S. E., Caprio, S., Dziura, J., Dufour, S., Cali, A. M., Goodman, T. R., et al. (2008). High visceral and low abdominal subcutaneous fat stores in the obese adolescent: A determinant of an adverse metabolic phenotype. Diabetes, 57, 367–371.
Rex, D. E., Ma, J. Q., & Toga, A. W. (2003). The LONI pipeline processing environment. NeuroImage, 19(3), 1033–1048.
VWware Server (2005) http://www.vmware.com/products/server/.
Wolf, I., Vetter, M., Wegner, I., Bottger, T., Nolden, M., Schobinger, M., et al. (2005). The medical imaging interaction toolkit. In Medical image analysis (pp. 594–604).
Acknowledgement
This work was supported in part by the NIH/NIBIB under grant R01 EB006494 (Papademetris, X. PI).
Author information
Authors and Affiliations
Corresponding author
Appendices
A Obtaining and Compiling the Source Code
Since we cater to a wide variety of users, we provide binary distributions as well as source code for expert users. We provide binaries for Windows, Linux and Macs that can be easily installed. On Microsoft Windows, we provide a self-contained installer file that completely automates the procedure. On UNIX derivatives (this includes Linux and the Apple Macintosh Operating System) the procedure involves uncompressing one file in the /usr/local directory or another location of your choice.
A.1 Compiling the Source Code
To compile the source, we use CMake to configure the user environment which then creates appropriate project files (Solutions for Visual Studio, Makefiles for Unix derivatives). To ensure complete compatibility, we ship BioImage Suite with the exact versions of all the software it depends on. This avoids compatibility issues and reduces installation overheads for the user. BioImage Suite includes compatible versions of the Visualization Toolkit (VTK), Insight Toolkit (ITK), Cross Platform Make (CMake), CLAPACK, MySQL, TCL and Grassroots DICOM (GDCM). In the CMake process, these libraries need to be accurately found to ensure an compatibility issues. Once the project files are created, compiling and source code is similar to compiling VTK, ITK and other software that uses CMake. More details including step-by-step instructions and screenshots can be found in Chapter 3—Starting and Running BioImage Suite of our 343-page manual available in HTML and PDF format on our website—www.bioimagesuite.org.
B Integrating an Algorithm into the Framework
In order to use the framework, the actual algorithm has to be written as a C+ + class similar to any VTK class. Once that class is compiled with Tcl wrapping on, it is ready to be tested. Here we look at an example where we create a application that creates a module for the Gaussian Smoothing class in VTK (vtkImageGaussianSmooth).
B.1 Initial Setup
B.2 Class Definition
Each class needs at least three methods (in addition to the constructor). The Initialize method is used to define the lists of inputs, outputs and options. This ends by calling the initialize method of its parent class which will append to these lists and then go on to initialize everything. The GetGUIName method simply gives the “English” name for the class. The Execute method is where the actual execution happens and where the algorithm methods are invoked.
B.3 The Initialize Method
B.4 The Execute Method
The Execute method contains the code that is executed when the user executes the algorithm. The input data as well as the input parameters are obtained and the algorithm is executed. The output image or surface, depending on the algorithm being tested, is saved as per the user’s preference.
Next get the actual input image. This is of type pxitclimage (a wrapper around vtkImageData). For surfaces, we have pxitclsurface, which is a wrapped around vtkPolyData.
This is the actual VTK pipeline code, where vtkImageGaussianSmooth is invoked with the user specified input image and input parameters.
Next we store the output resulting from the execution of the algorithm.
This checks if executable is called (in this case bis_smoothimage.tcl) if it is, then execute
Rights and permissions
About this article
Cite this article
Joshi, A., Scheinost, D., Okuda, H. et al. Unified Framework for Development, Deployment and Robust Testing of Neuroimaging Algorithms. Neuroinform 9, 69–84 (2011). https://doi.org/10.1007/s12021-010-9092-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s12021-010-9092-8