ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
sampling.h
Go to the documentation of this file.
1
/***********************************************************************
2
* Software License Agreement (BSD License)
3
*
4
* Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5
* Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*************************************************************************/
28
29
30
#ifndef FLANN_SAMPLING_H_
31
#define FLANN_SAMPLING_H_
32
33
#include "
FLANN/util/matrix.h
"
34
#include "
FLANN/util/random.h
"
35
36
namespace
flann
37
{
38
39
template
<
typename
T>
40
Matrix<T>
random_sample
(
Matrix<T>
& srcMatrix,
size_t
size
,
bool
remove =
false
)
41
{
42
UniqueRandom
rand_unique(srcMatrix.
rows
);
43
Matrix<T>
newSet(
new
T[
size
* srcMatrix.
cols
],
size
,srcMatrix.
cols
);
44
45
T* src,* dest;
46
for
(
size_t
i=0; i<
size
; ++i) {
47
size_t
r;
48
if
(remove) {
49
r =
static_cast<
size_t
>
(
rand_int
(srcMatrix.
rows
-i));
50
}
51
else
{
52
r =
static_cast<
size_t
>
(rand_unique.
next
());
53
}
54
dest = newSet[i];
55
src = srcMatrix[r];
56
std::copy
(src, src+srcMatrix.
cols
, dest);
57
if
(remove) {
58
src = srcMatrix[srcMatrix.
rows
-i-1];
59
dest = srcMatrix[r];
60
std::copy
(src, src+srcMatrix.
cols
, dest);
61
}
62
}
63
if
(remove) {
64
srcMatrix.
rows
-=
size
;
65
}
66
return
newSet;
67
}
68
69
}
// namespace
70
71
72
#endif
/* FLANN_SAMPLING_H_ */
size
int size
Definition:
FileIOFactory.cpp:130
copy
bool copy
Definition:
VtkUtils.cpp:74
flann::Matrix_::cols
size_t cols
Definition:
matrix.h:73
flann::Matrix_::rows
size_t rows
Definition:
matrix.h:72
flann::Matrix
Definition:
matrix.h:104
flann::UniqueRandom
Definition:
random.h:92
flann::UniqueRandom::next
int next()
Definition:
random.h:132
flann
Definition:
all_indices.h:50
flann::random_sample
Matrix< T > random_sample(Matrix< T > &srcMatrix, size_t size, bool remove=false)
Definition:
sampling.h:40
flann::rand_int
int rand_int(int high=RAND_MAX, int low=0)
Definition:
random.h:74
random.h
matrix.h
libs
Reconstruction
lib
FLANN
util
sampling.h
Generated on Wed Jan 28 2026 09:00:59 for ACloudViewer by
1.9.1