Transcript Slide 1

(a Computer Assisted Visualization and Analysis Software System)
Using CAVASS as the Basis for Imaging Applications
George Greveraab, Jayaram Udupab, Dewey Odhnerb
aComputer
Science Department
Saint Joseph’s University
bMedical
Image Processing Group (MIPG), Department of Radiology
University of Pennsylvania
CAVASS contributors
•
•
•
•
•
Xinjian Chen
George Grevera
Tad Iwanaga
Tingching Kao
Shipra Mishra
•
•
•
•
•
Dewey Odhner
Andre Souza
Jayaram Udupa
Xiaofen Zheng
Ying Zhuge
Overview
•
•
•
•
•
•
Introduction
User interface
Key features
Parallelism
Getting Started with CAVASS
Concluding remarks
INTRODUCTION TO CAVASS
What 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
3D CAVA software systems (MIPG)
DISPLAY
DISPLAY82
3D83
3D98
3DPC
3DVIEWNIX
mini computer + frame buffer
mini computer + frame buffer
GE CT/T 8800
GE CT/T 9800
PC-based
Unix, X-Windows
1980
1982
1983
1986
1989
1993
CAVASS
platform independent, wxWidgets
2009
What is CAVASS?
• CAVASS is the next generation of 3DVIEWNIX.
• 3DVIEWNIX
–
–
–
–
–
–
–
–
development started in 1987
released in 1993
development dates back to the ’70s
free binaries
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?
Significant, more recent developments
1. PC platform matures.
– price spirals downward
– performance increases dramatically
– supplant Unix as the scientific workstation of choice
2. Network bandwidth greatly increases.
3. Useable parallel processing standards are defined and
become freely available.
4. Toolkits such as VTK and ITK become freely available.
5. GUI concept matures and platform independent
libraries are developed.
CAVASS 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
*Especially for large, multidimensional (at least 3D), possibly
multimodality, data sets.
CAVA 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
Key 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.
CAVASS USER INTERFACE
Portable graphics user interface
• Based on wxWidgets (wxwidgets.org)
– one C++ API for all OS’s
– maintains native look-and-feel
– free, open source, multiplatform
– portable support for mutex, threads, copy-paste,
drag-and-drop, print, etc.
User interface features
•
•
•
•
•
Standard-style menu bar.
Window size can be changed.
Support for multiple windows.
Copy window contents to clipboard.
Print window contents.
Standardized 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
Standardized user interface
• Bar at bottom contains status and mouse
button information.
KEY CAVASS FUNCTIONALITY
Overview of CAVASS functionality
CAVASS
PortData
Tools
ImageProcessing
Visualize
Manipulate
Analyze
Data interface
CAVASS
PortData
Tools
Input
Import
Export
SaveScreen
ImageProcessing
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.
Visualize
Manipulate
Analyze
Tools
CAVASS
PortData
Tools
ImageProcessing
Tutorials
Tasks
Recipes
ITK Filters
ShowScreen
Visualize
Manipulate
Analyze
Interface 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.
Interface to ITK
• CAVASS – ITK interface
– Completely table driven.
– Steps:
•
•
•
•
Display a slice
Allow user to set parameters.
Run ITK program.
Read and display result.
Interface to ITK:
median filter
Interface with ITK:
Canny edge detection
Image processing:
live wire & interpolation
CAVASS
PortData
Tools
ImageProcessing
SceneOperations
Visualize
StructureOperations
VOI
Interpolate
SurfaceNormal
MergeStructures
Filter
Segment
ToStructure
ToScene
Classify
Algebra
Register
Manipulate
Analyze
Visualize:
slice/cine & surface rendering
CAVASS
PortData
Tools
ImageProcessing
Visualize
Slice
Manipulate
Surface
Montage
Cycle
View
Reslice
Overlay
CreateMovie
Analyze
Volume
Measure
View
CreateMovie
Measure
Manipulate
CAVASS
PortData
Tools
ImageProcessing
Visualize
Manipulate
Analyze
SelectSlice
Measure
Reflect
Cut
Separate
Move
CreateMovie
Event handling 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).
Event handling for visualization and
manipulation
• We implemented an X-Windows style event queue
w/in CAVASS using only the wxWidgets callback
mechanism:
1. 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.
2. 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.
Analyze
CAVASS
PortData
Tools
ImageProcessing
Visualize
Manipulate
Analyze
Scene
DensityProfile
Structure
ROI
Register
Static
Kinematics
PARALLELISM
Parallelism
• MPI (Message Passing Interface)
–
–
–
–
–
–
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 (Open specification for Multi Processing)
– requires purchase of specialized compilers
– “multi-threaded, shared memory parallelism” model
– requires purchase of expensive multiprocessor systems
Parallelization 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.
Parallelization 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.
GETTING STARTED WITH CAVASS
Getting started with CAVASS
• As a user:
– Tutorials
– Tasks and Recipes
• As a programmer:
– cvs code repository
– doxygen code documentation
– Data C++ classes
– Example module
Data C++ classes
1.
CavassData
–
2.
ChunkData
–
–
–
–
3.
Given the name of a data file, CavassData will read in the entire data set.
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.
Doxygen documentation example
Example module
• C++ code that consists
of ExampleFrame (a
subclass of MainFrame)
and ExampleCanvas (a
subclass of
MainCanvas).
CONCLUDING REMARKS
Concluding remarks
• User interface
• Key features (image processing, visualization, manipulation, and analysis)
• Parallelism
• Getting Started with CAVASS
CAVASS contributors
•
•
•
•
•
Xinjian Chen
George Grevera
Tad Iwanaga
Tingching Kao
Shipra Mishra
•
•
•
•
•
Dewey Odhner
Andre Souza
Jayaram Udupa
Xiaofen Zheng
Ying Zhuge
Thanks for your attention!
• Information about CAVASS is available from
www.mipg.upenn.edu/~cavass.
• The authors gratefully acknowledge NIH grant
number R01-EB004395 for support of this
work.