CIBC:Project:ImageVis3D

From NCRR Biomedical Software Development, Engineering, and Dissemination Wiki

Jump to: navigation, search

Main CIBC Page

Contents

Motivation and Overview

The goal of the ImageVis3D development is to initially replicate the capabilities of the BioImage powerapp and then expand it capabilities to include all the functionality currently within SCIRun for visualizing three-dimensional rasterized data. The program should be another light weight application in the same vein as Seg3D and map3d and provide the user with streamlined access to the extensive volume visualization capabilities available from tools developed within the SCI Institute and the NCRR CIBC.

Design

Goals

  • Provide a vehicle especially for visualization techniques developed in SCI to get into the hands of scientists.
  • Start with the functionality of BioImage placed in a lighter weight and more specific frameworks to allow both easy extension and rapid deployment
    • remove constraints of dataflow
    • fix broken features, e.g., 2D Xfer function editor, painting in slices
    • create more intuitive UI

Design principles and ideas

  • Separation of UI and backend
    • further separate backend into graphics and non-graphics components
    • separate classes for created transfer functions and rendering based on the transfer function
  • Achieving re-use?
    • make use of SLIVR
    • read files via same codes as Seg3D
    • data structures from SCIRun
  • File reading and I/O engine
    • base on ITK but anticipate replacing or wrapping pieces of it
    • try and pre-read data to allow user to control and select parameters
      • spacing in real coordinates
      • data type
      • organization of slices
    • consider 4D (three in space, one in time) data from the start
      • are there formats for this?
    • consider large data sets from the start
      • must be part of the file reader

Functional blocks

The design plan for this application consists of the following blocks, each assigned to one ore more members of the team:

  1. I/O: Jens
    • based on third party libraries but likely not ITK
    • internal format will be NRRD and we may write NRRD versions of the file to disk in the case of large data sets
  2. GUI: Design: all, Implementation: David
    • GUI must be separated from process control and not actually necessary for the program to run and execute
  3. Image Processing: Allen
    • very basic functionality with some simple filters, cropping, subsampling, etc.
  4. Visualization interface: Jens and Allen
    • interface to the multidimensional transfer function
  5. Rendering
    • use SLIVR
  6. Memory management: Jens
    • support multiple data types
    • seek high efficiency for large data sets
  7. Master process controller: Allen
    • coordinator and overall manager of the application

As much as possible, each block will be separated from all others with well defined interfaces. The master process controller has the task of integrating all the pieces and really defines the complete application.


Main CIBC Page


Feature list

  • IO
    • broad import capablities
    • handle large data files efficiently
    • saving out volumes from cropped, filters, resampled volumes
    • saving images and movies
    • save images at higher than screen resolution
    • save and load sessions
    • ITK-Snap has nice interface for loading data; use this as example
    • also allow subsampling of data as we read
  • Data manipulation
    • filters: median, Gaussian
    • resampling of volume data
    • crop
    • histogram
    • support for gain field correction
  • Visualization
    • multi-field vis; with and without locking of controls
    • time dependent data
    • comparative vis (multiple sets of data)
    • adding annotations, landmarks, attach notes
    • support for large scale data,
    • mask support
      • clipping planes
      • ellipsoid and other polylines
      • wedge cuts into the data (not possible with simple clipping plans)
      • import masks to apply over volume rendering
      • masking and 3D painting (Jens is about to publish this)
      • masking based on isosurface
    • stereo projection
    • level of detail support
    • ridge enhancement and occluding contours
    • silhouette lines
    • control of surface highlights
    • other non-photorealistic rendering techniques

User Interface

  • Multidimensional transfer function
    • improve design over current versions from Seg3D or BioImage
    • different UI for different number of dimensions in the transfer function
    • the paint interface (painting in image space that maps to histogram) is a good starting point
    • keep UI well separated from rest of code
    • include presets of transfer functions and allow users to create new presets
    • using two fields together for 2D transfer function
  • Other ideas
    • create resets that combine a set of useful settings, not just X-fer function
    • allow locking of features, perhaps groupwise in scaling
    • maintain state for each pane
    • support multiple panes, each with different data (like map3d)
    • include stack of operations and allow vis at different point
    • use layers (like Seg3D) as a metaphor
    • include both a master list of controls as well as a way to alter groups or individual panes

Main CIBC Page

Meeting notes

February 7, 2008

February 14, 2008

February 21, 2008

February 28, 2008

March 6, 2008

March 10, 2008

March 26, 2008

April 3, 2008

April 15, 2008

Implementation Plans

Results

Personal tools