28 #ifndef UTIL3D_FILTERING_H_
29 #define UTIL3D_FILTERING_H_
31 #include <rtabmap/core/rtabmap_core_export.h>
33 #include <pcl/point_cloud.h>
34 #include <pcl/point_types.h>
35 #include <pcl/pcl_base.h>
36 #include <pcl/ModelCoefficients.h>
52 const LaserScan & scan,
54 float rangeMin = 0.0f,
55 float rangeMax = 0.0f,
56 float voxelSize = 0.0f,
58 float normalRadius = 0.0f,
59 float groundNormalsUp = 0.0f);
62 const LaserScan & scan,
69 bool forceGroundNormalsUp);
72 const LaserScan & scan,
77 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
78 const pcl::IndicesPtr & indices,
82 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
83 const pcl::IndicesPtr & indices,
87 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
88 const pcl::IndicesPtr & indices,
92 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
93 const pcl::IndicesPtr & indices,
98 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
99 const pcl::IndicesPtr & indices,
101 pcl::IndicesPtr & closeIndices,
102 pcl::IndicesPtr & farIndices);
104 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
105 const pcl::IndicesPtr & indices,
107 pcl::IndicesPtr & closeIndices,
108 pcl::IndicesPtr & farIndices);
110 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
111 const pcl::IndicesPtr & indices,
113 pcl::IndicesPtr & closeIndices,
114 pcl::IndicesPtr & farIndices);
116 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
117 const pcl::IndicesPtr & indices,
119 pcl::IndicesPtr & closeIndices,
120 pcl::IndicesPtr & farIndices);
123 const LaserScan & cloud,
125 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT
downsample(
126 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
128 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
downsample(
129 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
131 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT
downsample(
132 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
134 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT
downsample(
135 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
137 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT
downsample(
138 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
140 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT
downsample(
141 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
144 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT
voxelize(
145 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
146 const pcl::IndicesPtr & indices,
148 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
149 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
150 const pcl::IndicesPtr & indices,
152 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
voxelize(
153 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
154 const pcl::IndicesPtr & indices,
156 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
157 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
158 const pcl::IndicesPtr & indices,
160 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT
voxelize(
161 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
162 const pcl::IndicesPtr & indices,
164 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
165 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
166 const pcl::IndicesPtr & indices,
168 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT
voxelize(
169 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
171 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
172 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
174 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
voxelize(
175 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
177 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
178 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
180 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT
voxelize(
181 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
183 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT
voxelize(
184 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
188 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
194 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
200 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
207 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
208 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
210 pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
211 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
213 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
214 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
216 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
217 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
219 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
220 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
222 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT
randomSampling(
223 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
228 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
229 const pcl::IndicesPtr & indices,
230 const std::string &
axis,
233 bool negative =
false);
235 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
236 const pcl::IndicesPtr & indices,
237 const std::string &
axis,
240 bool negative =
false);
242 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
243 const pcl::IndicesPtr & indices,
244 const std::string &
axis,
247 bool negative =
false);
249 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
250 const pcl::IndicesPtr & indices,
251 const std::string &
axis,
254 bool negative =
false);
256 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
257 const pcl::IndicesPtr & indices,
258 const std::string &
axis,
261 bool negative =
false);
263 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
264 const pcl::IndicesPtr & indices,
265 const std::string &
axis,
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,
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,
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,
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,
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,
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,
304 bool negative =
false);
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
390 bool negative =
false);
394 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
395 const pcl::IndicesPtr & indices,
399 float nearClipPlaneDistance,
400 float farClipPlaneDistance,
401 bool negative =
false);
404 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
408 float nearClipPlaneDistance,
409 float farClipPlaneDistance,
410 bool negative =
false);
412 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
frustumFiltering(
413 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
417 float nearClipPlaneDistance,
418 float farClipPlaneDistance,
419 bool negative =
false);
423 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud);
425 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud);
427 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud);
429 const pcl::PCLPointCloud2::Ptr & cloud);
433 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud);
435 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud);
437 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud);
444 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
446 int minNeighborsInRadius);
448 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
450 int minNeighborsInRadius);
452 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
454 int minNeighborsInRadius);
456 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
458 int minNeighborsInRadius);
460 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
462 int minNeighborsInRadius);
464 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
466 int minNeighborsInRadius);
481 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
482 const pcl::IndicesPtr & indices,
484 int minNeighborsInRadius);
486 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
487 const pcl::IndicesPtr & indices,
489 int minNeighborsInRadius);
491 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
492 const pcl::IndicesPtr & indices,
494 int minNeighborsInRadius);
496 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
497 const pcl::IndicesPtr & indices,
499 int minNeighborsInRadius);
501 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
502 const pcl::IndicesPtr & indices,
504 int minNeighborsInRadius);
506 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
507 const pcl::IndicesPtr & indices,
509 int minNeighborsInRadius);
513 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
514 const std::vector<int> & viewpointIndices,
515 const std::map<int, Transform> & viewpoints,
517 float neighborScale=2.0f);
519 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
520 const std::vector<int> & viewpointIndices,
521 const std::map<int, Transform> & viewpoints,
523 float neighborScale=2.0f);
525 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
526 const std::vector<int> & viewpointIndices,
527 const std::map<int, Transform> & viewpoints,
529 float neighborScale=2.0f);
531 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
532 const std::vector<int> & viewpointIndices,
533 const std::map<int, Transform> & viewpoints,
535 float neighborScale=2.0f);
537 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
538 const std::vector<int> & viewpointIndices,
539 const std::map<int, Transform> & viewpoints,
541 float neighborScale=2.0f);
543 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
544 const std::vector<int> & viewpointIndices,
545 const std::map<int, Transform> & viewpoints,
547 float neighborScale=2.0f);
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,
567 float neighborScale=2.0f);
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,
574 float neighborScale=2.0f);
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,
581 float neighborScale=2.0f);
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,
588 float neighborScale=2.0f);
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,
595 float neighborScale=2.0f);
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,
602 float neighborScale=2.0f);
608 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
609 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & substractCloud,
611 int minNeighborsInRadius = 1);
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,
628 int minNeighborsInRadius = 1);
634 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
635 const pcl::PointCloud<pcl::PointNormal>::Ptr & substractCloud,
637 float maxAngle =
M_PI/4.0f,
638 int minNeighborsInRadius = 1);
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,
655 float maxAngle =
M_PI/4.0f,
656 int minNeighborsInRadius = 1);
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,
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,
671 float maxAngle =
M_PI/4.0f,
672 int minNeighborsInRadius = 1);
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,
689 float maxAngle =
M_PI/4.0f,
690 int minNeighborsInRadius = 1);
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,
697 float maxAngle =
M_PI/4.0f,
698 int minNeighborsInRadius = 1);
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));
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));
743 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
745 const Eigen::Vector4f & normal,
747 const Eigen::Vector4f & viewpoint,
748 float groundNormalsUp = 0.0f);
750 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
752 const Eigen::Vector4f & normal,
754 const Eigen::Vector4f & viewpoint,
755 float groundNormalsUp = 0.0f);
774 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
775 const pcl::IndicesPtr & indices,
777 const Eigen::Vector4f & normal,
779 const Eigen::Vector4f & viewpoint,
780 float groundNormalsUp = 0.0f);
782 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
783 const pcl::IndicesPtr & indices,
785 const Eigen::Vector4f & normal,
787 const Eigen::Vector4f & viewpoint,
788 float groundNormalsUp = 0.0f);
790 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
791 const pcl::IndicesPtr & indices,
793 const Eigen::Vector4f & normal,
795 const Eigen::Vector4f & viewpoint,
796 float groundNormalsUp = 0.0f);
798 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
799 const pcl::IndicesPtr & indices,
801 const Eigen::Vector4f & normal,
803 const Eigen::Vector4f & viewpoint,
804 float groundNormalsUp = 0.0f);
806 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
807 const pcl::IndicesPtr & indices,
809 const Eigen::Vector4f & normal,
811 const Eigen::Vector4f & viewpoint,
812 float groundNormalsUp = 0.0f);
814 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
815 const pcl::IndicesPtr & indices,
817 const Eigen::Vector4f & normal,
819 const Eigen::Vector4f & viewpoint,
820 float groundNormalsUp = 0.0f);
826 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
827 float clusterTolerance,
830 int * biggestClusterIndex = 0);
832 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
833 float clusterTolerance,
836 int * biggestClusterIndex = 0);
851 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
852 const pcl::IndicesPtr & indices,
853 float clusterTolerance,
856 int * biggestClusterIndex = 0);
858 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
859 const pcl::IndicesPtr & indices,
860 float clusterTolerance,
863 int * biggestClusterIndex = 0);
865 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
866 const pcl::IndicesPtr & indices,
867 float clusterTolerance,
870 int * biggestClusterIndex = 0);
872 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
873 const pcl::IndicesPtr & indices,
874 float clusterTolerance,
877 int * biggestClusterIndex = 0);
879 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
880 const pcl::IndicesPtr & indices,
881 float clusterTolerance,
884 int * biggestClusterIndex = 0);
886 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
887 const pcl::IndicesPtr & indices,
888 float clusterTolerance,
891 int * biggestClusterIndex = 0);
894 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
895 const pcl::IndicesPtr & indices,
898 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
899 const pcl::IndicesPtr & indices,
902 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
903 const pcl::IndicesPtr & indices,
906 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
907 const pcl::IndicesPtr & indices,
910 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
911 const pcl::IndicesPtr & indices,
914 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
915 const pcl::IndicesPtr & indices,
918 pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT
extractIndices(
919 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
920 const pcl::IndicesPtr & indices,
923 pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT
extractIndices(
924 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
925 const pcl::IndicesPtr & indices,
934 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT
extractIndices(
935 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
936 const pcl::IndicesPtr & indices,
939 pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT
extractIndices(
940 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
941 const pcl::IndicesPtr & indices,
944 pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT
extractIndices(
945 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
946 const pcl::IndicesPtr & indices,
951 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
952 float distanceThreshold,
953 int maxIterations = 100,
954 pcl::ModelCoefficients * coefficientsOut = 0);
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);