Sunday, April 10, 2011

CG2: Midterm Project Update

Alright, some preliminaries...

 

Name: Michael Mayo

Professor: Warren R. Carithers

Course: 4003-571

Project Updates URL: http://mseanmayo.uni.cc/news/?cat=6

 

Now then. My original project proposal didn't quite adhere to the template provided for whatever reason (I think I just completely forgot it existed) so I'll have to improvise on the "schedule" I've been following so far.

 

Here's a quick run-down of the original objectives I had for this project, along with what I have completed or revised:

  • Volumetric Display of MRI data (Revised, see below)

  • Volumetric Density Mapping (Removed)

  • Three-Dimensional Object Segmentation (Unnecessary)


 

So yeah, it would APPEAR as if I had failed in my original plans for this project. However I can assure you anything BUT has occurred. A timeline was also absent from my original proposal, so I'll have to get right into the meat of what I've accomplished so far and then go from there.

 

What's been done


As is mentioned above, MRI data visualization has been revised while the other two core items have been either dropped or deemed unnecessary. What this boils down to is the realization I had after achieving initial results that there was more than enough work to be done with MRI visualization in general. I decided that rather than focus on developing interesting density equations to display interesting effects, or try to segment the volumes themselves, I'd focus all of my energy into developing as much visualization tech. as possible for MRI data. Before I go on, here are the results of such visualizations thus far:



 

As you can see, there are quite a number of ways to render the data. My initial attempts focused on a rudimentary technique based off of the original "slices" of the images that make up the 3D texture. I wanted to draw them each on 2D quads in 3D space with a bit of alpha blending between them in order to simulate the effect of peering into a 3D volume. I ran into problems with this approach both due to aliasing effects when looking from the side (2D flat images are quite boring from the profile...) as well as high polygon counts making the approach less than viable if I wanted to do any special post processing or work with the data in any way. Here's an example of the aliasing effect I was encountering:



 

I started reading about a more advanced method for volume visualization known as ray marching, in which rays are fired into the volume and accumulate density values until an opaque threshold is met and the ray terminates. This method was daunting at first due to its complexity. I was worried at first I didn't understand the theory well enough to implement it, and that once I did I wouldn't be able to get it to render fast enough to be interactive (I had this quarter's experience with the ray tracing assignments to reflect on in that respect). However after much frustration I DID manage to get it working with shaders, which gave me all the performance I would need. Pic related:


 

There's tons of more info about how this works and what I've done, but I'm not sure how much I'm supposed to include for this update. I've documented most of it in other posts however, so here they are: link 1, link 2.

 

My general assessment of my own work on this project so far is very positive and optimistic. Initially, as the links above detail, I felt I was far too ambitious with this project. It took me quite a bit of time to get ray marching working correctly, and I had a few other crucial roadblocks in my progress. Overall I think I'm actually getting more done than I had originally envisioned, and faster than I had anticipated. I'm working on cleaning everything up at the moment and adding support for a few different file formats, and then I'll start adding features again and getting this ready for the presentation.

 

What's next


This sums up what I would like to get done for the final presentation, prioritized highest importance first:

  1. Implement Transfer Functions to allow the MRI data to be isolated as the user sees fit.

  2. Provide a User Interface of some sort

  3. Add support for more file formats (public MRI data comes in several)


 

Monday, April 11th marks the beginning of Week 6. I anticipate that transfer functions be implemented by the start of Week 7,  with a user interface of some sort and extra file format support added in the final Week 8 / Week 9 stretch before presentation.

No comments:

Post a Comment