本篇和下篇為2020第三屆“SLAM技術及應用”暑期學校申抒含老師講解的基於圖像的三維重建。
后續補充:摸底考試的第一題就可用上述的兩種方法解決。題目如下:
1、用一個相機在不同位置拍攝同一物體,得到一組圖像序列,
1)請設計一種算法,得到該物體三維重建的結果,並給出詳細的算法流程; 2)給出算法流程中用到的重要公式。
題設是不同位置拍攝的圖像序列,個人認為用SfM更好,因為它多用來解決離散的圖像。
稀疏點雲重建
輸入:多視角圖像
輸出:相機位姿、稀疏點雲
基礎知識
小孔相機模型
三維點定位在相機坐標系下,並不是常用的,因為相機移動,三維坐標的點也會隨之移動。
將世界坐標系定義在物體上
重投影誤差最小化
假設已知相機參數K、R、T,已知三維點,那該三維點就能依據小孔相機成像模型投影到圖像上。若投影點和實際圖像上的二維點他們的圖像像素距離盡量的小,那重建結果就比較好。
分層重建
主要刻畫從兩幅視圖中如何構建兩相機的內外參數以及對應的三維點,為捆綁調整提供有效的初始值。
將分層重建拆解成三個子問題,未知數的數量大大減少。
直接度量重建(已知K)
兩視圖的五個對應點就能解析地求出兩相機的R、T。
則兩相機的位姿已知,內外參數已知就可通過兩視圖三角化將所有的三維點求解出來,就可進行捆綁調整。
上面解決了兩視圖的問題,若是幾幅圖或是成百上千幅,這時如何提供初值,這就是稀疏重建解決的問題。無論什么稀疏重建算法都是在完成所有相機位姿初始化計算的問題。
由於SfM因為它的離散特性,輸入的不是原始圖像,而是圖像之間的匹配關系,即view graph(外極幾何圖)
兩個節點的邊包含了兩幅圖像間的特征匹配點,以及在內參數已知時通過五點法分解出的兩相機的相對旋轉和相對平移。
注:對相機的絕對位置來說,分解出的Tij是一個向量,還有一個未知因子𝛌𝒊𝒋
添加第三個相機,在當前的三維點中,選擇一幅能夠看到當前已重建三維點最多的圖像,得到二維圖像點和三維點之間的匹配關系。就可以使用多視幾何中P3P P4P P5P來計算相機的位姿,這個計算過程也就是相機定位的過程。進而得到三個相機。再進行三角化、調用捆綁調整。不斷添加相機、三角化、捆綁調整,得到重建結果。
希望一次性估計出所有相機的旋轉矩陣、所有相機的絕對位置,這時只要進行三角化,進行一次全局捆綁調整就可以了。
上面的計算相對復雜,主要原因在於通過五點法分解出的兩相機的相對平移,只有朝向沒有尺度,也就是 𝐭𝐢𝐣是一個向量,還有一個未知的尺度 𝛌𝒊𝒋,要解絕對位置𝐂𝐢 、 𝐂𝐣,𝛌𝒊𝒋很干擾不容易求解。絕大多數的平移平均算法都是想消除𝛌𝒊𝒋的影響。