Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
y
z
Variables
a
b
c
d
e
f
h
i
k
l
m
n
s
t
v
w
Typedefs
a
b
c
d
e
f
h
i
l
m
n
p
q
s
u
v
w
Enumerations
Enumerator
c
d
f
h
l
m
n
r
s
Classes
Class List
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
h
i
m
n
o
p
r
s
t
u
v
Enumerations
b
c
d
f
l
n
o
p
r
s
t
v
Enumerator
_
c
d
f
h
k
n
q
r
s
t
v
x
y
Related Functions
b
c
d
o
r
s
u
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
y
Enumerations
Enumerator
b
c
d
e
f
k
l
n
p
s
t
u
w
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
corelib
src
VisualWord.cpp
Go to the documentation of this file.
1
/*
2
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3
All rights reserved.
4
5
Redistribution and use in source and binary forms, with or without
6
modification, are permitted provided that the following conditions are met:
7
* Redistributions of source code must retain the above copyright
8
notice, this list of conditions and the following disclaimer.
9
* Redistributions in binary form must reproduce the above copyright
10
notice, this list of conditions and the following disclaimer in the
11
documentation and/or other materials provided with the distribution.
12
* Neither the name of the Universite de Sherbrooke nor the
13
names of its contributors may be used to endorse or promote products
14
derived from this software without specific prior written permission.
15
16
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#include "
rtabmap/core/VisualWord.h
"
29
#include "
rtabmap/utilite/ULogger.h
"
30
#include "
rtabmap/utilite/UStl.h
"
31
32
namespace
rtabmap
33
{
34
35
VisualWord::VisualWord
(
int
id
,
const
cv::Mat &
descriptor
,
int
signatureId) :
36
_id(
id
),
37
_descriptor(
descriptor
),
38
_saved(
false
),
39
_totalReferences(0)
40
{
41
if
(signatureId)
42
{
43
addRef
(signatureId);
44
}
45
}
46
47
VisualWord::~VisualWord
()
48
{
49
}
50
51
void
VisualWord::addRef
(
int
signatureId)
52
{
53
std::map<int, int>::iterator
iter
=
_references
.find(signatureId);
54
if
(
iter
!=
_references
.end())
55
{
56
(*iter).second += 1;
57
}
58
else
59
{
60
_references
.insert(std::pair<int, int>(signatureId, 1));
61
}
62
++
_totalReferences
;
63
}
64
65
int
VisualWord::removeAllRef
(
int
signatureId)
66
{
67
int
removed =
uTake
(
_references
, signatureId, 0);
68
_totalReferences
-= removed;
69
return
removed;
70
}
71
72
unsigned
long
VisualWord::getMemoryUsed
()
const
73
{
74
unsigned
long
memoryUsage =
sizeof
(
VisualWord
);
75
memoryUsage +=
_references
.size() * (
sizeof
(
int
)*2+
sizeof
(std::map<int ,int>::iterator)) +
sizeof
(std::map<int ,int>);
76
memoryUsage +=
_oldReferences
.size() * (
sizeof
(
int
)*2+
sizeof
(std::map<int ,int>::iterator)) +
sizeof
(std::map<int ,int>);
77
memoryUsage +=
_descriptor
.total() *
_descriptor
.elemSize();
78
return
memoryUsage;
79
}
80
81
}
// namespace rtabmap
int
int
rtabmap::VisualWord::VisualWord
VisualWord(int id, const cv::Mat &descriptor, int signatureId=0)
Definition:
VisualWord.cpp:35
rtabmap_netvlad.descriptor
def descriptor
Definition:
rtabmap_netvlad.py:81
rtabmap::VisualWord::addRef
void addRef(int signatureId)
Definition:
VisualWord.cpp:51
rtabmap::VisualWord::~VisualWord
~VisualWord()
Definition:
VisualWord.cpp:47
rtabmap::VisualWord::_references
std::map< int, int > _references
Definition:
VisualWord.h:62
rtabmap::VisualWord::removeAllRef
int removeAllRef(int signatureId)
Definition:
VisualWord.cpp:65
VisualWord.h
rtabmap::VisualWord::_descriptor
cv::Mat _descriptor
Definition:
VisualWord.h:58
rtabmap::VisualWord::getMemoryUsed
unsigned long getMemoryUsed() const
Definition:
VisualWord.cpp:72
rtabmap::VisualWord::_oldReferences
std::map< int, int > _oldReferences
Definition:
VisualWord.h:63
uTake
V uTake(std::map< K, V > &m, const K &key, const V &defaultValue=V())
Definition:
UStl.h:258
rtabmap::VisualWord::_totalReferences
int _totalReferences
Definition:
VisualWord.h:61
ULogger.h
ULogger class and convenient macros.
iter
iterator iter(handle obj)
id
id
UStl.h
Wrappers of STL for convenient functions.
false
#define false
Definition:
ConvertUTF.c:56
rtabmap
Definition:
CameraARCore.cpp:35
rtabmap
Author(s): Mathieu Labbe
autogenerated on Thu Feb 13 2025 03:45:05