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