研究slam過程中,專門看的演算法是dso,其前端是乙個直接法結合滑窗優化的產物。在實現滑窗**時對其理解不夠深刻,當翻起書再看時才恍然大悟。總結如下。
前端滑窗優化的殘差項和ba的完全不同。在dso中,點的引數只有深度,而且是在host幀上的深度,殘差項的構成原理時畫素點根據深度進行重投影的亮度誤差。而亮度的點是根據特徵點的深度進行重投影得到的。可見乙個引數和兩個關鍵幀以及乙個地圖點相關。而下面公式中的\(\xi\)是target和host的相對位姿,在求導時首先求得殘差對相對位姿的倒數\(j_\),之後還要根據adjoint轉化為對target和host各自位姿的倒數\(j_\),\(j_\)。具體可參考adjoint of se(3)。
\[e(d,p,\xi_) = i_(p) - i_(p'(p,d,\xi_))
\]\[p'(p,d,\xi_) = \fracp\exp)}k}
\]\[p = d\exp)}k^p
\]而在ba中,殘差項描述的時某個相機對地圖點的觀測值(畫素點位置)和系統**出的地圖點引數以及相機引數推導出來的投影位置的距離。在這種情況下,乙個地圖點的引數應該是絕對的三維世界座標系\(p(x,y,z)\)。所以來說ba的殘差求導相對於前端滑窗優化來說要來的簡單點,但是ba難點在於其規模會很大,在看ceres時找到ba的資料集bal dataset。隨便拿到乙個例子就有1900多個相機和六萬多個路標點。就算使用舒爾補,相機的hession矩陣也能夠達到20000x20000的級別(相機引數包含位姿、畸變、焦距9個變元),不過這也是有可能解的,因為在ba中相機的hession部分也是稀疏的。當然了,當進行舒爾布後,左上角的相機hession塊還是會變稠密。這就需要更深層次的方程組求解優化了。
\[e(p,\xi) = ||p_ - p_(p,\xi)||
\]\[p_(p,\xi) = \frac
\]
每日一題 和為k的連續子陣列 字首和與滑窗
2020 05 15 每日一題 對於要求連續子陣列的題目,靈活使用字首和和滑窗的方法。特點在於,字首和是否遞增。題目需要注意幾個關鍵點,陣列元素是既有正數又有負數的,且要求是連續的子陣列。陣列元素既有正數又有負數隱含了意思,陣列不是單調的。因此不適合用滑動視窗的方法。滑窗特點是,固定了左邊界以後,右...
移動前端開發和 Web 前端開發的區別
普通pc端開發與移動端開發區別。普通pc端開發,我理解就是你拿電腦開啟的網頁都算。那麼移動端前端開發工程師,說白了就很好理解了,做手機網頁的前端開發工程師。這麼一比,是不是感覺,移動端開發簡單多了?pc,我們需要考慮什麼呢?有點開發經驗的同學都知道,ie6 11,firefox,chrome,saf...
前端渲染和後端渲染的區別
前端渲染 指的是後端返回json資料,前端利用預先寫的html模板,迴圈讀取json資料,拼接字串,並插入頁面後端渲染 指的是前端傳送請求,後端用後台模板引擎直接生成html,前端接收到資料後直接插入頁面對比 對比前端渲染 後端渲染 頁面顯現速度 主要受限於頻寬和客戶端激起的好壞,優化的好,可以逐步...