Chelsea Robertson
croberts@cs.utah.edu
September 22, 2005
VTK Pipeline - This shows how the data objects (denoted in all lowercase) flow through the process objects (denoted in all caps).
unconnected set of points -> READER -> unconnected polydata -> FILTER -> triangulated polydata -> MAPPER -> geometric primitives -> ACTOR
The first script (thorax.tcl) produces a height field representation of the electric field produced by the heart in a slice through a human thorax. The data for the height field model consists of 618 point locations derived from an MRI scan.
The data was provided in raw format as an unconnected set of points. The first step was to convert the given data into one dataset in appropriate vtk format. The data for the model is merged and converted into polydata using input.tcl. This file reads in the two datasets, replaces the unused z values in the original set of points with the electric field potential, and creates newpoints.vtk.
This file is read in as unconnected polygonal data, and the data is triangulated using the vtkDelaunay2D filter. The polydata is mapped to graphics primitives using vtkPolyDataMapper and is rendered into an interactive window. Below are two screenshots of the height field generated from the thorax data points.
![]() |
![]() |
VTK Pipeline
grayscale image -> READER ->structured point datasets ->
FILTER -> geometry
(and scalar data) -> FILTER -> geometry -> WARP ->
warped geometry ->
MAPPER -> geometric primitives -> ACTOR
The second script (mthood.tcl) produces a height field of Mt. Hood from a pgm file. This file is read in using vtkPNMReader, which creates structured point datasets. These are fed into vtkImageDataGeometryFilter which is used to extract the geometry. vtkMergeFilter is used to merge the geometry and the scalar data from the original datasets. Finally, vtkWarpScalar is used to scale the data in the z direction to produce the height field. Below are two screenshots of the Mt. Hood height field generated from the elevation data.
![]() |
![]() |
The script file (contours.tcl) produces contours maps for three different datasets, an MRI image of the brain, an infrared view of the human body, and an elevation map of the United States of America. The first two datasets were given in vtk format and were easily read in using vtkStructuredPointsReader. The third dataset was an image I found on the web. This dataset was converted into a .pgm file and handled in the same manner as the Mt. Hood image, to produce polydata. The data was then sent through the vtkContourFilter in order to produce the contour lines. Then it was mapped and rendered to produce the contour images, which allow the user to zoom, pan, and spin the model. In addition, this GUI allows the user to switch between the three contour maps and also individually adjust the number of contours shown for each map.
VTK Pipeline
structured points -> READER ->structured point dataset ->
FILTER -> isolines (polydata) ->
MAPPER -> geometric primitives -> ACTOR
Below are three contour map images of the brain data from brain.vtk. The images contain 8, 15, and 29 contours, spanning the range from 0 to 220. It appears that the data is not evenly distributed among this range. The image on the left does not accurately display the all of the data from the MRI scan, while the image on the right becomes unclear due to the uneven distribution. I think the image in the center is the best for viewing this dataset.
![]() |
![]() |
![]() |
VTK Pipeline
structured points -> READER ->structured point dataset ->
FILTER -> isolines (polydata) ->
MAPPER -> geometric primitives -> ACTOR
This data set is quite small, but the data seems to be more evenly distributed than the MRI scan of the brain. The three images below show 11, 16, and 20 contour lines, respectively, spanning the range from 0 to 250. In this case, I believe the image with 11 contours allows for the most informative contour map. In the other images, the lines become cluttered and blend together, making it difficult to see the different contours.
![]() |
![]() |
![]() |
VTK Pipeline
grayscale image -> READER ->structured point datasets ->
FILTER -> geometry
(and scalar data) -> FILTER -> isolines (polydata) -> MAPPER -> geometric primitives -> ACTOR
Here is the original color image that was used to produce the contours, which was converted into a grayscale .pgm file.
![]() |
I chose to use an elevation map of the United States as my third dataset. I thought it would be interesting to look at the contour map of the US because this dataset is so unevenly distributed. The flat and mountainous regions, which are displayed in the contour maps below, make it an interesting dataset to visualize. The images span the range of 0 to 500 with 21, 35, and 55 contour lines, from left to right. Below each image is a magnified view of the contour map in the midwest region of the USA, so that you can actually see the contour lines. The maps show that the coasts are fairly mountainous while the center is relatively flat. Any of these images display the data pretty well, but I think the one on the left is the clearest because it has the fewest contours, leading to a clearer image.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
What properties does a dataset need to have in order to have contour lines that make sense (and contribute to the visualization)?
A dataset needs to represent a fairly continous function across the image in order for contour lines to make sense. The dataset should cover a range of values and those values should contain some relationship. Otherwise, the contour lines will be fairly random and insignificant in connecting the data, thus providing a useless visualization.
Where are a few places that these properties can be found?
A few places where these properties can be found are medical images, topological maps, and weather maps marked with isotherms. These images satisfy the properties stated above because they all cover a range of values, represent fairly constant functions, and contain relationships between the data points.
What data are you visualizing? Why do you think it is interesting?
These questions are answered above in the USA Elevation Data section.