0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

雙目立體視覺之塊匹配視差圖算法

新機(jī)器視覺 ? 來源:AI公園 ? 2023-05-31 10:14 ? 次閱讀

雙目立體視覺的第二部分,視差圖計(jì)算算法。

大家好!歡迎來到立體視覺深度第二部分。我將簡(jiǎn)要解釋塊匹配算法。我假設(shè)您已經(jīng)閱讀了前一篇文章,如果你還沒有讀過,去讀一下。

在第一篇文章中,我們分別拍攝了左右兩幅圖像,并對(duì)相機(jī)進(jìn)行了校準(zhǔn)。校準(zhǔn)過程之后,我們有了立體圖像,兩張圖像中相同的點(diǎn)在同一條線上,這意味著如果這一對(duì)圖片種有一支筆,筆上的對(duì)應(yīng)的點(diǎn)應(yīng)該分別是(X1, Y)和(X2, Y),Y是行號(hào),X1和X2的圖像的列號(hào)。

a9551b3c-ff51-11ed-90ce-dac502259ad0.jpg

校正過的圖像顯示相同的P點(diǎn)。

在本例中,X1和x2之間的差異為我們提供了視差值。我們已經(jīng)提到過,如果我們用左眼閉著看一個(gè)近距離的物體,反之亦然,位置根據(jù)睜眼的角度而變化。當(dāng)物體距離越遠(yuǎn),這種差別就越明顯。這意味著如果視差值越小,物體越近。每個(gè)點(diǎn)都可以做這個(gè)操作,但是效率不高,因?yàn)椋?/p>

這是一個(gè)很慢的過程。時(shí)間是寶貴的。

如果校正的不夠好,每個(gè)點(diǎn)都不理想。

我們需要減少誤差,在這種情況下,逐點(diǎn)處理不會(huì)有幫助。

這就是我們使用塊匹配的原因。其中一些是使用光流(圖像流),或減少圖像大小,以使用更少的處理能力。第二點(diǎn)我簡(jiǎn)單提一下,如果你想了解更詳細(xì)的信息,請(qǐng)查閱相關(guān)論文。

我們從左邊的圖像開始。使用左圖不是強(qiáng)制的,我就是這么用的。太大的塊會(huì)產(chǎn)生平滑的圖像,太小的塊會(huì)產(chǎn)生噪聲。你都應(yīng)該嘗試一下,找到最佳值。在選擇最左邊的塊之后,我們從左到右搜索,并嘗試盡可能多地與右邊的圖像匹配。由于圖像被校正過了,在一個(gè)軸上搜索就足夠了。

a963ecfc-ff51-11ed-90ce-dac502259ad0.png

黑塊是我們的待搜索塊

a9853650-ff51-11ed-90ce-dac502259ad0.png

在一個(gè)軸上搜索,從左到右搜索

如何進(jìn)行塊匹配?有很多公式。大多數(shù)人用的是絕對(duì)差的和以及差的平方和。你可以研究一下相關(guān)的論文以及人們是如何使用它的。在這些方法中,較小的結(jié)果意味著非常相似。這將是我們選擇的塊的差異值。

a99e01da-ff51-11ed-90ce-dac502259ad0.png

絕對(duì)差和的例子

a9ad6440-ff51-11ed-90ce-dac502259ad0.png

左校正后的圖像,右校正后圖像,塊匹配后的視差圖。

既然我們已經(jīng)介紹了基礎(chǔ)知識(shí),讓我們查看一下代碼。在塊匹配之后,我使用了WLS(加權(quán)最小二乘)濾波器來獲得更平滑和更接近的視差值,可以更好地代表圖像。函數(shù)為:

defdepth_map(imgL,imgR):
"""Depthmapcalculation.WorkswithSGBMandWLS.Needrectifiedimages,returnsdepthmap(lefttorightdisparity)"""
#SGBMParameters-----------------
window_size=3#wsizedefault3;5;7forSGBMreducedsizeimage;15forSGBMfullsizeimage(1300pxandabove);5Worksnicely

left_matcher=cv2.StereoSGBM_create(
minDisparity=-1,
numDisparities=5*16,#max_disphastobedividableby16f.E.HH192,256
blockSize=window_size,
P1=8*3*window_size,
#wsizedefault3;5;7forSGBMreducedsizeimage;15forSGBMfullsizeimage(1300pxandabove);5Worksnicely
P2=32*3*window_size,
disp12MaxDiff=12,
uniquenessRatio=10,
speckleWindowSize=50,
speckleRange=32,
preFilterCap=63,
mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)
right_matcher=cv2.ximgproc.createRightMatcher(left_matcher)
#FILTERParameters
lmbda=80000
sigma=1.3
visual_multiplier=6

wls_filter=cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(lmbda)

wls_filter.setSigmaColor(sigma)
displ=left_matcher.compute(imgL,imgR)#.astype(np.float32)/16
dispr=right_matcher.compute(imgR,imgL)#.astype(np.float32)/16
displ=np.int16(displ)
dispr=np.int16(dispr)
filteredImg=wls_filter.filter(displ,imgL,None,dispr)#importanttoput"imgL"here!!!

filteredImg=cv2.normalize(src=filteredImg,dst=filteredImg,beta=0,alpha=255,norm_type=cv2.NORM_MINMAX);
filteredImg=np.uint8(filteredImg)

returnfilteredImg

你可以再這里:https://github.com/aliyasineser/stereoDepth檢查項(xiàng)目。代碼基本上就是在創(chuàng)建匹配器。OpenCV的文檔很差(我添加了一些,但這只是冰山一角),但編碼方面真的很容易。讓我們來看看參數(shù)

minDisparity: 最小視差值。通常我們期望這里是0,但當(dāng)校正算法移動(dòng)圖像時(shí),有時(shí)需要設(shè)置。

numDisparities: 最大視差值,必須大于0,定義視差邊界。

blockSize: 匹配塊的塊大小。推薦使用[3-11],推薦使用奇數(shù),因?yàn)槠鏀?shù)大小的塊有一個(gè)中心

P1 和 P2: 負(fù)責(zé)平滑圖像,規(guī)則是P2>P1。

disp12MaxDiff: 視差計(jì)算的最大像素差。

preFilterCap:過濾前使用的值。在塊匹配之前,計(jì)算圖像x軸的一個(gè)導(dǎo)數(shù),并用于檢查邊界[-prefiltercap, prefiltercap]。其余的值用Birchfield-Tomasi代價(jià)函數(shù)處理。

uniquenessRatio: 經(jīng)過成本函數(shù)計(jì)算,此值用于比較。建議取值范圍[5-15]。

speckleWindowSize: 過濾刪除大的值,得到一個(gè)更平滑的圖像。建議取值范圍[50-200]。

speckleRange: 使用領(lǐng)域檢查視差得到一個(gè)平滑的圖像。如果你決定嘗試,我建議1或2。小心,這個(gè)值會(huì)乘以16!OpenCV會(huì)這樣做,所以你不需要自己去乘。

在代碼中我們使用了SGBM。創(chuàng)建左右視差圖,使用WLS濾波平滑優(yōu)化圖像。我還沒有掌握這個(gè),我用數(shù)值做了實(shí)驗(yàn),所以我就不詳細(xì)講了。

代碼:https://github.com/aliyasineser/stereoDepth可用于單目和立體攝像機(jī)標(biāo)定,以及視差圖計(jì)算。之后,你可以對(duì)結(jié)果做任何你想做的事。在我的項(xiàng)目中,我用它來檢測(cè)前方是否有物體或距離太近,都是關(guān)于無人機(jī)的。你可以用你的想象力創(chuàng)造很多東西。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 雙目立體視覺
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8575

原文標(biāo)題:雙目立體視覺 II:塊匹配視差圖計(jì)算

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    雙目立體視覺三大算法原理及其代碼實(shí)現(xiàn)

    雙目立體視覺中常用的基于區(qū)域的局部匹配準(zhǔn)則主要有圖像序列中對(duì)應(yīng)像素差的絕對(duì)值之和SAD(sum of absolute differences)、對(duì)應(yīng)像素差的平方之和SSD(sum of squared differences)
    發(fā)表于 07-01 09:34 ?1827次閱讀
    <b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>三大<b class='flag-5'>算法</b>原理及其代碼實(shí)現(xiàn)

    快速有效提取濃密視差的方法

    互為最大來確定其余點(diǎn)的匹配關(guān)系。用該方法處理經(jīng)過良好校正的圖像對(duì),在VC++環(huán)境下可實(shí)現(xiàn)濃密視差的快速提取。關(guān) 鍵 詞 雙目立體視覺; 圖
    發(fā)表于 06-14 00:21

    雙目立體視覺原理大揭秘(一)

    不同的處理即可。非常感謝CCAS雙目視覺軟件對(duì)我們研究解析的大力支持,關(guān)于這方面的內(nèi)容可以去試試CCAS雙目視覺軟件,感興趣的朋友可以去網(wǎng)上找找相關(guān)資料。事實(shí)上,雙目立體視覺
    發(fā)表于 11-21 16:20

    雙目立體視覺原理大揭秘(二)

    ?;?b class='flag-5'>雙目立體視覺的三維重構(gòu)其基本原理也是模擬人眼并利用空間幾何模型推導(dǎo)出相應(yīng)的算法來解決實(shí)際問題。本文以服裝設(shè)計(jì)中關(guān)于人體輪廓還原案例做一說明。為了便于理解,本文僅說明案例中一個(gè)視角的雙目
    發(fā)表于 11-21 16:22

    雙目立體視覺的運(yùn)用

    ` 本帖最后由 ketianjian 于 2016-3-3 09:38 編輯 雙目立體視覺,這是一門有著廣闊前景運(yùn)用的學(xué)科,也是一種非常重要的機(jī)器視覺運(yùn)用形式。通俗來講,就是利用兩臺(tái)或者多臺(tái)
    發(fā)表于 03-03 09:36

    LABVIEW能做雙目立體視覺

    最近在做一個(gè)雙目立體視覺項(xiàng)目,LABVIEW有模塊嗎,有哪位大神用LABVIEW做過
    發(fā)表于 01-13 19:44

    雙目立體視覺在嵌入式中有何應(yīng)用

    雙目立體視覺(BinocularStereoVision)是機(jī)器視覺的一種重要形式,因其可簡(jiǎn)單地利用左右攝像機(jī)中的圖像信息計(jì)算得到相機(jī)視野中物體相對(duì)于攝像機(jī)的深度信息使得該技術(shù)擁有廣泛的應(yīng)用前景
    發(fā)表于 12-23 07:19

    雙目視覺立體匹配算法研究

    雙日視覺是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)重要組成部分。雙目視覺研究中的關(guān)鍵技術(shù)攝像機(jī)標(biāo)定和立體匹配一直是研究的熱點(diǎn)。本文由兩部分組成,分別對(duì)雙目視覺
    發(fā)表于 08-14 16:41 ?0次下載

    雙目立體視覺中靶標(biāo)的設(shè)計(jì)與識(shí)別

    0 引言    雙目立體視覺測(cè)量是基于視差原理,由多幅圖像獲取物體三維幾何信息的方法。在計(jì)算機(jī)視覺系統(tǒng)中,雙目
    發(fā)表于 09-26 17:07 ?1262次閱讀
    <b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>中靶標(biāo)的設(shè)計(jì)與識(shí)別

    基于HALCON的雙目立體視覺系統(tǒng)實(shí)現(xiàn)

    雙目立體視覺的研究一直是機(jī)器視覺中的熱點(diǎn)和難點(diǎn)。使用雙目立體視覺系統(tǒng)可以確定任意物體的三維輪廓,并且可以得到輪廓上任意點(diǎn)的三維坐標(biāo)。因此
    發(fā)表于 04-08 17:51 ?130次下載
    基于HALCON的<b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>系統(tǒng)實(shí)現(xiàn)

    雙目立體視覺傳感器精度分析與參數(shù)設(shè)計(jì)

    根據(jù)雙目立體視覺傳感器三角立體視差模型,建立了結(jié)構(gòu)參數(shù)誤差的傳遞函數(shù),分析了雙目視覺傳感器結(jié)構(gòu)參數(shù)及其誤差傳遞規(guī)律對(duì)傳感器綜合測(cè)量精度的影響,得出了結(jié)構(gòu)參數(shù)的合理
    發(fā)表于 09-06 14:38 ?75次下載
    <b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>傳感器精度分析與參數(shù)設(shè)計(jì)

    雙目立體計(jì)算機(jī)視覺立體匹配研究綜述

    雙目立體視覺技術(shù)具有成本低、適用性廣的優(yōu)點(diǎn),在物體識(shí)別、目標(biāo)檢測(cè)等方面應(yīng)用廣泛,成為計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn)。立體匹配雙目
    發(fā)表于 04-12 09:47 ?3次下載
    <b class='flag-5'>雙目</b><b class='flag-5'>立體</b>計(jì)算機(jī)<b class='flag-5'>視覺</b>的<b class='flag-5'>立體匹配</b>研究綜述

    雙目立體視覺的定義與理解

    總結(jié)一下,我們現(xiàn)在認(rèn)識(shí)了三種制造立體視覺的方法,分別是視覺陷阱、全息投影和產(chǎn)生視差。 雙目立體視覺這一有著廣闊應(yīng)用前景的學(xué)科,隨著光學(xué),電子
    的頭像 發(fā)表于 10-31 15:20 ?2770次閱讀

    雙目立體視覺原理 HALCON的雙目視覺系統(tǒng)研究

      立體視覺技術(shù)是機(jī)器人技術(shù)研究中最為活躍的一個(gè)分支,是智能機(jī)器人的重要標(biāo)志。雙目立體視覺是通過對(duì)同一目標(biāo)的兩幅圖像提取、識(shí)別、匹配和解釋,進(jìn)行三維環(huán)境信息的重建。其過程主要包括視頻捕
    發(fā)表于 07-19 14:18 ?0次下載

    關(guān)于雙目立體視覺的三大基本算法及發(fā)展現(xiàn)狀

    雙目立體視覺一直是機(jī)器視覺研究領(lǐng)域的發(fā)展熱點(diǎn)和難點(diǎn),“熱”是因?yàn)?b class='flag-5'>雙目立體視覺有著及其廣闊的應(yīng)用前景,且隨著光學(xué)、計(jì)算機(jī)科學(xué)等學(xué)科的不斷發(fā)展
    的頭像 發(fā)表于 08-25 17:28 ?1957次閱讀
    關(guān)于<b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>的三大基本<b class='flag-5'>算法</b>及發(fā)展現(xiàn)狀