Optic Flow Acceleration Using FPGA HW

Final Project for CS 535

Description: Optic Flow Algorithms are very useful for applications which need motion data, and object tracking. The state-of-the-art software for this type of algorithm runs at about 3 Hz. This project will endeavor to perform edge detection on incoming streaming video, and then use the resulting edge data to perform optic flow. The input to the FPX will be UDP packets that contain grayscale image data for each frame of a video stream. The output will be a UDP packet per frame (except the first) which contains a series of vectors relating to how each portion of the image changed.

Introduction to Optic Flow

Optic flow takes two images, or each successive frame pairs of a video stream, and determines the "flow" of portions of the picture. In Figure 1, we see a red box moving from left to right, and optic flow produces a series of vectors which relate to the motion that occurred.
+ =
Figure 1. The desired effect of Optic Flow.

Applications

Optic flow is used in mobile robotics to determine when objects are moving in its field of view, as well as track the robots own movement. The vectors returned by the optic flow algorithm can be used to warn of impending collisions, and allow a robot to track (and follow) a given target. Optic flow is also used for certain types of compression, as in the MPEG video standard. Instead of sending portions of the picture over again that have just moved a small amount, the change in position is sent, thereby acheiving a significant space savings.

Project Breakdown

Status Report

Final Presentation

Documentation