39 #ifndef OCTREE_VOXELCENTROID_H
40 #define OCTREE_VOXELCENTROID_H
61 template<
typename Po
intT,
typename LeafT = OctreeContainerDataTVector<
int> ,
typename BranchT = OctreeContainerEmpty<
int> >
95 unsigned int pointCounter;
100 std::vector<int> indicesVector;
102 voxelCentroidList_arg.clear();
103 voxelCentroidList_arg.reserve(this->leafCount_);
109 keyP.
x = keyP.
y = keyP.
z = std::numeric_limits<unsigned int>::max ();
110 meanPoint.x = meanPoint.y = meanPoint.z = 0.0;
114 for (i = 0; i < indicesVector.size (); i++)
116 idxPoint = this->input_->points[indicesVector[i]];
119 this->genOctreeKeyforPoint (idxPoint, keyC);
124 meanPoint.x += idxPoint.x;
125 meanPoint.y += idxPoint.y;
126 meanPoint.z += idxPoint.z;
133 if (pointCounter > 0)
135 meanPoint.x /=
static_cast<float> (pointCounter);
136 meanPoint.y /=
static_cast<float> (pointCounter);
137 meanPoint.z /=
static_cast<float> (pointCounter);
139 voxelCentroidList_arg.push_back (meanPoint);
143 meanPoint.x = idxPoint.x;
144 meanPoint.y = idxPoint.y;
145 meanPoint.z = idxPoint.z;
153 if (pointCounter > 0)
155 meanPoint.x /=
static_cast<float> (pointCounter);
156 meanPoint.y /=
static_cast<float> (pointCounter);
157 meanPoint.z /=
static_cast<float> (pointCounter);
159 voxelCentroidList_arg.push_back (meanPoint);
163 return (static_cast<unsigned int> (voxelCentroidList_arg.size ()));
176 unsigned int pointCounter;
177 std::vector<int> indicesVector;
184 bResult = this->voxelSearch (point_arg, indicesVector);
188 meanPoint.x = meanPoint.y = meanPoint.z = 0.0;
192 for (i = 0; i < indicesVector.size (); i++)
194 idxPoint = this->input_->points[indicesVector[i]];
196 meanPoint.x += idxPoint.x;
197 meanPoint.y += idxPoint.y;
198 meanPoint.z += idxPoint.z;
204 voxelCentroid_arg.x = meanPoint.x /
static_cast<float> (pointCounter);
205 voxelCentroid_arg.y = meanPoint.y /
static_cast<float> (pointCounter);
206 voxelCentroid_arg.z = meanPoint.z /
static_cast<float> (pointCounter);
222 const PointT& point = this->input_->points[pointIdx_arg];
235 #define PCL_INSTANTIATE_OctreePointCloudVoxelCentroid(T) template class PCL_EXPORTS pcl::octree::OctreePointCloudVoxelCentroid<T>;