PPF(Point Pair Features)原理及實(shí)戰(zhàn)技巧
簡介?
基于Point Pair Features(PPF)的6D姿態(tài)估計(jì)方法PPF,Drost et al., 2010(https://ieeexplore.ieee.org/document/5540108),是在機(jī)器視覺領(lǐng)域應(yīng)用廣泛的一種物體位姿提取方法。大名鼎鼎的Halcon,其Surface Matching 模塊就是在這種方法的基礎(chǔ)上做的優(yōu)化。(Halcon有一份technique notes 專門講該模塊的使用)。
這種方法具有什么優(yōu)勢呢?
1.在工業(yè)場景中,有大量缺少表面紋理或局部曲率變化很小的物體,無法利用局部特征提取匹配點(diǎn)對,因此基于局部特征點(diǎn)匹配的姿態(tài)估計(jì)方法無法使用
2.該方法的輸入,model(物體模型)與scene(場景)均為點(diǎn)云;隨著3D傳感器技術(shù)的發(fā)展,市場上出現(xiàn)了很多極具性價(jià)比的工業(yè)級3D傳感器,獲取高質(zhì)量點(diǎn)云的成本越來越低
原理
該法的原理,有篇文章珠玉在前PPF原理(https://zhuanlan.zhihu.com/p/94952276),對原論文講解很詳細(xì),這里不再重復(fù),我想強(qiáng)調(diào)幾個(gè)點(diǎn):
1.一個(gè)高度概括:原論文的標(biāo)題,"Model Globally, Match Locally"高度概括了該法的優(yōu)點(diǎn);所謂Model Globally,是指對model中所有的點(diǎn)對(任取兩個(gè)點(diǎn)組成一個(gè)點(diǎn)對,遍歷所有可能的組合)都計(jì)算了PPF描述子,以描述子為key,以這兩個(gè)點(diǎn)為value構(gòu)建hash table, 該hash table可以看作是對model 的一個(gè)global的描述; 在使用scene進(jìn)行匹配的時(shí)候,同樣要對scene中所有點(diǎn)對計(jì)算PPF描述子,然后在hash table中進(jìn)行查找;
2.一種思想:廣義霍夫變換是一種2D 形狀匹配方法,早已于上世紀(jì)80年代提出。PPF可以看作該法的3D推廣?;贖ough Voting思想,PPF描述子可以看成是一種“去中心化”的特征描述子。什么是“去中心化”?就是說兩個(gè)點(diǎn)到底匹不匹配,不像傳統(tǒng)的局部特征描述子,依賴點(diǎn)的局部信息,而是要靠其他的點(diǎn)來投****。盡管會(huì)有噪聲影響,但是正確的匹配一定會(huì)在投****過程中被“群眾”突顯出來,取得最高****數(shù)。由于PPF采取了Hough Voting的思想,因此繼承了其優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1) 對于輕微形變、遮擋魯棒性好
2) 抗噪聲能力強(qiáng)
3) 可一次提取出多個(gè)目標(biāo)(對比Ransac與Hough Voting, 兩者都是做model fitting的經(jīng)典方法,但是Hough voting在這一點(diǎn)上勝過Ransac)
缺點(diǎn):
1)參數(shù)空間維度高,空間復(fù)雜度和時(shí)間復(fù)雜度都很高;
優(yōu)化
2017年的文章:Going Further with Point Pair Features (https://link.springer.com/chapter/10.1007%2F978-3-319-46487-9_51) 對PPF進(jìn)行了優(yōu)化, 取得了很好的效果。這篇文章指出Drost提出的原算法(以下稱為Drost-PPF)及其變種中的問題:
sampling schemes of pairs of 3D points 被長期忽視,導(dǎo)致方法效率低下
傳感器噪聲的影響:影響了quantization過程,而整個(gè)算法的加速正是靠quantization
雜亂背景的影響:影響了算法中投****的過程
針對這幾個(gè)問題,作者采取的優(yōu)化措施有以下幾條:
1.Pre-processing: 點(diǎn)云的降采樣的策略。降采樣可以加速計(jì)算,并且避免一些很接近的點(diǎn)(空間距離近的點(diǎn)往往法向量也很接近)產(chǎn)生的不具有區(qū)分性的PPF features。Drost-PPF中的降采樣策略比較簡單,作者認(rèn)為會(huì)丟失部分有用信息,所以,即使兩個(gè)點(diǎn)的距離夠近,但如果法向量角度偏差超過30度,也會(huì)予以保留。
根據(jù)投****結(jié)果生成pose。Drost-PPF 使用了一種貪心策略(評價(jià)的標(biāo)準(zhǔn)是投****空間的投****數(shù))來做pose cluster。本文作者發(fā)現(xiàn)這種策略在有噪聲和背景干擾的情況下并不魯棒,投****數(shù)也不是一個(gè)可靠的標(biāo)準(zhǔn)。
作者采用了一種自底向上的聚類方法,允許每個(gè)pose同時(shí)屬于不同的cluster。需要保存每個(gè)pose相關(guān)聯(lián)的model point。pose A可以為其cluster投****,但是是有條件的,如果存在另一個(gè)pose B,pose B關(guān)聯(lián)的model point與pose A相同,且已經(jīng)為該cluster投過****,則pose A不再參與投****。這避免了repetitive geometric structures (比如平面)引起的bias。
下面幾個(gè)后處理也是比較重要的:
1)Refine:使用了projective ICP 來做pose refine。只選擇了兩個(gè)voting ball中排名前四的cluster 來做refine。
2)Occulation check: 根據(jù)pose將物體虛擬投影到2D圖上,檢查對應(yīng)像素的深度值,同虛擬投影相比,原深度圖有多少距離相機(jī)更近,有多少更遠(yuǎn),如果更近的像素比例過大(大于總像素?cái)?shù)的10%),這個(gè)pose顯然是有問題的,拒絕這個(gè)pose。
3)Silhouette check: 同樣根據(jù)pose將物體虛擬投影到2D圖上,得到輪廓。同時(shí)計(jì)算場景點(diǎn)云中深度和法向量變化劇烈的區(qū)域, 檢查輪廓是否被這些區(qū)域cover了。如果有大于10%的輪廓沒有被cover,拒絕這個(gè)pose
實(shí)驗(yàn)結(jié)果:
作者在兩個(gè)數(shù)據(jù)集上進(jìn)行了測試,ACCV DataSet,Occlusion DataSet(https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Krull_Learning_Analysis-by-Synthesis_for_ICCV_2015_paper.pdf), 評價(jià)標(biāo)準(zhǔn)是Recogniton rate (定義在Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images(https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Krull_Learning_Analysis-by-Synthesis_for_ICCV_2015_paper.pdf))
計(jì)算時(shí)間在0.1~0.8s之間(640x 480 depth map)
Tips
背景及其他雜物盡量提前移除, 在工業(yè)應(yīng)用場景這是比較好實(shí)現(xiàn)的
在投****過程中, scene上的Sr選取可以進(jìn)一步降采樣,實(shí)現(xiàn)提速的目的
參考文獻(xiàn)
1、Model globally, match locally: Efficient and robust 3D object recognition
(https://ieeexplore.ieee.org/document/5540108)
2、PPF介紹:(https://zhuanlan.zhihu.com/p/94952276)
3、Going Further with Point Pair Features
(https://link.springer.com/chapter/10.1007%2F978-3-319-46487-9_51)
備注:作者也是我們「3D視覺從入門到精通」特邀嘉賓:一個(gè)超干貨的3D視覺學(xué)習(xí)社區(qū)
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
pwm相關(guān)文章:pwm原理