1. 程式人生 > >三維重建學習(5):簡單地從數學原理層面理解雙目立體視覺

三維重建學習(5):簡單地從數學原理層面理解雙目立體視覺

前言

這是我前段時間學習雙目視覺時做的筆記,這一篇文章不會進行過於細緻的推導,僅僅會在一些理想情況下做一些簡單的推導,目標是得到一個直觀上的認識:雙目視覺是如何得到三維立體座標的。以後的部落格還會再放上一些詳細的推導,和對雙目視覺提取景深的程式實現。嘛,先一步一步來吧。
後面預設都知道攝像機的針孔模型以及相機座標系、世界座標系、影象座標系等等這些概念,如果不清楚請檢視之前的部落格:三維重建學習(2):相機標定基礎

先考慮一個很理想的情況

這裡寫圖片描述
假設整個相機座標系的原點為左相機座標系原點。
兩個攝像機同時觀察某一點P,假設P的座標是(xc,yc,zc)(注:座標是在相機座標系下),左右兩個攝像機的成像平面上都會有點

P的投影(也就是相機中心與點P的交點,圖中已標出),假設座標分別是:Pl=(xl,yl)Pr=(xr,yr)
為了方便推導,我們考慮一個比較理想的情況,假設左右影象所在的平面相互平行,即兩攝像機平面平行,並且兩個相機的光軸也位於同一水平面上。這個條件可以說是十分理想化了,而在立體視覺中我們要通過立體標定和立體校正才能得到這種情況下的兩張圖片,這裡暫且不討論,後面的部落格再談這些,現在只需要考慮這個理想的情況即可。
注意到兩個相機平面平行,並且光軸也位於同一水平面,發現:yl=yr=y,由相似三角形原理很容易得出。即圖中平面上投影點的y座標相同。
左右座標系中心的距離,即基線距為
B
;焦距為f
接著可以由幾何關係匯出下式,也是由相似三角形性質得到的:

{xl=xcfzcxr=(xcB)fzcy=ycfzc
接下來要引出視差(Disparity)的概念,設視差D=xlxr,即左座標系中投影點的座標減去右座標系中對應投影點的座標。由視差的公式:D=xlxr,和上面的幾個式子聯立可以解出xc,yc,zc來。
{xc=BxlDyc=ByDzc=BfD
在這種理想情況下,B
f$是焦距可以標定引數或是測量得到。根據兩幅影象中的點的視差與座標,可以很輕鬆地計算出三維座標。

考慮一個更一般的情況

這裡寫圖片描述
在實際中,我們的攝像機不可能完全平行,所以如上圖所示,假設在左右相機的座標系互相不平行。
假設左相機座標系oxyz為世界座標系;左影象座標系為oxlyl,左相機的焦距為fl;右影象座標系為