OpticalFlow Class Reference

This CameraSensor calculates the optical flow at few points of the image based on a box matching technique. More...

#include <opticalflow.h>

Inherits lpzrobots::CameraSensor.

Collaboration diagram for OpticalFlow:
Collaboration graph
[legend]

List of all members.

Classes

struct  Vec2i

Public Types

typedef std::list< std::pair
< Vec2i, int > > 
FlowDelList

Public Member Functions

 OpticalFlow (OpticalFlowConf conf=getDefaultConf())
virtual ~OpticalFlow ()
virtual void intern_init ()
 overload this function to initialized you data structures.
virtual bool sense (const GlobalData &globaldata)
 Performs the calculations.
virtual int getSensorNumber () const
 overload this function and return the number of sensor values
virtual int get (sensor *sensors, int length) const
 overload this function and return the sensor values

Static Public Member Functions

static std::list< PosgetDefaultPoints (int num)
 calculates default positions for optical flow detection.
static OpticalFlowConf getDefaultConf ()
 the default config has 2 points in and calculates the flow in X and Y

Protected Member Functions

Vec2i calcFieldTransRGB (const Vec2i &field, const osg::Image *current, const osg::Image *last, double &minerror) const
 calculates the optimal transformation for one field in RGB using all three color channels

Static Protected Member Functions

static double compareSubImg (const unsigned char *const I1, const unsigned char *const I2, const Vec2i &field, int size, int width, int height, int bytesPerPixel, int d_x, int d_y)
 compares a small part of two given images and returns the average absolute difference.

Protected Attributes

OpticalFlowConf conf
int num
std::list< Vec2ifields
sensordata
osg::Image * lasts [4]
std::vector< Vec2ioldFlows
int maxShiftX
int maxShiftY
int width
int height
int cnt
double avgerror

Detailed Description

This CameraSensor calculates the optical flow at few points of the image based on a box matching technique.

This can be applied directly to the camera image.


Member Typedef Documentation

typedef std::list< std::pair<Vec2i,int> > FlowDelList

Constructor & Destructor Documentation

OpticalFlow ( OpticalFlowConf  conf = getDefaultConf()  ) 
See also:
CameraSensor for further parameter explanation.
~OpticalFlow (  )  [virtual]

Member Function Documentation

OpticalFlow::Vec2i calcFieldTransRGB ( const Vec2i field,
const osg::Image *  current,
const osg::Image *  last,
double &  minerror 
) const [protected]

calculates the optimal transformation for one field in RGB using all three color channels

Parameters:
minerror (is to return the minimum error achieved during the matching)
double compareSubImg ( const unsigned char *const   I1,
const unsigned char *const   I2,
const Vec2i field,
int  size,
int  width,
int  height,
int  bytesPerPixel,
int  d_x,
int  d_y 
) [static, protected]

compares a small part of two given images and returns the average absolute difference.

Field center, size and shift have to be choosen, so that no clipping is required!

Parameters:
field specifies position(center) of subimage to use for comparison
size specifies the size of the field edged in pixels
d_x shift in x direction
d_y shift in y direction
int get ( sensor sensors,
int  length 
) const [virtual]

overload this function and return the sensor values

Implements CameraSensor.

static OpticalFlowConf getDefaultConf (  )  [inline, static]

the default config has 2 points in and calculates the flow in X and Y

list< Pos > getDefaultPoints ( int  num  )  [static]

calculates default positions for optical flow detection.

The points are in aranged horizontally in a line at the vertical center. For num 2 the points are at the border, 3 points there is additioanlly one is the center and so on.

virtual int getSensorNumber (  )  const [inline, virtual]

overload this function and return the number of sensor values

Implements CameraSensor.

void intern_init (  )  [virtual]

overload this function to initialized you data structures.

Use camera->getImage() to get the image from the camera

Implements CameraSensor.

bool sense ( const GlobalData globaldata  )  [virtual]

Performs the calculations.

Implements CameraSensor.


Member Data Documentation

double avgerror [protected]
int cnt [protected]
OpticalFlowConf conf [protected]
sensor* data [protected]
std::list<Vec2i> fields [protected]
int height [protected]
osg::Image* lasts[4] [protected]
int maxShiftX [protected]
int maxShiftY [protected]
int num [protected]
std::vector<Vec2i> oldFlows [protected]
int width [protected]

The documentation for this class was generated from the following files:
Generated on Thu Jun 28 14:49:04 2012 for Robot Simulator of the Robotics Group for Self-Organization of Control by  doxygen 1.6.3