python 立体图像_OpenCV-Python 立体图像的深度图 | 五十二
目標(biāo)
在本節(jié)中,
我們將學(xué)習(xí)根據(jù)立體圖像創(chuàng)建深度圖。
基礎(chǔ)
在上一節(jié)中,我們看到了對(duì)極約束和其他相關(guān)術(shù)語等基本概念。我們還看到,如果我們有兩個(gè)場景相同的圖像,則可以通過直觀的方式從中獲取深度信息。下面是一張圖片和一些簡單的數(shù)學(xué)公式證明了這種想法。
上圖包含等效三角形。編寫它們的等式將產(chǎn)生以下結(jié)果:
disparity=x?x′=BfZdisparity = x - x' = \frac{Bf}{Z}disparity=x?x′=ZBf?
xxx和x′x'x′是圖像平面中與場景點(diǎn)3D相對(duì)應(yīng)的點(diǎn)與其相機(jī)中心之間的距離。BBB是兩個(gè)攝像機(jī)之間的距離(我們知道),fff是攝像機(jī)的焦距(已經(jīng)知道)。簡而言之,上述方程式表示場景中某個(gè)點(diǎn)的深度與相應(yīng)圖像點(diǎn)及其相機(jī)中心的距離差成反比。因此,利用此信息,我們可以得出圖像中所有像素的深度。
因此,它在兩個(gè)圖像之間找到了對(duì)應(yīng)的匹配項(xiàng)。我們已經(jīng)看到了Epiline約束如何使此操作更快,更準(zhǔn)確。一旦找到匹配項(xiàng),就會(huì)發(fā)現(xiàn)差異。讓我們看看如何使用OpenCV做到這一點(diǎn)。
代碼
下面的代碼片段顯示了創(chuàng)建視差圖的簡單過程。
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
imgL = cv.imread('tsukuba_l.png',0)
imgR = cv.imread('tsukuba_r.png',0)
stereo = cv.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()
下面的圖像包含原始圖像(左)及其視差圖(右)。如你所見,結(jié)果受到高度噪聲的污染。通過調(diào)整numDisparities和blockSize的值,可以獲得更好的結(jié)果。
當(dāng)你熟悉StereoBM時(shí),會(huì)有一些參數(shù),可能需要微調(diào)參數(shù)以獲得更好,更平滑的結(jié)果。參數(shù):
texture_threshold:過濾出紋理不足以進(jìn)行可靠匹配
區(qū)域斑點(diǎn)范圍和大小:基于塊的匹配器通常會(huì)在對(duì)象邊界附近產(chǎn)生“斑點(diǎn)”,其中匹配窗口捕獲一側(cè)的前景和背景 在另一場景中,匹配器似乎還在桌子上投影的紋理中找到小的虛假匹配項(xiàng)。為了消除這些偽像,我們使用由speckle_size和speckle_range參數(shù)控制的散斑濾鏡對(duì)視差圖像進(jìn)行后處理。speckle_size是將視差斑點(diǎn)排除為“斑點(diǎn)”的像素?cái)?shù)。speckle_range控制必須將值差異視為同一對(duì)象的一部分的程度。
視差數(shù)量:滑動(dòng)窗口的像素?cái)?shù)。它越大,可見深度的范圍就越大,但是需要更多的計(jì)算。
min_disparity:從開始搜索的左像素的x位置開始的偏移量。
uniqueness_ratio:另一個(gè)后過濾步驟。如果最佳匹配視差不足夠好于搜索范圍中的所有其他視差,則將像素濾出。如果texture_threshold和斑點(diǎn)過濾仍在通過虛假匹配,則可以嘗試進(jìn)行調(diào)整。
prefilter_size和prefilter_cap:預(yù)過濾階段,可標(biāo)準(zhǔn)化圖像亮度并增強(qiáng)紋理,以準(zhǔn)備塊匹配。通常,你不需要調(diào)整這些。
附加資源
Ros stereo img processing wiki page
練習(xí)
OpenCV樣本包含生成視差圖及其3D重建的示例。查看OpenCV-Python示例代碼stereo_match.py??
總結(jié)
以上是生活随笔為你收集整理的python 立体图像_OpenCV-Python 立体图像的深度图 | 五十二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bigdecimal比较是否相等_jav
- 下一篇: websocket python爬虫_p