The Visualization Toolkit

the problem: Develop an experimental platform for R&D using infrared imaging in the fewest possible number of months..
complications: The imaging chain was being built around a constantly evolving R&D outcome; the techniques to process the images, from UI to pre-processing and interpretation code, was being laid out as the experiments proceeded. Flexibility would be key in delivery satisfaction on the project.

I discovered The Visualization Toolkit while working on an application in infrared imaging. I was looking for a robust image processing environment that could quickly be adapted to a somewhat specialized imaging chain and a flexible R&D application. This was a fairly near-term assignment under very coarse specifications: the researchers would be composing acquisition and analysis strategies as they went along, but still demanding consistent, laboratory-grade performance.

A quick review of some VTK related information was quite impressive. The original incarnation had lineage going back to GE Medical Systems. This type of two- and three-dimensional medical image capture and reconstruction is very computationally intensive and demanding; most likely, lives are affected by the performance of this class of software. It was, if at least by pedigree, hopefully not a bad hack.
The spec page looked good. VTK has:

An initial perusal of the available source code suggested that the code was well organized and well documented. The mailing list of developers and users of VTK suggested a pretty sophisticated set of conspirators. This sort of thing is useful when considering support.

The C++ code was built for use in Unix (or variant) and Microsoft Windows applications. Although the application under consideration would be Linux based, it was useful to have another evolutionary path for the software if the customer requested it. True, it's generally better to have it Unix based, but it's nice to be able to say "Sure!" if the customer asks if there is more than one way to roll it.

Varied language bindings are useful out of the box. Our app would be built in tcl/tk; VTK was advertised as co-existing productively with tcl. Of course, C++ was also useful for other levels of integration or for later redeployment of the app as a binary.
There is another subtle but useful element to multiple language bindings for a product such as VTK. This code is used in lots of demanding apps by many, varied and substantial engineers and scientists. VTK's wheels are, as it were, constantly being kicked, examined, and tested unders lots of conditions. This makes for a (hopefully) well tested system. This would translate well into increased reliability for our customer.

Ultimately, the availability of the platform's source code would be the second most useful feature (the first is raw performance and flexibility). This was mandatory in order to expand VTK's code in a minor but necessary way (the addition of a single class allowed the integration of VTK and the high-performance frame grabber from EDT.

A selection of useful VTK-related hyper-links..

Here are some links related to VTK. The program is a *very large* and *very powerful* toolset with a large suite of existing applications and very impressive demos.

The main VTK home page, naturally a useful place to start your investigations into this software beast.

Kitware, the folks that exhibit lots of smarts by originating this software, and continue to show off their goods by publishing said opus 'ala Open Source.

Here is a good site related to VTK.

A substantial tutorial is here.

Here is an excellent list of VTK examples and applications snippets in tcl.

This link explores the interface between using VTK and the RenderMan rendering environment for output.
If you go up a level from this page, you will find other pages related to VTK. In fact, it looks like the owner of this page is, in fact, the same Bill Lorensen that co-authored VTK.

This is a link discussing a comparison between VTK and OpenDX in terms of visualization render quality in the context of a medical forensics application. Warning: the aforementioned link is fairly graphic medical data from 3D scanning of a human corpse.
Incidentally, do take a moment to also take a look at OpenDX; although the above-noted link suggests that VTK's output is, in some sense, potentially better than OpenDX, that latter app is also a standout among heavy duty (and Open Source) imaging applications. OpenDX is originally an IBM product, if memory serves, and so is also made to be industrial grade. It's dataflow interface is also quite interesting.

This is a link to an article by Bill Sorensen entitled "Creating Models From Segmented Images Using The Visualization Toolkit" and looks to be quite handy from one of the VTK inventors himself.

Here is a great link from Technische Universiteit in the Netherlands regarding lots of visualization which I think was done via VTK; I am guessing this because this web site is often mentioned in VTK mailing list.

MayaVI is a scientific data visualizer written using VTK under python. Good stuff, and seems to be maintained quite well and often.

VTK and C# for those of you that might want to try this (VTK is entirely cross platform and is known to work under most variants of Unix, Windows, and Mac OS X).

The goal of the ij-VTK module is to bring the power of the Visualization ToolKit (VTK) to ImageJ (Image processing and analysis in Java)

vtkFLTK which is a bridge library between VTK and the very excellent Fast Light Toolkit (fltk) GUI toolkit.

QT and VTK page showing how you can bind against yet another display/GUI toolkit with VTK.

Assorted VTK projects (under 'download' link) by another visualization researcher.

Programming for Medical Analysis using VTK at Yale.

Slicer is a very comprehensive and very complex package for surgical planning using 3D imaging techniques. Wonderful and complex system!

Paraview is a large-scale data visualization application for looking at *large* datasets. This shows off how industrial large-scale VTK is capable of being....

PVBrowser is a VTK based Process/Scada browser.

Many useful discussions and tools based on VTK. This is very cool stuff, including things like classifier extensions/classes to VTK and lots of other goodies.

Image Registration using VTK.

ITK is the Kitware (and others) developed Image Registeration Toolkit used on the Visible Man project.

Medical Studio is a multi-platform framework for visualization and processing of medical image. It's based on popular open source libraries such as VTK for visualisation, ITK for image processing, GTK for graphical user interface and DCMTK for Dicom compatibility.

Graph Visualization Library written using VTK; neat stuff with interesting illustrations and applications.

HiVision is a visualization platform including advanced visualization techniques for the analysis and exploration of data supplied by numerical simulation

visu consists of a lightweight simulation data visualization tool distributed under the GNU GPL.

wxWidgets and VTK interaction tools

Data Visualization Architect is another pipeline editor for Windows, commercial code

Visit is a visualization package (Open Source!) from Lawrence Livermore National Labs for large scale visualization. Pretty industrial strength.

MITK is the Medical Imaging Interaction Toolkit, another VTK based system for medical and other 3D imaging

VisuSimple is an interactive visualization and graphics/mpeg-generation program for 2D- and 3D-data in the VTK-format - an easy to implement visual data format.

IFRIT is another Open Source visualization package

3-D Data Visualization on Mac OS X is a nice article on use of VTK under Mac OS-X

Atamai is a firm that makes commercial medical imaging code; this is their open-source software page

VTK Pipeline design tools

Some links brought to you by Us

This is a small VTK/tcl demo of very basic 2D image generation and viewing.

Some eye candy

Well, it wouldn't be a visualization package without some eye-candy, no?

Back to Tesseract Tech's imaging links

This document was last modified on --> Tesseract Technology : Some notes about The Visualization Toolkit (VTK)

The Visualization Toolkit

the problem: Develop an experimental platform for R&D using infrared imaging in the fewest possible number of months..
complications: The imaging chain was being built around a constantly evolving R&D outcome; the techniques to process the images, from UI to pre-processing and interpretation code, was being laid out as the experiments proceeded. Flexibility would be key in delivery satisfaction on the project.

I discovered The Visualization Toolkit while working on an application in infrared imaging. I was looking for a robust image processing environment that could quickly be adapted to a somewhat specialized imaging chain and a flexible R&D application. This was a fairly near-term assignment under very coarse specifications: the researchers would be composing acquisition and analysis strategies as they went along, but still demanding consistent, laboratory-grade performance.

A quick review of some VTK related information was quite impressive. The original incarnation had lineage going back to GE Medical Systems. This type of two- and three-dimensional medical image capture and reconstruction is very computationally intensive and demanding; most likely, lives are affected by the performance of this class of software. It was, if at least by pedigree, hopefully not a bad hack.
The spec page looked good. VTK has:

An initial perusal of the available source code suggested that the code was well organized and well documented. The mailing list of developers and users of VTK suggested a pretty sophisticated set of conspirators. This sort of thing is useful when considering support.

The C++ code was built for use in Unix (or variant) and Microsoft Windows applications. Although the application under consideration would be Linux based, it was useful to have another evolutionary path for the software if the customer requested it. True, it's generally better to have it Unix based, but it's nice to be able to say "Sure!" if the customer asks if there is more than one way to roll it.

Varied language bindings are useful out of the box. Our app would be built in tcl/tk; VTK was advertised as co-existing productively with tcl. Of course, C++ was also useful for other levels of integration or for later redeployment of the app as a binary.
There is another subtle but useful element to multiple language bindings for a product such as VTK. This code is used in lots of demanding apps by many, varied and substantial engineers and scientists. VTK's wheels are, as it were, constantly being kicked, examined, and tested unders lots of conditions. This makes for a (hopefully) well tested system. This would translate well into increased reliability for our customer.

Ultimately, the availability of the platform's source code would be the second most useful feature (the first is raw performance and flexibility). This was mandatory in order to expand VTK's code in a minor but necessary way (the addition of a single class allowed the integration of VTK and the high-performance frame grabber from EDT.

A selection of useful VTK-related hyper-links..

Here are some links related to VTK. The program is a *very large* and *very powerful* toolset with a large suite of existing applications and very impressive demos.

The main VTK home page, naturally a useful place to start your investigations into this software beast.

Kitware, the folks that exhibit lots of smarts by originating this software, and continue to show off their goods by publishing said opus 'ala Open Source.

Here is a good site related to VTK.

A substantial tutorial is here.

Here is an excellent list of VTK examples and applications snippets in tcl.

This link explores the interface between using VTK and the RenderMan rendering environment for output.
If you go up a level from this page, you will find other pages related to VTK. In fact, it looks like the owner of this page is, in fact, the same Bill Lorensen that co-authored VTK.

This is a link discussing a comparison between VTK and OpenDX in terms of visualization render quality in the context of a medical forensics application. Warning: the aforementioned link is fairly graphic medical data from 3D scanning of a human corpse.
Incidentally, do take a moment to also take a look at OpenDX; although the above-noted link suggests that VTK's output is, in some sense, potentially better than OpenDX, that latter app is also a standout among heavy duty (and Open Source) imaging applications. OpenDX is originally an IBM product, if memory serves, and so is also made to be industrial grade. It's dataflow interface is also quite interesting.

This is a link to an article by Bill Sorensen entitled "Creating Models From Segmented Images Using The Visualization Toolkit" and looks to be quite handy from one of the VTK inventors himself.

Here is a great link from Technische Universiteit in the Netherlands regarding lots of visualization which I think was done via VTK; I am guessing this because this web site is often mentioned in VTK mailing list.

MayaVI is a scientific data visualizer written using VTK under python. Good stuff, and seems to be maintained quite well and often.

VTK and C# for those of you that might want to try this (VTK is entirely cross platform and is known to work under most variants of Unix, Windows, and Mac OS X).

The goal of the ij-VTK module is to bring the power of the Visualization ToolKit (VTK) to ImageJ (Image processing and analysis in Java)

vtkFLTK which is a bridge library between VTK and the very excellent Fast Light Toolkit (fltk) GUI toolkit.

QT and VTK page showing how you can bind against yet another display/GUI toolkit with VTK.

Assorted VTK projects (under 'download' link) by another visualization researcher.

Programming for Medical Analysis using VTK at Yale.

Slicer is a very comprehensive and very complex package for surgical planning using 3D imaging techniques. Wonderful and complex system!

Paraview is a large-scale data visualization application for looking at *large* datasets. This shows off how industrial large-scale VTK is capable of being....

PVBrowser is a VTK based Process/Scada browser.

Many useful discussions and tools based on VTK. This is very cool stuff, including things like classifier extensions/classes to VTK and lots of other goodies.

Image Registration using VTK.

ITK is the Kitware (and others) developed Image Registeration Toolkit used on the Visible Man project.

Medical Studio is a multi-platform framework for visualization and processing of medical image. It's based on popular open source libraries such as VTK for visualisation, ITK for image processing, GTK for graphical user interface and DCMTK for Dicom compatibility.

Graph Visualization Library written using VTK; neat stuff with interesting illustrations and applications.

HiVision is a visualization platform including advanced visualization techniques for the analysis and exploration of data supplied by numerical simulation

visu consists of a lightweight simulation data visualization tool distributed under the GNU GPL.

wxWidgets and VTK interaction tools

Data Visualization Architect is another pipeline editor for Windows, commercial code

Visit is a visualization package (Open Source!) from Lawrence Livermore National Labs for large scale visualization. Pretty industrial strength.

MITK is the Medical Imaging Interaction Toolkit, another VTK based system for medical and other 3D imaging

VisuSimple is an interactive visualization and graphics/mpeg-generation program for 2D- and 3D-data in the VTK-format - an easy to implement visual data format.

IFRIT is another Open Source visualization package

3-D Data Visualization on Mac OS X is a nice article on use of VTK under Mac OS-X

Atamai is a firm that makes commercial medical imaging code; this is their open-source software page

VTK Pipeline design tools

Some links brought to you by Us

This is a small VTK/tcl demo of very basic 2D image generation and viewing.

Some eye candy

Well, it wouldn't be a visualization package without some eye-candy, no?

Back to Tesseract Tech's imaging links

This document was last modified on