• Stars
    star
    313
  • Rank 133,714 (Top 3 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GH-ICP: Iterative Closest Point algorithm with global optimal matching and hybrid metric [3DV' 18]

GH-ICP๏ผšIterative Closest Point algorithm with global optimal matching and hybrid metric

GH-ICP is a robust coarse-to-fine pairwise point cloud registration method.

Two key innovative points over ICP are:

  1. Global optimal matching (Using Bipartite Graph and KM algorithm)

  2. Hybrid metrics (Using Euclidean distance and feature distance at the same time)

The earlier conference version of GH-ICP is called Iterative Global Similarity Point (IGSP).

To highlight two key innovative points of the algorithm, we renamed IGSP as GH-ICP.

Demo

ETH TLS Dataset

alt text

WHU TLS Dataset

alt text

More

alt text

Principle

alt text

Paper

If you find our work useful in your research, please consider citing:

    @INPROCEEDINGS{yue2018igsp,    
      author={Yue, Pan and Bisheng, Yang and Fuxun, Liang and Zhen, Dong},
      booktitle = {2018 International Conference on 3D Vision (3DV)},
      title={Iterative Global Similarity Points: A robust coarse-to-fine integration solution for pairwise 3D point cloud registration},
      year={2018}
    }

original version available on Windows.

Compiled with Visual Studio 12 2013 Win64 Release / Debug Passed, see former release

now available on Linux (passed on ubuntu 16.04)

How to use

  1. Install dependent 3rd libraries

PCL(>=1.7), LibLas(Optional for las data IO)

  1. Compile
mkdir build
cd build
cmake ..
make 
  1. Run
cd ..
# configure the script/run.sh file for editting the data path and key parameters
sh script/run.sh
  1. Parameter configuration
#./script/run.sh

#parameters setting example for large scale (100m+) TLS data
using_feature=B;              # Feature selection [ B: BSC, F: FPFH, R: RoPS, N: register without feature ]
corres_estimation_method=K;   # Correspondence estimation by [ K: Bipartite graph min weight match using KM, N: Nearest Neighbor, R: Reciprocal NN ]

downsample_resolution=0.1;    # Raw data downsampling voxel size, just keep one point in the voxel  
neighborhood_radius=0.5;      # Curvature estimation / feature encoding radius
curvature_non_max_radius=1.5; # Keypoint extraction based on curvature: non max suppression radius 
weight_adjustment_ratio=1.1;  # Weight would be adjusted if the IoU between expected value and calculated value is beyond this value
weight_adjustment_step=0.1;   # Weight adjustment for one iteration
registration_dof=6;           # Degree of freedom of the transformation [ 4: TLS with leveling, 6: arbitary ]
appro_overlap_ratio=0.6;      # Estimated approximate overlapping ratio of two point cloud 

launch_realtime_viewer=1;     # Launch the realtime registration viewer during registration or not (1: Launch, 0: Not launch)

  1. Data preparation

You can test on the online available point cloud data and registration dataset such as WHU TLS Registration Dataset, ETH PRS TLS Registration Dataset, ETH ASL Robotics Registration Dataset, 3D Match, Robotic 3D Scan Repository, etc.

You may apply the format transform tool to get the data ready for registration.

You can also use your own data and edit the data path in the shell file. Four formats of point cloud data are available (*.pcd, *.las, *.ply, *.txt) for IO.

#./script/run.sh

#data path
target_point_cloud_path=...
source_point_cloud_path=...
output_point_cloud_path=...

  1. Analysis

Some other well-known automatic registration algorithms are also provided in this repo. and you may apply them as reference.

Other Reference

If you find the Binary Shape Context (BSC) feature used in this repo. useful in your research, please consider citing:

@article{dong2017novel,
  title={A novel binary shape context for 3D local surface description},
  author={Dong, Zhen and Yang, Bisheng and Liu, Yuan and Liang, Fuxun and Li, Bijun and Zang, Yufu},
  journal={ISPRS Journal of Photogrammetry and Remote Sensing},
  volume={130},
  pages={431--452},
  year={2017},
  publisher={Elsevier}
}

More Repositories

1

MULLS

MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA '21]
C++
613
star
2

RoadMarkingExtraction

๐Ÿ›ฃ๏ธ automatic extraction of road markings from MLS or ALS point cloud [ISPRS-A' 19]
C++
250
star
3

LLS-LOAM

Lidar Odometry and Mapping with Mutiple Metrics Linear Least Square ICP
C++
138
star
4

EasySFM

A simple Structure-from-motion software and toolbox
C++
36
star
5

Pointcloud_Format_Transformer

A Tool for various point cloud data format transformation for well-known datasets
C++
30
star
6

point-cloud-registration-review

Literature review of point cloud registration methods (For geomatics seminar at ETH Zurich)
21
star
7

drone-tracking-toolkits

Measuring Drone Trajectory using Total Stations with Visual Tracking [IPA '20 @ ETH]
MATLAB
18
star
8

ETH-CV-exercise-review

My solutions to exercises of Computer Vision course @ ETH Zurich
MATLAB
10
star
9

PPE_Kriging

Codes for Kriging interpolation for PPE course
MATLAB
5
star
10

GNSSLab

Repo. for GNSS Lab @ ETHZ
Shell
5
star
11

YuePanEdward.github.io

SCSS
3
star
12

3DV-Implicit-Reconstruction

Explore Various Encodings for Implicit Scene Reconstruction
2
star
13

diff-gaussian-surfel-rasterization

Cuda
2
star
14

360degree-Reality2Virtuality

The art of the fusion of reality & virtuality
2
star
15

MeasureAPP

Multi-function Inertial Measurement Tool Android APP
Java
2
star
16

4pcstest

a test for git
C++
2
star
17

PointCloudScissor

A useful tool to cut a set of point cloud into two parts with a designed IoU (overlapping)
C++
2
star
18

gseg_pcd_tools

point cloud processing tools
C++
1
star
19

PCLtools

Project points to a plane with known coefficients using PCL (a simple tool)
C++
1
star
20

PPE_TLSCalibration

Codes for TLS calibration for PPE
MATLAB
1
star
21

ETH-II-exercise-review

My solutions to exercises of Image Interpretation course @ ETH Zurich
MATLAB
1
star
22

OpenHDMap

HDMap for UVs (to be detailed)
1
star
23

PIN_evaluation

Jupyter Notebook
1
star