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
Modules:
- Edge Filter - filters the image looking for vertical and horizontal edges (see Figure 2)
Inputs: 256-grayscale 320x200 bitmap as a UDP packet
Outputs: 320x200 single bit map of edges from the image
- Optic Flow - determines which 8x8 patches of the image have moved
Inputs: the edge data using a UDP interface
Outputs: 40x25 vector field as a UDP packet
->
_,-
|
Figure 2. The effect of Edge Filtering.
- Component Assignment
- Time Schedule
- Since the modules can be provided will sample input, there are no dependancies in this project
- The modules will be done and tested by Nov. 28
- Integration of the modules will be started on Nov.28 and completely tested and working by Dec. 5
- Verification
- The output cells of the combined module will be compared with the output of the equivalent software algorithm
Status Report
Final Presentation
Documentation