Visual Servoing Platform
version 3.7.0
Toggle main menu visibility
Loading...
Searching...
No Matches
vpRBSilhouettePoint.h
1
/*
2
* ViSP, open source Visual Servoing Platform software.
3
* Copyright (C) 2005 - 2024 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
35
#ifndef VP_RB_SILHOUETTE_POINT_H
36
#define VP_RB_SILHOUETTE_POINT_H
37
38
#include <visp3/core/vpConfig.h>
39
#include <visp3/core/vpColVector.h>
40
41
BEGIN_VISP_NAMESPACE
53
class
VISP_EXPORT
vpRBSilhouettePoint
54
{
55
public
:
56
unsigned
int
i
,
j
;
57
vpColVector
normal
;
58
double
orientation
;
59
double
Z
;
60
bool
isSilhouette
;
61
62
vpRBSilhouettePoint
(
unsigned
int
a_i,
unsigned
int
a_j,
const
vpColVector
&a_normal,
double
a_orientation,
double
a_Z) :
63
i
(a_i),
j
(a_j),
normal
(a_normal),
orientation
(a_orientation),
Z
(a_Z)
64
{ }
65
66
void
detectSilhouette
(
const
vpImage<float>
&I)
67
{
68
int
range = 4;
69
unsigned
int
urange =
static_cast<
unsigned
int
>
(range);
70
unsigned
int
k = 0;
71
if
(
i
< urange || j < urange || i >= (I.getHeight() - urange) ||
j
>= (I.getWidth() - urange)) {
72
isSilhouette
=
false
;
73
return
;
74
}
75
double
c = cos(
orientation
);
76
double
s = sin(
orientation
);
77
for
(
int
n = -range; n <= range; n++) {
78
unsigned
int
ii =
static_cast<
unsigned
int
>
(round(
i
+ s * n));
79
unsigned
int
jj =
static_cast<
unsigned
int
>
(round(
j
+ c * n));
80
unsigned
int
isBg =
static_cast<
unsigned
int
>
(I[ii][jj] == 0.f);
81
k += isBg;
82
}
83
isSilhouette
= k > 2;
84
}
85
86
};
87
88
END_VISP_NAMESPACE
89
90
#endif
vpColVector
Implementation of column vector and the associated operations.
Definition
vpColVector.h:191
vpImage
Definition of the vpImage class member functions.
Definition
vpImage.h:131
vpRBSilhouettePoint::Z
double Z
angle of the normal in the image.
Definition
vpRBSilhouettePoint.h:59
vpRBSilhouettePoint::vpRBSilhouettePoint
vpRBSilhouettePoint(unsigned int a_i, unsigned int a_j, const vpColVector &a_normal, double a_orientation, double a_Z)
Definition
vpRBSilhouettePoint.h:62
vpRBSilhouettePoint::normal
vpColVector normal
Pixel coordinates of the silhouette point.
Definition
vpRBSilhouettePoint.h:57
vpRBSilhouettePoint::orientation
double orientation
Normal to the silhouette at point i,j, in world frame.
Definition
vpRBSilhouettePoint.h:58
vpRBSilhouettePoint::j
unsigned int j
Definition
vpRBSilhouettePoint.h:56
vpRBSilhouettePoint::i
unsigned int i
Definition
vpRBSilhouettePoint.h:56
vpRBSilhouettePoint::isSilhouette
bool isSilhouette
Point depth.
Definition
vpRBSilhouettePoint.h:60
vpRBSilhouettePoint::detectSilhouette
void detectSilhouette(const vpImage< float > &I)
Definition
vpRBSilhouettePoint.h:66
BEGIN_VISP_NAMESPACE
Definition
vpMbtDistanceCircle.cpp:55
modules
tracker
rbt
include
visp3
rbt
vpRBSilhouettePoint.h
Generated by
1.17.0