cavass (a computer assisted visualization and analysis software system) features and developments...
Post on 22-Dec-2015
221 views
TRANSCRIPT
CAVASS(a Computer Assisted Visualization and Analysis Software System)
Features and Developments
George J. Grevera, Ph.D.
CAVASS contributors
• Xinjian Chen• George Grevera• Tad Iwanaga• Tingching Kao• Shipra Mishra
• Dewey Odhner• Andre Souza• Jayaram Udupa• Xiaofen Zheng• Ying Zhuge
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 mini computer + frame buffer 1980DISPLAY82 mini computer + frame buffer 19823D83 GE CT/T 8800 19833D98 GE CT/T 9800 19863DPC PC-based 19893DVIEWNIX Unix, X-Windows 1993
CAVASS platform independent, wxWidgets 2008
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– 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
• 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.
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.
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.
Portable graphics user interface
• We also considered Qt, Java, and FLTK.
– Qt – proprietary, closed, fees
– Java – performance concerns, doesn’t leverage existing C/C++ code, parallelism (MPI) lacking
– FLTK – free but doesn’t maintain native look-and-feel
• Standard-style menu bar.• Window size can be changed.• Support for multiple windows.• Copy window contents to clipboard.• Print window contents.
User interface features
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
Overview of CAVASS functionality
P o r tD a ta T oo ls Im ag eP ro ce ssing V isua lize M an ip u la te A na lyze
C A V A S S
Data interface
Input Im port
Export SaveScreen
PortData T oo ls Im ag eP ro ce ssing V isua lize M an ip u la te A na lyze
CAVASS
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.
Tools
P o r tD a ta
T utorials T asks
Recipes IT K Filters
Show Screen
T ools Im ag eP ro ce ssing V isua lize M an ip u la te A na lyze
CAVASS
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.
Image processing
P o r tD a ta T oo ls
VOI Interpolate
Filter Segment
Classify Algebra
Register
SceneOperations
SurfaceNorm al M ergeStructures
ToStructure ToScene
StructureOperations
Im ageProcessing V isua lize M an ip u la te A na lyze
CAVASS
Visualize
P o r tD a ta T oo ls Im ag eP ro ce ssing
M ontage Cycle
Reslice O verlay
Slice
View M easure
CreateMovie
Surface
View M easure
CreateMovie
Volume
Visualize M an ip u la te A na ly ze
CAVASS
Manipulate
P o r tD a ta T oo ls Im ag eP ro ce ssing V isua lize
SelectSlice M easure
Reflect Cut
Separate M ove
CreateMovie
M anipulate A na lyze
CAVASS
Event 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).
Event handing 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
P o r tD a ta T oo ls Im ag eP ro ce ssing V isua lize M an ip u la te
DensityProfile RO I
Scene
Register Static Kinematics
Structure
Analyze
CAVASS
TestingTest data sets:
1. Regular: 256 x 256 x 46 MR brain image 6 MB
2. Large: 512 x 512 x 459 CT of thorax 241 MB
3. Super: 1023 x 1023 x 417 CT of VW head 873 MB
Parallelism
• Considered:
– MPI/OpenMPI• Message Passing Interface
– OpenMP• Open specifications for Multi Processing
Parallelism
• 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
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
• As a user:– Tutorials– Tasks and Recipes
• As a programmer:– cvs code repository– doxygen code documentation– Data C++ classes– Example module
Data C++ classes1. CavassData
– Given the name of a data file, CavassData will read in the entire data set.
2. 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.
3. 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.
Example module
• C++ code that consists of ExampleFrame (a subclass of MainFrame) and ExampleCanvas (a subclass of MainCanvas).
CAVASS contributors
• Xinjian Chen• George Grevera• Tad Iwanaga• Tingching Kao• Shipra Mishra
• Dewey Odhner• Andre Souza• Jayaram Udupa• Xiaofen Zheng• Ying Zhuge