標籤:

單目視覺里程計演算法深度信息的提取?雙目的原理和單目的不同?

【背景】

視覺里程計正經也是計算機視覺中熱過一陣的機器人導航手段,基本原理就是通過標定後的相機跟蹤拍攝圖像的特徵點反求相機外參數,再進行特徵點跟蹤,運動參數積分從而計算出與相機固結的移動機器人的位姿變化,據我所知,火星探測車進行了使用。

【問題】

很多最近的文章中說雙目視覺里程計可以進行3維導航,這個不假,但是相當一部分論文說跟蹤可以兩個相機分別進行再融合,而不是雙目視覺計算出特徵點的三維信息再跟蹤,這個讓我很費解,可不可以簡要談談實現機制呢?

【補充】

評論中也有懂行的朋友說,單目的深度信息可以通過相機移動後的多幀圖像提取進行獲得,但是多目視差三維測量的前提是相機之間的位姿關係已知,視覺測量時用單目進行形狀恢復,沒有其它先驗知識的情況下也只能按照比例恢復一個模型(比如飛機單目航拍一個小島,盤旋時可以恢復小島的三維信息,但是只是一個按照比例的相似形狀,不藉助其它測量手段無法確定這個小島的面積和最高海拔),用在導航這種本身需要求解實際相對位姿的情況下不就變成一個先有雞還是先有蛋的問題了嗎?


一般而言單目估算位姿是一個structure from motion的問題,需要通過幀間移動來構成對應特徵點的三角幾何關係。三角幾何關係確立後,位姿和特徵點的三維坐標是同時求解的,這個是經典的structue from motion問題。因此不存在先有雞還是先有蛋的問題。sfm的解法有很多,最簡單可以通過估算essential matrix,然後分解得到相機的旋轉R和位移T。單目的局限在於,首先,尺度是未知的,因此位移T和三維重建點坐標是存在一個尺度變化的。其次,兩幀之間如果位姿變化比較小,即基線較短時,所構成的三角幾何關係容易受雜訊影響,反推得到的信息誤差較大。基線太寬了又會導致匹配困難,連最魯棒的sift都會完敗。

另一方面,在雙目立體視覺中,由於基線是固定並已知的,因此是可以直接三角化得到特徵點三維坐標的。然後幀間的運動信息就是兩堆三維點之間的運動參數擬合。因此也可以理解為這是一個先有了雞,再有了蛋的解法。雙目的缺點是,由於基線是固定的,同時由於載體尺寸的限制,通常不會很寬。因此三角化重建的精度一般不太會很高。

用單目對雙目進行補充,我個人理解是,本身雙目是通過左、右視圖固定基線進行一次三角化。單目相當於用前、後兩幀的左圖對或者右圖對在前後兩幀移動構成的基線上再做一次三角化。假設誤差是均勻分布的,通過相互抵消來提高精度。


單目視覺,通過對單一圖像,所做出來的深度信息,如果沒有一定參數進行限制,比如焦距,那麼永遠只是一個預估量,不會是真實值。不過對於三維位置估測來說已經足夠了——因為有限空間中的各個位置都是相對的,只要這個相對關係是正確的,那就可以了。

總體來說,單目視覺有三種生成方式,一種是通過透視幾何來生成,參考消失點

一種是通過目標的位移來形成,這種生成的辦法是要有限制條件,比如相機固定,背景固定,人物的速度恆定,那麼目標的移動速度越快,他越接近相機。

還有一種是通過焦距。通過不同焦距對同一個場景攝像的模糊效果來測定。這種方法對於生成的整幅圖像來說效果還不是很好,但是數值卻比較准。

雙目視覺是依靠視差效果。這個效果是能夠形成三維立體感的主要原因。目前單目也主要是依靠通過尋找參照物,找到視差效果來生成三維深度信息的


補充一點,如果場景遠大於雙目的基線長度,雙目也就不能用了


推薦閱讀:

不用結構光,現在的雙目立體視覺有成熟的產品嗎?
為什麼很少人用FFT加速CNN卷積層的運算?
如何評價coco2017的結果和此類比賽的前景?
在曠視科技工作是怎樣一種體驗?
機器視覺方面有哪些好的開發平台?各有什麼特點?

TAG:計算機視覺 |