CS 6630 : Scientific Visualization
Project 3 - Isosurfaces

Amjidanutpan Ramanujam (u0321202)
amjith.r@gmail.com



ISOSURFACE:
 
head.tcl - This script will read the given data and visualize it using the iso-surfaces. The given data is a CT scan of human head. A contour filter is used to visualize the voxels that correspond to specific isovalues. The iso values are chosen to highlight the Skin and the Bone data in the CT scan. By setting the transparency (or alpha value) in the color maps we can visualize more than one isosurface. This gives us the ability to see through the physical outer layer.

In order to visualize both the iso surfaces two pipelines were used. The data is read from a common source head.120.vtk, but two similar pipelines were used for the two isosurfaces. The structure of both the pipelines were same.

A LookUpTable was created for each isosurface with different transparencies. For this example, I chose the HSV method to generate the color maps. The skin was made transparent and the bone was made opaque by setting the alpha values to 0.6 and 1.0 respectively. A red tint was given to the skin while the bone was maintained at white by zeroing the saturation on the bones. ImageMapToColors method in
vtk is used to color map the entire volume. The output of the ImageMapToColors and the ContourFilter are sent to the vtkProbeFilter. This get the scalar values from the curvature datasets onto the (vertices of the) isosurface of the head datasets.


Then the usual mapper, renderer and the actor are called to do the graphics display.




The isovalue is set to 70 in order to get this bone data highlighted.



The isovalue is set to 25 in order to get this skin data highlighted.



In order to get both the isosurfaces we have to set the alpha of the skin to be 0.6 and the alpha of the bone to be 1.0. Also the color map for the bone data sets the saturation to zero thus making it white.


head_norm.tcl - This script will use the norm.120.vtk to apply colors using the color map and uses the vtkProbeFilter to combine the color data with the volume data read from the head.120.vtk. This visualization will let us differentiate between flat surfaces and the curved surfaces. The color changes with the curvature.



The skin folds and the dips along the eyelid are differentiated from the remaining surface using different colors. There is very little data with red mapping which corresponds to sharp curvatures. This is useful is identifying flat surfaces.


head_angle.tcl - This script will use the angle.120.vtk to apply colors using the color map and uses the vtkProbeFilter to combine the color data with the volume data read from the head.120.vtk. This visualization will let us differentiate between various types of curvatures. For example in the image given below a cup is given by red and a cap is represented by cyan. The image is intentionally zoomed in to show the cups in the eye and the cap in the nose tip. A clear distinction is seen in the center of the upper lip where the red denotes a cup which is surrounded by a green which means a  valley. Typically the ear is zoomed in to show this difference, but I have chosen the eye and the upper lip to show the same effect.





BIVARIATE Mapping:

head_bivariate.tcl - This script will read the head.120.vtk and the anglenorm.120.8.vtk use the former for isosurfacing the volume and the later for coloring the data.


 


Two different snapshots are shown above for the bivariate color mapping of the head data with skin iso value. The reason I feel that these two images are interesting is because, in the second image the color near the ear gives us a clear distinction about the change in curvature. The first image is kind of an overview of the whole picture and it is interesting because the property of the colormap guarantees a white color(or min saturation) when the norm is zero(flat surface), which is clearly brought out in the forehead and chin area of the Image1.


The ideal disc recommended in the hint section is matched with a similar disc below. The Saturation varies along the x- axis and the Hue varies along the y- axis.




The Bivariate Square

Questions :

1. 
Which isosurfaces look the most interesting, and how did you find them?
The only isosurfaces that were interesting were the bone and the skin isosurfaces. They were found at the data values corresponding to 70 and 25 for bone and skin respectively. I found them by trial and error. First I thought that a slider could be more like a scientist's  solution but being an engineer I went for the efficient way rather than the elegant way, which gave me the result in a couple of minutes.

2.  Describe how the two values (norm and angle) relate to the shape of the iso surface?
 The  norm corresponds to the amount of curvature. So norm will be zero for flat surfaces and it will have a high value for cup or cap. The angle corresponds to the nature of the curvature,  the value of the angle changes with the type of the curvature, viz,  cup, ridge, saddle, valley, cap etc.

3What do you think works best, or what are the benefits of the different approaches?
None of them is a clear winner, because it really boils down to what we are looking for. Though for this data set I feel that norm was more appropriate than the angle, because the angle coloring produced a funky looking image with lots of spots. It was a melee of colors rather than any useful information. Talking of benefits, norm coloring differentiated the flat surfaces from the curved surfaces and the angle coloring helped us distinguish between the various types of curves.

4. What does the color map key say about the curvature at each point?
The color map key clearly indicates that the absence of saturation dominates the arena where the surface is flat. In other words, the saturation value of zero in the surfaces where norm is zero will make  those flat surfaces look white, because the absence of saturation will override any Hue information present.