點集配準技術(ICP、RPM、KC、CPD)
在計算機視覺和模式識別中,點集配準技術是查詢將兩個點集對齊的空間變換過程。尋找這種變換的目的主要包括:1、將多個數據集合併為一個全域性統一的模型;2、將未知的資料集對映到已知的資料集上以識別其特徵或估計其姿態。點集的獲取可以是來自於3D掃描器或測距儀的原始資料,在影象處理和影象配準中,點集也可以是通過從影象中提取獲得的一組特徵(例如角點檢測)。
點集配準研究的問題可以概括如下:假設{M,S}是空間Rd中的兩個點集,我們要尋找一種變換T,或者說是一種從Rd 空間到Rd 空間的對映,將其作用於點集M後,可以使得變換後的點集M和點集S之間的差異最小。將變換後的點集M記為T
點集配準方法一般分為剛性配準和非剛性配準。
剛性配準:給定兩個點集,剛性配準產生一個剛性變換,該變換將一個點集對映到另一個點集。剛性變換定義為不改變任何兩點之間距離的變換,一般這種轉換隻包括平移和旋轉。
非剛性配準:給定兩個點集,非剛性配準產生一個非剛性變換,該變換將一個點集對映到另一個點集。非剛性變換包括仿射變換,例如縮放和剪下等,也可以涉及其他非線性變換。
下面我們來具體介紹幾種點集配準技術。
一. Iterative closest point(ICP)
ICP演算法是一種迭代方式的剛性配准算法,它為點集M中每個點mi尋找在點集S中的最近點sj,然後利用最小二乘方式得到變換T,演算法虛擬碼如下:
ICP演算法對於待配對點集的初始位置比較敏感,當點集M的初始位置與點集S比較接近時,配準效果會比較好。另外ICP演算法在每次計算迭代過程中都會改變最近點對,所以其實很難證明ICP演算法能準確收斂到區域性最優值,但是由於ICP演算法直觀易懂且易於實現,因此它目前仍然是最常用的點集配准算法。
在計算變換T時可以使用SVD方式,過程如下:
優化目標:
1.將點集去中心化:
2.計算協方差矩陣並SVD分解:
3.計算旋轉矩陣和平移向量:
二. Robust point matching(RPM)
RPM演算法是一種使用退火和軟對應方式的配准算法。ICP演算法在迭代計算時利用距離最近原則來產生待配準點對,而RPM演算法利用軟對應方式為任意點對賦予0到1之間的值,並最終收斂到0或1,如果是1則代表這兩個點是配準點對。RPM演算法最終計算得到的配準點對是一一對映的,而ICP演算法通常不是。
RPM演算法定義配準的損失函式如下:
其中:
t是平移向量。
A是變換矩陣,如果是2D情況,矩陣A可以分解成4個變數{a,θ,b,c},分別代表縮放係數,旋轉角度,垂直和水平剪下量。
g(A)代表變換矩陣的正則項,其作用是防止變換矩陣中出現較大值。
μ是配準矩陣,定義如下:
α項作用是是配準矩陣中有更多的配準點對數量
演算法虛擬碼如下:
三. Kernel correlation(KC)
KC演算法是一種相似性測量方法,它將點集配準問題轉化為尋找待配準點集之間最大相關性的過程。對於兩個點xi和xj,它們之間的核相關性(kernel correlation)定義為:
其中K(x, xi)是中心位置為xi的核函式,核函式通常為非負對稱函式,常用的核函式有高斯核函式等。
高斯核函式形式如下:
由高斯核函式可以得到的核相關性如下:
可以看到核相關性是與距離||xi - xj||相關的函式,值得注意的是,由其他核函式得到的核相關性也是距離||xi - xj||的函式。
KC演算法定義點集配準的損失函式如下:
定義核密度估計(kernel density estimates):
損失函式可以表示為兩個核密度估計之間的相關性:
四. Coherent point drift(CPD)
CPD演算法將點集配準問題轉換為概率密度估計問題,其將點集M的分佈表示成混合高斯模型,當點集M與點集S完成配準後,對應的似然函式達到最大。
將點集M中每個點mi作為混合高斯模型中每個成分的中心,並且假設每個成分概率相等,那麼其分佈模型可以表示為:
其中:
考慮噪聲的影響,在分佈模型中又加入了均勻分佈函式,其權重為w,這樣上式分佈模型可以進一步表示為:
混合高斯模型的中心在配準過程中與變換引數θ相關,為了求得模型引數,需要極小化負對數似然函式:
求解θ和σ2過程可以使用期望最大演算法,演算法包含兩步:
E-Step:通過舊的分佈模型引數計算後驗概率分佈Pold(i|sj)
M-Step:極小化損失函式來得到新的模型引數θ和σ2
演算法虛擬碼如下:
在M-step中,對於剛性變換和非剛性變換,變換模型引數求解分別如下:
無異常點無噪聲情況
有異常點無噪聲情況
無異常點有噪聲情況
有異常點有噪聲情況
本文為原創,轉載請註明出處:http://www.cnblogs.com/shushen。
參考文獻:
[1] https://en.wikipedia.org/wiki/Point_set_registration
[2] https://igl.ethz.ch/projects/ARAP/svd_rot.pdf
[3] Gold S, Rangarajan A, Lu C, et al. New algorithms for 2D and 3D point matching : Pose estimation and correspondence. Pattern Recognition, 1998, 31(8): 1019-1031.
[4] Chui H, Rangarajan A. A new point matching algorithm for non-rigid registration. Computer Vision and Image Understanding, 2003, 89(2): 114-141.
[5] Tsin Y, Kanade T. A Correlation-Based Approach to Robust Point Set Registration. european conference on computer vision, 2004: 558-569
[6] Myronenko A, Song X B. Point Set Registration: Coherent Point Drift. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32(12): 2262-2275.
附錄
薄板樣條(Thin Plate Spline)
薄板樣條可以表示成徑向基函式的形式,給定一系列控制點{ci, i = 1, ..., n},徑向基函式定義了空間中從位置x到f(x)之間的對映關係:
薄板樣條對應的徑向基函式核為σ(r) = r2logr。
對於非剛性變換,如果使用薄板樣條來表示,那麼徑向基函式的自變數和應變數可以分別認為是變換前的點座標x和變換後的點座標y。
下面具體介紹如何使用薄板樣條表示非剛性變換。
假設自變數是2維空間中的一系列點集x(A圖所示),應變數也是2維空間中的一系列點集y(B圖所示),我們對應變數的每個維度進行薄板樣條插值,插值函式形式如下:
其中:c是標量,a ∈ R2×1,w ∈ Rn×1,s(x)表示式式如下:
插值函式表示式中c + aTx代表仿射變換,wTs(x)代表非仿射變換。
對於變換後每個點的第一個維度,我們可以建立一個約束條件:
然後額外新增如下約束條件:
最終根據以上約束條件就可以求得薄板樣條插值函式的引數了。
期望最大演算法(Expectation Maximization)
期望最大演算法是解決含隱變數模型引數的一種方法。給定資料樣本X = {x(1), ... , x(n)},每個觀察樣本x(i)還對應著一個隱變數z(i)。假設樣本為獨立同分布,為了擬合模型p(x; θ)引數,我們需要極大化對數似然估計函式:
對於每個樣本x(i),我們引入隱變數z的某種分佈Qi(z),那麼上式可以進一步變化:
上式最後一步利用了Jensen 不等式。
於是我們得到似然函式L(θ)的下界函式 ,那麼我們可以不斷最大化下界函式G(θ, Q)來使得L(θ)不斷提高,演算法過程如下:
1.(E-Step)固定θ,調整Q(z),使得似然函式L(θ)與下界函式G(θ, Q)在θ處相等
2.(M-Step)固定Q(z),調整θ,使得下界函式G(θ, Q)達到最大值。
3.迭代上述步驟,直至收斂到區域性最優解。
對於第1步,只有當 為常數時等號成立,又由於 ,所以得到了Q(z)的表示式:
對於第2步,下界函式G(θ, Q)可以繼續推導,得到一個更簡單的表達形式:
下面具體介紹以期望最大演算法來求解混合高斯模型的引數。
如上圖所示,給定一系列二維資料點x,假設這些資料是由3個正態分佈函式隨機取樣得到,這些正態分佈函式線性組合在一起就組成了混合高斯模型的概率密度函式:
那麼得到對數似然估計函式如下:
我們為每個資料點xi引入一個隱變數 z,這個隱變數代表這個資料點xi是由混合高斯模型中的哪個正態分佈函式生成得到。
根據前面期望最大演算法步驟:
1.計算隱變數的分佈Qi(zk)
Qi(zk)它代表了資料點xi是由第k個正態分佈函式生成的概率:
2.計算混合高斯模型引數πk,μk,Σk
下界函式進一步推導:
於是可以求出模型引數:
相關推薦
點集配準技術(ICP、RPM、KC、CPD)
在計算機視覺和模式識別中,點集配準技術是查詢將兩個點集對齊的空間變換過程。尋找這種變換的目的主要包括:1、將多個數據集合併為一個全域性統一的模型;2、將未知的資料集對映到已知的資料集上以識別其特徵或估計其姿態。點集的獲取可以是來自於3D掃描器或測距儀的原始資料,在影象處理和影象配準中,點集也可以是通過從影
VTK修煉之道57:圖形基本操作進階_點雲配準技術(LandMark標記點演算法和座標系顯示方法)
#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkRenderingFreeType); VTK_MODULE_INIT(vtkInteractionStyle); #include
matlab練習程序(對應點集配準的四元數法)
amd 練習 size blank sigma 特征值 分享 lam dia 這個算是ICP算法中的一個關鍵步驟,單獨拿出來看一下。 算法流程如下: 1.首先得到同名點集P和X。 2.計算P和X的均值up和ux。 3.由P和X構造協方差矩陣sigma。 4.由協方
matlab練習程式(對應點集配準的四元數法)
這個算是ICP演算法中的一個關鍵步驟,單獨拿出來看一下。 演算法流程如下: 1.首先得到同名點集P和X。 2.計算P和X的均值up和ux。 3.由P和X構造協方差矩陣sigma。 4.由協方差矩陣sigma構造4*4對稱矩陣Q。 5.計算Q的特徵值與特徵向量。其中Q最大特徵值對應的特徵向量即為最佳
點集配準---CPD(Coherent Point Drift)
點集配準—CPD(Coherent Point Drift) 問題引入 給定兩個點集,如何將兩個點集進行配準,也就是對齊兩個點集,找到相互對應的點。在低維、‘乾淨’的資料集中下可以嘗試許多其他的方法。當資料的維度持續增長,幷包含噪音或者冗餘點時,問題就變得複雜了。 我們的目的
PCL學習筆記——利用點雲配準CorrespondenceEstimationBase()函式找出兩部分點雲重疊區域
主要Classes: pcl::registration::CorrespondenceEstimation< PointSource, PointTarget, Scalar > Class Template Reference 主要函式: tem
3D Registration 三維點雲配準
待讀參考: https://blog.csdn.net/kaspar1992/article/details/54836222 https://www.cnblogs.com/yin52133/archive/2012/07/21/2602562.html https://blog.csdn.net/u
PCL: Registration模組之IterativeClosestPoint點雲配準
ICP匹配,中文應該叫臨近點迭代吧,是計算機圖形學中的一個非常有用的演算法,尤其是在三維重建點雲配準中有著極其重要的地位,此外在SLAM等移動機器人導航等領域也有著很大的用武之地。 經過了十多年的發展ICP也有著很多的變種,今天我們首先熟悉下最基本的ICP匹配演算法,PCL中的實現與參考文獻中的
三維點雲配準
作者:劉緣 連結:https://www.zhihu.com/question/34170804/answer/121533317 來源:知乎 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 本科畢業設計做的點雲配準,對這個方面有一些初步理解,希望有所幫助~
PCL 3D-NDT演算法點雲配準
本節我們將介紹如何使用正態分佈變換演算法來確定兩個大型點雲(都超過100,000個點)之間的剛體變換。正態分佈變換演算法是一個配准算法,它應用於三維點的統計模型,使用標準最優化技術來確定兩個點雲間的最優的匹配,因為其在配準過程中不利用對應點的特徵計算和匹配,所以
你不知道的SVD 演算法------點雲配準+絕對定向+座標轉換
Sfm那篇部落格已經介紹,3D-3D的變換,不同學科稱呼不同。 在測繪領域,稱作為座標轉換,即七引數轉換—(3個旋轉,3個平移,1個尺度),通常尺度因子可以不計。最常見的情景諸如,54座標到80座標,80到CGS200座標等。 在攝影測量學科裡,稱為絕對定向
linux軟件安裝、rpm操作命令、本地yum配置(有什麽用)
nbsp -i linux cto 需要 -c 局域網 資源 file 1.yum是什麽? yum的全稱是yellow dog updater,modified,是一個shell前端軟件包管理器;基於RPM包管理,能夠從指定的服務器下載RPM包並自動安裝,可以自動處理依賴性
認識BLE 5協議棧 —— 邏輯鏈路控制與適配協議層(L2CAP,Logical Link Control and Adaptation Protocol)
轉自 http://www.sunyouqun.com/2017/04/understand-ble-5-stack-l2cap-layer/ 邏輯鏈路控制與適配協議通常簡稱為L2CAP(Logical Link Control and Adaptation Protocol),它
安卓開發筆記(九)—— HttpURLConnection請求訪問Web服務,解析JSON資料,多執行緒,CardView佈局技術(bilibili的使用者視訊資訊獲取軟體)
中山大學資料科學與計算機學院本科生實驗報告 (2018年秋季學期) 一、實驗題目 WEB API 第十四周實驗目的 學會使用HttpURLConnection請求訪問Web服務 學習Android執行緒機制,學會執行緒更新UI 學會解析JSO
Cloudera Manager安裝之Cloudera Manager 5.3.X安裝(三)(tar方式、rpm方式和yum方式)
前期部落格 ClouderaManager官網安裝 https://www.cloudera.com/documentation/manager/5-0-x/Cloudera-Manager-Installation-Guide/cm5ig_install_path_
Cloudera Manager安裝之Cloudera Manager 5.6.X安裝(tar方式、rpm方式和yum方式) (Ubuntu14.04) (三)
歡迎您的加入! 微信公眾號平臺: 大資料躺過的坑 微信公眾號平臺: 人工智慧躺過的坑 大資料和人工智慧躺過的坑(總群): 161156071 更多QQ技術分群,詳情請見:http://www.cnblogs.com/zls
iphonex的currentmodel是1125,2001,以及,如何為iphonex適配啟動圖(我用的是imagex.cassset形式)
今天要適配iphonex時出了問題,從appdelegate裡邊的執行方法開始,打印出的顯示模式的size都是{1125,2001},即375*667的@3x形式,而不是{1125,2436}的iphonex形式;找來找去,懷疑原因可能是沒有製作iOS11,2436的啟動圖,
軟件包安裝方法、rpm包介紹、rpm、yum、
yum rpm安裝軟件包的三種方法window的exe文件就是二進制包,不能使用記事本文本打開。Linux下的ls命令文件也是二進制的。 rpm工具。類似Windows的exe源碼包 就是源代碼。需要編譯器編譯可執行文件Yum工具 操作的是rpm包。Yum工具是Python開發。自動安裝依賴的包。Yum就像
二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫
rpm工具 yum工具 二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫一、安裝軟件包的三種方法rpm工具、yum工具、源碼包RPM工具:是以一種數據庫記錄的方式將需要的套件安裝到Linux主機的一套管理程序。就是說,你的Linux系統中有一個關於RPM的
安裝軟件包的三種方法 、rpm包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫安裝軟件包的
258866安裝軟件包的三種方法rpm包類似於windows的exe文件。rpm工具可以安裝rpm包,安裝路徑和文件名都是固定好的,不需要過多的設置。yum也可以安裝rpm包,比rpm工具好的一點是支持自動安裝依賴的包。源碼包主要是源代碼,需要誰用編譯器編譯成可執行的文件。·····rpm包介紹首先我們要把光