VisTrails Home

SciVisFall2007/Assignment 3

From VisTrailsWiki

Jump to: navigation, search

The assignment is due at midnight on November 27th. You will need to use the CADE handin functionality to turn in your assignment. The class account is "cs5630".

The purpose of this assignment is to make sure you understand (and experiment with) the basic concepts involved in the visualization of 3D scalar volumes. As you work on the assignment, we greatly encourage you to read the available documentation on both python and VTK. Some of the problems will require you to use VTK modules you might not have previously seen. These are indicated in the problems.


Submitting your vistrail

You do not need to use assignment3.vt as a starting point for your solution. You are welcome to, but it's not necessary.

Labelling your visualizations

Your visualizations should be labeled "Problem 1a", "Problem 1b", "Problem 1c", "Problem 2a", etc.

General Hints

In many cases throughout this assignment, the transfer function applied to the data can be specified in multiple ways. Take care to choose the method that most accentuates the aspect of the data being represented. In some cases the transfer function can be constructed as a simple linear ramp, and in some cases this is inappropriate.

Many of these data in this assignment are rather large and can take a substantial amount of time to render. It may be in your best interests to explore the data and the visualizations with a lower quality method before finding settings that can be applied to a high quality method.

Some problems in this assignment ask for explanations that may not need a new workflow to be created. To answer these, simply create a "dummy pipeline" by making a parameter change, or adding a module, and labelling it appropriately using the Notes section to answer the question.


See FAQ here. (To be completed based on students' questions.)


The data is available on /home/cs5630/data/assignment3 in the CADE lab.

All the data you need is also available at

These are:

Problem 1: Basic iso-surfacing techniques

In this problem, you will explore data using iso-surfaces. The data contained in these 2 files represents 2 separate timesteps during acquisition of salinity data as the tide moves in and out of the Columbia River Inlet Estuary in Oregon. The data are represented as a vertex-centered unstructured hexahedral mesh with each point containing a single scalar and a single vector and are based on the datasets columbia_river_001.vtk and columbia_river_002.vtk

a. For each of the two time-steps (t = 1 and t = 2) generate an iso-surface visualization using 3 iso-values. Be sure to use an appropriate coloring scheme to highlight all iso-surfaces involved. Describe how modifying the iso-values being represented influences your understanding of the data. Comment on the problems intrinsic to the display of multiple iso-surfaces in the same rendering and potential methods for solving them.

b. For each time-step, generate an animation by varying the iso-value being rendered. Make sure to explore the full range of the scalar data here. Does this method of visualization enhance or detract from the investigation of the data? Why or why not? Since parameter explorations are not stored in the version tree in a way we can easily see, please describe the parameterization(s) for any relevant modules you used to generate them in the Notes section of the version.

Grads only

c. This dataset has vectors as well as scalars at each data point. Find a pair of visualizations (one visualization for each of the two time-steps) that illustrates how this vector field changes from the initial conditions (from time-step 0, to time-step 2). How can these two data (vector + scalar data) best be coupled into a single visualization? What techniques allow most of the data to be immediately apparent and understood by the scientist? Note: VTK is capable of automatically selecting vectors vs. scalars when drawing streamlines in multi-modal datasets.

Problem 2: Visualization of Magnetic Resonance Volumes

Here we explore visualization of another common medical imaging modality. The dataset being explored here is an MRI (Magnetic Resonance Imaging) Scan. The data for this problem is at mri.vtk.

a. Generate a series of volume renderings of the MRI dataset using the raycasting technique. Vary the sampling parameters to generate several renderings illustrating the effects of the Nyquist frequency as it applies to Raycasting.

b. Generate a series of volume renderings of the MRI dataset using texture-based approaches. Vary the number of planes used to sample the volume to illustrate the effects of the Nyquist frequency as it applies to Texture Slicing.

c. Generate a series of iso-surfaces of the MRI dataset. Be sure to fully explore the space of possible iso-values before drawing any conclusions. Comment on any difficulties you might have extracting meaningful surfaces.

d. Which type of rendering technique used (in a-c) is best suited for MRI visualization? Justify your answer and provide a pipeline that generates it with a colormap or transfer function of your choice.

Grads Only

e. Combine the volume rendering of the mri.vtk with a volume rendering of white_matter.vtk in a single rendering. Structure your pipeline and transfer function(s) to be able to display both volumes simultaneously in a single visualization. Note: A technique found in the terminator example can be used here, but is NOT necessary. Briefly discuss the reason(s) you have for solving this the way you did.

Problem 3: Iso-surface Analysis

In this problem, the space of iso-values will be explored BEFORE any iso-surfaces are extracted. Analysis will be performed in order to accurately predict which iso-values contain the most meaningful information. The data for this problem is at columbia_river_001.vtk and columbia_river_002.vtk. As above, these data are unstructured hexahedral meshes. An excellent paper and presentation of The Contour Spectrum has been created by the author. Remember that there are several properties of the data interesting to scientists in this field: curvature, volume, surface area, and shape.

Hints: VTK provides modules to extract properties of their data. Of particular interest are vtkCurvatures and vtkMassProperties. Also, remember that a single version can render to two spreadsheet cells given additional sub-pipelines consisting of Renderers and Cells. Locations for these can be specified using the CellLocation module.

a. Form contour spectra for each of the datasets consisting of surface area and enclosed volume for each dataset. What information do these spectra add that can help you predict good iso-values to visualize?

b. Use the information from the contour spectra in (b) to pull out the single contour in each dataset you think is most informative for the scientist. Justify your choice.

Grads Only

c. Contour spectra can have an arbitrary number of components. For these two data, discuss the components you think are most important to highlighting interesting areas of the data. Present at least two visualizations of a single contour spectra comprised of these components. A minimum of 3 spectral elements should be used to generate the contour spectrum for each dataset.

Problem 4: Visualization of Medical Volumes (Optional for Extra Credit)

In this problem, we will investigate different volume rendering techniques for structured grids. All of the datasets for this part are structured grids generated from CT scans. The data for this problem is at chest.vtk and tooth.vtk. This is a difficult problem and it is important to realize that computing histograms in a PythonSource module is certainly possible, but using an additional utility (e.g. Teem) is much easier.

a. Building from the methods from 2a, generate a 2-d join histogram of scalar value vs. gradient magnitude. Use this histogram and the discussion from class to determine the number of distinct materials in the tooth dataset. Explain

b. Generate a joint histogram as in (a) and use it to guide the development of a transfer function for the chest dataset that can easily visualize bone and one other structure of your choice. Joint histograms such as these are very useful in transfer function specification. Comment on the ways in which both single and multi-dimensional transfer functions can take advantage of these histograms to better visualize volume data.

c. Explore histogram manipulation techniques such as histogram equalization, range mapping, etc to the joint histograms in (a) and (b). How do the various histogram manipulations help or hinder your understanding of the data.


a. Explore the various methods of manipulating volume data (vtkVolumeProperty) to generate strange and funny visualizations of your favorite instructor.

Personal tools