Sketch Recognition and Vision:

 CircuitBoard  [mov] [pdf
PIMP
CircuitBoard is a program that recognizes hand-drawn logic circuits and simulates them. My contribution to the project was the training, detection and recognition of logic gates. I use spatial constraints to find a closed silhouette, and to classify it I use the shape context of the silhouette and compare them to the shape context of training samples. This method is invariant of rotation, scale and distortion.  
Accepted for a long talk at the Sketch Recognition Workshop of the IUI conference in Florida 2009.                     

 Tic Tac Toe  [mov
PIMP
Tic Tac Toe is a game that recognizes hand-drawn Tic Tac Toe boards and plays against the user. The computer recognizes once the user has drawn an "X" into one of the squares and plays back with an "O" of a corresponding size. The user can interact with many boards at the same time. The recognition is implemented with spatial constraits and is invariant of rotation, scale and distortion.          

 Object recognition  [html] (coming soon!)
PIMP
For this project we implemented a program that recognizes three types of shapes. We use Canny edge detection and Hough transformation to find the distinct lines. We then loop though the lines to find a closed silhouette and finally compare angles and lengths to the known shapes to determine which object it is.


Graphics:

 Rigging  [mov
PIMP
The program takes as input a skeleton file, a motion capture file and a model file. The rigging consists of two steps: fitting the skeleton to the model and assigning vertices to the bones. For the first step I have implemented a picking interface that lets the user drag joints of the skeleton to desired locations. Once the skeleton has been properly placed the user can press a button and the program will automatically assign vertices to the bones, based on proximity. The motion capture data can then be applied to the model.

 Water Simulation  [mov
PIMP
This program simulates water. For the water motion I use a 60 x 60 grid and a numerical solution of the the wave equation, and for the shading I use the Fresnel equation in the fragment shader.
The program has a picking interface such that if a user clicks a vertex of the grid it will pull down that vertex and cause a wave. The rain is implemented by randomly pulling down a vertex.                                                                  

 Reel  [mov
PIMP
This is a collection of smaller graphics projects that I have implemented. Techniques I used include:
 - projective shadows and textures
 - forward kinematics
 - physical and sequential animation
 - lighting, shading and texturing
 - environment mapping


Multimodal Interaction:

 Portable Image Manipulating Program  [pdf]
click to see video
This is an image editor with a multimodal interface, programmed on Maemo, the platform for Nokia N900. The application has the common functionalities of popular image editors (brushes, shapes, flood fill, color picking, special effects, load, save, etc.), and it offers the ability to take a picture and instantly start editing it. The user can interact with the program using the touch screen and keyboard, by shaking or tilting the phone, and with voice commands.                                                             


AI and Data Mining:

 Promotion Planning  [pdf
PIMP
For this project we implemented a program that, based on a large set of supermarket data, recommends products to promote and customers to target, to maximize the retailer's profit.
We use the FP Tree mining method to infer association rules for transactions. Based on these rules we build an objective function that we maximize with respect to product to find the optimal set of products to promote. Given those products we use the same function to find the optimal set of customers.

 MovieGen  [pdf]
PIMP
MovieGen is a movie recommendation system. It takes in the user's personal information and uses SVM to predict their preferred movie features. Based on the SVM prediction it selects movies from the dataset, clusters them using the k-means algorithm, and generates questions to ask the user. The user's answers are then used to refine the movieset and finally the system recommends the most applicable movies for the user.


Scalable Web Applications:

 YouTV  [html] (coming soon!)
PIMP
YouTV is a website where users can create their own TV channels. They can upload YouTube videos to the channel and the channel will stream those videos in a sequence, based on their rating. Users can share their channels with other users. There are also public channels of common material such as bloopers, dance, etc. Users can chat with other users that are watching the same channel.