nus-vv-streams / vvtk

A toolkit for volumetric video research
MIT License
9 stars 8 forks source link

Support Normal Estimation #43

Closed wweqg closed 10 months ago

wweqg commented 1 year ago

Summary:

Normal Estimation Implementation

Type of change:

✨ Enhancement

Changes Made:

Implemented the normal estimation functionality to the project. The primary focus was on improving the normal estimation process and making the code more efficient, readable, and extensible. Below is a summary of the key changes made:

  1. Parallelized k-Nearest Neighbors Search using KDTree:

    • Optimized the k-nearest neighbors search using the KDTree data structure.
    • Employed the Rayon library for parallel processing, reducing computation time significantly.
  2. Covariance Matrix Computation:

    • Implemented the computation of covariance matrices for accurate normal estimation.
    • Explained the need for covariance matrices in capturing local surface structure.
  3. Eigenvalue-Eigenvector Computation:

    • Computed eigenvalues and eigenvectors from covariance matrices.
    • Clarified why the first eigenvector with the smallest eigenvalue represents the normal direction.
  4. Specialized Normal Orientation Propagation:

    • Addressed challenges related to normal orientation consistency.
    • Designed a specialized Breadth-First Search (BFS) algorithm to propagate normal orientation.

Proposed Commit Message:

Implement Normal Estimation Enhancements 

This commit introduces significant enhancements to the normal estimation process. 
Parallelization, covariance matrix computation, eigenvalue-eigenvector computation, 
and specialized normal orientation propagation have been added to improve accuracy 
and efficiency.