Ocean
Ocean::Tracking::Offline::FrameTracker Class Referenceabstract

This class implements the base class for all visual offline tracker using frames to provide the tracking data. More...

Inheritance diagram for Ocean::Tracking::Offline::FrameTracker:

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 PinholeCameracamera () 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...
 
Threadoperator= (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< EventStackLayerEventStack
 Definition of a vector holding EventStackLayer objects which actually is used to implement a stack of these objects. More...
 
typedef ConcurrentCallbacks< EventCallbackEventCallbacks
 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 LockidCounterLock ()
 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...
 

Detailed Description

This class implements the base class for all visual offline tracker using frames to provide the tracking data.

Constructor & Destructor Documentation

◆ FrameTracker() [1/2]

Ocean::Tracking::Offline::FrameTracker::FrameTracker ( )
protecteddefault

Creates a new offline frame tracker object.

◆ FrameTracker() [2/2]

Ocean::Tracking::Offline::FrameTracker::FrameTracker ( const CV::FrameProviderInterfaceRef frameProviderInterface)
inlineprotected

Creates a new offline frame tracker object.

Parameters
frameProviderInterfaceFrame provider interface to be set

Member Function Documentation

◆ applyFrameTracking()

virtual bool Ocean::Tracking::Offline::FrameTracker::applyFrameTracking ( const FrameType frameType)
protectedpure virtual

Frame tracker run function.

Parameters
frameTypeFrame type of the tracking frames
Returns
True, if the tracking succeeded

Implemented in Ocean::Tracking::Offline::SLAMTracker, Ocean::Tracking::Offline::SLAMPlaneTracker, Ocean::Tracking::Offline::PlanarRectangleTracker, and Ocean::Tracking::Offline::PatternTracker.

◆ applyFrameTrackingInitialization()

FrameType Ocean::Tracking::Offline::FrameTracker::applyFrameTrackingInitialization ( )
protected

Applies the initialization of the frame tracker.

The function initializes the frame provider interface and waits until a valid frame type is known.

Returns
The frame type of the frame provider interface, an invalid frame type if the initialization fails

◆ camera()

const PinholeCamera & Ocean::Tracking::Offline::FrameTracker::camera ( ) const
inline

Returns the camera object this is applied by this tracker.

Returns
The pinhole camera object

◆ cameraPrecision()

Scalar Ocean::Tracking::Offline::FrameTracker::cameraPrecision ( ) const
inline

Returns the camera precision of this tracker.

Returns
The pinhole camera precision, in squared pixel errors, -1 if unknown

◆ setCamera()

virtual bool Ocean::Tracking::Offline::FrameTracker::setCamera ( const PinholeCamera pinholeCamera,
const Scalar  cameraPrecision,
const bool  optimizeCamera 
)
virtual

Sets a camera object that will be used by this tracker.

Parameters
pinholeCameraThe pinhole camera object to be used
cameraPrecisionThe precision of the given camera object, in squared pixel errors, should be -1 if unknown
optimizeCameraTrue, to take the given camera object as rough estimation only
Returns
True, if succeeded

Reimplemented in Ocean::Tracking::Offline::PatternTracker.

◆ setFrameProviderInterface()

virtual bool Ocean::Tracking::Offline::FrameTracker::setFrameProviderInterface ( const CV::FrameProviderInterfaceRef frameProviderInterface)
virtual

Sets the frame provider interface that allows to request the individual frames for the offline tracker.

Parameters
frameProviderInterfaceFrame provider interface to be set
Returns
True, if succeeded, returns false if the interface has been set already

◆ setTrackingFrameRange()

virtual bool Ocean::Tracking::Offline::FrameTracker::setTrackingFrameRange ( const unsigned int  lowerFrameIndex,
const unsigned int  upperFrameIndex,
const unsigned int  startFrameIndex = (unsigned int)(-1) 
)
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.

Parameters
lowerFrameIndexIndex of the first frame that will be investigated, with range [0, infinity)
upperFrameIndexIndex of the last frame that will be investigated, with range [lowerFrameIndex, infinity)
startFrameIndexIndex of the start frame at which the tracking will start, with range [lowerFrameIndex, upperFrameIndex], or -1 to use no specific start frame
Returns
True, if succeeded
See also
setFrameProviderInterface()

◆ start()

bool Ocean::Tracking::Offline::FrameTracker::start ( )
overridevirtual

Starts the offline tracker.

Ensure that a frame provider has been set before.

Returns
True, if succeeded
See also
stop(), finished(), setFrameProvider().

Reimplemented from Ocean::Tracking::Offline::OfflineTracker.

Reimplemented in Ocean::Tracking::Offline::SLAMTracker.

◆ succeeded()

bool Ocean::Tracking::Offline::FrameTracker::succeeded ( ) const
overridevirtual

Returns whether the offline tracker has finished and succeeded since the last start or has not been started yet.

Returns
True, if so
See also
finished().

Implements Ocean::Tracking::Offline::OfflineTracker.

◆ threadRun()

void Ocean::Tracking::Offline::FrameTracker::threadRun ( )
overrideprotectedvirtual

Thread run function.

Implements Ocean::Thread.

◆ updateCamera()

virtual void Ocean::Tracking::Offline::FrameTracker::updateCamera ( const PinholeCamera pinholeCamera)
protectedvirtual

Updates the camera of this tracker and invokes the corresponding state event(s).

Parameters
pinholeCameraThe new pinhole camera for this tracker

Reimplemented in Ocean::Tracking::Offline::SLAMPlaneTracker, and Ocean::Tracking::Offline::PlanarRectangleTracker.

Friends And Related Function Documentation

◆ FrameTrackerComponent

friend class FrameTrackerComponent
friend

Field Documentation

◆ camera_

PinholeCamera Ocean::Tracking::Offline::FrameTracker::camera_
protected

The camera object of this tracker.

◆ cameraPrecision_

Scalar Ocean::Tracking::Offline::FrameTracker::cameraPrecision_ = Scalar(-1)
protected

The precision of the camera object in squared pixel errors.

◆ frameProviderInterface_

CV::FrameProviderInterfaceRef Ocean::Tracking::Offline::FrameTracker::frameProviderInterface_
protected

Frame provider interface that allows to request the individual frames for this offline tracker.

◆ lowerFrameIndex_

unsigned int Ocean::Tracking::Offline::FrameTracker::lowerFrameIndex_ = (unsigned int)(-1)
protected

Index of the lower frame range.

◆ optimizeCamera_

bool Ocean::Tracking::Offline::FrameTracker::optimizeCamera_ = true
protected

True, if the camera needs to be optimized during the tracking process.

◆ startFrameIndex_

unsigned int Ocean::Tracking::Offline::FrameTracker::startFrameIndex_ = (unsigned int)(-1)
protected

Index of the frame at that the tracking will start, or -1 if no specific frame is specified.

◆ succeeded_

bool Ocean::Tracking::Offline::FrameTracker::succeeded_ = true
protected

Succeeded state of the tracker.

◆ upperFrameIndex_

unsigned int Ocean::Tracking::Offline::FrameTracker::upperFrameIndex_ = (unsigned int)(-1)
protected

Index of the upper frame range.


The documentation for this class was generated from the following file: