trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
cloudproc.hpp
1 #pragma once
2 #include <pcl/point_types.h>
3 #include <pcl/point_cloud.h>
4 #include <pcl/PolygonMesh.h>
5 #include <string>
6 #include <Eigen/Core>
7 #include "macros.h"
8 namespace cloudproc {
9 
10 typedef Eigen::Matrix<bool, Eigen::Dynamic, 1> VectorXb;
11 
12 using pcl::PointCloud;
13 
14 
16 template <typename T>
17 TRAJOPT_API typename pcl::PointCloud<T>::Ptr readPCD(const std::string& pcdfile);
18 
19 template <class T>
20 TRAJOPT_API void saveCloud(const pcl::PointCloud<T>& cloud, const std::string& pcdfile); // instantiate: pcl::PointXYZ pcl::PointXYZRGB pcl::PointNormal pcl::Normal
21 
22 TRAJOPT_API void saveMesh(const pcl::PolygonMesh& mesh, const std::string& fname);
23 
24 TRAJOPT_API pcl::PolygonMesh::Ptr loadMesh(const std::string& fname);
25 
26 
27 
28 
30 template <class T>
31 TRAJOPT_API typename pcl::PointCloud<T>::Ptr downsampleCloud(typename pcl::PointCloud<T>::ConstPtr in, float vsize);
32 
33 TRAJOPT_API std::vector<int> getNearestNeighborIndices(pcl::PointCloud<pcl::PointXYZ>::Ptr src, pcl::PointCloud<pcl::PointXYZ>::Ptr targ);
34 
35 TRAJOPT_API pcl::PointCloud<pcl::PointXYZ>::Ptr computeConvexHull(pcl::PointCloud<pcl::PointXYZ>::ConstPtr in, std::vector<pcl::Vertices>* polygons);
36 TRAJOPT_API pcl::PointCloud<pcl::PointXYZ>::Ptr computeAlphaShape(pcl::PointCloud<pcl::PointXYZ>::ConstPtr in, float alpha, int dim, std::vector<pcl::Vertices>* polygons);
37 
38 TRAJOPT_API pcl::PointCloud<pcl::PointNormal>::Ptr mlsAddNormals(PointCloud<pcl::PointXYZ>::ConstPtr in, float searchRadius);
39 
40 TRAJOPT_API PointCloud<pcl::Normal>::Ptr integralNormalEstimation(PointCloud<pcl::PointXYZ>::ConstPtr in, float maxDepthChangeFactor, float normalSmoothingSize);
41 
42 template <class T>
43 TRAJOPT_API typename pcl::PointCloud<pcl::PointXYZ>::Ptr toXYZ(typename pcl::PointCloud<T>::ConstPtr in);
44 
45 
47 
48 template <class T>
49 TRAJOPT_API typename pcl::PointCloud<T>::Ptr medianFilter(typename pcl::PointCloud<T>::ConstPtr in, int windowSize, float maxAllowedMovement); // instantiate: pcl::PointXYZ
56 template <class T>
57 TRAJOPT_API typename pcl::PointCloud<T>::Ptr fastBilateralFilter(typename pcl::PointCloud<T>::ConstPtr in, float sigmaS, float sigmaR); // instantiate: pcl::PointXYZ
58 
59 
61 
68 TRAJOPT_API pcl::PolygonMesh::Ptr meshGP3(PointCloud<pcl::PointNormal>::ConstPtr cloud, float mu, int maxnn, float searchRadius);
69 
75 TRAJOPT_API pcl::PolygonMesh::Ptr meshOFM(PointCloud<pcl::PointXYZ>::ConstPtr cloud, int edgeLengthPixels, float maxEdgeLength);
76 
77 
78 
80 
85 template <class T>
86 TRAJOPT_API typename pcl::PointCloud<T>::Ptr maskFilter(typename pcl::PointCloud<T>::ConstPtr in, const VectorXb& mask, bool keep_organized);
87 
91 template <class T>
92 TRAJOPT_API VectorXb boxMask(typename pcl::PointCloud<T>::ConstPtr, float xmin, float ymin, float zmin, float xmax, float ymax, float zmax);
93 
97 template <class T>
98 TRAJOPT_API typename pcl::PointCloud<T>::Ptr boxFilter(typename pcl::PointCloud<T>::ConstPtr in, float xmin, float ymin, float zmin, float xmax, float ymax, float zmax, bool keep_organized) {
99  return maskFilter<T>(in, boxMask<T>(in, xmin,ymin,zmin,xmax,ymax,zmax), keep_organized);
100 }
101 
105 template <class T>
106 TRAJOPT_API typename pcl::PointCloud<T>::Ptr boxFilterNegative(typename pcl::PointCloud<T>::ConstPtr in, float xmin, float ymin, float zmin, float xmax, float ymax, float zmax, bool keep_organized) {
107  return maskFilter<T>(in, 1 - boxMask<T>(in, xmin,ymin,zmin,xmax,ymax,zmax).array(), keep_organized);
108 }
109 
110 
111 }