基礎(chǔ)
在上一節(jié),我們看到了極線約束和其他相關(guān)術(shù)語论矾。我們也看到了如果我們有同一場景的兩張圖像佩番,我們可以從直覺的方法從里面獲得更多信息附帽。下面是一個圖像,和一些數(shù)學(xué)公式證明這個直覺
上面的圖包含等面積三角形馆衔,寫出他們的等式會得到下面的結(jié)果:
x和x'是圖像平面里的點(diǎn)對應(yīng)的場景里的點(diǎn)和攝像機(jī)中心的距離瘟判。B是兩個攝像機(jī)之間的距離(我們已知),f是攝像機(jī)焦距(已知)角溃。所以拷获,上面的等式說一個點(diǎn)在場景里的深度和對應(yīng)圖像點(diǎn)和他們攝像機(jī)中心點(diǎn)的距離差成反比。有了這個信息减细,我們可以得出圖像里所有像素的深度匆瓜。
所以它在兩個圖像里找對應(yīng)的匹配點(diǎn)。我們已經(jīng)看到了極線約束會讓這個運(yùn)算快捷和準(zhǔn)確,當(dāng)它找到了匹配驮吱,它也就找到了視差茧妒,讓我們看看用OpenCV怎么做
編碼
下面的代碼片段展示了一個簡單的創(chuàng)建視差圖的過程。
import numpy as np
import cv2
from matplotlib import pyplot as pltimgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()
下面的圖像包含原始圖像(左邊)和它的視差圖(右邊)左冬。你可以看到結(jié)果被高度噪音污染了桐筏。調(diào)整numDisparities和blockSize的值,你可以得到更好結(jié)果拇砰。
END