All Projects → yblin → global_l0

yblin / global_l0

Licence: other
Global L0 algorithm for regularity-constrained plane fitting

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to global l0

SSVIO
Graduation Project: A point cloud semantic segmentation and VIO based 3D reconstruction method using RGB-D and IMU
Stars: ✭ 25 (-44.44%)
Mutual labels:  3d-reconstruction, pointcloud
adaptive-surface-reconstruction
Adaptive Surface Reconstruction for 3D Data Processing
Stars: ✭ 39 (-13.33%)
Mutual labels:  3d-reconstruction, pointcloud
Pix2vox
Implementation of "Pix2Vox: Context-aware 3D Reconstruction from Single and Multi-view Images" (Xie et al., ICCV 2019)
Stars: ✭ 216 (+380%)
Mutual labels:  3d-reconstruction
pose-estimation-3d-with-stereo-camera
This demo uses a deep neural network and two generic cameras to perform 3D pose estimation.
Stars: ✭ 40 (-11.11%)
Mutual labels:  3d-reconstruction
TBFIT
Tight-binding parameter fitting package (TBFIT) for Slater-Koster method
Stars: ✭ 18 (-60%)
Mutual labels:  fitting
Structured3d
[ECCV'20] Structured3D: A Large Photo-realistic Dataset for Structured 3D Modeling
Stars: ✭ 224 (+397.78%)
Mutual labels:  3d-reconstruction
levenberg-marquardt
Curve fitting method in JavaScript
Stars: ✭ 63 (+40%)
Mutual labels:  fitting
3dreconstruction
3D reconstruction, sfm with Python3
Stars: ✭ 213 (+373.33%)
Mutual labels:  3d-reconstruction
Interactive Data Editor
A Software to interactively edit data in a graphical manner
Stars: ✭ 35 (-22.22%)
Mutual labels:  fitting
3d Reconstruction With Deep Learning Methods
List of projects for 3d reconstruction
Stars: ✭ 244 (+442.22%)
Mutual labels:  3d-reconstruction
sherpa
Fit models to your data in Python with Sherpa.
Stars: ✭ 125 (+177.78%)
Mutual labels:  fitting
Genre Shapehd
Code and Data Release for GenRe (NeurIPS 2018) and ShapeHD (ECCV 2018)
Stars: ✭ 241 (+435.56%)
Mutual labels:  3d-reconstruction
Lsm
Code for Learnt Stereo Machines based on the NIPS 2017 paper
Stars: ✭ 233 (+417.78%)
Mutual labels:  3d-reconstruction
labplot
LabPlot is a FREE, open source and cross-platform Data Visualization and Analysis software accessible to everyone.
Stars: ✭ 107 (+137.78%)
Mutual labels:  fitting
Patchmatchstereo
PatchMatch,倾斜窗口经典,效果极佳,OpenMVS&Colmap稠密匹配算法。完整实现,代码规范,注释清晰,博客教学,欢迎star!
Stars: ✭ 219 (+386.67%)
Mutual labels:  3d-reconstruction
maks
Motion Averaging
Stars: ✭ 52 (+15.56%)
Mutual labels:  3d-reconstruction
Scancomplete
[CVPR'18] ScanComplete: Large-Scale Scene Completion and Semantic Segmentation for 3D Scans
Stars: ✭ 213 (+373.33%)
Mutual labels:  3d-reconstruction
nim-mpfit
A wrapper for the cMPFIT library for the Nim programming language, https://vindaar.github.io/nim-mpfit/
Stars: ✭ 18 (-60%)
Mutual labels:  fitting
Awesome Point Cloud Analysis
A list of papers and datasets about point cloud analysis (processing)
Stars: ✭ 3,104 (+6797.78%)
Mutual labels:  3d-reconstruction
aistplusplus api
API to support AIST++ Dataset: https://google.github.io/aistplusplus_dataset
Stars: ✭ 277 (+515.56%)
Mutual labels:  3d-reconstruction

Global L0 algorithm for regularity-constrained plane fitting

Introduction

We introduce a method based on energy minimization to reconstruct the planes consistent with our constraint model. The proposed algorithm is efficient, easily to understand, and simple to implement. The experimental results show that our algorithm successfully fits planes under high percentages of noise and outliers. This is superior to other state-of-the-art regularity-constrained plane fitting methods in terms of speed and robustness.

The details can be found in the following ISPRS 2020 paper

Citing our work

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

Lin Y, Li J, Wang C, Chen Z, Wang Z, and Li J. Fast regularity-constrained plane fitting. Isprs Journal of Photogrammetry & Remote Sensing, vol. 161, pages 208-217, 2020.

BibTex

@article{LIN2020208,
	title = "Fast regularity-constrained plane fitting",
	journal = "ISPRS Journal of Photogrammetry and Remote Sensing",
	volume = "161",
	pages = "208 - 217",
	year = "2020",
	issn = "0924-2716",
	doi = "https://doi.org/10.1016/j.isprsjprs.2020.01.009",
	url = "http://www.sciencedirect.com/science/article/pii/S0924271620300095",
	author = "Yangbin Lin and Jialian Li and Cheng Wang and Zhonggui Chen and Zongyue Wang and Jonathan Li",
}

Install & complie

Please directly copy the code into your workspace and compile it with any complier that supports C++11. In addition, we also use the output functions provided by the fmt library, you can refer it by the link: fmt: A modern formatting library

Sample usage:

First, we construct a extractor, specifying the value of k_neighbors, min_support_points, n_constraints and outlier_penalty in turn. You can refer the detailed usage of the last two parameters in out paper.

cl::point_cloud::GlobalL0Extractor extractor(15, 50, 3, 1.0);

Then, you can extract the planes through calling on the ExtractPlanes method.

extractor.ExtractPlanes(kd_tree, normals, &planes, &labels);

Where, 'kd_tree' is the input 3D point cloud organized by the KD-Tree. It can be read the points from XYZ file and construct the KD-Tree by calling:

cl::geometry::io::ReadXYZPoints(filename.c_str(), &points);
KDTree<RPoint3D> kd_tree;
kd_tree.SwapPoints(&points);

Given the KD-tree, we can use the PCA method to calculate the normal vector for each point. For example:

Array<RVector3D> normals;
geometry::PCAEstimateNormals(kd_tree, 30, &normals);

It indicates we use 30 nearest neighbors of the current point to estimate its normal vector.

At last, the extracted planes and the labels for all points are stored in the 'planes' and 'labels' variables. Then we can compute the root-mean-square (RMS) of the distance from inliers to the fitting planes mentioned by our paper. The usage is as follows:

// Note! We need to ensure that the 'points' variable is not null.
kd_tree.SwapPoints(&points);
kd_tree.clear();

// Print metrics.
Metric(points, labels, planes);

​ Please see main.cpp for more details.

The mentioned file 'foam_box.xyz' is also provided in the project.

Comparison

We compare our method to the Efficient RANSAC and Pearl algorithm. You can find the implementation by the following links:

Efficient RANSAC implementation: Efficient RANSAC for Point-Cloud Shape Detection

PEARL implementation: Computer Vision at Waterloo - Code

Sample results.

The first column is the orignal point cloud. The second column is Efficient RANSAC, the third is Pearl and the last is our method. The calculated normals have been mapped on the two-dimensinal space and visualized in the second row.

Contact

Please feel free to leave suggestions or comments to Dr. Lin ([email protected]), or Prof. Wang ([email protected])

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].