#include <OmniTrackingTable.hh>
Inheritance diagram for OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >:
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. |
OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::OmniTrackingTable | ( | OmniConversion< ConverterT, AngleT, ImageT, PointT > * | conv_table, | |
int | freeze_frame_bound, | |||
double | track_window_hitrate | |||
) |
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. |
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:
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.
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::add_tracking_window | ( | int | window_id, | |
int | theta_start, | |||
int | theta_end | |||
) | [protected] |
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:
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.
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.
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::init_tracking_table | ( | int | degrees | ) | [private] |
It's instance will be maintained internally on this class
degrees | How many degrees will be in the table. |
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:
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::remove_tracking_window | ( | int | window_id | ) | [protected] |
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:
bool OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::test_tracking_window_availability | ( | int | theta_start, | |
int | theta_end, | |||
int | window_length | |||
) |
theta_start | Start angle, in "int" format | |
theta_end | End angle, in "int" format | |
window_length | Amplitude of the angle. |
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.
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin | ( | ) | [protected] |
In particular with update begin the degree table will me memset to 0.
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:
void OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_end | ( | ) | [protected] |
All the windows are written to the degree table.
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.
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.
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. |
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.
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().
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().
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().
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().
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().
const double OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::_track_window_hitrate [private] |
Definition at line 141 of file OmniTrackingTable.hh.
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().
OmniConversion<ConverterT, AngleT, ImageT, PointT>* OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::m_conv_table [protected] |
It's specified by ConverterT, AngleT, ImageT, PointT.
Definition at line 119 of file OmniTrackingTable.hh.
Referenced by OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::OmniTrackingTable().