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