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()
下面的圖像包含原始圖像(左)及其視差圖(右)。如圖所見,結果受到高度噪聲的污染。通過
調整numDisparities
和blockSize
的值,可以獲得更好的結果。
當熟悉StereoBM后,可以微調一些參數(shù)以獲得更好、更平滑的結果。部分參數(shù)如下所示:
texture_threshold
:過濾出沒有足夠紋理的區(qū)域以獲得可靠匹配的區(qū)域
Speckle range 和 size
:基于塊的匹配器通常會在對象邊界附近產生“斑點”,其中匹配窗口捕獲一側的前景和在另一場景中的背景,在此場景中,匹配器還在桌子上找到的小片虛假匹配。要擺脫這些問題,可以使用speckle_size
和speckle_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ù)
附加資源
Ros stereo img processing wiki page
以上就是OpenCV立體圖像深度圖Depth Map基礎的詳細內容,更多關于OpenCV立體圖像深度圖的資料請關注腳本之家其它相關文章!
相關文章
使用Python爬蟲庫requests發(fā)送請求、傳遞URL參數(shù)、定制headers
今天為大家介紹一下Python爬蟲庫requests的發(fā)送請求、傳遞URL參數(shù)、定制headers的基礎使用方法2020-01-01Python Sqlalchemy如何實現(xiàn)select for update
這篇文章主要介紹了Python Sqlalchemy如何實現(xiàn)select for update,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10Python 2種方法求某個范圍內的所有素數(shù)(質數(shù))
這篇文章主要介紹了Python 2種方法求某個范圍內的所有素數(shù)(質數(shù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01使用pytorch搭建AlexNet操作(微調預訓練模型及手動搭建)
今天小編就為大家分享一篇使用pytorch搭建AlexNet操作(微調預訓練模型及手動搭建),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01如何使用Python實現(xiàn)名片管理系統(tǒng)
這篇文章主要介紹了如何使用Python實現(xiàn)名片管理系統(tǒng),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學習又是幫助2022-08-08用于統(tǒng)計項目中代碼總行數(shù)的Python腳本分享
這篇文章主要介紹了用于統(tǒng)計項目中代碼總行數(shù)的Python腳本分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-04-04