Stereo Matching

3D has always fascinated me and so when I found out that stereo existed I really wanted to see it happening in real time.Unfortunately most state of the art methods such as graph based or belief propagation I found online were too slow for my needs.I tried using various methods for speeding it up including segmentation based approaches however they were still too slow for my real time needs of at around 30 FPS. I settled for trying to implement stereo using a Dynamic Programming Approach and since the process it parallel it made an excellent candidate for CUDA Acceleration.

Features:

    • Utilizes the GPU Based Image Processing Library to achieve massive parallel speed ups
    • Features own 3D Calibration setup for rectifying images

The following video is the Stereo Matching demo:

The following picture demonstrates the 3D Calibration:

GPU Image Processing Library

A problem with image processing I found was many were usually very slow to run on the CPU. This meant that real-time and interactive image processing was not possible. The goal of this project is to create a library in C++ that allows for image processing in real time and create applications that allow for real time interactions with the user.

Features:

    • Image processing functions implemented on the GPU using NVIDIA's CUDA
    • Library includes a custom memory manager to track memory leaks
    • Created a window management library using SFML
    • Created a basic 3D model library using OpenGL
    • Manages camera input using DirectShow
    • Various demo applications such as Image Stitching, 3D Calibration and Image Segmentation

The following video is the Image Stitching demo:

Physics Engine

Created a physics and rendering engine in C++. The goal was to simulate rigid body dynamics and to create a 2D graphics engine for rendering 2D polygons

Features:

    • Simulate physics of 2D polygons and particles and collisions between both
    • Includes a message passing based UI following utilizing polymorphism to create various UI object interfaces
    • Wrapped OpenGL into a custom engine to render polygons, points and text in 2D
    • UI objects are implemented through OpenGL for drawing and SDL for window management

The code and application is available here.