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

#include <OmniTrackingTable.hh>

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

Inheritance graph
[legend]
List of all members.

Detailed Description

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

Template class. It manages the tracks of the angles being tracked.
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 42 of file OmniTrackingTable.hh.

Public Member Functions

 OmniTrackingTable (OmniConversion< ConverterT, AngleT, ImageT, PointT > *conv_table, int freeze_frame_bound, double track_window_hitrate)
 Constructor.
virtual ~OmniTrackingTable ()
bool test_tracking_window_availability (int theta_start, int theta_end, int window_length)
 Test the availability of free space in the tracking table.

Protected Member Functions

void add_tracking_window (int window_id, int theta_start, int theta_end)
 Perform an add on the tracking table.
void add_wannabe_trackable_marks (int theta_start, int theta_end)
 Add a wannabe trackable window.
bool update_tracking_window_bounds (int window_id, int new_theta_start, int new_theta_end)
 Update the bounds of a window.
void remove_tracking_window (int window_id)
 Remove a window from tracking.
void update_begin ()
 Acts like a mutex.
void update_end ()
 Acts like a mutex.

Protected Attributes

OmniConversion< ConverterT,
AngleT, ImageT, PointT > * 
m_conv_table
 The conversion class.

Private Member Functions

bool init_tracking_table (int degrees)
 Initialize a new table.

Private Attributes

char * _degree_table
 The degree table.
int _degree_table_length
 Degree table lenght.
int _active_tracks
 Number of tracked windows.
const double _track_window_hitrate
const int _freeze_frame_bound
bool _update_is_possibile
 Flag that can permit the update of bound of the tracking table.
list< TrackingWindow * > _track_list
 Linked-list for the windows that are being tracked.


Constructor & Destructor Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::OmniTrackingTable ( OmniConversion< ConverterT, AngleT, ImageT, PointT > *  conv_table,
int  freeze_frame_bound,
double  track_window_hitrate 
)

Parameters:
conv_table Conversion class. Could be OmniFastLookupTable or OmniGCardConverter
freeze_frame_bound Number of frames to freeze before removing the window.
track_window_hitrate Percentage of free hits a window must have against a tracking table to be able to be tracked.
See also:
OmniFastLookupTable, OmniGCardConverter, TrackingWindow, OmniConversion

Definition at line 158 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_update_is_possibile, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::m_conv_table.

Here is the call graph for this function:

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

Definition at line 176 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list.


Member Function Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window ( int  window_id,
int  theta_start,
int  theta_end 
) [protected]

Parameters:
theta_start Start angle, in "int" format
theta_end End angle, in "int" format
window_length Amplitude of the angle.

Definition at line 270 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_active_tracks, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_freeze_frame_bound, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list, and TrackingWindow::write_window_to_table().

Here is the call graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_wannabe_trackable_marks ( int  theta_start,
int  theta_end 
) [protected]

This is done for mutex reasons. There can be two or more windows that want to be tracked. The first that comes, the first will be added.

Parameters:
theta_start Start angle, in "int" format
theta_end End angle, in "int" format

Definition at line 298 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length, and VALUE_WANNABE_TRACKABLE.

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table ( int  degrees  )  [private]

It's instance will be maintained internally on this class

Parameters:
degrees How many degrees will be in the table.
Returns:
true on success

Definition at line 387 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_active_tracks, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length.

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

Here is the caller graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::remove_tracking_window ( int  window_id  )  [protected]

Parameters:
window_id Window id, or better the number of the face being tracked.

Definition at line 229 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_active_tracks, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list, TrackingWindow::change_id(), and NULL.

Here is the call graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::test_tracking_window_availability ( int  theta_start,
int  theta_end,
int  window_length 
)

Parameters:
theta_start Start angle, in "int" format
theta_end End angle, in "int" format
window_length Amplitude of the angle.
Returns:
true on success.

Definition at line 331 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length, TRACK_WINDOW_HITRATE, VALUE_TRACKED, and VALUE_WANNABE_TRACKABLE.

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin (  )  [protected]

In particular with update begin the degree table will me memset to 0.

See also:
update_end

Definition at line 198 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_update_is_possibile.

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

Here is the caller graph for this function:

template<class ConverterT, class AngleT, class ImageT, class PointT>
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_end (  )  [protected]

All the windows are written to the degree table.

See also:
update_begin

Definition at line 210 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table, OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_update_is_possibile.

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_tracking_window_bounds ( int  window_id,
int  new_theta_start,
int  new_theta_end 
) [protected]

Can be useful when a face/object is moving.

Parameters:
window_id The window id. Usually it's the number of the tracked face.
new_theta_start New start angle.
new_theta_end New end angle.
Returns:
true on success.

Definition at line 360 of file OmniTrackingTable.hh.

References OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_update_is_possibile.


Member Data Documentation

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_active_tracks [private]

Definition at line 139 of file OmniTrackingTable.hh.

Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::remove_tracking_window().

template<class ConverterT, class AngleT, class ImageT, class PointT>
char* OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table [private]

As you can see it's just an array of chars. There wasn't the need for ints.

Definition at line 133 of file OmniTrackingTable.hh.

Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_wannabe_trackable_marks(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::test_tracking_window_availability(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_end(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::~OmniTrackingTable().

template<class ConverterT, class AngleT, class ImageT, class PointT>
int OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_degree_table_length [private]

Definition at line 136 of file OmniTrackingTable.hh.

Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_wannabe_trackable_marks(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::test_tracking_window_availability(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin().

template<class ConverterT, class AngleT, class ImageT, class PointT>
const int OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_freeze_frame_bound [private]

Definition at line 142 of file OmniTrackingTable.hh.

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

template<class ConverterT, class AngleT, class ImageT, class PointT>
list<TrackingWindow*> OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_list [private]

Definition at line 148 of file OmniTrackingTable.hh.

Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::remove_tracking_window(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_end(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_tracking_window_bounds(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::~OmniTrackingTable().

template<class ConverterT, class AngleT, class ImageT, class PointT>
const double OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_window_hitrate [private]

Definition at line 141 of file OmniTrackingTable.hh.

template<class ConverterT, class AngleT, class ImageT, class PointT>
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_update_is_possibile [private]

Definition at line 145 of file OmniTrackingTable.hh.

Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::OmniTrackingTable(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin(), OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_end(), and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_tracking_window_bounds().

template<class ConverterT, class AngleT, class ImageT, class PointT>
OmniConversion<ConverterT, AngleT, ImageT, PointT>* OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::m_conv_table [protected]

It's specified by ConverterT, AngleT, ImageT, PointT.

See also:
OmniFastLookupTable, OmniGCardConverter, OmniConversion

Definition at line 119 of file OmniTrackingTable.hh.

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


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