Surface Reconstruction from a Stream of Point Clouds: A Real-time Visualization


In the realm of 3D SLAM systems, one of the most challenging aspects is visualizing the results in a manner that's both intuitive and informative. The complexity of these systems often leads to a dense mesh of data points, making it difficult to discern the underlying structure or surface. This challenge was the catalyst for my latest project: a real-time visualizer that reconstructs surfaces from a stream of point cloud data.

The Vision Behind the Visualizer

The primary goal was twofold:

  1. To provide a real-time visualization tool that can handle the continuous stream of point cloud data, processing them in manageable batches to ensure efficient use of computational resources.
  2. To experiment with a non-deep learning approach for surface reconstruction, leveraging the power of the 3D shrink wrapping algorithm explained in the next section.

The result is a dynamic visualizer that not only reconstructs the surface but also integrates the pose of the device, offering a comprehensive view of the reconstructed object in its environment.

Surface Reconstruction: A Fresh Perspective

In the realm of 3D modeling, achieving valid surface meshes—those that are watertight, intersection-free, orientable, and 2-manifold—is a nuanced endeavor. The challenge lies not just in addressing the myriad defects that can arise in 3D data but also in navigating the vast array of methods available for surface reconstruction.

Traditional methods, like axis-aligned bounding boxes or convex hulls, offer varying degrees of approximation accuracy. The concept of alpha shapes, which carves 3D space using an empty ball of a user-defined radius, provides a more refined approximation. However, its limitations, especially when dealing with point sets and the potential carving of inner structures, necessitate a more innovative approach.

Enter shrink-wrapping. Drawing inspiration from alpha shapes, this method pivots from carving to constructing a new mesh through Delaunay refinement. By inserting Steiner points on an offset volume's boundary, shrink-wrapping ensures a conservative approximation while filtering out inner structures. The result? A flexible, efficient, and precise method for surface reconstruction, untethered to specific input formats.

A Glimpse into the Visualizer

To give you an idea of the visualizer's capabilities, here's a step-by-step visualization of the alpha wrapping algorithm applied to a kitten point cloud (point cloud visualized by red dots):

The mesh as it's initially loaded: Initial Load

Fine-tuning the relative alpha and offset values for optimal surface reconstruction: Adjusting Parameters

The final, beautifully reconstructed surface. Reconstructed Surface

Getting Started

For those interested in diving into the project, you can run:

point_cloud_surface_reconstruction <path_to_point_cloud_data>

This will launch the visualizer, allowing you to interact with both the panel and viewer.

Under the Hood

The project heavily relies on the CGAL library, a renowned resource for computational geometry algorithms. Additionally, Pangolin plays a crucial role, providing a lightweight and portable platform for managing OpenGL display and interaction.

Final Thoughts

This project was a journey into the intricacies of 3D visualization and surface reconstruction. While challenges were aplenty, the end result is a tool that offers a fresh perspective on point cloud data, making it easier to understand and appreciate. Whether you're a researcher, developer, or just a curious mind, I invite you to explore the project and share your insights.


Access the project here: <a href="github.com/KamiliArsyad/point_cloud_surface_reconstruction">github</a>

Check out my latest posts!


# First Pass Systematic testing of concurrent programs has been researched for quite some time and it is known to have the problem of *state-space explosion* whereby testing all possible interleaving of concurrent programs is exponential in the execution length. Deterministic Partial Order Reduction...
Partial Order Aware Concurrency Sampling (POS) - Yuan, et al.

Partial Order Aware Concurrency Sampling (POS) - Yuan, et al.

PaperBlog
# Problem Even when requirements are clear, verifying software correctness and ensuring our code works in all scenarios without affecting existing logic can be challenging. This is more apparent on ‘hot’ codes: Excerpts of code that got updated often due to its status as a new base logic or due to ...
Improving Software Testability with Math

Improving Software Testability with Math

Blog
# Introduction Database normalization is a fundamental process in database design, ensuring data integrity and minimizing redundancy. Despite its theoretical foundations, practical implications and occurrences of different normal forms in real-world databases are underexplored. Our recent work addre...
Testing DB Normalization Theory vs Practice - FDSampleRush

Testing DB Normalization Theory vs Practice - FDSampleRush

ProjectResearchPaper
# Overview From full stack development, data management, automation, random hops on other teams’ meetings, to realizing that people having double eyelid (or lack thereof) is a thing, I have expanded my knowledge and honed my SWE skills by a lot during my 6-month internship at ShopBack. This article ...
My ShopBack Adventure

My ShopBack Adventure

Blog