日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

「本文是之前學習VO 部分整理的思維導圖,筆記寫入之后均折疊了起來,正文中采用markdown格式展開,可看到筆記內容」

放上來的目的其實是方便自己查閱筆記,同樣給有需要的同學提供一點思路。

整體上的結構分為5部分,包括常用特征點介紹、運動估計、深度估計、光流法、直接法。按照這個順序可以比較好的回憶和串聯內容,建議的閱讀方式為:主要看思維導圖,遇到不清楚的地方去下文找筆記和具體內容。

# 視覺里程計VO## 常見特征點### ORB
- 關鍵點:Oriented FAST
- 檢測亮度變化明顯處
- 步驟
- ①像素p_{i}的亮度I_{p_{i}}
- ②閾值T
- ③半徑=3,16個像素點
- ④預處理:1,5,9,13至少三個滿足閾值條件
- ⑤連續12個像素點滿足閾值條件
- ⑥灰度質心計算方向
- 描述子:BRIEF(二進制)
- ORB特征點提取
- 1. 提取FAST角點
- 方向問題:計算灰度質心
- 尺度問題:構建圖像金字塔
- 2. 計算BRIEF描述子
- 特征點匹配
- 二進制描述子
- 漢明距離
<2*最小距離 || < 閾值
- 浮點類描述子
- 歐氏距離### SIFT
尺度不變特征變換(Scale invariant feature Transform,SIFT)https://blog.csdn.net/songzitea/article/details/13627823
- 原理相關
- 高斯差分 DOG
- 對各層圖像進行不同程度的高斯濾波后形成DOG金字塔
- 特征的特點
- 具有圖像尺度
- 具有旋轉不變形
對應著下方求關鍵點方向:為每一個特征點都計算了方向,后面的操作都在各個點的方向上進行,保證了旋轉不變形
- 對光照變化也具有一定程度的不變性
- 目標是解決低層次特征提取
- 可減少低由遮擋、雜亂和噪聲引起的低提取概率
- 缺點
- ①實時性低
- ②特征點少
- ③對邊緣光滑的圖像有時無能為力
- 步驟
可以看到計算量很大,因此實時性不容易滿足
SIFT算法建立一幅圖像的金字塔,在每一層進行高斯濾波并求取圖像差(DOG)進行特征點的提取
- 1. 尺度空間極值檢測
- ①由原圖像生成圖像金字塔
- ②關鍵點初步探查
非極大值抑制
通過檢測不同層之間的圖像的極值點來進行關鍵點的初步探查。
過程很簡單,就是與周圍的像素點進行比較,當大于或小于所有相鄰點時,即為極值點。下圖中的X不僅要跟周圍的O進行比較,還要跟上一層和下一層的9x2個O進行比較,才能確定是否是極值點。
- ③擬合真正極值點
使用泰勒展開式
- 2. 關鍵點定位
- ①去除低對比度特征點
- ②去除不穩定邊緣相應點
- 3. 求取特征點方向
利用關鍵點鄰域像素的梯度方向分布特性,我們可以為每個關鍵點指定方向參數方向,從而使描述子對圖像旋轉具有不變性,我們通過求每個極值點的梯度來為極值點賦予方向。
對于在DOG金字塔檢測到的關鍵點,采集所在圖像3σ鄰域窗口內像素的梯度和方向特征,并進行統計。取幅值最高的方向為主方向,超過峰值百分之80的方向為輔方向。
- 4. 求描述子描述關鍵點
為了保證特征向量具有旋轉不變性,需要將坐標軸旋轉到關鍵點的方向。
- 5. 生成特征匹配點
將特征點鄰域分為幾個區塊,計算八個方向的梯度方向直方圖。這里有16個區域,所以生成了16x8=128個維度的數據。在進行統計之前,還要進行一次高斯加權,特征點附近的區域權值大,相反權值小。### SURF
Speeded Up Robust Featureshttps://blog.csdn.net/songzitea/article/details/16986423
- 與SIFT相似
- 是SIFT加強版,同時加速的具有魯棒性的特征
- SIFT:較穩定,檢測特征點更多,但復雜度較高
- SURF:運算簡單,效率高,運算時間短
- SIFT先利用非極大抑制,再用到Hessian矩陣進行濾除;SURF先用Hessian矩陣,再進行非極大抑制。
- 特征
- 采用了harr特征
- 采用了積分圖像integral image概念
- 步驟
SURF使用Hessian Matrix進行特征點的提取,所以海塞矩陣是SURF算法的核心
- ①構建海塞矩陣
由于我們的特征點需要尺度無關性,所以在進行Hessian矩陣構造前,需要對其進行高斯濾波。
- ②尺度空間生成
圖像的尺度空間是這幅圖像在不同解析度下的表示。
在進行高斯模糊時,SIFT的高斯模板大小是始終不變的,只是在不同的octave之間改變圖片的大小。
而在SURF中,圖片的大小是一直不變的,不同的octave層得到的待檢測圖片是改變高斯模糊尺寸大小得到的,同一octave中的圖片用到的高斯模板尺度也不同。
- ③非極大抑制初步確定特征點和精確定位特征點
將經過hessian矩陣處理過的每個像素點與其3維領域的26個點進行大小比較,如果它是這26個點中的最大值或者最小值,則保留下來,當做初步的特征點。
然后,采用3維線性插值法得到亞像素級的特征點,同時也去掉那些值小于一定閾值的點,增加極值使檢測到的特征點數量減少,最終只有幾個特征最強點會被檢測出來。
- ④確定特征點主方向
在SURF中,不統計其梯度直方圖,而是統計特征點領域內的Harr小波特征。
即以特征點為中心,計算半徑為6s(S為特征點所在的尺度值)的鄰域內,統計60度扇形內所有點在x(水平)和y(垂直)方向的Haar小波響應總和(Haar小波邊長取4s),并給這些響應值賦高斯權重系數,使得靠近特征點的響應貢獻大,而遠離特征點的響應貢獻小,然后60度范圍內的響應相加以形成新的矢量,遍歷整個圓形區域,選擇最長矢量的方向為該特征點的主方向。這樣,通過特征點逐個進行計算,得到每一個特征點的主方向。
- ⑤構造描述子## 由匹配點估計相機運動### 單目相機:2D-2D
- 對極約束
- x_{2}^{T}*E*x_{1} = p_{2}^{T}*F*p_{1} = 0
- 本質矩陣 E = t^R
- ①內在性質:奇異值為[σ,σ,0]
- ②不同尺度下等價:尺度等價性
- ③由于②,自由度為6-1=5個
- 基礎矩陣 F = K^{-T}*E *K^{-1}
- 單應矩陣 H = R - t*n^{T}/d
- 描述兩個平面映射關系
- 用于特殊情況:特征點位于同一平面
- 求解方法:直接線性變換 DLT
- 求解步驟
- 1. 根據配對點計算 E 或者 F
- 2. 根據 E or F or H 計算 R 和 t
實際中往往同時估計E/F/H,選擇重投影誤差最小的作為最終的運動估計矩陣
- ①由于自由度為5,最少用5對點求解
- ②常用8點法,即8對點
- ③對 E 進行奇異值分解(SVD)
- ④由于E的尺度不變形,直接取奇異值矩陣Σ=diag (1, 1, 0)
- 存在問題
- 尺度不確定性
- 來源于對 t 歸一化
這么做的起因是E具有尺度等價性,因此 t 也具有尺度等價性,令其為1即稱為歸一化。
- 初始化
以 t 為單位1,計算相機運動和特征點的3D位置
- 純旋轉問題
- 單目SLAM初始化必須有平移
若平移t=0,那么E也將為0,就沒法求解了
- 多余8對點
- 最小二乘解決
- 隨機采樣一致性(實際中采用)
可處理帶錯誤匹配的數據,適用于誤匹配時### 3D-2D
最重要的姿態(運動)估計方法。
3D位置可以由三角測量或者RGB-D深度圖獲得
- 無需使用對極約束
- PnP
(Perspective-n-Point)
- 使用情況
- 雙目orRGB-D:直接使用
- 單目:必須經過初始化
- 求解方法
- DLT 直接線性變換
- ①使用齊次坐標P, x
P=(X, Y, Z, 1)
x=(u, v, 1):投影點用歸一化坐標
- ②定義增廣矩陣T
T = [ R | t]
顯然包含了平移和旋轉信息
- ③線性展開s*x = T*P
- ④對于R,從上面求解的T中去除左邊3*3矩陣塊進行分解
- P3P
使用3對配對點估計位姿
注意:
3D點的坐標是在世界坐標系中;
2D點坐標是在相機坐標系中
- ①三角形相似+余弦定理
- ②求解方程組,得到3D點在相機坐標系中的坐標
- ③利用3D-3D解法求解
- EPnP
Efficient PnP
- BA 非線性優化
Bundle Adjustment;
捆集調整/光束法平差
- 相機位姿與3D位置一起優化
優化變零即相機位姿(R, t)和特征點3D位置
- ①定義誤差項 e =
e = u - KTP/s
被稱為重投影誤差
- ②構建最小二乘問題 T = arg min ||……||^{2}
- ③獲得誤差對于優化變零的雅克比矩陣
誤差對于相機位姿李代數的雅克比矩陣
誤差對于特征點3D位置的雅克比矩陣
- ④選擇優化算法求解:GN/LM等
- 使用g2o實現BA優化
- ①聲明圖優化器
- ②配置優化求解器和梯度下降方法
- ③根據估計得到的特征點,將位姿和空間點放入圖中
- ④調用優化函數進行求解### 雙目、RGB-D:3D-3D
- 使用情況:匹配好的3D點對
未出現相機模型,在3D-3D情況下,與相機并沒有關系
- 求解:ICP
ICP(Iterative Closest Point) 迭代最近點
這里說的ICP問題是指:已有特征匹配的情況下進行位姿估計的問題
- 線性代數求解:SVD
- 推導:定義誤差項
e_{i} = p_{i} - ( R*p_{i}^{ ' } + t )
注意這里不要使用李群中的變換矩陣T
- 推導:構建最小二乘問題
- 推導:添項、展開、等價
- ICP的SVD求解步驟
- ①計算兩組點質心位置,再計算各點去質心坐標
質心位置:p, p_{ ' }
q_{i} = p_{i} - p
q_{i}^{ ' } = p_{i}^{ ' } - p^{ ' }
- ②根據最小二乘優化問題計算 R
R^{*} = arg min ∑||q_{i} - R*q_{i}^{ ' } ||^{2}
- R的求解要用到SVD
- ①令W = ∑q_{i}*q_{i}^{ ' T }
- ②對W進行SVD:W = U*∑*V^{T}
- ③則R = U*V^{T}
- ③由得到的 R 計算 t
t = p - R*p^{ ' }
- 非線性優化:BA
- 以迭代方式尋找最優
- 求解步驟(類似PnP)
- ①以李代數表示位姿,構建目標函數
- ②推導雅克比矩陣(使用李代數擾動模型)
- ③選擇優化算法求解
- 求解特點
- 存在無窮多解情況:失效
- 存在唯一解情況
- 極小值解即為全局最優解
- 意味著ICP求解可任意選定初值
- 實際使用中:混用PnP和ICP
- 特征點深度已知:
- 建模3D-3D誤差
- 特征點深度未知:
- 建模3D-2D重投影誤差## 由相機運動估計特征點空間位置### 三角測量
- 思路來源
- 單目SLAM無法通過單張圖像獲得像素深度信息
- 三角測量用于估計點的深度
- 步驟
- ①由對極約束得到了相機運動后
- ②再由相機運動估計特征點空間位置
- 定義
- ①在不同位置對同一個路標點進行觀察
- ②從觀察到的位置推斷路標點深度
- 求解
- ① s_{2}*x_{2} = s_{1}*R*x_{1} + t
- ②已知R, t,求解s_{1}, s_{2}
- 兩側左乘x_{2}^{^}
- ①式等于0,求解s_{1}## 光流法### 光流
- 描述了像素在圖像中的運動
- 分類
- 稠密光流
- 稀疏光流
- LK光流### 以LK光流為例
- 灰度不變假設
- 思路
- 下一時刻灰度等于之前的灰度
I(x+dx, y+dy, t+dt) = I(x, y, t)
進行一階泰勒展開
frac{partial I}{partial x}*(dx) + frac{partial I}{partial y}*(dy) + frac{partial I}{partial t}*(dt) = 0
寫成矩陣形式:
[I_x I_y] * [u v]_T = -I_t
- 某一窗口內的像素具有相同的運動
- 用途效果
常用于追蹤角點。可以加速基于特征點法的視覺里程計算法。
- 多層光流法
構造圖像金字塔,從頂層向底層進行計算,由粗至精的計算思路,相當于是:在頂層是粗略定位,往下做是不斷精細化像素點。## 直接法### 思路
直接根據像素灰度信息獲得相機運動和對應點的投影,因此不知道在第二幅圖像中哪個 p_2 對應著 p_1 。此時我們根據估計的相機位姿來找 p_2 ,當估計的位姿不好時, p_2 與 p_1 會有明顯不同(灰度不變假設),這時我們通過構造優化問題,不斷調整位姿以減小像素灰度差別。### 分類
- 稀疏直接法
速度最快,只能計算稀疏的重構
- 半稠密直接法
只是用帶有梯度的像素點
- 稠密直接法
計算所有像素點### 優缺點
- 優點
- 無需計算特征點及描述子,節省時間
- 只要求有像素梯度,無需特征點
- 可構建(半)稠密地圖
- 缺點
- 非凸性問題帶來的局部極小問題
- 單個像素不具備區分度
- 需要灰度不變假設,實際難以滿足

總結

以上是生活随笔為你收集整理的去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。