#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().
1.4.7