Computer Vision

These computer vision projects cover fundamentals of image formation, camera imaging geometry, feature detection and matching, stereo, camera calibration, motion estimation and probabilistic tracking, image classification, and scene understanding.

Detecting Traffic Lights and Signs

For this Python project, I was tasked with writing a program to detect traffic lights and traffic signs in both simulated images and real-world photos.

The images are represented using 2D and 3D arrays with 3 color channels. I applied the Hough algorithms to detect prevalent circles and lines. Additionally, the project addressed the presence of distortion and noise in an image.

Output Images

Detecting Traffic Lights and Signs

Object Tracking and Pedestrian Detection

In this project, I implemented the Kalman and Particle filters to track objects and pedestrians in videos. These algorithms relied on measurements, prior states, and expectations between frames. The main challenge was continuing to locate the object when occlusions occured.

Output Frames

Object Tracking and Pedestrian Detection

Faces Classification

In this project, I implemented face recognition using Principal Component Analysis (PCA), (Ada)Boosting, and the Viola-Jones algorithm.

Activity Classification

This project takes in a video of a human walking, jogging, running, boxing, waving or clapping, and correctly classifies the behavior. I created Motion History Images (MHIs), and used these images to perform activity classification as features in machine learning to train and classify the activity.

DEMO

Activity Classification

Computational Photography

Image Capture

The course explored how computation impacts the entire workflow of photography, aimed at capturing light from a (3D) scene to form a (2D) image. The traditional camera pipeline can be transformed by changing the sensor, illumination, lens, and other factors.

Camera Obscura Epsilon Photography

Camera Obscura

Epsilon Photography

Image Rendering

Images can be represented as multi-dimensional arrays on which mathematical operations can be performed to generate interesting artifacts.

Projects explored operations such as alpha blending, feature detection, and planar homography projections.

Panoramas

Panoramas

Seam Carving

Resizing of images is most effective when it considers the image content and preserves important features. The algorithm called seam carving supports content-aware image resizing for reducing and expanding image dimensions, as well as changing the aspect ratio.

A seam is an optimal horizontal or vertical path of pixels in an image. The path is selected by an image energy function, which defines the importance of a pixel. We select the low-energy pixels for removal or insertion. By repeatedly removing or adding seams we change the dimensions of image.

DEMO

Computer Vision

Photo to Cross-Stitch

This project takes a photo as input, and creates a cross-stitch needlework pattern as output with the specified number of colors and canvas background color.

I computationally found the best set of colors using K-means clustering, and ensured that detail is not lost by applying well-defined edges, vivid colors, high detail in the foreground, and subtle backgrounds.

GitHub