Go to the documentation of this file.00001 #ifndef QUAD_H
00002 #define QUAD_H
00003
00004 #include <utility>
00005 #include <vector>
00006
00007 #include <Eigen/Dense>
00008
00009 #include "Homography33.h"
00010
00011 namespace AprilTags {
00012
00013 class FloatImage;
00014 class Segment;
00015
00016 using std::min;
00017 using std::max;
00018
00020 class Quad {
00021 public:
00022 static const int minimumEdgeLength = 6;
00023 static float const maxQuadAspectRatio;
00024
00026
00028 Quad(const std::vector< std::pair<float,float> >& p, const std::pair<float,float>& opticalCenter);
00029
00031 std::pair<float,float> interpolate(float x, float y);
00032
00034 std::pair<float,float> interpolate01(float x, float y);
00035
00037 std::vector< std::pair<float,float> > quadPoints;
00038
00040 std::vector<Segment*> segments;
00041
00043
00047 float observedPerimeter;
00048
00050
00051 Homography33 homography;
00052
00054
00055
00056
00057
00058
00059 static void search(const FloatImage& fImage, std::vector<Segment*>& path,
00060 Segment& parent, int depth, std::vector<Quad>& quads,
00061 const std::pair<float,float>& opticalCenter);
00062
00063 #ifdef INTERPOLATE
00064 private:
00065 Eigen::Vector2f p0, p3, p01, p32;
00066 #endif
00067
00068 };
00069
00070 }
00071
00072 #endif