双目视觉立体匹配算法
1.雙目立體匹配算法
左右視差
以后再細(xì)寫(xiě)。
1.1 立體匹配的流程
- 攝像機(jī)標(biāo)定(包括內(nèi)參和外參):直接用matlab標(biāo)定工具箱即可
- 雙目圖像的校正(包括畸變校正和立體校正):立體校正opencv samples里給了案
- 立體匹配算法獲取視差圖,以及深度圖
- SAD/SGBM/BM/GC/
- 利用視差圖,或者深度圖進(jìn)行虛擬視點(diǎn)的合成
- 利用分水嶺算法或者Grabcut算法進(jìn)行分割
1.2 最新的方法
最近已經(jīng)出現(xiàn)了使用DL做視差預(yù)測(cè)以及場(chǎng)景流預(yù)測(cè)的工作了,如:
Pyramid Stereo Matching Network (CVPR2018):
2.SGBM算法
SGBM(semi-global block matching,又稱(chēng)SGM算法)
參考SGM算法思路
該算法已經(jīng)在opencv庫(kù)中,函數(shù)為SGBM;并且在ROS中也有實(shí)現(xiàn),并且為默認(rèn)方法
SGBM詳細(xì)步驟可參考:SGBM解讀
2.1 算法原理
主要分為:
1)預(yù)處理 preprocessing:
先運(yùn)用sobel算子獲得邊緣;
再用一個(gè)函數(shù)將經(jīng)過(guò)水平Sobel算子處理后的圖像上每個(gè)像素點(diǎn)
預(yù)處理實(shí)際上是得到圖像的梯度信息。
2)代價(jià)計(jì)算 cost
包括:
- 經(jīng)過(guò)預(yù)處理得到的圖像的梯度信息經(jīng)過(guò)基于采樣的方法得到的梯度代價(jià);
- SAD(sum of absolute difference),即左右圖像在一個(gè)窗口內(nèi)對(duì)應(yīng)像素之差的和。
3)動(dòng)態(tài)規(guī)劃 dynamic programming
4)后處理 postprocessing
- 唯一性檢測(cè)
- 亞像素差值
- 左右一致性檢測(cè)
- 連通區(qū)域檢測(cè)
2.2 opencv4.0調(diào)用
如下,其中比較關(guān)鍵的參數(shù)有:
1)預(yù)處理
preFilterCap:水平sobel預(yù)處理后,映射濾波器大小,默認(rèn)為15。
2)代價(jià)函數(shù)
minDisparity:最小視差,默認(rèn)為0。此參數(shù)決定左圖中的像素點(diǎn)在右圖匹配搜索的起點(diǎn)。
numberOfDisparities:視差搜索范圍,其值必須為16的整數(shù)倍。最大搜索邊界= numberOfDisparities+ minDisparity。我通常取64。
SADWindowSize:SAD窗口大小,通常取11。
3)動(dòng)態(tài)規(guī)劃
有兩個(gè)參數(shù),分別是P1、P2,它們控制視差變化平滑性的參數(shù)。
P1、P2的值越大,視差越平滑。P1是相鄰像素點(diǎn)視差增/減 1 時(shí)的懲罰系數(shù);P2是相鄰像素點(diǎn)視差變化值大于1時(shí)的懲罰系數(shù)。P2必須大于P1。需要指出,在動(dòng)態(tài)規(guī)劃時(shí),P1和P2都是常數(shù)。
在官方例子中,
P1=8cnsgbm.SADWindowSizesgbm.SADWindowSize;
P2=32cnsgbm.SADWindowSizesgbm.SADWindowSize;
4)后處理
uniquenessRatio:唯一性檢測(cè)參數(shù)。用于判斷當(dāng)前像素點(diǎn)是否無(wú)匹配,取值在5-15之間,通常取10。
disp12MaxDiff:左右一致性檢測(cè)最大容許誤差閾值,通常取1。
speckleWindowSize:視差連通區(qū)域像素點(diǎn)個(gè)數(shù)的大小。對(duì)于每一個(gè)視差點(diǎn),當(dāng)其連通區(qū)域的像素點(diǎn)個(gè)數(shù)小于speckleWindowSize時(shí),認(rèn)為該視差值無(wú)效,是噪點(diǎn)。通常取100。
speckleRange:視差連通條件,在計(jì)算一個(gè)視差點(diǎn)的連通區(qū)域時(shí),當(dāng)下一個(gè)像素點(diǎn)視差變化絕對(duì)值大于speckleRange就認(rèn)為下一個(gè)視差像素點(diǎn)和當(dāng)前視差像素點(diǎn)是不連通的。通常取10。
參考:立體匹配
總結(jié):
2.2 UV視差
參考:
U-V視差1
U-V視差2
2.3 Git Repo參考
其實(shí)git上一搜一大把,還是貼幾個(gè)以供參考,記錄一下。
- SGM-disparity
- SGM(包含GPU版本實(shí)現(xiàn))
- SGM-CPU實(shí)現(xiàn)
- 基于CUDA的實(shí)現(xiàn):https://github.com/fixstars/libSGM.git
- 基于ROS與CUDA的實(shí)現(xiàn):https://github.com/hunterlew/stereo_matching
- 基于ROS并生成電云的實(shí)現(xiàn):https://github.com/rachillesf/stereoMagic.git
- Some basical stereo matching methods:https://github.com/galad-loth/StereoMatching.git
參考
總結(jié)
以上是生活随笔為你收集整理的双目视觉立体匹配算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 十天学会单片机可能吗?单片机入门需要多久
- 下一篇: 汇编符号语言