CIS 788.14k Project Ideas



Every student is expected to implement one of the projects below, or a proposed (and accepted) alternative project. I encourage you to work on or propose a project that you are personally interested in and motivated to work on. Please schedule a time to meet with me to discuss possible projects. You may work alone or in small teams. I would also encourage teams composed of a member from the applications area and one or two CIS members to tackle a specific problem in the application area. If you have a problem, but can not see an easy avenue of exploration, please come see me. A little brainstorming with a problem in hand can usually lead to several additional ideas.

 

General Project Guidelines

What I expect from the projects:

  1. Initial task description, plan of attack and proposed timeline.
  2. Abstracts for at least 4 background papers (two not covered in class). If you are working in teams, then 7 for teams of two, 9 for teams of three, and two per team member for teams of four or more.
  3. Project Notebook. Preferably on the WWW. Include the items above, plus project diary, design decisions, intermediate results, timings, data set descriptions, and final results (images and possibly animations).
  4. Evaluation of the technique implemented, describing the pros and cons of the technique and avenues for further exploration.
  5. Twenty minute presentation of the project for the class and other interested parties.
  6. Lots of learning and lots of fun.


Project Deadlines


Resources Available



Possible Projects


Student Project Notebooks


Scientific Visualization

  1. Time Varying Data Slicing
  2. Use the Data Slicing technique described in Visualization '96 to produce very quick time-varying iso-contours. Since the compression was rather impressive for a single time step, create a stream containing the points within the user specified range. Cycle through sets of these points in real-time. Look at the compression ratios and disk streaming issues. The user should be able to rotate, pan, zoom, change the contour level as the animation in time is proceeding.

  3. Multivariate Volume Rendering
  4. As part of my thesis, I developed a technique to represent multi-variate volumes using Noise Splats. Here, I examined several techniques to embed noise into the texture splat reconstruction footprint. The amount of noise represents a separate variable, and the color of the noise can represent a third. The noise can be made to flicker to highlight areas where the secondary variable is high. I could use some help in applying it to real data sets and strengthening a paper I have developed. Perhaps there are some additional extensions to look at.

  5. Time-varying Flow Volumes
  6. The flow volumes presented by Becker, presented problems in turbulent flows, as the resulting topology became twisted. One solution to this is to view the seed polygon releasing smoke as emitting gaussian meta-balls. This would also extend the meta-ball technique by Brill to time-varying. The basic idea is to propagate gaussions. Now, for time dynamics, what forces are exerted on the gaussians. How do they disperse? An alternative is to release thousands of individual point particles and advect them each time. To get a flow volume, we either superimpose a grid and sum the number of particles in each grid to get a volume, or we treat each particles as a small gaussion and reconstruct a volume at the superimposed grid. For constant color, the grid points can be splatted in arbitrary order.

  7. Span-space curves for time-varying data. Generate
  8. Rafe's ideas
  9.  
  10. Slicing of finite-element meshes
  11. Dave Reed's implementation of slices is view oriented. We can also take slices in each of the x, y, and z planes to in essence, resample the mesh into a more regular space. Do this resampling with a hierarchical (quadtree, wavelet, etc.) structure. Store and compress as a multi-resolution video. Can play back a slice loop, or pick the proper direction and volume render.

  12. Decimation for smooth animation
  13. Determine system constraints to show a smoothly changing iso-surface from a time dynamic simulation. What are the polygons per second, the time to load the next representation into memory, etc. With this information, either determine the amount of decimation needed to reduce the model to the necessary size, or select a small enough region to show. Could also extend hierarchical models to time dynamics.

  14. Decimation for multi-valued data sets
  15. I don't think this has been done yet. Isosurfaces typically encode an additional variable on the surface using color. A decimation algorithm needs to preserve sharp changes in this color or texture as well.

  16. Texture mapped surfaces
  17. Some really cool papers in the 1997 IEEE Visualization conference proceedings with texture mapped surfaces.

  18. Marching cubes with data texture mapped onto it
  19. Texture map multiple data values on the surface of a contour surface. Use of color, bump maps, displacement maps, texture maps, vector carpets, etc.

  20. Span space algorithm with Marching Cubes
  21. Implement a span-space algorithm for marching cubes. Prune the interval tree and look at compaction issues. Develop strategies for distributing work across an MPP and a graphics workstation. Store the pruned interval tree on the local machine. Use it to inform the processors of which zones to apply contouring to. Can we calculate approximately how many triangles will be generated and use that to determine a level of decimation needed to achieve interactive rates.

  22. Ray traced unstructured grids with acceleration
  23. Can we surround an unstructured mesh with either a bounding cube or sphere and pre-calculate and store the entry points for a ray tracing volume renderer? That is, we want to avoid the complex operation of determining the first intersection point for a ray tracer (and subsequent entry points after holed) at each redraw. Can we precompute this and store it.

  24. Complex transfer function editor
  25. Develop a user interface and algebra for generating multi-valued and complex transfer functions.

  26. Pick-and-Query for Splatting
  27. Highlight the splat as a 3D cursor moves through it. Can we rasterize a textual message and place it on the splat as we move through. If not, have a separate window displaying the pertinent information. For scientific data, there is all kinds of interesting data/metadata to display. For medical, show tissue classification. Show decision support tree for classification.

  28. Realistic Material Textures
  29. Design textures for use in textured splats, such that when composited together produce a texture. Sample textures for muscle fibers, cellulite and spotted liver can be developed. Design a set of textures with a phase shift animation to simulate bleeding.

  30. Multi-Splatting
  31. Use a splatting technique and for each data point. Splat several entities for a multivariate representation. Can use a texture splat to show a scalar field and a vector field, followed by a line bundle to show another vector field, followed by a point cloud to show another scalar field.

  32. Use of Indexed Texture maps
  33. Use the indexed texture maps of SGI and Microsoft to achieve dynamic transfer changes, sharp transfer function edges, and embedded contour lines. Apply this to 2D data sets and a 3D slice based volume renderer.

  34. Histogram galore
  35. Explore the use of histograms as an analysis tool in new and unique ways. Plot the histogram of a variable as a function of time. Compute the histogram over a surface contour surface, slice, sphere, etc. Calculate and save histograms (and other data) for many data sets. Can we use these in data mining and searching tools? Histogram the span space intervals. Histogram other weird entities.

  36. Eigenvector Visualization
  37. Calculate and map the principle eigenvector of the stress tensor to create a vector field. Apply one of the advection vector field techniques and one of the global vector visualization techniques to this field.

  38. Magic Mirror - user interface for scientific visualization
  39. Rather than deal with everything at high-resolution. Pass a bounding cube through the data with a three-dimensional widget. High-res, volume render, whatever within the cube. This can be used to load a small portion of a volume into a 3D texture map and hardware volume render. Can also be used to sample a finite-element mesh and place the resulting 3D volume into 3D texture mapped hardware.

  40. Consistent Tetrahedralization of Finite-Element meshes
  41. Many algorithms currently require tetrahedra in their visualization (or modeling) algorithms. Care must be taken to ensure adjacent faces are subdivided consistently. For hexahedra, a brute force approach would split each hex into 24 tets. With careful analysis, I think the average number can approach 5-6, yielding a great efficiency in algorithms operating on the resulting tets.

  42. Comparison Visualization Techniques
  43. Develop techniques for comparing two simulation runs.

  44. Time Varying Data Visualization
  45. Develop techniques for visualizing time-varying data.

  46. Visualization in Image Space
  47. Develop a set of precomputed images that can be subsequently combined to produce a wide variety of visualizations. Store the alpha channel with each image. Example, store the mesh topology, separate part masks, etc. How can we encode the data into an image to preserve either range or precision? What effect does image compression have on this? Which images can be compressed? Can we support pick 'n query in this mode?

  48. Parallel or Distributed Visualization
  49. Implement any visualization algorithm in a parallel or distributed fashion.

  50. Brushing for Scientific Visualization
  51. Apply and extend the brushing techniques of multivariate visualization to more traditional visualization setting. Is this the same as the magic mirror?

  52. Sharp Edged volume intervals
  53. Extend Dave Reed's slicing algorithm to use a 1-D texture map for a sharp cut off, or sharp color and opacity changes. Can also add contour lines with a black line.

  54. Volume Deformations
  55. Use free-form deformations and the texture mapping transformation separately for a coarsely gridded FFD. We can sort the FFD parallel-pipeds to volume render in back to front order. What is the sort within a FFD box? It is based on the transformation.

  56. Selecting regions of interest using multi-variate information
  57. Take an isocontour with associated data at each vertex. Generate hash functions to control what portions of the surface get shown in an effort to declutter the image space. Have the hash function based on the x,y,z or a radial value as well as the data values d1, d2, d3, ... Now, loop through the hash table to determine which set of triangles from the isosurface should be displayed. Only those where the pressure exceeds 10? Only those in this thin slab? Develop a boolean algebra based on interval trees from the different variables. Allow for the union and intersection of slices through the interval trees. This will produce a set of zones for various visualization tasks.

     


Information Visualization

  1. Fisheye views of many pages
  2. Create a fisheye view with Texture memory - have a fixed Quadmesh - wrap the texture map around it and shift it on view changes - replot higher resolution image in focus area.

  3. Textured Splats for the stock exchange
  4. Create textures with the company logos and use those as splats

  5. Visualization techniques for Musical Instruction
  6. James Pyne in the school of music wants to develop an interactive clarinet coaching system. He has done research to investigate the FFT spectrum of the clarinet. Tonal quality is directly related to the basic harmonics of this spectra. Tonal quality is also very difficult for a Master clarinetist to convey to his or her students verbally. It also sounds different to the performer due to the conduction of the sound through bone rather than air. This system would allow the performer to visually compare their tonal quality (as well as pitch and other properties) to desired pieces. The end goal is a real time system with simplified graphics to instruct the performer.


    Algorithm Visualization

  7. Interactive fly-throughs of program modules during execution
  8. Mary Jean Harrold wants to incorporate a visual traversal of the calling chain during execution. The first task would be to have a three-dimensional or two dimensional representation of the program structure and then automatically "fly" from module to module in a nice smooth fashion. Lorensen's Boolean Textures (Viz '93) may work well for this. Issues of scoping - this module is contained in this package, etc. would be further extensions. Work in layout design is needed to produce a 3D (or 2D) representation that is not severely cluttered. Mary Jean also has several different models of software, the latest being a software architecture model.

  9. Program Analysis - calling chain
  10. At each time slice in a program, they is a distinct calling chain (the stack). Take a structured program design diagram and select just that portion in the current calling chain. Extrude this in 3D, where the third dimension represents time. As time progresses, the calling chain changes. Areas of constant structure represent bottlenecks in the code.

  11. Program Analysis - memory changes
  12. Create a 3D volume of memory versus time. How can we represent this to determine memory changes?
    - Quantize the memory values into a fixed number of colors and volume render
    - Like above, but only have opacity values where the values change.
    - Display as 2D multi-resolution video and allow the temporal dynamics to catch the users attention.
    - Only encode the gradient (in time) of the memory.
    - Associate the PC register with the volume to determine routine that changed the memory

  13. Time history plot of the PC register
  14. Use wavelets to represent the time history of the pc. Can zoom in on specific changes, or out to see global fluctuations. If the PC can be "segmented" to represent:
    a) the type of module (e.g., graphics lib, Motif lib, system, user code, etc.)
    b) the routine
    c) function or attribute of routine (I/O, functional, etc.)

     


Case Study

  1. Two or more Scalar 3D Variables
  2. Apply several visualization techniques to look at the relationship between two variables.

  3. Mixed Scalar and Vector Data
  4. Apply several visualization techniques to represent each variable and at least one to show the relationship between them.

  5. Time-varying Data
  6. Examine several techniques and assess their relative merits in illustrating time dynamics. Assess them both in an interactive or real-time setting and in a batch visualization setting.

     


Education Visualization

  1. Elementary Numerical Analysis
  2. Write Java applets (and corresponding WWW pages) to illustrate the iterative methods of root finding, polynomial or transcendental interpolation, or numerical integration rules. For root finding, show how this technique can be applied to calculating the sqrt(a) or 1/a, where the user inputs the value of a. For polynomial interpolation, show the fit and the error for using polynomials to approximate common transcendental functions.

  3. Taylor’s Series
  4. Math Visualization
  5. Newtonian Physics
  6. Fourier or Wavelet Series
  7. Steepest Descent
  8. Show this in both 2D (surface) and 3D (volume).

  9. Simplex Method
  10. We have all seen the diagrams for this is 2D. Show a similar depiction or develop a system to walk through the bounding volumes in 3D. Explore techniques to represent this in 4D.

  11. ODE's and Fourth Order Runge-Kutta
  12. Develop animations and explanations on one-step and multiple steps for the solution of initial value problems.

  13. Statistical Algorithms
  14. Chemistry / Physics
  15. Show the particle excitation with a rise in temperature, and use this as an aid to explain P=VT. Develop one or two similar animations and WWW pages.