util3d_filtering.h
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 #ifndef UTIL3D_FILTERING_H_
29 #define UTIL3D_FILTERING_H_
30 
31 #include <rtabmap/core/rtabmap_core_export.h>
32 #include <rtabmap/core/Transform.h>
33 #include <pcl/point_cloud.h>
34 #include <pcl/point_types.h>
35 #include <pcl/pcl_base.h>
36 #include <pcl/ModelCoefficients.h>
37 #include <rtabmap/core/LaserScan.h>
38 
39 namespace rtabmap
40 {
41 
42 namespace util3d
43 {
44 
51 LaserScan RTABMAP_CORE_EXPORT commonFiltering(
52  const LaserScan & scan,
53  int downsamplingStep,
54  float rangeMin = 0.0f,
55  float rangeMax = 0.0f,
56  float voxelSize = 0.0f,
57  int normalK = 0,
58  float normalRadius = 0.0f,
59  float groundNormalsUp = 0.0f);
60 // Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUp=0.8, otherwise set groundNormalsUp=0.0.
61 RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT commonFiltering(
62  const LaserScan & scan,
63  int downsamplingStep,
64  float rangeMin,
65  float rangeMax,
66  float voxelSize,
67  int normalK,
68  float normalRadius,
69  bool forceGroundNormalsUp);
70 
71 LaserScan RTABMAP_CORE_EXPORT rangeFiltering(
72  const LaserScan & scan,
73  float rangeMin,
74  float rangeMax);
75 
76 pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
77  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
78  const pcl::IndicesPtr & indices,
79  float rangeMin,
80  float rangeMax);
81 pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
82  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
83  const pcl::IndicesPtr & indices,
84  float rangeMin,
85  float rangeMax);
86 pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
87  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
88  const pcl::IndicesPtr & indices,
89  float rangeMin,
90  float rangeMax);
91 pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
92  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
93  const pcl::IndicesPtr & indices,
94  float rangeMin,
95  float rangeMax);
96 
97 void RTABMAP_CORE_EXPORT rangeSplitFiltering(
98  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
99  const pcl::IndicesPtr & indices,
100  float range,
101  pcl::IndicesPtr & closeIndices,
102  pcl::IndicesPtr & farIndices);
103 void RTABMAP_CORE_EXPORT rangeSplitFiltering(
104  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
105  const pcl::IndicesPtr & indices,
106  float range,
107  pcl::IndicesPtr & closeIndices,
108  pcl::IndicesPtr & farIndices);
109 void RTABMAP_CORE_EXPORT rangeSplitFiltering(
110  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
111  const pcl::IndicesPtr & indices,
112  float range,
113  pcl::IndicesPtr & closeIndices,
114  pcl::IndicesPtr & farIndices);
115 void RTABMAP_CORE_EXPORT rangeSplitFiltering(
116  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
117  const pcl::IndicesPtr & indices,
118  float range,
119  pcl::IndicesPtr & closeIndices,
120  pcl::IndicesPtr & farIndices);
121 
122 LaserScan RTABMAP_CORE_EXPORT downsample(
123  const LaserScan & cloud,
124  int step);
125 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT downsample(
126  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
127  int step);
128 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT downsample(
129  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
130  int step);
131 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT downsample(
132  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
133  int step);
134 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT downsample(
135  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
136  int step);
137 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT downsample(
138  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
139  int step);
140 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT downsample(
141  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
142  int step);
143 
144 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT voxelize(
145  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
146  const pcl::IndicesPtr & indices,
147  float voxelSize);
148 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
149  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
150  const pcl::IndicesPtr & indices,
151  float voxelSize);
152 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT voxelize(
153  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
154  const pcl::IndicesPtr & indices,
155  float voxelSize);
156 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
157  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
158  const pcl::IndicesPtr & indices,
159  float voxelSize);
160 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT voxelize(
161  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
162  const pcl::IndicesPtr & indices,
163  float voxelSize);
164 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
165  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
166  const pcl::IndicesPtr & indices,
167  float voxelSize);
168 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT voxelize(
169  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
170  float voxelSize);
171 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
172  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
173  float voxelSize);
174 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT voxelize(
175  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
176  float voxelSize);
177 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
178  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
179  float voxelSize);
180 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT voxelize(
181  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
182  float voxelSize);
183 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
184  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
185  float voxelSize);
186 
187 inline pcl::PointCloud<pcl::PointXYZ>::Ptr uniformSampling(
188  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
189  float voxelSize)
190 {
191  return voxelize(cloud, voxelSize);
192 }
193 inline pcl::PointCloud<pcl::PointXYZRGB>::Ptr uniformSampling(
194  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
195  float voxelSize)
196 {
197  return voxelize(cloud, voxelSize);
198 }
199 inline pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr uniformSampling(
200  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
201  float voxelSize)
202 {
203  return voxelize(cloud, voxelSize);
204 }
205 
206 
207 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT randomSampling(
208  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
209  int samples);
210 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
211  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
212  int samples);
213 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT randomSampling(
214  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
215  int samples);
216 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
217  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
218  int samples);
219 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT randomSampling(
220  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
221  int samples);
222 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
223  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
224  int samples);
225 
226 
227 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
228  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
229  const pcl::IndicesPtr & indices,
230  const std::string & axis,
231  float min,
232  float max,
233  bool negative = false);
234 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
235  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
236  const pcl::IndicesPtr & indices,
237  const std::string & axis,
238  float min,
239  float max,
240  bool negative = false);
241 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
242  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
243  const pcl::IndicesPtr & indices,
244  const std::string & axis,
245  float min,
246  float max,
247  bool negative = false);
248 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
249  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
250  const pcl::IndicesPtr & indices,
251  const std::string & axis,
252  float min,
253  float max,
254  bool negative = false);
255 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
256  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
257  const pcl::IndicesPtr & indices,
258  const std::string & axis,
259  float min,
260  float max,
261  bool negative = false);
262 pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
263  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
264  const pcl::IndicesPtr & indices,
265  const std::string & axis,
266  float min,
267  float max,
268  bool negative = false);
269 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT passThrough(
270  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
271  const std::string & axis,
272  float min,
273  float max,
274  bool negative = false);
275 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT passThrough(
276  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
277  const std::string & axis,
278  float min,
279  float max,
280  bool negative = false);
281 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT passThrough(
282  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
283  const std::string & axis,
284  float min,
285  float max,
286  bool negative = false);
287 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
288  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
289  const std::string & axis,
290  float min,
291  float max,
292  bool negative = false);
293 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
294  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
295  const std::string & axis,
296  float min,
297  float max,
298  bool negative = false);
299 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
300  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
301  const std::string & axis,
302  float min,
303  float max,
304  bool negative = false);
305 
306 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
307  const pcl::PCLPointCloud2::Ptr & cloud,
308  const pcl::IndicesPtr & indices,
309  const Eigen::Vector4f & min,
310  const Eigen::Vector4f & max,
311  const Transform & transform = Transform::getIdentity(),
312  bool negative = false);
313 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
314  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
315  const pcl::IndicesPtr & indices,
316  const Eigen::Vector4f & min,
317  const Eigen::Vector4f & max,
318  const Transform & transform = Transform::getIdentity(),
319  bool negative = false);
320 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
321  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
322  const pcl::IndicesPtr & indices,
323  const Eigen::Vector4f & min,
324  const Eigen::Vector4f & max,
325  const Transform & transform = Transform::getIdentity(),
326  bool negative = false);
327 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
328  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
329  const pcl::IndicesPtr & indices,
330  const Eigen::Vector4f & min,
331  const Eigen::Vector4f & max,
332  const Transform & transform = Transform::getIdentity(),
333  bool negative = false);
334 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
335  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
336  const pcl::IndicesPtr & indices,
337  const Eigen::Vector4f & min,
338  const Eigen::Vector4f & max,
339  const Transform & transform = Transform::getIdentity(),
340  bool negative = false);
341 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
342  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
343  const pcl::IndicesPtr & indices,
344  const Eigen::Vector4f & min,
345  const Eigen::Vector4f & max,
346  const Transform & transform = Transform::getIdentity(),
347  bool negative = false);
348 pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
349  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
350  const pcl::IndicesPtr & indices,
351  const Eigen::Vector4f & min,
352  const Eigen::Vector4f & max,
353  const Transform & transform = Transform::getIdentity(),
354  bool negative = false);
355 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cropBox(
356  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
357  const Eigen::Vector4f & min,
358  const Eigen::Vector4f & max,
359  const Transform & transform = Transform::getIdentity(),
360  bool negative = false);
361 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
362  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
363  const Eigen::Vector4f & min,
364  const Eigen::Vector4f & max,
365  const Transform & transform = Transform::getIdentity(),
366  bool negative = false);
367 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cropBox(
368  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
369  const Eigen::Vector4f & min,
370  const Eigen::Vector4f & max,
371  const Transform & transform = Transform::getIdentity(),
372  bool negative = false);
373 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT cropBox(
374  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
375  const Eigen::Vector4f & min,
376  const Eigen::Vector4f & max,
377  const Transform & transform = Transform::getIdentity(),
378  bool negative = false);
379 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
380  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
381  const Eigen::Vector4f & min,
382  const Eigen::Vector4f & max,
383  const Transform & transform = Transform::getIdentity(),
384  bool negative = false);
385 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
386  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
387  const Eigen::Vector4f & min,
388  const Eigen::Vector4f & max,
389  const Transform & transform = Transform::getIdentity(),
390  bool negative = false);
391 
392 //Note: This assumes a coordinate system where X is forward, * Y is up, and Z is right.
393 pcl::IndicesPtr RTABMAP_CORE_EXPORT frustumFiltering(
394  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
395  const pcl::IndicesPtr & indices,
396  const Transform & cameraPose,
397  float horizontalFOV, // in degrees, xfov = atan((image_width/2)/fx)*2
398  float verticalFOV, // in degrees, yfov = atan((image_height/2)/fy)*2
399  float nearClipPlaneDistance,
400  float farClipPlaneDistance,
401  bool negative = false);
402 //Note: This assumes a coordinate system where X is forward, * Y is up, and Z is right.
403 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT frustumFiltering(
404  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
405  const Transform & cameraPose,
406  float horizontalFOV, // in degrees, xfov = atan((image_width/2)/fx)*2
407  float verticalFOV, // in degrees, yfov = atan((image_height/2)/fy)*2
408  float nearClipPlaneDistance,
409  float farClipPlaneDistance,
410  bool negative = false);
411 //Note: This assumes a coordinate system where X is forward, * Y is up, and Z is right.
412 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT frustumFiltering(
413  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
414  const Transform & cameraPose,
415  float horizontalFOV, // in degrees, xfov = atan((image_width/2)/fx)*2
416  float verticalFOV, // in degrees, yfov = atan((image_height/2)/fy)*2
417  float nearClipPlaneDistance,
418  float farClipPlaneDistance,
419  bool negative = false);
420 
421 
422 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
423  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud);
424 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
425  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud);
426 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
427  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud);
428 pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
429  const pcl::PCLPointCloud2::Ptr & cloud);
430 
431 
432 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
433  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud);
434 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
435  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud);
436 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
437  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud);
438 
443 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
444  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
445  float radiusSearch,
446  int minNeighborsInRadius);
447 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
448  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
449  float radiusSearch,
450  int minNeighborsInRadius);
451 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
452  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
453  float radiusSearch,
454  int minNeighborsInRadius);
455 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
456  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
457  float radiusSearch,
458  int minNeighborsInRadius);
459 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
460  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
461  float radiusSearch,
462  int minNeighborsInRadius);
463 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
464  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
465  float radiusSearch,
466  int minNeighborsInRadius);
467 
480 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
481  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
482  const pcl::IndicesPtr & indices,
483  float radiusSearch,
484  int minNeighborsInRadius);
485 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
486  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
487  const pcl::IndicesPtr & indices,
488  float radiusSearch,
489  int minNeighborsInRadius);
490 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
491  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
492  const pcl::IndicesPtr & indices,
493  float radiusSearch,
494  int minNeighborsInRadius);
495 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
496  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
497  const pcl::IndicesPtr & indices,
498  float radiusSearch,
499  int minNeighborsInRadius);
500 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
501  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
502  const pcl::IndicesPtr & indices,
503  float radiusSearch,
504  int minNeighborsInRadius);
505 pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
506  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
507  const pcl::IndicesPtr & indices,
508  float radiusSearch,
509  int minNeighborsInRadius);
510 
511 /* for convenience */
512 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
513  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
514  const std::vector<int> & viewpointIndices,
515  const std::map<int, Transform> & viewpoints,
516  float factor=0.01f,
517  float neighborScale=2.0f);
518 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
519  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
520  const std::vector<int> & viewpointIndices,
521  const std::map<int, Transform> & viewpoints,
522  float factor=0.01f,
523  float neighborScale=2.0f);
524 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
525  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
526  const std::vector<int> & viewpointIndices,
527  const std::map<int, Transform> & viewpoints,
528  float factor=0.01f,
529  float neighborScale=2.0f);
530 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
531  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
532  const std::vector<int> & viewpointIndices,
533  const std::map<int, Transform> & viewpoints,
534  float factor=0.01f,
535  float neighborScale=2.0f);
536 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
537  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
538  const std::vector<int> & viewpointIndices,
539  const std::map<int, Transform> & viewpoints,
540  float factor=0.01f,
541  float neighborScale=2.0f);
542 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
543  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
544  const std::vector<int> & viewpointIndices,
545  const std::map<int, Transform> & viewpoints,
546  float factor=0.01f,
547  float neighborScale=2.0f);
548 
561 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
562  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
563  const pcl::IndicesPtr & indices,
564  const std::vector<int> & viewpointIndices,
565  const std::map<int, Transform> & viewpoints,
566  float factor=0.01f,
567  float neighborScale=2.0f);
568 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
569  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
570  const pcl::IndicesPtr & indices,
571  const std::vector<int> & viewpointIndices,
572  const std::map<int, Transform> & viewpoints,
573  float factor=0.01f,
574  float neighborScale=2.0f);
575 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
576  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
577  const pcl::IndicesPtr & indices,
578  const std::vector<int> & viewpointIndices,
579  const std::map<int, Transform> & viewpoints,
580  float factor=0.01f,
581  float neighborScale=2.0f);
582 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
583  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
584  const pcl::IndicesPtr & indices,
585  const std::vector<int> & viewpointIndices,
586  const std::map<int, Transform> & viewpoints,
587  float factor=0.01f,
588  float neighborScale=2.0f);
589 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
590  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
591  const pcl::IndicesPtr & indices,
592  const std::vector<int> & viewpointIndices,
593  const std::map<int, Transform> & viewpoints,
594  float factor=0.01f,
595  float neighborScale=2.0f);
596 pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
597  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
598  const pcl::IndicesPtr & indices,
599  const std::vector<int> & viewpointIndices,
600  const std::map<int, Transform> & viewpoints,
601  float factor=0.01f,
602  float neighborScale=2.0f);
603 
607 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
608  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
609  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & substractCloud,
610  float radiusSearch,
611  int minNeighborsInRadius = 1);
612 
622 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
623  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
624  const pcl::IndicesPtr & indices,
625  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & substractCloud,
626  const pcl::IndicesPtr & substractIndices,
627  float radiusSearch,
628  int minNeighborsInRadius = 1);
629 
633 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
634  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
635  const pcl::PointCloud<pcl::PointNormal>::Ptr & substractCloud,
636  float radiusSearch,
637  float maxAngle = M_PI/4.0f,
638  int minNeighborsInRadius = 1);
639 
649 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
650  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
651  const pcl::IndicesPtr & indices,
652  const pcl::PointCloud<pcl::PointNormal>::Ptr & substractCloud,
653  const pcl::IndicesPtr & substractIndices,
654  float radiusSearch,
655  float maxAngle = M_PI/4.0f,
656  int minNeighborsInRadius = 1);
657 
661 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
662  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
663  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & substractCloud,
664  float radiusSearch,
665  float maxAngle = M_PI/4.0f,
666  int minNeighborsInRadius = 1);
667 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
668  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
669  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & substractCloud,
670  float radiusSearch,
671  float maxAngle = M_PI/4.0f,
672  int minNeighborsInRadius = 1);
673 
683 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
684  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
685  const pcl::IndicesPtr & indices,
686  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & substractCloud,
687  const pcl::IndicesPtr & substractIndices,
688  float radiusSearch,
689  float maxAngle = M_PI/4.0f,
690  int minNeighborsInRadius = 1);
691 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
692  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
693  const pcl::IndicesPtr & indices,
694  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & substractCloud,
695  const pcl::IndicesPtr & substractIndices,
696  float radiusSearch,
697  float maxAngle = M_PI/4.0f,
698  int minNeighborsInRadius = 1);
699 
709 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(
710  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
711  const pcl::IndicesPtr & indices,
712  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & substractCloud,
713  const pcl::IndicesPtr & substractIndices,
714  float radiusSearchRatio = 0.01,
715  int minNeighborsInRadius = 1,
716  const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
717 
727 pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(
728  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
729  const pcl::IndicesPtr & indices,
730  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & substractCloud,
731  const pcl::IndicesPtr & substractIndices,
732  float radiusSearchRatio = 0.01,
733  float maxAngle = M_PI/4.0f,
734  int minNeighborsInRadius = 1,
735  const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
736 
737 
742 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
743  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
744  float angleMax,
745  const Eigen::Vector4f & normal,
746  int normalKSearch,
747  const Eigen::Vector4f & viewpoint,
748  float groundNormalsUp = 0.0f);
749 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
750  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
751  float angleMax,
752  const Eigen::Vector4f & normal,
753  int normalKSearch,
754  const Eigen::Vector4f & viewpoint,
755  float groundNormalsUp = 0.0f);
756 
773 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
774  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
775  const pcl::IndicesPtr & indices,
776  float angleMax,
777  const Eigen::Vector4f & normal,
778  int normalKSearch,
779  const Eigen::Vector4f & viewpoint,
780  float groundNormalsUp = 0.0f);
781 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
782  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
783  const pcl::IndicesPtr & indices,
784  float angleMax,
785  const Eigen::Vector4f & normal,
786  int normalKSearch,
787  const Eigen::Vector4f & viewpoint,
788  float groundNormalsUp = 0.0f);
789 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
790  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
791  const pcl::IndicesPtr & indices,
792  float angleMax,
793  const Eigen::Vector4f & normal,
794  int normalKSearch,
795  const Eigen::Vector4f & viewpoint,
796  float groundNormalsUp = 0.0f);
797 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
798  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
799  const pcl::IndicesPtr & indices,
800  float angleMax,
801  const Eigen::Vector4f & normal,
802  int normalKSearch,
803  const Eigen::Vector4f & viewpoint,
804  float groundNormalsUp = 0.0f);
805 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
806  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
807  const pcl::IndicesPtr & indices,
808  float angleMax,
809  const Eigen::Vector4f & normal,
810  int normalKSearch,
811  const Eigen::Vector4f & viewpoint,
812  float groundNormalsUp = 0.0f);
813 pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
814  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
815  const pcl::IndicesPtr & indices,
816  float angleMax,
817  const Eigen::Vector4f & normal,
818  int normalKSearch,
819  const Eigen::Vector4f & viewpoint,
820  float groundNormalsUp = 0.0f);
821 
825 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
826  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
827  float clusterTolerance,
828  int minClusterSize,
829  int maxClusterSize = std::numeric_limits<int>::max(),
830  int * biggestClusterIndex = 0);
831 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
832  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
833  float clusterTolerance,
834  int minClusterSize,
835  int maxClusterSize = std::numeric_limits<int>::max(),
836  int * biggestClusterIndex = 0);
837 
850 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
851  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
852  const pcl::IndicesPtr & indices,
853  float clusterTolerance,
854  int minClusterSize,
855  int maxClusterSize = std::numeric_limits<int>::max(),
856  int * biggestClusterIndex = 0);
857 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
858  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
859  const pcl::IndicesPtr & indices,
860  float clusterTolerance,
861  int minClusterSize,
862  int maxClusterSize = std::numeric_limits<int>::max(),
863  int * biggestClusterIndex = 0);
864 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
865  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
866  const pcl::IndicesPtr & indices,
867  float clusterTolerance,
868  int minClusterSize,
869  int maxClusterSize = std::numeric_limits<int>::max(),
870  int * biggestClusterIndex = 0);
871 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
872  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
873  const pcl::IndicesPtr & indices,
874  float clusterTolerance,
875  int minClusterSize,
876  int maxClusterSize = std::numeric_limits<int>::max(),
877  int * biggestClusterIndex = 0);
878 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
879  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
880  const pcl::IndicesPtr & indices,
881  float clusterTolerance,
882  int minClusterSize,
883  int maxClusterSize = std::numeric_limits<int>::max(),
884  int * biggestClusterIndex = 0);
885 std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
886  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
887  const pcl::IndicesPtr & indices,
888  float clusterTolerance,
889  int minClusterSize,
890  int maxClusterSize = std::numeric_limits<int>::max(),
891  int * biggestClusterIndex = 0);
892 
893 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
894  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
895  const pcl::IndicesPtr & indices,
896  bool negative);
897 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
898  const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
899  const pcl::IndicesPtr & indices,
900  bool negative);
901 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
902  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
903  const pcl::IndicesPtr & indices,
904  bool negative);
905 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
906  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
907  const pcl::IndicesPtr & indices,
908  bool negative);
909 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
910  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
911  const pcl::IndicesPtr & indices,
912  bool negative);
913 pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
914  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
915  const pcl::IndicesPtr & indices,
916  bool negative);
917 
918 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT extractIndices(
919  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
920  const pcl::IndicesPtr & indices,
921  bool negative,
922  bool keepOrganized);
923 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT extractIndices(
924  const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
925  const pcl::IndicesPtr & indices,
926  bool negative,
927  bool keepOrganized);
928 // PCL default lacks of pcl::PointNormal type support
929 //pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT extractIndices(
930 // const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
931 // const pcl::IndicesPtr & indices,
932 // bool negative,
933 // bool keepOrganized);
934 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT extractIndices(
935  const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
936  const pcl::IndicesPtr & indices,
937  bool negative,
938  bool keepOrganized);
939 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT extractIndices(
940  const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
941  const pcl::IndicesPtr & indices,
942  bool negative,
943  bool keepOrganized);
944 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT extractIndices(
945  const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
946  const pcl::IndicesPtr & indices,
947  bool negative,
948  bool keepOrganized);
949 
950 pcl::IndicesPtr extractPlane(
951  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
952  float distanceThreshold,
953  int maxIterations = 100,
954  pcl::ModelCoefficients * coefficientsOut = 0);
955 pcl::IndicesPtr extractPlane(
956  const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
957  const pcl::IndicesPtr & indices,
958  float distanceThreshold,
959  int maxIterations = 100,
960  pcl::ModelCoefficients * coefficientsOut = 0);
961 
962 } // namespace util3d
963 } // namespace rtabmap
964 
965 #endif /* UTIL3D_FILTERING_H_ */
glm::min
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
rtabmap::util3d::cropBox
pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
Definition: util3d_filtering.cpp:974
glm::axis
GLM_FUNC_DECL detail::tvec3< T, P > axis(detail::tquat< T, P > const &x)
rtabmap::util3d::removeNaNNormalsFromPointCloud
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)
Definition: util3d_filtering.cpp:1218
rtabmap::Transform::getIdentity
static Transform getIdentity()
Definition: Transform.cpp:411
rtabmap::util3d::passThrough
pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
Definition: util3d_filtering.cpp:878
rtabmap::RTABMAP_DEPRECATED
RTABMAP_DEPRECATED(typedef SensorData Image, "rtabmap::Image class is renamed to rtabmap::SensorData, use the last one instead.")
rtabmap::util3d::voxelize
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
Definition: util3d_filtering.cpp:761
Transform.h
rtabmap::util3d::normalFiltering
pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
Definition: util3d_filtering.cpp:2086
rtabmap::util3d::commonFiltering
LaserScan RTABMAP_CORE_EXPORT commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)
Definition: util3d_filtering.cpp:74
rtabmap::util3d::extractPlane
pcl::IndicesPtr extractPlane(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)
Definition: util3d_filtering.cpp:2506
rtabmap::util3d::uniformSampling
pcl::PointCloud< pcl::PointXYZ >::Ptr uniformSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)
Definition: util3d_filtering.h:187
rtabmap::util3d::proportionalRadiusFiltering
pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
Definition: util3d_filtering.cpp:1338
glm::max
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
rtabmap::util3d::downsample
LaserScan RTABMAP_CORE_EXPORT downsample(const LaserScan &cloud, int step)
Definition: util3d_filtering.cpp:546
rtabmap::util3d::extractIndices
pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
Definition: util3d_filtering.cpp:2447
rtabmap::util3d::subtractFiltering
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &substractCloud, float radiusSearch, int minNeighborsInRadius=1)
Definition: util3d_filtering.cpp:1571
rtabmap::util3d::rangeSplitFiltering
void RTABMAP_CORE_EXPORT rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
Definition: util3d_filtering.cpp:509
M_PI
#define M_PI
Definition: tango-gl/include/tango-gl/util.h:66
rtabmap::util3d::randomSampling
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT randomSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)
Definition: util3d_filtering.cpp:830
rtabmap::Transform
Definition: Transform.h:41
LaserScan.h
rtabmap::util3d::removeNaNFromPointCloud
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)
Definition: util3d_filtering.cpp:1150
rtabmap::util3d::rangeFiltering
LaserScan RTABMAP_CORE_EXPORT rangeFiltering(const LaserScan &scan, float rangeMin, float rangeMax)
Definition: util3d_filtering.cpp:347
rtabmap::util3d::frustumFiltering
pcl::IndicesPtr RTABMAP_CORE_EXPORT frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)
Definition: util3d_filtering.cpp:1098
rtabmap::util3d::extractClusters
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
Definition: util3d_filtering.cpp:2299
rtabmap
Definition: CameraARCore.cpp:35
rtabmap::util3d::radiusFiltering
pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
Definition: util3d_filtering.cpp:1235
rtabmap::util3d::subtractAdaptiveFiltering
pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &substractCloud, const pcl::IndicesPtr &substractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
Definition: util3d_filtering.cpp:1861


rtabmap
Author(s): Mathieu Labbe
autogenerated on Sun Dec 1 2024 03:42:59