Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes
icl::markers::FiducialDetectorPlugin Struct Reference

Generic Interface class for FiducialDetector plugins. More...

#include <FiducialDetectorPlugin.h>

Inheritance diagram for icl::markers::FiducialDetectorPlugin:
icl::utils::Configurable icl::markers::FiducialDetectorPluginForQuads icl::markers::FiducialDetectorPluginHierarchical icl::markers::FiducialDetectorPluginART icl::markers::FiducialDetectorPluginBCH icl::markers::FiducialDetectorPluginAmoeba icl::markers::FiducialDetectorPluginICL1

List of all members.

Public Types

enum  SourceImageType { Binary, Gray, Color }
 Enumeration for differnt source image types. More...

Public Member Functions

 FiducialDetectorPlugin ()
 initializes the plugin with a 0-camera
virtual ~FiducialDetectorPlugin ()
 virtual Destructor
virtual void getCenter2D (utils::Point32f &dst, FiducialImpl &impl)
 returns how to compute the markers 2D center
virtual void getRotation2D (float &dst, FiducialImpl &impl)
 returns how to compute the markers 2D rotation
virtual void getCorners2D (std::vector< utils::Point32f > &dst, FiducialImpl &impl)
 returns how to compute the markers 2D corners (or significant points on its edges
virtual void getKeyPoints2D (std::vector< Fiducial::KeyPoint > &dst, FiducialImpl &impl)
 returns how to compute a list of image-position/marker-position correspondences
virtual void getCenter3D (geom::Vec &dst, FiducialImpl &impl)
 computes a markers 3D center
virtual void getRotation3D (geom::Vec &dst, FiducialImpl &impl)
 computes a markers 3D rotation euler angles
virtual void getPose3D (geom::Mat &dst, FiducialImpl &impl)
 computes a markers 3D position and rotation euler angles
virtual SourceImageType getPreProcessing () const
 returns Binary (as default)
virtual void getFeatures (Fiducial::FeatureSet &dst)=0
 defines which features are supported
virtual void detect (std::vector< FiducialImpl * > &dst, const core::Img8u &image)=0
 defines how to detect markers from a given image
virtual void addOrRemoveMarkers (bool add, const utils::Any &which, const utils::ParamList &params)=0
 defines how to load/remove marker definitions
virtual std::string getName (const FiducialImpl *impl)
 creates a human readable name for the given impl
virtual std::string getIntermediateImageNames () const
 optionall returns a (comma separated) list of intermediate images
virtual const core::ImgBasegetIntermediateImage (const std::string &name) const throw (utils::ICLException)
 returns the intermediate image, that is associated with the given name
virtual core::Img8u createMarker (const utils::Any &, const utils::Size &, const utils::ParamList &)
 interface for creating an image of a specific marker

Static Public Member Functions

static std::vector< int > parse_list_str (const utils::Any &s)
 parses an any instance that is either an int-value, or a range or a list of int-values

Public Attributes

geom::Cameracamera
 Camera structure for 3D feature estimation.
geom::CoplanarPointPoseEstimator poseEst
 for 3D pose estimation

Detailed Description

Generic Interface class for FiducialDetector plugins.


Member Enumeration Documentation

Enumeration for differnt source image types.

Enumerator:
Binary 

detect must be called with an already binarized image (default)

Gray 

detect must be called with gray scale image

Color 

detect must be called with color image


Constructor & Destructor Documentation

initializes the plugin with a 0-camera

virtual Destructor


Member Function Documentation

virtual void icl::markers::FiducialDetectorPlugin::addOrRemoveMarkers ( bool  add,
const utils::Any which,
const utils::ParamList params 
) [pure virtual]
virtual core::Img8u icl::markers::FiducialDetectorPlugin::createMarker ( const utils::Any ,
const utils::Size ,
const utils::ParamList  
) [inline, virtual]

interface for creating an image of a specific marker

Reimplemented in icl::markers::FiducialDetectorPluginART, icl::markers::FiducialDetectorPluginICL1, and icl::markers::FiducialDetectorPluginBCH.

virtual void icl::markers::FiducialDetectorPlugin::detect ( std::vector< FiducialImpl * > &  dst,
const core::Img8u image 
) [pure virtual]

defines how to detect markers from a given image

Implemented in icl::markers::FiducialDetectorPluginForQuads, and icl::markers::FiducialDetectorPluginHierarchical.

virtual void icl::markers::FiducialDetectorPlugin::getCenter2D ( utils::Point32f dst,
FiducialImpl impl 
) [virtual]

returns how to compute the markers 2D center

note, if this information is already available in the detect method, the plugin implementation should instantiate the returned FiducialImpl instances, with this this information given. If the fiducial imple was instantiated this way, the corresponding getter method must not be reimplemented, because the Fiducial wrapper (that wraps the FiducialImpl) will simple return the already available result from the corresponding FiducialImpl's info structure

virtual void icl::markers::FiducialDetectorPlugin::getCenter3D ( geom::Vec dst,
FiducialImpl impl 
) [virtual]

computes a markers 3D center

The defalut implementation uses getKeyPoints2D for planar pose estimation. If getKeyPoints is not implemented or if less than 4 key points are available, the default implementation for getCenter3D will not work Note: 3D information are usually only available if a camera was given to the parent FiducialDetector class

virtual void icl::markers::FiducialDetectorPlugin::getCorners2D ( std::vector< utils::Point32f > &  dst,
FiducialImpl impl 
) [virtual]

returns how to compute the markers 2D corners (or significant points on its edges

The corners can also be whole line-strips, usually, these are used for visualization only

Reimplemented in icl::markers::FiducialDetectorPluginICL1, and icl::markers::FiducialDetectorPluginAmoeba.

virtual const core::ImgBase* icl::markers::FiducialDetectorPlugin::getIntermediateImage ( const std::string &  name) const throw (utils::ICLException) [inline, virtual]

returns the intermediate image, that is associated with the given name

The programmer of a plugin must ensure, that an exception is thrown if the given name is not associated with an intermediate image. The parent FiducialDetectors intermediate images with names "input" and "pp" must not be checked here. But in turn, these two names must not be used for intermediate image names in the plugin implementation

Reimplemented in icl::markers::FiducialDetectorPluginForQuads.

virtual std::string icl::markers::FiducialDetectorPlugin::getIntermediateImageNames ( ) const [inline, virtual]

optionall returns a (comma separated) list of intermediate images

These images can be used for debugging purpose as well as for further processing steps. The two intermediate image names 'input' and 'pp' must not be used in the plugin implementation because these names are already in use by the parent FiducialDetector instance.

Reimplemented in icl::markers::FiducialDetectorPluginForQuads.

virtual void icl::markers::FiducialDetectorPlugin::getKeyPoints2D ( std::vector< Fiducial::KeyPoint > &  dst,
FiducialImpl impl 
) [virtual]

returns how to compute a list of image-position/marker-position correspondences

The 2D-keypoints are the most common information that is use to compute a markers 3D information. Each keypoint defines a 2D marker location in [mm] and a corresponding image location

Reimplemented in icl::markers::FiducialDetectorPluginICL1, and icl::markers::FiducialDetectorPluginForQuads.

virtual std::string icl::markers::FiducialDetectorPlugin::getName ( const FiducialImpl impl) [virtual]

creates a human readable name for the given impl

Per default, this returns a string repesentation of the FiducialImpl's id

Reimplemented in icl::markers::FiducialDetectorPluginART.

virtual void icl::markers::FiducialDetectorPlugin::getPose3D ( geom::Mat dst,
FiducialImpl impl 
) [virtual]

computes a markers 3D position and rotation euler angles

The defalut implementation uses getKeyPoints2D for planar pose estimation. If getKeyPoints is not implemented or if less than 4 key points are available, the default implementation for getCenter3D will not work Note: 3D information are usually only available if a camera was given to the parent FiducialDetector class

returns Binary (as default)

Reimplemented in icl::markers::FiducialDetectorPluginForQuads.

virtual void icl::markers::FiducialDetectorPlugin::getRotation2D ( float &  dst,
FiducialImpl impl 
) [virtual]

returns how to compute the markers 2D rotation

Reimplemented in icl::markers::FiducialDetectorPluginICL1, and icl::markers::FiducialDetectorPluginAmoeba.

virtual void icl::markers::FiducialDetectorPlugin::getRotation3D ( geom::Vec dst,
FiducialImpl impl 
) [virtual]

computes a markers 3D rotation euler angles

The defalut implementation uses getKeyPoints2D for planar pose estimation. If getKeyPoints is not implemented or if less than 4 key points are available, the default implementation for getCenter3D will not work Note: 3D information are usually only available if a camera was given to the parent FiducialDetector class

static std::vector<int> icl::markers::FiducialDetectorPlugin::parse_list_str ( const utils::Any s) [static]

parses an any instance that is either an int-value, or a range or a list of int-values

The core::format is "int" | or "{int,int,int}" etc. or "[min,max]"


Member Data Documentation

Camera structure for 3D feature estimation.

The actual camera instance is managed by the parent FiducialDetector instance

for 3D pose estimation


The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines