CVPR2023 | 如何設計一個更快更魯棒的P3P求解器?(3)
本文提取直線的幾種方法對比
直接法速度最快,但伴隨矩陣法最穩(wěn)定。實踐中推薦用伴隨矩陣法。
5.2 與SOTA方法對比5.2.1 數值穩(wěn)定性圖4:高斯核平滑直方圖,在無噪聲數據上運行 100,000 次運行的旋轉和平移誤差之和。測量估計和GT之間誤差的 L1 范數。
可以看到所有方法的都是數值穩(wěn)定的。Nakano(rp)表示帶root polishing(利用Gauss-Newton方法優(yōu)化根),該方法更多的分布在小誤差范圍。
表2:誤差的平均值、中位數和最大值。粗體表示最好的結果
本文提出的求解器在均值誤差和最大誤差上的性能最好,而Nakano(rp)求解器在中值誤差上的性能最好。請注意,基于四次的求解器包含的失敗案例,在此實驗中是刪除了的。
5.2.2 解的對比表3:與SOTA求解器對比
本文的求解器優(yōu)于現有的方法。對于幾乎所有的試驗,都能找到好的解和GT,沒有重復或錯誤的解?;谒拇畏匠痰腒e等人和Kneip等人的方法有很多重復解和錯誤解。因為他們用了四次方程的所有4個根(忽略虛部)來找到可能的估計,提高找到GT的可能性是可以的,但會損失其效率,因為實踐中每個假設需要用RANSAC進行評估。Nakano求解器用的虛部閾值過濾不必要的復根,但結果沒有本文的方法好。Ke等人與Kneip等人的方法也能夠用類似的閾值過濾四次方程的根,從而減少重復和錯誤解。
5.2.3 運行時間對比表4:平均運行時間對比,次嘗試,每個嘗試100次
基于三次方程的求解器比基于四次方程的要更高效,所提出的求解器比SOTA方法快15.4%,加速主要原因有兩個:
- 基于相對位置和判別式的分析,可以快速選擇三次方程的穩(wěn)定根,根據判別式的符號可以避免沒必要的計算。
- 從退化圓錐曲線中恢復直線的方法比Persson等人的方法更高效。 本文用C++復現的Nakano方法比原始的MATLAB實現慢,可能是用了不同的矩陣計算庫導致的。
Persson等人的方法在沒有解的情況下,其判別式非常接近于0。這是因為判別式為0對應于圖3中的(d)-(h)這些臨界情況,由于浮點數的舍入誤差和數值不穩(wěn)定性,這些情況下很難恢復運動參數。本文發(fā)現大多數失敗案例是(d)和(f)的情形,(e)(g)(h)很少發(fā)生。
與危險圓柱的關系圖5:危險圓柱是指三個3D點A,B,C為圓形環(huán)繞點的圓柱,其軸垂直于ABC平面
之前有工作指出,如果光心位于危險圓柱的表面,則P3P問題的解不穩(wěn)定。本文發(fā)現危險圓柱會導致判別式,即對應于圖3中的臨界情形。
5 總結本文重新審視了 P3P 問題,特別是研究了基于兩個圓錐曲線相交的解法,類似于 Persson 和 Nordberg的方法。通過分析可能的解的集合并明確枚舉極端情況,能夠設計一個快速穩(wěn)定的 P3P 算法。實驗表明,與以前的方法相比,本文的求解器更魯棒且更快。
局限性本文的方法基于研究兩個圓錐曲線的實交點。然而,P3P 問題是特殊的,因為解應該是正實數。三次方程可能有更多的約束,不幸的是,本文沒有發(fā)現一個很好的方法來做到這一點。請注意,式(4) 和 (5) 可以用同倫延拓來求解,該方法擅長解決大規(guī)模平方系統。但對于 P3P 問題,本文發(fā)現它不如當前基本上閉式的求解器有效。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。