| ARX 1.0 The next-generation open source augmented reality toolkit.

Loading...
Searching...
No Matches
ARTrackableMultiSquareAuto.h
Go to the documentation of this file.
1/*
2 * ARTrackableMultiSquareAuto.h
3 * artoolkitX
4 *
5 * This file is part of artoolkitX.
6 *
7 * artoolkitX is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * artoolkitX is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with artoolkitX. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * As a special exception, the copyright holders of this library give you
21 * permission to link this library with independent modules to produce an
22 * executable, regardless of the license terms of these independent modules, and to
23 * copy and distribute the resulting executable under terms of your choice,
24 * provided that you also meet, for each linked independent module, the terms and
25 * conditions of the license of that module. An independent module is a module
26 * which is neither derived from nor based on this library. If you modify this
27 * library, you may extend this exception to your version of the library, but you
28 * are not obligated to do so. If you do not wish to do so, delete this exception
29 * statement from your version.
30 *
31 * Copyright 2018 Eden Networks Ltd.
32 *
33 * Author(s): Philip Lamb
34 *
35 */
36
37#ifndef ARTRACKABLEMAP_H
38#define ARTRACKABLEMAP_H
39
40#include <ARX/ARTrackable.h>
41#include <ARX/AR/arMulti.h>
42#include <memory>
43
47 class ARTrackableMultiSquareAuto : public ARTrackable {
48
49 private:
50 int m_OriginMarkerUid; // The UID of the barcode marker which defines the origin of the world coordinate system.
51 ARdouble m_markerWidth;
52 ARMultiMarkerInfoT *m_MultiConfig;
53
54 // A holder for a struct which holds member variables which we don't want to appear to the header.
55 std::unique_ptr<struct ARTrackableMapPrivateMembers> m_pm;
56
57
58 protected:
59
60 public:
61
62 ARTrackableMultiSquareAuto();
63 ~ARTrackableMultiSquareAuto();
64
65 bool initWithOriginMarkerUID(int originMarkerUID, ARdouble markerWidth);
66
67 // Tracking parameters.
68 ARdouble m_ImageBorderZone = 0.2f;
69 bool m_robustFlag = true;
70 ARdouble m_maxErr = 4.0f;
71
72
80 bool updateWithDetectedMarkers(ARMarkerInfo* markerInfo, int markerNum, int videoWidth, int videoHeight, AR3DHandle *ar3DHandle);
81
82 bool updateWithDetectedMarkersStereo(ARMarkerInfo* markerInfoL, int markerNumL, int videoWidthL, int videoHeightL, ARMarkerInfo* markerInfoR, int markerNumR, int videoWidthR, int videoHeightR, AR3DStereoHandle *handle, ARdouble transL2R[3][4]);
83
88 ARMultiMarkerInfoT *copyMultiConfig();
89
90 int getPatternCount() override;
91 std::pair<float, float> getPatternSize(int patternIndex) override;
92 std::pair<int, int> getPatternImageSize(int patternIndex, AR_MATRIX_CODE_TYPE matrixCodeType) override;
93 bool getPatternTransform(int patternIndex, ARdouble T[16]) override;
94 bool getPatternImage(int patternIndex, uint32_t *pattImageBuffer, AR_MATRIX_CODE_TYPE matrixCodeType) override;
95};
96
97
98#endif // !ARTRACKABLEMAP_H
ARTrackable.h
AR_MATRIX_CODE_TYPE
AR_MATRIX_CODE_TYPE
Values specifying the type of matrix code in use.
Definition: ar.h:320
ARdouble
double ARdouble
Definition: ar.h:99
arMulti.h
ARTrackable
Base class for supported trackable types.
Definition: ARTrackable.h:62
ARTrackableMultiSquareAuto
An ARTrackable that auto-builds a map of matrix (2D barcode) markers.
Definition: ARTrackableMultiSquareAuto.h:47
ARTrackableMultiSquareAuto::ARTrackableMultiSquareAuto
ARTrackableMultiSquareAuto()
Definition: ARTrackableMultiSquareAuto.cpp:57
ARTrackableMultiSquareAuto::initWithOriginMarkerUID
bool initWithOriginMarkerUID(int originMarkerUID, ARdouble markerWidth)
Definition: ARTrackableMultiSquareAuto.cpp:74
ARTrackableMultiSquareAuto::getPatternImageSize
std::pair< int, int > getPatternImageSize(int patternIndex, AR_MATRIX_CODE_TYPE matrixCodeType) override
Definition: ARTrackableMultiSquareAuto.cpp:252
ARTrackableMultiSquareAuto::getPatternTransform
bool getPatternTransform(int patternIndex, ARdouble T[16]) override
Get the transform, relative to this trackable's origin, of this pattern.
Definition: ARTrackableMultiSquareAuto.cpp:257
ARTrackableMultiSquareAuto::copyMultiConfig
ARMultiMarkerInfoT * copyMultiConfig()
Make a copy of the multi config.
Definition: ARTrackableMultiSquareAuto.cpp:236
ARTrackableMultiSquareAuto::getPatternImage
bool getPatternImage(int patternIndex, uint32_t *pattImageBuffer, AR_MATRIX_CODE_TYPE matrixCodeType) override
Definition: ARTrackableMultiSquareAuto.cpp:280
ARTrackableMultiSquareAuto::updateWithDetectedMarkersStereo
bool updateWithDetectedMarkersStereo(ARMarkerInfo *markerInfoL, int markerNumL, int videoWidthL, int videoHeightL, ARMarkerInfo *markerInfoR, int markerNumR, int videoWidthR, int videoHeightR, AR3DStereoHandle *handle, ARdouble transL2R[3][4])
Definition: ARTrackableMultiSquareAuto.cpp:222
ARTrackableMultiSquareAuto::m_maxErr
ARdouble m_maxErr
The maximum allowable pose estimate error.
Definition: ARTrackableMultiSquareAuto.h:70
ARTrackableMultiSquareAuto::updateWithDetectedMarkers
bool updateWithDetectedMarkers(ARMarkerInfo *markerInfo, int markerNum, int videoWidth, int videoHeight, AR3DHandle *ar3DHandle)
Updates the marker with new tracking info.
Definition: ARTrackableMultiSquareAuto.cpp:81
ARTrackableMultiSquareAuto::getPatternSize
std::pair< float, float > getPatternSize(int patternIndex) override
Definition: ARTrackableMultiSquareAuto.cpp:247
ARTrackableMultiSquareAuto::m_ImageBorderZone
ARdouble m_ImageBorderZone
The proportion of the image width/height to consider as an "border" zone in which markers are not to ...
Definition: ARTrackableMultiSquareAuto.h:68
ARTrackableMultiSquareAuto::m_robustFlag
bool m_robustFlag
Flag specifying which pose estimation approach to use.
Definition: ARTrackableMultiSquareAuto.h:69
ARTrackableMultiSquareAuto::getPatternCount
int getPatternCount() override
Definition: ARTrackableMultiSquareAuto.cpp:241
ARTrackableMultiSquareAuto::~ARTrackableMultiSquareAuto
~ARTrackableMultiSquareAuto()
Definition: ARTrackableMultiSquareAuto.cpp:66
AR3DHandle
Structure holding state of an instance of the monocular pose estimator.
Definition: ar.h:385
AR3DStereoHandle
Structure holding state of an instance of the stereo pose estimator.
Definition: ar.h:395
ARMarkerInfo
Describes a detected trapezoidal area (a candidate for a marker match).
Definition: ar.h:213
ARMultiMarkerInfoT
Definition: arMulti.h:85