2nd VPH NoE Workshop on Toolkit Hands-on Training

Results

Tools Developed during the Workshop

Large Data Reading, Processing and Visualisation

(AMC Amsterdam, Inria, DKFZ)

The processing and visualisation of large datasets remains a significant challenge when dealing with biomedical images. In order to demonstrate the capabilities of open-source tools for dealing with some aspects of this, John Stark (Inria) developed and disseminated a prototype application during the VPH meeting using the ITK and VTK toolkits.

Attendees from AMC presented a sample challenge, whose datasets are frequently larger than 2Gb, composed of 3D images of order 1000 pixels along each dimension. This raises the following constraints to an application dealing with these images:

VTK and ITK use the concept of streaming to deal with these issues. This allows a sub-volume of data to be requested from a processing pipeline, without loading the whole volume. Filters that require information from neighbours are able to pad the requested region with additional pixels, while (hopefully) not requiring the whole image. It should be noted that not all filters or data readers support this feature.

A Niftii format input file was used for the input data, as the reader is known to be capable of streaming. This means that it can create a sub-volumes from the image file, without needing to store the whole image in memory.

A visualisation of the coronary arterial network data in 3D was created, which is composed of two parts (see image, heart data from AMC):

In order to visualise the whole data volume a sub-sampled version of the data is created. This uses subsampling by a factor of 4 in all directions, and is composed by iterating over sub-volumes of the image to generate a single sub-sampled volume of the whole image. This iteration is performed automatically using a vtkImageDataStreamer from the standard VTK distribution. In this way, the whole image is never in memory at the same time.

The high resolution region is extracted by requesting a specific region from the VTK pipeline (vtkDataObject::SetUpdateExtent). The region is controlled using an adjustable VTK widget (vtkBoxWidget). This is used to set an extent that is also excluded from the sub-sampled visualisation. This ensures that the high-resolution and low-resolution isosurfaces are not present in the same region of space.

Some demo code performing the streaming is available on the Asclepios public GitHub repository.

Processing of 2D radiographic images

(EOS Imaging, TIMC, UCL, ISTB)

The aim was to test tools in order to filter images (noise removal) and register images (dual energy). Different possible solutions were identified:

UCL was able to investigate the registration of multiple time-point images taken from the EOS Scanner using NiftyReg software. During the workshop, initial results were promising, and EOS imaging took the software away for further study.

Discussion on Interoperability

(All, lead by DKFZ)

Command line module usage

In an effort to improve interoperability between the different platforms represented in the workshop, a working group focused on the Slicer Execution Model. This model is seen as a first, easy to implement solution towards more tool interoperability. A tighter interoperability can be provided via the usage of a common software plug-in format, but this means adapting the platform's core plug-in architecture, which can be challenging for already existing software. As recommended in the VPH Toolkit Guideline focusing on Interoperability (see [1]), this leads the way towards algorithm sharing between institutions and the possible creation of complex multidisciplinary workflows. This is also very interesting for small groups who focus on algorithm development and do not want to invest into creating their own visualisation software.

Defined by the Slicer community (see [2]), the execution model consists in a simple self-describing command line application that can emit a description of its command line arguments (in an XML format). Software platforms can then implement Graphical User Interface (GUI) generation using the arguments description. This functionality is provided in tools such as Slicer [3] and Gimias [4]. The CTK group is looking into integrating such GUI generation to provide a generic implementation.

Slicer have provided functionality that enables a third party command line program to be easily plugged into the Slicer frond-end, complete with a run-time generated Graphical User Interface (GUI). The mechanism involves minimal modifications to the third party program and an XML file to describe the GUI. The VPH group agreed that this was a low cost entry point, and particularly interesting if the functionality gets merged into CTK (http://www.commontk.org/), and then become available to all.

Questions raised

All participants need to read the available documentation on the Slicer Wiki

Todo

DICOM App Hosting Discussion

Open questions

Work items during the workshop

During the workshop, technologists from the VPH consortium discussed various methods to make their software interoperable. The representatives from UCL worked to integrate their image registration software NiftyView (http://cmic.cs.ucl.ac.uk/home/software/) into the Slicer platform (http://www.slicer.org/). This goal was achieved within the timeframe of the workshop, and UCL plan to add this to their NiftTK platform.

Workplan until next workshop

Link with the Common Toolkit (CTK)

This event took place right after the Common Toolkit Hack-fest, which was also hosted by Inria in Sophia-Antipolis the previous week (November 14-18th 2011). This proximity will allow exchange between the 2 communities, and participants from either event are encouraged to collaborate with the other. Participants to the CTK hack-fest include companies such as Kitware, Isomics,  Offis, and Siemens, and research institutions such as the DKFZ, Harvard Medical School,  Laboratorio di Tecnologia Medica (Bologna, Italy), and many others.

Documents

Please find an MS Doc version of this report there: NoEworkshop.docx