rust-cv / cv

Rust CV mono-repo. Contains pure-Rust dependencies which attempt to encapsulate the capability of OpenCV, OpenMVG, and vSLAM frameworks in a cohesive set of APIs.
849 stars 67 forks source link

Poisson surface reconstruction #1

Open vadixidav opened 4 years ago

vadixidav commented 4 years ago

We should have a crate to perform Poisson surface reconstruction. Out of the most appropriate methods for noisy and scattered data (Ball-pivoting algorithm and Poisson Surface Reconstruction), Poisson Surface Reconstruction is most appropriate for photogrammetric reconstruction (rather than reconstruction of other point cloud data such as LIDAR).

It is not clear if surface reconstruction should have abstractions associated with it. We may only need Poisson surface reconstruction for the time being. Some datatypes may be added to the cv-core crate as necessary.

Volpe95 commented 3 years ago

Hello @vadixidav , I am not totally aware with those algorithms but I am very open to learn and contribute , so if possible how can I start ? Thanks,

vadixidav commented 3 years ago

@Volpe95 I would look at the information available in papers, lectures, and Wikipedia online for information on how to implement it. I did find this repository, which might help: https://github.com/mmolero/PoissonRecon_v6_13

I would use this information in conjunction with cv-reconstruction. That crate is what makes it possible to run a reconstruction and get a 3d point cloud. From there, it may be possible to do a poisson surface reconstruction. Importantly, we do have some extra information about surfaces, such as the fact that if a point is observed from many angles, we know that the surface the point is on cannot have a surface normal more than 180 degrees from the incidence direction of any observation. I would familiarize yourself with cv-reconstruction first, and create some point clouds, and then you can start looking into how to then create a mesh from the point cloud.

There may be some alternative techniques as well, but Poisson surface reconstruction is the most robust.