CAVASS (a Computer Assisted Visualization and Analysis Software System) Features and Developments George J. Grevera, Ph.D.

Slides:



Advertisements
Similar presentations
Network II.5 simulator ..
Advertisements

Operating-System Structures
A graphical user interface (GUI) is a human-computer interface (i.e., a way for humans to interact with computers) that uses windows, icons and menus.
Chap 2 System Structures.
Operating-System Structures
Goals Give you a feeling of what Eclipse is.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Chapter 4: Threads.
1 CAVASS: Computer Assisted Visualization and Analysis Software System Jayaram K. Udupa, George J. Grevera * Dewey Odhner, Ying Zhuge, Andre Souza, Tad.
Reference: Message Passing Fundamentals.
UNIX Chapter 01 Overview of Operating Systems Mr. Mohammad A. Smirat.
(a Computer Assisted Visualization and Analysis Software System) Using CAVASS as the Basis for Imaging Applications George Grevera ab, Jayaram Udupa b,
CAVASS - Visualization Aspects George Grevera a,b, Jayaram Udupa b, Dewey Odhner b, Ying Zhuge b, Andre Souza b, Tad Iwanaga b, and Shipra Mishra b a Department.
1 An Introduction and Demonstration of a New Computer Assisted Visualization and Analysis Software System (CAVASS) Jayaram K. Udupa +, George J. Grevera.
1 The architecture and performance of CAVASS (Computer Assisted Visualization and Analysis Software System) George J. Grevera *+, Jayaram K. Udupa +, Dewey.
3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another.
3.5 Interprocess Communication
1 CAVASS: Computer Assisted Visualization and Analysis Software System – Image Processing Aspects Jayaram K. Udupa +, George J. Grevera *+, Dewey Odhner.
Systems Programming Course Gustavo Rodriguez-Rivera.
Introducing CAVASS George Grevera a,b, Jayaram Udupa b, Dewey Odhner b, Ying Zhuge b, Andre Souza b, Tad Iwanaga b, and Shipra Mishra b a Department of.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
1 Threads Chapter 4 Reading: 4.1,4.4, Process Characteristics l Unit of resource ownership - process is allocated: n a virtual address space to.
Operating Systems.
Operating Systems Chapter 4.
UNIX System Administration OS Kernal Copyright 2002, Dr. Ken Hoganson All rights reserved. OS Kernel Concept Kernel or MicroKernel Concept: An OS architecture-design.
COMPUTER PROGRAMMING Source: Computing Concepts (the I-series) by Haag, Cummings, and Rhea, McGraw-Hill/Irwin, 2002.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
XIP™ – the eXtensible Imaging Platform A rapid application development and deployment platform Lawrence Tarbox, Ph.D. September, 2010.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
CHAPTER FOUR COMPUTER SOFTWARE.
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 14, 2005 Operating System.
C O M P U T E R G R A P H I C S Jie chen Computer graphic -- OpenGL Howto.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
-1- 3D Visualization. Sonia Pujol, Ph.D., Harvard Medical School National Alliance for Medical Image Computing 3D Visualization Sonia Pujol, Ph.D. Surgical.
Pujol S., Plesniak, W. -1- National Alliance for Medical Image Computing Neuroimage Analysis Center Harvard CTSC Slicer3 minute tutorial Sonia Pujol, PhD.
Objectives of This Session
Sonia Pujol, PhD National Alliance for Medical Image Computing © 2010, ARR.
Getting started with Programming using IDE. JAVA JAVA IS A PROGRAMMING LANGUAGE AND A PLATFORM. IT CAN BE USED TO DELIVER AND RUN HIGHLY INTERACTIVE DYNAMIC.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Mantid Stakeholder Review Nick Draper 01/11/2007.
Application Software System Software.
Introduction Why are virtual machines interesting?
A Remote Collaboration Environment for Protein Crystallography HEPiX-HEPNT Conference, 8 Oct 1999 Nicholas Sauter, Stanford Synchrotron Radiation Laboratory.
CONTENT  Introduction Introduction  Operating System (OS) Operating System (OS) Operating System (OS)  Summary Summary  Application Software Application.
Silberschatz, Galvin and Gagne ©2011 Operating System Concepts Essentials – 8 th Edition Chapter 2: The Linux System Part 1.
Overview Using Plugins Developing Plugins Basic Examples / Demo Outlook Overview Using Plugins Developing Plugins Basic Examples / Demo Outlook Plugin.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 4: Threads.
OPERATING SYSTEM BY KINSHUK RASTOGI. WHAT IS AN OPERATING SYSTEM? What is an operating system in the first place? An operating system is a software that.
Operating Systems Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Operating System Basics. Outline The User Interface Running Programs Managing Files Managing Hardware Utility Software.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Chapter 4: Threads.
Lecture 5. Example for periority The average waiting time : = 41/5= 8.2.
Fundamentals of Windows Mouse n 4 Basic Operations: –Pointing –Clicking –Double Clicking –Dragging.
Computer System Structures
Java Look-and-Feel Design Guidelines
Constructing a system with multiple computers or processors
Introduction to Operating System (OS)
Computer Science I CSC 135.
Chapter 4: Threads.
Chapter 2: System Structures
Chapter 2: The Linux System Part 1
Constructing a system with multiple computers or processors
Constructing a system with multiple computers or processors
What is Concurrent Programming?
Constructing a system with multiple computers or processors
Multithreaded Programming
What is Concurrent Programming?
MPJ: A Java-based Parallel Computing System
Outline Chapter 2 (cont) OS Design OS structure
Outline Operating System Organization Operating System Examples
Types of Parallel Computers
Presentation 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

Talk outline Introduction User interface Key features Miscellaneous topics 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) DISPLAYmini computer + frame buffer1980 DISPLAY82mini computer + frame buffer1982 3D83GE CT/T D98GE CT/T DPCPC-based1989 3DVIEWNIXUnix, X-Windows1993 CAVASSplatform independent, wxWidgets2008

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). *E specially 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.

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

User interface example: Montage

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 Frame = CAVASS window

Standardized user interface Canvas = upper drawing area

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.

User preferences

KEY CAVASS FEATURES

Overview of CAVASS functionality

Data 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.

An example of the CAVASS DICOM header explorer

Tools

Tutorials Recipes and Tasks ShowScreen

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

Image processing

Image processing example: interpolation

Image processing example: threshold

Image processing example: iterative live wire

Image processing example: registration

Visualize

Visualize example: Montage

Visualize example: overlay

Visualize example: t-shell surface rendering

Manipulate

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

Analyze example: density profile

MISCELLANEOUS TOPICS Testing, Parallelism, Getting Started

Testing Test data sets: 1.Regular:256 x 256 x 46MR brain image6 MB 2.Large:512 x 512 x 459CT of thorax 241 MB 3.Super:1023 x 1023 x 417 CT of VW head873 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++ classes 1.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.

doxygen example

Example module C++ code that consists of ExampleFrame (a subclass of MainFrame) and ExampleCanvas (a subclass of MainCanvas).

CONCLUDING REMARKS

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 The authors gratefully acknowledge NIH grant number R01-EB for support of this work.