為什么非得用雙目相機(jī)才能得到深度?
說到這里,有些讀者會(huì)問啦:為什么非得用雙目相機(jī)才能得到深度?我閉上一只眼只用一只眼來觀察,也能知道哪個(gè)物體離我近哪個(gè)離我遠(yuǎn)??!是不是說明單目相機(jī)也可以獲得深度?
在此解答一下:首先,確實(shí)人通過一只眼也可以獲得一定的深度信息,不過這背后其實(shí)有一些容易忽略的因素在起作用:一是因?yàn)槿吮旧韺λ幍氖澜缡欠浅A私獾模ㄏ闰?yàn)知識),因而對日常物品的大小是有一個(gè)基本預(yù)判的(從小到大多年的視覺訓(xùn)練),根據(jù)近大遠(yuǎn)小的常識確實(shí)可以推斷出圖像中什么離我們遠(yuǎn)什么離我們近;二是人在單眼觀察物體的時(shí)候其實(shí)人眼是晃動(dòng)的,相當(dāng)于一個(gè)移動(dòng)的單目相機(jī),這類似于運(yùn)動(dòng)恢復(fù)結(jié)構(gòu)(Structure from Motion, SfM)的原理,移動(dòng)的單目相機(jī)通過比較多幀差異確實(shí)可以得到深度信息。
但是實(shí)際上,相機(jī)畢竟不是人眼,它只會(huì)傻傻的按照人的操作拍照,不會(huì)學(xué)習(xí)和思考。下圖從物理原理上展示了為什么單目相機(jī)不能測量深度值而雙目可以的原因。我們看到紅色線條上三個(gè)不同遠(yuǎn)近的黑色的點(diǎn)在下方相機(jī)上投影在同一個(gè)位置,因此單目相機(jī)無法分辨成的像到底是遠(yuǎn)的那個(gè)點(diǎn)還是近的那個(gè)點(diǎn),但是它們在上方相機(jī)的投影卻位于三個(gè)不同位置,因此通過兩個(gè)相機(jī)的觀察可以確定到底是哪一個(gè)點(diǎn)。

- 理想雙目相機(jī)成像模型
首先我們從理想的情況開始分析:假設(shè)左右兩個(gè)相機(jī)位于同一平面(光軸平行),且相機(jī)參數(shù)(如焦距f)一致。那么深度值的推導(dǎo)原理和公式如下。公式只涉及到初中學(xué)的三角形相似知識,不難看懂。?

根據(jù)上述推導(dǎo),空間點(diǎn)P離相機(jī)的距離(深度)z=f*b/d,可以發(fā)現(xiàn)如果要計(jì)算深度z,必須要知道:
1、相機(jī)焦距f,左右相機(jī)基線b。這些參數(shù)可以通過先驗(yàn)信息或者相機(jī)標(biāo)定得到。?
2、視差d。需要知道左相機(jī)的每個(gè)像素點(diǎn)(xl, yl)和右相機(jī)中對應(yīng)點(diǎn)(xr, yr)的對應(yīng)關(guān)系。這是雙目視覺的核心問題。