Ocean
tracking/pattern/Pattern.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7 
8 #ifndef META_OCEAN_TRACKING_PATTERN_PATTERN_H
9 #define META_OCEAN_TRACKING_PATTERN_PATTERN_H
10 
11 #include "ocean/tracking/Tracker.h"
12 
13 namespace Ocean
14 {
15 
16 namespace Tracking
17 {
18 
19 namespace Pattern
20 {
21 
22 /**
23  * @ingroup tracking
24  * @defgroup trackingpattern Ocean Pattern Tracking Interface
25  * @{
26  * The Ocean Pattern Tracker Library allows to track individual patterns.
27  * You can use the PatternTracker6DOF class which is derived from VisualTracker,<br>
28  * or you can use the actual implementation directly PatternTrackerCore6DOF if you want to get rid of the object oriented implementation.<br>
29  *
30  * The tracker provides camera poses for individual tracking patterns.<br>
31  * Each pattern is connected with an id allowing to distinguish between the individual patterns.<br>
32  * For each camera frame, the tracker determines pairs of pattern ids and camera poses (for all visible patterns).<br>
33  * Each resulting camera pose transforms points defined in the camera coordinate system to points defined in the coordinate system of the corresponding pattern (pTc).<br>
34  *
35  * Each pattern has an own coordinate system with origin in the upper left corner of the pattern image (the pattern is expected to be located e.g., on a table - not on a wall).<br>
36  * The x-axis is pointing along the horizontal border of the pattern (to the right),<br>
37  * the y-axis is pointing upwards towards the observer,<br>
38  * the z-axis is pointing along the vertical border of the pattern (downwards):
39  * <pre>
40  * ^
41  * Y |
42  * |
43  * |
44  * O ---------> ............. (pattern top right)
45  * / X .
46  * / Z .
47  * v .
48  * . .
49  * . .
50  * . ........................ (pattern bottom right)
51  * (pattern bottom left)
52  * </pre>
53  *
54  * The coordinate system of the camera is defined such that the observer/camera is looking into the negative z-space, the origin is in the center of the image.<br>
55  * The x-axis points to the right of the camera, and the y-axis is identical to the up vector of the camera:<br>
56  * <pre>
57  * ................................. (camera image top right)
58  * . .
59  * . ^ .
60  * . Y | .
61  * . | .
62  * . | .
63  * . O ---------> .
64  * . / X .
65  * . / Z .
66  * . v .
67  * . .
68  * ................................. (camera image bottom right)
69  * (camera image bottom left)
70  * </pre>
71  * @see PatternTracker6DOF, PatternTrackerCore6DOF.
72  * @}
73  */
74 
75 /**
76  * @namespace Ocean::Tracking::Pattern Namespace of the Pattern Tracker library.<p>
77  * The Namespace Ocean::Tracking::Pattern is used in the entire Ocean Pattern Tracker Library.
78  */
79 
80 // Defines OCEAN_TRACKING_PATTERN_EXPORT for dll export and import.
81 #if defined(_WINDOWS) && defined(OCEAN_RUNTIME_SHARED)
82  #ifdef USE_OCEAN_TRACKING_PATTERN_EXPORT
83  #define OCEAN_TRACKING_PATTERN_EXPORT __declspec(dllexport)
84  #else
85  #define OCEAN_TRACKING_PATTERN_EXPORT __declspec(dllimport)
86  #endif
87 #else
88  #define OCEAN_TRACKING_PATTERN_EXPORT
89 #endif
90 
91 }
92 
93 }
94 
95 }
96 
97 #endif // META_OCEAN_TRACKING_PATTERN_PATTERN_H
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15