MGC Projection Transform

= General Description =

This component takes a given image and applies a project transform. A projection transform is taking a front-view image and applying a transform such that the image seems as though we are looking top-down. This is very useful for the forward vehicle projection.

Owners

 * Adam.brockett

Contributors

 * Matt Jones

= Algorithm Outline =

Steps:
 * Load an image
 * Select three points to use as coordinates for our transformation.
 * Pick two points parallel to the robot and a third point projected forward.
 * Using these three points, calculate a new third point taking the translation from the first point and the old third point.
 * Use OpenCV to calculate an affine/projection matrix using these two images (from your points).
 * Use your transformation to calculate your desired projection.

Note: This step should only need to be run once as long as the camera isn't touched after the initial calculation.

= Performance Requirements =

This component must complete a cycle of projection transform at 10Hz, 10 times a second.

= Input =


 * An image to be transformed

= Output =


 * The transformed image

= Related Links =
 * http://www.seas.upenn.edu/~bensapp/opencvdocs/ref/opencvref_cv.htm
 * http://dasl.mem.drexel.edu/~noahKuntz/openCVTut5.html

= Developer Discussion =
 * This is going to be one of the simplest components! JBridon 22:15, 3 October 2009 (UTC)
 * Should this even be a component? Given the unknown that is how much image data can we move around at once, sending data needlessly is probably silly.  This could be folded into RoadSelectInterface.  OTOH, I finally finished a component, I shouldn't be so quick to kill it. Adam.brockett 03:49, 11 April 2010 (UTC)