三维点云处理(3)

Surface Normal & Filters

  • Surface normal on surface
    • Applications:
    • Steps:
    • Noise:
  • Filters
    • Noise removal:
    • Downsampling[^3]:
    • Upsampling / Smoothing / Noise Removal:

Surface normal on surface

The vector perpendicular to the tangent plane of the surface at a point P

Applications:

  • Segmentation/Clustering
  • Plane detection
  • Point cloud feature for applications like Deep Learning

Steps:

  1. Select a point P
  2. Find the neighborhood that defines the surface
  3. PCA → min ⁡ n ∈ R n n T X ~ W X ~ T n , s . t . : ∣ ∣ n ∣ ∣ 2 = 1 \rightarrow\min \limits_{n\in{R^n}}n^T\tilde{X}W\tilde{X}^Tn,s.t.:||n||_2=1 nRnminnTX~WX~Tn,s.t.:n2=1
  4. Normal → \rightarrow the least significant vector
  5. Curvature → \rightarrow ratio between eigen values λ 3 / ( λ 1 + λ 2 + λ 3 ) \lambda_3/(\lambda_1+\lambda_2+\lambda_3) λ3/(λ1+λ2+λ3)

Noise:

  1. Select neighbors according to problem
  2. Weighted based on other features
  3. RANSAC
  4. Deep Learning12

Filters

Noise removal:

  • Radius Outlier Removal
  • Statistical Outlier Removal ( d d d~ N ( μ , σ ) N(\mu,\sigma) N(μ,σ))

Downsampling3:

  • Voxel Grid Downsampling (Exact / Approximated, Centroid / Random)
  1. Compute the min / max of each coordinate
  2. Determine the voxel grid size r
  3. Compute the dimension of the voxel grid
  4. Compute voxel index for each point
  5. Use a hash function to map each point to a container Gi
  6. Iterate {G1, G2, …, GM} and get M point
  • Farthest Point Sampling (FPS)
  1. Randomly choose a point to be the first FPS point
  2. Iterate until we get the desired number of points
  • Normal Space Sampling(NSS)
  1. Construct a set of buckets in the normal space
  2. Put all points into bucket according to the surface normals
  3. Uniformly pick points from all buckets until we have the desired number of points

Upsampling / Smoothing / Noise Removal:

  • Bilateral Filter
    G σ ( x ) = 1 2 π σ 2 exp ⁡ ( − x 2 2 σ 2 ) G_\sigma(x)=\frac{1}{2\pi\sigma^2}\exp(-\frac{x^2}{2\sigma^2}) Gσ(x)=2πσ21exp(2σ2x2)
    B F [ I ] p = 1 W p Σ q ∈ S G σ s ( ∣ ∣ p − q ∣ ∣ ) G σ r ( I p − I q ) I q BF[I]_p=\frac{1}{W_p}\Sigma_{q{\in}S}G_{{\sigma}_s}(||p-q||)G_{{\sigma}_r}(I_p-I_q)I_q BF[I]p=Wp1ΣqSGσs(pq)Gσr(IpIq)Iq

  1. Predicting Depth, Surface Normal and Semantic Labels with a Common Multi-Scale Convolutional Architecture, ICCV 2015 ↩︎

  2. Nesti-Net: Normal Estimation for Unstructured 3D Point Clouds using Convolutional Neural Networks, CVPR 2019 ↩︎

  3. Learning to Sample, CVPR ↩︎

你可能感兴趣的:(三维点云处理)