Ocean
|
This class implements the base class for all visual offline tracker using frames to provide the tracking data. More...
Data Structures | |
class | FramePyramidTrackerComponent |
This class implements the base class for all components of a frame tracker. More... | |
class | FrameTrackerComponent |
This class implements the base class for all components of a frame tracker. More... | |
class | TrackerComponent |
This class implements the base class for all components of a frame tracker. More... | |
Public Member Functions | |
bool | succeeded () const override |
Returns whether the offline tracker has finished and succeeded since the last start or has not been started yet. More... | |
const PinholeCamera & | camera () const |
Returns the camera object this is applied by this tracker. More... | |
Scalar | cameraPrecision () const |
Returns the camera precision of this tracker. More... | |
bool | start () override |
Starts the offline tracker. More... | |
virtual bool | setFrameProviderInterface (const CV::FrameProviderInterfaceRef &frameProviderInterface) |
Sets the frame provider interface that allows to request the individual frames for the offline tracker. More... | |
virtual bool | setTrackingFrameRange (const unsigned int lowerFrameIndex, const unsigned int upperFrameIndex, const unsigned int startFrameIndex=(unsigned int)(-1)) |
Sets the frame range of this frame tracker. More... | |
virtual bool | setCamera (const PinholeCamera &pinholeCamera, const Scalar cameraPrecision, const bool optimizeCamera) |
Sets a camera object that will be used by this tracker. More... | |
Public Member Functions inherited from Ocean::Tracking::Offline::OfflineTracker | |
virtual | ~OfflineTracker () |
Frees the offline tracker object. More... | |
virtual bool | stop (const unsigned int timeout=0u) |
Stops the offline tracker. More... | |
unsigned int | id () const |
Returns the unique id of this tracker object. More... | |
virtual bool | running () const |
Returns whether the tracker has been started (and is currently tracking). More... | |
virtual bool | finished () const |
Returns whether the offline tracker has finished since the last start or has not been started yet. More... | |
virtual OfflinePoses | poses () const |
Returns the currently determined poses of this tracker. More... | |
virtual OfflinePose | pose (const unsigned int index) const |
Returns one pose of this tracker. More... | |
void | addEventCallback (const EventCallback &callback) |
Adds a state event callback function. More... | |
void | removeEventCallback (const EventCallback &callback) |
Removes a state event callback function. More... | |
Protected Member Functions | |
FrameTracker ()=default | |
Creates a new offline frame tracker object. More... | |
FrameTracker (const CV::FrameProviderInterfaceRef &frameProviderInterface) | |
Creates a new offline frame tracker object. More... | |
void | threadRun () override |
Thread run function. More... | |
virtual bool | applyFrameTracking (const FrameType &frameType)=0 |
Frame tracker run function. More... | |
FrameType | applyFrameTrackingInitialization () |
Applies the initialization of the frame tracker. More... | |
virtual void | updateCamera (const PinholeCamera &pinholeCamera) |
Updates the camera of this tracker and invokes the corresponding state event(s). More... | |
Protected Member Functions inherited from Ocean::Tracking::Offline::OfflineTracker | |
OfflineTracker () | |
Creates a new offline tracker object. More... | |
void | updateTrackerProgress (const Scalar localProgress) |
Updates the tracker process progress value of this tracker. More... | |
void | updatePoses (const OfflinePoses &poses) |
Updates all poses of this tracker and invokes the corresponding state event(s). More... | |
void | removeIrregularPoses (const Scalar factor=Scalar(5)) |
Removes irregular poses at the boundary between valid and invalid poses. More... | |
void | extrapolatePoses (const unsigned int number, const unsigned int base) |
Extrapolates poses at the boundary between valid and invalid poses. More... | |
Protected Member Functions inherited from Ocean::Thread | |
Thread (const Thread &thread)=delete | |
Disabled copy constructor. More... | |
void | createThread () |
Creates the thread itself. More... | |
void | destroyThread () |
Destroys the thread itself. More... | |
void | stopThreadExplicitly (const unsigned int timeout=5000u) |
Tries to stop the thread gracefully. More... | |
Thread & | operator= (const Thread &thread)=delete |
The disabled assign operator. More... | |
Thread (const std::string &name=std::string()) | |
Creates a new thread object. More... | |
Thread (const unsigned int randomNumberSeedValue, const std::string &name=std::string()) | |
Creates a new thread object. More... | |
virtual | ~Thread () |
Destructs a thread object. More... | |
bool | startThread () |
Starts the thread. More... | |
void | stopThread () |
Informs the thread to stop. More... | |
bool | terminateThread () |
Terminates the thread. More... | |
bool | joinThread (const unsigned int timeout=(unsigned int)(-1)) |
Waits until this thread has been stopped. More... | |
bool | shouldThreadStop () const |
Returns whether this thread should stop. More... | |
bool | isThreadInvokedToStart () const |
Returns whether this thread has been invoked to start immediately. More... | |
bool | isThreadActive () const |
Returns whether this thread is active. More... | |
Protected Attributes | |
CV::FrameProviderInterfaceRef | frameProviderInterface_ |
Frame provider interface that allows to request the individual frames for this offline tracker. More... | |
unsigned int | lowerFrameIndex_ = (unsigned int)(-1) |
Index of the lower frame range. More... | |
unsigned int | startFrameIndex_ = (unsigned int)(-1) |
Index of the frame at that the tracking will start, or -1 if no specific frame is specified. More... | |
unsigned int | upperFrameIndex_ = (unsigned int)(-1) |
Index of the upper frame range. More... | |
PinholeCamera | camera_ |
The camera object of this tracker. More... | |
Scalar | cameraPrecision_ = Scalar(-1) |
The precision of the camera object in squared pixel errors. More... | |
bool | optimizeCamera_ = true |
True, if the camera needs to be optimized during the tracking process. More... | |
bool | succeeded_ = true |
Succeeded state of the tracker. More... | |
Protected Attributes inherited from Ocean::Tracking::Offline::OfflineTracker | |
unsigned int | id_ = 0u |
The unique id that identifies this tracker. More... | |
bool | finished_ = true |
Finished state of the tracker. More... | |
bool | shouldStop_ = false |
Stop-request state of the tracker, this state should have the same state as the threadShouldStop variable but will be accessible in all trackers. More... | |
OfflinePoses | offlinePoses_ |
Offline poses of this tracker. More... | |
EventCallbacks | eventCallbacks_ |
State event callback functions. More... | |
Lock | lock_ |
Tracker lock object. More... | |
EventStack | eventStack_ |
The stack with progress event layers allowing for a convenient process progress event handling. More... | |
Lock | eventStackLock_ |
The lock for the progress event layer stack. More... | |
Scalar | previousProcessProgress_ = Scalar(0) |
The previous process progress. More... | |
Friends | |
class | FrameTrackerComponent |
Additional Inherited Members | |
Public Types inherited from Ocean::Tracking::Offline::OfflineTracker | |
enum | TrackingQuality { TQ_LOW , TQ_MODERATE , TQ_HIGH , TQ_ULTRA , TQ_INSANE , TQ_AUTOMATIC , TQ_COARSE , TQ_FINE } |
Definition of individual tracking qualities. More... | |
enum | AbstractMotionType { AMT_UNKNOWN , AMT_PURE_ROTATIONAL , AMT_COMPLEX } |
Definition of individual abstract camera motion types. More... | |
enum | CameraModel { CM_INVALID , CM_LOW_QUALITY , CM_MEDIUM_QUALITY , CM_HIGH_QUALITY } |
Definition of individual camera models. More... | |
typedef Callback< void, const TrackerEvent & > | EventCallback |
Definition of a component event callback function. More... | |
Protected Types inherited from Ocean::Tracking::Offline::OfflineTracker | |
typedef std::vector< EventStackLayer > | EventStack |
Definition of a vector holding EventStackLayer objects which actually is used to implement a stack of these objects. More... | |
typedef ConcurrentCallbacks< EventCallback > | EventCallbacks |
Definition of a vector holding event callback functions. More... | |
Protected Types inherited from Ocean::Thread | |
typedef std::pair< pthread_t, bool > | TimedJoinPair |
Definition of a pair holding a thread id and a boolean state. More... | |
enum | ThreadPriority { PRIORITY_IDLE , PRIORTY_BELOW_NORMAL , PRIORTY_NORMAL , PRIORTY_ABOVE_NORMAL , PRIORTY_HIGH , PRIORTY_REALTIME } |
Definition of different thread priority values. More... | |
Static Protected Member Functions inherited from Ocean::Tracking::Offline::OfflineTracker | |
static bool | isPlausibleCamera (const PinholeCamera &pinholeCamera, const CameraModel model) |
Checks whether the camera parameters of a given camera profiles matches to the specified camera model. More... | |
static void | extrapolateSinglePose (const OfflinePoses::Index invalidIndex, OfflinePoses &offlinePoses) |
Interpolates the pose of a single invalid pose which is enclosed by two valid poses. More... | |
static void | extrapolateLeftPoses (const OfflinePoses::Index invalidIndex, const unsigned int number, const unsigned int base, OfflinePoses &offlinePoses) |
Interpolates some poses to the left of a gap with invalid poses. More... | |
static void | extrapolateRightPoses (const OfflinePoses::Index invalidIndex, const unsigned int number, const unsigned int base, OfflinePoses &offlinePoses) |
Interpolates some poses to the right of a gap with invalid poses. More... | |
static void | extrapolateCenterPoses (const OfflinePoses::Index invalidIndex, const unsigned int number, const unsigned int base, OfflinePoses &offlinePoses) |
Interpolates some poses to the left or to the right of a gap with invalid poses. More... | |
static Lock & | idCounterLock () |
Returns a reference to the lock for the tracker id counter. More... | |
Static Protected Member Functions inherited from Ocean::Thread | |
static void | sleep (unsigned int ms) |
Sleeps the calling thread for a given time. More... | |
static void | giveUp () |
Gives up the remaining thread time. More... | |
static ThreadId | currentThreadId () |
Returns the thread id of the current (calling) thread. More... | |
static ThreadPriority | threadPriority () |
Returns the priority of the current thread. More... | |
static bool | setThreadPriority (const ThreadPriority priority) |
Sets the priority of the current thread. More... | |
template<typename TObject , typename TExpectedValue > | |
static bool | waitForValue (TObject &object, const TExpectedValue &expectedValue, const double timeout=-1.0) |
Waits until an object/variable has an expected value. More... | |
template<typename TObject , typename TExpectedValue > | |
static bool | waitForValue (TObject &object, const TExpectedValue &expectedValue, TemporaryScopedLock &temporaryScopedLock, const double timeout=-1.0) |
Waits until an object/variable has an expected value. More... | |
static int | pthread_timedjoin_np (pthread_t thread, void **retval, const struct timespec *abstime) |
Implements a thread join function with timeout value. More... | |
Static Protected Attributes inherited from Ocean::Tracking::Offline::OfflineTracker | |
static unsigned int | idCounter_ |
The tracker id counter. More... | |
This class implements the base class for all visual offline tracker using frames to provide the tracking data.
|
protecteddefault |
Creates a new offline frame tracker object.
|
inlineprotected |
Creates a new offline frame tracker object.
frameProviderInterface | Frame provider interface to be set |
|
protectedpure virtual |
Frame tracker run function.
frameType | Frame type of the tracking frames |
Implemented in Ocean::Tracking::Offline::SLAMTracker, Ocean::Tracking::Offline::SLAMPlaneTracker, Ocean::Tracking::Offline::PlanarRectangleTracker, and Ocean::Tracking::Offline::PatternTracker.
|
protected |
Applies the initialization of the frame tracker.
The function initializes the frame provider interface and waits until a valid frame type is known.
|
inline |
Returns the camera object this is applied by this tracker.
|
inline |
Returns the camera precision of this tracker.
|
virtual |
Sets a camera object that will be used by this tracker.
pinholeCamera | The pinhole camera object to be used |
cameraPrecision | The precision of the given camera object, in squared pixel errors, should be -1 if unknown |
optimizeCamera | True, to take the given camera object as rough estimation only |
Reimplemented in Ocean::Tracking::Offline::PatternTracker.
|
virtual |
Sets the frame provider interface that allows to request the individual frames for the offline tracker.
frameProviderInterface | Frame provider interface to be set |
|
virtual |
Sets the frame range of this frame tracker.
The range specify a subset of the entire frames that are investigated during tracking.
The given parameters should match the number of available frames provided by the frame provider.
If the frame provider provides less frames than specified by the range parameters, the parameters will be adjusted automatically.
The range cannot be adjusted if the tracker is active.
lowerFrameIndex | Index of the first frame that will be investigated, with range [0, infinity) |
upperFrameIndex | Index of the last frame that will be investigated, with range [lowerFrameIndex, infinity) |
startFrameIndex | Index of the start frame at which the tracking will start, with range [lowerFrameIndex, upperFrameIndex], or -1 to use no specific start frame |
|
overridevirtual |
Starts the offline tracker.
Ensure that a frame provider has been set before.
Reimplemented from Ocean::Tracking::Offline::OfflineTracker.
Reimplemented in Ocean::Tracking::Offline::SLAMTracker.
|
overridevirtual |
Returns whether the offline tracker has finished and succeeded since the last start or has not been started yet.
Implements Ocean::Tracking::Offline::OfflineTracker.
|
overrideprotectedvirtual |
Thread run function.
Implements Ocean::Thread.
|
protectedvirtual |
Updates the camera of this tracker and invokes the corresponding state event(s).
pinholeCamera | The new pinhole camera for this tracker |
Reimplemented in Ocean::Tracking::Offline::SLAMPlaneTracker, and Ocean::Tracking::Offline::PlanarRectangleTracker.
|
friend |
|
protected |
The camera object of this tracker.
The precision of the camera object in squared pixel errors.
|
protected |
Frame provider interface that allows to request the individual frames for this offline tracker.
|
protected |
Index of the lower frame range.
|
protected |
True, if the camera needs to be optimized during the tracking process.
|
protected |
Index of the frame at that the tracking will start, or -1 if no specific frame is specified.
|
protected |
Succeeded state of the tracker.
|
protected |
Index of the upper frame range.