fractalmarkerset.h
Go to the documentation of this file.
1 #include "fractalmarker.h"
2 
3 #include <opencv2/imgproc/imgproc.hpp>
4 #include <stdio.h>
5 #include <map>
6 #include "../aruco_export.h"
7 
8 namespace aruco
9 {
11 {
12 public:
13  enum CONF_TYPES : uint64_t
14  {
15  FRACTAL_2L_6 = 0,
16  FRACTAL_3L_6 = 1,
17  FRACTAL_4L_6 = 2,
18  FRACTAL_5L_6 = 3,
19  CUSTOM = 4 // for used defined dictionaries (using load).
20  };
21 
27  void create(std::vector<std::pair<int, int>> regionsConfig, float pixSize);
28 
36  cv::Mat configureMat(int nVal, int kVal, int maxIter = 10000);
37  // computes the distance of a marker to itself
38  int dstMarker(const cv::Mat m);
39 
40  // computes distance between marker to marker
41  int dstMarkerToMarker(const cv::Mat m1, const cv::Mat m2);
42 
43  // computes distance between marker to set of markers
44  int dstMarkerToFractalDict(cv::Mat m);
45 
46  // saves to a binary stream
47  static void _toStream(FractalMarkerSet &configuration, std::ostream &str);
48 
49  // load from a binary stream
50  static void _fromStream(FractalMarkerSet &configuration, std::istream &str);
51 
52  static bool isPredefinedConfigurationString(std::string str);
53 
54  static std::string getTypeString(FractalMarkerSet::CONF_TYPES t);
55 
56  static CONF_TYPES getTypeFromString(std::string str);
57 
58  static FractalMarkerSet load(std::string info);
59 
60  static FractalMarkerSet loadPredefined(std::string info);
61 
62  static FractalMarkerSet loadPredefined(CONF_TYPES info);
63 
64  static FractalMarkerSet readFromFile(std::string path);
65 
66  // saves configuration to a text file
67  void saveToFile(cv::FileStorage &fs);
68 
69  // Fractal configuration. id_marker
70  std::map<int, FractalMarker> fractalMarkerCollection;
71  // Nbits_idmarkers
72  std::map<int, std::vector<int>> nbits_fractalMarkerIDs;
73 
75  {
76  NONE = -1,
77  PIX = 0,
78  METERS = 1,
79  NORM = 2
80  }; // indicates if the data in Fractal is expressed in meters or in pixels
81 
84  bool isExpressedInMeters() const
85  {
86  return mInfoType == METERS;
87  }
90  bool isExpressedInPixels() const
91  {
92  return mInfoType == PIX;
93  }
96  bool isNormalize() const
97  {
98  return mInfoType == NORM;
99  }
100 
101  // Normalize fractal marker. The corners will go on to take the values (-1,1)(1,1),(1,-1)(-1,-1)
102  FractalMarkerSet normalize();
103 
104  // Convert marker to meters
105  FractalMarkerSet convertToMeters(float fractalSize_meters);
106 
107  static std::vector<std::string> getConfigurations();
108 
109  // Get fractal size (external marker)
110  float getFractalSize() const
111  {
112  FractalMarker externalMarker = fractalMarkerCollection.at(_idExternal);
113  return externalMarker.getMarkerSize();
114  }
115 
116  // Get number of bits (external marker)
117  int nBits() const
118  {
119  FractalMarker externalMarker = fractalMarkerCollection.at(_idExternal);
120  return externalMarker.nBits();
121  }
122 
123  // Check if m is a inner marker, and get its id.
124  bool isFractalMarker(cv::Mat &m, int nbits, int &id);
125 
126  // Get all inners corners
127  std::map<int, std::vector<cv::Point3f>> getInnerCorners();
128 
129  cv::Mat getFractalMarkerImage(int pixSize, bool border = false);
130 
131  // variable indicates if the data is expressed in meters or in pixels or are normalized
132  int mInfoType; /* -1:NONE, 0:PIX, 1:METERS, 2:NORMALIZE*/
133 
134 private:
135  // Number of levels
137  // ID external marker
138  int _idExternal = 0;
139  // Configuration dictionary
140  std::string config;
141 };
142 } // namespace aruco
aruco::FractalMarkerSet::isNormalize
bool isNormalize() const
Definition: fractalmarkerset.h:96
aruco::Marker3DInfo::at
cv::Point3f at(size_t idx) const
Definition: markermap.h:51
aruco::FractalMarkerSet::CONF_TYPES
CONF_TYPES
Definition: fractalmarkerset.h:13
aruco::FractalMarkerSet::mInfoType
int mInfoType
Definition: fractalmarkerset.h:132
fractalmarker.h
aruco::FractalMarkerSet::config
std::string config
Definition: fractalmarkerset.h:140
aruco::FractalMarker::nBits
int nBits()
Definition: fractalmarker.h:37
aruco::FractalMarkerSet::_nmarkers
int _nmarkers
Definition: fractalmarkerset.h:136
aruco::FractalMarkerSet::nbits_fractalMarkerIDs
std::map< int, std::vector< int > > nbits_fractalMarkerIDs
Definition: fractalmarkerset.h:72
aruco::FractalMarkerSet::isExpressedInPixels
bool isExpressedInPixels() const
Definition: fractalmarkerset.h:90
aruco::FractalMarkerSet::getFractalSize
float getFractalSize() const
Definition: fractalmarkerset.h:110
aruco::FractalMarkerSet::nBits
int nBits() const
Definition: fractalmarkerset.h:117
aruco::Marker3DInfo::getMarkerSize
float getMarkerSize() const
Definition: markermap.h:47
aruco::FractalMarkerSet::fractalMarkerCollection
std::map< int, FractalMarker > fractalMarkerCollection
Definition: fractalmarkerset.h:70
ARUCO_EXPORT
#define ARUCO_EXPORT
Definition: aruco_export.h:30
aruco
Definition: cameraparameters.h:24
aruco::FractalMarkerSet::isExpressedInMeters
bool isExpressedInMeters() const
Definition: fractalmarkerset.h:84
aruco::FractalMarkerSet
Definition: fractalmarkerset.h:10
aruco::FractalMarker
Definition: fractalmarker.h:11
aruco::FractalMarkerSet::Fractal3DInfoType
Fractal3DInfoType
Definition: fractalmarkerset.h:74


aruco
Author(s): Rafael Muñoz Salinas , Bence Magyar
autogenerated on Sat Sep 23 2023 02:26:45