溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

OpenCV立體圖像深度圖Depth?Map怎么應(yīng)用

發(fā)布時(shí)間:2023-05-05 10:21:23 來(lái)源:億速云 閱讀:97 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容介紹了“OpenCV立體圖像深度圖Depth Map怎么應(yīng)用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

基礎(chǔ)

如果有兩個(gè)場(chǎng)景相同的圖像,則可以通過(guò)直觀的方式從中獲取深度信息。下面是一張圖片和一些簡(jiǎn)單的數(shù)學(xué)公式證明了這種想法。

OpenCV立體圖像深度圖Depth?Map怎么應(yīng)用

上圖包含等效三角形。編寫(xiě)它們的等式將產(chǎn)生以下結(jié)果:

OpenCV立體圖像深度圖Depth?Map怎么應(yīng)用

xxx和x′x'x′是圖像平面中與場(chǎng)景點(diǎn)3D相對(duì)應(yīng)的點(diǎn)與其相機(jī)中心之間的距離。BBB是兩個(gè)攝像機(jī)之間的距離(已知),fff是攝像機(jī)的焦距(已知)。簡(jiǎn)而言之,上述方程式表示場(chǎng)景中某個(gè)點(diǎn)的深度與相應(yīng)圖像點(diǎn)及其相機(jī)中心的距離差成反比。因此,利用此信息,可以得出圖像中所有像素的深度。

因此,可以在兩個(gè)圖像之間先找到對(duì)應(yīng)的匹配項(xiàng)。一旦找到匹配項(xiàng),就能獲得深度(disparity)。

代碼

下面的代碼片段顯示創(chuàng)建視差圖的簡(jiǎn)單過(guò)程。

import cv2
import numpy as np
from matplotlib import pyplot as plt
imgL = cv2.imread('tsukuba_l.png', 0)
imgR = cv2.imread('tsukuba_r.png', 0)
stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL, imgR)
plt.subplot(131)
plt.imshow(imgL, 'gray')
plt.title('imgL')
plt.xticks([])
plt.yticks([])
plt.subplot(132)
plt.imshow(imgR, 'gray')
plt.title('imgR')
plt.xticks([])
plt.yticks([])
plt.subplot(133)
plt.imshow(disparity, 'gray')
plt.title('disparity')
plt.xticks([])
plt.yticks([])
plt.show()

當(dāng)熟悉StereoBM后,可以微調(diào)一些參數(shù)以獲得更好、更平滑的結(jié)果。部分參數(shù)如下所示:

texture_threshold:過(guò)濾出沒(méi)有足夠紋理的區(qū)域以獲得可靠匹配的區(qū)域

Speckle range 和 size:基于塊的匹配器通常會(huì)在對(duì)象邊界附近產(chǎn)生“斑點(diǎn)”,其中匹配窗口捕獲一側(cè)的前景和在另一場(chǎng)景中的背景,在此場(chǎng)景中,匹配器還在桌子上找到的小片虛假匹配。要擺脫這些問(wèn)題,可以使用speckle_sizespeckle_range參數(shù)來(lái)控制后處理的深度圖像。speckle_size是視差斑點(diǎn)下的像素?cái)?shù),speckle_range控制必須被視為相同斑點(diǎn)的一部分最近距離

Number of disparities:滑動(dòng)窗口的像素?cái)?shù)。越大表明可見(jiàn)深度的范圍就越大,但是需要更多的計(jì)算代價(jià),最大視差值與最小視差值之差, 窗口大小必須是16的整數(shù)倍,int 型

min_disparity:從開(kāi)始搜索的左像素的x位置開(kāi)始的偏移量

uniqueness_ratio:另一個(gè)后過(guò)濾步驟。如果最佳匹配視差不足夠好于搜索范圍中的所有其他視差,則將像素濾出。如果texture_threshold和斑點(diǎn)過(guò)濾仍在通過(guò)虛假匹配,則可以嘗試進(jìn)行調(diào)整

prefilter_size和prefilter_cap:預(yù)過(guò)濾階段,可標(biāo)準(zhǔn)化圖像亮度并增強(qiáng)紋理,以準(zhǔn)備塊匹配。通常,不需要調(diào)整這些參數(shù)

“OpenCV立體圖像深度圖Depth Map怎么應(yīng)用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI