OmniTracking< ConverterT, AngleT, ImageT, PointT > Class Template Reference

#include <OmniTracking.hh>

Inheritance diagram for OmniTracking< ConverterT, AngleT, ImageT, PointT >:

Inheritance graph
[legend]
Collaboration diagram for OmniTracking< ConverterT, AngleT, ImageT, PointT >:

Collaboration graph
[legend]
List of all members.

Detailed Description

template<class ConverterT, class AngleT, class ImageT, class PointT>
class OmniTracking< ConverterT, AngleT, ImageT, PointT >

Template class. Will be implemented Lukas-Kanade flow algorithm. Take from OpenCV sources/samples.
Parameters:
ConverterT Conversion concrete class. For example OmniFastLookupTable or OmniGCardConverter
AngleT Base unit used for angle. It can be for example "int" or "double".
ImageT Usually IplImage, the OpenCV standard.
PointT Usually CvPoint, the OpenCV standard.

Definition at line 56 of file OmniTracking.hh.

Public Member Functions

 OmniTracking (IplImage *first_frame, OmniConversion< ConverterT, AngleT, ImageT, PointT > *conv_table, int max_tracked_points_count=100, int freeze_frame_bound=FREEZE_FRAME_BOUND, double track_window_hitrate=TRACK_WINDOW_HITRATE)
 Constructor.
virtual ~OmniTracking ()
bool add_point_to_track (CvPoint &point)
 Add a point to tracking.
void process_next_frame (IplImage *next_frame)
 The main loop for this class.
void register_image_callbacks (on_create_image_context_cb *create_image_context, on_image_do_action_cb *image_show, on_destroy_image_context_cb *destroy_image_context, void *callback_data)
 The default display system is give to OpenCV capabilities.

Private Member Functions

void initialize_image_buffers (IplImage *first_video_frame)
 Initialize image buffers.

Private Attributes

on_create_image_context_cbcreate_image_context
 Image display callback.
on_image_do_action_cbimage_show
 Image display callback.
on_destroy_image_context_cbdestroy_image_context
 Image display callback.
IplImage * _image
 Internal image buffers used to perform Lukas-Kanade algorithm.
IplImage * _grey
IplImage * _prev_grey
IplImage * _pyramid
IplImage * _prev_pyramid
IplImage * _swap_temp
void * _callback_data_on_image_cb
int _win_size
 Win size in which we will calculate the optical flow.
CvPoint2D32f * _tracked_points [2]
 points.
CvPoint2D32f * _points [2]
CvPoint2D32f * _swap_points
int _max_tracked_points_count
 max number of points tracked
char * _tracked_points_status
int _tracked_points_count
 number of points tracked
int _video_width
int _video_height
int _track_flags
 Takes Lukas-Kanade flags.
bool _add_remove_pt
list< added_point_data_t * > _points_added_list


Constructor & Destructor Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking ( IplImage *  first_frame,
OmniConversion< ConverterT, AngleT, ImageT, PointT > *  conv_table,
int  max_tracked_points_count = 100,
int  freeze_frame_bound = FREEZE_FRAME_BOUND,
double  track_window_hitrate = TRACK_WINDOW_HITRATE 
)

Parameters:
first_frame First frame of a video stream. Class will retrieve width height and other informations from it.
conv_table Conversion table.
max_tracked_points_count Max number of points to track. defaults to 100. It's a huge number and it's unlikely that will never be reached.
freeze_frame_bound Number of frames to freeze before removing the window. Defaults to FREEZE_FRAME_BOUND
track_window_hitrate Percentage of free hits a window must have against a tracking table to be able to be tracked. Defaults to TRACK_WINDOW_HITRATE.
See also:
OmniFastLookupTable, OmniGCardConverter, OmniConversion

Definition at line 170 of file OmniTracking.hh.

References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_height, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_width, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size, OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), NULL, omnistuff_create_image_context(), omnistuff_destroy_image_context(), omnistuff_image_do_action(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::register_image_callbacks().

Here is the call graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
OmniTracking< ConverterT, AngleT, ImageT, PointT >::~OmniTracking (  )  [virtual]

Definition at line 208 of file OmniTracking.hh.

References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points_added_list.


Member Function Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTracking< ConverterT, AngleT, ImageT, PointT >::add_point_to_track ( CvPoint &  point  ) 

Parameters:
point CvPoint to track. Generally it's the face-center.

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers ( IplImage *  first_video_frame  )  [private]

Pyramid image, grey image and so on.

Parameters:
first_video_frame First video frame. Should be the same of the constructor's one.

Definition at line 226 of file OmniTracking.hh.

References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, and OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

Here is the caller graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame ( IplImage *  next_frame  ) 

Subsequent frames to the first should be passed here. The tracking and the displayng of the resulting images will be automatically performed.

Parameters:
next_frame Next IplImage in the stream.
See also:
register_image_callbacks

Definition at line 257 of file OmniTracking.hh.

References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin().

Here is the call graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTracking< ConverterT, AngleT, ImageT, PointT >::register_image_callbacks ( on_create_image_context_cb create_image_context,
on_image_do_action_cb image_show,
on_destroy_image_context_cb destroy_image_context,
void *  callback_data 
)

Unfortunately this is not really performant and bug free on a multiplatform fashion. This is because we can set the display callbacks to act like we want with other libraries.

Parameters:
create_image_context Create window [with a title] where to display the images.
image_show Perform the call to the show function.
destroy_image_context Destroy the display window and it's context.
callback_data Callback data to image* functions. Usually a class "this" pointer.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

Here is the caller graph for this function:


Member Data Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt [private]

Definition at line 158 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
void* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_callback_data_on_image_cb [private]

Definition at line 135 of file OmniTracking.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey [private]

Definition at line 128 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image [private]

Definition at line 128 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count [private]

Definition at line 146 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

template<class ConverterT, class AngleT, class ImageT, class PointT>
CvPoint2D32f * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points[2] [private]

Definition at line 141 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

template<class ConverterT, class AngleT, class ImageT, class PointT>
list<added_point_data_t*> OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points_added_list [private]

Definition at line 159 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::~OmniTracking().

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey [private]

Definition at line 128 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid [private]

Definition at line 128 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid [private]

Definition at line 128 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
CvPoint2D32f * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_swap_points [private]

Definition at line 141 of file OmniTracking.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_swap_temp [private]

Definition at line 128 of file OmniTracking.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags [private]

Definition at line 156 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
CvPoint2D32f* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points[2] [private]

..

Definition at line 141 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count [private]

Definition at line 150 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
char* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status [private]

Definition at line 147 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_height [private]

Definition at line 153 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_width [private]

Definition at line 152 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size [private]

Definition at line 138 of file OmniTracking.hh.

Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().

template<class ConverterT, class AngleT, class ImageT, class PointT>
on_create_image_context_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::create_image_context [private]

Definition at line 117 of file OmniTracking.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
on_destroy_image_context_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::destroy_image_context [private]

Definition at line 123 of file OmniTracking.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
on_image_do_action_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::image_show [private]

Definition at line 120 of file OmniTracking.hh.


The documentation for this class was generated from the following file:
Generated on Tue Dec 26 10:38:06 2006 for Omnimeeting by  doxygen 1.4.7