1. icp演算法的一些網路資源
2. 經典icp演算法的步驟
3. fast icp演算法
icp(iterative closest points)演算法是點集配準的經典演算法,演算法基本原理是在a method for registration of 3-d shapes文章中提出。後人也在此基礎上不斷和補充icp演算法。
1. 下面是介紹icp演算法的一些網路資源:
icp演算法基本介紹:
經典icp算**文:
演算法的一些實現總結:
2. 經典icp演算法介紹。
icp演算法有較多的數學公式和概念,數學公式總歸看起來費勁,這裡只簡要的理解下其演算法步驟:
兩個點集p1,p2,每一步迭代,都朝著距離最小的目標進行。
a. 篩選點對:由p1中的點,在p2中搜尋出其最近的點,組成乙個點對;找出兩個點集中所有的點對。點對集合相當於進行有效計算的兩個新點集。
b. 根據點集對,即兩個新點集,計算兩個重心。
c. 由新點集,計算出下一步計算的旋轉矩陣r,和平移矩陣t(其實**於重心的差異)。
d. 得到旋轉矩陣和平移矩陣rt,就可以計算點集p2進行剛體變換之後的新點集p2`,由計算p2到p2`的距離平方和,以連續兩次距離平方和之差絕對值,作為是否收斂的依據。若小於閾值,就收斂,停止迭代。
e. 重複a-e,直到收斂或達到既定的迭代次數。
--其中,計算旋轉矩陣r時,需要矩陣方面的運算。
由新的點集,每個點到重心的距離關係,計算正定矩陣n,並計算n的最大特徵值及其最大特徵向量;其特徵向量等價於旋轉的四元數(且是殘差和最小的旋轉四元數),將四元數就可以轉換為旋轉矩陣。
數學概念:
四元數:
正定矩陣:特徵值都大於0的矩陣。
這些是矩陣理論,最優化原理方面的一些概念。
3. fast icp解析:
fast icp是對icp的改進與擴充套件。**efficient variants of the icpalgorithm詳細給出了影響icp演算法的各種因素,且每種因素都哪些演算法,其結果與效能如何。
fast icp根據這些因素將icp演算法分為6個步驟:
a. 篩選:點集或曲面的篩選(濾波)
b. 匹配:兩個點集之間的點進行配對
c. 權重:給每個匹配的點對分配權重
d. 去除:去除不符合條件的點對
e. 誤差度量:基於以上點對,給出每個點對的誤差計算方法
f. 最小化:最小化誤差度量
為測試以上階段中不同演算法的效能和結果,**提供了三個測試場景,並在這些點集(曲面)上加上雜訊:
比較平滑的波紋: 比較簡單的場景,幾何尺度變換不是很大
較複雜的不規則的草原地形: 相對複雜的,包含不同尺度的細節
僅含有突出乙個十字形雕刻面的平面: 對匹配而言,最困難的場景,因為特徵太少
下面是每個階段的演算法的比較:
a. 篩選:點集或曲面的篩選(濾波)
篩選也有以下幾種策略:
* 應用點集內所有可用的點: 無疑是效能最差的方法
* 採用均勻分布的方式篩選(或是距離等間隔篩選)
* 隨機篩選法
* 根據點的密度,顏色來篩選
* 對乙個點集進行篩選,或者兩個點集都進行篩選:對於一般的點集,兩種方法收斂率和結果基本相同,但僅對乙個點集篩選的演算法,資料運算量相對比較大。
* 另外乙個篩選策略是依據向量的分布情況: 篩選哪些能使點的向量的分布盡量大的點,這樣的目的是突出 特徵很少的 點集的特徵 (如十字雕刻面)
如下圖 a 隨機採用法, 圖b是向量空間分布法 的示意圖。 由圖可以明顯看出,空間向量分布法對點集的較少的特徵有著比較好的提取能力。
fast icp暫不考慮乙個點的密度顏色資訊。 對均勻分布法、隨機法、向量空間分布法比較。
對水波等簡單場景下:其收斂速度和收斂效果都差別不大。但對於特徵點較少的場景,向量空間分布法的收斂速度和結果很好,而對於另外兩種方法,基本不能收斂。如下:
b. 匹配:兩個點集之間的點進行配對
匹配的策略有以下幾種:
* 最鄰近點法:此方法還可以應用k-d樹或最鄰近點快取進行加速
* normal shooting:點集p1中取一點,沿其點法向量,到點集p2(曲面的)的交點,形成乙個點對
* 投影法:將源點集p1投影到目的點集p2上,沿著p2的相機的視角方向,又稱「reverse calibration」,搜尋度量方法包括點對點距離,點對線距離,密度,顏色等。
* 基於向量間角度或顏色的相容度量方法(compatibility metric)
fast icp中不考慮顏色,密度資訊。
這裡先給出投影法(b)與最近鄰法(b)的示意圖:
從圖上看,可以看出最鄰近點法容易受到雜訊的干擾,而投影法不受雜訊的干擾。
比較normal shooting、最鄰近點法和投影法三種方法:
在雕刻十字面的場景下:
雖然最鄰近點法容易受到雜訊干擾,但對於特徵比較少的場景下,最鄰近點(相容)法是唯一能完全收斂的方法。效果最好。對於投影法,收斂很快,但是效果不是很好。normal shooting法在這兩方面都表現平平。
對於複雜的草原場景,幾種方法的收斂結果最終都基本相同,但其收斂速度和計算速度卻有很大的差別:
從上圖來看,投影法的計算速度非常快,這是因為不僅投影法的收斂速度快,而且其演算法複雜度為o(1),而其他的演算法複雜度為o(logn)。
c. 權重:給每個匹配的點對分配權重
權重分配的策略有以下幾種:
* 均勻分配,即常數加權。
* 根據點對距離加權,點對間距大,權重就小,反之,權重就大。
* 根據向量的一致性(compability)進行加權,weight = n1 * n2
* 不確定性
這幾種方法的收斂速度和效果都差別大。總體上來講,向量一致(相容)的方法 適應性和速度比其他方法好點。
d. 去除:去除不符合條件的點對
這個階段的策略包括
* 固定閾值法:當間距大於乙個值時,就去除這個點對
* 固定比例法:每次迭代,去除最差的%n的點對
* 標準差法:將閾值設定為所有點對間距的標準差*2.5
* 去除曲面邊界的點對,如下圖,曲面邊界點的點對是不合理的,在兩個點集做部分匹配的時候。
這幾種方法的收斂速度差別不大,而且收斂效果也差別不大。但是去除outlier點對這個步驟 對收斂結果 的作用還是明顯的。
e. 誤差度量和最小化:基於以上點對,給出每個點對的誤差計算方法
誤差度量的策略:
* 點對的距離平方和
* 點到面的距離平方和
* 點到點和點到面的外推法
比較其收斂速率和效果,點到面和點到面外推法的度量方式效果更好。
fast icp分析了不同階段裡,各種因素或策略對演算法效能和結果的影響。應可以根據不同的需求,來選取不同的演算法對點集或曲面進行配準。
在演算法效果差別不大的情況下,盡量選擇簡單的演算法,來提高執行速度,如隨機取樣,常數加權,固定閾值等。
fast icp在網上有開源的**,研究一下對此演算法會有更深的理解。
K Means演算法對點集進行分類
k means 什麼是聚類分析 聚類分析是在資料中發現資料物件之間的關係,將資料進行分組,組內的相似性越大,組間的差別越大,則聚類效果越好。明顯分離的 可以看到 a 中不同組中任意兩點之間的距離都大於組內任意兩點之間的距離,明顯分離的簇不一定是球形的,可以具有任意的形狀。演算法思想較為簡單如下所示 ...
Oracle 如何迴圈查詢結果集,進行新增或修改
oracle的pl sql中怎樣迴圈查詢的結果集,然後根據查詢結果進行判斷,是新增或修改操作 loop迴圈例子 for item in select a,b,c from table a where 條件 loop insert into table b a,b,c values item.a,it...
51nod1416兩點(dfs或並查集)
福克斯在玩一款手機解迷遊戲,這個遊戲叫做 兩點 基礎級別的時候是在乙個n m單元上玩的。像這樣 每乙個單元有包含乙個有色點。我們將用不同的大寫字母來表示不同的顏色。這個遊戲的關鍵是要找出乙個包含同一顏色的環。看上圖中4個藍點,形成了乙個環。一般的,我們將乙個序列 d 1,d2,d k 看成乙個環,當...