Skip to content

Commit ba3ea48

Browse files
mviethlarshg
andauthored
Misc small fixes and improvements (#6256)
* Misc small fixes and improvements - switch vmImage to "ubuntu-22.04". This does not make much difference as we use docker anyway, but azure complained that "Ubuntu 20.04" will be removed soon - enable more warnings on clang - delete several unused variables - switch from Eigen::EigenSolver to Eigen::SelfAdjointEigenSolver where possible. The latter is faster and more accurate ( https://eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html ). For real matrices, selfadjoint means symmetric, which is for example true for covariance matrices. - in shot_lrf_omp.hpp, use dynamic schedule because the loop iterations do a radius search, which is quite unbalanced - fix problem with enum arithmetic in dinast_grabber.cpp - fix MSVC warning about unsafe bool-int mix in octree_pointcloud.hpp - in sac_model_torus.hpp, switch from bdcSvd to jacobiSvd. This should save some time and memory while compiling, and the matrix A is so small that bdcSvd would anyway use jacobiSvd internally. - in flann_search.hpp, use delete[] instead of delete to correctly match the new[] - in grabcut_segmentation.cpp, check svd.info() to fix warning that svd.singularValues() may be uninitialized - in octree_poisson.hpp, fix maybe-uninitialized warning * Add more const Co-authored-by: Lars Glud <[email protected]> --------- Co-authored-by: Lars Glud <[email protected]>
1 parent 9815825 commit ba3ea48

File tree

33 files changed

+99
-101
lines changed

33 files changed

+99
-101
lines changed

.ci/azure-pipelines/documentation.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ jobs:
22
- job: documentation
33
displayName: Generate Documentation
44
pool:
5-
vmImage: 'Ubuntu 20.04'
5+
vmImage: 'ubuntu-22.04'
66
container: doc
77
variables:
88
BUILD_DIR: '$(Agent.BuildDirectory)/build'

.ci/azure-pipelines/tutorials.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ jobs:
22
- job: tutorials
33
displayName: Building Tutorials
44
pool:
5-
vmImage: 'Ubuntu 20.04'
5+
vmImage: 'ubuntu-22.04'
66
container: env2204
77
timeoutInMinutes: 0
88
variables:

CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,14 @@ endif()
228228

229229
if(CMAKE_COMPILER_IS_CLANG)
230230
if("${CMAKE_C_FLAGS}" STREQUAL "${CMAKE_CXX_FLAGS_DEFAULT}")
231-
set(CMAKE_C_FLAGS "-Qunused-arguments")
231+
string(APPEND CMAKE_C_FLAGS " -Wall -Wextra")
232232
endif()
233233
if("${CMAKE_CXX_FLAGS}" STREQUAL "")
234-
set(CMAKE_CXX_FLAGS "-ftemplate-depth=1024 -Qunused-arguments -Wno-invalid-offsetof ${SSE_FLAGS} ${AVX_FLAGS}") # Unfortunately older Clang versions do not have this: -Wno-unnamed-type-template-args
234+
set(CMAKE_CXX_FLAGS "-ftemplate-depth=1024 -Wno-invalid-offsetof ${SSE_FLAGS} ${AVX_FLAGS}") # Unfortunately older Clang versions do not have this: -Wno-unnamed-type-template-args
235235
if(APPLE AND WITH_CUDA AND CUDA_FOUND)
236236
string(APPEND CMAKE_CXX_FLAGS " -stdlib=libstdc++")
237237
endif()
238+
string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra")
238239
endif()
239240
set(CLANG_LIBRARIES "stdc++")
240241
endif()
@@ -434,6 +435,8 @@ if(WITH_SYSTEM_ZLIB)
434435
if(ZLIB_FOUND)
435436
set(HAVE_ZLIB ON)
436437
endif()
438+
else()
439+
message(WARNING "CMake will use a ZLIB version bundled with the PCL source code. However, that is an older version which may pose a risk and may be removed in a future PCL release. It is recommended to install an up-to-date version of ZLIB on your system and set WITH_SYSTEM_ZLIB=TRUE.")
437440
endif()
438441

439442
option(WITH_SYSTEM_CJSON "Use system cJSON" TRUE)

common/include/pcl/impl/pcl_base.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ pcl::PCLBase<PointT>::initCompute ()
164164
PCL_ERROR ("[initCompute] Failed to allocate %lu indices.\n", input_->size ());
165165
return (false);
166166
}
167-
for (auto i = indices_size; i < indices_->size (); ++i) { (*indices_)[i] = static_cast<int>(i); }
167+
for (auto i = indices_size; i < indices_->size (); ++i) { (*indices_)[i] = i; }
168168
}
169169

170170
return (true);

features/include/pcl/features/impl/flare.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,6 @@ template<typename PointInT, typename PointNT, typename PointOutT, typename Signe
178178
SignedDistanceT best_shape_score = -std::numeric_limits<SignedDistanceT>::max ();
179179
int best_shape_index = -1;
180180

181-
Eigen::Vector3f best_margin_point;
182-
183181
const float radius2 = tangent_radius_ * tangent_radius_;
184182
const float margin_distance2 = margin_thresh_ * margin_thresh_ * radius2;
185183

features/include/pcl/features/impl/integral_image2D.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ IntegralImage2D<DataType, Dimension>::computeIntegralImages (
194194
for (unsigned int i = 0; i < (width_ + 1); ++i)
195195
so_previous_row[i].setZero();
196196

197-
SecondOrderType so_element;
198197
for (unsigned rowIdx = 0; rowIdx < height_; ++rowIdx, data += row_stride,
199198
previous_row = current_row, current_row += (width_ + 1),
200199
count_previous_row = count_current_row, count_current_row += (width_ + 1),

features/include/pcl/features/impl/moment_of_inertia_estimation.hpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -399,47 +399,44 @@ pcl::MomentOfInertiaEstimation<PointT>::computeEigenVectors (const Eigen::Matrix
399399
Eigen::Vector3f& major_axis, Eigen::Vector3f& middle_axis, Eigen::Vector3f& minor_axis, float& major_value,
400400
float& middle_value, float& minor_value)
401401
{
402-
Eigen::EigenSolver <Eigen::Matrix <float, 3, 3> > eigen_solver;
403-
eigen_solver.compute (covariance_matrix);
402+
const Eigen::SelfAdjointEigenSolver<Eigen::Matrix<float, 3, 3>> eigen_solver(covariance_matrix);
404403

405-
Eigen::EigenSolver <Eigen::Matrix <float, 3, 3> >::EigenvectorsType eigen_vectors;
406-
Eigen::EigenSolver <Eigen::Matrix <float, 3, 3> >::EigenvalueType eigen_values;
407-
eigen_vectors = eigen_solver.eigenvectors ();
408-
eigen_values = eigen_solver.eigenvalues ();
404+
const Eigen::SelfAdjointEigenSolver <Eigen::Matrix <float, 3, 3> >::EigenvectorsType& eigen_vectors = eigen_solver.eigenvectors ();
405+
const Eigen::SelfAdjointEigenSolver <Eigen::Matrix <float, 3, 3> >::RealVectorType& eigen_values = eigen_solver.eigenvalues ();
409406

410407
unsigned int temp = 0;
411408
unsigned int major_index = 0;
412409
unsigned int middle_index = 1;
413410
unsigned int minor_index = 2;
414411

415-
if (eigen_values.real () (major_index) < eigen_values.real () (middle_index))
412+
if (eigen_values (major_index) < eigen_values (middle_index))
416413
{
417414
temp = major_index;
418415
major_index = middle_index;
419416
middle_index = temp;
420417
}
421418

422-
if (eigen_values.real () (major_index) < eigen_values.real () (minor_index))
419+
if (eigen_values (major_index) < eigen_values (minor_index))
423420
{
424421
temp = major_index;
425422
major_index = minor_index;
426423
minor_index = temp;
427424
}
428425

429-
if (eigen_values.real () (middle_index) < eigen_values.real () (minor_index))
426+
if (eigen_values (middle_index) < eigen_values (minor_index))
430427
{
431428
temp = minor_index;
432429
minor_index = middle_index;
433430
middle_index = temp;
434431
}
435432

436-
major_value = eigen_values.real () (major_index);
437-
middle_value = eigen_values.real () (middle_index);
438-
minor_value = eigen_values.real () (minor_index);
433+
major_value = eigen_values (major_index);
434+
middle_value = eigen_values (middle_index);
435+
minor_value = eigen_values (minor_index);
439436

440-
major_axis = eigen_vectors.col (major_index).real ();
441-
middle_axis = eigen_vectors.col (middle_index).real ();
442-
minor_axis = eigen_vectors.col (minor_index).real ();
437+
major_axis = eigen_vectors.col (major_index);
438+
middle_axis = eigen_vectors.col (middle_index);
439+
minor_axis = eigen_vectors.col (minor_index);
443440

444441
major_axis.normalize ();
445442
middle_axis.normalize ();

features/include/pcl/features/impl/our_cvfh.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ pcl::OURCVFHEstimation<PointInT, PointNT, PointOutT>::sgurf (Eigen::Vector3f & c
260260

261261
scatter /= sum_w;
262262

263-
Eigen::JacobiSVD <Eigen::MatrixXf> svd (scatter, Eigen::ComputeFullV);
263+
const Eigen::JacobiSVD <Eigen::Matrix3f> svd (scatter, Eigen::ComputeFullV);
264264
Eigen::Vector3f evx = svd.matrixV ().col (0);
265265
Eigen::Vector3f evy = svd.matrixV ().col (1);
266266
Eigen::Vector3f evz = svd.matrixV ().col (2);

features/include/pcl/features/impl/rops_estimation.hpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -343,43 +343,40 @@ template <typename PointInT, typename PointOutT> void
343343
pcl::ROPSEstimation <PointInT, PointOutT>::computeEigenVectors (const Eigen::Matrix3f& matrix,
344344
Eigen::Vector3f& major_axis, Eigen::Vector3f& middle_axis, Eigen::Vector3f& minor_axis) const
345345
{
346-
Eigen::EigenSolver <Eigen::Matrix3f> eigen_solver;
347-
eigen_solver.compute (matrix);
346+
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3f> eigen_solver(matrix, Eigen::ComputeEigenvectors);
348347

349-
Eigen::EigenSolver <Eigen::Matrix3f>::EigenvectorsType eigen_vectors;
350-
Eigen::EigenSolver <Eigen::Matrix3f>::EigenvalueType eigen_values;
351-
eigen_vectors = eigen_solver.eigenvectors ();
352-
eigen_values = eigen_solver.eigenvalues ();
348+
const Eigen::SelfAdjointEigenSolver <Eigen::Matrix3f>::EigenvectorsType& eigen_vectors = eigen_solver.eigenvectors ();
349+
const Eigen::SelfAdjointEigenSolver <Eigen::Matrix3f>::RealVectorType& eigen_values = eigen_solver.eigenvalues ();
353350

354351
unsigned int temp = 0;
355352
unsigned int major_index = 0;
356353
unsigned int middle_index = 1;
357354
unsigned int minor_index = 2;
358355

359-
if (eigen_values.real () (major_index) < eigen_values.real () (middle_index))
356+
if (eigen_values (major_index) < eigen_values (middle_index))
360357
{
361358
temp = major_index;
362359
major_index = middle_index;
363360
middle_index = temp;
364361
}
365362

366-
if (eigen_values.real () (major_index) < eigen_values.real () (minor_index))
363+
if (eigen_values (major_index) < eigen_values (minor_index))
367364
{
368365
temp = major_index;
369366
major_index = minor_index;
370367
minor_index = temp;
371368
}
372369

373-
if (eigen_values.real () (middle_index) < eigen_values.real () (minor_index))
370+
if (eigen_values (middle_index) < eigen_values (minor_index))
374371
{
375372
temp = minor_index;
376373
minor_index = middle_index;
377374
middle_index = temp;
378375
}
379376

380-
major_axis = eigen_vectors.col (major_index).real ();
381-
middle_axis = eigen_vectors.col (middle_index).real ();
382-
minor_axis = eigen_vectors.col (minor_index).real ();
377+
major_axis = eigen_vectors.col (major_index);
378+
middle_axis = eigen_vectors.col (middle_index);
379+
minor_axis = eigen_vectors.col (minor_index);
383380
}
384381

385382
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

features/include/pcl/features/impl/shot_lrf_omp.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ pcl::SHOTLocalReferenceFrameEstimationOMP<PointInT, PointOutT>::computeFeature (
7474
#pragma omp parallel for \
7575
default(none) \
7676
shared(output) \
77-
num_threads(threads_)
77+
num_threads(threads_) \
78+
schedule(dynamic, 64)
7879
for (std::ptrdiff_t i = 0; i < static_cast<std::ptrdiff_t> (indices_->size ()); ++i)
7980
{
8081
// point result

0 commit comments

Comments
 (0)