點到面的配準演算法

2021-09-10 05:05:46 字數 1696 閱讀 4374

學習一下pcl中點到面的配準演算法,筆記一下以免以後忘記,好記性不如爛筆頭!嘻嘻!

1、估計表面法向量問題 =對點集的k最近鄰點的協方差矩陣求特徵值和特徵向量(pca)問題

2、假設三維點集中的任意點pi,則

求協方差矩陣c的公式:

這裡補充一下:

協方差矩陣的階=隨機向量的維數,而與隨機向量的個數無關。協方差矩陣是對稱矩陣。其主對角線元素為點的各個分量的方差,可以反映點集在各個軸向的離散程度。其他元素反映了不同分量的相關性,當兩個分量距各自均值發生同向偏離時,協方差(即相應的協方差矩陣元素)趨向正值,當兩個分量距各自均值發生異向偏離時,協方差趨向負值。

通過計算協方差矩陣的特徵值和特徵向量,可以反映出點集離散的主要方向。若特徵向量為最大特徵向量,則特徵值即為沿著該軸的頂點資料具有的最大方差值;若特徵向量為最小特徵向量,則特徵值即為沿著該軸的頂點資料具有的最小方差值。

因此,估計表面法線問題可以表示為:

其中,k是點pi周圍k近鄰點的數量,在下文中會介紹;

注意:

因為pca來求解的法線方向模糊,並且不會朝向點雲資料集的視點,右側圖 extended gaussian image (egi)描述了點雲的所有法線方向,由於法線方向不一致,他們遍布整個球面

因此要想使資料集中所有法線始終朝向視點,需要加條件

選擇k值的標準:

1°好的效果:估計得到的表面法線相較於兩個平面垂直,並且在點雲渲染圖中可以看到細小的法線邊緣

2°比例因子選擇太大:估計得到的點特徵失真,在兩個平坦表面的邊緣處的表面法向量發生旋轉,並且,邊緣模糊,丟失細節

選擇k值的小技巧:

如果資料集中的圓形邊緣處的曲率十分關鍵,那麼取較小的k值會捕獲更好的邊緣細節,其他情況可以取大一點的k值。

演算法思路

1°create the normal estimation class, and pass the input dataset to it

2°create an empty kdtree representation, and pass it to the normal estimation object.its content will be filled inside the object, based on the given input dataset (as no other search su***ce is given)

3°output datasets

4°use all neighbors in a sphere of radius 3cm

5°compute the features

pcl中的實現**是這樣的(個人感覺matlab版本的實現更清爽)

#include #include

python利用向量計算點到面的距離

該鏈結是利用向量計算點到面的距離的原理 coding utf 8 import numpy as np import pandas as pd def pointtoarea point1,point2,point3,point4 描述 point4到point1,point2,point3所在面的...

點到平面的投影演算法備忘筆記

已知乙個平面,其上一點o 一般是中心點 平面法線n。平面外一點p,求p點在平面上的投影。這個問題在解數學題的時候不需要多想,按照已知條件帶入公式求值計算即可,到最後會化簡成幾個多項式,可以用多種方法求解。比較麻煩的是用程式設計的方法計算多項式是件很麻煩的事情,至少在下覺得寫出來的 不會太好看。為了使...

點集配準與ICP演算法 一

一圖勝千言,古人喜歡從畫中尋覓詩意,妙不可言 現代科學則希望從理解世界的視角來分析影象,於是計算機影象學 計算機視覺風生水起。我有幸在一所西部高校裡做機械人方便的研究,得以接觸大量的影象資料,這些影象中既有普通的二維影象 由工業相機採集 也有三維影象 由雷射感測器採集 最近做了的專案裡,我要計算出每...