Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
YuePanEdward committed Feb 27, 2020
1 parent f95394d commit 1711923
Show file tree
Hide file tree
Showing 6 changed files with 703 additions and 18 deletions.
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

24 changes: 17 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,21 @@ The earlier conference version of GH-ICP is called Iterative Global Similarity P

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

![alt text](img/gh-icp.gif)
### Demo

##### ETH TLS Dataset
![alt text](img/demo_2.gif)

##### WHU TLS Dataset
![alt text](img/demo_1.gif)

##### More
![alt text](img/showresult2.jpg)

### Principle

![alt text](img/GH-ICPworkflow.jpg)

![alt text](img/showresult2.jpg)

### [Paper](https://ieeexplore.ieee.org/abstract/document/8490968)

Expand All @@ -28,11 +38,11 @@ If you find our work useful in your research, please consider citing:
year={2018}
}

### original version available on Windows.
#### original version available on Windows.
Compiled with Visual Studio 12 2013 Win64 Release / Debug Passed, see [former release](https://github.com/YuePanEdward/GH-ICP/releases)


### under code refactoring
#### now available on Linux (passed on ubuntu 16.04)

### How to use

Expand Down Expand Up @@ -66,9 +76,9 @@ sh script/run.sh
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.2; # Raw data downsampling voxel size, just keep one point in the voxel
neighborhood_radius=0.6; # Curvature estimation / feature encoding radius
curvature_non_max_radius=1.8; # Keypoint extraction based on curvature: non max suppression radius
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 ]
Expand Down
File renamed without changes
Binary file added img/demo_2.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 7 additions & 6 deletions include/cloud_viewer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class CloudViewer
~CloudViewer(){};

void Dispaly2Cloud(const typename pcl::PointCloud<PointT>::Ptr &Cloud1, const typename pcl::PointCloud<PointT>::Ptr &Cloud2,
std::string displayname, int display_downsample_ratio)
std::string displayname, int display_downsample_ratio)
{
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer(displayname));

Expand Down Expand Up @@ -170,8 +170,9 @@ class CloudViewer
}

bool intensity_available = pcl::traits::has_field<PointT, pcl::fields::intensity>::value;
if (Cloud_T->points[0].intensity<0.001) intensity_available=0;

if (Cloud_T->points[0].intensity < 0.001)
intensity_available = 0;

char t[256];
std::string s;
int n = 0;
Expand All @@ -190,7 +191,7 @@ class CloudViewer
pt.z = Cloud_T->points[i].z;

if (intensity_available)
intensity_ratio = Cloud_T->points[i].intensity / 255.0;
intensity_ratio = 1.0 * Cloud_T->points[i].intensity;
else
intensity_ratio = 1.0;

Expand All @@ -213,10 +214,10 @@ class CloudViewer
pt.z = Cloud_S->points[i].z;

if (intensity_available)
intensity_ratio = Cloud_S->points[i].intensity / 255.0;
intensity_ratio = 1.0 * Cloud_S->points[i].intensity;
else
intensity_ratio = 1.0;

pt.r = 255 * intensity_ratio;
pt.g = 215 * intensity_ratio;
pt.b = 0 * intensity_ratio;
Expand Down
10 changes: 5 additions & 5 deletions script/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ output_point_cloud_path=/media/edward/BackupPlus/Data/ETH_registration_TLS/arch/

#parameters
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 ]
corres_estimation_method=N; # Correspondence estimation by [ K: Bipartite graph min weight match using KM, N: Nearest Neighbor, R: Reciprocal NN ]

downsample_resolution=0.2; # Raw data downsampling voxel size, just keep one point in the voxel
neighborhood_radius=0.6; # Curvature estimation / feature encoding radius
curvature_non_max_radius=1.8; # Keypoint extraction based on curvature: non max suppression radius
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.0; # 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
appro_overlap_ratio=0.5; # 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)

Expand Down

0 comments on commit 1711923

Please sign in to comment.