86 float window_size = 0.0f;
88 while (window_size < max_window_size_)
116 int rows =
static_cast<int> (std::floor (
yextent / cell_size_) + 1);
117 int cols =
static_cast<int> (std::floor (
xextent / cell_size_) + 1);
119 Eigen::MatrixXf
A (rows, cols);
120 A.setConstant (std::numeric_limits<float>::quiet_NaN ());
122 Eigen::MatrixXf
Z (rows, cols);
123 Z.setConstant (std::numeric_limits<float>::quiet_NaN ());
125 Eigen::MatrixXf
Zf (rows, cols);
126 Zf.setConstant (std::numeric_limits<float>::quiet_NaN ());
128#pragma omp parallel for \
130 shared(A, global_min) \
131 num_threads(threads_)
132 for (
int i = 0; i < (
int)input_->size (); ++i)
152 PCL_DEBUG (
" Iteration %d (height threshold = %f, window size = %f, half size = %d)...",
160#pragma omp parallel for \
162 shared(A, cols, half_sizes, i, rows, Z) \
163 num_threads(threads_)
176 float min_coeff = std::numeric_limits<float>::max ();
178 for (
int j =
rs; j < (
re + 1); ++j)
180 for (
int k =
cs; k < (
ce + 1); ++k)
182 if (
A (j, k) != std::numeric_limits<float>::quiet_NaN ())
190 if (
min_coeff != std::numeric_limits<float>::max ())
195#pragma omp parallel for \
197 shared(cols, half_sizes, i, rows, Z, Zf) \
198 num_threads(threads_)
211 float max_coeff = -std::numeric_limits<float>::max ();
213 for (
int j =
rs; j < (
re + 1); ++j)
215 for (
int k =
cs; k < (
ce + 1); ++k)
217 if (
Z (j, k) != std::numeric_limits<float>::quiet_NaN ())
225 if (
max_coeff != -std::numeric_limits<float>::max ())
236 int erow =
static_cast<int> (std::floor ((p.y -
global_min.y ()) / cell_size_));
237 int ecol =
static_cast<int> (std::floor ((p.x -
global_min.x ()) / cell_size_));
249 PCL_DEBUG (
"ground now has %d points\n",
ground.
size ());