Point Cloud Library (PCL)
1.12.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
surface
impl
marching_cubes_hoppe.hpp
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2010, Willow Garage, Inc.
5
* 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
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of Willow Garage, Inc. nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
*/
35
36
#ifndef PCL_SURFACE_IMPL_MARCHING_CUBES_HOPPE_H_
37
#define PCL_SURFACE_IMPL_MARCHING_CUBES_HOPPE_H_
38
39
#include <pcl/surface/marching_cubes_hoppe.h>
40
41
//////////////////////////////////////////////////////////////////////////////////////////////
42
template
<
typename
Po
int
NT>
43
pcl::MarchingCubesHoppe<PointNT>::~MarchingCubesHoppe
()
44
{
45
}
46
47
48
//////////////////////////////////////////////////////////////////////////////////////////////
49
template
<
typename
Po
int
NT>
void
50
pcl::MarchingCubesHoppe<PointNT>::voxelizeData
()
51
{
52
const
bool
is_far_ignored =
dist_ignore_
> 0.0f;
53
54
for
(
int
x = 0; x <
res_x_
; ++x)
55
{
56
const
int
y_start = x *
res_y_
*
res_z_
;
57
58
for
(
int
y = 0; y <
res_y_
; ++y)
59
{
60
const
int
z_start = y_start + y *
res_z_
;
61
62
for
(
int
z = 0; z <
res_z_
; ++z)
63
{
64
pcl::Indices
nn_indices (1, 0);
65
std::vector<float> nn_sqr_dists (1, 0.0f);
66
const
Eigen::Vector3f point = (
lower_boundary_
+
size_voxel_
* Eigen::Array3f (x, y, z)).matrix ();
67
PointNT p;
68
69
p.getVector3fMap () = point;
70
71
tree_
->nearestKSearch (p, 1, nn_indices, nn_sqr_dists);
72
73
if
(!is_far_ignored || nn_sqr_dists[0] <
dist_ignore_
)
74
{
75
const
Eigen::Vector3f normal = (*input_)[nn_indices[0]].getNormalVector3fMap ();
76
77
if
(!std::isnan (normal (0)) && normal.norm () > 0.5f)
78
grid_
[z_start + z] = normal.dot (
79
point - (*
input_
)[nn_indices[0]].getVector3fMap ());
80
}
81
}
82
}
83
}
84
}
85
86
87
88
#define PCL_INSTANTIATE_MarchingCubesHoppe(T) template class PCL_EXPORTS pcl::MarchingCubesHoppe<T>;
89
90
#endif
// PCL_SURFACE_IMPL_MARCHING_CUBES_HOPPE_H_
91
pcl::MarchingCubesHoppe::~MarchingCubesHoppe
~MarchingCubesHoppe()
Destructor.
Definition
marching_cubes_hoppe.hpp:43
pcl::MarchingCubesHoppe::voxelizeData
void voxelizeData() override
Convert the point cloud into voxel data.
Definition
marching_cubes_hoppe.hpp:50
pcl::MarchingCubesHoppe::dist_ignore_
float dist_ignore_
ignore the distance function if it is negative or distance between voxel centroid and point are large...
Definition
marching_cubes_hoppe.h:111
pcl::MarchingCubes::grid_
std::vector< float > grid_
The data structure storing the 3D grid.
Definition
marching_cubes.h:438
pcl::MarchingCubes::res_x_
int res_x_
The grid resolution.
Definition
marching_cubes.h:441
pcl::MarchingCubes::size_voxel_
Eigen::Array3f size_voxel_
size of voxels
Definition
marching_cubes.h:448
pcl::MarchingCubes::res_y_
int res_y_
Definition
marching_cubes.h:441
pcl::MarchingCubes::res_z_
int res_z_
Definition
marching_cubes.h:441
pcl::MarchingCubes::lower_boundary_
Eigen::Array3f lower_boundary_
Definition
marching_cubes.h:445
pcl::PCLBase< PointNT >::input_
PointCloudConstPtr input_
Definition
pcl_base.h:147
pcl::PCLSurfaceBase< PointNT >::tree_
KdTreePtr tree_
Definition
reconstruction.h:96
pcl::Indices
IndicesAllocator<> Indices
Type used for indices in PCL.
Definition
types.h:133