Final Projects

Goals of the projects

Get hands-on experience with solving real-world problems in computer graphics using effective visual encoding and interaction.

One of the most exciting aspects of these final projects is that I won't simply "feed" you ideas, you will do some research of your own and have the freedom to design methods in your mind if you wish - be creative! This could include learn to understand and build your framework on top of other people's programs, combine several frameworks together or design new methods etc.

The other exciting aspects of these finals is that the "building-block" nature of the work (and any real-world projects). In other words, you won't just hand in your code and expect never to user it again, but rather you can expect to see the fruits of your labor from this assignment even in the future (or so we hope!). This of course means that careful planning and a good design are paramount (you knew that from both software engineering and graphics perspectives!).

Datasets:

Here is the website you can download the new data. What you need to do is to download the toolbox NBS.zip, unzip it, and find the data in the directory called SchizophreniaExample. In that directory, nodeLabels.txt and COG.txt define the name and the 3D positions of the brain regions sampled from 27 subjects. The coorelation matrices of these regions are defined in the directory called matrices.

Tasks brain scientists like to preform (that your visualization method should support.)

This paper http://research.microsoft.com/en-us/um/people/nath/docs/brainvis_chi2013.pdf answers this question.

Project Assignment 1: Position Groups

In this project you will design and implement methods to reduce visual clutter introduced by complex 3D graphs. One fascinating research topic is to learn how our brains work. One way to answer this question is to look into the functional or structural connectivity of our brain. For the functional connectivity, an imaging sampling approach is called functional magnetic resonance imaging or fMRI, which creates images in which the signal intensity depends on the changes in neuronal activity, blood flow, and oxygen consumption, and can thus be used as a marker of brain activity. The beauty of this approach is that it captures detailed nerve cell activity thus includes fair levels of details. One problem though that for a fMRI dataset captured at one time instance alone, it is estimated that 80 billion nerve cells in the human brain make about 100 trillion connections with each other, the length of these connections is estimated at between 10^5 and 10^7 km. Keeping track of these cells and their interconnections is a task well beyond limited human working memory. Brain scientists use computer-based tools to trace various brain regions (in so-called regions of interests or ROIs) interactively in order to progressively construct functional connectivity.

You have seen the structural connectivity in your coloring project. It is called diffusion MRI which measures how water diffuses in our brain to construct structural connectivity. In this project, we will be looking into function MRI data which represent the other aspect of human brains. Of course, if your code is engineered well enough, no big change is needed to adapt to a new dataset.

A hard question is how do we design interactive visualizations to support seeing patterns from data. Here are the steps that your algorithm can work:

1. Clustering: cluster the structural or functional connectivity maps. You can get a k-mean algorithm here: https://github.com/hwkang/Distinctive-Approximate-KMeans to achieve real-time clustering with our dataset.

2. Bundling edges: For the edge bundling and smoothing, the following papers will help: http://www.win.tue.nl/~dholten/papers/bundles_infovis.pdf. http://www.cse.ust.hk/~zhouhong/articles/infovis08_weiwei.pdf .

I have shared the 2D bundling program using the Holten approach above. Your job is to migrate that algorithm to 3D.

Your group can either implement k-mean or 3D bundling and you do not have to do both.

Project Assignment 2: Coloring Groups

In this project you will continue the adventure to encode orientation and scalar field. For each group member, you must pick one of the following methods and work with your group members to create a single framework that the first three methods in the bullet list can be used either independently or combined when applicable.

For students in this group, you do not have to use the new datasets and can encode the FA values from the coloring project (project 5).

Your job is to:

- Design and implement a spiral color model to encode the FA values in the three-dimensional brain datasets and evaluate its usefulness http://earthobservatory.nasa.gov/blogs/elegantfigures/2013/08/06/subtleties-of-color-part-2-of-6/

- Design and implement an interactive divergent color scheme to encode the FA values in the three-dimensional brain datasets and evaluate its usefulness http://www.sandia.gov/~kmorel/documents/ColorMaps/ColorMaps.pdf - Design and implement a new orientation coloring method – this time we will use a classical clustering algorithm called k-mean to group the fibers (see above) and use a novel Boy-surface approach to color the fibers by orientations. Real-time methods for both k-mean and Boy-surface coloring are available. Your job is to put the code together and make sure the pieces will work together in an integrated framework.

Project Assignment 3: Seeing Relationships

Please talk to your group leader and the instructor on these two projects.

Strategy

Incremental development will probably result in the most efficient use of your time. For example, first try to get your program to draw just the scene. Use the trackball framework provided in your other projects to interact (rotate and zoom in an out) the datasets. You can also move objects around using the Keyboard routine unless your project requires the Leap motion control. Write modules of other pieces and once you’ve got the interaction part, combine it with the scene to make sure test your algorithms.

What to turn in

Source code only by email to TA and the instructor. Please do not include any .o files. Please include:

- A README with your handin containing basic information about your design decisions and any known bugs or extra credit;

- How to compile and run your code as if you are telling a colleague who is to continue the development.