sim3相較于se3的好處
以下文章來源于古月居 ,作者lovely_yoshino
作者丨lovely_yoshino
來源丨古月居
0. 前言
最近一直在啃SLAM優(yōu)化方面的相關知識,發(fā)現以前對于se3與sim3之間的理解不太深入,這里專門開一篇文章來整理這兩者之間的區(qū)別。
相似變換sim(3),尺度s與R相乘,而不是t。ORB-SLAM2中使用sim3的主要原因是考慮到單目尺度漂移,這個在第一版系統(tǒng)的論文中的VII。LOOP CLOSING的Compute the Simlilarity Transformation部分有提到。
只有在單目輸入的時候,閉環(huán)的部分才回使用sim3;其實在雙目和RGBD輸入的時候雖然也用到了但是其尺度因子被強制設置為
1. 單目尺度漂移
單目SLAM的尺度漂移,簡單來說就是單目獲得的單張圖片無法知道拍攝物體到相機的距離,必須通過對極幾何求的兩張圖片的位姿,然后三角化出來尺度信息。而這些都依賴的是兩幀圖像之間的逆深度求解。
1.1 任選兩張圖(設為第0幀和第1幀),先提取關鍵點并匹配,再根據對極幾何求本質矩陣E,再從E中恢復R,t。這個在單目VO里屬于初始化的部分,其中得到的t是個單位向量,因為任意縮放t,極線約束都成立。你可以對t進行任意縮放??s放完后,設第0幀的位置為相機坐標系原點,則第1幀的位置就可以由R, t得到。雖然這個t不是真值,但是可以固定下來。然后根據兩幀的位置,可以對圖像幀0和1中匹配的三維點進行三角化。(多點獲取本質矩陣;恢復R,t;并根據R,t三角化計算出偽深度;)。
1.2 對之后的圖像幀,就不再是利用對極幾何求R,t了。依舊是先提取關鍵點再匹配哈, 但是這次匹配的上一幀的特征中,有些是已經被三角化過的,因此可以像之前答主說的用運動模型加BA求該圖像幀與上一幀的位置關系,也可以用PnP求R,t。求出來R,t之后,再三角化該幀與上一幀的沒被三角化過的匹配點。
1.3 我們可以發(fā)現在尺度漂移就是出現在第二步。因為對于新的圖像幀,都是先計算其R,t,再利用該R,t三角化與之前圖像幀匹配的點。問題就是,如果第一步算的R,t有誤差,那么第二步三角化的三維點的深度就存在誤差,也就是說其深度會存在一個縮放。對于新來的每一幀,都會有這樣的問題。
2. SE3與SIM3對比
2.1 首先是歐式變換:
2.2 然后是相似變換(推導過程同上,故省略):
2.3 最后說兩句,相似變換其實就只是個簡單的數學變換而已,所以想思考為什么的時候,應該從數學上來思考才能獲得更嚴謹的論證。相似變換的特點是改變原本物體的尺度比例(保形狀),所以這個S就是要乘在R上,如果在t上,那只是對改變物體的平移量,并不改變形狀的尺度比例,上面兩個圖已經說得很清楚了。這樣我們可以發(fā)現通過逆深度的縮放將會被考慮在內。
color{red}{如果我們確定了標準的景深則不需要sim(3)的處理形式,直接se(3)即可得到一樣的結果。}
3. 參考鏈接
https://www.zhihu.com/question/318307846
https://www.zhihu.com/question/301977205
https://www.cnblogs.com/JingeTU/p/14773877.html
本文僅做學術分享,如有侵權,請聯系刪文。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。