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:
- A well organized object design
- Portable C++ code base
- Wrappings in tcl,
python,
Java
(and, I think,
perl)
- An Open Source license which, of course, makes source code available
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
-
Triana
can be used as a VTK pipeline
browser. It also has interfaces to many other classes of compute-resources
for computation or visualization.
-
Rapid Pipeline Design
is a GUI front end for the Visualization Toolkit (VTK) - it allows the
creation of complex visualization pipelines by dragging and dropping
connections between VTK classes. (uh,oh, this is commercial code!)
-
VTK Designer
is an object oriented, plugin based software written using VTK and Qt
to make the task of designing VTK visualization pipelines easy.
-
vtkGUI
is a new user friendly GUI for programming of VTK pipelines
-
Data Visualization Architect
provides a graphical pipeline editor for the widely used and popular
Visualization Toolkit (VTK) by encapsulating the VTK C++
classes and providing graphical equivalents (commercial code)
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