SciVisFall2007/Assignment 3
The assignment is due at midnight on November ??th. 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.
FAQ
See FAQ here.
Data
All the data you need is available at http://www.sci.utah.edu/~cscheid/scivis_fall07/assignment3/. These are:
- fusion_0000_bin.vtk Tokamak fusion simulation, time-step 0.
- fusion_0110_bin.vtk Tokamak fusion simulation, time-step 110.
- all_particles_128.vtk Cosmological simulation, induced density field from all particles.
- halos_128.vtk Cosmological simulation, induced density field from halos only.
- chest.vtk CT scan of the chest.
- tooth.vtk CT scan of a human tooth.
- mri.vtk MRI scan of a human head.
Problem 1: Basic iso-surfacing techniques
In this problem, you will explore data using iso-surfaces. This | Wikipedia article discusses some of the fundamental properties of the data you will be visualizing. The data is represented as a vertex-centered unstructured hexahedral mesh with each point containing a single scalar and a single vector and is based on the datasets fusion_0000_bin.vtk and fusion_0110_bin.vtk.
a. For each of the two time-steps (t = 0 and t = 110) 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. How can these two 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: 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 all_particles_128.vtk and halos_128.vtk. As we discussed in class, these data are regular grids representing the density field induced by particle simulations. 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 is vtkCurvatures
a. Generate and display histograms derived from the scalars present in each of the datasets. Are these histograms useful in determining good iso-values to visualize? Why or why not, and in what cases (what types of data) can this approach be used most effectively?
b. Expand upon the scalar histograms generated in (a) by forming contour spectra for each of the datasets. What information do these spectra add to the histogram that can help you predict good iso-values to visualize?
c. 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
d. 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.
Problem 3: Visualization of Medical Volumes
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.
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.
Grads Only
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.
Problem 4: 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 rendering to illustrate 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
Grads Only
e. Explain why the techniques used in Problem 3 might be able to generate a better transfer function for either of the above volume rendering methods. Defend your answer with a simple example. Note: A full transfer function and volume rendering is NOT what is expected here.
Bonus
f. Explore the various methods of manipulating volume data (vtkVolumeProperty) to generate strange and funny visualizations of your favorite instructor.