Making Active Contours Fast

Active contours are a method of image segmentation. They are well-loved for their accuracy, ease of implementation, and nice mathematical underpinnings. However, a full level-set implementation can be quite slow, especially when dealing with large data! Here are some tips to speed things up. By combining these ideas and solid programming techniques I’ve been able to get active contour trackers running at hundreds of frames per second!
Continue reading “Making Active Contours Fast”

Tracking Through Changes in Scale

I will be presenting “Tracking Through Changes in Scale” at the International Conference on Image Processing (ICIP) in San Diego in October, 2008. This tracker uses a two-phase template matching algorithm in conjunction with a novel template update scheme to keep track of objects as their appearance and size changes drastically over the course of a video sequence.

The pdf, presentation material, and citation information will be available on the publications page after the conference. Below are videos of the experiments shown in the paper:

 
LEAVES Sequence (High Resolution Download – 11.2Mb)

 
VEHICLE Sequence (High Resolution Download – 34.8Mb)

 
BOAT Sequence (Hi Resolution Download – 2.34Mb)

Tracking and Surveillance Projects

I took a special topics course in Spring 2008 at Georgia Tech, ECE 8893: Embedded Video Surveillance Systems. The course included three projects, each shown below. Detailed information about the algorithm is in the source code comments. (All the source is in Python)

Project 1: Activity Density Estimation

Use background subtraction to find moving foreground objects in a video sequence. Then, color-code regions with the most activity. Here is the result:

Source: p1.py

Project 2: Styrofoam Airplane Tracking

Find all white styrofoam planes in the scene and track them throughout the scene. We used color thresholding and simple dynamics to do the tracking.

Source: p2.py

Project 3: Pedestrian Tracking

Count and track the pedestrians that cross on a busy sidewalk. We use a combination of motion estimation via background subtraction and feature matching using the Bhattacharyya measure.

Source: p3.py
Final Report: p3.pdf

Most of this code is very hack-y because it was done quickly. However, it was
fun to learn Python, and the class was enjoyable overall.

Decoupling Camera and Target Motion

Video tracking is widely used for surveillance, security, and defense purposes. In cases where the camera is not fixed due to pans and tilts, or due to being fixed on a moving platform, tracking can become more difficult. Camera motion must be taken into account, and objects that come and go from the field of view should be continuously and uniquely tracked. We propose a tracking system that can meet these needs by using a frame registration technique to estimate camera motion. This estimate is then used as the input control signal to a Kalman filter which estimates the target’s motion model based on measurements from a mean-shift localization scheme. Thus we decouple the camera and object motion and recast the problem in terms of a principled control theory solution.

Our experiments show that using a system built on these principles we are able to track videos with multiple objects in sequences with moving cameras. Furthermore, the techniques are computationally efficient and allow us to accomplish these results in real-time. Of specific importance is that when objects are lost off-frame they can still be uniquely identified and reacquired when they return to the field of view.

This work was published in the Proceedings of the SPIE on Electronic Imaging in this paper: Improved Tracking by Decoupling Camera and Target Motion.

See this paper and more on the publications page.

Tracking Bonanza

I’ve been working lots this past week… You could say I’m working too much because I’m choosing to work on research rather than do homework and write papers for my classes… oops! Anyway, the object of my obsession is some cool new visual tracking algorithms. I’ve been terribly remiss in putting up some details on my projects page, but in the mean time I’ll taunt my internet audience with some results I presented to my group at a meeting this Thursday: enjoy!

These are some people walking around outside my office.

Don’t know much about this video, but I’ll bet those are cars.

They were all tracked with a technique called “Kernel Tracking.” I can get these results pretty fast (real-time). Right now I’m working on some even cooler stuff with “Particle Filters.” More coming soon.