NOTE: If it isn't specified, I am the sole author of a given project

Detailed Description / Links
Equidecomposing Simple Polygons

COS 451 Final Project

Cutting polygons into pieces and arranging them into other polygons

For my final project in COS 451: Computational Geometry, I created a program in C++/OpenGL that, given two simple (non self-intersecting with no holes) polygons with the same area, can cut the first one into a finite number of pieces and arrange those pieces to form the second one. Due to the chaos of graduation, I was unable to create a detailed report or to put the code in a form that is presentable here, so this is just acting as a placeholder for now (the picture to the left is a little tease of my program in action). But I consider this to be one of the most interesting and challenging projects I've ever done at Princeton, and I plan to turn this into a detailed tutorial with an interactive Java applet on my upcoming Duke web site for graduate school!

Acoustic Modeling by a Modified Image Source Method

COS 526 Final Project

A complete acoustic modeling system supporting specular reflection, diffraction, and transmission

By Chris Tralie and Ken Jenkins
The purpose of this project was to implement a fully-featured and physically accurate (to the extent possible) acoustic simultation for determining the impulse response in arbitrary virtual environments. This is a significant improvement over my previous attempt to do this in COS 325. It can model all specular reflections with 100% accuracy up to a certain order using image sources. We also implemented an approximation of diffraction and transmission, and we even implemented frequency-dependent reflection and transmission coefficients.
Automatic Foreground Segmentation in Surveillance Videos

A simple project comparing two techniques to automatically find moving objects in surveillance videos
The purpose of this project was to implement and compare two techniques for automatic foreground detection in videos, primarily in surveillance videos where the camera position doesn't vary much. One of the techniques I implemented was based on a mixture of Gaussians, while the other was based on information in the frequency domain
COS 526: Advanced Computer Graphics Assignments Fall 2010

A survey of modern techniques in computer graphics
10/11/2010 - 11/24/2010
This is my project page for COS 526, Advanced Computer Graphics
RFID Tag Localization in Household Environments

Work towards a robot to help patients with limited motor control retrieve RFID tagged objects in a home

Duke University Summer 2010
A continuation of my work from last summer. I evaluated a particle filter approach for localizing RFID tags on a small, affordable robot platform in household environments. I developed software under the new ROS robotic operating system.


Our junior electrical engineering design class

Chris Tralie and Carlton Chow
As partners, we were charged with taking the radio control out of a remote control car and replacing it with our own automated control systems throughout the semester. Some of the control systems we built for the car included cruise control (using PID control), steering control (using pulse width modulation), and line following (using a C2 video camera and the composite video standard).
Classification of 3D Point Cloud Scans in Urban Environments

Junior Independent Work Spring 2010

Faculty Adviser:
Thomas Funkhouser
2/26/2010 - 5/11/2010
The purpose of this project is to explore classification of 3D objects extracted from a scan of a city into different categories. This has many applications, such as in photo tourism where objects in a city could be labeled for the user. My main work this semester expands classification techniques of these segmented point clouds by adding a novel 3D shape descriptor. The descriptor is based on aligning these point clouds to known models of city objects in a database
Low Budget 3D Model Reconstruction Using Space Carving

Trying to make 3D photography easy and affordable for everyone

By Chris Tralie and Chris Koscielny
For my final project for COS 429: Computer Vision, I collaborated with Chris Koscielny to create a 3D model reconstruction pipeline using camera calibration and voxel coloring techniques. The program does not quite work yet all the way through, but we did a lot of research and it's very close:
COS 429: Computer Vision Assignments Fall 2009

A class that surveyed modern computer vision techniques
10/6/2009 - 12/20/2009
This is my project page for COS 429, Computer Vision, where I will upload all of my writeups, images, etc..
Robotic Navigation with RFID Waypoints

Exploring state of the art robotic map-building and navigation algorithms on an affordable robot platform

Duke REU Project Summer 2009

Faculty Adviser Matt Reynolds
The purpose of this project was to explore occupancy grid construction and RFID heatmap generation of an unknown environment on a small, affordable robot with a laser scanner and RFID reader. The robot platform consisted of an \93iRobot Create\94 robot with an attached netbook and Hokuyo Urglaser range scanner, along with a ThingMagic Mercury\AE 5e RFID reader and a webcam. PlayerStage, an open source robotics development environment, was used to communicate with the robot hardware and to run simulations ... [full abstract]

Deep Space Death

A 3D space flight simulator game

By Chris Tralie and Johnnie Rose, Jr.
For my final project for COS 426, I collaborated with Johnnie to create a 3D space flight simulator (controllable by joystick with roll/pitch/yaw) from scratch with a cockpit, radar, basic collisions (with realistic momentum response), laser weapons, explosions, automatically generated asteroid fields, and aggressive enemy AI that can avoid obstacles and swarm together to destroy your ship.

Binaural Acoustic Ray Tracer

A 3D sound simulator built from scratch
For my final project for Perry Cook's COS 325 class, I extended the concept of ray-tracing to sound and created an acoustic ray tracer to determine the impulse response of rooms I model with a computer. The program traces around sound paths from a boombox to each of the user's "ears" (positions modeled in the computer), figuring out the loss that occurs traveling along these paths and bouncing off walls, etc. The consequence is a 3D sound model where the user perceives the location of the boombox, as well as reverberations that occur in the rooms.

COS 426: Computer Graphics Assignments Spring 2009

A comprehensive, breadth-first introductory class in computer graphics
2/18/2009 - 4/30/2009
This is my project page for COS 426, Computer Graphics, where I will upload all of my writeups and some images/movies.
COS 325: Transforming Reality with a Computer Assignments

A class that explored the boundary between Digital Signal Processing and art
2/9/2009 - 4/29/2009
Select assignments and projects for COS 325
The Talking Alarm Buddy

A friendly alarm clock that talks and listens in the morning

By Chris Tralie and Chris Koscielny
I co-authored a program for Linux with Chris Koscielny for our "Human Computer Interface" class that, upon waking the user, reads the time, the weather, the news, and then plays an arithmetic game with the user (using voice recognition) to determine whether he/she is awake. This program made use of the Sphinx 2 and Festival libraries for speech recognition and speech synthesis, respectively.

The Virtual Etch-A-Sketch and Magical Musical Swiffer

Creating a new interface for musical expression out of a swiffer, some sensors, and a microcontroller

By Chris Tralie and Chris Koscielny
The final lab for Human Computer Interface class was to use a BASIC Stamp to make an etch-a-sketch and a NIME (New Interface for Musical Expression). We used knob potentiometers as input for the etch-a-sketch, and we added sensors to a swiffer (accelerometer, button, and a pressure pad) for our musical instrument.

JPEG Decoder in C

My own "from-scratch" implementation of a JPEG viewer
As my final project for ELE 201, I created a program from scratch in C to read in raw binary data from a JPEG file and to render an image to the screen in Windows. This was a very long process, because I had to learn the nitty gritty details about the JPEG header and exactly how the transform coding/run-length coding, quantization tables, etc. worked. I summarized my research/findings in a paper.

The Java Automatic Musical Composer (c 2006)

A program that listens and writes the musical notes it hears

Back in high school, I created a program for my junior year science fair project that listens through a microphone to a violin playing and attempts to draw sheet music to the screen based on what the user played. The user can vary the tempo, the time signature, the key signature, and various other parameters that impact how the raw sound buffers are processed. The program was copyrighted as I was applying to college. This experience was my "trial by fire" introduction to DSP (which I'm now studying). I hadn't even learned intro calculus when I started to research this project, but I managed to understand the Discrete Fourier Transform well enough conceptually to feel comfortable implementing it, with the help of this excellent resource (it took several months to complete, though). I've learned a lot since then, but I like to link to this program for sentimental value.