Initializes multi marker by estimating their relative positions from one or more images. More...
#include <MultiMarkerInitializer.h>
Classes | |
class | MarkerMeasurement |
MarkerMeasurement that holds the maker id. More... | |
Public Member Functions | |
int | getMeasurementCount () |
const std::vector < MarkerMeasurement, Eigen::aligned_allocator < MarkerMeasurement > > & | getMeasurementMarkers (int measurement) |
double | getMeasurementPose (int measurement, Camera *cam, Pose &pose) |
int | Initialize (Camera *cam) |
template<class M > | |
void | MeasurementsAdd (const std::vector< M, Eigen::aligned_allocator< M > > *markers) |
void | MeasurementsReset () |
MultiMarkerInitializer (std::vector< int > &indices, int filter_buffer_min=4, int filter_buffer_max=15) | |
~MultiMarkerInitializer () | |
Protected Types | |
typedef std::vector < std::vector < MarkerMeasurement, Eigen::aligned_allocator < MarkerMeasurement > > >::iterator | MeasurementIterator |
Protected Member Functions | |
void | MeasurementsAdd (MarkerIterator &begin, MarkerIterator &end) |
bool | updateMarkerPoses (std::vector< MarkerMeasurement, Eigen::aligned_allocator< MarkerMeasurement > > &markers, const Pose &pose) |
Protected Attributes | |
int | filter_buffer_min |
std::vector< bool > | marker_detected |
std::vector< std::vector < MarkerMeasurement, Eigen::aligned_allocator < MarkerMeasurement > > > | measurements |
FilterMedian * | pointcloud_filtered |
Initializes multi marker by estimating their relative positions from one or more images.
To use, detect markers from images using MarkerDetector and call addMeasurement for each image that has at least two markers. Finally, call initialize to compute the relative positions of markers.
After the multi marker has been initialized, the point cloud can be copied into another MultiMarker implementation by PointCloudCopy.
Definition at line 50 of file MultiMarkerInitializer.h.
typedef std::vector<std::vector<MarkerMeasurement, Eigen::aligned_allocator<MarkerMeasurement> > >::iterator alvar::MultiMarkerInitializer::MeasurementIterator [protected] |
Definition at line 68 of file MultiMarkerInitializer.h.
alvar::MultiMarkerInitializer::MultiMarkerInitializer | ( | std::vector< int > & | indices, |
int | filter_buffer_min = 4 , |
||
int | filter_buffer_max = 15 |
||
) |
Definition at line 32 of file MultiMarkerInitializer.cpp.
int alvar::MultiMarkerInitializer::getMeasurementCount | ( | ) | [inline] |
Definition at line 113 of file MultiMarkerInitializer.h.
const std::vector<MarkerMeasurement, Eigen::aligned_allocator<MarkerMeasurement> >& alvar::MultiMarkerInitializer::getMeasurementMarkers | ( | int | measurement | ) | [inline] |
Definition at line 115 of file MultiMarkerInitializer.h.
double alvar::MultiMarkerInitializer::getMeasurementPose | ( | int | measurement, |
Camera * | cam, | ||
Pose & | pose | ||
) | [inline] |
Definition at line 119 of file MultiMarkerInitializer.h.
int alvar::MultiMarkerInitializer::Initialize | ( | Camera * | cam | ) |
Tries to deduce marker poses from measurements.
Returns the number of initialized markers.
Definition at line 94 of file MultiMarkerInitializer.cpp.
void alvar::MultiMarkerInitializer::MeasurementsAdd | ( | MarkerIterator & | begin, |
MarkerIterator & | end | ||
) | [protected] |
Definition at line 44 of file MultiMarkerInitializer.cpp.
void alvar::MultiMarkerInitializer::MeasurementsAdd | ( | const std::vector< M, Eigen::aligned_allocator< M > > * | markers | ) | [inline] |
Adds a new measurement for marker field initialization. Each measurement should contain at least two markers. It does not matter which markers are visible, especially the zero marker does not have to be visible in every measurement. It suffices that there exists a 'path' from the zero marker to every other marker in the marker field.
For example:
When Initialize is called, the system can first deduce the pose of A and then the pose of B.
Definition at line 95 of file MultiMarkerInitializer.h.
Definition at line 83 of file MultiMarkerInitializer.cpp.
bool alvar::MultiMarkerInitializer::updateMarkerPoses | ( | std::vector< MarkerMeasurement, Eigen::aligned_allocator< MarkerMeasurement > > & | markers, |
const Pose & | pose | ||
) | [protected] |
Definition at line 120 of file MultiMarkerInitializer.cpp.
int alvar::MultiMarkerInitializer::filter_buffer_min [protected] |
Definition at line 70 of file MultiMarkerInitializer.h.
std::vector<bool> alvar::MultiMarkerInitializer::marker_detected [protected] |
Definition at line 66 of file MultiMarkerInitializer.h.
std::vector<std::vector<MarkerMeasurement, Eigen::aligned_allocator<MarkerMeasurement> > > alvar::MultiMarkerInitializer::measurements [protected] |
Definition at line 67 of file MultiMarkerInitializer.h.
Definition at line 69 of file MultiMarkerInitializer.h.