DERS使用兩個(gè)或三個(gè)輸入視點(diǎn)及其相機參數,來(lái)進(jìn)行深度估計。
其工作模式分為三種:automatic Depth,Semi-automatic Nagoya,Semi-automatic ETRI。由cfg文件中的DepthEstimationMode控制。三種方法流程圖如下:
三者主要模塊相同:首先通過(guò)對兩個(gè)或三個(gè)視點(diǎn)的每一個(gè)像素進(jìn)行外極線(xiàn)搜索,計算匹配代價(jià);然后用graph-cut算法,求最小代價(jià)能量函數,獲得每一個(gè)像素的最可能視差;最后利用視差并繪制深度圖。
在3D場(chǎng)景中,深度有兩種描述方式:1.相對于3D空間原點(diǎn)的位置。 2.相對于相機的位置。用z表示深度值,Zfar和Znear分別表示距離相機位置或是3D空間原點(diǎn)最遠和最近的深度值,v表示深度圖的濃度值,則可得下式:
當已知平行相機陣列的焦距f和基線(xiàn)距離b時(shí),可以得到以下式子:
而深度圖的濃度值可以通過(guò)視差來(lái)表示:
因此可以使用視差來(lái)計算深度和繪制深度圖。
在DERS中,深度估計使用的是一種全局匹配算法graph cut。
Graph cut是圖論中的一個(gè)概念,是一種有效的能量?jì)?yōu)化算法,普遍應用于圖像分割、立體視覺(jué)、摳圖等算法中。
具體算法參見(jiàn)上篇文章:
http://blog.csdn.net/lin453701006/article/details/56480377
通過(guò)Graph cut算法找最大流,就可以為每個(gè)像素分配一個(gè)視差,求出對應的深度圖濃度值了。