臨時(shí)研究了下機(jī)器視覺(jué)兩個(gè)基本算法的算法原理 ,可能有理解錯(cuò)誤的地方,希望發(fā)現(xiàn)了告訴我一下 主要是了解思想,就不寫具體的計(jì)算公式之類的了 (一) ICP算法(Iterative Closest Point迭代最近點(diǎn)) ICP(Iterative Closest Point迭代最近點(diǎn))算法是一種點(diǎn)集對(duì)點(diǎn)集配準(zhǔn)方法,如下圖1 如下圖,假設(shè)PR(紅色塊)和RB(藍(lán)色塊)是兩個(gè)點(diǎn)集,該算法就是計(jì)算怎么把PB平移旋轉(zhuǎn),使PB和PR盡量重疊,建立模型的
ICP是改進(jìn)自對(duì)應(yīng)點(diǎn)集配準(zhǔn)算法的 對(duì)應(yīng)點(diǎn)集配準(zhǔn)算法是假設(shè)一個(gè)理想狀況,將一個(gè)模型點(diǎn)云數(shù)據(jù)X(如上圖的PB)利用四元數(shù) 但是對(duì)應(yīng)點(diǎn)集配準(zhǔn)算法的前提條件是計(jì)算中的點(diǎn)云數(shù)據(jù)PB和PR的元素一一對(duì)應(yīng),這個(gè)條件在現(xiàn)實(shí)里因誤差等問(wèn)題,不太可能實(shí)線,所以就有了ICP算法
ICP算法是從源點(diǎn)云上的(PB)每個(gè)點(diǎn) 先計(jì)算出目標(biāo)點(diǎn)云(PR)的每個(gè)點(diǎn)的距離,使每個(gè)點(diǎn)和目標(biāo)云的最近點(diǎn)匹配,(記得這種映射方式叫滿射吧) 這樣滿足了對(duì)應(yīng)點(diǎn)集配準(zhǔn)算法的前提條件、每個(gè)點(diǎn)都有了對(duì)應(yīng)的映射點(diǎn),則可以按照對(duì)應(yīng)點(diǎn)集配準(zhǔn)算法計(jì)算,但因?yàn)檫@個(gè)是假設(shè),所以需要重復(fù)迭代運(yùn)行上述過(guò)程,直到均方差誤差小于某個(gè)閥值。
也就是說(shuō) 每次迭代,整個(gè)模型是靠近一點(diǎn),每次都重新找最近點(diǎn),然后再根據(jù)對(duì)應(yīng)點(diǎn)集批準(zhǔn)算法算一次,比較均方差誤差,如果不滿足就繼續(xù)迭代
(二)RANSAC算法(RANdom SAmple Consensus隨機(jī)抽樣一致) 它可以從一組包含“局外點(diǎn)”的觀測(cè)數(shù)據(jù)集中,通過(guò)迭代方式估計(jì)數(shù)學(xué)模型的參數(shù)。它是一種不確定的算法——它有一定的概率得出一個(gè)合理的結(jié)果;為了提高概率必須提高迭代次數(shù)。該算法最早由Fischler和Bolles于1981年提出。 光看文字還是太抽象了,我們?cè)儆脠D描述 RANSAC的基本假設(shè)是: 而下圖二里面、藍(lán)色部分為局內(nèi)點(diǎn),而紅色部分就是局外點(diǎn),而這個(gè)算法要算出的就是藍(lán)色部分那個(gè)模型的參數(shù)
RANSAC算法的輸入是一組觀測(cè)數(shù)據(jù),一個(gè)可以解釋或者適應(yīng)于觀測(cè)數(shù)據(jù)的參數(shù)化模型,一些可信的參數(shù)。 在上圖二中 左半部分灰色的點(diǎn)為觀測(cè)數(shù)據(jù),一個(gè)可以解釋或者適應(yīng)于觀測(cè)數(shù)據(jù)的參數(shù)化模型 我們可以在這個(gè)圖定義為一條直線,如y=kx + b; 一些可信的參數(shù)指的就是指定的局內(nèi)點(diǎn)范圍。而k,和b就是我們需要用RANSAC算法求出來(lái)的 RANSAC通過(guò)反復(fù)選擇數(shù)據(jù)中的一組隨機(jī)子集來(lái)達(dá)成目標(biāo)。被選取的子集被假設(shè)為局內(nèi)點(diǎn),并用下述方法進(jìn)行驗(yàn)證: 1.有一個(gè)模型適應(yīng)于假設(shè)的局內(nèi)點(diǎn),即所有的未知參數(shù)都能從假設(shè)的局內(nèi)點(diǎn)計(jì)算得出。 這個(gè)算法用圖二的例子說(shuō)明就是先隨機(jī)找到內(nèi)點(diǎn),計(jì)算k1和b1,再用這個(gè)模型算其他內(nèi)點(diǎn)是不是也滿足y=k1x+b2,評(píng)估模型 再跟后面的兩個(gè)隨機(jī)的內(nèi)點(diǎn)算出來(lái)的k2和b2比較模型評(píng)估值,不停迭代最后找到最優(yōu)點(diǎn)
我再用圖一的模型說(shuō)明一下RANSAC算法
RANSAC算法的輸入是一組觀測(cè)數(shù)據(jù),一個(gè)可以解釋或者適應(yīng)于觀測(cè)數(shù)據(jù)的參數(shù)化模型,一些可信的參數(shù)。 模型對(duì)應(yīng)的是空間中一個(gè)點(diǎn)云數(shù)據(jù)到另外一個(gè)點(diǎn)云數(shù)據(jù)的旋轉(zhuǎn)以及平移。
第一步隨機(jī)得到的是一個(gè)點(diǎn)云中的點(diǎn)對(duì)作
,利用其不變特征(兩點(diǎn)距離,兩點(diǎn)法向量夾角)作為哈希表的索引值搜索另一個(gè)點(diǎn)云中的一對(duì)對(duì)應(yīng)點(diǎn)對(duì),然后計(jì)算得到旋轉(zhuǎn)及平移的參數(shù)值。
然后適用變換,找到其他局內(nèi)點(diǎn),并在找到局內(nèi)點(diǎn)之后重新計(jì)算旋轉(zhuǎn)及平移為下一個(gè)狀態(tài)。
然后迭代上述過(guò)程,找到最終的位置
其中觀測(cè)數(shù)據(jù)就是PB,一個(gè)可以解釋或者適應(yīng)于觀測(cè)數(shù)據(jù)的參數(shù)化模型是 四元數(shù)
![]() ![]() 可信的參數(shù)是兩個(gè)點(diǎn)對(duì)的不變特征(兩點(diǎn)距離,兩點(diǎn)法向量夾角)
也就是說(shuō)用RANSAC算法是 從PB找一個(gè)隨機(jī)的點(diǎn)對(duì)計(jì)算不變特征,找目標(biāo)點(diǎn)云PR里特征最像的來(lái)匹配,計(jì)算qR和qT
RANSAC算法成立的條件里主要是先要有一個(gè)模型和確定的特征,用確定的特征計(jì)算模型的具體參數(shù)
RANSAC算法貌似可以應(yīng)用很多地方,這個(gè)相比ICP算法,更接近于一種算法思想吧
|
|
來(lái)自: 大老淵 > 《學(xué)習(xí)》