欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV立體圖像深度圖Depth Map基礎

 更新時間:2023年05月05日 09:46:34   作者:uncle_ll  
這篇文章主要為大家介紹了OpenCV立體圖像深度圖Depth Map基礎詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

目標

在本節(jié)中,將學習

  • 根據(jù)立體圖像創(chuàng)建深度圖

基礎

在上一節(jié)中,看到了對極約束和其他相關術語等基本概念。如果有兩個場景相同的圖像,則可以通過直觀的方式從中獲取深度信息。下面是一張圖片和一些簡單的數(shù)學公式證明了這種想法。

上圖包含等效三角形。編寫它們的等式將產生以下結果:

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

因此,可以在兩個圖像之間先找到對應的匹配項。一旦找到匹配項,就能獲得深度(disparity)。

代碼

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

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()

下面的圖像包含原始圖像(左)及其視差圖(右)。如圖所見,結果受到高度噪聲的污染。通過

調整numDisparitiesblockSize的值,可以獲得更好的結果。

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

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

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

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

min_disparity:從開始搜索的左像素的x位置開始的偏移量

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

prefilter_size和prefilter_cap:預過濾階段,可標準化圖像亮度并增強紋理,以準備塊匹配。通常,不需要調整這些參數(shù)

附加資源

docs.opencv.org/4.x/dd/d53/…

Ros stereo img processing wiki page

StereoBM

以上就是OpenCV立體圖像深度圖Depth Map基礎的詳細內容,更多關于OpenCV立體圖像深度圖的資料請關注腳本之家其它相關文章!

相關文章

最新評論