Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpFeatureBuilder.h
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 *
30 * Description:
31 * Conversion between tracker and visual feature.
32 */
33
38
39#ifndef vpFeatureBuilder_H
40#define vpFeatureBuilder_H
41
42
43#include <visp3/core/vpConfig.h>
44
45// tracker
46#ifdef VISP_HAVE_MODULE_BLOB
47#include <visp3/blob/vpDot.h>
48#include <visp3/blob/vpDot2.h>
49#endif
50
51#ifdef VISP_HAVE_MODULE_ME
52#include <visp3/me/vpMeEllipse.h>
53#include <visp3/me/vpMeLine.h>
54#endif
55
56// forward projection tracker
57#include <visp3/core/vpCircle.h>
58#include <visp3/core/vpCylinder.h>
59#include <visp3/core/vpLine.h>
60#include <visp3/core/vpPoint.h>
61#include <visp3/core/vpSphere.h>
62
63// visual feature
64#include <visp3/visual_features/vpFeatureEllipse.h>
65#include <visp3/visual_features/vpFeatureLine.h>
66#include <visp3/visual_features/vpFeaturePoint.h>
67#include <visp3/visual_features/vpFeaturePoint3D.h>
68#include <visp3/visual_features/vpFeaturePointPolar.h>
69#include <visp3/visual_features/vpFeatureSegment.h>
70#include <visp3/visual_features/vpFeatureThetaU.h>
71#include <visp3/visual_features/vpFeatureTranslation.h>
72#include <visp3/visual_features/vpFeatureVanishingPoint.h>
73
74// others
75#include <visp3/core/vpImagePoint.h>
76
77// pixel / meter conversion
78#include <visp3/core/vpCameraParameters.h>
79#include <visp3/core/vpMeterPixelConversion.h>
80#include <visp3/core/vpPixelMeterConversion.h>
81
98class VISP_EXPORT vpFeatureBuilder
99{
100public:
101// create vpFeaturePoint feature
102#ifdef VISP_HAVE_MODULE_BLOB
103 static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d);
104 static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot2 &d);
105#endif
106 static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpImagePoint &t);
107 static void create(vpFeaturePoint &s, const vpPoint &p);
108 static void create(vpFeaturePoint &s, const vpCameraParameters &goodCam, const vpCameraParameters &wrongCam,
109 const vpPoint &p);
110
111#ifdef VISP_HAVE_MODULE_BLOB
112 static void create(vpFeatureSegment &s, const vpCameraParameters &cam, const vpDot &d1, const vpDot &d2);
113 static void create(vpFeatureSegment &s, const vpCameraParameters &cam, const vpDot2 &d1, const vpDot2 &d2);
114#endif
115 static void create(vpFeatureSegment &s, const vpCameraParameters &cam, const vpImagePoint &ip1,
116 const vpImagePoint &ip2);
117 static void create(vpFeatureSegment &s, vpPoint &P1, vpPoint &P2);
118
119// create vpFeaturePointPolar feature
120#ifdef VISP_HAVE_MODULE_BLOB
121 static void create(vpFeaturePointPolar &s, const vpCameraParameters &cam, const vpDot &dot);
122 static void create(vpFeaturePointPolar &s, const vpCameraParameters &cam, const vpDot2 &dot);
123#endif
124 static void create(vpFeaturePointPolar &s, const vpCameraParameters &cam, const vpImagePoint &iP);
125 static void create(vpFeaturePointPolar &s, const vpPoint &p);
126 static void create(vpFeaturePointPolar &s, const vpCameraParameters &goodCam, const vpCameraParameters &wrongCam,
127 const vpPoint &p);
128
129 // create vpFeaturePoint3D feature
130 static void create(vpFeaturePoint3D &s, const vpPoint &p);
131
132 // create vpFeatureLine feature
133 static void create(vpFeatureLine &s, const vpLine &l);
134 static void create(vpFeatureLine &s, const vpCylinder &c, int line);
135
136#ifdef VISP_HAVE_MODULE_ME
137 static void create(vpFeatureLine &s, const vpCameraParameters &cam, const vpMeLine &mel);
138#endif
139
141 static void create(vpFeatureEllipse &s, const vpCircle &c);
142 static void create(vpFeatureEllipse &s, const vpSphere &sphere);
143#ifdef VISP_HAVE_MODULE_BLOB
144 static void create(vpFeatureEllipse &s, const vpCameraParameters &cam, const vpDot &blob);
145 static void create(vpFeatureEllipse &s, const vpCameraParameters &cam, const vpDot2 &blob);
146#endif
147
148#ifdef VISP_HAVE_MODULE_ME
149 static void create(vpFeatureEllipse &s, const vpCameraParameters &cam, const vpMeEllipse &ellipse);
150#endif
151
152 // To keep compat with previous releases, we set cartesian coordinates as default initialising select var to selectX()
153 // or selectY()
154 static void create(vpFeatureVanishingPoint &s, const vpPoint &p,
156 static void create(vpFeatureVanishingPoint &s, const vpFeatureLine &l1, const vpFeatureLine &l2,
158 static void create(vpFeatureVanishingPoint &s, const vpLine &l1, const vpLine &l2,
160 // This function is new that's why select is not initialized
161 static void create(vpFeatureVanishingPoint &s, const vpCameraParameters &cam, const vpImagePoint &line1_ip1,
162 const vpImagePoint &line1_ip2, const vpImagePoint &line2_ip1, const vpImagePoint &line2_ip2,
163 unsigned int select);
164};
165END_VISP_NAMESPACE
166#endif
Generic class defining intrinsic camera parameters.
Class that defines a 3D circle in the object frame and allows forward projection of a 3D circle in th...
Definition vpCircle.h:87
Class that defines a 3D cylinder in the object frame and allows forward projection of a 3D cylinder i...
Definition vpCylinder.h:101
This tracker is meant to track a blob (connex pixels with same gray level) on a vpImage.
Definition vpDot2.h:127
This tracker is meant to track a dot (connected pixels with same gray level) on a vpImage.
Definition vpDot.h:123
Class that defines conversion between trackers and visual features.
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
Class that defines 2D ellipse visual feature.
Class that defines a 2D line visual feature which is composed by two parameters that are and ,...
Class that defines the 3D point visual feature.
Class that defines 2D image point visual feature with polar coordinates described in corke09a.
Class that defines a 2D point visual feature which is composed by two parameters that are the cartes...
Class that defines a 2D segment visual features. This class allow to consider two sets of visual feat...
static unsigned int selectX()
Select visual feature .
static unsigned int selectY()
Select visual feature .
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Class that defines a 3D line in the object frame and allows forward projection of the line in the cam...
Definition vpLine.h:103
Class that tracks an ellipse or a circle using moving edges.
Class that tracks in an image a line moving edges.
Definition vpMeLine.h:157
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
Definition vpPoint.h:79
Class that defines a 3D sphere in the object frame and allows forward projection of a 3D sphere in th...
Definition vpSphere.h:80