Skip to content

Add OpenGR Wrapper for Multiple Point Cloud Registration #4963

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 30 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6124b77
initial commit
beautifulv0id Jul 13, 2020
ef45aaa
update gret-sdp
beautifulv0id Jul 13, 2020
03180ca
add getter to gret-sdp.h
beautifulv0id Jul 14, 2020
bd19fbe
add small problem
beautifulv0id Jul 15, 2020
23dfc4a
change Exact_predicates_inexact_constructions_kernel to Simple_cartes…
beautifulv0id Jul 15, 2020
ab433c2
add Scalar template parameter to GRET_SDP
beautifulv0id Jul 15, 2020
7676457
move GRET_SDPOptions into class and rename
beautifulv0id Jul 15, 2020
7913040
remove typedefs in registerPatches and define GR_MatcherType in class
beautifulv0id Jul 15, 2020
e86baba
remove template parameter Kernel
beautifulv0id Jul 15, 2020
8ad9ef7
adding unique_ptr breaks computation
beautifulv0id Jul 15, 2020
a8b1832
cleanup
beautifulv0id Jul 16, 2020
371bf8d
change Scalar to Kernel
beautifulv0id Jul 16, 2020
c78d24b
add getTransformations
beautifulv0id Jul 16, 2020
4a77016
merge
beautifulv0id Jul 16, 2020
005a168
cleanup merge mistake
beautifulv0id Jul 16, 2020
5028906
add getRegisteredPatches
beautifulv0id Jul 16, 2020
073c7a1
update wrapper include path
beautifulv0id Aug 5, 2020
14f1f77
add registration_with_OpenGR_using_GRET_SDP.cpp
beautifulv0id Aug 19, 2020
13e49e5
new API for GRET-SDP wrapper
beautifulv0id Aug 20, 2020
8d4ee5c
add doxygen documentation for gret_sdp.h
beautifulv0id Aug 21, 2020
a675da8
accept point ranges with normal informations
beautifulv0id Aug 21, 2020
232434f
add GRET-SDP Example description to /Point_set_processing_3/doc/Point…
beautifulv0id Aug 21, 2020
236cccc
delete unused data for examples
beautifulv0id Aug 24, 2020
c25f6a8
add error handling to extractPCAndTrFromStandfordConfFile
beautifulv0id Aug 24, 2020
e7190f2
reset changes to register_point_sets.h and compute_registration_trans…
beautifulv0id Aug 24, 2020
65f8aa6
update wrapper include path
beautifulv0id Aug 24, 2020
ad23af1
update documentation
beautifulv0id Aug 24, 2020
d7e8da9
fix violation of range concept
beautifulv0id Aug 25, 2020
c6e214b
change correspondences representation
beautifulv0id Aug 25, 2020
c8b3fb3
add bib entry cgal:cks-grmpcsp and change reference
beautifulv0id Aug 25, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode/*
/*build*
/*/*/*/build
AABB_tree/demo/AABB_tree/AABB_demo
Expand Down
9 changes: 9 additions & 0 deletions Documentation/doc/biblio/cgal_manual.bib
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,15 @@ @inproceedings{cgal:cdr-drpsc-07
address = {Philadelphia, PA, USA},
}

@article { cgal:cks-grmpcsp
author = {Kunal N. Chaudhury and Yuehaw Khoo and Amit Singer and David Cowburn},
title = {Global registration of multiple point clouds using semidefinite programming},
journal = {CoRR},
volume = {abs/1306.5226},
year = {2013},
url = {http://arxiv.org/abs/1306.5226}
}

@inproceedings{ cgal:cl-vmbcm-96
,author = {Brian Curless and Marc Levoy}
,title = {A Volumetric Method for Building Complex
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ format.
- `CGAL::estimate_local_range_scales()`
- `CGAL::OpenGR::compute_registration_transformation()`
- `CGAL::OpenGR::register_point_sets()`
- `CGAL::OpenGR::compute_registration_transformations()`
- `CGAL::OpenGR::register_point_clouds()`
- `CGAL::pointmatcher::compute_registration_transformation()`
- `CGAL::pointmatcher::register_point_sets()`
- `CGAL::remove_outliers()`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,14 @@ Maximum number of seconds after which the algorithm stops. Super4PCS explores th
transformation space to align the two input clouds. Since the exploration is performed
randomly, it is recommended to use a large time value to explore the whole space.


\subsection Point_set_processing_3Examples_registration_OpenGR_GRET_SDP OpenGR GRET-SDP Example
GRET-SDP is an registration algorithm for multiple point clouds that is described in [this paper](https://arxiv.org/abs/1306.5226).
It is important to note that for each point, its corresponding points (e.g. points that represent the same location in space) in the other point clouds have to be known.

The following example reads N point clouds from a stanford config file, computes their correspondences and alignes them using the GRET-SDP algorithm from OpenGR.
\cgalExample{Point_set_processing_3/registration_with_OpenGR_using_GRET_SDP.cpp}

\subsection Point_set_processing_3Examples_registration_PointMatcher PointMatcher Example

The following example reads two point sets and aligns them using the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@
\example Point_set_processing_3/edges_example.cpp
\example Point_set_processing_3/structuring_example.cpp
\example Point_set_processing_3/callback_example.cpp
\example Point_set_processing_3/registration_with_OpenGR_using_GRET_SDP.cpp
*/
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ if ( CGAL_FOUND )
hierarchy_simplification_example
normals_example)
add_executable(${target} "${target}.cpp")
target_link_libraries(${target} ${CGAL_libs})
target_link_libraries(${target} ${CGAL_libs} )
endforeach()

# Executables that require libpointmatcher
Expand All @@ -104,6 +104,31 @@ if ( CGAL_FOUND )
find_package(OpenGR QUIET)
include(CGAL_OpenGR_support)
if (TARGET CGAL::OpenGR_support)

# GRET SDP
find_package(Boost 1.54 COMPONENTS system filesystem REQUIRED)
if (Boost_FOUND)
set(GRET_SDP_DATA_DIR_TO ${CMAKE_CURRENT_BINARY_DIR}/data)
set(GRET_SDP_DATA_DIR_FROM ${PROJECT_SOURCE_DIR}/data/)
add_custom_target(copy_gret_sdp_data)
add_custom_command(TARGET copy_gret_sdp_data
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${GRET_SDP_DATA_DIR_TO}
COMMAND ${CMAKE_COMMAND} -E copy ${GRET_SDP_DATA_DIR_FROM}/bun.conf ${GRET_SDP_DATA_DIR_TO}/.
COMMAND ${CMAKE_COMMAND} -E copy ${GRET_SDP_DATA_DIR_FROM}/bun*.ply ${GRET_SDP_DATA_DIR_TO}/.
)

find_package(SDPA REQUIRED)
include_directories(${SDPA_INCLUDE_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
add_executable(registration_with_OpenGR_using_GRET_SDP "registration_with_OpenGR_using_GRET_SDP.cpp" )
target_link_libraries(registration_with_OpenGR_using_GRET_SDP
${CGAL_libs} CGAL::OpenGR_support ${SDPA_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
target_compile_definitions(registration_with_OpenGR_using_GRET_SDP PUBLIC OpenGR_USE_SDPA)
add_dependencies(registration_with_OpenGR_using_GRET_SDP copy_gret_sdp_data)
endif(Boost_FOUND)

# SUPER4PC
add_executable(registration_with_OpenGR "registration_with_OpenGR.cpp" )
target_link_libraries(registration_with_OpenGR
${CGAL_libs} CGAL::OpenGR_support)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
bmesh bun000.ply 0 0 0 0 0 0 1
bmesh bun045.ply -0.0520211 -0.000383981 -0.0109223 0.00548449 -0.294635 -0.0038555 0.955586
bmesh bun090.ply 2.20761e-05 -3.34606e-05 -7.20881e-05 0.000335889 -0.708202 0.000602459 0.706009
Loading