CIBC:Project:ImageViewer

From NCRR Biomedical Software Development, Engineering, and Dissemination Wiki

Jump to: navigation, search

Contents

Motivation

First, see the definitions of images and labeled images here.

When visualizing image data it is important to present the data in as raw a form as possible so as not to obscure information content or introduce erroneous information content. Typically this means displaying higher dimensional data in 2D slices on a grid whose spacing matches that of the image data, with no filtering, interpolation, or other transformations applied. When image data has multiple channels (vector-valued data points), each channel may be displayed separately or colored using an appropriate map for the data (e.g. rgb pixels). For common imaging tasks such as segmentation and registration, it is critical that a user be able to visualize image data in this way.

SCIRun ImageViewer Module

For SCIRun I propose a new visualization module that incorporates the above ideas. It should have the following list of features.

  • Presents image data of 2 and higher dimensions in successive 2D slices. The slice domain defaults to the first two fastest-increasing axes in the data, with the ability to permute the choice of axes as needed. Reslicing the image along a new axis should not involve transforming or otherwise interpolating the data.
  • The user should be able to toggle between views of the data in isotropic pixel-space and isotropic real space. The pixel-space display is the most raw view, where no interpolation of the data is necessary other than nearest-neighbor interpolation when resizing the display window (zooming). The real-space display may require resampling of exactly one of the display axes to match the spacing of the other display axis. This resampling should use nearest neighbor interpolation, with the option for linear interpolation if desired.
  • Navigational controls to allow stepping forward and backward through slices of the data, reslicing, and zooming in and out of regions of interest.
  • Image information such as image extent, spacing, and view orientation should be displayed for the user.
  • The usual SCIRun support for color mapping the data.
  • Functionality for overlaying labeled image masks (segmentations) on the original image data.
  • Interaction should include: probing image values and locations with the mouse, drawing labeled images directly into the display window.

Additional bells and whistles to consider:

  • Navigational controls that orient the user to the slice location within the higher dimensional image domain.

Example Images

The following images are taken from the UNC image viewer application in common use in the ITK community. They illustrate something akin to what I have in mind for the SCIRun viewer. The data presented on the overlay is information about the image size and spacing. The data at the lower-right corner of the display shows the position of the mouse and the pixel value at that position.

This next example shows a labeled region in green overlaid on top of the original image. This green section could be the result of an automatic segmentation, a hand-drawn segmentation, or some combination of both.

Painter Segmentation Steps / Documentation

First, goto to the directory containing the files to be segmented

> cd /usr/sci/cibc-data/CappechiMouseStudy/LanceEditsJan2006

Then, start the segmenter, the first parameter is the Mouse CT Scan, the second parameter is segmented volume

> segment May8-source.nhdr May8-digit2-metacarpal.nhdr

Reference Actions:

'+,-' Keys - zoom in and out

'Up,Down' Keys - change current layer (volume)

'Left,Right' Keys - change stacing position of current layer (volume)

'o,p' Keys - decreaese/increase current layer opacity

'r' Key - resets color lookup table window level and width to default

Middle-Mouse-Button- starts Probe tool which sets other views to intersect at cursor

Mouse-Scroll-Up, or '>' key - changes current slice to next slice

Mouse-Scroll-Down, or '<' key - changes current slice to previous slice

Shift-Left-Mouse-Button-Drag - grabs and pans current window

Shift-Right-Mouse-Button-Drag - Zooms current window in and out

Shift-Middle-Mouse-Button-Click - Autoviews current volume in current window

'f' Key - Starts Flood Fill tool:

  • Right mouse button sets current value to flood fill with
  • Left mouse button sets seed point and performs flood fill

'g' Key - Starts Paint tool:

  • Left-Mouse-Button-Drag - applies paint to current layer
  • Mouse-Scroll-Wheel-Up/Down - Increases/decreases paint brush size
  • Right-Mouse-Button-Click - Sets paint value to value of pixel on current layer under mouse cursor
  • Middle-Mouse-Button-Click - Quits Paint Tool

'u' Key - Performs Undo on last Flood Fill or Paint tool operation

Personal tools