Medical Image Viewer - May 23, 2006
   Since starting at the Olin Neuropsychiatry Research Center, I've had an interest in visualizing the MRI data we were collecting. The format we primarily use at the center is Analyze 7.5, which is used by SPM. The data is stored in an image/header pair. Data from the MRI scanner is stored in Analyze format as well as Dicom format. The dicom format contains much more information about the scan and when I wanted to write a medical image viewer, I chose to support Dicom format first.

While dicom format is extremely useful, it is incredibily difficult to work with. Reading the images is best left to a library like gdcm. Because of the inumerable ways the data cab be encoded; jpeg2000, compressed, mpeg, RGB or LUT, its best to use a library. The dicom header is also quite complex, as a dictionary is needed to retrieve the information.

After images are read in using a library, the most complex piece becomes the orientation: which side of the image is left/right/anterior/superior, etc. I'm thinking it might have been easiest to forget about the orientation and let the user figure out which way their image was pointing. However... that was not my intention when starting this project. My intention was to create a program that allowed complex viewing and manipulation of medical images, and also to gain a better understanding of them. I would need to figure out the orientation problem for this program.

View ASP Parser State Diagram
Street Maps - October 8, 2003
   While at Travlers, I've had the opportunity to solve a geolocation problem and in the process was able to generate some interesting street maps. I had first set out to create an application that would locate the closest vendors to a claimant. A simple radius search that has been done many times before by various companies. After finding a source of free geographic data from the Census Bureau, I found I could make street maps with the data as well. Some of the material I created may be copyrighted by Travelers, so I've limited this section to just results of the map project.
   I came across the Census Bureau's data while I was looking for a source of data from which to create driving directions. So I decided creating maps would be the best way to learn how I could create driving directions. I quickly found that it was not a good source of data for driving directions because it does not contain three important things: exit numbers, one way street indicator, street intersection data. So I stuck with making maps, hopefuly for the purpose of showing a user where the vendors are in relation to their address. The maps shown here do not have street labels, which keeps them from becoming cluttered and unreadable. I am currently working on methods of improving the map drawing to allow for select street names when many streets are present. When street labels are added, they follow the angle of the street segment.

View Maps in Connecticut

06183 (Hartford, CT) 1.57MB (2600x1950)

06269 (Storrs, CT) 820KB (2600x1950)

06615 (Stratford, CT) 770KB (2600x1950)

06770 (Naugatuck, CT) 511KB (2600x1950)
ASP Parser/Formatter - April 16, 2003
   I've created an ASP parser that can be used to format ASP pages. View the state diagram. Code is not yet available on the website, but the state diagram describes how one would be able to parse HTML containing ASP and format it according to their standards.

View ASP Parser State Diagram
C++ Reference Card - November, 2003
   I decided to create a reference card for C/C++ after searching for one for some time. A non-printable PDF is available, and the cards may also be purchased in a printed/laminated form.

View C++ Reference Card
Eye-gaze Tracking

Friday May 17, 2002
   We finally finished the Eye-Gaze Tracking system. Wajid, Hardik and I completed the project as our senior design lab.

Eye Gaze Definitions Paper
 or  PDF

Eye Gaze Tracking System Manual

 Download Eye Gaze Tracking program
Friday January 18, 2002
   I added a nice GUI to the program and made it downloadable. The buttons change the edge detection threshold value. Anything below that value will be outlined. The block size on the pixelation increments by one, but the actual block sizes are powers of two. The block size is taken as a function of the width and height of the bitmap.

 Download Edge Detection Program
Thursday January 17, 2002
   The second bitmap test used the Windows CBitmap object to load and store the bitmap. This overcame the 8-bit color boundary. Now it reads only 24-bit color bitmaps.

View Bitmap Test 2
Monday January 7, 2002
   This was a test I did for finding edges in a picture, for the purpose of creating an eye-gaze tracking system. The image is three seperate images, the top image is the original picture. I only read in 256 color bitmaps, so the skin looks green in the picture. The middle image is the original converted to gray-scale. The bottom image is the gray-scale image with edge detection to find the edge of any pixels that are on the threshold of .5 on a 0.0-1.0 scale. White being 1.0, and black being 0.0.
   More work needs to be done to get a better image of the pupil. Better lighting is important, and possibly to do seperate edge detection on each color channel. That will produce edges for different parts of the eye; the skin of the face, the pupil, and the whites of the eye. I will need to retrieve images directly from a video capture source to process them in real time. More work needs to be done to find the center of the pupil and the corners of the eyes to be able to project where the eye is looking. A possible addition to this project would be stereoscopic cameras for better gaze-tracking.

View Bitmap Test 1
Radial Tree Graph Drawing Algorithm - Saturday January 5, 2002
   Abstract from CSE269. We created a graph drawing algorithm for representing large heirarchies. This graph was developed for use in the Web Navigation System that we built for our senior design project. The graph algorithm is suited for websites, directory trees, and any heirarchy that expands in size exponentially.

 Download RadialTreeGraph.pdf
Web Navigation System - Thursday December 6, 2001
   Web Navigation System (WNS) that was developed for our senior design project in CSE269 (Fall 2001). Our objective was to create a website explorer, so a user could explore an entire website on one screen. To run the program, save the files in into one location and run graph.exe. To use, enter a website into the control panel, and change the level to 3. Click Go and explore the resulting graph by clicking and dragging the mouse over it. Externally linked websites are off to the right in green. Right Click on a point to make it the new root of the graph.
   WNS was developed by Wajid Ahmed, Saira, Greg Book, Matt Costa, Neeta Keshary, and Freddie Pitts. We applied the same fisheye techniques that I developed in CSE275.

Fisheye View - Friday May 11, 2001
   Our first attempt at graph drawing for CSE275 (Computer Graphics). We developed a system to read in an arbitrary graph and apply the fisheye view to it. This would allow the user the navigate a graph by magnifying portions of it as they move over the graph. I worked with Tara Ceil and Nitiraj Patel on this project (Spring 2001).

View CSE275 Project Page
Prime Number Generator - Friday January 12, 2001
   Prime number generator. I wrote a program to do a simple calculation to generate prime numbers. It starts at 3 and runs until the user hits a key. It also generates statistics such as the gap between prime numbers, which should get larger as the prime numbers get larger. Also the count since the last largest gap. These can be removed to make the program run faster. The program is pretty fast as it is, since it only compares the current prime number candidate against numbers up to the square root of that candidate.

 Download prime.cpp
TraceRoute - Tuesday Dec 19, 2000
   An interesting trace done from my cable modem in Willimantic to Storrs, a distance of about 7.5 miles. Details included as to where the information is going.

View TraceRoute

© The Book Company 2002