My Project
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Marker Class Reference

Basic 2D Marker functionality. More...

#include <Marker.h>

Inheritance diagram for Marker:
MarkerArtoolkit MarkerData MultiMarkerInitializer::MarkerMeasurement

Public Member Functions

void CompareCorners (std::vector< Point< cv::Point2d >> &_marker_corners_img, int *orientation, double *error)
 Compares the marker corners with the previous match. More...
 
void CompareContent (std::vector< PointDouble > &_marker_corners_img, cv::Mat &gray, Camera *cam, int *orientation) const
 Compares the marker corners with the previous match.
 
virtual bool UpdateContent (std::vector< Point< cv::Point2d >> &_marker_corners_img, cv::Mat &gray, Camera *cam, int frame_no=0)
 Updates the marker_content from the image using Homography.
 
void UpdatePose (std::vector< Point< cv::Point2d >> &_marker_corners_img, Camera *cam, int orientation, int frame_no=0, bool update_pose=true)
 Updates the markers pose estimation.
 
virtual bool DecodeContent (int *orientation)
 Decodes the marker content. Please call UpdateContent before this. This virtual method is meant to be implemented by heirs.
 
cv::Mat GetContent () const
 Returns the content as a matrix.
 
void SaveMarkerImage (const char *filename, int save_res=0) const
 Saves the marker as an image.
 
void ScaleMarkerToImage (cv::Mat &image) const
 Draw the marker filling the ROI in the given image.
 
void Visualize (cv::Mat &image, Camera *cam, const cv::Scalar color=CV_RGB(255, 0, 0)) const
 Visualize the marker.
 
void SetMarkerSize (double _edge_length=0, int _res=0, double _margin=0)
 Method for resizing the marker dimensions

 
double GetMarkerEdgeLength () const
 Get edge length (to support different size markers.
 
 ~Marker ()
 Destructor

 
 Marker (double _edge_length=0, int _res=0, double _margin=0)
 Default constructor. More...
 
 Marker (const Marker &m)
 Copy constructor

 
virtual unsigned long GetId () const
 Get id for this marker This is used e.g. in MarkerDetector to associate a marker id with an appropriate edge length. This method should be overwritten to return a suitable identification number for each marker type.
 
virtual void SetId (unsigned long _id)
 
int GetRes () const
 
double GetMargin () const
 
double GetError (int errors=(MARGIN_ERROR|DECODE_ERROR)) const
 Get marker detection error estimate. More...
 
void SetError (int error_type, double value)
 Set the marker error estimate.
 

Public Attributes

Pose pose
 The current marker Pose.
 
std::vector< PointDoublemarker_points
 Marker color points in marker coordinates.
 
std::vector< PointDoublemarker_corners
 Marker corners in marker coordinates.
 
std::vector< PointDoublemarker_corners_img
 Marker corners in image coordinates.
 
std::vector< PointDoublemarker_margin_w
 Samples to be used in figuring out min/max for thresholding.
 
std::vector< PointDoublemarker_margin_b
 Samples to be used in figuring out min/max for thresholding.
 

Static Public Attributes

static const int MARGIN_ERROR = 1
 
static const int DECODE_ERROR = 2
 
static const int TRACK_ERROR = 4
 

Protected Member Functions

void VisualizeMarkerPose (cv::Mat &image, Camera *cam, double visualize2d_points[12][2], const cv::Scalar color=CV_RGB(255, 0, 0)) const
 
virtual void VisualizeMarkerContent (cv::Mat &image, Camera *cam, double datatext_point[2], double content_point[2]) const
 
virtual void VisualizeMarkerError (cv::Mat &image, Camera *cam, double errortext_point[2]) const
 
bool UpdateContentBasic (std::vector< PointDouble > &_marker_corners_img, cv::Mat &gray, Camera *cam, int frame_no=0)
 

Protected Attributes

double margin_error
 
double decode_error
 
double track_error
 
double edge_length
 
int res
 
double margin
 
cv::Mat marker_content
 

Detailed Description

Basic 2D Marker functionality.

This class contains the basic Marker functionality for planar markers.

Definition at line 52 of file Marker.h.

Constructor & Destructor Documentation

◆ Marker()

Marker ( double  _edge_length = 0,
int  _res = 0,
double  _margin = 0 
)

Default constructor.

Parameters
_edge_lengthLength of the marker's edge in whatever units you are using (e.g. cm)
_resThe marker content resolution in pixels (this is actually
_marginThe marker margin resolution in pixels (The actual captured marker image has pixel resolution of _margin+_res+_margin)

Member Function Documentation

◆ CompareCorners()

void CompareCorners ( std::vector< Point< cv::Point2d >> &  _marker_corners_img,
int *  orientation,
double *  error 
)

Compares the marker corners with the previous match.

In some cases the tracking of the marker can be accepted solely based on this. Returns the marker orientation and an error value describing the pixel error relative to the marker diameter.

◆ GetError()

double GetError ( int  errors = (MARGIN_ERROR | DECODE_ERROR)) const
inline

Get marker detection error estimate.

Parameters
errorsFlags indicating what error elements are combined The marker detection error can consist of several elements: MARGIN_ERROR is updated in UpdateContent and it indicates erroneous values inside the marginal area. DECODE_ERROR is updated in DecodeContent and it indicates erroneous values inside the actual marker content area. TRACK_ERROR is updated in MarkerDetector.Detect and it indicates the amount of tracking error returned from CompareCorners

Definition at line 181 of file Marker.h.

◆ GetMargin()

double GetMargin ( ) const
inline

Returns the margin thickness, that is, the number of rows or columns of black squares surrounding the content area.

Definition at line 165 of file Marker.h.

◆ GetRes()

int GetRes ( ) const
inline

Returns the resolution (the number of square rows and columns) of the marker content area. The total number of content squares within the content area is resolution*resolution.

Definition at line 155 of file Marker.h.


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