Title: CAVASS (a Computer Assisted Visualization and Analysis Software System) Features and Developments
1CAVASS(a Computer Assisted Visualization and
Analysis Software System)Features and
Developments
2CAVASS contributors
- Xinjian Chen
- George Grevera
- Tad Iwanaga
- Tingching Kao
- Shipra Mishra
- Dewey Odhner
- Andre Souza
- Jayaram Udupa
- Xiaofen Zheng
- Ying Zhuge
3Talk outline
- Introduction
- User interface
- Key features
- Miscellaneous topics
- Concluding remarks
4Introduction to cavass
5What is CAVASS?
- A CAVA Software System
- What is CAVA?
- Computer Assisted Visualization and Analysis
- So CAVASS is a Computer Assisted Visualization
and Analysis Software System
63D CAVA Software Systems (MIPG)
- DISPLAY mini computer frame buffer 1980
- DISPLAY82 mini computer frame buffer 1982
- 3D83 GE CT/T 8800 1983
- 3D98 GE CT/T 9800 1986
- 3DPC PC-based 1989
- 3DVIEWNIX Unix, X-Windows 1993
- CAVASS platform independent, wxWidgets 2008
7What is CAVASS?
- CAVASS is the next generation of 3DVIEWNIX.
- 3DVIEWNIX
- development started in 1987
- released in 1993
- development dates back to the 70s
- free
- runs on Unix and subsequently Linux
- 60 person years of effort
- distributed to 100s of sites
- basis for over 15 specialized packages/apps
- Why CAVASS?
8Significant, more recent developments
- PC platform matures.
- price spirals downward
- performance increases dramatically
- supplant Unix as the scientific workstation of
choice - Network bandwidth greatly increases.
- Useable parallel processing standards are defined
and become freely available. - Toolkits such as VTK and ITK become freely
available. - GUI concept matures and platform independent
libraries are developed.
9CAVASS features
- Image processing
- for enhancing information about and defining an
object system - Visualization
- for viewing and comprehending an object system
- Manipulation
- for altering an object system (virtual surgery)
- Analysis
- for quantifying information about an object
system - CAVA operations take object system information
from one space to another (typically, and
eventually, to a quantitative space). - Especially for large, multidimensional (at least
3D), possibly multimodality, data sets.
10CAVA User Groups
- UG1 CAVA basic researchers/technology
developers - UG2 CAVA application developers
- UG3 Users of CAVA methods in clinical research
- CAVASS is not aimed at
- UG4 Clinical end users in patient care
11Key CAVASS features
- Built upon our experience with 3DVIEWNIX.
- Leverages the existing 3DVIEWNIX software base
and user interface. - Port to Windows and Mac OS with continued support
for Unix and Linux. - Implement parallel algorithms for time consuming
operations. - Support for stereo rendering.
- Interface to ITK.
12Cavass user interface
13Portable graphics user interface
- Based on wxWidgets (wxwidgets.org)
- one C API for all OSs
- maintains native look-and-feel
- free, open source, multiplatform
- portable support for mutex, threads, copy-paste,
drag-and-drop, print, etc.
14Portable graphics user interface
- We also considered Qt, Java, and FLTK.
- Qt proprietary, closed, fees
- Java performance concerns, doesnt leverage
existing C/C code, parallelism (MPI) lacking - FLTK free but doesnt maintain native
look-and-feel
15User interface example Montage
16User interface features
- Standard-style menu bar.
- Window size can be changed.
- Support for multiple windows.
- Copy window contents to clipboard.
- Print window contents.
17Standardized user interface
18Standardized user interface
- Canvas upper drawing area
19Standardized user interface
- Control area
- appears towards bottom
- can be resized or even removed
- buttons appear towards the right and are
relatively standardized other controls (such as
sliders) appear towards the left as necessary
20Standardized user interface
- Bar at bottom contains status and mouse button
information.
21User preferences
22Key cavass features
23Overview of CAVASS functionality
24Data interface
Support for standard image formats such as DICOM,
VTK, Matlab, STL (Stereo Lithography), TIFF, and
JPEG. CAVASS also supports the extended DICOM
format that was proposed and supported by
3DVIEWNIX.
25An example of the CAVASS DICOM header explorer
26Tools
27Tools
- Tutorials
- Recipes and Tasks
- ShowScreen
28Interface to ITK
- ITK
- Extensive C image processing library.
- Provides no user interface.
- CAVASS ITK interface
- Optionally provide ITK with a user interface.
- Added code to ITK to enable it to read and write
CAVASS files.
29Interface to ITK
- CAVASS ITK interface
- Completely table driven.
- Steps
- Display a slice
- Allow user to set parameters.
- Run ITK program.
- Read and display result.
30Interface to ITK
31Image processing
32Image processing example interpolation
33Image processing example threshold
34Image processing example iterative live wire
35Image processing example registration
36Visualize
37Visualize example Montage
38Visualize example overlay
39Visualize example t-shell surface rendering
40Manipulate
41Event handing for visualization and manipulation
- wxWidgets supports and implements the
Windows-style event callback mechanism. - Very efficient and fine for most user
interaction. - X-Windows supports and implements the event queue
mechanism. - Most flexible for intensive user interaction w/
possible delays due to computation time (e.g.,
rendering).
42Event handing for visualization and manipulation
- We implemented an X-Windows style event queue
w/in CAVASS using only the wxWidgets callback
mechanism - Create a separate thread of execution that
responds to events in an event queue (of our own
creation) performs compute intensive tasks runs
at a lower priority. - The main thread continues to respond to events
via the callback mechanism intelligently
queues the events for execution by the other
thread runs at a higher priority.
43Analyze
44Analyze example density profile
45Miscellaneous topics
- Testing, Parallelism, Getting Started
46Testing
- Test data sets
- Regular 256 x 256 x 46 MR brain image 6 MB
- Large 512 x 512 x 459 CT of thorax 241 MB
- Super 1023 x 1023 x 417 CT of VW head 873 MB
47Parallelism
- Considered
- MPI/OpenMPI
- Message Passing Interface
- OpenMP
- Open specifications for Multi Processing
48Parallelism
- MPI
- free (for both Windows, Linux, and Unix)
- part of base Linux install
- COW (cluster of workstations model)
- leverages existing hardware/computers
- optional, inexpensive network upgrade
- easily expandable
- OpenMP
- requires purchase of specialized compilers
- multi-threaded, shared memory parallelism model
- requires purchase of expensive multiprocessor
systems
49Parallelization of Operations in CAVASS
- Divide the input image into chunks and assign
each chunk to a processor. - A chunk represents data contained in a contiguous
set of slices, either image or object structure
data.
50Parallelization of Operations in CAVASS
- CAVA operations can be divided into the following
three groups. - Type 1 Operation chunk-by-chunk, each chunk
accessed only once. - Ex slice interpolation.
- Type 2 As in Type 1, but significant further
operation needed to combine results. - Ex 3D rendering.
- Type 3 Operation chunk-by-chunk, but each chunk
may have to be accessed more than once. - Ex graph traversal.
- CAVASS parallelizes all three groups of
operations when necessary.
51Getting started with CAVASS
- As a user
- Tutorials
- Tasks and Recipes
- As a programmer
- cvs code repository
- doxygen code documentation
- Data C classes
- Example module
52Data C classes
- CavassData
- Given the name of a data file, CavassData will
read in the entire data set. - ChunkData
- Given the name of a data file, ChunkData will
read in a set of contiguous slices (a chunk). - When slices are accessed w/in the cached chunk,
no additional reads are necessary. - When a slice is accessed outside of the current
chunk, a chunk containing the new slice is read. - Subclass of CavassData.
- SliceData
- Given the name of a data file, SliceData will
read in a single slice of data. - A different slice can be read at any time.
- Subclass of CavassData.
53doxygen example
54Example module
- C code that consists of ExampleFrame (a
subclass of MainFrame) and ExampleCanvas (a
subclass of MainCanvas).
55Concluding remarks
56CAVASS contributors
- Xinjian Chen
- George Grevera
- Tad Iwanaga
- Tingching Kao
- Shipra Mishra
- Dewey Odhner
- Andre Souza
- Jayaram Udupa
- Xiaofen Zheng
- Ying Zhuge
57Thanks for your attention!
- Information about CAVASS is available from
www.mipg.upenn.edu/cavass. - The authors gratefully acknowledge NIH grant
number R01-EB004395-01 for support of this work.